afex/0000755000176200001440000000000014665110732011202 5ustar liggesusersafex/tests/0000755000176200001440000000000013664111747012351 5ustar liggesusersafex/tests/testthat/0000755000176200001440000000000014665110732014204 5ustar liggesusersafex/tests/testthat/test-aov_car-structural.R0000644000176200001440000001672414432737501021137 0ustar liggesusers context("ANOVAs: structural tests") test_that("dv is numeric", { data(obk.long) expect_that(aov_car(treatment ~ gender + Error(id/phase*hour), data = obk.long, observed = "gender"), throws_error("dv needs to be numeric.")) }) ## check_contrast argument disabled, see: https://github.com/singmann/afex/issues/109 # test_that("non Type 3 sums give warning", { # data(obk.long) # expect_that(aov_4(value ~ treatment * gender + (phase*hour|id), data = obk.long, observed = "gender", check.contrasts = FALSE), gives_warning("contrasts")) # }) test_that("return='aov' works", { data(obk.long) data(md_12.1) # purely within expect_that(aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), return = "aov"), is_a(c( "aovlist", "listof" ))) expect_that(aov_car(value ~ Error(id/phase*hour), data = obk.long, return = "aov"), is_a(c( "aovlist", "listof" ))) #purely between expect_that(suppressWarnings(aov_car(value ~ treatment * gender + Error(id), data = obk.long, return = "aov")), is_a(c( "aov"))) expect_that(suppressWarnings(aov_car(value~treatment * gender + Error(id/phase*hour), data = obk.long, return = "aov")), is_a(c( "aovlist", "listof" ))) # terms within Error() are within parentheses: test <- summary(aov_car(value ~ Error(id/phase*hour), data = obk.long, return = "aov")) positive <- summary(aov(value ~ phase*hour+Error(id/(phase*hour)), data = obk.long)) negative <- summary(aov(value ~ phase*hour+Error(id/phase*hour), data = obk.long)) expect_equal(test, positive) expect_false(isTRUE(all.equal(test, negative, check.attributes = FALSE))) orig1 <- aov_car(value ~ Error(id/phase*hour), data = obk.long) obk.long$id <- as.numeric(obk.long$id) obk.long$phase <- as.numeric(obk.long$phase) obk.long$hour <- as.numeric(obk.long$hour) positive2 <- summary(aov_car(value ~ Error(id/phase*hour), data = obk.long, return = "aov")) expect_equal(test, positive2) positive3 <- aov_car(value ~ Error(id/phase*hour), data = obk.long) expect_equal(summary(orig1), summary(positive3)) expect_equal(summary(orig1$Anova, multivariate = FALSE), summary(positive3$Anova, multivariate = FALSE)) expect_equal(summary(orig1$aov), summary(positive3$aov)) }) test_that("anova_table attributes", { data(md_12.1) no_attr <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), anova_table = list(correction = "none")) expect_that(attr(no_attr$anova_table, "correction"), equals("none")) expect_that(attr(no_attr$anova_table, "p_adjust_method"), equals("none")) expect_output(print(attr(no_attr$anova_table, "observed")), "character\\(0\\)") all_attr <- suppressWarnings(aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), observed = "angle", anova_table=list(correction = "HF", p_adjust_method = "bonferroni"))) expect_that(attr(all_attr$anova_table, "correction"), equals("HF")) expect_that(attr(all_attr$anova_table, "p_adjust_method"), equals("bonferroni")) expect_that(attr(all_attr$anova_table, "observed"), equals("angle")) expect_output(print(all_attr), "bonferroni") expect_output(print(all_attr), "HF") expect_false(isTRUE(all.equal(nice(no_attr), suppressWarnings(nice(all_attr)), check.attributes = FALSE))) added_attr <- suppressWarnings(nice(no_attr, correction = "HF", p_adjust_method = "bonferroni", observed = "angle")) expect_that(suppressWarnings(nice(all_attr)), is_identical_to(added_attr)) expect_that(nice(all_attr$anova_table), is_identical_to(added_attr)) reset_attr <- nice(no_attr, correction = "none", p.adjust = "none", observed = NULL) expect_that(nice(no_attr), is_identical_to(reset_attr)) expect_that(nice(no_attr$anova_table), is_identical_to(reset_attr)) intercept_test <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), anova_table = list(intercept = TRUE)) expect_output(print(intercept_test), "(Intercept)") mse_test <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), anova_table = list(MSE = FALSE)) expect_null(mse_test$anova_table$MSE) expect_output(print(nice(mse_test, MSE = TRUE)), "MSE") symbol_test <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), anova_table = list(sig_symbols = c(" ", " a", " aa", " aaa")), return = "nice") expect_output(print(symbol_test), "aaa") symbol_test <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), anova_table = list(sig_symbols = c(" ", " a", " aa", " aaa"))) expect_output(print(symbol_test), "aaa") new_symbols <- c(" ", " b", " bb", " bbb") symbol_test <- anova(symbol_test, sig_symbols = c(" ", " b", " bb", " bbb")) expect_identical(attr(symbol_test, "sig_symbols"), new_symbols) expect_output(print(nice(symbol_test)), "bbb") # Test support for old afex objects old_afex_object <- default_options <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise")) attr(old_afex_object$anova_table, "observed") <- NULL attr(old_afex_object$anova_table, "correction") <- NULL attr(old_afex_object$anova_table, "p.adjust.method") <- NULL expect_that(nice(old_afex_object), is_identical_to(nice(default_options))) # Test if sphericity correction is set to "none" in the absence of within-subject factors or if within-subject factors have only two levels data(obk.long) between_anova <- suppressWarnings(aov_car(value ~ treatment * gender + Error(id), data = obk.long)) expect_that(attr(between_anova$anova_table, "correction"), equals("none")) obk.long <- droplevels(obk.long[obk.long$phase %in% c("post","pre"),]) two_level_anova <- suppressWarnings(aov_ez("id", "value", obk.long, between = c("treatment"), within = c("phase"))) expect_that(attr(two_level_anova$anova_table, "correction"), equals("none")) more_levels_anova <- aov_ez("id", "value", obk.long, between = c("treatment"), within = c("phase", "hour")) expect_that(attr(more_levels_anova$anova_table, "correction"), equals("GG")) obk.long <- droplevels(obk.long[obk.long$hour %in% c("1","2"),]) two_levels_anova <- aov_ez("id", "value", obk.long, between = c("treatment"), within = c("phase", "hour")) expect_that(attr(two_levels_anova$anova_table, "correction"), equals("none")) # Test incomplete observation attribute incomplete_cases <- suppressWarnings( aov_ez("id", "rt", md_12.1[-10, ], within = c("angle", "noise")) ) expect_equal(as.character(attr(incomplete_cases, "incomplete_cases")), "10") expect_equal(as.character(attr(incomplete_cases$anova_table, "incomplete_cases")), "10") expect_equal(as.character(attr(anova(incomplete_cases), "incomplete_cases")), "10") }) test_that("error messages for common problems", { data(md_12.1) md_12.2 <- md_12.1[!(md_12.1$noise == "present" & md_12.1$angle == "0"),] expect_error( aov_ez("id", "rt", md_12.2, within = c("angle", "noise")), "within-subjects design") data(obk.long) obk2 <- obk.long[ !(obk.long$treatment == "A" & obk.long$gender == "F"), ] expect_error( aov_car(value ~ treatment * gender + Error(id), data = obk2, fun_aggregate = mean), "between-subjects design") expect_error( aov_car(value ~ treatment * gender + Error(id/phase*hour), data = obk2), "between-subjects design") expect_error( aov_car(value ~ treatment * gender, data = obk2), "formula needs an error term") expect_error( aov_4(formula = value ~ treatment * gender, data = obk2), "requires one random-effect term in formula" ) }) afex/tests/testthat/test-mixed-effects.R0000644000176200001440000000152614076033712020031 0ustar liggesuserscontext("mixed interplay with effects") test_that("mixed works with effects", { skip_if_not_installed("MEMSS") data("Machines", package = "MEMSS") # simple model with random-slopes for repeated-measures factor # requires: set_data_arg = TRUE m1 <- mixed(score ~ Machine + (Machine|Worker), data=Machines, set_data_arg = TRUE, progress = FALSE) testthat::skip_if_not_installed("effects") testthat::skip_if_not_installed("emmeans") library("effects") set_default_contrasts() em1 <- emmeans::emmeans(m1, "Machine") ef1 <- Effect("Machine", m1$full_model) # expect_false(any( as.data.frame(ef1)$fit == as.data.frame(em1)$emmean )) set_sum_contrasts() ef2 <- Effect("Machine", m1$full_model) expect_equal(as.data.frame(ef2)$fit, as.data.frame(em1)$emmean) }) afex/tests/testthat/anova_hf_error.rda0000644000176200001440000001016413664111747017675 0ustar liggesusers7zXZi"6!X-5])TW"nRʟx8OgWF7,ا$ͺ]{¡u?n~ .\G$U"|y;ᑘ; F%~$"(n _StʣKAJve+䮵7?-q';>2wȬC#Gv;T?q83[wȤЅ⣝%w*T=&"X/h*ܢ<Ց+ĸܽ<˿[>ys$M)U™xN 7.s[/+ckF-K7_)V B4g/81Cn| rΜU9(dB5{niV(ܺyTCܖC4 NS >srҌX,T#"aCXOHD1ä+#\ beBjg<GC""zyt63s@8 Wzozh>葿w)+D*hĘqA\l?MQk|Zsm`%}C|byۇ$xXA4pɥG,0ނx^\M],E{ y4ZK1ؗӁˬtҦ:Y1\£HҪ 9nj s9|b2E;7ROf.:.kVHj"XLs1gnKsXr?4*b)7r 4ެ2nkO}nTH=9u,#?N~HSy<Ży$ 4ioΪ| F"ν0+5Cg`OX.oT+-_<6VEH6u ɧ($ [6LO|,eSDast~JX@=@ʝM oRs\\Rz ʘ K4nv VɲkO`wd״lR:6^^etw?%B#:L(N^S,TEBI2@e/J.[VM`w?,v_8 RsOIZ'%# Du?0+m-5#d1&xo|<!n u]47;} 3j(p i^Nx?졪ܗ Dhl.(6 t!d̢5l0ԍb>0bl'wäZ|(Ӕ&| -SCq ;rJrTk 3mMUBZ̈ ʛ#&nq+# d< A#WT~a}zQQEN ~ɒC{D^ڀV8ϙ{f<ϒ%&Œ FRi p'_KQްn(إX^&B.UDilxM9ACR{Q15c7,=*&>3 %>áMh.[9d/w.o_! a]x+=eGJIITU+T 8`]'4Z$/]tI'X=CWgF|f>X(G0W!Xh!FQdvO|DTF \V!Khg;4:fs 2 y_gS݌:h+U%TSE8סbNN2:_Q RoO': U\y'9<N3y(nՕᓇw`ʀ \}zMdhTmD&6t)Ó՗b~ay=a[ 1mexXM+x}g.yuRC05עw>}8.$ ^G#mdݖ7Ċ˱P( r:fZΝ] ]8eYI IҦ@F@YIr2Ih5y:B{AŎ#Tvױ`@A3eņ0k4h>{1-IE T* ^d~B̹Ybs뷨R d~EuqLj-G(g;))VI ">qឭi{v_\eX#]$ bz5*d2nZacf*lnR* H9 ɩ8%|rɉ0*xW'{7= kl*0DlUx,K A+bw!+EHYd Q{Yϯf?+_:Þ. 4 =1SK9-9;t1D rϪ|&U va{ҕTgllgVZQ!ʈ6.2])௻, w RǧSzKrnI9{4͜$-H 'z\i #'&=2'&6xwMi/\ݶCT̀WRa #9{hn 'QލъϽn:uI_Vk^)OxؖO K$vdFUX+up0Q½eQ#[ruo _ œ#{D+fJy, p4Efw6FZC4nOHѹ̓ZvԑV:ݐ{;A6HEq-L6ٟъkC׿^A&]-{u.XqILa{\5T( ºԙfŎpiFNb -H7M9dbFd+>s3@TN^lѵ<agH\h9=:e&ǽĽ R\ eſѭ/SҺR?pJK|ϤYuto/[Җ yl* h R$bAynpơSPH!BMS=6BסHAWw7Q-`۽]b ͏B]frD҂X{/%TFdl_ t6Yƪ%,^I= g\ H! >]k@\JʨvU|&At<)88z)c[q w9F)s[{RO=;*"N~u\'_$\EDf[/IE /%n{ƇK 8V.LjrLuEͼz(Z#[U|o{!*,6De!p)U74KҪH4OsODi J6+ 6V>/T¶L'yѐ4EmS?ESbLb qZl3KWu|)dQwv[Wbz37K/-L*aL%!VlZ[ȋ1`1 U1,Be1Iz` ؠ0F|?x8΅|L7e2@Bm6]{HWa}0JT .'^߹(;Ǿ܏ ŕ o@;̜ yU ɁXo@a]?_tkGj"xooGrpb{2+.$Y/gY@rz\C+{v Oy.O *$1D),͸V .2<>)RFe&+LpUQFJ2`p &3CN_띑nH U_$pdl' u|a*"{ r}: 8ƊWq5< n9_c5؎F.x>AUTRz6-ӛ~5^IAsc|oN>R{tCw+sOG.YV $rԚr+~/bj,qHm4XRDzl M%w 6)=bz\Lxjo([Q//)לP!?R0PKlcvPf|*1m1hFsxP\{&J  Rf 7Sz-E-gUZ!WT>z:c ϰa%LH'>S8Ud8B @=(>0 YZafex/tests/testthat/test-mixed-structure.R0000644000176200001440000004650614604560577020474 0ustar liggesusers # note: all calls with type 2 are wrapped in suppressWarnings()! test_that("mixed: Maxell & Delaney (2004), Table 16.4, p. 842: Type 2", { data(md_16.4) md_16.4b <- md_16.4 md_16.4b$cog <- scale(md_16.4b$cog, scale=FALSE) contrasts(md_16.4b$cond) <- "contr.sum" mixed4_2 <- mixed(induct ~ cond*cog + (cog|room:cond), md_16.4b, type = 2, progress=FALSE, method = "nested-KR") lmer4_full <- lmer(induct ~ cond*cog + (cog|room:cond), md_16.4b) lmer4_small <- lmer(induct ~ cond+cog + (cog|room:cond), md_16.4b) expect_that(fixef(mixed4_2$full_model[[2]]), equals(fixef(lmer4_full))) expect_that(fixef(mixed4_2$full_model[[1]]), is_equivalent_to(fixef(lmer4_small))) }) test_that("mixed: Maxell & Delaney (2004), Table 16.4, p. 842: Type 3", { data(md_16.4) md_16.4b <- md_16.4 md_16.4b$cog <- scale(md_16.4b$cog, scale=FALSE) contrasts(md_16.4b$cond) <- "contr.sum" mixed4_2 <- mixed(induct ~ cond*cog + (cog|room:cond), md_16.4b, type = 3, progress=FALSE, method = "nested-KR") lmer4_full <- lmer(induct ~ cond*cog + (cog|room:cond), md_16.4b) lmer4_small <- lmer(induct ~ cond+cog + (cog|room:cond), md_16.4b) expect_that(fixef(mixed4_2$full_model), equals(fixef(lmer4_full))) expect_that(mixed4_2$full_model, is_equivalent_to(lmer4_full)) expect_that(fixef(mixed4_2$restricted_models$`cond:cog`), is_equivalent_to(fixef(lmer4_small))) }) test_that("mixed, obk.long: type 2 and LRTs", { data(obk.long, package = "afex") contrasts(obk.long$treatment) <- "contr.sum" contrasts(obk.long$phase) <- "contr.sum" t2 <- mixed(value ~ treatment*phase +(1|id), data = obk.long, method = "LRT", type = 2, progress=FALSE) expect_output(print(t2), "treatment") a2.f <- lmer(value ~ treatment*phase +(1|id), data = obk.long, REML=FALSE) a2.h <- lmer(value ~ treatment+phase +(1|id), data = obk.long, REML=FALSE) a2.t <- lmer(value ~ treatment +(1|id), data = obk.long, REML=FALSE) a2.p <- lmer(value ~ phase +(1|id), data = obk.long, REML=FALSE) if (packageVersion("lme4") <= "1.1.21") { extract_anova <- function(anova) unlist(anova)[c("Df1", "Chisq2", "Chi Df2", "Pr(>Chisq)2" )] } else { extract_anova <- function(anova) unlist(anova)[c("npar1", "Chisq2", "Df2", "Pr(>Chisq)2" )] } expect_that( unlist(t2$anova_table[3,]) , is_equivalent_to( extract_anova(anova(a2.h, a2.f)) )) expect_that( unlist(t2$anova_table[2,]) , is_equivalent_to( extract_anova(anova(a2.t, a2.h)) )) expect_that( unlist(t2$anova_table[1,]) , is_equivalent_to( extract_anova(anova(a2.p, a2.h)) )) }) test_that("mixed, mlmRev: type 3 and 2 LRTs for GLMMs", { skip_if_not_installed("mlmRev") if (require("mlmRev")) { suppressWarnings(gm1 <- mixed(use ~ age*urban + (1 | district), family = binomial, data = Contraception, method = "LRT", progress=FALSE)) suppressWarnings(gm2 <- mixed(use ~ age*urban + (1 | district), family = binomial, data = Contraception, method = "LRT", type = 2, progress=FALSE)) expect_that(gm1, is_a("mixed")) expect_that(gm2, is_a("mixed")) } }) test_that("mixed, obk.long: LMM with method = PB", { expect_that(mixed(value ~ treatment+phase*hour +(1|id), data = obk.long, method = "PB", args_test = list(nsim = 10), progress=FALSE), is_a("mixed")) }) test_that("mixed, obk.long: multicore loads lme4 and produces the same results", { #if (packageVersion("testthat") >= "0.9") { if (FALSE) { # that never seems to run... testthat::skip_on_cran() testthat::skip_on_travis() data(obk.long, package = "afex") require(parallel) cl <- makeCluster(rep("localhost", 2)) # make cluster # 1. Obtain fits with multicore: m_mc1 <- mixed(value ~ treatment +(phase|id), data = obk.long, method = "LRT", cl = cl, control = lmerControl(optCtrl=list(maxfun = 100000)), progress=FALSE) cl_search <- clusterEvalQ(cl, search()) stopCluster(cl) m_mc2 <- mixed(value ~ treatment +(phase|id), data = obk.long, method = "LRT", control = lmerControl(optCtrl=list(maxfun = 100000)), progress=FALSE) expect_that(all(vapply(cl_search, function(x) any(grepl("^package:lme4$", x)), NA)), is_true()) expect_that(m_mc1, equals(m_mc2, check.attributes = FALSE)) } }) test_that("print(mixed) works: only 1 or 2 fixed effects with all methods", { data(obk.long, package = "afex") expect_that(print(mixed(value ~ treatment+(1|id), data = obk.long, progress=FALSE)), is_a("data.frame")) expect_that(print(mixed(value ~ treatment+phase+(1|id), data = obk.long, progress=FALSE)), is_a("data.frame")) expect_that(print(mixed(value ~ treatment+(1|id), data = obk.long, method = "LRT", progress=FALSE)), is_a("data.frame")) expect_that(print(mixed(value ~ treatment+phase+(1|id), data = obk.long, method = "LRT", progress=FALSE)), is_a("data.frame")) skip_if_not_installed("mlmRev") require("mlmRev") # for the data, see ?Contraception expect_that(print(mixed(use ~ urban + (1 | district), method = "PB", family = binomial, data = Contraception, args_test=list(nsim=2), progress=FALSE)), is_a("data.frame")) expect_that(print(mixed(use ~ urban + livch + (1 | district), method = "PB", family = binomial, data = Contraception, args_test=list(nsim=2), progress=FALSE)), is_a("data.frame")) }) # test_that("mixed, Maxell & Delaney (2004), Table 16.4, p. 842: bobyqa not fitting well", { # data(md_16.4) # # F-values and p-values are relatively off: # expect_that(mixed(induct ~ cond*cog + (cog|room:cond), md_16.4, control=lmerControl(optimizer="bobyqa")), gives_warning("better fit")) # expect_that(mixed(induct ~ cond*cog + (cog|room:cond), md_16.4, type=2, control=lmerControl(optimizer="bobyqa")), gives_warning("better fit")) # }) test_that("mixed: set.data.arg", { data(obk.long, package = "afex") suppressWarnings(m1 <- mixed(value ~ treatment*phase +(1|id), obk.long, method = "LRT", progress=FALSE, set_data_arg = TRUE)) suppressWarnings(m2 <- mixed(value ~ treatment*phase +(1|id), obk.long, method = "LRT", progress=FALSE, set_data_arg = FALSE)) expect_that(m1$full_model@call[["data"]], is_identical_to(as.name("obk.long"))) expect_that(m2$full_model@call[["data"]], is_identical_to(as.name("data"))) }) test_that("mixed: anova with multiple mixed objexts", { data("sk2011.2") data("ks2013.3") sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) sk_m1 <- mixed(response ~ instruction+(1|id), sk2_aff, method = "LRT", progress = FALSE, set_data_arg = TRUE) sk_m2 <- mixed(response ~ instruction+(1|id)+(1|content), sk2_aff, method = "LRT", progress = FALSE, set_data_arg = TRUE) sk_m3 <- lmer(response ~ instruction+(1|id)+(validity|content), sk2_aff, REML = FALSE) sk_m4 <- lmer(response ~ instruction+(1|id)+(validity|content), sk2_aff, REML = TRUE) t <- anova(sk_m1, sk_m2, sk_m3) xx <- anova(sk_m1$full_model, sk_m2$full_model, sk_m3, model.names = c("sk_m1", "sk_m2", "sk_m3")) expect_identical(rownames(xx), rownames(t)) expect_identical(rownames(xx), c("sk_m1", "sk_m2", "sk_m3")) expect_is(t, c("anova", "data.frame")) expect_is(anova(sk_m1, object = sk_m2, sk_m3), c("anova", "data.frame")) expect_is(anova(sk_m1, object = sk_m2, sk_m3, ks2013.3), c("anova", "data.frame")) expect_warning(anova(sk_m1, object = sk_m2, sk_m3, sk_m4), "some models fit with REML = TRUE, some not") }) test_that("mixed: expand_re argument, return = 'merMod'", { data("ks2013.3") set_default_contrasts() m2 <- mixed(response ~ validity + (believability||id), ks2013.3, expand_re = TRUE, method = "LRT", progress=FALSE) m3 <- mixed(response ~ validity + (believability|id), ks2013.3, method = "LRT", progress=FALSE) expect_identical(length(unlist(summary(m2)$varcor)), nrow(summary(m3)$varcor$id)) expect_true(all.equal(unlist(summary(m2)$varcor), diag(summary(m3)$varcor$id), tolerance = 0.03, check.attributes = FALSE)) l2 <- mixed(response ~ validity + (believability||id), ks2013.3, expand_re = TRUE, return = "merMod", progress=FALSE) expect_is(l2, "merMod") expect_equivalent(m2$full_model, l2) l3 <- lmer_alt(response ~ validity + (believability||id), ks2013.3) l4 <- lmer_alt(response ~ validity + (believability||id), ks2013.3, control = lmerControl(optimizer = "Nelder_Mead")) expect_equivalent(l2, l3) expect_equal(l3, l4, check.attributes = FALSE) l5 <- lmer_alt(response ~ validity + (believability||id), ks2013.3, control = lmerControl(optimizer = "Nelder_Mead"), check_contrasts = TRUE) expect_equal(l2, l5, check.attributes = FALSE ) # parameter names need to be identical (same contrasts): expect_identical(names(coef(l2)$id), names(coef(l5)$id)) # parameter names need to be different (different contrasts): expect_false(all(names(coef(l2)$id) == names(coef(l3)$id))) l7 <- lmer_alt(response ~ validity + (1|id) + (0+validity*condition||content), ks2013.3, control = lmerControl(optCtrl = list(maxfun=1e6))) expect_is(l7, "merMod") expect_error(lmer_alt(response ~ validity + (0|id) + (0+validity*condition||content), ks2013.3), "Invalid random effects term") expect_is(lmer_alt(response ~ validity + (validity||id) + (validity|content), ks2013.3), "merMod") }) test_that("mixed: expand_re argument (longer)", { if (packageVersion("testthat") >= "0.9") { testthat::skip_on_cran() testthat::skip_on_travis() data("ks2013.3") m4 <- mixed(response ~ validity + (believability*validity||id) + (validity*condition|content), ks2013.3, expand_re = TRUE, method = "LRT", control = lmerControl(optCtrl = list(maxfun=1e6)), progress=FALSE) m5 <- suppressWarnings(mixed(response ~ validity + (believability*validity|id) + (validity*condition||content), ks2013.3, method = "LRT", control = lmerControl(optCtrl = list(maxfun=1e6)), expand_re = TRUE, progress=FALSE)) expect_identical(length(unlist(summary(m4)$varcor[-7])), nrow(summary(m5)$varcor$id)) expect_identical(length(unlist(summary(m5)$varcor[-1])), nrow(summary(m4)$varcor$content)) expect_equal(attr(summary(m5)$varcor, "sc"), attr(summary(m4)$varcor, "sc"), tolerance = 0.02) } }) test_that("mixed: return=data, expand_re argument, and allFit", { #if (packageVersion("testthat") >= "0.9") { #testthat::skip_on_travis() testthat::skip_if_not_installed("optimx") testthat::skip_if_not_installed("dfoptim") testthat::skip_on_cran() require(optimx) data("ks2013.3") ks2013.3_tmp <- ks2013.3 m6 <- mixed(response ~ validity + (believability*validity||id), ks2013.3_tmp, expand_re = TRUE, method = "LRT", control = lmerControl(optCtrl = list(maxfun=1e6)), progress=FALSE, return = "merMod") m6_all_1 <- suppressWarnings(lme4::allFit(m6, verbose = FALSE, data = ks2013.3_tmp)) for (i in seq_along(m6_all_1)) expect_s4_class(m6_all_1[[i]], "lmerModLmerTest") ks2013.3_tmp <- mixed(response ~ validity + (believability*validity||id), ks2013.3_tmp, expand_re = TRUE, method = "LRT", control = lmerControl(optCtrl = list(maxfun=1e6)), progress=FALSE, return = "data") m6_all_2 <- suppressWarnings(lme4::allFit(m6, verbose = FALSE, data = ks2013.3_tmp)) for (i in seq_along(m6_all_2)) expect_s4_class(m6_all_1[[i]], "merMod") }) test_that("mixed with all_fit = TRUE", { testthat::skip_if_not_installed("optimx") testthat::skip_if_not_installed("MEMSS") testthat::skip_if_not_installed("dfoptim") testthat::skip_on_cran() require(optimx) data("Machines", package = "MEMSS") aop <- afex_options() afex_options(lmer_function = "lmerTest") m1 <- mixed(score ~ Machine + (Machine||Worker), data=Machines, expand_re = TRUE, all_fit = TRUE, progress = FALSE) afex_options(lmer_function = "lme4") m2 <- mixed(score ~ Machine + (Machine||Worker), data=Machines, expand_re = TRUE, all_fit = TRUE, method = "LRT", progress = FALSE) afex_options(aop) all_loglik1 <- attr(m1, "all_fit_logLik") all_loglik2 <- attr(m2, "all_fit_logLik") expect_false(any(is.na(all_loglik1[,1]))) expect_false(any(is.na(all_loglik2[,1]))) expect_equivalent(rep(all_loglik1[1,1], nrow(all_loglik1)), all_loglik1[,1]) expect_equivalent(rep(all_loglik2[1,1], nrow(all_loglik2)), all_loglik2[,1]) }) test_that("mixed: return=data works", { data("ks2013.3") ks2013.3_tmp <- ks2013.3 ks2013.3_tmp <- mixed(response ~ validity + (believability*validity||id), ks2013.3_tmp, expand_re = TRUE, method = "LRT", control = lmerControl(optCtrl = list(maxfun=1e6)), progress=FALSE, return = "data") expect_is(ks2013.3_tmp, "data.frame") if (packageVersion("testthat") >= "0.11.0.9000") expect_gt(ncol(ks2013.3_tmp), ncol(ks2013.3)) expect_output(print(colnames(ks2013.3_tmp)), "re1.believability1_by_validity1") }) test_that("mixed with all available methods", { data("sk2011.2") # see example("mixed") testthat::skip_on_travis() testthat::skip_on_cran() sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) for (i in c(2, 3)) { sk2_aff_kr <- mixed(response ~ instruction*type+(inference||id), sk2_aff, expand_re = TRUE, all_fit = FALSE, method = "KR", progress=FALSE, type = i) sk2_aff_s <- mixed(response ~ instruction*type+(inference||id), sk2_aff, expand_re = TRUE, all_fit = FALSE, method = "S", progress=FALSE, type = i) sk2_aff_nkr <- mixed(response ~ instruction*type+(inference||id), sk2_aff, progress = FALSE, type = i, expand_re = TRUE, all_fit = FALSE, method = "nested-KR") sk2_aff_lrt <- mixed(response ~ instruction*type+(inference||id), sk2_aff, progress = FALSE, type = i, expand_re = TRUE, all_fit = FALSE, method = "LRT") sk2_aff_pb <- mixed(response ~ instruction*type+(inference||id), sk2_aff, progress = FALSE, type = i, args_test = list(nsim = 10), expand_re = TRUE, all_fit = FALSE, method = "PB") expect_is(sk2_aff_kr, "mixed") expect_is(sk2_aff_s, "mixed") expect_is(sk2_aff_nkr, "mixed") expect_is(sk2_aff_lrt, "mixed") expect_is(sk2_aff_pb, "mixed") expect_is(anova(sk2_aff_kr), "anova") expect_is(anova(sk2_aff_s), "anova") expect_is(anova(sk2_aff_nkr), "anova") expect_is(anova(sk2_aff_lrt), "anova") expect_is(anova(sk2_aff_pb), "anova") expect_output(print(sk2_aff_kr), "Effect") expect_output(print(sk2_aff_kr), "F") expect_output(print(sk2_aff_s), "Effect") expect_output(print(sk2_aff_s), "F") expect_output(print(sk2_aff_nkr), "Effect") expect_output(print(sk2_aff_nkr), "F") expect_output(print(sk2_aff_lrt), "Effect") expect_output(print(sk2_aff_lrt), "Chisq") expect_output(print(sk2_aff_pb), "Effect") expect_output(print(sk2_aff_pb), "Chisq") } }) test_that("mixed all_fit = TRUE works with old methods", { data("sk2011.2") # see example("mixed") testthat::skip_on_cran() sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) sk2_aff_b <- mixed(response ~ instruction+(inference*type||id), sk2_aff, expand_re = TRUE, all_fit = TRUE, method = "nested-KR", progress = FALSE) sk2_aff_b2 <- mixed(response ~ instruction*type+(inference||id), sk2_aff, type = 2, expand_re = TRUE, all_fit = TRUE, method = "nested-KR", progress = FALSE) expect_is(sk2_aff_b, "mixed") expect_length(attr(sk2_aff_b, "all_fit_selected"), 2) expect_length(attr(sk2_aff_b, "all_fit_logLik"), 2) expect_is(sk2_aff_b2, "mixed") expect_length(attr(sk2_aff_b2, "all_fit_selected"), 5) expect_length(attr(sk2_aff_b2, "all_fit_logLik"), 5) }) test_that("mixed all_fit = TRUE works with new (KR) methods", { data("sk2011.2") # see example("mixed") testthat::skip_on_cran() sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) sk2_aff_b <- mixed(response ~ instruction+(inference*type||id), sk2_aff, expand_re = TRUE, all_fit = TRUE, method = "KR", progress = FALSE) sk2_aff_b2 <- mixed(response ~ instruction*type+(inference||id), sk2_aff, type = 2, expand_re = TRUE, all_fit = TRUE, method = "KR", progress = FALSE) expect_is(sk2_aff_b, "mixed") expect_named(attr(sk2_aff_b, "all_fit_selected"), "full_model") expect_false(is.null(attr(sk2_aff_b, "all_fit_logLik"))) expect_is(sk2_aff_b2, "mixed") expect_named(attr(sk2_aff_b2, "all_fit_selected"), "full_model") expect_false(is.null(attr(sk2_aff_b2, "all_fit_logLik"))) }) test_that("anova_table attributes", { data(obk.long) symbol_test <- mixed(value ~ treatment * phase + (1|id), obk.long, sig_symbols = c("", "a", "aa", "aaa"), progress = FALSE, return = "nice") expect_output(print(symbol_test), "aaa") symbol_test <- mixed(value ~ treatment * phase + (1|id), obk.long, sig_symbols = c("", "a", "aa", "aaa"), progress = FALSE) expect_output(print(symbol_test), "aaa") expect_output(print(nice(symbol_test, sig_symbols = c("", "b", "bb", "bbb"))), "bbb") new_symbols <- c(" ", " b", " bb", " bbb") symbol_test <- anova(symbol_test, sig_symbols = c(" ", " b", " bb", " bbb")) expect_identical(attr(symbol_test, "sig_symbols"), new_symbols) expect_output(print(nice(symbol_test)), "bbb") # Test support for old afex objects old_afex_object <- default_options <- mixed(value ~ treatment * phase + (1|id), obk.long, progress = FALSE) attr(old_afex_object$anova_table, "sig_symbols") <- NULL expect_that(nice(old_afex_object), is_identical_to(nice(default_options))) }) afex/tests/testthat/test-afex_plot-basics.R0000644000176200001440000004252514604545335020543 0ustar liggesusersdata(obk.long, package = "afex") # estimate mixed ANOVA on the full design: a1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender") data(md_12.1) aw <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise")) test_that("ANOVA plots are produced", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") testthat::skip_on_cran() ## uses only expect_doppelganger expect_doppelganger("one-way within", afex_plot(a1, "hour", error = "within")) expect_doppelganger("two-way", afex_plot(a1, c("phase", "hour"), trace = "treatment", error = "none")) expect_doppelganger("x-trace-panel", afex_plot(a1, "phase", trace = "hour", panel = "treatment", error = "within")) }) test_that("all input type works and warnings are correct", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") expect_warning( em1 <- afex_plot(a1, ~phase*hour, ~treatment+gender, return = "data"), "mixed within-between-design" ) expect_warning( em2 <- afex_plot(a1, c("phase", "hour"), ~treatment+gender, return = "data"), "mixed within-between-design" ) expect_warning( em3 <- afex_plot(a1, ~phase*hour, c("treatment", "gender"), return = "data"), "mixed within-between-design" ) expect_warning( em4 <- afex_plot(a1, c("phase", "hour"), c("treatment", "gender"), return = "data"), "mixed within-between-design" ) expect_equal(em1, em2) expect_equal(em1, em3) expect_equal(em1, em4) expect_warning( em5 <- afex_plot(a1, c("phase", "hour"), return = "data"), "show within-subjects factors, but not within-subjects error bars" ) expect_warning( em6 <- afex_plot(a1, ~phase*hour, return = "data"), "show within-subjects factors, but not within-subjects error bars" ) expect_equal(em5, em6) expect_warning( em7 <- afex_plot(a1, c("treatment", "gender"), panel = "phase", return = "data", error = "within"), "between-subjects factors, but within-subjects error bars" ) expect_warning( em8 <- afex_plot(a1, ~treatment*gender, panel = "phase", return = "data", error = "within"), "between-subjects factors, but within-subjects error bars" ) expect_equal(em7, em8) }) test_that("mixed plots are produced", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") testthat::skip_on_cran() ## uses only expect_doppelganger data("fhch2010") # load fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors ### reduced data.frame length # fhch <- fhch[unlist(lapply(which(as.numeric(fhch$id) != # c(NA, fhch$id[-length(fhch$id)])), # function(x) 0:29 + x)),] mrt <- mixed(log_rt ~ task*stimulus*frequency + (1|id), fhch, method = "S", progress = FALSE) p1 <- afex_plot(mrt, "task", id = "id") expect_doppelganger("mixed model 1", p1) p2 <- afex_plot(mrt, x = "stimulus", panel = "task", id = "id") expect_doppelganger("mixed model 2", p2) p3 <- afex_plot(mrt, x = "stimulus", trace = "task", id = "id") expect_doppelganger("mixed model 3", p3) p4 <- afex_plot(mrt, x = "stimulus", trace = "frequency", panel = "task", id = "id") expect_doppelganger("mixed model 4", p4) }) test_that("lme4::merMod plots are produced", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") Oats <- nlme::Oats Oats$VarBlock <- Oats$Variety:Oats$Block Oats.lmer <- lmer(yield ~ Variety * factor(nitro) + (1|VarBlock) + (1|Block), data = Oats) p1 <- afex_plot(Oats.lmer, "nitro", id = "VarBlock") expect_doppelganger("lme4::merMod plot 1", p1) p2 <- afex_plot(Oats.lmer, "nitro", "Variety", id = "VarBlock") expect_doppelganger("lme4::merMod plot 2", p2) p3 <- afex_plot(Oats.lmer, "nitro", panel = "Variety", id = "VarBlock") expect_doppelganger("lme4::merMod plot 3", p3) ## check that id argument works: d1 <- afex_plot(Oats.lmer, "nitro", id = "VarBlock", return = "data") d2 <- afex_plot(Oats.lmer, "nitro", id = "Block", return = "data") d3 <- afex_plot(Oats.lmer, "nitro", id = c("Block", "VarBlock"), return = "data") expect_lt(nrow(d2$data), nrow(d1$data)) expect_lt(nrow(d2$data), nrow(d3$data)) expect_identical(nrow(d1$data), nrow(d3$data)) }) test_that("afex_plot works with various geoms (from examples)", { testthat::skip_if_not_installed("ggplot2") testthat::skip_if_not_installed("ggpol") testthat::skip_if_not_installed("ggbeeswarm") testthat::skip_if_not_installed("emmeans") testthat::skip_on_cran() ## uses only expect_doppelganger set.seed(1) ### There are several ways to deal with overlapping points in the background besides alpha # Using the default data geom and ggplot2::position_jitterdodge g1 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 5, dodge.width = 0.3 ## needs to be same as dodge ))) expect_doppelganger("geoms work: jitterdodge", g1) # Overlapping points are shown as larger points using geom_count g2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggplot2::geom_count) expect_doppelganger("geoms work: geom_count", g2) # Using ggbeeswarm::geom_quasirandom (overlapping points shown in violin shape) g3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.05 ## choose small value so data points are not overlapping )) expect_doppelganger("geoms work: ggbeeswarm::geom_quasirandom", g3) # Using ggbeeswarm::geom_beeswarm (overlapping points are adjacent on y-axis) g4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) expect_doppelganger("geoms work: ggbeeswarm::geom_beeswarm", g4) # Do not display points, but use a violinplot: ggplot2::geom_violin g5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = ggplot2::geom_violin, data_arg = list(width = 0.5)) expect_doppelganger("geoms work: violin", g5) # violinplots with color: ggplot2::geom_violin g6 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("linetype", "shape", "fill"), data_geom = ggplot2::geom_violin, data_arg = list(width = 0.5)) expect_doppelganger("geoms work: violin with colour", g6) # do not display points, but use a boxplot: ggplot2::geom_boxplot g7 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = ggplot2::geom_boxplot, data_arg = list(width = 0.3)) expect_doppelganger("geoms work: box plot", g7) # combine points with boxplot: ggpol::geom_boxjitter g8 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = ggpol::geom_boxjitter, data_arg = list(width = 0.3)) expect_doppelganger("geoms work: boxjitter 1", g8) ## hides error bars! # nicer variant of ggpol::geom_boxjitter g9 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("shape", "fill"), data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.3, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0)) expect_doppelganger("geoms work: boxjitter 2", g9) # nicer variant of ggpol::geom_boxjitter without lines g10 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, mapping = c("shape", "fill"), data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), line_arg = list(linetype = 0), error_arg = list(linewidth = 1.5, width = 0)) expect_doppelganger("geoms work: boxjitter 3", g10) ### we can also use multiple geoms for the background by passing a list of geoms g11 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = list( ggplot2::geom_violin, ggplot2::geom_point )) expect_doppelganger("multiple geoms work 1", g11) ## with separate extra arguments: g12 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = list( ggplot2::geom_violin, ggplot2::geom_point ), data_arg = list( list(width = 0.4), list(position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 5, dodge.width = 0.5 ## needs to be same as dodge ))) ) expect_doppelganger("multiple geoms work 2", g12) }) test_that("relabeling of factors and legend works", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") ## relabel factor levels via new_levels p1 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", factor_levels = list(angle = c("0", "4", "8"), noise = c("Absent", "Present"))) expect_equal(levels(p1$data$noise), c("Absent", "Present")) expect_equal(levels(p1$data$angle), c("0", "4", "8")) p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", factor_levels = list( angle = c(X8 = "8", X4 = "4", X0 = "0"), noise = c(present = "Present"))) expect_equal(levels(p2$data$angle), rev(c("0", "4", "8"))) expect_equal(levels(p2$data$noise), c("absent", "Present")) p1d <- afex_plot(aw, x = "noise", trace = "angle", error = "within", factor_levels = list(angle = c("0", "4", "8"), noise = c("Absent", "Present")), return = "data") p2d <- afex_plot(aw, x = "noise", trace = "angle", error = "within", factor_levels = list( angle = c(X8 = "8", X4 = "4", X0 = "0"), noise = c(present = "Present")), return = "data") expect_equal(p1d$means$lower, p2d$means$lower) expect_warning(p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "mean", factor_levels = list( angle = c(X8 = "8", X4 = "4", X0 = "0"), noise = c(present = "Present"))), "show within-subjects factors, but not within-subjects error bars") expect_equal(levels(p3$data$angle), rev(c("0", "4", "8"))) expect_warning(p3d <- afex_plot(aw, x = "noise", trace = "angle", error = "mean", factor_levels = list( angle = c(X8 = "8", X4 = "4", X0 = "0"), noise = c(present = "Present")), return = "data"), "show within-subjects factors, but not within-subjects error bars") expect_warning(p3nd <- afex_plot(aw, x = "noise", trace = "angle", error = "mean", factor_levels = list(angle = c("0", "4", "8"), noise = c("Absent", "Present")), return = "data"), "show within-subjects factors, but not within-subjects error bars") expect_equal(p3d$means$lower, p3nd$means$lower) expect_warning(p4d <- afex_plot(aw, x = "noise", trace = "angle", error = "between", factor_levels = list( angle = c(X8 = "8", X4 = "4", X0 = "0"), noise = c(present = "Present")), return = "data"), "show within-subjects factors, but not within-subjects error bars") expect_warning(p4nd <- afex_plot(aw, x = "noise", trace = "angle", error = "between", factor_levels = list(angle = c("0", "4", "8"), noise = c("Absent", "Present")), return = "data"), "show within-subjects factors, but not within-subjects error bars") expect_equal(p4d$means$lower, p4nd$means$lower) expect_error( afex_plot(aw, x = "noise", trace = "angle", error = "within", factor_levels = list(angle = c("0", "4"), noise = c("Absent", "Present"))), "length of new factor_levels for 'angle' != length of factor levels" ) p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", legend_title = "Noise Condition") if (inherits(p2$guides, "Guides")) { expect_equal(p2$guides$guides$shape$params$title, "Noise Condition") expect_equal(p2$guides$guides$linetype$params$title, "Noise Condition") } else { expect_equal(p2$guides$shape$title, "Noise Condition") expect_equal(p2$guides$linetype$title, "Noise Condition") } }) test_that("connecting individual points works", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") testthat::skip_on_cran() ## uses only expect_doppelganger p_con <- afex_plot(aw, x = "angle", error = "within", data_geom = list(ggplot2::geom_count, ggplot2::geom_line), data_arg = list(list(), list(mapping = ggplot2::aes(group = id))), point_arg = list(size = 2.5), error_arg = list(width = 0, linewidth = 1.5)) + ggplot2::geom_line(ggplot2::aes(group = 1), linewidth = 1.5) expect_doppelganger("afex_plot connecting individual points works", p_con) }) test_that("plot_first works", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") testthat::skip_on_cran() ## uses only expect_doppelganger p_ref_line1 <- afex_plot( aw, x = "angle", trace = "noise", error = "within", plot_first = list( ggplot2::geom_hline(yintercept = 550), ggplot2::geom_vline(xintercept = 1.5) ) ) p_ref_line2 <- afex_plot( aw, x = "angle", trace = "noise", error = "within", plot_first = ggplot2::geom_hline(yintercept = 550) ) p_ref_line3 <- afex_plot( aw, x = "angle", error = "within", plot_first = list( ggplot2::geom_hline(yintercept = 550), ggplot2::geom_vline(xintercept = 1.5) ) ) p_ref_line4 <- afex_plot( aw, x = "angle", trace = "noise", error = "within", plot_first = ggplot2::geom_hline(yintercept = 550) ) expect_doppelganger("plot_first for afex_plot works 1", p_ref_line1) expect_doppelganger("plot_first for afex_plot works 2", p_ref_line2) expect_doppelganger("plot_first for afex_plot works 3", p_ref_line3) expect_doppelganger("plot_first for afex_plot works 4", p_ref_line4) }) test_that("labels are correct in case variables are of lenth > 1", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") data(obk.long, package = "afex") # estimate mixed ANOVA on the full design: a1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender") p1 <- afex_plot(a1, c("phase", "hour"), c("treatment", "gender"), error = "none") p2 <- afex_plot(a1, c("phase", "hour"), error = "none") expect_match(p1$labels$x, "phase") expect_match(p1$labels$x, "hour") if (inherits(p1$guides, "Guides")) { expect_match(p1$guides$guides$shape$params$title, "treatment") expect_match(p1$guides$guides$shape$params$title, "gender") } else { expect_match(p1$guides$shape$title, "treatment") expect_match(p1$guides$shape$title, "gender") } expect_match(p2$labels$x, "phase") expect_match(p2$labels$x, "hour") }) afex/tests/testthat/skf_issue.csv0000644000176200001440000000066314117400163016711 0ustar liggesusersA,B,C,D,E,F,G,Y -1,-1,-1,1,1,1,-1,56.32283 1,-1,-1,-1,-1,1,1,53.1016 -1,1,-1,-1,1,-1,1,50.47768 1,1,-1,1,-1,-1,-1,50.98613 -1,-1,1,1,-1,-1,1,52.33799 1,-1,1,-1,1,-1,-1,53.2511 -1,1,1,-1,-1,1,-1,59.61223 1,1,1,1,1,1,1,49.68686 -1,-1,-1,1,1,1,-1,48.25756 1,-1,-1,-1,-1,1,1,49.06478 -1,1,-1,-1,1,-1,1,46.6765 1,1,-1,1,-1,-1,-1,47.352 -1,-1,1,1,-1,-1,1,47.59933 1,-1,1,-1,1,-1,-1,53.98404 -1,1,1,-1,-1,1,-1,49.51856 1,1,1,1,1,1,1,45.22571 afex/tests/testthat/test-afex_plot-bugs.R0000644000176200001440000000731214415256234020227 0ustar liggesusers test_that("mixed models with Type = 2 work", { testthat::skip_if_not_installed("ggplot2") testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("MEMSS") testthat::skip_on_cran() data("Machines", package = "MEMSS") # simple model with random-slopes for repeated-measures factor m1 <- mixed(score ~ Machine + (1|Worker), data=Machines, type = 2, method = "LRT", progress = FALSE) expect_doppelganger("afex_plot lmm, type = 2", afex_plot(m1, "Machine")) }) test_that("response variable y works", { testthat::skip_if_not_installed("ggplot2") testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("MEMSS") testthat::skip_on_cran() data("Machines", package = "MEMSS") Machines$y <- rnorm(nrow(Machines), mean = -100) ## was a problem if it came before the DV column Machines <- Machines[, c("y", "Worker", "Machine", "score")] # simple model with random-slopes for repeated-measures factor m1 <- mixed(score ~ Machine + (1|Worker), data=Machines, progress = FALSE) m1 pp <- afex_plot(m1, "Machine") expect_doppelganger("afex_plot dv = y works", pp) }) test_that("merMod objects with missing data can be plotted", { testthat::skip_if_not_installed("ggplot2") testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("MEMSS") testthat::skip_on_cran() data("Machines", package = "MEMSS") Machines[1, "score"] <- NA m1 <- lme4::lmer(score ~ Machine + (1|Worker), data=Machines) pp <- afex_plot(m1, "Machine") expect_is(pp, "ggplot") m2 <- mixed(score ~ Machine + (1|Worker), data=Machines, progress = FALSE) pp2 <- afex_plot(m2, "Machine") expect_doppelganger("afex_plot merMod objects with missing data", pp2) }) test_that("binomial models plot data correctly with factor DVs", { testthat::skip_if_not_installed("ggplot2") testthat::skip_if_not_installed("emmeans") set.seed(898765) ## long format binomial GLM (https://stats.stackexchange.com/q/322038/442): drc4 <- function(x, b =1.0, c = 0, d = 1, e = 0){ (d - c)/ (1 + exp(-b * (log(x) - log(e)))) } # simulate long form of dataset nReps = 30 dfLong <- data.frame(dose = factor(rep(letters[1:3], each = nReps))) dfLong$mortality <-rbinom(n = dim(dfLong)[1], size = 1, prob = drc4(as.numeric(dfLong$dose), b = 2, e = 5)) fitLong <- glm( mortality ~ dose, data = dfLong, family = "binomial") p1 <- afex_plot(fitLong, "dose") expect_doppelganger("afex_plot binomial glm with factor", p1) dfLong$mortality <- factor(dfLong$mortality) fitLong2 <- glm( mortality ~ dose, data = dfLong, family = "binomial") p2 <- afex_plot(fitLong2, "dose") expect_doppelganger("afex_plot binomial glm with factor 2", p2) expect_equivalent(p1, p2, check.environment=FALSE) }) test_that("non-factor IVs work with factor_levels argument", { testthat::skip_if_not_installed("ggplot2") testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("MEMSS") data("Machines", package = "MEMSS") ## transform Machine to character and disable check_contrasts Machines$Machine <- as.character(Machines$Machine) m2 <- mixed(score ~ Machine + (Machine||Worker), data=Machines, expand_re = TRUE, check_contrasts = FALSE, progress = FALSE) df_out <- afex_plot(m2, "Machine", factor_levels = list(Machine = list("B" = "beta", "A" = "a", "C" = "c")), return = "data") expect_s3_class(df_out$data$Machine, "factor") expect_s3_class(df_out$means$Machine, "factor") }) afex/tests/testthat/test-afex_aov.R0000644000176200001440000001410014076011251017060 0ustar liggesusers context("ANOVAs: check that afex_aov return value works") test_that("split-plot produces an afex_aov object without error", { data(obk.long, package = "afex") split_plot1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender", return = "afex_aov") split_plot2 <- aov_4(value ~ treatment * gender + (phase*hour|id), data = obk.long, observed = "gender", return = "afex_aov") split_plot3 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), within = c("phase", "hour"), observed = "gender", return = "afex_aov") expect_that(split_plot1, is_equivalent_to(split_plot2)) expect_that(split_plot1, is_equivalent_to(split_plot3)) expect_that(split_plot1, is_a("afex_aov")) ## is same with numeric factor: obk.long$hour <- as.numeric(as.character(obk.long$hour)) split_plot4 <- aov_car(value ~ treatment * gender + Error(id/phase*hour), data = obk.long,observed = c("gender"), return = "afex_aov") expect_that(split_plot1, is_equivalent_to(split_plot4)) }) test_that("purely-between produces afex_aov objects without error", { data(obk.long, package = "afex") out1 <- aov_car(value ~ treatment * gender + Error(id), data = obk.long, observed = "gender", return = "afex_aov", fun_aggregate = mean) out2 <- aov_4(value ~ treatment * gender + (1|id), data = obk.long, observed = "gender", return = "afex_aov", fun_aggregate = mean) out3 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), observed = "gender", return = "afex_aov", fun_aggregate = mean) expect_that(out1, is_equivalent_to(out2)) expect_that(out1, is_equivalent_to(out3)) expect_that(out1, is_a("afex_aov")) }) test_that("purely-within produces afex_aov objects without error", { data(obk.long, package = "afex") out1 <- aov_car(value ~ Error(id/(phase*hour)), data = obk.long, return = "afex_aov") out2 <- aov_4(value ~ 1 + (phase*hour|id), data = obk.long, return = "afex_aov") out3 <- aov_ez("id", "value", obk.long, within = c("phase", "hour"), return = "afex_aov") expect_that(out1, is_equivalent_to(out2)) expect_that(out1, is_equivalent_to(out3)) expect_that(out1, is_a("afex_aov")) }) test_that("within plus covariate produces afex_aov objects without error", { data(obk.long, package = "afex") out1 <- aov_car(value ~ gender + Error(id/(phase*hour)), data = obk.long, return = "afex_aov") out2 <- aov_4(value ~ gender + (phase*hour|id), data = obk.long, return = "afex_aov") out3 <- aov_ez("id", "value", obk.long, within = c("phase", "hour"), covariate = "gender", return = "afex_aov") expect_that(out1, is_equivalent_to(out2)) expect_that(out1, is_equivalent_to(out3)) expect_that(out1, is_a("afex_aov")) }) test_that("afex_aov object contains the right things", { data(obk.long, package = "afex") out1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender", return = "afex_aov", include_aov = TRUE) expect_that(out1[["anova_table"]], is_a(c("anova", "data.frame"))) expect_that(out1[["aov"]], is_a(c("aovlist", "listof"))) expect_that(out1[["Anova"]], is_a(c("Anova.mlm"))) expect_that(out1[["lm"]], is_a(c("mlm", "lm"))) expect_that(out1[["data"]], is_a(c("list"))) expect_that(attr(out1, "dv"), is_a(c("character"))) }) test_that("afex_aov objects works without aov object", { data(obk.long, package = "afex") aop <- afex_options() afex_options(emmeans_model = "univariate") afex_options(include_aov = TRUE) a1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender", include_aov = FALSE) a2 <- aov_4(value ~ treatment * gender + (phase*hour|id), data = obk.long, observed = "gender", include_aov = FALSE) a3 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), within = c("phase", "hour"), observed = "gender", include_aov = FALSE) expect_equal(a1, a2) expect_equal(a1, a3) expect_null(a1$aov) skip_if_not_installed("emmeans") expect_message(em1 <- emmeans::emmeans(a1, "treatment"), "multivariate") expect_message(em2 <- emmeans::emmeans(a1, c("phase", "hour")), "multivariate") expect_identical(as.data.frame(summary(em1))$df[1], as.data.frame(summary(em2))$df[2]) ad <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender") afex_options(include_aov = FALSE) an <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender") expect_null(an$aov) expect_is(ad$aov, "aovlist") em3 <- emmeans::emmeans(ad, c("phase", "hour")) expect_message(em4 <- emmeans::emmeans(a1, c("phase", "hour")), "multivariate") expect_false(any(as.data.frame(summary(em3))$df == as.data.frame(summary(em4))$df)) afex_options(aop) # reset options }) test_that("better error message in case of all data having NAs", { data("stroop") # stroop_e1 <- stroop %>% # filter(!is.na(acc)) %>% # filter(study == "1") %>% # droplevels() stroop_e1_na <- stroop[ stroop$study == "1", ] suppressWarnings(expect_error(aov_ez( id = "pno", dv = "acc", data = stroop_e1_na, within = c("congruency", "condition") ), "Try adding to ANOVA call: na.rm = TRUE")) expect_is(aov_ez( id = "pno", dv = "acc", data = stroop_e1_na, within = c("congruency", "condition"), na.rm = TRUE, include_aov = FALSE, fun_aggregate = mean ), "afex_aov") }) afex/tests/testthat/afex_plot-rstanarm.rda0000644000176200001440000002503214415521671020505 0ustar liggesusers $gY}+CVDڈ! ]4Dn EQ#"(hr(5(QQQ5*>=]fNBo;_wW[U]3׼9qǝ855LTs,éc3Mq l꘩y➽;v^K Ɋe5SS>W7\ih[uZ-]:]n] q4HcK8v^4myWOswvM|}OG|+O_}Փ?קMtK/\pswõy3mӦo?:͇|Cn偗vZޯ+;F wm .[<-dWؓG  #Vf.tvqƥ.,-clNXu)5lbܞol{qׅn[ؼ߶alOYڌkV} ~p8g3n];ndw۸}~綟qٝdas/v.sѮEfx>qn®߻q϶مZo⥳ ;aS6qylg]<87y8/67vvI{.ٱcv v^uٽ\pЄu7mCvk/2qyub/X˱c9n,rq_NIc9y,w˝+b}a e4A7lG~Q 5#uoSi{G^wO_=qyVL׾p0h?Ʀ~=?5V#/M|]xݛ,|? s|?\ ]~~iʥisY25p&;`bɯ;Ǎ0csc8?=ꟈՆً|}þA۷YÛ}Xi;x"2Z]nr6P^񠎞1F8f/ټly_z3|C>v϶]Gy]We|D+ws'qߋ+V[;閮z۩KF[Ng̖Ӈf>'̹x|-fV4M;W3=~vygef}n.Zfy|_tyw]/g7+^9 /{/#{U?纙sjob|%Il3>ͯ:;_wl'gվzՇzϽ7ۯ<;Z8[fI]o ~;m6xmgߩ3ze5~{"$_MEM ^i|>侃c|=~7o!"JLN!FN%o*H))~O[nJQ}mg4*5B_#5B_#5B_#5B_#5B_#5b_#5b_#5b_#5b_#5b_#5R_#5R_#5R_#5R_#5R_#5r_#5r_#5r_#5?qg l_''aNMN$lMOO͋nOn~r{ۗŋnGS:[(;:oknߖY|[@mɑ۲ 1:Zz/}ku{|;\_ci-.=nZ=淧u#oYg۰WY﷖w6ȷG d\Hdly!׵HɓdV"c%/#/L_NB~QT4r1t dq ?IM~4yȕs/_$n %B2x+ɯɯWWWWkkȯ7_'A!o"o&o!o%o#I%E~yy7yy/]{}ȇ?"L'&B||sc/_OOO&7!K|=gϑ!J|;ȍ%_7"]Fvo| Bߞ@v777777]I Ol8;;;;;;;;;;;;;;;[rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww}''ÅefN 7῁o࿁ 7 7 7 7 7 7 7 7 7 7 7 7 7sqy!ɇPC(Q_#5r_5J_5J_5J_5J_5J_5j_5j_5j_5j_5j_kt}5F]_kt}M}M}M}M}M}M}M}M}M}MM{ IìaѰjij֪Zj֪ZjT-ZPjAՂU T-ZTjQբEUU-ZTjIՒ%UKT-ZRjIՒeU˪U-ZVjYղeU˪VTZQjEՊU+VTZUjUժUUVUZUju֩Zju֩ZjuI6&UۤjTmmRMI $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\RN.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.HŷMn7I7ķeVMm^o:}[aZ/ehtz8_ZKkvv1==X}{m_:k܆z9{_՞[jmZ9Rz[>nZ榣]hO}'wxu ON7O=h~_՚n;޶mr9}Ƨ~r^8Lk3ΗvMGu/.SK^d0Ld0Ld0Ld0Ld0Ld0Ld0LLz(uvߖmX/:f~Yߧ_};\_ci-.=nZ=淧u#oYg۰Wﯬx屃9r<Dr9pnҿܕ܍ܝ܃|'jr/ro5kב7o$#' DH| yV`r 6r*iI SRIG6ȷ %d<<@>H~|!#za'OGGɟ?'A>F|$krȧߓ !H|3ɿ/ IH_E忿o(E3777777777777777777777777777 %8ߒ mm!oooooooooooooooO ooooooooooooooo  Joxb  o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁o࿁oZ~|@†Q7Qw6Qg[DxЏb?J(ҏj?Q_o }_Bx%!o}?Ax f o}@x&𾝌do&}/[xIF2񾍌]do"}[xA2}co}[x91m]co}[x11]bo}[x)F1M]bo}[x!1=ao}o[x0-+L0´ Ӫ+L0´ Ӫ+L0´ Ӷ0´ Ӫ+L0´ Ӫ+L0´ Ӫ+L0´ Ӫ+L0´ Ӫ+L0´ Ӫ+L0´ Ӫ+L0´0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0ժTS:L0%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\ $%A. rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%Q.rIK\(D$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\$$$%I.IrIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%Y.rIK\,d$%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R"%E.)rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%U.rIK\R*T%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%.9H 8n4džwm^Ȟ<\>{v \:gxyEsO{/U02f_}Y=sXGU17sT]g?;m.̃miK\=҇Ȋo4M~hH̜]{37?-/KzFO{GϜkϛ?kYNǃfīmxfu8] X؉z'8Nn{ιc]-rGW\{+zyхeov [O'PtǗo'/p];n۳w~޹^|niwmgE62⥳ w/pSݳG98&6,_wCНo>v϶]schmOsɎ_N:9(0<@pewV{G;;gN}B21a.32͜}4sscY^~pz!Ӌf΍KY~g~>\YoZ../3sޣn;/o?[u l]a-3=?r3=r-n>]0y:ܾ^ηz>gv=fxco<\:!';`I$ijrtNUzuiK7[@Uafex/tests/testthat/lmm_old_object.rda0000644000176200001440000066111213664111747017661 0ustar liggesusers]EټKZ$ :( llBeL$bY&iMg> xg3+Y13S̙BwW KUWWտUիוzތb A PPE% пZ WT(O$M$TV\R/SoA#J\r{J~K;iϾni;}Aa^)rw}&%0_u?|x*zۧ$[7i;sS|Cm7PW<WKYs@:@uF8iQ=J۫IT%?QE^jJCX |e qxȳ"Oc >, wE+IvI . */@1mT=YXi_,ΐxCR8(Z(=M?iyBEDLw4lb@z" E)]Э.Gl.x$FH渄*gi|i,Cs#R5G(tZlf* YscD4]jԿtɹJ UQNN'[[:;[**oJd8_(d$E#K-ۤDk4W PYV-JF,53|KB8TjjLVM{n*%:)ScgVj3#ֶ$ DeuI c8Y6OVOK1.`RcHU0J4TUUP /7xD)&E[M՝KAw w5W=䆲8!$5W& p?s'#>8"D xA_i h;'@a⁡*eq;B᰻I ɠpx< (Wh.qݑ(Dÿ=Nj^n{{xYU*j r@APL $@`$pG$ @Hv' WrZ0ȝ;)FqみiBXH/&UU%gZRWqK_Hd&!ר֣Ӷ%&GTJR e"ZK)9.2|ˣMǃ-,$]G B⳥\*{!"6C3EEZ3:u 3ePK*Id,WU@9$1 FR@,쯍_v eyL{rBިfmV>T}н)99LVXn 3  AZ)5:V]i*@]m$De%iQ8I-RDP煚 -QÐ^"-V.ː.ƾȍ3 _£tMKEhR)K]] IS˩^gΠRbn((-KUB^ Q.@?"ɍF@F jT=1gUK U JpXb& "c &ZA"gTr|4V Xo\g-_S4E}&Jtp(fifr9j](3j`' h7ۥ@9$-)=.Tn-rE%9[J\U1FL}EFdaF[X$yYflng3A~wLj EB[.#M&dH kq2c2F/8`|rsS} ت,C[9kp|jb ׶VޔUF#qIcLt'Ion?x݁h;>`0o*Fyz3իuc:L0)֛ZگcC5l3= '6OK%m}GZx,])UZ8FSelYIcA: rk^(y"@P4GӨ8J~G ņt,˭-kñM?7344zeoZ+vQu,֒=U7,z}Q(/J.' 3RJזHۣ1+$F'KY(<{_y p2 j )Q$/T w(qAi bP>ų\MjG&@~m,5 ax( 8Lm7'K l' h8'~eRFB+og~r#DgW;[+Zyg+-OKw"HrYy*H F**p'F+.RX=9 @3}#TH%Qj!E@2EiA#7ʱX m(]TwY -?"3aVc@-קAݗNc!߳- H&jT1z %&8;0=,% O( XAϥOq$hM?)9,;E_lzܪu S- q 6H`nwx+xv3Adc#]8IMķl=Q **vuBۇImat`/P3eCPiqiAB\zvZ/UwϤNfl:d+?80SӴp:jߠX%1UA KLDs. McNI3Yʤ&U& ӗ}YVʆ%3d,-'s}[{ uXSڭT^AbrbɌfX2J:@.mj|pYlSd`:ÜhHwLVKpm]e4)zM ?m;1ݍPn.>cu轼B_ұjwZ Yh}%-;;DtV:q!|o С+Р[&ujyVQcw% ukp\ۆF5#`Z]Ɣ98ꖟ=.Ԍ_@T/WC^,^MO"V6Ǐr$%ƏF 5 1X^1PƙT^EcV?TF% pĽ"t䷣!Ptu5t0lP@5ע:Buu\ TZNGh{G#KI'RaVÉQ EP-:)cB!_ ͺхhRXvF \ zs` V#Km*ؠ݀~jkgT?1r+vu, 4[Cz~ylF(V~/-. fDϏ'0{ NM(OÉny ;b6ǢmrC]@M ƘZ14uj j/=>&HGzs:@f6OM:KӅ4ҋ]vNi}mS˩\75d$HX"i!h_@jLFv/TRYƥl -&W9;zɠmt2\T&q8Q50WvS9r5sG+딒7VZ5ƥtVt5WaR+c!`5~#OY{wf/EԗM,3+%j~'"t`k!L+l\|iү9Pg6%Z)u0-֔U3i!0Jz}B1fQx@;~'N_MgL:\>$l Q0,=Cuw0̣igƨ-/ %b+kTvtb1MKH3>FDpѧq踃A(_cXvCq1]Qm!ne5L:)yɧ|b|g 7mNUSa\j7V#=q3e=/S4ۨlU*8(ng)3E}0ZfhĸzbDv3-3m͏zc!!gxuY*Wʱ!ԗ4:He8_宲3y$]ĥX­dK Q혪| ,̖M/{("(0[ 1puͰZΠLRN^UQ/ APRf/)yi=RNY0oqM+THPWLGcAP"#?ʆ|:U 3&"u`L vEEL{/WށWu;{ōcVSI %N>ݥ4"R@n;D# (KœMȾSխFv}>wAÃ'whNM)UJMy>`U6czsO(%m\dpC @*{wv3U#4,NxQt≨`ă/heY1DMY̠Sa]ǝv.I344p\B0!xU}Zq͗R$wAޭkwVmn󊲚l}okv/Îqb.0ږݴ2hZC۪  GKY2uT'XTRd!Ggi`RGFJХk<CMWGu&%{ z'_UX)Aoꚜ.'(\WĦjqo++B&Մe@@ŜT{F & UUuj(Q#Z x IbԜte8?@.cNU/6])3g)˦d(Ee?]$ MxAɉ0Ws#h'Q G׊Wk>S&Ve8R2 BUF )^9Py͸bINJR氞t~M¯,EڛTQnh͐5ZNt@j~ ay5c 1&WS~DίQԔ%&Ϩ5NYp?04莍I&'4Zk 4DRb6Yގ> ~Xׅz8՘0L{ %VU~<E'!M3$iǓM| be}gV{%qt Bu}ֈSnjw4,nrd]X OWv{b:h1 ՛@=UEDO Vpۆ;)9:٦AU@RgR#k,6:ְ 44#AŁ@]ҥ\]eևDjWvVxRB- (eEc r"-FL=3J05wPc74viUo;L%Q~ј6E-"uѝ^`.oQ)1p^Ќ۝ rP@"_P~P: %N ѽsA7#b[hӛ=)Uٶ p( Z;h˚░  `^FޠD,ԔLv٤cĞ.Q|pnz`:}Wͪve5tJh K|z.§M,|C4RNhЉ۩ViKF[I,k+c_ +n׏3Zb(KKەEFoh @QT> J7Y\KP7_nsaW,rT,JSp̺ ~BޏbQ0Ne`E*d  #it\7骪vY+=[=4axEZ%xCsndǕN!hF%N̆dbxOâwZ/gT6.0F!;@WΥztz.` W2Ƹ %k{be|V%4:͞532V)p͈9P/&K}@g- Wc5~fc?=yHU;\GAӨ tKE KP|n_܊ QhPuIYGkKo;ڹUNOigM*z5Dtc[5qji4Pr&ĸQ[S%MOqDB9I!ȹ8q=h(NĢIPw,]U,jAJuU@1ٝ ռN}B_ ěeWZi&!TPiNzQ?CQ<ٖa;UWn#-%UF:.0b)z3O1&*vpܤ"0cX͉P$tРmE[հ! LJ >lemӱF,~P];4 +$%d:}FLtMzJ5B/:U4}+daU]OKRNXf? -Gb%LŚ :c#Pe|~9Z|7D?^Fme=Iva }Iчr80%/M #?Ғ@BA\ڽ^=UY $1Jj EzR0uD43 ɥ5ƈ1]'t#Ű>yu*$%i`I D[v)-VbgokW*kR;e:=NRnPg~/sq( %|S&%Lz"s sG{._`<4" g:naKJd/{%+DzBꗙ+o_Q"7t$_ns]BeNz@50#}EhJr4M~+5\pEվ]u)[B}[!{uqaQs4E}ٺ񣹭Uokty=]KHQVҩ$5J%#I3iڥA=i^S{u #NϽ#ytYw0ݼn޼n! y7+yֳK+o;$V씻* Jk:?+>o.ˮw1AK y-J"S%/e6W\xku5cź|l)Ӑ@HDм?`MhximiR_HU9Twv9tPHnm6rl/!Ub'RO9gmI)5޽$V O]F+ܡf89DsR -=n9rÏ荍p|곜zO7-jV_8A{ȘUU%7KN7;@T3>]M>ഖO*WF 2?:j ƪ,Ts,~ KT>4ԭL\M gb"|/N8òv3A$V(LzQGq|eƪ@ʼn(>9$50lkV̐ɼ e+y}@j{YVUF`ұU֚yd"ʝW*}\0 m6w?ii^_-Lv C;rq6w[_; tAn3Oc@]MEWoRrC%+*Я8"ivd^z@h`FX(ָZ\lr•J(R2R(ۗAT ݙP9jx`fBJܧ$,p6j/UJuL嗪/mLG+[je /}l=$DZmUd8疁>l%_C寍@瑛 [z ؽk z-GfYzn?iLMWL 9QҦ,cy3j2>4'/*aK\2R(gIQ*uϫBY JJgXT1`gרaX$ [F y>A4bZl&@-oV5Eop/ƁtHP &PZ/$0_12|,˜x}rcjHP(~7leNz@kaFzU;zK!bqlwiI[Kl{ŧ)QߍSifϥ>sDi҇MjA D8Y8{<{S):v@y9:^pſm,dŌd{8'[4I0B!SPdKhJFm:YֈJAKfIL}p1i[.zb5{}i EјR&TJ1cQz' B`[MXu6IGLת&iIBqB4.;fsI7BEOxn CJ=.dKAQ ]1`҃3 dɵGw/KKR[`t}źej?|*])MqAnL8*N`k0oǒs lLbfu^ d!Me d-{FIW>)%JI\ǫ" !5)oMJ{=n:&9]:blK׌rtL7f 'WmnK ".-X$٦`<C@Z9/6,d;(@HU> KgjT$M" íM$x8R$K`G?&_I϶т-/=ǚmyug^mK_}n~7|PUeϖo+M^nˇ-ku3|VJ9lSg-|]7Ζ~tn'=Җ9{[>jǵ]m ɹ?ϰpG }_?テ-Y#l_:myxҖ-j/ǖo/my^.-쇖bˇ|g[>5ߟt4[ӹj͖t-wtv|=7~nˇ mG>gԹ]?ﳟ~:ݖ]6cˇ:|c<$e^ss';^1_/;}0lcl"ǣl"gl"8XMDN#si8U K$˩T+-IA-UL{EWۨMmW If=^gvW*ХY{%T+Z*rwsWlts9sƢqem$C~.PĿ҆ÐYx?B돟C]q}z#uו:xzAWO}˭7K,=}:z M:Miy#<=>z\t_PYy :?BE_.v匸›StonoGyí߷kN)?R^oVkpN뽠 3 Յs*?\C}3kzcx(].=;'{Fs1vt0ʠ4 1Ts8`:+#G0P8'cI˟RCqlR /0T>Jv:c(2x7jazJ\Zy9xs.J&M%bv!]a;pi<ƺǖc]LX|32:ͱFM¦br;:Z(,Zr5ta{.]q*ȐdÄ awLA~dqTG0a F}0?r&yQ<%_`<=w8hVCVC5l+EQcu Ҷ e%-ŋB_}w*S_ wy^ ԯѫ.:cbci,~;Ƕ2F_|7C'3z|}~uzW:383u>~+ݸ ?ow.ְڥC{e:S*ĽN9|H}R}]\cйrǗOpq͑!Wt+v‘Dzp곷ސ=rO}͟/zԋ\x..~26pҷ.} g͏G[Cj.t6_pkpW?2Ԧ˃_* 7f7&w!}.nW;ܹ]^$zֽkt?ӮrԆOhǷ?FSM/Gw9ޯ;ܩۂGx Mm{~yk7~x۹|%Kwj:.txK9opLTL5@^N>5Vnr͆ԏ}rOrs9'D݂~J8gWbaPï0T_2.^WYk-s2׬Z߉pҒR_4ЏnCk~V|L9K|;e)WM+OUjp}Un]pIv}\pwd*3;Oy??qS;+xEN_;q]ȿ5z>?n=xmo+_΁Ꮳ,0>;W.tU~>{<"/Ľ*rSE{FO{Np S/Z{/3!}s^T|\=wo<ͦ ޯ9jٯ|B]eλ~[|2wuLZ}w`.{ӑW3B=%|w?Cӕfz|<O˥q'>}YMߨJtB72R_ ڑjMkjWnPs=]xۏ8qU7+-S٥w3FQLcb5Z{'0'0&M]𷘺pi/)Hl,.9s9b$ 2?ko奝4,vR)qoaQ+*Jq_d<N3^a7`8%F #/Z(~|U _0|UWl3ZMZZŌgeCbTf: FKX]CA7ʠ+hKaYs0ܰ*28LjnJ6$8 .=-mwHD,|hK$PA5O9s9!.`iTܑIpKé N<18itjl5 uLvމv^žP`vǓmKINZxU^e]ypپ0m@K~-P cjBl6)*EVXBrts4֖ uIڟ>\]^p U tخ=' jV}1A?I0"R ,x26Poi79#~`͗[a6|l8Mf}Bhm!ɞ 1*1H"UMNy񢗙B2#ы4HD{2aeUXqy U n; hd=O12ʣzl4pQTdAYPYTUdAYЀ,h`4( ̜SF9jÃQрhz2vUc]5Zs`Q"4йNJơZ-5ª%MH6`f"eXݩaCv 1R% ^,MEܚ !Px]Uo e qdA6bADpSsM>r p0cb*P0Di/ ̀<4CwNF$} -J4w02,[f8![/3f[%y}W]~^ S%=;ʻ~v SθI}8jˣa_[zc{|=VJqoR|uI3ߓz֛*>x૿:~ s;|?93so/-| P>Էi {?sd|nQyPZY;C7r牾+w>[[㩧[q-;?uz?|-?]#}ۈs_7掝ue[dq-Fʊ%՝ǗbQ95HC-m~|\T7nV_Cnڤ W UG<9"ȁ #mZIqi>6>cbXtY{6t*2 ]'CP!֏E:jT|&#Á;T2W t9f &]w .tuQsH.D mF8B^uݟrIG`9 ޯf[a$.Ck/'8Ijn;P ^DnR'vŻՂE+)I󪽤K1z o jG%,OJ:H$)Ō,i'bq>gۚ+λx'}fE+dΫp! "}E >Z_ -1,"E=&jP 71]j{fQ#.%zUPd;D ] C)̐LSt-hJL5Q|P@- C$}C`#%7#q=5'p3@àdvz˃`Kt*yS*=.Id 覝.R 5K9s9H< WB+fFf"&VA}QoéM`$WrE*V b,RC\MQc:+%-U)Kg7 j!WE%ɖ( K~p#=sknW>N.o`)KHVe0r˷1H4I)-R'zf*F/IuS31v1lebW^S㛱?\;ه53iG97oY^;w|GSO͕-wS,8?z%;g/|G>{Ƿh!WLP' =cXu'5c^gj z2iyBEaw{T3Z'@=r) vMPO6)09ho?śjt8J<.``YyލR:$Wpfr1$X_@YD~|8bF|V8]߮fkA*>bBC4v&4LPβ< (aG@;-3]4Ю0X@8@Mh 8LɀjZ@u5j4ހ/ 84 t  @+v86\@h> 8=|9@G: рpܱW5fk2 !s#[@TNF\ RWB\5ЉI':|tL@g菀t]B@П]π.@+ +] *@WZ@O@п]@7 ̀nt+@w ݀t/t?=!@JG=q@k=I@k=i@zsu^K^ Wu@7m@z@z>eF@ 瀾?@_J{Si;C鼒l{y%ȑ/!W=v5`11D!b cC"11j0F ƨ5c`Q1j0F ` ` ` ` ` ƨcbZQ1j1F-ƨca:Q10FƨucazQ11F=ƨcczQ10Fh c4`р10Fhc4bFш11F#hzd&N8kCYG@UjVMЪ Z5A&hU4M$h"A HD&4VCjZ A!h54A4A4A4A4AZVKj Z-A%hZVKZA#hu:VGZA'hzVO Z=A'h5@ZAk h 5FH Z#Ak$h5FFtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHttUs9sC\Y%s3q:\,z:7 ?Zqz;|. 8qd ܕ̛"tN)1% ' hLzX3$,~N(Wt%O25.4-clqާ(F+_ R% %'Z=gOO?>e$"!XV;)H<~wDp'鳄qL366zJe(SDƽP>d}*]HlYNq9CСqW6G7(B;cԝP]sUH?Tኔ3ՍY0ڞo:>?9>JN)ky]>e+#<6Fm:r|ȩCو,\*-0ȹs@+ cUk ]U}RkZ|PQoЇȲyR3d+ѕ*]u:Rj0]踧-VbyA&A3n?^VDN%U HQgA梸:.3ɔivU_F&kgagL}&G AQW\PzoAf?{!M*ςކQA[oi01L:7|s9@qoP|sg/@6ps9o|N|ɧk>]&gA|O>]çktM3I$$>g'IR|&Iq$g疞Is9sIҋfP $d^NတM/S0֨{`{-^MBʭߵjp&ƻY~8ssU~rOy6k.uֱR(4I FbOdZ*i?It2Ǚq&7ɁX,;e7 ƥ2t}M."_<m5GԆV*'[ 6:GvaH<K0KҤdZ"V9Sa{) X̿A To麢{PRRa"g3&8i5":}6>N*VΊϮiso|6\O y,I,>yB/eߗ2KSdG?f6꒑^ڤMߵJf3{ѷ+gXo'rN)KK Km4ghO%y0|8ANn0fGغ~V]0&7w`,02/X `R-Ԫ!;4ty~U9HZXWG7J7`[[wL}9 ~٧M+ /ް ۡ@ysQEHk ?uVmV !E ʉoE;q5n5HP 7Q$ MNHߨqׯ eB毩)_^\2],xW2b),,](X5m2 0i3;ͫDHzT8NPoM\zdzSzG^,뵥\"JA0u.Y,-6)}K<IN*Gx=XFzգ឵rmGJ1EbBӬioCR5FM՞5k?mq,r[Y "ՄuZLy^~!'=CVR@Xm-CsRjUaݦOZv [)Xڔ\T앋'Lӹ7R*|N$|ު*w}O/H+Їx$巌J n5OW#/#5|* V96>E=6i[\&5ԭ%ZU:#RQ4 $'t O'3NHu< ص9Vgq FNN5 ON0F^Ԟt$XJoEp˥ 'Fڀ$ee O( A *WbMq$M4@'b+k2{Cɦ$R1!F :P $ J6dYPh}T.IJ=Fd7Hq$;*[TcyN ?OGc_V<̟?O>j&:z1e!o\Z:R\^OHxEZJeU#Rt2A!RVA:t Hj0t)$WJxfC(vl<-Ҕ5zE]]AeKYP! |\K % P|6) .W \T% L3d2Zx{T^ qfN3 f3)V[qr-0Pj^Xbc1 0BOjE|i,,K~8"-Vڒ{n=ȵсc`XtHG%)u g<+R`gnw`n)  Ů*a] ]P $]MatWss?â97.Eӎsyo{wK4;JՠNPq/kPyh{C80;gxoz:M4T6K˹nt_[)hamtC/ m0Bm"smjAGЦ QiA4/kp~a(:p%1SL1 v1r/f6QN//)MR]r3jJdM+y}S^~eۊWi2 N1w2#WD+ V2h eH²] AI^!+15^}8`ݑ(Dÿ=Nj^n{{$lUnne7ʋ%"T֩*+ȔulX #)FWqみ$/h'ܱ$^MK,~hNtlN? !šCuC϶ `LGkBG LVt̵.jʡ%V2*d/7 Z7cEoNvm..0tK@l+lQ5nK\'ąlsH7ؕoWX=ZK `,X d~e:4I55=CU ڽPy"YjZ&EP;_&ƒk V5e*mr=%ʫӈ N"uS|2dk!;Tv]lѸKJ--"QKn0.5 a(PL9E`!kv* = غcԴ-:K>+&*:)>& z %`Rȝ"}ē )y w& _3!w2lz.<{UYEc"RǘoVB:=dQN&ya+`o0k=^3>ww#F[qSrfVl:nbw&TUT] ]ꭖNJ>U&Mˇ5PFBoԒUá>xu=F/3,ڮxHUVԾ 9Ӝ  %Ugj^1j6=aț{n+$f}T϶Zg@lʍ}Tf5SQWsh0L)< vTA ZìN!-3f&b茬Gu W~f1h\|/OHxɼBJѕQT(f}NZHOfD!h^(m}`ttI/qz\w?T#b^5O@<8e1j|rSu7Ӳ&->`Xg0pץWj߶d(e@@s?G=s[ [6yO չ bVY}&d({vep/0t]*Pc]S . |Im!$ tlLm5fK^8\+bMʨ+pDAM(kGWs9s9n}9gįη,i9wur\qe\9q\q9.7};q;gC$(5~H0i9@=Ow۟ d tizA䞢IS1ɗw\(8}J6/!cRP)Gp9s91}9gįη,i9wur\qe\9q\q9.7};q;g]dd@GS'S{<6wywh$',n@t_ z˙` T[e~Izc c r}b1(xZSemRlnL 0pQMh ҏ'BZ=KOmZԯuߥT!M1B2aDWĻiIuG$6Ob,'5Oq%ݤ9k* E#rDY@ ᕐZs>VrRUʲn{B*^ߧv"нiXfS"} TJ0jNkԜ>@wwnQh;*'x(UPAR YhY67NW AG0cOU҂@ r|MT$yq66ŭQ~E@g(&C.!I U"nR-ֺe}GԞ7JvŻ붼hY]wT[^}~-X8I_AW~cmO{Ӊ>p-q^-u\i]Xt-ێU|o|o)Y|-|o僻U][Ӳo^l󎻠kMd_9ۖiѬ[m?<^tNF[>ժ}7ϖ8?Ə'mˇ_a-6-W}?[ʮC^Yw5m>[>sNz[>7>|矄-Ʌ4Q[q-Wі+rʎi݄}Zid. `8ac9jcʠ* &-RzqlsZ/&e䂛!5]]ҥY{ T+Z*rwsWlt:G9s9 m}j 4؋2]& קˇ!]?>F+u(1&f=>&?ʗ[oYzt.uz9Fxz|}>辠rt닾\q7fC6\ߎ :ϡ[wo>S.߬>+uf{A3f T~&f>yPN]zvU OZ2 EB?Z)݃졆vt0ʠ4 1TS9l0 QcR"݉Vɍ|ۣp el;&H)O"-P;"x[!0G]tt}U~* ;1>J ލ+ĥdls9xWR5i,ƪ0>_Bv2pi<ƺǖc]LX| Di5@H uj[xXլ0g[)54V͡UFx0=O.Yd w[2p7Ix51:Y`]hJMc YD矑,;6"{f=3Ԩ0!g3L`//L}0f'_aʫ?՗iZuەS|g_9=b'_󵟥6(z=꧗c޿:_s8G'3C?_!G>;郆7WL<~3N:gv_mr7#|vھWo3|2﷗T~ը5Gƥqr#{sOoHԥ+]z ?mN86?_n~3oNEשZ̽2Hi]9.ofAO?O9Omn35r1pi؟?rA/~nROۼ_YS/8u]O毫=u?tbSǴSw{Q:?k_G}{ĽK!Rrڄ{n8_=\tRϫɾO(˱3;3eG,g|wŧT+;?6Y tﯿr!]`EY~z*娕 _︾i3$J>7NqȢ9L`P쟠_٫{1cqfՐZO;{n_wk;]w/z}6XrĽ{ :EJ4sK37jVעԆo<| })Ӊ/|Ӂ3unxʕtCc;WTF/v*~wɣ/+ !CWqIW|^c_]7SMާCꗕi],OZ^{'0o1uBӚ_RX]s9s-rH`e$$͉yi' ˥T $|x-, uEEIs5|d;* } &)lBN*KJ8_W8/_"U-̪wVcw1Y*1Ðzi>%0eF>Iw KkH1F[t9vkG~\100 7,ƽ p A',ŜFzm‡DҩXTy9s96YN"{4>S4yc6qv(پk,ꈙ f=0(l})@^`vǓmh;4'2V*^G}fWޠ:~" `UaA R.X(%W+h-+Aկ ?}|,-Gٝ\U]3S$K=F(&R.hD |w 74 }syqo%ם4gn74lc+SONC8oP`_u?|x*zۧ$[7i;sS|Cm7P)$|y?8ongkM@M=lF vP@^N2+'8A"H]`r5%!gWNI昿M6Ks4%#\M,q2칮Q?/(mu]`0/@˹MVpOe^SrLl\t_P9?~*ʤI T͏MydOrw W@4UœmJ/ ޝK0zol4hLmz;Xyb#V[qy\Gf; hh=Gc?1)-Sq6 ( *΂J,, *ς*~YP,h@40 UfN)Jd`T#5AZCzh@F̫z2vUc]5Zs4Eh@(iHs]7)Cx`֘,5 x ?+?qnU5oCTlZ>̍BIH0.m>]n#r'XV+{Ƞ ܉fDZ]B)԰w&r:y9 b?sKgkPo Q472 nq- gQ%둑JRi HVCk7( M.UGa_΁!;Ngg0O|ԇl='̑{?RSrG)~S 0 WGYtk˝'Vln]zo59lԻvkm#:}aWwܘ;v֕N^P*Xq88o1PVd</ԍ` h uPK)/UjM*@:{֐Zl ^)!k)K'IƥI Yo?@bYx|},A\ţ3pz9|P+&ПʋίN>Qߊru|cNeOa`!sе3TxJJ#OS\gɗjjI_v@a,UMppSAU>m^[&p*d/.\L1(dR#Y&OYI%M :eN.ˤ, FW({K/H(C+hѭj-ݷ7D}lǤYr͐*QC)QcR"݉V--&RvGCZI-RD:CqlBLS0VS@T>Jo:p8)jJEA){lL1)HGQQjOJ`Y:;[:u(Ht(iN\:_R6ZJIGA$ضCkA;>ABiV h;Ay_Bh8/="h'@ h@n@+ 14x@ h"Ih2j@"@Qjh h_@SyM退%@:t( 8_gh.4@ -t8 hqh #h@:q`O 8i_PPNthBP;U)@} P hCl%d@:P' @g:  @t.@ŀ@t) _]o]J@W*@uz@7Mnt [v@w]t{h5=A@zP PG= 1@Z @OZ )@Ozг<"^2W 5@/7 -@ozл6z>!},(_(((cKK@_ h >jP?y-ŷ -2 (Ne@q-oNe9{h~MSvV9s9i5oX2ߖX09?@^~˹ISH7)qQh9AT|=aTC>{g!=䳇=ⳇ|PೇC䳇*N>{8䳇s9s_|  xEYﺭ 6)e o:c({-^MBq88r3x,l5*.:@AY8Z9+8baeeϱ霬)3 g>g>zp=5Y&集K3 > ye~_ /YNO=e~qX8\{$Ezi6}t *m >,Z)@{7pkm!>ӴEM܆ҖI1)8ck~ٗU͡Rp,qw \@6nn b1K^ݗnVt5,-9j{w}]a'/-쮖 o;|iͷt?}tAO6_*PﵨYoY[*Ȃ ,8 *ɂJ,< ȂeAY,hP{=-(?ԾP}GT>H^(0J@m'(dC ==vF.܀FhW@ hw@{h< 4$@U4P5 5}h#O}_/}%}2lӃוzz`l>U'V|[ql !_ڄ8s9Ǖf4#Lw[ϒg\MJ]z+tMfxp<1*M6̘>Z_&_fR8d$ۤX(`Aٟ ' EHH FҝMk=Tu&ҮOtށ5[Z5i"-, í"*J_rJisJT Mw\np*,.%ےNT E 8#R{?9}8Y,Xͮ qIuθa74x>GM{yԴu5_;c+Ro \U_x*my6_Rolɗ&/K#_Hbq#tMR|ilf^5 GkFǗ& kiI¶{qOpSjE"2$?aUKgۚIyYeph* U>( ERy'XV@ԃ}*lߴ0 nr KUC}pXf\P sޒŪ-\K9mhqG"Z*K9h)ך4HոY&-w"p"Ix\ r'.&AChyu>4&~QC܅Iۦ1̌Mx^( pTܧ6Z30l]Al6Y3h]M0jk?@kajN$|-}-#+-$ 0JA̐YJa`}tu$dA~=LWuD͗o#4z+ttZ]kENJOWsͲq}!I}6#Yl0t 2)P-ԋy8>DŜ׾m͗&O{gsO˚[4. CZ(0 # x]:%Ն- B4G <@i:^ l%RpQ {pa6z2i)'UVOi?gUʟW *_U^/|uĬe 8p½`UpQ>|rUrqJy|IZEimrz s9s;~¬uV Z dm0NhMVqդK^U$XJ_dϧ2_I+9ݖ+|j¯l{뤛oȖW7僾񲍇cG}orWsQe֤߱#htB{[G CƂ~;i˷aG˞OZQ|=f%:͞?[;_jˇ>[p⫶|O~9`+FMS腶|c:=^[>ewor/]^+[x[ _>#~킶|Ta we+^Z>{<[>Kl˅}-n絯#|3\E-Wl"78Xr}Zid. 'x-H:S6VąZEe-Rzq7oX0n|kQzt%Kf5Rj0]M]8s9|[Ƣqe k|Ln`_iaH,<ϡG>J?JoYt=Ɔ曆gvw^&_=./ܬGA/rFi@Yfз ׷#os]۵ 7zJݵY8^q |9 }1{^}Q26Z'BwR<PT. :]Ota3GiQ[~M5ov>}6>_¹o Ƽ7+4vuqoccK.huq&cM MtfiQ0ZU s&kRC~h*\atˆ;UAp% w s;e_o{7xjjZĽ/uِmĜ?^!ݚcP+VL:ǧ89TYϕWJcO{w 2 .,v;bSg%޻ۓOD_w-x?uKwtO]WoMoLaSۨwOVU ?s;~y뿗}/ߣ]ߖѢn恾 GoxɿvCogYhR_9JCOwvP;bt};e/0`c>:SoOjmޟm0|뾢sϻ_ȿ0|Ю'}ɯ"\U~O|!æ6JF_е"m { M| /ktX_~ò1}lo|ύ:ֻ>kHmet_Sw谵o=/>vNw{~ :y𮻲󧟫DnOkNX3`=btz k+6~tj. wWxi{z'~W{/o'9Ř?y𐏗tu./TɢO/;Zx= _௾14WO5gzɗO}=܀;I'qq?i^H|mrR<ۮx7O2o&{-W,ys|EG|2ԛg|ÂNSO0.Sli~[ {7j^+S8Ou5zѐ g~RVo\.?!rGBEc}._Sh*;ؿw[>:~n} ;wtޏan__nn{񛋻 x.o2ږ+|—VywդgEޟ߯m}W|rMvzڐ1]E7z- ~>岫 VJXskd#~+Zހ_M9R.O4A֪rkݴ]歛X- w*s}ETyNV;]_V1vpn~EU`[L]Pci$6zzys9o\1X~kE9m'moNK; ~kE=p[+T4Wj[yO2`݇݀`-a¾jU-|UU-_ղͬjp7ijQ>P~3B 3? PiC\SF8ogtxԻnG ےwkG~N>iaa1U#dp=a"4\>k \>\%N (ʠȋ's94tR?k 4ʠ#Nk3tQG1AanHoUK) ;lsGI?!R:LS+Kypپ0aׄ%<[ΣJN`\dد .#*>l_FGt3<nWG׆B3VVr;0q S~HAŠmC<wQQZUo)i%(wlԼ }_?P?j`BN%&mZ'U1OLCȨ7s߳7TTJ8Yg/!v/415 /h?E} ~_O}w(5өnY=ozUMw|:G>]INesάx`Y꽫Ϛl͕_cw^ׂbʹypqW_eSvJoZǡ@ȗmGߞG1N/=1%[1DBσHPb0_sEkoNwow~/wO GR j_ /TQC?L`@ {"0Av eQv 7рX@{h< 4$@U4P5 P ٨Z@u5j4ހ/|t@t`@:ͳ4ah:8Бt4c 8@~@'z4I%'jt<h) `U P' /&[ D@':)N 4@:Й@g: <@Ѕ.t1?П] /.W@?@WU 5蟀t ntV@@t^@Z ~@zC@z zГz Ӏ,=@h= @z @oz ۀ. >}#@FA[ 瀾?@_J@S`QFv'wo@.uou@qoP|t @ChMNr9s9ދ! &3k鳨UɴtIz L)! eIy̡҄r\WMDbIøB RgӤ,C>{g!=!=䳇=]|"'=T|PqCg'=s9[hPn/zm $dVNတM/mP|kC^Gk)jRnÙǙSf1fqPqeF=TS~Ц1RZJI3iĞ4Tb~&WS2wm"]_24 eVߍxk㹾uRrh.{WK&vs垧mJ|cQ_-LHLpɳ??~vTayY Yٕ; g.g.gHdUOiφ!Ϻe~_4I4\[eg Y,R}"vz,&C}-KSP%oT؟a/J1pڻ)m%]/)gÆ a Lz3/XIFKs$m i=GYJM"EyU ͢IS1͏ri.|u/"d뚪p_sgzP\Yԟ VδqC;M gۣϳeWVƷ WX4^{F]AAvz'Թ>N'&߹]5Rå˝Ubm)sf.h0\CNZVue-RbzfIef*V8%5Fd%TZҪx(w9Ø=п'%l3s9s9׷MsyoKz|[s-q\_;q;gyܹAT|EzB%RATeAYPITeAYPE/  ȂfA2'ضCkA;>ABiV h;A, h#4 ΀v4@ X@8@M'&ɀnGT P=@>44@tOt  @ hـ 0@B@Ph1#-t$ @:[&@{Nh (x@' jh) /( h@ЉNt2S*(c:t?:9\@:.t % R@tЕt5U@t- nt# )7 t' @j@zЃ0.@zcS g=y@/ZE@e@zk^_@oz[wm}C@'6g>W'6>=]I?7 | @6| [ul'ȆN>p Mhs9s9z\oF1tWye,ydݥkbMT*0 jgsdjΌLN%jua;(ʽAIHM&9pbP$h$imaٴ6pCU`2)Oǃ4\^#X3U*0¢0*TE*ĭ69 H ntAE6pPe/2 RbAk-XdIP$n;"uIIӇzoؗUw]ލ2_0Z[#=ՃNo7\t'sӕ6U/\J76sK@N/$1j {g&)4635IK~5wX$ZaINv ׽')IZvR󟰪3mMA¤ؼ_WebK@n JWNuP*n" EIR,ML  >oZIN79Vv>L,DWE3AAn.(9obY.]6\#G -A åhkMM tjdk~,Ԗ;TwTIea<UiNX4׼:RQk l!BxŤYmScf&w/PeTSutfn6.RQ 6&E~55j05] >BOƒxr[i~mbf,E xtO\?JQC>fvŷ?PőxgU:5"MRG\CƹHOfD8w `>duR6Pir~Gż[k~yqbNk6K oe-~M[|uh!-c`s.]mjZmۖ !WLhr4/n)8kte 2s=#vŬLMP^`G w*8)Vvyb>MѦK^C)SXM_8×t.Pb(㾇L=נgl!2[z,YzӐ\a=>DI1[ VJhyli IĢa$ -CCE25K(XY?,˽<6+tTx¬X 8,C>:%[gMt6ޚk9*^ -[.67%\KcB-xtqG"& TP5s?$Wp<)n:OcKKga͞Ee;UWA;Uo`͏HI|^lS{f9NVd\f|mriieauNkӼm}۲GUl1_Env}pE7}Tne6F "7߇قvp7mtIG+U ԛp눫"vM(Q -~a]FW.rehiٸ.WU``04]ɫ;V;&*;YmlVx;VxWMbiqXa&R&/ l•Spa8EW><:k!o-q3S3^Ӌ:cwC.p=_>{ۖ9ߓ[>u_/z~ƿm}118#o);;oȖӭ|-:b]|x3.~D[8paK~ iwꌏ|03W=-Z*=:h[>lg|{l.uθ/HagNrGW\rTA-)i[>`g|imtm8;Ns{Hncy-Zk 4X"XNX/jH x`a G%ѕ,]uPHx(wy71:w%F&A8s9E6>5E~.PĿ҆ÐYx?B돟C]q}z#uו:xzAWO}˭7K,=}:z M:Miy#<=>z\t_PYy :?BE_.v匸›StonoGyí߷kN)?R^oVkpN뽠 3 Յs*?\C}3kzcx(].=;'{FXG~utlaDݕ`a舎RX$.Z|ۣp el;&H)O"-P;"x[!0G]ttu;GNgL)w,56vgk;}.l}ۅs hyeonWi<ƺǖc]LX!D:IaNm Lp+f1ʡ9TܹOFمw> YnK&x¨51:Y`]hJMc YD矑,;6"{f=3Ԩ0!g3L`f.ߥv8е˱_[wWŗ-M?w5SĿ^Ԏ}?qiϵ_g_=Б*cۏycze8V':EO'qg/;Su7w?9}Uq7~~iY]5k*+&Ss\QE 'l`!5vv,|b; (J "  63&Kkߛ씷ٷ~9pyc,3&cwtbUm{=mt|~keKU6IsbyHnNob/O]&_|K#WLer^ft}׈ =ӏv"m取\3i_st=wVˢ9Sp0SKO'#/v@9qP8 ]~yJJ#3%+G#גQW}9~?Οқ6>'lÙȿwdCm +Ɠ>Be߬%tmñn>/G۴b'{&'.l${{F76{`~~GUl1867Z3w_9Ϟ>;~OAe ~zQq NlL2Sns]Lo?)xN$|v3{f`o>g ,Y_cz#'e^Y#n]0e`~/Ks;>Oܿbd1-3NYH5:5xeHr7C-,˃?Ùl91xߥX#tD`rL,7T^b8W6Ǝ)%XG-_1=e"-c& $< Cfޓ#,]P֗RkTRI%TRYMCNN"ks"NiI(XMkb|J~n0ѫj@, sz_*}W_sP^WWR`,5ƗHJv*%S.lZTTѽA_fK<^ڴZEނ|$Ό^6qu3MS!z!\@#7Ma*$O!T1<5JxZtj "ѽr]BMDv9/z8vCMڄS62Ie^ΈQ5iCMڄ[wM9lUݿJ*J*LG>TRIeTVnE%Ij=)/奼R̫5=奼R^[yH)$ B9LaF rXÆvp7cWve.3vYˊ]6c`19Xbs,`19LÄ9LÄ9LÄ9LÄ9LÄ9̘Ì9̘Ì9̘Ì9̘Ì9̘Ì9,Â9,Â9,Â9,Â9,Â9Ê9Ê9Ê9Ê9Ê9lÆ9lÆ9lÆ9lÆ9lÆ9Î9Î9Î9Î9Î9Á9Á9Á9Á9Á8w',dDf8mi'N–Eز[a"lY-e,–EزKX6%l,ac KXf"l&f"l&f"l&f"l&f"l&f&lff&lff&lff&lff&lff!lf!lf!lf!lf!lf%lVf%lVf%lVf%lVf%lVf#l6f#l6f#l6f#l6f#l6f'lvf'lvf'lvf'lvf'lv l l l l lDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDK^հӕwV΢W Ya>([)c]>wV_K⇚ y+2ǁ8`q %Ɓ8āqQhāq "Δɜ]TfJ \@P~;*yHc$Op嗸œv.3iTWcvn]l?;1Mѓ#̻}p{»eZl߭o,aB_N&8Xmd;_|y0 }엉QE/Xz:rp?>}2< |≲ilY"%Q iDc9u{L^QL`(▫Xs߆˜w^뙻Տyћo4<|W9O;-g{ @QE_wϋloPr~ΐD0&K|(R$ 9c?!'ϓW!S+ğp(g0F #H)9Q S7Ǣ;)C{(cw+ܣ" ރЯlnH*Ԍt# V)hWQ&]1n;S-v/~ cWQ'ĮXaa*JlWQEė)KdvKb= :YNR))o\'$NRO1 ",$\v+I.!Rϳ$%J?miםs)s:l^nS&Mj= D|cq+oWם.t{]~hNFOН\ B$0*:Uk@ȴi_Q]Op<+]wګ'35#g\SjgU1T5ѵ#GL#$oTKxOr&#:cT3F|ނAF8PB?PB4x+-Y&e@[y#=[K p+ p1; L`vp '78}}0b.\p%*~<p `0ZuaH(7n̒#9&0 0dx}🨚l 6;wp~S<x0 ?cO<x Ys/^x U kox`&]{>|0 Slgs_,|X_,,,,| X =*jZ:?~  ;&fV6vN.n=0Ǵ`?t[QF/2PsgzE_S0u :यSN:यSN:r)v~h, /TRI%TR8SSEZzN^]ai)(TbapYuÔ0ʡjDgv덊$k|-W yj{Ľ\O0۬qqm~\#D3+* &) i KiBJR YTIlBbK+rIbӥ~*K_)S.s]9;(-C[$BK=VV|aB9[:u#qU/{AUg~s=$oׇ;1|Zhu^I1PqJ{G<5bҼGwqJ&]_])ryW޿Wwsjiqh?naywM]j6Dy<řuřENj1ߪ=k^*MYM%#1y=. ~VHv2~{BCc`RjZ.gAҐ!SH;5uU6ixCVz$<n+ҡ1n/Kv2ނtF_wt 2g6ph7T?Z>)=83bXi~QkmYxlMh1ϥwueMњY/VC|װJ7p_nKEi{CxbyE*VF9 MTٔxK#I"Wf\ZVKCd[﬉UôMt Vah9["-]>:,w`C4UЅg[g_dU8XÑ1ؔz̟dCCK/Lrts溳>cv<!1k\W l{k}bNf} f=ܔq]Q:H21l?m/3渡x ]~cQn;hba΁BolQwd:«>36a~oy5W{TouϼϜ>t=m9o9{)C׈>Mv}=?>Vwsuy}BC@ْ=ݹPPIq@JHiq =4 @884M+Zp;j=Aϧh8ZZ2; z9p.5 7v.ttt\ \ c1 @O@/,㉹ ?\ p5`` `7?p-`:a_ pf-%c`:&0 % KSnpp7< x0iL<x$)Ӏg<x"%ˀWf^x&-ۀw3!#ǀYOf>| %`+B@PXX  ` `)``9`[ͥ~ 3z llllll   p >>U:AIO1t3vtYtigI'vt9k36[MQI%TRI%O | ܕoak])(T\s@i&Cgz7dYyRP:%djdE!ǝ_ZE]qjfBqIj䒘>h|NpGK Vܲ6͊jɌC(Vr>[ӶPײw]BDW~[\a|׭5l?OݼxHjP>Cįߛ.|xG {|jTѴ稝o| fw}"~_Q%f^HhK#19.J?Ckd??.Piywb -]xk7?9#R>4z e6j:&zEXM#kҥC1%nY'oCm0ɇKnX*DƻfPw$n'a%kaZ7$E/)-Ŝߛi-`dg1 B |%qG~ѽPyY2C) o&W);\ K~_èmz].U\Y(3&m&*QϓU_6J"BTFM()DJ J}B(%++!,fҴTjfMEG8N5Dy׺mj#tyI[ݽvvF$=>hB#(4 5qtRdja}(0i CkH͘quyic^2TUNKVʿ3S>&TPʍ[p+^TOՍt^'v2dASyAİm' gAbY r9X!,ʅ/%]^-(W)&R=Ǖ&%6?T& EZ ݊#,Z2Q. Q~+ʕNߋQjQZQ|Q.=-^'YU*~n1VH!';2,AmJgPQx-j_J*J*LC܈:F,~oQ`mV>nGƼJ?2WB|^zٟz{ d, ?mJf^[/%^mBqm *e%'t%5AvnE^<Еo s \& ;s孻|epNR>{"o}RHfJ"Tb:؉{pb},†w.:[- /Ri{t&hk~0El_%M-< 16:Or)F&w~n7$:R6Hn )Pp޼5t?M D=we`mE}D`SY1Ls > /XxߢLr]=)YIAyStWY}f/ojviѹ'ds/,k! ޴Vb7'N|D|7MN}|Nm PyD_=('XȘCo;$ H2QZL08!^ Q xfu|򟗸郾5!ZS:I Iͨ8Ӳŧ-?d?`A}w}(uQW7/r\>I<8Q?8ŚF稆9uHٲMjCg5>8S(iQ7qW]LemET5>$y_|7 F9B~Ff.2Q.d74׏/xwCR,N=WGz>bװz=4ɞonl}_\~?un~k3p  `!(p1u.61ݣ1MoypE談ȨRĐ¢ LkL>JAnI~~&ҍn sT"| 0EX2S)cH!EP_4ų-9_4Bsx(Y x!d(V X2+$Gr?WZ@\T M$\/CG?IRG-ޤD$T^e-f?^2J􆨊. q mxֱ>kZi⠫wtN8wjtw]CS;ejC1t?8]T]NջWBݾ {PqIi=xݟOAyh*-І,1 h~WŋueM0X%ZZ*,2GhZ ս~VT1wȞH͕+vbHɒmL2ﱈzvs|qH;[Ǎn^<8sδse6}~lg5-- Ɍ=Mf wgV&=-}Xf۶pz|Sw'k.upo s_Xd࿕n!nݰ/|0p-r.rQgqۂ@|䣁`7 -OY /A>_ _5i̇N翳mɓ?|gpZW7GSv>>6h:й#J^Ւ;_VV; {O$?gtb2|E\6pq#>O^ OQY|s5J>.܆B0j4B=ir"^I*,@Nxdiw+ܣ" ðln@ҸG|5FBmkL5M<滄+Eė^8l #7M,=41ξ|ϭ|آ`IZ!g3k0N_8N6IӐXt8v~^z?IW^y%tg=C((o[g$ڕ\(|~^ejm3ؗP$ $[zyVu=BJgE#84~{KZMX1}+¯(V//ƹLھƄdPf$/(MN%+a5 S`Y \,渽A%\*OD: n=WDBWa%;uⷀ~GT2:+9Y~[abT!V.BPQ_'IwZk\aHHGj5Ti*|)|m *Fc=rh|ksV"nnNbs94_F?ܬ̋Qyxf~R'ezuJ*J* hZKy)/奼&WkzZKy)/奼>孝6DD?Kyk}P޺[IKy7zP޺[Q&Wk{JmR޺īU&u7o}ӓV1>T#5Drٰˎ],`19Xbs,0a0a0a0a0a0c30c30c30c30c3` ` ` ` ` b+b+b+b+b+aaaaac;c;c;c;c;p`p`p`p`p`Hޝ8%NqBV8 [a"lY-e,–Eز[a"l,ac KX6%l,ac  YYYYYY Y Y Y Y  9999]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]‚. 5bTJ Z 9CirgFXX@?A?Sus=<HQ *,~zTWcvn쀮noB<1|-S7&Ԥx6 ~JqAZJ/в 1X!}헆|C'L~UZJ*J*uSI%JzУ*~SYT'Ht&}PÛvR^[xm6ިoMOR^[ΟփmR2==ZۋWh%^2ۼmQx뛞*xުSVEO3jvmwesڠ>:}cnc#wͷ}/ j=>WsO_խ5z|SFn=^k>͊ZG!;!5JxZtJ~gPR|r8>/>9]j}^|h* |yM} =j}.j}ZCNj}OpR{ZT,zU^Jej5f?b5Q+~PyIP{`Vg9~~Zﵑ;_|_ ӞDW-K]?/'Wj0P-`-$j0П*JR~H _2˙P ɂGE / q{+Z"7ρͯy妍܉KmXwew~?eONgp w] x_ z~\|V8'05|| o ϨY$ފYά&oe;]Vg[̿GM7ם轅"QE_wϋl#Vs-~/n#FjNZ$tZbFS+EYDzZH(-"/t<{;1?].4š·gHBD 3K }2beק?"|b%b0'-?8_u4O6>҇vXxRշ"&#jh@S%E9DD}AAjto[ b(F 3ɝ9E1QBbxl.fS> #$a<6ˏҊѤJ*J*fKz#PN%T+A8Oe[TRY#R^Ky)/ϼZzP^Ky)/奼>)o-eD&$ZQ^[xm6ިoMOR^[ΟփmR2==ZۋWh%^2ۼmQx뛞*x)/ ~ӌ~ӌ4 77͐~Lpo NM3Ii&8i.z%fY3r}h$U OEֽHݶ]LzpW;M>nW#N.;5وcl)^WaN:eo7zr: Ha/)\CROwg _``.)ح̙ ˽}YVr̍pTLg"$STsv-ߖ\.mA1eSڬJb8Ƽ)LQfXw"m) \K iLh~߄߄߄}&78fе)Xt|hI'Nd^0ާ~ԏ huɈ2#PgT3Hyz| !GeR^ky^_:?#WOyJ8G2UKO:oE/N-Uځj}#>9<r^ΈRDAJ&E^/IWkjCQ!edZC^Fٹ<?3XK+y> \3QIvcyη򤰼 {Kb8Ce12/ gDIcbe:&I_NվTRI%TR8(R^Ky)/MR^Ky)/孹}[;yKm2==n^%u7o}ӓVouTLAyO2$奼uWLAy6o}o7')/ ^F; hE3J3b'Ψ;~gTp :QdI; ф} Jj!ЏяձE4\'n ax<\O*,pI;uct5v3 |A?}7%|TeY>i3[&1C}p I5K]p?zmf$쓶Af-@Zs%n'uB@3m򞒘^1&ϔ"5W O2ڡ:.Nh߀LeցBb.:|kQ 4bJ+Qi!WLXDH%4 |:Q:[VqnϽ3{;}=MܒyCW+;>kf>Uw9!=??{pQ?wgzNWׁ[tue Y /1>_ W_X{rȏP5^Liy^WOy\2ZIfWƥ^TW(tycr y (Mt;N)/KZKAy6o}o7')/ DOAy6oF^Ek+eIKyVm6ިoMOR^[ o)PZVj5;xI Nj5^pRZuj|b=̇Zj/vͼ]lKuX|YMo Kx+\ZNx^R+aܯ[OBj=Z%g:|c7:0{>`¬@1SۋҝKf~0魇l7çS02î[^DŽ%/s'vf~Ei߹?~|58;;V,^>@{oP _v^Nln Mn./eԬ_zq=h8aw7w;{ɤ6wq⌻2K}9mPysǾ1ױ;~˾y mk'J Wցl=)#/5uz|fEǣD%<-Jx:S%3y?j}^9ZWZ.>/Hj}>4>zb}0KS*J*J*kG>TRIeTVnE%Ij=)/奼R̫5=奼R^[yJSHVyۅ\P{AG!''8=I Nj}Op*XK*i}/%IJ^ Pf?<]=0+oa?t]-ʝ/vB`/iO斥ٮEޗݏ_5`kQ jaTPOST{Dj/MwLdB 鸽[-MObnrFD6 ,ײՍ;pM Cv3톻bw}+ʎfu?n{p>>7g,^vof,gVܷ2zc-_#vu USG YBb訢/n{;_[Y y F #X'-^ZAi-HL•Eˇ,"=VY$ZiPh:=ǝ.OP3†Q^Ю](Œ;Syb$%u ,ݾH"4ZF mg!)d%.?9X`gzL_+cq;X6~%<Sܥb?H}rIOzlVfos nc&\81nWZPl}>?p:x4I_YVS:I }L(k~0El_%M-< 16:OrLRJ_ tk|L/U^zaI M= ,nQKс7eB.G"NVI vUsDj*\U.oS2 }.(z. Mۊ> b(||6_EKozR.2 9鮞.~_Ԥ \ӢsOv9_YւKa~s*C Qbۉd;3sS_+=atTW)(.A";#ɨ=DoutLhG>d~⿁ww{B=s?cY%nǦuo y֔NRsR3*Q5TC}|G|?C_2QTZ((lɂYA$ ]ʲN[{˛ {_\NE-=kݮ9gG^qˌ|geҵ>W-< רTJelti9?mxc=xS C9 F '5Ծ%h2>;H OmP!eL ݓno+ፌ5Sw繽 LGdߋt բ\|CNtۓ7wащn2pduECE#qd7]$ŧ?텪pwn|'\0՘NwoQa)kT㓅c%IB#1 j>_%"a7qv˟r'70! :C2$$qDq"*VU& D фi^=jтtLII2UCN 4"DKX0$"Cƨ8Y:)JUR$԰> h !5@+31::Z-+D 2'L1Ѯ£FyU Bn\Ė#/نT^,2mIDI391!D3]uT\Xk%Mb0,-2*a4qersܹ|_Oa0Iav,9TDWH%&sUT<3DJrي'[oT a0-rT rª9?;S޻\649Ҹ o։85.XFNW4t"fM~Q³YyF~`.u\fYJk*&1$YN xЩ,TRI%TRIe$21=b$4ًqx,^ F?#'GXjP|ptZ&鵖gQzUծ32~[#/_-]Q/Y7!E(ꋑItEW_F>aã]Z_֞sxZ=#=/ʧ,S kojCnW~JW^%/d.,CcOq{QP,l52l\A$Ɇ#%6_-cFΧu ^Sg n(B/qzl#OaM0y&]7[k]DNޥdv,]a!ʃUEn-wDcQX/9cQ9VV|k@4 {hZOUVv]#}Ƭ_w=Dy ^@O61n؝ K KJJp"ixvT,4uk`/^?p ۃe=;Z~u˂3W=* |SWRm⁽'[B\YÏzeo]z$vȫG0mϔN& cg~z =}r6$;{3;|V#CۈsZV} q^3D{Ps~hr, ]?w?iG^,e OBg8(f,K/Ô1A|EtGvuw&X;y`ݎ ZqL94Ù ߍQxXᐁ7T`oo0{v'~ ¹3uϿ^0=` ݴL<$[L_,{6#tCҜ)yW<>x[{ޜ 3e}5~|uMG'"11?#.CrmݓrδYx5Ceܑ _fX3q]֬S_MN>sX|;n4o/?eQVn )Gq49.}cr@[;ǼpU}Ns^8vBh^вԩWeȿ,Ѭ3\ߟ4;ը{ԔV^f#2c*Z|ݸ8o\FyҸ_|wW /{,}{YNgz܌,}ԙwݼ pH(/$?rܼw8_:LًX5HrZ$ڴ ;Ow3܁aß:>UU:uyo'Ck|x3wᢦ9m|F_ nOr[߶6[2i=Xd`5_/$]o,y<ԙs@s`Y-#N vzSr{S,߶O}#{7#)oXp|gɈp\1΋\{00 zOVtCcZ_K`wQI%TRIe} qAh]ybFZ&r $>|X.ѕwwX nٮJQTbG f$*-xBa~jGw]-Kw0tWKd$UX7]^U^aGWK%i`#P:FpŒEO(vtsj9s0 #, ¼_P cRg~ HXQ`MZEܴ>Tk+C"+ߴK$zU%Ap9J*j :u4t?YkN9pJNBy2lJ^noF%M&zU EdN] Kw˓S7J EF)CNŷ$uEg788܌"GB񕒔BxC1[P RT@qegtV_NeCMƄS12e^ΈQ5CMƄ[wM$Cr =)C_ϐDQg.gSIID0BQ>9Iue%?ǺC)OJH/kjr#)MwxIyT׃8kq %Ɓ8āqQhāq MydFraB3rXÊ6#A]Yb e.4) 7mK>\?ݘۀP~D7ҩiQMExn:WSGJ||r70aO>| <.? #Grw{ Ї$yhъ*p#%ArbTJӾ$NQ*-W r\~WfUவ+8b5 M*:@8@{/XT1wȞH͕+v7 .w8J(m&LȊ''ӝ-qq3;(p{og`{>?鳖[roidƞ&3po/8v+/\t׮u֏Ҙ߹9}x獁=&72l~i'lΤvlڄ;xS8v.mZ8uoy)pC e4߫ݹ_ fW Y /A>_ ~cW88s=d.jqrS6vcgyW9_#|Ec<^mܑ#G^f=i7Y @ ,9?gt"lq%>x_T^(|f3ws%#Vqߡz9p.߁phhw,v;X/ttt\ \ l; >~}1.\pj?l0p-`:P0p~y`$`FMF\Iq~_ n @cŀU2?ſ?01mw( p/>< x(`< x 4^x 2 x 6L>|1`ـ9| X |XX XXX{UՀ5u?~XwM̀-m0'``/`/~-O鶢>6_[sgl! ؅9Xbs,`19Xb0a0a0a0a0a30c30c30c30c30c ` ` ` ` `+b+b+b+b+baaaaa;c;c;c;c;cp`p`p`p`p ݉38Y48-i%Nqډe,–Eز[a"lY-e,6%l,ac KX6 YYYYYY Y Y Y Y  99999%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,t;?4FW *J*~% RPt%743%ČºH)\a~C ȵ\;LIx8·Q\yQt1"=CzHW!]=51{EW!CW.zHW Nz(8फRI%TRIe͒Uzn#~Y[۪:b["R{=Oes½~wBZ@RZjB6U[&\tJWJ\WNJP%I5?Ò|5uˣ_;"T$e3(Jo"|VX><}1-׈BFSHʌјʽW*{O*^#.{~g~D]kB}=RNC޿޿Ľ|HNP*N7N,8F%}x1om[[\Gy3*uMO-34?cUz"T>VJFb>.{\d>Ѫ-6 } ڦ;ojxJm`Ums3,iMed~bZ?Z*__ᑖHiih>UdXߥ$[E#,,Ud50N2ah6VϦDVo7XTN"6ȼu2XZ"nMmfbՄFx FKi6-Tiea ݅s%QNdeUiMZ%j&-$YNW¿uCbS;wPI%TRI%TRI}ʩx%=QGu?ZYzJ*z$R^Ky)/奼WkzZKy)/奼>孝6DD?Kyk}P޺[IKy7zP޺[Q&Wk{JmR޺īU&u7o}ӓV)>pA[~fTRI%TRIe]GJ*W҃UqTʪխ>IG/奼R^[yR^Ky)o}S[h>(Mt;H6jM/ۼmQx뛞*x?ۼe{zx&)/KZe[yx7=Iy)oU?0CО. 9X0!9,aErؑ!:Yݱ+ X2a,e.vٱ s,`19Xbs&a&a&a&a&afafafafafaaaaaaVaVaVaVaVa6a6a6a6a6avavavavava@IYݻgqi"N3qZJ6'a"lY-e,–Eز[a"lY%l,ac KX6%l,a36a36a36a36a36a363a363a363a363a363a6 a6 a6 a6 a6 a6+a6+a6+a6+a6+a6a6a6a6a6a6;a6;a6;a6;a6;as6as6as6as6as6KXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX%X/]jBۛ.wn] AJ)BPX3r}h$U OEЕ iH ~;7K'DB7WR!g #Q=#9I&h7`l&.Usq6˃ c~%K+p{{9 < |1HyݹE9s8kS |.,'0 %ug}"py=Pn>cn󻋍l?A)@jt_W?Bdϯ,`u{x&|N'Q:H21l?m/3渡x ]~cQn;hba΁BolQwd:« MiZ P5d8niuKt^yhCtds5e/ns +:o~!iVp޸m 8vEcnٜCku#|&tH38Iq@JHiq =4 @884M+ooA #j~Pyif`a h hh 8`tp!3 "@W@7@&b@w@; `XV `8=zzz8?\pJU \ 0p`$`FMF`Œ?LG nX!P G(LLLLLpN]0!z7< x0iL<x$)Ӏg<x"%ˀWf^x&-ۀw3!#ǀYOf>| %`+B@PXX  ` `)``9`[Jw?VV~ `=WF``3` `+``;``'``7O^>_Lҙ M:}Egl6ͦ٢f N:-8l6盧Y gv4TJ*'h>QYJ7z&uPr &ݐfIq*CelQGGZ0u&a9!i"haIVљ9\WI0S׿0)*uYi w ݌,JvI¥8Sk%oiyf Mfi2VbA'I'$ GVUDP ҈E#$+bRS1Tvϒow@P,/qA֌B<&] Is_2VEyR|6|\4@ᦉ2Om;8j}7H6yVlQuCR/ḆIRmR)[B&/P_Iܑ_t/TjV(P ÛUJ"Bf8h(#(+>D^@bxzVA7ʌIIJci$~͡ҹղQS*o$~w+QR†@R7JJ9l%K4-ZEzQo5AG 8i^jȭ)]^Vhw=Ѽ/I`"iC3 Ag,Ykj#hX L4G9A_3f;>.#m]^Xx ksզBg쒕̔ rcV) FN7||4x0,˃iZŤ8wzx++(;=sUT|vzgv $,0Ô*aԟ˝)7hmҰvuU%QQe-7(lT|7?Qe7UuS&.;Fd6sM.̸7WɿmssQT̙MZUn&!LylQe],k6M)ߨ݃7tۣY5]Qe<Uxpfn;ʆ6-l,廊̠GmiQ[5O&E-RU6[>Q%oQe2u9<r^ΈRDAJ&E^/IWkjCQ!edZC^Fٹ<XPGٞ\;'ҡdE++H^"TT)g4 v3+ߎq8{Q%{B~G$3KХEFD)q}%>v{=GEXSܔbAzЃG5 > eʪEH"m*%G[dc4V(HƟ%X 9Zo,=<%JWuT~]KC^sٓW]`žE9xߪ{W޸lx gsvw?U=g{Cz랽;'j6?KcceyksG+lk|N>oYʕod9NSO=7 .ipi +_1 >/3N`81M^ צsȸb;:Gܞz|F`f/u<=s}Ҷ6>hzQƙL8yr.z ʵG5+InUR8px'z\xow[J|{0r?1}xT9:G~ΤMX عԷ_M i1KwT콾`ޟVۚv=퓺4x[`y(o .ٳː`xErGxY6SHR8~F-^FL"ؾM4ZX`3: y@hn1r$Y./KΝ}bU/N﹜`[Gx+bl6.EF7]vtZ99mgeM? i>6j`ݺᔖ.s_|eH;I,KqPvTRI%TRYMCNN"ks"NiI(XMkb|J~v0ѫj@, sz_*}W_sP^WWR`,5ƗHJv*%S.lZTTѽA_fK<^ڴZEނ|>X* 7N &fǡɹsc]>7C{ < I^G,97>=va{bd,3BY Kng_m۷;.\#S˂_%G%W>qrXo<1 8s+DEOW ***NQߕuac}A~Ve:)«R*t*݌ ,k|]::{'%uo*tT>/ЙuoqA-PD Qh2jH3A )PD!]DI!?l(C_ϐDQg.gC\fj0B}U~亲E^&8ǺC)OJH/kjr#)MwTNRq< @JHiq =4 @884M@F@,`Äf 9laG]Yb e.2m@3{'G(w=aok4O+wynMAU(?"鈛OԴxy<7rq $''1}tgpp?z(~}TywZ&0H"k 7Yb4-w!L%dq! : $&8VTKWpP74UtFh5pV_xg8b=J+Qi!W6t%ov>])qPM?sOO;[SfnwP.;qe6}~lg---,Ɍ=Mf _,%J7#pW^]1s'r/+zMnd>YN؜IMش w{!p]۴6pSᆇN]8ˊiܿW%s+#,<=\-0_|8/ǮJqq'\L{NM\*}mƂϮr S_GH=vy᛽۸#G{doXr~ΐD@%K|xHr$ 9<c_v'0r+p^)q kr|] G4B=ir"^I*,@Nxdiw+ܣ" (6)r<4_ɶWm`;Re,jUr0h.Iz؋S<^O_3{&c_2ru΁)(TSZו!#+>U('\!Ӹԋ .oJ.W=$Tt!9Og @ ɹnEnr[)C Mx6E9ڪ=XFI껱Qҗchcyb^;Pp3Mvۅ MĄ!`I zNw(;yQ8#JL9t2oƏ|SW;MTRI%TRYe@zP^Ky)/奼7qZzP^Ky)/奼>)o-eD&$ZQ^[xm6ިoMOR^[ΟփmR2==ZۋWh%^2ۼmQx뛞*x޸SHUDV^S ؅9Xbs,`19Xb0a0a0a0a0a30c30c30c30c30c ` ` ` ` `+b+b+b+b+baaaaa;c;c;c;c;cp`p`p`p`p ݉38Y48-i%Nqډe,–Eز[a"lY-e,6%l,ac KX6 YYYYYY Y Y Y Y  99999%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,PF!9Ҭ3fviVh$U OEԆ95IMd!І9C 2 \~gҨN]L:߄xb0b~zMIÄb)L9PrP, +Bi.q[z&^y0`üZ[vj#=P(L$D~ %z7^X[ ¼tLul\F5߮)}-W1S-+hQ.(Z(@(O(ߑY//>!sJؠ7Kn}i', ږraN;[}r[sNnɃo.ͻ6(>wb]|Njn}8!Ob,_q9v^6ɓN$ol|IIGj@Dw_Q]Op<+ԕ 91WOdgJ$G,* $$Ϊ3bW{kD׎P1Վ䒘j1r3Ht U ߷|ԿP{GT?P43g0>K-g_<=œ8Ѡ -<#"ƅN΀.]Y`🐲pz.p'/F_eW\? \ 00 0p=q pf-zi⿢ #9&0 US(=D?dSnpp7< x0iL<x$)Ӏg<x"%ˀWf^x&-ۀw3!#ǀYOf>| %`+B@PXX  ` `)``9`[Jw?VV~ `=WFo66vv2W w3^> ZmE}DmtW2@_`+I_I_䬅 CДYuV*J*2qb~% RPt%743%ČºH)\a~C ȵ\;LIx8·Q\yQt1"=CzHW!]=51{EW!CW.zHW Nz(8फRI%TRIe͒Uzn$So)s|*Wp["R{=aY*]* Fr-2QfV?TMS -@jV+RĖV6ĦKTϗĿR\r_wPZ*H!!W{ĭ~72Är*]^:R9 Z{HhO_wL5bкT-&2c4r+yk8åyw+|Mh9 8RNC޿޿Ľ|HNP*N7N,8F%}x1om[[\Gy3*uMO-34?cUz"T>JFb>.{\d孝6DD?Kyk}P޺[IKy7zP޺[Q&Wk{JmR޺īU&u7o}ӓV;Ks|} 4 9X0!9,aErؑ!:Yݱ+ X2a,e.vٱ s,`19Xbs&a&a&a&a&afafafafafaaaaaaVaVaVaVaVa6a6a6a6a6avavavavava@IYݻgqi"N3qZJ6'a"lY-e,–Eز[a"lY%l,ac KX6%l,a36a36a36a36a36a363a363a363a363a363a6 a6 a6 a6 a6 a6+a6+a6+a6+a6+a6a6a6a6a6a6;a6;a6;a6;a6;as6as6as6as6as6KXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX%Ђ S*Nخn7ufx*+򹳢GAwsb Y=B)Ɯ(v+w4N۱AO"i>Mk?Yڴwםs&nڗgz&sss~1\lϘ[5bc+n m/!5ג/r/^)Y=+:oה+p0=*Y9CF5"?ѓ6ǺEy7tOo, zM,q9Xs-wn,VGxUTO/?}fh5lv?~9yv+s14;9獻JzE'_9O\0?'m!I%ƛp%wk4|/GݺB!$ǁ8@zhƁFqqhV|ނAF8PB?PB4d--Aϝh=œ8phh8pB@'@g@EnLŀ,< x(`< x 4^x 2 x 6L>|1`v}  9`.``>  @``1k7%eo+XX XX Xg/_~    `?|&}zt:oN^b6v l:M'؂N` N:;6r l~/i>*J*Iy>aTs uPr &ݐfIq*CelQGGZ0u&a9!i"haIVљ9\WI0S׿0)*uYi w ݌,JvI¥8SHP2͖1!c718-`mes pwn|'DNIoQ!U)jt+8cA|ɤ[}IyPlas&D^@bxzVA7ʌIIJci$~͡ҹղQS*o$~w+QR†@R7JJ9l%K4-ZEzQo5AG 8i^jȭ)]^Vhw=Ѽ/I`"iC3 Ag,Ykj#hX L4G9A_3f;>.#m]^Xx ksզBg쒕̔ rcV) FJ!j)\Pmh'T o]̏)3y{(3b-ы_yޅu,\}/sR~D}cו!sW}>PF+ɬt3,bB˛6CCe!9OgmM.*{Q帽 hj#.=Mty wI|zBνr4U;^0K} }fx{e<x=x"/}$TmQ4a-~ߣhA:&Ӥ(Y PBJJ^A}oPD_tK,Z)a J::H%qEQ*z&%[>Ux(W9O^لjf{Niy͆֒&] ww0#@+TPsIR̹**R;<3FXaJE0Pz&rVT.?RwӾG͛lŝ7UwD_#QeY::8l7,./3FkXTٰ-o-<Ɍ*36|v{S[EM7?uo:lǜpYJg؎Uh;7f6*[ow{=G >}fyߨ]W_rE0{Dg\`߲*U|yϬrUXzϹ,riT٦#[U6lp MooC[ˤ<ֲ ?JurF&ݯ<_vZ2y9F|r~y>(Z}12򃮗翕Lۋ^3ZNUˇ?Hy?Bjއ{ceܓs\d zR4?-z39im)m݌Vgoayh+txW.>cAw~߼G+aC!d2w wc $?y56#gMu|,͋^Gܞsrd.78lڢ9 /K9̇F'yWv;`3:Ge)u|M ,w?]2qv i܊G>x;;s6/@ҩtۺ 7s;ɛf;[?F\63/2f̟rt'/kXQp/n4˘WZ9=ο4\;O⭮X._V+f5a쿫ּfۺbYuM @ɜYp蟷A?ͪ}Hr?͜>at{ښ_ɾ6eCy܉?HY}rӛ7hncivuft՚wVsI=۵w|ag!;8/w[\ iDSGn9=| ѵ?ǝXwd/9,r"m>/ݡh!uW,?i@ $2f ;^]$K]L~b2,ݯ2eIp}~j 3q{/v"+wۓsk/;eA<N`_۴YeW7<׆;#ucwqb0X/ ܾ`9 z0jtm;m,pJXB,g#w'>,(·V$ĸ"mpKv_WR>M6#)Tl! UtWpD?jј_Zͮ?&#Z B +? e^j,I1ef,}BI@еQÂ;u$ej&$}5޺kF;J*J*Hz#PN%T+A8Oe[TRY#NRFLAyOoہvJy)o]՚^[yx7=Iy)oU&:Z[yK5Djm/Z_)MR^[xDnַF}ozRު@Z6B!ߜ!##Y" 9aA+rؐÎd=+;vea]&2ce.;vas,`19XbsÄ9LÄ9LÄ9LÄ9LÄ9LÌ9̘Ì9̘Ì9̘Ì9̘Ì9̘Â9,Â9,Â9,Â9,Â9,Ê9Ê9Ê9Ê9Ê9Æ9lÆ9lÆ9lÆ9lÆ9lÎ9Î9Î9Î9Î9Á9Á9Á9Á9Á9#){w"N8Mi&N qZFv$lY-e,–Eز[a"lY-%l,ac KX6%l&f"l&f"l&f"l&f"l&f"lff&lff&lff&lff&lff&lf!lf!lf!lf!lf!lVf%lVf%lVf%lVf%lVf%l6f#l6f#l6f#l6f#l6f#lvf'lvf'lvf'lvf'lvf'l l l l lFt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt Kt D륊^ ;]Yw{΢W Ya>([Hc]>wVX ^m!k9C,FU8 q 9ā8@804@84dTO͙r+_E~o@U 57\W`;jz#I<_O*,pI;u3jf&]b!M`= [(?;m&$&<[k,\<󰩇$A*N=(VKYiZVkڣ"K>ލ,/$܏D OxlwZ[ld/)vB@3m򞒘^1&ϔ"5WO2nĐIT[M\M-EPȨ~w>WtL5p\F*؊C6^B*mD\2q!qм &L?^@ΖcOTrE`{Qs{y`z}3|#05xΗ(/ny}6ʼsv2G^}w=\nYNgnmBݯ<4{~=7uc?.ܱ ^wڈ߱汇v_ x_,?$g*P|5p=}k̵NI_wnʷ}IN*ߺyO%ׯ/בtNk}GcEBZa6aTr~ΐD0-K|(R$ 9Xc?(i'ϓW!S+,)g:('n3#n39 娰9u㱟,:4LN񺇒_q=.0p r= HOB?C$<-HC# Ut ׭hT]ۄD$ /GXX$k4*gQ|)Kd*ZdE:I2rJtkp:I?Fx*$rAL_b"}H1`OJMH`;Rt|S6tjߔI)CBWPs.?4''Xv|.d!~P%I~5 il#R-xBWZ91WOdgK-G,* $$Ϊ3bbu}i0kkG(jGrI헌񖣟TL|A3HtZg烌p;j=Aϧh8~_Dh: s\e6F@;@{@%::.ttd.tdX Jl; >~}1.\pj?l0p-`:P0p~y`$`FMF\Iq~  n @cŀU2O OLa~L6pv;wJw p?< 1t'O< x,9/^ x*`57o x0.=>| )`6`3瀹y/_,eEŀV|``5` `-`GO~ll``3` `+``;``'``7#-8%0Vԧ8@Kk/}u:@_I_I_@Z?4MZ_kJ*J*'.FpQYYK7P l1-JW~C3SB8 .n2UWY9@\;ܑȵnQJ#|EeW:LWz#]=tCzX\t2t0被t9फ Nz(8!TRI%T,YE ~ߺm@"1{6B;?ǧr /%!^-q/K&q5<Fv Q)ǿT?̶=H)=;2bxih"B׮6Dw,bO'4?P.v6_YVefV&ƋUjk䯲 |QGGSzWY~ *=44{*RQݞDP*XaaJq•C z6%zx3҈r{F/Wkb0m]5&4«gpX0ZzpHuiyn|ϧN' [k.0ĝ+r*-Ik*)T[6YmY$qw`nW1O3ezu6SI%TRI%TRI}ʩx%=QGu?ZYzJ*z$R[h>(Mt;N)/KZKAy6o}o7')/ DOAy6oF^Ek+eIKyVm6ިoMOR^[ /)LOYJ*J*Kuo|tU\PF%E"B{-6-IRn({VH" 8pP7ޑ7wɥIzo}O{窙dD%;QG}3YL6'He'}0cÛ~2^۔x6m6hnMO2^[.ރ6mJ2=6zW铌6%^2mڼmxd.xY_sC\kC:,atءNaC|ˌ\" @.#qG<8x#qqqqqqXqXqXqXqXqXqXqXqXqXq q q q q qqqqqq8q8q8q8q8q8q8q8q8q8rag>viN vZӆvt`'fl-c|̖1[>fllX X+`#w#O?l _l `;vO{87Y[E+}c B6[f ي-dN-;Bd VT dI&dc'z +x0鉫ƳtJ>٣&GIdy7lmeR]X:JMcrh3Ȕ@<|mP(D<U ~oF+<%^_W y6)8E\ "I LmPHמP4S+NNE qߋП(ڡcoC{z~POBOPӿ IfID(Y$<]#A"~@CW@?B>O45Ai|X=E7,4"[${fݾ1,u(:Pэ8GM8(nXnu/D0qh(M WKڤI9WVqH[2N};Uq6J(T ( a6PD=GXU㟯z9mȗ;1~)ލ}ZM1=6TjeD4!5NS"B{DT[Ehݰ$+%6+%h&'#xpy-RhZ?R`3Y3tFTD^2Xɜ|GN] c6;b_ _w薹6SU4NNOvZ"J*FC*>!Ѝ(S ևdZT-GLڒyirP-ԋvq<MW4܆2䉾†{q<#> i–!(4*-)T>Tobj#hќ& \4G&a9x9ߗ!Ov&>Bb}tB]Z~39W "Z ]Wz)`[!=$v +"б yJ96\CX?rALd>+)a \"c( ^MVF A;K!V%pQ] ?X'*?媪ܪ#? ET*E~Z_(r"*r"TzEnPbE.~ն1t%ӨV#7t͡#o}rRsVސefYNpr"U"Y⼾yU$L2$L&OC٘.,qh|{6k,jOVZnގeN,]>.cuNv]ֲ]VFݶ/mRoˏlq۾\Ax J$s:rP`noSn[ɋ|+,+5A, Voţi t`O>qj!Z)'6vГ{* QҮ &͜JiX-{1#|KZ]D(7)h?PbXzZlB (ZjgDv)eAځ䴁Ͱ젉,;Kc3 |AY BSA4W$Lh=~0bae=0K  8̄NQgQi_rW1eIp)1e+ϡmSv;e>~Sv ){T<ޘ[W}ҴfSvץŔd}dgk)mYgĜ$}ཫ 1''z?1OQM_v%'-xfN$Ym,č{ ugjY5mm;bV"pgIxY-_L2$L2y$61E.HpL*^ N?'V|)]ϻPί uCzhk9Jƺ^t8}I#r(|=bStZQt=k|4?]sj/<0=]N .JZjG_z9_uaXCo?PiLPZ{E^hO*oZ7ZKUJ8~]VLE,5#_KĐ L>NbC~_@Z4PBWl|Bx39U~AQ^g*+w#a~]ר6[ vd.މ﵏P>/2"m\dY_nw5yXc_5YcxLfcM¶Dj:1`PVcU[n%0?sb"mQO$ܣ|A4VIQ[ #!UWܱ4 owU:k'5tW)8*`yOEyOMg$X3jQ3T{ /mS#V:t\Cw-5Q'=,oZGI{5L )}1T3I,`;v!b,Yu-^Gxw%5sSɹ 1AΗ*T~jyCo:Uм*M8זl6>çK0grKs1h+΅[ͧ?$qsŃfX.xa~E~n.rwNY²i*]ЁA?m|hksmOkGݿ+΅R;=ibkӚe)Ng#v=&7'wg6ɲ*U^^SI|׍J׶v+noro+X-DŽSp?6UA:?We0km>~K'zw+WQ"gҵrה]Nmu#5? %пaImMϷvoG(v߀0ܵl}J$)]Q>r}^Fx[OFjn3U<0q=_'K]dw1$L2ds$UoIud̓:&s$~kE[+D8wWw nY j#ւa[Cxreƾj!*GcZخeZ8jd4U ъr*ԨGQK<(ZGlƢp{{ ]5,h^'IXQֽ(A-I'T#_ol3nچ?jr2_ܴj$@|?dI&d$N=MOE6ډSdN2ʼn\L4ql-?7:ݯi@, wl_C+/B/oa(5S+<mꊘtץqދ8G8kœ_F*qOFIIǼXT/(QK$|نjpQ7:apSY@鸛gό,K$g®eUi~@1<i|yAl`v ܄3372Q̍:/ ܨQafnmfnw8ObI&dI&d29MU3$Jv.gne}-&lNRx/e6g^=/e2+~.&*jh$/:x0C:a;t8 >C|ˌ\" @.#qG<8x#qqqqqqXqXqXqXqXqXqXqXqXqXq q q q q qqqqqq8q8q8q8q8q8q8q8q8q8rag>viN vZӆvt`'fl-c|̖1[>fll &u&سBKG  kr1,MkyGZH PEچ**<م')5chMwE^b*Ua* V݉ ۽,MJ{Pia)wd3ZTE^kE>u>Osw =9sck(nkU#ud~t9bzvhc̩ѷZ}'Bc]>tŝQ۵zkwkU><1Z7zs' {BJ)s]E!zSH7?S.Xb vg|a@zosϹ^Cݮ:groYG^W-^SPh˳_wh얱P~jIP؁J G' 8]LʉBx#Ē>ס "-.,TQNz6B}:®%)áDR4LE~J*h8O cOj|r6 R {j4{᦭_Gpd+zJ _F8IzzXtl-BDxRl-*"FEqE_ш[*-#ڎY(Am*Z0^Q{&?'M3+""$'˒;+qROG)L#?Px.w,VԲSj' 3)11b'=AНL"O(zP>!ϊS͝TdW* VB䡴> IWmL`u&WG<*.Hx[gm?^.٭#WG\C$o%;؊[1b+Fb$_x_lX_b9mq}h%#'?@ w"@geW8@y*h-tz/@.y<@4OnN~g p@`@A`ŝ0| \p 6`HQp 8`D.J</ŕ%b^)W4 `*Ur0@sY\ 0`up#M7p+\nNyw 0{<< O< )x9^x^xW^x 7X6;`1,`)@ `G|S+V|9j/X%z _| ~`f_ `ovט`7>23lc_Er@]eS@{N)N!;N!:_[ũxY^&dI&d2yCoHKEƓAÈ]a($G2%Lsў5 nKìܾaD",'rofO90Nd%==dOC==lŃ.==CŞɞNPv==!L2$L6,YGO9 u#q{VaW() h\__oPt#ܟ{1vsc EǡF>S W\L&,*a)~shPJ*u*9S)ѦFfdim3[Id6ӈ?SsC5oK֡F_t߯D'n.S- tDy"k׽!U5gq3p r Q煷ܦZ&әƵ~NG=JyW'Xյh+&e]X[q_$x_ڿPvsꧪyh\}M-kC4TyL_j/O|kQ wC-ʻ!Jyce wG,g僿P/U=Ɖq߿5N1p#wapn%;^.U5eC%:Ө3%S.5y^%ߚ(}`m|jH2_":8 x䝚4ؤ Y Dx;4Ssmǹ)'.Ŧ>tUe.oe}.o ?Z>I]dN VG&ݏ2471C#> og84F[b.cu*%^RWGՖ엟z߶*UTJ˄Q' A iv&SVUfULS vG9.T7ٔxJOWCFiڿD;bp'%iF6MxmD6ψd A%@@9񔧅6J("+jeȖ[Nc!Y*h[2IL+~Z$L2$L2dr$;fI&`G]d[L2ٜ#2^x/mμz{0^x/e͙WeC;^~gI&dI&d)Iv4#T$L&*8ɺd9IG/e2^ۜy`2^x3-UџH3 2 b_Af_ANdɾ,;We' d_A+Ȋap٫gilbSAϾ>v=@(R5~/x/_tx'G^>GeW|W dW<ϾͪpJ#S'!Sq2E~eL[!`TP\/ho rS @p9rn .>1G*wB׮ً}.6!=:d\^1E=dO^{"7P]ݗH#$c/`+ǿu;qCF R+˵ t=ùKPQaL) 5%2@VN-@*NmjT> {9 w` _3-@;N^БN +ILz p @o38  pf `p8p69\n'<\0B p1F ~;GLpW\ pIϻ,q7~&x\ PP ~ `*{$*L?4`5p@%7p 06`]a>=p?x!x1x`SO<,s"2+:omwx`b>X!R@2>`9+V s_X Ko6|=?3&l`+6`'.? ~1\rKG9\lٙ-;eg8ٲdβ-;N p}E[W|L2$L2䱓p=xܕUX0<+&a#jwؓ:0WKͬRg!`G#SUy`%sGdc8U5wUDی<}8~=kߡ[3NmVix:"¯:=j]*Q uC7vDLZ'jR1kK CR/=>qsh 'ӯw6]mrʐ' s5'G$8. [v8tӨLxPSjEs(pIS|_f 3u5PNiyGXs 7O,̇5=^qx=>(,]JYyPv`6]=yK6:*ip)9N?qE49#AJVVqS`uXXɨ+\xGdo\@A2S!\]8xwlXL)+w|RЎk?8}_W7W]3H_uMw R H/dDU+\xy륀PՉTdIĹE 3xjp4 `ť LQ e=߳KNfV78aҲB$i_4s:=wɂGԾJTŻlչ%e Tv8U}+aa!fTZ,.店 +_LO +@G1)׌2iEl|D0](Iׅ:ϡa~=4%c]/]N:>aLVZsPOz h~4/ ^%ay`z(I]b3zO*=L1$=rDƇ~ wZϡε%ЪT<ߴoNիc~BJ A7 ) Ev!Ki(#&j+at ԸIGo\%tZXbiYZ^NwU2XRCe_e_mB_Fi-ȁ|h ԡ–yU@+ 1^5$/r#oiuTk Fπ5%*WıX7F7B{^~*"A>W~.ߌSy"/ԗE[  XqxǍv KP⾣x(f"~A8fF6̻pӉMMQLК mT&UlE!>] {Ef$kͬͅRYܷA?K8N;8WǙܵ?g<;뀯XZʎ{lq='w=o#g\=yL'’^sYhZ~io;lw6]{qnIkBMCGϺ/L#CEY3ie&IyBb۹ry kP,W?|tq%tuϼeuxK_v_P%-7hKuۯۮq6&i GpA\^IBa* NWRF_'5?t0..L)@쩅^5Rek4ԗ0>voPN9,O<Km8%LR4ڗ0](3V]x&+x +eqh$xIhdR 4#źĽHknN)Ƌ >#GWy ӄS{j$&_+*0k7e5¯KO0&3l;8֛oEIuzF嚧à1yDSɞǨX2O{oN‡z9/b$ͣ: +2_}G4ƇbMׯ9h(t3Mv?Hc1/mڼmxd.x]>mڼ:e{lx'/mJze۴y|67=xo]bs0QYP \Aȅ8x#qG<8x#30#30#30#30#30#     +"+"+"+"+"!!!!!;#;#;#;#;#p p p p p 'p"'p"'p"'p"'pBfl-lAMS#jm$9sFR4OhZ٭%yR i\'0K̒F8$^>fI^5d2ަī7di6Fsmnz2޺MviV>_JNd)>omn$eu򦽘$%yfIc䑓Y̒de'$/;%yٴ-gc>̢>0$&3,Gmme[â|&EyXY-ʫEiQ^%i(`8UGIZoQ>IF Eh)Y'lĦMov -jvwGcg\vHChkY{2+\Lzk[htGY§?yqQܜ'tHgy'vH珅a!)g*qZ͛7|<%ѣwu-Csx -zJ }wX_jq߮C?~E(/5Yg5™E1gկ,ҫլ-ҧw'*L2$L2$ [ij&d2QvQ߿L֭o$I==~/e2̫7?e2^ۜyUTsHx-]"1|YcY䓝"dd'';U,)^ȗfm/Y)xL4 S ̒|=FMf9w_|]z]uң#>Y49[}ܳtc9NՃQo5`VA#1 ݪ[&vD]x\4jj gI7ceGD^^szJߘBiTQTQR[ZV($bfVuJfVS>fV& VK'‰H+|B-oiF&K483,׻I&dI&dɆ-ѴP5L2d;&Vַb$2^xos՛ރ2^x/e w6NJNLx oAeWo~>omn$eu=o)}0cë>xoS+}0ަ͍IxW"CAj852žFƾFkd}LvN52٩5,+_#¢^+@Ir#m;JFrh^i4J|Y\F#FP\Ng3t[KE17~c_JxaW&'Lɔ3uWET#^XՇ ]|qa>S̫%ٖ|^.Q3e1(*r@BcBׄ}H_&r5@KQ;+;+;+ȕdM<! ȯ 1AB pat LY47ܮ1U=!LwE`KYHwClJ1#]G֏:~d}]TY?5+Yխd=zG#K?֏ IuXZ״)E3,餔/}_ Si=}9E感L*^ N?'V|)]ϻPί uCzhk9Jƺ^t8}I#r(|=bStZQt=k|4?]sj/<0=]N .JZjG_z9_uaXCo?PiLPZ{E^hO*oZ7ZKUJ892ҥ+X ~x)N.q݂\ zј+dz"Tْy3U6;`DG<'fS9.ܥ)>IF0 g-q n1q{-m;%(nQj}t±h9D:/ ɦ`Qu6 _NGw8}ޗdI&dɐN`2^xox`2^xog'}0cÛ~lxoc՛_۴y|67=xo]&|z۴y+ud/z_%O2^۔xdi6Fsmnz2޺?oJ.MM}|97e'dߔ㛲}|Sv6oBI*߬k&+LfV/Rnn\n\T+Mrh=S}yRO1g_~hS_^CMyɟ5$ͷ͞3Sfi2L/V:H3kyĒb[uA:R%VVx]}GGtTL:y5M7?f=6 JD[ ,{rR-'Wh)%o7QzYH~xax}m\LNŶ ?˲&PqYŦϵ>s>71VljU{J K`%sѢ.Bߋkg@b}X#7$yvhk_uε|^zN:?UONqeެ,C/~+)r󴥡^o޼-ݩG~.9*Ch+.p;`| :}KĻ̵ _vx\%B˕|H93xoekJ,z]XgOCcgOY:xWLzum}EF%CaJ+)5N$8" #i~fQ5aCZV0 NR ɒNR/nXD R͡`PGմ#g8tW /8^IE@ ~a H T1ÆAp9=EJbO-3 'Ki5xq &#Brx=RKJ G<L2K %$,ɇ,ɇ3K%yt0_fII&dI&d$;fI&`G]d[L2ٜ#6NJNLx o~xoS՛_۴y|67=xo]&|z۴y+ud/z_%O2^۔xdi6Fsmnz2޺Uy^́YW\̒<$1K,NfI^v2KY̒lږ䳱fQ^ILfdʶaQ>^f E,բ(YOC򪣤N-_($#̢|,`g6}nb7;n_x#\E3t`x];$!,˽\Xzmf{M &-4W:,ʇ{tkӟn j nrǓO[Z6 =sm^Kp-[su_R.?{Mao%]] G:$_\G\;B38-|v>v;ܺ!Ϲ,1|,NfOv2|Y䓝*ZZK,qH<`@)fIO>n#&?g};/u׋MT.ֺXQlőLF,zYmY鱜q\V(C@ U0nUحJUizw" jً}XC~õR(j]`PGSRXYiR)+#NB#[)h+niV @9rrߣ!*$vJ i{] )>eO v1sM'&@kIAJ>v;'/z\xy륀PՉTdߞs`# 2:"gzIYPհRV\ڠ^ e=߳܋;#fV78rxß]TQR[ZV(h-x|e<wq`T%FsA~IW疔aw&2)NT~&i4ǔg:L桽.!=MךYM.6(Soԧt3}j+݈nu MYjl7[){5Ո~;|C3|%V u+VZݭ@#Etys OύVsn̵4ՠť7.[wv[itAʢj:X~_Dž 5JwTR=J}P( {Jpf9#TN[ĴR ߦ7ofeХcX݈bFR[5⊮?1(w+dLQ s r qd\~^QP暁`sL1(Wl]8e,"Z(sQ/#zuWĒJzJYDlxE1f;z<观s nab~R݈u DeEEg`?8~zةNœK7<1 Dc(EK妯}wPKJ%k|F EJiEdߗU46Kǽ:e݈\zs#KL)rϥd:r+"jGL}t?Sfzo)[=U)[f|צY\b{n){륿M04l|e%1eNA}OL?4!ceĔn+_1e%+l?̯㘲ݺg)_~S';e4y1I:馬/iLW,Mbuʬ%YzƔ~N}kb^MLQlywSvcʓ&c GSvem1eQ׾Sif=k)MgPhELoӧ=So5c.;1e'jѹk2uFxyL١ؾWz,K^%͏PG:iN$7wT}W'Yr:_ߙٵ5c_sspaOs^)oU|7͵СCJ9y7_~%J.*Jm/=mF;}_yCUzwrCs\nv٩п>:ģC??~*(]\op B CXy׹5w|\~NH~OWoA/|Яmێ8 ȃ,lBr;:z1:wĶjSE;t՟!?T?zפGN\5գUOx]>yR??}DzJ1Uڝ^v-NgXHqn+پ{RMΏ[O ܲNk3_}5b!˄pz3󪬹s_%r}A]7.AZ~U=Ж_xjJ <];'\{Ǝ&WK/_xwUf&,Z%g߾uemz,rOeˠU/7{6tDھ>vkubtmfB=<^8`O I9O$>|D$8m[VdtE9lZ`P \eZQخEgyٮji6Z83Mr"\ 5' k$s~FMGONf㋛Q2SբH'L2$L֓ԩgF;q̉S8q#iS&7ݞ_ߍXL4 }a;!_B ԗSb TʊL\N6uE_+zvx" Q1N+L_F*qOFIIǼXT/(QH'.._aA)E>Mކ/7e#ó*U)TyeXJ䪾˩3~LƄD310S$3^f2F _隌I$z2Ć!C_H.d\p$Gp)~BPV707 E`HwI%ei5mtGJQE9\(/ ғ_Kyq" 75%2@VN-@*Nm@Nȁ| B :'܃\#,eE.%@LK<%_OO`[(%^K/bVmXwӼ,.G6`IG4?vB.M+jJUo'racǗ]mP~rtэP,^EopH?{A_ ?$t/ߪEXH*@O;nthX\Å>@?RРVkBOГ[ lCrfZMNК =V&UlE!a<+Z0#حv{[| }{څ+\;$ܵ?g<;뀯XZʎ{lq=')7't'9ler?B^2{OS|ca;͠i{܍sNZ:ͽGoZ:z-w|ufꥷ:(ʚy/L+c6EH:]˳VXbxC.y{ Gg.kwd[w.j3}Gv|:xWm׸<'@N6dQ8vQቼEqWSH+'F0 Xť%*o.UFV FڎP<<®%Iápy%W /8^IE@&~~a t *טzaà{apRS k4"> ߺ/z#0^'6hrUh4$+Ҟ9òTqaNegN6Fk&beDD{%Û6vIBP% J:/ sJ>jC2ynwPW(* SApy F.`w @P(7?l3|L_8$*Nu`tWT5>!(~Z&{g5|^ȕ\"W+ EQZES䗊\ \edQWUiT}M[ӯSoLNn֒bS y}_P*zMz]/ M.+W4Y0Uߪ R F, Ihc2D#ruJ$7wpR][dI&d9Jy6li2wɞ-lHlInQ[g([֩[lh:ruDE1F$:KxJ|oׯr8EgɓUQ'?&o=*#NDmȍeT)ļ{ JfS2LwɳMp==pKF:=d-u=k]gW{Ћ7jX?T<._}b/*v_gL~%=ՆN'_S;QGX1vMRmaRp8븢=T{hp?l&aFP<%2qA?2yL>@<=AX@=ٕJ7Hm0 . AUXX 3V|`-:/l ko?6W~;~ ?v[n-҄O77Jb7Aȅ8x#qG<8x#30#30#30#30#30#     +"+"+"+"+"!!!!!;#;#;#;#;#p p p p p 'p"'p"'p"'p"'pBfl-lUfl>1_ՀHxq|^5Bߧ#~E7 =p~_?= tDy"k׽!U5gq3p r Q煷ܦZ&әƵ~NG=JyW'Xյh+&e]X[q_$x_ڿPvsꧪyh\}M-kC4TyL_j/O|kQ wC-ʻ!Jyce wG,g僿P/UoX=Ɖq߿5N1p#wapn%;^.hhe=J,|.љF(Qx]uQ+*DkVFtAyPeڦl92 a;.ZW@}bOyS6 |_Ŋo\YhD|I[Xr=_,uWśq)~8[vQ\ 0 N  &o;+Q IF*i+85+p*^KUgzeRԵVZ׌s= C%ې/ wT:ƻ/CNX) WVq.#|ja8V<Qm1~}f(%vTJ*_39Y+;Bs1(5!fi)B?fVYg0mpکe9#2GJ.-5y@qX}nh#;YIԋdwu)Db4o݈ڍ"}"r'jR M%h冡Zt]9x4;^i? e} 9͓#~yG|}Ҩ=MJFe3'MLmDW-DK84GPO"46S7<1UH՛N_KS+o&='TQA[rj8QQO70l⓵ >_CljCWDnf5M gSʱQ"%OϥGF);I&dI&dHv4#T$L&*8ɺd9IG/e2^ۜy`2^xog'}0cÛ~lxoc՛_۴y|67=xo]&|z۴y+ud/z_%O2^۔xdi6Fsmnz2޺v^v9;fJa;{a%ꦴm E@+\+Æ,STAMdDN,?N[C 0:i(لPaI&dI&lbMU3$Jv.gne}-&lNRx/e6g^=/e2^pod&$[1^x6m6hnMO2^[.ރ6mJ2=6zW铌6%^2mڼmxd.xM9lɇ:a+tؠp*c~r#\f leG.r!qG<8x#qÌ8̈Ì8̈Ì8̈Ì8̈Ì8̈Â8,Â8,Â8,Â8,Â8,Ê8Ê8Ê8Ê8Ê8Æ8lÆ8lÆ8lÆ8lÆ8lÎ8Î8Î8Î8Î8Á8Á8Á8Á8Á8É8É8É8É8É8#%?/;N3vZӊ6c;1[>fl-c|̖1[>fl+!/EXRk^(FCK SJ;<2PʩjGĽq XF {h56lW&2j@uR?b <9EG^Dk2]GE4SD)ꐃ5 7n;նԸ"sD-GI;yJfזJyѥKTxt@4Kx~IGB.I)]RO¥5a4EHU2ӄ15a&a 3zG*ӂٜL*":2SCN ŵBjIDz,dX\ m!Rc Hg O:UJZ4qؿh,r)BGdFȞQ2G9Ÿ~MvU~jԛ\$_rj8?4L%Bih:'Z7\)بr `BԊ'URb4&mN >DդU n &B%묡EĽ%,+oX!-(aSxv\6gmcuM23 ^)[grE1e?YcǔmuP|LyvϹ/bSvz;g2gȏScbʶǽX1e {Sc߮=l2˘k/O)7~]ژ }ڌXHLUcJ[_,j9'lBQ3cR}ĔISfu{ʓeƔZĔ%i).'ǔ+^{bʓFlY2C7);v=SoXLyAJt ޶2໮s?SOlc._?̏)SEbqC=SңSŔW/);zd6ǔWdf<˜R1\Ĕr=KySh&N$s &NF9ezz4/č{F{*](Iׅ:ϡa~=4%c]/]N:>aLVZ1)T:(5f{C>. 9EjGIX.'JnX kS|AS I#u:0Qtx񡷟]Vssxz=GI"~/OoiF7A|XŪ_%Cɮh >o)URaP+O##AғGI\lX:"B |T^&Bc łO{^_[d B TW(n=P]Tw F[KApfk];)w}V =_:8"_ױpw5yXc_5Ycx dcM¶Dj:1`PVcU[n%0?sb"mQO$ܣ|A4VI)P.xBad1d*;6WʣUGwD*G_%?XS,冀( {F-{Jy/mjJk55V1GQH=|/U {"/"Ɵv&iSű`;z8AéfŽd!,cxEq~pUJj.ʧsbك/Qs)U*|0JJu~%ϫzyUEG7yks,9 B^e?S3즵>lŸP,{cfw]!x:휗}7v'^j%m'Om1BufC?~ÍyP;B{*D^}?u-GsmFz{hd%H~yWG%7.uЖ[Ё?v'e_ɭ`"-gs.}ŵ/M]_ C{>Ӳ]s~P՜k<|8?T<{:nIwt'hs:7UڳVo,wvf{A7ެr̼xf_ehM]L~ :r%oZk_w[Yܿ߁O֝uHY-UYŋl =mJξ't2*yt?obvUnjq <yֿ\<[)iP"g~4?kzw_qzU/u}U>|9u()ƇNJ+ZxxDžu szkP\8˰J׎gz*wz_y#O I9O$>|D$8m[VdtE9lZ`P \eZQخEgyٮji6Z83Mr"\ 5h'N9q'Nr}3mJ#۳і@뻑_4 }a;!_B ԗSb TʊL\N6uE_+zvx" Q10'hx\QR1ox5K+JM./iȥIó*U, ҆꒖q^?cfϙYr(fHsdf0Dak6]D)┤÷7 alfHah/ҷ Ye?܎\0̐"Mc Hz X9=jeRGjceiYzM[;ݑRTQ;p'/ĥ<8@zH +d' ehZ'6 Oy F>ta tXvp@sC|ˌ\"M [N+u{PK_:-*yY\nš*h~{\VԔ^OǎCF}bvO"~]7`8sf=FX/+U_oբ ,O$`'7Yr:4,zBF\BRhthPO8iiR#}Fܥ`46Ak7BەI7E*=Blsh|@(9Hzk.lf%/F3Hg;Ǟvs I.w~$m:૮ֻイ+ۆo`g{\Ig~ :Gθn{hkOÅ%:ЪקL'ߘwNi3hmZwܪքssћևu+_r}zmGGf ŵM_ίxs)k,,֠Xly#ЅnKyYZY쾆K~ZÌtѡ`q~5>o7P6Y,pxx"oRT4y! KzUY(뀷ԃBSأ\( HQ gGմ#i8t.J0'+/@`AS:ltݑ# bS {jdFćv;kˀPx2F Z%L*4s H8[Ji.}ޠR?/ W+ՔYzL9!z|-T{BZ/+L'W=8 uAvR,P+a6 "b1E ފ!nVV٥:Jލn7ynk.OݐpPr ¸y=| #vOEp ?g;e0u^)S/vtw3fL2$L6G)2^x/M2^x/mqVrd{lx/m zKx6oso47'/ dOx6oN^EoIx^6m6hnMO2^[*o܋9dhX"nvLˎ\B<8x#qG<qqqqqqXqXqXqXqXqXqXqXqXqX q q q q qqqqqqq8q8q8q8q8q8q8q8q8q8!GJ~^vc'f`;miNvb|̖1[>fl-c|̖xc6l4{gLc*ٗ<'#֔tQop\!Fʒ %HՖXYufOGtƹa̍\:a.bü^{vn#='Wh)%1,sCI6dkB$0OMMAZ5: 0X#EyeQ~bQ>[(bQT(_e\76Kz˾_oʴ,˿Ȅ3 WJqCGևCΧ 擬#S*2P)ryrH&Q~\P(  ǩ[L( 0+0hG5V9"t"SΏWd';%۷X""(Mn(%vS3v9rߘGN OQFpN5[aR+ۆڐL[!`TP\1BIns[ʏv+Q|q;6H9 ny^Ow0Bi2Fqw%`}}BQLj{"W*r"?S\/FkN_*r"7(r"G]WW*Q5oFo蚣zLZNgv2;8[ SIYP>/h*+ ˦ =Ai!pLR jQj5Lj0U[Y_aY 2-\b xJ]zxrzO_w?P(x7&?o*$_y%V!$L2$L&OʳQgKw]gKru5["5[[ge VuP,p֑#2UEdIt@<=ax>s\@Ev RdC.@ܥ+nl.0`hqk,\w xr)\ .&] p`8!0[&x\ PP .LgM+LY\ 0`up#M7p+\nNyw 0{<< O< )x9^x^xW^x 7X6;`1,`)@ `G|S+V|9j/X%z _| ~`f_ `ovp`7fB/M(+9pwV{7C)v-t1^̨njzI.fԋNfKv2^1^Q/qjWv2&dI&lR=~.qn҇o*OVD{—>SۨmKS,q/R%=KKVw?k 晹6I oMkM3k'P,ZwCS,2Y4k^߰@G31zqkb?GJw$\АZ5%zX6\3Z}9Q,>%RWUFwF$%骃15M2d 0v\ɵ łlAB6;u߸Јo-F n1zsYP.ԋ7S04tea$(&N?=M)nV %w$[SVqPp-j@VONUe5ݽhCS aHG|/k! z$J!_VЩuwc_V1=6R@J,*+ ]iGԊp­}y(#b-b$,G1JJ?PJ,Tw+fr>Ww*b%QjCRPq/~ͬRg!`G#SUy`%sGdcяP]k3Zj*XU27FvjJө~PRWZhV'E D-,OԲjA0#kK CR/=>qsh 'ӯw6]mrʐ' s5'G$8.Q{$Ag O:՛ڈ6Z4,͑qؿh,/4E(h%loȓxbX7bV~LzN;HVBpoa 1'k!}؜Ն8kkΘc5D?3J( P+8K1S8&dI&l2S=/e2^ƛ<^=/e2^pod&$[1^x6m6hnMO2^[.ރ6mJ2=6zW铌6%^2mڼmxd.xז -9G<)&[_o2olSP(Tz}^_ _AP!Qߜ$Mu d:)+ jo,?N[TC 0:vfx; +dF L2$L֣ zx/e&Wo~zx/e6}8y+9}2=66^%`M7osӓo˧`MRLx Ur$eMWLx6oso47'/ ^WDWD)Ly*:x0C:a;t8é8yȕ\fl-l9bړ#>Pў-B0nś#G`͊HxH!ZL oU3F>MG[io'dϚB;. YE)#p*}7[(?r(rj*tICR:Rɫ I/b#y tVMwU %ݝDJg(~T#E8o {#=S46ϫQzZ5:hQTFq%>l̩%TlVE>Rx^w#\ɑ>_#Fs^.)|E*NFx~Ob>!z|-QX#٥Uj&oW5:_@vR,WP J` ~Vi;H2{>3 #AJVV )'j;]L*_g&͆]&5 0MyJ%VB_(z+f o,RNcil̲:b`?8~zةNœAӦ<1̄ 5aCq;h>@Uet'N/)%U`a aG9y;\OЃc qy'b"vZR*OaՒ"[|2݋ɉV~Ew^D}cܥ"``Nb~@Nv;rXͦЎ(yvD wI5,UM-RW!`G#SUy` sGRXs5a5f4&Z}8r(;=$ThR4!kovmq{qDZuN̮-F6 =Kvht]RhK_k)hd cjL @fTG 9.UDtdk)D˓XȰ$*Cƨ*t2M%hN#. Z)JY7ISvfGZ=+dLr8'M?IIԨ7HVp#~iR JJ'ҦtN)o@RʱQ"7T%O<hhp)LƝm|Iz vMlc+YCŋ{+XVnB"Z$,Q\'\ngw߈)SƻS.c1e?D cL0g_c'~E1e盫(ƞS;"-ily;Ŕ-7nPL"v5<[kȍ)sgKs;Ŕm6?k%>}cJĖZRxNL/\Sveѵ}w[.y聕c]4nc߇cKygKc˜ǵ[eLnȒ?VzgLٶe{߈-_Obϋ)OvykL R_)[U_L^ywLwnb[gǔ>x`fOiLiw1Sv<)kkSv}oMKbٗ_μ9llg][vXu[c{34}lO^;=u~L)㨘Rǁ1\ǒx#ڼ mj.ɜ8exfNjު q dyϞh-kZlMu*Nc!{yy2t}OI&dI&Lf4e .sIiĐt~T9"Պ;yJus(_ t?GXK;iCX.寕V~t>G y N+4ʟg~ސApNZQ߉t%V;Cw|ZT+_rCk]/G>L9k|0}*>՟i\+~QR @[Mk|Fzt0_>V~W o+*C+zJ-pեr*Ȉ%ldp"$vd4PBWl|Bx39U~A9GqTdW* G]ŻRP+E,܅`NJ]zn:zϗNȗu,fsu|c^c=.Xju|mX(%Xj躰-NL?+}ju՘CՖ[ 54LH;Bq[T|# (*n*iGu3Mi` "Pt 7D/厍Uxh]<ѮJyƑW{j-{j=#QRK`|iҡz'x kq Ua|:`y{Ԣ=(oO"KUaH鋈񧲝Iڔ%`q`;vxPB?\c+o͹$ۃ>yNo^Ws72^2{:@:ڿ/YM6Cڱ6ם~Ϟ4vi[xCַ__v-@gP7ߺE?"TZL.>p,?D'L(. 0~\ϗR4Y]L2$L2"UEHn-SR2A-}Z0lsBO ]-D(~lW բlW v4]-ja9Z~UUUU=*z2eT-X{z<mB'~<.{H'6i|hKȯtOk0yK[X)1*JMeE CbsD/ŕ^P=N;<{~MHe4<.i()7%9v O]\l5wkJs8\ 4\@䩸Tkᙰ\*'^?hb* sq^S4x135LMxL?3S 9E235`fjyx#N_9L2$L2$L&Gij&d2QvQ߿L֭o$I==~od&6%^%`M7osӓo˧`MRLx Ur$eMWLx6oso47'/ ^Wײ2dWE~-yχ:a+tؠpBYyȕ\fl-l3|+bD<. HNP.ޣL<|+n4MYMLdtnrݲpTD@p M,ʮl({/D;A!]O.9 Hft%#OiӖҁp:G!tPm ُ.IT&k!FDxs2jhIۢpE)t ϻ C(V8HQa?@v]Q/,?_A5&dmV],v~J({C)'i(p_uBĔd}e(B{O+O >STsTO@yWJ<ƘjiWZ'6SP=:ˮ'QISz&K톚7eRm4Re5s]WGKr->OT%%(¨wA]Pɂ^S)z?.7xeUk*W02J!y')Tah(c#1cP zd`*FD*i8Ye#{E4qk(j88."%]&{ǙT uAw+|'y-E6&qfa]ݞTxx+#<2't{N#ݾh}~hyGiҙhr K + 79,P9 5P@6@*UB{UT&P-@u99񁜀@@.@@n@@5jj@Pc&@̀j ?@h.؊j #P' tPO 07P _@!Bt@-@ BC 0/ (h P} @W@0@#F $4hx @&M4ht@3f4h|@ -Zhr@+VEZhz @6mhv@;vh~@:tq@1@@'N:tzt"%@W]t(&P-D@w!#@I@O=z%+ׄt@} Ԟ??COXYݷl٣Cxq/^xq/:^ ^ Z z:c9\oJީɿtM˓U i G{Qot\`HO+m?m3yggva"=0 5S_r(w,Ψ?wȫl;*N"~EF~odyBᮄRki*\#8D(Xp1P3"FBl7Q6QeQ'N]ƯTj?(nad~ۢ"UyЈH`_P`Ɋ Pq䥝+ho,C籀)LD$m0ɭŲ?Q{|e8mj~DSc#vIyX>(b)o-R9%,4HDH5@)jeZ!v6$ی.3y\9Ҷrm+YұShfUKQ&;V%Y^ =4WW' zq֜ 2q:&\ٺRA%/*&]<Dr̹F 2RڴKN=JvkJ&+8Q?˹EoH_?r>dIIeR{_f 6QgICyR8CNgghƼ4dzj|'xI'x?'99;:<%!<ϦdzA<^ijA<^ij?t6/~\9c9"kR)"k.=:$7IM4$7ItI$iI$i˄9c9IoY3Go%)4G()_8+ROC > _a',Y/p窜OV=ĵӎs,,Pp}G9idqh@ȥ 8E)PIb$vGIl67N9+\ $RҸ2TrU_w?NXLxN](> }bN~?s_^MCEM{N;oېޟ?}LUnu,=CPR,ee{dt潀^)f~@]1䕳WY?PNۜb4Z1~Z1z/rQP늘b/_ y,f~o@~ob\W]R?Rjբe'&9~r9379~}+uyE/ryltQE}N^rRsWnn:pt+t9$mMC.ywӔ ˙yhxhJ\tB(E˭a=Ŏ+T`*<űEJBE_ GZNҧXd-+&(ԟ~P [1JvЕ:q#9A4}:ntBe rQEdF9= JOkaz/4Vi0uŽFw uT_30šEXZ߾(N (J}딞? QY6~G 'n|%*iyIdL]Œ 7-%{̋r/P}&GGj{{.M+ͽH<ş-_ݥaM*'ANt FQ JrX]0)7xP#&s1/.>~.v s%QbB5^MWq5_$Ÿ?qn\UU_T?1ǸoUqnp5;q1| }DoR@#H],om(yZg-K)_8(?(4yT_b.IsoJsCd)m%9QŢ] Ϩїs̛E6'dc9c9}Ĥb98~unaU=Jb?WLKܒUbܿ WJ7okĸgtT=0ߍ+Vq?ꋪ'&TM>0ߍf'1.?!CP(G:Nt@@ pnt]9:0!G&gBNLH reBnL3|` >g0 3|Épb0 'Épb0 'Épb0 0C` !`0 pf0 gÙpf0 gÙpf0 Åpa0\ Åpa0\ Åpe0\ WÕpe0\ WÕpe0\ 7Ípc0 7Ípc0 7Ípg0 wÝpg0 wÝpg0i uG6lЉ ؠ3talЍ h,#Ȣ9h,#Ȣ9h,#g,Eh|ϢY4>g,Ģ9hN,Ģ9hN,Ģ X4&`,EhM X4̢9h,3̢9h,3̢9h., ¢h., ¢h., ʢh,+ʢh,+ʢhn,Ƣhn,Ƣhn,΢h,;΢h,;΢>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶDiˢlBwcWNPιfB#"?axdMu^)FgU.UBR7B"]-K[Ŝ%=irB8k%C`lcl > X 6bTI]N6+ *=(Nn#dycto|UO}0SRIMEr$qUYxQ.ƔT>s$Y~&JOQ7wqCνS9af˷|^"RR9q#de'gpL,9N&J4p]|:ܢ+fq =rR$iFdM!,.\N38j TIk&Z0'Oo+&EyTB mvACh]7Ё& ɳ}Jo?o/{>O՚<lKȗP4:wE]! ‡̬(QXC>1")r$QkAfVɇ:zyK?V@ɏs9մsBQ֬YpeEy%҉_“ Sr%;9 |fҨM4+QɏpPC愪US\MN(SXJ@(JQr3&z;-Q[IJZ%֥DrW"֧ع(Z+6B9!cKX%!67:"U[* bL%SQdl83TG)\Kt-jK#kR B~S`8Fp˥%$dJKQVɘ *BҮo#b6E\M QIGƗ!GO:lyoWAWuŎ%xL)yl$/9kZ)Y-9DbY>((C U|"aHŷ($Y˸o%$ۂ&o61)y8Ŝ $pTT0Stw>9sSfIߺs*'K48u{Corq.{ F*r.˼_95/Qtj+ոv4r/C6Z(7ת~)Pn62 q ,W 9ByCC'ʭm,ӫqBofT;Bag-'-w><4B闔&j/[ V6tyP^]5^jufK9{ WhyPnL5^fE Ӭui֪qkkZ(X>$By9jj\{zl On\(7mvQԭPnuN5^j\*r UT :NKqljHQ<'wzgE??P`/w>$c| %uc,6]䆡\j̙sν:UX3UZ1s1lj<M~]D?3u3WO(7.˧'|*/7)ywy9.^yrtz+O>ㅕW>Vre#,]eɧC\*wD7'/y\rש*?%MYe啿NWU{_XzWv`d AAAAÄ>jPO?|*W%!ߣ#-"ad(4&І&< }B)c# C"Ƞ@P0"W4PC({MCY[]D+v|M2S4ȏ${xq9qSr +r}Y/Rt}uKO?O+wBJWd[K5(ކN}Ԥc6nۮɨؘT\OȦ3e1stsO,9e7boOޘ/G^B~<8}d/c%79%hCd7s vWSזLXL 'vM.y;ԘMyU/|T|#i*[/t& O>I<&ç2g4ooDy7i64't7|0#w>*Ack'Lÿ~e9ipMH9niL)ՐL/#u/1F6;kي6 e>3<][DZt|zt|ѶSc^̋'OYə%>>?^Od`frwPUNC'kο{>&t[nb^LzXc_2OXtqToJ{^T|*2|ۭcc6jwZSLHucdQt|QGs95ɵ#)M*C"vLǼUplSH2ݦy꫞t|t:9^FפYc>>w`t}b$d2O. <%ԇ|V~I/4Lli<.MhN&6sT%Iߟ9/MĤJR,OIזINn[,ugu} RffzJ~Sji(])cGof}61%/sy,)$IQܣjI]-此iN~mbz1P O=3n"'NǓ7$%tI~c)DIt|zEC])NO1\^p|+)橤4'M*7zsᩒP:M&K-fgi<,>拤޽drL]oTA|.~I,g_= s1sE.u rd +[I%'i$[>)F+-EJ? n~:y=04aS O :0ʞgp#óZgxV?3`ɂL-NleUhBy (vɀPFL-^;WyCRRA<}Us&sHN܋Iɻ# k8i菭*%Yh6#hv޻~@ $O1s1E`\N"XǩfI:N:qʣ(n&"~鶮Gw,RXuJK +?7&"*&,&b`/+CL:% /J>PT~cFmM^JBjRԵXܼb DJ/] å9Ң⪸jъ†;&yuXq7E0Cr-VM.N!uTKG$jkc@NT?)g0 3|Épb0 'Épb0 'Épb0 0C` !`0 pf0 gÙpf0 gÙpf0 Åpa0\ Åpa0\ Åpe0\ WÕpe0\ WÕpe0\ 7Ípc0 7Ípc0 7Ípg0 wÝpg0 wÝpg0i uG6lЉ ؠ3talЍ h,#Ȣ9h,#Ȣ9h,#g,Eh|ϢY4>g,Ģ9hN,Ģ9hN,Ģ X4&`,EhM X4̢9h,3̢9h,3̢9h., ¢h., ¢h., ʢh,+ʢh,+ʢhn,Ƣhn,Ƣhn,΢h,;΢h,;΢>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶ>kK-ᳶDiʢJh^G֔EE!H|1tFOԑJ_A bf1H] )AA ba1Ȩdㄆn GDH/ svcG_ikEq} AQBُJ!!!հsiSsCI#KF\mqf6GݜQ d ~{. >(ܑؑԑ\Ɋ#@R-.:;4&!@=fWr5YCfBc,ߖK97HYV]_"o8]/TA3@,6UIϣk D 2/fR,3׈M1$J2Q>,̌^bu0̉10ue厣\w~@>~:ʜ)4^6\89j_ۘo*KZ2\}?ᇘψ&QO&_1clb$%*1ZHB(_zTN7z'`;\3s)]݌SQМzrv tziQdoC+fC,1(sB_ⲫ$uȞ DDP`/sFWSGl,F*&2:’ܑ4tKiKB@8:6G$*B؁vDŽG#"PA5ZmQ8 GS~ PH.m-С=bm/ŇXFUg5#NzK\.k#X0R*i^~xu$|' ZfHk3ǖ+9 #euvJYro""#l $ 0걉H;Gڔ-vS$GlKiN ~wI+j!lVv7JwVQhI0U;'_2~I/*d 2~XOrkO4 yK*Gu䮻DyiLlnU-T ?d5@!z qEaC}*M~aˆCm/VN5RV?(VHUxoX mBmDA `?`JvWEH {~?}ܞNIh<8kpn)jwi/1UYc9cyqt@ogڑ$%-IQ$osK%i\(vڀl$jAI׎TO3kGJroW<Ղj\sdg%߬5ŷ\e 9Ϯr(w"Vv]QuRH~[|qW5uVj Svɣ(>&"WxL?3<-fjq^աcargهAT[^kP|OL|kI]c`_Z[S>{aGu6gh:o%R\`KD?OUqI7u40E ,5^xB~Wp ()ah!c#1GP zd`*FD*٦)zs2n-w_E{8S[w8J5HNpE$Î$ά ۓJs`e_ni@-/:(Mc  SB:{fAH7B!BYUdT 2P ߙ-P5@5j T.# m8 C6 P}@ Cj zxPs@-ZD!j =tB#@݀ 7P _@!BI@-h(?` 0( (h P} @W@0@#F $4hx @&M4ht@3f4h|@ -Zhr@+VEZhz @6mhv@;vh~@:tq@1@@'N:ty @.]tu8@@7n%t}@=Jzs@/^JzCHg z?R{*hB s?5gvseMGYx,/% Yt/% A /% $A@rMSt$1s1?J?*"S5'Fj~$颹2MV~?`o\Dp{`zk.ŠJEsQYQܑW%dF):U-E|$]9|/UFpP+D]!!b͟g*E  C#oljVoSˆNȍ_ՒP:Ȏ~E)"A666#e߾K;AiVР YPIcS>#Y6MI`4[)eJ-]qhF$ ?$ VrI]Q ]<""Wʚ*rODny[mD-Hv.Wi۸öGT@Yb4*RZťLYZ䒬f/՜W+_UU58c4@ad`߈e.Bl[)a oa@j[.r=<"Wr\#u)JmإRJR5%(xjq6H\A7]9JrO2)Z i罯}E3QƏ3դ<)'33b^?_Wi5 <[ D~<OD-O-g -/ -/ :[?s15)u _tAu ~]_5u ^wwo$&Io$:$IM4$IM4]s1ߋ7Ib^D7 #xN}!M /p‡0щ,Um8asU' iǹK(lQqy4 D^RSR|Q$s ;]$6Ü.Wjji\* *\IAqWK'p%X<.~Z>1'9/eHJ ='읷mHϟZ*[7:U!Gfi()bz^=k:s^@~3W~{YjWWPR,(UemNTaJ~ezz-=͗g(f~o(I_uE_|1/S'/tqeD+H7^@ו_{nTA6!eJW~ԃ<4<4% pU: 0b^"%毄QreMb,ȖhO?GqYm|- k%;JjΑ sYgpdP7:!̲K}9("j~{rAe5d\B^K4:AahJ]kHS_+xl/sC:A$ uHU&CZٓ(jrOr²ї4 'BI-Gd9v,ǒk-d9EK4[Q#Pot$p.hHY,+3:M+NlnLH^#;z :HЈ"X o_Uj'UZ>ĉuJUEф,kEq7JW䴼Nw${FQrR.aMτZ=LJElq(>~#Rwr&^$oϖ`/0& F \:ZrڄFfԿ(%e9t ,.v} q Tk\eo['͸譸荸mM- ͷy.g,Eh|ϢY4'͉EsbќX4'͉EsbќX4'͉EhM X4&`,Eh͙EsfќY4g͙EsfќY4g͙Esf\X4ͅEsa\X4ͅEsa\X4͕Ese\Y4W͕Ese\Y4W͕EseX47͍EscX47͍EscX47͝EsgY4w͝EsgY4w͝Ecm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm lIޥkK?^ƯK;W 7 =k 5eW/H7-GXV)~BG/K?IY`uG~^~^+K|y }y?/Aǩ*C-->TzQܲ|*W"a \V.h 2di=\N)YW~"ILΕ`av{r\/o=pE$QBčTA8T2䰿'=-(mt!p* swrq =rR$iFdM!,.\N38j TIkf=reڤ(JHa-š4x@HԖVoXߡ} fCOIOY>A zwE@KI7!hY6N)sήyPxtEA-ArrϗzXxзv{|;PiYriЅB ZB#EaA!$ kҗ B7J_N)wmȹ3_jg3NgqYH< #l=i4+lוquxվx͙x8GkxrK˜XVm0:f<Z (&|ƻ#]^#$J7>@"+c^ KɴUFhDP"[ݙ xbJڕ07L2kՋl MKiT8| ħDJ /w.?.4l-{L&(KRͣ!s/dI]OyMP;?,*rts/2-_֔ }wRJ[8~mFHyP-b71:ZfbVUs͢wRdRfB@~^<\`PV.9A{5ubϳ guz{A:+z6On cr\Dz0v.ySJս#mL|&[چGʨb֖ _h_nU!5$1' [E9g/րjՠz7CPwt|҆@U qج-PlOL^{пtɽ6C^i~lY#{S _)sEbʲgs~;iQAU К &9.!(Mj)'ɏsNݿzcKmN ı-A~oj]YOyxxaz' <ѣ@7FB}.u] mݷejtDt/8P 1J}5 A^߸+QwWqA6u: {wXnpͻad,AՐ/wl voYǠ|G'^'ݿ6<;H/ }gU~ؕi6\ .d*߿q7ka<75E>7]|([lH;q~F(}dʇ#[B,95Hʳߩ谲VӴ-_f>sn zÈbh!6;\oC;|P}Rd1eܺ гjd< iվນ,n8^ vmW{mEhRTҥP6u>LԞ-L Ѱp1(Կ`O5D!PһgU@\뚂< !}Ϋ@NM3/zbhչA_:z?/*/w$x#cm)qSJhǏ}pY_^.z:Wr]&Q37h&1I984d\7k؉&=Zm$kR~Ĕ;쎠_tݝBՁL;az3t,>m^ۡ> .>vrMKУ͖OuPa Em%NP}76TLYWoTVL~XN(A&T8;ә~%_O@;_ a69ZQ~]C;Mo<Cxd>sL3U;5s=7)إS~[A:vh F5IE+&w(]|W ~ 5OͶM!CW葵SX/^Y,u~4C-Kr>psCo_{%$4;YIA_fB7ܱʻ;0=o'וF;k>x8_xѼQ/iGAo_AVC ^9i3=F wrg~v0vK{Aުfr>M=u ^w[S2v ksSx7M=NLG,~ coӪ~zc_VƶC|ǾK,B}' rOpл*vzapՆ`-:ڭvs Oo꽂3x!Ōoz@Wj_lou8p[ 2VЃԴ{B{+[&='Bp S&`!6ya` ~ڋN&Z7\bA710]IwMc7_2FL6o)&|H|F;mmxZ-HB ;pNd<F^WY^}06=>Xzc zzBv1AuGi(}B ?09m(G3>} Q˧j=c}g1e6A.Fb㫧\m{t|-"NU R߳>+ rrer7Y}s>7V,e.C W~&Z@4 K~|ì'Z$֢[.m4~ OªZ31yo>G]{&aWBgKmy-J"J[7<䟛dcgm# oG4wL%-f3OܢQj/26-|S YAիdtw1bJ/ΈhNiSl}Œ{Խ Sէ:T":-9]nzouωKp@zl\a'q9(o`m7 -^>Y?vsїf~Bݽvp}og!`rzשd'߾Ggm@~U#s!=v uc;ߐ"tH$zzn8C+۵]FF]u;o5/$ʞ>RMÖ秖oB_ؓTv@]meϮШj!d&b#]iK(]o~/?2m םU$/[ ʋ胞˺p&vL5gA5eAz6|&O0gW;f}J,3Zm,Xw|˿sޝp;Ӕƃ˟<;\yk&Ē&?-uRh\sF9gCL7,v_iYՠmgQmJwY;)w⿀>yi0͆ v<|'dC\vljR /tva0Θ n f~}Axum*VH I0HYwyp^g8S#$.R:by;>c6ԯbH3M)"7Ǟ(71ݻA`gs}^y?5ad{ub{6sIGWyY>K/oz1 I]v!'w(~'&n޴/rv*+i=9k^GA;EO$_+k#NԶ@{6fs荞k6MzUXxgp];S>tl '5wt;9$\8WegWd[ A?A==_J/9,;Jͻͷ ҡ5Zn zZס-vn440 mb/ى`g658Ky3> "`mk01tۣOh UBo7'8U ~0(w/Ҵr26=vְ/Nһ/C,]>7@QD.SFe =ԤM銹|z1T ʮ~wou1*7#P> zK͵7~=y΃=*?|7kd7Tz~pl+')/3'T;*O|j z%z>_yUu2Au˔-'՘vn>@}=s}9U(6ø\󘽕zC}wC^3h0{;h}4h\(Q׵`.M˾6W&?ぽ/;gψVbh!-سg|2FOsqCMrSEMaoMֶ͡/ȵʄ)O]+7ISgC tԂG`yjYz }֌&'B{nUsgo m{ y>N z1~wh~?s _@yºB;_mrĕZ?nG5g48mԇ;Ni_sK|O-׬V-b/7r37}KMJ`+z{Jmxpap}zKBKh冺<ۯ^ |C8hmeOܜ::ֱdj륢 ̈)G ê:H|^}0vص#'?8͈nw.ߥr͠?Of 3-`x+\R}1`Z+x ܇>)B^i]CU^1ҡByh +;~Γ@{|jpUk_=q 5`;c//_C>Fw 5[!5% ;@?3;H?@7Gnv:ؿG\Ǯs5S.|^ ~\aPq Wo5Y jGO2vHmd4.YQKvX6q؆N5OI1 ZAJ;6vpVwVv`sݦg{4qIwgg.;Yg}Y~1u.`/uܲ˷~<|_9m`|q;JgR.H xy!gجq`gL Mq{|n>ɜwkAyZnAϡd*s&.{DUŔŰ=YL?g {@viuL4ḱ[oPAKs:u>w^U%:EӎЯe=Gʱ?z?6CbTF`|=t-pqФ;[S@شL yW!о<&6~P^]֨ynfg\{]4@[~Ac(hWyA *8x:Z^?<uIFmͅ_WAVjW}7}Dޯ&{ ]bԷݡ+*]A]~b[I71v'v2tMo:[U!z[]Ÿp8z둹C xdp=Q)ynĜq22ec%zti#ʥCl7Хd~x\dV'rO߂>m=5pQf:objl< v4/F$ o9L/S ł.9MӞЫk\9=dZ7or-}n{&Ok ςjw΁|mJvz:ȃU5^51\nnp=w1]Cv x Sg0 NS'u]WӃ! ni{ֳO`鯘R\5;T#jaRo,4h5וdFٟ<А{  \FB=qX'^H#p /XYF> \\MT6A&iU4kH2ofYw8~ .=b[&ȯOI3A=D\: [ .-?{&Ct^_zb2v}NsJXi&+y]7 =ϙXk@}TrhZk.%b\jv[, ׿y\cPbmX)@?F7{zx4\4'j|pZ^ v=~¨ڷO_roki.9{+ԓz H׫6Д박r QӾSbK{1zqu;Lykث3Κ0EĬ+עzq#-sXֳ0\mLW{UqƊǗLz֦HS\qPO3Bf|_,u:"&?doh<c_&_|]A, v3o//oH *9C֟у(E+Ьw0t%l$loҳhcZq"ۢܠ~7K~ۗ Sx&צ8޽`×M6<͂q|y'\ԥ {_>o=g.DA-wC(ahu%'-w];~-b%ZﴗU`p3d,h;Y0DoZ)CUjC9-Vwsu04-~z\:hJ }?yWH`gN~mn C+u2`.PzS*ԻGsgT=m[ ȥoG{piQg[4G:vzKhJe6۽z=u315/mB} ]צAkC?jx342IsU=,6L;t{Oc8n?3C̛'ǡW1{Z?~^ #`վ!];-wα7[<oV)G"w9r{ VUߩ8,볆VQ_ְ)f*ůzi%(6nm\׃~5tC4EauߗF?coW+]ɌK{ʵ#ۍPe1dV'@Bւ_UP]VȞNӪ v*ѽcuT._/6tA^˛3a^GP?y?F2GIЮ.l<,d.{l6J T?OڡWgYBkԃ!t髣ྫྷO6};t3cVm#2WjEП䲡o.ml9>m|Jhw7%G.mA߾;U=xHQ&$&7;M{z7z; eҁK=?LNꋡZVe(b/]#];ml}^@[=n^qg%&/w[ M|ޢ聶u Gi ~`wՖMoc*ܺ3ALj?:쓆elome;1ihuBu-إoc|t_M? ^㷡; ?4>~F鵏rN<{Vs$@m7mE6,cZ_:|9hC۠G )"fݐM cUK jAx`nd[ZUײGJ?Z+G&?Z5>m(Dj_[B=^ٸ$OvdghjϮ ӗWCڂ]L ^]7h2W?N1jqCEah*IVEGâ}SG`|jOaPj>OOCzˀ==VfP=M[@zƏ=_hà})zv ߚ2/x{WP}8E<q #+=Q'?6߼ ="o=OmkMvqe=@ *z(5vP1S>5~ڬ;n<K76Ϙ5 [!|rv*bxj{J IA隆ܬU'Ƚl,@nTaf) 0N20Aen.Nkѥ9h^z\S}'kz\'/OYܢ͗锶j ,84nkww0L1ڷ`>1xel]\QQ гw/KA= YK2Ӵ _}TЇ5F8;ĔڒM7K{_kvzKi1ʗSWx6CN4r34f=)*];{ɇ;}jA@Y ~,s> Ⱥ~A4 n#CRM({_J藰*ME"hg7 [釦~㒭=fFC_:l3a@f9> z}sg7܈c9)>?` :E=@Duz}Ztg7]1ܗdjG\u|ڰ 䇗G5o'&W>=p|ʠ[:61ډN /.,!{_gkE#?A9ެgȬOYYh I_\R$<403M͎^6蓬ԪVQ~\z=ó_4wjUV7ٱ䣥}Y32pP?I=^~6h<{ 7ЯGF=m!}p$+@O[y^ϭ'Yvy=>|J1)طY-|@>;>Ci[kJi~ٞu6ԀOvt}/p9~3 G3r(GFf6qza(#hKS_Oso񖹭jNb2ξGK=|-(_MA=k O"u+7ߍk?lVm!α H(w߲nP]ׂ6MQ{}l}~}yBShrWhOrc3[@SJ+ϬWCŔY\ৌ<\vth5|uU7G?V߇+_ƣ' Dzq?¸'7N0Wol=s}|4-i6kf^֚5_%xWGʺ7b2^lRU⽫moiOzMۍv~~Hh_=رrwW߽MxU?h 7]}[O~ZzȽo:mAV~kֿ7Aytb!0˫><]Lj86kCfɕl={u#65Xaӈ, .P էYszՐ^ϵCNpm*1C}|`ŏ0me,>YjD}odf9n﹀ Wy]hKU߾E *~YS+ѫ٥05r )4Y<=ײرSSYC=@n_>ҩ,R'=5UdIy4{yg:M@ÑӻTieCS$/Նq7n7i&;_@S),9MvHx[HOj﯁3v.ձxXx[/pKM!kٷ-ؓZw\>xԝ'&s5@}!;ӑ;vSM)=^W+5G\WR[8Mџ cYnX>5{=-2@/~*ҮR&Sgn%&cڔ؇첏7Cee{}zg9O>z8] 俦˦I'>:+[m /)#&?-[:9+B6|Z2_B]}~ Xc3o{VZX ˼_Okh&/5 y;-+/o= 5H蹷Nٜ#`ߚgB}6<%w@4ݫʯ G-P20.>hZUЧMr^B~*M8घnD{(rAϗn9 C~hiV[_; hY\㔜;϶iD[=SyB!HhO+A9?X]{{fAU؁gۿ?? 9R)sǦ|A`jMhO=0z_s3|6ۯɬy/G}X=3&95# BSi;ohО>ٗT>3nڕUx蓱>B**o_?h']7E붯<וovdAKn?AncV`g2 vXy*4anMǣ)}' AP{>LpvE"Oo%$nq޲FB>l!} =ZBGGN1p_ vF';[N}:xoh/GQ~+g!u}j))y=Ryj=fz/AEﭱ{є[1>_Li u^g{wg]JvדZnh۴L_S˥~\߹Ћoᕌךvu̍+A2Pe6,[㎫aU]OR4B}F=l$r_+YWѧ6ans@m4s;scڇĠfTFSF8Au70A3{,-ӥ/'}ACЏr/{6𼕹?nݺO) ; w 0LwEB"uá(whʄI w}u&׹o8Ykh :6 flD{̊4ր*m;5Yxc!`l?&5ݶ g?ݧHP)Ԧ׬DS&'pj7m-tg4>zr DQvч7fBc1HG_3F 4 `;h/^gZr'ٗpa}u+|@3S۬3Ω-!Vgj/^jP)ȥʀڵ%ļ8< V3^2OЗ-[kN4dlKȿw̱~b)Ͷ: Aw_\dgݻס{ppWmEgR]u&仇^T1e:u19e~2uepSu׶ DÓ*vw0JQ{Mw"K U ܸ{ nW>O-[bl-vZroGmy|r~z d L7pN.9 j'b;M@<S@}OmlBcA}k BˌC_0dpRG͍A7S/% zJRR@U|>|6pWa>_?p$= ziUxTpȧ7A?j00|JwC߈p>qܣ ]5n?):i.&ji}YAK4Ĕ"Ge[@90s;9!h^.lǣ/^ 5V&m79דʞMf`]!ov@~ $ԛ/16[bشzr4ܭ8aeDjP? 86,K_~p7!TmO7+T_ 4<~090Y6S&:~r^=:ڭ]o9bEaf!&h=b{v7J(۽cFBQ^L>1r9AU+r|,]BmC1UeTD{X2+n=ZĩkB}C_{"1e7bfA^x s,bB^ЯZ^nj \hSzC|>ן|F"M=;yUw嚕ۚSI ?_:wcgk?5! _ͪ7zob;oY3; Lw|x3D_.B?ljb/CXw:^QVT{䀻:{.h&{̓:vSn]֠3;MD=V1YkUfvFN{{=,4l/91=SϷD/;l5U }`7j/&d.f9G@ xKc^g}n^4my0l7Xul^=ho;42\>pyC0LgYp]2܎F/ qfMSfcqMKowԡUn/m\UĔ嵲-?B+wV Dл" BUiK/ðj&*Yepab2})]Ēgnv+36蹩kmR!S=kY}hZ۪Z/ψ)f@dGwLW_ CRP?:{nL=w ݥP>&C+'UHOn_wݹn.,>Bn3]&;jCM =oE냽7lxϷ;:}+ɕ}NRI_WYB|SffA9NM ]4dؓ35cF׻.5߷فkeپ 3ZNzS>A>w֝CXI8 r3_>%G SF_᧥$h?Z Fz`h ~6]{edæT Χb4Hu:d>l?fEiK?]] =.Zǝd~^X1sʴXJ$C s;ZZaد|;b2[X*k.N@k}@ו,j. FQ6S- f>f5hc|l$a|}D-6V>I[ǥJY׸LD{PcPlNCvpʆ^NxU ~\&nпiL0\{C `|Z14z}6ȷZJ%>W tUJg\2 䖝a6|J/WmWw LNw5t#LkVaƨʗ{y;>q*o٠W75<:nvЮΜ\z}uJSˮn*&?0, +^hM޶V+9IM#4vJ w~Zz]w:u _i&R7<[*+C]F; غ=m !݊ܪs2_w]{<&x߽ hj;7e܄H|Jj=„`l[K-^y?~vf%/cy2}l -BDvy*h̀5RAW7I=hس*=WVKfa77Ǘ[b ʴJ/&sn syR>V[?K6 b@4=0z Uvڈ)%/G|N6ԉ^ rR'5}nk6 3&w,RBT_O4:;q)ͲYu!{B~ZFt4Hr3Xj=E>7WiםCuἧ-/Y8)m{ӦP}xζᛚ`wM]-l=t{OQfuj C+8f1 ?5AOʫߟ·7ELY>/y&![$FOG+^b 7Mef~r-w8\ ғI}B;,e.s\4U'.'̩vsz4ٲUugPmhza*{)!OF9K|?Q[`=Gϸ~閭=]=ӲS?B|o-Bg002sq18 /\ DZ ݢN{2ZMs?BjޓmHow'iz"R`bG??{!&O o1C]/Rw>Xl='үk=[s!#wS.^9V[kZQJAOGR5כT1^y|tP?fַv__zI0.} {(zND~nR:H@oSm9XdǺN\MPU{h9 #/{L)ɠgz4 vr', -Ӊ+~n46;4ψ$VS= s~ D& v7 ݷ;qϭ>̃L.}oޮT4_q @?/] %fe&FCx N1ONvҵ./w^\+n EsG`ܛ9i]B(JUOlvuTcϩbyl1w udِruځ|2&ZO? QֵI1IA-=*įm"҆|9 ]'1CgOӳ%B }-FL~2<< A 2iVYfw)ޘN8Yu6F#4϶Vu;dTmhŝC3j<7t }n|e]>*@[Mн h h_nkX?l}qZwd_}oWa.4.u}C2voh [fYs?iGC  ~7o}{1x % )[^>`+Ϛ]ԗ.!l;}sJmDhWҒ/کvK{i: sVz&=ЊԊz΋VBjjPUG'ml}Vz*~]׶*[ڠEVTJ@~=s@/|ot rQjq+`1>=$*=-B Wm&{o^FE`˃ۜ-;mdwd?oPe4߯)evYB,w+W=:fVv`O>o oN zR'p;Zs&ߚ5"w+EؓA[ r}qܡ`Ǘk?\ibyc4O%~s>|;oEf 4>i0s' B[D+㊓@zvzvF A+ [nGןîu~ڧ@9!~U;횃}T(yˠkA/c05G ] [9|`\SڣicC< zac^k-7~ہK2ހ]gzK>?v/ؑAuw%BN<ڿV6z:,XM3mKwZ#g[ ~\ε{W~oѸՋn=Ih(?i }y fΝ} /W&ZL=]?cP5㺹g/m5pOJ(1HBjf`'-v\ BZ0nS5ϦS?xmԮy3jM+sabʨ] ˕ެ}qzb2 /+`?/RvS/=h[]Xz:xijлvATw(ᑨ#ou=@>z8/& (lB'<#t{P.>&пg "̒on _ԵgTu`ܨ7]7}eS{L _^nk=61 +~Z+=sh]z"_YSϟ w:!GLK|@L:jZ =7r up _xlliWL-p~iЧĽK]^4lŶZhZ ^0|yU;-g;C`nBb2fPU ~=6w2o-}qLHrOV츕ܨ90^0iX')|7htKT=?>Q(DtKi:F@ߟ4G+tݴmu>j+={z &?7$B)VW?ێ>7Z7 {\!&s^߅cnhDWrk!]߯~.Ѫ͡y 2߈ړ {ANۃՃ/ #OdMx͗&/MW|tVz<~C/^vY<}ow8}5}m So,oe SV/ ?;|~m3 $ԁq}G*G@BeũLԦ3ZxE(w^_;?q57ǣ僖>#&{]ZLzbPcߠܫ4V|^{&K_Lu6r˭5v [fF7oraޭ5֜ AZ->GZ768^Gf>C47}G(xv!u 9K*"JXJ74l}o`:}`{ȥDE 4h#VK!h Qd*?K;ɻPvOHǭTO_d$Qůr*+Wv|.<OF.^YғO]^U>eY(oO_>yBƕ!翴z)ijWU`SoGtrC^6r>TSr+gy|cʮSU 9.+_B|SU~Jp雲!7+ <%I%}5&Ո:ߝ)/,4Rd"4iK.V @|"D3 v(ʓ"=RԖ^|/lz@T8#MfLK2XyXc&YL3ۇ1XA]QsB_'y` ѝuDP`/sFWSrtnȢ]ѡ<~6S}%t~B2qDE;0Hؑu:5"› QEOO:0f)?]?fZq2sMK$ot*my7ЁFYFa+ +3z<#i'ύ)ӌ#H݈]aӦU &rOa0Q8I!BSLջ6&zTH͑5AO#L9"0M'~Kq]͟zVѷpVv'''[=8Cd׶V+GcUkcyb`_*+{=iT#oTQ ^15g+"Ri!4oiw k]|Paj\M+;*K'n5MwRw+Tx7n [77_6rxjb\0ߍf'1.%?UwU%}` 8ŸwkƿIqXP JL]CLȍ 1|` >g0 3|`81N `81N `81N 0C` !`0 0 3`83 3`83 3`0. `0. `0 +`2 +`2 +`1n `1n `1 ;`3 ;`3 ; :Atf.lЕ A͑EsdY4G͑EsdY4G͑Esd,Eh|ϢY4>g,EsbќX4'͉EsbќX4'͉EsbќX4&`,EhM X4&`ќY4g͙EsfќY4g͙EsfќY4gͅEsa\X4ͅEsa\X4ͅEsa\Y4W͕Ese\Y4W͕Ese\Y4W͍EscX47͍EscX47͍EscY4w͝EsgY4w͝EsgY4֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖Y[gm %|֖].J(-:Վy~1av2_ 'xdv_v?OBC|#EACױaoSΩM͞4Nv.el d7" j 9vSRA,䤅WVy{UrY/T5&<"F?is zWe[R `6`˻ynT-dZI![f+-9~ m@"i[}_>}oGa[yѦ,r%l7Fd[ɶy'jĖj$waVLfo;J#0ḐgZKyYz2OPe.oƤ|*MϏ~M_O~?wf}j)=?Pv]nWw!m5ҲkTfjYyQC|p6p2UE'%[D}>:ɌH+kl5_wQ}A7䎿ulCb%SH1ؖGm5µ5V#JWTJ>h42N+䕜+^I^|탾$Pr^>_x%yɁ9c9cw1cyq9>3_cs[c/qUn>0@U=ŸoU5>0ߍf'1.%?UwU%}` 8ŸwkƿIq/Q x%yY$W'JL$/ A4WJ߽{jKb%1-@ke;勺ﰢ K] nV/WWJ~?o| -bW W+s};-WOxeȷ| :ĤOF|-1t 16iw=},[Q>۲k=y&P EjTl̕8H&]se!yڀJ[NƬ\p=u-V#ċcrOL?!sx#o̚Z|-V)O/Pc^ vdYQ~Fi-D|!36q%,se\m%qߊrf(2F"lEyiӒM 并ZQ~R+E_T9c9cw1cyq9>3_cs[c/qUnb\q1jzb\q1KS^G$!"^A"4W|Ҡ4eQ?"VJz^ (#+ITʻF Z#sCŚzɚ|rrGbGRGB/`m"ܦl>ՓŚZmO],ۯ,TW* ZX C3qńj-i=(iq1jz%}`ܿ_75Nb\3pK:K\UEUqq&\UyI _ \+t,Hndx72F& ndtF& ȤA4w#F+*ȤL幌=WvBvGrQvx\wWKm]q%QE[Z2pa_Szޛ9O׉S+>t/%R(`o,vS<%tQ}grDi|I֖ O(/NWcJW14wm Hz|HD"7uB]9foY۬0fm-%ר8O*/b1I7D̓4.YG_ZyDY"c;g,jgaB2BZj,Z鿆SֿZKو /_֎~ U25<\8AU_ߋ{eAzHXy ӏqqD\Y*鷣!y3u3WO(7.˧'|*/7)ywy9.^yrtz+O>ㅕW>Vre#,]eɧC\*wD7'/y\rש*?%MYe啿NWU{_XzWv^nn6gJ_ZP5 E_Ù,H33_nn_A7>@"YG&IgVus(:6@:LAx;=s k5Uf@ʀd(@qenoQ\[(Эsuy*E*CEi i"BB K\ШY(JLɜ)!S:ss|x^{3|ֻA?57Yl|O|mYl`b:F#ղZVjY-ڔl/_V~Y/_V~YeǍ~7k~o;/~|߿WIV~?wM?j/?j4c-_V~_~_߿NeOo7Y?I~z[Oo~y/oY?-7e旷/#L 8~6YS@ѲoSGeܴ=]6h Y>Bsl!ggG3(]/J1cB_2k_?%{ҒaZVqw}aW9_$mv3-"c|cZ@c:7'OEZ) # c|_~BE2X?/9 ??9̟A/>5SJ|E?XEǎ1ʭMK HՑ`N>p=ַd /ۓPR?mjS* 2ȴRMKS k3?}VrMe:o6wJmKɂځ>R>s9ʶT^ +{IqfOm"OK>4/'|؟칕g2گْ/[_cu/3 PFb̸)'*̥\5JƂSDM>^#vWPɁ 5$x*d'"Ӳ tu=`P\V8{z `u^^kv\Lu/Kcײ|o~Ӯ?YO ķD77_Fps޸[߶y:/y4i)w9}{sz@N[.87Oq}9linKtr4oI%`7`U<5kN[~;ğ<.M/GnpgOUk[1:{;\7bԿ/5ߑ"?z|8߷jnGZ>_ 'R\o<#7y0rO5?o:w͊9[/UJbLxfI<Yղ*z-gUYUI**ɳZVjY-eղeܯFVjY۲^ߎ?qղڿRYoK?/V7vv=b7jp/D~/bˏMXm?w5W~Y'ΓX俾cUgU'X俽eUUI[V%/oY俼eU]IUQX%1Y%1Y%1YqlmVZPQ^֏W?XQ;*XQ^(Q_Qw*bȪ(ɪ(?}f?}?dEg>PLj(jSZ'YS+RJsz{R &nvL 7S#*O>~RyEhDMXIdɫ]S\_VppG­v^߫D1V)?d7ardO#S|6KinE}c|cqyɝ;f sq4=jVk-w+Lj';j&q';MMm*WQHn?RQD׊_+[քP<\Q^mE_b͟|5+VE{&qO'?+q7*JOaUA5&05&2tzzuWj)F3B^?şVٲ~֟o}hտBQ?|?H V%TR?_&ZXfC0U T-$j/U w u?Ȍ_U t.YϟR;_uȼd_P)/o|_vأMqzm)N6K̬K=.Xnÿ}좵SJ:/%{6pAdyGOQ_JᴏRc?UIm^撔z4")(hM|s42sEY~o-e^!S-}?PAo6o^*?F©W&~9k¹\<\Pm_bdg|߮sbr"߾{46XOu_׷cdm'b'oۿs&NIB&Q} jcdw\1 /)yίU#p6AG G%w$%(9Ua k?B9̫ ^fT|8 bWk&!(޺@M;9Z8:s|ps-JJO(^T4@8UmcaxRܰaS,yj_/ A+v&(E:E4Y.ui ym A ̜:`ŽY](4uAZ6xNPRCQc!G Уؙ49_fВڋ_ޝi_\ǥ;aW['MI:"m5A j| ]?]`A ^=hAv=GP{$iJ,.c.M6zP v r@~j4?ͧ6֜ { E?\&d`UYFM4A?ܢP:|>afȳ[&Ĉ([ >i^ du[~Ҡ<4=OQ2 &LN_vԾsh}2e{S˗]VΣ1뤏aU 4}i%=x31WGN+=dtحDRV95i݇Pbgء@p엸UwvnM6EY}x3Il$A6-2N$X}q4/+tʧ]XFj:B+?>ksMfCe߇]*v SN ׾w}Tg^6MEhX^ bԑ!|гX]qyd)֢Gz=vcI ]?q MVNvl"#lI|OO56Ƹ¥E=,xpA :c}ae6 J(GP|6Zn(d>` *$ӽ _s..Keb Y 1`;|_[j;A&4bbȁ{b ߳IX#)U`~:[v&k6F8~{z<mebp%$\_|j p|"GG;|sͰF(Ϯ Qb6ޓ0B]u?lc gkM~t/c>!`: ~gY{8 eGL)=6 y>y?.^?*znSnDS= u&B?  ߞڣSOCL pyϥ% 7/e 'Y#!v)q ,))Yie5/(EpfY`a7CZehq࿠u!AM:QQ(w^Tm;` ޭ`(xZ?`%At]JN̓y~~jk];)ơzyUv`:LaQ -d7@XfXuAwv,fg$ _6uB.}) i_mz|qgGf 63wwQ8NZ8*09J2uYv݉4ȝa_v"vrxS\=,;hhKSJj&e4yw;AfXAy0.ca.gO@e=|sls71ŶN!π͏Tw̙?vȷD`W8χL`/N6[O:CQl8a~Qk-Tv|y'lu|gɄ+WKSY#W΀8kܥymI[ {>?";{*psz=2kXRJ?k~iY;~?pOk6o&A& yvѦ1o_2} 딜}?|{:Mfnyw?x3%-3FzDC<6> vl]W4U.L=~xP#;"븜So$I"/[Ϟ9ZwKn/dȔdı|{܄\6SK,njr]l#Ls9J˻q2aG6B>bɐY:OƑ;{z?8d|a/7rQz_7FylKA-×ߖqgzM{kJ.2+z_Rߔ |,7<tob$GBysA)5^r/LE{IQ*J+!OkՎ ̈́ʩ~oꌦu'}?8O)8?#~ȕT\5vՍ<g4r2|-+]7S10룩 ޝB8~y%Gr8q=O`0kEA'ma5_f|0y>K/F} Mn/;Q7ڽ,$)аQdƂ=u|iyf⡍ct $ߧ<|9'ґ7aKe{=Vm*V9 =mSin =[nw6wXa?>R wBS6|HjGu|Cb7-j׷ 2(Cej$7^1W0~YER`.ܥgDClBZ= ݼWq9[>ASM~WsLӔ'I}cgC'ry ^w zSMI8Ι?|36ms \Jfk#/fWP7_V|G"p.cguZ~!o41n"KeO襉bp_s&_&qX\(7aOM+r;]<NվC'ga :4;  ܑp~qa.|G< s-;G' ,-]t20 xzk% ?xgr?,im.>{%/w@oBsgz+G{(s gϟOSgCGXto{ߒ1-Q%f~+qn\_({2|Zl 2S귌ܶɒ? 8pafA%gFl7e{Ow>_s? z+vf(يil?k8؉RpKDk y7 r>i59XKkbcttM`p5=zkF].CuCFm#4@ :85`/?5 Ƅ<٬{1 b`L$tB2]{[;=o`׽Th=(1<-A>~7Vxл8hD}STs Q Y3OޝjgaOO^cESDM=Kcva=F@|щWD;8n1Ě&Ziw&9m衐  k+5qbm8꣤oO#~Sو#!Hz(GɶeO2%F%+ "KbK_q|||ۈߕ9,14x lW/a!V/!K&^j͚>cza:Sy^=d|̓6:o 8Ga,pf6xӢOT,Fp$ƈ uK9̧} z{P3MPj $q9G'#88U2!?BpۜOKnM1z)u8Ѡ.MC_n v5Բ`by*ET\<\4B!p28!5F,Z#`_j4Y9J \7&El4%x_h$J{{$^=]KPOH!_M|饜td`u2Af‡ Y_V5816jNA6,l43H~~xp R߽o\e‡fחg"W*:;y\͵,UU:bcV wljq=Fغo6W?5ރq|4{ $8#>dH- Bޞih]}}fkGaS/0ס'teLE<BSR~&vdBMMYfB W\:4s >Cu>LnLF[|Êes݈fE U]x?q+sO ?RC6ēZ4%H3ʡAI+!$paB0ĴQ'njAIOG|g!s]mނEu WffZc~Y~>shTؗ̀K_|mO,K=3sK=;+}[,x1i`ioO'﹖{|3r/px:}[ȱB^ng k<,߱0Tճ8z%)l_!-(j/!~vES:+vL'{ Ld.Cl}˹rD["1~q>a"q(F}XZwIZ2۩͛@q8ZiA:+d5 ~(L>;ʹI'W ,Xk CW&C͠k2pA"{`e,VrЖ&  QV|Ks;eq^y7!-|j6Я}cfUFJk uxʵ֦)s z6tX3ђM9wg2^/IJ1iDAi@Hp\g'/|>7<+h/s"~?srVN, iYAcD%ͦhnͪ]`"e$aco{5ۂ^r-yxZ![/B3Z߃;e7e/t>Y =q,H?Db\jD0֜dr16RA*-Ԉ^~Ͽ$Z[XsqKy7jϵ;zo!gHRۆo?2M <FnLZ5;7d]xts>\HEUL!7I#R ~!W}FرuH²Űᩣ#IHC/Ν#țǴuׂ˝fWՂJYښ2? ::k*MݝIv䙲.b\S i&#=2KI:=jD|AvWzȡܴe]ydBȩ`~װ'}6Jag-q'E1px8< 8qOmiS0, a\a1H` ȮSHS<.̄LhSVN^` f #Vo=?a.o-qSBbgl$c*!G+8qsf٤K: ']ϸ2մ3Y-i:XYcfc Wh Yg|ξ{}8Oxkܓ"rݒ2rAqd[H\_4OWn97T~N#Gw;5-OdeZe^e Mϙc:2ř8竟c>UϞFOB\u[YP%i<r s9adWMhNC)\Z8OCGLNWc%Yy:Mq{ fgwI Q] }p^o\yD YR~-OlO|#x,o2qC S 'Z6舴s;KpZ~ɹ=1p\ÜtC}ǥ]\g~jkKL?PVONﲲ] rE\ao= _Ĵ*\@g3ʞ-d.w\kbḷ3W Yp\}}:oa?ZJ*p4@^m0wzk+Bqh_5lˣ~}9}OhEoԡ] mP|e}YհܾK m WC7 ;8x8_A//$jŦ<zqQ~3^ƕ3<*Vrl̶~Y~9fy^N۰$ksɲE}ج1_=E3 eT?X9dUũopx}6s#[Pp-M#q]8c_ln?Bu%U&0n5+m0Q| nٕr 1vWMl#}7pN3*I|'l[19pϙ}|L īw72qdo'Q,7k\Mvψ\_ MF~!v]Vک'<+wv"40h:wdi~U̦,romt`{#]xAg7Y)^.=#VC|s|Fߜ"Dуfۦ) J-rhh'ص5f]!%;쑯?_bx[qW璢݊/Cxg$e`Sƹ)㼩vB|v7 7/bM<(Z2`5O 5~uJYy9WvH8VzYx[OzҾ4Yv\&(lĻYMAT^{<[;Yny̧Ж&G^jJ7xgE+ S8^}f.%3JƂ"aq)Rk\>civE!. eٽ6ы#.s\~Y$&xy{u2ÞO><uے L uE^d ahNm^WCZ'!/ZqzQ?y\=bܜ<-{y`dSʆMeވ 7r0ѕ"٦/i~ć: W b|~&#)-gۙr9?I9]- }7>F~NNwAđA~GR.FPz'625i9~ri WV h Rt^#WD0+\ mi2< ZFbXuś4y|0GYR^DKp%,:37IQ5U={'No?zcd V'%,޲b~}=?._7m>V lWFyw{1 ^_|e椅N8c} soK8ߞ\ /=biM_yy|(nWk=qc(䉼k /B ?UzUg3ueN[=v(|E!BebMjTkg̣e0t4xv q$k5Ug]={@83!AॵW ajT1arj$Ulr[f]T=AqfۛJn wr76{Vw[kŰL>[.XNucfo=ܠNJ"Lîn.eכ rli} _% my8sm^}\n1SդlES } NevpsRK{$}Mk뉆ӔDSi=:"<Z9[UUj!?GO,Y(/Ƈ?CPqe\3M=A^[aYAfL MC:^p^H:_LPJ -n4:)D]Xn<$̷;͜Y\`W}< ~l{ߪé[Ԯ]dE||#SNN#3s'?\[2?|gNL[krA xQ 轪*݊OQ-c0 ܟvmՇ>:|7L ? "FZ#sMAotOB=g˓7#ztsA8طDI A.n]o"1!<:]1.EL1oW}IP'2_.~ɍF ,W2׵\Q&Iݴ}-w_<;%o^cEF ؀醽ƕ㡟F\uyGq<T !ϦVm~ښc<;.m45[Y.n=/mKWR&ȧqj“3aWwHU֩C֍ S!sOEgw8O&^=}&8Aoݛ: ߉ooISBeöUПBZG*~5cA <Ӌ8zo_}4$x*"y~) rᷲCjyyl1!%uǥ4|s5Fޯ^+<╌Ia}{nHedvd9^,ߔ#,C{|??a ̇;WU xN®& 24'6G yܧ*/}1鑨G>=~8 ?(v'xbJ ^ݫ.I:P Gm 򲙰箆Ak(n6\ u9#>{fyuEQȧoȁ}I}K1~'׃8",kA|/0 >yRU;.eWmANu >C|8_*;nףN,(D| ٳrRɐ+ߗ |3W9CSW)93-脼o^TC^{j%W(]}x ޡyV臝l!?f~X9.ᖚ8-W6#_|[Y~ >"3@|~Rď+ {L<.xwoЖD:? >tlrR9a#g0M 5{} (St Cj!61O2x}Hm'mCGN]*:G؄0n?hV^9*I-Vh;VEb{Y9y,lYsY~c򋎬תO]#xe ^N熭< {iX8 \ G1FI3}{%xЏ=#8Bo1owzOKνYhJ]`ebv)KU ޠڐCk\ff]JG2˪z>^ x}P.XIpE7*ث먐Wܛ'`g&Hyy#o" ״4( gWIx'ʢW_dY{Ic߶#?{|pwxnҰO]2Bu:WYqz"/{"!4Y=e|h^{h[ڷݼ Yȭro YwpxwZikd ߶~oL'È௸|'a<^c;*w(3;]۹uۃ&q@7?Wt`lYO.O p*GmvQ'{s|kzM*TuYDNgRlښ؂Dxʕ F![fys7"=ql7:cܱyC>Z(qAcpɪ<\%o\e1oҠJqU\p[kM>1GgRQ*mO?Jx]xqJ dVsnOSq/NK[93ɦ91I/@(ͳ^[&Y{ܛlR6r2Ӆz/qxϦ4O~jΘr[I.W'*di6xJ[odm=He] JMHқd~"iݴ5iE Sj򂓹==w+Xh|VL ՇC?gKQRѲ/ 1I`7OIR#(u`'Վb <=iaŰ3 ӔXΘ+ KєE~4@wjLk PN(Մ^RMghTl Iڟ੧qMϚ.LS6{͝JYdaWq)n }W[ԏg뮦))~\."0ka)~ (74Y9?劗︲Tc㮲c.lR>yt}DE_[`9mn䖝&O'\ES iL`W6K&T'%17W i{1}åcu٦XgSE?vO)Y#3i &+Uo&EPv_K,(^S}Y,u7#vuTTya5̗}AR[{I |ĔTČ`6)i7{62Ogi\ q+R`{Mo]ȿۥgvM^\] `OJ&Öb[W]pi3Ӑ^s$D`~Gm0ȄO~t>rXIi< ӯٙA qNU˙ӌVO Z:NY~ٔ<_ɛ6^L{/4 O*6*C>xsTJ| ҢY 7vДJ&ijh-?lQk&ԉ= l\(Ip#5{:\\oImKc1~]HwΌK٥AO#^=̩({Ux3#`ыv\{i +|(臗 }u9C׍gG[6>]&>ͽ}zz{I|8?nKES˝QؾdI0 ޅy?Uq?4~nɣckˎS_/ }7 -NG:q$NIۜ>cWG_ >HEz֟3tF=`O5^~lS}k ~J;zpO^ ;I \zNүWx x:-nLJ*5΃TfNy迾Fo$cYll%[3\޵XC4:JH2$b),;qտ:6-|A<,^3{S65 ig X垖sO=SԐe7ɀ|V#K deoeܶ8Wxh/Sݤ1e h 2`2.¼j45nt@ !ֳ0v7] 3P(HWHnŞDxaI>eVUkGm$ |}߾rm ?P>R1,"*Kk Cj]aw#mmS&cwS )*ԷwZ |^b6\0G' v58vڋ-{Gϼcj8nM*bM~=/~[E3'.%/f7IZ?zs`ݺ2o#?:>wY?9ܮ{ظW Jq=[38d[rb4đ'N8rF3Oj{];v#"cs2G<ۚx-qڽ}Yp.ΐĖJ \*?`o F|b{xZ霂8x~_]!Mn$zS 7 sc| #ߪ0| BEFW[־RE?VN;b <&kvbTu㧳qU\܋JnF֪q4|qDȻQ_DWu6dz ԡn5H}4%^ A~8}'svHYS[8xx3<luh ѿ&-nh7z<*y6y8EQC58>䵎;7^|OmKmM{mڑ]|g[hjȝbiݏ%!3‡f0SO|ȱ6E~ыhJ̚=+ g!"I-L0G+wmM49,5c>Qz-%˶ßH}$B4vBUa<QG!־]4\Q<.n5Vsz_ w'}Tq,_o 0p/gy)wԁY[0wt%M>8Tjhþ *S)|kiru_gO.Nn㳑" ;; iہ/oNVnh9"s{ YyF[tP- K%*jY;gyUĈ u|%y9$UpC,͝$.~7(AUY"|T~v7#]5!GS]'y^ic9;?Nyݩ;0O"B x9l*G^"1㤕i"뤊3+/y 6, pPNsb?eXΞjUv<띀_Ĭ-?NFitC$\:xtl?eZ ZӆOޛ1dQg!ss e2˳\$)0̆QO& ?dWJnn[;1"ElSN.n~8yM|c*zZofZEeW醶bdjfKLU;mμ33O_"Mx*#^L/l:=r/ed\ȉY9TRs52RT? @\<ݹuZjKu{_eIq൦wSgܢ~"=aP٩cq2pްƼ:yd.졏8W`~mmU͢U (zw^RKͲ0'!~/\yO~RΊĎ 2A(^JABf1ipȅYΰ`asߗ$1IĖT?Kn>!"?V.1@4{?MfzpJKcv_]"ߗѩ'U]2[!Y12P`*U8)#/+4qpQEaxtpA[>V}Y3'pílsRɎR==eC̑Gi{Cf k/L\gЗC_Js]ҳ_1a[5)_+B/D\eK_sDͽ_qZv|IV/b`^ ZBA飮_)}aW-pTK4?/d⥏quO5l.U4BqU9&K.! />~qpq8䣴bW}rch2neJ7_!9"3z"!> xJ:U/Xެ{Q$VD~%z`?(#P) R.RQ+cg\4 |@^u]1ЎFrO7-FS" t4kίUOU7_,>YF!rc ]5 Ppӎc_\fYœlɈ [w2ۡgGדdoWktdXxC˔"7ˆ#f{C#/$SȖj*3#7ϱņ8}q~BiAM^GXϪ^].8(w6HRW7'E3c ވf=s_>Uw4|Iה}\/Hei'νihj2krDӏ c2/D20_ UUߊ<-]} 33ީ>ݕ}ܣS8y]rQz7rhٕ'4ٹ2LuTZv tk˶~Ժyig%ԉ0m wIKL){ q+ţq6/>u SOzڃx1KpfYoqcDdχ21>٭:j̲#]˶AS7+3Mw;=ynjoC<:R|X 1YYM'ndCw~4{{M86cs2,+qzfUQ/ i:& dHywd͓emJwFn?Sveoއ|A=oI4EE8 -ţ !N틞y5MvfۉN 낽Wۻ0z1R)-B¿0[Symx2)bG~voxt? 4ٗ;:~+|0PoFwws'{r8yzf+6kTJ"~[>[9^v4 kޏ]}ӽ`lŮ~q; ~9㚃A9M6^o  .f%HڶW/W< X~c+7Ӽj*a;}ZpƷ%Mxێ8(LDh/4 ^4 w5Ss7_Ofmgo*+ d|Ltc1Gg1U2+@UeAتȵo}1j/Ec1Nz0x$~[n$ZQA/0ssnxxi,}ܫ M5)!%l) CrոnxaoxSCFؿ<6־A_Q.Hfr/"cow|_ZC8_XnED7Wv t{5>Z_U t=31OHe~wdrF\n.ܖ@ aש#afex/tests/testthat/test-compare_2_vectors.R0000644000176200001440000000044613664111747020731 0ustar liggesusers context("compare.2.vectors: known bugs") test_that("exactly equal mean does not fail", { x <- c(0.309, 0.222, 0.293, 0.238, 0.33, 0.215) y <- c(0.313, 0.213, 0.306, 0.253, 0.294, 0.228) out <- suppressWarnings(compare.2.vectors(x, y, paired = TRUE)) expect_is(out,"list") }) afex/tests/testthat/test-emmeans-interface.R0000644000176200001440000002242514076011251020664 0ustar liggesusers context("interplay with emmeans") test_that("ANOVA functions work with emmeans, univariate & multivariate", { skip_if_not_installed("emmeans") data(sk2011.1) a1 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("inference", "plausibility"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a1, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a1, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) em1 <- emmeans::emmeans(a1, ~ inference*plausibility, model = "univariate") em2 <- emmeans::emmeans(a1, ~ inference*plausibility, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a1b <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("plausibility", "inference"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a1b, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a1b, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a2 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("inference"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a2, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a2, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a3 <- aov_ez("id", "response", sk2011.1, within = c("inference"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a3, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a3, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a4 <- aov_ez("id", "response", sk2011.1, between = "instruction", fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a4, ~ instruction, model = "univariate") em2 <- emmeans::emmeans(a4, ~ instruction, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_true(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) #### data("sk2011.2") ab1 <- aov_ez("id", "response", sk2011.2, between = "instruction", within = c("what", "validity", "type"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(ab1, ~ what*validity*type, model = "univariate") em2 <- emmeans::emmeans(ab1, ~ what*validity*type, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean, tolerance = 0.1) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) em1 <- emmeans::emmeans(ab1, ~ validity*what*type, model = "univariate") em2 <- emmeans::emmeans(ab1, ~ validity*what*type, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean, tolerance = 0.1) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) em1 <- emmeans::emmeans(ab1, ~ type, model = "univariate") em2 <- emmeans::emmeans(ab1, ~ type, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean, tolerance = 0.1) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) }) test_that("ANCOVA with emmeans is correct for univariate & multivariate", { skip_if_not_installed("emmeans") data(sk2011.1) # a1 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), # within = c("phase", "hour"), covariate = "age", # observed = c("gender", "age"), factorize = FALSE) # emmeans(a1, ~ phase, model = "multivariate") # emmeans(a1, ~ phase, model = "univariate") # # emmeans(a1, ~ treatment, model = "multivariate") # emmeans(a1, ~ treatment, model = "univariate") # deactivated, see: https://github.com/rvlenth/emmeans/issues/32 a2 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), covariate = "age", fun_aggregate = mean, observed = c("gender", "age"), factorize = FALSE, include_aov = TRUE) em1 <- emmeans::emmeans(a2, ~ treatment, model = "univariate") em2 <- emmeans::emmeans(a2, ~ treatment, model = "multivariate") expect_equal(summary(em1)$emmean, summary(em2)$emmean) }) test_that("mixed works with emmeans", { skip_if_not_installed("emmeans") skip_on_cran() data(sk2011.1) emmeans::emm_options(lmer.df = "asymptotic") m1 <- mixed(response ~ instruction*inference*plausibility +(1|id), sk2011.1, progress = FALSE) expect_is(emmeans::emmeans(m1, ~ inference), "emmGrid") m2 <- mixed(response ~ inference +(inference|id), sk2011.1, progress = FALSE) expect_is(emmeans::emmeans(m2, ~ inference), "emmGrid") m3 <- mixed(response ~ instruction +(inference|id), sk2011.1, progress = FALSE) expect_is(emmeans::emmeans(m3, ~ instruction), "emmGrid") }) test_that("mixed works with type=2 and all methods", { skip_if_not_installed("emmeans") emmeans::emm_options(lmer.df = "asymptotic") ## in all tests, data needs to be passed because of nested evaluation. data("sk2011.2") sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) mixed_kr <- mixed(response ~ inference*type+(1|id), sk2_aff, type=2, method="KR", progress = FALSE) expect_is(emmeans::emmeans(mixed_kr, specs = c("type")), "emmGrid") mixed_s <- mixed(response ~ inference*type+(1|id), sk2_aff, type=2, method="S", progress = FALSE) expect_is(emmeans::emmeans(mixed_s, specs = c("type")), "emmGrid") mixed_lrt <- mixed(response ~ type+(1|id), sk2_aff, type=2, method="LRT", progress = FALSE) expect_is(emmeans::emmeans(mixed_lrt, specs = c("type")), "emmGrid") mixed_pb <- suppressWarnings(mixed(response ~ type+(1|id), sk2_aff, type=2, method="PB", progress = FALSE, args_test = list(nsim = 10))) expect_is(emmeans::emmeans(mixed_pb, specs = c("type")), "emmGrid") mixed_oldkr <- mixed(response ~ type+(1|id), sk2_aff, type=2, method="nested-KR", progress = FALSE) expect_is(emmeans::emmeans(mixed_oldkr, specs = c("type")), "emmGrid") }) test_that("emmeans works with mixed and expand_er = TRUE", { skip_if_not_installed("emmeans") skip_if_not_installed("MEMSS") data("Machines", package = "MEMSS") m2 <- mixed(score ~ Machine + (Machine||Worker), data=Machines, expand_re = TRUE, progress = FALSE) t1 <- emmeans::emmeans(m2, "Machine", lmer.df = "asymptotic") t2 <- emmeans::emmeans(m2, "Machine", lmer.df = "Satterthwaite") t3 <- emmeans::emmeans(m2, "Machine", lmer.df = "kenward-roger") expect_is(t1, "emmGrid") expect_is(t2, "emmGrid") expect_is(t3, "emmGrid") expect_is(summary(t1), "data.frame") expect_is(summary(t2), "data.frame") expect_is(summary(t3), "data.frame") }) test_that("emmeans with mixed & expand_re = TRUE with pre 3.0 lmerTest objects", { skip_if_not_installed("emmeans") skip_on_cran() load("m_machines_lmerTest-pre3.0.rda") # load("tests/testthat/m_machines_lmerTest-pre3.0.rda") t1 <- emmeans::emmeans(m_machines, "Machine", lmer.df = "asymptotic") t2 <- emmeans::emmeans(m_machines, "Machine", lmer.df = "Satterthwaite") t3 <- emmeans::emmeans(m_machines, "Machine", lmer.df = "kenward-roger") expect_is(t1, "emmGrid") expect_is(t2, "emmGrid") expect_is(t3, "emmGrid") expect_is(summary(t1), "data.frame") expect_is(summary(t2), "data.frame") expect_is(summary(t3), "data.frame") }) afex/tests/testthat/test-mixed-mw.R0000644000176200001440000000612514217346426017043 0ustar liggesusers context("Mixed LMMs: replicating Maxwell & Delaney (2004)") test_that("mixed: Maxell & Delaney (2004), Table 16.3, p. 837", { ### replicate results from Table 16.3 (Maxwell & Delaney, 2004, p. 837) data(md_16.1) # original results need treatment contrasts: mixed1_orig <- mixed(severity ~ sex + (1|id), md_16.1, check_contrasts=FALSE, progress=FALSE) expect_that(fixef(mixed1_orig$full_model), is_equivalent_to(c(60, -14))) expect_that(round(anova(mixed1_orig)[1,"F"],2), equals(9.97)) expect_that(round(anova(mixed1_orig)[1,"Pr(>F)"],2), equals(0.03)) }) test_that("mixed: Maxell & Delaney (2004), Table 16.6, p. 845", { data(md_16.4) skip_if_not_installed("Matrix") md_16.4b <- within(md_16.4, cond <- C(cond, contr.treatment, base = 2)) mixed2_orig <- mixed(induct ~ cond + (1|room:cond), md_16.4b, check_contrasts=FALSE, progress=FALSE) expect_equivalent( object = unname(round(fixef(mixed2_orig$full_model), 4)), expected = c(35.6261, -8.1485)) expect_that( object = unname(round(sqrt(Matrix::diag(vcov(mixed2_orig$full_model))), 3)), condition = equals(c(3.229, 4.548))) expect_that(round(mixed2_orig[[1]]$F, 1), equals(3.2)) }) test_that("mixed: Maxell & Delaney (2004), Table 16.7, p. 851 (uses simple F!)", { data(md_16.4) skip_if_not_installed("Matrix") md_16.4b <- within(md_16.4, cond <- C(cond, contr.treatment, base = 2)) ### replicate results from Table 16.7 (Maxwell & Delaney, 2004, p. 851) # F-values (almost) hold, p-values (especially for skill) are off # however, parameters are perfectly recovered when using the original contrasts: mixed3_orig <- mixed(induct ~ cond + skill + (1|room:cond), md_16.4b, check_contrasts=FALSE, progress=FALSE) expect_that(object = unname(round(fixef(mixed3_orig$full_model), 2)), condition = is_equivalent_to(c(20.25, -7.57, 2.31))) expect_that( object = unname(round(sqrt(Matrix::diag(vcov(mixed3_orig$full_model))), 2)), condition = equals(c(5.82, 2.72, 0.81))) expect_that(round(mixed3_orig[[1]]$F), equals(c(8, 8))) #mixed3_F_simple <- mixed(induct ~ cond + skill + (1|room:cond), md_16.4b, check_contrasts=FALSE, progress=FALSE, method = "F") #expect_that(round(fixef(mixed3_F_simple$full_model), 2), is_equivalent_to(c(20.25, -7.57, 2.31))) #expect_that(round(sqrt(diag(vcov(mixed3_F_simple$full_model))), 2), equals(c(5.82, 2.72, 0.81))) #expect_that(round(mixed3_F_simple[[1]]$F, 1), equals(c(7.8, 8.2))) }) test_that("mixed: Maxell & Delaney (2004), Table 16.10, p. 862 (does not replicate the table!)", { data(md_16.4) md_16.4b <- within(md_16.4, cond <- C(cond, contr.treatment, base = 2)) #note: the values in this test should not replicate the table... md_16.4b$cog <- scale(md_16.4b$cog, scale=FALSE) mixed4 <- mixed(induct ~ cond*cog + (cog|room:cond), md_16.4b, progress=FALSE, check_contrasts=FALSE) expect_that(unname(round(fixef(mixed4$full_model), 2)), is_equivalent_to(c(36.1, -9.07, 0.64, 0.03))) }) afex/tests/testthat/helper-vdiffr.R0000644000176200001440000000124314413762316017066 0ustar liggesusers# By default, if vdiffr is not installed, all visual tests are skipped unless # VDIFFR_RUN_TESTS is explicitly set to "true", which should be the case only on # a GitHub Actions CI runner with stable version of R. if (requireNamespace("vdiffr", quietly = TRUE) && utils::packageVersion('testthat') >= '3.0.3') { expect_doppelganger <- vdiffr::expect_doppelganger } else { # If vdiffr is not available and visual tests are explicitly required, raise error. if (identical(Sys.getenv("VDIFFR_RUN_TESTS"), "true")) { abort("vdiffr is not installed") } # Otherwise, assign a dummy function expect_doppelganger <- function(...) skip("vdiffr is not installed.") } afex/tests/testthat/afex_plot-brms.rda0000644000176200001440000000237414415523175017626 0ustar liggesusersXKlEެ_q jR5:MzB^j{6]~hͭ7@THq@P9 Dũ bwmRG4ؙS$IHQ9"Eb J::&A 6ْ$n(y3xLو;֒4ASz}' 4)ڑEܪ v3zTYyzA]w?ʟf ӗZWgޤ'O\oo}>ɭ&Mm|FF6n; jfcD,kpkS?kcBTi4|}݆Y1+MǙ_2ݦF[?%/'kj  UZf-\v ݕV`y5\;uOGGT,eZ+nUe*vVxjUl= )д%I5`;vkxj8= ي}n`ht\Y (ƚkfήjt!X5P1[fz売;OW( r_Q6LT$r6Al  p`/``?~8&+A!a#< x 4( x0 -QR*@dx|ݰ*BP !#juLcBydT42$t1C!8PC!8PC!8TPC%8TPC%8TPC#84ЈC#84ЈC#82đ! qd#"(]F%=%=w ou, _z^#\?+&~G{yyM^q)乁|w?Sr证/I?zh+ǗlWD?JؿGXF=#~^kg\ZAE^+mCz$wHzIL#*4vE q[WhM-u\-pG9).1vLQք+wK* ݊ȿToAST"8?hn  }i@tEi ?|4䟠;?6;zuu sߨ߷[Pa=,EYnu,{C/1OW,% KtC~kze#nUH[iIN^z~Cn+{xkUź*8=T#M #uY\ lafex/tests/testthat/test-residuals.R0000644000176200001440000000444213670111517017300 0ustar liggesuserscontext("residuals: check if it works") data(obk.long, package = "afex") between <- aov_car(value ~ treatment*gender + Error(id), data = obk.long, fun_aggregate = mean) mixed <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long) within <- aov_car(value ~ 1 + Error(id/(phase*hour)), data = obk.long) ## between data with correct order obk2 <- aggregate(value ~ gender + treatment + id , data = obk.long, FUN = mean) between2 <- aov_car(value ~ treatment*gender + Error(id), data = obk2) between2lm <- lm(value ~ treatment*gender, data = obk2) between3 <- aov_car(value ~ treatment*gender + Error(id), data = obk2[rev(seq_len(nrow(obk2))),]) ## within data with correct order obk3 <- obk.long[with(obk.long, order(id, phase, hour)), ] within2 <- aov_car(value ~ 1 + Error(id/(phase*hour)), data = obk3) test_that("Residuals", { expect_message(residuals(within), "Data was changed") expect_message(residuals(mixed), "Data was changed") expect_message(residuals(between), "Data was changed") expect_message(residuals(between3), "Data was changed") expect_message(residuals(between2), regexp = NA) expect_message(residuals(within2), regexp = NA) expect_equal(residuals(between2), residuals(between2lm)) expect_is(suppressWarnings(residuals(within)),"numeric") expect_is(suppressWarnings(residuals(mixed)),"numeric") expect_is(suppressWarnings(residuals(between)),"numeric") expect_is(residuals(within, append = TRUE),"data.frame") expect_is(residuals(mixed, append = TRUE),"data.frame") expect_is(residuals(between, append = TRUE),"data.frame") }) test_that("Fitted", { expect_message(fitted(within)) expect_message(fitted(mixed)) expect_message(fitted(between)) expect_message(fitted(between2), regexp = NA) expect_message(fitted(within2), regexp = NA) expect_equal(fitted(between2), fitted(between2lm)) expect_is(suppressWarnings(fitted(within)),"numeric") expect_is(suppressWarnings(fitted(mixed)),"numeric") expect_is(suppressWarnings(fitted(between)),"numeric") expect_is(fitted(within, append = TRUE),"data.frame") expect_is(fitted(mixed, append = TRUE),"data.frame") expect_is(fitted(between, append = TRUE),"data.frame") }) afex/tests/testthat/mixed_with_dot.rda0000644000176200001440000147151013664111747017721 0ustar liggesusers}پvW|. EJ+Fw:[A'% 4H}BG D RH! =Wﻣ]Iw>f;;yl jP($E e'¡)G*7}+fX̎^r))2'r ̬Gn6+[Qw/uv._9\Ee拕jy/t^f',ןf/wols.۟/nrq\|u?Wl_X1kjRtϭ\/*Cb%8N?.>7(焟ҳ(^9_=/; ep#K¹Cre|kSs$\%YDWbAB,x{U ,vyn޴|_`Ֆl1j\eR8<+&|۔+ٖGSJ7d0+@%We1Ty~\~jv[*!`Uֳb*]5LAպ.h @(&],ʹb_.wīd<[ŭ \MbD9eTr|hwJp wT ΡJ.^0CeBX:Aـxs}HAmB!1mK8DT|qm`x7sb</,l?-#>7׵k~|k> 7ijCCGuu GBDUspnΏoT9[,@*+%H̹|bŵ*l5^:kƻMU5 ylaD*d|tVԖ*,v9Jv3TL&)"r:9lRz\VYB&rG$zBrqTܦ\1WV-JfdҗBپ!gfPXN X+7 J*ep{yc#=v'A 7ʠRU䦂F%xyE)^nyKP~YHۜ-nIcOXWz|.Z Hpf;.vF]1d'{#5Vp(V;1Uk~6WT0E QIG4-I\nKHÅ SEd|Ov;ś"\|͇+U\&('IjO'ǽ#MREg>g iW^y|lcf\4Y X}9f~{dՔ!-{5'^АkLJ+0 !`n(W"うMݽsԹaz-WaV6B7Rpl_O$/0rDևʹl5;S)1&󡪟T˙kT* !4:v:Xgoe&>n%gu9(B՚~+}Sjx|M)NzpWetf`o_h>D5J}¿[k{@G[+I43^>lyVc#k?VYX,^x=MsoѺ7f{'YJ >a%7/MJ1dU+Xfd+]p%_.s=cU,iZDBknYݜe?YF{ -.w}-Cry[#S&%=y-0 Wr*ڝMf_<]tIXġ&SҖF1"1:gh}29WPYvo&4yK߼p[MN\3 u_4L*^SUZYQܚX FZ=[~P޸ƙF5ԤwOsǴoOiMAQKm hoAƳ2u\WO!_e.*{7d Z!EM6 zu>|+˗4 Q.]'OuF^BVINrCCso)6\HFD2I+}R+z;2.}MewȗE](Άf_uj%򚑐U2o m]օخ4VrճGX&.z'o@4QdEP9`ϲP!wg{%nd}O [jžurGӒO)С[ |04XA+W2P1; EWψH9, Fj4mT2B>AOiL(:0,ԧagK xTw5T'\\ք6?퀓{=>hjy2rB6ʸí*#-O$ ֍$mLBa{՗ۆH5/FF=m@tQ՗|$~eUv#ko\K\1)P#~-鬏'}$K_ ^dK>LLDWS] #SWhwro6VF} 7;s7!qNRR\ޖ>Ò6ȕ4QF;LZuyH+r5ns7mfE)B:Sw>=[*5cwc cZQ"!>z:ۉ;2$߬h g|3AO ߟϵ$@JP!ohg܍;yVK~(˒Q@ƙH뎾:;.͞K0oWح ؋uj?>w5qORB7B8NlV[7lG}6l od;+|:X!#%,+~XjTZ7t&Cڍi9Q,&oOi!>`vk5b9Y$O+oFZ .mf!|kkt$G*h%?8TT@!Oж޹Ζ)䭭;̰hg:%Vl投Q~|Pl<6܍#@6mZp[ϵVᶬQp>;qni)4fnt 8!פox ~bBB-hL5.뻢F r}RZnu I3ӺFKZxgj͸n\hS1*Ln '^f! Y(aK%t?H6I.S N N= "d!C jֈ*Q:}xd ʕhYsl:#s9RB]&ߕr.YjK3q8_\|.+;9klL V1 JtaضA7U G8Z>N382 dyQg|}b.ܙg^1:.5;֫UR]}D.A|͢ߔVX'T;z5"V`6؃(9|Yza9T^͙sbkwR?&79'<> ڰљĦD% 何4 Μ2> |7q~+\5Ǹ/khH{GcBStύfu![K!}m@ bܕ}>$bkl9+?e/Ze 9nA/iL4GGA`MN{~grgCT}xCޖidɸ{ %FYC/i6Jyoo Xhh VX^bn?ȅmͤ~ʋ 1G#>I Wrݭ^8yz4TSۧ-ǫ}N/yAQZf3Ė=eTX)~O JWФp`A|R=- fiЮd,pTQMlQ۹&=eW:Y]\_ؗ/XMN7:Cr5{BNxx|Ҷ|* ηhV\_ͨw{ 9Ol@ ]2[u 5WlMŽ|HɊ_ZbɁu}eb}*RBpٻe"4GNC)N_+pVix}f/{.Ԋmgr4Y)?|A$վPMk(s#\ENS&%D[gy'|N[N_xOoA $_ B?a;m'՛5|kzU]wj{g}0s {AWβicѠV7Rm)X(4->t?}n` r8MَMݜ)+hu4yّ66N=e96oKg&Efߋ} GPj8\uBJVɤwKqOJ2ͻ}$yˇ1a9}lW7e^;\.shy9e8o~zx.(j>]i {e*I֘Kl@_;L@yP!~ ?пȹs8hͷ޿i I 6zT*z."R$8)s7hY4%1?ꃀX<Ë8Uǘ"~smCݦ`E;1.{'JZ e+UgJWZ92z{BW*C4ti&zt>PS*-e %͞e=)Cw&T}r;eeʻ=Q+kŃNqkzC:Δ*?i z /L?!Ґ(yu(5kH"ߌn2 rV*v-g#v9Yfh_aݽn?wD5fL>1 X2纵Q!cUrlvk`[9 &|zhɽIH2soau$hMLɜ 2.&3)g1 {xdT.d'd !B>Ǜ&tOOZAf i"iEd۟rdP(P ԡ7&qA'W !Sѓ[Bib"dĄd{LVV'0P!-BZ&@Z(Ǥ+<QRKI""DdDe~#&r㴵=\ShJii@pL =Mh<x\$PfdJt [UgҊ@!)/5E;'Sg/6Ƽ->H$Z5~/E B%ѧ0oUiXxL 6)= Oۼ5i|Ag9d%.[Xɶ{)t)˭lcu#<ӒVE:vo484lW1\3% ̋pkc6olwLbaGz`*>rTe^gsr_^m\ѐWw ԛm}fěQrJnu=:A٣HטRuL{:>RWͺB~]M}[bC*kX}dX8t%ӟ15scۘqcΞ0 ]b+3喘Sg.*iI׮?y~wJ#&{Ԍ`cyn ;<{|jE&@݃&0A{z 0&: &-Wj$"8/|u?WUBCA-E`1e F1M.8o48-i-ZG&AtUmr@ŪL>v㱪BpL=EB|G S}g7N+&x*EȋcҗFIJ.[<ɅM!* *1 {4J'1I!+1P-.rɾM嗯xI3v)bs,_䨯dN+/˾\~ٷt f_* g_G #݄&p a= gjl=J3*: $is%?C*͞ҕhNDeߍh6uR9T_L[6gRt 7Ӗ.$(B_Um2ԶM~ة2/׋/8#Q:h|[8%XF T I{ 虹gJUmmKWhл>&P<"kdlj{ wϱLBgN"ۙ,ɟQCÛbQi=_/wWa&xK[hImW8j@QIOGm?='&rxbvs!)6ʟ?مI!$!$ ~c =EH<"2xpU&x*DȉcҔF) .hIwE-*z"pO\h+ދ)^{b]-ecb *D/낊M/тE8˳ʈLK7oL"BG<;#^+D8ID)ӽ(vm͖+,QŮl^ہsxƤb~$9Kp[T?)6$-nnzi{2->M#qvrqgcqDCrغL=q+Vf ]6Dڷ%XYIM'GQ}#:C>c|?)v9/m!BまM,) YjN>M$%rz iOrD/_ HzH<J)|#^)GU pi'粀@))Z}^ο|fi8Kۤ5-2\o9{ ꘸-r:\.YR+\:gϗs[e` G̷؆^ǂ К9GÎ=&N9@ :4GS m)b*gv,T9_]b w)Z͖7媻IU3xyk8bS iiWrd>bc2 `Cm um 2F^-ֶ͵P NINz qV;0K;F8('y@|HZ &{/S1.ݷ@5gq6;\:*.cDfɥꕭ}*YEY/ri`*äh\V΋NTݑmo}h ՛ډ#WYm )ʗ^rXhycl=/(tJ]z5h +q}IoklKܑ.g {h͌шcxyԌokFEΡs8kw@Xbo[Bι<`)wh:{T>uC]_ݶ|Eg4x{CNeocoKcQ-,79[f_LDP*uBhAjx Y%+ܷ2Ir.gpUc[&je­xyJW47"NWqOy7؉Yv&zpAZ<&U>K ડ! M=~KGf|n=퍅{M{Rl .W`48k$ޠ5Oq7'ۜ;ǸB d~rZ 8qoEIxw?] iP"d6ly 眕%ҠSh&k<9ݨ׶rijv}\׶aš`=hi`bqy)gf⦕žQcąg[d}|HZE D;Iҵ`1+X hKmp^eQ4{vŻY\G#s;M?UnG=~-ϛݫ5/<;>3o\໎}1{/\7k)x1G|]h6:wwGkgs:W>'Of;?\wMWOj×qu))3O=ⴹu^`\e;+NNsoZ6o޿^w͗z~ϗg>;`~sSf̏Ko4>9e|\;N3#>tfwx?$sݜ\k7uGa}󨕗[΍"='5{q{O/zckoٳ_Uk~ᓧ~g9Suf\_k?4Ksn?hwǝ[9ysݭO>EsٳJ~锒m/vէA^>d^so4{;m̋z.]ԻwQEz.]ԻwQEz.]ԻwQEz.]ԻwQEz[:9I*[xԡPkbDFR*kTK2HjZ]Ǧ\lhq]7)ABu<puo&LsKp-gp5"atr9̎tL/| _/| _/| _/| _/|CLGfO/o~oAlZkV|W2>ұv>IC<}{=Z?q3vuG,g;k}qėӀtha?\8->vm7]yn9x?{V:މbKߜ[!?<5sh i{$} Loxԁ߬eY΅g>wd^~ҹڅ!Azŧqn0]oV|y~/~Npn? yg&Яs­y ]}K78>+ޚq‰ '|ᵦ7ߟw;qɥyz㌅[vu||Y])pت}oWp|{A/X;w=ϝq|mwzϳv Ƈ=\8>q'K÷7og^#D/!/\~x[ߐɎvspl뤃c%y:]qMn}:YzB!쾌sgAˋ?h=m5+oگ1]c=kz|:mwonybfz8Y\d>7k;wr|v;MOC}6_e:ѳˇٟ;h|?쾠x[y'VӵNz;+oПwX8^'XY|gYͷ]>B|:zc ؟o^wP+NabxX͹6r֤ܜܜ+ڵ`qDxKᲂwyrc.VMǵCmܗb cCmXPOB"׉JuQcJgݿ2+~v|M L4-s޵α!ǽ\5~GD}_O$/bu0r"v;e"Q)g޹\|~gQ뮣2szi~Tz͏̹`C3gҾI{LG^`.Ygͥ3~L(ׯ֙ߙ}gr#z?Z3Y8/l?{zsW)j?;gϷ}m.zx*\Zus3)|c/sѺOi&{W:S{\|t빵gk<q獵Nϱ뽶DOzΰ?3_s>3_[uz9->Gjgkgkgkgk櫗j'}k^CjێW̤] 7^v5ykgkgkgk'Ug^[w`)'ܷӔ?kfM}{- 䏻5 5yc/ṋ)g_Z+k[|5?Yf[={ A6Sߝz7 Wߏ}Gvp}a]~"EO׌M/a|7yM}-xӛ vO_pßoaיִ.ұɅ7赭Zm}7O>{?g.yݑY7=mvҷ/:sԷ-?zCc ;5U-;?]^}_ey=mRswwqSY;kMO8Gjǝ}CTySks[#Jvs* }7-}}p|U] joc~?Oh]o:|?kS|>=õi}O8}Oq|W-a 6߻zgsڙvnοw|g}͝ۿrLf8o8|cv}?WI6ߙ{mOpl{m׽r֏Yv3ZW^'wmGc֖\V~/Y\9굷^COm?Wg->~UnN'zyWtPC'pyKO8ސr{]/^0s꽶۾׎=?ͳzM֯ {E. y}wpO_?{;kqqg- }7Ot}w{;kߏp}1W|W?u;WGLM{{<{נ󵥭A|oo믫z# y7~-qݯ3*tX_tlt}=k'zg㸆}={m}7N=w_u}3~w{/2ͮo5y&nwm?8ʚ߽tⅦ۞;?~y~>{y# wg<|ʟm~ВN\Y rߍ~Yw{f{-jw8^}@zֵ~5k/^W~{?87d.qz@*{yy6;;gfgn|_z9p١Пwwsiޯkپkckoy}gs|ɵAwڼWoLXhf~imc}|=?™=5NE;NXpe_}Џzj{egk 96yܼyS}׭/ZC ޏ [S<;7?ԟo5?=Xγ{m3_+βqqor}r}3_wfv~4SrӜqܜ7>P5ߟ={A5k'xk'|c"~ߗ7ykj{[zAg/֖Z8nwVxU ;w~~~|;_|.ߗG<.hoy?_NDg{i]׼)u^EOI_7.L:eΰiC׺6 loq.}w6_|m]g8o?]/[vwgX)wnf6{>μ͙yX}g6nױyZw$g~#շڬ?%?} 8GYflM(?^u8j?,| _/| _/| _/| _/|N(jFEQW>)WuQhEj*r(kfҗ-zX;6cx)v 6ʾZ|sN|V|ԆWj_1_ d3eA]W_ }vv)ѥ$~ݧܴpF{Wɻ:tU.w"Н Bu{I ZR`45'k(0\O6fۖo\쾕xV~'T["A@{`0:/w/| _/| _/| _/| _GܥR-lsBcsTP.,{FH5{Ab6ox \EKszr:\.V͹,g `4lb/_Gl>JC+ <`B -BV4*`Mbʼ=P*v"Xs/(v% 4.!|U}옘o/!7;B^R~))2'r,aV43mW{.vd6ܵїhkF|*}lJڑ Q8!Ŏ 7Bnj['^ |Q7lf{E{āXC]a+j3$}䘆Hs~p8l^˷dX5/9is YgaCN|=#DSL!YYqC?ɟudp9m 5L2 *fu/^'ܫ}f\jĄuڐ,z'9y?\w|PޙVo"=Ϭ[9ɳuͪ:>1vq$u1}g: $}2>̻ m3 ܀xPLJ?/d'{:N#Mi]ZCl$u~pp-Zu37u̺Ul.,rS\ɱ9䗥 N 5i!Nsl 5gvlPnw oFvJ򾒤rg8CNާk{iڗ\^Kꋦ1Af׻۸kگ] v.\'Toi~\|A?ǹwY5 >KlL*ENBVWgre,Hج,Oe ieuwf7!Ľ!Okwc:z|ϥ/T+2taU+Iuy{)_kw.zRv .夾9Z 'nZ9~V+pLXߦ9V\ϒp ,85!o]R 'q_y'Vu!Co7̐N='1=7VyD}dV{_M찰|xf 7)+5ֹ)NYn/Lhq8' #Vx5?yB~OY6zچ6PDW- [#!w09e{ DbCbu%A ;˻vscquO3{9kHZ$'?tʝjn33w/za}M_qw0qn?6P_BN6#M'ЉO{L+lĭ ]A{%R~-ٔ\ ik Qсl_T՗yfp)g!'3ٳ Bg3G;*dvYǃ[g4pɐ=[m4f'[KR |k֚!Z Y!{zrexg=vtȞ]ؐ=cn=a ٳnzȞfY I"""""""""""""""";֜I%썴;Pف@g)vf;Ȱ ݣ{G{tt(#=rm յ6T׆P]kCum յ64׆\kCsmh ͵64Fҵtm$]IFҵtm$]IFҵtm ݵ6t׆]kCwm ݵrm\)FJkg&"ϻuI\y"fy}Ykn$o 55 R'D23OTH ٍB8EZ*?Ȳ$Y%k}Wܗ

n^|p֦z+%,~[ nv܅ଷz!#8@H p $8@H p $8@H p $8@H p $8@H p $8@Hiadu^AFVY!@HiEp p $8@H p $8@H p $8@H p $8@H p $8@H p $8@H p $8@H p ^8҈p [ 82@Ȁp d 8m 8ZȀp d 82@Ȁp d 82@Ȁp d 82@Ȁp d 82@NXE3guΐ82@Ȁp d 82@Ȁp d 82@Ȁp d 82@Ȁp d 82@Ȁp d 82@Ȁp d 87[8 82@Ȁp dl5p '78 82@Ȁ崚pXmPJ)p8PO8P @ee8P ښD(p8P @(p8P @(p8P @(p8P @(p8P @(p8P @(p8P @(p8P @(p8P @(p8P @(p8P @;=Ypp8P @(Zu0bw¬O8É0 laApaAW€0 8€0 8€0 8€0 8€0 8€0 8€0 8€0 8€0 8XpaApaApF쀃0 8€0 8€0 8€0 l}paApaApaApaApaAg€֌€0 8€0 o٫vѧwNM`uYwm鵥?[C>ZxS沯_Z[᧗xy k:s*f_v>ZK]sWk ɏ|'ғYǑڢtVך}닎ͼif05sWwG,Oξs]v"-|ݡuk?8}f:޽ԮԚڜ÷_}'q.}?|ºߘK6VߚGekw>K%Ӝ"zxɍ'~+7߾tRj'o~oF>?e/|_i뾯ϹHB*eD4s<\q""e 'Tϊիcr2Xo̺Wփ9Y_G>YGQKZ[QoQ%?On1val4RTd\u3p%.v.pehe'SV^͎XǍZu+}pO y?"UKX%X = }0j#]4 sZ ?. qMå`KS\ͪͺYwx<+a%7s64eʊfݡP[eyc-+ vm l-bʉl(g_z>YߦLrC?-ćJw˹Mbx1חTXjK7Qx42?o_-8sMHf_%12neY ,k>͚biM3k^˚ϲ汬4k.K il>-\sy|5>sy<5|5 66gͧ(...............>]k0dg:\r ř%^YNpofpoVpow K;ܻe.w+]] = }>C> #> pw-OwO >>n-pw}wVpw}Npw!1)=sp=~~Ap;p=Qp{?{ܟ_ Sipπ{?ܿs_mm_K /_K /%_K /+%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K / 2/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e ̅^W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _C餎A: H1;X}'̐x/~$ { @v_{Aǎ\)Fʵrm\)Fڵvm]iFڵvm]iFڵvm õa6 ׆0\kpm õqmd\FƵqmd\FƵqmd %p!&PC xa xh!ZKZKZKZKZKZSњT5hMEk*ZSњ45 ihMCkZК4$ZK$ZK$ZK$ZK$ZK5hMGk:Zњt5h-Rh-Rh-Rh-Rh-Rh-h-h-h-h-h@kZ3К f5h@kZˠ Zˠ Zˠ Zˠ Zˠ5DE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKT DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4 DC-PK4Ԓ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-QKtDG-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)Ԓ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-1PK @-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%WK‰X rc'ɱNS8M rL& vnM b7A&*****$vnMIb7I&$$vĮNĮNĮNĮNĮNnM)b7E즈"vSnMib7M즉4&vnMib7MĮAĮAĮAĮAĮAf !v3nb7Cf]W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W[nk M"/| _/| _/| _/| _/~}!%$>Ӳj9=(lCݫE=ƻK^{tUvj}F<,'bθ}!ҠiIIn1x#>/>$'..............[ݚ1)9eL ᅦ~H|/ᅦ߁!w{H|/ᅦ߁OO8g֯9[RmG#t{ؑȻ;ۇ#Ȼ}(>n5wP|~(>ۇ#Ȼ}(>^?ywGCwP|>yG١Ȼ}(>nۇ#CwP|>yGCȻs(>nۇ#{P|9yGCwP|~(>.>n#Ȼ}L슏;ǯ̏K?ްނv/| _/| _/| _/| _G^o y~|!|1_g rղ(@v1+wso +rM+V׿j<7ϞA/X_ϩn] M#,r;ǭ>GH 9;ӹܻ9}¯Ioy2ㅋ>1/&"'$蹀7sehZri)XH5W*$`{QF,J4(x1ORϾu~z==}nbl[ Rs>:\o֭t_=e9rϾ'~7lF˝X2K Rʡ6/R3-ߕ2y8LNo'4$ծ$CXZѲΪb1<:bxԿ}hvƏƏ5fӅqC9)uրÍ2}wbCy1$ I0ki| iI[Ht.mmb 7VɕWSʚtaZsλF^|{ G{w<2-Wrt,t&Vm9+zS(>DMOƜ͓+ˆ6+`xU@q?!o X+hp*/0. =;5e] 3 @w\n ;\.aip/G=Bemcs<IOoo:q0 ;3 >"i:C6TM˻eX\ ͫn ?Su|UY11 >kIH"ll3D`Ch|E`&"N8_~-7UVj|A] noGkwۧ_"xgHus Xqx0Wze4ӿl.E=m9V*̞czfKw1YUdƶ튪WR谦XISs۫r1[bA&eENKtV4zB#ڎMBR x:]ox6;5Wړ Aφ^QZiR* R$N;/cPT`}0hNʵ?Wִ}[j ~:;?Q;pΫ?֢o?=`k3n\ڒJ,ӗZqOq~5W|SNɬHwmGK :k例Ef4ߚ9;#kg_v9f~}ifMy t 3[^mj|jxm/|{t]m߸}ѿUA>>{Wao%?}voM#o5;L%n[9OD?w.Dmޚ O#S]3/| zawVğv;q羿g\sT䑣}gLܻy ~<kǽٷ]nu|N3}=y Ψ^!| _/| _/| _/| _/| oy]Otz_]'Ɵ>1D'EO?/}b.QOtz_]'Ɵ>1D'EO?/}b.QOtO߸^a'ΧĞ8/| _/| _/| _/| _G ''ڟ>1D'EO?/}b.QOtz_]'Ɵ>1D'EO?/}b.QOtz_]'Ɵ(?xO|>ph K v$فR  vqB(%#=JGip\kCum յ6T׆P]kCumh ͵64׆\kCsmh ͵tm$]IFҵtm$]IFҵtm$]kCwm ݵ6t׆]kCwm\)Fʵrm\)Fʵrm\)Fڵvm]iFڵvm]iFڵvm õa6 ׆0\kpm õqmd\FƵqmd\FƵqmd %p!&PC xa xh!ZKZKZKZKZKZSњT5h͕EuIWrR !*1vlYlnY~2a'>w +%?_W=cӣ 񝋾5);m|eo5/uw'>}fw;f?|3woE_;}涳s5ƎT̡~_8r3מri:u%7FoO;/n7Kq}\Voo̭欕G fē_9h=4. cg^{o5/Zfu9ܞOż Ts3wow~4/?oe^gϞc7,䦻Ƽ{75C慷^S涞ߴWsk+ v {?^g^󵵕yK̘I2%ϼ) mkmn?d;_m{ͭ~5{bV~#)-}J?/۟~sgռ/uy/|˼WߐSzi;= _?`eyos{p/Q9]_w 9؊ u봯r? ܾw0W;\lps hpZJxpІ,jR p'; v(q-7g_܁ CppG; 1悛8p-\. .nEEEEEEEEEEEEEEEE'wޭ9ySS,M\bNLqʇqNVV{;嵏SfrcGwC(Liz!W,)' v dpK- p+Tp;V[ n 3u[ \/uփ; Gw׀;{-55.n&p YspV Κ&m vp;]Bp{NpofpoVpow K;ܻe.w+]] = }ହ 0(8kcqpIpip׃g}}}ܗ}W}}7}܍nw3.[ {nw;; .p?#p?p?3pwܽ~>pw?ܯo=~0G= 1p{'pO3+{ = pς{BS7dԗ_K /%_K /_K /%_K /88_K /%_K /-gmggmggmggmg_Ki /%_K /%_K_K /%_K /%:p /%_K /%__K /%_K /_K /%_K /%t%8_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_K /%_Kine 2_/e 2_/e?/, 2_/e 2_/e 2_/e 2_/e uk;CkAk;@k>p/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e 2_/e X]~W _+W _+W z~W _+W _+W _+W _I[H+W _+W _+W _+W _+W _+_+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+W _+Wʈ=K'Naaaaaaaaaa*Ep0? 0? 50? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? Xs9?qr%x}XofHlE^?[Cb+WV_% Wp\~{+^ Wpὂ\v{%%pӺnZMi]7Ku ܴ.%pӺnZMi]7Ku ܴ.%pӺnZMi]7Ku ܴ.%pӺnZMi]7Ku ܴ.%pӺnZMi]7Ku ܴ.`&pn 0f7L 3`&pn 0f7L 3`&PKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTD%5@-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKTDE-QQKGء}CP|~(>_u)[u)W[u)Su!ZC-PK4 DC-PK4 DC-PK4 $ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QK%IԒ$jI$ZD-I$QKtDG-QKtyvuC&>5y0:0WupoB&TpgB7&Tp_B%TpWB7%CZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKR%)ԒjI $ZB-IPKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IOuQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKҨ%iԒ4jI$ZF-IQKć!Z2sSxCњsć̜C * * {*;*+5@-1PK @-1PK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI$ZA-ɠdPK2%Ԓ jI9999999999/Ɏ]Hߎt]v$;&v'ɷ#//ڼˢ θ|θ/zL4G :Q?>b}^]\aؾ6+ߟK|qb_5_*$/6n.WI;,+y}Fx? N /t0 I"]ܢh&tlRǮɧc#X*  .p0KڐDF5BDTrus,f!oKK ^6\fCZ97幁bL)cCJ5[(ijbn[|k0U;; [ٽ쾙,Ku$~nkǧtkYVoy GޔX3.+gZ L hXɸ4\RQ)u(l)TG;9e8 IrMsƏdƉJqhˡz[bq3nX/ޟ|:"=74^H}fuoUVgVtu!/Vsrej\ d쨢﹝C}Mt=5U:4^骶[yQn'wǮdzQ.}Z_C0z:7UR=OgXê~~,|ִZ;W9Y&txWMop3 P=C iع{jFv 4w'{6Ib\xw^m᭥@wr@ǥ2_o~[y?ޣ~49Mセ=)/*mVqEӇS5a9\1N=Ѵ^vw~S$MUuqh ^n]piLC2Ƨ*3na}zb47mx\_iphlKQLRFh~Cw-Tw Z8N|8bgC|\ΏUZx>@Ұq_uo1dգ,7![}NI\u\XKCp5k?5W-Kl/\**ﰖ&.7톘| ޯ c+mݢWHKۊDu~ =׿ 70URCEdp̞~'vφP`AlYk<9p-jäQEgr_Hߦ(X#W*n͕7}x_9_o$k`/UDQl}z!K+ez:zSy~ U\_Rɖw` RF𬢖9a}HBb0=(C,gԝgVj>bUUNtږolI\9Wg ʹkoo]/vy[N-ǩ85uSړXVV*j[A^I:r߭\Gy)z7 DB@)Esۇ@)'cY=D0 WʕK_8WK\tkJq1C?W+@WgWx|gf$!5νSj8tH:R#P 9.ݿT|On6W{ޘWJ>%II  |Y*G@Of50'zoعO7Vrn'MjW'\ sz"VuU罌ċj6rmfs][Q,thB>F)` _SeZ\!ҳOnVk,H̱YM@U`g@70KkS!7Z,Ն@*| _t+^p ڟ|Th[UC>14|q+ԅ8kز(l. f7 mVYါX%W]n=@=p(Py6dNZh}y(Yپr*V/#0(Z">rGfhQa%^գpMx:A&HڧYӤ&uukvޜsoဘ~/b< ~kdȮD-s^-À?&F҃$ݴ;;@4Q~=>>ҰI#ǿ.{@rr}cC\[7vCډ# bϻ;S'4M.1ԕ{m-޵# bC;Ӝ]©oylpXc\6Kﭻ[ 7ݱc y.㻘ǐǛNݶ齭wÍ2}OL~_9x¹?}h8;VO5ַ{қ,MϜx6y_y>ӟIZXeP}K $޻ꯇKk 84>!Ϊ߫qg2}Bwx(AkC,i|ٚrQWKq7;sų\ܙYRÚub 帝oi~HS_; 䜫Zo5WyYb9 S Γffy3LzOJ7F:YibM YZݚ-ž܂;z8 (5,v4T)F^s&Zŧ# q5\\'\9;6UdEhk@њuua|fvR k @߇S,>iՓTR|_+ ʄ4W:㟮HʘNRWq=Y&SO뻙lã­]˲d\aK = Bb-*dlVY7\.[ag}%Y*W[jT}|n~}*W!ןV-Gsׁ%J Q*:$@Y%yw[7Wh?[*wV7gO{#b|Gi8W 2Tښ+y^:f-: Uto&C5įx }2.k;w_$ߚXIq5[W&~qemHLumHO!ղOąq539סCxdˡuݜBhc氻'K7|"g5pYql8l]~1ڎ{CD+U yJӚ8XU&\keQ>0IpW8Ѭ[;ŮQܭӯ{:޳?4F;7~#Hn /#tV͊S֗LrPhUBwP}h}s[錍3kqӿDpڛ+ITcnWc|tW2(wi0ΊTMyKsLaY%-hf&O## )enVNeihz5W/6(ිy_~lLjpRax)7p[car3}ٳ!?ʩ9Y*ievq\=]yz*vM"g*4>6/Gߤhh}:xtW9}+WkgvmVP'_d2䊰ًpb_J$h,?&3لȹ}l4{t$xP0Q4bv4 s\}f@xyJ/?s AwewQ.\Fm<\T^zt@Q߰hX-n~o#a//zoi`.斫ثض1}NعB,V bX17sƈPYpi̱4o\>[KgGge~h.Vپ7[sB~"QfS~kȚ|Ru~2Z'B}-I϶ֹ;Hg Ywػ&ՎGM .fC1>"oבWGQJ\ۨm޴yع<鼛|Ng@b #tXje}g77BwRd V9;{]nhҺ:;--5zfIЁ-ZT{z֯υ>mX1Jt={EzeY2hg^kW{Ӄ]m=]T7gޕv+{h*-$trw0􆹾ٳ06ޜs +$";ȹϐcX}s5ɜC2].UKC>Kݱ~h a.k7EZ>~R]_W9/kc3_ec㳽Qxًݲ7皛hjjMYd٧K DD/'8!E3hfl4(ڍ)iپ&9f$bkF1Z䤘7SIIbY$>wwq/0uf22c1x}=tndXs[fXpbz^+=k4lNTh@-rn@*+ĠdLV[J_1Өh-W,~~_8-y F|s1Co(NG]j3ٛByAݓS`? 23nжNBxbl4Bh#@9lW z M)Otv s _LO#`{FB !>}3,hNl~V}]ޢO^*'pߧvgZw_(,ׂEyH*b6]E,os^aR0泙!:K6?'0"k/| _/| _/| _/| _ڇ;kp~AVv/پ3 !{컵Px[W >Y[R$۝eho7)ݗdoC;!Ib?VٍFfBx~ )G.D= hhO~ 6ij2UqMOe=+V0D~#ttEɦ[LPSk ?d]X:$@ǴcJׂŬ@. *iT?r.=[g[͞?{=}eY|l 9环2 WsguݟsC;_z\sKnM;_6~m_dy~waޠM]3I{n1f}S~sݷ5?ۯ4mx:93{XawwbG}4{S.|Nݏu}O٣\< nrCϽWkgW.ywl̿UuM>uoX{l̵?Еfܯޣ̞nY4?=S{vߜ:s5{bOv7QEz.]ԻwQEz.]ԻwQEz.]ԻwQEz.]ԻwQcw\'5:)wvԡPkbDFR*k{ERؔ Fqj\n֬,4rWc)F'ǝ#HwDc(| _/| _/| _/| _/|N~ȳŶ 5p>( ;oy_p*vzJYgY:v.=5g8i'zO ;>z7n2\zӛ - kXynks~]t~u~gse5m9ggw3//v?cvޚ7U{U;ϏmXuvJw_"7 ?} g!?߆tipϵ||-o~;u`7kospױtvau{^eCon/_okA<˹_?~>ޚv̟gt/otO;Ϸg|X/?bZ>?sΐ_CXq;NNypϯH'w^YɅg4pkk2}a>ßojWR:>>?ʣ}p>Iux=a>\x:;fNoA|d}l|3(Aڐ_C Nz8} zγr\krp|^6p8csx9c1g~o1~ js>ߞ~P?y ֎]sk??o8>?vv³aO~MۙWg|* ?kH? >V7w3ǻ,:x$hoW~[߼EP{?/gY/mO[۱aLyU4dU0gƷg[%='uq__ջ ''uffۿ? kӏ9j-O],|ׅX z0;\7=X3+,2~}O?p>v#{G>ZrC<+;о+{U_;GvdE7CA܁?, >r;XWqK0ߗ~`o_M/Տ!>wqsⷾ[;ˮ'} ]~]s_䮏9;+M>s ?.y]~z(Οyk_]N7(&ćn ҇n{O'^G {Ys^_0硁co4T|/}<^?k.w+_tHէ;1/zO}}_[ki0wc ~Cy̹fӦ >m [M{_ܵqZ||S?xv{c_,8%l)2x e{vo7]qUV/3߈o7eAY~43pV`G~f=m42-ވo7eǝMhC-3{-4xїu>y߇j8{ټU o/k̺ſ)udC-3onȤw߹qKpޓn?j5//o,վw9v/ן_v+ol,;\fo|+3U_81NqC/kPV|"-|=bv_{{wo—wݙ}k;`^3ߝ91}y3 +q+\t`ۡ}|c`說z߸1C?aӇ;hv#߽֯F8'<Xc|m[n?'k?wN[7j Oh{oZ~3ouk˖41xO}r?P/~yq#7`?{*S~jye<)_xV|vW:ֿ|f>pᓿzsOVu؍m|=q7a.WFp?g=o7v?SO9~wA'&7fsχfc>s/~@]yx_~ xq#m'N]`}{^}G_yChv7[-_|Sp?}mo1ZRKYo8 voݿ'QOՇOqݤ|1~={K'~x>iw/}j>no}~}\v U~DZڽu\]}KR:,l{wtצ u>߷_טem[w;̤G7ھF_tpq]p⃾ܠww=U'GqmR>o޿777$^۽g|`ʹ7'|دzh/1+f_x[٩{jpZ?7+OdvooߧuϷ޿OƂs1}ݿџuٽ?oK?rEf|ko_^~G!JqEG~)p#77d7&|o*v{MzơnI귉۽yz=/}񍍃.9b^=}Ona'is&)ͿxDX}ѽK{CΏ=DLݿ7ʧ,mٿ[ϮO^It-d]OzpMPu~=6~>_ŷvt<$Ӟǵq'+?]8ظgrK n?o6;2{i#MҿOusƓ}φQ?W|oO6ߖ^]ݿ7lJ{cISK|{$8-!gVI}}Ǿƶ?N\՘o};<'C>388ң5DisK%q4k|$:vo߭O};i&:o55Nwq]|{ŦƬ{`eNg?mzO];kU F_|cZs'|/=}_XT[r7f^$|o6{$=TM/ۜ&|pLԿ+MҿuO뎋~gcn6ϊuqΫvozWݵ緿 nKq'G~Ʊ1ߕΚ󿅫hl\u5'Laqju?Px?PhΚ)>MwCQ5qqqqqqqqqqqqqqqqq+Ѥݧe\ldc/yQ?EѾ+T\]Wީ28xĨjg>]50UjקԲʉԦng~Uj3*6fnr*U؝m{mvP×;:2Z{:J˴{}'yo рnT:}h_w3?A@g.=}!8888888888888888xL2U{RٍcR< rTT;2M*فIR16o{8V?2)=czq|}'Q_`>1TY[_2Q:d+i0X'\C"ʏ L$t?KcְZuz9qlώC|m+c>q=cb/Jqύ7-ߓ[aXo3Wu$q~\R`ύ'-@8(ߚL{ROu8Y}N李t|mgwivLfcΈX\l CL{+;d|,~³jc;ed{-Aϙl0".ܸKW1{3\?[^o&{ IjWVzL{swkKl~SFp3+%ete0G/pLą9~+8>,>w**VuplMK,mfuBmSu<3u;,JdvuPV}jzUd#Lfl8U]jy\vein½ ҵ N^Joev[8jѩ>&{.aWώ[oW/aus\|,o z]K;]Y{m cǗk`rq8 ݏS6Uq,:_a)2s3m5|]k2hm-۹&Os77.3 2oA&Of='CƌYٸY^>fvԱ+q~7m;yT=:c:ŕqFu{r{0[WxWMնSi=.P6=77C?6'Uay{FJ?2q`> }:]4ΙUv?ϊxsvP<>WmS{*ˋwzZ`y˱)-έؐ8\aqO͐64 qWa3Wg|qV%3ԧx֓Vpg=ڴ8Q}ґWӊ8fU>[կ{qqqqqqqqqqqqqqqqq`_ǯ_ZI%LTV G%\TWZԗJILRV$%)?I%6Ć0fbLl 3a&6ĆذVbJlX +a%6ĆذVbNl؉ ;a'6ĆذvbNl؉ '$6ĆpNbIl8 '$6ĆpnbMl 7&6Ć^bKlx /%6Ć^bOl ?'6Ć~bOlrb('6ʉrb('6ʉrblR_%K4)iQҦCI%}JY+Y+Y+Y+Y+5d$k&Y3ɚI f$mJ:dz)Lhd&%ɚK\5d%kYȚG<5yd#kYȚO|5d'k>YɚO|V&keV&keV&keV&keV&kb[,bEl-"Xb[,bEl-"Xb[,bEl-"Xb[,be5d"kYȚE,f5Yd"kYɚMlf5d&k6YɚM5X%iEZbX%iEZbX%iEZbX%iEZbX%iEZbX%iEZbX%!8!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[yyyyyyyyyyyyyyyyyyyyy]y]y]y]y]y]%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\#x['[|bOl->'[|bOl->'[|bOl->'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^'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|O(%tA:LXPFmvXei}fvMfdvMfdvMfdvMfdvMfdv-fbv-fbv-fbv-fbv-fbvmffvmffvmffvmffvmffvfavfavfavfavfav]fev]fev]fev]fev]fev=fcv=fcv=fcv=fcv=fcv}fgv9|fgv}fgv}fgv}f얙2[fvn-3ef.je&K[,m.K{,4d3L;;,>KS>M;d3L;d3L;d3L;d3L;d3L;d3L;d3L;b,;b,;b,;b,;b,;b,;b,;b,;b,;,6N8b,6N8b,6N8b,6N8b,6N8b,6N8b,6N^YL,W+bze1^YL,W+bze1^YL,W+bze1^YL;asJx}|:wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wy '8lq '8lq '8lq .'lq .'lq .'lq .'L\W.+ez2r^L\W.+ez2r^L\W.+ez2r^L\Wx1y.?1ywx1ywx1ywx1ywx1ywx1ywx1ywx1yw>x3w>x3w>x3w>x3w>x3w>x3w>x3w>x3w>x3w>x3lq >'lq >'lq >'lq >'lq >'lq >'lqgz3^L|W>+gz3^L|W>+}W>+gz3^W&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&}wef얙2[fvn-34N0dsM?7dsM?7dsM?7dsM?7dsM?7dsM?7dsM?7dsM?7dsϑfv^^^^^^lMd2B$1,2^L=bF&;{r27_pH&[G"{+g=/}B3w˙3ѷL-o gd\?I~3{L d D37xDF8&};[ћd-uzK˞=-{ZiӲeO˞=-{ZiӲea]$ɺ; '.ɤ.Rt^=?>2IW# cpZgܞ,sDm Gpx=xbH5$fbmlviݢŸiiq3fh={r{ܾO}Trq\msyרLPٶofWձzO~`%:ٚ޽5JA}JPu*3 _N*AwJ!s'G_j7/gFĠK^(Xd,[@rTzfik d/-I){j9R-^x.G٣ˑ娂jVuT цCr!G=jdfgUr%3*ruIBRehh%BJ3Jr33jrų3Ҭ\]\.W\V$U%Ϋk!G!\p1 &n# 00a#&"\p9+05р 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8qј1~ɑtVF4@4@')hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhA+tG{8Ѐmk$:pKt@t@t@t@]\u :p:p:p:p:p:p:p:p:p:p:p:p:p:p:p:p:p%ur%T.Wt@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@#Ÿ4p:p:p]+D6( @8Įp@8p @8p @8p @8p @8p OK@8p @8p @8p @8p @8p @8p @8p @I@8p @pPR80 p`p`p`Wp`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`FIN@T!=!80808080c(A-@       9^ A8Y Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,pDxWFA8Y d,pA8Y d,pAvkt[rA89 9 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA*Ax1_ 9 䀃prA89 䀃prA89 䀃pr[[0v_G=Ƃ|7~w`oWԻ; U/[(^sY<淗 8{e`ځ3>k{}eiec⭣̻_Ӎݬ`÷_ozɌ 3G<4Nʅza xo\½us>3Oӿv*o'/|E ֡_zCnhFy#>XB5fKXW߳'n_Xi?)'spex{xBp ^O~M'?{_^=*}=8Ӌ O{/4lA1zg%_8VWszu(ۑnG\li Gn)7<4dS8;}xE@N?_SivUʩ*,|;r4<%ɶ$4*nGv(qeTTnW&5\'֍.(][3%O^֓z"QU=Z):^vIOUL / Ԇ?1?^ޫbC#q!нcд=TU!Qϳ<?02cy ѶmW3_s^)q0U-s2Y6mrTm"Vs$ދx6ɡMhߣ*mQ(qZkmpmV]Z]1>TjkQlUVUGIvױea-ݡmkE~7VWMjW#59)UUcqX[[W΀X&{?Eq|Xy;Rr\D/ME%c:_W|)2Eձ#gSvOQ7e뜵q:_y['jvW4fkf)&y[ҷ24P&[ʯ|Lҿ|L}zILشiӲeO˞=-{ZiӲeO˞=-{Zv٥O~"{}J^R!jW kUFx u#܀Z! oDx"-oExށNw!܈n &!7#|CFGnA>IO!܊pF w"|sw!4F<A_B2}_A*_C: < o"| AxC>?B1OB)?C9#"< _"<+_#CxO"<?" O#ᯙȋL&oA'_5_5_        n@5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5?WC^p{~ / _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/{~OP4r>=3{Pa*}{PtF*C t|ЩTb#Y[O֓dYl=Y[O֓d9l=Y [O֓dl=Y[O֓dk=YZO֓dk=YZO֓dk=YZO֓dk=YZO֓dyk=YZO֓k-hYkAZ ZZКւg-h9kAY ZZZւc-hkAX ZZւ_-hjAW ZZՂr[-hjAV ZZКՂbW-hjQɚMlf5d&k6YsȚC59d!kYsȚC\5d%k.YsɚK\5yd#kYȚG<5yd'k>YɚO|5d'k>Y+2Y+2Y+2Y+2Y+5$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,"-HK,&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK!-qHK%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|Ғ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZR&-)IKʤ%eҒ2iILZRN(%b"%6YbivYci[bvKn-1%f얘[bvMfdvMfdvMfdvMfdvMfdv-fbv-fbv-fbv-fbv-fbvmffvmffvmffvmffvmffvfavfavfavfavfav]fev]fev]fev]fev]fev=fcv=fcv=fcv=fcv=fcv}fgv}fgv}fgv}fgv}fgvn-3ef얙2[fv.ӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫӫ+96|6-atqqqqqqqqqqqqqqqqqo;ܢp߾N-6e:S{7 ߘji΋V ryoyyzgSUҾUG\i;vЧZ=ҲeO˞=-{ZiӲeO˞=-{ZReOhϤ oɤ ..о5. tv?]=. gtL@;.ОIh3@{VvVv&]= t*.О.Nt(.%ڣd@{$kq2]=L t(.%ڣd@{LhQ2]=J GtvLhWt(.%ڣd@{LhQ2]=J Gt0.'ڣd@{Lha2]=N Gt(.%d@{@{NhQ:]=J3q:]LK4N4N4N4N4N4N4N4N4N4N4N4N4N4N4N4N4NmǙQG&k=kpmV]Z]1>Tj=hg:(:l=0T[1VX:^ZuPJޱ|U. -_\];I']\E~~}YUrNs=GZڪ5&)Ϟc,eWpϱ?8y{%w?='=n瘿/=sGc~y}dnKlߣOJ|}d$qvcb/FcFŎ>Sc_5+K%My{M9k;T_jkUy]NRwo}S\Io%.;oꠙt<,n^av߶ܿgrEFcM@ǻk+ kuO Fw~+S֬Qk91Lg߿寠SPYJ?|Sۧ:|)EEΟ~EWAgprfW+P7?<1T瓻p7}Tm&15Oj qrl+6ϓgN{_9pEw7nig|{Lgk.;s9/;ϴ{2?ȫybʅ/82ݺKn?r+F_{ˣqPqS?'|~`qԃKf|?K;`򣴇ߺohf||U̸1sΓ@ㄯ\IM<Ǟ_o,[_7=4k׾~\Ox@`7lw91#5/^}PcVdu={o?8x@~E!8888888888888888xGpOst88888888888888888E<Gn'| ;TT K%lpTU O%|( ԗJILRV$%)?I%6Ć0fbLl 3a&6ĆذVbJlX +a%6ĆذVbNl؉ ;a'6ĆذvbNl؉ '$6ĆpNbIl8 '$6ĆpnbMl 7&6Ć^bKlx /%6Ć^bOl ?'6Ć~bOlrb('6ʉrb('6ʉrblR_%K4)iQҦCI%}JY+Y+Y+Y+Y+5d$k&Y3ɚI f$mJ:dz)Lhd&%ɚK\5d%kYȚG<5yd#kYȚO|5d'k>YɚO|V&keV&keV&keV&keV&kb[,bEl-"Xb[,bEl-"Xb[,bEl-"Xb[,be5d"kYȚE,f5Yd"kYɚMlf5d&k6YɚM5X%iEZbX%iEZbX%iEZbX%iEZbX%iEZbX%iEZbX%!8!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[bClq-!8[yyyyyyyyyyyyyyyyyyyyy]y]y]y]y]y]%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\#x['[|bOl->'[|bOl->'[|bOl->'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^'-IK|'-IK|'-IK|'-IK|'-IK|'-IK|O(%tA:LXPFmvXei}fvMfdvMfdvMfdvMfdvMfdv-fbv-fbv-fbv-fbv-fbvmffvmffvmffvmffvmffvfavfavfavfavfav]fev]fev]fev]fev]fev=fcv=fcv=fcv=fcv=fcv}fgv9|fgv}fgv}fgv}f얙2[fvn-3ef.je&K[,m.K{,4d3L;;,>KS>M;d3L;d3L;d3L;d3L;d3L;d3L;d3L;b,;b,;b,;b,;b,;b,;b,;b,;b,;,6N8b,6N8b,6N8b,6N8b,6N8b,6N8b,6N^YL,W+bze1^YL,W+bze1^YL,W+bze1^YL;asJx}|:wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wx09wy '8lq '8lq '8lq .'lq .'lq .'lq .'L\W.+ez2r^L\W.+ez2r^L\W.+ez2r^L\Wx1y.?1ywx1ywx1ywx1ywx1ywx1ywx1ywx1yw>x3w>x3w>x3w>x3w>x3w>x3w>x3w>x3w>x3w>x3lq >'lq >'lq >'lq >'lq >'lq >'lqgz3^L|W>+gz3^L|W>+}W>+gz3^W&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&n2&}wef얙2[fvn-34N0dsM?7dsM?7dsM?7dsM?7dsM?7dsM?7dsM?7dsM?7dsϑfv^^^^^^WK>;Tm:86<|4”oWuŁxul6\/ 7lWs^-.Z?2X_9ns hgon'U36KN6Yv|`bě~?}>:D~cHp~Yg̓r 6ߴ Ko^`C}j>lɻ+w;Gǎzo? &<7p>_<>v;G>=iz/sƶM2]eΚ$}C/.}Gvo/}'eμ5زlGG\/\՛xk|Cfݞe'viWVo{y>tn T;ceop+^=?hl ߰5?y~eO>m#~vY``û}ϼr'^\og$ -'U/nvGq8kc돗QqRFU}-eYFu|aBE p‰'!p Re",GXpJV!p&‹B8sC8"T HwBa-:5.FDB>8~ H7#L l@؈ a3¥!\ +Bx K^r^JkEW!5!\pk^z7 Mf moGx;ޅp#»ރ^އ~ ܌ABo!|#EcG'>p+m#|3w E] >{E"—pWp?? |wm <]!|C!'!a!GC/G¯~[!<{'BgLg" hkkkkkkk{"Z       Oɯo/ɏe4_5_yIBkkkkkkkk+       B_5_5_5_5_5_5_5_E5_5_5_5_5_5_5_       _5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_5_Q:::::::/tnˏʏʏɏɏ!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::h/ # _/ _/ _Ϗ/ _/ _/ _/ _“f@/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _bktohT'7777C77777777777777777$!oooooooooooooooooooooooooooor|-r>vyg&wJ?~;~4]vAMk4]ФvAsMi4]ЄvAMg4]dvAsE>WOSp%\>WOSp%\>WOSp%\>WOSp%\>WOSp%\>WOSp%\>WOSp%\>WOSp%\>WOSp%\>WOSp%\>+YJ賒%d>+YJ賒%d>+YJ賒%d>+YJ賒%d>+Y"-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL$-1IKL-@Zb%&iIZb%&iIZb%&iIZb%&iIZb%&iIZb%&iIZbK)dB,Q2]J!JK)t)8R` o` /` _ d"-HK,"-HK,"-HK,&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl&-IKl!-qHK$]F%ZhM$k5qI%]Jz)I=/ ܟ ؟o d%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\%-qIK\#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-HK<#-X%iGZ⑖x%iGZ⑖x%iGZ⑖x%iGZ⑖x%iGZ⑖x%iGZ⑖x%iI%>%>%>%>%>%>%>%>%tEFfv4tE0Ȩ dE/<ȗR88888888888888888xq4L; [,\=yKu[2ᙙuk>5u~wpyXf5}W%C!#ڣ,c:8۳u_~xb:V$GTV&ֆj뎟 OPu|@=ɟ^[c /K~~ yձMY5/]IU2);g"rJ$IұRUwX1VXXȻk#N|*N3U+R瓒9P2a3v )2>KRKƖ!K&*Zq:n|D_qfqmxLc߷lNК$o_Nh'Hy;̄{ڙuOcv׆ǫc-wn WC5+Ў yU:oݡKLry,[MW߻qy?c)nZ!N<8'NJ3ڙ,V'gm .]7yzilu}DwF3wP8=J]VV.!TZDZo|4U5u_W1E|ħ,mm em@pwkӱgd+C[F4SjFT;qj_Sy-} LG;7H)js,=O:RT3w3u߻u$s~^Ur& x=Pt moD8=l%л8M#4zgɲB埪{ٶ+[qFie[jmr&ilL'Ȩ Dq c }Pa%&wh4;]e39@n3 ٹ:41l4P<_Qdh @9v/_sQ$)l9XNx6Txn?ӄf]S;cb  M }6-;r;!gkEm lݭ݊ehgeutZGTvAL[yѾC6xkU 888P Ն+b}2V/,эebǏYL FdU;Uffܭ6\UkVWj~!V%g6U'=:}4C0F7^@{4q|_'/#q|G#4-0~Nq^-7qDS!ACy4jP+>cX88888888888888888x1~3Շɬo*|k Y)vytv9_]|;.gɾ fzߙ52׍ WcၑbujxvdX|eDfnwgՙ "ODߡ:ӞɔI 3Tjs:WG_3f%L 6&ѱzMW k>GӄRWfnЇ1ً6MVtUucK?Z*-fYf m#jG' .W.W]ZU :6WC ܠ uXacelP kv#cFoựIU quMgF=8mmiiSTz4<qi~T=n"W>o9?>>={דol)vA UUE*0IG-]eP믪6[VDv^15/imm~矯NY;18;42Pvn:%[٠s@eһv2TϪ n| lN~Ve,Lω\)U#jPo_gKǖRbm[uNᦓI;Tyv zfڡ΢-{!#uxu ڮ8ǎzK&̡ڦjjfLrbUTdIVWjqq{.^[E*Ƶj\ "j9*Z EIaQYs>LU1qqkt th͏ U$;5e`mrͅak%x6* U\&/7X[T*;p|JYf7͒ݼb?)ll/z+ikmܞh77V@& >96}t#?vsu.JvL8烓lw\-c؋m."& vy9K4?f ߺu[}ǝfm]8ֹ2uً퓿l&SOn+A?7ޮzl&޴~OnFcEUىH^8ΟO[؉oMl:>jNvq;\[L;&dL3~1g?,.r_cLݕn2KZ!7N_Aa@qJf ޶*屲}W+8wUspn-kMe;bn_YC:/%Sz C&ddvs2öQ랏UڋsO]lfGz!׏ZVa ޶SG5#>S\[aD^'/=/in u?Љ}Tm;> jCqs3czR\gdhܡ# vcYxHw;'̗;g2cWRw}V5]s|ĄjjSY^۽ƸηsP?Ѧy=%.˔}V1ܪ~U7qCZiӲeO˞=-{ZiӲeO˞=- r>·[NO E,lG6PS6Yi;ՆՆ3rw4jC81+9^{e"p@&rԿLp;"9D8*9z6B_&rTYv&rNˉ%d͏+D{騕QVÒ3S>3cQN(f"Gљș.'zo&r9I't=-{ZiӲeO˞=-{ZiӲeO.9h%0UR [%pUS _%ER_*%)3IYINRNr$0fbLl 3a&6Ć0fbJlX +a%6ĆذVbJlX ;a'6ĆذvbNl؉ ;a'6ĆpNbIl8 '$6ĆpnbMl^M6iD"ldkQy!ORaުLޔނ[t|2?÷VD&Ԇ `o6oNzPۏ},kTOlڷuxX.> VTdjO Uj- is}Tmc˶E; Q{die#?I[{d/;d(%/}x).gKS}x5ٯʾM}U?d 3ыC3$X9Vqb&ziONn",DDhBLRX+'OKɗ3|Q''Ifdh2Zuj!\ ?A.8#ma}uq 䗯6#\p[@{&֘ppppppppppppppppppppppp#99䐣 9Аc 9#hh6OR8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ѐ 8Ӏ 8Ѐ 8Ѐ/E3h[.E8Ё8Ё8Ё8Ё8w<}Hu@>t@t@t@:p:p:p:p:p:p:p:p:p:p:pzIH_B8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Ё8Yh}x8W`8Ё8Ё8Ё8Ё8'?#< eW ! #E8p kW8 p @[8p @8p @8p @8p @8p @~E~8p @ȗ$NBp @8p @8p @8p @8p @O"<@8p @[အp p`1p`p`p`Wp`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`{     y r\ !rp`p`p`P43~[!<r5f,pAA8Y d,pA8Y d,pA8Y d,pA8Y d,pA8Y d,p%?Zd,pA8Y d,pA8Y d,p](фd,pA8Y d,pA8Y d,pA8Y d,po5!CA8Y d/G¯,pA8Y d,pA8Y d,p %o rA89 #䀃prA89 䀃prA89 䀃prA89 䀃prA89 䀃prA8͒ErA89 䀃prA89 䀃prA8-BrA89 䀃prA89 䀃prA89 䀃prA89 䀃prUy7£!89 䀃prA89 䀃prA89 䀃p恃

?hW#{XA]oӣ~3F\xv7iL?|eV5n zngAv_}7_NfFw+?/{>Y N|5w4O=W?yzkE_|-}a5xec%w7 _wNf>GW`w_7_?2㑿ۘV`=?]Xw̾Wߌp9P@S^t-js:{Y4||ݴ jU#UwUmAZX(Xy8VOX'keGَ| >jeK5ںJghDI] Q Ia?k*ͮ9U%$_mThxH%KmUI&ӓcU4٨_PFㄥ˖2=?n pDQj^Hkl%Xtg/T^ҫeZiɾ=W/^=X:X[?"!|4X+/wr)gAqp릖8{mM.W83fʹM\~u@KQ^?2T:06DZ\|l]__e'+rpqCu^ƪ( o\__u\xgIl@#C1iZ^zL~1H8>bOZWW.ђgT-uuSÀ#모ѱMJ꺱j>kdHyuxLCxeDdl^ڋ[\.xY3^IQ*chE>c׌*Ůbtz q"QqLf=Z +W\͉+*pMpq+ vKO:ءf/mi*eԈchő5J5---钧Ƒꨟ"MGV\]"P n6FQ23Wf/b4K(jLccH/R 3>8:~0ZA G uTLK(l\1DhtuCf*Q(3Kx[C#-޳2T,t:.Y%c:ݽRo!\RşLPkrTz dM2ht#ŢR _xq*[\Js_G@P]^L'pO#EYɡ= ._I}He+-~6?2814\Wr*NLDIb) _SZܤ[R=Pҵc8f![ĹQ.b? :P믄irTm Q9e%b\6PWz*&ӐG.3%cVxUVM <I>CxeC,RLG0Rf Фx( 2بxQ*Ûz=yE|PaܛhćXJ ǰ(J!vEڝ"6X (LGeɌFRkp46AZQt.d2*:& e]Tq)V{סƒa@ WjT;ŕ!(Kx 9[F j4 L)jo *WM/iLk $U)9uk&9 #8 VK6U$<=u(Z#J59h5\E%)U`bCLaluM9# 9x}5nc֨ Y% nW6igT,=} "<kݡW3_9v O,4Teu PGȆI̚&A~8 qdl&GOJnb~B[vZ4Nŷl>TEl11|ldԖ""RDx5Xvxj^ ;9:QRUUXׇ7ղ `BEFJ"qsowv?n oTa&JĝjMKߋU5D;N}Ϧ㑹*D~hν>&n< , ?1ĔFCͣ:nSD$Y<b_KS"RXQvgRQȻ$M+"H7%ka#ǸW)T*ݳ=q Ns&!DEdBW}B֖jmzgv=gwm^c4im,l @;=#eVq|}NajؽX[k!>_=.=wR"Zc2(^\eK|uhRTچ#Gc8Kr oaGjGQI@f/C,HWL|רZmMK I+Z'BL[Z,A卞6DIecw) V/6 ݠ<%ϔCR5wMoX-Et<ɓƣ!Jש'r@< Ŵ]Q[BCk.E d<_ם| c"~s1܋WyľV/cWMVJmxCM4mN}ߪ4#CPHHSfF42c"(PULX\JU3djAΒW[1$ ,>o9x75N&iަ9UW^kֹDs\$ͰR=/u ]s:xbwlpx$5^N4j^WS*uN(T >:glEE1`]m:n,}Mx薶:~*@xW|-GR/9- 9$OC2WDS v0BU L`0a{ġN>U9;NƩ[qBfYQBLL܆ҮywL܌OtmknRqEB AQƘ4iL˽=CdmΖrm+O Ø%[ffc P]Qn)[kc|'; ;ZbCl.5Fqp2{P]M=acQw /kvQI7J<55DEfO-vqo]5@?VŸ߻FZ'iU7zi;d=jG6![phUo!L$~˟{L2\z2/%7ߎQ9]TJg*,~Áߞt rV`lT=zu&a*}p챰26S\Zݰxzja~tq1+Ys'㎛?HB2<'ݵ#l|snef*$sR<10S|1x-=25i TRppܬ =g枢-W6(غrk9==|CRɕ(ɣz ʼn@66$GUGa?gmx7V pw4w T/rT\[z#>Ěz4Lu%WrY*'UKT 3 rH V-3&5t1BɞlPVlhj4X돞VOg-^GE=[3qt~{RF;ys;> q>Te]ɓTK@ďCӺ.ߋ]rP{[i2/k~ry'Iu"?KXrLΧbkr!G=FCnMA_^[>يjhBO ŤgTWVG RLd^u;$:XN3u燝SwX)~$Jѕ<ZݫƩgH<_#ZgYi"" =:A5$K^[FR.dEoFI+37bY7Afd"~7;dy-ŮPCӈǖrբǥjyZX784Իvqm`d"ƓX4Ykbt֫Lȧٻ ^9Q5O+~|M@ahI%tr7UEz[&43'FV‰H1 X5sZ1*jmM=`{Lj= />v'5̮J2_H~w>l=G8*llLE|pp,ι&1'~ޢ3bȡkӾbIʫuz*B N]~hrBV8O ԟ<"ӆD*_w%ƷCcp1ݐg˻K}%\6{׏ n$ ϐO}GfkaipnI+2a12 iltdl<"L3j,5NVT 'I&{{vac07/?iB h"/d.BjX<)0V,PIUc{Wh?aS::T-z" m k(,,28u!z,]8OJ1.L6K%T"O:e?nxI4 ɡohég,]ec[K9 ŕр)z bR8Ol <^PWޞDN-T{4%nYk'Zos?'hә&!lF@KBOxOoM);L;vV˒NO+z:8oHȶ.K{5c%|#b-,IN_Ϸj/E0䓦[3]k0;.D+K9 1wE%Fu0Ub?B/8(P8}q;_Qϝ4hyǽIS;YAڽݼ vxٹ䟖zqzL"uz{cDlFU 5/*i#{"1 ׷l:qgC }jN_1YYɃ “:T4R6WDLnЇ 5{bX>e !+ 1ҺkDu [WB'T;{8z<<9RI .#'OOTN|Js}"%K%rʦ&"]pdj?y~hV7wb{MzSG6^bo8BWzv(KOju=E2pZmEbk )Ue&pfX*6Vyew1,{9Mu04$of7Zk.,6˕>_= ȃ=n"z %6'TIJY,g^EN*Z3VX3N[<=#cϡ3kLt+>2ߔazЊTozQ%\ɣj{J `%ّWsTjY8/. heckf%CڜR_oξ^dŮ>a/o/kxEt'*SF*Y\%'ltV1#+M8_|[]&]2g~uR-9o Aqn&h85M Sj 9mƣA`RAqaOr_W5nY~yu2n+|+%S#V6MXԫ&HHlo 4=_yTu92jfNGzpQ]98L2@TBKPX/=SkuQϬ ף1"0<]amhd62QxV\!h_;aNs{çwe+QfV66Cʚl:r6;%f4*܏GN9]N^[c5dQ8\ Vg&@Nd,_+eX12Yd YY>2\TO Ѐ%'l@*ϲ\&%ϛ]+۶J%sw~_T@4fT;>&pBLX; 2V)M ֢84-^h³9ᭈdXcb}dpBE0o{8qêں9G S7@Q貺˱gew˛]3}+CHƝDsqIX7qW"zqo#l->1E TU]aXIumR+F˽[`z xtjɽs@ލC%ck*C;́> JL͏w/>wۂP:lIZ 1׻/" o\fsGЫ'o^N<v1GM 7TŗNX$dզKDQ|ݒcp^ts唖A987/8dSX?Y0::yB6*BN_k{>q};+vȟNW(nQ:F2@}#koy4:XuQAp2VNK {ޕ'FrP5 _^O7Ch5ḢO %m5\1B}Ŗ(Wiz; jC`E[ #_c.i!Q /,ܩ&ӧO] ttL#{ *]iޤ %tr?mdZ/STTf 47 tb8(ze[ufQ4iFd$ *sY;&ʘٛsM ͰL-/YLT~ܤn|J"3EZ٤rLwGzC)Oo<7]Lr{<*|Iw|7}8PK0OEt丬隔b9 q]@_l>rxbpK>Nn~*܍R(8#<6fz/9$K Gw{5Uk;CUSpz7ؾ"]bk  o7yjդ(a풃ijs|&^,k%~9E1eVN#֫Ivww]G>{Oƃ:sMƽ8.:`b u\rq]3rӣaLKrYlIE5øxz)(]6K>? =WGNQQ89lP?~dN VL' WWnⷎ5#'AdgJ&ߕIJkQVTSQz׆r w[CՔdgȤii>9P#NAgOKIFa~x=4<%CϏ%6ĥN t%L矯]G7.p06;XYJ`PyzyMS跟?iw_4F}CM.M;8(u.~s'*bZ7 d{qf1)zxtˊ#zo3C~ D.0(#u#iʇ\mM|GZ) ȡl]:U6e4@9ul)LO6=6*j"eD2cNr20MKTWx(n#+ny,7LAt^i\5zd]x:{S-$94#kSS=zht5u?^.;:=̂")\gUx}\k[pr%ٕfHndWYH$GWdzꊜrt"Yj-֢>IM%|:^xqѮi' CGk?$ϸ껼6Н $ #:75~3Ss{fZWPRE;l_5E&HU)jyI=vLz!cғtMV=3fVZ=aM&eїB4)\έCV3Uu_TدMmx+r#4k`$A iC>ly*7UG[hGFWue;w񭳼 κ]:<ש[xY|؏0 o="Pw폟ՇbvGtoș?w_4S{% 7iȮ_sP ۺс =Dh60b|dZ׷G9EtOObSs"$L7+(-;=X{;z`Xj-Fg;d@I]i9l{.u"|S HlՇv_yVژF݄C?̮#i[̠VA,,eɶ"K133333333ͺ7*ywoyrȢ,8uOߎyۇȋk~Ʀ u.{+cE-I?#/Gb/k~it]Slz#",\~i:>r&N;mX{ uoμXg.\1e]ovן}أlbv]7]!OoRjzᒩȷ}+Wom6]j} T_7&\j FͲv}%c}3ښ7kmLbbJK4m $mAo­\y_[Wk}.54@6X4~QoNSf+ ~oNq)]}g㋳LIc\.b.d}=8ESĊe Wmn2Pjܦbyg.nn-X:o}?nq4ovյ%bwݑv6_akk)vgI-?"6s}HE["Eܫ {4 S X@mlkqrwBb_vss]~pY=}~TZ'®Z-xf5D/2յkז>ĸujg9EtvhuK=xݒa\/s J>i>)ۯW(^//X/lnYV+{667Ԧ-ro<7nnvONK׮]vmYē|ꈦPxZ^7|f:Ktʹw%6u6}}UQM₲Ms]WXՈI?SҜX4yJÔYX717kisrUWCwu; wxB6Đ)qŒ c[t`8EoΝ{{lU[g+mn?l+W} E-VǾ4SLXHٍ}lsq85j˚}5v:[R/$:bd9oo?;Fgl 5+?[vYZ^A2? RJBĿ4,L{ 4bQ7פH/o_{Ya _@YD|O/2F?֌jF%[Wnr)`9GKu#Zk\ݎǺւu#֍w/K-{ I̱EzrNaU엷eό'U~{AFZث:rm0[@RLJwnA=EO $g*o<~6rcϦ%Ζ w{_9Ԍ^kU/b{q,csc:۪_⣺v p?X8UR7I_yc_ر6'2OE_bl/5[y?Pۿ>/pA]?(]Rݏ?k.pGjXȥ@sw~Hsyw>ퟬtbkia +erI?UuWxC4>6[{Dmj7%1.]4Dl!zl"f>>Zb@L_c4#k M|5 nuugO!]vI-~fGVr=5I?`Rں`|u^w_ڛmkG_Xkvl8cof!5>؟Y4^ˍyh~x^ƾ}Weftߝ+Gq_zM[εGV/l1yg_Ss3vCx7Ը^{u jfSKˣ}Joǥ'#Κ| Uɉ/[Tfp?96KqOGƿ\/*z+FWū7XS3![J7ŏ-ZE7?~l9̆bٲpG&㱷[|ƷQ4t-\^c]]c)vejm׸yĎK>r[bg^\Fo/ha"p콝kVRt;׬Z~L2?#3YE2^)+{4[f;-[/jp? ѽ&E{fwfǩ[;)")$i֜μSCklkk:AGc_屃\[B|%썭J|RӬ_<ᅃ7,j/u@_6>Nƿ-a7טub뼱7~6- y;Hōz9dϞkfM2}5 e#ԛ Y8%qz|7s{Mߛ} ׻N֒ߗ[64w:U)1b?^Eprb ۷_,LqsC5_7q]uN5ߜn'(Ko/Dۑs(zχbgɷ6~n^*t(A=FuhϿl AtԾ{~eW ~2WWO%;O|}'^}Ϳr,-'Ŝ؟Zs-s>aE9Mㆯ6c_u 5ץZ~>3c!)oϔgWkO#+`J_^h{j;-#"7B8\ga~9`SM[7p#t_8I8vArg5WX4> !bC.4lŪ+֭3c[S| eͺ +W.?fdP)C_Wl6Sڜm݈n秞Lo|}K񲹦Rrֹ5(zY~5nǽ?濏s{ _sOS͞ڎ JXy)ԇot0*ڲc_5A ULb)c^_uњBS6)wKzSFf_Sb F/ɣ/j 9ÿ{&c.Q3x<x_Q}cGng-n zKlj^n,kwY+v U8p 5-qv]hl`vO3/i)ro$ƒOMmׯ])sp.K7/ZEeuQv[bw8Ѻt uݵo8^z7-k^7o ["k]깿ߚoumuO+Gŗ;Џٱw#Pҵ+WZZ3Yv?=dYD Ev?Xy\͈Rrؒ'%cEX^aQ7RW5e1#A׮khu-ׄ>a+1s#mD{~nVYX~4qFO9oO;Ϣž^/Go{2=vt/Z'KZ3h;Q:,hάwmnOro#`g KW)&ko!w]W $cCH= ;.;lصfp+腫/jsv1P%]kvjclQfSyY5T?N+֜kAm:ǽ!fk$M'եӬyj?I2RЬ&inM6/)oC6K|ޝs˅_45溯mn^XڥGΝݗ=iU=kj܅LYΛt^b!T.!OiZkmU@+yêe]-I+֍]!'ٍb޸_r/uW`ۿPjk-uYYZRCؚLj㎑-ѥrY-nu?oMhY?fɌ]M]#S}P*}Ъ)ΆıUÿzXŹc|[m A|2۶ЧO؂IO(w7ES J|)xPVw_>Ýׂ1;agl |x >`>`\{p/h1/l_6_ ~%/cX[?<|1\DdJ4nOL%~* j'?| v[&~!Z-o v ~Gu'~'Đۿ|=_`+|# |S(+où xw/wn1K+-;IໃޢGǚC?|O ;ܝןߧE|?|?>xD _ ~ -wAϫ/تc͎!o=){ ap w~D Gl}<~T? kJ  cZ?` ?~q-σ^5K3D;x1xd[{ীw@ূB1xfO?E?`[>|kJ /؊'n?~N CZ[%`ogRVI/So~ !><&~yǧU! zo/ovqR/E4_!:Gr]/p?⻃-/f_~E9Ë ~g;(];W_B?*_%~ﰖ}cp 9@$;sc a)ǃ? i%Ay.<+|Z]F|˳NˉVJkUBϵ&kub7߇Pm^u~9Սb7?U<^"fFBw;À|NjEx,꿻6=bz.Oj/&ajBG_\K '~#{M+9zBI=I ~O'3D{C>'G>/@<ߋHҿL;P ϤFل׉?x!xYG[!k$EZxo!KYտP}O B##W*gĿ| ? xmg4rlk&Zo ;#}Oqt}lGZj~" 0 Z_R-~7x#A|ń; {vlQ?y}%!׺ P։jo.ͯrk 7B-?%BO%/ބ3Kg236@pu˃?\ϊZWz@3gB i]n5~!9@=OS%Fėg{4xt?ں1{yj-?u'z.r랆^@|9P|g!>n5~Gw߁Pǯs^w1@|wj_=a/{HKbkwn=P7?2[P(C'Gn Pןz?pj kF? wx?'6|[ Ɵ@|&_F$^O&@zFqٴ!tKY+9m ~[O'קŎ?PwI?;-?k_ gPl1Z?ylkWkhY2j/keF_A%;#i۳Nĸ|}Z-+%k4ZėЍ+v,Ol5)A3(5/WQm 8O'֏ßH{I@_?R^S/C'߭/0ZS$u#.vg_ S7~g =YzQ~=Q5Fu}H;q;5tej]*v/#Hؕ7tE^_I|'@u"6B3Gˎiѭb_wmbz;2]t=^E|mHQC<>=^Ry?Lty}zJmO$}$ X<#%@=tY7 9+Xby% /'n^{B#|>Nk$o7H31ny}zW}Kk_ woHz!񝁃)'b?PhDޡ~[/j; `9A'+u}QC"؉l;q{xB]y&kėMCOmQ{[?> эSKpׯQO"Mơ6c_D56BG| ߟ0Hﯷs~iT oEʄ>L  m ƟI|5o gG5|^?1vK;G]͇? MbC o_ίU»/SFO#ٕt_+Bկk_ns(/Cw#PMėj ӻG^Ө}>8JB͏}e*B@| A»wn;ǩ@[m?PP3k XB;RB^M|P7Lj߱bzՄ_C(v25Nk' jN'Hw6ߍP1>݈?ƿ;ƿȟc$twgKM#MGd,dms U/u^wC"j 6''|x=/mn4x#'jDBo%_6?PO#!vk;I?Pw}Wpm&pwϖ?8_6m} !?Bc!1؟ߒ!~ u~ @>_<+RBͿ~2sˀ_}-ϗzu[@]^o?2_0~nK%뺠q qtẫg4߉\B_6s[)mҐmei ƗgܶsZϗ~Ћ?ߦ뽫W^CI$Ih~RxW On!>B#O%bI1jN2Zcb_Fy\^oO9ηPlO!s΀Pt; ?&w$gb5w_JϹz;w_(v1j/k_ \Oseo _powg+*O+mBͿk"Zk9$7q o;P{Y w/y_Tpnߡ{zW a&xeCSbLO狧03gŞPsbz< b/_IjBb_CMkC_'P/n!oF5[7;Rwއ/B' Pc{j"c{Rľ# c|2O@?pď&>iO?g3/`}C}/i1wc|w> ]aO3Ib:I@}F֟DgwZϧIgbXg^g_@O6~㶨?蟻;eEPgrVL,?ﯹ^bˉrUjZXg5~ZOz>L9ZBߚog_K|~ѿw }F$N?P Ʉx>I*6~~zC 6ھeN  !ֿ^zߛ2 ϭ߉&=o`/P1Cb#B?Bl# r#{IjGG5Eď1;y >O[b5 S뿙b/$%/WsĶPw(wK\ P7%b ^#}{BW@| O%^/2Ə%ȏ;GW g>^ >H;S7xń:f5!ė+(b_I;kÉS!v :~GF5QF| 5##{BȯN-Ɵ3_(y~-v.9@ίsn3\'vՄno8_C/ PϏ; ,.zBͿŮ7Z%7;^*v9 5?.kˉ W]?B͟#}8 uh_o1ېwH%t~f5yG>5?y(C#드'P(קG33IOgSrM4i3~{F9}C#>XL{Bφ^H|)P?w%W r^B|u7o F ?%]kw I"y/B'pχb?PGz>z?qHpBmď~ cXB/ď?񒇉? 5O|oC+B;6ķ1'= !>w$kYRs>?I O#^UIb%ezI|.>_OX-#D&eG5~Q~F/D>+kqRI@?qm$3B$ZTa }*!wR%iK%ßLSK|6P7ITgm ^oxBߟMr9 O9z߉l +߲$uP[A^w%HIz_M+{^ P?-7XߒDvR;7_m1>?  .Pύ^$H篤Qbc/!*iC_ W%Pc5x⫁&MPkb^O"[,D5NTb3F5#Bi~|w'oE|O.{ҶbsF.B5W"?_TbKO.m0)Y@zIZ&\"v%:>}a5eėk)bWߞP_!W_lW]ƿZ-C!#~.ۻkOo7h𪿑&7Pۈ ͝bw?PwECw%_5C ~p߃b?P! 9N{u|{5cߚPq|?aԟنP.L_L _ ܑE_NKz/'5ʯuc [Di'ҿG΄ڿCj~Dzn !?MZO"ZO}_ _azC>~+=Y@>~'$C'>~P׏EkP#%B%=PWA|#wv%|+bݑԣ~NE0σwiGpJ_%WsJOΉk\urvr b^?Mȏd9%¿-GI^oK|o;B_ivKvF~%}|ߒ]N?P =_%˜I ֯S^י"B̥doz]?PC{ XGjzG5~G^oH3cP ~C^%_K>$Y5y~;$K1u\W8+ EOh-?nTS|u-7Z~:Z)@_t#kAA^oG|:\N!!ۋ`5<⋀:n~ B?1ߎPHl%e u@-+wkˉ';߇]柜yW _K3Pۿa6?PEMON5~OWF^F~N#> 5t`_xt?|, ':xwGŸIzwzI|Pχn|;BW;@|ljb'?ńZe)ė4zfB|y3[bg32ZYy?[\ u7QB_JJ^j#gP?J3x9>H_vBH;)Ez.Wt~ocx>{~|"g'"RqCS!GCw?&4^):ßYyH2k/?EtJ77Tb=#w#g!"Cq2_r!Z1F~ !x#?C]|Ctw"rEB"Bw"PbDWE5jRbF.BG_;nc~3=?Kz7ʏ )>b7z/e:w `5{P(v0= 5?k '\~#Lk# F;ᄚD5F 'ZI:~?4jN'~POp;m Į5?G<jsŮ4<ƍb¿Pƿ]2BK#2}ˈoGB;Z優?`?ˉXP!vE@qb/z_w 5=bz/5@_q%)_Ou^?@|# _S+_S6Q|/Ϻ)O?P(ߧ} 53Fyc!q+b_˯Wž15⫀54> ;B7ľ2Mkqo&};7R<2S>3Zw_1 u?ky? !w_7ȯ;b?Ÿ ^H|>χ~K u|~}_[w -B''~ .zLM6ﴞ ?X[bSD5~[|Z7PO-ƟL&}'9J'ZOL ŗ6B-_R+ R`O~6UK"(WjJSw|7:Y"]b$|qs^boTYS;z{K 5Ej=e~ėɨ_9K$S;_ϏRev3旬 ߕ.??w^ ~Ɨg$D~FxOL;uCxt&.78/1S?Pװ1Elc0>0^J] ӁuLc,?me54k 5t'3#T~>oE@~ : VΥ%#!ϩۋ3x?~;wvOPl1=501=;!uK#QK u@}woކ^F|=$; :6G57~/~ߛD/H/\w$tz7'ο4x ;j">x z][#χsؑ%9Z?"pB=?#O95vtC?lj)X~/vO P(v2'E5W4~.65 xT3Ά'P?Ybz-l{js΃?Ш?K~:.&?.!~2Hr+ ^wjW*'ď$uďz ^˿u|n$xBja~!G,*B߻4n 5=b_C7B3ʯ!^Cw͍b˄CѵOuWy?Ms?W;K—F瓗O+bMW>6Z׈.&5@~xC߆^I|-Kj~_Gſu?~. ]'7jy83#s#?X N]:OMF;s 5}+CG|PǍb?_ a5j~z ݨ7i_C;.m0M@}>u"5K!/Mΰi H|O /$_BizB|B_tZ&5~F^g?H1?7BJ_(V 4BY#z_Lt_vZj|95z_FrVOp??䬟Vg5~%;j|9 !WZu^P$}!gZVg5O%s?ŗ = }=#{ߗ/BX_"@ZR ~0o;?FOo9m#/ 6BBͯQz?(xnn}O|OIgIW(v'_˟bSoO9%BH7BL^";p4lC1Gl{C"~,Ɨ4m[j~l#~{jxB_S@㷐xͣ)4KĖ?PK#Z2g˞3sueI;kqGe/I[_= _E|*Yv5pMB6z+jb_K.BPe=f֓~O ?{po_i圝/H+?P^0AھC?xhO;\'<#S~)v4v؉^4jcĎ"B͟c#8?w1I_  x-\Nk=FYD{&/5Y?J~}PW:rC/$AB/cv ^?DԾ QW] Dk<? #OߑPc jO>gzQ ⿢D5q?~{w[k(3 u|eO2_I w)DC"BwW?*BNEH;DB˚фȏnGE`t9L9=ʫ>I6|~CBjE_}FH+D?P?t/{MzӀ ~Lo5~3 ~IgF3XXC.:_L1B;_ \ٲwP/{iHCB{+)6k^w-ބ?}"/g  6:?F5 };8B?wO#gjȞ>k?ClՄ?3#퀍 %}+;߿oM|govw#6Bn3ƇwFhC"$=U/~6 &cbŸD G[ wW3Zu}vFl-ń:>RX3@z~K Մ?rfKk݈\j6G5F~b+< ߨ~o4w(?;t#gO[kO*gcO'8 ? B*8Ox#:AtCH|>GO;BBͯ#|q\A|L$%& ֏s΃Ps#<](bߕP_8_&v5zC(b?P_?8 v 5z[Q[nGB[^N f7wBw^C(b8 B$H_>R'ŞB_ ^Aث?D_kW,C-#oF5[k?NA{zA~I;i?/?17ߙ燿;7b}د^G[ߋz#񹄪Ũet?;F|!*!rKjBzŸ'INg 1ZK~22z߇r>9ʀ~|E5~JQekF_ #27u0Rl~;-c4=?Ψ_=.ceL 召5珬3 ?^ !L`@?S#Q>=9.>Gƭݳ`HRl--i@|6b ߖ>dʘkK̀>?'>+E]R,$>"%#kqN^_B|9g؎ gY^h{'j_BWah !3v["kv7Zb C^o$>+o6#\A9 >#{_^bz-oˁ?v}@kc!?ڀo|q W:I}#>9`&bG0wkˑb'zQgb!}N@_^ 6v~:>N;N;k_ ˯SN2?_ ی΁.߳#}|>9C@#X!ɤW^;ok{ Xg3.]&v=.~?WbW?8*kj ƿa a^+v=#.B7AMԾ}e-w$ N[#$ ޟw ~|!~B@+<OY'S/ 3s({k$~k\ʿ=e5#@(>OQd蟡hϒ~W^w_\_ _\(2;w绗2ZįyE5WzkzF֐-jmֿC1;'|x[cc|bŸbz-C3|'O q^b?ѾDkoO.koOwb?Џz9g~9.O{>B>󥻿5O4?cgV5?qM>9䟻_LCJSO>Cz>Ȕ\ R@l5bUb Ư&>H?Y#V ~@߿"(?Fo@OKhC3̗9䀾Owg̮u%XB4`,pz6'e@<ߵrme~qEg!OW?u_D˜P/ug]Y(s8:kW[]Y#sWKz>s[#k]/ZQ>3MҝܐNh.v3)}À^Ɇ^7Yk7?C@o?N{;>B`_:. {utϩb?n? ~ P%vへ?ksϏs·r@??kܖ.Ϗ #"K.E@E5FV/'!`}p9Ј# }x&'w;6OP~ %M|P/7~u@?~F5}F=H ?d&6}SkbO_ 37{kO_ЏSb_Џbz }gZ~&"ϟ>24#⫀} ~$B?%' K_ TžH@_o"['Q~r@?F5OF&+ߔ>o/_wMϷYmk+DCZ_dee_ 5K֌zC3/S|i`V cg,Yc !)oYw%MVwȒ~*W@_"k"{GRȿJP+$BKG_Aǯ4g4kv!}?#?K;ϯػ:?-ħusuVK~wNr%u! HsVWw ՏQ>=H 8ʗ\00%gFz߇XgWŲzߟcz׷Ć?+>?fə?kkA`|1?F1?' K;̦gҬōWl zw?S ߟ o~;PdC" >;kC F?Lbz=H ^Gg@_Gg1F|}^?OEUjg!L ?~>#b_9W+~犝u-k'P\]C@_ Ů0"] >.kK{ _i/"?p4Я׊=n5uď z;O vF -[H?)[6ǒ^yrX|p'S3)Y}-!~6pbÿ0o}zQB- ׿a#F-"q%>w+O) ^?MX?s5x|+~e'z e}*  ߟ! 4&` ק~7}{Qb?z!è}ޯb?z }*crgb_?.?_}. ~|@~)+OחG^&7Ƈ?ϔ?#x{r@?? ~*p0~*%5eУ|b~oK|0Cz?&[֨ Kz>t<3g7?r$Y8;Yb &^Qg\so_ٲdWzG|瀾~rή +/Ew 3[2C=lSK ^%WQ֗ߙWP W*c|q[푿;̥wg2c o$XA];_PlɵQ^w" lw0C_E\ A|>?e{{o@]{%pكϯ'{F@I? AF~1>F?0op#~̏_b~^=| KO0"E@+G8+4ėlW4+zs oU@ֵL;;#Bg5doE|w׾Ŷo@~9 d7Zo'=Cύk?7,/$~p}%όGz }. ~'[S,mm4Z uww?~󇵆^BJwjW*BW"~-ou@3g55({7w Mb ^o&ڀ=@z>u~({o7Kl_w /}i;GԾ?Ę?ԘAd>ÀGOhc ^C"??o{O;\`x"_ibg_b/zE*bg_Pϊkol'v/v ؟ƿ(we ~!1T+Įl@\)v"~p2b?%kn6Z_'v[{}^`ԾmvmOI\bj=b4{Ş4>we@?~=n5įAw?=IԾ'Ğm?) ^O_}1Ɨ翈X {fO+ߝ^(zwVBx?%3H 9ī^OC0+?Aoi|x_} PG}c5Wb_ϏEl57ėV{`Ob_g `/_~w@E5Fr79 7G0#~@@NYڿE1nr/RKz-2`m9˩}@߾Ư .WW'|- C9ŸP9O `&x;gu|P'K,k:_ @52+]g5{J8)`L/YrU0'k]N7/Ϫ9 Ϗ򬛳kUcWFY€^zq9g_ ?v# 9~n~},vw'gǀ>_ !~ ZK_'v}k7_7 }@7E57O@߿G5FyK4{_];LBr@$S}Ԁ1={R>T ث^(O5H_l{Gbz$) ^OS@?c߉/^ ;p0b/?$Ͽh|YL+ T _ϹwzryxKsCM| ~?.ǻbzbϿ>0x(??t_}60;- V{_2G;.~/u|%s~5oO6? 1?ܣJ<Ϳ z}CK}x^T|dObpOL/y!lj On&Y@z_n@1Wr2ks/ 3׵!UG1a)E/ 'k^n1j-7x?:J]sUWPRk2|ˍ3_A+s=ϭO_7|o|~f)}~'>5orev? N/mm?7/}k1.FGikF9η&w#H?z dszߋx煔ܾ/ 'B/"~/ wHb#/W#wLCG_lG+c wtCg׿cPrE5x;RL~&G5}t?-Rm 1r[e5ėi~ko3l<>BJ_ n}e.7݁R$B!~9oh@~W!|}Ul%@:wؾ^# ^l#5lkķmw@"Q>8ηO@=E|߀迾_ܣϿޏA@p(bGz-@%{!wp^B^Q ?ڟhG!wŸqbgßg|?=l.b'_Зؙ^w2z)bzQ>=9η1ĻMs;swq>صw>}\ v@?p2C`5ſXRkzQ>󗑾[lwؕ+IlעwϷ7>ȽQ#Co"O7~7 y@?}`5W}@v ƿz{w狹wǀ^4Z=wW~{Ğ3~SC 1!'P{Ic[xDIC%~J@1'ǩ~O3?C;-/Yc|Yӈoz@%#YӉ׌:ۡ[o0ƻ8;# g X |S/b>kω!^Q?.OUO|KBX?~ K ݀(b; >@]?]&=B ~pboQv^k'y"ﴞ:?Oy:"?;P%2Ok QL uD5~1;_@<_hrҗP'|'&?*XyW9k3f?yg=j@y?-3H|6P%}^׉R`˱%B|=O%ozPdsE u퓵$?nZ7k *`~s0oK &?yC"Q~ #3? ; Cz+6| =;k&OΪy/_ ƟD|o&M}@8k<9+  = ǀ|9+hwM) 7uk+ }k#:'gSo9}"fΥ&vok;ؽ/ =z1Kki@A#?d <Ğ߁~Iϗ/\~`$x/ 0;!ߗ>2eskU | ?.&}~oO{@F2Occ}~| ^_T^"P?_u/Oľ?+~2Z7g>|+=.B7HOhhC/n^?/mӏ-/]ڿk|zh /l`NTtsE5~Q>o/g+)8f˜J@?ħb+k!ZCˉzS|9W_ǯc5~@z/_zoo~M^# H3I~=Zkz~'_ꚯ6F5~Q>OgPJ=ׯG^iLP 5_;`~PFŸL9ok5H3y?珁??6 @?z?~|E5x+Ħ_,C_MS@?"Q~'gQ:gߙ[ȯ &}˳FM'ϸ;gu)>@}w-$/rC[D|)'2Ko_jW_A|*~YzŐׇbO8hOwFl-#_K|a@`ԏo_&,w'.h/;3B">cԏR ~$(?\;t>9XhC!>3g;,B'>;e/.P??_X/ קN5Zė~2/׏#$|>JK6ӑ;%GĮ?-oħ];}F~_@"K](v_ ],v)}/kK~qg__eꕿD.v> !?*8)}F|*0v; N|xؽGaC%W?B0{sdQc|X8x}WO~`O  ?L?O?^?_ڝ %sZyYN @=;J|M@|ҿA|c@}~C|~|ޕitoj/ ge?U1sszs~_oI__57O6o3;L?:0[zY@OlYWR%>XBMK=B0ʧ{m~[gwHbj OY*})z_*@: ~ ^g_ @ zcO8߾d/?۵OΪg헺z_A|0ƯR܀Uz_mOq|\P~zB|}V^~|_K3׭;YA7۝T E g^׋| (__9^#XA 2?@l !7`p^!#H!6k%6k1F|3Կ-v!.!NJm@?ljj5ķv>A$wb^dO_;n3:w{ ׾΁ obz@ob\Kwe@=߻?_B+B⫀<>]׀>z݁'W7oUZZGs ^w-Џ" TF#?F<;?}ث^E|6Pg?w y@l5W+i|#:o? {0B{NGs@Ğ7quw}$p4)gz3F<؀> %F1*[α蟏D|y@TSx>?7#ZOQľ\Ɇ^A|9Koz5&owi߉~~@|]~}uDK>~@G5F|8߾5~a+cq[ɔCz>-=0 4 =^Uk,3?Ws/W#k\+?_P0v@ڟ ,XXz_ׯ&`wUa%=UD~+5b 㷋kZ|߁Q}Ks1]5F~MONu&~f@_.ΥZV-Bn2}0wHgEßϿħs} 7(BL|>¡b/Y8Ll;C_Prp }YpkCGp4C| ퟅo<=Nfz?>@? M@"Q>}ikǢ@=nK'oGh''(hc1K/Ií;_ ~iȏeЯC|pz {zz⋁U:SA=o#5@݈ pwݼZsWo/SEb'/ >}3xG1-gʵ@/kAbz0v a8D0k=0|7.ϟd:}YYx'?Lj>O)?Oko$So,vϩb{8M=z$eF~1wg«Ůo.{kk˟n>ϯ4)b7%ث^L|W`[ngX|bz]Wp;`|w6>?w{k?8^}zQpFc|F8Ȁg량k?9Ϗ^4xտH)}dҿJkj@͘SI>06֟];> Ԁ>?'^Q_؇gzw}H|Pϯn|?1/ Z`gw 35Fa _Sv @|wb?7Ed!?? ~I 19 m)?%ՏO|2ڿ$4oQc|> /ϑ'>?i|z3q^ ʄb~H쀚EH+g٢ ,"٢C/ P"YTd/"}Y@}~+VQMY_B޿*3]Q9zkruZߊDSW%?5~Q>F[*Cz~+:ß"9M1Z~=E@z~+5_秳I^7HoE֢7Yho[EP"+zߍ..U/\Q_oQOⵞCr&,^C|_tu|X4@h{\@?!92xՏ"Ā~~6k"Qzx#'~1Cz-.6R =;kWh7[ CۢĶK@_*Ez ]|[$g vb ƟK|~ۋ-7wEn·tޭ];-6Z|@l~!Ȩ?ߋ W+kShw[Ԁ6Z M;;G5.F|f#X|~ o ܞڿIlwz-w{&eߏ֏~cYHCO >OGh5ߏ8Ŏ7K9x̟C_):E*v}F|7wN'>gY@_bzmYė~g c@߿D5F_@k _H|:Nb?-ڿ}].P??u}M^9@~>sW_W`5Uķ _-v-{M^_kO?9n3wx|#ܭb_mg+} %P2CC>]b_zzF+z~A;Q{@=yXiC?B|O`X^?N^Q?|q#X,C}ϋ b/ +O eO m)[b<_kw_W}w ('?GFLO1r@?9C i|忥-dxKŸ/ħutbß}kC\`9b_ЏϟzQ>+~ kqXkDW'dXƪ88kt=C˚Yzeߋ\ocBΟ|#Y_^U| g|hUxl7%_iSq{wM^'>NXW}SoC&Oc}w)n]l`KOCt}MW%Ÿ`5N:C ^7}#>+>_^Z3ţ?䀾O ]T`XgRVrs/^ b9?-Or*~@_"ZݕPl1%}01@޻Dl }F52|po_ ![ Pw7˹C b9/o8_~Q^o Hb~&+Cnz*`{r|/{F5^}0ƻq_7x- }~?0!;TpX^É?OA LN?+,?쀾}'z>a*OO wص^E|:P_7> 60;;#vyb'}^@}~.ب_>ſ_BJW8ZMh 7 :Po7>7e5gEVW 6zN~ N~pw o: wk{ѿwc~fo?"{T^,`>bO_z$E@sX3«*Wݳs<@Qe_}L|S@ǀ^k׈ E9}{}C|.{bx@_4ھ?8 }o5GOΠ} ̀>'b_z)L gy^aO;ηoN@{m;L§<߈_зwnKVo GdCsZ܄kcoC%m7>ڷ{@O1iܝL{9>/0۞ėb<C:^R ?\Ԉo5~;ⳁ6_W{c Ư#Hϗ%>B~٫J>',L|c@?]PoJ糃G%4{X/s~A$?P+ñ;J@#?ZJh~>R5;䅋'ϏWt/%4| .Pxno[/xn%. Ā>/%>)`wg_ˡŮ?3^%Z܄0<`~BWl55ߵb#}a@?'(o2WDo~q~|J'Hb϶_I|y@?w=b_Џ=bOz-^{RW@~ ~_~aP^?lǨ}3OQ O-7?=/Luugz-e3 ӿ | ww+ ̀|F^Il6Twރۀh5{o\Awz;WPcWQ^lϨ}k@܏Ş"~kCwз;c%GʏD~~w_ [^ݘͿWj|l1_ z9@=&Eyէp9C:ߔ\/Āy'|Q*sz_!u,ݛ9~Stp,S5׿ _J+|֏JjKL^k/OiX-}kZJ;Pħ7= \Cy) :P2zzg3]ĺPϗ]#Q?u\i_sÅM|.>.C|2_ҡ_ uTZ 7 B$*!>x W: eKHg> `=C$ؙgcJ d%u~*4 ~ 1 [yoD=nbjIPkwןbK%b+ o)t؎I0w{r][uYtK|'g5^B|9Pqcjkc?5j|g~W_?NvHǕn [6o݈rob Iz;}~6iߓe=Q?q[O0 CON439P k\;kÉ ӻK??9e(Q>1cDϩ SR^a&4不~.=SK3,Ⳁqعַs.4Zs/ < ^瓾$_/E2`%"KP.kKϷ/>_/gƿ(+3%o e!NKh~_+v=9@^k/׏1&KYWpw_0V;{J|w ח۩~%c?a|O? Cbz0c^?F|^@~=.Z* o0wO=g o?cQ?G|}>s߯%_w_!+b3okzQ>}~8߾^{ֿc_/70H@ ^_U)ieB81v&xz;O { TQg3)B6$7?֧߉VQ5_o%X ޡ_N%?jS twXH/|炿Cz~/Z]Iu 84eRײ3]&{uY+!>+eזHPwYQ>=;=@|WVM|Pjj/ ]֎Z~-O6/ 2Y+ccυ ~LIJH|*P_׆Nw">ʖE}d/b5~7⋁XO+M0'FY0_z߇xTb:=n5@~|G5| g#өGF@_1z-13@33?ȿBh30?/0Vu}lJC"> .?>km/Ķ<߹z=Z|@lGC_NHl =_K|8߾}Fq[?+_wHϖ j@ Z@?kbwϖ#>HϖI@_= o#T6_l_OԾ>^ħ7=o  -#Ÿ~ħ~l; vH|~@>;H`W/ seۢ|J|1P׾Ďw}c5Wַ#Ŏ.Y6gKNj'><-;A CO$K@_+Nk@>9BO![@?ݨ_7 Wv=X?cs9 <]os G#ke?>΋kBe/@7]m5%O_*v93,B/'~f@ʨ 5"iGlt̛;]Po>~B?mbw_{>.vA|I@)v.җb(_ ׾{Po}=l51ϏY2ga?B;c»u[Il,w=!@_pדbz-) O= M@ˆ^?K|>sb/_#|>lWѿwI{C-n}|SC">'ػ'B%>/ۨ_+O'?_ pGb_Я_?!}' ?>kωE }}_'kԯ鿣 DIPz-a}~k߉27<?"孌AEB|˳Wy*x]W}:MdٕYz*/$>+@y }G~%\ Kz_A|)PWUz_mO:.>9G7~a}=x}VM|hqr5xt^.*#O ;y)n@=#Z^~\ֲ~|/˚PS@^4BK4k_G?-oɆ^%>Hry+N@z?(WBQ>B 噱|kO4k;nnZbŸ o6bz-[ 4ۉmU@?r.k퉯X>>b7z?vz@l }bzF\/[ z~)_K}FrCnމٙA+V?"/A^۷}[ (hr~+UlkubP_#z&~I/\~O Ϗ?5?3p$>"~z@_}IߏoF@??Q~ w?m)?; b¿S ?E'vx/FP|ρ_ױeԾSKB_ʀ#Zį g?x W~)u.k?O|~׀>/ ~m@_Kƿo]@?.3w鯤>_eoI-zu71ߔ`#n s=x.7w؟{ax~[?{̀~}qOzg~٭/~ K{Wz5(}#P|w+S%B5ƟP~%_wHϏŸ [FG||ME2uHh5~25u|*R µ!u~Uz-?:`0VUd9_V^g؇XTh G5~#)~X)%z_J8/kaEz_ED /g יu~UF5~{cg_O5+*Ͽa^?oP?v/kZEKؿbXC{_^O^^F|%qE~oC|z/Q Ӏs"|Jơ* _3Z + ^H_h|_*&_O|9P͟ bD?k(~O&}{/{U;7܎wHv?%ħsh|e.W̆?7o߬6@Jlm-km/Sm_Nls6o/Mb_Ͼb'z2<"@+|;bW@??ލk;`ooHW@/PbX@>~?70⿢><1'wXd|G~0W2zgϯ_ɯb_+^;%؟?I_ Ң|;+~R zr*[%z߆: _ntc@͏Dk$|操3B;]Z{/ងfTJNUf *%*K E|_~RJiSeķ K]+UWPן/0ʧ7m~KѿwOƴ ,[I^WǗln@oG|^@3Gz*_˟z⋁z>yR)\U@]*5Z~@d.Tv1/"3z>uuF|Wv'G@~^ /]"^ &~h@_>N+IĆz_'gRbD^?Ԩl c8 G(/H헳z8WPj)?^Lm瀾&D5Dw Sa_4WwXWn Yz-165}m׎[p_Bŗsv+Egplww*%*?-_v!>7>2oU^뷚B U*~UkuėwvgʍW+ߌ=^Tp~/sJ@߿ ̡?D0s;4B;| }>WyQ;RC"رW?&B5;ڗh`|PBϩ<]L!vgYbз?(WK;^@|!B ^_LD0xY/?D(G[ߵbß 8[h~_ b7_Џ|Co":o& ƿvz! ƿF/un狻"nEl-i ?ASIV> |w QGT>.O?ǭO= T^?M^Qɤ /?5_U(kH?-Ͽ5Gߠϛ ;_3k?'~6p[>>??}?8_\Hط^F~|?U%Kz~;@|µ;w+6}?D_!~. kw'kjZ?xwϿuu~U5wi~)F8nٴo 9`# 8<!Y \ JŚ /#XE]U u@ͯ*9KW5z_I|M@͟**٪:kjVV_K}~7g}>|q[/M;Lu}T~>~^w%>??TɞR?Tuk=z_ЏoM|P?ܕ^6O|z@|]@??_D7Xl(1ھw o5Zb A|w`)g T^&_@gԯ酫~@~~YjkIdF|5 }40P~ 뷕߆a@}>ppc^lOC?.?w[SzU;z)Yj~㷘i=̨4/\jgP?uB_+v"ZoW?x W }Yjk>u 뿑kM;k;~Oz^F'be~?Ow߁bßϿĎ4`ⳁwa;4B3ʧU]>?:b`9hc^?J` ;ko6Q(v2=)BO6ʧ+)?y7,s?7/D? Ʉ].?.kˈ/Kn|/Ҁ~k+/Q\/c@_n7F⛀~;qs^bOǿ>m?"0 A' ,뿇4o#zQ~)U= 9ǓW*w3!}?}C/.bz@?xYU+b?z*5|ڀ>{ })"[{}މkw E-!D5}>zcS(b_?5__E5O ϟf̟g;w? ѷ5OⳀ>%|+Kjdi('UW_:$j Օ^O!_P:-BӉovg9gG5~C)~X!z_H/c]]Ā>?J#z~wDxC}ݍ:KX~Z\h5~@?{rV7xoDK0{ m aU;d?J|0ɥ:gY@}{_Pjɩꁆ^ߛ€z?PG/[(Wa5?\n"XM?Xl(5}c?g0CxS4>V?bz- Y@c_8 O|!W֊IƟD|%gղWO}@_ً2:u3f#Ϗz?([Qz63=#w͗tφ?5b+O g!@?ՋŖ_ЗDlgC[J|)or1B`gj_C@Sw|7*]#SO oWӁ럵b&s&C_O|~@ohH€1;;&OYb?}XI]_^A|5P?t۞b{_Џ^{3/C_;7;}P^L|^QnB{GqQbz-hGQ#v? DD{Y^L>)b?%S#43|lc|q)!~:˝/0/t@rXx%}w/k.'$_U%׽?}sY5@=_]#vz~sV&C#n^FF|o2c@*{.|9!v;ibz-N wM@|wC^C|>b_"~|>?dGп%T?.$'^5I⋀ܿO= PǭOl53)bsz<zKFx_E a& jySC">'ػ{'B%>/ۨ}?/ׇ>"?>k_ '? /N@>_~-%w b::jzoI!l˶d'$aˠˆ\z%zw^Rz{3;#i-C/7[gf? 0_ib=?A`4Ɵ=/1 )(OSJb3pGȕ|\l)82g/0S? QA"H\ O/2?[c\DA= ~?`e_&}~9U0&1~lQ>XKw)jE7A%Z_̨yJVK4Va2F_zyJ4(_Ǩ|=%ڦY~Q֪6oBDg0 aA&fDq'ЁQFvyJCmZ~|mB&13xi\a F]K(x$'ΨkAVa vOۅZF?gi_FJ~8a)(UŌھp O_#%?\ z_ƨ:yJzP:4u7 QC_Ũ&72ЅM?tB8fu Q$#e O|P> b|Q3jg)>!/F8֯A0 ᤁ'B~-֟ #~%?E^|<'`t.wA0SO,DZ+“0~'BxA"!</dyJ_H+^_ɨkxku>K~ρ<_H;x.~|#χB2jy OH NB6Ƈu?&*F>.jFݿ_èIZD_TSh}Z-.9oeYyJs0j3O(_|/C"c|_|I~}Ӡ?Rۂ3 <_ȯf?6د+iJ~W?g%2SD?Eھ~3 _x(trDO~<ջQcᏂgu ߈b1S*0"Q)~-|rn/fc_3zF]3o<+N%_+<>od[1!gTl3 +y W9 sWl1SO XKXɾV/X O/r vbCvb"od<"#|ƨ|;Q>ˬ|!y*_!V~._/C.ʧp_ΨW O[%׈5 ZF]C<$ obkq 0-f ~يOwuタ|kdF]T{D@gV7TB]bg M"-~B?Uw)?Qй vD;J@W%~W8S; /ޏ"G=_(>O>W+lW+u^+)b{Ԋ?{p O; 9Z? y<3+np$+)H ~0_H T a/E\b !!F]<4/nC%D_OA8>R{3 1Ae=0~ֿ^5S}߈xh~`^F_)[h!1F<\p'[4?^qҐBQCZN_u_P?W<ޠ_R.TD/վwCx/E\&/4SO|q?+W<k= S_H;O _˨3w}9Q߳)U7_(g_+Gm_+SFAt;ſoo@+~j?oC.?O{>;LwYNl |%`DW}?QBA>/`>`IB~!?4/_Q_HOe_p1jh?)O4AF+ہӿcޕA+V|0~"ͯ<|_LD?K?Q! OI j/C*_ȨW) ~)bHnŷ0Q~`%j߆]oeyJ[QN_?C# g_c,Bo>m-dj7 /`s/DFy~%֟_"+VFݾ|Q/g4>he#'u_1~*"wվyAHo+uyJAl'c| n9S|qH`Ō O1bӾb?  qe<ߡ?⠯C tF9ifa|FZ`g p(?ȄbrFjyJ!_`af/E?j_Z<g!ZuB]C+ r/@区}W8S!CV/Zl߿!P Ј36@h1SHP'!}ɷ`]OWb?q(-yJ?&yt>A;8/faAҏ ĥ!V` O ĕ"}u_˨o(% ~%+)?Qeb ~6"OT]a_ O2S;!N_]/bpA-4a/Ưd{<א_B Eo-]-F]k \񍌺B8d|n0yJCakA Y'oCQU0~5nN7S]_è' ƯE\' A?"EG!܌S) KʨۯBoc a O RF]~`eZ)[ _&!Q4 W'!܎v c '?vHwb5}NIyJNCA}]˨ Z?0H)8~yD>OpOA3Cπb<#gBx6/d,/4S"F]@x/f\yJy/_/re_ +0~&8z9)W~|+!0ZunU5SBFk K^C$zl#oJ?-?Qϛ!| OEi~[?k{2y;wb?Q?j? GE_Ō:/AAe/A맯@0<5C|tju{lN=#_K! 2! g#[ T ~?1x_hɫBx +)3/B~?K~pA#EՌ-_S1/ "UA7 UӐ_AuG3Z?)? QP>?ߊH;5q?_Ǩ ? OCCcez[!4S?Qcevèw<]sCTqU?Jv ~"鏲- ?@2SW ~Kc|=#?9S߀_:oFl{- uoe_09 O (?d(_T$ƨǗڄ|)GVR8~ยy?f?nufǨ{]/9 ? TO/RQK O{!nW`&F];SDZߪ!/cA/gz`B#Fo+u O{1 ۅ~FaBBbANQ@w2j |QQO1}A!? ϨMg|OgA|(ߏJF] ՈO <Fi|ڷ2AW9O<c+LTۇxչ׉erCWQ/`_ OBDZ(^]!Fu~E*0Ʒ0mrÆUGQ#/q0퀰 O_(wT1] OD/վ!le}/q7'o(D$QEU}Bunb<)'C1aT} O_!tW/]ȨoZSyJUH&~-c k?ZWNAFZW+"Rt1Q|o|3b\-_èV_Umށu O{/CV݂Q=(}އ71A>F2}H7#}G1QG|5gO y.^~`RSC^\?~1Q | O^Sg/bF> OѐWM(gTU iF_ OC{ 7}#P{`]4S|%?Y}?ٌ>~ OPsiV?Ō~ OP?qNq`"E ~O/=/B=u? _(ٌ O?,4R uA~|!_߿Z__>b)Go! c%\6(8Ku_Wl j<ɫ<ڼCiWiO7bd%ʹ?qJ/2Ss7O+վ3~/ %rW0~\(*FJ? Ta|%"P_b<"OCU]]1/|F]_"Dj>+1~9je O|QZ_Hee<_+*DZ+niA tA*C 㣌Moc@͂@1VO:~R>f?qBqZ?h?"Ћ %.W71Ϩw>SF1~&aAʷY~n g3Z 6A/ҿ /˷QvC2j_̨nݫ9q(a,Dl8]:F 9V0YQFퟏ QGuZyw0ZA<@qn1ȯKJ ~⥢Co'?, !<Ռھ$k5TC?MZFO 3!3;=[]Z#nF?0X?¨^d@GiL bLq+_^,/|)ʨe0:Wq>Oq9߀+7Cx+B[@?SK]1(na F]@AwC} _(1<~d>hIBQ Q5O>&_Ǩ Q> 'a)G|F툫E0~ ~hAku/aŌ?~W q p+unīEZSw ֟_?u-AO Z\}Bokc|Qo@~A_u0{Ÿ CO2j[3$;!ͨQwD'Q,oqs0~QfbOG*CxocgvFp` _a].P#+ƋO`$P݈Ox)}jFOOE|H/Okb=:J?")]T/d$f B^Ĩg_1 ~_/f/0_,槒jOhVy#2L_a%[PSiL5_(p?5? qKϿk`.W2Sj?j5?F#yJ^f0A"5CkQ :M!迧3j.?.ZA' _0?ʝ#˙?I8k~ּFixNOo!Wښ@OG}) ~"R}?ھ q׏ 1,DAF?*~B+u o0QikEĨ 3jy0Q 7 ~-|Q/QF]:S36F]WGEgε/aq7"nkk}9#_u}߁ϥgH) g*m5 &1^N? O|b(cw;SG?8$f=?̨֤3S=?(P~1ȃB]j)~?Qe1jA|b@qw19!qoo=zxBw@v}ST; +G(Nϋu/"RnQ-\<= “ .Cx%EO`0SD_U2jj/C1ek_ͨ終axk\7\PZ_`|QMD-foYZ->f{g# ;0~>N>d!'wc> O[KiGBx?W1{<~C?fBcW2j Q' Wze!OU| g0~ OCAOE%>u}A"c_e_̨K [,xj Y_H *FU1S|5bHZ!Q>:Saȓ~O?5@ք725x?ֿ>Hߊƒ?Q?y*߃H/վAe[yJwH7JO߇)?'pq|&z~cW? <!ђ|j 0#|R_BCxku `|bB8aFݿs1[vF:uMy#}@A\B_HWsBIjL0)&埆<ͯIxw++!5~"=0~~&"\Zy^e?_i^KByJE1K!W0}ƨ[߁H_!1}aRH%Aeza?xu&χHau1O q̷PkO":aaBAuł<'ca࿈| C xc:f0 o!kf .jaSO#?S \1{12ԩ1~ o{<"a [WHהl-[ߚ~0f7bXR5S0j\6$򕌴oFG "8]Gg"P T߁ ux[ Ow~!"`_K~v_*u~ 6ec!J} Oo|wCy/Y9S ~6PB=?·(!T <[{ lK4A }C O_%Q!\su] O_+yZ|

qAqwa_T?FE< ǧBxA+==?Qp1/_(Ϊ;MBZ??yO \$ӽ yT̙oqOB~z-{WH#~տg .ת T7 ~6"ُZ 0~17 ~ ^E0[2!v/g`w]P1ǨwԿ1>H?Q~5S|@3u‡1~lAA G | 2jQyJc_ƨ?a(2!IQ区?eh?q~KqV \>GY+?/jF_C_(/a|/BA׊ 1N+m*uZQ)o_/o]¨}, CCKG(eU1~:n|yoo ~0MjHj+^_1{lO-ͨ?_~- 1q~yblYV-d_`_Ue ~!#*W1~ryJ?h_go?]_a={UyJ^SiIɂj`. O7 ~.f_Ȩ7 O7 ~1"6QOAo3O(.}%*re|xuVJFݾ0Y ODZsU1~:yJ!1WUڕ1Xu1~:W1S ~8 ˫vblF]NCw&!WGēb}7毷GzWU X_@ +Wu#yb}*x*Wa,D_W} O\DZ_9bZ?!bХ׫n F?_R QϰBO@8͌0Y%fQ˿Pw Q !?1?*2j< ac' 㛔>$sf<as QHGտ0OA$PG5StDZ`BFݿ</B5o_X'_/Si($_.}taAWH lbi0 O?q(?=گ! OWC˩g`&Of/0+eCX<\1S ">5,:} aH??of3{)7 ~5:[ 3 =yJm?)x;wbfF~pi#귅Q}߆˧ֶMŨf ~߇Z1QQ_3S?&oqC7>OCA:OB4fʯNyC^!1u; ~TkЎK5)v_HjՂ2Z51l\U+|_X/ʷ^ | ~ l(nTM!E/Ռ:m_Ur_ʨ#RwaNF? T]th}k+1:F=q4]Ϩ*߀xhkQuB<*y5R)F]T !a_73o2~PO|GB?-SC'yVbA2`! B._h+$(4C8u!mlBnp/D/j~p m_H?V)f)d5OO_èwC$>OҬO|'Cx 7"WOBxAࣈ|x!܃uπ<< nLu?A!4uEq|u'Dp3W3j<kE0hU:>yJ_"}4 a| N? O >&?$~ O488KqDc''/c;˿eOB9z3_W "䟉_?} aD*Zy*QΟYQd _덂1j7 Q[Qm~BT"\aCQ{ }>5SWs\?Q!A!.‡1~1NC>k?,%}>c:S:O@_Ĩ HQ9C`rFK^-(~P%_F?_-<72*c|)oD* w !=y^,lgCu'?~aD-yM?3O?uP~) dW /p4?Q`TD[3= O֐XQFڇxh?'ߋ+1ޏH# A N?V F?g_bg"Àa*lFJ?솰 O{?qHt LQ}c_HV꽘ƗpjPC>bI#%Q,G韆ID/)O ~"_ϧ |0j4/)~!?,cbFs?o_///cދ߈񕌺_F]o@Ocx(G~j}K3g6bF]@A" 3<CR?~,귐QCJ ~?^[gn_B5W2/2SD9 0~N~)?Q_[ͨ? o?Q;:CA!JGvd_?*귐Q7C?E/b2O5S3 ~ O0U\a15^\H3n_2>_H0 O1 n#osAү4B5Sa<]U5|3)jiylOQ|<i}|!?'_߀+k`o?o3UW{#+-S(&,_<׋gqy5G7#OOIoV~n61~"TĐ w: %>n0SW e"}#.:.5S >(ga| Ưb$׼AҿD MM l0COkfL-m}c}w@ O|;%}wA؃uv;S{qh}-};SWE׊ʨӿΠ[ h?NQM xYiXgY oCmcE!7SG-Ba a O ~..?[0~yJCbK8ۑ{Vp'Q ֏;?"KK @͝5Q3ߚbFz{6#ywV=1ދ(y^e?_~DF g1W) ~6.})ayJJq9}߃{x/l_c<4?T7߈u)7 ~:Nso:}0SoL"}o9:}G) ~.nyZ? Oːg>b}8 Ⴢ_Ȩ#>u} !|/d韆9< _Ĩ>Ku}A!>2F #_QϗdU_y1oa|7)owEu3j!Cއ< 㽈)_Ϩ%_c|yJׂ'7i<3??Q!1SLF߿,F?4lF|_D0j \#?*?{??_~oO[/f~HGQ˟Z*ks ~9bׯlk|Ռ->}V\}J~*{G$n]n^Da-- ,Q}xd-pmNĨ7aA|.uC0~_ɨ7n(J!VԿQbS?{un|#"=ߨ~#̨& T͂oa6oee<͐෋Eu_D4_F>;MBiً<_OL\L6vU4Xj͍`LTcqVk K] X;6yΝ[ws?'s?'u;7ށM۱uC~.&oߕۮڵyyjjL;Cvݹq>}A(/ʬt;vH{ʾ{m޽k~}]:*]WؑWաf#|ʮvʌS=멡Mtzjo%VfE(۷f(}{n޾qY*gM^ 5H,$ nmP m';|';|';|ϝϚ:Hh=-p B ޾;riehᚖ>lFG: qז4وʴc&ϿR?XD{R ۵uqlOYd8;M}Gb7<:Zeґ'(.TExbgc2S1}WǿJW9'qN5& gF/u܁+=gz{\eryNt&\o:a~T(Os9)vA &ߌ*tͨ7,MpWFM`Fߎn04T[&bQRHE7grvdqŬƣL:1L@k]܆oc{0OnEMq6Q`х'7ctYSIښdc}ʵ?VG э(F^p&@UF6sIҚzjo,稁wssNx٧.=>wj;=ܰ)deIE:5f"l9(9GKs[QڃE\hGX o=/xmَj,ļvzeqjq;|]qh6uV8n\-5nU%IK~('3,9T #]jxVV8&|  _4vzQc뭓/j읟Ԧxz$>[E<<-t@c& bDiL;#&8Og,F!h޹=bs?7D{''Xוƒ02 4$Ǚr5̗js՜gL8k}1Wu$i<,*Wk%^RHaD[ qqqs~gqVWPF~< lm+ʮOgsGeL^Lӭ9W|`]E'Fw6mg-.dSq`~6(8sf\o1`ذꁯjN#{tNe[e{HY }.3k9y 7UDŽ<6.훎bf;Le8{N^q)06f|gtؔ/%g [M?/Zqf?7Rz~o\D9[獇E؈y6b]zmA<_a}~ETc8<ׁ稻-z(u~ے ,b%ˏh[2!st<,yr:+Ԅc=J+Fqp(&/ǚXY槍&z6|? 忛5Vqde>26c~i[G}i,&\'g8-c1 <'/K}sֽ#7sg1M()+[1Қ8mVEOGѶ9teIdrMZIyytD?z:­sp<f3  8&۝[Jgs?2Fo+9I*nXkڣfwnyS#~,j3A޲:{ |qɹ8; 9n\^u=`unjX(3O''q>\~>OO>=IT[c4;Me-CC@׍9"GR'P;}S`߸)q r\_ܭܭܭ;79Tg3㹉3rSܡܡ<,wLn"eLl|V( MZsrvrv̛c6.j~t<[6&¨ ܹq1N8o4Av'vq0RÏX'Mɾd>PK}g)zsh5cBϮϷDb7`&j{ԩw4snsl߽l4sd4=P.9UnQa-n}{n޾q˲5ΓvQ,b%[z윚 2+r?s1y`D'o{e|e<*8'Ρ3Pgisԕ9/*|Ukϱkm;nyKgԣBեy(8>81V2<_x*G;|.'[ pBqwH0rT&y5{(}rU+ͣGNcQɑ#8:1=?AM#TmfQݞ2%U*ԀSJ%sZ 7cIvtG?2c΁#ڨH7JH/xH8VmBEj"ghY1=r'ecEZl#O蝢njлqזT>2Mw&>Oh qSoT[J5a184F[9}(={BPՕ%*.[b Le`b XghC{6!U~TEsv&t'td8H$CRYUp_aЩF+=ۛ<  D_ĩZڝ84<f}gO"FSYSpPpD?a% v%nTT>=C"S='AN@ @ӫz?t41du &j.Krpg* VA 餼;NlG=c݉Ρ440dTD* ֖<8)Zj'yٲ`]n?GUphԐRj#pi_Lw7sR5de4gL6X*r;$WW29:LcpUHvUKZZ:]u@1V}`_P`ORrE`rC^*=\:B ȜT,&hpOWP5 s/3aa+gwq;{{T;TDZ:,jFX)DZЖ E˲PxAhqnOt'o=?+}½KVyg*ڕLXn.SwֵL䊽`䖋i?D1Pj*&rJSXnUmrZrFy5ZN3I*;LR}dxЛA$\ԋf;Ro7#];BVrKt0`nBkH yS8Ȱs[Ī*slpzei~Xj.bfm>D=[UΜà[R[\t)#TR1UQ gPa}*f蒌UZzEɨ>帽5*^fg[j&'uia^ʊ-cB]zX)dQ5g}2.cԜ1a-HUefXHiJDn"K{UMfBN7$ @ŦrhH{yVEB!Ri㠒gȞ. r  gz$uw$,!hMt 6Ͷ5 9kETTSa5֔FY-,5l)ғ*RycszqVNBO6؆w {^5C8_T#kbD1zk@ސU@k# Eeu?|2sڝϘxӎ2q67~nG,O ᨓka5!IG5k[ SjB[U2L&ä{ 1gAKu&i9sa}htE.cՒM5JxJ-N qj ^5|1x e7}K6*ҥ4RF~>98bэHKK|mڒ8JCMj ZIbw k%gтn]X}+7kgaV=`LN YIit[ ps:ފhol}Q⤊ [W joHNsi({qSx|壒ګg [ivʺӗ1轆:ᨠf#J$Ԯy6 ߃uP;q7jANfa1*'wl9jyxٻjC`AUEđꫴ՝-= }#{'okB*C}A98& N&/޻uu( 9h Nޒ@G7lq71 r>eS / M{.y[,7*ŝ0ʠN@WV7PgM EDkC^5hRM)v)(h-U HKuY[݉[NMe[^P>J@Zvx[5,i7/=Y^ qNARh[P]gfYRϘi7p>U&ӅS禊:u*8f6 uC0 heg-2{>iZLxԛћ0; -sz]?}& M''& tm}̾>dDf# ]"0ЃI}0\him =|Ѿ[g%GlNMU j8*oBFa&'r Y7yp)sCz_n7[Uu uLiJ 2 cjɭu]h$Ͳ&ÖUN}B[wLCamΣ)jlFXhsKk|HPoϩ۷VnNZ%Ζ衇W"s#[;n'"t@m09:&U''l-萝j,TWwB6Zk\&v"|a[(caR5ԘjuS#k` J+d-μS@OӞC7W3NK@ :#8o߀QfU!uVɔ)) JJ_ժ*YbPX )Lj 97C9zA̭!SNO۴w{/wǠOSxhM>7dL[]/Д:Ŷa'373`tf p*47e1zz_YKj2 ϳ͓j%=W䎲A}#)XMvjၺök,-~'jݣ5P~0^Z{% ܕR*/ >۱1OXՄi մA%5LR<\o`e;hnBwiGN:ؒOYa}eNʊ-X'~]~5qqTstQa+MglwN0^eN)ܱ3FAa!G9Ji/-"zK7YZ3gn(Si>k>a'ܬ6hڶJՙB텠kR'[P5SR{^]S` :EpQvڪź}>zRˬ`QkıJV1u41hٌUT1'a2I5St' h5mQB[XK ?srM1SQͮolwѡtI)ǶT{cgL=dPκ&à>HJQ&v}ꑌft}f' Ad`Xp =grs/ -ͭhlu$JnXڿ?}t8ݓ#& z­SnGgMN9>ی7p2k}W7[OlZ;2l߅Ru[c9TeAoASȼ:T{x0u֑W]6 Fa"xU_: Gn(0h_F vXq[n9)Y C2j a~S;T;ypG +tJlu]L`[Z#a:ִ[[ZۛoujijrW1ޤ%*v>h0ޓ>yi4ΣPh]i sVԹFqع ^%j}˿mT*i\9?I;B~U%h|us@䑰*,475Ef`pa: Ѩ ȸ-5jfj̚5O;=EkY{NݧbMY@Z[ڭ~Ui=W'GBѬleL20ߗNvi!}b5pKuzVkb<lbqk 8nf1Pzk6`V1YA}ud:b$`;OM7V+G{}uʩ Zk7y:cOIuղ"bmvIn##3δqЁ1Mv&Z;:[[VE⭭mіX[K~>4}fv8 1VlO2jh'e!YoUt( n"ʔ$=j|z"v+|yx  ÉƴC3pkSք鋳HmSd݀U+3`#ɡ[an|(K^E;r<*">vesDyǕKZ쬽Ά}(GL=TҜ2gf,!;UuIxV-PV*7WZˇsRm:IV%I;{r~{6[&T,yO8n :kyǔnv` sAu[$دީA;N?pV,#-*][J˩IJjcVN$YPjCs:ǺPuN3: CɚVg CM )V>Cys:ƾP5Nq%v]2tJ(}9#NC:|;JYY,CW l܃9'\N.3=d=e0wL_pHOOTԱV?qc+aV:IJДRnP[0Yԓ3-$)P}*笜ܖ%)bIw ;BV,Drf|}==S'ƼtP 뚜Tbt`EauNkΖ;%M4 U*ݮ+:j-ѹ2z=iZ0짂NܜG䮩9g ?J):r+q8}hl+fEz8S-&YCq> :=gX +Sɉt7ԍ/RpeUfqVI3x tyZ^Hum='kP=bZU0{K5)Σ<rT:C$U':zBۊ/ nZW!wܣ4ھ:o7)[{F"rRsvT+՛-ız)~ w;gȷ2,ut*eա Cu!q]yFQй=\g,$3oT-r|'GV]Q#}Eg b{ⲥ eTSdYT Deʝy`j[t;ސɛ^qḫ)sw8#T"&G=WTpW8;G-PdQ.Sc'PmysUpdd69aۋs:Nqgc9ƳeV_٢N 9ܩμ^wwxNry, 3<J9\XdQ:m'z|UN6q̦]+GgPUOQl#GKWoGf^$;.Ggc,zݫ^3A-q15qxzOn3v%OTHI!,]법7{"v׮3^,sƇ2U߬Q?w+:Oug?\?{*M8aQܳ܎cKNYotbm:oM6U@WrKehJÂ*[psSKi|C7"*~;;pN'RYmnMxpNE"xԋ|kJ18[uad:NԳe/0|;Z.Ln8Ms쥼OŒKm%O2-Aݞ)tC ) >w O-v r4qĸ'IkzC.nCh{DOIF|T]7O4.=>>VS3BuqijlL>?ZlQV"Bq#˰Qp11mD%?/xBaGYb:}() R ΂.YըllR!k2[ܮ!_;/ L0 *y,0WoIXLqMd%ٱIӛTZA"_T>Gvs5w:%{89s;x2lԜ//d^AuW#2ΤAwu du;.[.-,\*$^\}fGܑ_ھ}{o0s>3-T}ޜ17[GcΜS6vN_!s)+Ac|TRڪ`Ƃ觞SWYԲh} hHet$թR̸[K6- ,QU}z+J:o2%絠ҪT8$kGVʩ(xZ-a.HMs}[gFN-Z,}fuJ }e;D'*Ry?>87\P5 ^j09帆IC{>5j9QܢW줭/FF^OqqVt`E.κAQTΆޚ1S|їmfg V y1鿡F?И  P+2ڗ&JV۲\W37HvK6<%|aqcȗp4٭_tO6SSV?sgW݄_s1;<_jW48]&Pkv4МA 9r'/(ͬ`oكʬq~ĹMXܮ+m²=3i^.Mw y{Ak(׬ńপ,Bku% /D&񊹡;- 5ht>v?(Q濩q)ɝឞuΰLy&z39o_#})i-#ߡ+l抖`ſצK h,F74l֡ފYtzGBbW7eˬpM֋|;z [31f}`5.C޻;i>B6"CSߨvR%kzyc+]$5 [9<8ξ=#ɡ&7{ΠZ:I}v(JO'S> mt}TЗsLԑ8qo#('-Rfb6vT:{!%G2'[CVB9o"uNXLP&,] kĨ*c'u,ٓ:e&m &E$8f8!6vK(jdB><ȎԱCS{v:Ntn ]sf`^CPpW7p* QriA>orlKvDmlzZ J]sk^(+ZXn< U62q)ds Yuk7o:w(#1{+9hjgnY9 g.|vRc E./F>/tz9ji/0()b+_襰E}ePf/8{aE`IENzyl6E1~[*-*{a 6a;3Czt }@hmЈm!':p<9x?LY+6:6{=U[RRsg91eshx֪uv/֩Lh=x1Z{]oסp mNԝ j_Ү@F,P|':nN 9[NEn] ȗِw_E߽kcɮoD)]Tt'5==skѫ9QrpV:M9N`>VY@i"%Wٗj>I:թcPDS>{Ih[OO uAΝAOu%CCCG}AXrU\hGjJfH=}HHhўMuA 9PP7u4Tzfu[G=hOfVH߄-}*ߴrз7,U+߁㉞9jީ|=鋛v|¤y}RkͤO5ȩ<ϒ}#iWv`[!V#0kwR(Y!Q=#r4s&dvyyIr^ߝ7w}x)(n?ltnLDюr%wL!L>iy'MzXYӥU]!\9n%\H1NIoLoKQ0 WXw4I2sjOV8?L9FseOtS2>eY؄ksf2wF\ŕS+ŘblTCUTRokU*f߭An=p"DYWPmU>3W9Z1 _6T% zG}ND6HT5Dz˟v> msmW{[\Еwжp3N/O"{o+eE9IS;Xic& E6DlnC߆R^X`gvE=\E{?㩵증gSֲ-gŮeN亜zN@BElL$˷L说R guabku95p̀'7Ir,d7Irolm]̆>&9£ed4^kThػ߱OnAH9г"]pyy7|6SLƝs:y RL圈9vPz(#QGCak_%US誑͍~o h*}K>~tk?JSl*~S<ؤq$ziBNyUdlS~ɉ 3WHlx/S·sV#(jSϬ\],UAu[U0144yr2t4RڬuvB;}~eP!ǯo dz/\:NeJ ه8C='өz}ՉT3i7B7V YVP0Hz;sbuǚ>ܨq$n/ ¿tr .R'՟ԨgoI,{3<؈Rߖ80sp{Vp,b{wBqvZEsju0w,)\=з[kW9Nt|w=]4*):EŶk3>\=m䭏r룰rN(mouVZ~x)e_`2Ho%F˴+}PxrƳ HN9}A$po[x [PKޏ;?l57A0_VQ O%Ғ\B~kҠtu$eAwlJ0ϩ(v@E^VJ rY\9X`1Xh_KIX,T >S썾<;.miDZb ~-\p} 24&OCR:ITJV;*]͙|].g+w~Ιʖßg|S qq1֩p|O2z( BʚCuM9lTJpJE(!QK(L|!/z<F?usǽ}C'ˑb;|o7͂].V;g7 Soi7;9{(}ʻIw |RmrliƳ8#Z#,}#fOGsƩQe*;/sC:t>Ë8"TI9VױmGJ7 2 ќ[@Y^WnNw/>7>ӽ+[#C-֗[dw`-lѯOOd$Z'tZ+܌Y!C"|3 ugD![$ӄ*AYTw]NUue8IE :ϙˬS}UVl,~ZTw;wȗb {$Yll蝰#ըd;'e#ˑ7y6s2bbcviExzuMu;dpxΣj4 kݾJdu-yN~w`\rrNmʮZIS*|6捎ߊ8^{COuV,NN$:б yұg t*lݎGTjjc9Ŧ]U4n.ich-xe7q \s ;"0gHo#QMċ 4zu sqݺWWFd_z%hp;+u#YPY{ssˑޮyd_q{qA-G56:_g'.e1eя۪&~0,g,~kLxq̦79K|)N-"a墳r}ʈr+8s8-}yGC,J.k(su l F7=y78/}.2d_{mBvmG}!(D+s|i,F+ũ0 ݏBm*,j7֝mueF*z' \ވ!^C? oNTgéMvwXM\ﭢmᵲov}mך-(N2q}+G\+M"k7bH߷uhnӅqյ!בSpٗ҇wEvɊ>9XU_׭zI?61otSetwQ2d7=hOΑo9ȇ;PUaҸy7HY&rNGҀ&Q6b:+N;\}&;m>_/ǰ]ԧKuk]c;*Vޫ\< ¶i_, Ct_s>wL{i2NNuW=Gi]LkNP?FY#K#בz;lOኬz9[7*[W2.f*W?b% >bk]_\"ǔ߳ۉtLl=qh!,Xȏq:Ƨ=N4ُ~gIIIIIIIIIIIIIIIIIh?_G˼TnZ6fUүm_mWLj׿:<":#<":#<":#<:#<:#hyYɺO}ud'>YɺO캫; K?y=oh0/D\L5XAvwsE'LI{Vo714@c) e~*1}03>>< 3l9_+_}]coT0>_gfT<ޖ:Sݲ\P77 %{Gw'aθ*^}}8{Uv &S?ŽZYJb7B {frt[YtyP 22i6FdjTVU^\z=@|>z=@|>z=@|>z=@|>z=@|>z=@|>z=@|>z=@|>z=@|>z=@|>z=@|>z=@|Bxo!z=@|>z=@|>w^A~?z=A~?z=A~?z=A~?z=A~?z=A~?z=A~?z=A~?z=A~?z=A~?z=A~?z=A~?z=AZeC5@@~?z=A~?z=A~?z?c/ ЃA z==@ЃA z=@ЃA z=@ЃA z=@ЃA z=@ЃA z=@ЃA z=@ЃA z=@ЃA z=@ЃA z=@ЃA z=@ЃA z=@? +ЃA z=@ЃA z=@ЃA z=@Ѓ{{.=====================================================================================eڕJI늊6ͽڼ87X&m}ULםd'>YɺO}ud'>YɺO}uuyzkV[~5f?)ȚOvuΙ_7\TקU?'?<7q >68k˫77o67'}dӫ;+^]yO_EU0t2_S7~O|KnCx W=XXyzW.5ў ;Kng馿eA}OɛN_}oo=_?!Ow>?|&I|ssMmھqV-nppo:TY@u]j ͗Z\=1e=BdZPt+="=[ _{͘SߪUj;w}{SEU'TM}__|[_QlU<1b_9ۨ sJyꨌJKOǻG&ryZܺRPS#JAtor+)?Ɵ²̲‚MR<0EH)>Uzb(:gI'`ĖQTZVTR#5ўtؑR,]rAӅXQ_PT;; ˋK̒~%^tV:5l~:G+]trayU^SQAaYѼ86k@^8//_VRT2/(mu\yYvΫWTR^Q6wZEќ^ﮘ]gڜ⹳K{i Cט!Wm|?ePw>1+*k*UU[.ĆSKHHWwzт‚>EVg痖"V< 1n|t`+^ӹa9~3}yyyyyyyyyyyyyyyyynC~hCM~?u~?4n&?䇺PC~hCM~?u~?4n&?䇺PC?Tz$"s%BHӪ#MHF$n#ۈmD6qѸhF4n#ۈmD6qv܆amqv܆amqv܆ې|5W jj_Urkan-̭0Z[ skan-̭ܚܚܚClj _*)6__V|Z[pkn-­E֢Z[rkQn-ʭE(֢ܚͭܚͭܚͭܚͭܚͭZ*ʭrkZ*ʭrkZ*br\-&Wbr\-&Wbr\-&Wbr\-&Wbr\-&Wbr\-&Wbr\-&Wipkfpk&frk&frk&frk&frk&frk)Z ­pk)Z ­pk)Z fqkfqk<<<<<<<<<<<<<<<<<<<<<<<<<DjMZ}Ut*]5}[.=w ¯BwVYY9NN:5GUibo#/.v[L%A*xMesJ my3?jްkbgoQg5wM]V]jrZvnՇJ̀'\g)R8­A!D}*6p, ~l3*s*j4 ߖc0mrx꧀bUՑ;LM< %R+HG:Rg.Hݐz"EJFrñEJE4iW%")RsH Gꀔ+Rw$6H^H ! RFi`PA݃u={PA݃u=߻|P*k7{~={~Y u^~qQHؿlP )HA R )HA |6wBEecN& )H^ )H_A R^6 niٜ93έ(pڜ=B1Q$EiHd}Yeմ/$/7l4wo&>He}z 5%.{%uwl9RLo]OF9n^}C* ؆|^SٚΕ]7vt g]?^ί_&ϫ{dtr!Aon0b.y`gp>_#ثcy8#^={AΟKu|vKSmzɷb 1[˹O.4%,"cyeuKfFy_=V87կ!%>t_jru{6_m0@ߧanㄿo ~?\ܼ9wq9[4N鶪ɾFBkjN_Zg -<&ێkjҊorʅS6i '6O&4K'66qۯWvP"osS#{uKڂڦarʹ2vBu_ 8?6igx/{k]op51gG|j$)mAfWx]3Xr呶 '}8񗿍=)ΝIzAEk>+0lSmr|Rݯ$/#T%\ŋDf&l1@wnE*?x|sX8wn1nPcd߷Mh|N\Me6rqn]?k Zg=o/O3]q^<=Lx|$) {b;8 JDw}G292v1z߾FxLV$9HȤ #d҃L #S S}s3?,aw~X]쇥 q/[BKc!WTR^Q澽lN²’iBU)*8_?3_84^tNIج"v{tb;~_?v\q#"M BH- Ej'{$#؄^'H] H=be~H5R,!6ibpM՗D;~~7 I¡BKBlpRha(v'Ӑ҅ؤ;)&c 5BlBqbt04ropoBp' )B -D4i&R HWӹ~Tt" X9+E4iIH'#t*iH#*nPG"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @H?! 8X} T@8$p  H@8$p  H@8$p  H@8$p  H@8$p  H@8$p  H@8$p  H@8$p iӑ$p  H@8$p  H@8$p  H@8$p  H@8$p i_  H@8$p  H@8C}H@8$pvPUsa@v #@28 dp @28 dp @28 dp @28 dp @28 dp @28 dp @28 dp @28 dp @28/ dp @28 dp @28 dp @28 dp @28 dp @28F[H@28 dp @v^͍(ؠ(@; 8P+p(@ 8Pp(@ 8Pp(@ 8Pp(@ 8Pp(@ 8PpC7p(@ 8Pp(@ 8Pp(@ 8Pp(@ 8Pp(@ 8Pp(@ 8PpŽ%}vl\|%WH{p(@ 8Pp(қ+*8P TlT Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp>Ci78P Tp@*8P Tp@*8PZ͝ h@8аC84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p)vH;4p h@84p h@84p h@tp@N@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@GH#} @:8tp@:8tp@:8tp@AAAAB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B tPtS݂>g>wA-v\Y?zsJ'w&AJ8slrɟƒ$ZӲsM J &SQX]o(\QXNOx{_bUY ݲܟM+,N]Dl!Վl4mfYٰC*Rie -PáUpAi~I?pI +&~fzȺŕ2hE jfG%qe[Vom|p ٿ_p88lTMQ)wVƮaeB2wU>eV}l ~n)T}lk浓_ 'x$x놰n -5\9BsKwfܲ&k Mod"96esK/>{iyA42Ͻ{-[r>~[?0?Ԥľ@=P}Xs-y_ǑL[J0u={PA݃u={PA݃ޏswauS>wP_BG},/%/ {CD#?Ct'IB짆fNN7\ FP؄;QN?t'ƛ N*gOOy;q`PA݃u={PA݃u=߻lhW@%'xD].z?KLNş?,>X8|p`烅 mqF܆amqF܆amqF܆amqf܆amqf܆ammmmmmmmmmmXqV܆amXqV܆amXqVF$n#ۈ3Xn$VGU}v+/%ݲ>*hB,E@\3ͼZȻ}$k%*ɶ[=S+ fÛ>lVe7t6^2wvaYѴHpm?t<\Kc?C[!oAeBJO?,qFszKe_ wqZ}zNH {G;C>:YΨ;+3~7]"4tz:k\ˠX͢vĎuv+{*c;_3,֬u_<=+o΄,ZA 3sw?өÂSkN8~J*{ۜ:B|c؋[ǎ\Ŷq䦍 1>Y03 79۴a:[ܪ~}_1vvZ?JqA/A {2ܿW[^~_P xGyrA<+{T[UJUU[nx({DU?(TM}7W*f5[^Ѹ0ܬ,ʨt}ŭ+E8u<DF*0N%Cمeec$)xva@R|Đ:uԓN'A-?}yIu={PA݃u={PAuw|\+T6OٱCK%Kj~!6=ZŜ2!Fz:pDtNIy}fW-8WRo#8DQA{pɰUY%j/w/l'/`wmƺ v\" 1Vg_/rw{/w{3o*ްZūջ8 y|__C]uNݲ6vߞZQX6G>lV X[̝]XV4ǰ޹@W`֚&\_Zn%\7 {ſEh];*{fV#^S#G ~MG wGn/NGn$h*h0: wGn8^y؛ 7-bo tIv{˹vI iHBMBMr؛ݷNboSv߸x4뾱}sB[_*"MG4YHH "HHs!GZtH tH 1&*؃?"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp U2wH܁;s_t-A"8AdDp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp @"8Dp  8X 8` $p  H@8}(1H@8$p  H@8$p  H@8$p  H@8$p  H@A;B8$p  H@8$p  H@8MH@8$p  H@8$p  H@8$p  H@8$p  H@8$p  H@8C}H@8$pvnW + d56P dp c߆@28 dp @28 dp @28 dp @28 dp @28 dp @F28 dp @28 dp @28 dp @28 dp @28 dp @28 dp @28 dp @28F[H@28 dp @((ؠp(@; 8Pp(@ 8Pp(@ 8Pp(@ 8Pp(@ 8Pvo@r?S(@ 8Ppŝ 8Pp(@ 8Pp(@ 8Pp(@ 8Pp(@ 8P8Pp(@ظNK (@ 8Pp(@ 8PbelH@*6@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P Tp@*8P ]H!} @*8P Tp@*8P Tp@},4p hء h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@84p h@8V~Fi;H@84p h@84p h@84pU>@:8tpctp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp#>Aچtp@:8tp@:8tp@:8tpWƦB B B B !p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p:^y~nA~E~e J)|zw5$'VI.Bome샨k']7{PA݃u={PA݃u]nZp7n\KpzP6O2AYzǔTM+,q'zݛ0n,}#,~uY?Nm>~N݊I*'ós0/t49&SOpX?xkӚ4i/׻ ;/t-4J vaR7tf9tϔ5N~Nag-;|x9۫G.VL;"~|ms6ܢǙ7oղգ63r+Nۇa8CCQ﨧j.m1׷\0<ՕɺlΜXqp~+yo#Y5yi>}L70£֟[mu;X]G~yէ36~K~>[.ao~K^.g/Qؠg[f/o3zKЦҌ~w}?;KfM':sW|dtKf2mvc'^=;SKZ;و~93z1sut9z L3`㲧lMglqی}ӡʺzT+i|/+V斗*%;Ԃ2^i޺\P8ڣh:UVRS( ܛ*?Zmx%RJfm3-/̉F]VWKGPGeTZz>]?2֕":IW {s{^)HFJC9SO:1C?X&lҲ għĎb .Gj,oЌB]X^^_`\l+>o!f>8]좓 ˫Ҝb ˊűN_y~~Aow^򊲹*ЦtsWb ۾iW,la:(Aiޥow ش3kJn׏iw餮抄j{tjsf݂ԦRW,G= $OW7`AN$cv=8axI~ɜy~o*x% G~I峌 ]SW/GII=~-I&/%zZ1>?"jqa mVQX*:hAaL?R> L$$e*5y Gw?VK;k}}ѩ&?c+hRmICCr]%u=0LrGa$FW 8덇OOrIKjI2\uT%e}fV,\O%ťe nF]8VugV]4{Oٜ =qeW;h̊Whjc*xx륉ljųN % +/PWt)(j=م3X #> \x}{ģBn]uU^ة{jܛx~uq׫>ܹfדAo_RBU;34ŻuޕV=LLwF Mɕ׭^P'zSj's=[C[93ki IO2޶|Fa TibTIy<4baȏmShܴU]%&D苪=7t럢ieͧkJOU{qbI80_&~?u+\_}c.2@x@A$HH'0TvJ ࡉB9CsaMH_X£"bQmvf%GOD5I II#/JoD:S2P8-C%@W  hSMvhf_گV ĿgWc 7nƉ͒Ms~o.[o㺮갟Z]XZVXVɯjU U r7ڏ4x3jW^P8=nqТ#L#W.-ԜF]-!M-[yykr\COރo'>y(R 6OozzVJXv_fcnxeϭlvCYvA ׽b,AO>el}ʻ ^le,mTXr.K9yWYf튟>2}cል,g0s]37=v>Ye* >ቯ.{pYQ+#XO,g;)YQUlq3|U,\}=3;ͩ+a4K;vjY ~f-󷱜2iX ]6ZG|{XݛO<ʲ[]䲬pNx"z.sZ^, fcO}葁,|Nb:~':չ}q>ehOvg{u `),q_z=Z3bH]c܅'+gBCOa9,iK%,kٟ=se,q[@W^ϲWl,a/=u[,6ݿm|棆,}ԉgqmLkr?鱓~0gSȆ^ze5g9]ԥboKNۓMX#C9,KOѮXgX~gv0Swz˛w,}t' b1Y=m?|Yfɹ-~rڜF:O{Yt󟿑޺ŏoyMv dݳLat,}0ѧp+Yc=Yi{ʴXOwk|,oO}9d%˭y4|`T ? ˞7ϛ2GJWeϽe eٝBŎ7:xc?{zk,kV~J;d=7>)f|˙γ3܅6etY֗,4Y%k#,׆s+,wZOW,{³gԌevnnc>;-zb{x<,_,R̲n.K;~=뙟eYβ_玻!$7[n;j2̜ܺlGǕf qmK? =|{_ZaݱOe9'[Ϙz,e^`TGi8cFW_yew_7eCM,7={dӼc#Xw۾vIk{Y-yKgګ?A5~e?|轿s-2vffu,iZ7g9}+xbZO1~ϙ׳ܷYN+_`Y\+Yֈ{#e yJ Zt/?Cs\P猺4aY ٚel2˾J+,E1KaY;\9u ~<7oI=?ҡkn4}E,{(s]o&c3s__7|r{ջ_3XΉcyo *.2=Ҿ&uC,kҭ3͔/XNI>g?tssUmusg7ϛyr}`KQS/o`|LnbYC78XF>ϼ[e){e欫s󵷲 .tق,+iϟ=Ӄer2Z|+xRcY :#Ys=Vr{$}S4f]RMHc,4=S)dxzĦ,oie_]lެS6ڊq膽cUYF&u8eW[r_Oxe\cuT7܍+&YȔ,۵wc9]s[=]ˎS|òHrYk/l\wi=k_6%Β~};9QӥYhgEg\zg_~XN/Y5[Zr^8e*Kn>kǰU`.Yٽ2I,W\7XދWefyMߨye,GP2_}ztY쟮z]+جge/ܧs sͤE~?b:}O+N{nf˝x΋O&d]Zr/>Kfͯ\˜[YoodY]N)Qw$;eY ꍃY^ye?/8yyWпlәogk؇؄ 6,oK7 ݾu*L>Z6a ϫ,k/ɧ=M(x䴭i쨧 Ygw X)]/쨙u3myrY gYrgv; nfͧ^۽|$<\&֞3r(;bX̞/xxqǛ޹0eyw/OjXĦ宓=r#֝3}'2>uf8{gީo*uE;W̊3fc'Uv/?_q>fN_l7{}bhgk&Wiòw/q_v^9/yƯ`yx˾wcw wAuz~5λga|v{E{mnz;g<erRs*58-}%ie߽퓧?(M<\WrsO^o8 }"rvm2i;XfYbx"}=eO0g}PgΝpɻ_giyYGG}1mM=y_y+fO\27_uØw;]rI 3wdch[[w۴k*1'yYy-[b\s}G>{b6ϲWk҆?bM,󭖛ڼeoj_O֖e=9i_4`S=w+X=m'?}KisӜTK=NGԢm$1f]^`ckc沬i,3 hܟ5fY}ökYf3o;e|ڥoKa,3'> ˎ~,8Wc7zoyԳ\_XG"ڵfY?xY|laYN/7#KNβo,c#Ic-gYt| XV#o<,^~UG^e6=m`}KoMɑIܸ|e_˦na7DK{1_ڬwWIKG'8 G;~:qQqKhXccw(;R={ظmuח^ٴֱ.ٽa-֣i[&qZs/kK毶.{5QW%e>g~٬W\Yڷe]*ɛvt~mTpLg˯}-чXƒec'2>KkS$s3/t7;g-죚]}"y[2ϙpw%-v̍Gu],{Rzβ;eo^e'hjX[﮸5^ W-dY&μ;ڳFn?~˾ݗen,;pA#߻ l̲_:n#XȼKn2v/"LfY˯UwY^?#b>r ,s[Oci[; leʯ1;-҃'>Ͳg{g3CkXPgo\b+njp,sZs%ɷa-Q]GNxӿ9,v6~{SHں|Y^~ ׌O-|vMas9C͆3X1w/eߋOgm|;hWdKsv=u&o7sm˸ zr_0{fǿ 楾k럺!2&|޽Y6e~kcy5ŽkXX-Ʋ;mFo,3<򑋞d)ҢܙoZzʇ,kp^\̺c_qiqw'}xҁh4}br{<òǟV]_rpB[NX,ksWer3Al҅߾˭Lc?re}'aYQL:>Cgo:Qnރ-GҫnA)ygVuÿHܿfb/+^gRoFn;u)c&'yyyyyyyyyyyyyyyyyB;{::N,qj>gš~{盰cj_uX_jdּ1A-zO_X|y?sd/{]ZOC^vN<Տ8 |y688;z߯>zVB=RD=3?b|xa Ogy}xyϷqxK[X??ڿnlVK6Ej9/>^GSHw%,V}'//|~{"7V?omz>LίgmQ[%ԸW6 ]OB|KS%~NcK/OԻ '^"g~y Z?^~<\b6N 7|6WYq}mD;1ofq9^^~?n?',^>MCu0&!+)\Pr~U[8ogDӼ?.>^zg?'V/TX.qSxO_۸xWyogr}~qÏY}~;qܼx۞S"\b~'ڍC^O/^~aju<{<$_xwI7Lh~~W?'r+KJq;;_߃E%EEE'fV(!ߵS.#NÄ{4=$ZVX1ej|"Zf>'^+3W{8W=K{isk\ʇsi}zjL[c2?`廩>Cm3Ժ76O=Cmy["PK#a-ګjt# NV3kz Ck 8[5zNyj86&@4{nyE¤iEӋ ?46`P 5xM~Xkp>zO\oz{O\ow_( ?C?Q5iz;O\oz{Nǐc~bOzrBKKKKKKKKKKKKKKKKKŽfg-ͫfurOS{Ϳ|J½Kq]L~N{s`؄tԄx?U>#Q[tِYlO9T֯|cwuqgű 3Y ol-eC|QXs?d#Ofîwe}? =>:4> va#V~}c*Ko+^a Wbӵ̺y_V/w3d?eQ7~>qSذW5:{"3_hp臮=YЊ&l7\toa]AX$gȆtbőXSvu> Eg[5Lo  mgoo6y{wcVa'?ɪCRΨ業?{mU6١.1;iN;K6-zɲu9icƒsq3gT4o*K58s#6:v37='}r1x&N O|uĿw9g4xm^eVN淝gp7/_w'ss{;B~f-97ש׾71;#֜nVt[C&FIImf44ʼniQw09oO]y~YX|cOtCq7SN]oz]Nֶvt/;sƛ=7^t i3p`NC gSJ${,iK%I t+{Rg܆K^Έcۙ'^x~mF;ڨm4uN{v[7;='"y36 m蘭pΣ]u1[[lpF3kMo||oaa,3Y9u\x Έϸl6vGc--s g| =Ѷ==W:wkEXoWA{gm}[^=%MYYM]8y+T >#-nzpǞ1zZʆ?l7s г]tяӘ`{nf\^ u#7n蛭|oDz-^a{;V?MOÓYjw&q/67~if4^߳}uk?'_Na)?_df)y̾O_[ ^OV,uU/6^~Y_8g:q8pJ/eҶ?uݗ,e3_|Ĭ_J5n2׳2ܙun_|̖^_}Kl+}VOïo^-nfO}ssi̼ed~קt2OKs~逸tX[nqGc~w2/?Gs^I^h;/MZrnvdNf 8a3x;*{6z >Nfɹ-~{ߝAm[g^l>Z8]F>1AGϒ޿0kSN__8Nc=띌i78k}_$|gm[7ڱu)jj3N'}foh Yr#mo0g#bӳt:,jѵ gitNja;ۘ3`g~|!/,ӱw9^lĮSR~zx-Rg;KMvCkBrI=K{w97Q드=T~)~)]C<9)?tk[埒\!}~#KMnYYMzD;)e6tAWؾmoȺܴÞdް _}tu{0)EZ:륩[7d4qcZ]O(K=?o͌Uwh?KSYJ2;E/}ywd>JL@_]|6f_Fvlx?:E[+eCk9z%_)eћ% ^a2r*6pǿr/c_A/9# boÓз }ƅXN>z6߾Roޞ~sz ^> >w1s["}b﬩od[]~~#r{ǕγK[La?]\& +ԣ;%?}ך$f/632^}mEݍlNz p~φm3f}+Ecs㷍IU8Yn~dYd}9=gd ]jZ{I/:wgpftQəq9z/Yi:NFS5\?Uw,pXw=N'eCn蹚 Ǿsg\wú\xҮsJOg:Uz{Z~xjNV'zJw}>{[?7J:Ӌu/Mrl_xWߍdwlJg 7~ђ~ъ֫_%5'u6mc2iϻym9o`Z+l/.r<|l? ˮ?9F_]tD+ftD;Z'"vy-co{6||9jYJ7|rnYÓ_8ÒhL;;vۖ|9qMlH=aK~} \vVc7u{x {E?As6:Z{#~WGG~ͷo߶vG랴ɾ#m~v3~z9ÿxEG2c61}ܳz2N߷uXdfP3'܎:؛szuW$ZT8/# :ԕO=~jmiڃ[,p:^bp.jij_NFTΞ ]|׊b}~ң/e}_w#+Ww6poKO(,{~O:_?q;:eo!:9|~gydzOu2Xkt2Z|+xRc}V%᭸ߧUqՖ'dw۰w̹ѶmO5={ 8:;e_.썫>1|\˷Z2{K?NڜEx`᏾ȋw[l=F;0񽯿W0kʛo8,灥 vv6'wg^?XY<=quYߢWi |\F;|Nqy_g.PMnw|~|=-rf6l)wfM+^BvDW/[ VgCw_n-dM8~ .&Rv5c7̻dl McɒK~6 oyu]cֲA)M]5 6]e B'4%_񿜻u Y׼=N'v\~*v>q}Gm[ɿ$gٹ5[[B[x#>/ Ұxq*[7_o#?]ݾ! IYc޹oj5?{53~!z+Yϼ~xަz6ӛ^=ݚ'n?iK!^/|n~{C˳ߋ@=+_8z /!eY9 ݵlJI1;ION+Ϲo_ɧo朄q].ҸŬjgPAaB\esڮKGgS9Pd5~ymt7gPGߋ%Unj38}w굥sZtE H;3ºy-F?\tD1ZS_WmѺal{5ˋaԯݴzx+7ySУoyecِWXw}\=i/em k?̩?YIYl8^lpV&]2'뷐sNtZ24g_qR^=.{L|}\Wy{[rvsmyNUWʶ#ѯY'Onsc~j˜7nCnvXWM[IzU ?΀~ۯF z^}.adz˝Ţw|Zd4zmNJ9w3r(9dw.LsYŏk̬wSR|5?Sߝ̥:z:+̊3f;egJNawgKktӴ5m;?dmJiB=-^2^"so;k"?r^$9l}{)n+ƿSھ'>sC7|MN늣}Q~v.SF]t[~oO0Os瞷1K{_ĺRNm|i3OeְO!k-kvF=ehW~}rrXֱ?4κc7|'FpcyDzȲnP+yeS[وi[_)/GN>~w7b#[X΢Yl؈ع.|$l_elt֬'ѷ>v<|ۊ`3^;g]ƽZhNn!v>HFK{c\QNȆzOrV6y6s`dߚɉKXʗwoQ_,{˒ؐvYwB?ؒ{a?nW&8ڽٸ#߱x+; l5kӢg!ǯr59/gص ٠sSbOOfmϻ3|Fd\٬asQ7 he mEN~{pv zOz,tRn,V]55|>}rpOYE,zmAN9oλ}w~gv.9=?Ƨ ,zG x3X§])Fg wwxN#^<-c37r=]ߡKJwtmǷtƮomӮߝZeb~wƾ1}b^;'mh#drO8wi3Q>_G=֞8ܹ3T]=a3.Ms R3~F_8Iy.W8ckc:Dz lrۻ0ghuRgnP!Q]þퟶ.9}/擼Q%w_;۝zի97zN}g x7򱏔:#>_?; ygC]voޜvg=aƬՐ7~q̗˛Lvݾ7}x͂c&/:S4J8N;&,p|loΐzR_ΘyȦ,)O۾d'27yV;mlxxNekmH| FV@֋-؎^sdw˛' 3,Ȝlfo9߼zC)玻`3CJ~/\dMuU3Ôo>ӊ˾b<NéNzKv.6t۶z;wgCI 8? kWؑWVw}?~wOdYjθz-^{Lqs/kw'k^i}:1l̘A7;vwP ;fkI;~6}ȷU~wNTen}'M87[/q_c' s̔ 󻓜|\tȐ8iݓvlj.eFNƉ_yi3:f:ݧ{J: 6l{i/O)|fw~Љ4+fi~w:w}U}w:Ujuo~ pp~{nZ=%N252ǾĻo}iꕭ#-^r/쓹,p㬕ѥwl:)K熧oL`6Movg>[_q:/qK:pږnlקnyצkk@wlu{ v__"ۚ|ΘXr}׾ߘ/kG/N>n͇SXr;WcC>;|7ΐg]`r2:կo9TҭՊ,d_c{X>sˑz=K}{GgT( z|d2{YښE3:mu|XS+?a!k}KλR ײy!޼Y;9YwouYxzT~l5y53.lcƎn7ůXwLڵUV״|JNr0:a7hK%|6]u}_/dؘ̜YhBa3'Ŝ3Y^Mb/+ ?*Y^˜V8kxoa|՚+wێ\:=~gK~{Su;;yzv|5|N7>}Bf,>s]NFm~1?'O\ |'y騵N)K)~-~j' +>nݠϬU0/_;޻"NƄһ7~w2ϹkSRcw۟^ޔ:7iS~?o^Œ#zjݨSsw]iR#]k`ʹi{|y,>Ou|On$U4Nũj_aV6z>9<>kw/1yM6n+XrN7J뀇# N'ݯ }8&1I(<P=ф_=?2vs뚃<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃ<ȃjwi+*)(Kb@Ғ93W^?Exaҋ9ICCr&u=0L(,(Q+nWU:0$rII=NM**NSRQXR;p\PY~4}nqqɭ*j\IĤ$KLuuoaWA[xrT-z՝g^UPPKrC|YFidm5K,7ˍw4;[C32M>wQw[K :z;6Go#y{y7r|~!H7UǍ) kk5+ǻn%τ~P_LW^3~w>C};|a] H^}F u?@dzc9.;.uK-vNL&tl-J?ДX~{[6+S_5#6d]r~~]tQBL +K^;W_o> uC'm~f^xquk3ȹܺ$q^y{}P}r<V8H3ɶkirԦMoi} M㓼c <!M畝,Ts}﫣HȻg~x9=i\3m ݰPWCν{O?MA=K޾@[$\MhL5GmmQ.aIzG蕥~lOʇsgb}ox||1xr-w?yP][ýrz8Jx㛫 &ñ伓otu㶇=#mBEshb/X޷䵏[_e~w[q]#MJO>#y{yqK|T #@M:Mzڇ/p>=/pxke'q?ms u㡐9wWzIBu1ݯ[6n 1dzsw^Y ߏޱ6?'"z;vΏݔ1OUp9uxl q31+?Yວ㏉/$>%q~Ol'19Z?uuW/H?SN8&[#׿>!7!N!LA݃u={PA݃u={P㺻ܝxR>sg MsNAa{׼BCQ曞* U7U4-ttoDM:74bm #؄wg.Blr˝,&L!69XNr_d AbD;!~iN7bUw!6ޜ$&ں HG r >BlͽE͝s'U/ A݃u={PA݃u={PI^1鯤+W '5#fRkV|-_Z܆amqF܆amqF܆amqf܆amqf܆amqfFJFJFJFJFJFJFJFJFJFJ܆amXqV܆amXqV܆amD6"qKp=H0AG&%HȤ #d 韘c4,>a4,>a4,>)5,>)5,>)5,>)5,>)5,>)5,U8ɦ&6EBz݃syuϫ?8@X_ Zq5%w؝,؄HR67bA^.fU1^sǻǮ' &}ȶ[Vã* fj|烮?i{ǟYB_CWZ$Vx:^|:Y!G|ٟ?V7sqEqm57JMȚ oZۥB[-!O'U}]BooBo,!PT}Cp b.~J>R=^d{giHBBYB29ByH#v& q>}d! #@Tt,b$t$9HH'"A|.{E=y 4ٱғv{ȟ0UΨ9˼c:jMpؑ;Oa5"t_w6֫rR|LJ,_~6'vĆ_U!k7QZ.N_I-0󫶏m4,?tvDѷ>i/O=6/f) ˺= -+t;κW.)r~fMF[N֫NNjjɢU_C;#rˆcz]W__>嗯`ġ[2}U,e'-y}yP&szaܧ/iORn4YEt&k?6?{Ԩa>SoFf5zxdmæ8v߲;!MϪ7bo378߿p~'D- uY=yT:z1mtHxո+7|q1sg>=.M~6}xUac}-Oe,Lh t4?e'J}W*{Dz.Y^4cv~|OVBկJb-bW4b^{Կxb|[L&s s(+ PKGPGeTZz>]=l֕":W C0On;7TtU݀/ܲc:"?9~7U9}nQP8=nqТ#\PU~']X1sNW $XѦnџҌ܉ݜ7+=I mC}zc}-ۥc զɵsSr43JϨ?)~ɦDΞ4h+ʊ}_ >j pNɭ>#INlE%EEE'fV `HKecB-_V8=a !EzHbnYIyR¤ٖ')r gWI% N(X6yü}qkR\LJHJJAa1Ś㏄8γyN9w!;Jw'cgʡ2;^yyzy/o卽7^xy[/oI^;yyg/Gzy/a/7^z#岗+^{y/7f^~^~^~wn^{xyO/彽E/\rxy=/ 7üýw#w^{zy//^喗G})QQe@QLHG%jWgҠLQ֥l@و e3-)PlGYHٙ eW)S(mJҧ )QJPj:IYe}ʆ)R6lEٚ=eʎ(QIًe_~E.GPF)S&1+щՙ4(Su)P6,lBٌeK6m)QRvBٕ;eo(-Jҡ)CAC(R*NiR֡GY!ecʦ)[QlOف#e'n=({RCٗeKQ@D}L{u&) e]( (P6lAْ e[v)PvNٛ?JҦt(}ʐrʡ FSu(Q֧lH٘)esV)SvHىeʞ(PGYDRzeD9r0e"sr.Qý:e.eFM(QlIن-e;BΔ](RvMٟrEiS:>eH9rPJR)M:(S6lLٔ9e+֔);PvDٍeO^}(R,t)=ʀ2H92 W53/0;0~Jd~U= 2?U 3?E Q= 3]?- 3]? 3]? 3]? 3]? 3]_W?kBgwkguKgs+gqMtL-tL-W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_L1.V=3]?M 3]?= 3]?- 3]? 3]? 3]? 3]? 3]? 3]? 3]?ӽ 3]?ӭ 3]?ӝ 3]?Ӎ 3]?} 3]?m UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW?e 3X_g{g[g;ggg~g|gzgx{gv'juKgs+gq goMtL-_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_L1tLW1&V32?5 3?% 3? 3? 3ݿ? 3ݾ? 3ݽ? 3ݼ? 3ݻ?ӵkB[WqKgs+gq gogu_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u?e 3?U 3Xf{g[g;ggg~WDM/tLW/tL/tL.tL.tLW.tL=5ݷ?u 3ݶ?YY$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'?e 3?U 3?E Uog[g;ggg~g|MtLW/tL/tL.tL.tLW.tL.tL׭n[o  7 7 7 7 7 7 7 7 7 7 7 7 7 73]?] 3]?M 3]?= Ut L0tLW0tL0tL/tL/tꛨn^]n]\n\[n[o &sM7M7M7M7M7M78M7M7M7M7M7M7M7MtLw1tL71tL0t na_3]? dgg~g|gzMtL/tL.tL.tLW.tL.tL-?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)ONUydȍm\tyA:@͉@͙恚iq؞귳;Evgog?Ws5\ ?Wr5\ W#r5\ W#r5\0W#s5\0W#s5\0W#Ոr5\(W#Ոr5\(W#Ոr5l **Em^txE}^ x1Efq5Y\jW,fq5\j6Wlfs5\jWsp59\jWs\r5\j.Ws\q5y\jWW|s5\jW Zp\-jW ZBr\-j!W ZBqE\-jWZ"q5v.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.ex]Kg]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$dD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]KKt('eKZeGZveOZ@Ze%յTגZR]KkIu-%յTזR][kKum-յTז:R]GHu#uTב:R]GJu]+uTוR]WJu]'TדzR]OIu='TחR]_Ku}/TחR@Hun T7R@JuCn( T7RPJuCn$ՍT7FRHIu#n$Օ|eI$_Y,W+K%ʒ|eI$_Y,W+K%ʒ|eI$_Y,W+K%ʒ|eI$_Y,W+K%ʒ|eI$_U6;OVN^Y"s38383838383838383838383838383838383?3kw2۫|Byg:6N{8j%57h\}FĆglk챙[}k#Y_OoL(Vm'LW5ڂkmF̊Yϭ1rʽ,Q5g~e-8yU\PXs&7.7Hͤ洜̲V^_hI[Q%do+ohvl~:6nu7$=_^πֺf]eCƔM)SlMٞeGN({PEه/e?"Jң (#ʁ){uOp$AKـeef-([RlKَ3eʮ){S@iQڔORB9R(uJe= )S6lNي5e{);QvAٓeʾ((]J2(RL$bW#5ܫ3IiP(R6lDY@لe ʖm(R,Lم+ewޔ)PZ6CS(PT(5JҤCY>eCƔM)SlMٞeGN({PEه/e?"Jң (#ʁ)ߕD LR)ʺ (QP6lFق%eʶ( );SvJٝ7eMP! !C)JR4)P֣Oِ1eS攭([S@ّe7=){QKُҥ(ʈr `D"w>*Qý:e.eFM(QlIن-e;BΔ](RvMٟrEiS:>eH9rPJR)M:(S6lLٔ9e+֔);PvDٍeO^}(R,t)=ʀ2H92]Np$AKـeef-([RlKَ3eʮ){S@iQڔORB9R(uJe= )S6lNي5e{);QvAٓeʾ((]J2(RL$bWc5ܫ3IiP(R6lDY@لe ʖm(R,Lم+ewޔ)PZ6CS(PT(5JҤCY>eCƔM)SlMٞeGN({PEه/e?"Jң (#ʁ)ߕvՙ4(Su)P6,lBٌeK6m)QRvBٕ;eo(-Jҡ)CAC(R*NiR֡GY!ecʦ)[QlOف#e'n=({RCٗeKQ@DoȽ8oOԜTzSļ>b܌ض"5îĬ'1K̊KlBzNkT7o0&`L(((ǘ1 c']0vcO0fc1cB*0ٴ C0aq$QGcq<Ɖ1N8 t318| 1.ƸcWb\q-J0n¸cwb܍Ƹ0X80bx`Tv0x 0>0 0~)}V4P_W_ W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_@??*F' UWRUW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_UW_ 5kுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkுkm :௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IOg 7 7 7 7 7 7 7 7 7UooooooooooooooooooooooƆ&o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &on? R?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S_Sr}9/rci)]^毸+`g삛] ~v!.مT(dܒ[rsK^n-0ajعvajعvajعNj8Nj8Njnjnj^jx^jx^j~12wܵ#3{#s`d=Qo~j~jAFjAFjaFjaFjaFjDQFjDQFjDUTċ/ڼˋ/bȋ\jW,fq5Y\jWlfs5\j6Wp59\jWsp5\j.Ws\r5\jWWp\-jW Zp\-j!W ZBr\-jWZ"qE\-j]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.%6f]bKlv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]Kv.q%a8]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.%cx]Kg]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD9VQN&˖lKˎJ˞KˁJR]KkIu-%յTגZR]KkIum-յTזR][kKum-uTב:R]GHu#uTוR]WJu]+uTוR]OIu='TדzR]OIu}/TחR]_Ku}/ T7R@Hun T7RPJuCn( T7RHIu#n$ՍT7FRH+ʒ|eI$_Y,W+K%ʒ|eI$_Y,W+K%ʒ|eI$_Y,W+K%ʒ|eI$_Y,W+K%ʒ|eImow۝꿽ZۜgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgfeWuj(tl:39qz9Kjnи 쵉 ˜9sg._X1kbE3GU̪%27X{}kVߺX|/'J-gjr3iyl9]6i MK-eo Rs]kͿlww@#=GzvK$j{`{^zjɗmy+/uXnK[xg7^zsXs{識,0"-ZWZmi=7r٦s?܇?qS65Lk{:Klc_-CA~|*wMs-?F-?-stQk~_[}s{{o-_~{>|Ϸ}w<߷䟻o|~Y/++ܖXnnmq{k]Xs:ۻ\ݶM%< a98Ӷ>[Z_m}]벖|-<ǿxZʏ+os#9Tf]!}okT}}A75W_oY-fV̚xnՈ93T5fq匪9+Dn܄ׇt|ђӶfdo+?ESp9ʿF޼nf)=E^ =uYZ'J'aS.}h@#1Ho) ʘ?leL忠2*co nyiK8ha(c/?w\ӻ?nD3ڦD%8W*ZMEG|;t-knk_׵翵{߰k_8a0bԒ=snx7y؍\<zI]r/_9anc.vw&؄I#Y5jz-!fy |g~Bcx]lvURV0 6%8x3Yj4,V,*TU,>wA&E46-tmlx3<95MUQ5rEjϼ7zV̒n&W$idiy|6\w _澫Vot# yi#ӭ^pA-_?sr]]D߰heNf1w{z}i?E6U}:qOE󽟜ӭٓkzD>=ΛwJWu0nܵy脩ipbͺH63m{WO_g/Koףϼ8{u7Ӷw\4KQ7j7ݲѩ7=Ktpxׇ(es|3w`O&,ݹ΂aOm}Mt1;{u9J=슮A>;yZCE=i"?/t__ZUbŇ_UI7yfOs=uJNxNWiku[jAztXyMNK{}OX3g=/* ".֛'pAɡ߳!g|q}{ &Nqgqgqgqgqgqgqgqgqins[mc&o?mr[mc&o?mr[mc&o?mr[mc&o?mr[m՗79(\'`Y vv./gB]hArKVn-9%7R[ sKvajعvajعvj8Nj8Nj8njnjnjx^jx^jx~j~j~jAFjAFjaFjaFjaFjDQFjDQFjDUTċ/ڼˋ/bȋ\jW,fq5Y\jWlfs5\-νNjm^ y14ŋ6/r5\j>Wp\-jW Zp\-j!W ZBr\-jWZ"qE\-j<[-gólqx8<[-gólqx8<[-gólqx8<[-gcs5\jWsp59\jWs\r5\j.Wsg]K|v.%>g]K|v.%>g]K|v. x<[-ϖgK%l x<[-ϖgK%l x<[-ϖgK%l x<[-ϖgK%l x<[-ϖgK%l x<[-!ϖgKȳ%l y<[B-!ϖgKȳ%l y<[B-!ϖgKȳ%l y<[B-!ϖgKȳ%l y<[B 7Oސ?yC 7Oސ?yC 7Oސ?yC 7Oސ?yC 7Oސ?yC 7Oސ?yC 7d쒐]KBvI. %!$d쒐]KBvI. %!$d쒐]KBvI. %!$d9VQn`97_-iY}nT/Ҳ'-r -ҲTזR][kKum-յTזR]GHu#uTב:R]GHu]+uTוR]WJu]+TדzR]OIu='TחR]_Ku}/TחR@Hun T7R@HuCn(Օ]( T7RPJu#n$ՍT7FRHIu#nuy_m%-Ҳ#-Ҳ'-r -ҲTW%ʒ|eI$_Y,W+K%ʒ|eI$_Y,W+K%ʒ|eI$_Y,W+K-;[w4l_'-r -2?O[w4liҼygKΖ-;[w4liҼygKΖ-;[w4liҼygKΖ-;[w4liҼygKΑ#;Gw4i9ҼsyHΑ#;Gw4i9ҼsyHΑ#;Gw4i9ҼsyHΑ#;Gw4i9ҼsyHΑ#;GwH H H H H H H H H H H H H +G#ʑ|Hr$_9W+G#ʑ|Hr$_9W+G#ʑ|Hr$_9W+G';Ow4o(3w=%i^Kze KLi7K:?SW|8ln>1Q5Ew3;zGy]%$cX{vKv::|wgk{ؗ+w87ŢeW;rzzWQqK'?n7b{hs֥_/V8Ē[iz8wqOq)/PqZvyXس}?s~z}ou|bC _厗)9qpɗ.3.*7g|b3q™~hŢRw\*]p8u>`qЪ/!ܓOXl?tNb;EͻlN}UtnS3>Zfe^_^|/,Y]݋(/x⨶⬂'Nkt.*xmMqUwN}SXk]{ԞZOFLR)ʺ (QP6lFق%eʶ( );SvJٝ7eMP! !C)JR4)P֣Oِ1eS攭([S@ّe7=){QKُҥ(ʈr `D"w.5ܫ3IiP(R6lDY@لe ʖm(R,Lم+ewޔ)PZ6CS(PT(5JҤCY>eCƔM)SlMٞeGN({PEه/e?"Jң (#ʁ){uOp$AKـeef-([RlKَ3eʮ){S@iQڔORB9R(uJe= )S6lNي5e{);QvAٓeʾ((]J2(RL$bW#5ܫ3IiP(R6lDY@لe ʖm(R,Lم+ewޔ)PZ6CS(PT(5JҤCY>eCƔM)SlMٞeGN({PEه/e?"Jң (#ʁ)ߕD LR)ʺ (QP6lFق%eʶ( );SvJٝ7eMP! !C)JR4)P֣Oِ1eS攭([S@ّe7=){QKُҥ(ʈr `D"w>*Qý:e.eFM(QlIن-e;BΔ](RvMٟrEiS:>eH9rPJR)M:(S6lLٔ9e+֔);PvDٍeO^}(R,t)=ʀ2H92]Np$AKـeef-([RlKَ3eʮ){S@iQڔORB9R(uJe= )S6lNي5e{);QvAٓeʾ((]J2(RL$bWc5ܫ3IiP(R6lDY@لe ʖm(R,Lم+ewޔ)PZ6CS(PT(5JҤCY>eCƔM)SlMٞeGN({PEه/e?"Jң (#ʁ)ߕvՙ4(Su)P6,lBٌeK6m)QRvBٕ;eo(-Jҡ)CAC(R*NiR֡GY!ecʦ)[QlOف#e'n=({RCٗeKQ@DoȽ8oOԜTzSļ>b܌ض"5îĬ'1K̊KlBzNkTh,8 01J11bL c0c&,{cŨUa,Xq!08(18D`q:ƙgcq>ƅc\r+1Ƹc% 7a܂ v;1Hc܇C`xc Sk1a<0; ko`{`| g_`| w?`>z(ீ +ீJ+ீ +ீ +ீ +ீR9f}Q꫏K_}$ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +ீ +jTW_UWUUW_UW_UW_UW_t_}#c *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ *ூ ꆚ? 5_ 5_ 5_ 5_ 5_ 5_ 5akுkுkுkுkுkுZe1_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_ 5_mC~gX_u_u_u_u_u_/# _u_u_u_u_u_ߣO.0_u:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:௃:oO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IOIO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'? IO$'?f 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5_wM7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7Pu?)O ?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O S?)O SoGP ?A'h|4>tGN },;`qXw},;`qXw},;`qXw},;`qXw},;`qXw=L,abq{X&0=L,abq{X&0=L,v.%6f]bKlv.%6f]bKlv.%6f]bKlv.%ԙ]bKlv.%6f]bKlv.%6f]bKlv.%6f]bK⾝Ÿog͢ŋqΚŸogf1Io'r]#k|u5>ں[XXj]Kv.q%a8]Kv.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.e]K\v.q%.ex]Kg]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%>g]K|v.%$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒀]KvI u[g쒀]KvI. %$`쒀]KvI. %$`쒀]KvI. %$`쒸}vŽiŀC^jq/zZjq/zZj^Ѹƍt4qhDG:Xj쒐]KBvI. %!$dD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"vI.%$bD쒈]K"m`6HjX$ ,ImER"m`6HjX$ ,ImER"m`6Pj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eԾ̒ڗYR2Kj_fI,}%/eVo3dR||>>||>>||>>||>>||>>||>>||>>||>>||>>kw279q^-Sg^#'NZ8gI WA6xy7&u=[S'UHV?Jxu#GQ>ݷ!F# =f1Z`h6m1aFg.]1atFo>}1aQaaU1#1c00p#1Fa] dzkx}Bްacs"οWf誟Ike՝(^X1sT-+X;b 徬'һ(U kJ-*]Q5z{7}N/51U1뷾;j{Owo7rQs VV_+ *y9К*?J/!>?nsǖ)+ґ}>{kMk6Yd̶l$O[~_mV_zm@uhFn^zY6|7YZi6_yjYwG]zw6nNϴ{TGWPwWT}~a --=[Jb:K,6I{7n ˮDed7Ia%|f2FCŕ~çC[fvo.vozo[=ˮ͇X;6-<[zؼ&T5 l^jqD"{'pkU^tM[OὛ-sVn lu-l$Vg1M6~YN ?D/ ?yϽ+f[ [77^TcmM%MoP]-Ч7&Xe4ٞ:V_.b E0}z~cBuyװdOiłVlTmO3'5Sn3w 3? ߫pfEUys*WVS.Z0}ᢊ‘ϭXEW5a"7~ 4+sԖVf5`N圪9YZQ]U)A,Nnqe:OiMZfi)S@yu7(ߤ|Qg)|m;( :vj=Z5{᧬UU8jvNtt2983838383838383838ĉ/`os;3,w[!ٿН~aԝ~j\Osy2s;<adY.O\U:6.7]GT= O qWN[pz +fͪQp*}ifio7t~ˇYjj- SٿϜ5ǣkf&;G=>nVN#fs;=;J/xo~d9 a=`fwo_}ݟ]#՗ aURlL9#5:kso.̱͙^#Uf_P{!߽nfs ;gޜ3WV-?7.gV,_OIt\_pV~ӳ7K?}a%fQZU?Lܺa Pdߦշ LjWs,?r&9u 8Iኌf-Ƚ1j]g܁W-ȞQ+=qgрXiyAژ;bтZ>k?ˬ~f,3~/O~U+K|W>ѯa,oS7-sf[y7~̓MÝYǏ__ Y9G{EO5[~ńyX0&*__sʡp+)>ݯX V_>]uhEgl$|zƯӖ>vQeԦsy^f-o&x̯A ̭Z u"Ѝ._EH]-]ӿ _hRflrH-gR|w*jd3Qz/I:G^vؐԂ{t}0!J:6MO>ńGń=^W*1q>iVxr¢^cE#_[ImgbBkO~|K(ݿūwY:gϿD8Wr'uQ6ĹEm&gIU'7kEŔ>?%+En/7>ALXV-&yiQ1~yҽ` 7Oeo#DE{dki .HscNn7{>=7>},JfЕmE|S|D_QyܤgvNi^xȐֈ;vqCѱ_qmK'Mo1xQz|R=u>%}[[VF5YxEi=HV|϶ee~+J޹I^a"&%v ~(>DN }?f!3q$ȳ9T;D_z1tG#ZO.8D㿴`/s6p1ybʑL>]4_k$ʗܪ6>xm5<,&>Sϼp(޷ή?(ʺ+OSZL?;_y󲖢1k.~nbJO|wRՇZz]L-嬻h+J`}oV'ɧ{|e{~VOn>s1g]7?wh(-~gڿ(v/ggx(>o:~%?O|)ie-z3D [y:?9o(XA}r_Qnw-J=OV]ٺ݀*oOSv%d 0Q]rF?|(v;RLiZk.ʧ~)J(n/'&}!JkqF?&8[DəE /sr/Y~K| Q*v^(Ff²wԓEi;.cJۦ8_|n1.8kQ~ʷ1yK~9.7'&^|7?صY;_6\q/o^ġkn]Ϻ(tSe郋ڈBwޱ]f=}9a3&2\f,o(&^Ó(|NgYL5څk˺^7cDI䗯%N~萗V_tbӝ(;oG*J{Ə^ղqnQF J /M-g-e:x_ o7뉒ڳ8 JxW(;|Gmw(nߢOы~C1WVU|Nu7N}hQ2mE~c1i{bj(c5>cYcTV'ַzQbNM-~U؞u+eMS^r+_ܭbgD٣{V-J&~Fg;*{g^+Ż[Ko=N1=rҹ=,J|>)=RG7wcbrl6QRe]_)u?(gg{b㻈k_9]1?>EYY}b7fv;(j#zK(&[h,ǽ$_Um犒oZ21go=ۑNSEYNQ];\ϵy뎺N?)8<(=9|lc>}Nn[c9˧5(J}{z6yEWQ˿+/oԗ6NS݅sƯ'/JЋDºwT{HLRbq[M;߿]Ie6=ZQܰ9.vM4y^b||+Ŕ^o6y+SF>>gOB1Ԋ; ~S^X4鄱Dc5'>7D7/lϦ"1 <8%1WVt[Qw]ߔ{فC/{ñݫDٻ;? <ޙG\Kp%lͿ 9DL,{W|!g^c/F?+s(.ۉ)|LaxaTy tRDI]/Ƣl}.{HLy}{8F?rt,>7*1]|^\Ĕ}sx}e4q柊Ƀ}t Е׌{*Q4+Jvs/SkҢߥ_/ZW*Q"J9&'e޾?ş4\tObJlkف}^p([§D^w{d|>X2w/l]b7vh|x3'?(>.8?pŸ>z޼ń>.׊KOh7 }7dҡĄN)|q~=ŸW\RGl?`œ=#&X1iLD]ֵ/b(Yn<:'_1uMP>yËsv&ƏoWQ|+ Ӆnk0;,&;}Rl/]p_ޞ=O)J5{)b½g)NޫD Dq ɏ-]2 1;汢{c9m1􆫆 RLco7'ZsDIesoZ= obbI.O/IL8hᰮZnw! DɍwnBo J<|.'YU=wڧ,J~.|xu̺L>p+&>KG CP_߸v<*ty]<~=v8&|^LJoʽY/]r:_lEɲޥn') ;>z^3.ySyTL|aK&hbwѾ˲D۳[?|/c{hY{x+{ |߹oebBo[&]sb!&:vWy bBц=nQzPK.jح7]^;ky(Go>nQχF(aW|aPuφޏ~)]})>v}3oMQ8(Jڬ;Imu䅻yDOO?.ŗT>~l}#Eɪnް/)ю?!&bS/+J JJMQrʀ}~xR]]wR^d>bƒ+{?w1}(ݽG'J\ 0'7^zfFF1g|=zn{@Ln{S'58]^κ}xOW#&^\/RL7Y>1{}۱R1`C9~|c\#&xљx׳oQִܝؠ6]V t9%>uѣĔY#_=.lQ:a({/@Q6cUqmxYQ'?}(9+Ztɝ'~';?ۿ-27o?TH~ّR|L,Y/L3imUl֟l=_{NYFSG%t>zY%&Gw},Y?Oef땥7=}_6aٖ/~oa+gk_fyݯ߁.,9>vvT$tʾ7ylz\}?ޯ$=![`۳mz>7nl\_F]>01kU^;Fn:囿&坯mͶmo-Kog;.^ͯt.<^Yϛ&{^YsOw=>mOj[.{p{.ɿyhv.ݵ՟+yۡ_j{ڶokۮ>dz7[2;(;JĖ_G{U$},f9!yg3 ^Mɿ-&!{%tڌۯ|uj{f/_ϵ+=jyYϮy>fut7lf9o~-͏z(,Ixz].^)yϿ>{yfҲM}f}/0}}=>K[Ͽ]Y~ֶ{/[Bݾ>^n em!eq}٦g?7y3|u?op'7nq~O+瑿.})>m?] m7x{$|'J$6~]}-λ_e}smzϱ6C睭a>¼۹-}eWm/M~{>l(Gl3{@v]q(]қͿ]vn٦Ϟr??ߣ/׶]qm;??Kk߯}oovdgwvftyY-eo>^6g??x$6}i#_WbNn,|mZ?Wh{~3zrm7}Uxv{+{AD/]OWf?ۥ5'rts*T͙>wҊ⪅JH[juBuq.r?`BJKjEU+ +TU,>p9X[bʊӫTU8gVaeŌE/< ţL¼ɷJ#);vZfv䲚susi9J^Uh%<8ѿBgymlvVń1Ԧ/Cj~1ԦcU [2_eMZnnS17w|ش`N$ MeN}KhzrYn[z4=pEU{V.ZP1cά937aq[[~ /w/~ u;o*ѹKeo?|<߾ϷVE_6ok_Cl5+$|w<.w-]|d92d9D|O)>ŧS|O)>ŧS|O)>ŧS|O)>ŧS|O73fsK^?QoɃX]MSRq2I7">*Sǜz=ޖ~yoSwwTbп ˾+=| "̝gAs~L].z|_H;B;c~IQ8r v:Rp1rf/\xbĬ*-#߾S1ͽ{|s^7vKUqº+Q%}/+_?O{}wX=])#YNwr kíݖ~@lQ M_q}Bov8t1r 5Lɣ{\W^ էU}N9Zx/~s_mCtыC1kg;1Ղ>kpï~k]k>7!OM;MO~חڇC <>yŝgܧL!~꽾ޗGvb𜣎yrW|߁+~Jw>rp?I/ KrT9{GOO?5-Z{ o.o~|)ׄb?LqbT;-1n8L/=RxnkjI%-߳k^s=ӥ#v|QNb qV=={%==w_=^WC'}Iw///JO>k zMHZfȹ?~PSߞ|KRt}rw|~jշOʓ5:{x]u:;=?(Ha뚞AODص';߶xpҵk:{-䭴I;t3gQt=k~Sa݄^>!҃~/:´臱|nzҥO{o;~zHn[i8KU\=V%DX=kǞ>7=hV4 ]-^=.qүN ';-=^}u@ #5;ݫeS 㼞K]}zzbsW!}7^C[ {"\z~>|ң_Z_QN_zy&v & {CX|{{ݥ"1n:oBw?o1& #_ogo7oz`a'x\]7gT õv[9I6mc*/y?N ]vh%o{}ftG3oϳ8%KuoX"YygߎήSb҇WP޻sǩOօ9 SzǾ<]|r4yz?Ϛ_qjwܒ|ku`hzbzNӦ.[V^5x>5v6SNO|⣧ytwv~5C'V^\bxsWKic;z?#nf eߝT~h%==R=]r{kzJ=wCo;nӫJzsӛ}垞tUxȣzG҃}wFe{z痴Z}Ϗw9O|vxߕ7ENoqQU#+f/O<9 GZolzMsJuۧ8Uc˯ip ;KgBazZ9`̅_K_Y*=?*ݵI^ =yNMM޾+qҢN Vߜn?=_i/B_1Vk#6l|&n~a}7Mf^'ݓ.}ʆ=oH޳;Lɽn(Oڿ(vH[#GN\w`1/HeҨΪ\!`UrIE?`A}3Ek(9yx1̷cwuDıԉ 1qmPtygAS/Ĉn(9䁢h`{bzSt.]t!_ʪw/!uy#ň?j&zu#Wt1lsEl%~N֓=tZcĈ:Uw1v{nZx#S^]'{O|wѧGj^oIBxߌxp[CA'_ݩ gD,]ӄ}&~oǝbD)Fuc+7q~|DqSGysrr1xn(J4^ _.nvYu?{IO޲캱Vױ]%'L9gz+&=.8봺'].+0=yKIi#pO`f|%=iwt)=Qg~fsOv f=},{^OS3^N:1='ϚxʇǶy;-퇺˻i'|pdް]LEW{s"ҵՍHo>JTY9t{iOғ:̻XuުӃ}+ taEWa`Dz/>Z~NR.O|[/ ӓNNGÿqGmYҊƩvOFeǿngܹ:=hKV O}{:n a}.Y0}3cW+JEsuWxJ/^\~a>w҅}AGk{rO:׽4wF3sOxӪXŢчm'riZQ?X`^>a^l tgEx̚i?go~w/W"] >ͽy ᝶S.>cL5ŀn8q*1޽Rvs~.^uV7y$~K7y |aB>wQ{ 7w9MYn{(|'i%zѰBav̢V+?q*]t7,_R;WLj}ׄxMbpj(½C^ u!K`l?{{QhuE<2`ۅӾuYte׏]nOѥaO_ ]a׏z]-<>lܙE^&1?h1Çx@^vW__&p\ة=rט/sJ25}/hil4|Y"k}3^+V5M5Cݡ Ѫpiw>%,=,W`w}jQw'Mms_4{똨۟=j EQu;|s+N;7qkUWŢ+vutnOtdBt]wS\qܿVnmv4't\;aO;ޗwO{sQ5kX ٥Mn-ZuО/WXp~|{?/_:] l,M5o8sŮ钢߶L%:K~YY=]2tݘ.}Z}[bpNr]w<DjfŐ~뢶ɶ'gz fsމ_ߙ.4rOg=ugsO|a E{CH^'mH>]Y>쫾?%r 1/{ev/N1i/]^x=Wxq !.;uowqE[̼[=49Đ׻>Y(=_Yyo?qD+?"F<|Q u³S'?'z\RNxJ cЂk_>:=isMK7FxKagv\b=ns.n1W"7٢#w'z]Q~q~~m[ !zlp9i3(=ΰMݳ>6>;ooe٦%esVh5[t+|k_=]_޼sӓY 餤GNc̍#: gS፭.ƞ/~zLK;-KrO_j㞞t5޺*-jm%;9gyM*a/{6sftzЁϷ;dOS?K7[UׄvC<͒=CRןWk^9X 3{=MՉ?ӻ5c7vN{׎~vc_Ϊ>9;M>t߇Λ;*+1|;}嵋yڜk:߽ۗvW~a<~7,~Ǘ0ؙaǟ])Oy=Nv:?пq[t엞wk Zꔅ޽^y kp˗>tžh`FGun]K#n&?rי8i/y~clw6xˋgt'~-i|8tſxYK7uOs~Kwcmtֽ3~կx#~_tV<|^沫} ܡ}tu 9':3w;_iIO9o|魝3ɫ:/~ORtzg9/;Z1/_Ϲs,3Ox֋/J'<)s{^`;?\MoteGO=;'O,:婝Oy1f鞶g_6Ywwʫ7Gu'ɏ=/7o}WUV-qw_՝N9/#o}N']/>{?~ʯY?]}iu7lz3_4or_ӝ7eΏ{ؗv罹3qu&?.2?:Y/yg=?f+GwN nr>^In:o̎3mw;x[}Mwvk_>Oqʿ2o|3?{c?qO2Xs//&|U'5ܗw'N~A;zugε{KuxM}ܻg|ץ+}Ws5ӓ\=qk5iQͽ{ޞ>,ŗğ}wwW?_/{YWM?7qiw^U=kK'uo.6gWIù|oqo'sâ']qS}ۢY:SG?R\wg>Ϊ۽,`Owsk^Pۍ'?Άg||ogz 'ݳnso\/wMqOޝ{~R^wΘKotaϸcc?p3ٿ n7{[lzV%AwI_l̎z>I?/?3~(M!\w?v:{sg=;KO}ŝ箹sic~S?;:뗟w}sG?]sSuNz{ە>wo]|⇡_K$[]ŝ)\9Нv7;+~+`g󿸶i;ǿ5Ei3nz ^)fO2z]'|/_3s?zgNԿ/>?Y+g|ƣ^۟3c6n/ğv}cS7;O=j+;O}K_u6Ek{N,y=+~3Ͻ{ʘWΝԪw+nG~G=7ԫƸo^xum6~Nsi=W{_3~ٯV e}56ȕ10k޲rޤ{vw}WY1^{fܻ]uyZ=N랻|Gwpdcwe|?>m:]g{.X>+Oo-suWq}u7k-݁x>8=7?N{<}+tI/G737k/~фufĉ_fgt>1m{woe}M59wXOx܏84s8)8Oy? >aՄfa}dQG7njjjjjjjjjIPC}(9:碪W z.j(qC͡8T)]a7mW @?` mZup侶Kmۥ~߶Kv=biPV[珰#Z57;p_0/Wa3ح}cԼz;x?7tuAgm1?r\u0xs'ԗr`tǻ09P&;:x<9Cqzŕ{v_` 9 HE;jjjjjjjja|TC}TʽvϮJ-~0?(Ts5\k~sݵc+'sn1T_vS=>=6+mϭCi8?O~^ {Ce{mo3'w|upx5*Y5euS^|t~>ߺaձyJb,mT)FOlU7n>Ȩj\5\6LJ?6ŢѰ)ry?rqrې4_u_(z*~z15 H(u>FkC胼F=oX#S=wwQ5ySTP=^W߮ΛeUVld\_&շ+S~-u^9jnΕN{1Xm4T'c{qhzG]] F{תqloȾUM0OScտK/^u)׷7ޏ?RwAH絑j~n_:cqcRinлU.'cF/{W؅؅^CIW}f8WmkoTEL{s~lW{X}mY@ڶXy|ڮz/(c7:_ qړVlJK ~ޠU13^lPSMu<\9f;I<_Tqmo_Ǩ;VOy#WX_McZY"]HKuec|n"vy`:~:Cy>]b{h*yZS]UW?^hCBګ>@J\#{bcz sVW^ FF~zhٶʉsQŔ?w]{]:pϯǙk$sӪ֫\s zs~`9qlw~C0xNOs~>?crwiv}ov}ov}ov}h{$MQܱg{78`l~q~qI%#7wl|]Ɓ8Վ#r8"ӎ#r8"׎#r8"GЎ#rjǑ8oql`mh64 FE ͢ԆfQjC(Y,Jm(ؤv jCr{7ٵG-X:2ڱoo^1?R~M_L??4gpQ>xso6̭jjِ w/',n_Z?E?qq:a꽌}O=}%Qozcxʒ]wܵ}M [&;{z7V&v]GB^#G |_㇕҃uxf_1ΰ%ۛ5zmﶪ߭տߪbM0{F>߷M7;Fw_wo`Ž5X9tR; 'wgֿ`8cI'cq*icq&Ygcq.F0xb<a<bGa<1`<R 8q10`\q%Va<cNFm'UWcTUŸZ0q=1nIcsb3&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&DsmU2y`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"L䁉<0&Dy`"aey`"}L<BX y`!,䁅<ۿքBX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<BX y`!,䁅<~b܋<BX yP]vu y`K^y`#l䁍<6<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6Fy`#l䁍<6F%Ư06Fy`#l䁍<v;}__ W?*yT? S<YGy"\"\䁋Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy#oa|;@y#|䁏<>Gy#|䁏<>Gy#|䁏<>Gy A< @ @ȃy A< @ȃy A< @ȃy A< @ȃy A< @ȃy A< @ȃy A< @ȃy A< @ȃy A< @ȃy A< @ȃy A< @ȃy Ap1͛lZeצC-̄ n=C}u!?YdY#ov}ov}ov}ov}ogǷߎްqDGpqDGqDGqDQ8Cd>ȟMO6g"oU/ܘE%v]>t՞~+uUUy|ݗ>>;^[`}i?ywϘfOƿvݯݝwYqOwʍ_ϟ8~?uCwo]5Nz{KS.ڍkW>Utf=Wb^wxyĠ[w}Kٝ󭟼eS2ʁ>{߻v; _3e{+~UOβ􄻯lWP]^r}tg>nr] nwf>+ϻ{>4Gz%ϸgtRU/:yQOsщ&]^\/pV/޺Y7WyM'y?zݧ?ub+NtOy~s/mw]qƛ~-mtn^s}'/~Oۜ~^wi#d]%wŋng{9gwOzwwGٛ% ׿l$!;yO-D?={޴t;_Sxp/Gug,ۛr+ojջ۴WQHV@6{3V^<'Whzj^ܷzOzX%.48:eh}tN=9vi_Dw6oK7}Y%cTʊEAoö_KTNeC{6 xoqhO`qAfab'&}0L&ƁGl>~Cv ?jغgm[ڸgWWE Kw m>xJ]QO4-:NtDɢSE%:KtNJ.=^trh$f*5kEMQ[EG+:^ti3Dg-:Wylj.]$zѥDET4-EW5{G"F{'':AtdѩE%:[t|cE/Xt P4E3Btѵ-DLj/:It43E+zJ]QO4-:NtDɢSE%:KtNJ.=^trh$f*5kEMQ[EG+:^ti3Dg-:Wylj.]$zѥDET4-EW5dϽRW DG :QtTG-:Gt@t豢 D],\th(Ƣh!JtZQSuD}QcDNJ$:Et љG=Ftq E Dt2AD4EKѕE ~r?sDѢD'N,:UtQDg/zE.]!Fh&Z]#VEQ_tѱE'N&:CtѢsE'zBE'.]*LtP4MEsRtjQhO5+uE=@t8 E'N.z,٢sDD+@xŢEWh,D׈5EmQG%:FtxISD)z\cD'Pt KD.MDS\])Z0ZG 84,}`K Dh0#4 "KK/1ugʏϼaco=wwwwb}=wa{2]1ݼ7]qS17Ox&Ƴ1<`܌BcUx-0ހ&` b =Ƈ0m4g1>E w`|]6w1q7Ə0~S{0~+`܋{?gUeX&;{ꏊ0Mu;w^G0u^0u^/u^mF:z:x &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &:ձ*^2u(^g2u$^'2u ^1u^1u^g1u^'1u^0u ^0u^g0u^'0u^/u^/u^g/u^'/u - - - - - - - - - - - - - - - -u.^2:U^2u&^G2u"^2u^1u^1u^G1u^1u^0u ^0u^G0uh;:~:|:zm3 mmmmmmmmmmmmmmmm׹ {ש eigLz׉ {y {i {Y {I {9 {) { { ,l__^wwwwwwwwwwwwwwwu.^2u*^2:UdDd<c4c,b$bK~0u ^0u^g0u^'0u^/u^/u^gK~G/u^/wwT. . . . . . . . . . . . . . .s:S:3WɪK^'2u ^1u^1u^g1u^'1u^簥Fc:C:#:::}:{:ym6==============={ױ {ס {ב NdՏd<c4c,b$baK~0u^g0u^'0u^/u^/u^g/u^'/u}V5 >>>>>-_c>>>>>>>>:c:C:#:Ձqy {pG:::s:SR! { { { { { {NUk9r5|ub1 {/hT4_nѦs9kbdM51&Fțy#obM71&FțyhbMQ41&F(EhbMQ61&F(elbMQ1ppӐӈӘӄӔӌӜӂSF -dBF -dBF -d"F-b"F-b"F-fbF-fbF-fFK-aFK-aFK-eRFK-eRFK-e2F-c2F-c2F-grF-grF-g F+` F+` F+dJF+dJF+^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%'l̤jy扚jy慚[[[[[[[[[*T~* _ʯBWPU*T~* _ʯBWPU*T~* _ʯBWPU*T~* _ʯBWPU*T~*>~۝/TS՝1zZmV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mݼUݿm8mM Sg+6iϮ7T=AoՏUاMWU(=Ct&g̪o/[[T6zNrr`dOI~W{kVzhqD'N*:](YE=VtE E#X4-DW]+jڢ/:JtXDN!:ShѹLj=Nt"D.]&:(h)Rta܏TϽRW DG :QtTG-:Gt@t豢 D],\th(Ƣh!JtZQSuD}QcDNJ$:Et љG=Ftq E Dt2AD4EKѕE ^}^+EljN(:YttѣDg#: :_XNj.].B4DcL]%Ft)j:(1cENjN":MtLѣE#:O8хDO]"Tth"梥Jբr?RhWzhqD'N*:](YE=VtE E#X4-DW]+jڢ/:JtXDN!:ShѹLj=Nt"D.]&:(h)Rta܏T>J]QO4-:NtDɢSE%:KtNJ.=^trh$f*5kEMQ[EG+:^ti3Dg-:Wylj.]$zѥDET4-EW5$ϽRW DG :QtTG-:Gt@t豢 D],\th(Ƣh!JtZQSuD}QcDNJ$:Et љG=Ftq E Dt2AD4EKѕE ~r?sDѢD'N,:UtQDg/zE.]!Fh&Z]#VEQ_tѱE'N&:CtѢsE'zBE'.]*LtP4MEsRtjQhO1+uE=@t8 E'N.z,٢sDD+@xŢEWh,D׈5EmQG%:FtxISD)z\cD'Pt KD.MDS\])Z0ZG*S>J]QO4-:NtDɢSE%:KtNJ.=^trh$f*5kEMQ[EG+:^ti3Dg-:Wylj.]$zѥDET4-EW5Ƚ,gy:;?Kb󱲯Ta;CΑ} "aT DVhXQQ308c#`<"1q ƥal؂q%0a ck0O6]qƓ0nx*0x6s01^bb` x0ބaVwa}F#ø ,1_cT .1Ə1~q/0~{1~G L7M7s"o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o &o'[^#[ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1qwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .{{{{{{{{{{`{{{{{{{{{{{{{{{{{{{{{{q}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}???????????????????????????۩j-sA4"O=+.3'Q=IROzՓ6E,nfI3KYfV4&FĈQ#jbDM51&FĈq#nbM71&FĈq#nb$M41&FHI#ib$M61&FHi#mbM61&FȚY#kblh<6`C64`C64`COgym:N笉51&FȚY#obM71&Fțy#obMQ41&F(EhbMQ41&F(elbMQ61&FYǰANCN#NcNNSN3NsN N-dBF -dBF -d"F-b"F-b"F-fbF-fbF-fFK-aFK-aFK-eRFK-eRFK-e2F-c2F-c2F-grF-grF-g F+` F+` F+dJF+dJF+d4zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^K"zID/%$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIL/%1$^KbzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIJ/I%)$^KRzIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RK zIA/)%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKKp1jy汚'jy湚j*n*n*n*n*nF*nF*nF*nF*nF*n*n*n*n*n*n&*n&*n&*n&*n&*n*n*n*n*n*nf*nf*nf*nf*nf*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n*PU*T~* _ʯBWPU*T~* _ʯBWPU*T~* _ʯBWPU*T~* _ʯBWPUmowPNWw_9kV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mV[mս aw|ņ7ٵ' Q>j3L?k[lݴmCoh47o ">k㮡'G|Smۼ 7vЖ\sIC[Rmj~MϹp5Oe{}DV>UV|:r9#w‹@_kŞ;W۟wp{?1־toVoĆ׸÷}w_~j_ũwm/K{\t?3񪯙~K_cy%^'ȁOu?u~Uϻ_`k {'w;V?Mh|xh~雇lڻmω[wl޺S|֝;-cr9i'x?UU(-ךLug,_#ϟ?b֛6ef9 gձ<=BI8y=c$MN3?_P/w.{lkha i pZgI_#Lǽyë>| :-'t&|[^ޙšOL97Ӭgt>o㾗|ǝ駽n}3' <3룓7~ꯍpJ9P^O2OwW=]靅~=w?'wgٌ~zu6W]rvw~(G}/9[:3} }B7].3wnSr=M\guW=gt3:#UwH].RuTE"UwH].RuTE"UwH].RuTE"UwH].RuUŪbUwX].VuUŪbUwX].VuUŪbUwX].VuUŪbUwX].VuUŪbUwNuBbuX]':!V NuBbuX]':!V NuBbuX]':!V NuB*V~+_ʯbWXU*V~+_ʯbWXU*V~+_ʯbWXU*V~KUݥPoy|T].UuKUݥRUwT].UuKUݥRUwT].UuKUݥRUwT].UuKUݥRUwT].UuKUݥRUwT].UuKUݥRUwT].UuKUݥRUwT].UuKUݥRUwT]N]':!U NHuBRuT]':!U NHuB2uL]'d:!S NuB2uL]'d:!S~)ʔ_eʯ2WLU*S~)ʔ_eʯ2WLU*S~)ʔ_eʯ2WLU*S~)UrUwyUrUw\].WuUrUw\].WuUrUw\].WuUrUw\]PuW+T UwB]PuW+T UwB]PuW+T UwB]PuW+T UwB]PuW+T UwB] uPB]':P N(uB uPB]':P N(uB uPB]':P N(uB uP(*_ʯ WBUP~U(*_ʯ WBUP~U(BUP~U(*_ʯ U#~HGj\xk^9'=w8 uO7y_dSj}S/uou.;_uo\{^u?=[_Z} 5q/'ꥧqtpKλ,:{޻sk_Wڹq3o^՛W-x1K:{>q_6΍cSu?.]~_ggΊ^ԹC?z՚vyn~BkvvnMӟwosW9HiKnyo'︣sK^/< O5SVWl)yқ/3s†OY3u]lEꭃ^#|3^< o {:OxWO]FowsG_2s;޸hs:{эwt=[덝 oG;7|v_=}}ǟ΋7hK}O{y}tL=g>6{43΋>^tտpp:J]QO4-:NtDɢSE%:KtNJ.=^trh$f*5kEMQ[EG+:^ti3Dg-:Wylj.]$zѥDET4-EW5ʽcWzhqD'N*:](YE=VtE E#X4-DW]+jڢ/:JtXDN!:ShѹLj=Nt"D.]&:(h)Rta+=7+uE=@t8 E'N.z,٢sDD+@xŢEWh,D׈5EmQG%:FtxISD)z\cD'Pt KD.MDS\])Z0ZG*>J]QO4-:NtDɢSE%:KtNJ.=^trh$f*5kEMQ[EG+:^ti3Dg-:Wylj.]$zѥDET4-EW5}^+EljN(:YttѣDg#: :_XNj.].B4DcL]%Ft)j:(1cENjN":MtLѣE#:O8хDO]"Tth"梥Jբr?RdWzhqD'N*:](YE=VtE E#X4-DW]+jڢ/:JtXDN!:ShѹLj=Nt"D.]&:(h)Rta܏T'}h :ZtщEN=Jtl9E] zb+DCH4D UkD׊#ꋎ#:Vt$)Dg=Zt1D](H%KE&h.Z]-j-#)F{'':AtdѩE%:[t|cE/Xt P4E3Btѵ-DLj/:It43E+zOggWa>Vu0*lg9Op0[$̖ AaBj5*?: 0؈q>ǸbGc\q)e1`\8m՗_ c5a\qƓ0nx*0x6s01^bb` x0ބaVwa}F#ø ,1_cT .1Ə1~q/0~{1~G L7M7s"o &o &o &o9: 䫯$0M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7M7~[ -k|[o[o[o[oVT} }՗c[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o[o}ӟ 6o 6o 6o 6o 6o 6o 6Yio 6o 6o 6o 6o 6o 6ot8o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o 6o?>掉;;;;;`;;;;;si';_5=qwwwwwwwwwwwwwwwww. . . . . . . . . . . . . ?]w]w]w]w]w]w]w]w]w]w]w]w]w]w]w]w]w]w߽nx{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}w}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}߿~??????????????????????????r>'k9Nk)r?8YmfގFo_p` l~o76Wf_l`{ l~o56 dK-B dK-B dK-B dK-B dK-B dK-B dK-B dK-B dK-B dK-B^$d{EB ^$d{EB ^$d{EB ^$d{EB ^$D^K"zID/%$D^K"zID/%$D^K"zID/%$D^^K"zID/%$D^K"zID/%$D^K"zID/%$D^ҶԬmK4mٟ-5{ӶLPKM~/C]6 7"t߃nk1e4zIL/%1$^KbzIL/%1$$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KzIB/I% $$^KRzIJ/I%)$͋)͋ehmb2ZۼX )9vd4/fl}fMl|SFd^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^K2zIF/%$d^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$\5B^KrzIN/%9$^KrzIN/%9$^KrzIN/%9$M|=eML3NsN Nm/SFk˔ю66lrcǍ76;lpc62^RK zIA/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%^RKJzII/)%%RuTUGAoPuTUGAoPuTUGAoPuTUGAoPuTTgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgPu UgmPC+w#nov{nov{nov{nov{nov{nov{nov{nov{noq}7oۆD0qFmbٛz]I^h?}Ne0g|-|Z? 'lW11U~t1`ǘ 'aL=ct0f` 1 c61b11c>Ʊ 08c!"0c,X c9 A#ˆ1#1 c%*k0b`8cI'cqjguz{u}kӚhL_jԷϚ0Ym{Mc][/?;yh˦u;8elݹ o>ʝw7zM Ör|Oyozsqj%gYǁ5 Fl)wҜ}<*o`㮡';۶%#0?RiUv M= vʡ=G<ۍ?~<khٽT9ih~;vٴmC\iޡ[wΡPyQDg6wߐ?sߺ_=TM_bI,I%;S6qX]g= z&mC;seU { lto*~Tů;̿Pie79H?>$wfF7G8@aWB4ZTF|q3tЮawnЮJl'~xhUF^ {ﮨYuO?sJ6 /HV}apz6Ov.v._Ƚ 'v7wm%OܽFcI.%!ל?eöMw7NisTnݵs{}wyMk u't0q[wlݳuӶmCPb~c@72nҲ_~KۢD*oE?:D<5iv:v#dL !~򘳣^[nV[mV[mV[mV[mV[mV[mV[mV[mV|W Z7N/;^|_`]|ߤCr/gl.>  kz_02~wCL.bǁk?k}|<չ_l.<;6mصil|-;w 3t|ηҬ?Y_=W ')#كYzHl?3|a[޷e;/{՛;Pz>7ljڬ1[VQ~_܄Iw{k"Kz + >Wڴy+?mhv {[jg_3rΫpçtoy /u/߹cϮcyhk?!q5p5͂k7ځ*7>`;78 v핚m)]iPAL5?dyx?3]o,:guU}]öK^g|oպ)>Os?[oxKԇx۶󊳶>ƲyC5 Wn}u)n 4/7zEk{mQ[G]Oٲw۶wnF=ݴc5!޼iϦ[vm>ܭ7wXlGݴ~cU+IͻX9khU;wx@Upۗ}QKEg=, nغzZ6*y5܁^L֡^ps;<ݳmC#=ưWܿ1w=7۷^7ԯ/k*BsY_м]k'ez{rv)WsNf~msXy瀜@;2#_]^:pAr`Ojh :al^@31}rz;>dZ>uO_ϧ7'6Og67Ss3=:i_{i1su.Lo6_`xoz|E] $:> |}W4)?m _87E(s?$7a_mM|9D惌Gsr5\FzlvFb5s7qrې4_u_(z*~z15  w(u>FkҶ#}9kyq`NTKBǫLj9dr*ZkLS`>לVHe*^U Er{(Jdx y犮Rﯮ[}qzr`xA^kxE#÷S;F;]ڨe)*FAo[2Ѫ~+6 2W*+G-ѹ {>jD}_}l5͹Whktz(y"Zվ_54UXc4U=VDWޟA}}~|x#}Xt^V;ö jSp/n0AgM*zuLR}~\Pz:}՘ }bVp:Zs1 {\:nhjZW@oVsDF]cc{ ]')^}\}(Qm2_"΁)]afjۊcMj:}XƣYj߬^`~1akO>_[Ѳ*/U{ڏ6:F|xz݋ 7s꺩+^_#l')^ڟ_*NvۻQ rL5]]+Kd^wNu,yzύYDn?TUb{(K r[e0Wqk ^waȱ]^{}=T/8O%w9z߫m/{r_{Ѳm5s}瞣ދ)ڻu;l_3HFUW߹z xڭsLBXu?.2/3`2>89}~xZ g{=S>>i:_>C~<{{{{8oQ/߽w{?6j?5߁߰E#GguٓsBl9Fm_^q_ܪW` #1 EY 8FZD_V'U,X}8c/oӫ-6 /ԗE"]ZZ[{{{{[4ZWKXOzד$'y=)IYf8f5%,mfY3˛Y̚Q#jbDM51&FĈQ#jbM71&FĈq#nbM41&FHI#ib$M41&FHi#mbM61&FHY#kbdM,>vypn9vm9vo9vcT;qx돣dkC`Y0,Jmh64RE ͢ԆfQjCi܏Ŧ1n/_̷߯Vyo˗9oܪb/ w"߿ k5|{`ϯzlcEwԏ^s}#|Gߞ]-ߪ;+x;nڵax[jo]f>_l?Q6׫POUk}6~w&pr;J p_!ӽ},DvB \ @Xd% \^_RQTT+ ȡ_Mw{;{y[5}Umt$_htEiS-8-FWҫ<*ⳣ^INj镧5 $B+ATI{U*ҫC^!B8̯+U*ZUONjOӏGρؙǏxYG@<[[[ kv L<&m)lT]0riag΄vaR&z?:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp $:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp f@:8߀ 0p780 p`0}MҀoG80 p`80 p`80 p`80 p`80 p`80 p`(Q0p`80 p`80 p`80 p`80 p`X,680 p`80 p`U?a^80ok} Lp` Lp`@R\yl9NXO:G/|qqT]Ϲ;\[=d-njwv-r ;1y[s'i;S?5n-Ǯզ?sB6O.D5}?^ur۫S~1|Hݶ<$˼-S^q1`K7kwkN_gr}ճ/*7۰yn(OTp۸wS98Q˶NM{u҅'pyy7,o][S^w^nxnKg9 o\Y-_qw(7_u fG[uӿ>4'S>{F;|luCm5_1ՃOt%)=?qb|i7?S{pw-dj[yWev_~dr㗢oz_u57| W=]qw99}Il4c)MsAjmáHӫC۫lW:gvVZJ׏-nkI{Q?<6%Una['qjKV Śh[&#lkG?HwK_:$=B`|ћ8jE; ~Q}!mjuHuhpZ0B孲tYwړ7tXW"öYOKȺltㅕR+i-r3oEKgG[")Vuӏ%蜱uxL6)?D$_Oqcn+nЮM2nOO?P KWܛ|f1[l\fpR*vW iIq:T~juEvvnq_G-lma"ER}5Eی)1ޝX~^7sCA;\z"VvTZV[ii^gwzJvT<"dG߅ `gjY 2(egȖm;lV-6ae̢?/ܹ;y>}oL5\l,;׶Ua#ap1Ĺ C}5Ca TZ"`~T14p4/3J:VK%;jK]juYvTnu3'tQgGi5H {b5b*wګV1n%^8S\ wjWvTAG2hYNHG|ަA38oap뻬__<;rzۧٱtFc/&8sXY9Ϊt-bA7Y؈u_M|w| MEU 77\ќȚp^F\/:G*b@K( Xos2[_\W\Vo]qyY|u3[c}[zS\rlw-;G,+e&?[.WVˎ7! X9fjHq>wYGQgh/G;Yc TÁs6mc7_v|cK>3!md(^|vRɐowGH3kijl'qGY:^kbݲ5bdfVr̎?-,ݟ-:\^mchXE:eVD#A0^3Yo3KG~+'K~EQ\~m8NK_se}7+]&k۴7Nenog=;oDoTvr?K};?aGh4/ʾ![Ʊu3?W \?sϖk"םX>]p-/op4>/wF1x|Lau"ol< d[U.Iv{6e+`uS;g^WGee~KZ߶Ш=e\;IK,>3kͪ[e9HdO˶1LmZeTl+l} N.Fm;ŏ<̏ܶ!)Q^b٨nNNjeܒqܽ2bZ߶ tZkb=kMgzZ {h4Cv7vɬ |<$@檫wK3eŶ剖l<}Fg &d;+ɘ{$;=+C;u2vs*l[Ҏ(^; w|V#5r9ZxGsq#}Ĺ8>Gsq#}$$>GHrI#}$GS)єh}4>rMGa&Ml>e6R6lD٘ e[[[[[țO|7'oy0d)RmS6l~f~.dK)K"E-"oy[Lb-&o1y[L򖐷%-!o yK[B򖐷&Dޚ[yk"oM䭉5&Fj H-% ZRK@j H-% ZRK@j H-% ZRK@j H-% >yɛO- oy [@FH[#yk$o䭑5FHBQ, (K%ŒbI@$XP, (K%ŒbI@$XP, (K%ŒbI@$XP, (ZIlBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%dj77777777777777777777777777XQ,(DK"%ŒbID$XQ,(DK"%ŒbID$XQ,(DK"%ŒbID$XQ,I-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&$ԒZRKBjIH- %!$ԒZRKBjIH- %!$ԒZRKBjIH- %!$ԒZRKBjIH- %77777777777777777777777777XP,I($K% ŒbIB$XP,I($K% ŒbIB$XP,I($K% ŒbIB$X*M|/<>7|,<3>3>3>3>3>0000062o#62o#62!2!2!2!2!2111111313131313 0\w 0 0 0 61Mo61Mo6_,|#ˇ,| 3,^X*xUbUūW%J,^X*xUbUūW%J,^X*xUbUūW%J,^Lw>ӝtG|#Y>ay:Og|;g|;g|;g|;g|;g|;g|;g .` .` .` .` .` .` .` .` .`㄀6N8!`㄀6N8!`㄀6N8!`㄀6N8!`㄀6N8!`㄀6N8!`㄀B.d K| B.d B.d B.d B.d B.d B.d B.d B.d B.d B.d B.d B.d B.d B.d B.d B.d B뎍B6N8!dㄐB6N8!dㄐB6N8!dㄐ"6N8!bㄈ"6N8!bㄈ"6N8!bㄈ"6NXXXXXXXXXXXXXXXXXXXXXXXXXXb.t1]t3Lw1]t3Lw1]t3Lw1]t3Lw1]t3Lw1]t3Lw1]t3Lw1]t0%Lw ]t0%Lw ]t0%Lw ]t0%Lw ]t0%Lw ]t0%Lw ]t0%Lw ]t0%Lw ]t0%Lw ]t0%Lw ] '$lqB '$lqB '$lqB '$lqB '$lqB '$lqB '$,^%,^%,^%,^%,^%,^%,^%,^%,^%,^%,^%,^%,^%,^%,^%,^%,^ūūūūūūū}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?I\wMo61Mo614N}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6V<^&J<;gyg8g%9/gfo@ϰ>sXAK+,(R<;[kc>7- gK]]]]]]]]]]]]]]]}.x7`iGwĮ ԃK44v>ݝ- vj<3H3HHHsHsHHl$ڪ?60FS |Rjj>)55OJM'6iØlqt ҵliGW%IζOػa{,U:Ӳ} 3486G߯NSL7Ӽei6hRp}ˡ߈!Z_32^?CKf|o|l`qzj1W}]Cݿ# jj}fĺulVFtwI v/_ҒjzME ' v,ot-U -yv;j";ݯ`Wf)۝0?z|^ߟ;hܜ]e/mkkF61NKm5ƯvZܮZz=nwksNW^ YI;qP^+æM;6 vPaaGf ;6 v l6lXqa`' {l>DI0DdX+[[[ kv l ݫ&m)lT`B{aVN;>YΆGK͂@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8~ @:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@7a[a@zo6M 80 p`ct8bc'2 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`xOka80 p i{p`_Lp`&80 Lp`qM&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`{+0p`&80 Lp`k4 X X p` X8,p` X8,p` X8,p` X8,p` X8,p` XHp` X58,p` X8,p` X8,p` X8,p` X88,p` X8q<؋0p` X8,p` X/f6868 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`až68 lp`68 lp`ؽ4?8pp+p88pp88pp88pp88pp88pp88pp88pp88pp88pp88pp88pp88p*yؓ= 8pp88pp88pp7.8p \p+]p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p={ .8p \p.8p \p.8p \p.x8y.>v/9#N+-3/Ӈd]R?3=Qm"^N志'p{/ry߼;ֲ0D{¼O]cu̺|\kraMCht?Z-KMٶzקܼˊT\5Jo~ǽ7 ˍ??+eâ7x{{brv T'\7<vQ6c-@9̓HRi6)32LQG˺˒,?䠳2`u-VSF3f"?p4ޭ6:P=.dq~/dGB9zP~l1f[K+(r :'/=S[F?.lG۲6Y ^=^uدgq~zVWE,V|O7"FoQgKk[VZ: SX,T*Kuש= }֕mmgVc2jR%.[+mxaԊrZ[ֱHnhUyE :g,m6y ۖvE'73񧧫NhwLMh:!bG/\d%Rқ:2꾔{kVƍ6YY?YV~_0x򨮥 MсxT*UJURT*UJURT*UJURT*UJURT*UPiMut]׿juWnu]M_Iuv_7麮&]}ݤUt]׿juWnu]M_Iuv_7麮&]}ݤUt]J?<#]XΞi叴So[j-C2rQ#}D(>Gsq#}Ĺ8>GHrI#}$$>GHrMGS)єh}4>rM&,MDe}mlHو1eʒy+y+y+y+y+7'o>yɛO`96R6,6lB\Ȗ(SE-"oy[D"-&o1y[Lb%-!o yK[B򖐷%-!oM䭉5&Dޚ[yk"oMZRK@j H-% ZRK@j H-% ZRK@j H-% ZRK@j |7- oy [@- o䭑5FH[#yk$o䭑-$o!yXP, (K%ŒbI@$XP, (K%ŒbI@$XP, (K%ŒbI@$XP, I-!%$ضZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKB=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oH=oD=oD=oD=oD=oD=oD$XQ,(DK"%ŒbID$XQ,(DK"%ŒbID$XQ,(DK"%ŒbID$XZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjIH- %!$ԒZRKBjIH- %!$ԒZRKBjIH- %!$ԒZRKBjIH- %!$ԒZRKB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB=oB$XP,I($K% ŒbIB$XP,I($K% ŒbIB$XP,I($K% ŒbIB$cU\/"_by}.od#Y>ayg~}g~}g~}g~}g~}7`~7`~7`~7`~7`~淑md~F淑md~F淑md~C7d~C7d~C7d~C7d~C7d~#7b~#7b~#7b~#7b~#7b~c7f~c7f~c7f~c7f~c7f~7a~7a~7a~7a~淉mb~&淉mb~&淉m"4W+%Y>`FY>bg~Y*xUbUūW%J,^X*xUbUūW%J,^X*xUbUūW%J,^X|;Ώ!G,|t>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt0Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw] 'lqB 'lqB 'lqB 'lqB 'lqB 'lqB ',^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^,^Lw!]t1',O2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!'lqB !'lqB !'lqB !'DlqB 'DlqB 'DlqB 'Dlxxxxxxxxxxxxxxxxxxxxxxxxxx3Lw1]?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟&淉mb~&淉mb~is͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lyūW%J,^X*xUB v?ҹ{lц%bMZ|}K;;'v-o׆{*W\yzP o{ᬆ=jeiV:P'byu-5&]䤞Yzs:+]˖vtUmkV C^={77ˋcR{7rfN5;]޵{9m}hF0h3r>u}~4LLf&z 5V ;hY3ol[va;v l/ؾI0FX kMk`i5tydb lS8av5&vC 6>K a,.UvUvUvUvUvUvUvUvUvUvUvUvUvUvUvUb>@9֜MGQrQTo: [t/KA^}ץTUUUUUUUUUUUUUUU?Zi? :[AI eʔ)SL2em=\L2e>3 $_l8zY%K-hY"QYݙxuraLiru[;e'k̬g86[QY?;?[^oMuh^@=~u­Z:A0^3Yo3KG~ۉ}-'K~EQa4.PBChal=by#KgnWLeLi}od 2/{v2މt7ߨ~>;(4v~Ž7ʾ![Ʊu3?W \?sϖk"םX>]p-/op4>/wF1x|Lau"ol< d[U.Iv{6e+`uS;g^WGee~KZ߶Ш=e\; vHw~f-ٺYuځ(xLz1P4(vIe_5m7;[.]ٶg:SKcX7]p X{e dzKٱgmyg,??;ɀliv2ɱMklvmEoaIeevַ-y oe(^sfa9Ƀŋ>n\<΋PxlF.t{q?9'Uxm2~hYƎ=l8jzyZ_>]]l;;[.^O&gfLS>md=!:9G-|iGUlNE;>+foO3?5]SwOe?5]SwOm! '?hNzZJ43֊-2}Ʋ|Jײ]+Nѝ)N|HYRYbU\0ݯ6IVMtv}zc ؖZzebk6mai4/~!QKgv {q"l_$fpX#,YXKgvb&Q+aJ`3jUՃtp^5:TK flt -3tvf8WNj錪$~!~ fŌIZzdfJ+EŰ6{aLݖ–N@ ՖN;v&}` 7 @:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tpoބ o8ޛMC*p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80q0p`80 p`80 p`80 p`80 p`X, 80 p`80 p`U?a^80je}&80 Lp`@\I1 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`S\A&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`| 2W`&80 Lp`fgz6X8%Fa8ĸX8,p` X8,p` X8,p` X8,p` X8,p` Xہ X8,p` X8,p` X8,p` X8,p` X8,p` X8,p` X7zEJ8,p` X8,p`K Z{4p`B68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 ga lp`68 lp`68 lr 88p8pp88pp88pp88pp88pp88pp88pp88pp88pp88pp88pp88pp8o(I`O88pp88pp88pӛM.8p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p ܿ={\p.8p \p.8p \p.8p \pfo857ѽK3vb6 ɂŕXlk"WˇzX^]׿*#2~v{V ^#e5-~Gӯ׿F˴keAʜs]oߪoU?eGz7-ƽ̶7/2Ͳzیe^Jr6mc)_}np+n/Y{l_u?R~ʏdo8ȷxLO܋WS)[vwYfu?_.b_5XyTS)/qdw?M]]]]]]]]]]]]]]]}=.1ҐVZ}UE`U߶gjZ~aH-x{Igy{!pGmbrKLZ﫥 &(& $PTbVL[Z:).TE~"ebRUޖ.UvUvUvUvUvUvUvUvUvUvUvUvUvUvUvU6iԜmˇt]|D.Хt\|<.Υ7'i&````````܇s~}?>܇sA#} >GrA#}4>sGc1јh}4>sa#}0>Gsa#}D(>`<[֡FYFF9FFyFR6m[?Ϋ=} eqqk0D)_i]bMkZ:!R L쿗8FZdͲkcOVobZI#r[vueD]l.l_%?M'7F{~O'ocy{mAUH}d<6łۮoȫUeMx7^:8tpoh@xCS/z8P/ԋ7z^ԋ74 p^ou 1HӲ?N|ǃ7SnVeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe_ˮNsnmu e#Le#,e#le#e#\e#bmEtPϣ>onr'~ͪ}{W.>||[_ഃ6ک<ϼucuqZrT=i?Vm> v} c˱vz* ?zዻ{z?ܴOoT/!n9fkyNyVꞻ>qlO;gQqn>vͥ6ytn'[Qǖ{?^򣏌yC?tu%_mr⶷|]b'X|·^sfwoq򡷟3_Ucԯ?xm?et|#/Ny'xO>߃|m#Wzl[սZ/S>+' }߶/.?#_8q}Ozd9iGor ~tUnMϼU/U S`-j˳7GN8qO)]{Dl,?m|o,oħsV ݫdZ;/V.ݱYOgD4:u)YskEg Zuh[avgHd[:x,oVNj[ޒUZ۴VxAi ;jw9`_T Gʌ^_&Ϩ]fSe݋eIwUYM M)u3dH8l rVkG^Mw^x/fGD9zP~l1v[K+(r :'/=S[Fe(lG۲6a`^wwYGQgh#F;Yc TÁs6mc7_v|cK>3!md(^|vRɐowGHU6g׈gN'2?geD{?U}#3r쟕`vn~Geny5թ zm;E{*) 'jl e-~1%^?N^>Y*+fwXhqZ+,IV^y2u0Yߦ%qB.u{6x;˼8yx'~sX ;Bq(l&Zs։|^\G7Tra<[6ׯӊ\wbvq&lߩŠ#2} 1ՉmOز/muWL&ٹL؎O>NKy]]-i}jF܋?@q$-}6Ϭ%[7N;rQ>.ɰ쫦fgYݼ+ۖ^gji氺+~k/x});L-/l]g >-N09i͖Rh-l;ɻ,<ےVvE=ge㨹]~i}Rb wYvly33[&)bٶ َGee2Ecݜ c# E6BHb~7H#dOH|1W1? )ob=Ix/rµi&dzDVٗ82Se43'9rwx:juȹ!T*UJURT*UJURT*UJURT*UJURTC}{N@58Z|>GrQ#}Ĺ8>Gsq#}Ĺ8>GHrI#}$$>GS)єh}4>rMGSI0K&QDYe)R6lLلDJDJDJDJDJ'o>yɛO|擷<~? )˶)P6?3?%%oy[D"-&o1y[Lb-&o yK[B򖐷%-!o yK[yk"oM䭉5&Dޚ[y#ZRK@j H-% ZRK@j H-% ZRK@j H-% Z'oy [@- oy [#yk$o䭑5FH[#yk$o!y [H(K%ŒbI@$XP, (K%ŒbI@$XP, (K%ŒbI@$XP, (KBRKHj I-$m~f!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$ZBRKHj I-!%$2PRRRRRRRRRRRRRRRRRRRRQQQQQQ,(DK"%ŒbID$XQ,(DK"%ŒbID$XQ,(DK"%ŒbID$XQ,(ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZbRKLjI-1%&ĤZRKBjIH- %!$ԒZRKBjIH- %!$ԒZRKBjIH- %!$ԒZRKBjIH- %!$ԒPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛPϛP,I($K% ŒbIB$XP,I($K% ŒbIB$XP,I($K% ŒbIB$XP,IXb&rA>׋ȗXmKFY>dcOX_____ ߀ ߀ ߀ ߀ ߀md~F淑md~F淑md~ߐ ߐ ߐ ߐ ߐ ߈߈߈߈߈ߘߘߘߘߘ߄M_M߄M߄M߄mb~&淉mb~&淉mb~/Պ|}XCX>f_J,^X*xUbUūW%J,^X*xUbUūW%J,^X*xUbUūW%|;g#},ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw>ӝt3Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw]t0Lw]tqB 'lqB 'lqB 'lqB 'lqB 'lqB 'lqB WWWWWWWWWWWWWWWWWWWWWWWWWW!]t2݅%} yLw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]t2݅Lw!]u !'lqB !'lqB !'lqB 'DlqB 'DlqB 'DlqB 'D,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^E,^Lw1]tG|{:Ϙ.fb.fb.fb.fb.fb.fb.fb.fK.aK.aK.aK.aK.aK.aK.aK.aK.aK.a㄄6NH8!a㄄6NH8!a㄄6NH8!a㄄6NH8!a㄄6NH8!a㄄6NH8!a㄄yUUUUUUUBg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg$&淉mb~&淉mb~_'lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?}6s͟lg>?GeUūW%J,^3e4SHVky{rlM=$ͽ.rwga˂ZGe# e#Le#,e#le#e#\e#)55OJM'RSIM0&C>t-[Uɾo>nǟ颭5˹tlL' "T,4o$rٿuڻ岍4y+3l߳zr7"oDW LWo.[,,[>X=mܧaU-+{WbȂZ'r[vue+]¥˗4 x+m (dmKDߎȎ}sc%:*qAJkv' 菞=euN339x97'gcyNjk[ښ%|muM4|m[htmk-ů`;j鵰4^]kc>&ӕB-fku3t3qN\;ʰ)aSaM;vp#aGfŽ͂ ;vl.x< w;v D; `[Cv[ [;&.riag΄vaR&z?:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp $:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8tp@:8Mo8ޛMӃC80 p`0$ p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80 p`80^u80 p`q@mv:5 Lp`@\5 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`&80 Lp`/^ &80 Lp`}o6/G_,%88ĸX8,p` X8,p` X8,p` X8,p` X8,p` X'X} 8,p` X8,p` X8,p` X8,p` X8,8,p` X8t\g={"l% X8,p` X8%Ƌٴ>8 lp`c lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`68 lp`~wس`68 lp`68 lp`vo6p8 88pp88pp88pp88pp88pp88pp88pp88pp88pp88pp88pp88pG$o`Op88pp88pp8ͦ \pJ.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p.8p \p_a=.8p \p.8p \p.8p \p.8p{860sAeYH?o,|?otCֿ^Ȕ[^:ͪKv}mp%+wSەvX7-C߸ibU;-߼˿R=`mgp?+'[\{쏝]m䢫0ƫ6潿Wꥶ{!ᡋ<<z/(vu=B+>v-խ?Se/ꀲ;`zo]YN>~rF5ܯ9>n]{"z!ߺk+\Ǥ}g̿܃.,U?x}Us;ie oxOO:˃mAgyˌa{x9kL{oTȾתï7˯?\t7/;򎯵,>^.Op7]g>'_Zu/<]VO0SX?F;n+x?Wu)AS+/VcnES)7')+Gq/rϊ'rpw}ye͟&\\fYݣߏޞîز|]|3 x +?cJ_mM78^,Oc+_ߨNٴ%bS`Bj˳V6.Mgҵ q[>2_|]~e*/{#r][̛w$c-i.cuR+: ]]ʍvkxZGլgLfk4)ʮE-QMk*qX;jwN _T GL,g.Ų$˻*9̦4X]˦U:d2.w #TO;nnfK1kt쬴[֒Jpl4J¶KO>Ԗlϧ5ѶMF<"gϦW/xFUՆs6(-_Ӎ(y[&"|֡iԮ? eujO>HAu%8l[{ۙZԹtJgi9^X)b/"7Vtvu,bU^7pQK[GFޠsJQxV1ii.4΋is?Hwr5Y.~/UH g1ξy]rj^ W>S˟mB؞@PVæyYtSd 2$Spgv~@mu6v1Zu #2z%K&/m,)gȴt,=En^]v]ltدĖA~׃دA>I {5ق%jhkCf1ٱEs0`Y8>tfZrJ:MʼnT +CƊFv{T_40$sbNYtFʢv@S*OCYws3t|zyꩋ?y:_>sΓ_0GR]wl'BIE|ҨJKw;n{z4Pvtd[6C4XC )b׆قg7Z{9kFJ-rl~N {6Ίq'2qҎEZ k{5CU=Y+(8} )<{l `TQ\_VG˒eݝUT˯ٜ-a}w…]|ujg}vE\/}7YlA:1/+,i 7Ci* .iʂM ŦmK;un{{VlM<]L[|OsPvڵ7;jVAG"b#N<bTV=b@'Gkjgm֫oI?wO˳|\VeUו<[oZ\?@ ,kXKo-iދЭvcj8Q6>f ʖAaT\fwdMɖSlmQ[SGG֯<Ħ)?ͻ~đaŒYʚ'eÉu"]٭gjMS>DBsJUQpDA5&V(b 0 C4#]k1 XM?b-n sJ8nU IMAT>娓[YGTwt($1<i|yF8ڭoru^M7BK?o2OyM9Cw8/f:eD[UYYBtjKm!6cjv &Hˮl4%gZYز|Imm-X*gn|w47z!^ؖtk6uC}o%/ىҫJ=l~;ov?JozF2huï?]!Mnz3S8sS_ytEKyjx /5u1v2:7)X:d6ۥ[2d9t|m[}tǎ?=d:[K:ÿ2 oz2ݨW?&C&;`t~|3L7}텩w!W /w[|t:tCO}gtܶwl!-8t/_}it퇗6C]!m;nwo2[O3dK7ҽɐw /fҴ/2MqtҸiMޱi4Ny* :X3M7kq/ /PD7İ~F,\ -[3.*,)XĶ Y~t/ :wAʴ *UJURj}F4;FtZ5|q,X>fxy;@[]pOS]ry ,hrUyo5z\WCa@xHw.7] ˋ<W_<_^ҁK+|ߪy)P,Cn?w(a#|j-G> ߋp9oWؾ| p iV~@3poxHEn*oq?y7T=Y\la%mgV݃erUY~S NZl7uw;+;;W= ˖[(;n,tT:[:5-l,tut՝:07/6dY:Au.,?䝙Rww;;g>jί[\m^"p&d35wo՚c:sE>m 7"O[G:;yZuƜQo#,=:ˇuf14wv=@6;}yWwɕem '͖>\u{` èc3X&99<]|w]u w5<߽W|ssaa5,^Q!DNkx;;:e`/_,E?9SGY,M}G}G}G}GpfVyj\&g<[&gN*eXyW>aϝx0l݅O.qU:3Wg~W{w|Aes>g{?ws\{NyB_4g{?)Ra75corC+'o@~/g>< V/n_/zzsw^lcw^~ ]r~˵?'lywYyR#=R\^5ҟ˴畩zl7?uAOQ繏_ ~z*t/7V﻽/sg^P6x/ʗ/k(k4{/ўӴj~^,;ι=aٳ9M .s1 y]>9yJo'\^<_.헭Xғf'|CHQgFY͏6^mRh/|swsz7[\=ogG7Mn~u㞽1]zYYPvpG/NnQw߬Lxf+=;'2m~Nևz:Ǘ~m/uOj~aʧ޳\^(9y~Wr&[]Jv=/?_7wx_tIU3zϩ71]Z;rv~9ZH.7vZ+󭖍Z=<*Wt'|ݠl;;.[.[>ɴy=XU6_m9 -OWPj],7Vs8j>3r7r}n,sl~yRVr ]x^ؑ_ }8A.]rUK]*UJUR4$m< ){ zqR'-88){>|UyU]]V8Q Z,9f2񻏡& ކBlVlϨ_ɖ__ |կZ4-& <6f>UuCQOt1;F(][G{Xmz὏ sޱ^۲k<1o ^FjW*UJURTˇN{ 6t^86N8*&ﳊw]=(ݾozЪ~u&{yeUuuy˒ K6tR֦A_[Auׯ"FBl#ۋ_~eʴ.n:o5.\پ|IKi_tX*zիիΫo^^6'[o hZLSRg:zwGiR-"ԯS>֗D}7i\2zSO}ϫ\=_^RاTߏzSOau=oRT*UJUҵgJU5MG}ގϺU:nT#)gmWU~_WU~GoWU~_W~G.`kL\VʇFdƗ@fe&HfDfIy<<(y.s?>܇s~}?>GrA#} >Gh}4>sGc1јh}4>Gsa#}0>GrQ#}D(>GrQ#}Ĺ8>Gsq#}Ĺ$>GHrI#}$$>rMGS)єh}4>rM҇Y4% (Hِec&%o%V"o%V"o%V"o%V"o%V"o>yɛO|7'o>y[@- oy [@H[#yk$o䭑5FH[HB-$o!y [HBE-"oy[D"-&o1y[Lb-&o yK[B򖐷%-!o yK[yk"oM䭉5&Dޚ[yXS,)K|%>bOħXS,)K|%>bOħXS,)K|%>bOħXS,)K|%>bOħXS,)K|%>bOħX#c=;[w/,wz-["O˩%ZjbR;Wnj50s Z50w [6z l5 6Zx l51o_ov`iGwĮ;w;ֿkYز{i?O!߮}ٱ}b{Kwg'ݰ`}{7?4}Hmi|oH'ϟYoneQQv{3MN>ԭ .]Ժu [Vo0CݿKS+eW_Vۻ/1 7=dID,u 31,jymXj9+0\ѷ|luWhfM]9@S|z5Ҫ>]D ^6K}UVԿ*__DgYgLQ[YHgɝA.^_!ߖ/o~YL._1=\ >h~Z$nl~czޜWy,K1n~g=?}v|94ϔ_l6 g{Om/e'>wM\\y"]tbO74νoe=5Զ[g|(jHwצl=,}RK.7mۃ>]>wzsVbWɴ#l+_;-oVk=sBYKZK%/#Yt2ng[^_VNE-Qٛnc_֞!+|fC#eCf3hY|YbY]c̦~e*uh2} ?R+H7e.Ƚ[m]D|O˥'9T^{A=zreN= 5xc~<{4~{(gM'Ka;e~6[FKa*6ﰊmr`mbΚ7wFq6km#^W&*Y֘*@˃dynD/9c{鉾_VfvVZ,@s{+cHѲaR2ν:+*ΖnжyF} Ƥ"@NJv%'s=kSLiuJ.uuXWosY:iuR]V=.^/Jm>jHu:c$ 痴#%yId/96'>Kx&∶ l[x` a`;1wlO^a&MǠ&W"X K`M`&; +æMa ;v(0#`b@|$(LѰYc`as`Žy`6v"$X L" #9ml1 ^)%v:4m)lTF0`+`b ,dg; ~ٰs`΃샰> ؅>8`] Ӱ.}9a.}E/}v%+`*j5]:a߄} vFطa߁}v{nma?Ua?Oaw v/g~v?/a 7`0?{'؟a= +1'`O{ 4ߵt9`/j~ԴdOߙ^u;̩)BNfiVNf"nwbh#W^T*UJUR-;6U pemT뢩3د ]LsZ~%rf*r ,n:[ڻtpXQ9@VI:nþꡦZSWCuP]=TWdN]=TW5uSWCUWӬzf4YuP*UJU+}j]]i#mnaZ[eIk[pE&b(oYw,cY>,+xٲ#,;*g&W>-t]Zl9e}h/P8CuP#9~[`]݃S|ƶ?/_ô{^l 돰ncwh}}wCw;?_{}z<@9 bcj#ݿGOm@ۘՙ6c PaZɶ9 cV>}9kV1@_ò?e~eY#Nc?eb58}rNs|?vx~wݽykxO>9~a*8?ʸp˧HqSm^K1|Gwcv=O5}96qsz%Lϱs-W|:}~~q~êcΡx_j>6/5c 55q|XrUQ拢.ESo]Іݴt}y^9M[Snv{ZdY{>wisrmKc՞R<ҘYnYCaVͶ[txCC|cע i쩪|x_}9QNlfxjcUǤ=V鐃4ech;YiFٯy('-4oQ{꒖ʳAYlSV]-ZZ+bۄ,?`Xw?(^ ˺q]_TJURT*UIӳR*U隦>og]*}{uTґ*ʯ*#p7܏*ʯdu~`,P瞉7[*UJURTcozVT*]T}_ooJU:~ֶ~_WU~_w$Q~_WU~ߑwl{%--ȵz z 2e[Ӭz rUoAN-iV9;Sނ=<]{'ݰ`}a i~XGwsAeY }wg]Zeiwte[*o=[Ž zcW#yŇ*l.őWWz>4}¶+T.,jXmhK;+,F?{h?˅WZ/gϾ2yhfKZgכF+TW,]Z:Z:.-n]Ҋ].trFzM]{})?37|ȕ_/pgݨ|؝j_X>r37jzgox.W#j_C|lyesڧq/iGK.<%_s l,lS-\Kܖ`#6mak 3lخ` 7lDؾI ݎa!,Ű?l2]0¬fX6v l* ݓv0lء`ÎM̀ ; 6v4lxxq0a`' {l>DI0a{/̪i?amN-ċ–NHݰ`+`Kg΄va΅;a} a} q'`Đbا`}v 쳰>v /.} v˰+a_]?WaWî} v-:a߀]&[`7¾ 컰`߃}v3حn!X ǰ~ vn={a? }a~ װa=-waG#? Q_a={7Sa{y Z,4}rCSoij9ϩig5մsUiVM;Y5,jYf߁[j+4JURT*i|5uu9r-\F5cR7k2gxOS1LWUƌmF-!j,Y>o|;qXWR[lUz]xMhLrT+p_[K+u}??P\K^W{' '۵utu,YQYpZ˒~bxv_m[_'o/☞W.O4?- 7n~W|jeNTO 6c/ڔxcW%dW7G]vN_3uZÒJǢB+'5%~ҰgL5j(%Noi?{}zk?~ky}HVY i6uocM;ap:+*TNtv,Io$h_5>Jt6^[ˋEM`d95ґn&Z!Κ77|~,^W˝+⧚r6TN366Jl哴UMߓl)n &ź[Dm j,DG:(,z!N_sDm7fg|;ƛgg*WozZd O;X~<fSgU^go_iq%d-Mr=u;M5]{>N\q4@}+[8YZ%tdUɖSlāPG9[~C6׏220G&?I:hw+JLh+U`W0vSg0S q 41x`$ 98& NAիFLl"Lc 3mz5#uBYe.J˪\gbVܒ~n=(/~]!AZ9[ύ}X0wA*S7jhnkYvfe*dzeN 8EZ,]f,k>gYzo>?һ,-KRla<ߧvvY._re9]7Gki5m j'grߕ}JURT*]{)>X`=8j˞VWƼUU.]漣k]zYvݠ?ïl~ovl3:WYlUh䀾|wuYډ-hYѺA>.p8O4zs?%<>׏@^\H~l5E&vXˉ5bn+Ex'/=S[7~6m:0CU=[iGT>2Mb2.limWJWW[KG-;Y>peujG>v/>0\pmmgVaK;;.uZl;MN%[XyVNky+Z:;)V .μsa5{~{;2i9GID' Q?5Yܧul}.,]ujg}vED+;+~lYϘN!b,܉IމY~YbgIJײˬ>;]NXY!`Wy'>rλE$ucP7JTi|=J{ZH$1<imS8ڭoro4]˷_r[l ^[Wu`W6jj3__x|w4/< Q9@VHdj}3?g ~eo nRzetC}u!MX?hts4dw9ȧLtSO7d:ft n|s/pَCc8fӋ.p.Ccof2}Ϳjܗ~ɐu?E!qG!-VG;duq?u\OĐiZxiZҸiAj+8m6N⑶yתH\q@`ooeˆ Z,bۄ,?;u}JURT#1hv/d ۍ`61CΣq^.ߪvx M`@ktϳ} :@+G~0DsaZX^8yZ^Z!#/VK]jgWr8GQ CEW+,n9P^\?>˩\?}˽VH/q[@(r3Py7u7[}ryYzR7@-~S NZl7uw;+;;jO|6,[*nܻQlnXжyVw,PdkSt|aۃ\bgY:y7~[g.ww;;q_̺c+[\mN6ֿ=mcNccZssWgUVqyϋ~n⾧^mE˿\û~I{ofIy=.ߪo.KMpM)OݡgZVV||_^xQ {)Wg=gI: Ϳ/3$Ӟ7~}IwU~뛟CI{ol(E;9i[/~_%ܪ+V\?0OwA_~s&wYYi3s%ç^zm]>_[5{ڽ?t=/76fٕe^i*o}ui~koښ<<7Zd|v{ 7/nu5O_I<9l+|2FO1Gz^;}ӻk~=ۮ\]եb?y <_Ci7.MEf;AG<ӈ}>~IOM_^cKv};(|XJҌe`?! _]ާb; ?'y>U)M*^[r/=R)_RU$_X)eyÙh6.`SgW6l|K6?%yԗ z{L2$LvF)'֊lxԺZ8lзVqA $8%V\9A>M)l!ē W lWp?j_cZ:ͮL&R8U~ܫ z* b[(#<𣆵wPUxV>i #. \1C{"%1V>4mv[GfѦmR"BUi4i9dI&d6: J4tR>nN9p*B'r?FxW" kPچ,; I+w}8zqrG\8|u48&:* UX߱téAa/7i6@Klh98@x/3YTq uX=Ri+ < %>CߝӌJ߱#q  CGs%1$]z1x]澣;ߟ bu_artKc/Ż{WU톥5#S>}WLyLp7zc^z c̹1^L`}Q4ɑW؂ΏIqD*Np{Q|0 =?nˢfTwa)\u@_yՕ~'>s;IW;%d FXk&N'&U@~U=( *qfIHt׸W#ҬEJڐf>4wQxzQW/: IcD< $:̋4(cIcǍ(QIB41~aV1Pif{!Nb48kf)V2if{QfJyą%iN3rV'|sK٬Lcb'X'/'biSM*6 p:A #>D\^^lϯ@[pbu6viGWQլxrWz5*fFUpe3!KrqTԟYvmwQ;gvHvT֞ o ~j2;،Qb3Jm:?_\^8(R@@ON~C;{qKE#!Chb_aN@?@c(@ `P0@hp@9   1c#F0 p<`4F_ 'N8pg&LLL@#γ8p @H'#9n&` #B@ ?h\=0J{zi`. јlO,,,\ p)/ Xp%*ՀkK\p#7n[n]p^}<xC+<xIS<x4^X x 2k /-ۀwl!#ǀO>|%`#``3` +NS?6v7ovpxy_ܧ8@ rsw&Xvf|'.p'< O8xpppppp p p p p pxpxpxpxpxpx px px px px pppppp p p p p pT QA8*G pT (>:˩NuC^Q:)[9e+l唭SrVN)[9e+l>}VQ—jFSʌɽi|>Fs: 1nL5rlϤ0M4}cQ;5L7gxhӸCr4P8tN ZQzCR:^[\祙RMeJ:g,ũs6_xEZRp>Hן$qfڮdRw:GIگl,R'7Wj[&t۸Mr]&kfMJTF ]0IlSh2YR*'SVh'?>!*Rqa"I8 N Mz~f 3RiR9zEjƑu2Z`n.V wxfahK#z&UgMX[4S F"&봺U.bݜb*>lITpmuU%ɳN;e]ֻ dI&dI&̎dG>bL2dhl]zI&;zd2^x/ejzVx/e>m9k27n^e`7:ogӓog`wE^j[Yv$^2ؼmx;d5x L l&63L2$L2$Lcf&d2SvֿLlk$IZ=/e2k5=e2^xswOŜ5ll?x}0ގIx[7z0ގͻآx b-Ix;Uvl6lMO2^6;P俿_*Iʉ'.qC\^O8xp'< O8x".".".".".&n&n&n&n&n!!!!!%^%^%^%^%^#>#>#>#>#>'~'~'~'~'~QA8*G pT QA8*0|p,N:]NuzG~l唭SrVN)[9e+l唭񔍧ll>l>l>l>l~l~l~l~l~lUP VA*([elt<+V <.*+ņ ū$Z.Z烳U0+5g8M4(W'4t!-hdN=ܵ)$ŕupY6Ab(8ɞ/e!ΟG!U-P7EGhr}P 1x}XQ.}8'bPw 1bZ)B܅Nv{xh1(vaM„K?~p+?&l%/ L R[}_n~s%J&aRwk`9kJi2;l /g P2@q(]2@ -tԷ{N>p?pGizzr^  8 p8 8p$('j(` p4`8?; x^T 80Qĝ8pd)SNL80 00p`*l4t9s\q 7~ޫh?uL,@G {~F\<| XX.\ 2倿\ p5Ren?M;Vmw,pp߀a #G<xi3g+M/V^ x*57o x 6`-:>|1|   5modԧ.ogrl6l6fl6[qlfe'FN6p6KxI&dI&wR=^c8⪙<^hTdzW3]#P JM1_[kҸEкZ14сUbu&z|*T7ƺh.emٲ6P{)tQ*\}AyoEZ>hlH8HQ.)4닪RvtZ*qŭ[+༚Zma{7b.{ґ~Msi("F'ʵ-+lD55ΠNi5~t;U=6T4nH CGs%1$]z1x]澣;ߟ bu_aN؜H'8Zk*lP RiT܈t,EfTg_dvcfFg89qvWnWi)-C_86X;*5ild@'eOUD{]=Ay,QL ^]cTI v Յ`Mh8s.%'+T~Lq{VG^;|_ʯ+E~ȍܤ͊\|A*r"W*rh[ak{1Зi1V߰B.n\.UgSd,뿐P%W0}?MENQO%MuvUL2$L2d$F6j)zdz%=ZeFNKy{}Z;z*aLnFer29zy?6i[qнp9[/kY/h\At[>(OuI{Q<䁭1gwnVgk`]U}#b([{i/ؔdcN@sfO1 5LzAO@;v13?~A쩔VT;$C ^ #&Kyߑ+*_i|MRZWMkXҢ`U,F"`VYg\rA rj+ĿG\6@e %c5phj΃9'Zъu;pD 2Byx\}jA MCbP l7{3vUx;sA}uuD$ 22;:WssYdthX'&0n,ﮐnCeAߘ jj'6"]h5^)˶tіr՞^sc2d.N҆fVvV\r)u u7rԕwJ;&v=&k!hvEiuQ.6Sej}3<-dT{I=?ESjJ{$L`RJGs@+w_舩"Q6GG[酛OF?ѮOq#}FMV%@M".I<vyMRL&K9p -R\Na#q&0bX( æs}ɤPQ/Tv(Kv'v[uQR&krOʯN*{o&aM>T8x1}k;O]zmI/[}gᬹ7&ː'&{~N*Ϛt9p#ʶ*Y#Jʞ{w%&eӞ~#>&۪~y)<|5\ŵW<9#դTZmMʚlvӹuUg9ʃ[86*g:n:"[fsLߒIeT*7fbToX]q<ٿjV]>c(_Wc^U]BGAg|#L2$L2侓fD/wYP"^|N‹t0LKH}z|ĥkЇ>:OToovޟdϧ>\$|9uf隥OO"]g>@/gv`ZߘOϯχs4/N'q~I}{KzjکYfgG~9ЗSwO?S|}]|Y{YmN*{aV>Y-?޸f?~td%+_%#BY#kqS ӵqS %p%,N6M/hc."Y|:+ΰ8Shn3T+H$B uvn"c~O;,L٦}5g'z}wt%w$cڞXԴX3NJl*'K&4u-]bHZyZլ2Mx?sh3 o}.󝵍s<*VCbU*~Z7)4o E8'=7Y; H#2 ;45T_ڦpC2!i{8;Ia~H#GdAttۙMY v`;@ǭ$SVhgW ?*]F5}W^Xe_=Zt?^? NU:)%O̞YIxNxv-~eS,3r'{귂ȵ:?Zry?W_rrO_J6NЎQ^tբ8Ծ.ֵX@ko!K r=F:w Rx>IyrNʧP)d}9:?!˕H]z_,2?$ywn=i1~>|q`8~~Iz?U?y%?D쁳l\dg*_O?)@wI1m}-'wIyA_J9rVڵj}7*_&ѱؿY`/|8`P,KἋ=V,ϤrbB!O>@ͱR}/2T_~o1=RX*dW n$ؕv7q;I>qMy,c/}sǾ,Mt! *PT4U^PcG޽]>ʉ'.qC\^O8xp'< O8x".".".".".&n&n&n&n&n!!!!!%^%^%^%^%^#>#>#>#>#>'~'~'~'~'~QA8*G pT QA8*0|p,N:]NuzG~l唭SrVN)[9e+l唭񔍧ll>l>l>l>l~l~l~l~l~lUP VA*([eltT{u'eOri8)̣껷Ry =g#~k#ʉ 8kq- ni*EI\k48oO"eqY_a/,e’|T/,qqM~K`Yu8X+[i>2{,L챐=ca{#66P7*J\$K8N.$旗E RzC Z`O]]+j_S5q*>M(Hd6Ԡ ȯ I%d&VG$46HBSŢ,ԲP4D3GԹoI{xÎZ&~YN#Ѥ ,N}yE{;iq={ ~tTPm֤k P( 1εLl|^TgƇRqal|lC m6y)5l6X-vrAur:qL6դR مWY',8*\q!zAJ9$DFq>gZΉ7 miBX 874S.XlGFCaqX'QhNPN#`xqP̳ʣ ӨYfvF+0ucjēҫ mW53گ{- ؗ#$$Κ3un[YMFڑ#Q]T1ev"6Cft7qܿp{\?pQ܇dsw#!CJJ_aN@?@dU(CCe xcF`xh'N 8p*4@&L  8 Fg 8p>@~IG3I"FrL,@G@-~иz@`6FQ2>0hL'E?.\e,\pj5k7n w X.? p/><!ÀG<x$)ӀgVV</^x Uk5omZ;uw6|c'O>| `+kp\w^bi<PBM;^C. { cPd'{ EvPd'{ 9k(_CACӷ=F6[}I&dI&̞:TgV\5s8.Ŵ^IZg@^7|'Ѻa`mtrdP9v.keF"TG6 eW:rl0EgzV![=dl0]lrlPrCzlPvCVe'[=lI&dI&sK!G޺][%4˷R 'Ě.*C^roPWWR77EX\yr+xxӕk&&<'a)~~Po(%ҦIb ېnbNg*j?2}@>TI7U?cǷ}wH6|ᴜF׽:ۧ.V3s6*gyBr۾rT[7r]Uf4L K{<5JyOߍwcuEі3+4L}S){d|XdN 04{#4.Ϻa~_0I4^{5FyAyn0[MVgK1_b6}le}\w>.}ݢ)69 x۵2bɴ!35FLߨk,M~ INWu2 .Z{P1܁Ep\7u  F?(ѡ2*{SSy3)ZŴN7z՗UUj2qVփ+Tऺ>Dgu2 ny[tgRlPY]pz_ LֻFwE}Äsx3$Å[FmYS{4#Xp=$ޔ+K~ZǾ$ȱ/ $Ⱦ$Ⱦ$Ⱦ$Ⱦ$z_˱bblMb&e'(l9D1vÉbi>&dI&drIu>'/b\S*d2.yz(OU&U{uØZ1!%*Xu;!c6 U )G*FTd]h('R+nrw\ԊnCۋ;8CT_fږfmK}yP]$qu\`MU=6HPHMZ.ɽR>9})oȶOI?)ͩbiOQ dY#͌B}qsڷT?U/B/n#[D-plvFU0j9f/O$.T۸. |~Fca)0Tga -#kT=$O7$L",{ZfS0d|7Vts⴩NJW)T$_7un4G[1l'oЌHϵrmphF*=w 8ݠ_x7iNp}]X>4EM Jc %/v'R<6(iTpRyFm,r5;]SϨG\%Zդ.YحxZRrw q>wxѝs Jy;oT1Q f2kRNao|xO}I/B8?)U ")zߠԍmP4gT~m!\VfBEJ4!O7Hedu7ҥSI-j^[|b#pS_;\º{)=,.y2 B]:Fbѥ3 li"99A>beg~.a#k]^X:xW 2ksm3vF7ԏ qc@tk nfWjU]pt_T_), '3ܠz||hp 1|& a1Le!&c]a9(ԗci-ZnRF1*LΤBP&@$>Ţd}x=n{P֪ȋ|G+R}/QYk^/(UEnQJEmS8L}M|<{]5&#-FVRu Ur sʡ}mjI&dI&̞Cx>+n.Iqo"Ҝ 5kp`3ubV,yx.lTb #t>)F!fA/Hc:=cGsҮB}gϘ?;ȑ=̾j/~c! ^vb4M]WyݓYSWMkXgU!:Zxu:ZUfճq9/ߏ^7IAro-kpUl)Wi57-2$mmgeA lE{_.Rq#F]yCibgۨi⹶1fiMvɭS";ou0E^Ȫ&4hv>G'тlLfIMڳL4*7YJb/${%Tq?R{~*2n\ecxTqԿ^)HdW9"oh4˯nUO^AD+Rhw^$dj wxҒ\!%1Qi(.6H\`c0 z(BcYysrj~x́ogysNƩs󧯮rK9|l̓G w\ .7q׺}.9j˞\z}.\`mϻlr#śo6NȄ-)TFNګR$ym/)FUϵq8Yfյ="u5U%-ty$t LL2$L2%]Hx"]L9$R.q>N;/]t2ן6 8_NYf#uי٤7"I|>uR^?p|vjY>D7_No>ԝÓ_G_o֞sxV=^xVτ7}1_u8]>YzW ohtZT}_=tjdC \zzI8 qSGK|a1HV;Άz ex3,p0 U;J1 sP+nnBGytq,'KJoilɻó9yk`5{`DŽoqy5~]!IX9ց1:59̱֩ MtfkKCןk>VV5qFӭ*54 1曨rKip$|gmc$꜁,XduߩV nwJ" oB'*&It s:0 ;4M#C ;Ǘf:,Ð aH0NR&8Gd#w*i0]>G/v&iS4ű`;68q+| ɔDUAp2x<@=Q?Ptc)fЀ]zFy| Wj0W~9mhl[Ol{⋯?rw]qxॗNx_xĿ'qDs3n^ȟ(:V`؞;f\&`SM<{E5*W&[OuoQ`)ޣF.$uzz&nأѡbk^ٯL sK_և\mՏXyM x p/8z3/ȒץNyĢM> 贈Ӧ8ҿTrv]g,\[aϚn6(Mǎ,yϰX}rnuoj2?W~c?yԶe?+9o*rӏ~_>zKKtG>$޶fRXI pk޾_G)ؔx}J쁁]#7|N?SB[>Tǝ3;I],_{"T_S{ׯ |uٞכ__m&,|aQ'.?w voO x?oa y,c~PSI]tcTÜ/n ؿ;{FE05]eq|r"ȍJ~VW9oʓ>7Ho,p7eLZO! OxpO'w} r; u`)yVsJ:R~J98ܬR-_e ge OF^ٰ ,]p֗R_2Xj]L2$L2cf&Go5caڶ~bI&dI&d2;53$Jv5gue[-&R^B-69-(;\vxÇ~ˇW9q".7qyK\> O8xp'< O8\E8\E8\E8\E8\E8܄M8܄M8܄M8܄M8܄M8F;qbZ};V+̥6ipޞdE)PP^\%mErּ lW* U"{;;HQ/s4 ca>v>bKJos uchҞQ4͕ɲㄞm~oJ:ˊ.o=-w%t\ZJcoQw淧,ݧz(*QlԽv78]oMkk?zw |~I< ܨg=6t~omtf`L /y\`DPJQW-9<߹[Xk1w=ek&vͷQޅg==c~.64#gmsЕvRy5Ucqɯ8&wc$2GjPW$K2̓Vs#Y$!ҩbYjYzE#kܷMPt=cl/³bC)D>X!Wꄶ qͼ͚A S; :y9Q8&NjR)B+٬dF|. %KQB"8F 3C-4!,V[m`Tq6#ΰ8S(4'gY'VH0<߸A(fZQiԬas;y1FD]ՄĚW΄lőS]RkgMڙ:fv^vőR.In o ~dj2; !b3Dm:C?_\^8(R@@ON~CVVzqٻȚ d-/0'?r`A!a2рrpy<  1c#F0 p<`4F_ 'N8pg&LLL@#γ8p @H$#9n&` #B@ ?h\=0J(M @a4&[" .\ 2倿\ p5Ren?M;Vmw,pp߀a #G<xi3g+M/V^ x*57o x 6`-:>|1|   5mo8y;/4(o!&ܝe`{±Q(";(ulhh#L2$LvFɑu"dejq]qi8TL13nNuÂʡrrp]6ˆE*m, u.[=a(lCzVa.f![=bl;dNz(;!L2$LlCu,nKh$.oN 5UK5\T|)+Ƚ^ޠrrnn8NW~+LP]My O{S4-Vt)7HiQJM6$!W%v$JUS~enƷ}.Cod!鯏oDm~76i9{?uOU]g*eomT&~3Q>S7ӷ}a%|n:5K8iyk8g 34\-gYgVWi }Sޱɨar3iFi\u}!`ij{5|5ܒa~- LO0-?b2zm**V}\ES Amr[Ikeh=iCHgk QuY; 6AX 5&7Q:Ke4 ]x䝚ԴM1٤SgC3l)fl8z2wDU],qGHY Ջ'4AU˕Cxn[wF( f֜5[ nÅnI 7ef֤KUZk/}.*t"g"hfYa\ 3L dVe',;fɬ0bYy1\^[&[>Y9p{s~@ŠsRÕbCtrі`Vw/`n ('2%:TcV%z`jr2oy >ec\if&dI&drIu>'/b\S*d2.yz(OU&U{uØZ1%%*hu;%c6 V )G*Td]h('R+nrw\ԊnCۋ;8CT_fږfmK}yP]$qu\`MU=6HPHMC/ג<_ڙҞ.lOIS؜ n B֜5b,7;}+NS-6"oH kgT&_lhLB5߽ R W *n4( CuQqy>4F@CT}SJ$r˲75;n= C8Ngyc`Eӡ8'N8$iBuIySF#8i8|v K$\+6父 mtsS uq4  סͩԇ׼1Aixnd_߆`=JnR*( Enf0wy+$YӺ%+Rk^JN."NG/s{.A #}@ާ>(L39ilS9Gqh._ڕXg9GRWMx 5Cxˎ_̒qG~xvy^wkbxj"^b83 ѹ“H$Ѫ2͌KQ5(|yz&B{ɅjC D.eT%Csq?q V47ށ#:PyB,U;Y+о>qC7?^bO-fs&ޚ_nRŸ~h{-ޖ\P_]ICG՜\14s?7m>'K+䢛Фnn7ₚډbtͶ:$Z~EVʶ++t\XhLȘ˻ٮi7t}!W\{H]ču}oڶ$7j%vOe!{#poL D 1%U^6ij(3єnbda*ȒETR)QJ6:bȸ%wpEQ)QVzq ~kSc\刼u_j,Fc[k4(ځ(z%\ vwp+LPs[+$;<>&*>eF L`@sQD9룿s2)I*YyԻr?Yuiֱ/ްLkdaw_trR٣t׼<25ٵO*tn9@5{?}_ݻ=oIeUy/5Ǥ[p+T0/$|CRyhؚ5YJt&=7>mҤ k߯'bMr5)I\e,I:n:"[fsLؒIeT*M7&bTo\a<ٿjV]>c(_Wc^U]BGAg|#L2$L2侓fD/wYP"^|N‹t0LKH}z|ĥkЇ>:OToovޟdϧ>\$|9uf隥OO"]g>@/gv`ZߘOϯχs4/N'q~I}{KzjکYfgG~9ЗSwO?S|}]|Y{YmN*{aV>Y-?޸f?~td%+_%#BY#iqS }ҵqS %p%,N6M/hc."Y|:+ΰ8Shn3T+H$B uuvn"c~O;,+L}5g'z}tv$cڞXԴX3NJl*F$K&4u-]bHZyZլ2Mx?sh3 o}.󝵍s *VCbU*~Z7)4o E8'=7Y; H#2 ;45T_ڦpC2!i{8;Ia~H#GdAttۙMY v`;@ǭ!$SVhgW ?]F5z^=8p|}l1qy3>ΟG7.}:}o.lJ*޿.o2O7ڽ,uޘc˺cuK|2~6b{u_UzᦅUK/oy>'BoN— E]O_v˲)O^ޠX[QKc[zzH@KD;.[ 7a}zzTr|߆ͱ<O W?5q?|"/~Ӧ! |^C?@v/y*>Q o_WiŶuӆwo8H.^kΝB%3Ӛb-|o^Y?Ml ( 6iaB,>m%:gg5%=?tñ |!{'G@*}ނe'Ӌ#aҵpxG/Io` ߔ/ly+x?N)Mۏl2/bh2_]4g3GdtNHjycOQcz-8<ª0Dēw9'yRse ge OF^ٰ ,]p֗R_2Xj]L2$L2bL2dhl]zI&;zd2^x/ejzVx/e3e9+;\vxÇ~o'rE\n|'.p'< O8xpppppp p p p p pxpxpxpxpxpx px px px px pppppp p p p p pT QA8*G pT (>:˩NuC^Q:)[9e+l唭SrVN)[9e+lϏUt.f U}G8Ѧ~ݼԭzI }7%}a]9|pp;*uT2Ұ~r;Q]?U~w76@;`z[r-XPTP\1e}_v?9z#r/OߋC7T?դ A4b9n/OIU0,kEfMdZi^أJ`*Q%U:ޓݫ2#ViϨTJNqB϶pq%lӻWOV_^4t\+co`2_Wu-mO:y偽n{V,$KB?ߞ].4>n{lO۶oλoK. lx%T6Kə~X`_$:nI;cRYr~JD#Vn[j!p'x\/,Vd35* K @ @a4&[" .\ 2倿\ p5Ren?M;Vmw,pp߀a #G<xi3g+M/V^ x*57o x 6`-:>|1|   5m< [w^2i<PB-;^.:{cS)d'{Bv)d'{9_@Cӷ=F6[}I&dI&̞)TgV\5s8.Ŵ^IZg@^7|'Ѻa`mtrdP9v.keF"TG6 eW:rl0EgzV![=dl0]lrlPrCzlPvCVe'[=lI&dI&sK!G޺][%4˷R 'Ě.*C^roPWWR77EX\yr+xxӕk&&<'a)~~Po(%ҦIb ېnbNg*j?2}@>TI7U?cǷ}wH6|ᴜF׽:ۧ.V3s6*gyBr۾rT[7r]Uf4L K{<5JyOߍwcuEі3+4L}S){d|XdN 04{#4.Ϻa~_0I4^{5FyAyn0[MVgK1_b6}l5}\w>.}ݢ)69 x۵2jɴ!35FLߨk,M~ INWu2 .Z{X,M#e)T/ND9\&Ȳj5,ƛg-oݻd{iJk?'[sFjl)w+kL=Yv3s]&kfMJTF ]0I?ClJ8QiEx/U,14Q!x!ȪRqaIøݗ xNz~f 3RiR9zEjUu2Z`zg.V wxfahK#z&UgMS4S F"&j,ITpmuU%X <} Vj%L2$L2$ّGI&Tq?+Zo1dgVl_x/e3ZMx/evf^ (w&ٞ-&dI&d&ѱX3L2d;Zh&[Wb$2^xog浚Ճ2^x/̼{PH3 2 b_Af_ANdɾ,;We' d_A+Ȋapk`mlPgaޡa>P1܁EpCѰ֊uԢ="aYXn=*/]ǿ][ Vh#4ǗgB"bŀK p9ீ%+W\  7n w X.? p/><!ÀG<x$)ӀgVV</^x Uk5omZ;uw6|c'O>| `+k|IɨOW=\JRO9ش3qig6̦ٴdβM;N6팜l;36zVk|L2$L2侓 <Ù,wW=N^hTdzW3]#P JM19A-|W%4||l~lH8R$u꒔>.u4 [hn;jjE!E9Q~Ms("F'ʵ-+lD55ΠNi5|ax* &V׾5R3BQi : |[б7V*ܧ7'߲٥ї̧)dtEfT_dvcfFg89kqvnh-C_86X;*5iМld@'e.. ~޺Fca)0Tgawq^T k.P<cߔ0jj͎}O}PNYX:XMZPMUv1ۦPݫr`|qԹNhN(mijh<6C36S"?ʵ9Bݫa0wwLG#9ItE XKCSkޘ4Pbwѝs Jy;oT1Q f2kRNao|xO}I/B8Kxj0wT}'*~ZJoS7jAҨQ]W7sZ!e#W.U~h^)qC ]nFJ9nK:-Z bIG#(lv\m?UmuSͫ{+Y)]LeAυt ujKg(pEGs@s?}\F ֺt*dL'hgo({ƀ;-ͮ'ժ:ۻ~O둿jA RX`N6gA~ gw)bpLbJ%BLeǤ(WS5r`Q.N/%}= [x>L ^=cTI v Յ`Mh8s.%'+T~Lq{VG^;|_ʯ+E~ȍܤ͊\|A*r"W*rhak{1Зi1V߰Bn\.UgSd,뿐P%W0}1ʵkcI&dI&'P6bO Ooֻ&'i/6rZۯRy%W er7]/Si KۦkuzYzAAyKRܫj4'l98gu0\>.X k\ vhn@97޺K{$קtH}`G6o}QHfr ض'v2}ܾKP3rdϤ4ӯj%|+<4ᔴ&U;Ǚ`Uν,F"`VYf\rAKz $ -vhQSy8Us8Z`z@A^9\4qbG2'I17-lP$ %!_C^ Έ)}>Ypªu˰E M%݈.XLN?)H]AĘj\ NgAM̱ qUs1V=+‰$W2!sqf9xtIU0,kE9z>@Ec3.,9F9=dNˆ 0?vs >ϏUt.XȩS":BUQ% @)I-b\Y~x\vD"^ ŏkK/P1iwc9;MY̠EQjTZ0@"(\R_J(\M{#-RiM:@_iUZ"GϞY{qZdqy߷ vJmE&i&rRe :;_߸ƕ_tMBH%v~48_]RXSSV+#,FV+b쏇.Q*<" HXpdH#D#=NDk?Nv9l :Kt@|PỳdA~PXx9 v<$?&//Օm0t%ơZs9 3ID'ZϠ%TFFbEyZvU@[TV GQB&U)i*hJGKDn;"[ t'n1{GH'@nNl OS G.6Ȇ#ly/E>>R?NuzN'ݯ>pyopk>|?=>z^)Ҭ8['E_/K7kfCIatVC_Nݹ>T(4(rȑYXkA҈9i{H^y=Dxmӿ[s;IW;xsl|DTMO憉٠ߠ ȯ %ƍU"~G0Y$!ҩUޏ( P iCs7]qOu؁WuiM4F3/,NμHÉ=4v8/8* {^U&=".s]v}Ofţ[+d|M{v'OF{{21a^si_[k.5"k.5 Zd}~L6o}M9rPpv?qKU~`7pY$EI‹,0G=sG\/Ο7"q|=#&ssq)G-1*<*:]>e,i%q?9_jYǾ 2;lda eUxv-]+#= "[ WWWc_o+8l lhl_9ˊ}^ޅž u*<*|_?ZA( Rl@r'%G~(OQ5Am#+b5aO_I( (T]P!`V9 8ihi\%J|YsRŶOV nˤ^8EҬn#F4t1/sǢjv)B_0}U֑TbHJ(SYItf*"9^Iu|f5JHJ| Vi"m_f tQLQjl+q'=S럥ugsاz?[۸ Nx5Z~x(NCא6rYopӬ$/:tx{^j IhHPd7!TT *s4SmPREjo!Tg+F9,G~iڨKI%#n?GuS?)f>]ۇSYgƓf#[z9|-5qJZ[o3$]B%gH"n$9BFTPIB"m~tAL2$L2=(2^x/2^xog5ďRwϨϨϨJ.U>*;gTe'dQ3|F03*Dj;۔My^y'E[(~ΛOpHloMF k5n|w@:w"ws)[=cϙ> >S%ÓYLzj2|%u[LC9 ?Ix;}a1u pfC?f0<:}1Lb1I&dI&d-ѱX3L2d;Zh&[WbɎ vzfCq1:Ǭc'!;u ɬcNfCv2c[(`V^bCuס D+m |.Xp LJ˕Kf%BRJF;oJeMӪV2[})eV2aĬdtJfV22{,d챰=夕\K%4$tV2boQw淧,ݧz(*QlԽv78]oMkk?zw |~I< ܨg=6t~omtf`L ϙYuղJe/ Yv.Qsٓ[(\kb|J ޟЌٶo9@WJ{V2nmݲ}XWW*V26,&=5dV2ԺcYɸݴY1+9Y`V.L™ m 3+Ǭ\3 S[[Zo0$L2$L2o%;:kfI&3`Gkmdʶ[L2ٙ#2^x/̼Vӳz0^x/eMB\} GfcV%Ȭ >YETV >mA=rv&o|ssJ!IJb=Y)|++gDzn[),V պ]Z)4~-&rd?zMx$= 17M)k%z-žFIYj**hOUN~r닼ጬ\?K _4ΨkʔJC< l{`&s*jEhW7Ԕ4;v[a[k}ozDV3ppy%>'&bWO~I:ҝSM,5X}9I&dI&dܖGI&Tq?+Zo1dgVl_x/e3ZMx/e2gw1gMf`7 2k5lcvFglz2vc.(}0}kXm9k2ގkUf`7:ogӓAWB1>*\\91Wdsc}UvN1W>ZxecYz1h47 POϚHHnN0]=5@e/WȢQEULhR'[4y3T5Hn`K< KrJdʙQY,*ٓCQ[l>~|&JJگd?_+K}1;N$֨[QV N߆4_ULܠH"SpJ߶ȉƒ#s(aK#v#vf/ kgCcu6d#2Ua'h,nWlꎶn頳v݁`l'bǸdBzB&r˂F }F66Wp.ni:l:d6G%m#J? =Fƾn='Xkٵ6yQؠ8#x?hW2c~OI}z}t:^N&_}>&˩7K,=}:y::}9|z~}>8SY}q:翷Nۋ^3VoN5ˇ?8H}?fއ=POĻGk8Z/Οyq8H66Gq&}3ގ;p dI&dI&mɎ}ĚdL%;G[3ٺLv&ive2^x;32^xog匿Ⱦ¾¾±o'dT*}SEvoMl"Tɞk#>Vad"*23 w0 [u1lL ~eh84oPgaޱC|;\̨| z)Ya6~^xy[6wSq֕XaՕ;*vTеe1ea|x:q9p}u `I&dI&d}Kvt#$Lf*8֕md#H(YP\:1ɬcNfCv2Yǐ:1Jף|xY`Cס:PJ|{wݍS䊕>dQo%%a!g%}h%òiU+i+L^\bV2:A%3+=XrJ _Vtyi.Jw%t\Zs:+߷;@lӊ}{`[Sv={W}(6z^esBZͮ7nl5A5=u>r {}Sn޳|m}`:I:_30&w̬djYY ²,\;~({-.[s5k]ԌDe%cz{\mhF`lی7+mf%C=+n>d++S\V2zpz+j]ұdnڬv\0+&ʅ6ʅax\ cV.͙թ\hdI&dI&ܷ53$Jv5gue[-&Lx/evf^Y=/e2kJ!tBsυ]#1+YydVYyʣdVe'(; <+^)[y} f#bHfꃙ@>H.[.}vݢ.Sn'N$:}b_ѣǭjUYẺ212TJbV 3{Ta*Q=U~zrZUUkdWtloAZ)1eR;ϛ[t{cs7&-XI7=m?\i||؞.m=tĝwߦ\Jl#336ϱxI+t^/vƤx+93+=| B8xSM| =Oj,yƢft[*+W Έ]l9b7NEWkiP莎jP1֞>t򕊕3i"=7rz+j.?s҉tr =F <ɮ]RBv ̻Wz}5S|0rᚅU릗aH.:MJ:ZEh?wc1oV9m~#uS{TJuh<8 jg ]+4J\pg^,'IdBxH)xL6ChmTXc6!4yqt} 8Y?²1I cSI&qJ΅!N$&\&˝9{RDG //UcE.]!Yk׎1ZBٺo\T бjլEf"~[$Q6@"(\R_J(\M{#-RiM:@_iUZ"GϞY{qZdqy߷ vJmE&i&rRe :;_߸ƕ_tMBH%v~48_]RXSSV+#,FV+bOQ

nXZiCNLX6?V6 zC\{gV}=j7p} =^H 1:J ,۬3Vu5=Ij"'s҉Xf!*3D2{o’ٌGZ#Xf=p$2Gį[%BţT,)Cy~DL X2ۯY#A;`yu %C܂HfѩXMt:# kL&Dz۴Y8cKYŞ&X+_ng*S+O,'1F޷ ǿg WR#y3DJpq[c[)Mq$ʤ21ߐ  3:_2}Z=R5{=aRt KgKbs*Rk]0|`ę=Z]7c܆#vk7n1X\um{ s‘LPiΧww߬` ywqOw-4Ync^8<|WwX]sGr Ա1Xnm5iev8ѺktzJ8 l3"^VXn,]V;x#O]i'x<*G2y/!UX%P7&l#H[x+>;7sv#xH^X&Jh3A6đWcytǑfH&/,OtÅq$NyFK2z^{fq7COV`Y=gZOdWԟ<ճg#gߢadnzۇY=gJOb?ҳճzVw_lYY=/WYY=_/OYY=_lWYY=~UGV_lߦg#g==Wd߫~zg#gYGVy=ӳճOObYYS>{d/Y=Y=o~}V{Y?_lz?zgN=YIObg#7_l?M9-?Ѳ-s>/e E _q )7+˓8.qOf0hfe] c:^'n Mq߽ܸ1zqxGq­Uf2dz;i.By&s<$bS3H"wFc.KЩ 17Ţc&}#{hquOEY0ڲl }yW*_2M{@<3^)y)X"~7 ļN!t:1󥐕/;#BsWC@R4Kh34>WfY3@f H$dsB?X"^>£y<AAI7x.úh9[Aoh^7h_ {#sz o4?g7s|)!鿜&DmNG!??2En_w ^g݂Zf"-٘!"™_7u$y޼<{DMz|Xf-Sl{:ӫ4ĔԶ9 3jBLM8a+յs3wwB ny'ļw4"8et\6ar/3G̽qz㉐dBEQ$Nl$auĩg9  aA D?}tM,$ϸRDѧӏτ$30q$<[I*=$"o݃ےDd !*|!$C sKCI8qY7?ƽnS Gp\I3n= xr7#>~E8@G)lq=c/vP/ Yr1q=3/AV@q27觘7! _GʴVH ^Ctm^?H2݉œZ#FOr8bO"{k~(͞ ģwk("捡J|BU[{ <$v?1q͢kq!8"S]+NM,$+E<;skF4qj۽ !ɘ{Ϭx7dž\)tGL]= @s&3 ϧS#f--;_9>c[ VA,Yu@S)SmA6Dmy)[J鯈G;t6C1ˢvYx%௖+ h5yNr <&O3@p?'2/4A?㹁q- -s7KW) GlCqs3sv } h?]EgĨkDǂ6]Txz!*w.&OW2 uJEL0Kp<~}ѽވ  0Xז6u Ę${ c5[Tpq#>$nvlgIr;|qSH2|q!#>i"fc?VW@L9Ƴ o Iq|[9$q>ëM;"^:ݷHr ɼmzIDߛռ9bNnCu$׬$ryt9uLp:5DB@o4׍lR Iif?bBB1Z_c̐bH3wB3-KUL~* d-@AO+h&@4h.kηɵdoP>O?^7qq 7~v#OfGђjAVmrUxu@Txk._Uf"4S( JDTtc"52WH;- %6<=IP?@ź]@K!IjQMZ HAU [(z IsOl)+\ Is>I:5I:o}[ )7P ROi"5Su jŮaKzAԌw;IP+ WKk}I"d)>Bo[4 I_əu9,IҪQپ9+5$)u4hH=p{嵐$Eu.9bp3$ &CȽd4xc@Z('eh@)y xAK=nHA4{G@|R< tFc%_3].t2Ɵ.NF7Zv\ƅ<_7CGIׁeX >x(S3dHV,~$cwJ[ixH26jʭ.CifE! L aiiG$ΖԖ4GLH*X 1:Ƥbb S7,E^:h2 G,5L1Zw޼;|u$p&~$$ud\BA;csG~xf>biH@9"FG3+$qATjMĘi{;w%Ę>q$>5yI$~c4S($T+9cH"  M /Hr MT 7~(͓@ь+P&,7Kە^tGpA. ?C ;5D~=ЯTOn߽qe8Zh: pUMBl-@0#ȨxY'Dea6!x9ި,Yy& %ՐDu="4`,uAkeO5g6$Q~GY$=8പ~2CwOIvon>$9rNQƗ[ 4NwurM6$ @Bcus"GIs{r{UO!>1ݒ8/ G{ IjlUN($1ig!I2IeWHBf]nCn $4^H*Z2MKZծ$ -_LBզl-5%PB$zҍq=d4~p 0Ci@MoZ<iqX0@ ߯ͅq2_ _KѲ8n%-s*05{7 T/'>x߽ =.%.}䁨Ofh8ڗ 4ffj":j:!No1:>}b #-2>v}߹ T)Dq@?xWS68ђ'@%:'o"j4Io=;rpku}csHPߴc‡UO-ѡ<)Dc7:C=}q*?$';2H}O 11DhHR۔sZ@c>F^q;T0o[az$1M IQ +#f+$Ϟp~H7M<_0nDn@n<]AzW_~ >ڋq%k6L?zr-C߂DS| |bm0B~bA9'Cf~H3,bnH9fg=GWI܈#:[[1 Qc/B%O_]%vi ݾZS`$YԼ׋"OBš G'7Yl3$2%Y*Hb#W+-Iek|3$P1&搄f >gڶҍq=gn=4NXDGZ3:ބΑ;_ F+TA 8sۋl u,' Q4Kڻ R7Z򱎣h>#Ehy챾(iDMZ"B ˶;n8nU%hߑ*EۚA: C>VGD^NN˾nc}67fLtyIhCyQ=%L>[t}5tQMGW0rqfBӝ_'y.Qyˈc^Fa1xcAo*6ݕC p"t; ,"bv([%ߎԴMn땕7nwp>!` q|ĉQ^?$/LRIZk[ IEuH:,3$I} AM{˴O$9Ԇ!ݲE Ubҧ}B{KcЎbn|wQ&F8q {8}8@~煂"Q4I1+۾b^}9zt} |8߶t9bjU`ϭ!ɴf+:LY6bܹ7Jo!fjOҤ_NFj] ƸY|_p_=ޟݘ~70>D,? hHy{ٓH>|gEVvԤ-}eN"}/Rf_D2A)QO4oxxI={#`s 1zG &CWT؂3sKM'"w{sR֖V͇$B6| btgNYwhފÜ H"Z Op?qV'sGI' @zN3 @8Ƚܦ;]强!k e4:9WGn?~eV$rnZkdsĔa8.Q"P/۩xܚJn둕/n𽙿zc>t~spCzԏ#RP@hBfrkBq3$4\)u; ?H}I$qA?pH2֫/ZIW EH9q&@%vE!hs 9vv$rz͏8r"b`/#D<|0]}{اd1SA^3s4ܽA%] & I\h3Xէ>EPFF12~H2ċnAk=ZOK$'n*wh)>GGB1CVw Iu6ߌvfH3Ksw.0~dAU3p^MEzt^ǐ%'|^y(붖s3ifK`{ ]S1Dij 0@jHHOaثès/^soߒ-ϣa/AG03D-,uVa3OX",94q7$mRt}]E{>EF@lW˸X# )r1]IzOj Iǎ^6bڲIJUg\m'-$qfB8ad\LwYjn&#Z~H~ID}h b@̓ dϋ䞆#&4bƨ)o%Z-$ti3, [qtubd=;ƞ$o%b̰q&I $3"{8mhrH"sb..~;!D]{wϙI_y<^p!+_g({ IX;ŽW& <6/3G|3yrtLCWg}6ş]KY֟k_Ig[\k]CÔ@9H܉O[l,ȱɝWEeni;}!mWT#P6qO Fe1dSҕ % nם!F<[e+Iz0)$fIHB-Lw 5=Γ1Csf XiBki{6b8fS~饐|%ҵ\݆ ɟ٩RkH3 #+?y,96O.>i3΂=9S[pTyuuʟUՃrcHi:߭dŢz˸r~nRi3#i;veC661Uą\|cےS\;!*={w+ g9Iȿۿx̛ Q|  +!?m;o|夁a>kw+\9$k&zdeV+mh7ڟ8p.سyۭF&sMC;ةR]Grt>~Sb'sjʤQn.Or!->Wgʭ]0Iw݆MZ;]Rwޏ't(q ߴ6_6Xڼ򩎺?<^R$7m{5!*lHC%Cr [PqQ/^k_-xqklHC۝ JޛJ#uO=3DTs5.ܥ 0?(Qs$ͧ >U{ޟ,h{zC)oO[q; $D10GeeV;eM*8c0Agc@:8HHUZlLvkr] +*#O; H2dZ@!ӛ͕$Z,st*$Q(1\>$I w< 1\teކ$?.WIm#^}Eڟ~bMbW MWCLIѵӆ$"]}V$ώu{nbDY ݽHxSsHcAt:hɥeGHb[ewdI"wsRF1bGGL\1Ei]ʿRFD<}?t 4_1{0^a:<`,{hλr8${nIJ^ n@)Ňǖ!}A FWml yCnv1;L]VbHu WExpd7ĜS#&qB$}d kDZ{;vdd7=]A!/խO Hf-*$qA:_$IkB'ÿ~" I$Z 1IFjy!$q6IxW,o$QK4DϾ@^~ W?|:$̿ gCҢw n ^1+,3ۏ#|A)$?zI R?j(b潇-6@Y!/W"fw 8Lb:kKH+@\9򯾞XK2zdaڋ&xt*:p;ĐVӜxsvau8젩5$Y9KwC%\v 1?ywTČ&.}?(gbZ&7S ɴ쫖:DqA˵e\*@+^NhXf4wID0^!@@AAKsS;^ߊT=ggHx%CQ̟H> x4!]۴]Ioυ$b,zbeV/p<c *y Ie͚Bۼ/ړIN[x˫o!K|$}=EnGbRVuC9{*HVWLgI߲ޕ1نxS!L64oI_|~ +8Vz@ $1 ā#B$oVA']ނrQYI$<}H+ajUu ^X? YAh\ʬʬOdeVfLYʬc#+2+dGVfeV]eg#+2+j7?2+?%SYy~$YjGe?2+߬<GVfeVLfd?2+2ܨ߬/6Z :#UoH+pRO8}0:\軛|^@f p0@jPſd߉bn`ݭęO-QnNnQ冿'*CݸLڀ9պk9j95;Q4ݐY6g;*OB}:8}B\?)mU"kKrGk"c4G0QeDڛ(/zv8?!R6]E9~EsogF%m_gv'MDndL=JKw|5 A%Ĺ۱8}rUy#d~ם{!J h !򞤾\"Md5Y=z@{go#җTС;qf]ԵD"s[heKl^^/ {횽ܸn1rWYLH"%ArYTar9k鞜=Dz|dU'7ɰ_\q~K;}Y)0;dá3LOj1-\@Ħ4Y8aYy-r4dڌϛ-H'?86th2#wIˉ &*ȔpQg&r^D?sDM sa9{7q5lϣGz43 ׉G]!όfxͭM/ wy/!%3ᴃFѠ](V~Ԏ l ~w /SFbG\cė}C3Z@}/Ҍ#v}(OFˣt~rq=_\@|X aڅ%7q;:ĿO"E8x AX͉֓}qoݽRHw+5%o2+դ$muCڞ$ [+fXSdN'אg>>?1rӇD+oAwa`C tHQJ0{1wz񣧺dnװ38ySɓ=gvOK /oy1?wߤDs+;xt<͉@ve4`gYpm 7h.@7'Mu95Q4|s9bj/@(q~ f4daw8߁-sLi9.Mgڑ$/-zME?'i=s㯠[y4Mm}vB?? "e CdK)-d+-6d+**I YZHi2ӊJ%ٗd}ӝsvx^=yΙ{,3$<;l#N%oqYn0A~tx#O)s%CX;aaVwa8-;܁ =~#zPk]3+'[*6Vs?-NIyyLn"Ό Q#:_#J"#|ws* v 4/~V8W&>|Ip<%7sw{NA6'^.1ZdJvun2mf(},1R,raZuVgޡwc09C-Tv &}˰w' $G t]~;LUl)vzVJ SRv-oKbXaޣddܰN:DVNny󫄯ⷖDTbo`YK&KbEkG?͘%v<5 tvIbVn2$2M(9l{7Vzֽo~+7yAuj"J{yt׃jQ^bIM wޅ-Ht@{o;;Zvm K^n^I}InD|˩\Ljw VP_ a, 댕5{BJ273#pW.̚:Gx_y?pL;ɳUݤ 6ztX?ۿ]Op+ø9oG6\/GOf=gQs+Ӟմޔ; .^4{Yt~ ^ ګ戚ئK Dg>]B y>=Ss.۫8vtb~x/?G3mnNs;hG;iG-O*~^L߅ 0ΟЋÁ}yG(|1̃p |!fڭQǑ4$܋}Wͽ:˷śȞtbI_#6*-%Jl?^;?Kd-ORs~;E-H9,lف8>?bDAG'D[-J=Bo? %ތz#;M3VFxwr"\$R?}PP/Ü_<0Lӽ_'8tOвzXW-FbG\{4 ;;gVq|ŷ5.ÃE_sVVܽ&92[@N_q mۋ_<zntnq㈒ o 4u+ฒK7/˃`|۸; 8OWT}@ÚK:'JЎ!,領镠<,W=)&vz{c㎐` Ng9Z4fQhwKS􏐿zÃ=t9 ?E??a#H}205{;^ԑ&8ܛRx>K_@wqm Agݏn 7 ;7~7 ,'Bq7]I$LbX_:\CO岂KG1G('=͝\ՂfıJѦ7N=̹L56r1XI7{m}Y=8ʏXۏp$b M\:n+b5NjziDBzw}Ox-k}(J>:f_]MQ<1۟؏:of}lS{ohuJZt5ŦlJT %/ŴG%CMX{( W ¯]g7<,7z@eyрLʣe0o+Lvژys ,z9OQ =k?6/ b~2\ o?p ,.|IgǹxFS8. ǏcX\򁙇EbDށ&)f(T7Kٲm''O3sSުЊ(pd1ġQ:O8ſ;l}mPٙό%D$Og[D>qZP>LS"νy&rxQxn%loǗVRUAzN!eı7[%2t*M#΍U X:B~Q<~NY<-QDTx=Xdo"_3GE0x^0ik -ra?3<$&ƌBsD a@ g;'[|?gA?c1*I0= Ȳ '$q]a#aFNyI Xkd+.òeǏNQ 6lMu1^,(iZݧh,M^>ߦ\-ilӉ#m{L&o+(t^D$MJh~ ;gEuh}+G=|1' .M.{TK-ŎKnPqt9&+76oK\շI#D9g[$ð;2r& :ۇĎ wo5Mz12h2F_m1|+=3"p/8wyv/0if|AQ"k^ snXXg֫reh%ߛ(0 LM\*+ZrZʵӼ$/{4rZh.њ(SQP2ش88Pj\^4fYVp  xރA$AFKzvn}`y"}NQD… #-ܹ6LpYtíXI{+.^(cVCNζV8[ò&U^]ֈN|bϋMz _!翅zB?]`A==p8?Ἳkd`z:#|r|-v Ay^DZ£!+5IK KݿIjo|,VjX"I;0xvʳ˰ĚUg:F}?4@1Su+pnwc?9YDd%.lx(`"9b0<,7[7fCr p]336%N=%pt[ڥ g'\k*3=doۜ|ƞ8C[^eY{eLܻj̎܀szgI9GO7l칓 \X?=_  ^IǮpD,5rpeqaJOD{d3?"w`H7d#e`I+ g`D}݈CS6~Mae*fb,f>;U?(]e.{Tg"lkKcy_]mN\lUG.DIw/|n^ỐXN;`}2W\so#nwSZ9s# w.[n͋ 9.Gԗdpw~xjc!{9s7?,m?-wmᾣxL[K+\gr{v݉ܣ֝d_ܕF<>D9ػ&7tඒ!ܱ{83eKUSK 6ukjnu ܊~|kw(L;9JLgyƳxx&'!8G|_Ya4ql5 :? uQxL|rKWߤ8hFo,k4%bE &!rT/ة5ȷK[A:`Wf%12'Ȉd%6ӜƂSIH 2ycIz^bs`"uG0/r^u1;q8Yj,r鑦  -6qjim2uúU9.V8]p/SP87TMm]] 7+oםVO?7Dg m?^fN/:~d|Y`DQ\;c1EPIXUJzlv=u?w sCp@ͱFL­5Ǎ9^q5 Vqg*r e/z?7HT-ܷa9܀W rqVƎ=/[/>u|A< A9bɡy ؍ecHN2Yc5NDj&5vM>/\ak{X8(k{_SA/\󊈔,jz KY|9ӉTuLJdzlc=`k3 o2yn%a9ph"qɛz,7^=jc~OL0ǣZ77yn}ͻ]e=u_|ȍoQl͜0"4>E)ykɑ}=Yb"spZVfqݝq6Nc^sG6;cBOSl}9;r箭5K9]|xt@o|{v&cp3ҋ:$~&zCSNkRȹ;{/wmA>R$/qu} w<|orn-9xc}hkC'2wւOSm5D }b0Hh~e|1̓E&ҋR<ǔ y~(@gOm0?x<gyp<1~.^?$|O,{~ g t=?gyeŃrEhmVlޭD8sAeD~GtD籩O]:aXү+F7m'}"] .g?^fIcVۭ鈕 km>Di LQ/3/`"gd%;D|03pe7ETazsDs1`ay/ AQd>*{^6ԗ `ȉ̸5Y%lɏNzf]]'eb7,8KvYN ^2+@;"}d ,}w1\x?`![L*$NJט wb/V3uŮyau[l4 fn0)N=`"Y}-&= 8k~pcCf"~;̎gwQ|&~ s4S(a2=%LxC0Vzl'WXlC6E?3kւc攖1rcd6>WlR%3UݫN{v= ;`roOH&qnB!^~{캓[6["=AZ#xDzY_{o < n|wב >G8z3ޣx?+]2$֧[agy _"ө gDQtץ_Oīm=KYE^4,%/KVf?}xkW̢n-S4E{DR|´1ﲈܣ't'. krǃE&ҋ"7#I~nW;z~H5#y ȏWżL~v1Ndy4ĈA]{aW6pϙ8vlZ R7J .agrx;Dk[!Ob72L[r&@sb;kFTbevT"{Ezƴ7X(x&}*^8L]^YV97fIbXw] uF}e5~E9cU^?,!̥Z.yxwV6':qɛcM7HbQrO;e`"HGfzSטpn*wN9Z-^]n+6zty&}'c[0_]N?d!/{>YyDz^#wi0P@<>eNfL3hŒ'62P8\o ̏m5 7&|V|Mt# v]\uAn5DŨkÍ}&O*|<vLg\a,7^<=w;yv.%p'eܒkT㱉w}J\c.Ž{};H2q1̇ip\}E8pzV;N =|+v~΋ݮNz:;_q5zͽWk)s 5#=V+jh׃E&ҋ"g_7tRmr|@nK&np ގ;u:ݱg\?źUw oZ҃G yXŵ}Ulj~ /G$A:0?=~f҃5|_+ ?S?ae%SV;v1m#nfQnqHJ/k^G*Kʼ%;8I pw/$v>N wNDlFˋ>&Z*||@-gtEτdo^6Qc[ إCd>Xƻ0Ҥ([&14 qB,7^<=/Vuw |޳ls<>OYf;wQUi;rݓ㮟<)1o^\zRzh,̊VEm&JzMZip": .ڿiw| /չM&+}<$+ 0}!&E 3~8xr攓DW׈K/\Ȧ_^\=]D Lbm|g 67=Þ%fm&Ϯ{pó\ˋzg%qϋOK} /j;9:xiהGxت}tKsrMSL#q7Y슁*>q׹{Zc9wk,ј_$`py/a3>w0ălİ{sN˸Ɏw"H 7^wy\|ZLmgCXk;1p۩pC.ڍAE/]|I\o_V*'kyZB/ו޹5wŏWjJFT.P~0U}#vΝQT|k‘N+HAwgew=r3|<ذC/~pYf}\8tpM< EX{I="H/9ฮsG+q7kims2r S*_k:7M0?}unD7Hջ&۹~K/Ľ L|T8}:&q]}R՞1&=^oXn_\ktWLZGUv=Q轡KnTd;_c?xrW|㋻7:wxZxsgy(".Ml{Px{P^uoVNn.J.n?5#^IDvVL&.iMIfߍ~;_`GGm ^i^^<TJ4~’X-kNwU5_U~,1-kVypXe@KWb_ U&//U.^uj&cJX2e{XrQ!Wt W4{d8t V9unX[3 ZP*ǘS~ֵDlSI|V |[rXsXςpKX慸&XT!-JfJC*U6-1GPxEJY23T{7bID 5xw֬O醽m|UmhUjlu몰7$f {¢}ث4#؇M%w\~IҔ-%q_ceWwş䃽|y<]~jػr/}޶Y=w*?vWW/^z{y٤CA_&r|WaXj~a8V5!ϼJF{rkA勘G02m V".nr؛V_U.:ث'6o=j/\:CY>RA+z<U."\1!U^G,md?h<,u)1xl/Ll~IJjz"E 釒6~ᓥ%)DI1PҕnQҝD^%})}%)Qd%)D`JPR;b(%ʔP-!*%jSA&%ZСd%p)N^%)A%d%)1d %c)G1%)@DJL(DdJP2iR2̤ (MJR2sJ,(O%%VVPRÖ;JR{J(}%ΔԾ}WJj;Pe,d%+)YEI>PNI[<(YGzJ6PMxREIPMVJ|(FI"vPK%Ԯ}ClvSR/0JvQRگe־/{7j%1_Gkw%aF~ kbrp[nNqUXZmZ-u^ ̧8qussv/P#0ڟ]$X'u2ǷnuP H7D|bZ)|O酲0櫰f5JFЈQ$ %$઴Ei Pms\g_UY*NξZC|mj"8u}Ƌ5FE"p\ n^ 1AIX:;9¦t ;GW7%nvNnnreg5TI&?P6~W ycg&SWY'Lº]j٢DUB?R9bR;/AP71:uq-'%tڎTN࿴++Gwk࿻m_A9D>2KKi/UmNKၭ][̷sudo X:)'v'r;K]\Zr3c2oaca2o զoJ\_7ihiZ©\ͭk)=הD%X"i4gI dI+fIȰ-Kڱ=KdYҁ%Y҉%Y҅%]Yҍ%r,Β,ybIoaI_cKDQXjKM_[ߜDQф0D~@]!?{WXߝ߯z!?ݭE0j,. ͍cy4v|G u~QsD 6s`+jYSScͭ,,l\,Z2fnJT % &:-tWӺT'@4bG#W4|;[,qo/ I@ߺt6wo$φnoMZ3M頨-Z ; Zi1[ǡi_<?z:<6xg[#uTaUfmoɩoW8v}8uPj9n}#+iL@>edS#\vQTm|NDϟ}1uڃSyu`"H B |3`: Nj@{<4<[#-A wž='o 4Yfk߀:Жc9lps:Re,j%,++%<%8q藙r藘ă#xI |9 |)2DJ(9NI %i$S-%)@gJ)wU1bTŨQ/F_T/fHhJ(~6Č)ܩ %TĨQ'FOU?1~b)'~b+('~b$`J(EI$%)ɦ$ӔBJ))%e\ %)AI9%P/F_U1b5࿂8UqTũS/N_8u}ũ+N]_qSW|%)~M)I 3'>P5_J uWRB]cqwJ~ z#{apc ^`7P-m{pc ^Ha7->{0[ nҳD4"f?D$aqη}+}c4O##¨4V?.~L/_~Q~n_-fDh,|qϖ{X}o>y/}?y(|=XNtuʡi>N\ެ!s2`#҂Cb hYx ouMꔉ-3AWu#֦FO51 mBp;!a9`ek5 (5lNZN9 qwoVZY'+]-fPqZr#༈FE?A/8N߆ǭZg32g2j] GY 9 Zwb|6~.~&b7Jb)OJQrJ(ɦ$ӔSR@I%Ŕ\˔\:%7()ܣ!%(yJ3J^RRI]=bTŨQ/F_U1ʵrbό JS2eJ(n 1=֮~V(7.Q£:?bΏu~Ĩ#F1QGl%)D'%[(d%)K u~(ΏX<%;J u~Ē)9F JR)IU1bTŨQ/F_8UqTũS/N_8UqTũS/N_\~ĩC| %!>~ĩ4qkJlj(YH%xkm[-vTU]YfQZffkdDB}&NVL <`PC7p t( _c1OMUI>[ߟA˺4zXzOx(ԻY/M<8ֵܑnPJ+m#ʥi7Tγ̬k nN5B?q l{os#StO#r}>"AOH;jP$?w_5E ٺ'΃mBmAz{ xX~cZ{n=,q[Ncn+74m?}J_?[`8l*1TM}֒nD~?;bl#{IcѺ4"ߤlgglD^HFO#ҷil]cgil6^co@Dx_Fjww?~M*c]&PX{+O4:}_ϞWb<`ENm)>6^fӏ {=m)>6NE"LB+vKZ*̎G ;ʧKΏ|{~֧W->?{75x׻Nk,9?ԙ[OR ]^%~v i8uol_m =6tnP窡{g@;s9{zDx,6n[R7oՒe7ҊSug$YקԭE hAWǩy%"H/ҋQz_1^ӁZ۞kmgWaz'+'r,/]S롩/F]7p|{?oԵ7|S[}8uޛ|C8u|>'qqԘе.HN"Ue%_7 FΩaeE;tڦ8Tb|08Z({I[+][5 `}V]i5(WA"q́l8*Y,Xbƒkۉjiiac|spRӿv+|%-O݃9\Tb_6p(.nK\Ogi):^(fX/; gkWN5ڂoX7tA.uVn TJJJTT[֝0ΝФP_8s%-]ݔBgg-)Z^[nrvxbzV1̚?BwFs :V Tvh3GoDdffff染{~6_mO??Ǐ-`n$44^_]~?~`m"];E/}L'wo߿g-VHD"S!8?bQNi,-l.^>5i{Ϟǿz=iߍE˓E˓9 ݃ɢu*ϣ%G#9I.<^&=z\0R߬5{ZN?({9^~Dwsr<,?^ZvSZI{`Ne浿6fF/E/rf! 5eau<w%n4wrzA*4ҹNҤa}%R yEwO^WM!~z<]z_l3duf Zeuq_U͑)INH⷇J4pmGIs ֿO3H|,٧p}Y?twQ,bpݖ\&o[^.Ǵ\8, ^BWoi7쏇{Q7?ljGސ&;]R- xvf Nj~IudSGk m_\zMyz/>=gYna.Sv j,1yEIHE;őf>0췼5{NG?Vi=^Yp ;73Tjim7^k邳;y_؉x\Gr6¥#zi~]۟')x]]+';M%ۛ즷]^W:l*T-GždFV`GyM^ Q3]w"_n#unDugY*4LY::e/- Nž˜ҡH7 Qe=ޏ6s|`_]]okT_ږ%kc_v,wkc:`_j& )*mTmu6IS01ڬ 95N euMۍ=/ RAr[2׏n0iCCAW.| PW=ƆcC`lh064 Ɔ&cCdlh264 MƆ&cCblh16Z -ƆcCblh+ #~MΪv;΢-H I3:sX%"ռڶ>ZN/eo'*yq6)ޟ x x $prP.@P7 oJ0χas_gp1i6:xL@x,gxFF#`svYzYmaYɰl˲+ CkGgAŷG徢 Qi㙳)WS~9+]`/h&\oFxsqga<zD,xYXdzӛ \Vy0"E>12Í~:[^{Eۏhu:iaM\&gDl ;_󣺖"ٚޱGЏZO̮]ZO5ޖl^!+y=]{yR|'/nڝ <~:^- p%O.{*:޶|R"{ބ ){O!|>#[ x}^;e+#Ϣ˥6&;CrwQ^< ճv$i:֞8ů97'{ o*^ hњ߁o!זaCA"`J$4UIZ f鵁^:+=L7k0@A:Mgx\[xeWdWe ^Sy]Y6&IveXn=c„0a~L˰zZgX`oLߎ`u<|2, 8>8@=-L0޳^l؋^-{Fg2[œG4&M`^< 'A\;vysYu9,gXav3Mxl#zqW :88QGG'uq>ONdqoq21s [j ? yAzuiv 4jg*{1ٍ"^w>oZ7BO0Ed7GidЧC 䟟R_` [.h. 悪*h. 悪*h. 'jkjkjkjkjkjkjkjkjkkkkkkkkkkkkkkkkkkkkkBs0I ' *qޭ] ︥Fk<< *iSe]E?9W ,:}k^y!nS醟'M:HNӶB*8z(+9bhm>ri[2q6RkH &??%*>WԛϟTYщ~ؿ~<=3G $wt@; l>uCZ_¶ @6/ۃtI >ص@A@[`>ta /9z |» KvizV[G ]gD3NבlKeaכ$w!zk:!ܥ'Gk:]낗ЎGǩkl*< 8a5,Z]`kBKƛʲY]i9t|TipzÉ Oz9kO}HOsS(qD}>@P(t-8RYZ; 0/kmigUߠW>o[7Iۻ^Q%6h {p N"( 9`IFEڬ>診Vm$^70)cx"(6B~}vY^FXɧ&c-MCvux$d|QDEj>o얲 #XHK~D2OeQ$n(Crvn}"(4/^*^w ~;8lSDpĻػ.gTn{trM@"(MA#_Cy.Ռ݃[p;s/8ɴ6ExH+5 E⦋m!M$>+,8}EDEG?d*_ <=V\h;.ؿC2wc'=C2ujsHĞREfQ($ o*FDEM>C!8{!/,5JB2aU HVxh1mV_A2eMSa(:hmi~UIK% EQ?oX?O_w9B<K b/L5J>׿)A2vن[JmL}SY$n578{JH$$epJj."suV}vCa=O}rb=rx2! f|;H #qx/x$\9ٮ_ŐL;g(IۊO,O(>B<>` IA: k?>HyEXzrE:1$i|X5ɃGFwB2Xu0Oh.G<@2A;(f=VErz|."(G8$ܮqg~lϱ*!^w됌s}˨H+!"A v\V6D2)# y(P=?߆?8[UH,,JpMs{===޴oYHle]o$)?;xE2nˣqWϑ<0%ĭESNDҤС gEQg5@|qоÿx=8_?Q =jvxEbl;[#e<}ANc!auX0Ley!kç vQ"2+,Z#rZxai?e`y 2ءYsN]/Uh37y脌᚝ DyGڟGrg.^Q#3Q=~ K~M,X qh'yaAn,ۊdpa7ž 1T>ɰ{#kNyUb<*Ϻӽ6"1,y4o̻0c,$w/[vYHF5ۜ =3%oe>=hݖ("oYa.k'2q6nO e?B ?:< A;?fQz<`gk$G m/m/؞7 &^ҧ1+p4=382_Qx#?vj7s/[3 MHde ɹHfYyxW =dhKwD 6 _qҊ:H}T4Uk'Hġ_fJuE3$w7&vs6Qfa;Q$ʍmAR}Da!"WіG0K0p|lW y1ٰcE<}M#?mQVs*6d`t~m$f%qg#;҃mH:7%'̚%\D3qSD*a?!>ՠ(sU'4/~ҡBoq9-![3j{Y3򩽃Bgju{Elϝ Jg f>`g8 lqc/o9J1,RCW^H<5O &UHC3ns$1`Lvl!ޢxɰX;3z 鿗@͚"]} JedC\eyJcQ(tDRڋI@\8C=hh72ob#vK1{[ ĐܩH ;n{d7 4&dqRH͚6}+>nC2X݋0i W@n#&>JЂL4xۂ.c6_yx:$[[ OM*ڠH[dXx ]6UɌcg/w,'q%,߿ Qz;fl7T%\Uh`GKm=5 I>iGJɝ#{(7v0H`R@Msݏ쾢W ;E2;9t!CLo݋f@ EK Q,C8Sf`*^??sA*ؠPwH;HyzQfLH8+晏xYHvOs4F6 0h.zDʋOZ[Lft9Ͽt/>xП1zp wȯ3AyW8|q:>|ۮ$"I_oJyxvIM̹sP#9Cr'g]uhKʹc.dwf7yq޺Huz8SMՐ V̓OѼi5$C.fֱZ *N4g;"Qz$rN{? Y~ _`:hCq8. a~n^S+c=hi5$}zK[QI.]|xYh$ ;!/+.z4;[f阚HLQng! Zdhr]8ɠÕ tGf}hzjG%4?jkuz~M?yQVG/$C߬ꬻ /j"Ql+dLuY;,N  1$/G ,֗_f<>'C?WǁzX*:?8.k.]]nyI]3?>ܱʽHv`ϝ MVEJlЬvTs9ҽ{yp$BsFE>}z"^9ќj1.=&=мnɠ\E3{p#4Kǐ 빸 (嫞ň!i?"5fta6B?Ϡ48_0?NdGM,A]ɪ\zo+c& |dǫfuQHn?yG/h#LقDׂz>f‰b$de,*w,HyfRh.uD2]ĭQsМ}Ig4m]ܬz.LH4+c& ݡ&w와杼cKlA(3C BR&P:fF7y?07f<; ԓB0$Hy89;ָ2p'~mb{r>Hn-_G%h#?WHnZ9#q{iHJx/͉.̵C/^mz"4JGU` ˳W#S;\)4S]K X'B:yɟ71aHF.6y{HJl$:LTVHo2^I%'6:J@?_a 8oOU0=z/3^I:8M؞cC|-0_ay{A7cLĶ\z>\3LS>}T%;9 sѮfLhkuVjN;"0Go4nZGF o.eM D3:4lz ;F"Y,m67ɀ{ˍSAxVUhZuE͘➯ T|\Wt>o"QU:6H(<_%H'|{<  B2OA{+s1s/y2olc{a~<bS*HlsVGgcei$tf᷎g"飳U͋m@r[tֻXژgǯ{wvi$~:df؉yPوHwJ_)vF6Yl0$w6Kꬅ1}4ގkd@;r4.qS&#qߪf(['uw I՜,<2C#1*_A?u$?`;ES-c)l|?;)dyO |j)+ $%~ =X`E$'B|7|'z2X=IDa蚴sHniZv~4}ǺnE[Eop@=>s!Z`43F.;0jMڭ5Gsxɒu'm>jqh군_}C_N/SCfHOxk]yfU`q'hV"4EfbyQ=7\˃42o*CA~Q$*-ռT[=fݾ_E~ >ʠ~ >vqc.?%+Ϲ KiFhxtɄɚئ荒2tTzW ^"w#c&Hn+ DsTH~2[f8l3IN׾h枎Hnk}>=CsEѼ]Z*5#IEҷU̴E^W}wߜsk 9{jfUN5Shh۳c;:fF9ZМh.~zi4i&Dyڞ>6"$_I_eFO8-|,N>Ma @~p03Wa; ?^?9W(Vz^.yS]r+czo0۴ΒmǰE $=ڎ f+ܬiT4fHzsy2[ii{LD3؁p!>MP wy}Er/5A3^`"nש|9ޡ 8 OcJb+ybg$}gKoǠzm4)c_5Boư`4מ7z d6ZfџZHw-y41:ݪP$*lARbDU' ixn%Ou\ϱ"1Ͽyk4}z6u#o3~?+lÍ JM!B/6*Xuƿ#śku遯м}x7HzM=m^h5ʛ"%mK\5[$NfdH:HnmV]Qʰ{w@TnGhkl$?p`I4w%j7٣ӧhx>M$wxe%XEWvv}yݫ"է h~ӯR$$t́ee2\bR4bOC"?d+DyG+_ъp@!7=0qtb姉hFj?# k-_ڏd3bע=8 o!cp dV>i< ⡿;̲ Yx l]e/x~FB{.V*s>A,Pv}n: NVX|B2xN FHn2_ɰAI!k)HܑUɌI?qFh H^J~xdA盐mW<]'4+|MB2/~UQĒeҽdr GH2{P\jrc["_<, =>":4K$$Oդɥ,MǦ O}HRwۇ-ԝJ/ﺦ"t&g\+oa3$=o81+͸a/{o![cz#\<|egsJhV0m$S@|2 lo&z'L!1~@>Q =k.a ,^c"-"sQYF _ u>$Ceedn"߇}B`ݗ oF*$r JjO㺡yuÀ4$V_^dr"iڰՕhq&/z=Mt{~]g#6wc"1+ƗE>h>p E"ȝH%eHf!ίSi_Zd&薏+͓N i Ekuטn<;w@S(O@ @e&4π3$w{q4CA>Q2tWRA؄8~8~zxl\8[47 ?CsGϩvHr4<<:JF%7rZC4]Eb9٦CS7fygoSś9G4=! EDCqL+W4on]Ź"V4`$]پArC1K'=Br'c9eS$oLBR7Ȣ=ܫӇ^LERO|G)3$1&N$+Yr_6c $GHXlwwPl̿pׁ}A?^ zI3K#Zۑ2C8?k:LA1h4m:Hp㚡]8Pv&N z>AmVHU- yVeHNl24_sn"9> 42o,w^TbUv͇f WdYtIfjH$+).߭W8H =?4 d>Br$՚#9^mk˖hGn8踣ݶDEv"i,eA'4?Crnoŷh}֜,B3rc=-$Mv1nK vAGC/44kY 9Q͂ho]Dxk4|G="VTl,4;ƴDgn:e j.ŗ&I Vئ!v+US)Hzb¹"$=P$cF2#7w>dB1mtN 'mK6<)rj'۴?mKmJkH?ܿE,4Hi8yy 馪Qj%3ArÌGǑ ];07?$Y'>\A2:uAY4{nლqHSk:C~(Hm=n늙?O4|dKK*cJIM(ܥ-?G2SsC럸jWiHj м8_;EUmP8S&mWG#G[]f ($.e/cVG˔]=X"Si47k|-GfX 7U2.NHm=ܘu%%`FϛRÚ۽> EtWM<3Ȼ=Q$N%A$S/kuEHx`-P$R*T- @2-,É- (op~+q{Aw90$y^Wld򯗋\Q$6*#8~E,nJ^oѾR5|C[ǷC?"ӓپHszEדپHk"(ҋ߯'}ՋH/דپHgEQ֓پHgEQГپHԋH_ғپHҋHoԓپHo?mx3: :0>X b 8/ %5n?z O`-LX!\@b6~`ٛw s2^(fxhr؞r-f׼xqt*Un0{ґ =^dQMeDxyő:,(e%-^3S_02|}ڒa E V S0cY]w.u9K %y j}0yf>nҭ;} %p֐D鳔m 1+n8A4\/ĦIk #wn'$q1ɉn;XqsyMzfx(pӍ!29 wztiSĎ`ݟ0ϐ5eefI t\ϑ xƜ/sۀ/YA?I09p,hDPdPC( t8SA_Ӽ ҃㯙ag~9(o4 #D; /oݸacBIc'nf4@Ty|Nޖ0mݕyv0Lo~#)'lf{uY_|0i܇ uNY/0,ljeIHwfxa`XdMlκm+==حan[4U3 ?y\99[,m7(2}aSH"*wAb)3u\$BIrWݻ),~9d7H"i܊Hf^[ JDH89 Yu=Xn2{474n<WLhN3 = x@Q A@R2@GI,a=c//vv#8^oA3ci>Kmޠbn8"93kzegV>@;زS6ʣޕbV7+ z$Ȃmčw[;)ma;uEt$$5WxA]*0I0^u͝RH"ZRݓ&%l{Gj-8~>c+vWeڣ8]δ0[I+2Q'18{}%/fe!8]-ތaUɞ{fY0ys^axjfpON 1c7E0U;KzBR~uȝӶ II51z#^E_gL <0hiiAb%; R~ psI{Pіp(y  Dv#CA8G:̵g^|$xn}\Fs!ou B _ژ_{Igsv~tlw >`|G,ߨ;T $V29U!:Y)\dxbꁹ}WIY3!3 G}ukR t_<$o;$O1]4Utyh4$F.:dwIHv!1r٩ z.VAbcݳT|סqTMcbHW N Ĉɭ}$ɂCS 1bxWBDG:ZAb mkAz?- #FpMi7ygxun&Yp6w`xԥA{ZOطop|V4Ӿp߫7^ I$88=3% $5e@9#?=ǎ+-)0V;"{DwH걶_prGn~} V>.y@Ǐ.z<>$l$$qG!b#!=X- 7n5 /a$hrnp* =19It{8QgLK$?Y_4n2Gە-t#pAq7;5dj_On'Y"_qE_mA t8Aӗ Epɲ0#[Ϲ N 5.veb3dZs1.$J|TYl+d/X׉Ur0gLnΦ$QwNsEMLa6+^{}'~rշajOV] $FGߺ+y$ֹCYyC*ş >)IJ%B꽍\zaVSHPw$6jxvꝐDGoب/hI:8$f|o/! M*6ߊƏDHB#83$uUN}S=+AbZ/Zԫe-j@b} HBI} C$Hbhɷ =X- 78_[B3ý57G3%M5G'4AH?#ƕA$-\ D~!q_M)zƳ tqtA?8B\`:/Dc fٚ%3T^]{-S}ILc[N`0swf'6{Б$n Yoh1a / I!4 n+Tsf:tym3HShФCR~wcet*?Cᗣ:C|v,/$//$}Nǁȃ_İ]gJCb#^8P;z)HLEo)f7{ׅTc?aNذ I(;OSHLWio!~o |p53Ʊ5< -kH: zו'twq nqtUgeo9AofvAB#qŇZ靸6f#c}UR1jmJ4PnFָg ǫn_9ԭ92d8{"G=+ryoPIs! _|Ƙ#5H.w齆a~GaUyK2Kxd^$JTL@rWCba(Лz~{(Qn&QBH8rݬ:Áޭ<(ZP$6șg䩻w vӔ3'jVC" '[@bׇ$zy-s~7f|c)'EtNwsZ#td:Gh~) eִUA e\9 9n,' ;I%m=8:9ȃO$t>#inP^2q i(׊ѳ1;,ve[g.]f4c/C<̙癹s̙[$s)H%-#<5䣝]OL\%N&8`3L Lq8Xכ T=0JELO׬|XLxfY6aJ_}kղ=30l~-t' ~AA|^[D Hڞ0-ݡ40+®Sǜvv|0mWς0"9ɘ0{k#wYo J ϽV1RA6ūrGB8;_L$x_ qH?*[\L1E0Z+R~׋G]m_ܚgNQACL?qVF¸})^ޘpύtB q@2S8LZ0fp(#<{K6GLuN葨b6Ju!ˍggӉ ;)h\' \$F/]SL| wG<؇^ c|T|Lwzo S'7h:,o+|D!& =,0uͣN`SwlM1hIݘ055jZ_cƕ(p㛷wL)b[wli  .=+l?D:;שYaڜ+ѫ_kt\KhglG;8sԫX[R9tn+.hš;4{:)C-ܾb OzاW*=g5uM[S[#UDs!Gϧ?q&m&'ê&5C/1iˢ77iIM|c@ /nԨJ8g'N68LzIRUWLjEÇMI˜q]=_b qZq=I #8ޣ@LlkAhkLxq9pGJ GYMM|~2ܔBL|a7LjԎĤ-Ycr0|{*Ǻ%D'YbibK^s#{+ڳqxԠ"M;ڧʪvɟ]Q7NM4~ǣvLnڭpΧ:3mA}#vDMWn>|1m^IGߢv/x,)јEPڭ ^5й\텄 mnzD8lɲ] | قSּxb|Z_,ńx{b40aw?x߽I[7hrN …}ms2ة&mc;aRr BhmRN8} . vyp"*[Lc3NلIM0cËaҘ=z,"Fc]Y"/+e¿;%唗t̐sV;ݴцG387SPm}'Y8G6_vUo‡J/W5,&zyb}TP\i0zL->롔g FNm~8J د9\/ftt¾y-~Mݳk&vv_/`SZnF8-;o1ؘJh_,oK>@8Yfm.Σ&`vS&y%Ty?)N!I{k!49z\3{ 1i+;ǔaR?9~n(&mFp1/&5wķݾ`}.iw&Eя-]䱮G,NGD'GjĹ /ϖuc>9ȧᛃmQy&䏉 F;9TVfi/M)iP;c8h uk*')Ё*vE"zhGZKYw0ѕi'No(cRó6o(}#w\-BˮnG g?uc Lڢoh&WCLJe°m1i#aոcպsZ4J>19.FS֝ä{51B8#եW'&t1L'r%L6&NP:_!X̒фu1An0(ރ7C+0qm+vb(x _lm5wsBm`]f)J(%0~gEcWjwGקDLtxCшybK:eEva %1Ai'քL͹ 2*",xUyB# k_.[)@wHe|im1ṍ_ .SȹC혡s[%$U"+o1J&LfrL譽rKL֑:hLy]U"”V 8yY-ߧ / bmc [_~ '{ SYI;rpń+'?~M.k}+揮?,g2nHL4b:"* #}oE,4_L|sWgahY Ô+_~8X|&\٤h=(FJ`NDToQ9ji+g$S  P 7|R4!aa#S ^J6ޛ0Ƹ0kٰƝ;PrMTݨ)‚V,ń:=X,[ܪ!& ]I&ɍ0vwƽb@y <(_?f_AqVY> ڸ$0=%3^Y"2{HKX{%N(Q?HGC5H< 3VI7޺(K2%w:"uyGگ!#{/ar7/{x71baVύNe*b'F~pbL~n)sߤaJ%}&<Խsi )haIti\C1Ac+0aVYNaqZgWĄe-f%pX:ma,9&8{VL&%@){x=c`D$+Masz6a|6{1AǷƄYRvWa/oO1u#̴]/Bx&b!&8Q[G~J怰xm;a‚Sn# mM&09ÇA|Nq&L Il Wt%LV6.IwuGP^0A G>S0a ڿm'Lk/YPg,& =zlBxp0ATw-1!z/{&谣]1I"K/2ho>6ʰg&~Y} 1` ;c.oOƄ!_gm Z rKfOV y5IqI8 #|6&hm@BXZP>%&L {cIaw76˖„g7Nz}Ǿ$)#bQG1@bTD\_y ?_|z?\neIiD]FF|+-D =#/gA~wdHF# _w8=V'о[-Tm T"Qoñ!ʼnEgzfr aڌX10*kqܠ| ƈqAo#\GWGmp/X\1}Z;pҽ˧IٵIKw/ibT.Fhqo=(Xxbo:\t;Pz)R/1HX{}aV.[κ GgTVZ=~_\͎a % /2AvN,ܯK3+sXܼ>vG`>-;^Z2@W dA/A]p;X_d0>1#S* N2|`T1sQE̅H1,|#{}qvٹ䇈˖JuīYRDTJFS<b#[.C?uEaT/. G;FŠ}lEʼnb;K}&?UaXC's.ck|7}'b qBO>Hi?D߇o_#wSCw_>>1?숋灂TٙV{u#G3^g~i1u'pfeOA,{Cm "q/1]p6%9+7[oEȅÎ a^Y0s |UB`yQu9ɭȌon9l2kۢBxrF`C.3Ё7.͝ "so-OM󳃴@brc2"ڞ1FЫo ׎) ݢ(-)\0!Nm ᧞Jiky,Ï3LA}Aʅ=H˜ap)>HΔCsb0D`Ѹ,?%Dƿ")_bJ-<1sF>HsΟ ?GlʿV.@Ly;KEzQ=3GzdlǸ<_~}5'i*wFѣM_s)䷱Hqd'I{i4ݹr@0rft+*̅6~5 2A]&H /wvm?QCdbOXtYc4~+J_n)tuϡuk ةpEýτVI߯1/]ce JЂ}VYG g#<|ä%g@1 3 IV41otx /0i1. fѦˬ3mMSV,k{eh:PL[rgUsEn/x#2-},a,sG߀ؙaBt^ct^ã0| C`p3p=vdj@edȌS0te:2ڙ>l5 sBTsLD1NyxF;N2n̤3o]" D'LROx ΜGdȗ/j7v2SSS#,d> q[|A1zʇOQ?,Bo5tsW%LY< U'm|xvT:p pؿ/׹AC7"i10Wqt Ѽ2;x6]bkrչbp^:w oa\}w`r<݊ʍ0=[ MNV#^_N#]/7ֶ?1/u.|D=7j~ xx/@ [[W&LX3;_i>ڨ h,#EvM v<"sK!c|@7%zLJ Cm1giJٻ? ΋  97T$;1Sz\FƐ{՛bإV<[%I]Ś_ ߫x\S'6"y*>'~!g{J,W:|?W {I _!ӣ ,y>f4m]3p &Ea 1xze(r wXa΄!ܸoawl xw&.}^h9M%G}3{zNE5=@K 6iNLWn] 3n' }Ԝ翵WF%{6ykFK&6p&}"W$z ZL4?M2?.χS|.k\JT>_;m0:S `Ȗ$C`\cQ|c7 y5͑_l NHk(͗6yn7 mhl-~wFl3oi ,l˖6 'KGnI\jAA1z~*iGs&&=Y?S~Co;1}*"9KL6\׭bL~'fEYh&Ob}cF^ƫz=8b-yvSz\&=W2_pԒ֌|Y^$a͸ c&98qC;9xoUT$1YG 9tw;X93* px\Ws@7^?q+_<iu@lUA΂QyWŒɧG~wy)~_P h%L~[XKzmU!J)J1NI5@uM \\/vMF#f߁9X ZX/$?X{L3nJ/5UFп޻.WOh:kyV=ӽ{cKO߯/{}@Hdz޳yd-n]ۃ";~ʒs̃jC{2犸J D#WX3Fl) `/ȏEQt=hz??zg:O[1(P 4җ2h|35GNʥ+pGb!Bo&2^y)3FfYF2T9z|do9*w  y,@3G_RK Z$f͌_)DhWx3(J}/-8!RB٥jEe,еPd tv)\I(+&%.cl O&G۩雅5vKHL`#O:6ܠv*;Cꋇgtn'cR:o?Ro\M+6zO}=g+/ZF08y #꿽[ֽgٵ2{!~$X Vq{Xdzr)F71mD5Bu8<)FsK>Ke-EUK:л#y"z9H2_8 E Ft`~Zcȋ3d'uSyn1j#1s+E&D0N0wTX|Kt֟YE〿|g8FE!_x}fL=,z"?8(dڍGS6d/t859xH]_iikew+>6#M;H}7hYg瓧>n&M|0:l= cOݔCu{T )k۟ڏ5l~/7ïr׫f [vP>B&s Y4qMP.Ow*dn[p{Xdz "Dz[2q|)H-|ɞU:r˧ N|{><6\b=-aGX`;)g-;Nu=S\??2G e#?(Yg&06fRR ,?*z6,TڬV!4߼I^pѧ ΎnM~#zL|d >D9u}as qkvc%g37ÒVH^Xt<ӤŌ=?L /y.x|,S/8b 4 ֟:mix֣kR0]x0^' mf4m͘ 3rNIc$?'G"S<ͼ0HmAƁX<.f<1ҖH^"&l eqsC!|H?;?&-{ғu'|T}Jqy_8!2hϞXo`{h ۆ5CDi/DYGwY d iΙ.7ZF61.1WWׂEOPweкl9S$KH&_cfn2va(z_/jp4d`?P!ӗ0},uHX67f ̰g`-8s'\l9u FaN/9MZZnK**w~܎<A{xrV\_k5鯈gPkG\Oa{@@x~o=yAh0 rAV1SxbC.ڧnXˮyG`xȊ {^lMYG ? Mc8s)f v&]ic$_<r}6ho2^.yg5>E/z==2Kܖ1TLtZ:m+o/y{~9^:.gξR8zSζڵqAn2:-w\dWdl엮J޷^ ~΃ .*YZ0AjOm4qfgGYT3>o}a)s4+O~rhhD>C2N拓P~28J0I ڢ3RuVkwxP1* U^1Ӷxz$kW`Ϛq%g`fW`TYr.m; g,xjAͿ\}溿Gce'j*A{zxqT=|ҁ1vp O+c$z{?̎L;)vm讥{͎VER^.wF5AyT맗K8oQ2S<׮£vn޷c5}ڷ%:9=KQ+˶X_J4^zr^]5t̃kjRU{t>g9KGISZnDڜ,Gy7֡]szk⵩u VTA)͛fSWSS\.Wl s|U,mSq7rR=[]J*Оi}Cʋ[^ОM?|Mqfxi(p |]li^þg}~>(QA_@׶Rl5^M>ZmE[u*glS%Q }p:,i@K{c^OkxQ^3 yȁ Tk}N 3x^NlzJ2&s{ChH C>Ev%/=nnѴ;ݮhsBnOkak9>LLnz/?9ы7T4$?:` QY۴޴Ɂ^')O Ww LPܐnRRÉq,QgƧCu*\gw,MoD2Dq\;NwNܠ ;4i7#]6CKzZۊ)'uzi2׋>teL~!9;LW{Pk*ě?K<:ѯ*ӎKw>k!9]JPG7G!K)Y-iT؞Ô?Gl-c,xEz^їhM0z>@>E{z__<}Y[g؇ZdV Ay,62`~%zV@3Goi<G %ԚIJ@?i(k?ґ dWb<KaN{dYaʳ+>iKf4;}Ҥt$L7|O0;DVǥz ;ȁb!gIΫt%CLkpIyu\X 4xv-ƍ)X2\P?%7v!Ev%CO ,@D'O'3q͑^gчe_Pg1~z}yn?q=uR@zoC }@L]kDr{!˨)3ڀY0ꨅpXp1w['2,9mvo[nOӁEs so9f)ӽ%,97nm]a0W:"u)̟1ᎎM^e7,괪[9l*c$zw֓،Fz<2Grs":P\&.X8y=Nu?!^|8, ?DG($G邺%c>J?ΐ@ >>_`+p.xP(!}A|ה;W¯D,A_Œ6j hew?Ot$j1c.py6ٻ~ ‡s%E砗%)U]4ai/|h So>ROGЉy4&{х q:#dzb>}:l/W2s\k]!y/n'"=y.!"H.$H}XnXpEO|^0\lxt7L(Y1H>R(KG7l\h:/͜k dCO#pm}a!04=Wz38TִNWְ";HY__o'QY{$O=|/#8%껏&~I㋓HEf}rYg}=\X>ٸ) ci3xJӹ# -\~ IBKZ^g6t3 <"~0LPx[ ^3q½PX'Ri{pѭwAFp_?<A?k(]uq~q:J/ Qy/+_,&3z\ƈsQ0Sjs2u$_/ѷy=. Gq %4W]23F5p"8кQ-ABߥ;ԉ+]E2><A%wq{NVXuz}zdTW<ָh"Ax(cƀ+L ȴlNM=ky ˆxԶܤcpQ ͜_8^hUZH: gق~u/%eD/y d͒$<~Zz2!ʲ1[(` {PNY0qhȖνE#z v ͜oނ nx d< O=liw("$ ;?mc$z^Gz}ƱWN :kXYA9r•;zt)xL/HtZQy.'?d?ecO\YRMp^o7_~^\`ˀmցns67sx),jQ]1 ƛ\ 7|A zޯ_<A%߯$c\6[5D]2~g) ]v6Sy^|Lɸ%z!wʴeC$,LсC[+tvl:hWޔؖW9~([:FЦxoq2M}[~]D^v (L;>:uuB\%/]Рm=;cYslût\ ؐެa/X{ykW]J5[ל*]37+t g;{NL+sqHDt|w~A@}LƉπgKr4m36@fx'e 8] N)]\ I]yu>t?X3}b_ <A%OOpa9O!=Uftac,h?!ϓ·*W\Gg=ƁJ?Pdp9&@U^ :?L\\i7X:*fĂՃaM&%ޫMjqĸҝ =0tXd^?=qO-gOٽn1`tڱӂeN^w kXЕ+y޿Zfdޏ GA|h}6Ggk_+] =b2ODzBʣJtmA;Mfw+GG xEv%zӓy2&8.tӴ•">=K/Je#ڣӅQ)\?&#ۨEuaTdCۖqݱ}Ԉvl`)jԱ_(4kv 1AqSz拲s?Q$~I<YLL~^G 4WiO=mMH3Ҹ,qOx~`<A%OO%]z?xiF/QryzZEӧrڟB=aӮb%ż}P׻4)]?=|Z`<9dU%q>Gs뱮:BYimƃ=/76pk;]y`d7jRȜ4&?՝#F#Y<ؿD?x:ُ@4$1&JWmnO{G+K' I?cfgj#hgO'iOۛtt62vWEyfMKHvvk LS[4:u(aw bvn3_DL:.^sn$P:*?gp >sFUz:/K8C 􄵗M:=WGL3С=Ƹn@o8j>16Sv4=#Ӟz׼-JXćCWDr_eSzQz}/OV*>ny%/S1Im\>.ޡ~=cW彋6rڽws-W9eg%:g9W߶ZлO~ŏ]y:jcO;s|"Rk]WOIaS}S# P>PӶ_HD֡?F<ݣo4FKԗ)~^ Jj{o/n7:H4ǛӍ9Ԏ*gm|N8lKZW.p|v?eOoN:4"u7ͬfS/{JN,K6ƹOy3:~2w]Xt'OFziq r]#Ԗ{F[Q :#R ::BzS×2SB_ vGڐ2dά#t- ?7팸iHO2gjӘTO]s}2z~/00 9|&VUAtN!5|4&>@)UrJȑ:9 GHi#rDljĆFljĆFljĆ:NlĆ:NlĆ:NlhĆAlhĆAlhĆ&IlhĆ&IlhĆ&IlhZĆElhZĆElhZĆ6MlhĆ6MlhĆ6Ml:ĆCl:ĆCl:Ć.KlĆ.KlĆ.mHTVUWjTjVjUjWTV[SZmMښj5jkTV[SZmMښZ5jkjԪU[SVmMښZ5jkԫW[S^mMښz5jk4iT[ӨQmMښF5jk4iT[ӬYmMښf5jk4iV[ӬYmMI4Ufbe粳V>T>T>Ԩ>Ԭ>Ԫ>Ԯ>ԩ>ĎM8VqVXƱFcZ5k8aW]vjUaW]vjUaW]vkUaW]vkUaW]vk%s asqqQNխڲ3;Yd5N֪;Y:ܮJoVS;]5뮥ZݵTjuRZ]Kk^w-뮥zݵTuRZ]KkQw-5ꮥFݵԨuRh]Qwu4NJN5tDZ)R4khJѮS+?j{SjyVC;j|VZ-j^gZ>Y|Vz-k^gZ>kY|֨F-5jyQCZjPSö1ln}vZJ)տR{J)f;7[z}KR~Ծb[k!ﵐZH{-R^ ԿBk!ﵐZH{-R^ 4Bk!ﵐZH{-F^#h|4u4hn)ss7RyͣǮQ W^3qs+G7 l۸eo(4$egMƔ%T zy[L G^i5._?;i4}(yvAY^Wy"=5}(X%4`(k&Wsx9aP1Zpy]PpJPf0`P6Ga([ԅ?.(\ըpP6=Aٔ992x[R@DoTAi񉻅~ֳٿ^ș "A7UlJ @/2]A@VƠLcLq{V2*2U!Ilڣznl!ZBN[{kP6 llA@Suɚisڂ&ދ9f:hӞd\<I{doveR>ULʭrʮ^7ky|0=5Sz3 Δ|<(n뗙e **[9ݾ AYC`v5x1yoz ?oNHci@37!m-RodWG3 ?qpb+W1a Tt[>(/8kW08P cՊ!¨"‘GMՅQC5QKje0F=aq0W}DfApa!h(#q018V xa F8Q' 0NFa4)8U ta4XC,a-sq0FsaFKaFkaƪw?0.Eh/jGatƪ\U;݅q0.e¸\WJa!Uq0FOa¸A7 c~^q0nFoa&UEFa)XpU~s0VG >a_ˬ/ +.OTwՀC5tvp_'%nHvs_.dpQ j%TiUi7Fd'NYZ{ވ}UvAFOVQPY[áF9...ʌj`]Y(׮Uo?X1|UE 5[ kF"FcV[l wU_EιZ|. ?iQSi=^^Uy'5Du'V[ PW[y~iVkP_mzrBb߲u]?//ƚ߲7?O~XuRܿ`7ٳg_X)_kkk_S>EGuwW7<Ы*PpZIc2 UU߸ uk`O5oTZ]]3N?VYէ _}!ǩy K;M?@ jg~ѥz~鳯57a^?]R}2Ҥ +Cbbt*rxvbWWy$89/Gn!SS֊;qO@J>k]j }B_^ //4ߎ:=ʋjުm6@\>Ţ6%tPZUNn/qxy|D(= fg'}R>ۚ'd$1߈ӟG~|R"^&an˪b"n+QE6ac%:O}(Odo_U|҇_ FEQX.ua`Q Aq5zDroxΈvx2`]TolJ"So'@d#iQL⪗1 ;ww*&?9#^0|  }QsGV2 fـ>\1{\R!(-gOt;PVۨ D4QS`y7(Ӊ)Ӄѓ?tcr۟?/Ejs\^m,:-UW6edg~T]Em+V_xd?- <'(A' 4++>hx4/;jUF>C;3t@y /hnXQ@xyOW5c z8iv~LlL:7GݕLb.v9UUZm4DE}MnCFj1z֔yڷyZxPsPO{%PzJ!J L^uۃsI`4 Z` ʇ_`-rGR!gàOc._xQn:)5@=]So_ pIj@g#3,?sG=|Q΄$rUFCFZ%c<g/>~щ;*ɏwz#/Q>R{Q:ͭshȊZո  a݇)G)k`Ȇ ̪ =\.JG~ g7ܐw^Q*Ye59btkH55zeLeRx볹JC^?WOE,?'{[+})/*; 8?N'"ӷ~yWcɗpych彫"VnUO=*.rC_>*02#pIzɯ0i k|I;3bbdu$"|?]N}v#yhwzv!y>mkl>vz}->?گO6]\NgKVE?k>yڡ*q;\$sXgl9Y~=NPr'X+RÄh!4t`6,S9嘱-%cDA8-?9tpp\|Xgl9Y~}r=ݕ_~V5z#؏~},0[})P1~lՎZW9K88(2+_jr~mmF6zƿX"ECjHD_ewo&zҕ}/#b6?X}AyYk`V_Tr]y|GNu;DϤ5+TEv:c\<}Go"nq\rsr=sX~rLx"nG\.=SoXBM3ׇ %)<ퟁ@\iGx9zc}Τ\/M9rfϏӉ4s&맣>gg_c?rĆXyD@+J'1uCPkY}kwrT*h5uXE^c1|}xW}:5}h,TQ֪ӿCA_yk"XU?VU$c/Q$c\dLKcz\gK7߽ w7VFYd?5ҫ}!Ӱ?isTƁž|h,6VD<@vnn6փXػ ,\k T`\X_Se¶$e,뺐.v璓zYǯb隻} =b#Vl̊؄X)+6c؂[<+b֬؆۲b;Vlϊ ؁;b'VTdά؅b7VTb؃{b/V͊}X/+*G33>v~QdOwy_-ozI},W;{wҨ4+8Lw7`cM3@G`{IiiQ+]PQ~8OGc 4?{gOovq)+?>?F__y\;st/~id~|qzt~?{_7hsj;d+]?Ҿn?i||}c?'y?g?&b_,:7@O }[% zdmd^B6%k;씊 NdHv2dm'J1ck;bO;:KE'd񘻩Eվ,,9K]qǵ2Lu+kakl^U"}Zz@i>Eqe98 afex/tests/testthat/_snaps/0000755000176200001440000000000014415301006015454 5ustar liggesusersafex/tests/testthat/_snaps/afex_plot-bugs/0000755000176200001440000000000014604567636020422 5ustar liggesusersafex/tests/testthat/_snaps/afex_plot-bugs/afex-plot-binomial-glm-with-factor-2.svg0000644000176200001440000004417114415256307027770 0ustar liggesusers 0.00 0.25 0.50 0.75 1.00 a b c dose mortality afex_plot binomial glm with factor 2 afex/tests/testthat/_snaps/afex_plot-bugs/afex-plot-lmm-type-2.svg0000644000176200001440000001656014604566727024753 0ustar liggesusers 50 60 70 A B C Machine score afex_plot lmm, type = 2 afex/tests/testthat/_snaps/afex_plot-bugs/afex-plot-mermod-objects-with-missing-data.svg0000644000176200001440000001660314604566731031302 0ustar liggesusers 50 60 70 A B C Machine score afex_plot merMod objects with missing data afex/tests/testthat/_snaps/afex_plot-bugs/afex-plot-binomial-glm-with-factor.svg0000644000176200001440000004416714415256306027635 0ustar liggesusers 0.00 0.25 0.50 0.75 1.00 a b c dose mortality afex_plot binomial glm with factor afex/tests/testthat/_snaps/afex_plot-bugs/afex-plot-dv-y-works.svg0000644000176200001440000001655714604566730025072 0ustar liggesusers 50 60 70 A B C Machine score afex_plot dv = y works afex/tests/testthat/_snaps/afex_plot-basics/0000755000176200001440000000000014637560451020720 5ustar liggesusersafex/tests/testthat/_snaps/afex_plot-basics/geoms-work-violin-with-colour.svg0000644000176200001440000027714314637560451027321 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: violin with colour afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-boxjitter-1.svg0000644000176200001440000006314714415256271025710 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: boxjitter 1 afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-ggbeeswarm-geom-quasirandom.svg0000644000176200001440000004554414566460464031142 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: ggbeeswarm::geom_quasirandom afex/tests/testthat/_snaps/afex_plot-basics/afex-plot-connecting-individual-points-works.svg0000644000176200001440000002744514415253463032300 0ustar liggesusers 400 500 600 700 800 X0 X4 X8 angle rt n 1 2 3 4 5 afex_plot connecting individual points works afex/tests/testthat/_snaps/afex_plot-basics/lme4-mermod-plot-2.svg0000644000176200001440000005720014604566677024714 0ustar liggesusers 50 75 100 125 150 175 0 0.2 0.4 0.6 nitro yield Variety Golden Rain Marvellous Victory lme4::merMod plot 2 afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-jitterdodge.svg0000644000176200001440000004525014415256263026040 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: jitterdodge afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-boxjitter-3.svg0000644000176200001440000005514714415256274025716 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: boxjitter 3 afex/tests/testthat/_snaps/afex_plot-basics/two-way.svg0000644000176200001440000015101014554212121023030 0ustar liggesusers 3 6 9 fup X1 post X1 pre X1 fup X2 post X2 pre X2 fup X3 post X3 pre X3 fup X4 post X4 pre X4 fup X5 post X5 pre X5 phase - hour value treatment control A B two-way afex/tests/testthat/_snaps/afex_plot-basics/lme4-mermod-plot-3.svg0000644000176200001440000006133714604566677024723 0ustar liggesusers Golden Rain Marvellous Victory 0 0.2 0.4 0.6 0 0.2 0.4 0.6 0 0.2 0.4 0.6 50 75 100 125 150 175 nitro yield lme4::merMod plot 3 afex/tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-2.svg0000644000176200001440000004172414604545416027535 0ustar liggesusers 400 500 600 700 800 900 X0 X4 X8 angle rt noise absent present plot_first for afex_plot works 2 afex/tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-1.svg0000644000176200001440000004207714604545415027535 0ustar liggesusers 400 500 600 700 800 900 X0 X4 X8 angle rt noise absent present plot_first for afex_plot works 1 afex/tests/testthat/_snaps/afex_plot-basics/x-trace-panel.svg0000644000176200001440000026172414415253400024100 0ustar liggesusers control A B fup post pre fup post pre fup post pre 3 6 9 phase value hour X1 X2 X3 X4 X5 x-trace-panel afex/tests/testthat/_snaps/afex_plot-basics/mixed-model-4.svg0000644000176200001440000010576414554212130024005 0ustar liggesusers naming lexdec word nonword word nonword -0.6 -0.3 0.0 0.3 0.6 stimulus log_rt frequency low high mixed model 4 afex/tests/testthat/_snaps/afex_plot-basics/mixed-model-2.svg0000644000176200001440000005047214415255070024004 0ustar liggesusers naming lexdec word nonword word nonword -0.6 -0.3 0.0 0.3 stimulus log_rt mixed model 2 afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-violin.svg0000644000176200001440000027712714637560451025051 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: violin afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-geom-count.svg0000644000176200001440000004155314554212133025603 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 n 1 2 3 4 5 geoms work: geom_count afex/tests/testthat/_snaps/afex_plot-basics/multiple-geoms-work-1.svg0000644000176200001440000032030414637560451025524 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 multiple geoms work 1 afex/tests/testthat/_snaps/afex_plot-basics/mixed-model-3.svg0000644000176200001440000004617114415253420024003 0ustar liggesusers -0.6 -0.3 0.0 0.3 word nonword stimulus log_rt task naming lexdec mixed model 3 afex/tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-3.svg0000644000176200001440000002357514604545416027542 0ustar liggesusers 400 500 600 700 800 X0 X4 X8 angle rt plot_first for afex_plot works 3 afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-boxjitter-2.svg0000644000176200001440000005562514415256272025714 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: boxjitter 2 afex/tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-4.svg0000644000176200001440000004172414604545416027537 0ustar liggesusers 400 500 600 700 800 900 X0 X4 X8 angle rt noise absent present plot_first for afex_plot works 4 afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-box-plot.svg0000644000176200001440000004230214415255107025267 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: box plot afex/tests/testthat/_snaps/afex_plot-basics/geoms-work-ggbeeswarm-geom-beeswarm.svg0000644000176200001440000004554114415255103030402 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 geoms work: ggbeeswarm::geom_beeswarm afex/tests/testthat/_snaps/afex_plot-basics/mixed-model-1.svg0000644000176200001440000002622314415253413023777 0ustar liggesusers -0.50 -0.25 0.00 0.25 0.50 naming lexdec task log_rt mixed model 1 afex/tests/testthat/_snaps/afex_plot-basics/multiple-geoms-work-2.svg0000644000176200001440000032030214637560451025523 0ustar liggesusers 400 500 600 700 800 900 absent present noise rt angle X0 X4 X8 multiple geoms work 2 afex/tests/testthat/_snaps/afex_plot-basics/lme4-mermod-plot-1.svg0000644000176200001440000004120714604566675024711 0ustar liggesusers 50 75 100 125 150 175 0 0.2 0.4 0.6 nitro yield lme4::merMod plot 1 afex/tests/testthat/_snaps/afex_plot-basics/one-way-within.svg0000644000176200001440000004423314415253371024320 0ustar liggesusers 2 4 6 8 10 X1 X2 X3 X4 X5 hour value one-way within afex/tests/testthat/_snaps/afex_plot-default-support/0000755000176200001440000000000014565737030022611 5ustar liggesusersafex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-poisson-glm-2.svg0000644000176200001440000002247014565734760030034 0ustar liggesusers 0 50 100 150 S M L size claims age 1 2 afex_plots: poisson glm 2 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-2.svg0000644000176200001440000005717714415253532026517 0ustar liggesusers 50 75 100 125 150 175 0 0.2 0.4 0.6 nitro yield Variety Golden Rain Marvellous Victory afex_plots: nlme 2 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-5.svg0000644000176200001440000002336714415253534026516 0ustar liggesusers 60 80 100 120 140 160 0 0.2 0.4 0.6 nitro yield afex_plots: nlme 5 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-1.svg0000644000176200001440000005717714415253531026515 0ustar liggesusers 50 75 100 125 150 175 0 0.2 0.4 0.6 nitro yield Variety Golden Rain Marvellous Victory afex_plots: nlme 1 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-3.svg0000644000176200001440000004120614415253533026503 0ustar liggesusers 50 75 100 125 150 175 0 0.2 0.4 0.6 nitro yield afex_plots: nlme 3 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-poisson-glm-1.svg0000644000176200001440000001431514565734757030040 0ustar liggesusers 0 25 50 75 100 S M L size claims afex_plots: poisson glm 1 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-lm-model-1.svg0000644000176200001440000003104214415253520027245 0ustar liggesusers 20 40 60 L M H tension breaks afex_plots: lm model 1 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-lm-model-2.svg0000644000176200001440000003633414415253520027257 0ustar liggesusers 20 40 60 L M H tension breaks wool A B afex_plots: lm model 2 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-4.svg0000644000176200001440000004120614415253534026505 0ustar liggesusers 50 75 100 125 150 175 0 0.2 0.4 0.6 nitro yield afex_plots: nlme 4 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-binomial-glm-1.svg0000644000176200001440000002210714415253525030115 0ustar liggesusers 0.00 0.25 0.50 0.75 1.00 0 1 2 3 4 5 ldose SF afex_plots: binomial glm 1 afex/tests/testthat/_snaps/afex_plot-default-support/afex-plots-binomial-glm-2.svg0000644000176200001440000003334114415253526030121 0ustar liggesusers 0.00 0.25 0.50 0.75 1.00 0 1 2 3 4 5 ldose SF sex F M afex_plots: binomial glm 2 afex/tests/testthat/_snaps/afex_plot-vignette/0000755000176200001440000000000014637560451021301 5ustar liggesusersafex/tests/testthat/_snaps/afex_plot-vignette/afex-plot-glmmtmb-3.svg0000644000176200001440000007552214415301007025511 0ustar liggesusers 0 5 10 15 GP PR DM EC-A EC-L DES-L DF spp count afex_plot: glmmTMB 3 afex/tests/testthat/_snaps/afex_plot-vignette/afex-plot-glmmtmb-2.svg0000644000176200001440000032316214637560451025524 0ustar liggesusers 0 10 20 30 GP PR DM EC-A EC-L DES-L DF spp count afex_plot: glmmTMB 2 afex/tests/testthat/_snaps/afex_plot-vignette/afex-plot-glmmtmb-1.svg0000644000176200001440000031026314415301006025500 0ustar liggesusers 0 10 20 30 GP PR DM EC-A EC-L DES-L DF spp count afex_plot: glmmTMB 1 afex/tests/testthat/test-aov_car-bugs.R0000644000176200001440000003467414117416671017675 0ustar liggesusers context("ANOVAs: known bugs") test_that("aov does not throw 'Error() model is singular' warning for missing values", { data(md_12.1) md_12.1b <- md_12.1[-1,] expect_warning(aov_ez("id", "rt", md_12.1b, within = c("angle", "noise")), "Missing values", all = TRUE) }) test_that("regex works correctly in aov_car when also having within factors outside the Error term", { data(obk.long) expect_is(aov_car(value ~ treatment * gender*phase*hour + Error(id/phase*hour), data = obk.long), "afex_aov") }) test_that("another label bug (May 2014)", { data("sk2011.1") levels(sk2011.1$inference) <- c("A+:D-", "A+:D+", "A-:D+", "A- : D-") expect_is(aov_ez("id", "response", sk2011.1, between = "instruction", within = c("type", "inference"), return = "Anova", fun_aggregate = mean), "Anova.mlm") }) test_that("orig label bug", { data(obk.long) obk2 <- obk.long levels(obk2$phase) <- c("fup test", "post-hans", "pre tenetious") expect_is(aov_car(value ~ treatment * gender + age + Error(id/phase*hour), data = obk2, factorize=FALSE, return = "Anova"), "Anova.mlm") }) test_that("ANCOVA check bug (reported by Gang Chen), January 2013", { dat <- read.table(header=TRUE, text = "ID Group Gender ROI Value Propdd00 GAS0 MAD0 CPD0 2016 AE M 05_06 1.581 0.543 1.908 0.439999999999998 -0.5335 2016 AE M 07_08 1.521 0.543 1.908 0.439999999999998 -0.5335 2016 AE M 09_10 1.623 0.543 1.908 0.439999999999998 -0.5335 2016 AE M 03_04 1.569 0.543 1.908 0.439999999999998 -0.5335 2016 AE M 11_12 1.719 0.543 1.908 0.439999999999998 -0.5335 2016 AE M 01_02 1.509 0.543 1.908 0.439999999999998 -0.5335 2031 HC F 09_10 1.739 -0.014 0.0480000000000018 -2.347 1.9665 2031 HC F 01_02 1.763 -0.014 0.0480000000000018 -2.347 1.9665 2031 HC F 03_04 1.8 -0.014 0.0480000000000018 -2.347 1.9665 2031 HC F 11_12 1.793 -0.014 0.0480000000000018 -2.347 1.9665 2031 HC F 05_06 1.765 -0.014 0.0480000000000018 -2.347 1.9665 2031 HC F 07_08 1.654 -0.014 0.0480000000000018 -2.347 1.9665 2063 AE F 11_12 1.742 -0.027 2.348 -8.88 -0.0335000000000001 2063 AE F 01_02 1.634 -0.027 2.348 -8.88 -0.0335000000000001 2063 AE F 03_04 1.638 -0.027 2.348 -8.88 -0.0335000000000001 2063 AE F 07_08 1.604 -0.027 2.348 -8.88 -0.0335000000000001 2063 AE F 09_10 1.654 -0.027 2.348 -8.88 -0.0335000000000001 2063 AE F 05_06 1.625 -0.027 2.348 -8.88 -0.0335000000000001 2042 HC M 05_06 1.649 -0.014 2.058 -3.497 -0.8635 2042 HC M 07_08 1.565 -0.014 2.058 -3.497 -0.8635 2042 HC M 09_10 1.765 -0.014 2.058 -3.497 -0.8635 2042 HC M 03_04 1.677 -0.014 2.058 -3.497 -0.8635 2042 HC M 11_12 1.706 -0.014 2.058 -3.497 -0.8635 2042 HC M 01_02 1.618 -0.014 2.058 -3.497 -0.8635 2071 AE M 05_06 1.712 -0.317 -0.802 6.74 1.9665 2071 AE M 07_08 1.64 -0.317 -0.802 6.74 1.9665 2071 AE M 09_10 1.791 -0.317 -0.802 6.74 1.9665 2071 AE M 03_04 1.725 -0.317 -0.802 6.74 1.9665 2071 AE M 11_12 1.782 -0.317 -0.802 6.74 1.9665 2071 AE M 01_02 1.712 -0.317 -0.802 6.74 1.9665 2134 HC M 05_06 1.672 -0.014 0.347999999999999 -5.807 -2.5335 2134 HC M 07_08 1.657 -0.014 0.347999999999999 -5.807 -2.5335 2134 HC M 09_10 1.791 -0.014 0.347999999999999 -5.807 -2.5335 2134 HC M 03_04 1.633 -0.014 0.347999999999999 -5.807 -2.5335 2134 HC M 11_12 1.859 -0.014 0.347999999999999 -5.807 -2.5335 2134 HC M 01_02 1.653 -0.014 0.347999999999999 -5.807 -2.5335 2009 AE F 09_10 1.672 -0.027 1.058 3.36 11.1365 2009 AE F 03_04 1.723 -0.027 1.058 3.36 11.1365 2009 AE F 05_06 1.676 -0.027 1.058 3.36 11.1365 2009 AE F 07_08 1.622 -0.027 1.058 3.36 11.1365 2009 AE F 01_02 1.633 -0.027 1.058 3.36 11.1365 2009 AE F 11_12 1.853 -0.027 1.058 3.36 11.1365 2132 HC M 05_06 1.758 -0.014 -1.082 -2.857 -0.0335000000000001 2132 HC M 07_08 1.623 -0.014 -1.082 -2.857 -0.0335000000000001 2132 HC M 09_10 1.843 -0.014 -1.082 -2.857 -0.0335000000000001 2132 HC M 03_04 1.773 -0.014 -1.082 -2.857 -0.0335000000000001 2132 HC M 11_12 1.806 -0.014 -1.082 -2.857 -0.0335000000000001 2132 HC M 01_02 1.708 -0.014 -1.082 -2.857 -0.0335000000000001 2127 HC F 11_12 1.824 -0.014 0.628 6.223 -0.5335 2127 HC F 09_10 1.871 -0.014 0.628 6.223 -0.5335 2127 HC F 01_02 1.687 -0.014 0.628 6.223 -0.5335 2127 HC F 03_04 1.699 -0.014 0.628 6.223 -0.5335 2127 HC F 07_08 1.646 -0.014 0.628 6.223 -0.5335 2127 HC F 05_06 1.738 -0.014 0.628 6.223 -0.5335 2081 AE M 09_10 1.807 -0.027 -2.082 2.43 -1.5335 2081 AE M 11_12 1.917 -0.027 -2.082 2.43 -1.5335 2081 AE M 03_04 1.767 -0.027 -2.082 2.43 -1.5335 2081 AE M 05_06 1.776 -0.027 -2.082 2.43 -1.5335 2081 AE M 07_08 1.733 -0.027 -2.082 2.43 -1.5335 2081 AE M 01_02 1.775 -0.027 -2.082 2.43 -1.5335 2086 AE F 11_12 1.768 -0.457 -1.082 -1.76 6.9665 2086 AE F 09_10 1.769 -0.457 -1.082 -1.76 6.9665 2086 AE F 01_02 1.752 -0.457 -1.082 -1.76 6.9665 2086 AE F 03_04 1.769 -0.457 -1.082 -1.76 6.9665 2086 AE F 05_06 1.751 -0.457 -1.082 -1.76 6.9665 2086 AE F 07_08 1.728 -0.457 -1.082 -1.76 6.9665 2033 HC M 05_06 1.804 0.126 2.768 7.083 -2.2035 2033 HC M 07_08 1.784 0.126 2.768 7.083 -2.2035 2033 HC M 09_10 1.948 0.126 2.768 7.083 -2.2035 2033 HC M 03_04 1.821 0.126 2.768 7.083 -2.2035 2033 HC M 11_12 2.143 0.126 2.768 7.083 -2.2035 2033 HC M 01_02 1.824 0.126 2.768 7.083 -2.2035 2007 AE M 07_08 1.554 -0.027 0.488 -6.05 -0.5335 2007 AE M 05_06 1.643 -0.027 0.488 -6.05 -0.5335 2007 AE M 09_10 1.674 -0.027 0.488 -6.05 -0.5335 2007 AE M 03_04 1.593 -0.027 0.488 -6.05 -0.5335 2007 AE M 11_12 1.726 -0.027 0.488 -6.05 -0.5335 2007 AE M 01_02 1.517 -0.027 0.488 -6.05 -0.5335 6062 HC M 05_06 1.911 -0.014 -3.802 4.093 -3.5335 6062 HC M 07_08 1.887 -0.014 -3.802 4.093 -3.5335 6062 HC M 09_10 1.951 -0.014 -3.802 4.093 -3.5335 6062 HC M 03_04 1.798 -0.014 -3.802 4.093 -3.5335 6062 HC M 11_12 1.953 -0.014 -3.802 4.093 -3.5335 6062 HC M 01_02 1.772 -0.014 -3.802 4.093 -3.5335 2072 AE M 05_06 1.667 0.253 1.908 0.289999999999999 -1.0335 2072 AE M 07_08 1.587 0.253 1.908 0.289999999999999 -1.0335 2072 AE M 09_10 1.739 0.253 1.908 0.289999999999999 -1.0335 2072 AE M 03_04 1.638 0.253 1.908 0.289999999999999 -1.0335 2072 AE M 11_12 1.784 0.253 1.908 0.289999999999999 -1.0335 2072 AE M 01_02 1.662 0.253 1.908 0.289999999999999 -1.0335 2008 HC F 05_06 1.623 -0.014 -1.372 -2.317 2.1365 2008 HC F 07_08 1.6 -0.014 -1.372 -2.317 2.1365 2008 HC F 09_10 1.688 -0.014 -1.372 -2.317 2.1365 2008 HC F 03_04 1.624 -0.014 -1.372 -2.317 2.1365 2008 HC F 11_12 1.772 -0.014 -1.372 -2.317 2.1365 2008 HC F 01_02 1.656 -0.014 -1.372 -2.317 2.1365 2070 AE F 05_06 1.657 0.113 -1.372 -0.140000000000001 -5.5335 2070 AE F 07_08 1.579 0.113 -1.372 -0.140000000000001 -5.5335 2070 AE F 09_10 1.75 0.113 -1.372 -0.140000000000001 -5.5335 2070 AE F 03_04 1.808 0.113 -1.372 -0.140000000000001 -5.5335 2070 AE F 11_12 1.777 0.113 -1.372 -0.140000000000001 -5.5335 2070 AE F 01_02 1.702 0.113 -1.372 -0.140000000000001 -5.5335 2064 AE F 11_12 1.781 -0.027 -5.512 3.57 -3.5335 2064 AE F 09_10 1.724 -0.027 -5.512 3.57 -3.5335 2064 AE F 01_02 1.631 -0.027 -5.512 3.57 -3.5335 2064 AE F 03_04 1.607 -0.027 -5.512 3.57 -3.5335 2064 AE F 05_06 1.577 -0.027 -5.512 3.57 -3.5335 2064 AE F 07_08 1.546 -0.027 -5.512 3.57 -3.5335 2039 HC M 09_10 1.879 -0.014 2.628 -1.867 -5.5335 2039 HC M 11_12 1.918 -0.014 2.628 -1.867 -5.5335 2039 HC M 03_04 1.794 -0.014 2.628 -1.867 -5.5335 2039 HC M 05_06 1.787 -0.014 2.628 -1.867 -5.5335 2039 HC M 07_08 1.687 -0.014 2.628 -1.867 -5.5335 2039 HC M 01_02 1.774 -0.014 2.628 -1.867 -5.5335 2117 HC F 09_10 1.712 -0.014 0.917999999999999 1.293 3.7965 2117 HC F 11_12 1.75 -0.014 0.917999999999999 1.293 3.7965 2117 HC F 03_04 1.717 -0.014 0.917999999999999 1.293 3.7965 2117 HC F 07_08 1.587 -0.014 0.917999999999999 1.293 3.7965 2117 HC F 05_06 1.667 -0.014 0.917999999999999 1.293 3.7965 2117 HC F 01_02 1.663 -0.014 0.917999999999999 1.293 3.7965 ") dat$ID <- as.factor(dat$ID) fm <- aov_car(Value ~ Propdd00 + Group + Gender + GAS0 + MAD0 + CPD0 + Error(ID/ROI), data=dat, factorize=FALSE, return = "Anova") fm0 <- aov_car(Value ~ MAD0 + CPD0 + Error(ID/ROI), data=dat, factorize=FALSE, return='afex_aov') expect_is(fm, "Anova.mlm") expect_is(fm0, "afex_aov") }) test_that("ANOVA: ids in multiple between.subjects conditions", { species<- c("a","b","c","c","b","c","b","b","a","b","c","c","a","a","b","b","a","a","b","c") habitat<- c("x","x","x","y","y","y","x","x","y","z","y","y","z","z","x","x","y","y","z","z") mvt.rate<-c(6,5,7,8,9,4,3,5,6,9,3,6,6,7,8,9,5,6,7,8) ind<-as.factor(c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)) data1<-data.frame(species, habitat, mvt.rate, ind) # should give an error expect_error(aov_ez("ind", "mvt.rate", data1, within = "habitat", between = "species"), "Following ids are in more than one between subjects condition:") }) test_that("empty factors are not causing aov.cat to choke", { data(sleepstudy) #Example data in lme4 sleepstudy$Days<-factor(sleepstudy$Days) #Works with all factors expect_is(aov_ez("Subject","Reaction",sleepstudy, within="Days", return = "Anova"), "Anova.mlm") #If you remove a factor it fails... expect_is(aov_ez("Subject","Reaction",sleepstudy[sleepstudy$Days!=9,], within="Days", return = "Anova"), "Anova.mlm") }) test_that("factors have more than one level", { data(obk.long) expect_error(aov_car(value ~ treatment+ Error(id/phase), data = obk.long[ obk.long$treatment == "control",]), "one level only.") expect_error(aov_car(value ~ treatment+ Error(id/phase), data = obk.long[ obk.long$phase == "pre",]), "one level only.") }) test_that("variable names longer", { data(obk.long) obk.long$gender2 <- obk.long$treatment orig <- aov_car(value ~ treatment * gender + age + Error(id/phase*hour), data = obk.long, factorize=FALSE, observed = "gender") v1 <- aov_car(value ~ gender2 * gender + age + Error(id/phase*hour), data = obk.long, factorize=FALSE, observed = "gender") v2 <- aov_car(value ~ gender2 * gender + age + Error(id/phase*hour), data = obk.long, factorize=FALSE, observed = "gender2") expect_equivalent(orig$anova_table, v1$anova_table) expect_identical(nice(orig)[,-1], nice(v1)[,-1]) expect_identical(nice(orig)[,c("df", "MSE", "F", "p.value")], nice(v2)[,c("df", "MSE", "F", "p.value")]) expect_equivalent(orig$anova_table[,c("num Df", "den Df", "MSE", "F", "Pr(>F)")], v2$anova_table[c("num Df", "den Df", "MSE", "F", "Pr(>F)")]) }) test_that("works with dplyr data.frames (see https://github.com/singmann/afex/issues/6):", { if (getRversion() >= "3.1.2") { skip_if_not_installed("dplyr") data(md_12.1) md2 <- dplyr::as_tibble(md_12.1) expect_is(aov_ez("id", "rt", md2, within = c("angle", "noise"), anova_table=list(correction = "none", es = "none")), "afex_aov") } }) test_that("return='nice' works", { data(md_12.1) expect_is(aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), return = "nice"), "data.frame") }) test_that("aov_car works with column names containing spaces: https://github.com/singmann/afex/issues/22", { data <- list("dependent" = rnorm(100), "RM Factor 1" = factor(rep(c("Level 1", "Level 2"), 50)), "subject" = factor(rep(1:50, each = 2))) attr(data, 'row.names') <- seq_len(length(data[[1]])) attr(data, 'class') <- 'data.frame' expect_is(aov_car(dependent ~ `RM Factor 1` + Error(subject/(`RM Factor 1`)), data), "afex_aov") expect_is(aov_4(dependent ~ `RM Factor 1` + (`RM Factor 1`|subject), data), "afex_aov") expect_is(aov_ez("subject", "dependent", data, within = "RM Factor 1"), "afex_aov") }) test_that("aov_car works with column names containing spaces for between factors", { data <- list("dependent" = rnorm(100), "RM Factor 1" = factor(rep(c("Level 1", "Level 2"), 50)), "subject" = factor(rep(1:100))) attr(data, 'row.names') <- seq_len(length(data[[1]])) attr(data, 'class') <- 'data.frame' expect_is(aov_car(dependent ~ `RM Factor 1` + Error(subject), data), "afex_aov") expect_is(aov_4(dependent ~ `RM Factor 1` + (1|subject), data), "afex_aov") expect_is(aov_ez("subject", "dependent", data, between = "RM Factor 1"), "afex_aov") }) test_that("aov_ez works with multiple covariates", { skip_if_not_installed("psychTools") require(psychTools) data(msq) msq2 <- msq[!is.na(msq$Extraversion),] msq2 <- droplevels(msq2[msq2$ID != "18",]) msq2$TOD <- msq2$TOD-mean(msq2$TOD) msq2$MSQ_Time <- msq2$MSQ_Time-mean(msq2$MSQ_Time) msq2$condition <- msq2$condition-mean(msq2$condition) # that is somewhat stupid mulcov <- aov_ez(data=msq2, dv="Extraversion", id = "ID", between = "condition", covariate=c("TOD", "MSQ_Time"), factorize=FALSE, fun_aggregate = mean) expect_is(mulcov, "afex_aov") }) test_that("aov_car works with p.val adjustment == NA for HF as well as GG", { # see: https://github.com/singmann/afex/issues/36 skip_on_cran() ## takes rather long load("anova_hf_error.rda") #load("tests/testthat/anova_hf_error.rda") expect_is(nice(aov_ez("Snum", "RT", demo, within=c("DistF", "WidthF", "AngleF"))), "nice_table") expect_is(nice(aov_ez("Snum", "RT", demo, within=c("DistF", "WidthF", "AngleF"), anova_table = list(correction = "GG"))), "nice_table") expect_is(nice(aov_ez("Snum", "RT", demo, within=c("DistF", "WidthF", "AngleF"), anova_table = list(correction = "HF"))), "nice_table") }) test_that("aov_car: character variables and factorize = FALSE", { data(obk.long) obk2 <- obk.long obk2$treatment <- as.character(obk2$treatment) a1 <- aov_car(value ~ treatment * gender + Error(id), data = obk.long, fun_aggregate = mean) a2 <- aov_car(value ~ treatment * gender + Error(id), data = obk2, fun_aggregate = mean) a3 <- aov_car(value ~ treatment * gender + Error(id), data = obk2, fun_aggregate = mean, factorize = FALSE) expect_equal(a1$anova_table, a2$anova_table) expect_equal(a1$anova_table, a3$anova_table) }) test_that("additive design works without interaction and corresponding data", { dat <- read.csv("skf_issue.csv") dat[["ID"]] <- factor(1:nrow(dat)) aov1 <- aov_car(formula = Y ~ A + B + C + D + E + F + G + Error(ID), data = dat, type="3") expect_is(aov1, "afex_aov") datFac <- dat for(i in 1:7) datFac[[LETTERS[i]]] <- factor(ifelse(dat[[LETTERS[i]]] == -1, "a", "b")) aov2 <- aov_car(formula = Y ~ A + B + C + D + E + F + G + Error(ID), data = datFac, type="3") expect_is(aov2, "afex_aov") }) afex/tests/testthat/test-lmerTest-support.R0000644000176200001440000000254013664111747020623 0ustar liggesusers context("interplay with lmerTest") test_that("mixed allows both lme4 and lmerText calls and exports lmerTest::lmer", { aop <- afex_options() data(sk2011.1) m1 <- mixed(response ~ instruction*inference*plausibility +(1|id), sk2011.1, progress = FALSE, return = "merMod") m1b <- lmer(response ~ instruction*inference*plausibility +(1|id), sk2011.1) expect_true(inherits(m1, "merModLmerTest") || inherits(m1, "lmerModLmerTest")) expect_is(m1, "merMod") expect_true(inherits(m1b, "merModLmerTest") || inherits(m1b, "lmerModLmerTest")) afex_options(lmer_function = "lme4") m2 <- mixed(response ~ instruction*inference*plausibility +(1|id), sk2011.1, progress = FALSE, return = "merMod") expect_false(inherits(m2, "merModLmerTest") && inherits(m2, "lmerModLmerTest")) expect_is(m2, "merMod") afex_options(aop) expect_true("Pr(>F)" %in% colnames(lmerTest_anova(m1))) expect_true("Pr(>F)" %in% colnames(lmerTest_anova(m1b))) expect_false("Pr(>F)" %in% colnames(anova(m2))) expect_true("Pr(>F)" %in% colnames(lmerTest_anova(m2))) ## following tests only work with new lmerTest (March 2018) pkg_version <- "2.0-37.9005" skip_if(packageVersion(pkg = "lmerTest") < pkg_version) expect_true("Pr(>F)" %in% colnames(anova(m1))) expect_true("Pr(>F)" %in% colnames(anova(m1b))) }) afex/tests/testthat/test-mixed-bugs.R0000644000176200001440000001613514220036370017346 0ustar liggesusers context("mixed: known bugs") test_that("all_fit = TRUE works with emmeans", { testthat::skip_on_cran() skip_if_not_installed("MEMSS") skip_if_not_installed("emmeans") skip_on_os("windows") data("Machines", package = "MEMSS") m1 <- mixed(score ~ Machine + (1|Worker), data=Machines, all_fit = TRUE) expect_is(emmeans::emmeans(m1, "Machine"), "emmGrid") }) test_that("inverse.gaussian works", { ## see: https://github.com/singmann/afex/issues/74 skip_if_not_installed("statmod") skip_if(packageVersion("lme4") <= "1.1.21") skip_on_cran() set.seed(666) id <- factor(1:20) a <- factor(rep(c("a1","a2"),each=5000/2)) b <- factor(rep(c("b1","b2"),each=5000/2)) y <- statmod::rinvgauss(5000, 1, 2) df <- data.frame(id=id, x1=sample(a), x2=sample(b), y=y) expect_is(mixed(y ~ x1 * x2 + (1|id), family = inverse.gaussian(link = "inverse"), control=glmerControl(optimizer="bobyqa", optCtrl=list(maxfun=2e5)), data = df, method = "LRT", progress = FALSE), "mixed") expect_is(mixed(y ~ x1 * x2 + (1|id), family = inverse.gaussian(link = "inverse"), control=glmerControl(optimizer="bobyqa", optCtrl=list(maxfun=2e5)), data = df, method = "PB", progress = FALSE, args_test = list(nsim = 5)), "mixed") }) test_that("character formula is contrast checked", { data("sk2011.2") # use only affirmation problems (S&K also splitted the data like this) sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) sk_m1 <- mixed("response ~ instruction*inference+(1|id)", sk2_aff, method = "S", progress = FALSE) sk_m2 <- mixed(response ~ instruction*inference+(1|id), sk2_aff, method = "S", progress = FALSE) expect_equivalent(fixef(sk_m1$full_model), fixef(sk_m2$full_model)) }) test_that("character variables are treated as factors", { data("sk2011.2") # use only affirmation problems (S&K also splitted the data like this) sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) sk_m1 <- mixed(response ~ instruction*inference+(1|id), sk2_aff, method = "LRT", progress = FALSE) sk2_aff$instruction <- as.character(sk2_aff$instruction) sk2_aff$inference <- as.character(sk2_aff$inference) sk_m2 <- mixed(response ~ instruction*inference+(1|id), sk2_aff, method = "LRT", progress = FALSE) expect_equivalent(anova(sk_m1), anova(sk_m2)) }) test_that("mixed works with long formulas", { data(obk.long) obk2 <- obk.long colnames(obk2) <- sapply(colnames(obk2), function(x) paste0(x, x, x, x, x, x)) expect_is(mixed(valuevaluevaluevaluevaluevalue ~ treatmenttreatmenttreatmenttreatmenttreatmenttreatment * phasephasephasephasephasephase * hourhourhourhourhourhour + (1|idididididid), obk2, method = "LRT", progress = FALSE), "mixed") }) test_that("nice.mixed and print.mixed can handle old objects", { # created via: # require(devtools) # dev_mode() # install_url("https://cran.rstudio.com/src/contrib/Archive/afex/afex_0.13-145.tar.gz") # require(afex) # data(obk.long) # m1 <- mixed(value ~ treatment * phase + (1|id), obk.long) # m2 <- mixed(value ~ treatment * phase + (1|id), obk.long, method = "LRT") # m3 <- mixed(value ~ treatment * phase + (1|id), obk.long, method = "PB") # save(m1, m2, m3, file = "lmm_old_object.rda") # dev_mode() load("lmm_old_object.rda") # # load("tests/testthat/lmm_old_object.rda") expect_is(suppressWarnings(nice(m1)), "data.frame") expect_is(suppressWarnings(nice(m2)), "data.frame") expect_is(suppressWarnings(nice(m3)), "data.frame") expect_output(suppressWarnings(print(m1)), "treatment") expect_output(suppressWarnings(print(m2)), "treatment") expect_output(suppressWarnings(print(m3)), "treatment") }) test_that("nice.mixed, print.mixed, and anova.mixed can handle objects with full.models", { load("mixed_with_dot.rda") # #load("tests/testthat/mixed_with_dot.rda") expect_is(suppressWarnings(nice(sk_m1)), "data.frame") expect_is(suppressWarnings(nice(sk_m2)), "data.frame") expect_is(suppressWarnings(nice(t2)), "data.frame") expect_output(suppressWarnings(print(sk_m1)), "instruction") expect_output(suppressWarnings(print(sk_m2)), "instruction") expect_output(suppressWarnings(print(t2)), "treatment") expect_is(anova(sk_m1), "data.frame") expect_is(anova(sk_m2), "data.frame") expect_is(anova(t2), "data.frame") }) test_that("lmer_alt works with GLMMs", { skip_if_not_installed("mlmRev") if (require("mlmRev")) { expect_that(lmer_alt(use ~ age*urban + (1 | district), family = binomial, data = Contraception, progress=FALSE), is_a("glmerMod")) } }) test_that("lmer_alt works with NA in independent variables", { data(sk2011.2) # use only affirmation problems (S&K also splitted the data like this) sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) sk2_aff$instruction[5] <- NA assign("sk2_aff", sk2_aff, envir = .GlobalEnv) # set up model with maximal by-participant random slopes sk_m1 <- suppressWarnings(lmer_alt(response ~ instruction*type+(type||id), sk2_aff, expand_re = TRUE)) expect_true(inherits(sk_m1, "merModLmerTest") || inherits(sk_m1, "lmerModLmerTest")) }) test_that("lmer_alt works with custom contrasts", { ## see: https://afex.singmann.science/forums/topic/trouble-with-ordered-contrasts-and-lmer_alt Subj <- rep(1:10, each = 10) Item <- rep(1:10, times = 10) IV1 <- rep(1:5, times = 20) DV <- rnorm(100) data <- as.data.frame(cbind(Subj, Item, IV1, DV)) data$Subj <- as.factor(data$Subj) data$Item <- as.factor(data$Item) data$IV1 <- as.factor(data$IV1) contrasts(data$IV1) <- MASS::contr.sdif(5) mafex <- lmer_alt(DV ~ IV1 + (1 + IV1||Subj) + (1|Item), data = data) expect_is(mafex, "merMod") expect_identical(colnames(ranef(mafex)$Subj), c("(Intercept)", "re1.IV12.1", "re1.IV13.2", "re1.IV14.3", "re1.IV15.4")) }) test_that("subset() in mix works with method == 'LRT'", { data(obk.long) set_default_contrasts() msub <- mixed(value ~ treatment*phase*hour +(1|id), data = subset(obk.long, treatment != "control"), method = "LRT") #dput(as.data.frame(anova(msub))[,"Chi Df"]) expect_equal( object = as.data.frame(anova(msub))[,"Chi Df"], expected = c(1, 2, 4, 2, 4, 8, 8) ) set_sum_contrasts() msub1 <- mixed(value ~ treatment*phase*hour +(1|id), data = subset(obk.long, treatment != "control"), method = "LRT") #dput(as.data.frame(anova(msub))[,"Chi Df"]) expect_equal( object = as.data.frame(anova(msub1))[,"Chi Df"], expected = c(1, 2, 4, 2, 4, 8, 8) ) set_default_contrasts() }) afex/tests/testthat/test-predict.R0000644000176200001440000000171314071313113016725 0ustar liggesusers context("predict") data(obk.long, package = "afex") df <- obk.long df$hour <- as.numeric(df$hour) newdata <- df[1:5,] test_that("between (compare to lm)", { between <- aov_car(value ~ treatment*gender + Error(id), data = df, fun_aggregate = mean) fit.lm <- lm(value ~ treatment*gender, data = between$data$long) expect_equal(predict(between, newdata), predict(fit.lm, newdata)) expect_is(predict(between, newdata), "numeric") expect_is(predict(between, newdata, append = TRUE), "data.frame") }) test_that("within + factorized numerics", { within <- aov_car(value ~ 1 + Error(id/(phase*hour)), data = df) p1 <- predict(within, newdata = data.frame(phase = "pre", hour = 1)) p2 <- predict(within, newdata = data.frame(phase = "pre", hour = "1")) expect_equal(p1, p2) expect_equal(unname(p1), 3.8125) expect_error(predict(within, newdata = data.frame(phase = "pre", hour = 6))) }) afex/tests/testthat/test-aov_car-basic.R0000644000176200001440000002113214232562055017773 0ustar liggesusers context("ANOVAs: replicating published results") test_that("purely within ANOVA, return='univ': Maxell & Delaney (2004), Table 12.5 and 12.6, p. 578", { ### replicate results from Table 12.6 data(md_12.1) # valus from table: f <- c(40.72, 33.77, 45.31) ss_num <- c(289920, 285660, 105120) ss_error <- c(64080, 76140, 20880) num_df <- c(2, 1, 2) den_df <- c(18, 9, 18) md_ez_r <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise")) md_car_r <- aov_car(rt ~ 1 + Error(id/angle*noise), md_12.1) md_aov_4_r <- aov_4(rt ~ 1 + (angle*noise|id), md_12.1) expect_that(md_ez_r, is_equivalent_to(md_car_r)) expect_that(md_ez_r, is_equivalent_to(md_aov_4_r)) expect_that(round(md_ez_r$anova_table[,"F"], 2), is_equivalent_to(f)) tmp_univ <- suppressWarnings(summary(md_ez_r$Anova)$univariate.tests) if ("Sum Sq" %in% colnames(tmp_univ)) { # to allow both car 3.0 and earlier versions ss_test <- tmp_univ[,"Sum Sq"][-1] } else { ss_test <- tmp_univ[,"SS"][-1] } expect_that(ss_test, is_equivalent_to(ss_num)) expect_that(tmp_univ[,"Error SS"][-1], is_equivalent_to(ss_error)) expect_that(anova(md_ez_r, correction = "none")[,"num Df"], is_equivalent_to(num_df)) expect_that(anova(md_ez_r, correction = "none")[,"den Df"], is_equivalent_to(den_df)) }) test_that("Analysis of Singmann & Klauer (2011, Exp. 1)", { data(sk2011.1, package = "afex") out1 <- aov_ez("id", "response", sk2011.1[ sk2011.1$what == "affirmation",], within = c("inference", "type"), between = "instruction", anova_table=(es = "pes"), fun_aggregate = mean, return = "afex_aov") df_num <- rep(1, 7) df_den <- rep(38, 7) MSE <- c(1072.42, 1007.21, 1007.21, 187.9, 187.9, 498.48, 498.48) F <- c(0.13, 13.01, 12.44, 0.06, 3.09, 29.62, 10.73) pes <- c(0, 0.26, 0.25, 0, 0.08, 0.44, 0.22) p <- c(0.72, 0.0009, 0.001, 0.81, 0.09, 0.001, 0.002) expect_that(out1$anova_table[["num Df"]], is_equivalent_to(df_num)) expect_that(out1$anova_table[["den Df"]], is_equivalent_to(df_den)) expect_that(out1$anova_table[["MSE"]], equals(MSE, tolerance = 0.001)) expect_that(out1$anova_table[["F"]], equals(F, tolerance = 0.001)) expect_that(out1$anova_table[["pes"]], equals(pes, tolerance = 0.02)) expect_that(out1$anova_table[["Pr(>F)"]], equals(p, tolerance = 0.01)) }) test_that("Data from O'Brien & Kaiser replicates their paper (p. 328, Table 8, column 'average'", { data(obk.long, package = "afex") out1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender", return = "afex_aov", anova_table = list(correction = "none")) expect_that(unname(unlist(out1[["anova_table"]]["treatment", c("num Df", "den Df", "F")])), equals(c(2, 10, 3.94), tolerance = 0.001)) expect_that(unname(unlist(out1[["anova_table"]]["gender", c("num Df", "den Df", "F")])), equals(c(1, 10, 3.66), tolerance = 0.001)) expect_that(round(unname(unlist(out1[["anova_table"]]["treatment:gender", c("num Df", "den Df", "F")])), 2), equals(c(2, 10, 2.86), tolerance = 0.001)) ## check against own results: anova_tab <- structure(list(`num Df` = c(2, 1, 2, 2, 4, 2, 4, 4, 8, 4, 8, 8, 16, 8, 16), `den Df` = c(10, 10, 10, 20, 20, 20, 20, 40, 40, 40, 40, 80, 80, 80, 80), MSE = c(22.8055555555555, 22.8055555555555, 22.8055555555555, 4.01388888888889, 4.01388888888889, 4.01388888888889, 4.01388888888889, 1.5625, 1.5625, 1.5625, 1.5625, 1.20208333333333, 1.20208333333333, 1.20208333333333, 1.20208333333333), F = c(3.940494501098, 3.65912050065102, 2.85547267441343, 16.1329196993199, 4.85098375975551, 0.282782484190432, 0.636602429722426, 16.6856704980843, 0.0933333333333336, 0.450268199233716, 0.620437956204379, 1.17990398215104, 0.345292160558641, 0.931293452060798, 0.735935938468544), ges = c(0.198248507309966, 0.114806410630587, 0.179183259116394, 0.151232705544895, 0.0967823866181358, 0.00312317714869712, 0.0140618480455475, 0.12547183572154, 0.00160250371109459, 0.0038716854273722, 0.010669821220833, 0.0153706689696344, 0.00905399063368842, 0.012321395080303, 0.0194734697889242), `Pr(>F)` = c(0.0547069269265198, 0.0848002538616402, 0.104469234023772, 6.73163655770545e-05, 0.00672273209545241, 0.756647338927411, 0.642369488905348, 4.02664339633774e-08, 0.999244623719389, 0.771559070589063, 0.755484449904079, 0.32158661418337, 0.990124565656718, 0.495611922963992, 0.749561639456282)), .Names = c("num Df", "den Df", "MSE", "F", "ges", "Pr(>F)"), heading = c("Anova Table (Type 3 tests)\n", "Response: value"), row.names = c("treatment", "gender", "treatment:gender", "phase", "treatment:phase", "gender:phase", "treatment:gender:phase", "hour", "treatment:hour", "gender:hour", "treatment:gender:hour", "phase:hour", "treatment:phase:hour", "gender:phase:hour", "treatment:gender:phase:hour" ), class = c("data.frame")) expect_equal(out1[["anova_table"]], anova_tab, check.attributes = FALSE) }) test_that("Data from O'Brien & Kaiser adjusted for familywise error rate (p. 328, Table 8, column 'average'", { data(obk.long, package = "afex") out1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender", return = "afex_aov", anova_table = list(correction = "none", p_adjust_method = "bonferroni")) expect_that(unname(unlist(out1[["anova_table"]]["treatment", c("num Df", "den Df", "F")])), equals(c(2, 10, 3.94), tolerance = 0.001)) expect_that(unname(unlist(out1[["anova_table"]]["gender", c("num Df", "den Df", "F")])), equals(c(1, 10, 3.66), tolerance = 0.001)) expect_that(round(unname(unlist(out1[["anova_table"]]["treatment:gender", c("num Df", "den Df", "F")])), 2), equals(c(2, 10, 2.86), tolerance = 0.001)) ## check against own results: anova_tab <- structure(list(`num Df` = c(2, 1, 2, 2, 4, 2, 4, 4, 8, 4, 8, 8, 16, 8, 16), `den Df` = c(10, 10, 10, 20, 20, 20, 20, 40, 40, 40, 40, 80, 80, 80, 80), MSE = c(22.8055555555555, 22.8055555555555, 22.8055555555555, 4.01388888888889, 4.01388888888889, 4.01388888888889, 4.01388888888889, 1.5625, 1.5625, 1.5625, 1.5625, 1.20208333333333, 1.20208333333333, 1.20208333333333, 1.20208333333333), F = c(3.940494501098, 3.65912050065102, 2.85547267441343, 16.1329196993199, 4.85098375975551, 0.282782484190432, 0.636602429722426, 16.6856704980843, 0.0933333333333336, 0.450268199233716, 0.620437956204379, 1.17990398215104, 0.345292160558641, 0.931293452060798, 0.735935938468544), ges = c(0.198248507309966, 0.114806410630587, 0.179183259116394, 0.151232705544895, 0.0967823866181358, 0.00312317714869712, 0.0140618480455475, 0.12547183572154, 0.00160250371109459, 0.0038716854273722, 0.010669821220833, 0.0153706689696344, 0.00905399063368842, 0.012321395080303, 0.0194734697889242), `Pr(>F)` = c(0.0547069269265198, 0.0848002538616402, 0.104469234023772, 6.73163655770545e-05, 0.00672273209545241, 0.756647338927411, 0.642369488905348, 4.02664339633774e-08, 0.999244623719389, 0.771559070589063, 0.755484449904079, 0.32158661418337, 0.990124565656718, 0.495611922963992, 0.749561639456282)), .Names = c("num Df", "den Df", "MSE", "F", "ges", "Pr(>F)"), heading = c("Anova Table (Type 3 tests)\n", "Response: value"), row.names = c("treatment", "gender", "treatment:gender", "phase", "treatment:phase", "gender:phase", "treatment:gender:phase", "hour", "treatment:hour", "gender:hour", "treatment:gender:hour", "phase:hour", "treatment:phase:hour", "gender:phase:hour", "treatment:gender:phase:hour" ), class = c("data.frame")) anova_tab$`Pr(>F)` <- p.adjust(anova_tab$`Pr(>F)`, method = "bonferroni") expect_equal(out1[["anova_table"]], anova_tab, check.attributes = FALSE) }) test_that("afex_aov printing", { data(sk2011.1, package = "afex") out_new <- aov_ez("id", "response", sk2011.1[ sk2011.1$what == "affirmation",], within = c("inference", "type"), between = "instruction", anova_table=(es = "pes"), fun_aggregate = mean, return = "afex_aov") expect_output(print(out_new), "Signif. codes") expect_output(print(anova(out_new)), "Signif. codes") expect_output(print(nice(out_new)), "Anova") load("afex_aov_16_1.rda") expect_output(print(out1), "Anova") skip_if_not(packageVersion("car") >= '3.0.13') ## only throws error with car version '3.0.13' or larger, the expect_error(anova(out1), regexp = "summary.Anova.mlm() failed for 'afex_aov' object.", fixed = TRUE) expect_error(nice(out1), regexp = "summary.Anova.mlm() failed for 'afex_aov' object.", fixed = TRUE) }) afex/tests/testthat/m_machines_lmerTest-pre3.0.rda0000644000176200001440000006155313664111747021702 0ustar liggesusers |$Gu0sX]_Kw^I^!C=^LԻ3ݳ= lCMpOB 8`gC$l {zF#H~|ի^z5@oׁ.EQJ*V)pN %,׮⡢3LQ* _e7@;sڧE>uOKcRyJ$ AdM!`niiӲ;B؊=វyexpJ]b2KrϘfꙍz#b~< noK\ 8V\ yZ╳kwԿwݍ.<\.!\Р\Vn .)|}܎8.܎ݸ?qvwq{ qy;1 wXd~x'kƭ,qE!G{Aש`A&FrsZֵ0;iVhr ! ln%7}䦟\NnǍcokM=\W-Nt#^ 81dBTxW/f\ (CJ|i(Ģөz;w&!?ؿsեrHrO*MHB4U8ݬASCf\6Te@O4"AvI0AzU|uW`N2IO=ҙKIYY.&h7dh޺mdiT$$s0=ZFCE=F 84'%iӺmYEyaSJw*4( W yŖS/Q/ϜVR[rZs(C+͕5²2zһ>zO.wJzGu:zi^ZG/Ku:h}>ZGGu:h}~ZG?Ou:i~ZG?rZ崎i:.Q&Z5vO؍kv-7ؕ<,+!υ&oR1j* fM(y#|wo#2SI4{}$5>,í 1=L=rG^`~tO .{.}6ώ/?q;i[?;po$8ʁz}yݿL}-c7=x/o—ޱ4_7s۰'D'gb 6kpůrQωoljtoa[~?޷MA w||ȱ/mI>Ǯܓt!b47|<'l%J̇ MO8c㤃`5ezDIM!?HJ} ZECf\o$7&)Er8J߹c'eGCt[iU1};NxDMeii[:,$kcBֈV>quuk׭JGkX%!n;&ou:UrE6%e 뤶G`N gS.6ʵ- 5'Wuy6y_%-{D*b,d^Vި(T'/ۺ[MGL@=Usք =n sdR 9(RuA9 0sG!3l? Y<4b@s!LD0Ԣm?9= u =ͬkXڀX(E qPx׀l2i%o;|̬d*!Ӌ3n.[1z@iR8VNH'Yff/}ܐj{%\06ro7v$튰cb+I3ԊBj/jmjE` |IbcA`\7jåiV0ޠ>|I`+'Ҙ r;agjd!GuS5jUSꎣٓrSQ /Xb ArOl8;˅–c.5-5DUrE< {QQ酑a}L ++uBr>,U Vq&\' q@ו")2.,U!.-H}DJgC%WXc \HrM^WhZ,¿%kB+ _._aHK" lF8-'0[qO"{ JW%qq]p+ot;^ ~g߫Ow>] =\k/~_/Ae_ ~PA$l& ~o/ ~uwa5HPNN!t:[ _5_+,_ _IVМj-dѻBd!p}GZׅqZ΅r*9 /ʍnJy;*C7׮T|6 [PSڷkE I!WU^6wnJ0-F\JDa9(,N+-=(%t2PO^G*$'\tDR=Zז2{?Kt.ކ߯IL&rrΕl35{gp-[bHzNIdl8<QFjR.kzRsEK8u).l46*)ldҜ \E.$UH JIJ0NIQiӶ&ZY3f*T7)l9U2J>&_"%1'bYc'kȱlY˦q!`3!T3,a@j)qb˕ͶI5aJ` Nͤ );#}ԋ#hobž%8N<pc|"@Og֏B*zs<*:SZFEtwgk!`xm -#fH@Hְ MuEwSHlo ?xrL噵m5mmv;cMWe]F`[FBMdWE& @.!ySlGg>M-P(&*^/9eu$G |d#]|ZŵKPW 3[}HoP#PGD8-@=~PW!{kwMGA1b;}3keĀ/IABZ9e޾E7)ׅZVÚb YZ uy<"#x\DW} lyR= d~W|zɖ/~/?)~?›?Q[z`0u]y |4k]|~Togo{ {ßNb zdkzAL9l<5IxK< ȼGW;ڷ,ĘbIUP$-&;GP5$E R*!K LvGlȄź9>.=sAEeÒ *\M4F/뷮l;BhzO_b"5?C[׺\cC6?y(||[^"9r":*BfzLmx{ 'Ob2g *3'8pxoTx?M@Ɓ"$* נIfnaK3nLq .(-نw3z^d("Pg8dMyt'Q5 S3]{iX@/L0wKIW1<cʇy} OzՃ\#Ǿ ~z'̓MzS{Cc)_._wbj=/{6EĭkwȽsTɱ:Q_ c[ B(HϘ }iݽbWz%>8G5ZPf1꤉)\hYMS@ЪSLZoԋU~N{u7oFt̋0^'feȰ]|G^NφsʨoK\mUE$}u~ͭj|ÜE z#[x^iZZ-1}~$tN(#量ʼ`nVɈ z2ciCB'7lx.þbe+X#zSO.U5h6zԸPq4]>rpǃUMlo67^7&k5}E [މ:4-^n|pAVN!pwjsW:.~?iRg N/4ǒr ܬgbGs5^|(M# iMN2 n_iR̜:|@VQQ理9n8HA?<*O%Fҳ.ᗾx6||͂HD\-%.] ru\vbS2ui%I5ӵ89|`~y; dow[)8_+Md靁FuǦNlv{^~=R5e޲Ay`[;f-s\Gu3YFse(/']"RWP'vidA^@2!&LyԳhAV!D׽B}A¦"o֝چ Ymµ o]~F3>p-;xckB7F wV-Z)\$3ŨI{xLʋ^ B̾L_0n}ȅ?1bx?6c%xYI~D[\=2)Ie<:yN([pd-Βqa#Cu.ԋTofW$1\G/3]zOvL!1轼"fXx;Y=` 873iwᅲf_tWxX/'IkG1!m.~iDSr4#U)%VYR>tS`HJY9Ű-x)RпA*oB>yZlfHY#<[mYZxn(U QJI[ylE1G)y9 $*2X$hAXzOK*6m@a-)^8E* 2k:cVPeR@ڎk8=p6nJ ?TgVN!τ:qmT$W2s3֓q˖x-ޏ2c={܋4iDU`a#qu79=9f߅gvw!0we!ٳc/;Nvl&;^9?qώ:u4쨃s#8e-3{{]3l|>}>p} :՚o|;m3lo$k}oi_=ϯ}1-xiOv%TS~{D?vUstSCôgL7z d(vJؒDKjؓ3lhmpTRiw{TUlY Py0ieV[6C5Y.xEdX'a!x^Z\/H2yS? ƷޖM'[6͂H_-Eq643ZV4|mߥo9EJ o3ɧy9N%KwފB70 c2Vy{Hņ鸀 iv̉+YFL+*%/CLm esZVr`&vdefw'ֆ zX{A~ HfHj^Ev0DLX(x3H-&&#[_ONڽ*B9]P@RA(` qܕSțPn#O+Q.#݄YFs7'{AM^bqa ԻptY:P$zbunr4yȬQGhT'EaX5̚wOC S"u`5+ x@q1euaׅ#c& . >O_TDEFȢI 1oIVYELz7w"1YE E2חoB7 &2ddQHD\%J$]Eǂr]yLl(~x u\`ʓ9<P V3ZpZoHA6XRy`pүQ"E-ܧytClޜAwuėDQ0 -$s`%נ}4,ɭ*ep DOVQ XlJ]qy`w9#?U55q[VYE UT4P&oKkvq2rVHe;eМLp\q{| v W^~W OmmAx^]!|kl*6&md+>Joa{Ol [VEl7嶐}1I}!݁t&u 5 w(kR劊vC*zPa_ZV泤,Mo1;Ȟ([:uI ,9Ia;.XsZ)Pǐ L,V(nH"7`aFiW27kB1BVE[T8m>l<9F"ۮ >RG^`>".)Bm({q8HNT"# 糒=j8ce񣰋 Bb1;ckQ@}0yfrpklB2 O;o 4 J0m9OMFiq\lEyrjSX)#fvJ{fF8e7+ىo 3@JBQəXLLDCEfVEb.&M綮=Kg8m# +$Oyy!JW|ƚ!&wj KC-r'KpSEV8KM- ZFϒ&v/۵u '0IڷU 82^aJ[]eUeIR7xNZ2R”$O6q0;b#W$_W>; FaHB/9c$I1I{f 3kf6V?S! lӦCDWB7X(8%R) %( h{4=H " B$q:\ L pVwIKL~ ZmfN?&imG1IRB,\!=1&> KL`015xNew{%d;Ff b# 'c%i hׄIg{n9Sgd'΋VߗdaG 9f%qFM0ɡVTİf@v aYcEPQ^,I{ [gtfđ ([$-ix>)L10q N .m-?wFiIhg[(3Cb8NV H Fօ 3Sդ^5fC#ddLx>3_u&iApiy-upn`0!4u 7z<cb=lNAEaL-ӂ,_^Ƣ#b]2fGbr2)%1ŞpZM^`]} Js])D(Tj&;qO\1*idǫ-W濄."p%C6^n ^PJ:Ero^nG~ui![Xwl̘}Ax0ڹTڪbuV<@phgTT0VRt2X˭Ug}5$&mVVT^*ɑGKH0G-';rE@jb:W.1p0Q8N)PGh⑺18ej,qUaA!W E%t LUNNzѺ1ls{#m<;gp9n{L2ͲL{$+7A"4`GL_eӋFu2omzE-0ّ/y@l[>y ߨR?k<ئ6.F)gBB 5ֈ—|Rw=Њ#h*;=Tx(;Ji㖑S]*D&x<56Yy>E;M{I6J̞+3kűu-)Q"bdM܌JiZoL, KtO($cENXcD^+?mH!n!#Kl"eXh+i+[[Oer}bxԄ2޳5k Zw$ר|jfu3G.b邅$9\R &t%J䭒n {R'NW}л[%=㤀- }6TK_`p% l5bCB#I1&\w&w ܉h5ws'ʌN2 )C;rḍQv2f-KY=M1\L>P8]0L&[;],hqzsl}Ae`h WBa4R77-lqiH&BvA1q,휞+7mm13i3&$` U6kik+ /1􎌨-&b" `"նc/4Bُc&]cm-mkikH&#c4s:皀$H3l=.MTh[,e]*pӊ.х%j/i9Ē ̕++1v qeme NMgqƨe6wiW ̦y/&E FE-,qMǍl^S1+NAbW 6N+l%AfsS8׼,̨){T*>~:*7iNwGz-<_#zN`1?C¤jՋ eZ{mQ/B=<+fp_e'PNːzTLf~JKQo!v,A]CrI }Ʌ +g.N!: Dqu&?;PB3 EڴH3#&nzX%j:AZ6Yq5BiEQBiCf3P5󵣤 x;;BgS.5{rM?݊sΘ6Zsn΍G@ `ꍢ:h5,)@ o1'D"nV$Kr,q! 2=؊ N/ @hE JUS P -z7ov3y3ii3pŖx=M1]=|YD`,.i#ڨ[M]K44X b0sstΎ59cl1SiS&‘b&AU˴VZlKB/lymdݗ6SVZ/{R3,5 );nLUk/7l=] gM3fPhVlsVqHk&^$AB\Zp pzcЛh>fV)Y0eCxсy8&lv2rFɯ&e$bs }Q ?1YWb$= R"HfgE BhR7DHZ=/lF 9۱ک(lI)Q>1\MqVRs%Je6d:h!8kW0a8ݒ#HBB$-)"}-TPKJpw2P:W(DVxm3cn2t沠NP /)DZ٠-{KLauQ'sFRFGVI4򫍑0Ļ` DŒ'9MII44XO a,D.Q|6SMj96Zl淏ܸ.|]zSu歝*@>f_`t:{Η}z6f-U;؞gOW w0y,q3a;i:g'U"K Xʥ 03F\Jl$5-(vFXs#3"qA3G2R&1/e@!*[_DE:6Z-ͳ};7oٺmct!8qVm__W ֛n I@LO6y8QC@[yVvauy% 2d~us|XVU%3fIcؖY't;OS|0AKg ] =RUp~ 'gӏm"ʙ30xtb[VVVq536k&mhb-kzMNhOIJlQl=9dB_d]H%҂(K})LLUTsnm.` n3 Fb6r^O8D$B\&_&pwQx~O:-^md=4}<Wþ=űjfNsp 2/̈ K Xª)8DY<ܳ5xӪI9@O"$<jdO0בxodOKޞ[Ԏh Uq)X}ӣTk}Km7IhyKr9=#-9h(N695@=paj,^"P]z TulzNդP4Lյ| ~l&1fJh("Z4i.rz@-ۣŢ4D\H,9ƨ[\# gwJ#%|jw5{TwI 3Q25睰bL Rm+<$o15J3]EQñ6MbcI^A"Olg۠|-?C9I ޅ hv:eq!0d DB*c Ptd44b4IPyW[gT;*)0'!S$Ɯ  cRYxUgKpM[y;,} $KRXueq<c݇1>/i[ذ,c4H=6aa61e ߂SW?6(.˔ EýhٞLrղmOtlPw9KwTǣ\_!DBhn׳̻/| 9\*Y_`5HxEH!Ԧ+4F!>UN,Q6 Mܿ?^i؋ظ0=W5oNa`xѡ9I֨!Dɲ7lkF`{ pGdčg:*6gMMЂXM'e8(A{G GDV0\3{()1dېD  6Dj?$]#㬝 u% #UPz;JhQB{AA_+\8 Z0FNdL Ʊ옞="'!CGkMJL  ($19+_fޥ=aYl,~%1RU]A.~naz:qȨC*}ZIe bk{^Bn{jka[GWab 2Y>f0:Z-XjNwuh\@4ftȤJÔb1Oæ8l>0.MCJp_{w&mJehh/jm`8uQ| _{u׷:|)3po_ =]7-O}!݁t!G)&q~j V8pBҮ'Zq'; ,Aןxxȧva stkV55\1]oN6D„MɷC-2k=J>|L,^*_sHx9Xo/jX^TC0a>J65%^n'^:^,1PyF1Qnq&Hk-dLښ \FxIU2?;GpFQ 2մc}` `DȞ◔lPfB\!e<)tqh ($T|׾z2^II}w §x]T}L~qȽ'y2䈰ן¿BIQ[^tUťT%~v,ȵyÃmow^=5UBdH+]&Zk[$^;U"[)#9-k$Yf`0q͏VȐPKtJB7=>?$x*Y lǾY.- M)r(BK"2;:.mqB7F\  Lf)[vlI)/-"K9^sD zJ=Lr& oBd% HcJHE 2.! $"Hw:0Rn ~07-m|?H2 r 0p\!#rŒ?p'1<9L$}Nh_+]MU$P2W@a8hy%?T>WPr Fapzh Si8Y*ד*8 h2UA&j;68 %D)0&80EBb1)SS N*OtplLj:i`|i»pLAi:WLRoLk5s8 ~:V&:f\GbIz? Xfyo ,dO|Rmm8=sȤ 7r#gap -Mh]nzlApV˦wQḿ,@Ýt@1 :QP"@.נw9=[` PPG`ljra4_qLʲH6P$9T5մLD&n=3Y JI5`OKhVŠaYYhkԑ2hjؘf u]XY @4WzFQϐ8ھWFt~],K,*Lt/0sD$Ro[1G4bِ|Xn$W;%G0~ce –/8xZy  N#L5k.`p#(#G~!dmJ-˸3 ^7HHJ\!029]p Y+uu$`qE̍jɂVh{j(tBc3^ٌ5Mi)Tl=WHO4W_bxT0I8>m26%fF4u`zm jg vnc,CovL3G='ZOs<|*ɣvicS{rC P$܈uH&&-ЧS|.CA|3J|[ ?3EŨR`!%fvmN;8_ǘ'U@,;.򜒞5گ(d-RzIw(+wy xD+eh.iS[ 8[پIJ'}YUe_Dخ )? $3f3jh &N{>>>^CN'>+f5}EI>ɞ/2;s%`_XѠP$sbH 4w3 6huEY*FV~J蜴F-;eOZHǪtf#.Ohz_Id8O@ƾj,OvTFN 3=r##p{G22~?9 0.:n(a*jK9PɎrUt-gTBjm fi-{J F"hkF8ZPm=d =@t7iph-苁p!8I8Wdw%&6w2c%Vdit;-$pku^dTuy<| 9ꯘ{SxUD'+o퐌~"iGT`Sb9,tCֲ% '_zR poYЯ7Ö!I( _c HL>˼&S30 C/;K-_Et.`D"c&#΋]9 MrxĆW)Jq_2`$1jK%NG2ՑuQ1[vHzIv>UK#k!Z=/  ׸y %6m@? Jtbt% Ye@#:h\36I1LKu.giwD|j)ߋh9iO+`S5_SW|,Hjd&p{NN{!dK(ɏ@I( "2_^k]&ؔ9iIomZqkTH̜:aVыhfC! HM(]e"=`Lg׵&/6IUa >Ypk6 XNce^8wMF. `ءU{Eu>Gg3؃"Sy0Ő F O;1MSx7ꪙ=QqKNL mo}t3m.bq$7i8{Ն/ks#k؉u\ Ne+hY.9z*Eƒ"s,Bzv-]\5-t$dk-LBvZ % 8=j1k"KD $węwbq$^Woݫ BQ^+hg(!r-wdda4Sb{g\f3[ꑟl>'%e%<ZWXHSyVP%UxR\\zC1v}8}Omyjrqy9FLv}h;8Nwg`|,L"ú4O\A3qjUku JI|Pf:GʣPL`̾- :@A@xxМD#'ԲG4 }5.W%X : 歛sk@ Ǚ.}:0Dkqh[ZT*^#J@E=]і*`fPjEXm{T .\됬D(-2DMԈJEGe<@0I0jqJ0o5FM'JeuS{. K/d w+sdխbf,ZlM7n)9мeBnJHlO@J{\a}cpfc~.%}d$2#1y:]Ȗp2Ag|w|;?)NY~R^|W@9D3!Z~TbpV,aKp˼;*_ONMe@XK8PVi^ɆI4 s%jDCѴ 9T}ZW6VTfl3SQ-nZv`ni-NNڒ 玝1+ʴpD_Y<5xTɑ"kZfZWr֋bksl4mH0 l ;z%?vƎ!ɥ. %rB$K&8RdvjIBHPH<1(O b߯E:oUZ+ >#}K/*6ǘ(Eay|R}2cZ')'i1np\qO/RmXs'^>ƛ>r_E˼,?3ګ]70 \=EZУk_ ^/#봳 \m|J[wq?Nyg3׬+M8g+YCO@[Au|;܃bvv)I׆u~\NXXL6ow>  ~w>}op~^m︼m_o+o]۽oǽn\gw'wzCxt[pCO룸=vpvvI v0~?w?K9뢸<=q1f'` zw=y7N(5ɺpIs~K:kn"u Mp|K\Ij?jiCJo)tLRBqċ\jF@Y>͍$/ó2~'?{͉/}mC_P~S8}2/Zi> ||uA=ދSg޷3wpgL=~jo Qǻ箿~~;>ﶿ~N+O\WOojtߗ~SRnno?~ ?~Ka[xu=(?uH|/uFeॵ;.OHωg?2/߷^ǧQ5S`%zO2uϾǃ?Gr2YYW>e-O~=L}}ǛgO[L=MPUxӫ]龵Uk.(S?)~w2+yԳ}{?~eǞT/|*W_JI >]^=O y(aqBu1g,QX|С4CNzzR@])3"'xpq :\5jEԖ.= jpJ jm(hsuqz2g6O+G#'38"rr9=L.i@;vp٫;aPMwe) ZPIE~)f~m̯5Y9.g6u䦗~rs9Y'杆%~]LJz&d~8@sufS]rEsmSJu7\s]&uh4݈F)7L^6jo#MZv0u"V:Y}l]_'yՐ&5q7W+kUaenw}]Nӻ+ݕKu:zi^ZG/Ku:h}>ZGGu:h~ZG?Ou:i~Z崎i:.u\2w4Wmt?B5HdW\(Ns@wD|==HC:vKV4_w'Km^Ȝ-.yӰߧo}jY.nJ6&}ؚAG}l#'CqIgˎ?},w6~x3y4( 4=G)uc,GPZ%iM0,mh `zH۶mS7՛tsBskQVRɶE 飶79(J:T?=Ԩc9Y% xb_<]R!tX.`Ě1Wvi=.&J"e ҼlAs&c [|WD+~3d!f;`ʼn4jka=9KI\hev.SL gY.I&Ռ\wwڈFiy`tdŧBW{Xj"&E(*~ ih3. W Xy_ w&EDbvA? JCrOG'!)?È4⨮4*m J&0Φ3[o-}enYX[J1_ɇ/p.?n),fzs_JJYܽ Ƅ%GOzF= pC`:75x#׾zyMಧ|Wyzt;׿koOοKGҭx2vӃw'/|iKuӿ}sx߾Ƿn?x?ym"WsU˧^{;qJ.aև;oz}wx?sҁ'5Op3 }k_?A0lg^_?增m?=ӭ%7tyo回0c_˓y?~}|g]Û#+Bn;!Bny}qBЖiBTN'|1F= '.RFE 'dN7K8InLrS"-26qsHOʎʿחNi.c;v>89Ȭ*\{+WLDr6+q=iBUBkdpQS !d\B{OakvtU$Dɋ~k>Mm`G=}'q)aa`L&U P,Z%Wm=gûhdh⍢Y-tޞ8%K𑌱>dm(I(MҮzrm`l"2O,d۞Sr#+UdX+Kc%8zkׄ[Z-,O˷^i-rvm4b.r|[V]t4V]4_/^w K{COyHR/t6c: o\:f5/!Z/ŷ)\eYꕭz֍Y|g1S\87ӵl)%OS5^懤 QYҒSZrS8tgaA`n1Y̺iiKR#iʒN,ʬVPF3(jǰZ|uǘiB%?A9%WH4ƅ>bGC1k1s~]/c *rlCog)Ɔ#ڣy0᭑ ~Pɮg^ kecz0㸮 DBrᾌ<,afex/tests/testthat/test-afex_plot-vignette.R0000644000176200001440000001225614415525453021121 0ustar liggesuserstest_that("glmmTMB object", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") skip_on_cran() skip_if_not_installed("glmmTMB") library("glmmTMB") set_sum_contrasts() tmb2 <- glmmTMB(count~spp * mined + (1|site), ziformula = ~spp * mined, family=nbinom2, Salamanders) # tmb <- tmb2 # save(tmb, file = "inst/extdata/tmb_example_fit.rda", # compress = "xz") #load(system.file("extdata/", "tmb_example_fit.rda", package = "afex")) ## previous versions checked for equivalence of summary() or coef(), but that ## seems unnecessary and did fail at some point ## (i.e., summary() on old glmmTMB object failed) # expect_equivalent(coef(tmb), #summary(tmb), # coef(tmb2), #summary(tmb2), # tolerance = 0.001) skip_if_not_installed("cowplot") skip_if_not_installed("ggplot2") library("ggplot2") p1n <- afex_plot(tmb2, "spp") p2n <- afex_plot(tmb2, "spp", data_geom = geom_violin) p3n <- afex_plot(tmb2, "spp", id = "site", data = Salamanders) expect_doppelganger("afex_plot: glmmTMB 1", p1n) expect_doppelganger("afex_plot: glmmTMB 2", p2n) expect_doppelganger("afex_plot: glmmTMB 3", p3n) }) test_that("rstanarm plots", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") skip_on_cran() #skip_on_ci() skip_if_not_installed("rstanarm") library("rstanarm") ## requires resetting the ggplot2 theme skip_if_not_installed("ggplot2") library("ggplot2") set_sum_contrasts() load("afex_plot-rstanarm.rda") ## comparison values tol <- 0.1 cbpp <- lme4::cbpp cbpp$prob <- with(cbpp, incidence / size) suppressWarnings(capture_output({ example_model <- rstanarm::stan_glmer(prob ~ period + (1|herd), data = cbpp, family = binomial, weight = size, chains = 2, cores = 1, seed = 12345, iter = 1000, warmup = 500) })) b1d <- afex_plot(example_model, "period", return = "data") expect_equal(b1d, rstanenv$b1d, tolerance = tol) ## make cbpp long cbpp_l <- vector("list", nrow(cbpp)) for (i in seq_along(cbpp_l)) { cbpp_l[[i]] <- data.frame( herd = cbpp$herd[i], period = cbpp$period[i], incidence = rep(0, cbpp$size[i]) ) cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1 } cbpp_l <- do.call("rbind", cbpp_l) cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd)) cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period)) suppressWarnings(capture_output({ example_model2 <- rstanarm::stan_glmer(incidence ~ period + (1|herd), data = cbpp_l, family = binomial, chains = 2, cores = 1, seed = 12345, iter = 1000) })) b3d <- afex_plot(example_model2, "period", return = "data") b4d <- afex_plot(example_model2, "period", id = "herd", return = "data") expect_equal(b3d, rstanenv$b3d, tolerance = tol) expect_equal(b4d, rstanenv$b4d, tolerance = tol) skip_if_not_installed("MEMSS") data("Machines", package = "MEMSS") suppressWarnings(capture_output({ mm <- rstanarm::stan_lmer(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 1000) })) b5d <- afex_plot(mm, "Machine", return = "data") b6d <- afex_plot(mm, "Machine", id = "Worker", return = "data") expect_equal(b5d, rstanenv$b5d, tolerance = tol) expect_equal(b6d, rstanenv$b6d, tolerance = tol) #### save # rstanenv <- new.env() # rstanenv$b1d <- b1d # rstanenv$b3d <- b3d # rstanenv$b4d <- b4d # rstanenv$b5d <- b5d # rstanenv$b6d <- b6d # ls(envir = rstanenv) # save(rstanenv, file = "tests/testthat/afex_plot-rstanarm.rda") }) test_that("brms plots", { testthat::skip_if_not_installed("emmeans") testthat::skip_if_not_installed("ggplot2") skip_on_cran() #skip_on_os("windows") skip_if_not_installed("brms") library("brms") ## requires resetting the ggplot2 theme skip_if_not_installed("ggplot2") skip_if_not_installed("MEMSS") library("ggplot2") set_sum_contrasts() data("Machines", package = "MEMSS") suppressWarnings(capture_output({ mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 1000) })) bb1n <- afex_plot(mm2, "Machine", data = Machines, dv = "score", return = "data") bb2n <- afex_plot(mm2, "Machine", id = "Worker", data = Machines, dv = "score", return = "data") load("afex_plot-brms.rda") expect_equal(bb1n, brmslist$bb1n, tolerance = 5) expect_equal(bb2n, brmslist$bb2n, tolerance = 5) # brmslist <- list( # bb1n = bb1n, # bb2n = bb2n # ) # save(brmslist, file = "tests/testthat/afex_plot-brms.rda") expect_error(afex_plot(mm2, "Machine", data = Machines), "Could not detect dv column") }) afex/tests/testthat.R0000644000176200001440000000007013664111747014331 0ustar liggesuserslibrary(testthat) library(afex) test_check("afex") afex/MD50000644000176200001440000003151614665110732011520 0ustar liggesusers747faa0992bc45b7f33f945a3f2ffc90 *DESCRIPTION 9deb545643f73e36d4059c7c241326cc *NAMESPACE 24251f5ce2fa41980818cf7a159c9c47 *NEWS c54aca7f3c622ffa63d2f586a00999f4 *R/afex-package.R 237a106a6d5f349b0ecafd6e6814abc6 *R/afex_plot.R 697c67ce7ace1ccf3f943ec9a2612dd1 *R/afex_plot_plotting_functions.R b16999516c791ae8260a2d5ccaf76c6a *R/afex_plot_utils.R 4bb43c2d8a06a8ef37e20af6714a65b6 *R/aov_car.R 5b5a5ab970991775aafa5141361ba6fd *R/compare.2.vectors.R 05feb134d51743de1050d77702c61a93 *R/deprecated.R bb37dc01c8774e991ea96ae291f105bf *R/ems.R abb2ccbe363b89d79bf950de26537a0a *R/fhch2010-data.R 0a8543fe9ad185bf2be5fc9f8b378add *R/helpers.R f484a2891f769af0778d7295f6556e49 *R/ks2013.3-data.R 25539c28c7decc0e06805c9161b5d8a6 *R/laptop_urry-data.R 68a8110f85a87c51bb32660e6342fec5 *R/lmerTest_utils.R ed8a50281ff47370a11a28ed3d061c61 *R/md_12.1-data.R 7de7557aef96b1ba615bf51cef5201fd *R/md_15.1-data.R 8761a7d8052bda59468c67683f595cb0 *R/md_16.1-data.R efd9ac90bf84f209488f73b82a47d1fa *R/md_16.4-data.R 69f63adffdb9a10d9ae5df1166c54dd6 *R/methods.afex_aov.R 791fb21291cc5fec25d023c12ae5ddd5 *R/mixed.R e26cd31c4dc820e1a673b98af4129779 *R/nice.R f4f4a684611b79e3ad013175d6da479b *R/obk.long-data.R c6d85820a1d301dca9d320dcf59c3cc1 *R/predict.R 0010f31aac9b17a630749f5fca09f252 *R/reexport.R 3aac2332241180403e8e9fc236465be9 *R/residuals.R 884ed62e0efadb6d58628b170e43a5a3 *R/round_ps.R abc252494871e78961adb56c0ac2e11b *R/set_contrasts.R 8ed2be5203994d149b25c0bbac75fe33 *R/sk2011.1-data.R 50834454549aac18f646d46b2c9f338d *R/sk2011.2-data.R 4dfc4f458c9bc3be0f024de81a693ec6 *R/stroop-data.R 4f8dff9458de7c2cb13abcf4f60de502 *R/utils.R 60763ce161241e75e7d4618d6f918114 *R/zzz.R de9af49550f0790382d25843c75d26b9 *README.md 1a037f8f0372bb5617b834f41a5d444f *build/partial.rdb 5eeb412b4870e603520629ffcf6ea1db *build/vignette.rds 67d99926047ef78d0e5dd54b89ae9eb7 *data/fhch2010.rda dc520acd438387964b4561483968f18e *data/ks2013.3.rda 0a0c718ec56f4a1d0f6798a2fb8fb967 *data/laptop_urry.rda 4df2c0c2a5a52ff004bd015e90f8e328 *data/md_12.1.rda 5722056139ad1750e737931076c518d2 *data/md_15.1.rda c5cbc6a44d15c506cf4a913a1e453e86 *data/md_16.1.rda dbe295d0e59a0fd4cf4b73965ddfd16b *data/md_16.4.rda 387538b02807392eef5f8de5b6f55cd7 *data/obk.long.rda 87a9f9f971f46d20fb440385652b3771 *data/sk2011.1.rda 30d68b1cca41bab8e71a24b7b48489be *data/sk2011.2.rda 9275bf3a99cd99755aa5c94ad273e096 *data/stroop.rda b57fe6b20d2b380f0425d739a59a9b3d *inst/doc/afex_analysing_accuracy_data.R b2f4e5294cf79d92c4cc21ddea5859a5 *inst/doc/afex_analysing_accuracy_data.Rmd f7db2c9badb87f6bfacc2a573cf606cd *inst/doc/afex_analysing_accuracy_data.html d9ae2c19dff09ad567e744d9130db882 *inst/doc/afex_anova_example.R cffef095d88d1b233b11709573419c8f *inst/doc/afex_anova_example.Rmd 99ecc2754d39c1be8a7576ddcb0ee395 *inst/doc/afex_anova_example.html 7c5d4e94f7a4d6cbb02df182ae60c43b *inst/doc/afex_mixed_example.R ee7a7adbf960fcbbb68f5e888d817458 *inst/doc/afex_mixed_example.Rmd 5c21a02bd34b30b2f76b6ea1a01c8ce1 *inst/doc/afex_mixed_example.html aea9922664057628f34b799bb5291b92 *inst/doc/afex_plot_introduction.R f11171192dd39a1a1abd8b66d7d54da9 *inst/doc/afex_plot_introduction.Rmd b5cb5a2e36b7bfc18b069fbb496baf75 *inst/doc/afex_plot_introduction.html d6c20653fde18fd9d526bdba608e5227 *inst/doc/afex_plot_supported_models.R ec8f24b2de5fe79d3a2badbfe3bad127 *inst/doc/afex_plot_supported_models.Rmd c70fb918c4bacab0e54527d189f9a2ee *inst/doc/afex_plot_supported_models.html a68604890b7fec821a1dd52770cbaa76 *inst/doc/assumptions_of_ANOVAs.R c707c4a6037932ee0ec1b2063bc7c52a *inst/doc/assumptions_of_ANOVAs.Rmd caa4b358a2d53c3193f63f876bbaff9d *inst/doc/assumptions_of_ANOVAs.html 7e7a3e4a029f7f1b59b8bec52e1431b8 *inst/doc/introduction-mixed-models.pdf 7a06a8abee3f7b7865e044a3b0a9d802 *inst/doc/introduction-mixed-models.pdf.asis 5f1859daab9bc94dc9121023fcc9e47d *inst/extdata/output_afex_plot_mixed_vignette.rda c87ef7012013410390a9619b959eeddf *inst/extdata/output_afex_plot_mixed_vignette_model.rda 0518c2eabbd1e912bf8c6f9d881dc37f *inst/extdata/output_mixed_vignette.rda 19b63592c6872a1baf50b044b1171406 *inst/extdata/outputs_glmm_vignette.rda fe79ae81e7146bba144e5ffbe7ebe468 *inst/extdata/plots_brms.rda e51b658359b6285e53c14fd01ae1a2e6 *inst/extdata/plots_rstanarm.rda b6742d5bfe1d86e503c8260b515c3a2a *inst/extdata/tmb_example_fit.rda 82506051b9b087ba2ef20765c8ac6c74 *man/afex-package.Rd 8731ddaba19e87cff7204e121f64d9a5 *man/afex_aov-methods.Rd 8ecd73d107a696e23a5fbcbd61c36d00 *man/afex_options.Rd 6661fec2f6395902f6f351e75d150038 *man/afex_plot.Rd 75757411e10ac5bfc27048c7656af132 *man/aov_car.Rd e3de35a9b317358e0a255ec5a646f7a6 *man/compare.2.vectors.Rd 565125e63c0314a4ae296b96185a8e87 *man/deprecated.Rd 159d9a385838ea62e0198b710b5553e1 *man/ems.Rd 2e04a9a7372242bc7bfc2cc3a0eca4e3 *man/fhch2010.Rd ec8bd69d6acbca748c773714e2bd4baf *man/figures/README-unnamed-chunk-17-1.png c93048113335f86aa5636298f2dbe3e6 *man/figures/README-unnamed-chunk-18-1.png 681e173bd1dc91e4162df5340944f809 *man/figures/README-unnamed-chunk-19-1.png 1962402182bb153800da2547384dd50f *man/figures/README-unnamed-chunk-6-1.png b2e160c1be0f6c4c9b555f5077f891c2 *man/figures/README-unnamed-chunk-7-1.png 82393746f43a00810b5a74e2ba160816 *man/ks2013.3.Rd ca5ea13c3371b53610ad70063ba91e91 *man/laptop_urry.Rd 56786b695cba78e59c962bb05211d365 *man/md_12.1.Rd a79d3e7b6cc9caf347cfadc4a32f66a8 *man/md_15.1.Rd 12564519f974db19d2fcaaddc0e1ca25 *man/md_16.1.Rd bd91c2867b41314bd5e07a53a2921e4a *man/md_16.4.Rd 79c7c4dac29d6ef290b564774d6e9999 *man/mixed.Rd 8255277543c281cf57410cd570808afc *man/nice.Rd 4d65a1fb80548509757c5c1ff3488a16 *man/obk.long.Rd 8c6823fdbe4ce532eafa0a3d5477d973 *man/predict.afex_aov.Rd 17e1c5210d2e6ab226a70df8c9178512 *man/reexports.Rd 91a902ed2d9848ebe49b2ba02276c8e2 *man/residuals.afex_aov.Rd 47d015be0d9b616aebdb453073af9f31 *man/round_ps.Rd 9eaee6215c833fae87ee3eb3ce93f6b1 *man/set_sum_contrasts.Rd 60d4ae785ecaea1546f696c8336bda34 *man/sk2011.1.Rd 9c91dea2ec292b4e18a06cba516ef29c *man/sk2011.2.Rd c006ecc3b3538fb8593b5ba9f3289576 *man/stroop.Rd 24ef3ebe1b7dec6e3a22760eab1ab2f4 *tests/testthat.R 48e8fd3f41ae6ee13eabdd60b11fc131 *tests/testthat/_snaps/afex_plot-basics/afex-plot-connecting-individual-points-works.svg cbca2f9fd30c9bcbff554bb9861eea5d *tests/testthat/_snaps/afex_plot-basics/geoms-work-box-plot.svg 6e36874ec96a68acb98553cd5a1c048c *tests/testthat/_snaps/afex_plot-basics/geoms-work-boxjitter-1.svg 7d4a3cb5f9c755f1a8b20366c427570b *tests/testthat/_snaps/afex_plot-basics/geoms-work-boxjitter-2.svg e250d8ea75eff9603c04264240c9ad41 *tests/testthat/_snaps/afex_plot-basics/geoms-work-boxjitter-3.svg 28f907057f811185fcb388f6a05a54a5 *tests/testthat/_snaps/afex_plot-basics/geoms-work-geom-count.svg e683c2641feef7c7ea9f1c0a51a58017 *tests/testthat/_snaps/afex_plot-basics/geoms-work-ggbeeswarm-geom-beeswarm.svg 015e36f0c829d0540bb337d837fde596 *tests/testthat/_snaps/afex_plot-basics/geoms-work-ggbeeswarm-geom-quasirandom.svg 8372c0448856469ac49388cf04bcc9e2 *tests/testthat/_snaps/afex_plot-basics/geoms-work-jitterdodge.svg baab723049e154e01de7e714939d25a8 *tests/testthat/_snaps/afex_plot-basics/geoms-work-violin-with-colour.svg 85af1efa03499bca6398584fdc6f77dc *tests/testthat/_snaps/afex_plot-basics/geoms-work-violin.svg cadbec42beb6ec69e006333878090c6b *tests/testthat/_snaps/afex_plot-basics/lme4-mermod-plot-1.svg 015d7108f244f05d0fa2e735818e3ae6 *tests/testthat/_snaps/afex_plot-basics/lme4-mermod-plot-2.svg b0c86eae2a1300175240111d6fa74044 *tests/testthat/_snaps/afex_plot-basics/lme4-mermod-plot-3.svg 41403025f9f004c3510e1423952557e5 *tests/testthat/_snaps/afex_plot-basics/mixed-model-1.svg 7cc9e390bfb6f314434eb43ce02e498d *tests/testthat/_snaps/afex_plot-basics/mixed-model-2.svg 5c1a5203d2831df248913e28670eca93 *tests/testthat/_snaps/afex_plot-basics/mixed-model-3.svg 8aaebcbb47243f4da7712669fa9b9a9f *tests/testthat/_snaps/afex_plot-basics/mixed-model-4.svg 1fcc46f49fed21bc5d4b787e991a674a *tests/testthat/_snaps/afex_plot-basics/multiple-geoms-work-1.svg 058a0aa46b6ac3764dd1f440cb9ba4f0 *tests/testthat/_snaps/afex_plot-basics/multiple-geoms-work-2.svg 9602623693a2829ca3f45e773847364c *tests/testthat/_snaps/afex_plot-basics/one-way-within.svg 0265c5d027db80270dd064d656b14c5f *tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-1.svg d2bacd5c726d617f993f2cb0127aa446 *tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-2.svg f1cf4242ba3af8bc109ad6a00c95d943 *tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-3.svg 20e51978fa9a4fc589d350e18568dbff *tests/testthat/_snaps/afex_plot-basics/plot-first-for-afex-plot-works-4.svg 53964eeee09c953e5d9d5016212ee20b *tests/testthat/_snaps/afex_plot-basics/two-way.svg 2f2bc0515cb655c95aefbcadc7240bc5 *tests/testthat/_snaps/afex_plot-basics/x-trace-panel.svg 7e1a7c4480f055bea915c8c595eecf32 *tests/testthat/_snaps/afex_plot-bugs/afex-plot-binomial-glm-with-factor-2.svg bbfccb83d2d935db34a2cd2f3a205bc7 *tests/testthat/_snaps/afex_plot-bugs/afex-plot-binomial-glm-with-factor.svg 7c90aa8063938c828e4089b7fa10a0c1 *tests/testthat/_snaps/afex_plot-bugs/afex-plot-dv-y-works.svg 4c289fd3ee8e3e02260118d936f09ed6 *tests/testthat/_snaps/afex_plot-bugs/afex-plot-lmm-type-2.svg 131e8f6e2ab2ae95339f8ad7c317cdd9 *tests/testthat/_snaps/afex_plot-bugs/afex-plot-mermod-objects-with-missing-data.svg 470cd740d91ecf941f285c035a573a50 *tests/testthat/_snaps/afex_plot-default-support/afex-plots-binomial-glm-1.svg fb06c2e75029387b6d71b412d228e24c *tests/testthat/_snaps/afex_plot-default-support/afex-plots-binomial-glm-2.svg f1b9ac731a8de9e46ca0647bdb1c2a40 *tests/testthat/_snaps/afex_plot-default-support/afex-plots-lm-model-1.svg d2d0313aa490b58322a45be8a519536f *tests/testthat/_snaps/afex_plot-default-support/afex-plots-lm-model-2.svg 752364ab495092eca9e32bd4ecd051a4 *tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-1.svg dc6c458900a47debe67e586107e71fe6 *tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-2.svg 1ea92166d565112aa23afcf1aed672ac *tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-3.svg 90188a14eabd0832ac749ef11a8f5d83 *tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-4.svg f806756486fb7356cb87280f36c91bdf *tests/testthat/_snaps/afex_plot-default-support/afex-plots-nlme-5.svg 07e481f9c782f3a6e1d69b59dd583be6 *tests/testthat/_snaps/afex_plot-default-support/afex-plots-poisson-glm-1.svg a452c4a4925d5f55a8625cc497859785 *tests/testthat/_snaps/afex_plot-default-support/afex-plots-poisson-glm-2.svg 8a466bbb9291a2580d22cc4049f70ed9 *tests/testthat/_snaps/afex_plot-vignette/afex-plot-glmmtmb-1.svg d1ca56386451e5746bcd5aea4f1b87bf *tests/testthat/_snaps/afex_plot-vignette/afex-plot-glmmtmb-2.svg ab22d795649fc67b7ec2dd59520a6c5d *tests/testthat/_snaps/afex_plot-vignette/afex-plot-glmmtmb-3.svg f85b110afca888b2a29075ea44b239e4 *tests/testthat/afex_aov_16_1.rda 4fb5b6f125b1f191fa644f1689c4965e *tests/testthat/afex_plot-brms.rda 0a6944e8b78121d3b9740a1323b3c74c *tests/testthat/afex_plot-rstanarm.rda 72be28e9b3a9a84dcdc46c417c2681e7 *tests/testthat/anova_hf_error.rda 90f0439dfeddbb83153bcebf3113e60b *tests/testthat/helper-vdiffr.R 8e1d7042dd7d30ae9eb8734f0080e5bd *tests/testthat/lmm_old_object.rda 34150eb0876b348943477a65c6e8a7e9 *tests/testthat/m_machines_lmerTest-pre3.0.rda 6c14ea76e8082da1001761f83c2cdd64 *tests/testthat/mixed_with_dot.rda e8702664d6fc21d9138c2061c16150e1 *tests/testthat/skf_issue.csv 0f79b314eccad8e1c5861bd84caa3b9b *tests/testthat/test-afex_aov.R aa5001d6917b080d95f0bd4046d3d94f *tests/testthat/test-afex_plot-basics.R 4433e44bf3bf3b60038ee02197f511e4 *tests/testthat/test-afex_plot-bugs.R d52d3cd31f538547d976eb70f35e0155 *tests/testthat/test-afex_plot-default-support.R b07ac7abb334760a54d7389cf23e72a7 *tests/testthat/test-afex_plot-vignette.R 51ea54493e8be0fc0623cfdf34b173d7 *tests/testthat/test-aov_car-basic.R b05882571161f2abb16c64602d6afc84 *tests/testthat/test-aov_car-bugs.R 613cf2655229d1d873f3a7a908665910 *tests/testthat/test-aov_car-structural.R b06950f36237997bd95475ae5bbdb0ab *tests/testthat/test-compare_2_vectors.R 4c9a55078ba827a2ff7024abbb695d2a *tests/testthat/test-emmeans-interface.R fcb2759e0aa312b06dd5dccdcee58a28 *tests/testthat/test-lmerTest-support.R a97ad73eb10980f83c8cf1ee21446dba *tests/testthat/test-mixed-bugs.R f50a54a9e9740897e7191294bd549aab *tests/testthat/test-mixed-effects.R 592c79d3776fd8cc8ff7bc5e4448e154 *tests/testthat/test-mixed-mw.R defe755760117da1491a22a095de45be *tests/testthat/test-mixed-structure.R eb21a8ec751d39f2024a999bd888db4f *tests/testthat/test-predict.R 939a4580c65808088a0262a0c90859cb *tests/testthat/test-residuals.R b2f4e5294cf79d92c4cc21ddea5859a5 *vignettes/afex_analysing_accuracy_data.Rmd cffef095d88d1b233b11709573419c8f *vignettes/afex_anova_example.Rmd ee7a7adbf960fcbbb68f5e888d817458 *vignettes/afex_mixed_example.Rmd f11171192dd39a1a1abd8b66d7d54da9 *vignettes/afex_plot_introduction.Rmd ec8f24b2de5fe79d3a2badbfe3bad127 *vignettes/afex_plot_supported_models.Rmd c707c4a6037932ee0ec1b2063bc7c52a *vignettes/assumptions_of_ANOVAs.Rmd 7a06a8abee3f7b7865e044a3b0a9d802 *vignettes/introduction-mixed-models.pdf.asis afex/R/0000755000176200001440000000000014554163542011407 5ustar liggesusersafex/R/aov_car.R0000644000176200001440000011360414432737501013146 0ustar liggesusers#' Convenient ANOVA estimation for factorial designs #' #' These functions allow convenient specification of any type of ANOVAs (i.e., #' purely within-subjects ANOVAs, purely between-subjects ANOVAs, and mixed #' between-within or split-plot ANOVAs) for data in the \strong{long} format #' (i.e., one observation per row). If the data has more than one observation #' per individual and cell of the design (e.g., multiple responses per #' condition), the data will be automatically aggregated. The default settings #' reproduce results from commercial statistical packages such as SPSS or SAS. #' \code{aov_ez} is called specifying the factors as character vectors, #' \code{aov_car} is called using a formula similar to \code{\link{aov}} #' specifying an error strata for the within-subject factor(s), and \code{aov_4} #' is called with a \pkg{lme4}-like formula (all ANOVA functions return #' identical results). The returned object can be passed to e.g., \pkg{emmeans} #' for further analysis (e.g., follow-up tests, contrasts, plotting, etc.). #' These functions employ \code{\link[car]{Anova}} (from the \pkg{car} package) #' to provide test of effects avoiding the somewhat unhandy format of #' \code{car::Anova}. #' #' #' @param id \code{character} vector (of length 1) indicating the subject #' identifier column in \code{data}. #' @param dv \code{character} vector (of length 1) indicating the column #' containing the \strong{dependent variable} in \code{data}. #' @param between \code{character} vector indicating the #' \strong{between}-subject(s) factor(s)/column(s) in \code{data}. Default is #' \code{NULL} indicating no between-subjects factors. #' @param within \code{character} vector indicating the #' \strong{within}-subject(s)(or repeated-measures) factor(s)/column(s) in #' \code{data}. Default is \code{NULL} indicating no within-subjects factors. #' @param covariate \code{character} vector indicating the between-subject(s) #' covariate(s) (i.e., column(s)) in \code{data}. Default is \code{NULL} #' indicating no covariates. Please note that \code{factorize} needs to be set #' to \code{FALSE} in case the covariate is numeric and should be treated as #' such. #' @param observed \code{character} vector indicating which of the variables are #' observed (i.e, measured) as compared to experimentally manipulated. The #' default effect size reported (generalized eta-squared) requires correct #' specification of the observed (in contrast to manipulated) variables. #' @param formula A formula specifying the ANOVA model similar to #' \code{\link{aov}} (for \code{aov_car} or similar to \code{lme4:lmer} for #' \code{aov_4}). Must include an error term (i.e., \code{Error(id/...)} for #' \code{aov_car} or \code{(...|id)} for \code{aov_4}). Note that the #' within-subject factors do not need to be outside the Error term (this #' contrasts with \code{aov}). See Details. #' @param data A \code{data.frame} containing the data. Mandatory. #' @param fun_aggregate The function for aggregating the data before running the #' ANOVA if there is more than one observation per individual and cell of the #' design. The default \code{NULL} issues a warning if aggregation is #' necessary and uses \code{\link{mean}}. Pass \code{mean} directly to avoid #' the warning. #' @param transformation In \code{aov_ez}, a \code{character} vector (of length #' 1) indicating the name of a transformation to apply to \code{dv} before #' fitting the model. If missing, no transformation is applied. In #' \code{aov_car} and \code{aov_4}, a response transformation may be #' incorporated in the left-hand side of \code{formula}. #' @param type The type of sums of squares for the ANOVA. The default is given #' by \code{afex_options("type")}, which is \strong{initially set to 3}. #' Passed to \code{\link[car]{Anova}}. Possible values are \code{"II"}, #' \code{"III"}, \code{2}, or \code{3}. #' @param factorize logical. Should between subject factors be factorized (with #' note) before running the analysis. The default is given by #' \code{afex_options("factorize")}, which is initially \code{TRUE}. If one #' wants to run an ANCOVA, this needs to be set to \code{FALSE} (in which case #' centering on 0 is checked on numeric variables). #' @param print.formula \code{aov_ez} and \code{aov_4} are wrapper for #' \code{aov_car}. This boolean argument indicates whether the formula in the #' call to \code{car.aov} should be printed. #' @param anova_table \code{list} of further arguments passed to function #' producing the ANOVA table. Arguments such as \code{es} (effect size) or #' \code{correction} are passed to either \code{anova.afex_aov} or #' \code{nice}. Note that those settings can also be changed once an object of #' class \code{afex_aov} is created by invoking the \code{anova} method #' directly. #' @param include_aov Boolean. Allows suppressing the calculation of the aov #' object. If TRUE the aov model is part of the returned \code{afex_aov} #' object. \code{FALSE} (the default) prevents this potentially costly #' calculation. Especially for designs with larger N and within-subjects #' factors, this is highly advisable. Follow-up analyses using \pkg{emmeans} #' using the \code{univariate} model (which is not recommended) require the #' aov model and TRUE. #' @param ... Further arguments passed to \code{fun_aggregate}. #' @param return What should be returned? The default is given by #' \code{afex_options("return_aov")}, which is initially \code{"afex_aov"}, #' returning an S3 object of class \code{afex_aov} for which various #' \link[=afex_aov-methods]{methods} exist (see there and below for more #' details). Other values are currently still supported for backward #' compatibility. # To avoid the (potentially costly) computation via \code{aov} set # \code{return} to \code{"nice"} in which case only the nice ANOVA table is # returned (produced by \code{\link{nice}}, this was the previous default # return value). # Possible values are \code{c("Anova", "lm", "data", "nice", "full", "all", # "univariate", "marginal", "aov")} (possibly abbreviated). #' #' @return \code{aov_car}, \code{aov_4}, and \code{aov_ez} are wrappers for #' \code{\link[car]{Anova}} and \code{\link{aov}}, the return value is #' dependent on the \code{return} argument. Per default, an S3 object of class #' \code{"afex_aov"} is returned containing the following slots: #' #' \describe{ #' \item{\code{"anova_table"}}{An ANOVA table of class \code{c("anova", #' "data.frame")}.} #' \item{\code{"aov"}}{\code{aov} object returned from \code{\link{aov}} #' (should not be used to evaluate significance of effects, but can be passed #' to \code{emmeans} for post-hoc tests).} #' \item{\code{"Anova"}}{object returned from \code{\link[car]{Anova}}, an #' object of class \code{"Anova.mlm"} (if within-subjects factors are present) #' or of class \code{c("anova", "data.frame")}.} #' \item{\code{"lm"}}{the object fitted with \code{lm} and passed to #' \code{Anova} (i.e., an object of class \code{"lm"} or \code{"mlm"}). Also #' returned if \code{return = "lm"}.} #' \item{\code{"data"}}{a list containing: (1) \code{long} (the possibly #' aggregated data in long format used for \code{aov}), \code{wide} (the data #' used to fit the \code{lm} object), and \code{idata} (if within-subject #' factors are present, the \code{idata} argument passed to #' \code{car::Anova}). Also returned if \code{return = "data"}.} #' } #' In addition, the object has the following attributes: \code{"dv"}, #' \code{"id"}, \code{"within"}, \code{"between"}, and \code{"type"}. #' #' The \link[=afex_aov-methods]{print} method for \code{afex_aov} objects #' (invisibly) returns (and prints) the same as if \code{return} is #' \code{"nice"}: a nice ANOVA table (produced by \code{\link{nice}}) with the #' following columns: \code{Effect}, \code{df}, \code{MSE} (mean-squared #' errors), \code{F} (potentially with significant symbols), \code{ges} #' (generalized eta-squared), \code{p}. #' #' @details #' #' \subsection{Details of ANOVA Specification}{ \code{aov_ez} will concatenate #' all between-subject factors using \code{*} (i.e., producing all main effects #' and interactions) and all covariates by \code{+} (i.e., adding only the main #' effects to the existing between-subject factors). The within-subject factors #' do fully interact with all between-subject factors and covariates. This is #' essentially identical to the behavior of SPSS's \code{glm} function. #' #' The \code{formula}s for \code{aov_car} or \code{aov_4} must contain a single #' \code{Error} term specifying the \code{ID} column and potential #' within-subject factors (you can use \code{\link{mixed}} for running #' mixed-effects models with multiple error terms). Factors outside the #' \code{Error} term are treated as between-subject factors (the within-subject #' factors specified in the \code{Error} term are ignored outside the #' \code{Error} term; in other words, it is not necessary to specify them #' outside the \code{Error} term, see Examples).\cr Suppressing the intercept #' (i.e, via \code{0 +} or \code{- 1}) is ignored. Specific specifications of #' effects (e.g., excluding terms with \code{-} or using \code{^}) could be okay #' but is not tested. Using the \code{\link{I}} or \code{\link{poly}} function #' within the formula is not tested and not supported! #' #' To run an ANCOVA you need to set \code{factorize = FALSE} and make sure that #' all variables have the correct type (i.e., factors are factors and numeric #' variables are numeric and centered). #' #' Note that the default behavior is to include calculation of the effect size #' generalized eta-squared for which \strong{all non-manipluated (i.e., #' observed)} variables need to be specified via the \code{observed} argument to #' obtain correct results. When changing the effect size to \code{"pes"} #' (partial eta-squared) or \code{"none"} via \code{anova_table} this becomes #' unnecessary. #' #' Factor contrasts will be set to \code{"contr.sum"} for all between-subject #' factors if default contrasts are not equal to \code{"contr.sum"} or #' \code{attrib(factor, "contrasts") != "contr.sum"}. (within-subject factors #' are hard-coded \code{"contr.sum"}.) } #' #' \subsection{Statistical Issues}{ \strong{Type 3 sums of squares are default #' in \pkg{afex}.} While some authors argue that so-called type 3 sums of #' squares are dangerous and/or problematic (most notably Venables, 2000), they #' are the default in many commercial statistical application such as SPSS or #' SAS. Furthermore, statisticians with an applied perspective recommend type 3 #' tests (e.g., Maxwell and Delaney, 2004). Consequently, they are the default #' for the ANOVA functions described here. For some more discussion on this #' issue see \href{https://stats.stackexchange.com/q/6208/442}{here}. #' #' Note that lower order effects (e.g., main effects) in type 3 ANOVAs are only #' meaningful with #' \href{https://stats.oarc.ucla.edu/other/mult-pkg/faq/general/faqwhat-is-effect-coding/}{effects #' coding}. Therefore, contrasts are set to \code{\link{contr.sum}} which #' ensures meaningful results. For a discussion of the other (non-recommended) #' coding schemes see #' \href{https://stats.oarc.ucla.edu/r/library/r-library-contrast-coding-systems-for-categorical-variables/}{here}. #' } #' #' \subsection{Follow-Up Contrasts and Post-Hoc Tests}{ The S3 object returned #' per default can be directly passed to \code{emmeans::emmeans} for further #' analysis. This allows to test any type of contrasts that might be of interest #' independent of whether or not this contrast involves between-subject #' variables, within-subject variables, or a combination thereof. The general #' procedure to run those contrasts is the following (see Examples for a full #' example): #' #' \enumerate{ #' \item Estimate an \code{afex_aov} object with the function returned here. For example: \code{x <- aov_car(dv ~ a*b + (id/c), d)} #' \item Obtain a \code{\link[emmeans]{emmGrid-class}} object by running \code{\link[emmeans]{emmeans}} on the \code{afex_aov} object from step 1 using the factors involved in the contrast. For example: \code{r <- emmeans(x, ~a:c)} #' \item Create a list containing the desired contrasts on the reference grid object from step 2. For example: \code{con1 <- list(a_x = c(-1, 1, 0, 0, 0, 0), b_x = c(0, 0, -0.5, -0.5, 0, 1))} #' \item Test the contrast on the reference grid using \code{\link[emmeans]{contrast}}. For example: \code{contrast(r, con1)} #' \item To control for multiple testing p-value adjustments can be specified. For example the Bonferroni-Holm correction: \code{contrast(r, con1, adjust = "holm")} #' } #' #' Note that \pkg{emmeans} allows for a variety of advanced settings and #' simplifications, for example: all pairwise comparison of a single factor #' using one command (e.g., \code{emmeans(x, "a", contr = "pairwise")}) or #' advanced control for multiple testing by passing objects to \pkg{multcomp}. #' A comprehensive overview of the functionality is provided in the #' accompanying vignettes (see #' \href{https://CRAN.R-project.org/package=emmeans}{here}). #' #' Since version 1.0, \pkg{afex} per default uses the \code{multivariate} model #' (i.e., the \code{lm} slot of the \code{afex_aov} object) for follow-up tests #' with \pkg{emmeans}. Compared to the \code{univariate} model (i.e., the #' \code{aov} slot), this can handle unbalanced data and addresses sphericity #' better. To use the older (and not recommended) \code{model = "univariate"} #' make sure to set \code{include_aov = TRUE} when estimating the ANOVA. #' #' Starting with \pkg{afex} version 0.22, \pkg{emmeans} is \emph{not} #' loaded/attached automatically when loading \pkg{afex}. Therefore, #' \pkg{emmeans} now needs to be loaded by the user via #' \code{library("emmeans")} or \code{require("emmeans")}. #' } #' #' \subsection{Methods for \code{afex_aov} Objects}{ A full overview over the #' methods provided for \code{afex_aov} objects is provided in the corresponding #' help page: \code{\link{afex_aov-methods}}. The probably most important ones #' for end-users are \code{summary}, \code{anova}, and \code{\link{nice}}. #' #' The \code{summary} method returns, for ANOVAs containing within-subject #' (repeated-measures) factors with more than two levels, the complete #' univariate analysis: Results without df-correction, the Greenhouse-Geisser #' corrected results, the Hyunh-Feldt corrected results, and the results of the #' Mauchly test for sphericity. #' #' The \code{anova} method returns a \code{data.frame} of class \code{"anova"} #' containing the ANOVA table in numeric form (i.e., the one in slot #' \code{anova_table} of a \code{afex_aov}). This method has arguments such as #' \code{correction} and \code{es} and can be used to obtain an ANOVA table with #' different correction than the one initially specified. #' #' The \code{\link{nice}} method also returns a \code{data.frame}, but rounds #' most values and transforms them into characters for nice printing. Also has #' arguments like \code{correction} and \code{es} which can be used to obtain an #' ANOVA table with different correction than the one initially specified. } #' #' @author Henrik Singmann #' #' The design of these functions was influenced by \code{\link[ez]{ezANOVA}} #' from package \pkg{ez}. #' #' @note Calculation of ANOVA models via \code{aov} (which is done per default) #' can be comparatively slow and produce comparatively large objects for #' ANOVAs with many within-subjects factors or levels. To avoid this #' calculation set \code{include_aov = FALSE}. You can also disable this #' globally with: \code{afex_options(include_aov = FALSE)} #' #' The id variable and variables entered as within-subjects (i.e., #' repeated-measures) factors are silently converted to factors. Levels of #' within-subject factors are converted to valid variable names using #' \code{\link{make.names}(...,unique=TRUE)}. Unused factor levels are #' silently dropped on all variables. #' #' Contrasts attached to a factor as an attribute are probably not preserved #' and not supported. #' #' The workhorse is \code{aov_car}. \code{aov_4} and \code{aov_ez} only #' construe and pass an appropriate formula to \code{aov_car}. Use #' \code{print.formula = TRUE} to view this formula. #' #' In contrast to \code{\link{aov}} \code{aov_car} assumes that all factors to #' the right of \code{/} in the \code{Error} term are belonging together. #' Consequently, \code{Error(id/(a*b))} and \code{Error(id/a*b)} are identical #' (which is not true for \code{\link{aov}}). #' #' @seealso Various methods for objects of class \code{afex_aov} are available: #' \code{\link{afex_aov-methods}} #' #' \code{\link{nice}} creates the nice ANOVA tables which is by default printed. #' See also there for a slightly longer discussion of the available effect #' sizes. #' #' \code{\link{mixed}} provides a (formula) interface for obtaining p-values for #' mixed-models via \pkg{lme4}. The functions presented here do not estimate #' mixed models. #' #' @references Cramer, A. O. J., van Ravenzwaaij, D., Matzke, D., Steingroever, #' H., Wetzels, R., Grasman, R. P. P. P., ... Wagenmakers, E.-J. (2015). #' Hidden multiplicity in exploratory multiway ANOVA: Prevalence and remedies. #' \emph{Psychonomic Bulletin & Review}, 1-8. \doi{10.3758/s13423-015-0913-5} #' #' Maxwell, S. E., & Delaney, H. D. (2004). \emph{Designing Experiments and #' Analyzing Data: A Model-Comparisons Perspective}. Mahwah, N.J.: Lawrence #' Erlbaum Associates. #' #' Venables, W.N. (2000). \emph{Exegeses on linear models}. Paper presented to #' the S-Plus User's Conference, Washington DC, 8-9 October 1998, Washington, #' DC. Available from: \url{http://www.stats.ox.ac.uk/pub/MASS3/Exegeses.pdf} #' #' @importFrom car Anova #' @importFrom reshape2 dcast #' @importFrom lme4 findbars nobars #' @importFrom stats terms as.formula xtabs contrasts<- coef #' @importFrom utils head #' #' @example examples/examples.aov_car.R #' #' #' @encoding UTF-8 #' @export aov_car <- function(formula, data, fun_aggregate = NULL, type = afex_options("type"), factorize = afex_options("factorize"), observed = NULL, anova_table = list(), include_aov = afex_options("include_aov"), return = afex_options("return_aov"), ...) { return <- match.arg(return, c("Anova", "lm", "data", "nice", "afex_aov", "univariate", "marginal", "aov")) dots <- list(...) ### deprercate old argument names: if("fun.aggregate" %in% names(dots)) { warn_deprecated_arg("fun.aggregate", "fun_aggregate") fun_aggregate <- dots$fun.aggregate dots <- dots[names(dots) != "fun.aggregate"] } # transform to data.frame if necessary (e.g., when using dplyr) data <- as.data.frame(data) # stuff copied from aov: Terms <- terms(formula, "Error", data = data) indError <- attr(Terms, "specials")$Error if (length(indError) > 1L) stop(sprintf(ngettext(length(indError), "there are %d Error terms: only 1 is allowed", "there are %d Error terms: only 1 is allowed"), length(indError)), domain = NA) # from here, code by Henrik Singmann: if (is.null(indError)) { stop("formula needs an error term identifying the ID column.") } vars <- all.vars(formula) ### check for missing variables if (any(!(vars %in% colnames(data)))) { mc <- match.call() missing_vars <- vars[!(vars %in% colnames(data))] stop( "variable(s) `", paste(missing_vars, collapse = "`, `"), "` not in `", deparse(mc[["data"]]), "`", call. = FALSE ) } #--- Russ Lenth added/modified code to detect transformed responses: lhs <- all.names(formula[[2]]) transf <- setdiff(lhs, all.vars(formula[[2]])) if (length(transf) == 0) transf = NULL if (!is.null(transf)) { origdv <- setdiff(lhs, transf) dv <- paste0(transf[1], ".", origdv) data[[dv]] <- eval(formula[[2]], envir = data) # add transformed version vars <- vars[!(vars %in% lhs)] } else { dv <- vars[1] if (!is.numeric(data[,dv])) stop("dv needs to be numeric.") #check if dv is numeric vars <- vars[-1] } #--- end RL changes parts <- attr(terms(formula, "Error", data = data), "term.labels") error.term <- parts[grepl("^Error\\(", parts)] id <- all.vars(parse(text = error.term))[1] within <- all.vars(parse(text = error.term))[-1] between <- vars[!(vars %in% c(id, within))] dv.escaped <- escape_vars(dv) id.escaped <- escape_vars(id) within.escaped <- escape_vars(within) between.escaped <- escape_vars(between) effect.parts <- parts[!grepl("^Error\\(", parts)] if (length(within) > 0) { effect.parts.no.within <- character() for (term in effect.parts) { components <- decomposeTerm(term) if ( ! any(within %in% components)) effect.parts.no.within <- c(effect.parts.no.within, term) } } else { effect.parts.no.within <- effect.parts } data <- droplevels(data) #remove empty levels. # make id and within variables to factors: if (!(is.factor(data[,id]))) data[,id] <- factor(data[,id]) # factorize if necessary if (factorize) { if (any(!vapply(data[, between, drop = FALSE], is.factor, TRUE))) { to.factor <- between[!vapply(data[,between, drop = FALSE], is.factor, TRUE)] message(paste0("Converting to factor: ", paste0(to.factor, collapse = ", "))) for (tmp.c in to.factor) { data[,tmp.c] <- factor(data[,tmp.c]) } } } else { # check if numeric variables are centered. c.ns <- between[vapply(data[, between, drop = FALSE], is.numeric, TRUE)] if (length(c.ns) > 0) { non.null <- c.ns[!abs(vapply(data[, c.ns, drop = FALSE], mean, 0)) < .Machine$double.eps ^ 0.5] if (length(non.null) > 0) warning(paste0( "Numerical variables NOT centered on 0 (matters if variable in interaction):\n ", paste0(non.null, collapse = ", ")), call. = FALSE) } } for (i in c(between, within)) { if (is.factor(data[,i]) && length(unique(data[,i])) == 1) stop(paste0("Factor \"", i, "\" consists of one level only. Remove factor from model?")) } # make formulas rh2 <- if (length(between.escaped) > 0) paste0(effect.parts.no.within, collapse = "+") else "1" lh1 <- mypaste(id, if (length(between.escaped) > 0) paste0(between.escaped, collapse = "+") else NULL, sep = "+") rh1 <- paste0(within.escaped, collapse = "+") rh3 <- paste0(within.escaped, collapse = "*") # converting all within subject factors to factors and # add a leading charcter (x) if starting with a digit. for (within.factor in within) { if (is.factor(data[,within.factor])) levels(data[,within.factor]) <- make.names(levels(data[,within.factor]), unique = TRUE) else data[,within.factor] <- factor(as.character(data[,within.factor]), levels = unique(as.character(data[,within.factor])), labels = make.names(unique(as.character(data[,within.factor])), unique=TRUE)) } # Check if each id is in only one between subjects cell. between.factors <- between[vapply(data[, between, drop = FALSE], is.factor, TRUE)] if (length(between.factors) > 0) { split.data <- split(data, lapply(between.factors, function(x) data[,x])) ids.per.condition <- lapply(split.data, function(x) unique(as.character(x[,id]))) ids.in.more.condition <- unique(unlist( lapply(seq_along(ids.per.condition), function(x) unique(unlist( lapply(ids.per.condition[-x], function(y, z = ids.per.condition[[x]]) intersect(z, y))))))) if (length(ids.in.more.condition) > 0) { stop( paste0("Following ids are in more than one between subjects condition:\n", paste0(ids.in.more.condition, collapse = ", "))) } } ## check for structurally missing data # within-subjects if ((length(within) > 0) && any(table(data[within]) == 0)) { stop("Empty cells in within-subjects design", " (i.e., bad data structure).\n", "", paste0("table(data[", deparse(within), "])"), "\n# ", paste(utils::capture.output(table(data[within])), collapse = "\n# "), call. = FALSE) } # Is fun_aggregate NULL and aggregation necessary? if (is.null(fun_aggregate)) { if (any(xtabs( as.formula(paste0("~", id.escaped, if (length(within) > 0) "+", rh1)), data = data) > 1)) { warning("More than one observation per design cell, aggregating data using `fun_aggregate = mean`.\nTo turn off this warning, pass `fun_aggregate = mean` explicitly.", call. = FALSE) fun_aggregate <- mean } } # prepare the data: tmp.dat <- do.call( dcast, args = c(data = list(data), formula = as.formula(paste(lh1, if (length(within) > 0) rh1 else ".", sep = "~")), fun.aggregate = fun_aggregate, dots, value.var = dv)) # check for missing values: if (any(is.na(tmp.dat))) { missing.values <- apply(tmp.dat, 1, function(x) any(is.na(x))) missing_ids <- unique(tmp.dat[missing.values,1]) warning(paste0("Missing values for ", length(missing_ids), " ID(s), which were removed before analysis:\n", if (length(missing_ids) < 10) paste0(missing_ids, collapse = ", ") else paste0(paste0(missing_ids[1:10], collapse = ", "), ", ... [showing first 10 only]"), "\nBelow the first few rows (in wide format) of the removed cases with missing data.\n ", paste(utils::capture.output(head(tmp.dat[missing.values,])), collapse = "\n# ")), call. = FALSE) tmp.dat <- tmp.dat[!missing.values,] data <- data[ !(data[,id] %in% missing_ids),] if ((nrow(data) == 0 ) | (nrow(tmp.dat) == 0)) { stop("No observations remain after removing missing values.", "\n Try adding to ANOVA call: na.rm = TRUE", call. = FALSE) } } else { missing_ids <- NULL } # if (length(between_nn) > 0 && any(table(data[between_nn]) == 0)) { # stop("Empty cells in between-subjects design ", # " (i.e., bad data structure).\n", # "", paste0("table(data[", deparse(between_nn), "])"), "\n# ", # paste(utils::capture.output(table(data[between_nn])), collapse = "\n# "), # call. = FALSE) # } # if (length(between) > 0) { # n_data_points <- xtabs(as.formula(paste("~", paste(between, collapse = "+"))), data = tmp.dat) # if (any(n_data_points == 0)) warning("Some cells of the fully crossed between-subjects design are empty. A full model might not be estimable.") # } # marginals: (disabled in April 2015), dat.ret is now used for aov() dat.ret <- do.call( dcast, args = c(data = list(data), formula = as.formula(paste0(mypaste(lh1, if (length(within) > 0) rh1 else NULL, sep = "+"), "~.")), fun.aggregate = fun_aggregate, dots, value.var = dv)) colnames(dat.ret)[length(colnames(dat.ret))] <- dv if (suppressWarnings(!isTRUE( all.equal(target = data[,c(id, between, within, dv)], current = dat.ret[,c(id, between, within, dv)], check.attributes = FALSE) ))) { data_changed <- TRUE } else { data_changed <- FALSE } if (length(between) > 0) { tmp.dat <- check_contrasts( data = tmp.dat, factors = between, check_contrasts = TRUE, type = type ) } if (return %in% c("aov")) include_aov <- TRUE if(include_aov){ if (TRUE) { ## was: check_contrasts factor_vars <- vapply(dat.ret[,c(within, between), drop = FALSE], is.factor, NA) contrasts <- as.list(rep("contr.sum", sum(factor_vars))) names(contrasts) <- c(within, between)[factor_vars] } tmp_formula <- formula(paste(dv.escaped, "~", if (length(within) > 0) { paste( if (rh2 == "1") { paste(within.escaped, collapse="*") } else { paste("(" ,rh2, ")*(", paste(within.escaped, collapse="*"), ")") }, "+Error(", id.escaped, "/(", paste(within.escaped, collapse="*"), "))") } else rh2)) aov <- aov(tmp_formula, data=dat.ret, contrasts = contrasts) } else { aov <- NULL } if(return == "aov") return(aov) data.l <- list(long = dat.ret, wide = tmp.dat) if (return == "data") return(tmp.dat) # branching based on type of ANOVA if (length(within) > 0) { # if within-subject factors are present: # make idata argument if (length(within) > 1) { within.levels <- lapply(lapply(data[,within], levels), factor) idata <- rev(expand.grid(rev(within.levels))) } else { idata <- data.frame(levels(data[,within]), stringsAsFactors = TRUE) colnames(idata) <- within } tmp.lm <- do.call( "lm", list(formula = as.formula(paste0("cbind(", paste0(colnames( tmp.dat[-(seq_along(c(id, between)))]), collapse = ", "), ") ~ ", rh2)), data = tmp.dat)) if (any(is.na(coef(tmp.lm)))) { between_design_error( data = tmp.dat, between = between, bad_vars = names(which(apply(is.na(coef(tmp.lm)), 1, any))) ) } if (return == "lm") return(tmp.lm) Anova.out <- Anova(tmp.lm, idata = idata, idesign = as.formula(paste0("~", rh3)), type = type) data.l <- c(data.l, idata = list(idata)) } else { # if NO within-subject factors are present (i.e., purely between ANOVA): colnames(tmp.dat)[ncol(tmp.dat)] <- "dv" tmp.lm <- do.call("lm", list(formula = as.formula(paste0("dv ~ ", rh2)), data = tmp.dat)) if (any(is.na(coef(tmp.lm)))) { between_design_error( data = tmp.dat, between = between, bad_vars = names(which(is.na(coef(tmp.lm)))) ) } if (return == "lm") return(tmp.lm) Anova.out <- Anova(tmp.lm, type = type) } if (return == "afex_aov") { afex_aov <- list( anova_table = NULL, aov = aov, Anova = Anova.out, lm = tmp.lm, data = data.l ) class(afex_aov) <- "afex_aov" attr(afex_aov, "dv") <- dv attr(afex_aov, "id") <- id attr(afex_aov, "within") <- if (length(within) > 0) lapply(data[, within, drop = FALSE], levels) else list() attr(afex_aov, "between") <- if (length(between) > 0) lapply(data[, between, drop = FALSE], levels) else list() attr(afex_aov, "type") <- type attr(afex_aov, "transf") <- transf attr(afex_aov, "incomplete_cases") <- missing_ids attr(afex_aov, "data_changed") <- data_changed afex_aov$anova_table <- do.call("anova", args = c(object = list(afex_aov), observed = list(observed), anova_table)) return(afex_aov) } if (return == "Anova") return(Anova.out) else if (return == "univariate") { if (inherits(Anova.out, "Anova.mlm")) return(summary(Anova.out, multivariate = FALSE)) else return(Anova.out) } else if (return == "nice") { afex_aov <- list( anova_table = NULL, Anova = Anova.out ) class(afex_aov) <- "afex_aov" attr(afex_aov, "dv") <- dv attr(afex_aov, "id") <- id attr(afex_aov, "within") <- if (length(within) > 0) lapply(data[,within, drop = FALSE], levels) else list() attr(afex_aov, "between") <- if (length(between) > 0) lapply(data[,between,drop=FALSE], levels) else list() attr(afex_aov, "type") <- type afex_aov$anova_table <- do.call("anova", args = c(object = list(afex_aov), observed = list(observed), anova_table)) return(do.call("nice", args = c(object = list(afex_aov), observed = list(observed), anova_table))) } } #' @describeIn aov_car Allows definition of ANOVA-model using #' \code{lme4::lmer}-like Syntax (but still fits a standard ANOVA). #' @export aov_4 <- function(formula, data, observed = NULL, fun_aggregate = NULL, type = afex_options("type"), factorize = afex_options("factorize"), return = afex_options("return_aov"), anova_table = list(), include_aov = afex_options("include_aov"), ..., print.formula = FALSE) { barterms <- findbars(formula) if (length(barterms) > 1L) stop("aov_4 only allows one random effect term") if (length(barterms) < 1L) stop("aov_4() requires one random-effect term in formula") within <- all.vars(barterms[[1]][[2]]) id <- all.vars(barterms[[1]][[3]]) id <- escape_vars(id) within <- escape_vars(within) error <- paste0(" + Error(", id, if (length(within) > 0) "/(" else "", paste0(within, collapse = " * "), if (length(within) > 0) ")" else "", ")") lh <- as.character(nobars(formula)) if (length(lh) == 1) { dv <- lh rh <- "1" } else { dv <- lh[2] rh <- lh[3] } formula <- paste0(dv, " ~ ", rh, error) if (print.formula) message(paste0("Formula send to aov_car: ", formula)) aov_car(formula = as.formula(formula), data = data, fun_aggregate = fun_aggregate, type = type, return = return, factorize = factorize, observed = observed, anova_table = anova_table, include_aov = include_aov, ...) } #' @describeIn aov_car Allows definition of ANOVA-model using character strings. #' @export aov_ez <- function(id, dv, data, between = NULL, within = NULL, covariate = NULL, observed = NULL, fun_aggregate = NULL, transformation, type = afex_options("type"), factorize = afex_options("factorize"), return = afex_options("return_aov"), anova_table = list(), include_aov = afex_options("include_aov"), ..., print.formula = FALSE) { if (is.null(between) & is.null(within)) stop("Either between or within need to be non-NULL!") if (!is.null(covariate)) { covariate <- escape_vars(covariate) covariate <- paste0(covariate, collapse = "+") } id <- escape_vars(id) dv <- escape_vars(dv) between <- escape_vars(between) within <- escape_vars(within) rh <- if (!is.null(between) || !is.null(covariate)) mypaste(if (!is.null(between)) paste0(between, collapse = " * ") else NULL, covariate, sep = "+") else "1" error <- paste0(" + Error(", id, if (!is.null(within)) "/(" else "", paste0(within, collapse = " * "), if (length(within) > 0) ")" else "", ")") if (!missing(transformation)) dv <- paste0(transformation, "(", dv, ")") formula <- paste0(dv, " ~ ", rh, error) if (print.formula) message(paste0("Formula send to aov_car: ", formula)) aov_car(formula = as.formula(formula), data = data, fun_aggregate = fun_aggregate, type = type, return = return, factorize = factorize, observed = observed, anova_table = anova_table, include_aov = include_aov, ...) } between_design_error <- function(data, between, bad_vars) { ## check between-subjects design for completeness ## select all factor variables between_nn <- between[!vapply(data[between], is.numeric, NA)] stop( "Rank deficient model matrix; insufficient data to estimate full model.\n", "Model coefficient(s) estimated as NA: ", paste(bad_vars, collapse = ", "), "\nLikely empty cells in between-subjects design ", "(i.e., bad data structure).\n", "", paste0("table(data[", deparse(between_nn), "])"), "\n# ", paste(utils::capture.output(table(data[between_nn])), collapse = "\n# "), call. = FALSE) } afex/R/ks2013.3-data.R0000644000176200001440000000646613664111747013542 0ustar liggesusers#' Data from Klauer & Singmann (2013, Experiment 3) #' #' Klauer and Singmann (2013) attempted to replicate an hypothesis of Morsanyi and Handley (2012) according to which individuals have an intuitive sense of logicality. Specifically, Morsanyi and Handley apparently provided evidence that the logical status of syllogisms (i.e., valid or invalid) affects participants liking ratings of the conclusion of syllogisms. Conclusions from valid syllogisms (e.g., Some snakes are poisonous. No poisonous animals are obbs. Some snakes are not obbs.) received higher liking ratings than conclusions from invalid syllogisms (e.g., No ice creams are vons. Some vons are hot. Some ice creams are not hot.). It is important to noted that in the experiments participants were simply shown the premises and conclusion in succession, they were not asked whether or not the conclusion follows or to generate their own conclusion. Their task was simply to judge how much they liked the "final" statement (i.e., the conclusion). #' #' In their Experiment 3 Klauer and Singmann (2013) tested the idea that this finding was a consequence of the materials used and not an effect intuitive logic. More specifically, they observed that in the original study by Morsanyi and Handley (2012) a specific content always appeared with the same logical status. For example, the "ice-cream" content only ever appeared as an invalid syllogism as in the example above but never in a valid syllogism. In other words, content was perfectly confounded with logical status in the original study. To test this they compared a condition in which the logical status was confounded with the content (the "fixed" condition) with a condition in which the contents were randomly assigned to a logical status across participants (the "random" condition). For example, the ice-cream content was, across participants, equally like to appear in the invalid form as given above or in the following valid form: No hot things are vons. Some vons are ice creams. Conclusion Some ice creams are not hot. #' #' The data.frame contains the raw responses of all 60 participants (30 per condition) reported in Klauer & Singmann (2013). Each participants provided 24 responses, 12 to valid and 12 to invalid syllogisms. Furthermore, 8 syllogisms had a believable conclusion (e.g., Some ice creams are not hot.), 8 had an abstract conclusion (e.g., Some snakes are not obbs.), and 8 had an unbelievable conclusion (e.g., Some animals are not monkeys.). The number of the contents corresponds to the numbering given in Morsanyi and Handley (2012, p. 616). #' #' #' @docType data #' @keywords dataset #' @name ks2013.3 #' @usage ks2013.3 #' @format A data.frame with 1440 rows and 6 variables. #' @source Klauer, K. C., & Singmann, H. (2013). Does logic feel good? Testing for intuitive detection of logicality in syllogistic reasoning. Journal of Experimental Psychology: Learning, Memory, and Cognition, 39(4), 1265-1273. http://doi.org/10.1037/a0030530 #' #' Morsanyi, K., & Handley, S. J. (2012). Logic feels so good-I like it! Evidence for intuitive detection of logicality in syllogistic reasoning. Journal of Experimental Psychology: Learning, Memory, and Cognition, 38(3), 596-616. http://doi.org/10.1037/a0026099 #' #' #' #' #' @encoding UTF-8 #' #' @example examples/examples.ks2013.3.R NULL afex/R/stroop-data.R0000644000176200001440000000463714071312623013767 0ustar liggesusers#' Stroop data from Lin et al. (2020, Psych. Science) #' #' #' Lin, Saunders, Friese, Evans, and Inzlicht (2020) investigated ego depletion. #' An initial high-demand task was followed by a Stroop task. The data of the #' Stroop task from all 4 of their studies is included here. #' #' Their abstract: People feel tired or depleted after exerting mental effort. #' But even preregistered studies often fail to find effects of exerting effort #' on behavioral performance in the laboratory or elucidate the underlying #' psychology. We tested a new paradigm in four preregistered within-subjects #' studies (N = 686). An initial high-demand task reliably elicited very strong #' effort phenomenology compared with a low-demand task. Afterward, participants #' completed a Stroop task. We used drift-diffusion modeling to obtain the #' boundary (response caution) and drift-rate (information-processing speed) #' parameters. Bayesian analyses indicated that the high-demand manipulation #' reduced boundary but not drift rate. Increased effort sensations further #' predicted reduced boundary. However, our demand manipulation did not affect #' subsequent inhibition, as assessed with traditional Stroop behavioral #' measures and additional diffusion-model analyses for conflict tasks. Thus, #' effort exertion reduced response caution rather than inhibitory control, #' suggesting that after exerting effort, people disengage and become #' uninterested in exerting further effort. #' #' #' #' @docType data #' @keywords dataset #' @name stroop #' @usage stroop #' @format A data frame with 246600 rows and 7 variables: #' \describe{ #' \item{pno}{participant id (preceded by study id), factor with 685 levels} #' \item{condition}{experimental condition (control/low demand, deplete/high demand), factor with 2 levels} #' \item{study}{study number (1, 2, 3, 4), factor with 4 levels} #' \item{trialnum}{trial number} #' \item{congruency}{Stroop congruency (congruent, incongruent), factor with 2 levels} #' \item{acc}{accuracy (0: error, 1: correct)} #' \item{rt}{reaction time (seconds)} #' } #' @source Lin, H., Saunders, B., Friese, M., Evans, N. J., & Inzlicht, M. #' (2020). Strong Effort Manipulations Reduce Response Caution: A #' Preregistered Reinvention of the Ego-Depletion Paradigm. *Psychological #' Science*, \doi{10.1177/0956797620904990} #' #' @encoding UTF-8 #' "stroop" afex/R/sk2011.2-data.R0000644000176200001440000000571113664111747013527 0ustar liggesusers#' Data from Singmann & Klauer (2011, Experiment 2) #' #' Singmann and Klauer (2011) were interested in whether or not conditional reasoning can be explained by a single process or whether multiple processes are necessary to explain it. To provide evidence for multiple processes we aimed to establish a double dissociation of two variables: instruction type and problem type. Instruction type was manipulated between-subjects, one group of participants received deductive instructions (i.e., to treat the premises as given and only draw necessary conclusions) and a second group of participants received probabilistic instructions (i.e., to reason as in an everyday situation; we called this "inductive instruction" in the manuscript). Problem type consisted of two different orthogonally crossed variables that were manipulated within-subjects, validity of the problem (formally valid or formally invalid) and type of the problem. Problem type consistent of three levels: prological problems (i.e., problems in which background knowledge suggested to accept valid but reject invalid conclusions), neutral problems (i.e., in which background knowledge suggested to reject all problems), and counterlogical problems (i.e., problems in which background knowledge suggested to reject valid but accept invalid conclusions). #' #' This data set contains 63 participants in contrast to the originally reported 56 participants. The additional participants were not included in the original studies as they did not meet the inclusion criteria (i.e., no students, prior education in logic, or participated in a similar experiment). The IDs of those additional participants are: 7, 8, 9, 12, 17, 24, 30. The excluded participant reported in the paper has ID 16. #' #' content has the following levels (C = content/conditional):\cr #' 1 = Wenn eine Person in ein Schwimmbecken gefallen ist, dann ist sie nass.\cr #' 2 = Wenn ein Hund Flöhe hat, dann kratzt er sich hin und wieder.\cr #' 3 = Wenn eine Seifenblase mit einer Nadel gestochen wurde, dann platzt sie.\cr #' 4 = Wenn ein Mädchen Geschlechtsverkehr vollzogen hat, dann ist es schwanger.\cr #' 5 = Wenn eine Pflanze ausreichend gegossen wird, dann bleibt sie grün.\cr #' 6 = Wenn sich eine Person die Zähne putzt, dann bekommt sie KEIN Karies.\cr #' 7 = Wenn eine Person viel Cola trinkt, dann nimmt sie an Gewicht zu.\cr #' 8 = Wenn eine Person die Klimaanlage angeschaltet hat, dann fröstelt sie.\cr #' 9 = Wenn eine Person viel lernt, dann wird sie in der Klausur eine gute Note erhalten. #' #' @docType data #' @keywords dataset #' @name sk2011.2 #' @usage sk2011.2 #' @format A data.frame with 2268 rows and 9 variables. #' @source Singmann, H., & Klauer, K. C. (2011). Deductive and inductive conditional inferences: Two modes of reasoning. Thinking & Reasoning, 17(3), 247-281. doi:10.1080/13546783.2011.572718 #' #' @encoding UTF-8 #' #' @example examples/examples.sk2011.2.R NULL afex/R/obk.long-data.R0000644000176200001440000000562113664111747014157 0ustar liggesusers#' O'Brien Kaiser's Repeated-Measures Dataset with Covariate #' #' This is the long version of the \code{OBrienKaiser} dataset from the \pkg{car} pakage adding a random covariate \code{age}. Originally the dataset ist taken from O'Brien and Kaiser (1985). The description from \code{\link[carData]{OBrienKaiser}} says: "These contrived repeated-measures data are taken from O'Brien and Kaiser (1985). The data are from an imaginary study in which 16 female and male subjects, who are divided into three treatments, are measured at a pretest, postest, and a follow-up session; during each session, they are measured at five occasions at intervals of one hour. The design, therefore, has two between-subject and two within-subject factors." #' #' @docType data #' @keywords dataset #' @name obk.long #' @usage obk.long #' @format A data frame with 240 rows and 7 variables. #' @source O'Brien, R. G., & Kaiser, M. K. (1985). MANOVA method for analyzing repeated measures designs: An extensive primer. \emph{Psychological Bulletin}, 97, 316-333. doi:10.1037/0033-2909.97.2.316 #' #' @encoding UTF-8 #' #' @examples #' # The dataset is constructed as follows: #' data("OBrienKaiser", package = "carData") #' set.seed(1) #' OBrienKaiser2 <- within(OBrienKaiser, { #' id <- factor(1:nrow(OBrienKaiser)) #' age <- scale(sample(18:35, nrow(OBrienKaiser), replace = TRUE), scale = FALSE)}) #' attributes(OBrienKaiser2$age) <- NULL # needed or resahpe2::melt throws an error. #' OBrienKaiser2$age <- as.numeric(OBrienKaiser2$age) #' obk.long <- reshape2::melt(OBrienKaiser2, id.vars = c("id", "treatment", "gender", "age")) #' obk.long[,c("phase", "hour")] <- lapply(as.data.frame(do.call(rbind, #' strsplit(as.character(obk.long$variable), "\\."),)), factor) #' obk.long <- obk.long[,c("id", "treatment", "gender", "age", "phase", "hour", "value")] #' obk.long <- obk.long[order(obk.long$id),] #' rownames(obk.long) <- NULL #' str(obk.long) #' ## 'data.frame': 240 obs. of 7 variables: #' ## $ id : Factor w/ 16 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ... #' ## $ treatment: Factor w/ 3 levels "control","A",..: 1 1 1 1 1 1 1 1 1 1 ... #' ## $ gender : Factor w/ 2 levels "F","M": 2 2 2 2 2 2 2 2 2 2 ... #' ## $ age : num -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 ... #' ## $ phase : Factor w/ 3 levels "fup","post","pre": 3 3 3 3 3 2 2 2 2 2 ... #' ## $ hour : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 1 2 3 4 5 ... #' ## $ value : num 1 2 4 2 1 3 2 5 3 2 ... #' head(obk.long) #' ## id treatment gender age phase hour value #' ## 1 1 control M -4.75 pre 1 1 #' ## 2 1 control M -4.75 pre 2 2 #' ## 3 1 control M -4.75 pre 3 4 #' ## 4 1 control M -4.75 pre 4 2 #' ## 5 1 control M -4.75 pre 5 1 #' ## 6 1 control M -4.75 post 1 3 NULL afex/R/afex-package.R0000644000176200001440000000022114413224627014035 0ustar liggesusers#' \packageDescription{afex} #' #' The DESCRIPTION file: #' \packageDESCRIPTION{afex} #' #' @title #' \packageTitle{afex} #' "_PACKAGE" afex/R/lmerTest_utils.R0000644000176200001440000000677513664111747014571 0ustar liggesusers #' @importFrom utils packageVersion #' @importFrom methods as #' @importFrom stats anova lmerTest_anova <- function(object, ...) { # Produce lmerTest-anova table for lmer-model fits (lme4 or lmerTest) with old # as well as new lmerTest package. # Standard method dispatch for all non-lmerMod objects. pkg_version <- "2.0-37.9005" if(!inherits(object, "lmerMod")) return(anova(object, ...)) # non-lmer objects if(requireNamespace("lmerTest", quietly=TRUE) && packageVersion("lmerTest") < pkg_version) { stop("Newer version of lmerTest is required.") } if(requireNamespace("lmerTest", quietly=TRUE) && packageVersion("lmerTest") >= pkg_version) { if(inherits(object, "lmerModLmerTest")) return(anova(object, ...)) else # lmerTest object return(anova(lmerTest::as_lmerModLmerTest(object), ...)) # lme4 object } return(anova(object, ...)) # *merModLmerTest objects and/or 'lmerTest' is not available } lmerTest_summary <- function(object, ...) { # Produce lmerTest-summary for lmer-model fits (lme4 or lmerTest) with old # as well as new lmerTest package. # Standard method dispatch for all non-lmerMod objects. pkg_version <- "2.0-37.9005" if(!inherits(object, "lmerMod")) return(summary(object, ...)) # non-lmer objects if(requireNamespace("lmerTest", quietly=TRUE) && packageVersion("lmerTest") < pkg_version) { stop("Newer version of lmerTest is required.") } if(requireNamespace("lmerTest", quietly=TRUE) && packageVersion("lmerTest") >= pkg_version) { if(inherits(object, "lmerModLmerTest")) return(summary(object, ...)) else # lmerTest object return(summary(lmerTest::as_lmerModLmerTest(object), ...)) # lme4 object } return(summary(object, ...)) # *merModLmerTest objects and/or 'lmerTest' is not available } is_lmerTest_class <- function(object) # Check if an object is of class merModLmerTest or lmerModLmerTest # Bridges across versions of lmerTest inherits(object, "merModLmerTest") || inherits(object, "lmerModLmerTest") # anova_lmerTest <- function(object, ...) { # # Dispatch the right anova method across lmerTest versions # if(is_lmerTest_class(object) && requireNamespace("lmerTest", quietly = TRUE)) { # if(packageVersion("lmerTest") < "2.0.37.90012") # return(lmerTest::anova(object, ...)) else return(anova(object, ...)) # } else if(inherits(object, "merMod") && requireNamespace("lmerTest", quietly = TRUE)) { # if(packageVersion("lmerTest") < "2.0.37.90012") # return(lmerTest::anova(as(object, "merModLmerTest"), ...)) else # return(anova(lmerTest::as_lmerModLmerTest(object), ...)) # } # Default: # anova(object, ...) # } # # summary_lmerTest <- function(object, ...) { # # Dispatch the right summary method across lmerTest versions # if(is_lmerTest_class(object) && requireNamespace("lmerTest", quietly = TRUE)) { # if(packageVersion("lmerTest") < "2.0.37.90012") # return(lmerTest::summary(object, ...)) else return(summary(object, ...)) # } else if(inherits(object, "merMod") && requireNamespace("lmerTest", quietly = TRUE)) { # if(packageVersion("lmerTest") < "2.0.37.90012") # return(lmerTest::summary(as(object, "merModLmerTest"), ...)) else # return(summary(lmerTest::as_lmerModLmerTest(object), ...)) # } # Default: # summary(object, ...) # } # afex/R/deprecated.R0000644000176200001440000000216414415730152013626 0ustar liggesusers#' Deprecated functions #' #' These functions have been renamed or moved and deprecated in \pkg{afex}: #' \code{test_levene()} (use \code{\link[performance]{check_homogeneity}()}), #' \code{test_sphericity()} (use \code{\link[performance]{check_sphericity}()}). #' @rdname deprecated #' @keywords internal #' @aliases afex-deprecated #' @param ... arguments passed from the old functions of the style #' \code{foo.bar()} to the new functions \code{foo_bar()} #' @export test_levene <- function(...){ .Deprecated("check_homogeneity", "afex", "Functionality has moved to the 'performance' package.\nCalling 'performance::check_homogeneity()'.") performance::check_homogeneity(...) } #' @rdname deprecated #' @export test_sphericity<- function(...){ .Deprecated("check_sphericity", "afex", "Functionality has moved to the 'performance' package.\nCalling 'performance::check_sphericity()'.") performance::check_sphericity(...) } warn_deprecated_arg <- function(name, instead) { warning(gettextf("'%s' is deprecated; use '%s' instead", name, instead), call.=FALSE, domain=NA) } afex/R/helpers.R0000644000176200001440000001113613664111747013177 0ustar liggesusers#' Set/get global afex options #' #' Global afex options are used, for example, by \code{\link{aov_car}} (et al.) #' and \code{\link{mixed}}. But can be changed in each functions directly using #' an argument (which has precedence over the global options). #' #' @param ... One of four: (1) nothing, then returns all options as a list; (2) #' a name of an option element, then returns its' value; (3) a name-value pair #' which sets the corresponding option to the new value (and returns nothing), #' (4) a list with option-value pairs which sets all the corresponding #' arguments. The example show all possible cases. #' #' @details The following arguments are currently set: #' \itemize{ #' \item \code{check_contrasts} should contrasts be checked and changed to #' sum-to-zero contrasts? Default is \code{TRUE}. #' \item \code{type} type of sums-of-squares to be used for testing effects, #' default is 3 which reports Type 3 tests. #' \item \code{method_mixed}: Method used to obtain p-values in #' \code{\link{mixed}}, default is \code{"KR"} (which will change to #' \code{"LRT"} soon). (\code{mixed()} only) #' \item \code{es_aov}: Effect size reported for ANOVAs (see #' \code{\link{aov_car}}), default is \code{"ges"} (generalized eta-squared). #' \item \code{correction_aov}: Correction used for within-subjects factors with #' more than two levels for ANOVAs (see \code{\link{aov_car}} or #' \code{\link{nice}}), default is \code{"GG"} (Greenhouse-Geisser correction). #' (ANOVA functions only) #' \item \code{emmeans_model}: Which model should be used by \pkg{emmeans} for #' follow-up analysis of ANOVAs (i.e., objects pf class \code{"afex_aov"})? #' Default is \code{"univariate"} which uses the \code{aov} model object (if #' present). The other option is \code{"multivariate"} which uses the \code{lm} #' model object (which is an object of class \code{"mlm"} in case #' repeated-measures factors are present). #' \item \code{include_aov}: Should the \code{aov} model be included into ANOVA objects of class \code{"afex_aov"}? Setting this to \code{FALSE} can lead to considerable speed improvements. #' \item \code{factorize}: Should between subject factors be factorized (with #' note) before running the analysis? Default is \code{TRUE}. (ANOVA functions #' only) #' \item \code{sig_symbols}: Default significant symbols used for ANOVA and #' \code{mixed} printing. Default is\code{c(" +", " *", " **", " ***")}. #' \item \code{lmer_function}: Which \code{lmer} function should \code{mixed} or #' \code{lmer_alt} use. The default is \code{"lmerTest"} which uses #' \code{\link[lmerTest]{lmer}}, \code{"lme4"} is also possible which uses #' \code{\link[lme4]{lmer}}. Note that \code{mixed} methods \code{"KR"} and #' \code{"S"} only work with \code{"lmerTest"}. For the other methods, #' \code{"lme4"} could be minimally faster, but does not allow to use #' \code{lmerTest::anova()}. #' \item \code{return_aov}: Return value of the ANOVA functions (see #' \code{\link{aov_car}}), default is \code{"nice"}. #' } #' #' @note All options are saved in the global R \code{\link{options}} with prefix #' \code{afex.} #' #' @return depends on input, see above. #' #' @example examples/examples.helpers.R #' #' @export # afex_options <- function(...) # { # dots <- list(...) # if (length(dots) == 0) return(ls.str(envir = .afexEnv)) # else { # if (!is.null(names(dots))) { # if (length(dots) > 1) stop("afex_options can only return a single element.") # for (i in seq_along(dots)) { # assign(names(dots)[i], dots[[i]], envir = .afexEnv) # } # } else return(get(dots[[1]], envir = .afexEnv)) # } # } afex_options <- function(...) { dots <- list(...) #browser() if (length(dots) == 0) { # branch to get all afex options op <- options() afex_op <- op[grepl("^afex.", names(op))] names(afex_op) <- sub("^afex.", "", names(afex_op)) return(afex_op) } else if (is.list(dots[[1]])) { # set several afex options as a list: newop <- dots[[1]] names(newop) <- paste0("afex.", names(newop)) options(newop) } else if (!is.null(names(dots))) { newop <- dots names(newop) <- paste0("afex.", names(newop)) options(newop) } else if (is.null(names(dots))) { # get a single afex options if (length(dots) > 1) stop("afex_options() can only return the value of a single option.", call. = FALSE) return(getOption(paste0("afex.", unlist(dots)))) } else { warning("Unsopported command to afex_options(), nothing done.", call. = FALSE) } } afex/R/set_contrasts.R0000644000176200001440000000273513664111747014435 0ustar liggesusers#' Set global contrasts #' #' These functions are simple wrappers to set contrasts globally via \code{options(contrasts = ...)}. #' #' @usage set_sum_contrasts() #' #' set_deviation_contrasts() #' #' set_effects_contrasts() #' #' set_default_contrasts() #' #' set_treatment_contrasts() #' #' #' @details \code{set_deviation_contrasts} and \code{set_effects_contrasts} are wrappers for \code{set_sum_contrasts}. Likewise, \code{set_default_contrasts} is a wrapper to \code{set_treatment_contrasts()}. #' #' @return nothing. These functions are called for their side effects to change the global options. #' #' @name set_sum_contrasts #' @aliases set_sum_contrasts set_deviation_contrasts set_effects_contrasts set_treatment_contrasts set_default_contrasts #' @export set_sum_contrasts set_deviation_contrasts set_effects_contrasts set_treatment_contrasts set_default_contrasts set_sum_contrasts <- function() { message("setting contr.sum globally: options(contrasts=c('contr.sum', 'contr.poly'))") options(contrasts=c('contr.sum', 'contr.poly')) } set_deviation_contrasts <- function() { set_sum_contrasts() } set_effects_contrasts <- function() { set_sum_contrasts() } set_treatment_contrasts <- function() { message("setting contr.treatment globally: options(contrasts=c('contr.treatment', 'contr.poly'))") options(contrasts=c('contr.treatment', 'contr.poly')) } set_default_contrasts <- function() { set_treatment_contrasts() } afex/R/md_15.1-data.R0000644000176200001440000000645213664111747013515 0ustar liggesusers#' Data 15.1 / 11.5 from Maxwell & Delaney #' #' Hypothetical IQ Data from 12 children at 4 time points: Example data for chapter 11/15 of Maxwell and Delaney (2004, Table 15.1, p. 766) in long format. Has two one within-subjects factor: time. #' #' Description from pp. 534: #' #' The data show that 12 subjects have been observed in each of 4 conditions. To make the example easier to discuss, let's suppose that the 12 subjects are children who have been observed at 30, 36, 42, and 48 months of age. In each case, the dependent variable is the child's age-normed general cognitive score on the McCarthy Scales of Children's Abilities. Although the test is normed so that the mean score is independent of age for the general population, our 12 children may come from a population in which cognitive abilities are either growing more rapidly or less rapidly than average. Indeed, this is the hypothesis our data allow us to address. In other words, although the sample means suggest that the children's cognitive abilities are growing, a significance test is needed if we want to rule out sampling error as a likely explanation for the observed differences. #' #' To replicate the results in chapter 15 several different contrasts need to be applied, see Examples. #' #' \code{time} is time in months (centered at 0) and \code{timecat} is the same as a categorical variable. #' #' @docType data #' @keywords dataset #' @name md_15.1 #' @usage md_15.1 #' @format A data.frame with 48 rows and 4 variables. #' @source Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 766 #' @author R code for examples written by Ulf Mertens and Henrik Singmann #' #' @examples #' ### replicate results from Table 15.2 to 15.6 (Maxwell & Delaney, 2004, pp. 774) #' data(md_15.1) #' #' ### ANOVA results (Table 15.2) #' aov_4(iq ~ timecat + (timecat|id),data=md_15.1, anova_table=list(correction = "none")) #' #' ### Table 15.3 (random intercept only) #' # we need to set the base level on the last level: #' contrasts(md_15.1$timecat) <- contr.treatment(4, base = 4) #' # "Type 3 Tests of Fixed Effects" #' (t15.3 <- mixed(iq ~ timecat + (1|id),data=md_15.1, check.contrasts=FALSE)) #' # "Solution for Fixed Effects" and "Covariance Parameter Estimates" #' summary(t15.3$full.model) #' #' ### make Figure 15.2 #' plot(NULL, NULL, ylim = c(80, 140), xlim = c(30, 48), ylab = "iq", xlab = "time") #' plyr::d_ply(md_15.1, plyr::.(id), function(x) lines(as.numeric(as.character(x$timecat)), x$iq)) #' #' ### Table 15.4, page 789 #' # random intercept plus slope #' (t15.4 <- mixed(iq ~ timecat + (1+time|id),data=md_15.1, check.contrasts=FALSE)) #' summary(t15.4$full.model) #' #' ### Table 15.5, page 795 #' # set up polynomial contrasts for timecat #' contrasts(md_15.1$timecat) <- contr.poly #' # fit all parameters separately #' (t15.5 <- mixed(iq ~ timecat + (1+time|id), data=md_15.1, check.contrasts=FALSE, #' per.parameter="timecat")) #' # quadratic trend is considerably off, conclusions stay the same. #' #' #' ### Table 15.6, page 797 #' # growth curve model #' (t15.6 <- mixed(iq ~ time + (1+time|id),data=md_15.1)) #' summary(t15.6$full.model) #' #' @encoding UTF-8 #' NULL afex/R/nice.R0000644000176200001440000004213614071312623012444 0ustar liggesusers#' Make nice ANOVA table for printing. #' #' This generic function produces a nice ANOVA table for printing for objects of #' class. \code{nice_anova} takes an object from \code{\link[car]{Anova}} #' possible created by the convenience functions \code{\link{aov_ez}} or #' \code{\link{aov_car}}. When within-subject factors are present, either #' sphericity corrected or uncorrected degrees of freedom can be reported. #' #' #' @param object,x An object of class \code{"afex_aov"} (see #' \code{\link{aov_car}}) or of class \code{"mixed"} (see \code{\link{mixed}}) #' as returned from the \pkg{afex} functions. Alternatively, an object of #' class \code{"Anova.mlm"} or \code{"anova"} as returned from #' \code{\link[car]{Anova}}. #' @param es Effect Size to be reported. The default is given by #' \code{afex_options("es_aov")}, which is initially set to \code{"ges"} #' (i.e., reporting generalized eta-squared, see details). Also supported is #' partial eta-squared (\code{"pes"}) or \code{"none"}. #' @param observed character vector referring to the observed (i.e., non #' manipulated) variables/effects in the design. Important for calculation of #' generalized eta-squared (ignored if \code{es} is not \code{"ges"}), see #' details. #' @param correction Character. Which sphericity correction of the degrees of #' freedom should be reported for the within-subject factors. The default is #' given by \code{afex_options("correction_aov")}, which is initially set to #' \code{"GG"} corresponding to the Greenhouse-Geisser correction. Possible #' values are \code{"GG"}, \code{"HF"} (i.e., Hyunh-Feldt correction), and #' \code{"none"} (i.e., no correction). #' @param p_adjust_method \code{character} indicating if p-values for individual #' effects should be adjusted for multiple comparisons (see #' \link[stats]{p.adjust} and details). The default \code{NULL} corresponds to #' no adjustment. #' @param sig_symbols Character. What should be the symbols designating #' significance? When entering an vector with \code{length(sig.symbol) < 4} #' only those elements of the default (\code{c(" +", " *", " **", " ***")}) #' will be replaced. \code{sig_symbols = ""} will display the stars but not #' the \code{+}, \code{sig_symbols = rep("", 4)} will display no symbols. The #' default is given by \code{afex_options("sig_symbols")}. #' @param MSE logical. Should the column containing the Mean Sqaured Error (MSE) #' be displayed? Default is \code{TRUE}. #' @param intercept logical. Should intercept (if present) be included in the #' ANOVA table? Default is \code{FALSE} which hides the intercept. #' @param round_ps Function that should be used for rounding p-values. The #' default is given by \code{afex_options("round_ps")}. #' @param sig.symbols deprecated argument, only for backwards compatibility, use #' \code{"sig_symbols"} instead. #' @param ... currently ignored. #' #' @return A \code{data.frame} of class \code{nice_table} with the ANOVA table #' consisting of characters. The columns that are always present are: #' \code{Effect}, \code{df} (degrees of freedom), \code{F}, and \code{p}. #' #' \code{ges} contains the generalized eta-squared effect size measure #' (Bakeman, 2005), \code{pes} contains partial eta-squared (if requested). #' #' @details The returned \code{data.frame} is print-ready when adding to a #' document with proper methods. Either directly via \pkg{knitr} or similar #' approaches such as via package \pkg{xtable} (nowadays \pkg{knitr} is #' probably the best approach, see \href{https://yihui.org/knitr/}{here}). #' \pkg{xtable} converts a \code{data.frame} into LaTeX code with many #' possible options (e.g., allowing for \code{"longtable"} or #' \code{"sidewaystable"}), see \code{\link[xtable]{xtable}} and #' \code{\link[xtable]{print.xtable}}. See Examples. #' #' Conversion functions to other formats (such as HTML, ODF, or Word) can be #' found at the #' \href{https://CRAN.R-project.org/view=ReproducibleResearch}{Reproducible #' Research Task View}. #' #' The default reports generalized eta squared (Olejnik & Algina, 2003), the #' "recommended effect size for repeated measured designs" (Bakeman, 2005). #' Note that it is important that all measured variables (as opposed to #' experimentally manipulated variables), such as e.g., age, gender, weight, #' ..., must be declared via \code{observed} to obtain the correct effect size #' estimate. Partial eta squared (\code{"pes"}) does not require this. #' #' Exploratory ANOVA, for which no detailed hypotheses have been specified a #' priori, harbor a multiple comparison problem (Cramer et al., 2015). To #' avoid an inflation of familywise Type I error rate, results need to be #' corrected for multiple comparisons using \code{p_adjust_method}. #' \code{p_adjust_method} defaults to the method specified in the call to #' \code{\link{aov_car}} in \code{anova_table}. If no method was specified and #' \code{p_adjust_method = NULL} p-values are not adjusted. #' #' @seealso \code{\link{aov_ez}} and \code{\link{aov_car}} are the convenience #' functions to create the object appropriate for \code{nice_anova}. #' #' @author The code for calculating generalized eta-squared was written by Mike #' Lawrence.\cr Everything else was written by Henrik Singmann. #' #' @references Bakeman, R. (2005). Recommended effect size statistics for #' repeated measures designs. \emph{Behavior Research Methods}, 37(3), #' 379-384. \doi{10.3758/BF03192707} #' #' Cramer, A. O. J., van Ravenzwaaij, D., Matzke, D., Steingroever, H., #' Wetzels, R., Grasman, R. P. P. P., ... Wagenmakers, E.-J. (2015). Hidden #' multiplicity in exploratory multiway ANOVA: Prevalence and remedies. #' \emph{Psychonomic Bulletin & Review}, 1-8. #' \doi{10.3758/s13423-015-0913-5} #' #' Olejnik, S., & Algina, J. (2003). Generalized Eta and Omega Squared #' Statistics: Measures of Effect Size for Some Common Research Designs. #' \emph{Psychological Methods}, 8(4), 434-447. #' \doi{10.1037/1082-989X.8.4.434} #' #' @name nice #' @importFrom stats anova #' @encoding UTF-8 #' #' @example examples/examples.nice.R #' #' @export nice nice <- function(object, ...) UseMethod("nice", object) #' @rdname nice #' @method nice afex_aov #' @export nice.afex_aov <- function(object, es = attr(object$anova_table, "es"), observed = attr(object$anova_table, "observed"), correction = attr(object$anova_table, "correction"), MSE = NULL, intercept = NULL, p_adjust_method = attr(object$anova_table, "p_adjust_method"), sig_symbols = attr(object$anova_table, "sig_symbols"), round_ps = attr(object$anova_table, "round_ps"), ...) { # if(is.null(es)) { # Defaults to afex_options("es") because of default set in anova.afex_aov # es <- c("pes", "ges")[c("pes", "ges") %in% colnames(object$anova_table)] # } dots <- list(...) if(is.null(MSE)) { # Defaults to TRUE because of default set in anova.afex_aov MSE <- "MSE" %in% colnames(object$anova_table) } if(is.null(intercept)) { # Defaults to FALSE because of default set in anova.afex_aov intercept <- "(Intercept)" %in% rownames(object$anova_table) } if("sig.symbols" %in% names(dots)) { #(!missing(sig.symbols)) { warn_deprecated_arg("sig.symbols", "sig_symbols") sig_symbols <- dots$sig.symbols } if("p.adjust.method" %in% names(dots)) { #(!missing(sig.symbols)) { warn_deprecated_arg("p.adjust.method", "p_adjust_method") p_adjust_method <- dots$p.adjust.method } anova_table <- as.data.frame(anova(object, es = es, observed = observed, correction = correction, MSE = MSE, intercept = intercept, p_adjust_method = p_adjust_method)) nice.anova(anova_table, MSE = MSE, intercept = intercept, sig_symbols = sig_symbols, round_ps = round_ps) } #' @rdname nice #' @method nice anova #' @export nice.anova <- function(object, MSE = NULL, intercept = NULL, sig_symbols = attr(object, "sig_symbols"), round_ps = attr(object, "round_ps"), sig.symbols, ...) { dots <- list(...) if(is.null(MSE)) { # Defaults to TRUE because of default set in anova.afex_aov MSE <- "MSE" %in% colnames(object) } if(is.null(intercept)) { # Defaults to FALSE because of default set in anova.afex_aov intercept <- "(Intercept)" %in% rownames(object) } if("sig.symbols" %in% names(dots)) { #(!missing(sig.symbols)) { warn_deprecated_arg("sig.symbols", "sig_symbols") sig_symbols <- dots$sig.symbols } if(is.null(sig_symbols)) { sig_symbols <- afex_options("sig_symbols") } if(is.null(round_ps)) { round_ps <- afex_options("round_ps") } # internal functions: is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol make.fs <- function(anova, symbols) { ifelse(anova[["Pr(>F)"]] < 0.001, paste0(formatC( anova[["F"]], digits = 2, format = "f"), symbols[4]), ifelse(anova[["Pr(>F)"]] < 0.01, paste0(formatC( anova[["F"]], digits = 2, format = "f"), symbols[3]), ifelse(anova[["Pr(>F)"]] < 0.05, paste0(formatC( anova[["F"]], digits = 2, format = "f"), symbols[2]), ifelse(anova[["Pr(>F)"]] < 0.1, paste0(formatC( anova[["F"]], digits = 2, format = "f"), symbols[1]), formatC(anova[["F"]], digits = 2, format = "f"))))) } anova_table <- object anova_table[,"df"] <- paste(ifelse(is.wholenumber(anova_table[,"num Df"]), anova_table[,"num Df"], formatC(anova_table[,"num Df"], digits = 2, format = "f")), ifelse(is.wholenumber(anova_table[,"den Df"]), anova_table[,"den Df"], formatC(anova_table[,"den Df"], digits = 2, format = "f")), sep = ", ") symbols.use <- c(" +", " *", " **", " ***") symbols.use[seq_along(sig_symbols)] <- sig_symbols df.out <- data.frame(Effect = row.names(anova_table), df = anova_table[,"df"], stringsAsFactors = FALSE) if (MSE) df.out <- cbind(df.out, data.frame(MSE = formatC(anova_table[,"MSE"], digits = 2, format = "f"), stringsAsFactors = FALSE)) df.out <- cbind(df.out, data.frame(F = make.fs(anova_table, symbols.use), stringsAsFactors = FALSE)) if (!is.null(anova_table$ges)) df.out$ges <- round_ps(anova_table$ges) if (!is.null(anova_table$pes)) df.out$pes <- round_ps(anova_table$pes) df.out$p.value <- round_ps(anova_table[,"Pr(>F)"]) if (!intercept) if (df.out[1,1] == "(Intercept)") { df.out <- df.out[-1,, drop = FALSE] } rownames(df.out) <- NULL attr(df.out, "heading") <- attr(object, "heading") attr(df.out, "p_adjust_method") <- attr(object, "p_adjust_method") attr(df.out, "correction") <- attr(object, "correction") attr(df.out, "observed") <- attr(object, "observed") attr(df.out, "es") <- attr(object, "es") attr(df.out, "sig_symbols") <- symbols.use attr(df.out, "round_ps") <- round_ps class(df.out) <- c("nice_table", class(df.out)) df.out } make.stat <- function(anova, stat, symbols) { out <- ifelse(anova[[paste0("Pr(>", stat,")")]] < 0.001, paste0(formatC(anova[[stat]], digits = 2, format = "f"), symbols[4]), ifelse(anova[[paste0("Pr(>", stat,")")]] < 0.01, paste0(formatC(anova[[stat]], digits = 2, format = "f"), symbols[3]), ifelse(anova[[paste0("Pr(>", stat,")")]] < 0.05, paste0(formatC(anova[[stat]], digits = 2, format = "f"), symbols[2]), ifelse(anova[[paste0("Pr(>", stat,")")]] < 0.1, paste0(formatC(anova[[stat]], digits = 2, format = "f"), symbols[1]), formatC(anova[[stat]], digits = 2, format = "f"))))) out[is.na(anova[[paste0("Pr(>", stat,")")]])] <- formatC( anova[[stat]][is.na(anova[[paste0("Pr(>", stat,")")]])], digits = 2, format = "f") out } is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol #' @rdname nice #' @method nice mixed #' @export nice.mixed <- function(object, sig_symbols = attr(object$anova_table, "sig_symbols"), round_ps = attr(object$anova_table, "round_ps"), ...) { anova_table <- object$anova_table dots <- list(...) if("sig.symbols" %in% names(dots)) { #(!missing(sig.symbols)) { warn_deprecated_arg("sig.symbols", "sig_symbols") sig_symbols <- dots$sig.symbols } if(is.null(sig_symbols)) sig_symbols <- afex_options("sig_symbols") if(is.null(round_ps)) round_ps <- afex_options("round_ps") symbols.use <- c(" +", " *", " **", " ***") symbols.use[seq_along(sig_symbols)] <- sig_symbols if (is.null(attr(object, "method"))) { df.out <- object[[1]] warning("mixed object was created with old version of afex, table not nicely formatted.") } else if (attr(object, "method") %in% c("KR", "S", "nested-KR") ) { anova_table[,"df"] <- paste(ifelse(is.wholenumber(anova_table[,"num Df"]), round(anova_table[,"num Df"]), formatC(anova_table[,"num Df"], digits = 2, format = "f")), ifelse(is.wholenumber(anova_table[,"den Df"]), round(anova_table[,"den Df"]), formatC(anova_table[,"den Df"], digits = 2, format = "f")), sep = ", ") if ("F.scaling" %in% anova_table) { df.out <- data.frame( Effect = row.names(anova_table), df = anova_table[,"df"], "F.scaling" = formatC(anova_table[,"F.scaling"], digits = 2, format = "f"), stringsAsFactors = FALSE, check.names = FALSE) } else { df.out <- data.frame( Effect = row.names(anova_table), df = anova_table[,"df"], stringsAsFactors = FALSE, check.names = FALSE) } df.out <- cbind(df.out, data.frame( F = make.stat(anova_table, stat = "F", symbols.use), stringsAsFactors = FALSE)) df.out$p.value <- round_ps(anova_table[,"Pr(>F)"]) } else if (attr(object, "method") == "PB") { anova_table[,"Pr(>Chisq)"] <- anova_table[,"Pr(>PB)"] df.out <- data.frame(Effect = row.names(anova_table), df = anova_table[,"Chi Df"], Chisq = make.stat(anova_table, stat = "Chisq", symbols.use), p.value = round_ps(anova_table[,"Pr(>Chisq)"]), stringsAsFactors = FALSE, check.names = FALSE) } else if (attr(object, "method") == "LRT") { df.out <- data.frame(Effect = row.names(anova_table), df = anova_table[,"Chi Df"], Chisq = make.stat(anova_table, stat = "Chisq", symbols.use), p.value = round_ps(anova_table[,"Pr(>Chisq)"]), stringsAsFactors = FALSE, check.names = FALSE) } else stop("method of mixed object not supported.") rownames(df.out) <- NULL attr(df.out, "heading") <- attr(anova_table, "heading") attr(df.out, "sig_symbols") <- symbols.use attr(df.out, "round_ps") <- round_ps class(df.out) <- c("nice_table", class(df.out)) df.out } #' @rdname nice #' @method print nice_table #' @export print.nice_table <- function(x, ...) { if(!is.null(heading <- attr(x, "heading"))) { cat(heading, sep = "\n") } print.data.frame(x) if(!is.null(attr(x, "sig_symbols"))) print_legend(x) if(!is.null(correction_method <- attr(x, "correction")) && correction_method != "none") { cat("\nSphericity correction method:", correction_method, "\n") } invisible(x) } afex/R/compare.2.vectors.R0000644000176200001440000002144113664111747015007 0ustar liggesusers#' Compare two vectors using various tests. #' #' Compares two vectors \code{x} and \code{y} using t-test, Welch-test (also known as Satterthwaite), Wilcoxon-test, and a permutation test implemented in \pkg{coin}. #' #' @usage compare.2.vectors(x, y, paired = FALSE, na.rm = FALSE, #' tests = c("parametric", "nonparametric"), coin = TRUE, #' alternative = "two.sided", #' perm.distribution, #' wilcox.exact = NULL, wilcox.correct = TRUE) #' #' @param x a (non-empty) numeric vector of data values. #' @param y a (non-empty) numeric vector of data values. #' @param paired a logical whether the data is paired. Default is \code{FALSE}. #' @param na.rm logical. Should \code{NA} be removed? Default is \code{FALSE}. #' @param tests Which tests to report, parametric or nonparamteric? The default \code{c("parametric", "nonparametric")} reports both. See details. (Arguments may be abbreviated). #' @param alternative a character, the alternative hypothesis must be one of \code{"two.sided"} (default), \code{"greater"} or \code{"less"}. You can specify just the initial letter, will be passed to all functions. #' @param coin logical or character. Should (permutation) tests from the \pkg{coin} package be reported? Default is \code{TRUE} corresponding to all implemented tests. \code{FALSE} calculates no tests from \pkg{coin}. A character vector may include any of the following (potentially abbreviated) implemented tests (see also Details): \code{c("permutation", "Wilcoxon", "median")} #' @param perm.distribution \code{distribution} argument to \pkg{coin}, see \code{\link[coin]{NullDistribution}} or , \code{\link[coin]{IndependenceTest}}. If missing, defaults to \code{coin::approximate(100000)} indicating an approximation of the excat conditional distribution with 100.000 Monte Carlo samples. One can use \code{"exact"} for small samples and if \code{paired = FALSE}. #' @param wilcox.exact \code{exact} argument to \code{\link{wilcox.test}}. #' @param wilcox.correct \code{correct} argument to \code{\link{wilcox.test}}. #' #' @details The \code{parametric} tests (currently) only contain the \emph{t}-test and Welch/Statterwaithe/Smith/unequal variance \emph{t}-test implemented in \code{\link{t.test}}. The latter one is only displayed if \code{paired = FALSE}. #' #' The \code{nonparametric} tests (currently) contain the Wilcoxon test implemented in \code{\link{wilcox.test}} (\code{stats::Wilcoxon}) and (if \code{coin = TRUE}) the following tests implemented in \pkg{coin}: #' #' \itemize{ #' \item a \code{permutation} test \code{\link[coin]{oneway_test}} (the only test in this selction not using a rank transformation), #' \item the \code{Wilcoxon} test \code{\link[coin]{wilcox_test}} (\code{coin::Wilcoxon}), and #' \item the \code{median} test \code{\link[coin]{median_test}}. #' } #' Note that the two implementations of the Wilcoxon test probably differ. This is due to differences in the calculation of the Null distributions. #' #' @return a list with up to two elements (i.e., \code{paramteric} and/or \code{nonparamteric}) each containing a \code{data.frame} with the following columns: \code{test}, \code{test.statistic}, \code{test.value}, \code{test.df}, \code{p}. #' #' @export compare.2.vectors # @importFrom coin oneway_test wilcox_test median_test approximate statistic pvalue #' @importFrom stats t.test wilcox.test #' @example examples/examples.compare.R #' #' @encoding UTF-8 #' compare.2.vectors <- function(x, y, paired = FALSE, na.rm = FALSE, tests = c("parametric", "nonparametric"), coin = TRUE, alternative = "two.sided", perm.distribution, wilcox.exact = NULL, wilcox.correct = TRUE) { tests <- match.arg(tests, c("parametric", "nonparametric"), several.ok = TRUE) if (na.rm) { x <- x[!is.na(x)] y <- y[!is.na(y)] } else if (any(is.na(x), is.na(y))) stop("NAs in data, use na.rm = TRUE.", call. = FALSE) out <- list() if (paired) if (!length(x) == length(y)) stop("length(x) needs to be equal to length(y) when paired is TRUE!", call. = FALSE) if ("parametric" %in% tests) { res.t <- t.test(x, y, paired = paired, var.equal = TRUE, alternative = alternative) parametric <- data.frame(test = "t", test.statistic = "t", test.value = res.t[["statistic"]], test.df = res.t[["parameter"]], p = res.t[["p.value"]], stringsAsFactors = FALSE) if (!paired) { res.welch <- t.test(x, y, paired = paired, var.equal = FALSE, alternative = alternative) parametric <- rbind(parametric, data.frame(test = "Welch", test.statistic = "t", test.value = res.welch[["statistic"]], test.df = res.welch[["parameter"]], p = res.welch[["p.value"]], stringsAsFactors = FALSE)) } rownames(parametric) <- NULL out <- c(out, list(parametric = parametric)) } if ("nonparametric" %in% tests) { implemented.tests <- c("permutation", "Wilcoxon", "median") res.wilcox <- wilcox.test(x, y, paired = paired, exact = wilcox.exact, correct = wilcox.correct, alternative = alternative) nonparametric <- data.frame(test = "stats::Wilcoxon", test.statistic = if (paired) "V" else "W", test.value = res.wilcox[["statistic"]], test.df = NA, p = res.wilcox[["p.value"]], stringsAsFactors = FALSE) if (!(coin == FALSE) && !requireNamespace("coin", quietly = TRUE)) { warning("package coin necessary if coin != FALSE.") coin <- FALSE } if (!(coin == FALSE)) { dv <- c(x, y) iv <- factor(rep(c("A", "B"), c(length(x), length(y)))) if (missing(perm.distribution)) { perm.distribution <- coin::approximate(100000) } if (paired) { id <- factor(rep(1:length(x), 2)) formula.coin <- as.formula(dv ~ iv | id) } else formula.coin <- as.formula(dv ~ iv) if (isTRUE(coin)) coin <- implemented.tests else coin <- match.arg(coin, implemented.tests, several.ok = TRUE) tryCatch(if ("permutation" %in% coin) { res.perm <- coin::oneway_test(formula.coin, distribution=perm.distribution, alternative = alternative) nonparametric <- rbind(nonparametric, data.frame(test = "permutation", test.statistic = "Z", test.value = coin::statistic(res.perm), test.df = NA, p = coin::pvalue(res.perm)[1], stringsAsFactors = FALSE)) }, error = function(e) warning(paste("coin::permutation test failed:", e))) tryCatch(if ("Wilcoxon" %in% coin) { res.coin.wilcox <- coin::wilcox_test(formula.coin, distribution=perm.distribution, alternative = alternative) nonparametric <- rbind(nonparametric, data.frame(test = "coin::Wilcoxon", test.statistic = "Z", test.value = coin::statistic(res.coin.wilcox), test.df = NA, p = coin::pvalue(res.coin.wilcox)[1], stringsAsFactors = FALSE)) }, error = function(e) warning(paste("coin::Wilcoxon test failed:", e))) tryCatch(if ("median" %in% coin) { res.median <- coin::median_test(formula.coin, distribution=perm.distribution, alternative = alternative) nonparametric <- rbind(nonparametric, data.frame(test = "median", test.statistic = "Z", test.value = coin::statistic(res.median), test.df = NA, p = coin::pvalue(res.median)[1], stringsAsFactors = FALSE)) }, error = function(e) warning(paste("coin::median test failed:", e))) } rownames(nonparametric) <- NULL out <- c(out, nonparametric = list(nonparametric)) } out } afex/R/round_ps.R0000644000176200001440000000300013667760652013365 0ustar liggesusers#' Helper functions for rounding p-values #' #' These functions return a character vector of p-values that are rounded as #' described below and without the leading zero before the decimal point. #' #' For \code{round_ps} p-values are rounded in a sane way: .99 - .01 to two #' digits, < .01 to three digits, < .001 to four digits. #' #' For \code{round_ps_apa} p-values are rounded following APA guidelines: .999 - #' .001 to three digits, and < .001 for values below this threshold. #' #' @param x a numeric vector #' #' @return A character vector with the same length as x. #' #' @note These functions are useful in \code{\link{nice}} and the default is set #' via \code{\link{afex_options}}. #' #' @author Henrik Singmann #' #' @encoding UTF-8 #' #' @examples #' x <- runif(10) #' y <- runif(10, 0, .01) #' #' round_ps(x) #' round_ps_apa(x) #' #' round_ps(y) #' round_ps_apa(y) #' #' round_ps(0.0000000099) #' round_ps_apa(0.0000000099) #' #' @export round_ps <- function(x) { substr(as.character(ifelse(x < 0.0001, " <.0001", ifelse(x < 0.001, formatC(x, digits = 4, format = "f"), ifelse(x < 0.01, formatC(x, digits = 3, format = "f"), ifelse(round(x, 2) == 1, " >.99", formatC(x, digits = 2, format = "f")))))), 2, 7) } #' @rdname round_ps #' @export round_ps_apa <- function(x) { substr(as.character( ifelse(x < 0.001, " <.001", ifelse(round(x, 3) == 1, " >.999", formatC(x, digits = 3, format = "f")) ) ), 2, 7) } afex/R/zzz.R0000644000176200001440000000460414413475055012372 0ustar liggesusers ## set default options for afex_options: .onLoad <- function(libname, pkgname) { op <- options() op.afex <- list( afex.type = 3, afex.set_data_arg = FALSE, afex.check_contrasts = TRUE, afex.method_mixed = "S", afex.return_aov = "afex_aov", afex.es_aov = "ges", afex.correction_aov = "GG", afex.factorize = TRUE, afex.lmer_function = "lmerTest", afex.sig_symbols = c(" +", " *", " **", " ***"), afex.emmeans_model = c("multivariate"), afex.include_aov = FALSE, afex.round_ps = round_ps_apa ) toset <- !(names(op.afex) %in% names(op)) if(any(toset)) options(op.afex[toset]) if (requireNamespace("emmeans", quietly = TRUE)) { emmeans::.emm_register(c("mixed", "afex_aov"), pkgname) } invisible() } .onAttach <- function(libname, pkgname) { #assign(".oldContrasts", options("contrasts"), envir = .GlobalEnv) packageStartupMessage("************\nWelcome to afex. For support visit: http://afex.singmann.science/") packageStartupMessage("- Functions for ANOVAs: aov_car(), aov_ez(), and aov_4()\n- Methods for calculating p-values with mixed(): 'S', 'KR', 'LRT', and 'PB'\n- 'afex_aov' and 'mixed' objects can be passed to emmeans() for follow-up tests\n- Get and set global package options with: afex_options()\n- Set sum-to-zero contrasts globally: set_sum_contrasts()\n- For example analyses see: browseVignettes(\"afex\")\n************") #if (options("contrasts")[[1]][1] != "contr.sum") { #packageStartupMessage("Setting contrasts to effects coding: options(contrasts=c('contr.sum', 'contr.poly'))\nThis affects all functions using contrasts (e.g., lmer, lm, aov, ...).\nTo reset default settings run: options(contrasts=c('contr.treatment', 'contr.poly')) (all afex functions should be unaffected by this)\n") # \nPrevious contrasts saved in '.oldContrasts'. #options(contrasts=c('contr.sum', 'contr.poly')) #} else packageStartupMessage("Contrasts already set to effects coding: options(contrasts=c('contr.sum', '...'))\n") #packageStartupMessage("afex loads the required packages (e.g., lme4, car, pbkrtest) in an order that should not lead to problems.\nLoading any of the packages (specifically lme4) beforehand can lead to problems (especially with older versions of either).\nLoading nlme in addition to afex (before or after loading it), may especially lead to problems.\n************") } afex/R/mixed.R0000644000176200001440000015507514665064314012655 0ustar liggesusers#' p-values for fixed effects of mixed-model via lme4::lmer() #' #' @description Estimates mixed models with \pkg{lme4} and calculates p-values #' for all fixed effects. The default method \code{"KR"} (= Kenward-Roger) as #' well as \code{method="S"} (Satterthwaite) support LMMs and estimate the #' model with \code{\link[lmerTest]{lmer}} and then pass it to the #' \code{\link[lmerTest]{lmerTest}} \code{anova} method (or #' \code{\link[car]{Anova}}). The other methods (\code{"LRT"} = #' likelihood-ratio tests and \code{"PB"} = parametric bootstrap) support both #' LMMs (estimated via \code{\link[lme4]{lmer}}) and GLMMs (i.e., with #' \code{family} argument which invokes estimation via #' \code{\link[lme4]{glmer}}) and estimate a full model and restricted models #' in which the parameters corresponding to one effect (i.e., model term) are #' withhold (i.e., fixed to 0). Per default tests are based on Type 3 sums of #' squares. \code{print}, \code{nice}, \code{anova}, and \code{summary} #' methods for the returned object of class \code{"mixed"} are available. #' \code{summary} invokes the default \pkg{lme4} summary method and shows #' parameters instead of effects. #' #' \code{lmer_alt} is simply a wrapper for mixed that only returns the #' \code{"lmerModLmerTest"} or \code{"merMod"} object and correctly uses the #' \code{||} notation for removing correlations among factors. This function #' otherwise behaves like \code{g/lmer} (as for \code{mixed}, it calls #' \code{glmer} as soon as a \code{family} argument is present). Use #' \code{\link{afex_options}}\code{("lmer_function")} to set which function #' for estimation should be used. This option determines the class of the #' returned object (i.e., \code{"lmerModLmerTest"} or \code{"merMod"}). #' #' #' @param formula a formula describing the full mixed-model to be fitted. As #' this formula is passed to \code{lmer}, it needs at least one random term. #' @param data \code{data.frame} containing the data. Should have all the #' variables present in \code{fixed}, \code{random}, and \code{dv} as columns. #' @param type type of test on which effects are based. Default is to use type 3 #' tests, taken from \code{\link{afex_options}}. #' @param method character vector indicating which methods for obtaining #' p-values should be used: \code{"S"} corresponds to the Satterthwaite #' approximation for degrees of freedom (via \code{\link[lmerTest]{lmerTest}}, #' only LMMs), \code{"KR"} corresponds to the Kenward-Roger approximation for #' degrees of freedom (only LMMs), \code{"PB"} calculates p-values based on #' parametric bootstrap, \code{"LRT"} calculates p-values via the likelihood #' ratio tests implemented in the \code{anova} method for \code{merMod} #' objects (only recommended for models with many [i.e., > 50] levels for the #' random factors). The default (currently \code{"S"}) is taken from #' \code{\link{afex_options}}. For historical compatibility \code{"nested-KR"} #' is also supported which was the default KR-method in previous versions. #' @param per_parameter \code{character} vector specifying for which variable #' tests should be run for each parameter (instead for the overall effect). #' Can be useful e.g., for testing ordered factors. Uses \code{\link{grep}} #' for selecting parameters among the fixed effects so regular expressions #' (\code{\link{regex}}) are possible. See Examples. #' @param args_test \code{list} of arguments passed to the function calculating #' the p-values. See Details. #' @param test_intercept logical. Whether or not the intercept should also be #' fitted and tested for significance. Default is \code{FALSE}. Only relevant #' if \code{type = 3}. #' @param check_contrasts \code{logical}. Should contrasts be checked and (if #' necessary) changed to \code{"contr.sum"}? See Details. The default #' (\code{"TRUE"}) is taken from \code{\link{afex_options}}. #' @param expand_re logical. Should random effects terms be expanded (i.e., #' factors transformed into numerical variables) before fitting with #' \code{(g)lmer}? Allows to use "||" notation with factors. #' @param all_fit logical. Should \code{\link[lme4]{allFit}} be used to fit each #' model with each available optimization algorithm and the results that #' provided the best fit in each case be used? Warning: This can dramatically #' increase the optimization time. Adds two new attributes to the returned #' object designating which algorithm was selected and the log-likelihoods for #' each algorithm. Note that only warnings from the initial fit are emitted #' during fitting. The warnings of the chosen models are emitted when printing #' the returned object. #' @param set_data_arg \code{logical}. Should the data argument in the slot #' \code{call} of the \code{merMod} object returned from \code{lmer} be set to #' the passed data argument? If \code{FALSE} (currently the default) the name #' will be \code{data}. \code{TRUE} may be helpful when fitted objects are #' used afterwards (e.g., compared using \code{anova} or when using the #' \code{effects} package, see examples). \pkg{emmeans} functions appear to #' work better with \code{FALSE}. Default is given by #' afex_options("set_data_arg"). #' @param progress if \code{TRUE}, shows progress with a text progress bar and #' other status messages during estimation. The default is to set \code{TRUE} #' for interactive usage and \code{FALSE} for non-interactive usage. #' @param cl A vector identifying a cluster; used for distributing the #' estimation of the different models using several cores (if seveal models #' are calculated). See examples. If \code{ckeck_contrasts = TRUE}, mixed sets #' the current contrasts (\code{getOption("contrasts")}) at the nodes. Note #' this does \emph{not} distribute calculation of p-values (e.g., when using #' \code{method = "PB"}) across the cluster. Use \code{args_test} for this. #' @param return the default is to return an object of class \code{"mixed"}. #' \code{return = "merMod"} will skip the calculation of all submodels and #' p-values and simply return the full model estimated with \code{lmer} (note #' that somewhat unintuiviely, the returned object can either be of class #' \code{"lmerModLmerTest"} or of class \code{"merMod"}, depending on the #' value of \code{\link{afex_options}}\code{("lmer_function")}). Can be useful #' in combination with \code{expand_re = TRUE} which allows to use "||" with #' factors. \code{return = "data"} will not fit any models but just return the #' data that would have been used for estimating the model (note that the data #' is also part of the returned object). #' @param sig_symbols Character. What should be the symbols designating #' significance? When entering an vector with \code{length(sig.symbol) < 4} #' only those elements of the default (\code{c(" +", " *", " **", " ***")}) #' will be replaced. \code{sig_symbols = ""} will display the stars but not #' the \code{+}, \code{sig_symbols = rep("", 4)} will display no symbols. The #' default is given by \code{afex_options("sig_symbols")}. #' @param ... further arguments (such as \code{weights}, \code{family}, or #' \code{control}) passed to #' \code{\link[lme4]{lmer}}/\code{\link[lme4]{glmer}}. Note that additional #' data (e.g., \code{weights}) need to be passed fully and not only #' by name (e.g., \code{weights = df$weights} and not \code{weights = #' weights}). #' #' #' @return An object of class \code{"mixed"} (i.e., a list) with the following #' elements: #' #' \enumerate{ #' \item \code{anova_table} a data.frame containing the statistics returned #' from \code{\link[pbkrtest]{KRmodcomp}}. The \code{stat} column in this #' data.frame gives the value of the test statistic, an F-value for #' \code{method = "KR"} and a chi-square value for the other two methods. #' \item \code{full_model} the \code{"lmerModLmerTest"} or \code{"merMod"} #' object returned from estimating the full model. Use #' \code{\link{afex_options}}\code{("lmer_function")} for setting which #' function for estimation should be used. The possible options are #' \code{"lmerTest"} (the default returning an object of class #' \code{"lmerModLmerTest"}) and \code{"lme4"} returning an object of class #' (\code{"merMod"}). Note that in case a \code{family} argument is present #' an object of class \code{"glmerMod"} is always returned. #' \item \code{restricted_models} a list of \code{"g/lmerMod"} (or #' \code{"lmerModLmerTest"}) objects from estimating the restricted models #' (i.e., each model lacks the corresponding effect) #' \item \code{tests} a list of objects returned by the function for #' obtaining the p-values. #' \item \code{data} The data used for estimation (i.e., after excluding #' missing rows and applying expand_re if requested). #' \item \code{call} The matched call. #' } #' #' It also has the following attributes, \code{"type"} and \code{"method"}. And #' the attributes \code{"all_fit_selected"} and \code{"all_fit_logLik"} if #' \code{all_fit=TRUE}. #' #' Two similar methods exist for objects of class \code{"mixed"}: \code{print} #' and \code{anova}. They print a nice version of the \code{anova_table} element #' of the returned object (which is also invisibly returned). This methods omit #' some columns and nicely round the other columns. The following columns are #' always printed: #' \enumerate{ #' \item \code{Effect} name of effect #' \item \code{p.value} estimated p-value for the effect #' } #' #' For LMMs with \code{method="KR"} or \code{method="S"} the following further #' columns are returned (note: the Kenward-Roger correction does two separate #' things: (1) it computes an effective number for the denominator df; (2) it #' scales the statistic by a calculated amount, see also #' \url{https://stackoverflow.com/a/25612960/289572}): #' \enumerate{ #' \item \code{F} computed F statistic #' \item \code{ndf} numerator degrees of freedom (number of parameters used #' for the effect) #' \item \code{ddf} denominator degrees of freedom (effective residual #' degrees of freedom for testing the effect), computed from the #' Kenward-Roger correction using \code{pbkrtest::KRmodcomp} #' \item \code{F.scaling} scaling of F-statistic computing from Kenward-Roger #' approximation (only printed if \code{method="nested-KR"}) #' } #' #' For models with \code{method="LRT"} the following further columns are #' returned: #' \enumerate{ #' \item \code{df.large} degrees of freedom (i.e., estimated paramaters) for #' full model (i.e., model containing the corresponding effect) #' \item \code{df.small} degrees of freedom (i.e., estimated paramaters) for #' restricted model (i.e., model without the corresponding effect) #' \item \code{chisq} 2 times the difference in likelihood (obtained with #' \code{logLik}) between full and restricted model #' \item \code{df} difference in degrees of freedom between full and #' restricted model (p-value is based on these df). #' } #' #' For models with \code{method="PB"} the following further column is returned: #' \enumerate{ #' \item \code{stat} 2 times the difference in likelihood (obtained with #' \code{logLik}) between full and restricted model (i.e., a chi-square #' value). #' } #' #' Note that \code{anova} can also be called with additional mixed and/or #' \code{merMod} objects. In this casethe full models are passed on to #' \code{anova.merMod} (with \code{refit=FALSE}, which differs from the default #' of \code{anova.merMod}) which produces the known LRT tables. #' #' The \code{summary} method for objects of class \code{mixed} simply calls #' \code{\link[lme4]{summary.merMod}} on the full model. #' #' If \code{return = "merMod"} (or when invoking \code{lmer_alt}), an object of #' class \code{"lmerModLmerTest"} or of class \code{"merMod"} (depending on the #' value of \code{\link{afex_options}}\code{("lmer_function")}), as returned #' from \code{g/lmer}, is returned. The default behavior is to return an object #' of class \code{"lmerModLmerTest"} estimated via \code{\link[lmerTest]{lmer}}. #' #'@details For an introduction to mixed-modeling for experimental designs see #' our chapter #' (\href{http://singmann.org/download/publications/singmann_kellen-introduction-mixed-models.pdf}{Singmann #' & Kellen, in press}) or Barr, Levy, Scheepers, & Tily (2013). Arguments for #' using the Kenward-Roger approximation for obtaining p-values are given by #' Judd, Westfall, and Kenny (2012). Further introductions to mixed-modeling #' for experimental designs are given by Baayen and colleagues (Baayen, 2008; #' Baayen, Davidson & Bates, 2008; Baayen & Milin, 2010). Specific #' recommendations on which random effects structure to specify for #' confirmatory tests can be found in Barr and colleagues (2013) and Barr #' (2013), but also see Bates et al. (2015). #' #' \subsection{p-value Calculations}{ #' #' When \code{method = "KR"} (implemented via #' \code{\link[pbkrtest]{KRmodcomp}}), the Kenward-Roger approximation for #' degrees-of-freedom is calculated using \code{\link[lmerTest]{lmerTest}} (if #' \code{test_intercept=FALSE}) or \code{\link[car]{Anova}} (if #' \code{test_intercept=TRUE}), which is only applicable to linear-mixed models #' (LMMs). The test statistic in the output is an F-value (\code{F}). A similar #' method that requires less RAM is \code{method = "S"} which calculates the #' Satterthwaite approximation for degrees-of-freedom via #' \code{\link[lmerTest]{lmerTest}} and is also only applicable to LMMs. #' \code{method = "KR"} or \code{method = "S"} provide the best control for #' Type 1 errors for LMMs (Luke, 2017). #' #' \code{method = "PB"} calculates p-values using parametric bootstrap using #' \code{\link[pbkrtest]{PBmodcomp}}. This can be used for linear and also #' generalized linear mixed models (GLMMs) by specifying a #' \code{\link[stats]{family}} argument to \code{mixed}. Note that you should #' specify further arguments to \code{PBmodcomp} via \code{args_test}, #' especially \code{nsim} (the number of simulations to form the reference #' distribution) or \code{cl} (for using multiple cores). For other arguments #' see \code{\link[pbkrtest]{PBmodcomp}}. Note that \code{REML} (argument to #' \code{[g]lmer}) will be set to \code{FALSE} if method is \code{PB}. #' #' \code{method = "LRT"} calculates p-values via likelihood ratio tests #' implemented in the \code{anova} method for \code{"merMod"} objects. This is #' the method recommended by Barr et al. (2013; which did not test the other #' methods implemented here). Using likelihood ratio tests is only recommended #' for models with many levels for the random effects (> 50), but can be pretty #' helpful in case the other methods fail (due to memory and/or time #' limitations). The #' \href{http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html}{lme4 faq} also #' recommends the other methods over likelihood ratio tests. } #' #' \subsection{Implementation Details}{ #' #' For methods \code{"KR"} and \code{"S"} type 3 and 2 tests are implemented as #' in \code{\link[car]{Anova}}. #' #' For all other methods, type 3 tests are obtained by comparing a model in #' which only the tested effect is excluded with the full model (containing all #' effects). For method \code{"nested-KR"} (which was the default in previous #' versions) this corresponds to the (type 3) Wald tests given by #' \code{car::Anova} for \code{"lmerMod"} models. The submodels in which the #' tested effect is excluded are obtained by manually creating a model matrix #' which is then fitted in \code{"lme4"}. #' #' Type 2 tests are truly sequential. They are obtained by comparing a model in #' which the tested effect and all higher oder effect (e.g., all three-way #' interactions for testing a two-way interaction) are excluded with a model in #' which only effects up to the order of the tested effect are present and all #' higher order effects absent. In other words, there are multiple full models, #' one for each order of effects. Consequently, the results for lower order #' effects are identical of whether or not higher order effects are part of the #' model or not. This latter feature is not consistent with classical ANOVA #' type 2 tests but a consequence of the sequential tests (and #' \href{https://stat.ethz.ch/pipermail/r-sig-mixed-models/2012q3/018992.html}{I #' didn't find a better way} of implementing the Type 2 tests). This #' \strong{does not} correspond to the (type 2) Wald test reported by #' \code{car::Anova}. #' #' If \code{check_contrasts = TRUE}, contrasts will be set to #' \code{"contr.sum"} for all factors in the formula if default contrasts are #' not equal to \code{"contr.sum"} or \code{attrib(factor, "contrasts") != #' "contr.sum"}. Furthermore, the current contrasts (obtained via #' \code{getOption("contrasts")}) will be set at the cluster nodes if \code{cl} #' is not \code{NULL}. } #' #' \subsection{Expand Random Effects}{ \code{expand_re = TRUE} allows to expand #' the random effects structure before passing it to \code{lmer}. This allows #' to disable estimation of correlation among random effects for random effects #' term containing factors using the \code{||} notation which may aid in #' achieving model convergence (see Bates et al., 2015). This is achieved by #' first creating a model matrix for each random effects term individually, #' rename and append the so created columns to the data that will be fitted, #' replace the actual random effects term with the so created variables #' (concatenated with +), and then fit the model. The variables are renamed by #' prepending all variables with rei (where i is the number of the random #' effects term) and replacing ":" with "_by_". #' #' \code{lmer_alt} is simply a wrapper for \code{mixed} that is intended to #' behave like \code{lmer} (or \code{glmer} if a \code{family} argument is #' present), but also allows the use of \code{||} with factors (by always using #' \code{expand_re = TRUE}). This means that \code{lmer_alt} per default does #' not enforce a specific contrast on factors and only returns the #' \code{"lmerModLmerTest"} or \code{"merMod"} object without calculating any #' additional models or p-values (this is achieved by setting \code{return = #' "merMod"}). Note that it most likely differs from \code{g/lmer} in how it #' handles missing values so it is recommended to only pass data without #' missing values to it! #' #' One consequence of using \code{expand_re = TRUE} is that the data that is #' fitted will not be the same as the passed data.frame which can lead to #' problems with e.g., the \code{predict} method. However, the actual data used #' for fitting is also returned as part of the \code{mixed} object so can be #' used from there. Note that the \code{set_data_arg} can be used to change #' whether the \code{data} argument in the call to \code{g/lmer} is set to #' \code{data} (the default) or the name of the data argument passed by the #' user. } #' #' @note When \code{method = "KR"}, obtaining p-values is known to crash due too #' insufficient memory or other computational limitations (especially with #' complex random effects structures). In these cases, the other methods #' should be used. The RAM demand is a problem especially on 32 bit Windows #' which only supports up to 2 or 3GB RAM (see #' \href{https://CRAN.R-project.org/bin/windows/base/rw-FAQ.html}{R Windows #' FAQ}). Then it is probably a good idea to use methods "S", "LRT", or "PB". #' #' \code{"mixed"} will throw a message if numerical variables are not centered #' on 0, as main effects (of other variables then the numeric one) can be hard #' to interpret if numerical variables appear in interactions. See Dalal & #' Zickar (2012). #' #' Per default \code{mixed} uses \code{\link[lmerTest]{lmer}}, this can be #' changed to \code{\link[lme4]{lmer}} by calling: #' \code{afex_options(lmer_function = "lme4")} #' #' Formulas longer than 500 characters will most likely fail due to the use of #' \code{\link{deparse}}. #' #' Please report bugs or unexpected behavior by opening a guthub issue: #' \url{https://github.com/singmann/afex/issues} #' #' @author Henrik Singmann with contributions from #' \href{https://stackoverflow.com/q/11335923/289572}{Ben Bolker and Joshua #' Wiley}. #' #' @seealso \code{\link{aov_ez}} and \code{\link{aov_car}} for convenience #' functions to analyze experimental desIgns with classical ANOVA or ANCOVA #' wrapping \code{\link[car]{Anova}}. #' #' see the following for the data sets from Maxwell and Delaney (2004) used #' and more examples: \code{\link{md_15.1}}, \code{\link{md_16.1}}, and #' \code{\link{md_16.4}}. #' #' @references Baayen, R. H. (2008). \emph{Analyzing linguistic data: a #' practical introduction to statistics using R}. Cambridge, UK; New York: #' Cambridge University Press. #' #' Baayen, R. H., Davidson, D. J., & Bates, D. M. (2008). Mixed-effects #' modeling with crossed random effects for subjects and items. \emph{Journal #' of Memory and Language}, 59(4), 390-412. \doi{10.1016/j.jml.2007.12.005} #' #' Baayen, R. H., & Milin, P. (2010). Analyzing Reaction Times. #' \emph{International Journal of Psychological Research}, 3(2), 12-28. #' #' Barr, D. J. (2013). Random effects structure for testing interactions in #' linear mixed-effects models. \emph{Frontiers in Quantitative Psychology and #' Measurement}, 328. \doi{10.3389/fpsyg.2013.00328} #' #' Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects #' structure for confirmatory hypothesis testing: Keep it maximal. #' \emph{Journal of Memory and Language}, 68(3), 255-278. #' \doi{10.1016/j.jml.2012.11.001} #' #' Bates, D., Kliegl, R., Vasishth, S., & Baayen, H. (2015). #' \emph{Parsimonious Mixed Models}. arXiv:1506.04967 [stat]. Retrieved from #' \url{https://arxiv.org/abs/1506.04967} #' #' Dalal, D. K., & Zickar, M. J. (2012). Some Common Myths About Centering #' Predictor Variables in Moderated Multiple Regression and Polynomial #' Regression. \emph{Organizational Research Methods}, 15(3), 339-362. #' \doi{10.1177/1094428111430540} #' #' Judd, C. M., Westfall, J., & Kenny, D. A. (2012). Treating stimuli as a #' random factor in social psychology: A new and comprehensive solution to a #' pervasive but largely ignored problem. \emph{Journal of Personality and #' Social Psychology}, 103(1), 54-69. \doi{10.1037/a0028347} #' #' Luke, S. (2017). Evaluating significance in linear mixed-effects models in #' R. \emph{Behavior Research Methods}. #' \doi{10.3758/s13428-016-0809-y} #' #' Maxwell, S. E., & Delaney, H. D. (2004). \emph{Designing experiments and #' analyzing data: a model-comparisons perspective.} Mahwah, N.J.: Lawrence #' Erlbaum Associates. #' #' ## @import pbkrtest #' @importFrom lme4 glmer nobars getME isREML #' @importFrom parallel clusterCall clusterExport clusterEvalQ clusterApplyLB #' @importFrom stats logLik terms as.formula contrasts<- model.matrix model.frame anova #' @importFrom methods is #' @encoding UTF-8 #' #' @example examples/examples.mixed.R #' #' @export mixed <- function(formula, data, type = afex_options("type"), method = afex_options("method_mixed"), per_parameter = NULL, args_test = list(), test_intercept = FALSE, check_contrasts = afex_options("check_contrasts"), expand_re = FALSE, all_fit = FALSE, set_data_arg = afex_options("set_data_arg"), progress = interactive(), cl = NULL, return = "mixed", sig_symbols = afex_options("sig_symbols"), ...) { dots <- list(...) data <- as.data.frame(data) # adding droplevels() here seems to lead to problems # with factors that have contrasts associated with it. ### deprercate old argument names: if("per.parameter" %in% names(dots)) { warn_deprecated_arg("per.parameter", "per_parameter") per_parameter <- dots$per.parameter } if("args.test" %in% names(dots)) { warn_deprecated_arg("args.test", "args_test") args_test <- dots$args.test } if("test.intercept" %in% names(dots)) { warn_deprecated_arg("test.intercept", "test_intercept") test_intercept <- dots$test.intercept } if("check.contrasts" %in% names(dots)) { warn_deprecated_arg("check.contrasts", "check_contrasts") check_contrasts <- dots$check.contrasts } if("set.data.arg" %in% names(dots)) { warn_deprecated_arg("set.data.arg", "set_data_arg") set_data_arg <- dots$set.data.arg } if("sig.symbols" %in% names(dots)) { #(!missing(sig.symbols)) { warn_deprecated_arg("sig.symbols", "sig_symbols") sig_symbols <- dots$sig.symbols } ## real function begins: vars.to.check <- all.vars(as.formula(formula)) data <- check_contrasts( data = data, factors = vars.to.check, check_contrasts = check_contrasts, type = type, warn = FALSE ) method <- match.arg(method, c("KR", "S", "PB", "LRT", "nested-KR", "F"), several.ok=FALSE) #################### ### Part I: prepare fitting (i.e., obtain model info, check model, ...) #################### mc <- match.call() formula.f <- as.formula(formula) if (!inherits(formula, "formula")) message("Formula (the first argument) converted to formula.") dv <- as.character(formula.f)[[2]] all.terms <- attr(terms(formula.f), "term.labels") effect.order <- attr(terms(formula.f), "order") effect.order <- effect.order[!grepl("\\|", all.terms)] max.effect.order <- max(effect.order) random <- paste0(paste0("(", all.terms[grepl("\\|", all.terms)], ")"), collapse = " + ") rh2 <- nobars(formula.f) rh2[[2]] <- NULL m.matrix <- model.matrix(rh2, data = data) fixed.effects <- attr(terms(rh2, data = data), "term.labels") mapping <- attr(m.matrix, "assign") fixed.vars <- all.vars(rh2) # check for missing values in variables used: if (nrow(model.matrix(nobars(formula.f), data = data)) != nrow(data)) { data <- model.frame( as.formula(paste0(vars.to.check[1], "~", paste0(vars.to.check[-1], collapse = "+"))), data = data) m.matrix <- model.matrix(rh2, data = data) warning(paste0("Due to missing values, reduced number of observations to ", nrow(data)), call. = FALSE) if(set_data_arg) { warning("Due to missing values, set_data_arg set to FALSE.", call. = FALSE) set_data_arg <- FALSE } } # check if numerical variables are centered c.ns <- fixed.vars[vapply(data[, fixed.vars, drop = FALSE], is.numeric, TRUE)] if (length(c.ns) > 0) { non.null <- c.ns[!abs(vapply(data[, c.ns, drop = FALSE], mean, 0)) < .Machine$double.eps ^ 0.5] if (length(non.null) > 0) message(paste0("Numerical variables NOT centered on 0: ", paste0(non.null, collapse = ", "), "\nIf in interactions, interpretation of lower order", " (e.g., main) effects difficult.")) } if (expand_re) { expand_re_out <- expand_re_fun(all.terms = all.terms, data = data) data <- expand_re_out$data random <- expand_re_out$random } if (return == "data") return(data) #################### ### Part II: obtain the lmer fits #################### ## Part IIa: prepare formulas mf <- mc[!names(mc) %in% c("type", "method", "args.test", "args_test", "progress", "check.contrasts", "check_contrasts", "per.parameter", "per_parameter", "cl", "test.intercept", "test_intercept","expand_re", "return", "all_fit", "sig_symbols", "sig.symbols", "set_data_arg")] mf[["formula"]] <- as.formula(paste0(dv,deparse(rh2, width.cutoff = 500L),"+",random)) if ("family" %in% names(mf)) { mf[[1]] <- as.name("glmer") use_reml <- FALSE } else { if (afex_options("lmer_function") == "lmerTest") mf[[1]] <- quote(lmerTest::lmer) else if (afex_options("lmer_function") == "lme4") { if (!(return %in% c("merMod")) && method %in% c("KR", "S")) stop('afex_options("lmer_function") needs to be "lmerTest" for method="', method, '"', call. = FALSE) mf[[1]] <- quote(lme4::lmer) } else stop("value of afex_options('lmer_function') not supported.", call. = FALSE) use_reml <- TRUE } mf[["data"]] <- as.name("data") if ((method[1] %in% c("PB", "LRT")) & !("family" %in% names(mf))) { if ((!"REML" %in% names(mf)) || mf[["REML"]]) { message("REML argument to lmer() set to FALSE for method = 'PB' or 'LRT'") mf[["REML"]] <- FALSE use_reml <- FALSE } } if (return == "merMod") { out <- eval(mf) if(set_data_arg) out@call[["data"]] <- mc[["data"]] return(out) } if ("family" %in% names(mf)) { if (!(method[1] %in% c("LRT", "PB"))) stop("GLMMs can only be estimated with 'LRT' or 'PB'.", call. = FALSE) } ## do not calculate nested models for these methods: if (method[1] %in% c("KR", "S")) { if (progress) cat("Fitting one lmer() model. ") full_model <- eval(mf) if (all_fit) { all_fits <- suppressWarnings(lme4::allFit(full_model, data = data, verbose = FALSE)) all_fits <- c(default = full_model, all_fits) tmp_ll <- vapply(all_fits, function(x) tryCatch(logLik(x), error = function(e) NA), 0) full_model <- all_fits[[which.max(tmp_ll)]] full_model@optinfo$logLik_other <- tmp_ll } fits <- NULL tests <- NULL anova_tab_addition <- NULL if (progress) cat("[DONE]\nCalculating p-values. ") if (method[1] == "KR") { #lmerTest_method <- if(method[1] == "KR") "Kenward-Roger" else "Satterthwaite" if (test_intercept) { anova_out <- car::Anova(full_model, type = type, test.statistic = "F") anova_table <- as.data.frame(anova_out) anova_table <- anova_table[, c("Df", "Df.res", "F", "Pr(>F)")] colnames(anova_table) <- c("num Df", "den Df", "F", "Pr(>F)") } else { anova_out <- lmerTest_anova(full_model, ddf = "Kenward-Roger", type = type) anova_table <- as.data.frame(anova_out) get <- c("NumDF", "DenDF", "F.value", "F value", "Pr(>F)") anova_table <- anova_table[, match(get, colnames(anova_table), nomatch = 0L)] colnames(anova_table) <- c("num Df", "den Df", "F", "Pr(>F)") } } else if (method[1] == "S") { if (test_intercept) warning("Cannot test intercept with Satterthwaite approximation.") anova_out <- lmerTest_anova(full_model, ddf = "Satterthwaite", type = type) anova_table <- as.data.frame(anova_out) if (!("Pr(>F)" %in% colnames(anova_table))) { colnames(anova_table)[c(1,4)] <- c("NumDF", "F.value") anova_table$DenDF <- NA_real_ anova_table$`Pr(>F)` <- NA_real_ } get <- c("NumDF", "DenDF", "F.value", "F value", "Pr(>F)") anova_table <- anova_table[, match(get, colnames(anova_table), nomatch = 0L)] colnames(anova_table) <- c("num Df", "den Df", "F", "Pr(>F)") } if (progress) cat("[DONE]\n") if(set_data_arg) full_model@call[["data"]] <- mc[["data"]] } else { ## do calculate nested models for the methods below ## prepare (g)lmer formulas: if (type == 3 | type == "III") { if (attr(terms(rh2, data = data), "intercept") == 1) fixed.effects <- c("(Intercept)", fixed.effects) # The next part alters the mapping of parameters to effects/variables if # per_parameter is not NULL (this does the complete magic). if (!is.null(per_parameter)) { fixed.to.change <- c() for (parameter in per_parameter) { fixed.to.change <- c(fixed.to.change, grep(parameter, fixed.effects)) } fixed.to.change <- fixed.effects[sort(unique(fixed.to.change))] if ("(Intercept)" %in% fixed.to.change) fixed.to.change <- fixed.to.change[-1] fixed.all <- dimnames(m.matrix)[[2]] #tf2 <- fixed.to.change[2] for (tf2 in fixed.to.change) { tf <- which(fixed.effects == tf2) fixed.lower <- fixed.effects[seq_len(tf-1)] fixed.upper <- if (tf < length(fixed.effects)) fixed.effects[(tf+1):length(fixed.effects)] else NULL fixed.effects <- c(fixed.lower, fixed.all[which(mapping == (tf-1))], fixed.upper) map.to.replace <- which(mapping == (tf-1)) map.lower <- mapping[seq_len(map.to.replace[1]-1)] map.upper <- if (max(map.to.replace) < length(mapping)) mapping[(map.to.replace[length(map.to.replace)]+1): length(mapping)] else NULL mapping <- c(map.lower, seq_along(map.to.replace) + map.lower[length(map.lower)], map.upper + length(map.to.replace)-1) } } # make formulas formulas <- vector("list", length(fixed.effects) + 1) formulas[[1]] <- mf[["formula"]] for (i in seq_along(fixed.effects)) { tmp.columns <- paste0(deparse(-which(mapping == (i-1))), collapse = "") formulas[[i+1]] <- as.formula(paste0(dv, "~ 0 + m.matrix[,", tmp.columns, "] +", random)) } names(formulas) <- c("full_model", fixed.effects) if (!test_intercept && fixed.effects[1] == "(Intercept)") { fixed.effects <- fixed.effects[-1] formulas[["(Intercept)"]] <- NULL } } else if (type == 2 | type == "II") { if (!is.null(per_parameter)) stop("per_parameter argument only implemented for Type 3 tests.") full_model.formulas <- vector("list", max.effect.order) submodel.formulas <- vector("list", length(fixed.effects)) full_model.formulas[[length(full_model.formulas)]] <- mf[["formula"]] for (c in seq_len(max.effect.order)) { if (c == max.effect.order) next tmp.columns <- paste0(deparse(-which(mapping %in% which(effect.order > c))), collapse = "") full_model.formulas[[c]] <- as.formula(paste0(dv, "~ 0 + m.matrix[,", tmp.columns, "] +", random)) } for (c in seq_along(fixed.effects)) { order.c <- effect.order[c] tmp.columns <- paste0(deparse(-which(mapping == (c) | mapping %in% if (order.c == max.effect.order) -1 else which(effect.order > order.c))), collapse = "") submodel.formulas[[c]] <- as.formula( paste0(dv, "~ 0 + m.matrix[,", tmp.columns, "] +", random)) } formulas <- c(full_model.formulas, submodel.formulas) } else stop('Only type 3 and type 2 tests implemented.') ## Part IIb: fit models # single core if (is.null(cl)) { if (progress) cat(paste0("Fitting ", length(formulas), " (g)lmer() models:\n[")) fits <- vector("list", length(formulas)) if (all_fit) all_fits <- vector("list", length(formulas)) for (i in seq_along(formulas)) { mf[["formula"]] <- formulas[[i]] fits[[i]] <- eval(mf) if (all_fit) { all_fits[[i]] <- suppressWarnings( lme4::allFit(fits[[i]], data = data, verbose = FALSE)) all_fits[[i]] <- c(default = fits[[i]], all_fits[[i]]) tmp_ll <- vapply(all_fits[[i]], function(x) tryCatch(logLik(x), error = function(e) NA), 0) fits[[i]] <- all_fits[[i]][[which.max(tmp_ll)]] fits[[i]]@optinfo$logLik_other <- tmp_ll } if (progress) cat(".") } if (progress) cat("]\n") } else { # multicore eval.cl <- function(formula, m.call, progress, all_fit, data) { m.call[[2]] <- formula res <- eval(m.call) if (all_fit) { all_fits <- suppressWarnings(lme4::allFit(res, data = data, verbose = FALSE)) all_fits <- c(default = res, all_fits) tmp_ll <- vapply(all_fits, function(x) tryCatch(logLik(x), error = function(e) NA), 0) res <- all_fits[[which.max(tmp_ll)]] res@optinfo$logLik_other <- tmp_ll } if (progress) cat(".") return(res) } if (progress) cat(paste0("Fitting ", length(formulas), " (g)lmer() models.\n")) junk <- clusterCall(cl = cl, "require", package = "afex", character.only = TRUE) if (check_contrasts) { curr.contrasts <- getOption("contrasts") clusterExport(cl = cl, "curr.contrasts", envir = sys.nframe()) junk <- clusterEvalQ(cl = cl, options(contrasts=curr.contrasts)) } if (progress) junk <- clusterEvalQ(cl = cl, cat("[")) fits <- clusterApplyLB(cl = cl, x = formulas, eval.cl, m.call = mf, progress = progress, all_fit=all_fit, data = data) if (progress) junk <- clusterEvalQ(cl = cl, cat("]")) } #################### ### Part IIb: likelihood checks and refitting (refitting is DISABLED for the time being!) #################### check_likelihood <- function(fits) { if (type == 3 | type == "III") { logLik_full <- as.numeric(logLik(fits[[1]])) logLik_restricted <- as.numeric(vapply(fits[2:length(fits)], logLik, 0)) if(any(logLik_restricted > logLik_full)) return(fixed.effects[logLik_restricted > logLik_full]) } else if (type == 2 | type == "II") { logLik_full <- as.numeric(vapply(fits[1:max.effect.order],logLik, 0)) logLik_restricted <- as.numeric(vapply(fits[(max.effect.order+1):length(fits)], logLik, 0)) warn_logLik <- c() for (c in seq_along(fixed.effects)) { order.c <- effect.order[c] if(logLik_restricted[[c]] > logLik_full[[order.c]]) warn_logLik <- c(warn_logLik, fixed.effects[c]) } if(length(warn_logLik)>0) return(warn_logLik) } return(TRUE) } # check for smaller likelihood of nested model and refit if test fails: if (FALSE) { if(!isTRUE(check_likelihood(fits))) { if (progress) cat("refitting...") refits <- lapply(fits, all_fit, verbose=FALSE, data = data) browser() str(fits[[1]], 2) fits[[1]]@call sapply(refits, function(x) sapply(x, function(y) tryCatch(as.numeric(logLik(y)), error = function(e) as.numeric(NA)))) fits <- lapply(refits, function(x) { tmp_llk <- vapply(x, function(y) tryCatch(logLik(y), error = function(e) as.numeric(NA)), 0) x[[which.min(tmp_llk)]] }) } } # check again and warn if(!isREML(fits[[1]]) & !isTRUE(check_likelihood(fits))) { warning(paste( "Following nested model(s) provide better fit than full model:", paste(check_likelihood(fits), collapse = ", "), "\n Results cannot be trusted.", "Try all_fit=TRUE or reduce random effect structure!")) } if(set_data_arg){ for (i in seq_along(fits)) { fits[[i]]@call[["data"]] <- mc[["data"]] } } ## prepare for p-values: if (type == 3 | type == "III") { full_model <- fits[[1]] fits <- fits[-1] } else if (type == 2 | type == "II") { full_model <- fits[1:max.effect.order] fits <- fits[(max.effect.order+1):length(fits)] } names(fits) <- fixed.effects #################### ### Part III: obtain p-values #################### ## obtain p-values: #browser() if (method[1] == "nested-KR") { if (progress) cat(paste0("Obtaining ", length(fixed.effects), " p-values:\n[")) tests <- vector("list", length(fixed.effects)) for (c in seq_along(fixed.effects)) { if (type == 3 | type == "III") tests[[c]] <- pbkrtest::KRmodcomp(full_model, fits[[c]]) else if (type == 2 | type == "II") { order.c <- effect.order[c] tests[[c]] <- pbkrtest::KRmodcomp(full_model[[order.c]], fits[[c]]) } if (progress) cat(".") } if (progress) cat("]\n") names(tests) <- fixed.effects anova_table <- data.frame( t(vapply(tests, function(x) unlist(x[["test"]][1,]), unlist(tests[[1]][["test"]][1,])))) rownames(anova_table) <- fixed.effects colnames(anova_table) <- c("F", "num Df", "den Df", "F.scaling", "Pr(>F)") anova_table <- anova_table[, c("num Df", "den Df", "F.scaling", "F", "Pr(>F)")] anova_tab_addition <- NULL } else if (method[1] == "PB") { if (progress) cat(paste0("Obtaining ", length(fixed.effects), " p-values:\n[")) tests <- vector("list", length(fixed.effects)) for (c in seq_along(fixed.effects)) { if (type == 3 | type == "III") tests[[c]] <- do.call(pbkrtest::PBmodcomp, args = c(largeModel = full_model, smallModel = fits[[c]], args_test)) else if (type == 2 | type == "II") { order.c <- effect.order[c] tests[[c]] <- do.call(pbkrtest::PBmodcomp, args = c(largeModel = full_model[[order.c]], smallModel = fits[[c]], args_test)) } if (progress) cat(".") } if (progress) cat("]\n") names(tests) <- fixed.effects anova_table <- data.frame(t(vapply(tests, function(x) unlist(x[["test"]][2,]), unlist(tests[[1]][["test"]][2,])))) anova_table <- anova_table[,-2] LRT <- vapply(tests, function(x) unlist(x[["test"]][1,]), unlist(tests[[1]][["test"]][1,])) row.names(LRT) <- paste0(row.names(LRT), ".LRT") anova_table <- cbind(anova_table, t(LRT)) rownames(anova_table) <- fixed.effects anova_table <- anova_table[, c("stat", "df.LRT", "p.value.LRT", "p.value")] colnames(anova_table) <- c("Chisq", "Chi Df", "Pr(>Chisq)", "Pr(>PB)") anova_tab_addition <- NULL } else if (method[1] == "LRT") { tests <- vector("list", length(fixed.effects)) for (c in seq_along(fixed.effects)) { if (type == 3 | type == "III") tests[[c]] <- anova(full_model, fits[[c]]) else if (type == 2 | type == "II") { order.c <- effect.order[c] tmpModel <- full_model[[order.c]] tests[[c]] <- anova(tmpModel, fits[[c]]) } } names(tests) <- fixed.effects chisq <- vapply(tests, function(x) x[["Chisq"]][2], 0) if (packageVersion("lme4") <= "1.1.21") { df.large <- vapply(tests, function(x) x[["Df"]][2], 0) df.small <- vapply(tests, function(x) x[["Df"]][1], 0) df <- vapply(tests, function(x) x[["Chi Df"]][2], 0) } else { df.large <- vapply(tests, function(x) x[["npar"]][2], 0) df.small <- vapply(tests, function(x) x[["npar"]][1], 0) df <- vapply(tests, function(x) x[["Df"]][2], 0) } p.value <- vapply(tests, function(x) x[["Pr(>Chisq)"]][2], 0) anova_table <- data.frame(Df = df.small, Chisq = chisq, "Chi Df" = df, "Pr(>Chisq)"=p.value, stringsAsFactors = FALSE, check.names = FALSE) rownames(anova_table) <- fixed.effects if (type == 3 | type == "III") anova_tab_addition <- paste0("Df full model: ", df.large[1]) else anova_tab_addition <- paste0("Df full model(s): ", paste(df.large, collapse = ", ")) } else stop('Only methods "KR", "PB", "LRT", or "nested-KR" currently implemented.') } #################### ### Part IV: prepare output #################### class(anova_table) <- c("anova", "data.frame") attr(anova_table, "heading") <- c( paste0("Mixed Model Anova Table (Type ", type , " tests, ", method, "-method)\n"), paste0("Model: ", deparse(formula.f)), paste0("Data: " , deparse(mc[["data"]])), anova_tab_addition ) attr(anova_table, "sig_symbols") <- sig_symbols list.out <- list( anova_table = anova_table, full_model = full_model, restricted_models = fits, tests = tests, data = data, call = mc) #, type = type, method = method[[1]] class(list.out) <- "mixed" attr(list.out, "type") <- type attr(list.out, "method") <- method if (all_fit) { attr(list.out, "all_fit_selected") <- rapply(c(full_model = list.out$full_model, list.out$restricted_models), function(x) x@optinfo$optimizer, how = "unlist") attr(list.out, "all_fit_logLik") <- as.data.frame( rapply(c(full_model = list.out$full_model, list.out$restricted_models), function(x) x@optinfo$logLik_other, how = "replace")) } list.out } ## expand random effects sructure expand_re_fun <- function(all.terms, data) { random_parts <- paste0(all.terms[grepl("\\|", all.terms)]) which_random_double_bars <- grepl("\\|\\|", random_parts) random_units <- sub("^.+\\|\\s+", "", random_parts) tmp_random <- lapply(sub("\\|.+$", "", random_parts), function(x) as.formula(paste0("~", x))) tmp_model.matrix <- vector("list", length(random_parts)) re_contains_intercept <- rep(FALSE, length(random_parts)) new_random <- vector("character", length(random_parts)) for (i in seq_along(random_parts)) { tmp_model.matrix[[i]] <- model.matrix(tmp_random[[i]], data = data) if (ncol(tmp_model.matrix[[i]]) == 0) stop("Invalid random effects term, e.g., (0|id)") if (colnames(tmp_model.matrix[[i]])[1] == "(Intercept)") { tmp_model.matrix[[i]] <- tmp_model.matrix[[i]][,-1, drop = FALSE] re_contains_intercept[i] <- TRUE } if (ncol(tmp_model.matrix[[i]]) > 0) { colnames(tmp_model.matrix[[i]]) <- paste0("re", i, ".", gsub(":", "_by_", colnames(tmp_model.matrix[[i]]))) colnames(tmp_model.matrix[[i]]) <- make.names(colnames(tmp_model.matrix[[i]])) new_random[i] <- paste0("(", as.numeric(re_contains_intercept[i]), "+", paste0(colnames(tmp_model.matrix[[i]]), collapse = "+"), if (which_random_double_bars[i]) "||" else "|", random_units[i], ")") } else { new_random[i] <- paste0("(", as.numeric(re_contains_intercept[i]), if (which_random_double_bars[i]) "||" else "|", random_units[i], ")") } } data <- cbind(data, as.data.frame(do.call(cbind, tmp_model.matrix))) random <- paste0(new_random, collapse = "+") return(list(data = data, random = random)) } get_mixed_warnings <- function(x) { full_model_name <- names(x)[[2]] ntry <- function(x) tryCatch(x, error = function(e) NULL) if (is.list(x$full)) { warnings1 <- c(full = lapply(x[[2]], function(y) y@optinfo$warnings), lapply(x[[3]], function(y) y@optinfo$warnings)) warnings2 <- c(full = lapply(x[[2]], function(y) ntry(y@optinfo$conv$lme4$messages)), lapply(x[[3]], function(y) ntry(y@optinfo$conv$lme4$messages))) } else { warnings1 <- c(full = list(x[[full_model_name]]@optinfo$warnings), lapply(x[[3]], function(y) y@optinfo$warnings)) warnings2 <- c(full = list(ntry(x[[full_model_name]]@optinfo$conv$lme4$messages)), lapply(x[[3]], function(y) ntry(y@optinfo$conv$lme4$messages))) } warnings <- mapply(function(x, y) c(unlist(x), y), warnings1, warnings2, SIMPLIFY=FALSE) warn <- vapply(warnings, function(y) !length(y)==0, NA) for (i in names(warn)[warn]) warning("lme4 reported (at least) the following warnings for '", i, "':\n * ", paste(warnings[[i]], collapse = "\n * "), call. = FALSE) } check_likelihood <- function(object) { full_model_name <- names(object)[[2]] restricted_models_name <- names(object)[[3]] if (is.null(attr(object, "type"))) { attr(object, "type") <- object$type } if (attr(object, "type") == 3 | attr(object, "type") == "III") { logLik_full <- as.numeric(logLik(object[[full_model_name]])) logLik_restricted <- as.numeric(vapply(object[[restricted_models_name]], logLik, 0)) if(any(logLik_restricted > logLik_full)) return(rownames(object$anova_table)[logLik_restricted > logLik_full]) } else if (attr(object, "type") == 2 | attr(object, "type") == "II") { NULL } return(TRUE) } #' @rdname mixed #' @export lmer_alt <- function(formula, data, check_contrasts = FALSE, ...) { mc <- match.call() #assign(all.vars(mc[["data"]]), data) mc[[1]] <- as.name("mixed") mc[["return"]] <- "merMod" mc[["expand_re"]] <- TRUE mc[["progress"]] <- FALSE mc[["check_contrasts"]] <- check_contrasts #browser() eval(mc) } #' @method print mixed #' @export print.mixed <- function(x, ...) { full_model_name <- names(x)[[2]] try(if(!isREML(x[[full_model_name]]) && !isTRUE(check_likelihood(x))) warning(paste("Following nested model(s) provide better fit than full model:", paste(check_likelihood(x), collapse = ", "), "\n Results cannot be trusted. Try all_fit=TRUE!"), call. = FALSE), silent = TRUE) get_mixed_warnings(x) tmp <- nice.mixed(x, ...) print(tmp) invisible(tmp) } #anova.mixed <- #' @method summary mixed #' @export summary.mixed <- function(object, ...) { if ("full_model" %in% names(object)) summary(object = if (length(object[["full_model"]]) == 1) object[["full_model"]] else object[["full_model"]][[length(object[["full_model"]])]], ...) else if("full.model" %in% names(object)) summary(object = if (length(object[["full.model"]]) == 1) object[["full.model"]] else object[["full.model"]][[length(object[["full.model"]])]], ...) } #' @method anova mixed #' @export anova.mixed <- function(object, ..., sig_symbols = attr(object$anova_table, "sig_symbols"), refit = FALSE) { mCall <- match.call(expand.dots = TRUE) full_model_name <- names(object)[[2]] dots <- list(...) modp <- (as.logical(vapply(dots, is, NA, "merMod")) | as.logical(vapply(dots, is, NA, "lm")) | as.logical(vapply(dots, is, NA, "mixed")) ) if (any(modp)) { model.names <- c(deparse(mCall[["object"]]), vapply(which(modp), function(x) deparse(mCall[[x+2]]), "")) for (i in which(as.logical(vapply(dots, is, NA, "mixed")))) dots[[i]] <- dots[[i]][[full_model_name]] anova_table <- do.call(anova, args = c(object = object[[full_model_name]], dots, model.names = list(model.names), refit = refit)) } else { try(if(!isREML(object[[full_model_name]]) && !isTRUE(check_likelihood(object))) warning( paste("Following nested model(s) provide better fit than full model:", paste(check_likelihood(object), collapse = ", "), "\n Results cannot be trusted. Try all_fit=TRUE!"), call. = FALSE), silent=TRUE) get_mixed_warnings(object) anova_table <- object$anova_table } attr(anova_table, "sig_symbols") <- if (!is.null(sig_symbols)) sig_symbols else afex_options("sig_symbols") anova_table } ## support for emmeans for mixed objects: ## @importFrom emmeans recover_data emm_basis ## @method recover_data mixed ## @export recover_data.mixed <- function(object, ...) { full_model_name <- names(object)[[2]] if (inherits(object[[full_model_name]], "merMod") | is_lmerTest_class(object[[full_model_name]])) { obj_use <- object[[full_model_name]] } else if (inherits(object[[full_model_name]][[1]], "merMod") | is_lmerTest_class(object[[full_model_name]][[1]])) { message("emmeans are based on full model which includes all effects.") obj_use <- object[[full_model_name]][[length(object[[full_model_name]])]] } else { stop("Cannot find 'merMod' object in ", full_model_name, " slot.") } # if (is_lmerTest_class(obj_use)) { # class(obj_use) <- "lmerMod" # } emmeans::recover_data(obj_use, ...) } ## @method lsm_basis mixed ## @export emm_basis.mixed <- function(object, trms, xlev, grid, ...) { full_model_name <- names(object)[[2]] if (inherits(object[[full_model_name]], "merMod") | is_lmerTest_class(object[[full_model_name]])) { obj_use <- object[[full_model_name]] } else if (inherits(object[[full_model_name]][[1]], "merMod") | is_lmerTest_class(object[[full_model_name]][[1]])) { obj_use <- object[[full_model_name]][[length(object[[full_model_name]])]] } else { stop("Cannot find 'merMod' object in ", full_model_name, " slot.") } # if (is_lmerTest_class(obj_use)) { # class(obj_use) <- "lmerMod" # } emmeans::emm_basis(obj_use, trms, xlev, grid, ...) } afex/R/sk2011.1-data.R0000644000176200001440000000572013664111747013526 0ustar liggesusers#' Data from Singmann & Klauer (2011, Experiment 1) #' #' Singmann and Klauer (2011) were interested in whether or not conditional reasoning can be explained by a single process or whether multiple processes are necessary to explain it. To provide evidence for multiple processes we aimed to establish a double dissociation of two variables: instruction type and problem type. Instruction type was manipulated between-subjects, one group of participants received deductive instructions (i.e., to treat the premises as given and only draw necessary conclusions) and a second group of participants received probabilistic instructions (i.e., to reason as in an everyday situation; we called this "inductive instruction" in the manuscript). Problem type consisted of two different orthogonally crossed variables that were manipulated within-subjects, validity of the problem (formally valid or formally invalid) and plausibility of the problem (inferences which were consisted with the background knowledge versus problems that were inconsistent with the background knowledge). The critical comparison across the two conditions was among problems which were valid and implausible with problems that were invalid and plausible. For example, the next problem was invalid and plausible: #' #' If a person is wet, then the person fell into a swimming pool. \cr #' A person fell into a swimming pool. \cr #' How valid is the conclusion/How likely is it that the person is wet? #' #' For those problems we predicted that under deductive instructions responses should be lower (as the conclusion does not necessarily follow from the premises) as under probabilistic instructions. For the valid but implausible problem, an example is presented next, we predicted the opposite pattern: #' #' If a person is wet, then the person fell into a swimming pool. \cr #' A person is wet. \cr #' How valid is the conclusion/How likely is it that the person fell into a swimming pool? #' #' Our study also included valid and plausible and invalid and implausible problems. #' #' Note that the factor `plausibility` is not present in the original manuscript, there it is a results of a combination of other factors. #' #' #' @docType data #' @keywords dataset #' @name sk2011.1 #' @usage sk2011.1 #' @format A data.frame with 640 rows and 9 variables. #' @source Singmann, H., & Klauer, K. C. (2011). Deductive and inductive conditional inferences: Two modes of reasoning. Thinking & Reasoning, 17(3), 247-281. doi:10.1080/13546783.2011.572718 #' #' @encoding UTF-8 #' #' @examples #' data(sk2011.1) #' #' # Table 1 (p. 264): #' aov_ez("id", "response", sk2011.1[ sk2011.1$what == "affirmation",], #' within = c("inference", "type"), between = "instruction", #' anova_table=(es = "pes")) #' aov_ez("id", "response", sk2011.1[ sk2011.1$what == "denial",], #' within = c("inference", "type"), between = "instruction", #' anova_table=(es = "pes")) #' #' NULL afex/R/utils.R0000644000176200001440000001044114220035076012660 0ustar liggesusers check_contrasts <- function(data, factors, check_contrasts, type, warn = TRUE) { if (check_contrasts) { data <- droplevels(data) resetted <- NULL for (i in factors) { if (is.character(data[,i])) { data[,i] <- factor(data[,i]) } if (is.factor(data[,i])) { if (is.null(attr(data[,i], "contrasts")) & (options("contrasts")[[1]][1] != "contr.sum")) { contrasts(data[,i]) <- "contr.sum" resetted <- c(resetted, i) } else if (!is.null(attr(data[,i], "contrasts")) && attr(data[,i], "contrasts") != "contr.sum") { contrasts(data[,i]) <- "contr.sum" resetted <- c(resetted, i) } } } if (!is.null(resetted)) message(paste0("Contrasts set to contr.sum for the following variables: ", paste0(resetted, collapse=", "))) } else if (warn) { non_sum_contrast <- c() for (i in factors) { if (is.factor(data[,i])) { if (is.null(attr(data[,i], "contrasts")) & (options("contrasts")[[1]][1] != "contr.sum")) { non_sum_contrast <- c(non_sum_contrast, i) } else if (!is.null(attr(data[,i], "contrasts")) && attr(data[,i], "contrasts") != "contr.sum") { non_sum_contrast <- c(non_sum_contrast, i) } } } if((type == 3 | type == "III") && (length(non_sum_contrast)>0)) warning( paste0("Calculating Type 3 sums with contrasts != 'contr.sum' for: ", paste0(non_sum_contrast, collapse=", "), "\n Results likely bogus or not interpretable!\n", "You probably want check_contrasts = TRUE or ", "options(contrasts=c('contr.sum','contr.poly'))"), call. = FALSE) } return(data) } ## paste function that can replace stringr::str_c and differs from the way # paste handles NULL arguments as last arguments. # It checks whether the first or last char of the string is equal to sep and # removes it in this case. mypaste <- function(..., sep) { tmp <- paste(..., sep = sep) if (substr(tmp, nchar(tmp), nchar(tmp)) == sep) { tmp <- substr(tmp, 1, nchar(tmp)-1) } if (substr(tmp, 1, 1) == sep) { tmp <- substr(tmp, 2, nchar(tmp)) } tmp } escape_vars <- function(names) { if (length(names) == 0) return(names) names <- vapply(names, function(name) { if (make.names(name) != name) { name <- gsub('\\', '\\\\', name, fixed=TRUE) name <- gsub('`', '\\`', name, fixed=TRUE) name <- paste0('`', name, '`') } name }, FUN.VALUE='', USE.NAMES=FALSE) names } # decompose functions from jmvcore decomposeTerm <- function(term) { chars <- strsplit(term, '')[[1]] components <- character() componentChars <- character() inQuote <- FALSE i <- 1 n <- length(chars) while (i <= n) { char <- chars[i] if (char == '`') { inQuote <- ! inQuote } else if (char == '\\') { i <- i + 1 char <- chars[i] componentChars <- c(componentChars, char) } else if (char == ':' && inQuote == FALSE) { component <- paste0(componentChars, collapse='') components <- c(components, component) componentChars <- character() } else { componentChars <- c(componentChars, char) } i <- i + 1 } component <- paste0(componentChars, collapse='') components <- c(components, component) components } print_legend <- function(x) { sig_symbols <- as.character(attr(x, "sig_symbols")) if(length(sig_symbols) > 0 & !all(sig_symbols == rep("", 4))) { sleg <- attr(stats::symnum(0, cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = rev(c(" " , trimws(sig_symbols)))), "legend") width <- getOption("width") if(width < nchar(sleg)) { sleg <- strwrap(sleg, width = width - 2, prefix = " ") } cat("---\nSignif. codes: ", sleg, sep = "", fill = getOption("width") + 4 + max(nchar(sleg, "bytes") - nchar(sleg))) } } afex/R/fhch2010-data.R0000644000176200001440000000566213664111747013666 0ustar liggesusers#' Data from Freeman, Heathcote, Chalmers, & Hockley (2010) #' #' Lexical decision and word naming latencies for 300 words and 300 nonwords presented in Freeman, Heathcote, Chalmers, and Hockley (2010). The study had one between-subjects factors, \code{"task"} with two levels (\code{"naming"} or \code{"lexdec"}), and four within-subjects factors: \code{"stimulus"} type with two levels (\code{"word"} or \code{"nonword"}), word \code{"density"} and word \code{"frequency"} each with two levels (\code{"low"} and \code{"high"}) and stimulus \code{"length"} with three levels (4, 5, and 6). #' #' In the lexical-decision condition (N = 25), subjects indicated whether each item was a word or a nonword, by pressing either the left (labeled word) or right (labeled nonword) outermost button on a 6-button response pad. The next study item appeared immediately after the lexical decision response was given. In the naming condition (N = 20), subjects were asked to name each item aloud, and items remained on screen for 3 s. Naming time was recorded by a voice key. #' #' Items consisted of 300 words, 75 in each set making up a factorial combination of high and low density and frequency, and 300 nonwords, with equal numbers of 4, 5, and 6 letter items in each set. #' #' #' @docType data #' @keywords dataset #' @name fhch2010 #' @usage fhch2010 #' @format A \code{data.frame} with 13,222 obs. of 9 variables: #' \describe{ #' \item{id}{participant id, \code{factor}} #' \item{task}{\code{factor} with two levels indicating which task was performed: \code{"naming"} or \code{"lexdec"}} #' \item{stimulus}{\code{factor} indicating whether the shown stimulus was a \code{"word"} or \code{"nonword"}} #' \item{density}{\code{factor} indicating the neighborhood density of presented items with two levels: \code{"low"} and \code{"high"}. Density is defined as the number of words that differ from a base word by one letter or phoneme.} #' \item{frequency}{\code{factor} indicating the word frequency of presented items with two levels: \code{"low"} (i.e., words that occur less often in natural language) and \code{"high"} (i.e., words that occur more often in natural language).} #' \item{length}{\code{factor} with 3 levels (4, 5, or 6) indicating the number of characters of presented stimuli.} #' \item{item}{\code{factor} with 600 levels: 300 words and 300 nonwords} #' \item{rt}{response time in seconds} #' \item{log_rt}{natural logarithm of response time in seconds} #' \item{correct}{boolean indicating whether or not the response in the lexical decision task was correct or incorrect (incorrect responses of the naming task are not part of the data).} #' } #' @source Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. Journal of Memory and Language, 62(1), 1-18. http://doi.org/10.1016/j.jml.2009.09.004 #' #' @encoding UTF-8 #' #' @example examples/examples.fhch2010.R NULL afex/R/afex_plot_utils.R0000644000176200001440000002774414604543012014737 0ustar liggesusers afex_plot_internal <- function(x, trace, panel, means, data, error_plot, error_arg, dodge, data_plot, data_geom, data_alpha, data_color, data_arg, point_arg, line_arg, mapping, legend_title, plot_first, return) { if (length(trace) > 0) { means$trace <- interaction(means[trace], sep = "\n") data$trace <- interaction(data[trace], sep = "\n") if (return == "data") { return(list(means = means, data = data)) } else if (return == "plot") { return(interaction_plot(means = means, data = data, error_plot = error_plot, error_arg = error_arg, dodge = dodge, data_plot = data_plot, data_geom = data_geom, data_alpha = data_alpha, data_arg = data_arg, data_color = data_color, point_arg = point_arg, line_arg = line_arg, mapping = mapping, plot_first = plot_first, legend_title = if (missing(legend_title)) paste(trace, sep = "\n") else legend_title )) } } else { if (return == "data") { return(list(means = means, data = data)) } else if (return == "plot") { return(oneway_plot(means = means, data = data, error_plot = error_plot, error_arg = error_arg, data_plot = data_plot, data_geom = data_geom, data_alpha = data_alpha, data_color = data_color, data_arg = data_arg, point_arg = point_arg, mapping = mapping, plot_first = plot_first, legend_title = if (missing(legend_title)) paste(x, sep = "\n") else legend_title )) } } } se <- function(x, na.rm = FALSE) sd(x, na.rm = na.rm)/sqrt(length(x)) rename_factor_levels <- function(data, factor_levels, status_message = TRUE) { if (length(factor_levels) > 0) { if (is.null(names(factor_levels))) { stop("factor_levels needs to be a named list.", call. = FALSE) } if (any(!(names(factor_levels) %in% colnames(data)))) { if (status_message) { warning( "factor_levels: No factor named ", paste( paste0("'", names(factor_levels) [!(names(factor_levels) %in% colnames(data))], "'"), collapse = ", "), " in data.", call. = FALSE ) } factor_levels <- factor_levels[names(factor_levels) %in% colnames(data)] } for (i in seq_along(factor_levels)) { if (is.null(names(factor_levels[[i]]))) { if (length(factor_levels[[i]]) != length(levels(data[[names(factor_levels)[i]]]))) { stop("length of new factor_levels for '", names(factor_levels)[i], "' != length of factor levels.", call. = FALSE) } names(factor_levels[[i]]) <- levels(data[[names(factor_levels)[i]]]) } if (!is.factor(data[[names(factor_levels)[i]]])) { data[[names(factor_levels)[i]]] <- factor(data[[names(factor_levels)[i]]]) } factor_levels[[i]] <- factor_levels[[i]][ names(factor_levels[[i]]) %in% levels(data[[names(factor_levels)[i]]]) ] if (status_message) { message("Renaming/reordering factor levels of '", names(factor_levels)[i], "':\n ", paste( paste( levels(data[[names(factor_levels)[i]]])[ match(names(factor_levels[[i]]), levels(data[[names(factor_levels)[i]]])) ], factor_levels[[i]], sep = " -> "), collapse = "\n ") ) } if (length(factor_levels[[i]]) == length(levels(data[[names(factor_levels)[i]]]))) { data[[names(factor_levels)[i]]] <- factor( x = data[[names(factor_levels)[i]]], levels = names(factor_levels[[i]]), labels = factor_levels[[i]] ) } else { levels(data[[names(factor_levels)[i]]])[ match(names(factor_levels[[i]]), levels(data[[names(factor_levels)[i]]])) ] <- factor_levels[[i]] } } } data } get_emms <- function(object, x, trace, panel, emmeans_arg, factor_levels, level) { if (!requireNamespace("emmeans", quietly = TRUE)) { stop("package emmeans is required.", call. = FALSE) } all_vars <- c(x, trace, panel) emmeans_arg$options$level <- level emms <- as.data.frame(do.call(emmeans::emmeans, args = c(object = list(object), specs = list(all_vars), type = list("response"), emmeans_arg))) emms <- rename_factor_levels( data = emms, factor_levels = factor_levels, status_message = TRUE ) emms$x <- interaction(emms[x], sep = "\n") #col_y <- colnames(emms)[which(colnames(emms) == "SE")-1] if (any(colnames(emms) == "SE")) { colnames(emms)[which(colnames(emms) == "SE")-1] <- "y" } else { colnames(emms)[grep("CL|HPD", colnames(emms))[1]-1] <- "y" } attr(emms, "dv") <- attr(object, "dv") attr(emms, "x") <- paste(x, collapse = " - ") if (length(panel) > 0) { emms$panel <- interaction(emms[panel], sep = "\n") } else { emms$panel <- "1" } emms$all_vars <- interaction(emms[all_vars], sep = ".") return(emms) } prep_data <- function(data, x, trace, panel, factor_levels, dv_col, id) { all_vars <- c(x, trace, panel) data <- rename_factor_levels( data = data, factor_levels = factor_levels, status_message = FALSE ) ## we have to make sure that if data already contains a column y, the correct ## one is used for aggregation here. ## the old code below led to problems in this case # colnames(data)[colnames(data) == dv_col] <- "y" # if (!is.numeric(data$y)) { # message("transforming dv to numerical scale") # data$y <- as.numeric(data$y) # } # data <- aggregate(data$y, by = data[c(all_vars,id)], # FUN = mean, drop = TRUE) #colnames(data)[colnames(data) == dv_col] <- "y" if (!is.numeric(data[[dv_col]])) { message("transforming dv to numerical scale") if (is.factor(data[[dv_col]])) { data[[dv_col]] <- as.numeric(data[[dv_col]]) - 1 } data[[dv_col]] <- as.numeric(data[[dv_col]]) } data <- aggregate(data[[dv_col]], by = data[c(all_vars,id)], FUN = mean, drop = TRUE) data$y <- data$x data$x <- interaction(data[x], sep = "\n") if (length(panel) > 0) { data$panel <- interaction(data[panel], sep = "\n") } else { data$panel <- "1" } data$all_vars <- interaction(data[all_vars], sep = ".") return(data) } get_plot_var <- function(x) { if (missing(x)) return() if (inherits(x, "formula")) { return(all.vars(x[[2]])) } else { return(x) } } get_data_based_cis <- function(emms, data, error, id, ## colname holding the id/grouping variable all_vars, within_vars, between_vars, error_level, error_ci) { error_plot <- TRUE ## SE/CI calculation: if (error == "model") { emms$error <- emms$SE # emms$lower <- emms$lower.CL # emms$upper <- emms$upper.CL col_cis <- grep("CL|HPD", colnames(emms), value = TRUE) col_cis <- col_cis[!(col_cis %in% all_vars)] emms$lower <- emms[,col_cis[1]] emms$upper <- emms[,col_cis[2]] } else if (error == "mean") { ses <- tapply(data$y, INDEX = list(data$all_vars), FUN = se) sizes <- tapply(data$y, INDEX = list(data$all_vars), FUN = length) stopifnot(emms$all_vars %in% names(ses)) emms$error <- ses[emms$all_vars] emms$lower <- emms$y - qt(1-(1-error_level)/2, sizes - 1) * emms$error emms$upper <- emms$y + qt(1-(1-error_level)/2, sizes - 1) * emms$error } else if (error %in% c("CMO", "within")) { if (length(within_vars) == 0) { stop("within-subject SE only possible if within-subject factors present.", call. = FALSE) } within_fac <- interaction(data[within_vars], sep = ".") indiv_means <- tapply(data$y, INDEX = data[id], FUN = mean) J <- length(levels(within_fac)) ## Cosineau & O'Brien (2014), Equation 2: new_y <- data$y - indiv_means[as.character(data[,id])] + mean(data$y) ## Cosineau & O'Brien (2014), Equation 4: y_bar <- tapply(new_y, INDEX = within_fac, FUN = mean) new_z <- sqrt(J / (J-1)) * (new_y - y_bar[within_fac]) + y_bar[within_fac] ses <- tapply(new_z, INDEX = list(data$all_vars), FUN = se) sizes <- tapply(new_z, INDEX = list(data$all_vars), FUN = length) stopifnot(emms$all_vars %in% names(ses)) emms$error <- ses[emms$all_vars] emms$lower <- emms$y - qt(1-(1-error_level)/2, sizes - 1) * emms$error emms$upper <- emms$y + qt(1-(1-error_level)/2, sizes - 1) * emms$error } else if (error == "between") { if (length(between_vars) > 0) { between_fac <- interaction(data[between_vars], sep = ".") } else { between_fac <- factor(rep("1", nrow(data))) } indiv_means <- aggregate(data$y, by = list( data[,id], between_fac), FUN = mean) ses <- tapply(indiv_means$x, INDEX = indiv_means[["Group.2"]], FUN = se) sizes <- tapply(indiv_means$x, INDEX = indiv_means[["Group.2"]], FUN = length) if (length(between_vars) == 0) { emms$error <- ses emms$lower <- emms$y - qt(1-(1-error_level)/2, sizes - 1) * emms$error emms$upper <- emms$y + qt(1-(1-error_level)/2, sizes - 1) * emms$error } else { emm_between <- interaction(emms[between_vars], sep = ".") emms$error <- ses[emm_between] emms$lower <- emms$y - qt(1-(1-error_level)/2, sizes[emm_between] - 1) * emms$error emms$upper <- emms$y + qt(1-(1-error_level)/2, sizes[emm_between] - 1) * emms$error } } else if (error == "none") { emms$error <- NA_real_ emms$lower <- NA_real_ emms$upper <- NA_real_ error_plot <- FALSE } if (!error_ci) { emms$lower <- emms$y - emms$error emms$upper <- emms$y + emms$error } return(list(emms = emms, error_plot = error_plot)) }afex/R/afex_plot.R0000644000176200001440000011525514604546431013522 0ustar liggesusers#' m-way Plot with Error Bars and Raw Data #' #' @description Plots results from factorial experiments. Estimated marginal #' means and error bars are plotted in the foreground, raw data is plotted in #' the background. Error bars can be based on different standard errors (e.g., #' model-based, within-subjects, between-subjects). Functions described here #' return a \pkg{ggplot2} plot object, thus allowing further customization of #' the plot. #' #' \code{afex_plot} is the user friendly function that does data preparation #' and plotting. It also allows to only return the prepared data (\code{return #' = "data"}). #' #' \code{interaction_plot} does the plotting when a \code{trace} factor is #' present. \code{oneway_plot} does the plotting when a \code{trace} factor is #' absent. #' #' @param object \code{afex_aov}, \code{mixed}, \code{merMod} or other model #' object supported by \pkg{emmeans} (for further examples see: #' \code{vignette("afex_plot_supported_models")}). #' @param x A \code{character} vector or one-sided \code{formula} specifying the #' factor names of the predictors displayed on the x-axis. \code{mapping} #' specifies further mappings for these factors if \code{trace} is missing. #' @param trace An optional \code{character} vector or one-sided \code{formula} #' specifying the factor names of the predictors connected by the same line. #' \code{mapping} specifies further mappings for these factors. #' @param panel An optional \code{character} vector or one-sided \code{formula} #' specifying the factor names of the predictors shown in different panels. #' @param mapping A \code{character} vector specifying which aesthetic mappings #' should be applied to either the \code{trace} factors (if \code{trace} is #' specified) or the \code{x} factors. Useful options are any combination of #' \code{"shape"}, \code{"color"}, \code{"linetype"}, or also \code{"fill"} #' (see examples). The default (i.e., missing) uses \code{c("shape", #' "linetype")} if \code{trace} is specified and \code{""} otherwise (i.e., no #' additional aesthetic). If specific mappings should not be applied to #' specific graphical elements, one can override those via the corresponding #' further arguments. For example, for \code{data_arg} the default is #' \code{list(color = "darkgrey")} which prevents that \code{"color"} is #' mapped onto points in the background. #' @param error A scalar \code{character} vector specifying on which standard #' error the error bars should be based. Default is \code{"model"}, which #' plots model-based standard errors. Further options are: \code{"none"} (or #' \code{NULL}), \code{"mean"}, \code{"within"} (or \code{"CMO"}), and #' \code{"between"}. See details. #' @param id An optional \code{character} vector specifying over which variables #' the raw data should be aggregated. Only relevant for \code{mixed}, #' \code{merMod}, and \code{default} method. The default (missing) uses all #' random effects grouping factors (for \code{mixed} and \code{merMod} method) #' or assumes all data points are independent. This can lead to many data #' points. \code{error = "within"} or \code{error = "between"} require that #' \code{id} is of length 1. See examples. #' @param dv An optional scalar \code{character} vector giving the name of the #' column containing the dependent variable for the \code{afex_plot.default} #' method. If missing, the function attempts to take it from the \code{call} #' slot of \code{object}. This is also used as y-axis label. #' @param error_ci Logical. Should error bars plot confidence intervals #' (=\code{TRUE}, the default) or standard errors (=\code{FALSE})? #' @param error_level Numeric value between 0 and 1 determing the width of the #' confidence interval. Default is .95 corresponding to a 95\% confidence #' interval. #' @param error_arg A \code{list} of further arguments passed to #' \code{\link[ggplot2]{geom_errorbar}}, which draws the errorsbars. Default #' is \code{list(width = 0)} which suppresses the vertical bars at the end of #' the error bar. #' @param data_plot \code{logical}. Should raw data be plotted in the #' background? Default is \code{TRUE}. #' @param data_geom Geom \code{function} or \code{list} of geom functions used #' for plotting data in background. The default (missing) uses #' \code{\link[ggplot2]{geom_point}} if \code{trace} is specified, otherwise #' \code{\link[ggbeeswarm]{geom_beeswarm}} (a good alternative in case of many #' data points is \code{ggbeeswarm::geom_quasirandom}) . See examples fo #' further options. #' @param data_alpha numeric \code{alpha} value between 0 and 1 passed to #' \code{data_geom}. Default is \code{0.5} which correspond to semitransparent #' data points in the background such that overlapping data points are plotted #' darker. If \code{NULL} it is not passed to \code{data_geom}, and can be set #' via \code{data_arg}. #' @param data_color color that should be used for the data in the background. #' Default is \code{"darkgrey"}. If \code{NULL} it is not passed to #' \code{data_geom}, and can be set via \code{data_arg}. Ignored if #' \code{"color"} or \code{"colour"} in \code{mapping}. #' @param data_arg A \code{list} of further arguments passed to #' \code{data_geom}. Can also be a \code{list} of \code{list}s, in case #' \code{data_geom} is a \code{list} of multiple geoms, which allows having #' separate argument lists per \code{data_geom}. #' @param point_arg,line_arg A \code{list} of further arguments passed to #' \code{\link[ggplot2]{geom_point}} or \code{\link[ggplot2]{geom_line}} which #' draw the points and lines in the foreground. Default is \code{list()}. #' \code{line_arg} is only used if \code{trace} is specified. #' @param emmeans_arg A \code{list} of further arguments passed to #' \code{\link[emmeans]{emmeans}}. Of particular importance for ANOVAs is #' \code{model}, see \code{\link{afex_aov-methods}}. #' @param dodge Numerical amount of dodging of factor-levels on x-axis. Default #' is \code{0.5}. #' @param return A scalar \code{character} specifying what should be returned. #' The default \code{"plot"} returns the \pkg{ggplot2} plot. The other option #' \code{"data"} returns a list with two \code{data.frame}s containing the #' data used for plotting: \code{means} contains the means and standard errors #' for the foreground, \code{data} contains the raw data in the background. #' @param factor_levels A \code{list} of new factor levels that should be used #' in the plot. The name of each list entry needs to correspond to one of the #' factors in the plot. Each list element can optionally be a named character #' vector where the name corresponds to the old factor level and the value to #' the new factor level. Named vectors allow two things: (1) updating only a #' subset of factor levels (if only a subset of levels is specified) and (2) #' reordering (and renaming) the factor levels, as order of names within a #' list element are the order that will be used for plotting. If specified, #' emits a \code{message} with \code{old -> new} factor levels. #' @param legend_title A scalar \code{character} vector with a new title for the #' legend. #' @param plot_first A \code{ggplot2} geom (or a list of geoms) that will be #' added to the returned plot as a first element (i.e., before any of the #' other graphical elements). Useful for adding reference lines or similar #' (e.g., using \code{\link[ggplot2]{geom_hline}}). #' @param data For the \code{afex_plot.default} method, an optional #' \code{data.frame} containing the raw data used for fitting the model and #' which will be used as basis for the data points in the background. If #' missing, it will be attempted to obtain it from the model via #' \code{\link[emmeans]{recover_data}}. For the plotting functions, a #' \code{data.frame} with the data that has to be passed and contains the #' background data points. #' @param within_vars,between_vars For the \code{afex_plot.default} method, an #' optional \code{character} vector specifying which variables should be #' treated as within-subjects (or repeated-measures) factors and which as #' between-subjects (or independent-samples) factors. If one of the two #' arguments is given, all other factors are assumed to fall into the other #' category. #' @param means \code{data.frame}s used for plotting of the plotting #' functions. #' @param col_y,col_x,col_trace,col_panel A scalar \code{character} string #' specifying the name of the corresponding column containing the information #' used for plotting. Each column needs to exist in both the \code{means} and #' the \code{data} \code{data.frame}. #'@param col_lower,col_upper A scalar \code{character} string specifying the #' name of the columns containing lower and upper bounds for the error bars. #' These columns need to exist in \code{means}. #' @param error_plot \code{logical}. Should error bars be plotted? Only used in #' plotting functions. To suppress plotting of error bars use \code{error = #' "none"} in \code{afex_plot}. #' @param ... currently ignored. #' #' @details \code{afex_plot} obtains the estimated marginal means via #' \code{\link[emmeans]{emmeans}} and aggregates the raw data to the same #' level. It then calculates the desired confidence interval or standard error #' (see below) and passes the prepared data to one of the two plotting #' functions: \code{interaction_plot} when \code{trace} is specified and #' \code{oneway_plot} otherwise. #' #' \subsection{Error Bars}{Error bars provide a grahical representation of the #' variability of the estimated means and should be routinely added to results #' figures. However, there exist several possibilities which particular #' measure of variability to use. Because of this, any figure depicting error #' bars should be accompanied by a note detailing which measure the error bars #' shows. The present functions allow plotting of different types of #' confidence intervals (if \code{error_ci = TRUE}, the default) or standard #' errors (if \code{error_ci = FALSE}). #' #' A further complication is that readers routinely misinterpret confidence #' intervals. The most common error is to assume that non-overlapping error #' bars indicate a significant difference (e.g., Belia et al., 2005). This is #' often too strong an assumption. (see e.g., Cumming & Finch, 2005; Knol et #' al., 2011; Schenker & Gentleman, 2005). For example, in a fully #' between-subjects design in which the error bars depict 95\% confidence #' intervals and groups are of approximately equal size and have equal #' variance, even error bars that overlap by as much as 50\% still correspond #' to \emph{p} < .05. Error bars that are just touching roughly correspond to #' \emph{p} = .01. #' #' In the case of designs involving repeated-measures factors the usual #' confidence intervals or standard errors (i.e., model-based confidence #' intervals or intervals based on the standard error of the mean) cannot be #' used to gauge significant differences as this requires knowledge about the #' correlation between measures. One popular alternative in the psychological #' literature are intervals based on within-subjects standard #' errors/confidence intervals (e.g., Cousineau & O'Brien, 2014). These #' attempt to control for the correlation across individuals and thereby allow #' judging differences between repeated-measures condition. As a downside, #' when using within-subjects intervals no comparisons across between-subjects #' conditions or with respect to a fixed-value are possible anymore. #' #' In the case of a mixed-design, no single type of error bar is possible that #' allows comparison across all conditions. Likewise, for mixed models #' involving multiple \emph{crossed} random effects, no single set of error #' bars (or even data aggregation) adequately represent the true varibility in #' the data and adequately allows for "inference by eye". Therefore, special #' care is necessary in such cases. One possiblity is to avoid error bars #' altogether and plot only the raw data in the background (with \code{error = #' "none"}). The raw data in the background still provides a visual impression #' of the variability in the data and the precision of the mean estimate, but #' does not as easily suggest an incorrect inferences. Another possibility is #' to use the model-based standard error and note in the figure caption that #' it does not permit comparisons across repeated-measures factors. #' #' The following "rules of eye" (Cumming and Finch, 2005) hold, when permitted #' by design (i.e., within-subjects bars for within-subjects comparisons; #' other variants for between-subjects comparisons), and groups are #' approximately equal in size and variance. Note that for more complex #' designs ususally analyzed with mixed models, such as designs involving #' complicated dependencies across data points, these rules of thumbs may be #' highly misleading. #' \itemize{ #' \item \emph{p} < .05 when the overlap of the 95\% confidence intervals #' (CIs) is no more than about half the average margin of error, that is, #' when proportion overlap is about .50 or less. #' \item \emph{p} < .01 when the two CIs do not overlap, that is, when #' proportion overlap is about 0 or there is a positive gap. #' \item \emph{p} < .05 when the gap between standard error (SE) bars is at #' least about the size of the average SE, that is, when the proportion gap #' is about 1 or greater. #' \item \emph{p} < .01 when the proportion gap between SE bars is about 2 #' or more. #' } #' } #' \subsection{Implemented Standard Errors}{The following lists the #' implemented approaches to calculate confidence intervals (CIs) and standard #' errors (SEs). CIs are based on the SEs using the \emph{t}-distribution with #' degrees of freedom based on the cell or group size. For ANOVA models, #' \code{afex_plot} attempts to warn in case the chosen approach is misleading #' given the design (e.g., model-based error bars for purely #' within-subjects plots). For \code{mixed} models, no such warnings are #' produced, but users should be aware that all options beside \code{"model"} #' are not actually appropriate and have only heuristic value. But then again, #' \code{"model"} based error bars do not permit comparisons for factors #' varying within one of the random-effects grouping factors (i.e., factors #' for which random-slopes should be estimated). #' \describe{ #' \item{\code{"model"}}{Uses model-based CIs and SEs. For ANOVAs, the #' variant based on the \code{lm} or \code{mlm} model (i.e., #' \code{emmeans_arg = list(model = "multivariate")}) seems generally #' preferrable.} #' \item{\code{"mean"}}{Calculates the standard error of the mean for #' each cell ignoring any repeated-measures factors.} #' \item{\code{"within"} or \code{"CMO"}}{Calculates within-subjects SEs #' using the Cosineau-Morey-O'Brien (Cousineau & O'Brien, 2014) method. This #' method is based on a double normalization of the data. SEs and CIs are #' then calculated independently for each cell (i.e., if the desired output #' contains between-subjects factors, SEs are calculated for each cell #' including the between-subjects factors).} #' \item{\code{"between"}}{First aggregates the data per participant and #' then calculates the SEs for each between-subjects condition. Results in #' one SE and \emph{t}-quantile for all conditions in purely within-subjects #' designs.} #' \item{\code{"none"} or \code{NULL}}{Suppresses calculation of SEs and #' plots no error bars.} #' } #' For \code{mixed} models, the within-subjects/repeated-measures factors are #' relative to the chosen \code{id} effects grouping factor. They are #' automatically detected based on the random-slopes of the random-effects #' grouping factor in \code{id}. All other factors are treated as #' independent-samples or between-subjects factors. #' } #' #' @return Returns a \pkg{ggplot2} plot (i.e., object of class \code{c("gg", #' "ggplot")}) unless \code{return = "data"}. #' #' @references Belia, S., Fidler, F., Williams, J., & Cumming, G. (2005). #' Researchers Misunderstand Confidence Intervals and Standard Error Bars. #' \emph{Psychological Methods}, 10(4), 389-396. #' https://doi.org/10.1037/1082-989X.10.4.389 #' #' Cousineau, D., & O'Brien, F. (2014). Error bars in within-subject designs: #' a comment on Baguley (2012). \emph{Behavior Research Methods}, 46(4), #' 1149-1151. https://doi.org/10.3758/s13428-013-0441-z #' #' Cumming, G., & Finch, S. (2005). Inference by Eye: Confidence Intervals and #' How to Read Pictures of Data. \emph{American Psychologist}, 60(2), 170-180. #' https://doi.org/10.1037/0003-066X.60.2.170 #' #' Knol, M. J., Pestman, W. R., & Grobbee, D. E. (2011). The (mis)use of #' overlap of confidence intervals to assess effect modification. #' \emph{European Journal of Epidemiology}, 26(4), 253-254. #' https://doi.org/10.1007/s10654-011-9563-8 #' #' Schenker, N., & Gentleman, J. F. (2001). On Judging the Significance of #' Differences by Examining the Overlap Between Confidence Intervals. #' \emph{The American Statistician}, 55(3), 182-186. #' https://doi.org/10.1198/000313001317097960 #' #' @note Only the DV/response variable can be called \code{y}, but no #' factor/variable used for plotting. #' #' #' @importFrom stats aggregate sd qt formula #' #' @example examples/examples.afex_plot.R #' #' @export afex_plot <- function(object, ...) UseMethod("afex_plot", object) # @method afex_plot afex_aov #' @rdname afex_plot #' @export afex_plot.afex_aov <- function(object, x, trace, panel, mapping, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ...) { return <- match.arg(return, c("plot", "data")) error <- match.arg(error, c("none", "model", "mean", "within", "CMO", "between")) dots <- list(...) if (length(dots) > 0) { warning("Additional arguments ignored: ", paste(names(dots), collapse = ", "), call. = FALSE) } x <- get_plot_var(x) trace <- get_plot_var(trace) panel <- get_plot_var(panel) all_vars <- c(x, trace, panel) if ("y" %in% all_vars) { stop("Variable 'y' cannot be used for plotting. Rename variable and refit.", call. = FALSE) } emms <- get_emms(object = object, x = x, trace = trace, panel = panel, emmeans_arg = emmeans_arg, factor_levels = factor_levels, level = error_level) ## prepare raw (i.e., participant by cell) data data <- prep_data(object$data$long, x = x, trace = trace, panel = panel, factor_levels = factor_levels, dv_col = attr(object, "dv"), id = attr(object, "id")) ### prepare variables for SE/CI calculation within_vars <- all_vars[all_vars %in% names(attr(object, "within"))] between_vars <- all_vars[all_vars %in% names(attr(object, "between"))] ### check if error bars are consistent with panel(s) and warn otherwise if (error %in% c("model", "mean", "between") && all(c(x, trace) %in% within_vars)) { warning("Panel(s) show within-subjects factors, ", "but not within-subjects error bars.\n", 'For within-subjects error bars use: error = "within"', call. = FALSE) } else if (error %in% c("within", "CMO") && all(c(x, trace) %in% between_vars)) { warning("Panel(s) show between-subjects factors, ", "but within-subjects error bars.\n", 'For between-subjects error bars use e.g.,: ', 'error = "model" or error = "mean"', call. = FALSE) } else if (any(between_vars %in% c(x, trace)) && any(within_vars %in% c(x, trace)) && error != "none") { warning("Panel(s) show a mixed within-between-design.\n", "Error bars do not allow comparisons across all means.\n", 'Suppress error bars with: error = "none"', call. = FALSE) } tmp <- get_data_based_cis(emms = emms, data = data, error = error, id = attr(object, "id"), ## colname holding the id/grouping variable all_vars = all_vars, within_vars = within_vars, between_vars = between_vars, error_level = error_level, error_ci = error_ci) emms <- tmp$emms error_plot <- tmp$error_plot return(afex_plot_internal(x = x, trace = trace, panel = panel, means = emms, data = data, error_plot = error_plot, error_arg = error_arg, dodge = dodge, data_plot = data_plot, data_geom = data_geom, data_alpha = data_alpha, data_color = data_color, data_arg = data_arg, point_arg = point_arg, line_arg = line_arg, mapping = mapping, legend_title = legend_title, plot_first = plot_first, return = return )) } # @method afex_plot afex_aov #' @rdname afex_plot #' @export afex_plot.mixed <- function(object, x, trace, panel, mapping, id, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ...) { return <- match.arg(return, c("plot", "data")) error <- match.arg(error, c("none", "model", "mean", "within", "CMO", "between")) dots <- list(...) if (length(dots) > 0) { warning("Additional arguments ignored: ", paste(names(dots), collapse = ", "), call. = FALSE) } if (attr(object, "type") %in% c("II", 2) & attr(object, "method") %in% c("LRT", "nested-KR", "PB") ) { full_model <- object$full_model[[1]] } else ( full_model <- object$full_model ) x <- get_plot_var(x) trace <- get_plot_var(trace) panel <- get_plot_var(panel) all_vars <- c(x, trace, panel) if ("y" %in% all_vars) { stop("Variable 'y' cannot be used for plotting. Rename variable and refit.", call. = FALSE) } if (missing(id)) { id <- unique(names(lme4::ranef(full_model))) message("Aggregating data over: ", paste(id, collapse = ", ")) } ## prepare raw (i.e., participant by cell) data data <- prep_data(object$data, x = x, trace = trace, panel = panel, factor_levels = factor_levels, dv_col = deparse(full_model@call[["formula"]][[2]]), id = id) data$afex_id <- interaction(data[id], sep = ".") if (!(error %in% c("none" ,"model", "mean")) & (length(id) > 1)) { stop("When aggregating over multiple random effects,\n", ' error has to be in: c("model", "mean", "none")', call. = FALSE) } emms <- get_emms(object = object, x = x, trace = trace, panel = panel, emmeans_arg = emmeans_arg, factor_levels = factor_levels, level = error_level) attr(emms, "dv") <- deparse(full_model@call[["formula"]][[2]]) if (length(id) == 1) { all_within <- lapply(lme4::findbars(object$call), all.vars) all_within <- unique(unlist( all_within[vapply(all_within, function(x) id %in% x, NA)] )) all_within <- all_within[all_within != id] within_vars <- all_vars[all_vars %in% all_within] between_vars <- all_vars[!(all_vars %in% within_vars)] } ### prepare variables for SE/CI calculation tmp <- get_data_based_cis(emms = emms, data = data, error = error, id = "afex_id", ## colname holding the id/grouping variable all_vars = all_vars, within_vars = within_vars, between_vars = between_vars, error_level = error_level, error_ci = error_ci) emms <- tmp$emms error_plot <- tmp$error_plot return(afex_plot_internal(x = x, trace = trace, panel = panel, means = emms, data = data, error_plot = error_plot, error_arg = error_arg, dodge = dodge, data_plot = data_plot, data_geom = data_geom, data_alpha = data_alpha, data_color = data_color, data_arg = data_arg, point_arg = point_arg, line_arg = line_arg, mapping = mapping, legend_title = legend_title, plot_first = plot_first, return = return )) } #' @rdname afex_plot #' @export afex_plot.merMod <- function(object, x, trace, panel, mapping, id, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ...) { return <- match.arg(return, c("plot", "data")) error <- match.arg(error, c("none", "model", "mean", "within", "CMO", "between")) dots <- list(...) if (length(dots) > 0) { warning("Additional arguments ignored: ", paste(names(dots), collapse = ", "), call. = FALSE) } x <- get_plot_var(x) trace <- get_plot_var(trace) panel <- get_plot_var(panel) all_vars <- c(x, trace, panel) if ("y" %in% all_vars) { stop("Variable 'y' cannot be used for plotting. Rename variable and refit.", call. = FALSE) } if (missing(id)) { id <- unique(names(lme4::ranef(object))) message("Aggregating data over: ", paste(id, collapse = ", ")) } ## prepare raw (i.e., participant by cell) data data <- prep_data( data = emmeans::recover_data( object = object@call, trms = terms(object, fixed.only = FALSE), na.action = attr(object@frame, ".na.action") ), x = x, trace = trace, panel = panel, factor_levels = factor_levels, dv_col = deparse(object@call[["formula"]][[2]]), id = id) data$afex_id <- interaction(data[id], sep = ".") if (!(error %in% c("none" ,"model", "mean")) & (length(id) > 1)) { stop("When aggregating over multiple random effects,\n", ' error has to be in: c("model", "mean", "none")', call. = FALSE) } emms <- get_emms(object = object, x = x, trace = trace, panel = panel, emmeans_arg = emmeans_arg, factor_levels = factor_levels, level = error_level) attr(emms, "dv") <- deparse(object@call[["formula"]][[2]]) if (length(id) == 1) { all_within <- lapply(lme4::findbars(object@call), all.vars) all_within <- unique(unlist( all_within[vapply(all_within, function(x) id %in% x, NA)] )) all_within <- all_within[all_within != id] within_vars <- all_vars[all_vars %in% all_within] between_vars <- all_vars[!(all_vars %in% within_vars)] } ### prepare variables for SE/CI calculation tmp <- get_data_based_cis(emms = emms, data = data, error = error, id = "afex_id", ## colname holding the id/grouping variable all_vars = all_vars, within_vars = within_vars, between_vars = between_vars, error_level = error_level, error_ci = error_ci) emms <- tmp$emms error_plot <- tmp$error_plot return(afex_plot_internal(x = x, trace = trace, panel = panel, means = emms, data = data, error_plot = error_plot, error_arg = error_arg, dodge = dodge, data_plot = data_plot, data_geom = data_geom, data_alpha = data_alpha, data_color = data_color, data_arg = data_arg, point_arg = point_arg, line_arg = line_arg, mapping = mapping, legend_title = legend_title, plot_first = plot_first, return = return )) } #' @rdname afex_plot #' @export afex_plot.default <- function(object, x, trace, panel, mapping, id, dv, data, within_vars, between_vars, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ...) { return <- match.arg(return, c("plot", "data")) error <- match.arg(error, c("none", "model", "mean", "within", "CMO", "between")) dots <- list(...) if (length(dots) > 0) { warning("Additional arguments ignored: ", paste(names(dots), collapse = ", "), call. = FALSE) } x <- get_plot_var(x) trace <- get_plot_var(trace) panel <- get_plot_var(panel) all_vars <- c(x, trace, panel) if ("y" %in% all_vars) { stop("Variable 'y' cannot be used for plotting. Rename variable and refit.", call. = FALSE) } if (missing(dv)) { tryCatch({ formula_name <- names(object$call)[2] }, error = function(e) stop( "Could not detect dv column. Please specify via dv argument.", call. = FALSE )) if (is.null(formula_name)) stop( "Could not detect dv column. Please specify via dv argument.", call. = FALSE ) message("dv column detected: ", deparse(object$call[[formula_name]][[2]])) dv <- deparse(object$call[[formula_name]][[2]]) } ## prepare raw (i.e., participant by cell) data if missing if (missing(data)) { try(data <- emmeans::recover_data( object = object, #trms = terms(object) trms = terms(lme4::subbars(formula(object))) ), silent = TRUE) if (!exists("data", mode = "list")) { try(data <- emmeans::recover_data( object = object, trms = terms(object) ), silent = TRUE) } if (!exists("data", mode = "list")) { try(data <- model.frame(object), silent = TRUE) } if (!exists("data", mode = "list")) { stop("data could not be recovered. Please pass data via data argument.", call. = FALSE) } } if (missing(id)) { message("No id column passed. ", "Assuming all rows are independent samples.") data$id <- factor(seq_len(nrow(data))) id <- "id" } data <- prep_data( data = data, x = x, trace = trace, panel = panel, factor_levels = factor_levels, dv_col = dv, id = id) data$afex_id <- interaction(data[id], sep = ".") if (!(error %in% c("none" ,"model", "mean")) & (length(id) > 1)) { stop("When aggregating over multiple ids,\n", ' error has to be in: c("model", "mean", "none")', call. = FALSE) } emms <- get_emms(object = object, x = x, trace = trace, panel = panel, emmeans_arg = emmeans_arg, factor_levels = factor_levels, level = error_level) attr(emms, "dv") <- dv if (missing(within_vars) & !missing(between_vars)) { within_vars <- all_vars[!(all_vars %in% within_vars)] } if (!missing(within_vars) & missing(between_vars)) { between_vars <- all_vars[!(all_vars %in% between_vars)] } ### prepare variables for SE/CI calculation tmp <- get_data_based_cis(emms = emms, data = data, error = error, id = "afex_id", ## colname holding the id/grouping variable all_vars = all_vars, within_vars = within_vars, between_vars = between_vars, error_level = error_level, error_ci = error_ci) emms <- tmp$emms error_plot <- tmp$error_plot return(afex_plot_internal(x = x, trace = trace, panel = panel, means = emms, data = data, error_plot = error_plot, error_arg = error_arg, dodge = dodge, data_plot = data_plot, data_geom = data_geom, data_alpha = data_alpha, data_color = data_color, data_arg = data_arg, point_arg = point_arg, line_arg = line_arg, mapping = mapping, legend_title = legend_title, plot_first = plot_first, return = return )) } afex/R/md_16.1-data.R0000644000176200001440000000355013664111747013512 0ustar liggesusers#' Data 16.1 / 10.9 from Maxwell & Delaney #' #' Hypothetical Reaction Time Data for 2 x 3 Perceptual Experiment: Example data for chapter 12 of Maaxwell and Delaney (2004, Table 12.1, p. 574) in long format. Has two within.subjects factors: angle and noise. #' #' Description from pp. 829: #' #' As brief background, the goal of the study here is to examine the extent to which female and male clinical psychology graduate student trainees may assign different severity ratings to clients at initial intake. Three female and 3 male graduate students are randomly selected to participate and each is randomly assigned four clients with whom to do an intake interview, after which each clinical trainee assigns a severity rating to each client, producing the data shown in Table 16.1. #' #' Note that I changed the labeling of the id slightly, so that they are now labeled from 1 to 6. Furthermore, I changed the contrasts of sex to \code{contr.treatment} to replicate the exact results of Table 16.3 (p. 837). #' #' @docType data #' @keywords dataset #' @name md_16.1 #' @usage md_16.1 #' @format A data.frame with 24 rows and 3 variables. #' @source Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 574 #' #' @examples #' ### replicate results from Table 16.3 (Maxwell & Delaney, 2004, p. 837) #' data(md_16.1) #' #' # original results need treatment contrasts: #' (mixed1_orig <- mixed(severity ~ sex + (1|id), md_16.1, check.contrasts=FALSE)) #' summary(mixed1_orig$full.model) #' #' # p-values stay the same with afex default contrasts (contr.sum), #' # but estimates and t-values for the fixed effects parameters change. #' (mixed1 <- mixed(severity ~ sex + (1|id), md_16.1)) #' summary(mixed1$full.model) #' #' @encoding UTF-8 #' NULL afex/R/afex_plot_plotting_functions.R0000644000176200001440000003324514604546515017533 0ustar liggesusers###if(getRversion() >= "2.15.1") utils::globalVariables(c("error", "y", "x")) #' @rdname afex_plot #' @export interaction_plot <- function(means, data, mapping = c("shape", "lineytpe"), error_plot = TRUE, error_arg = list(width = 0), data_plot = TRUE, data_geom = ggplot2::geom_point, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), dodge = 0.5, plot_first = NULL, legend_title, col_x = "x", col_y = "y", col_trace = "trace", col_panel = "panel", col_lower = "lower", col_upper = "upper") { if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("package ggplot2 is required.", call. = FALSE) } if (missing(mapping)) { mapping <- c('shape', 'linetype') } else if (length(mapping) == 0) { stop("mapping cannot be empty. Possible values: 'shape', 'color', 'linetype'.", call. = FALSE) } tmp_list <- as.list(rep(col_trace, length(mapping))) names(tmp_list) <- mapping error_mapping <- mapping[!(mapping %in% c("linetype", "shape", "fill"))] tmp_list_error <- as.list(rep(col_trace, length(error_mapping))) names(tmp_list_error) <- error_mapping plot_out <- ggplot2::ggplot(data = means, mapping = do.call( what = ggplot2::aes_string, args = c(list( y = col_y, x = col_x, group = col_trace), tmp_list))) if (!is.null(plot_first)) { if (is.list(plot_first)) { for (i in seq_along(plot_first)) { plot_out <- plot_out + plot_first[[i]] } } else { plot_out <- plot_out + plot_first } } if (data_plot) { if (missing(data_geom)) { data_geom <- ggplot2::geom_point } if (is.function(data_geom)) { if (!is.null(data_alpha)) data_arg$alpha <- data_alpha if (!is.null(data_color) & !any(c("color", "colour") %in% mapping)) { data_arg$color <- data_color } if (!("position" %in% names(data_arg)) & ("position" %in% names(formals(data_geom)))) { data_arg$position = ggplot2::position_dodge(width = dodge) } plot_out <- plot_out + do.call(what = data_geom, args = c( #mapping = list(ggplot2::aes(group = interaction(x, trace))), mapping = list( ggplot2::aes_string( group = paste0("interaction(", paste0(c(col_x, col_trace), collapse = ", "), ")") )), data = list(data), data_arg ) ) } else if (is.list(data_geom)) { ## https://stackoverflow.com/a/13433689/289572 depth <- function(this) { ifelse(is.list(this), 1L + as.numeric(all(as.logical(sapply(this, depth)))), 0L) } if ((length(data_arg) == 0) | (depth(data_arg) == 1)) { if (!is.null(data_alpha)) data_arg$alpha <- data_alpha if (!is.null(data_color) & !any(c("color", "colour") %in% mapping)) { data_arg$color <- data_color } if (!("position" %in% names(data_arg)) & ("position" %in% unlist(sapply(data_geom, function(x) names(formals(x)))))) { data_arg$position = ggplot2::position_dodge(width = dodge) } for (i in seq_along(data_geom)) { plot_out <- plot_out + do.call(what = data_geom[[i]], args = c( mapping = list( ggplot2::aes_string( group = paste0("interaction(", paste0(c(col_x, col_trace), collapse = ", "), ")") )), data = list(data), data_arg ) ) } } else { for (i in seq_along(data_arg)) { if (!is.null(data_alpha)) data_arg[[i]]$alpha <- data_alpha if (!is.null(data_color) & !any(c("color", "colour") %in% mapping)) { data_arg[[i]]$color <- data_color } if (!("position" %in% names(data_arg[[i]])) & ("position" %in% names(formals(data_geom[[i]])))) { data_arg[[i]]$position = ggplot2::position_dodge(width = dodge) } } for (i in seq_along(data_geom)) { plot_out <- plot_out + do.call(what = data_geom[[i]], args = c( mapping = list( ggplot2::aes_string( group = paste0("interaction(", paste0(c(col_x, col_trace), collapse = ", "), ")") )), data = list(data), data_arg[[i]] ) ) } } } } for (i in levels(data$trace)) { tmp_means <- means tmp_means[means$trace != i, c(col_y, col_lower, col_upper)] <- NA #tmp_means <- tmp_means[means$trace == i,] plot_out <- plot_out + do.call(what = ggplot2::geom_point, args = c( data = list(tmp_means), position = list( ggplot2::position_dodge(width = dodge) ), point_arg, na.rm = list(TRUE) )) + do.call(what = ggplot2::geom_line, args = c( data = list(tmp_means), position = list( ggplot2::position_dodge(width = dodge) ), line_arg, na.rm = list(TRUE) )) if (error_plot) { plot_out <- plot_out + do.call(what = ggplot2::geom_errorbar, args = c( data = list(tmp_means), mapping = list(do.call( what = ggplot2::aes_string, args = c(list( x = col_x, ymin = col_lower, ymax = col_upper, group = col_trace), tmp_list_error))), position = list(ggplot2::position_dodge(width = dodge)), error_arg, na.rm = list(TRUE), inherit.aes = list(FALSE) )) } } if (length(unique(means$panel)) > 1) { plot_out <- plot_out + ggplot2::facet_wrap(facets = "panel") } ## add labels if (!is.null(attr(means, "dv"))) { plot_out <- plot_out + ggplot2::ylab(attr(means, "dv")) } if (!is.null(attr(means, "x"))) { plot_out <- plot_out + ggplot2::xlab(attr(means, "x")) } mapping <- mapping[nzchar(mapping)] if (!missing(legend_title) && length(mapping) > 0) { legend_title <- paste(legend_title, collapse = "\n") tmp_list <- rep(list(ggplot2::guide_legend(title = legend_title)), length(mapping)) names(tmp_list) <- mapping plot_out <- plot_out + do.call(what = ggplot2::guides, args = tmp_list) } return(plot_out) } #' @rdname afex_plot #' @export oneway_plot <- function(means, data, mapping = "", error_plot = TRUE, error_arg = list(width = 0), data_plot = TRUE, data_geom = ggbeeswarm::geom_beeswarm, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), plot_first = NULL, legend_title, col_x = "x", col_y = "y", col_panel = "panel", col_lower = "lower", col_upper = "upper") { if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("package ggplot2 is required.", call. = FALSE) } if (missing(mapping)) { mapping <- "" } if (length(mapping) > 1 || mapping[1] != "") { tmp_list <- as.list(rep(col_x, length(mapping))) names(tmp_list) <- mapping error_mapping <- mapping[!(mapping %in% c("linetype", "shape", "fill"))] tmp_list_error <- as.list(rep(col_x, length(error_mapping))) names(tmp_list_error) <- error_mapping } else { tmp_list <- list() tmp_list_error <- list() } plot_out <- ggplot2::ggplot(data = means, mapping = do.call( what = ggplot2::aes_string, args = c(list( y = col_y, x = col_x, group = col_x), tmp_list))) if (!is.null(plot_first)) { if (is.list(plot_first)) { for (i in seq_along(plot_first)) { plot_out <- plot_out + plot_first[[i]] } } else { plot_out <- plot_out + plot_first } } if (data_plot) { if (missing(data_geom)) { if (!requireNamespace("ggbeeswarm", quietly = TRUE)) { stop("package ggbeeswarm is required.", call. = FALSE) } data_geom <- ggbeeswarm::geom_beeswarm } if (is.function(data_geom)) { if (!is.null(data_alpha)) data_arg$alpha <- data_alpha if (!is.null(data_color) & !any(c("color", "colour") %in% mapping)) { data_arg$color <- data_color } plot_out <- plot_out + do.call(what = data_geom, args = c( data = list(data), data_arg ) ) } else if (is.list(data_geom)) { ## https://stackoverflow.com/a/13433689/289572 depth <- function(this) { ifelse(is.list(this), 1L + as.numeric(all(as.logical(sapply(this, depth)))), 0L) } if (depth(data_arg) == 1) { if (!is.null(data_alpha)) data_arg$alpha <- data_alpha if (!is.null(data_color) & !any(c("color", "colour") %in% mapping)) { data_arg$color <- data_color } for (i in seq_along(data_geom)) { plot_out <- plot_out + do.call(what = data_geom[[i]], args = c( data = list(data), data_arg ) ) } } else { for (i in seq_along(data_arg)) { if (!is.null(data_alpha)) data_arg[[i]]$alpha <- data_alpha if (!is.null(data_color) & !any(c("color", "colour") %in% mapping)) { data_arg[[i]]$color <- data_color } } data_arg$alpha <- data_alpha for (i in seq_along(data_geom)) { plot_out <- plot_out + do.call(what = data_geom[[i]], args = c( data = list(data), data_arg[[i]] ) ) } } } } plot_out <- plot_out + do.call(what = ggplot2::geom_point, args = point_arg) if (error_plot) { plot_out <- plot_out + do.call(what = ggplot2::geom_errorbar, args = c( mapping = list(do.call( what = ggplot2::aes_string, args = c(list( x = col_x, ymin = col_lower, ymax = col_upper), tmp_list_error))), error_arg, inherit.aes = list(FALSE) )) } if (length(unique(means$panel)) > 1) { plot_out <- plot_out + ggplot2::facet_wrap(facets = "panel") } ## add labels if (!is.null(attr(means, "dv"))) { plot_out <- plot_out + ggplot2::ylab(attr(means, "dv")) } if (!is.null(attr(means, "x"))) { plot_out <- plot_out + ggplot2::xlab(attr(means, "x")) } mapping <- mapping[nzchar(mapping)] if (!missing(legend_title) && length(mapping) > 0) { legend_title <- paste(legend_title, collapse = "\n") tmp_list <- rep(list(ggplot2::guide_legend(title = legend_title)), length(mapping)) names(tmp_list) <- mapping plot_out <- plot_out + do.call(what = ggplot2::guides, args = tmp_list) } return(plot_out) } afex/R/predict.R0000644000176200001440000000370014415330376013161 0ustar liggesusers#' Predict method for \code{afex_aov} objects #' #' Predicted values based on \code{afex_aov} objects. #' #' @author Mattan S. Ben-Shachar #' #' @example examples/examples.predict.R #' #' @param newdata An optional data frame in which to look for variables with #' which to predict. If omitted, the fitted values are used. #' @param colname_predict Name of the appended column when \code{append = TRUE}. #' @inheritParams residuals.afex_aov #' @param ... Not used. #' #' @return A vector of predicted values corresponding to the data in #' \code{object$data$long} or to \code{newdata}, or if \code{append = TRUE} a #' data frame with an additional column of predicted values. #' #' @export #' @importFrom stats predict fitted setNames predict.afex_aov <- function(object, newdata, append = FALSE, colname_predict = ".predict", ...) { # if no newdata, get fitted if (missing(newdata)) { return(fitted(object, append = append, colname_predict = colname_predict)) } # soft factorize numeric data for (col in colnames(newdata)) { if (is.numeric(newdata[[col]])) { i <- which(colnames(object$data$long) == col) if (length(i) && !is.numeric(object$data$long[[i]])) { newdata[[col]] <- as.character(newdata[[col]]) } } } # get predicted values pred <- predict(object$lm, newdata = newdata) colnames(pred) <- colnames(fitted(object$lm)) # if any within, needs some clean up if (length(attr(object, "within")) > 0) { within <- attr(object, "within") # make long ~ pred <- sapply(seq_len(nrow(pred)), function(i) { temp_pred <- pred w_rm <- sapply(newdata[i, names(within)], make.names, unique = TRUE) w_rm <- paste0(w_rm, collapse = "_") temp_pred[i, w_rm] }) pred <- setNames(pred, rownames(newdata)) } if (append) { newdata[[colname_predict]] <- pred return(newdata) } else { return(pred) } } afex/R/md_16.4-data.R0000644000176200001440000000477613664111747013530 0ustar liggesusers#' Data 16.4 from Maxwell & Delaney #' #' Data from a hypothetical inductive reasoning study. #' #' #' Description from pp. 841: #' #' Suppose an educational psychologist has developed an intervention to teach inductive reasoning skills to school children. She decides to test the efficacy of her intervention by conducting a randomized design. Three classrooms of students are randomly assigned to the treatment condition, and 3 other classrooms are assigned to the control. #' #' Table 16.4 shows hypothetical data collected from 29 children who participated in the study assessing the effectiveness of the intervention to increase inductive reasoning skills. We want to call your attention to several aspects of the data. First, the 15 children with condition values of 0 received the control, whereas the 14 children with condition values of 1 received the treatment. Second, 4 of the children in the control condition were students in control Classroom 1, 6 of them were students in control Classroom 2, and 5 were students in control Classroom 3. Along similar lines, 3 of the children in the treatment condition were students in treatment Classroom 1, 5 were students in treatment Classroom 2, and 6 were students in treatment Classroom 3. It is essential to understand that there are a total of six classrooms here; we have coded classroom from 1 to 3 for control as well as treatment, because we will indicate to PROC MIXED that classroom is nested under treatment. Third, scores on the dependent variable appear in the rightmost column under the variable label "induct." #' #' Note that it would make a lot more sense to change the labeling of room from 1 to 3 nested within cond to 1 to 6. However, I keep this in line with the original. The random effects term in the call to mixed is therefore a little bit uncommon.#' #' #' @docType data #' @keywords dataset #' @name md_16.4 #' @usage md_16.4 #' @format A data.frame with 24 rows and 3 variables. #' @source Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 574 #' #' @encoding UTF-8 #' #' @examples #' # data for next examples (Maxwell & Delaney, Table 16.4) #' data(md_16.4) #' str(md_16.4) #' #' ### replicate results from Table 16.6 (Maxwell & Delaney, 2004, p. 845) #' # p-values (almost) hold: #' (mixed2 <- mixed(induct ~ cond + (1|room:cond), md_16.4)) #' # (1|room:cond) is needed because room is nested within cond. #' #' NULL afex/R/residuals.R0000644000176200001440000000622614071313113013514 0ustar liggesusers#' Extract Residuals and Fitted Values from \code{afex_aov} objects #' #' Extract Residuals and Fitted Values from \code{afex_aov} objects. #' #' @author Mattan S. Ben-Shachar #' #' @example examples/examples.residuals.R #' #' @param object \code{afex_aov} object. #' @param append If set to \code{TRUE} returns the residuals/fitted values #' appended as an additional column to the long data. Recommended when data #' was aggregated across within conditions. #' @param colname_residuals,colname_fitted Name of the appended column when #' \code{append = TRUE}. #' @param ... Additional arguments passed to #' \code{residuals.lm}/\code{fitted.lm}. #' #' @return A vector of residuals/fitted values corresponding to the data in #' \code{object$data$long}, or if \code{append = TRUE} a data frame with an #' additional column of residuals/fitted values. #' #' @export #' @importFrom stats fitted reshape residuals residuals.afex_aov <- function(object, append = FALSE, colname_residuals = ".residuals", ...) { if (!append && attr(object, "data_changed")) { message("Data was changed during ANOVA calculation. ", "Thus, residuals cannot be added to original data.", "\nresiduals(..., append = TRUE) will return data and residuals.") } e <- residuals(object$lm, ...) .clean_model_values(object, model_values = e, values_colname = colname_residuals, append = append) } #' @export #' @rdname residuals.afex_aov fitted.afex_aov <- function(object, append = FALSE, colname_fitted = ".fitted", ...) { if (!append && attr(object, "data_changed")) { message("Data was changed during ANOVA calculation. ", "Thus, fitted values cannot be added to original data.", "\nfitted(..., append = TRUE) will return data and fitted values.") } e <- fitted(object$lm, ...) .clean_model_values(object, model_values = e, values_colname = colname_fitted, append = append) } #' @keywords internal .clean_model_values <- function(object, model_values, values_colname, append) { if (length(attr(object, "within")) > 0) { # In long format mv <- data.frame(model_values) varying <- colnames(mv) mv[attr(object, "id")] <- object$data$wide[attr(object, "id")] mv <- reshape( mv, direction = "long", varying = varying, v.names = values_colname, times = varying, timevar = ".time.", idvar = attr(object, "id") ) # add within data code <- data.frame(.time. = varying, .index. = seq_along(varying)) index <- object$data$idata index$.index. <- seq_len(nrow(index)) index <- merge(code, index, by = ".index.") mv <- merge(mv, index, by = ".time.") mv$.time. <- NULL mv$.index. <- NULL # add between data between_data <- object$data$long mv <- merge(between_data, mv, by = c(attr(object, "id"), names(attr(object, "within")))) } else { mv <- object$data$long mv[[values_colname]] <- model_values } if (append) { return(mv) } else { return(setNames(mv[[values_colname]],rownames(mv))) } }afex/R/ems.R0000644000176200001440000001211514417325230012306 0ustar liggesusers#' Expected values of mean squares for factorial designs #' #' Implements the Cornfield-Tukey algorithm for deriving the expected values of the mean squares for factorial designs. #' #' @param design A \code{formula} object specifying the factors in the design (except residual error, which is always implicitly included). The left hand side of the \code{~} is the symbol that will be used to denote the number of replications per lowest-level factor combination (I usually use "r" or "n"). The right hand side should include all fixed and random factors separated by \code{*}. Factor names should be single letters. #' @param nested A \code{character} vector, where each element is of the form \code{"A/B"}, indicating that the levels of factor B are nested under the levels of factor A. #' @param random A \code{character} string indicating, without spaces or any separating characters, which of the factors specified in the design are random. #' #' @return The returned value is a formatted table where the rows represent the mean squares, the columns represent the variance components that comprise the various mean squares, and the entries in each cell represent the terms that are multiplied and summed to form the expectation of the mean square for that row. Each term is either the lower-case version of one of the experimental factors, which indicates the number of levels for that factor, or a "1", which means the variance component for that column is contributes to the mean square but is not multiplied by anything else. #' #' @note Names for factors or parameters should only be of length 1 as they are simply concatenated in the returned table. #' #' @author Jake Westfall #' #' @seealso A detailed description with explanation of the example can be found \href{https://web.archive.org/web/20210805121242/http://www.talkstats.com/threads/share-your-functions-code.18603/page-9#post-82050}{elsewhere} (note that the \code{design} argument of the function described at the link behaves slightly different). #' #' Example applications of this function can be found here: \url{https://stats.stackexchange.com/a/122662/442}. #' #' #' @example examples/examples.ems.R #' @export ems <- function(design, nested=NULL, random=""){ # modify design formula based on nested factors specified if(!is.null(nested)){ terms <- attr(terms(design), "term.labels") # for each nested, get indices of all terms not involving their interaction keeps <- lapply(strsplit(nested, "/"), function(x){ which(apply(sapply(x, grepl, terms), 1, function(x) !all(x))) }) terms <- terms[Reduce(intersect, keeps)] formula <- paste(c(as.character(design)[2:1], paste(terms, collapse="+")), collapse="") design <- eval(parse(text=formula)) } # build two-way table mat <- t(attr(terms(design), "factors")) terms <- tolower(as.character(attr(terms(design), "variables"))[-1]) # resolve fixed/random dummies if (!is.null(random)){ random <- unlist(strsplit(random,split="")) mat[,which(colnames(mat) %in% random)][mat[, which(colnames(mat) %in% random)]==1] <- "" mat[,which(!colnames(mat) %in% random)][mat[, which(!colnames(mat) %in% random)]==1] <- "fix" } # insert 1 in nested rows subs <- strsplit(rownames(mat), split=":") if(!is.null(nested)){ nested <- strsplit(nested, split="/") for(term in nested){ rows <- unlist(lapply(subs, function(x) term[2] %in% x)) cols <- colnames(mat)==term[1] mat[rows,cols] <- "1" } } mat <- rbind(mat, e=rep("1", ncol(mat))) # insert numbers of levels for remaining cells for(row in seq(nrow(mat))){ mat[row,][mat[row,]=="0"] <- tolower(colnames(mat)[mat[row,]=="0"]) } # construct EMS table ems <- matrix(nrow=nrow(mat), ncol=nrow(mat), dimnames=list(Effect=rownames(mat), VarianceComponent=rev(rownames(mat)))) # add nesting information to subscripts if (!is.null(nested)){ subs <- lapply(subs, function(x){ new <- x for (nest in seq(length(nested))){ if (nested[[nest]][2] %in% x) new <- c(new, nested[[nest]][1]) } return(new) }) } subs[["e"]] <- colnames(mat)[-1] names(subs) <- rownames(mat) # rename #-of-reps variable to 'e' invisibly colnames(mat)[1] <- "e" # fill in EMS table for(effect in rownames(ems)){ for(varcomp in colnames(ems)){ effectVec <- unlist(strsplit(effect, ":")) ans <- mat[varcomp,-1*which(colnames(mat) %in% effectVec)] if ("fix" %in% ans) ans <- "" if (all(ans=="1")) ans <- "1" if (("1" %in% ans | "2" %in% ans) & !all(ans=="1")){ ans <- ans[!ans %in% c("1","2")] } varcompVec <- unlist(strsplit(varcomp, ":")) if (!all(effectVec %in% subs[[varcomp]])) ans <- "" if (effect=="e" & varcomp=="e") ans <- "1" ems[effect,varcomp] <- paste(ans, collapse="") } } attr(ems, "terms") <- terms return(noquote(ems)) } afex/R/md_12.1-data.R0000644000176200001440000000523413664111747013507 0ustar liggesusers#' Data 12.1 from Maxwell & Delaney #' #' Hypothetical Reaction Time Data for 2 x 3 Perceptual Experiment: Example data for chapter 12 of Maaxwell and Delaney (2004, Table 12.1, p. 574) in long format. Has two within.subjects factors: angle and noise. #' #' Description from pp. 573: #' #' Suppose that a perceptual psychologist studying the visual system was interested in determining the #' extent to which interfering visual stimuli slow the ability to recognize letters. Subjects are #' brought into a laboratory and seated in front of a tachistoscope. Subjects are told that they will #' see either the letter T or the letter I displayed on the screen. In some trials, the letter appears #' by itself, but in other trials, the target letter is embedded in a group of other letters. This #' variation in the display constitutes the first factor, which is referred to as noise. The noise #' factor has two levels?absent and present. The other factor varied by the experimenter is where in #' the display the target letter appears. This factor, which is called angle, has three levels. The #' target letter is either shown at the center of the screen (i.e., 0° off-center, where the subject #' has been instructed to fixate), 4° off-center or 8° off-center (in each case, the deviation from the #' center varies randomly between left and right). Table 12.1 presents hypothetical data for 10 #' subjects. As usual, the sample size is kept small to make the calculations easier to follow. The #' dependent measure is reaction time (latency), measured in milliseconds (ms), required by a subject #' to identify the correct target letter. Notice that each subject has six scores, one for each #' combination of the 2 x 3 design. In an actual perceptual experiment, each of these six scores would #' itself be the mean score for that subject across a number of trials in the particular condition. #' Although "trials" could be used as a third within-subjects factor in such a situation, more #' typically trials are simply averaged over to obtain a more stable measure of the individual's #' performance in each condition. #' #' @docType data #' @keywords dataset #' @name md_12.1 #' @usage md_12.1 #' @format A data.frame with 60 rows and 4 variables. #' @source Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 574 #' #' @encoding UTF-8 #' #' @examples #' data(md_12.1) #' #' # Table 12.5 (p. 578): #' aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), #' args.return=list(correction = "none", es = "none")) #' #' NULL afex/R/reexport.R0000644000176200001440000000011213664111747013375 0ustar liggesusers### lme4 #' @importFrom lmerTest lmer #' @export lmerTest::lmer afex/R/laptop_urry-data.R0000644000176200001440000000604314076011251015010 0ustar liggesusers#' Replication of Laptop Note Taking Study (Urry et al. 2021, Psych. Science) #' #' Original abstract: #' In this direct replication of Mueller and Oppenheimer’s (2014) Study 1, #' participants watched a lecture while taking notes with a laptop (n = 74) or #' longhand (n = 68). After a brief distraction and without the opportunity to #' study, they took a quiz. As in the original study, laptop participants took #' notes containing more words spoken verbatim by the lecturer and more words #' overall than did longhand participants. However, laptop participants did not #' perform better than longhand participants on the quiz. #' #' Own description: #' #' Heather Urry and 87 of her undergraduate and graduate students (yes, all 87 #' students are co-authors!) compared the effectiveness of taking notes on a #' laptop versus longhand (i.e., pen and paper) for learning from lectures. 142 #' participants (which differed from the 88 authors) first viewed one of several #' 15 minutes lectures (TED talks) during which they were asked to take notes #' either on a laptop or with pen and paper. Participants were randomly assigned #' to either the laptop (N = 68) or longhand condition (N = 74). After a 30 #' minutes delay, participants were quizzed on the content of the lecture. There #' were two types of questions, factual and conceptual questions. The answers #' from each participant were then independently rated from several raters #' (which agreed very strongly with each other) using a standardised scoring key #' producing one memory score per participant and questions type ranging from 0 #' (= no memory) to 100 (= perfect memory). We also aggregated the two different #' scores into one overall memory score. #' #' #' @docType data #' @keywords dataset #' @name laptop_urry #' @usage laptop_urry #' @format A data frame with 142 rows and 6 variables: #' \describe{ #' \item{pid}{participant id, factor with 142 levels} #' \item{condition}{experimental condition (laptop, longhand), factor with 2 levels} #' \item{talk}{TED talk seen by participant, factor with 5 levels} #' \item{overall}{overall memory score ranging from 0 (= no memory) to 100 (= perfect memory).} #' \item{factual}{memory score on the factual questions ranging from 0 (= no memory) to 100 (= perfect memory).} #' \item{conceptual}{memory score on the conceptual questions ranging from 0 (= no memory) to 100 (= perfect memory).} #' } #' @source Urry, H. L., Crittle, C. S., Floerke, V. A., Leonard, M. Z., Perry, #' C. S., Akdilek, N., Albert, E. R., Block, A. J., Bollinger, C. A., Bowers, #' E. M., Brody, R. S., Burk, K. C., Burnstein, A., Chan, A. K., Chan, P. C., #' Chang, L. J., Chen, E., Chiarawongse, C. P., Chin, G., … Zarrow, J. E. #' (2021). Don’t Ditch the Laptop Just Yet: A Direct Replication of Mueller #' and Oppenheimer’s (2014) Study 1 Plus Mini Meta-Analyses Across Similar #' Studies. *Psychological Science*, 0956797620965541. #' \doi{10.1177/0956797620965541} #' #' @encoding UTF-8 #' "laptop_urry" afex/R/methods.afex_aov.R0000644000176200001440000003247014232554150014762 0ustar liggesusers#' Methods for afex_aov objects #' #' Methods defined for objects returned from the ANOVA functions #' \code{\link{aov_car}} et al. of class \code{afex_aov} containing both the #' ANOVA fitted via \code{car::Anova} and base R's \code{aov}. #' #' @param object,x object of class \code{afex_aov} as returned from #' \code{\link{aov_car}} and related functions. #' @param p_adjust_method \code{character} indicating if p-values for individual #' effects should be adjusted for multiple comparisons (see #' \link[stats]{p.adjust} and details). #' @param ... further arguments passed through, see description of return value #' for details. #' @param trms,xlev,grid same as for \code{\link[emmeans]{emm_basis}}. #' @param model argument for \code{\link[emmeans]{emmeans}()} and related #' functions that allows to choose on which model the follow-up tests for #' ANOVAs with repeated-measures factors are based. \code{"multivariate"} (the #' default) uses the \code{lm} model and \code{"univariate"} uses the #' \code{aov} model. Default given by \code{afex_options("emmeans_mode")}. #' Multivariate tests likely work better for unbalanced data and provide a #' better correction for violations of sphericity. #' #' @return #' \describe{ #' \item{\code{anova}}{Returns an ANOVA table of class \code{c("anova", #' "data.frame")}. Information such as effect size (\code{es}) or #' df-correction are calculated each time this method is called.} #' \item{\code{summary}}{For ANOVAs containing within-subject factors it #' returns the full output of the within-subject tests: the uncorrected #' results, results containing Greenhousse-Geisser and Hyunh-Feldt correction, #' and the results of the Mauchly test of sphericity (all achieved via #' \code{summary.Anova.mlm}). For other ANOVAs, the \code{anova} table is #' simply returned.} #' \item{\code{print}}{Prints (and invisibly returns) the ANOVA table as #' constructed from \code{\link{nice}} (i.e., as strings rounded nicely). #' Arguments in \code{...} are passed to \code{nice} allowing to pass #' arguments such as \code{es} and \code{correction}.} #' \item{\code{recover_data} and \code{emm_basis}}{Provide the backbone for #' using \code{\link[emmeans]{emmeans}} and related functions from #' \pkg{emmeans} directly on \code{afex_aov} objects by returning a #' \code{\link[emmeans]{emmGrid-class}} object. Should not be called directly #' but through the functionality provided by \pkg{emmeans}.} #' } #' #' @details #' Exploratory ANOVA, for which no detailed hypotheses have been specified a #' priori, harbor a multiple comparison problem (Cramer et al., 2015). To avoid #' an inflation of familywise Type I error rate, results need to be corrected #' for multiple comparisons using \code{p_adjust_method}. \code{p_adjust_method} #' defaults to the method specified in the call to \code{\link{aov_car}} in #' \code{anova_table}. If no method was specified and \code{p_adjust_method = #' NULL} p-values are not adjusted. #' #' @seealso \code{residuals} and \code{fitted} methods also exists for #' \code{afex_aov} objects, see: \code{\link{residuals.afex_aov}}. #' #' @references #' Cramer, A. O. J., van Ravenzwaaij, D., Matzke, D., Steingroever, H., Wetzels, #' R., Grasman, R. P. P. P., ... Wagenmakers, E.-J. (2015). Hidden multiplicity #' in exploratory multiway ANOVA: Prevalence and remedies. \emph{Psychonomic #' Bulletin & Review}, 1-8. \doi{10.3758/s13423-015-0913-5} #' #' @name afex_aov-methods #' @importFrom stats p.adjust NULL #### methods for afex_aov #' @rdname afex_aov-methods #' @inheritParams nice #' @method anova afex_aov #' @export anova.afex_aov <- function(object, es = afex_options("es_aov"), observed = NULL, correction = afex_options("correction_aov"), MSE = TRUE, intercept = FALSE, p_adjust_method = NULL, sig_symbols = attr(object$anova_table, "sig_symbols"), ...) { # internal functions: # check arguments dots <- list(...) if("p.adjust.method" %in% names(dots)) { #(!missing(sig.symbols)) { warn_deprecated_arg("p.adjust.method", "p_adjust_method") p_adjust_method <- dots$p.adjust.method } es <- match.arg(es, c("none", "ges", "pes"), several.ok = TRUE) correction <- match.arg(correction, c("GG", "HF", "none")) if (inherits(object$Anova, "Anova.mlm")) { tmp <- tryCatch( expr = suppressWarnings(summary(object$Anova, multivariate = FALSE)), error = function(e) stop("summary.Anova.mlm() failed for 'afex_aov' object.", "\nPossible reason, car package updated.", "\nTry refitting model with afex ANOVA function.", call. = FALSE) ) t.out <- tmp[["univariate.tests"]] #browser() #t.out <- cbind(t.out, orig_den_df = t.out[, "den Df"]) if (correction[1] == "GG") { tmp[["pval.adjustments"]] <- tmp[["pval.adjustments"]][ !is.na(tmp[["pval.adjustments"]][,"GG eps"]),, drop = FALSE] t.out[row.names(tmp[["pval.adjustments"]]), "num Df"] <- t.out[row.names(tmp[["pval.adjustments"]]), "num Df"] * tmp[["pval.adjustments"]][,"GG eps"] t.out[row.names(tmp[["pval.adjustments"]]), "den Df"] <- t.out[row.names(tmp[["pval.adjustments"]]), "den Df"] * tmp[["pval.adjustments"]][,"GG eps"] t.out[row.names(tmp[["pval.adjustments"]]), "Pr(>F)"] <- tmp[["pval.adjustments"]][,"Pr(>F[GG])"] } else { if (correction[1] == "HF") { try(if (any(tmp[["pval.adjustments"]][,"HF eps"] > 1)) warning("HF eps > 1 treated as 1", call. = FALSE), silent = TRUE) tmp[["pval.adjustments"]] <- tmp[["pval.adjustments"]][ !is.na(tmp[["pval.adjustments"]][,"HF eps"]),, drop = FALSE] t.out[row.names(tmp[["pval.adjustments"]]), "num Df"] <- t.out[row.names(tmp[["pval.adjustments"]]), "num Df"] * pmin(1, tmp[["pval.adjustments"]][,"HF eps"]) t.out[row.names(tmp[["pval.adjustments"]]), "den Df"] <- t.out[row.names(tmp[["pval.adjustments"]]), "den Df"] * pmin(1, tmp[["pval.adjustments"]][,"HF eps"]) t.out[row.names(tmp[["pval.adjustments"]]), "Pr(>F)"] <- tmp[["pval.adjustments"]][,"Pr(>F[HF])"] } else { if (correction[1] == "none") { TRUE } else stop("None supported argument to correction.") } } tmp.df <- t.out tmp2 <- as.data.frame(unclass(tmp.df)) #} else if (class(object$Anova)[1] == "anova") { } else if (inherits(object$Anova, "anova")) { #browser() tmp.df <- cbind(object$Anova[-nrow(object$Anova),], data.frame("Error SS" = object$Anova[nrow(object$Anova), "Sum Sq"], "den Df" = object$Anova[nrow(object$Anova), "Df"], check.names = FALSE)) colnames(tmp.df)[1:3] <- c("SS", "num Df", "F") #tmp.df$orig_den_df <- tmp.df[, "den Df"] tmp2 <- as.data.frame(tmp.df) } else stop("Non-supported object passed. Slot 'Anova' needs to be of class 'Anova.mlm' or 'anova'.") tmp2[,"MSE"] <- tmp2[,"Error SS"]/tmp2[,"den Df"] ## provision for car 3.0 (March 2018), for calculation of es if ("Sum Sq" %in% colnames(tmp2)) { tmp2$SS <- tmp2[,"Sum Sq"] } # calculate es es_df <- data.frame(row.names = rownames(tmp2)) if ("pes" %in% es) { es_df$pes <- tmp2$SS/(tmp2$SS + tmp2[,"Error SS"]) } if ("ges" %in% es) { # This code is basically a copy from ezANOVA by Mike Lawrence! if(!is.null(observed) & length(observed) > 0){ obs <- rep(FALSE,nrow(tmp2)) for(i in observed){ if (!any(grepl(paste0("\\b",i,"\\b"), rownames(tmp2)))) stop(paste0("Observed variable not in data: ", i)) obs <- obs | grepl(paste0("\\b",i,"\\b"), rownames(tmp2)) } obs_SSn1 <- sum(tmp2$SS*obs) obs_SSn2 <- tmp2$SS*obs } else { obs_SSn1 <- 0 obs_SSn2 <- 0 } es_df$ges <- tmp2$SS/(tmp2$SS+sum(unique(tmp2[,"Error SS"])) + obs_SSn1-obs_SSn2) } colname_f <- grep("^F", colnames(tmp2), value = TRUE) anova_table <- cbind(tmp2[,c("num Df", "den Df", "MSE")], F = tmp2[,colname_f], es_df, "Pr(>F)" = tmp2[,c("Pr(>F)")]) #browser() if (!MSE) anova_table$MSE <- NULL if (!intercept) if (row.names(anova_table)[1] == "(Intercept)") anova_table <- anova_table[-1,, drop = FALSE] # Correct for multiple comparisons if(is.null(p_adjust_method)) p_adjust_method <- ifelse(is.null(attr(object$anova_table, "p_adjust_method")), "none", attr(object$anova_table, "p_adjust_method")) anova_table[,"Pr(>F)"] <- p.adjust(anova_table[,"Pr(>F)"], method = p_adjust_method) class(anova_table) <- c("anova", "data.frame") p_adj_heading <- if(p_adjust_method != "none") paste0(", ", p_adjust_method, "-adjusted") else NULL attr(anova_table, "heading") <- c(paste0("Anova Table (Type ", attr(object, "type"), " tests", p_adj_heading, ")\n"), paste("Response:", attr(object, "dv"))) attr(anova_table, "p_adjust_method") <- p_adjust_method attr(anova_table, "es") <- es attr(anova_table, "correction") <- if(length(attr(object, "within")) > 0 && any( vapply(object$data$long[, names(attr(object, "within")), drop = FALSE], nlevels, 0) > 2)) correction else "none" attr(anova_table, "observed") <- if(!is.null(observed) & length(observed) > 0) observed else character(0) attr(anova_table, "incomplete_cases") <- attr(object, "incomplete_cases") attr(anova_table, "sig_symbols") <- if(!is.null(sig_symbols)) sig_symbols else afex_options("sig_symbols") anova_table } #' @rdname afex_aov-methods #' @method print afex_aov #' @importFrom stats symnum #' @export print.afex_aov <- function(x, ...) { out <- nice(x$anova_table, ...) print(out) invisible(out) } #' @rdname afex_aov-methods #' @method summary afex_aov #' @export summary.afex_aov <- function(object, ...) { if (inherits(object$Anova, "Anova.mlm")) { #if (class(object$Anova)[1] == "Anova.mlm") { if(attr(object$anova_table, "p_adjust_method") != "none") message("Note, results are NOT adjusted for multiple comparisons as requested\n(p_adjust_method = '", attr(object$anova_table, "p_adjust_method"), "')\nbecause the desired method of sphericity correction is unknown.\nFor adjusted p-values print the object (to see object$anova_table), or call\none of anova.afex_aov() or nice().") return(summary(object$Anova, multivariate = FALSE)) #} else if (class(object$Anova)[1] == "anova") { } else if (inherits(object$Anova, "anova")) { return(object$anova_table) } else stop("Non-supported object passed. Slot 'Anova' needs to be of class 'Anova.mlm' or 'anova'.") } #-------------------------------------------------------------- ### afex package - mixed objects ### # just need to provide an 'emmeans' method here #' @rdname afex_aov-methods ## @importFrom emmeans recover_data emm_basis #' @importFrom utils packageVersion ## @method recover.data afex_aov ## @export recover_data.afex_aov = function(object, ..., model = afex_options("emmeans_model")) { model <- match.arg(model, c("univariate", "multivariate")) if (model == "univariate" & is.null(object$aov)) { message("aov object missing, substituting multivariate/lm model.\nto get univariate tests, refit ANOVA with include_aov = TRUE") model <- "multivariate" } if (model == "univariate") { emmeans::recover_data(object = object$aov, ...) } else if (model == "multivariate") { if (packageVersion("emmeans") < "1.1.2") stop("emmeans version >= 1.1.2 required for multivariate tests") out <- emmeans::recover_data(object$lm, ...) if (length(attr(object, "within")) > 0) { out$misc$ylevs <- rev(attr(object, "within")) } return(out) } } #' @rdname afex_aov-methods ## @method lsm.basis afex_aov ## @export emm_basis.afex_aov = function(object, trms, xlev, grid, ..., model = afex_options("emmeans_model")) { model <- match.arg(model, c("univariate", "multivariate")) if (model == "univariate" & is.null(object$aov)) { #message("Substituting multivariate/lm model, as aov object missing.") model <- "multivariate" } if (model == "univariate") { out <- emmeans::emm_basis(object$aov, trms, xlev, grid, ...) } else if (model == "multivariate") { out <- emmeans::emm_basis(object$lm, trms, xlev, grid, ...) if (length(attr(object, "within")) > 0) { out$misc$ylevs <- rev(attr(object, "within")) } } out$misc$tran = attr(object, "transf") return(out) } afex/NEWS0000644000176200001440000000720114604562016011700 0ustar liggesusersChanges in afex Version 1.4-x (2024-xx-xx) Significant User Visible Changes and New Features o Added plot_first argument to afex_plot(), which allows passing ggplot2 geom's which will be plotted first, before any other graphical elements. This allows plotting reference lines in the background of the plot, e.g. using geom_hline(). Bugfixes o Address #87 hopefully increasing speed of emmeans() for mixed objects significantly. Changes in afex Version 1.3-1 (2024-02-25) Bugfixes o prepared afex for ggplot2 version 3.5.0 Changes in afex Version 1.3-x (2023-04-18) Significant User Visible Changes and New Features o Nicer warning if there is missing data for ANOVA models. o Removed all_fit() function. mixed(..., all_fit = TRUE) now uses lme4::allFit(). In case you have relied on all_fit() use lme4::allFit(). o Removed support for deprecated ANOVA functions aov.car, aov.ez, and aov4. Instead use aov_car(), aov_ez(), and aov_4(). Bugfixes o Updates to documentation in various places. o Using vdiffr for unit tests of afex_plot o Fixed broken link to www.talkstats.com (replaced with link in web.archive.org) Changes in afex Version 1.2-x (2022-10-30) Significant User Visible Changes and New Features o Multiple geoms for data in the background can now be passed to afex_plot() as a list. Likewise, for each geom, a separate list of additional arguments can be passed as a list of lists to data_arg. o afex_plot() gets a new argument, data_color with default "darkgrey". Like data_alpha for alpha, data_color sets the colour for the geom (or now geoms) used to plot the data in the background. o Both data_color and data_alpha can now be set to NULL, in which case they will not be set but should be set by the user through data_arg. Bugfixes o Data in mixed() output is shown nicer (#113) o afex_plot() should now work with factor_levels arguments even if corresponding variable is not a factor in the data. o Resaved plots for new version of ggbeeswarm (#117). Changes in afex Version 1.1-x (2022-03-30) Significant User Visible Changes and New Features o Fitting messages for mixed() are now only shown per default in interactive mode, thanks to Marius Barth (#111). o Nicer error message about missing variables for ANOVAs. o Removed check_contrasts() argument for ANOVAs, which did not work as described for designs with repeated-measures factors: https://github.com/singmann/afex/issues/109 Bugfixes o Fixed overzealous data completeness check introduced in version 1.0 in aov_car() which prevented ANOVAs with additive factors and no cross over data from working. o mixed(..., method = "LRT") and similar nested methods should work with empty factor levels: https://github.com/singmann/afex/issues/96 Changes in afex Version 1.0-x (2021-07-02) Significant User Visible Changes and New Features o ANOVA objects do not by default contain the aov slot any more o emmeans() for ANOVA now uses multivariate model as default o Default p-value method for mixed() is now Satterthwaite: method = "S" o New data set, Urry et al. (2021, Psych Science): laptop_urry The following changes are thanks to Mattan S. Ben-Shachar: o Added new vignette: "Testing the Assumptions of ANOVAs" o Added predict() method for afex_aov objects. o Deprecated functions test_levene() and test_sphercitiy(), which are now part of the performance package as performance::check_homogeneity() and performance::check_sphericity(), respectively. Bugfixes o All vignettes should run without suggested packages present. o Added ez to suggests, to avoid NOTE on CRAN solaris. afex/vignettes/0000755000176200001440000000000014665070123013211 5ustar liggesusersafex/vignettes/afex_anova_example.Rmd0000644000176200001440000004156614665062325017520 0ustar liggesusers--- title: "ANOVA and Post-Hoc Contrasts: Reanalysis of Singmann and Klauer (2011)" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{ANOVA and Post-Hoc Contrasts: Reanalysis of Singmann and Klauer (2011)} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "multcomp", "ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} op <- options(width = 90) knitr::opts_chunk$set(dpi=72) ``` # Overview This documents reanalysis a dataset from an Experiment performed by Singmann and Klauer (2011) using the ANOVA functionality of __afex__ followed by post-hoc tests using package [__emmeans__](https://cran.r-project.org/package=emmeans) (Lenth, 2017). After a brief description of the dataset and research question, the code and results are presented. # Description of Experiment and Data Singmann and Klauer (2011) were interested in whether or not conditional reasoning can be explained by a single process or whether multiple processes are necessary to explain it. To provide evidence for multiple processes we aimed to establish a double dissociation of two variables: instruction type and problem type. Instruction type was manipulated between-subjects, one group of participants received deductive instructions (i.e., to treat the premises as given and only draw necessary conclusions) and a second group of participants received probabilistic instructions (i.e., to reason as in an everyday situation; we called this "inductive instruction" in the manuscript). Problem type consisted of two different orthogonally crossed variables that were manipulated within-subjects, validity of the problem (formally valid or formally invalid) and plausibility of the problem (inferences which were consisted with the background knowledge versus problems that were inconsistent with the background knowledge). The critical comparison across the two conditions was among problems which were valid and implausible with problems that were invalid and plausible. For example, the next problem was invalid and plausible: > If a person is wet, then the person fell into a swimming pool. > A person fell into a swimming pool. > How valid is the conclusion/How likely is it that the person is wet? For those problems we predicted that under deductive instructions responses should be lower (as the conclusion does not necessarily follow from the premises) as under probabilistic instructions. For the valid but implausible problem, an example is presented next, we predicted the opposite pattern: > If a person is wet, then the person fell into a swimming pool. > A person is wet. > How valid is the conclusion/How likely is it that the person fell into a swimming pool? Our study also included valid and plausible and invalid and implausible problems. In contrast to the analysis reported in the manuscript, we initially do not separate the analysis into affirmation and denial problems, but first report an analysis on the full set of inferences, MP, MT, AC, and DA, where MP and MT are valid and AC and DA invalid. We report a reanalysis of our Experiment 1 only. Note that the factor `plausibility` is not present in the original manuscript, there it is a results of a combination of other factors. # Data and R Preperation We begin by loading the packages we will be using throughout. ```{r message=FALSE, warning=FALSE} library("afex") # needed for ANOVA functions. library("emmeans") # emmeans must now be loaded explicitly for follow-up tests. library("multcomp") # for advanced control for multiple testing/Type 1 errors. library("ggplot2") # for customizing plots. ``` ```{r} data(sk2011.1) str(sk2011.1) ``` An important feature in the data is that each participant provided two responses for each cell of the design (the content is different for each of those, each participant saw all four contents). These two data points will be aggregated automatically by `afex`. ```{r} with(sk2011.1, table(inference, id, plausibility)) ``` # ANOVA To get the full ANOVA table for the model, we simply pass it to `aov_ez` using the design as described above. We save the returned object for further analysis. ```{r} a1 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("inference", "plausibility")) a1 # the default print method prints a data.frame produced by nice ``` The equivalent calls (i.e., producing exactly the same output) of the other two ANOVA functions `aov_car` or `aov4` is shown below. ```{r, eval=FALSE} aov_car(response ~ instruction + Error(id/inference*plausibility), sk2011.1) aov_4(response ~ instruction + (inference*plausibility|id), sk2011.1) ``` As mentioned before, the two responses per cell of the design and participants are aggregated for the analysis as indicated by the warning message. Furthermore, the degrees of freedom are Greenhouse-Geisser corrected per default for all effects involving `inference`, as `inference` is a within-subject factor with more than two levels (i.e., MP, MT, AC, & DA). In line with our expectations, the three-way interaction is significant. The object printed per default for `afex_aov` objects (produced by `nice`) can also be printed nicely using `knitr`: ```{r, results='asis', } knitr::kable(nice(a1)) ``` Alternatively, the `anova` method for `afex_aov` objects returns a `data.frame` of class `anova` that can be passed to, for example, `xtable` for nice formatting: ```{r, results='asis'} print(xtable::xtable(anova(a1), digits = c(rep(2, 5), 3, 4)), type = "html") ``` # Post-Hoc Contrasts and Plotting To further analyze the data we need to pass it to package `emmeans`, a package that offers great functionality for both plotting and contrasts of all kind. A lot of information on `emmeans` can be obtained in [its vignettes](https://cran.r-project.org/package=emmeans) and [faq](https://CRAN.R-project.org/package=emmeans/vignettes/FAQs.html). `emmeans` can work with `afex_aov` objects directly as __afex__ comes with the necessary methods for the generic functions defined in `emmeans`. When using the default `multivariate` option for follow-up tests, `emmeans` uses the ANOVA model estimated via base R's `lm` method (which in the case of a multivariate response is an object of class `c("mlm", "lm")`). `afex` also supports a univariate model (i.e., `emmeans_model = "univariate"`, which requires that `include_aov = TRUE` in the ANOVA call) in which case `emmeans` uses the object created by base R's `aov` function (this was the previous default but is not recommended as it does not handle unbalanced data well). ## Some First Contrasts ### Main Effects Only This object can now be passed to `emmeans`, for example to obtain the marginal means of the four inferences: ```{r} m1 <- emmeans(a1, ~ inference) m1 ``` This object can now also be used to compare whether or not there are differences between the levels of the factor: ```{r} pairs(m1) ``` To obtain more powerful p-value adjustments, we can furthermore pass it to `multcomp` (Bretz, Hothorn, & Westfall, 2011): ```{r} summary(as.glht(pairs(m1)), test=adjusted("free")) ``` ### A Simple interaction We could now also be interested in the marginal means of the inferences across the two instruction types. `emmeans` offers two ways to do so. The first splits the contrasts across levels of the factor using the `by` argument. ```{r} m2 <- emmeans(a1, "inference", by = "instruction") ## equal: emmeans(a1, ~ inference|instruction) m2 ``` Consequently, tests are also only performed within each level of the `by` factor: ```{r} pairs(m2) ``` The second version considers all factor levels together. Consequently, the number of pairwise comparisons is a lot larger: ```{r} m3 <- emmeans(a1, c("inference", "instruction")) ## equal: emmeans(a1, ~inference*instruction) m3 pairs(m3) ``` ### Running Custom Contrasts Objects returned from `emmeans` can also be used to test specific contrasts. For this, we can simply create a list, where each element corresponds to one contrasts. A contrast is defined as a vector of constants on the reference grid (i.e., the object returned from `emmeans`, here `m3`). For example, we might be interested in whether there is a difference between the valid and invalid inferences in each of the two conditions. ```{r} c1 <- list( v_i.ded = c(0.5, 0.5, -0.5, -0.5, 0, 0, 0, 0), v_i.prob = c(0, 0, 0, 0, 0.5, 0.5, -0.5, -0.5) ) contrast(m3, c1, adjust = "holm") summary(as.glht(contrast(m3, c1)), test = adjusted("free")) ``` The results can be interpreted as in line with expectations. Responses are larger for valid than invalid problems in the deductive, but not the probabilistic condition. ## Plotting Since version `0.22`, `afex` comes with its own plotting function based on `ggplot2`, `afex_plot`, which works directly with `afex_aov` objects. As said initially, we are interested in the three-way interaction of instruction with inference, plausibility, and instruction. As we saw above, this interaction was significant. Consequently, we are interested in plotting this interaction. ### Basic Plots For `afex_plot`, we need to specify the `x`-factor(s), which determine which factor-levels or combinations of factor-levels are plotted on the x-axis. We can also define `trace` factor(s), which determine which factor levels are connected by lines. Finally, we can also define `panel` factor(s), which determine if the plot is split into subplots. `afex_plot` then plots the estimated marginal means obtained from `emmeans`, confidence intervals, and the raw data in the background. Note that the raw data in the background is per default drawn using an alpha blending of .5 (i.e., 50% semi-transparency). Thus, in case of several points lying directly on top of each other, this point appears noticeably darker. ```{r fig.width=7.5, fig.height=4} afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility") ``` In the default settings, the error bars show 95%-confidence intervals based on the standard error of the underlying model (i.e., the `lm` model in the present case). In the present case, in which each subplot (defined by `x`- and `trace`-factor) shows a combination of a within-subjects factor (i.e., `inference`) and a between-subjects (i.e., `instruction`) factor, this is not optimal. The error bars only allow to assess differences regarding the between-subjects factor (i.e., across the lines), but not inferences regarding the within-subjects factor (i.e., within one line). This is also indicated by a warning. An alternative would be within-subject confidence intervals: ```{r fig.width=7.5, fig.height=4} afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "within") ``` However, those only allow inferences regarding the within-subject factors and not regarding the between-subjecta factor. So the same warning is emitted again. A further alternative is to suppress the error bars altogether. This is the approach used in our original paper and probably a good idea in general when figures show both between- and within-subjects factors within the same panel. The presence of the raw data in the background still provides a visual depiction of the variability of the data. ```{r fig.width=7.5, fig.height=4} afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "none") ``` ### Customizing Plots `afex_plot` allows to customize the plot in a number of different ways. For example, we can easily change the aesthetic mapping associated with the `trace` factor. So instead of using lineytpe and shape of the symbols, we can use color. Furthermore, we can change the graphical element used for plotting the data points in the background. For example, instead of plotting the raw data, we can replace this with a boxplot. Finally, we can also make both the points showing the means and the lines connecting the means larger. ```{r fig.width=7.5, fig.height=4} p1 <- afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "none", mapping = c("color", "fill"), data_geom = geom_boxplot, data_arg = list(width = 0.4), point_arg = list(size = 1.5), line_arg = list(size = 1)) p1 ``` Note that `afex_plot` returns a `ggplot2` plot object which can be used for further customization. For example, one can easily change the `theme` to something that does not have a grey background: ```{r fig.width=7.5, fig.height=4} p1 + theme_light() ``` We can also set the theme globally for the remainder of the `R` session. ```{r} theme_set(theme_light()) ``` The full set of customizations provided by `afex_plot` is beyond the scope of this vignette. The examples on the help page at `?afex_plot` provide a good overview. # Replicate Analysis from Singmann and Klauer (2011) However, the plots shown so far are not particularly helpful with respect to the research question. Next, we fit a new ANOVA model in which we separate the data in affirmation and denial inferences. This was also done in the original manuscript. We then lot the data a second time. ```{r} a2 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("validity", "plausibility", "what")) a2 ``` Then we plot the data from this ANOVA. Because each panel would again show a mixed-design, we suppress the error bars. ```{r fig.width=7.5, fig.height=4} afex_plot(a2, x = c("plausibility", "validity"), trace = "instruction", panel = "what", error = "none") ``` We see the critical and predicted cross-over interaction in the left of those two graphs. For implausible but valid problems deductive responses are larger than probabilistic responses. The opposite is true for plausible but invalid problems. We now tests these differences at each of the four x-axis ticks in each plot using custom contrasts (`diff_1` to `diff_4`). Furthermore, we test for a validity effect and plausibility effect in both conditions. ```{r} (m4 <- emmeans(a2, ~instruction+plausibility+validity|what)) c2 <- list( diff_1 = c(1, -1, 0, 0, 0, 0, 0, 0), diff_2 = c(0, 0, 1, -1, 0, 0, 0, 0), diff_3 = c(0, 0, 0, 0, 1, -1, 0, 0), diff_4 = c(0, 0, 0, 0, 0, 0, 1, -1), val_ded = c(0.5, 0, 0.5, 0, -0.5, 0, -0.5, 0), val_prob = c(0, 0.5, 0, 0.5, 0, -0.5, 0, -0.5), plau_ded = c(0.5, 0, -0.5, 0, -0.5, 0, 0.5, 0), plau_prob = c(0, 0.5, 0, -0.5, 0, 0.5, 0, -0.5) ) contrast(m4, c2, adjust = "holm") ``` We can also pass these tests to `multcomp` which gives us more powerful Type 1 error corrections. ```{r} summary(as.glht(contrast(m4, c2)), test = adjusted("free")) ``` Unfortunately, in the present case this function throws several warnings. Nevertheless, the p-values from both methods are very similar and agree on whether or not they are below or above .05. Because of the warnings it seems advisable to use the one provided by `emmeans` directly and not use the ones from `multcomp`. The pattern for the affirmation problems is in line with the expectations: We find the predicted differences between the instruction types for valid and implausible (`diff_2`) and invalid and plausible (`diff_3`) and the predicted non-differences for the other two problems (`diff_1` and `diff_4`). Furthermore, we find a validity effect in the deductive but not in the probabilistic condition. Likewise, we find a plausibility effect in the probabilistic but not in the deductive condition. # Final Note Choosing the right correction for multiple testing can be difficult. In fact `multcomp` comes with an accompanying book (Bretz et al., 2011). If the degrees-of-freedom of all contrasts are identical using `multcomp`'s method `free` is more powerful than simply using the Bonferroni-Holm method. `free` is a generalization of the Bonferroni-Holm method that takes the correlations among the model parameters into account and uniformly more powerful. # References * Bretz, F., Hothorn, T., & Westfall, P. H. (2011). _Multiple comparisons using R_. Boca Raton, FL: CRC Press. https://CRAN.R-project.org/package=multcomp * Singmann, H., & Klauer, K. C. (2011). Deductive and inductive conditional inferences: Two modes of reasoning. _Thinking & Reasoning_, 17(3), 247-281. doi: 10.1080/13546783.2011.572718 * Lenth, R. (2017). _emmeans: Estimated Marginal Means, aka Least-Squares Means_. R package version 0.9.1. https://CRAN.R-project.org/package=emmeans ```{r, include=FALSE} options(op) ``` afex/vignettes/assumptions_of_ANOVAs.Rmd0000644000176200001440000002644514665062342020054 0ustar liggesusers--- title: "Testing the Assumptions of ANOVAs" author: "Mattan S. Ben-Shachar" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{Testing the Assumptions of ANOVAs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("see", "performance", "ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} options(width = 90) knitr::opts_chunk$set(dpi=72) ``` ## Foreword by Henrik Singmann As all statistical models, ANOVAs have a number of assumptions that should hold for valid inferences. These assumptions are: 1. **Observations are i.i.d.:** i.i.d. stands for "independent and identically distributed". Independent means that, once the model is specified, the conditional observations (i.e., residuals) are independent of each other (i.e., knowing the value of one residual does not allow you to infer the value of any other residual). Identically distributed means that all observations are generated by the same data-generating process. 1. ***Homogeneity of Variances***: the variances across all the groups (cells) of between-subject effects are the same. 2. ***Sphericity***: For within-subjects effects, sphericity is the condition where the variances of the differences between all possible pairs of within-subject conditions (i.e., levels of the independent variable) are equal. This can be thought of as a within-subjects' version of the *Homogeneity of Variances* assumption. 3. ***Normality of residuals***: The errors used for the estimation of the error term(s) (*MSE*) are normally distributed. The most important assumption generally is the i.i.d. assumption (i.e., if it does not hold, the inferences are likely invalid), specifically the independent part. This assumption cannot be tested empirically but needs to hold on conceptual or logical grounds. For example, in an ideal completely between-subjects design each observation comes from a different participant that is randomly sampled from a population so we know that all observations are independent. Often, we collect multiple observations from the same participant in a within-subject or repeated-measures design. To ensure the i.i.d. assumption holds in this case, we need to specify an ANOVA with within-subject factors. However, if we have a data set with multiple sources of non-independence -- such as participants and items -- ANOVA models cannot be used but we have to use a mixed model. The other assumptions can be tested empirically, either graphically or using statistical assumption tests. However, there are different opinions on how useful statistical assumptions tests are when done in an automatic manner for each ANOVA. Whereas this is the position taken in some statistics books, this runs the risk of [reducing the statistical analysis to a "cookbook" or "flowchart"](https://stats.stackexchange.com/a/193695/442). Real life data analysis is often more complex than such simple rules. Therefore, it is often more productive to explore ones data using both descriptive statistics and graphical displays. This data exploration should allow one to judge whether the other ANOVA assumptions hold to a sufficient degree. For example, plotting ones ANOVA results using `afex_plot` and including a reasonable display of the individual data points often allows one to judge both the homogeneity of variance and the normality of the residuals assumption. Let us take a look at all three empirically testable assumptions in detail. ANOVAs are often robust to light violations to the homogeneity of variances assumption. If this assumption is clearly violated, we have learned something important about the data, namely variance heterogeneity, that requires further study. Some further statistical solutions are discussed below. If the main goal of an ANOVA is to see whether or not certain effects are significant, then the assumption of normality of the residuals is only required for small samples, thanks to the central limit theorem. As shown by Lumley et al. (2002), with sample sizes of a few hundred participants even extreme violations of the normality assumptions are unproblematic. So mild violations of this assumptions are usually no problem with sample sizes exceeding 30. Finally, the default `afex` behaviour is to correct for violations of sphericity using the Greenhouse-Geisser correction. Whereas this default may in some situation produce a small loss in statistical power, this seems preferable to a situation in which violations of sphericity are overlooked and tests become anti-conservative (i.e., more false positive results). Thus, my position as the `afex` developer is that an appropriate exploratory data analysis is often better than just blindly applying statistical assumption tests. Nevertheless, assumption tests are of course an important tool in the statistical toolbox and can be helpful in many situations. Thus, I am thankful to Mattan S. Ben-Shachar who has provided them for ANOVAs in `afex`. The following text provides his introduction to the assumption tests based on the [`performance`](https://cran.r-project.org/package=performance) and [`see`](https://cran.r-project.org/package=see) packages. ## Testing the Empirically Testable Assumptions `afex` comes with a set of built-in functions to help in the testing of the assumptions of ANOVA design. Generally speaking, the testable assumptions of ANOVA are^[There is also the assumptions that (a) the model is correctly specified and that (b) errors are independent, but there is no "hard" test for these assumptions.]: 1. ***Homogeneity of Variances***: the variances across all the groups (cells) of between-subject effects are the same. This can be tested with `performance::check_homogeneity()`. 2. ***Sphericity***: For within-subjects effects, sphericity is the condition where the variances of the differences between all possible pairs of within-subject conditions (i.e., levels of the independent variable) are equal. This can be thought of as a within-subjects' version of the *Homogeneity of Variances* assumption, and can be tested with `performance::check_sphericity()`. 3. ***Normality of residuals***: The errors used for the estimation of the error term(s) (*MSE*) are normally distributed. This can be inferred using `performance::check_normality()`. What follows is a brief review of these assumptions and their tests. ```{r, message=FALSE} library(afex) library(performance) # for assumption checks ``` ## Homogeneity of Variances This assumption, for between subject-designs, states that the within group errors all share a common variance around the group's mean. This can be tested with Levene's test: ```{r} data(obk.long, package = "afex") o1 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender")) check_homogeneity(o1) ``` These results indicate that homogeneity is not significantly violated. ### What to do when assumption is violated? ANOVAs are generally robust to "light" heteroscedasticity, but there are various other methods (not available in `afex`) for getting robust error estimates. Another alternative is to ditch this assumption altogether and use permutation tests (e.g. with [`permuco`](https://cran.r-project.org/package=permuco)) or bootstrapped estimates (e.g. with [`boot`](https://cran.r-project.org/package=boot)). ## Sphericity ```{r} data("fhch2010", package = "afex") a1 <- aov_ez("id", "log_rt", fhch2010, between = "task", within = c("density", "frequency", "length", "stimulus")) ``` We can use `check_sphericity()` to run Mauchly's test of sphericity: ```{r} check_sphericity(a1) ``` We can see that both the error terms of the `length:stimulus` and `task:length:stimulus` interactions significantly violate the assumption of sphericity at *p* = 0.021. Note that as `task` is a between-subjects factor, both these interaction terms share the same error term! ### What to do when assumption is violated? - For ANOVA tables, a correction to the degrees of freedom can be used - `afex` offers both the Greenhouse-Geisser (which is used by default) and the Hyunh-Feldt corrections. - For follow-up contrasts with `emmeans`, a multivariate model can be used, which does not assume sphericity (this is used by default since `afex` 1.0). Both can be set globally with: ```{r, eval = FALSE} afex_options( correction_aov = "GG", # or "HF" emmeans_model = "multivariate" ) ``` ## Normalicy of Residuals The normalicy of residuals assumption is concerned with the errors that make up the various error terms in the ANOVA. Although the Shapiro-Wilk test can be used to test for deviation from a normal distribution, [this test tends to have high type-I error rates](https://notstatschat.rbind.io/2019/02/09/what-have-i-got-against-the-shapiro-wilk-test/). Instead, one can visually inspect the residuals using quantile-quantile plots (AKA qq-plots). For example: ```{r} data("stroop", package = "afex") stroop1 <- subset(stroop, study == 1) stroop1 <- na.omit(stroop1) s1 <- aov_ez("pno", "rt", stroop1, within = c("condition", "congruency")) is_norm <- check_normality(s1) plot(is_norm) plot(is_norm, type = "qq") ``` If the residuals were normally distributed, we would see them falling close to the diagonal line, inside the 95% confidence bands around the qq-line. We can further de-trend the plot, and show not the expected quantile, but the deviation from the expected quantile, which may help reducing visual bias. ```{r} plot(is_norm, type = "qq", detrend = TRUE) ``` Wow! The deviation from normalicy is now visually much more pronounced! ### What to do when assumption is violated? As with the assumption of *homogeneity of variances*, we can resort to using permutation tests for ANOVA tables and bootstrap estimates / contrasts. Another popular solution is to apply a monotonic transformation to the dependent variable. This should not be done lightly, as it *changes* the interpretability of the results (from the observed scale to the transformed scale). Luckily for us, it is common to *log* transform reaction times, which we can easily do^[But note ANOVA no longer tests if any differences between the means is significantly different from 0, but if any ratio between the means is significantly different from 1.]: ```{r} s2 <- aov_ez("pno", "rt", stroop1, transformation = "log", within = c("condition", "congruency")) is_norm <- check_normality(s2) plot(is_norm, type = "qq", detrend = TRUE) ``` Success - after the transformation, the residuals (on the log scale) do not deviate more than expected from errors sampled from a normal distribution (are mostly contained in the 95%CI bands)! # References - Lumley, T., Diehr, P., Emerson, S., & Chen, L. (2002). The Importance of the Normality Assumption in Large Public Health Data Sets. *Annual Review of Public Health*, 23(1), 151–169. https://doi.org/10.1146/annurev.publhealth.23.100901.140546 afex/vignettes/introduction-mixed-models.pdf.asis0000644000176200001440000000030514665062374021757 0ustar liggesusers%\VignetteIndexEntry{An Introduction to Mixed Models for Experimental Psychology} %\VignetteEngine{R.rsp::asis} %\VignetteKeyword{PDF} %\VignetteKeyword{vignette} %\VignetteKeyword{package} afex/vignettes/afex_mixed_example.Rmd0000644000176200001440000007475414665062321017523 0ustar liggesusers--- title: "Mixed Model Reanalysis of RT data" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{Mixed Model Example Analysis: Reanalysis of Freeman et al. (2010)} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "multcomp", "dplyr", "tidyr","ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} op <- options(width = 90, dplyr.summarise.inform = FALSE) knitr::opts_chunk$set(dpi=72) ``` ```{r, echo=FALSE} load(system.file("extdata/", "output_mixed_vignette.rda", package = "afex")) ``` ## Overview This documents reanalysis response time data from an Experiment performed by Freeman, Heathcote, Chalmers, and Hockley (2010) using the mixed model functionality of __afex__ implemented in function `mixed` followed by post-hoc tests using package __emmeans__ (Lenth, 2017). After a brief description of the data set and research question, the code and results are presented. ## Description of Experiment and Data The data are lexical decision and word naming latencies for 300 words and 300 nonwords from 45 participants presented in Freeman et al. (2010). The 300 items in each `stimulus` condition were selected to form a balanced $2 \times 2$ design with factors neighborhood `density` (low versus high) and `frequency` (low versus high). The `task` was a between subjects factor: 25 participants worked on the lexical decision task and 20 participants on the naming task. After excluding erroneous responses each participants responded to between 135 and 150 words and between 124 and 150 nonwords. We analyzed log RTs which showed an approximately normal picture. ## Data and R Preparation We start with loading some packages we will need throughout this example. For data manipulation we will be using the `dplyr` and `tidyr` packages from the [`tidyverse`](https://www.tidyverse.org/). A thorough introduction to these packages is beyond this example, but well worth it, and can be found in ['R for Data Science'](https://r4ds.had.co.nz/) by Wickham and Grolemund. For plotting we will be using `ggplot2`, also part of the `tidyverse`. After loading the packages, we will load the data (which comes with `afex`), remove the errors, and take a look at the variables in the data. ```{r message=FALSE, warning=FALSE} library("afex") # needed for mixed() and attaches lme4 automatically. library("emmeans") # emmeans is needed for follow-up tests library("multcomp") # for advanced control for multiple testing/Type 1 errors. library("dplyr") # for working with data frames library("tidyr") # for transforming data frames from wide to long and the other way round. library("ggplot2") # for plots theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) data("fhch2010") # load fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors str(fhch2010) # structure of the data ``` To make sure our expectations about the data match the data we use some `dplyr` magic to confirm the number of participants per condition and items per participant. ```{r} ## are all participants in only one task? fhch %>% group_by(id) %>% summarise(task = n_distinct(task)) %>% as.data.frame() %>% {.$task == 1} %>% all() ## participants per condition: fhch %>% group_by(id) %>% summarise(task = first(task)) %>% ungroup() %>% group_by(task) %>% summarise(n = n()) ## number of different items per participant: fhch %>% group_by(id, stimulus) %>% summarise(items = n_distinct(item)) %>% ungroup() %>% group_by(stimulus) %>% summarise(min = min(items), max = max(items), mean = mean(items)) ``` Before running the analysis we should make sure that our dependent variable looks roughly normal. To compare `rt` with `log_rt` within the same figure we first need to transform the data from the wide format (where both rt types occupy one column each) into the long format (in which the two rt types are combined into a single column with an additional indicator column). To do so we use `tidyr::pivot_longer`. Then we simply call `ggplot` with `geom_histogram` and `facet_wrap(vars(rt_type))` on the new `tibble`. The plot shows that `log_rt` looks clearly more normal than `rt`, although not perfectly so. An interesting exercise could be to rerun the analysis below using a transformation that provides an even better 'normalization'. ```{r, fig.width=7, fig.height=4} fhch_long <- fhch %>% pivot_longer(cols = c(rt, log_rt), names_to = "rt_type", values_to = "rt") ggplot(fhch_long, aes(rt)) + geom_histogram(bins = 100) + facet_wrap(vars(rt_type), scales = "free_x") ``` ## Descriptive Analysis The main factors in the experiment were the between-subjects factor `task` (`naming` vs. `lexdec`), and the within-subjects factors `stimulus` (`word` vs. `nonword`), `density` (`low` vs. `high`), and `frequency` (`low` vs. `high`). Before running an analysis it is a good idea to visually inspect the data to gather some expectations regarding the results. Should the statistical results dramatically disagree with the expectations this suggests some type of error along the way (e.g., model misspecification) or at least encourages a thorough check to make sure everything is correct. We first begin by plotting the data aggregated by-participant. In each plot we plot the raw data in the background. To make the individual data points visible we use `ggbeeswarm::geom_quasirandom` and `alpha = 0.5` for semi-transparency. On top of this we add a (transparent) box plot as well as the mean and standard error. ```{r, fig.width=7, fig.height=6, message=FALSE, out.width="90%"} agg_p <- fhch %>% group_by(id, task, stimulus, density, frequency) %>% summarise(mean = mean(log_rt)) %>% ungroup() ggplot(agg_p, aes(x = interaction(density,frequency), y = mean)) + ggbeeswarm::geom_quasirandom(alpha = 0.5) + geom_boxplot(fill = "transparent") + stat_summary(colour = "red") + facet_grid(cols = vars(task), rows = vars(stimulus)) ``` Now we plot the same data but aggregated across items: ```{r, fig.width=7, fig.height=6, message=FALSE, out.width="90%"} agg_i <- fhch %>% group_by(item, task, stimulus, density, frequency) %>% summarise(mean = mean(log_rt)) %>% ungroup() ggplot(agg_i, aes(x = interaction(density,frequency), y = mean)) + ggbeeswarm::geom_quasirandom(alpha = 0.3) + geom_boxplot(fill = "transparent") + stat_summary(colour = "red") + facet_grid(cols = vars(task), rows = vars(stimulus)) ``` These two plots show a very similar pattern and suggest several things: * Responses to `nonwords` appear slower than responses to `words`, at least for the `naming` task. * `lexdec` responses appear to be slower than `naming` responses, particularly in the `word` condition. * In the `nonword` and `naming` condition we see a clear effect of `frequency` with slower responses to `high` than `low` `frequency` words. * In the `word` conditions the `frequency` pattern appears to be in the opposite direction to the pattern described in the previous point: faster responses to `low` `frequency` than to `high` `frequency` words. * `density` appears to have no effect, perhaps with the exception of the `nonword` `lexdec` condition. ## Model Setup To set up a mixed model it is important to identify which factors vary within which grouping factor generating random variability (i.e., grouping factors are sources of stochastic variability). The two grouping factors are participants (`id`) and items (`item`). The within-participant factors are `stimulus`, `density`, and `frequency`. The within-item factor is `task`. The 'maximal model' (Barr, Levy, Scheepers, and Tily, 2013) therefore is the model with by-participant random slopes for `stimulus`, `density`, and `frequency` and their interactions and by-item random slopes for `task`. It is rather common that a maximal model with a complicated random effect structure, such as the present one, does not converge successfully. The best indicator of this is a "singular fit" warning. A model with a singular fit warning should not be reported or used. Instead, one should make sure that qualitatively the same results are also observed with a model without singular fit warnings. If the maximal model that does not converge and a reduced model without a singular fit warning (i.e., the final model) diverge in their results, results should only be interpreted cautiously. In case of a singular fit or another indicator of a convergence problem, the usual first step is removing the correlations among the random terms. In our example, there are two sets of correlations, one for each random effect grouping variable. Consequently, we can build four model that have the maximal structure in terms of random-slopes and only differ in which correlations among random terms are calculated: 1. With all correlations. 2. No correlation among by-item random effects (i.e., no correlation between random intercept and `task` random slope). 3. No correlation among by-participant random effect terms (i.e., no correlation among random slopes themselves and between the random slopes and the random intercept). 4. No correlation among either random grouping factor. The next decision to be made is which method to use for obtaining $p$-values. The best control against anti-conservative results is provided by `method = "KR"` (=Kenward-Roger). However, `KR` needs quite a lot of RAM, especially with complicated random effect structures and large data sets. In this case we have both, relatively large data (i.e., many levels on each random effect, especially the item random effect) and a complicated random effect structure. Consequently, it seems a reasonable decision to choose another method. The second 'best' method (in terms of controlling for Type I errors) is the 'Satterthwaite' approximation, `method = 'S'`. It provides a similar control of Type I errors as the Kenward-Roger approximation and needs less RAM. The Satterthwaite method is currently also the default method for calculating $p$-values so does not need to be set explicitly. ## Finding the Final Model The following code fits the four models using the Satterthwaite method. To suppress random effects we use the `||` notation. Note that it is necessary to set `expand_re = TRUE` when suppressing random effects among variables that are entered as factors and not as numerical variables (all independent variables in the present case are factors). Also note that `mixed` automatically uses appropriate contrast coding if factors are included in interactions (`contr.sum`) in contrast to the `R` default (which is `contr.treatment`). To make sure the estimation does not end prematurely we set the allowed number of function evaluations to a very high value (using `lmerControl`). However, because fitting the models in R might take quite a while, you should also be able to load the fitted binary files them from [this url](https://raw.githubusercontent.com/singmann/afex/master/development/freeman_models.rda) and then load them in R with `load("freeman_models.rda")`. ```{r, eval = FALSE} m1s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency|id)+ (task|item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6))) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval = FALSE} m2s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency|id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval = FALSE} m3s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency||id)+ (task|item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval = FALSE} m4s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` We can see that fitting each of these models emits the "singular fit" message (it is technically a `message` and not a `warning`) indicating that the model is over-parameterized and did not converge successfully. In particular, this message indicates that the model is specified with more random effect parameters than can be estimated given the current data. It is instructive to see that even with a comparatively large number of observations, 12960, a set of seven random slopes for the by-participant term and one random slope for the by-item term cannot be estimated successfully. And this holds even after removing all correlations. Thus, it should not be surprising that similar sized models regularly do not converge with smaller numbers of observations. Furthermore, we are here in the fortunate situation that each factor has only two levels. A factor with more levels corresponds to more parameters of the random effect terms. Before deciding what to do next, we take a look at the estimated random effect estimates. We do so for the model without any correlations. Note that for `afex` models we usually do not want to use the `summary` method as it prints the results on the level of the model coefficients and not model terms. But for the random effects we have to do so. However, we are only interested in the random effect terms so we only print those using `summary(model)$varcor`. ```{r, eval=FALSE} summary(m4s)$varcor ``` ```{r, echo=FALSE} cat(outp_m4s_vc$output, sep = "\n") ``` The output shows that the estimated SDs of the random slopes of the two-way interactions are all zero. However, because we cannot remove the random slopes for the two way interaction while retaining the three-way interaction, we start by removing the three-way interaction first. ```{r, eval=FALSE} m5s <- mixed(log_rt ~ task*stimulus*density*frequency + ((stimulus+density+frequency)^2||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval=FALSE} summary(m5s)$varcor ``` ```{r, echo=FALSE} cat(outp_m5s_vc$output, sep = "\n") ``` Not too surprisingly, this model also produces a singular fit. Inspection of the estimates shows that the two-way interaction of the slopes are still estimated to be zero. So we remove those in the next step. ```{r, eval=FALSE} m6s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+density+frequency||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` This model still shows a singular fit warning. The random effect estimates below show a potential culprit. ```{r, eval=FALSE} summary(m6s)$varcor ``` ```{r, echo=FALSE} cat(outp_m6s_vc$output, sep = "\n") ``` As in `m4s` above, the random effect SD for the density term is estimated to be zero. Thus, we remove this as well in the next step. ```{r, eval=FALSE} m7s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` This model finally does not emit a singular fit warning. Is this our final model? Before deciding on this, we see whether we can add the correlation terms again without running into any problems. We begin by adding the correlation to the by-participant term. ```{r, eval=FALSE} m8s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency|id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} warning(fit_m8s$warnings, call. = FALSE) ``` This model does not show a singular fit message but emits another warning. Specifically, a warning that the absolute maximal gradient at the final solution is too high. This warning is not necessarily critical (i.e., it can be a false positive), but can also indicate serious problems. Consequently, we try adding the correlation between the by-item random terms instead: ```{r, eval=FALSE} m9s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task|item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` This model also does not show any warnings. Thus, we have arrived at the end of the model selection process. ## Results of Maximal and Final Model We now have the following two relevant models. - `m1s`: The maximal random effect structure justified by the design (i.e., the maximal model) - `m9s`: The final model Robust results are those that hold regardless across maximal and final (i.e., reduced) model. Therefore, let us compare the pattern of significant and non-significant effects. ```{r, eval=FALSE} left_join(nice(m1s), nice(m9s), by = "Effect", suffix = c("_full", "_final")) ``` ```{r, echo=FALSE} cat(outp_comb_anova$output, sep = "\n") ``` What this shows is that the pattern of significant and non-significant effect is the same for both models. The only significant effect for which the evidence is not that strong is the 3-way interaction between `stimulus:density:frequency`. It is only just below .05 for the full model and has a somewhat lower value for the final model. We can also see that one of the most noticeable differences between the maximal and the final model is the number of denominator degrees of freedom. This is highly influenced by the random effect structure and thus considerable larger in the final (i.e., reduced) model. The difference in the other statistics is lower. ## LRT Results It is instructive to compare those results with results obtained using the comparatively 'worst' method for obtaining $p$-values implemented in `afex::mixed`, likelihood ratio tests. Likelihood ratio-tests should in principle deliver reasonable results for large data sets. A common rule of thumb is that the number of levels for each random effect grouping factor needs to be large, say above 50. Here, we have a very large number of items (600), but not that many participants (45). Thus, qualitative results should be the very similar, but it still is interesting to see exactly what happens. We therefore fit the final model using `method='LRT'`. ```{r, eval = FALSE} m9lrt <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task|item), fhch, method = "LRT", control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) m9lrt ``` ```{r, echo=FALSE} cat(outp_m9lrt$output, sep = "\n") ``` The results in this case match the results of the Satterthwaite method. With lower numbers of levels of the grouping factor (e.g., less participants) this would not necessarily be expected. ## Summary of Results Fortunately, the results from all models converged on the same pattern of significant and non-significant effects providing a high degree of confidence in the results. This might not be too surprising given the comparatively large number of total data points and the fact that each random effect grouping factor has a considerable number of levels (above 30 for both participants and items). In the following we focus on the final model using the Satterthwaite method, `m9s`. In terms of the significant findings, there are many that seem to be in line with the descriptive results described above. For example, the highly significant effect of `task:stimulus:frequency` with $F(1, 578.91) = 124.16$, $p < .001$, appears to be in line with the observation that the frequency effect appears to change its sign depending on the `task:stimulus` cell (with `nonword` and `naming` showing the opposite patterns than the other three conditions). Consequently, we start by investigating this interaction further below. ## Follow-Up Analyses Before investigating the significant interaction in detail it is a good idea to remind oneself what a significant interaction represents on a conceptual level; that one or multiple of the variables in the interaction moderate (i.e., affect) the effect of the other variable or variables. Consequently, there are several ways to investigate a significant interaction. Each of the involved variables can be seen as the moderating variables and each of the variables can be seen as the effect of interest. Which one of those possible interpretations is of interest in a given situation highly depends on the actual data and research question and multiple views can be 'correct' in a given situation. In addition to this conceptual issue, there are also multiple technical ways to investigate a significant interaction. One approach not followed here is to split the data into subsets according to the moderating variables and compute the statistical model again for the subsets with the effect variable(s) as remaining fixed effect. This approach, also called _simple effects_ analysis, is, for example, recommended by Maxwell and Delaney (2004) as it does not assume variance homogeneity and is faithful to the data at each level. The approach taken here is to simply perform the test on the estimated final model. This approach assumes variance homogeneity (i.e., that the variances in all groups are homogeneous) and has the added benefit that it is computationally relatively simple. In addition, it can all be achieved using the framework provided by [`emmeans`](https://cran.r-project.org/package=emmeans) (Lenth, 2017). ### task:stimulus:frequency Interaction Our interest in the beginning is on the effect of `frequency` by `task:stimulus` combination. So let us first look at the estimated marginal means of this effect. In `emmeans` parlance these estimated means are called 'least-square means' because of historical reasons, but because of the lack of least-square estimation in mixed models we prefer the term estimated marginal means, or EMMs for short. Those can be obtained in the following way. To prevent `emmeans` from calculating the *df* for the EMMs (which can be quite costly), we use asymptotic *df*s (i.e., $z$ values and tests). `emmeans` requires to first specify the variable(s) one wants to treat as the effect variable(s) (here `frequency`) and then allows to specify condition variables. ```{r, eval=FALSE} emm_options(lmer.df = "asymptotic") # also possible: 'satterthwaite', 'kenward-roger' emm_i1 <- emmeans(m9s, "frequency", by = c("stimulus", "task")) emm_i1 ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_o1$output, sep = "\n") ``` The returned values are in line with our observation that the `nonword` and `naming` condition diverges from the other three. But is there actual evidence that the effect flips? We can test this using additional `emmeans` functionality. Specifically, we first use the `pairs` function which provides us with a pairwise test of the effect of `frequency` in each `task:stimulus` combination. Then we need to combine the four tests within one object to obtain a family-wise error rate correction which we do via `update(..., by = NULL)` (i.e., we revert the effect of the `by` statement from the earlier `emmeans` call) and finally we select the `holm` method for controlling for family wise error rate (the Holm method is uniformly more powerful than the Bonferroni). ```{r, eval=FALSE} update(pairs(emm_i1), by = NULL, adjust = "holm") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_o2$output, sep = "\n") ``` We could also use a slightly more powerful method than the Holm method, method `free` from package `multcomp`. This method takes the correlation of the model parameters into account. However, results do not differ much here: ```{r, eval=FALSE} summary(as.glht(update(pairs(emm_i1), by = NULL)), test = adjusted("free")) ``` ```{r, echo=FALSE} cat(emm_o3$output, sep = "\n") ``` We see that the results are exactly as expected. In the `nonword` and `naming` condition we have a clear negative effect of frequency while in the other three conditions it is clearly positive. We could now also use `emmeans` and re-transform the estimates back onto the original RT response scale. For this, we can again `update` the `emmeans` object by using `tran = "log"` to specify the transformation and then indicating we want the means on the response scale with `type = "response"`. These values might be used for plotting. ```{r, eval=FALSE} emm_i1b <- update(emm_i1, tran = "log", type = "response", by = NULL) emm_i1b ``` ```{r, echo=FALSE} cat(emm_o4$output, sep = "\n") ``` A more direct approach for plotting the interaction is via `afex_plot`. For a plot that is not too busy it makes sense to specify across which grouping factor the individual level data should be aggregated. We use the participant variable `"id"` here. We also use `ggbeeswarm::geom_quasirandom` as the geom for the data in the background following the example in [the `afex_plot` vignette](afex_plot_introduction.html). ```{r, echo=FALSE} load(system.file("extdata/", "output_afex_plot_mixed_vignette_model.rda", package = "afex")) emm_options(lmer.df = "asymptotic") ``` ```{r, eval=TRUE, fig.width=5, fig.height=4, out.width="90%"} afex_plot(m9s, "frequency", "stimulus", "task", id = "id", data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.1, color = "darkgrey")) ``` ### task:stimulus:density:frequency Interaction As the last example, let us take a look at the significant four-way interaction of `task:stimulus:density:frequency`, $F(1, 578.77) = 11.72$, $p < .001$. Here we might be interested in a slightly more difficult question namely whether the `density:frequency` interaction varies across `task:stimulus` conditions. If we again look at the figures above, it appears that there is a difference between `low:low` and `high:low` in the `nonword` and `lexdec` condition, but not in the other conditions. Looking at the 2-way interaction of `density:frequency` by the `task:stimulus` interaction can be done using `emmeans` using the `joint_test` function. We simply need to specify the appropriate `by` variables and get conditional tests this way. ```{r, eval=FALSE} joint_tests(m9s, by = c("stimulus", "task")) ``` ```{r, echo=FALSE} cat(emm_o5$output, sep = "\n") ``` This test indeed shows that the `density:frequency` interaction is only significant in the `nonword` and `lexdec` condition. Next, let's see if we can unpack this interaction in a meaningful manner. For this we compare `low:low` and `high:low` in each of the four groups. And just for the sake of making the example more complex, we also compare `low:high` and `high:high`. To do so, we first need to setup a new set of EMMs. Specifically, we get the EMMs of the two variables of interest, density and frequency, using the same `by` specification as the `joint_test` call. We can then setup custom contrasts that tests our hypotheses. ```{r, eval=FALSE} emm_i2 <- emmeans(m2s, c("density", "frequency"), by = c("stimulus", "task")) emm_i2 ``` ```{r, echo=FALSE} cat(emm_o6$output, sep = "\n") ``` These contrasts can be specified via a list of custom contrasts on the EMMs (or reference grid in `emmeans` parlance) which can be passed to the `contrast` function. The contrasts are a `list` where each element should sum to one (i.e., be a proper contrast) and be of length equal to the number of EMMs (although we have 16 EMMs in total, we only need to specify it for a length of four due to conditioning by `c("stimulus", "task")`). To control for the family wise error rate across all tests, we again use `update(..., by = NULL)` on the result to revert the effect of the conditioning. ```{r, eval=FALSE} # desired contrats: des_c <- list( ll_hl = c(1, -1, 0, 0), lh_hh = c(0, 0, 1, -1) ) update(contrast(emm_i2, des_c), by = NULL, adjust = "holm") ``` ```{r, echo=FALSE} cat(emm_o7$output, sep = "\n") ``` In contrast to our expectation, the results show two significant effects and not only one. In line with our expectations, in the `nonword` and `lexdec` condition the EMM of `low:low` is smaller than the EMM for `high:low`, $z = -5.63$, $p < .0001$. However, in the `nonword` and `naming` condition we found the opposite pattern; the EMM of `low:low` is larger than the EMM for `high:low`, $z = 3.53$, $p = .003$. For all other effects $|z| < 1.4$, $p > .98$. In addition, there is no difference between `low:high` and `high:high` in any condition. ## References * Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. _Journal of Memory and Language_, 68(3), 255-278. https://doi.org/10.1016/j.jml.2012.11.001 * Bretz, F., Hothorn, T., & Westfall, P. H. (2011). _Multiple comparisons using R_. Boca Raton, FL: CRC Press. https://CRAN.R-project.org/package=multcomp * Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. _Journal of Memory and Language_, 62(1), 1-18. https://doi.org/10.1016/j.jml.2009.09.004 * Lenth, R. (2017). _emmeans: Estimated Marginal Means, aka Least-Squares Means_. R package version 0.9.1. https://CRAN.R-project.org/package=emmeans * Maxwell, S. E., & Delaney, H. D. (2004). _Designing experiments and analyzing data: a model-comparisons perspective_. Mahwah, N.J.: Lawrence Erlbaum Associates. ```{r, include=FALSE} options(op) ``` afex/vignettes/afex_plot_introduction.Rmd0000644000176200001440000007057014665062330020451 0ustar liggesusers--- title: "afex_plot: Publication Ready Plots for Experimental Designs" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{afex_plot: Publication Ready Plots for Experimental Designs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "ggplot2", "cowplot", "ggbeeswarm", "ggpol") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} op <- options(width = 90) knitr::opts_chunk$set(dpi=72) ``` `afex_plot()` visualizes results from factorial experiments combining estimated marginal means and uncertainties associated with the estimated means in the foreground with a depiction of the raw data in the background. Currently, `afex_plot()` supports the following models: - ANOVAs estimated with `aov_car()`, `aov_ez()`, or `aov_4()` (i.e., objects of class `"afex_aov"`) - Linear mixed models estimated with `mixed()` (i.e., objects of class `"mixed"`) - Linear mixed models estimated with `lme4::lmer` (i.e., objects of class `"merMod"`) - Models with `emmeans` support. For some examples see `vignette("afex_plot_supported_models", package = "afex")` This document provides an overview of the plots possible with `afex_plot()`. It does so mostly using the `afex_plot()` examples, see `?afex_plot`. We begin by loading `afex` and [`ggplot2`](https://ggplot2.tidyverse.org/) which is the package `afex_plot()` uses for plotting. Loading `ggplot2` explicitly is not strictly necessary, but makes the following code nicer. Otherwise, we would need to prepend each call to a function from `ggplot2` needed for customization with `ggplot2::` (as is done in the examples in `?afex_plot`). We also load the [`cowplot`](https://cran.r-project.org/package=cowplot) package ([introduction](https://cran.r-project.org/package=cowplot/vignettes/introduction.html)) which makes combining plots (with functions `plot_grid()` and `legend()`) very easy. However, loading `cowplot` sets a different theme for `ggplot2` plots than the default grey one. Although I am not a big fan of the default theme with its grey background, we reset the theme globally using `theme_set(theme_grey())` to start with the default behavior if `cowplot` is not attached. Note that `cowplot` also has the cool `draw_plot()` function which allows embedding plots within other plots. We furthermore will need the following packages, however, we will not attach them directly, but only call a few selected functions using the `package::function` notation. - [`jtools`](https://cran.r-project.org/package=jtools) for `theme_apa()` - [`ggpubr`](https://cran.r-project.org/package=jtools) for `theme_pubr()` - [`ggbeeswarm`](https://cran.r-project.org/package=ggbeeswarm) for producing bee swarm plots with `geom_beeswarm` - [`ggpol`](https://cran.r-project.org/package=ggpol) for producing combined box plots and jitter plots using `geom_boxjitter` ```{r message=FALSE, warning=FALSE} library("afex") library("ggplot2") library("cowplot") theme_set(theme_grey()) ``` # Two-Way Within-Subjects ANOVA We begin with a two-way within-subjects ANOVA using synthetic data from Maxwell and Delaney (2004, p. 547). The data are hypothetical reaction times from a 2 x 3 Perceptual Experiment with factors `angle` with 3 levels and factor `noise` with 2 levels (see `?md_12.1` for a longer description). We first load the data and then fit the corresponding ANOVA. ```{r} data(md_12.1) (aw <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"))) ``` The ANOVA shows that both, the two main effect as well as the interaction, are significant. We therefore inspect the pattern underlying the interaction. There exist two different ways of plotting a 2-way interaction. Either of the two variables can be depicted on the x-axis. And before having looked at both cases, it is often not clear which visualization of the interaction is more instructive. Consequently, we plot both next to each other. For this we simply need to exchange which variable is the `x` factor and which is the `trace` factor. We then use `plot_grid()` to plot them next to each other. ## Basic Plot ```{r fig.width=9, fig.height=4} p_an <- afex_plot(aw, x = "angle", trace = "noise") p_na <- afex_plot(aw, x = "noise", trace = "angle") plot_grid(p_an, p_na) ## try adding: labels = "AUTO" ``` Before we can even take a look at the plot, we notice that creating the plots has produced two warnings. These warnings complain that the plots depict within-subject factors, but do not use within-subject error bars. However, the warnings also tell us the solution (i.e., adding `error = "within"`), which we will do in the following. The help page `?afex_plot` contains more information on which type of error bars are appropriate in which situation and how to interpret different type of error bars. For ANOVAs, `afex_plot()` will emit warnings if it thinks the error bars are not appropriate for the chosen factors. Comparing both plots, my impression is that the plot with `angle` on the `x`-axis tells the clearer story. We can see that when `noise` is `absent` there is hardly any effect of the increase of `angle`. However, if `noise` is `present` an increasing `angle` clearly leads to increased RTs. We therefore use this plot in the following. ## Exploring Graphical Options and Themes We now produce a new variant of the left plot using more appropriate error bars and change several other graphical details which make the plot publication ready. We use the `factor_levels` argument to `afex_plot()` for renaming the factor levels (for technical reasons the ANOVA functions in `afex` transform all factor levels to proper `R` variable names using `make.names()` which changed the labels from e.g., `4` to `X4`) and the `legend_title` argument for changing the title of the legend. We also change the labels on the `x` and `y` axis. ```{r} p_an <- afex_plot(aw, x = "angle", trace = "noise", error = "within", factor_levels = list(angle = c("0°", "4°", "8°"), noise = c("Absent", "Present")), legend_title = "Noise") + labs(y = "RTs (in ms)", x = "Angle (in degrees)") ``` As the additional output shows, changing the factor levels via `factor_levels` emits a `message` detailing old and new factor levels in the form `old -> new`. This message can be suppressed by wrapping the `afex_plot()` call into a `suppressMessages()` call or via `RMarkdown` settings. Note that we could have also used the `factor_levels` argument for changing the order of the factor levels by passing a named character vector (e.g., `factor_levels = list(angle = c(X8 = "8°", X4 = "4°", X0 = "0°"))`). This would change the order either on the x-axis or in the legend. As said above, I am not a big fan of the default grey theme of `ggplot2` plots. Consequently, we compare a number of different themes for this plot in the following. For all but `ggpubr::theme_pubr()`, we also move the legend to the bottom as this better allows the plot to cover only a single column in a two-column layout. `ggpubr::theme_pubr()` automatically plots the legend on top. ```{r fig.width=8.5, fig.height=6, dpi = 150} plot_grid( p_an + theme_bw() + theme(legend.position="bottom"), p_an + theme_light() + theme(legend.position="bottom"), p_an + theme_minimal() + theme(legend.position="bottom"), p_an + jtools::theme_nice() + theme(legend.position="bottom"), p_an + ggpubr::theme_pubr(), p_an + theme_cowplot() + theme(legend.position="bottom"), labels = "AUTO" ) ``` The first row, panels A to C, shows themes coming with `ggplot2` and the second row, panels D to F, shows themes from additional packages. In my opinion all of these plots are an improvement above the default grey theme. For the themes coming with `ggplot2`, I really like that those shown here have a reference grid in the background. This often makes it easier to judge the actual values the shown data points have. I know that many people find this distracting, so many of the contributed themes do not have this grid. One thing I really like about the last two themes is that they per default use larger font sizes for the axes labels. One way to achieve something similar for most themes is to change `base_size` (see example below). One general criticism I have with the current plots is that they show too many values on the y-axis. In the following I plot one more variant of this plot in which we change this to three values on the y-axis. We also increase the axes labels and remove the vertical grid lines. ```{r fig.width=3.5, fig.height=3, dpi = 100, out.width='50%'} p_an + scale_y_continuous(breaks=seq(400, 900, length.out = 3)) + theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank()) ``` We can also set this theme for the remainder of the `R` session with `theme_set()`. ```{r} theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) ``` ## Saving Plots and Plot Sizes To get our plot into a publication, we need to export it as a graphics file. I would generally advise against exporting plots via the `RStudio` interface as this is not reproducible. Instead I would use some of the following functions which save the document in the current working directory. Note that following [Elsevier guidelines](https://www.elsevier.com/about/policies-and-standards/author/artwork-and-media-instructions/artwork-sizing), a single column figure should have a width of 9 cm (~ 3 inch) and a two column figure should have a width of 19 cm (~ 7.5 inch). For Word or similar documents I would export the plot as a `png` (never `jpg`): ```{r, eval=FALSE} ggsave("my_plot.png", device = "png", width = 9, height = 8, units = "cm", dpi = 600) ## the larger the dpi, the better the resolution ``` For `LaTeX` I would export as `pdf`: ```{r, eval=FALSE} ggsave("my_plot.pdf", device = "pdf", width = 9, height = 8, units = "cm") ``` ## Data in the Background `afex_plot()` per default plots the raw data in the background. It does so using an [alpha blending](https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending) of `0.5`. Thus, overlapping points appear darker. Examples of this can be seen in the previous graphs where some data points in the background appear clearly darker than others. The darker points indicate values for which several data points lie exactly on top of each other. `afex_plot()` provides the possibility to change or alter the graphical primitive, called `geom` in `ggplot2` parlance, used for plotting the points in the background. This offers a vast array of options for handling overlapping points or, more generally, how to display the raw data in the background. Let's take a look at some of these examples in the following. ### Single Geom The simplest way for showing the data in the background is using a single geom, like in the default setting. The following figure shows eight different variants of a single geom. The plot in the top left shows the default variant. The first alternative variant adds vertical jitter to the points to make the overplotting clearer. The other alternatives use other geoms. Note that depending on the specific variant we change a few further plot options to obtain a visually pleasing result. For example, the `dodge` argument controls the spread of points belonging to different levels of the `trace` factor at each x-axis position. 1. Default background geom. 1. Add jitter on the y-axis to points which avoids perfect overlap. 3. Size of points show number of data points at a given y-axis position: `geom_count`. For this geom, adding a call to `scale_size_area()` can sometimes be beneficial. 3. Violin plot: `geom_violin` 4. Box plot: `geom_boxplot`. Note that for this plot we have added `linetype = 1` to `data_arg`, which avoids that the outline of the box plots is affected by the `linetype` mapping (compare this with the violin plot where the outline of the violin differs across levels of the angle factor). 2. Display points using a bee swarm plot, which displaces overlapping points on the x-axis: `ggbeeswarm::geom_beeswarm` 2. Display points using a variant of the bee swarm plot in which points are jittered horizontally to show the shape of the distribution in the same way as the violin plot: `ggbeeswarm::geom_quasirandom` 5. Combine box plot with jittered points: `ggpol::geom_boxjitter` ```{r fig.width=8.5, fig.height=16, dpi = 125} p0 <- afex_plot(aw, x = "noise", trace = "angle", error = "within") p1 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 25, dodge.width = 0.3 ## needs to be same as dodge ))) p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = geom_count) p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = geom_violin, data_arg = list(width = 0.5)) p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = geom_boxplot, data_arg = list(width = 0.3, linetype = 1)) p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) p6 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.05 ## choose small value so data points are not overlapping )) p7 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0)) plot_grid(p0, p1, p2, p3, p4, p5, p6, p7, ncol = 2, labels = 1:8) ``` ### Multiple Geoms We can also use multiple geoms to plot the data in the background. To do so, we need to pass a list of geoms to `data_geom`. We can then also set by-geom additional arguments by passing a list of arguments to `data_arg`. For example, we can combine a violin plot, drawing the outline of the shape of the distribution, with `geom_quasirandom`, showing each individual data point in the same shape. ```{r fig.width=3.5, fig.height=3, dpi = 100, out.width='50%'} afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = list( geom_violin, ggbeeswarm::geom_quasirandom ), data_arg = list( list(draw_quantiles = c(0.25, 0.5, 0.75)), list(dodge.width = 0.5, width = 0.05) )) ``` ## Adding Color to Plots So far, all plots were shown in black and white only. However, it is easy to include color. We do so for some of the plots from above. To achieve this, we have to change the value of the `mapping` argument. ```{r fig.width=8.5, fig.height=8, dpi = 125} p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, mapping = c("shape", "color"), data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("linetype", "shape", "fill"), data_geom = ggplot2::geom_violin, data_arg = list(width = 0.5)) p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("shape", "fill"), data_geom = ggplot2::geom_boxplot, data_arg = list(width = 0.3)) p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, mapping = c("shape", "fill"), data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), line_arg = list(linetype = 0), error_arg = list(linewidth = 1.5, width = 0)) plot_grid(p2, p3, p4, p5, ncol = 2) ``` ## Plotting Order and Error Bars For graphical elements in the foreground, `afex_plot()` first plots all graphical elements belonging to the same factor level before plotting graphical elements belonging to different factor levels. This provides a consistent graphical impression for each factor level that is particularly relevant in case color is mapped. In case we have overlapping lines and error bars or use thick lines, we sometimes do not want that the error bars also receive different line types. In this case, we can simply pass `linetype = 1` to `error_arg` to overwrite the corresponding mapping. This is shown in the right plot. ```{r fig.width=8.5, fig.height=4, dpi = 150} p1 <- afex_plot(aw, x = "noise", trace = "angle", mapping = c("color"), error = "within", point_arg = list(size = 5), line_arg = list(size = 2), error_arg = list(linewidth = 2)) p2 <- afex_plot(aw, x = "noise", trace = "angle", mapping = c("color", "shape", "linetype"), error = "within", point_arg = list(size = 5), line_arg = list(size = 2), error_arg = list(linewidth = 2, width = 0, linetype = 1)) plot_grid(p1, p2, ncol = 2) ``` ## One-way Plots Without Trace Factor If `afex_plot()` is called without a trace factor, a one-way plot is created. We can customize this plot in very much the same way. Per default a one-way plot contains a legend if `mapping` is not empty (i.e., `""`). We show this legend for the left plot, but suppress it for the right one via `theme(legend.position="none")`. ```{r fig.width=7, fig.height=3.5, message=FALSE} po1 <- afex_plot(aw, x = "angle", mapping = "color", error = "within", point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) po2 <- afex_plot(aw, x = "angle", error = "within", data_geom = ggpol::geom_boxjitter, mapping = "fill", data_alpha = 0.7, data_arg = list( width = 0.6, jitter.params = list(width = 0.05, height = 10), outlier.intersect = TRUE ), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) + theme(legend.position="none") plot_grid(po1, po2) ``` One-way plots can also be split across different panels by specifying a `panel` factor: ```{r fig.width=7, fig.height=3.5, message=FALSE} afex_plot(aw, x = "angle", panel = "noise", error = "within", data_geom = ggpol::geom_boxjitter, mapping = "fill", data_alpha = 0.7, data_arg = list( width = 0.6, jitter.params = list(width = 0.05, height = 10), outlier.intersect = TRUE ), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) + theme(legend.position="none") ``` Sometimes we still want to add a line connecting the estimated marginal means. As `afex_plot()` returns a `ggplot2` object, we can do this easily by adding a `geom_line` object to the call. As we want to add a line through all of the shown points in the foreground, we need to add the corresponding groups aesthetics to this call: `geom_line(aes(group = 1))`. We can add further arguments to this call, as shown in the left panel below. ```{r fig.width=7, fig.height=3.5, message=FALSE} plot_grid( po1 + geom_line(aes(group = 1), color = "darkgrey", size = 1.5), po2 + geom_line(aes(group = 1)) ) ``` # 3-Way Mixed Model ## Data and Model ```{r, echo=FALSE} load(system.file("extdata/", "output_afex_plot_mixed_vignette_model.rda", package = "afex")) ``` To exemplify the support for linear mixed models, we will use the data from Freeman and colleagues also discussed in the [mixed model vignette](https://cran.r-project.org/package=afex/vignettes/afex_mixed_example.html). These data are lexical decision and word naming latencies for 300 words and 300 nonwords from 45 participants presented in Freeman et al. (2010). The dependent variable we are interested in is `log` RTs. We look at the same model also discussed in the vignette, with factors `task` (between participants, but within items), `stimulus` (within participants, but between items), `density` (within participants, but between items), and `frequency` (within participants, but between items), for a total of almost 13,000 observations. We fit the model with crossed-random effects for participants (`id`) and `item`s using the final model, `m9s`, as discussed in the mixed model vignette. ```{r, eval=FALSE} data("fhch2010") # load fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors m9s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task|item), fhch, method = "S", control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` Note that going forward, we disable calculation of degrees of freedom for `emmeans` as this speeds up computation and/or avoids messages we are currently not interested in. ```{r} emmeans::emm_options(lmer.df = "asymptotic") ``` The ANOVA table of the mixed model indicates that the three-way interaction `task:stimulus:frequency` is significant on which we focus in the following. ```{r, eval=TRUE} m9s ``` ## Which Data to Plot in the Background For mixed models, one important decision is the random-effects grouping factor(s) based on which the raw data plotted in the background is aggregated. This decision is necessary, because without such a factor, there would only be one observation for each cell of the design (unless the full design is considered). In the default setting, with `id` missing, the combination of all random-effects grouping factors is used. ```{r fig.width=7, fig.height=3.5, eval=TRUE} afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task") ``` In the present case, a message informs us that the data is aggregated over both random-effects grouping factors. However, this leads to way too many data points in the background. Let us compare this plot with plots in which we use each of the two random-effects grouping factors in turn. ```{r fig.width=7, fig.height=3.5, eval=TRUE} plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "id"), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item"), labels = c("ID", "Item") ) ``` The by-id plot looks usable. However, the by-item plot has still way too many data-points to be informative. Some other ways of displaying the raw data, such as violin plots or box plots, seems preferable for it. ## Ways of Plotting Data in the Background We compare violin plots or box plots for the by-item data in the next plot. For the box plot, we increase the width of the error bars and use a consistent line type to distinguish them more easily from the graphical elements of the box plot. We could probably further improve these plots by, for example, adding colors or using some of the other customizations discussed above for the ANOVA example. ```{r fig.width=7, fig.height=3.5, eval=TRUE} plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, data_geom = geom_violin, data_arg = list(width = 0.5)), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, data_geom = geom_boxplot, data_arg = list(width = 0.5), error_arg = list(linewidth = 1.5, width = 0, linetype = 1)) ) ``` ## Error Bars for Mixed Models The default error bars for `afex_plot()` are based on the statistical model (i.e., the mixed model in the present case). These error bars can only be used to judge whether or not two means differ from each other, if the corresponding factor (or factors) are independent samples factors (i.e., not repeated-measures factors for any of the random-effects grouping factors). Of course, in addition to this the requirement of approximately equal sample size and variance also needs to hold. In the present case, all of the factors are repeated-measures factors with respect to one of the random-effects grouping factors. Consequently, the default error bars cannot be used for "inference by eye" for any of the factors. This is also easy to see when looking at all pairwise comparisons between means for each of the panels/tasks. This shows that for the `naming` task all comparisons are significant. In visual contrast with that, the two error bars for the `low` versus `high` `word`s are overlapping very strongly. ```{r, eval=FALSE} pairs(emmeans::emmeans(mrt, c("stimulus", "frequency"), by = "task")) ``` ```{r, echo=FALSE} cat(aout_2$output, sep = "\n") ``` An alternative in the present situation would be using within-subjects error bars and aggregating the data by-id (i.e., `error = "within"`), as done in the left panel below. This is somewhat appropriate here as the factors within each panel are all within-subject factors. In contrast, using by-item within-subjects error bars, as done in the right panel below, seems not appropriate as the only within-item factor, `task`, is spread across panels. Unfortunately, it is not immediately clear if these error bars allow one to correctly detect which means do not differ from each other. ```{r fig.width=7, fig.height=3.5, eval=FALSE} plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "id", error = "within"), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, error = "within", data_geom = geom_violin, data_arg = list(width = 0.5)) ) ``` In sum, using error bars for performing "inference by eye" - that is, using overlap or non-overlap of error bars to judge which means differ or do not differ from each other - is highly problematic for mixed models, due to the potentially complex dependency structures between the means. It would be best to avoid comparisons between means altogether. Instead, it is perhaps a good idea to plot the model-based error bars (which is the default) and use them for their intended purpose; judging which values of the estimated means are likely given what we have learned from the model (however, note that one cannot interpret a 95% confidence interval as having a 95% probability of containing the population mean). The help page `?afex_plot` contains further information and references on how to interpret confidence intervals and other error bars. # References * Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. _Journal of Memory and Language_, 62(1), 1-18. https://doi.org/10.1016/j.jml.2009.09.004 * Maxwell, S. E., & Delaney, H. D. (2004). _Designing Experiments and Analyzing Data: A Model-Comparisons Perspective._ Mahwah, N.J.: Lawrence Erlbaum Associates. ```{r, include=FALSE} options(op) ``` afex/vignettes/afex_plot_supported_models.Rmd0000644000176200001440000004510514665062335021321 0ustar liggesusers--- title: "afex_plot: Supported Models" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{afex_plot: Supported Models} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, echo=FALSE} req_suggested_packages <- c("emmeans", "ggplot2", "cowplot", "ggbeeswarm", "ggpol", "nlme", "glmmTMB", "rstanarm", "brms", "MEMSS") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} options(width = 90) knitr::opts_chunk$set(dpi=72) knitr::knit_hooks$set(document = function(x){ gsub("```\n*```r*\n*", "", x) }) ``` # Introduction `afex_plot()` visualizes results from factorial experiments and, more generally, data set with interactions of categorical/factor variables. It does so by combining estimated marginal means and uncertainties associated with these means in the foreground with a depiction of the raw data in the background. If models include continuous covariates, other approaches are recommended (e.g., such as implemented in package [`effects`](https://cran.r-project.org/package=effects) or by using the possibility of `afex_plot` [to return the data and build the plot on ones own](https://github.com/singmann/afex/issues/65)). This document provides an overview of the different models supported by `afex_plot()` in addition to the `afex` objects (i.e., `afex_aov` and `mixed`). In general, these are models which are supported by the [`emmeans`](https://cran.r-project.org/package=emmeans) package as the `afex_plot.default()` method uses `emmeans` to get the estimated marginal means. `afex_plot.default()` then guesses whether there are repeated measures or all samples are independent. Based on this guess (which can be changed via the `id` argument) data in the background is plotted. Calculation of error bars can also be based on this guess (but the default is to plot the model based error bars obtained from `emmeans`). For a generally introduction to the functionality of `afex_plot` see: [`afex_plot`: Publication Ready Plots for Experimental Designs](afex_plot_introduction.html) Throughout the document, we will need `afex` as well as `ggplot2`. In addition, we load [`cowplot`](https://cran.r-project.org/package=cowplot) for function `plot_grid()` (which allows to easily combine multiple `ggplot2` plots). In addition, we will set a somewhat nicer `ggplot2` theme. ```{r message=FALSE, warning=FALSE} library("afex") library("ggplot2") library("cowplot") theme_set(theme_bw(base_size = 14) + theme(legend.position="bottom", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())) ``` Importantly, we also set the contrasts for the current `R` session to sum-to-zero contrasts. For models that include interactions with categorical variables this generally produces estimates that are easier to interpret. ```{r} set_sum_contrasts() ``` Please note, the best way to export a figure is via `ggsave()` or a similar function call. For Word and similar document formats, `png` is a good file type, for `LaTeX` and similar document formats, `pdf` is a good file type. # Base R stats models: lm, glm `afex_plot()` generally supports models implemeneted via the `stats` package. Here I show the main model functions that work with independent samples. These models can be passed to `afex_plot` without specifying additional arguments. Most importantly, `lm` models work directly. For those we use the `warpbreaks` data. ```{r} warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks) ``` Note that `afex_plot` produces several messages that are shown here as comments below the corresponding calls. Important is maybe that `afex_plot` assumes all observations (i.e., rows) are independent. This is of course the case here. In addition, for the first plot we are informed that the presence of an interaction may lead to a misleading impression if only a lower-order effect (here a main effect) is shown. This message is produced by `emmeans` and passed through. ```{r fig.width=7, fig.height=3} p1 <- afex_plot(warp.lm, "tension") p2 <- afex_plot(warp.lm, "tension", "wool") plot_grid(p1, p2) ``` `glm` models also work without further setting. Here we first use a poisson GLM for which we need to generate the data. ```{r} ins <- data.frame( n = c(500, 1200, 100, 400, 500, 300), size = factor(rep(1:3,2), labels = c("S","M","L")), age = factor(rep(1:2, each = 3)), claims = c(42, 37, 1, 101, 73, 14)) ``` We can then fit the data and pass the model object as is. ```{r fig.width=3, fig.height=3} ins.glm <- glm(claims ~ size + age + offset(log(n)), data = ins, family = "poisson") afex_plot(ins.glm, "size", "age") ``` `afex_plot` also works with binomial GLMs for which we also first need to generate some data which we will then fit. ```{r} ## binomial glm adapted from ?predict.glm ldose <- factor(rep(0:5, 2)) numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16) sex <- factor(rep(c("M", "F"), c(6, 6))) SF <- numdead/20 ## dv should be a vector, no matrix budworm.lg <- glm(SF ~ sex*ldose, family = binomial, weights = rep(20, length(numdead))) ``` For this model, we will produce three plots we can then compare. The first only shows the main effect of one variable (`ldose`). The other show the interaction of the two variables. Because for binomial GLMs we then only have one data point (with several observations), the individual data points and mean cannot be distinguished. This is made clear in the ther two (panels B and C). ```{r fig.width=8, fig.height=3} a <- afex_plot(budworm.lg, "ldose") b <- afex_plot(budworm.lg, "ldose", "sex") ## data point is hidden behind mean! c <- afex_plot(budworm.lg, "ldose", "sex", data_arg = list(size = 4, color = "red")) plot_grid(a, b, c, labels = "AUTO", nrow = 1) ``` # nlme mixed model Hot to use `afex_plot` for mixed models fitted with `afex::mixed` (or [`lme4`](https://cran.r-project.org/package=lme4) directly) is shown in the [other vignette](afex_plot_introduction.html). However, we can also use `afex_plot` for mixed models fitted with the older `nlme` package. For this, however we need to pass the data used for fitting via the `data` argument. We can change on which of the two nested factors the individual data points in the background are based via the `id` argument. This is shown below. ```{r fig.width=8, fig.height=6} ## nlme mixed model data(Oats, package = "nlme") Oats$nitro <- factor(Oats$nitro) oats.1 <- nlme::lme(yield ~ nitro * Variety, random = ~ 1 | Block / Variety, data = Oats) plot_grid( afex_plot(oats.1, "nitro", "Variety", data = Oats), # A afex_plot(oats.1, "nitro", "Variety", data = Oats), # B afex_plot(oats.1, "nitro", "Variety", data = Oats, id = "Block"), # C afex_plot(oats.1, "nitro", data = Oats), # D afex_plot(oats.1, "nitro", data = Oats, id = c("Block", "Variety")), # E afex_plot(oats.1, "nitro", data = Oats, id = "Block"), # F labels = "AUTO" ) ``` # glmmTMB Support for [`glmmTMB`](https://cran.r-project.org/package=glmmTMB) is also provided. Here we use an example data set for which we model zero-inflation as well as overdispersion. The latter is achieved with a variant of the negative binomial distribution. ```{r, eval=FALSE} library("glmmTMB") tmb <- glmmTMB(count~spp * mined + (1|site), ziformula = ~spp * mined, family=nbinom2, Salamanders) ``` ```{r, eval=FALSE, include=FALSE} library("glmmTMB") afex::set_sum_contrasts() tmb <- glmmTMB(count~spp * mined + (1|site), ziformula = ~spp * mined, family=nbinom2, Salamanders) save(tmb, file = "inst/extdata/tmb_example_fit.rda", compress = "xz") ``` ```{r, echo=FALSE, include=FALSE} library("glmmTMB") data(Salamanders, package = "glmmTMB") load(system.file("extdata/", "tmb_example_fit.rda", package = "afex")) tmb <- up2date(tmb) ``` `afex_plot` does not automatically detect the random-effect for `site`. This means that per default all 644 data points are shown. When plotting only one variable, in which the default `data_geom` is `ggbeeswarm::geom_beeswarm`, this can lead to rather ugly plots due to the zero inflation. This is shon in panel A below. In panel B, we address this by changing the geom to a violin plot. In panel C, we address this by aggregating the data within site, but still use the beeswarm plot. Note that for panel C it is necessary to pass the data via the `data` argument as otherwise `site` cannot be found for aggregation. ```{r fig.width=8, fig.height=3} plot_grid( afex_plot(tmb, "spp"), afex_plot(tmb, "spp", data_geom = geom_violin), afex_plot(tmb, "spp", id = "site", data = Salamanders), labels = "AUTO", nrow = 1 ) ``` When plotting both variables, the problem is somewhat hidden, because instead of beeswarm plots, semi-transparency (i.e., `alpha` < 1) is used to show overlapping points. In panel B we again make this clearer but this time by adding jitter (on both the y- and x-axis) and increasing the degree of semi-transparancy (i.e., decreasing alpha). ```{r fig.width=8.5, fig.height=3.5} a <- afex_plot(tmb, "spp", "mined") b <- afex_plot(tmb, "spp", "mined", data_alpha = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0.2, jitter.height = 0.5, dodge.width = 0.5 ## needs to be same as dodge ), color = "darkgrey")) plot_grid(a, b, labels = "AUTO") ``` For the final plot we also plot the interaction, but this time aggregate the individual-data within site. This allows us again to use a beeswarm plot (after decreasing the width of the "bees") and produces a relatively clear result. ```{r fig.width=5.5, fig.height=3.5} afex_plot(tmb, "spp", "mined", id = "site", data = Salamanders, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list(dodge.width = 0.5, cex = 0.4, color = "darkgrey") ) ``` # rstanarm `afex_plot()` also supports Bayesian models that are also supported via `emmeans`. For example, we can easily fit a binomial model with [`rstanarm`](https://cran.r-project.org/package=rstanarm). ```{r, eval=FALSE} library("rstanarm") ## requires resetting the ggplot2 theme theme_set(theme_bw(base_size = 14) + theme(legend.position="bottom", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())) cbpp <- lme4::cbpp cbpp$prob <- with(cbpp, incidence / size) example_model <- stan_glmer(prob ~ period + (1|herd), data = cbpp, family = binomial, weight = size, chains = 2, cores = 1, seed = 12345, iter = 500) ``` We can directly pass this model to `afex_plot`. However, we also see quite some zeros leading to a not super nice plot. It looks a bit better using a violin plot for the raw data. ```{r, eval=FALSE} b1 <- afex_plot(example_model, "period") ## dv column detected: prob ## No id column passed. Assuming all rows are independent samples. b2 <- afex_plot(example_model, "period", data_geom = geom_violin) ## dv column detected: prob ## No id column passed. Assuming all rows are independent samples. plot_grid(b1, b2, labels = "AUTO") ``` ```{r fig.width=7, fig.height=3, echo=FALSE} load(system.file("extdata/", "plots_rstanarm.rda", package = "afex")) grid::grid.newpage(); grid::grid.draw(b12) ``` We can also produce a plot based on the individual Bernoulli observations in the data. For this, we first need to expand the data such that we have one row per observation. With this, we can then fit the essentially same model as above. ```{r, eval=FALSE} cbpp_l <- vector("list", nrow(cbpp)) for (i in seq_along(cbpp_l)) { cbpp_l[[i]] <- data.frame( herd = cbpp$herd[i], period = cbpp$period[i], incidence = rep(0, cbpp$size[i]) ) cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1 } cbpp_l <- do.call("rbind", cbpp_l) cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd)) cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period)) example_model2 <- stan_glmer(incidence ~ period + (1|herd), data = cbpp_l, family = binomial, chains = 2, cores = 1, seed = 12345, iter = 500) ``` Again, this model can be directly passed to `afex_plot`. However, here we see even more 0 as the data is not yet aggregated. Consequently, we need to pass `id = "herd"` to aggregate the individual observations within each herd. ```{r, eval=FALSE} b3 <- afex_plot(example_model2, "period") ## dv column detected: incidence ## No id column passed. Assuming all rows are independent samples. b4 <- afex_plot(example_model2, "period", id = "herd") ## dv column detected: incidence plot_grid(b3, b4, labels = "AUTO") ``` ```{r fig.width=7, fig.height=3, echo=FALSE} grid::grid.newpage(); grid::grid.draw(b34) ``` We can of course also fit a model assuming a normal distribution using `rstanarm`. For example using the `Machines` data. ```{r, eval=FALSE} data("Machines", package = "MEMSS") mm <- stan_lmer(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) ``` As before, we can pass this model directly to `afex_plot` (see panel A). However, the data is again not aggregated within the grouping variable `Worker`. If we want to aggregate the individual data points for the grouping factor, we need to pass both the name of the grouping variable (`Worker`) and the data used for fitting. ```{r, eval=FALSE} b5 <- afex_plot(mm, "Machine") ## dv column detected: score ## No id column passed. Assuming all rows are independent samples. b6 <- afex_plot(mm, "Machine", id = "Worker") ## dv column detected: score plot_grid(b5, b6, labels = "AUTO") ``` ```{r fig.width=7, fig.height=3, echo=FALSE} grid::grid.newpage(); grid::grid.draw(b56) ``` ```{r, eval=FALSE, include=FALSE} library("rstanarm") ## requires resetting the ggplot2 theme library("ggplot2") theme_set(theme_bw(base_size = 14) + theme(legend.position="bottom", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())) set_sum_contrasts() cbpp <- lme4::cbpp cbpp$prob <- with(cbpp, incidence / size) example_model <- stan_glmer(prob ~ period + (1|herd), data = cbpp, family = binomial, weight = size, chains = 2, cores = 1, seed = 12345, iter = 500) b1 <- afex_plot(example_model, "period") b2 <- afex_plot(example_model, "period", data_geom = geom_violin) b12 <- ggplotGrob(plot_grid(b1, b2)) cbpp_l <- vector("list", nrow(cbpp)) for (i in seq_along(cbpp_l)) { cbpp_l[[i]] <- data.frame( herd = cbpp$herd[i], period = cbpp$period[i], incidence = rep(0, cbpp$size[i]) ) cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1 } cbpp_l <- do.call("rbind", cbpp_l) cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd)) cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period)) example_model2 <- stan_glmer(incidence ~ period + (1|herd), data = cbpp_l, family = binomial, chains = 2, cores = 1, seed = 12345, iter = 500) b3 <- afex_plot(example_model2, "period") b4 <- afex_plot(example_model2, "period", id = "herd") b34 <- plot_grid(b3, b4) data("Machines", package = "MEMSS") mm <- stan_lmer(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) b5 <- afex_plot(mm, "Machine") b6 <- afex_plot(mm, "Machine", id = "Worker", data = Machines) b56 <- ggplotGrob(plot_grid(b5, b6)) save(b12, b34, b56, file = "../inst/extdata/plots_rstanarm.rda", compress = "xz", version = 2) ``` # brms We can also fit the `Machines` data using [`brms`](https://cran.r-project.org/package=brms). ```{r, eval=FALSE} library("brms") data("Machines", package = "MEMSS") mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) ``` However, to pass a `brms` object to `afex_plot` we need to pass both, the `data` used for fitting as well as the name of the dependent variable (here `score`) via the `dv` argument. We again build the plot such that the left panel shows the raw data without aggregation and the right panel shows the data aggregated within the grouping factor `Worker`. ```{r, eval=FALSE} bb1 <- afex_plot(mm2, "Machine", data = Machines, dv = "score") ## No id column passed. Assuming all rows are independent samples. bb2 <- afex_plot(mm2, "Machine", id = "Worker", data = Machines, dv = "score") plot_grid(bb1, bb2) ``` ```{r fig.width=7, fig.height=3, echo=FALSE} load(system.file("extdata/", "plots_brms.rda", package = "afex")) grid::grid.newpage(); grid::grid.draw(bbout) ``` ```{r, eval=FALSE, include=FALSE} library("brms") data("Machines", package = "MEMSS") mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) bb1 <- afex_plot(mm2, "Machine", data = Machines, dv = "score") bb2 <- afex_plot(mm2, "Machine", id = "Worker", data = Machines, dv = "score") bbout <- ggplotGrob(plot_grid(bb1, bb2)) save(bbout, file = "../inst/extdata/plots_brms.rda", version = 2) ``` # Not Yet Supported: GLMMadaptive Some models are unfortunately not yet supported. For example, models fit with the new and pretty cool looking [`GLMMadaptive`](https://cran.r-project.org/package=GLMMadaptive) package using some of the special families do not seem to produce reasonable results. The following unfortunately does not produce a reasonable plot. ```{r fig.width=4, fig.height=3, eval = FALSE} library("GLMMadaptive") data(Salamanders, package = "glmmTMB") gm1 <- mixed_model(count~spp * mined, random = ~ 1 | site, data = Salamanders, family = zi.poisson(), zi_fixed = ~ mined) afex_plot(gm1, "spp", data = Salamanders) ``` afex/vignettes/afex_analysing_accuracy_data.Rmd0000644000176200001440000012526714665061371021532 0ustar liggesusers--- title: "Analysis of Accuracy Data using ANOVA and binomial GLMMs" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{Analysis of Accuracy Data using ANOVA and binomial GLMMs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "dplyr", "ggplot2", "cowplot", "ggbeeswarm") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r, include = FALSE} op <- options(width = 90, dplyr.summarise.inform = FALSE) knitr::opts_chunk$set( collapse = TRUE ) ``` # Overview This vignette shows how accuracy data can be analysed with `afex` using either ANOVA or a binomial generalized linear mixed model (i.e., a mixed model that uses the appropriate distributional family for such data). Accuracy data means data where each observation can be categorized as either a 0, which indicates failure, miss, or an erroneous response, or 1 which indicates success or a correct response. We begin by loading the packages needed here and set a somewhat nicer `ggplot2` theme. ```{r setup, message=FALSE, results='hide', warning=FALSE} library("afex") library("emmeans") library("dplyr") library("ggplot2") theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) library("cowplot") library("ggbeeswarm") ``` # Data and Research Question The data we are looking at is from [Lin and colleagues (2020)](https://doi.org/10.1177/0956797620904990) and investigates ego depletion using a novel paradigm. Ego depletion is a (social) psychological concept originating from Roy Baumeister's work which can be summed up by the phrase 'self-control/willpower is a muscle': An initial use of self-control, such as performing a demanding task or resisting a temptation, depletes the available self-control resources so that subsequent tasks only have limited self-control resources available. The paper introducing the concept was published in 1998 (references can be found on [Wikipedia](https://en.wikipedia.org/wiki/Ego_depletion)). The ego depletion concept was extremely popular until the height of the replication crisis in psychology in which researcher also struggled to replicate the key ego depletion phenomenon just outlined. Recently, Lin and colleagues developed a new paradigm for investigation ego depletion. Their primary interest was on analyzing the data using a diffusion model, which will not be of interest here. [Lin and colleagues (2020)](https://doi.org/10.1177/0956797620904990) task followed the usual approach for ego depletion tasks. In a first phase, participants either worked on a high-demand task or a low-demand task (variable `condition`). Then, participants had to work on a Stroop task. The Stroop task consist of colour words (i.e., "red", "blue", or "yellow") displayed in a colour (i.e., red, blue, or yellow). In each trial, one of the three words is displayed in one of the three colours (e.g., the word "red" could be displayed in red or blue). The task of the participants is to press a button corresponding to the three colours the word is displayed in (i.e., participants have to ignore the meaning of the word but focus on the colour the letters have). The Stroop effect is the finding that it is easier to select the correct colour in a congruent trial in which the meaning of the word and the colour the word is displayed in match (e.g., the word "red" in red). In contrast, people are slower and make more errors in an incongruent trial in which there is a mismatch between word meaning and word colour (e.g., the word "red" in blue). In other words, it is difficult for people to ignore the meaning of a word when having to decide which colour the word is displayed in. The variable determining match between word meaning and world colour is `congruency`. The hypothesis of the ego depletion concept is that it moderates or interacts with the congruency effect (i.e., difference in performance between congruent and incongruent trials). In particular, the congruency effect is smaller if participants are ego depleted compared to when they are not. We analyse this Stroop data in the following. One of the new features of Lin et al.'s (2020) study compared to earlier ego-depletion studies is that both variables, `condition` and `congruency`, vary within-subjects. That is, each participants once performed a high-demand task followed by the Stroop task and then also a low-demand task followed by a Stroop task. This was usually done on two different days with a week time in between in counterbalanced order. We then load the data, called `stroop`, which comes with `afex`. For simplicity we only focus on the data from Lin et al.'s (2020) Experiment 1 (the data of all their 4 studies is part of `stroop`). We focus on the accuracy of participants which is coded as either 0 (error) or 1 (correct response) in column `acc`. We also remove all `NA`s in the response variable and drop unused factor levels. This streamlines a few of the calls later on. ```{r} data("stroop") ## extract data from experiment 1 and remove NAs stroop_e1 <- stroop %>% filter(!is.na(acc)) %>% filter(study == "1") %>% droplevels() ``` A look at the resulting `data.frame` reveals that we have trial-wise data. That is, each observation (i.e., row) is one response to a Stroop trial. The data is not yet aggregated so that each participant has one observation per design cell (i.e., denoting the average accuracy for each participant in this cell). We also see we still have quite a bit of data left, from 253 participants. ```{r} head(stroop_e1) str(stroop_e1) ``` # ANOVA Analysis We begin with an analysis of the data using standard repeated-measures ANOVA. ANOVA is probably the most common approach to analyse such data in psychology, but its use is somewhat questionable. The reason is that ANOVA assumes that response variable is normally distributed (or more precisely, the conditional distribution of the data after taking the model into account, i.e., the residuals, are assumed to follow a normal distribution). Here, our data are only 0s and 1s which do not follow a normal but rather a binomial or Bernoulli distribution. Nevertheless, analysis of such data using models assuming normal distribution such as ANOVA is not uncommon and in many cases leads to the same conclusions than the more complicated model discussed below. However, as we will see below, the results can also change. We set up the model using `aov_ez` and specify both factors, `congruency` and `condition`, correctly as `within` factors. ```{r} e1_anova <- aov_ez( id = "pno", dv = "acc", data = stroop_e1, within = c("congruency", "condition") ) ``` Fitting this model produces a warning message telling us what we already know. There is more than one observation per participant and cell of the design (i.e., combination of our two factors) and the data is averaged before calculating the ANOVA. Note that if we would not have removed the `NA`s from the data, this call would have failed with an error as all participants have `NA`s so all would have been removed. In that case, we could have added `na.rm = TRUE` to the `aov_ez()` call to ignore the NAs when aggregating the data. If we take a look at the ANOVA table, we see a clear main effect of congruency, a somewhat weaker main effect of condition, but no interaction. ```{r} e1_anova ``` The observed pattern of effects is in line with most recent failures to replicate ego depletion. The main effect of `condition` suggests there be some general effect, such as more errors after a demanding task, but not the predicted interaction of condition with the congruency effect. The original prediction of ego-depletion is that it reduces self-control, thus resulting in attenuated Stroop effects after depletion. This pattern would result in a significant interaction. We can look at the effects in turn using `emmeans`. We begin by looking at the Stroop effect, that is the effect of `congruency`. ```{r} emmeans(e1_anova, "congruency") ``` We can see the usual Stroop effect. Accuracy is higher for congruent compared to incongruent items. We also look at the effect of condition. ```{r} emmeans(e1_anova, "condition") ``` We see that accuracy is roughly 1% lower in the ego-depletion compared to the control condition. We can also plot both effects. ```{r, fig.width=6, fig.height=3} plot_grid( afex_plot(e1_anova, "congruency", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)), afex_plot(e1_anova, "condition", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)) ) ``` # Mixed Model Analysis ```{r, echo=FALSE} load(system.file("extdata/", "outputs_glmm_vignette.rda", package = "afex")) ``` A model with a more appropriate conditional distribution (instead of the normal distribution used by ANOVA) are generalized linear models with a binomial family. Because we have repeated measures both within participants within each design cell and across cells (i.e., we have within-subject factors) we need to use a mixed model. Thus, we have to employ a generalized linear mixed model (GLMM) with a binomial family. Here, we use the canonical link function, the logit (an alternative would be probit). In our call to `mixed` we indicate the fact that we want to estimate a binomial GLMM (in contrast to a regular LMM) by passing the correct family, `family = binomial`. We could further specify the link function (e.g., `family = binomial(link = "probit")`), but because we use the canonical link here, this is not necessary. As for all mixed models, we should begin our analysis with the "maximal random effect structure justified by the design" (Barr et al., 2013), the *maximal model.* Because all factors vary within-subjects in the present case and we only consider one random-effects grouping factor (participant), the maximum random effect structure involves by-participant random intercepts as well as by-participant random slopes for factors congruency, condition, and their interaction, as well as the correlation among the random effect parameters. If you need an introduction to the topic of the random effect structure, consider reading our introduction to mixed models ([Singmann & Kellen, 2019](http://singmann.org/download/publications/singmann_kellen-introduction-mixed-models.pdf)). A worked example of how to reduce the maximal model in case of converging warnings is provided in the [mixed model vignette](afex_mixed_example.html). Another important decision when fitting a mixed model with `afex::mixed` is the choice of the `method` for testing model terms. The default `method` is the Kenward-Roger approximation. However, this is not possible for GLMMs (i.e., it only applies to LMMs). For GLMMs we only have two methods available, likelihood ratio tests (`method = "LRT"`) and parametric bootstrap (`method = "PB"`). Parametric bootstrap is generally the preferable procedure, especially in settings with small N, specifically low numbers of levels for the random effects grouping factor (i.e., few participants in the present case). However, parametric bootstrap can be prohibitively time consuming as it requires refitting the model several times (suggested is at last a 1000 times per model term/effect). The main factor influencing the time is therefore the complexity of the random effect structure. Even with only a moderately complex structure, such as in the present case, it can take days (even though computations can be distributed on a multi-core machine as shown below). One rule of thumb (for which I have never seen any actual data) is that with more than around 50 levels for each random effects grouping factor, likelihood ratio tests are probably okay and parametric bootstrap not necessary. Luckily, in the present case we have over 250 participants (i.e., way more than 50), so we decide to use likelihood ratio tests as a method for testing model terms (i.e., `method = "LRT"`). ## Setting-Up and Fitting the Models There are two ways on how to set up such models in `afex::mixed` (`lme4` provides another third variant that is not possible in `afex::mixed`). Before describing both ways, the somewhat surprising fact is that the second way, based on the aggregated data, is considerably faster than the first way. In the present case the first way takes more than an hour on my laptop whereas the second way takes only around one minute! To understand the two different ways, it might help to recall some basics about the [binomial distribution](https://en.wikipedia.org/wiki/Binomial_distribution). It is defined by the number of observations and the number of successes and has one parameter, the success probability. Because we want to estimate the parameter of the binomial distribution, the success probability, we have to pass two pieces of information to the `mixed` function; the number of successes and the total number of trials. The easiest way to do so with the current data is by directly passing the accuracy column `acc`. It only consists of zeros and ones so the total number of observations is the number of trials, and the number of ones is the number of successes. The following code sets up the maximal model as discussed above using this approach. Note that fitting this model takes more than an hour (likely several hours). ```{r, eval=FALSE, warning=FALSE} e1_mixed1_v1 <- mixed( acc ~ congruency*condition + (congruency*condition|pno), data = stroop_e1, method = "LRT", family = binomial ) ``` Before looking at the results, let us first discuss the alternative way of specifying the model. Note that the second way is usually considerably faster. This way consists of two steps. We first need to aggregate the data within each cell of the design and participant by calculating the proportion of correct responses and the number of trials for each cell. Then we can pass these two pieces of information to `mixed`, the proportion of successes as the dependent variable and the total number of successes as a `weight`. These two pieces of information again provide all information required for the binomial distribution. However, note that it is important that proportion times the weight provide an integer number, the actual number of successes which cannot have a decimal part. At first, we need to aggregate the data. For this, we can use the following `dplyr` syntax. ```{r} stroop_e1_agg <- stroop_e1 %>% group_by(condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) ``` Then, we can set up the model. Note that we need to pass the total number of trials as the `weight` argument here. `mixed` now supports the exact same syntax as `glmer` so we can pass simply the unquoted name of the column holding the weights, `weight = n`. The call to `mixed` is then pretty much the same as above, the only differences are that we have to use the `data.frame` with the aggregated data, potentially a new name of response variable (here I decided to use the same name, `acc` for the aggregated accuracy), and the `weight` argument. ```{r, eval = FALSE} e1_mixed1_v2 <- mixed( acc ~ congruency*condition + (congruency*condition|pno), data = stroop_e1_agg, method = "LRT", family = binomial, weight = n ) ``` ## Dealing with Fit Warnings Before looking at the results, we see that fitting produces quite a few warnings. These are reproduced below in the way we would also get them when simply typing in the object name (e.g., `e1_mixed1_v2`). The following are the warnings for the first variant, `e1_mixed1_v1`. ```{r, echo=FALSE} xxx <- lapply(outp_e1_mixed1_v1$warnings, function(x) warning(x, call. = FALSE)) ``` And these are the warnings for the second variant, `e1_mixed1_v2`. ```{r, echo=FALSE} xxx <- lapply(outp_e1_mixed1_v2$warnings, function(x) warning(x, call. = FALSE)) ``` Both variants show quite a few warnings. The warnings are given separately for the different models estimated (i.e., full model with all terms and one model for each term removed from the full model). However, none of the warnings is the dreaded "singular fit" warning that clearly suggests an over-parameterised model. We therefore will be working with this random effect structure going forward. Here, we have two different warnings suggesting some numerical issue at the maximum likelihood estimate. One warning tells us that for the result returned from the fitting (i.e., optimization) algorithm the absolute gradient of the deviance function is not small (i.e., there might be a better global optimum that was not discovered). Another warning relates to the size of the eigenvalue which suggests something similar, there might be better solutions in the parameter space. More on these warnings can be found in the `lme4` help at `?troubleshooting` (or `help("troubleshooting", package = "lme4")`). Given that both types of warnings are not too dramatic, one way to address them is by trying different optimizers. `mixed` makes this easy via the `all_fit` argument, if `TRUE` several optimizers are applied to the output from the regular run (make sure to install packages `optimx` and `dfoptim` to use all possible available optimizers). ```{r, eval = FALSE} e1_mixed1_v2_allfit <- mixed( acc ~ congruency*condition + (congruency*condition|pno), data = stroop_e1_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE ) ``` ```{r, echo=FALSE} xxx <- lapply(outp_e1_mixed1_v2_allfit$warnings, function(x) warning(x, call. = FALSE)) ``` Somewhat surprisingly the fit using all optimizers produces more convergence warnings than the previous fit. However, all warnings are of the same type as for the other variants. Another way to deal with the warnings is by fitting a variant of the model with reduced random effect structure. Hopefully this model will not produce the warning, but similar results. If warnings are more severe than the current warning, fitting a reduced model is surely indicated. Critical warnings that make it necessary to reduce the model are for example a singular fit warning or a warning that the algorithm did not converge within the allowed number of iterations. Nevertheless, if this were a real data analysis for a manuscript it would probably still make sense to reduce the random effect structure, beginning with the correlation among the random effect parameters, until the warnings are gone. Then, we would compare the final (i.e., reduced) model with the maximal model to ensure that the pattern of significant and non-significant effects is the same in both cases (if not, this needs to be reported transparently). An example of such an iterative reduction of the random effect structure is given in the [mixed model vignette](afex_mixed_example.html). ## ANOVA Table for GLMMs We can now print the model to get the resulting ANOVA table, that is the table of model terms (i.e., main effects and interactions), as for the regular ANOVA model. Doing so would normally also reproduces the warnings shown above but is suppressed here. We show the results of the three variants in turn. ```{r, eval=FALSE} e1_mixed1_v1 ## variant 1 ``` ```{r, echo=FALSE} cat(outp_e1_mixed1_v1$output, sep = "\n") ``` ```{r, eval=FALSE} e1_mixed1_v2 ## variant 2 ``` ```{r, echo=FALSE} cat(outp_e1_mixed1_v2$output, sep = "\n") ``` ```{r, eval=FALSE} e1_mixed1_v2_allfit ## variant 2 with all_fit = TRUE ``` ```{r, echo=FALSE} cat(outp_e1_mixed1_v2_allfit$output, sep = "\n") ``` As can be seen, the results of the three different variants are extremely similar. Especially the fact that the results from variant 2 and the variant with `all_fit = TRUE` are pretty much the same suggests that we can have some confidence in the results. As for the ANOVA we see significant main effects of congruency and condition. However, we also see a significant congruency by condition interaction. As a reminder, this interaction is the precondition of the central ego depletion prediction. ## Follow-Up Analysis and Plots Let us first look at the main effects as for the ANOVA model. For this, we will always use the model with `all_fit = TRUE`, `e1_mixed1_v2_allfit`. For easier interpretability, we also always set `type = "response"` in the call to `emmeans`. This provides estimated marginal means on the response scale (i.e., in probability units after applying the inverse link function). In case of the default (i.e., `type = "link"`) marginal mean are given on the linear scale which in this case is the logit scale. ```{r, eval=FALSE} emmeans(e1_mixed1_v2_allfit, "congruency", type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_2a_cong_out$output, sep = "\n") ``` We again see the Stroop effect. Accuracy is higher for congruent compared to incongruent items. We also look at the effect of condition. ```{r, eval=FALSE} emmeans(e1_mixed1_v2_allfit, "condition", type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_2a_cond_out$output, sep = "\n") ``` We see that accuracy is roughly 1% lower in the ego-depletion compared to the control condition. We can also plot both effects as above. We essentially only have to replace the model name in the calls to `afex_plot`. However, we also remove the `error = "within"` to show model-based error bars. ```{r, eval=FALSE} plot_grid( afex_plot(e1_mixed1_v2_allfit, "congruency", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)), afex_plot(e1_mixed1_v2_allfit, "condition", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)) ) ``` ```{r, echo=FALSE, fig.width=6, fig.height=3} message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp2a_main) ``` Finally, we can also have a look at the interaction. One way to do so is by looking at the reference grid of the two variables. ```{r, eval=FALSE} emmeans(e1_mixed1_v2_allfit, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} cat(emm_2a_inter1_out$output, sep = "\n") ``` Alternatively, we can look at the effect of `congruency` conditional on `condition`. As will be shown below, this has some benefits. And because we will use this `emmeans` object later, we assign it to `emm_inter_1`. ```{r, eval=FALSE} emm_inter_1 <- emmeans(e1_mixed1_v2_allfit, "congruency", by = "condition", type = "response") emm_inter_1 ``` ```{r, echo=FALSE} cat(emm_2a_inter2_out$output, sep = "\n") ``` With this object, it is now particularly easy to see if there are indeed differences in the Stroop effects across conditions. We can simply use the `pairs` function which will only calculate pairwise comparisons for each level of the `by` factor `conditions. Because of the significant interaction this shows that there is evidence for a reduced Stroop effect in the deplete condition. The odds ratio are around 5 in the deplete condition and over 6 in the control condition. ```{r, eval=FALSE} pairs(emm_inter_1) ``` ```{r, echo=FALSE} cat(emm_2a_pairs$output, sep = "\n") ``` We can of course also plot the interaction. We use violin plots for the data to make this plot somewhat appealing. ```{r, eval=FALSE} afex_plot(e1_mixed1_v2_allfit, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") grid::grid.newpage() grid::grid.draw(pp2a_inter) ``` For reference, we can also make the plot based on the model using variant 1 (i.e., based on trial-wise non-aggregated data) which produces the same figure. ```{r, eval=FALSE} afex_plot(e1_mixed1_v1, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") grid::grid.newpage() grid::grid.draw(pp2a_inter_v1) ``` # Analysis of Two Studies with GLMM The `stroop` data set contains all four experiments of Lin et al. (2020). So far we only looked at Experiment 1. Here, we want to look at Experiments 1 and 2 to show some additional functionality of analysing accuracy data with GLMMs. Let us begin by preparing the data. ```{r} ## extract data from experiment 1 and remove NAs stroop_e12 <- stroop %>% filter(!is.na(acc)) %>% filter(study %in% c("1", "2")) %>% droplevels() ``` We then have a look at the number of participants per experiment. As can be seen below, there is a clear imbalance with Experiment 1 having a lot more participants than Experiment 2. We will see below what we can do with this information. ```{r} stroop_e12 %>% group_by(study) %>% summarise(n = length(unique(pno))) ``` But first, we aggregate the data for analysing it using the second variant introduced above as it is dramatically faster. ```{r} stroop_e12_agg <- stroop_e12 %>% group_by(study, condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) ``` We are now ready to fit the model. However, because we now have to fit 8 models in total and we also have more data at hand, fitting will take quite a bit longer even when using the aggregated data. Especially, because based on our experience with the data from Experiment 1, it makes sense to set `all_fit = TRUE` here. ## Estimating Models in Parallel Therefore, it makes sense to reduce our fitting time by distributing the estimation across the available CPU cores using the `parallel` package support provided by `mixed`. Note that this simply distributes the different models across cores (i.e., each individual fit is still run on a single core). For this, we need to set up a cluster, `cl`, and then pass this cluster to `mixed`. ```{r, eval = FALSE} library("parallel") nc <- detectCores() # number of cores cl <- makeCluster(rep("localhost", nc)) # make cluster ``` We can then fit the model using the new data in a similar manner as above. The main changes are that we add `*study` to the fixed effects part of the model formula which estimates main effects and all interactions with `study`. We do not estimate any random slopes for `study` because participants are in only one study (i.e., study is a between-subjects factor). We also enable multi-core estimation by setting `cl = cl`. ```{r, eval = FALSE} e12_mixed1 <- mixed( acc ~ congruency*condition*study + (congruency*condition|pno), data = stroop_e12_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE, cl = cl ) ``` ## Type III versus Type II Sums of Squares The default `type` argument when using `mixed` (and the other `afex` functions) is `3` which estimates so-called type III sums of squares tests of model terms. There is a somewhat heated discussion on these topics in the literature which I do not want to rehash here (more can be found in [our chapter](http://singmann.org/download/publications/singmann_kellen-introduction-mixed-models.pdf)). In short, the distinction between Type III (default in `afex`) and Type II (recommended by some vocal statisticians) is about how to deal with imbalance (i.e., different group sizes). Type III sums of squares assume that the imbalance is random and estimates a model in which all groups are assumed to have equal sizes. In contrast, using Type II sums of squares the differences in group sizes are assumed to be meaningful (e.g., as a consequence of different group sizes in the environment) and the model is set-up such that the differences in group sizes are represented. Remember that the first experiment (study 1) had a lot more participants than the second experiment (study 2). However, the default Type III tests treat both studies as having the same sample size. In this case it might therefore make sense to also look at the results with Type II tests. For this, we simply need to add `type = 2` (or equivalently `type = "II"`) to the call as shown below. ```{r, eval = FALSE} e12_mixed1_t2 <- mixed( acc ~ congruency*condition*study + (congruency*condition|pno), data = stroop_e12_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE, cl = cl, type = 2 ) ``` Fitting both models shows a number of warnings similar to the previous model which we do not reproduce here. Because we are done with fitting models in parallel, we stop the cluster. ```{r, eval=FALSE} stopCluster(cl) ``` Let us instead take a look at the results. We begin with the Type III model. ```{r, eval=FALSE} e12_mixed1 ``` ```{r, echo=FALSE} cat(outp_e12_mixed1$output, sep = "\n") ``` The results are now more in line with the results from the ANOVA analysis. We only see significant main effects of congruency and condition, but no congruency by condition interaction. Furthermore, no effect involving study is significant. Let us now take a look at the Type II results. ```{r, eval=FALSE} e12_mixed1_t2 ``` ```{r, echo=FALSE} cat(outp_e12_mixed1_t2$output, sep = "\n") ``` These look quite similar with one difference. The congruency by condition interaction is still not significant, however, the p-value is below .1. Taken together the results somewhat suggest that the congruency by condition interaction is a pattern mainly found in (the larger) Experiment 1, but not in Experiment 2. In the Type III analysis in which both studies are weighed equally the interaction therefore does not reach significance. In contrast, in the Type II analysis in which the additional participants of Experiment 1 have a larger influence on the interaction, the p-value drops and is nearer the .05 cut-off. However, the difference in the interaction between the experiments is also not too large as the three way interaction of congruency by condition by study is clearly not significant (and as the highest order effect, this effect has to be the same for both types of sums of squares). ## Follow-Up Tests for Type II Models We can now of course also plot the data. Let us plot the congruency by condition interaction as before. We begin with the plot of the Type III model. ```{r, eval=FALSE} afex_plot(e12_mixed1, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t3) ``` We then plot the interaction of the Type II model. ```{r, eval=FALSE} afex_plot(e12_mixed1_t2, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t2) ``` Both look pretty much the same and actually are the same. The reason for this is also given as a message when producing the second plot. When using `mixed` Type II models, all follow-up tests (which includes plotting via `afex_plot`) are based on the full model. However, Type II model tests are not all based on the full model. Rather, for tests of lower-order effects higher order effects are not part of the comparison (i.e., tests of two-way interactions such as the congruency by condition interaction are compared against a reference model that only includes all two-way interactions and not the three-way interaction). We can also see this when comparing the corresponding `emmeans` for both models: ```{r, eval=FALSE} emmeans(e12_mixed1, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_inter_out$output, sep = "\n") ``` ```{r, eval=FALSE} emmeans(e12_mixed1_t2, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_inter_out$output, sep = "\n") ``` We again see that they are identical. Thus, the Type II outputs do not actually reflect Type II tests. A more appropriate way to look at this two-way interaction would be to use a model that reflects the Type II tests; that is, a model without the three-way interaction. A variant of this model is part of the `e12_mixed1_t2` object. However, because of the way `afex::mixed` creates the set of tests, this model is parameterized in a different way so we cannot pass it to `emmeans` for tests. Therefore, we have to refit the model without the three-way interaction. We do so by changing the fixed effects part of the formula to `(congruency+condition+study)^2` which means all main effects and up to two-way interactions. ```{r, eval = FALSE} e12_mixed1_t2_red <- mixed( acc ~ (congruency+condition+study)^2 + (congruency*condition|pno), data = stroop_e12_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE, cl = cl, type = 2 ) ``` ```{r, eval=FALSE} e12_mixed1_t2_red ``` ```{r, echo=FALSE} cat(outp_e12_mixed1_t2_red$output, sep = "\n") ``` We first have a look at the resulting ANOVA table (note, we suppress the warnings again here). As expected, the Type II tests are the same as in `e12_mixed1_t2`, because they are based on the exact same models. We then take a look at the marginal means for the two-way interaction of congruency by condition. ```{r, eval=FALSE} emmeans(e12_mixed1_t2_red, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") cat(emm_e12_t2_red_inter_out$output, sep = "\n") ``` We can see these are now a bit different from the previous one, but not by a lot. A better way to see the difference is to use the same approach as above and look at the estimated Stroop effects for each condition. For the correct Type II model these are given by the following call: ```{r, eval=FALSE} emmeans(e12_mixed1_t2_red, "congruency", by = "condition", type = "response") %>% pairs() ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") cat(emm_e12_t2_red_pairs_out$output, sep = "\n") ``` For the wrong Type II model these are given below: ```{r, eval=FALSE} emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response") %>% pairs() ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_pairs_out$output, sep = "\n") ``` We can see that as expected the magnitude of the difference between the Stroop effects is smaller in `e12_mixed1_t2` (5.73 vs. 5.13) than in `e12_mixed1_t2_red` (5.81 vs. 5.06). One way to approximate the latter behaviour without actually refitting the model is by passing `submodel = "minimal"` (which in the present case is identical to `submodel = ~congruency*condition`, see also [the corresponding `emmeans` vignette](https://cran.r-project.org/package=emmeans/vignettes/xplanations.html#submodels)). This does not produce exact Type II marginal means as when actually refitting the model. But at least approximates those. ```{r, eval=FALSE} emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response", submodel = "minimal") %>% pairs() ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_pairs_p_out$output, sep = "\n") ``` Finally, we can also use this model to plot the two-way interaction. ```{r, eval=FALSE} afex_plot(e12_mixed1_t2_red, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") message("emmeans are based on full model which includes all effects.") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t2_red) ``` # References - Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. *Journal of Memory and Language*, 68(3), 255–278. https://doi.org/10.1016/j.jml.2012.11.001 - Lin, H., Saunders, B., Friese, M., Evans, N. J., & Inzlicht, M. (2020). Strong Effort Manipulations Reduce Response Caution: A Preregistered Reinvention of the Ego-Depletion Paradigm. *Psychological Science*. https://doi.org/10.1177/0956797620904990 - Singmann, H., & Kellen, D. (2019). An Introduction to Mixed Models for Experimental Psychology. In D. H. Spieler & E. Schumacher (Eds.), *New Methods in Cognitive Psychology* (pp. 4–31). Psychology Press. ```{r, include=FALSE} options(op) ``` ```{r, eval=FALSE, include=FALSE} save(e1_mixed1_v1, e1_mixed1_v2, e1_mixed1_v2_allfit, e12_mixed1_t2, e12_mixed1, e12_mixed1_t2_red, file = "development/stroop_mixed.rda", compress = "xz") load("development/stroop_mixed.rda") ``` ```{r, eval=FALSE, include=FALSE} stroop_e1_agg <- stroop_e1 %>% group_by(condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) stroop_e12 <- stroop %>% filter(!is.na(acc)) %>% filter(study %in% c("1", "2")) %>% droplevels() stroop_e12_agg <- stroop_e12 %>% group_by(study, condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) capture_call <- function(call) { warnings <- testthat::capture_warnings(eval(substitute(call))) output <- suppressWarnings(capture.output(eval(substitute(call)))) messages <- testthat::capture_messages(substitute(call)) list( output = output, warnings = warnings, messages = messages ) } outp_e1_mixed1_v1 <- capture_call(print(e1_mixed1_v1)) outp_e1_mixed1_v2 <- capture_call(print(e1_mixed1_v2)) outp_e1_mixed1_v2_allfit <- capture_call(print(e1_mixed1_v2_allfit)) emm_2a_cong <- emmeans(e1_mixed1_v2_allfit, "congruency", type = "response") emm_2a_cond <- emmeans(e1_mixed1_v2_allfit, "condition", type = "response") emm_2a_inter1 <- emmeans(e1_mixed1_v2_allfit, c("congruency", "condition"), type = "response") emm_2a_inter2 <- emmeans(e1_mixed1_v2_allfit, "congruency", by = "condition", type = "response") emm_2a_inter1_out <- capture_call(print(emm_2a_inter1)) emm_2a_inter2_out <- capture_call(print(emm_2a_inter2)) emm_2a_cong_out <- capture_call(print(emm_2a_cong)) emm_2a_cond_out <- capture_call(print(emm_2a_cond)) emm_inter_1 <- emmeans(e1_mixed1_v2_allfit, "congruency", by = "condition", type = "response") emm_2a_pairs <- capture_call(print(pairs(emm_inter_1))) pp2a_main <- ggplotGrob(plot_grid( afex_plot(e1_mixed1_v2_allfit, "congruency", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)), afex_plot(e1_mixed1_v2_allfit, "condition", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)) )) # pp2a_main_a <- afex_plot(e1_mixed1_v2_allfit, "congruency", error = "within", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)) # pp2a_main_b <- afex_plot(e1_mixed1_v2_allfit, "condition", error = "within", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)) pp2a_inter <- ggplotGrob(afex_plot(e1_mixed1_v2_allfit, "condition", "congruency", data_geom = geom_violin)) pp2a_inter_v1 <- ggplotGrob(afex_plot(e1_mixed1_v1, "condition", "congruency", data_geom = geom_violin)) ### experiments 1 and 2 outp_e12_mixed1 <- capture_call(print(e12_mixed1)) outp_e12_mixed1_t2 <- capture_call(print(e12_mixed1_t2)) outp_e12_mixed1_t2_red <- capture_call(print(e12_mixed1_t2_red)) emm_e12_inter_out <- capture_call(print(emmeans(e12_mixed1, c("congruency", "condition"), type = "response"))) emm_e12_t2_inter_out <- capture_call(print(emmeans(e12_mixed1_t2, c("congruency", "condition"), type = "response"))) emm_e12_t2_red_inter_out <- capture_call(print(emmeans(e12_mixed1_t2_red, c("congruency", "condition"), type = "response"))) emm_e12_t2_red_pairs_out <- capture_call(print(pairs( emmeans(e12_mixed1_t2_red, "congruency", by = "condition", type = "response")))) emm_e12_t2_pairs_out <- capture_call(print(pairs( emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response")))) emm_e12_t2_pairs_p_out <- capture_call(print(pairs(emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response", submodel = "minimal")))) pp_e12_inter_t3 <- ggplotGrob(afex_plot(e12_mixed1, "condition", "congruency", data_geom = geom_violin)) pp_e12_inter_t2 <- ggplotGrob(afex_plot(e12_mixed1_t2, "condition", "congruency", data_geom = geom_violin)) pp_e12_inter_t2_red <- ggplotGrob(afex_plot(e12_mixed1_t2_red, "condition", "congruency", data_geom = geom_violin)) save(outp_e1_mixed1_v1, outp_e1_mixed1_v2, outp_e1_mixed1_v2_allfit, emm_2a_cong_out, emm_2a_cond_out, pp2a_main, emm_2a_inter1_out, emm_2a_inter2_out, emm_2a_pairs, pp2a_inter, pp2a_inter_v1, outp_e12_mixed1, outp_e12_mixed1_t2, outp_e12_mixed1_t2_red, emm_e12_inter_out, emm_e12_t2_inter_out, emm_e12_t2_red_inter_out, emm_e12_t2_red_pairs_out, emm_e12_t2_pairs_out, emm_e12_t2_pairs_p_out, pp_e12_inter_t3, pp_e12_inter_t2, pp_e12_inter_t2_red, file = "inst/extdata/outputs_glmm_vignette.rda", compress = "xz") ``` afex/data/0000755000176200001440000000000014665067566012133 5ustar liggesusersafex/data/md_16.1.rda0000644000176200001440000000045713664111747013663 0ustar liggesusersK0ߒnsQۮ"lvЃ =&`˧fɰY|K_WyJgxs._ȈcSI0bԧWƨRo2P.[dAA\1b29,*iBֲ[;Dܚteo_ WjY)?Kv;y枽I6VKcc'. V֪;x9@Kinx~ޟb9F*"۔^q><2~.u.B"LiVZJ+Z7Gafex/data/md_15.1.rda0000644000176200001440000000071413664111747013656 0ustar liggesusersUN@4ţGOM֓|֖n&MJ)+|@\`c4jDo盝ٙnG>c S1jXUȲ.^`Lm&6c5ac@NLAY\|0oG>y//,YH<78NA Hc O-yF;8<öd9s0K[fG] mJBhEABP% j2v+m{oZقDAECrI%hșI):XW w`/kɵnaB:y:Sk欟Sqݻ Iɬ:m}($3s?)]BZv{ɥ"\7I6mcN@4.X{S]\1ksxC K.CO9CZ<*kWeafex/data/md_16.4.rda0000644000176200001440000000063613664111747013665 0ustar liggesusersBZh91AY&SYLb7@@y-A51f$` #@1j4oT44D%OTfi &@h#И0LQG4DRllx@ꋯܫF(Kus!2HCtEQnn{3]}]W:ލhX`,q,`՝e{m=7pԦ.AhC7II=~ ) J9]!!wX#Ґ`I#H@B`@f4G[hhK'*eТ/%"ŭ~(hUTDR$"L?9}H\%! vh6c_m*7 H$c%^O*l~e;?ܑN$6<afex/data/obk.long.rda0000644000176200001440000000132613664111747014323 0ustar liggesusersYn@yC"B,#>UBذ$NpvʶF>e]7L_b7:bK'̝w{⯟!M)RȋG!g2]'y(9  +J (+)DO`mu^t+ ܥ5"&qD SoI#>FMZj(VDZ:)4uowCϗ?Uy< /{c&+݌Vz Csi@$o &صac +[A[g_װd~׃sQ =4>ʟMꈈt_r]0v+1c-.WU{̧t!m2v8Nt';v..P0_8<`7Շc;^sKS{_%>]T\\ \ǣiOZi)ס<ڹ[ʥ8(vz>ppE?vO4Q>~ڗN }ދT%;tt&(a` 4J/1)\؁j+IUϏƵf&Q١E,&nX;#%afex/data/laptop_urry.rda0000644000176200001440000000554214076011251015161 0ustar liggesusers t7` "l3$!$wV^aI"B"((` *jiRj}ZJQ@TA`;sNbN~gޙhyJ/Ll\[-ߖC[AYة5-ώrJ/<^Ih0N_Lc<5lvއm=0!.Az#⾾ȥH?e{9rr%2\!W#kbd0r-2\܀܈܄܂ GF GH D0d7A##QH)r+22!H2DR H !uH Q$đDr2LB&#Sd*F!HҌ܎LGf -L$BZ6d62iG"D涅"d1c.'nd) Y@~DV!!klFtkLq<㤁F 4G؝%𱆏5|c ?[=?=?=?\gI:PSC] jQCZyTN%TN%JͩԜJͩԜJMSjRӔ4)5MiJMSjRӕt+5]JMWjRӕ\Jͥ\Jͥ\Jͥ\Jͥ\J­캕]\wLz.mߞnhsa> ?N[Bq|x_ȗ:m_l|b|-Eٿf3W姞3ҭM\}~̓|+t^vŗ[v v%6\ݜy2ɵy̳[y6/VYBZαۺjӚ#qXcγu'WkP|ʮ>:nY/;01c\[Ck<лyμtYMIϺ5W%!8!`3 /??}DWn(8[}‡I_ >PC|q;?h~2eχSvCtJa؃_yCYO= *_youi y{L}_jׇ7ӏڷZCaC:}|tRV ;[-C~j3 1y@: Ck6UG!>T\/郄CP}ƴY/n|bXACF,^^~?y߰4uܺ?}"ϔ+[ c-T~N'[ӏvu ʼ|y;oGnYDD*Hs^x.3U2⾿3 8_bIg% 9Qýc0ԍn$Ys=7}uɫ Ϸ̔2$_ݓ.zs{|gO 2.]v vϞ'A~YY+r`B|yO=Z]h]8 x7rqEd~, xj*fWk dI JD-ךBL,W@d_T#YU+=}Ư9{E[.{i->U9 NԿgڡ~#݆?.qvsE[B"z RϘ6`y@T0_]Rhj+bl{!<.HyOq7r"eCy潏m3١RN+e^h?_X&_`q}8S԰M4m2;6q N%v Ȇ_հ}uޗˍ\AzP_Oy$=h"0V[0aT!ɨQOwCBk̢qS>'9;*6̭wO}7!$;/vJE8%{{w.=۔'G ?Tʬ:s~zP$^hQ^kg-Zoq&#^"Iu-ϊכOe g\M y|" 8HDBS_jMj_ װ-Mrث ϵyrܣm~s{:~oxkclLw^m $,~Kdy'6;Ҏ]0eafex/data/ks2013.3.rda0000644000176200001440000000747013664111747013704 0ustar liggesusers7zXZi"6!X͈])TW"nRʟ ,bA5;=+ӧ{]\g~⌻Xt_0%M&P뗂 3Aa]bUOKFW.񴅩5k"$Q,;HHisӉf-ý{3B Ms=RtҨHUe68uډ'վ %()!Ƭ^D I3cW G])S;j>%iJ;]Y ԭD\aj} ܼO kS5/RۋnE (n@y{6~{V5 6z<iOėa? g^u-pjMhK.T?s %@@gXN ez7)(XS2\00"~o.z *FR(n=*O/҆|N1:y9L(2% $45Z$fpL !. iK$oMֿ&A9zm`Ъ74\V!r,!oORȹ+{l!/kct Ӯ?Ԙ@mr{.BOxoǤ 8cDWt"k,_T@@ L`R!l j@: Xd"#h#?oHG&AH&ڞO!u>} paDQ:%pyÍ^{eh`;3h+\4!"cXVү8 G}3+W{y_`p$eMm>gtδ_ 7u?p\#I}4&MG&CX&tO_?RAAօHSE ]y7 B8.kTO>b+rUㆿ|FYIvE}EmrJ }Ewse$7U 6nhpF* EB}`yQ 1v()sMK}Iaw>CAR E5J`2= /ÊLc_ȈӵQoU~o7B%NjS|w&Lk@WTs3$( W3`OCAIVHxusB] n5M Bf^V%J]Vd3_}W):VԮLdGϱSRH5A>_xKrf%ʄP* A\){޿!k)ٯK*}-3lN1GB`R#mkg{8~P,([AJ%V]dyI)ok☧܅p}#4^[Z9Ujg~t̤Ml)G%dob+=t}Y5X!9QR ܊gj ?l(d\s8Ҋ^ ³ DCpMM#?jAIq@,X5PkG5i ٴ#U۫ sAXY8nb)Xڹq2 jc dԱz1˳p1cŮVbq,ۏ0VӒ}ӻ˩TLPb&ky7 tC䂆o$!ý#14/7ϙ/&(}V5G, h՜;0MR)c/=2. BT\AS9(ؼtO1{t]tQtzy4!6#ڿ<X"/IvT#?lhdh$)d-̂ꃑId{K:ucOV Gc=BǠ-BS2@G[#-J`ˣd3ed)?_mNs9tݹOrwhOFeAD*Kgr#:=---Q cė(`s"wZ9I>eO 7/0o"#U~: '}.P4- CCA|S^1yET hٰ^>$F޺gYI~=ƛk~Mn{$CQPy=+)q̨24!0׽l ˼ANxIt#6sSlFKb*Giy3# RdM>0 YZafex/data/fhch2010.rda0000644000176200001440000020611413664111747014027 0ustar liggesusers7zXZi"6!Xh{])TW"nRʟbl$SJ !5?;cn45ӣ =́Y?)Q3wؔ_m6ϐ}'[ߣQ/'Ctz+腧lB8H@br| ikRUbk>t!㻹¨.z*Y[ :6K_a@!CH+#JEV/m7d6?,eLNm.d8T; :5Ir(.YYbH}Al-5L)V= ^c~*C?~qd%< Qcb5s2g CIcu0a}p88< 2ƜVRr#h^>釴.r~~{ׯR0/x*8}V*:F'v7ogmr anNĕ~J>\Xb|6:*.}_|R*')V!;lp|K3WpbZ|UC ]HhSʙLT̴K/'%w ې^}&.`q`dF,W5$i4[V"g˅P:~l5٠ r𘤀GQRI\PmakOsc/؇8)-F#) !u/1*8L1Zv|"3PEM5~[ՠu: O0b&?. I3b16ଟhceJѷqh5IKHP[mfK3Ӗ6ѽgs6.>s"UupuB :&o ̜{1XT56 KCHsQaair7-L+jb쩞/ɕ Z:tOù^{RCʕ@yTsuN*Sl*;{:]EV狛vb/=:,k:/ؽϐ@Y>ʝMy+T-S#?=31*̓:oKip )Olxd4}QXm$^=cfO[8 gt9Nw^bӗ>a6exU)b#x e{4#'`ސL9 6# 3S7/-72fqIHXcjOuVK%(#|HCOl.]GC\SC:EO. |8=,ց+sCD",8n+rn7ec~ݰGP#}ՠfL\͡+x}!䰱k{&##wƖb|7YXߍSI2oDRD[ 3DBvFlʄSi~Mz]Tgݚ.;u%1;)AMcm39 IÊR4؁okt!; $qHfV 'C^}/1x%Vu5Ư1ARt"\~}I(Y\qԙ([r<ȍ\guzQ(˚+ l*W{̞БIs$J9Z9 VLcY6H5 û}S+Fu kfLIS' V9wniR-Kq)F+'7Qz"O|7'6!3ar>3)ub X6I5%e0YLCI4lb^%rL[9l*O#R-|Ă˳hofAEي7sEW *Ef43 YB4 ؁Fz⅛)S}d뙘}ۖ{-Hs\ ce&ՔδO20>=N4zq/(XwJ|XA ~VU^XnÊTo9ʡ?VM#SSlKuN(l6#j@a 2q`B^7Q٤@|LFm/Bfkqs'uIA2zRWel Q tzћa/!,-D[ۄ j IDr`l?dyF<#;K h9SfV2y9I %gO]q6$];ݟFJ"ٻ* e":{&YPjƧ_]qj6˓uyb=Q$~/댨"0ppv S_jxazY#BG h#cA!m\ŠR{m0cM p_Ly[}(Wp%\S:. t8VI CF}^cZ ++p߅C[xR `IŖcZxg<0f])61VR !k{AV`ͣ )e$ARAVyf˭\yt4g%̠8E!T_jJ%fRe2cvN ocǨv:('^ -NZozĺQ.6X||[݅3%I?2E^t!9wKNnF=̾aZ寸,d )WClx j _NPb r4r*w0|0mN83bgY&Cs2;(ZŀZAً<?ٞ$k֜"5?6x%?gE?T%U#AEE^k82m~8'9~6dYB[cd|q|fߛ<qđ $2pLӑkF] oSC[ 7tTu6Wwq8 g{.&sL;UZP1qH6Lboe#́C $ywzH@m<0)XSZDyμMx1 MY4T> zp<]J6w?5i@ȴv#&Fސ!n{umjrnh#S+\FfhByl}ܱx粏}e7y(Zn­gO11ܥ5oBw NT+<&9^;QVr^zh˪ZHnoG`EDj@MzƨDeٵ;cYdk ՖG2Mڒ9q O6F0IL%!{x?\2Dd:5"9 D3no˜ƅ^亄sbθBH~' Qэ/D&jϰ=5p~ѺvύhknLhl~v\ Wr)- P/0 :% uJ?Im7L$}JbͲGgA2 (weWCq5΀+Ez{P]V}m%[GIi/ =f̭2i"nv6^Xfu-@=N-u'rI*JWSAc>YdD(+=is j _` eUw97+ђ;%lľu2q9&s95 |+Mپp;zL92Nihgź3ܒZZR1j4@&LdB:sJEzCU{=GpYl+ ȕlEfӗNvc7=9[hT+#*8#_U]FxvPڥ0sR[We>_D}[hD^.r2*uЍ{lēt93ĺyRÒ;[TΆyDdB.dfHK}Cc|gh7SdX3 EnKV=& N M5v9%}:^ @*0I_GdpYt!'aY͂}^)Nc,"o DdMEx YLמ iĐ đ52r1z[98ꌻP>S]gY <"j̣ x$$;%`*ҚHATw97+rwURhQ 6sQJȪ*X<z 7Zi>C3L|@zRHU-{><K/vX.0^MG竜v8jߧ#zBP~6 Y|& qYUq 0XSaq5bDɇ,WwU| 2s{y`8=صZС@sanl|.Jf9X +oУ#R$Q076[BlBݥ6ZlH|)%4_1FHdAV20fE,!n\!"T7P4nonaIZgvlCâ-/4cG7I~Y H|;72%B/ Q-{( Gz߽8e `],tn01|U%Fp$\N.FP7Z0y}4V#P@] ᙿ ^r,(^]%e*%j{#]^  Uwp؊C(c.#'\ ߄S<B Dp~μ?qt30;`PSp[ KqpfP)Sp&k*zt{]o*@/9ꡢݱ1C}=j{lW׼wqj:>ҕeXlM9Ww+Fv/h{9qǕnM2GQ"dPUB?yݎgC"W*jB'|TUYWn w2(eD;ت[9'&VwxecTb<bF^}6@VfťO3Y>&"+]G,7bi^CrO2˯hv'lH"Bv O)"8l.Eۭ pt!؈Qj]C~f_54pW6X Oibpo& "$'Y!O]uXxaa#"FΌsgaT0x pːb pxEzr Abk, cH4TOUQp}`V 7 jDLDk e-6߈__{ΰm9,h*ۚ2nʋuTNM wR3 2-#iق3%ᮆE`4y9^ q0';2n - d6hc T>P"9Rw*E%>G$[h^E|Hrn:iaۘq;+-9>P@g9KM Y$<PB`3W>Ctm~J})Ug y:LQr>k Ha:C2sLp0#O\0*%DFZ{`~E/cK`mnϑ(UݕO5/ڥqfmaQy/u}TZDrmoo3GAAd!>fUK%- 5Yc6Ϲj\Ic=|yx e"C^:cF*R%;#%MnR:͢N$ ѧ'{U~(efi3@ X; zjsU Ü'hȍaƛ%6/JjIAT$s{F"VseNzCGͪ gZ~>5|L|^;ʝ;I9:z'˃v\=j|eCy~)A851;M.Ϊ}v2&\Y1ϲ;V@ /{ 2!1ޝ=T~ t>0*aMa=`g%AB5 {҄G"Q*@RJY ߓF>| n,Jͯq%̓U+|zR7x;tp2; Y428#7 ,7tԺko8 ʭ|@cn0C=8ksv2V ThZ6X${M5N@ .]z52%u`RNwzQ8h w1Bg!! trҥtu1uKqC\n;ޖHR.<=Ά|'yY}ƒP, ٝ[ўxwk4c `s)Gʘmpkq^F>7r}վ3KULAUL)i9Gd|j͹hKL9ߟêcݟ%ik$ 'L.rZlb% X<9%\Oo*>\*h!5R*=wХ7"7]帾 ѫrʷ= M%Nzska?Ja\2i[/][%q5EW=WA4}KsRs\QubUI@t3;o6mJQbqB=3 +UQQ3tcMo^*VtnJp8o67gH~(xK0IrvF*xogO*<(dX5@|2Uf(Bo%A{_ےC`/J6z"Ӥ0u6u+Yꡎ /%VE o!y3lRU~NHg 7ZTOƹYr,*l}gQθMA N"c ,;5AlK3$F1cR5r,v1;X5S=70kun+&:Z%(rr` Li˗ e`ֵV4Q^TCZb^G`ێR>i"wyRߥơ "0$o z}rtv}'DJ1& '۵͋FIu 8nðLpdMV+ܳB#F6TMо"k+w?vch "JQrGНWnۯδߏ@|%S@@yf7ըwszkc#f rQ=ik 7H S G2RځX = 3OaA 'w[yp z%5xƻ %ņrAn ~|…2 ߪYLbNxU_ m `'ՋJ5leW#_Y6EW0 xi6LVfeeD`)Vx~vȧ.N.- 9\^0,6">O8K|L0c\s:H|,q"bt#({8 ~0pZkהQ0x;D~36n[{kjm0`]xMaC3w(ϣr:%fGem 9I/XQa1Μ6ۆm Ml `Իذo_=z}ӺFpZDLIIg/xX#ЂLº;%ގyYꇊhbʑ " q]/q#\bΟbR9]IdsQC$N<>l\f n?koP}W.J5?ǵ\ᅃ ;x2'gÕǷ):;Jn2` -Ћ'x۷b۵"vzSi)mWuŕZd`ojʇ#ȝ ?4*Ւ5:_b&ͪ p0;9i?"6C e!s#Zv b ƜutGv;XnlC.oH M6\'mrN0Tv0WftZ?hM,U(omyjtYY('z%:G?RL?\7v<,(4` (WeA-pKx/"Mǯw>??h=|OH?+=W*%y$GA]v3#(LUTԀgD5A*&+Nh0A sȬkxW 8^[P˺Bj3ɖ%wH;l $ܥ16J /_gwtbx}V0EAw@CRX hΩ /]|,m`F`u< CK@/~>Bw]zKOݵbu̾=ŶAR^aCa;ϋe?{:]utX[7N"@Ɩ4?,o͑a1 T3Q~-KqJ jL~ڶ4BD=`O GI`U$:7I<,Rؾ.zPHLJ9ߣtiX@X,.8 ˻G19˜'Ą[oht]+uL<+7q8X5HH)%vaR0DGq*hZAؑۮ-i[O6\^GiFwu;ud& fid;m, Po([Q}phCHBw 7 6 mR*V !?B h{3QUN\8B!(qR]Ёwxl@J *f˰~5٩)!0sY{yGM~*<4D̫X*i*ɊF#; 4YTV'/4h"8#S`J{"u7τ\T 4`%_廦q^? 64x٣8YK}A{9mX Rc`ј!.|e~,LZ[np@YzС9E^xN!Ōy*7ټ*{Gr`Hc55\oM=d)Ʌ 22bE(joq |&om eE~VIF=y%xոf9$êӋg4:"g 2Qhԍ ڞHaم6ke䒑@p-!"Ib0LPxլf F"2 Kr  =NBi,uzs+N[n[m&:jR(>qRc7Y>Y"<[s`槕mճ.3deebE v<92r bގ:Tב4~~ڛ3rSrNN?+F@~U#f>(+Vs(bd)E j p"j $Q;[ʰ:sR3%~C WEx;[M0#Ptac$ǻV_mR3D~Ic2gbwnUc@TjJٜ%S|8uuݔ[c^殥 cD}O"1slΑhlb3_GI9b*+ς ΚU[=M]ɦ4鋕psm& !ŜHM#ԀʺL5ԘęE`{@ cz^F(`YK0Oa^LModR Njp!3-wu!*:ɢO _dg GJтI[` RH6);$B>H7pE B+ӼYxY驾 J䬮+}SxjmDF&y U6 F(8E;n_SyvE=ܶ W&t12E<]A1,J,ݳt_T]X81{L̚ ҇ZS:\kuyK'.t Zx[p縂Đw7A#q t GX'[;W38C1mnS^orH.%T7FQ */\e b}@*IF!M9A9D}#j sé'j"FJYkYb?SB'Ǵm̩HfI€Z4 73<'^%oD9[bHӡ\覆ҳh ϕva ol>F˻Ԭ;Ѕ31s gO5÷ lUKh,h@yկdJ*zL;u}XPho  oJv@m:7okMEICft0>N 3&84H0 CNZn/>%:~#V(ϛv'_0#Fp2:sDFZ/7tIZ+V(j?hM2a`#XvΓ\0 קmΚYXxUzµ9W9UM -xx+J0s uA Q?61l̚%4h0Mn䈍4ɊdB ;JHЁcǜ1R*ZY.V ӡТJC+r1!ޞ M=u ei! Z7G%H%pJa&dw+j兝}PO|+IrDɹ:긖$ڟ+ɕ5$FcaJ+߶.r&bCN=gJ,c(f+"7*<~;į?#<;T 0d$_K-U&f8̕/u"jC7\=+}rbXT5% o^om@}wpk&ez~LPG|r* 8Ǎ8 ( !G`~I3 "ѽ/\2(}ӣe}n߃Z,+z<4J6!<^7{Vڮ"6x >M=A>qA1ž,|u[^Q5?}C!Azbu>Zp7MXlFM;">3L6 %g+5ihLH*(hJzrLo3|@"T|h Ů%,&zЃ8ȁ6fҾ4V]voSh+hk(nd{$H/@JQnj2heşvQIȣ%s@Thd֡H0tG6Я2AКɇv_ ?Gg!B[.)`Q$ě>gMh/u7X>hc˂#|-L E1U~z53|Ĩ"# ^^m0Sd@-քm^ޓB8약pdDJ̉<1t'J>;s40ߍ2Ki̚h~)Q=0omRQk c9?E^%b ,Qq&oJQm8F`S[z |xZ)O‡VH31q1EE" Xs9)+ (J"Oz!}&B6,is> aQhgr8Zhސg٤ET '!-sPDB6%]iHQ8 ]wJg$@bv/e/@YŧXO#&G0rVeH?O2\ZGK:?h+#1*e<0Sυ}@6q$G Mgq^y%$bDNC%+8JMq*>Mw wFNN5N~ g~4(r$vOtv;RK]%L+l,  i Q^s߳f9+1`ތ_dwQWI|>JX-j3M f=tZ3{#2~`Эbb976F #0Yg|%aoda/ b“V75S" 1܅0 (rX$1F0΋=pQ[\Gf5U3>1$,5Kh #?=MxXozcP nHbz_:j۞DL}ZXZzcb1^]Z-}}9qFT_"G8 `ekuÜۇvT,QT2p`{8=|8 싗ިH /5"U !oIp yh-b(&[y=zRH:dHEVƿ  *e}>Z*_7?Tk=zw%cI݌nSל+ η6]cV\kSf7JQ@tj\| %=D}ȯs##q9=jxYl8}{#n)̻ީ \!Ӫ;"=n;QxlLn=KQw~`-_&=s]WE:Qai|OӤRye}- Z=OUK~Q\Gby.%N=fw<20^Wq[_-dZP80@ C,S6yh) bkCHE϶4:Oғ bA։F_p*_k)arɍR8%GTʆ{Ϛ,{wO!_r:SKqD@MO(^*Գ֩]d(*ׅ0%FOkW2!$Pq/禬>93 ̊u]kA,Sa c9(9yR nPkn%̽zfaX2n& 0z&҃Ũ5ft6$K(}A>l .ޓi}m-#Aig_#s2KXiШDUWU37)CgL%q?Kl,,XUiK;KpלA[V6JL Gm|@i@ :ΰy8D;:. ߍxNWô5̈́'K_[kwG}':>WD v>AS>@izߨ{ k6QFtʨճF lQIhw@MR Z%p;1YE-ܙb4l\F2sZ>qɣ(n,W~z Cx#J95zsk0xy}P]|s4yuJQ5j1"M0=훫62% |TP˫TfX1% E"ѶwcG Tkn Ƀp;+6+SQ>Sr aTJ tekaj8h$. wN_MʕeЇ{>g~C.E4[v=+"g"";i+)M `1`Ba)ޫ%bIJEȲ5 Q ^N+NDylLE #wK?$ #⑛gYd硩еI佹)bMͬqT&{Z$ z8N+YRLBY68AJL)͎R>\wrNy3+n1Kn_{!_--Q2Kj~t56p. *m5=Fd7*G|w%U-'E )'}h$- ӅeS{aS*"U 7 ֗.OLFPc!Wsj* :u- X0EL/<PBڠ1E8zUy  >֦ե@ڴXMج+϶ JQ78\iYDHǐNE}k3xn= ^ש(J#aI^$I峎7p*jO+nJ2(Qݒ/tdr?ZFaPV)Z12FZ!³$Z@_VPP8f50e{O݉C+\"h\a:A PA/}![-`J*꿬T0C1҇BTԘ@ULaC<:%$yPu`P #P[*-]LK5cc" 뢪w5[B:Qo9R3{ +wg19Xt{<@gnrƻjEUBKwGWFuRkL"b[>; T7jJ&e&߭V0NP-xB1$6jYk`Z#ݷHхf&-ե xG  澹#Cቒ'u=[0h;NX 0Y+d1 0*Mu\}ʅAyFD-H>vPI; 嬀m3}$aӕGxk"TU@hRCJBP}8Wlt$d0}A0[ }m0l{ˊc`ev wXVr,jc0PX `R99zDH<oɩ[ìƭpXY)rnob6 aӌZj@`$s5 c 0}`Fߞ*c_UBA:~4ucRinC!1,i5LHޠ{3aZ܊ʩjw @G"DKRUJJW)vQk~ۢ!fUWaxs*O 7Vl7tog~6fDxϬյ`ÑJ֠al!.S(O"Ax6ҥ6݁l.ꞨNgdO8tS5r6mNJpVԗF>;TiycEd{ىR$RuU~oeuoWY&=َXxgm+$8{ &d"4&p<)<)VM5\B,/ck$t3uSLՅ;m?#^9[8%RWi׮e"~)J}4^A[ӗ}cy1'<\zvXtd68G'-K 0/h25n`@$eq@ DZ(j1 ws.ɚŏR;f$.lx.6$8ˈ=9kU}k2-GiwtJRώIh_%p t^GSBU4RQ|Gq}-yJ9VmW3NgfLc)k~zr;ɊUcMm=C5iF{{jlpXY  ̬-&ݕՔP" Ɩe-T7챎6-"]S|x4Mxr)b ' !7Lf ÕY6/葄 (OPp2]NypJ70ʆ~_N6sCܘ0b ~}ǦX/ip1p$ړ݋9$9/)H) 5JQҮRxܨZ|,AV ƥ)9W|\ruxԎ.[>c  SmbT~V$r㏋l&&mPC3 u7BV<` 2kAN|oKy?hheU JInDog[beh́i$/s oCXT$P 睾k(1սoK^ɡG!@ BO +}2Q_x1x)b '/]!x ݠ`"pL }*Swn̘L4ce, B1l^vc;9v?mh!y(-YMB~hnO|G!:Ӷ^2E6?Ti~x,}הIJ}IkĠ!7مۧV> ߫u^8D+:-%f_m5W2/קM$./Bw* n (3 e MC^)Bj;'a^Ic#w]'?PQ|1STMa/L7 !쇿?!Toi7*bԼ3TD7!pC[}? Kc.q-wHn\Gqr =y+ Q{Z 9Z5E9AaB>,iITæ1٥}?ql=)[4$mwd<-:̼;CgnkvC 3hLQk@|OĎ<I=U{ɒ=)7C65&<[ -ܕeOG˟X/6BG,ҁRo~lY+^m|]|c[QƋq.hǨKZ=e,M%(Bp8m6 2DU6H(xl`-wN;Uohԕ~ZM0#58t?3 Hb  +ohYwϰY#9$@18I΃"r"Waizۇ VՒ=CqR}(ƺYqu'5|="9INo 組ؿ>!3+#Qa+VT^~*Xu5NJ~adW' ;Th4Zʸ%E~07DK߲N+?,&JFj,*JrDT.ZpW"wתa_!~<$Vϲfl|CgnmA[+u@@=?XJ{j4ctAo^ztFJm&k BEr ,ɒ>%i4|/{Q{@Y_NҡZZNi{F3fk SvJU2bC7V[,>ʕrRߝ~t0_%Q$)dF;Bj"oL5:Mso~}d&ENDYְqg#$EH;u( RcOl+@7 GypВ+GQbY!-80 >7g@ۖH zϋrrl9Յ+35Gn8K+S3c6dmbG>d+Of(@ݗ]8c@u%>PSrz~L𩖝+GC4;0LGsW9R(zCep5Cz#W:l7rCn)ĸ]"jN/7P Ϥ+.woa>?}KE頣 ,QLmNoM?\hy[!rTC5(fxYٗ?⛋LF`7@$tg4@A{n~"i\D/NΙᇉ~+qssW5JL|!ᩗW|j=ʒkHtX=JICy5wp(ϯ4g>8![ 6fp:j)('8k9OTMb.Bd,svsދi7濧g=CzAYsN75d`Q}r3{,Yg m2iO[T[;{K`@T Z+~yoe;{-߹'KaL.ˌS4LFߨMk`p"TEDc?`Flx1NjZZX #!MCsʨ F,p8xh&֦}|*?r7#*'P#28WhiWCkҥ'=>Ņ A1{#gsjGO^! ^:TVW&0 V(amQ6%"}*L7ϗYKSi6$$z[B.B7@nݔu\:£}L|,SYJ&ZQdPҞ~;B _VO >*~zn0{ep (Tq?LdL`pm6B ?BrGAM4g~%/|U;ަQQ^'*N)c&|U0&i@6oVM[YJq|T@`>?MܑEզ%Lq/:Hw0M6%d*q b|x>VԥȰeIɐ_N悎)&6>0nJTW teT͠(s#[9.C3 vYJmP\#T TL׉v7]Mm6r~^tL6;+׳oA=\Vq676hpJZ "};Ņ^y1I࿘тyZf.R7pLh:IS`)?R\kPww!'`Ͼ=]cEi}h`~BQEl"~n]3܉{6;}&|BAU( Ue@p95V:up dfV!>}x۹QB{G4.q3ZRGl~_V'gVl\`؇ߺJWƀMW_% uqƾz7wwɫD S<%H&,̔)gϕ) V B{l/#-*PUO4E3v'z'z E0Y1Z;R:3-6o;՛-R@9ϑVo M qJR27f_>8S ]RtWfV`^6pz" mwd7$BMsMV!+0o-ʹ2;Ļͤq4W{K(i_gVGlө' MqGrʁ'YKopiZ[ym"ub汼)K"Z+}+M୾Ѿh{'Vl$(@YgԾc2ڡ5ƍ-+RȆ}Ƥ;;!tu}*edsZ/n/.$^3Kb>^Y u]>Jk ! KD29#=Y"C msl+ ܡh d (vjh~}@LU"A4ԪZa揂_ą;L{̹- {S wAF=؂2eЏN߿"*Ѿ1]1)ߌUh`$בs"]aDA cww頕ùoK;lCDkSqinrSD e*^J)l2sU5Rڈ:_31Vmjl|#Mr[$ Iu+(9*zyQ7qГQ X`(u`$Ήl,8@XOH5{DV3mC|<¨UYA 5P>c6QvClX¨ifgh 7UFdv|ܿhrBQU]Xi$(VF.t &r@=$Ae8UoԚ7ThzETtÐ HXc͗[/FMgǜc>  h{ǨP6ixZT? tQKoarM)/Jׇ8[da8 Me-L\6-ԅs>?moa2=|Vn_ddq24KAqw5npB`w&E`8ro!"ye,[kG?). 1>7 lv[cH;H q8fBx+4|g0/}F^}ZVՅBB?|͗{E | Qq5 < /p4H}T9L(q~NP̄i 5SW;8RJ0CdM(*:D=nԘ,T밀'TŘ#$ IHIMwp#kc$=1-Q1D^h8ۭs-E &'QPrxu8_Uiu!o0&!(Ֆx8ퟻ>I3PYCٞ{BLoakI;;{@ל}+|6._4Mt`lM#F4se"UTY ]w Cxj˝1e85*J7D\ v{e ixB%n?{׸:&N"rͣy()LS By̺T*{Q^t5lDAc{h %Q@F\3QLCr3O0 ML>n8wrü"Jڬ 9uVOlЃEc_*+:{NisE*V,(g#,Lj͡Ǟ+cѰ)@bȎJ3L .Z){8F)\j6w2@)4}"DKQ],/e'B@,7,8%5ai9ߌ'gZwK#V!މ|EuV _<69Re?$JFW[58nA[ƕ#XPTMEr!Ғ (,v7JʽbL ?_+7izjG\˫P\mH.@\ND1f7-v\:#TtZ+%Ө/%/aCE: g9&],ui|k%+6w5[ü2 M hM}Dpz('4brP+aҢ2sF莸-|IZ,Xd) Q_#1eulUa |9;q\E{wHp&/C&oaj0?7\ӈ"&`2]ŮϮ JT@pP}qy,{ "kQ~#_#7,!c׵q+n Ar#nʰ#Uy-T8W (}rn ڮSDQR=.8Tuj8]PɺA\4%|)t8늾id.KēKL5ZJkI ֐|)[P~Xg[G9ꩩ"_@g@3@^ܙN%0\4x,BxGNު-EoS%K׺UKw^jwepM ORmߔ4H7,{SF_2튞{ k7٢7|jWO~ Fo|tߪ>qwE :`?X6.!p`\JeE>Dλ8k' vV?͍عAA zJsm"I'uR}0EQ${-h*0v8ˬG\0s3BSH++"kt.,o\~eWФ뗶|*JY--ՠH!~iԕ:+% ngYJ|`ؤq' JMh`=@^;i=mq7s|a*r6i),gܸ֬W4F&cG_YCszݝ@wm\?NYuߞy Lt>^w ;xIuXb"`t-W%<:^ؽ6;d>8}O,ҫb}f%zuO׏q_ PvR 功mq.䳡=J[qjb맼qW_>O:!_<%1 BKY$v%`3@rF v#!8kX[ѕsN{ |O ƒ&5@."QrVV~I\:!c}*()낽J!KZAȡ6pQ9[8{2OqQ@z4\qM=IG3%y8=]DVHRV6}*@Y+3a)KMw tDЕTMtO\L/^,O3tܵ$vcgP m\:xjEc'M2=jKƽaN儕tYr&C?q\Hj|1g' *4d'qFN]xobR9.#rM€f 06^(soMʊr9im>Aڙq/xQB }hr0C(%E8-Wetinz{ lOɠ)/umebu4lގ.[ᰘ%rr^_< se]9!.zD񺁻*A^;ʵW/5Ǻ+N0. i3t4Y̓ܣ6Y6S)L^\-=ChD{6Vǣb=l0ͦs)o|rni* 6Wu'.,b照8)<"R|>eBhM0=yV~9_3h_, 8S؏0YOR"#וصPg θ]&RʌF{6I15"D\[ O:u$ Wuײj襑Z zVQ8PuOgߡutʕ|dE v^:̯}{u"?xyٛdo8M+W0%& y)#ْ0o9p5yRPKUi{hkh.Ve$%'UH{(EZL[ 9c: OJVC5DmObܟ ԂɁ;!PUy9ZX<8t*D~BƘ@UA=[=Zhﻒ!9Vh3gz}́gNVD$!9XJ1mAlbvմV}*Hm,Ϥ@K?%sbpbs^Oo{քZG2URcUuXM[k%'90jJ$e<('_Vۀ=&+qI jDs <~%cMy!@vwFN5jy(%YzlƖԡL3 N_Aud x7z&C@[53h,sDԀ?6`[YI (E+(ZjԷU.'{V<ͯ HR1,p{&F1ʄ ܕl'Ra1P4&f:3bq[C1ޥ.^|dw]ɼ(;~lN;=l?XmXL݃n#޺-xwHQw vሹ_O=q.p`~]-R]fb s$˷n,"wi+/_ET-v.![6=t&v G{VwKT QN9yL^_M,UVB7#53M83_H' / 35"]xX>^#Hy?X`.Mswy6ZՐ.Uߋ6p"M'e][?%KjȁTvR+qxM}[yZ6Sx_r=.Irɯ'"aҴB85oiܶ*@-؎h=ȑ FN. ) ᬘgT|U6qy*&Z\pf]xona0o3\n(O#hDLI==ԉ>7JH9܉t!9Nu))(*֕l]!iqla{f%JAeee?ғf?͐] xT{PBs KˮL=Ow34"˔*?3lL`G 1&\ O;|һqR\-&IW z--7g^c_~vܗ}MH:Ŏ+ k:SLfr#MPv-Xʃ*II{:y>}_p$Sk:E(dCHC>}]^l) qw"?cwU-b&O0ͬB\/Jr_kVw`dcvCdj/]ગH(ȘD5qǒXiE>@:TB3$ystM+gZ x7> tIeŖ1j~MTwY0"c?7FʡƧ%IQ.WW/;vZ"(M "5W$nF3K-V( pܰ8 o]¾j۳=_@˽ {_)fc9pq`Wi&+{ .(>b&.:oQhuAXc;  CvK|O@,I <;.)َ]/#w_̎F̳/ː.)&?ZUU`aߐޫN"`tuQ<%[BgAhKwJ7nE<@lecwGJd`L9G0Ww?(]7&vs;U_oĕL1NӠ 9-ʽAT:%M&>ZBx׾+J]/2;l3Vf82tC/wvw`O$?XlFHGr|s]"\VySv.t |^~ӈ h#oo@Hk osC&Tׅ WQO[4Pm8׸ThZ խ.fJ|]pS"Kc#;T!D~ i(J] 3<:MʩB wϓ?J&͏tT;1Es`nִ-lRLb!L_)%hɦlX;c^髰|x{d^$$<\CH=\J B: OFpG]E[UV;;>t I/y-_}Ziicwjw],R ;mga[F+BFEϩHHcbH*WrWWމ֟^vl\@bS̲cn5b.N&oyJ8{](s0M*\s#!/S`اQۏ_$H;(sp mh`PFo/bFIӨ8haLMl!qAS6+ɹ"a(rZ4I mԚRgJP0ɝ) 0{:WZrSz(|AZ*_zC\sŸQ[!l񬋎/󫿾\" (]%/iYg.ѽ(q|YZ&s &Q0F`MݙzjT $fBCԳ {z *+?XzmŰeRW<ĶY~N;GK=x"3Ofc3{%I'(_qvp.-̈́ցMW7ow˓YQy1iwA}/(ɁwjoKT3MX Ȓ _iL2T+k?(f_ Xq\rt[2Fk`yW$uFDž;;c~ARa$; 2`JzW/6abQFq&`꺏QJ,6'XoCŷ|ؑcI( a+'^eT uX#V ʩ#sw0 ?'SbBB亵EGD)cxȭ1MzgmӯiZh@W>)bg[1Uz̒#&6^8 Dt %՝N-A-5>kB1M^%Tjlr!a~[;M@#MRY@Y N&'#SgVr aPS^kܪ (|_"8Q)zUߝ Qi3/'ׯcbmqv_B|&c?jz$eB|t 6BRs:ئs*Ok`"+<0ⱱc N (j&8Y܅R0px#5n(I`Z`c8 oav/X5IOt},чuԕH1a7xm=5b_*_nrTHlS>}NZ1 =/?f۝?C@6M*f1@ST䎋Qb[!\hEQ8IUWbK. Ykt?B,՗, ۧ69|Q *:55=ӈُ?RtޑWy}#^Ka~^`ǡ8pD,Y8f=Ny3#ua5$K:HyR&p28$M9qiZoc)xRf-p}8J!/ /JHtet5LUkivP&Ы]ISm# A~1l¿vL~+]{ 1*8sw;;-zEWr宠AҺaHHb~oYZXF)辠ښ5 'a;s{[Z޾#d C<]Ⱃ5Swx=PiAGDf\ RVxBŔN$Ws\@v+FB kF2'A2Ng5g -)Ӽs.&L;@\qhL ڴ(Sfq(:S04?%Ͽ2)0A">%!ǞJSe04 jVڐa:Zrefai’(ELKmʸ*T"`մqz7/q|A^ :wCX=ܲzS+! xjeg,|DN\.UH3Z=TD)ZP;h&9K6?#(shsxSmVfMoFp8gKR %4e\ tk6 vVFG,&[%03U=Ϸkvwi T@ڶq#;]srhuGzs:~hBȔ-g95 dW6/u(wގ”A +@}aw'G Y~QWM_Q` 4c,L|Vuv/+92*whi e`6wяS^"$ݔAuyw__FږcL,(\<AZC8g~(IGC2.hX ] +Q_3)[F ?w^̕iTG3*5~Y,4Cs .ۄc1A#wFɽtvkحg@{+ $amJ~b|/]4x k}>7I@/g E5Ipn][%67QTQA)P (jo\ZJ~ T:H.둴#1b2L͂xW\E<@4?z Ӓ2 1vZ9M\䑛I r+XϝS.O}0L 4z"#hÜ[S|B_U?ط|^2mh{^ Q3GMռ †<z/HYڈdBGCE- *EYyqF#R b̠#U;U?&6qgP<*+2f;][x6az(4" v靊/UK&Ę^Sz#֍2O"&Oiפ tt$SM܇B$1?=RQcPOL<"@U:(J,fSyͅYeuh\=@ȝ5M# 9PV6_!|{w%{yll.'liQm{Oߗ$*wO9g)cCqs@c#ۇ/Luc9DnWZqy)9M ƧoaK1M,Z9,Y%+5 9R,D3XG>ftV95apAexq}zf/JZhbxzKeB}糆~WDY>P\ Ydx]AꮡF^=Ks7$LSSߊ&-jL7j'}ق;1[oq4{ƺ. ! h-dM :Q8f"m4 T?fc VBrgllc|gR&4v20N|p'7d\cCpLX58(4:#ZdeiSVDƱȜAntd⪊ JBuap_+(etn͏1D\>3XuI5hvBVRKꇼ[*SaUHF\"bj 9_y"7{^F9 0|*%srݵ )nd(!1˙x ǦR2V QF(b(JkPNkQQZu#R? DN(=O(VR0\$X}`=S| qEE_ƑAT߾axR#-0?j`+}=mRt OXxXZR802dW2Tni-9_vu ,*ՍZ蚱0q#S|Zڏ-.4Mǖt>5*.dk>(m_B y )(,M_!>.9'xpՅ]vRvnPH| \=I[@#Ss9 0Qxj(?pŢ~'!zhnZVL掬o\ }P3NJaak\;W81{v 9X"}>H PY$ *16~Hˋ Q@lȣ;W&6 KSQa.YƩN]Rᴑ&Xwv8swìz84t2Jnt()%0Qh]P ]jKXG c ?;) '{5*ٱuxQZu~6xdʭP0DԩS3lxuՃ]ocbV [3OBuo+J7ћb\d. o (Bw ZGo '6;`~#L,ⱦ!k-@^4uJ<<Y#z "DPp[Z|#P7C~ nkֱv"5hM$3ش+p9'$ Z|ҢOwmJ}r$EAcYP>FÄ~͗+\$}t'Ż)s̈́Jo/hZ>`!DYJ3p{륓,$h AFn`}BINf^QƓz@.\VK$ʥ .cy UAf]⒑eTBqh32Ń1-r?> dЕ;+za SbP4@ԔMA7Ƽߨؾ(ew_!ؙ7xNҟt`xJuc|}<^T|8Qxq_!!2ܵ, D+ {ќ~ȨêE0B+1 [|HN4|WQa-B=v{Qx/H`Hu=1ocڊ#Y{,~!i@n+brD9raxA ᐚD9- 6]ýtXBPyh4}'^PRp;5,q&6ЀN^Oy i;@CZk.TʙŊgu,3BUyQ' =· l[*0>VGKŖEL.¶,U6YL_aǟ/сmhn 4`* DN4*…{jM48#' .\y)/F~ pI2y:OF8`D.Ev ZNrR2~C-ĝ/,XMqT[e!@6V C Uޞ/Jd{GK.JLr,oGK ;epQf-j҈v,Nx\bzJh?^D SLFf4s:=t"J yd +rok m/9F1Hid_T!5\~pfG3|CűywkںZ/L70v\ī$nzo zH~X <WWU]Orc,tuYD#6U*\5e*VXܟG_f 4%=_tBgl8B*{ܩw^Y۳B(Ƈ['{M>Wjl*?^jJr!1aT g]T L4 G߭S UPݦ ^G߆9fG"3HbѨ p񹼋 }Ўx9!r&ўH?PSv8s̼VpL -gG'^)5$rZBӉ]Qn;eyf~6 ӥ"za:fN%q%Fa$ R&8҃ENegn@Nh~kTmyx}{E#q,s_'έ{f :CKZz❅$fCkyhTb/37j%r7?8a?/RF\m7sbپo4e M[[e])B*=nqX|ngm2".6gKiEpnSK*n~K7h,\ا͕6Zm#Ұ8w h}>-ea[cV ş.D<\=[PP5;P⣄Ls=#`C]c1D<3;\{ @J#vő)GJQi}Xu9q)<nz+ rza\LkKx&.I66gy[6e7: Oݟ>V"rU\Zވlerh~ety`FLo'$uݬ0r4>ä_EGkB<MIϔײY &;KJK (;-D)S>tU l_[zEjȅMwϻ/4X6szQ5& ,j7Oxj=h> @mrts4\:ڎ˥7]D{vه8LʜX&&λ\ C)nt@Gi̍4r<L9}3l%s|5Lݣ]m OИD/hn#~[uG\xa`F`:@I9>iy[-GէbAQJuslgx/ 'Ĵmkoȍ =ڂkZvVx,_N|Kr"J%7ӱhQA8y܁f # `Ж7o۞ӧ)ޫ.k4Mt݀TzA8CzD`cnk.;^Z=gs1 VE:46Z۬"Jq&g PR@:hЇOARjd+99@rzÃLrEDeR̙4fm`u,N|CTαk:L)]ܨEoV`ȜަpdCi?1!Y}(M!e_Q֮uEQDM `xn(4q_(t}y %SCei?-ҡ`Zk d+D0mD {-kN颗e)$}^bwZvFB@4CCRHZ/SuވPfuJEj+G̵<o ǿ_k P&RAvZT8 #wn>/0.m+տMu}CP ]Dz>&+U‡i Hncb5W_> N,=?/Zg0CoII?]#G+,a*d-FRCO -@I yGuPx3ɗf u`b0\_/n ˿A@|y׎.ob{-6)m|7y0ڽod֏+p4Sj'd3XF4)k1OUw3`NS!誽BQ\iyi_]R3w@ӭy=ζkC lj&}}PxtmC /3bz:e6M~ #JaϔH?Ã% %[vˊ@gW/m ~C'Ǝ4S7gx2S;sjOJ7H9Sbk̺/L=6+ tMIITl*9D&7h3=6SWڢ3_Nkp R#7} Ԙ25q ֯`֗.$ $?<*!qDQ,a.qi~WB!g0#!NFftHU$t`^9rH aJ++W?h ,EQ8<6`C(BuP_~3p@ȯpf)-Y[d{k 8@]Kvi>EYGc[F^w$:W)V"f(l23\fTe gX& uF}dj-H|uo %l ڍ⯯{&&>LW=gGo\VIU"da֌l9p ynS # $cPh yb4ȟU4prnv3~GPSUpUN瓯h |6I-bn(J\hk!ɪȎ9/.q!?u+lnd:3z_F=bQU0چI%Pp[(h23UѦG (ɠ yY_-1(Q4Jӟ1E)youw?]|GLGOv7氤ֶI/80}G/\F4H\U#zEOHd/(/Aq;#ADc|j!Vv7ؚy, S)(O},OƸw,dOG. iSL`8DCbY@_A&4"_ׯ>v52o=o%_ 8LHe^nX\ ,sGiԫn"s l Bppt+NE!O(')hbur6ƀ$ swCUx,=G#xg#k8#٫O{ wfQK_a샯l$)G %C$ Ő WDǬlֿJE/U.Cl2Бa:B#tdpgJAp>Ѡv9}rL@z!Ehhz&bNN6Cyo!b:yjHMy\ } U%igrørp:*=٢@t Ԣ0S_w5'4a^ x- 3Hfz^zZk<@j;VcD2Rpfi"4/l"GDž|2v=-]]IV80 /sx+[Ϭ%kNʺCDp//Z@Tkn+hazV`DzF6OJ9=P?kg-X1bFPv03oSk/iJ/VS%Rޥ J/1 H>.Z&mg5k}=ts>j]y84Z 4q],m8Fcn◵G~(NySDo|n[ xOa^GhQHY(ƒMD0Z Ex Cٞ0aUdd)6|Hpca9un:ҫ; S\_ u5(4xU{[ 8VBڃ;[[Ocl:x>| DoYty3 I*.dT-8w\ԵycnC"%'tOW7<'/ E?eO}@l㗒[IVLf&8 ?Iy@Ԑs"F fao~iqFyP2ؠXxdM\@mαj 4A4+:,WF_Z\SRhh*w<}|[]5RA%n9u<y&<Ϧ:L NsD1`vI@%<$lz]Gfv5U3%D{YC5NSS?̚ꡅ10)8 ʢ]_FMp+tɚ5>*S);b9u= i܆Gvn嚱l1\;  2L~qdrp`bd]IwzNࣼY#%xN=YÛb;ȝ |/,OX޼A\Tblu9G6$){Lz@Pc! 3G 7 >zV̮& <716,{ 2H"%.~:YnunYQ+ CҬݻpx^Hǵ,XL;FnbЏIh ixs8͐?YC$~ Y%I 5z5_UyQuHCqoQ\mzYPͬe FI :cynJO +\. p=:Kv~ߴnUb#&q<vLZO' тWPj^==[S2cRz6Be{ό)C9\=M,XB]E1wJ#)8,GR6kHrg r ]D-U-0[;2MI.rNM*9~Κݒrr. |M9~dycĄ H%JƉd?gʵ'pwf չ(gGԫ\ׯ(6ɥŚXPC~Cl> ?WI mH!0/ eFf^~CKtFo~PkrdxnuJ'W4/_ٙFsz~xxRFz߽B0m#-0ۦ3 y{zÐh@n$Q3nߩcj+o{>** ,{-n,ze;톾_2͵k<#^{9dĚnxGGRa/.v n$6կ컻ԒCq -PjκQw;4CA!x;^'i@R]̻ !A H˘zXS[p]Umb1Ki@_7KSh{D -d3 P y ߑ#Ρx_yA a!E> ATp}qH׊ŠD6֙WFAH,T#!>yH sr#Yj/kp1L*?o`!Cֿti33LJc+hgG '&YxtFN"@WIP&=qAZ5U6bV&mi2oWQii.⣐1OV%\pށ6) 4Wlػ.ƴ` Rwܕ06 u2Ղ|&<ԽقoC".aqck}s垪 3kkK tu5(4/~V]Gy}1%x9Ŭj:;\RSg LNEwQcKΥ4%Z4AҪ(QX߀$-j-+sNcuVXh/ח $R*JIV5O;{hb)/O1 xlTMDRr'QycCڀɗU6M)Q.&9l9wI-+hH23Q]g|t DQdfhƾmv7;}o ,iyn_5hmoMw`Z@<h50oɺ`gښi4h)~d/Uh`xژ۞':ۈeqICFVo)j4ql8}XҥXEwlk<;sEj2_۪l/\a xp@Ol(=fٜAG1VD9ATY6G=1Ǻ!CHdμi(,JVwXwڧ@ iO*?.`Hϟl@մ'w wwce/V"R@gnD-mjB9=V 'lyp03Q'U.2UIH Т1>g^S[^nQZ1wy2NsM4 &iP&Q@Pwmo%ofveѶ7+lR9q%dJ_0S>]ERF/L5+<dP[]7Q!!ݕ.kU.djfo' x+gG;nc O*j7X){o7%#@Pxp7}8XK 4#-) )9Z辱)=2I*UV6PY`KABek63i]dhO yl:YlWB-rJW!B3b{2/zt,t$Q{,^4+|LJ }ӵ0q/f乒J&_lLH`Q)dM g똱' djEoA|OR?ZiZ΀bw*Ӓ?!u;g=ԁI߫֩5ڿ(IW`_W4:{4|_E @MAdJuDj~Ѡp5yFPb M'?p[a套ԁA՟H-m}OF2eH3^MbrV!Fo aTDKl0^y"slǞ/ys#v7 _q]qL3{=;˺SISΣTPx6q_}V7'K+!EFhSVEZ U*Ϥsyi*T-JǐM4Bu =0iӝu"aŒ&ݝ{ TNMm,-g|P~qrEȹf.6> A rz y'aHnY  'b@DJog]œІ፡2GZwFց J\2->B"a!&QLZA ԒLg4OAӃ_`ܰ2d O|,t'نw3[S*gztA}1a˺ ވPQ]1ȑ&?#$/"bFth5n.>A} bIQ#%qf2;y[]HQu:|xjn tKG e4> Bx 4 ú4KD0}2|vl%oݯcBS Nq0Jw&CC׭ )Ö퓺6=v~}[XWm>or()6n=T!"Ǔ%?iK9$m]Fx,z=݀oF&>ԩ~.GO)u| TЪָe/9؟k|SZPVc@߃~8q(ԨVZDX֊ev]S)ijKqi*_*| F(JKf?[Zxu'=eI. zsQm9N^ 3S =tUUL(59TôYHMÕ"у-&&9ڝ3syj-(m ;JX~"ezL hj"xk szLtZ J%yҗB iskx|Yt hxPWT*^z›l[~>J6F~h7m?}i W.| [)X+`5 E;"{ڟ Fa;?T&fbJ^5/Pjmqkz跁PIcd] nPlCU-4ԗkcH4C'R߅u,o?Wl&p-5=Hv Eέ>@H|fł[̘^+x mJX:"!xFs @97o~^So ,``<^\(f;Ip+˜2 b/ [TOݫc'9yO SfKDT]\GN5KLAbDcפAu _\1Ӹ Êk΍->Z 'OvTF<_~y^xb3gLЧ_T*]G4K $J@Np.595lq{ KL)7@,=By XxcC[O Vq1I;>p>'qfy =X>JwW)^ aD/ NwU#МlS3̓!?03$t_ <+{27o"֐P_-69x*X`bDVˌGqb;їC\&k;Sevh9sIS ǝ`fC:в>A5|7HC\eV&gH]Ci{q#n@Ă7j}9'$GRzu -U &槫`8`Y H=kNG=. *)YKZ_W`l/p/%#y^ɑKٰ氠"q:-6 xXeu;s=={ i-?u?Lm DvsgAwh>j%jK e)f۠Ef]V: *X&DR9@o>B~}f7S9r<+Q2+#Žn ޸U}oeWª=ƚýĆ p7| GZLIU8J+. 4lG,ëhM8>n1L OǮ{RZc4m?^ϛ|k Mk\yڹ!aj!۫%Q톆N#}Dy-"!pIR^S=e\ JÊZ#mBRJv>@1󀩹ޝ=Cr+ Ļ9,Ed*?xm;!$i?K64*We+~1/&x2 y!/LП߭H|6HKi 1j ,Xۍ|H ` C_ <{h" ՃzTᡭ}KLqPmswW!O] XMr{Qyl<*M#7BkRhFeyj C5neE zGr>rۏ ST`TI%F̓ 0pK2P,ܻZp郫spvVo2[rql *:|#z2>qdK*å1Rg(79o@)sR!Y~7櫐OdǃԀ?`Q]Hi po,hl5B$ 0\WQz%ެÿjr9$*7HgIpEs(+o?T1%S*z1TS8Gڝ.z=hݦjSK&ݑH,ϬX?' KRv-b(]~-S[FjHVdIF$-;"a^3-9zjzo沙fnc?x8cQz@U.N74X9+c쪥r|?(d8>t3.&VQ3tNzKdΗXP ӉqExKE}[D:rXHe۾Hc0GtːC_|{)WHA\dE_:kЈҺ=wgghTߪX X@}Zآ0ϕ=Y'> \z/6sF$ mG*C7) ~^ 6f/toJv"R$~n(4t(":K˜)eŚri 34H~|wk=eX:^MeeL D?Tʭe":qB8&s7:n{Jŋ*c~ȓFL?IXEi4sg SN٧Ba:=}Og1{r^00ͽn+j6 Qo|,e@D"B+ۥ9h'AW`!@z{ ]JY}Z,m D3>vLȸ<< XA2 ?ՈnD8<].~@ x]F5OBqL;"zΏjӢ%0CDm[np ӋƅT+h0k;QfIaϫk˃Dڝk{_ M _S[{Owg<-Yu/c۝:bjWLVqg> Vѷ[f"SQS*W_as!CGe ~P=2H3\1ف_"j*Cc:%Ph7/GĖ3:=EP)oOZt'H34w'hz1H\UTpFJ`J^ aHthHZ_0?A℥ %_)Tk;3:} R.Q=NkJbʇMA{=bȇ]o,qY#fr=TUCعmk*LP|*ɻahX%_6VZǓ^$F)Vaᛥ+4J9_Q@ګӝokp3$i # (g_.%eRcʫS}ӣp ,]թ#\XrJ|},eiI"4 4Qc9$y`kwV|{ԱLj&1U)2=Y\? xctlzd-vx"즞.1ߢAM:󘎣 stCTHGC2/D'`O)jɚriFL&>:ٚ~O<d%c-{] $A//0DO8^}(w68~~}ѯA[aM͹jy/Km#v}#_z»boVƂ6hګG_et)泩iҭsՇٸ!vfT !fXT&Y]u8>,cXŨ7GтS]a4Gvdl%#xˋs78t'"w g&~;ɹobpLpk %X4kG oYD bC+D`alwvf-t y6r+]l<޵;I>W'n{ ~ב$= 4qD]wwU"IP\mg>ȃ H8*e݁,\d-?&o[hbݳe|>bU`5X8vϬf1VG&BT+d~*; Xۂ{/x''vdJf 9ispDQ8,?%2 (LI'eYAQ*'vz5ؕsP,|H)~Oh5}i.™J8PTA=]|k.'Vw"\fUd@zb{W]eWxAEtTƃtkZ2Nۈp[?XSyWO5n'K1SzhWZ~IݜidSP>_^p@U}]nK =p vh׺\9NKҀR>$br|MY0'^~Ë>0 YZafex/data/md_12.1.rda0000644000176200001440000000054413664111747013654 0ustar liggesusersSNP̥MLHWM\p튝M( u' ~'%Ź)ƄI93s!{o 0Hm$b6`2yҘM ʹyҔZee3V_@s~Azn4>Li{etWᶝ<Ŕ@IuBQw{&YB>㣮/G6?d*ïafex/data/sk2011.2.rda0000644000176200001440000000460713664111747013700 0ustar liggesusersBZh91AY&SY(wߠ@ {Hϫj0y<|54dM44`<yLPh j R!ʩ@<Lj '=S)S!M4I$PTdڧ P4bP TЏSOP@he4g3Q62=&d 6Y{u=bܐh-#r&9S]zuVӪ>zm&EJJjB$` nq^/s4ٚ05[ak3QVEfi"JQA`c uJEZW@hJERFEZCeՑ$e xr$FTVYII3G7w)CjmR.:5}^)Ǖjݐyd%!t~3/[Cϻxrw}_Wz޾"2 s09=J֋^Kxnc.LMrst|vUN44nBu!tŇWUߛL/PԾ̬G)]fi[َ)E^HcIt7T&SWv 55PC%-r˩h{ @ц6$ ǎ"+`j8剏#pIfU(5 6YKQC߬r .LSZTƫTDӸ/^jh nYA0+yj%=象TMeNw ^ }Wi}tY\ T3츦n%ғoWH*WԼE 1EPH qFm!ڶPӌtأΨ&rʳGTR7hw?^i1H7Fǖv  =1鶀EpF'U|;Z2(p]fApO<&& "^{g(Epa%t*b !! Fk D BCUMpvQaŹg ^=:DIeՅxEPr|B1#PQ(sն"䴰DaSկzZBBs=SfsYPQk[6o"ɓrմîb W󲳶c(k[VהWnBI% ̏N7 :`^< P\=d:`Tf-#P! *=aR7ykF7Ypo]1x S  =훏!fJH>8%Ǻqb ArM"-Q{1~h <0ff>|$I$I$I$I$I$I%79ku+]a g%>IZ1` `0(*´B3E XI!4QKA$J_bȅBZ-Q!j[MD TZ$9nHZxhFb[%5bn 7hқW{1\%>٨ֵ4jZ4PmAm|q fEs 0` $C$I $H3I$0kZPkZAÂB|:!,yeb-[%2YH}VN|!U Km-DU'G듛}שۗ~aAdRDBH[lZKb["bLRbɅ# e7Vdb[@m(&t$ @N 0ImWËvQ("YhCejUh b hDdXYDN 0li]:il7w^"BN44)뿅"4ip!L A5 C^Iַ$cVG87}f_WLSNh4xpTB ),U62BE7  F)„@@afex/data/stroop.rda0000644000176200001440000115210713667760652014155 0ustar liggesusersBZh91AY&SY557Է&`L0& LI`&(R64`F&`L#M02z&f@AɦidLh02hUTTS1QO0..QL܉O/g)䄧%?t%J|8)"S℧ʼnOO OO O%>8JJJJ|xP)"S䄧ɉO*%?%>XJJ|)"S愧͉O:%>xJ|)"S脧щOJ%>J}8)"SꄧħՉOZ%>J}x)"S섧ىOOj%?%>JJ})"S݉Oz%>JJJ})"SO%?J~8)"SOO O%?8J~x)"SO%?XJJ~))"SSSN N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)SBSTSs N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8Jp)S N%8JpID*R~WDWRh%6(S)JmUSM%4Jh)SbSDMM%6%4JhS%=k%< M%4Jh)Sx)SDM%4Jh)SDM< OS)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%< OSDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDMJxM%4Jh))Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDMK%< M%4Jh)SDM%4Jh)SDz%<) M%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%4Jh)SDM%;<) O Jx%< OISD)%4JvM%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)Z%4J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L%0J`)S L1AY&SYU5o"@@` xP@]d*>9ai  )ڪJ`)j414ɣC a40@IꨪTz))QIOU=@ m UQSUl[hD%%0Dĥ Qa$2D2b P,M2Q#vҒ\QZJDA-#J1ܮ!b12` ESe!Ģll!Sx OS)HBQ)%>8SO%>XSO%>xSO%>SO%>SO%>ؔSO%>SO%?SO%?8SO%?XSO%?xSO%?SO%?ħJ) O%?D$|$Hry @ԓÏ.}:BB;]}jsyyyyq7pslͶͳfmm6mB̕*~߿]u]uUUUUUu]qu}袊((?z㎝:tUUUUUUx[k75›-p[5nkfͶmgUUUUUUU]uG}[ofVq[ngs8k}fY3l;rtzUUUUUUW9ߞG}Yfsp77 sp77 lͶ37UUUUUUUy}~fj[k}o77 sp77 芼xv۳ת<<|{vn snc1k5fYުʪy}wߙfk5fFc1f3뮼뮺뮺w~yf%%%%%%%2t򪪪ǜ珏nݼ͍7ުʪ8㎺;35k3Zֳ5k3ZUZUWL0XI$I$I$II\p9ys<UUUUU^ ^ {/`q{>ǵGSpJz}&ɲmhZ-E8hZ-EhZ8Z-nEhZ-Z-EhZ-EhqhMZ-EhOG)碒Qe5{bCXO$]@0Ġ 4jijMTѡ@U@Sr*@1UTTTP$UE1LEB*( ĵQMTEAR( *BV(B",i@W)@V^3!8@$PHH Z-O6lUdMe @ KWUUP %xM4h412bh0 09F#A&&2M4h412bh0 09F#A&&25ITTGh~@hFj44f=Cda42 F@фɓ@dFHx"EQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQG|HEQ|ȣhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh >(B >(G}QG8QB >(Bf}Q"? (GE(h~DQQG?2(=QGE~QGE("ފ;"yQQG>QE4Q?(ȣQQGƊ>QGE"(QGQ >=|jE*UB(ϔR._z|U/F!f)*Iy~vT6I*IyTDDO>DDO>DDO?DDO<DO?hDO?DO"O;a8DOB$NDNDNDN JatD7DMtD7DMxD7MxD7M"sNp9'8D8D wD"a0DL"&D"a0DL"&D"a0DL"&D"a0B!)hiJZ"R!)hiJZ,KC*RʔD2,Q KC*RʔD2,Q KC*RYR*ʔVT , U)aKR %]ppppܐ1DN:"'DD舝"tDN:"'DD舝"p"'"p"'"qB'"qB'"vB'd"vB'd"vB'd"rNP9B'(D"&ȉ"l"&ȉ"mB&Љ"mB&Љ"mB&Љ"mB&Љ9B'(D"|P)+8z!""* $ 0x<>@( @ BpLFL0 bd44# i` 244 4a4Ca&&CL U@F FFF JSzoz?OGzRSMUPh0& @Jx< 4A hD 4A hD jjjjjjjP=*@== 7@t 7@t 7@t 7@t 7@t 7@t 7@t 7@t 7@t 7@?yAz~R`A:~1ArA{ =ă~lu H;|D~AH? ԃrA@P>z@hU}t<Am~[[mz-F10Xmi(2)`$%S-$ KF4DFJ3&AU&DHHSEe, R4H" #3 (J"2F 3I"aQdHL`4IlbJ4 6#PBh1 F2a$&IJHjA$44#`2PРB(fL"l&e3E ɥđIad S I"A $21 PH0 M4L2(1$HbfAEQ`[mJL,)a2H&X6J""RdfcEddYha` ɂa #&ThSe&R`dI$12&f A!LfdDA6`@` RI&R))!$ $Ld$EE&LѶ(j,*5 AA3E 32RC$B! ahfS)3)2(E(P) 2e)ICe"bPHDԈ2d&LiA@H$dɓF X,l1AbF FAbLfi b2 fi3(M$f҈*R"3amH,X)4)#$#EQ4e)CjlBRddD$CE)IMIX*&`bLddb2`FM$J2C!FQ%6KLHPLѱ4hD! B`AHd$J#If F1J3aX) 0dDLJ"2Qb5 `IPd)"d$ ))5`RIhV2&H c2LdT2Ѭf35ID&I$2QH&)B%c HH"H6(F#() 0d4Qa,IȦEK"ALİEJ&E4hĉ)4"AKMDET bYadM#("i3b&P2!DBBP@dThc&3iL#)&M$@@di4M!P2D"hɄJ PhMM 2f`m  #$D!IhBDdHF$ & MDce&%d$ 1 P̢`LI,(&hY@` F4@&`f D2121I `(0Q 0#@AH(&SLĈiL$ "Fc$I%&D2(6XfCfQDf,jbiIbc$!A%LicbFhЄ!l@`"4JCDcHC"%,̉Hb),`ԙ(R`эLQY X،IX3 %h-USD-*"6b3FQI DL"a&A D #D3B2PDbB)Jbfb 1(121 Y0RFDD& "1@ A22QE!F& `&)Z&L2h#"1&d32%1(@lcHhDL"C b0IL20CfD+$&4X#D (H# Ec`Q$01̳M"dC EM0"0fBfX1b4U!(P2RQFR6L"&XQ#FЌR(,!@4ii)0L`ؑaLЈY0$DbE"CH 2(L!00Q#A" d(J$d1&L€H *0A,1!RJ"L*K,ɩ)IA &eF@B,If4(B#DHE 2H$)4"!!2LdI 2B$`L,*30A $3C1d3@ab%̃Q@ 20aALa"c $$dc6%2 hѥBdɦ2PJ5HeRd2`$1 `!"B0CF""c*! @ I!)A#,L(3JIȀY,b6$"TblD&H"`! J$i%(*I$hP$!I3& $hd2&i$bPY)` d  )2",RQ0 )( D) h)3Dh(DbFQE D(EITi5cE؈1 Qa6ؒѨD-MA%Q24E2e#$bLBf#3`cK3I6Dc(` a6QIX Ca $"L"fH!`ehfL"T@42R@#) L4P(Lffc444dLF) DE D(Ė`KijDYiHa14d)` E#ARBSIHQa)D)L&dD&A"fPD bJ) CI,ɔ1&04MAdAI$0R!I 12f4CJjI$iD)4fbE012HlIE&4ERl"e6M $A AS(B,"%$ &hTdء2lBi#b*(dƣ ,P#X,Iƒ- f$d13D"d+L$HhPBe2)44HBRFĔIdĒD%dɍDF*1fi4"F),FAFf5 Q,%Q%h("DHQ-F-3&"Ɠh)--MXdѤCPE%#) 4I3(fI *$hRhbdDE!0L b IP@&@d$@&Jb h0cQ 4ZAh2DI2BD!4% 2, f Ie(L&FI@Ě%4$a&fLD$DcHĉHa$əL(Č$ IĀid,5$$XI#Q4aLئFfD2kF@F,McX2 Y"e&FFJIAPbbM$aiddD6M%%#X("b& 3MPfRI&J)F DH2S!%B2H"3F$ɠ- 4F`dHdfL RHDQ10%2,"E&H"HI(%*j" JH224S4I Je( I fhiXLfȥS)R#$2DFȒfQ%C JEd K22 &@X$ $a0QMb0HA2̡PD&l 6a(H H1Db"( Be1!H1QdP&@J*LK2cJAD#J"F!Ib(Qai4LD J)L$JP&Dh2J6IL$ЂX)RhJA#(f26i33C(e B 4Q(Y0D"4AS#Fa&)e1$HB (12$FQaőc3A0 "d"&X"S$44$S(lc`(ɲEdQF d&IhBB(MdQFL[C$PJfؤ6%Z֖ƉHYDd$dQPE#(ddBH3!4I’b@6f3M &FF!D3a1)Fia#IJ0YHK0b @Ɔ"DJh&f1$̒(0Q fą)L HAP0e2DBS(#H@$f!)S2*iDf BhH 21  )LPJSL C)EQ&F !AHdHf FM1B$1dhH)IIM"#a!$Qb2idAQQ@a d"%LjLQF 1Ej  dd3(f 1iɐ21(L$B %2B"E(1E4D6`"cd#!R&D&"MDbь`D+5QAM"14 QhQ hō( R1HCE` MiIDTLI 6i@аhM̉E aMI!0M$lI@lF$ clLJ R 26$6&MC"Ԧ1T1k`ؒ4EEljJ@dhآi1lkl ChѱbрũK@JSA BLЌ,LBPLd PBB!$$&&Pb4bJ2a `"%eBdB,  #`Bl"`Fa "HhLiQ6@TCc@X M1#DԒ2E YK&Hi ̔f62A&Ch%2$M"R&E*i,ȨĒL E((H"0DFHȠf`"3Jb,l 4faRZfQE !IJlLAHEQ0@1Ca&bLm$DLb&(dAC2dbƙRQ*@b[0l*",lD`ف! M"F3a&f$#)I2Zm%؋P "KPIB)HB@Q*6JLm$5Fؑ(1TLI$Zb$01 62@JQ%Faj `4l6QEjI)4dɂ42 H "hfbKL))6!2DQ&$`"CHԛ,X(F #QUUƈ%DbH#Dm"Z,X b B4(fI %&FlPb%bI(KIc$bH2Ɣ #@U%"&Q4J JZ"@ƣi!h652"ƊF5 EɶX*-jhض̉,%ʢJ[Jl6$*-R QdC3(Qi2,1hLbA,`2d,HPBJ!1!14MF̘ $3&a5 ҦLI҄$Ƙc"i@b0A&f!P&$"̙Dh& FI)3B%22Fd aİPTE AAbJ hi$)#a2RQ(eڋAFd1EX1ԌQ1$&h!Kh! &!*2Dbi14Ȉ`@,Hɴ) I&!(#Ē, b24 "ĥHIL6"a d32R RJ4C1L( *L4h$ ,,$4M&T$,Z* afIL )4Had 2 c$&A% 3)R34 1MQ&$Ai&LY$Fc5Hlh$1J$(lI1L!,R@b4HiEA4dQĉD0$Ad4($6$LfS CJ@Ai$0 $)LRQb0F Y IDZf6bHb@D)&B3(c( HD %4fH6ċMHb%ERMIeLbc$JHSJ% ARLJ%I4H 4I # DHRJ&iLlL 2$)(јҘI"L0!b(d2Q#3(,B@A DH#fm$ bR!"`D00F4! 4lY1cDiƱK!ɁH!DlYQ #4XLlbY#4bbAE-F Em2$Si&FJb4RP)(iaHF14MJ$44IJ$J0IB,RDcBS1Ib $Q"3`)A%,ɌRdF E fE@$Li$L  &M(f&&b`3"65) J4 1c" hJJ4K&$dJQ!,BFR$H#Iѥ L5LddDde@)XL)$AI 1&Jɢ@%F&b ! B$i#,6A%4&B1 ,)0B@,#aH!CH2 Qb)4bI1&ɉ L[fPBQL,LBTX@d $L$#F@0ъP0hBoJdDRL@Fƍ&QI)JK&LbIQEQb0FLD ѱh,`F4Z%5ERR R E)6FRI!b0%I,d,)5DI$RHQ"6)5i4!`Fm0021K"EI d,`5͖2DU ,Y* h@ecEIXب!dD ҚXD5ZDZ"(HfD&Kc`lEP! &bb2iCP A$$QCdA&$)ĉJL1 D MM4@I,MaJ&!@K"BbАłfC I"BL2aBK2 & 1e#CeC%0Q&CD#4M3af3FfhR I)P&lA Qf"2P$f RbjHJ LiHF2HHŋ"bģE*dD6`F!0H̡d I)FahFƍ $CJ& #) &&(̦HifAE%H(BBEL`̱XB!01# %!DFdCa( I@Y2(XPV4i6Qcc a$)H4DELdHX1E%62aI[lTTF4 `"S#) "ɱ $b(bm2+"b0ȴJ1 bXEI+E ؍ "Fъ"Ł(RE4P((46%&1F$Td&B 1dllFd1!XbƢ($!"j64hEL%bũ6`H؍ Xؓb mkIF0b&kfPl`X(ERFdآ#XъlEca1R4ДHJ+h)6(aKFH" j$Ģ&ƀ$j54QIi(BY @h ѣ"V6+3fLlfQ![JQj5FfjE$+HI%QBL+S k $`bQh6FHI 2TkƈRQV[ d"LX̩F iSe$A6 Lh3J1JI#Ae6E6 ДdȊ42F` "$4HB 2dHZHH 1( QDhXRa0&$ĐbSELde $2@QMLHDRR4DF6RdHRHbP "cd"$ʘ̦F"4Q aA1 ,RbJ`hFe b`1) $P"P`l&hQFIHDaJ3&Xc30 L!RfjI2bPƚP1aj"$I bh2(ԚfE$A *M"#1TX6VD4PI`6(Fh،mhL͍ b4ddRQh1eƨ%DؐimY5! LA`&Y4R %HE12YaRQILZư`H F &Ɋ0L,F)*fI1F4R@cIEIXI& Ʊ*FƊ-QQbKPmd16-FƱ`5"lhXشUK& Z#bB$lQ(ŤFɪ(ѬT`@lF bFc)E2,PE&QI b)LVfEbѤ%D`QL04cDbQQbm"b&B"b&#QAcAhi4AlV Ѡj4IQjM5dh[%mb4V(($h(&QF-"$b2Tj-djZ6IXS 1&"4HI2I% d#i$Kc&f(!#DQ V4hELQQc`L*B 6dlTBfhm64ccPbPdV4TQIETbQѩ* c`Z54h6kё--h++cjV4P&2Z*KPh6jƱVSdŒS%fEjS+V((22LIRi"M#"hi B &AH`ȆLB0i$*$4D&I#0)ƈMF ! K 0Ȥң! Dbc"S!@3!!"chƍ($4Da6fiP1&" f(J1%f !5$cĊdQ33F6lJQ"0!$(a ɍ0hL%1BLD"a"#̚lhB63$–C!fb3 0"0%FI(H H#"PŌ14bIDf F2I! da  h`24E20M12!dIE4 "&@dI4@S$&2& %HH0LLRclA4ē!"HHHDJ KC “bJi4F6QPF%`J(I"Le$ A0H #0bѢ"V$!b06#"M df",C2(2Y$4PH$f`P2Ф!& `hI"!I4dS$Pc i) P$ 0MLL bRэ0 D0$D,2aJ)D !,DFi6B$ٌ̤f&&mƍ!d(, Pdl!XF @F$2T$*IBJh,HPP"& "JP$̀D&6I"Fd6MD@0S0fhTRF5%ɱHi,0J&"0m3%! l ɢ4cDhشlDTX4EBcR&C$lhS X#cC-҈CaH$aI",$B AL)2QPHQID2!cM`a &B"h!P$Ʌ*LSDd@33ѰHd1cL)K#$FEQIȢK"&&̳ccPI!bLlB "%3AJFdbE"BJa4LRLDL6H"KI$A IA@AL4" ! Ŋ+I XL$1آM M!IP%!eHXXHH4%1"HihȲB &c&(dQh$TRQ,SH"IIDXEP%1 b(4X0L13Md,bSfE"FJ5ЄIF&L؊MY5F,)IQMMlXcmF$&J5$X61H)Dh #P bDc`f#jLF"2Dłabb-64hHJi"IDLjhŌZ&ȂXFʑ,,j 3F*L6iZ3bƢ"T1LV#F2`1S$VIXQhm,LY4iH$M2cfFДI4kdU3lfc)ةILFI"c&f2QIDlb ,̛1YD f$DTHh)$l!DIT HŲdҠLRLLDPA`M" 4X)c`MHTmI3I3A14 a2RDE1)FLRhc HDd2Ld33-)F2I"%@3f X4IJ0ɖ15ҍ!LQ) ldf! dPQL1f6@" AX(2ɉ(ecI6$Ɍa*B X ْ5I*R &a04IdDȋE! Rf" D"A2h(jDPT$-EEcS6F5j$0Ii4lIXH)b #QR"RmƓA $Rؒ(LdF a# i22Ed0PQ h؃F6LBfAL-55@ ,k3"- IF#dDf 2%KTL`*0Qe)`PdDK@h AEFQb4Z4j4QhD(a (1@5FF&DlRQ(dF)5I&hRY)$ I" K (,b,TV55F&CTA DVaF,RIL23m5ZXֆ!h,Y L4fhdX((cF 4bDV"LI&bDkQIAQF-`i"ECEMZM-h)A@6,A3h1Ebk",J@JYP"ŒÅdE3)ѦLe%D "Fɒ2J2(RE)H0$ lKc#FBL`b)AI J,a$&D&5$ (!%)d$Lb%!(3$2bPbm AEDlĉ0F"fD(a dA(& 06-*R ̰DHSQi$"1` 4 @*fE&ŢLH",Y"dlIL`41) &P`lS$1(Tm64DȀ҉%3h1EAmbFd,L*aI#d F( Rj%Fщ$1bb`ĒlTXFE4`Z,iI$$͍XPQRcR 6" `b(1(Q(X!(LFȄe5m`Ʉ P&*5TF&$A5 Z,%&Rh"JXFdE ѣbI6, 1Eɩ2TTU0%cEEQبьATEd"J4-*S$5P5d1"F5ɩVclXThmFalZK*LRi#(Vb#Hhэ HQɶţ1) !JTb6561Z#!F4cDAb`eDIM#lTE@RD@QcjK%10&5cbd$6hZ6A,Z$ M4ZFF4ZKQj6jj((Ij-3ر*LmRa5V5a,ch(Q6i* 1Q&V-Tͣljȑ clV%6$ &f DV4XDLI$QE56EBh6-4lllH!+bF4 ,jMc3,QQQX*4hh1(ՂQlS&AC%K6EEbmPia00h6J,&!`F*Ģi1flbHmcXڢSPTL̘i"S2Q1B&X"ȡeĥ$SAJ$hS 4*ea*Sb"FHb$̐LHXc 6e2cFDbјф *(F$#f)E%` $Yɢ !Q$&&FA,bBEТaJXLB(P$Ɗ2X0$%H&HVRQK "dF13FтLRhId$ LX)#LRbJ(kc4fPY h0@EIaLlDFZ-F 1Hf2DQ4ؤ!Il5b( #`l%FdHJ16HŊX؍e mEb**S%X&llcFH6,HJ"СEIEmFc-Qb(hMCI(#d0cDX$ŌPdTƄ,DJ٘j,"$i1i* E50MP6-"ƱHllb TF0ɨ#F`+ 1+hآ ɣV"bƐ3,lk%%l,c`IX2T cE&Ze3F+a,e@ɢfS*MH FXQIQb) bdbBƱ Q!bC5%$TZ63)T`ѨXQhlX$ɭ2Mh-j5#EF"jHFhƍdYQXMddbcI(i )-F ѱbbV(6 4` (ƴ`cF 2(K!ͤJKF4b-EIcɦh!#ch1$ȌV41$Ec!cc%V"6"+Ib*5QTlJjƱRS #Eb+FMFj1V,QFԭBj,XEţhFZ&Ѷ*MbcQIb",[4VEacmf(زmB[lXb,m&C(Ɖ4@-&QR`f%je(l!-!Al(Dj5ƈ؍6#R&Hj11dPhѤ1PZcb6E4Z5Ѩ+56ѴmjKF6Ulbɨch(mH4Z 4kcQlFڐ&ƤcV6ڢ65$F`X Hإ)Y5Vmƈ&m6 c%E( & QfJ hō4H F ġhXɤ,̩40$ b LjB"F))2E2I1aƌLi0M1Xb- %(T$b3& #DE$%$bţiJhM (! Ei hfdѣ Id Q""AC2TcF0eaiddYF&PAD% HL1S M( !D,i &dhd"4"D@i#6$mL#Q1c$,3*J0L$(JL͑#a C&Cd"c&3 ("1#Dla4Q IC6*"cƤL`2bP"LD&IdE0QI Q  Pd!6%!(0"C@F0&M!3 HHA" #PE2$L4HABBсJ`44HBRRBbf# 6 1&&*$AC6(di"2lE iDLe٥H0dF XL2 Le$h$@E-DF& $%m$aBA3M İ&,RbE,JHlCSѴ!F 20d&TF(j21bJ B%bčfRa,bFc1R(b$ddH!$P") 2)#A2#3 f ɉ MFу`+J1Rb#FԠce$bBX(Q4 % " PCKB$dfEe1""D1I&PEd!B*M$S &a0F$14#0a4f2@!$12@`Iœ&H!%L`D) )$dТXDE%"(1),0H (a5 @0$$lB!e$!(A22FLIb*2AF$IF f1I#D IF6),BELc ) BHiA2AAC(d31Z5JQ3-16"PlIAEbR,dљi 6J,&,FK&XH$FR#hH (PAH4,&b4FaI#BIfCF**BPRh,TBhƣa+b`f*5F$J4aa1@R# hH)T1dF ѬDLJ$j",Y,d"ZBمUZ1AbfJ&PhlM@HQimRbAKDlM2%H[6RQ$X21db!0ldDh0Bhm%%2ڢ,fdMd "j&Ȥllm*XVKEDJ&R1Ԉ ɊĉHE"e3b #$eX#E&fRFhi5bdĒHL4!P(Qъɓ$M)@ĈHMFƦR*# abFQF,,1DȠ$dJC&eJ%$@QDL,#ɢi$"M&`AhHɣ$XT(fPRa #e$#2# e$DVI)2TBM$fBJT2 b0FBX*B4E@*"H&LF&b!6)HiljLE$A!EXƍTE!Q3c26"DL4Lf`DD4iD&h4Y,((f"5J-6*#$* RE2lhAAcT&)KdTX-!D ( 2!lR!Ph6I(!12d2Mb(ba(-lE&I1EPIH%ŤH(5!*AUJ4d*0HlPC@؅4*L+!2F5FF""+bRP`2%%j)LFCX2(kmh ,HEQd4AQ&ѱEXѨ-$Q"l` (HQH(F-"Qh6Ch`iIb6b,b 4LZ1FQEhbTDi, Rj"1F6D*4FhԘKQ`Ũ(Md EIQXFKdF6 ,b4FllkdMhAF4@lM[C[ɬƂ̣)fЄ" 2l4XHCƔ1#) 0M%J $af&eAH2& D` "YH $2H@PEI bJ(HFQ $h(&Df2D$R@%%!b3(Q%1Xhd)"RD@$ h$ S(6L!&ٙ1B0lQQ&62 Dj(J2clPi1 hV#e,ID@ 4K$CdЕD Z2h1bKb IE@#JB`XJdE$,Q`FX#Dl`F&Xh``REhB ,(X4` FLAIX &Z46QDFAD2 bhXd*5&#Q)`XJMc%F(؈"(#FbhL5Ĵ$ 15 hKlU%шJai)(–Q Y*$h4S@4REŰdTZ(MTQب%1 cQ[MRdɌEPZJ1YLF3(,)Qcd,cbcd1,fLѨ$`bƍ!,!0ml&`62X#m3$b$c2X1AQX1a D 6ѱ,ZZ*1 #ci*TB0QQ6TmlRbM65Hh(6V$F"Ѣ(ƋBlAS0mbQcm4Aa Q6 Ic)baQ [mM*X(6E)U2 QE(h&"QF66%$DlQbc%EQ,Q*,QE** i66jQh,ZMXVM6KEQmbF(4U&&@ѣE%E1Q6[ch$آ"D(-Qa 0hIb&ѭ65chX4bf$llThDQQ#1TkVTAbdd`#B $EcA4XhbdlT0 ETjFB$" "m%HP3DȰ("@S`BBf)1X&Jl m&L@),hEe 6 JJ"6 XلͅC (h`ƊɓDѩcXPPQ!)*4V*"M2 $IQ4cjB)ZJ0!bF &Df`2Z1AX J` Cc`؀4E%EQJ4RF11RI*4lkF)Ld30XX$F( @4I+Kc#bQj*42S2AEi $HcDdŢ66Ţ)+% 5cF 6(j4F5M` IDh-(ƨ$*2dL Xh)-֌Zf#J) -&F̊(!PT l!TEi(FfE%!cclыd,EFC%$l1a4b+&ш,4Y4R&15Kh1h-1f45(Z *,hj+%YF ŲcFDFDmэ1E" ƱDj-F-4bV4Rj1,Z mEKRVB$hJbIM,Q cQ`(16I%c`ՊQV6؍AQDa1X1Rh-E)6Xجj BQj(McPFZ4Th-bF6[EBbbcYŬY$QEbPh֙lb6 RIDQŰIAPQ5E&F 1RIi4BV,`Ebm,TkFlDhmlTkFԅ hشZcIhk`(2ؒѪJI"FX,`Ƣ*Q&ڍ["(h Dj Ѵc-PY56B*4&ѨXPbɃi Z,dX+ZhbC&E,cjH#IRV#QMX-B `,RXi5Q͔ث&&jXEEX(4Vm j1&M`&EaY V֊MXb#"hQ%ѢɶFmmhFm4X`ll$4Qb0EB6MF QDZƱ[Jih$H2Ƅ5a#(фAh,Rl"bQM L(,bT2!H4E@ŔJQJ@dTl,f&1" #D6I "HAIcLщ4I4PFԐ(l6dD0&Hh #4&RQ$3!5R"dȠ2lfA$VHL6э &2PTX4EhEZfTQBcAH"XQF5E&"*R`4H(l4L$lZ,%`BdXP56LQ4TAhE6fADF,UD2ḅblhƂ(ɉhkE1TdE$(J5bRfX4hƋPdIƍc%cY-F,jQi`6cE*11Xؓi ɂшب" +3E #"FAńƢ؋%b1֋@V5AE$fcb)*"D6c&EDBb$IEEPTlT`"ŢDZPX MkDѱRVLmARA4[l)6-F,kBh kѴIcXEY)6" EF ƒJɄbQZ"hhcXضc#m(Q&1L-2HQ@mVj5H&"dfFElb*"6+b(c`4h ERl4Xؐ#Rlj*6$IFQK(i#DXZ`1L(hQmXmIQ6PmQlElh[-RQF FQbQF60h5i+lTXjƊЁ%V64QZhh6+F64lV0kٛE"Em$X*+6(֍El[DFcL)EŃc06E,V#F#IhQAhlj5EQQki3PՊb",bE[XeclZQZ(F-"k,E4c-E*5b bEaTZ,X[FMDb`+QQ ZTIKAhAh,h(QDjJ6KV"ԑEIԉe MFBƢ؃Zl3Dlkci+c1V65FVѱFуX,[I5MXiMDlI`)R[S(1bcIlZ#hhڋj+j4VQ I$hК0EbcZ(5j4EFjŶX ؓjbI-ea[l‹р(Qz2 ew;}@Tq$rA$rAA4h9s@ҁҁҁҁҁҁҁЃ d#AAAAAAAAAAAAAAAA, Aa* 1PXA Tb) P2Y@Ae) P2Y@Ae) TA`EwP;u@IA؃b;v ;v A؃bDDDDDDDhhhhhhhhh4Ɓ@xnpApA(P8q@@xP<(nne5|NwOA` >(P,)VU(al)lI4%,ڳV51i62&ѓm6d6jRJIMmMm[3jU&jbJ%TQ% A&m5H#Z6-uRI J#X Ub&CFM000&2i$(р`BIJj @5%%F@M?" C"-ѶdAcH "IƔD$,ja$hѩ1bD$QI(22&!$1IIP%`,,1IɔRY32eAE$C,iE`M0T&2 4"bE@ LbSJ (FXBHD $BRI0d,c$10R&SB0fƀka(61IfD dɆADi&e1P$@Df)&ii4D4DDPbL4؂$ad%%6eJLDIh$ c$L(2X H) f0TMbM1 Ƴ(™&H3)a($ B&E2#1, 46iI#(`K$B`D&"AA&LBf"`Hdb`F1bd0(R,RI%4EdIA†ldQiEcD4)Dci fX#D4DIc&Dd#FRdQD A )$eHIHL&h0(J)!Bh2#" BLID""00d)1"I$BdҘ h,fdM؃ @HDŋə2(HAVHD(2EHJCd,TlH R3BI0, Ȉ )d&*DFI24F F"0YlY`@E(4@,&M H532EX)E20i&XT R62 &@AL$hHe06 DŒFJ5 hR!0ؠH`2`L؆$1KR!A @S dIi2DfF,́ AH1D$R’@JMƘdl$&2B3 FM")P$bTi Ќɦ3IDf! hɓ12(I&Q2̉!2 B!$4%,IъDБIK (I6,dMI!#()$F$E-2&X1, 1bԦDFm1 (ıEPQ1ABd̘iPȓA!%&QDDl)M3)I (`#&$""&E B Q6`آj ( 0TA4Ie d,ILD0&)+#d&ȆI")2i,2bfe))( BId@ 554i$LH"IbD4TiDI 0$!I DAD"61#HБ F2Id(`D& B*`AS2D)C) 3ddR)LdBMI$dB1FDI0da&34$&HFb40Тf63(C22fFB$ `%e4S )Q$1Z ,JM1()H R!(ƒ0FBbY(XAI S)I&X2aa3 De ̒L4h$dIIC RX$#0 i%$HP,FI)2"I2 Ƞ%)$Y3L„,Ld#MXD0L#ef F1144P0bJEJ!I"Bə$ &ch(4!6E&Ic" i$#M&lQd,"$BlT`$#QihM)2Ab!33I"X!%Xf(#)&D K 2b"DC(SI%&(…B0a"P%2D$$I&e5(AɂBfM&D#$Y&&a f)Ę)IRa$CD$)aMdA&L`ƍ&L0T&H j4PDJ@dX!H,R4IePLLRSI@Fc$6F`4M(ƈ "33%%ْI$ES2hf (b"m(MAH1IdԤbFAdeP2ikb6 AIDKDQD Bc&eɤjɒ6FMQ6bk$i6CL-lk EDVI5QFmEkM!)45-ElmQL (b2ّh&К Dib4hi"IeD3 LQ0TM d bBL@3IF dBI6&$#"&d!14dD2%& K!c!(0!P&LHL(B!,)%3 aeQPQDTEM(D0ldLb2bC4i&(@J J$R"%2D5i2L@ Ffcc1dS 2f$2,0H#3%)&ABDd!(((,1 H)LLRh&20M1)f 3 2))2H#QhQ&$P5PC44ٖ6#$HD(ɦFIdF"DC&a4Ē  03F(ѣJ$PS&d5 HFDB`40)a4"I"D d,1( $1I(,&R` I4ĘAHa&aD)e Jd@ (RcE!!!`RJS!YFFhDX1D HԂc",!$$`%)1&#RJIRh Af @*1H ) e)EJb4X!"#$$E@hcEL%LI"J!J" 34 !)$"̔)`L2fdJ1IJ&3e H 2HHc - 1"@& IQI%R3ILɐ&L@R4e0L bARH6)4A" I)F1 $ 0c&% -L""l&# 4d4DȄ4dAHdLR1i(JL$SM&“! ,ȱFH14DMPlILX# TF(̑KY,F 6)LC lc$ɠcDL1dĐəرE Ȅư1H(LE@cA3F5QFȘHlb2fd R!A$QF0,Aa(4PZLA , Lbؤb6+&F 6" 4Tj$j!MĒIhcmj0B1Ңi&c "SLII,fb&RC22$XS)$L(2"f&Q" $$!%D0ĀM2E2Xɒ4D 2@Lb),ED"i)$!IdDd%F0%2!"fɢ &I 4Ed$d40PK$I6ILdP ,$D+2)& %%124A2DҔd$ LJB1`Ĉ ",@h (D1т$ eE QJDE CAl14c3V,Q2҃ Y#i0ZH &E1Q(FDY 6(Dm% Ģ *Y4$eF6ƢDJD11$42eI)EJA01Y4QQE$4`ؘEF0 $Fai+"ERV&Q5cHj"F؈FX)$6ɢ؍d)0hM%Id+F 1REc& HHF,I̐Q m&*(cAb(ƓS1cFB)$b4S-%Ő#4Q6F6bEF62Dh1&556ƋQ5,Rɂ#lbŒ AB!S&TĢF ̦iBbMF !I&abLMLƙ1"FC(M4R@40%"iE""` T%$i $(HL IR D BTd ɓRElmFh01IaLXH)f2A2ȢbF3FF`@M4hh$MXR &j@aC)&$lLdD!2Dh،h("J c,%C(D)2hE&`aF $$PIR1e%%bL"Hf4%h I$B2dِĒc,A0" c#1,fRm0B411!(DI!&! JhQbB2ƣFEj2$ IS,(#RbFI H&!(DDŔؒ&2B`dd)%2 M# i@bdI0 Df$jcII&Ȕ"fLi ``$0Q `$33B,$SIXE& $bB)PdLHD))& !32ФE0C!DDā0aeDlXQL̘ FF$f"d 1II&M%H"&Q,4D152bIɄ`aP1 dQQ͉(4![!YI E4A1e$0&TC4#I)&#LHd̲!A&bA,Q!2H(" h((Q)36$TP $d$ AFX$JBL X&F  I !LHH%(@QD4AaaL(ز3`,dȅ0a)"%!0bLR%i"d) $ &A3$ 3&M i24 ,%BicB`R&&2a" Q2LLK,I”,C @,2 ehIdJII4ji @a"d`h̠lX E-dSMCX64 #0ɔƍCA&bL,E"4fH)4(QPh$$J65) C4EH b6 "4A,IEL`,RF",֐(`RhA"QXl[EREM%E%k"f$3F1P$E 1!#-f "a &(41I hd)D4Q$Qi1 @!D5 R)3* d "(Iib$4FFTd$ 2)A L3IFd$!3cd"P6IBM,f&D!̰Q$a3$#24 3dFHBZ"H)"1Ph$Б&ؘ (fi6-$ɤf$e FlF$I(H&l%d%B#Fd#Q3DآȤ&d DF1I "I $)Q 1Ae$##%*,PTm#* $*4i4,@C#FA(f$D MDҠ$1B2a!F3bƢXFPXFŢ6 mI@e ,Z4Y`!j0 "- @mQQLKAlb0m3Q`LHmFZ"h`1bd" ,h0 1h4b0Bl!cPXX0jeE4I%cF*)5mFj4m6&)F F(Vi J* 6ɵkL6@1 cZB6"JXI0If$$K(L$ 6ЄH4&`4hfD`i%@ - ADJ$XB(`,0L Ɛ"IB4$͐JQ&0›H  RI2Q j#bf$Mf3(ѢdILT ً1IB cRa4ɱPM)$Z,$6"1he R#,i) i#IM%0JR E6(!"41 &Rm DZ E1̌f%JREcbF,i1b",ibMF"1ōA`iFƤ 4fV$hQQdJ4fXKIE2 I SXɑ2l (",A6M ,Q-IEQllF"EDd4bFi6"A*fTTlQcjHTƂPjZ1I-FцbbPl$FI̊ 1#&d(Ęѩ R`X#3QF((,h%`hQ"T%kbMJ̣AԖ6-F؋̪f I%X j,XŢ*ƢшTXBZɡ AH&FPcHY lhJC@Q,%AU$"&1@hTQdL1EQ ) mRXdF5"chljmAjLLi),X-2TԊIKœEU@VXբ6(f"4a"4FaQd̠(D!i1lY&V&D$ Q)I#Q  P" Ƃ%)&A,aIID,P2dCBIC0DF )D&"edYm cAbPHbEfDEɠaS(bL$6bB4#4фDe)E4Q! &&B 2$)IIHLldA$4 ɆX(D" 4 QID d3A"Q4RI2eL`&L&RbA(2" P(P&$2L0 Z0I&Dȁ)4HF"4Dc E" %!c!IQ0 `2&ld̈SI 1l4JT!2F% F$$X!"l&!dJLALQIPi L2BƈhL(4@̍DEEJ`Y`JL!؋&D B)2 L"Ŕ1SEY$1&*$&DI"HlcQdI"H1&1 Q4) 2e5&fJeL"l̰Ѥ$ĔFLɨQE0$4IELcc*-M"2 *LSE0)TLb"2 3aLh)M0lD `@ "I 4 A&RLADAICJ #LD1h&La( F hLc ! 3H&f)$,(DDDRM% Ja(&YL#$Af D؊C02D" Ef $Bd!1P`I!ai13EDc,!Di"M1-ThHĚ(h $cDf 2EX "TF%a$hXĘ2RIId 626 FEcQDB & &ŒL,%"1ф FŘ2iMT$D&1EFѶ-&Ě IE((01&K&ŤLEY+!lfL Fc!؉IF*b,hƩ$т%FJiA%$6MQ,X؋C K% (i6L F TDQZa2 lXa4#i"am +4*Phc J2SJe LCMh,461fY"4b@Q22Ƀ h ؘ33P0@`e0"4&#BR"@%#a c6b4hlJLK F*$3dEMH( JLɐiLIbBI6,ISQ FJ"!a&( %FP a#$Q"TFHc% %,b lLI$ECJ$B)4jLh4)BTFj $(cDaE@,3J","64(&#QcF"M)4j64 FbɌJfE!D`6BQcDM0DVi6*PMFѱM(XDQI&`EJ-!Dm )چ EHT)h +fhPj4(&*KLьd,d50 F,QbIb*("6,j dhDd4bL$X(5m%EEQCTIŌ$l3P2ADl)F4bQE%[,F&h2#$i j4AlThRFM&2`Ii0PKIXRFHQa$P"XԔdِbDQclEX &4QPhM6(QUIe$dJ"4X(32IIجZ6&0j1lM BYFf&`J@3-$Xē"#b (`dJB3$"F& "I1FT#Ɠe 2*c&e&i (2C 2Hi0h&)K#(Ę4(J$5%"3 $I)M21D2a2QD13,Ƃ I,4($$2IADdĦD60P0`hRV"$LTb"%HI(H5&HDlb"بQ2)fmFAhY1&,bdhDl)1Ƣ,XEȦ2Ѣ"I5&Ѣ$ `TME$J4d(hы2L[P3, XƓ$J6-f̍(BԅH I,AEb $FT`( dQ4FMd0Y-H %FKQRhF"*U) ԑQQŤ"5(LY4bR12K#f)AITDE0RXcJcc!EL2 &BQQ LEX$̂Bbb 64bfb$j4Ti-ckDd15l&V+%`1A*#51V+b-j2h)&bATV֓dK1AB,lI5 FCcE2QPHj-(#BS"McIQ 2@(!Ql10F 3m!i 4i5 `1b`aFDFQhbѬd4Vɶ,bi(*-&4hضm-Em!RT `c&&cmb4!0F6ƒ 2Fmid1d(CFm&Ԭc42dd2Ŕ"DhHdFQL03&D,b(!B-X& (4 6dA"lBd4Pb,Icc I()4 Ld14F$LQDi2bLPbd(DiF5dlHc"e2X#FI0͌R-E,Rb#EJ$LY(ZJ I6 5 6b$ lQlXmKDc#APED[4fQ4c2ѬjM$̡T2 Y)0lY#bh%BC hF*JDca* 62b(I %D0lffPDlЅbE#Z5Jf-!4j4ɬh)&b4`V6,QCJShآe TbDL lVъƱk,LM#hb) QADjaPm"$@chА6ƊdTlhPdF" m EhmlhMQbZTi#cQlQFXDVFbQDFM-Ed(-Z mci#XFLRb(DfU0M eX 52 Fh1X((H2T[Q"-QV4 F*+dŋQA* Fmbj#+j5DZ6QMk `ƍ I5QQABHH6AB*,hIh6hE e(Q ţ%b6+F,F&bZѣ!Xj#hlXƃb--mTUJY h$AhAm?V&EF4FDԉ%(D! iH &BL(F)X A0MIdЈ! !1)"FLFLJD#KThf2Hi$Qh$,F0֓I0PQFfL%D!CbQQH&3I12cȐBh0h(6P)@YM6,†aRb4H1$ɘlh)̐,1DIJH,Q4FbJ 6 2R0)&LS$kHB&&1EM" (&B41% 4Lf,e`)0f2(TJBe(Le&(2IRC4bBL&4#BIDe2CH3aC&@IFXR H%&„2dC(RdL"D"BC1@ 4bhɌA& K&3 (1HbL! 2Xd5Sh(M Bd2f6Db*eD$زh`@&̵&4ci1b5h4b" %&h0X F"4X`$؍ bQF&e3R0Y J%4dDK fT14d!L!&,a4c),$ 2400d٤lJXI4SB1(a#!)F4`@$bLfJ0&h`$& M̙DbH,h6LCb04`d `b3b(b ceL`Tf1F5,!m3Ik&1(Dd*LRQHHD đ5"M$CRX(SD6i1hFP Qc01D4 1 `F K2XFd(т(C$+!f&0b0U!"a"6) 1ب 1%6CEiab*(̘1!#I5E$36 $(ٕFKl"*1lXPRYѱc"1IEcjMX"M"(2U *"5MʒbD 1 BHFL!4`R)I((i0 I& L(DHI&[Ȓh0bP)1 $ @ J%df a"d(4@a 2(E1 ѣ4b6)$% B$(LS IbBИ2XƓ-26EDDXL2#l K!@2S#D4)4&JM!`&,X!IFLPi6#" Ԕ4C,d14F(d @M(`Ɠ"TRh#LhlcDF# Ť0MQ2(6J3 !&lX,ƣ ̊"M` ę$2LmV&FbB1LZ m$ccQT&eB2IPLI!3m!cE$`Ilhѱ()1!jM%DDhRJ  6 %Ɗ HdL֒$#3i#`TY D1PTlDhkc$I#1%Tl$l*("X!2Q4l1QLbɨHY$,bBMѓFM a,C#b EIRmF)+R`ёJV )MhTZ0b4QM*Pd[IhQQE"PPc$h1LQlXH4bm"ljl X!1(i4E4,XFaS d&6LA"Cc4ɦ&fH(؈ &1&"a b#AiѤdH1 fcRi $ ƈH" f a4P`bJ)0P 1b(X1IDB"S"(̖mBi0FƢPűli0R LV4bSi2F!̆ɴhY$0bc EP)(dX1Ii5#j+ R4$(H؍$bțF0bi#X ,m%Ei5h%!Dh")1I"4m%F1d1Y,%c$46K%AF1H* cb6fV$cd&Ě)5VPbb b@LXlTRQ&J$66Aj4%!Z 64kI`,ZeJmj#H*$E F4Q&hAf*-&M34TmEQ$QjM0bЛLLhHLc22!QQ͠MM HF&`"Ţ6ō FKИ6*J*65mDґX)ōƃ%cd11,`J6kLM!L(lmaIQƴ*ma3"U&4͍Q ƍjɱ[%!cZ j* $5$fQ`(- b!-FS)6ŌE)-Ij-cE EhP,m bb-mhi a cDFQōl-Ehڈ̴Q"bM$F635FhэEcKҘZal eLDE#2db &S% Je"F004JFD6D̙(HdJ6Rȩ!La4Q!Q"`2d4K0(QAFИBHFM!$hBcDI$CJdTee!)&*HJi2A Q%LlY h("#Ic&V#6eL*6(0F,ET0LQѢh(baB %d$ljJ hT(6# XZL%c%cAL QRZ 60(1T-,b")!6 AƊQFTlLI*(fQh؀(2Z A0Qd4QXh(К-F4l`-E"- b1cTIF !&Ѣ$EbX `j1P4mU-QAY1Qш6$b((2X؍Xэb*f3h65*Eb5EF$QŢ6M% &LmJXcb(FlTQѨ,b6b`ƌQ`Mɱl[Hj-AF4QdHdDPE%TdAd#cZdX-&4Fkh،ƊiXJj("A%؍PQlXƦEj#QثTj6,lkFƪfэEAlmFX&Khm(jPBPlmF-cm6*1Q41T,EѢFE#VRHlF I&QZ(QIcQQBƊŋFl1cQE1lj4kMAbf4cbc(ђűh6+TllDэFFԕmJĒjH65ch 136V#kFɍ(Y+[FōJTFM%IAhFflbK,bŭ-TU5Y̤"!6MM$Z1e$Q4M1!D&R` IfLABa$BQ "!̂IRD EE&"4+ ($ђ%V,LE0f"l&&i3FB&hԥ&Qf6IC@Бi61&#b(,cE3HLD5hlTDc$mHQ3BlQ`**Q $3SLX,XؠFȕQ6LPjI F6ɐJɤ(5 IF),Q4&",jl TZ56đEQh*1b#PʋlI bV1lch̍[E*Tm ɣFemhXhŤ&k "*QX EEcLزEEIEQI6KF6Ѱ,TmEX TՓXcmETX-F&6)F6FQQTP"FƢ+ccDE(dEŋELPQhmFFFblc$ʊ6MF*lIlѪZBlTm1bEDU&h6Iljj QDj$IFFcDjƨ-I&V-AƈI&fl4DAEQU%hc- mF5P3"Q65Rb6"Sb`hhjLj4-`@DhɲQ%hDi(Z*Hڢ6FjƌV c"chbEj lQ*cEFkcb(Dj"+$LTjcZ1h[&بcbhڊKb"1la,mhEE`5mEV$̚h"ѴjE-L5Xj-QVMF4FkI+-EI-dō[F Ũ4!ڍVQA,Q- lfl1mF*66(AQT)(@OPDA]pʪ QPnFlmMFMU2ncj٨jj+tV:2:驝mviBTV 4:4W5XNUW#Z6\Z1l_3nuj2- WI!(B@RPvte(ӔQwnbEVo[t(P%!ZE+B(iV 4uZ #FPzjQ meakQ4tҔ -#}`Ҕ(QXuCPui6:t)P:JQ+557@tm Qh6hŶQmX,mq:VSC\mMX3+t+UJ4:GZSM.tHHkZM @4PRh21ʂV EM-R&̄B4mG6UMXEsks!AB .:@жZPRt| t IJYAMqLt5fea/mղZr-3ttY[Д4 i(H(WJi@t- еHQHD#BMBPMC:NНtV(uzg[ʮj4mFZѭؒ%l]@&8)4CKIӥZEĔCF]#u)tAB4 ikPmumrb5ҥ:4hҴSCECBRsZ9jƃQ5mShAni!]tkB:JG"ЌyV*-kkE,B:tPTH!A yDTF+kj.Imծr-s4hhD]"h]:Hi ]@j\ەآi*`+P&]-CFt*P- H +N!M+Mht:)4TDBRJRtӤtqMVm3S:rJb6+r-α̮`(: B%z (=M:ZDvHh_@:4SHF4ub-sTXFXIH&(օM"B!4鞘l+l)H%.4E(J4&ІHh)6ҷD:jζP%F +XuZu+t #:M!>Ovi t41"hu+ ewvtwvt cJAH4ЍR1:NtM֖Utûbu7575F*cmbטţW(tc@-Bi@КFFS@ 4#II#ġl:d4 PFP6-+BmMcuGX: mXWG-N8+1)@hcdɨՌjٻ2&% Z]%"ӧtζ鶡RК4At% 'B+mbֲjX[qt*tjVwrÐtn):fR ƣeIB)t&"BvK44h҆ZMDJ4ťt:J]h :VtwqѩXV1 ] &M#&\-\RviEM4hFZj-FjܬQQbmPVg:RJ &ր&1rnXѠ4([i)tYQЬoYZŊ+nG1ܮ\ۜb6n9P4N!$4Ȕ!)B#M`p͠ѭs%B6Ť6thZJQI)Ji *R4iAКMHچ +ZR4;aOZSz] @ 1)5ݑЅ])J>' WHhti i^:i WV&(%4iV CNt%+S[VǦ=jlՕj-sc`9hcAF@Nhqim% UEr͵W7#mr66]6Ěsj,tnruXij64^z e1Bi mK>{Q'w:0Zbk6\+\m]lXsǣn5fV:jnJF(E (Ӻ+r)ƣKgYlP}$5BSHi CCt.- uB i([Zv@GF="t-"h)6 NMGXTkrcmG6dѴQWo י 4ih_B-7ͷcsT4 % Z]tѧZ d *P:t.= RKIJ5NM PҚ}zQ:ئζ:%nkܭ bFHҔ4F&B -4zzA(F):ZihPt룥c:r6yb\0hڢK4 iB P] BRhG UfΛ)ŝ\r-bnV\kh4-ѥ(]+Ѷ] tP )@R\*~j+Q\k\5cEB RuT킀.JѣZ鱷76mF::BMA4 "P턭h =(}Bu@ R:P:mBh(SAқQX Rr^WbōyErڋ&t:âճ+ 6ыF-hʨ[͹nZ*(CBUNvAlb(7Y2ΔԚ5sEBlj.[rѮQr.ܨ,ldMP#IF4V5c4E&H픤1 H;`i)HC5ZPӠ5'v^j݅Ν( h@>:J)4hs\ɍsDEᮗ.Q5ʮVsj5HR4!it҆.NІ-p5͊\QPjBנNG=Ć[#HJJi+KZ6ƴ i BJ֍@-4:thJBSJBHikKH҅- ДeоĎ(ٻ'CB].JCJA%6MWkFQnh-snDk-b(NW@Һ+BM)i5B:(sk1Fخr.kM ZF1RSl4lhBPVTV!lFtjIhە\EFsY2m:tRh(M% Eh (ht:BZTWυr9[:J-&HiCF4FƍshjIgY+Uк `J .H! GL+:mMe!RT:Phht퐠ӡ)44(N ڕBz.ЕtHE:B.JVbh%שּ^!(6wll[Em!ڃIl.)J.%SI(t΅K9mZF554!H) \B%)0S4IA::4)BSkE E)ҧZm4h'Cִ.4 ki hcEX9bղ4#M(haE-;eV:C(+V6驔GZ MMBmsrcH5{3]M씡 PS}BtZ體pZ.h["6Ţtu=yEjt)ynW؍Qb(:CCAN-1juCaOՍ[)LZ\sA+bjk6(s.BiF(Ft!@tJA[(nW@h(:(A: ۧ'J̣>:撔t:PӢ*73[ko/*l`t M4@t Jл:O@+@i4K@i6)J(lI@i4H)4AIJ!K)l!tR':4DfEntrGX۔ZQn\j+76Q<׉[y"1mQ*5cE 5ƤEq.mytn喳ӬCzhzF4:Vhiͺ[;w;[ţQj5c\rZT֊VM:uL]W8,PiSHMRڋcTX4li5F9h-Zj+#5AiJ4SMHkN4i.WBtٺF #IlRJ[ At)} ttiQ m\*m6\C@ (iv%&)+eaz)WBB)4-=zn(f%i %;d:]m֒CiZ:JbM@`-*DҔ4FzWIAI@4V쾺it )V bH:]IH{^ *}#=r5͢sAFG5\4j[EWXguʺp)6hC݄!I IBRJSعslQE-bULZcNMiJt|)(ylQyvFƸsl&kIW˚ю-DiH4qiht FIH1)R*1sJumz.)Ybѫ3\Q\ۓHhN&=Il#CzBS%FرX˸;Em+jeP]ZKaogKSS\nynV(nW)-wuFűBN]:GE;dQ%\ѮshѬJѡ )HPWBzQiJF t T4uc&EQRlhV { JGM%֍ RR T$ui*4 `JsZ(d-ҴW+(S +uFQ1Ltĥ"JD:m-ͮVEcj[ݨ^TV-h+bk^m )BS@i S@KM* Oz 4'lнP nrە˅\vuit(4iTU1ښCܺ=t&H4`ИtOHI ҁzz֖uZhӈt'viSJѵ54[ܱkusC 4 ;4ѠQB5@ĚtM%FAb˛#^أcW7,nQ>lkjXƱk(ktVEth] Q%:&%+tt tJM%R]T:CӧJMWlVJ[5ʋKw]5*@g[zee(˔Zw\-EE[Rݺ& 9nnU˚,jbmcm,ccd:Q[<ͮQc9E)GKEFѷ-sF[+oƮOw+. pFmrQ9Qb(ꔮcmQtP{%%+tzGIדjmFܫshҺ'A1h +Cl5so5ymt.rђŊ܈͋tkr+PbܹvƮ[t.A()ѢܮrkKA47cZuQ@mkvu(u!szɼלDDl;bN6tIjç]:+4(ܷ0Z$#`Źgv#Fɱgsk7#Z-@ZAHhGJQXۻQjLV)h@hX(iWH+@MGlJN$:D:]J4ֺӢ}uJI+H & M/ѡ)uIJR(jzzt:Ν)@;#kF4'JЅX˛Ԛכ^IX $j5mPt(ikJijGCO!IcIHnJm離gBmqzz)+E{M:ĦڗJtSA4t4= mLۣ(-57_-jtY+cўsP% ˗Vx_?}Jd]ƀGvѮ#E`ӷrsU%w`/v-櫅F\!LKvSCMtPT5@h5s印nZ,wuJCM:}"tPhtj1nX+r7+o+IHѠ5JE!nZ-cDV]ݣWb 9'ITONTt=PS:vѪG6K6sx]5r+]ӲcEs (tz: 8M 5Hb SHoicZM=(Ѭ].ZᮘnX(5QDnrѨ\;#AIk(pnj-D&Ѣ+s[et(54W7,V9[o F5uo7r)ΨW1T_-5ybѱ]75h(Ӡ)&Bbshѵ幨y\[л\ pMrf:`J tQ9wb*w_/ ym ssPbr';qb6s\[NW{tHI@օ4ZkC]:M$F)CHU6bMҚ.Ɔ! \VBc*W+΂n0+Н:݊)@覆 "cM! Q#KN)Yet[e45&ĺP . h"E\džnc`rJ5^̚4s" щWdZ,I2-[ܫӥ.tp5ywj^ ClRRPi1LsPn\luN뛔AE1iuj-md{Wfn]irѻۮsD>GLK}lc11zh1AY&SY+xԔ@`|$Q" $T%QJ"(RQHUPR SDB*PQBUkT$RaTE$QE*@EA*U *UB%PB$R*R (QRT(JF((*DAB J 4 4@!$L &$FiMI%Fj")TUV *eBTa))ThӶUЁ]@Vζu6Q΃:Pa@iWI@tҭ hh MaPJV)i(ҴPcV+c:gMl*QulH%B:GBJV%t #@#JО+H&Uaw6lǡ+aq҅(R)CS4PPvHBU(zSJ4جLu[1[+:+ :P B)dh]"JHitHW@Q@P4SV°S)S4JSBPR tlP(Kb?C@B JCKtѵl³StVՔ:aZJFhBKn(XVe]lemЬAg鳦QYC:ڙ wAFA(W]m[ 2ºn[SBA4+AJѥZiCB:4M+JBRJ*@Mj4iVh]:җ`t4PhWBRn!CκmeVV6(PzZ@) i@ҋhe:L)ΗIJ4@@S@ZJWAFNjmY'ML1YNjYJQ(hZBЍ/B(Qд:JJ VitN5JiFR@P(T)Q:Qh@к5ZPֆҍ 4]hQBiU9l\(+c+`N6t+j@FSA4KfY Ε]6jNt5m:lCghQ鎂GZCJRhM4NtIC_JJP ֒t k@&4V ] H)4AtQt /ď@5N :HR)N% (۠VMmC JQ4Х1CSmƨB4ҺZPB."4:)кSCGB] +hh44hBI(4 6ɶe<)5f)ìmP]Cj͝!HRBiA InFtj}lEЦJA]4Pi4:4(H/KM P&)DtJtmA+uXVaoM:ju[(tbT GBRMZJ4 AJtBچ)%!l&@ҭ)%uCQJW@ iDtRi ҝ=HhuI &[i JД:ۢSuuZM+iR ")tJд'BRl2t Y&!@h@4%-*i hM)BЍ!M!J4iTtlجnmCPn:]RP)CJGtJaiAJ ҡKC^á)JGNL7CӢkHB  :::4hCl!ZM)AIv z:JjlF ƖN(tW@PAJJ4A+ctc+: H;a ITB: 4.4:Pt:b(])v0 : :l҅ CH45H αP޷t5 ͠bCBMi(FFmҌ:)7LKbՊSn:P-Cҝ H:V&ru7@:jA^4)Bt٧l NH M#)hhMtl-e5 c(:2TGXVڳS2 cWF>`R 4.@ Ү4GHiR%hR H}ѳj::RFuVEД$ӻJ;DV5YBV gL΅ ̢Tژnlg:SBt+l M4 R44+it DM"J:WJ4%.ѤM #CHCJҡJ:RiUCIJMǠSnnL7T(nu蠦ݐ;].SN:JZIJN4 !'q:ht)҅:JK@ht X:SB[)҅ҭnA(Ztt+l(VV#: )QJHtٽgXzVjj5SQLiHS-RTiҎR RiTКT( Кč"Pl%&B:A4Wi@A4F]htR D)Bi[)44 ̴))}=Vne]+ J֝ӡ҆t (V4(􆕤BR4bm&)ѫ7MtPH+m֮MYNfuecVt+ր:SB%+ t 4IN CHR B([+R'RƑDm)iѠ (E AHRZvB Н#K`4q MBi] BP4 @҃k2+ll(ՅcelS۠V:2YJ:M4i4#>4'BH=iHRM*fs Zh6!hP&#B'ցOJZTl:]1bұelouRҔB&J]k@(Ti(LtMbꔠZM [Ƭ2bY gtºnEnVP4)ҚZ tCJ WIBД1 hBE]/ҥ(Uz.#ց)Sl&] +iQ#t܅lmYr+5a+[-:2@} *tkХR%*MP) *) %#]*FuJtRQHP6ף= :Pt:ƭlhDiT [B J *ZA J;a4(JCCJۭCuj`J!H[(R( huо J4>BJR 6SHRtNiT.:CKНttQۣueڕkH PZM P@:t&jM)&Bik 4!hibB*h A@CEt *(j΅o]f) @Ҕ"= /@Ai60֗І4+i]4#BДb:[gUTu tiJ@)@RHPP+R-L٫gXRhMӠJ֔Q(iSBP Z@Z;#e,:cV(cIЭ5J:::ht 7d (B)iZU( A@V96: cP R4*:)J.0h@փF= e(=:NQg]S+,5 n]cu1[7Z% M +JAR&(GN4:iWBH4(R4)*Q SM?P#)[tmEV覔д"h Ҕ@]]#ZVٺQ P&h]!>N.4hFرCIT%@Xt˻+(+(اXT*kBh4Rh %44hҔ-6Bi BGl-iдA4:@ PtоضQz EK@:EZ6Vj 6fX:l2V(Va]::) tt%#:J:V[m"Z+oEb 3fmU *&)]% (;`)4)l;8] KRhPtJB4 @tt4E)WK@ h4!ES1hhjhCIJ5h-+(4 BiM @ithSAl!((NҦ&BӢ&P]hBz 5t4кNh] klCБ J1Ӣ Ai֓C(M#)tt]DtT(i]  P!HSFM-4  J(PEY:b[`L=aXzuYOOXu (ҍ%!t &HӤt:PCB it(4AKZP4*B *VhJvR4WzF( it Y(S+n]*}"BiGJZA-tҔДT-liBJZt#kgw Xur*:r5lEcMf; lSPuV+ tiӥ:^씚:m7Xtrlњ І::B&]* S(:Vj:PuQ4R i(t.6JkBRcetBZQ((4-iХiJu+I֍RPJ hFBfQ2gYJD) ].h 4.к @4hVhT)l@(hi镺e)J:ڷZҝ,@(kEThR(Ji` J bhZFM) HQA[)ЭDIhTJJtRh4h4mFBQ4&)H4RhtCBCHh SlCAJh@Hm4M RLF)MJӤ :4=)B#Zf5 t#H5BP4%:=cjaQYXJ4 R`X0*A- TiSE-OHMJSe XnUBKHZ^wSn+:t(βBhkH& SiM+@JhhtHi zz4 thttH&=D[PuZQ:fηYn]tQ:N:zRB"t(7(+4bQҦSдR. @h4'Z4KH^t:B5IKCH"4JR44)-&i % @ҔTuuN)(:R:V2:g[gMMR].4ѥ)h)B)M:Z  7[(ΕGvP}:J44)O҇GLd@X[b#,GErCMQZVҔ4iBҍ:GJQ( iD})izZ .JtQ e JTYV鴒ebeHBk+2%eaΝb@iZvA!J=:)ӣ4}zN(B)Sunn2JG:S:tulF^ Ji ZBh)ҔFEhkMXuQY[5aڋ)Ctej*Z[RϦzmPtQMY:f隇]e`gF ) F:zziCB4b4+HGVh4tK֍(P b)itC@hZhzCA@t mH[ +:mMrVՍX4.4 @IE !ؤj*l[+7!HAuBE+Ut@i)Vإ 4 RP4Wzjuѝ:*Y:w9A@[dMu퐣htKmК^44P] Ĩi:4AlMhMF)Wi((N4hGT(zCuj  JDM Nt 4Hd(KT.jOAҍ3VM*hJѡRh )iЦкOF[VrF(αVYVB ))AJit.H&z>AOAt&}:itVztE mZ]WBIm)z.GHtM IJht&лt:Ž)3:ZH(i@bBth4Bt=4 -*B(i7ZYgE4&@h%m .RhBh Pj7L-ZQRm(F+J 3Ѻ1F+7LnS:f:BօmGAl#ZGT)Z(ZPҴ aF!SE&HЅ5izR +4@;aA+ChV2TVb9ntGKT+:/HvuAZuK@SltKHi ZhhBCA)CNT`ij Gҽ ҍ QT ҾHRdF)ZB*U!lҚ(S)*!)1 ЍFZWKtYXVSmXWwc]htZ]h:SBjtE iҚJ%#E)BN@}*fSru:Pn)JeIІ]&5im֦ս1ӭ tΰ^(jmT)ڱZ#] i% )(JDu]3[ecAұAK= К D 4@:QД!ZWJQ tPJtބ`>)6B4P SGBj+*p[9]:5Tåt%.)*ihYҦVåmA44 h@ѢИ5M:ء,6tՉ4BiB()tuСT5!A+JtЎ uC(t @:tOCOCBꒀ4Д(w X9fEuJHhc M J5@hҚ&&iZJKaE!Ѡ4h pzu:nEj: !. wbgzî+A itR4iMiJV i襡Z)b @4MiC%M V44h PОzt: !M HJtF4GAB@itН.z] i(ĩN!4@Jq՘&[gL=1g(uSCFN P4% h t܀R:M GVSzٹ+7[sEЮ-&$J)mn77Bt Ai4)AJl'K*AM(ДM%U+JJ4# )MFKJ++N &;Hh%L:+fmNJӭLth4ӡzB }/@u>E/tiB%_GHe;h( -&#JB[S:nlr::J ]R():Qæշ%ݝ QF)К]&J3]l T)SBZW=%)H^Ri]-"R:Bi4ҝ :BiJ62Ӥ4M V1 i1B=i)(hІ֩W:C(4ih5 %SIh(#maCZ DiCJZ֐ABi:VSN4PCq%- JQzWNE: ORU)[zR+5aE: ʢtގ ++:c6+wmjڳJ]1Y&F(}:)BJ֔G4:@tg[0wu:4iCN-Z@T)Mti: %4J(M-!҆:ZJ ցJV6 YXXPVR2SmSl:Pe3fSGL Et WJf4K"R4)uEݚ=zhR{AѺtV=!I"P'K(t:u@袷]fFNhM :t] 3+BEttˠ=@ I:jgF{VAF (h F@Zt-!+FCBBBP-&JPH:t4=@;i^kE;jҽ HetB=JW4lRPS(hV "n=Ht uIgGX)GEf6e:nf.e:âXQi ҎCA@iZLWY}: kjQiR:ӧg&ZtJQmLQ̣:Sj4(қ`tltMPiUHhkAim4NF(.#%WNBLtgNK@iХ+M=45BhKZhfR֒HB4-4iKӠh:h lGl#v+Z "ZST&4.zW@[ @IZM}Hu4:@@:][R)t&)B)) )S@B>=4 Jz,ԆNfK)i*QKBLuVXꗤ:S^!N54 F* !J:X jZP@%H&4 S@h(ċCK"i(O)( ZUӡiRJiAѠ[`)&QHM#QHJ^?I4 M(VP4@d44]+GZlC@zE=)HСJ)zN(MJi4iBi:U ִiZMPhZ!KiT6ƒi) z!hR"hC+t+OLV])oYM BSOH(N:V5+nAɝjcl$z)) i$HKT "M4&(h=Wc7ҳ}!P)]hZP Z)M*"i -ҥ (th RӤ$Ц(: KJOWXu2?IgCڳ:elօ5: 4%& UP:@htG[m)XuYCI: %)t4/z 6r[ [e Ln]2SiAAE% :,B]@% ѭ)BP]:P)M Bұ:5n#6n6uwB-J4PAt#iVMS)([`ܶt[bhh 4)%,HreҊXrkeR֟G@IZVcS((MU& #(Ѕ Ѥt 频((AFFJhJ;YhWI@!#Tyg[}nb=VĤ+fe4)7JjVtSS5a۬t[tݲMMAHiCA)(h} z J HH) j }EiBR]ne Z] l!M-&RZP htV ӪenSetƚ )Gֆh^ti GJC@:hHրit!BGF%hh)CE&@R@:ZtJ b:$JFBBi4.iҽ#J:A)*E H:P(NSՙFlft::53ﹼmtlgT+7鞙LzܔSTB ZJl m-oCǬBP jl]gXrhtd zt(SKt}#H M4`JmEe2+gTnJhSJ(i=q9C+l#H0i i)Ih"~Et~PH[%.ELlmjíЧzFZ?HN4:N+u*CR@tMUh i&:t2nM^VK2(5~ӡk)zB!4 .`)SEiҥ:P Y7Lt:mYFttec+:΂:XV΍NԦΛt+= zQγ4#tSHF]M(hC@ZM-Pi)h4#R@SHh:D HKlRhPt%R4MKZH֍:J5=-)tB CHitt$J:i((h]iRCT5CSSu[qiiAtiSBt:ӧ@X5 VEQkV΄tI4Th5M)]=ᡠ:1 @:)4liuΛ\UF::7U%h44-M-)Sפzq&%ЁF t5fS:E wvIt5B]k:g]̧N3tΫtQdγ@>E 4JKa -P %R:R=@kKJit)lJAGBL'Qӥ4)m[)mMJ)E:u) AMb]VڱeQGyVSHCA RGM!J QКT@z"P#PP Dč%1&:gN:ft:CH) IB)MCB,F:T!i%)HGnBm Ht)N+mFΙ,(PXeQBWl uE*].TH)lSnu:JmhujttQF}oF΄4H44Bփ@;t+H3lzv :)GT&*% Ӡ4FRBM!M-=:MQQ v hӠ)MABtVh;ۯ΃ jlҚf;i#A QRNΙ[( J:CHjdvFPX6Zh+41SuPT @4:QѤth $ݗVo[uVYݕ4/E)@:ҚJ"QT&&T)дBt'iZ`ѤMGI)*к?@zkPq#wu][ jҦE&CF JhvP4 Z[U7:)w"PRh : #JTК@iM- )EH(ii5KIКR.IZI4JJZ CJZRն뒔IbAGUXuJP44M(P.#VMb4JGJ kF +HRMi*.zCBDP )!UCvMt$AhAeEEE45X4)m67LJЪo]]RhkATPK JVn:Ȣ"h6hNHUHN-4QFAM(Mе)b ))KoC@RUQ^Ӣ=0jRiIHQlꀡJVR4:CKAѠP+IM4(umII3H[ "!M%!TѪu):^衕t5%ƇN]h :J)F62&*F'@RT4t4գU RR]A4z -wd -QMш:M Eh:&\CJ߻&$))4 t-6εeVU(zuGUY%4+V7JQH:S4A+j>ܲIBRL@R;b҆%m#* -h1Pe4.+V:۬-TuE")l$K+R5ihm nGJƭXQTZ(W֪+J)EӶ*[U1YؖKXɝ*PК@̴4VZJ=&(hjM&ƪѡӶERSCIC:=mTU~D{S:+ T3MBۤmw B> (CH-!B= 7jg:t7Cz+(B)])4&vYZ(޲[JCt4&hT4!Ft-hB() &)t&JZi4MIO@i)= JkHSt4+΅m'BJw#hJ.˜thPhhSE.R&l4P tMCji #]+Hht&f)tPSI^Оt)z4% R]izR/i4H=!Dh4A].IjTH>4tR-G@hJ].*i(4M.a:M$Δj.YFVtKM A3 ֍ZB?Jh>(Ĵ@!Зc4'HiM i(B@ht[iJT4SoGC:3R24i(i4PmvOס ){ H:!=z}P.:[:P=OC6iC΀JDtRAz)?A/Cd4hg&h`O(]- ҅% ֗A~\F.ڃ@fZKbXth=وİow}|W:b.%qmӦS룪{hJM-Jl@=/Mq&Stt uelUe:CCIii4]rVeSGFv=nO*H::PiVQ[C7(hai6PѠkΒۣQEntVMU hkI iMh4Д&AUc!=5IӢIAи !Ϡ=IX%uV;(bzն&+gFhF V;`SKUEPUub;bzZ}z7j(-*l.V=wOݵkMRLƘh(eQ.}hbRO)C䖶(NCЯП_Sl{HԂF 26ΔxUUUꪪUU_ x>e**Bl  ڀـ5 `- jZkT0m6hPi`kFhԊ RJ%TQJ)TP%( T TA%+@ШJ)TIU%I(iMRJ)Z4VҩBJ*J[ BQ (JDI@ @( @Z%$Ph@PQ!llҊiA(!A (+fT$*DZKl*TiU(IZh%(P iP%Eo@H RwD$ l 2lـh@ k@`- `P@604 Pm/Zf MN}NU:;HRECvsOf Bi̱{gD焐JI"e{ٯ5jYfĢ @RMEV jOHi5Kkw-wt QhO3ך~wm\BޖíD}_Z^5fnꕇko$@SQ-}}꿜Iᄦ[Wwm:*A%_g)Z6I=2ȯpԞ$aTaV+(aG ze[3*Ֆ+I le6R5JM}pU`{h7)$|hxS|Xt7{N<E;OeUX&ub[ccyӤ eѠF9[lËfo] UA= T gؑdEQ6Y4Qq"(Zr(P)ѯ֞'=j(̍Dq:ݴ{ %RlDwc>!>ղLΗC=4X>eO y=:z&;<džaw3ْb\B2øuBX&^3jO/-f\LIŹ]=ֽbn~8seww 00f~0qdI{áCV4{.[*/%Pmm6-Tu9uH.i2Mg~ēl9LBX|vlBļJtڻXG\Z+sB|5ƂjVG nwlfu8^{(/<ߕgx{6W5e$"4'n׫srIT%YaQZs{fƛ,,U4yg7 !O^/,]Ps6~t,BOE*+b79&{YN!=Dp@J]r;b@8ΩkRN~{kG`qux@N囱Y:]>ە;gv% ח?%'y,ّEʲC&`>/ܙffww~?zvֱ Hmg n{ƶD!{'M SYCJ3mbCĶsѕ=np) Q`ilدJXsoW3v9Оu ѝ¥K>{Sғqs,g۹ܻPGА)3;{$ZT%ь`)hk DTdd10Rx֗yuyfRt9sz/:K CzEh!^ۜ}Ć,-Զs3$^n5(=owGm|玽v}/`5q΄D^õ,em9E3Ni!n5#d[)$4HݺT|@i{1ٳsTR#ȑ&(G]V]m9lrHJ6f6Vzya$zҖ"ְkEbՄKuׯO]xdIk)F1d3J:w۠yzv{;foVzYK})GuPD'z;tWq) l:kDR"{nR@zY᝙ϋH6tٌǥhFBQ]J ,GgίD]('}[,vkmG>X{[3Ӎ]Bivt{?Lg\&7wh(Ki mm_y>+h^ýNx^Ԑ%}iX~vW=zz?k|VZGc+v^~gzON'Ωu缃ʽXZDlѢkȱ'mq0e̝Чxq:qsmPy|Q'lԞ- s׷τlQHEsoqD 4JDlc,1j嬍, ʳo78FP8pHql}^јψO,9O)w;|OLfe f?~vsuOY_O֎@ݰ^nL mk6B?3Dآer1|[9 poNDzrXkhwγ1 1B'tz̳ӔыMZH0&816o0e!Vcof[m9dVz2lEG̓!+,q"B)V~X' R'+IVЏ@,R%ijzNs YyϫժdgYLp%vi;ZpY]` 2[*WJ${nON6m"|r1Uqo8NX\MGfIxK;f;]oVuޯ/.}x;g{MΌ_ JG뽴`K%>#nV1sB$R$!,^~n.Y.8P)U<Dzh(΢ά>ًՆW([,R$ivӀ\T};1H?;ucфwt{ԯGwxr,&;vi-ǞHk̝뻎_)ǯMt[gw$&1Xv5a+in9ݮ,5e#ͩjfoJQqpA.:ԪIoRhc>pXrhui |mXY|[I4|C:w:wK=m\O]~^,P?T:mz@a$/M:4!ä7wNy?I':Emk/^7g󼏻{edSݚl69:`03Y+ZvnL0o>oݩN~lt:[7ٽ-8XncΉ8u^1?;/ dXnS%PwVb>Il%Avxۤ3>;4C~;3۾&7ű%`NMMIRKoXS<0>N[[,/zDDIfـ 6`je[5Ԥ&bK6Ex ǭa ]׮/YY~a DCE8iwݖ/,0~)YHfWL3k~t˸2/.!4Rt E3]Z[G'>Q?/s{5}w J~hw.=uQTP ΝpH<AYɇ)7V:Kظˍ6eu*؋ܢvDSxl |vz햀HtCgELZq'Dh0>yRԇ}۸t_YT>=.gkإij %.fvhg:_:<׺0Ňn}w{/FW\oxcKbS/2Kw0 =ȍXBԪuf ^ZBV^٘/SwX TIzCmse*?h)ƲI anes:'XɋykilD ׺!*y²]5̧Et'ʼn;bRѝwݘIӟxꨢptٓv{?aoZND qe`j]tsGiUDˢ>;^ 3XQq2v蜆#1ל`\_^E2RV(ʨ3ьoa{YnZK&P{}ܒ9e>;ۦf~7ӮYc۶owNZvق+ugt_6޽1;~(l_t ^.-z^v?4*ѢZ! %e"ȕ#oMeR HBv4`J1="AXL9vm0-6vW΃.֬9[t8Dg7]xc"O{QĔ[J:tӚ= 0\~8AݴJ\ltbSo76rlu(emk۽sF N/`@\'W)LLE+i*lM/;SZ$Fd!V#أvwIJ-'~<O +1Rݽu ow)KͶtHX@}cݷ޷}BxO)=9}_AӖ(Qk{ # h\b [%{mLqL "Zgy}#_+iλXt( N -aG[vM2FF.=nH qI|b0] ޘOj|ǵz$SU[A;L)Pdf#jE!ǣjܱBh<4wG]2άn,. koA<{D%YL):Y0o9n Hlu*R$t(u615~*I~AV4qKbT*M ƵsDZ5;6m%1fzQHt|c˝CyGwYx~1k=R(&xN.3Q5#%'1XA=,K |^Q$JX^6vBFkst%G**ic1AJ/yzo ׳_7o ZQ("}4â,Ե=/I`+k4¿/~^2"cb0s$X`;0ݝ:B`Z+ s#q2/nyN;ܭic9V2 :t q^4%f޼uLլӭ"mh"&PX20Ӯh0_-Ti4kǼf(á:?Vh.'RwRǓs&z .̲m)ڔgLŞn 27=r11%~8[vWr(jV(Y-pi)e#TmLJ[ZʀA՟|6ы0e)4.h/)PpuٰjiK|G}ФE7|cү+ueQWPYJtΓ* \NK*?k A(0sz<ݲU#ž[\cFm,MD$<Ɖj&Z2:794ha3{c*Bs\d|3QǀfD 1Ʌ!(2?( ]_ڷE547?nybA2f${:eme#`e巶%[3 nRSWP#7. 6m&gChO97БJ4v秜tC;6U o^1b9. rZzJsUT":AvB[*~)vui%h@ׯ Pɽ*y^4R':FJ7T$k!VDsJ{熣ʇ@EB*A,WB' (y^+ǒQ fB$/'=26-M%vbNtN;^Ɗp-)<}-GǓ?YaՏܛ.^ޖ> WjM kvV|}ó~:6YX>#KM+}h{:f[VȰr 7#& =O9Yl{rpL++~ȗ6<{BٷԈmw1Z*7uҳģtmqaȸ3҅s [TvfLo08Y'[ V^ng 6QmAoC$(Dq 0Tѯ*QUEea63ł <pW$}!Һ{ @ײ3|,1|V8.R:Byj]`V~cO3]b9yF6݆ MMN25dB+ҍ^L0 iGn#URwT~.z)+j籏״pi4 +BNL6<6`Aqa0Epݏ +pv͍_CvΔ(Xs0JGZG>J+wȠF{vUd;rJy=Z' `iR/)OeuѴW֔^Hx_t+ kVgY#7Wt~U1P ƍ>0h3̡oJ_LR2R.0n2N =xr,~38p}ؓǥG~Q; $_pP2g@[6St܅rYeLBAJkRpq#]xfTxWǔݩF=ХGqrn{N,B* "FV'q#@! Ϭ8i<*sqm9HSQ^=: ux1ҏE&4g% n5z3^zWâ^Ofl!)x.bCn]{z|?ѻoGZ2%Nd9vsR7Ft/M%?(p#mjel ܾA F5%+ı|p(mՔ$'dmǿle&vγp4iܩdDQT 8Q#xƵ8@!R'3ȕSAǮprPV>H؄H\k"ZӚ[8@^J/e̕wuZse'*d^cܾv#*Ͷx2;cb6M_PY_<9k^|+3e*FR>~th)J\yZӲ>aOdE3j)bk(Y(f >h'1:э,vzec2#Y>)r;V4Ӯ.9h+z3F8WDt.:cɀ<= G]郬_y~݇:UVQ+h:3.Kн!G2UbtcNbMW.ZG3DՄ5-Q|v8^}ǐZ5߸CK2<\l:%Rku0tYΈ~TפJZJYr-Z[JOB{0cҀyRMv}Q.lzn3NPTS;հ\ ^Cxz܎R+ʑ h*H2ܒ&O=x̀H Βf؟m"h%WAH&z#qe6(n'ٺ54~m g+<v?ՆU +ϯG5r»ѶWYI<>xVL # %$#:›)?nmKĦL̘r06_ ^l%mmͳvQ +;'*AM"?rXEAl-6 PnU1eVPTۖyC\8zҞR֢ wYv& =ec2M|K$1-קji osLBAhî5"ˬhFm78 v,*ƹLqK7 ˇgEΝ bf]m6{W0<7>!~[H$*˯~gc~FSq{fZӟTW0ȎLe<|9e[a-] }++0mƟ*Vh * d &<ǐ+=~tu%Z$(eYǗ9?)h9 K*9@ Y۷*yjJ>LhBdjs7}ܜESv+slվ 9uεm[[IB~rw}6Sԥ7uRN\ 遝%'9E%UR0+lOi+s*ks J%`&: !E笆] Ї6Ȭ."}C;]zxE-VoBɼ+?CC_Gnۦ~~.TLmFmU1kh!݀&X`xqslɔ U/7"AO\TZGm$]5'ɮ +y:YJr]lQ XώaG XP8NC%]$_/ #T!H+ĴOŦ4l"|ur4 jyI(s<ݡ~A>HHZXsT2XB5cr 7Խs1ƍ{{?P?4oP7X_j&AY9Ue^!>RI7p$s 9!ju.'w"ϰNʳspd6+ZH~o{Y )"Oiiya"}D㒎rp'/eS9X UFVYvVIC2{!Xn[ܡ/cwn񬈟|y99jz >9UL"̃!K4@Puaky5c/U뚦Ծ :L|Cؿ'*l1zb`+1+Y(t)~4HIrozZhxʎ_)!`!Ĵx_:Xk;v{{F:c8'onS*_C+dJ3E(S$yM0wrp>%џ|$ՆN JIʛQ I d5߉ڜ/=%'Y4P{j#fx4xڳ1roh/b>2& m5E*)fy%"X[#5ǻ[;h)r-E iּ~T\#As. C.O<"nk-Xp8.=r .[e˒hI;[cs"RP]3C0 ҧͤG (mʩ͗Ƽv p~dqLWgk^U); E t2VWȮ$OS`RO5KZC$,qE˽@,J\ huXo dI:ܲkya!.{`%Zz'Z,4R3/qu_al$;3pGi͹3xAm%(!gqX gFI<+w2V 8\P0YjUJcXZv|V;K}h 0ҲpW-A3ml|2[xʣdLQoGu=oX0Zs =ֿhG_(#[:/}cOmwfƬQ9L,Lq>ys0KOܲ4u? R#seQ]˳o5'A.ƍQҍ@;gZBv(u#4k,,P\mo8e!2yHxu?#bLW:?l[ sV\wȽ_bC?0t0\d!ǖԅmb ĺWe1^:*H&űO}!KRE2cOSbb3lzn"E`IaYf6%?Oښ8琔4dѝS5R|.L7Ry x_D-m/EDVqpP\U`R~H%MR`xv<XĶl%euoGݤ;x+EҮNZ#:Q9S C=|JaPƞ_ozt^61ͺ|#TЋCMбͤ Zo=WO29d=^"n%SH׫4 Kׯ~ڑ)K9~{t.h˱B(fI/oG*1w9Hhj9>a~M^"~]Y!ݯ FKpʎEV:pp󞭓>a GVSMcPiɡjP-zoy.Ykvf*Y/dOPZ#?̳Jo+݄&yF\VO3϶J\uu7vG`Mzȋ=9M}2vO}Ngf0,9AU\1E25>iH5`cl[K)Y^*`*VyNxKִz x"rjh%UV#"bwJ7t\uQ|]h֌d8n9>gȆX4c[uTgX<` 8,*{%R.-^ hӧ$ڮeCaSjZz8NtZ:/V0Jh]B23N _Ul<̨xZpd/HPҒB}j-ZA/ {lQZΥdǖjTJJˎQj $+[jO)/Dg9Rx9s~b4&j*)9nQ(Wd5 Z ae9l)69@oa7ס,Ƥixw֢KhK{zӿieˆLFBJi=<)H$h. .!˸?_ف[rD" NwJGS|׳5im6ǧ[ GN6bŵqw ¸_]VuH× sa~ b-kyBnfܹh%,as)W1 &m7Tұ^r&E6n!N0.?f%ܸL8{13`Z5x~R\YWeȖD%ujA8LM:GO8d 4m:;^ԏect:)5`ibprdk enQW)5Bc=E }1% Wԝ ZG:f1atriL* l>!   Zhک$fnh2^fog#<$[O;~ "Tl6@& *Go{Ƈ^(L@ٖ^I:xWEy*ep")U6^NL Ć!{S2B5rV[Q.v7Bn;r/1r%: W`v=dܗuq}Y+P7D' H(始ww5c=3x6U?]4ABi6;K\D]4@~Tzy0 p6w.Q9Fh)čո' .Nb)GlR-~| <d CVr ԅQJrKr 5R֬e,AI7`kqq|hgwHT\Vy m*Ti?R%7GLwڥpC*T5 C KZ6{fXn]Wx Ml*> f#VGG1i}7L2Ưޑ6!Z͆W1V}&dEH诟L񬗉e2l+_6uZMI3apYpfIhP "Ũ{h!ǝ2Ŀ؛1$=u U<^/w7IͩqiAh,x=焘n2_ 4o*M·Nof*J,y@췻y[p AȰCjH9dE~Ο aL WZMϝPq;`@: Zq 3AVE/>? >KR}7_{eAL.A0ho@#!4j$6󖶻8^As1^$uvIFueȉU:U2mm z'x c{=h {bYmLwTecrt| ٣ӤXw8`-Xԡ'RQ@_CW2>^N)u^mk~!@Fo!r0 ΃([ {/t>֐A0kHTqyJ%wC>b߻DD_ˋ-Q?R^)CNr6%=d>(BTAII.T`rOb4%,.tqh,d.? Qjd bZdwʅiyʒ7,X~譈$GƊH߽@̄R}j.ۏ[9hL<$ \VۗWj`Ni;RwU߮{M1aN C^ΦG=ViitFoUŜQ &! 2뇦TwQnU 1 ^[>˭@]kn)uƣxg#zzc5zeahו!F}UZ_]%u/NqB 4gڷoNr9@F_ 8Ĉ<̡pJ_!4s;#Zf,JWdR_KFPsJ`I3+'`HNM\fA^EѰ 5^xzKOi(=o"6ROU8"_S0taO,P8b΋GL,B'*EnXk>!uCbCX$8A/oNze> f oɫ,ǃy2.BT<}̟n@WTăF!oͅ3iw>ݪGgYd2üׅst/W&e!a`` vMV:]]V|/R6)y//_۶y!<HV=ˎ 7q;͞i6pwFx}II4hV"5[y&B= N,7pŹvdGqJI싽c~Hڎ+Y k|%9P]AX~U7x-+{( OjKFkT3{͡-ԹL*{uC\H-]w^:<=3yn0Xmzak øq{"ZL!\ `#w;a}!hH҅ndu LzOo}l f?-KAO) \2d_|bZ/.;Ƭ g; )6A1gwb`J{yyJy\kRCܧu9§k .H:: cW|jt3g4J{_Ыد ŰnI*oOf*ow O\>`5 #zf21d"h~ە V ʛnb& s9>/]YDz8:p{I&!Vy4$Kyb2QtVTRm WXZ#\E1"t}J-)r0m%?sVĿ+_άnJNg2I R|0W@PN`*}aY`8#!.kܒpz.F7ȏ*%\7X?YO9ώ pK'1k8r0P]'oOu _Ǖ+<|Vj] kki7#>3CVm%8_f1v99ؔG5wQȜ7 oܐ6iHHoҐL^MrT I!v$3WBcS' UN,3^OhgP^=Yj+kgmn_": mJh+7op %;+I؆Cr:;*"aQ $>♄_DHQ-][JE=EqfջxڼɃ0Q#A"՟9&GcSVPȤ9PNX2V`B,]4za8T_r~6tuZ]#xbF,f<0Hc !z̥ 5&S/gwG,%J:#,fSSٮb%уO(l|Ltem^J=&W}Yd =50CK~RYpJ,`Anb. '-pe ЁwGniHڌLR)g=IEvfx xUߜKpm 3[r(M݅1 ZGXp 'n,vTԵ| 2f"vuMފ(cH׳{e8Naà6 j5%L $;{d"y4~EC=6 <\^^eT8†E gN$[WµU2==oWרVH'}<Bرon:#VN"FRDk4nů &9,چMa aiΊBG=KOBm"j:3"D5:pgey^Kׄ֕H*|dě3I+XCqAl[oR7bWPsDWFHdm3. *TẌ́<b)pqSʒSY 7ZfK?&b{.}2E͵}0'(q#-E7(dv U a#I%*6CmCW/`aru49((%wB'[P|ݝQ%oSDɪU%ۣY {h`{V44BFb(H)^hx5 /RG:sPOm}C۫@|DnN;R|;b[F_Լؘ0Wn=<+S衷 q26i&% R8Kpް?τt>3$uMذg wbt0.RAC b?xmfwώK+ȱ@'#}ѡg\UNO lQĉ.q9.IҡʌΩDE^ 5;iV477Tb(bj狎zn7/5)[hĪ O]ȋņa?!|ڹ#z"8sp7%ٴX *WN4x# C*R;_I$m]HVI|Rt|Rv1 -%-& *Fm$4!P/7Xn :Fg*b?hQy^~.6m> =-Z̞+GOQvwfsfzSz=It#xX^~ei/PBRo'b= 9,*I_67A&6"XFi b0-;2z,@rX٧x´jf&Bn0L#J2+qLQ>@G]dlgl#T`XDPkIZK[&'Tnsn-WM>4^;J f4$߼AȌX7Lx͆d;98ep^[EN-=~$%"N(橜XnȧU 2Orɷ8: fJS+f,ԙydQoA,Ռw4)3Pz%˖];['j D͵WHHV'XpHnsJnJ3k2榦U݁YN8\V61\2'yTl47:L,iZ=u(_XR 05VbV(5†؂,_nFq87%+&*|&K(͖\)OHW}}VG1WO=גd gg}bUiNՖYC%< QϘIf< F;[ʗYl5JFÒ vY[4[$աM5ῆ[Ðg N:AhL9i:oR#df?S9](e(m $QLW(woSʨ\!71L5clENycdͩPxhŪρjRQfgY7O 3=B`bx޲K] :oLśS*,MVחutdt')@܉i$P$6 58'=ߪ4T&Oу8+/ieR3ُ3UMOSnYK+ [p2Enc M #2̰mg:R:> 2"id獆axV|ЬgB}`ώ aِ% 5BυЄ=lJ%)f"N-ji MvO]7k8o \e\ʞS=O`Uv3,uHU&23L_ - ?R bV))It~"eݰsDHCD$ډu2m9_Թ~"i&[ݏ/5Ms"ix։^KَǃXzaǘ<^ X| ip{Ľfp%]䊡$|hj#(Hst$q nR ˧_fBa Rpy|2Uƀ(H2 _Ձ*!e~Xު.%gs~XVc *0L~ߦ16OϭXF&fs\[ޣ4ȷgA\L laJ¤_é>9S$RŚGEl0X(RtATZ':p<9b)u?ȋT ie2|,>kywt_73tZ:&'HV$UU(UT$^©?$i>CG6ߜr:2XF/2NV`!1>w(HͳfUQ8f\8ZgJExtĬ<@J:Օbs&]LhCKr=i@OCPgoM^1]CaFO GDޏx.֭ ڲ%UC0vkA4F%hKP}uMV:Gx.%$fje?/Fxѹ@t\.(SՂHfJjg秢NTrk: _Jߦ滖 ]D@J"UJ>f 9q@GgQIKHIjh7Tx#758em;='n$?y:ƆzS3ͩq?F>ԁT]ͽtdIPv^dmgh*#-<}lJ3"wt6–5rSWza'?:k_ĻV|z>¦Cw`Db+slfDF|o߼}&ǃWMX䔂H ŴF6wuҸ3W6N6SpyOT@lUj*d܂n"B~gu:piur!dr%T,KTQ,1?D.۱f "3zRLP1ځ]EI/i ' |7X|X;xE&s6j9t: DIsh{H&Bp=k*'\A2wF)Bo~hM&X@D~ƁAʗ#dHFP)6Darې~3c5ϋgx&w2+& B F%z /h2YDNA߄816ɼ<{&A,H K UN@*1 ƶ <jgRiw?[!oBR  5xJ3o= 4%`Lbs%1*T+!fX}U׷Kɰƃe\dN]8!}HM?,C3U˳Lփ`9 !{,5ȣX0Gd>J\O~α-ȝ |ED4Po٪bX[TJ$5JX|y1TJ\ N2+HΞJzX 9~$z5$S:g<*s^9)ZQ=-*MW:]1)'u/BS FLCbݒ4Z4>7P+.+ʘCWOoc9Ĕ<τ܈ueۓ}Nܯqywi8bitNTOI%'7F_=D3O ; e.FII0" q,\!_\ ߙHPQaX[^IgU.ϿМ8dCr͙3RZV`HAA Gف*;G/UH ;bBT^ %HcC9LKg~||!'/- $` N頟RV bꅷ.{Bɗp#/}zb(crҭ41ȫ8!S8#pΏӰ)V]m~VVkz-gNm![c|l%C:5{ΆE$4Il~'~c8sccdI:WK#k90'ICp+8hmu t- q=PL(v.N_n=9G,Vbl(KᕶPe5*T/Fܷ[ "~M,ͺY %vbpL!B/[)kYk-RO ~Ŋ fWv#fJ+}=dyN`xn*b'ԯ m' *HY3_ޭF31b{i(QzјHH|Cg v@ӛU%"U[9Aj1E^[np~7fޟL: _(܃j`qa+P|j@jJy9҄aT N}G,h5'[[/;b(5p>9p`UaMȿ;uR W>xd*bKd4J-׶hfq-[qNZX^ѡıFN|hBƽ6F[P6R!ƩMReGr5eX+8>(-qJ1 d'!qpRmփU;PޮWlf2#V5A)kq~g)keUmጮ~\l{els l=\A"GЗ شm*{,+(\Ob$,ֽ̹Z86 FA'?v\'.P ArK0QʍoYP²In?oƲP ߘDOI1$iL!҈T )%19AŚ G)egc#EJ8/(YP Bz-^{"=aB1R=*aY\D j݅9i!M<7[fbBu'@2"!] ̭ S$؉/ XШuw*&k*@@ ItA!?~mN*]rD2kGqDw(I9 k)QZC" '2$ Br֕t68[p>|' A܏٤f~>W{]74>QO腹]3ab({vfrYR jĉf߹\BӒ,* #XO*^koVnHDP!G|}O~ & gX/QV 5SU2!' ˁ]v!f]pyZv/Zca迮:K8DΒDINNj6-b&e7ٯAz:ٽ SS&751A9/:JʅIKv2wؘs|\xsznAp) mX]]*~lf3'<!8T?aJw͒R鐳:GzC&_&VQ*YmbsUy O ±;?"M&]@="4p1l&TŐ^,)?BdtB[ kwD5MO ^[&n} }!j(ɶIǺGٜ,bWgdgG=*v*Rm }CKLjz fl|&N\ Jp60>U7dI(^GS sn;:C;l)l`vʭp灯Pr9}!- W m2٠)EUOԶ;3~ Y\/m)gc<:RWWv>$llFcMz tEie-GXocSM:&(NKKSD9x}wvf!Dž\Q3mۿ 0*P>|RTm'ַ+*~:1<"mp}0 8h qJb:S~̒ufQ$>U*g*e`V qWMuW8e B 74|. Hd7JڙX4Y9_|7jK(~-}iz@` n020֧i7z>YNm$BE13쬺4NͬIR\FYv\̣/p0<~{cP(v,}ԣ*j>O+a<FmHF8?EEiF L=z\7SH4F0 4Tw#>wPlj!(:Ûvq]49T+t \10pyT'l7I}=+g#ʾ$M[Yo]NX|y":XM 4(=t1~!j<9vd@޽XSR;CO8m/Ix^r3reurᬔfo =[友-Ȣ4n*P':r{@7t#CD4pŁ>yU}T+C­"%W<< y<ӫ)Y.2cĦ-SJz^@3 EfKh* @ Pe 82&\].m8frE$*W(d$Vn4Qov^-hF%Ӊ, V!8, ZH@&1@xzr3/!n7WeVa M7(P5oT uOY=8!'yO%d_>|"QeC [h/ 9G@(=Ȕzp s?QWz%Bg6߱HsEprd{"0Rc 1ۄ2E_%, ]'FtFMkc Y]J<#eQ*3u|zA!FIC伉.R9@1aO%0<}fQP05xxPRy,U%F0 A-4RA5C }9cLu4txr(t#:ǚ@R 4x;1 Vo3_Vڠril1aCquY6#"r`n}dK݆IH*m科FcZNo9G"@EU-vI"Ӱ8;JZ|iwGXg,p%Ђ(jC KO8#;*g}va+羊FweIE6?tkաޕôLS]A&srN(gt*.9*S 9:̟'&< gv$gu+V:/`WqTi1CIR!8j:EeIWXgJ͆LFG"K؞z7)"' )d}" )PlY3Dg#1BaOuPYȪGٗZ N;$BɪVt<b{Ɠ-oajǗ>%jXZ2L:Z8^r[I(o2̋/Q8lpnq^ i)(5J@v2h#xɇi  ̊V6#LiAI ?(Q2|D*$hA)X˗RT_.)b;:V^y1T$8f*زu?|:\oUi^i~-J*sw|_IoF"&[ܾF,*4j)uv]C6'< p?rU:C- Vb.+Dm.qs%0 LqTɀxh@$r:4|ɘypB"K[شkb~}@)g>4XDjmh@~u =0znd-asvVrV^N4ST8Hm.$XIFJ垶oh;]3LA]UI:z54яC O7U== .IlHw[h[EHC<}ђÿ!Aӏ5q 7*Ínq8@K/YtY 7 \p^+ο㠭ܓxb(CJ& ia&2'Ki8ScJ@72D|IPdY) )[.Rl"dx.F,v*G޹:uxx6hQMRx:p(iG4"Whx~ BA15c\.56ܠķQl~g[OK~ 廬qw%55[V$\ zoػj+{(q-Ŧ(5vF@LyQC_8UkQ [t3uBr+0 EΪk_H6ffg)0 Bm堎`̓ 3)1SZX`r/O66:N3, xAeVYj8[0YP7l Hj넫2dEgM!bñPS|v?1L%|76C( n^BϻO"m 2m\;QAya_5ƥT}yLƊfVu__A)(dP0"y"oz+9Ia DJt6:;Mk::':͐儴v&tkO4&QDJCp˾zZݹI?|)Qq|y^a=EKK'.ld@9+2@^G_;G틌:b"ˈk҅*[ C_'3BML2jOC|LEp磍LHq4\dNz޺ۏDM4)|eێ~^5]j+bQ 9ۢpI))p2v>zK ]L]7?l{44EƖK05pd7a&b ,ԙ,0&+Bh% Z6bJ! d41}KTOII_1ʮNSuW)GKx740FUʮɊ|9ilSCI *r5z5}c^fL_HUc Ć)0Pn?Y 732A2i(f^ ATD,-Bu΅Ď>ZM`[N&-(6Ј7uh# KwXgeyEVdqT=oT{CC-Yꬡ!6x8 N٨C \)^EF^*#&|m^ղ6N=(2^Tq3,{Hkm|ВEVlYb?OF&vڦCk^e Vg_L9 ώh65=6ԾXf%%f+8m|B2R B$osr/N!T* )V9ےȀlUZ[B*aZ ¾q3ryN>i=L51括6~z ֎5r|qRFj!0t'B' d0y`$"9.ɗC6QD'QtXZU:q.i`}۹K?7/[uCy9I9F39sc;F5yä?Sg)' X=7%?T?" K$xj_إ(,"$B [Jt!O谳r,r\2L(ӣ82M/hJ->Zdw7HK QB0Ŝ.~: <&ZBIg{Tf]Q9~l@} 5rZT"(7S2ph̚b_1}F 告&jcPH<:%>tq`.7>TU 5(gT*'}eӟ & ڎT߼ Mǎipd IM}2QeJ;P }}s@u'9r.AXHd()X)Ċ(ژ&g{zu]ruj̡<7G[F x<-CѫU!JG*bGY9ԅ$yxwN0c&&6#jJю3LĄ$5^ow z8Uٙ70ڨB`DK"sJVf7VLC洎SR[2#VUj @׍WQ;qzW9BX":]5J 0+?5vۧ}e=X;N& $/;d>6OQ àzPhv+Brzc(cɩoKӈ-V!́d4 ll ڰN3O%W!Jo'G>)xM^ՍІe"uL_C tHG^c{2j8rPx[t;y% GjaD#(jG9n,ty;C|Y&+H_$aD@+"*iJU߆*pשd`oǯHk2\{;a\I6@}V!Ip #f =J [:$ {ڬ&&ga& 4N,ýᓄ ȠǦdYR#<}1֋E|$=^_\~z=uRv7Ye͝nv3muqI~P  ^|][O6I:Zof)r:ۈE46#w248 ~.  Eb-a+K朸TTG\1 Sj$hR O8KJ}*:Ứ=WVi|*%Q_nb&>< 9q40ؐ^6{=:RHMV|#! QagGm,w9ȃ~P:#n{CV ^؟7'vu4IA\)M$"~y^a5AuZ{;eץdA?1#VUI!K~2G ()Ax3cXH§W,^$ҹEj>2_#8>YN'G<P[i޺(~GLHZi6/wXV΅,) {\ 1c% hW͂+Aуz~<Ϥ`BvM_ p0 lh4ѱ\D',6ʙ[K3|[r { h0] G8o$p~噃h d]+[D&HqqPSx7ŽU^Wb3tLڗ KSPJO5yFdtx@5i^%FMgގܾ+_kh\qJV>h5~1%e=fa+A)6 7nF57EbDd/jɘ7 lt:H7LPqAP.|̢\3z%mXlS,;V\b:aDJQ Кl;e.?+ﹾ%X, fr^aQ咣UŲc NpCf7#~+<5(m# .ftCK=.EWG}QGXw'O‰.~ByJG،+EWbf˄hr=VmK?0]NS r/;Уª/\xk=o_vZ84S9Q]܊uGtoQmnqu!9D^5{f\ ]GMr'3p/B2:R>|9qD9 @wi[y0("Jr߿QdJ.N*$YX|d@'CeyYXKF:921?$g* 5s>H4Mz1tBOT:K¼V[Wa{J[Ί=U*J?Gᷙ}~Rq_xrwx6 ;КiTpR۴Is&(%ZDJ{Z|P\>>#@£U$+ uؚ7*7i'H8 +a]V&{QB"\g `웂, x]@><*N3>@At&d'+#iKuh6~s30e+,oDgGji!"Zf amЋ2$0W:3HFCVL^o6LoA;yĘZ =mku a< 'Y " F+xb"*]X8g/[T03ߠ)dO&;ikXl8x:%~1E 84ɻQhM%vNmk5,*(=9 - #-X[/-%U&?h@ uM$ ڳ:2fT># M~Ŵ ĀK?:( NO͵jFb7v XuHpz DRe"c1I )*![UƗEs)X@eJnM7^ʜ^z {[eN$ɆjFEif6?$GvGE#G )X2C@MXފT(jfJS 4{d#B>捿^^rXibz>g`Sy(!Jn Um[^ 2<آIt/<8.# a_-9z$9TO9>mi1 ]% 1 <٢3G!vDä{B"u,'tUИsM6u|X6LM{˜*Cc?gWDaKv')&dl5}$/6k5c}*a!T_28m1 rU'ajkpFƎ.p]8X ⇗ʨr6VhV|vɿ{BetI0#B3Nos8@?;aQ֠: 0`I+Imƒ,GCd ;HlToÜ K̳~:Y_! 4hxWٲy#" ܨ//k{kŖ|^ _:0Qv`#z;go(1WԗNM$Fd[9-4eIAMH-S -GA/(6OM>"yK=AўTmAp,Z H6?U3IaVAsXJƑ e;!6Ohz֩ 0/gHp^,toY]t/Ӂ#Ц i;:[qӈ2s<:&JD&a|t7ULct9 Y(em⽌h?QR4p!z=(ib֑œwY 2Pcΐ:RV͢)U1Jp8 j5 {IsɄ`R}9WZsowBQU!&5JvinьX.c}k 2rMǽ(4Tc`ͽVXPLBjUMOvs I!Y{,́F ԑrC\BNX٣R! 1v&V2=Ql8煉F8ӣh+e\Xw=mx`cD\u[%BZx{8GBUmϒ/4ndT Di׃yBO3) ̮Z*/\yqnQtRDDϫQ1bJGBfBЦ"Qd^Z^q]`q$jConT/`KwK{Hɏcs^(Wt/m6&4Z`y<[ī0F[l5&]VQM FSxDGoܟ%xEHQ6!(7k!nJGG۲ɲ^]>oq[k Qw4RWl{̅EBtJy!]^?qU!:c36M ھ~%Fk5bF8͙Kͅ{L"sX:4=5 \x I8z `HޗDևJi%ydۜW:Ǚ72XG/d?Hz̼@#H}dV \ !#T^A[8IhSezFElr"\G H6L]bDpE3s X|rws{& RO\s$Pv.; `.,r2ٚUh%UUhrmHA-xñ6|Yl\"E2JZ U>lƿ¶ݼU(##kd;by,N?KQ{7ȯ*yT螨};)Jt2%M]:h _ѽe,0-&,f4Sq25C4~ ;9L^=q (2־+(2dA5a<яo'm,lDZzeБ_{ۯ՝_n]8Fx 3\ .ڂG. M|0W!@pR VyEF_§yF;<>X4R,&{_&G/ÜZСA,UF{0Z @I} C斩e":ZC!,sxF%K 0j;ZCj8`B-] e=Yn*XG0Cd[M3 vT`ʝhc߰ k ՚E0[zBGo Cm TO-3uחU^p^S9|:N_rӊ|`rrݣ*یsnTOZFE0qt&eD,n|hT=ߙKoB#>upIeD0"q_xgN(t}ֵQ#2Lald#矽ʉۨ1ǠdD(,[Z"TY3!D^Pq)U9;ۮ.ht5Y^u1Z`sq$[-Su|bF[}\tͰ*?wd!tH1v/2=X5nJCK7xB'C18h(- 2/rrr L'TdgrkHa5U 9Ty/88?1 t,bmnmg'~tJLC&ՙHbpIK|)e1n 75 ţ*Q[Z4Sӹ1C}\#d-r#ўBJ_`թK}b,9"FZ#cĪWU:x2ZI*R@/T-r₸3O,mhtZj18]?iRV1`'h. 8y3d K Bc-,tX4↠!NazaI@EPBeK䲮ԍ۝H-{ϼoZu#GhtAPK֐*3S8ΗF䊀cls/$h L?{ANɹU^5vSo0J]7D}RgJvvEb60ج7O)47:A&V $ Y4唆z/ʬZ魙+f}vR,v.״#AlOq9RfAe` BsKgyAX` p~&y<`!`30tJQ U&˾K*"ݎ8wJJbM}`PN$ h2W.'&H[MY=ru#Ƥ;=G$84= j2H6C[GxG˚PM)4֢n\zf7FmQ߉G.\$G}h0x$9?}xS] `SZ_QKTAQ\t!jjQ1F#Z~Mh幸ر5ujO'3q΍+7jU2T0`ҋFhyf˓8hԬGdۛ -V)WG4jh6_wSW:~oR"i_:5^ĺ 2iD{ě}FDxFې#2Šc4"hFi>z49OFۄvQM[\,hFsmŒ9`Tt}~h:\9kGH K5xhzٹɓM!970b$ ga3*Ya/HTM=NؕW:Q0Kv<Q&NH>/w/r]0H5RI^>r8~-4@Me6Nd^Z d]JwڨiQZ\592nD7p2v\o<op5_ n\EVsrW@ 3ĉ9^ObHf2Q~tcjL``__aMq/a6ɦN]GRPvٙ{z5MˈSbQ &Sq l*ήT߷Akf2fÝSá (;El/Tu׹rBX* *QTIF@MSYgݳ3JT+>{@b+:վEVO~!V<:l )`tN<N%Al7 lҬKh@ z]:;u([;vs=!?R42;|4LDug! Y/F}5{LvwQ)AᩋfIo>z'ȶ` QH"5zm/G?0wa$l~j`95B/⤮wկOݬ:)K=( y }b n\e90`dJxgntL#ƕLKm0ozRGU}KT/EȦ#q á-9㣵ŭ>hF`Wj_<5|K0k6/n;9\t&ak1؞UL)'kk"WdfZ@pQS|3> |ܓ$'Vi5s+8sתxy7qS6heπC1Vmz*tQ\:!<?8z\127Xi\FHj֏}m@Iwϛ˞b"+r"ImFi1]Jo$|=ѭ(vn+Iv :mP_Hjֽ}gde0B!7@qynUVk*Q4z:Ky,cXxO$ |HDi!, aRCyGJWzT?yx}TݿiP:E09AePQp)tsܜ&Ofw5pUu#%ͪ w.Y`1@&m]-9!+ * YL[-mNf:\v aIdTe&ƿ罘[⫛5) *~eJ⺙LmS]^ˣ.,)VcȹݟBbp eޙ9)bGGP7hpЬDUOk"ޫC@dFM'u̢\ϛlK%=0 c#?:2a$>$+,+>%ҠBV| S@UkcrQ+XVQcw]EdA"Vh T^l'Kp]^dgBtx D`#DLz &!!-[阼e3 V蛖hH@%nf]HLTDJISgto<Py-&X(͂5W'Գ"0fR=~Z(oGE9͡4P>7@rʫ,wXe`px2{V˕q {j㲎?OCnġG";hEYn#_d?cmY7ٰ+3oD 0c< k9%@B7jEq&M XG려}=ʇF쳝XVReʸǞA#㡯qw9F||  1T1ӐBpGRqGp+1G ڐA/zn2zn-gy_LeK$yB88(`AdȔpj A2U(t(]2gmxXVa a-rٸx.N(UJI_-74 _m7߼Fٺ! ޲x>πqhV$gyd$xD|6ۤZm _cG2dOkFxRDR㘫BWĕib0̄f v>zgfI:"z 0wB @ֺ)wCo^P$L;i`0}Օg͈?tB.A0uxKz.E<߸ЮWa<䄒0{I+h :"p,s%z/ngݰ8 ˪l)+|7ve1"=jDӵ4˪ hjS͐|~/=A']TK¦ǭ;nx;)R'5\e itĂ bg2跉JզxNUrJ7x8!.HqGIYJKٙ,#{(s{QXk$I}>a6^Ճ܅mF:5@t4븹Jgs~nC:f)IW< j9:>;Hc~R1:j$BKa'81,岵5dB)yp*t|bu[*YA;4>@n_Gi|,`D=tՖ>ɏnƫL='8Ih4vYNGʗ8KdQwj\wu;s 33nB ҡ r]D+y톩"]tp(TiC?`]A|d/nɶFaUan&VJ}xP054HC18AgJ؍23)Le#`<jĔpW-1kp(<$}$C+נr,w91zNAw(ak$SvJ߱p 5f̈eK൲KQV3Kll3̴̍!бKJ|ҟV#1 T l 5"K`o;-*xOFX=RݜeQEtS) 랼;#ү+21#ܿfv4mo3Kj˩W`ZQ|E AI&t0q4݃y# L;袼.DW{&drus$EEyLzqh)VI; %]HH eh2LvZ5k{4HO-B޼dzM$nFB}e5Y|g MH^fߓ?QVTDv% | 9,ƙUao:+^۾'{|H1;')uI1{f9B_Gϒ}hHklF"蛬 2D(ky'6j,g[;Yv&u2 \Jړ buL*5w.۴D:MX>wc& Ǯ 5˨ҵ\Jp#kz<J_+M.D9O,Wl޿ASx-^?Xic6$&Sïxcux4WWW<mYvA68_/F၂uKҗ:s5wG=˵lA, 3'/ΑN[,~2/X>nX;fnؚ6~dzc]kcf3Ɗ64.rv43BW. n`7FNK߅x&WrTRf:Sz17RD թfTV@$'"].M]sU_Z<^݈yER% ("R0DwEmSMg3.LOAzg7 ʧkh.ll#[r \pL.j3j?ĝAD.m&g6L+*SDADx?B`iN5PİVb!dA)ĝ8I3^Df|jڀgc[y s5^>!am,x:9[dž f/jsAr=>^o\<954+}G͖%֤ͬ:O%+a7:=r=|X_ =d==@T74;!Tˉ mC\UI#goLvܶ)]4"|4X呫},SjYw |ՠRH4%gҸ53}uDvX1D)ꖱGoϢ&Z0@*vg)]jtdzi{ *ZK8a Y"A4 sۥK|,=6ܲ|bAp+馺hB)A!/c'#,[ʐY'łP߮(@f"UpyG^cnyʞÓ9(AC1Gę cZCOmfL+A;#>F'K d4ze7*dWJT{HvL zSxUhqQ@h=6z{O{x)G)#mVZÄK1&Awt@ݓr!J(͟2=6C(5?YT{)Lax)B$m%y,+Rk 1GB_Ye<8e+̩lԒjqI|4#:Eq(A4 m@ێu75HF_c)'d`+@iᑁ>~geU!~vF(H7N_'RNTEW]M٩DPnu\ᘷO#~PVL)rX|\U//6>ըsZPF Ii{?\2vtI+7B$uSU0+&瑓nO?UJu~zSr$&lU\B=V!fݐ$%zφI| ӟIkLN.%g{~=+dJ8:H ]A vdv&GńNH1q+׍Wʎ%k"2o"dp `M've1:N7dx97fS;wNV͊sCީ܂lJ2˅avF8R%-F>t~) &^9lH>y< e{~ u2LZRi7x5~#zDbE(AףI%⍾pZC疄6,[kc e"e$b7CV+4ӅW(#34RҽZX{7maha_jBl2XJB[{WG@Drh1(8pʎ3EQN+b;")Gl9J'9Nӝ 8dOc r'Jr쌖H4nJis\VKU^R_h6eMgs]UH<+j$9@.vWjAbCL8s;o1|3T(UApv^?t?zlzDvz#EK mѵG<w˕'at[qhvwsOT!WYbRӹPY -펵$5U8+Dm&`Z!G£~Xdȏxʎ튽]\y &`BOhnq#z3KxS'w2k *dhD>)uhaE7{8Q">ZS>Zՠ?CL=i Ki. @<)'YHfo[{&/pcsm (0+9׹BaE4H (%qD4M-Z J'!\/ߖlT@[y)fZNX p m7JUǓi-ᡴ~D ùAgI2.KVGk}cʂEsj~b?(C0Zf+`ɚ#&Wd*:nƵoO=U@.vM4H81`n]0k#Aff%nܬ W(>[c L|"%RP<5~W/WNiJm|qV1s:Yŕ5Gp{T KHe ]stK(jI*QR|W:΄B6Л+(޿ʽ1K)1wk;ħ| Tiq*vsAJ]_2'~6 &/!앀<ޕBJFgGsԕ1zptbRSu"yu!jąbkOKO'X TT3<4Q[cliKM eSU<@q'Svr$G'0ڦl<+P\p\9FF]?Iϴ*};WAޗB3w7aНS YBev` ;٠:U@r5O/ 5vOa&40B+dLJaI9ϯґǚ wAm"lT ݵ29ĩҥOŢPAk1>F4m(uj/4MjJX&\.Z+/-Dbѳ Nydj @ߣʖ +8=vAvI+,9e(P YP#$ة߿sHx8 z&MBɡA`?>Vc؊og&Hð1{p!aX >D[3MRZ%bO|q/e'Ώ(MC+zۡ$GbWjJ4-ؔYd@K[BNu|[G#gYw3U}ג/ $Tku`͒he% A,![q-F LxHs)PGQ;@SBDn_GԜswA۝J}NށP wKO׃qH })Lo+걱2l UHݐG:1 d:O&m4-V V-6xh.^Jr%SKcqgWsF:iT .j `YLN648Xo(V_#XyUrBS]Ako4e'#vuqM$c |/\#[ Id{z6@@_WLR-(^h$D2$xJua?FQf4`"NAo>¡VJEjtJBv*YDZ /,"!6 wTҭYŒV=n({-S5F,Ӗ(P%+y1#%PF菋5BIZii=׻~ln V4%q+r[@'ZRrBr]#$TfNwLN Fy$b %gÙKGN9@hӌ[Jqq0ԝ&#IS ;.~'qE? Ʉ%.TAPƆ^&_RH4`zmjW.A )Xx8\t!ڤ )&jV6T[- ^KNOi4ip  9]H v H̨vϊ8.×),ҟG%]${yG_+{ncъ8X#vFmY]C?y\SUOw OղE*'6Ry>̤^i1)dlu]'A$^ڥ `}> rn,_pORXڤ~}cDbs~XK3q.E5k%㨂XXruh)ԑt/%9@oVvOa؎\Wiqp eיmT4~U8aSb V{qMc7 1.i|lКW-Q *r' %Gi? OrͶrOU 0oB:|<%Cϣ "jp6x)#c(Wwo@7AIf+1P : ,qKi_\ڥ1 ؇F0IE.+3Ԙ@k(<y&굏\'jpв?`Ui(WARyyGOU. x4g7b!{O6Azl@!BcL24HDZyIHٕEteڷkؿfg{l-:nÐ N nABvpKJQ^1DVW_IV` Roz}GLj`,~kFc&WcxqƁ$>Ӽ>fv_5g,m1+#6p;V 0p^ Xj{^$tH_S,P;ZQCY|4Lћt+־I!h3&n:kW޹l$ph|J# }p%ѡ~3Ãm?J||+^oz *[Jz!eKw@ftl>d3#o[ł^wDh@6T0 pjY ;3{e)O$(xR[0PgS)"~[QOšD?P 9HN[4Aity뵱Ͷ v!َp_,l1 !)S)ih#RUP:e=M.9^Xw15s$Hz|2!FjjJ|U. J' >.~?߆J8\Q`.}03hm w#pY(JWS) lߪpX 8BE@zrvaIh q;mNh_/hq.YɴH/J=lkH@ŦV^z3\f!#,zM .dU gCt{дpL謉ۘɢJ9FsL}ol3 \瞗(͔|G~r,T-z/Y |KOU6?g}x-=HHA2 ΋Aa2I `ySУ9*MqU/Mũt sK_r0]ɭWw}.K'J{ޡ/ *f|9knAl޹HPzg929̋ɱxU،۲.`rF{# ^f FΒ NI$.6u9TiQ~CΙAF%c ;'`\"2G I>$~^n=vZ8ƥIGJn3]^C_8x_"@8rS7}[i֜7%^ $Tk>M ]XC9k;7vˈ]|bwSk=ԢK| QJe_cn@1nz5t>7K'-R#F#%;1ܿge{ҏYQdRiWYy)wM`&s  SF!|5&A E} yWXruj:+%>v0H5M4NYI )o~{WLs #d gUVܧI`! 2+-Š@${A0?OI~oߏ=aאbg!.bB!M BitR] *: *RJHJ(iA SB-RQtP T@-% :HMR4"P J ([&*( D(PiiJҔi*4y4!JM :Ӡ1:)4 %B*:BhJQ #4h4JSBPtSJ4H- "G@)ZR@R!l(Sii *"CH&ҚFH)]BK@ҭ-MRP- *iBt"B @HZM-JiGTJDq h#lU)Jt% @tRkBP4 S@ҔR4hR!A@* K P +Jh @SJД@] 4.*RtWM!JP)IE4r IIBR4%R*PJAh(@: BR.J J:B/et!(QҮ4% ) iGBF)(Jf *MЦҺJU4 Z] 4 ҆* % нA媤t.F(4:DХ(Kiit ]+l"rA!JЁIIm?U;?Lj! ڦHE (܏Y\r98*ƳAvv{/.3+zO*[B?X?ahN l5<1pKH>+,w4zq̒@TBd;fg 1Wg`@%`yXk^O Z;>)Y CqkK1\DᾌAIcUh8LV79{>Ȉ)_rߠ5}/#w_ML96FiOX 1PΫPrξ[JQW)G3 8x1E*@T!O[Tw Q< $RAJdCogakԅEY2,[́TMT!/}8:rKjVo!ߦRֱU+ku\F6C5AǑFN2)@Jȝ}Hn `ʹBEExHb P&G}6 $.8 LxQh #( q3+-bMG|@Aƹ8ǠOz9=uİQN0$mhk##oFә*+b'??#,aZӂ(vc3cRF$ HOw{XRd@m[-VLn{p6`.S7@He b&c[m /{%cf6PݷɃbB33_O$2Xs F1yiZԌ~ׁsCBwrLXW$E{0;:3dβ`ƶI%en)9pߒ]p -ٲX]-{}meސlͩvGV3 JgPǍ&?9Ÿ~~ h(XNB:TLRb<,~EHe 4,O?Hi( hE].]^( S&:Koї/&2]eHA - r+נa(8~z1b ҩ3\J|"TDqE>MOݯ,-N`R Ϧ9Y]̛׻ʾ>!pl_O-s8Oy\k㚅8,0Qٳ6 X1_>rR-Ӏ !tjv2G-MƱeߚ_UR"6dӵZ#k4p<OjyBuQH2@1 M cB V:]4wy6eNB"VMԎo fZb ,>:ۂFe`qNQ^ 2u*4i"8ِ݋OؚzfCpXhFWyjH,ԭMrjX+˄E H,y{:Go^h.D_ :>4 eT(j8m.Z}? )z^_oWIj7%a85Ɋ&ƾifryx27$aގלV~;hQiZ a@6@{2Aq06tw?şB /(-\+j{YrW1"Vj ^F.㣪$ W:hkp@m1c.E10GG$| ,)n}\T 9e nO}#MW ,EnubdXD* 3_U|1dAo&Y9*G1 Ló1vbm@7hosKxfM}?bVjt?ao.-*;zH-DqͯJ 7jr$^Dx:r}Nxkf=uM{H)Eأ{4/9z U8eF֩ȣ Y\JOv÷NK9z7U}7=UFo,ͧ:Թv%]~^~lM^n<)a[u"Mcp -~:}4kLw _"dxC]O2]O|^}38ZZҎxm8cfIFkm {2 *8ggbiѺzUys$6^n ʛD@&r{5RޛcڂtSE?} 'R-!Z.)\8FkD%l@ʘ&BTۻ.zzs ǘ"2Trgt/a{:&>zjK>rKv7s5i_;ZxU͞K /=R^G pe3*1FH CRaڝ[!4о\Oʦ0)3I޼vRW|[M7{;o=>p3}Pլz9EՐ3t XG.q9u.a*זK) t/\,hn{1]X=]׶)5[taX}m fcXgHSN[eF`AQ[t&~TH(jﴥ^zçmg};%m{bN#0^%旛s's>S$ϙ"8F {MMXVgDaxbXH,O.#!@}pht){cFvRKvPq-b CRqӅMaF7Yi,62ӦqW%[:>T2 YzFԧbR1X m\bRP -`s~4!)V$B9 u؞g޻>;H\E16M?fƝbRXbxf4#ʵ7{Y/]ng>mQ-{]oP.ޝ^+VT:-GZ٭FF,F\HExEx,i [dãB v'O{*zL88]kbq;1s{ktΉq,_26>e9auM^['NXV`>ֺ6CYR RQ~ݠYz+Ke׬^Ca0y Eag>:^+1vKN܆sL>=~ZセITo7)<Ĩ(?@=Ǫ~-lf' Kq&p!ؒ.k$'M%#Ν ӓ**'^)IH'KYUR0$,b5e@gY^'M>wۤ )>d$heFZ9B|]}j&j?kvm{ V?IYwffϱHARwӽ4 'n{ʸeP"p&-a\eDq`Mw1&κWRBі ,'M{|jKT$IšgL1жcLzĭ%XElI=Dz_qEzMj5bgGdDVveIUYr6$`jSL#%i9zX#wo,! T),Ҝe#XBp$GgGSY`YCGkX+j-:^b ^GlwgyEERXfW&7L`;W؀mOy?> Bv ~מ{y]ݹ *#<4kp+I#;Ť879c{-\i1DXv./ۈ;H@CO8')~-۶"MmnظxZhYKcz ;`f|ЅҎӳ~jwzDŽ"M7>hם~޾o:dl&W{,^6).a_gm76<{oƨ* ^Gkb媵["?Ե* v֠1md@Y{yiJXk6ǻgHyv˭X2vٸpb^o7qXŇYbM]y,6v&!8x2XĘӰ\P#;{ט[{z:KTza@;Sۦ]~0{eg=_;jޙ9?-X_he-ώg@AĀxy{H5h׶)"2j+xU ^Mo(eiH ,i5-DK DaU^c>wEhbhJ~{4Sr^Fv1:dk~ާ}5n{"$>XJp>v;xϻcIAU};{6oon\뛛[1 9k $<ꆭIe])_=7zp*b(E`pzBecla//ؓl iۋJYl4yțkNÞif9=mS%hax@xV,{{;+"{|{3оlB^Ɲ폺>Dz>BMw-ʌm:t 3T}XN 1ܬ@, a}e #<4Gĵ))`c1n"ɫ9S^0̪VNYOBGu8Flpq/̍ .%:D]xk0C$NoNh))0ޞsS 5Kݍ{ :ćI6uۇy־6>4&տÜ9$>3nXj F܂!fAEInY@( KM)ק40 RY'zYPJm&!rÞ1¾,e(j` ]sR4zzhWӧ \wHm{~;#_zӰ*[mzc1;MM=q~xaPkBxB@TkoV= i4jVg{vβǽLvOwbBgGNE/`*ՎOv3ki O :5GI[xiNvNO_]=ko gl^u=>"e~X&]z7^wIK"oD>>sɫ8R'iRLf܂*6HL4Wrpq)س\͙IZMu'ΈqNJ<6fŶ<2{]픁&6n{hy)Y{;nj!;BD՜@Kbb,Hzɹ{؇ݞ7>ΤBteќ. a*oa@<#^o؇6놎+ǨD7% sCYީUkJ!X-u(uk Rtތ>,XK)ܚW&I1"+ =S>ϱ?]/v]u@ď{:67Y&pv(i[Drύ}MвעMOu/yBm1hLzow쯻ϯ S[*T}~;G"\ܫ 1dK`$Z[|&b&L09R9" ɦf9X ;vt-1߷y1>oh٢޼q]|tNIH|fϭ1iGY;]:BP*RUdHq|#e;bJvޚNQ%87VŖb%eJ"XjWq#zT_N3{uķ?5~vvR;ˮeG0oTȡZkӷ*MC(C;KR;[my S7Y=l'u%ZNf=&ΒSΘv\t]Pezeج%ͱ6v3 ~=P<mU&fwiRd+4J/d$9 QjDoNm0@1gAa0u/txɦJ2R3W/we,5hO7LXΓw~);]+'{G#Yoג@)xg}О5hN V8r} ȽKcY@Rκ%(rNsfC':A[%cjtqz `)۫^3GX'FV7u^G D k_[ѻY靌?9Փ+.[8اoxzӾ|hry׵DtGۣϠIKܣބDD<}?**ܸ<6s3<%R 񸥶1d,oej) l, jZz?̳t iNJcZH#Ym޳9ˢ(%9v4m|D6#76T*x}_y7:ma{#foϴdn=f䓒s|#O#|&^iqvCͥ햪*G3s&mSUT!1YZ[R`v>IYE魳CݓxUb) ō vZP/4ӧؔa޻3t^^jgٙNlBx/l;l,o=Tx^b5t=xBYK/=iL8aݱ#Dxf f`s]Bil u&G!/n4&b'=ghPH_l߯{<,K, qffڜZfi7烯T?>~IEѭ!//~ۧ}yJ:;֫9vޟw 7Қd}W|P|P={tWo߯a_{~yFek+:Z|k{է5[8*V#9[=HIQ`vDJYw 6>Xqo{l4k:L2:p崊8w]^whnΧmec. ־|3z"InZnt-3kaXwR7IT;Y@gmN^ݎṲ̈̀fff7` q]vu]NgqK^l CHo|e|"!w~'t>$Skws勢/^ެ0b}oi=/c$$yLϑ)>=gYb8/|SФww}H.C}wb^q V|O_V>:C8u4cSU_WI5+9=ECk*YyW)hBeufJGgٿ_t yޛrŮut `Kx='UMgha7_' #bI-nwFӉUf᫧@,Bi;/w"=I6T(;ؤ+㭙6(xvnX<)-B ^h; Duy1"h)Hr(U vTLf#z]P$9nIk[(50h\eE lK k_+[k$o h2Cަfp:LlʲN}Ө*i G:tWN)`j $MIc`YV"'YAxVDH˦F fݝ4Wˉ%(K 0OW2b%[}8zc/eU*mLx@u1&p2ܪ-۹>  HL^D94"JGZ}t|mLȡxul:X@qktcg%=B?xQtb/r=J^bE~zz6\} Ү0(:-T4CORpᬯ Rف!&p >Hn4]Vgd'D N1+2zqX{8pLN=E9N! vO> @#e.ךmkHF?]"ݕ18E 3)5j5Cו6CCr#Vhk1wD^QR2&zWg&zF"FR5~Uj(osP甚1zx_x@[Ⳓ Jvv#2qv?o\ȓz&֜,2b8Q >!ж@G`o{P%!Kq<[bסhǬ$kJENBp[9^\m#n('6MEӬۄx*L-09B(vqZFξ x V82]8In7(ɊYœ>4wR5 wPh[ȖQY4FP¼:4Bzrhr}G!X*L:0Tfˎ;FЖ1#xh)?4GTVcBֽX( {핁>UIKD($lj-~ G^ć^eO]H^v@ȯ`h.4YB\L5wj6!8jzMc$0(˝wvU$Bw&QllBNП'!?y|&deCCAh<8Ԉ:M9AND/wO-;oVsDŽkMM2Y'3W<# ݸb_vϣ  I>QKrDLYv< /7"=esat7#TpPj6 .sfDb7'`M${ ^DQs7Hd$珿h@"O]GnZD=e9Rc9Cs hB{wx‰:`Ȁ9}>1yuIWH|x 3D/>x2Hy/O)Õ? ѓuO\.oH[f둘Eo5 4࣠\SwttzCdwxl^dwF3u9~#阰/BEi'>{EFq }}%JU(#^,oR,dcPQb > Qٺ0Dic.FlF-jv%ܙTXZq}(6( i?7c YbEh]2n}ʅr/n1aA-PP!i@44!ME/%!֐M`5AC( )ZE!sRhM&Ilh4-iyh )Zl#ThBM:ABNKNЦh4@Ě'9"PQHc\T@RVFКj@LACFsRGS9h4Ql'ˠhqiH:]:4 5bBrP䔭lĔ5N4!VҮ:J ))bF g C|u=};2%jt@SPHœ7:ך5fK|_HCʳᆺao=@hy]fzC$#$iGW\r#t.Bg @_M܁jX|j|hdm¢vx1Tljabm(i#*9U XG|W32C ( 1C]h -Vm 3b;Da,X< grQ) qnZHd5D/{Mc v<=whdH~$> {?]':@eս4*mÍnı7;zw峘 ʳIj^C˂ {CF-zgO/`(¾U_eQ$hC)/jayܭ=UlɤAG۶wJQTiSH#b61ћBg 'ih  @Zj\ rd֡a#8v|&ԻN"\<"= WMm~G|7?=gG!41T( U/6*$o|!HXp@xs?Y\'emacx3o3mrYܮ yB̄Oc gp%fyqR`30$B Ӻ0/[ƈ_C?XqӪx'}9C}V o8As ĄĚ[!uRaF(HRhBmݥNr6E洮q4=s)\/w`JN!Q.ei$ȇ5K陯;R[f F8B,Mc75ŭVdqV^wࢤ,18Kԋ9|2iGUP1=zw᱉{a9`1,Ŧ0Nӷ|hfL[,L=[0}ogMwۼe) ;;;AٵRlq|'ݡ= Y;I/͚o]tff 3=\xxt^(MP`JYmĬcE9Pr ٳce6҄I#ʦ͉e9ؕNRm5%ܺ'1`A Q$ڜlJKןߵ)/f~-;:I+۬?;ڶww 'ZڎsTPTGsn'o6n*kԮ/}:nMlz~yZmI Nab2,3ͱN21e] ^'+\+界 Iu:,^t;{A#m)v޼I\ncwMZz='v|cE7^wwy|w7<,k4w[N>VSXjsߏwM~zU̡m!Xl۷6J8yff3 ~j,;&WrveR(3NkiŅlVւ4.lCt﯎V5-q0uXWޏ^X|! ٚo("gYg;| SQf1mYh=q>nu>KyaҲ m'lKNmh#2&a\;K·;ğgr˻ F{YN]X>ԙН8-!]7v{qb~{{1ڸK%o{|~n+.۽@AP z[P }mH8Ya 7=xfQi`TRF*GTڝ}u$Pus̒ kYY )UX* `AhKftߣ),ǙĶCzΦ?m'$cto{|CͣK[9}n'8tD}x^\ܘ:(nRSTvkDl+q־ưEC\/gF^# %"`)ƢkĆ=^;^j-e.弆1o^`2Bk׹EG*݄u *ޏamc3xÅ@6YfJ! ^f ]xÝWxЉ`Ye<ΚQOzΟcVdcḑݍҒ,e:BQjrb4 %D4R1CAE%R-4PSAERHEU%AEP E4DCBD!ATHRI@QBC@@BRST ABIKT5CDECHQC0@P#BQJRST R%5MU HЭST4RPBQJSIAE-#M T-)E!I@- Q4- D!AJRP@4-1-P@PRU@RP414%-%-"PC@KE % R% "U+%*B (1IҤE4R4@!@R "RCB-"IH@SH4%ҥ-R4B4PR#TH H 4# 4-4PR*PS@% P4R$J4@PR4ATAJP BH!@H% SCE%BHIM#I@ HTH+M *RU D)M L@% !HД4)HPHҔ*PCB* @#@ЅMP4DP4P%CHBU*U)HR-RRJ4"J RR-+AHH€')6-`JA5]"B`]}ȕ uJGfΔ{I20:}q@YקCx-#,{͉7.3B/guuMLv::[,>mŶ}I\Iei)BXc:3:T,Rj]KѶTɐŒFmnb zoMFm5zɶ1v؁"`@@SЖR[*EByہD蚮 4fѽc;^!תT)k%ŖvoYtqSMnyai; [ܡuY޽bl̓g0c},/i(2gzqhCue*sKH+q"鶤mmQ4'F"9P!zw;J9JKU!˭nԌOK;ܤ ⁴գ {S2x:WD &7돝SiT~^%|;_Bx)T1^ bHŖsJlѤaYT!i}u"m\YrjTǣX[6 Gw'ggLڠc\i&%\`ۑX ˵wn3`>R{άvwrYw {QWZS׈PڣZwFx;RI:R-EF :glWwh'^HV}ǚq:\;m,wLv=."jˬ%צ46R%PڝgDeXNvud F3ݚi^bZIj ٠n{&ԸK]jIJ|Nv~h?S}ۨWp:]Tav܈]GmΈU{d{l$b(-Yb 65u6ieF`+`EKX c(t /] £>.1D[ҹXu,V0ӭ #0y0oiBq6zHv?>É}}:x͖^XKsQP" =C1XbNVX cC,ozJq*ՖŬBUEEZIA.ywk:]ݹw"\*5A 2ZV5 i\FbbMyp@ -,׈mMMO]=ⶵzLˍ`s/#Y6gz2wgI|@"y=Cpq͊H{wnir{=V_}guߛ tXju (v8H,񲯖JmF1dS-$`<ћ2++J1cA$m UX+DGíf8s:sc ߳=Ost2&9g^?۾? 5VwF,k~,&N,bcf%;PP? GwV9غn^jcJ3wIs҉83?_z٨!ތys1,8ql)qbw`@vǬ*vӴ9pۍ?v]hwwj&I{i0UOv-۽^m'׺hWS>, zz2zb.}_KK;faYFO_:/`v'*T* X#O]95ibn5Ikaumc;H-?mn*ճ)F5%|e"r+K/l',ow9WB[VJ<'X)}X`XNwהCm M e5f?u;SNK?ؼE-]糠>ap״;mwu*I WD`{EWr82!?΀`DTy-f))G_^r×,6ZJV͵Z!!ҧ޳$o-಑׽kGjZ +`r^64JlqK6boy5ң*Qٱ=`0WQZ:eNk (Bt4k7&k&%tݏxխp|:*$ @>V@%",$+If6}C+b`Z9ǃXldvC{]]cdeJ]6tG 2b'N;cyRv]KMf'{A@WyG^Ҕ푀`NՍ 6~ۍ4Il!DDAxT5`ŋҀy;B^aݶCbJh -+#mNL+1>ԆZ,<nmmű1\Tt]c5tO{@μ;Zu_IWK=ݦ'_ޖuݞ# /_ݩs?=GwڴLlEgvݷGP} B $)*VEF[o3sV'ORXpz fjs>& DXk)R:!-z(G{3ז7m'wCXp;|Фh @2{q#ƏG=xeӱ@ۃl0_>3;Єqs]6% }/~_<ZէШ(>@B$AU@sh BZKR1*.P bpR(.a,Mt9ggksv%:8qబbx ^ؤaJE$Éj\cB՟ouvNіvǪYDYꭷp}5]z_9'>frbAG@ EPꊌ")B*{7M\k&m%1]RAE{][G[k3{RQYua-HT׶;䤝G6$)^qG2őFxTq^]G\+7]XЅYA}3JBP~%Cセ-tq=y|Of%ܺ;"n]q?9"ࠌ*@Ƞyxz|3#=9SQQ$O݌ H+q(BYf>-8^ٜhmї<Ɓ૖#/4(R2B84@49c\b2"Vѯz(]Rk8kw*';f)3o4ݬ"R EѝϮ<+.v.U@) >Xm2dq#;erIa)KIV69%-lkd٥7 \ w{z5mlTf%w6|vWv wtoWޟg'{ (S('s#QRwRt1Օ~cܝ5 ֋K-7o.?Χ,Z~aooo5ASPU`DA0(, y O(TDL|!#F<&ܖATVw5.GSS׉I@:ÎTm%Gb*^Rw1}`)Ҍ%ׄwVmw81v5dM)/u;PȆysߺP JNv˥5%9[VwpȪ# @  =|rYeV%A#Jl6!Vݮ9-l.[YKT{-t1%u.혂9l*"|<{/rNNATBFgRLرf+$VA#*\T "[mII&˃(Ĉ$,cD ̺uĉzЅ94"tr KYaxGoc9t"IF{Ny;;igoHX(y`Zz{XݚY5eώKrxrxmW4wih^TU!U}ޛ ݵYk)K޳Fc'^,2,k3RD{\A%%"T bH I!BTRBQIJ ID)DE$*TJ(ԖPSBF B)m&C,klP&ʩ,d*@  v2e$TUT .=Wi&3UXBJJaE@4PiHА+,$0Y $€TU`l(@0h( 0 Xa@(* J( QB6"$@ LJ(R"$T@%R%EE@* %PJTPP@) H) UH` ( L!BRRJ`#DT` (@4P P0Ҩ(PLT$h ` 0`*  H`J @ YJ @ V0i-Q`cmLYelȶْeUU@N>(U*bK * Q@( 4*3@mT(JTmBJ`QJ$ҥ)2 ,ZSZ@j-liMeRkP(*?'?nE?ry&}vg`{hQ Yc=- J+-"H*tQ]*OHkmEm4n-fvr3&[88P%zDEC,;M+lu9n`XӖ3nZB͒a4BT-*R-3vh5rE,$BD\L)WCt.;^ܔzVPI>~L _frJgm N:߫:fimv_/I~{]Cm?|\rHyE9]O3Әz8liQd5'Բ|^GѵŮ3$()dw :/oRf!A](t۳QG^]/oޞ^+卯r:hDGgO{%b*ݞ{;G@pi}u=ǴT닓\e|ЧxOzb} 6s>O$iH|~߭"=/8E{"~_᜺=ȗ?6s'fw\]n}x9w2 "({y͂ٻ͹>x^?k=i7e=ϼxќTQ@>uZon~̽\dQ#{O-{{t 4|rQ}j1vr>'X E??l{׍zx JbHd4%UM9pZ(biJhs,,;+;w$uD˸Β+6MgGm:r\K*N::9>ؒ>۸#μ ),(9sk5r]NOۓ샨NNՇpIZTz 2t ߛoY!{ܷ*A?wR~HIPD 6jMf8m.\' &9,A~DqCm$ଲCfm;-9ĐpqIeZ'Am׾[]> Dam΄UY"C>^䣹;2+ Qj+e]%fep3m_ ==Q BA(x{ Ծz~o}IByc{On$mf^RAE=;@E"/(WB VE!E.q:{kߔaE<$i0yB=ţjgI߯;=ʇYɛa2ij6㯛Zv^=^W&Csݖn3᳞cyg|"|+Xg6맽\4|#? _K?/3.*2=^reM6lZ,wlG(+c q Z44Ysyʋp,.[@_?i<]=}ecl-ׯ?}Ǿu;|u;JaI-pJ=0oi]_*#ѯ؟;}?=_\y쯖"U۰\)3dT| $ϯGQyͺK;.%/Ru{#M '&B]q!&v}_%rrM%H]l!))=z;Bw>$0ծ |ȧxϞ\o79AWr(5]'y ?G2WWfF~E͢Š9~6{ȲvxJr'HSd!׋3€zxNEӳ˳r9HN')^'3d/W94Y=I3"ؠɤ<:h:(7yyEAϵGG CWxU4Ysȍt*H{IzMAhsI/2[lrK//'dU]nkQV){yWmh^Q|R%Me!n$󰢊}qzOLgXF31N70(2KHEN]wJY2/'xyEOў'gz{?^ 'N%M/|ND/d~lLs<ھ6$6`ϓ242(/xB)!b]Uǿ4^.T_~}}GN~]įH *;ޔ_e^Q0X[}^" {n{tߏ[r'[_Ѿϥ)q^+Cx׿?Gsƞ]^Y \.bH?뿫?W~|g7.v:_uy*OWcN=Ҿt?No:<;t7:9 .=uߋ;2ӛ]uP?U7+ =vnq^*Fb{Ǽw KS&yn^fYU^CP~oT߫;&W_ *8ʲ:>V'G+kz\?t>AzO]*`^Jz|9S'gDT R6l;1Bmgg!moYrpu®lقa >NnudDm`,e-=;\ BQQ +7$T*_~GDFVkEG=$,ymas8vێJب֭Z>eQGŢ\^P糞ƫ$5q^QԦ hL6.ۨJ%Ld<ޏϑlQgezdSs#9Y2&VeQzi]KYtT'rIwU)=2O͢!s4hЈA_9QA -JQ($dW_^$WguEB2/Lߐ^_Ary<'?64] LsXeD7|1$!>A?1"FIfc*sz&܎r1SiÓavLP "x]$GTauТ䝥,kW>EEyIBeѠln̻kD=ll+OVDZ6xQ͘4BEl]qU䘨x"Oa鞙$Ga>\3~~F`Tn3/׻C‹-U^Ns|xOyyyق'4ф/l';ӃBMLӨe 4B\z@q{Ǥw<-Yemf"HR{U@k_E2'-($Ty-/zaz;܊,7qfؘ mj钦 m'=^¨zyQ͍)׶6u[pZ+F"G ~}bgto^IM{~}|?^̼~g{aL%C^̉oo_|nb>_?E>t){۬1Voo+~'<*TUڷlU/ 댅^Zs{ǔ'eEC@8Wt^st͹{4EϹo=?G*~{?ޠiXHPA xͤ/c&9ohD= AWo^ ܜ7.1탁<9)\]u>;O,\; a{okw9?(OrYUKM}kem‚M(2N;6;o $N3Z)BJzV{we]Q߇y|חIOnʎ+B{AڀnbaRW賸v[d"2gu\uISE+A@SHDx%"@h)Z㚔eݝ@E~2w;uwiQ\S'GBE'QQwIT9OmE\O...8*. *", :2;ʎ(".qqqEŚFi~+::IJ-I8":ϕ޸㣣?-?u KDCT!BGGs?7Y]튐ND:͇E$aAwj/k_]'qJtwe#K^yǙdadr6j Z_,1uu"(俯WqϷeYvNQAprw[hwi _:PGD7.;:(s;#3wzDݦj+˳gmk}_ē?,$Ddh\ 6 SPDWy|ʟ&;(;dQU`5Dp6}})}mK࠾wlt$?.vfI]}~_׵:w{;:x/H( |cOU'/I_ً,U_6ʍt&Ώ} "', U=c돔fmͷH|6ke9i 3S~{{ߎg͈}ﬣ(~ ,u9Y;[I,Q}^^Yp1DZ.kX爋<ǁ DE**"}&8@:wmSeJtkW[-%wx8FF9Nl$A#&nu RF@ySPUszT(Z m6Z9k2ZM!"fJJ.&<]#ʢ骥8eem5"t(wiajIdd*^vuYqm/mH Ay)NitO ;9yE\s7slfn{gNgYRVֶݝEyo/ 89.öyeW5˲ .,: ,Mm%Ô][1*ɶج,ӳg% Ցgd]#mml^d 3b&^lK'⌎nŦGdud!3KaA"C2΃#;ٻ::^{礗C;azPyGc[@ ef7ۭ8N ;{y7ө,u_ӳ/N,~m+,f츬BٴinmY HJ u;)~efhUĵ+'QpI)L2fL.Yxmk*+,C2LT ^aINjnE^eYZ5i|S9!(%sayWk&ZS<Դz'^ L@w"hlzd_ (*^yE xƞy0GG5cSxEEӱHTI$'9e|}Q:OhUʽ[-{,rԊTEy2!  l3نzySo{ĿalQcdߞGzm:}5 }n{Qz^cAw/ yRJװ>nr{Z!G"j2PGyȢ R=r~n]dUkjFc>3)l3&Ca~.3ž[rnϋOmr$z##u&|z0j=Hy8t:(,c=yׅ9vWdǿ,cn-[vLy9g u]?A[r,$Y0"Xnt2~$?8*n&vmk=N/Ϙ՜YV^4dg|![R`{ʬWo 9m(NNoz2J8[!0atuwl®[m&̕`,X)0M~f̶kѲk^폽{ =u%V~N:XE_?F_CT SI0%Eh>9$U%f&+\n(ϕ%70C){}9;IWj4/V~J!TVykSC/V98[*fcc#fOkwGk}.2A Y#I$T>c?vOj+LZ&[fƀwJs AG蛭 +E~&Ѥ@PUF:ǥmw%p4s1Yg=]H_fiգiC{ o,7<a52m6_'d5+ty76>A |Da.},FoX°MU GT|}5`MRCSr=$XYG3Evn3 Ә)7>]dnUr0tM}*3ᵕ)]\_c&ՋSVRDZ(^ǰ# n= 9^-]ll+*yh`gq}Ruov}db=z'[adVh֘ 匦*}1KDC?Q-0ZYƲE(hȰ]F C w^FɑdVM{>Z}% ֯q}*Kf$ѲAXE[&6FV ].-GGi )IIjOc"[ji+])Z9t65UxVW=6"2Up8HF:V 9ks~*|Bu Th*lIW㥑Nb ?fw>"N>&BqTniM L"d+cJM/t)y)(={W/GL{GfghNg:hn1nEkӭi- I hoZk&j=1"FmR993~Xx\y6b^sW#=^Fɯ|1 S"ڡ. Y۬Gg=uֶ` 4njOt9d'P,ʵHbCޘK6H#V,ܪIsKS Ʀ?N]`|z4RG]rk%̃h/j^P[ Tӟ%og-? ŷ›>Y=*fS1Ѹ~ls.r'f 9p * Eh3gZΰڊ^[::?Tvݜ0yܪ4?wNc7[_VpMv;SFg&a,)p$ZFϙ~ /p=wdyQLc,5٤d@$qDfY#/l*/9D^%?QsWEףbhSr^ a$#%KDlCA(Xb0}KTVd e= ޴2q3VHoA` N<ɂų̣SJ%f!?"7J5)ː22ku4Z7 !CO5=;:W9 9J 0{M;D=]C/4źga(CS 93N2O8>x¸uƚIHIh|1'N+}.ƢԚny(\meXp O~MÝkgjZ l<^ǔW. _a̛Mk-j.qiϖe럪)0h _ ciM@(KʎsmԆiH[6XX]pn!*47[ ]Zu<={@ڹ(Rrfelpy~m[S nN=Ggog_oU̬.vn? åwɗ<R]h\ Ƚj] Ȟzg,[AiiD|xfNhkyR4lsv~%uN{hG !h-WtMމʲ_E-䝧폞iAļJp=i{ H(>M5CS iIKJډį«[0+I&R {|nL_[i˻4rs=̔Jڒ_;VD[mJo.m ?FmjF- QcBSIϑ_.g]~{~whFa(K3C~9W<\x7dƼ8H8 7(9q}֟yF߲4{Ey (] xQ z*n6A k76Sۖs',PW{a 7XWJe--xZ 5Ԩ@a%:$!#-b$2/stz,IneLg2kʫ8Y½V@_H ܧH;m+gf $rUfEѐt4^fcGGR(^L7W ʴlh:JR\ rg6>k݋| @dmZб-Mc>L zyU C;5QyHnA/e~[yY6}՞͘:Nǐt> EZҽbŎn;9V ::I;Ϲ$T6s+-{OW[9:Q"bGfL=rK1" d~w.kSOmpI26Hc}6[0eMNLW,!yBO[q񑺙Վ*$C\fѵzX L-=ƈlY>KSm,noeY9JK."k5`ka.X5S+嶮 Dn@ jxH6'3;>:Tlu/;b{NWFn/>|K- rx/R< (^D)6)JŪ",caO1/,'К , [8$n.khĝGOQ0W+ˠG6Y';S~ JsC3t+ 4fy!5ϙl?[U[ul2?^I9I'7 [wj!Yyo^%GP&w4?Q.` h-x8.Y ':79I۟&%gIwN<͠lBdd+$6BaufӆPSrV"%W$& ==0"6!aר-8K9)= >NuD%rޒײLHm`MQj1,ۻc, gyǯyOQm oESx;_՞vlB' [8n{&/[+aPq9LUٚ%g| ^јZޝ5DnU5fUfΖf/~@ZdBDo+f (p`.VSgݮbLwSF0-d)17;/ ؀+$ ha9cLuM( I]vs$M &0WG$1aRy1_\vVkVϚ"2I`rlc u윗I\vش֐Sb [$#`d$󞇇aZR}t6()͵!]L,6M4 `h+*oCCˇT:5͚rlf߉iM92m9}Ic=tW7O2OcV |%T䥪fGwGVW[qW=q*cSw'T5J 1+,2kܟ ~D%Us?6>~;0NkKМ3K␴l:I(ZA 9PU.ilE*e /t F%~XT U"vj"ݝG76U90Ndz<Ī&3Q^9ق&vuv9&vV+B?LTOLNXU s3@BL 5]Pb55pp <ņl~Ҥtfv^.-*V4j&-z"κbNsu؎8Ⱥ Nc)KۗҕR%`%]-:NDƎ6cgY|}ӟYN~5x5,bS!7Gk{iL#WݪAXꙬLG/peottVzEH/|;nSOokG >ε-T;`y">my{ {+Ww(y7xʔIшam7W,yg@8Cq.gm![E+ؾպ740`:l+-5X=̟۫Px@uf?\NMl[|ǩ)Yˉ ? ԤjvPSnFw vL'߇m%9FJh9u±j,ٻ(U_WEXwxϟS[HeX|j^'l]Oz^;>˫*VQkkmo׀zF63kj|r ۿtWօr+IoMVO٪OClٲ\{ H1a7#T9f?AfJ-?P~~RyM5H\>`c]H td`9 ,~C B} [V'7kNF^!9|U _fB#ڻWeWڞVu};zcer'53fH"B}Ӻz)-u,z=&1Fb,Ag}1(envln^^rd#T8(Ȗʼ;=}"$Jc\}T:wv:^;tq+Cc1[C;fKg ȋ`6'xe٤AM'c'u}{7},,}Ԇ6#N񘽋MRsa7ZHT!h$d]FoƔʣ#|wiݱ3GKl&"h}S+X'cf_q%AΞ/Tw0eu)%2, MDUR4,6oJ hН6YZ+2B;9^WWE`pkaFaX=~w >`X7h01uTuBvc`:j|^(I3&4.p Gn *gG^fWp#J$+]c[$˰ حܮiJ< BQS\Ưff"iz̊ 'ǖX'Z?cqU27nkpG fn0 d/(xKLpx2g4tsf@ 9_]07յ =m=L>s=&qRoðLH"q<=! 0ַX'-.#bl 1\#AVXfV[GOOAR T$}5k(%sw7?wN_r8ʃ. gsWi͜.>xφב6pkhs%D1́~,ؽ zV#!l&'|y]U{׫A=N >YLh?GYB~s4osR ^j0EUߦ_ODӁX4ŵɨ#ɛpLm;qg&f0.&\0Y`<2~xÚ~%u eN-܎icF?& LE7x@)ibFV]_}oK:5O˺Buڥ\NnAd :4kn'qEj`T͛K5 g4OwV0,cwFS{WJ'fAu)~᳾^up!4Kp61)σgTl|hU#$>}]"b:8>m4Y+J bvԔSU ,L\Eæwi'mܻݝj:w}M[mh8(U՘;(e0Znu30ۼ,]ݴw&gSsoؼ!oS򦾰o4)cDcMӡZ?Ӳ!Bi;wR`T[V~@WK}'bͷH3,dL3zHU^B] 4g)8P$׿;RRs3CO2M75S,G?M 7to*P銺+}'*s=J+k& lԼ1BOx+&menuD!`26)(rЏ:, æQޥ=cFnLg>]>.CtAқB-`Y_|ǁqc1@wkJW~"P~yeCG!jNKY}_]Xd!MAlK띷OEPxOipt!ȁ'$hxwoq=䎴Mu6w.;y:fFyTJ/}3ғ36GGeYi׭ гrWB:0b xq#;$#X1nt͛'kފQ'9#Jk&KhL3g;13~Tx^p8wV6}'_IËg_5NF3 j|p9KggVȚ#E:HU`7_2r0 J7ldbP7K+jjEqX(6| 3tqAPwG!"BӒB͌ھ7=.GIz~?1XN ul.e*9Y};Y_3f:V LFxټd,ΙGﱢ9581hcI#[s8:r͕L:U$q6AddZn.k:T{P^{'$Q%2Zcαy rȃ-~$p: Gfmfޝ4 Rr:0ؔYerǍCk]MVS_`*ͬhؽ&"XkII`ò:=EQ%;W 'f˘-uPIiѶn-bpJכ[ tJ>#IZE4K5DxL`bia7.jc.GOIs Puq#sɶgaRxVb7*…3Rcqiݬ# jh2S3V]=g:2|SF߳QhZ4^a 6Lc.+FHo ."Ϩ$d 7QݕB]4$+-7)/x%n0JDAv|? kMж{Vѿedua Վ|rtxꮭ=D]q5c nJ[%Ղb9%9/#W{+w5#6wu7 7/3CJW'[[VarzoN˶Ks.sjekJv)zɛedaߙO'Z'g^μR9PO+=\^rl⯖MCQ}_cb곏39XiV~W^gMϸIv<[/}[^/ܖԛ{{96wFyz`}Gx *TGe^u[Y^8=xEW-Z*qC΂\fm϶?~9޷ǕxN"~DZb:L?~KKr=G"E+H^1;~U۹em>.,j$T?;'o#醙 Vo:{>uK#_}̛Fxs-8m8e0u<'M7'%jFsjkԁ,Z%VZlKąv? euidkvY!CK&ŕ<^' i:EôRB3%1+Փ+$gekg5y7{`t^)fkV@fP[Fϗ튟5"ΞN :6,-f'JM9lP]V `c±:zV;pW읯;N6 *þ9GRl{x2R5\6c[SFO';}UD*tY&݃c[:*&ѓ<{Pb`:(r:՟3)?">pv~:b><,Y$.]7Md|l=E~ָv@NQǔR3 VQVɂ9k¸È5 Uc&uŬ+KҎ NNTh=}3m\'? z9WMiB.ږl웬3?z=bLn_YFtp@\fmܘ\2ꩍa5Os}2 m k, p*gFC{*u)D k;_Pu}ڔm5n:jh+a=ڤ Md1VRk,;M5WMuf%,\l7ypieYS Lͩ@|X^3_&ԛ0kp< MZ]9aCdY!j0z5d85H6]W&$^t4zsR,)j{(P/K@etk&T[jۿ(`cv߫4P1ZhIȏRp)W $^ЧCfړTZï_ ~YYt07OTJQ;Ď #g7}H sN74H$!<"b%mE[ V&>sCEpLo2FR >Hcmis^0wMo$~Ҵ7 AT=( NI*]#1ۑZ0st%Sad'rT_<-'&x+΢e rLfwn׍{)8e%yL&0k4™;%< 8h!&Xd.C]t n Qr^@-8/jn#sjY*4: h/#aN5l+eG 8Tƪ|_4xÅdflkZmFn" Empۖ(cn5_U-3yVIS.=6kt6aU0L>Ys7cʔnoER1$hTz5JYl᩶놼_(6E>qؾTlMeGRmZ%B= ͹yHskGaս8sRu3E'6 RKk_6ᴆBlHK)&VA -晗&,&,̗P Y\r ys}M%鳺g|dyu3Xl3DySwL$Ñ `͗h 8o ڕX),1-@soq &ŕ}܊c{>ہZQ\8k0oS<kخ!IaCWl0h u 쇂G7gY6S0hmɦoL]QN^VYk/F`Y2m)5wrCƪ-'J爫;ؽ/W- +ӕvlVhh`Rʙ5) /kj4$(X%9wԱ+f#ʱSq4Zw%m<55&U`ѴV,/#^$*Z.\9g9}%߬*g8y Ptrv(5%5^!wpRXw=SJ٘<0 W?7j!oCwJyL!25<[![r85<-QԱUmsz;Ҥ@YsdQ u=yU_!pI8kx͠xY^oC"f#SL 叔0pa9.Ufl^o1l0"_ M@sǥ*}6)qHŷ[4)~o\s@u4=\6cpy4r0mO.GNYz:Wzqǣ!93tsT\]_ &>۔/,/3Na S7eS>UtScsD #>:~(X6yX3~͓X<94:iόZJի]nN7D#W5 {9֓N/U%t/*n鍜iYBXFz6 Tej'/ՉƄ#AgΜf} ڍYqM岞 ԇa%z ^DIȝ@MMa ?jк,F4sZ ci~,#0i=l=Yh5K2Ai`۴?Hw9mXD뾢d"O#V+wv?3Q|[܊ |VY">WoI(e8{VRݕYMZPk89avW~==ʗF 0]'=m'8Eů3Z\;0i3!X/iErG%oGʙ)K>]nJ8Cw77JZJnHE39rfH0XfDM~Ai3el,luwϊ/ Q/eamES2{. QʾMBbssB\Pϓ Co$ j{NkVy817e0sR(s7[e|~OurާwȠK8;HmCZU~E+׍'k )B#f`p۔fD7Ty`&#zU\oQd3?V^X/Y;ȧ͝nPsʖWJkkHhq=H{g~` ̀ FqT5=5xx ^ͯ?~*lIfςTK&*YӴm͸636{ާڎizU[675W4@95p-ܭmQ}iX)8d< 5^֮6/N4\>8]ucO7ێv~ueSˆmGTh?IQ'cPl&,eJNn(Uf'XX-3>;äuk"Oӧ~͈T麷Iz4k/0Mr{Zwq5gK^OonU89FvV[x0e`$PgG+a& Sҡ /s TX|DOv{{M,r%E {;j?cWR;bNQœ<4uͣ08.`X32ykya؏ZjY7kݗ,V(h ʫ~/Q'P&R%rZ/`èшlcC)@'B̄IIr >kgfnӏ'rEA1N_Z;'cUFyZ bM`=ڛ&԰g9>,vw6{ c۴_G.Y:b"o;@;[0m U/KE8aY;_C,ʐT=̛pMTpԱ RV,]Y݅1q6‘D}gfVZ:w) Wnv/c)i~=>Wgկ>70dA^{-]wSAsgtU0cFTO\XHXUQЂu҅ m]{3`o~_H<~%jl,ǎmSk4zvR>O&n^#_o%z򟸵ʁk9ihc'ßuyT/V#1NaF]l25NG6ш^/VNZwضt3gTdח`نw?kL"ZѷгH-<<ɗ94}nu=XZ>mӳIL|CK;.Q4}K[{:<|it}Km`iݘPX, }43UI}ǂasBOHQT 㼲nN1i[vw3FVnV5z#yHaz!f9LylX㍴pH61#l&s2|ҭ,,%]jkOFZEgڵlbxyNqUl!8I1g$omRFvy>ch9R+e(P"KMQ!Gvf<$'n'3,ᐛZٔ)l^А08&j 6$LhW!:\; bN˦pPڢZ7s7[ۘ{q\H`:p57Aw7X[OY:ni4\n>S *, ęO Y;VaNu跷`%'H~u8΢uzgMjQF $=hqg\%Yr4+VVB֎%)&]P+Jī?*.Cz̗!S`DG;=5PԜKF$Ϊ͕U1 k"Nm)b7](VWx}˴gRl&h<$LeUhGC)@[B:_}#%5|IR~.0a۸|#]uOmǭC4, #/We٪}(|?57 Cˀchvt $5+WOLRl10hxhj<` Q4 I#Aw+bx#=G 4 ug͓N}4Xg~>|܏_=m,Z&ll-"[*$w?=9|7k-"4_vwVUgHDz̓mw`R͑-y]yNnU9~Ia\+!)9~h4_fiټSqk[:MΪo/c|Q0V̤Q]1D 0nzay=aby?(##`ɋ{-ԙO4 ~A*Rdx"Có[m ؒ `.*FlW<7,Bt<9Ӛ!Ge~Lʼs<[``ބ+MnsBG#lFJֱ%GA"j@JкC<)%z%ٯ:xg 'KEṉ,-4l<䭗nі)Dpz[&xZ-<. \qhfķ+Ol˒gVGN$U)'mKFV\ ){ {*9sG~ԝfTFU%fs+J^ΊqkKꯆEG2IANYe¢ ;#k|  ʂ7fI)dL Hi%6!i,?9zY бtfsɌ2dL+vWu(yÒk%R[[ŘKCT=(3? I^=&ĞҔOXߏ*|U溯nW,wѲF~"NBXk7Smj1oҬ&r|$lr2)$v A!}ޗAܼ+嬚 4dP#|cNN[BqQڽ_f9#}5@KU,ߙfԳtC}.p;̈́cƲp.TB[R<Z"q% [cRTr£}6 0OA [!$jP‰<,&]<1#(Nk[`e%^u:&>HBJXd쮔Ig]Yə1F PX#Lp9.C.o[p^hv\ĕƼъx1\G_~.|گ~7~7s[ػ٭ 3k*_ӛ{w#fѧGQ TԱ0`c{~|Y{ۨGƜ#O;_`f,-\Y(Uy2SJFy}^QH6 T~ %)6̚=G.k{o7T,eDo-u"ip\iG߫6׶Gp-uyd FUhvkRrp#Ts(:ݕ߿+A+k4ft uxvZa *!.zpZ-25a}EGr;nVnK|iRG>1#L!|U‘f+WMϘ!ELV0TY9n;^~mEypJz\#pRZ)7/z-aw];nVl ?`I.@O'#cj=)VUϠK>G ?=]!ťfgNSsnLhpenÌ@d.Rʨ\Z;/݉ĴtU9 S8PהPJl݌ha>hۧfZA NM̷haKCf^C5|BDkgO G ~nr*5|*\0W} Ҏ; ؍y pڐ)Pn䰸~޳x<0=hfܥZZ[\_7k k&##}"]}& 88+$1I2{iSbG%y>y +٨VmgBČ~ RعwOzwIE!A-|~-CxEe}:.fFZЃ5fgDkч}~9]" }d-`Q+ 5 *x͹fKk/B*;-XI4vHZs^x`d ifn|ojoEVFbf/ wCS#[QV TӢ3ZZh,ݻХ33gױCI6[S;'e[6>L52N }8i} w0/ APeq8Â]^7)s&nvl/nEoHZYќ/G D|t~G9M;P%69h~jPv2zG,n =y/SIk%j}/U|A_N:ys{՘'^QhWDOCೀ69d֮!.vp&ґ5 <qʰ4 ?;Egw"kJ7M݄ ][_Hxub(84Ym 7N}U<gf=꺑P(zjbaarl|*d;&J=C¥:[Ƞ4\̩N` ۓdY2 4 Lݎ`Ae! yh3ü5+g̓ hn"{qi17z..rֻŮGjsߏ{ 2 cӢO~𧆲}9}sQb"bfMIVED iq{:?O|ddx)uK-a֚ɘӱ%4 U{܄J.V[Ӯnu!,Be)^Hzl;,*N|s1Kc+Q\[lVf 4V113ܪ~]&p T9 -5+( oF}d\g1烾S6ިjasCǏQ\tXOpT pεdu+|Gɞ7_-{>ÓǀW074uD? (Qݱg<(jZEU"i[)H%ʵ:=N> %.)ilX+:5dɆut4ă.ī՜kd9oC_ylYf_sll/#Ѥ]#>&Gͽ&68cm2YW3- 7v)33ъIRVc#< ^K4&7&Wiwzo#y&ޖZPd ^0[%뺓{2)ogߠtk/ft;4'X7z|zP;D]]w߂y9lCSy՛U*Ĥk-5HȉP\L]Eɭ~ʶXkNm59!AGܺ>JF)#u ySϺ "곴őJO+ѥ_?7~=-^FW]ײÑPf||jC|i7wĥ !]LUR~hl#,rԭG8?,l5|n> Cb-[>`W7ӂ޷Xvf' U;U .l;e ۔Qn[z-KxŵzQ;^haM ?s;}uD,ў7ﳪԼy5 4[0O. ͓vAsyw\|t)]}-tqcSg3,s5G,L&ߣ/O,b6\C*~2:LHa9h=r¦=)[XWkH1U_vٓn2C Z."vֵqBʹ.tz5D=hT7:bw'/w YxfJ5!7>I>zxgia-}W/Lgj֋awۓ#I_B{fۑˆshZ\yY06ӭ,;'M>v{7u^$_g[WK˂n_fV}~^N2f=ls-~Gkx8uG"{plY@bIl HL`X8Yq ``Zi N NM4, V!4\7 <6`+m}7(ݩQD{{OKH Y6 Qdq'p^nh+hҎ"p˒t Z(6vŠl{;1$ǘe@9)IddJ՜;;%y a1=w4y[Ga{XއdoX%mYޮ\m0[>- NFKɀ>c#'?2tsVU'r;o(UJ!H'Po%7[}1ei,cĦ&o0dC=l:cŵBUnuĵfǫrSm=vM`ߎfyƎ yUT+!v@] ZI)?AR1)m{T-uϗ(o]o6t-| 5gO>Òr,N ]9f~^&djNͬ} ѮZ'XA 6BX2|m6<|B"t( fэ:٨$Oۋٌ/DZkZ[Ml6ID;K=m#<5c^B݆tXq6,ߒsϭtnj 6y̭G)+I攡5i@}fV`}+:&Ⱊ-*GaJϛrz]]AleEmFFh嘿8ՔD"au]ţrwJv&ul"Ɲ~5}%Mdœ:mٔ_'JHvӅOcIJXZ Nwiy 1*6Xژ;8,k"H Ca;.dN[PY\a8=̭s{gVsf|G'r<[6ޏ5:پyK$׷;bߠC#J,`빧nJZgU G,t7dUG?Fh: l0DoCJ[|6/#x,C~ :SsL*jϧ#jLMiUfO"Ow޶&VV+u g iX>97@{Ett ַ(w▭zU]w oM^i室|![B"9ofXWݹ~ӷ]yS|l"Hz:z:̻BC?ўW Y҈( F%)ON'\8z8m;\d(}~a+08G w)Hѣӭۺeyª4xG<]XIzZpOE z&AS8mRpHcbԘH sZsͨƼ9ysQrHTiI ˕RnnVrm) Hh73Rnc!5?R?4vv¤%yn-C9s)iG`ړT3 xVޜ\~ԓ"b#?Mͼ]*WV]>cOR۶S'$*$OoIf+[xN=QstOМh`壻7[3< [`me!F]7V0*}K Mrȝr޺y(JSdᩥՔ[o: cr,W!PsS-}k< G.%͊HBcz|;0x?! h, Hk /80=O\yMn3#}iO$Y;{;H'H#UtU˴vV;qo;?Y6dVS:j2۽c wz14 ƈ̆Ƹ}]ШFT>ߜֱCJFYDCޘwmcuHu6ꛧ,?u\v<\m/BN%^!Ӫ-@eJ*TwQVZXlrls;r ;g)euɽFEroQ+zﳦ;k}-F8'l=uwQj*?Il=ӴAMwbC rn$]&uqiH5wypy'Wx1'^7+ 3`Tbf;I$\ ,s]Y_/G@; UgO̧r+Vuz:ѭFBlF%&arGce|ȧC~*Vj-[7EGʨd(OۛM-`xCg#v*e:*zL6s˞|Z2OP -7JiƧ @uaͰ6kN_KP>. qrra &Q VFB$V7iVmRk^7n\Μ0=4e!&B"&`-ɴ?*XϖI|t~1+ޮ޽׻CV2kOk*+u㯡Weϗ#z=:2m֢'R >V*O~iļl#t:k~^}n5]~|ɓK}K{yy Z`GsimwwGw5>Z"Ɵ#|x]Y!2uw(%+kUK?sKC8+BE7Kw[\hIТ5d4_/jz?nm6G=gT c?^xmM.WgPw}( ]i]Y) hx~:#W$\$oEyiԅn)wDi}+R-d7 SEUηVvtj V ͈K8eQf!ٛN"4]ogi c|& 2DyhF<w4t}~d-ݙUCt,It rL~²MFA& $#ssOk5Jil 3X?Yu~,~Gk Hs.ֳuv1)F7EڂVE0!tE}bxQ=Q%֕*,B;Ms*iAR(˫`$mz[ dKؑ"^5Œ2d~=/L1Zz&GcFբ˳V2VpiNuumYN=bE|{ְ՝A Gm8Z'@̻e31Wui=Uv:fR-On0pkâ!,Nf<ՅG4W]OE *fq:7z7ܾ򩑃l{+#P\Ij۴wR?˟"!d>2Mp 2@Y2 Gt+&Y;<"*Zl3®fVэ/Z@*z\K.RϛRwa|f{̝2F5Fr}qN<FܨSK*1I&M~K–F7o!I}>ߺν2>]Oʉlᮊm=ӧjF" WxlcENΦvHFK\w(1&qd>BO!Qm3;\SxrEk],O#6rw00RYzƸ) D P9)B*uJaŭf&GOFg-(Ո"o1,Znv.ny.% İ w}YӢJL渚l ف*lUSpp<[I@YhSuF_^A Pl~MPeNeכB92Ӆ<i9a(yz`VN<8:|=N e P@B7[lqNTQj(j'"Gݣy>Ja"p v1p@+p/BX sQvNhE/Ea+K8J/5Ytc ^OάZhgzU=A)YOyuF^jNK2{֜+:ɩ ?R\ٯt?Z!UCA>3WAx!.A/O…$h郙sM^Ogr395=>ZpnuʂA!ݖO |;TgU;#pwxP]k6!{{_sZ%; yB*LLmnk3}=.d6sx{OO.Z(؃[//7?_SqftQ3O#9qy:mNEe'ڄy4:49E}837g)&SӬƠU7·^ξzis1AbGYbMVFn(5͖ZevdAms!5.V{YfmfkQåC)vmpANM]Cē"G)T l/׭7|˼d-e)sT| g=aW *:= *[=Ygg;3jMKEB]YPn 4eO};Cq ?l lxr aNr2T~V[`c痶|3IzƦ!cC,,ܥ zGI|[~mRq2AF ;3/Ll"UK<8kM2PoO`t i; 3hU+z6GĸVi=!i| nwtvDVT =vD™ZS^r{"a%G@8+ZͣKw7%uY ?7`x,_4l~Cvp[5jVij7HyQ}@T-Ne 5mOs^8m˘AyIqӒ>n`1'Zqap_w* ~RR >m_$ 8Ƞa6D5& hqb&M3;ZY@[fD21*eykWdM}^>J? [M疎mcc _qy7U*4j*ѤU}tp`@v1 Yv;z㈧:M_YGC͠Ĉp.Gt6F)n4)o#%]F@sR6FOѝ_ 0&wOǷ౰2G`w5DfT{]%uK|U>k058iڈ'Rdk($RϗM"y>g| ϓz^ܶ5a (SyQۈ[YUxy2~ESFSJ:;aS:؍{6ِs2H[z|Í}~p>xJWڧ&c ~ʋ5s,A|1t֯xo69K|9S3=|m.Vq6˚w5:_۾泼=n.۔:=H%7w wk9tsޕϚRțON[9#Krbqt0xΔiJ=%qkô],n"7k+,Ҿi[vxB"UuFYa6+U7;ab]T3EAt\JԕRl!qúλV8#@O 88s#8sll{QoS&p:'rnn) ̻d3U>؂CG9;7*~r5ǯTm_;KDRX̞I74 b]0h'v=64;wNHttO(r{Ϯ"X c떠 nn$J+q=ٜ@bF:ψ.y=/t-Xlv`0YWq]y9,P #RG6hjtvc|`jc-6]Ux< !ݍKGWT#1vOYk RJzT{KhAREfTMv. $i i:`ê=r*T,opfM[2a48[HMiAp j@q{Y^FWN.$˜˂Oz9&9sqZnwk, 6P7EGo&c~% DZ[@i{jL{IHDB 1ƭ{Ȅqfq㜌:`cDp@R\J J*]j{X^&wzv=uFP35.7 QĚnIuqkVت9ÁiqY=lړ>({E755\5Y/Ėǖa{AڋyX*yܣ f;rsZCG<6˘5t8օF޹Z t0GO{b9t7}dV*լδ1|r9rW(2u*߲\j\u `z_ϛvy=XhE Fdn5o}#R SR'w׽5mmpv)_JSJ?;P Q-s]ݾMFE#+x?cb[k :g-F8].=! YG[kwnҸcֽmg#wfWf'lGxyzqu}fkXkr᭗ZU5&qgh\K+6w~u-VnxPzY~?y3s5xS}e}#h#h3-6w9#{">/w~+=S^9͓}k$k ǭ$x a`|&Q._kϣS4B]tY7gH)ձ:r[O$79KFp+7A H^GJ9X QL;"KcWZqsY5Km M'[WU% nV^WJ]#.i#]aG:f8={Hlf锄UzylfO;ENDq |H֘- O@3Zx1p[UBYpgc~XtN)rzIH*Y=f7w} ?Ȟj=g<&CMwLǶc[к[ƕU}1W8w!}DeӌiV ^.%~ֶ$!p?N9u ( O<4.V67zt[tCQ.Ǚqlge=d]7z)He=]KmɍsލP lWL}eq|xǂr(Gf;*\9?,gִ[{!&ӫK+ɒ[ÌV×Q(c:kEmPhXR%'Et/Ce{,FN3ma_cKJ1sMq=me?|[%)F-N\?gϿ =8yu{|_MYV,BXixm:mi 1#pm1.ZQγsiv< GimutZb@E] Sat(]tst&@Yx  %0܆00Ih iqH3M1;Mt658:~Y;mb6Ț ?wzQp%?b"%tdwzfռfX52et9)-%"[}11s:N͏)x~%9Y-(D_[u>/ǡyA3&]'|_&/rIA9"oz%)m&Ab<]-{>Ikb"!꟠;jt:'r(JV&Õյ?NnV2(='V9A1s0dNc #*^R`&^ѡ!4Ii?)z਻C9,H|OڴbfؑӥrGPbzʆZ\;6MC T>fwZo fn}N[\ռڕ\Zr߹|6l1~1߰[ X֋K}U{tҨ^;NxݱAKEVg|ͫJZ!+.7GOi'~ܸErawɶxs)}DsNȔ>zyz.8Lyl`1{nT'ŏK37fiN:uvI:Cv6h~k,Oro3T*wgA>8ĮWچ=D٣) ҍq~ksKådl:Z13ND8?60RKv\A& OѮ-MP,{ÂE FnWzZHH3F[zM:'i8i'br Uh2R&f$ز7kN>sm-`TӅ*$V\aޙ>| 0T`ksOl6Jp!CӺQjN+e՘;ic( H+\EdFܐIJݶe-/<Ro'e٤$&Y'dB m,iV Udpy _Vmg+iZ :'3#TUObWUvoYL\HKq0jrs =whܠ5+<,'%꯹-݀زr6źlhdo#r,Jxעİ'ZDijrM"@*M Q6?JTrsc+b 7DO^5Q#X%TrL" nI8 vbIwh҅Ree6m]V-Td%zE[nkJ0>Hj[1ݎbΒ+BCsmڝWЙh%uK޼_0zH%4to!}9ޗߪ|!Bϳb+|c3v2hZM9XnBWl!N!kOhq· -wja+t^ &/ʢ\uhoFiF8(qF5i'^7mdAϕ~M]Vl<'P-+`czaaeA7d6KG1" l4mMS#GoEII8cXÇ[Y^(wtRCa~``G%ɭ8KyzlhiAR*tt:I;:t|ȕHrWI2 :w ]];\27Gěζ2b v/̡ o-wQAjalӥ)f{٠u @2Vh3'dI6q&tsflcce&l0P5 )1XZ˿rώpsisshu_Qf&6YsQ#/ޥBfw-9~xu˃w8o~fSkY:G]zh? s}oꐶ6y?8ͻζ2iN7+qDWZRMTxmul[bNWJe3=jUYSOћ9U>$@m5Z9ew|>{ttd'ܠ~񭇱GFuB8_@ӗ<13=3f7ey#X&.IG 32}vFҠX2qopH*r @8a*%d^|'AkLk00_$Y:CaY#i\HUې0ro,.jikzNp$lN(OԹq%3)ژdkad0p<.Y`h9G.g+OEѮ2ܘAWKEV!S@<|å]+#jr, +O57zx%:ublv"\l<;\q9KUzeLc}oPcj+g$N\t35k0Luk9:bġguV;Fjh2#WmlLinVq, ա Uب#9u`Y1(T1Ӗ7FZQc㪬vM9*r+£oL{6$'ŃSv>؝ ௔X6ڠ+NBM0g[ 2aqfhX:6d9r\ɋ)ٍ!ui o΍IJeȫT PHu9FVp7ydTou"F]6\\e7xײ["Onpd gt b= =P:ۤLpXl0|lٷ~^K5vۗ҉9啁-o}9#yfTPuPY8^PpP9ս[J>Fbہ~+/t{|Vow`mk\L{WP uMx=::)n s{ηQ72_^jn^3}^9`#QR0͒mV-z_[͹#յ9 3MWʖdg,^V}}nY04X[{㹇|~}IŝD Ib;6KQ2+ӢjSgOI sLȏ- ],D uZY^St'?<ßɸ|2+/mjV$'S˲s%# +_VnBIN֒Ml(9jDz4}sUɚm1q7aZ=wRRYlOIK1[NiVrk\33s{)H<֩B)zEp9-igf:Cy_PdM2ʥG0Co.9gpB:҂86%2$F[S]4ixz5|BJLqe"eM"ԙ'"v0ޚސݦN`T]L+úmbD?\YF}+Xsg9kޏlƂ YrTj9s5Un#xr7yfG9* 􈝍Gт6O;!}I &s+Z@eץ=IY9gq]XϷ͝oH{P^5u˙=/T`)^gHuӾzpdjYIuQvʉ0Y75|P8LC^]m79 <2vkCS~?KHU&kS3$)(FnqgfBaNؽ5B׫ ;7nm_kڒ%ܨw:ZA!5{xN ҕ:)MYA㨳yju&4p|/:j&VAMY cK5c~Ǻ+uV;L ǓXR+d#E+:i[e@d+RIхvY>3.9Xt1WHZAꮄ*Gjm r b 9vbut}am MN.N(ѕLbS)U2V-_ vPLϡu2-{-.[+>FO̝, rc ÇY[4Y lyD7N{Yw7 {[=aM+{hD3Fnoa.Ŗogmh$Y2$ʺ"B5tƬW4b^_֩겲y i۳q4$1jXj.`VFwBSTdם܂;NHsӴ͚9%vB`gmnfF;Zz_ۭI*N8Z˚#5}(5;CoD|CW&ŷycjIlr3 .a;e) oR*Rv~ҿzxn;C>S5G=ROU)NO{3@q>+\ҧմlb2b woq f8_mٷALVnknimQ)]ћ>G@u#JgrR,X$ ȩ5$IҟuPbIXh`R_~\'h}[T qߝGY&Zv_BecOM`]qq2sgujJVJub NdV]}l#a]2%b>}[Qj/F6\.Ssc+Z$W_-Z4h)9ApkCͫ5ԐN&{kuR!~3{{Y%tZI.iSYm<حJfݔJג|WNcT49b?]fxyXÕeBZqV, @=Yc7C+:bUYzev\'|qeOQæ:g1he bZoG 9 @BHݠ`k3=G=&8S|<YFqvbs&ޘt[U > ̐NRK'ofFsԦ#_O 5K͒WVps%sg)pun$XNNS \)-K7 U/c8 w'g]]Q" ~Hum9 vJ~!؆`u'Ŏ!K>ǯRF]`IK$VUS ~*KF8V&).7+G!P KSqGتYvNISw\汐:K1s#[y0%nc'-LFTAa [!f6BrU ^pnN]7TqfuNy'jK.p"&忪 :)gqAc#˶hƹW+Չa\ʰ.}%nΔFiգ'fǚIJj$: V<9Y%xEZ!9֔xzQs@ $I6vҏlbcv8)L9X&: }ismi64̿bQ>i Kep#(N^xهo`C_Wwi9f̓LF97;Z A|$[p]]4k3&cJuHJS|]쨿GV; h\%,b S/|kOXQ;TV\k꺮w!T:H1!ÇV ؾ$;#:P5Ի'@h'G؉KC(S!؁[f oH;A؃ޛSne4!AGs"y_HI;W szGH/hE\P5V_6W"o),T7HZN ftY-KzbX7A ax717v!NݗY׾Z©x%t4c7_d?#zY(cJY1K9@2ͣSV*FqW'zpKpך>TE^^Ϻv50qi?3fI۴|(XwjvY3r%lB//O|om6xG¡T_{Hf<ͶŖf6峙󛅩.8 Wsn"fی)N8 ^X_ij7|:|iuM_TH4*f-W}__>Vm]iw.%8 ڙܖgQG tǕ\6rMo}sT]|wmr="qR %m.ql,t wGvgn.VaZӡ1!aD:g| 1tw7vE nq oRŻ"O- S鋕1-S dUCOXfDbyn?d! ,»;lOHG9=>4omO쎀NBWȼ쵳,'|ꂸSW 'Xhͅyeø2\7]N_FI<zCo7 CL v4xy#d ,ʵ=)@t2s`$qd\9`(QB{v ʷmiM9 )loO4J5Ƶ{d2k2ךG=K{܈^ե1 H~w]mkֶyc^u}_J7sZ7OP#+,ӵ*Sn$A0e6kŧ[fx38\m*?ʒWͻ4ҝT>F®[& |7#%g L!%)6_U}N;lͼ%2޹z~Po7z\sNHStk<*7d5Zdưi؞TCppHyl@JOu]#.2%Emzُ#r+ rienv@TU`d(կH5lBa|xR+/g#\9;)]*`U —(Qs#"g[N Ϝ`t!Xq( fMmy-sU+ʣG VssjX8,W̯=ބ۞'җԺ"fj1|hrw:Wbոnh`Z1@UHGLx1<**Izi z. יRю{;YјQS|kV#ߍlLsoM}|,#+ Kβnx9m1;p"USsGk~zwefHsaWqu[VA͌l߬#lAtYU(˯ w𡯯~CdA;=vٓ$£ց3}ix{קGr`u'qNR=|>n}Tq]}C3glۉ_ʪ+wkK9\k ZlZ]+.`` i >.=mU?l͜MC0(dj7'J}ȹW!< *w8KF^WyBWqBC`rD>f''nӏ%UTU5 rt[ ,ne̙o5URe5qhzɴ0#iֽhTA˳6lԐBGB<^,kzث=ZG p/fEyJ>ݾuV$w`!-k6 H7g$4ogZz| f9z73fSOapW0bI@&lݷgLhҥPmbmFҫ^BWY.cCAd2XLnQ!P*u6,W. l2z6 _ f$. M9Կ$WFw:݆5;ޜ63Ե*ۡ #Kͅ]F29A_VJH='@Q77C9GH #m un9.,]\8n[kR0kk}߫4Bq5z_"(˾Pn@;Az |9یuDzڀU[Wa]lJlT¾)":-c\J=i% ++bb\fһ5$3@Kpe*]';ݍЧ*=,m3O-GD(uqԂWq*Ŵڄg5i$e4GТ7]6—QbMҼ+VTiˎum#7,I\a҄t˗|F+9['d^mVY%wO]IIB'6;J`#r6|Q_ñ!6QeO""l7gy6 cQGb7;`jҤܤU {vl'j/ȩV 2T@@qAܭ|jyG;\Iy7϶+͓0Ϯ9'ןP=JZ;f˻.QB yW_Z[>ܣ2cbZfui:(bO'ZGNqM]oR+JvsH k/QPHjLvB723elH{Ǹʢ|̎\;TJ94l-і/ok@|P} "Cdg0K&γgŽښe,ȉe XXʡ&;dG4\1[֙Qo6 N^k=E8{=PQ [U]GnBA$^SV;nxR֭R?r:?N(9gby .>.ܤ٬7(Sʏ]y9^~T\-Rv\٭-l7hөUb `I z9I%E(;L`xl@'At2՗*lFSԧTy j9R8FH늹,7xToz3xj _3OTaV*"?*crXkQR )%'Ca"7)j6F00m p&QfӌP+tg3dfbX]bf坜Ru -GCD9-v؆QAQkȵ۹wSLbJ.TPpGdYpdgQYжVa.o]1C3lY}_3hZzi8ݸ8M96GZ"k'M[#qD8MV}uJ7n^˞WjqJY2gz6 ;Ew0w#6(1 UM( ppOfgu҆;zIQW_rQ@vwHg u_ ǎF#󊍜\/Aɹ+Ӯ'qWh $ɾeǞ]mv^rF@R@V~{eK|*NГfYCʜM͹:È|Xk4 >\7:- Y〬{#ۚh)'2&$1gĚJ@|7Fc+҂Aq5]Qל=9[SHC@ͥ cu"{&huU\2TW)&lQ,;v<481.wh}Ve{egbW@Ȩ۹;w_'gŸwb'*9>cL)''Ӎ])o EcBdd2'"3IQ?yXi>G"u@/߾/,;X')2j>#3+CovnWIH#%_Yd#I'`A+؅M4W&ˌZV,1`ŔZZ2i3JÇuUez1 -mhaH\~nm e^A" ]v*#4e"J[7 6 ;VA 0 z!k:e ev®|Hz<4r&%eY__~鳝il;~kg%nr[cBroqrXkʶ*&k?\r7G[L᝙ß7D() ׬i>7GU8*wZQR'!{[z#H`=(nK}]֕Ű6^8mŮL+\6 Bf$ 3>v~4dm{kC[j5pӨYH]Ͻ?:֟i)GmQp.0ЅV/Q Y@T z1{N4Zaso]iò5figqkvGi$ھ*]X?aH,Ч% &$76pf3Ü]|6H..%? 'Zukn'KtGl57{a@p~B5W`gWҊJ@ݗ:; ЏNYZ| 㛈&4>srLW2" ,lP,Q23ЍZ>;U$9aed}*eB=(CI!wȁ%xh.,j($0.A6b AE4- Nhzbn۹7cFޓCYgiu>6 3IVU4!jQH»ܯ+-=_#-u19E+<[Bs,NvO"sOG=u# Jb0Š&갅;㷗H0!>{wX{$k6t*ugѼ'G\7pfe6MǢǙ–el]N -vbs`G  SCh圲۲߫v@iNMN~읊c%#GSS}&ώNWiĻy~UK&mfO>ˍLTv{4f"ZЗ|NV՘mi ɓKp6@r-%!hߞ}ܟYItWvZDa`s0κ~$ kYJK6e2ʮM1yuD9;koe0E+T#@He5ќƀ$;}^{e0 7D/D7[,Bo9ᒥ3<=Cu'$է{p9خ96R=gvx][@DYia+qh+nɴugTơF9Oc0vo^1Y3;\C KԨ~#@^]rjMUzXt*&%eNHX^)Z"8aP*р&"bQIɎztH~Ň= ;;wMo?GS'l=jS̚-@i>qGm(sMo&E):fI4ŲFGCt/Yԟ# 6h1X!xXWC&?8˖pO|(lO~콉.F fgBys1`rBzjͼeيT^:-zƁvqt2&BM^iyIliu?+^qwbBYN&lj*j%H+Txo.|ZRYHy/ܭX6𴯭9!k$}G[9R'un t٫}svJ_="s|qzW!ʑ:G~؇.]jA-yr\xg&vˬ}i7/9NӲ$ H`YqA$\ZF w VZeK5:s 1ʙf`ݗ+Dbe6XcSv|ϫ]ا@pS\=/rN\UVf ]e!}@0@fE0ލ9Fst\Z`w<> 6iXt bw.Gp"T7VFT?m9rґIO9g{5X~So(H>l)9r543α@&s|)Kr!*;rcoC59C6iGѥJ 5%/TNKP),G˺KH<_vcRq0J G +}tk^E&\f:)&"aL%}lY V+Vwr3hW ˭Jt6IQH3EN;!}kVEQ_Rn>VIgݾ'+8s@A¾Dpr(Qəy;Ⱥ~vti9OVq>hg{1%?Oe׻rL0FeҖtAt&S_}B~3q'SeP(;Z{ŵ[ғ ;FK'0kg1gk8ׇWVڐxoq[)2x*NEL}hy^#FMF; ß# ;ӫN-i9VgNwѷq&ۓfsZ>nqJF=OM J\Ae %EG?-m(Lnjl7Hv'eא'w^D .P%W T1{EW?Z_0>렒}9a Aw5B#n364cVA7]즨jJׯWf:d ܺ.K7_kz2|6 }I8C؋ B"i\j 9."OiHB0<]MaNe]213H2ڱauFXx6W]Nv7k}kӷ_hRg{k@dPt=뇈3GZp(2ĐlĖ˖F;A$$2N3̿Sl;X+3Ƕ*Kog(Ƽ*4 G/ǜi8/1D7` &FgnK]]=f.CIENM7¯?Z:myoWYlXcЮшpdpד{-ֶPc[nyMQX\v-G 5~&9IgU60[:2hBK$7@ܣ8_ůdnqD/e+?;:Z~j=WMtNWѠ+)$mRઍVL{IVʓuYӛ@qmV'S;S8BT"ty䗼b^Cˋ&#*L:e*ՕpSe5TZwxұ~=,gl-_AH[02¨AuwVHQ>jK{$b>.yڌ0d#<^#Mz@~73;㍬͑6sj7|Q2, 1s^Τpn[徢wr>Pק f['{MNl4޸uA ۖe]nڸKЋ['6R o{bͥD4h]B({}?PkS[lܷW'OL{<̝G%)w>UtT"'~r>zũkAw4(šlvssα9;ш:}amUu>][r:SInU}èo׳ }+Z^ۦtm+H @KZ9 A4/ɱFFLs N~N(7E YaPU_*|cq:QtN_ɹ}7uTo)xaڮl9tu֛+x66=A[m \N|<,',y媻*f|5_\w9;w:kl[vH !Zc'Td#!ͪp>o&YoBEkEhG2lc+VϝR(Œ-p,>Odnc:˲}P1@PbewAv.pTNY+ՠ"F7U騕"-9^L&(N_Y:tÞ^#R N(FŅvWa@]7}vgixV%J5wlx&,Nͮm ' (ql>瓔r7 w* %:zm;D J'0 JLKѩwC $M2 S2n秣Y:Qw3c???/RO RHZlz-0rw<ݪ]ZqS4'ul3-ŹY*WBXiS7LjЯOwD|jv/[=9ή{^q{s|997OĄ#ct,NrhGArԫ3j7|+Sq>Ex$KUm_ޛ+l̡!Iq-3}Z#U~^kN|NZZMIJf W$MLln=1@ ˚ësʕ0ZDcO!wȊVRs:yeRt{ ~d 'IHv}=[+L C1%/NۈU51=ns5֡GaJqdMl]\p@8s̑G$̪GV4%tMѥ I5f2;ݸs5-w-:IdTl\~tӄdQѪT?esdWG5`e!t;$^?ewvwڢ0=sF25X3Gv1ً0.t0/aZ*wAWXP0G7ogvR5[tyyx= nyq[}Yy2#-`2g`\ѤKl{J3OoKXggBw%S&p*=R&u.smԢ&FZL8mQ`gE["6I#CO]kn*F+(B79.PsnM5.NSrmm2:.օ~],L%,`0*m{hesR (ܽ/Rs˻+[7_!~)1wx@^_<و2/Iy3ĮBld֭]l, Pc^LJO8O4E 0ąBD2 Xrdh۶:0?ࣾ,~?-ܱǔd3lsY$b qLĐ.^o=ai28}#4n:VF`޺C!?E) &z;^S'p#&gA'm[rtV/HhP3MeZ<9)6wuVˈ5J6b66;EY{n8G˷ xq$$é/G f}(:P/[݀^? IןZҁ<; Cx+>:yFIt-SЁWvtI*V r5T ZFߟf]m8ܔCMZՈߠ3ݥSd.H;/.f;w=k弿2,GiY @"-"oxYXbͰp9#^ߴqӑjZSN] OWI Iy2}Yz`Y{r3N漷-F}tL֧GQv6Fi٪ü̍8FqR:N"v*pKX>c>`r`fHԪG*&IPt<}]_WEt&bDxRxۉ.[ΤwJS&հ,3m ]rbhz3DI} o=3#m [ C72Raw VL JL& \k`{/;$p6`xу;I3 c]6iU9X^`Ti@utlf306S:GnA 3=DM+ǰdНCNͭgyW^{$tӆwnX%NH,Nr+;""!t@cJYhϵwk+cP놣&>>ԇT? My\]%Ԣ=e6L&2i'! Z:qw峸K˲?''I_ TGc~ap4X- #\2PՏ\S'X{ꍟeuIpy?sZe}V5RG#9Ү<QB) +]cD>?Mͤ{scborﵬ޺Z.vKsbVQZYЫ*7e{/횚.ubVYf0XN ɵ1qOr;=lT^~Cpagv3w/褩ۥ+-CAuW#ó~F3?_<~\JwŖ] OT꺨?Ks-j?Im9oX3< '7ߟ~ё|wh;5C[+ٗ-{Mܴ9>UZT;&[e;:s'Z)`֟*.@Ħ]m(%ljD>V99VT)>(ߺ&nYP#֭].}Ϫ벗iܕ}rJڥͳAB~dBðNx:lNUӹ zsZr%0\b^5hVj0r̪`eI>Yr3,1}Ij&6k*Ka'v]u$8:4łփG^miqTćd\&M``RGrXe}uٷ N|g:ů˒Ek:ޙzEo݀jӷ>3mu8}5;OFM<`[ f%bؤݑqw D0p0llW*phk:HxVzp:qLJ:B,ךW2}p3Wi:5c o]hxh)Ul(4vuґ{uL2HBzJWߡį: O_1jR^ "_RkE_7C^[zR:<

%o&r*Fa1T!9T!b2n !udF_ѹ7^u 3aLymUf ,Y5 }6HϕU"ܗn;vX٩kzz:Y1`7y`(L)A$H8;n;!^49 Zf>Txɘ 6Ew&vjd dRDbK!J1rg$abǕDI!ǹ5rF1^Tحֳg -PvSϑ1"uw3z59ebzb؃Ę:C˺_߹q#ꮔLw}=Ցg _>{{"]o&toB"@7[*ˊΈ m&?@(3t&UFIb_#KZbͩMޑkl߃wQ(!Mx J%Nh3Sxifpk'oC^~'Z#zMkcqć"q 5P MAC(9>y+  2^>NZыF}sپU=~sE]~sI! irC43@g<1։` JWA &b #H'd qrƼjH' "aorF8{7dNT}`cЄ%YPM"6Z-.P sV֛!u椸*#C_NMoϣ;On* D`r A(כμ?ldSFj_j+CUv6'[냥N{ct{хWL밪۶߄+lrgpIQgtvJ.2'AjX_ZۜFYT- g 5j4{I?!+lس÷N2#KeeaCnf;{D[9 mFAÈSy6rPʑx`59PZ,] m*a{M;ѓ,{*1a8bSN\q9eZۦ_2Z BVsc'tݑ`AH&R 1MO ?;lCoȭe9ɛYzѣ~b[$[Gs`s/A_5?VלUL>&Tl+)KՕ ad0ϰر F)`1J^ָ?}RN[,x<~Zރ-+8Y7\WpM5)HLDž4"Ôճ]Q: 2Bs90qyl#m7*ORvz& Ͷof9cվ#𕆸o5j#fMoĩ-ΔLh Ae~bt.kGTI2L'rjZ0HhpZ <{?=F9-{\hM!t_oP} ݊&v,!EJifB>~}2+NYs͆ c\PK[=C VzɐևB3U~R\.~Įw] fŐi볞mX^v&|lN" {{G̺8S@a3j]eV Ymz+M ۙ9-} ]&^kyi&j@ar[R&E[*wpIvɵɩUfoxuلQ=?Ns=%dP "vJ%~_qv@?$rt r ;q2GIߨ/)3 &><ǦZ pfqVkmfb4FQe>_}m? !N*=ZS{yGYmb 9s7,pMHqk'w?O109Jc-Rb,96ħ0[mOm$R%<̊E ԝucӂE3;-;N = K7k&o|ceg̓'Vl/a-D4H~g6ֺ[zu܄ZRPŸĚ C4TsFQ'a`ɐ_(Xpezpaj.~EMI3g:$~^- __z7/tMM94&קXKBC9b,3\M}JA/=Ù9yLs;<%c\Wxn= A=btΜ,3Ejtmc#;]˝vxI')'o^pFn쥴B(Ch)!H\6D2Ӊ]\P n%&6St3]n^}62l~vu#V9pE4mW+`g)޲ȅ~1yϖvVfmRcU PR0KT8@fVQnT.t!32mh\/~#]KvLw>VMk_x޷߆c(k|XV y)b<Ѧ/ ئOݭfkُ%vMgy.Fv#O]JƀvS$:\ݘ^_ˌ=G@9Pl49Q7JImw:'i׷Ӕݚb\f:]xPF#e:oR2`eGI.mGIQ%>}R~]扷{+aY?1 cജP:96qF~S~S!(%r]ި5d*r%kLsY lړz2P(edbemvFf9^7]Uh%I4z^fv hIw5:.lIk">%ā3]i$ʠ (PjE&qD%kz__\sthY[X$5kJg/~Uׄd8`ҽ5T]gX@[Wk?:ߠKc.M D{}Doܛ#.:| ,_)-azB8GiZ0]fFoȠWv8pj&`҂Fqi@3 խ- /Sꁯdg>Q6i&^^shFl2P$cǓX- u?=c(q|~v~kn8kvkx@>s!4Ði}m#Sv7m*9mTx$K+1h0AXe`eӜ~H1roTL>MJ+I׼X>Z{M#͖M̽{PнR'~6idrhzUZnQG5Q dj#, %HS*?=Zw5wڏ,K2*y{ֳlɒ2mDDSٴ()9&IC.#/!x{/%HUgqqK?|o6"|rsXRա`\lϲ6ɜBa֔Οݷfoď3y民Xg -tQh:vieݓf߁ڿϫ؍'f ]L~Zk;Cdц8rQ,""G>Ub|qmK[/2ۨ!8guN?ԫ{V@h^^L}|diEtY_!?(__?;}[ШfE|'%D+ ~vq1Z )*jߞ9x}SeB`BtRbh589!xu~llVS;:IJM+P=5v,+ق'qk& P0'~M&;Y~{ُ7)F>h'LQy#͢< ʚCC:5s &eԱ>/5HNr|Cg/fy<+݂>/ v٠EoYl9Y>$orMxLdʿ=Һ wkn˩kk-vF1Qd0^B0/YL0,_S RN.v[1޹Q)ai}"SuWץ*xU[U,9[euinP|6|c * !"Q2 yR THGdY"*&$|ӗ8$Ϛ<kp$5&+ (.5D$]r;Ji>?pбƷs&B0w-LWnԤ?-:A^8%'K#&HJ8؊Qar8ʘbF#H!Ö[@0q3$ͯ{-s(ITԲ. 1DN=]:ɗ}lgٮhA ,ʈ JhFb NPF  d'j$aSaNNl Obv"x7d 򀸭j$)F8w>JS}$k:scl!B$#4$w͐V2Sr3XGc%P=r%zʰB aw*[g>~SWÈ08Ϛ `Ӊ (*)q 4N |O٠s/b0tp `o)v%M ]ΘdJ?[w )0"yyp5~ g1*@+ &rA,h< 0^Z{œ;ٴ> 3D8}IW Qb -@:cY%a a(N#04x%Qspʈ, ҚY9[ ka&"󳳮S`: #t2č߻A(l=iG=~]V~8nGٳק>T~VLcM487t^0I3ߦ7ճa% IxIAUDgp!jn7ׁi5 0` z2v@RQ<#! #IqqPHӲƼg't\rG$TQ<3D{.Ȟ3͈d`4 Y-s5*BgpXwN\|3y~(*M6v@l)j6C 9& dFOgK ՍW;i!a1^s@HE^c}^!ClĤ31upmw¬зǮڑA9СUjSN[]`rt`1!OB 2'۞\cA5F|}VMh&s]qnAƞK)ϭ]*wg{9rS9g.(!oB0[G cClbɉ DVcI%oڝa =r !Hnw P*Ss0DlB :$quqH *zDewpAy<ܷ޹o[0T(~3ܷͣ[{W^oloz}__Ɯ'koRqϼ|}no~/Ѡ qUW* ?OAӗ$4ku\wtEE|ˢ*+,]g*: ,ίfByU땓L9$2(V vE1e JZBͶۜ׀¤"|2RIh1 6jHE~'{n]q]`gGvyx;oAI^qwRGtK'yi6s97 mLKyJ (ydk#Q|WYy ?_*m[o9+~ߧ\(?=_{m L[W$+k_o1z0iҦ{^t_ޡq~>^(TNU 5(4FzOoFN3Х_yʥ8X Ȫ$ɹ !Y$8^{FYUQOlGY4D?ܗDyE5w ǩ3MQCm0{TkMO)=J%/IWĨ볲\?= ɒe{o329*R_#݇]5.TB[i"evf-uh?WBO(H5=<8D}lRSr fJ&d]7R>po;?0+=SW_/#=>RdE QZovQ>Awed_޹E1ޫQy1o^NDFTb`d?^R'(XgQW'{lmdjagyzs1VFV4U 1򴕱{'k1Y˸Ӭyu\7/as9vDEP|ϙ݂ #8Tn@2ۮ*"(GQrvȓ?qPS|նvuye.u~-9 N]|mHC-Ӣ㣈t9l(9w'Yvfi48 (˲VwYQuMk%~;㎤.rBO]ˎP V e[4&ؿ=wi NJI/׼F:;strǔ%C7:$SG^SnX)&+;=~_x﬘Ċ(CMc^t]qXf۵Yh?{} $L}jbs=wEE ܯ*zȨ iW̋)$ Ȓy!ԴT~c %'KnckkD?6yvN1Dv ^!%O]چ{JpR*'mfmf߿PSrTGDCDKSA*Uz32~z\EE)~pbPԵ-##TWǷ*t3.a綇8?Ok>B5.C;R=Oh UQdEi/ =J'mL=C<!7.WϮRI/ohJQF )3s>.Jȹldv&r7I\3@ޤhP&-+E&x_/@+-%zyR"_iZF˜Ù"E}Ύ{/l>>وy|6=_ͧnZ}7 o/?noy$s/O,|}'{݋.\ t n幝}o󪊖1NdloDE !'3o2>D Nf(hr7l6=/\oG3uaVVvyIY.G_d%{dtBH}(W'ws*=FMNwѫaM=ԹI98]VQ:->Op:п_I^Aux\C2 l'؂Q6E=A>/̜(^Ov$ugd5<W ;];mDDDeVddP^ /t 3)1amB|ʋʽP+O׆y4Z>?-C!?eǼ%ۆf/Q`Y5"b]U\o GǮb{ם6ޙN2e~O~|Yγe䈈~gz}]XUb'}7ǒ{|o"{/|;w}W=weљaϞA/iw}PFsz玺. {ʮfy\#˾w,`*kz9Õco^}_<=yy?׷z9^<2JK7: [g"!eweYZmW@H~,PXۭf+9v;vZbn+G&m$ //{GTB D E 2یΤy^G\_nnYeۯ%9U{ۯl+S,7/VT$=sl!C۽y Y>5_8kR'_vox{9"yӁMyT(C4ܘ3Pa2lf7cIE{ywxfYu5^"FYѵKooo7};>JI}wM゚_,5)AO[Nj̟͆J.|o #xxsYw9zX/=W˨nߧxw_m_xn&?=ѹݧ6y9=(Fg̊弹#3vro{v :o\"TE**}q-MQEzyn\]53KyrScc #9.(fwg_'OF~{*+U'n=7w'+B56Hr_AHR$ꢇje\|ptxL#09 ^ kx[UyسD٠e2(wnW]|Mm6*8ݗ=e9d5GL%gUZvʞO#>_5i2{;G~?__xE屯gFB/}~/]_޳v0 ['?mu]w.T?U?3@eB&s%x6LۦQd\(𬟴g._{K'Ҳ9썕?oGZ<~ܞ!f{~c}&7tM4P_.Kg׼]s9 HKyᆒWgw}勵w}l{׍ sCzE0Oϳ>8#:==`> `, `Fa=mGV]9gBvRZcW6^,1 F̓WDo_oL\}FeobZp-{ߦO1=_ҁXGl߅սw p"󁗐2pН{DMH]$궨lFW@\J!MSq?H!}e#%]*GޤL~GJ#*ng<ϵU/`$p 7G o[`O\J]5%Y(oD0arQJnuu?/oLGa줦_^_s>Që*0wRqRMAHcQ 4 Y~ _|"%i{1<~n8 "?|cN9H qbGXNI"cBA /i4 (EQd`'Ppĩ[sӷA lwüK"ؚsx_r9C)x` (1AsЏmZ]*3 -$@QQ2r,/4y.6[" z= ~`;◰JT=n/ud~?qeB9~f3g}N-2{KrAlրU^;_ d&0~"OH˄(cOg(mQ~=@_i |?_W֣D5+w5__>CG"x7p2$#8؆HC)1&O?E?g‡r|ꁃ8'\D!tY,dMu-C&/}oSz{r\=:l L/\e=4 ($($h(BmGA =g4|ږZQ"Q. ,C8&\[?rͿ@uXg:٢v"I~rȖх12BinOU(ovhOXC8,wjuyC4\c_ e89J)}y#7-^ZM7/ b ,L\p!Sβ)Ȕ"!}{=tה1>v /j?A) •rF~wߚWos!#'ˡBCN_@PBL x98La23| &9%IE;uQRleDN9 j*ɠP l^KF5Szu+óÃ@P ʊd"(f HM9%PU`$Tk`-:r+2ZU`p&+f{{dcl[/AD &v2HKgDIR:]R} +ȦF  O{| {NB~G|Bf0>1L(G,4٪Vxm)U2(`/ZxqsC'!!>$Ȑ\h h21x6 ݵT}3rٍb$1qŚ 0MO HmMiN~9:?Qbegc>|lbl 0*kUbD)`uB[qHی[k1㈧?ww!,q3N3^8$ ڸEYbƪ4ZHQq{Uā($ v79Bs7B<-&tT'B,=( !>(QMA&$H-e<+As?FΑ\ý~M }tEpݽʔI@EE,~u^6ވAkӈ |M GL>BYH'!Ed!QϯP9yj}ymc}ƒF8nR|!6MMTWKyTHktVOAMD3L P<6`+a]S'02(s BSGO7# /,p-ӣxD3\!gt tM0dž1 q0sxF<% nc s9ۇcDOYS^$ª{w;ɠDoz^%B B63# Ҟ!@2yQ i#ȋ$X"Y h%sa2YG !YEtD1\|~gһʿjb'74O ">5h*%POk|)?* -NmN5AN̐CÖ]{1P5e<]`DqOM±DdL3PPg-{vp(RIT @a8roog=iK[|xsxE 01j+5W ل :ݰL<L΁Nk1))LgӬ"\HG= jj}P<,=RM)@t^d†D4ޜ#DLvD&psG#j  xz7Aխ|ǧRTU~cez}sGf}{g~e@<_7`ۥz75:^s@/kcIn;r;i^X9G"w~dxPC<0~ ݫ}ߘ$pH-TlGP-#S?IS_W &_6ů n^4OΏ2*;Uo/1!F$5⚚[I wٵD1Q  aPm9J(5P=3f0Ɉ2N`|p |=-Cv.z|7Z<ՏvG,*W*ΐ g  #Znɋ>)`ْa G(a׽O{]:';,1WؑO?cX}{aqvSݼX CSOqJ-#bwfMД,BXESQ sK@AG "ިVQ0J?-j9srB[Sۚ'DXb;@qTuhER袾?!V?pT^!w_– 밙'նdEXπV UeAXdPs 6vB&'|!jGDcW̵y ƧB?ug0:c4=Ly}ط%ǿ#CPr" OH9sc3?k}(GO$R-Wç]ǕY{>]>1{Vκ:PQi7zVo-s+au3':,Z>9u랎^9wJT~X j ;mvYvMdQT1hVam`&[l۬:&`m/gnG=7"'m%Yqy*YdP:@mJ;le lڊC+TIKk9EMնFlg&Q5(BG;.PNEl99<{h󳜡;C&9Evq6HrJme9%9F`Gc2mpiγ, tBfj)c)Fb,õ~QODcZvQ6iniܠq#η*L3Yg3rmn֒"Oڄ*9AG{Kh!IE\Ire/`.x,/t4VdRi"JFN~{u]HIexvfE [lmvtYœ VvHl{yW(3 bfVT:^Svk&igeve4*>a_۴>2ODU3i|A|kX;0+ {}ܞ)3 bdɦ?aL^"Qay莏o@??lXD޹]y4c8$?|o||-h7{vK\Ș{䪁J J+d&əz 2r~=cR)N[P dAĶ]y&@R9!y Ӭ*.L)l'>R-/*;?'W]eISn:. 4L4s04 Z)(2ND2u!IBtrq__"CC9SB2s,*p'tq'~; 踸$)$ȋTr'rt\]kct]q ybJ Lfj/4࿍q%q'Q895QKS&fdcN"(vptL%G6(H됣0_7i^E܈$Dm.;~’)v"::/ttG)YvDqwYt tu$}=\PpD 'WZn:+CwgHQ-+.9ar׼(̞gGGq܇9w8qО~;չrk>kCߗ~xR]wMk-IS*]]8Ihd43,~Qy޾|ΏaE]nRJY߬{W #L'E4=:G,ڢr23UUQ~آ}?Yg*569;WW}?b4+y?>7}xh;z79t]n ?3z' ,fc +B]~iʘo?7;G{J}~np?~{8kۗ T縞pnlEz^<>]{on}{ 0 "?h$'l /){~92c .F}~]󻮼o]uAU_f8Ye$ZZ G1ON"2$Ce3NK@5GXԽw9ÈRIȓڶϖBiXNDdGie5[nY-;v f3yFifJyb98orr Kj8IzZFڵYbf ={ݵ,Q3>w(mرKnk'ⳗt({hwL)S\E<\OB"(!{liټ#"6˳m'NrGJt%1L7''&maem9M YIiƉ6;SN*җTBxGE{nڬkyJC)0+u޽e e!mƝYj{ޞ鞞U{l-P#gFM:R84++oLH'BJ1 "]$O( 2*Ozy;ͣm$wE|JM^ ft>_IIir{l/([l(L CȂbȉ۔snka@LNxng)?r^+{2tbzERGAY܈i~o̩)C#[YÞƮYfb⣉:*y쐣…Jd)}d/"Fڙ0grR_~Ye fs5dn= E1KŹۺIb;2NbYVuc/0-ݟxzEXd*a<㲡=C(< eO>vn[^˜m_wĊβzMLY{ϜN3H}Kn%RSh =a(y?~&Ŷwϟ}c;m2E @ H!H%(PUBPDД(-%TPJBIIB4Q(,@RR H(U)TBRШ-- %% !Pд4% )@PE#HP  -MPP4Ҕ@P- P-R""HPQ?<eH}d-?V)~ ى]`rlXA+J N;mZ;."+QvYEٻyvTQtuYqGqזIwQRy[Q5JN'OG( V$N:Yv݊ऱgt,zEqsDw'_n;YB'VF/0g|'MEJf!weI^iuH3-vwg$eNGI9e5TJ'߈$:}:wbFYpVݛ*/(_v/ˆ9r 8v5Yi#9d:+,[w`t6Sp")bh~3IDxTyy^=UD|G~tt {b98ᖗ-,c=Behe-dt%Y:.οAQu><宝ffƳm9BO:?[vG߽6W\rwκ뾮xy~b ^]\^%sC,m| 7i+h[b..GG9˗9Zr6띶Ga*ǘ-]sNng2:޹:>+ )<9zYG=.[7ly^?##;Q JNZnkJI6k;}?/&'}/'}'%/8j)V}>z"4찀Zug_u$Iܟ8찊N҂dpY٧۽dXTX ^qa]zdy|t4G__|_ ~1SH, Kb;VwBwo~ӳxhۇ 'o?<8W]?>x֙#ݑSuMgWDw7w減t2*KNJt[;ddNHݞξ|||on^^a< ϵ_@g=$)G'66٠"g>^Cr t~sgI W ْg=;O }+>CoJm#J&{c34J(!/^Ve'2>gb@eKQo:$]+ܢEj{H/#UaoV s?M&U+}OO]z0|5*i=N˫:.uS}em›טo#grc?|o9np̲er= 怪~￶Wބ%~}>ìK"Gݽ/y9fq߆s68[x*~uE|o⫑˿w?_^~:8fE.~\3i|sʹηE +BZ|ɠ Hhˊ㎊8]]emȊg:./;⃠{i"]e'%D~9W˳#b=~oQEAyYG4EpCf{!x@J&.t!!rpEI S9?2""y"8K9Ȥ"r=4N)"β\gbBPtt_+J 謌[cn~ y Z"dQZI'9lJShqItq𴙹3JwB/:*GNjae.x"mSYaϜO׽''oG?}y\z* ֆ?v&on}m9X 3•/uu0/\AuW_½Dx>F2K*j+@Qf{~g>|K/ {}~}~Uw䠣蠇4ϤnrϓNtѠ/54\?NuVa\ /{zx|xᆲ"?Q<}sٸV,o^؟lϼ?gݏ~s~:/V}9_yMNsEO{J(e27bnqT_o2.;wߤ҂{  rXGCCr!|/(dP<Ηn^Vuy;7hEJh.Wx4T@lr:ԈWEGx՞5w"JyYØlO# !r2{͒K x ǎª(kg\6:$ tQLԾo#:'BrTsW{y'd:Q섓^xVugV]ehY^!~>Y("hL]<[0w87a6mEg|qGi_?:;4=ainG:.O7Cv_b2ç JV]WVR44@b(; M"$) 5ؽ)J_v{ˏWSHO UWy~iiC`h<(x+D񋙙gۆe]m?}hy?c/^ؗ-m>/.?Z^Y(?ߦ*SҜ oDxۃI*tgtyoCϛA{w<Ȫ 'giAw1wcUT_?^qw9ǔ|חӭ_}}'yO{Wo\T@ߏզ}rvEFOXHTpgW>ǃ9[.A~AПܯ-?ߟx?_+O}~]˝aVק+Jן# d3=}~i <(BpQle$qs\W'[vB2ˢ94%Ъ𞋕мg8J_ΨO'HrD%'<鉱:4q}AוiӳϿw5VDgqIG;m[d^.4xУʨ>WDB:^}ӣӿ[%n mNef'N5RPNRk)xr &wjItq>vy;1χ^zb'*,%ywD3vV797{P 0BR4Q q!WGBy!N@yi3K-mV^v}ӝ8'%$>cs4޷}Gr/-"u>)32LUʹͽs+BnGVK#6G+!$ CHLoN:ydͰCK]G2)/Do5g3zc"1BM@mNIh^_{M!slY[?^}?Ԍ=r J/n8wϏ_o3{vU^V\]6yB)blBJ8Ar M)ÞD"C=uǒMn< 4^a2r϶}BsbTF^tФ#u'%g*~{GMG~7 Yz]KI=?~?hyPCUoA~ng].MɺҊR(GBc՜eWk؜2}cNWߝ=!^q:!'~aA{B?z9LǶ2{9}c>>c3}}W'=JA&!{~U^~RDC[_ RM:.={=_.]k]n濟Wf{,+`~ʣjѽz-nv?)6Ky|}H'"=şƿoNoo{ս^{q{_3~ =*xC |wp+u;a=eS>]>oύ<~~?=;^×[c:΋|y( PY TV1?s ;OfeMi=T9̺:;;9̹><C]g #~Z*"+oݘ@yNF0OL84K:βݶK.ڊ.6Dۀe`41'7)s'޴9-)IJW%|'e}bYgGq-Q'RRB]s:! _d1G%*ZZ"Sl30hB&sT*Jb 4\]G_*( $UwGGEpqqBVYV:N-3i)ibJVbYíSaIEJOҀ&(YEmEQAyZrQݜYtqHFVi"EtTVʿQw~".(XPwMJtlGM8QyQחY{h;%9߳:X\]%N۰">wo_׬누8#YYe~3ˈ;..*[ְCpEMn8v]G=|ȗ^/ald+F{t]fGG36rM(zzy>O&n'(XMs2ѧ.97"wѡJkI!)9(tefu>y0#"QFEARP!A%P>pn۶.Vr2x_~}V#T%?=I}|{~69/ҏ}ة Ӣ+'gɻnfأQ(!&EYTQeSoYaκι T `B C~nO53Y_s}}/Z ~{~koQg =n>e<>TWUˈO3W7kF~{w:ǮpU,~RIGŘE\'Kl rܜ6I{֨mo/Kti8 snȒ嵭# 6-rtv%ȶڰ q(ĕޓD;8㼳-$unα68Ycɠ!!GYFe)6bpQg[X8[vn8ڛYz+lIq ԋMMOėQA$^o-mL-v n;VQ;))H21 ?=** ۶G ;'ٲƴ6ZVmm;i{,{ bdV-[ݹqs` וiR2:KmjUE窾mE3Я̣mja9jSvL܈n;Twf3i[+/P/ sBp 2t=b/N+2M'kGY`(P(KP/+Rv:r8 "2m[qnk[M-۲:m6dEfSbkS󬈬ę+ .nM~z儜͇j IobDs3a^g"(/g6zeJwY#nD7'6ė1"TOJǬ^yO8iDh&@QfQfJFK- I35&{^ioka 8Yve y0fIZȌh\?qM(m1id_Cܕs#qhf#, QP_?_ ߌD\%r\eݟqL?~z{3幦^Ҋ( + k@$_ ( fer *9d%"Rw-|~0zrJ % )(((XknjdNdV]])"@(󢼳twE'qo߳ ⋢J:#݆txR1KI@r2i]q)Ĕ?ꤾVtRQ z6^Y ѰnDKVIƆߋ8T c;7y (WG)qA򳋶ՙuw\twI9qwGWEg&Uo|3(s_/F~|#*CU6i}]%dD4nc%$RQHwHEAu׽a5'EII8fݺr:[Dtmg"pN.ӊmVGwYn:NC3DmAA\Pvqt6ۑtۻ(b^ZtHY'uAiN#8JjI/_GI._#b| R([I{i8ytY9NN6;mo%B󽵛F). ' \CtPFEIn[4)~&B~Vz)Vsw %_EL7"^}{֓gZ|mZb|88䤻+vD$uW ýں#$o=SDAI@XPW!>l{,|p|qœ߇.xe(o^nئٷ`Oz>|o{gғ~׽{̮OHE@`S@I T Ƚq`??gtW;{?~'~on}swC\*(=*(H*ߨ{?^j6Ϗ[wBb{}o vpV$\#OOo*{K~}[}}gsssz׬DU@VPa O:pP8䐄9 IhDؗ,Џm hX!YrlTV qlFaͺ(RDAX dyx(G :hbFփGmi.f" d޼RdW.UhZTo螘)=Yee\Md%!S >D}gYfsёYqUcd֌eCDBTg&W2eȯ*޼B|9źO|$ˋfqx[ wmѵ=ϙ<3`h(Msmȴ蜅߶D\>#8pph! {Iݨ}w^{pJ=F~6}_!.faNU:xO ǐ4\+}Q}^sT|ԂSDxdCz1DD@aa}޲aDYnO|Ӗ}^Z?_;&׽ߓuQ$@$$A_gMw '7|{iyl0O^쵿?>=뜷\7 u<9APFP>#l7t2>Ns6}>G>H(Xe$Orz1)zX=y!g8fmsqc;߯-ױz_T4z<(Ce5 :5$@l B gDaT! E%U*JTJUh20(*&mJҪ1 (@P!KXT=XJmEBZeQ e&f*3%fldmi341&iKV3i$dVVVm-Y-4VU[2SXVlalֵUYZS-mUlS4,F٬2֛[M5le Ujmki, RM"Z1T---,Lj+VڶiVTЛmY-l+Q-m -l I4ѱljS 6Y#VMmjʴmB6ʙ*2cUk`,Hce1KK` 5lS0l P$s%RMhU6 L3 TP mV%y)) *(jhļ@, 4S%)D4ڨ lb@Y4l2 % ME" у(XP*"S4T O &%USCL2 d4hɡUO UPh4SJI*hhSF ~ JJM) 4Td50F hѦMЙxUO(B h*2$.m6D=..;ˍ([uGck N9(CkwYgZ'IYeݜ,3,p-:̻ⲲJ[h]ז"Q ]q"gmaCJanI3VZJJ& 8M:CmnӢmgg%$љ-#jN'HmNqNI@v] Nywlaݗmd,mYlܳvL T#h.G- yiOimyNn7)*r8Z†{v25"6i7M`Imfq!vZ3D$k[$jt=hdkEZb1ɘMRNHAGk"xa]u}>cS1٪Q1 (&.(z'X*}TQ?DlULkG4S3ݺCl:";лíty\u-.(䭲SAq)N. #=MI% A'DKKo{ lH^{32>ūmW?|@QIYhffy.{EUD?@KQ:̸::BN,9’8<ЦpQeGGpHZڵY"8wm݅m8۲88q"{\ {ǘrsA'D{vP8+N +7"$Lی{M(|3eaG>Ҋ3鱈Iz[{ykfδ=:9v}$>s4O Xmڣ#uLz:{:hvR*{S>x޼+'5G'½I7^=zɼ];xa}UGɐ!Uը3W?vϜnmϋ|S`D`Gz@=)kJhj'C.:mU]~YGtGtWqQ\ugfR-: RIJFh!&0㋎"+#:)(() ",싊8).+N)-GqttnuIJSӠѩ)KtqtI]viٗDrSK=K;!=Aq ptT}Ҵ.(NB2˄ݝlYnrJR9K4r˳mvu l.YQv)X ĉ5/ki_dv8R9T7P&@^N8d"t฻ED~别cM"NG(tj8ql`'6 lemN;nѵr$A"vY8t#,C;3[MH,#rpl첄;LYmdgl)k[\Ȏ.$S&dE&NdFFY@!kI%u,s2:3tY6#q6rl֎N8k*;sMh8ڎmgkbIy*sItJj{Q$=Jgܽ8Y9gug5MCD Iݓ֎,›Qvm6:33mKhjnn]\KrL *m@;mfG]֢ĨҎ+)AuM\U+R ʬڋl-fuѡ\f۵tQ$W$&wAǙu!Н"t6ӧ+mȊ;J3H{f"fD3euE'=5!($WKk\հO3(Wmn̪F糓k9:ݸKk օ8I}A 9i<=/7hYnH8hL?~xWeLfvLA֗{d E%~y}?}>];{>+~_gz{y UApHA%vyc:=hUB?ы{ӭx9N)y#@쳼5ܡBJgQZI bbC?&'pձfEGxLZn_W!+,;nc#ߌJ#]fd#i vi"es,e'eh3A[>=kKs=&Y|p38 @$L-vʪZ2WmOR C̳ ̎TD ps6m~ iiaNDGEy4n .YKu^qeK_+&Hu8='BO'Ӆf4 POCbyJ!Ŧ6,½zU_K@D(bݶ]CS|}HH}O}Bz%jXQΎV#E͸MAJD,?Ԋr/8(ȿv9}d㓷)9*@J { (s,n[0ąH'fheUR ͓mdTw#݉iE-)( %{e!|^iDXsKIsU^4/] ;I䐐2=Ztzf(Jx_ͣ]@ِT!{1#*`ύ.e7dx2-f hs~ZrA/מv̆ANFPP_ЇmGMǸf]V=Ʋ,qڙCX;;*Ww(Tfcx<| ט#oV>Yc(P>bwnV Ҡ`ΟyMN2}gZauYVUH i8 ?ܽa]YR5JHa5^4Λ,]E1{OCą$ЧQuaTjӚ`rC [Y>~W{_Km@=ΙZhw0%o2Gkح~k]p`iƻ͚XvJ fخէxaʟ<|/W |z}%=m/7LM2M+'snZ2\I`GAIj=sKޑV? ˨e'dG$1J}jM m.(}f31c* Hv_d?O(7կ=33@ȒՂ~ E612| %, Qvv+Mfљ/q0x7iId$4i@+ XW:hxy. ߡ}YăP ~{ʛ1)?yp !}e2zTMy-R[_FMs[Ľ7ZsM&.O/9nz t=&; i: R5]6SGFbwTm BSq7^ %0Y,9jQ׮hE ܍~&S3ygUE /4ً;8MNߢ˵  T.m6_{Tsi fŌ] *G+b=Eيb P~VSjhvYj( hQ^Kڿ4՗1x\[iwGÊcAr}\l稬e6u$j+Wpsa5cSC46QYq_U{AaDCt٬4w䒣9o5<-z(_g4}s?;,#7ndUOzגCᄆa}4> \owj8U& 9ϲ DX^45҈QcD9ָes.$Il_nEq5GA "j[h+BP؃TGt(px_L$ߨsZ#h_skhGyt]W|WK&YbZ զ\ ) -[нEƉy}b(36΋\GZ*FJчJ|̽(i;xVp_/uhcOIo-cMoqXFnW OS|wv mX"CD{DCnޝ#A햖 ±w7/%8;:DUkXr]oi,V`$x<]MD'4Q>vF@=wgyԼ|ᰛ[𓆄V,6סInV2u:C K{\OX)j>KASeÇ[%h<`~8#LsBUt3$7FzKK>ZSo8;K\Z rCV튙'2*I;wiT6IwLq= Im<f687I Xtf3*d7P,]Lzkf8FUUJzVQyrt{V(\܄R?9CފiH3 v"R"mA2vXǖ\WSnma3a]`m uQa/{Dט\nscy42kq|U&s^4J +my|$+M鸟-6(ž+tO8gQV# e&9CtQyUV-sj%Ck_=nFfXpSV5F]Q1\;*(\׿>8óoقsLkEΐU0GExB/?:Xni᳌VB8өjmtN8d:v VnQm#.[(zI5H1c4r۸S:0fsY UΒ\[ȃ`G0>b )=Xh 4}J}>xEŁ[DyQz^嬖4{\"EZq%5~@MoTEBٝ)0 ]&S[kXTcv֙ƹ4 q8]$@`t[gt!;/Xr7#|VgKG;McA'W1 |x^eiv%A@{n,D[%kg,[o;V lXNϝ{mb]zxq;$(_u B;ڝawyzٽ ^lޜo[ZMj<~8 39":DK8P7F,jb2C6ǑN,* QhT93]vΰ'iNG8#s3JjSنw\;0HUzA#PY~s+$%^rX'8whZ ^jCWT>gH`SɆ^([B5.P=b6S<@-%vj=~C~5v!JhCeXghvT'7Ib&UV(6qzpaoֆcz% US6qiP6T@c!ӷ}j.wʩz,u)g$.|':RόkMX R2M.XXÜkWl"-MH*t#'=Rg#x-y=5d- jg3+ut-C|NԷoU&m{glejq3Gtr*~m\~iDhq3cY{}ˡ6i3a?/{q6;uf^ر 8 H!owvbm:f`gRBG_>45j[3$M4Eeš:LH3fZ͡9W3^I->t@{84b+gɰ2a-7eΐyTT՘K '73Oio7p"~𱗋8C0JmnI[M{ Pd b>S_t{MiFhhJ\5c/btw&#rR JP_$:ְ(jM } Aʭ`Ēf=P:4)ΤW ɟy%骽)To\Šk,W_lp?4Uj; 6s_p1߰n@zY"Ć2f>+Bǹt)ێ– 3"m-;/>N]s'C]:yҎ $].yUl[nVI\2B&5pj0N_!S_sךL\p܀!T@;^`r}rܴ6 PV"}UB>^ KE:fV`ž[PZT7eܦ.a2 hX3dN d[ХKopz9\$,et?V :+]S~^ZF#,a`lmbSv"拊5^8鶱ZtVX>=>2^`sLdb 2Qdl/aW7ܧKbT!|PåGynڗT<#*jW #)[Cj;㕎e8kJ.MB>V9@ENg|-Z|¸H2ӊs\z-Bϸ+i%>jӑy&z#䴪K+{糘gC8˻ C:qmvQ:m涜 5.^qS]H{%;j> sOYK\E qB<- '.SBp9_CpάeZZ{jw-LL"&uӔý+mew/#?Z -m&],g X0kLBG=ZRO.i b܍šH &g赗31bx*UQ(kvNoo5n)|Š͓Q|/ƴ- 8=̰R<ۜDs<\8YRvPݥjA2ە=XmjG+V2^g lJ|Y»Żv^( q=VCe}T񠽫c8# HgD{<]&q.׎?sTkb3a6_,FS>aNɘ\@} tΤKKJ>%1@96ט&d'PU%2 |mVBϨW'wprA& %Zb޵UxţᆽȲ6+w]4Na2殆Aq x)^ {TDٕK~zF8nۨ 괮'Ύ5H6CD퇑m#)oVzm* >sg[ݯ\QB2][-ѸL.uyzYU}B*gק ; xh$ns]iJݮ>dR~i@cM]ϴ/D[1+N{*ӗx`&~V;6c;QeL~u '\#8kҖ cɔOy= , &ݩ0 y̰z -coQ g凕| 1~z| ߅fhSB)^k$z&i[(&Wڅ YnEu$9AI'p GҶ;XՆ:8S~c" /#z۝XWv&\kjyI0VeItS+} xT6X i0mi \W͹lϚVobp}9Y8M'EJi.,Ou@ucsu1v_86:XJ!#\X.)$T:]3["猷_\L\ ÅZ/OR>Oξ:X^>x^W6X'վ73﫟6V3̛O QqxC-ЕJᗼ1k69#dyГEٵg%Z–DAh,$K'(Ȇ>յbeY7WoN)z3R9S7IgߩtqOc9  jk@Ƥӻ>nH5;/ߜQ{!vxg C8i'/6] 0*{H 7~tzF|jw`}+ +f21$I[+@Kk>5>^$..F~)ry m:+NWps8-Y%H/ۦTtk(8F"O Ę/0Wu{H5&/Ѹz ѭO^DҦGay3=Vˊ7Ma{ؽTKSեXdUƭ-)@RwLoU$˱_0 yy'OPS7:J^/VEsӝ{O5Ӂpj=o v$-vjt@#8/# œLbWR c8} Liwv>8Ke:a> fgH7jJrQZC}Z'I nTlA."ߛ=%< !E+ʉvz^~Jy/NәHv# $'*B65uQYd%э 0i^̸ß>R.o'`z~60Q(s?C,N. Ip壢U%3mk)]CLf4QCUC&0q"jTD 4a%ΖiB(ɆKC6\{{Um+Rmwkah|7UmhfXvӤܦtۻz4;_qx % e'{ܤ BaD!dLJ-^CP޽ݣ%cz36g;V,$4dvF' ׺'~  x=WhT8RQʧBF-JX,wK|iN:wGiXWtXw4M`_aǽ!]ۖkqPkogG/f6s2<Жc^Xccz rrF ;L='BDBQ*}q< =/YO|g`mHfT~*Sj1b__B#7Db_#Qޚ82m_f.S?z=/Ґ[)}}s>a$,x)OؼTK E=6 &a=L;'X RpVbڡ0a$ϱ!+k@rW3Rf_*y5\`6h6 WJ:l:OvTbc* gxbNU>a&GZ@'H!g [cK$}R tPw-oG)څ?bT;2r1X5^zؠsWji|܍ޤ2{ca遘ٸGjw`qCmll6o&iBp0j#b⊄K?͉2NjWӜOO_,Yj Ь^٤+q`)!W)#ĭ9OpNWt+VqL9Q\(/jwf_]:emb*"˔*B rb_'7}Ds8/1? d6Q=j,{h=S5U w9qNC㜻W۾>(?VUJJbz-t\RĽ$mE7oWq;qeͮՀyq nqhrbR҂c9>yx<+]_JL2X?ه-Z3ytٴkcS\NBdw WMWR(f|֬U} nlz ފW 8xbF<,.Nqܼ\G=Ntp0ȣXD;LDw׻+$wıI!}R(fƏ!nD*--ݱ@g}9{=-DcUK v֏3eFLSxgoæ p!bۍ~rE5_ٓEe 3}~[vLhn!]h[Wndz3Shcf'Llu?^~b8:E< '=Zc0Ch'\~R8ø?cvo>bڑ_X &{֐Hv٩ְOp3mkRwNQviu(y2R'_dxt%i%#"s[qżX6B0bXAEe CTU`)?Fv#׼l$nR6]H}̈́c3[XVok3Dl)g^dxJJt6>';TNzJsw[iSNRs쭱7,z^Kz}D4Ht~-:g߳(PwXI%L9Z^66ԪOP p Љ.KB\Vw{n7ZKZRVWc8.gEZ#>@p"QT%K}RH}x]u _$ZIYfG\׫˝B'[iw1=bjᆼ3yHk7Ż>Ci=?Be/h.06'c|^/cݝ;o 9)3>uؾ\, #yc֪$&\^|35+{d̗ɖZGgڍq ME=rˇJB{x% !{nLOVpwϨu.Kkj;1%*Dd|w!b Y_i }OB{3At Kt3R]% USN*N)χvB0K>󾍆ߤӺߝӷ~"EoT< RqcWuW( c|ڜ34ҝn-יѿϋkZa5ᠬR˳3"7lIk6#g>lNquГ#}97oaw%]٧dbS_u՗Y/^'0zl*% cn-,,?,h;9}Z%mJhQ0DpܗXOvL~61 <\[w?E6lĠVh#p=/5B я8B S,YȣޮNŋ(gSrt'y&q(Q:~Ro'Zn^ӨksNXTo 8:٠U Ns֦וf~\'&ME-NGRG]7YGԞ|Lvbryc^\ O[Cá т niNcn\dk [x:5;'O0FYټ/=3xǘUѫBݚm1//۔SSiqݧ>^fR_@w62;ֽ+gahdb;M*oRLb a$;ip[s j+U3ϓ(sxo4 5M ήɊ±]7:߯_եh=*>x(Qe׎7@Ԯb͎sp +pZPzB]ʦBmp_9jjbs&uXRmm=Cڞd}axbk.؜}~ތB h/,*)k.OyϾ&#^j GE꽱LmC0WYYEޕ>l3'P[gjsΎ6% pIUI+LkgϽ58D !hz`{(Ky|D! @dAz%vhVdF $ ]miH:>LS֙`*e۱81AVWjM D_i9cinWg:ĩ#>5DqJVG8EbX<9|RJkvk͝hr#C<s~DB$<ב+%=;g`3wwQc27MDNwǩ˜/pxǰ.c q']b5P^_4J^!z`V|GiżpJR3jP;CCeqS&#SI`VX1k?cK7,*eIg2$/T{*++ h\O ,OYe8”0LSTge4EȲ0ƑK eWmGwީ4M t-x#–y@zu|,o{K00+ڐk<;0s9{.,wjƦe{ỺW{+HMύv+/-$O+(qS3$5fj e*̫HFB޵^9iwtз=*ei!k$:dA28Yp8yoOCsE 4K;e2ĭyLڑ9|,:T.7i+ݔ4! ;yf;LۖeÍB͐E#LWq!Ԉq|A#@=Ws"t!r EW],a]3B ߫9*9 н1^kfY]|ü ȥ\pg@s"۔>'(pRnZEŵl%g*5H޺փr- cw"k&#yQq&ũ\'cXa۶RMNj>i{op2@vd))6'}^׭=_J )x3FY,zTi?%hkZOXzp5X|3~=a2qaSeꨚɞ{@ī>|6y󧣸QS;~>S_-%ᛝ)7&w>?DႧׇoy}M GzE2P-}+$wXk,%3ÁZqqrk2+';'۲=wY1C':dԟyA`q%박=pHڳ n0եb5B) 5AƒgaVT wCηy'bˁ=,Tfu%o%9i,'f֩֫Cgh[mB)/hkFx>OOY#`{4LD >98!sV/;SQpYq互$}8^b >۾ wX!4^Y'b q4/Mu v|@w$i@,|_^kۀ\_7j\>l^Mtuc7FOW]yB~$QoV.Ք's;Tp^\BNyrboSg%H_,50ȺjZz+OeEDz:v%#h1&}yy\ٞnnZ.kfAn ŽP1_I:좗ٱC+~2ssy u{Y HɝVf3922!ۤ 2tTXTϢ ΙC J)CFUS9}QyQ_eq`1y©ZFPz=Z23?}}ޗ3Usb^{v9e`\%ZC~;uy ,jYZ[0 #Zoԛ*[.4?~хszݛ4l[coiG\o!(DP+YD!o m#=mTZ(e _ub=Qx\sRs+3Hqi'_%Ya9jKޛaGBױӰ=V+L(rdžWv AiC`.cJ(qr5BRY|$C7Z},fߙ§u펹|FPd,^{b/XoPDޣ80s7# ! uM}WZ0vq#n$ }uwtISH߶W9Ҫ^1j )m/ KaZO| { wI=p\l w*WI ;Uk 4ۋ&Ķ{nT5lc&}sW, a6^7rJ]BZus"i=^v {QemD ,ZrscQ8ZDpj-lKp)-voVS6,*yn |`-s>`ΓP*|ЬYad%_Lnq滭lJC3_}c#߷DkϲeZ\>tA4sn1i-a`1l}PϤc(RK`swxA/f-AcZ <ܛ>zcV+lcZ \ߋFa͉I#m?^zO"prMLޞ#VK7Owk/=J Mx2{&%'cOYHVIAyxrMEbo/LlwV:ds~2n:JiBN>ZXuo3ҢW箈UTVǣ9z_rk:ѯm6EeIwZH#D|v{1>zöA&bK}3=%m3MWn%BNIZ3 :p>ax0bҜyw n{RUZ>3Ku%sT[VZxڤv<~m{Q}w}بCć9J`'Q %\yBTcJ3m[gϗV\D=`0r^mq+\x`t/]gw{>SphGAכH>':GSxڤUa%2n45>0DyӐ%>JP;ǚY̞)lɓt#o!ꣳѣOh.vx'<@m)N"1U;v*f6"% ˧ܫz)"u;I:nˢKiZ{ p-ӵJ˴)=.Ŏ Y;q_J$`.hHE:Rڬwϴ{d/-`6g&kymqY&6ׇK~'5.W~]Sqc1r{oAsW]>}[cseUCƵ;^I6dY1R.$1g=|IAG*wZQVzVJ{osܧ3 I{_Q:Wcde1?H`bGo,~ _6s! tsIծ]/qêβ3v/\f'/`#kz֪J%P \]^z3X}EE*Jy5Ó;aV|ۜlN=wN ;Klz|BTBx JUT˓:CkX/ U(nց\G`"g*YtmȜ4؎k>}Od1Ғ'1Momd˔_%>lqR"~UC%W}(<|oSTG/bg˄ԓK͖P60q/6k]+l?I5V Kag/`ǔ㱙b14Ҕ %{a!ukϻ:Xm% s|kE09d`_WqǗ9 9^}T6IGC CY|Vi#ôwzX:U(H;!N?R1Cc~aF ᆎ7*''@{&8Nijnufc&Vً|TՁR~{D  U`HICh9EhM;`|cۖ>&ۿB4kq -@> krֆgK :oz (Ԩ\WoSİO^ X& ]4ն/_.+9> ͢ն^blo emsI+ -nJyqڑ[;,ZqSbKKK Nt[qƴb4:RYR4ݓccyb̥zډنQ /}es:8e'ol|sF~FLiGx5p{q+֭x&x=AYtpmP#6҂oBA+ҭ|⹼@+i9>ns m[uKD^9釩%qYPOU9h]X/'۴M<7rF`kw0װN@5Чzܺt [sI]5ǎWF^Ԅ^7f4PMjp{( } ap3Y,+!j+rz_ϲpowڬb^q %4tuEؽ ;>(t>3'as? HL򗭒}b$ґ! t`Z.H AwY%6BO9^{uHhN{ 'Z>Rtin᫿1\u $"L̢*-?*J_N͓/4פryD')!F]Wv2iA&~MZP_ mĝ4QfթY8H}\<8i7kɸu"`v}x=ZZpE"=xmujgDTjկQݛTh5Z[[guaV<%]bKRvd$5koͺ&L= fڦP4aR oU:$S|nZ^-wQ[&-?h.dotR@T 6_dxJ9tݣ;:AdvUp]+p-w3'5kVehm9HoH'WS.hJPHaANvryJ¾nWU6!<B򿢜T| `P|6cKkcS LZaGKr[7"[0l^ҒhvC~:KXM9=@>F&i}cc76s3^Q32-RgT НT3n,Oir&XQ NMڴguUH{Ui'˚Ҷ&⇬o71.dfB'lRmIC'jT H)7O5C%)֠m#x,KUA9=(Ȗ:[Z1b9^%kԯCE<4 8LeOs}} P1 9nЂڴ1ɴ)tyd Z#cn%z(X% D]E%\Ref :)4A!D'} E'P8G߻X{Ky[Ki8Ds {u-Z,5qIV1oSWiv"`QI~9wۑx EZoҪbV {mN(4Pzyi1AbG_5X_zSйb/{R' O^ޔn`2kyR=k&ﺣ| "/^2 h>SxkC{ m!= T(?;MNMC wKcOU[C{krCoŧЖ&v/\ZvYεkSImkK7_I}=\p `K^2ЕiCU}s: 9CNX!SOq#< w2ԴE-JU}l!,٥@ܝI頱?jbzQ.QI N*hb!]57G tC;^pyZM|2;$B|zoOE0^QT8eٲe_2R`|Gl99h&5j΂p*<+&;|[ױM)+ip^> Kч~L[IWˇ4q |){!udm|"ȹn2ChXʋ 27ynY}i@SŬ%!M#+ս5Ip uj EVkn ]D/T83yM!η!La4OOR~NQ8㉝]4&R\M!0K uiRw Ge0% \]\Xy_tLdl0AgrYyᘔExhH{si} [oi_EY^\#rt=Ϡt[[c̹x1[vyAV6 caӌka Xtt.u;FǢڍܫ$y{Rw(xWx eYΛ+!|%լ3_Qe?u Dnي̎7[K\Y\fwѴ<[Z =rvRfpBqš9t v=%>i1˷%`#sHaۖV5VHF.+_ 3o,YL9.Ï6뾶7{a,-Hگ ^|&^ `Р9HΘܳeJ귔46$_GMU3GKTrR?^ "kM{N18u N}};x(]ı:/P ܥlM^\wlV8j}c៖h]Z浥 >rLS *! j]ܛ~^aYnr 5Zaf p$]E|PPz}}ՁD˜q>kg*wPokB|j <^pW*eqAmA>hp C G5)[Yvgl=Huq*Lw[YJNkhkRųR_5MGl7'U*C;Uٱ|%.yEPF+ymbp1w~_ŝW$;Գfw9,31mwH]v&j9FLZ aH0-~bjo ӷ4zq0.a|+Q}8LFm ~y?F5Ty{AtۗBU,>ԡs%MFv +w] 3kix-:mKA z/V=X9pN>@^=5ZJgm4MZ`ɳgQ]e8R6c]g@> 7_9o~GBk6堬Heӭ~G9DM(4o].dlofzT,.XB۔(bo =E5yy-9<6:5*.nl?f0R-7kH-$lS+]9JpWM] ^XKח^``P͡^/m2JT釡|x 'Dq 5"ZNoK` q Qdulk*}J@wU/}Yќ)azOlO\FLhs/ߧAlOJB:,`&%\g_Z1B [~v޸&VJl)Tr;U=}<Ь 7D-۽F~ۻ+ZʅR|ŹݧE6~c1sS.[3*ɹȶq:Zƚ'Aum(7%>2SV5;fv ͱ*iEu{ ]}_G 0-P0qZ4MF ֌bޅi1;SǨY'h}PZWz>2lU4hK95آ#$Mj6.3n249 Y f :g%8hesSB{a)DOVz5*Uq* z`s|@:8.}gpFߤrL%Ron4Q@zU>x)o(ȨZ 2ǓKP#&odVs/Wf 2N\[ZQ1LB8RGoszΉKhk¾chWZx&QPXғ`q̂y')}WɡhvX8 ކy NWSMGe!{$1 JaBw%I *ú}W q9C.Ѭ(mG4r*yx0#inbZ^Hohc/Ģ'㠲XY7#%w瑱v]ﲱmF@<[ͪemK{Ԏ'":Z)m /%FBi4 nZ5ܠg8fg)3OŞ^O;|e"2aC7m +\NJX)rYwvm*Z*-W>qEՖjkAfv.l%a\ڴħ,˹q%}-0lyoas|=/^I>'@]pj 첖7=N'N܍m}(I_SĻI=h{Zܷ~+6x&a17M@Ięx1YgI>ͬgI%kC {)OS,ʈ.}U,lzu3J'[SK}TP/!MCQS831zMO 6?.|wG'l]X؀mD|z"OJH1.o}\i 9wC2lv̉tTs`_,KkHYה֝tGk slyiڔfKyraY~ t{id6cA#RZ߰.KCs=`yWݒYĮio$ zK30(9hDԒ_/c֝ qg`utb,0<-|Yv>C56|clK &ҕ ʬ]N{ʶ&%mQ?`/$;79bgZ+3RG5XR*pbh&@F73Gsɫ%%7i v!5l̫kJ,o iOÚc'~mFOlv`=dk}s{K83"'50lK-O_ggŪ.>P X!CrBP@ 9!)nZaf&sy\wA;׽K\diw1v&wdlc[R|+D߿&R.dqǺai {6's`rn#5/#yy'/1-3u Sb>|)lfhf܎m3{nxY@%nN /=:`m^gOg:M>;Mٴ[MU!g%m}@!@,HFҌTXH5:Os&]l6|YOڕ^xn8u{YctʼnV-ѣpيv C?sc/)O4&ȌIEkv:}#]Y,òO};)}~g 4+̍`m8 Jܻ)1~$Fi%J<,dP$sGg9n}Zm~V-?]t)ep{u+!5_58{EY/nٍkaЍ8.uLmg ΆRif/C+wtǽMV,!d(MH"CMϡ} Ńq5/]&!rPd;Gyi?Z2G|$rGa 7=%%)?tXA6 "x>œ|S#&Zvг(^:N*$\xz{MW0oZ=oqrՉi{ }2a,pG93(}pN-&+sxaF)+v}}Cu5 b1™™ YOlь>8fGo#-Kh~:G QrH;l |* (sIo>GTzoH cfw4 tBI!'t:Mf?Fֺpo'x/0Ѝ{K;&&p8D. Eu(uy~+G+e o' 6CctLtN<6U>cO X_6%p@+A$<yGARR(-'`5~=utBHV:|gXL}mtP [= ?9<dUE;JK AQCKQ1~={".V] F/Ava)ylpnalt@ uEdn>g0/m#:\;Q 4W PB Hcm"8i^Or9&OWw}km8D>5rA@d!zB,g5r#׭8?%uɴc+1C87FY<Ci0=JȼDch_Z׭>!KhՖJ9u!jlĦ/kɽBTuܮIeU4kN *NtyZ*JDL"AMvQ^lɈtY-zL5Щg>,gf ܋JB'grL=Tu=[5Up|{D`6iPHlp׷,Vù2RML4I0䎟Co}u;zU !K LJ2_TֱŧHzia鈽zV݃XÃuW"Jp:NA㷪H;{|aNж7;?ĞV[y_YLRIs k2}WBX%^_ݻ\pVQԞ1Q:C|k*Nh*tJGM۟~^Ai"ʺ;K342mXP`J O)gbuP"x'c89Ko?A}}jQk/ |j;p;f 7s"p41̼ gB%77rP-Zv@g^x0?|E!_4>ALCj^p6L -5p.KS,Ƅd:e3j=氽]O}HN"+&|sضVۖ׫_Ɲ\wvMihwݽHN![ҵ)ę`!^iW5~3Hp8mVPY&O\,X 7{*B1F4CҬΆTR_N2㢈Yq"p_EbtV#= 6wƒ'HQoae j!V,pb[@P@~hRj|Qі6YEߋK觝4]^ÕwQ~bCLSV%VKJ|Ué$J^Tv$}FVfZˀTo7RnNp%YXTzq\zɇϢi+jwE56~J+Xmq˂eʹaoåVœ~ fMyD+-i^#˵&-b>'0 p5Oכ̳Ywh`U 'o$e8OlfQf(R=I]}ո.fb~nBȕIDmhHo`*CK{ڇ绝g9U8Cq/S7 0 ^5wQTk4 "ޠ5)B$o&&uk ccLWaWqѹFM)E:AHCB@~7Z >yPEx)VX SX}bxI8L? -K^'l’K~POy# u=/)Lf{ 髙md=XkFo4ᘌ-4 Q%]E ˌJneoɲj;R$V'S R><"ڞ2 ׯ?I$jZǛ踳J!Re')c"w`2ͻpj'hyLf5,xLf'[i%޹@SWU r)"i wz J3k ɑ .`Б6iumq_+J.J"Tazäy7X񇩤OL]4;HuF=h9߯TyCan6ѯ}e n`$'aˏ!"LpZ̬|8N=_X^B(*>pM.#gklkߴF|:Ue-?} _]|G q3k.JH* k#RB],I5zg]'||iC~r=ΥԊQqh, xob3O|gBȏ?A"4eď >7zv G!J~)'qkzz [b=^`?`iX4?~?C?R)j))K)(i(R]wqG$]@w!B6t!JӶL..$*(J :.$:,:˸;4,88Qe6⤊-G]DuEm(*2IDtw9 <9tqZ$IigdPVwXTqAw3\Dq㣥E]YS_5.#nrw$GRv۶w$PNB n:: iٔn²b+fQ'[A7&tW{dWߺxU^53]=+v YT̵4ٲcvv`,+;CZH4ӯFZrt$uҌ4Z$fQC\;$[nhcUmi "%Οjr9̴D$ӋM3A Fv6lMӌ4YbI~\R5DH; C/m4,kkm1iGIa6NtֲLGlu36d"K%!v=X,'8f kjPD]>PfVI'!a3ʲf Ip'6m(3pݔRJb郦x 3EH;IT])˵y̼.Z!\:S" B'4r%Pf-S8iۻnE(6TgbR*+z>83MkSj]ݧ]m:gIxķ"#ޥUdG%j4@eF<}_gy+z>?T(h?.%m=q96^/k %YYeۜVEeYGTVVwق4tN %%F+!gY mFV[hem싐=ARt;{VsAS;'6OckOA:x9wp񳣺yEW ל6݅1Q#:(O{Cخ*:˼*.."ʾVP5N2t)4U{DhЙ#EgKrzQ5D,Rrm˽(";m (ǙsO#C k9v被n~oOr|>6NR5y? ?>ǡkh"~גiJk٥~DC<+HH83.âmo;)=2(.qYYo=LJŠi)S]!_kSf,m;/{r\AJ<\ZpĖn'6;3dvg:BfnD7'tWy{eD0q 4[g^ޢVP%"3s[!;l/KN8%)N࣍w͙D!n58^[n34 fD2Bi&!(d5jl9dlk0Ĭј^Q}BtgemvH6,Q>WH1"&MI$# H}N蘞h3NE̷tDMME'Q%K7I98kY<(a=7}>''DUD=Os٨ LV#gIIEL;*ά+:֧4!T=&IBih큢 !vk^⋺_/".)8 AAqKMH품"RixM(΍==!E(Z][`^3"/)޻<$z:tuA-`b\<'A6cS!&*Mtk6) zu;(iFwaE7%f۳δ%;^řKNڂiz5@ճCA4ݢ'jEݝ!s^]za'J45Kr0Nxnzۍ;#%i:yI$iy_FR7s^v.JO)2ڹ9j#k2VFT!~{/f%,=oY&I㧔Jbz+lB?_NO?i_PxQGZt8'YZaRB;/&h_Jݔ馯. jS 0z$ן$iYY7}n{;h#Zo^ph.#sl4>f4]/MŒ[^j[=ƅ%hfQDA<1^,bq>)CjRR 6:6ݓGf P} L=tz8d|a+,z)[7WZyXߨgP% ,@ܽRsY'42޳"BS=\7}x֊d|e'%Ln Kɼjϴ|@7@ɘs"|W\odCp`ލY[/)CoP7 8u?bԥnMM*4Y{> kV}ׯz ay1*k$05CbcT ufd9״S\4sw<2"~O]9}'s/H@S3uf4DZ w/ņ0"]oFg^mr09 ;"bI)Ȭ5gzfai?B4-1}Zu5rMZ^{nIEr4{$;x53fZ1n5Y&(+t~'yLW2@JEћډIyQkop{;TazGЯs `&_3< -{ ]s͇[; U=ܭ%fF 06Iv`D$#L5*HiC|9ZGry:}+G@i 繞%n@_XJٟYӳ14@*G ,?^[€G-絬kL%a3|jGWۓ,4- 塨[>ه=ҸiIZ}`؅qOaC}L#gZrm%[2<9yqK)5:_{lif8ڼܚ(asS(@$aq/RmYΘ s@B$|ͳ_/f2_IR.S$wZC,W1[5%aݤ0co\ %ZNt66`(>t8gt+:Zf!KiχڲݤZ-?[ֺ9MsP^S l|Kdg]$t+'v&~fז&}-ӧ=!7֓uDaVͰY/I!m+j]=փ^yl)$?}w*#W_Fĵ=E$ZG@~ JW;`zga}exbf0쏊4?m ګ k(o8qgQ0K =o3G,76zQ镢;_u%@7; jIƶ?3W/o#bR=Bu'K)CF$i^!K4o/ݷ,%=dV6%OԯzK@(g]5CMϱpp[T~Z$1x.c\s3R"۱5䩇橓X5աm"!'>hEsUJǼȓ K,$! ,!5'Jʪj!rtqUD?:"ObZK:"֔V]uwIGЀFD):<ä ;tkqul.; .3+;s :.6EM.r@ ^֯kWۓ32qҎk ;N:-$DʒP:s^$pV֦V"/nLRWEcÛ#ag>p(18lmC (($tp`mӝ+N[Y's$,wli:۱{k0_zg׬PӒ37^zmhO/jU%i؜+Fkz9DTy=VITslgpǂj",<ya=I}/RK6GĤƒȍ֔Xcزʍ;1;l1LyjO QzRN^dKX67#V>|UO*'=SP>&Z5 !ҽJJi+..*2(mvptqEŖw%9\EwQĕ6"gD;-wqGm2:/ ;EC(+4V՝ fNB:8FwduyluDWc]+ )"!Ί siY2VU]uwIR\p\D:mͥQ ' OuBGY5Yt8N% t.N$ȷkvt]lmgT3޷EI mʋ1R"LE.kc&Yjlvq&egacSl:MuȈl(蕱ۇ4ҼRGg$̼Mu P=9)VͫTy3ZJbZD؍?쇞xY ;tyI^̀*{b*$ *"u9PǺێm~9Dw"9^d \9s[fі0;9NͰ~x)Nt= 6)Dyy|H)24 .vWdV]n3+k(EyvIآH⸵YW 2^=@*a $[g2 a Hiȡ)N]5ӴjPfbֺ]'Iɮ% M:4inExW% f^ɞDeGYrQai+k=B'uIH+)Uu=W])qBI^L?S!l%QcǙAS~TQ? N;v[nq]svyapu9f붷pdB:N"+K8*Am :*.sͷYa ^QiМ7GrI'wNw%YҙÎ("85SV%+v+I1Cċ#(HA ;:(ڛq 8I^Z) ݙ8܈I³EQvpG;k:"Nqm6FJ&ہO؝k$J$Fӂi l$OutL-DRu¯)4m%)vزwYEP{m܏I jJ;ktޥl܍Zus yVatRjfh{pՐp圅Ei6Zdk6GaUk(U(]"#K%4R <ԼR2IkAzatsJ&!Du{\0xlP{)43 7{ Wц'Y $[V>tNE=/xO|/|8>r Eˢд'ife(7UD>Z"} Ŷjju[w{qQ<68M(죬mvSn ʍ9#E=jCuT#:ݛ(d 2OuA!')HC!精ݧd$R^u^_nI%[j;+˯*mGg(^yw}Gp>|܊$lwھbT xS$*BED#+uȃ^2*k:^btimK27PP^PQ>m*!C( J|񚢚*fr%i^YVvv^yyG$I n H;l9s+N=Nr$ۻ3n,dNG8mi8G==Qv28ki Ğݣ'^ ध({63rs۷2pB(",3YٱR=v$Q"Uh[PE^$}Zf҄<(Q]pԥURO/ ;(e&˶6̎[ Ȋvr,r+<h/8%ryC2{HeN1qىY3I*# LmVcfϗ^Z:ֳdgthbۅ y^ e "=/= ==J)<=*[W*Օ& Lr>qܨTETxyn94U\[\HE%g;6(&[ln͕]7bb>9x@@=@PW{W 蒒+-J䠓K&eR.Y'vSX%;ґ,"FYhGA!(82chq`358NFd&p91i ,J8N6'g@8&v@-)Mkm5QYֳsAvr.D$6ȓB% r%Wg x.ً3;D2, B֭vmm;lie@u@HL/YOn<96FYtݓ-(DL=R"<+bPDEU uѪ£$1T~'gK͎UfL8[iڶ 5㲱!M[Yh v[1O23yme{WPR)dfnp6ìK8sϾϓIvPnuyU}痠zSYe650izA5(n " svmٗ 1Eo{#;rdZWAz':wX8gVFEssΘOA*+H3[GjVyɑE)*Ok9SQJ0{U y%ѻ*]w/wuѮێ2*z14h3EF^ib.LWxaASAOTA`ꂂR FTC#.; .N::ʸIZ Jِ5Jt&!.:(㨮B8;舻]zwEEIQ]]u%EeYvTIt]qq^X]m$.:.(]DtY$eb\IE] m"E8ITqDqܝgPt벴#( ERdF ̳#;*;f ֈ6/+$!Ǚ.!8"sfէRIeE!6Q9٠3uw'nUH]͍Rhi %YyQ$fe[jE^RAx!?1ZzehNzS'lLJIH,m-\=rnqf>dq5*/BZtEa󠈂EIT DB@TOtUHDu@@!$15֊"tٸ㜥;K$Fq-[-nfslVueemnȻ-N3˽yh<#",rygNݵmZUekf$i3;$]\hMww$c62v3Mg$ HfYMDrSdV6ַmIgAqY$RnGTȽ glfx2ۡA=aa*Ͷe&T-Lt햢:͐qVtD[[n>};Ύ&&ldv--s7"ə Um*OBmŗh)'-o{֝f&r\=Ȫii+ΏnuHѷ0Wy>{EZ`wg2vE{m5ӤZy՗I=Ҩ#'ě0{XgjL C<8ygB$=s{9P{]g.tFxY\6" S9!ϷFq)fDݸWeE|PxXDձ4P,,) zT^UTD@~nfͯkmj+B~ (E|R"(ȈdL2B¸AT5  &ZW{bz(>fZdL@H/]ѐ P &ak$Lp Mp6jdPC^ /2DM o+ɓ=;P?4\D" „— R(@ \͚-+dĊLH$DFd03V/+I'F-J,PD_1T]81XJaak{PWb(IfDE0o͏X$(Ƨ~UM(@l}ڔnd1=2zx JH sDafex/NAMESPACE0000644000176200001440000000374714415731711012433 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(afex_plot,afex_aov) S3method(afex_plot,default) S3method(afex_plot,merMod) S3method(afex_plot,mixed) S3method(anova,afex_aov) S3method(anova,mixed) S3method(fitted,afex_aov) S3method(nice,afex_aov) S3method(nice,anova) S3method(nice,mixed) S3method(predict,afex_aov) S3method(print,afex_aov) S3method(print,mixed) S3method(print,nice_table) S3method(residuals,afex_aov) S3method(summary,afex_aov) S3method(summary,mixed) export(afex_options) export(afex_plot) export(aov_4) export(aov_car) export(aov_ez) export(compare.2.vectors) export(ems) export(interaction_plot) export(lmer) export(lmer_alt) export(mixed) export(nice) export(oneway_plot) export(round_ps) export(round_ps_apa) export(set_default_contrasts) export(set_deviation_contrasts) export(set_effects_contrasts) export(set_sum_contrasts) export(set_treatment_contrasts) export(test_levene) export(test_sphericity) importFrom(car,Anova) importFrom(lme4,findbars) importFrom(lme4,getME) importFrom(lme4,glmer) importFrom(lme4,isREML) importFrom(lme4,nobars) importFrom(lmerTest,lmer) importFrom(methods,as) importFrom(methods,is) importFrom(parallel,clusterApplyLB) importFrom(parallel,clusterCall) importFrom(parallel,clusterEvalQ) importFrom(parallel,clusterExport) importFrom(reshape2,dcast) importFrom(stats,"contrasts<-") importFrom(stats,aggregate) importFrom(stats,anova) importFrom(stats,as.formula) importFrom(stats,coef) importFrom(stats,fitted) importFrom(stats,formula) importFrom(stats,logLik) importFrom(stats,model.frame) importFrom(stats,model.matrix) importFrom(stats,p.adjust) importFrom(stats,predict) importFrom(stats,qt) importFrom(stats,reshape) importFrom(stats,residuals) importFrom(stats,sd) importFrom(stats,setNames) importFrom(stats,symnum) importFrom(stats,t.test) importFrom(stats,terms) importFrom(stats,wilcox.test) importFrom(stats,xtabs) importFrom(utils,head) importFrom(utils,packageVersion) afex/inst/0000755000176200001440000000000014665070066012164 5ustar liggesusersafex/inst/doc/0000755000176200001440000000000014665070066012731 5ustar liggesusersafex/inst/doc/afex_analysing_accuracy_data.R0000644000176200001440000005104114665067775020725 0ustar liggesusers## ----echo=FALSE--------------------------------------------------------------- req_suggested_packages <- c("emmeans", "dplyr", "ggplot2", "cowplot", "ggbeeswarm") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ## ----include = FALSE-------------------------------------------------------------------- op <- options(width = 90, dplyr.summarise.inform = FALSE) knitr::opts_chunk$set( collapse = TRUE ) ## ----setup, message=FALSE, results='hide', warning=FALSE-------------------------------- library("afex") library("emmeans") library("dplyr") library("ggplot2") theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) library("cowplot") library("ggbeeswarm") ## --------------------------------------------------------------------------------------- data("stroop") ## extract data from experiment 1 and remove NAs stroop_e1 <- stroop %>% filter(!is.na(acc)) %>% filter(study == "1") %>% droplevels() ## --------------------------------------------------------------------------------------- head(stroop_e1) str(stroop_e1) ## --------------------------------------------------------------------------------------- e1_anova <- aov_ez( id = "pno", dv = "acc", data = stroop_e1, within = c("congruency", "condition") ) ## --------------------------------------------------------------------------------------- e1_anova ## --------------------------------------------------------------------------------------- emmeans(e1_anova, "congruency") ## --------------------------------------------------------------------------------------- emmeans(e1_anova, "condition") ## ----fig.width=6, fig.height=3---------------------------------------------------------- plot_grid( afex_plot(e1_anova, "congruency", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)), afex_plot(e1_anova, "condition", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)) ) ## ----echo=FALSE------------------------------------------------------------------------- load(system.file("extdata/", "outputs_glmm_vignette.rda", package = "afex")) ## ----eval=FALSE, warning=FALSE---------------------------------------------------------- # e1_mixed1_v1 <- mixed( # acc ~ congruency*condition + (congruency*condition|pno), # data = stroop_e1, # method = "LRT", # family = binomial # ) ## --------------------------------------------------------------------------------------- stroop_e1_agg <- stroop_e1 %>% group_by(condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) ## ----eval = FALSE----------------------------------------------------------------------- # e1_mixed1_v2 <- mixed( # acc ~ congruency*condition + (congruency*condition|pno), # data = stroop_e1_agg, # method = "LRT", # family = binomial, # weight = n # ) ## ----echo=FALSE------------------------------------------------------------------------- xxx <- lapply(outp_e1_mixed1_v1$warnings, function(x) warning(x, call. = FALSE)) ## ----echo=FALSE------------------------------------------------------------------------- xxx <- lapply(outp_e1_mixed1_v2$warnings, function(x) warning(x, call. = FALSE)) ## ----eval = FALSE----------------------------------------------------------------------- # e1_mixed1_v2_allfit <- mixed( # acc ~ congruency*condition + (congruency*condition|pno), # data = stroop_e1_agg, # method = "LRT", # family = binomial, # weight = n, # all_fit = TRUE # ) # ## ----echo=FALSE------------------------------------------------------------------------- xxx <- lapply(outp_e1_mixed1_v2_allfit$warnings, function(x) warning(x, call. = FALSE)) ## ----eval=FALSE------------------------------------------------------------------------- # e1_mixed1_v1 ## variant 1 ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_e1_mixed1_v1$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # e1_mixed1_v2 ## variant 2 ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_e1_mixed1_v2$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # e1_mixed1_v2_allfit ## variant 2 with all_fit = TRUE ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_e1_mixed1_v2_allfit$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e1_mixed1_v2_allfit, "congruency", type = "response") ## ----echo=FALSE------------------------------------------------------------------------- message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_2a_cong_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e1_mixed1_v2_allfit, "condition", type = "response") ## ----echo=FALSE------------------------------------------------------------------------- message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_2a_cond_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # plot_grid( # afex_plot(e1_mixed1_v2_allfit, "congruency", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)), # afex_plot(e1_mixed1_v2_allfit, "condition", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)) # ) ## ----echo=FALSE, fig.width=6, fig.height=3---------------------------------------------- message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp2a_main) ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e1_mixed1_v2_allfit, c("congruency", "condition"), type = "response") ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_2a_inter1_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emm_inter_1 <- emmeans(e1_mixed1_v2_allfit, "congruency", # by = "condition", type = "response") # emm_inter_1 ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_2a_inter2_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # pairs(emm_inter_1) ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_2a_pairs$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # afex_plot(e1_mixed1_v2_allfit, "condition", "congruency", # data_geom = geom_violin) ## ----echo=FALSE, fig.width=4.5, fig.height=3.5------------------------------------------ message("Aggregating data over: pno") grid::grid.newpage() grid::grid.draw(pp2a_inter) ## ----eval=FALSE------------------------------------------------------------------------- # afex_plot(e1_mixed1_v1, "condition", "congruency", # data_geom = geom_violin) ## ----echo=FALSE, fig.width=4.5, fig.height=3.5------------------------------------------ message("Aggregating data over: pno") grid::grid.newpage() grid::grid.draw(pp2a_inter_v1) ## --------------------------------------------------------------------------------------- ## extract data from experiment 1 and remove NAs stroop_e12 <- stroop %>% filter(!is.na(acc)) %>% filter(study %in% c("1", "2")) %>% droplevels() ## --------------------------------------------------------------------------------------- stroop_e12 %>% group_by(study) %>% summarise(n = length(unique(pno))) ## --------------------------------------------------------------------------------------- stroop_e12_agg <- stroop_e12 %>% group_by(study, condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) ## ----eval = FALSE----------------------------------------------------------------------- # library("parallel") # nc <- detectCores() # number of cores # cl <- makeCluster(rep("localhost", nc)) # make cluster ## ----eval = FALSE----------------------------------------------------------------------- # e12_mixed1 <- mixed( # acc ~ congruency*condition*study + (congruency*condition|pno), # data = stroop_e12_agg, # method = "LRT", # family = binomial, # weight = n, # all_fit = TRUE, # cl = cl # ) ## ----eval = FALSE----------------------------------------------------------------------- # e12_mixed1_t2 <- mixed( # acc ~ congruency*condition*study + (congruency*condition|pno), # data = stroop_e12_agg, # method = "LRT", # family = binomial, # weight = n, # all_fit = TRUE, # cl = cl, # type = 2 # ) ## ----eval=FALSE------------------------------------------------------------------------- # stopCluster(cl) ## ----eval=FALSE------------------------------------------------------------------------- # e12_mixed1 ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_e12_mixed1$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # e12_mixed1_t2 ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_e12_mixed1_t2$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # afex_plot(e12_mixed1, "condition", "congruency", # data_geom = geom_violin) ## ----echo=FALSE, fig.width=4.5, fig.height=3.5------------------------------------------ message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t3) ## ----eval=FALSE------------------------------------------------------------------------- # afex_plot(e12_mixed1_t2, "condition", "congruency", # data_geom = geom_violin) ## ----echo=FALSE, fig.width=4.5, fig.height=3.5------------------------------------------ message("Aggregating data over: pno") message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t2) ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e12_mixed1, c("congruency", "condition"), type = "response") ## ----echo=FALSE------------------------------------------------------------------------- message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_inter_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e12_mixed1_t2, c("congruency", "condition"), type = "response") ## ----echo=FALSE------------------------------------------------------------------------- message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_inter_out$output, sep = "\n") ## ----eval = FALSE----------------------------------------------------------------------- # e12_mixed1_t2_red <- mixed( # acc ~ (congruency+condition+study)^2 + (congruency*condition|pno), # data = stroop_e12_agg, # method = "LRT", # family = binomial, # weight = n, # all_fit = TRUE, # cl = cl, # type = 2 # ) ## ----eval=FALSE------------------------------------------------------------------------- # e12_mixed1_t2_red ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_e12_mixed1_t2_red$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e12_mixed1_t2_red, c("congruency", "condition"), type = "response") ## ----echo=FALSE------------------------------------------------------------------------- message("emmeans are based on full model which includes all effects.") cat(emm_e12_t2_red_inter_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e12_mixed1_t2_red, "congruency", by = "condition", # type = "response") %>% # pairs() ## ----echo=FALSE------------------------------------------------------------------------- message("emmeans are based on full model which includes all effects.") cat(emm_e12_t2_red_pairs_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response") %>% # pairs() ## ----echo=FALSE------------------------------------------------------------------------- message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_pairs_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response", # submodel = "minimal") %>% # pairs() ## ----echo=FALSE------------------------------------------------------------------------- message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_pairs_p_out$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # afex_plot(e12_mixed1_t2_red, "condition", "congruency", # data_geom = geom_violin) ## ----echo=FALSE, fig.width=4.5, fig.height=3.5------------------------------------------ message("Aggregating data over: pno") message("emmeans are based on full model which includes all effects.") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t2_red) ## ----include=FALSE------------------------------------------------------------ options(op) ## ----eval=FALSE, include=FALSE------------------------------------------------ # save(e1_mixed1_v1, e1_mixed1_v2, e1_mixed1_v2_allfit, # e12_mixed1_t2, e12_mixed1, e12_mixed1_t2_red, # file = "development/stroop_mixed.rda", compress = "xz") # load("development/stroop_mixed.rda") ## ----eval=FALSE, include=FALSE------------------------------------------------ # stroop_e1_agg <- stroop_e1 %>% # group_by(condition, congruency, pno) %>% # summarise(acc = mean(acc), # n = n()) # stroop_e12 <- stroop %>% # filter(!is.na(acc)) %>% # filter(study %in% c("1", "2")) %>% # droplevels() # # stroop_e12_agg <- stroop_e12 %>% # group_by(study, condition, congruency, pno) %>% # summarise(acc = mean(acc), # n = n()) # capture_call <- function(call) { # warnings <- testthat::capture_warnings(eval(substitute(call))) # output <- suppressWarnings(capture.output(eval(substitute(call)))) # messages <- testthat::capture_messages(substitute(call)) # list( # output = output, # warnings = warnings, # messages = messages # ) # } # outp_e1_mixed1_v1 <- capture_call(print(e1_mixed1_v1)) # outp_e1_mixed1_v2 <- capture_call(print(e1_mixed1_v2)) # outp_e1_mixed1_v2_allfit <- capture_call(print(e1_mixed1_v2_allfit)) # # emm_2a_cong <- emmeans(e1_mixed1_v2_allfit, "congruency", type = "response") # emm_2a_cond <- emmeans(e1_mixed1_v2_allfit, "condition", type = "response") # # emm_2a_inter1 <- emmeans(e1_mixed1_v2_allfit, c("congruency", "condition"), # type = "response") # emm_2a_inter2 <- emmeans(e1_mixed1_v2_allfit, "congruency", # by = "condition", type = "response") # # emm_2a_inter1_out <- capture_call(print(emm_2a_inter1)) # emm_2a_inter2_out <- capture_call(print(emm_2a_inter2)) # # # emm_2a_cong_out <- capture_call(print(emm_2a_cong)) # emm_2a_cond_out <- capture_call(print(emm_2a_cond)) # # emm_inter_1 <- emmeans(e1_mixed1_v2_allfit, "congruency", # by = "condition", type = "response") # emm_2a_pairs <- capture_call(print(pairs(emm_inter_1))) # # pp2a_main <- ggplotGrob(plot_grid( # afex_plot(e1_mixed1_v2_allfit, "congruency", error = "within", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)), # afex_plot(e1_mixed1_v2_allfit, "condition", error = "within", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)) # )) # # pp2a_main_a <- afex_plot(e1_mixed1_v2_allfit, "congruency", error = "within", # # data_geom = geom_quasirandom, data_alpha = 0.3) + # # coord_cartesian(ylim = c(0.25, 1)) # # pp2a_main_b <- afex_plot(e1_mixed1_v2_allfit, "condition", error = "within", # # data_geom = geom_quasirandom, data_alpha = 0.3) + # # coord_cartesian(ylim = c(0.25, 1)) # # pp2a_inter <- ggplotGrob(afex_plot(e1_mixed1_v2_allfit, "condition", "congruency", # data_geom = geom_violin)) # # pp2a_inter_v1 <- ggplotGrob(afex_plot(e1_mixed1_v1, "condition", "congruency", # data_geom = geom_violin)) # # ### experiments 1 and 2 # # outp_e12_mixed1 <- capture_call(print(e12_mixed1)) # outp_e12_mixed1_t2 <- capture_call(print(e12_mixed1_t2)) # # outp_e12_mixed1_t2_red <- capture_call(print(e12_mixed1_t2_red)) # # emm_e12_inter_out <- capture_call(print(emmeans(e12_mixed1, # c("congruency", "condition"), # type = "response"))) # # emm_e12_t2_inter_out <- capture_call(print(emmeans(e12_mixed1_t2, # c("congruency", "condition"), # type = "response"))) # # emm_e12_t2_red_inter_out <- capture_call(print(emmeans(e12_mixed1_t2_red, # c("congruency", "condition"), # type = "response"))) # # emm_e12_t2_red_pairs_out <- capture_call(print(pairs( # emmeans(e12_mixed1_t2_red, "congruency", # by = "condition", # type = "response")))) # # emm_e12_t2_pairs_out <- capture_call(print(pairs( # emmeans(e12_mixed1_t2, "congruency", # by = "condition", type = "response")))) # # emm_e12_t2_pairs_p_out <- capture_call(print(pairs(emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response", # submodel = "minimal")))) # # pp_e12_inter_t3 <- ggplotGrob(afex_plot(e12_mixed1, "condition", "congruency", # data_geom = geom_violin)) # pp_e12_inter_t2 <- ggplotGrob(afex_plot(e12_mixed1_t2, "condition", "congruency", # data_geom = geom_violin)) # pp_e12_inter_t2_red <- ggplotGrob(afex_plot(e12_mixed1_t2_red, "condition", "congruency", # data_geom = geom_violin)) # # save(outp_e1_mixed1_v1, outp_e1_mixed1_v2, # outp_e1_mixed1_v2_allfit, # emm_2a_cong_out, emm_2a_cond_out, # pp2a_main, # emm_2a_inter1_out, emm_2a_inter2_out, # emm_2a_pairs, # pp2a_inter, pp2a_inter_v1, # # outp_e12_mixed1, outp_e12_mixed1_t2, # outp_e12_mixed1_t2_red, # emm_e12_inter_out, emm_e12_t2_inter_out, # emm_e12_t2_red_inter_out, # emm_e12_t2_red_pairs_out, # emm_e12_t2_pairs_out, # emm_e12_t2_pairs_p_out, # pp_e12_inter_t3, pp_e12_inter_t2, # pp_e12_inter_t2_red, # # file = "inst/extdata/outputs_glmm_vignette.rda", # compress = "xz") # afex/inst/doc/afex_plot_introduction.R0000644000176200001440000002751614665070043017644 0ustar liggesusers## ----echo=FALSE--------------------------------------------------------------- req_suggested_packages <- c("emmeans", "ggplot2", "cowplot", "ggbeeswarm", "ggpol") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ## ----set-options, echo=FALSE, cache=FALSE----------------------------------------------- op <- options(width = 90) knitr::opts_chunk$set(dpi=72) ## ----message=FALSE, warning=FALSE------------------------------------------------------- library("afex") library("ggplot2") library("cowplot") theme_set(theme_grey()) ## --------------------------------------------------------------------------------------- data(md_12.1) (aw <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"))) ## ----fig.width=9, fig.height=4---------------------------------------------------------- p_an <- afex_plot(aw, x = "angle", trace = "noise") p_na <- afex_plot(aw, x = "noise", trace = "angle") plot_grid(p_an, p_na) ## try adding: labels = "AUTO" ## --------------------------------------------------------------------------------------- p_an <- afex_plot(aw, x = "angle", trace = "noise", error = "within", factor_levels = list(angle = c("0°", "4°", "8°"), noise = c("Absent", "Present")), legend_title = "Noise") + labs(y = "RTs (in ms)", x = "Angle (in degrees)") ## ----fig.width=8.5, fig.height=6, dpi = 150--------------------------------------------- plot_grid( p_an + theme_bw() + theme(legend.position="bottom"), p_an + theme_light() + theme(legend.position="bottom"), p_an + theme_minimal() + theme(legend.position="bottom"), p_an + jtools::theme_nice() + theme(legend.position="bottom"), p_an + ggpubr::theme_pubr(), p_an + theme_cowplot() + theme(legend.position="bottom"), labels = "AUTO" ) ## ----fig.width=3.5, fig.height=3, dpi = 100, out.width='50%'---------------------------- p_an + scale_y_continuous(breaks=seq(400, 900, length.out = 3)) + theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank()) ## --------------------------------------------------------------------------------------- theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) ## ----eval=FALSE------------------------------------------------------------------------- # ggsave("my_plot.png", device = "png", # width = 9, height = 8, units = "cm", # dpi = 600) ## the larger the dpi, the better the resolution ## ----eval=FALSE------------------------------------------------------------------------- # ggsave("my_plot.pdf", device = "pdf", # width = 9, height = 8, units = "cm") ## ----fig.width=8.5, fig.height=16, dpi = 125-------------------------------------------- p0 <- afex_plot(aw, x = "noise", trace = "angle", error = "within") p1 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 25, dodge.width = 0.3 ## needs to be same as dodge ))) p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = geom_count) p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = geom_violin, data_arg = list(width = 0.5)) p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = geom_boxplot, data_arg = list(width = 0.3, linetype = 1)) p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) p6 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.05 ## choose small value so data points are not overlapping )) p7 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0)) plot_grid(p0, p1, p2, p3, p4, p5, p6, p7, ncol = 2, labels = 1:8) ## ----fig.width=3.5, fig.height=3, dpi = 100, out.width='50%'---------------------------- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = list( geom_violin, ggbeeswarm::geom_quasirandom ), data_arg = list( list(draw_quantiles = c(0.25, 0.5, 0.75)), list(dodge.width = 0.5, width = 0.05) )) ## ----fig.width=8.5, fig.height=8, dpi = 125--------------------------------------------- p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, mapping = c("shape", "color"), data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("linetype", "shape", "fill"), data_geom = ggplot2::geom_violin, data_arg = list(width = 0.5)) p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("shape", "fill"), data_geom = ggplot2::geom_boxplot, data_arg = list(width = 0.3)) p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, mapping = c("shape", "fill"), data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), line_arg = list(linetype = 0), error_arg = list(linewidth = 1.5, width = 0)) plot_grid(p2, p3, p4, p5, ncol = 2) ## ----fig.width=8.5, fig.height=4, dpi = 150--------------------------------------------- p1 <- afex_plot(aw, x = "noise", trace = "angle", mapping = c("color"), error = "within", point_arg = list(size = 5), line_arg = list(size = 2), error_arg = list(linewidth = 2)) p2 <- afex_plot(aw, x = "noise", trace = "angle", mapping = c("color", "shape", "linetype"), error = "within", point_arg = list(size = 5), line_arg = list(size = 2), error_arg = list(linewidth = 2, width = 0, linetype = 1)) plot_grid(p1, p2, ncol = 2) ## ----fig.width=7, fig.height=3.5, message=FALSE----------------------------------------- po1 <- afex_plot(aw, x = "angle", mapping = "color", error = "within", point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) po2 <- afex_plot(aw, x = "angle", error = "within", data_geom = ggpol::geom_boxjitter, mapping = "fill", data_alpha = 0.7, data_arg = list( width = 0.6, jitter.params = list(width = 0.05, height = 10), outlier.intersect = TRUE ), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) + theme(legend.position="none") plot_grid(po1, po2) ## ----fig.width=7, fig.height=3.5, message=FALSE----------------------------------------- afex_plot(aw, x = "angle", panel = "noise", error = "within", data_geom = ggpol::geom_boxjitter, mapping = "fill", data_alpha = 0.7, data_arg = list( width = 0.6, jitter.params = list(width = 0.05, height = 10), outlier.intersect = TRUE ), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) + theme(legend.position="none") ## ----fig.width=7, fig.height=3.5, message=FALSE----------------------------------------- plot_grid( po1 + geom_line(aes(group = 1), color = "darkgrey", size = 1.5), po2 + geom_line(aes(group = 1)) ) ## ----echo=FALSE------------------------------------------------------------------------- load(system.file("extdata/", "output_afex_plot_mixed_vignette_model.rda", package = "afex")) ## ----eval=FALSE------------------------------------------------------------------------- # data("fhch2010") # load # fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors # m9s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus+frequency||id)+ # (task|item), fhch, method = "S", # control = lmerControl(optCtrl = list(maxfun = 1e6)), # expand_re = TRUE) ## --------------------------------------------------------------------------------------- emmeans::emm_options(lmer.df = "asymptotic") ## ----eval=TRUE-------------------------------------------------------------------------- m9s ## ----fig.width=7, fig.height=3.5, eval=TRUE--------------------------------------------- afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task") ## ----fig.width=7, fig.height=3.5, eval=TRUE--------------------------------------------- plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "id"), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item"), labels = c("ID", "Item") ) ## ----fig.width=7, fig.height=3.5, eval=TRUE--------------------------------------------- plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, data_geom = geom_violin, data_arg = list(width = 0.5)), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, data_geom = geom_boxplot, data_arg = list(width = 0.5), error_arg = list(linewidth = 1.5, width = 0, linetype = 1)) ) ## ----eval=FALSE------------------------------------------------------------------------- # pairs(emmeans::emmeans(mrt, c("stimulus", "frequency"), by = "task")) ## ----echo=FALSE------------------------------------------------------------------------- cat(aout_2$output, sep = "\n") ## ----fig.width=7, fig.height=3.5, eval=FALSE-------------------------------------------- # plot_grid( # afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", # id = "id", error = "within"), # afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", # id = "item", dodge = 0.8, error = "within", # data_geom = geom_violin, # data_arg = list(width = 0.5)) # ) ## ----include=FALSE------------------------------------------------------------ options(op) afex/inst/doc/afex_mixed_example.html0000644000176200001440000034477114665070015017455 0ustar liggesusers Mixed Model Reanalysis of RT data

Mixed Model Reanalysis of RT data

Henrik Singmann

2024-09-01

Overview

This documents reanalysis response time data from an Experiment performed by Freeman, Heathcote, Chalmers, and Hockley (2010) using the mixed model functionality of afex implemented in function mixed followed by post-hoc tests using package emmeans (Lenth, 2017). After a brief description of the data set and research question, the code and results are presented.

Description of Experiment and Data

The data are lexical decision and word naming latencies for 300 words and 300 nonwords from 45 participants presented in Freeman et al. (2010). The 300 items in each stimulus condition were selected to form a balanced \(2 \times 2\) design with factors neighborhood density (low versus high) and frequency (low versus high). The task was a between subjects factor: 25 participants worked on the lexical decision task and 20 participants on the naming task. After excluding erroneous responses each participants responded to between 135 and 150 words and between 124 and 150 nonwords. We analyzed log RTs which showed an approximately normal picture.

Data and R Preparation

We start with loading some packages we will need throughout this example. For data manipulation we will be using the dplyr and tidyr packages from the tidyverse. A thorough introduction to these packages is beyond this example, but well worth it, and can be found in ‘R for Data Science’ by Wickham and Grolemund. For plotting we will be using ggplot2, also part of the tidyverse.

After loading the packages, we will load the data (which comes with afex), remove the errors, and take a look at the variables in the data.

library("afex") # needed for mixed() and attaches lme4 automatically.
library("emmeans") # emmeans is needed for follow-up tests 
library("multcomp") # for advanced control for multiple testing/Type 1 errors.
library("dplyr") # for working with data frames
library("tidyr") # for transforming data frames from wide to long and the other way round.
library("ggplot2") # for plots
theme_set(theme_bw(base_size = 15) + 
            theme(legend.position="bottom", 
                  panel.grid.major.x = element_blank()))

data("fhch2010") # load 
fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors
str(fhch2010) # structure of the data
## 'data.frame':    13222 obs. of  10 variables:
##  $ id       : Factor w/ 45 levels "N1","N12","N13",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ task     : Factor w/ 2 levels "naming","lexdec": 1 1 1 1 1 1 1 1 1 1 ...
##  $ stimulus : Factor w/ 2 levels "word","nonword": 1 1 1 2 2 1 2 2 1 2 ...
##  $ density  : Factor w/ 2 levels "low","high": 2 1 1 2 1 2 1 1 1 1 ...
##  $ frequency: Factor w/ 2 levels "low","high": 1 2 2 2 2 2 1 2 1 2 ...
##  $ length   : Factor w/ 3 levels "4","5","6": 3 3 2 2 1 1 3 2 1 3 ...
##  $ item     : Factor w/ 600 levels "abide","acts",..: 363 121 202 525 580 135 42 368 227 141 ...
##  $ rt       : num  1.091 0.876 0.71 1.21 0.843 ...
##  $ log_rt   : num  0.0871 -0.1324 -0.3425 0.1906 -0.1708 ...
##  $ correct  : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...

To make sure our expectations about the data match the data we use some dplyr magic to confirm the number of participants per condition and items per participant.

## are all participants in only one task?
fhch %>% group_by(id) %>%
  summarise(task = n_distinct(task)) %>%
  as.data.frame() %>% 
  {.$task == 1} %>%
  all()
## [1] TRUE
## participants per condition:
fhch %>% group_by(id) %>%
  summarise(task = first(task)) %>%
  ungroup() %>%
  group_by(task) %>%
  summarise(n = n())
## # A tibble: 2 × 2
##   task       n
##   <fct>  <int>
## 1 naming    20
## 2 lexdec    25
## number of different items per participant:
fhch %>% group_by(id, stimulus) %>%
  summarise(items = n_distinct(item)) %>%
  ungroup() %>%
  group_by(stimulus) %>%
  summarise(min = min(items), 
            max = max(items), 
            mean = mean(items))
## # A tibble: 2 × 4
##   stimulus   min   max  mean
##   <fct>    <int> <int> <dbl>
## 1 word       135   150  145.
## 2 nonword    124   150  143.

Before running the analysis we should make sure that our dependent variable looks roughly normal. To compare rt with log_rt within the same figure we first need to transform the data from the wide format (where both rt types occupy one column each) into the long format (in which the two rt types are combined into a single column with an additional indicator column). To do so we use tidyr::pivot_longer. Then we simply call ggplot with geom_histogram and facet_wrap(vars(rt_type)) on the new tibble. The plot shows that log_rt looks clearly more normal than rt, although not perfectly so. An interesting exercise could be to rerun the analysis below using a transformation that provides an even better ‘normalization’.

fhch_long <- fhch %>% 
  pivot_longer(cols = c(rt, log_rt), names_to = "rt_type", values_to = "rt")
ggplot(fhch_long, aes(rt)) +
  geom_histogram(bins = 100) +
  facet_wrap(vars(rt_type), scales = "free_x")

Descriptive Analysis

The main factors in the experiment were the between-subjects factor task (naming vs. lexdec), and the within-subjects factors stimulus (word vs. nonword), density (low vs. high), and frequency (low vs. high). Before running an analysis it is a good idea to visually inspect the data to gather some expectations regarding the results. Should the statistical results dramatically disagree with the expectations this suggests some type of error along the way (e.g., model misspecification) or at least encourages a thorough check to make sure everything is correct. We first begin by plotting the data aggregated by-participant.

In each plot we plot the raw data in the background. To make the individual data points visible we use ggbeeswarm::geom_quasirandom and alpha = 0.5 for semi-transparency. On top of this we add a (transparent) box plot as well as the mean and standard error.

agg_p <- fhch %>% 
  group_by(id, task, stimulus, density, frequency) %>%
  summarise(mean = mean(log_rt)) %>%
  ungroup()

ggplot(agg_p, aes(x = interaction(density,frequency), y = mean)) +
  ggbeeswarm::geom_quasirandom(alpha = 0.5) +
  geom_boxplot(fill = "transparent") +
  stat_summary(colour = "red") +
  facet_grid(cols = vars(task), rows = vars(stimulus))

Now we plot the same data but aggregated across items:

agg_i <- fhch %>% group_by(item, task, stimulus, density, frequency) %>%
  summarise(mean = mean(log_rt)) %>%
  ungroup()

ggplot(agg_i, aes(x = interaction(density,frequency), y = mean)) +
  ggbeeswarm::geom_quasirandom(alpha = 0.3) +
  geom_boxplot(fill = "transparent") +
  stat_summary(colour = "red") +
  facet_grid(cols = vars(task), rows = vars(stimulus))

These two plots show a very similar pattern and suggest several things:

  • Responses to nonwords appear slower than responses to words, at least for the naming task.
  • lexdec responses appear to be slower than naming responses, particularly in the word condition.
  • In the nonword and naming condition we see a clear effect of frequency with slower responses to high than low frequency words.
  • In the word conditions the frequency pattern appears to be in the opposite direction to the pattern described in the previous point: faster responses to low frequency than to high frequency words.
  • density appears to have no effect, perhaps with the exception of the nonword lexdec condition.

Model Setup

To set up a mixed model it is important to identify which factors vary within which grouping factor generating random variability (i.e., grouping factors are sources of stochastic variability). The two grouping factors are participants (id) and items (item). The within-participant factors are stimulus, density, and frequency. The within-item factor is task. The ‘maximal model’ (Barr, Levy, Scheepers, and Tily, 2013) therefore is the model with by-participant random slopes for stimulus, density, and frequency and their interactions and by-item random slopes for task.

It is rather common that a maximal model with a complicated random effect structure, such as the present one, does not converge successfully. The best indicator of this is a “singular fit” warning. A model with a singular fit warning should not be reported or used. Instead, one should make sure that qualitatively the same results are also observed with a model without singular fit warnings. If the maximal model that does not converge and a reduced model without a singular fit warning (i.e., the final model) diverge in their results, results should only be interpreted cautiously.

In case of a singular fit or another indicator of a convergence problem, the usual first step is removing the correlations among the random terms. In our example, there are two sets of correlations, one for each random effect grouping variable. Consequently, we can build four model that have the maximal structure in terms of random-slopes and only differ in which correlations among random terms are calculated:

  1. With all correlations.
  2. No correlation among by-item random effects (i.e., no correlation between random intercept and task random slope).
  3. No correlation among by-participant random effect terms (i.e., no correlation among random slopes themselves and between the random slopes and the random intercept).
  4. No correlation among either random grouping factor.

The next decision to be made is which method to use for obtaining \(p\)-values. The best control against anti-conservative results is provided by method = "KR" (=Kenward-Roger). However, KR needs quite a lot of RAM, especially with complicated random effect structures and large data sets. In this case we have both, relatively large data (i.e., many levels on each random effect, especially the item random effect) and a complicated random effect structure. Consequently, it seems a reasonable decision to choose another method. The second ‘best’ method (in terms of controlling for Type I errors) is the ‘Satterthwaite’ approximation, method = 'S'. It provides a similar control of Type I errors as the Kenward-Roger approximation and needs less RAM. The Satterthwaite method is currently also the default method for calculating \(p\)-values so does not need to be set explicitly.

Finding the Final Model

The following code fits the four models using the Satterthwaite method. To suppress random effects we use the || notation. Note that it is necessary to set expand_re = TRUE when suppressing random effects among variables that are entered as factors and not as numerical variables (all independent variables in the present case are factors). Also note that mixed automatically uses appropriate contrast coding if factors are included in interactions (contr.sum) in contrast to the R default (which is contr.treatment). To make sure the estimation does not end prematurely we set the allowed number of function evaluations to a very high value (using lmerControl).

However, because fitting the models in R might take quite a while, you should also be able to load the fitted binary files them from this url and then load them in R with load("freeman_models.rda").

m1s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus*density*frequency|id)+
               (task|item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)))
## boundary (singular) fit: see ?isSingular
m2s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus*density*frequency|id)+
               (task||item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE)
## boundary (singular) fit: see ?isSingular
m3s <- mixed(log_rt ~ task*stimulus*density*frequency +
               (stimulus*density*frequency||id)+
               (task|item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE)
## boundary (singular) fit: see ?isSingular
m4s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus*density*frequency||id)+
               (task||item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE)
## boundary (singular) fit: see ?isSingular

We can see that fitting each of these models emits the “singular fit” message (it is technically a message and not a warning) indicating that the model is over-parameterized and did not converge successfully. In particular, this message indicates that the model is specified with more random effect parameters than can be estimated given the current data.

It is instructive to see that even with a comparatively large number of observations, 12960, a set of seven random slopes for the by-participant term and one random slope for the by-item term cannot be estimated successfully. And this holds even after removing all correlations. Thus, it should not be surprising that similar sized models regularly do not converge with smaller numbers of observations. Furthermore, we are here in the fortunate situation that each factor has only two levels. A factor with more levels corresponds to more parameters of the random effect terms.

Before deciding what to do next, we take a look at the estimated random effect estimates. We do so for the model without any correlations. Note that for afex models we usually do not want to use the summary method as it prints the results on the level of the model coefficients and not model terms. But for the random effects we have to do so. However, we are only interested in the random effect terms so we only print those using summary(model)$varcor.

summary(m4s)$varcor 
##  Groups   Name                                    Std.Dev. 
##  item     re2.task1                               0.0568715
##  item.1   (Intercept)                             0.0537587
##  id       re1.stimulus1_by_density1_by_frequency1 0.0077923
##  id.1     re1.density1_by_frequency1              0.0000000
##  id.2     re1.stimulus1_by_frequency1             0.0000000
##  id.3     re1.stimulus1_by_density1               0.0000000
##  id.4     re1.frequency1                          0.0179993
##  id.5     re1.density1                            0.0000000
##  id.6     re1.stimulus1                           0.0445333
##  id.7     (Intercept)                             0.1936292
##  Residual                                         0.3001905

The output shows that the estimated SDs of the random slopes of the two-way interactions are all zero. However, because we cannot remove the random slopes for the two way interaction while retaining the three-way interaction, we start by removing the three-way interaction first.

m5s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               ((stimulus+density+frequency)^2||id)+
               (task||item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE)
## boundary (singular) fit: see ?isSingular
summary(m5s)$varcor 
##  Groups   Name                        Std.Dev.  
##  item     re2.task1                   5.6826e-02
##  item.1   (Intercept)                 5.3736e-02
##  id       re1.density1_by_frequency1  0.0000e+00
##  id.1     re1.stimulus1_by_frequency1 0.0000e+00
##  id.2     re1.stimulus1_by_density1   0.0000e+00
##  id.3     re1.frequency1              1.7966e-02
##  id.4     re1.density1                1.4422e-05
##  id.5     re1.stimulus1               4.4539e-02
##  id.6     (Intercept)                 1.9374e-01
##  Residual                             3.0030e-01

Not too surprisingly, this model also produces a singular fit. Inspection of the estimates shows that the two-way interaction of the slopes are still estimated to be zero. So we remove those in the next step.

m6s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus+density+frequency||id)+
               (task||item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), 
             expand_re = TRUE)
## boundary (singular) fit: see ?isSingular

This model still shows a singular fit warning. The random effect estimates below show a potential culprit.

summary(m6s)$varcor 
##  Groups   Name           Std.Dev.
##  item     re2.task1      0.056831
##  item.1   (Intercept)    0.053737
##  id       re1.frequency1 0.017972
##  id.1     re1.density1   0.000000
##  id.2     re1.stimulus1  0.044524
##  id.3     (Intercept)    0.193659
##  Residual                0.300297

As in m4s above, the random effect SD for the density term is estimated to be zero. Thus, we remove this as well in the next step.

m7s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus+frequency||id)+
               (task||item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE)

This model finally does not emit a singular fit warning. Is this our final model? Before deciding on this, we see whether we can add the correlation terms again without running into any problems. We begin by adding the correlation to the by-participant term.

m8s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus+frequency|id)+
               (task||item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE)
## Warning: Model failed to converge with max|grad| = 0.00347544 (tol = 0.002, component 1)

This model does not show a singular fit message but emits another warning. Specifically, a warning that the absolute maximal gradient at the final solution is too high. This warning is not necessarily critical (i.e., it can be a false positive), but can also indicate serious problems. Consequently, we try adding the correlation between the by-item random terms instead:

m9s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus+frequency||id)+
               (task|item), fhch, 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE)

This model also does not show any warnings. Thus, we have arrived at the end of the model selection process.

Results of Maximal and Final Model

We now have the following two relevant models.

  • m1s: The maximal random effect structure justified by the design (i.e., the maximal model)
  • m9s: The final model

Robust results are those that hold regardless across maximal and final (i.e., reduced) model. Therefore, let us compare the pattern of significant and non-significant effects.

left_join(nice(m1s), nice(m9s), by = "Effect", 
          suffix = c("_full", "_final")) 
## Mixed Model Anova Table (Type 3 tests, S-method)
## 
## Model: log_rt ~ task * stimulus * density * frequency + (stimulus * 
## Model:     density * frequency | id) + (task | item)
## Data: fhch
##                             Effect   df_full     F_full p.value_full  df_final    F_final p.value_final
## 1                             task  1, 43.58  13.71 ***        <.001  1, 43.51  13.68 ***         <.001
## 2                         stimulus  1, 50.50 151.03 ***        <.001  1, 50.57 151.38 ***         <.001
## 3                          density 1, 175.53       0.33         .569 1, 584.58       0.36          .547
## 4                        frequency  1, 71.17       0.55         .459  1, 70.27       0.56          .456
## 5                    task:stimulus  1, 51.45  70.91 ***        <.001  1, 51.50  71.32 ***         <.001
## 6                     task:density 1, 184.47  16.22 ***        <.001 1, 578.72  17.89 ***         <.001
## 7                 stimulus:density 1, 247.85       1.13         .289 1, 584.60       1.19          .275
## 8                   task:frequency  1, 75.03  81.10 ***        <.001  1, 74.09  82.77 ***         <.001
## 9               stimulus:frequency 1, 165.95  55.85 ***        <.001 1, 584.78  63.29 ***         <.001
## 10               density:frequency 1, 215.83       0.11         .739 1, 584.62       0.11          .742
## 11           task:stimulus:density 1, 259.93  14.52 ***        <.001 1, 578.74  14.87 ***         <.001
## 12         task:stimulus:frequency 1, 178.33 110.95 ***        <.001 1, 578.91 124.16 ***         <.001
## 13          task:density:frequency 1, 228.12     5.53 *         .020 1, 578.75     5.93 *          .015
## 14      stimulus:density:frequency 1, 101.11     3.98 *         .049 1, 584.64     4.62 *          .032
## 15 task:stimulus:density:frequency 1, 108.10   10.19 **         .002 1, 578.77  11.72 ***         <.001
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

What this shows is that the pattern of significant and non-significant effect is the same for both models. The only significant effect for which the evidence is not that strong is the 3-way interaction between stimulus:density:frequency. It is only just below .05 for the full model and has a somewhat lower value for the final model.

We can also see that one of the most noticeable differences between the maximal and the final model is the number of denominator degrees of freedom. This is highly influenced by the random effect structure and thus considerable larger in the final (i.e., reduced) model. The difference in the other statistics is lower.

LRT Results

It is instructive to compare those results with results obtained using the comparatively ‘worst’ method for obtaining \(p\)-values implemented in afex::mixed, likelihood ratio tests. Likelihood ratio-tests should in principle deliver reasonable results for large data sets. A common rule of thumb is that the number of levels for each random effect grouping factor needs to be large, say above 50. Here, we have a very large number of items (600), but not that many participants (45). Thus, qualitative results should be the very similar, but it still is interesting to see exactly what happens. We therefore fit the final model using method='LRT'.

m9lrt <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus+frequency||id)+
               (task|item), fhch, method = "LRT", 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), 
             expand_re = TRUE)
m9lrt
## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: log_rt ~ task * stimulus * density * frequency + (stimulus + 
## Model:     frequency || id) + (task | item)
## Data: fhch
## Df full model: 23
##                             Effect df      Chisq p.value
## 1                             task  1  12.44 ***   <.001
## 2                         stimulus  1  70.04 ***   <.001
## 3                          density  1       0.37    .545
## 4                        frequency  1       0.57    .449
## 5                    task:stimulus  1  45.52 ***   <.001
## 6                     task:density  1  17.81 ***   <.001
## 7                 stimulus:density  1       1.21    .272
## 8                   task:frequency  1  53.81 ***   <.001
## 9               stimulus:frequency  1  60.64 ***   <.001
## 10               density:frequency  1       0.11    .741
## 11           task:stimulus:density  1  14.85 ***   <.001
## 12         task:stimulus:frequency  1 114.21 ***   <.001
## 13          task:density:frequency  1     5.96 *    .015
## 14      stimulus:density:frequency  1     4.65 *    .031
## 15 task:stimulus:density:frequency  1  11.71 ***   <.001
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

The results in this case match the results of the Satterthwaite method. With lower numbers of levels of the grouping factor (e.g., less participants) this would not necessarily be expected.

Summary of Results

Fortunately, the results from all models converged on the same pattern of significant and non-significant effects providing a high degree of confidence in the results. This might not be too surprising given the comparatively large number of total data points and the fact that each random effect grouping factor has a considerable number of levels (above 30 for both participants and items). In the following we focus on the final model using the Satterthwaite method, m9s.

In terms of the significant findings, there are many that seem to be in line with the descriptive results described above. For example, the highly significant effect of task:stimulus:frequency with \(F(1, 578.91) = 124.16\), \(p < .001\), appears to be in line with the observation that the frequency effect appears to change its sign depending on the task:stimulus cell (with nonword and naming showing the opposite patterns than the other three conditions). Consequently, we start by investigating this interaction further below.

Follow-Up Analyses

Before investigating the significant interaction in detail it is a good idea to remind oneself what a significant interaction represents on a conceptual level; that one or multiple of the variables in the interaction moderate (i.e., affect) the effect of the other variable or variables. Consequently, there are several ways to investigate a significant interaction. Each of the involved variables can be seen as the moderating variables and each of the variables can be seen as the effect of interest. Which one of those possible interpretations is of interest in a given situation highly depends on the actual data and research question and multiple views can be ‘correct’ in a given situation.

In addition to this conceptual issue, there are also multiple technical ways to investigate a significant interaction. One approach not followed here is to split the data into subsets according to the moderating variables and compute the statistical model again for the subsets with the effect variable(s) as remaining fixed effect. This approach, also called simple effects analysis, is, for example, recommended by Maxwell and Delaney (2004) as it does not assume variance homogeneity and is faithful to the data at each level. The approach taken here is to simply perform the test on the estimated final model. This approach assumes variance homogeneity (i.e., that the variances in all groups are homogeneous) and has the added benefit that it is computationally relatively simple. In addition, it can all be achieved using the framework provided by emmeans (Lenth, 2017).

task:stimulus:frequency Interaction

Our interest in the beginning is on the effect of frequency by task:stimulus combination. So let us first look at the estimated marginal means of this effect. In emmeans parlance these estimated means are called ‘least-square means’ because of historical reasons, but because of the lack of least-square estimation in mixed models we prefer the term estimated marginal means, or EMMs for short. Those can be obtained in the following way. To prevent emmeans from calculating the df for the EMMs (which can be quite costly), we use asymptotic dfs (i.e., \(z\) values and tests). emmeans requires to first specify the variable(s) one wants to treat as the effect variable(s) (here frequency) and then allows to specify condition variables.

emm_options(lmer.df = "asymptotic") # also possible: 'satterthwaite', 'kenward-roger'
emm_i1 <- emmeans(m9s, "frequency", by = c("stimulus", "task"))
emm_i1
## NOTE: Results may be misleading due to involvement in interactions
## stimulus = word, task = naming:
##  frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low       -0.32333 0.0455 Inf   -0.4125   -0.2342
##  high      -0.38210 0.0455 Inf   -0.4713   -0.2929
## 
## stimulus = nonword, task = naming:
##  frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low       -0.14294 0.0455 Inf   -0.2321   -0.0538
##  high       0.06405 0.0455 Inf   -0.0252    0.1533
## 
## stimulus = word, task = lexdec:
##  frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low        0.02337 0.0413 Inf   -0.0576    0.1044
##  high      -0.04017 0.0413 Inf   -0.1211    0.0408
## 
## stimulus = nonword, task = lexdec:
##  frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low        0.10455 0.0413 Inf    0.0235    0.1856
##  high      -0.00632 0.0413 Inf   -0.0873    0.0746
## 
## Results are averaged over the levels of: density 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95

The returned values are in line with our observation that the nonword and naming condition diverges from the other three. But is there actual evidence that the effect flips? We can test this using additional emmeans functionality. Specifically, we first use the pairs function which provides us with a pairwise test of the effect of frequency in each task:stimulus combination. Then we need to combine the four tests within one object to obtain a family-wise error rate correction which we do via update(..., by = NULL) (i.e., we revert the effect of the by statement from the earlier emmeans call) and finally we select the holm method for controlling for family wise error rate (the Holm method is uniformly more powerful than the Bonferroni).

update(pairs(emm_i1), by = NULL, adjust = "holm")
## NOTE: Results may be misleading due to involvement in interactions
##  contrast   stimulus task   estimate     SE  df z.ratio p.value
##  low - high word     naming   0.0588 0.0149 Inf   3.941 0.0002 
##  low - high nonword  naming  -0.2070 0.0150 Inf -13.823 <.0001 
##  low - high word     lexdec   0.0635 0.0167 Inf   3.807 0.0002 
##  low - high nonword  lexdec   0.1109 0.0167 Inf   6.619 <.0001 
## 
## Results are averaged over the levels of: density 
## Degrees-of-freedom method: asymptotic 
## P value adjustment: holm method for 4 tests

We could also use a slightly more powerful method than the Holm method, method free from package multcomp. This method takes the correlation of the model parameters into account. However, results do not differ much here:

summary(as.glht(update(pairs(emm_i1), by = NULL)), test = adjusted("free"))
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Linear Hypotheses:
##                                  Estimate Std. Error z value Pr(>|z|)    
## low - high, word, naming == 0     0.05877    0.01491   3.941 0.000162 ***
## low - high, nonword, naming == 0 -0.20699    0.01497 -13.823  < 2e-16 ***
## low - high, word, lexdec == 0     0.06353    0.01669   3.807 0.000162 ***
## low - high, nonword, lexdec == 0  0.11086    0.01675   6.619 1.11e-10 ***
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
## (Adjusted p values reported -- free method)

We see that the results are exactly as expected. In the nonword and naming condition we have a clear negative effect of frequency while in the other three conditions it is clearly positive.

We could now also use emmeans and re-transform the estimates back onto the original RT response scale. For this, we can again update the emmeans object by using tran = "log" to specify the transformation and then indicating we want the means on the response scale with type = "response". These values might be used for plotting.

emm_i1b <- update(emm_i1, tran = "log", type = "response", by = NULL)
emm_i1b
##  frequency stimulus task   response     SE  df asymp.LCL asymp.UCL
##  low       word     naming    0.724 0.0329 Inf     0.662     0.791
##  high      word     naming    0.682 0.0310 Inf     0.624     0.746
##  low       nonword  naming    0.867 0.0394 Inf     0.793     0.948
##  high      nonword  naming    1.066 0.0485 Inf     0.975     1.166
##  low       word     lexdec    1.024 0.0423 Inf     0.944     1.110
##  high      word     lexdec    0.961 0.0397 Inf     0.886     1.042
##  low       nonword  lexdec    1.110 0.0459 Inf     1.024     1.204
##  high      nonword  lexdec    0.994 0.0410 Inf     0.916     1.077
## 
## Results are averaged over the levels of: density 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95 
## Intervals are back-transformed from the log scale

A more direct approach for plotting the interaction is via afex_plot. For a plot that is not too busy it makes sense to specify across which grouping factor the individual level data should be aggregated. We use the participant variable "id" here. We also use ggbeeswarm::geom_quasirandom as the geom for the data in the background following the example in the afex_plot vignette.

afex_plot(m9s, "frequency", "stimulus", "task", id = "id",
          data_geom = ggbeeswarm::geom_quasirandom, 
          data_arg = list(
            dodge.width = 0.5,  ## needs to be same as dodge
            cex = 0.8,
            width = 0.1,
            color = "darkgrey"))
## NOTE: Results may be misleading due to involvement in interactions

task:stimulus:density:frequency Interaction

As the last example, let us take a look at the significant four-way interaction of task:stimulus:density:frequency, \(F(1, 578.77) = 11.72\), \(p < .001\). Here we might be interested in a slightly more difficult question namely whether the density:frequency interaction varies across task:stimulus conditions. If we again look at the figures above, it appears that there is a difference between low:low and high:low in the nonword and lexdec condition, but not in the other conditions.

Looking at the 2-way interaction of density:frequency by the task:stimulus interaction can be done using emmeans using the joint_test function. We simply need to specify the appropriate by variables and get conditional tests this way.

joint_tests(m9s, by = c("stimulus", "task"))
## stimulus = word, task = naming:
##  model term        df1 df2 F.ratio p.value
##  density             1 Inf   1.292 0.2556 
##  frequency           1 Inf  15.530 0.0001 
##  density:frequency   1 Inf   0.196 0.6578 
## 
## stimulus = nonword, task = naming:
##  model term        df1 df2 F.ratio p.value
##  density             1 Inf  17.926 <.0001 
##  frequency           1 Inf 191.069 <.0001 
##  density:frequency   1 Inf   3.656 0.0559 
## 
## stimulus = word, task = lexdec:
##  model term        df1 df2 F.ratio p.value
##  density             1 Inf   0.359 0.5491 
##  frequency           1 Inf  14.494 0.0001 
##  density:frequency   1 Inf   1.669 0.1964 
## 
## stimulus = nonword, task = lexdec:
##  model term        df1 df2 F.ratio p.value
##  density             1 Inf  15.837 0.0001 
##  frequency           1 Inf  43.811 <.0001 
##  density:frequency   1 Inf  14.806 0.0001

This test indeed shows that the density:frequency interaction is only significant in the nonword and lexdec condition. Next, let’s see if we can unpack this interaction in a meaningful manner. For this we compare low:low and high:low in each of the four groups. And just for the sake of making the example more complex, we also compare low:high and high:high.

To do so, we first need to setup a new set of EMMs. Specifically, we get the EMMs of the two variables of interest, density and frequency, using the same by specification as the joint_test call. We can then setup custom contrasts that tests our hypotheses.

emm_i2 <- emmeans(m2s, c("density", "frequency"), by = c("stimulus", "task"))
emm_i2
## stimulus = word, task = naming:
##  density frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low     low       -0.31384 0.0448 Inf   -0.4016  -0.22613
##  high    low       -0.33268 0.0408 Inf   -0.4126  -0.25276
##  low     high      -0.37741 0.0466 Inf   -0.4687  -0.28611
##  high    high      -0.38644 0.0472 Inf   -0.4789  -0.29399
## 
## stimulus = nonword, task = naming:
##  density frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low     low       -0.10399 0.0499 Inf   -0.2019  -0.00611
##  high    low       -0.18230 0.0441 Inf   -0.2688  -0.09580
##  low     high       0.07823 0.0519 Inf   -0.0236   0.18004
##  high    high       0.04902 0.0494 Inf   -0.0478   0.14588
## 
## stimulus = word, task = lexdec:
##  density frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low     low        0.03713 0.0403 Inf   -0.0419   0.11617
##  high    low        0.00933 0.0368 Inf   -0.0627   0.08138
##  low     high      -0.04512 0.0419 Inf   -0.1272   0.03696
##  high    high      -0.03479 0.0424 Inf   -0.1179   0.04828
## 
## stimulus = nonword, task = lexdec:
##  density frequency   emmean     SE  df asymp.LCL asymp.UCL
##  low     low        0.04480 0.0449 Inf   -0.0432   0.13278
##  high    low        0.16331 0.0398 Inf    0.0852   0.24140
##  low     high      -0.00729 0.0466 Inf   -0.0987   0.08411
##  high    high      -0.00564 0.0444 Inf   -0.0927   0.08140
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95

These contrasts can be specified via a list of custom contrasts on the EMMs (or reference grid in emmeans parlance) which can be passed to the contrast function. The contrasts are a list where each element should sum to one (i.e., be a proper contrast) and be of length equal to the number of EMMs (although we have 16 EMMs in total, we only need to specify it for a length of four due to conditioning by c("stimulus", "task")).

To control for the family wise error rate across all tests, we again use update(..., by = NULL) on the result to revert the effect of the conditioning.

# desired contrats:
des_c <- list(
  ll_hl = c(1, -1, 0, 0),
  lh_hh = c(0, 0, 1, -1)
  )
update(contrast(emm_i2, des_c), by = NULL, adjust = "holm")
##  contrast stimulus task   estimate     SE  df z.ratio p.value
##  ll_hl    word     naming  0.01884 0.0210 Inf  0.895  1.0000 
##  lh_hh    word     naming  0.00904 0.0212 Inf  0.426  1.0000 
##  ll_hl    nonword  naming  0.07831 0.0222 Inf  3.525  0.0030 
##  lh_hh    nonword  naming  0.02921 0.0210 Inf  1.391  0.9847 
##  ll_hl    word     lexdec  0.02780 0.0200 Inf  1.391  0.9847 
##  lh_hh    word     lexdec -0.01033 0.0199 Inf -0.520  1.0000 
##  ll_hl    nonword  lexdec -0.11850 0.0211 Inf -5.628  <.0001 
##  lh_hh    nonword  lexdec -0.00165 0.0197 Inf -0.084  1.0000 
## 
## Degrees-of-freedom method: asymptotic 
## P value adjustment: holm method for 8 tests

In contrast to our expectation, the results show two significant effects and not only one. In line with our expectations, in the nonword and lexdec condition the EMM of low:low is smaller than the EMM for high:low, \(z = -5.63\), \(p < .0001\). However, in the nonword and naming condition we found the opposite pattern; the EMM of low:low is larger than the EMM for high:low, \(z = 3.53\), \(p = .003\). For all other effects \(|z| < 1.4\), \(p > .98\). In addition, there is no difference between low:high and high:high in any condition.

References

  • Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. Journal of Memory and Language, 68(3), 255-278. https://doi.org/10.1016/j.jml.2012.11.001
  • Bretz, F., Hothorn, T., & Westfall, P. H. (2011). Multiple comparisons using R. Boca Raton, FL: CRC Press. https://CRAN.R-project.org/package=multcomp
  • Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. Journal of Memory and Language, 62(1), 1-18. https://doi.org/10.1016/j.jml.2009.09.004
  • Lenth, R. (2017). emmeans: Estimated Marginal Means, aka Least-Squares Means. R package version 0.9.1. https://CRAN.R-project.org/package=emmeans
  • Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates.
afex/inst/doc/afex_anova_example.R0000644000176200001440000001313514665070007016674 0ustar liggesusers## ----echo=FALSE--------------------------------------------------------------- req_suggested_packages <- c("emmeans", "multcomp", "ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ## ----set-options, echo=FALSE, cache=FALSE----------------------------------------------- op <- options(width = 90) knitr::opts_chunk$set(dpi=72) ## ----message=FALSE, warning=FALSE------------------------------------------------------- library("afex") # needed for ANOVA functions. library("emmeans") # emmeans must now be loaded explicitly for follow-up tests. library("multcomp") # for advanced control for multiple testing/Type 1 errors. library("ggplot2") # for customizing plots. ## --------------------------------------------------------------------------------------- data(sk2011.1) str(sk2011.1) ## --------------------------------------------------------------------------------------- with(sk2011.1, table(inference, id, plausibility)) ## --------------------------------------------------------------------------------------- a1 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("inference", "plausibility")) a1 # the default print method prints a data.frame produced by nice ## ----eval=FALSE------------------------------------------------------------------------- # aov_car(response ~ instruction + Error(id/inference*plausibility), sk2011.1) # aov_4(response ~ instruction + (inference*plausibility|id), sk2011.1) ## ----results='asis'--------------------------------------------------------------------- knitr::kable(nice(a1)) ## ----results='asis'--------------------------------------------------------------------- print(xtable::xtable(anova(a1), digits = c(rep(2, 5), 3, 4)), type = "html") ## --------------------------------------------------------------------------------------- m1 <- emmeans(a1, ~ inference) m1 ## --------------------------------------------------------------------------------------- pairs(m1) ## --------------------------------------------------------------------------------------- summary(as.glht(pairs(m1)), test=adjusted("free")) ## --------------------------------------------------------------------------------------- m2 <- emmeans(a1, "inference", by = "instruction") ## equal: emmeans(a1, ~ inference|instruction) m2 ## --------------------------------------------------------------------------------------- pairs(m2) ## --------------------------------------------------------------------------------------- m3 <- emmeans(a1, c("inference", "instruction")) ## equal: emmeans(a1, ~inference*instruction) m3 pairs(m3) ## --------------------------------------------------------------------------------------- c1 <- list( v_i.ded = c(0.5, 0.5, -0.5, -0.5, 0, 0, 0, 0), v_i.prob = c(0, 0, 0, 0, 0.5, 0.5, -0.5, -0.5) ) contrast(m3, c1, adjust = "holm") summary(as.glht(contrast(m3, c1)), test = adjusted("free")) ## ----fig.width=7.5, fig.height=4-------------------------------------------------------- afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility") ## ----fig.width=7.5, fig.height=4-------------------------------------------------------- afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "within") ## ----fig.width=7.5, fig.height=4-------------------------------------------------------- afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "none") ## ----fig.width=7.5, fig.height=4-------------------------------------------------------- p1 <- afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "none", mapping = c("color", "fill"), data_geom = geom_boxplot, data_arg = list(width = 0.4), point_arg = list(size = 1.5), line_arg = list(size = 1)) p1 ## ----fig.width=7.5, fig.height=4-------------------------------------------------------- p1 + theme_light() ## --------------------------------------------------------------------------------------- theme_set(theme_light()) ## --------------------------------------------------------------------------------------- a2 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("validity", "plausibility", "what")) a2 ## ----fig.width=7.5, fig.height=4-------------------------------------------------------- afex_plot(a2, x = c("plausibility", "validity"), trace = "instruction", panel = "what", error = "none") ## --------------------------------------------------------------------------------------- (m4 <- emmeans(a2, ~instruction+plausibility+validity|what)) c2 <- list( diff_1 = c(1, -1, 0, 0, 0, 0, 0, 0), diff_2 = c(0, 0, 1, -1, 0, 0, 0, 0), diff_3 = c(0, 0, 0, 0, 1, -1, 0, 0), diff_4 = c(0, 0, 0, 0, 0, 0, 1, -1), val_ded = c(0.5, 0, 0.5, 0, -0.5, 0, -0.5, 0), val_prob = c(0, 0.5, 0, 0.5, 0, -0.5, 0, -0.5), plau_ded = c(0.5, 0, -0.5, 0, -0.5, 0, 0.5, 0), plau_prob = c(0, 0.5, 0, -0.5, 0, 0.5, 0, -0.5) ) contrast(m4, c2, adjust = "holm") ## --------------------------------------------------------------------------------------- summary(as.glht(contrast(m4, c2)), test = adjusted("free")) ## ----include=FALSE------------------------------------------------------------ options(op) afex/inst/doc/assumptions_of_ANOVAs.html0000644000176200001440000014207714665070065020011 0ustar liggesusers Testing the Assumptions of ANOVAs

Testing the Assumptions of ANOVAs

Mattan S. Ben-Shachar

2024-09-01

Foreword by Henrik Singmann

As all statistical models, ANOVAs have a number of assumptions that should hold for valid inferences. These assumptions are:

  1. Observations are i.i.d.: i.i.d. stands for “independent and identically distributed”. Independent means that, once the model is specified, the conditional observations (i.e., residuals) are independent of each other (i.e., knowing the value of one residual does not allow you to infer the value of any other residual). Identically distributed means that all observations are generated by the same data-generating process.
  2. Homogeneity of Variances: the variances across all the groups (cells) of between-subject effects are the same.
  3. Sphericity: For within-subjects effects, sphericity is the condition where the variances of the differences between all possible pairs of within-subject conditions (i.e., levels of the independent variable) are equal. This can be thought of as a within-subjects’ version of the Homogeneity of Variances assumption.
  4. Normality of residuals: The errors used for the estimation of the error term(s) (MSE) are normally distributed.

The most important assumption generally is the i.i.d. assumption (i.e., if it does not hold, the inferences are likely invalid), specifically the independent part. This assumption cannot be tested empirically but needs to hold on conceptual or logical grounds. For example, in an ideal completely between-subjects design each observation comes from a different participant that is randomly sampled from a population so we know that all observations are independent. Often, we collect multiple observations from the same participant in a within-subject or repeated-measures design. To ensure the i.i.d. assumption holds in this case, we need to specify an ANOVA with within-subject factors. However, if we have a data set with multiple sources of non-independence – such as participants and items – ANOVA models cannot be used but we have to use a mixed model.

The other assumptions can be tested empirically, either graphically or using statistical assumption tests. However, there are different opinions on how useful statistical assumptions tests are when done in an automatic manner for each ANOVA. Whereas this is the position taken in some statistics books, this runs the risk of reducing the statistical analysis to a “cookbook” or “flowchart”. Real life data analysis is often more complex than such simple rules. Therefore, it is often more productive to explore ones data using both descriptive statistics and graphical displays. This data exploration should allow one to judge whether the other ANOVA assumptions hold to a sufficient degree. For example, plotting ones ANOVA results using afex_plot and including a reasonable display of the individual data points often allows one to judge both the homogeneity of variance and the normality of the residuals assumption.

Let us take a look at all three empirically testable assumptions in detail. ANOVAs are often robust to light violations to the homogeneity of variances assumption. If this assumption is clearly violated, we have learned something important about the data, namely variance heterogeneity, that requires further study. Some further statistical solutions are discussed below.

If the main goal of an ANOVA is to see whether or not certain effects are significant, then the assumption of normality of the residuals is only required for small samples, thanks to the central limit theorem. As shown by Lumley et al. (2002), with sample sizes of a few hundred participants even extreme violations of the normality assumptions are unproblematic. So mild violations of this assumptions are usually no problem with sample sizes exceeding 30.

Finally, the default afex behaviour is to correct for violations of sphericity using the Greenhouse-Geisser correction. Whereas this default may in some situation produce a small loss in statistical power, this seems preferable to a situation in which violations of sphericity are overlooked and tests become anti-conservative (i.e., more false positive results).

Thus, my position as the afex developer is that an appropriate exploratory data analysis is often better than just blindly applying statistical assumption tests. Nevertheless, assumption tests are of course an important tool in the statistical toolbox and can be helpful in many situations. Thus, I am thankful to Mattan S. Ben-Shachar who has provided them for ANOVAs in afex. The following text provides his introduction to the assumption tests based on the performance and see packages.

Testing the Empirically Testable Assumptions

afex comes with a set of built-in functions to help in the testing of the assumptions of ANOVA design. Generally speaking, the testable assumptions of ANOVA are1:

  1. Homogeneity of Variances: the variances across all the groups (cells) of between-subject effects are the same. This can be tested with performance::check_homogeneity().
  2. Sphericity: For within-subjects effects, sphericity is the condition where the variances of the differences between all possible pairs of within-subject conditions (i.e., levels of the independent variable) are equal. This can be thought of as a within-subjects’ version of the Homogeneity of Variances assumption, and can be tested with performance::check_sphericity().
  3. Normality of residuals: The errors used for the estimation of the error term(s) (MSE) are normally distributed. This can be inferred using performance::check_normality().

What follows is a brief review of these assumptions and their tests.

library(afex)
library(performance) # for assumption checks

Homogeneity of Variances

This assumption, for between subject-designs, states that the within group errors all share a common variance around the group’s mean. This can be tested with Levene’s test:

data(obk.long, package = "afex")

o1 <- aov_ez("id", "value", obk.long, 
             between = c("treatment", "gender"))
## Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`.
## To turn off this warning, pass `fun_aggregate = mean` explicitly.
check_homogeneity(o1)
## OK: There is not clear evidence for different variances across groups (Levene's Test, p = 0.350).

These results indicate that homogeneity is not significantly violated.

What to do when assumption is violated?

ANOVAs are generally robust to “light” heteroscedasticity, but there are various other methods (not available in afex) for getting robust error estimates.

Another alternative is to ditch this assumption altogether and use permutation tests (e.g. with permuco) or bootstrapped estimates (e.g. with boot).

Sphericity

data("fhch2010", package = "afex")

a1 <- aov_ez("id", "log_rt", fhch2010,
             between = "task", 
             within = c("density", "frequency", "length", "stimulus"))
## Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`.
## To turn off this warning, pass `fun_aggregate = mean` explicitly.

We can use check_sphericity() to run Mauchly’s test of sphericity:

check_sphericity(a1)
## Warning in summary.Anova.mlm(object$Anova, multivariate = FALSE): HF eps > 1 treated as 1
## Warning: Sphericity violated for: 
##  - length:stimulus (p = 0.021)
##  - task:length:stimulus (p = 0.021).

We can see that both the error terms of the length:stimulus and task:length:stimulus interactions significantly violate the assumption of sphericity at p = 0.021. Note that as task is a between-subjects factor, both these interaction terms share the same error term!

What to do when assumption is violated?

  • For ANOVA tables, a correction to the degrees of freedom can be used - afex offers both the Greenhouse-Geisser (which is used by default) and the Hyunh-Feldt corrections.
  • For follow-up contrasts with emmeans, a multivariate model can be used, which does not assume sphericity (this is used by default since afex 1.0).

Both can be set globally with:

afex_options(
  correction_aov = "GG", # or "HF"
  emmeans_model = "multivariate"
)

Normalicy of Residuals

The normalicy of residuals assumption is concerned with the errors that make up the various error terms in the ANOVA. Although the Shapiro-Wilk test can be used to test for deviation from a normal distribution, this test tends to have high type-I error rates. Instead, one can visually inspect the residuals using quantile-quantile plots (AKA qq-plots). For example:

data("stroop", package = "afex")

stroop1 <- subset(stroop, study == 1)
stroop1 <- na.omit(stroop1)

s1 <- aov_ez("pno", "rt", stroop1,
             within = c("condition", "congruency"))
## Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`.
## To turn off this warning, pass `fun_aggregate = mean` explicitly.
is_norm <- check_normality(s1)

plot(is_norm)

plot(is_norm, type = "qq")

If the residuals were normally distributed, we would see them falling close to the diagonal line, inside the 95% confidence bands around the qq-line.

We can further de-trend the plot, and show not the expected quantile, but the deviation from the expected quantile, which may help reducing visual bias.

plot(is_norm, type = "qq", detrend = TRUE)

Wow! The deviation from normalicy is now visually much more pronounced!

What to do when assumption is violated?

As with the assumption of homogeneity of variances, we can resort to using permutation tests for ANOVA tables and bootstrap estimates / contrasts.

Another popular solution is to apply a monotonic transformation to the dependent variable. This should not be done lightly, as it changes the interpretability of the results (from the observed scale to the transformed scale). Luckily for us, it is common to log transform reaction times, which we can easily do2:

s2 <- aov_ez("pno", "rt", stroop1,
             transformation = "log",
             within = c("condition", "congruency"))
## Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`.
## To turn off this warning, pass `fun_aggregate = mean` explicitly.
is_norm <- check_normality(s2)

plot(is_norm, type = "qq", detrend = TRUE)

Success - after the transformation, the residuals (on the log scale) do not deviate more than expected from errors sampled from a normal distribution (are mostly contained in the 95%CI bands)!

References


  1. There is also the assumptions that (a) the model is correctly specified and that (b) errors are independent, but there is no “hard” test for these assumptions.↩︎

  2. But note ANOVA no longer tests if any differences between the means is significantly different from 0, but if any ratio between the means is significantly different from 1.↩︎

afex/inst/doc/afex_plot_supported_models.R0000644000176200001440000003117614665070062020511 0ustar liggesusers## ----echo=FALSE--------------------------------------------------------------- req_suggested_packages <- c("emmeans", "ggplot2", "cowplot", "ggbeeswarm", "ggpol", "nlme", "glmmTMB", "rstanarm", "brms", "MEMSS") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ## ----set-options, echo=FALSE, cache=FALSE----------------------------------------------- options(width = 90) knitr::opts_chunk$set(dpi=72) knitr::knit_hooks$set(document = function(x){ gsub("```\n*```r*\n*", "", x) }) ## ----message=FALSE, warning=FALSE------------------------------------------------------- library("afex") library("ggplot2") library("cowplot") theme_set(theme_bw(base_size = 14) + theme(legend.position="bottom", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())) ## --------------------------------------------------------------------------------------- set_sum_contrasts() ## --------------------------------------------------------------------------------------- warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks) ## ----fig.width=7, fig.height=3---------------------------------------------------------- p1 <- afex_plot(warp.lm, "tension") p2 <- afex_plot(warp.lm, "tension", "wool") plot_grid(p1, p2) ## --------------------------------------------------------------------------------------- ins <- data.frame( n = c(500, 1200, 100, 400, 500, 300), size = factor(rep(1:3,2), labels = c("S","M","L")), age = factor(rep(1:2, each = 3)), claims = c(42, 37, 1, 101, 73, 14)) ## ----fig.width=3, fig.height=3---------------------------------------------------------- ins.glm <- glm(claims ~ size + age + offset(log(n)), data = ins, family = "poisson") afex_plot(ins.glm, "size", "age") ## --------------------------------------------------------------------------------------- ## binomial glm adapted from ?predict.glm ldose <- factor(rep(0:5, 2)) numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16) sex <- factor(rep(c("M", "F"), c(6, 6))) SF <- numdead/20 ## dv should be a vector, no matrix budworm.lg <- glm(SF ~ sex*ldose, family = binomial, weights = rep(20, length(numdead))) ## ----fig.width=8, fig.height=3---------------------------------------------------------- a <- afex_plot(budworm.lg, "ldose") b <- afex_plot(budworm.lg, "ldose", "sex") ## data point is hidden behind mean! c <- afex_plot(budworm.lg, "ldose", "sex", data_arg = list(size = 4, color = "red")) plot_grid(a, b, c, labels = "AUTO", nrow = 1) ## ----fig.width=8, fig.height=6---------------------------------------------------------- ## nlme mixed model data(Oats, package = "nlme") Oats$nitro <- factor(Oats$nitro) oats.1 <- nlme::lme(yield ~ nitro * Variety, random = ~ 1 | Block / Variety, data = Oats) plot_grid( afex_plot(oats.1, "nitro", "Variety", data = Oats), # A afex_plot(oats.1, "nitro", "Variety", data = Oats), # B afex_plot(oats.1, "nitro", "Variety", data = Oats, id = "Block"), # C afex_plot(oats.1, "nitro", data = Oats), # D afex_plot(oats.1, "nitro", data = Oats, id = c("Block", "Variety")), # E afex_plot(oats.1, "nitro", data = Oats, id = "Block"), # F labels = "AUTO" ) ## ----eval=FALSE------------------------------------------------------------------------- # library("glmmTMB") # tmb <- glmmTMB(count~spp * mined + (1|site), # ziformula = ~spp * mined, # family=nbinom2, Salamanders) # ## ----eval=FALSE, include=FALSE---------------------------------------------------------- # library("glmmTMB") # afex::set_sum_contrasts() # tmb <- glmmTMB(count~spp * mined + (1|site), # ziformula = ~spp * mined, # family=nbinom2, Salamanders) # save(tmb, file = "inst/extdata/tmb_example_fit.rda", compress = "xz") ## ----echo=FALSE, include=FALSE---------------------------------------------------------- library("glmmTMB") data(Salamanders, package = "glmmTMB") load(system.file("extdata/", "tmb_example_fit.rda", package = "afex")) tmb <- up2date(tmb) ## ----fig.width=8, fig.height=3---------------------------------------------------------- plot_grid( afex_plot(tmb, "spp"), afex_plot(tmb, "spp", data_geom = geom_violin), afex_plot(tmb, "spp", id = "site", data = Salamanders), labels = "AUTO", nrow = 1 ) ## ----fig.width=8.5, fig.height=3.5------------------------------------------------------ a <- afex_plot(tmb, "spp", "mined") b <- afex_plot(tmb, "spp", "mined", data_alpha = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0.2, jitter.height = 0.5, dodge.width = 0.5 ## needs to be same as dodge ), color = "darkgrey")) plot_grid(a, b, labels = "AUTO") ## ----fig.width=5.5, fig.height=3.5------------------------------------------------------ afex_plot(tmb, "spp", "mined", id = "site", data = Salamanders, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list(dodge.width = 0.5, cex = 0.4, color = "darkgrey") ) ## ----eval=FALSE------------------------------------------------------------------------- # library("rstanarm") ## requires resetting the ggplot2 theme # theme_set(theme_bw(base_size = 14) + # theme(legend.position="bottom", # panel.grid.major.x = element_blank(), # panel.grid.minor.x = element_blank())) # cbpp <- lme4::cbpp # cbpp$prob <- with(cbpp, incidence / size) # example_model <- stan_glmer(prob ~ period + (1|herd), # data = cbpp, family = binomial, weight = size, # chains = 2, cores = 1, seed = 12345, iter = 500) ## ----eval=FALSE------------------------------------------------------------------------- # b1 <- afex_plot(example_model, "period") # ## dv column detected: prob # ## No id column passed. Assuming all rows are independent samples. # b2 <- afex_plot(example_model, "period", data_geom = geom_violin) # ## dv column detected: prob # ## No id column passed. Assuming all rows are independent samples. # plot_grid(b1, b2, labels = "AUTO") ## ----fig.width=7, fig.height=3, echo=FALSE---------------------------------------------- load(system.file("extdata/", "plots_rstanarm.rda", package = "afex")) grid::grid.newpage(); grid::grid.draw(b12) ## ----eval=FALSE------------------------------------------------------------------------- # cbpp_l <- vector("list", nrow(cbpp)) # for (i in seq_along(cbpp_l)) { # cbpp_l[[i]] <- data.frame( # herd = cbpp$herd[i], # period = cbpp$period[i], # incidence = rep(0, cbpp$size[i]) # ) # cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1 # } # cbpp_l <- do.call("rbind", cbpp_l) # cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd)) # cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period)) # example_model2 <- stan_glmer(incidence ~ period + (1|herd), # data = cbpp_l, family = binomial, # chains = 2, cores = 1, seed = 12345, iter = 500) ## ----eval=FALSE------------------------------------------------------------------------- # b3 <- afex_plot(example_model2, "period") # ## dv column detected: incidence # ## No id column passed. Assuming all rows are independent samples. # b4 <- afex_plot(example_model2, "period", id = "herd") # ## dv column detected: incidence # plot_grid(b3, b4, labels = "AUTO") ## ----fig.width=7, fig.height=3, echo=FALSE---------------------------------------------- grid::grid.newpage(); grid::grid.draw(b34) ## ----eval=FALSE------------------------------------------------------------------------- # data("Machines", package = "MEMSS") # mm <- stan_lmer(score ~ Machine + (Machine|Worker), data=Machines, # chains = 2, cores = 1, seed = 12345, iter = 500) ## ----eval=FALSE------------------------------------------------------------------------- # b5 <- afex_plot(mm, "Machine") # ## dv column detected: score # ## No id column passed. Assuming all rows are independent samples. # b6 <- afex_plot(mm, "Machine", id = "Worker") # ## dv column detected: score # plot_grid(b5, b6, labels = "AUTO") ## ----fig.width=7, fig.height=3, echo=FALSE---------------------------------------------- grid::grid.newpage(); grid::grid.draw(b56) ## ----eval=FALSE, include=FALSE---------------------------------------------------------- # library("rstanarm") ## requires resetting the ggplot2 theme # library("ggplot2") # theme_set(theme_bw(base_size = 14) + # theme(legend.position="bottom", # panel.grid.major.x = element_blank(), # panel.grid.minor.x = element_blank())) # set_sum_contrasts() # cbpp <- lme4::cbpp # cbpp$prob <- with(cbpp, incidence / size) # example_model <- stan_glmer(prob ~ period + (1|herd), # data = cbpp, family = binomial, weight = size, # chains = 2, cores = 1, seed = 12345, iter = 500) # b1 <- afex_plot(example_model, "period") # b2 <- afex_plot(example_model, "period", data_geom = geom_violin) # b12 <- ggplotGrob(plot_grid(b1, b2)) # # cbpp_l <- vector("list", nrow(cbpp)) # for (i in seq_along(cbpp_l)) { # cbpp_l[[i]] <- data.frame( # herd = cbpp$herd[i], # period = cbpp$period[i], # incidence = rep(0, cbpp$size[i]) # ) # cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1 # } # cbpp_l <- do.call("rbind", cbpp_l) # cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd)) # cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period)) # example_model2 <- stan_glmer(incidence ~ period + (1|herd), # data = cbpp_l, family = binomial, # chains = 2, cores = 1, seed = 12345, iter = 500) # b3 <- afex_plot(example_model2, "period") # b4 <- afex_plot(example_model2, "period", id = "herd") # b34 <- plot_grid(b3, b4) # # data("Machines", package = "MEMSS") # mm <- stan_lmer(score ~ Machine + (Machine|Worker), data=Machines, # chains = 2, cores = 1, seed = 12345, iter = 500) # b5 <- afex_plot(mm, "Machine") # b6 <- afex_plot(mm, "Machine", id = "Worker", data = Machines) # b56 <- ggplotGrob(plot_grid(b5, b6)) # save(b12, b34, b56, file = "../inst/extdata/plots_rstanarm.rda", # compress = "xz", version = 2) ## ----eval=FALSE------------------------------------------------------------------------- # library("brms") # data("Machines", package = "MEMSS") # mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, # chains = 2, cores = 1, seed = 12345, iter = 500) ## ----eval=FALSE------------------------------------------------------------------------- # bb1 <- afex_plot(mm2, "Machine", data = Machines, dv = "score") # ## No id column passed. Assuming all rows are independent samples. # bb2 <- afex_plot(mm2, "Machine", id = "Worker", # data = Machines, dv = "score") # plot_grid(bb1, bb2) ## ----fig.width=7, fig.height=3, echo=FALSE---------------------------------------------- load(system.file("extdata/", "plots_brms.rda", package = "afex")) grid::grid.newpage(); grid::grid.draw(bbout) ## ----eval=FALSE, include=FALSE---------------------------------------------------------- # library("brms") # data("Machines", package = "MEMSS") # mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, # chains = 2, cores = 1, seed = 12345, iter = 500) # bb1 <- afex_plot(mm2, "Machine", data = Machines, dv = "score") # bb2 <- afex_plot(mm2, "Machine", id = "Worker", # data = Machines, dv = "score") # bbout <- ggplotGrob(plot_grid(bb1, bb2)) # save(bbout, file = "../inst/extdata/plots_brms.rda", version = 2) ## ----fig.width=4, fig.height=3, eval = FALSE-------------------------------------------- # library("GLMMadaptive") # data(Salamanders, package = "glmmTMB") # gm1 <- mixed_model(count~spp * mined, random = ~ 1 | site, data = Salamanders, # family = zi.poisson(), zi_fixed = ~ mined) # # afex_plot(gm1, "spp", data = Salamanders) afex/inst/doc/introduction-mixed-models.pdf0000644000176200001440000057373614665070065020556 0ustar liggesusers%PDF-1.5 % 233 0 obj << /Linearized 1 /L 194526 /H [ 2434 326 ] /O 237 /E 66878 /N 16 /T 192857 >> endobj 234 0 obj << /Type /XRef /Length 100 /Filter /FlateDecode /DecodeParms << /Columns 4 /Predictor 12 >> /W [ 1 2 1 ] /Index [ 233 252 ] /Info 40 0 R /Root 235 0 R /Size 485 /Prev 192858 /ID [<1afe497dd876b61c74ffbc0e0d8d8db6><16e47cc4be96e28b0e3c855154f94949>] >> stream xcbdg`b`8 $85AF " @H\ u@=PX@HWX101>8J s@㍁v(Aet9 R endstream endobj 235 0 obj << /Names 390 0 R /OpenAction 419 0 R /Outlines 367 0 R /PageMode /UseOutlines /Pages 366 0 R /Type /Catalog >> endobj 236 0 obj << /Filter /FlateDecode /S 197 /O 262 /Length 238 >> stream xc```b`lb`a`c`0d9`xnMks:KNF5f>4gwn(x|(薅qeK29jN#yѬic|+iG)ػR|/rһ⼨cGK٤,ݓj3eW,%@E"K2Ypd){ ?io >-J:z כB'@> endobj 238 0 obj << /Filter /FlateDecode /Length 4696 >> stream x[YsƑ~_Of4:Fɖw$^Grlh h;,JvU֝ǗY`{Ż߿W*Ow*J~lmˌ\n?oo:o۱S9֝PƎ՟nTRU3pK)Ok~lw5IqkUN#o<}8m X:, <\I\R9.W~c]6k&Mj#؀ߑL-i(>ه'&e#A lªR:G3vJKu#1nڤhBdX*Oeĝ`_*2sQ(|Գ [ [d,A$㮼rSPСvމ0 Dhxyʰ~:?qU%z 5%HX5Zհ { T\ sv;ޒW  Ǻkp0YҿMt{u^M$ &2 kn6lzU~fFD ,tkduSFMXbBBf5%'!ճ ζKAK {o =I| ^" vrQq^r:#^T['YT:vQ+EerհYK:DVr>Tm{GY h$✳3~`o Z.>֍GFIjFc梇;_c8cWyG$yAE}S^˴w6@qEs-vڷZYo,(]k#!hUIL=RW &h?p #RXcmpBڃ¯c] /Ka Nܰݣ3wl3dMP?3Z3ЏB5(,F뉘XNUA8{3f##}NI 2:eդ4Ic%ĹA\,϶8?&Ik8.(6#coC#%w- Xޡem*hԛI2#9u6IP)0H,T*$Vbɀaa!ecLǣGN g:V,P!xp:JO]y.pN:8 ت& #࠘=p^E0q[u0c AQC}@9#[4+O߆r]?0]{ /ߕyge2]9V yEiD O9Mp^%x:󃏶e@p4'[md V0ْ؇(j(Z!cpRhxvc b*JYnTJSx}XuRMhG-Hzl2V/!18P+Ox)6FՓ*!m4MV` D22Yȹy`;97O27?mr bʏwe$V D]=QO#!ӆlڴF;~j:WoXo}^Z6o?x < Eo(@]tSUGB6AIwlB֪=Ht@;J`3F@=R?BG~d}r`R1Eq'vMBC'QlVl_JyAҟ9늒q.W `=|̔ĔX. &[u$?**e6J]\Ǟ㲵aLi>cɱ%Gi>X\Siʛ&#Ws1Ǧ}b-@[yqF! $Z>{.rڜ н]xՍ䑏|`3-dMxNvS_dG`Ssdy|}iС9ti`7T<$}`/ĸ6;nF > AOañx  r\}Nq:9!HrhGXzrKzy!!H EWiܶJX޺ʜ`fsZI"06 5\[pnRy,^e$ydWq}we3&AӟEA`%KSXYoY(_IEX!S[!_JMzSBWN_Y_Bsˑ~pcCwͳ%^x 8C;_od] ,d7PpulWMyOK!;D ST(}4Svdf[/~:fUŻ`&' <ŭ{Q:([l<@cm]5Bjn`c?LPe1D4-H6[~׈qh:ekaW}~ dBN6_oBrL?/2FzgR;Ln93qJ&m(\{# J׮4:R\6r۰Ǡ*U9N;`8 endstream endobj 239 0 obj << /Filter /FlateDecode /Length1 749 /Length2 780 /Length3 0 /Length 1311 >> stream x}RkPWU8ƎⓂ7$ټ@##2@ʣ&,ݘlB2A/RQ+PkGP Q)ņ2,.1fj$!HLN8#5X% M}QKG1#csNu-k@0\ xBOk4.P5-$uuV 4% [tjW c8nTߐaH 2%0 2 A\ӆ% & ,>{O*:hߢ Z-P9Jȗg&YZEaّݰ]H~G)>dUw!'R,m;ܚ!{EKq |_~uI:#eWG3zq'(s&6Jme@"03!˳ :135}𠈦 ^.AO6dynHE Gs_o+ߵ[HBDXN0Bwץti kl}WǩOa<gՅfU߭՘Fhis >zzNB1/'8^@DO ,WQrcQP-\⟺Uᢺו'ӟ35M5#]]c%jpvFp4r.O%v'OIq>prҬk5Oj_ -޸Ot?/5X.'yI_kj#+eWbJȸUӒLO u2nWT\vx2L`^}{=ZW /MI}5wNvJ+ vL/9zc)}ֽ4O]|ɻR;q۪kj^`tIϽJ';hO;]{8n[5̙U}NҷYx.=Ep<;ً)\8ZKgnǴ %-cw46G5ULʔ3 '9-`圄sgO܃s+":,) kv89dv`;<}b|G].%sn endstream endobj 240 0 obj << /Type /ObjStm /Length 4159 /Filter /FlateDecode /N 99 /First 889 >> stream x[isܸ_Im n J$[Y>k{˕(+i㡤UU!ݍ2i$ULH<4C4itL 39M([BXV2!F Vcܔj JReB{ !6 ʥLDN CF8G 8,B;!Ax;D`Bz+j׊bRKT{D%=1#!a` H$D!F9AK4`J*%cJHz!T0BOe,Hi0ʹPx6iibT$RI膘@vJ1c 4^oSEhZfVd0 KHp0' a8))?d4s蒆9by |N8`& v`et)(AK)Ѯ4h*Δ *+$b!!4OBSCЃA  a< POfӴPP0 ?C82`h`_~uq~8e2jTb[>u2; tOOoӓy8~&fl-_eï(e_ϊe,ӳMn_G{~㗇?>iQ,ڰ16a(l=>".ت+h0ز{':tuBOWG?7miu4, 2~Q!GTW@Kɫwǟ@xvӆt]u` ڰÎTb>~"x:pdeS4ixEW{G?(v`1囎y?.Gϵy[7O497x>yûigjLaZdĻ+^Mq?S˿$_DHTܞ3#057h a|WDLRG$]H|X >qv a*ۻp[%_a# aRiv| mnIU"la0=QvO.8 +Uk` X\U j+'b6$WYZJu{TS|ni*R-Hwp"<%Aᴑ!PO"*# |\4+Ї" }EN0??l-i5y44[,IW(fgv=/. ƯF>lYM;t:bew>?.1l1gQ- sĻ7 ~o3+!r0F<1WӼB̐'6é' ?y` DYl/'O׬DՔK] x*^S 8XD0~K0Mv+w 1$q* ,(:pN'%T50)0,I|9y֮f<* 4Ś nţXOK]+S%:ʌ4.c|Z5Q tҔmI}붻i A ~ S< 䕨-v(Gz[{k: OU~."b{Xt(m,C_ji2DŽg;ѡ,% 1)jIHeD&$c~t*;2(DoΧkIhM])EF!m[@7Bvf+c?zqt.C`j;:ekCvt{)0ZORe%YCMS4eHV,MzWӝ+znK\L?jחpԔ+"a_{:3%;c I0dW:"yhG@=eӖ!L,3{@iO:% @׭RI'hC[%aI-3(qp(UJrxLSӽ*tr5ȓ% 5h:EkUS u"~h'¯ݶ~֞.vT_EY.B+ziZoDCpgDYVԲ$6ei,i$]>]2;eI*˚4F Wam[>LjY*4ɍ:a2&FmC#˶ g[ U]I7joihIne! Dw[jUfB;Y&!4Ю]ש*ui}۹BܨF-b7[jim# fW7\;bok [YrMт6BfŒUW7W8HF-w0a>X}K*NFӬsōjm"[CEY6)F /٨_\2@.-E Q=^x`4oףI-r!Hq0Hh3[#nCv|fiHH1&1{5?+/\j#D^>> stream x}RkTSWZ(zDBn,I"Br & $J| Nf1@eA4 O-GRXh"Йڵf?go`' r%XPJwNpw98a`"tΤ1 "DFH T*D ,ӌ "&@,EP3b/Qƭh 0 gN@`L $p4yN)0p^2]$GdW#8D)U""R % Q,"8Dd xC%0.CPX)TAh1V(sY DL;<%9+ 'Ra,2W ~- ߵ/ETIT LO q t1 :@H*qin(FG@8 1lt #D48N0_hD \k{B_R^ӗpcሄߒ@#H $Oݑ燩NP,62LqWb%Id+8!? `Y&9{t*DX_cp-9s`m;︤Һ5OWՓ ڇ+&L~湧 Rxvx奏nx{[㑫#΅̟}GWC@t,.n!2Eǫ2"쇉Yxd2Tֱ׎&wNnϻ+uJ/) rӇE;/'?4G+g4c"ɔxgU7D"q:.0A=,6IyK_`uYGg1=u6ol?};;s`㷩eIF6۪FU]MߺSr5d &ߓجe5\- 9 b/pBnV2'̸Gmd֮ysWc6ѧ+`Q[ )qA=GrovBstUZVYQme9% ?Paڤ/ii͕Ikw̶>ymiW?mvDs̷ö#{uQe~Z . Tcd;a>AM*y]VJuv5.*kb9m4OG][2+ m"7gr;VޗY~C|؟&0+]@;${$,>q٢<3SEwݮaI[WC.ؾSPO-u.=opxoiOOE\K7!ݷ 'w Np UzcwImc_nȕpbC7S̭rfZ =֜T8cAMZU]l}}lYM}cY8^}Yk.v4eSGD$|i 6y]-x}VTI5T;4;. Y+pp:Ry1=ſ{ 6:>@<>-?Z5fK $z|݉C| |Q};92qQ&6r$ם)ƫS> stream xuRy*DR;{y뺟yTiX7UUS.HG lFG@@H8" 9S < :z 0 -^o r7C h@m@[280+` ˖E[Rlub!:d@AUk΂|L`& (( tV w  -&` xOs%[ޜO X(?;ht?0 AN0pB99:YXz%0 wt.@:,N   |9\ i8:;OGK 8_B"$]Ȣ-1JC0wޗ0v@ @JGP]?vHKI:zİqhKM<31 /+5 :~[sND?ʪ 0;hNӘy6\<>hu2o~A~Mo28.$&p#BHG6=+(3T73S"z#9کkayX|)zlՄàZL%Emm٠Bj}Į?XD ?G6g=? -{O}ٽ CIS6sʵNfd % 1 wKҴG0OwyֆİM+2-TĽ),0JǒmnksZКm~o.sL.r}9 3MhD5ڸ{ yM3.9 %W(Ά ROOqnc?c5%E D%3{Cpɓz3owşrmsk>k_6jS12ΛeiV}j~{ J=~t=I RN2Ar(D bu: E6 zL)0-(^5%)nHH6l;;)ỻ~^R'!'vּۏmf Wtj G3q~O릊loe )uϋ־|^|a}4\UݨRr\DԛS?C{pBu:^X*V;C b7m9qeO.Bd&ғ4Y7+;z-)&jirGc4v~9GzPTzĈdh:xئ6U>*8JUvu[wv^j5#Ŏ{~gܛ V.e޹ޟ_+a#eyf/t6ݍ_/]ʞkVH5S'6V+Rpw+D I# K@Ϙ,4DhvBS3X'C;V"/ o~8,sud]6=%ݮ>QUU^esGE:_b CcA/U߲n8.]~,7u1QY3wR R(Ԝ N|[N,(J}HU@g[ S9/ 4 endstream endobj 243 0 obj << /Filter /FlateDecode /Length1 910 /Length2 1799 /Length3 0 /Length 2430 >> stream x}Ry<chJ<#9EiȎx233Dڐk:TT mTDҁJ$K2 o|| Hh: l\DU8"v"-cp TDlm'Gez`VΆ%X d@lf6;; p_x: ry"J@Z L/* Lʂ!` !>G;BeB46 /s !p _x62!6HyЬ&` hl_M^0Ѥm:tD `N@To<Fo~!_ MQs*`d/[i0b3<rhIw b,0" 8|$%&D `hwLX-0 G `@blwZ1{a d6r![n87&G=kiG<&>[b#~ќ j`_ G 'B Iy 􎎰 ?/~5r\_o8  @Iv1fA7 Uim~dby<&CȆ(~]黂 Q'n<'nψE paEURr~m 櫬$krK7h\Dz髨P+Wd1w3#,=B$̐eEڲY} tzD(j:\ Hhu&BgCBvDA̓Ϳn G/fiIouTVSsOfm݇S({hNdxڬ)9-B1i5 - OrJ)ͫͱZ0+vT`WP1dS{-=kJ1{%&Oʐ]6>)?eߵ8y,V4qd m^Pa=CSmhS7[V4YT]Q?R4"]w/[S`hÇ'Dڜk}R̺g^ZW XΓkX{F;%zy썚H<*Y&J6hfp.WpVd2G^aV1H4#r7ߡh :w{xELpqܺ٧> J;T"nGMirB OkũS#uʒŲ i"JXdof*K1'5kyXtE.?c`jml5rY:ͪ q51 h^ΪkPM[e-Cz[ rK{޽mᱠ$e#.}1sJVP_1Yd~rVevQ k\\\rZvG<B`xbفT-ScQ zQ6UhDG%irϛVp3|{`u^S>jVx*˪=zl_֛ܒ\vҲNdG͍rɧTXT (k=RI䭬V葧]$]G_~Ostv$W?Uo'NIeea-ͻ#Ned=y6YdS[Ob3eǓ{ʭ."m2oRU?5̛\vыϨdN#US>KJ'1rqcjU0Mbr쭗SDx ^avŮڠ t]27 {.btyfX^t"w8ωC1w3_,`}BӤ{SS^&'}0RUcfC Rc*=8njQNpጦb;tQI]Xe[^=%m+n+zqL>)&g{`8M&6zRxS:TP_0tp=#TS>)ʯ9\e%HW*,'?ƚP:ZFg0E+d;r3Ѓ:Z!oa=i媫F֥ ot>ե>\{ި'_U Ævm^T{/[K^`V9֛ٓА _USp endstream endobj 244 0 obj << /Filter /FlateDecode /Length1 830 /Length2 1395 /Length3 0 /Length 1968 >> stream xuR{<tCJ%јҲE4F3ޝ1; RlÒq[8X%tq]A+[QZ]y:~~wMgW,o  1::_ yV 2D#x8;a"!'QH"bx aގ2h@Т$LqN[lo*#1aQ ͅ2 b #?bp2DŽ\9#  ɉ ڛ 6w֭cA+ -c~nj 8 V$Y@>`P  '0ں8CA"$`  R 1ʰX y1"' >4 ~\xK]yLCx<ѳr;w,-p,`cI1&E% K|`@1R>h&LR3_bm[;0THk5B).Ӧ3җY%ݹ0|ثBTm"g0b y䫳;q#&}Kٗ@M񐾍&?]yL@K4 ;K4M!楒Y@XP.mOFe!R͒r6t2rzZZ0?1>}=v*ZIwr]}{ G{љ%Hv,yxvl֤ٱ7ZIdEZ(L>VD_Zums %Ȋ*;p4"l==:"NS9- *5̓k O!,D389ooDyíq})r_nMMٞ?A$݄G:aY#N<b8`o7ʙէ! R<Ǎ ZQTn}ZR})wޟN)3V7G(JoJ[D ~jvĺ4uDn9z0NjzL %bNe墶VOVV (-}|>{rCMYU6v؋> Sn9aUGjcc2&p R.?0koJ~BohW';q?xD߿HySUFP)1W=^Ra񜮹QG+7)Ѭ0e}`.Tu:{5O<'1?)u?l\IdYL[0A|rVϷL#NY|g~e}[lNK:S{`a{TՊ1jzWJvzɺ=u#ifuA&l.^V[V9?GMK> qvj|Ʊ<5Ff? ɿX8syF20i3'mY:=ik^ȯ.7 T* I^<o՜u܄1j{m=6uZ~,[ૻփ,;^֪-k Khy8YNDѧ&m}Mc-q;XOԼ$DVQsfmʛ]gwzfJɺ#&f#vg$iM9X5O.=ay7_M.9x5y7=?:_6*sD푯Łɭe~k4SK^?o4וw=5mg*-sBp&8A?l!;zl+5P2[":nT8W5x@hcW K{_D6;uDee#IkY93/5S{n_8tނWDU_VSqMQO/ګm endstream endobj 245 0 obj << /Filter /FlateDecode /Length1 864 /Length2 1121 /Length3 0 /Length 1715 >> stream xuR{\Se 7&%<0D.gc*"C)6qdvO1D5R0*(x) - b:_y}}ώuq(NDg @puqvv~"ˆПB^B$@( #K |CH"$"G.A q.t!n3q$aKDb{t =ExXD aCA[,;`~, C\X&KGC΄`q, <@ Ä\H$G'"1caN+*Aa-Մ؀F7@ub$DY̅fWH}i\60#Np \XH7-e8 b. )6A AI!xgf:٩qnGzu_P-)}Q/{q6Z; Mh7J1705P;tM>dE:Ɯeш旙޲Zc\kTN;'k;NNH0;}9}nTJ^8Y̦C% ;wnmV;2jo74CZ]b-9>K#WM8vo#ի`eMzΣ>oMg/R}UE4XwO-MS1xl49 \lJ\9rUVYQ^UO[9@u" X~eĝe?68: -ϙAm㋋C/Ѝ{׮ҔԕR5 pm:l@'t  ozMHу#Ɨ\2/V_urn-O^5%͖)s/,YW淚[Գ"whn{E4,-\*Zz9f|ɚ?W-3\cD X-Z|"RyiΆY*{۴9酿N-ѠG# U+WS+'w~QU^mv`ී{>4Kbt ۟~ p"n.}d]t@OȎϟszd++>˺I~|X+_oǧ283dx*!ʒ:eZ;dV[eS[nBܦ걧t_>NPΖ1g8EC!kUI?Z8+Hx]jrDٮ8]JK.Z;xJVZ M籊`P}ߏm{F7~uL3ыf|یE|/r%id{Jz T~| )9M G+]Dz"4szGCcso+m큽c> stream xuR}<FHSBḣ1j[kyw4ԑEoJJ|Nl9{)'|D΋;k\us}maxi\QYxRq }#(,DvQ@&b0ܰ0o7͛ )L!RUD9(8 `D0+ $"ϕ/iH}cK.I|:[eEe `~} n(sh"a)e('bhg"\Hć! 5nωܿ˓'nΣ4L)n_ۡXaaWLO:ȻGwɒ߁Z${Xm0RfO:W/ϟڦV4WKd4[CrkT݇ë ]sN5ŵ& x03!5ԵrxeR01Cn^*Q 3MZOf*K?_eEVr8;Zb|V/Hڱ78gߡuvp'tYz&ȜaъOm/kdQ 1'jn-SshEj8AJMoJ1X[9\4JSz&Yla]o$ae_|,quh٥dO M]5+[dȒʪ7%wŃ |۽ܷ/RkoQ=)K޺%Uz9InޤU!'ug}Z~A5XHߙ̐ƷB5SWLFUQ|ñWx?koڗէS4%nXd`1>$ 뽿yUGu g_h55[ܽ\K]ߠ<ӢRˊpC~Ίy#wf7Y93ks͎qhTgrm͕ 4xܕ{?g_Yx&܎ hov!nQv~rs8h±wKfMc< _qs י?nh- V) _}~83q3n1⇃j+JuOT 3hOjrʬ-^#R.hu endstream endobj 247 0 obj << /Filter /FlateDecode /Length1 1630 /Length2 19071 /Length3 0 /Length 19916 >> stream xct]&v$vŶ۶]UmN*VŶ}8_cqkkɈL쌀bvtL9 #'%;9;.:% ௜ Lhlag P~&...823RUI?%Wh1kk9Cd m @Ϣ6tXX{:$ E/5Z8YM,{/ @_t*VoV "&&!,LY2T;*sڙ?0v/:&vN3'7!.fVM1YnFU?~y/0v&i.I[5@;nuΘ'2-3ݹ;wxv/p}IJa]_ZW{M}4gҩǾh/5EO 2u A1L=jQfBQ`wRQIpʟԵ=qj}f'J#Z3GᡞȾ}|8X2ClS$gOWWʥjDU7OeobwЙ/X̾@0 .I]2&~Qҫ\<[a_;N\ኵ?lZO#-dDU\ i"ȉ7Z'@&ʏ%X?V+XC R6P}@7gNty((iJ}T+Njو%\>eY9? -ۅZ&}7 UbӦwd.ٝ]^KvWw([ ₀Qt.GðDH4,\/kҢQPc#vԱN~VpJfO$^a&kU@5?e1= i!vMj ADZӡmZ)jg'>-TᶑfENf5s)>/ OGKoW2(\}Cƌ+TzJyըq5z (b~{֣LPL=GڛJ܄BcOH&G M@h~{ʣ{=C^Es :d$~pΞ Iܚ/Dkc<]^ˏKV['}[w ,h!۸u3>KXsBCƯž|Q[*H|19ݜ;փa{e+ZrmT"H izR:Xt<\v'&L74`VN$6|JN]4-}GT`rFf'ۚUm9 .mW7gErCM+l ('ȝ.8y'vMAv)a~3WEOےWh&9}BxseqzᘤGKퟹ܇+j4jMAkED|~p ( /%0+C^eqgakMiغx)=ת)7aYG.X'ѿAyx_(Non{6Ć<4P.E3y {/Xrq01j#h֨wg; B䈀O#  <٤UUԄRypT L$ eiX܍tk61V^e1=wuMÎ}[7so?>æ"z\O䛔3M2 *.h9-,lXV,!y.7w/Uom ǴӇ3"nxl,sF>\W^BغqjEQa$kY *#~-1ѣؿ8{ )/Y|CCPQz="1Qxm}qө$ /ZJ"/相ū*Uy{f#8|no;uW@sݔQ k͒ØS1i^T~ikEeX=5q.8Mp? 1-"JCwU(~~:2+x6s:H[#g􈖂$IV8De323Q;!\G'1d|%Js7E~(mT:ٝO:Bep#vbTUq A"^$dʹhK ˱ (R|퀝S')ĭx;=C Q60.ijpDl+@w(X΁xEn]] R*~#D x# u׌Z̨Pkyo/r&|Cc;SPc(١8_X8"{&X֨58§Kb}HHK4/1EKQ$I ;!Kl:ے'KGAH`HVVtR։ijE7G@aΏMmy|FrX&*U@shd k)oVncӣZ|~<39CI3f8=v#RE.m!SXImDJ=\>*_?<ԢDžEZn͙¹,B)׽i1QP\RNfP!쩔Vɝqx,o,S)z==kZk_%t+kO%KFy{FB$@d"@A(PO',q.r#p'NJ<+9re]s59a7ȎhE>`52Myǵٞ;*b)hIL7!j29W7iYߙ3jnڛ#4]bV2wfM+(J%e0d6y$*>yo($#~R呉U* [`Qx}oI !Xƛ*7x<ݽ(YELmUCiiD)u ݮ *> 7\0_PqX#; J!Xa\^R4Qfs+  -'q`Y'ɜzgEgĶ戏ُAHc8LD]fr]l,T cp@Ѵ~RbWIeF9xo]9kt<(;;xauA5q7Mƒ -wɤB^izR$>y+E'á207 *Ԧ>~:[&l:ʠ,`LP*T7yU{ڂVj{i IQ%dU&"2*+%fw07xFH`& >Ҿnu98 u+P&yDJݡ))!r$$L(b:aMTc8FeLmS|zYJ뀼12>.LhuJ6fVO#ƐUq^:r?FX3u3LmM=RY(n-T߂א@ۦ8 _Th6 eH0&()tgYs fȬ~N=ʑZAs}M, mϔSW7hΆy:`F, u+&|H=L (ֈNigD"9qzUsV<4tSHW|m ܡ>H>(/+M01NJFdjPhr!^af!QAɜBR񠞥/j!ۤh wW,C1f%֯8`t=@[*lʥ|z'a4b *)_HH"s̫}4,+9\uhN~NikZYJN}^nPh>ljgW[rfSE4٦Á&{u# Z{M@lvcT9R&z#GnԾiږvfSZ3x0(xbD,(i9V+F䣷m8k*~hϡ dT8rJLU7 FñU) U`<q*wټ¤A#(jQZ)+)K ؐ/Ir~M lN u͑PZ 3۾>/N0A+UZj76h2PǏp jJA 7cl53}w  唧7f5tgˉGHws׍Fؿ8x\j<]?6@Hc;' 铒Txy],Byv6e_jṂ+O:S3S^sLh\cA(υ+Ԓ%(ѰdVZ r j3e}t>(F؝d`F8qKı"he&YD}Hׂ^vsq#]{!4M{+H}53%s[#{#L.;@g&ɿ?y$,WѽO⽖thh0.MVg謴=Q9fQ)ʼn`?ǟgABa[M>Ylr3/ 0?8NͻYFGXzdPNL# CP5@I~á1>;׿$~aNjbrՅzLUYPn`-!<(= ׎ 6VW SIrlUsZ6Q L<>̓p4k/ iv4b3$i<[1>'HQЈRf;i: ,qa0ִ-7]-N'L5 u _]N,1P pS )2 lkdݳV8ZyHC'%ҜCbuƁsM0~QHU'{& "ڼޢEY"S7msi>DCrUi+t8X}; ^8\ܪ1 ;Ӗ!` 'o֬[_8P7o^MoJR\Y{:L-޷~/K tCzQ뜵LX.Ӂ .CdʅWsӻ~ wK}x^gW3Y!u3s?3q^TF Y3}q-ȵdggE^#ww5#c\\YZ g]oXiUlUF L4\.JEDžy>BF?!2~35Y'ߋN=*75-oAn[\zCF8GI>L= 7]?ИKtիCfdԣVxr8H_YsXl6R v?DŽ~[C:UeTuC<3  "{,oX@V@%KL#=1>d<򫫄}w$b2Ji1IՊjn&lRUK/X `qMZ tx!JƮu/Q<'u:GcL}0~SU?="}a  4&y@zOf)ccy~.$4},T,0参d&%#!nicN-+.>2@i8S# w.a^]* 50dƜ6L0)Y~dss9RZu/X̱N$Ba:n  6D`}[mo ui\f FcuZKE.%nmi.Nȏd6/o`4}`[ζ7]kLlx'傒!}e+2-m[o68ld'q BBs9 GX]Վ$ˆHM&V$jd S_&Ɍ=h`s,U85#Z;BcJ$b{S}23hE@a% c}O{BS:f9,, }FV~t %"]CquB7\ȥj@j&NM-/4<y(a/\ou?i`w(ہ;S| ^$qN^lPC H x3gb1?_ kU ' yլM<8G$Q,ٮFByyMPؿۮ{rQy.Au\cbbG9d̴9\aNjQ)/*i >Pߥzp!Wbm1:!Dߚx(,>4}I8٥įc!ɛ~}*}.,ԐN *4=9|4e783X-s ttPJ?tMg;!sbwYOSsv6u6Lh}#ח\/ά,aHg*pxopKz^ʈ uBaK$@~]~ `텱@kڊ ͸vC?*FusΕ ܎汱Y2e?V]p:-Kim.!wFxM%^7E=qr3;©R B(}( &_OwvYwdTDsJh `7d& 3%"F!O$|V8nAU'oZs.Sz쌿(t٠nDBA姹)Bno)1ɈZshw ByXOHG,v\((Nb[1zbLY"Vqn#X'Q2Ȑgf7Vh/[#3;C,˴#Z3T{>J 7=T݌!#m`m9V(] q=K^&47/=aְ W4iψy><#r(cP`Z e&se][,|6P&ՙW ςHM:y(C0ENfg0gZUߵ\~E`ghàzCF7 O V—EmfɄ"S^- BNa7C.b|X-E7m&Js0P(h"DI&SAuL:[JIE ^ڣa Ml 1Q?1>S~שՌzZ^mX鷶cxtAdUyp^\{T az D!nE-L-buyjvH*aV%"hM< Ӽ>Bڗ40X1qSnaZZ|˩*RLUx9AM*kSא`ÃV ;6c~Ш0LRz:"^ؓdl},N8 ٓrqI "ݧbvMU,^u&Ikΐ;q{.XZ_}EUOU6biV KQJm  CJ4 Z)u&16(]WZU<ۗ2;_W5D` S|d >@zwN79O?!ӝ&*K&JB*_S.y)Ia`sOۇ*8CU :E$e%Wtv-dwct_Z)I3P#f ׿tL EޫfwzPM3 Ö:4wk#hT,b7'uQW`:qjS2)V,E!ñJhĥB/0;vdhDê|FD;s77)0SrbaUUxWgniG؉z0O^Tt`vad0.F"VdUλzMFYD%vMFگ"֢Fo鯀B|!_ZÇvP|2;Ae4{mo}*꺦D5娻sа+qljfNNׁ%l~iSrw=;k\*d0Ɵ^!-:10b(pmLoe {7:$ʂY91}[S &ֈKJWcȩ/Qt/;dHƻb蔪f~rUl(0_(I&O ];C7JZBRZlzU2YQ2QK =~N 4+͕Zd (s],r ["z13iܪ%<٢|ZW|-ʨ$VIj:_rJ@y+6QH]u8jD IJ o@]tgX7[:LPϳ4V«߲֘q'cC|{3.;*!*FYb:eՐ$-hzL}-c&Efڶ[0{>+dZn[tZ@*}Pn|WMA([˖=S8f$nfMfy6L;DZ7JA +4}[Ŝ~]FEݼKߨJjY%]P68XY7' g[Lq.vi"}8,.V+HQ0:(DN<'0zHbMG=n7m68U[cgjm";ՌʰޝJWu*6c=r-Li S227 yzίm,*&Cma9˟8|?*@TY;A OӜy0bIpy\Ã`SK;T ,1-t膨_2RϹtr$]nMA߳1&GfAоQG(^r^vH)@yWG~TYN_".+-ROGBr֌Md R+JCR-[T}=ă"9?PF0 9aNW-K?xtLҗ +EŪKRXŭí >J΅vG;Nj)yM&JtAC7#JIsѾZԾ|!gR/3裝FD ;  C@ u@Fdڀ@m&%il"yyPQ2$55`Fz>8eRˬa0/HĚ+___]#٘*9pylk qhL, vTkQ{ܝٗW. {~Jмޮ-{p[0dI?<~STJ+ U9#σu!vQۄu*Oq8 :Yd"[$ro 끇NaqHW'XpeSvŔ?2)JI S]cUȽ13y5foʫHT*$0 LH>ZT\1CҴoj;XM Ĕi,z EAkiRֽE!US?,=kPFjz>$ ؀FF.JU\9LJ# Ƃ. rb$@ bI0B8M$M} q^E"} 8Ϛe_!\kauo]5]USgi볧Vi<*v<z*ly 7+ցVAdrjK{X9J@QؿC7L% NKV7[ #rH&Gu Jx,rfh2br|QnNz ؈U"PIzwǨXM#'%V j( ϥ8ҥU҈w|jM,Ύ<EDs?G՚˿5i>7Fwn:N|dad:1 Wqw5:c`N6EE*X+Zݥԡ]Q˄^6*p&fcQ!8 X:Ͼ̧Jf"kǝ0Wfsd`Щ!Qg l+i(Gc~@tISi &kY_-<C*=MRtD;s5Ĩe_/5Ibgc`΍?(E"\IZ0Q<_!"Ȕ4&ΘӅ@gjkN(/>{}R3Y#'9/:ӷ/Eɷu`:~d=mph:m ##hҗKIGpJeXNl"{SަKw!]r#e&j.H耨c 6 tfJUQQ2|\P(!b9m*PĂk:lg +Rz_"̹2(oE#2&Rc 7s=ߎ|j?@ s>v\!7@|$} {f֌n^Mѝה}o)+rR-`MT!F|]W)ؒ 'J=0VT0uA/$pnȑ|q,PMJX7xKN!Q!h!n;^ic徼&ҭ;F:KS3-Y8<&!50ǰ /=lD0;| 2_O$mjSxDjM 梸O$qrODH XBGQ\GӲ4Sw~{|EOcr} /5sѴ"q 8<1nyj-/#.r#*MMVec.q3C[$"Cse0Mtah!.cI(r G讄]{zn=G%N 㓮>vÄ2%a{ ׺@ 9o20pnO\ę A'дyΧf7 5jd) *%Jlȃn !hơt rr\W-[Y5`cyz{D"j+rÿܑ\-c#isԫT/:"8UtF'CvnE/vo4Bm( ,3Wj7^Q+-o(bET-$_zW=}pH3^qIFTÈy\+K" qЭYCx<<۲T#Zq#ʲ¬7ޣ^Z<2W:ꋢG:,9j#UXǮiϓ.疿L>LV\6A]KOn?Ddc沇/1{.oOݏ]97 ZFĘϊJJ5susTaq_m`ocMQ,fe-$QsCr7v+̎b@~NSC\nT׿w /Jpg'SfLīl9OzӅs?;Q`k5k+khn0٧DZO}?UvQҠE4,h}\(LbtI C'b>XOv@.s-iG䊇$C>edyKS@pߚ/5Kwp !iZL:/o ~1lCQ(z`A kdzm rsM_i EhrW#Aj _\=Iܾ~'؋'L럶jޓ!LAkVJt/63 Y7OsYЊ =匍! ̑3/["\9ip$%U߿eFn"c{Xlp/>w{"s =AsJ ! 8fcajbCin1hMky8fMv`ANq)\=zl跿d8Es e:0P"L bzvD 9mf T㩍PG'%[ё櫉D ?<2=|wB =ÕNNQR{2dL <DeM#CJ'9 AiWXb?^S_Y2Zc3$Q80shTLًx07I 9#W}-;-VI80oh0uqTxL{"ғ *B2!_FwMSӃ/"u_5!ڎR97L@a];1q{t]$Ud` Q dAOxxH&W$=X^6< }rg\a``5CcY1tKc"R9/a& ȕIWEd#ߡ/p:sUNcNvˆvcihۇsLϔ* txT:uVVNё(W Yy4rN3waYxn<2v=ww]D3Dm$]<1\{Sz'gS*~q2- KE.qA6QӦ:I/,(Mow9۔4#}4?Cxr˞Io(Sf9J{dՔIGeOVN솆Fzmx:2]߉a-]Mb?뭁R2:p2Cԁk@[!./qph'@F!iUuaR{dcq C։_g3@^=kqY3H¶,]ƚJqR/h/ H#f5kã+Á|~`S = P?LCP.u=HACHd<};'+ͱYpc%~i/XJNN[6bHΜN+iSkrUKCk[YD*:${v7s`Ő.M gi3Ϊk.}WIŴ{yln r@J$G 3}5|SWQ3(?~k6kM_JP#Ypt'cT]Ԥ>eSJ}=?0M'Ѕ ,&E6rƜРI_5oX?'DՏI%3a}/ ecgrHX+1`>;T6CVå'jb/wW )ܺ%nKHQBXgrÏG k\5vfp je$y0oݽ ?X$KzZıgĝI{F3̝@&!+ᤡ%'/.;;-e][e]Ac%i3j!jJ€ō8 qvt̑D3ퟺնMT]ʲ(oRz+i e Ό@ ;جA) :wA$0jy@֔3zj=^n2 KrpeՌ2WKCđ<1U^>bhBS[8(s!> f|h3ޠn_>&,@H0K8'945m15hYʛS`9sI5f]a.W=<3V=0iv Fؕ/M 3s7C}6"Xw`z=$̣qx =*um̋T/P^մ*vi_fXp:mViKgϕ4BvJ5K{/x݇.!H ޢͪ*tG!ehMYoFvϒʹ)).NzIk죢;YNy endstream endobj 248 0 obj << /Filter /FlateDecode /Length1 1647 /Length2 15280 /Length3 0 /Length 16132 >> stream xc$ܲ%\m6e۶mf.˶s7f'w{Ŏ$'QR67J۹330,m]UmU.F6;9NĀ&37779@@IMKK\ƞt4PwڹT.@  - TPHNPr54Y휁3{'Ϳ{;SZsf% 08;M,=L@tKg;pXڙظS_ rpaKdldUILuX/ 7ijoOKE],.@r6Fs%spWΖvY hndjtvK>[F6hc7vp̋=vSW܀N foFv6Sߔ;DoEyo=Wj W#ۿ=hw @ϲ1rp,M?F6 wN!lgW!zfv-%,=J.&3#/)W &YXX!nQGZ^FDmw*\<ISx3spY8>ƿϑ',odeb`bb ?sbdgw;4lobR?2%; >PޤVRPk]e^:2{ OKkzFid 荞Jh-^k%>xZO$ݹE3ȃ(?) ='P4$` uVF=M+i5 G5BΨ@H͢WbJe0^IU#0wejp7QN2- h|DG~T +M9Wb鷧 'ZU3F"*1w^R~*=Cՠ>m̭EbǢ[8?8fCk8hRO!4bojvaQzre gUMM3+ja0r4 ʈ~cR`@J0Ktp0ٶᴽ/}#I+in8c"GVD|J_fTL#F08ѝ9]j9~R+}pXa =)EwG[zTAkQ]}֊N"V{6NO˯rEw Pƞ4׋z`ɓ%-r0< H[Gdyk n7&tYbxase4v $ BM {Z4͏Y_q8] tPPgFUvjrAÞ2/ >^fKRt P g٪&3p= ۟^|iQ6"~n*0 ";CBE} /)uq]W$0a'j;R܄q*bV݅1𶤱mUJ8f*e\o6x 0o$[a{6:5X!ɮhx48+C]{r6.`C;y@R"x{K2z\ㄅ5oеJ a6efZ~Lm16*OJPP)'P›`tבښOS&TC~DMr1/TsL數bZ yhLg1GUM`L:K=8,Δ~ lϩ֠T0K&dv+@ГrҊ7[=ܶNU2FexAd\+LJMjcfTb~ &M9¾6~`f /*F`~짫Rɣ›l&Qի|YZt?O-;w*9țA^.Ld^s QwJdwO4>pxX14c͞# uMlReyflrLߖ&9t ÄÛXA۫=EBV׻ng,{X3CIJxK_ȉbmdPH5ŰfOF@ P[zTӶW8̳NC5KmCe4_SyU+Vw7 W?7K/eX碕 v< L;?N57VLZ%R':t0zڔ^Detgr2i>􁁴k:VRK}8c.Dz d *?-1q_Cz2ryJ7As߂˟rL!2= 0 PM1IǯxZU ݗ)ӊf@:åa&ms.j.D$Kƴ]Uf&T_U`n'QFMSa}a2'ɢORJTbX³Lv#l+щZ`\5.KyD|؈gLG+(2ا.cS|X D/FH ׳{Р%$={ qĨ6gI;'9fY!61mXN")`D݄ЀK)JP/G8T|bN=]xfa& YuKѝ{j棡1w~Qx4E[@3\F߷]AsR rvрͲ% ̸2]N]nSiɏ3J\p͌@Wnl_2ItJ[!ImhJ4Vo'Eјz&vuJ#;ʣ)V!~!iz:ʰУJV8`>h DVĊx e0ՅDRO1UC|ClBB9btj(ni4~>{NvopD0C Q)W@%h7aklV|AMCHaG@6T_;j BLzҡ(F_o 3b:wsiYF?$ )jSR{5B3\+vrE% ߚ]%F"k;5H\muN~=Ӎ\bC0:,fNj=84ޏRV^daqZГgQ}}c,&xg'E)$/)"UH)~Rt^lvKD[~ٛ]8I죢X<v]pG^kB_75DLJ(:Bm߼ᆓ-'ST.`]y?]v?2Sb503^%[9'$'dbMZ_\Gv6T<=(Ǜ"$A dS;jN((fܾ>ٳTۚ%> HSÞdD\>!;*DLE67>P*՝wV+x00Do^K ތ_ƇA{+lQDXX<h:ҏ'\)<}:Qي[s_ɱ4#X̭"B+;ݡ OhJeb9wZ5?rQݧ|` &Dht!p0&=5V* "1snQ4jL ɻ8ϑr:ï23-=䓬8Gf B/.$Q3/_#)`h9ܔBp!LnGwW,rUډv_5KB-'L7K9si~ +Gz%ef7o8jbjm-0N c#Qq!cj|NlSB,Y>k pPB.!Dؤ9~^F%3npKdXҗk2W naoꢿ}.vw]-J&ɯ64]8Sh1] ry塛)؀*GlwS-VK\~dG ͽ3)uKgJ],6~<5Wt86!2*ރ7< ʕr KZ^?&MN5m9Uxqx:rt%Q o`@C.Tn&vP.n<-GϵW!m՞{kF$V19kzg7C) &>,j"s폫HF)?k!tRLPhBb׌ǻ9 1 f h,_;ʒ&h·s:/}SAV[j 1jlx<[&]4AoC:YWƒ˞[cF$5+'hř&\r0hGdJG EZi7N*r'ؙO:⮅ ~'tx$'Kh:;>㤍l[(M%LK>/FGH ytg՘Ë[&p"SMt}9v #$uܢͬRXj] n^åtY%;/h=] ZD_)&iwXqز 7܏nm"ݞFkm"fbyTkN;L[*ڶwu~j~T3#XcB׬JMF{؞Ѓ}*Nt\O#o9WŬB؝҆@VtF/fzѨq_,i\+kpb!Ŋ{q{>gF(/҄N r/R;[kIRN㈗x6SMqurh zz8=/HcX8{2Lxl.Ygh)Më h6N)y̬ dZGۦ-trk=f"0/F<3Z"Ax4mN^C mo MX󆴐TS $q Xv""QIj3_&֠ þ(=h;0}n-1OFL DMI i%¦8zzlbg-l(';0ƉawQh{2njhV*2ӇPz,!>okf/TT9Mq/]KuP|tCܴΧ:ʵiiH-Éj=X+ϵő <3=Ʀ_%6f ?T.b/5kk~)Bq!H[..ӋRod-Ͱ 5z^8Kum$^ʛ=QׂZt,pڅ?vx # "hA'hc 'bEG F_UHr {#CW0b Yp%;pAI6h>BJg vDn:ȹ^N0% 4Wl Q$YS+}s{t M8uq 'OGE!+|>א(5E=m1A幄ޢv+wxyt8qֱgg]mlK/vM৩Z 9 ֡|p]){;Ur/oaՑ*[Jz NkR5^5iG%W=!$f@ջr:7^d`i@џ- Іj TI˖,FWۧ"qJP^̞HT]As : )Ogz5ݒWBzn^YG*hRyTJw*b̩EYu ;O>'1(.ÝZ-Nw wѳcIquӣtg]UVw'mal)&ʑi -]WTEHT!c)m> "!i+3̎+b jGKUZ ÐptedrQUhф=5}WBdr ۏNcChkU;I@JS57#<+rzٲ.4l>@uA~z̬Jߧn'tq{.Q(ArncͳxuT#%_~*:{;Zp_ʧ6`IY1G{OVi$p$c->ת*'4< L‘Wzʎval>O)O.1 /|ku: *$ |ٙ'm`o+ jn! TR)|xgO4$`p.Cnx<@ӫKo"7`ހveDS` BzsWۥ[N〴e 9lWK ުYec &{m17~ԝ NfAKGa 22kԏ +]&ӈdwbZ n7XXYIkES- /̿ z]gl=A;i&Rí l$N)= ;щ„0p±-;;(ZmK0Hy.sk ր Dc|Ӄ%/2E pÅgmcF54c͙;#e!# I`u~ D;sюwVl:قno:J3Bx{ǧهt[! [Ez }dktNb ^p)=[4iX( ʠ q6h Rն X OO )IʥYKm>L"E%y&4YdzT7#ob%(e['V.J<\̬zzX5\4gDgfY "CSMm* \( ؅~G;c+eleSNC~]ȣRj݋s2)LqiװTqOS|)6q%e r7lsDC޴l5r "by`F`j>r&̙KM̃xq,:CQ.Hwe] VS9"#u3pdcw AUF*qBnTĀv,W{`$C. ^/+2^a~} dBm|b:3c 1\=M >sűͤܓ6 j[ŸQD\+ĪvQ+D{L\lh`Aq<TM>K-s>ɹ}D6g'VXEʓR. ˞]FhX]Ev^и ڵM[3ċ9@JY:I(M;(ZJ؍Co;ۊeUo}OhKhp06d9Jn2Ƽ͑B4Yx jv't%ݥй5St Fk@2y]rOʰFͤs _NLX+ũMC爀PFglA|v5WR]ZS Lđ: Z/ʘGD#ѮfS:nNo(|"0K透H5^A}7%d.á$3p}6ѻm [ЃGJ&X71 !~p,FtMĹK?_v#1c&V>BnFͤ`%4dpvd !nl]4O0:P_9~ Cl]/ԽŒ_ ⷚYiWz@ɯUBZ{3*iftBYnڐ֘ehݼl}h#=xN$B~U:| 庣7f/,Jk㙽 VKe8ZY|cj dWKDu2ACUۮT.S`H+w= ;OS:cfҀdXf"@P}/@Z@ch}в/6C'"7yY(z`Pc$Ev`'H0ퟳY,HX[D dCH!P;Ӗ\8yE ZdJ ?H'Yw:&^D=+Q|(H>4ɘ8$@ YuBYܠ"z)L;&; Gv2Nq_i:Rȝ\2:#?S%>KQ4LjFtݙL7 \%,hA4,$u/0n_!;]^la}b;Xϳ&y $:!5ÉѤwH<̛z^ƹ'zԙa|NAfwф#0W|u }V7ķDm_{@Ծ\@<0.#Z6EdGד̜.h{}w0q` x:`ދ%.X[nk͉~B腦U]-̿ކͽ7Q!qѐ=LNN!mĩSh is] =X̢ɘ]u1? xC[%7ݱ#hw <2C?P`f QDIbvۼ3D iT([1%5Lk䝰Z|t]Zg}yK;F} ݓc~W#RZN=[$Os.[m1 !EV;2(_+ƻ8QET (QG2ʹ6,o$Vcyb}iyf&t|)Ʒ~N҇Sgc&i8/p3 XBYї 9_mGmM}Z*a_5+k$Uu6xހ{Q2,(]iXG 7LƿY~j`v^bhG\ PjϹ)^}(. uhO"A e#۟ TDju sjf& [+%ƍk^P`|K~8bf/by°| ? e^((}f0~Qcs7CA@Y A=48YkMu Gk%sXM"-"Rvʏ g2Nq-ԛTSANp>5YtH,ܐ >Kh_q#)DϧoջY+{jޒR+ᅄhyhı܈3_lld%-_Ye2nIz-!|nA-":WLJ3)33eqʙ R-q :D|v&[T7rKdFΣl3n913qs@8%| :٠_rjJН9..W_o2v(q!vV-:%)o.(69eۃ㘔7r d+a XFPp)OUosL|߻+M -|\ϤYݥ/tK\׉[" /n.q"22NE;Ui6AFދ/*9`* cN !<ٌjk)zE_TAh2\UjF~mOLYm^ aI,Cha .yτVH"3Px_9#\o^,fl oU`T&pҬ~h*$]؁ WE,5$58Su#Aq7bg|Q5P%)&\'k%Ť w bM<{_nWnx"t8#sS)LEd B8?k@j+C@(UX2l08OF--C^t%\+3ll S:;b{WO45sa떾Ȝ-s=xxo|D.Tez엻ᴤ҄bt0Aǚ0o M5 vc)6(T[^/Y%'Gv x$e~1gk%Cj‹9lEB8(.II3'U#}sEC;,c/U rgaЌ+D;N a15yXWk *_:Cɇt\d')wO1Oi.*z3O U15֤oڦN5zw!$a)KEZ% gsoOh1 O*p4B”057NӔ1!#v3;@ƎF97|M9*\z2 G%bt֥^CY =8lWqJ)>_Gq-Uu &)֚s%7s&@cO6y 'v '0lq[c*د;{"OA:e1{ = sb tV2=/ďbACTC-޴=;]#9'tԲ'.V!JӘM<~5sK9 {ZDnM{XQK@ |0>Ѳkp3s =}<%4$_JBx7R:$ߕJ &wཉr`=~֜pB D%saDi] ay {j#7g{d"6Tlvg[RMIml3]KC֙w4:YN7vti0VI32\$GCM)JNRN+՞ ~Vqy..pD1I͸iBӝ9hb5&W9mΥӵK.(q.3ϘwAB8Ѐ&Λƈ^Չ7$4qЬ Jo.$%dj€%*gk"|`qYMѤay=eJCn`Ë> 1{Oǧ3,ɶ``wUNX{8qbL"hN+KƾNs5F[RC{l0TCM&sjdvn 9~g}N*qPcWscͪa%Y!Pk cjS(C^)*5]rʼʷT[ 0S_B^{<bՓA7uWJx~ލ,"_@ d+OA-ŻjwT*-y] |V2vs7 M:qߚ(hyd#7&|?f -Zd/6bV=D$A ":M|9J\V jBN 'gfط^>Iə=]p Trszpdw](@E o@ȈiTRg!6? ˨S< ytY3=KY|}GmޜyT[=XS|I~j/#qS /fJk͂<侄N}Spv<[UW5VFOB,f +R(+[Òsn|=\t8V GcVh h+w fVaNg#ď&VV5Z[RfS_5C /pDnw专ukՈS-H'R#=Ekzy|Y:^U*_D?4e2J2xR6 IZ@2jp -"1KDLz~?~`MܭXmnn`hK`t!r#j9 ]ŰCY&sO8)xf2|_61܍BXB#4n3SiHZ@hyVʝ+Vp4߬ˈ|b"a8JGU1ёun?/6b0PV4(+~}%eȩ|ڧAۖ(Guq^~m GFv2W4`Bh ]فU`uce+g+NS)\=@6`s~ԳKGQek١ u0|z[~ױdkIA;#`QJb`@VU4$~}fLQ^FENmۘ> stream xYێܸ}WN0"2$6b8Nv X5]:xn/V.ERDǔЈ“*9<9a< |DP OID8E=E$ˈ$ IJpHJxr/R#1r H T ?R@GOB JJAXPsCCv HSCyF!1PPQGB1S'1gL db%B<1H:Id@ O#"7xㇺ:OiaټvB_lW9*%o=LZ։g׭4+}(i"b5"+Rt,2C0d|[:+3փ8R!t'NF>7P.etj,RM=%+}䖵'z]?ӿ?Kڞs7s!Qiƞ!\*sԝO_:>FSu[#gSef2V&`,@v@ <]K"J:@lXUdn+XIѷ)=]_U:f'ݴ+[@(@4Y]]?'Xk~GZ]Utu&ԊJT/?94iJЌ]74i 9CpǔΊ4׺RYӼ(K;ܕhz .`S;5+ n{b_~jgP 1c}Q1haCC:]hO: k7'nL]fͅPOjLk:㋆=ì\E4Jj YC˨2[uNjUbo{d' `aYBS,T~@@1EZiTN+a-qt<'2Pviy}?ML֕ܙ? f%L-7SG~%~gs|7-lg[}84g'Uw+&F_([W :Ш xw^#o̻\a b<s1ا67t! <\iաY2oOpVYܨz SNj T> stream xZko_1{ŢI 4$Ab!0p#*E-=g$;l9EC s^Z(a #ŊqqBW/tAkD\0>Z{ߌ"wY+~ WxV(\ϣ$| lN+j-V$N$ YڋD:tI)ZQB+1Zh! kk X= 6ce]`[6s2m#oq sV=?,c&&P; <`@Um'P m: йsiD 5[Qob/^oߓmŤǮ|xyg⨚'MweWVsg)òN.jJ  _C4Fx<컪FmX6|*#DT0KiwaG i·W]C]JDŠJFM%OZz` 䧲TS899%"T#Ac(4_m懸-?%GBA&jPYsR(RUO:!PWn9a%ɦ9"FEQYhE1Bڇ9CB]jcVX|?(`W<W'bY#jrvd\]{=o=^e]eUF[jbƋFؽz6π8ͨv#*}vO 1i1\Tp!bK<ߦj#brىZk!N⃗]9\-?/UVr69b<5{ \QiFmRwa+fG[rqLJ<KrKͳf^}pTOVydbpZ79m`)rw &YFXЫ ;[&̃,V6 )TekT%/@=I d5Nˡك.&]pZ#BF=SM@@p}+#>Ϫ̦hC2{@0:]{Ϧ=*/6瀭/$?>[n\O4ML#bݜ e3kx?z|w]O?mF]?v'"{n -iSiI#5̿y\.,JEV,"noPEovCjUv(-oϠi}NdQT`V7u-`el@V;RI٭0YḀJ endstream endobj 1 0 obj << /Annots [ 424 0 R 425 0 R 426 0 R 432 0 R 436 0 R 437 0 R 438 0 R 439 0 R 441 0 R 433 0 R 434 0 R 435 0 R 440 0 R ] /Contents 2 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 363 0 R /Resources 442 0 R /Type /Page >> endobj 2 0 obj << /Filter /FlateDecode /Length 5991 >> stream x\Kvϯ襺j/<'{*k/%"uIiz:>dCiWi|Vw;uw2+23ݧ]1dI]&0u>o&U_?|?~_Q'M2(㥺4V- UM5>5#*~/:;ywu?8m6uKy~ʸf|N4 lȿ9&<˥g s;U4 瀯8.^Ǧ;ZTEz"M{ k|TƷ I umm=;2X7Rn6t iTw9|yXܘ}Yr^̊Vs^T7jGuG|+6~j']CӉ6{Uwu&ٿD ]xټ_ͿH \xM]r"U$HytU>g-'VªP#{}nv2dqC}c<3*Yp_.uw\Xurw]?航|.  ۸>Yxl3~ bsߍ4!BkJ; zz|0/IJ'i7KT>u- ?}e,K^u2@ݮ>.xVi>)ӑm/\jN~Tn{/ⓁW۱H9vE;.>kd%XF bR6VFaXn' ;<]S]wBtx(H0rvt= 6=gOBaD6SP!gD&b5)_@q|a b‡ׇO%S]XX_Q߹$%Vfv&DԂ6/ +63 @Bq6:|+j<Fa#GPkXy|x2Գcl(󵭐ZZ~^}OkeL4%DL *x 68rV%MR:5xN$ " hg<р:WkJDؾXB$qV M(l `* 1?``C-qN6yi+D(\?i3W^ՅOᅈzPȬ|*jY>} k~Nd?Azh7=?w\U\M 6gF :j$W3j\{*92PHMů#'vհ?= ^ `dUy6 (r-bh@ٷlt8b\`oTcC"C-,9N2g'gB =êF:SO^r^l"xڐV~7U!ns{#6Pэ pbgz1I.gLCPolT-#(MߪΗ+M| ǧOf'Kle Z֣4`Џ%QP'(wر2V^&0/w`cuN..e=B"ÏO \j9 4‰~Bfs@jGdC/Cn]Nz ݙQ:P4nd|L`oc {=,ױ$JaĂBA?2%gK*C.@7-̺5ΝqF: t5U AM9ɮAB#!ɘv`"h7c2K,F_L*^|N. Vkg(#}] j2,\%^(cD(W9!73Pwh4##}nЕ =t@(mXuj3f< K{x/ı*f{Oi|ѱ_Ant/'sabz۳f_x"1\4RD6RCѮ.Xɚm=`붂H;Oj,+isdU1vn\_`МWրP f{|!1!n 90V` *~& x:4_9N@0~P]>mX FkW0N4 )q_ ,ݼ{āg>Nz#<OqLujc[)KK\;~|&x8 l7bWb0=SZl}T̊YoNՇ :U++YDWTIJ҄,r4S6  TSty&$3ٷ uw"ڑ-FT`Yw$ߠ*nRm~ tə(+1li{Iݩǽ0^ꙡCQbN@OfVAM VT-A? .DtE4bA'`.0*Ǟ9'~+|ہP*p y "?<; zU/sа.]R9ŬisVKѳ桑`# wN}{,B kjϵ8dW>k&pY-/ ;%FZ0L#\QͼE 8O. ={6X{CFShǨ`'yac1+϶s3/Kt7ن@!gjnD/rOVѹ`v7=tCXb د 55?5N}y&hiRX x:q.O4-E}ؑdAթC`aN/TзSPjfH@SKAsK.tQ଎ k%ŶPt*Z⻪z} X&@hg I?HKHDe广bx&V 0ƙbG m%ͷ?BGPgl84ztlLY~HI. & E%F 'Y4on-$S*%j^R] 4ib$}QOO9c! -gq{o_ރ.tFiZ +m) SеKR]bœ[{LXM,I c"R`P"s5HE]Ǧluw81&XM+(V9'=' qF L`,A=?u&}#ۋ ?X!F:cC#*~X;r DrMIYyb mRccrAI%q5^F{ڂ|KLp`a5y5guQag gjK0[n;S^?(9P7ӚQS|pK]Oi>֧f<{ܼ'N: GU ]X-&\>=?O΢ M7rP/#gh 6ŒX`K榕cСQz? Zfn(W~z'whr,ҜR2_+ se˵*Pa@uCaZ#Rg@),1#k"9YxaĖʘ#SJboJ';M}Fk{lKVLlGdν醩<*ghXdA/l9;\O8 ߮olIzAw\;^B[%sH(,(`O*bqF@xYH[ 9 }23/b*|/R- 8mHGQ+hU=>/A⅗Z5jஞuւ;]"jQ Ivl3/x[jb S\!ѹC7dW[!%z^1pkAk(6!Z=.X.Iב% }㉒Su,  e!IVx| 3 JSA6v6324ؑĹ@qgf#6sؕ&fj{HbA@VI $.l%PȲPTyiNԋD9ؤ,{0ц&TfPy=t|,:q2B6)V^ =q~Yc-*gYbe?ڂe_)D}4[jHʋE9aK>)~.l8q2˧*N>9t;xyX EkbbbqV[@^Q0M??_Y~MRR*^8J3ǨI5{mw2B\(Bp\5fR<>ك>wϮU%$Կh|zrywldwL~"^*+~<MARx-[Lw b {Ms"}3` Z"NYQ/Ww;h$΢MZ)r ^\i SW #XD$A*%sT2`s{NibGsl(Jy+711qq^̀L,6Rd&'GrУ^z0ѕ`j!|͚4DbI~,Vq#-@X'*g#%ȿXH.^K} w-+zRnOU7իt+wփEvJQN&kkqx'aw$,9Ů/a|ΉsSWI3eUQn3UnhNQ'%5xyijK^j{ J+SgK͔?#)c@_j,4Z$4*k)BoXOZD> endobj 4 0 obj << /Filter /FlateDecode /Length 5964 >> stream x<ے㶕~UWF\vxRJz6U<%v7IԒ$AA}z"q/yſ-*L᤽q277û?۵*򋺨a]aLaftaNBN)>TޅöUv{uPCB&KS7./BK}`MXD!,dk|f-(L) ,S7YOJ\~nc}}Jw״.vGmru͟P*.Gk^(:t+IikRV<K7laަ߇9P7 P [@y˽[ _s Mǰu*” ]BS 6 a ݪo# jw +"Q[ @](LزaJDL' 1<T]1"ibp["bHP3.SGG+ %Fz7t&209}W(U:TaZY\X~grDJUfRByR"1#ΟU6cI- kVLP l,=wQ}mvam;llɢj: טQ/ ‘4ɣ6Tw=}l7LL*XՅF.gSQR@Jʂu3-( EXH0vm9t g3`NdzH4EzAk勲h}֕[G6Ti׆vKH MPm{:8X/.ƷFvS`t95C7$|P{kR#@WbNݶ&1]?os_3( LJr󥻿zفHsT@|f=7+Tptt}69b2=K'|_N|CM1p,(~ ܒ` /J0,j),-1]l^Pn6@- *)R]0 Hn$yB_BD*Je~‰dO&n+~ڤ/B乓Q¸7c ,ˋO@Sv #.0{l=TF;PBl"8rn!$ z,4&C:q͜⥋>;{)ؑ=Ԗ,cVZn/Sw RN^ Vo1QVe=VYQT b%b?E+N5+n *V%6D؀<9ꄃp73n_$n2 .ɆM Pm|<1FzZu}}M|U`E,Tc;BΐXH"wnSW&}w8!0c8~= }"O {gE ^gEa(C"1s0v7pu_U q" Dvèt )uֆ6??[~"?4~Ik kSD Z12RTx=!Z+2 gfMYk(׺ml` ‡R]:.rC]K3Ch"]͏F?0(mYj0Awl֐mu(m hdQr;qzqTK,cl*I1ȧ4ȧ)MK- u"NڻW9P< vZڏ W߱# Šb5Cp/ ІIxG elZ1&iOi94R`F W>p|b =߶|[Ω;rd(e$c Ļ{L@@ux:kהb}7K̚YTMyh{)PFT s<[bdZ ΧP1Զ P:v!;bnZxzfdQ w5_Y.=a ̫êѥ|[MeDys"DV&% )HG0.I"ʒ>@qt֬fP|Is-.A N(qGR9d`A`}xL4], M!{b4QZcMn6. ˼*l4O*6;\EM(|2 Y&`b"+: de7f>B&fm7|8lz W]i8I6bYJW,isӧngY4ծ12pBۊKyﱗZiN T!\*Ai57VGzi9)vcvW1heh27tcn6>P㕳$ hXd7o\1i;09`@z藜" 0#C(U1=%d5.vMLhϜA]ӝ> k\ّiN?šbBJ,Z76;l3\v_OƠ21\uC&cB-SR.KWRˢ(?}WOϙd.I“$0@Ô0%%0_0}|&i0i k.JR6/dlbP7L 0[p:Ðߦ=zFWD eo!c&L6tA鼞MHhMϠ5-  =IQdce\z6 n6-H٢eaLj @h\ŏG(&VV~r*M"'ͨ[d U%>2|W/l ]t.9If^/׭)۩Ǚ#vy]o%\Jidք^ztbfTc 0C> :9;<N D%:zh< )AvT<̀_V|l3yHR@p(@/Qcmta_(xgv圚]S+%1ep%㣔r+6~OnG <O? G%d nWa-*plEibK3ŰyS a_s*Ұ|6_B pb^^tSҋ3,2 @z'hc>^I٭'R`r̕6hf_pbHif^yWQ ʻ* 1K1cKGIoqFa*sf99Ǩ:q! F!CcJ ~T ʄ?N; Kv1]&xebm.kOf>&6,#ۍ;R0]di9[<`eÉTnpTI[^U:3cg‰g}$da0!@dKRA!)cQhy.Ib"Om s?$9U]*?g6_޸$w)){+"(rLIr\yw!?<] i_01Ȉ#;9q`˟󉗛VS^,zACBt&Z1a'eL>:go.Yh['D~'$O{. ), Iw+#){nn}Þr?h*o4ru8mlj5;qaXnCcC$AQ*~ 㜳+> endobj 6 0 obj << /BBox [ 0 0 432 720 ] /Filter /FlateDecode /FormType 1 /PTEX.FileName (/compile/fig1.pdf) /PTEX.InfoDict 460 0 R /PTEX.PageNumber 1 /Resources << /ColorSpace << /sRGB 464 0 R >> /ExtGState << >> /Font << /F1 461 0 R /F2 462 0 R /F3 463 0 R >> /ProcSet [ /PDF /Text ] >> /Subtype /Form /Type /XObject /Length 3209 >> stream x\Ko91>$y M a0`/)QjfsH۟*ȯzCi墟\PÔJv^\t/?Ww4ϳ_߿;58Y]z>4؅fu]]zԢߵ8_qoz2Y[Y{/?sq{e/c2fL*):V/<ϻyCF{c&(,nO /wzscT죞f\X+网;XO3qȊB *HK:U%I/~3gR~{:{Jip7&ϳ;SIhO``2Q'_nɛng2O(=hn7>oi0Rw~~XƋX+h/Y'4^|ƓufCO&!ޘ&Nj1^d?!1Pb&MӓFLѕ3eps^/?]|w= `wؼ?(F"YR1YKc\7΢^G)@W*ajNޗ0O#7|;ѕxi~;S/@?y^L0d06Prd4 8e\+~xbh"$̫,_%2 qaF4蔈\n.?]|jY3ށ0ߖ$IfmŃaN04:~}]a鲼Z&l}2ϣ\s1Ͷb73/+ج;ɰ#+=0\ |kwzT譋o,.st39 `%T K,)^@A" UJX񉙜3L OaldBBŴAwt$"-7$:D~jXe!FHUCn #Ax9?eaBdS2RX!:f@BgQpg_05QC>"b}pܳ1t\菩>VAWTسx>4?piI}58>lbŊ=fN;h>s|e]KÚ9}TR1H%F1^髽8>1[ _xi2t.e3$SҰcN_i9>U.%8O4TI`zT}{#`8 NiV9[>tg`~Ym;u*ޓUz|V9κ8!lGKI wzg)w4q}l+"y5z.vg(1gR?ボ?AJ`rK$@rX $AtrI`(J L-  A).|"Vԑ@2-X Xຎ`H灆'+=sA@+t@A!l)`(!=%%l)`(!`]SBW X{JH{JJXqվ@LG iQŠ+=%3v6%RjbJK  O]B M=ɏ drVGNWűSu)ڇcfrF@Vr,1Ȱ{? r`7i@bX4~h#r ߹&2nr A[fɁ:Lr?oW*ey*S,W%^2y=Zx-ʠ,VV%nYEʠoQeP(x2([AaE-ʠ,ޢ w7(p2(vʠQiCa{dueѼZ,aTsuoqB6X9)R>']l`xd5^q‘> +,)" "@ %%,ҙEB"Jg %~Y$"o P䷈xH([DBaE$-"0"P/b2"H(_DB OY$S1͂qoQDEuISsEF Ylb7+dѯB/8" YkԐE E!6<;dѯC;Fp`,5vȢ`cQ$!~(a~ vȢ_c, 6vXqESC i$dVGG M""! QH(EBqE$^Dc} AFi4v NUu4 J.A1~sϕC endstream endobj 7 0 obj << /Filter /FlateDecode /Length 517 >> stream xmS +8⃽VnӪͭ$A!V}@[E>0̼yo poln}VbtwOB*ײ]SVu )1PJ̈́gp_* E*],g:WS yM8j!wZV%KJ˼W6]Ƙ40˂ 9.BIG&B3ƺtmUMWw8Q'Ɖk.m9&%b _b7!5B3M^+CZ¿GYu AApUVuಣ4xo> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 9 0 obj << /Annots [ 453 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R ] /Contents 10 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 363 0 R /Resources 476 0 R /Type /Page >> endobj 10 0 obj << /Filter /FlateDecode /Length 6191 >> stream x<ێu $=S7,%g + l N7gROM}έbuJWUf6;xfqxЬ/ea#+IH.T\Sc n!?p4vg}u C$ z5է07p(xN nO,` Pjuj<W:+ ,7Hh@ ?M7pGX P~g.ѤV >r%3"@mh,ChFى ijfc?7ح,*Y\R]YoBAO.[S"svmX`@ai-ҙ L/ hT:e6݊bK ۰lM=q `C;m[õV@/,Kަ.˜W]-BD[D#f-R[u=`3.ɋBɭU:Seqx R\W<-m:" \PYM)}.,_xn5qZ;<5 Cp&BfMԩȻZx _Y/iP`^v-&1, |@Iv"O7"NfVW?i#M'q=9 i[:iaen3HIy-)yHZ* #=ή@XIQ׵Vgh9c0̠EըOPO.[ C@v8Ttt<+M0YuB{7-wIR[G&YV$YgUJPA'rvIu ;ּc`, X(ԌO>ތ H*>^\lJ@5sōnxZOb,l}'hDe#ۖwUx6U07WRmt[|xvfT#Kҵ%!;\ka}szy6d{mPj虚iR4Ϫ'M+3ʐ¶rj``7yM~%Fvj%~~Z/Bےk\M ˛3.>Kwu$;(\]rd듼fNf<4c.h4ȀZZJ1ޯû8tGukn"9c`31s@9h3ŞN"S ?uúmJS,yRtaI?8Rҏb'."URN^;KZ7}ExN\Sy.9#0"v)R y"ih\l5Θ"TH.5PmU|2(~ذj%SXŏ!n} ~D- 5z)UTtC!GsA! uWAr%(7d"ucmz|`k"Pː4qRغ2"8VA{Lc10q104l!XZQہT]1 ꚕk6, < )6C;rGqq9ҭİ6@5Q5/ms##q XÙZqbZyqȗJxS(OĔa \d&ֲ_oe^&^fpd=@)!|EV,oO%JF9qj»I$ aXd9s>GFÖ]DM}->j60cǵ~h0h[Eha]'.g`TcmGWNNh=X]dD|ӑE*za eyri8c & '襊>;s.Cs :yNbሢ2}lnO+qBVNقMc{fC"ׅ4e?dsU% G٥DZ)ߏ!Џ"DI H|2"iGj${FŒN.W)gpt2 5֫*#lak|&l<0D4DV)pJ  W2 >}aj$x +SXN+ 9ZzܟvLpl}!+Xo °Wpo9I"s 9p \֠_gM'`ݫùW@0_ޑf6 ʈQJ+ V#n/zɼvd՛T`JP."h&ٺ{unZNP{9+a` H`]smÞ9TOPšpJ.?|CE/A:?}YlvvzJ-X2}ۮpQ3u紇.L)Y|tGD,zZrIu{ j'.yUꅛ(c=r:`]+Cⵈ?2j}A*3W+E*lwřI'{sݿ 6 0ۤJI* .nв&&"ҧ!c=%+4M^]ξd`VAoc\fʒx̘]-uuzr1_?-T.HcɥbajF)&iӺ c_}P8IHDZtꈯY^'+Ǩ[KzwA΁ODd1<;J5?6n΍tw"BKlP 5bsh+G- A;PEUTSPȽ TҊnU|Ώ~B4<肮3V7L3P"_[&X׸" :XA-7x5\[V{V`$MYӜ A66!zݒ*t{Ӗ#O)H iq _.jo䂹%J$P%܌|tyb YEew"z' ;/W^;E*-¨ %F E`ud# #|]e $l鲪/b;yK%}dȵs{^aŦq&qZn < 9SBfY5,+ѲHV ~0'9& /+Vb6^(-;;6IW+{HF&Qs9̮8.b2iT(QT:T*d #gKf Tl=O]c#F&⽷`qmHV)ǁteVԡ(61]\Ϳj1~ݹ_Xڊ a{E4F<`OT$:K |[h]<0Vٺ4 9Ie~$nĝz~jnnce2 \8Ǣ9rFA]p /phxjCqEIs>lHE6#3reBuLA1nolJ4di |xX4d3Eqc9qoJXN`y՛ !M'_πyGXha'fl_ТEÎi|CdI;d4ZD~߲w򩴣R%WK&[=xBDZ9"z{r]yP8c"%B򡉢0_F4Nm@}M8GÈw%9C%r<`i{UWhjid'iSL]`/\:fѴsLLXWϽnː|yO(hXt *U|9>ku!6A~wF.T/s Ń$G@ endstream endobj 11 0 obj << /Annots [ 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 47 0 R ] /Contents 12 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 363 0 R /Resources 51 0 R /Type /Page >> endobj 12 0 obj << /Filter /FlateDecode /Length 8247 >> stream x]㶑p:I僓M.suuUq>h4i,iv=IPY]jkEM&MMW߿.j-Dct!rf?Y]FVH#x](ơKǯfBw|/߼^17Jo&d^>ܵYt~\YuC|^]϶YWy(fFۻvf5㼨6T|zlwǐْ 8,jVhhp2Xa^wAhaӻ>\q6ݫ޷%0@' :h˲a>? fe9Jմ\])e"U<|@⠳%3(b<}I\m[o\Lqw{nKQ1/65m|e+Gn,otg;GBkpLA3^fiV3<ځIlxCmfح7[bz׫x̉Y0=w$pmtvw ._{8_Ňf~`1-Iݵ`23Tr ޥQӦ4[:>z(=jg\g]BE۬7ݜp84Aöe%߮7xжnޮ,lEYeCg4H t/ Y2K& 8Y:ir`"ޯC\@kSHʌ@Zi@L R8.iWaYtپonws\7VNaWN4o9g-w]QcjVZV\n/E죹0-uo/^! 2XM|oGEk0E NW9P:1rh*;SA\Lх/)=/{'(Xz,Kxs?_':W7fD~}n92g!^G JR`EH(qЩYm5CfhN$$ < N>Ͽ3u褷F0^M5]gTesgm5Xk3XM lܼCqo9ڕf۬ ZSkВYq.M8ɪmp@kr/=h r=а-rkQ_ә,!VrN۞alhu )WB;G̽DwZшUtt=,Z3xH2HQU^[<\dJ43'O Y6 ^77$d6q$DpW]S UWHfnx+I`k>.χP<4)UHECK>6ЦvQ˰YWo_a&|"9&adqW9)-$9K.. {&7;+VȺRl6 ]*Y 6OuQS! 'ɫـb6dֹoā&OSrR *Ȃ AJb`fE@؉bEVB[p1յ xCg"BocP`晈0UaD8!;D!MhD(RT^JKŭ+\l)ܖǀwFFg󰊡p&S50zL0zD?Z> Ov&>&}0&u4&@\$x s^Y)Ҝw`zA: -cgŻh6ZM $D:IGp UYR0>P|x(e"[.Ab%?F\ge3"xYf.Ds iB3M(Fv;g`D[#OOvF#RSW-޽gNE N;Swd?Џ{hDžuRЃ El'$Ju)Ug BbH[,3dW kI@؏a{gNB*- |uHCMSL% >-65RXVmT Ru7*jV8!-e!Ah \B{L-8 4MkpHܴNO& %X?G y]2X -iJ)4Ɣ)RYI^, qВB[`=4a/|Q@Ĉ L/00qJ. ^O<]]0eidDfqJSI%ǰaoRM_[h %aSD"]Dm8.r/^BS٬CA2-ς C`*FYU>w>QpT'mbϹ,tb"r1`3B]bHc[hJ[z64*Fd/9St(Gy^( #L $*]w ңd4-uٲ $~ "V rΒ͵ "0;A ,ʉXO?+`X' +v?עbx}'N& ʢ4!/Y!K vT#D 1%zb}y!sQ Rk9#w@$CdHr A˺i|*H͟BqftU@y8ןrRcSGX!q+$êȠBqV/o54Xj"/P6̒UF4&caRR@ ɈPr_O/wfpCpE'H 6ĚN]ΞLT<>fV\֗縴zf}f0:P㩎PsE9Rss<qI看_s(D"FsFK}h}Ι91h}&0q9>\|pdgc>gi}qYs.F|}8302Z37!F2iRꔴ{s.~9g@ٯ,ϴ'ӣ>([{9\s.|}9_ b9c¤>8]s9h>@猁$9-t9TS?>G+SBxc-F4b2`"I}N}ԶRsf}Ι 9!s΀h}f9GAVP=lIsnpy3" WSu>g̖vs1+dhX5M/WCkbSI+v@M Iwo/i; XiL@Wؼ g $Tޭ",Oe!:cPanɈ-*Nx'<{It;I2&ixx0'a3R& cf=A5s!$LVd_aŋTH,gv*T~7b1o6$l%%/ ͆?lqՆl2Yc߫ cm5i6˷G?ֻ (#TۣɈ*]=y|{x}!˷G?o@#; G~{to~6ݏ Ov&FmۣGÑwFqgqdg`d݆1$6GzA,ySJ;S9~{t x ӣ˷G?o# 6nئۣZ݆1\=~{Ԙ6# 6xdD.6wF0K|{ LԦT[RۤJQ0?J+뤉J%1d-i­ *[\^qT 3Th p޷:,h*f,x*[jܯ21Ō,>[Sq](N1IYc5"iu`N8Qds(&M Rء~2r 0L$6qߪW4@F9):5}ʮaϜa1G+%KRr){}(` ^BHv%M*a2…i\QWARrp@6=VLr[k~邿Yƛ_HIK݅(IaiH,*0ZbEX$559nxƈ\]W7WLS嵠9͌|}mI$,_후viV;UŦO͖N׷_ee sټj:ߵ7\0gaU+|BMfiW`.q@"?c5H[]Q|uzRJCAzl#%y_p|k|ے0".ƘN6@?B,Jw SI]jL` svܣ"ic[4IZ|NG)5_{9xdƧ6LJ-pאش/Bfjh~+?5Wۿu˘qdzx@,RiUZF"0@w+ YT*@:}IOWX`%gӷwqg\/M㮴w-jEMOb |s ys۸^yJ}m#O=>R{ S;|!դŁRH@p2AE)+o9iWEwY_IP0Y#6u}Ȏ86`1@Q w30UnՉw.;P_ڿ3V;pJUC |W(p[ ϱ&! |7I"ɽ p"LnAN@&LTMqO D5-cO{P!RPeձ< Qޜz@ +T!gl/dVܓN@ﵘOd%TO#zäҾO;M!&*G{ZQ3lJ a9*{I[iV**U!꺷o%f\ ff*fu |Y?S/=hPɶF#ĜjIg%|҅;d[O|+D_('fFGm_W5 v:ב0n^ɋ$w)Kk%>,8}*uFE!/*>1>SH( +Ɔ&!6>QOG =weAe5?&/Y;sfwh"alT fB䷴_4. 8XUsxr>Ŷ'lÇLeYOfԕZ7ծ,\ᛖ-0=R,YVx z=4entxЁnϮa+1-2¦irD}6.*#n י$*?e9U,خК^J,3X~l`=|5_rf ^氤H03h"F+)`lw|aͦ>W75QΦvZMZ\I_,ūF4Ċ #/V50o6/҂ endstream endobj 13 0 obj << /Annots [ 48 0 R 49 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 63 0 R 64 0 R 65 0 R 66 0 R 50 0 R 61 0 R 62 0 R ] /Contents 14 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 364 0 R /Resources 72 0 R /Type /Page >> endobj 14 0 obj << /Filter /FlateDecode /Length 5992 >> stream x>nQ_n-Ja_t0zğx Vgapkݮfy*A;=C- $(QJ#B V;>UᲢC:?ehS;'\vOG}a'R=b,pw[.O#`u]td1a?0ȩ7 MQʜoG |UŨ%|n}vS33aԡ ?7dOaVD3l~ hBi pGtႠp:H8YlUɅ )!€%S;"_S!"qKM|Z-|hg.%\$ (`nŀڋB@[5hw/;yV`_=r; ee:KC502e[|+.'<؃@W 2!( R,JDsyclfU\AVVժxFױ8l6X[kWl hQGvoOg0C%߃f7t= .08 =[Z8|a?F6ZE>uS'/m. J9TryW#\>| `aYcۀw(L[;LQ0JPRNI e6qC#1ncл5՛xh aN*$B`aS pkBk6GgEF{_wD 4<bvaA$m~FU R>I}-Z{2ԏulY :~LWCշp3ec3= CE[OMcqz`}3ZHQhՑԐ"T;]:aYe0!L˺ H1m$7Lƃbt h;Ǖ o|p=76#QmL21C<d9ѐ:;<> /Xh+Qe5O<+E84@4 WYG ?lF4h&nFa@W?͖p+~fv\;1aw'j>ذLJrލ eLQzǏyو 6YB6`*~E Z $s\HFcPz#8ByLe*--=W.SHz`ˀO\iш4[ۻTPhJfPBx/6cIbc+lrJ]fl$c4%UaasYW߶ |rF^WXb(FU"vlF#QU>=6mmWM$;Bsg1rlkQi۬! uI|C68brKE2}TUfW#6l^GEH*{M4)>y,B@ڂi4@T57䫬00 #fQ-E"bр&0c369V!Z@ UW,u0^-?mVѰK]TS[W236އ拆 ]2D*6vv'aYPQbh~ݢ+QcđX1dK$&6CzWu\ ^WU੕f02yH3kP+ȃ>O|YV -@DŮqY`M7 /I j A܆0ϼ])uA,0"5Kn.\36FŦhۙp:ܼcͻDbkD gi : q=h$Ӌ}keya(=Ǻۓ- Q/ &{BGku'9e/x+#P#6`C`8??r WgdٌoX-iv"FM+zqN$CVݒD})o\yr݀F ۵^BOx6 ]!;2JpV|'LUZH_, BBSQnJ&s[5"7O=Z \: °^['d#,ԅ#Mp!ScY/;^ ((,#ccn+WPe|'u?2¢Sl{..R82Vw ykIC4 yuV毉e0LȞ rYNxL?$ȜAe9&Ojlfg'O /ӖY!a9;8fm_¼:1(ז.GDȀD–5{6v;NaxD +Pט`R km̠at%v 67-V}ձ$xReJó"˫u91i9A>-M9!Itг Z,uȇBKB&7yVT(8qjg1p11о j>r5fy6}/Ma8vU;R1݅wtK#aW5 6?G9b0!}*DK݁K ?!$GUH;WBk ؞ƾH.{~$#ͦ#"(؉mBSBP[B!hrV. X[^I]jmzRezf ''ݞfXߴ,jA7>"Fi13 |t,"fv8-1׬prխhVs FY!Qn0dv5 U*@[]FNZ VHvCG8AC^&F¢>1?ؾ-FPU,a S WP4<45r>6wnT7;LW'H`KZZ36ՇNҙM:Xq%uMRq7i ߐir"z)3d;>4,]jH_ (Í7k^,#=׋  %@q%a8'+`F,T |8p[u~͹]yAWxhfIac|ph%gX Ø9.20E(~.h͈VbV̘Lv9\ Q+$ J pzb{ġhuDJzb} qj 9: 5J*2_ zbL V+ۍ\l| z{D.H>ppGqoT3X"K@?AV Ew1clP숰4ieaׂR/ ;@٨b2gKq,4h[&ʅ K3cZK%$/0TGSv ?%[R1B·PLx437ǚbG 1&K S66͌O[fƥ֐TY)q6ݴYY%oؖH )5WOM=r,*=&p 44*W[YEgT{PIL@^8M*'$k*G½59ջx}SLUC. ҵ*Gi^f븐4ص I~jF yÕe~nu $}eԜKX5m ]&(KW;9OnH2cGk pBEI> ,b")_aM댴B6bzIS[f!l (Ġ&0hZ\@n:&G=3ߞLvo2Sx^ǖ'h-Ӱ4{0;xwK3kEN` 7q7?q9sUTpvYf6[([ɇV80U;mIM+evoXn?s/tI9-̟縫\cą b'` MI2I/jTWd=Q[~%0xpDx=fW'Z*OÃޘ/Lϟ:zWW2cR 28Wݱ 5j+XW\=7_x(<%%*1*y>8IUh"5zh0i:( Ft0*F:pZJ͌v6 :7ɠ߂ڶZfm+t5s!V (ø!71e3^L +2 &r2KB BLJ硙Prf$o9u~3 '| 4fpIŢ|bA_HVt|X}ח=IR%[3FN;r>kE| ۂF;< * ko⾤JGK xh GVfL) ?!K ;"2;̪oUlgⶶXqa&qlt{R('H+h3]$vʕl0JW[~w endstream endobj 15 0 obj << /Annots [ 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 78 0 R 79 0 R 80 0 R 90 0 R 81 0 R 82 0 R 83 0 R 84 0 R ] /Contents 16 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 364 0 R /Resources 88 0 R /Type /Page >> endobj 16 0 obj << /Filter /FlateDecode /Length 5529 >> stream x;]H-t$7I >y;;>m3t@M_|%$4H"ȯ@ߨ? d"|{~g"39It[ yÇ&VEOo>|^)e5m8&v&c,ZE&Ksv.#wJ&aX'˻VyQY}](X_,cYYLM˾.oZ|wh9ip1Zk~EV=ҝΣDi$FՔEہr$, 9RU"`$k4Q( U%pАLQ\SEj6c4"ycC{ 0IY_SBjn i/Ga0]S$ 8G?|?SL.ɯHHj~/8'@Ԑ+bY4IKLYjDHG37(WnxE.'g A'm1D&0*&ov:ҩ0d% *iED)IB:0<=#cclG-\g@w݅i;T~&=B_#]`*[\߻&)O"JHBbƆ5lG.1e_cC/]`\hcuB^F +wD3`ۿҹUB OK^ER*r]ra4ς80_&v"k*-lrv?ڢWfdKJ Czfw>kh &klR:~fse|?_HScP|E#ha@"0iI5*Ld,+n#"Gv`즳 ,Y ~{TO vVxsDnGj4IbHdhJÉ+?R {#+AԈߥ[XY3!E "텴w"_xsT Wl({*kۖzŒ;/y*p:)h`RKNwvʧqk"|Dm8akeV%d' tZy8-y.hK]5rzH F$,7RWV;Jnl:_H>hKNg6ȖٝI8=t:FצQ{9E[jVqؠMNPL.J6>էK3x%9!hpf<$JI_Z+U,>񵘂صt'qJ!7;G`@M&B&0u ` \]++_IǮȖbת& B5Ն1A#ʱQ˞?ctuhMa qZ훖e^KHXt*22Zɀ ڮ{v4/$c`"Y T& tf\˝V?6sZ\60+kڼ4 ( \ 6_x Z%9ɼU2b(;sn (H\@ h-¦.tY݀0xq%0]oLrdy㕓R(Vƴ=:B^ޟٖ~\I@ayV0_eQkb%Gb—M]rggCEY=Ap+Z4uʿųVk-`t>0jXٕ|Dw]$x+.Be!w$(0{ ?/(·,xgS XCEfrB0;+831+-]i[+5nЎux]`@К,8; s!h&uXjF&8`٪-c m[o9Z.ȟyJlcֻAhטWg=FxlU]M#qAژ<. ]/IVJ4fa7؏J$}В'S~I(NmROWxӥ&fB7kB}rs}()v Wg'0|D"2' O ޼{wu`@{h3 mfi")nzF{MhlSaNv ^]S3Zfꍕצ 3bXymF9" Y+YlrpgMaS}Ҙ4Һwe9yXP% TEgYr hz_9+.d>hؘLgyV2J;r CkBLD^5?(B"JȑY~!gPS웻f;"$ e셯re_i(YZ+%X0=7zvӆE ŇdLRnOƒI/MpXAJ5R2oy"W};sKXQP{iM錑`VlL&ؿU!ӫ zpJ!l]$ĨJc_jXD&3GEA/&i޲leo72*YRDxCl#dM fgʺH*݃P fɧbO\?s5؁uװߴN#2pzz"jN;s??F8{񙺍9@bk̯GqZQq$!Bx3$՞@mSCs&=R'*/OCxia:OY&1.8s}%$`-9PnWW4 ٔ9P@{ɯ'%Q*G KP::BIp^V+'?l2\T j 4duG{a UxPj6/->>vT,23K)*E|ޕC%߳uAA8|G\ֱjdp:aFTHNMOI,Y=Mh78J+)<ũg-DLbW ZRv*!U5Xan>#>(xq+1M&_\%Գ_7(-(`,Ul \#!8i5עܦ.W@'["SJ/֖AIgnwu; f 9Hdo2WRdrKǠ$U} f'bW+#'u(K>1qdQU66Ba]9b9D#o3Ruo}M)w51st}S" _텋ra(1?i'?l`Y G@&b 6Rۮ?Uk+$ ߛe@@!mF8 E/ By䃋SL5zrxESe1^ qB*a!@RF$^'mZ aS; #epAJRRMUw!H5k?W?_aB8O)zٟ^us>Xl{H#O7T|z'xҥȓ`9$Ny 0i11^L&Cˊ+m KA\-鬒46?ms6&y6&' ~ְ6h"qnIE:MHae]2bBAގmգGXN̠K2aYم[,+EtyɜdD_4"SKAt\L׹g?96^p] jkځinVX"Yt8&)5ZW ᅃNd8w<*#AH*m[_4;rtSpYrH qh mA\9sPҡ x_k endstream endobj 17 0 obj << /Annots [ 85 0 R 87 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 86 0 R ] /Contents 18 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 364 0 R /Resources 104 0 R /Type /Page >> endobj 18 0 obj << /Filter /FlateDecode /Length 5668 >> stream x\YƑ~_OF50E ѮlJn,D4j+yu֬4OLRwOw?|g_]-?ޙ%VL7&_sŹ};Z\na-4oh"3ҩF츙GM)󱰽|]w?gnfW;چqx2 |'fentN 7:,-́z3xXtHf⢜ qlP/ҽ ,= 0q:(خR%,ǶGO4K`2KTnsq+ iP@X*]Zxj䠉t>ĚY}/kJƇJu=\ykaΗK&jH] nj@_wZ(C*I|\c4l1I=u * UD.#u GK{ B5pV$7fNo>L=;îzn'~ 8B &L=1_6pϞK:z.4\L"DR#ϼo7Ycn/1v Kt~%E3&rqd:iC+ٌ"}t3ʲ0DS$pS"r.UD4e+&7Vygt,7zck/i5 }x1nb2^ߚ)7Ƈy|#e,!+c=eh Td4 s |%FG՞pݪ%#J@j0痢g1?u`v,իZPi": +5,<Q]05/Vj|@\!*?i)CL(C͌F( 6_3CD3<6֚'ᪿdjL+tY^ZdzM_i813NU͔Ij`=cϋ58%UO$U0[4P[4*MGEVu<= V-VF,0a t5CXR@(LpUi &/Aڲ00$ oy:|h&)l+W~=Fq+c?HjuIZ؝~1[㟈FY/=~QU/{+yE VP" @FavR*1Lh9n츱O^1R6Q7L Vd@ق%`Aqؼ$er4`AVHb ŽQeS#NDЪA}wn&P[r*)?:l2NYj0V"*JUd䬆zhfz6 -4nOVy\.21!'X2In?~{eoI 5(j Q4x:2ɵ&`J~#G5д2]jR hOHcERN׺!K^T}Q ?I 6 fhc˵Զf`c4FiǯP˞}ٞQe~\ơt1_DbbG W .Ďk>AO1H0j?/23+Qp*9]Ӆ]uђy-6)΢DLYica$ryʐ ls8+q:!OL0&d2d̆uK,ArF|H1n&K Xw6 .z"RB:WR8Ő*"rv^dd+Kv iv-'aܕ4_Yuxyֲ1UM']'dly&t^p&ĊnBY:ڱ/^tԐ03Ś,l'l|A2ZoXVh3.-|6W|K{w_KhOs |+_NR?zCPwF3جܨ'!1Gjc1āHn.G)3v_n {2m * t'g},0K`z`)km!qBxeo7&0عM_ۆSyZ!,PE1% kkgK7@ae:eYJ@9ب\v^28v7hp櫊!˞ eFmczX!͛bxC@ޅ=h DNEQ6@c>Gfv\0]VPvߵL揫z#<\HtಖdPB%y^l/-MRوі5&; 7DyBmhn :ͱPrf>;I 9uSG52@bo*F.12@D[6gG=g =Wb@|C$nj~J%f("" 4 tN;VOԭOн>)g6i_aJ0W%g&ϱȆpj~\=&|iԻLJj BJr"z.cFRGIM_ zC߮󆑻jcp¦ͮYCq*M s^?{= 3ל^_y+x~7ۄ Bsf.JGn`Ą5uK[l gd>ʱKK1xLi"1u:^% ķ~6Z^DArcEsӀ!ml&6EZO_ Je34-1wX=E#uT!\l]NBw#hD'HLM}\$G71ZƏ6/`aUϛݔTm[n{s*'{>^sB%0{%XokXᗉ!M0H6c-bR=$DJt1~Z}ߠPw΂S.t~ϟ] u0DZ1?* "Ȥ`M;2Jޥ-_P 2Ǧ+r؄-܅sHx}'}OfOHZ)5"^Jz Ob\PڊYgCGo0 ! FA)#ټBoK}cϘSl'?r~ endstream endobj 19 0 obj << /Annots [ 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 118 0 R 119 0 R 120 0 R 121 0 R 117 0 R ] /Contents 20 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 364 0 R /Resources 124 0 R /Type /Page >> endobj 20 0 obj << /Filter /FlateDecode /Length 5767 >> stream x[YFr~_Ov k7 u*$ ;+ $,Z_2pp]^BVά/Ãy|elCkTı.nsq5kBkq:kݔ뮒FטM_@E rvsڧS p,!)]WR @lYUW 7>FR%aWƺ] o;j]E]`xPIxT^k$#<ݵ0EVnj< -|>9>!5Ҟ*!\ھi:B­_vu6̃( _f^qlFܞ~+F\+$:Rj3;k<rR+C2jsUGM7%83G ['*8ЫskmY|#:bkZL,'+nݔ>xr6O6Gb{fm, ^[!t eb+ och/YXZ(lvn߮1$x++QeG/BņYJ ^GD#Y_pzn;-PuW0(e]5C1]!N]O[9b4#bҟyI2?CW(VJkK:ԶHvEYVXξ$ƴ^>nÍX?;xpו~ķK# 'nʪ_kn~MWIxȲ*H`0 2R_ɼpM }iUE6HLjAE[2AlʶN>?&L-bԶQ$.X^FOgK>9E TBTcf6/Jɣ:v竝@({͵!匮a{D5\Ș Bv u7Df\;ʕUf-r5ũ=0AU*.S-bW(q<3wͺPaXX K@宺 U' u/CMP|Vu7NLus+e ҒOt ͭ݉VlUR IB/)+2@ Jl2=9TۜyBwzSgwY B/NWcN}uV/bOF DS 3~KQRsa7+mIbQkS2?ޙ |FOW V.mēW"_O.emM_#xFثDjexM`my00xyoWp#넏rd[CrYI7߾t^c8CA$V4QxM٭T ѐP%o 9 e'&8^<>ŃBs 3%|ST1sƓ#/3ވrCפ'n?z|b ҺeH @;zhnUN'cR$ӭ((+ hdT2֪qT[2-"YP׺Q zgW=U2Rǂk~9d`'d.5/;*fDV13XVz"yq-Ȩy)qgBPF]/Юq8"R #EL>I5`33uPJ4X ^?Z Ù:Q4rCY\d!l LU'>&uG-ܲ\bW)Nf=((QЁEFG^Ǒ& o{jŴ7>Ct;{0%"eJ)4F\׍9C磌 Y,AV^f6A.uI.{ tdCHD@`>$[7uq[q.MvP$.hJ Ytڀ}cyMx'2`b!#*u=}?Nqh{{Ed]G/O̸\h R $$L>Ja( \jf:iZnZj|0 o2Xhp嵯`-l| *@_7*cŤrٞNdt R0gH|;~*cR)3 zb}X=}})\w.ͽY$Hs]#x0K/(F:fq 2V2*ztqԦART'ALaՇf\GvfՃCY,d QCZZwSx *=" $*P];Jիo%҄^՗+ㆬ,* 8|>qhh:3?U݆B]1) SĒ\wɺQ?g\f!~L΂Q"5W2- ̘TgȚÅ%ġp+B82B:;O6w[Kf@3`E j "-74Y1Tf%y&rkEi&R$#-ϔf҆^ AN"%gjw1 ۨ9+NX. lLjAr?~Kо87'^{a=#Ыsvɷ*ƢÏ~8)bNzjl^}H,Vu8R ۭ8cݗ,?֣%gf asV$DfAb+gy6U]J{v-&qڪ';2usaw(,=7 g0hW=Na`Mo4H}hEU4 endstream endobj 21 0 obj << /Annots [ 122 0 R 123 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 152 0 R 153 0 R 154 0 R ] /Contents 22 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 364 0 R /Resources 155 0 R /Type /Page >> endobj 22 0 obj << /Filter /FlateDecode /Length 5570 >> stream x\[oF~ϯS@n[ɓ8wYz(6%aYb[EcE;Jnn|227X&ϳXO&чoǿҋe\f0^T-5LK(cKd-8WA839~Tc36p VҨ=6U}0ӧ$U$EקqVu܌:ALS^/#hܪ4|n4>-$MjD>4zjNt̿a1>T#0"Ii,p ea/16x >~\FiL랹26p#}ejB{x>(Wjꮓ8?ݪ$Rہ;y7)j{4uMtjf.=?wM~=4+Q|`8h=0с)Ht9>GMIԞ*U]+. u}'.UNtP-07Vh=?-Jk MaO@qL 7-OJ O1X8KW rqB'(!-"_IkS#P EܣoDwLwR:.F+dߑ͜I4U OH(i!<&H~l&ɶ.zI hUmO!H6tAhV?q; dp ́hIG"0E盽:myg,0NEhslT*:X_&$/k?_:,vN6V7w%-cšEKBD bQ<ǁYB&!媂gy_ L@5IRY sB=,gVFa-I׳Nh 6աMa7\h%v(38.&dEDWx-KgjA~DkeXIM̒|R'Q~8U)vܺWne2;ۗ9[0JLhn+saoer]UP>eհ l-%. ^/|$h娊DŽ6tgU8\X@C /1 Ό a$ΡFC h\C K'4Sq2S1l%R&0'M{~w[Zҭ?U(: ۪_MM?I񻨯/'rhp>٧](̙#R*&^8> `ZD%GBYhW-RO-UWS2ek<ӕF@=q]XޱBYDAI>0Չ׶)bïn_Ew8Mt7Yg 84xʆhJ\"3cK$w-Ny/t.M_5T.X T--2 q.aJԊG[ 7!m mO@awؼbPǠ.w'Z +pͭJ]ed/*pg[uJ\.%S5JqGNw&,%"͌ ֠yZU6 [_" W?n,D>| vQp:r) H|酽KQTiU&qR.  oeK_/PnYřZPԌHQxG\&x.bPô6Dio I+M~JAчO["!$龕02jtViT}+sAD·r8I/6ϳcT>$( Yc /d8K%q~/d{ViJM+iuP'kԡkd#Tl'D>H&#L"s bNQԂvyK}Py}Ϗ`3@OH&{h8+rc=lP ^|O/ZKFWJ 4|,*E]N=ws Β|5.t9F^"|kʺ 㸶gpp<7%D`73Xx݁.W܂Q]<: Bsntj;™D$Y-odО抜}E0BW1ŰZ?AA <ݧ#XPA CL{ƒd`cI-0ÅD ^9{ǣ0D8A'-.ݤ~oGK뵬j,WGRf'D$zM_^U/N.$&}D1Z$e}O`lSoNnZ])y9IؾJ4!7^^c#CV@1()_&.1⸮BYoDm*!'ܗM_wi,>A=6 %cܺTk(Az|(cِ<[YY!b*OQN̠<ӯxҔ#Y*ܷ\%vwHH=.c#$NBmO2J>l?bI#Lb nS ?ue#d'{~J$k͝=Q^Yda4F1/5Js@T+_>ڢƤ…2N0>J2]걽sbu 7yQ@⹮_7¾t2]dwH endstream endobj 23 0 obj << /Annots [ 161 0 R 162 0 R 166 0 R 163 0 R ] /Contents 24 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 364 0 R /Resources 167 0 R /Type /Page >> endobj 24 0 obj << /Filter /FlateDecode /Length 4977 >> stream x[K㸑P^T-/>ж3=vsL8(%1,2IuwMloL$*6|AD>̄j?o70xu*Ib&^϶QLRl$`H¶w?n##w,97~LCߥ|m% ,hIOEMQCχٲW|%ƕcW $϶qaq /NX*)st+:Y];d6I?̟@{8Ȣ[h@^:eֶ?f^'41KBFY˼w<5KdfR "0E% =G%}fy_55|Y6B.{bJ +j,Od02?(0CdN!25Jl;'/;PC4Iby'7o#G@d˛k[ãEJO&e9s)CXcŌHұr?k쑾Nκ{U PGVR-˫]tctd ;7O~qXosNB,$Ny^@TN8AFg= )0Ư(&51 q<w}VpZqw>ڲJ}9yyڜ="0ɜL\G1MCMjZjd7#&f M5uG+*;lh.j"uTLX~- $Pm > n_Ű4 sفiߟi0 ^:l!X^@ QU}>n }J=1qsGöz*#i=Urj ~F95mV{N5_hrz8U };H<c02@}v EP}g>~\[W&zkP\SdəLz?Np`<"$\rf-;1ںmE~8_Jj+P@Wb}'acgw* A"Q#)ͧ* D><Ȗ5D0݄H'y_{ZZ%-[Xη:+%*| LQw.IJԀeKr܀9[[d` .5/LTq ɫ/ cܢUh5Nm=ǎ޲C[f#X|'S 6@Mڮ*4顇S.DGBZEav=RB35ZSl3 Mgv8#Ệ${X uYUZNFѤ;uW؎״Zk*_ e̛ՑC3ĄШonx+ʰAaYOŌJE(izPQX+װ2t om;C p n.W1T7 Z)hRՑւ_i_X*zZBZ@fnKTָ+' 3e0>34|9`ęl4 "E8BYU4ø9e"Bq0t5Kb`Zzo-ޣC;#$fW\k uAn(u}?0͛㱴a"l@Gk#~/c˥1| owПoP{ uOBlX(MhQᨼ2XU4#j6_QS(.ߗG'= M;,d2'ʵ@--QJfZΉ #몲sxvmwp le\6Dh1P~ !rFw.bHZOon':n5*A~st#~qp;_A'Cw$Ĩէ`gr%0KF3}JX`~4P9 :`qKbnQJz[]C&œi:8x1H1s)XMfy8Cg:!h$ NѨX; 56KCxLt<S {bPߞ{*sTKDB>1#N@>!ߤ.{YZΞ8eN#bf}wF{Qͱo.S,8zX0Uw>_AZRW$ޏGcVTSI? rd 8} $oOGa)pr8*eiH9lTP \BJPUW8*qZ0c 9>?PׅcTVd6w` cHw06ȢE|ikCUs.vmvڃ, ;<8YmKS3,DvqrA ;X 0?, iox;^[PlCh$(M.΍o:`b ghn8meѺ2j)3LqApeM-6r6C3z6YP6N091dw٬?ZӒt=jW\YbJ~ .$p=Jv,ͣ#)>4س$ց,g,CeJEX*ܲm8Q&+۷W).l΍"tف B L}SBLfG)!U}Λ[∤dtyYbA"볹30&zCzH4^fɈw0[.#)B19cl.0[smO}Ű!H.srU=s z욦RUYh[\ze!p, Ɏ>'-` f6kŇ0tums:oC^` ze Ir8ET_&ѻK6К:FI(R-֤2ɕ% rK)y~[˲Q0{1]GTW.hdx(Qռ9b&)G:p Cbu٫ںziu$J(0PԆN0p>P%ţA;ٜUZ8.mfC^תT'VֳA 3nnVDE(ZI@)_Ї1soW(L 9gZd|oz_<O;WUv>42B?Zޕ& i<3P*PnPn f7nixȥLg7aD޹e58̐*`0 ^H;nN1QuuD0 #b5Hsb@|9X2Ш iarܙ,2 ]Cϭ=wy]њn:EG9v65kDےDxE$%1{p֏M -I OJ&S84@b훃uBbƽK$$HŦ_+2/$Ozu n,͜‹dgtSzÄEFLK.o1AvN^,o{j=BnRvE? tKjB?l5rU cT)k}̷Աr?'~}@9Tķ?(1"l(5qv%ưs[E2Ezi/ :%Pch>7xAF endstream endobj 25 0 obj << /Annots [ 164 0 R 165 0 R 172 0 R 173 0 R 174 0 R 177 0 R 178 0 R 180 0 R 181 0 R 175 0 R 176 0 R 187 0 R 179 0 R ] /Contents 26 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 365 0 R /Resources 183 0 R /Type /Page >> endobj 26 0 obj << /Filter /FlateDecode /Length 4885 >> stream x[Y䶑~_QoT."0k:֚YeU"K$k1}x55>tq$2-7wW߼}tܙlvZRsy{~󇛝N_\)ae+'Znv6˅Sf0y_%Oy%l")%$O^4?RqY l6)CUpȆ[}ϯ4Fmq&N~Qn@F u<izOe2̈́HٶÖv{*jhAOl^ͳ2{&ET{QHr!'Η]5Cyܾm;bF#38ᴚ8(ŗ5eR6ន}L3pWE#JD;|"LG^}z8ɠ,Ș 36[|VQR' 0ݞe PRyH,93>%+\AIX11w#C&\q.Tf X/_E2 u7ɳ"w9M˿Q4S.43G2 Yk--C{--CfīS5,ia7Zn/ρ'K"lΰ{ Qff"YIx=!6) Q#(hG&vSE_ Wa#,jdz{;Dl]V|+"$N.ofրWEN iG1f\5ѪQrvmS? Pr\ xa$b ! Z'1¨QBf/Zj)Xm׋XIgᓓvAHfq? *uiu5X#CZ(g M jd',,+ff7;9teїdHىFvNz*!Ww1|b$]]iC\ e3.piQ|襂cRr;:w_4U0N歝6;8C2)!phlBD]U/v?6! f!K]cƑ%/ƻ=&[k2ǹp.pM ?T=;|:tF(s"W 앭;H-&Cٍ? Vly Doiexb|q,l$s_xBh@A=|moRO X蛬T웈<1|s+'/jIxO yIV0)k%+_,L:NA6KR'ߋ|Ào۪q#z_B?\BzPMv5tM8AB< Ka1YLj0Mb;聣Zf{ F iVq@9b_,'ea2i,A,z'0T|@+d==L%T%=kl9\DpX!V҃}rx|"-4w@f2>yH.r+3 X6`Ep(ayd O k vKs,G&).i!夌K+qc+Tri++k!üTcsvզ +CT\ Tʑ| ,!hx0QkǤbϨZgs#8|=zsc0KNBf" ~ۡDFJG!nK24%Jk.W3ezVgPe胝 jPE*2Xl ~ K'_'Zr/^L8|31yd)M?fG0On20*^FXcZ`SY{\zL_8ϗ<: L<frd)-P_z|Àjd0Б\J\ϗB+lMk }E(sH[ 9S9a@PEH?ddәb: ]ޱ7ޱ5*r7i|7K7KIxu*d :[90kIND2 ).,,6YYuK[XډN{S b'7'/cau-6YAAAmj}X )qXYdiV2/q"zη g6 Um o2\aBTx~Ud# |ܫh (LS=~>lD6ATM.:/hw=U#R4; 1TLD9]k1|QUHNO@\P2B<:TRzd) E\Yo<&k.Bґ:T!u¿~IO8bY/1ќRch#(1(?iVdU9B$$gzlPih̺H|e N:_}B\Zű>`Z5y" M4, ExxhU5uK{1('µoEͮEFr"1BS%tUpY"k_]Bx`0Y-xNAsx(T_μb L.x<-2h+:1PL/9SX]o=?T i[B=wxa)r*n*k=SU֌@f&y 諱E/BD8aD<|,4Kä4tmp\yQr #'#=F 4gh'ߔ F__Ҋá4V]Dׇp~?s*oZWQN$\ǓU/_k5KR]nt46h2%%W g ,~Fy2{ p٤qR=7 1u~?r{? Grq_EƵs>t˾RQl,߿+H 3讍LjE@8yv(+,?aF]/eL2Fx4dе}]N$`Tpj˄'~N#_|y#c_Mɘ==s~0=jd: b=X|,4=Bƫ|\nYi=(%iVGSx܇l7N-KNxx{ 9 k*R<wvGk endstream endobj 27 0 obj << /Filter /FlateDecode /Length1 811 /Length2 1134 /Length3 0 /Length 1706 >> stream x}R{TW>C\ bLBV$*C2dF&H@PX ..L-("-"K)QȊ sq~߽tw1xIg1 W@$  &QILɆ $\?e Waɬbsɉ1dC@HHP̐9,C\Ȱ !A%Q$GĨBCRTI08ΐ˼ʽP%"( wcb"l1΢Jx[ BE0D.'Q0Ԝo߻q`Hy@0ePU?}\#@)XN.OLQL\G2B\(5 Jjl&Ij 8 @$N b&2˽΀)tLLbU:s5I?b2$Pe(ĀB +\ꮜK섷|"APνL78(aC\9F=Ugߧqɏ: ޭѼpqʆ\ԖG,'a'ul#< =-A֊Ufe#Zc(6;T֡گ{] :ǒ+;wEKɯ,\4ڱ޾Lle"{u Da,X0}gIqI70$[TH_k/զy%y>zL5g贄ޛ«)S79ga7鮏k6lYӄحꦧ ٱmGP4O> endobj 29 0 obj << /Filter /FlateDecode /Length 5407 >> stream x[Y6~,;BEq5 Y 6ME7/GmɱG"/YUtg~ŷEzUEӫwWI|eiꟁ) Ik!߼~DO/^kHq S(MWaBw}: {T6#מZ%ͱ>rK9q4?UV,< DG5]8\(8\B8T@$I?\L6iztXP <y̍/..j>R?j.8LnwtEfE=o箚 x\ae}7m <8@،<8xm:~N<W=?,V>CžB՟¢*vᲐSߕ-1MgTЕM 8Χ3mQXV]zlsI׭hKN%n['2yon+*+Jy74sJ,@(Q7zkLr;<'k"OTq4xKKOk#Qa ̼[gq.ǖVkpe'l^j&"'QxFQp8=G,(Py5_+7/a8Ͽ28B>&ZLM YѱJߗnk~u9;X X$^HRqdXnf j`Jp9p15LCS\w*ɱm[sM#ys=4Dц@\B^UPV8#%Q!,.%Ǟ ';X o$bTN% "%|[P> BK(!fL i\[ h)G]n[zz_{!P;M뽖ZxZ ՙ_`eHLիSŦGxڊ 7F*b:qn&FXCRhKvߪ~0t$Ztta!w!-̀GXM|sxAֱŒ=螗z+cx%s;p%ɦ@(O({B3cO]a~y>d 71prov9#~.E'pG{Yr1g!ѴK8TuWm&Xl93K@k0Su<EwbTa\snN ;OKim\J,BDgtqH#׉oVՆtthlNskjmdGgjl8*f qG<s;7„zA`h)[Ѱ@k\bSԥ$];$XiЇ>@g[Gqy>_-6(b.j&bGxeoXV7IIC5ũ ~ZH"jemv?fLr ~%1qOM+}Jo-<4.V"@ψ 4xCCl8C/%O s$ 2 /\Q S:$NCS$`0D,>xQ|9: PDP]Np7o?!dy'Ot1L&1ӘXho#x-YBk#cИ#=В⇩׈fM@T3 YS`5[떖E@tDR :Un?Bd{z0+Xh:֖(4jwp/&Y,k`uw܍wI RH7jeV`R*PH Uǹ"qÏP#5a_& s{{a(x.r.* vʶ>XMc*!95DƆcC-W9P%i(OWm 8p'ХW7=GS5!MTf0 w_ƵLòp"~*^po=5U/|2_@ u|?"OXUS.s 89VZԉ4"ZNxGzOy߲9HP>?7=HC@^˗&η[ؐ*d(Ega8 _ņ%մ|W!!x4@b@B/Lȑ~Sn]v\EY?.1Plukt:#9Dn%X>Ifg#)XRY⫸O¿< cbv3 '3:# cӏ]:srmY/޻, #Ik,m\VG!У&G Ly2t_ic /:49g >%sㆰ`$N_fx@ZDSΊÈ Kn0CTf|cF6c)ي5d_>* .{@x%`lJ14 |=xb a= d w@|Bp `Uى,|#/1u9^8_wѾ R?Sr⪣ɭ2FWGXF"-,s8 H)7^qX":[C*f ,}]a%{aQ_ ,֞2"u pFB /I%lC. [jXM~>7II X__r|6)<š;ݯa!~[أIKx,\mvcO]ˑֺy?AF.C<n:Zen. "V.?@G5i炪, ԱВ J)d#Skͱaөggq#t`$[#2zcId⺲{%6[> endobj 31 0 obj << /Filter /FlateDecode /Length 5391 >> stream x\Ys8~_'\ 7I'YnZb,)RMRIܿp3()U}g*eggg٫ǟ}Yݧ3 &>"Dޭ/nϗ/." 7x7fb DT"`Y38hZ-UgK!zYb_f "mfnl۝ȳ . pzα`6kl F D#(9ÍI}%aH;y.2ҋUz!|i'i6麺ksI=Wu5M^>siIm.xHWK`ҶaP_vCԐyk=b3OvжZgEx cɢ qW5HҍmL X:Cymi ۴|ا O.*̷ǐ HgS0+b԰i]sҽXrYG`?;u3'o,+b&r} o%)#+u} Z3=A?6X>Ox2цMd.063xn]jenlǵ8w2\E?Wgٲg[ j Ej|X ,$ݘl6`U3zd*ަ-XfQSpݣf H%= 焵hԲM۴3QCˈeDb];gÝ">;C9ޔ9x9ea`A(fؠPri !Þ p42>Xbք{d˞Yt r,c9TE, 31d8ewT`?b0I/"6sH- >khS) pkieYlUWeI#@yay*u(Ӈ}|uzmSjz6fBDE:dv[|ds4 `3~ffM%1 UAK6v,>Eh`ՑG$lxn,Ej>xTe5Ea;h/iag &>$gxѱDMO܊hGs19#ul%̫T_%\ |`M. $wa/` L%P"Uʏ&f,`*w<(1+Mҡ˸ֱRCL%:bpك< Ћ^Kj5Dd#ohA6- Sk/p 7 6Ȅ:Jjn X>Zw)/Y}TK{PVB"vKHRl/9nsqv)&RFarsdg&ǬN}Bx4:2-qd(#DR\Qǩu1f<z1/}2Mִv 5NŕUE֎s㭇Fttޙ 9{" LImF.'Ŵdn3DdG4M"x Οɉ)uUӒyg'ĝ?uF g PAm*@<޶c4 m#yXV}W]juWs j{ial!نs*7_v4؁oli!p4݁ڪn+82}l7=c䬍]9*V=/Љ#P8c*{')жH ڬ/;wUXV\%t_GƳm!-? 7" U$'lPl>*v}PtG,7Eact ٫ ȱy`%оIGA+h(O/oO az3vL76mj-EvRr;&4hҏAs[trJ:L6:l0>lw~o{8ѩ?CYEGf<I9F:S'JN t5jg!4ε'0Φ[܃$" 6@ю/ZI)r}6@0mP| Ł;3O*6 *ZXuM^l5l՝=Stf.z{iIA?xG46f u6G#)5{}ci0baP;k좠-GqlX*e{H-p}A6(LzEu̟2#-[|mWpV-*ۍD,~{ӑm(+V*a a ubk AoJ7I #g$?qT4)(\*p|ScU]Q^\5m5VF;s/eSөTiM^VrnS0 ' Oi^BjMaAg.xd6#{C6f1W#hohXwX}൑VAQX\AhK# k鰤p ?ӟ áK}=y0`Ӹ UyP-q2 >7lӴ^QA\]a!PK^^7nWWl=.X1Tu_Um鎺k3 `5:yA' S@B]i@=MvM<^+8)Γr$ԇ@-O8]mӟXh2^XEsl >Gȃ)FCOpv>W8-tdھO X3=:ݚb~lU]xTR_M}; UD!x5? > G`XDW sA2 ^jc7uQ;K=ih` ~H^"w:8(%Q>`af|&x7E]xQCjXBҡv#,L'.a&(o'Z\c0yb5X^͔H 2JNPNކ&MHTZSerWeᕭP1 JY?5&6]JŻ 5?{M=|⎇k@Up"@mj;_W)+|ӐWzd(5/MX6pNwbRQ(E6Nje&0_><Ƽ461m:rbX@a?|W|H&\(L(@Q(@uXaA^2Cʑ ƒ#L5vP/A(}psm'`2W,7QNeXl2aS3R\Vr,?E',agh2$YjR}2јm%lk!"FS^]m\hUNɒOz+ߕ]`?z :de38,4`yN^/R"̬@P"(`%x~_d[Lg\lg`D;o{ܗ8KZg P4~M~b9dg[r@J F l$4B'6։ 1#/! 8 C'CH$DQV ǡh>EM /S5#y $;YƣHfˉclʌ*N `4ֽhbZg5eܧ^Cb<1{uU{76B4f/W< X,OcT٧pnp_:0^l-B{Psف >8cT㏆qSsq̸8#1'ꯈp5htU RFޢ8bA2qzy 1nޱ᜞[C˵bi A{J3)5VNEϤ@&an.?]i;RL&%zr? d|"Z(2دA ÎP=ד9L—+! 32&FsV_ zО/dp6AOrgB!GN(Q@ (_ے!ѷzݤ[~OYmI=m"L. ,b_eZ ֽ/P_8bB endstream endobj 32 0 obj << /Annots [ 299 0 R 312 0 R 301 0 R 313 0 R 302 0 R 314 0 R 303 0 R 315 0 R 304 0 R 316 0 R 305 0 R 317 0 R 306 0 R 307 0 R 318 0 R 308 0 R 319 0 R 309 0 R 320 0 R ] /Contents 33 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 365 0 R /Resources 310 0 R /Type /Page >> endobj 33 0 obj << /Filter /FlateDecode /Length 4569 >> stream x[[s8~_'/Uapͧ΃xIl'egfΩLh PV8[߷ J!$.jnhvď.9˯QHFGB}>8=h[;)bi$`i*Aw yp HBT,R1I)#S2zr:dhzW ӬIݽLDS_PyDjgC? >3A4f1oe :8i&6)yJNЈqӦUn'Z]Rn@aHsH$L:O,K ΤO`I2T* ףq3&ïx/媔ͳn"x^d3iy;pL y팷D*J."\HFCgfl=Wt4R[ l`jAƫt.LDo7g[`q1&1E5&PʌDV;K aÈyU$y92IUqܐrbhpFcfQSϧlH,k%ZD}kHv@Y'o0>M|_t l5S{^&M'dh Q+_Uj*&Rc !\1]+XVS֦tph䍻9_ѡQ,ݴXQ vZ7`2AR 򒺊4ي73ζMȄ%ɏJWӡi[մ5@No3°,fMPY2?uH٣^tjE<ʔ]vA?GBNp&+\U A'K [Ŝۧb>]:kdn>{0w !@SnOkYsR#ݵgYl} De`ϲ"+'pF܁ z J{Vܱ "Bʿj`FYVCO ҂e_UELct%pƝ!UU U$,3ٷΫt g0,E@3ӣWS M%!2-%BFiL+ШeU v0-vϲL &2+w@^&Kw_)Xyٕv_}җ _k9aC X%\q0|{24Wk\0qLBBKpQ)bZQMJ(ƌ$-e //ktp&+R@s5 1S걮4Te"Df9tz ,?%s6!, "ꅃ>[/hy$w2u55(۲87-aSwUig#⤳KSҀtw- a^b,.Ro*0Fhϳ"s!.o إ&x]8PՇ|UYKVx=g..hnr[?Q^#{IZ<ɂp ]tш[VM"쇛z;ŅeM-Ǩ`P [ άvi>Vun@+t}lhԋjݾ퉳`g{Y9`fʊr%b ̪1L!si0UɺA6X>0|(_@¤0p >==!1do_؞Gr_d2ۨbOE1e<<-7wcKqT7ᅸn&/,R3!u]U9)h 5uysl|^.-y :ʿ9SVMr]d6PHꙙgy^_L3yҭ%.ha mHDc7ɎYM6P`)uRTySޛxq ӋU жk X[}/`5[gug ظrS^tA p\!t?-+j3^Vj~Š:!XO&>~AqGBhC<;2@ޏ07gUATe;ѿZBLL 1J\sᦗ >P|%iKФ nt`+hفdȉ,NǔlY݃)7)#lDbU26Њ=z5*@Jhl1x.86~?mp[?PS^@0sVH\;Toٺ3PvƱGx5ƭn=W]Jftѕ .!˜ chP\Dmk_6/r8 qSm$ՠpU/\RۘzE|MdP0LT-o SQ/C% ?P%~`a*JlYGtnݕ)MS:ЁˤL96vU;oݏ޺ KޝuuGS,4v\h5/څOަ}Vw;VI#ڮwD"ۓn3SE>*&QW".kp*E Υ? I8]@ި~gǏ q}P = HQӑdNjDz0f"6 ^bw"^"cj]'V`'r/evC'+FVyu-T[3gvo녽ʭ3b}W@f5`n4j3ɘr /IO961NkaoQAEz\QDȁl,oӜr[tzn;&頻]2vc"ֽӤ}k̫`x 1f^,H#[>Kk+<oq#'_ޣJ bo°J7 \:ݟ-Oqa2>OGۮC0@\^P]CmJu_^fFŬ8;"{}9r}_܆e)u=YˆQ(Y^d!v";i [.Od}}B%c2!=:=& ɲo.~νurCmW\w]N|Toۛ#NKc 2(8&Nҝ+D2ө9wSu;ǂ.,mk7ZsEeH+g4GI&ħy>9Ų0+F"Yzi^bg[|O%@(kLgn.ojG~8z@Oγ=ݹ?r XS7~b 9Bh?ĹM%AUSđLm*SO1 AMy=NF2Ҡ+}zޟ_2Nya띁> stream x[]oF}_1b-Їl[-kԒTl#vb;HgcEiD;$FX/I 6:a U&XapSi)'Z, 7 ׸|38>9{ H'2 ;A7Ruش$ A cq3|d<%HF/>"8耝kV[!/pg|,D&=C5QDHEĖ ! ՀbjH,FZ7Z$l9?MV\& B [x_PhM'| ,p6ʃʀPCGm $&bm!*^/  E`Hp怒 ^26Qᙊ"?*Ѥa|~>f)lw)0Cj{F?;~Fi[BxNJټqw~;1-?'FX6O/|#&?apb2C,vo}x& 1xeXnII ӽ~N)`C/NYضjj7bckb-O1?bx 5$ia&E NSbi)䗪>_?ˌ$ÉsBa=OgMR`R|2 PY8`@VPd匕d82pU2-%Y5M1+Gl|=wol>o%G2B۽ጜ_ɫ+2reK? \_'oh Ue[=-x67%fꇗoyt+#@|;,LA] *•';KRq*#B#_w[dsQҎqdS'u%aͱ|\~ $ 1,`T8L pNE=oS-' *cAK aΟQ)nnջ_NgM=[m;TF()+'aA## Uo;= 3V"S@<WF&wllUUQ/Ţ<)겜ggxTpXP}XFk/<2QV+@np@ rP{5ت{ 7#FqQ:D1)B$\:$c?VƼ՟MU_ʷJ#j{e\I+>>fѧAL$qkٝ5UUE";=PxPB=B2wnq`p(XOլȺ= H*X`B B}ϧluY;aq1YBe#豷g$J kI ur]^s֮<4]WoKF:&Jk0}a$Z@h,G9W R' Pb}gR Fe>zbDr>l1i#kwһG9݀`g;RS#"3 n{S=ȁZ\Y2u%/BE`b@?,q&߽ղ7݋Y\Tr{*ffn;YWlX/\_Ǿ'˫M/ˮ} X8:#_Yf9=/닢͢lF:?fP 1N5knqY4&g*ɽfn!in%]p.y[LWe`Qjso[P=N!_^vW5dAvLڰ@buXoca#1 ;9ObNԚ*zn+֣\x r.AUCT𦪗e62j !Z?DqJǃvw,חK<ȱO e;c\W8 Ljhg]n,ϧŪg8C0&>@͑tܦ* {:|kzNi{5m].R3&FP Qcr ǭz^.ʺla}c52.Gss6СܲW̧zGu*y!Иq>s=^r '•6l)7N+h|=$ 4CsP$G(R>4<F|6[m<+~,GU7IQ.R1\Vui Içk=gb#4 .гy ٨ 92q ,GEyD<+;s]P1tN=_pQ_>DT jǛ GanE_9qRt',(zşħK uOY4*/p:>9l稣WYFN;QCԦ@(H+\4 Guy63y˿@+e`sd ‹A(Xy==F` F>v4?P(,^V8*U r$3o7$o{ey*#NE5;_i;A 3uh-?ߺendstream endobj 35 0 obj << /Type /ObjStm /Length 2833 /Filter /FlateDecode /N 96 /First 854 >> stream x[]oF}_1ɃGt>qvheKV ~ϡdq䘤@;{T(6 p"k}\0UW/,ijp-R> !>᪅W#1[މ(dJ@B+m7}> `  ?SǤ!Bh11GaI!2ß0 #G-L4ƘoEx [ 邌150X& i4MJ8MUUgAKI3h_O7ᲆ t@Jp,? ̥V6p:}`Oa"(L\0!J2<1"*bБ gaA0D7& bp- *o)sBH E2H$GCĩ40;/"LQc(D 7 cNm*K; UR P0$yIk&g M Xo> hp֠7߈?Vo( FֳtpChL ;m$U Hd-!J°l'Z˼w\']P3<-|˧32}A*m0wQӂcjM}CL2.nRVv3`j؈hY)'Ţ֕я/5D\bT{<?b4i+53IlvFIF^ ~>k/J1紺_着n+A&fc}I*XXuꤤ;@)l` Ilˑһ:}_题(Qv3m~buĂ{d6?Y7x6/Mj,VtP 9\v }n<H傴v/1'hK~B?q [r5մ^\šlY;VV5 A\wް%d? W~ @e,VFb}z>:;grdwI]ݔˋ/p4Q>2 Z<^F [,58=:5?f9v (%u.=Xwו n:=Rpd2r Tb:n&}.ߏWjU6c!ǡp\`Qz@зtoUs9eQ^<rn"]lA6NuouA/hE"scdYTryXW#+9fzq<ނr|f'A=p,)l;1=vyGX>^S{[U+]@knTs[v:,eێi(:!{ۺr-d Eyp.&i2@7M&P7b6sƆ!11ex e" EK r GD#\L,DGMX@rH%gg |UhvQ/bvh0:AmNMGɝC<+1*y=>PG22jH?K>Ʋ&Ж[U+h׳f:+oJNvs-p5\;Dϳx_VǛt#v~t+;zڒ$(@]ɫL"P Tgϻj!->+0,ED򎁵NNJ $A=} ֣ LŬ m#p8ӇN} jfۭG {7eWpb62 3"kD KoCa7Im脚 }jr݇_qtZr1XwK29U42"d'fqb9}IVϩRƜx/eBAA-yB7Lo8S!7.Xf-q?;ؕlT}B{Z!Nendstream endobj 36 0 obj << /Filter /FlateDecode /Length1 739 /Length2 922 /Length3 0 /Length 1452 >> stream xuR{8TiUӍZtLƜf4KTj\Rf(c s8sQ%X-K=EV[Ze++J'\ {}z9|߱4xR,vPư'!XZ.a1`r1sIg8Й1A".yxe^*8tb:ӞAaB@H"(><a㥪q-ƕd`M6dK)cTr#>S Dz #,ETOU>!#*4F!JwD K! 2\ P)`Jd$@c@'_"@a>Hk0?LHh <?u++%0JX J? w4j2E+VLb1c)`0BZWXMKC1"UD;Qnғ_ ޾gJ'zVԴx&/LB ^eyϛ,}JSk+BN7P~}\Sb'{Rz׀@]_ᢽ*?FdGs-߰kOc`*1u5>p;+3z.ckѓ#{.n)Dn77ժ`pAxQv00s.eu/GKUP*^ݱ.AlphֈjEssu[.z3sw]mLvM^>zu_;gmB4=ʃ" vU[i- 6aw;5w~{nƪ݌[ˏ q9Pfֻy=)ݷXKmu/ g61uf/&=#{)V^9G9Cóʲ +v/}4xpK ʶN qL a蘽02õg$Y^r]SB7 B #j\6=3LY$nA+#NiIϺ󦢔j/+ovV̵8^=*Pwmk3P]4paƖHǢ"cap\'*~vkY145@S-'Qb {Ndǩ0k1SgZ-'e>+o>\t*^pܴr~IyfRMYS)3v.+SйKݜݢccS}Wޚ&K=ܤ>B8m:{`^YueuKK\v{$r[wU\pTZyi26vzOΫ~ b,)$fF6.FLL9t,| endstream endobj 37 0 obj << /Filter /FlateDecode /Length1 1656 /Length2 6321 /Length3 0 /Length 7288 >> stream x}Tw8kEDE cEgD'ʄh$zDD=^K%Eg~{o1uyOH/8 B"|ll ( ;+BPq H4Gk 4 2""|kj s&l]y@nhZ;;z6sZ'(㯾Os 0[;$Cj sw*su`n`^Pk0 ie@"ܡP# XWLf us'G¬нgD`nz7+3 M:[ hw2 SP)9[aζ~!ax@h$`޽P/@^g8}HXCD@k$*D@k$_#tk/׈||5u w "1tMȿďDCߕ5_^"`nGE7UBaV"t+m?}* an> ;\!7Z6q#6D+]ݱv:@sm Z]ݬ㟧|Gt ANOs X%aP.atIA^>i /~m G=Ќuh\H6 WAI+n0au=u~:Zqsl7 ]"?z~G}%C`H=owٟuf A"`^||'?f^+EwUb\*@܍,?Bk +gEg}!)FPgA0D&X#i٠-䕄h|p"٥Ѵc~rsdl"!UZ.V RHh`Y]?RCf^{瀃we*}LƐ b {GC_B٥f1S'D 0~Z ;i3Đ'Ky(DhV%̘E諈80=E2q~;[ܸ✉Wko-Wf)\|;W1͇ы3KM*SU>66ש{Q2.>vn3MLNX%mses&[OG8 })ȹ{w.6.%*Up4F6;+d96-%Xϟ c3Ge gxH{ɔZ^}^J\QXw|¹1fI;E$ xwG2>GاF]_pH1gyDC p܃ 3M ɢ¼(t_G *]LϬElDNG3[2ގ1񊏐Sja"3)t8rwEÌ=y__/d7Z?& 8O]NLIEJR z3{8kDm¦7!s eSSQ0ENcX>Y9gҧ6¹,\Ù^&.2w"*ԏ9 dpt5.=8Yvw=5y 6<{lUs U`0\GFQ€JEVi.d ѵY62X:!Qub}yGYY " <[Õ ac3^cW/˚yD*g/,_Ow`i9'8UbdTF3¼,zI#1 e=, P,(/z<,9 Lɂ>z=\rGϋv؜sю+oi}^a UWIݨݔq8Ɍ&~aV Mʪjf\)I` ˯{`8b9QĪLU /(ޮW2oo"JG>,3۾q_ ԞO&td?\)V]+OC݂ 'kp¶UpW 94UP6 ?4GK;xa2CФ@AQF0{%D(K׺|R7dփx sN',g.M ߥwm{[2]~ɿ8f3+9Hٗ %8(%a?Ԯ͕y+M[ǔh5y5o%U~FFtEL*G՗7%^6=8!qy.^!3sɾfGpQ\@lWL$?{' ɨwN%1iھ_vhS50(H5_t->hԤ ~fVa3mS;_'T~4qѴɍb*ʼnVe u7OһHYN01wnIcfg*UX}-f1CXl/*ɒӶ: +q}]NS#{y̥rF w+ҧ $* !B1l=j|4vNnAkZ yo{Kֿ!ۓ 2zlr+OPQ2r;m~o,7qD*1.l]|I#ztͯ@P3BT1YMn3+"3*UڤTV> c/8xc%yN4JqB9PĪMAAa`dRF8ȂTKeM6x=K|7W:aa`¥٬=Fx骞 z9\AWHH?C/}ˤ `bNJrm͎Is)_%e yqMgŤ&T|3:9Q{lLM6gd6CHiA) "xv0!0M[L!J͞3-gb8E.88đsr [ZK+e.Uzv?]qiO2Ⱏ\&TGz p:T:$C]ߊtMH3bTmf%Ev݉#j}(~~>%R՚F+ qv2'>lUl"PPRObO54un#+|iL794O1l*ɜKz.{|dNKQ O~rj1"vJousED ݼuQ ̪,Փ* Glb'iQICFSr[YS*k"Ld/"n)dYw(B5ډ!H߶Q9҃w ?B;"J!5/N]YPprb[ z'*;kHSDc% Rƃ0R8@#ܛܻ잧z<)yG--1<$Ý'w46xiG=a&aSoҷ 0W{4-E.:ibNVv:GEwPb[M;UH@g F^H0*z4uwX+$ R|U -˜օxsVJbtջx[ܑm:{[ =6Q *t)ѵ7vͧ.vG?ٷWж汬`s.Ya0йkw?3/9QmEl0=wKT'jym\`L<7Ԣp׳[p BƤ,(8]fѰm#927D :/1ʶ\XzesCQZ-R)w% }?Hs_lV\>o1A lH4*={qM z=^Dw QiÃMT 8qfSccE 4}߈ה-5-,^z<ѡG:9`f{dv 4X{Z*Gi+,mNGŤ Ud9xTERZ%dvJ,ŅsWyZ%Oti|n7+rH5cG>n![P|GPltܻ05J6GUJ,Ś8lTvsB>.vu|ƚd.M̢Ѹ&&KBIdW;KDV \.h y'^BD,GΞUӽm9VU|ϲ{ <E|k^3,kdv<9u&-X! \ ;?,7OqVAQ'kn uIW{B z θ/SxPn;MyZ|WIGU4Z_Ghac񇞫evZDҗ!V q$? }/Ӗv{y[mBKF#!P8ql`My-ᒊ'6=2:w @g.B#meŅJTJS͚glN2%|xcc䟸1Uï]p+aNIvNREa*3'l0 &L?r853l2ڷ,c _҄\OG endstream endobj 38 0 obj << /Filter /FlateDecode /Length1 1626 /Length2 12130 /Length3 0 /Length 12971 >> stream xweT\.]w \k ] n!w|ߙ3ܹ{>UOTd0w0:]X98ʬ* skV db6q tAi{ -@O_&SԼy:[[to/n ;G{-QXv 5}U96@9\Mf 3``64gX# 19b8쭝K'[\`3;W-fa{ ldx˪&-.V&.v~S,,\*o[750vv3xo`"`8,M@oab՝ o՛8:yavqYpi׬(-: w7&`;9]-%2ۿ-K{5cޖ gʀbbomrWk]?J:ؙN%`7Z88!vլ]̬&vo[ 69YAoR+'ǿ贬llߨ< am6.Zo:FRbrqsݽ7@>Cʿqbd w02`3Fl6i%KmFߗ<= d`&hRC=8.mv0ȱ^ ϯʡ7%tS:aRo]E|;$I.5co];^Q#Hy 8^qu 'v.'[F?jxŐt(#BVNqIr`ȏoYaZo ? z˚.(9%89|OQvbVHz'pӳ 2۲ux^5TXt#ugiL2j{Ys#ŤM=k ȚK }c+Qdqv5MU69Trv+O/iEWk'Y5oG*I)WL1ݙtsLA0bLbɒKlHDĘjnWi[%5W}(<>q@i"m"'C;2˂ `_wvoIJ_N u9`_\'PKE{ ]!%ˤjIHAjK&f<^8x zk*f_ }l4v\_yŸˈ(4oQEjWG"7-=Aw<-ba-S#؀7g}sC`w$/J\; Vsq{~d "9l:_:\\f g' QS9ղM(#?k{FZ)uf$4s׌E&3Tg hE4~w|RJ}nFjwcS[ |+e]maF"xN_|i[v qg3cGMдaXTЅp/QGU_^ |N8xGc4];DiGL&ShSɏНGv/A!T=َDA]fmxZ3H&:EhCcV/fbV.}lol!@ҏmOt;<-0mdY|\?ph0tlilG0"͟-ՌIjf}-%cEsQV/ qޙ 伽"x^36:i7hAG*Ÿ-ȁ>D8WmGR>݉8T)#6~bMF!n?%1^62QO9/dG\cd0ǓoY2Wt~ B%zk(A{FP0V~m&c"-x뛹kL|LI J%?!fI1.Z( ;@.6[uMs׶;RF&!|gsC(Sf,X<.Mpgd(daU#:g$xVZaHXV{= Un1PϹ]'$" 9|W^UV֥Yj4k3 O{`&2Ef P3$L9?t;oB~%Lo1y<̱z%[#dPw$2܉N))طeJ2kf$nO_j,B Trrx)ctUu:|T_arX'[ loЭ:J {nkH1I믆&}inJUJE،RxӤ=M''+9`ZnaqP&߇3KZĈ+ӸL~#\Xwh-kf!\O%~Q^Ɏ=o-LI'K#`ҾsDF/'#.u$^bg{&3Uj2@Ț^y~KA9:Ҽ Pr[Ii?"#eEŘWjHG+Bف`c´М|ɶ||1䪔L7'1CEX P@TF/m81:*ɟ+ziSP͕(enL%G7NnLRA"ch'( ?ڇļAOT!,iۥ~drѣd Lۿ>5fЫ@gBk/}w%$2O*G,Q9dű6؛82X`ϓ*{GAZ[?l $3aym+Z+ Wy5LWMj*u"NhK#C3zΜx-}hhhD֝Hrf.0KdV%>HKP₳+/61HaQ5>2xxfwGbhW#!A1 GOSEp7ȄG[LTQc:B>`+X1{ *SpM =!>6C[c#2txzx??)F猂X$R#V$%2''wuW2 b 8]l`30oM*Dƿ+a ,k;CXH 8bЈxN\UA+oNo`bG,ju[GhF2BţskJLJ6P?&;ok>+kWo \zQvŋ&"gϥqXܓ (=挩U #X6 aT^cs}(hPHA'݌1v6{ܕi0r(g;Ca#>["#i^r=j-CQ"/"T4̯ I=-prTtZAe|/v"~`;FrƱK93XԞ^8쨓L`2~IZ\9v@4yyzY|B:gO0O5. {=8a*6y&~km@UޟEM2V3KhɲZc"Nn5I@Hݏm%OT|lK̜kr$UI)_FȲ1k~|=tmL'ZhFS{}oӭp>Qg dH5awW<d1M`*#;~"2[D3ߨ#j#QlaRn>kPJ6#QцI$E֋ ;>ĔPcݧ80+L&H1Ϫ|,Ä)L8(:ɟ[SzDd7-Q YcjkEG.?8K i~YU^iK$%p8#8A &XPYDr왋QSVqM0NS34r;zz2X蝾0[À^QyFmح R#;ɂ1Ș%@78!)I2LԵz|o޽j %CU2 Ƈ \ڊP&BԴUߞpQRo7Μ !K6qT?ba]]^efђZptZ85IDx LAĢ(OH#gPU$]A;RC ):JQԪQg[\mEM6RE;\NC!w%A!،:/+I#G dS=Sۦ<;faSx lzUQ>&Mp:U"fpӖ[K0cޛ@16*V=l  Nx3- qvDδiy!rra FډX,܎iC=J)TzGl*]ǒg/P[MqQ>>{ڲ}[{@c4{QՂ/l; )Dig&v/4n>[|I 8U5vm`PPy5L}d)j굵8ރ*sR uk xN*Q#{}/ F2e-}U 6=PGVl<-|vTYo%/Y [{5+e` X{OaD3qj Q ,]mm[E&-`R 3(&î^BL͐&ugqp^Efi c5ރ64$ȵ}5;q_jb-Ks W[5(=GYQ}%K')AIf|8 e5s}.Ĵ!PņY4㚂ޔi+o#AgN~fP I΃YL:N 7j'2+O7|}X%QQq%~ _ӑۈwZM`s)ZstfJ[@#Yn\?^'-7s&5,ui(w_s)|C6!fHpP( {z ĹA $/ RɔZn Aq{䷕g}LPK!JUt| GUAզIj139TP5EfP|(ASc6y,Ɖ kU>ݲa|OMu烑D 1]hBtq;sS69-Aq#K0 n?KeW;xpP }RbB8Ӧ: oA.Uw ,GZ,IxPC\t-b<W(N;|2vs \ .b>/8 n,1w.y@50RsbH/6JXohR _A; .LkD_#w)˶wm0|GbL7kL5Z+gZwOmB'.n 8 >H_b.I6sI}G&R]mb6kKs)]0GG'{`a8Qy}\:;|ݙhMW!%R@zZ|2.}^4asK|J r.1+A $XUbLI,A&1I{O叶yJ "8Xw?)Z(fR_N͗4ӐK_:P8zY>5\xt:(r1I75PV1'ؗ,G܍N%]HDGHnC̅/2+!Vx@{ikyNj*% OKт2 MB{?UgԂ&D;m]5ۂi<i+P̀QTBz, iX`bG1u^y؜4S2Ͻgj,˓he~S)+NOGmQ=aل$?B5|*j{@0+QEfǓb8rY?[ҟQT> @aAJމ4JQ I hʽ%40l)8r dc5)QyAZ.&06u3J.w]^Y'[0FV`VJԕG:e6+˯4![[:aK~+eRRz:҄E[nuϞl^B%,m/L_פQom ph!+ ZEtMWv0!p!vI*^,q'A}Zvv]w_4,+]xd)N H7i{gyuJ(N+1ݽ\.}4+r H9*v8|"}[[l"N yKq*Mz8䕉(|1XF\=وx#Q]bŚ :F 3Bsiߕ@I8?+^7=_81sg uX@,(-g簈oEݜ#'wHV-!NZǨ Aj5{Ǖ~2iL)W̿vR}&}",:T'& 2_C&6 kP{ʄ FL'&O6=a Xç ZH!hvH&C,猩-X O0lGX~b}5F6TXM )00z,>R=sg3ի} |ϾBʙ ?Nno3 &:vk6+Y8T^MrNbA^0d=­*"' c,ҊD..#4d9g˫ ]dkSОNO}ѡx?fWUz-;IwhcNT0D!J5}_ȩk|5Ȳ0'WJlNڃYނIӥT{` s*C*w w~gd4({K]2͇֤MiY Mh cw[vRDm+s6>t8ggL SpGiZM=92v^m0ldÆ<:>Z4_<<= (@.T*iZH6f ܭ:+B{)j `isNjc^Pv gjּJ׋1f :wkk`:p] 3F$:6 ʑˎt$0h\IfU C|8]#cc9``#ߞ+DZ[Ma%fJ nw{\AIr5RTNswõ^=!\Μ].c/]d`n]9R6g%ΧFާ\ATuO ԕ>r6ֽu|9 @d9`(;ßa (U(V_gn)X0flCqKN[Gbf!WcƅןJ+ߺv_Y ryfcW'~y&2H@_; "=In6hV^SJV]NY;`_׈|޴{y>2DT3PGIidq]:Sٜ%{\楓6EIsDF}!<k6OW z&M Gr ulqx͙H328&>!y_ ?6v`k)\ݢfک@_Xv^X1:Ul eᖃ],0]!­'U+mtQ?b%6?@T_ bXa=QĎK/ p~N׳_,\z/9ls3}K-=↉aQ<%Q:!V {ņUCh*: m0/$sW)G\שԡk!9%7ڤYߦ4{SnzYj[ ]݁s` w? \l BL|]QT[¾QmeJmjdD6%.DyP 6mWyߒd=Tp)+j1ts9f&j7a$> stream xTgXSVHT¦ "!*H*M"lB $! U EtP@z/) C3s=Ι{?[ZZ{^B|&(Ǒ%0%I2û ō@FL^HH""H)^ Opqd h1Xмnbg tAH4a C đ@QO?Ca[#A)\$ C   @;D|&"pdz ؝Gx;Id!JV-u]$ OyFdGȠ700$CM!#1Gex08\ ADaABC>{9yULPzI)JN$K΋H~Q?1/xtA"3#J)> t0Ɠ))Le?'? ?"?"'O?Sxbw3e pet "Ͽ(ZEWǡ)KB1$72.3K#  $b18"R`0  wġ~nQڦ7uͦ=r6L‡ nGu8{~RRĥdEE9@QN&z#A&b(?Ov?hx8e2HO"""4hADҿ#\~M$h45HB 92 w' wá}J/}{/}h`^6f ȋ} aLG- ~Y~15ޥW#M] :+t _}t1̹֒y3/t֯P7~KRFz2Kq$#ԃQ&06jn [+ uFؽzckU ;8J]κ.oi9T%BWދkO-RZ>0pֆ2 ']Ge߶N* 4z( lxQM^9wlsy{}*wש:_}jlݧaAAN3ЪJ`gJkqaEs}cN?WzMvg`yuW۲՟"\Xiw(D̈́:}>O<>URs9h7^l8J 8{T=E?Ƣ&lrOdrՌbӿkz0אָ$Ѿ71Ő~Q^fl5D~C\}y񳼚4cL{|1GPV sTMl=6} <`k3ʭCK/x!M7A_C>J'7u^~csW@ 2u%Jf>׺|_BjlZ:VH_E~>K:v%9v؏TmS|k36ִx`6Ɵ ?rV|R8_LCV*<^dnn)2; vG8/[-;HވS˕-I5+ ũMl>>L֭͆1ae\+RI=%5&9 j Rpb_>G¨FVr˿56`Εk\)"ƻ_wә!>cp(gWrZV. jE-ٯ| '4e yy7> j:LvH%oؑR7 N.UwBZQopa"fH޹b̺AIF=Ie gzT `!m,S=ə#)#ܧm身''_1Ps ,{ ЎحOCguSBϺ~bsJ7n&cyZ M_ BB#ZQ2 jy9_ _[qNaxv1Z;N\d -kE۷ c^12pm]Ho`E4 T7Mê92GKt&$ Uppm)'vߥ,%\sF?ϡw-{v]+He@kLN咑R\LtJwV6P|`fMӚzـcV94Js\~ʢS.d2bJQmY;,O9s-1%*֛~f?ǹx͸kQ"ݽUŖlT"b&9KO?—Y1BBqfdDG9\cVĞ?Vlc4Oqܻ>Q&k3lԦ "iM 0 k{JOz?ja@H6Y,;U A\Lt ㅥSa飁v22 !ʔ?n}up^U~Zn2)o1Dm0׈5y) {=t ַWcV^K1G]xx#Bvԣ9O]9~]%>IqgvʿAoZ 7V2PU8{D4#1gCcR6o߲.%亥-mrF}=K!a{fQ|/)?lRbgxA8 }z,niqc]#IK|Ts`XCdˆucԐy$Fz3zTbQWk{$Ͻ^_ŗjS蛔L}Q-/;88PTk9.hqx͂ϛc>1wN`aIJi gt59ðnd;rEnҼTIW/^KVc α_|STjA=}f2~b8yX֌&6>쩜݋?2{?KMeSzaBoO&3eNo棫wϘx{Z>P/cA`֋_]ˬxIoR-[O "t>Zg#חBi.- g[78(-y4=WnzɁ.,׾}_̤Җ浺6VIυY[$7G%F7a|X;Gq+%|s-3f3BT6 BE_VW))c~JU}.Q'_ΏA쿶X,wS=%ovB;]+Rc_z3lSrJ!V3WժA$Τ$Nv|xpNjzU9Oq璠;T2}xfN|c[!V楩\ʾ NtwmM:Ua:AlIU8;EfJ1+"!l [o%/eisi {(WklJV8/0] ZrXfBujw*fGdzlkW5L8ǽ Sf endstream endobj 40 0 obj << /Author () /CreationDate (D:20200502065952Z) /Creator (LaTeX with hyperref) /Keywords () /ModDate (D:20200502065952Z) /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.20 \(TeX Live 2019\) kpathsea version 6.3.1) /Producer (pdfTeX-1.40.20) /Subject () /Title () /Trapped /False >> endobj 41 0 obj << /Type /XRef /Length 170 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Size 233 /ID [<1afe497dd876b61c74ffbc0e0d8d8db6><16e47cc4be96e28b0e3c855154f94949>] >> stream xcb&FFV;&Ɨ R|DJL , ";jnT;AB#, ̾ "<07خ`k (k1 gR`Y9b`Yo0;̖B 'L]XD B\b?`3GQ4qa$ W endstream endobj startxref 216 %%EOF afex/inst/doc/afex_anova_example.html0000644000176200001440000033713614665070010017443 0ustar liggesusers ANOVA and Post-Hoc Contrasts: Reanalysis of Singmann and Klauer (2011)

ANOVA and Post-Hoc Contrasts: Reanalysis of Singmann and Klauer (2011)

Henrik Singmann

2024-09-01

Overview

This documents reanalysis a dataset from an Experiment performed by Singmann and Klauer (2011) using the ANOVA functionality of afex followed by post-hoc tests using package emmeans (Lenth, 2017). After a brief description of the dataset and research question, the code and results are presented.

Description of Experiment and Data

Singmann and Klauer (2011) were interested in whether or not conditional reasoning can be explained by a single process or whether multiple processes are necessary to explain it. To provide evidence for multiple processes we aimed to establish a double dissociation of two variables: instruction type and problem type. Instruction type was manipulated between-subjects, one group of participants received deductive instructions (i.e., to treat the premises as given and only draw necessary conclusions) and a second group of participants received probabilistic instructions (i.e., to reason as in an everyday situation; we called this “inductive instruction” in the manuscript). Problem type consisted of two different orthogonally crossed variables that were manipulated within-subjects, validity of the problem (formally valid or formally invalid) and plausibility of the problem (inferences which were consisted with the background knowledge versus problems that were inconsistent with the background knowledge). The critical comparison across the two conditions was among problems which were valid and implausible with problems that were invalid and plausible. For example, the next problem was invalid and plausible:

If a person is wet, then the person fell into a swimming pool.
A person fell into a swimming pool.
How valid is the conclusion/How likely is it that the person is wet?

For those problems we predicted that under deductive instructions responses should be lower (as the conclusion does not necessarily follow from the premises) as under probabilistic instructions. For the valid but implausible problem, an example is presented next, we predicted the opposite pattern:

If a person is wet, then the person fell into a swimming pool.
A person is wet.
How valid is the conclusion/How likely is it that the person fell into a swimming pool?

Our study also included valid and plausible and invalid and implausible problems.

In contrast to the analysis reported in the manuscript, we initially do not separate the analysis into affirmation and denial problems, but first report an analysis on the full set of inferences, MP, MT, AC, and DA, where MP and MT are valid and AC and DA invalid. We report a reanalysis of our Experiment 1 only. Note that the factor plausibility is not present in the original manuscript, there it is a results of a combination of other factors.

Data and R Preperation

We begin by loading the packages we will be using throughout.

library("afex")     # needed for ANOVA functions.
library("emmeans")  # emmeans must now be loaded explicitly for follow-up tests.
library("multcomp") # for advanced control for multiple testing/Type 1 errors.
library("ggplot2")  # for customizing plots.
data(sk2011.1)
str(sk2011.1)
## 'data.frame':    640 obs. of  9 variables:
##  $ id          : Factor w/ 40 levels "8","9","10","12",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ instruction : Factor w/ 2 levels "deductive","probabilistic": 2 2 2 2 2 2 2 2 2 2 ...
##  $ plausibility: Factor w/ 2 levels "plausible","implausible": 1 2 2 1 2 1 1 2 1 2 ...
##  $ inference   : Factor w/ 4 levels "MP","MT","AC",..: 4 2 1 3 4 2 1 3 4 2 ...
##  $ validity    : Factor w/ 2 levels "valid","invalid": 2 1 1 2 2 1 1 2 2 1 ...
##  $ what        : Factor w/ 2 levels "affirmation",..: 2 2 1 1 2 2 1 1 2 2 ...
##  $ type        : Factor w/ 2 levels "original","reversed": 2 2 2 2 1 1 1 1 2 2 ...
##  $ response    : int  100 60 94 70 100 99 98 49 82 50 ...
##  $ content     : Factor w/ 4 levels "C1","C2","C3",..: 1 1 1 1 2 2 2 2 3 3 ...

An important feature in the data is that each participant provided two responses for each cell of the design (the content is different for each of those, each participant saw all four contents). These two data points will be aggregated automatically by afex.

with(sk2011.1, table(inference, id, plausibility))
## , , plausibility = plausible
## 
##          id
## inference 8 9 10 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
##        MP 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##        MT 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##        AC 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##        DA 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##          id
## inference 37 38 39 40 41 42 43 44 46 47 48 49 50
##        MP  2  2  2  2  2  2  2  2  2  2  2  2  2
##        MT  2  2  2  2  2  2  2  2  2  2  2  2  2
##        AC  2  2  2  2  2  2  2  2  2  2  2  2  2
##        DA  2  2  2  2  2  2  2  2  2  2  2  2  2
## 
## , , plausibility = implausible
## 
##          id
## inference 8 9 10 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
##        MP 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##        MT 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##        AC 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##        DA 2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
##          id
## inference 37 38 39 40 41 42 43 44 46 47 48 49 50
##        MP  2  2  2  2  2  2  2  2  2  2  2  2  2
##        MT  2  2  2  2  2  2  2  2  2  2  2  2  2
##        AC  2  2  2  2  2  2  2  2  2  2  2  2  2
##        DA  2  2  2  2  2  2  2  2  2  2  2  2  2

ANOVA

To get the full ANOVA table for the model, we simply pass it to aov_ez using the design as described above. We save the returned object for further analysis.

a1 <- aov_ez("id", "response", sk2011.1, between = "instruction", 
       within = c("inference", "plausibility"))
## Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`.
## To turn off this warning, pass `fun_aggregate = mean` explicitly.
## Contrasts set to contr.sum for the following variables: instruction
a1 # the default print method prints a data.frame produced by nice 
## Anova Table (Type 3 tests)
## 
## Response: response
##                               Effect           df     MSE         F  ges p.value
## 1                        instruction        1, 38 2027.42      0.31 .003    .583
## 2                          inference 2.66, 101.12  959.12   5.81 ** .063    .002
## 3              instruction:inference 2.66, 101.12  959.12   6.00 ** .065    .001
## 4                       plausibility        1, 38  468.82 34.23 *** .068   <.001
## 5           instruction:plausibility        1, 38  468.82  10.67 ** .022    .002
## 6             inference:plausibility  2.29, 87.11  318.91    2.87 + .009    .055
## 7 instruction:inference:plausibility  2.29, 87.11  318.91    3.98 * .013    .018
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## 
## Sphericity correction method: GG

The equivalent calls (i.e., producing exactly the same output) of the other two ANOVA functions aov_car or aov4 is shown below.

aov_car(response ~ instruction + Error(id/inference*plausibility), sk2011.1)
aov_4(response ~ instruction + (inference*plausibility|id), sk2011.1)

As mentioned before, the two responses per cell of the design and participants are aggregated for the analysis as indicated by the warning message. Furthermore, the degrees of freedom are Greenhouse-Geisser corrected per default for all effects involving inference, as inference is a within-subject factor with more than two levels (i.e., MP, MT, AC, & DA). In line with our expectations, the three-way interaction is significant.

The object printed per default for afex_aov objects (produced by nice) can also be printed nicely using knitr:

knitr::kable(nice(a1))
Effect df MSE F ges p.value
instruction 1, 38 2027.42 0.31 .003 .583
inference 2.66, 101.12 959.12 5.81 ** .063 .002
instruction:inference 2.66, 101.12 959.12 6.00 ** .065 .001
plausibility 1, 38 468.82 34.23 *** .068 <.001
instruction:plausibility 1, 38 468.82 10.67 ** .022 .002
inference:plausibility 2.29, 87.11 318.91 2.87 + .009 .055
instruction:inference:plausibility 2.29, 87.11 318.91 3.98 * .013 .018

Alternatively, the anova method for afex_aov objects returns a data.frame of class anova that can be passed to, for example, xtable for nice formatting:

print(xtable::xtable(anova(a1), digits = c(rep(2, 5), 3, 4)), type = "html")
num Df den Df MSE F ges Pr(>F)
instruction 1.00 38.00 2027.42 0.31 0.003 0.5830
inference 2.66 101.12 959.12 5.81 0.063 0.0016
instruction:inference 2.66 101.12 959.12 6.00 0.065 0.0013
plausibility 1.00 38.00 468.82 34.23 0.068 0.0000
instruction:plausibility 1.00 38.00 468.82 10.67 0.022 0.0023
inference:plausibility 2.29 87.11 318.91 2.87 0.009 0.0551
instruction:inference:plausibility 2.29 87.11 318.91 3.98 0.013 0.0177

Post-Hoc Contrasts and Plotting

To further analyze the data we need to pass it to package emmeans, a package that offers great functionality for both plotting and contrasts of all kind. A lot of information on emmeans can be obtained in its vignettes and faq. emmeans can work with afex_aov objects directly as afex comes with the necessary methods for the generic functions defined in emmeans. When using the default multivariate option for follow-up tests, emmeans uses the ANOVA model estimated via base R’s lm method (which in the case of a multivariate response is an object of class c("mlm", "lm")). afex also supports a univariate model (i.e., emmeans_model = "univariate", which requires that include_aov = TRUE in the ANOVA call) in which case emmeans uses the object created by base R’s aov function (this was the previous default but is not recommended as it does not handle unbalanced data well).

Some First Contrasts

Main Effects Only

This object can now be passed to emmeans, for example to obtain the marginal means of the four inferences:

m1 <- emmeans(a1, ~ inference)
m1
##  inference emmean   SE df lower.CL upper.CL
##  MP          87.5 1.80 38     83.9     91.2
##  MT          76.7 4.06 38     68.5     84.9
##  AC          69.4 4.77 38     59.8     79.1
##  DA          83.0 3.84 38     75.2     90.7
## 
## Results are averaged over the levels of: instruction, plausibility 
## Confidence level used: 0.95

This object can now also be used to compare whether or not there are differences between the levels of the factor:

pairs(m1)
##  contrast estimate   SE df t.ratio p.value
##  MP - MT     10.83 4.33 38   2.501  0.0759
##  MP - AC     18.10 5.02 38   3.607  0.0047
##  MP - DA      4.56 4.20 38   1.086  0.7002
##  MT - AC      7.27 3.98 38   1.825  0.2778
##  MT - DA     -6.28 4.70 38  -1.334  0.5473
##  AC - DA    -13.54 5.30 38  -2.556  0.0672
## 
## Results are averaged over the levels of: instruction, plausibility 
## P value adjustment: tukey method for comparing a family of 4 estimates

To obtain more powerful p-value adjustments, we can furthermore pass it to multcomp (Bretz, Hothorn, & Westfall, 2011):

summary(as.glht(pairs(m1)), test=adjusted("free"))
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Linear Hypotheses:
##              Estimate Std. Error t value Pr(>|t|)   
## MP - MT == 0   10.831      4.331   2.501   0.0587 . 
## MP - AC == 0   18.100      5.018   3.607   0.0049 **
## MP - DA == 0    4.556      4.196   1.086   0.3135   
## MT - AC == 0    7.269      3.984   1.825   0.1941   
## MT - DA == 0   -6.275      4.703  -1.334   0.3135   
## AC - DA == 0  -13.544      5.299  -2.556   0.0587 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- free method)

A Simple interaction

We could now also be interested in the marginal means of the inferences across the two instruction types. emmeans offers two ways to do so. The first splits the contrasts across levels of the factor using the by argument.

m2 <- emmeans(a1, "inference", by = "instruction")
## equal: emmeans(a1, ~ inference|instruction)
m2
## instruction = deductive:
##  inference emmean   SE df lower.CL upper.CL
##  MP          97.3 2.54 38     92.1    102.4
##  MT          70.4 5.75 38     58.8     82.0
##  AC          61.5 6.75 38     47.8     75.1
##  DA          81.8 5.43 38     70.8     92.8
## 
## instruction = probabilistic:
##  inference emmean   SE df lower.CL upper.CL
##  MP          77.7 2.54 38     72.6     82.9
##  MT          83.0 5.75 38     71.3     94.6
##  AC          77.3 6.75 38     63.7     91.0
##  DA          84.1 5.43 38     73.1     95.1
## 
## Results are averaged over the levels of: plausibility 
## Confidence level used: 0.95

Consequently, tests are also only performed within each level of the by factor:

pairs(m2)
## instruction = deductive:
##  contrast estimate   SE df t.ratio p.value
##  MP - MT     26.89 6.13 38   4.389  0.0005
##  MP - AC     35.80 7.10 38   5.045  0.0001
##  MP - DA     15.47 5.93 38   2.608  0.0599
##  MT - AC      8.91 5.63 38   1.582  0.4007
##  MT - DA    -11.41 6.65 38  -1.716  0.3297
##  AC - DA    -20.32 7.49 38  -2.712  0.0471
## 
## instruction = probabilistic:
##  contrast estimate   SE df t.ratio p.value
##  MP - MT     -5.22 6.13 38  -0.853  0.8287
##  MP - AC      0.40 7.10 38   0.056  0.9999
##  MP - DA     -6.36 5.93 38  -1.072  0.7084
##  MT - AC      5.62 5.63 38   0.998  0.7512
##  MT - DA     -1.14 6.65 38  -0.171  0.9982
##  AC - DA     -6.76 7.49 38  -0.902  0.8036
## 
## Results are averaged over the levels of: plausibility 
## P value adjustment: tukey method for comparing a family of 4 estimates

The second version considers all factor levels together. Consequently, the number of pairwise comparisons is a lot larger:

m3 <- emmeans(a1, c("inference", "instruction"))
## equal: emmeans(a1, ~inference*instruction)
m3
##  inference instruction   emmean   SE df lower.CL upper.CL
##  MP        deductive       97.3 2.54 38     92.1    102.4
##  MT        deductive       70.4 5.75 38     58.8     82.0
##  AC        deductive       61.5 6.75 38     47.8     75.1
##  DA        deductive       81.8 5.43 38     70.8     92.8
##  MP        probabilistic   77.7 2.54 38     72.6     82.9
##  MT        probabilistic   83.0 5.75 38     71.3     94.6
##  AC        probabilistic   77.3 6.75 38     63.7     91.0
##  DA        probabilistic   84.1 5.43 38     73.1     95.1
## 
## Results are averaged over the levels of: plausibility 
## Confidence level used: 0.95
pairs(m3)
##  contrast                            estimate   SE df t.ratio p.value
##  MP deductive - MT deductive            26.89 6.13 38   4.389  0.0020
##  MP deductive - AC deductive            35.80 7.10 38   5.045  0.0003
##  MP deductive - DA deductive            15.47 5.93 38   2.608  0.1848
##  MP deductive - MP probabilistic        19.55 3.59 38   5.439  0.0001
##  MP deductive - MT probabilistic        14.32 6.29 38   2.279  0.3310
##  MP deductive - AC probabilistic        19.95 7.21 38   2.767  0.1342
##  MP deductive - DA probabilistic        13.19 5.99 38   2.201  0.3741
##  MT deductive - AC deductive             8.91 5.63 38   1.582  0.7577
##  MT deductive - DA deductive           -11.41 6.65 38  -1.716  0.6772
##  MT deductive - MP probabilistic        -7.34 6.29 38  -1.167  0.9363
##  MT deductive - MT probabilistic       -12.56 8.13 38  -1.545  0.7783
##  MT deductive - AC probabilistic        -6.94 8.86 38  -0.783  0.9931
##  MT deductive - DA probabilistic       -13.70 7.91 38  -1.733  0.6666
##  AC deductive - DA deductive           -20.32 7.49 38  -2.712  0.1501
##  AC deductive - MP probabilistic       -16.25 7.21 38  -2.254  0.3446
##  AC deductive - MT probabilistic       -21.48 8.86 38  -2.423  0.2600
##  AC deductive - AC probabilistic       -15.85 9.54 38  -1.661  0.7111
##  AC deductive - DA probabilistic       -22.61 8.66 38  -2.611  0.1834
##  DA deductive - MP probabilistic         4.08 5.99 38   0.680  0.9971
##  DA deductive - MT probabilistic        -1.15 7.91 38  -0.145  1.0000
##  DA deductive - AC probabilistic         4.47 8.66 38   0.517  0.9995
##  DA deductive - DA probabilistic        -2.29 7.68 38  -0.298  1.0000
##  MP probabilistic - MT probabilistic    -5.22 6.13 38  -0.853  0.9885
##  MP probabilistic - AC probabilistic     0.40 7.10 38   0.056  1.0000
##  MP probabilistic - DA probabilistic    -6.36 5.93 38  -1.072  0.9588
##  MT probabilistic - AC probabilistic     5.62 5.63 38   0.998  0.9719
##  MT probabilistic - DA probabilistic    -1.14 6.65 38  -0.171  1.0000
##  AC probabilistic - DA probabilistic    -6.76 7.49 38  -0.902  0.9840
## 
## Results are averaged over the levels of: plausibility 
## P value adjustment: tukey method for comparing a family of 8 estimates

Running Custom Contrasts

Objects returned from emmeans can also be used to test specific contrasts. For this, we can simply create a list, where each element corresponds to one contrasts. A contrast is defined as a vector of constants on the reference grid (i.e., the object returned from emmeans, here m3). For example, we might be interested in whether there is a difference between the valid and invalid inferences in each of the two conditions.

c1 <- list(
  v_i.ded = c(0.5, 0.5, -0.5, -0.5, 0, 0, 0, 0),
  v_i.prob = c(0, 0, 0, 0, 0.5, 0.5, -0.5, -0.5)
  )

contrast(m3, c1, adjust = "holm")
##  contrast estimate   SE df t.ratio p.value
##  v_i.ded    12.194 4.12 38   2.960  0.0105
##  v_i.prob   -0.369 4.12 38  -0.090  0.9291
## 
## Results are averaged over the levels of: plausibility 
## P value adjustment: holm method for 2 tests
summary(as.glht(contrast(m3, c1)), test = adjusted("free"))
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Linear Hypotheses:
##               Estimate Std. Error t value Pr(>|t|)  
## v_i.ded == 0   12.1937     4.1190    2.96   0.0105 *
## v_i.prob == 0  -0.3687     4.1190   -0.09   0.9291  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- free method)

The results can be interpreted as in line with expectations. Responses are larger for valid than invalid problems in the deductive, but not the probabilistic condition.

Plotting

Since version 0.22, afex comes with its own plotting function based on ggplot2, afex_plot, which works directly with afex_aov objects.

As said initially, we are interested in the three-way interaction of instruction with inference, plausibility, and instruction. As we saw above, this interaction was significant. Consequently, we are interested in plotting this interaction.

Basic Plots

For afex_plot, we need to specify the x-factor(s), which determine which factor-levels or combinations of factor-levels are plotted on the x-axis. We can also define trace factor(s), which determine which factor levels are connected by lines. Finally, we can also define panel factor(s), which determine if the plot is split into subplots. afex_plot then plots the estimated marginal means obtained from emmeans, confidence intervals, and the raw data in the background. Note that the raw data in the background is per default drawn using an alpha blending of .5 (i.e., 50% semi-transparency). Thus, in case of several points lying directly on top of each other, this point appears noticeably darker.

afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility")
## Warning: Panel(s) show a mixed within-between-design.
## Error bars do not allow comparisons across all means.
## Suppress error bars with: error = "none"

In the default settings, the error bars show 95%-confidence intervals based on the standard error of the underlying model (i.e., the lm model in the present case). In the present case, in which each subplot (defined by x- and trace-factor) shows a combination of a within-subjects factor (i.e., inference) and a between-subjects (i.e., instruction) factor, this is not optimal. The error bars only allow to assess differences regarding the between-subjects factor (i.e., across the lines), but not inferences regarding the within-subjects factor (i.e., within one line). This is also indicated by a warning.

An alternative would be within-subject confidence intervals:

afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", 
          error = "within")
## Warning: Panel(s) show a mixed within-between-design.
## Error bars do not allow comparisons across all means.
## Suppress error bars with: error = "none"

However, those only allow inferences regarding the within-subject factors and not regarding the between-subjecta factor. So the same warning is emitted again.

A further alternative is to suppress the error bars altogether. This is the approach used in our original paper and probably a good idea in general when figures show both between- and within-subjects factors within the same panel. The presence of the raw data in the background still provides a visual depiction of the variability of the data.

afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", 
          error = "none")

Customizing Plots

afex_plot allows to customize the plot in a number of different ways. For example, we can easily change the aesthetic mapping associated with the trace factor. So instead of using lineytpe and shape of the symbols, we can use color. Furthermore, we can change the graphical element used for plotting the data points in the background. For example, instead of plotting the raw data, we can replace this with a boxplot. Finally, we can also make both the points showing the means and the lines connecting the means larger.

p1 <- afex_plot(a1, x = "inference", trace = "instruction", 
                panel = "plausibility", error = "none", 
                mapping = c("color", "fill"), 
                data_geom = geom_boxplot, data_arg = list(width = 0.4), 
                point_arg = list(size = 1.5), line_arg = list(size = 1))
p1

Note that afex_plot returns a ggplot2 plot object which can be used for further customization. For example, one can easily change the theme to something that does not have a grey background:

p1 + theme_light()

We can also set the theme globally for the remainder of the R session.

theme_set(theme_light())

The full set of customizations provided by afex_plot is beyond the scope of this vignette. The examples on the help page at ?afex_plot provide a good overview.

Replicate Analysis from Singmann and Klauer (2011)

However, the plots shown so far are not particularly helpful with respect to the research question. Next, we fit a new ANOVA model in which we separate the data in affirmation and denial inferences. This was also done in the original manuscript. We then lot the data a second time.

a2 <- aov_ez("id", "response", sk2011.1, between = "instruction", 
       within = c("validity", "plausibility", "what"))
## Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`.
## To turn off this warning, pass `fun_aggregate = mean` explicitly.
## Contrasts set to contr.sum for the following variables: instruction
a2
## Anova Table (Type 3 tests)
## 
## Response: response
##                                    Effect    df     MSE         F   ges p.value
## 1                             instruction 1, 38 2027.42      0.31  .003    .583
## 2                                validity 1, 38  678.65    4.12 *  .013    .049
## 3                    instruction:validity 1, 38  678.65    4.65 *  .014    .037
## 4                            plausibility 1, 38  468.82 34.23 ***  .068   <.001
## 5                instruction:plausibility 1, 38  468.82  10.67 **  .022    .002
## 6                                    what 1, 38  660.52      0.22 <.001    .640
## 7                        instruction:what 1, 38  660.52      2.60  .008    .115
## 8                   validity:plausibility 1, 38  371.87      0.14 <.001    .715
## 9       instruction:validity:plausibility 1, 38  371.87    4.78 *  .008    .035
## 10                          validity:what 1, 38 1213.14   9.80 **  .051    .003
## 11              instruction:validity:what 1, 38 1213.14   8.60 **  .045    .006
## 12                      plausibility:what 1, 38  204.54   9.97 **  .009    .003
## 13          instruction:plausibility:what 1, 38  204.54    5.23 *  .005    .028
## 14             validity:plausibility:what 1, 38  154.62      0.03 <.001    .855
## 15 instruction:validity:plausibility:what 1, 38  154.62      0.42 <.001    .521
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

Then we plot the data from this ANOVA. Because each panel would again show a mixed-design, we suppress the error bars.

afex_plot(a2, x = c("plausibility", "validity"), 
          trace = "instruction", panel = "what", 
          error = "none")

We see the critical and predicted cross-over interaction in the left of those two graphs. For implausible but valid problems deductive responses are larger than probabilistic responses. The opposite is true for plausible but invalid problems. We now tests these differences at each of the four x-axis ticks in each plot using custom contrasts (diff_1 to diff_4). Furthermore, we test for a validity effect and plausibility effect in both conditions.

(m4 <- emmeans(a2, ~instruction+plausibility+validity|what))
## what = affirmation:
##  instruction   plausibility validity emmean   SE df lower.CL upper.CL
##  deductive     plausible    valid      99.5 1.16 38     97.1    101.8
##  probabilistic plausible    valid      95.3 1.16 38     93.0     97.6
##  deductive     implausible  valid      95.1 5.01 38     85.0    105.2
##  probabilistic implausible  valid      60.2 5.01 38     50.0     70.3
##  deductive     plausible    invalid    67.0 6.95 38     52.9     81.0
##  probabilistic plausible    invalid    90.5 6.95 38     76.5    104.6
##  deductive     implausible  invalid    56.0 7.97 38     39.9     72.2
##  probabilistic implausible  invalid    64.1 7.97 38     48.0     80.3
## 
## what = denial:
##  instruction   plausibility validity emmean   SE df lower.CL upper.CL
##  deductive     plausible    valid      70.5 6.18 38     58.0     83.1
##  probabilistic plausible    valid      93.0 6.18 38     80.5    105.5
##  deductive     implausible  valid      70.2 6.36 38     57.4     83.1
##  probabilistic implausible  valid      73.0 6.36 38     60.1     85.8
##  deductive     plausible    invalid    86.5 5.32 38     75.8     97.3
##  probabilistic plausible    invalid    87.5 5.32 38     76.7     98.2
##  deductive     implausible  invalid    77.1 6.62 38     63.7     90.5
##  probabilistic implausible  invalid    80.8 6.62 38     67.4     94.1
## 
## Confidence level used: 0.95
c2 <- list(
  diff_1 = c(1, -1, 0, 0, 0, 0, 0, 0),
  diff_2 = c(0, 0, 1, -1, 0, 0, 0, 0),
  diff_3 = c(0, 0, 0, 0,  1, -1, 0, 0),
  diff_4 = c(0, 0, 0, 0,  0, 0, 1, -1),
  val_ded  = c(0.5, 0, 0.5, 0, -0.5, 0, -0.5, 0),
  val_prob = c(0, 0.5, 0, 0.5, 0, -0.5, 0, -0.5),
  plau_ded   = c(0.5, 0, -0.5, 0, -0.5, 0, 0.5, 0),
  plau_prob  = c(0, 0.5, 0, -0.5, 0, 0.5, 0, -0.5)
  )
contrast(m4, c2, adjust = "holm")
## what = affirmation:
##  contrast  estimate    SE df t.ratio p.value
##  diff_1       4.175  1.64 38   2.543  0.0759
##  diff_2      34.925  7.08 38   4.931  0.0001
##  diff_3     -23.600  9.83 38  -2.401  0.0854
##  diff_4      -8.100 11.28 38  -0.718  0.9538
##  val_ded     35.800  7.10 38   5.045  0.0001
##  val_prob     0.400  7.10 38   0.056  0.9553
##  plau_ded    -3.275  3.07 38  -1.068  0.8761
##  plau_prob   30.775  4.99 38   6.164  <.0001
## 
## what = denial:
##  contrast  estimate    SE df t.ratio p.value
##  diff_1     -22.425  8.74 38  -2.565  0.1007
##  diff_2      -2.700  8.99 38  -0.300  1.0000
##  diff_3      -0.925  7.52 38  -0.123  1.0000
##  diff_4      -3.650  9.36 38  -0.390  1.0000
##  val_ded    -11.412  6.65 38  -1.716  0.5658
##  val_prob    -1.137  6.65 38  -0.171  1.0000
##  plau_ded    -4.562  4.11 38  -1.109  1.0000
##  plau_prob   13.363  2.96 38   4.519  0.0005
## 
## P value adjustment: holm method for 8 tests

We can also pass these tests to multcomp which gives us more powerful Type 1 error corrections.

summary(as.glht(contrast(m4, c2)), test = adjusted("free"))
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## Warning in tmp$pfunction("adjusted", ...): Completion with error > abseps
## $`what = affirmation`
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Linear Hypotheses:
##                Estimate Std. Error t value Pr(>|t|)    
## diff_1 == 0       4.175      1.641   2.543   0.0648 .  
## diff_2 == 0      34.925      7.082   4.931 7.75e-05 ***
## diff_3 == 0     -23.600      9.830  -2.401   0.0708 .  
## diff_4 == 0      -8.100     11.275  -0.718   0.6882    
## val_ded == 0     35.800      7.096   5.045 6.44e-05 ***
## val_prob == 0     0.400      7.096   0.056   0.9553    
## plau_ded == 0    -3.275      3.065  -1.068   0.6036    
## plau_prob == 0   30.775      4.992   6.164 1.75e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- free method)
## 
## 
## $`what = denial`
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Linear Hypotheses:
##                Estimate Std. Error t value Pr(>|t|)    
## diff_1 == 0     -22.425      8.742  -2.565 0.082209 .  
## diff_2 == 0      -2.700      8.987  -0.300 0.984915    
## diff_3 == 0      -0.925      7.522  -0.123 0.984915    
## diff_4 == 0      -3.650      9.358  -0.390 0.984915    
## val_ded == 0    -11.412      6.651  -1.716 0.379871    
## val_prob == 0    -1.137      6.651  -0.171 0.984915    
## plau_ded == 0    -4.562      4.115  -1.109 0.725817    
## plau_prob == 0   13.363      2.957   4.519 0.000424 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- free method)

Unfortunately, in the present case this function throws several warnings. Nevertheless, the p-values from both methods are very similar and agree on whether or not they are below or above .05. Because of the warnings it seems advisable to use the one provided by emmeans directly and not use the ones from multcomp.

The pattern for the affirmation problems is in line with the expectations: We find the predicted differences between the instruction types for valid and implausible (diff_2) and invalid and plausible (diff_3) and the predicted non-differences for the other two problems (diff_1 and diff_4). Furthermore, we find a validity effect in the deductive but not in the probabilistic condition. Likewise, we find a plausibility effect in the probabilistic but not in the deductive condition.

Final Note

Choosing the right correction for multiple testing can be difficult. In fact multcomp comes with an accompanying book (Bretz et al., 2011). If the degrees-of-freedom of all contrasts are identical using multcomp’s method free is more powerful than simply using the Bonferroni-Holm method. free is a generalization of the Bonferroni-Holm method that takes the correlations among the model parameters into account and uniformly more powerful.

References

  • Bretz, F., Hothorn, T., & Westfall, P. H. (2011). Multiple comparisons using R. Boca Raton, FL: CRC Press. https://CRAN.R-project.org/package=multcomp
  • Singmann, H., & Klauer, K. C. (2011). Deductive and inductive conditional inferences: Two modes of reasoning. Thinking & Reasoning, 17(3), 247-281. doi: 10.1080/13546783.2011.572718
  • Lenth, R. (2017). emmeans: Estimated Marginal Means, aka Least-Squares Means. R package version 0.9.1. https://CRAN.R-project.org/package=emmeans
afex/inst/doc/afex_anova_example.Rmd0000644000176200001440000004156614665062325017232 0ustar liggesusers--- title: "ANOVA and Post-Hoc Contrasts: Reanalysis of Singmann and Klauer (2011)" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{ANOVA and Post-Hoc Contrasts: Reanalysis of Singmann and Klauer (2011)} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "multcomp", "ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} op <- options(width = 90) knitr::opts_chunk$set(dpi=72) ``` # Overview This documents reanalysis a dataset from an Experiment performed by Singmann and Klauer (2011) using the ANOVA functionality of __afex__ followed by post-hoc tests using package [__emmeans__](https://cran.r-project.org/package=emmeans) (Lenth, 2017). After a brief description of the dataset and research question, the code and results are presented. # Description of Experiment and Data Singmann and Klauer (2011) were interested in whether or not conditional reasoning can be explained by a single process or whether multiple processes are necessary to explain it. To provide evidence for multiple processes we aimed to establish a double dissociation of two variables: instruction type and problem type. Instruction type was manipulated between-subjects, one group of participants received deductive instructions (i.e., to treat the premises as given and only draw necessary conclusions) and a second group of participants received probabilistic instructions (i.e., to reason as in an everyday situation; we called this "inductive instruction" in the manuscript). Problem type consisted of two different orthogonally crossed variables that were manipulated within-subjects, validity of the problem (formally valid or formally invalid) and plausibility of the problem (inferences which were consisted with the background knowledge versus problems that were inconsistent with the background knowledge). The critical comparison across the two conditions was among problems which were valid and implausible with problems that were invalid and plausible. For example, the next problem was invalid and plausible: > If a person is wet, then the person fell into a swimming pool. > A person fell into a swimming pool. > How valid is the conclusion/How likely is it that the person is wet? For those problems we predicted that under deductive instructions responses should be lower (as the conclusion does not necessarily follow from the premises) as under probabilistic instructions. For the valid but implausible problem, an example is presented next, we predicted the opposite pattern: > If a person is wet, then the person fell into a swimming pool. > A person is wet. > How valid is the conclusion/How likely is it that the person fell into a swimming pool? Our study also included valid and plausible and invalid and implausible problems. In contrast to the analysis reported in the manuscript, we initially do not separate the analysis into affirmation and denial problems, but first report an analysis on the full set of inferences, MP, MT, AC, and DA, where MP and MT are valid and AC and DA invalid. We report a reanalysis of our Experiment 1 only. Note that the factor `plausibility` is not present in the original manuscript, there it is a results of a combination of other factors. # Data and R Preperation We begin by loading the packages we will be using throughout. ```{r message=FALSE, warning=FALSE} library("afex") # needed for ANOVA functions. library("emmeans") # emmeans must now be loaded explicitly for follow-up tests. library("multcomp") # for advanced control for multiple testing/Type 1 errors. library("ggplot2") # for customizing plots. ``` ```{r} data(sk2011.1) str(sk2011.1) ``` An important feature in the data is that each participant provided two responses for each cell of the design (the content is different for each of those, each participant saw all four contents). These two data points will be aggregated automatically by `afex`. ```{r} with(sk2011.1, table(inference, id, plausibility)) ``` # ANOVA To get the full ANOVA table for the model, we simply pass it to `aov_ez` using the design as described above. We save the returned object for further analysis. ```{r} a1 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("inference", "plausibility")) a1 # the default print method prints a data.frame produced by nice ``` The equivalent calls (i.e., producing exactly the same output) of the other two ANOVA functions `aov_car` or `aov4` is shown below. ```{r, eval=FALSE} aov_car(response ~ instruction + Error(id/inference*plausibility), sk2011.1) aov_4(response ~ instruction + (inference*plausibility|id), sk2011.1) ``` As mentioned before, the two responses per cell of the design and participants are aggregated for the analysis as indicated by the warning message. Furthermore, the degrees of freedom are Greenhouse-Geisser corrected per default for all effects involving `inference`, as `inference` is a within-subject factor with more than two levels (i.e., MP, MT, AC, & DA). In line with our expectations, the three-way interaction is significant. The object printed per default for `afex_aov` objects (produced by `nice`) can also be printed nicely using `knitr`: ```{r, results='asis', } knitr::kable(nice(a1)) ``` Alternatively, the `anova` method for `afex_aov` objects returns a `data.frame` of class `anova` that can be passed to, for example, `xtable` for nice formatting: ```{r, results='asis'} print(xtable::xtable(anova(a1), digits = c(rep(2, 5), 3, 4)), type = "html") ``` # Post-Hoc Contrasts and Plotting To further analyze the data we need to pass it to package `emmeans`, a package that offers great functionality for both plotting and contrasts of all kind. A lot of information on `emmeans` can be obtained in [its vignettes](https://cran.r-project.org/package=emmeans) and [faq](https://CRAN.R-project.org/package=emmeans/vignettes/FAQs.html). `emmeans` can work with `afex_aov` objects directly as __afex__ comes with the necessary methods for the generic functions defined in `emmeans`. When using the default `multivariate` option for follow-up tests, `emmeans` uses the ANOVA model estimated via base R's `lm` method (which in the case of a multivariate response is an object of class `c("mlm", "lm")`). `afex` also supports a univariate model (i.e., `emmeans_model = "univariate"`, which requires that `include_aov = TRUE` in the ANOVA call) in which case `emmeans` uses the object created by base R's `aov` function (this was the previous default but is not recommended as it does not handle unbalanced data well). ## Some First Contrasts ### Main Effects Only This object can now be passed to `emmeans`, for example to obtain the marginal means of the four inferences: ```{r} m1 <- emmeans(a1, ~ inference) m1 ``` This object can now also be used to compare whether or not there are differences between the levels of the factor: ```{r} pairs(m1) ``` To obtain more powerful p-value adjustments, we can furthermore pass it to `multcomp` (Bretz, Hothorn, & Westfall, 2011): ```{r} summary(as.glht(pairs(m1)), test=adjusted("free")) ``` ### A Simple interaction We could now also be interested in the marginal means of the inferences across the two instruction types. `emmeans` offers two ways to do so. The first splits the contrasts across levels of the factor using the `by` argument. ```{r} m2 <- emmeans(a1, "inference", by = "instruction") ## equal: emmeans(a1, ~ inference|instruction) m2 ``` Consequently, tests are also only performed within each level of the `by` factor: ```{r} pairs(m2) ``` The second version considers all factor levels together. Consequently, the number of pairwise comparisons is a lot larger: ```{r} m3 <- emmeans(a1, c("inference", "instruction")) ## equal: emmeans(a1, ~inference*instruction) m3 pairs(m3) ``` ### Running Custom Contrasts Objects returned from `emmeans` can also be used to test specific contrasts. For this, we can simply create a list, where each element corresponds to one contrasts. A contrast is defined as a vector of constants on the reference grid (i.e., the object returned from `emmeans`, here `m3`). For example, we might be interested in whether there is a difference between the valid and invalid inferences in each of the two conditions. ```{r} c1 <- list( v_i.ded = c(0.5, 0.5, -0.5, -0.5, 0, 0, 0, 0), v_i.prob = c(0, 0, 0, 0, 0.5, 0.5, -0.5, -0.5) ) contrast(m3, c1, adjust = "holm") summary(as.glht(contrast(m3, c1)), test = adjusted("free")) ``` The results can be interpreted as in line with expectations. Responses are larger for valid than invalid problems in the deductive, but not the probabilistic condition. ## Plotting Since version `0.22`, `afex` comes with its own plotting function based on `ggplot2`, `afex_plot`, which works directly with `afex_aov` objects. As said initially, we are interested in the three-way interaction of instruction with inference, plausibility, and instruction. As we saw above, this interaction was significant. Consequently, we are interested in plotting this interaction. ### Basic Plots For `afex_plot`, we need to specify the `x`-factor(s), which determine which factor-levels or combinations of factor-levels are plotted on the x-axis. We can also define `trace` factor(s), which determine which factor levels are connected by lines. Finally, we can also define `panel` factor(s), which determine if the plot is split into subplots. `afex_plot` then plots the estimated marginal means obtained from `emmeans`, confidence intervals, and the raw data in the background. Note that the raw data in the background is per default drawn using an alpha blending of .5 (i.e., 50% semi-transparency). Thus, in case of several points lying directly on top of each other, this point appears noticeably darker. ```{r fig.width=7.5, fig.height=4} afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility") ``` In the default settings, the error bars show 95%-confidence intervals based on the standard error of the underlying model (i.e., the `lm` model in the present case). In the present case, in which each subplot (defined by `x`- and `trace`-factor) shows a combination of a within-subjects factor (i.e., `inference`) and a between-subjects (i.e., `instruction`) factor, this is not optimal. The error bars only allow to assess differences regarding the between-subjects factor (i.e., across the lines), but not inferences regarding the within-subjects factor (i.e., within one line). This is also indicated by a warning. An alternative would be within-subject confidence intervals: ```{r fig.width=7.5, fig.height=4} afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "within") ``` However, those only allow inferences regarding the within-subject factors and not regarding the between-subjecta factor. So the same warning is emitted again. A further alternative is to suppress the error bars altogether. This is the approach used in our original paper and probably a good idea in general when figures show both between- and within-subjects factors within the same panel. The presence of the raw data in the background still provides a visual depiction of the variability of the data. ```{r fig.width=7.5, fig.height=4} afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "none") ``` ### Customizing Plots `afex_plot` allows to customize the plot in a number of different ways. For example, we can easily change the aesthetic mapping associated with the `trace` factor. So instead of using lineytpe and shape of the symbols, we can use color. Furthermore, we can change the graphical element used for plotting the data points in the background. For example, instead of plotting the raw data, we can replace this with a boxplot. Finally, we can also make both the points showing the means and the lines connecting the means larger. ```{r fig.width=7.5, fig.height=4} p1 <- afex_plot(a1, x = "inference", trace = "instruction", panel = "plausibility", error = "none", mapping = c("color", "fill"), data_geom = geom_boxplot, data_arg = list(width = 0.4), point_arg = list(size = 1.5), line_arg = list(size = 1)) p1 ``` Note that `afex_plot` returns a `ggplot2` plot object which can be used for further customization. For example, one can easily change the `theme` to something that does not have a grey background: ```{r fig.width=7.5, fig.height=4} p1 + theme_light() ``` We can also set the theme globally for the remainder of the `R` session. ```{r} theme_set(theme_light()) ``` The full set of customizations provided by `afex_plot` is beyond the scope of this vignette. The examples on the help page at `?afex_plot` provide a good overview. # Replicate Analysis from Singmann and Klauer (2011) However, the plots shown so far are not particularly helpful with respect to the research question. Next, we fit a new ANOVA model in which we separate the data in affirmation and denial inferences. This was also done in the original manuscript. We then lot the data a second time. ```{r} a2 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("validity", "plausibility", "what")) a2 ``` Then we plot the data from this ANOVA. Because each panel would again show a mixed-design, we suppress the error bars. ```{r fig.width=7.5, fig.height=4} afex_plot(a2, x = c("plausibility", "validity"), trace = "instruction", panel = "what", error = "none") ``` We see the critical and predicted cross-over interaction in the left of those two graphs. For implausible but valid problems deductive responses are larger than probabilistic responses. The opposite is true for plausible but invalid problems. We now tests these differences at each of the four x-axis ticks in each plot using custom contrasts (`diff_1` to `diff_4`). Furthermore, we test for a validity effect and plausibility effect in both conditions. ```{r} (m4 <- emmeans(a2, ~instruction+plausibility+validity|what)) c2 <- list( diff_1 = c(1, -1, 0, 0, 0, 0, 0, 0), diff_2 = c(0, 0, 1, -1, 0, 0, 0, 0), diff_3 = c(0, 0, 0, 0, 1, -1, 0, 0), diff_4 = c(0, 0, 0, 0, 0, 0, 1, -1), val_ded = c(0.5, 0, 0.5, 0, -0.5, 0, -0.5, 0), val_prob = c(0, 0.5, 0, 0.5, 0, -0.5, 0, -0.5), plau_ded = c(0.5, 0, -0.5, 0, -0.5, 0, 0.5, 0), plau_prob = c(0, 0.5, 0, -0.5, 0, 0.5, 0, -0.5) ) contrast(m4, c2, adjust = "holm") ``` We can also pass these tests to `multcomp` which gives us more powerful Type 1 error corrections. ```{r} summary(as.glht(contrast(m4, c2)), test = adjusted("free")) ``` Unfortunately, in the present case this function throws several warnings. Nevertheless, the p-values from both methods are very similar and agree on whether or not they are below or above .05. Because of the warnings it seems advisable to use the one provided by `emmeans` directly and not use the ones from `multcomp`. The pattern for the affirmation problems is in line with the expectations: We find the predicted differences between the instruction types for valid and implausible (`diff_2`) and invalid and plausible (`diff_3`) and the predicted non-differences for the other two problems (`diff_1` and `diff_4`). Furthermore, we find a validity effect in the deductive but not in the probabilistic condition. Likewise, we find a plausibility effect in the probabilistic but not in the deductive condition. # Final Note Choosing the right correction for multiple testing can be difficult. In fact `multcomp` comes with an accompanying book (Bretz et al., 2011). If the degrees-of-freedom of all contrasts are identical using `multcomp`'s method `free` is more powerful than simply using the Bonferroni-Holm method. `free` is a generalization of the Bonferroni-Holm method that takes the correlations among the model parameters into account and uniformly more powerful. # References * Bretz, F., Hothorn, T., & Westfall, P. H. (2011). _Multiple comparisons using R_. Boca Raton, FL: CRC Press. https://CRAN.R-project.org/package=multcomp * Singmann, H., & Klauer, K. C. (2011). Deductive and inductive conditional inferences: Two modes of reasoning. _Thinking & Reasoning_, 17(3), 247-281. doi: 10.1080/13546783.2011.572718 * Lenth, R. (2017). _emmeans: Estimated Marginal Means, aka Least-Squares Means_. R package version 0.9.1. https://CRAN.R-project.org/package=emmeans ```{r, include=FALSE} options(op) ``` afex/inst/doc/assumptions_of_ANOVAs.Rmd0000644000176200001440000002644514665062342017566 0ustar liggesusers--- title: "Testing the Assumptions of ANOVAs" author: "Mattan S. Ben-Shachar" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{Testing the Assumptions of ANOVAs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("see", "performance", "ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} options(width = 90) knitr::opts_chunk$set(dpi=72) ``` ## Foreword by Henrik Singmann As all statistical models, ANOVAs have a number of assumptions that should hold for valid inferences. These assumptions are: 1. **Observations are i.i.d.:** i.i.d. stands for "independent and identically distributed". Independent means that, once the model is specified, the conditional observations (i.e., residuals) are independent of each other (i.e., knowing the value of one residual does not allow you to infer the value of any other residual). Identically distributed means that all observations are generated by the same data-generating process. 1. ***Homogeneity of Variances***: the variances across all the groups (cells) of between-subject effects are the same. 2. ***Sphericity***: For within-subjects effects, sphericity is the condition where the variances of the differences between all possible pairs of within-subject conditions (i.e., levels of the independent variable) are equal. This can be thought of as a within-subjects' version of the *Homogeneity of Variances* assumption. 3. ***Normality of residuals***: The errors used for the estimation of the error term(s) (*MSE*) are normally distributed. The most important assumption generally is the i.i.d. assumption (i.e., if it does not hold, the inferences are likely invalid), specifically the independent part. This assumption cannot be tested empirically but needs to hold on conceptual or logical grounds. For example, in an ideal completely between-subjects design each observation comes from a different participant that is randomly sampled from a population so we know that all observations are independent. Often, we collect multiple observations from the same participant in a within-subject or repeated-measures design. To ensure the i.i.d. assumption holds in this case, we need to specify an ANOVA with within-subject factors. However, if we have a data set with multiple sources of non-independence -- such as participants and items -- ANOVA models cannot be used but we have to use a mixed model. The other assumptions can be tested empirically, either graphically or using statistical assumption tests. However, there are different opinions on how useful statistical assumptions tests are when done in an automatic manner for each ANOVA. Whereas this is the position taken in some statistics books, this runs the risk of [reducing the statistical analysis to a "cookbook" or "flowchart"](https://stats.stackexchange.com/a/193695/442). Real life data analysis is often more complex than such simple rules. Therefore, it is often more productive to explore ones data using both descriptive statistics and graphical displays. This data exploration should allow one to judge whether the other ANOVA assumptions hold to a sufficient degree. For example, plotting ones ANOVA results using `afex_plot` and including a reasonable display of the individual data points often allows one to judge both the homogeneity of variance and the normality of the residuals assumption. Let us take a look at all three empirically testable assumptions in detail. ANOVAs are often robust to light violations to the homogeneity of variances assumption. If this assumption is clearly violated, we have learned something important about the data, namely variance heterogeneity, that requires further study. Some further statistical solutions are discussed below. If the main goal of an ANOVA is to see whether or not certain effects are significant, then the assumption of normality of the residuals is only required for small samples, thanks to the central limit theorem. As shown by Lumley et al. (2002), with sample sizes of a few hundred participants even extreme violations of the normality assumptions are unproblematic. So mild violations of this assumptions are usually no problem with sample sizes exceeding 30. Finally, the default `afex` behaviour is to correct for violations of sphericity using the Greenhouse-Geisser correction. Whereas this default may in some situation produce a small loss in statistical power, this seems preferable to a situation in which violations of sphericity are overlooked and tests become anti-conservative (i.e., more false positive results). Thus, my position as the `afex` developer is that an appropriate exploratory data analysis is often better than just blindly applying statistical assumption tests. Nevertheless, assumption tests are of course an important tool in the statistical toolbox and can be helpful in many situations. Thus, I am thankful to Mattan S. Ben-Shachar who has provided them for ANOVAs in `afex`. The following text provides his introduction to the assumption tests based on the [`performance`](https://cran.r-project.org/package=performance) and [`see`](https://cran.r-project.org/package=see) packages. ## Testing the Empirically Testable Assumptions `afex` comes with a set of built-in functions to help in the testing of the assumptions of ANOVA design. Generally speaking, the testable assumptions of ANOVA are^[There is also the assumptions that (a) the model is correctly specified and that (b) errors are independent, but there is no "hard" test for these assumptions.]: 1. ***Homogeneity of Variances***: the variances across all the groups (cells) of between-subject effects are the same. This can be tested with `performance::check_homogeneity()`. 2. ***Sphericity***: For within-subjects effects, sphericity is the condition where the variances of the differences between all possible pairs of within-subject conditions (i.e., levels of the independent variable) are equal. This can be thought of as a within-subjects' version of the *Homogeneity of Variances* assumption, and can be tested with `performance::check_sphericity()`. 3. ***Normality of residuals***: The errors used for the estimation of the error term(s) (*MSE*) are normally distributed. This can be inferred using `performance::check_normality()`. What follows is a brief review of these assumptions and their tests. ```{r, message=FALSE} library(afex) library(performance) # for assumption checks ``` ## Homogeneity of Variances This assumption, for between subject-designs, states that the within group errors all share a common variance around the group's mean. This can be tested with Levene's test: ```{r} data(obk.long, package = "afex") o1 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender")) check_homogeneity(o1) ``` These results indicate that homogeneity is not significantly violated. ### What to do when assumption is violated? ANOVAs are generally robust to "light" heteroscedasticity, but there are various other methods (not available in `afex`) for getting robust error estimates. Another alternative is to ditch this assumption altogether and use permutation tests (e.g. with [`permuco`](https://cran.r-project.org/package=permuco)) or bootstrapped estimates (e.g. with [`boot`](https://cran.r-project.org/package=boot)). ## Sphericity ```{r} data("fhch2010", package = "afex") a1 <- aov_ez("id", "log_rt", fhch2010, between = "task", within = c("density", "frequency", "length", "stimulus")) ``` We can use `check_sphericity()` to run Mauchly's test of sphericity: ```{r} check_sphericity(a1) ``` We can see that both the error terms of the `length:stimulus` and `task:length:stimulus` interactions significantly violate the assumption of sphericity at *p* = 0.021. Note that as `task` is a between-subjects factor, both these interaction terms share the same error term! ### What to do when assumption is violated? - For ANOVA tables, a correction to the degrees of freedom can be used - `afex` offers both the Greenhouse-Geisser (which is used by default) and the Hyunh-Feldt corrections. - For follow-up contrasts with `emmeans`, a multivariate model can be used, which does not assume sphericity (this is used by default since `afex` 1.0). Both can be set globally with: ```{r, eval = FALSE} afex_options( correction_aov = "GG", # or "HF" emmeans_model = "multivariate" ) ``` ## Normalicy of Residuals The normalicy of residuals assumption is concerned with the errors that make up the various error terms in the ANOVA. Although the Shapiro-Wilk test can be used to test for deviation from a normal distribution, [this test tends to have high type-I error rates](https://notstatschat.rbind.io/2019/02/09/what-have-i-got-against-the-shapiro-wilk-test/). Instead, one can visually inspect the residuals using quantile-quantile plots (AKA qq-plots). For example: ```{r} data("stroop", package = "afex") stroop1 <- subset(stroop, study == 1) stroop1 <- na.omit(stroop1) s1 <- aov_ez("pno", "rt", stroop1, within = c("condition", "congruency")) is_norm <- check_normality(s1) plot(is_norm) plot(is_norm, type = "qq") ``` If the residuals were normally distributed, we would see them falling close to the diagonal line, inside the 95% confidence bands around the qq-line. We can further de-trend the plot, and show not the expected quantile, but the deviation from the expected quantile, which may help reducing visual bias. ```{r} plot(is_norm, type = "qq", detrend = TRUE) ``` Wow! The deviation from normalicy is now visually much more pronounced! ### What to do when assumption is violated? As with the assumption of *homogeneity of variances*, we can resort to using permutation tests for ANOVA tables and bootstrap estimates / contrasts. Another popular solution is to apply a monotonic transformation to the dependent variable. This should not be done lightly, as it *changes* the interpretability of the results (from the observed scale to the transformed scale). Luckily for us, it is common to *log* transform reaction times, which we can easily do^[But note ANOVA no longer tests if any differences between the means is significantly different from 0, but if any ratio between the means is significantly different from 1.]: ```{r} s2 <- aov_ez("pno", "rt", stroop1, transformation = "log", within = c("condition", "congruency")) is_norm <- check_normality(s2) plot(is_norm, type = "qq", detrend = TRUE) ``` Success - after the transformation, the residuals (on the log scale) do not deviate more than expected from errors sampled from a normal distribution (are mostly contained in the 95%CI bands)! # References - Lumley, T., Diehr, P., Emerson, S., & Chen, L. (2002). The Importance of the Normality Assumption in Large Public Health Data Sets. *Annual Review of Public Health*, 23(1), 151–169. https://doi.org/10.1146/annurev.publhealth.23.100901.140546 afex/inst/doc/introduction-mixed-models.pdf.asis0000644000176200001440000000030514665062374021471 0ustar liggesusers%\VignetteIndexEntry{An Introduction to Mixed Models for Experimental Psychology} %\VignetteEngine{R.rsp::asis} %\VignetteKeyword{PDF} %\VignetteKeyword{vignette} %\VignetteKeyword{package} afex/inst/doc/afex_plot_supported_models.html0000644000176200001440000034220714665070062021254 0ustar liggesusers afex_plot: Supported Models

afex_plot: Supported Models

Henrik Singmann

2024-09-01

Introduction

afex_plot() visualizes results from factorial experiments and, more generally, data set with interactions of categorical/factor variables. It does so by combining estimated marginal means and uncertainties associated with these means in the foreground with a depiction of the raw data in the background. If models include continuous covariates, other approaches are recommended (e.g., such as implemented in package effects or by using the possibility of afex_plot to return the data and build the plot on ones own).

This document provides an overview of the different models supported by afex_plot() in addition to the afex objects (i.e., afex_aov and mixed). In general, these are models which are supported by the emmeans package as the afex_plot.default() method uses emmeans to get the estimated marginal means. afex_plot.default() then guesses whether there are repeated measures or all samples are independent. Based on this guess (which can be changed via the id argument) data in the background is plotted. Calculation of error bars can also be based on this guess (but the default is to plot the model based error bars obtained from emmeans).

For a generally introduction to the functionality of afex_plot see: afex_plot: Publication Ready Plots for Experimental Designs

Throughout the document, we will need afex as well as ggplot2. In addition, we load cowplot for function plot_grid() (which allows to easily combine multiple ggplot2 plots). In addition, we will set a somewhat nicer ggplot2 theme.

library("afex")     
library("ggplot2")  
library("cowplot")
theme_set(theme_bw(base_size = 14) + 
            theme(legend.position="bottom", 
                  panel.grid.major.x = element_blank(),
                  panel.grid.minor.x = element_blank()))

Importantly, we also set the contrasts for the current R session to sum-to-zero contrasts. For models that include interactions with categorical variables this generally produces estimates that are easier to interpret.

set_sum_contrasts()
## setting contr.sum globally: options(contrasts=c('contr.sum', 'contr.poly'))

Please note, the best way to export a figure is via ggsave() or a similar function call. For Word and similar document formats, png is a good file type, for LaTeX and similar document formats, pdf is a good file type.

Base R stats models: lm, glm

afex_plot() generally supports models implemeneted via the stats package. Here I show the main model functions that work with independent samples. These models can be passed to afex_plot without specifying additional arguments.

Most importantly, lm models work directly. For those we use the warpbreaks data.

warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks)

Note that afex_plot produces several messages that are shown here as comments below the corresponding calls. Important is maybe that afex_plot assumes all observations (i.e., rows) are independent. This is of course the case here. In addition, for the first plot we are informed that the presence of an interaction may lead to a misleading impression if only a lower-order effect (here a main effect) is shown. This message is produced by emmeans and passed through.

p1 <- afex_plot(warp.lm, "tension")
## dv column detected: breaks
## No id column passed. Assuming all rows are independent samples.
## NOTE: Results may be misleading due to involvement in interactions
 r
p2 <- afex_plot(warp.lm, "tension", "wool")
## dv column detected: breaks
## No id column passed. Assuming all rows are independent samples.
 r
plot_grid(p1, p2)

glm models also work without further setting. Here we first use a poisson GLM for which we need to generate the data.

ins <- data.frame(
    n = c(500, 1200, 100, 400, 500, 300),
    size = factor(rep(1:3,2), labels = c("S","M","L")),
    age = factor(rep(1:2, each = 3)),
    claims = c(42, 37, 1, 101, 73, 14))

We can then fit the data and pass the model object as is.

ins.glm <- glm(claims ~ size + age + offset(log(n)), 
               data = ins, family = "poisson")
afex_plot(ins.glm, "size", "age")
## dv column detected: claims
## No id column passed. Assuming all rows are independent samples.

afex_plot also works with binomial GLMs for which we also first need to generate some data which we will then fit.

## binomial glm adapted from ?predict.glm
ldose <- factor(rep(0:5, 2))
numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16)
sex <- factor(rep(c("M", "F"), c(6, 6)))
SF <- numdead/20  ## dv should be a vector, no matrix
budworm.lg <- glm(SF ~ sex*ldose, family = binomial, 
                  weights = rep(20, length(numdead)))

For this model, we will produce three plots we can then compare. The first only shows the main effect of one variable (ldose). The other show the interaction of the two variables. Because for binomial GLMs we then only have one data point (with several observations), the individual data points and mean cannot be distinguished. This is made clear in the ther two (panels B and C).

a <- afex_plot(budworm.lg, "ldose")
## dv column detected: SF
## No id column passed. Assuming all rows are independent samples.
## NOTE: Results may be misleading due to involvement in interactions
 r
b <- afex_plot(budworm.lg, "ldose", "sex") ## data point is hidden behind mean!
## dv column detected: SF
## No id column passed. Assuming all rows are independent samples.
 r
c <- afex_plot(budworm.lg, "ldose", "sex", 
          data_arg = list(size = 4, color = "red"))
## dv column detected: SF
## No id column passed. Assuming all rows are independent samples.
 r
plot_grid(a, b, c, labels = "AUTO", nrow = 1)

nlme mixed model

Hot to use afex_plot for mixed models fitted with afex::mixed (or lme4 directly) is shown in the other vignette. However, we can also use afex_plot for mixed models fitted with the older nlme package. For this, however we need to pass the data used for fitting via the data argument.

We can change on which of the two nested factors the individual data points in the background are based via the id argument. This is shown below.

## nlme mixed model
data(Oats, package = "nlme")
Oats$nitro <- factor(Oats$nitro)
oats.1 <- nlme::lme(yield ~ nitro * Variety, 
                    random = ~ 1 | Block / Variety,
                    data = Oats)
plot_grid(
  afex_plot(oats.1, "nitro", "Variety", data = Oats), # A
  afex_plot(oats.1, "nitro", "Variety", data = Oats), # B
  afex_plot(oats.1, "nitro", "Variety", data = Oats, id = "Block"), # C
  afex_plot(oats.1, "nitro", data = Oats), # D
  afex_plot(oats.1, "nitro", data = Oats, id = c("Block", "Variety")), # E
  afex_plot(oats.1, "nitro", data = Oats, id = "Block"), # F
  labels = "AUTO"
)
## dv column detected: yield
## No id column passed. Assuming all rows are independent samples.
## dv column detected: yield
## No id column passed. Assuming all rows are independent samples.
## dv column detected: yield
## dv column detected: yield
## No id column passed. Assuming all rows are independent samples.
## NOTE: Results may be misleading due to involvement in interactions
## dv column detected: yield
## NOTE: Results may be misleading due to involvement in interactions
## dv column detected: yield
## NOTE: Results may be misleading due to involvement in interactions

glmmTMB

Support for glmmTMB is also provided. Here we use an example data set for which we model zero-inflation as well as overdispersion. The latter is achieved with a variant of the negative binomial distribution.

library("glmmTMB")
tmb <- glmmTMB(count~spp * mined + (1|site), 
              ziformula = ~spp * mined, 
              family=nbinom2, Salamanders)

afex_plot does not automatically detect the random-effect for site. This means that per default all 644 data points are shown. When plotting only one variable, in which the default data_geom is ggbeeswarm::geom_beeswarm, this can lead to rather ugly plots due to the zero inflation. This is shon in panel A below. In panel B, we address this by changing the geom to a violin plot. In panel C, we address this by aggregating the data within site, but still use the beeswarm plot. Note that for panel C it is necessary to pass the data via the data argument as otherwise site cannot be found for aggregation.

plot_grid(
  afex_plot(tmb, "spp"),
  afex_plot(tmb, "spp", data_geom = geom_violin),
  afex_plot(tmb, "spp", id = "site", data = Salamanders), 
  labels = "AUTO", nrow = 1
)
## dv column detected: count
## No id column passed. Assuming all rows are independent samples.
## NOTE: Results may be misleading due to involvement in interactions
## dv column detected: count
## No id column passed. Assuming all rows are independent samples.
## NOTE: Results may be misleading due to involvement in interactions
## dv column detected: count
## NOTE: Results may be misleading due to involvement in interactions

When plotting both variables, the problem is somewhat hidden, because instead of beeswarm plots, semi-transparency (i.e., alpha < 1) is used to show overlapping points. In panel B we again make this clearer but this time by adding jitter (on both the y- and x-axis) and increasing the degree of semi-transparancy (i.e., decreasing alpha).

a <- afex_plot(tmb, "spp", "mined")
## dv column detected: count
## No id column passed. Assuming all rows are independent samples.
 r
b <- afex_plot(tmb, "spp", "mined", data_alpha = 0.3,
          data_arg = list(
            position = 
              ggplot2::position_jitterdodge(
                jitter.width = 0.2, 
                jitter.height = 0.5, 
                dodge.width = 0.5  ## needs to be same as dodge
                ),
            color = "darkgrey"))
## dv column detected: count
## No id column passed. Assuming all rows are independent samples.
 r
plot_grid(a, b, labels = "AUTO")

For the final plot we also plot the interaction, but this time aggregate the individual-data within site. This allows us again to use a beeswarm plot (after decreasing the width of the “bees”) and produces a relatively clear result.

afex_plot(tmb, "spp", "mined", id = "site", data = Salamanders, 
          data_geom = ggbeeswarm::geom_beeswarm, 
          data_arg = list(dodge.width = 0.5, cex = 0.4,
                          color = "darkgrey")
          )
## dv column detected: count

rstanarm

afex_plot() also supports Bayesian models that are also supported via emmeans. For example, we can easily fit a binomial model with rstanarm.

library("rstanarm") ## requires resetting the ggplot2 theme
theme_set(theme_bw(base_size = 14) + 
            theme(legend.position="bottom", 
                  panel.grid.major.x = element_blank(),
                  panel.grid.minor.x = element_blank()))
cbpp <- lme4::cbpp 
cbpp$prob <- with(cbpp, incidence / size)
example_model <- stan_glmer(prob ~ period + (1|herd),
                            data = cbpp, family = binomial, weight = size,
                            chains = 2, cores = 1, seed = 12345, iter = 500)

We can directly pass this model to afex_plot. However, we also see quite some zeros leading to a not super nice plot. It looks a bit better using a violin plot for the raw data.

b1 <- afex_plot(example_model, "period")
## dv column detected: prob
## No id column passed. Assuming all rows are independent samples.
b2 <- afex_plot(example_model, "period", data_geom = geom_violin)
## dv column detected: prob
## No id column passed. Assuming all rows are independent samples.
plot_grid(b1, b2, labels = "AUTO")

We can also produce a plot based on the individual Bernoulli observations in the data. For this, we first need to expand the data such that we have one row per observation. With this, we can then fit the essentially same model as above.

cbpp_l <- vector("list", nrow(cbpp))
for (i in seq_along(cbpp_l)) {
  cbpp_l[[i]] <- data.frame(
    herd = cbpp$herd[i],
    period = cbpp$period[i],
    incidence = rep(0, cbpp$size[i])
  )
  cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1
}
cbpp_l <- do.call("rbind", cbpp_l)
cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd))
cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period))
example_model2 <- stan_glmer(incidence ~ period + (1|herd),
                             data = cbpp_l, family = binomial, 
                             chains = 2, cores = 1, seed = 12345, iter = 500)

Again, this model can be directly passed to afex_plot. However, here we see even more 0 as the data is not yet aggregated. Consequently, we need to pass id = "herd" to aggregate the individual observations within each herd.

b3 <- afex_plot(example_model2, "period")
## dv column detected: incidence
## No id column passed. Assuming all rows are independent samples.
b4 <- afex_plot(example_model2, "period", id = "herd")
## dv column detected: incidence
plot_grid(b3, b4, labels = "AUTO")

We can of course also fit a model assuming a normal distribution using rstanarm. For example using the Machines data.

data("Machines", package = "MEMSS") 
mm <- stan_lmer(score ~ Machine + (Machine|Worker), data=Machines,
                chains = 2, cores = 1, seed = 12345, iter = 500)

As before, we can pass this model directly to afex_plot (see panel A). However, the data is again not aggregated within the grouping variable Worker. If we want to aggregate the individual data points for the grouping factor, we need to pass both the name of the grouping variable (Worker) and the data used for fitting.

b5 <- afex_plot(mm, "Machine")
## dv column detected: score
## No id column passed. Assuming all rows are independent samples.
b6 <- afex_plot(mm, "Machine", id = "Worker")
## dv column detected: score
plot_grid(b5, b6, labels = "AUTO")

brms

We can also fit the Machines data using brms.

library("brms")
data("Machines", package = "MEMSS") 
mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, 
           chains = 2, cores = 1, seed = 12345, iter = 500)

However, to pass a brms object to afex_plot we need to pass both, the data used for fitting as well as the name of the dependent variable (here score) via the dv argument. We again build the plot such that the left panel shows the raw data without aggregation and the right panel shows the data aggregated within the grouping factor Worker.

bb1 <- afex_plot(mm2, "Machine", data = Machines, dv = "score")
## No id column passed. Assuming all rows are independent samples.
bb2 <- afex_plot(mm2, "Machine", id = "Worker", 
          data = Machines, dv = "score")
plot_grid(bb1, bb2)

Not Yet Supported: GLMMadaptive

Some models are unfortunately not yet supported. For example, models fit with the new and pretty cool looking GLMMadaptive package using some of the special families do not seem to produce reasonable results. The following unfortunately does not produce a reasonable plot.

library("GLMMadaptive")
data(Salamanders, package = "glmmTMB")
gm1 <- mixed_model(count~spp * mined, random = ~ 1 | site, data = Salamanders,
                   family = zi.poisson(), zi_fixed = ~ mined)

afex_plot(gm1, "spp", data = Salamanders)
afex/inst/doc/afex_mixed_example.Rmd0000644000176200001440000007475414665062321017235 0ustar liggesusers--- title: "Mixed Model Reanalysis of RT data" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{Mixed Model Example Analysis: Reanalysis of Freeman et al. (2010)} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "multcomp", "dplyr", "tidyr","ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} op <- options(width = 90, dplyr.summarise.inform = FALSE) knitr::opts_chunk$set(dpi=72) ``` ```{r, echo=FALSE} load(system.file("extdata/", "output_mixed_vignette.rda", package = "afex")) ``` ## Overview This documents reanalysis response time data from an Experiment performed by Freeman, Heathcote, Chalmers, and Hockley (2010) using the mixed model functionality of __afex__ implemented in function `mixed` followed by post-hoc tests using package __emmeans__ (Lenth, 2017). After a brief description of the data set and research question, the code and results are presented. ## Description of Experiment and Data The data are lexical decision and word naming latencies for 300 words and 300 nonwords from 45 participants presented in Freeman et al. (2010). The 300 items in each `stimulus` condition were selected to form a balanced $2 \times 2$ design with factors neighborhood `density` (low versus high) and `frequency` (low versus high). The `task` was a between subjects factor: 25 participants worked on the lexical decision task and 20 participants on the naming task. After excluding erroneous responses each participants responded to between 135 and 150 words and between 124 and 150 nonwords. We analyzed log RTs which showed an approximately normal picture. ## Data and R Preparation We start with loading some packages we will need throughout this example. For data manipulation we will be using the `dplyr` and `tidyr` packages from the [`tidyverse`](https://www.tidyverse.org/). A thorough introduction to these packages is beyond this example, but well worth it, and can be found in ['R for Data Science'](https://r4ds.had.co.nz/) by Wickham and Grolemund. For plotting we will be using `ggplot2`, also part of the `tidyverse`. After loading the packages, we will load the data (which comes with `afex`), remove the errors, and take a look at the variables in the data. ```{r message=FALSE, warning=FALSE} library("afex") # needed for mixed() and attaches lme4 automatically. library("emmeans") # emmeans is needed for follow-up tests library("multcomp") # for advanced control for multiple testing/Type 1 errors. library("dplyr") # for working with data frames library("tidyr") # for transforming data frames from wide to long and the other way round. library("ggplot2") # for plots theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) data("fhch2010") # load fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors str(fhch2010) # structure of the data ``` To make sure our expectations about the data match the data we use some `dplyr` magic to confirm the number of participants per condition and items per participant. ```{r} ## are all participants in only one task? fhch %>% group_by(id) %>% summarise(task = n_distinct(task)) %>% as.data.frame() %>% {.$task == 1} %>% all() ## participants per condition: fhch %>% group_by(id) %>% summarise(task = first(task)) %>% ungroup() %>% group_by(task) %>% summarise(n = n()) ## number of different items per participant: fhch %>% group_by(id, stimulus) %>% summarise(items = n_distinct(item)) %>% ungroup() %>% group_by(stimulus) %>% summarise(min = min(items), max = max(items), mean = mean(items)) ``` Before running the analysis we should make sure that our dependent variable looks roughly normal. To compare `rt` with `log_rt` within the same figure we first need to transform the data from the wide format (where both rt types occupy one column each) into the long format (in which the two rt types are combined into a single column with an additional indicator column). To do so we use `tidyr::pivot_longer`. Then we simply call `ggplot` with `geom_histogram` and `facet_wrap(vars(rt_type))` on the new `tibble`. The plot shows that `log_rt` looks clearly more normal than `rt`, although not perfectly so. An interesting exercise could be to rerun the analysis below using a transformation that provides an even better 'normalization'. ```{r, fig.width=7, fig.height=4} fhch_long <- fhch %>% pivot_longer(cols = c(rt, log_rt), names_to = "rt_type", values_to = "rt") ggplot(fhch_long, aes(rt)) + geom_histogram(bins = 100) + facet_wrap(vars(rt_type), scales = "free_x") ``` ## Descriptive Analysis The main factors in the experiment were the between-subjects factor `task` (`naming` vs. `lexdec`), and the within-subjects factors `stimulus` (`word` vs. `nonword`), `density` (`low` vs. `high`), and `frequency` (`low` vs. `high`). Before running an analysis it is a good idea to visually inspect the data to gather some expectations regarding the results. Should the statistical results dramatically disagree with the expectations this suggests some type of error along the way (e.g., model misspecification) or at least encourages a thorough check to make sure everything is correct. We first begin by plotting the data aggregated by-participant. In each plot we plot the raw data in the background. To make the individual data points visible we use `ggbeeswarm::geom_quasirandom` and `alpha = 0.5` for semi-transparency. On top of this we add a (transparent) box plot as well as the mean and standard error. ```{r, fig.width=7, fig.height=6, message=FALSE, out.width="90%"} agg_p <- fhch %>% group_by(id, task, stimulus, density, frequency) %>% summarise(mean = mean(log_rt)) %>% ungroup() ggplot(agg_p, aes(x = interaction(density,frequency), y = mean)) + ggbeeswarm::geom_quasirandom(alpha = 0.5) + geom_boxplot(fill = "transparent") + stat_summary(colour = "red") + facet_grid(cols = vars(task), rows = vars(stimulus)) ``` Now we plot the same data but aggregated across items: ```{r, fig.width=7, fig.height=6, message=FALSE, out.width="90%"} agg_i <- fhch %>% group_by(item, task, stimulus, density, frequency) %>% summarise(mean = mean(log_rt)) %>% ungroup() ggplot(agg_i, aes(x = interaction(density,frequency), y = mean)) + ggbeeswarm::geom_quasirandom(alpha = 0.3) + geom_boxplot(fill = "transparent") + stat_summary(colour = "red") + facet_grid(cols = vars(task), rows = vars(stimulus)) ``` These two plots show a very similar pattern and suggest several things: * Responses to `nonwords` appear slower than responses to `words`, at least for the `naming` task. * `lexdec` responses appear to be slower than `naming` responses, particularly in the `word` condition. * In the `nonword` and `naming` condition we see a clear effect of `frequency` with slower responses to `high` than `low` `frequency` words. * In the `word` conditions the `frequency` pattern appears to be in the opposite direction to the pattern described in the previous point: faster responses to `low` `frequency` than to `high` `frequency` words. * `density` appears to have no effect, perhaps with the exception of the `nonword` `lexdec` condition. ## Model Setup To set up a mixed model it is important to identify which factors vary within which grouping factor generating random variability (i.e., grouping factors are sources of stochastic variability). The two grouping factors are participants (`id`) and items (`item`). The within-participant factors are `stimulus`, `density`, and `frequency`. The within-item factor is `task`. The 'maximal model' (Barr, Levy, Scheepers, and Tily, 2013) therefore is the model with by-participant random slopes for `stimulus`, `density`, and `frequency` and their interactions and by-item random slopes for `task`. It is rather common that a maximal model with a complicated random effect structure, such as the present one, does not converge successfully. The best indicator of this is a "singular fit" warning. A model with a singular fit warning should not be reported or used. Instead, one should make sure that qualitatively the same results are also observed with a model without singular fit warnings. If the maximal model that does not converge and a reduced model without a singular fit warning (i.e., the final model) diverge in their results, results should only be interpreted cautiously. In case of a singular fit or another indicator of a convergence problem, the usual first step is removing the correlations among the random terms. In our example, there are two sets of correlations, one for each random effect grouping variable. Consequently, we can build four model that have the maximal structure in terms of random-slopes and only differ in which correlations among random terms are calculated: 1. With all correlations. 2. No correlation among by-item random effects (i.e., no correlation between random intercept and `task` random slope). 3. No correlation among by-participant random effect terms (i.e., no correlation among random slopes themselves and between the random slopes and the random intercept). 4. No correlation among either random grouping factor. The next decision to be made is which method to use for obtaining $p$-values. The best control against anti-conservative results is provided by `method = "KR"` (=Kenward-Roger). However, `KR` needs quite a lot of RAM, especially with complicated random effect structures and large data sets. In this case we have both, relatively large data (i.e., many levels on each random effect, especially the item random effect) and a complicated random effect structure. Consequently, it seems a reasonable decision to choose another method. The second 'best' method (in terms of controlling for Type I errors) is the 'Satterthwaite' approximation, `method = 'S'`. It provides a similar control of Type I errors as the Kenward-Roger approximation and needs less RAM. The Satterthwaite method is currently also the default method for calculating $p$-values so does not need to be set explicitly. ## Finding the Final Model The following code fits the four models using the Satterthwaite method. To suppress random effects we use the `||` notation. Note that it is necessary to set `expand_re = TRUE` when suppressing random effects among variables that are entered as factors and not as numerical variables (all independent variables in the present case are factors). Also note that `mixed` automatically uses appropriate contrast coding if factors are included in interactions (`contr.sum`) in contrast to the `R` default (which is `contr.treatment`). To make sure the estimation does not end prematurely we set the allowed number of function evaluations to a very high value (using `lmerControl`). However, because fitting the models in R might take quite a while, you should also be able to load the fitted binary files them from [this url](https://raw.githubusercontent.com/singmann/afex/master/development/freeman_models.rda) and then load them in R with `load("freeman_models.rda")`. ```{r, eval = FALSE} m1s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency|id)+ (task|item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6))) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval = FALSE} m2s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency|id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval = FALSE} m3s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency||id)+ (task|item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval = FALSE} m4s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus*density*frequency||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` We can see that fitting each of these models emits the "singular fit" message (it is technically a `message` and not a `warning`) indicating that the model is over-parameterized and did not converge successfully. In particular, this message indicates that the model is specified with more random effect parameters than can be estimated given the current data. It is instructive to see that even with a comparatively large number of observations, 12960, a set of seven random slopes for the by-participant term and one random slope for the by-item term cannot be estimated successfully. And this holds even after removing all correlations. Thus, it should not be surprising that similar sized models regularly do not converge with smaller numbers of observations. Furthermore, we are here in the fortunate situation that each factor has only two levels. A factor with more levels corresponds to more parameters of the random effect terms. Before deciding what to do next, we take a look at the estimated random effect estimates. We do so for the model without any correlations. Note that for `afex` models we usually do not want to use the `summary` method as it prints the results on the level of the model coefficients and not model terms. But for the random effects we have to do so. However, we are only interested in the random effect terms so we only print those using `summary(model)$varcor`. ```{r, eval=FALSE} summary(m4s)$varcor ``` ```{r, echo=FALSE} cat(outp_m4s_vc$output, sep = "\n") ``` The output shows that the estimated SDs of the random slopes of the two-way interactions are all zero. However, because we cannot remove the random slopes for the two way interaction while retaining the three-way interaction, we start by removing the three-way interaction first. ```{r, eval=FALSE} m5s <- mixed(log_rt ~ task*stimulus*density*frequency + ((stimulus+density+frequency)^2||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` ```{r, eval=FALSE} summary(m5s)$varcor ``` ```{r, echo=FALSE} cat(outp_m5s_vc$output, sep = "\n") ``` Not too surprisingly, this model also produces a singular fit. Inspection of the estimates shows that the two-way interaction of the slopes are still estimated to be zero. So we remove those in the next step. ```{r, eval=FALSE} m6s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+density+frequency||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} message("boundary (singular) fit: see ?isSingular") ``` This model still shows a singular fit warning. The random effect estimates below show a potential culprit. ```{r, eval=FALSE} summary(m6s)$varcor ``` ```{r, echo=FALSE} cat(outp_m6s_vc$output, sep = "\n") ``` As in `m4s` above, the random effect SD for the density term is estimated to be zero. Thus, we remove this as well in the next step. ```{r, eval=FALSE} m7s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` This model finally does not emit a singular fit warning. Is this our final model? Before deciding on this, we see whether we can add the correlation terms again without running into any problems. We begin by adding the correlation to the by-participant term. ```{r, eval=FALSE} m8s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency|id)+ (task||item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` ```{r, echo=FALSE} warning(fit_m8s$warnings, call. = FALSE) ``` This model does not show a singular fit message but emits another warning. Specifically, a warning that the absolute maximal gradient at the final solution is too high. This warning is not necessarily critical (i.e., it can be a false positive), but can also indicate serious problems. Consequently, we try adding the correlation between the by-item random terms instead: ```{r, eval=FALSE} m9s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task|item), fhch, control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` This model also does not show any warnings. Thus, we have arrived at the end of the model selection process. ## Results of Maximal and Final Model We now have the following two relevant models. - `m1s`: The maximal random effect structure justified by the design (i.e., the maximal model) - `m9s`: The final model Robust results are those that hold regardless across maximal and final (i.e., reduced) model. Therefore, let us compare the pattern of significant and non-significant effects. ```{r, eval=FALSE} left_join(nice(m1s), nice(m9s), by = "Effect", suffix = c("_full", "_final")) ``` ```{r, echo=FALSE} cat(outp_comb_anova$output, sep = "\n") ``` What this shows is that the pattern of significant and non-significant effect is the same for both models. The only significant effect for which the evidence is not that strong is the 3-way interaction between `stimulus:density:frequency`. It is only just below .05 for the full model and has a somewhat lower value for the final model. We can also see that one of the most noticeable differences between the maximal and the final model is the number of denominator degrees of freedom. This is highly influenced by the random effect structure and thus considerable larger in the final (i.e., reduced) model. The difference in the other statistics is lower. ## LRT Results It is instructive to compare those results with results obtained using the comparatively 'worst' method for obtaining $p$-values implemented in `afex::mixed`, likelihood ratio tests. Likelihood ratio-tests should in principle deliver reasonable results for large data sets. A common rule of thumb is that the number of levels for each random effect grouping factor needs to be large, say above 50. Here, we have a very large number of items (600), but not that many participants (45). Thus, qualitative results should be the very similar, but it still is interesting to see exactly what happens. We therefore fit the final model using `method='LRT'`. ```{r, eval = FALSE} m9lrt <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task|item), fhch, method = "LRT", control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) m9lrt ``` ```{r, echo=FALSE} cat(outp_m9lrt$output, sep = "\n") ``` The results in this case match the results of the Satterthwaite method. With lower numbers of levels of the grouping factor (e.g., less participants) this would not necessarily be expected. ## Summary of Results Fortunately, the results from all models converged on the same pattern of significant and non-significant effects providing a high degree of confidence in the results. This might not be too surprising given the comparatively large number of total data points and the fact that each random effect grouping factor has a considerable number of levels (above 30 for both participants and items). In the following we focus on the final model using the Satterthwaite method, `m9s`. In terms of the significant findings, there are many that seem to be in line with the descriptive results described above. For example, the highly significant effect of `task:stimulus:frequency` with $F(1, 578.91) = 124.16$, $p < .001$, appears to be in line with the observation that the frequency effect appears to change its sign depending on the `task:stimulus` cell (with `nonword` and `naming` showing the opposite patterns than the other three conditions). Consequently, we start by investigating this interaction further below. ## Follow-Up Analyses Before investigating the significant interaction in detail it is a good idea to remind oneself what a significant interaction represents on a conceptual level; that one or multiple of the variables in the interaction moderate (i.e., affect) the effect of the other variable or variables. Consequently, there are several ways to investigate a significant interaction. Each of the involved variables can be seen as the moderating variables and each of the variables can be seen as the effect of interest. Which one of those possible interpretations is of interest in a given situation highly depends on the actual data and research question and multiple views can be 'correct' in a given situation. In addition to this conceptual issue, there are also multiple technical ways to investigate a significant interaction. One approach not followed here is to split the data into subsets according to the moderating variables and compute the statistical model again for the subsets with the effect variable(s) as remaining fixed effect. This approach, also called _simple effects_ analysis, is, for example, recommended by Maxwell and Delaney (2004) as it does not assume variance homogeneity and is faithful to the data at each level. The approach taken here is to simply perform the test on the estimated final model. This approach assumes variance homogeneity (i.e., that the variances in all groups are homogeneous) and has the added benefit that it is computationally relatively simple. In addition, it can all be achieved using the framework provided by [`emmeans`](https://cran.r-project.org/package=emmeans) (Lenth, 2017). ### task:stimulus:frequency Interaction Our interest in the beginning is on the effect of `frequency` by `task:stimulus` combination. So let us first look at the estimated marginal means of this effect. In `emmeans` parlance these estimated means are called 'least-square means' because of historical reasons, but because of the lack of least-square estimation in mixed models we prefer the term estimated marginal means, or EMMs for short. Those can be obtained in the following way. To prevent `emmeans` from calculating the *df* for the EMMs (which can be quite costly), we use asymptotic *df*s (i.e., $z$ values and tests). `emmeans` requires to first specify the variable(s) one wants to treat as the effect variable(s) (here `frequency`) and then allows to specify condition variables. ```{r, eval=FALSE} emm_options(lmer.df = "asymptotic") # also possible: 'satterthwaite', 'kenward-roger' emm_i1 <- emmeans(m9s, "frequency", by = c("stimulus", "task")) emm_i1 ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_o1$output, sep = "\n") ``` The returned values are in line with our observation that the `nonword` and `naming` condition diverges from the other three. But is there actual evidence that the effect flips? We can test this using additional `emmeans` functionality. Specifically, we first use the `pairs` function which provides us with a pairwise test of the effect of `frequency` in each `task:stimulus` combination. Then we need to combine the four tests within one object to obtain a family-wise error rate correction which we do via `update(..., by = NULL)` (i.e., we revert the effect of the `by` statement from the earlier `emmeans` call) and finally we select the `holm` method for controlling for family wise error rate (the Holm method is uniformly more powerful than the Bonferroni). ```{r, eval=FALSE} update(pairs(emm_i1), by = NULL, adjust = "holm") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_o2$output, sep = "\n") ``` We could also use a slightly more powerful method than the Holm method, method `free` from package `multcomp`. This method takes the correlation of the model parameters into account. However, results do not differ much here: ```{r, eval=FALSE} summary(as.glht(update(pairs(emm_i1), by = NULL)), test = adjusted("free")) ``` ```{r, echo=FALSE} cat(emm_o3$output, sep = "\n") ``` We see that the results are exactly as expected. In the `nonword` and `naming` condition we have a clear negative effect of frequency while in the other three conditions it is clearly positive. We could now also use `emmeans` and re-transform the estimates back onto the original RT response scale. For this, we can again `update` the `emmeans` object by using `tran = "log"` to specify the transformation and then indicating we want the means on the response scale with `type = "response"`. These values might be used for plotting. ```{r, eval=FALSE} emm_i1b <- update(emm_i1, tran = "log", type = "response", by = NULL) emm_i1b ``` ```{r, echo=FALSE} cat(emm_o4$output, sep = "\n") ``` A more direct approach for plotting the interaction is via `afex_plot`. For a plot that is not too busy it makes sense to specify across which grouping factor the individual level data should be aggregated. We use the participant variable `"id"` here. We also use `ggbeeswarm::geom_quasirandom` as the geom for the data in the background following the example in [the `afex_plot` vignette](afex_plot_introduction.html). ```{r, echo=FALSE} load(system.file("extdata/", "output_afex_plot_mixed_vignette_model.rda", package = "afex")) emm_options(lmer.df = "asymptotic") ``` ```{r, eval=TRUE, fig.width=5, fig.height=4, out.width="90%"} afex_plot(m9s, "frequency", "stimulus", "task", id = "id", data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.1, color = "darkgrey")) ``` ### task:stimulus:density:frequency Interaction As the last example, let us take a look at the significant four-way interaction of `task:stimulus:density:frequency`, $F(1, 578.77) = 11.72$, $p < .001$. Here we might be interested in a slightly more difficult question namely whether the `density:frequency` interaction varies across `task:stimulus` conditions. If we again look at the figures above, it appears that there is a difference between `low:low` and `high:low` in the `nonword` and `lexdec` condition, but not in the other conditions. Looking at the 2-way interaction of `density:frequency` by the `task:stimulus` interaction can be done using `emmeans` using the `joint_test` function. We simply need to specify the appropriate `by` variables and get conditional tests this way. ```{r, eval=FALSE} joint_tests(m9s, by = c("stimulus", "task")) ``` ```{r, echo=FALSE} cat(emm_o5$output, sep = "\n") ``` This test indeed shows that the `density:frequency` interaction is only significant in the `nonword` and `lexdec` condition. Next, let's see if we can unpack this interaction in a meaningful manner. For this we compare `low:low` and `high:low` in each of the four groups. And just for the sake of making the example more complex, we also compare `low:high` and `high:high`. To do so, we first need to setup a new set of EMMs. Specifically, we get the EMMs of the two variables of interest, density and frequency, using the same `by` specification as the `joint_test` call. We can then setup custom contrasts that tests our hypotheses. ```{r, eval=FALSE} emm_i2 <- emmeans(m2s, c("density", "frequency"), by = c("stimulus", "task")) emm_i2 ``` ```{r, echo=FALSE} cat(emm_o6$output, sep = "\n") ``` These contrasts can be specified via a list of custom contrasts on the EMMs (or reference grid in `emmeans` parlance) which can be passed to the `contrast` function. The contrasts are a `list` where each element should sum to one (i.e., be a proper contrast) and be of length equal to the number of EMMs (although we have 16 EMMs in total, we only need to specify it for a length of four due to conditioning by `c("stimulus", "task")`). To control for the family wise error rate across all tests, we again use `update(..., by = NULL)` on the result to revert the effect of the conditioning. ```{r, eval=FALSE} # desired contrats: des_c <- list( ll_hl = c(1, -1, 0, 0), lh_hh = c(0, 0, 1, -1) ) update(contrast(emm_i2, des_c), by = NULL, adjust = "holm") ``` ```{r, echo=FALSE} cat(emm_o7$output, sep = "\n") ``` In contrast to our expectation, the results show two significant effects and not only one. In line with our expectations, in the `nonword` and `lexdec` condition the EMM of `low:low` is smaller than the EMM for `high:low`, $z = -5.63$, $p < .0001$. However, in the `nonword` and `naming` condition we found the opposite pattern; the EMM of `low:low` is larger than the EMM for `high:low`, $z = 3.53$, $p = .003$. For all other effects $|z| < 1.4$, $p > .98$. In addition, there is no difference between `low:high` and `high:high` in any condition. ## References * Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. _Journal of Memory and Language_, 68(3), 255-278. https://doi.org/10.1016/j.jml.2012.11.001 * Bretz, F., Hothorn, T., & Westfall, P. H. (2011). _Multiple comparisons using R_. Boca Raton, FL: CRC Press. https://CRAN.R-project.org/package=multcomp * Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. _Journal of Memory and Language_, 62(1), 1-18. https://doi.org/10.1016/j.jml.2009.09.004 * Lenth, R. (2017). _emmeans: Estimated Marginal Means, aka Least-Squares Means_. R package version 0.9.1. https://CRAN.R-project.org/package=emmeans * Maxwell, S. E., & Delaney, H. D. (2004). _Designing experiments and analyzing data: a model-comparisons perspective_. Mahwah, N.J.: Lawrence Erlbaum Associates. ```{r, include=FALSE} options(op) ``` afex/inst/doc/afex_mixed_example.R0000644000176200001440000002764114665070014016703 0ustar liggesusers## ----echo=FALSE--------------------------------------------------------------- req_suggested_packages <- c("emmeans", "multcomp", "dplyr", "tidyr","ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ## ----set-options, echo=FALSE, cache=FALSE----------------------------------------------- op <- options(width = 90, dplyr.summarise.inform = FALSE) knitr::opts_chunk$set(dpi=72) ## ----echo=FALSE------------------------------------------------------------------------- load(system.file("extdata/", "output_mixed_vignette.rda", package = "afex")) ## ----message=FALSE, warning=FALSE------------------------------------------------------- library("afex") # needed for mixed() and attaches lme4 automatically. library("emmeans") # emmeans is needed for follow-up tests library("multcomp") # for advanced control for multiple testing/Type 1 errors. library("dplyr") # for working with data frames library("tidyr") # for transforming data frames from wide to long and the other way round. library("ggplot2") # for plots theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) data("fhch2010") # load fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors str(fhch2010) # structure of the data ## --------------------------------------------------------------------------------------- ## are all participants in only one task? fhch %>% group_by(id) %>% summarise(task = n_distinct(task)) %>% as.data.frame() %>% {.$task == 1} %>% all() ## participants per condition: fhch %>% group_by(id) %>% summarise(task = first(task)) %>% ungroup() %>% group_by(task) %>% summarise(n = n()) ## number of different items per participant: fhch %>% group_by(id, stimulus) %>% summarise(items = n_distinct(item)) %>% ungroup() %>% group_by(stimulus) %>% summarise(min = min(items), max = max(items), mean = mean(items)) ## ----fig.width=7, fig.height=4---------------------------------------------------------- fhch_long <- fhch %>% pivot_longer(cols = c(rt, log_rt), names_to = "rt_type", values_to = "rt") ggplot(fhch_long, aes(rt)) + geom_histogram(bins = 100) + facet_wrap(vars(rt_type), scales = "free_x") ## ----fig.width=7, fig.height=6, message=FALSE, out.width="90%"-------------------------- agg_p <- fhch %>% group_by(id, task, stimulus, density, frequency) %>% summarise(mean = mean(log_rt)) %>% ungroup() ggplot(agg_p, aes(x = interaction(density,frequency), y = mean)) + ggbeeswarm::geom_quasirandom(alpha = 0.5) + geom_boxplot(fill = "transparent") + stat_summary(colour = "red") + facet_grid(cols = vars(task), rows = vars(stimulus)) ## ----fig.width=7, fig.height=6, message=FALSE, out.width="90%"-------------------------- agg_i <- fhch %>% group_by(item, task, stimulus, density, frequency) %>% summarise(mean = mean(log_rt)) %>% ungroup() ggplot(agg_i, aes(x = interaction(density,frequency), y = mean)) + ggbeeswarm::geom_quasirandom(alpha = 0.3) + geom_boxplot(fill = "transparent") + stat_summary(colour = "red") + facet_grid(cols = vars(task), rows = vars(stimulus)) ## ----eval = FALSE----------------------------------------------------------------------- # m1s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus*density*frequency|id)+ # (task|item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6))) ## ----echo=FALSE------------------------------------------------------------------------- message("boundary (singular) fit: see ?isSingular") ## ----eval = FALSE----------------------------------------------------------------------- # m2s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus*density*frequency|id)+ # (task||item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ## ----echo=FALSE------------------------------------------------------------------------- message("boundary (singular) fit: see ?isSingular") ## ----eval = FALSE----------------------------------------------------------------------- # m3s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus*density*frequency||id)+ # (task|item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ## ----echo=FALSE------------------------------------------------------------------------- message("boundary (singular) fit: see ?isSingular") ## ----eval = FALSE----------------------------------------------------------------------- # m4s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus*density*frequency||id)+ # (task||item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ## ----echo=FALSE------------------------------------------------------------------------- message("boundary (singular) fit: see ?isSingular") ## ----eval=FALSE------------------------------------------------------------------------- # summary(m4s)$varcor ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_m4s_vc$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # m5s <- mixed(log_rt ~ task*stimulus*density*frequency + # ((stimulus+density+frequency)^2||id)+ # (task||item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ## ----echo=FALSE------------------------------------------------------------------------- message("boundary (singular) fit: see ?isSingular") ## ----eval=FALSE------------------------------------------------------------------------- # summary(m5s)$varcor ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_m5s_vc$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # m6s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus+density+frequency||id)+ # (task||item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), # expand_re = TRUE) ## ----echo=FALSE------------------------------------------------------------------------- message("boundary (singular) fit: see ?isSingular") ## ----eval=FALSE------------------------------------------------------------------------- # summary(m6s)$varcor ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_m6s_vc$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # m7s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus+frequency||id)+ # (task||item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ## ----eval=FALSE------------------------------------------------------------------------- # m8s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus+frequency|id)+ # (task||item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ## ----echo=FALSE------------------------------------------------------------------------- warning(fit_m8s$warnings, call. = FALSE) ## ----eval=FALSE------------------------------------------------------------------------- # m9s <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus+frequency||id)+ # (task|item), fhch, # control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ## ----eval=FALSE------------------------------------------------------------------------- # left_join(nice(m1s), nice(m9s), by = "Effect", # suffix = c("_full", "_final")) ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_comb_anova$output, sep = "\n") ## ----eval = FALSE----------------------------------------------------------------------- # m9lrt <- mixed(log_rt ~ task*stimulus*density*frequency + # (stimulus+frequency||id)+ # (task|item), fhch, method = "LRT", # control = lmerControl(optCtrl = list(maxfun = 1e6)), # expand_re = TRUE) # m9lrt ## ----echo=FALSE------------------------------------------------------------------------- cat(outp_m9lrt$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emm_options(lmer.df = "asymptotic") # also possible: 'satterthwaite', 'kenward-roger' # emm_i1 <- emmeans(m9s, "frequency", by = c("stimulus", "task")) # emm_i1 ## ----echo=FALSE------------------------------------------------------------------------- message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_o1$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # update(pairs(emm_i1), by = NULL, adjust = "holm") ## ----echo=FALSE------------------------------------------------------------------------- message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_o2$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # summary(as.glht(update(pairs(emm_i1), by = NULL)), test = adjusted("free")) ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_o3$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emm_i1b <- update(emm_i1, tran = "log", type = "response", by = NULL) # emm_i1b ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_o4$output, sep = "\n") ## ----echo=FALSE------------------------------------------------------------------------- load(system.file("extdata/", "output_afex_plot_mixed_vignette_model.rda", package = "afex")) emm_options(lmer.df = "asymptotic") ## ----eval=TRUE, fig.width=5, fig.height=4, out.width="90%"------------------------------ afex_plot(m9s, "frequency", "stimulus", "task", id = "id", data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.1, color = "darkgrey")) ## ----eval=FALSE------------------------------------------------------------------------- # joint_tests(m9s, by = c("stimulus", "task")) ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_o5$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # emm_i2 <- emmeans(m2s, c("density", "frequency"), by = c("stimulus", "task")) # emm_i2 ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_o6$output, sep = "\n") ## ----eval=FALSE------------------------------------------------------------------------- # # desired contrats: # des_c <- list( # ll_hl = c(1, -1, 0, 0), # lh_hh = c(0, 0, 1, -1) # ) # update(contrast(emm_i2, des_c), by = NULL, adjust = "holm") ## ----echo=FALSE------------------------------------------------------------------------- cat(emm_o7$output, sep = "\n") ## ----include=FALSE------------------------------------------------------------ options(op) afex/inst/doc/afex_plot_introduction.html0000644000176200001440000106300514665070044020402 0ustar liggesusers afex_plot: Publication Ready Plots for Experimental Designs

afex_plot: Publication Ready Plots for Experimental Designs

Henrik Singmann

2024-09-01

afex_plot() visualizes results from factorial experiments combining estimated marginal means and uncertainties associated with the estimated means in the foreground with a depiction of the raw data in the background. Currently, afex_plot() supports the following models:

  • ANOVAs estimated with aov_car(), aov_ez(), or aov_4() (i.e., objects of class "afex_aov")
  • Linear mixed models estimated with mixed() (i.e., objects of class "mixed")
  • Linear mixed models estimated with lme4::lmer (i.e., objects of class "merMod")
  • Models with emmeans support. For some examples see vignette("afex_plot_supported_models", package = "afex")

This document provides an overview of the plots possible with afex_plot(). It does so mostly using the afex_plot() examples, see ?afex_plot. We begin by loading afex and ggplot2 which is the package afex_plot() uses for plotting. Loading ggplot2 explicitly is not strictly necessary, but makes the following code nicer. Otherwise, we would need to prepend each call to a function from ggplot2 needed for customization with ggplot2:: (as is done in the examples in ?afex_plot).

We also load the cowplot package (introduction) which makes combining plots (with functions plot_grid() and legend()) very easy. However, loading cowplot sets a different theme for ggplot2 plots than the default grey one. Although I am not a big fan of the default theme with its grey background, we reset the theme globally using theme_set(theme_grey()) to start with the default behavior if cowplot is not attached. Note that cowplot also has the cool draw_plot() function which allows embedding plots within other plots.

We furthermore will need the following packages, however, we will not attach them directly, but only call a few selected functions using the package::function notation.

  • jtools for theme_apa()
  • ggpubr for theme_pubr()
  • ggbeeswarm for producing bee swarm plots with geom_beeswarm
  • ggpol for producing combined box plots and jitter plots using geom_boxjitter
library("afex")     
library("ggplot2")  
library("cowplot")
theme_set(theme_grey())

Two-Way Within-Subjects ANOVA

We begin with a two-way within-subjects ANOVA using synthetic data from Maxwell and Delaney (2004, p. 547). The data are hypothetical reaction times from a 2 x 3 Perceptual Experiment with factors angle with 3 levels and factor noise with 2 levels (see ?md_12.1 for a longer description). We first load the data and then fit the corresponding ANOVA.

data(md_12.1)
(aw <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise")))
## Anova Table (Type 3 tests)
## 
## Response: rt
##        Effect          df     MSE         F  ges p.value
## 1       angle 1.92, 17.31 3702.02 40.72 *** .390   <.001
## 2       noise        1, 9 8460.00 33.77 *** .387   <.001
## 3 angle:noise 1.81, 16.27 1283.22 45.31 *** .188   <.001
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## 
## Sphericity correction method: GG

The ANOVA shows that both, the two main effect as well as the interaction, are significant. We therefore inspect the pattern underlying the interaction. There exist two different ways of plotting a 2-way interaction. Either of the two variables can be depicted on the x-axis. And before having looked at both cases, it is often not clear which visualization of the interaction is more instructive. Consequently, we plot both next to each other. For this we simply need to exchange which variable is the x factor and which is the trace factor. We then use plot_grid() to plot them next to each other.

Basic Plot

p_an <- afex_plot(aw, x = "angle", trace = "noise") 
## Warning: Panel(s) show within-subjects factors, but not within-subjects error bars.
## For within-subjects error bars use: error = "within"
p_na <- afex_plot(aw, x = "noise", trace = "angle")
## Warning: Panel(s) show within-subjects factors, but not within-subjects error bars.
## For within-subjects error bars use: error = "within"
plot_grid(p_an, p_na)  ## try adding: labels = "AUTO"

Before we can even take a look at the plot, we notice that creating the plots has produced two warnings. These warnings complain that the plots depict within-subject factors, but do not use within-subject error bars. However, the warnings also tell us the solution (i.e., adding error = "within"), which we will do in the following. The help page ?afex_plot contains more information on which type of error bars are appropriate in which situation and how to interpret different type of error bars. For ANOVAs, afex_plot() will emit warnings if it thinks the error bars are not appropriate for the chosen factors.

Comparing both plots, my impression is that the plot with angle on the x-axis tells the clearer story. We can see that when noise is absent there is hardly any effect of the increase of angle. However, if noise is present an increasing angle clearly leads to increased RTs. We therefore use this plot in the following.

Exploring Graphical Options and Themes

We now produce a new variant of the left plot using more appropriate error bars and change several other graphical details which make the plot publication ready. We use the factor_levels argument to afex_plot() for renaming the factor levels (for technical reasons the ANOVA functions in afex transform all factor levels to proper R variable names using make.names() which changed the labels from e.g., 4 to X4) and the legend_title argument for changing the title of the legend. We also change the labels on the x and y axis.

p_an <- afex_plot(aw, x = "angle", trace = "noise", error = "within",
                  factor_levels = list(angle = c("0°", "4°", "8°"),
                                    noise = c("Absent", "Present")), 
                  legend_title = "Noise") +
  labs(y = "RTs (in ms)", x = "Angle (in degrees)")
## Renaming/reordering factor levels of 'angle':
##   X0 -> 0°
##   X4 -> 4°
##   X8 -> 8°
## Renaming/reordering factor levels of 'noise':
##   absent -> Absent
##   present -> Present

As the additional output shows, changing the factor levels via factor_levels emits a message detailing old and new factor levels in the form old -> new. This message can be suppressed by wrapping the afex_plot() call into a suppressMessages() call or via RMarkdown settings. Note that we could have also used the factor_levels argument for changing the order of the factor levels by passing a named character vector (e.g., factor_levels = list(angle = c(X8 = "8°", X4 = "4°", X0 = "0°"))). This would change the order either on the x-axis or in the legend.

As said above, I am not a big fan of the default grey theme of ggplot2 plots. Consequently, we compare a number of different themes for this plot in the following. For all but ggpubr::theme_pubr(), we also move the legend to the bottom as this better allows the plot to cover only a single column in a two-column layout. ggpubr::theme_pubr() automatically plots the legend on top.

plot_grid(
  p_an + theme_bw() + theme(legend.position="bottom"),
  p_an + theme_light() + theme(legend.position="bottom"),
  p_an + theme_minimal() + theme(legend.position="bottom"),
  p_an + jtools::theme_nice() + theme(legend.position="bottom"),
  p_an + ggpubr::theme_pubr(),
  p_an + theme_cowplot() + theme(legend.position="bottom"),
  labels = "AUTO"
)  

The first row, panels A to C, shows themes coming with ggplot2 and the second row, panels D to F, shows themes from additional packages. In my opinion all of these plots are an improvement above the default grey theme. For the themes coming with ggplot2, I really like that those shown here have a reference grid in the background. This often makes it easier to judge the actual values the shown data points have. I know that many people find this distracting, so many of the contributed themes do not have this grid. One thing I really like about the last two themes is that they per default use larger font sizes for the axes labels. One way to achieve something similar for most themes is to change base_size (see example below).

One general criticism I have with the current plots is that they show too many values on the y-axis. In the following I plot one more variant of this plot in which we change this to three values on the y-axis. We also increase the axes labels and remove the vertical grid lines.

p_an + 
  scale_y_continuous(breaks=seq(400, 900, length.out = 3)) +
  theme_bw(base_size = 15) + 
  theme(legend.position="bottom", 
        panel.grid.major.x = element_blank())

We can also set this theme for the remainder of the R session with theme_set().

theme_set(theme_bw(base_size = 15) + 
            theme(legend.position="bottom", 
                  panel.grid.major.x = element_blank()))

Saving Plots and Plot Sizes

To get our plot into a publication, we need to export it as a graphics file. I would generally advise against exporting plots via the RStudio interface as this is not reproducible. Instead I would use some of the following functions which save the document in the current working directory. Note that following Elsevier guidelines, a single column figure should have a width of 9 cm (~ 3 inch) and a two column figure should have a width of 19 cm (~ 7.5 inch).

For Word or similar documents I would export the plot as a png (never jpg):

ggsave("my_plot.png", device = "png", 
       width = 9, height = 8, units = "cm", 
       dpi = 600) ## the larger the dpi, the better the resolution

For LaTeX I would export as pdf:

ggsave("my_plot.pdf", device = "pdf", 
       width = 9, height = 8, units = "cm") 

Data in the Background

afex_plot() per default plots the raw data in the background. It does so using an alpha blending of 0.5. Thus, overlapping points appear darker. Examples of this can be seen in the previous graphs where some data points in the background appear clearly darker than others. The darker points indicate values for which several data points lie exactly on top of each other.

afex_plot() provides the possibility to change or alter the graphical primitive, called geom in ggplot2 parlance, used for plotting the points in the background. This offers a vast array of options for handling overlapping points or, more generally, how to display the raw data in the background. Let’s take a look at some of these examples in the following.

Single Geom

The simplest way for showing the data in the background is using a single geom, like in the default setting.

The following figure shows eight different variants of a single geom. The plot in the top left shows the default variant. The first alternative variant adds vertical jitter to the points to make the overplotting clearer. The other alternatives use other geoms. Note that depending on the specific variant we change a few further plot options to obtain a visually pleasing result. For example, the dodge argument controls the spread of points belonging to different levels of the trace factor at each x-axis position.

  1. Default background geom.
  2. Add jitter on the y-axis to points which avoids perfect overlap.
  3. Size of points show number of data points at a given y-axis position: geom_count. For this geom, adding a call to scale_size_area() can sometimes be beneficial.
  4. Violin plot: geom_violin
  5. Box plot: geom_boxplot. Note that for this plot we have added linetype = 1 to data_arg, which avoids that the outline of the box plots is affected by the linetype mapping (compare this with the violin plot where the outline of the violin differs across levels of the angle factor).
  6. Display points using a bee swarm plot, which displaces overlapping points on the x-axis: ggbeeswarm::geom_beeswarm
  7. Display points using a variant of the bee swarm plot in which points are jittered horizontally to show the shape of the distribution in the same way as the violin plot: ggbeeswarm::geom_quasirandom
  8. Combine box plot with jittered points: ggpol::geom_boxjitter
p0 <- afex_plot(aw, x = "noise", trace = "angle", error = "within")
p1 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.3,
                data_arg = list(
                  position = 
                    ggplot2::position_jitterdodge(
                      jitter.width = 0, 
                      jitter.height = 25, 
                      dodge.width = 0.3  ## needs to be same as dodge
                    )))
p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5,
                data_geom = geom_count)
p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", 
                data_geom = geom_violin, 
                data_arg = list(width = 0.5))
p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", 
                data_geom = geom_boxplot, 
                data_arg = list(width = 0.3, linetype = 1))
p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5,
                data_geom = ggbeeswarm::geom_beeswarm,
                data_arg = list(
                  dodge.width = 0.5,  ## needs to be same as dodge
                  cex = 0.8))
p6 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5,
                data_geom = ggbeeswarm::geom_quasirandom,
                data_arg = list(
                  dodge.width = 0.5,  ## needs to be same as dodge
                  cex = 0.8,
                  width = 0.05  ## choose small value so data points are not overlapping 
                ))
p7 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, 
                data_geom = ggpol::geom_boxjitter, 
                data_arg = list(
                  width = 0.5, 
                  jitter.params = list(width = 0, height = 10),
                  outlier.intersect = TRUE),
                point_arg = list(size = 2.5), 
                error_arg = list(linewidth = 1.5, width = 0))
plot_grid(p0, p1, p2, p3, p4, p5, p6, p7, ncol = 2, labels = 1:8)  

Multiple Geoms

We can also use multiple geoms to plot the data in the background. To do so, we need to pass a list of geoms to data_geom. We can then also set by-geom additional arguments by passing a list of arguments to data_arg.

For example, we can combine a violin plot, drawing the outline of the shape of the distribution, with geom_quasirandom, showing each individual data point in the same shape.

afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5,
          data_geom = list(
            geom_violin, 
            ggbeeswarm::geom_quasirandom
          ),
          data_arg = list(
            list(draw_quantiles = c(0.25, 0.5, 0.75)),
            list(dodge.width = 0.5, width = 0.05)
          ))

Adding Color to Plots

So far, all plots were shown in black and white only. However, it is easy to include color. We do so for some of the plots from above. To achieve this, we have to change the value of the mapping argument.

p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5,
                mapping = c("shape", "color"),
                data_geom = ggbeeswarm::geom_beeswarm,
                data_arg = list(
                  dodge.width = 0.5,  ## needs to be same as dodge
                  cex = 0.8))
p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", 
                mapping = c("linetype", "shape", "fill"),
                data_geom = ggplot2::geom_violin, 
                data_arg = list(width = 0.5))
p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", 
                mapping = c("shape", "fill"),
                data_geom = ggplot2::geom_boxplot, 
                data_arg = list(width = 0.3))
p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7,
                mapping = c("shape", "fill"),
                data_geom = ggpol::geom_boxjitter, 
                data_arg = list(
                  width = 0.5, 
                  jitter.params = list(width = 0, height = 10),
                  outlier.intersect = TRUE),
                point_arg = list(size = 2.5), 
                line_arg = list(linetype = 0),
                error_arg = list(linewidth = 1.5, width = 0))
plot_grid(p2, p3, p4, p5, ncol = 2) 

Plotting Order and Error Bars

For graphical elements in the foreground, afex_plot() first plots all graphical elements belonging to the same factor level before plotting graphical elements belonging to different factor levels. This provides a consistent graphical impression for each factor level that is particularly relevant in case color is mapped.

In case we have overlapping lines and error bars or use thick lines, we sometimes do not want that the error bars also receive different line types. In this case, we can simply pass linetype = 1 to error_arg to overwrite the corresponding mapping. This is shown in the right plot.

p1 <- afex_plot(aw, x = "noise", trace = "angle", mapping = c("color"), 
                error = "within", 
                point_arg = list(size = 5), line_arg = list(size = 2),
                error_arg = list(linewidth = 2))
p2 <- afex_plot(aw, x = "noise", trace = "angle", 
                mapping = c("color", "shape", "linetype"), 
                error = "within", 
                point_arg = list(size = 5), line_arg = list(size = 2),
                error_arg = list(linewidth = 2, width = 0, linetype = 1))
plot_grid(p1, p2, ncol = 2)

One-way Plots Without Trace Factor

If afex_plot() is called without a trace factor, a one-way plot is created. We can customize this plot in very much the same way. Per default a one-way plot contains a legend if mapping is not empty (i.e., ""). We show this legend for the left plot, but suppress it for the right one via theme(legend.position="none").

po1 <- afex_plot(aw, x = "angle", mapping = "color", error = "within", 
                 point_arg = list(size = 2.5), 
                 error_arg = list(linewidth = 1.5, width = 0.05)) 
po2 <- afex_plot(aw, x = "angle", error = "within", 
                 data_geom = ggpol::geom_boxjitter, 
                 mapping = "fill", data_alpha = 0.7, 
                 data_arg = list(
                   width = 0.6, 
                   jitter.params = list(width = 0.05, height = 10),
                   outlier.intersect = TRUE
                 ),
                 point_arg = list(size = 2.5), 
                 error_arg = list(linewidth = 1.5, width = 0.05)) +
  theme(legend.position="none")
plot_grid(po1, po2) 

One-way plots can also be split across different panels by specifying a panel factor:

afex_plot(aw, x = "angle", panel = "noise", error = "within",
          data_geom = ggpol::geom_boxjitter,
          mapping = "fill", data_alpha = 0.7,
          data_arg = list(
            width = 0.6,
            jitter.params = list(width = 0.05, height = 10),
            outlier.intersect = TRUE
          ),
          point_arg = list(size = 2.5),
          error_arg = list(linewidth = 1.5, width = 0.05)) +
  theme(legend.position="none")

Sometimes we still want to add a line connecting the estimated marginal means. As afex_plot() returns a ggplot2 object, we can do this easily by adding a geom_line object to the call. As we want to add a line through all of the shown points in the foreground, we need to add the corresponding groups aesthetics to this call: geom_line(aes(group = 1)). We can add further arguments to this call, as shown in the left panel below.

plot_grid(
  po1 + geom_line(aes(group = 1), color = "darkgrey", size = 1.5), 
  po2 + geom_line(aes(group = 1))
) 
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.

3-Way Mixed Model

Data and Model

To exemplify the support for linear mixed models, we will use the data from Freeman and colleagues also discussed in the mixed model vignette. These data are lexical decision and word naming latencies for 300 words and 300 nonwords from 45 participants presented in Freeman et al. (2010). The dependent variable we are interested in is log RTs.

We look at the same model also discussed in the vignette, with factors task (between participants, but within items), stimulus (within participants, but between items), density (within participants, but between items), and frequency (within participants, but between items), for a total of almost 13,000 observations. We fit the model with crossed-random effects for participants (id) and items using the final model, m9s, as discussed in the mixed model vignette.

data("fhch2010") # load 
fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors
m9s <- mixed(log_rt ~ task*stimulus*density*frequency + 
               (stimulus+frequency||id)+
               (task|item), fhch, method = "S", 
             control = lmerControl(optCtrl = list(maxfun = 1e6)), 
             expand_re = TRUE)

Note that going forward, we disable calculation of degrees of freedom for emmeans as this speeds up computation and/or avoids messages we are currently not interested in.

emmeans::emm_options(lmer.df = "asymptotic")

The ANOVA table of the mixed model indicates that the three-way interaction task:stimulus:frequency is significant on which we focus in the following.

m9s
## Mixed Model Anova Table (Type 3 tests, S-method)
## 
## Model: log_rt ~ task * stimulus * density * frequency + (stimulus + 
## Model:     frequency || id) + (task | item)
## Data: fhch
##                             Effect        df          F p.value
## 1                             task  1, 43.51  13.68 ***   <.001
## 2                         stimulus  1, 50.57 151.38 ***   <.001
## 3                          density 1, 584.58       0.36    .547
## 4                        frequency  1, 70.27       0.56    .456
## 5                    task:stimulus  1, 51.50  71.32 ***   <.001
## 6                     task:density 1, 578.72  17.89 ***   <.001
## 7                 stimulus:density 1, 584.60       1.19    .275
## 8                   task:frequency  1, 74.09  82.77 ***   <.001
## 9               stimulus:frequency 1, 584.78  63.29 ***   <.001
## 10               density:frequency 1, 584.62       0.11    .742
## 11           task:stimulus:density 1, 578.74  14.87 ***   <.001
## 12         task:stimulus:frequency 1, 578.91 124.16 ***   <.001
## 13          task:density:frequency 1, 578.75     5.93 *    .015
## 14      stimulus:density:frequency 1, 584.64     4.62 *    .032
## 15 task:stimulus:density:frequency 1, 578.77  11.72 ***   <.001
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

Which Data to Plot in the Background

For mixed models, one important decision is the random-effects grouping factor(s) based on which the raw data plotted in the background is aggregated. This decision is necessary, because without such a factor, there would only be one observation for each cell of the design (unless the full design is considered). In the default setting, with id missing, the combination of all random-effects grouping factors is used.

afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task") 
## Aggregating data over: item, id
## NOTE: Results may be misleading due to involvement in interactions

In the present case, a message informs us that the data is aggregated over both random-effects grouping factors. However, this leads to way too many data points in the background. Let us compare this plot with plots in which we use each of the two random-effects grouping factors in turn.

plot_grid( 
  afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", 
            id = "id"), 
  afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", 
            id = "item"), 
  labels = c("ID", "Item") 
)
## NOTE: Results may be misleading due to involvement in interactions
## NOTE: Results may be misleading due to involvement in interactions

The by-id plot looks usable. However, the by-item plot has still way too many data-points to be informative. Some other ways of displaying the raw data, such as violin plots or box plots, seems preferable for it.

Ways of Plotting Data in the Background

We compare violin plots or box plots for the by-item data in the next plot. For the box plot, we increase the width of the error bars and use a consistent line type to distinguish them more easily from the graphical elements of the box plot. We could probably further improve these plots by, for example, adding colors or using some of the other customizations discussed above for the ANOVA example.

plot_grid( 
  afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", 
            id = "item", dodge = 0.8,
            data_geom = geom_violin, 
            data_arg = list(width = 0.5)), 
  afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", 
            id = "item", dodge = 0.8,
            data_geom = geom_boxplot, 
            data_arg = list(width = 0.5),
            error_arg = list(linewidth = 1.5, width = 0, linetype = 1))
)
## NOTE: Results may be misleading due to involvement in interactions
## NOTE: Results may be misleading due to involvement in interactions

Error Bars for Mixed Models

The default error bars for afex_plot() are based on the statistical model (i.e., the mixed model in the present case). These error bars can only be used to judge whether or not two means differ from each other, if the corresponding factor (or factors) are independent samples factors (i.e., not repeated-measures factors for any of the random-effects grouping factors). Of course, in addition to this the requirement of approximately equal sample size and variance also needs to hold. In the present case, all of the factors are repeated-measures factors with respect to one of the random-effects grouping factors. Consequently, the default error bars cannot be used for “inference by eye” for any of the factors.

This is also easy to see when looking at all pairwise comparisons between means for each of the panels/tasks. This shows that for the naming task all comparisons are significant. In visual contrast with that, the two error bars for the low versus high words are overlapping very strongly.

pairs(emmeans::emmeans(mrt, c("stimulus", "frequency"), by = "task"))
## task = naming:
##  contrast                   estimate     SE  df z.ratio p.value
##  word low - nonword low      -0.1804 0.0236 Inf  -7.637  <.0001
##  word low - word high         0.0588 0.0149 Inf   3.941  0.0005
##  word low - nonword high     -0.3874 0.0250 Inf -15.515  <.0001
##  nonword low - word high      0.2392 0.0250 Inf   9.583  <.0001
##  nonword low - nonword high  -0.2070 0.0150 Inf -13.823  <.0001
##  word high - nonword high    -0.4462 0.0236 Inf -18.880  <.0001
## 
## task = lexdec:
##  contrast                   estimate     SE  df z.ratio p.value
##  word low - nonword low      -0.0812 0.0235 Inf  -3.461  0.0030
##  word low - word high         0.0635 0.0167 Inf   3.807  0.0008
##  word low - nonword high      0.0297 0.0245 Inf   1.213  0.6188
##  nonword low - word high      0.1447 0.0245 Inf   5.910  <.0001
##  nonword low - nonword high   0.1109 0.0167 Inf   6.619  <.0001
##  word high - nonword high    -0.0339 0.0233 Inf  -1.451  0.4676
## 
## Results are averaged over the levels of: density 
## Degrees-of-freedom method: asymptotic 
## P value adjustment: tukey method for comparing a family of 4 estimates

An alternative in the present situation would be using within-subjects error bars and aggregating the data by-id (i.e., error = "within"), as done in the left panel below. This is somewhat appropriate here as the factors within each panel are all within-subject factors. In contrast, using by-item within-subjects error bars, as done in the right panel below, seems not appropriate as the only within-item factor, task, is spread across panels. Unfortunately, it is not immediately clear if these error bars allow one to correctly detect which means do not differ from each other.

plot_grid( 
  afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", 
            id = "id", error = "within"),
  afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", 
            id = "item", dodge = 0.8, error = "within",
            data_geom = geom_violin, 
            data_arg = list(width = 0.5))
)

In sum, using error bars for performing “inference by eye” - that is, using overlap or non-overlap of error bars to judge which means differ or do not differ from each other - is highly problematic for mixed models, due to the potentially complex dependency structures between the means. It would be best to avoid comparisons between means altogether. Instead, it is perhaps a good idea to plot the model-based error bars (which is the default) and use them for their intended purpose; judging which values of the estimated means are likely given what we have learned from the model (however, note that one cannot interpret a 95% confidence interval as having a 95% probability of containing the population mean).

The help page ?afex_plot contains further information and references on how to interpret confidence intervals and other error bars.

References

  • Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. Journal of Memory and Language, 62(1), 1-18. https://doi.org/10.1016/j.jml.2009.09.004
  • Maxwell, S. E., & Delaney, H. D. (2004). Designing Experiments and Analyzing Data: A Model-Comparisons Perspective. Mahwah, N.J.: Lawrence Erlbaum Associates.
afex/inst/doc/afex_plot_introduction.Rmd0000644000176200001440000007057014665062330020163 0ustar liggesusers--- title: "afex_plot: Publication Ready Plots for Experimental Designs" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{afex_plot: Publication Ready Plots for Experimental Designs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "ggplot2", "cowplot", "ggbeeswarm", "ggpol") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} op <- options(width = 90) knitr::opts_chunk$set(dpi=72) ``` `afex_plot()` visualizes results from factorial experiments combining estimated marginal means and uncertainties associated with the estimated means in the foreground with a depiction of the raw data in the background. Currently, `afex_plot()` supports the following models: - ANOVAs estimated with `aov_car()`, `aov_ez()`, or `aov_4()` (i.e., objects of class `"afex_aov"`) - Linear mixed models estimated with `mixed()` (i.e., objects of class `"mixed"`) - Linear mixed models estimated with `lme4::lmer` (i.e., objects of class `"merMod"`) - Models with `emmeans` support. For some examples see `vignette("afex_plot_supported_models", package = "afex")` This document provides an overview of the plots possible with `afex_plot()`. It does so mostly using the `afex_plot()` examples, see `?afex_plot`. We begin by loading `afex` and [`ggplot2`](https://ggplot2.tidyverse.org/) which is the package `afex_plot()` uses for plotting. Loading `ggplot2` explicitly is not strictly necessary, but makes the following code nicer. Otherwise, we would need to prepend each call to a function from `ggplot2` needed for customization with `ggplot2::` (as is done in the examples in `?afex_plot`). We also load the [`cowplot`](https://cran.r-project.org/package=cowplot) package ([introduction](https://cran.r-project.org/package=cowplot/vignettes/introduction.html)) which makes combining plots (with functions `plot_grid()` and `legend()`) very easy. However, loading `cowplot` sets a different theme for `ggplot2` plots than the default grey one. Although I am not a big fan of the default theme with its grey background, we reset the theme globally using `theme_set(theme_grey())` to start with the default behavior if `cowplot` is not attached. Note that `cowplot` also has the cool `draw_plot()` function which allows embedding plots within other plots. We furthermore will need the following packages, however, we will not attach them directly, but only call a few selected functions using the `package::function` notation. - [`jtools`](https://cran.r-project.org/package=jtools) for `theme_apa()` - [`ggpubr`](https://cran.r-project.org/package=jtools) for `theme_pubr()` - [`ggbeeswarm`](https://cran.r-project.org/package=ggbeeswarm) for producing bee swarm plots with `geom_beeswarm` - [`ggpol`](https://cran.r-project.org/package=ggpol) for producing combined box plots and jitter plots using `geom_boxjitter` ```{r message=FALSE, warning=FALSE} library("afex") library("ggplot2") library("cowplot") theme_set(theme_grey()) ``` # Two-Way Within-Subjects ANOVA We begin with a two-way within-subjects ANOVA using synthetic data from Maxwell and Delaney (2004, p. 547). The data are hypothetical reaction times from a 2 x 3 Perceptual Experiment with factors `angle` with 3 levels and factor `noise` with 2 levels (see `?md_12.1` for a longer description). We first load the data and then fit the corresponding ANOVA. ```{r} data(md_12.1) (aw <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"))) ``` The ANOVA shows that both, the two main effect as well as the interaction, are significant. We therefore inspect the pattern underlying the interaction. There exist two different ways of plotting a 2-way interaction. Either of the two variables can be depicted on the x-axis. And before having looked at both cases, it is often not clear which visualization of the interaction is more instructive. Consequently, we plot both next to each other. For this we simply need to exchange which variable is the `x` factor and which is the `trace` factor. We then use `plot_grid()` to plot them next to each other. ## Basic Plot ```{r fig.width=9, fig.height=4} p_an <- afex_plot(aw, x = "angle", trace = "noise") p_na <- afex_plot(aw, x = "noise", trace = "angle") plot_grid(p_an, p_na) ## try adding: labels = "AUTO" ``` Before we can even take a look at the plot, we notice that creating the plots has produced two warnings. These warnings complain that the plots depict within-subject factors, but do not use within-subject error bars. However, the warnings also tell us the solution (i.e., adding `error = "within"`), which we will do in the following. The help page `?afex_plot` contains more information on which type of error bars are appropriate in which situation and how to interpret different type of error bars. For ANOVAs, `afex_plot()` will emit warnings if it thinks the error bars are not appropriate for the chosen factors. Comparing both plots, my impression is that the plot with `angle` on the `x`-axis tells the clearer story. We can see that when `noise` is `absent` there is hardly any effect of the increase of `angle`. However, if `noise` is `present` an increasing `angle` clearly leads to increased RTs. We therefore use this plot in the following. ## Exploring Graphical Options and Themes We now produce a new variant of the left plot using more appropriate error bars and change several other graphical details which make the plot publication ready. We use the `factor_levels` argument to `afex_plot()` for renaming the factor levels (for technical reasons the ANOVA functions in `afex` transform all factor levels to proper `R` variable names using `make.names()` which changed the labels from e.g., `4` to `X4`) and the `legend_title` argument for changing the title of the legend. We also change the labels on the `x` and `y` axis. ```{r} p_an <- afex_plot(aw, x = "angle", trace = "noise", error = "within", factor_levels = list(angle = c("0°", "4°", "8°"), noise = c("Absent", "Present")), legend_title = "Noise") + labs(y = "RTs (in ms)", x = "Angle (in degrees)") ``` As the additional output shows, changing the factor levels via `factor_levels` emits a `message` detailing old and new factor levels in the form `old -> new`. This message can be suppressed by wrapping the `afex_plot()` call into a `suppressMessages()` call or via `RMarkdown` settings. Note that we could have also used the `factor_levels` argument for changing the order of the factor levels by passing a named character vector (e.g., `factor_levels = list(angle = c(X8 = "8°", X4 = "4°", X0 = "0°"))`). This would change the order either on the x-axis or in the legend. As said above, I am not a big fan of the default grey theme of `ggplot2` plots. Consequently, we compare a number of different themes for this plot in the following. For all but `ggpubr::theme_pubr()`, we also move the legend to the bottom as this better allows the plot to cover only a single column in a two-column layout. `ggpubr::theme_pubr()` automatically plots the legend on top. ```{r fig.width=8.5, fig.height=6, dpi = 150} plot_grid( p_an + theme_bw() + theme(legend.position="bottom"), p_an + theme_light() + theme(legend.position="bottom"), p_an + theme_minimal() + theme(legend.position="bottom"), p_an + jtools::theme_nice() + theme(legend.position="bottom"), p_an + ggpubr::theme_pubr(), p_an + theme_cowplot() + theme(legend.position="bottom"), labels = "AUTO" ) ``` The first row, panels A to C, shows themes coming with `ggplot2` and the second row, panels D to F, shows themes from additional packages. In my opinion all of these plots are an improvement above the default grey theme. For the themes coming with `ggplot2`, I really like that those shown here have a reference grid in the background. This often makes it easier to judge the actual values the shown data points have. I know that many people find this distracting, so many of the contributed themes do not have this grid. One thing I really like about the last two themes is that they per default use larger font sizes for the axes labels. One way to achieve something similar for most themes is to change `base_size` (see example below). One general criticism I have with the current plots is that they show too many values on the y-axis. In the following I plot one more variant of this plot in which we change this to three values on the y-axis. We also increase the axes labels and remove the vertical grid lines. ```{r fig.width=3.5, fig.height=3, dpi = 100, out.width='50%'} p_an + scale_y_continuous(breaks=seq(400, 900, length.out = 3)) + theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank()) ``` We can also set this theme for the remainder of the `R` session with `theme_set()`. ```{r} theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) ``` ## Saving Plots and Plot Sizes To get our plot into a publication, we need to export it as a graphics file. I would generally advise against exporting plots via the `RStudio` interface as this is not reproducible. Instead I would use some of the following functions which save the document in the current working directory. Note that following [Elsevier guidelines](https://www.elsevier.com/about/policies-and-standards/author/artwork-and-media-instructions/artwork-sizing), a single column figure should have a width of 9 cm (~ 3 inch) and a two column figure should have a width of 19 cm (~ 7.5 inch). For Word or similar documents I would export the plot as a `png` (never `jpg`): ```{r, eval=FALSE} ggsave("my_plot.png", device = "png", width = 9, height = 8, units = "cm", dpi = 600) ## the larger the dpi, the better the resolution ``` For `LaTeX` I would export as `pdf`: ```{r, eval=FALSE} ggsave("my_plot.pdf", device = "pdf", width = 9, height = 8, units = "cm") ``` ## Data in the Background `afex_plot()` per default plots the raw data in the background. It does so using an [alpha blending](https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending) of `0.5`. Thus, overlapping points appear darker. Examples of this can be seen in the previous graphs where some data points in the background appear clearly darker than others. The darker points indicate values for which several data points lie exactly on top of each other. `afex_plot()` provides the possibility to change or alter the graphical primitive, called `geom` in `ggplot2` parlance, used for plotting the points in the background. This offers a vast array of options for handling overlapping points or, more generally, how to display the raw data in the background. Let's take a look at some of these examples in the following. ### Single Geom The simplest way for showing the data in the background is using a single geom, like in the default setting. The following figure shows eight different variants of a single geom. The plot in the top left shows the default variant. The first alternative variant adds vertical jitter to the points to make the overplotting clearer. The other alternatives use other geoms. Note that depending on the specific variant we change a few further plot options to obtain a visually pleasing result. For example, the `dodge` argument controls the spread of points belonging to different levels of the `trace` factor at each x-axis position. 1. Default background geom. 1. Add jitter on the y-axis to points which avoids perfect overlap. 3. Size of points show number of data points at a given y-axis position: `geom_count`. For this geom, adding a call to `scale_size_area()` can sometimes be beneficial. 3. Violin plot: `geom_violin` 4. Box plot: `geom_boxplot`. Note that for this plot we have added `linetype = 1` to `data_arg`, which avoids that the outline of the box plots is affected by the `linetype` mapping (compare this with the violin plot where the outline of the violin differs across levels of the angle factor). 2. Display points using a bee swarm plot, which displaces overlapping points on the x-axis: `ggbeeswarm::geom_beeswarm` 2. Display points using a variant of the bee swarm plot in which points are jittered horizontally to show the shape of the distribution in the same way as the violin plot: `ggbeeswarm::geom_quasirandom` 5. Combine box plot with jittered points: `ggpol::geom_boxjitter` ```{r fig.width=8.5, fig.height=16, dpi = 125} p0 <- afex_plot(aw, x = "noise", trace = "angle", error = "within") p1 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 25, dodge.width = 0.3 ## needs to be same as dodge ))) p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = geom_count) p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = geom_violin, data_arg = list(width = 0.5)) p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = geom_boxplot, data_arg = list(width = 0.3, linetype = 1)) p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) p6 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.05 ## choose small value so data points are not overlapping )) p7 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0)) plot_grid(p0, p1, p2, p3, p4, p5, p6, p7, ncol = 2, labels = 1:8) ``` ### Multiple Geoms We can also use multiple geoms to plot the data in the background. To do so, we need to pass a list of geoms to `data_geom`. We can then also set by-geom additional arguments by passing a list of arguments to `data_arg`. For example, we can combine a violin plot, drawing the outline of the shape of the distribution, with `geom_quasirandom`, showing each individual data point in the same shape. ```{r fig.width=3.5, fig.height=3, dpi = 100, out.width='50%'} afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = list( geom_violin, ggbeeswarm::geom_quasirandom ), data_arg = list( list(draw_quantiles = c(0.25, 0.5, 0.75)), list(dodge.width = 0.5, width = 0.05) )) ``` ## Adding Color to Plots So far, all plots were shown in black and white only. However, it is easy to include color. We do so for some of the plots from above. To achieve this, we have to change the value of the `mapping` argument. ```{r fig.width=8.5, fig.height=8, dpi = 125} p2 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, mapping = c("shape", "color"), data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) p3 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("linetype", "shape", "fill"), data_geom = ggplot2::geom_violin, data_arg = list(width = 0.5)) p4 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("shape", "fill"), data_geom = ggplot2::geom_boxplot, data_arg = list(width = 0.3)) p5 <- afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, mapping = c("shape", "fill"), data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), line_arg = list(linetype = 0), error_arg = list(linewidth = 1.5, width = 0)) plot_grid(p2, p3, p4, p5, ncol = 2) ``` ## Plotting Order and Error Bars For graphical elements in the foreground, `afex_plot()` first plots all graphical elements belonging to the same factor level before plotting graphical elements belonging to different factor levels. This provides a consistent graphical impression for each factor level that is particularly relevant in case color is mapped. In case we have overlapping lines and error bars or use thick lines, we sometimes do not want that the error bars also receive different line types. In this case, we can simply pass `linetype = 1` to `error_arg` to overwrite the corresponding mapping. This is shown in the right plot. ```{r fig.width=8.5, fig.height=4, dpi = 150} p1 <- afex_plot(aw, x = "noise", trace = "angle", mapping = c("color"), error = "within", point_arg = list(size = 5), line_arg = list(size = 2), error_arg = list(linewidth = 2)) p2 <- afex_plot(aw, x = "noise", trace = "angle", mapping = c("color", "shape", "linetype"), error = "within", point_arg = list(size = 5), line_arg = list(size = 2), error_arg = list(linewidth = 2, width = 0, linetype = 1)) plot_grid(p1, p2, ncol = 2) ``` ## One-way Plots Without Trace Factor If `afex_plot()` is called without a trace factor, a one-way plot is created. We can customize this plot in very much the same way. Per default a one-way plot contains a legend if `mapping` is not empty (i.e., `""`). We show this legend for the left plot, but suppress it for the right one via `theme(legend.position="none")`. ```{r fig.width=7, fig.height=3.5, message=FALSE} po1 <- afex_plot(aw, x = "angle", mapping = "color", error = "within", point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) po2 <- afex_plot(aw, x = "angle", error = "within", data_geom = ggpol::geom_boxjitter, mapping = "fill", data_alpha = 0.7, data_arg = list( width = 0.6, jitter.params = list(width = 0.05, height = 10), outlier.intersect = TRUE ), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) + theme(legend.position="none") plot_grid(po1, po2) ``` One-way plots can also be split across different panels by specifying a `panel` factor: ```{r fig.width=7, fig.height=3.5, message=FALSE} afex_plot(aw, x = "angle", panel = "noise", error = "within", data_geom = ggpol::geom_boxjitter, mapping = "fill", data_alpha = 0.7, data_arg = list( width = 0.6, jitter.params = list(width = 0.05, height = 10), outlier.intersect = TRUE ), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) + theme(legend.position="none") ``` Sometimes we still want to add a line connecting the estimated marginal means. As `afex_plot()` returns a `ggplot2` object, we can do this easily by adding a `geom_line` object to the call. As we want to add a line through all of the shown points in the foreground, we need to add the corresponding groups aesthetics to this call: `geom_line(aes(group = 1))`. We can add further arguments to this call, as shown in the left panel below. ```{r fig.width=7, fig.height=3.5, message=FALSE} plot_grid( po1 + geom_line(aes(group = 1), color = "darkgrey", size = 1.5), po2 + geom_line(aes(group = 1)) ) ``` # 3-Way Mixed Model ## Data and Model ```{r, echo=FALSE} load(system.file("extdata/", "output_afex_plot_mixed_vignette_model.rda", package = "afex")) ``` To exemplify the support for linear mixed models, we will use the data from Freeman and colleagues also discussed in the [mixed model vignette](https://cran.r-project.org/package=afex/vignettes/afex_mixed_example.html). These data are lexical decision and word naming latencies for 300 words and 300 nonwords from 45 participants presented in Freeman et al. (2010). The dependent variable we are interested in is `log` RTs. We look at the same model also discussed in the vignette, with factors `task` (between participants, but within items), `stimulus` (within participants, but between items), `density` (within participants, but between items), and `frequency` (within participants, but between items), for a total of almost 13,000 observations. We fit the model with crossed-random effects for participants (`id`) and `item`s using the final model, `m9s`, as discussed in the mixed model vignette. ```{r, eval=FALSE} data("fhch2010") # load fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors m9s <- mixed(log_rt ~ task*stimulus*density*frequency + (stimulus+frequency||id)+ (task|item), fhch, method = "S", control = lmerControl(optCtrl = list(maxfun = 1e6)), expand_re = TRUE) ``` Note that going forward, we disable calculation of degrees of freedom for `emmeans` as this speeds up computation and/or avoids messages we are currently not interested in. ```{r} emmeans::emm_options(lmer.df = "asymptotic") ``` The ANOVA table of the mixed model indicates that the three-way interaction `task:stimulus:frequency` is significant on which we focus in the following. ```{r, eval=TRUE} m9s ``` ## Which Data to Plot in the Background For mixed models, one important decision is the random-effects grouping factor(s) based on which the raw data plotted in the background is aggregated. This decision is necessary, because without such a factor, there would only be one observation for each cell of the design (unless the full design is considered). In the default setting, with `id` missing, the combination of all random-effects grouping factors is used. ```{r fig.width=7, fig.height=3.5, eval=TRUE} afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task") ``` In the present case, a message informs us that the data is aggregated over both random-effects grouping factors. However, this leads to way too many data points in the background. Let us compare this plot with plots in which we use each of the two random-effects grouping factors in turn. ```{r fig.width=7, fig.height=3.5, eval=TRUE} plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "id"), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item"), labels = c("ID", "Item") ) ``` The by-id plot looks usable. However, the by-item plot has still way too many data-points to be informative. Some other ways of displaying the raw data, such as violin plots or box plots, seems preferable for it. ## Ways of Plotting Data in the Background We compare violin plots or box plots for the by-item data in the next plot. For the box plot, we increase the width of the error bars and use a consistent line type to distinguish them more easily from the graphical elements of the box plot. We could probably further improve these plots by, for example, adding colors or using some of the other customizations discussed above for the ANOVA example. ```{r fig.width=7, fig.height=3.5, eval=TRUE} plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, data_geom = geom_violin, data_arg = list(width = 0.5)), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, data_geom = geom_boxplot, data_arg = list(width = 0.5), error_arg = list(linewidth = 1.5, width = 0, linetype = 1)) ) ``` ## Error Bars for Mixed Models The default error bars for `afex_plot()` are based on the statistical model (i.e., the mixed model in the present case). These error bars can only be used to judge whether or not two means differ from each other, if the corresponding factor (or factors) are independent samples factors (i.e., not repeated-measures factors for any of the random-effects grouping factors). Of course, in addition to this the requirement of approximately equal sample size and variance also needs to hold. In the present case, all of the factors are repeated-measures factors with respect to one of the random-effects grouping factors. Consequently, the default error bars cannot be used for "inference by eye" for any of the factors. This is also easy to see when looking at all pairwise comparisons between means for each of the panels/tasks. This shows that for the `naming` task all comparisons are significant. In visual contrast with that, the two error bars for the `low` versus `high` `word`s are overlapping very strongly. ```{r, eval=FALSE} pairs(emmeans::emmeans(mrt, c("stimulus", "frequency"), by = "task")) ``` ```{r, echo=FALSE} cat(aout_2$output, sep = "\n") ``` An alternative in the present situation would be using within-subjects error bars and aggregating the data by-id (i.e., `error = "within"`), as done in the left panel below. This is somewhat appropriate here as the factors within each panel are all within-subject factors. In contrast, using by-item within-subjects error bars, as done in the right panel below, seems not appropriate as the only within-item factor, `task`, is spread across panels. Unfortunately, it is not immediately clear if these error bars allow one to correctly detect which means do not differ from each other. ```{r fig.width=7, fig.height=3.5, eval=FALSE} plot_grid( afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "id", error = "within"), afex_plot(m9s, x = "stimulus", trace = "frequency", panel = "task", id = "item", dodge = 0.8, error = "within", data_geom = geom_violin, data_arg = list(width = 0.5)) ) ``` In sum, using error bars for performing "inference by eye" - that is, using overlap or non-overlap of error bars to judge which means differ or do not differ from each other - is highly problematic for mixed models, due to the potentially complex dependency structures between the means. It would be best to avoid comparisons between means altogether. Instead, it is perhaps a good idea to plot the model-based error bars (which is the default) and use them for their intended purpose; judging which values of the estimated means are likely given what we have learned from the model (however, note that one cannot interpret a 95% confidence interval as having a 95% probability of containing the population mean). The help page `?afex_plot` contains further information and references on how to interpret confidence intervals and other error bars. # References * Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. _Journal of Memory and Language_, 62(1), 1-18. https://doi.org/10.1016/j.jml.2009.09.004 * Maxwell, S. E., & Delaney, H. D. (2004). _Designing Experiments and Analyzing Data: A Model-Comparisons Perspective._ Mahwah, N.J.: Lawrence Erlbaum Associates. ```{r, include=FALSE} options(op) ``` afex/inst/doc/afex_plot_supported_models.Rmd0000644000176200001440000004510514665062335021033 0ustar liggesusers--- title: "afex_plot: Supported Models" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{afex_plot: Supported Models} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, echo=FALSE} req_suggested_packages <- c("emmeans", "ggplot2", "cowplot", "ggbeeswarm", "ggpol", "nlme", "glmmTMB", "rstanarm", "brms", "MEMSS") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r set-options, echo=FALSE, cache=FALSE} options(width = 90) knitr::opts_chunk$set(dpi=72) knitr::knit_hooks$set(document = function(x){ gsub("```\n*```r*\n*", "", x) }) ``` # Introduction `afex_plot()` visualizes results from factorial experiments and, more generally, data set with interactions of categorical/factor variables. It does so by combining estimated marginal means and uncertainties associated with these means in the foreground with a depiction of the raw data in the background. If models include continuous covariates, other approaches are recommended (e.g., such as implemented in package [`effects`](https://cran.r-project.org/package=effects) or by using the possibility of `afex_plot` [to return the data and build the plot on ones own](https://github.com/singmann/afex/issues/65)). This document provides an overview of the different models supported by `afex_plot()` in addition to the `afex` objects (i.e., `afex_aov` and `mixed`). In general, these are models which are supported by the [`emmeans`](https://cran.r-project.org/package=emmeans) package as the `afex_plot.default()` method uses `emmeans` to get the estimated marginal means. `afex_plot.default()` then guesses whether there are repeated measures or all samples are independent. Based on this guess (which can be changed via the `id` argument) data in the background is plotted. Calculation of error bars can also be based on this guess (but the default is to plot the model based error bars obtained from `emmeans`). For a generally introduction to the functionality of `afex_plot` see: [`afex_plot`: Publication Ready Plots for Experimental Designs](afex_plot_introduction.html) Throughout the document, we will need `afex` as well as `ggplot2`. In addition, we load [`cowplot`](https://cran.r-project.org/package=cowplot) for function `plot_grid()` (which allows to easily combine multiple `ggplot2` plots). In addition, we will set a somewhat nicer `ggplot2` theme. ```{r message=FALSE, warning=FALSE} library("afex") library("ggplot2") library("cowplot") theme_set(theme_bw(base_size = 14) + theme(legend.position="bottom", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())) ``` Importantly, we also set the contrasts for the current `R` session to sum-to-zero contrasts. For models that include interactions with categorical variables this generally produces estimates that are easier to interpret. ```{r} set_sum_contrasts() ``` Please note, the best way to export a figure is via `ggsave()` or a similar function call. For Word and similar document formats, `png` is a good file type, for `LaTeX` and similar document formats, `pdf` is a good file type. # Base R stats models: lm, glm `afex_plot()` generally supports models implemeneted via the `stats` package. Here I show the main model functions that work with independent samples. These models can be passed to `afex_plot` without specifying additional arguments. Most importantly, `lm` models work directly. For those we use the `warpbreaks` data. ```{r} warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks) ``` Note that `afex_plot` produces several messages that are shown here as comments below the corresponding calls. Important is maybe that `afex_plot` assumes all observations (i.e., rows) are independent. This is of course the case here. In addition, for the first plot we are informed that the presence of an interaction may lead to a misleading impression if only a lower-order effect (here a main effect) is shown. This message is produced by `emmeans` and passed through. ```{r fig.width=7, fig.height=3} p1 <- afex_plot(warp.lm, "tension") p2 <- afex_plot(warp.lm, "tension", "wool") plot_grid(p1, p2) ``` `glm` models also work without further setting. Here we first use a poisson GLM for which we need to generate the data. ```{r} ins <- data.frame( n = c(500, 1200, 100, 400, 500, 300), size = factor(rep(1:3,2), labels = c("S","M","L")), age = factor(rep(1:2, each = 3)), claims = c(42, 37, 1, 101, 73, 14)) ``` We can then fit the data and pass the model object as is. ```{r fig.width=3, fig.height=3} ins.glm <- glm(claims ~ size + age + offset(log(n)), data = ins, family = "poisson") afex_plot(ins.glm, "size", "age") ``` `afex_plot` also works with binomial GLMs for which we also first need to generate some data which we will then fit. ```{r} ## binomial glm adapted from ?predict.glm ldose <- factor(rep(0:5, 2)) numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16) sex <- factor(rep(c("M", "F"), c(6, 6))) SF <- numdead/20 ## dv should be a vector, no matrix budworm.lg <- glm(SF ~ sex*ldose, family = binomial, weights = rep(20, length(numdead))) ``` For this model, we will produce three plots we can then compare. The first only shows the main effect of one variable (`ldose`). The other show the interaction of the two variables. Because for binomial GLMs we then only have one data point (with several observations), the individual data points and mean cannot be distinguished. This is made clear in the ther two (panels B and C). ```{r fig.width=8, fig.height=3} a <- afex_plot(budworm.lg, "ldose") b <- afex_plot(budworm.lg, "ldose", "sex") ## data point is hidden behind mean! c <- afex_plot(budworm.lg, "ldose", "sex", data_arg = list(size = 4, color = "red")) plot_grid(a, b, c, labels = "AUTO", nrow = 1) ``` # nlme mixed model Hot to use `afex_plot` for mixed models fitted with `afex::mixed` (or [`lme4`](https://cran.r-project.org/package=lme4) directly) is shown in the [other vignette](afex_plot_introduction.html). However, we can also use `afex_plot` for mixed models fitted with the older `nlme` package. For this, however we need to pass the data used for fitting via the `data` argument. We can change on which of the two nested factors the individual data points in the background are based via the `id` argument. This is shown below. ```{r fig.width=8, fig.height=6} ## nlme mixed model data(Oats, package = "nlme") Oats$nitro <- factor(Oats$nitro) oats.1 <- nlme::lme(yield ~ nitro * Variety, random = ~ 1 | Block / Variety, data = Oats) plot_grid( afex_plot(oats.1, "nitro", "Variety", data = Oats), # A afex_plot(oats.1, "nitro", "Variety", data = Oats), # B afex_plot(oats.1, "nitro", "Variety", data = Oats, id = "Block"), # C afex_plot(oats.1, "nitro", data = Oats), # D afex_plot(oats.1, "nitro", data = Oats, id = c("Block", "Variety")), # E afex_plot(oats.1, "nitro", data = Oats, id = "Block"), # F labels = "AUTO" ) ``` # glmmTMB Support for [`glmmTMB`](https://cran.r-project.org/package=glmmTMB) is also provided. Here we use an example data set for which we model zero-inflation as well as overdispersion. The latter is achieved with a variant of the negative binomial distribution. ```{r, eval=FALSE} library("glmmTMB") tmb <- glmmTMB(count~spp * mined + (1|site), ziformula = ~spp * mined, family=nbinom2, Salamanders) ``` ```{r, eval=FALSE, include=FALSE} library("glmmTMB") afex::set_sum_contrasts() tmb <- glmmTMB(count~spp * mined + (1|site), ziformula = ~spp * mined, family=nbinom2, Salamanders) save(tmb, file = "inst/extdata/tmb_example_fit.rda", compress = "xz") ``` ```{r, echo=FALSE, include=FALSE} library("glmmTMB") data(Salamanders, package = "glmmTMB") load(system.file("extdata/", "tmb_example_fit.rda", package = "afex")) tmb <- up2date(tmb) ``` `afex_plot` does not automatically detect the random-effect for `site`. This means that per default all 644 data points are shown. When plotting only one variable, in which the default `data_geom` is `ggbeeswarm::geom_beeswarm`, this can lead to rather ugly plots due to the zero inflation. This is shon in panel A below. In panel B, we address this by changing the geom to a violin plot. In panel C, we address this by aggregating the data within site, but still use the beeswarm plot. Note that for panel C it is necessary to pass the data via the `data` argument as otherwise `site` cannot be found for aggregation. ```{r fig.width=8, fig.height=3} plot_grid( afex_plot(tmb, "spp"), afex_plot(tmb, "spp", data_geom = geom_violin), afex_plot(tmb, "spp", id = "site", data = Salamanders), labels = "AUTO", nrow = 1 ) ``` When plotting both variables, the problem is somewhat hidden, because instead of beeswarm plots, semi-transparency (i.e., `alpha` < 1) is used to show overlapping points. In panel B we again make this clearer but this time by adding jitter (on both the y- and x-axis) and increasing the degree of semi-transparancy (i.e., decreasing alpha). ```{r fig.width=8.5, fig.height=3.5} a <- afex_plot(tmb, "spp", "mined") b <- afex_plot(tmb, "spp", "mined", data_alpha = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0.2, jitter.height = 0.5, dodge.width = 0.5 ## needs to be same as dodge ), color = "darkgrey")) plot_grid(a, b, labels = "AUTO") ``` For the final plot we also plot the interaction, but this time aggregate the individual-data within site. This allows us again to use a beeswarm plot (after decreasing the width of the "bees") and produces a relatively clear result. ```{r fig.width=5.5, fig.height=3.5} afex_plot(tmb, "spp", "mined", id = "site", data = Salamanders, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list(dodge.width = 0.5, cex = 0.4, color = "darkgrey") ) ``` # rstanarm `afex_plot()` also supports Bayesian models that are also supported via `emmeans`. For example, we can easily fit a binomial model with [`rstanarm`](https://cran.r-project.org/package=rstanarm). ```{r, eval=FALSE} library("rstanarm") ## requires resetting the ggplot2 theme theme_set(theme_bw(base_size = 14) + theme(legend.position="bottom", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())) cbpp <- lme4::cbpp cbpp$prob <- with(cbpp, incidence / size) example_model <- stan_glmer(prob ~ period + (1|herd), data = cbpp, family = binomial, weight = size, chains = 2, cores = 1, seed = 12345, iter = 500) ``` We can directly pass this model to `afex_plot`. However, we also see quite some zeros leading to a not super nice plot. It looks a bit better using a violin plot for the raw data. ```{r, eval=FALSE} b1 <- afex_plot(example_model, "period") ## dv column detected: prob ## No id column passed. Assuming all rows are independent samples. b2 <- afex_plot(example_model, "period", data_geom = geom_violin) ## dv column detected: prob ## No id column passed. Assuming all rows are independent samples. plot_grid(b1, b2, labels = "AUTO") ``` ```{r fig.width=7, fig.height=3, echo=FALSE} load(system.file("extdata/", "plots_rstanarm.rda", package = "afex")) grid::grid.newpage(); grid::grid.draw(b12) ``` We can also produce a plot based on the individual Bernoulli observations in the data. For this, we first need to expand the data such that we have one row per observation. With this, we can then fit the essentially same model as above. ```{r, eval=FALSE} cbpp_l <- vector("list", nrow(cbpp)) for (i in seq_along(cbpp_l)) { cbpp_l[[i]] <- data.frame( herd = cbpp$herd[i], period = cbpp$period[i], incidence = rep(0, cbpp$size[i]) ) cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1 } cbpp_l <- do.call("rbind", cbpp_l) cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd)) cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period)) example_model2 <- stan_glmer(incidence ~ period + (1|herd), data = cbpp_l, family = binomial, chains = 2, cores = 1, seed = 12345, iter = 500) ``` Again, this model can be directly passed to `afex_plot`. However, here we see even more 0 as the data is not yet aggregated. Consequently, we need to pass `id = "herd"` to aggregate the individual observations within each herd. ```{r, eval=FALSE} b3 <- afex_plot(example_model2, "period") ## dv column detected: incidence ## No id column passed. Assuming all rows are independent samples. b4 <- afex_plot(example_model2, "period", id = "herd") ## dv column detected: incidence plot_grid(b3, b4, labels = "AUTO") ``` ```{r fig.width=7, fig.height=3, echo=FALSE} grid::grid.newpage(); grid::grid.draw(b34) ``` We can of course also fit a model assuming a normal distribution using `rstanarm`. For example using the `Machines` data. ```{r, eval=FALSE} data("Machines", package = "MEMSS") mm <- stan_lmer(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) ``` As before, we can pass this model directly to `afex_plot` (see panel A). However, the data is again not aggregated within the grouping variable `Worker`. If we want to aggregate the individual data points for the grouping factor, we need to pass both the name of the grouping variable (`Worker`) and the data used for fitting. ```{r, eval=FALSE} b5 <- afex_plot(mm, "Machine") ## dv column detected: score ## No id column passed. Assuming all rows are independent samples. b6 <- afex_plot(mm, "Machine", id = "Worker") ## dv column detected: score plot_grid(b5, b6, labels = "AUTO") ``` ```{r fig.width=7, fig.height=3, echo=FALSE} grid::grid.newpage(); grid::grid.draw(b56) ``` ```{r, eval=FALSE, include=FALSE} library("rstanarm") ## requires resetting the ggplot2 theme library("ggplot2") theme_set(theme_bw(base_size = 14) + theme(legend.position="bottom", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())) set_sum_contrasts() cbpp <- lme4::cbpp cbpp$prob <- with(cbpp, incidence / size) example_model <- stan_glmer(prob ~ period + (1|herd), data = cbpp, family = binomial, weight = size, chains = 2, cores = 1, seed = 12345, iter = 500) b1 <- afex_plot(example_model, "period") b2 <- afex_plot(example_model, "period", data_geom = geom_violin) b12 <- ggplotGrob(plot_grid(b1, b2)) cbpp_l <- vector("list", nrow(cbpp)) for (i in seq_along(cbpp_l)) { cbpp_l[[i]] <- data.frame( herd = cbpp$herd[i], period = cbpp$period[i], incidence = rep(0, cbpp$size[i]) ) cbpp_l[[i]]$incidence[seq_len(cbpp$incidence[i])] <- 1 } cbpp_l <- do.call("rbind", cbpp_l) cbpp_l$herd <- factor(cbpp_l$herd, levels = levels(cbpp$herd)) cbpp_l$period <- factor(cbpp_l$period, levels = levels(cbpp$period)) example_model2 <- stan_glmer(incidence ~ period + (1|herd), data = cbpp_l, family = binomial, chains = 2, cores = 1, seed = 12345, iter = 500) b3 <- afex_plot(example_model2, "period") b4 <- afex_plot(example_model2, "period", id = "herd") b34 <- plot_grid(b3, b4) data("Machines", package = "MEMSS") mm <- stan_lmer(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) b5 <- afex_plot(mm, "Machine") b6 <- afex_plot(mm, "Machine", id = "Worker", data = Machines) b56 <- ggplotGrob(plot_grid(b5, b6)) save(b12, b34, b56, file = "../inst/extdata/plots_rstanarm.rda", compress = "xz", version = 2) ``` # brms We can also fit the `Machines` data using [`brms`](https://cran.r-project.org/package=brms). ```{r, eval=FALSE} library("brms") data("Machines", package = "MEMSS") mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) ``` However, to pass a `brms` object to `afex_plot` we need to pass both, the `data` used for fitting as well as the name of the dependent variable (here `score`) via the `dv` argument. We again build the plot such that the left panel shows the raw data without aggregation and the right panel shows the data aggregated within the grouping factor `Worker`. ```{r, eval=FALSE} bb1 <- afex_plot(mm2, "Machine", data = Machines, dv = "score") ## No id column passed. Assuming all rows are independent samples. bb2 <- afex_plot(mm2, "Machine", id = "Worker", data = Machines, dv = "score") plot_grid(bb1, bb2) ``` ```{r fig.width=7, fig.height=3, echo=FALSE} load(system.file("extdata/", "plots_brms.rda", package = "afex")) grid::grid.newpage(); grid::grid.draw(bbout) ``` ```{r, eval=FALSE, include=FALSE} library("brms") data("Machines", package = "MEMSS") mm2 <- brm(score ~ Machine + (Machine|Worker), data=Machines, chains = 2, cores = 1, seed = 12345, iter = 500) bb1 <- afex_plot(mm2, "Machine", data = Machines, dv = "score") bb2 <- afex_plot(mm2, "Machine", id = "Worker", data = Machines, dv = "score") bbout <- ggplotGrob(plot_grid(bb1, bb2)) save(bbout, file = "../inst/extdata/plots_brms.rda", version = 2) ``` # Not Yet Supported: GLMMadaptive Some models are unfortunately not yet supported. For example, models fit with the new and pretty cool looking [`GLMMadaptive`](https://cran.r-project.org/package=GLMMadaptive) package using some of the special families do not seem to produce reasonable results. The following unfortunately does not produce a reasonable plot. ```{r fig.width=4, fig.height=3, eval = FALSE} library("GLMMadaptive") data(Salamanders, package = "glmmTMB") gm1 <- mixed_model(count~spp * mined, random = ~ 1 | site, data = Salamanders, family = zi.poisson(), zi_fixed = ~ mined) afex_plot(gm1, "spp", data = Salamanders) ``` afex/inst/doc/afex_analysing_accuracy_data.Rmd0000644000176200001440000012526714665061371021244 0ustar liggesusers--- title: "Analysis of Accuracy Data using ANOVA and binomial GLMMs" author: "Henrik Singmann" date: "`r Sys.Date()`" show_toc: true output: rmarkdown:::html_vignette: toc: yes vignette: > %\VignetteIndexEntry{Analysis of Accuracy Data using ANOVA and binomial GLMMs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r echo=FALSE} req_suggested_packages <- c("emmeans", "dplyr", "ggplot2", "cowplot", "ggbeeswarm") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ``` ```{r, include = FALSE} op <- options(width = 90, dplyr.summarise.inform = FALSE) knitr::opts_chunk$set( collapse = TRUE ) ``` # Overview This vignette shows how accuracy data can be analysed with `afex` using either ANOVA or a binomial generalized linear mixed model (i.e., a mixed model that uses the appropriate distributional family for such data). Accuracy data means data where each observation can be categorized as either a 0, which indicates failure, miss, or an erroneous response, or 1 which indicates success or a correct response. We begin by loading the packages needed here and set a somewhat nicer `ggplot2` theme. ```{r setup, message=FALSE, results='hide', warning=FALSE} library("afex") library("emmeans") library("dplyr") library("ggplot2") theme_set(theme_bw(base_size = 15) + theme(legend.position="bottom", panel.grid.major.x = element_blank())) library("cowplot") library("ggbeeswarm") ``` # Data and Research Question The data we are looking at is from [Lin and colleagues (2020)](https://doi.org/10.1177/0956797620904990) and investigates ego depletion using a novel paradigm. Ego depletion is a (social) psychological concept originating from Roy Baumeister's work which can be summed up by the phrase 'self-control/willpower is a muscle': An initial use of self-control, such as performing a demanding task or resisting a temptation, depletes the available self-control resources so that subsequent tasks only have limited self-control resources available. The paper introducing the concept was published in 1998 (references can be found on [Wikipedia](https://en.wikipedia.org/wiki/Ego_depletion)). The ego depletion concept was extremely popular until the height of the replication crisis in psychology in which researcher also struggled to replicate the key ego depletion phenomenon just outlined. Recently, Lin and colleagues developed a new paradigm for investigation ego depletion. Their primary interest was on analyzing the data using a diffusion model, which will not be of interest here. [Lin and colleagues (2020)](https://doi.org/10.1177/0956797620904990) task followed the usual approach for ego depletion tasks. In a first phase, participants either worked on a high-demand task or a low-demand task (variable `condition`). Then, participants had to work on a Stroop task. The Stroop task consist of colour words (i.e., "red", "blue", or "yellow") displayed in a colour (i.e., red, blue, or yellow). In each trial, one of the three words is displayed in one of the three colours (e.g., the word "red" could be displayed in red or blue). The task of the participants is to press a button corresponding to the three colours the word is displayed in (i.e., participants have to ignore the meaning of the word but focus on the colour the letters have). The Stroop effect is the finding that it is easier to select the correct colour in a congruent trial in which the meaning of the word and the colour the word is displayed in match (e.g., the word "red" in red). In contrast, people are slower and make more errors in an incongruent trial in which there is a mismatch between word meaning and word colour (e.g., the word "red" in blue). In other words, it is difficult for people to ignore the meaning of a word when having to decide which colour the word is displayed in. The variable determining match between word meaning and world colour is `congruency`. The hypothesis of the ego depletion concept is that it moderates or interacts with the congruency effect (i.e., difference in performance between congruent and incongruent trials). In particular, the congruency effect is smaller if participants are ego depleted compared to when they are not. We analyse this Stroop data in the following. One of the new features of Lin et al.'s (2020) study compared to earlier ego-depletion studies is that both variables, `condition` and `congruency`, vary within-subjects. That is, each participants once performed a high-demand task followed by the Stroop task and then also a low-demand task followed by a Stroop task. This was usually done on two different days with a week time in between in counterbalanced order. We then load the data, called `stroop`, which comes with `afex`. For simplicity we only focus on the data from Lin et al.'s (2020) Experiment 1 (the data of all their 4 studies is part of `stroop`). We focus on the accuracy of participants which is coded as either 0 (error) or 1 (correct response) in column `acc`. We also remove all `NA`s in the response variable and drop unused factor levels. This streamlines a few of the calls later on. ```{r} data("stroop") ## extract data from experiment 1 and remove NAs stroop_e1 <- stroop %>% filter(!is.na(acc)) %>% filter(study == "1") %>% droplevels() ``` A look at the resulting `data.frame` reveals that we have trial-wise data. That is, each observation (i.e., row) is one response to a Stroop trial. The data is not yet aggregated so that each participant has one observation per design cell (i.e., denoting the average accuracy for each participant in this cell). We also see we still have quite a bit of data left, from 253 participants. ```{r} head(stroop_e1) str(stroop_e1) ``` # ANOVA Analysis We begin with an analysis of the data using standard repeated-measures ANOVA. ANOVA is probably the most common approach to analyse such data in psychology, but its use is somewhat questionable. The reason is that ANOVA assumes that response variable is normally distributed (or more precisely, the conditional distribution of the data after taking the model into account, i.e., the residuals, are assumed to follow a normal distribution). Here, our data are only 0s and 1s which do not follow a normal but rather a binomial or Bernoulli distribution. Nevertheless, analysis of such data using models assuming normal distribution such as ANOVA is not uncommon and in many cases leads to the same conclusions than the more complicated model discussed below. However, as we will see below, the results can also change. We set up the model using `aov_ez` and specify both factors, `congruency` and `condition`, correctly as `within` factors. ```{r} e1_anova <- aov_ez( id = "pno", dv = "acc", data = stroop_e1, within = c("congruency", "condition") ) ``` Fitting this model produces a warning message telling us what we already know. There is more than one observation per participant and cell of the design (i.e., combination of our two factors) and the data is averaged before calculating the ANOVA. Note that if we would not have removed the `NA`s from the data, this call would have failed with an error as all participants have `NA`s so all would have been removed. In that case, we could have added `na.rm = TRUE` to the `aov_ez()` call to ignore the NAs when aggregating the data. If we take a look at the ANOVA table, we see a clear main effect of congruency, a somewhat weaker main effect of condition, but no interaction. ```{r} e1_anova ``` The observed pattern of effects is in line with most recent failures to replicate ego depletion. The main effect of `condition` suggests there be some general effect, such as more errors after a demanding task, but not the predicted interaction of condition with the congruency effect. The original prediction of ego-depletion is that it reduces self-control, thus resulting in attenuated Stroop effects after depletion. This pattern would result in a significant interaction. We can look at the effects in turn using `emmeans`. We begin by looking at the Stroop effect, that is the effect of `congruency`. ```{r} emmeans(e1_anova, "congruency") ``` We can see the usual Stroop effect. Accuracy is higher for congruent compared to incongruent items. We also look at the effect of condition. ```{r} emmeans(e1_anova, "condition") ``` We see that accuracy is roughly 1% lower in the ego-depletion compared to the control condition. We can also plot both effects. ```{r, fig.width=6, fig.height=3} plot_grid( afex_plot(e1_anova, "congruency", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)), afex_plot(e1_anova, "condition", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)) ) ``` # Mixed Model Analysis ```{r, echo=FALSE} load(system.file("extdata/", "outputs_glmm_vignette.rda", package = "afex")) ``` A model with a more appropriate conditional distribution (instead of the normal distribution used by ANOVA) are generalized linear models with a binomial family. Because we have repeated measures both within participants within each design cell and across cells (i.e., we have within-subject factors) we need to use a mixed model. Thus, we have to employ a generalized linear mixed model (GLMM) with a binomial family. Here, we use the canonical link function, the logit (an alternative would be probit). In our call to `mixed` we indicate the fact that we want to estimate a binomial GLMM (in contrast to a regular LMM) by passing the correct family, `family = binomial`. We could further specify the link function (e.g., `family = binomial(link = "probit")`), but because we use the canonical link here, this is not necessary. As for all mixed models, we should begin our analysis with the "maximal random effect structure justified by the design" (Barr et al., 2013), the *maximal model.* Because all factors vary within-subjects in the present case and we only consider one random-effects grouping factor (participant), the maximum random effect structure involves by-participant random intercepts as well as by-participant random slopes for factors congruency, condition, and their interaction, as well as the correlation among the random effect parameters. If you need an introduction to the topic of the random effect structure, consider reading our introduction to mixed models ([Singmann & Kellen, 2019](http://singmann.org/download/publications/singmann_kellen-introduction-mixed-models.pdf)). A worked example of how to reduce the maximal model in case of converging warnings is provided in the [mixed model vignette](afex_mixed_example.html). Another important decision when fitting a mixed model with `afex::mixed` is the choice of the `method` for testing model terms. The default `method` is the Kenward-Roger approximation. However, this is not possible for GLMMs (i.e., it only applies to LMMs). For GLMMs we only have two methods available, likelihood ratio tests (`method = "LRT"`) and parametric bootstrap (`method = "PB"`). Parametric bootstrap is generally the preferable procedure, especially in settings with small N, specifically low numbers of levels for the random effects grouping factor (i.e., few participants in the present case). However, parametric bootstrap can be prohibitively time consuming as it requires refitting the model several times (suggested is at last a 1000 times per model term/effect). The main factor influencing the time is therefore the complexity of the random effect structure. Even with only a moderately complex structure, such as in the present case, it can take days (even though computations can be distributed on a multi-core machine as shown below). One rule of thumb (for which I have never seen any actual data) is that with more than around 50 levels for each random effects grouping factor, likelihood ratio tests are probably okay and parametric bootstrap not necessary. Luckily, in the present case we have over 250 participants (i.e., way more than 50), so we decide to use likelihood ratio tests as a method for testing model terms (i.e., `method = "LRT"`). ## Setting-Up and Fitting the Models There are two ways on how to set up such models in `afex::mixed` (`lme4` provides another third variant that is not possible in `afex::mixed`). Before describing both ways, the somewhat surprising fact is that the second way, based on the aggregated data, is considerably faster than the first way. In the present case the first way takes more than an hour on my laptop whereas the second way takes only around one minute! To understand the two different ways, it might help to recall some basics about the [binomial distribution](https://en.wikipedia.org/wiki/Binomial_distribution). It is defined by the number of observations and the number of successes and has one parameter, the success probability. Because we want to estimate the parameter of the binomial distribution, the success probability, we have to pass two pieces of information to the `mixed` function; the number of successes and the total number of trials. The easiest way to do so with the current data is by directly passing the accuracy column `acc`. It only consists of zeros and ones so the total number of observations is the number of trials, and the number of ones is the number of successes. The following code sets up the maximal model as discussed above using this approach. Note that fitting this model takes more than an hour (likely several hours). ```{r, eval=FALSE, warning=FALSE} e1_mixed1_v1 <- mixed( acc ~ congruency*condition + (congruency*condition|pno), data = stroop_e1, method = "LRT", family = binomial ) ``` Before looking at the results, let us first discuss the alternative way of specifying the model. Note that the second way is usually considerably faster. This way consists of two steps. We first need to aggregate the data within each cell of the design and participant by calculating the proportion of correct responses and the number of trials for each cell. Then we can pass these two pieces of information to `mixed`, the proportion of successes as the dependent variable and the total number of successes as a `weight`. These two pieces of information again provide all information required for the binomial distribution. However, note that it is important that proportion times the weight provide an integer number, the actual number of successes which cannot have a decimal part. At first, we need to aggregate the data. For this, we can use the following `dplyr` syntax. ```{r} stroop_e1_agg <- stroop_e1 %>% group_by(condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) ``` Then, we can set up the model. Note that we need to pass the total number of trials as the `weight` argument here. `mixed` now supports the exact same syntax as `glmer` so we can pass simply the unquoted name of the column holding the weights, `weight = n`. The call to `mixed` is then pretty much the same as above, the only differences are that we have to use the `data.frame` with the aggregated data, potentially a new name of response variable (here I decided to use the same name, `acc` for the aggregated accuracy), and the `weight` argument. ```{r, eval = FALSE} e1_mixed1_v2 <- mixed( acc ~ congruency*condition + (congruency*condition|pno), data = stroop_e1_agg, method = "LRT", family = binomial, weight = n ) ``` ## Dealing with Fit Warnings Before looking at the results, we see that fitting produces quite a few warnings. These are reproduced below in the way we would also get them when simply typing in the object name (e.g., `e1_mixed1_v2`). The following are the warnings for the first variant, `e1_mixed1_v1`. ```{r, echo=FALSE} xxx <- lapply(outp_e1_mixed1_v1$warnings, function(x) warning(x, call. = FALSE)) ``` And these are the warnings for the second variant, `e1_mixed1_v2`. ```{r, echo=FALSE} xxx <- lapply(outp_e1_mixed1_v2$warnings, function(x) warning(x, call. = FALSE)) ``` Both variants show quite a few warnings. The warnings are given separately for the different models estimated (i.e., full model with all terms and one model for each term removed from the full model). However, none of the warnings is the dreaded "singular fit" warning that clearly suggests an over-parameterised model. We therefore will be working with this random effect structure going forward. Here, we have two different warnings suggesting some numerical issue at the maximum likelihood estimate. One warning tells us that for the result returned from the fitting (i.e., optimization) algorithm the absolute gradient of the deviance function is not small (i.e., there might be a better global optimum that was not discovered). Another warning relates to the size of the eigenvalue which suggests something similar, there might be better solutions in the parameter space. More on these warnings can be found in the `lme4` help at `?troubleshooting` (or `help("troubleshooting", package = "lme4")`). Given that both types of warnings are not too dramatic, one way to address them is by trying different optimizers. `mixed` makes this easy via the `all_fit` argument, if `TRUE` several optimizers are applied to the output from the regular run (make sure to install packages `optimx` and `dfoptim` to use all possible available optimizers). ```{r, eval = FALSE} e1_mixed1_v2_allfit <- mixed( acc ~ congruency*condition + (congruency*condition|pno), data = stroop_e1_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE ) ``` ```{r, echo=FALSE} xxx <- lapply(outp_e1_mixed1_v2_allfit$warnings, function(x) warning(x, call. = FALSE)) ``` Somewhat surprisingly the fit using all optimizers produces more convergence warnings than the previous fit. However, all warnings are of the same type as for the other variants. Another way to deal with the warnings is by fitting a variant of the model with reduced random effect structure. Hopefully this model will not produce the warning, but similar results. If warnings are more severe than the current warning, fitting a reduced model is surely indicated. Critical warnings that make it necessary to reduce the model are for example a singular fit warning or a warning that the algorithm did not converge within the allowed number of iterations. Nevertheless, if this were a real data analysis for a manuscript it would probably still make sense to reduce the random effect structure, beginning with the correlation among the random effect parameters, until the warnings are gone. Then, we would compare the final (i.e., reduced) model with the maximal model to ensure that the pattern of significant and non-significant effects is the same in both cases (if not, this needs to be reported transparently). An example of such an iterative reduction of the random effect structure is given in the [mixed model vignette](afex_mixed_example.html). ## ANOVA Table for GLMMs We can now print the model to get the resulting ANOVA table, that is the table of model terms (i.e., main effects and interactions), as for the regular ANOVA model. Doing so would normally also reproduces the warnings shown above but is suppressed here. We show the results of the three variants in turn. ```{r, eval=FALSE} e1_mixed1_v1 ## variant 1 ``` ```{r, echo=FALSE} cat(outp_e1_mixed1_v1$output, sep = "\n") ``` ```{r, eval=FALSE} e1_mixed1_v2 ## variant 2 ``` ```{r, echo=FALSE} cat(outp_e1_mixed1_v2$output, sep = "\n") ``` ```{r, eval=FALSE} e1_mixed1_v2_allfit ## variant 2 with all_fit = TRUE ``` ```{r, echo=FALSE} cat(outp_e1_mixed1_v2_allfit$output, sep = "\n") ``` As can be seen, the results of the three different variants are extremely similar. Especially the fact that the results from variant 2 and the variant with `all_fit = TRUE` are pretty much the same suggests that we can have some confidence in the results. As for the ANOVA we see significant main effects of congruency and condition. However, we also see a significant congruency by condition interaction. As a reminder, this interaction is the precondition of the central ego depletion prediction. ## Follow-Up Analysis and Plots Let us first look at the main effects as for the ANOVA model. For this, we will always use the model with `all_fit = TRUE`, `e1_mixed1_v2_allfit`. For easier interpretability, we also always set `type = "response"` in the call to `emmeans`. This provides estimated marginal means on the response scale (i.e., in probability units after applying the inverse link function). In case of the default (i.e., `type = "link"`) marginal mean are given on the linear scale which in this case is the logit scale. ```{r, eval=FALSE} emmeans(e1_mixed1_v2_allfit, "congruency", type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_2a_cong_out$output, sep = "\n") ``` We again see the Stroop effect. Accuracy is higher for congruent compared to incongruent items. We also look at the effect of condition. ```{r, eval=FALSE} emmeans(e1_mixed1_v2_allfit, "condition", type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_2a_cond_out$output, sep = "\n") ``` We see that accuracy is roughly 1% lower in the ego-depletion compared to the control condition. We can also plot both effects as above. We essentially only have to replace the model name in the calls to `afex_plot`. However, we also remove the `error = "within"` to show model-based error bars. ```{r, eval=FALSE} plot_grid( afex_plot(e1_mixed1_v2_allfit, "congruency", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)), afex_plot(e1_mixed1_v2_allfit, "condition", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)) ) ``` ```{r, echo=FALSE, fig.width=6, fig.height=3} message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp2a_main) ``` Finally, we can also have a look at the interaction. One way to do so is by looking at the reference grid of the two variables. ```{r, eval=FALSE} emmeans(e1_mixed1_v2_allfit, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} cat(emm_2a_inter1_out$output, sep = "\n") ``` Alternatively, we can look at the effect of `congruency` conditional on `condition`. As will be shown below, this has some benefits. And because we will use this `emmeans` object later, we assign it to `emm_inter_1`. ```{r, eval=FALSE} emm_inter_1 <- emmeans(e1_mixed1_v2_allfit, "congruency", by = "condition", type = "response") emm_inter_1 ``` ```{r, echo=FALSE} cat(emm_2a_inter2_out$output, sep = "\n") ``` With this object, it is now particularly easy to see if there are indeed differences in the Stroop effects across conditions. We can simply use the `pairs` function which will only calculate pairwise comparisons for each level of the `by` factor `conditions. Because of the significant interaction this shows that there is evidence for a reduced Stroop effect in the deplete condition. The odds ratio are around 5 in the deplete condition and over 6 in the control condition. ```{r, eval=FALSE} pairs(emm_inter_1) ``` ```{r, echo=FALSE} cat(emm_2a_pairs$output, sep = "\n") ``` We can of course also plot the interaction. We use violin plots for the data to make this plot somewhat appealing. ```{r, eval=FALSE} afex_plot(e1_mixed1_v2_allfit, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") grid::grid.newpage() grid::grid.draw(pp2a_inter) ``` For reference, we can also make the plot based on the model using variant 1 (i.e., based on trial-wise non-aggregated data) which produces the same figure. ```{r, eval=FALSE} afex_plot(e1_mixed1_v1, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") grid::grid.newpage() grid::grid.draw(pp2a_inter_v1) ``` # Analysis of Two Studies with GLMM The `stroop` data set contains all four experiments of Lin et al. (2020). So far we only looked at Experiment 1. Here, we want to look at Experiments 1 and 2 to show some additional functionality of analysing accuracy data with GLMMs. Let us begin by preparing the data. ```{r} ## extract data from experiment 1 and remove NAs stroop_e12 <- stroop %>% filter(!is.na(acc)) %>% filter(study %in% c("1", "2")) %>% droplevels() ``` We then have a look at the number of participants per experiment. As can be seen below, there is a clear imbalance with Experiment 1 having a lot more participants than Experiment 2. We will see below what we can do with this information. ```{r} stroop_e12 %>% group_by(study) %>% summarise(n = length(unique(pno))) ``` But first, we aggregate the data for analysing it using the second variant introduced above as it is dramatically faster. ```{r} stroop_e12_agg <- stroop_e12 %>% group_by(study, condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) ``` We are now ready to fit the model. However, because we now have to fit 8 models in total and we also have more data at hand, fitting will take quite a bit longer even when using the aggregated data. Especially, because based on our experience with the data from Experiment 1, it makes sense to set `all_fit = TRUE` here. ## Estimating Models in Parallel Therefore, it makes sense to reduce our fitting time by distributing the estimation across the available CPU cores using the `parallel` package support provided by `mixed`. Note that this simply distributes the different models across cores (i.e., each individual fit is still run on a single core). For this, we need to set up a cluster, `cl`, and then pass this cluster to `mixed`. ```{r, eval = FALSE} library("parallel") nc <- detectCores() # number of cores cl <- makeCluster(rep("localhost", nc)) # make cluster ``` We can then fit the model using the new data in a similar manner as above. The main changes are that we add `*study` to the fixed effects part of the model formula which estimates main effects and all interactions with `study`. We do not estimate any random slopes for `study` because participants are in only one study (i.e., study is a between-subjects factor). We also enable multi-core estimation by setting `cl = cl`. ```{r, eval = FALSE} e12_mixed1 <- mixed( acc ~ congruency*condition*study + (congruency*condition|pno), data = stroop_e12_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE, cl = cl ) ``` ## Type III versus Type II Sums of Squares The default `type` argument when using `mixed` (and the other `afex` functions) is `3` which estimates so-called type III sums of squares tests of model terms. There is a somewhat heated discussion on these topics in the literature which I do not want to rehash here (more can be found in [our chapter](http://singmann.org/download/publications/singmann_kellen-introduction-mixed-models.pdf)). In short, the distinction between Type III (default in `afex`) and Type II (recommended by some vocal statisticians) is about how to deal with imbalance (i.e., different group sizes). Type III sums of squares assume that the imbalance is random and estimates a model in which all groups are assumed to have equal sizes. In contrast, using Type II sums of squares the differences in group sizes are assumed to be meaningful (e.g., as a consequence of different group sizes in the environment) and the model is set-up such that the differences in group sizes are represented. Remember that the first experiment (study 1) had a lot more participants than the second experiment (study 2). However, the default Type III tests treat both studies as having the same sample size. In this case it might therefore make sense to also look at the results with Type II tests. For this, we simply need to add `type = 2` (or equivalently `type = "II"`) to the call as shown below. ```{r, eval = FALSE} e12_mixed1_t2 <- mixed( acc ~ congruency*condition*study + (congruency*condition|pno), data = stroop_e12_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE, cl = cl, type = 2 ) ``` Fitting both models shows a number of warnings similar to the previous model which we do not reproduce here. Because we are done with fitting models in parallel, we stop the cluster. ```{r, eval=FALSE} stopCluster(cl) ``` Let us instead take a look at the results. We begin with the Type III model. ```{r, eval=FALSE} e12_mixed1 ``` ```{r, echo=FALSE} cat(outp_e12_mixed1$output, sep = "\n") ``` The results are now more in line with the results from the ANOVA analysis. We only see significant main effects of congruency and condition, but no congruency by condition interaction. Furthermore, no effect involving study is significant. Let us now take a look at the Type II results. ```{r, eval=FALSE} e12_mixed1_t2 ``` ```{r, echo=FALSE} cat(outp_e12_mixed1_t2$output, sep = "\n") ``` These look quite similar with one difference. The congruency by condition interaction is still not significant, however, the p-value is below .1. Taken together the results somewhat suggest that the congruency by condition interaction is a pattern mainly found in (the larger) Experiment 1, but not in Experiment 2. In the Type III analysis in which both studies are weighed equally the interaction therefore does not reach significance. In contrast, in the Type II analysis in which the additional participants of Experiment 1 have a larger influence on the interaction, the p-value drops and is nearer the .05 cut-off. However, the difference in the interaction between the experiments is also not too large as the three way interaction of congruency by condition by study is clearly not significant (and as the highest order effect, this effect has to be the same for both types of sums of squares). ## Follow-Up Tests for Type II Models We can now of course also plot the data. Let us plot the congruency by condition interaction as before. We begin with the plot of the Type III model. ```{r, eval=FALSE} afex_plot(e12_mixed1, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t3) ``` We then plot the interaction of the Type II model. ```{r, eval=FALSE} afex_plot(e12_mixed1_t2, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t2) ``` Both look pretty much the same and actually are the same. The reason for this is also given as a message when producing the second plot. When using `mixed` Type II models, all follow-up tests (which includes plotting via `afex_plot`) are based on the full model. However, Type II model tests are not all based on the full model. Rather, for tests of lower-order effects higher order effects are not part of the comparison (i.e., tests of two-way interactions such as the congruency by condition interaction are compared against a reference model that only includes all two-way interactions and not the three-way interaction). We can also see this when comparing the corresponding `emmeans` for both models: ```{r, eval=FALSE} emmeans(e12_mixed1, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_inter_out$output, sep = "\n") ``` ```{r, eval=FALSE} emmeans(e12_mixed1_t2, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_inter_out$output, sep = "\n") ``` We again see that they are identical. Thus, the Type II outputs do not actually reflect Type II tests. A more appropriate way to look at this two-way interaction would be to use a model that reflects the Type II tests; that is, a model without the three-way interaction. A variant of this model is part of the `e12_mixed1_t2` object. However, because of the way `afex::mixed` creates the set of tests, this model is parameterized in a different way so we cannot pass it to `emmeans` for tests. Therefore, we have to refit the model without the three-way interaction. We do so by changing the fixed effects part of the formula to `(congruency+condition+study)^2` which means all main effects and up to two-way interactions. ```{r, eval = FALSE} e12_mixed1_t2_red <- mixed( acc ~ (congruency+condition+study)^2 + (congruency*condition|pno), data = stroop_e12_agg, method = "LRT", family = binomial, weight = n, all_fit = TRUE, cl = cl, type = 2 ) ``` ```{r, eval=FALSE} e12_mixed1_t2_red ``` ```{r, echo=FALSE} cat(outp_e12_mixed1_t2_red$output, sep = "\n") ``` We first have a look at the resulting ANOVA table (note, we suppress the warnings again here). As expected, the Type II tests are the same as in `e12_mixed1_t2`, because they are based on the exact same models. We then take a look at the marginal means for the two-way interaction of congruency by condition. ```{r, eval=FALSE} emmeans(e12_mixed1_t2_red, c("congruency", "condition"), type = "response") ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") cat(emm_e12_t2_red_inter_out$output, sep = "\n") ``` We can see these are now a bit different from the previous one, but not by a lot. A better way to see the difference is to use the same approach as above and look at the estimated Stroop effects for each condition. For the correct Type II model these are given by the following call: ```{r, eval=FALSE} emmeans(e12_mixed1_t2_red, "congruency", by = "condition", type = "response") %>% pairs() ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") cat(emm_e12_t2_red_pairs_out$output, sep = "\n") ``` For the wrong Type II model these are given below: ```{r, eval=FALSE} emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response") %>% pairs() ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_pairs_out$output, sep = "\n") ``` We can see that as expected the magnitude of the difference between the Stroop effects is smaller in `e12_mixed1_t2` (5.73 vs. 5.13) than in `e12_mixed1_t2_red` (5.81 vs. 5.06). One way to approximate the latter behaviour without actually refitting the model is by passing `submodel = "minimal"` (which in the present case is identical to `submodel = ~congruency*condition`, see also [the corresponding `emmeans` vignette](https://cran.r-project.org/package=emmeans/vignettes/xplanations.html#submodels)). This does not produce exact Type II marginal means as when actually refitting the model. But at least approximates those. ```{r, eval=FALSE} emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response", submodel = "minimal") %>% pairs() ``` ```{r, echo=FALSE} message("emmeans are based on full model which includes all effects.") message("NOTE: Results may be misleading due to involvement in interactions") cat(emm_e12_t2_pairs_p_out$output, sep = "\n") ``` Finally, we can also use this model to plot the two-way interaction. ```{r, eval=FALSE} afex_plot(e12_mixed1_t2_red, "condition", "congruency", data_geom = geom_violin) ``` ```{r, echo=FALSE, fig.width=4.5, fig.height=3.5} message("Aggregating data over: pno") message("emmeans are based on full model which includes all effects.") grid::grid.newpage() grid::grid.draw(pp_e12_inter_t2_red) ``` # References - Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. *Journal of Memory and Language*, 68(3), 255–278. https://doi.org/10.1016/j.jml.2012.11.001 - Lin, H., Saunders, B., Friese, M., Evans, N. J., & Inzlicht, M. (2020). Strong Effort Manipulations Reduce Response Caution: A Preregistered Reinvention of the Ego-Depletion Paradigm. *Psychological Science*. https://doi.org/10.1177/0956797620904990 - Singmann, H., & Kellen, D. (2019). An Introduction to Mixed Models for Experimental Psychology. In D. H. Spieler & E. Schumacher (Eds.), *New Methods in Cognitive Psychology* (pp. 4–31). Psychology Press. ```{r, include=FALSE} options(op) ``` ```{r, eval=FALSE, include=FALSE} save(e1_mixed1_v1, e1_mixed1_v2, e1_mixed1_v2_allfit, e12_mixed1_t2, e12_mixed1, e12_mixed1_t2_red, file = "development/stroop_mixed.rda", compress = "xz") load("development/stroop_mixed.rda") ``` ```{r, eval=FALSE, include=FALSE} stroop_e1_agg <- stroop_e1 %>% group_by(condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) stroop_e12 <- stroop %>% filter(!is.na(acc)) %>% filter(study %in% c("1", "2")) %>% droplevels() stroop_e12_agg <- stroop_e12 %>% group_by(study, condition, congruency, pno) %>% summarise(acc = mean(acc), n = n()) capture_call <- function(call) { warnings <- testthat::capture_warnings(eval(substitute(call))) output <- suppressWarnings(capture.output(eval(substitute(call)))) messages <- testthat::capture_messages(substitute(call)) list( output = output, warnings = warnings, messages = messages ) } outp_e1_mixed1_v1 <- capture_call(print(e1_mixed1_v1)) outp_e1_mixed1_v2 <- capture_call(print(e1_mixed1_v2)) outp_e1_mixed1_v2_allfit <- capture_call(print(e1_mixed1_v2_allfit)) emm_2a_cong <- emmeans(e1_mixed1_v2_allfit, "congruency", type = "response") emm_2a_cond <- emmeans(e1_mixed1_v2_allfit, "condition", type = "response") emm_2a_inter1 <- emmeans(e1_mixed1_v2_allfit, c("congruency", "condition"), type = "response") emm_2a_inter2 <- emmeans(e1_mixed1_v2_allfit, "congruency", by = "condition", type = "response") emm_2a_inter1_out <- capture_call(print(emm_2a_inter1)) emm_2a_inter2_out <- capture_call(print(emm_2a_inter2)) emm_2a_cong_out <- capture_call(print(emm_2a_cong)) emm_2a_cond_out <- capture_call(print(emm_2a_cond)) emm_inter_1 <- emmeans(e1_mixed1_v2_allfit, "congruency", by = "condition", type = "response") emm_2a_pairs <- capture_call(print(pairs(emm_inter_1))) pp2a_main <- ggplotGrob(plot_grid( afex_plot(e1_mixed1_v2_allfit, "congruency", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)), afex_plot(e1_mixed1_v2_allfit, "condition", error = "within", data_geom = geom_quasirandom, data_alpha = 0.3) + coord_cartesian(ylim = c(0.25, 1)) )) # pp2a_main_a <- afex_plot(e1_mixed1_v2_allfit, "congruency", error = "within", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)) # pp2a_main_b <- afex_plot(e1_mixed1_v2_allfit, "condition", error = "within", # data_geom = geom_quasirandom, data_alpha = 0.3) + # coord_cartesian(ylim = c(0.25, 1)) pp2a_inter <- ggplotGrob(afex_plot(e1_mixed1_v2_allfit, "condition", "congruency", data_geom = geom_violin)) pp2a_inter_v1 <- ggplotGrob(afex_plot(e1_mixed1_v1, "condition", "congruency", data_geom = geom_violin)) ### experiments 1 and 2 outp_e12_mixed1 <- capture_call(print(e12_mixed1)) outp_e12_mixed1_t2 <- capture_call(print(e12_mixed1_t2)) outp_e12_mixed1_t2_red <- capture_call(print(e12_mixed1_t2_red)) emm_e12_inter_out <- capture_call(print(emmeans(e12_mixed1, c("congruency", "condition"), type = "response"))) emm_e12_t2_inter_out <- capture_call(print(emmeans(e12_mixed1_t2, c("congruency", "condition"), type = "response"))) emm_e12_t2_red_inter_out <- capture_call(print(emmeans(e12_mixed1_t2_red, c("congruency", "condition"), type = "response"))) emm_e12_t2_red_pairs_out <- capture_call(print(pairs( emmeans(e12_mixed1_t2_red, "congruency", by = "condition", type = "response")))) emm_e12_t2_pairs_out <- capture_call(print(pairs( emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response")))) emm_e12_t2_pairs_p_out <- capture_call(print(pairs(emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response", submodel = "minimal")))) pp_e12_inter_t3 <- ggplotGrob(afex_plot(e12_mixed1, "condition", "congruency", data_geom = geom_violin)) pp_e12_inter_t2 <- ggplotGrob(afex_plot(e12_mixed1_t2, "condition", "congruency", data_geom = geom_violin)) pp_e12_inter_t2_red <- ggplotGrob(afex_plot(e12_mixed1_t2_red, "condition", "congruency", data_geom = geom_violin)) save(outp_e1_mixed1_v1, outp_e1_mixed1_v2, outp_e1_mixed1_v2_allfit, emm_2a_cong_out, emm_2a_cond_out, pp2a_main, emm_2a_inter1_out, emm_2a_inter2_out, emm_2a_pairs, pp2a_inter, pp2a_inter_v1, outp_e12_mixed1, outp_e12_mixed1_t2, outp_e12_mixed1_t2_red, emm_e12_inter_out, emm_e12_t2_inter_out, emm_e12_t2_red_inter_out, emm_e12_t2_red_pairs_out, emm_e12_t2_pairs_out, emm_e12_t2_pairs_p_out, pp_e12_inter_t3, pp_e12_inter_t2, pp_e12_inter_t2_red, file = "inst/extdata/outputs_glmm_vignette.rda", compress = "xz") ``` afex/inst/doc/afex_analysing_accuracy_data.html0000644000176200001440000042053514665067777021502 0ustar liggesusers Analysis of Accuracy Data using ANOVA and binomial GLMMs

Analysis of Accuracy Data using ANOVA and binomial GLMMs

Henrik Singmann

2024-09-01

Overview

This vignette shows how accuracy data can be analysed with afex using either ANOVA or a binomial generalized linear mixed model (i.e., a mixed model that uses the appropriate distributional family for such data). Accuracy data means data where each observation can be categorized as either a 0, which indicates failure, miss, or an erroneous response, or 1 which indicates success or a correct response.

We begin by loading the packages needed here and set a somewhat nicer ggplot2 theme.

library("afex")
library("emmeans")
library("dplyr")
library("ggplot2")
theme_set(theme_bw(base_size = 15) + 
            theme(legend.position="bottom", 
                  panel.grid.major.x = element_blank()))
library("cowplot")
library("ggbeeswarm")

Data and Research Question

The data we are looking at is from Lin and colleagues (2020) and investigates ego depletion using a novel paradigm. Ego depletion is a (social) psychological concept originating from Roy Baumeister’s work which can be summed up by the phrase ‘self-control/willpower is a muscle’: An initial use of self-control, such as performing a demanding task or resisting a temptation, depletes the available self-control resources so that subsequent tasks only have limited self-control resources available. The paper introducing the concept was published in 1998 (references can be found on Wikipedia). The ego depletion concept was extremely popular until the height of the replication crisis in psychology in which researcher also struggled to replicate the key ego depletion phenomenon just outlined. Recently, Lin and colleagues developed a new paradigm for investigation ego depletion. Their primary interest was on analyzing the data using a diffusion model, which will not be of interest here.

Lin and colleagues (2020) task followed the usual approach for ego depletion tasks. In a first phase, participants either worked on a high-demand task or a low-demand task (variable condition). Then, participants had to work on a Stroop task. The Stroop task consist of colour words (i.e., “red”, “blue”, or “yellow”) displayed in a colour (i.e., red, blue, or yellow). In each trial, one of the three words is displayed in one of the three colours (e.g., the word “red” could be displayed in red or blue). The task of the participants is to press a button corresponding to the three colours the word is displayed in (i.e., participants have to ignore the meaning of the word but focus on the colour the letters have).

The Stroop effect is the finding that it is easier to select the correct colour in a congruent trial in which the meaning of the word and the colour the word is displayed in match (e.g., the word “red” in red). In contrast, people are slower and make more errors in an incongruent trial in which there is a mismatch between word meaning and word colour (e.g., the word “red” in blue). In other words, it is difficult for people to ignore the meaning of a word when having to decide which colour the word is displayed in. The variable determining match between word meaning and world colour is congruency.

The hypothesis of the ego depletion concept is that it moderates or interacts with the congruency effect (i.e., difference in performance between congruent and incongruent trials). In particular, the congruency effect is smaller if participants are ego depleted compared to when they are not. We analyse this Stroop data in the following.

One of the new features of Lin et al.’s (2020) study compared to earlier ego-depletion studies is that both variables, condition and congruency, vary within-subjects. That is, each participants once performed a high-demand task followed by the Stroop task and then also a low-demand task followed by a Stroop task. This was usually done on two different days with a week time in between in counterbalanced order.

We then load the data, called stroop, which comes with afex. For simplicity we only focus on the data from Lin et al.’s (2020) Experiment 1 (the data of all their 4 studies is part of stroop). We focus on the accuracy of participants which is coded as either 0 (error) or 1 (correct response) in column acc. We also remove all NAs in the response variable and drop unused factor levels. This streamlines a few of the calls later on.

data("stroop")
## extract data from experiment 1 and remove NAs
stroop_e1 <- stroop %>%
  filter(!is.na(acc)) %>% 
  filter(study == "1") %>% 
  droplevels()

A look at the resulting data.frame reveals that we have trial-wise data. That is, each observation (i.e., row) is one response to a Stroop trial. The data is not yet aggregated so that each participant has one observation per design cell (i.e., denoting the average accuracy for each participant in this cell). We also see we still have quite a bit of data left, from 253 participants.

head(stroop_e1)
##    pno condition study trialnum  congruency acc    rt
## 1 s1_1   deplete     1        1   congruent   1 0.626
## 2 s1_1   deplete     1        2   congruent   1 0.550
## 3 s1_1   deplete     1        3 incongruent   1 0.872
## 4 s1_1   deplete     1        4   congruent   1 0.635
## 5 s1_1   deplete     1        5   congruent   1 0.660
## 6 s1_1   deplete     1        6 incongruent   1 0.667
str(stroop_e1)
## 'data.frame':    84667 obs. of  7 variables:
##  $ pno       : Factor w/ 253 levels "s1_1","s1_2",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ condition : Factor w/ 2 levels "control","deplete": 2 2 2 2 2 2 2 2 2 2 ...
##  $ study     : Factor w/ 1 level "1": 1 1 1 1 1 1 1 1 1 1 ...
##  $ trialnum  : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ congruency: Factor w/ 2 levels "congruent","incongruent": 1 1 2 1 1 2 1 2 1 1 ...
##  $ acc       : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ rt        : num  0.626 0.55 0.872 0.635 0.66 0.667 0.538 0.927 0.583 0.588 ...

ANOVA Analysis

We begin with an analysis of the data using standard repeated-measures ANOVA. ANOVA is probably the most common approach to analyse such data in psychology, but its use is somewhat questionable. The reason is that ANOVA assumes that response variable is normally distributed (or more precisely, the conditional distribution of the data after taking the model into account, i.e., the residuals, are assumed to follow a normal distribution). Here, our data are only 0s and 1s which do not follow a normal but rather a binomial or Bernoulli distribution. Nevertheless, analysis of such data using models assuming normal distribution such as ANOVA is not uncommon and in many cases leads to the same conclusions than the more complicated model discussed below. However, as we will see below, the results can also change.

We set up the model using aov_ez and specify both factors, congruency and condition, correctly as within factors.

e1_anova <- aov_ez(
  id = "pno", 
  dv = "acc", 
  data = stroop_e1,
  within = c("congruency", "condition")
)
## Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`.
## To turn off this warning, pass `fun_aggregate = mean` explicitly.

Fitting this model produces a warning message telling us what we already know. There is more than one observation per participant and cell of the design (i.e., combination of our two factors) and the data is averaged before calculating the ANOVA.

Note that if we would not have removed the NAs from the data, this call would have failed with an error as all participants have NAs so all would have been removed. In that case, we could have added na.rm = TRUE to the aov_ez() call to ignore the NAs when aggregating the data.

If we take a look at the ANOVA table, we see a clear main effect of congruency, a somewhat weaker main effect of condition, but no interaction.

e1_anova
## Anova Table (Type 3 tests)
## 
## Response: acc
##                 Effect     df  MSE          F   ges p.value
## 1           congruency 1, 252 0.01 242.95 ***  .247   <.001
## 2            condition 1, 252 0.00     5.43 *  .003    .021
## 3 congruency:condition 1, 252 0.00       0.10 <.001    .757
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

The observed pattern of effects is in line with most recent failures to replicate ego depletion. The main effect of condition suggests there be some general effect, such as more errors after a demanding task, but not the predicted interaction of condition with the congruency effect. The original prediction of ego-depletion is that it reduces self-control, thus resulting in attenuated Stroop effects after depletion. This pattern would result in a significant interaction.

We can look at the effects in turn using emmeans. We begin by looking at the Stroop effect, that is the effect of congruency.

emmeans(e1_anova, "congruency")
##  congruency  emmean       SE  df lower.CL upper.CL
##  congruent   0.9763 0.001201 252   0.9739   0.9787
##  incongruent 0.8867 0.005876 252   0.8752   0.8983
## 
## Results are averaged over the levels of: condition 
## Confidence level used: 0.95

We can see the usual Stroop effect. Accuracy is higher for congruent compared to incongruent items.

We also look at the effect of condition.

emmeans(e1_anova, "condition")
##  condition emmean      SE  df lower.CL upper.CL
##  control    0.936 0.00345 252    0.929    0.943
##  deplete    0.927 0.00375 252    0.920    0.935
## 
## Results are averaged over the levels of: congruency 
## Confidence level used: 0.95

We see that accuracy is roughly 1% lower in the ego-depletion compared to the control condition.

We can also plot both effects.

plot_grid(
  afex_plot(e1_anova, "congruency", error = "within", 
            data_geom = geom_quasirandom, data_alpha = 0.3) + 
    coord_cartesian(ylim = c(0.25, 1)),
  afex_plot(e1_anova, "condition", error = "within", 
            data_geom = geom_quasirandom, data_alpha = 0.3) +
    coord_cartesian(ylim = c(0.25, 1))
)

Mixed Model Analysis

A model with a more appropriate conditional distribution (instead of the normal distribution used by ANOVA) are generalized linear models with a binomial family. Because we have repeated measures both within participants within each design cell and across cells (i.e., we have within-subject factors) we need to use a mixed model. Thus, we have to employ a generalized linear mixed model (GLMM) with a binomial family. Here, we use the canonical link function, the logit (an alternative would be probit).

In our call to mixed we indicate the fact that we want to estimate a binomial GLMM (in contrast to a regular LMM) by passing the correct family, family = binomial. We could further specify the link function (e.g., family = binomial(link = "probit")), but because we use the canonical link here, this is not necessary.

As for all mixed models, we should begin our analysis with the “maximal random effect structure justified by the design” (Barr et al., 2013), the maximal model. Because all factors vary within-subjects in the present case and we only consider one random-effects grouping factor (participant), the maximum random effect structure involves by-participant random intercepts as well as by-participant random slopes for factors congruency, condition, and their interaction, as well as the correlation among the random effect parameters.

If you need an introduction to the topic of the random effect structure, consider reading our introduction to mixed models (Singmann & Kellen, 2019). A worked example of how to reduce the maximal model in case of converging warnings is provided in the mixed model vignette.

Another important decision when fitting a mixed model with afex::mixed is the choice of the method for testing model terms. The default method is the Kenward-Roger approximation. However, this is not possible for GLMMs (i.e., it only applies to LMMs). For GLMMs we only have two methods available, likelihood ratio tests (method = "LRT") and parametric bootstrap (method = "PB"). Parametric bootstrap is generally the preferable procedure, especially in settings with small N, specifically low numbers of levels for the random effects grouping factor (i.e., few participants in the present case). However, parametric bootstrap can be prohibitively time consuming as it requires refitting the model several times (suggested is at last a 1000 times per model term/effect). The main factor influencing the time is therefore the complexity of the random effect structure. Even with only a moderately complex structure, such as in the present case, it can take days (even though computations can be distributed on a multi-core machine as shown below).

One rule of thumb (for which I have never seen any actual data) is that with more than around 50 levels for each random effects grouping factor, likelihood ratio tests are probably okay and parametric bootstrap not necessary. Luckily, in the present case we have over 250 participants (i.e., way more than 50), so we decide to use likelihood ratio tests as a method for testing model terms (i.e., method = "LRT").

Setting-Up and Fitting the Models

There are two ways on how to set up such models in afex::mixed (lme4 provides another third variant that is not possible in afex::mixed). Before describing both ways, the somewhat surprising fact is that the second way, based on the aggregated data, is considerably faster than the first way. In the present case the first way takes more than an hour on my laptop whereas the second way takes only around one minute!

To understand the two different ways, it might help to recall some basics about the binomial distribution. It is defined by the number of observations and the number of successes and has one parameter, the success probability. Because we want to estimate the parameter of the binomial distribution, the success probability, we have to pass two pieces of information to the mixed function; the number of successes and the total number of trials. The easiest way to do so with the current data is by directly passing the accuracy column acc. It only consists of zeros and ones so the total number of observations is the number of trials, and the number of ones is the number of successes. The following code sets up the maximal model as discussed above using this approach. Note that fitting this model takes more than an hour (likely several hours).

e1_mixed1_v1 <- mixed(
  acc ~ congruency*condition + (congruency*condition|pno), 
  data = stroop_e1, 
  method = "LRT", 
  family = binomial
)

Before looking at the results, let us first discuss the alternative way of specifying the model. Note that the second way is usually considerably faster. This way consists of two steps. We first need to aggregate the data within each cell of the design and participant by calculating the proportion of correct responses and the number of trials for each cell. Then we can pass these two pieces of information to mixed, the proportion of successes as the dependent variable and the total number of successes as a weight. These two pieces of information again provide all information required for the binomial distribution. However, note that it is important that proportion times the weight provide an integer number, the actual number of successes which cannot have a decimal part.

At first, we need to aggregate the data. For this, we can use the following dplyr syntax.

stroop_e1_agg <- stroop_e1 %>% 
  group_by(condition, congruency, pno) %>% 
  summarise(acc = mean(acc), 
            n = n())

Then, we can set up the model. Note that we need to pass the total number of trials as the weight argument here. mixed now supports the exact same syntax as glmer so we can pass simply the unquoted name of the column holding the weights, weight = n.

The call to mixed is then pretty much the same as above, the only differences are that we have to use the data.frame with the aggregated data, potentially a new name of response variable (here I decided to use the same name, acc for the aggregated accuracy), and the weight argument.

e1_mixed1_v2 <- mixed(
  acc ~ congruency*condition + (congruency*condition|pno), 
  data = stroop_e1_agg, 
  method = "LRT", 
  family = binomial,
  weight = n
)

Dealing with Fit Warnings

Before looking at the results, we see that fitting produces quite a few warnings. These are reproduced below in the way we would also get them when simply typing in the object name (e.g., e1_mixed1_v2). The following are the warnings for the first variant, e1_mixed1_v1.

## Warning: lme4 reported (at least) the following warnings for 'full':
##   * Model failed to converge with max|grad| = 0.00378454 (tol = 0.002, component 1)
## Warning: lme4 reported (at least) the following warnings for 'congruency':
##   * Model failed to converge with max|grad| = 0.146845 (tol = 0.002, component 1)
## Warning: lme4 reported (at least) the following warnings for 'condition':
##   * Model failed to converge with max|grad| = 0.0860405 (tol = 0.002, component 1)
## Warning: lme4 reported (at least) the following warnings for 'congruency:condition':
##   * Model failed to converge with max|grad| = 0.0181415 (tol = 0.002, component 1)

And these are the warnings for the second variant, e1_mixed1_v2.

## Warning: lme4 reported (at least) the following warnings for 'full':
##   * Model failed to converge with max|grad| = 0.0142323 (tol = 0.002, component 1)
## Warning: lme4 reported (at least) the following warnings for 'congruency':
##   * Model failed to converge with max|grad| = 0.134205 (tol = 0.002, component 1)
##   * Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?
## Warning: lme4 reported (at least) the following warnings for 'condition':
##   * Model failed to converge with max|grad| = 0.120362 (tol = 0.002, component 1)
##   * Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?
## Warning: lme4 reported (at least) the following warnings for 'congruency:condition':
##   * Model failed to converge with max|grad| = 0.0534769 (tol = 0.002, component 1)

Both variants show quite a few warnings. The warnings are given separately for the different models estimated (i.e., full model with all terms and one model for each term removed from the full model). However, none of the warnings is the dreaded “singular fit” warning that clearly suggests an over-parameterised model. We therefore will be working with this random effect structure going forward.

Here, we have two different warnings suggesting some numerical issue at the maximum likelihood estimate. One warning tells us that for the result returned from the fitting (i.e., optimization) algorithm the absolute gradient of the deviance function is not small (i.e., there might be a better global optimum that was not discovered). Another warning relates to the size of the eigenvalue which suggests something similar, there might be better solutions in the parameter space. More on these warnings can be found in the lme4 help at ?troubleshooting (or help("troubleshooting", package = "lme4")).

Given that both types of warnings are not too dramatic, one way to address them is by trying different optimizers. mixed makes this easy via the all_fit argument, if TRUE several optimizers are applied to the output from the regular run (make sure to install packages optimx and dfoptim to use all possible available optimizers).

e1_mixed1_v2_allfit <- mixed(
  acc ~ congruency*condition + (congruency*condition|pno), 
  data = stroop_e1_agg, 
  method = "LRT", 
  family = binomial,
  weight = n, 
  all_fit = TRUE 
)
## Warning: lme4 reported (at least) the following warnings for 'full':
##   * Model failed to converge with max|grad| = 0.123381 (tol = 0.002, component 1)
##   * Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?
## Warning: lme4 reported (at least) the following warnings for 'congruency':
##   * Model failed to converge with max|grad| = 0.137517 (tol = 0.002, component 1)
##   * Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?
## Warning: lme4 reported (at least) the following warnings for 'condition':
##   * Model failed to converge with max|grad| = 0.128127 (tol = 0.002, component 1)
##   * Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?
## Warning: lme4 reported (at least) the following warnings for 'congruency:condition':
##   * Model failed to converge with max|grad| = 0.130338 (tol = 0.002, component 1)
##   * Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?

Somewhat surprisingly the fit using all optimizers produces more convergence warnings than the previous fit. However, all warnings are of the same type as for the other variants.

Another way to deal with the warnings is by fitting a variant of the model with reduced random effect structure. Hopefully this model will not produce the warning, but similar results. If warnings are more severe than the current warning, fitting a reduced model is surely indicated. Critical warnings that make it necessary to reduce the model are for example a singular fit warning or a warning that the algorithm did not converge within the allowed number of iterations. Nevertheless, if this were a real data analysis for a manuscript it would probably still make sense to reduce the random effect structure, beginning with the correlation among the random effect parameters, until the warnings are gone. Then, we would compare the final (i.e., reduced) model with the maximal model to ensure that the pattern of significant and non-significant effects is the same in both cases (if not, this needs to be reported transparently). An example of such an iterative reduction of the random effect structure is given in the mixed model vignette.

ANOVA Table for GLMMs

We can now print the model to get the resulting ANOVA table, that is the table of model terms (i.e., main effects and interactions), as for the regular ANOVA model. Doing so would normally also reproduces the warnings shown above but is suppressed here.

We show the results of the three variants in turn.

e1_mixed1_v1 ## variant 1
## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: acc ~ congruency * condition + (congruency * condition | pno)
## Data: stroop_e1
## Df full model: 14
##                 Effect df      Chisq p.value
## 1           congruency  1 321.00 ***   <.001
## 2            condition  1  11.08 ***   <.001
## 3 congruency:condition  1     4.23 *    .040
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
e1_mixed1_v2  ## variant 2
## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: acc ~ congruency * condition + (congruency * condition | pno)
## Data: stroop_e1_agg
## Df full model: 14
##                 Effect df      Chisq p.value
## 1           congruency  1 321.05 ***   <.001
## 2            condition  1  11.10 ***   <.001
## 3 congruency:condition  1     4.23 *    .040
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
e1_mixed1_v2_allfit  ## variant 2 with all_fit = TRUE
## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: acc ~ congruency * condition + (congruency * condition | pno)
## Data: stroop_e1_agg
## Df full model: 14
##                 Effect df      Chisq p.value
## 1           congruency  1 320.96 ***   <.001
## 2            condition  1  11.06 ***   <.001
## 3 congruency:condition  1     4.23 *    .040
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

As can be seen, the results of the three different variants are extremely similar. Especially the fact that the results from variant 2 and the variant with all_fit = TRUE are pretty much the same suggests that we can have some confidence in the results.

As for the ANOVA we see significant main effects of congruency and condition. However, we also see a significant congruency by condition interaction. As a reminder, this interaction is the precondition of the central ego depletion prediction.

Follow-Up Analysis and Plots

Let us first look at the main effects as for the ANOVA model. For this, we will always use the model with all_fit = TRUE, e1_mixed1_v2_allfit. For easier interpretability, we also always set type = "response" in the call to emmeans. This provides estimated marginal means on the response scale (i.e., in probability units after applying the inverse link function). In case of the default (i.e., type = "link") marginal mean are given on the linear scale which in this case is the logit scale.

emmeans(e1_mixed1_v2_allfit, "congruency", type = "response")
## NOTE: Results may be misleading due to involvement in interactions
##  congruency      prob          SE  df asymp.LCL asymp.UCL
##  congruent   0.982434 1.44579e-05 Inf  0.982406  0.982463
##  incongruent 0.909378 6.89756e-05 Inf  0.909242  0.909513
## 
## Results are averaged over the levels of: condition 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale

We again see the Stroop effect. Accuracy is higher for congruent compared to incongruent items.

We also look at the effect of condition.

emmeans(e1_mixed1_v2_allfit, "condition", type = "response")
## NOTE: Results may be misleading due to involvement in interactions
##  condition    prob         SE  df asymp.LCL asymp.UCL
##  control   0.96299 2.9834e-05 Inf   0.96293   0.96305
##  deplete   0.95570 3.5437e-05 Inf   0.95563   0.95577
## 
## Results are averaged over the levels of: congruency 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale

We see that accuracy is roughly 1% lower in the ego-depletion compared to the control condition.

We can also plot both effects as above. We essentially only have to replace the model name in the calls to afex_plot. However, we also remove the error = "within" to show model-based error bars.

plot_grid(
  afex_plot(e1_mixed1_v2_allfit, "congruency", 
            data_geom = geom_quasirandom, data_alpha = 0.3) + 
    coord_cartesian(ylim = c(0.25, 1)),
  afex_plot(e1_mixed1_v2_allfit, "condition",  
            data_geom = geom_quasirandom, data_alpha = 0.3) +
    coord_cartesian(ylim = c(0.25, 1))
)
## Aggregating data over: pno
## NOTE: Results may be misleading due to involvement in interactions
## Aggregating data over: pno
## NOTE: Results may be misleading due to involvement in interactions

Finally, we can also have a look at the interaction. One way to do so is by looking at the reference grid of the two variables.

emmeans(e1_mixed1_v2_allfit, c("congruency", "condition"), type = "response")
##  congruency  condition     prob          SE  df asymp.LCL asymp.UCL
##  congruent   control   0.984783 1.77534e-05 Inf  0.984748  0.984817
##  incongruent control   0.912742 9.42464e-05 Inf  0.912558  0.912927
##  congruent   deplete   0.979731 2.35033e-05 Inf  0.979685  0.979777
##  incongruent deplete   0.905897 1.00894e-04 Inf  0.905699  0.906094
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale

Alternatively, we can look at the effect of congruency conditional on condition. As will be shown below, this has some benefits. And because we will use this emmeans object later, we assign it to emm_inter_1.

emm_inter_1 <- emmeans(e1_mixed1_v2_allfit, "congruency", 
                       by = "condition", type = "response")
emm_inter_1
## condition = control:
##  congruency      prob          SE  df asymp.LCL asymp.UCL
##  congruent   0.984783 1.77534e-05 Inf  0.984748  0.984817
##  incongruent 0.912742 9.42464e-05 Inf  0.912558  0.912927
## 
## condition = deplete:
##  congruency      prob          SE  df asymp.LCL asymp.UCL
##  congruent   0.979731 2.35033e-05 Inf  0.979685  0.979777
##  incongruent 0.905897 1.00894e-04 Inf  0.905699  0.906094
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale

With this object, it is now particularly easy to see if there are indeed differences in the Stroop effects across conditions. We can simply use the pairs function which will only calculate pairwise comparisons for each level of the by factor `conditions. Because of the significant interaction this shows that there is evidence for a reduced Stroop effect in the deplete condition. The odds ratio are around 5 in the deplete condition and over 6 in the control condition.

pairs(emm_inter_1)
## condition = control:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      6.187 0.010362 Inf    1 1088.115  <.0001
## 
## condition = deplete:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      5.021 0.008404 Inf    1  964.109  <.0001
## 
## Tests are performed on the log odds ratio scale

We can of course also plot the interaction. We use violin plots for the data to make this plot somewhat appealing.

afex_plot(e1_mixed1_v2_allfit, "condition", "congruency", 
          data_geom = geom_violin)
## Aggregating data over: pno

For reference, we can also make the plot based on the model using variant 1 (i.e., based on trial-wise non-aggregated data) which produces the same figure.

afex_plot(e1_mixed1_v1, "condition", "congruency", 
          data_geom = geom_violin)
## Aggregating data over: pno

Analysis of Two Studies with GLMM

The stroop data set contains all four experiments of Lin et al. (2020). So far we only looked at Experiment 1. Here, we want to look at Experiments 1 and 2 to show some additional functionality of analysing accuracy data with GLMMs. Let us begin by preparing the data.

## extract data from experiment 1 and remove NAs
stroop_e12 <- stroop %>%
  filter(!is.na(acc)) %>% 
  filter(study %in% c("1", "2")) %>% 
  droplevels()

We then have a look at the number of participants per experiment. As can be seen below, there is a clear imbalance with Experiment 1 having a lot more participants than Experiment 2. We will see below what we can do with this information.

stroop_e12 %>% 
  group_by(study) %>% 
  summarise(n = length(unique(pno)))
## # A tibble: 2 × 2
##   study     n
##   <fct> <int>
## 1 1       253
## 2 2       132

But first, we aggregate the data for analysing it using the second variant introduced above as it is dramatically faster.

stroop_e12_agg <- stroop_e12 %>% 
  group_by(study, condition, congruency, pno) %>% 
  summarise(acc = mean(acc), 
            n = n())

We are now ready to fit the model. However, because we now have to fit 8 models in total and we also have more data at hand, fitting will take quite a bit longer even when using the aggregated data. Especially, because based on our experience with the data from Experiment 1, it makes sense to set all_fit = TRUE here.

Estimating Models in Parallel

Therefore, it makes sense to reduce our fitting time by distributing the estimation across the available CPU cores using the parallel package support provided by mixed. Note that this simply distributes the different models across cores (i.e., each individual fit is still run on a single core). For this, we need to set up a cluster, cl, and then pass this cluster to mixed.

library("parallel")
nc <- detectCores() # number of cores
cl <- makeCluster(rep("localhost", nc)) # make cluster

We can then fit the model using the new data in a similar manner as above. The main changes are that we add *study to the fixed effects part of the model formula which estimates main effects and all interactions with study. We do not estimate any random slopes for study because participants are in only one study (i.e., study is a between-subjects factor). We also enable multi-core estimation by setting cl = cl.

e12_mixed1 <- mixed(
  acc ~ congruency*condition*study + (congruency*condition|pno), 
  data = stroop_e12_agg, 
  method = "LRT", 
  family = binomial,
  weight = n, 
  all_fit = TRUE, 
  cl = cl
)

Type III versus Type II Sums of Squares

The default type argument when using mixed (and the other afex functions) is 3 which estimates so-called type III sums of squares tests of model terms. There is a somewhat heated discussion on these topics in the literature which I do not want to rehash here (more can be found in our chapter). In short, the distinction between Type III (default in afex) and Type II (recommended by some vocal statisticians) is about how to deal with imbalance (i.e., different group sizes). Type III sums of squares assume that the imbalance is random and estimates a model in which all groups are assumed to have equal sizes. In contrast, using Type II sums of squares the differences in group sizes are assumed to be meaningful (e.g., as a consequence of different group sizes in the environment) and the model is set-up such that the differences in group sizes are represented.

Remember that the first experiment (study 1) had a lot more participants than the second experiment (study 2). However, the default Type III tests treat both studies as having the same sample size. In this case it might therefore make sense to also look at the results with Type II tests. For this, we simply need to add type = 2 (or equivalently type = "II") to the call as shown below.

e12_mixed1_t2 <- mixed(
  acc ~ congruency*condition*study + (congruency*condition|pno), 
  data = stroop_e12_agg, 
  method = "LRT", 
  family = binomial,
  weight = n, 
  all_fit = TRUE, 
  cl = cl,
  type = 2
)

Fitting both models shows a number of warnings similar to the previous model which we do not reproduce here. Because we are done with fitting models in parallel, we stop the cluster.

stopCluster(cl)

Let us instead take a look at the results.

We begin with the Type III model.

e12_mixed1
## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: acc ~ congruency * condition * study + (congruency * condition | 
## Model:     pno)
## Data: stroop_e12_agg
## Df full model: 18
##                       Effect df      Chisq p.value
## 1                 congruency  1 453.65 ***   <.001
## 2                  condition  1   10.43 **    .001
## 3                      study  1       0.14    .705
## 4       congruency:condition  1       1.72    .190
## 5           congruency:study  1       0.33    .566
## 6            condition:study  1       1.60    .205
## 7 congruency:condition:study  1       1.46    .226
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

The results are now more in line with the results from the ANOVA analysis. We only see significant main effects of congruency and condition, but no congruency by condition interaction. Furthermore, no effect involving study is significant.

Let us now take a look at the Type II results.

e12_mixed1_t2
## Mixed Model Anova Table (Type 2 tests, LRT-method)
## 
## Model: acc ~ congruency * condition * study + (congruency * condition | 
## Model:     pno)
## Data: stroop_e12_agg
## Df full model(s): 14, 14, 14, 17, 17, 17, 18
##                       Effect df      Chisq p.value
## 1                 congruency  1 482.39 ***   <.001
## 2                  condition  1  11.57 ***   <.001
## 3                      study  1       0.21    .646
## 4       congruency:condition  1     2.86 +    .091
## 5           congruency:study  1       0.28    .598
## 6            condition:study  1       1.42    .234
## 7 congruency:condition:study  1       1.46    .226
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

These look quite similar with one difference. The congruency by condition interaction is still not significant, however, the p-value is below .1.

Taken together the results somewhat suggest that the congruency by condition interaction is a pattern mainly found in (the larger) Experiment 1, but not in Experiment 2. In the Type III analysis in which both studies are weighed equally the interaction therefore does not reach significance. In contrast, in the Type II analysis in which the additional participants of Experiment 1 have a larger influence on the interaction, the p-value drops and is nearer the .05 cut-off. However, the difference in the interaction between the experiments is also not too large as the three way interaction of congruency by condition by study is clearly not significant (and as the highest order effect, this effect has to be the same for both types of sums of squares).

Follow-Up Tests for Type II Models

We can now of course also plot the data. Let us plot the congruency by condition interaction as before. We begin with the plot of the Type III model.

afex_plot(e12_mixed1, "condition", "congruency", 
          data_geom = geom_violin)
## Aggregating data over: pno
## NOTE: Results may be misleading due to involvement in interactions

We then plot the interaction of the Type II model.

afex_plot(e12_mixed1_t2, "condition", "congruency", 
          data_geom = geom_violin)
## Aggregating data over: pno
## emmeans are based on full model which includes all effects.
## NOTE: Results may be misleading due to involvement in interactions

Both look pretty much the same and actually are the same. The reason for this is also given as a message when producing the second plot. When using mixed Type II models, all follow-up tests (which includes plotting via afex_plot) are based on the full model. However, Type II model tests are not all based on the full model. Rather, for tests of lower-order effects higher order effects are not part of the comparison (i.e., tests of two-way interactions such as the congruency by condition interaction are compared against a reference model that only includes all two-way interactions and not the three-way interaction).

We can also see this when comparing the corresponding emmeans for both models:

emmeans(e12_mixed1, c("congruency", "condition"), type = "response")
## NOTE: Results may be misleading due to involvement in interactions
##  congruency  condition     prob          SE  df asymp.LCL asymp.UCL
##  congruent   control   0.983752 1.54389e-05 Inf  0.983722  0.983782
##  incongruent control   0.913573 7.61899e-05 Inf  0.913423  0.913722
##  congruent   deplete   0.980078 1.88459e-05 Inf  0.980040  0.980114
##  incongruent deplete   0.905551 8.25395e-05 Inf  0.905390  0.905713
## 
## Results are averaged over the levels of: study 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale
emmeans(e12_mixed1_t2, c("congruency", "condition"), type = "response")
## NOTE: Results may be misleading due to involvement in interactions
##  congruency  condition     prob          SE  df asymp.LCL asymp.UCL
##  congruent   control   0.983752 1.54389e-05 Inf  0.983722  0.983782
##  incongruent control   0.913573 7.61899e-05 Inf  0.913423  0.913722
##  congruent   deplete   0.980078 1.88459e-05 Inf  0.980040  0.980114
##  incongruent deplete   0.905551 8.25395e-05 Inf  0.905390  0.905713
## 
## Results are averaged over the levels of: study 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale

We again see that they are identical. Thus, the Type II outputs do not actually reflect Type II tests.

A more appropriate way to look at this two-way interaction would be to use a model that reflects the Type II tests; that is, a model without the three-way interaction. A variant of this model is part of the e12_mixed1_t2 object. However, because of the way afex::mixed creates the set of tests, this model is parameterized in a different way so we cannot pass it to emmeans for tests. Therefore, we have to refit the model without the three-way interaction. We do so by changing the fixed effects part of the formula to (congruency+condition+study)^2 which means all main effects and up to two-way interactions.

e12_mixed1_t2_red <- mixed(
  acc ~ (congruency+condition+study)^2 + (congruency*condition|pno), 
  data = stroop_e12_agg, 
  method = "LRT", 
  family = binomial,
  weight = n, 
  all_fit = TRUE, 
  cl = cl,
  type = 2
)
e12_mixed1_t2_red
## Mixed Model Anova Table (Type 2 tests, LRT-method)
## 
## Model: acc ~ (congruency + condition + study)^2 + (congruency * condition | 
## Model:     pno)
## Data: stroop_e12_agg
## Df full model(s): 14, 14, 14, 17, 17, 17
##                 Effect df      Chisq p.value
## 1           congruency  1 482.39 ***   <.001
## 2            condition  1  11.57 ***   <.001
## 3                study  1       0.21    .646
## 4 congruency:condition  1     2.86 +    .091
## 5     congruency:study  1       0.28    .598
## 6      condition:study  1       1.42    .234
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

We first have a look at the resulting ANOVA table (note, we suppress the warnings again here). As expected, the Type II tests are the same as in e12_mixed1_t2, because they are based on the exact same models.

We then take a look at the marginal means for the two-way interaction of congruency by condition.

emmeans(e12_mixed1_t2_red,  c("congruency", "condition"), type = "response") 
## emmeans are based on full model which includes all effects.
##  congruency  condition     prob          SE  df asymp.LCL asymp.UCL
##  congruent   control   0.983835 1.51410e-05 Inf  0.983806  0.983865
##  incongruent control   0.912916 7.55995e-05 Inf  0.912768  0.913064
##  congruent   deplete   0.979895 1.87376e-05 Inf  0.979858  0.979931
##  incongruent deplete   0.905955 8.10300e-05 Inf  0.905796  0.906114
## 
## Results are averaged over the levels of: study 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale

We can see these are now a bit different from the previous one, but not by a lot. A better way to see the difference is to use the same approach as above and look at the estimated Stroop effects for each condition.

For the correct Type II model these are given by the following call:

emmeans(e12_mixed1_t2_red, "congruency", by = "condition", 
        type = "response") %>% 
  pairs()
## emmeans are based on full model which includes all effects.
## condition = control:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      5.806 0.007814 Inf    1 1306.888  <.0001
## 
## condition = deplete:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      5.059 0.006805 Inf    1 1205.405  <.0001
## 
## Results are averaged over the levels of: study 
## Tests are performed on the log odds ratio scale

For the wrong Type II model these are given below:

emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response") %>% 
  pairs()
## emmeans are based on full model which includes all effects.
## NOTE: Results may be misleading due to involvement in interactions
## condition = control:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      5.728 0.007817 Inf    1 1278.953  <.0001
## 
## condition = deplete:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      5.131 0.006999 Inf    1 1198.815  <.0001
## 
## Results are averaged over the levels of: study 
## Tests are performed on the log odds ratio scale

We can see that as expected the magnitude of the difference between the Stroop effects is smaller in e12_mixed1_t2 (5.73 vs. 5.13) than in e12_mixed1_t2_red (5.81 vs. 5.06).

One way to approximate the latter behaviour without actually refitting the model is by passing submodel = "minimal" (which in the present case is identical to submodel = ~congruency*condition, see also the corresponding emmeans vignette). This does not produce exact Type II marginal means as when actually refitting the model. But at least approximates those.

emmeans(e12_mixed1_t2, "congruency", by = "condition", type = "response", 
        submodel = "minimal") %>% 
  pairs()
## emmeans are based on full model which includes all effects.
## NOTE: Results may be misleading due to involvement in interactions
## condition = control:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      5.828 0.008192 Inf    1 1253.988  <.0001
## 
## condition = deplete:
##  contrast                odds.ratio       SE  df null  z.ratio p.value
##  congruent / incongruent      5.110 0.007365 Inf    1 1131.878  <.0001
## 
## Results are averaged over the levels of: study 
## Tests are performed on the log odds ratio scale

Finally, we can also use this model to plot the two-way interaction.

afex_plot(e12_mixed1_t2_red, "condition", "congruency", 
          data_geom = geom_violin)
## Aggregating data over: pno
## emmeans are based on full model which includes all effects.

References

  • Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. Journal of Memory and Language, 68(3), 255–278. https://doi.org/10.1016/j.jml.2012.11.001
  • Lin, H., Saunders, B., Friese, M., Evans, N. J., & Inzlicht, M. (2020). Strong Effort Manipulations Reduce Response Caution: A Preregistered Reinvention of the Ego-Depletion Paradigm. Psychological Science. https://doi.org/10.1177/0956797620904990
  • Singmann, H., & Kellen, D. (2019). An Introduction to Mixed Models for Experimental Psychology. In D. H. Spieler & E. Schumacher (Eds.), New Methods in Cognitive Psychology (pp. 4–31). Psychology Press.
afex/inst/doc/assumptions_of_ANOVAs.R0000644000176200001440000000451114665070065017234 0ustar liggesusers## ----echo=FALSE------------------------------------------------------------------------- req_suggested_packages <- c("see", "performance", "ggplot2") pcheck <- lapply(req_suggested_packages, requireNamespace, quietly = TRUE) if (any(!unlist(pcheck))) { message("Required package(s) for this vignette are not available/installed and code will not be executed.") knitr::opts_chunk$set(eval = FALSE) } ## ----set-options, echo=FALSE, cache=FALSE----------------------------------------------- options(width = 90) knitr::opts_chunk$set(dpi=72) ## ----message=FALSE---------------------------------------------------------------------- library(afex) library(performance) # for assumption checks ## --------------------------------------------------------------------------------------- data(obk.long, package = "afex") o1 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender")) check_homogeneity(o1) ## --------------------------------------------------------------------------------------- data("fhch2010", package = "afex") a1 <- aov_ez("id", "log_rt", fhch2010, between = "task", within = c("density", "frequency", "length", "stimulus")) ## --------------------------------------------------------------------------------------- check_sphericity(a1) ## ----eval = FALSE----------------------------------------------------------------------- # afex_options( # correction_aov = "GG", # or "HF" # emmeans_model = "multivariate" # ) ## --------------------------------------------------------------------------------------- data("stroop", package = "afex") stroop1 <- subset(stroop, study == 1) stroop1 <- na.omit(stroop1) s1 <- aov_ez("pno", "rt", stroop1, within = c("condition", "congruency")) is_norm <- check_normality(s1) plot(is_norm) plot(is_norm, type = "qq") ## --------------------------------------------------------------------------------------- plot(is_norm, type = "qq", detrend = TRUE) ## --------------------------------------------------------------------------------------- s2 <- aov_ez("pno", "rt", stroop1, transformation = "log", within = c("condition", "congruency")) is_norm <- check_normality(s2) plot(is_norm, type = "qq", detrend = TRUE) afex/inst/extdata/0000755000176200001440000000000014637560451013617 5ustar liggesusersafex/inst/extdata/plots_brms.rda0000644000176200001440000002445014413616402016466 0ustar liggesusers} }gEEO#`c3Ҿ|I@#1ήggc%c&Ipp";ϗ\r#>Nu:`c񒅼\C]?k{z=3f\k#O"(D!1ҧdv@Hb@ 6Ro56.]ZQ||6L ޴~")J#cF$=˱9錶(?JesWj!uVLy˪]gV&ǖiG\&uZ|:1o<0B v)0vƅݛ~ϻTb6THQRI؉.psrۛ^,H5qK>rz^sxĢp`}L>ҟͮ1?K DJ> BapV[ƜV>V&F')xp\>Τ`G%9e=(,[ֲJ&uWWe#1!lQAQڐ-imSZ] !F!]%v1 d7~2V^,pzL0q/)#cR6XS"x6OK7/-ҳi.t&+Zxխ-ٷ2ڪ|\vQg]bFLzF1g8"gE&ү~j`ҀH*k :]7yzgݶ#zقsFSӬq"w&u@>1:fv9'kɧts 5cƹςr./uV拽ֈxpDN`V/88GGl:GuH~a,1i)cR3(QM8F(CSƯnĭy)}B+ҥ0D4UG<2¢B!B $ ʔPD|rG.=Ai]2/<5'4[ #6W!Q@R͸1K0ykQl +VQ*Y(Ԫ0IA|-L15_j14v gw{Wnk5 ..+@HZ  k3-$$p̧^ vv5Cdн֭3.kE?<¤kְ<j1!(i܉4u!@HZ C&JW1zDZ4)MD/kIkR&֖(q^ul4YG.Y582a `+H3L{zsŧbɥزA=mQLHѕf%@6ZfAe:nB;q6CdS=BXhvvV<挶^tPF0 rEgy ~OI};ՔΜ9å#oEk |6¤bm|6j1 X+݉ͬ!@HZ gMwuh g>RWcnXFO67|*;j'ǂP˖QM6#^ׅs-i $| rR1/i\ ~_OVzt܀Ʌr/; BƜV>9qNә ,!=a?D0qL Q~fŐWXyG!bnD >Q^^S Z'Dチ[LJzg]&Ӹ;GyOeK7=> E {rYg^3eʪb{Oy;S1{,dXw{KSwQ-o|5pEl08s)cFh7͈fek5#d(Yn7 .ǰeaAi }-]gLM(z(SkzyvYyw}^xg+]8E_Q#g=ϟ 8xtuёSb֓yeSz-}7۴Uwoϼe=o%=񻟺G>S~5__/۱^`9Ŀ}bT_Ͽ>ծ\}4vz??W_~ǃ3;oQOOp]Z=O?~+O~䱟xsy꫋w>Lߟ'vcg^xR=kvD ff:7m+N:a\*;c.^0Ee|U1}^>iH hvzPLhMO'5B6nV^{[#dx誊R U*q*_B9Jq #SGdnQ8ۇc~y2R_~zlX=ejSpY)=&̣%{Y`_QLi[eU5<]xYtު>3zv#hԺK6;lwuÓO|{?B4?zyd=㩽o!FU &Q+0a sH"R)27,3ӦE۪nR( ) i 5e 7 o$G|'1 >H4}f]-<E^in2ۨT'pj*nE|ۧ"]KtU5r2_FdOsEyZH˶R>(+M˿ip ۽t]uK*]2XCEU(S!.\5lpDD Dh?PWQa+WcR6]U}Fq%YҊ8ltH ҙ0 ΂/(FЖj#l[}MxlvQ>@4ˮA!0xhQ} :uNU/Z[ZahDDh) NC+ 01W`h !0 ҙI*`h CZio)ԫ7Aʇ7996DMc@I Hɽ!Q)'*l~&  UA٤J|xFbK3V%V]ZUo$0K ̶Q/x#p!F7  BNY@pBx# jwjG5B] ҙI*ToH.kOٳ/+ΊaTͺ'–A;w 2)\J>94cҡH -XcЀH170B?e `$wj3/FRpApAI!A:3Ie<ټNrL}H Z1竜cI.GWecB.+hI\5}z>(UAX4k|lU8G Q(¹*rjkAeA{ٸj'qhs"1R63NfR] ͦMSˤt4u[ʊ yEH{e =!C*- cA0)K K:?H\@l  @ક"F{r6sK~H7u/NgYe.YM]]bVc`Vm¬8 n&y,!lQ vU%-8P(BXeQ`ؠоW=lP0Ѷb=.8J[NLש2](_ַ@,B2ق KN[zU21Jn3+9匵ї#a/9GYE ,z+ pM4@ 4E4$pkG#X=Pۤ|C_ a]y-܎!gӐǥ4fJaü^z1-ieOٖI0ÖŜ6bOܰnX'-pdJ3#>߻ZowrH^w)RhLqH|FEY7 nj/R%Eǖ' ,]-RH@KW0v7u%%%`k'lZfXu~!bKpApfp1A HR`i&%mjN,bak&F [L-#5]銔{/ڕ+Ͼ)ͯ{]JZg\OQMʑd_ҏ1OzC-jr}#HNһwtnR,]uL s02܉De, B8!`[M9?XAHXA` /[l|niz \p 6 -ҙ0 Ϊ4r!>9A{x7zbk,p ckbXzGdY/ȮJ8^{(lw. #[!Cllб f/:"e14{ͪ+d H%a6#6_ŊE pnQ7ړ%E^tLa7HAx6DPE-I·l?_),^ׅ8s-icRa;OvZU4ŜzǕ ִkA;6Z-rۣXvUOS+ڲ\ƅ<2֗RZ] }#_2_dlܝ#rj~!' 8"8b9"e^ՙyK.-(Imz.!,-(A(Sn_[R҅WKk9aj4+(|+g|l ~z|svLz]{W.r)v5^Q%-R^".׀wt D" PPPJ 5F "Mݩ'l>fw YkBBi,ݤ8V`DJpApfpq)R &_b%h|qlƍY:0HM*ВʳT bkעWUVQRaq Zcj%%%%b +l fX\_,B ȨR ,6BB|UB&a``WOfh ݻ:+>VD}C L k ;C((((3 ƝQIPpApAx@ ȨR <!`y/ bC%r#5VM g*ы$EҚT﵉%JWfM֑fV Ia+H3L{SzsŧbɥG[qpnx N.sB*sX1X#9{<\?Og2XXLtSm3)DIjuZZQC^Q&Fvc] e.#ڊu/K\c&0f @y9IV+k͏Boe3A+ jtZuK\׏N|dwᡍ3>z3^,j֙׌/eټ΀#cΔa&GiH T9=Ҙ! :驗"z/[yw%R" G "4MsPN+Xܚ_Q{]xS#֑ںߴY=ݱ߿)qzsF.z>m8^/tq&PRo Uue }Ws os#oCh` Beܲ/H;w!]=iSW 5>wP1/pc.gmyezUӫ+[/zvVӗR#+ɞ rXqe7G _]VE4MJ%VI"*Rb7Skf!.[J4lKpDD Dh?P~Qa? ~cR6&7D}F'!Ҋ {[\\I/C:tF U+7_zQB \-FXW%x|} ,ZnE-4iR:&ZTq`hmB`hu, B8! 0N\mfb5 ..C+3Hg&@: NhFUs[SR){̪6}#='|R5jC Rv*l~&  UA٤Jl.okTbB{XúV{ ,; gj H-\кS!HFڝQA oPo$pApAx#A:tf 3x#h& ESrE$j+EǹDD8U1reΝgy8tMXt(Rb>Xk,40v b:@@OY@pBIa$y<#i \\FRHgLRt#im O6/#-&#G_gBV z*X+n;$P ZAMvqJq}Vle>[qgpno \ZP?DPk5}6.Io =\63NfR] ͦMSˤt4u[ʊ yEM!2_H@a?<Pi! X)r~Is\@ 3 ͗!p!p\53vA Z-Q!aS?Խ8sfeٺزf5u!vYjfIp3iv[\f g;bHC*lioS B`j*"Gj\uTcbVx C[Wh_iAUWZ:[Dےӊ(ll1d:2]tUZKн%W\&[PYay0zn5Y\0UrYi-gb5Ga/9GON6l3AYVnPhxthKËhHpG#ӱ{gTI<&,?ZoC|y/!KiH͔B y6Ӊcvy[tʞ-I~ia-݋9m:aܙDZNN[ɺy,~oEGZkLr=`c{Τ;NvNľV4B\Et.{zIwPZDNgX:}Ug$u}Ǭ>wk̃r=)ydQL[eta;]mF8v .d|գV(Yafex/inst/extdata/tmb_example_fit.rda0000644000176200001440000010420014637560451017443 0ustar liggesusers7zXZi"6!XmD])ThnRʠ3T&2rmCi IYMNWVF=%ZYVڎ{`3f]hbDƇ*Smz>5GL=/bY3=GEX11ۂPue5uv|%Y'UYwg Z)'4sb=d\u,kؽnG^vomkؘRsȾuo[7gRL_;A zO Z 5|!/ dބGƜhߡT7WPX&) F+}Θ r䞈O@oOw+vTnACÊXӍ7D&ht<:!K}~ׁGsi|Cbn"25V^cQaAQ:"h=GmJ' .4Ϲ(tDv$!#;M8X6-*,!ն<m8Rӭ7DTٜ{Nbǐ_jMFE%e(˃HK MY?jC[QawU+L$XN;\?$VSi/BZ"D0Vլ]n G${:%>² BgywbArѝeWn8K_ (E)d.ZK!~]X@$wUN@Xyݡ;G7KeuߖmTҊy (5piijځlIg-9%tAN/I>6ߤ`BILa@agr-7l;Ck9H,Ű)]6*y-BDZjdoPo5ʛ piDQ%˻fIGNqpYe6#1!O cqEm]%Rp`鰫˛FV_ɡ8`=2cYO蠸O=!H)T t:f>gJIï g!;4΋+7,Aucs 'V8FxVZhVrU_s@Lkl  U򦯊6Oǯ|@;IN/Fu{2ߨ 6f~lbtkde P c H:GR!Jyl XŕY68vəlnwiٖΔJMGMMO$ "E;b+*t%<0Έ3X1FX ؄x|dA0XpzV錇PUS \oE<) ɸZxKg%$ol:W>pi/T84^-K/ \8<:=͛&g|dTvO۬1^ jW Jk<)V Guhtt5Y+ֳNIPx7.m'ScdLvo,4(gי;Nh*fvƢ5CiƮ+?*79QP%m=XϭTsFqzn}z=Žu9a.R3/nsK 0=|`4Fp ZӹrwSt!!g38#Ʌ2)ȼ>%U')uh1ҰO r95ʍWf;TڪM6%-~ 浡U.g B^噜 JriygԫH{$\M߾XA~_ 2ޯ|5>jSCULP)9~l0K߂Iw$/QP4E qxxgt`,dˌA<%if@JL2Wv E2<.qD{Dm}7wĤ)CK~3+i;GD-xu_kqkwL \7Uuy@AAIj"љI|nPD8m~o/9ChLM.Ն-굣d[vtkW,JJv+%"\LwA'H;%kOLvtI2gW.)2?z\m1{ߓ~o|.'>1̣aʭl5xu/cP\gLUS= 6*Lbqnue] *%|%n-2%AʒȌ,*, ذ6k{0*hوEʱ% 08->DcבAL89|\N9_eΖ`,S,l3$p9,nU>]Innwh 0ne*[*@% >-1ӭlODϜ퉕?>^E\>xj'o-ꈠeVsXy[xFa~4 ;y´{&"i_];@T*#eFFD=1b2hql) 0@Nd&HZ?l.'gu`WNvj8F/M&P G۲QZ*6!ul$'uQfnp,?ʝ}; ΀JX I%OXj54w)CZ` ,cXQ4JelAyz<MhȦPc8TaZcK5]rَ,m\`l5'üT_ ʩk7DR sCrv;X؅5Ԯ-|\{C{]mM+n5hYnCXj4şr†l(v|^sk'ǂp=5_Cy7 |= \|8xq) e Dc$a0`jjDlh'yqBqhm_QzB0o}<"#LW*+>FҀ*`G ծs#*-N6b01P0RF [#BL 6sRU2~qa(RMAr 9F 5iTBl9caV:ՒޔcysxXAg72_}pV ӫUu3!ézj9*Z;ۥA(,wNq奜$ℋg:>S8Uml, [)Zo;?Gy+} y֖;^UBLg8GyB!sǍa A$ݡ\/%mw>YFG"@fT]Co$bS* co1#)Y_oL*<&`p2n34Vnl%!kx.Rߡ'pdΟUdtCџ PD죂lJNxҸP{MTE\ddd捩xqoKLVXܹϭR =7(0n5M-.іu'0ӽ]r(V $T ,"ܟ!qu|#a^ um "a}:j&2ò4A!\#)䯇mv96K"%9*LB[/ z?A@)\n)ň/ CƑn4BTAz?}#4?䀖|7T]?i3+j|8d)O-8'FwdQ@C#LvNbROc{V&*Ԕ'g9%L—[$HPsZL.~Iz_m{GsL *I{aH ʧ8.o(+uW}>%+~i٦n8E)2C\4@nFIYH XbT8_,;f]&.6 ,t !]8~7m!e?xZ+b&=y~)>NQ{q*+_F#H.oT@Q5sCYn;o[U39>e #l疋ᔩ,.$"gZ+ X1hrKԙ7z7B ([dY tEs(Rɡҩq=t]_Bik|~f3&l6 W0 fe /<]\ %"Ťj Ҁakx/X1+iTd~.$'k|oN5Iŷoc; /|5tW? 1C`o(,&[ U.gB#:VyK^F-"\Ӈ[ \TETLRoH%ح[?vOLJ},h^ ;b8z+кޖvēq(ŗBXH^~gxS[t?48ܮ/x)(#n>:Aɸ/q NOL%)n7K3Ԃఫn}*Ptxf,E6^\BZB; lz/;V<)3v9QtEIkt!Z7pIz& y0 ZK>ȍD6N)d@tyA€ye;Y3t{E|QN+$cקD0Okc!'el/Ԁ :\f:*{X?܃+Krr]Ꮌe Y\HftV-+2.oM0y 1FlY}s*ܔN6u |hܱdRC;? JFs,3m_wz^S"`+^n\Y+_We d'v2Kkxfl:oG)0yoO^Lԩ'u6ra Ty)<↧#\p88*SwA;COVPcMI9q +;a~SDD+cx(GML5"h_~c^\X淄di>)\$7*5|ݪJJI.P`!?%s<]="ez~EO.@GvQ85V$-h299v g.Ye.q ey Lm rNBd5g{/w\@A#TG#&"[&6q2x Ӱs&t~3GΦ u9_G1 W4|Yʸw~ȟ9|佽~ԮkkA\?(w&@T+*쿶YpOË=*`̋GN!`,!hܵU3;$V9t@`TF/"*$1P+7~Q":'O0dQ"7aPC9:ϙQ-KM|.qH((+ZR屌+J\mPEv-`u i. 9+qc6rQ(j muzwSv6jRÈIn#7UgjIb h:6U_u m&-J-tVR$''k09A}`inG 8c0w6 !+)?itB-?,-#' Î"7x%8$% 3p|i9&>GQ(ҔVt$z$tte4LtPXrY#BOFlS5 r(eK+Nr@S(&/+W`a%܀n i;h(ν9fJ︳ֱ< nLN UI|c$x 眪DY`C2 (WxD IN\3DLwL%k=D̃Ue8%,%w~ƙ`:QДWk7H#ȦQR +c8z+9>O#{ LΒJ]]`*%̹46Lj }K4?Q3t?~֘~ګ3lc0G t-V8f#^hچ) ex%D1?;\H me));tE-:J`75J+%N_"4>["\@~تIӒKbVi1/RW-?^UYaPtAYn)j. wVATtxu֥ j! awۙ6.̹ ߿PD GHizFr-/3䕟#]$! |j~Bi{| wڱqVgҵx{:-&iد̏`㽖$MR*?1\?c-c\L9'(4kLeH&֏G4g5)&ecnNv dι,ChrTw$OV866b'[2-'SuA˵w$ RrU|"B1bL&733 }m-ߡ墊Hӻ6eXǼ}&_,jA?ڦWDH~>!8卭zά'XbU43ObK\g+udmlIQ fC!\0hOk.kCMϊE<bF<9*3V^ ƂS 3Q,wT]ZoM\ǟkRDqoH2HiM1 V׾+3L~vD"39K4K굊Op6!u*+|ؖws4SGZebWuhpFjox5OQ#q zQ.~zʅWMo])(&J}Yᰧ9,~s p̗jMŨ8OWrBI{-PZP)ob^JmJ"foxÐ=f8;@R܋jhTNw$&"a3 =Q5v4R.c~| ^c3!XM1n7\r:aPwA Hq3,4듹ڊ/fM>KEP 3*eÌ=zG~r(MdX]1"~D+^:gJNR'fC!#C8z:PAƟ\ѕ`f=Њ8\A_ R 0|!r^M1ו;k^38x4FޞFۂ5U \ekkQ4Cg{$SŧX^!yaZ@xQ$~qJ)Rbkhu#Om&v0P!FGCXZi?emirK;L@n⯶9ؾدbk2fo qF/SwU lQS3?Y) ֔DH V -vL)~q #lt b^ikAl2K[8%QKah J2.KsCs~AP?R+l2zHhR jE,gøϝI>$n!b@n(ݴP".-ө}!@H))sfE`)_d(}z8Γ);>ޤ=tH s)vxW m0Ҵ`J'@sbEn VV~^8\ϼ5qlTg.,;+ya!na$5.6vXrݐ8ЅYJce װְ,r?Ty"|RD q:hdca&@1{秬K?2ҿwܛ{XU8 (_,}Bzbyذ)->gbu=w pׂ)aظ)3rvԕ?oi+i(9m,2?DYhvWiwD/Ɋ'#)HHXMS.ߒ@CǞF3iS$%f(^LލVb4*08KZAq< uƉDnc~Hi3nҦ1N33o4u)GG9P, q (R}tx Ykywh9"N#)IG@aFwZQJx Kv(~Ay޽rs? 3' 3*ILI7:]!t{sM9*Oeշzw翕wçzvq7!v$(Q"B"m__~wPbouHۜ}hۊա}"^.am3v*DIeʹZpZ?o.PKwq*0op*E'Oaa}'͌2KsԿLTu%U ?(AMTabX擹*<7kՆ}N\CGpJ:/^lac2/rq}HTf 4& =ϔ%BZηb u~ߧ"bUW&Q\2im8 "͟[.L{{}T<ɲٳ3?3)ֱs!F篤_8"(IOxIX1 YYIؾ j:/~zOM]#7>g#oyF19]8,KĺLq vœ :*bi3otw,dZPtF?z*(jՠU}fd[N?g7.]c)Q6Y<.e/ǽ@9ẸJuz2T~2޶v Sѩl"ESq:H>}+mk&3J|Y \Nŭ_L B&K$7ljS'_Ż7 ?ڱ_ Uxz݃CV==&>5f|Ɣ% Ƃ< s#$w/Nh~kȔ3{Iv@6 \ń T==8$+I%Y%ğo9e]aQ93 \a ji]+#j[Kwcj.Wv"bf:pcEg#07n yJ踞Zgƙ5FFa|,alNsucsӑNPezp*id̥6d4?z`>Gr!9>Bⰿ*},ə2 z[bKj-Ar*ЁI9Յi죒uߒ΄lښXLF?F(arBޏs21Bsfe[pV OX>ef2#yA\z uL"Z{s1ne+^祟XdPCwW.\zS@qC+rJҲ^X=e' h?x;4dBS hg}4;-({)]u/7coæd+)όK9q\G<`*j18W0"Y`?-ýVYZGME,uM;5݅.CV1['.p Os؍2+:.r-`(#Oc0yKwqsO#sهGU3 7Z&84Lv&F ƒqJ(;֝%c I6O֋dؚչwmX{|4-Hkk幑|~Su0#D+ˉbMh%%c~ѯeqjqYME$o)"Ҋclk  K{ +vs2G.`~$ev0)ٺ}{Jo*;/;~%";ϭ DmUii}K}9A:L*`FWf 3g;` =d;qlK%rrŽalOƜn4Hu(mJOӾʿ@a k$oOP"bsPajRz.sʠ_ Y<lJ8*5HVyON!#Blfjlut UX=bh$JTZXѿ0; /17ƻC0 . b2W4,uãr|Jz6ǂ4 ` ,>~u }¾SMFL˷oȨԩT5myG"UE$xŒ*zaP2tS#xN%+#V9P+3jMF ެpPǼ53Z܀EŠEI&^qgUOM鯌ցhYġxBXʝJ8[ccN@.pegGU9:}Q>1ڪ#yFE Q_ky)j ޒOO(<Cӗ"uI^[)>TfJ-_{^qNjcLrsG1?CzM K`1% };og ^?lZZ+<+X'g ThBf2N-?`dJ 5^ X/w8ZsXl @^ѷ~KQaƋCmwRw?H5:8w[?M9;Mg"}'86؀@ y{]}mmz>1Ҭ7 Fc8XelpP,i>EyYm=ELwȰi]̰rmAD_-o2Ik/ Ћ}MJYKѪʳN=Z9VdT"x*¹sfUR ȜB|[a-376wˋ#1t:lp OvUr@&1|qNfѥRtK ̰E ]:,ͫվJ#ًS3/z>i4hƣN[fv3l#jHx[w>2k¢-Nx5IZ\ 1Z{ QPx#Ove$&U}z43dªgM9~ ʮj27`zʇtzNMePֺ8dOm0lΪ7DLzte8|TW}=WT~S#?%P" Cr[/&ޫ.szSIy] ?Cr`]zZ+ױv2ucVoM݂;|,NWI[MnB=.j75hƺCT#7x2)я#6s(C-02ᐐ#mwb*LA|mW4 p” *UK{ ,ꜦT"f2 {-Y•]'i/J(D'Q1 EV=0?c ma`Pd'?Ě9j"cdr %F+FއyT"qI|T*)F^dZ~]1|,s?l7*UR zoLhhRqn`U"F CPWYkBPVKwU\a ķXoVϥf8y|>5\4VC,-k7CCȵkrAvO|%QT*Ni =+0 `%Z>[PdG_X:l:z֔u>bXO)9 cc'8V]Ac]'A\.;0m;ՏX 1IV~!8.kj8CN&ZB)0c-Ao5n  af-6 :=/~2A9i*J  89KHS#_OY%A=߼bnud?BgK&^өjGe/f\MP\R:@0yXlNg<>Lʫ);V*W$ G'D036B|ƹzs@?fw !2&>7CL*{fe/49p?Dd91oԑ+5WhȚCax<0U *.1tgO #6fоe F~-TeI{(8}7OZ(!|N69yu|.l#ej~6T$K&kK$z$y8y1"kCrc ړ,P=gfyG*xe=9K*'ą hy"=?A5l0:?S+N ].Lclp'fS.$>7&4R{.ά:M(6}ƒO6>J*~kgHL(Oؚ-~s6jd@7ePVk$% T܊~DKv64#mJK]Sc^86z*r@Yo|==܄4 q+J%t|/1)yGפ= oa/ wѾ1B#Zu6o.-R9QԠF;_2>LHOmF[Euց.2$sݸ 33x 7'P,93 ENr)yoJA4ĝT$ 7劑}+S\'Gcstt+@E&L3z8Tm lF:vL]*C-Jw/x<hR~S#KV0Ʋ/UlZ[9,]M\rCBs}044roYr[} s ہc4l˓o-'sDS f$l;1SU1 Ų #n ߩ5s/)^eS D -1pO~]u0a4M&i%#ȺEP @L:v,]E0gI8q24׷h[f $"7(9N*ɕ!b;No=11 Y$&hJzךZ 5GaXFi?'8nS} ]ljO"r,u#g?HAOێyՋ_[V$ FQY{?MJݽ[xSJF6Ʉ[x:΢!qU{3 uhLoo[z44#aNZnw쏲Ey|Aw2TOI8_zm1`aA qW]KB^Yꍩc1+[{)Yέ seyru", #N]EJ'CY(8 @yfOdn1IjK3 I ?a+G>ڭz TO Qp ɞ]SrUE K]PQH("2TX>w?12EnD(0{ɦpC9gwd1s띞ʀ|ɏkҖ-[K) 5>JLlzN.V>o7c|٭N[$ x5'/Hllhrlū$kpKH06dZ@H~HX9k*@kO3y **8NPoC<%\p ]7O1]X[2;# s/Z2: "5T[nz\N_rEa?ͱ^b;q'f_;E@ۣV! 1$MJ9-ď&'ΏT0DI-͍ྍj7S.4#-Z:~Ln*?!M Y=" ?\̀[>9C.wV1>#T< 䅫r1ިL V)ҕu%0Hh8; ΀hZw)KxϵL hf5ިPs؟1ULIZQpԉ9bf?אI)y3E:EF5<<ꓕeWbdm5 fro6̩Z t,;E䐛MvoV:0O=.䥌ɛ1q ]@Oψ m}(OKrp|KW C2&P A.fe1xFLZQhv& )w&v{Xsg.P$P"ģ<!lgn0l/6fRiCQIwoh+nF206xDt\YSˆdt*;lKcmij5c<_jFRZH/ጡNދW8ܠ+U4e:I4OQmdiB:7/46t;Wf:װ<ʹGWB^9$LWAMmϒaK c^||&`/,Kj=QPfVn9N`lfJL̾( E~yTf މk7ʹ~=''Uh(fVKOfQz<ډ-2npP=*':&R[&:Vl.W.q< 5FW&PMmT}צݚq:mxg Q~Gjw7J'JNك4X憓=x;RLŚ̐q8hZcK 'A Tɋ%0XN $y1hhݶqe-zQۃ ikqa.ƠBQ[ 0J2|L­ wŽ|/掾 ʡ*9\(&sQ7b1r} Ibc@XDQ5; 6cxrN'o} ԌBm {`,mf캽*f)>i~phAsn.YU`F3'֕LCÍO )Yږ rd 0D_-⚆Xu?mRY;Ug{O*81P9@w C&ݰFD: ` ra+ȃednl sEȲ R/ڻ, o '$d5 nj75R=WŔu0Rƫ˾S]LQ6(|s>Bd84 WGp!-\LM&XE 6(\i 70`J]QV&7Γ1ڠ3 NȄ%}w748: SLk I$a1. **Ep5mג\}Ȏj' g#Co1Sڄ8 K*ig'TXR))TDp5ma9Z^ ~RMٸKIyim#w$ZjΏ,ѭ e J<OMt{káٺڰ#I`֡"ZS¿B[pᣴ~_f!mַ٦omi AS Wf/^nML0Q=P͍|Ug R+՗x秏/|deknC6!.ΟeVY;jT%$7N6_wvY6j p?Ւ#EXpKtzB"\lmG&ל ts[,?#c)h,%8 U pNj Ʀ%K)JHgo};uRc_(VE0>>*F + ķ~8gqGy]*Ug9(gc^M0jb^ddA|o UA~3Vt%Krnu#̨ێۇl&Tz4AɫBiM.ljϮ( 0`)J{m "7I "6qȵ=l*|,V4F |\m7ω$.ͭjPq=*yBx9J( /Xsm( j1h97 >- ,t WvE1|[{X} G7%' W6;7܍ r&L릯@h.4Yv&<LHqUO=* 0!y18|-GspS Wo!QK4Bm.l7ՂKR_?W'_ ~j,Wx2 ^ 4*%NFsPXB=[  cX%UH9`= Eڊ1Ҫ|TJr7JeߢpA h8Ꟛ@|[bz:N?+Smb(CPYŻ|@QTB`Hy#*avc>WEj1/Hj#_O`nB 3\LR0"#*q7jX^Gߋg)#ݰGx `=]I$:8=eҹC3kK;)UlzhC)hÑ'8wsz yDҷй@?LddwyS@Ze([`ZW% \"5{A^eGG J&ZǁKI-d ufTDNHUY蜍w7xE\HDEQi3NFR{ᖒzsixN.< D&05fGWFNlQszeqU,1 ysRyx?,o &l>YRcM3>z1nWv`!\'p6͹./5wvOG$"_f%1M&lef Au(}VI+ 1Dha1SqslL5Pa_=ur~k 4ƅPN'Su3rx. ĤL]V7$HswIoF(;[,xFg@9 D 7?wG;!\؄əMn(<;NR1b.X8eL[Ks$JCb[hBju@/iW9ֈ[Wmq,h .v|F?_%(e~|Z=ۖeYqHjTBю_#Zhknkz 8>D\ Uhm7Gs!ԗ27 I[[B |S8_Mlu/8@/yu3*e ,ݒ=9Eׄŋ/_ >v>B?] (~Sd-:^2Q;~7Ǯ̹FuuojVtyxUql)d<#owiַcfA+e`%f_8[4ʿ= C1`Q]m9Nje ZS䶾\C`lDQ#7fVY=[٭p*j; lHf גX4+;Ϣ_̉x$![բ\(X4m6Vu:Nû9M@BPDzO 2GܲTO ^P ŕ"t2ZX{E!ޒ3D)/^4"39p5."tlSd`e-z|oIWV*Y3x|\ ^m#F˹JsOңrυ$2g㵈U6x-Hwluni=c,9t$2K!S+<xJz%5'àwVGWjx*$ ep|Й 0&0GgXs,6YJ>Ue R')@VΊMEŝl+& ̟?gq6Yk7~! z ;Gjo!7T2V_.:6M#ʅq*ϏA@%H }ϡeK?#v^"֋|2J[ǧ+j?=SY54F/gh[BmGp[ʾJvtFyDFCEPNpLݼsf p{[q""~N#L.dd x"t%3V]0iebP[oyUrzo b +œzq+XNn%]3?._x蕈 u#` /qB5' /*eeȫof" 0z ~/K\sn 7 m&Mud2]Cґd=gcҩH^eQtJn2t nkp+@$Ե?0nyḌ)J|rNm}"gl߁k<IO٘J*KLx/I/b$; nHJe5bcxMpf$qPEAP֘!SA G!_)H~hv\f=Mrʹ_+V$Ur~i$,.efF;ITnaa^,gAwZ8G%U_-4F:3=@|9VD2@8t"͗Ԡ. 7gݣmyw |bƻ$㷪֥處Sڠ_.^cV A nj3 J:}J"B4Q4 V PN66gLFK }i!GʨPk&3YqN3P=$@62k޼!|W`{{.b;D7V_PBUo^RR ~5vKUɢDt)u})TUGVF{:cW`=-p.2` cmdaumJcZ@CW2iǖOS{ݲv|S$yJӠB4oIE^s|iM6tqB~僺x̓>lo(}/`o5ُ)jG/,P[3HwG=< S"tZYo+_DЙyUvH<wjnF Nx:SGbgIxp 2H.M`u1Ct5n| bkF;AqN?\;gڣAZ9m}5Qmc=k,~BPҩq)(U;]^UR绳f:ViQ1`0p$ɔm(Kݡ/+$,$5ͿU;[iM" rT)V& YM ϗ٬GU̞/~*r%]76h3W-t%_/EZoY-CtZTKVt_„o瀒MmE>Vh @˚kuE 1pp'f#$ ]n ZviW۵v{##H #|^[㷌y)E k P\YhONu{Ho&7xKI.KvxLSXJJY5{{yGаN?ECgyhH*)~xH&p'JfE?h]Wy&ڰOPz5w]%~D'³-l L2_ ]ӤΞQh| ^ܪ8UM& Dt+:K䁍/xmk'az>V"39~!J` Jv\8`xzsaYojsBIHN4WqeomdÜ ;7ϲJ%?JSsDįҖ,=-#6 d!s'.b)Ofo)r\mύ\Ib;[0J4?>W5Sq,"y V_ٖD_:XZy>><O$fw:V$۾nUQ^pDŁ0 hte?0~HˢQܸLnZ]dVHDk%_,.fkh1'r*6 bQwBaT t׻/}쫀 _%"Y#5Dֱ9~ BfYЊŐH4c)U<$ ]=}udKyZ5h PQbԳ~]\UR+46~΢ճ.6 Ԉ;)%1żR6FOE^F I /Ӌl> 4)eu}YD.Ǹb}܂H,G^W>pEC|Ȱ6/P( EJtU1r 3-y*zsz\kV0:1} |O!mM"@2!1]π˸"7EhZp"?$PEY aĆx#56FSqxwåDiWxϐgPQ!䴒`'(8(`M *] :ȭ/ G+x'I_O0٩3L)4yJ}lf,70 >KʿBW5?Il::*ϣLvs\ͻLj"D2RҟKcM?3)jY,#c5lW uz5Wt?jG߳nC5gt*NtoTfZܡyTQnW!eL['PݙZ{tˑ!7wJ$즔/4gܰ8.Q]6[ҨqUl" g˘uoޛ 234UE" -ob!s9BAz'Xۏ_m0!(&>§@ ʷܿd>Ēs'|֖d}sQ֨`*k*m<&>.e $|!L7# ZŰ&(HwrQm1'uކqA#KQx"B`xcooaAMy#T݆36J2/%C)cW1<)Hļ́)UFgΠ T֪=eϟw8-GH j˭eX TT=3jaw HI aw!{!(yc㒐hŢoŔuy050iM+Άhe5vt?$@_Z3K\aǺݧS׶FrU@f|4!= f 2>]DX"ũ)jnC4-9jkS jXr5|Pj\]xUT^?۷Up@^8|Y\XEĀ|'fXKۥ$)ň_Оv 7aqM#P45b.X~eah74ꢿ I uO 0k-N#0vւmfK5" lR"j1UӐ(#SvW܉o ]?)ʳm'rZ=xYOEFH7&u1 9Tl<IWe2AwU(ؕjRY*6(`wp`t3*$H+UQksH93 @՜VtmjjRuBӆǮMwkCuH=QT ?˄.n[X4F7ϗit!16\uх).XQ򦅷WrtPkQxjÄwUu0p\$L-mZǦGi&?*5-Z/b;|x(p̅}d #4ut~uxvFzi]_ LZy59hX:(U}Ifc G i~>8W wډIR) GWEKKΌP%3;^$HXR1aޢ>l!>(ͣ.uCp1Sq iշI2ʳȏKdr/@0MrED]9(9־b6Aas*0eSx[O}kC}Jۢw|8TNFe~9`b41wDd_!28L V8;9UR[XT-~,fߋ cJ_pYUj d_e8D;׭z&,<;'2d+$ǝ5ƀ$7(zͣArloq68)IvjBrr"rNq%L"+~Dai2%{&rg$1AB+β30tAN y.Sk-|~i4XP>WP1 /\kD_*m)%R$c|ĵ_j1 0Bq7G~GSK?͵;#ɡ_Mt!s9;"vqQ5\$Xr&SO,]d}[4rcz|epIZ^ך{;s}8݂JE 2܀Ũ:KWY҅ իLՠ l`].-`%zʅoDYsG4kWhGg>?K, l}zFr0ڡ\0Vqp4 Ő# 9 [PC}9q6s b0wMpشwr ArLͽxόUoYY`DvibqǃVPԃaE 1(*x 5HD_z!q hEa\iuoTaN'Fq4,~יD SVbXB^>ecu뢦- |㥳l>u>Y4##̚Էf^ÉSX5QKg;6 'RٹJLi&Ö*HHw_FI{E,Pfi$e 35@2gϦvcQ"Fx,d#m=>YwlOJN>o54sEMLZ>ќqE­2[hZGUafvMHh\msBh5909CřMRj׃z_m'5YY`[,ҁR5ʓ hb/ڞxIAHSL#Bϸv9 tt_3Ӝ8Qv򿸼$<sK,,_GLpHB/~ɽLRi1ഃ ;L`ֹJ> P}Ҷq/qFJC["߮\9 C1K6׿zر̪.ڤ.k|߈tkGhZY6t#!MN_H =^G[>RYSiH}Bv5B]gޯ !za,|e nb0 'uf6RW}=.f`ikԘ@ۭjWie\մ \0HLH)&N G2ߵOW&FplknZ!WxW'\ez6jp+1V,YjCQH[Dj VG4(`(nq]D`B:EN%h+ 3W;4hp(e,0Vz]NJ0@Jgm{;,Ӂ0ħvb e|0PuW uLo`q|"ř/.re_j\̆q ^TݸaO[t3B3H ;(+Ȍ3$xеK  G ?3܊ PT=͝BM<.[㬥? @jט4{l~BBk:tU p= J%iM]]E(Ķĭ!16yGĐK%DӆWK|xۚS| .ӟ#]1 l4qBgZJ-6>9Ӈ,覔l TWMmu_c/+(tN3*<@A$cEϭcv|,(7$iO퀙:A41<*ewBsSf@d8/7HJ^]q< 2F=)TҪ ˌkĔ1(R~[4+_X 6;E$$ǖvsXLjXcEp suң>vJIU۠ [8*ctf'dk 90~~= %]-\HN`C1 u(le~t"?b \uَ> vWΉ?wtR< uAwL۶*/So]EV!6}Dh/2u~OThGQ,)i g|/)h)1 YnkolV뜼\lɱhUS&pR{\M*/[|N  90o Q:xք?[[5@n:,k|Ȼskص]34gȷ$޳5ݻ p?s^y>*Iv:r/fv^ +nj WE-3NI)0`>E@SJ 訐/ N.pK ڝ.R K_C]^kFJ'NbTM)',5# qEVþߞUfL$NZ+\jl޾FZoa 9! 2/pHO5ůE?%kkx:˽>F{_ CҀ3ڝ@TQRY{M FZ:[}PPgL2n|TLw%T:mQ}J!J[JjקkYWj) ht`)`\8?0:k̨ll!m{bd}fj>c$>uIY5'Wqt ?]Cp#P@7_@*3hB?k +2G9On^:M)sg=ekMcVAkj$ao&TC>U:yYSK\mi96˿|2R?ZӝK7c'gY%<'z!$E-01ѥ1 W-ĩ,%ӸL,y3oxcLP[Foޒ#?chJ#;fkm*"АUw "=:"IAtV}V 2,NUazo§XIdo[76MݿӼ!j.|Ż UCZKOe%͖ПUZBHHr/ޏz .|n`{w +D+f:-K_ş +?(?n%7s" ^^ (TehK{M]FVqlowFO%5^熅`QJ0^ A5MBȯ< +OIJx*K_ ApFcZ 9jt~xR`jNT/O2s NP7!KըP 8i\zQ}זPސC^i{NұFMWxo!CcԳ!ؖLAwMe2|=`BsWܐ)I;>0 YZafex/inst/extdata/output_afex_plot_mixed_vignette.rda0000644000176200001440000050334014327535453023010 0ustar liggesusers7zXZi"6!XW4])ThnRʠ3$~r&TL5QMlǙ0c ;A 3΋?!uEq47C$E%3{߅9vܺ^aD^ܯF(<<~7òw &,Ťn-zP<D'{*@j,J1PWf#0β1F1Ȉ*`}[HLENtWO|˃ VdK)~|dGM;ݯFL])k䤈0b^ĽPC?de7s@HV[ܕl牥#@室2 EXt4Ρ%,VKwqaL{eTnr1aR(5Tv%1k|DԺmLHj.]jȵ$=3V!~8y&B֌ImEU]- DN:aOJ, 3UB*TuQO9~ ;C7}Q6F^1@h!J~p X\ikWDקQ[蟪rU'h wl hzؠPsd5i3r<>vyX\,;<8BtCԮds .im*a1oÄp }G׼тUrF~>Y ҉)ޞ}$Gy띄J[QIFE 5X0 HC:vq$]dEH;߶$rU1 77[7({όM3YnD6'UyoUw4_9KC,ftw^7_DƝHى,nW3RuLqC֨"8gd`K ;wzXyУ[  |Sk *Ԝì:k!ϧ:;cH[?t$)6!O&O8Z#k::UrF Z6R񋟲+(d ?쬥 WF@Js.TZA 8.ݔO=9k,oMք%*悍nѷAo}B/މ[A#ЈAK_F18,02>d;|nٷd :>$F֐ۛO-Ϊmio(3"Q3}}ƙ&lh*/EXd=9 ͼ,{PUʓ[+ bӀ1cN?T/HワEpu Qeq#o_) ΀2%Zm@h͖WƃWc&QȠB+Pj3%` QO|&\`I2OzITm9"np jMZIE<T-a󕛤B{/,zj\0GPEVha}SaVrPD'tO.7MPAS^؏ QH/Hoh]Zj]=,h叴L"KK':0=BՉA*+.aۡ[աR,ƌi%w PL{x֫`ip>xbHi)zRepQҌ3j裋<6s ~)ډ5K\J\Yl?kNU$B 3}Fw:I$-/BWIz}SwJh+ĸ buv,;rTx$4ɑndʻxtkP%4Օ]hg ̲■ׄkH*r=6,%dt>͢ D Bm8-#d\w:h@钂Mxޢ=[(Wq? !FE%Չ}1CuR$F/-=dJp+']#P{erW[ӓ[~HBmFyY1/-s,YvzZb /Hu'P^*ʙϸu~l5qӬ4IJhX%>(C iD {O2z&Ǯt++F3Te Gs([ wk؅.0=GŲEf !G61< FZ+?y5+ fS)8S/&)5 )@=7?;[e0lQ0MΉ`M_ceYQS[?]?{]dj{>q%=`/z`lX ڃb+O׵ lk)Z̵miΛ"O4{c4qr>qc)Xsh-@*@( شU)8Rn8tĨ%0oz3OarE@tB3B(\&޶>aCZ-ރř:: @4gWZzONFA ]l)7C(ݙ>WD()3ʯQ-gڽ8' SV8)~v72sl[$ `; Ye|"kV7ʂI?5F!ނ _"I3!\uu;Z8j G"fr"ևh@ eu ${j9ۻJuټP=RX g3''C3W8h*f҃{E4r+T[&s7GL5d=f? Z/Gzub,PpLT`.' ->^Y$ @f*n},h|M{,IfR-W!㷴?gW:R]w"Сj3 ]>~tMUv04 {YrX/'1l:)'7⨭&D&#ty0!~L?$}U{>1JP}w.M.KBt)&Kmh\V%ƕ*vaX&OWS KFTmm4fIբi`czwIamJѐǕG){I@anL:;4"^Qݷ`DW72t EswHUqĶ^l5n.0p1ܯ m>6ҦYGz-ң W*[B-$G:ГDF6F vेXxȲ-Tj()0'\̃_1]=G qHEY)Wʩ/SCm98)D'ŷ1l_e!Dp.,i|mX>V>} j!oJw{R{ ,\a sF8P V2Vbo;S+ i;o we#U~&燶/Ajv&z*aװAbvPؾ4_4WČA2O̍%1=)#WkPb mOi\CRlaa{0&JLva!7n/7/T>Ih,alߙ@_#΃]Z] f_R H8Mm)bѫXf2?E1@L=r5Cq箪;k}-\ɳ,a5PN%oOFmTrQqG:άW(@f~G{L_(/rjަ L y>ZJ=!l_65N/;ϖ쪼 uq+k5cJ@a/+o)6ncH-E^5-U^gY{~ b$3@?g0i[VM"-$ 0?柸2݌ݱřvK t~|(~}zX_3xԢM(?햍D3\4~P=0 Hl?BxG%a D0]j!W*Sf8"^5 5v6㻥{\x~#m{I)WmoPWmxi3w~'`@c$F1ꢍϗW&]g$-W~%0r*.;NFk~! "w6KZ]o2 _nUn/a ܒNq)9IZ Ly:=pWw[D zzK/]J [uc//w̪R#4X%Q3]dJ* HgJM0\[&{( kDb@B6/SN(}oŻ wrI.:(9~֖Ͷ3DcE:ΏכWc soYGKCoJ1[d@6rny>fe!UdW)8ݐ4N+{Ņ'frqST\R8 7s.o!ht6~-LJCfk !XgB7neBL[ شjxh< 3MO3s6;`eZ!{L,!+_Ȁm \9+_;+R|c]GCS)%zP.z:ߐƳU/?p wU CMev}:COggֿ_ӯYk M|Ǹ,X7d!/IڕX@+#|㬿~U׋ 2lL@Ts WJhd;Hv#d}R]. &q^" cG_tAys[%e[~J]a>-}SC.ZRL{q:=֑8Yʑj63U$.#7,cB| NW3J',n4o[MK.H̞38L)F[YQjbwN",A"ô_>װ3OE cF nj/8a7lܚ!)FWGj*LqbnSJ'z4+|'6ϕYgD ?NI&ϛB~W_ػ ?'Ml zaQR.z7 u[),[!SФA]| NzQ JzL;ڐJca hF˲BUlQ\ZJ\#4 (߶5w)IGO"Jy(xt揹( }ahkk`HcXV} )w , Hd uqDv^8R1`K&O$QIs48)_+< *Գڒ"7k'S7 bxw뜑ŪP1(F:s}b3B>54-s,Nv\@A6xKSw=5(0%U2GnUSpH1*?\v+|.'K7il6ЫJI(y^ckBӻ X( ZMr|ա6E!=R/:уRw@ w+ǒqp}0<m v |&&ƹY ]&U]"#6@)6E)J:YޚrLC1N"@ ÇQ|x>x,덋  B3ي1qI6ŕ-~]s&hĘY,j2zj"jP]7`3I|^+Ys$R;" 6TجAZ ,kw/݇⹀:ҊW(:%<-lw̍J _C,WWs'C9.I l5CLPR 7UsUpiYu .UD@+vZr~d\+*h yơVF"Vbjd?p*5%AsRkˑ.,8SZ}gRvz 2k""ϖP_=T`9`r ٬zUc o$Q70<ۨtJ'0br<Ma2l)ǤANM/ Xrx'#6h8"u3qw5L?eH5XXu16~஌L: EWgݠC(+^{:嗆lowbm&_Nae> /Ȗ^amj"11e+f5ؕ*aJm9X2>1V&]F 0A1k_v@ Uu~A -^Zfw-%iˎ\޾ XUVUS31YSlBzF4ᡴ KIbQ=^5>Xns$L0 "$v-wgpTO3# )'QS΀6qȞn=j|D۬i'XmX*y j,.?஺t"æ 9.cQQ/)E#୊J@^%C~9KqD?jCJ΄&TTAPpކ$Ăt~.Km* VvYDRnD"*6% ZhfvjM+l 5KgizD{Dq,«PY&˾u̦5ry ur@>QM0˪)]l.sv)q%* F[a8kqqq#tUѧ-aBʓJ^(!01 sz(~$"yvAoehoCF"Rud/[3%YNF'sYO+3iPËbY!A)YOl;;ˎ) ThE\Ksaeaܯbvʶ|t-khd?j9~yԻZ:$nL$ԠbvqUSN!Q7I׮kduԡ!N;Od(d)Їܚ =n BW-Xӣ+ۤz?瞔Z{5M3hMnQһLrEBQAXI^ƵmhW;~yݔL`8tZ$V|^,[fgQ!HR3)M9 q0[F1{ٳ;N4 u' Z!{zze{5@^)֜ΖNI))J܅S7{Ͽb|' hn5\f6Fź"ɓ-Us'$Hc1Lb Nƃ%C.PGZdBe-4ƎWu՞\&2 0(6"mũ_w~'"^QkR¡ik!~Z U xph(ޠt3y^I PwL%*2~%0Oxw,߇;'FW^Mh\WCf[ J*ui1Aɯ ܮHQЄ=ULe뢉݃I* &LRe/ aX2ωkxq<cL$]v_[D,|;}8\fɖ *Crg,68 ixrSm on#Wz`7{Q1s]*s RF>Gs{"z+EmrL ]eR;pi}@њbk[䨭89QWDOό\w:;+EF~zQ[cmT c.ұÿ8 :Ҕ0$OLL!HvX/w7uz)r 聦/?2_1oƹĸf xp+, OoyrƘ]CZ*GSCxį:MA ]rXN+6`5^a!S2?94C-?NRA$|zZZ'82dO{TH+ki^skO%M88RP|꺟l̰3(%|< {ŀ)`v34:%y1&_ ~e}raA.0tY NqY_vׇt|T`\7xvu1mcWnUj"!#sR.WHapMNʚ=45X`x0Ad=!jGBY "Z8߭\yTv7 |<>z:/8osu9~ _m9YkL#|W6%H2f,'$Rd)o~^ FmlΊ; ][V]7A-_-0|Fpgo:vu%Qz Y*eӬ.(?L>Y)fb',S` +7$4Ř`hp~le*Gj;3+b,cl^ NH{4Q xXi|Vt(UXQhtO#|kGM4qg@ES036*[P~1:f_t^J J\'Q&qbeV$* TUx4yN6H9YW-"e@'& _2 VIh͋ޗC9u&xAFvj&hk HXQmӏ&ě!eG<UYXz]7v{ƔzqdRgp~=|\hVsPE5AO1}#(Bݿh[`B}cW(e"ġApA:m]U*#6k;.7BJJLM1 =qWX`ìR8miKJ30R6V`DCpLVF{#{DȽ0fℒr򒰞NjO̍V|f DZ_)v(pR:g_Gʍ^NgIJCd7VQ  uHԉ,X_kjT4-vأ=9ea[nΧYoܑKOe %j p<8T/KROm]j6A vאa_|8(E_?y]@ ?ZgQ+ cqj:?DtTFY9 r o6Lr4 nˁJ|nCH`\5"Mϻ OZGš 6m)ק}('C%خ[e88ї&w$0Gy- .Q&Ҹ~:Ջ,Am;dEk?cSI@ٖ7ѕ PV0b gd Pb},-iȨZBmȤX(ˉ9@LwV2>Y g]`SdZp(C[Οo/}?޷[`2>d]a| mJJHoq!?KmhF{d!|ӫoCޒ[W9bэp4N8t24e+Đ7%ELNg9+R-z\M (b7˞;[qYNdQ4/?5|+ʜCJۃ…~WGѺtX)$yjEjaDѕlNf%AmJ.uTAFg_[0qt8^&bG%^8 |vvl"~6gцL|q(vG1iD?c)͚~6wJKgRX_8ݳ]1+D[ZN掷p8 6UcvBAqgԃ`#WBRqbٷ mn# i8Sj`* ˆ͚(|D2]C39X|M/IJ)ٰOo`J^ujNܞݐhD5'i|a% `Q#9U盰?rVĜ$՜9)nn5/Z^m[w7wTqoKom:W&?_Gu} H)S HOp,u:q̣}гfc]CzϛD|cx{ /GSd6I@c^V䱙x~.+g1eC΋ 0ANĪ^V2Y[˯ȢK&= m  J1"@Ԏ:q!Nyo.//Q Gn [ E3#4bK lLL}R%+Zp#úL s  =a'^ mb?R.@S8whz'/(_pKA7q 7kjt;x\8A֝)AjBD;Zȥ*чTmGˆ{EI}\\{D2opvx#*mxy|}'7'1/I-Tj[^l 'oJfP1ERP{Uۺ]qP\yy]1Cd\QUl H/5aT>ے P:;.㹫_᭘J2@N_qb+ׄuv[T/dCF{I* Rs NyePȵ!rѰKͰqμ)|L0yb*~X'/\L Aƽ&c1y[la#R jb kUy,-#s8e2KGt||5Ǜhi[¡Be;qo zMr%U9·cӿȢxi.Ni}C#YaGk3vD&A;?<9Ww>+uZGJ`Y`3la]7d])>tPJx_"reW DSaz>`ڍ@acs$_,sV Yx?Hff`4mar4i% ΔgAw_u;FEh4O*d*jBxCzmA lR&Wh9iaPa݈|ʗZ1A(xA[+T_8'bI rBOZ`E}JYt,q`4 < H.#fiCs` ^ȢJs6BGǖI= `l+\VG> -%ToLoձ8ڢ/"j7z+Qx׬UKgק^'f-GJn(^d7~4ل݈`0>EAƆBw<|g{AF#sukf Z"e0#@F$Pt4,7* CNN"NqQItKQNjHӱ k A[x%lytlD<ᵔ2MZDrPB"v(FVGۀdrG ˏU]nr zxa>r#U{ ec YW-rs߈U2AO8Lf>{^73dH8l,sPM%$-(!&G_MDF=mS쬞.LcB_3Mj $حC $$18\@xڰ>qfh.UT\ })ۮ)_͕4+ra͉O3 yc4ozT}Yʍbe_a#$3z7gYE|>0W"xzt7u]M3tkCnI6,h~oH3z#K?n3%јԻ;]YZ@:`|.kymtQ,W #ٲ|S[\N7܃b43&lnX&0WL?ijKRWJzy5-:g~Q?=vf"^1eǦm35Sj@{ZZhUwWʞ&LFt%;ŝjx̚랗<=BbcT}7{FQH};9c>TV* ~vgxpbafLgN#q8;8,%`^oFWz;Ev45*a`EdKIl( MFrWK@wM#SR δdZAǥ7Q.(S85<[}Y[ܚ,rnkV~g_ *Ƌ߫Uz2fקL͍t<` ]=DNH0my%aG49DEZ9$P[@P}I4zEPmpe}3ڝ6^E*bXr%ݛy3rΒaTkڟ{"f`'%v_ U^߭<[t7wtn]ÂBq#a+PI=pU+!@ 7u1nP>E.(%rY_ 7ve|ImU% S?n6.;9zbK3>Dc:_x"艅Ui=rA %ϭr ?HzuO]qHOQii$:8@N"%$Mz 4;si"XVXf65%##xm'r4ZvLROt&c$煔ie[*eﳙf4%IITʇI8SZ/"UROJ2-<ֈ|[|\T)L*iY9yiy4酒ZJ"&_큸|%F;dOMcNީc*3mw+= ZTu 6TLVeC:g qPd^5FFdM(`s0fJ;~c/0G)^g+LT˿: xR47  }pZS33z*I}F5!=eʬK孡֋ۈ`Pwd@@,tA}i _hbPA裸6`,L [QZܧ?U:jGV^>1󌑮߻EZoq. My^բ ?r{[\_xc$ <RERT٧@g[X Jm"Ī{jْu5k1{#kcI-Q\vHސ&h=Ś1r`LSߡ@lYj:j2t!(> |av, bti;N^xv:Z;rKo%{N!͙,BEkX!kbз(ZEMYJ䊮!ӥESa|L}ڃ(w汱O~;˦6hdmr_@J:2ؔOuMOmnŐK.y!4g@NY2tgg  籨<RRX#-yHKx'k)|G~]tijwJ* F5 ]@v|2X~0s <]$B=mw8q2ݽ1jeMeNK3:5"C %?r7<^]5}<s _@,j뀔^}G䅊?Q+rM0'Nu+&v̞reK[W4NN$U=k627ƲMuVCbcsP-Rri3IVr,m!@% DIvmv.MAZ vJgyz | S4 m)C`fлdXQLn!6bIN l:1QLHؗbjHͷ$xD&˭A6P>C?'7 @ߛlz$YbiDn+QUWS4 T[`⧬Խch w&hvas1h8ǝ}bKb|>4004yںs [$M}`{ ؆-)$/5£4F9AYꑤiйF&9wH*IFo*Oq4A m 6/W ,%:FSE+w> X/}IP1DOވV)uyM̕XvX7oafޒ7!vXl]W(.3j[jzbFޠ¯.i<;WҁO\pq}9R )S)&B\]ʕ"C8K y[lʹ ~ ZX(I Gge$}b_V-K>S\yB*#긚dqŃr9^,fj΄wG_a ܪ{Sj:D;g󱂣p^Nu3핝?S+oJ{Ԥ~gD\^nPX Rx$]WMSk0AǎdEGNpN6@G`eI,w sbdYU7z Ȣ^S\7KʜFI q/i C"L^҇9b;$H[LʺwBp@!~|G+:TWfq{>GZ5ew6m:F+:+$L!51յhDI8h#"uH}Gs%_,Nyomn2#k|S`aoN2sK-X vx?pTUKn2 ,mc|gJ1[҂D-.`hý᚝"'噫!Wn#bIJ9Ý]y4pqZ}mDt/:gIKnؓT6puEUf*h-*hȸ>6{k0{ހj]3ģ >Ӝoc5/%Pt>#;LH?cpY#knƹb1 2lz}pmخ*@NYVK.nZ?[&UAڟrtY& ZIyc!yBt:efJB+KdH[#rx_ƫCLS~ ¹NSmw{&UPU0]Wsd{vO]q%*yrFƔ ̉`(䓦ʀvJ縓\çfg"51U3{-KCZ%}5A{)Qi(tҫڼv&rVl2}*yC,dx--C BcG L?~Se8> l,RTc$\~$N_J bD4.o:Y)s=.U%ȴGjNS]N*.20n;c<.r+-7譛M8PO?SWp@@)BY;ȉgP̭&u6ǹAK59yB[*#EσzL8›cfe!c=n|+6sA#,` w)I7,.syQHIW[P=Wh gPFˁ?Fs>cX[B*Fk0 vLXΖQ $%dBnDGduL ~Hz&_ xfFW BܲC{[ ]O\g#VC!-/INN,Jwc0z7{y}j`"^(Lsp0Ҝo67UjXQUlR"/K(̘P,#ĩ޹t͌^vѬT뀂jBq-Mm?D3'W}'Ul ٤=1/~Fp ^T&rTRwY5%)E;StDii;7 ͳ9 䙷 .>Nt sXLα$$j, $@vcJ]Ze"~XPG>@ksz)̕7)I08tg?@I嶏k7b swszM/P fT~ۘkVpf$*KsE&y?#1*F~rsJUѦZmHHz)W@{!#Fv2I~%˂}֑UNtM 5R,nJzi>]w y4CܬqWkdv3ݙj#;r7q20Ikb^X,AÝShM9S,r 46(cɩ-l&cf,5pXYdRyS֦4FT&Z$`Ltٖfsa3#p{~{u&)s_s0I[f 9A&ƵXVu#v#{!!wU<+@; nFE! /sm98j9P@x~NwOLUܤqR+K-kW\%'| .Gbz&j Hbi·ڎDi·6%C{آ"Hz݂XW-q4Y8gtw_SG? &>jKT߆}:+a5xOl)Ӛzi=yW9K <9ҚB9XIR*v|K@24]][so!>J'0TxtLH-Xܠ`>^32kӉ5[] ϙ)Km |s`0rX ;3/J[e_MHM Wd}6?詄fcvLS-Wm84$p/ C 2fB_ڒ_+(K9Mԣډ, ix5h @9pF*DĢ|J%  ]~pjGRtup[6`SjktgC/->?g2zlLCSu} 4IbPMf.? d D{C ]A^%ۦ*4b׫rm3wp#tĠdd\(}(7avabH| DqyP%2W@A?&K܈ r3[,xRo~x{sS<Чݙ<(`! c+_Y)uhjB@E oF|ϫ}Dx9/+ AX3ٞ Mͮ"(2F%n0w]Jhu{6Ba:nyCaF(eNʹ^M](ٷ p3) %`aj~RS{x Mꉴ#3H.j!m6@UwcF\BFSʫ[Dέ=Oh^ aBYC8&/+Cw,\U;Xd<S43ы;;pXv=`˅^"兼0ZFKrk"k3E'cK'q/C !jb{?hx3Z51q71 CSgջ>|D1OH^әsJъ|%A;oo1 Y&:i*3kʷo;R\a켬.ā^#>smp՝>R;jm~_. _[IF4| 쪮y)>.P]_.~;y#u,އSO_j8=%;t =xf.x &l\c솠Qچ" M&' b`aܑ=?ïresՈ1ļvWp y* q=1:@^) ] J jm!o$^Śzu#4:~EvzW,&}x° 8+b;+WFِgB5YRn_ïg&!k@ǫx؂#?JSZwpCl~}SmWgʣR\y原,$V} dC<9~I%y|*9&'O/`XivJaWƛL1@%zIieԢ \I3P 3i9EP?u_̯t- Qe;8?Ia{Z)4Ԣ)[/@aNc'VD;:vNjyMQgKϽ+i=scT~91W+[XxgU\Eh  ״*I?sY( ;NcB:8=NC#CX4Kʍʱ$)(p]q 'g0AgR :0ӋC }G8ZD hgacL PptZ'Vͷ3J"_B<<館""/~T_mO3teAb6Rz(t.7 J} OWǶ!柳9Aw "{ޓ(Sk(W\8chO22Kʿ{_JKT˳Jۍ@<,D.*[>HX-3} SC˩0ێwqb Id\MF<,?k:+JEBtp( : {OhfU,]{8G2Tt<] mm0 k9yI``zC| MpR7-#e>L/}i$'VYA;&qDK$58SoM)Gîpߞs~E%0"=aA}PӀ'N2`KZeЯTbqwӤ5;LcQTًuE|[hQحASٶU1u`qUQ8#&!?Y[m/'Dt-kwWa}Ж}uvs7{Nם= oi2OŲp}4M"%[)Rx s[)YXC*EQ " c[PjjˣΫ i=  KXwnbP3АrIJ&\ר3P+-谯2*T٢`Taf/gU$h^~%\W&~ȠUeVK2 wM )#ޟK|cCH$0Q3Y_©WG'kжyWf;- ,PQ6B3).֫bʚ(%nT=`eJQ{8{ΤRI9t :Oؐ&sã; IJ%\'̟miM[M\eP]Y+6~cUՓoetp|<$O.HxEgqM${GS?NFMm$ =!=3 Cm'̋ 'b62#-Ne{q0bGPLC ȉ '[47+Q~TKCV'Bb6"Mc,k/+ pϘ2a 5D3i*O\۴Z+106~TEP;W_5˳Åf_B$Y z쾈,ޖ/Gdy Y@a8Kl_gY|w%>w#lUDfإ%$mwa,ﴦ}c Fяm[P.7j%Lu(cx$w>:Ƿe9}$%/X(S" x !+1*0yT@fBŽ!"MaBd6|/қ.T&Dnj}%=Qg_;Dn%`_Nrnw]/1 `9fR6Tqj b*^9@w 8Pp- T}ΐQBw\ 58yX$)'a}KԆ<ᮁ|wĀ#j똙5JFL5kZ yHhJ5^/=vh󬁎o;:or",9LN\o<+ #/[ߵ *K-3)p||::э)'Kœf,{PFP4Wχ^+1' *sMνP$.s$zȺ+vo37Ёy_E3$HWgX>Z6 ro?zt(zB dX=MF rpr6R6Hs3Y}}>bǃ~&M+?xєs3@E`pSȂ$bdƧT|?(QӼ9Fuk{y T 4gDhɰXWL ms|H=>򨋑6`P#z5mH@>\BsTˉDCzL>(h,w-9{Z\TGG!A@׿}trF^uW!dE=OaSd+zvBosȾIEİ_+As$U\ߨ\~I"ӸQt.cg]}5nkrcTsWq7Wjm'_ Z YDoT+J/{5j\ dEv26ٹѭ}xQE|:Ow?\Xz]>/0vKwklqT*?sgJ]K&$BIu(RCn-ne3 r'"+E SEvLe\!߯7!012źiF#Z!T7VE%&ı4?>M(nWywHZ$ʈJFƱ[MT2 x:::<^b{#{F4f"SZƉr2@| )el_~FPͪ8ֲ.d'4B%Gbng?Ȓ7+kS(S#xHT9A. 7: 9{\?tGIT*%Ekрn+g9Z%\1e)ҜO Tov(_&ONНiFS(a@'AmrjoI2Ո>S*DŽA%5T˜? p ]!uCyuB£[KM ]~U|+10OWG' NZ2indF`?pu?gz),By&ݡ~CHq3At3>E0|SW( #qUR'oo6"[zSXǎjC~2E dz"j}_k@h||,:Nn6Vt.C|7ބ"LCgk/j*-3潳5o*ps%k[q>2MVS!hW6U8z>.j>U \UYT0?dh6ħ/tj?><'-]!w (+ԿU]vHe_;S2=8O8)) wOCd_6>؀jҜտk%vEbL[j8GC"MGjXƵ8-`qd]'fR9?jZؽ)7c ΋:HovRr(*8-cV+AD34m Qd&,;xGT Wh^Jʱ̅-|VEez>lp=)z%(k&&*A)Wk02\lDk ^8Qw34@x<4.@ wep# ccA{|Xe1Ǜ!^] ދ%K[ -6vucTUɧPx.:[YJR6Fla&]@wFO|B(\ )sU7+툐0FL%#lٺxրM}%][_,uF_xF,PilN%c8:zQFS Ωda(%䩃7Е/à%mO ^;oY ڰ!(h69< o]f 'zxo6Lf!jgju_, yHT+x;ΗM܁&d؀y8 *EjTʞJX(N Rrzd?Ēln]^vwa gJ[N^Xg.7yˈUe7;z0E]a = j*#OIZ?!6jdSa,Hbh@-<X{l&\G'懠V7"Mb)Cv+ Z* }6kY:e}G.lߖj2?k IGQMl /HǮYDIUn9ezxSĬ5(耜SyzKvZdN\CtXԠq}gI6%oR(CJdŴu[L /p=P;5 &u?>y_wgXLq1z_(֐O[&65lFʂ6w{br$)&М. M=tjomޕEcy4v!եpL"l*<b Fx$E͞XLnQ춼Xl}m#J:Df$@? H0`US2gݎR}%RK` ގ+< !mޣPnX{OoZq4P_w?G2&ٚ;RJ[Tru"xbpcFV)֢qh Q1\ ]:ǵYb&{rF}4!'/cS꼤a\h/z 4| 'Kvf{&ؿ-]y'L`J${CXJT^ڶ?"'MR~$4XWCrx@9yj85 SnpKdۊgY bʮλXm*9#eYr#IFƆ3'&M\p$R Ws.f-۽g &:R ZI.TW3dU`a2cOwMXo|nh28i I?QPp;Hm,3ޅg8I:rݚI9j!ӓ #p@%Q {vGߩTįrs4!ewF|bi^|S˲PU5ՁKY*]jn\;an2V(gsbU5up[_UmBiW7;vlt+)M+aw+}yhOk$t-|9`u)so9 4 rD/K&B+bZgn(rz['Rǡ ,X^_`.1Ućw G{/Z{DD^R ӈe;+du!w|Ӻ_6ItN1!a-GglOa ʹ@p+ 趁| @ nA]z=V=Ǖu㡟L/x'޿g`0*#GD/_l5Np8x(80skd>"-w:4?1Se=l9i}ܰ" XתKc,oI1B-qșԹRq/iO<ǙS:$Bʃ17ߓlRqvx5q6{]O[,wپ$U+JH{B72 ޑk9ünJdKU_ 2~^7f|M@Vq u]BuǪ{/egY\rpTD9wrְHY,ؤRrܑڣD?^ i}U>f#XR&Y"=ÿTIVZx{m3x״5+HGQ|1I`^ޠ^ i?ou=jqx|A5D. 1r1e Y3}DžG?~HTf##ltIf d~oJ.2nb!PTez=`KW)(ur]ʒ۫KgwtۦBfg c V•eY`kS\vym]lHZZp1& 4伜}g]2'* #(#Y2^GvQWu0̽yC"ą(#4 J<5&C*z,mKwi|Z+BxWncXF~D,Bv)-S]ޛ7?Y) A#'Dn hQL;ȉ|#tt Cht, zk;dT'|V}_?6Mcq݁_evwAsp2)N;2  BWdn>Pޮ^ t$0VŸ&|}Ll)#ee90Zfm"x:4NE}q'eGpIҬ-[ujG U]t{>2w`\Ҥf D*Rѥ,zmMx /4:Xw(|Sm6VZ>~L4عiw q05{[x{FUٱ B'A30bH<]qeW@Eլ G1[X {J ~丆KUK^TŖsW5Ӹ HbfcA"_S?Y՛携j @p(M\%>ŵ{[W9AK+m[#8Y!$iJ t7w'ջb *2\wT!hLC<\E5$N xMټͻPo"!.i)ziͫé/8a^&0Ö@6矼j+40*c[[mT 6t/$P3uABcvD-g \?/GΊ˼Jܲ7Z([nA; ;;|070^e%yXew?+UAL7%sfW(yFc[)9;ڻR#1srMQ}uaИg L M-9#{H6HO9f$?zUDx s(RwP Ӫ%!~ 3'x5VFR w93K][Nw5RO/};K ;7P_0̛E + 3fd0?.A: j]9͍ $fA(j`TXWf4pD6[E" =l(Y,{[6>O#W K./҇Jz0K "w{@[%~'OD$;bsk'U+7ua@B֚CK -=#i2N;_xw6w_!z 26U|.IB炁ޘ;+_$EW %k8XLMQ3KLFk<֮71I1?gY֋V'D"?J7-SC|KYi,Bt\i ~}n%O;9!hb0*-1dO wTKb) #[˛qkrw|w%ka=6L1Xn#{ȴt@3'NU%'ӔKR||*|"XCM#It nf0yk N3b «o|Mx,ߏvqt!5)׮ o I#5%jQ1hڸT e!L }Jvvf^-(3>\mVB#"̜@DkpbmȘ}K?QVma~ o~}thOZWnE!@%|FW劼knkz(eسc}T_L ;3͔+QRM8-"&?ԑOZSft1W0+:_ѓ`xY-E&l^Pm. ]Ց>sopqj`Ob(7mjvjVj5Ɉ@;'h=il7 V`MBMI*:Oˡ,gߺe}a $U4j,~1Bp"2Loa%GqYz]*8?_.OJ(C[t<|},Fq\tngxHQs͜fɔL(Ȼwr>d+}UZ\jAVU]hSb\9|Jwx[hq{*MZsʳwU^,Д=$B A(Kֵc(K>k㓼@5a?DU U׬BigzUҍ(S{\tI|5Ҭ)ЫenPtD $E$nGU+3PFQDPڎ%gelՑj ruRL G#xTJN9ÃYh:S tzqc]x^]e$&Fi eQX(%L=Igv"ٛuKaN*LLfyot3i=uYVM^%p_^yW,pHHȣ_Z㭧ZDŠxA q4[o#[I$d$_xYWwS$o5ʏKzFi z(8Ք u@\/QHCAm|A#q*3$J_bϤނMHS Ԡ TO oƼC䓖a@j~HtC2؈_l(Q_Q)Aws4L]/dE9rT"P]%Gj?Hk\I +9 Bku+_I,Z2 vl$|@RXzDmS KM둂{rŨp 7<[Ϲ"Kq'IƷe ;'^(wdeu"LڇSފώ,4T4rR6EGV!v->i'SN8Vz<[J2<\&:E 5ٸ+ /}ݷۿAK yZxU:,%^h&Pmf ^.CF#iZR9/v챥YH J䆈_,?~Rg+vxQD&F`=gQZ1 5;zӌb۞r SLek먁 #mkV.}6d3Ȫ85_ .dD϶or9;+m39(, =>r$j?L88}MGnyZ7 uP/K%1~C6CAk)\(%P&WX@3yH0S_("@璨`H0:Ye }V"xQ@5Zc립[d+Vjjnz{W[[jRD`.Ֆ>tj ŏ? )|iPͻomB]Ţa((.ѿv%KQ0Pv/W< T^_)1 v qt^C9!dQt]HBW9(%|vUCto4X1H$L#arH\-L˽5tf/<3(mPAfkU`}aeK]F16{be.sAreٻ,^OnK1g69l\bh"L뺤P#Vߦ]Gl= EnJRM z= ]6 .@E t,R+wE~vjA x[.d}ܪs5,RN4|`]Rw= wuGI|L}\!\,7qMiV-)DmoYIr0LΰlM-̥Ord^ZnOmLbb0411T4}u!prΊwӴWt I:Nwudȉ^nTLyU(\`c+5eyDSS_Ҫ\ȻLu^nkr(Q+^ꄙ nE %B+Yپd;p=y@ ĥܭ^愈qH0I} e6s(QA#6A|UƧ hcՖ|.GK,Y(Og 9  M %x|UՊi:xc*:~!'n.`sP@B(q:/fl㰒jJyہlj xmvxGòp9 -" b<ǒ?AF9~>]-OȥdldkLArf3|s7o!hK 9'-KsPzTOkiL학*M6%Z5MM߻j Tw6T1G\=j ` u&\  e6;}7kevcS;ާa"%9ހF:vє#q ~͜$͸P'fy Ċ\l/Z>Θ])=|3tr;]s4>fTF$dVHل-G.3)z"I2SV@VwMe$ aͷoloW@'\g$]x`e+Dt~̒Yx# 1l= &e(CVk2$!\1(E"P Κ =]&ragYO7" ܬNu1PQ5\GD.6MZMj%gRk8ɮ $el&Sp7̮a)]s]`RdrbP22֣>j7mݑꞯSTlQV@9 g1^%U$ Z-TY+l Pʦpo3)Y T_oZW7#U e ͑U~`n?7|lOuF2_dGė72>\CICc 1]/jbyj'M̍4!30ӮWAX,G3Nֱ\r5T-DlU}DbCVZ*Ues{qdm}!4ŗ>W߭ vwP&%;p@3\(H*?KF[kY)/iOl)G atBX}4g !*2#)5`Pu4SMIxLnpA찳\,CŶ\%Y7ʒS]M"4nn܋$pڰ.[A6=wWw`h\jc=xg(ndcDW6N كp9% zk+e7)gxT ۔#tNqҍ!rjŶ]N@GvSeR%V.%〜P_0-j~ 0kϛˠ/e:&tX^Q 6KI"f=\|ڋu S_>5ȜFPpIv{赑fNʥWq̱fPd=:؜ !["bm$M-|-pisOR b.^ ვX։zZ#ԇD<5q-D%4pQ̻U׃'KDJ,2BN K ).IlI$޴=*UFE]p&Jl:P+qe p>Ƭ`)5ug(ƝMhxyĿ5[eUÑx ab0Kj*$˫ ,<# c9_%H얌6dDe7aΖOYqԌ*$1D2#9dl B伍GdM\B84q=&)ZXm8EzCAyUб*mg_s7D9V=8Ϙ )?.s'Ak V22 < Bwe,_^Җ?as|}Hy0q( C2Ѷa#M-nhMQVa$E'fHA{E? V:؉520iR~oe)@<ܼɚEۼR=PQbGrN܌KAt*@6;/5G:\)s2 ĨXE,Gl;$/?pIS_ 器^0҈2My;0p\9).BjOI Y}OY)Ǭ\8z`0B0GAzfajHv+X{`:-\Sz㦎`b>>3K}H ud25u>d]7fپ Cs50*a]۴G\EYXQSy=j$9ocO4+}bS|4BX.}+ynXT i2B5fw*nAhE݋?ń$A𗹣˯%w}VE7%t>4(aļe} "Xf =iXnۘO11DYO0 T$`}M6rG/N~b(WS[e**Js6&OZC n 0F쟈!MxZ*(]O|.ѕ0C>]#ϓj ub]c$'lhT`T8.=Ø^=BIdKcǫM2!?>X .Xf(x}G4h-N5_tcǼ8Cna 8%ߓl﹒BQ)b9Hl;FI{\◞F&Kfh3NPETj܈A{~1+M +mDfD?dTTdQ42IA<}ր~@EcSQn~4G@PdHwإd/~R8U=p@IvH} )߾6(O XTC7.*܋c"fQ.9hU\RkK{6Llusw9PUlkō,6 f m&AXgpq!1{TFKYW8ch׀$ WˤǙw,/Nb[QL3IW{n#|e;s' p G /|BPߴ7)ڢ2pG#HpE6i hj8Tg<:5Ѐ<9ɀzn{D,qA56Y?45j6|y sΙ!Z|@!.O+i[\"-PJ䵧먚XUĢ`п!d*#'yd6<˳.?HXS5ERGYW瘃b,w qݱlw$xrvz@`r!b6ͅ0M].D``.Ejv~h%b.|!.T2>$Åh&ZΖJ!h"dQDŽ 6 Ǚ?Oo%N}*fSk!&8aID Ԍ LQǫMG/ʨ:r +$ڡYpgUX5ퟑ{WZŲ;)%9UwQ)*Mզ`*(\-)4ˣ`?R,DJ Pxki i1~zۻ06Hڼol5 DZ_2\wVNS7jEhs}Ψip4X+*YUt[nE/.c6m f=@gLUeVjĴ#|6`T. ؖ-VKuN61&%:4zA$BuWIVf]'4O("jPU6M|()O+g.lByg.rOsk.*0@Drp'`K?VTq/,>u3:\0_ A<|b|[4l$W)uH,AI9>p )Pr#{5dzR/21'ØPw+L`gZTÒ"&FdXu٥[,9SK~_H$ {oQ;*?hWw%_XdXX"IXk=vd;|߽$O>i,yqֱd^xd$覇N6qCXbzi?"4mgW;Ž*PV c!}ޞ$s,9Yy\2 ӶPMmQ՞7n&Ϥ~Г~C!{0}$7a?{f+Du-qYAUP2?'Ky2QVF}m oGB$J)yw~ ~7En-H"]N(hg}:xñî}ō56 Ӿ/NT1>yrz8ȝs}^.`xH4.T.1;hRF#6b;N(,}^¼ s+RH rOo$7Rl^!׻X(6CjM}/kiRs z9! mEP;,U,1)5I RrwT* J/J5А>$;Nrܴ\IzjגڤIqbE]6GV 9K/ hIib?ᱺG"\A稅Ƌ?҉5F_ȶBX2!MqmERq]x{0%xo6`2cx}L0dJ[4i >$4 DmB9a# OTD<E1cRLVݩ&l.>[L=wЯi7YwcIa)~=f/g%@O3RzM)7 ?wJ"5T=vmEēR+IFxPy<W(v<]}tMuZuv52Q$+i)XOT>աJ$:ۈOcvJ%rK\3iU1M/ƱϨ3 Ah?3z1rT: NDĐuz7†Ze;W0S>^=5 sJVϨƦRKmpr% ѣg:!_o/V(vk0nnmp0nNZ$+JR":%%I`MJi7yp]zږ#tNxE^CU2Ԭ: WLGE+_&4:ES'<=h61ZޞxKӮ`RK!9C\i4(Œ2Guv\tLH;`KG  ;(xC%OJJ &<'>M/:Oͪpbs:*#N"Ɨ7ݢ*dkVpl- qsl)M^MJ $E@0"Q.HG ~{4~KثBVzIZG(x6]]1x\g}~`oh+Z`9v~TP*5a\)m|RlSB:k_ZclU#czBwZԅK'dhۂ<\n'z ~Y "(q. ʂoHo&45*<'ʤ{i$X)eX+(Xj#8T\?!i\ #]k~h|zϐc͖CXffƢXߵ.t\RB.^8N3},ߜUDŷ0ߑjavW?ǶA*Tݨ3H2ݗYhLk`7` N}ms~d%Șݵ"*bxRUz hE4:fX )<h{c,q}NoE.$J}Dv.ԿV} :y/Zy7kxǼeux}@Р]oαЦg\7ZeeE9 $=FР<+&UGDI֍1A0G+s%ǟA{.G%Avn ~F[.,{. 3/uDgo" ]MM,,!gf$ƹHjh|hxՒ`Ɯ/#j]>Ų @ne>,yTa7Mϓ-S=K:"[!!Zu4Z={2AI[|R@ *w7!аMf:2| ):PTo) 27ѷVjA,uFȭ&7hS`[_Tn~}Khtn}[Ŷ_m`GWN =D ,2(rnT$ { }:ډ\(srRB hr`8!c\/]JQzLf (*mi.gVQ|)uػryؽ) ~]LRr͍li+[ W_~ޓ)^t=u*̋̅mdr򆉆 ~SuؾtuKQYlܸ_ 9EKK]6{o!NT~Xj)%w|ӌe_"E8h%$zvQDА8zV.2; 3Cn_y\]zd:F@O||1ʝWwfRΊ:0b+)2.`Je)J{G;Fĩ4KJe#\. k rmUsó+ٮ}[aT. dk&"5MD|QsgeT37eFQ*#Y"<3-!5oOnro>U.A͟I>@&z2?H#C}L_YRP!٫FA*rKƍ.8R9(ji[HuV[a̶V1Yo{/e9glsvEAC.؆領ބ89r?l/ոSzm[kQT/ZpW'F87 e]MՉEh:?:m=wCh cgi$zI٘$P&i7^*kJ6}W֭ R AR"aupқ%sY7-Bb]?;)^JEoJtzPnkt4>fgp ۅeу:AQ[^CIdm *ښT%}WjoAGN{0ٔ6}g/H|';&+Y^;6rG`0N-3x*iQA8s{.MeM[̵%nxWD?m6AyI8fk-ٛrͽ-^Hܒߡ+eC,-}, P0y㚓Y?a/Ƞ4ped6t\oVdPEI1D?:l4`+;J(b Y?,SSNT"kU!R>Qk_c!͢Ba:+UjM&2 T|;OfgWRHHzmI;N TApuJōjA!}D4 KʜϨ5.V/=hͩU/4 mU jw[)яpU"E:q2)tWkՓ eH(O"GU>_P&%Ȩ̜YM=\}G粽RL}-o@;0)}u%*Y+U-情X]Eʺ#$qbU] ԇjK\?;އ[eK{5ʼnsͫȀm̑t{0B͒c¬sX0e!T=JlZ&!@b M=Tw} r<ff:W3sHay] wE%NUtf,ӅAa[ِ%pBqae { Y dZE}{vhѽt,d|b i  FDr"ݖo>辙$bM:+E9Pw{Mt"H nĄijjWL G2w.y:c,/D$t֘6xڎ&kdz/`:a}Ť?{v e."5@8c&9cmAX* U[c7U[Mךaim@S A+:0-fXu}DU{8TS|}ZBխ#Fs yhK(wEq3"mմ.Wq"2[P&sou2 P@EꎏY:JpAʹ,w#b5 j_v1ɕ7+1fpFI3Z&z 㭳ZIhaAs)@dn H!4 _ penGm&O0@Y qϔ͏TGD'Ҽ^Dwn6q7¶wiѣ~oI')v#wg:NWr25Qa:ѪJ pyt?!w\L>pt*IwN4a4%%kYb"nWEeKKWK4 [EQ y Go(B\Ҝ|ċ? >7ˊObLc^b>Um;HrD""z CÅo5 RAYcμetрdԹ?H,_5/^odXy, ܱ3TIHc?p=,lAp_$ ݙbLI%2ef09BQ2+N^w&@"?UN`70Oz\bu`#,K80c1i HVSa^HN 84Jq~tdĦOP)ץM&u .VrK%j#MYn'ܹ`ĥQ*3FҮ gO౲ܾ#[AI\][{X1+_p )HZy&*D~5jNqV7P'z|cH3nCht2xK#WQb.nM :m.76h:P*v#vQ''5W^rQcpaqaf$ .3"f%r;ճ ?71ͰDZY6Oj0wa3D <+w&pi?3)2eX\晸Ӛ!r`'6 m|"[pd NУkSB:{Q[zFE8 1 }M[hz|M S;P4_w Hx2 $O̓),`5%[e%^eZ[q *wI{vӄ_yGK-%K*Ϋh;]-N?9E`҄ X[vx[NÊY"d}Mt õlzw6K@ /E BG WJר7QGݤ$]$3ߨ5xX{g1{4dgUIR#"%/f!ls,YC7/5ghx;xhYW[dX6y(|R1uW?#q @e[aNc-4y@McK!+FEkOJL1wMѭ~^uRf-N7BI`rOL$= 3Ө?q= 1?o_!/lס\IyPD! .JxB$7y1؉DK:c7e\ 1 ;DH'( HE^ vanfޜveOWVwa{da93'..pTWoWpB)`kL n0w&i?Qƴ:8`)QL?nHœ^j$sKǠ~5%&grZ!8-wI7FQbKshUQ~ %~+Lt]&+hB&2vVÁ$BHSvn2 oN܁5z^WoaR!+K#cQ9ӤN,GɃ;|Ԯ3 50<(L^R(\"%πZw9Xo]z 7TlŊS㩥N5A},ZjcHĐ%tˈ#/(/xPl881,q_9Ek84y]=ӆ@2YOgyd"D$S2ƓhoxxM,\2Ȗިp`m{tlp|jww^ﺭaDtޝ18SԻxWk8`*@ޡzhoA1,& 0wjYP}: s™ܩ5%5[(y&˅LBk,*^sJܐ#WOlRj 6B)9YUU68P5{ 1LD:w kA\v{b>(FZ#Y2=̳t~ !}q3@)"2&{Jl]+s+|Bޠ `M{lp=Җ{ xxFyf `73|jDeO#Z&9T*UADX\ȼN *ėrQ`:Pʚ/n \:ZRS7ftvګPKmNj,OTVmFYQzӱG,ġEB 9vkctMR0i0$W^L⺲uʼnW\:q݊䜼=}7) $'xWTԯ-%; uyg ?s]5ZJ<}3U]:)hPT+}YGɛS(TPWUPex}ar%T*t%L@OwޑY?Co?LFe&TuZ%EUC,G6˔ofq̈́s=4']ٗX2Җl䰟&k&~T4&|o0  '}%{dgnS$Utqo7O#HyYHd۫j+s#"kPs稅\7}kj@sa!㡪([tK%E0<>RJp/„cL!:Y:Ö"ڴE}%wԺ QLf\Jq~ V{n MZy̱~+avgS+Nv/H];NoV<n%&6Lyy6@/1ED|젤 9*ھ_+ uFu晛%uaˢ e3Ѽ¥(E i<̈ǔ`$e8pQ I.a< p,(-{F4TМ5R[F\~*ϐN4q3*@[pOVĀa'FL|PS+<~5̀0 )2@12< j\G x{`A1Fz' !;߻\#w[J(t~y?;Y8RT;{~،yDuIVv~RmrT k%ua;cHEO2d_t˖Gk1Mv'3 >%bi_/`I]DUs/W,aBN4NE:4255UNy;0l(swh*vJcֺz"@)A-S4GEaq2K'G:Fdf) 8Ei-,-G7 ̒Pd$M©۶+0(vm#x ^Wt~;Hf% d\o*q}Ύ!~uJdq+}'>fyIP4|Pb0 XI`24JD63ڿ{x>F>=[1i5*o<1Tv {` J&4W'olhMhb\_' |CːSF=/#9*OS5;SJ+WlSm8%B' s Z u*g*sTM"/8_IٷQx*C [\qAEYhl{JaCyjYt(Ӭ|_Fݽ90(7%'*; &MU:Y+(5Vx)k_gQŻɵ"2x*աD7JLzRB 2G c7$P'krmv;>6Jh*[vdtoTfywE Lb}ش};@Bp}%+bӕv( `n^"M<%J&14P:ؼri1{ccϠ|+[i'g? |'پ+SrDcM@B-V]Bk#f } )-m~ b DRٱ (Xx)k$ۄH[\vxҨxS1#/Q+2MX_t'>ɭQ?X<7{wB5PFM ;2DNO)D9(r^,)BSH$&.VBHO ӚFn \ 3$ q msEsW=й%@GzZj1 ϣO+_sO,Bqmty*u֗:);<; >2K.^WPK,$eǿx#0ɧ $ްY"5L.dn9!c\ !ʖ!ݠKy٨+GɕO:~?NSccZŕ̦IQsP!.vW%%%P_~r_~lg|PֶfVrr>5a͕'FR&pir5):)d,v Mg# Rϻ=v:()`8LH3J0v JśUl:d1q>yNF&pq ?{FN<4i  P$t?u񄰋`eDok[B.x]ۘT_jDH|,}!DPk<ߤ%ƒJ$Ʊ׿0:%QFݜ#ԆMl5 ߉+}Z7m@圀s+sDaݡTYp;Lϼ` 9vkbKzΉɶfQ;ѓˠg kcpV>{G` m;sƇt-C& Nُ7FSMi#R5/ `ŊYBb!fa`zȣyo^0a UOyC|&˲$=;d"X"/0*eʬ #v9@k/h؍7pm> G!iIq9hx+)Og,5Ǒä uż|q) ՞+I>&O j .n :dʭĬȼaPhIJ ǁ暅#kCrCGK4E[0ha5 ng|p~^%0M⟗_n\TVeu+Jp&^O t1L]1 0!ּ$gq~T8Sw0Ls<-)[V0o3@f6d(I([743ēMθQu݅*'?b7D)5Ӹ ea5߬l&ZA. C_<&΅7լP SѦ+.ph!^"zGR:|?L̮̅&ԭ-$(F ~֨neޞT"(הoKiKgJH;k6${;B ͡^}3^OS1cղ`avxu1{i:2'^˳.yĸ87} h.GKwqIP2G;uS:8adLW@Լ'* 6BT{<9I^J \v&5XfoG^ P,j:1jg0kL\Q)_Ӑ~0;}vR=f[3xkFh'f@[̕p\94&}Ty%`E釄DbvYgBG^YlS|/zߴR7F\bVX} scy^Xy+:SgS@Uo_x<6S ]Yɡ2|AԞc9\mne\D%, M ӊ)j0A?-ݾ 4y.2(vAo8H?90@6фfien }\:+Qa%1v*mbu`k~^S^l_q^5>~!TЮ;)9{L*TQg ٗת'B" -Lv?pݩC/˺f\HyV<0J߈.i'Q5oqWq]3Uk -::ŜX'фZ&9]x`O|Bb1PI"9Y/K43HYc4]o\$}D ?́ # [ A!>_Ǹ^nN+uJv䴉8}1r|[ݍF, S §?OvH`nJ Z//USZeyќ̒G"w;E9B5`,[3nq<' ]A u` afCr%c!J* 5 h"=@]( k{`_<AB #ÀT \̸1"^3W.e)te:X>:z[gysZeM˕cr.݁qg6#ஹ`NmJߦf < 3v± rhyz#ÿ⧒<,בA81fIg)mTl0ޏzujB|QњZx.nSeə~n/l>;glZ\@)yқ&#-x8Ou즪BYCc !nnw+kkޙT㱫啚v{QWf|<;ѱSNTSo+O6%)z{=˿:NBP;נQeX+4Rtg"`xpq3j1p|xlue- i#4t47\<+EqWizNA}|ob( vfU!<>ph[thIEz53^Q-8v0TL\o{aͧq V8X_ 8C^pMU{KXs8 S'$b=DҍgcKC=_w"6R7W]! QWNǪ&5 ?<62e&UԈ65*s3|XnME-Rl.`e7XSp*z- g^h!X2?r,pNR]" J>m,VlEXkomǹ]6:DZ5_G$j,αkK5sOgDy\ڢ x~ZQ\Ѹ,؁WBWMƏRҳGxMgȎгJ[ `N7?ضPZ>ƌ3 =fT=$RX}@9XjK11aܬ<+9LSkfC$3#2-nB`W6[s:` d6 gLGY wJ 7V>$xLݬ׽J/Mrm><=W[hj)o\O E֊JKOqQuMϙ osl+DE9: C!U~vOߥDŽ;S-]).wݞ*n;@7іAa zN4Tokp.w!edw= ܶ0<.[&S4AdSc78R Nao)CɋhӖ{Mr{n m6+gcS{ݤ%0RjܯȆ?9?rPII=Ee5^T7P(w|"*̳QMi.$;مm7P9j_UًҚj&H/`| afc%U0[m%8^,}>ēC=?3"-K]$0];h? 09r7.#fkYU^jw {[[Lb񶜋\B<ȰzcJfhiaQ%?򄚫fxMb|9Na4IMzR!)X~)nQ\7?cqKyR?QdZz㪽]ij1mٰP t'#/QҹC~PnL*fTJ0$,vkkKJAvA>ϟ7|KZDd^s۪WuwH<$ F }4F5"ѧƤ9ѷ$~eeEJϹO/8 Yd WptuJ0Yګ娐Mv<1gOs˵`kOj6lKy-OԝDG->c,毱|dY@=E4)XV!ΈjVq ,J9ļHx~}pGerI=I]ܯ9ճ4QK|nc gf;gfԺ_6pF` Lh CR(yi}b`'!#$͈ Iq;/2\-|$,%9|0 V<, TEr *>I Le%a5?Ws8_7OyMps1Ϻu:B;0X6d+cN'Igˎ;E>mLpgג+GSRW]R X,⣿ OJZo):(ُHG]E6Xt+qˌn_s9G`VS ,~qнL@DUنHĺh,-ͬDdR'YA<5CCbi08 fvA^;oGm,Slu%}'粅 Myr vTz cw6WH‡Rp|E"oʲ%axLkye#hG3}\iD4ی22fdǿ/gX]?[;#w׾}=b.޵/]=P%my5!Ifږ {cFZ$OY&9wD+9fo 'bNE`0<䦮㠒*gSgP(⪱{qK 9vɡIK^f=~yOzhk;rh|(Ben3 ݾ;^ډmcDpZ7 ^2D5eޛʱ22=GozFyRSt+v42cXQG9ڜv4k_o W ->hegE?tC~3${{Ot(En0ojNw+ FiN>O4K#a9~V[WteȠ;qX؋i<tⓦp4$ o0oA&֔m3+o)> 9mkBW;B{i82aTA3/dZ22//]<8Cwx EW\~v}-d-1 ⫁qρ%E,$Cg)+.g-4rW3@5CUE*fb2;2 "b w:y14)Yʛk˛>!-j k{uT@ql?YId/ ҞŁ@.aZtmq4>VUe L( )݁TN^TLݽ"x¹95 r':[WCO1|{0yn&&uB]y.{pw+]i1bj9-`6!8~%{q!)h~2Z9jQ5GB$>FU,E^4ѪҾw?xh.JV?~T` (+3#|oGZ#s(͉W&zMA*a~|JnnGO7 (F5$z6^a]jaSc%„bR#\wP դvt{->zMr'&ycj[5ۓNsf 3cE@w:Ы8}EaAݯ$qRTydۢg/.RS[[b/}5E[H̭,EF4c[`ܯaΪ vXQ}h w7R4Cfre?5ҚW~:V-`U.<ϸ"K[ւE~ΊLO\@Nb?ޫ8FC+e`6@*Y2H0d=L}4754EbPMt$OUW]f/7|Y&u4S1i_H/0Xg{:.b2*lUV˳4)" Q e|(S;Dx~8PXeVMI>wC,ٙl}`H8|x,JD K @Iuj {P2]" zfIP-7HnD_GFQJɛJ*Sh~;P8d"Nc^#qQLz!rSǻ1/걙=s+x+~VjRE3# njof}+.J$xSau({kPpc@d'b;Mx£;]J徆~it|i<uw .1\! Z&NX&ވڄp}8#1u@(NN\1֚X(4Xi` 6t`4}f #@+r,;N?2hcw0i:UԞ;qۄ=a8f4@M׳/# x8T {8M @ |{7Kc>]2ќ돮%i*?R97c6p%} Hgr4% qboR؁hImd\}o45uGÿAƾ&("{siQb?ew="hw^{̺l`#r |6哿0nXObF\)]+ c N=AW<[0V+`VFa+RJm_qFG-ԈH `v"@5;a?]j> *6yr=)'{T:0yI5+^(ë0hD/Tcnfq\ΞB*9%Ѻ)Uκ ň2Ϲ$I7.PJh/'6 ?[/7\1)?QTLjxi}]anqc2#mq7GV,'hGI[L׌z0W-i ynN'n]7?x@= cCF2lٍj3B04ܞП ho_lpʕլA/EO(@sXi{ G262T?8UR7ɬe kYzƥ~?únFYI[Z;Ihpf.)@xx=1!C~23K͇:]qo*. oҦ$Ek@ /qYQRY<~f*0ָ==~b5tה!n^Nhs_VP#JR3Ēz3#i>S?5.8rGu)Z (x^E DZ 5tP{A^씪#+fRUhK}1ۺKo*>j܂ԇ?)?DWhUK]ѴO[-*/wx l?`Vi=+ϛG҈7 a:o. WzG:0 lƘ. >ٗx%~.U!^;B};wyzLV2>Qn'XtBYG*P`Ii 157Tռpj D :/HhMh9WB;emI(!fLj[&ຖ~-Z֠TӝkbY|jS=|}mӓ=5]QڡverUnk-oЖ@;{K0ⴎ tiMګ'd "Y]W],ȇXMGџИ`N 3SBh_3;5yJ)&1=cM$f}%ĐcExPCԺF+SȬ.-qz]{xpD/o&S)Zpqq'B|wZ~ $0ꊐeOC`Tb,j_v )!6bZG-FV@mŤ?n(U=_y2 hdَq*tx Vy0x&Wx b~R!_W!Ϋ-1Ix䫫1yc'U ʒ*~a'/cTi5E3C_j]zC\K( ^S2Y(Tď@_y X0' SuYtY5ө}ۡش$G(EoOjZNqT+ժ(S*;%r2N;8S1iZׯ~VCh2 ;MwR4Ek@ !Eai[: ֊? Qiox8/I=ܽ~(ɵXC'%߉W&^:XH&lN*ځBZ;1]0'EyV1a24-y6<hR@ʃ9DK!E4\,cV?eTU۾5 mzM(t22 \'Y8 ]J(dyg6ţ,w*v^"$ f/agk<"©L1kR0.~cN1^,nHKG#y~hٹ;e|fď'{Ny9j o: q5u˓:^X4"~, ސDWuD=d !XuIZƶh#|O(#(*^ jz Ek1OLJ770~xlP헣3 Zk6`(Hmg-~5 I5# ]ιuVz~1X<+leX4]:+ &9+1ja J!=]Ee(.ݔ22΂t(ʎaV^: @(nȿ'ބQ{κgelwTr{+_~ci8hQmRY-RCB+T1u)~w2pwu7bkW (WK1{p\p* L0=Y>Xeu(7j?wfDv9R?-UL;qAC"Wu} ?rZQka mڕz͓搼fbuGêFEXϕ)!ϞKI-BE(% ^@kKl溺P1ʬ's@gwUe0%׉,ȴS67,B+eh yFD ݑ"_$k,CByDupn:o{itC! ƌZT}};˵+q;r"kkBwnqsnelIuKbښF{.KZFLò,cm!|ut U/V "!?z,qCX%tb`3? X\kYm< 7L׬lգZݼkk'=bN' J.XQW.k@~@^RxNdΛ3R&9$^Z)¾/vh uE"ibo|1V2emi4ͧKޓ2*V]5\˟N1NF~"IȦcЩ(9͚dS O!Z>O"%DVvcJmlH;ڸq  Yjqh LcD l1: kXT| V`%*zs#V%g}DdWM(SHt8:NdCJ}GWh]7Uh;G{$*qT8-&g3 7if{Xʣ:,yy`B(y[#ek'43>$cc DH6((9LǘRK7<#znć6=:%ӶS[<͕:}1+U Rk ᪿCKOc_X:gh9r))Go؅% oI6BY[X&&2LbP4|-P؏GXYp[ ۃz`Wo/rRtwzNՔE O^3^UeqAo@Z;Q}`n|6aɳIgsΙ;uݞ&%D Ï8da2|kgv_or#Ϩ*dpa8S\.ָ7kau^$^*S-q!Ju+j!4węk-Z=~P+B&R7#9J9XGzߎ'e?Xh)Z *e:tW|(>AH4qokn~'0@K'ܶ:t{qV񽩫-+O-\EW=2ϮZB|׎70-XhcshXCJD^ȊieaUAW${<*!LzX,csJwu\yA}$w U4g 0ز2`r;~%XYu%#}{%v Q+kĕm򼮻 JVh$2.B\K_I0h0"ﰊ)Önhs>8| 1d5Je!8'8QY%Pvms!܄ڥNF݄nsfFX >si{y1j8k.Ӓ!.s(Y6unO$Ȼ8n]cXt.A5ίc .G KLpvb l%© 9n[9Sp`eW'{ꙃEi~% v,`uxW^LӷgI}[>&B w0l>+Nɑ&_p(`5Q: /)ڠ~!a ihwwn7q|1w Ѩm7Z;~ KT$57>=7 `"nq{`_jIGrs__@rLb&%%ԫxjOs$3f2sC'=]JfuN"y=-|E3}E!v0.]G!R 7H1ٳi ^.xP ECbAKqFe=3HjtPJ6aKRVYhCьgĆM&QZ%マ,4( G!o%!u0syn4PL!! 2:). w'&|-J6Ԋ~;#ʨlLN؜$ۮ9Oqa p4#y!.=օf6vT`j/5p~Z8I`.{!uI_AF-< /`.f^/ӎy{o#W8yߌzT'BˌN߻ó#<Ů@1<FV=7^c3G S)>/cDAHJVأ݅-#z@9eD |--yг AuK,S -l1g3@#/#H=(tECT o[.:$O6$v]) \xD[l{R%7Av]U%8+Dr,Hd\}] ם;yLĬ?ixk!ަ Mm2r&& qE']! t7֒REY}$^47'Nri%bRk,Ÿow=.6@ء2cYZ਍+[MY޹tF\/`hV]=+KR{oGhmn1 L;{9YOs4I 3@9#F=1̅߆2SkvNBqN/^lޮs_7{^`d?m-7 wMXKUfF/nm`#zI3^Mc{EcZI6 ˈ{ ŇFQܞAW.DJ2a\p 1tꁽO*! t_, `T,t7.Jfl' $Wf hiJ*v4m=?syQu`kiBS#8u("ot6LHLAed>%(x1%[\U jap?iޟE6qtt \ȆzkXҼ^]t1Fc8#SIJ! hO/! W艓 F亓6h{s$ۭuVQEE_T^ur{ͯK2! oVʘfK;$Wl͇M0ZB-قBOyy _:JU^I-/#-3u%c툝ü3qx 6bׄvc|GX`p2UpS$L>L=fF_)Vo0hw 2d2/ mo[9a}_~aAŹAmOe meW;8^{|Gbg߹$¡,[zJF a^"b ~yƉEAkAr@w3U-JfͨGQ>`m4EFBSV,RXabi7T(g!\_hK1Y c><Uad/ ިPԺ2G2E░/9$tEW/\mDű} j6>/ލE-.Ӗ-~sJwNHqib!8 tq0<\T|(H퓼yyv$U'`KP£ڨ }&NT_ZcGm/ <$ .%?4|׼(([!!XH  6t@Bex(uRa8sqZ`x7p=2~4յu Z-}kL&תavoaiQ9jtzAM/̪`\w_tt DMxWdjBR(3{5 +274 p}zТka*(IZAm@ʵ%})R8ϒUZ"t_+b^>#G‹mpl]"V X2;1{@G $wW:RK?xpt'dIs,CZw È]R԰)fc 80Jd$[%ᦶZPs o?o{ZTUVD O bY.IcM/TN"ykm4t q̝# :aGjפA0;5Y}" HO|Bu sKၽLyѨX)uLòX%D aih2/yKbR @sU`lSh=thg ݷi?aPrmh5x*9멈YwbdQhr9mW%syxC7 :N_k@-9-BbxH;q&=0sUH&u}e 4?)xXv*?ޮg3,Ah2HPeQG#5@wxb!|@I"ajfWF"/Voڥ ۗՔ|q(>j AG++Yb`^Ȇ1IfįmK\7[x5[1G_\Tߣw!y[[NSB CӴ~Z&Y*ACA,*|-:5dׁ$پt F7+|{FmX~\,&~Yu6[fa!C(_ӒӅ'(W[MŤْA Sn!ͨr78ݽ˚( g o08zvKqO=oVH8bUUXb3⳽9 ;gd^C|-xXL_΄N/ѥ sV: 1"2Ǘ8/0n6U?6'HZ0#Ut#ӽ褁Yaa%pGY`V9f_e Z!hYFKud_*K Yk&ޣ/ os; eʸA܂=,%,I y2œaѢtP@kP;˒S%2\3Y0k$8@xT ۨP7jOPSI~GBd:Y+m;ǰJP['GI,UKy O,n2˾a}~\a*̷Sdh'^1_gЀEY ?ȩӎTVʗ"LR܄:Pe/-*%ocN}+V.F5?,&unyl) uf[LX7תuzY}JP퍻uxY5q{&5,k[&a3ŧR 9bbB:o96N-YK _2dj"NgX8=v{Uwj#F5o6bX_J$T!B\A io\nHb5 -h9fm?9‘lau7o "ihu}-j]+gE:MEx!H'ծ.3&~'5h:7>Yδv>`1q?`_T(d(Pጎr 9ZQW޽!c(z$G5X2MdJ9v4|c#am79e&/;=]a|Ǫ2_FjuWut:kg*%"+,[*O| RR\|ԊFeߐ?yįQtS6/d?Ԗ5&Nk;OӔJZN, ŚD|Χy@4)Ѭ1짪C7wHuM~7;'ʔS;ݎ1D5i' C' a= r=nB]4$ۘF*nfxDӖXBtADB!SgA,u}є>C&?OEL%n1DiZ4ˇ*{B(:I>e`45VOk`{B! B%Q$(w݂P̉ HJ(9ѬT ޝc] ґKI@ף3j8nS)E^nmP^nRO it3w;ս):XޡgꉬB֭(MꢜL'{.~ Î wV_˚uPUEj68N7F%*uh?Und_iuz''EKGGx2zNeAx.L𘆿U: )G/*a3L{iѨsgUmhA/}D:D!;g1.Jy7`#l}9 p;̌ՈmȰ}7Ǻ?Fc3"|FDؔq|8(K/MMIX%[2F;z+gP ͷT H"Ӹ6)`zRn1CƉFIOz>W̄QGIޑt7d<;O'-AgXՐ{mg~`(%YJ,!mƚD_A> #8Nͧ)#R PR[ǑG.? ~WL ?wشB#P-P4R 3鶜NEA;@DoZ7'l}}=32-|SDtP󪀡=c}$.3OeB< v3Pƍn1luG/T j9F0=mx6ϨYo=FbE dէrlűrp` b{CpȒ9 RxT6@!,WKiK%˒=!elZv@6 zzvͯ&&4䦪*_sewG !S#.ZjESou kR䏓^Qt-'=_@_OT+"@\$O+^z #!32CH㖐nuLc ̡f~ѭow26~'j%o!LY#qWK;;[3nwjLz[$U. E/Zེtb$$0sDjRYeZ")j Fܔkv" 2@(Xx $o4&@ ^6U R$um,vѿuUTƌ7-u*3TNne 4|Y>1 T~eչi8>uۋ-"Ϟ"=Gr.֝Kթ/>vDP*ݶ˱ʏ*g(w|o -o=%~`v?7n27 ԡ;.Q;;O IOulް`?[vFDTcS<b/鸸6p!܁mHYK}6,d(_?ʌT,3 S*GW+ݗ_I "Ρ ,SJWzT,ۍ*PnMV'cWp$~plZNVs7ggջ6CX1if1m гPЎTf+T?箨~}v0Qգ׾&{=vnc6p ]uC91?]Fݸ]j[xېO_0`s<ӎ E6j¹L !jTOFLd 9&ڐ$ʐݿ봽#{ u_eNYUo#WlŊjw%z8&>J#H H^0p0 kpgp[_jcJ1A xe" 獩;ڷY , 586%ƦzZ!N%Sul BBy9u (ʑÇ(iѣu(>ȇx $nMzQZ/ AI#zj+а2V1?[6Ɖ NPyp&u\H/&XKkӱN5w@֎T?nE,k٧@TGԕ7w@͊mVrFkbC\+ᖢaB=~A$8#FmsWm%uΦlюtָWw< dv* X KGa&w75E*ӌ_>͙,]5;Xc҈ S|}ic7p=6m[]E]8gC( O'd7YmP:q"hGfsdߝUQ ,x7| ͢հdb;ɠWQC6^G,ijX+.A؞_yV`j_j693>抂:{%7.`怐[Gޑh.Yrm{譆ٟx]G*0f&?(`x\RdV> ڔ'ѯ%E}o@(\'t+@\U;=IRjNR~[ #xxolFܦ'z1Wzg2t1Jq-ꄯ CFfֹNȑ"wۨۤm |j2ca/oA1qESl q!ɠA8H_& .l`,Ë0&U&Z9ٮSgV- )?k)fkFAB\$^{Żƴ}-'Zxża2}+p,FK(X*R(Ά>u㼼 4˗4 5꼴dB#kB#1[T%G)gPlQlv%?G VAW7i?\vDmG~\U͗ Q,YY ~AX* qE{ P`؝;AA 6H#鿤lxZT.R&'V6 W0﷊sվso`TU b;gqήmqܣFi*gU>xAGB5Ec}>[cW ZK6ubrkUgF5;S$]`L|Ҩ(&~albQ[ex_Oĭ 4qmv䪤#΢(xp5L &;Wts0H;%$~+MiZ8 Xk}qGd `O:%0GeH?{i.1ҥZ>hƁUbн`MujxTly#cL Ov:y3honB+Z@Ss,w=OBo[ԓ#6@pG!=[SVg Yg:K j۞҃ ܐP[QI<$EhtZWe|jKײevt X?ՠף B4|Z8ө/_A(Z4M)˹H amOqz~SZ,mr@`n-]}W@xmyvMD s|`8TS-gqbUj SVoð{s0 *k $BȗdRd(-$aˌ7G!$QP6(4uDOx#7A K"~}P8 6(Da]&- R]|9Cۦׅu@[֑D1#:/8dB|@  ŷEu7к"Y-WvJ@+1i_w üixc-)_m!/d׹$:VHes*o5 \Yƅ87YH16g@m`\݂Kȟ@`̿/̧ρQv=pur2Bk@!ba_NWJ/fa`^}F&*&MC L/bW{wHne0~B.DKpk8ķ*tC\TZ~XoeW'_CSנ{!X>L%^ݬdΡ>2dN 2+SbLb}!7qV KOU]Mln (~)B;N*v'n"Q/kKVC[41|O9$^[R@R8MT`'~e/79_O+sdeI+ =&^\GRmRq!3VeŽ"j[p7Zӎ@wnƤ\B1kf,7pSOoi d&6 K$׭p5[ 4,N ]ª0˹Vːq+񵬱/% ο5]ͅNGʹ"zH v(O^K)8’%apa!9WKF]qwNCE٨]7sk 0O0|ԇR Z!gp'|Lnh$/w66 5u |Vl8 !8spGCG3,7ؿo܃|E%ݏb-Pek}oKgMZȅR xRa7|/q3}HL<@4.H4NUOɎ=H/] <!xKO pC12LzbX۞ m6O]5EI5ݗ^ 6A~1Dy91 #27kdA־K8]q7谫*-J?yQqu2ly'xn>w_.”gUg?w %qM#B>NJApCVƸ UNyst׾-*E} ޖpEbdsh݉pc3xB4KUz8W2Uᖛ't5xw&Fh=f0, WgI3PP#RUy 2w봠JռSpK^fdj/EAZ#: [1rb`lam[&+×d}KR m %?(arM53}t IE`D՞uv/#iFn+0ږz"87[)|;= GeіpvG{IX<pL/FKpN%N TnomT<μt\u%Owj*.UC9%{>*(跍Vmx#&M$O1,b0ԟSi{e1kv14odaR&𾁻,gа٤槅*i,}#-G$vJӵɨ4?f7Әƪqnu2ྈ/=p`NĴ$z$%WzH&,`Ά ʲRG٭36hU5jQbA 8YN۠l,Qk 2R 93 hbhjB>>Dq6E?=j8ݏ2sRԿFPH~ƣȽcZAcqj[>.Km@C'N3b o$B. Ռ+g 7n}nt [*_8!_9->TsZ8:BR[&r ~؋})k;[fbϩ}-`$%I\?`5خEmMIǗekc!:6ip}Ӆ4s\U xO |%u*\Nt[Dǵ ^g|.l&j}=9TW73Xx鰐EuOǒb>jnZl~ Ȝ~h 7`:;(H-Ӥ=qv^Wt;zI4j|ݏ]]taBB [ׇ<!0s`R"rWx\hRZ+*w$iJg}Q)#T|u.\ 1Xv73h&V Q4U=RxKl֭ogT?Nt=3͞"nbecOkp592e8O"RL_Im0/{M t U ~kW'ZdbڒYJ_B['}װ!uR= 3,wt4>Rd?&V띍ힴ}ɋījP`㰭6EwԊ1VXѶ" <|S9oiǹHI[MEڪuzԾXwGD䑓AywcܪaO^9 ̑"iA͔k>FsFk;UD sA[w2Regb5+Haq+#(rLu'XZZ .:wKRyd'; ĒVݛ+Dl:l$%U Ē6;lhA$S[Eb$7w\Ⱥ<ȕʊE9|I숽GS aHe` mIk6}A zhgE];nO@rgX}#Sz'=bYA%hOp`H3w"Vkqn.-WR4)Ensm^o.d9&]\dAZME2\1\QZ%$ՅY9:^7.9ktA?uWZ@#6^8\OY]/mIosed8N"id3?fha1FWt6)!a`M orh* lݶi;Qa-Taܦ$j!P QQDsL bH\MD|̖m.7ׯR&\&E1W[wD}+:,hS'ZYfmtϳ9TV 4rW/%F 9X݌k&Dŋp]3!%WWS XތʭФE$"=_AS6'JnJ z~ސ#VQEwюtASphZ.@%'Tu^-] 8v2Rl(x)gWHEZE-+ŭ*zdj+s摤+D3 naE^awXdJ+߄)5ƗȲ2 ;ْoP,:J|MhkZVRڝH^@?*d9~8NE_#YƔH=XdMTF|!˗t?ޱzKAk0oT ؓtr,x j1ՂH$nx¢@\љ>ֳw񀌶)R%Cy hÊ8kadw:E@S\*;||@g $7r$߿0A(63IBlEgbΘ|`lc#XIlRI6wVD4ԭƹx}>c~?: fPGmsb d:0:xV(6n W/n{P`*4A^zwì[I\% UO}ev c(o%ƆGUߑh#?=P$z,p {n:ʡaAK *.,jxa >ޚ[ts&Vv)`p}I46^F8PYo3 w%-3F?;б@ztBzpބC Z|T> АsSŅ+vz`r3[nPmaqe_@MѷK ,Mm'S(qg8Qi(eט&HD-n%`I!)}k2vGul\>E?' P0;5,Fa5!󍕃K{[DPu#Kc#=^<W޶ !HȎoG' Gz Ryqcs>}K)XZ@G񟱆vט8` 9Uu^PY{bA2)22XԖJ91kO!FxƙBJ&'cmCjB%a,IHRyymcH9zlYG/ѦL\ ь`]}x(φk_ed1@!.c.qGG4q›QtGB~ߵ:]l$n}ʁD(%;\VfRR FĽKXᅡVs(XGzzK9Peamo ~ Je4Q+i~Ϊ@o%|Wh}Ro㖽 (lEDh"0D4@arq s % !õ7&#~~BM͔#Ԍc$QQ mV,> «~v%g ʀV.V1;:X.`@˹ud܄'LmNȳ%`vڝwDZU3h=kBF,mmVYlX)peY! CJޯ2bnkw{$dPfSg"3ϯNgͲ )7 Ty;ψQһ  BD{.#1[^thR0z}:yV14$FSaS9Y6Z 06(;=$~PpXect$5 Ixah/Lj 7 ]P]|⌞}1~GTBTB|Ea=/iȔxrbv.('ڌ{jwK]my˚N(#Y[%u]WCV⟾1j--vtf@#CmM-Cx'BQ1aQ9 %CUL|S~3m`ϵmF`Kۼ߷1 ({C "pňt?nT0MXJXԢ@0[!#ry *lfrYNSW$x)mIoesI*#X'hk(x4١sFkV?'P]zlB[ &xu/w5ojHsy_{˛C?uYy4Em H4@hK``*@[šS(L>rI:7O^Rat1[ }pwC \Z>G!' Gw^!UgQCRz"&Ͼ3? @R $h ~aw'} qZf2&{׷]¾ڂaUCZ]!ːÒa_}-[eW>4~u%^VȺH!չ%[:laqXa Ϙ<;,ס7UN!4Ӿ\-# JASaCOMwn呥`\Uo"ST{H8-^"'#n'J$wpЊ59_g/#ymܦPik1IzJ2wn}NЗ7O,Yю鲔PWGD-jP6dG7iAJ`_@aI}6+YZm1r5P7K,8ιcկS5@veӐQ 7MsC˚_"YF bC^pULZWiYs> 6U`% fʔƮ8!Rksg^o>/ֈcR?%\ޮ'(& 7E?gW?z] ؽ6#fF =4A-U}BGƘM=Jgf S$@7 B?7;6ʪRJO^buH1 -.>/k;f I*//m6v Pw\9!ʦm+Qq 7Ju[j^ΨBYΨlB$x):ɗO.ya2zRFC`p rPzY9.G IIl>4"gC?p4`Dh=$BL0Z\ d (}Pۿ i`PaoFZg1uDe:q\TN9D@ת:ː~l4iqr̓:o|S>e+ kcޝ0lϓ' Fsw7P?gGh⦂V:N9l_:6 ?Òz@5.h SR!DVU.|ШFйhH[RBb.G*EEm67SkxG2SK%]j\V&:38㈚e. mH.1@Pl?X3ؒғ&Nݬ1ef{`PK# .x=f[iBHyJcB`g5{<* tsq?/1;8vQC>qs죿_(ԩMVux!L1-Z_m#B"d\(&bHj%6ߌo.Weo\tsf׸,s+q3W>Df)Wﷂ~5PoG]'Imb 'D_n9_L6ub+s+1\ ě*e1mvUE}3;8Wn{+si2? ^kmhppهx;3٪ :ϓf?: BxJOǝ'}6F73ז[s4MN>pBdǀNYwK#b^V@H#|js'a=8ݯS*D QݪD^Gr@7X}|>w(%G TK8Yrq/IMGLw’W;c g6]9aQKm ~e+.sX,u:+AGb`dv,l2;IB(XQZ[/Md}3NJ3f[6E.0$=Am6jE/"eOV h ` 2/Mkz?ϟ-;? kO?xbs|63S(qjj*—OF9v\k{SF{2φH%1g曜Zih8 e^s^}6]҉lOhg渒b#&qu¾Oh܇j(P bS^E uAEsZ`- k26]YoITc^'"*{k>CW}w(7E;WR=3k؞hPfASE9AgyM͖XTZ54hzEJ- h&tP4>=~fUv}7B7G)rh3$by`hIY$~V=HK?_mJAa_@quOX>3x3Ȍ'ɺHkA0_*hu-3|u׋x3SRrDPl܋,Uuc׌n xcx騲^$0``\;D ;(f7h(ɨ,LSq ep=čoYgv}3-2o-ۂ75~441΀Xl$So . p̀?i6:iKVN+=ŌenDw SB2A),TU]MhN] <g ' _, ohK>zn*OL<Ƶ5}dflx#M$=2G P}3;XeBQ܎A8ҟmc˼Aj7 Q 9l ү'ڝP|T61_O%r5$ozBB>W\&M3_FR uk Him~Lg1'Q@>L۸wwr|1P6]Ye7Y'HzgW&"۸uae:έ0b~'.tװOiR6!c0-R|ϱ%qT뀚@j]@-{:kKQ)ܽ/uZ "DoW׏ۮ nTHJyBT$n"u,塡#Wqaߓ.%O4ΙTGD:fauF(0%i2FzO0N 1J]n絼i{)xPkvHkG:Qrwfi1$9:B5E bxb6Nv),F[*}x0%5[bMwoN퉱H(gB(C2v0@ɘR{r[o0}RkJ\}1޳2,Q7)Td|c\7; T <f=De2XBM^ NͲ`0% 8 9.g&QJW?Gĉ"#weXkaRF>"dJ zS8ݏwe IlՖpZ{]8O١^Fձ[5-ÑlY ރU;LVZCdMۡV7p<{K߅7ZAk4z,M&;&&%篬@;#tgWX:Os*($$ nDiٿ'iσ$lA)ṱ:z~SEn+]PK%!S-xv(1G0/fwp0Q5b.>3I pДՎ J+i;@*daew yz;,5*3w̚v^ hLQ}jhpwߪ4N%ġl&2Rs. bkzYĵ*=>%MI'8~l=$0oa&X6EDUT'48d4][n:G]n7N\'~)ɳaR%b@E)14P{{޹0.6f GgC;n6 @6{u@sR(L%#Q(<_|Җυ9ޟixb;v.VW Z7\6 i^Eڂbe[2OOq78=Ve ʙ`)}Yv Evz\pݾsD?X݉a*fSQZñT2[ھnݍQD҃Cq vv7?(;Z'\TT 댎[,DIbb"nM}>l<iմwQsTctGʎ"DRMү L]V'ew?=+(E)hWΒ( MlugEzeB~PZOy*3Mt6^si)/p:ODk8YX[z YU(߃R7a3;EAAaii#>d-1,Bg҅e pYe@|քBs9E[oPn9aXpAh.}.Pᙄf$ɟo R;4 R_QnB4ɧTʃܴu~z4Çv=P\*DÞ\$ ^WSպ]-^%5Pɗ _|';kp,n/6{3 QKƢ.$X_M$.VGųd/dh23p-ZIu?{žmWw l8V)A&][p=NceƲc6Z۸nUxGOO`r0h qlWyhDQ0ۼqK7u NWkc7a =QF6D]oCe5Jb&ezj=Pr=جxFҙ 2d("vlm -.α'\YfRXvY[ڭR+t[ BS=)d ;*lߵ;Ľ._>KfBqxY (F|0.Ve%S61opMG ё`u<:}B̸|96nb ^. S]}܊"g]|+GNRVDFTu,0ۿnsS|11np#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d ;xT'PzfdbԆ~TT=2j(,-}>4ӔZrP;#;[02ql.Њx 6aO=〺# ?}w!nz>SbvY[ڭR+t[ BS=)d ;*lߵ;Ľ._>KfBqxY (F|0.Ve%S61opMG ϧyl.{;t~qFq#mW4O|)7|sS|11np#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d ;*lߵ;ļ%^c>-#{]] /lU U-DπSPD.q&~%l `҃iYLGa?X0\MWsmy!3b}ZQbtI\mޥBˈ?\N&(q=$p#_(˅ѕ~*'uMدՐ%S61opMG ёRR$B5)h:piU/aJ޴Zus >`eU ,_e;`ܵ._^fӟsS|11np#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d ;*lߵ;Ľ._>KfB?;9 J)E7g0 |6ړ4j2~qFq#mW4O|11np#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d Z􂨲LL]e #歊,؃?N~ c߈ضL;F{z =_ $AIkaw/gD7-`rFTu,0PT"_p;27 *Z&r 9$p#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY/}9S: *$XoO]gANf\S.=/"29?}F)TMQӧۧG<*qBa.ml@F|)W0gGP7d 7[tЬkC'5ݔ\-Ȑ_,ܳ--¿[I6 ga:u:ʳZNpZYF@LeҐJ9DKs~sR~d3ٳ8"Q.Y9ZB=~-g;tTb\tJrn >䷆_V蚽-CoZ>BZ 箓I39;P4kybmA }|pnkq /{5 uR {~vv!ɝ7A@LZEF/cI"OLEcDPV27q!0˃5jay~h~+0a!!U}+t:Ϙ}E7^ݵxŦJdE+ cW+|eLCEz[>; aK[拍K #vwjA^Sޔn2a9ȅ&bUyɽ R<ök6>c15DB=H[A_'G}HE,ӣY1DgbZ!sB^Z%Q(bhl r8b wc~$ (&D.QFe[fs,"&Y R5lj;Hb{wGZIL?Rb 2v,_}()?8x,H"{k惾\9Rhbn"&jHpda^he9^~lמBg2ᎅ_G%fMNUŦCR\,'{$6[!+#BOO={8݋d 4!Ƃr-j:`xLcZE1=E7 VÇ%bJ48"ck;=]ȷZQ+"h3^i;eʐ;ρ"!v*˃7B=r[dLqT*v鈋r /J=Ip}pH|R!Qv&{R[y8*)@*!*pA-T˱/ dc I&E칅Dza'`+ᷪ-ۅHά`;, 5D#ÿ(hGoB%+p^K[9πpbmˎz'h<< R+R pi۷= 2F93vKMP)!0 *dZ{`TDCyZikŦONx,ү8" IjGџ`͎'fॳ{OHQ q)bg* U\qP* #_Ve4uvHq~(1 !o>R>HH5_㪇ѪvYu?{v'q_aI_yr;x!,7;1G0E f,V#Y1TH37 `P}9uq&vq BN+X.7r)KkN#ekR~6_REC8ce1/;$V)w1(?>S6!cDn̺5 LR) J<} qA(ıZM9 [ gpo :wX,kTkF'ܜɏ`ϖ2)Rw.1:;NF^S*i)1eD(xS>`)WG_o:8#UI`[9G`Y08e[v ͣǘn͈w P1'>ά}"vp28%tOUqyFK$(' ;Ҏg[oxuؽs{;|̀éS>>Kɳ|GGMĺFHM ٩47Cqr:P/:pU?h9>KH ׎T,?iIPض 14Rq?)n,!Y1`DLML˹5Nl٩ߢK͐|g>5Z:_#́H gV5)oSd<9)Qq*_՗~~zZ) &CMAsVBdmWSdM[fCj-[N׬^-x{wE|Za*;=RTTsKA(J[).@_&gd6V9Ѡ^E2DkE3wRLu06?oKAO/B|o<VD* vÓFEJN9ؐv[XW!A N]x$G}EY7-0k/x >_~3꾤jmH9Cz0Uu|8;gyU(6A:3ˣD j$>h/a`&?&kJ9u%Sw?pR8"'Օe8>J\u*IY7}x\6&Z]}5_GK+H#OH ԧ%ݥLޞ՝ho# r2`<`ڻ}Qb^#"nW~D9?yKw%R׫P7B85h7c [`օu_ &ڴYլ1;7,b8(hpv͈C +xGw@~18݉Lp9g`e؅7zfqZ}&  S5$ONW='zX;idT-O#)ѹ;s7UAة] f.C0&_22Kd祏2:m^w66aSVȰ':@!Q=7^.rp*n7՚Ӕ&(3&@)8TtQk5]H!MU0Qw_}vc\ku?S38C-lMش}JԚNg4tTBWtCRAPUe:T|=Eƴ fl覾;]ȢeHԚi6~XOkABp5\l H_*~ v=)Eoj;.R`Gil,r%qΕT~bDZ`֕\6Lj I ƂOIAaRp*)~S|"3?Hs=/d*Q 4,N0|QAzTפ0cG8z$q-(UyP8(2 zΣ"rf}LFEjzF]lT^!]bYT{TH{`}Ҳ^,!br#ov [H_ PnrrGc[\Ət}噥s5F!n72 2ĪdZ˨9"=hb(JblqpEa (~N"lw5(Gō@VĠ,e=&جH{q arA3 4 \7N[j>Tb-Ʊn Jϛa%&#BԽ~ @…W7/%\I<[a1)շ24ecSi%ByoWxŧ^(0""c%G\t"7JdȤt>u|QqҩlP;%4hF4{בʹdi4< yM 5C9IƬ>qbkyȵUs;>V02c6hll9o.LC@"oݜN; a)-B@pb|H_I#U~kҡ4Xƿ~L)NOyAN sV@[=2Ad=9(c`c+1٨L8:-=h[f{73즈!K|S7HM؋#u GWHwf&}ﲗ <}xƄi;JRZ$9D)L5E75RW!d0S`!֝`,rFxj1_ H" tQKX=A3q32%ap6H\P6qmۑ ח:K` E.H_0A.oX8WZmmϬr }КtDz9jQ=S5L6iuzv{ JHmGy|ƱBK +IH&U68> 珬s<@=*sl3S9'vtc٦ҍ)6rEN7po?_ ְA"'Xgfs Id }Bmi6uB8Ji3܃.1Sݫ\>bL7{}vw!MtfrEWS.u!˅Wl66J,Uk'+k/ چ5}!HF}H}%z|Y֙퇚~>,8q@ͼW.k@q$$lhKxb@C aԂǿ g-%ru%Ֆ"π, p>D8ϳ 6;xf sq *&Ltt{X߸JB=Uh՛nĥfmNԆIkM,_hsYC=DžpP1tm{$.EK`zw5N0# a8nLh\W3v ,79' +ASq8l|y׈iOשt#zٸznFyw?8Ta"H Xt#.l:YA4a?d{u Qc Efr/fyX@R,4'<ĆeiA'*LLKH U*c;!5~F8-I0UB;j uhyĠUp1}Cqӎ-M]p-4>3>؄zNarLS 9I%}f~H+iIRKNBd _9G>s|"7N>jjbJq ( ~8ihWhhy%GY0xڭ؜*O7z-"tCqKCc0;%`kv:B[9\`PTlXn/!<_a4m*yaUz~pE>:mjtsmȚ LЖF_j4B"d3da]9 5]n}7} P&TGpe;l,e xc rOZ<p {W!me4H-HDO;i\ySTO>4ur$Ժᵽ6"GHC]C T)qy(9=kf|g2huGoi|\^k~MӁa`9^$iÒڴnW$ZߛH"hڦ}i%j X-t a&7VLcr{et;7f\A]qëjR. [:_9q|͋^#EIPeâ#Zn`͵U/>x-Q_a,6F ૤DoQl}*O<bH=.s5vYpΟںtB+5" [$@U)cMy:fk6 մ(dv ~ɋrv4cowý,,Њ'4o;%Ɇ`jE܅5C R42}gW?1 };=ES鋩-U^G^ӮJJs*TĶ2\ڔņR'sTb":oďWݬ9k^Pf$-sGn.wVZԝeTHD8ףgKoV!CfԹt4kFk֕BzhQ4P0W3-/1 6~4]/&N8p@@ьyaԡ=zۂŞ /w[?h_ueШ_;2]L'14:gH$3e(!HYgŝL Q]ʢ;+DAȳHmyv+>rL'C]L !iJ&Pb]E<܋p4*]tځԎnKP0b*EY^3-,r>BrZ=OǃT.kHr:֯ʹ^B ?TRqi˦"w*bi}b+n% H|FnEt%@e{ڏy\_Arwhmk5-M9[+6^BL-<']ʿnha` 4WarSr\t3K,kUDJti'x;hF! = Fc tQȞd|SI?HaC%*Fo.Q $o? j4?) TP#_قqwlޝ ,NW,xmQc ؜EߚlʍDv`}AS? fJ?eC|LdlhL c.'c0.~@\ A뽺(9|:9{)Mf;9ʖrFppq^hxEvmBfgTGz9<%1Z>(g4Y'$k$ĂYz3> D@ XLEebT–wX$& rȄr{䫀 DnR*,]q n'>Z.vh^jRNXeD!m:ݧ'b~ Q:Iy2r'8dkЕ!y CHASt <7+jH\~0m.睮!X $!Qµm *{ rj>T<-\Vxuއ3V$ IL٣tLC3Nͷڜ!יuG5 oƥmvFln:Bv&N `&[γ>N@L/lyok=`!/%J%+rd hSOvC͠^m*Q@tPb|9TFh]^QV!ڶM U'*SRa^qJyYHS \DDbd<iV$ɔ,o($I\F|w - v K GU$sѐ\>ёPɝUֺvr8p[5e ;׉NX9 KDA@`ƥi H[u PŢGe.`K+jVC?֒fDg<۟k:jٶ ~h4-[MJ3fj*ŢwaaG}ca- 7nPᤇa l,/ dVSR ҳ\٣0 ߪі8 >>o8(1TS4m׆n=(]Ahl1g!DUBf-d S][7|fhC [2bPsxބ*qa.I7h^s"9KbH ҨT`ސ"Lc|Іl| GJ $T~t.W̄c xr_e 2K=eB&ct`NҰ.*$o%eNb}i'ӈ0mY$SBm3q12n-킷eW8΢]ErJG[Ԝ*Z P%Z3¡ :>|:}Wx)$Y3upB {=z12akX2O v{eRyI d3se3#EE9k/^J߇_]ι-l8eyA焑;#OA 8T YwYP'7u *'CPҊsRpP4P>]_@<^$R/3d˥EV<JB(ÔDGGj r/2Xx#ʴf_|Nf]Pc+-ԔN{ǐѩ(ҕIXNcm(i >`q>+yQ;m=6NJFۯ_T|ˢCnXԽ#p.pU I3wȏnóp\E&ϛۻ6֨K M>ߪ7ê/ ޵W#&'0ɨLn)iH^'K"`i: ᳰg6ԣg7Dj l>\~܀ ,m q JI0NGa.ܥyDĺ(F¨zoK!1Q p]aEFw{/m ](I#_y@Cyn4wM6=A?0b\簢w ߑK3DŽEFҺ܂FO|n;b LhroI}D*"3ʜM5&ʘ(7N[Z1B_qϒ}B~1`|]sƍu߫RoVJDŽ#!Nq(Ϧ#jG\&g-,T\Ӿ!:`*Z]+:]|$W(V^fS{"2y R"I؟0;%".71(+O(&|At%FVF&B $qM9 E-;Q?v_NRP'L_=5Jz|3A*"6 A&8-FmCh6{z7̞MM%7eyK9u]Ֆuة;ojp̠SA{Fmߕ sW%bLA/UקҕǮ6m 5:DhjDeȉ@nm֔ Ź\SIU*P,@vkQ9aU RAVmb::PA aS˒S.BӖSX[WT7]Yr9٬` !\7iN@nCI;:FAhn:)$!VM  . C|Na?73꫅ :~ P/_PtYĶ`:H6 0pQ ^fy=,bϽ|²Ė#T0YHG'SI5.\\2"x&k)TU!hyTe<\>"p>ZwJGxt*k:_jѮ"c|U K9_ dANrQzrO 1ѹUܸ<;WC!kz~9\  uDbj_¢%L ,<[؝@-b7r3yknaʁX2@?EֿD1~ͬj4NqO: K1^9P?F5ʙd.*2Tv8k1 9= Ո@_g OOVRQ 8Y$(_Կ Ff{{Vj̞)^)?I^zupܐp}ODX%3ǀm}I;'l tѸG?NCrr4Ƭ4 F7ۨ+t1qQM!ݙ-{ڮ=cOoOrS&8oʎSOesrs\ \NoV0 q)Ж .U\kQץ&17t"&Bs a1WuQHd U3)mN|?+MBK]ڥ3[ c@oQM<N^Ϗn'L z@&VW-ڀ]e!~'Dfhb)`ai!Q)E0X'˿sK_rD5csl9ߣxZ`Nz5QeOe?<2`ܥ@ `U䷆ډv I|+#d}D'NqS(M6^A9i4w$9tp~Yk6CP&BKo;ϦRm[څE<;׎83r +4|8ڌ꿀vA^D_.37c6ۯ_F  ڑBʮg<_ Ȁ#v8iG,*16a`ab۷g@5pI}12ۺ|H-LsYRLOLu9.B=Ke&K{u.LF} ~ wacL+%HɁ^,;q=t5 <ң{?!<+Z.ɸ/l#b\h !8QTM4@''`=^߱ ՗Ebv ,dShDrAI[p?,tƔۅ=8>,u1az"]%'zou(6D\;9; T0([eIE@s Nfn~ ՔlCr_RKe m7(7N+_TTBq> F$)B6!=L~i|Z}ܹ1Y>nuHA4S^+Q%~l/\r$r9]av WyRdj k>E1xSnKw*SH_>-ɞ:]:PPIHܪ7(B4rJ'r_s_QHpQ ~|2zCBX-iiO׋MH\Z.CB6me(y!i5m@w9&:HyP-%_>ȉ4ps_ZX'<_豤®]֩"wkPv]F mA{8Vn=sf15BZz?00.Vs:qᤱ9bG|2tZe} Fww YB\ >$݋(a㲯ȤnG6=oh ѿGׅ8hu )|(}WXǒHnD#iJ~tͽqJt%v+Qckbvԛ6jCS笩v85L%#OrwĢK}`5){I?v|pvskCBf4t@'qC`>f=yֆ^ӀŸ~TSߝ"A}dQFժޢɚV/@0 $~c0X>>;uhI ź%A'BKK\5hi'g =M_5aW 13_'U ɃVf+vR&#[}\ĩdPKM?ȕ~gy:.-vOA˶ Of#qKLxfg @=Ĕ:r>Ao/|bcvll\y'Z7N'UNe/tBd;etdǠѽkcsLCs+5n3un\ D창=0 9mo.B `l@{ YcDrwҙtm\zltjJQMű lRqa17@fӋq ,eqOTQQf _g1ZWdz?L`P).s#r_'|(\9_gT-%rrc(mMgZon2Hu`!OFy9Xxˠ0)U vB5Ua[+%)2|G+%3*X $D4G`T}(%r$ǝ}HxGKtg7rrc_1>(1wRie|RF{l3i6kMO5_CRu,]He;jV oDhs~ɰ?pEOCkפyv?a +K D^l'=JwQ(_`@ eJ #(hP17eHkvV+[nA {iN*H 3]z;ш }ڢȜ=e3* xZiY {M"ƠMYLH.RKbHQ䋽 nK͚{d̫?-pbM䖹g bcFbu(xT<1 $!~6Z'!cHϣbb5O_QE1F_kbQp j۶D49aLnċQ!olE(l9Xϲ&$ϰl{V֙>4(S6!Gu}%sG}%l̺)63v GV&6Ow\ ^ܾIc vvu7e`Ŝ@na/gf #VasK2kq3fsOq!s6ڰf"Sɤ*[OƀDuf4!OA[oDux}y}ixG4И'#} w!6mu{(3Ɋgv=7ItI>wO< aLz##cgt 4G!Iw"R37s`l3P@n6V[քnTbVHQhE]v YRLj0kZ)ˉ[˃ jyKVn:Z(Na8y)W xmuEoӠWdI ˜H}f.NaY5i'O#6?q2&3=j*Vk{JS '~ONE6dW|pq3 TSƼ:f~!owW~1C8%Ʀ>s +6J A)v(K ^eħ@a5TdU1܃f~ 4s[;T{9#gNm]DM~OPjX h+s@ИwDe.w\I+ >2,#;>ʧ?pN?{m3Jv&&>9SʓVax*oP.kwxZ{ y긨If:wjJLBF* , y~GҁAa^թx*IbuA7tq3&ipG6' ;e )6nbīMN;h`ڜ _aTUNI_EVR6b%{T|m`Bg^rMHMTHNWTKy;?)!!Hi{"Z^ni ,OQS T|JE OcQ`<6 Y]NإYEVYM{VI|f-߷hT33唠Gz@A<5%J֤\9cɶo: bsȷE>Xs3&ΚI^)ߌ$1䢘^3DFƇ@Ya@pK͑c`!pIG1]3fd H3Џ%.00yYazߠ6gNba`LxeKH@$Q1P5wkeTm7Hg6ŕs=iYy;`?R . q%Ks>XB)#}5?Q2&zP-EZ/=dKuj}Æ2pj~kTjgsf].!]a[pq\%i~Z1~3!*V6_ɣ19n_2p(^.~=(C<7D1˶Ǫv?_RF%+np>}B?Y__xӠw cwϮ)~gz3h+Ӄs0R?{Oh&tʘ=ZL_HF>{r ݡk v"A֞Ol"6#'!ꂌ h4 `\f*@1/<]KYSCPvYGiuXdB2h6 thwk ?rړ U9xXaTkhVy|,zx(K@(J*vģ(t;ǦNKJkBV\}>2V qҍ!+]~W8֝V/ vCCϮ֟-$Qf/c}FxV E ,wPB Ht[o 8Ŗ"iA @]ANfX2$:({<I1|,t2B<-;jᕖhb_g;"Ke0Zᜐmz@z )čkѿ#A Nda s0k'ůnQޭN*@ _KEڠ h ?Wgֵ<<7YX]dƻXZGNx`Aa Z=HθHݓk .H>{~L?yrk6fɋgk[TZs%<[iTy{|@(54~*c6F/A3p,đz &85]zWy$Kjѣ~@lYTg ?A!&D>d.\87CR(U"J Pwb F:53_f楜7H;25Bj%-o',"q 5Frc7?Y}B}GȬw3VGl ?>1N"y9oTB^R8U^qb B~n# <ʆ`6T!6w֫XtP)M-HD'{X5H~grWRȂBTCT!1! "bw/Itl*.)t(7-҄],}5пˉ*jB9(;Li*6_#gg=o9@Sx*E= C9Wf%M7l_="IC@[YMfR:-O(֩D|fL2 GtC섙<_HaX@wItۖj-Y6bc*X_LN,eqzw = Vh}x|)ұ0BB%+{]AdɿZF@pP[Az|`}2I)ɣEBNYZ认0 s?zawf5ZE=^.9F_~4ZAj%VѮYȎPBf %EْܐcM,>t$KE 9pBe rЁPXN?g(HrX3sgkJT**'3&yCJ}E~~qbg>^qBqVZp ]i9e>?eMrcǸcg0U<##*jj/|%-K54)05`R'Z9Nv^;8J?K‚mR͔߈j_{?@r{d_XĦR;v>*\H>dpܳFTez3-fk*UR=tf|RG&bBWi3siM*nP,aػΚ5\g(f<  BQ6P |g[[c#gKQӰ^3_D|?F{<3%Բv}:c;zoi-2T7&ުstڧM41:*KT]K^9wh)[`N'E*,U]dVWG){8b.$-w0KuچR$֥V`Y\]|M/ŷ4sinߕaF- lx;a){&>ޗ'G"C"?)viJ0A'MH9o1 -))KvVo>Pkg'tj0q:CVT"1_\6U?c V>G\{v+9})"s_Umr$($p\{EN ;n]AǪ&C% tp9dfgZZ\dZ{>= fucP;6 hdݠ:pXwtAiN< b8]ѿ}y.'\cz,f翂 *G{+R' A9t9OiüP˙l&7QyF]z^tQgK<#gi1?Z\Ҭb$IŢN f;UsktQ |Mn8/;a)S;.$mNy`Nø;Z&q\/3{5v#)bm7gD{3azX?z\A_LnEHBOsGAz(1/4la[wMFFBĝx͛xT)~쾷MC Ww*jSbw3ݮHP03)֬XBa'2+5F!,.dn\$ӂ˳¦$<ב<6C D}NZ!obt^AtAO }6-jY4}zH٪ k#$ B17+\xslAfk>j_y?|S}.K|V#}(cߠWb3n\=̜=3pp2X -`ifN4[> >DEYk;Cu m`NCFAɝYEtekXw# E8NS.wWyNXq=4oXkG8+x4Kh?!6cued'&0x cPde] e O Irj1ITæ F\FA=LE4?8Jw$=qP.4nV[E;gm#{)p*+m IDS x 4 %91:c t4ԣ)Une] 4Op0w~qߛ֪D͖TA>2#~ڙUgXXgt:Ega,m_LUM6BײTj0}hp>MZS%` A-ђr~f;+Xpd>>ȳ#FܺoGooWbFIV|&;8z'VC?Jur5ˁgl 61DsDK҅A Rwҗ-W2+ƈaik|vf\8Bg~<&I]. gf 5SfY¹cƴJI]?;o:pqmQk*smnw$2U$n˚`/SUoH`1FI&HXJ}ZPMfUAY9CG m3sH=a/$/*`.8 Yy`%d\~EX֐nG>&|tj 1h̜́+| _n_"At$wdL*C]`jp>;2U[PՔm$#<` ̨SFhbxIQGW9T P^pY^ݠћ;JC9 Q@ҝ2C pQ'tUQk#|&njY-k5mZyNYV6՗O^~7rFD ]V̾F/ Gp;lfY8toں4Uٽ-QM$EZT?5i o'U} kCFlҀ^4"u$:,B闐8q?cxNR+=8{mP{챡,~f| jwoPE)s>jFsC_)_z=c]D߀hu1 lHcn{{z[KŔӝu|xu):\dy废IPꧧ m.ӥdQnYP8Yae4ټ؏N&~51g&FNABD|2eP}B gǚj94QWÞ@Q)ݑHa:i[tBMfɶ5gt(Ӥ ETתq\ЌKR:I^;_ `>ބV/p:ϳoXܚf(D꓏)n[:2E/yP9/S)ZKl+;@̞ݟiJ2TB^ Ra7=˦BFoTH'N0@ڴN%L#2?c5OR]㸱q h^$8NQ3YM\GovLai}΂Wߐ5^/4IWcRyͰ 1*XR!5pm֚'S\4g2}O uK\MEKǮWu6UWO\z_[3pm!4gb-<SB[lws!rY6RZrJiHwl"^IJS%Ui6ǀj+:Gt%xGdLpZZ&2OzSѮMgPɢ "9݀ 7([3ʔh?JiBO9q }XtK Ou`n k҉a_]I?Ԅyŭw ̯ ^p~,ygюBc~wt  Ї40Y_[ih 'Osފ8? E_k bSR31`ADK"NOz(RS VJ/€TTsdyFSWh B1G.MTo蠸P2 p (%?lGId%Sm 1oQ8iI#=]l/e­7cV`&w ry'xZO*sqJ]祲$Hn [UxYE99Z4|6U<>3.kY4PDo |#O# {岤a^C#1-XͧCo;?Llڞ+P. _LR-Dke{2WΔdi^93ݺF)1 ֪ A1djJ6\Ϧ#_BF@`c]f!x3{Թӫm2$n kY rWHDިscz(frNj2LbPϧDYGo9yC$:) hLMiw6aؼdBLGXXR^:ϖG 0k)c+?'OfT ~rYwa 3HEgy,QNeԨDhx;eLYGߔZb9yY>C 6"aJ3%ʌ%2 pfkZahak1 Uʣr҉X[Crp޻-<{T]ۅ^'p$[mTuNɹBO JS&d}O?*u!Wu|##Z3nYL!^N0 Z2mSF6A"~ n 0npxy(oϐwjE-?TBu,S*| MurFzIOv z>䢷 gv&(iHˏ-2x7jk*ۢ=STlK{n Prm k7de?և5%/qҒ9Y˿!tsh` 6ҸH(H#ǭ2S”YR/>YMkה짃РB(`,g9Ked>,1&l>ioXPmT!0bH-nn OX+-Af9Rn'4~_džen5՞Fr؉sJ*<%<{Xr[t#|[4 OR. ZSU&ZʼniO1!,|ot^vqlqLJN\ZM?q (Yea;R c0Odjq3I}plB{ Q[-B/ݫW;'Pş)E3,tꌍڧ-M rюpollJXN+9Lї GAl=H eO>TÎp6youic|`l1f:,UwCn@ρ_@go1KHSxr30D rsY.rBL."/T3_h@95ň8Oy@_x+ ݤ@L9 qQݦYr3D:.;k <Z]W ^C#玘Sfdl%SPhfTi*}6htW/&^iȭa5Q8tc7Y6&D * ;ct HF\P RrcQ<_@8J^*(X|6sv$4TTI7S,Ȓ~&}qYMv; N3ޕ-\UΞhgziE\~,XwWshkiwKu˻b9a'!j ~|=gZkp`4 g& V "}* ]"[}l+Hfvp5ʙQw~d}VY@|'J6IBӈČF)c@M6ވ +N*(B]]@AQg]l̳3Ȫ|KRFl(?#NMI}z $;SW,\&ܳ*q~0+ݓ.ĠC/Ŗm׃ ɳc4@M~<jqOK-4#Z3LR1:4\7JH[]%вوP@Pc-r29oԶ|Dt /B.,pLF!"'ϴ 3K\y>h>ji D&j.T txI .f, X\_w:DʺLoX}8K<9 6ɦ']9hR悧t~Q`m{`1p^iT]j"%g)r==>hgP͜ /Hp椠I0n-?J-YewH4eˊ;O`EP, W*W3c7((`WRJءIׄKx:n奨zky`V>`yaC׿sƩR(FρOfF, %*>u,v}[MdAvotQr A>Qa:`$:R<8 *-CvA![-[2Zw$lW^6V+*b諵U-7c؟|_`@bk~*Nb סp`!K-t2vMR SC7ƭSwPs>=˞;V.9"~'k']Ixp 6`_XԗR ѠWc(Tϲ2.ks,́U+ |rE=q7ÔnPCY\EP [YhU1N/k}<!4"PPQb@hFT{ި!‰F/X=v sbZ/q#:U~IkV39B`L2`4OO56BM ci5k.操o{ݡ*)G|J[LHQW dA\N$Pε5k@ht()AəǨ۶\QACu/BWy cuqi_L}oީy<8 B-$5(db ?\3+jWRMRu;#ȅܖSlFO JHTyjt}d ҅dfzC݄[] 1M GO.:ƹB!1%[9Nvg5=zCYV0O"փn4İS?+ )q/8m#NM {\R} QS SX=6K߶?yޮP+֕E[攮A٠y}\Dqԩ(&M 8b󰜱4Y r]G(dIٍ}'n b]Ԛ} 5#6{=?eyyO ֜>4r2r7gH94yruv=NnX߼#PE~imlVg//dVfhMQ'MI"^(Rr`$_ش$Fwʹk** lY˚mD۞Y[{,>#&x;Cmf5!1MsxQ{Tg'! Mg5-dil:_(zxG_Q+{iCy}nf=N%"C "g @>~9m2.gL%t&8cΗsdE TVڬ1O#wٹ)$ʰ@?;x\;f)kb07h xD4Tu&< \e細!v:b]N\NZyxs`!`Ghg,>?l?\Dw5Y̌ Oy` nGg;>3;M'ud+~f6 wVY:`iVu.2SٌEe%4]ꬷ!\Gg(J〺#X**X$߼;f}d@| d ,±,%d؋jctv+yQ Η#MW{O؄,҆0 ?"!?z.R ~8 W*{ݔKa.l2|)$i5=,μ ,DSHYf[틵{Hia38TP'jvjyl1%' aOU_!+ 2ł(A^޾ὸ+jAo7%vlG=')iV(u6}1gEt"h ׸Wp^`q~4Ø.* <K]+g s5^HkSsB|1^BDt  e?~h r֧Vnj'(.6.ehdŐ{)mho^#ٔ׈$4֫6ϐJ*ˣ1IJy E4&flLՍ\=._mhxQcZ#ab ^RHA- [VeCe].tERiI= ! Wq}"PL{aVaڐGJzԝ3!1N┎σ,G b{jtN Xe%cƩ8 5^-ܯfX\jh[aR"Q}bv@csJZw@ckz_!fjֺ f@t+ 3rbK{L6~Om`($Y(mA5 P uكDBmϷ $FH `/*=T#r>U xihA3#Jp)k:}CzL{Ӡ:%rEy?-Y͢q|O$G_]Us&`U ˁS678Z+2f6;.l.3&cq{/;^j|CS+V#cvH?uwk7oF,,I$UzN3 2[eGb?@8dDŽC fjțs qxW= 7Ro @(dxm;rH,3*9_c>+A1M+и#e"KweN)!Fy)sEfԦ L7gB9oMncǰU);bXl&]d S5 x7lV"TA23e^cJoDc:ZkWTɫ^艆Wao rFLّ)BcTtrrV LY6A ͥ4d(&VS}g$!j]s4VrܨPNaeD֊܈v=ùB iRxzւdod} xnrV'`%kM `{CJ.!`6F<3xKRrWnD|S`ݏz V5SѴiYzWD:@[o#.j4'dphѽ޷6?w&k+7$` j~33! arIA*F>~%0G8?m渆D>^$]j7wes/W]X`Ҫa"^{L쬰C(v^#[کzBVpnSE9&^@~LC Z"Y|}>̖N:TMyRX o89H6Y=hCm}2ɱL.Tu6M3YV<=r{"U΋r⪟[3o w=)5 0`ql#6EX^bQn;liIub]mRN vlҒ5a_cjA[" "[Sc`pxUjno=Rp~ v5AR8o]M&b5TKq{yNǫʫI9{WLR dp4x{V1 t |GF|q;'RdM{VyQpVU2Jwx|*C\l\bw1ѝ緩]K8M@9dHXz6c>c`QoÃՂL6'dPl_DNu V-?>%"09V5jJSY `d`slj=TSxB؇2{Aɖ`v/M/asseR+#m x_Z70=d=YOI 82'H~ۥ cmqL tC%.%Y+*02 j]wO@97\|n]&oǭrFYQTwSL(dk/qǒ|q=X-O!IS$(S3%=jj^*NJ26nDL*F1 \5oߎɿ ._L33h(9Ay]=n.=5K-;莼}3SHAçp )`m̼+mAV}z6tݧkBA35Z' =r_ Pv*MAO*:028e- yvKSw'wT%$W<ظ=)/ΫZJkg742 u:JixQn24 6|L'spn~;'M+tq!;\%|QUS{se-̖zVMgܡTU0i~E΍9ѹ(0@:( T#K=/Q!diMȿ6A;^=^\ )ӄʺK>c}-Pv ;5:[~a"#6Qi_AyD1Bw\E]pNz0Ҋ'$Q伎9ߪQw-d YVԁdfT|= ~ G`m}x;Dv%xq,2KU +hAfp'0kTFG>$mq`'ԖQWkHy|or`cd~N~sߵHiӍeEd [aDRXilcNELۄ RO$A]@rcX|[]u"9u#K$N]d28yTkF_כ2!d@בzD$BRvZ: 7yM3*4vAiHq"JE"5`Nt}xw8zgtMXH971&l]kvee$U1zLbgZb9}BifLnťڤR$P(y+ANads=/Z"]+NKK^oghr ߡc50Y?`C"Bs>0YZF6nB.XoFAKrUhWc(F_t۝)co2FO+bP~kGCW5p];%83-5UR?4 Jr#tnl<<:'O)6S4eEhY;.]FAt=R=~0M3Ӎn9Cz0mr.V-p>ښZ&=ƞf=1asIݨݟmt-qL~eXV3lKϻg02}/a/, 1[ fd,𿁻4qd/y /b}> O81Idu%^ ه26(J+Ġnߞ74)uD]omF{XR'ũi.iQ0(!N?vNsO?\o|@dyP텸C!N볈y!{^{=D+@%5UjXKOÚbHo/A 1/Bc7Kyd̰@rz !/?_ 7vZ5Rȸ˺ƨrZ@)!-IF(*Zg M 5ΟmM*h^_,C:NLJ]m_!EAˀÌ? {ز'G$uh_eߺhtu;P݉[%.Е/2dOuXxGOkD7vbdqzcXU'y: E^%eW}Cw5*@ʙ07ic3DIKri1=hi$N5^dS!~I5ѫqs:j@+${+! y6 hQX BF |Xt]4.Af̔e5^r!/BA8ȼۅ#i^QxNg nYj-r!f mD}z-kܩ@ y|Z^aQl) =U!^쯱ƖP.82 K,u4)*g| )^LH5?̬RTH7?Y2iU<8շN=;#ݭE}q)Q1qa s;Q}?-oKA_ʪ"fFdJHb c' o3B0F:e/j *7YKv,!N/(Ѓ\-ЍC>1,4_w[BfP8>ə PhOc>twK-ԞCHư)_f6sz@S6f}6  壔3*zT-;ULFLӹ+v *6`#*sLzk`EU3]1X?ҋ 8.PHVh3&72xQ Igﱽs#tAe88aF>PCv7iCZ6`r +\]CBw;U9,/1Ⱥ/<ʯ܇Ԥgb ;\1jq QbQ. Ij 4V+8nʙ2g<ϵ1tz7uu3'bl '9`]C1?LrlWp{ck5oSPVX<,%0v\ %'ĩuWNás8G`EEU;DKAp(8:6X6e zG:P"J#_YHK29r-F"4w ۍL@M HH*BvMfL'@N3hN4`v7긺? Aﬓ $cջ#hxmGf;8ף{=hb'1N|:5*}O 7\?u:cq >hImO) '(5rQH X0\}Ьުȱh g%6sSO/L<4;{Tr 7xFW-"!q`B+9A 猆t5LɠsP[k척W-7(ve%'Z#<Ib $^_ ,vGYoUD'vP$D!cD p9Dx [5-.MD؛[;g0\b<Ѱr,Z˾# :>!JRAרD6co"\TgJ89HF-MWqA®#~ɣ 9zy!i/^y 3X/;h+R2I8Zyl7?rmė4T^g{!<؜McԌ> @rB庫pJXJ7 r"xZWzUEeU-<,ך6K$e6\U"U ˀl.C,lH97-HV ldMsT]7xe3}T@оף꟯ PTN.g'z4e$9P׭D6m,w Jny'>pV0m>L~;+}v%?&|r[֛Np,1P;x]áb&spN٬׍|NմQ$Tt>$oTه&UiJ(y6 u|u?2k罡3qYBQIVЎ{["pvkq/Q Q9<(hVK`p`n`O).b>s=ޞv}Uϔ nԱl٠֙U7ZRD6rBQNV!+0{4Of$Q2gj̾\M̓aaT 8zh:d]/lL6S y #m]Y±<[ Q>Gnj}#x] |Hxn>$げzaRa㩉8]ްLiJצ IOdBD{3M[7LIbeTׁ` G߼Yx0n5%T0|R(aӄ̢`'# f^GC~e|esst\w~u*V?ؔ)8"́ZLl#'O1̮HvDn3ϭM|Lߩ [NwM. (hx/; K(PO?70"v84%lFș~kcƲ5jN)jRɯSgmzt+zANègx$_z|K#:bJJN BCGmjأczXAt[|Cb)dl+ȠJ…TJ(GE 8AO@ 𤲶)?&6b)n50$olv 厭+ygn}$@uh줨HĽ_ 8AF*\}wvUp 50Tx_ uw6%|C\z;St=gI&l#NYiK.)!=oZOCbU=F1I6e5"(ѿ^MaY5-̫rρ 既.$+QDGuԽ{DaFOp!Žm&ځ6(qvI,9} /(c*1M(,P`y\ae&X\> P uד +Ө/)l\6A _7?}.'q]9ڳtU)AuaQbg}ݛ@k^iWZ*E E $JS\cC$?%P8U7{8 2`b{K zS) -9aÇ IYr86^ E|ˎפR+"ҋen^^y.18|{;OT2:mřlJ)P}N53裁iMcfk׹`0 -KoRl&?HG?7sF P?p"k-cs D|Ic|/Oo V/V0rX pLi^|Cdy.J l ufצ/Kyaq-_ b(q(5]"ρ(3fi;(BՖzK. ͳ BZ$ qGSf=ZZ~O}(&o0‐?}FYBe zAFGUU^⟳ 9Q3 i9N8XrR!69ZTm|?r(įd^ge44(Ӟ]4k})".aɬ2mrt5ɌdItY TMGk\ "nZ|Mr9?fа͛PmHFyF&%ã;ԃ"8mWW7LQR{ VhA{8 X#p1tofJjsnp@3?͈8?>0:t'sfɣ5wr%Ʌ.s$p̐zrNn a>O>PBu& <RW-h0ݚ_ZKQ6 IX#h󯦑q2^;/!ы+{¿uM޺Y,[ <BI}םPWY.-XFc^\ޭ!6 ^Sx\rN4{kSuKb43׼5\([G xU(CR RhJgp̖EPՈvts^2;×(B,QbpYI=ک`ӈeAWڕBd`Ň˵{`f<< ƵZ!_I m &x[>]yeY蝂a~xOXF~;Y4gʃC!FӠvq 3ciK4KD 269igxZ=. 6hP TzS WGcBUUP=DRq㺝 00㻿@ZDG6yޤ@#Az/J09ֽątyn} A0 w ;i$0-Z8eLZ,0&@'`8G#, –d5ege{&Ä3`iZKR{l~`i<#M D_SVFlrhA~#wQE2g"p E=@H1"_-{cRc"_k{QW%P|$^TAy5uwu!Z ůcuinSZοJ1 DcXtVNZQOYžE]#jwQ_!Ns3܁NzIBֽ-ُU,`K?ݻD+}"ц1xߵuJ6#@+{, JJxSh)woIp MmuqOxCov*)q(d q>8t7h~Xjk#W7|nk&B%ieA]3^ESD& H 0#h1^$u `_6j pgNjPtk虓}ѐv^9H%s )Rr bc.;[%;7'lv.9_XxT(Ew\l6ֺlSW?6"Ԩۅe94Eͯ۩\d;9c8pWI)SdvW͇)\?qȡC/{lkKQzYT* % bc 層odO% ҕL[!8& 2 ϽjP}h6Uށދ6kl7;DJ|nOޔhHW=)SB)E &~ EX/z&|[du\wq8BMiÆ#Bm/two@{gz1Ja{Y$M78j+ƕucbIݨ/l!@v'-U]G4L\F gTYN;(͜ve7,k̐;{C4dkʻfXf<¹Wb{LOo߆*1;9FM0w?<*Cn7rɷN.6C0G&8@ ٿڵc g3tẤH|1O'@ h/|xfhV_hʴ {+ +BT!\{\kf(ݧ~+tsw}fдT%'ѐ9p/)xL¦AO*TA0t҉Ik#R״yNk 0LiKHdr3wX܄]{trlF{e|AVE^x'%-9v< !p[ꊁh) 0Bgu=# A;P=b KYԔGl; ZjO= Ύ13icܼMm,V_M!b5YoL$pVeCҮJLƇWo)tDg7F X~^IWzQk|]B<:1Ssv6X 0~eJb[W(zt೪);[Cx-&`/^bJeQmq"/O((h[j/2!` R9֌7C A2ihh"#hyѽoV_CDB =rB8qoS,-sKAhߦssvL<_5:a#]<<M%qvKCB{gᏬ,%}P{mG{7]=ף6xshzK= t.Fx"(E qۥQs UT{%ǾcU\z SAgxa;m$:0ĜBfaJSDϰY&,TWW  3/y9D ٬,>ceo5=xkZI>w}BE o)5J雇y,ml%UO,G&UZk!@S2Ţ"ݭkId5[9fvZ81(CIx6X -$yl謵1V.FJGxt!;^| ;(|8`"%sd ^xB+z$4ixft$.лXp3ӰE;'MXȢ-}{$M-'#IPQЧk]9y s$u`-[S=:T8vSI3sm0Rv<1[/rm`>hTV;C8) cssQj!.n9C"**JCUjXYdOURSihͪtT'3Jrq\ Ȭ ma Tp/jں.h~OWĔeju|@g̐2UT CFjc"-%eqGaRLY@"j^ K]|9MtPR,yc\)v z 4'P:nj{"biWz HﱖwֶXM%TJQb}#P$\X#"ul=:ycΛtG&N9e]+!#C/h9I05*y.ɧ2_~2>Y^[ ^ӫCh']u"\Ğ<'Bk7rnjz_h1l4ϱ*2CxGͫ2vduf*8NLD˼Cg%1 P'NNf,xF }R"xQ݋ˣ_hxIoȡ'|[112auSKixOsH]y5 nkM ur &8X5G@EGيΚfGZ`5M+քm2M= ":: `T[ I%}H>O ټL.oTp&r FdrVRy0CC6b[K^kП)F3g5Ȅ蜨@h+.=Ҥ"r^-Rn*H 3wۑ >?21FˇD .(QIb,U<{ cJLy_+H*b0|3Ȅ<}%q/?< y"(Jlfz)x9z1fC8jH L0[s*%] `+37U?oT8pȘˑ_sX"52m4q1|/KHwT7vJq]tֵ;~SZZ7 d <ص]1k3]t}P/@6^+ZĮu/cNJi@XrR Xtޙ}#S+Z\ZW҂w 2\'kAG30Lɻz+x ABXgh6EM ׉+C5o;4pEf7mYvR[!reƧAw'ꉻ_Q\#FXCs@$&I^;Q2Tb+IڰiHHF Ճ@?  庯ɤQ@YZafex/inst/extdata/output_afex_plot_mixed_vignette_model.rda0000644000176200001440000150644014327551615024173 0ustar liggesusers7zXZi"6!XK])ThnRʠ3$~r&TL5QA] .e: OeX#6( xմEZ+ ,;iN ֶD(>aj7mʀMvOձ"#SwSbLN ט$k`֢_}u"kUi ރ(ɺkeIauViLey\qCЗNkfk*j=E{weȗ= ] +oqhi&9װJ}ns$U`==NOwCkt)U%&1V)Tʀ6kLo EG『)n| /҆\)n=9+]rN*AO*wԻya]*f ¥"X_p9, 2@x70;p ,mB%cgZ2VLE ex ~q֯^>!T eT6 ?%kpa;Do(OZ kUϞv,0vg=nm_ 2dʏehDnڇ' jdzi^vfp}{d7rԼW3Gօh\J*#'iEJLO+"\VIN3>I[/TO2ў8uƧx!Y~IAV`e&z +pɳQ>VQ{@WK8X2=~d;l ít~" AiC,)`z^cs% [FTE߂FȲ\%V30oѶj:'A+!@8mt 1i9 PYPft J"j9Vt=?M'O!\ IiV&bRPX|9bsqpN2#!5=˩2QGM윘'_-2pH9; DX2e4/₃_u8e%{GQ[*yl{dvs+s_%4iO0uh?N~칗@KqtgqvӋ)h5(-1.tKyr. %Nx7bhKn3Ƅthh:Y7t$C~J 4B2)DwHH?H-u<-3vUgiWmݰQ,Lwt3")ib 6Gol1 f>KCK F怣r&N9 dȵ"}VArdÎ ! n_g^N~ e:ee3nq0_3nH-wVj80NR|CWᓦFMWDi@/U- )x_lFl;]a2y,srH.oO`I.uq)bLk}#eZ2gEt*MK4",WJr6ڀp|r@bCF Zʔr*R[Bd|f4~Ŏ97Q}80H`7U1x@7 gm{|~>f?Zȍd W^%}zyKfUI .mR)42{ '?dϔFGt[҆3?[6y*^ {d,?xy&fƑWɆ!ߐ9^1xf1-W-O)A4lUm dFYn|lS׋`On׭4m򙻳;.z̚(fR0g4O,ɋYU:c圮pu5dSKiᵈ"U)հ n.'hκ3%6lD=Eac G]2(miBA#>X _s~ӣҵtFnĝiՖ!0:f<>HH.M،c%+4}NLpS{(=Ud1XAuj!=~6%V:mw5a<9) pڷ_aIіK.a5^y}+F<^]{1I>+lXQI`Ş%SݕCE1;7luDfTW-J%d\z/22nQ]VQ#ұ,VbLv![#b]cv;O[L}!8x df(3ɐX4w 3 DCtzL"&>VkWZxlBD7ytNnV}< ^9r@ӡDg{C_FwPQy9P M+omQGF7 SE;K]JzkIvj Wp}?C(`,z=< CaĨXa"އڌuzs |Z>އW{NtKژC!֪?%a:X)ɀju ƒ8A-ag[>*-*6YxJ9uWZwX>ܼNZTڥw9%ʐ4@ tWRmM- $lv|JV!=VG }gJ4OpbPT< nqDH8 F"s# nۅ;uJS0k_>y.8[(5m1ب+eۙ 'Z4 DY;A=z|hR꽩fAMrƠNY-"k /2^΅(UDYmg2|)ϲs،Zgdoq@py[sZ-9uI㩸-N!;P {irW)O{c{01R7ESu4 U RðB^)}MD`$=8Pԡpw¨щ~[鹓VB0ó~`CU}/n3jZ<}^ܑd7ڬ/|kRvinȏhk F&Vݻ<@;Aî8E4RzNYކ(V-U Pͭ\IgH/!Dʤ%m<Oz+rYU5Sx&*zRxG~kG[:0k TԒ^ݍj}q1m]p1z4FV##}5m$WL}l?XL%5M?uė ;'ז.%.@)i NM (WA?OUDGyeب6 |l~G- [e ||Z9z5}+\GTF70޼K5ň S2o[yHx%.RH/]P2g4čC=*j%naCLwEcJm}I-=vQKH=ʪy#[TPsȟA[wؙ<[.~mA+{E1GYC:J=`x4<.]WkT ghwb=١`F΄\IGqv7S9ۍvTiԈgdMe,%SA ߡɠ|8zO <7/z6yQ^/98ݷu]~bf*[hnb!qzV|CB,#gvDr,hX g4h(&(XIMج8o94<[Bx9d3$E b-䴰|h,vU2':J.LǠ՟2)JIן̙mm@{ /+qϝo7 gd9.m~B\AÙr?xH(vP8?|G8 d b=5㊃~1*:ž-Ri2y@:7 H_,I1n9|xOu8\6㗀iI},An%O Jȅfkt C4BDQ'MhoDE( X\n?}p-V` b#:<"$ Jyx+Ry|A V n)8O4r6cGۨ զv0WB6?ۮ̈K6]@n ~?={hL'ᑑ,f/aWy&ˋU܂+%'"[l@Z刭쁗W EssfC?Z>j9ܤU<~$ {EYXq t29}@>g 5MdOIu3/gw(I'u , Ȼa)01oI(l̀T=FةwNZ.N5 bʳa/~2YP$`zw 3 US9#An|E ~sDz},xU=bADqB|X>󋎈A: 8PS~`;qRgj{X(rvA0XjzCN oU4!ZײR ٌV/LҼ14hv&r;>^HƾB^@lSV'6JVͫS\0z8@0LFN[[H+ٰVr "T& Cw2/MFL-N]G'N*?-8sZϣZJkGMi%ď5kGͦf/ ҕ@ivV7İc?9^ T̶y֛WRyk2O'v |D+|PbF.&XTO8 ZS wc&$N|vcWs`:Ac]EӐRv*5~QD{5w6݉ZcsxdH@@:Ys~r;q`nE8g8r-%WIuB\t*+˱w p&@e 0z|`X M5f7(8 e2:o ]ww_y}BH$+i`#!`D lʲl^o孇YZ2b`ri ==d_t7>!>>`6*#qCB"xQY '3^"]o0єbVKQkJ.&433÷-Ks$f quq{BJT'[R^q.G>uFHPjĺ e T]MЗB2hH^p ʘZÞSՕ{*n/YS0d|jtۀAgTE2LZ">?F[,а#sQ 03´gN"qej9,;&&n:)-'DKUԹsFZ' )l]_0pӿRTsЄ%>1g-__6}/2MgajRgəHרk%P5&p;T^oxQ9RdzJ0.'G~UӇq["7p)YtBHד:b8X_dt dƹ]B<㨻q=*d|u- E C1]onFHhU.̭V}I0x5\_!f=?EI}nM[0IKշCHݩ$kE ][ g ST:J0qjN^$ӎXӑ`oizW1#Ѱc!9=6ګj#\H_) ڜ]Y0CuhEDfƥdWhg~؇.k1o>B6̑ fHۨ][T;t'2j^+Ɇt#f.:ǥ{eb`݊/ԛÜw'+3>|-=gQ@IdqLIwL:bE v1OIۼՒ.va/]$ϞSq(Uu7}bՄ#z+TNƫU0M^v֤ Z UM%L%61e$Hx} CWЌtZ:56νEj-Q \>l '/ n 'wuGd柝 1F N~!PDS5P~zLb# ?y it'V8+ـjYHaXtܽCq O4 X/լ R/>T8H~3qӶY' #PHu(Lt) e*SYшs֢YuIVhxo7kELjj_\kXwb<K9M`cm h#$f>V8BALE?9i0QLK[a.J` O&Fɕe~鎋j_]߀fN!kPƋ$/| fL)s@Q!5i8![/'|S=?816tevyjf^(mU?G3l#NsJS|ܫ5uMgfNߤO\̳ދ A ))#^S)3{8pjdNİ^by )Ky{82#Q׵b$K^&O$;aZQ+Aw킃^vډ+LZ";gjwaT2|0FVH sAeDlӒ!{v_'ک<=MP65OmY^ײ.PM~ VB(VU/Wk!'O ^pI%%_]tL@V 4ܴ d*& a ˿ '.g0T\hWASwsh66,>`SW~?ɖݾ1 T^wǡ%⁒//nAl?›!Tje uHn $+4ށE# k4́1qSuLіX2q,^E͔ŜkTj<2 t;:8۶̻BAMNi:S(h@H/V"s 鮛Bf~N|:8ҮzZs7BܫZ\Ʉ7)B.UQ$U$>(Mkh̍ee->BH+]b72o1ٕJmC["t F`/˿|ZrXs8r@v,%\ pcvʺW+շp@)5Nf #"~`g^UJ'!Z l Hcv8cgtэ]^Kb8訤Ә-.Y,>;;%W5G8!=z+_&]Rd9WgwzkOxr3'Q[HALKهJɑ 'ZYZp DA\>vmy5ݛV5mF ֪Y[L+WYL)Xq|q.idNҷSN? h TgV8U6{V8cT&q\rUc!XK+ÎD=]^*Τ6NdDÁw綜d3}<%ޕk(T*҃ ^o Eg2 )fzLIIR \qZWej^ }Ida҉` E*[K9Q>f~ja\)v yf:P\I, /\d*@ź4i87mwvURv/4#-#C fx&2сKD1$-\Ĥo, YB6T4+WB d8RΠK]W* 3]z54#ޖv£JMQ,dWNſTբbx=Fe9yAC&Gު]$L~WPF+K'u ۀa~6v;f yASez^u 2s6մD73sdʆh\&RQ(lU8UnS[wGq_ "V %6NnՂXX q4dyHdť޷7C?kpvѱ/ZTxRߦq+eBCcbFx`}(4ABԩ6{!u9N_ͨ˦WF E ).<&HtшAIz0gʅwWg:4#d=%VǵcOH#xClV!ׇ/׃v:eW y,ySAw-]uSsy*+w,k*,`ڷ;J':x~kĚͶIW}N-* (l$K6/kfZk5 =qL x6ö|OAݞ98nB+Cwi؝AXt}4_ao*1R# 2n`Ɛ<Nj~4r;:).~ _]IptlJ89wӷm`n[ Z|ѶHҔCBvL^!ϥZXQitLQ%dk`B]Z0ҙqGmik8X O{bv#m MU /^- JrflKEj'"&Wdj^-ەL/\h_oo0Ѱ CZo*Z)uN{ߑ{j>b:H^$>GZTR[Q6"7oM yjZGܠ)ieBH6h7s[TUFq.r\pS!x-`ؼII-Qdr2.ڐZ\'iWa,J 鴕oz 1^d;/2*+z * &G?HQ8\ AXoV<87W|FIYs3)q -@nF(grd9+X5Y8 d{(fhaUsb\YB& )u \ƋxzoOO`mo-Nj <$m {uxE}J<>BfmQ!=t2/ԣ@MOT%Isq*!Ϟc}TkӔ2缳\+aS&ava=9Utg,69vPCc-HSFE<rcYof@ o9.(z=x9"ZCV'b/1w,ѓ Ѵ۞iqDc3>"|_x5?i( e؀m[.5>?}Jſm pJ~e9/>,›  W`l,6zGARhohBR'L8HN2rOZajP{+{dݚ-28۔"ځƵ"9 u[0#Mb xOo%дk.)+9~Đ.q[zd}hc%I@GawU]]UM ? %mVd˷vݥ\@ 7V.,z~o ֤b9/^ h[pw"+F_ j+MA .0g,"*[A0)47>u/y Lշ@vCWz3Wwjgo$NfX-N]?~s@uPİ&[#snObꀽ>xm\4zvoLhwۉWpNw?Ю.τϼDd͚ӭ)$k&*{H"Ifj]iޞԳ}5l:$9ПҾ͂ɢoe^U* w:S׭Nilg϶({hN;üdA d;@(>]\$ ++:՞B1 )ՔƧeEOH8g+bPl H#ME}w;"pP$ogɽB\GU|떈fdh`EۇUS:9YLE^?n/<ÞӰ&[y:+⢒H)LVVv`.m69M9$&&4aKo[J&52۸ʀXӬntݜj~QƓdgD.';kMW 8ue/j"մ4u0?-C :- IG{'_{&]xSډuq_eV +tHw <0D5۰h:k79ם Z\K'Ərd_)g0?OȴiR!"0'Tӈ< wU@0 y3Xi.*|0{ĜA~wOԮ?P BO|3r"%E9p>f̓G:^ ^;ϠXAjA%>5#`39h ѻ {\ORr4Ffbo`a]oN%j] ɝc9kѥ=ۃAQ٢K.,~ 6Jr-W7aT^υ*_Kx#@o/`/Ɗ Q]}P=Y9R~^ 8Oy;OWD:5ㄗXy_)8ȭ-Ml~jj8],JPo~;QƒswZ\~"lGA,Zfv/S1lͯV=hjvsƳG۪ UOe^.=AJKֈ}t#G6FK}L)?OG:k S9x_Xʕή.L,Њ@j8 p0*d J[/]Ɔq\"&rTh KؒeQ $oM6s5PSyw{-pV!ꋡ6ښjjR>:vW] 7.z: ?I#"ڇ$yb])ܺWImk}oIlfjEw7.HM!XcO]9ANk!K/϶IuYF^;[Qg'5L7f2u~2 FcZ9|+\AC~1q9>u# OK`6 9s* z5ӏRG+`>5-{;76A!roEkRHj([%JOK',n93tx1iE#|κWK7/jvAc$()Ow)-F<~-g#;;J(x \:gs-(Klz žGizLXUwn\͐ 5]1è& 8W&aQ+,zӤ oi3eE3nJ7לp\uROFpT&(xĸp>6_"3`YUC`dMa , ߸'D1yZ"\a>2vW7p 9p5?Ҕ/OzwCJ&mzR[Ej{VB/iEupn7q Lb-p@$rJiAC0v O! >ߑʓW?a_o9Aq>k!hܷJsѷB&'[7mћ\<\~b+<<gDUpǝqjp nEGߍ@x/MMPJFQ{f#siqR(C`hhAOnZk dteۓRez1~8gRŹbN3@ /{䥈2\YZ-mann19 $jZyL>]I(-ĕ+~ 8S!,'~!b~;"aD tGe_ݨYȥӵ^Q%;NQ:n_| N4&mJ7.= "7λ@2оla 5 /Pu ON/~ ^#SW)?=btY/l*%+/s 6R (ڮ׾6)7W9aF&g@:< {l OX{DI-2Efc-3o*Bu<Q7؇q=!}i{E@ ;纝 J{5/]=@59cJn>4=1u]|~ҟ}%4sx?vb5JcٲVjCS֫AK堂SyNވ@8l|e$yNJ`N=>1fg2{=qpZ+s(i=5jϑ\2RX|x!7<$>DP[ (Þk0qѓ``61K%]EK) jTS~t9RJ"TUV`]y앩+p4e=` 5Hן$lj Gn9]2nl7vz8!D*j c kAxFvaj @@.Бk. Ȫxi)OTփԊwiSGwz7O QxE#07q)+ꨔ5'ާVۦ`7ûL! 4e(B)y]0V' Ca$]oC<.Jt!Eipcܾ'WrU@n6ž/:mBl!i z|àBGL);D_ !)'J5j㼴UVZݵgeI v>R[m-ϴ) "2 mWfNF>Bhch=eV%q%&bdZigk;>+V&bڶ]wC7_9pCa|WY:9/,rOdwWkN?p9WտBd j/7ّ_"Y1b }EeWp\`ؕ[{ }ged9x48/W?E"'`xDS>ɩ SM{ÙCp(%$h\sT#> "3:93<6x۠;$1>/b+{St9N4ngvfm|-/1&7< ==$Tj12\+8m N' -H+d,E%Ȩ/I}u >6zMjIoN7W2;>3]3hZ87أpLA1z{USm!tFU "3)N4N78$, =)&r!tm/sgpw6EL-RlgR~de7Gva!!=N)樓'^JEPr.'ؾf;b%7%SnHjh!Fn.6qMw qϤfd HN,0ᗝwz FK/KGdO ق+߱_.phC:x{ ϑ+i cmZ΀F$$;r6 @I6QԩbWt Ӳe 2ж~PqlMfLTZn5vRoB;BJ"@t ɓF$לX̎\F5:H^цhhڊZȕNXB&M?9 u "HXizߴ`*ቖf2/p$T@[LVu&iq7Ahm8 $OcWN+M0i4 kf'uA$Pu8ݠ_tJax1}eOE=-ҷIH>&. W(cdQ1Ա&}ols`c^Ր*I(bO2^"v68T͛t" $Tʲ1-6ޭ5żC"L%{?pv9% "[^'KoSnu cEEvIHĪRM^x :ㅓjZG𳶦7\dY}}Q(1!feŒ~&]`V6ޏvjbՅS)4 O6/ʋ&+!c_g@?.h&;7&o^x7"(O0JdO87>32z̬h2Hݸx@9~w;_V0Yxۼ`"8 9l >0m/\EЁb3pA;a8Z7[*VcŭR+2US_.]렿^U0Zp(v(o[ggurI])f|j  eQ7,IL2K"4Fziv G"pɳZu'}ڍ89paXp73zfvyud::'iҝxt첑lMxHJ7vQ#PWeM܇]nCEYc=~ז̀,QDRL:{6lU]<:,/5pwei-M018A^F>MZ>{E/S=-3GQ6fA}I^ym$5P]qg+ 1s^1l0»Iac_T2Gg ̋@ sJb40)滒0T4̞I>&r@!:]ML@1S b?:NE:.:=S+^Ľ#ߛhKBr,: o,G߱i<}7%hԶAM؂d=C&؟VVz$о6@ x,㕖o2h?bfLNIJ)oT@bn.RR#L;5T)!-.xV2WB{9~ԇt.Z W2d3iL>0mAd3Oڲԙ8ZAySށk ZϼO." zGHwp3Ƚݹ6%&-NZ(MmHF!Ve$ 9,`wG"(0r 0Ubf YjSܻ[D yX#Ւ?@KIcBq\7`ł⸀@ªQ6QHQR̆,LbT$6B,t,;GޖWY7s弶eX73z$rC_Wi i+t (K /ZOT^gͫɄb#`xzdyF8L]IʶB Tq\vR3upaduzd3+ǾemN `JR֔ʟ΢FdH4k?e/KCX_?~ǟ{me?1?.Z'>y['"ƫdJS5ޗdMϞ𜆿MN0Ή$ M==Ŭ) Ls4VCQ"{OT6W l|{e҈τZo`Ι[gjt B39u NA2!O"/b,]X8f# $bΦzA*e].osҾ :.RSw;2Onr(Չ @ޯY% ϚHv&p-w۽  fDip)N_TjӂSNѵe1YH:\4)&Y eMz&i:|B4 /T]끲%#"71 !3].m?m `;\9=Z_ mk"k6]a5^ т1q1LhGp:"WYuI9`y:* A-s [/2 t8@?6)K{?)<)6ộWKHi9,QϦЮ2DF,&1WjVՎ31r>@cX&UB{[GT 0"e4`^,n;O.-x?"C`QhuN;c|wx?Ré;'q:s.ez%~3U|XggVNR\1_pЮ l j XzNߥ7oh6PW&«'&Er+qb}C6DxѰU+p|Vvr' |*Oh?|~Bw *oD%ٛd{j#PG/-N߸Tb6v\/ce(k}"9ϣh( A ^@ĝ[-7 TPpY4]}p^@6 ;V=W#|Fx SOkFI;+F_2m1xɆZt?fȊBM30&2mfJI\t5[uޏ˶#b7$^ % QUknGd)HTYIQtɴܓ%XB#'Ց4Pջ s&+tJ FVX"YBlPMJzr#}Բ*)L$$+{ ƪfhI 󭆉}3F/g/^.{׳4>)&@opj%֘j2 mEW%7^#Id'j 2UT3--=L؆_蠴½勯{sGNAj4j x{םSUUK fqȟoܪiZ%6 3uI>Y|an{*}zW 2-լedvK0K -`Tc0bMЧ8!q/si4a5 \G,BG{5Ɖ٫e[ă̈oyLѧ]0-ϮM]8d"ã6y#R@O1Z6+N9/0yQ?FIY=葌=9^_}\ɜ/WFqNciS*J&s*dbg$z;1>'M!u0}d"FJ$|2@Mz]3qomG =_t91on8qY+Q<-[$w(Oaop:(/"!7gՈ=SJ&.57@M>=24C#|.vVKXepI_^ n U׹(Yyd7qj>*@bgil]ƭyuLBEaA B;=LIKl瓎Ĩ+t^|Aؾx>8C%*zP(W5h늟 *jkd(NIPŋZx-B`CIRTOVޛaP+b!m^."}FZKO9hwYWr`Fd=җ6&, oSbi/D/Dá*Ap:i'k@F/PhWjz1 raEB`WRX;#kxO yR$PnxM'Haє1變ЉS)=l^)?rCD~f w륏Cѻ+߼@MWU 4Ґ~H);j-gxrGFy֙̍Y&$&Wtp;֢:-x/ "^@uUKqҩ̈́,OJ1!r|7i\Bc*)# v J|ZH"5BG^J,+u6?y`_rMya~$4,_G!\2r\Ɔct[˰I7՞nV?Бy{ C W^*9gzb;AOr/aDc2X6jqW>r8ﳢLʛi1l73ښ]hv́F%'eɇǘB> 'qF1(0Am3i^oⰖ#1,ޥ~̭g'{~MbSo[wsI3Q.' xK K.*]+B$2Օ4j|~LC+˟[M{'YHj욭80x+ _pg}9EtTuB4we%+Sv,Set̓iv5k/ia_m)y˷~Im&{!qvbNچsd4?ewz@ecBO !^Ik),*E_86%FmB2[2kZ+ Cٝ>bsaY./;G굊S6v`Gq@KKJW5 E*:MLDٻdɅL ! J%2q @L;g]x[@sGΘ2CDs>xgAFՖX*|Ĕ&c*y \F~ Z @jjR]|0䑁9| /L(*wD6}R&Cbye-*a[4^Ɏ` NGlc@cIZ Y:'odJ#{ྞ£i҄RuǚL="D5Q 2oZq=nʐ[;^4 ?f?~[.~u \{n uB㕦E'Αo]B0y8}oݖ ]w&->F_}sau+Csd[ĿOyf>oNE)b3yT-/F4#@(WlZ"'S.Yr31ќ:9nl@W1NR-ڽ_o-rr5Bke+x2 jӌO>pMۍjԙzhP-*q  |IVƝJb FeF'GL Tp+9<9C8XE.P7`$s$lD0Au?LX 8{K"O [W u;+ӺyHORs!ֻAl*(>eqK~բЀ;"25l)g? fM! 5 KNzA1ZgMnskyz;>+`[[0r| @/W .9l`H(ꔟh> |% *R9E%GڜsqE6q{t;9lh #}oC Rf?>qR*=INfX)Tg!qH4ŃEYV m9vZ)J9(Ai6>Bz2*vpQjulwe?5^(dVTݼ:{A0`+Ҝp)WoY6Pu묘,̴? ^}Zfr[,j.nL< ׋n⢯DF02\uJEdlOc Y{X3]5Fgjˉr?(,WQ}O;:VQiBAF"S  - 󣞺~ x"HF+mٹxn" GvfK[PQ,+,ah h{2\¤,A}͟(JSD\=38Ø,̼|SBeicc7s='FĩX ^g6ұG%"_;€TMs /oz2ONt;_⩌G 8p %fq!(y<-v.%ʉ|[ҏ0[ !0pWǬO:KC`gNߨI"ͪ+I殅h;EwٌdFGIZrq|&+xȟUqcW 2瀬P!cQgA`RveC0Ʈ;cpϑ t3Ws W^qԅH[n4븣`RJ qxa,sn&̺Qt\V1aNBG٤,ꕾZ$dH pHM9e/FķuU'`C,kދ|Қl/Ix5 =@t"0 |l|FTO [ZDCGA=&3xGΓ*:ZA@s ;*:s"zRwh|huXO0^JFoG!j5 -wX<ۣimp%c8Pj&l0(dHFi5 έ(ۍn hj $[5*"[*k'q-OKQ&/%#p1* +BX9Cdrq% @Ifïiр6T/ij0Kw}] "ܴg:Jie?{qau)~y˚2sVBw?ԯ[=&R%6L\\Hk.3<Ʀ&l[+4+M6]@r(p*G"c m VNh;9/?ųM%W0 ǓթкR>)rI/@;5|0s+}VUp`%6_9Y$A/E}L)VNg.-gy;Rp|xdMyM\U.=xkjΑ,yJ (jNLCu

_*)o CڃZ Ypyxg&WdcdY-(wWQPz 2Bk۰q>Nr/͠w'eŠEy0XS ;q&9GOe <ӺGi*fqR=,@3e%ŕi<8%BH%Wv;ʨ)t 9# ^(]c0xީ1t.:E@y]ݪ'?g*0FYZ/uݗlKB yaO0QSk_J z~ȹ y,*TMGr4`7ɚ ""~JaM ˇ͙=R2 9. TNHl3"0-FM)ʒd SUxs];?,Tد!= qBjpW+Rm4)ha [_!M d|z rqkTb']]kj)>oQ:\lEjujO,SYPbIBHDoF,?8Gb黷ݦqnb֠D Dr1u߫*h4bNJ{ٟZh^}ǚc!25!ϳذXH0%xG1n@⸵'"'"şpV ͊LfR"z5 id4?N>?Py!זy ¿eڒN"[˒cI>ZGbḐ"jPghλ݅єD+qL UK0,HHDv燚?ԙ?.6Ae5U^i5#5ihך(DKqbZ~.B?!sakǼHgyG@D{1Ui5/W)Ob¤NTp|9YA*Zjgg%Yq=A}tB++u6Rg1yLfrcAJ9^ݛ1](${m/VdmFCZre=@~*dxQË?S/ CCaZDd@yQxd<Qu^3]*"TtD.">0Q+S(~NDW ka)"q?tv\(vu(}*k\Q~s;Ɋu,~H'P7xzPԉ0(,y[%P 4'uЁw섋{c$bRNIe |ι䥜<ǥ|fě/=CRL*u 9?ìL4EqftWj$ڒN]/!&ŷ:&[k~c," ]К; y[OߘH;b_ kmpA.m;@_hF$1n;ђKYLp#D+]rAY~0@2XU!$WM3,l$>988b: h!ƈ ZʘKq 4᪸-dpB <Ŵ"kR^gAK g kiip帳YX DgZ.ÙjP^ 2F?E G)Y/zv'4H28ou/Ӕ\e @OA,E:"$D\9U0w然NVE"dSgE^Ҟ7mkB,{ "ڭ!t*Kj(Ij' v01UiPw]vIq}Lm Hճ~q!=u&h/+xDuI۱샳˵s*el̑eX_^pD{5p84\-apK9קe2?-߾VvU-RIQ ZpAKAW-zJº;SF TL2iWطcnN}r A%cKM𺇬W6#>殭+}QiX _ NN,2rsIA!J wdݚ7tg ++a#ƎC]a"vk 1mwd3Jx捲~ ઽ.[27irgcFBJXC^h:U0n nUbYR7~ Q*bϣc( z*CSAE7LfAlTm?]+v HƉӁ6P`= %^]5@0@ɘXcm,Vx簅P4S1dp'nصrƮ*S;ze' LX&VȍF1$H _v5]7x{ d;Xl:\if ﲗnC N ų '2p&|<Kv"\[y#?sr53#蟹,F[X+3)8Xdfa,*`F&h`=REj|rq @3 Y/45.GHhP4YQoTI`xٶ^#3X(h-iE㰤g3bQƣ?%Tv`vơkMJ9#Oj d` pɖzl}[3"\欮 : L.V Yjp+ۂG6U[W]0Yӥ)RC*n?/ЖӾ:¥? U.fsBZ$IF*,yEόvmAa?r i> R޼rדtۺvF{p.,WI^RU,HLcl! \bO*lIkl`B|ޑ֦=M4 bcL/ 2zWA+'Ed`붵RBM#bþErz 8xp0NTŞa&+9*ҿɣ!M'hADyN}o hLVG &nC*k3@;I3M^p׬6$zfRW ,iJ(H3JDԄZڙA[?~ . Pzqldκ(N{HڦR oNyyC q5t\Yb; S>KlJf|'޹~j$.SLHLue5ؿEOy%kLj?'h\WLr]0к; K<Z- skVvl4й1 }6%]~?4LXQ;ࣆV7jOd2^ N$ Z-)m#baQGpFog=eCjX9WUOr)\?͖ShP2F.T"=$x۠@gk=aX1bYƮS]}B^G"'gIEa/TfrVb̚gNA7ˁ8+XKWXrAk$Q 4 }[=i"DG]]]_Za)qTl.__b l>v명, 4˽zy)7~˸xplQ7qZ)8)m /]Gk'K5xOO|&\N yj5% {t]a=KQ\Bb + †V!da鵴{!Aq4a/SÙ $^ 6ι$#$gVL_\JtɈNjVsAMy^;Odf rqpWeyfv lbatk3 cu_}INDP_@U5Sw{{K?׈>U"!ƃ ݶ1 236"^kck2sS,򓄸&]5˷M'De=a ܹIW+$Q@`E ۅ{ :[ B8׫j9q#Gs'PhE YNltMIE~:NEZW]@W}QB|4G]Z.NPUpM B!Z mXlt}Ersz0}8ZsJ<8J*vd" u}`ցu>CE(k''TY&_ 1ޢ0F$>Ї W]:wہt9h+uZ^46ǾJƾ+( %`dj5eQYhlaunHG"gPc\yZR!aªYZ\.a 56vHdH"l10 /%^Z>}p;ֵ_'ؿbO-x-R9v{9N*ަuʾQL>9R$fb!3miT!~NP^8OZ9\6{$^ i[0&I_Rӳh{ksKƉ̥W\~lbl ǰΰ˽p3#\sCFyxэ=ca+.xu+'1w`]qoXH{GIϋȸ V䈙:" X Mx9m~~x8NUn01̘'ވ 'u$<$f~GACԸzhE 2ٮ[9&՗u0GTۘITuhJ][GJ5rB`İOYptؾHd QMk ELZw=FٝxNw=Y{ g%%V n1!&pRؚ|ŖpÖO9JMԞQaX9<),O,2ǼN*fgeHzB3Cr|HfO[//[ѫ1o,O)An^OVPBմxePS/'W$iMCMa}6/5?g5]k6"f㓶z1)6آwj8$؏]>NS2Qĥh3q©^y-³%9a.< =!3s LBBz']6IS:LI Adra 'a 9i<9;BpeQ7'/aȅh-zw.[,CvԊG΢P!#ڐ_̐Zu>m\fg (.=T=#D#Tu馄6bO!خk[9|:l5cn%}ԅ >2}$KLJ&,wV YLbG4E.Z~IcJ.2SCLҩ F],hkDk%.,0ufDLH3KaLO( mzaJ38&]Y+YuFX\Z@dпNI.bAuQE&UQG4Vǎ4zOh |(4#?FdܞXRKۓش)w(]_ÑѪ{ 8|[#]1(e|yǑ`SpM 6K7/hSKkSmw17η6IҔ1ʫ_֩7ۼO~w.t⭝(7UEo"A`-Ę- Wȵ.C sFz*jg [m n;q u| ݳ!n|= lt@$Foι CTГp87[uVjS$BS3v_c5e';vz;7wIJf3D >O$g8(MCl~V TEPQߥ m] &INwrkbq qYug16t-q?Y+A9pt}5[>:Mj݁u+sx0WJXJ*2!0YP Ӹm}Ȩw>]Bj4yRVBa.I'ALs*g_3ۛeoѼڏ#Y='o2#6#b=~b6j\\lҐ ;21YOPOj*0h$?m~/pwlj&pݧr&ipVίQJX;Gh>oLlَK>ą\F_g(,1;=n:?Jna#"]{,8 G\Hq"+%ňyA 4{$%ZRQX-p5zRE~1L.JyFVxΑy^y٦=0hChTQ>msRCpl<Q7̦Hk? 򚚇* ]MuŶqa _٢/[<pS#U+=me^C3| vRciSU3Z?N!֎+c(X./ϖZt5R@Aܖ YJ=R-e >n$B4vJFe''D:,Nl fVjBy0}ֺ͉S\Rnr>,XVލ:aA"{p ʏ$w<6)o*nG9E1}OZ% AqL7ψ]kC v >ZtGl^+IL7+HRMCQyCL~`/(Y!U{ =C2by+Y`fśs^L3s5܎ۖ<(I]='0D5G>9ڔ@:#n-Rz7"@|LϠk߷ApOB\;R xǸCk2}ȬKzcMZlݒG鳼0H9d ?9>RոG$Xr_q^L`I? @2dѥ|o* hm#܇xUZ:ډ:s/PM TD&֠ #Л;wgj1'_*4WD+ CkxdXspaL#b)&/ y!]m@`vNo{ƠH&F ﶝ\4k`hiG%'[\HBY^#Xtm3q"1PKMCGH+vyڍ!4{](EpՙCu>f#O0"2TW蜷3oݤl"O ,C~I9r[ nq+l!9Po>DX8 [vI}vKqiԗU0HIO]o߳w,tfөf֫;GA3z",NZ0)O7'<⑌XL)WV0XIoo"`ŒSЯ V }iW8g[ku3i̥Cp#*9p,1¡4 G>8oG^r೚5ߣW]H Pgޮ~;-_$׍"jkf_nFc콙Mʛc%|Bj4_T' %"m%WOkE;p_;k˃ x o:] D`±5^tI]04 iU NMq:M_o C0W 0N۾ E3"E]>4?ֿqҳ?ReI l}tO @E\tH/BÒ5$~ۏI(_]e.;߹ Tw F9Eo(QW^|ŋMf-o@`q:&nI<8ץ |V^CnzCV-IE9 /VBtfW@=,§1TR={7tƧ7r%&00p'֧>bܴ:!yW=[*ӟz֧W2`-N"k-JJrRșIJ[69|_Y]qMhC0 ۄz.6rtPB @( YxQ|yE{rlRFw i%0~/0DhM <|ɄMKX5ce:KMI'hVM?}Qo+* -0_:oo8@4."QQH"-6cߟCήI!2$a?W?+j*B]|8s#ͩ7@AaxΈ Jb8kw9`jd^i\{Lrx̋9Hd BHHS>ÍոytW_UC Y2 gt3rh9Hl;޵ cbzcOXEu3P ,xߨ>gRk#|{B2k7 ?/_Tg̶ vc'ru(葿[ `񥵂CLWJ@~vĒ `gRQ[~1!Y_KaT-}k`ZuYKYaMniU%8$lfD ;$4Z$^:UP.5CF#U\-1&d~'ſ{Jɢ@)ۥ 3S@qn!|ǔ>W9.+\2G||KR⸅"Iy IyȩWo7zƗzPwnodpg/6G_96I<NU'\M(ȬY~CؠZ7ܙ$ұh'$n|a| Cb+ҙx?trENMIsxWU/ E t r⣗Nxq8+P3]9lJp6{sBeA3wȉyX&=h271tn#JM$ٕ\`J=X$#Bk=_lbKְ׃Jyl {IneD-Z8 l;)3۟*> E;tY۽+@~8̺S!X1)6c4tt*q*>şAd 7ier YZ^^&~^,z_=7;#gIaǿO]PmZlٓr5f6hYU;@q%*B)szPfz9CrF%ʧBI{qFCbVSD&I#jʄ8 ҀEzcZ p֚EIi;Oo S{V'Ud8@ 3guXE>C(~#Л;R̎r;yU L/_zGkRqA8?Q;kMp=eDo ڌXg=:bk ̞}PNfCu"piYJ0<4$!̧ݒF]:2lb^R~!S@uń5eoqk3 KvȮz/ IU̎XKhsEE3`8X`҃uP2H;N)9O`hp/SXpڱ]aK[e \~;<{F赱[#pkgN yF6 |{Jh:r\9ks_s(ƚ8u9t0{G ae3@])C2][ǒf[Lq\6,}`,n)9O n,Έ{/pp=JɝOjLLeU;E`  H[Siv={) nw~2f;?2V V͝qsǒ@-k#>  uG? YfA!$_F.Fp8FPh勾 : sQ*m}ED`ex=Jj@Pc% }ӏ!W\AԐ9IVZU'VD5K^O ÑdV oS9*SsbEilaE,7B=3AϟP3Y޿maZR!ɋ.YTD=OK\ 2k6{v6XT{$o$~Vl'ց`WWR)^Mْ|d£dmF7EhZ.&!>A'nW{PImMM"Rl7ËYXm,횵'5%I27"TY01"Oi_Kb'#CnXcMk9(].* Dj 1, D[ ]{ꄰ@rzWc*l֬{=ʾI@Ƙʀ7}bEd5쓳,W ߫EoLt*,e! DAn]ZNq@ճ5Y0奃A e &tx*Yv} Ty_^ui5xދs& .$܈A xuV/yO h. Chxz^mIR~ҿO3(2_pOB}4dVsj|k`$ t>]9 d/HTK%\7^U@K-E8,x$dx*Wiؤn bf ӆe@d;c>37vg*p*xY{=fޕEgr9 M [SPyƚ"fIi ҭp3$φ8&g;d:tw5 +.J%"XZ\$o+]O 3JغK;! ߬܉99JaՄ SH2`}'\)jY%w5>6Pzw0zɩBn+hT sd}FNV̚IZi_V@"rFڲ!يL7z0]U!Kt8۷A_3Z]gRqS!"~$,IRNwoRynT^I5fq&"Wp:i&X$x~u?m&!YQPծ>YsM.MPj[Ɩ 8,ؓ$UgV+uYY,v+lbL Lx~~#nXz Gt7ru{J6xko);eI r!i|'x:Ygi)8'ʭ{&݊Ja(n%F zڤtUMT}i{JmmQE<$ 3m)x~8 Ke?tZSg,q䌴Я']W&3N9Rq1;~ /ާ>KzS4)B SXX]1\O Ia1Q/YLy}DVyGñȏi( FV]; yF6e%~ͯe}E&L%.oQ)L5(Ḁ@șDټ4|ֈ9W~{ɓ:t#ӶΉU)AZ`=ݒ8%ՊO`oa%+\ d +\,Y~W s{8h抋vKk"rc{ֳkLC[RC@(DGƆN~ L-AK2ŐeDV)=>MG6U0&z:5lv<8I+3@ K/_ tF.&Je~wqa1/= M_xD=y!e*oqfezhVas=U+(sSʘn+F:hkvvߟe^ZŊ0Ư/Q`AGUuiP(ۅNN;^d4pE1^RG/*o /_m݈2l2xF`!]K0QP =(aP  kA9F2qC\78Nst̺҈,;zZ%6/ar>֎8B}'^% ]uQOԍLjbb/daX1M@6rY% ˃I[a뫒cefj]h (A3 `7(a'o➔VPD0;gl̜Oeh,%ys.%jQMfOu-Ȗ ݋p8`( "P / J􆼜]:a5%5i;"GGM5lǮIVbT/A,תqHV8¢u;t5w,y9<¬c=l1rIB!Di,FRBum, 'w0dSISSc4RvДv-n7ܠLDYTzqL2S+=,I/|Lnm+L#*RoIv@K/~U 3j0OL17+cHן!C|ϑ8#fixmͤ| ?Bg#뾬C I9Ւ\`)e1hѿ[w`0+uN` I҇&ݻj|+2|3n.%A坩O~M: 󜉴w.7H2,:WE@);{(FB|W4Zr|D6xb\81^qӾuQXay8S*ǐhY=rj\I.m͹ %7wcԝXn3 ϴ_BX:(2i=/όȡn]Oa6RϩJԥɟ&ek>u\ ݮwQ#7Ug%[d48uFfM f|R/H|d@Ey|ci3${92H@I!zAqoL)=~DS`PnK ⳍkG).os3< -d"Ԥ׵5"(,vZv#Zpo p^p|{Il.GB/x`LI2j_v_ZM'orق%Mxa#chrQUt.Ջt$=cWJ9FaaUjL H AafxR_c=/,LȆ>æGr^ІdՈ犙UT|zB}q4ԅdd/kbPK/u6д@w։ ,G[kN6nkRʬzQpE}`[/'q?)dkrf ct+$iwPfYV>2ϾJe 9PЎ7"~EDr,%8ϺH 8 322Wk8/KTގB o)D5&s>Od\TΫK&cG: Cp\:ѵj_1sּ9凹k =rX]y׆`#[59!{>s\s-)@j6'm4[y":ӳtLy ]QS K`[(?`m -Kt[iEk)PԆ1^hA9u^]NXcR[Ž}hdeUh< 7T޲z}CoWmERP%*  J"WQO@"R1Kpنp.PJuVCլE%O*Ak͌#!8DQ:J׏ăw> >[2>VDϼNE C]܁<Z;1JE<X`I~X0ET Ԉ872P7pa ®VHW{/97dS"^ҔGu4DZQ4eFVp%lT4'ӕO]WZh>9H+CNO /1e4H^HSjlYtx&&ZvHk'f\{tVnȻƐq| FL[34} 9 Nvۧ!͈Fgϯ5U fwm ɃS1_oF$ JvvP"rz۾@87"j]W# ݦ(v@_\63L3fY$ }( I_ElW (T.^+$6gHZ~ke;@iўRM錆oeGZ͂&5u)VV? rY8n[քEDϓnUH|h:jV4jeHf[ntX oI ޽ ŷvQ˼M@8>-欢mz@hm4>AZ@kgYd4`T>ذ8j  !4Z- i`w5`l}"~gmV^2o *5p\bZa3ynC@;L] ] m;w(_LvVќryS3CVRW>y{cX˗S(~ IY;E?.fFO3#C~V1Dfb"X( bF 49s_EQWtـxfZ\rVsyjp ެXǝF&SˌDe4_0s =_J2ilZQꁿ+r' }zPgؤRF. Ύ͆vʌ w wlmC-CdkOwbTb/U{3"k597?CY'R&Ni?~<`KD 4[ʧq,z-PTkeX*Lp5*s FjK&$8ęUE ȅs@T%g/{h .A ,oh``90@hyYF*TSt't"R@HCqaKF ҉73!Se qXɴja?w۠ZWkw$x喹~Ĕ){f9C 042yAs⊲szmau]T򎜧c~-NǷ?] @ƕ8Y^±bbV+v<(ĵZu'U1Qog58߻nn>Wk5.e +]AnjɆ F Qixiq?F is9;a^eQO|(7vpk);Dщu+Ļ3)*\xHt> ;U*4ݡJйoPy<~.Ju,嵟@p{tGLwAiIՕfSU;8QQaJ (Ƅ ?;Ȏ{k? eg,3?Q"P9+-/}q$bKb"HdʙcTL!uo*t~o 1&= 20B48 X^xUz<^Gx4PmAEo&\:*q]sv<"uOIۖ'o2#.05p@[d*ٖ#e8„Ii L/=Y%#N9W "0|Oiwغ/?aS!9(vE#Ħ"Y>X-6/ĪіrXkk|nM͍W skĐYAf87ctqsg#q~BJR:a#͸.t$_Jso۲PAQ@zxqXŬuLL$퍔ݡT6+^кfͬJME߁ O9H2}ifai]i`oi 8l;O1k޹yex= y뛺NTS)xB.++"u~(RZجwA >H%_IM"*WzW^St B&m8EC[˒eŠDeM ذJkAMTin}JX"x!}hlm{0(Dv+(EkEG 2`GAj'CnIR3,26%]qzU9Zevk#b OM K@$^ƈڧ_覫ZyRǫʹ *o#/jU 3ͮ#5`2#JɘcK0`К5y_/ɀ]I/I* K^(&imBqxQw mM[r1dqɎ7? ҅DǼ\`=.B|3[Ls=@Cd!4IzӀq*8ZYEojaH[mzgR?GrV +3=f(~F[&5)gɜ\4u2d]8er&T2ez]5 MX]Ug־mdT ʈ34W: إT1 @GM  WuơKϡ^[(^h1֡|# F]iUhVe} VTnSӫI:f_dr|UX,@+GϓDKSJ]+Nba9!\V"̂Y.lV8o5L0wVKma:0zy&Wn-ءfvJ?Hr[eRЄ}6p!SGsߊ*/֎\۰+.l# "A,#w.~5 fPL;L6|owC%[@vRU\g>D7)3 q9(q|R8d5g1S-v ¦1iPux \i8B;@{?) 骷Qq,۸YF$D54E|tMΓH؃saVMeN8G駿cAP9Պ}@_l\CJt>CMr`hXrP> 庛Π3MiV>޾ 2P5,ޗ8Oi}~kO8 d}s(RH>Sic_-fW"3m\cy)FtHYX$XiMQ}6xq5|Q胂C+ȻVRzw|O%bc*|'\yv6U F,φu塹_q\G&0Oq *1ll`'ƶV"5P*PP=E03GS|7j, dK@e2"˘qNP[| 8tj:SvSVPԈ?7,LV\c=L=9-sYo:yX+e7ri0Ae|S h ;}!('XG`Y3jB+אRŝ.mտٌ< w3JIpB;N1dp z>!;CrB!`"}w BOk>D pn30l5ĔztL:bnW} j1&v730O/J1RCf1e id8BOBf ?gZljYe0cu2`Y$Rz9 ~?7pa9e._I@$XE?.*q"P&8QB8g|ʇ? L'6qD"P 1Ol0o4$ ]5/gx&ohꉁwM݀0702SA:Ȳ!:,}ߙYp ,[:A{eM~ZCBK7b BC1\$w&y @{h 誑`NE?rorX3ǜO@Z}F j\{cc.<]Xa0٭RuN'7f;jBϝ{q1>)7ۜr f3JANU9YuPRb? 4FPV*hZ ;a~O JhA[[|AI vvqZ=Pbd aUԯum;VO nd$|i!h^rb"Ou3K!U⏴9.g `k9tiEN&gq{5pd e^f1C9}y5"6 ڵ0-%3Wd'/4pJPVSX#$l"-\Ƒ֐^)#_ -!ZQj]S!ZDxn?ppf~EEKf}r{rꉢR~f Jwr7},X/BVhqC fqtr}}Ɵ/ۮ,%>Xd"Q2\v?k{UhֻpedP g^sMÙ+gii0?*FԜu>|m>-򫣹jks MHwIƎ]oٝ?CQܐ^b5?Wh C`EIwMs2q0K;p0jC[HxoMAFݜwP2Ip@#,{c=fnℹ=X@#? N{|+兲17%EHEteA뤖ޒ0Q ʳ45#".JUTn9!R4BͅFOqM'(CqYiL8%{zuVL/DsjyI? ";roa$tt>$8@_U,s)l1l0yy=m_=֛~Tk7*s߃ѳ|2)->vUט@'ƍZ-m3uNG&~@'n=r4cJI<H^Z-.p ckB!e؟asQhK$Q49'7Z%hW6-(T-ڦS ¸_ʰw?=Qۓ${̎Uv*@Q-꿌OgV5!>5] % v c:I#o k#*t 9W˼h@=g6_H|/q9x+NjKu\k@} Kd( 4gO+q] =|ȘV|N0ܳ>cK _W]1DK˻[^-l-/G'49Én>~#x֙ =Ɣ.O㮳5f`lN 3 \{@a["'7PZF.8s3p.r'T!緜JQ n7/Ztq}QLbx7*hniV즅\Bo< k0oROXKm"f'z< 1u?]t`Ӡt:3ޏ;eHc{dDMhWr E|5;p>; ~16"*$N2tw2Kiv8tԀ(ΦRJ"ߟm@k΀"'at}[666%Ūw~3?R^S樠EeUwtp~`K?Y>!cKnϵh/G[%DLMp;ݛL#}[_rtz:ԛw7flZ!<-@{iDĊzcvu989n(@xo1|lts$qtxt)C#ؐ @O1z yZP_rKJ2;tźYUԢ9Qe49=K%A=)̻f49Us}a:Z',Gm:Cc3*nX ;&&S}1083L/AhJ.$Ҝ,9 ?+9l|զNstf?ګQ&!-b n9蜵RDZIÀ3ؙHK+ ʓ(eEE;S?G.RtL`6=8PJ&/]:^)I-;AEO9@S(_T2öw]}B̧A(:>O|VO cHƪ-6/͗w`9(tIGǪL6'p|RdJ5}V/6NȫS~(WC)V.l͗:5tX0a+.B8qAd#ϴ2%6Ybڐ^^8\;ltzC蝳k*x RuS8TހnCW"x m~xqƽ=2Qz@*cxu^+]N: hCRquj3p'\u#0u]:(/"q}ZwN ؉uFMΕ;;A\8iq;p5D"D2}2Xw}m`87gF_U*#aK*~Ҁ> [>{QPi[-1qDGoLU6l^'D&PE>Ӝq#&/P̟2Y?ac>z^)*{vMbIq8/)0*iW ŀs5:}\s 3!q{>aJK}e^qY0JQa#M @vKй?t ,DoFri[*a zJ=t}J@K4k_Ca =d4C0@w f\_="JQBQp'mRVpY=nzZp\D]hZU ]b*S<[!E M%VuA"&?2Ù#mCrpnXy Ĕ2tx K\7h[[u]Ohu/RhM bduxjh_jJ϶}29iotk-͒-|^+?MhcE!;mY.8Mf5{lUCv6qpcM$I"} &čaf нkIZE+gB=4Qr'ttmtCqQ "\^;CH~~o4&HDt,XMD^<qjV=g.=W]8ɯ&(C"δmPՕyzdY^J%19S06ʣRьPU1i5yܱ:tY"bkM}Y1\rohj\B=Ph7;Cv[=`~.| ;4(Dix -Zp2tLZQk9 aP(ª`D!Mi/Ζ%f,K]icT' M@TYwڿ+8R\M *USdRh3$MQMg]z~OHv `јzQ"n\XL)>(W07Wc0UGd=3g&l۶g1rYAzht L"LgYk u۟!X>/Gg6853eYU-mj/'y $V2E (`ɷ(,4Ag{B! yf^Dw`~p+Tx!E}9fo93u[r U`bboQe(qoܯ$Bqw +.ƫwEa bBafjbî?#^u7f'XU+cDߵ'(ZV Ը(*p6z#"?|MVn芦h4u^̬Kgv""{Vܘ$~!՟'jg؆%Rvb̒hL<߅>.j΀(`볿0z s淿;=0N?,!70/ Ժk,e7ecAb6}(,"vZ3p->ҹ^d'ؿfj񾙶f?I!z7')〃¢LYvu&7,%) r9viNcxIk-쓭?>BDNmξqæ猴0XyĄDa0ȗ᝵(v,! Pf߆"7i8>g[=VDGs1 C(5;6)*ᔔƬ}oM)smA~+Pe 7{\!4#0&"vڨcK($vYgiJfԾ6 pồ5xl e<_5$Um$Gģ DIb i휠U}>_C+b]~k>5WY+mAH]=ℊH|X1\'G\fa w3jê@}1 EZEl(kyCYw!(|oE@+FIU~u %b la'1h3V0[JIh>Vkh_BX #u#ʳռo XP,lM*Z ?.K: kKVOhCY?5YS Lԥu|-/UUGF+;?7$|J̤pvcXݺ,!젽)iD[vu7wusvE_Žj❿g ۭUmC~+?b9;]S-NejyZ7Z#r6hu&!3J݅(|K_ݼPѧ?T ;kbzD^ {CIH "L77K^pc啐{=)̫9>o&@0 㠎v:/ΖX>jhdL1ӄeWN/YQ)2(x(g|oY}rD;&h|׉$=pk~ƣ0dS0{dlV|j˅d{5⊓eCנGI ׉e%~s>_4J-WaRra\HcĀ, zОsnU#?j?/D?|` C*XJa}9,p#?DsʫGVa[`v4zq1|eJZzm0 X]Ki\Ţv7tJo\OBe)D%.#~V " `b^ ӿoE8;ïLu}y\2n! qd<^霮 IЫY&r{0D9Y ,hz}ȚKdξu7 ݪy1cd jxƪ/ʃRQ Id(d:bE$*5 dzDDשUHZruSV3Yvnû Y ,`5<9)Hv34}lN+Rd4'DZȆՇ{b=_I%^gu;ǗfA!ml)Ð](_kTC4BRӃQ|kwVR^nʇv$IO\_HwO SzwC@J|n0;#굽gKpZ!`[R~rZ ʆ|H50&\J[s. U7RL'AJ1͵a!oF뛗SAA$8ؕ+-ң9aIMo_1=b#c"=x(]:NyNQ-;?p1`)^垾6Vwv=]ĔNO}7 0o"5$aeElaqGFUP3u"ޚvno)o$M``10~؜v{)<卥qpɗelQ_3>ak>EPnMdr~+al3)֜ɥԃOnU650^7קjQȈ=i7/zP,us"G'(,sETro a3ѽD v9t>䋯9>pFՁޝ2Lj5I&R^I Hs6gNPtx֛;poY+$ӿTe L"_yx& =,e ͞\Y^/i7iR"W6qTtQ"a8jLNZX.}&9evlHeQ /ʦ8D-3bC op \잚>^ NaWzXܚ7:KA|E*qѝxVuc~p)pd7(j8ş? ^BJzxY%ml4 .#~Xh*Jܙtη%Nϙl@bI yNqQ4 k3G!aEե6_&&V`i"I72ϊRhGH…EJl}og#5H!!smvn p}9Hthlv{}ҌǽǯYU |-v#m&Hu> xnkdU|MDǍKex9%{ { ; 4%q\I+CN!}!7 ׸@^_6!6>O|-6؏S Eďͨ@>A:4bC&d~8 I4(HdMVl G#%By8*rɔqh'}GfƌW0|ШWCwGb3)Gw%ϲ5X 6mbͭPh$> էN3j@'Z?Pm(p `pݚYyMeD7 OmTh,Ls0:lwW/}&NNO6}P.8dA7m3K|:F~ufk0ƠBVpf|z\3 =kr>_7؉vP[@v8x۬otBVtS<Բܣ q@G-?7(Db},z 3kO5jLaXKIP:M;谈sm`ڳ`f5\<xFO}C"Æ=h/2$4D>g;7J,#$ziuSο]5U›' `*ďQr ^S)uayߣJ+3k2ծSMc Y|!绍E?a/MJhFsmԛ˲PZ@Dp'nw3r bG*d_ gX3z&܄4u@DV}xnXZ^^{lneLgjeof.'FG;0,)4S7 W͞}C()*@ҏr4Ns(|LSj4Nn~dBůNWV<P&M4;=vO; h] e{.e"HޚEcAmo.sD5^r@'\#GDebcjvnvJ|\ˁ=ClsN&pBV5x6?2nlmĽ 3\T-%D'0;Q"ަ nȮYJ0㐽 aw[`5}P+ b8{`*=8IҫlO{5˳%fp?J~( `M,.ݻM/JvI]6 ;[$n:ّfVvۘX}FE#)MHu;lfdV+c7(jnWuYͷlO2Df/o?CHBQqz ?,?{#qTO) g8j9FذuSx8eYY7b߸J1ӖpJoVՊ*+NƓD.5"v:1eDu ̓ROfD-[Ud}yB3wB?,PRk4at>*D;5T7ҋ>uVIފ`$Ԝ2u"`'2RC94zDl]0̆Fy^1["yfrS#쁢m3T+0ea088m4=цyFR.9V:+r]ô1uEi4oVW#<:KKhy?%Y΁Paaߠƪ$OٸoOf(',ϵ(_U9xyb@-j\_x {zO. `=+cm/ d)!u&_/(Kz. R0 r`pX,z4+wi#1q_R:ĉ q^E\tҩ]?Xrэ(nqE<ͤC% }cM"Pz|iDIHBSAS0\GA}jۂtFbeW >aŜ)茘>K=" @\!1X4{.pck` Vfyo?3PF<'>V ~KvM'kgp1ݠ]f!ܫ"f-q8%!d%G"ކ b蝘8/)Re:,&&j.j;2,!k#'*r sճAݟ-,{O^P}|a5 x3ax^żV6.nZjJ]2{EZX>8BNCv) SI Оޣ0>(K "E8[f~Kn5϶qB(>sN[u07H+,'LbƊ%*X?rmLA2l=>%~ ?r(PF')FjȈoyVJogCO؛܋҇GxdJb8Ŗ~h? gqo!l ɍ/6efW\y݄JyqO>}V &A; VtFQЯ4C ˻՞7_gAtG]1o?z~7t:?9B|jXqHfW4LCBb3%ARW B(}n(2Z,]8%F(g z}qJu @-ݨ~yz$x}ҳ"kޗBH?C b1X[uF1^0y?Fiut.;Gj5UE#eU79NHe`K9tE0 i e *Cy> %8>KoOV} 7/Ci.ÄMfR=4dm##aG:e ׼AE$[Os4Eza _Ӭ {s =FDL1Nd&B gc2oyfsI_{uo3Z uެ;Ka#In AO65iшp,;AYCP(ܢT'D?D">˵zQWυ'FBJc `8>ĢJ2u}7;EIc&פY%\̮p4Ghot]-Q0StR}7/5` K:|2^BQĜ¼lAx轣4YS $XIcZ[(`ӽPkhq>7?U?]JP#yS(A% &@j}:GjcxkZ]?6z(nRsПjWI"pd.͓  #tyx}dJQbneI)$V ~+H]$ǿq],hF@.J!UީX2-!ˁYvV$y -̾otp}rքFO/a2kvPNmEx2Z @tm"dcx-Rfr,H>"Uz~Qצ>D-3T&n'}х[KUiފan3|9i;{]UcC49i} !СH:˝jU.5[ uIw߾a$k|Hֈ;k4=SWn a巚km꡹M6)c6VmQcg͓: *%6_m'pg^x7(@kTeׇ.'e)$K>VO_N8% aO T"ZN6EJPXc$Y';2܆ƗM =J+U|&Rk-h8VAE]޽hyMAmU{ɑ=IJ|s?eۛA d oW.ݮp Fk! wO-bsOLx3;?EuOhlj4&Ύ%ŰdD~ϳ[|vт챆sO+`ob.kV`8 =I+QW'7pxdLKx@ p!y# 6(v7 f=RN;M}Xrj,v3suo_*tZ#Rkn+ Mr0LUܑoW=Jj_FpѽyL TU+aӑ7A.S!$/aH$^?. z٭ۮ~ōu̽w۹,L$XjNR5 V͈x/%Ö</cnYt?(4Bld׵P{P,h2Nd g,y[]nrOV(^àB ͍ F;{49h#NT('# Kv)ު͐rd}8rڂEn,=!I=|NENDMHbd*hܯh3009U#g,&$ȥ{ffSJf0L6v0Ÿu1-.Nڍ{߽ E !ŢŜ|w"DA}^F=,4V{R)2bs7 }?šեy)&&Q )Ktֵ̖3tC6bMb0_]tx84$d\<\c}1L]gHANzH/CHH7 emvGcصH!8u&X;Zq2vjqœ q[C',,ݦwHW>ض\P+B]2>=VD '~s}Dvn%N Rd5AfaISklb( LP:i:z)Uj&0 }] v'ftQTP/^YD*M?ps f7 ,û"A\|>Aiښc?%LNva*n-&x.1Ygl o˰bvy`zdSCrV .xq.$ Fj́; HG ֮8 R5"V}G_N>jQ[a.( 1("Z'@iRacT44PwAwffLK 1,,Bg TɱrUŠu%pB/j[UK@|2=i-Vf̮ZE.*2[0 t:A، 85r6/3׉LqN9&ɛ,eTZbZheRh >[` G\ s] d$C  s᪭ s+HISoU^v0I2̟wtejnf `FY+ R;i`7_YET98U#iSy&pShrdc!aA Dxm^*hok]I͵۾B7oآ¨E^r)A?kooKpRJGoJT;;{[B4MTԴGR"mU}H)f%J;Kw -uT=iDÏj tgT"hYHN |F^HG>^{7II jbP2-':C69e*])?}`= ET~K}fD(xaj7>=|I gTPJ92U0t}QY b:[؊_./b&L]iʫS2LXqWnUWtӤ0 vXLޣ; 2vS '"[A3e9mFW?R(׬3Rx_E"w1A~`y%#l*ku8J8^y05hyr|evY%J?!拯:Ԃ ڽBYGw~~gg4Z`u{mFE>}'5b|0INԮ$ln.mU.IŽ-7/Ax:x'y\18iXμYAPaʹbZh]qKk!Ǩh*c ™'/DcP}2bEfp9S3 ڸ>x'Wͩ(ヘ&TWw߂|Gua}6J@u"l& wvXNSM)|J9AC)iGC哰CoWTudx& tIj 9?y1޲ͯN7|V-wI9ipm{v"|^RA}xΟD Dr 󙴹ړ2.F̽-6O${3ݹz!g2ZT̑?H Jl~d/GQBm u:nW3 >%֏:\$(jZ# p}zjFȌw:%{gJm՛F9yb}ˆ>\~^eCRAkp,c67$S46r[q@oˇ1I_pMi84"0vxÆ//F;CfbjbHn^j~6X0>VxfMD(~Y'E BiXDO#ot EWY Og0:+ GAbqפ" m,kb,h炈vÄ$~ f73XUS%DVf9!|?^$>v*tv(&1-,WZ;? -U`/9Akt:WGؤŠf ;Y얝2m2 N؉Ռg_ (+~)gOX, A鮎D@^F^8[$>gץ4yʽ7bTK9=RXdH0`AVVXW2!\96!8FߔLS U DWXAnؼ'J:NHb9}x@֭ԇO'-VyzX-+nAdQCBQҮ4]0J>'"hL ǻՠ8wo62`Lܻ䩭11/롡+FqʖB5' gPT5ː7ʭ5Wg<_+ړ|gG*Ѳ+Wǃ)2(It4$ T(F?[.g}LёY+(t +~1$:>8Sk3zJzGS;%13Ó|>n+p.%Sq0eU)L`~5Ţ5}V !T"E" x :0!,&jv_N;?69@kj-hŹHDyqm/vwR1㯶Q`8=˓%}MɨszW5YS>|;U/?ȕ*B9So?A"k-kjLZ J!+hxkr%MmQ<4o?Xp Xkj}PDcw  svh"TeEANId)tYywq a1ω#&yS`f.~s6W1Xջ< =U͝HY|% Tt?Sx!zJ~@}њ\F穞=ORdް5|j ]U'<jJnu "uhK_,$$mLJΪ`t8>s {7/{;7`eO?4da/4ɦrRV%/j,(:0&N@ǣG"vϝ\0,T&?gQqw-HR:1vحߠ^OP*4nB1X&&btTS@?ڱs}o?a?,ÜGil9s\=j+kՅh@RvPo :tb&!T jT ^!nȎZaALV o`bd'˻-ObմniM`] ǡ+9d^ d7^BýA LشHggR`.@#YNfxV{V.܉׃*3)V L9ěS}}n4m=Ck{ddOLַ08boB ?GCCI;͝kG=H*5pnAӄ~>@ּѤ8g 죽.c因f/^rundJ\O`zFS7UCt%QȜ܆6M#`utu+[2^mF0a\N:`v_,1L+ǽ Db"/Jx7Z$ 8|y3[rHV/-$FNLtC&y |B8UKux>m 0/PT;]Ъ()J5vC$sS ; jwڳ7_ \JG붟r 2-)q9APN[Oe_[!]]z+̫GY[0ysj ,d迖)`9 Q$ 3惔L0#6=e+qR m)/QA($\v;@6+t՘$w9lw E/פWOXG=I2MIsX mo_ \۵+V>f@YNg)ֈbkVQi8p";T ~2C5{BZζIxVV%wZQ#\}&>D3Q0Ʋ!5] wߐF{&Y&#r~Ns~"HkO2nSY2//-p)m_Ugg|߸nsݣ*=aiNvԂ Aޏ1P$'^Mv#HX2[R-ߠFPeb^ϬC ;g! 1=|=0J$'{|Ī [_i%-[XW@*'T7h[}цI=yBsBOM잡*|)eZI`IqwhbEX|U@ [GD. 8 o!Y \z q1MLJ'y6G2hl1S6R@3&}dHz{){WCCDkNj ĤHL&%Mh=gosD%DUZw6%ckR/mK,I3F/(yg|Z\-Uu4ZP֢$ {t?ڜ衤4qa'" ʵW.A;_7 "Sڙ Xb?fEU?T`lz1D42X ;hvzjI{F#q0R"!|'ϊO1"F8Q&je$_&0IќS, F7x/קEy 0 &ؼnޯ`vA}T) ,<; {:c= kϝ$6q7͂QENzTH)zDgvTlxMBi҇^lkJLGku`Zuz]y$$0@У b:}qk΋P/< ǭd4Y",'&0sX'%% 9mOoz. Rx H8to71[# Fm,w(J^!Vp/|n "$/ ]~@$' a+~!40'oX}hɟdiN\ 6p6Y{7v!f7jDa؀Oc|Ł #(~q>T O2j -ˇ2` =a-D:EѶDvI1̧!P~Kjz<]WAkRUb]߶Ϣ}G(Ne-/gV89P*B3;/-u+:&ŀ[V9.xl/rMΖ7(1.gղh4eދ4G*-{)LE~ּ#͵qعiq12jg8og*_!55x%hHs l(/_2ILVތ [h*6{g:ಎe)lrmy6 .Iu>JI$ dno3̵so}֚Xމ5/1L['h$Xmn*%Kʾ?˶W+ sMz3hYZ"Ph6 ٛc_SuΙٷm-隒:N/+.Gbd9$zEW5[ns,PX?-q_FJv(מ"wߐZS}G᧪kCI}yzUp6T$#/L $Lzӝ|OAeȥvBSB.:?AsC9o0E7T`#[)"w>+SMnGl9qQS^&gcKU57 zrI26.?0s ~`(MW鵔%?2ţN?(pdY忻5Ԡ ppDrbNW=ԍ5A"*@<ƚX7é)4K/h  ܐ`io $ +NgJHR* Wx 3Y O#dht3,ҀM^O/M %(ii夋 W$u>(g CfY-rh=lv.(CIIGyɯ9k>MZcNY+yzo T]cqHektBy/KZ: M?w%Ӧrl{uY,C\Ϫn^ex)E+#uEܞx T4d6l{8~{pO\pjnwr5^@:(Ғ=difϯqo6F@o"1+Tl3FzMRgc4,|Jb|2Oe%OOK7]nDԯR`u.DER4KdР9(>q`3Ia=˽$@88&;rOqnP ]B$Qwh:v/;~Mq *Ί!ԴbxTii PC05PQ 0p6NtBq2}/:Rbzd%F|8ݙj]Oў$Yk-bknF'Gi&'_YSn jVzǾbGFT;NN/r$t.ttE}az':n=HN4s1Ac`ԋkt-2»\ |9B1,PU+g'-Gȵ^ޒڸQհuyIYX0'҂b[ tRwC_F|Hۭ~uQ .u|J)u썧$ $czfMrQ5n2ת*XlGr)}Tg.qJZ/V4T'-Z"sUh|H-%bkNId%%m-X>*ٵ(`>'`EAP~qxϘLJͬ 1/Y*ڂ 7^ц*ƍԂI!2:}c-GɠTW+yʦ嵍By-LRhlgOh\=Lg-f m-ldȱ%QWݯ3N_i")wרQ _=CQ"o$FZgtI@c UA=߀A FP&X3L2*dkq[iAչx%D@\ zΘYW!ڄN@r~/sN5ZÛ `1ܬAs_Goil8 œ> &~M%aɢde>.rI$~?]8l^gj8wp2`RtdK#).`.E ]_AlC:e )aעө+Zw&*ȗZ(B ͝]qcEHvUn+9z;Na> fP3h(웈$22 a7\MN>v Ywa6M|aJ$C.qM̕^1Vc!*}Y}OTe]zgi;B4nd-B%:c'Hj3gΜɝ@<Ed)G(Dzg.tfs: _^ϗ]=(] ^{I]}z'f Lj=tz+ШAA|r12b;6\e R>.b*v>ēb'ҚY߃x7ETB??$ۄJ%5u @k ?,Y$/a+qʵ>:8CD @-nFo{〭q<2ٹ(t[L%@r!V{{P ^ћx4Fq:(? I TPp*lɎaoD8X~h& w'Rw.9c`!XU6kKH:'W7 :aY)V'[6ށy}B8 "ɏ9ծ|咞k[.L0=T&k5N^(F8(f:Q(f?f풻[@B u}*4Ƶ8 LuKߟ`- B[ߖ2k/.zt!\)s.mmhCЬ1B!L<9?`/vP!~eM?2h(0,(u8 `_]/(+IVMs?vw뽀9Bh`D`\עU0J%E->)P_M$V XڦzO^O0|ǘaIm%uX;V=),K(n43NV,nF1~YhMs( >ߩZ)H8.D="|7k:!2va8̚o_h5Q͝s%JyZ6Pgف!9a?zK5,QZGW4v|m|w뒬y%,aq}t߸DhϮmx&G^#mDg0$ϭO}Rx gVȀe/ iH{N4e ?Jkm.Ԃ X$w[ t'L Cf$Z$&0-c4%JvHT!B+tȲ zIrg>fwhVtNN)g~PIL6#{bCq ;'-VX NzF:֋M(*ثyZ4T+5 3Cv>jHlG1~ahSGY-|5˃W8)/:z e'ZeϿq5#LKGOӜX+3ka1.5nIc%m8nUG&!d` K Ъ:r1{DZThEjLdQ1hM8?*SfO\ƔLnfΓTjD> X)j5Rf(!:)ºZ WI[\'x |U8 SP5N8 OڶP!~@ydՃ{0DS@gH . 1x!f*AgAyI'S0 bo)²FiCLK= 0;sHI߳ʰ3hOaT+^he腿r`lÙK-p):s~=c<ĪHfmq?K}P2߾wȯ ʤn+*/s-IK)taF0Na_1OU-@p/up5j-[FE͡!yyƆ"XL},ljLcvyŮF46 J:{^ū\kKħSbU?p "vK|Sk1^hU tn1%YhPҁįc@@ 9{L s$31e . :(JI{ ٙq~*RZTPޝyx[ .ȩ ft.A+'0bJo才X_ݗyt11&ARcof"yt-bt9/ֹ9&/M@Yд\ P9qm-%KYiZ/ђZ7;yA#J!q:rXhٵ|.CvK3R$r"JG-+`=l-Eq٭$? /Y^xCzdœ^uTf+c#m bܓD=蔎&F15c;Yg~C!zVEh cZYqQv2f0_#Hz Pɖ9Ti:;enϏ2ULjtv,5Bh#* ~xm٣*H0Yv!h9!s#S^(Qf^z1s`m#9yQ^9p$v͚F\=P~J"q S/QYO:R.,}Bax{uD)\?ϋF"*ci+پ@晴ɏ{~%_ojфdyr*FBNCVP'[tҚFOv? {}_}@+窽("N-c0LNgvo'5ePxQ_Dnu.IAM} ㎅V эf(y.#O,{ʲByփYC͟Ԍ^Dp_&ۍpwk_x+ev]+'K E7e?? )LgrR2[;Dl]l15r0\LTOa؞ȃOޑ:eN|,W&%m&`SޣM辜{k%yr#aWn 4Q1=h+q{*@:o>\I3.Eh:)̂ŊĜhv?5[4ܩh}WOFs*4,_'{zqR_\Ѷ8|?w%yzc7 r6g>OYإԒ_ǁP5m浄dY7k :;t\ӣH$\f=$o|6ܱ9JS7p.=k>=Zeu)nb{X?㖕!E\|$d~o&  U}|zDQт#]}PgЮ$N})'/IUV8R"U :購TU /4~Ww̝gdQ6H:S\a 26 s XDxFe/81OoKa:/)/!.Gw"ΡԳ=vvp(!2W\j9 )S $E3Bۍ}]wJD.yBt)RIo>a#'kR>UGXeg=OmEza.FSSVb2 Fi׼$!h|8Q'vP?.O^105V%4lU6xRx'ǼcDz<E2_ ;!beؽG +IJ:(k};%_HnݝXo7p=TҨc# &thj7q~`p(C44&UkX'65ΗyހhD"khWq'?ψldVt+`(iƿ$=2c!v2~iC.KM@x~x+H WqJS[b[hDn"dA;.!};U:oY C fYe"6B^ƴ[!Riͩ1hdOE 2ܣ;#aweض'P]R- W9CZ ~@s"6w[l;$\,dʹ,1nZ~u+Ð69V3/}> Kr"Ul&!FN ogqت˩\kniDz䜚E3A8F )"uL#< ОkT\~'lrHRZ=d+J[l rw4oq޵:Kf+E,Fr6'#c9P̼R^N yz,$Pax˦ڍi OؽWқL"-*Lt$mѨL&bCyhcU>0%Z`qQ5E!GIB@Qy$Y|;_tV| suO!>iӃm7(Ф 8 hM9oU{z Ajܴ<$Ă9 a 0xӄ$crlMu?= LH&y$ܔPhHhvQ}c ƅ9re\y-+y$y#&SX2 ι^$fa.VbߚX^؈~8Pg(ZZPZODٛT/M-?ܞ>*w%G,yxKI sfQO|=8{q|z駨q wy*A3#v0Zcot -[)FUKJ7j6GK&lh{KFH{PN,1Y e77K> D@cܴƜVIA!@_{'b^Ln IQ16$vUiDz N$SrF_[L*NjTбx|7l]z<2Z`~EMqsvvl1Or5 o=JDnI ^M\I2TzHТ7&-ph%=yƝ1ބ6p-f:S] jU;~?ݻ$D kԆ._L٭eYO.AλrNBWp'kSG6Zz}odD\w 7̊ GпfqX;hw:H{FXI/JЈ~lZh iNq]HN_OFe&LBpѢ>̺(  f 'ɱwg[Lx @s:3yݲ'=H; #"ZP<θ_>(tc89eتQof7w^!Q6(܎v^Bg,9فl/gJ/ υ[JΝs%n499 h>K{hJ/#FxZ?hI~hېC-px>U%%DNg 5ifrp IôEI2sx`zPx`ƶwNf:@xL+^uCusG8)jhkôLH5V_]A":T !T)րV ڹbhqOqϟilkVr(.Q-!.jDu/_h_TM K_\.M#c,} n?rC" 5"P' ±I]9'kcO_%D#On(puiGlo_%m֛0ja[j|fⰈ  e6(8daVhztbxϜA{Cw蜂u<0s~m oT;bYnCkn5>+kI *M8SКvش^Yr |m1l>!3:~lA%e)H|BsWHQ!';@=Dil}}fq{6Ћ.FA\DUjB lIĞΣ;o3,B=ExQF|R}VR[YVL2! 4vc~U2iԛj#}Y  "@%ۗ=ފfݤNPX1^G=HsSr ?jlD/{K#idawΨoʀNv&ΛRXZ O4ݱ]uj :~#|in;Y%q9N.)<ɐftgRŵa|!s6:x]DyQ+h4_>9fݏ9gFe % &rBZOo{}hr3 gi?x4#78 mw~u@i¸pDX*P VTeaܭIn_"y6S#tP56=K/a9d+lӿܶ%^3Awu{jd{n +AM>҈Dpl<\+C A s{V^xBZ|lXE+7śyF]aeT_O)œu-Ah0hz3*@ '2_$Jxk/PePЃ4ci-pҬ+IE̓^zYPA0B8݆sDbduAs`b3йھ'Tpx/808,=s=Ka|sN$ҊJ?U~ D)f,{E"Tw<겠} fS)6:6q0q\CSِ҅vԇ+I/CQׇ~NsR~ \꒱CMJS˂ j~k` EyMŐS;8PBkvQʪ IٶQe`BK\HE%ʫ|.TUjL3eh:Ӗ=NrO&ҐKQ&X)AbS`0# W)}4n!Uʠ _3N[ s,^0gaۻ w@У_(/ ïY|ظ7SQBR'TUnBwп ,BjBT71|Oeg5?`gCLqG;6z,!#%o%=ԇSKZkS.q%κGkot9-qܡҪT3kAo{K=2- ,Q?tXxM+Ҷ@ >q2smVW#&R="&/y*jY,\$XCeCEu'5A㹟UQقd.k5P(bV{4֞)kb/sܗFS_ s>ҦDڃ|O޳I*ZA6)U{?=#̻g)vmm2F*eQ*MW;m4xַ{£m(Y}; jm7^:t?j8 jz& K/R\]*ͷ!4GpϹlKe8.6pZ,b+ Ed|Jz9_fEˊ,iT*Wi.uǗ`k S@ _SQI AQZgs2bS[)-KD4ZC~&96|):n#C}_̝E\G>YV ٦Q[G GgT=5ͦJ 'ZR;cHAm(E(Z^og23.V#" bCٕNd x}ڰ髆{H\w$B.Ӗܝ(T+]@H ?mP^JczLc7[nBy#'#Mh7-NYMSZ?48k(=dOj&=w:mG"u?'%f4a6XfEy5rOć{ypҏ،f>Ն|RCGNbnt^HjEbڴ~vr%re>ND^]ʰs.Y`uL"k%4J⯯7 (I P-7yo%! Kq%i$4\^*O{fбJ># utZZ0nYSلoaf5N9kz2C8Γ6,EgKD2J :X^,BE1E^*a84*rrΠxӨR)J|r@a^BVB5g~ X5mZmNETjv.XU!-sۮ05dA#\pay܏B=\~0XhYb+m75E!joT!˸ )^_TW1߯^YX}iEmie QR3}Ů.b}r՗+Vbu>xa99@:|_b0\1B{bަ vܼyTU'b(Mq3%lv'GWwQf6m? 7`|)_)eG %"&xԁ(kL2! >H0$,`HON#1 )ap-3 iɷ{R26fe»|>4{@h7+8Mye֥KmU̼ۥGW!%kb%kn3(|l0*`fC3^\1VAI`NpĴ8{Vl{3*ӝnh1N&\zg|_ V|feKnAڪz50?]烈،zy}{>Dɜ|^ dʷ;{\v4^y?AUIǵDc+d \ 6D|tT!2̹QX@A['>VzU@VC꣍POD  C6E: Bj@4o o.P Kf=0kF] 0hN|_Nl_6,nct\oN˛S$p!I, Bdeby+PmgQU+Xn0LBLGGCC6_}=KB/-_lT[[8Jm͊Y5~N#thgvrD `YQ ~&źֵV HUZ z>c7Z"hgtn}v:Q .[D~;c-7 RWKW>EA*z0CWmָH)BL2G|q+r9{L ; W%iş.-T)W6^"UVW,2~Pz_VP؇뒅W<(k\L"Kalllܰ4(ؼ Mn*%$3c'&3}.J)7%^U #<’x&CyVRU_|PL~o Xprڥ$uZ%eb ȖeBNp75FRl  cT|?$nUm~$r3 {*bk{Wl <2ή(~isF|:p#62AO ZB obGaٲ ŞIg4@lN׮O:${gwLgf߂е1[O0%U/]% Uހ!*59#nLQsJzvHَ4-^޽;xM}`qC/9A8=gyrCޫkHlX$ >.tL)5G 8K* N%agrCoh@} Ng0qIq޻AlLlWEDDUP\ ӐxQ@ [{]h_,ŨiEޤlǿnqءd:YuӋg*n0^W~(D66͠M +rִe֎'din{ >c-|jCy`v>] XAaL.l%^>Ychkyoj+߳ת&<0ep#?KƶcK)j/Feu\ 챤fMx=oYu hu|=ӆYXB=#%>څ֯}0q\_υ!%ځvȻ]ճT NZ6*yu%/!XkKpR~Z!‘$rD?}fz@[nԜMۈ;=dug{eu K@c^B G6`Q&ZX? ~(g8=[u=DXȮF%`.Eܫ\k#HGb{f*q CeM<7J!j1*P.NI)o|hA֫OT0ߋMiQd>0: .):Nd/ @ W'#4A~݇C`B`0DFևEG΄}TdD!kG6wcS^$Zp?A[8N@I; hJPVpR)1}Q ? 9o0QA[*DczZE6!'(qJ |`ﻔx>7*f.M!1Nh0ф%oArO:e6f ( Sk>|iw`F$Ǒ'6%R? PmJzܻ˺'NrD (0a@PSD@ft4|-K{ M[mUWxeoj]s1M"OPP4$yV/4Q\@{쪚iMbM@r,Lk,7İnYfh!$+Nse:c.axFM#f'_xBNQT+@F@אTB]-/.ĈЫ&3Ҁ]Q]f&$ ccBi&CʿL-GI% 0;p0n~|)uYʴVEv&"1$m>f C*ph37a2BKּ&B?`GMq_l"QVR`{Ag-ABwmD XHrT6ZPLmȕc}tJpZY]PSGoez'i]z HˍJק3r>oöSs6MAf>Q@7(ɢia{CO;"cTHP->}> Qe%] a mD瀄+G0h) 95Ə~r̗))vxa]A IޞH:. EMԃe+%.rȷk djGXo?km=! ҭ))VnSɧ jA=RceI(wɸ51}Xls sZo٢ؘl . ~'Souyiz&)}&'lzO3+zUӗ%ɷ[+dGKu+QKγZ,p,V8AAocLߍ૭x+SYMCy; j!'(=``egwȍfgYls[M*?r2G \ZwG=)"<ʹz|Accʺắ֙c\v%h~L)6b-78kr8yU9r LȌhW_BBlSúHɽB>zS'Fw'cJ+3w;bCHKc.2!{ff &F^.UvއujǕ.$l0lR! HoZd_ bg܈%0d\]/0Ơ:T|*bq}M9';o wAipoWGl"7MZ 7oqOUiWro3 rq"vܢ;.UjobT1DN+Ak'$չ̝j T8f&ܬlPS)vZXtXG`O-bf.$`/Lua֑g# Hd5yAp4'v ?he>  HP>HT.U^-+Y~~:VZ-OMkF]QCr̎ѝR c3A UqnɄWhS38^vW~]+yvS@oKt<Wj_@OFt~ >A>hMؗ(3C,` J}1α8>)+QMpʳ9$ɣ.6A}ʓAmc$z!À.|gO r7x˞wb8PR^{ԋ~Tu/0R*k^QHu\!4oq|4Qӥ9EaN'4w^a:ca10aKUGΜHV[R{4jg$kp,8#h4]{|Y'7spMmWj;+ S 3]X\*MTwb&AU4=N^S>M_/Y?E/]Ѭˆ[x9B҃\wJv:-&F{6E8Ҷ$+) ~-#W4mߓ jxLiw(BizpA% oN";>'aQ(c/vT{*϶2:#M gYrY`;vh#0XƧ˼˕j[3b9Пy:Աok/$srL#ڔRB̔5'~kע)_ۀ`2;un~XVc^>\x]Inn +OPP>)´K%\{u{?2FCޜzYRlbC ćj.$~MTpC-JA M\ N3n_MeE}UbyZc܀}"(nqvg/vL_𼟤ʛ3box=₈JO. < *#4tHVR,Bn<-i=e]:a .Ta|<`HN`-S%D*R:'{&2L#ct%rCѿA Rˆ 8H?"İ6dՃj@Ӹpr0w=zOKNN؞ :$|Zi7[ͿQ/fd^q$Yɀ}2uhѥ\hP(u`n0$a"x_}NIƁH1YuM ̵PD[a>;JAJ!LK#j-/ϐyLeތt<\$^9p*PZi!U)/,`h$,7ޝDlo=vrc7w%)c'\]bh'V02Dp d劬@Wڢb:p./2bߑ)QYmOZ]霳ŲT3DBׂθ0%K ~}Dm,8K)^i9w9 !3P.#M #]%Ӊj4JCIǹe&(>֝&u>kg7 0@6=&ov#K/VnkuE5|詟 ucoYuPzqڧTD>1|2@ulϫ1=NWH];UQ a59 m3O:8-BҌA_ňipg4~fFk"HGL c@JPSf*9z-'gXs)"јt-Z0X`_o?JMܰ C^o2in8dV` IЌ=Ge"^{N=c7vE/P )(YaP *d{&"b{ r3q" .M`sʐw2ǧrD"x#HHco]mZ [S&H9ʠ?y:n ^0ni8B\T.RƢ -ɁPw|Nb/e;rZ g(}9ːcLk?"q;ʊ HU*,-~[_7lՌeN=qۢQ3^bk:aL\ȿ7&:'O93o=:d.ZK<1MQt̊6&1UGITNLNMq?Y_694(Pf.f gQIVҡ$t+^Wl;Oh>e>FLGɹnPpπel]E50-Qy\o *8>m9Y^:# Ӵ}L>~_ֵ1, 4DѠht=F|0j>L3_ ժiș)+lm}φ$!tNwA= WG+֛YȽ1ϠcsB@뎺-<-+>Pm&~cj[/3ɹGK:1MQ'Dbu^oL.H@C}]@(SmP+*wsni7' CWkl'M:(0ku ݻ1^̧BaOܠv~baZ*n VjIG k! +A:֗D$ɠ ,Eppm5ϒ=w[x'Vet"[ox$ Ԣ#ӈ/ɂ(}M_xX[q\pjFTHDH4-EĜNReR94tǫf4cK03Y]-DȠRqX({YW /:gmnQ%ذ:Vrn:Tתsޓ?!jd'ri(/ac]rmG%`i^L iN8XC壁/)yiiZ8Yi#!E&!ޘN=I%FO3炸7e<#l3xq=Cיch(a Q`͂k|^&/L mqßR)3gu4FWBADAJtg3 !{}_ z6.q¢@m8Җnvb NSE, 붬C`Ҙ07l X9|聭mxlK| Od-uPQNĮ v$ˡg+_Oѝ""#Oh'.XȊB5nҏR_]>ϹYZ&M@ƺ!vtHM$ӈ1z -YjvBwHſcͽIe搨P;g @Khn)HZ| fTQr߇)^)C' Ry&\)wDܑ1V%4͖e^ܣaզbgǎu.{&[ۆMޮWʀܱU2/z9NA[?Twi5:Z=!c9'? Zjfl5z68UWz~@tY&Xͦ֟/䓺/ 7k؁iF)vVy74M 뗢Sny2#=j f"kOBC$t'2̦< 4$>n`Un*Ա`+6J,S4ٺC`8I5 -](ʳxkNo)gVßJ g0Nm/uN 3%qې{ =^]D9P4 ^rD)LI# 4k*+X"<%X^-E\z^U<1(CT_{7F,c҇ǢJJdJz&lv9{_sp3z0KsT V7*1Nȉ4N,cpF&|P"tG/zb4@k*ʧ6 XFJb\NFK3EH'Ƃe^1+ldG@cⲞK቗9P벭=Jw@ taVZvne޵fS.> ]\CHS< ٖ)" EϲWa;OViO$/!|8'g-w㺉s5f ,# |G7HD@ !{mR>M*LU2֧ˆ+VIpzGri >5&-s3ٱmSZXզXg"U)t&=$Go-Ҿei i35:O%2 d5mLn q:77qCq:{y&jr8m#~ai~&YpSȾMÒxٹZs"͉G qD\%byYc6jǏ3 nc,V{fnKZv7fA,,!Nx_{Ln_$b/NZjgVOf^JՁC^iYB;RrfcE2-AcIgPZjn TVg:4k&ee>Nc4-Ԧ2aۃNqjdLmAՄ` a(+c1耒?EEe:?pJ_0/LQUNqD{旮LI.tdo &., +]k-| Aqi˼@<ф)}wH?OZӝNd' wEfpJQH%HN*Ee!`Ͻ|;-eI^o܊mQ?,x)/RaHy^e `ڒXV")+Mi,4D&9BK4a.۲keBj(,U  'm +#9IERWVhlKU!ʼ1)_4[!OqyٲUf2`JuLP,5@Z.$`[c:Y}@en:q$#.J#r3BР"S=/gb)7oA`Xb=[h=3J6n`S3(Ok8&ץZp#`9Kb<l5Di+o @K;xFB_{Gl\=,;Z?Q 3W`.N׌ણ1 x,DcKc %}RH#Bp”9װJL l #zfnGH;GI&k[89dqդI +?y<lYӽشΞ]1}yq7PwO8'Y$o=@d9[PL:1fE-*.#a2C/i +7hPb67WwDa\a)e+㇋݉ݡejz`yF^ѯj. No(L_::ŷΜ]ƌ-DF @៺Q"}( VL ߭*TwMy;;f?pʗcf.|C.*`ou?RW‚t̚0gwsv3wōKl q@JI< _]5y+l"LKt[H$`cFK1T/fgiͺJe#N#l -LX|>%/ nMkjxxCx-q$]۔szb *̣J~8/&`44fޅ8SE QbҮHXi8׆Yk}]Wc8d-AY:s@S.QVZ5VAFXrcju2LXQ{Jփ ,: >7GyK BEB\>gDyYRď`H^38 mƢ1.+sG:N=Y js,%(+?镭<.K-|{֡ȹ+ʉ klB-mWgc[.:p'n<)W3Vbr}#DY9Sb֡NLQ4C`f;_n57y@|1-Ec6 G`DED|."g*DG̱)NȽS:OjV|t]+qep u^%.Y%B>hv*ua*8y#ƎYtLKsBJ'{@{ J)<"$(%4 v(ܗN:4PvA VYZgL!hgiY.6//ĥX^fK5'g]/0zXn>U2 L#m?_LkT4tNpRSpF\0 EEC=D|nrM{Mw,}]DoZ_NJ VfMc_z;l=q7Xy_bUP^]KRCU?c/fFf1{F._x-2$aPw/VoY͔WB{ 0Qd9CrBN|%ȭ{@ Zہ`v}leTϧl6%OGԟcGwt#.wWA8CzTO. Óo *UWf:{JD֑7RmN&nM}4eV]+di Bj;]uį3G] \LŔL4Er3CySKv!|m@T #wY5? ޼1 1`.YOIDndG~lO B2Ҭ_Dܟrbiҥ6wy._7 e*F~q FM NҘuڃkο"_ŞDhԤ/v=9:1Ƿ/L~јyh\OQ*/6ڞAC$[ʺzy ö7ݫD͠Y ?և6uRg1PDŽ=УC~m-!=Np/3\-4WBUq<,6jklOhii _r,! pwm*6%dآr,SyiW)c郉 hG@oK$( ʤoڨ <>j,Xc%t>Atl5*Ϙ2XIAvNK6:^{:6N~7͔^:fDZ-e.J=ȕ@;{_($02ʏ61"u~]yM=JI%kT , cT_)% >Ǫ_1l1GTȖE+라Z:+ >PdtHDaVd>%%v_!Hn> }6Y7;[`af;×]r>WR4*Z4c;[E#Kro&Z+cx&ƅ%5 %%0GHZEclxˁ7^^nzf 1X%y&C3/?碠Ntv<>wYHPtp@qxE66,.?67Sk<F RKJBѬ,I^#y4w`F:B=Y gLd/cn?C%+ya-68CrhцQi-d\l'1 :ƎB̚m`&]0D:\.Mr7L\g[qiىQl܈} Qn<t0]b7j:+tI0 b4qj%|/{ҕ~|6< ` Wl||z6BҍƱ9|&9ú\_k:Ð`\@.@$؈ x"K  o~Ƈ*9rm5a!9ώj}4c-Qbl.=K9꘴qIH%ZU~J_BWxu)n/DY/ ҽY9XIKcɃ.y[U#}2d&0؃C1 >\D&,M Pk .Ԙ2ә*ח=Z4[#fCǿiy.jf8lqY.YPH 9̵<`vEpfRP[ Ӵ-0£cdE8lWѼTly,n->hE· xi7ւ|-1 8{׸!O[@Wb^c gW6ię/!6? e؋6&M?S]ȳA!.j_t[{QRa|zO"ܖIVBrILxHߡU@3 xό!Fp{)lDOk*=6X Vvl)&<ὃ.#shyJͽjjm'Dڬ.E(APSާ^䵊"/~Gߋ 8h DY4XEY0/R0bA2䐱256iڋ,36:M\Wś vE>kn*oVlRr~m/q7Gș^\hma.;K$b׆&"~bƘ"/Zݬi/` T*p~tjO5B]M(U]k>gg36q؍ WxucĈ]=*YHRrR Lhϖ/--afK re\jт' !|y@\?*,U$GͿ*Ff/&Zo"~TN$AJmpz(h[v%|R ?ؒ!Rw7F?3R&>S,3ٌJ9vU]zXSZ'o輮] {iA]9կZ *N%@z~4m)!S(;{T4Jko)Apd!26G".iƂ PzHn?U[HCj 39`Q:#]Ru|i31sjEҰ-L4ƍKt#pdDw2uKA~teK93T7`+ɔ/Y_C21ޡ]J 1I^Oz0RO::~ߴocyUkS1i1z=dC./[^}4oPEl(b?6ⵎ0Q*XVf0N]$`n%\48po4>Glzc.$^)PD{|AJ#0dzۛ .nOgH q|au~NzϨ/Pt_tCdvT6P$ksnYݖAqawFEp $ *])/Caqa~VGIؚ þb-O8bre/Cۙ82m]є)d߽7Wan8gf4=Q_0* GV9(ӳ$3־!Icʬ5{ۗ+}9uxfΛIk"Ԏj@6k2I<m"BԭŮNMnIҋXTF!")Ԗ-CIs_!O)DTAp*&sXzީEUhITt 9Muyq*iFꕮ[ԃ fim1j A% ȚՍOmW_a0)&#T>@8W!,;TVqeotJ䗏gVj"}:Q Zܧ2ej3" oe=4Nպ 4liG߾ :Me[} RW1[G,+<ŕd,nOˏyE݌MfNpP0?-L_Bzh]bw?>J3'ڋ4Y^-?9[`j> r՞']jP#w*ԶNZt[ cZLDcv{;܄ ~3 }m$VD1s9]~Z揎wa 2to,*cEQ iRț[<wZ;Rr|jлzm0i7=_f3zr DdPo۳F`ov Ɏ\°~L{u3!?%h1Qf\Gb'ujD ~+M ~}!Ľk:ĐJLju6!}VCm^A]c?oT2og7&8ۭWNwdLuV&;ɹdyciq.y~ Y yYšm -2PgsY}ZVR(<b Q[e-xӑIJ9۵Hp#R3UHpz! rNYg!kq|Eb؛ѣ2KUpΙFT=yDo885U9>0!q~?xj$]+nD$:!'P/_xdǹuMc(U3ݸN Ł|eӮgrсGfd"̘$Ii$qTXT+(xx>'dmH=>~H_sB1w+}Ku}um;q0( lz`g-e4]~ʲԓͫ `Y6\\^<M7G'ˇy~ 3*T2Ŏƅ7a1+(j${I@:!/vBoL_sӹymJsTNշ2Zݳa9JRg"JBݱ{\V4d=/ELS{Thѣ{&(#YDo+4R(S>Vv8B[9*f [YN@U*(L1>E]{@QH$qd~:e-9)OZ>΅QݭݥU k jwQe͛T\Utty n}LtZHQ\Hiyxmfs>ZߟWZVS]$C`_ݮ^](w^W o |>kl'K2K!2DȿtfGjZ/`Iac:t *5 S{k}fW,Һm%}^֡պG$cSxkPb9):) (տR0&aRcp{u HX2|;%BȬ";]ZB_cԞ";4\u^E/Tx (%lp‹Rk똿 `bb[})bgL@L8 uC|f' *.R֕#<`D~?Zj\փ{y%cѣMB> {+؁=尀HVxF@IzXA,47&}NV7Z(S2vwU-.h[F=JG,w2yo8m,oXOaw]Ñ>lux!" #[egȹecӘo&.aOj{~rX:@23܉ozύ-ZSdt 5FࣿQt[d!SU w.X/HOHzm,K[J˘ܹ#/CA$y~RWfx"[`CoѤ7 v) Y<Wc8Q,M?%K)$Exilql%/gX9~}(/@=[bhIM窡-u\Nθ{T^/~jH{b# o<0C>WdõUGJ((koP!)!oL 1ZĽ="+ן喤;F@{"cT6'$ɐp*tY9rWUp`޻0,qd-YH۱Ԏ!"e^vn .õ޸<˵௞.)¿2nX+ԨC'\W]6~\\.+E$lXbf}p&Fz2D`V&{Ox2lE#$iM(]P7Ҍ>_ fz6gpFXOځ>[ Qr`<ɝj'`1<{vL Pi@^D&]M'.W:bKrKť)F@dSDiz&m/UAT/b'Cufy 7ƤB@,ZJTT\F,If^|Bup W8C~^@dZ޿{3[&fd-i|!쥹އMP^['oS\V @T`Y][2s)[qA{㛯OM? ԟA\M)p"JpWx}Sh~y>UNul{u`JTl8v;$) zbNibx}7>1|-54rpl33$ț$Lo{:[fX4( @'(2 ߓ Im9ᮂQp^W[dސhl˾Q41%-y=4exS煝FE43&NO*R,u<鹴-ynU v}qQRR?IصJpV-7nIC~*E]@Tp'!h/Y~8iWIy h9xכ*ˣS X tܳ, X0 œPN#=ÝSjߑ.eH6% P!t&wҥ3K6Զr4WY2ImAx%-֙4ve_AuPT1R;Vz<Vp$ԡ}&{UoBM4.X~Fd;ሢkn`W$);>( ;.!.5qi[%`U+4)F BCg;5U4`)lB:~6߱=\G `Dq75aDD#jQ"*5D1"-#XB3EK30̻h/Q#\qo~NܛZD?y`OQ~sx(pOƑgb IjVf,?Mz[¡)P,e};zwb Xl /y>K)' x2$~ Q{#$ךc#| <ێrx^ =ȃ\+7Ctwo+8 ǰ3$L7쏍T P'Fyτm$oŲ#:F_]e)m؍l :( Ĩޮӂۚ!St,Blɬᾔr},`b$cՋjXl ǵ,FյA6Kz$2"X~:Y,e5''6BV) V2՜^5ƣqEtۢ?SɉeNLlֈ:x$oZ&;C4rҚG%<.]L _$>|!Q :U0DLE^\WBEKsQġh<ٴ7b`??Qlf_ø [  EY_̺yM8MAy]MZWr:Vk4@c9'y,70js^9y&;_toy᪢iQPGFҶT׍z"jDC(f嚼l.%3< kmY- ҍdÂ'f!h`>|K1㸴׿Kdv: 7V5j ɘ򌮃 6\_ ?a>H,kbUy%/"*Q8/R:ڛ沮y0`n,Gy0$绉};+cJ,1rK QE߲EB <O urJs %yh<h,~c~$гi@YO7 xwTD0Na何q=oʗfvөtYsx`ObhƓfe`aO|n+ՉNj F4M- Xq擳bj2 9%Mchi'l?s\\e <ecЎU$ɢ4S1Dw% /:Pg5u#nٳ`X( 9W"8XdFEŦ<;V*Xr̝[d C*/(@OV5}wF@GkgwQUE!G*⧏B&qO\=/7atOe" S7c"!JB\:ϩ`(qu[l`c+u~Eכd-1BV,w&4-47 z̢fܪؗӵybptS;'&,N)r,.7}0GRu1iE c[grO'WCJ%+ g2iĨO{=e=~hm&D +HiGN%=դ3"nۼD3ʐ%>qu2(tN<9 2pނoiAsur![B:jȡ{wڋ#߂̔A Q93(۾b%lZ|ԝXQn$mOT![x_A( VWyC|`Z z]BǗaiGms ˜Y!JxϩoFO3S."4"V"qUB eWwe> [=Y tnW&C.cGdeB8+Cl~v6ROK|FS-0 vZ_{i}kǛ֑OrbEGϓf>i{--+q+ VSI\7 *^e$ Nއ+X:mBQǢVڟFYtA@oF홎}rcOP+ !Z)̀)RH|N2a)ta8s;zddWc%=y6Na\?PĬS\kI%3;/tw0Y9f/NwYap[FЇO8/,6FDb]ItPЃ-9  Ĩl՘F;QKd1UʿɟP9#!sGʘP{!WP&贉) 7rot@>@KKKKeX hU+!,qj_YΝAQW-hngy2n~(y,; /FU gJe)0亲 D? R:]Ոsvl02fpLH= CetE鎶r_V7ztQ: e5# s~IXh*}15IvN4u4'Ϊ Y{BƓQ먑캗XO"N QaӵcŖ:8]Ռ$%b):É('s0Xs5y⸼!9ܐĺQWFQuN]xeJ(Q\Maϵ~қ(j\p9tjzѳM;c ͕z$<49 `߶i~Zyf,Nvո~8lxAF!jX`(tΡ3d~\E lL/%o nb福-]ANbبQOGDFꉛMtG;KI^J/{K0HAH ]SȡhulTb%S'YۜU9l*-{Xvfτ0jGKNrʧ7_np%ݻ>O5sKfȺ/08:M&OLHx )\,b453͑fCxZ=Seߞ;-G=S 0sRhLTWG2/8YeUyKa'9$P=A_-#/p!fը "-\4|HMdG ?\ƒ/:fOJyyj:(=%_ңUΖԉPntt ')$6AUwYa{$vϪQ+l[X2>|ƶ =jDЉ-=T< }'積xx1AiviNI+\4Nʇ%R l|%O ۍn @[O\VtW6#B.B`9If _WH%ZCwa:6 ,Fx]"]T^ {.J;_Mw?-'-}7;*]dGm&8Q9Cv .?dq\1ު rSZr pqjK0QM&whEy=sIE<ئ73$KulrfNA-}! ]~1{s[%˾htL \^UPŤ}=L5'%nB/>myY(6S΋ 2;V$@WprQ *a?¨;xtP,F^pT1mՉ ~5]Gh ]4tpXy`@?aAADFb9!VDJqk8JSO/8zS{N<ꎬ1f5$4.DsB ŌE'&xȆB2au*z[[Qm |ΰf]b Jې\@/'cwT|J>|ՙW>VaXH0&ew^\RlZT ~l ,96I{}f_pɳ9Y7Zb3i~RdleS_h0:Wue!(>E.uwA4KTI@?H|_9_N-~MSupCo{(?S]}㿦 _L\ ܭ|(^% ZA^PÀϟ|G `Ty.1M}^s8;muuH5<)+A!>|28*l/UZ9ć54C(BXz+Zm)@s:R&~! ɲ PbF$ʮX)T5_WGłxMQ]3FiCZlG"CD)K-2CC=XcA,Mp|i,|Pi( vPgƠ5OtLV2hF*#`H"!oǛ;Y MK}p0wn5lQB&X3ep0!f[-J)CJ N7P1rǛ9')Y}߹=z` 9% Q|Pb2Q`Fխ?h[FwNvE,6<]WL f҇գZԛ@~v"X $(/?/$ I ImFؾ$(.jVi(Dlren;z'=u,!lB;f S$V}F{=@L0T^ٻW~F@UNuTtý\gqqS6ם/lvi>|o ge@Q/4<.TV'pg͛"$m@Jk7|vwǩ`\۶=U|94G`/+!cYĽ>rK~O7`k_d5 |Y%̪ܽƅr7?>fjk0DjG5lbOo"0_胈iZ 9D\(;9*J6z,[U\{O7?Md0 Rض4#gڿEpB$/qL>:%"S>T G7V{JGёCfGirnG|»^3(RuqQ݅BtB/:1B$ N!y{khGգ afoqolbڃFh;umZM'^GP"h͇{?M.;ޙNU_S[Ֆ(oD?]:r-j#wy(r?pk .`%q܁ϟlz}zΦaZ#naH?uʏ0*nVIV<3* x"FizMv9AkMu E?iQ㰈6dv4Jc1IFҧ|ۍY KG$,-X.A'DO$13KT2   ;uwSrdL()d,`lV@M|*-6 u3}^7=$ iJ@3y).h̪oFP6c%A!*( Jۗ%g(Ւj'w_^m+<+P%ٚ+U s exq‘)Sk ōw^ٵ{%prP聙$mH=}:y|7q$M:%{81e \Xyq4BݐaOe_=1>,B#@I|#.Ga͸kc xt*g}`vޅ,dvEEMP:ف/v'#vi–a5\# ;*@ T t;0f(JbDOs| fA!DDc;6^щ&ퟛvP„S%=bh o\cߚ QéTP ⼼x~w g])tv_̷x0g~y]Ж i`~j6&D/&{-'MwֱTKߔ ^#k⑬Nv8TG6ބ?_tu갬 QK j>p0{T* `vqTJᴻ>gc?/Lw/X0:oCי^ܤOPK n@ N :1%Jg\`|&shi{/UMm 4}+) АWzJF-"rY^D(26ST$@Aׁ֋iI2YV=9oqs9`*՛3 MH<>c=C0P}7n+U;[^wT b>u83Oצ$70DxPO "f!SfATF\Xne*mze@DRS|̳~_ס_TAl_<1qTݘ6d!;d*68zU hQxfWU)rX&["(V36Sw!nlST?ٖ]6zC{: `tf4`4㱏Z֐ pTH7nx:`o6 Z "Ov~kÄ lr+82b!UY?Dxt V,AeQj~Y\G^ɚT(/˶"f22iv%.snϻZW[[ q!b}lWꅤw Il@kDc ka XSU:5=٦3F>S홃HۿCQA>3ѼW6.I6DinaG"^[W`/S@ѷ8-E tݢDj:"0Zf*UH1'3*Dc(Y|3)%}tѴ5-R(U, maBi%ˎ4~&0y+a5H~}0<6)I(N唑['񗹻+A3xTSb";O|j8Xif~v$?>fB2d ҅ZzM u-SgX8=&&t02p@:r|&KϻȞDm[M.paFЏn(b`-,O &CiH#{>4++輣{*Wi"EO(Z=KC>_k_3?s%`=`+hɲS UiUi)c6il4F<<)q@h'̞[+6d,]+3@ 'Py0_ҵZ RZAo]6 TA:2.*[n@% F@YLDzWTO(Džm2Tv܉Q륐m (Rb&% vcIPs!@{ e$/1Q H3ϲPQi^ *0 w"NDȗ_<$e?\ QZ% qgaf-FD0} xbuVosNغ@>4Be)oWM\pb]S御7wkH-:2jkq!SE /VF~ [ Ty sB$Tj3+oіY3aLh`0x&zbLRo94[mxUĸXVU6X R,0Zۨp@,Gj>L>׋ʹ5_ůiREѫ丕ƚh5tr#Et̬F_MsO"vn/B ):|p(8o8KqSB]ym/='ҋb6E*RwU@e,D}sKEV_ gKa\ xY!nic"W/\pjΊ'ѵmp+G{$C~Zݬ]>O@O &fvsY\;FBIE^Jd7Q g[ybg$MQ =[8{@V y|{cJd<&>f?Q@OCM)Eu)pNӏ5%хAfw'2|[H|/kAH VvK#H0chV~P(t3k.5U@1٨mr(;p{TsFoeܦ\wЇ[ g_lBM+F$حLlߦLW1탂WYyCL㤳co }߶ه@^-׍5!`6_ h{OyRPu7Qv4{^/e2o4c dfL7 i0ٖv7'ZNƃ ^E]ٿLYND̘.MygߩW4ƚn,2CyG#K7쫸` V@Ta@|ޫ"Dc0 c1\;]2nKgAJͶ %N ](Sl | ,1rBbE+tcx’ton١fd>$O?vZS=tL[DB&}jV=!9t\/Om.^K^_b&cG-YXbl]ɭ-p؝tO"^e6 X<>>"%UMvւ4vNw-.怚/;ƾ~Mkh:#/Xm^!i_vsYő`/c \/l?@8HC઄PrHO:bf5N}jw|k| &:<ݡUz-oeڰ?jC2fD@wqh0.?ݹ{\x}|g%ыs6X@uǹCwT(KB}:pR<"= OyKTZEiqnb.7XpCJ=2>S̍h@|Qiu2ʕi~e}ʈ3?Fbn>I_+b.'0I]MdUA̫*pm>W{Kt) !IZ3>xps dr9}Y|WR}%WD},əEHQv dMN/P 2 | Y#i ueAq]@*EwI &_&-g+e߮U8 ;Sp'T#&/U';н` Dh) 0𣏕]O Zbdm%^@&H# &\B[gh SRڲ<,dvhtI2)*7S24L32[IVa^ɾG$s]e.: TV/a\0QHqdakZGzO?Eю2[u^L TחGL7(oU0AMO̧i-CœkR9B(YgXn:\<0[~}?B++(H$!) zJBAp-,Ujh x28[ ݂wWշZ:m`c0t`lRhRNX;2%!nJ,vGXB%13):;V㖤6iVPȲ韉ꚾ}PIXEn#Hv"iE'KvD--e#x!iG`_C )m͈j)RaF^X?dCa)O9x胯8Ɍ+H[R B`ݿ~N|lSIJ:0{/PfYQ?,liuӼ :qK/ ~~ՏiAe 0YjX ux)ثAdP 9dM{nNU[ȆX6>;.,svEךj ܷgU``5=}<(ضBe(&e+=u쳦@+I}TJ$u"|WdK' cXZH5˱¨k]N0E@Y}U @.:%<.J&h#Hjo^bte%') JS"FbꟀ-'0{YzU,~5md[i i 5heRbGQ0TW{(i{Vc9*񼨊ۥɈGcߺ 3#|%_ [Yr4/.I"81v%pny)cV;LϽ:c}n!^RΔPۣ^s :+ftsT B[r Ir= Mp+1g&7Fҫ4Ӑ.:OC4^s hW^gԥ%3KlDONi^M87i.Zz-PR2*]5A 5E|,e~|Mn^=^Ӱ٤x2?S嬓o la#+l Uj9]&V~\dq%1Bw喆zNS64PC>f0hØlP\ d{ @*w7%[j-%#^Sa-,ɱxiy`ɑ gNϬd0&nʆ̻0/f=7[8e~IiAh,h/dm> Et᫗Iq Х/{&$sA=qXhTycv)\9pw] ǀcaJ<PY3 qd8U~Lp&qwB%h$ߣT'8BL]Y|ᬙAN*)#O4R],-I/v! ^( 7E.Ե_3h^ ^فE\V!)5 ʾIu϶}g`ͽ/9}ni͐tffUYnf@0 y{;_5s -kRxO@-Ti%3#Rf(>%j|(ZiV5Ro'sA8 v$do@akXױwKmx5ny!viclZӏhԥ}:O:&TfO{3 OPFʃ^"#`6/t&].q 1+Py+[4Ƶ!#N?Td23]\sPzIUUlI"Sm^ˠcGWzVV$Ep=e3ǃ?FVfʖdDtZ!zWfkBA:<_*KZrp5lԭ) ezQf[ 79nH_D -$YU ԏ kɝn8] RYA*vcv|O ~Lo߮+ecFDN% f/o':J/:' 3 u|K:RAmğf}v,;cg=yowl+<,ӹ]s@Rѡ1r֓J/x@+wY2ߗ各A_ 7Sei=E,\ݚK]'6`GǽIMQvPkGۛh|]ݙ<9:7Mr,x 'N0ěΤJa'P`p ':č lRAvdk͈W&?U ţRa#8]!%7I Q:bJʳG qRspCŮ#vTcl1ŴQ͊٥wP !Uxg@||&Յk$z>~[`+E@%4Ň,X X & ڎR[LDjJ4 j9!9iL mclDN|i٠&;w+ -܎\e"$ū}<.!D.5M萡BǛ=Jj0>o,#_ FaqfT<9Q\iǺ0ڃ\xd4_k|퇗yhEv|㗞*<^G&jGW3nåWchLh(4i-$PB>_k+y^&/`zau >?_e`q[㇟j1иz/s;! sBif*%2p-!Քv_Qc@g<'Ep @TPܕag19E.h ,!09cډu#32쓄Ms&]ddzm e{\F]=PTƐil^ P λ!S )޿x1)|0$<θL?l@K_W#T́YÌ^xG,ScspAOȒ[l!PRRu@ZveegAo1 Y@ UwugYF$+Zx<Upҹ"j)5C4c0CFmg^3ݠ*1J5g%YXakyf?ScMzYmJ ,Cʍ i)Vƕ\7C򁫳: `.pt42P 9Y! '_iP\9kkOW>i'RL`d c[E2ZG&@v&ו4T?6>N,ǝ8O5FTS(X&M~V +3S,ƦHj!hOtzFW]*{J"Og(EGZi)w8=b" !oQXKhDNW; 8TtLAR"c;\)fU)H݃ւr hlKbGe캮_mǓͩl_9hf;ߕ] )oo(*:QhR!5P%x""-]<,ޙG6;G5`ŹQQmH\j6ߋ.{7:Z'լ/@>Xi{yAx/ ߬G FDٮ^a+r٤*$~Sk%[LT{[ڐ:Z{R%=뺡io5'"&O`AC2*bn3m]xle0~^ISVQ&%"vPJ@ŔV3"'%݂ L`8˨cYc\i `ŧT"exW2q%+'BG> qO W@Yk'= (tFK<ԇ;q(!e) KB Y|3-/Jńljx*㇈ ހi}O* zLVϲn7KbCUә u-Pz8}n OC.rY4G9  ʿjslpv#.ֺ \AltM6v>Ŧ'&1ھ'} -'8_B$ҥeVzUSA[ĥyֆZ..]#uӲ{MJ80ے.Â~4KB;4}w8?ُzbMN@f6x꯴xRN0Z3nؤ[!GbэAD$6`1}cg> VfP| ϥ[R*zQYV@ςy8i+0^oZVnx)ܐO !U[Zr\}D ڢpϏl{'b-8o"^nlzBZ'%5߃ yBxU1:r3:RE Q|~:wXU;-ñvoZ?9ژy"ӳ6fAPz3H&|!!@B eoGѮdѢFqdبoB >wP:t7z;@Iٵ;фBa5GS-'# P‹I0F߮k."2I!UгS3$F,ː*-a*B Ғߋ|mLrqhj *Jk] ׫4 z.x˝?xtoT+t<S[WP =2;- 2 .=?y9z-u Qd~]ݖp>]Aˤwv8B#ʊe/80RtL━m~-3-)Gܶv!6|Y"37Gr<Iq_E#]]ۿ$tO&7ϟp;ơHaH@xaު_UQEV.,k+X8Hf*cV4 0E\.y`qZzd ]z哑ݱ~$Wؓ  6׈]dxNQN# ~9rv KFp&Y`KM$u x 'D`*\>72@ RC"`+Nݛ.p)=f󷂬3]旐$zZخջYCF䦤f  ( zѝ[CF&hT>Քߪ$R<Cw69/.G8WGny%}Q-}y2lC;J Ȇ_J̞FWߕi=5Xl [=)t粼-'rZcbls8[ n^h0 fL>O[nf#[}90Aor x(%rsVIc9H-L! ',783άRVcpUGNt8҆buBEю#5ir[X̀e?tlIԸ['tM Z*7fyBG1W\N PX܆Gb] dsck E"pվ1 y!Z]8^X#VzBŻr}3\Vw=xdϵsf^ʙNHF|(;Q:Aƙ}-iRlz>u1\I!O,|S.mT}Pi0>^0}[}(C&O Q,QS f>g)gg;AShi! x&+cu課5ɩ jc΋7(T-8PY\(Xc Uz߼ֺ+թ{ ?Q6ˇb+ћ,u" QěS48ڻp'TMa25g5н]M m<ٻ/L1#. jg^ٹJPV؄뵒hL3ҸכnʰUk<ÊK$Qj79C}X_7ۭS䕭FӚKvmhȇ'jB´ƈLk' :6 # 5]:UN?L<&^W\lp2|nk$4V)-c8!cM0NhD(=;cE{1CtF6?)sq}^!"AR[B[EVg0Zù5f5zЂN67cuˈ*UDxBMllՉYFApu5JS[>iBS4g=&Ozn/{Lev*Pܗ)j"}5*rȟub寧!0O` p=B>JzaR|dk:=t+@UgL@BpPt,2 v@B[+ghq>],ZsP_GziW" <TgJGeRZKQV0Ì 6iх*8=b*@PF;WdƳHvý>foײ]`$Cf|ޟJ*|ݵq{w<=E*D;Q"=X͔KYx1pA#TR33"!Ia!t;$ǁ^27mC׀`)(ÄMN[pGn{C*2MsK·é_՘Wզf zOA%]$)9D !Iw:YZAԸc ԨV|E罵/>]vpW&Y>.stN1 {_f&*NIX i)hjDX +dŌҗ+Fzs3Rz(lSXڹS$ t}?}4<sfj(3sS$E定.vZ zSy-s2(Qf['(ɫ]DϿ0{ i"}5 !/%lS:z7d:qG!n;xJdqbٌW5^FnWOB)^ 9ʵbځ% [q=(bi%ɦM0볠Hxw_VP Km~|(X0oϹt&!Ru<>>qBg+d)'L 95. ^ƴ9вfjGW'%yUe P~]OvL'KqcLVMeܹ^1 8[vx;_tYk?нp)Q%/hbP]qmw08-Zdࢢݔtn=B*z7[7Ksz6=D)l]]3m[=:oGO#9g)pQW{$j,FmG,gE ,32D#rFS293߭h, !qfiCKݫﱆi[]WY0q2˿lct︡وs>1 <,i(3k1Q\{lU:vZc*njwò`MSd[śUW-à 뇐sϲU;[GRz-:7GE5XlXJBXb>o{l"5C@!$뭏Q^HpY`2~R%䫓 E ֤ XU˪#'J?ٍʿ`Dz9T' &( ϕ38;d&"b[*lcr}LwU N QzYgs{]XHrѳ'(b܎x})>$Ck^9F)\eUcB7W?"ZTbﳤn/Җ$/I]Zݨ@hhKїA-.?rdK4P(ږo rF"M<J[BeQv'c//zQި$I =-pj,Ex>N}! K T?2`n7$ V|ou%7 E'ޞR:[BV e\>/dpgh.,殛ubIpoM=̾(r 1HҡH _)qe# 8٢MĿ?D/{oIlb3߅HL`,kάr!Mǩ+m=+`;N/Z@UGP;K:nzKՈו;2hwކ5839{ ak.W2.?KW>u*qא\|qY:d Α-wa'9_+߅iB˕}1u|#m{wJqj sw@8y.略}|߃P?@hۜ 3:1w QPa M\*[s]2θL|lѠ_l쓌geC\JW(gy:GWS@/X|gLܠ~*!F80憝.mqA*zJ({IdH—e_,jC heV8}zޱd63GyՙH2xь6If 6Zp+n".3"k LGyn~$2bft{^DB70+"x9 ^lՔĬ&Kչ}q$I/~d05}BkYRaxS=CcGc,A/MB1Ij^ڤ/W:0NgxDIgifn*avt4%~*|v:896*ǎ(IG*I_N@\鳕i vҭ#֢j~ L xV)GJ|jiNlhds[i}f^W $YC7b݅h:5ȹK3I<ѕ'}NP~2ʓ|*t8B7 øtW8eVTg~F}]^n?3Bi "NyFA顂AWERPY@O$1%]PBie,GzZlI oyVWi=^}A3?]|0ȸ+ ;=d;jx۾D͌'r5s;; Hd0P|}+%z@!!7f"-Zut~LXJև$ l-i\p/y41J2xHPӚpƲ$\҃GL/89i2ҧzlBK9+˅ZDe}v@ HFX^DTGcAUڡ!尓ѱnA}V bMy0@>lj;YbeKM4L$ t<=18dL@ })*tS_zNY;=X!{L]$l;zUHqԷ~ry{]1JVV%FcR\ 9R}ő둱hlcImh4O!Q*'۠"OTZȽU/"y) ㍃FMu~OZ7c!b"?-lGwc{R]Hfsahoa¦P}5A~8'0˕?L4+B7MFaom@INu 5:~5Wa<`?l2waGXeEt*_/۩hhp:ͿzZ8{l-s,:Rk: t泙/j돚s.xw̋1ʪhL7WP}ՎkB1etgO ,jKaŲB[Hy~~ؚ?zD *=5cFv4dd>\&I>#Uh4j-ٮ BGbیIa؛, c[d/AQx|L5'|sIH1Aݤծ| ?Uj!oAKY nAT/`ݺ(~p^$ܚk+q%"c*r#k/ Nt+XM!xl65 3t )nHHTn nuiXig}5AJ/hKDUU\ΫJZn+{سN$it9/YAi`:4:6j`dRfpRb%0kq7)1ת'U ٷ 9=FZj򇃃6 0XcYKBS'`GL蜴xN=Iҵ qۗ9&hɼʼh~]@4xShWz$FDTs|'G\(vq~YA`zv,dm;@!fÿR1> d{ތvCgOOIIƫq"Ib* vCя]T+( MWQ Z6&/!iP󇷠PME<|JL|ԄKήP1շY(/-2CQƤ?Q+Gob JGOZTgh(C5`Z;OK:Fqbeph:$ٺdz^G1 W)}b ,"﷝i Sl 弼Q(>йSYKg3ݺbcz"7p} C_ D^E! +awqe y6P-ӹ( Da0QDc imsCJK/T)_қ |oaPWݕ n J2zI!Qݗ %FSD([W,QL2d-J-p& )s-qImX6Y a;u#{/`g2mNJ,Zd>qAvb/@?;8tƜD{V0Jlg罌"4:Tۀ].26w^N%U1~sJp Sq,Fpp 3>Av.e@p{2QڎPb ] VC -&p۝̿:9x乁1WZn'F]tWnQBrB9ZIM(W-Ol͊v/92[mq`QDAA;<<PӥfxJyj>qc[p6W*@ /c?Hd>]mt [-$djE+% f'ט!%xTsI)"b[G9_J.xn^6T]C3 o@TBŽ) KO÷rKkJM]&fs->:wEeqpEyi7",jW9Bk!(伎.sBaK2Zk틔l!wV{8Lwio%$3e$9D0||疑KؙV qr#F5#vjW6}$r$:0DLhؔC^%^rgj9}PQˁBЯLE{f_9M;Evi#؉dJJ^eJg;eӊne+f]rzUs.No1vO#awS~tJT";G:P!HB rBn-LuܶoFխpn 3w4H|}jSV8QJR'bϲLavWh׳lN1xƂ.8BFG?z仫Yȓ[Ul $qdzPOU,R[nsėaHg5]H8OVSA-Y^ DTa59Vup(nbyPjǜ|6M.=j*˫J;(*>$A2_4 la7(j ԑi >: %;5j/'dhlP3bKX`Eivt)n_^C|RĄsg( g,BXs~U>PR5w>G F쾆 ĝY|}=V&VpN_^d~Iț_3닚kЄx\0,%%p,6\ wn@(0 s~2 Z?a^gLJ1F.^b}ݲ;3fmmcIi5ϝcXH͔yתlǏlhE9߇Zx)g!D3$Oc]ܒ(:j:kQ0+.XS*J ܈eTQkRVi⻖M'Ӈ\[Kd5YU$#XJcO ^֮|~CP[DN@Ҥ6 {a 1ISOvʩ 1GqYD<+Ha=ڏ4pt;I-MP5+{F^cpԥmT?[3YyF>7HrGCm_-kȖNF1Ww{_tWҸS'`%[}xЍXltz _ %[hUcq98no,ZKډs#Oaw`\Xz[PN9 ѝJDS5aS(% mO.aa"7yzbZ%J,j ]]8v3 znFşTS`* vZ>ol"0͇IRHtS ?vU& djT.~L1yqD"TdXrQfu{C)}jJw6ht(TEk?Ww3lA""ty݀5P/2+^ܾ';,#s@J/x$ra}קYPteGZ6Ҏ[m?n9f57Ǒ0Te0~XwOЃW#ӏ+w(ZFOW)K,FBB)74Z }>_<|Ct]7`UJo}jb\(\|gOb R?2pr>|:Lu m.?TQcjA@}-|&'BP/`e~z . fje(X ]5$mrbϏ&g u>YGEj3TDЃ&N8cZK`ղVa?~Ёv(9b "{" ( $KG(fnR$V3I$LQ6lG ^ Pd=IS/Sux(;,:@c9_5)'4[SUz$LYKW۝q^5V1}_$1!!1zD=܅s)vi1 S6en$8^Kɨ3*iM8u+E@fYp߫k'(b6JfS4-c`eƱv-?OV>uUiAúZ$#;R犹jƥ@SSL{ZeWe1bMy}_2:ܻE`GU; H'/ Gӹ.hltjb~F,MO0 u 6KB :tknĘ*ۯ$O_u&B+zs҆P!jDKtw@AwV95{V߶0MZHSLPz'nU5-E=*D|(+Tkrx#K]h# r%%XټpuѰvrU}4~WLWOGA䶆fqZ琖q_+~64lPvx:GH²fjH j|>E4QgHdh{ 9}T}X -Qa%+T:qCANFj뽙_۪K E61ܑ]ƞg{|T!уdQ7L@ x.( ۇC%OȝN_~G¤sf Zp1jJvXo"dfhL\yZPHhaӨK|zuv% ș =R#l ߨգ% ;]k]CMy1F=]qEH=PBxF Q0%[!TejV"9 3O{WUFtxwN 6g OB3\3Iue{O9k.6DT.Co{]Bs?@0l2EaZ @1[~ʪn/ % ŐHaی3ƪ*AWHQFjL)0 9r$ƆuD2ScV+FBG_ 65)|NbW - ,ev;'oFD'jS@^F?>ywK(kYD? M't!* :0P{myh /7:6sHKaR>17g&Y'~BSP%!*K{ og"s"W[Q},)FI=o1ƔFE1fѭt8RM^*vWU?eG3<+ltW=WOHW*hE6Ap^7|4н90.K|,vkGYsT2gЋc0'k9Bqd , 9L^J2H-Wj;@yy W4+6GHזZ_!q;#$ܘ\?n[bb<"_W+'C Զ')QN>Ԣ^,IVH[FSl@}*GD5VT f'rɜjsilF g@~Njp۵Ud)YK{Qѷ'QNrN-/ 0NJxPtf7$VS&6˦d(zf~,ݷPn0G+9F&ds@>wt |"$)#W.5+?5T0r8C;P4.kojg幨D;^R-De[(ݵxt7ʢCK^ F%}\^XD^X˕ěXZ>Ȱ'2" %"g4h0` {8!v=Hd ;KN/~ AbTIJylgl sԪcj3=5K銦ةY};L8vW@?g܏W@M0! LȂ-zeITGi+njvGQYltX姙rm'  J$1f(TO'GpFyN걣)ʷl2oxg)]>JNeq)9Z'^(_q/Ⳓԟ}{~c9nDbVl=U;0\ g E>5&"9Ī *lXГ\D4cv +F͘w#-@\gVӶJG?"ILz?6v8GTji-Q겈knNa @f盤A1H*1"U胎2_t Q`G9SwRKq\V]*qi$[ kԴ0Z*y 1{Wm}x ՎA\}A',/TڷrMhA7Jq9z$0',F==x(T \-c.>~k"଴#Gք*V$y&4ArTIF X,1@|SǥNaҫ*kv!B*H[aUOi atږ qal;3UHDXJȷ |5S[ĕP QJk- S" yƞŠQ1wͻfFHV8)f*֥p<+8 TY EY4#D e*PIL xr],>I+=lM\JFnf[ܳlhz u";\Z4f"_`zV׭RGWWTS2;Z]V ѲCS6kyCXYkXIlp#LfRq|*oala?$IW*9^t+aPvꬵၱ|:-Li:%Mh拝ޥR&þKP-kOta*2Rh}-1bwX|֐^a#ſ|xc<(\NJg0ME"MCcVlᮐtSfftxybΕ0qO0Fv ψ.25<>eWR:AlS~MHك1e+E(EԌĠ7!WJ ceU~~~lElkw\J'DP,3fBftVޝ|ŧq@q.-{2[7#15= mM^gb. ݽd٠A&N~rƫ\M4ΰ"cI`u8 &iͼeT6t|/7BF{z.٭ s%\۬`å-EjuYͬoA4Ā:<"Iw;R\)܁šT뜋<ߞapGjՍ|D!KFh= Ob4~SK$4+Dn`&Bwa3dȽW+3c`ȈZZӶ>킁1M)~m&ltdaYQkPa}&Ioˆq@RIY3g&`%XN1w"0vn#'z)+i,hޥYi6_}s.PV]xY]Ѯq4;se͐f0U/źlMvԵEJ"Ć&y5@U iK0օ&Kk ?kAIK݄e\軱44D,3^g D&q5:o'}6E>qf;6~s YfץBKgC@GbA3Woe_cy,mB8c2=%Jh UBW :=b?aKB|9H2V,gag `6ǹm uJJ|_צ;Y$ˋ&]ĥbn b!&}ZVNϏ`Qє W EoZͻ5}D΀eBm;_*+sx+noٱq߻l~{=sn-)W_wYwq@HYu*/gGl.I=p_NKN_Uʰpv ˭؜gcqgF؊s՞ODb0ӌp< 56<+^h2NA R{T811--fyc7H*"2dֻ |@Xvm8++G/\*kw1,-.{{iikVz3T5sZ4jkJBYK8-xoO2 "7?UCh*@+ 5)쬔8zVu ɻ2$?!/^PmtCDP$Iw1Vtu㋻\fA+¦@ttҫ U*RN@T3 BmKL/8Ү"-ٝKiw.ɜ7~1Z L;4drl>'G_ѹ"qAe8'z=o[QJh~%ү-Bˣ:@*O)o7 :٫})e=J,j|[.A2%ƣZF8YoxY٣feL`t{͹ 5%J}V1ˆa&V}d@> zh2$zKgwi穪zjH9 씥5`֗$^5/:%j53 QRΌ0yRä,G9%Ioj_R6\2N<{U3ЈPzpcdOGŖr Q_x 0T|;uxYFH TI=kb}o;4)+&TeBndVVjL~}e-脮Mv$[AF׎6\}̦fER;QFCJ?GҞآ皢kyI$D5"!m7-$6 n"(M~K5@صXBTd[,* ;V).W,2:zL21OXwtUhvUMƚ vsp=(n2vb2t@Dhű\n ;|Rg5!m)oa07K7~[ GFmq?)O/#  ̛&sbD m?j0XJ_=wrWQl7aPUa(Wؤ,9JWnrk.S0HqRkRvSas`Kg!PEJ\/ 娈{{Sziƌ혾eðg5PUs$#q?uW_czE('ҬsM#da) V9zҽgpc 9B@ %K]D,Ed6(fxB0pQR9Ix;gwo[E| b= bTvw?88)AꎷZ<̓bzR\79帲pČwRF:agz(0X I| ;)Qw`{( )0€߯d]n{)7n.9~CVwnV'H.cr̈́gxO?Hi#WWFspD6z}&&lyc1 ZXMvx=  4WFo6Zr5yzZ!1ψBMKxEm5&w(dOgoͶ SK Xy_gf4`vI慳_`H+Y6=*sKV#vkbDm^Tmw/KQ͉{vsH<-csu*8m'AJA2YPu`[/j*YSe~"{`xz }>)Ra`CH~kɗ@ٳ; ^ Gm׻+#7iiH4@;sCf'ث6a(Oz*־w)sTi/ڒ8^')t̏CzIB%,kkb<.6.wOGEА֬VPVQ;_6J&Xl@d)/{m[ȸ(x C>pj3uO!i@Fl߅Տ{qIo<5J/+fLNu]jDq+:4h#H,kSś5 6>9!U[fA y>XXgl>5vOvԧ=gxZOfdtm.窕{@Y\ -ME}–R*v@VdGEoQ|utM:Su_6|-Ñ܊K<']zʹ6&\oWF=l(Bнn.~4 Jt~pDN^6 yz@U@TC*8t@&ۯb7S!~PBl> fGoA*-}#ԧ[W.t&u]Ψ.>D |X:al`DŽ*"髼>[,E< j>OAf5!_'cϲ.έ&<@ka0[ sŠ.+KN@KfRbġ2ta8eKƱl_)+[NI?eB:LL;T$sŸ͘07 iKĸr$v˧9VyO~bV\")C-qzL 6})O:*(E΢s sR u`Xm#҄:$\Ї2: g¨@9+Pp cUC^`S[lMAXi&%`h 륤S D/.j6 |G ,ܷs cLϖ)1%~:R[?D3lGվdeN4Jn-Q''SV*?{43s=l!QΫd 24glMФn콄POE}Yph#fo-Pʺ@#,# ht6%Fş%k^ls>["/il|N(߯6lC.VU+ts- %*M0GrFzCKR:ch_58ao"Xw~ "L^-#Ba'L_ woMˠOcM MkV=FΌ0RY]P>M$pɹC`1'\8N)Ih4T"Ő̪f$NIH'Cs lb >IFr+~qHx3qs~o 2mݺi 'T* 40`m\V>-}RO+\#h ŅzP'CۑGVCLG]ՓL3?׽Q+P5=ev7lӄpWf>h[&b"$sHqn2:4SY2LJ]ū=<„{uVND~kfRX?z\)阮䟽5>u FB#i r5 ʅHinQ*+@U(۴ɮ֪TxU'Df_bsۙXE%4pW o2o]wq8W5g2StJY{ϋUv&U_P:ނ${ůwIиqElΗp C֝qlfE)>CO5`M4kaG xZUcYl Uf]a÷8_y#uWm9pcW@pH͗j ~. 1JZaXۣ7~x Eٶi]5R 4Y P& 4rE_;i^a{(o"vLҁn lj\,$ 8+Y^'e] V_Pk5Ĥ(IuG|!PˌxF8˕-5msu p _) κx ~rլH3&GCD >INI^B-vߗDV+";Q;Ll!˧Ժbo^Kd+oUx k AoR P x aRk.fd|g^pր sОi220:Cm'knOک8el7~ܩĺp0m:O{]0hȀU JyFyr d,8'Z*(!%w2TnyYD4}Yd>{.?>8ε[/WtEBNsJra}ݐqg*[n'Y:\Pp*UBȓHNt:i~`FIda<}N Dq?v @콭oyYUgL$;7nIyjۮA[QBBDGiw1[Ӓ[e9.&0BԻo+O@%{2Z$.Y1*qxC£eDi1DOP>xL}-33V}E }ƋQ&gQ E23S]#8gh&%>'$gHXN v aɻ_hlml9JQZ*whĜ[gc[%/=Ч{=':̨ ώEvLǞVbs.Ψ'򺭍/&TS,m-P]bi6) tQ|堨gPy3)@Qeq +2s58R[.a7xdP_x,ԖlQ\t8 sUuhuw"chހ[J l>L+{״EU]_N<<.!QT~"9%p=D=~R{unj]ęzxR^ƨ,nvLɐ7Y-iʛFߌdTk2uvA&5U|jn^SH$;FH&//TmZit֬gxYH~B.ϼ\0Eрt(_ |?8OPr ьmbY@lq5HFwiҏT`}Fm܍شd Brj8v ,}(\=9}aau16|<{@zX1k?P #0}#i؈ ]T QJ ( ")_-LlU3F{K;v$ (q8҇WU  pC`t{)rUB̩_9ksT;&1,X;"-pӥ},4 LÖN1g.۩ߍs[2Q0L卵ox_yxXJ#H$>/@Dg+qNNd` x͉fsРCb,gA0/ ɕ Aga4r,HJ %Mnlƽ7eĘl<Aـ&sRMT^AT^NQFd:<=emA}cX3bƶ < !] dlrC~ ˧P_X ˑ#k@+tjQazO,J= lD,;`g+6:H\:7eCz_>QVZptBQ_}TA^T l+RF١% ؘCQ1\FCw[2Ya$!_;̧d{7*/ZӸ  iD40J ivV1˻ dl|q LڿZωW4v~%PH+R h$0T(VxФw"ɹ]JV+*fNJZeW7".K!]x\b@ސ7#_GA"tl*HkGW&퇛dlCuEOi)̡]U}Y"'. _OB Djr S9lHGb! [7խJ5x^\G5g?'fHI'7YkUnuSbM"l<})ٔkp_V񍒧1,G.:|:7iuἏ݇]iw 6gaz2ßWyg귾  _ J'0OьfQ;/6^*`צ<貚'rΪPlĖ<൪r=@ ;ofDrS'_M1\4{ޠ a 1z t@s}tJlz %tI,e gx0޵80NKZC92#/r+=mgA{|HLr[t~wNW{n 47\4OJ_#o;PĒql 79+ ?ﰴCTbbN6]L\5֘_;\Xx-ﴽ]7U+Z#yϞC55jiVd2k9$>D9\H[U;ywڎ/b s横+k[ M(JT̹ 7u [SRcy R#)0s{@HA!$so2$ɿ>)Rk}{4|K_6WG${Egmof{*s삹K^{T^EO%b'U0NӓoWNR1+qF:}7!%{+gؑ6pU\](}a~xSرY[C.'V=3)#:M_zgE^k>g`#-e9W q<|$'R~E\fڕS,vrC_x.7Joa'Xz5!Un}(3 YyfX؄'_c t²B|4ăЧ"q%ʸ6 <${!GaBN*._|RKM,6UK M&O}Ka4R1Ol>ӿtHN/ACX,:$VESBN|qR`7E\YQȡhȤeueF1e *ȫYz+ЪoN-~D>|:]c@Uj]SKDhk{bM Z\Zi@Fh8%"a >~CD xwMTA)f#"m$ȭQeJOh5 SݱQ- NRjr 8<`)T5ueZm7®!p E<$$v~)g{Wt5|$GU#b*oS!]Ў5M@ؿ`Vtb7b\&/!\}kpNk| ? k#.ǘZ@6j5TƉB~/|uID_2YIpL^:8o-M`~d@ .k3EUzAACǜ( }.daAOF{n1 Nx9j]yP5wfݧ#ccl-/D@`ھѲrvA-M2!QغHހlOx#B9V-V)mhx%GTCKuw)eql5 5,}#kD_%}ӃCvt}tT9sz:͒Z8dKP9zwldKγAskHQ3G,5TwwEUygEZcA>$g[E? Qȓ_ HF }Q.g===xecG?Ng+6%@"->E i_i,!J(T䪗Qf<"1 MY})=6H Z, ;1t'isQSlJBm~tCs{`AKLɪ0Φ-VlwjAJqC L 8ˡ^C}N'i` 3dd* ^!ϑxݜ_1eήqtp'~s`LFڝHb ۱p}F|u~}#(vhAɱSp^h\+ PKf|]X=fibȟl- $PvwBьA[na: g0Ar䚱5JrdA<0Kcqr?xroʓ28'4v담Q6Sb #֘ʮI2Ij(hGժ4WLQ&l fgӦ@OJI> /4tr7qdepg dH8Nw\hՒD=ےH2a,N,"Fu򟅷)6bJPJ2$5&!]PqL( !rQ! ,-lʢPƅ?O>JnZw 2Jf$ěY I/Eiasu8Pa(¦à 1TB"K (8ۧ: C b qv?羇#t`Z#8+9Dypzbd1x8Wt U őKY*Y]ѤShWn֖CO>d==QTݚ=KR=U̾"3򝝰an g:@Je~[͐М[&xڙK‹6vD&|:͢W]ϋo}uÚ闹Uo*M& ;V+>{ujH{6 S~JecK~`yaq?[vMǵ9‚82Qγׇˡ`w&VzZNHЇkGqXmQC 6`,!R ,oC~.AoBrL1civ}Jmx~,m'Gr׋z%VB4r}m5SF*~xi8'jRH1N3i_ݺ4@^#Lw9InIyTqWաZ68.M*35Efkjs Ftq)]j<.!Vwy aI(m ̓ED4)且Z fEL -P{V^vP ӷK9,([_K'l,Glw  ubM}|S#bɂfKk4.nHԬUVs{h˥v ?BLCM"uHqf@nV1a>L kZ<H-ٱ ZdAOAfB!3(S7IeQG+4׆ ^/v2/-4/r-8`76y_C#sRbyvǻy $GuO~^:}o*/YsaGeK̠-5 h*6sl][h 80M[T&"YC@Pt.+ ÿ0n /f@ZK25Mt?=FOOٝLj }]^KJ5a@kS Nc/WKgQKV{?T*K4,a߈Ohh =#7>, i/$cd"EvFU%'etɾR#|D9r EC-i%URZ)b OnMюd7R=ATq:M'L^fآUN~gq2Nl*`O+,XqPִ޶6*UiMw8v$B)4&|]|Y89}dݧ{rw =yQp9MfiY/Ii{lxo[wVyU:!/ط΃RP+THY͢ qh#*q߾.B.G=x/HySq*"[Iu| ~|qY9v \=l>F&KBꄛn͟6 n"J c yP"wP{y8\_Vս],\]Eˠ<,V6k,/$`[\>c/x#]I֟Sgй{N1:)ebq91!Te(nxRthn8 JSNhWЌsܪȺ9OM@_nMV.@Yt񯷣yyXKhxL)cvk?rѸ+]M™ 1d8/~9`Gk)_ZεdT̒uOs&Otԝo$uG pr枱  nQ0a̐!o ?#,<99q:ӊ h%kV^3zgࢂmbkf3-2RPsʢnQVNkPQ-yF71[xB|jHl M -R IQ [3mvT,SH+`X5 KۓW*ssowz{qF匏I m!I#q[|LTŦtOIUclj # $% R"҅mc ޞ1:eli!vlmPO]4AMI`/><b/"R J$SaAV;iֶ絲s.Xko ̥^~e>e7O 4ϗLD09Zs.& S-aHuH r%WPqKV Fc ƻWyNi`f\b  `p :nWR.AAagg}[նdRag8o i(@X-^2=~~0.)W @b춴{ X`PawsJ΋&6qW+QSva^Nt-wk{9VH[ 9 4]0ez[ ;#}N!x^|όMɣ_85 TZEJ 8.؏Aʔ:J+%)0LO_Z3Gcdaӂ$0ٱwΩ09{7<`?@~? 9vdn>ԠF R㕉FZ@r% #{+,栂U䄣8$!`'/a\lji_{n=h;!zY]wSNXR{,L3n%/ ưhW"UT{"[:kʓ2̻? +țCpH|hEtS"W"?ိgȝ7eکI^m,?Yt4BS̻nLy9|'^"%V'G 0& 2^짴5F&`2fz6505X:r瞧HW4m˙.pf5E*zTڡeᖺfÉd9 ٯxyU [FbJ4 ,iǗ㋍I&q:7E=ڈ+r0پv7SL%HL2Epź_)*@ ;!W&?=eHrT~\BKv+z?U rĸsRi\~U hݸJ:.F3f-Uy|@}^>*ka"l&}C#?F6:eϠ¾2~g##+zI~`gw?<Ԩ@ȫ=j~Ll@ԇH]%OffhW]&|h>X $h5ɥy0J…51G!!UOVypʼn\r6-|:^J@$wMYߟL!cs.UpkBb^YƕU y}$wS; VҴ(" |+1?z-~XHBF졈KcWYˑ9\.yYtݼfyQx2zi`mp! C[g9Ur,8rQT?7Pr0)',v?Dt3Ņ tr'`X ;)i_O$T* &IO0(#Ӎ4 U<hJ3<]^!ΏPD)JeCtH?KHH">GK d؛2Ta,$ɖ<W)[}Tґ/tzl IY=D,Jțě{GA#uRXKx|$ϚsfKaʽ,kwgb<ݢ?*6%ɽp SQ=QUwbV6\ũ6KVńoPGT}Al6.!i}<»,c[4ʩX)&*]dX)vV}J]Sb" L;c+tO3$R$Q4C9QŔi!R3Y1v"]bzv$R>wCyгʌo  q%K<'ٖjjN"Lʴ')ovI#7e<Ήԫ5%eӤu y qpUtnrW1AWZrHg 1u*! Z(Wvu'+EK:G{S1#'m n)>۽浵 L0=wdž᪼62r/אYE=\jg`'"1v%| o">R$<WQ2L|36Lq : \m).BqaAFuJYtn_斵Ap|h~?-V aiy tjh9$_xPS}.d}-FLcyig|JXGlR*(bTP5@VqP6|RFh[:ߡ{s` 4Glq=] p`˨%BdS.u{?. YU8Mց~t6#t71SU/cy?nw[vUwEOk}%FOăޗT}YԿW#a5rj k |$?};UO2¢̊z%G[AvX`%.ޒ l8Goi(’JR\OAVm7I˞xMA7btCx"@;ˮ˦$cB pXY\6wsF*rl',N~[v#$ rD ު7[r g{Y' 0wת bq|f%:ASs,sb2϶ W5 CxNGI*LAhEtiA ,^cw\LjedT9w-}˄;{%΃KT0:d;5+}Jw\4B7j"Wd;ruCVwJ Rt_zóZId°0-9clr굪{ W^>M};j|3=bK ttv yd |j.] T(%xҡƝh9bZDEWd>nuA xQ9(ΟbZ+hiwy.brC)~at(S"ӾcsQ" v4:~A1SaMeMՖtR-7SUq:n8`+7 :NSصy]Mr)LJG0`!3Ѳ:&Vݗj>}9U2?k"cr>䀡Pl"yL ] qyg7j7t0)\#$]C6*OBŵF!R@#v͡~# Eva3fIZ(B{;Mى 1o*^KRR6s{d)/)uʘGH&pEƞ(cI^z8hE#$;I2 UASHM),cvr=&'1#]: r[ XvεO"'821i;HyF虯q{ ՙmb+ab6Ƹ1g@qTE2(.7+dZ;l&)+(hfR=b>PcfN2T?8FMheާJ82%"фGaB msPl\(7\bxU1%(=!l!"8zKxns <7<몲n?bU0LKq?Um?y>~ܖ$mHz"J<KFt$$H,;S-/Fkؾ9k =C3]gfmAw_~zW/\J O*g^z&%(-n3Hxp2,PCɯf@eN?Td)r9M]uVz{8Qi' _2 @ʦuqy4]j/jŲt,W zHh\/?{XFJ'I,̛|{$@mvk~jIwMz,'qv/')ԡ,.FݺpFvqi}ezNYY>ANpdB10J*-wJH Tﳲ >kFHS$6c0G2͂4c iCw}迨_Qus3BۨD]Jٿv ~ws<:p/|*Ԙ@(mI*'Q`^. yv|OŰPXO$[SpV~ue[2= ooN)(dDzT㓗ךQ6\̬a$`;Of%7([+-%.T*!=%\Xy*n5q/\1-,G7hAmQ~bXƥdO^rnc9Y y$x!n U M3Jڧ4*^i;0괪 پÆ=֜Ag7H&C~z7xtN1|3°sWnx"Þ*\"g Fsl̲:_w}T3ϐ۠9l"` o s9YN 0K{W_N\Vh1~/A(O~\<&1 P2qYJ~ar DWV[9\at ah,폖}pӞXaBWT{OqRfC 4nuy5k\do M@\oa4/_pVN9-,lP謵hߋqfɜMZMG]F9;ޣbLV(AG+ۅPW?g׼!<[CЯKr֟a;kxm:~Ǔ o] GӅe=u.WSqxL{MUsWʋXgU)6 ۥ<~"[c,~ }ha.5bnRxzx8գ< vH'BCgiq:K]!wdl"g2/w]d 7_%ڙ;czړH*h5$IEc- hP SgHI]Vn0KKbʭqbB-}#{8x#yG}Эwܸ0t-qԔhr⇼Z8n Op^' D1~b%Z9eW{ؖtTMbSA_S]xW}K Ȋ_jP21\Ȓqe]/\xbY|I%$(2=FMMGҫq6Xn8,X 7/!0 xc1-[DH*jV18R#,LbPaVz]$DXP9(ʒ⍜JYWN1j{!7E$r q2H j{r0wkYpy]?郅Dz Eٌ0dae*/wT)ZlJh 5#1{d.Z9ܧd~A`ZTە+ GEnF$#MEPl |Zhnsq[E!N96^qID@|ĉ{mّB>ϪX|B7c<_ڽT!.dD6vr`+vE Б5J! 43.kdMwBLΉd kpS︸xR=hl>B{;Srhڒ\KټMMz&E?$XAP5r؍'FyC5lqHLԵ "0|x2Aj>j Zmf2r)e!U[褡 $'7n,{9?R3R"(1%Jv|M`*blMmY$B> |n +öYm!rX,cJX.\vg|JV3)Liȟ7.{–1=Tbc7\G$uK;Oݿm. ?VޛCM#*]AXLMXƗ ;rH?8>;23f*,άa=oqS0P DTRJv!k}Ny)w[cMz:1I1M}j˂-f"|[޶<e5 Dy3\!f/6TEBi'))M X~_UN7՞dL{ցFMSI崵{ ;/!CJh(9&%쀫UŒվf7{Vvz쳻y080ᄄ̽!kƩJ-JUalEZbg4;>R h>=Ct6Zx$}4PI+\]zMH\/G}4C=múKmu.kȮ#$ǂ?oR/m;)@=̽šLQ|4C^)%+F&|r M؀a j w Ũ4._TP0Q;'y9Hu_u6x!V@6g˕vfGGN9SPK1V̱p9w-Dl OTljxzLp\Qy81pFOO{Ta$E=T+ F6C_--2z[Yklh"rZk]z*&/#0dT1YώJ_ .҉Ls/H2mR\CxzP= k%C N NZRpa#/9K[g53  x|X# M5ڔ[JYY)8pëHJׂkBWRFP`f~X6 Sl;737lY~ >vR`FӔݧHBazN `cP|3v5W"PiDBXY./!}_6-so`GX-XjD R3ߟ[, ;;ӝ̷rcVoY$bLܕD{ _+.'O"C2&z;9* g SAE=VjkǨ!n[Bb\ƒ?pް(%1˅f _W#a" cZo<ZGp2 ;}\0WH;KO4gRpzt %|9r?Yy$|iPɉb.hBzxI0њew-%1N9:BvňcJ( S# IR} uʜx3u9 kb]eUS*yp HFyɤ93 ȹbiHƘm6yD_ZI6ن8w/-a`ܺbXkhm'@ciT[Gc[ol 5I8*KXDŽ0<VP8ƖNFZߤz4VG0R_ܨis$ M,$q $fiԞr%jϼ#Vk|Cl| }9 f㜪g[r?6 EXkMi-}ԥltBpŲZٛB&M\ɉS@aa=Ꜿ(fȉ w5®Jcv7ěqXԵ<&W`RTWQ[ dEzO&ٍU;*ZUMThYn=RV mW:wΆSbrS>#IRŴi۳1dfXC('-g1wr~ꠀ\YpB;&*E‡TߧcR*ɦԺmŻ~1tY D8u=C$JݼzŸ{d+hc=uN}PL.*O ~ȨAx'Scg"4L 8}51;U2z@sᯘvkHUx)_~st2tN ]4Qѳ).1SEB)-$SFJkh^x) {I1LAglE?(F9EV7xmh}:wyv%st %i>j QH29|QkbpQ;C )8RHA)w?qGh\k͵+㼬v5b9Llៅ*XU2))Qn y8a0 #P[C#G/71u 6-&%.|,܉嶂99iMH`A rJ-n #{Mxv)l̀&\.| k¡"Qu6Ƀx(Phn$g^|Q%}.-D Ct8,|.9ϙCj?x7,n54W_ax͍K8 . &`*gRmCm@`r99c,60YZ舥LR)8cpSI9uY'OX[GȨ{ڷ?56U\hzMuLP HW`$,# I0iPeQH;'dByfx]>_zZ[L$n""3n-U P׺FTKXٝa&vbbCM'PjtP.;F!\齏'it.^ t-= Tt/JC K 0'[W̸qĘ!RsZ6fת(c `bBw#~+QE-n(tk zA1֌4ug*)s;b2̥(zhHLC1 Mz!H 4Vuz g8@5\Pc^|!22p{uX_{w.KQ{9 0Qӷ a uj l_ʙh:7ݷ6v{pfStDžjSԡw$OWkB4to5QODy1wkֵk*T)Zd1?$<),;IڹLT|#p81/l}j=zќR/VhStԨ O4֓ !cv-y5?Njs+~󶥤-訽VPya؇ fzGNZ^ ؚVsTt18їhCbҲ 98<Axcqm W6}>%0Uiq;!Sg ,rުmvRc{0VUaK. YuZۈA|@R$"q_S_g4cmvpqKq=DE匀Qo,z?_4SDŽޤsٸt ;^eښA!3H^氟^kր0/c/) C ل93Вf+FBIlDLmCeɻEL'm@/gW "vjn\?؂L\`]X$+|Á 斿r0|cVeZ%!3ά-KKͳ¥VdMgd/is[a:}Y/ioW9Eј5uv"pw=^Rs{kLs0cO<W56P ~Qfr[SBѨZ e9ۤz/Ce7,rPuqRwCA4xqw&76kA'@770 b}(,+p⾜5>3 -%@GGѷƉ|v2mqȨ}~#3p@0GBCN@"ψ罿]xw*O&M[Gza>ZEwMvX/zfB"+^='D{msr8L{޼fl{2/ɒMy%0&:AYC=n4b1&|0E[ĈRX5L8x`5JL?lf:Ǵ&rr}VIϮoâHULYpL R*3XiC{>{F`]9{BzOPdz&/hgGHIw?:2 K/ټm[g6Qy7gᴥ>sn]:vn d p"U2٘76dKULjn6ޮd* bX տg0w`mHߊ^~wF=),9:#FQz3cyM&7Ry-쀰t:,z+À$VЛ:O<!!K"x`GŸuHaW3N$JO;SǏel ; EXQkCHPph_Eom]Xn9c&h߂ y;CxdSAߞz giZC@X|>& V}L#b6APkOiDGQs'䕌 VmN*Ъ_ZT7!˯JԾQAX$x:PtX[$ٜ`Eaګ3RȌY<þynPZh? QGFv k_^H65p׊M&&](֞ڔ{R;Ui:BTB#,3>L^25BEMeśyʃf#eVUZkwߗ?'"}ɞdDsOs:l/$1ֲJ{HΉI0҆tTXy_;{;f2_5 0r/O2U,9P55jD=,6ĒQr(0w@؍sĎVbs:uRxgqQ2Y_F6):1ln ʶidjy٭R7+,vg\A)G eЇ̌fTKJUx)LLli:ˉ}mqɣM@ǵbV7ןY65FYHF¼$/M_a_? /TK0·m_9aFA;%YX@O_VL+tîjR:y(m?h?>zr!՜qNg,')5cKQ <`§g niyji$L*j٤1X_=:S)%{hR9BE"WۉܧԈN24Xd\!7=П@#(~( ʑ Ay $I1:B=mXi/pѨX" Z:])k@19HhY,j[S hϨED]BtNWQ?@64!)6ovI@C&i2⏦0*x/Ey5OG4:\xSO'd-AGuN$쪆9l!?~ta=ƃajE)g>L6X?&-dg$̼L; Lvwro%U!~„u?0B ߶5C0݅]K=keƩqzU~z#Q:/cavJq\w% vd-($ⱟ",lw+2+ #8Uڋ5bcWaRzd$:- ?yhh~Vs;Rx>v 9 Nξ=chS[6VOZ/jBLܷ_,0,Y2rc]"=PtC5A-(?rZ~$p)ХN77H6eO znSnO"AR$R\ {{^+$=1v)W9l6xojL✾ij^J`ZFJ55%Ε}:2A'ܫ=3S%+]bB&ztYu>p@"3Ӽ`8 ~R $=͛KlBuUde-/+D.fjC9_ ?O;Am/l ӪZP@?<9 , I/gvhhN⧡&ݠ u AEǪSR:Φt,i>PzedkĀ/1n]ECCW$M8Z0GHO=3?Ct K~ yƣ 6$asV7UMY3X_[׭[6OXtj3âOLh/+Fx$5eaf~)=,'TpED6 t7|U E5Tm"kX P-jE7ڛA&EZ@ Fİ[sb*#r'Տ@=l!ٓFBK^'_SGi+*phC/RpRBYE▅F;jDlM"5 E+SQL۴&ڐNSmX6!-x6,ӟ^u~,ĸ^z0@ǬG+[oLUP@f'37Q o#. 釹ٴK92FU}RXy{&{ yRH~zͮPVIو_x5SP@.fgXgcjmAc(ށx1vi6uX1,PFIJUOLhm|Q%n;:{5[ 1za xb!԰U%.bTx_da9FS*j2-(Nqr# X#DU\) VHeiV/=E|ςh5+H5LׁUќM$6XOBe}Ϗ|U 2@/ г,8 YS&z*ִc m [Si#&Mh[n'%钣Ϋ zGd 8𗟎`iâ|!iZor,crVI$),Hֿҝ|,ЭB.W!ĈL hsZ7,ziBnN~!x?@8 Njj0'.`'ZE j(vjt*5Pb|^j\16)don8c {gԮicJJ+'Rm7JBj)pe %+XЏC~g>އYiX*(AJq\D|lI)@DL/eN pG. /xu_Jl"Xv]tjƩܕV>V)ޤ?uuJI-EM~ *[qQ6s1xh[!6kͪ('v].8Zɓv]bHN$;ei}-U=3sOQ8g S?>9|,4$&SNy(1 yF["أ)$Apv*) _f~*2%^SMu@=!9j1@BKq_RiEIH <㭖FY%YnݩR=g$N*sNJ>X^CIIW t3}%#i.:G u,@xZpMvQgX@I؈_iUyX]rN#L)롒'B,Af6ۓL2xvL{v)X"c{l~v e?oY?iDΗvΑ\㹲+N⃙ H|\V(N<-&PL= p~|q↝BGI`i5(U/0)8"Wkk,J,&1 ?4H]q(xܲ X|\TUo';o_Gw#wnKbCXRMdikwwEJg2D $zWH=j&y:}9 Etރ ާKۼ?֙X6N!e֢yY6}~XX3m N2(3VESLW!229U㲇҅(X/$[]9SemBzz}/J=3'4kojhl/V }_&jb_9I8Yiyr9^ ;k7@~7vFȈ ='!{Wh^7]\ OGBhE'V1<z Df0ysl=H1g{| u,"+Tr9j_Hkq*5Dh{e6А~fo{-i\т=7{rD> XWB< a4fh@k#k56g)x¨\9"+(\VפFo ,+_iG%L007)q~ {棓#]l'ȪpڌnIz0#ĹLүEMI+ocLErb01& ކZ+wYTkFD0UuYxk 5I1qRSƎDXخGa֬Џ.ôdG&0+@L+5Yn7+w̠%/D|]QJ%7$SS2с;O0wD_Z v%/L.| <[(ӤG$ߦ!txļ 39t2 =`,~/jfhEp L nmSJJqL㟻]v5AqLZk{sn5TpOj#dܭQ(D7B?XXİ Rg0(rH J@&䙬 PSQym7[%H^}>|uF7ixt/"㚌vF~+Xi-%s#bO^g,$* L F|h.ѽxx5O tkc׃v (!Pp'cHA.8QHh!iU-c1Xt:=Dw컓7 E2-=؊P Y3uj nG͙+(($M_+DZv{!i&'$bʀ $gWmos.PXz_N7XgcK7dPVㄥ= nySH؆Ⱦ#OUeyE7c1|3ң?-ߵz zzUzm?鬦j5pA3dk xx*C%>{&}H:DzZ7 ƺVfsiAXB{ugW©?`9=Gv Y%L,.(mP TX&i.ԖDG+GI"? ,Ϻ$]H!efl1v_yv[y37~LrL+Q}9P NbUE$.SƓ6k6 픥 ?hh7I{ǽ~s{DWGQ҄l5IqpJ,ZJ& kER|վ0NĄP D/6Fj ʰwK لt;;ȞT(=߄?zC^2#t y۪d#a?4Ŭ_ X~\dE)$XBȍg5%] "]E)ezp^5,|\0ZFAGl7$nHu@(XK*su{aa ޮw)ێV{C^xLI  $ώ죧oH[[gT%^v2U gv!p!@?t,~b Ĭ=5H a*dַ l̪2C/2ʀ<l&+zZɖ8Fa:$ꇘih6qOᛖWHyj1C3GU$Ё5T$5Z d]fuX=RU3-q/** 5 uz߹ vW%8v Yf_79x}T40^lzoaAN}xHvul.|5hKQ)̹.I͝3WY? yfd؆^^Q޴5Q!ӁѨ~l xQ0??t)?LǀM@JcBPddH7-VtfBϚkeᒐcbO+Oܴ ?cƊPkvB嗈!#)EL#kPH!y' ŝius\FGڧ'{.(9:`xph$w/>H5{{W bZbƹlԫ|r݉VAVN&KzR3d&7Ż=Qh[}ߏ; r~Ͼu@U8|}SrdϐRstEĵ^ɐ7Q,m5 Faܸ{Z lq<P~0v=3|&&[_,.UQi}EJ>nT:T(RNuP#(o>psU_C==YwSdn?tԋkI@}"!٢)gF֟b!{V'_7%ɹ"SJ~-cmg0$WcPS`o-k&`٪1$A .SDW}CGXPHV8 ct/*})έ1D d|]Ԋ*:WUkǷlAjbY\=#L+,=~Ov$!#EHdnDRpK)q}G?H;-yx j苮}M`_pNF#nFX0bۂ)jUլ h H93r_w'2k` yhU!/YdB-m9DhզbḤaG7b}󔧄"9eUAO, @KzZ>2՝BqT[Nux7]%WfQ6Dx Ik\|@U=4|4%cCHJ8 {zeB *`{^#:fӆ|\S f3T{\&)p ?c9ʖMOZ=SPW4>zIJ 9ՙd M{蓸.qFOq[QuYy `ɚgؗX連!ԂԳn B+15[pC$-FTi:Vx; @͵m fV0+[QW&`䒗O$|꟏#2{a)$줛D9SuʻZwԪw5wIw=ZJL׵l4ƪ`Z$SHTKy{x/_9CSqƳԈ￀Ƌ63c$C@>j8Tjte~6ek*ٳ1)kAxP2`O``՝O j |Ƅkz!끹-~%:@ EXMEv'SiO3 UPz GE$DhRv g?m̿Ϸ5  RT/Vv{=e֞Kϒ+^'5nFmÊVPI PVoA kDC?cXu$3=;Txߧ5FL_G@ƙ tdu7Fqd0@/eVif.trAm"Vv5=;&[D]~c {ؽUJT q] ] ۝U:'+6M$C/ 70ZBQ:|eOwnË߾6TJf@hhz-S}r^ͼ%B𠭑j+E*5By5yEcPnȭ$%V,_<|&Y_ޏ );瘐ȌNowqJb9w̴rc81g {ځ+8[OJeo췷@ d-+auDp&BMyJh>;3Dx5x"5nvc*ϦdIEruMxN\ݠ"`:W_SaյC+KU9SE񑓿S+'ր)=Lԕ:9҂ogc`alZ!X 0Tq!%X|ˏ9蛃`Ok#_ Юzܙߑ7`ȈaK'(5΂ḧ́RNZ*h/\6'I%44bBWY]ϭ;%12:Rh9wQhALxldcK;gK,"QȠnulټk_{CH+6 oPAqPx1Z^i a})Ep̲ώrةFp & ]g2LI̪T`zE*$;-hɕLDD}QdSQ$Q,vӇ N6s\sYN^WRa2f 6^d/$n|398|_MW~q^({% vW*bU$Žw_o pG[Cꤊ8^Y@‚4I2c쿽ϲRRBFӴCAzn\ Sf@"'=r/&R:Iհ`K-|~HXBrꕴZ~~k#5hdi ޗ>Al@Z~T۾*y|߇HS¾.l :)I+f#G#hy"C'!s%Hי\#}E=;Mdl;c *n{jjt٨۬EqUsй_paStL69Ճ3 7>n_r pm;BhKԐeDZYDiECgl0[(0ORzPL8yˇic\/ <{ݲ/ۛneq~xxlR#ao&@0dʜ}"ĵAc)^by#hj"6НB.+p[rE2oeȯ]>^xG }dWGu? PĎOUnzنCZە9vcʺjW ˈ=6J\d/X2R6h [ 8NBd^q=GZc-WX'C]=pO+N#L56 aUKI{r|L;>+#\;,![ܔ$ɷ qsOG*"ws:Z+V7fƗ5#/Zy"SS|2g&˃u~GJi "9џ BF$XMQVh١|¾$UUE߻S@倹LJ_򺃮 0(jv]A ¯J ˱ˡDIێ>$gX5L U#snrʍNHcG/ B}*!B$H`ZD%Amw`%Bץ8gW[j8&bc"Egc x)U*X5s*-{LZ(O^gig>cK_Sd t4DM^}ِ0l\]~9R+` _$I|&d_Еm:B:J@\A k<F=|g:5h;/' 4aat~S )ƣ"xXAXI3U"s881I7M쎽|~< r nR2eSv*8RlJUmXUl[e_ҡ1nA*#Pl.5ǽ}`ly}S~p8 _ITuK ˋUIJPc# w O/O?vAy4aRP NaFCf3VP;C{jbCBwfL[ZGǺ0z>K9>T0c췋,mPDՎyj"Ԃ() (gg q``T@i !S# " tZ˕$D呸k E A|v_/3=ڄC)F/)D7=;ʊfwF$EW^U}6ވĝvK[1"e,o4G= Z<&?ѓ11O_K3f`ܟ9"8Ud&fRɁTDI,؎C:jt4~>[sjJO/N2Oyuln!fG:C!O\0ۺ4VJmlNWXZ]Oθ5L?j j~%a>X"?!iȉ WgTI=h"mgYFJ <7}Khls 3gl畖 Ԙθa 'z->0fl̊D߾&9# .tRE"@!OGi:*7H>'pZ2fMDY.l$NIt4:!-t3;߯sEXA /|UN(8-\4>YQXnpx}hqDW.G?=Ĵ`MWw:ܵL^e]!9Mca) bQVk a]2DvmTRULEdn*buƾDVASo9Gw?pe]*yerƠ&yfefLr\K eD> [hZsnhR%|@W k'סJxP kià C>XpJBF^H8`ِr"ݞ3^3v4P7(!Y,-bE'>z91ɠ 6ݥL-6%;hif#a(U ߌa~H-6J%\)jӵl 5LynD. '4hbM~<*\E@=Jq!X8,-U3%HWGuQ}[0g䖲>[Rrr wωAKxo"qY88}Al-p*z^5#_ ;G^!H6I> ؈*xL+1ѭW`C+KKE#^Tu[- E Kz )IAWiCŜ).Yc~*_q +8Ǽ!VwC\9$O;C,(7۞? 947y@4E>ZGW1 `FW S3חL[N0𭒇Seʱ{78PB&U/}{Hsٖ~~w8xZ$Ԑ^hhj?]ugk0r^9wBv;;I]+SlVU_C^ǣ4e_5]'k=e>dE;z +.{\ˈ~!6iΕAQ!>@zXe.&P|^ ;3aSyNSwHuc^׻~S'}5 Urw-mE J^\~>Um0GEB%+LJY4u o v+6kh?Fdz/ݡu: í'& _ /zPFzR)0)Y-/dObX랍嵫ARuq,oPv h"TRQ(#+a"vF*G o*nLe*`3<L& Z\_GZe! KތN ,a^՜&Oרgf-:L›ɿJ׺̸{C**Y01qB$ʏzլ2JR1p]na? G΄:j@'/>WN=o $O3zJ Z^][+@?3~a1"/2: $m8nNlC 3u tL EhHÅ;w t&YҦxa|Tt^˿@"v m2%"c]N@+u7:C*3ٗ}O-^7hV%rYbKtI|,lYijԃ!cd֯{c-ޕ3o<ڽTjA6N"Юi똍',gR5w,u8ϭYK#|h㕰3fz @)O<>R1LQ.y26Lq6 M!~` IHM2 Oúd꒺hlb4$_@pdXLy8.jrH&BC,-QX #tt.MtG*h0k;zؕ5І mԥ*Ȱ9Yhf m^.5A O_ypHVYhpU}~ۓrVĬH|X!dw\/,mlq l)%">Cc8!%hGSbZ&??c D>g#4o$#dhOAHp.;{g8Ơ=̨L5~af$<1δ+/dVk %[)dMny WBhHMDք`8aHf u@+߈W"5_mxJgbmm]%n ;-)HL,",pvPk- εܲ7 `zVԍ10cW^q۽KW?cb~28=G0' ~nh.?8L' PX{|d&r s*r=&ri#VV41P~?&B$,!7&CST}4qA}D^$LJK#Y=Egoѣ'>UL,T.hXZ#('g=b_d*H g̠y3s * `bm6g -nT I1A%[GwF^7 q4B/w_ RݺiM^ck϶[*?C uG/V5d ;XH/ K\70byYtS`NMJ_g(7.Zgb')8&q Յ?j<Ā~JHo2"=_}-4GOw9C]Cޜ{tl^*M[V,A .ߨb-l5.ntC1$֏@xZ>匍nQߴùi,Cf!DqE`:\:5cq$eF+7zf-WK:΋5_4\dwه?3rGú6H I@dLJe\G@~,4 DKߪ>B)걸LdLhdH$ŎGi8GC7M6x\Y,7ጋI1V))rK1(磘;rS~6Ra>18 m`r .=CLdz_n,KĊHJ|,Sf ;[ @7N_XYXNiG!6V lJuFi–mٺV0u3Y6@솶,FAhz|8՞Z0E[UkU;Ԃ=L(*s⍏%g2haܦwKS|ӡM3>o ;˲z+z/IMH ([^\=0;IC 0ԜٶΞvrp&_E[;V&!Z1U'3AH-\q5 d8e.:_P?H)B t7YÀ, bukRN=M4"穸C.v0s,D=:j )޻"̖ηŸTČ邏>Z}6^TU )dSEF{_[sopڐҒ[y afAF ᾏ~:].6,g5cpDBƠ dUs[4̽^?)چ^mJ?0&eh4W5qFKvKɘvеw-#c! oY-VXYJ3=93@ahaK v߈c|xp } /iNA1Lb<Ĝbȩ4L^^kص؇(yS)DM(arF#kAt@\J&1y@z_wZ(;wƍmSaLG/Wԡa;-ʬ0//~M#F?O_| N4hY4#qQ&ٱn:ݴ3\7 40X>#s& Ihm2GhTJo sYlU{&xƕ;%4bl&z$$]bMCzS

HNy6Q F1H F഻0w꣥\n`B1c6> ysr;dTh }XQhgJy*8(4 jՔHV^ ሳ;3*&[v//; .3ڊ8!12znx4wxnS%++ر[/ dA U HMQWD@#NnkɆRVGQxt[D9J@پɻ{]HVE.VW荺!mUC`U MB#n`d[3&+} b6aC٥~ ~ςEՓXS͵;noଽa7'z 5560@rbD4q-l}l )'gP!fCwQDeoPaD^&/Q6ͮ8+>ro;D+V{zjS_ 0YD#SVkJo+?ŀlKEeF(ʇ{pȓE*oX)oY}!=}E7I;Һ7$.62Jשv8QUEhfI/n8Lܡ|cۭLPh09ڧ0!83-dF$XM}U [lGbR02x/j ,n .RV!<rw]Wے HoB&#{ r#PesG兞R:ޣCi$$=L2Jpt*R/CwӦЦ0(VBpz瞫3!iz7pG%-Ԡ1nsH!i։/&UI e\? (RC f]qqaj~̉c0ON,_YX[N-cx[XZQzUʼi7|mTa-F'֬"n\|jCe/1ffrQ{,#> P̃|0'g`]Dk6Av'ٚ$#aMR{|U*qܧQ‘yMQ-/z xnjpU.ɷJ+jJz aգen^Z50Dvpz߮뼟2|^?nJ3W찂hs6&'l V[E]qV1y< F]"Z"\2h]1``M&I0'r(ϧq-P!e+ tmJ\fY\9*6׼=@?FwʮONK@^}>];q+'D;b6F9ax/{7ӟU<`,.?)$ "ʓ/ֹBa&[6b;EGI@Oq{.1u|n 8IԢrM~hc,>1Ʃ/ZᕎD`Pב jfNbi&4}-HZܫPh6vP{miל&usti'>S9']2d 9;>I0yޠF#킍:je[NGDpae/Ÿ]Λ4ƤT>.Sׅ"DFrE`>j_nOLLѵV3"ZIɁL5Gf*z[0[rx?y풬4ddC8x g2{f3Av"IІ<̣ Xn/(WTjLR +TBH_t{5ؿ-B)}x*zY[`Kg!:5,Ҟ\A˺Yo.%"e Ih'0+IVr ɽ.uGSL=m#ojZ:]h_߯-4<]t-M}Wȣ `ݮfP.y][h ~.?RT ךXU#ԚZnGm$r&eָ~ĝbnJMA\?A:iRl=f>؝'>P;KhW J'jDJb3e˜} tF~x Ud ͐Yޕ<ݭ5q{oty4ۭJm,MwWӲ*DBW*/1?`0޾>֚3|w.&A1 't{{Ы5h&8FE|㸤nJ3kz섒8j*Į6n٤!>9Kt ojE65@^tɃ-7 T/]3Mہo wEY4*z^U Fh%K2ýkjQTBT6Ѧ[G4QbKFMgCjflw@ PW:7D7X$᳗HP> v ;w c=y&r՛[ߺV} *JAő} =鈖ZVKIS;u $`Z3(fRˉR8laWђm"bCLtI鶰lm2hTkOYHIūڍq0"Z5ԝQK?3EmC@Ox1VJW-4I _hG>^!9Lf獐'S;⧽ "xYECr7y~wv d2P+~3+;ԭG?@d[3SSmrN^Cg1v#Յ&1cUgᢲ'Nw0ăV_3m][, IMֺhP'5f}i spQ(Hn{Gxk*7_ͣX(7P2FNȀy)9cz2ԅ1N.>G+2*m*lV {@~6t2TeW,b76ތ=혏 q~M,f]vT,2 O/~X7~V|i&OƲ-onp,mZB X7JNwuM~6=wU0roK@f!6kyF *EƄD)%([k^ܷEG1Eљ- _31-`iKJGgt;8njl"hL`{# ΎO*2/39ӄ2MRT9/#j~X=r_CQ|!*窳(mF,VazBH 3`gԖvXxy)7y8Sc!vSYaJqvLnO"/swMLsOǐ5;`7;k2cU& FXޅ(p*2c+ <>&m6E(THrP 7eZLSОǞ^bʶVĖ;jX.Ԥ+_7 QhQS7?YN.qe(X5͊+lKR[XrCٸjf1Rqfd8yV-|) Yϛ3{=TcLR;ڤ5Zʓg5ܗ゘K.dw?@Ij%uI{b,?\a=H(O5e+#M5>ς{\NDC"jގqD#E.^j‡:y Z~ L86%ۜM1`@ j[#c~ǭ*!uWZXЅI=ȳѽp|cM WYUaU]3"f{LV%mmj4"T܊m6F T" K!-XO~ $xca)R暬JKY:_B{6 a@QhRdM!5d#T6ʦLL٧>|_}{:Ngׂ\ܓZ_Nz%+za:IR %K,7&s3 l 뉂Cy)d˓"n#42*_&sOc~O-N)E\U\gs:UF<+V* JB:0VvSbdgqFru:VqzJbU]!xYMɗBѡCf}kO;! N|k҈fDL8 %ێ'.Pi JHc)g|&!8 s;;ᘧ㷨Rqɴܿi&5@̓3;-8(\qH$x1#7zܗ׳*[4UGh Ԙ$^$pSl[O?ţf)hաLu{‹V6Мa2P؀}`F dPynEW_0̱"2b`Xz*e(sXD߭Fߎ_kW obFC $HW٠nO)OT|V֘&۫~vz#HR\U=#jDl̗H{D=uq,+ߟvӡL&9َ\L՟1l~¿FO3n(.ϚO ~:A5m-nq$l4ؠ :Q(zCō[wÔ-iV00^pܳui9S5ÿea Ld,>"RMJ)._uj eơ6>@PuPtSU݅C,f P!{FI<<'Ld8S8ᅥR7l3%VbM'm1lj>"eph||#S9w?+u`n۬ҨAPZ:;DtefZY&d9WZNp[p9ңDe r^ yf|zxĽ%^k[tïCAܹE`\PHLt-15+ĂBlfgHBZ$y}k #^(^ j@-tk %|k`í02~Ԯ3 L(#FxݍIA4kl-'`%Θe%Iq cÕqoY@wxp-|xޝ!A ւ ;y`cʩ M Mv C/@kcίֽ07䓃(Uq.6t (Dg*yV9!̙>2gZ79$ 'F%}+ :@֦tl3m!5Ңq=-i3ylA/[ڳn s.޳[V ^qg\%@BwZ6OZ](˙ԍqy!!3<.FĘcH cc[CXO)zsP.Tq|||1w@;XM/JY>)}i=Tb*emu?19fl UGLJ>dqgd?3QkؿCs>5ԍױ/ql775) 8,҉Ev]}8[HY)Pje=uJK[HXA‡~ =Xu <fR&暣?$=RIUYԙ&9|[7:wYm]=c47W82DҧdfTei()H՜@|7 <=sյA("۷oxЎEկL̤Ǡ2煞߯b-;NjleVH/ a^8/KɳTh="\uODb >Yh:㞟X 3,C7Q$Amlj+%BsA1μtUdi@ɹ0Trۥʜ0M#QvdΟyYs0loVɑےeՁlV[ykkȺp Jκ_.4(V\ 0A7n'HEPSˤ24㥤#kB<_ li<&;7QElQUKRmE-;SV^Ņɴfr5tl&*K`N)dvh/7M6 K뇝0unR ZV'AΎBk{-'c]7 R#H\L#5e.6 j\ՎMDJ|ׇw$.}Y[w~Ef=2N 'ٕȆsR zά mC%sqh~Eky?C ޜڑj,J0j:NJ.;ȠYOY gI9 FmENKW_i)K|lWVͯ3j{,Y'*L Mxp 8|1kR*)AJ9&yMgs"`U\ğ{Gw JC`p<^WO2ɽ&j!hWcUX>F\*IBnN+.#w\1f߂p%\YGlNKL+ObcV~kEjᴘ.Mn io%vq#fV]wx۰Ug2WZE(KXݣ/7/'҃Ḭ2a${Π75o_W ;4{끻@2^x]yh5xF{.qLNSD%M-Y.8PkRO*kvpNQ>_YT? \*ܪ) R~={!BHx,Vk{!;\z|Jt? $Zm|]W{+`NKutD{}IO5e;ff dt4yn3ݓnbzloх(u*6pmc U73paLbE.s8~׈zlD_;{ >@!FcO"8:>|eЍ7.ݣ4CFS %n:MV.|nu>^ Z)cr-]BM,T!> aMsaMm 9AEQtlRkODYk#֧6H]|Fǖljܢd_P*^"ƅrtS |d?u9G½տɽ*cZWh/x7vWEap#0V)W= Tr-cDYrTџA_h@|oRiQ:P LV0wy j%Ōf yG;^پ8of~rKL/" Hgڞ;ȥV_ c -?v0yKfSqrV?9-SO7fkw- m`Ctk@6b1 n8囘Kjg#00@/v,%K lz8Υ #{3\vQar5'L ! VdNoTV$:JpDvV-@\E*K>p`\\Ӳyy<Y a7}t ov9Oe jxYgBD^gpuL'Z$fBՈ#+Y=G%ƷK1wC`c& m^/[ɐIJ+FK>#0PJmj3cۣ+%YX3>ɜ:o *P4)ObbƢF8eCkLQ*utSȯ֣Eƍn2n>z9wU)0J@:dz/[iO"#=h^DȀNˆ%;wriTs kE j kKߤθIW::c+ F?tS(ݮ?ZdCJ t頒Lk0<&zEUتK`p[\ψgF1Eoxs\L (63m5rR}d+>7bDz%pF+`lOZ wP^uK}v{.W *36eK:jV(SH='e8tOhǴ4.qVeCazެγ :V̋'2:mp~Iz^^?&iHqpɨg;B\pju]%='ؓUf})Nu6րcq 3sNRiXbs_]ft)+o*ĥ_d{i6 KiJm p˭ƸaPqȐT ^57 Y7@b1]I7L^;ڍ qY 'df@užZ5E¬EwJ/p82`u74Zo>ŠQ]uhK( eڲ@qN*}ESSVbL}@qc8ڈ ù\S?OCЩ1+|Ҕ |K.GBgM䆲>+tAwlN$Xaaita'f}{E0,~ݴs[ F --EVq}@An"aoUP^O!qE*&aq:v")8okHz&yH@"# ȷ*7t7'まߛFϊt>@u~Z<-%s0tųAv45KkeHG] BOu(߲](F^9Wpӝ"2m$fB?N[&im ]&!0L9Ȫ-U$&@u 1R*VvWs}Łkaz|P*+÷b^=HߺDhnm+t[o!&Nh ?(l8u?v2|rd~+A\ =\whZ̕**;J9SJ.S1$*w u^*}rd'E0wy1Đ )8] Z-d %V]X fs՗k Zٸ9"y*ڟ, JӤSIml=1Q?2(i 4*BYfcX/,d3^~_! Sٗ~С*_yդ q2Hy@/P) j-XtCy8[D. >AF~YoKs˴T#GiI NZ $3"x 3ɗ xgYSb=P-fo,"\rd$~ͪT-5r}`\Gy|Qs}{{/qFVK2M(/ޮ5GD(EDn;Pͅ [0ݒdqqa1_7tgW΂v۫%sj8;)O?MBl70 ,Z H0G5:=1\|H1cI>^aF?÷m"_-~7'Z` OϙJ!mdy0,k ٽʼEhHy}LovlOpj% +O 6d37ЩE$N_gⲋϧ_t"z獂=膬6\S)JfU(N{%P4w ,DV̾a3[8RBqjoX)ʁFP ZPA;WԡX1PvPs)KOP]p&f;[*Y8,˒"#/P@¥[qutWecn\NWk^Yq6{U?O4uKEtUEj1DDChĐ+4(!Ҭڤ *eY#' =KP7\˝@ah~ȀYJ `ڝle@ Z2x0Q2@Xo㢶 G[GTyRp ]M1M7dxsG7LUztyylI.IBy{,ON/3㢊QՉj(%UR]싓 2ݢw"82ֺcrՁב^6DAk&r΍R\u! K^eHt>sy.J1Pvkz^Q=h;It&9oɥ55|b /s=X r/jZ grN|pyAے o3럻g|^_g_ ׸%%ܷHyN`7mϗ`y Yw&&N*tuhK~b)p!n F 1>hRr~ȯfƻ&%͚;ǫG Ek4`Wu TDK@7#7Ѱq J9__?}gPB͙ !,(CȠ(fqZP|ۿ 4x5G¸u kyͭ BBN^ؿr[QL(_L㝤/t]"Dž6X[EpJ`9jt1b/u4j)BߌdX`. !2:h|_Ħ'w SzHį%5J7rł*9Vꁍ/2g~5g ժZ#2x]y7Z"dיK=&Yo±\&xͫon_a䫇)8{߸ᣅ`˥01axdalLD yK3K#_b?7jyjҕݍYv.p$UmXp د#c^IRoj.®D $|JQ.X/MPtk@[0b[Ь%.۰gyLحxwNbb&E$"z.R[- COӬwԤ"Wâ{][GB> |9{Ȉ|my?ό5Se⯃+f[UuH5=^˰fɊ\(ۨ#BWv;L_yKfB8!klI=ƴ%J ֊ ,2iccW8An \=?/3 o-c^d>LZ1ߓf g1l^Q _yKb'L2|ӷV򟪾D&y(A_ kS˪ w 63_7R VAÊ LM9b&xy#Nf#bo\k`\(jłgh/*@s 7URC&5f7<&?gl Tu>U_1Ѝ@ц,_ێldyTC8ܩVʮv(0KajP@t;ɝx`]ώ3l9z-e<ˍ7ژYUpxur))@ŀ߲:oy3oP*qV+uljC"=y#n"=/ϝ3$! IgN,iPq~+k)Z2 Of9R32ivNB^ly#6FЄGԜAOKM)Zh'7cIUw?dUwjuM2BdL6RMQ[dhkw b#oIFOR2ϗɼ:(lDJÈbG׍Tc(XXMhIޅ4*jbz]oi3+k7~f*^$x;53lTpoR}O3GzJ8جU nvnD9HNA *Kצ,ވ!jFo@ i^qDoqO)bb$M& \0XmZT=AnNвSHCմn([>9on;mܟJD6^NAx"Bm:Hy+Xv0v"ؠPι!u?V8# ؃uuA,0{畈.^Ht)$k߻k Y >[dSOFc#2lm8{Yܠ)MMȥ<7Qh P}$ϯ-5\sNx b9l7F¿1NS0{ 7m!u-)Z] @r0|)8rp*|o:hHI^P(lL Zhs@^;F?qcl-dSEI~ Rt.^M2eߍ_(vSq Ӆyrd9_> YApoGѱ;sU V.4 Uk#iILQRu[|z-t8XGeubZymuZQ/]0 ^w8~jc-À >$O-,X?eɖbw׬zjzF<y+aHx-ucLxSf*׼V<HW+FvgysRSSO-yjUâ<qUU\Rzl=-7Q&tQT+dck]o-قg3l 3?M@tk׷ztJ"U/L0zG7^קw~K3u}#C EFw2؅հHwF!B45Ma'gEhH!i%Ez~ \f~߀EWԣ#kbJ5ݳe12H`jkqd9祈 @ˡ:jZ)ɪR)h$ !@^kŒjn?u}*wwSQ\i~(B 7eYJn=3?%n!haaN/!b'=G-'wge"ڄYVvtڸxm-hc@?s%"1NvW~ 6x

V(a Χ`^5S X]{_Z\_y~6. +rOX;Ja כu a%J`}\SD8c mb 沢zuբkԌr5. ή*elO*K&X%Z/9|/d1tDP&k>s$%>7Za)$P].)V0khE\W Oϐ 9uxS&Á=/PCf #sZTAo$FuOr?eNG4%Q2w(`4&<Uy"8k:L}}#˪>;Myw34˵]fb7dH}e,7iWiߵڲFK &Mb\g/o~rzwĝS>_&6͡,,Xt?1$5رfpŜG,H #񴦼97~[UүTҁK!)_]>O^ODΛMl4Ɋ66Ja=q6W2B!#DR;_ s*T_d"'xNAPB=s@U\}~#_âtĖ LCtxS06{C3EWYò|3E ]Cy(|^oLQR ?df2PiW4?x-8y/hhD]TqMgk7aC5~6ȲlriQgVNؿ5.4QMvh9?M%w+I\DڌJT Qb5,e9Z]pU%4y>HRM6HDx6,/ipq0MDbh"1c`02n \T[#A:3"ȳ4w)9grt?NQ=:1b_TR:Tp;zf|DвĦ#66#;π{Ȉ6dK0Em͹᫸\MGM 5 xJ';De&B<p]v=XCF KDC[r 49TO @B yf%U6c- "~'<@g7cxM{M8hj&KG8igUESc ̀Zf2s1}Kɕ5etސJG) T HZnHqˬjA X1u0-/~1~*n%>' &"9g32 y:c2p9bImxqm! C]c>;.Z#(Ͱzۤ, Gj6`D}鎉i,?*[iSe.ƽѐ%X(GG}w90rG?2:تs0i͵Kui{~vzzIc=gn`r,1\KJ>7 & }sF :.^|B醑MtEh#a7f4+*PYJJޗ`,ǣX+(֝t^˅΁5ET~g5kzf.lhGB/[2TFoJ>?Qt=yTMgr\sv26詆!T:|V[q`$J]-mJ(NIhzPL^;'u3fI JYb7:_,)$ko8\,s0.r-7֩|lϑQ,*f]L Dpiu2yw.6NgԮ#X8<=YdG~j'989TEydW6T+=T3&prGcAn4/BPV0_\1E<> ^se =x` :t藨wTί(\Aa.׿>!wJ9 WD,!:g M\'Nd_jv~Uz$ 9a;~n+Auv(o~}g纷A>Ha^Y ߋeMls+AuC =1Fm~PV㓸1۰AzFJ'"%S^w_od>W*G1#чXQ@ B˭1>a90B-f$'9bGY ]}N.Ou:ʬ1hH0<=ۘ_0P+ͼfZv4K2L 6-53X)ZW1iHA4`,(iѭЦH6(4>ognGz M"Mrq`.xDt1J|#!?V]q,w@j0Λ?egXB/kDT$ng W>Xܰaꋘ z%NoO&mݨM9.:l+xW"+#mƢ@Ã5&\+TFD7g[oWNxB2^]C*;>^o ѐų\0Cެ&sMn;wd2&wbLO΍ af H32b]Ybj*Lˍj +|W mY{/4;sx>Wt C*WLbK-$ϬfL6 ˆ%zޙlٖ|Z YP_",d'GPNH4_֐ ȥ"fkl̗!`݆Jؐa$x7;NA{Hfä*po?}x*7T"T3y&MRUtMαhܧZpfKQ,`FR9$PnYl?NY'z-fIº-ü /26&c}OvVQ u+ҸrvYui\l}u9 uڵO8Q'X& M[IMK'Fy(^ajl}'6@ GnjTH!d_]_$}y !Iǀ) yI&Y3,G?uL:+w! 3`p(Yڦo@PBQp1^hO09/goesXA)jLs&MJ,@SI^I8qҹ$ ?w !zľuv;1!]H@pykq~s)}}hkTеnW/2CEG b~,m.Hp p|ڏ'3VWٮ^T7dx$PzR]3m{t^_VtC:-ߢ棯s`Wu~o t(SvK%dr>n6ﴭw sN)ٯlcEeIx1n)g- "GVy̠|/Q-,U?mwjf(1P~- @W|?o'+ |𜽁KZQ 4؎\;.yl T9uGs8ڱ`]l C&n@="- L(:+*$8l+n3gfՐ~wjWGWeZ.hj 9Mgh~ql/5Alʖ#E ]ijQWmd-R%7oCEӮf u3[a6m̾-of 2 v8 [[ĦhBO'}ᦥ1G[]oy[ 2+-A4KE!5dd؜~4Vۥk$VT bL0ÓetMH!AQ/ ëfs?{UNM_{ES`z pJh)3Nj踊zg>EF)9|i' U泍 Ū03TF) ;13lIJ|zE=k6"$qb1P}*6RcwdkkeJt[l(_E,~%٨2]uX̃eg3{> v̖[7ex[ʯwhi좂@[s~D-8`6 ŮHXftJ" Y])gN<9;cQ?$Z6Д&m-Png_/nN8*pZLPd֛N ]#ޟk!;l>F" CPPXNQPQl]?Le\:-yX׽&v>F&IE.H}kzPr/=3߳Gj{>En@3oaH>Dҕcɻȿ3Ye楾QF`Aw- nhoV.AQ)SO?qT"}DQ¿m\{O# V08(eQzc MƈPw {Kc'ȷvE#O"sTk̰{@trz@ʕm$wzh"^L2E^tAbVؓp/3 O,YlH\M0c}q,fT!9ex5P)9.>>t̙Em2v*gQJ F3$+ld [#/^UTӵ5Xj+Ҿ,.7 1f0M]37 <=ݻj~cki+dLMpj)39*H󒔯1عVN}6+3I ۧ{A0'eٜw&0s`ļOU6j9&g?T0P<.!FP?RNyS곬QN{I 1Z̆'UG !=dMbhp.wJ[;I@GJ1#D`3mjC&?!̾Å{Nɲ@|uĝpTpw3sp G2UMxĪIMoJD8طk-&Z3^pO]RTߑ+q`Ғ'kǔ3NF&Wn/wĨ(JRѽ.,'f݂u|,-APpYAOnZp Sn*|q]7sC݌{ ^f&W/\'&q. L+쾢|RSj9]yӤL 2YdIڦ^OQ-uu)3-d/ e\CϝSEJ#hHKsU@4-JcUG~fY'}v%f !DW8 l f O{Cyf6$&YCv]HӨWߏ^޹ϣ-a{ '(ղ*.0f!*X}5I8 h &Btj+<͖p9`P.%9rAH={⹑'PQRCkx-lE?>?[ڞj4-SQwAkT*ǚ˳a 0dWblsQf䠓>Xǔ]oa%~E(]hnY]1"4dmkī" "z>*nԗ̞.vŏp.s|ṝdpki0nGH  CSZ[EoܰAeW_Bl+d-[ j2@F.B[:+uGm̅ εYǹNEw@HS)5qՖѹC`3f6(es"ZvSMn|S|v/&BkhA*SήbMG# ~}b{/o^DKƿS{~SOW cspgrCCeU-E*zި8sP楺 n̥EJ˄T@F_ES 6daSoݡ*X 2lwrci`zO0FF~ "0(l/7byҹXH-Y(Į7xJ"WȄ-\|?;KuЀc&3bqկ2onu=.u>f]]"wB RWVH$'^^vd5qQhdd}7X*U.}ͺXrivkDUJ %M ;w܇g¥F>fA^=󱺚 R1uዼ6Dw쏥Kx"棖=8Q2eaLW/)KQc?*-uӥ|ŞAPxA.T'Qq.ԓ9O4S,Oʌ\MsXktlR8 W1QYGҬiuX 'ۨq&Y#E{J{Kh1xݛB#K\!,z򘯞\~.M3VmDiŨAOv$Ranix8%nxhl|V_֝(`jbjP(Â[.6?hgqXi㭶O=IK*)?U56%,aDcW;q*X=F?~b^ ӳڌ5=)mI/9[^83@~۴M~jӧ3!m޹YIWܘL) zE)c`Jjx 6/x?{I#cpWo~ .Db0!XCr{>([&xprר%HkK?G_dyeE ?" %ɖs6YC#&iY.!d5 @WY[I3|]U0m nR=.|ɶLLA"Ff25$ kߓUJe8T yN%De=G> KoVvh=GlKԨfJk95AhDkiHVҡnn!lA]еc­,/h0^C#D ղ)zZx8[mlsXS7uFΝ!4}12ۢoTM&Ңou9N[:3~[mjC S rr7'jq$f0N|^ /û7-KOz9G7Fu>&oc?;vqB=s\Lb Ϯ} {Yb)?T3uP*8^E}mqř:^jƁz(9Ye=7;\/eǝ5=$CReˮx"PQ¼AslRp  y挽ib%M₊\N8Hj?H"~5 IseQ}gu]bHz(<mKm`GMOj[>2zgpcG bvF+S;=h<3M9ڙl_l._wl(m`|N:,DŽiA}1 m']T2(L*Y!~(>MJg(|/nkܢl,Dׄ6R)QI Ъk! CǶ,& E7 my *gwmſl]s!_]yO_2ޏm=cD)I7@&3 ӽ'lNǾZnwXf4jds:ƙOj:b+VZ$Z Ucv@I wBI{d-gutK;vry>q&b[."ș7{ ) |ݰƦ?D::r]$¥s2tD:|k}-LǃS>WpRϽ^HFam̈́Pu ہ^kj׵h_yk ^z|?e(5s=uÙw2:C{"B.>8YkPus%c @%u~RV\RBiTbfR)5UKYTۮa/Ӡ5 bb\r- UOD==dI窢E|NCKzGhl;|gš]:W?/D%GW^`. ŗs!D)9 rҜ8/&L'4T<̣v>=)?wI:M-iNQ%:3\~Yi;=iCya3 C9|( Kf!몾H퓳`tnS8>a}4oO/ԳaK40޶ _1`_Af|uޥ=V[`ܮ7c1BLmB)@+c Zse R g]a,qܼg=a2A ņ^:P; 3ibQˋu-M#Ò)ɹL 8;_ĻSr՟?V& WtJskbc)of."U*oMz8rJ:( b;pe\~aVe~ؠ HMKQI8^4ߌeRSĐG?)u޴beW̗}gJHGUo蔞'v(/l?1ޓ3Dc.C:7L00x$'`REM̨CAs/7iL*lCfSV?>Uksq}Ah2QM,Z4uEaQv?O99P}_JKbHBjՄ02ԱdMzֻкM>0_ƣ/N̨5:lnC3AX٦ 4/Ahʹ&D.d o6S^EswZ'\iO !Iܼ}LS7C퍠t <_{ #CZRf2{H]rԜn=_<ӱi+XV"vKyh?H6chT0t P&F8s;]Lހ8mE3 SqaXl&wxa*/n.=Vyz,x@yGFs mZdx5=iLhh&Wj+TfMPDZ?AწngԇUZ*R5C=LZx`h%͔g?EqڱtD8mB9z[|VlsOHkf]'n)D.ό$?<YJkȷ5[i 2ZۜQbIikbت\-$v|q^mߞxDlgDE I鯯!OGH&NgF\!U[P56Dz:CksqTg|b䷧R1ٲ1_g1ן~](NO_BAdY3Tp)r)33(߼id..IQǸl=kHP\7K zp~J;8L%EE+0A\]"׻!!t<ArUjp;LG;,J!-LQqQGYRMണ΂R)[*Ion^4p) fZ? tt"OyG7DZmȶ~^!>;U pzٱo>AB&UU E`V[;%Om zTTIz^+enރze|1JY,Q,tǪz?y:j 8wSbt vZ wOCNGZlpSl=*n qp&'͎ͽoGd˫Kp]+g9LA #xsgAx̢XD|EMro*3t~8\WI#7,TMG$:RMw'NweZNoʺFM怃u%S7eIjkԯR;#@F o(H^He%r;:e~f}"ZlN]~wWҧ7#Fѣd]Ez/_&$7FֲB>n >ٷ|{7XroidlR7*8 6C>vEX8 ʋ)ߋE2]aEfwӜ=7_wR9iSaV"A/Mce} `R2}Fw9qHn:c,/YͤEa^ڌO3Y;+Pֵ ^N/SY ͭrs1CQ)_ZB79tnC٭ v`G[asfvպdEK__ OØs wjcދX%[!հw,P/{ 3<1G|k&{|62q` )5c 59WhШ #nm\q{)vi7شʥ>js U7^";7}Npo51/ 6o~3b=[3o٩v=nkbXR)[U^nlN_ .TpE۴$+u4J]iG5\8lWN}9Xa&K)FR8r5fCp_dfxlv-O|4 xqR3]V=6>2ոDːpҕz0l zrps[RhœQ?=/Rv|qnIDݷ"_岻Eݥ1 He81Qu-Ob>6ݏ4w9XWbօ|R<;h<]/G``bLrwJ/;P{ z-P n¼ç]SѫߙCpPt0=~dۺ]FE! n]y/qeV XOHh3PdURdd) G&CHlnMV0B$v,<Err̀Z*l;>1~o¼ *2~J@y.K;~wLLe{xJS4e Nm) ΁'q'f^VF <쐛O8Kou܅3׻A~׾q>}QE)ՓVym#8y<[#v & zBr5U\$ǘhf49 LHha=IJ5ˍXsI&^A?z."u9˯9)Մ! V_ ,ULsTD;ֻ«9rKniVGUP,Bg^V)iT%Ocg""_VviێocY$P$+55S)]"WH E88'NH{%E#ZTX"ZSDJfk{f2Ոhʹm҄m"L%I>0^Djrb?,-HP$ؔJ Wq5bgNuOqa -$/U1(-P\ tj &+8oUÂ~ígnK{4$(Wy;2(2-[X1\e1G{SV^V%!aT^~kr^NxMx=9k of_9@z0vy%&_;!+xla3T88pwVdmǵ\<a˜z}.Z3<)*H 5 EN=+%`MZ}%nHQ!ytEE-Aut>ڤ`ڍ \z:tI̢iӗψVbøF%>g'݆ ~ɓ׭~w6՚p$XjzFcBdZLȑ5Umt`%FZq<ߓ[-6Q4hN4yXZh;MYX$Q}KFU` >%B'"Jn;( HM_t9]!pֽlwfe(mW_9 I(-*Y@*oq-$|Q'D-o5P([oqOD^k'!7dC3&;#YK*]|Տ=[dU 4ꌸӤR(Jnm8\#F (;?Xy>IPĄvq(Rp-&BOԨX0LPc_XT(8KnXtW3dD΃/r,pR.0A Ya&2e ^[5/>eWmwNC[6!|Hln~zgS`k\bM\5Mή9|Q4 )}Krs0G_a`JDx83Mö閪-g2VoHv oF+W >iItኟ wi-yUV507o6vv_uޓs QB⊸t MS_b X6.s0us~|d X\{ !%~A`* {5'#6ɝCǾ糺SIOjى@rOi?mw)&TȄ a;@XTecx&wvO!7EXd](SfΕZ>ǗVTZWG+VLE *ex c m:qS鐗<: P  /0-b)ot6=]o= A|ğbcˆWi.Btz<w\΃'!H:'j8*x(.ؕXgX>E Aݬdq(tm7Ug:FWmz߆&mB2l(E*_Shv|l FkSs+!Aj>Tl#հdTwU`z)=2R3-$|-1p \}SFDkj} PY2L4[jǐ]tH AU$1ot^s׊LȚ? %̅Y8z!U,q=clVL">$ƨ&w𒘺{ORRf:ac=Kpons䌎v(%UeP@x85&zM7@"_IPqIa{&(ӎ,g[\wl/.XY \gB~\&\Ҳsdr9«麺I4"3 URZl5B`L@HtYA˔U#Nii{hhR(=:]nuyk(HGգ]t&X=VlT ek;5@a!~jIJ!Ġ)Ph\g |f:b{w%d ߳yYI")T?R7y1QZu.t!*prmaq@׽821ë<{/JV)R|RQ7bJ f[C 'o!>W}F4.} NW}'%"Fj`ihTFt 9GK:֤#/aBt[=_F؉%f!8ytY¿Bxs zfeڻRERxD</7RUR!'Jbvl+?&'bsȴ+O|u/#Qo@ X+@UUċ->[̾)]nڮIˉ(y\͜mQBڏP)-1N8~ giث3"A^lՊ-x-xy%8m#Q'4Jy6P_J稢y 㺢S$SGHY}U3Ooa &jh ~60jAn»[lWo/p-ʒբ#6u?:nW2VL^],VJkj?+ xXqrgL\x4=3'<N/nt {rU6/t"2׳vqe+h]Nޡ ǘ&#HK]oG$͟^~E5;GE >V6 '_> F/n!>S'%`ƒWN㋿ޱKr7kUppnt"F1kTZ?kcDYt)  ,ސg:0W$ū+xZr֧tX@Z#O\Jd֞ kqقw=\? ^}]ʼn/Vʝ,S@kڴ 7}gNs(S bx |6鎈{.a ȬV[dT>KCmVeuR|.CY2Mp7W)Qu1qejJ؁ \S-EkSrᢐ2 'hI4K'/S\qBIUET!TZu ֟Xpz % w6$2YW{aXaSBlJEr>QvTَgY-ؗJx^1vtQ e&MO{E̤?!7F):b' 6v=usr!%fa@s( j϶W##&i9̺K68 gmWs\\, v F4AXV4;!"R{ @M5Α^h$ZgR$3h=76\W0q2 MWB܃総*;EA_s`.WG:ؘzߙj/}a'&}Iu/|j<54Y/KuY!',NZ I_7#)s&GtJyzNJ R(SE\[>!N;ԏЀfKEb hA^^@I7g7L\N#`O_r!iNڈM gq%d%:(RLGA`7Uv?:w^OoYbjFmD{J@OFER(dn:qTȪv>b̭rYL_6}FWv\$Ø"_6{PpА#_d;)'4;y HINwA((;< )Z; ;%sCR]jUﰐk;(k◓.wn2auQvPL;RYZ]Í?େ-%y@{IP0i e'*74=2R6,d?eHU˹lY\jK`Fba@38:JVEwV^rJsr\Sen$z &?İ9L,izyFuTRR{/x[k(#v*%9Z:꫟e2Ȱ%Wd0nvi[]WowM2p'HVκv(N)pLH` CXsZņoƽH\1o`cOqyhxOQRfrWݳ˅`tZbOEP%JaC5#7Bfe~ p{!л|J нإ_[sMy%o7w[=uRSGl\mz+8ym<<@jK ɁBZ3,ܲ dHX^Hv.o& 5\0l]!{_Szww/)$Ci%;3u,ȃQjV$B>5R3O? #iTki}qϠ RhxFJ჉廥@UL #"͂Xt敏䭒?l7 4܎L1V dݟXaOu_yD6b9b.:Ud" jNI\Yeb L'_u|( " a&k6K5"ꍙyZfrg#WhZb03Ȉ*:B@{ N'VsF&ebz)Ye$E0.E%ܢA䏇jkI .|PُOIv+ۊN+oM,0C<TFwh~兘`[J&rj6 hT~isbd'af L WypE}'%;B%/H`+̈́ot?&R,ۛV0aZ]L f#&i˵2, b%3:(fpr:yYZiUzbL`f;XD%?ux ݞ~EsNVēܴH_e7c܏QAtOj\ yR{ۥ ?R=R:. ,]4HOoK4+A4(ax6:HYL_!ߴ`B4degă놆m#Dj4LHqZgOUWtyqAGF8G-PYjFc>S-JP# d%`m|X~BY(NgTU~nJc eP=Йl0`'K&M_/ZZ3/Ir|"†|=0 ;h}Ã2젬ϢgcXNO<5ɦo}}qhy.8qf?UVC֊.yӲKX]P?T޸4^:|EfHnY\>dGD4 k>0?LJfῼK\Rutێg}8ժ+ۮjϽ c]xW"Xo}(M>jKfSr@dNF|-qPqM*;-Xa#Gd ' s^ GkP O)ʼ[)Y`RfVko-O$ͼIM4ٸ*gKF'Z}j?u^Y;׉& h6et3VG,v~KqKL3dvc~Z6: $35OzQwX%gEG^_Zvi7 =gcӚ/s;3uof[e'9%p?Lx/E/jd0ԧDW5pڇ亻d3 \C;%7rEʎHCb|~D \j!.<<;*T :qM%6q%-W][b6Ne="d8/Ý6vvg0 5n-,&E:;{6Obj|~>]qN |z * tjǿv)WՔbn*s7~"}$RPL!UC$$/Ho㕭}7QÙd;2c#l>QݮU}9R*_,4?p(PlqTFz`O7a?D`sr؞iYv^=hx% My͒D=& c@?, MK-|N3v *o{ƀdgB÷XK[[& @i4Eamn2n/4Yyn1I3vҐDd[ES31x27KS"$Q,`9o9K%:cTY4b]y"_0jKH>Fk1-cggAkJg)H-u5ο@ހhTv |ʠqWHTstt+{D'--v1] \SOujW8~G6S;Od|.s„^*6LЭ_dU8ȕ#;˿ۻ5mײx SEl'4RӱrOV{3%ZCIn>2*mu '{իp/v;^o+Ņa!6@Lga#ɸ\>%ʢ Sƾ#Ȭ2B>n}jY[S!ƤBiC,3bN~ٕ߻ BK9>X 8I`Ab/1@_ 5q~$@MG'89x^KlMGχ#C"3uFDO@rxe_g"s^ +p\;pb,,?'-e[KqףhQE ?|[mbH& $; 2o7O^9 {jqBX{*\껏~pqVD-,*LI聢b?w2ƦQ- yW7gY-9`s8W2ek}`裶b5b-5QK^(:1G]"j;jVf\p^9L9\Mj 3Fg*7ܨK-uҎIua#-5(fӘć(!~O~'x5mDB"<Ѭܶ]>Q54-YtGNDr/ҿm@)O>n$W9 VPmf?ySRZ632r3-_zd8/}s:Nߜ~@TEy.vg s.=Җ z.N-%n̸}/Oň%2]j|0lpY~B le iy~,_0Jw5mE nOnߊ e᭽D^ (}8^?5QzXq$Y͝~N4_ZϿq(5Xh^j|6sF x^o=k#&'D~igXtGX[,d/?p՟3|c'+k ,SNLk|NjR']4~hkYM.-+{ DbOa[Ka?{W}.iPkNC&rD׫ӿj)2~oCcP ?ӟ6ٟ_@._ȡ^ মVj\+ޗ0aomwj,Xݯ.\0FKm i):$(L XZXԗA\Q|F& G|vGqTriՇ.wti5ORTq1TlSAf&EVnKS#;} v,E+ 2t7K>`U 9yv/',f9}Ff7Z v"d##rĬ9\0ɝ jj.پqF>_<;ln;%6o @{rbk/B;}雺z:,h@;]ϡ,|UIM6F6qK@p2bk38K}Ylvv;iB]gR34l @{pU*v-.T5Ɖ]ӢbrHW9.y֓#gT`LZ0 o9h&T7kȂvmJ-I]-`poT\ljj&lUlYt.05P0nUf&ېfzC!kPƃ|@Kgmsob晡g0v d~w_An0@ɲr8fE W>XϣM'(1]V->2ů'u³t½aSE#pJ mkйyeSiz vtA +˒&v͛-]%Y犋auD{DUWk 'd%R/ae&.,p!vrlȤ^5:PǫED+!^mh!ѽխ灌(lL$?pdRFm(0B fr&~8}0Dt-tȑA"d4wkR@gŎ(DG&ћyFvq.}Sd 0#G݃غ8GPgGtyY\(>L4-^=/oo3%[81swpbJ̵AL`44/ʊB(o = 㓣8Qcak *ŝᢢUt[V/aaAEۍ NtcT2CcIN .gk@ J̡' IDs|*ݷy{)|-8i6#g\/q^ףwT&%/LHv/Qt|:?|xv'%aLq1G7ͭyWhM\s3sRѫ\Mad*b9 %8NzM|T1a2L4ԉJ-˚]H o{/kG#~k Q|v/^JQJN ?YJ9\ z=>y\D9sˤ~9"O4hm3**smE0VC|- HyN4Ct@[v#'и)EKvZxE6rUo+EpgMDw~?&ӝ'"Cg ~o6 ]>8(P_Eȧi5K1u]Z&y{jc~br'$ |;%#djuRSy#ŀ.F?9X!^ RS~LP'&%(mIBJ&Q`9o\Q\/wAǖf[4 _4ذ_<ж^WUN>uX?pg!Mc*ع.t;V*=C>V~s"?MBhoa&ȗ8Ɠ]T(z}6˦̊O ec$}-W{$Zx)"48\ ƭWӫPhk{?8=n%=\ d/IV戽_0kjB5{`0{b<rs\1CρFh*aLj(BJ$ cd34Ur7?^p`־W? a5y|en '^2TXܔPu2Dr익Bc{]53If}?bp)qaɡ$W^*`SI;nl}u]&zxT7v""rBL#7fnјMHƑ]q7lm δ'"Oz(_D<H FGʏn$d/jHcu+Dr+hVcUSYa Ѕ<|8pK'ˑh"(hA5_W]Fo7 |EQ]/XDԪ$9Mkt QzwE"YSqm"d c`众Kj-{ltG$xlU\O-bDeiƕn3ڊ +]~̙;}0eQrm'<ȣ:{0]f%AtB9{\ѫK `$XNc>-+b'~T^k;pncԿ꠬BٸhfII/`o<4g3-R#>(Mpwv@cg0<5}$2˗7^fw ߪ[bV-z* K01,48>cüg$cL9v);!_ ]hc=+,)bfȏC@}H'~s{(.ڴt(ae6Ko($N^*|>gz= W#.9Ggtha1+ng}85u-j2RVc|P "V@8_|Fm"^b ΤgADzO5[tcoH.C &WCqQ>ډq=TW^&dɈiH4ce6&5r8Iz$ˑF1M[kcE-KؑO Qavo!RLS%Yċ_`vT=$c]K~ AtKJd&k]֣>$VP|Dd $W]nϣEm vA3MJ Lz}H~4B6)1cH}y7.w[d@Ȃ'Np8y9.,׶ 0rERaw$wKښ)b =H=n ;ԝ4$rn@*[P5BK'hj 9f{`ݵJn$* #JLEgjUNkzj443@PCj?-n)ѱ> V:[t^0QG 'ylu 5:]VX?Zё%GQł@OJI?}Bo9i:RLw'l$?ـGY)eDHD ͛Eq I0f'e|G;ga0GRXL2};.ZZEňE)TF1O;NĽx',\Ӹ 9=AQ'I{duTw=mAQ^Z]|Ňˆus]VE0/7w pZQ‡ߢ_'/JZ†8h:nݡDēC-fm[}d60gho$1fwZ2Rm,&)pXl$yP$䰌+8x[3)2;4Xj=X8(G@PH%` )^#.7=$ᎧXF߻pOs)Uܖ荅l߶=ᷣNx MW:K7~d`%BqG-{<]ˣgY\-+9Q(Knz# TP9i0z/ ]80P<$Mc;ԘP%e!CDV }5*U ۅ#>gqJď("iEznsn$;M?e[>'.׵Qw4 5 $ߥ\b v>6is YTR-Z8SɚxMR|du㉬p,e_,W׸CͰ YyX2/.̵Is/0ro($d7G+{R,N|%FX |9R .܃D9YkI ,im5BğDvak_EL |KR{H\z>9]Q"6U+c%|A{30C KkiZ#=,9:Rq9@7&Sx[AW5B4Lzz&tG1e݈ @Ӭ >Z(cqir-j(}8}0fI7Fi# ` pLllOx8h P?D;!GeXA\̨:fFFDë%,d~eZʗ#p |$Ҩᮻ_[1v9rvL2$x^ F3b"S;"p&_~US0aS=g.nvBXW ͞Љ|AdK؈R?Rw<2}#`6-ZSSm4%']GBjǀgCTY&;KΘ\Q5mL` xlg>" R#>NG(F—.yȾK[h~ד}Ygdv$62SRMWӐA ˑWe]A πtK<>tfp/A( à`hOwz~/llVaDO `` Y5cH@:#y ( EQr5I ,TW4ԨHM_PGʒwh:h遭;b_ uƴ|F:y1 I>(Qg~9b1;xJ/(=7y&xo*#ggcX~T+h0X`/J+Wb4wǒV ٌ%orC;-%/ʵ$j .<6ө$)J>H <&Z 5xX=:>&*ʍcRunp ~_"_%>8M_cyuDSk`Ox"Ņ[Y@CPwPt Glh;4'P۪L|x]U!vf q簻M,lm.lYER"M-6j.+^iɧ.AV6(o۪4R.`{} ! |+3Ю#@nMFRWʿ˷%TЬ,ֆO{FK)I=|<$3e 78zÌ; k~Q}[~Tyꃯ?q H{q2sV^@䋴M׉AdOk:qZi x٘="NI]37O&߭S4I/S?ѮY0 cYS&> |A~V 9v(50\ѳ؛d >eSz!l, 1LǽXUq/1rSJbs2g>;6P5\1 kh:7Y"Ay H_) 8r5'`;2q@݉GMےJݓ/)GuG]]gꀦ4O!vIDy񄫊DpwP4یG"px]dbz_5ȱLEsĝr*X hUʙ Ӳ& nar@ⓓ׻n7P'B5 eM9G3-ڈ0ƅt ]#4sF9K=~A<,ї _AĬfސ-" GGcӗWy~w}-yM1_"8! efz qCyuҦo~dvB3"ޡ(n*xIZiʥb8UF%f/Vሻ/Zv>xc\g؃x}s-Xdso6@i,+N7<Pd,)\ѯ=1'}nwű͏MBmAJSvS SmK:M`>tP/"}+DQB{TPpqiq_sRIfb칞ߍy*J/]^ŔBTv^Vy!B~.ZLLBH_'Z5h&]:g MN&w3BU>Fz"uysG_qZAP"]K1Bjֈ0Vhknl(#8dq (/8JB`YFMOmA3U9ZGK$3KJ>΅D5(Y+g^Vxzo5,G_SurYh}5r`f˜mhg5nf^m&Z75(6u_PrB xmFs+ȿ:HEߺc4@5@ əcPBmz9$r^"[ʹQT*Z<-; DGvLkg&^y TM*DmjEk>uxu/ ÂFUJxzY}+lP ' ]y CܾTg~e(`)r92Qz'1 */0*z4>y'gi 8+tfZ&8)pmx+ͷ 7{B*JLFn 4gIdRrc#񜈝!FF(ϱN eĴ vge  }ӍۜT<95^7+]gLp-DwzpM]b=je1D@+ؚLɕNE\ @Ņo^oQ/࠵0l4{4Q' w[Sڊ$U9@0eukY>  ]ZdF<6<Mx#[yuB^ƮN=LS[%Gx^a~D٢DwF`{¾]|$U0pLv[KR}|dvSL9^*ؿ ԳSϲP5PִNoґ)W(k_$zЛ;Pﰷ Nяb,;WNRrJ(!^r`~Ou 2=+>-W#ʴ?qԅG L\Vˢ۱~؊bPH6OX:Qdz$:U A{(7DϐvlRaſyO(Z75m҈RFxji9Mn 2=z`9zh?J#\rx `M>$=$(O^{wwMk&V)"'ytqf";>yT}$7ѵ$}q t7Sސm?L,GUdCP"qFbޝ z\ps$ʫ 9Ɨ\y⤻ Im>RU_:tSح?Uڑ{DnS3i@Zpgpqr@<QNZd4>[udp>Ug}Xp[ƩMi.x"T~M]mkKŕ e2eJ!6LYwAZX64s$͙ 80߾Bp~mDE«G`#Yr9n<'N[Gn>r&SԘC%m姸ah.9 ZT)uX dxJ&!PZNc66į9**aE>o6ړlIy0,}=p $ :G?$DfHLn ]M~5#u 5KE(—nBlљNutmOe4ifrW+qN]6̿R)6mC n!ц=Uճ?8XKXeT{~lb Zmqb?gq'@#Wa;\Ҽ- .iCg!bΘܭ2*SnGp9`f7clޟFOR]葢,Rq$O]Y&~Q\ CVq^(==z\-|NO(YqdN\!O)Qj˺r"pIbb=>UIEZ[g?]BHt}CorO]qY_s5K\oKSH3bv}e@Aɨs4$Z@EgEp ڱ|*ƃ~֊$.S㟶8tMnϨsZ~s]1G1?fR?l (\CNyB)s]M%:d5π1@H8 P-4b3J n[*BӅ,gWGVFiDN 킳"n@y"A?u^s/ҕ(]|P(+'YuĝikMbE ETA@Dt*F[E6?:Ǧ>5<';7r y3e!Ά'EgЯNqNhc$@g/c ֔ '(786Bj5tDef{ZĄd0*X+/[7ֳzHZiZ9HOk<B؟CaF*0> %+`w4,N4L7@:zk61.ݑDSxȻ]ԝk٭|,9PWEoUf|7)#KVSa?OL*f'ANNh uʚDs3<+h\5C(: Úf@o#j sQA*dTN)g2-x^Ab}]3 dQy[Q?Dܙ&w,Q;"~ pQK)~jNY.BaS)^` M9S; }1{DUI`Tsw':Fxєx[rFv\eE 500M?yռLY(:W99sfolL'Q,jεج{̫[TzJG(T-g dvZ #HnFvZ{FSUِov|, -&Hg\e,f4#X]D?hBN3̕`_saĈ8+hA[=Dao٩=#-3H?fF!UC Q ܫj%AQŸ~1qhpW v3/Q/ȋ=jHFËG5" 鴼f 3]:4ƐDLʫTv8oӝ3}E{0/#LهPf_=lipn:(`F5K R g}X^LtL)牗s5٢V ptxO$i)uA' W=t.ID۠d(Gi dt>SKr|D^`5 B!>wy=k4C2Eg-* zXh܆T]?Wt-w0 %aJxr= %g|wѶvdx 85J)&pnf%YL,)yulgSҦl: d:<7^[`X_/pbR#]=`edӼVrƚbNG)g~1A2Γ? Ռux?9'dPG>CYƄ׎3O0F'TNx"+<:n@DrU_,&͊IwUfV`CF3Z6?%n[BZwͩ]yt`]s[]FbSRϙ5B 8KƱY{-\)oK>8#kwٵAȕspf iڎC㸔?C5%nӧݑTdŧˮ1Zd ßY %:ĦPiͪhP+hz;Wݺn  X&l73\JNTLW@?߉;7NnqA& Pq9_a8m߄*ŨmT{̌eѣc~[KgMA90u"mn9"Hq@i Z>aZP.G8Lg$rA6:֯r ȨU"9/H buX9;*OWQJ !OY4E|4ZlC2.#Ø/z4gaՈfa)rN9Ӎ° eęsVeo&5Mw=.%%z},km&]Q_o=#eǮeޛeop&;*q^Ь:8_Qwo^h_CIy Vˢ@X%%Od6&Yn{-Zf|cR=e bTU&@ {>WU. % x!BDZFb~uz5|?rv6,4BKOu>m5kf~;Bl; 0(zϭLMyʜ* 5+!u{("# ^RM3Q_g)yOr}9ˌ85 ޔk/vAs!Do'CLֽݖD1qy~]Hactܣ)ScZl̥'#S~"jFi3Ȋ Ÿ2*e+;2XKIuBШ;yf D9M/ɼNtQn[OFơY{BQn~X~ʭi992j_]nO+sX"Agts3_SEʔBiɂ8>3璈2$&DHrJW% rݺ×~Lr18ғ7gp]m3RY뵵p&qDt'UoTJO/w14 FLlX+JmMdXe(j?|O hږl5Q<7H2Ǟ* X5Ål_ſbM7 1V˜GjPdnqo~̂?c!1e#};qk`WVib;A fB{@dxD/@d@~K1?KGp%ɸ$6Z~jlivra,Պ ,p^}#6rYlJƕm =={>TqL~EY!4Э,ao"cFÔUc ֏7o[R[d9f4 J*?+KCIF2 cQU{u;*P˒sWI2ʍ̞v,+%f}qļFi,ŔV[]Sݵ ^z#x{ǧ,-CUkoM'Mc2ο0=Wj-Ur\k?&ݩ^'f"A0fhx}^E fja[y2SOC7Z[p»O]1k[P͋AYGJޯ05XdxH7Bs7xc3p[lI@H9̻=1[;"4.&&8]Y$Gfx ۘ'OVǀjz/s[9I/6_C[O'v$$Zce a$b2{Y#) !p[qքL3Go2wy\f#5̦rራ?ju&c K_ɝOx.K tT\0<"_p{JN{YD =,w, __e{7uiH3r ]J-'HݤoilF3#UިnfMzSt0u7v)pAYISj11n-?$?3J3=[wH+JTvݸ+f.WJ6J2E,f^g }xr(g'խkwLװ ;T4SV5y<3i!A4 ת}(g"ɒE?V&6 `a+G#JnE ?"ܻ(gzfB sRJ/(R}Qf62IҽDvp̠Y 2: MD'fv#YJM8#eF ,_Y ԩr6$oibK*ZklvE~-: yO*N n_rS;k Yxv=Y~#c O'On3ő h_v'>t>w:R5HO\Mj\0!ֈD9נLij@]0al֒!y[r$VvFVN3TƫD)oězjqނetLkn@2;K1X]X4&.BbI/ ƚm _H'0Z~wZ48 T0HnVӺIAY )zs93nٗ,:ԠmzȠ:/'u d![HII hbhp#h@&`j^߸*Y<& ηM-2ZWlOXm6Eo,ݏ_[銇Ү)+/$nUՔ .>?4NNtU% 0JC>aׇ$bH vDAhQ` n=6W6L 1-γ~<3b)`B ny~.ޓ`(PE_Wwc[yZ۹ah32j)|f6PQoՄ#=02ޕOEyK%!0sF[-X;44tju(%Zog{ͫZt1JH?A'-6@pϩ~ ")"۾c%+sk2kbfB%&I,}5XDyP  9 JL:0M8~>]X%ĹVu,ŭn:E1zvgfmM)`4HK2sI2$-e3@5fcɖ%_wYڙ1tѷ,=uen!طEaLC g`Q&5pǃj!PB~zjsJIugé=zsMd dqsŞY;1d&5] aR_7ܙ/I?&ky?S.LS!X5mXwFJ2.ƖoeE=-}+S g;RY*9H(HM>S&sTeð0uMlY݀"]HDW,2JQkVr"*ζ&Ͼ~Βo@/1M3,0=2Fa«)t ~㤿gv_%% 3􎫓@jO׍@w/,ɬHuݯ ^3o-0T,ʡ4DLaPvKP ߜ n2V#"&ƺ>4 Wl[xދ=W7f^izNH~ZSڤ|8Iv#}$NXW($ bm"ހXj#FZ1s^&B2x J|jȤ([//&,PۮNҕyI//Sz`Gb33 "$@$3%zl;'*QĵHjU;JX~$I:e/G zrVצtl#fnK[xE0m' oR。2նZ9' ZP\bk(^.F%bl8OmhjiASbLɓSsȐqV[q8\9)FUvsK1|x6l1P[CE2(3'| sLf 'f)ၨwA bIClW`M?+wxa:Sj‹=@^ Ss]R/P[D{k ~ӛVz "z6}ˋx2=V21hbW2Y0f'PM3]n–]~Ew˄T|LʩZARFHӶë x*V >W5K3~6Y6Nx\ey*@v0~ji{} Lszdn}LXxmHxe\2ϟRDqG~(Pݰg=mo.gi+u<،w O1`sԔsGf, p⟵I!̾#|2ułe(%`4jVA|äs*S x{g$ǸiO!G=`ˑfL^lbA씎GsC@![/EŘںoS4}Kٯ[X^X<7keM./ԈQcxnZ}@3#s%yNQFÏ sg&Avp wP06 zwG|∐ ln[W,،㥫 Y}\WpQS^P;E;7Ԣy/ d%j h㡗1Cum'$^6]ETFRG>[90UjI |N%K~5G}u~jg^>^;-6ܙg5k5w 0iA&樂$3ø$?K尽1KKy՘嗒1x<2 ɧ b.}k< m&D1D6~98TERjLW̝/ s!:R,| T\8k߯C g|3$;i.i,YL$_ gc4驝5$rfQ^FAVEun@%ox_WWlSTg)mLŴ1v<M Z'-&EV90 E-IQJbE [hCݴ1/MЏ@kC l70  W.؆҉+lQFd,Z,[7͔6MX ~|lyfR8?t4 3a.dPvVkNI3q?hY'eGsYş$bD,.1<)rG+#ua_ֈf`[c6""S%}ۍn.v^4'PEIhoigHt͡۾+H~`qS!΂PYzWN6/"uSGeY/^VzrwVQ<`+H r>ssߕCZ.J$RvH=4VMI4Y[ `ƈ  ƬnhFJv!iXwX91N+ULP@E^^_ʅU'<E=qU\st I X/;`q> !gL""k[Vl^@ i+rL;e4t' fKKN$'(c-,7et>]pGw"/wk,6 {yscv .'$:*VF.3YoguPžRD հ E5o.(gREh7{#2V6hS6||/ôR`Һ99?p5K Q# +hzG伎zXfqR^dXf*O)h Pz_ްE"oeK@- SpZa0 ,XsR :5J9"^\gUnr(gO,JLښO<䟤HQ<}[τ@ 9z˩+8%!c+{?Y˟: =SU諗H,v\T>};&JT㼹EŸҧkP.[8O(̠ۍ#/H:fioeVI\ħ3gqs8vR@Z@,vf^H0,"֘ ρZœA*}PXgO];;%+P(4 sB/$öb HN#fi+K|BX*xMi.ǂX~pg*=O:Ҁgs$ nͶRKZ7궃e~u *JҸ_%6 qy~~P%"R ~fb~BD!,J<>{=8ۃQfv٥Xy\blz_'>D'a}~E F%xTXmb۾{TtJ!eBmOL~ 2 `kQr1/"FO4TW/;9 'ŘET!յ0R4|^>yr_6 T~ E4C<:a} H`هY>t vw(8c^\pLU )߰o⼼>1of S l"MT748m|Qux]?qy>tG@#;uYu>7)``) ԡjޖ b8=TWsf|Cg$[잩ˏa]X'Lc4}cs H[T׎;֪)s6Y`b]C|c @2l3RhWI 󠯊1.&>%v:;mхF3Ӆ:gxk򻝚-S؋H/\[Z?$Ip.Yc4dN6_ 4jitQM~S(Oh@c9`͹(Lة ? B1L:$DcmTݍ\D^xCV\8V' JאjMvڧ|Ccqnsm95̙=Y=j5UwB͹8dfx]~.=/(K\uq4ߨ)Qf ֖a¤1p \YCSʝne$ Ť+$ U ]g5Qv?QgOC.zr=ߠECO->ww%I:Nˮ̞ll?&ҟ4`N=(X賋SX*q{C:M7d)8U+ű c` ]BbˊUG z9n7ÑiёBzY8u"XNrp.}tF>ۙL:mV@Ux)sƛ4_s?U)+B&D%^r 5pVІS#8{%xf k.3$<9IF!&0r!9 X9[k_wska^I擱=BU4FT5GHV Vuȴ?bvi.̏F KI fqS})cњ(*:'Nr;Ѩ+6e#r (6=78&+!X",c IV0Rg?H3+VԕR7p#mJ6zje&EkvAN&ɚ3 OdLyK$Pg!#=ցO9O\GI߷ %NmLNTNҲfʁlHUa\`_4bkX4^&;":Ja<¹Bd ꒪,-(o`q`=m2Djc ;xflR| f۬N +)lnNdVա-&)Q,Ax*d=2ׁN^xځ8zv h6ۣbV6<ޮ%O.C p{*i>+2f}2Fp㨡L"U"H:+_Fncorﮋ?57&ց7Q*K] 9m}.PA?FQZdx&ܱ>88\/ e #{$FGmfs__ɐ`EZ\?jSag8qY)dJVtqAb듀NmhTbC6יT`Պ$qʭ:w&-g20^?D ah-|0+ []U ~Jm81=LC>Q > okݲμ:ȜL˸E*넅őP6q$BÚ̜y'fȅG_*y0cl&/k_PFcL7bjĢitp?;bD&DSOMewx!ΪI(.5_+Pq'Q.KVPJiPP:$`=lzt-Kr Σ"@[IQ3S1K 4PjRۨU \h\p"P⹗Qsw·)N߇_&ʆkC8OSzsYT:9sV8g[wh!DXU:fdGP .tW+0׶u/&7 ;:7^jN~#XHi_uLBO'}92؝Փ],8Cbop;x!'=pxZRur7_<7%E!*R_'WAa?:Ww:΅(- &r㕸D#X &l$ۊV;mJ^}(,VJlcL ]ᐢxuMh^T `qbˀb2 M (iî׮3>[aE3$9\7.R8U;"ݸYrNǐ ؓ}_d]'46g }GNsi`e h *xHo$V#Ut,R|Q8* mp" ߏEW|Zw3,cZU .R=Bbo[)aW-hᒗzҗ ѕ3={T}rJ#<"R@Ht|q)]M_Ezcfy PH>=HEtF#؋@#rS_5',,X8꽉b|&h]e>۰uj ~OXgh=eN7tS[惭+{fBݾCĶ\Uf.eChډkUzY˒JAj[T>&PDIKƌqnx"|D|6+d0`\ hF|g ӗp~x^ y ߘzysxU etSnMg|i&6 a0{:~€9Jb\QI{Bt]= *#/z~_Bu7)< QuRj*EJbX@4$ %; je~3ܠ%5zsUO@kZ" \ ΋siUw&7lS[]NH)ѿQ$l)`E ho`c~%jsG?:wIӵO=U_KQ5=1LiYrttc׺b!\5AFLiPQ-murMB|%G/wzH5-h)PͷmYUF箵i0W>ޔoEMDs,T}xoL0i8 ZO塣~)j`YF A$_obj| +U7T0+CbsDN4ofz.ڇ2l1ֳ361mWЦjLjlk w#zCϼʻ;QhTWĽ, SQu=ũG5E]Ҝ҂Fl٦0ϖ ^we[ |f 8@-t,nx1@Dde¥ǓbO_Q~Ę `rUzAqQLPkƯ"G'X"I-bS-om3m`_73_H})&R_ J5&Dm3^;#aڎuĹ3jK'Ybp W!sR@$Q='ʤ^\Rn]m+]S@NmGܴ}0ԓ6qp(2 _hZ8Ϛe2[ b @BPF| FLC ;;֓&|~2Y0ޖJ_f[9j ym;qkYrռj@%g/L|j/Yf"J Dv Ynbyw17#'Aڟ^7̖(rHBѶҤ'J:µ{]٫(4`%0^gG(\UC2=oB"01%+aA`_eD#*<? rڂ7W⏛;y nxf 3Yt*[%VEx޵6*!~ȢÌVF\G. *-D'hx#_q}ueҒ(~naGӒQOEсIE+"e*C!gĺ¡W8f&Uƕ==edcD?HPp< gC@gs؀ u a&:Tn] i9zv~Vւi'0䁂9 &8TQ(D`qg oC$*w ݊R}Y`&DLMy~[8Zd ~8k( T\uO'vq= DLI@~gq=S: ά8~X9sp$Jڂ俲gI:ĐKl2h+7-c FO[/ygSRJzx6FRfSw0񷪌5ypBHvy{vMxl/+9, u :#0Ӆ69qL2aSq~>dEHqwu=ٞ}JMsvHɥD1R~[v:v K%DrcJgmcZzi&D³qJ3Q㖜ǒ5~hQ@,VOZ|jtmsIE Z P4&/aΙr/Y>6&X].%ocN$r5$, QyAΓ&-Apگ|Pr+I?,lT{&B)Ό9/YM]/2cg'8̂@a:yZST3S }*($9MD$)E] 3Z q){&ubS*`ILIwn]YE$}WCx:"UTJ wn8}~N$meT?pcm.Nιa_ˮD[+.x i#tFuǴTh3Y\hWR'Pn*aN>MΒ+fo勩'6PsF^MB|}CɫlaDczWh{+6.I.]Y@̦kce.r~Eu{Rj^G9SX5䷈ `]smKqMlZaQ`mC5RбPCgvWNGmś60^damv*멣 N1yr۝!6T,ٱ3Џ(rqdױO?Jbb\LG1yQ|Q?cԁC;ݚkF=uU*tCU5RܷOF"S4ro{߇6E'\BdPHh4Z#aTC94#!rM:}\^F%7 !"Zе(Ѡ DZ.+.盶PMA'Tdj7%AϜ3)60`@?h*uk ד99,mzß/$Y0:C .s`IE_Rg1rl 0H:X [f4J >O=~6/x3_''_sfr IJjKi_>SA8Nyb> 0zr? 7?}FC4l|ϭ1-$ sx L'2hHRe51HgL!uk/έ!K^֟ӧ[2%{,)ɂ;$L<3eW49 KxaYi%-DQ")eTAzJr4gf5ے 5P' *Igԝ$0 _Fly_t9EVt =*6]nQs៦Ds#վ-^Ra?1/fQN}8} T0{Ǝ2u;}GDIx< 4׺5]p##19`r7aC0բ(Tܡ2c]rv[n7ٻ?4kńQ=6yfSh$s>\xM.~<~e0(=bp2 /S ϽPl^ԢD1.&Z vA(؄>9%O Ew)`6f= = bM1Me{cw@NDQX:K^0A85| N8b&C]mr̮ 8ƾp (Br Ѭ_ԓ7t7mW5ǴҝȌpῂd1JLpQ?q[d!99,,8r鎋*Z&@us[r`4C Ocd掺(q`v>t1c7cX4dcކ~mMTE zc _}ܷ(!_4iUy[Juttrk)mdT ƻ؉ReRk}{ ot]ӕMllRx5x/L@=D- vBg.*֖_zBVJq%/s j{Q>aH7*id=ݦyP&~u_o<>X]&+ :)QOX55ߛuC ؄SVn j_9I , J"#}63)zX=\JRhp T3PVVp2E-D@FgHU4԰Jרc(v'|}H1I.t,m:1ߑ\_c"rWpnM?*'ykOPNV\3RqHV? WvN7웊6<nU#vz cx/Xl8?-?!yPqڌʳ0G(&5)S,>x*t\;qJ o"[0AAdbu].rmKF+ J0ZSQIДX '=d9=)BW$~w{3eC^ß{ey(z&Sjq5'Q @LB{X'xw '˕/L@;HǼ$^ eFHW7v\MQz<=o8n3 jLah6kJdtRmkt-vr>َu@$1g-sW[w}ty﷭)}h;f9N7&m;Is/M1vi3 >]\ۃb] d HiT!<+rth\VQT|e35|8pR ߐ {  -;H-s]%/~3lG-+[|hW[t9X1R=V}3JUXb[. YMٔ@FW 5kcJ&YVy\WCN_!~cNd [N[@g(&9F.."k 5Bѓo^d~ ) E/n;p6Xqw8]GJ{9K -a5w&5F&Aڟ2(_7 #,oPxՈ9dj"cQ0fPt=뭜%ϥ_qBeUU*' 8z욚+{ A|(֑hEyL8 ۦg#]q v3T9)HLN_hCG}ްs_) X:qڦR²1:1qjb!DhН7`c.h_ͤd4!)i6fLRjH1;5gbQJQRP2a(3K<ɶd j\Q-2ItBTREiWPJXV9b=8UEzz7|܁D%fXQƥSKl0rmw5UxehHrs"`/&x8eĖ;F BV.lg~u =c[%H#{l6׼|٩WGNk)ݒ$VcVV~5_Rc$ L*}Y'Oʠ|3|`n8Uo rS{49&c;r17[͹\2_ 3<=K_/9ײdHSq-A>4bp^+lw6,\x,-#(E aY;>ڙb@n#@MImbqϭAzQ,}!5*~=o$-`deH#Rb!4 (땄ډ`8Qʰ@kly+uM)&]yJ]#C$si -ߪް 7reJy4|l_gT (LӮgxY7K Lݼ_=Yws&9 uUTIm+ǐײ]6%p6VC7.DWWa30м{>@2*{N⇖ aK…1]cso@ԆH ːO,}Dbnjܽ)I4{?EIzP&mɧÔaxos#JGCY>{ v~?mj|υ\,O~xeqSh[ٸ@\ )FS&>-LkvIx}_)$4œN EcG:KW@1f膂 .Ukgnɿ)Z6xfKXNpՍMI.dЎa\uڿ25.W>{7^3lMMb oe4\֥eX]Y#naFǹř'RyQG:0 ⁂rMrNƨ_Jj"O&t(<:i)D hOFMSϳ2k/-$҂Du];t|cBQ_қKxO?xx#lJ^S ۖ<^$1+P[j򡔬sz:FcvW//l[9[J]hMc[ k%uy9~LK)K<=>i00A] ^꠱Hd;* YvoCdkR,+"WOV?]4Z3O.Βm +=7Xih%0o|ՊC'Eyޅ>HczL#^ows%NUV3tJdѮ^M ֶJvf4AuA9 <ֆEiNGw'~K1/46(CL{/ \i]&eh,@9"0cX[akd7PϥZQe E[&*\7@O'VZ@!CΞ!N%]}g@$ϧ#?geAAl^Vvl p!Dk1UlVjnȩs&]vL`C)rw(C @;U0` #sU@Inoid5{i1jlu5͙bw-3B{6lDtl@ !`&5f *HF^Ju~S݅VpD)JEM3C%ˋg%V|t.ƎY$N!3+ڔKF&k9|':bK\{mf3qʟa ψֵEmvXˣ d}iBjE5{d@l$F]kU,zr|E1Z 5ψ ނDE}<5ë4;l^ i`* ϸҽ%j?]g[EOuGtyz-z҉Fݛo3C IULj0 rJ]en,ב=n%-gyb ^S'Z~5F| dv[s?Di>`Zހndf(p4kR f,bMq)ifix bZaٹOUws۳M&d@]HLhbRyI7bEiVfQq$!q!#𚡈~.iMVkcV0?b')5:8_c~34ݚ"风auw+N 5/?Lt6Co)%Nk*? e^ڱ eyhlk1빜J;K*V胬0DͺeK )ꥮG&R2N! , m1̢L#QX0*:t|+E0)'g:j8Ɩ/ۂhUAxT&m*( A8U!̤qmV:&L?Ku5w)TO4~I aYǮq{-v64n 2Z8_F'0kg+a=0?FOB$1 +>:隊;O}vGVH{7H#Œ+6L{1,aͽhȰ;&_̿H3}VMb'?1MxטmQ 5HEbpt)rwddOM>{'' "*ip60PuP#Xϕ=Y%4c vҵ*ph wCİS[vU00Ji*oK !m.TO-ܴ4op_kj3Ǒ;Z,pJUjsBoj&jMڊPH~Ӗ^~K/?ZhJb|xRGLK!mHDM־/W Ir'P%EJfd( lmW/E%DPTꦀ<b*zWco;SDؑ|e!b(`v#ݣVT-,{\sU8l]L}g0mR1XP^k#bsNGu&y8W:&}짴Z+k^nqF_-FqbH49,eH#Y[h? sB%QkO)ԜB Jh҅%N_7&c?WcσL(Vqz1Ph|ɫiC??me"pdkE$]v01 2Ρ4ckX],3ժR+/"b~&Bz DmVjQMi% r|3L#mvu?!9b~>"'lC466 <*6ky'$qX=ޣLS ET&N,ӌ-05=,{{@gS ߁Dv&}*C1Xg$4&į`xxc!c4ZHҀ>ȧ_UUs(q`s-C9vuq f`p?`+}S> yskLAgv)d^5} VUĤl|`+guJYeAKژg`ڠA AkZI 5wJA6> '}%h̽PM2 `"&@fJbRP *F7}M5ľR*H'Y.C*HY[gj6&c u>)&ndӱj%?$ƦRbQkA:`#.kJP^^w1Sq@UѺ߹"/`}pg T+;aɞ!Q0gȟyрqLc2U_%?D6%l(FO5Rn38V* #^๺խy*Bo i"m&}𒐝|\su2Z _#E.\'d:"l1t+sV6hM& .nn/%YSkrh az@.H_DguЄCl;۔ORyYTKcpP'.i/,2^}4 )45:|y[L+s]2Qk?[Zv6p %Na2$|"hC&|-)D?Oݠ=8?j$!Ŵ :PEwPkAR-rZ8LxM"tmDw882P K'?#[GI;ATj5E)'cm-;N 1DQR/&2{dg:\Vi9HYQPu(e E\a{d#HĹAZ iys,q c 6W"CVٛ7IJGQV*.yL86Yԇ\jG7Li;aEWvH ӰR ŽŒӐԹڧQ(/Q:(RBE{=W FcdXʡm'auQwC'P"r6g~sz| KbANߝ8|y<} *,M#syĘ(|`lR|+{%Ɖ'iuǏoe* d\A*P,Oٲ4+aA yOv/f0Bae8 *>e1C03 a0:}`6z?{]Ͱ(DDx<-ˁ~a6J[s(Úi%9ϤцT2BKtk>Mxkl.bx\B{4Xye@7h?!9A"2aqDNm]Hĝ\$0nt]\OFx ۈ>Q͔1,TURELN6%vvU/Ív]:!yg.J~-UJdIэG>˒P+b5N@2`[%GpH9=8zӸ,Ջ1,`u;uu [Iy-4{?]rsa4ţ 9k2$TvDu^O!R#BK,44G%8 7 Q,N t۞i`/kI o3Ǭ'~wjqMaMgS(~ "kj_m~!f} 5qfcJ0,gZ\vH(w3NC/ l곣\3 K6:{gRYcmQcQ KwN-x%`u BAxCL-}2QYs *'<2'-] #@ƧI# Bߧ+h Y#cU6Rew3R^Dǐ %Ns*sd'a<­:?߾LmmA ȦD5q,-&̿h BmSLN:D XtNok1Ĭ<U%UYJ#ĽI*e2IUeK @*O ,#zz^G:AWI0<8i2F(9~~,icBGVBV7cN&Az>r˝lx6s4@=RyfL DN5YD|pc6tbVPښ([uC>t@Z%"3"8a0 'CY.0yֲyFO%D#1B"eZ@81PVõF}0Vp7`8i]߭mq~Rિ7Ԍ_}`C0`V~bmF#]Q>EM=J[U.ߚq9t`)Wn5ra-rlSQs\򼿫h?NS>yp/7BML(esdJmf11ODm荃ꃲܿj:NL|KR/a/JEV h^OE LHܨs'foI ,iu{q DbQv1[vbESIU4QgCm̃ޓ)ET @ 2,`_𙱑,+F˃1{ CntƎt 0+5GNYdsfICYw >cҪq 1fdEwV +H]Ir)\[t7, wm\2s]A3[M֊T5{]a%ڍυM_+LFrR10Pjmy6^oX^A7Q~@G5ǟ\0pE`QȻw?Z2 eCU7N򤣆Պwֲ=7סkI10gYH-:ND҂R/FҩQ =46y[+xՔM퐔aqHFiu)]r7&8f휊d?+:hqLnu/I#/l4Pt5:X56ܬ¡\/ c p7Jw0$RE*L-R1~;h;~_loA$0!&e sJ9˞ h܁RF^"҈ge18$`Z6t?D9@Hpߋڈץb/{t٣ÚCjKMv1&|(ܾ417yɹ:7O*φ.Pj4m@pچg L BRw˪}CW#I$b*y&*1 kW(l>z+A̔#4T[,H}^D\/V"ι4)f r0r9{;z,I vo3@Ö ]\9_aCwq2)H>3ό:e}Ytf#Ġ n 1>xAl2~ lj͂g&$(QD7Kl^ íR_r@V@j3\\'Z8m#܂ޘOIq7x\:B3dˆR?\὜}q,յa lIñyZY-rI}f׿hfQÚ(P"Cn#ϓsʵ$:g$&RXn8OrSH2&3x$}eNlHiifC,2Wm~];e`T 2Kz-U'jj!Ԥ6W~6oJ Z "1Gǩ'}1x4_^Bl5*g]LC\Itf!CȓW;ȸe{`:2ͯY?;؀&4O(%*W 4)YW(hq19Rl⒙m)j^dWK^om%$r55t>(O6V]ԝElבl+SC_#=8'dt۸pQc4]S• CGY(` [πy:fU >[h<=9ȽASmW;V_`O:m"T_G{GdF1ςQYiw NZc3),`PI9dm5f (C \BS *8dNc=$`iM֯D(B7i%]bXwJyqDt$ aa ޛ3/Ya xgD,bj{ h:GGу&F:'L|bA3=kP>Z'SwP~B`T=T蒐e n/B2+BaEW+Ӟ!VTs>:q=. =m^}h6InGwpVE M:JvbQy bbIM k_zn@ 4W]CWb`İ>RRSv nJ$V{r!q= *z\[$?r-q{ wFq+S%m%b]b7հG23=3VYJE%Qx/[rr޸) {ג9M4GPrIղ=mǦx'?f*eg9*K?]TC5f͵yĦ[ËAp`.)uz,4hm9=#L/:z]=6 j?V\L8Iq͙Ͱ'.w"nH |$V8r"L?hߥnхz\<,.v w)$$*Kbx)ꗃ^5}9-:jŌJein `yS٫D*Ejynd6-&"uCRNyyݏi °t jDM=B315w:KBϹgdj(%P(nZib׵w3LʠC\QaLYa)jM-f\6"㗤EJgդXV̅Զ>%ɕ娰Re3֪4a-A]]fƯD/x \ĦY+g4x@8͇\)_'<-z䮃T0%eE<ϑ3U#cpݕ>Q V: U;C[2& q.KU"2s}~i4 j6ddkGg'S0Q 5aY\d6kȾFCɼ O0y ?'=<o{]Xa _|.k-8D&rˈx噤s,YΠ0_,gӮd8I'fo9Y]ihx>C|9o kZkNBqf#! |Q=_Ay_v(^9ZC H}u-^Gg "i$Rv\S[ x3* )pƐz4h>űfe}Xflu?]I=X{(NhqYR#jЂ oy ,&|q]g/[ kQ$YB=ύBq*y] BJ=qs)6pw-m U %nwK~]MLQEA*>[U~O8lTik!1L#MNTsZ V8}sc\jjl=Z9Z={|.=vo}guTbcl5%I举fcƂ/TpKUJNYKe~f)Ә1ڶTLer5,Rq)SÚ"o,*Ư(Q:G4D6} ĽEB/ƒJ}6zkm6ppx5.0Xn ӸhI(Q37D+KO~H7xRiv,oC1\2)>{}Rտbk,fQӰk۶ӭs0Rm.UMK`t!!f-tP] 0:\UݪM%$ߍYрGPlˑT͜7-M[qV Yhtlwsc9٧A٢ O>ў/1O:9JmXĊr8\2\~|:J=fi"9]- Jg0>%eH ,Xq[$ O48q"7)}fHq!kb3O[`pbZ]=CLR~m ?~:"ĝPN^Qrr8}*B9D]4qU,*Tnt1̌5Q a.BJmN^CI nJJpdş'ǿͤ@ܨ-6-ygCj4 nEi%B|ʼ}/2i)de<Й(t&pKv0"H.֧ei1j dURNmc^Ij+2tSN-t~AsL-GdB=y~ /*-ƭfbո P4 N&RE?swUN&f8V7ӌk"N; 8V:3X 9߂ƶW`t2 3z˩ WW&P$'ΎhpGBs20E6C_nԡ _‹s3 W@D΍{\Dgy  ,Zb+xڳ ULDV^QVpӞI8JjFB9l45 !44mjCnERL]~ҽMJU&2ȂPtz4kʴBтW2 zCS:G )A^T<2lE_DoiǤS$bM,UK{t ˉ'f]+Ba$^,$cjf6,"3Gw|"dD[ VN&m&6?#y #X0܎am)HUѮ5Ґ֗8l7noA٥$P\1 -T$ކ?JZ ;y'yl >yibks*/qӜ)X+B{n­Աo;Ljo,V>_ Mk] r̍QE$p\"L;ԎtA[^j6Qh*n!wvP Y@EN3?q"'L-zfc8d"Z4N3r*ad8):2DK56U } aE2P-ܙn1[\uR5HnV YˎٲJZXDU.'>`8RF8]~>Ā>heQ3'njz78ipt8LFrEF4_~ZpW6#]I5U~*=k2fb}7킯UN-.~iƻ;g fhZj]{bN^K#)MUNa/sHBMl0&EɨE$9rF@9g*m@u|3r-Z W>RaIQ3\Q㐽h%''4Fg_; /88M06>VBAtG7VhϨ"dih"χpA[" f}e:t]2ePyoMԵz8 *`6af齂Ҙ͗;QS,MsmssЈc8>*@`W"7T +|fH/G~r"U VMc+Lͺ",S{ z-U1, U5ԝZuEi>ېA 6#LIpAo]NFd]hZf {*.$9T.X"C/Ʒ` ʶ5T~Dmg;uoXh;]6 g l>A0:4jT!y[Uѭ3Ҥ L} qTyM0_lV;-hxGsq7~MC|<bM*sE n)Vq2?J h\v:|k:GG$lK$;?7ٯQG{pm@K֔zqoo,c>gXWal^zK.< Q&k 1 0ҟeʁo yK="ܬM֝(aVא7xErӸ&//z؝GRx=rؾc5J.$\> 73P]4٢[$?p2c_Jޖsl9⮟aX) N6YT8e+qkGGФ+݉}<@eo;Tx>lnkhiՄ@j}-wAQOosWɎ3Ƣw!dbЇ 3+.1X^NŧޣQ~pS P^Fw&)|\aԔg!]ϺG<+.'DvAV5&@`,$$!@ߋ]N܇h+k bأ7+MM0ÊR8rəY},sM38 ]~ |.et?]}X'{_L(7#ҵrlI@l{\%:v!k.XJdt&!c(~!?GyRq9L,E18lt2_%2Dw3{%o}Y^IcڔcL?P 0 !Q )Hd%>580|MKq5Y-q 9rI#YGa1k) %;#׷ k)hYtl"v\g0tJ^:',cIosEThdw3=?:,We)u) ƈ#iznq<1)G6Lusy}(!k!KL ^(pK4=#>FÂƑw2|##L8}Rj/g!5 F2mBon N3nh.C0LozR yjcLXY[#r^2nquTf2GMY-N#jW6OrsFtlGDZ,[!*'opvhUBDIm7ΈDd~ 9-'A^}m7rCjFW6P)-Hx ^"+!h|Nc j5pGO~-k4P}rRHrI)ZQU^j,7m'-ys{ L?bMJ[Bt QT ] a+ܑ"9NG#x $Ă5Yօʿ6yA;H8Yq7q/߁D[oBhlXV=']rhɼ+&_a)>.HۋɅP{2Rr"0g3QHh-rFzI ?ޝK2xkvz3g["[h, jg碷srvr:\q0R(wϫwG6_|闞 inAL#9Gt! yiX(,s@ҙ~Le3@o|OXAŔ=5h㴤ke.c`((ZTa S%Lz\SD'}qf@d6zjΑÁ}+Zդ*3VA*T =-7J7Z߿jhx)SD҄H&3vrTOF^3>pBZOb>r{B?y r6pI|;UޔqM /hLvɍn.sOs +t.T *ha_Ȉ٬Gx弔0Cp#vꊳ9YfWD'a^KZasD !B/_ `NW[E慙^zjlZVb ;P/1OϠԴg?7;?~7>#fS^ʷ<{sˡy^²· 'ixm.)w9Uv&3%GèiW(׊Sr@!)`|Yd{&Nxj>=A 4_G/8Bzh_pJtBb ܤG1C~ey~0N/g"cd,TH;hymHs[6po\12R>JN0sTkIYdEtu@fߵ &i6=8S,A\+|  -wA!5_N:ç'zۣ&bsKI CP0'J{rh' xy޶uvE;"w}4șqrpW"#N7`#-jAOHb!.ilҳuL{+ Ι#~D+eא5;b}^w V n5 '% S8y }|ψy{CPV_1Sʵ"?K.P@,4xOdtH .̰/85IQ>GVQ2{c#ERF ^MHV|YuiTrEHD={UTrHoqimb_CY?:ǮzSs/jMGA"ݳ]_ۆB?Ek.m};,*۾6s7^wW@8o9d(' )EWjQl_FY)\6V˨nb 52뼣!v!!ѲX{J V3[)$1V w+I_mQ1LsnSÒM0ZOZ f\{ | aîP:*`| G|:(eY2a&&}|/Y ``> {nAUoXNym,jZ\g;Zqbs[ZI12%:"vRB~ma78a/5%W=c> H߀~S@JbFpn085V]\iȁ%*݀K@YJ}E?k^_X=IW ES߂kϱ# XIFn䷠s=)\W J]j/ s%cҶN]Yu\U`d S&]b8i~Ķn#Fu:TQמ@GU)`c>\m^F>z%{b&W;/{4 Ak̈́FjE\Vq1a#Nh!D~|!@Uw{qeu &ٟwҰ )?nӞ3 ЀF  o$* Oh~ 0(eC΃IGO,-~O*M>kAa <(_:[cYJk6cTϹмyv?6KvlƅJՃF26{kOnku^ŀ*jM?'AeHnh*Xf| n XQ[KQjC2|FQI#t zE7S]kg*BNB4kaZ.-%CBv8RJY[iw= 8 U2?䓓mkZS)JFC0!/-4J܉^d[NV)G@uAOO:Oذi*@}xs%,bYYG W\n!)j;-w<$MuB^J'(XjaJiejD&REhDբbSwٍNڃJeQLwץz9‗|ܕrIy&>~\&D9g-8k' ,jy LEb8N٦%n y|]Ʒ5<]%T~$]}jF= {Y kA:\ `zS҅ sG cDŊ+Zͯ-}:G1$[B'~ oųMUd`^5BSa({D]L7i0SaY>^N2LfǤ=*kWPnv#Ð).E^r_ KR~~ECOVy2yk3ws)w<[Ơ(Vlݧ,G*>*tae~SӻuǪ-XC3v{X~g J(BopuCQ%6o$눻-C[jw2(( 'kp ! @ym,BZ$!5^6${Ϝa !Xlddi =!XV6/P4bRC ?7oL5˺PaK~,b mO^n ){tq9zGԓFocȈ ڎd#5XnG݊Taa}J3nVGv#QGt\& Bb[asGzF l5,")xô u1o$q87\an3hdkae=0!B<Z*!xAUwȤF;i~ҜUsP(u|&‹7BGQIPS&pgB zT:e[<% VKr#+g먋*j֮n)W\&n"&ab s5 Dz2K%%]8`]797Ƭ A tr:# yR5:qo'aD\vQRmܙ)cz^NIʦ7&⒔ma4`4q޳g̾J/e>JFƕ; R-{bӫ\ʹODިAo4=PU&ZWj{"͋1Tť 1:H`':hW1>» efQN&՟BL2+\ rk(RkgX+Ba8H9aZ0} JGe.spswZ04+yDTBm,)\?6[Ϟf-[{voS_ ǎbx5ք7 m*"~&qy*}p>fZ|MFCI1X {”IQV_{l+3C(j[caӯ N&/,r~' k:M2$jnj]AEu[[|jqe+]υ>02.w+vvi 2k[Z8@|X|لj[w:Ew0cJ1v/eEt75j?X!f\%n/"}rfnXñ:-i7m5ZtoQp? Q-ЖPm0+T1`…GJӷ4׏bwM½J ۯۨ:-Dns,xͥG$ߑq㖔Kt9tFjR OeW;9h" .lWHb;at3 B/l^c\*}JlI? ’aAEg$cܨ vaG Ȍ]6e^Rt DRNڷA9ys:9NSN2$&ɵOCpd 6 sV\s7tF;ԟ-ە(- Vkw2`n^[-շlZW'lgDNQtdbllŏg6tץ +6td̈w0ǾgȢ 7?#yoh2!!0 Hw][Ʉ["[1E}qn8sF4ZR.Pe=oJoaKL~S *Rt}ue>Y' EWGY琤}jĆ/[O^ZqBOZQi9XRBrpwZk}CI_ :W'e8gJk"\|CT`])8=Q:~Jlle!Mff{iTOd=N |E&>qq>#5k4G@ZE[T+N|N*saepJ1p:5twFGTQ0->( $,)D#smmu&} P^[:|YWr~z$|YZ G4>o"B)tlLcj_cMI~`kVz_Gk+~#`*)x"e;l \Srh:K^$L3hq`>pуʇJ˹AS_R\J C@ g?kK^Oǽ&`Jv^{>a2q&by|(J Qc~J]!9cIKDT& n"J8lܺW^Qs2Dv4:0!iGC3tgh=8)w.wPA=j6rwCE)V6[Lp7|j? ̕mgm+Φ{$ƈl4ʈMeA#&XP!ʠ9~B[bH!F|)1:K{Ϩ3yA&(bI]y 6Yɐ_ Ăh'#J+ڮ%-! I)Kkm GRnM3\\f|M|&_NlH1NAxrߎd~ T@ /5H^^W͇A&Υm}2r1  xnl Mi~3l1*iȭ+"wjT7* jjլCG/.o[]S4G+x,*kHZ'mAoI#cT/_ţm Y8ǂ7+ )bz +R XBB  ]d|E2.=ZbZxZ&~?8Z1\".݆zX>ꌯKFL3\K6 ;V3m=4`ܟQ.5;nf;ѼF6zP7'I G>$O9DQ~E w^-5w*)kZGYTZ.uL.VBJz^<-_:E=o!DPdeǬj /ӥSEyvMtM\6j>eGھFX \]G 4#ۆ4!%5FP]J;NVd*$l3o1V w(WK_|z8Bu0=J.>㫶_-{ޮj)TkBE *!S!u ⌄OS/* <OUÔKH>rڗ KޘeqSK]{U+0pr{ǘc (]9шL4"=&g.O2x,A9"6$%gH3²>.$_rpZ_om&Pư?@C/i%v/.3X !x60oגrha[XPʻ9يbOMEdc|bɝ7iםpߐstFޫawI|ϵGn` \lP%,~_˃-N!0ؐ΍J$[|msWG^1C]!C7ﱙ)ѕ8BKT]?'/ S}!"*vV~/#+`b2PN_79)MFOX lVs臚q:. 9qѩy)qP#0cY[ѩD/b=OB'(07Jǟ\A2O}/dI\k4wʞ^15ɢuz_)1fi'2,7)cɚwɝ%oJXNW=eyI룏vxvdc!/6IJ'}OI7] I8>ӲIU;߲u!AO>"ꡉ짣)ul2%_}4d /~z#D9;.`O^wC) 2괧$!եrD`&owUU #+4lDGP\CZo'ہY )4]-dF._2=| 芓76AI+ -3=GOndC౯A0:|9+QAecL;/wRkJN$]55蔶P:{eP ϐ_9 =Wf#7eU/s}IȰq|Ey"l8tE0/p}\K|#G}j*%(iZq!Bn]+T Avփ+53{tNKJDTKw:"kK82'n{#c5񭙆7gյ=Mk?̆p(ln Hv y2z4 IkA0^A{%X|';:pBtzҲs a@"*S]6.a-TCAtlxhnP޵y:8m[UrMTae1ՃD0=S~`t/*lO9\QiK#7"GHg;7]RIIm1 ~5}m녲۽x9]LC۰lb6x;pٌbDC+מ2Йx 6Itw0w֝!P%o=e@7]CYc+]E6XQ)'/~i:y.F.qPt2lŌW͙|y,"Ts_u PCGMmzq8vȜl/d)^얄9\6&IȜG,;tת=o(?_eaM ]uA嶈G25~# mc]AƫG<#~!T@=)+9'@]Zxdk T G<Z]K7FP<ŠV /uNUtMP"(Sd&/QncZ$SƉhzW<^GK/?]ylzktdV2򅱂ҧg^5԰x\DK!{ql+}0StVMp 9Ț=k=+ nwp J,-x b/v$}\{f< z/ʪq?_ GݮŞJ/Ee~m/⇜c} F?>/+DN`V䘼nO,ޒ=c(.f`V>;\VP7^SBK{w,2E܋~Ѫ l} < nwɕƠ_K78ѿi-mޣIfLx-YhhT=c0Mܠ}q1iHC)e&_(JW-D\N&ծDSےN;dÙ%Ҥ|&41:~7Z7hBuF0/0[R@Rȿ~me֛ԚZXT!-&$K%i݃337<6iIJ?q0KEjEtI-Wz/p_EڨO)" 3Ƣz˭D?Sz|402A[0E"6iki[cmvo+׫htȖ,Q[>yn5KY > :u%ȦpPP'1h‡VxQP3o{{khM/[K"&ds20O^QB+rjJv*3X=Va3bjw<Hs>;`*P}oQ-S9IqR?uGw4x pnB>'ihaxcCq(4CK/D6f h6P"~a=zw7q)IeL%;8ܨǁך}ͅnoL`ŴRv7T.zO{y?K;l$R l*4L&S{O1 ԝ^:4@ͰIw^?m5% E1=$?Jxoΐ:5A [v 4(roi5P[y<ߟ{񓗈f)`T5k]|F3 N}|R7=Ry0yYbܰ`㍣|4e\s#9GK[L9[.^Dp L"F)pmslr 9^UYK*.wex"%@^emxDQKuYdBT[iljI9Բm,DD7uua8J{Q+ 'Sy$qXM|N#Q 9RJ諬*|j'0oSW3KO7 oM%yV[fRk O ^Ϭe9r| i?Z!"w.C:Ԗ<@5,(SIfD0t1Q:o:d Ԃ(ƹGx]@e}kuS ~7T$w3_atFW wGc㲸8$9p,@KZmUf7͠V掠~UndvRN)]GJ( .><6ӷhi*SC9n+Vz X˦ðB'sm@Hg2jQh@Z7uFCC$s l~ <+MϛD¨cʩ'9G- Nѕm"ɘHG20p_9Ka h>ւoiU.lב?0?j2FV2h`,e hH[ g<Α<=N#j]7ȵQf:m'РzaLvD|Evrq,|$zLe8$mm.񂦩( uEpca>BըkE)fqRE)bmc"hd1cN uP#qY\}^b">_*z7̅WW,۴V6E7Ay4'|V)0lB厱%79 =hМC [&mu'k$H6Wuhtt% ;¹n 8cQpdBpM0d'/[rdDzq +dд)vVwc~>t 3z+(GaH,i)GiaBM_mkE к%ꎊt&GK}Nzǰu!jd'}n,fNjc2տ&K (Wc$^X5PD✩Fmc?R=qw_8q& @+WBK}\i@!L`Bc#CR- ӰW}:RD:,VEF Թ.HmW Zo=gS@K׸=wl=(%'kX۠Z\895TXT}t־QO!?ě?GaIE9Ӌ͸̓ ީ@FaP`ud:@z5=]w'Tª*fX,D}dTꥡ=q[y|2#F1D'>H v (-:26ąUxgyc*8*2w Fw5]BNW'& I+m e͠?͘5G*W%G5vO^U%ȊZW6=%z1l3/3:LITTKh2?'=WZd3mqZf/p" Ν,֎E6ޫ+M yа]ӕ9=ޫkb5rR l'r;ڟlj-cb'h~JLz X2erD`B[?o:+XĻ~fHg{]`cxʒtIFÙZ#%no#8qldJ<, s'Ĉ5~f~"i(d!x.y__Çqe>YjDȳgz: Ml:NIDJSh >0 O JRCaf=xHK&@{,wp8X+&䙪Uo4j o 9,̓S޶FUӠc1Dy9郇tɑ$ޝ:WUvd&}HF~T9ɴ7wxȁ}(8,_ݤYU20$; 6DDAA{N֗\',">}nɴYj84)pOD /ڥ ޶C3ly &Xd8poPjEHJzdXab)GiKJ~L钂Faԝq{؛/TYa264RUٞ@0$!=~Opo79BalC"&$F7]e74!vKsJ/.("fnR2Nˍfհ͛4+%T4jeE`GV}@L:/+(]A_\6I;A<܆F-e!`M38D{-@xi'$I}z8Qj ?"!͛ő"DSCbn&[8XF&5_4-ѦL%j =CKa"B΍SH,sm1Mtm1=tǟ尌_L#MدՐ%S61Y8=Z/j!od"\p7գF8w/$:E|]B=gD7-`rFTu,0PT"_p;27 *Z&r 9$p#_(0=ke۟ _L \E8Hf1Uhxȝs?m%`+ϳN&׋]J^S-HVHZ6EFc:ƾFϜkVXL _H7K;GhJەFoUK6XINՑݹm2 @Y;UZ Zm)c1,wJ&FEƕz  ETG.Up]UL4،´><3c AA?)?|VPǶ$&KK a3U;j(K>|p8pFɬqd]~98X8R<ޫ( xƿe-R"PT:]kX03lp ҵT#$~D=ǟ4rvpFzYzUKEJØݒKn|zP&^98fsYLjSj&^XY^E.JPN-m,m*] {D5F\qs=%;F);䈝)rlUBQ7ϸ- c+5}7ƞꒆ1zTP{\w !2|[Óǫ]P@!L1Bl>?j%K C ڹ6V4~`DZtDHbAI ZK* V/C;<7bNO :۩;:򯒸rtv7\d(d#` _#TohfP2荞B>aEFoN6w`4.g?!>%[\o']%qKrjIpS朓BQ{yO8^C3Rv\;XPtXAuaT sz-F95nیK NfL 3H⨒;xe_~1{9c,{Zzp&b }KI{@zgbZbk0[Uv$MT^hE*Ϩ˙+;w4zb"XhHFk"y'tA΀H obB~P],T=w ӱL#BF7½^灂K6j燬U%r} ح!wi:nEBt#O~>nES.Z–ރG@vE)QZ6GS-ʂHG* Fx_G c=A"G43펇LV^|\Bzm(bD,*W@N"b? AJ<<I(G90n8u/HyyGvitE}V2J=.BΖw[`D+nW~Bݣjso0A4&t \crb܇Nԝ,2>ySj=Ԅ$j @Ȯ/e f¼p#Ǎ(ٷ/]E#'K\VB 0UuB>(mpE-`* fs+UV&ز^ G!SGjƳVX?%-yd!J=tsחlk!Lcb[8 8ʐvLC gP+>*Pl}^]~YVU-.f`_tNq(XEػbA?LT b#f̠Ů,FYqݝx&wڙoo*^A3=`l|[PDllݮ~ob&$6hdUZl TlLуb.bC+q2eR ط< s5zd&M9Y>WVj ]!JsCtjSG>fHHs H@(p 1 " &PJL6 zc ֡9SZQ/9m+n~q"Ү.Ġ5r m뢅wYx2Tl^tjst8xm&z~Lj`YSNpJTGd0d'm#4_@vIx=Ls"?IbR#}~IRSӻ1r3'NpFY zK] նfZ>Wmtw7Xc,\!YцQʍZ*d}0Vr IԊ{I6uy$v ѿM1?†n+b=YC$u=/aIr8Jif[?I^#0Ѣ(l,|=c5hB{D[XZ *m+rBً@#3AݶuRr.c!HK/wTU/}ů e[_Wƍ*i3@KֳO};%GmLC%ܲK$*nթ 'Fg(GPϨKV\.~*X\&L)v3jZ36+ɳHC>i;NdK,ֈ$D.(9⼗ihh[e0FiElޢcO.ux168Qʹ+{S"}V>"x!ONRt`5Lfu2@a˜i9N}cOz'_n Py> HVh=k2ٿ+:LQ<{W;Z~$<yZ~:Q)08KԼ,| [Sk4Wde _q2S`QSt|x Te%~B&Kٲ0Zwck9u) T9Z{6%lWg>(`bp!F Fq!6佻n!vA j{>!f+1_~ aN$檘J5ػXj蛅Y R)wh k)}I^GP%FH AftKsiA%ÝtWgoD}#ڰmV ~Z1o0ım~/aroإ)!`~pԔM#oo!ю!ضQ2 9?XJpua?ROz\gfi Ow]t)N>5`VTdX={h+{#jr %0`gq8M?B6Y G4 E1o=;L^x4)|y{>)6j|XedɎW˥62*Ð KKGfX?r(mBZU_"Z=#ZE9Xߜ4rʚDOO#B i䃛D{c(HV: O tF9cO_{R!ťK49G* 57iQ/, O!OF_QZ-.ԎLRyw~Ũ~"8E=aVř?&9. -kWSP h#O%Vz71@G? ||Uia_`Q?6z&Ina- J|n#8"f˟98),v }6OV7`% ɳUXlD\굴MLiv0zЭ̝˘%M[w7dǼf=e\0 ?:q@VԘVBta%.ta dw~f4?- /pmf1ǟiP "/|頪RZtJ軴3_[p&?(2n\_ Vg3i7A{~BM8h $ApY\J56703>8I4r3fw!B-6$Dt_<NqHvvJȔ^hk[wAc MjRǜ$;徲(.8Ԛ^9^##U#ksF GzV(8ߛ{b f1߆ \ vIz `h,% Z쳘lKsԔ3x_}u}E@!7IVW0UW.ra柵g"k G߷-i*;(Lፈ #?uhĆF󕸦+ ~vKg$? `xu@GH]lVɾo<{;0(uX VFy D0j$ܱ=ģtt3f)q*#u1>>"WǃQjyD>Uw&9c+ ټ!".$r$}3϶e}4[ Og_a2m:E iOB?4T>g7]yGļ|%aߗ*Y#H~x>2 剦uK_C?TVIҾuz5>ޠ?:CJAJkN I¦2ޜ- R/ZQcê7& PLI5iF}|5#A".ri5V1dAOZHmAO_g)LN?ARR]Ê͗楬U["yZ^Q,b)tk '৸J\)_ QuE '|- BVivǮv` xjntQ]0 kcitXZMo9oXKTr*yONUL3r8D&^N8\;H'r? (`[wVGWٜ-柼vE<] K|2ًYr{~^z,H#fpX (_ 4tbbnԌh\8%u 0W33*CnWQO׌2bm+W&}ЗDQ9f!0 I 9S+yX@(xg󛡭p܉7؇ &p@_ ÅMғBC^q`J8R,* TFw~Ax@Oփ-61J JbZBCڑ/pgۂ{4V0."@&n5_DȫwsY߿ʈS0#Hk\|%Ot)]HLo1J|ҫ#i?xhšͿJ#5.R<߅fҧHB:b]_ u̎Qx` mZp5?8rAoC ;w 0h)EN^7FWY\t>1$W 'l?XYsR.Y 7q٠z!~fY#gwӝ]81} I - C[53wqP6:CY|mr}׶<ܘ6»u<ܠ`쟣BtLA mT»#SRQR}|HY:!OǪi*m`o6X\ؙ{^Nz0]8uNj} `F+?ek1}ig7m)0QƁFjpޤE;;]eM,'rs\+l1Hz[gTdGިVbm- n#՞5N#= NW=dz"/XdGg_GP(?gFʝ蕵1н6I5XeF{f<+~Ӻ̖ֆ&><[E=1*؍mqAk/4gz=5eHn;?-N# @PTPb|٫|9Wcg7ݕL{ Wj0IirYLE#ZC֦岽0y?m Y KN`C_'0Oӱ\ /46o$&* l9[eFtּ_L/Jj;$%$o.~y"͋iH:xGp/,ss*67h͂1#wXnM\jR/$ DO(}-r"Zx.ܺ _àM쿤>?Pv]4gkkj'B`=GKxh A` ~O5'@Bۡ:~{ؘnоgCQ4?6?M}nXtHA%bsn· 5ޅ՜+6tA] d+h;,͗7 SkVz"ezӰc1Wf3KȄm؆]wzwRʗuB"f?}aJ[xHLj7{?LEuIUĴmk6ML2foU>=RDT7ްOXVSOל{9crQ1FO3HjRY"03*+cs}bP;)UH=hrѩo_[ekp:*_&2TSte)w>k/_R$6;KlU".SReN;JfBW6 nv@U?dy~ d6uQPݔٝK^x+5O^r*]o Q\\^OzwL/r16*6}kMOʄɾy/3>}ˈGŜINXbU $~BNT/wY Ҟ~NbIs.N*2"CX)S2U\ĨZ#0٦)dy)[pϐRO#:5TOv' MlJi'bz<2KM&k?w@;AӨTCYvY+cakబ'ϸBSb6b{e & R Y5%THS6~Zܗb}G)E ЍI[c.@f`{U\w|[GvUs=i#D8=sQՓwN8* ôU T+anz>R|lhfEZ=mBx|u=PR&Y.~)ݺtߣu [KoKRR+%*1G\5keHt3̧G't垬N)gvKs:Xd(}ߓ9e*"Enb"-َ)ѱ8sWʦ@4>K֠QO͆16FzJ{GqkӞ6}G\0M m*ƕ6M2eYŭqK8y/f6Sg0حӾRtGƐ\feVsmDj_Tm2m$wp#iv)G"r%qI zYXq(?ΥS<<}}c.*05tԪA[&*C7 GaﵓuړSe;d8td' β+/yQ($v?YI,Y X,k:Դҡh?`X.4 a-pt.e-V+ܿJ߄jĤ`/*ud&LJT)2( 6DmMA2 v_*כ͡ǻ~TA: WOr MB,DYݱo8gnwzs5Rl4`;Br`oI좱^6>KA C1ŝ$U6YK4~\z>~XE͐q ڳiY=){KFTC{lkB3]A\a'Ro Wq6+QՅ'r}+ҙxh=k~ &ɛ}ŇjHQuɼVy6G4ӎH^K"V_1)ΝtJ c䠺 :- _?/=d#LCvZ@ת}3@haM,E)pѫV01{er;svI:(2nq:[|M:3yD|KO-+[Gr96ZMb|=:B[ۦ nDµK;u5:)rcKPn/ -I@fI{/1Cn.jıVÂcң8+v>Erj2߯prMG-%|aES Yܯ#ZL&qZkMrwL$=꿹BND?=z 9,FpM;`B4EaNq4KvX;ʟ5hAkS6Bף z#_+L ^ $ Cƨn=<1d תT4E@` ]5aa!^yUgl%8hOqhk':[wЁ-Qk_Y_LޓR jdXTTLc:mMu{>nunPȐKRʆ-K'8j0W'N@mF 4$e>@a\G@ O H–E@FmUSg۱xx:R >Jp}v #$ș"Iqb\@b1^qsz0,l({aw.qC#"QbJ.}"8J )iL;zo3vFh 8OO, &];7U$  'ԥsSOCݒC?6\|Dؤv(+xvg:%X׵ʞ',hp⎿`1WQqlZ*WiZ^)?JwJsm" 7Zq/*v ,ΰh_/zU׀=kSJ!!duB+_;it)LS*$Efl+T2mAO֦{r$>Ϋ`P˩mѭ`&c_Ikڢ)iz9%r!=Wo)_Ãɵam iz/>W(47A(p#f(bK3|, @xf$K{ >L@f3UJYc{j߽ڹ(*τ^HWiPr.v2_p2,7QVm`;~2TV3i޽U9bYhߌ/E|NF'3Jڄ* EXrN~pfjPAaIZڦr PLL(]km-&'qҢm`a*XNQN y$E_S>yEmdFL+R>Z a4\k-[ȹjk КD;4ۓ-exh(5s! sRv߆$j]aYiZ6(OFfȿB`;2pD tk( My:ST'8b7~j*uk;|Q>Ѱ((בͺtt_*|Ҕo>7+YIz<9*I4^f&A_JtbX1 !v@B:-\0 ZWHXB)?Hi،g<#O`I̕6;+. wBO,SSC1اާ"𤽡yIrfL9 oK|K9p[8ΙP]\>޹`o{Ї<s l gk( Y:K`xC MuWW pEp!IoGX[ᡡG9v:B-jfhϊU a9@ϔ]7\ 0qhsʭ>4Dyh3]T" dsn v16#iϷ-NdBK ,BJB:yzY@QAkUq3N#ft n(^킹TE.p+Pʏ/3KD cDSpϨv>=R\YqLc NR6˻,嘗nrަGcNQaHL~5shLYdvaueLQR+WrRk<%2@qYLk3 T].RMW `[Dݸ%}$\+Y=,W35:-.m27ť }%+Ԕ3g+"2++3[dIz4 OkL;Pᡔ,rv5x׍mA8F~= 6=YoRw&f[ W_K8nu:g\ljoP"+$?/pa|8!9>5 hv3kLe7q$?қXշbNeKmKs*d#`зB^A[|}{9[<,=T۵w`O(/K1q6')< 9(U1 G _Nf }$m=tK ~B(8nxA08{..ЎP k4V~RDH-M"%ޝ#d:#AH Yy1`Q@6`Ζ`i/ ciҌm5M80rA 3`nQ*u [z]h߁~mPh|t^rm(pqh!z8eL:YVFyRfږ2@e"fjgabq9n/#aB_|^Il w9jτc=?lX=Dڵ? 㘜9qhrp7 x0U;Wdfs `ywbzC)LɾSY_7k>9ۙ MN"w)xbj|L J_n^G2`2=ˣ9 !]sG&uwxUlɍ^UJsOq[@-U$O7#d4N)'xeZ橁b#>򳰑Q eHbZb<EppM@h5x~3U8 , H }s|~0mp{*>MC"CyD[u}`DRUUˮk ="=RZ mH~oqɄܲ)f!pݛ`mvuj aH5I O[V>=MQsA; #qAm=7vq>u4y%v.õޖy X9I\YaZz2/Xa+ c<8Xs>Ô͍svukf!&:GQTПFz&[J~Vۢ4p䔲]|C$xx k룲mxM @\X4A= 6Z)h> BlU@|8A0lF#3 ?9{@z-@7|ժt)z۳WI0i8U[LM} a%旞n?ljhxvA |6UJ@Zg8i#jc@7 Le#}"ړ F#>;?OOC*:5rlCnʠd= /jF=4yĄ zJ,ŸM33OW ϥxWOFUTX< .s5M{vf:ƍ;3Ht3„MakO86F@Tj2-hPw 9Db Ih=ߖ5x΀>\==$wp/آY4EԀUG9di4(34)I2JSq#[M2ONJ?7]o@P4c)UrDi \Dj,o*w뤠-9R2hKsfΠGE+ ~3DgyQ)̴{rɏBjAÜ_JQNuUq|_!v3=7`gd>"}zT FkR ɖ\T hƩ6lণCIeF,[X JkoM;vXAzlDC0̂mFF&5$ 3n}7 jq<00V.2`glK½,ol4mNNBlS(Q+1\;HM+Mn']zu*f}@M ]!F(H!:Ν$CC\W{zݬO ]6>IKܒWTT滓 M?F^עƉ0,MG0-ϗkeobjgb' 2Ty80"ִaW(N,pO]~E]Gi'/g,V›JNG0/$u < ?em  ˄KD?hBR"Ln|.q8Ӕ֝PF%"eNSyD2lli_ƹ Ƿ[C s>#:CѝBW뺨98{h[A^}-:" Gj]tc#rx9ѝngc7լݘ4Cy5aCg"c`W;׹fm"h|カ(qY%ͤ|̶e2kQ* T|$sWB÷as!ZstcqCy*'Ƨ9PC_{Nȓ7,VH sinaR]'k%8:"T01{cݭܧjO>DY[X9I~ ^+{9;}[ ?|w /(ʨNxNL1V.m9&&3ž0JSJ?jLj9]h1U?}+sh<7QWQD|jwVN?~.XO3^*Wm&+&|o7lgʽΰ6?|1g O ].[Zc ?]J?7Fu9AY[$x1U1g> vlCn JN}G2e!]-J$w9eZ |'DA%A KHv^mHov,'ªYTh_ U9~m[-1# }lUoOr|'e\dLn+JXcܤq< `(٠KUv%CVs<툦,_D" \ Slz1t oF!v%YO})Dl 6c|ˌ{|!^N_36!ԛ"?JZkڀ8@:|䲿d%.ŕ[3MuxG0+ΘP*\hbTC6`AC(-*Ǻ8)ZrHLΧ;^%]>fTa\TC_yh²z2$Ĩ"'a 5 /b(0z"8Qn6/$4 #dbٴ\ř?#ӟQ2 fޔpXךi:?ˀJ/\oO*y^ {n9$m5- '`}}q^qn?Z3݁Ǐ] e~z[CM'~,) GK^PAPmk?u~ ,T]ńH#bwl{BÃ9+ i3gV {= (M3W[ֿ lCM8=u>od?N %JLDWaBʐPb ud|?◚*V4x5ivsEq'K/F,Q5zӾΝ|Y;{poݕ#T${dEW@P0C=,tq*Ɋ.2 KKAa-0nTma+YNXf)&9-fo>sʩXK[/(+S^[t·H6Ly+lV((*C]XB#EK_, 蠶6pdo4ksX.\l5Г쟛k|_}x~h)V%-`|ՂbT >ӷUM,b2:k1CDd֦!@NtxS"4B kQALY!2>Kjћ w\e>,#8cYNH ڙ+p|DNK = RO2D"iē#c r'XAb \妅 w\J2u{[1aa꿢dO)&7uo >)ۧN:D؄t I5D.ZH JK"ݺxF7[Ñ"[q9/=,(=xV:A `Ҁ XӬbkHϓc:};&_HvS)u%D?n%+8Z2KfFt^p4g,DaC.huUP<$FNDDՂPhtjy{~-1SGER`}fڶ3$fDt.蕰2_wwoA`=:Kز'$kn(HZک6{j=`iU5&䀼n+ ݖ>$+ 8,3޶?2*JoJ's"@ °m8};Efr2KB)su:UD:?`wk6 (Mb/:)I3d :':)2Q<-{Ӵ;A/TdW%c8*nQQ٨ #saN 5s u^M4]c} іKwkl/[$eTWNGĆE]X"] kF%r{;_wk"Xl-qM\ ^C^" C@ɹq5.bI,p+$'CUirNC)P.o^F%$@ۖ!"Gw4"KZ4x5-M̰qqUizxMιQ?Z\w:tOA' Rk;YM 哶vR^<>g#R&*?}Tt "/E~+]Pc1bE$fJ' ~~ܑy[yjb󴶥e?I_0E:,XNwh:A Qh!4fI3"˫b P:@)['(ZB׌\ 2x v$3q8,¤twTmS$|GVMmj$Y2eǮ,Y{vz} *:zc x[DA)d -29|PH{;i@ywKkjGK7MM>}v?&UcY Q %aDݵ+bɐua?kxq[b2ۍ0ŴL^/R'_X}?Gs_&x=]WXw _9;3>ӐK!JhAE3}E;!amljYeh| )tlHCM[pFfqj\2,=Eh&HA40 Un |QK6=}PyVimV1j+|zfF1=1Ǖ\b`_FfJU\}ݘ (Ш@cр Oda-=g(Zٳ~9u/u/;-ߋ_Q14KG![#cJ6W-c_LWol@SNL9)/yې4] j֩ͱTdEDͥ7 jApxWPmPT9L&"|_cVFmWlHOn2Ajz!j3ʇXێD&9%v30pDr9dIK: [}c "lvKۮ%ADB,Lsu$Ѳ>#YgO>?rj_^'dL῏N:&|H`.Q{cn8.py!cJQQ5u-#4^鴇WO~rzw܎u_Ᲊ`W%]mۀͳn[ъ*y]0i8vs!gyX2I@?I୬PG{~2hE"+0e!!!wS%E>]w2muРi?WX榅gގ\b973a!{m~Arwa X)vVw]J؅)Htn.^W4%vQ%A]$C' H CBn .-{F$4׆{I)C^}eqVk򶱩S KD|h y rgQk[5L2APߑH݉H!/4 mII(&^-jf5ܻ dzsJY}^fGd~6ū\K)4lU-D|TȻJ%d 14BJm1]{?,V?z+jH̎]{{e".[luFDӏ&:bs(Yl8ˆЃo6]cEY4V~;qViX>6HR"X_.6uQ_Ml34-%E) jԘ_cS۔B1IU>9i^KF!C8g65V9eөةI{ ε.TcT)yZ+lF .!]yS aTt+ _ Pziw{ (pLhC7 |/\0b>2AfPM,Nޞ%U~xmmeG!"T?)W@O)DtUs&3 hf(hƇ{9_B@MH(tQ=pS[$w5UU:}tdI0s#DzW_Gt|k3POմpYN>=(VElKH2 zE&ywuc;'U].ttK.̎q\y0<:ii2xD[h1/զ,};0'q-O/c!=Zx={O &ƾY=9뉃]0 tc[-27'l@0;?j[3'.8<~~2c +ЅљTB.⓱O'~k0TE#8??_%D>uO܏WD7_^aJGEx+`^>l(X^Tsu2l?^R=hs+Y//^s/WVv,3ՇaMF(:wGp| '-4O̘!>2jnxQ/5[K'2cv:/yF̔l`VS:pm#ؤ˩ jS ^]hfRɳI&yFhFad5T!dPO8\z{4#T^o47_lrV 쎫i}s#9ԚBZ?X,uюycz7~P(}] z~i8i7Cp޿sOY8MGr.$瞸neP:@z:ࣧfo򅢠UErG =S2 ͹| hmÔk%\M/Ur3QQ'Q++m9ADRpX /PÔ?5w"t;a2 Up^FA`ID?6;r ybCށE,Wi1V{`:D×:2YdA%dx q4SS:(Pd@·RJ!^ވVn1|[K?*}a_MKdk]46g4생]M 9avu4VRkblo^03&4&]EYOiC,?Rÿ;3SEG\9\&rCԍRG.$>)ΩI_;]5pU _aI$RnR E7W#km:Ihj=Fjܟ`(6rH)I [l1Wf? 7oTү9&u::Ů!'Ј6Z+H9Qc;yNJf|͏=%t˫| V>KPaQq\|a&uvFH% p2P{[z$|{^UJ5J!2msCKi W,ӧ̻aI/r4oi|aw=SB<&ż~d"r\뱺?/yB&]%Bۉ0>l 𫙵鿣у?\Vv +87{Fa|~>ٜsQ譓.EBXwX$T?RRRB"67fo!X^wchz_ܵكMe#0)ڭx4=~5HpNq2._>Kd7mk~.5(e 2wV\ڣ=d3hZuyVZVfBe1#wq=C".eSsS6_Xy+~`낷aRTN,VzT-Յ wfUxϵU ٓ"4G"]>G|r]KP `Yɚ g}4z0mTL eA\.6=CIj> ʎWTN>d^}Zޟ>J['KUuK"[98+Ce[R9OJ5zbX9*΄B)+˂YI9ϼ$:_]$cZ Y"S/ݨ_.-9k"aZx` Dv*"`qi)zSi^)/owyzA:%߃.sNݚ7&K[L?E_c>*yMC'*F$K.Jvv G_()(M]Yau]\+},i12J>ٮTTcixZ`1tz9\>!2-"I''_G_g?).GF"J ^߀ \|It0MFվ_1ZQ֙FqZn^ _B *OL(JMg‰@bqK cgK!5jxJ"pJ `7+;M!Fiw%Pޥ7ijwM +_;qW;9n}VM1F҆w>By lf^gZ4/+.YNNgX|w^k>vd0hӦ$sEI8V6Ka*)W˷bmi6[%=ɴ=竔LH]zh ,t760x>6?v_![I+,*rsqMi7g{=J/\1]މ^H"`%g v@#/ oO`LZAu\2wܺ aAq柭$22R-Tؗ'8.#̅IwNzL! sݨwOPQߜ'?OKȿJw6h07˃B89iO a*N-$۟* l95LİN$8q tqU2pSj$O 1}Gwh#X_*D$ ^-(ϫ|}qvT,k73E@5+^8z7dveT̶]^CLZ7Q $R~Vq3t+vuzi\z&F[7,j˪/YxG f@; MOۉH P,v7;{rK86']ގza[Q[$$4p &1`FU3An˫luOGg.mgTZF]ud.+?CIUJ=/@$1o5VʇnfJNS;KY(yQwL#|5Y@$I_/{5`Z?;@Sx =.k[vIW$=q:zz?Vxn?UߛȐw yBQ͍s"zmA⨵OUЌ2^7#Psr ?@a_axvQΖx3l{G䅰!ITjro߼S.$&y3fz' UT(t<(z(1d0 $ yE&ȝOS\<B `65Sݳ9_$Ud,P_d QfHʉo.ahǒ>uB^dC^O5Eӏy8.@Wetށ !CCtC9^XYT<>۔| ioX$;?k%-̦ d3=K_P'ZxDc K}8U-miCU4 \vX1 >]l4by PC9Lt:PP~5u(S-7PeV4:D0,8^ða_LT JXG8YDi QΠ,`Eٛん׎d%-0Y)e\6#yM:-nQEdG(]kƽ-͙z+=2B ^=@W˱|=(}B@"f_}y6ΐ$W*L(!njZ3mVx^t~S~m}ȋ*U]7 f4(A`"j)y?W}|2>x`Pggwj]hd̂7B7B=X24*Q%oq]߂a d-Fv892,|Wwb?TMFMsTOX/T`g7dk[xiPء^FDLcֶZb"=66] ]x8 4zqC`Y[l5,@h35ZQ>+G%%6Wv'sJ.s:O JAM8vg#3•y"Ǒy>nIُ'fTZs >y[r?֮֒J1Uw9ƹÖ]t8Ũ, BcȠ~lzrc=ޱ&!Zj`Q3y_~"7] tGWpN^dHz̚# ./HRq+z $V4J-jT}S!ǝ9B&ZJɸ8ޭ |oR73]~\IjH8$cŕ{n*V*^8(EOY0_*Æ~)$ YG 6 a̡Ѧ,UBhFg(mOlÎ߰I3?9M; *(ҁ3M*B{X\qNkqv5f7L?%xD+ɡ4~^:rJ:G4K;}2SzX@tPUJgXU|(Zǟ4({3Q}f Ͱen)Z4tu58HƑAMh̛>&~~zy$%9^Bu9%-!S6|M܎r`1\BgmmRkunQJ71ZTXAڮM'[uy u>_J 2wg#(v7RߦgtZQA I821[Aԍq4"L~n휀Ӿ5-::P) OɧxO`wTasyScwq%5'0))y~)̳aǦX /V^Rhu׺6i|SzM4^ fE}ZU+˰NЯ_$.$B%'^ck\j*^;9}|>>Q(7"rA%1GG_GYb>qEcIO6ӓ~\LѮYiC FvHT~D%{ISP "TQao˼6}7EuW{\=E>VK7mKt0FJeUr<$!yJ s8ǕpfG2JC0nѡbۚb,5ϋOQ͎=Ķiᕠ2r mɷ YA_ɟ[oշβv({w6< 3P<7;-4 TY>x1^q^ C -fɆ [nGBr@A"+$.3-r!#4o敕E ,7:ZS<pM|c=fR?sʏ24`>yS/#&ofHs*AyF.R\YMؘϕ3ăzi^V[~ iOBkfY8!=(]80sU~͸ 1tbZOM|l?S#5Q,^aMniePKOljF^H?"SψÊWP$h&nu7737ӭTʚc^-td:=UStgeC{빶+-v[1xnc> ٜY#>HmFN7 ٭޻4jQ#BvI|>@ Y,cAG.\6xG#ho+C-C3dx0lf_Wv~͎fEKqdKB. ZFZ85W7& 沊5E|Hꐭ nkŹh<%#S轑2o*I}WMZ%Q`&^ {HA&oLR\WGV6*i,~ToP٢yN4Q:uRT)tlmULg8HCS"P\iNzdPv;^H/sշzįm GY1,.*VB`hpׄ !pWY9 >«=!0xWo27Cu M@Nd|(ꧠpn)M-w"jF\2s˝9);Fa:1e h-(N;lU)x[?{a%Q5dZI'!ՔɧYߛYb7Mj'dj|O$VL֝\̿sd Fq.YP^.9#L^yن9d-]8aruFSPs3nTqW͏),uZDtˎXoz*u3ZФLDae4]'D hJYb|d:X L KFr jL |T<5XtjYfY_.5 T(XK7J`ŧWi5ˊĬƵc{͑=S<$K5jGgF4f߬2 EMs$6?8ζ;+AÈpu;RPGngq?pobP]p%TI{.woGHӭ;Eq%ni_wɋv,v*ɰ_d]* Z=0JsOXuvP2FS0s$nώEhyl]uCLU(soY7aR߬@\iAZw>&ghtǑDuAшɶVKǡZ7:&i! ؜>0s4IXth6nv˩Mx4)wdj.K)w'dB&eBR؉;G m_^M*ْX&b.rȏ"rFy0@ؕOl$"y.N]{1t4sp;E;BV!#LޕvUDVIf#}F6tJlf߆D[)w6v٥ Jҫ#ǬDaRNFc=OJbIf~BuF?ݫ3(8JmL!{5qRw,p2'тG媧fe;șe.MG_MPɺ,}6M}cWd>?Z $KeN v3;64u b^ b|n[?o° oNpH7!4,ʪ nֿQ!)GD(*(:]ƫ^GeWGLo H`w3ٷ~>~qK(mB>o& B|H/[ Y]ƆZX(j=9BO>ބퟦ 6Q=쁲Cߤ.:`y(u"Z<|6Sahf gzh,ա`VQQnDd=spyGEΗB-\kKr%:MCju@rFZ3dzX&fѹAԈu}No3^a.cFqV3V +о/K@-b2Ge/?x*le] `&|`mjOȭ;KMj@EVg6*%!-^Fjx)%J.dָ%MɾZD /'j}c*->(uR5 ɨ<]󋕞0i149g^E%Nfh?7۵{f]bCm`1L.M}-eW#hU29]bW5Z&XֿN>-JʝˌjȩY2mU) )HYQ=%6/kKkI-S  w!#yO , q2㐧 ,urj%1OvFuܩ.d#n:U@I+?`@g7h(|~s'!C'baϱ]KFny(D Zrcw<' oZQ Zu\i['\dm'A-(U4G$KW B` x:/ W/NL S}hm|}H/*|ŷ96J aY> @!c|6ؿϚ0鞴Hqg~ˏ<2d}2x$k2[KZn$ت"<0ZԤ6V&ke+mB\pRoGJ m ?q5lK ZMi3%1&_@jfӬ)m-<5˅hv3]@ُw Ubc#ϜɸZ!7Hs$zXY^wI^XЎˁZRy$off/m3V8ijSڬ 9JDY~F <nn']ӎ]zŋ8!H 8{@Du 0ÉwiZGB&O{A5ٜؗCeoCsӈk\=O^Y:)ciQh"uHy)4h0)wihhW; M"Th+X nK-pMQRcx<Ĺݮֱy;s:'ִ hOujJ~:owA5-Lo}J?8nT\Sæ*Y5A@jzsmWdP>gXKU;Y :"ۅq+?:ʓdpF 8B?ǡη[:q + 4Ĺ[ F_3ig?2D-TȄ `--9c-{/:WҜLRuހ-<ږVkc8>MDzRouf   gPY䈋 &lsPm5%uYLfM7P\IM !ZJЉdXNk&bT=>fp %)Z~Ё/y9$' ^GT~-`Hâ9P/nbAwZd; /=O-{"xUKCʷSK]$K'7TJ?3e^87 ȶF*E5$~\Թgh, 썄g#]!{ ӨJX^ s{cZNHQ#-n> kÐ5ґpk\AGCl[oW;!C(]5{.[`^'axj UCAPDr?_ 0RMtؼr<`m)Zbl]V⇱oױ"*&[EL*ϾI#ro<&Wܒ8-Yl;)/Wk.M[n)7i _hʾF "-B^]l:A䋀Dv+)&z1I };;~UMMk&䈣.F#N>l$ :`oL^ ﳙGǠ\w_nU/͑Uy&ԅAfNg {XŔJO$],>P6˱_HW%"6A~Ř,! p׃!T$Q/1DVh@tь~5hqN=66; (Q~@Pz-*4C߄z}I1˲. Ǿ(Skka9_T2{ج' @G/j!T ~2 4J)5f:IŪR\:̸%/^ݦA nZ*dC7][S+()_G Y, 梭s%Ƃοe j/9ZS]KXR觷F/jÜOk\6mVh*$j0#9 4h;;oNKxIQJ 07k6D=PGҧ7Z3 ]m^P8?'@ل@+>|F[<)ugJp QtQG:+:V.RfSmӋ=Q%qcϻ0%:6Ⱥc5PNWĮw?o6,!Pމ߃*FEv F|<jjkCEe n.^ 7L 79p?uNVd|$2*|" o$/b c6u[?:L(8Myg3zb )J2NKKgHj$ꠉa9ޫ?콸"3Sf/"C/;}#꫇ re뇔ӌ<~F]|u]DnQzMH^: .{"_h:.덗NmRĕV;:y 2++LϺl][R׻ Eg>l9 2Uwݍ8V9@hij79&Vl|5.etf+~ ڂTmT= J\5Z0@Kmwl * 7?ET~¢&T4_[%^= k_~Co1c\ua7ᷩ7l0^ <; J|۾L˶$[)NvBklmp||( o\ۻ 'n?p$pH 'lnCAB[ $l_tuk$eK]yqG\+-So% Ւ*Z<ꂼ!SI7&g*}G\.KJ{@YJ!@| 9.Z%Ⱥe\O_͉`^Rܰ^hfR&eV?*tzy T[Kx?Yuy~m\&2)0V3PF2zt!/t' +b3Fz4)VGM~X4wX7O[o,rXRp d$muH;ThXsFt k[Ltljv oۢ#?1k/;FqBb߫v!]k5A6Tz<࣍eM׻v0i!⍇Ϳpr66ͤdgRr˚ZK/)S*|]pJHo~g )ƛrjIEii.2 bCIbY9mjViVP @v+Hx?>oɬ1+Ədž*ώ P0ct5| >nˀȴK9^0\R[l֔e lZίY/n\2 46kY!ui"a-GVIwG ä}2Op%z`stp%Yzꤽs0hYűAY(swߜ,_?p !x ,iJ˺zi?weNW2G.*Nsb\@iW, b?x/ `}QR#Gkf$ڗ5,p pE5QS}B,FCET99"UM܃ /Axu:#3Z*R, -dJ ^7 1)1s,` kZvZsN D #^- E]PN:YÞ2č;&mvS%K7iLѾ1cPdajHI{ͅm&!џTçL@;,ozk"<˨s-7nwwafk; vK#O<$夿)У#ः9J '~=0Lu5j$2Aұv'gr 0fm*ݘ]P~G/$9t$ĉ,KA-4<%TtpJvI __59]5ٺ fmqY]&V |"WL,8iLugN~blUNP뾻)+j#K2]3^tmF`9V?%5udJA4ш_)(;@5!o"uhݸ[J4yNx !U3jOv6k4Bzd]v4_cSK2aKn$U&ӏC7E: 35t̝[g;ӏWX`VER-RHL&~YC*}C y^M})ٻJl]n/by Xfț_qO&<$)5`lΓңf_|>vak?]8?OCW,AƢGͩ-IԠ;P~? _U4}XT]ق*:KENXf=,!/>N o-ot{`3`e(eg +Yayq.$rQbf8~*_T)J )2~{??DB 喀=ƅlwZŜ < \ijn}Sd5?lt{ Pp7El\2u;C }.IrxLkɿp5cd}@mϹ3=GlJݎ(cѾµ>)Mq\HKGe>XβŏYsmAAAa>a0s?u-,VS9)_OutT\Ǿʝ7Bi*jŲn/ww+&QD_{\V,z_{SBh.'+#Mѕ;xyU#՘v\kgQmLI11Apap@]m5s) bK׸VNP# eyior {lx]p2"W.+)L7DI#?8q;*5q}YzmO]>Ѕ5E dL<⨑+&:Gɣq0 V~; b[|v7 TxN'uAܰ83{欀S+XiO8-k09\ch Y;R[Ǫ ۗvij%= ;0PnZB]Ei])|kI1T\O;2"Lo_lU" "Q|^K!V {.t2S96r >/AHwnpBou_3DTdDd!j<Ȕ͋=]p]*(< :GozPw.XʳgT 6Zg1o]]芀>~*G!ZL! @R[`*x? }Ot8ߺMzٌ?P2Z7#t|4ek/_/2a)#0 p[ ޴Q,:0 X[:,F;4rIw6m[KF:PAK,#&>wU.9}b5AGaALb/kq XҬdN_e#Ŷ+4e0L5$;sby. [7y5\ES9XQ >*+_6&&hBNj32/"SKR` |iIYqxY (F|0.Ve%S61Q*`7osS|11np#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d ;*lߵ;Ľ._>KfBqxY (F|0.Ve%S61<_~9 4ȶ0gϗY@0Q7cfu'd[cΚ̧׀ {T*yr.A"$5ƆR4n~ 2f!Yrem q{ E򣓚q3Ev:M9p|JZW2l " QkG pD) ܜl =?)y޳qhq{ԓtLI!]#d?m h_B"g-s]hxeY1,ЧKHhIQ?-zp RgQc*0DLc$RXtf6z9+>$ŰSVS(Vi۱4 YO: b-IT"޺31 $ /FK SefsгgL^[T;Re8>/{b7ŊvAwvB+XM? heE O6CiS N驽hF@Hsvr@;㱑 UƙZN~S8l4ە=kVmc0pz5^I'BNJNgeV4 |@9'ѕG1$w{mH,cX;AlkRm!3}\0S~WA[2w ͝UTQM[nQ릓oR.\ Sug7sSg_>DM H[y;R:\0jD2 bH?;x* >K.K}xV/$!OSasy[J=R#tQm7{:A D,%f %UJT-ҡ ݽZ:?6fPBFj\d!16c奱2FwDW˫3pQ6 "e+zԇ^׋ңVoWM_$ޓS1>.u? A2i=&j.0 5v ]wd]d;y;؈T(^/r :Çk~nGEԂ+Jf(d;c/y dr9m[6U,>/4Po`HDT[F2 i6 j/xy[wƼy۷-OBmⱏ\Y0ZM6~$FF#)~5{vLӏ : yb- &`Ys՘KcT| QEҺھK[l6.f,-T+ACFL0W-Y%@~6.A07a^elgfde$[юs' { czM)?e*cmB$qjZkHhg]s.ܑp۾"ۢ".*V[_۾3}e?Jy#Ł ~ofh=?|ŋ  iҞ1fcr2'Gr[KbnPGND3ǯh־!c!FY1gN%ukP =ɴP_Q ߮dIF89LܞRnWQƵ7"U=Ejq>AG`vOYMbg~DomHBoHBajEKۡB,f#CC#pl,G&XHkbGmi-1j _T\Ӣ_Ů䀯bh({4BP)XN^kVW_9^Z|UIl|#͜[|!&c3_:&ꐼc_aHn FB? ܳʮAmH3sG @ jvϬF-F l mU7EPx/knBp'60Wi|P#{R4Dm}nYb<91DLEm\'eD65٭JP]}DP+Ѽv/.T-14N$jB!4y>\=t]| Nzw_5ieccԚ }٪}M'GAH@n'uִa ra((#U&G$~H=ۼ:KnQW:;vMY4Z DЏԂs .V1Jz\v;`ߧEkZk^]GA̓*fnyU1K#{4MqWK!ӄ ~$_(TWoxɗ0zMlI[LfkO^KbM 娫 {;"#e1SgjXԨSʰA}:ħʛMGCyOp jj]']h5[|ҿ0S7@3pU!,hĊYe(mx4%I,nA.,k%h܁# W+sqnia*f!kn=5e+rɈu-"  BQ&O;zqgӴ2E( :Wy#߻]1@,QY^"].0sn3"iɦϬ}5޻ QA<0_ckL١ L̈@s) ތXvaڣG˗ ӢdT;vij'5OCwd_b$/ʢG'(B(`٘7B&#yOA~:{̈́aWfV_hR UB&q7sBeDAOF*+2 զZX-#ѽ|l_1 5`D|Sk{tLff~{Өضy58_!u6*/Ti[wgI[L Hd%ۦ)K"o^vbM0V7Diͪ ctub#sf&G f9B2NzLZV½QUdU Hkӹv*'Ap[Y.UňK>_JŽD h!3T"ϓE)i_Go=6'[AZ؇Q|:д-d3ﲲRP%M ΜbuNG 8$4mWMކF.д%w5UkH⻓k*۾f+ԨΤZV<&f۳?>E4pںxPVאHRA1p0!]/>́H^:Hw1MNk1IL^Mz3у3C^F7 } :256;cb _k0 #qс*|*u1IzLK`_na*†4E>LW;%tX?͛'~j/{7s3\$ {73mubNE1]ҤLD[&~z_0N+] BkEe)AAyB ؏NNhon=fNyGlVPyWF@=]Ԅf Q{ IXU0v_0k#ك3CCp"=mř`!bh-vɃ)Cc" =1-]l}&V?\nN\=D..:;E>QZ .d=n#r3,.7*RPU#fjN.;FB(Xmi$gr'^NJaL].X5fqQ+C5&<{,9Pvfy4ځ̜?tҵ'U-+sE.\ *%'٣~G;H^h=c`E1;dϢYO׫6kfm8:kfls⇍L.Loh>  zAKuF=C#3푷з!k@/?j]0r6yJZf;?3zcVE cǖt 7lnJcjN}aI3p찴zA# o|RfN?Ei3fnE^x9 tUVTCiR|!%p[ՀV$z+cqD:jL !#/>Ҏ KYeN=kb&R$.uV6[9τjARaߒH\6SE2\n?X9Q&HOVH-a'՞#&VN#ZzъK]I絏z&ѩE/Fѩ σvk\Ӷ$u=-B}Sk;i ĩĨJ]/Hm*-8qƋE1FL,>HixTOf[W|1%Ni4:/3KEŒF?\#"MbP2CtP)= ]XVϹ/ ڨQe9;1kMr1vkali;L]iMw떐D/S ÜA`@4ŀӪaUPbP5X.sI}:yזy44 gr=ǦFغS;M J]9}iRPljVu?1 IA:WWgVj?p~&j8 |KߏG5-<4yg,w?'!v>Bwt׃!''#!zLHy6T`@I{^"H?:f/ ~CƛbYt>K4Tv&~m/ʦvRvˋj`E""C67 j wt>3M%1XJ1te]vB:*h z#c(RNƦfzDƝL Na0Y*@IWKH@z)puo_ltCdsVO={=e9ޝRz^R (+*@y2&[ؽ4g~ 2l4zAol TyeD _n,#VLFD|30wŬgV_pg~I3rp݉/myI =Wq_yYkP{wa<J{hq)%nւw2,ϗEisu"k6vd,[Hbָ?YΪ1G1U$(wizVֺEK*ȵܸLf> eN.Xص5- ?CpկOʺ(/|ݜBgE-ߎnUfz0%UA#6P rayRԙ+[dUlm1pK|"v;til5u+ҟ!uo75<~|<37S\Q@,.rOE10#Ƞ$8"Y"H>8Hj?r$?49vлh.Tf՜$Y}x:N9-,qpgCHMMc"|Sq`pWv8&q 4/P4RUHFEæL_$uBx֧n _ttk1]SQNmPtFӁUUAqqk0M|NHܷ5H?8ixPZ|Ƃ͐9 t ! f|#AHeҕLjrG-}ܟeY~9m&ՑavS.%8LK vب)zfvV6ETf_aGnWbLK2:ʰ!UFT^3>Jn)؀oUųZWUB{{"ɗDOȔI\g]VZT7'::< t⻫ɂuPDOˆ_r'(9Îq>10b5L8ӾuLhw"3*C+S{t$ÏI#QHFgFsr'(?cًDbZMg(LEh2FSx˷S+bĺ%(BL{[_>dzXFK/>mE)6DɁJoVޑI\lMWRm;3lΩN^0D|<[եc2_z}TU$0`<ˍ9}Tzp8Q}8+{WW3]~K-2awBM.y 2{Q)+OMV:>5iCx9ܼmz }i>fɓuI+ʽ.|pF}'٢@B $2hz& DuuUIKtp1$A?0=Iֳy۬pds總VzDc }(*R>RbeF)'o<Xu8 ߫F' ||,+;' 3b3Q)q}hť5^FMH4s! ZЗo;几&8=[꼻\}I @Pw1SlyYڼGUτҿNթܬDL~*2W~DjݕOf(*AcT0KR l]7ay8 ƢhX6kBŴ2~H|w}Y_I\Px>'(j><⸸ҕI27XD% 3!Zɥ7WӆP@vwk>:;e-Nj_~"|F6Bmm1lNn]ʁG,冿.09d;['@5mgV)$ƳX)v0Gqaq]II<8y: t^Wtvʲ&'Rˇ[ tJĸ]EUUrg(P%c9޿e$i@IHP|UQ;0 ms-E+̪yxiɇ25}s QUb'`̯: ,zH5mK[Om;s3cA4 IJ l3^k4b f[$]pEe3oKsU N|vl j0:{Xd5}}nݕܦs\͘=Ir,.aޭ%urà\qgHW~\YB#(ր/X=z=#6 0'ZݯyGsk5 V6,6[ Y994ĦcKE?$iF{S`}}/)EZc q^8Fnw:<׽Jug2xDto岱cV9PҘ+9(#NjN\ >d/3$gF  ΀!"h޷KLdId $/*R.ֻVOńkC|lL䜁}+36!Nh"1K]F_Bfɑ [Z!d  GP~*ý<\:NalG5ވu'$G DuOjEib=e`h& ~q~,kXGNoNGw+-$ K&uKzkɛMm<Ӡpf-Qd,M)ǔ .nRHE"'5t[uTLl _ί?9}o ŲZB@7:l_KBsze۾6O?3ш֭`.` ڢyf%q뒡{:])kXs8 cplL;rMZp\  l/*LW!sd&hw= T@RX3Yw` f݄EjlLhu1M}EJ~>')q_>8 > UiXp7 `K\*s[#[Q4?#4`_bXH#{Ln?k5c2ˤOA}SR Z<l']CW,u63J.TOH.7|S/s+ [ W@c(Gq;'^Ip6=L')~.PoMsi #<*y@ao+]MhLHC nӣP#PNn6{Er{8|]0iv51X65z(OQurzn)VfpV<ݷ۝NG5.m?ÕCbn1PRdΑX{9,KSīBwpTOd+Bdc5pxY6DkDWX7$zy.ө٠:#W`QZRDsF{cBOMz#03.De^ICiucOͱ7  Yen"X r=LnE||R ,9|ZR˘mk7Ia]pz "4{EHIj#z5Xzƥj_,.dtnﰠ%xjob/:r '\l û 8rBX0(šl܋uɠ/v.܍;f#xwHl 2C0 w @DszB[)4r hʨ+{{kv!/+|0ļ9MO"$J婈+?J&>uzi ?`x@ͨ;uҏ#Eˤ H7_@+P&Qt᨞d9bJA]ĊY\$CDi- S&h^B*PᛇS3MX}c6 rBHʦbQjpp\tA^g2@_Q[=njI_\ĝ =5#M8JYQld~ ҈%c?!`o G*L f%:\,_j+-+FU-Zcտ.WeUm" V| \Kۈ]ܙo.Q5CͱVdv"] >}պ$xD}L EC YϹϭGlΕ8գPR{z&tF_dv}gqPVp![~լl*${/$xL_PBA'tqYtP3z%%U@¿x:<\z.7lLhGVqJs8@œ`"A9qx.]!h[bcue ELt[36V:[H[Xr:3N!e& <Z>R =/JRhEtB{\Y.F-HqśMPKR!>qq$b ΣMhwQf.usHPăLdG||]yǀKv.sIϖlH皧+S SIKD>Xx.PuY;SGkxwٙ#pl$`U28҄T$$[3\(3O\5b4TS|N3o >NB+LȗD J[d! :5H<\T?+ҏ֓[uz8'j:ͥX.=T^كw~E^y巷?buJuIb)v&G$޾>ǗN_zlu'mM/JEqr'l-W 2[) %f9GiA;д`6C{`F扩e솈P.nފ#l\JOG b0c$gzg%)>o e[bE.}n6[E lP\Z m۠ԃ2OU7;LG9"}ӣ-\Y1:ÒX:pR\Pڳx,-}jTl}B 0$Uܶd!4>pD9}.Sßi%I[i; IC.]^[m}#d+5s4֏x'د|#5TΙ-ޔ7Jnquh;'k'V9ߚ$XAT!ǀ0fv PdxyW}e@U2յQch>Y~R Y~^:\Fp8>BnsQ 6fҿ$É$^ f'YN6ƥ!M\l+m3GWQ|X S[z^ּٚOTly<0j:p[Sѓh+E}:1|/簚cc~EDA+V({a*}թj;.:x+ak/g3/B3y(V^](܊e^Dau8IF]7 C2l=OeI6x+<,RjblneZ~N3>sfq=[ea.)B"6+4=GW6[l kB:{Z5+:2 ̯]-_gPL$u(zF l(=&+hV9Iy1hIVQl}qr)vmK9Q;aO8/ܮ8a Mxas?GN؇ք`B#N &Z=ً òV,9M,!`|v:z`hph\i>.]Uqx6"b 5K 9 OtV &y3~Lu-+D~+)ޮ҅d+] ˴!V^9Ht'crG ʘuq%=!foӣ:EhK^B;07B;*& $n@2/\6j5NK~Kc,>Y>@i 4 N=N*z)mΥU0m&gϛLNV*hXh7"9 lN;V;j @sis* @&s{8׿>p5% 5IȬU;zJR>:w%^m'~PݘE}ըw^PЪ :z=xq iHb9ۃG[nFA#J+O؃D欗"\{?Upϑ;p91{y$ZS~'?XK%EHpwf9 81oUᓺQ# ȗgۮU%_8ҶNp q^Y tR3C*k( {a@t@y 90vQk|Õf"HOMڗDqyp{L[-4ఐc`UzyXoӵWzYN\&aHFmBEXQGɮm8a.;FMÅ~;@^55!>C2&2[\,c9e{=*|$*5B(g˃9M 2uN#飑RuoL g6Cv|gqT 8%r_)PnK''3p1OZVwrmZsoE~T|~dԟ̈́p5%vײP1&IX-P|W w(32YN57nor VC-jõPL+(yVd"\}vPLӿO]nD*Wve&} T< YՁ|m+yT֥J ȃ^ᳲקּd7ܺkZ49kfJidfVm|-yIńM[9 GmXZzx2;fJ&pV ۸(}ĔоGgx`u=(/’+ssPAIJ"ͯZCy߭{`L0F1 F,&%VLX#G-<rҘqHBNvV_A[<߫o+!J~9ཨۈK,o{?TK8eH\(b`af7%gבTPL!8#R6aY4MUΦfX>dA)iH\p t$(+3'+]{EQKd!~5XLZ(e8ShnK?C׬h1Si`8%t)ry6m91]OݝQh6oq:CF!<"G??I Q92o8NC-M7b8b79,fHKх ")oFgeUlP7" |ePq5~SA4BJ)6cE͎Je}RWmb M˾h-aA00K#H}_aײ~5E8A{=Lx"eP#Y+fE"M>u#kMX]d1@46~' RN~z !vRUHk-| 5!H3[,4S<:`B7{&&6!-zn'Ϡ }f"%v^+ʇ|Km5rOF?eDcZwH۶ظGg\Bh* s/Jɹl7->^#28619kIm"*ga|"kmYp9g7CHGůHmU8 M@2'5Y/dKy/!$ٓ oȁ8 FLlpυ[_)2}í: ]Я-u㭦NmmQv*3Y riA"Z%OBߨiC/1&v!s|b1T ~2n:jY$CfOҟp\I&^Npۤ! ) #ucKwt߂-zB9ƔűSXˢ17)KG#k014S*Η",T!ʣ)!zX0#o/ܡ4 R v)VEN AMN%hԛzBdWujid5oP΢; n?&- rbʦӃW'\ c:((Q{c t1.6.  Q},z.C(t JbO ڧK=9RE 5r7)pm_Η0c ZBnuʺɨM=FUdlCeG&ZLWQB儫'<Ɣ2‹DeAaq!7^w/V5VpN&C3J귇A'EfU/ZU~v 6 9'#[VGI2Nd[|2}5K?0dBXC 7hynS"PZ``AKé FxH9وBm>Hru'P4M *|l|pN*gu˴KNFtgFrV%Vae.]s!sƪmjlSjH[uEYsdoՖg.["6>[ԌNg"59ubk͂1'Rnqf/B8:"_Nd`FI}(H|돠zŝ ٍޱ*Iny ūʄ 7KF!XwQ2lvD~sV9ށ3| 2n20>>NRV %VKnlb> ߖ[u|!hyv.3#c{< ែ, "JI (jd!>aD{ϒd2Lyshu~2r ,OC/$t-zI\kp%DxpxD\Ӧ7P鸺%FejH+T#N PS-8G N~X0 .T K:JG4EGaZ=DpLPs0*dlYÄ ߌ2pKFͅ ɘ:UȖVJo%GOTMQ[5WXa]Q %'"MvcGpiV@K`-6b_-S'V=Y!I/fj鲷2Em7&!@x1W~?(tA<64vnR]*#hԐhVֽJ.o[eM.KI*x#Һu ~oY26Hэ bv=\TD5.M]ƈ,vX(*y @wSs#u)QאߊE\ KSȳgN&uUt* (N!ij!HF"qw4X!e.y){py-ϒ8Bl*||;ϊ$V](KDJ=G^Ȣ,vvܱY6!5XhG;} Q횔AJ@A/VυXgrPR!6Ye0zzr N#s[.kp_ӕߌ֦CO[BQ]EHY`=EB&nM)#a&8vl~TVі f{#‚~J>_&[Ztk'HXb)).= bs^0]Dd ~O؞ihtAa A"\#= H]#Co^;YtrJ5"xEB/zйz0S{Py5S!j)w"+Q麩k;zt}"%'eě.'3^b4|=MuGqR2Gq*J47|< )_x0rH٦hE J.#gB? ^MC]x)*SB 7RD5\_$*tgcqǺN<dU("Z[Ⱥ|H*C A ĔA>"]`'"\;^#-+wv+oeA~>YՍYp(zS*:jXi(HsMC1dMt:+vz0HӗxEh9s:\>`!\ӽ8 g>@Xzs}.|_ d`AF͞bb[t0Xz:hK~ͦ(K.grÁL@dAսvZ'a@UƼJTeu$A` A R?9 eu+D%o̰򹛷*QQJzι nQ06rW( S#}c܁Egt/`e ::Y{DcCLuM%я;v]o@{=^^1ld2X^q0?qҋ \4%FI5V=e!q:XH'Fv"c2X/)SSx h5heYc(.w2"(f׵֩)NJ%Ll?rzyيDE:jEL]a{LL!74,8 ~jL`1snf, `!\]I^u2Kk'CBOƪL3- }z^T07쒄b kb#.B"lkP+T?Am/v́"MP|_tz:Cc򨿡iJA|PSac hn[X6 Xc.Iޏ˽+t& 'ϳ-&*)^`츎Y} C d`&f~NuwA/y7S*QGv%}rM0&&Ρ5&4{M, REz~mĩ/ozfl>Ou|Eb~!6kpE{lcg("q+:儎 XjTjT{hd_ʚ_a \?`n͋跳EP(uq\ J}&֛kz!w84 M"imI"˪dź|;@v}9W3,R0uF#Q/ R¾܉xNa p͏, >c%~?ƲtYc`-a鷥.Rd{_}KS@GKf78Eun+äw.tzF%*ԱBluh'峮> `ܙbe>#L;DһiSZXLex6Q0-&vwjVZm4">*huCpG|Z2Y9i,z~ɉcn&Tw*Jv( 6]a?&C$.mI˾;19vHMr|MY%+e@fe3UbJ)rƆ~h@0L?'kAEtϑw!-AiڡjEEB  e˒{7 RD9u{gRNu.wr*td!Y '1W({7uKw` ⳸qw4.J Qքm4d_IG1Y}a1gܯ_yLI}_ >8ӝ!nu E ?hXɳCqcQ b@/,rѸl ::jiV{ۂ&ʡ@Wm;? Qjhxx_! T8-ӓ+UQ"|yr?3㿺*]9s8[CO2W%,ݒ(FtA|$XL*#O4, JN\0 qEhF >|s~5=U&< G ٤U2+I 0<Ҵ<3 Z(1`?H3 ٮBZd}D f'B) oF6Wm;2VdZ:O@O/o%͵Zr9N#sYUX%8ehHR^@{ " E+F? F\E=4 NHO?#-0m؆1.z̏<˿fNFZxVBQd[h.ီo,鏫/}Pzt|X3k/%J=qay@tL ۃC罕ty7< &UUcX ]7zC࿘b̵gݧL $gtP1A Fc]C';nK«YRPgv&VjUUtCm-a0X=MSN, "EC `4Z\՗!Nf(T `{ưr&e4+죊3{ZԐȶv1JaQ ^E`-ple =tX8If`:X},<GhضkO'!g\AVeuzb-0+؋t/t^kQVgx9٧SX15s`\NeNFءS"Gշ#ouǎTc (25%X/UXȉ^?A(uOW9^pcVo:OV|:Y$_ʑ=J;MQfP9%ZFx|g:bo`d A?:pR3Uj’ n" ^ӭǤʣ+8Km #%uk>.8g:K?HldlH$o^]BL iY1k{BThY=breyjBë>J6jJz=Plň NO,7ex"ey${Ͱ|k!' p:ѕ>{twE.(tc{2āmS9eӵx ܣᶹ;,hfw4v\md-} 8,G$InpΖh$45SbқǿGVxNt4E#WmF(t~L>sD'tt{# }7p:85/?/w ?"h55~=GhcLN.[xv\P UmVn!|.trHe۾Y*lcme9 i 7]0z4(t[@Ѵr-$'C!JP#B=OU~Q&3d&yhX_5Z* t,86[Bo/bF/wp!cXt}W|C0H@@Il"@}>gH_4LQ 70Ht.T@Ik/arBfJ0EYe\z?l;?EP5L : $V= [n Lr̼$m 2GN S4N2NZ"u Oz i$([28>D?! X/H@y燽|;;n v`Cj dEԇѮn̅$"P8Sd=WjIFv|B,Qld03nr@OdPعf^!.َ*EIDdok>Ea(9!;%+ƕTeJ=Gy&_{L~ƮBq bYk#:z,"bossEӔ՘hD;}eMaG$3顳ǯ>k*Q'r37On|\|PPpjA KXY_VS˜t(™ߓcnwɫ1cIx+[Z.maa1皨"SJU%E&MwB1y*`JQ.,Q} ɰho=s\5(&,jl{/~p,THF SaWjjqF!t+*n!i3Rsѧ8 we3hkӽ~kjLbcG[.:䎽mJ: ~(6 $ý% )~`ė ̄rZ+@χ[=Õ5s/oZ˻Kf,WitX4|tJlMv"OitJ@K8XaNϞU?TyiNa@̕xDfz.A|;8E:lidVtu44yf'S.T.WԻ,` 1]rA(>c񫱞^%67aw0NԮ$R}Ўk+izⵚ8$hg %X8fwn.yy:o73N2QޤW)|͂˱GVzP<̌<7o65(zw4\ÖN,\® " ?xѽ2ErkG#$wp\ Gj@1ƥq*VF5͜t͎6&BL;TXHT۰4 4a$84x4[C:r-eOh^ .D}p*"2[  oqm'k[f̯ȥ$5jfDm鍵nm׻q)^KlM,oMH8in"5h BǶս(Bdp"0ӔR~Z*_uUmq>hf=ɚ{(bKx9u{(o\+jN<"͢目ezQ+[gI`iP|6IM+x쟦s4id|-"/wnހT:dt;^Mg&f>2%\16rhfNtƅX9DV\AzՀ9JECȷC5ek?>o4Xu:̱gĮ~+p\L-70AX)+ tlhjLu˨:;0U,*$z2cC^e0$ХKߧdy&杦\ifks4$MqcYMh# Mz/j8JLQ^0n]b$yϡ7H* UcW߸S}e xM+'VJ"7Pұ3{\SKH3(]K E^mx%[rYBߛ?KgrJHb dn7%5VLj Q1nSa¬0MT^C\@#:`RX838%-AZFwC*Jh6ܿ} 6UVw0Rɭg3X^[ ^l$ԮAw|aQJ-"!R\RRIS[r&oħhQ F#|񙄈|? P=sx,~tIsODz8Yu C.!4ȶs/fn!JfoB9<]LAI㝰j4}ZytTq\1𧝷E҇ W\jAY$GM |?]2ԫziՒZ_$::SL^Oy>qf@ѩ ]W8gr˜ {}{gv/%U/y.~((\gF-v-ǜ#.Zǟ6|ӯN:PTV5TDmP+LN}]A/ +;UrozQ2U &z#;6,FfՌ|5φ/듀ڇI1,_ ܧNqq=}?^%ƈ 6UhWv"VQe>> riP Rt kbeyGz~rWLlЛX^WyNTXPJY`++#;ڏxpit@d2^JH[Ol$"Xb++KZwqYFrn:0[U3~JajE)*WV7LmҠ`$cĔ(0 OD̾ h0 N:2I#D Rk+F. kӂz$8L"B eB"N"Q/$ԯjpRy62?,ܳ2WS󓶭2 0K6b|k6یe*ճ3n|PxwT"oCn0||{ R1 ]Cd22rfS-htW7!P)Ey'޹f)m"׻g|.n5 LQr[EZF4Mɠa:/ls1~&͍b)pַjuHt {}ρ1&d2%X9eZG*(ILH98lrPrЂh8w6I4]C|hQ{ݶSb*6IU/5 1EhtcS1hoXHF>xN ,B128)akS_1ӡ'Alu@ O~]WZi#:&ajP=.2=>{='O( k 3#2[sjIҪJTǗ6o9)㉫Cvc H*,]Kfa 1?[N!9 Cb@`u-ܕ>GSA9]2iYWR uu'=mqD Dm9{gz2RQ80-cf"@w>(FUgf/w8 QČQЪ:'Q[5r`)kDȯ7'g0>]Z2b] bab?݈l20*f2ߵI%pv4 ~m+P}+AZmvwmd:w{3!J!OYzb\LA, < zB#!.ZPicS`{ .Dclz W25% #,G`G*,HR4Ԕ~çL-?Rl/59*2jd`EU҈*NږD< llgJXI-smRI>4Xk}O#"g1eQDS8YkwWÜ\X2fdp~U'YK3|ic *)/QwKbC"´$5F0JljCRd. a.Ou4vH^Z8zER^z0ζw>j4o~7cBN[Qxj@Z]P | 9eŤ\H SX0/%)=gPE!O΃ |ъ:p+d}8$PD f\kq""r;8ׅ͌xZ넢8O]y@L=*{Oq̑A3;\Ĵ-9&+XMbgr HUPwZJ$j2%n);;rSrx0 `ȣ5Albv˸.]_xڝ >DL}[л` ?PpaL3g=-TjI0ʆ y)@/ό•׏q]08;*3 4{3 _ D˛\s$-ccjU{2 J 0<%XW&<6X gĝmd/L*qS Gm:Seb<>x7i%ԡP>)4 w''Qtp:u<`6_TO̼)Kw6q_njQń3*i=Yv񔞢br~Xb3L7b5Nn{Yϗ;5Ÿc8ʍWom qhⒹmOw騩|~}ff#F7hDykk+B?Y{[ڇ f{-Q^zɣCgI$*glOGX\mI*>E_ 9F[Ɯ]y> '}]تxJcM lAhZl̩ć_=v-@EggJ^ r\Q2QN/uɿy#9jH^hdI7wQ"^Li>VceiuHU$q8tlRpcQm.%c4-Ìi-tHr+N/l|Lx[|1(ݵh$d&v x͂ @=0GK>%`Yd*L\}5 d%1[`#a# l~ORtJ }OZ_`լ=Z"o(rOϰd(thj y{S#Q>HŇI+Ά+ )9B7ԩ:VҌT :h@9~'aO! ;Ѻ%1hL[>x+_lm!*9Քl1yWtH|hTە<51>5]g-JދtBLWɲ"E[Hn(̕"J,[[)~td]lQHU a;:,@gC{aJ֗a8ޡY(ôΘ?wm:%Vo&Qdd ?ؗi0[JIa&sxZIhB'Cl#ޗGT s^мcU #S6I kaͼ~*.|Qx[yX(\@&-ct[Amh9<vBd=W m>cz\fa֡I~P@y{X7X->:E4 2&0! oөxXkD ۄC/? ܏7 32cYS9Lĉ+)n@d.!gS q"H٩3?,w=/-tn[o}n)6sMꞐS"e uh +|zV=fϤկX1Qy?,׹QIMA X"d8ݰ ԰7#gؼ^?8i:$u .7q?Qp؊3UzVz@33x)nP\1$E#Y NHׄJ\}H& `s=En3`Û /#QVHB5tBZ;Ean-vk/4Eu,\eQg IUI>m+yZZDMɗ|+OMWka}3kdzCFGl&,P^#QTT+iHiYju:^ Hoϕqю&x3{&敟ӕfӓVbersf }jCRwǽՕ2+nħs=\&$@>hYz @YIO܊.(Ыb-V{zNwrxE{ԼS/%sL,X(scձ$̄ s:8]#y)ݸQL速 Xe$L)pB; T!chW&{/MvFY;fF #;І.Xob*d!Y zv2]lz5ՎY i:juQILL!rĞ1:h裗 mjF(>vY.~d+@  [ҙ*UV >IUe)j-{ȭ;kv1ZD24XFEqnDu3zt/MW L2x탥*YFOv'΂/~Nj@*^J~A s"[0ׄ Iݓ*gdO#&I_Hrfm!wdWYK?𧻓eccRuFThꍂ)9\AmkCj٧LM1Qɑ?xE i>v$.ڜ?t5 E&h~ZƤ)_; zHKx'4 "{XQ 7GqZUHZaEjцXesW=bH+~(9e390l/m<\/aA(ЅX H9i>9xmT7RR*27qn{05ޕ ba*{M0lՎ@1 ""KKTE#tepLW]lժ]Jo ihe"9 QE n֣ɞLGP.06.ME)3=}}]v%r#D2VO;dF!akzawɱe^p0ӄnb6cxXO3?bi_O9Jc1MQ4AfD/3 ckB|U_LI?DqrJJ= )an3AS$pFGI,y|nEhp),ruI\[-?vѲQ96~etF lmP& HLBͺfUhEt bmRMbV?-En \{ qM8̵8*-T'>}N- q9ȟ4][;O!ש`_}9_Й,[7-]k&ѣ\HXxOIxyn3y l"')j XY@ZfTP]0Hbk4~ ১-fCA?s՝;x{g|v$-bO[d8P-/a%WžKR>|^<"$UΜu$H0]cF~G=4p/JP*^D*B[40ՂzwE=VN^HR-KH$4kQ7|Z? 0 IQ&8uJ F6%<&$!WZ Fvd?&P3֕R+eK7Η ˓o{FbFgݣPfP2`\E+>m )1^.XTg6 (|odiN۴UW7T0V%bNx ,t֭e{cXʶ;\Db M1JH_%a9 EugĢg(B"Ro)!"bz#Q#zST9PZR>n 4#}!T[L W!(Ȯ#gXe1şj)dBn ;K+ qJߠ[2"KN*F^|X7[N |U%bAPZ5^~jr7 `"nn ~;ްTftc[͐~tپ/oj1QƔN6pK9uAÐTgpR?ŝ]1(C=< K)F+D}^V~oVVLV 3E_'qwGnL4/ߚv+<[SN2zl/WޮINŗfPHDt&A&m?WQSnv*UZyIG9׷Q~gl3(v"f[,<#% Wm//4$]kYWFwVlPBHQujOs#qAxCI ? Ҟm-ch8Lcu,uw(5'Vu\ոC.e Vs6 E|+A42a hv[tδpnB BIʆ_7je[n)p̶T($K;6j42uٌUْ(c~G"B^+m֭xZM}N`tF H.%Wa1MSMVhOIbFl%1h~@e IVIE7Xjܩ$g+[+$桖ԨFwCkK_u*<آ85F 6Вxwyn֢Y-OYhfI,.,$R>iITZSەTݟ! Mר|/CN_$:\J6CHGm,U4ڊ$Y 53J1A  H3=u[DP?~}`=q]m ZS ER8eHdam2g4cr'?A뺻ǹ5 jY'v3e_%%@ kqFYOf*DpJLѓ_L}oDUɁ<&lVנAiA8#̮g]x^XyWL>xz,melVDpFjHub>NfKޏ&&*Ir.eEC:tlȮ}fTG_w \^o)fjoĢp4tbf/ݙlJd@W;>j4u 3~[UIpEwmwAPQU܅#[T9T 2 c - fS8g5VZkݩeuCfj9uUs6=WK09iI 70oi yf|d ZPc6(7ty1f)#&JscF9\MPP%v/ON'*%f\ųbcǦ6W'/e z]~D8Pİ@v#,1J2 4,A DrxJ?Ee|ust>x!ecit*l1{r$2c'f7SV!EM R>09:uL2lxͿ1]GNRVDFTu,0PT"_ TNH?Cw0ѫ?W6$=8qbxH0X$$3RrűfB\# Kw&0HBWepN eov$䁭!(_, w|!IF^ 46\?8t$y툝zqlll._4g7Og?޽m(&TMcJDZuÄnHʸI,8TAT.Dn!PiF *R/qI}3"q2⇹$$AxGdx]V!tZb%Hmk6KkdNNܨ,JKóih[̸ v]]olncv0?x=փn Txv] *>xPUƕyM%ǯ6˜Kqx&5@P ٌ@:_GLs1p =Q{p+=@j@PW<ۆtyă4& R™XAP{'Ӹ)ֺ?AM)RXA Vkȉ$3jQ\p޷k!fӏ9&u,<2h-3.+ l nɯZ#}} RIUovWMioKlBˈ?\N&(q=$p#_(˅ѕ~* x63tsS|1^_0gYa|"χw]bRWPgo ƦKfBqxY (F|0.Ve%S61opMG ё`α'\YfRXvY[XoL3{~0Bd"LfYa3X]y!2axٌP1fCP񈰆7!ÈVEӂbfeT{s߮KԙE*|$қH(F|0.Ve%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d ;*lߵ;Ľ._>KfBPrYsS|11np#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d 7.'v}Jò$oKzHDevK2.l{,yv iaeh|{Sq8!Ϭ*Mkl_DCv`D2;BI \#z#+li;E a&;)C𐟸,w.{T:3UgkuVڥ>us18P2ȧ&(B,,XB$p8N#mB ϛUn%1x| 5a>#qfn }= L_7i8~)>Aۅ!Ũ"idF9,,Ҟ$TyO o?HBÚ8"4 "sTd:)էY5H 46_eԽ}5B\-VcevPvl[/AEo!I35zjˢf=t1PE|mzu3ě졌e귤ͳ[cHڳzMUj&# ?}w!nz>SbvY[ڭR+t[ BS=)d ;*lߵ;Ľ._>KfBqxY (F|0.Ve%S61L}i%t].Gr@3R[$jgQyB R֔v_:d#$Lz_zEH0A%%(n3HFء&JCm]RM\_#&*3 LkB6%櫋__&|ur\m/<ۛeԢuLD=]&'*dBdn0| q+y!3b}ZQbtI\ms#sS|11np#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭ)AꬶMioKlBˈ?\N&(q=$p#_(˅ѕ~*'uMدՐ%S61opMG ё`α'\YfRXvY[ڭR+t[ BS=)d ;X&7+\5iƳ0rfz0c_tޟ} ;'?pʃ?DG'(!C~?}Ə;xlgТg[{vhkdF5cM?Ovn%+1$NCu fř5zd̖NɈ VQCtGT &{eW*I6o23 Ş<[*eL_crbpgwzk%nAb ݲlkp?BKrw'fY299\)dl k6]9Tĭq]5c=2 (E Ε(Ev+lk|rK԰t oi3A NY]ó4h,Ix_:AN0b?%e) sJ_4!8R]B# e^A˟zIMZJ9n0\녓 %k!jJ[UEe۾:;Ҿ}<_9Z-Q8UBfR߱L6{wLK`.SL.վP&QxRhϴӐ'% /'yى iyF6 znY6HGFU~^7{ )i채22a[ 3=Q\5QHВyLДG!FCճ W'K+ÛQ@YZafex/inst/extdata/output_mixed_vignette.rda0000644000176200001440000013222413720507264020741 0ustar liggesusers7zXZi"6!X2V])ThnRʠ3#ŧi)Pawǔ-ՍZkջشUXm5\ +!J: fm%z$!{ۯ)˸%W+]:5 gOŀ4(CJj@x,D7_'ieaQm T[~j}E[Nw BuzE7w 6sM0:f!H銲\A(;Zl[~]h`$6V#(箵j/QBGұb'%n>c~I㗒S#G;4bO;1Bj KbՏ/g&]ˮ Kz XrWڨr{}Qބ,n6NfTL_JrP*l~483o@&b/ZF"a80(=j}n h^%Z Pm6;g+Sܦ D%  ݀ U-kz҃=֌ǻ0ز6cw{R b9BOd:oW,Vk T<uZTc X!H]>O^e.Z=M {c"  DZ'd܂fQ`02Q7& &M8Yb8d%dG{wҵx^㙜DkK¡h*vPLyjP^E 蕑YK6B _L Xڼw_ң3O {}t.[߂g!g2|YWPq_?_MR^mKHav6Rmz6pɎHoR:"`f Vgc&,7ʃAʇ4R骠HnI%fޙXi+ s1"|T9 2jv0AT ǎKd''7HWr؆<զ[KZk}Ss'ph.9|Ex%qQ7 ݹ`j@فFqn@8X+j,1?d[g頽Tm%욽$9qS.s4tQ}w9ZkA=xALקui y,7B!wNۯ2UK%킑kuv Mi A±^6|܍!ֳguA " b֔C >+7\ATUmۈ6-!q:xymHfġKLK%>1ShLu t _d g!78w9G9g]; 簿`]I4[R;8Qt [isIo-e0 ]dNui7 8VFSt3~ ȐqP*c+WJrI4@r@'F#&խb)$}.w}V>tbXb 0GeK[aR|DD_tP4twL`|Z"X;;b]|}&~M)]mDj%`SҎ[8+h K aE("AVgf]uAgQE0\h'ojiGL3miMZ 3SʷҥR rMFOp1@&#Gm**. nA8-pʱt=f-"LsA_/^s#mURu> to@&K̯ qV1B/nwJV"-%ukpw1 [aE7ߦQ'49",sD;8}T!:QUsœ=^T3(f<)dÕ!k##.M:]-/ @:K' 3rG`v~Y Ť;'7=` jluC[ ڴb};B05p3:! &g?ގs8WsZ`#,bH;mF^mJQwK2`JЇ⃏/LrƻgS:@ڎt`E$vflϸN|ɝh[xFz'V$< gzCE7cS+%i`ELQtn۵D绎fDKk`Qv2[QMYaCy!SoZ/'3ge<}-ВujڲiԳp qP,z:.4^YOgtLVM/ZLcѠޒQXou YeAAX]TlW܃eík˚HxO'4Bbm4Tٜ2@O}G)G/Bnˣ-< ZPhћ< dL1 ru)2އ\LKhI9׃y¹sUPT4x9@̻ ~CyAX }u[RBjHT0-mP}xg|lihuI$@8+ll[|,ȜԂF}䜁D_uYЇ44am0 Jǵ qxX554mEHQ7Xh5%j&u ıe}5~7E'F@uEwlʊ,f#W{ ֨3Jg"%nX9|!FxӼQL_MHRB,;"VS%ۧ?&4 ,\'sVIa%B_+|5h*zMx.}?"~ },H]KhHu]\?nƛI?ܷcbfIKʞY[nSgDc4PwYvݰqFpcY`:mWG Zp'#ʛGBm2lg>19!c3Ǹ*8T؎q˄SLOgi䁇]bMZAOk ŮxJ]y%Zr2џ)z543OE]g (lǻ=Bf08Ovw}:$ޠPiTBl*}vzDE?+d ʬvpo㘠? /36n1߈⬸-lcb1?48~lx?U豦ݭ V;͒5|.Iw*%/2 ;Nmؓ`;iN2>cGF>q,C^ ZfGWUl4<&\hJ}Vdh|4 h+d-c[:}UYFjkkM:@9A 3ʣF9=y0jci/1dPqCQj؋Gv%;%Jk@[`t,J a +eofG>#o^\8AQ21*ǮlK;n7K7^Y08 7 #E_`-i:C{:޴/ 0lD|rwCg@ĈQq,d,9MC=9ps\{ztjO&VmJG9Qq]Mz|j/OeS"4:X7{ôp/\t*Ay+{sy4_~ȄWC+B93s?FK#ɞ0H2"#̗:N݇`§R`7яyY4ϲ`r傗eD'=6Juȑ"p? ׁldWEIl_fUWpj.nnk4 1QqW/]F*qa"F;@[-.4TWꇾ W^޴yUQB_%Y2 ,/unk܏;zѥW{Ѹ5 *iF8wB }#S 5`6 6n5$hύGpG P[/~}ˎW6x| ̛Ȋ~4gjaPzږWΨ-~flJ}m:x?r4:(3o.\`0,%" w ߱k +$ZEK%cEe!nIqSim@$p 0&m BU[@+`D#KR\RJbw]AJ8&qu~kIKf1ioJɎ8J{ JYr8m@ĭD7) 02iwKNDD.940v[%EB-YxϑLѪ*T^9',yX$A"y`xRn7PExZ|:ӰFuv XhۨJP}% mD#ܛ+Rͮx8ꇧc7hNaf+!IcC92w:.|wq,ȸ|iͦ1x#y'Լbݘ3o5K:\xRŃm?:Ve&`Ɛ[j`Z<c( q6C7΂9߽F?=5;6)Є Пx[O,0 7wD %Q^d/070v윺7;ZqdǶT54ӱ/dkXD. С7a' λk~n$xr\º& G\`H]r9zbSZ^J"=]&'0wׯ=qe"y0ݑ!Xm^KV.B̎lV3- G Hԧ"ָd㕌"eX\ia_*MÑll(ɘ/ǻTL/ey#ƖV(S-ᢉw+9kGbɡ> W OpwnKNmtG:vDлٴp2DL-Y>F/Y"` <~ &;ӁMn W饒1Y#y欕 ]lEY]Ad` 0|)2z_%]>9o!$ׯD º_b۳cǐl|+jzP3SA?,_5 YT|A6>L8A!0b1o7Z8.IQk@k^NR!bc08p4$]$ؑnVm$>V#s#gp>~#FgtW%fכx5)[d͞'&l 4W&ڮ ^1Oς`ټ9gZr1zVi_{NZhuX'I5O% @!z)DrR9p<1?5jafn{wlqy2x泵 `vNQ*4)FҦRLKy2k+Wn g5F4LO&NN/)6, 1G.F8>2bF^/jFTvO쾻 )֡l*A45N_"͕{yy| j>oU{[Jtk+Q~> yHp5z!}FщJ5K _D; C 8֔?hxw6 &4Ш[Eo3"=R7{E d˿ Hh5*kZ`*|hXTvӈ!x9'c,}(n\=8/HyZ>6\$K fdH|r-ېyqԀuh ʩjv>0³\e;f#d0o&$B2hAI1߉Fyjt&km`:I6vih^܌+xdC.%P%=IsB$/>Uu\/*  Y (ٵ.Z6gS*ݍRFw")GF"50&E-ףQX[ymT"RV:ZFmURIRXEl3oJ*ƫL?3C,4Se)F/q?sTecnMLk.BGvյ+ S#?DfTyr.R%ٿ%SFmk4*] 6C6~U,6ǽ]~KS:E\? r 'S:Jnp2@儚0H~N' G33H yC(0sYR K/k'N_S%\Wދ+*--9),2GJD`Ṿ &uaߘ5ax/W?inAaq|MlBGAB{0RRj=j%C D4cK WiR7gS,2Y\$ddZGNڝ߆t+5P_Jw]#p| U'º5cnTim =@f[HYRI鲨#i?DK+q| Դ2Z[hd++hվJ5 fmh`p:.6xt]w(&i.t,埘|҄;@=&^7 d:iƹVMv"AĒy+۶@"ՉZ%pIjz9 J2ꑬ)H>]ðu̮F3#a'qO$wQm8KS-'F<4Õc4>5uQO \S]ݍ#| Y! i΋oO l8 ]ktԮV7{ۍ.i&&i142(ZIt+13{(^ -G<6\ڒY5dÎvt. uk3ae;G,Aj@굻1eŷq4\dhZ9_HQ3#Ft Y̢k1h[m3(Ͽx=q)H0]LS5Ң6Ղf܂լW-MVߪNIs=0׆0?v7[/AU?@"*;gmF$@7!'$劗 ]AzW鉸ByhXz}+0k n"=-%`RhnРj9F0 He8QxeBwO3}?fQ ?=;2R28KScPKxSsr,KKh3IH5A|嘝kƵ;K)SZd{Ͷ)x54s_d usMD{"9]UNtH! s¾% H1$H*0N[ѭoK0[IBs봖Ocwq :<9@ EfLa%B1Gk9Cn ?"BH!M\1v>GhEz@2}9 * P@ /˯_ӗŨ%.zn{B1pE0op8}c~=%S92 3Ŀfz\+ts͗hG$M=lP{q6?7{)"0>]ʹ#v¨>‡d;+b1zP#V*X8 Z IGMxL>M@ ?q1bNʵTzr'^#덫(Qb:50RM9`52B4b6ʄ:oKyF  +TqFi~j|YŴؗ~c9,gs#Ol٪!d龍 }y0H6hYۙ͂F Œ+q r2YIo'pM%2@@t,Qڕe'kc1Zko}INnLRU#ff+A`@6%},  LMfpv_'b! qn8-L`F DsR±[(%p*'ʍRXfǰ5ɖvPXFZs~voD߈hTƷ<o ЦvmTӸ#{"2I,Hl H0 V*ƯiU ]0WHc߇>7w̶D6@HQhAXytB9}6A>!3TG<سG&ǢU0WD2uf7qzs_Inz:l:Ac VCLY:XzNP?Ii ]\yu%N ?6YFJ0/D'Mu8'JGƾ?c 껋 Ph`2F~ '"kHp͠XH$y̓Zaƹ'%g,ސ`ہK)„:}~Geড়XYx;^O86.@nrSRS*"yP7h1ʘ?VƲt*4 iXVWy |+`!ơ}QۙgFwv ^&ZGjxd!m/!ۏ޶Ozc2IhJAw^xƮY%r>q+2 -˲u*[ΨmvkMb_~1ʓ-m?Z}Giw[犁Lʫgy-ߝ!Ν,w}؀Gtb$)"W[Wu˝WTZzA|ё*pGNؐz*. #!*ڿ1v$< sSOn- JH Yt#Tё=ZW0պLO`, rI8Dz]Mx9ЏMR*CX96zQb\Ww xz-BxSn bb#7-}<24fLB^?Ȼ|b . \f@ T.gIӟTk׋8g*<;]e^iҚT $+E-^ 6UݵP'rq"Ihɾcd?)F `h;h`3`I!咰jG=>} " (#@K3K5XLwW&™ѵ,x)LŬ}u=Y1@N|VM?TXTz㧯cLCZT?#Dcb{ܮ4tݥѨre!xii_ͳCsr@s}kfݖS+MQ.I]09Wk Y:;U\OتJ[ 8 &f\L?a zf$Xs\D6{=h"!|YbvlSq+R*~KzݑzzvHwEїw}O5V/Lu]ŹORB8E~ʡ:VʀkFcmºV k屰th+%z[zkM㣔Xc'/|ob8D.%bOqa㵅{ f}|4'|dH0*(}Cc6rܴsl Nv:AgrQtM/\Ny)b$IP `i48'p`P >S~31: jyx!R W9k:YpE +^o5\rA{QwK?UyI@N zFXk3NdY]ȥh,ԱLŐ@EWAL/tJ8nđz`/V"@rm85%oڔk;5lߒW'Q.-Q{D1 +8,`B{qgGb n'C'A#l*SgnJHtdGkv"5L`{GX=;4Z~/zp*T&`'Pb"|o )<)ۛI(p#JBW +Sʏr:Fp03pϸ@麑.Q=4,O8x ԧVm/8` UpeC+L7LNLO 2&`m,"ի*HUxAJhe':j`(2=0L8yk I!B\HNG=Z*I{|=t Id>sX]~23g~S7uΌ!]rR[wJt=:,ݴo>EIf̅pNhk!r1t&E=᩼G D/JڗbGU(kImƋn;2es?)ّtGBw iwj㮇gU.)tѥt6Wqj *C$to5npQr3qakS12U?"R IOF3F)td)EJ \zN.J{+CZbGݨ|H@Ԩօ%,q95z8urd?Ƒdlc능{wFwl^<HnZP_J̯%9Q?n\["'bї\Z$jngF h_uփΠ ߢf<\q(Q. czc )Ȧ&fIqCq`OZY ҎDsn(T/z>>mL*¢m/ABqfMZԥ6wF4'GGm61k!gaܑfvOgX Hatr> }ɑx|%NEF`> /OUFo u%} P[U@k0eOGo*_zMo̎xN%m*%]HG 4%YSftzQn6% MS^ =hPfDz~4n)y8wt턏.$fȍ%@ی~ K`%V :KIɕW};/i"wëɿ 8o(f+?(&`#*Kh[xX–XtQbH(TYkIn&+0wING"ɰ BX?nv(ҐKGpGdv|'. D)wPKX2^|/lmڢ5K.NJ((=('hn3xq pnЧtQ8'5J?f537_*˜Kd:jW Q3\>6Ak0:>A\yv#W~w3ރc F?5#) 4!u "Z,2PP RIJn2=BUEhSCKcԵ۔ؘRd`'-䂍i1ג< jd+#T-, Vt9ix'GE1U!r%'g$wܶl8+1nO\hK$r,hx<0Uw"I3YR]h0B.@,q:sLphqZrNE':{>Z`(}1!L ӡїokTWJ /\nQgDx:8-3 f}j8%OݜZ̙`,eTHs M7srAܼؖ_MMz1RJ||t1%I#6$ 2Eu04)ol!̬HEѩ&>oZkoT«P ^Y=1'Z$"%BN[ymR}Breș:P3p lJGD|Ҧɲ .S 'wmT(^ }دSMӠF ԑ1C@wD(CX/.q>v9%pT5w`Z~zVbE*,Ljx]7 DZ#l#|aD /:_3ZP3.vg||8퐨T}zIs]`ӽnP><(d:$xC(`ǣ${upXgpHAQzwnD#KzX͒àd; 0Q2YEA*/,6u}ojh-0-,i}; !WVoF*TtGjbsi%+紨"v;JH4윫vr (1eO g,xƸ*c>9Ne$|t"4jo߄DSQspxE`Y-F¹;a}֌$v0ͿD4|-_y&rH׵$ teVv@Zejl>r1Y!Aҹ޻Lf}ON d]Y./ػEjm*]a)Zfܮ7BHبR(xřh5#SլXˇ ߲@E3(wnCH\h$n EIT,M>>L)r'.{c38dri` H:Xx;p4Z*-G25!gBoJ݄YmlLp%+AHzIe誤ٜX>z;A mœR6f3s _Ssi1^ٺ[>QVzl KcL`Owj_.UZ{lWQD}.G?\2\h!yN_!4O,V0B!Y"b,+^ Ю%^#0Fk~$j)ETׇBۦc*-$AگK[?FpCV^t-8B?wL䆾]*S{>yEhGNqq3.<rLhAgb_`|߅K50KVڠ$/ jl6vzuO]FW i$&xQڵQ+|ts*xP&CY8F"CYMo6ƠD^ޣГkLhx{!8aidō`:nM$[@؏aoҝU,`#W?w SZ SM\_z*u ٙhu7uWC* 8FX PQ8�u#K ~FF vr *"c0"w*hY˜NeOt/bڣCr{d,c̛Fް.z=1Nc Nf"i!N:vm,2fsR⋮G.sk%Q 7tczO$>T.R0O`l~UJ-q-nSj*ƸjܴȰnTĖȋE\HTG%o/HQ)gruWZi|HWސ4Ͼyɳ:xѱs$GSwsXjuP֙ 1iϻytF z\"%{-#c@K]pكAG&(reZD(5E﹦Ħ²m.֢ ~ Ox&JIevd:ᙷ0uzW'` mAE?Xd'xK5Mj_ ##@L7O]jY;c\j|q)mv  %aHT`eя+; &Tp?kodjŧ:j6Pa }$%5 4Rxi.Inb ă92h M;u3OrWZ=t̿U3,53
?u#%Y7]d0/Il  Vv-iEGg1D;#6O?27O %jewb/imc]7FUV;xJBG易BXvR@?M>&L e u-pʱc,Ezc2+}4Jf;lƥKAljԎ[_2s%ʸEajūOHJ۶WlrirouiKq<0{Q }LxD AZ,+7=?K;y4[U}@Jq`QRԔt6Ww٫AfW°|p+!ȗ.|7N IV==1Ymcu0Kgy$Q ݣ(oJ:mk6[2.CmaIqt77u\y"à%@e`6XkJV}d`0nKC!q^C TQ HlUܨp$Oum8t 7h׻L,c+vqTʰy'4ֽ/j_$3%H iRtp.ko%Ea*{Q$"4 ă?Qpu{ƠxzJ+uxB aI{byf)8=EM:3\:Uý:v+qӺ:nۣ$K;exJRQL>&Y@#򝯠k@1Ï%ߣCer$=-H ࿠piC٣mG9-_4*ZY;G}j 7S^r$J?s@ԯ0%Q gMjj"zUq&DTZ`YKɡwdd()-,d.hȬ鎆5܍cҳ4Q@b0X KC_@k0"{X|]÷z#¨b,W(6 j{ X2 sX$a-X_Ȍ^! A -4/=38-6x!卙?#bᶌd%U!9/pWxZ熟}@LYnP&GAQ~)M~#4f3遚297kښIg(AX<>Z}pͶg#'ӭ+fQlBCA}zUEpiUw kIU?Ty ;/wYq/`jA@zy^ 3 K=֖p=V*XfYmD<bCMWW ŗKx d鲤ke {F'mkkK_h3~wD }l'HZ@|ݎ$a: ӈ|Cվ˸se[ңi#+-2ek"y= ܊4jNRsYݶŝt!s} lzP- ۥIh=/ȓxoSrÖ]-iX^iSŽ4b`KnS yX_Jf{1 TQ^>^goYE_|^lF꘳-]QC. i{_"]Aa tqec.~HK aDn*o.KwA'{I+LwEo]ᚇFv0m;MZ&2{ \dE_!8`Vйl> U2 K 0d(}b?"&6ɘcoiIu:. &uyODeLѐߚ9~^A-Qim/`Ukپk1E|0=ď , ^tzЯ)%O^Zx0_l$hE͘ 5j"Uu`0UM ΣF4jglC/9d KJBQ+?b"DÇ4L˛ |D5mEʐXryzCϗ]{bFܼߖ7D5A$Bƃ!inr)_:H@fHGvI(`JWMՅjXRxh`6[0K_*RHєe"k&mvŏ-Ru-hhZ0B[,ڌT f|Uz&"/ ^v Y{$ٯG ĦwY^c-T6{-Vf1̹<}$z#N; c*Wui[ 8p9i 蜷Os͍@_\cuͅ&p˳ =/^DEdXaK睮X,YgZ"oыXo|}?3>$"͠tR)U:<&LG@bDvP }!d \cF)́qr%+`fLaw$nnV}Fjς#}\,_&1ll(/z*9ltmodam{/0GFV֠ȆTrydA+oR`Q8幀C>Ʋo[~~%;s&p^)62JdB]2=ZW`?=ӝAa8m낁$]" bF"(ܪKpdBWHVii97]9â3%u1ί.vet] uNAu4R xVhWH^Sݒ}/G^yba1hǗsjճfG.CxI`U|p.=db|hI:j9Ô$ J-%ru|A[| >A{ TsV|'l39٬)͝QLxb%Es`4.W$Gl٬;ؓW1lc·BAwYW@q=y$y/[hpE%ļXgD#CkD#`,$%Yg_kW3O|0 &唁Gm[/QTD@J`6+̗CxjX{k8KL2q|Yuj._/n*dO"Oy\ l$x7.,NM H5(qY--O~1k7?Pd7t;lp&PVuJҭM{}a &ox:J#GKQ."R4Ъ*Jy{kTeK,(-CԱu˕"x&fFZ˸ӎنiKكsCOÒIHX5 j 9{so|OXc~+l/AL,Aၔm+{O݂Q\g̕J9$DUÇ2N?i E50,IN=L1[*76:mS=q<5ZsY=*7c{ KA:^?mnr nг˱!-^KG?MH6Vk2K꘶ nZa-,bm+2IE RV5^'\?rӻe"{`:V.×Av&!K) ،ΟQ`gQ(P#@5,03<.l*Jv aGXу9+| Q1y> P0,\Ts[q[xD͞Y] vZ*KM}SEfV=6*XbϠVu޷j! e Ѡ,E4=T߆3$%,CCT ٛ1Ѱ 0Lވ4v/q 6ŊY"z)bRK&`z7:3  > ޟS8LczrR,kVT{7CQ C8f \^!M~' 6}#a?-1߅l3'f^s'T+A,=:[q-GV8_Ą~ZT:iO6T?cbZ$yۊIVw.wlH.-J:MS >?JYi ִB- XCɭ$".V=}X"nT_B47gWԀI;_m(۷_bXv.deVo>nKr$Tt;y`5Poǧl ̷ȑUXxRW_փVX!HU+7jOecGr*?湢3]|J]>˅hkXrTYCXM2yL,zFiw"&JfM$ ({QV)<ZiIǦ9:7+r{آ4=c8'3%"BB$_7Eb/6ƣ^y㢮G7F[4G_Kd<W`}ˉq.k]^IK|V|۳JĜӷxϢI R섩e+ˑM Ũ 6e+H!PDtW RjTe(c":B UsysS@,J0lj&Z'EP(װ| C &s;A䪥t^U/bD?b K5#R76–gi7@7R>y+U`"^ vΖ$u'W='66#:ڑ.LUM21w}~CF-%m=sr.`gG~|X :mc<ȗ=9wF ,Kmr _A7pJi2a ֬E`8>AH1yqBkHT%%|6B~j}bmY|eqʟ_ueYH͠\RTԛlb}4'Ue wYg#ɨ̭$l2aabe;DڰSpf%TFK' gDV:"i$1#[q~u2#wܢogXaj{݂h~~#QW{r|DMq|4p\ J?Re׆Ep遗 1KXS$zCFzK\Km\ՠ v/W9y\ϾD:]fppIBO_ZFJ _6(vJ8frBSvh tْ\U]-!2bv{=DsA_cZXIlc3-ƒc/ZU[>O:VQ YTI㠤75dA^\ _`\4x3  -ۯxHwG;]տ[ˤpwr.[.L%- ;ZYϑI.W`l% ;UI+)a2Y ư&;h-z] B[ c.yȳuDC`@mmU8P5 Nݡ QR+y;{2K"_ٿwMyly !t i8ȋ:I7B< .P͟H@JqK3`$ $ڵG*fEVv? 4̚mS¢-6/q79ū3\Gd+@D|,jc. 4%e9Ls WvQ ֯9+{F' <ƾ F1%'Vt܈MmہH]2^&g߱x7q!A$+e-_F#Q Mj>m.WKXÙ тc|ϛ X|N(|I8/]7_]Beicwj鮋]޼z#t%g ^_~6>qޤs_f@a24TSvX98l8+[,MC6WuƜwSqVMԊIb8 -`݃`(LpnтـNee ɶ[_ !R]48 q\ղC\ω O^LG5Q󳶲X/N:aΪ&Zfn-̒%:͐뢲SOT~QҦ3"3@ 繦G5"P [-?|O%0~yRzj'%:c{X0 .C~5ΈVT׫IpG5?*JJf+>Ӌ/e4+%c;y+؝G/.hmWxt_4 Ԩ$ g tyV ,6Dz|!)%F%tk͸sVv&nMHW0t1 *NN`O1-ՎM'RW!2UV/ %2dcޏurJ񒉱[RbUv1.dɑ>P (`ҕ2 }r/q[$4 kєupE1K1@ RpӬ-<.ݤq|S!Yk?5|q!yҺ $r6K^!Wvy^żYU FfqGDOQ s>' Tsp~q{$bhdz^Fm1Y m+'pMP3U,4 M& $ܩ'O6/&k8_ )Fa[u>/;.si=*;su [g6WQƌZBn]\_!Bdmub»ң}\uIJ'w'kNFw G-K 8 8"*<0 ?|c=7 0űz?x.yZWr$}8D?^nPywoOVc1jXQfiLyW]~2ꕺOHрljs6O R i$WOY: BkAܩbG4-[%?Dg.4 iVK='EZ?G߱DPc+hfOQU?R1ITk;D,o\ܾuFZ Gu5>~a۹6_iQ_އMҵZ6G 3bzGP T_d(`( j];pX~e*px"žGZmZ tMd%W~4zz\ȨexeѠo}Z?xO䅨<2n亊^M HZ7>X+~' J|W\*ۺJ(*iտ^COEfQԿȬ(3M<z$a/OK(Ln25PGMiͤqb+9͖dګ;&r"M;Ӳϖ}f|JShUL>Xbm9m( .g{ ȂWbD@ 1}V[# HAzY;ߩa( lN ڏޮ]*6k6#oyҺB uNyЛ,\4cI7$;N6S*܍Iײ*C춉Aw&:ryq& >ar:J%bdnU$.esrNjfA~>ܿT/[Y5zO~K7"p!argnC |uBשK5[`+o /.)R9Sи։YkX\!<+}kFoѡBv)G:#dՅ# I@ym b[-mF.=I/ڳ[Jχbm;l^L~La77ڔ•D$ wCecm Oa3=EJ_ͥ2AxoԫrCɇ}m`瑧 ѷW@3qx䔙֨}+M;_Jq^qZMtEGhL:\·7 TV͟A jG5PXldK者\spde'88j'ㆾ.` fGA?c$${owE| 1:3Z˦վڍ pʪ~yTrE}EGGPbƋ|CEv>2՟Znͺ e`+_ 9/RWúqCu!1.P5nf q")l<%U [ĊlVNSP7~! %zpk,cA] yzχE*sݨ8@A"Qp@2}]ܢh}:9-6;𱚘t<5㸸<\+3ǁC1?d3D_c9a3S6UsC6-TLsR[":y5dޛSvcTPz_K*{CޓQ~GHD|ejF c/vaʀ !;vC9s7Az*Y?Kh6c<-w\јkIZ`.v#Fda 0Oջu@G> 1T%_G\ڗId3-f*x+ c~dj_( ҷdAlHݹQGR@8uj[?#`oqҥu?5]u;DGwWub'j`S&z&Gx\=T͓OE;?Px1C#2J( ^]Ѽ VT2-G+qqD״hY'Mߛf1͐֯2~?o(v|f"z~hyB6>+@WZ'K衟7\$dMmk*n,,c6R%BضxyGbCyr* V "HIUR}K?-^A(XI;tIjYY!TK쑲h*Bx 5#1k.V S}`p^ w;o=PjΖ%aed)}JU @B n]kds,ۢ[ ohD';a"Fogê&(7 sS~Ohq,k'f6t̓:&[xO<[h=:HNpESZ䁢vqILXlt[=t[D2Hea3 QKxI`^Ԑv ,Ӱ o _SPW#mm5"X2pn@!ռxfIw; 4 VhЄ4yБ߆|xҊEƲp5ڬx+z ֨j1'OYՖ)*T2eZ%V7Q i4+p-e_kN7YC sCNT08$ fi R|+:XodVvҰ"?ˀaf 8)'lf.KekV"o\\qAJ!ܪc+d/ }1D ,D+V-Y<=rF`O6Kf^NGgX(CJN2 1J21 ;\6`_Eitqn ()~\]RqtQqLT$9C/meQVcpY9;A%mM@O`.ΓlM3 "Tg16#_stkX` {og88Cx, ߵW&M?3iFJZI$\[ޛv<bE=†{tYᜂW<Ӝs RD42 o:d:R:zr;s'"p>A JٞDHXx ۽P luF_Db&S͆c/7g⃉"Z*Mz^-P| |$5ø_ >52ns䏬?cl D9:Z$/G@{v8_22/sfYe[žVNT!rޢ(5v +|tr>+6ߠD(`6]uDu3*JV{"rrW0xz99Ӧ,pohwfF,>#jL]Ȥ̧k4]\!Ė;xx/kÇq ]S߼5\,njy!IVJ+:s^3+N㠚Sc};uӵJI 0oc`gb7{#1g|Dr0_/,pbƲ"T8EI{I}9='@l!%cRL1ZDd1tp";Z/."[C$M?**>c`$ݩ0T7La]7oxe@Zo:ez%"+m\0+1ߵ ]J3[))B*;FLBIkb zC-/B.a?Ʋk,}CvzWlYEː߇6@67F'l)S|/A͢^f'h|'{,#<_y.%[?륈E9r9?.\iEA"ֿT ˬ;&k9޻4_{p3*@lZIAJgP]W#|> JGN؎aE1B!KZUKn:p>os35gYP:Y-f/!h wWS)7)eANrwÌބ\u ǽ:MEtB%,o3tD]w]n| H&=!f}H[~HV9_^#+W:C*&iNw75VlNv]1cHV*qʢlEStM4c&t{߸^]-2ICXiE!-{"?KBwh(#VLyG^J̕4;_֌l`Dmۓ1%4 I"Me'uc f.WYёCŤL@+:u򁁣ϑi+`Qp< F##2e @|wͩ;3n&2?ъxL0G%qWR$0 G\vy~t![af >YLƀc(Nz<~ҳFMWgC|*Ppأ!vW5o91?] I92B-,DH >!ڥn!"W6P.X+L*H3((+"Tn`.޻I1y"_ cJтaѓva[WPƔ~B3KlKVh|r!D)́4;HL6C!TZZ)j]]]6^ۏ$]Uue|otZ"ɦONĐ7" \j)  1xD\"[~Ϥm5>˸qw3 M&<#ةzvO%R mm,[ m}G47QųVXo ,:%;&'qp01aݧN: %"5=l|:lv]JVMQ?>L-sY=]apC> uEc.ʸíh=&~iM>m$k! J6 ) R8ODqZXXYи3GJ`|9Wİވ.7Yb/i2"-F,4[±L'/ hw_*˗,";ˊ-BBH J0]α,83yNWp"QXRAX\;b.v)CJ \z<4l=QEʙh͚4}iQRکk t[C><4b-J?ˬK1k*""H`'W ZԅJlF4p#kb'i`.&6&k1ėЫG& mX[*͆IDh]G-z/oȫ^_5ԌfyC 2VV$%2uԜ/֝$M@`'髧-߶D`Emr +oO;}4Y`M*6X9{vȣ;\M)0FjL Ƃ|dq쭷Cy<;ǒƪ)IѨɮ's|!Q%`(v:޳X4v~\ЇKd~Ihj>t!SU7=w3[*v4t^_Qj3ZS1r-Nrl$WDT90mɈ+޾fBmN28 UX^2?*G61|m&۞zci:w k_7ܞ] [͉q>aC/_5xmxVJ"ёPZ]GhBp5wƦ>;g &a< hƓE}|Ϻ3R7!P@ >(Xjz eā#JFi7)^^2ǘhDJ>'LBy?k9ݿ LCuj|̞Pfܿ=q n}Xl h$PAB\I`Ayv"ʠ 6{NnpHK5^4A MU<O 5!INwNz+L{Cm&,#Dž(G##,Yo5])=d\gޠ}F}.Np,e1]5Xx>%h؛_FlhQ>1]鑳`,@tKl,>\ je@־$UDg [)[޲[]gx=ynI cZJ?M@s\r@R=놺ŽMx);5U슾ɴ+;ޗE1/=a<+\|HزFr "!#`V"U]5/GS{>Q_z#t8{@/@^wH1xIAr QŻZ>\0T HDn,Y iak|cq2?wF,;{݀uF$Lv/ 0ؕ6$дvl{+"֯g:޹*]ʡMaOAdgMMi`몡|mw0Ohzi!̒&穡 S0{FE 1%PN:Bx~kšU-a;$W/_;O $ vRB-bJ?wH`#47Oɥ*9&qPLQ!4~ ͕L=$F_L~mlW XMvԲƲˉ !/г4H~~EQ;?wLܲkS[RrF tUZ8d+|B5t2 8ʲٜf{/dޯBY~ssE j>]T !o^3c =x7-30uQzWt$ZSW9rxCSaSK onXŚi.4эAфY%/@g_ <'n J$}[T+]q(<4& 5h$;'-I. ס0>tEa?@b:W,qxƉF3||r}nUZs Mm D&pzu8LnoZuT2#}H{a6n K( teΉU[A5^8=/nĩS6*fP?Y%L#8`o|O@Ug:/h:I6LӲj/agW3^5z1ȦuFNaVL!#>7AhU.Do*.E̒|&M)@Ƒ.\@fc>+ai]T) _рV0b,#gkF] Jv+OG|TU٫2aWSϣiqØ)k#at40(v_d$I9_/{[R٭glm_D:\-jx n p)¡ Sdݰ? {CoTwl4,_x+z$gpoͼ?i+GEmѼVtU+>GAXM zs 4 -DL2UeWMWTʔn~"9M~-᫉0R<<>gMI/SعU@6~4x[ړ=|ĠQ"鑞fd ΦIgvwٮmH^\[d d!lk=DGum6^#Rt\cfB<'fV.dKV׿IZ6Xy2qcY=-Hu zGwP"٨+C]~1\~28j"WUqȟ|6x~Ljz"lcdF:ֱWK9sK7u_)x'ևg!/ nmԚ;PK@ U-r p2 ~>%މ҃zdpAExNtHՓcd+{!3`fsc˘P^vC}9h Zk?9W|]wWwG}Mfߧ PPHһV7pQ {i Ώ52˻7]0X@B7'vr}]BR!y*,Re:͟)OWO8:C % p!qɺJ5O &lGLZI<6=>wv9FH38Cs 4ED4@j#3@1vo]Z?r#I'0/:Pr2J홐嬋PQ.7xAg=Ya hf$WGv>̐<Ƃ͗rGU2զ nx͕Jձ";ͨIRu iT|+(mDNkVP+_("%qu+[0:ÇQoי'ТڵȭX6 J<վWU%\>z{ |(pOGD2*C{} NE0uce+R95Uʩ$aw{ءB9ɔ {pk= * t=`@Dmx.?Ur~nΜK辊He1EBfT[6[V*`cdߚvom̼ Yom;`:0ޢ9IhHMb!wԼ'Dx:jN(Zw7\7޲:^Y3+fw_ts:*ʹ).{*$!oyO;RZfR5>|3.scJd塣uϽ јL&> &W3ȣ[Bx],6]p;u 3>=!n/Ddc#B׬\Jrkp#`$(E9mx; ;R~Vu&GyyXȊPZ<^IFTNQN]Az'0nNp'Q ikll%)[W{񧀤Yd[Ɓ&B&ܲ,I߸Ymbo¾'cjiHXH-ͮQzNoȈRG{"885t, 'IBDtB"Fc9_KjdCrj4I=bԢp˜èp_ä׊c*yQoz.8#Ɛ,:Ir#6A@km8mZ1ؾY2i+l5\b/Eءh~% }SZub(q9u6p*ʖ#]$1(~umU yXLaKhxVKפ^ 7KFܕ1<.eh;63|`6D\O4:qchv> 7&p$?Uތ~{8?cra)w<=l//zZe=GE˥<45hCކ4R}y&bf]xR]Z ~C\#xY.\!i'eEx)G/V{2X3lk\בUm}^pSrQѬVz) $0[Gt;Ս|s.-$B`&y4F¤VIgL4<(t=4 Y8(o8oLIZ1%OQ1ˣV!.z}Prez}Z1yxhM8#>/yTq煿ˋ ?akʄx#1ځyX4j86r#|' k"Fv+ !=6UwRP Hso$;޵vZ~م=n'ZMX* .UnB2qp1E*LxGJz͓T(ߟRT?qJfbaGQCm`݅PzxF)o6@qUMIS@׷廅rqUp e=UT8)H G&5LbSfWJI)%9+Ljںo~9 TХ'ğyPs嘚[`B2 ,| TjsEР#{ AgU9,U&ަM3 WW)sGiAH-P>MU醵Hy1*eS+)۟uKɆ+-ZYu"* '$ɼkTw5,q~+XfLy#y-#'i߯r 3BgsY{m[OD"x`%<x,{QgAZn ˙EB!0{M/^^"0_O|TTdz \ݽ\*ӇEhM ~Qbk"GiPL8txtG^}ah(:R|m7抇͞;aY:Rox>e3;*+X'ulċŽq-J+kz_{JM$ʗWO}I`l6 =NAg .ENcJ)>cʙfrbp8KM# J,]^"4'3izvϷc1{09#=!{|b=I|\!DvcdHV'$Hצܘ"GP—K<ƑɎT@ HbD ghy1O7d!@t kvBUm 32g`fhNl>ŗOXS AC'4%C4*x+n%9xlaO(hfP(:ը3FQJ 7]kC]/DTm ;taɊy˵fs4q͌dw  y^-]GYNٯ8۞L/(+\x7?w* i_ 3|T:n ?_5\+ݒQ2jy$vnԿ9e:epL>ݻ!oEWnG}:׀#$ Sb9D&(] G-L VZ6b*,rJy*5*0 YZafex/inst/extdata/plots_rstanarm.rda0000644000176200001440000126661414566624256017404 0ustar liggesusers7zXZi"6!X\R])TW"nRʟ$iR]0 p(F|hϯv3uƜ: }"%_ezћEf([d~׮F6Bf,&P|?:Yt }oș{)v):dZ7[t1hfll-ȍS&dw`NAٷP%$< D5/ij|2gh0 ^guO:V ~Fpoy]Zt1=ٳJvv* t1i^Iߙ-*d̴,>1͓K*0uLCXW)OsxjϠjs .\G?y1QD7?ơbS8I6۫띺Άs_gG :6K-Q;GF/\E>0)bFiEe&.޶aϹc$.cuDžu]`}}xy`l_"Sn@>lY/}5`6y<< ziuif`9>ZVzIfjPs#_<'$Ѷ*ǖK/ ^vfs>;-rH:d!! %/ڽ ;iWgP*3n1~[0אv"jtsoJ}EIwXZy9Ԗ85Ⱥ5I* 6t>]f]=BX$4HH69+a$Hh@8`@HVy4xYdhX>EbӺ4#fG) 1&(]xP.-Tw1YOb:sh1D_'/ zPz&/uف`T‡v|q<3u)r~S@8Enr/<1pL>n2)\:ʒS0fϒ@sodW* iWr]'ϙ  8Z/aXYj+@Q,,oR>OFpcLLzX<!WbԃW T^Y4j67pNfc[M!;޸C:Lzڸ570"-f-XM̘uoL,w znŃ=VXoFi诟̊j pDB0'Mƍ$%)^$LGd( gr܊Z7 Fo`ii$sbar&5i$\ލWmUN햶t/Ot )2Aw$ fe#N꼀TJ6`pȏ3ڡ4ì #͠;h_>oqeI !N8uG9YYn 6اDP7DE"w).)XG%u&/--q2K~7hg0?ﮈivsF="W{A[|x[Z"?-gA)]YT2O'BØLrhh6Tm@%JDPTnq0 YA$.tT2휣z$({Mκ2&a]5⇍&xˑ.g[7nE?|J}eU#%wx@ռv9v {"7v:|M-W FኖeOXY'Nz r칚ZxRW;dP,a|ѩ̷no3߼@\׭ ,6ސ^iC)⥞:P- pmxRIBfJO[> YU1SK1v-@҉a C1x9yutt㷽} ʕ-ۮOz YIPr˦*zOrt UBy)v0,ކC1xYyk `MR]\Mu✦vx[*YP0Hn)ICk bD}`'zF[9"`G!<+p dAZ>ս9hVUKX0~a)Ǟ{q5m ka8PUBƏ|@,"R*3lǫU2- Ƶ(uЖTGUf\ zVΣSlD:.L*_!n߆攆Fp* Qa?B@Pц<͌`9Hb=mC| ƇqZNAi Mw|PZs|qƼu#ҹXk=j](Ҙs귫f`_Wv [c&ECOܛJjڞ [g_C; .:~ٯPxEr~]Oz۪y}@ceˮԓۢNV)Ժk$YS64K"Lv-W}K'obB? XB/4% D *zŅM6k&`p oռqDSfuE.N.ƊtȘUm\f=x1]\`sjG !_R)̀\q// wgU2/8xԟ=XlR/5NsMq2Yөl7)Z3LI o(-4fJo#;lH]NJQv-%=W] bXDdZ,ixn`2f)55+L'y֢b b )A+{ >C.*'}p79$1%憒n$58i<2m4;TFihT!=E(\}MJx-`nƯ#l9RhH_Z2aP-(P@ɟn6J/%ֲlyqo:7(`|3=z%Ezzb]D@&b+;O%aOr;4<=WX+E$({ C&QՂVJ,(K?Kl7_j`c)T%QRﷇd kN:Al*Kۯ ,ЇW%s7XI"3zI5w7'D?1uM}:s? 3-iP%u[9EWz++~2# tQEPҵ>ΕʙsXLQ|\M'?63j*=):tpbtJ"6g*{ #A5'rmB_GXGKGO@ i@1xE#EI4|vZ7?;UeS  Jg4d<ݝ~Ojd%[m=^)>i଴Y4БsM}ImJZb+{*IF3 lTMWv3PBF֫.ewլH*tbg6M >/ԜiPcĨ5 をw+hFgA, +a{ݝp;Ca(..eZK~_~ZU?AV:+wNUsCTCzv%Q/ObԓtՊpǜN!i}װ^[x WVl^шX1WHҵMai/:A0k bݪ/ʴy*|-*1;I:myV2$sgVcYAU R݄:o*+A|!g- L/D@*{;٨a7iA0UsW<-#TMԪ~-B$rᥬMӘ r 8窧h+ˠF$ܽ B㫕LW F $|]$\PCg̫9tqC kѧN(mفw(`F(SN(cԱ?#NE*VluF.Ͳ/QXi_bjjn!N g[I*5%{ര| XUsO}QJ5*WuH_f%@̓T4@oNҤ!3V'U- ~2HwJNCИ'qUf6p6ո̽/- ƾ"2~"mԽokQkٹԹx(ǀ)Ssz} Vp g蘼uu֒]I9Amw߫~$[0;XT 䌟g`W>`{.-i[C(`Hn ))1wq{h#W]W?L5~5LA1>UY׊:PئBtAä?3e&CtmF7|x?aX]e݁ &b~:Dl!uq[!3kY)H_we)&AgMLxϦᄚX7l{#x8Y춋]a6燳nYxZWv0Oc㆗Ņ'o5$z6 {5LJzP{y !a ibg>{wz|,>IIP]ߞ0Y+D/*zf [-}˳|fƘ\ƴ900EQJΞ#cY)VF=|[9 S2q"FuҠ [@?\l5vS/d&/ j@_ f[ e ȭ w=6";T@iX<׫ĜQ99y2R-7NB4d1^VM0Ark)}5&V*x'BvLOj\S.w7HEk4>P^ f1*Uɣhp`jhaן@/؍Bl٩Lh3^X.S*ǍyJseЙUkw͂wk>fNrµz6Tװ- 1+nD wغj+q&&QT٭FGPȢ5e7nJH' ȟ|EJq?Zw[I yۭw֣EL7F.+9kWd>.0?X(+R1+I!Jd­ qKu>A?{&^l~w4|/RlAp,2|zWb4~k>QoHHf\pwD_i$d& *owc~'1fD* ֏צFKa\ a@7EţM'm!(ˌyOT] h\>׏3ځ{$MiAFfQ`Ah14EJ@R_?a-~&W 4|dw f0]7uڛ'΍!`+!³ T0ёy@B%{A[1g*k .tظP|, ;ۏ~یD4`(JX < [ƾ7M0/``䷦7ɢpp"8==&P"-Rû:,gr3f[Zw8v)a?!..y75oji%qyA ~nYG߼k?X 8IhDexTkI;[`HLj&T%^$GLIZRTBl]+#"[~q6b8ű]o6\aqY߾4tYT,[Al"2ww7Wwyh} IEoPKq@V!W[C7M#HXik2ǁ"+Q7kEAS 3y7)' E^jt[<ω.G+ inbNM)[nАʢџvZZ٥! 1NX(xZ}`1<ˊ_3[[M"P pɓi:KQHjwq-& 'zeM+h&' rOX3]h@G7 FmS{kt&66I-NyԻآeR*X:ih˻;Xu='_=yNQ\}^LHKz1pNd{y+0pf :ivl*;P84P(5L! D$jBT {t:{t댰r" >(& DdrAЈ_ExNW8/ e'#v%8ܯ>U.0>!woQui(e O8"\Ĝt87@@.tW6ݩ)Gtu>~*isZqNyNJnrmv8yggy.l6ɯ%]Ө O;6MÞ,ptv(6';ڄh#^";8N%\]d9ۂg i3xmm=/j"IK37C&@4שG}@!Ձ~'m3u@}yq0%g#:cn*͋tA׫0 8rFA/6"W]M񠵗v/MFÜ6{wrph_54TR94ť˖esY|F# JD8Gi\V1l,f0STniEsswP:X74^hV-8/CSk'[9X)7L&8S*9|h9izUV>'WJQy%pdD*3 +?&\su,sG],xۏpn CU"/lNeG}[p U[ ˹1+,~y$ō-Ήm20\-%\/d" xYVSDDrs-f!J\Ȅ/}S6FhR?Q2'劍}T1 t`S=!7bPFNhƎYb.pvXvJT#'U wV%Q#i2onսBڨQcf0_ZPCnΖOP0c9}4ٶ@,-eM)P0nz<܆kpTVY[GȒT5t止:dMK6mj[@BҏP=+ +j˞;+O=HnG$<BE.cf)_uKTCxE7oH ,U?eX4zi/t6ۮ:v GRkImSY"N[M6tktetF)gmM0QjppxuK DA~=f3@f`׿6ܧ6z7cY4P3?]!'"$D טwAR\^+1T GH0nX o8Ha7p?wakЛmUVЗW G98xdÙc_HSyzC$@HB^5cd&|z\6DyDxc!wGq,v]ւ9 {pQ "D})`^UDaR1 8{hYA7kCI I{ _QoqYhU˔g-y]Jm޹?ћIe%O /ikp_P,m]0^D.%mD w^Ҏ0ܢQ*ؕP)@n:*-.ȪA$֒ 6%gdM8< Dg)Eokb[យ93NEGeΥsZ9/Lot\65bqN֎Tݷ>u{\w+0iV,+,nJ"]熋w^\?Bo2z`Rod 7%2xTGп1]D k-o !I^P5ۄ׌w;3=J <8k3̾30Aq _%7o{/l'L{mb2 _4\Un'Ȱ,HSߔSaWN" -=yB8@,)tm`G&*h6=Fv [ ;[W[y _g+ 杜Dž 1 8I̠yv2on.ǿkqKaIAEsY|UfTvCk m7\[&x׋B,&fr1Gd+"?;i,&tP[pfcˢ xY9Ž}Mǯo ui]p;>HD].~s|krKF.=GPD&mlmT,Oכ6Bf~N4+4!)(o/O2Qt˙q\!5u7u6B<9Tv] #v&#T~/%SW;PdD}օ@?zDh ֯y4TSZRɱTI9ԇ~8գ_P!szH˭و odQ'L.}Nm&Y )}I^+;U3Os͓LJZ[s98PhJleRn-,gRI ,y گgc<)6ۼ!RGtj-)Mgm{KE$}f<2FΏJHzњ9M$GsA10{nԇ$z $dgNuQI7h,#س5L7ڼQUCDž2Kax#.b j2}ayjJʤN[AoO@dy_Z!OX8uo4; JJfr/PdiMg|߿>+̬ 1rXwRv*TR~Hsg@'ǑA~<0NgIm: 6qfo9FTg`5:Mrw3L~Tu/G}RqӀiwjFQY̓ t mlbsdz "7v*o]gg&dA2˛ƨV gd#p9=wᆿ#3sjI- VQN\rC/HTa_?oCXՔ4ZQ2kӥa?cJm4@ē|Δw*hdȆEw) 싢Q>ZGq^I91{z0/t[,6BoA[Cdi$otlCb6ZuH×RJb1L@-wEޕVz`C|֞pk Oó8v]\nq2Mnԛ)iߛ1k߀oAEp :gJM^ VTOy#Y4X-z eb/OߑLζ`z &/JaAx<>'+6z]E!pp ÖDYzHM-_NGx܈!uDmMmciIysKn߹fs= z|cV{mVx8gx?"Qq%ˠ/pqh|4VޱÙBlreIWqR\rM25V{ixN5E߶q8¬~%H.T Pn;P`Om7d"V%/hm#\yˎu5f_"ŧˡ+V: Qǫ̞<*oc$o~pa^njF;2_Eq 0җmM ~}DH(L+'^}_c_qe<IIwoyYA W$#Ym>ƙӤ=Y4ʇMfg޳TCHh Iʿ395i&Z%aӁ"t$Q=$/*,na/H۩6vM L޺3Ev }2!3:9h<9WO`k>"mn3_x| ZW0;H1 qg {Vp&) p"L5żTN=byuQ}&۩X宯"&Q) m;I^أ[2렿jlْ2Z v&:}eŹ7}Bklcw?gvcEmpN4);mUb[߂uV dAā{/G(WtH:t6tըDuK Eڬ`U~TlOUm'w>6tV9E3\'\xWLuL8ܡ[[]𳼦%_}AlhKcU? f;%tjji,DAK%{"iĥNqBbs3HUGmo2J2g.%Yj)!P P`,paB-RK! 0&}7 ϷZEw(w_nz "z,#a:\UNM?WٜmO_Vk}YDL cs/Qb&OWa!N߱cmޱ|C@J G~A(,F 0%mwl~R>5r=cI- ^;G --#yvweD^>WeyyU}ɒ`|n vB2] ݳ7|E!~%;Ɣ4B$,5\?6z`3E8Z Rئ,X#a@<4O4}"l/y9#vL`D;c:%,7Y gV|ϡ@C\z~ѵY;}tjXe,bLj%,%H&̀V;$ U;ϋ]DpQ5)1 聯1V/˖[o34A[Hcw.xTOզZdd"Zۗ#O&T] '*3R5^}i{;r4h}q3zpح )g6BU&)\> l`$@C'*zkjs;e;@O^ڵUp8IRơɓ5fVsQq 52s+ý0 b `Æ 4i&jqΜn6' OEV݅d>M___ցVw8v} s- Uj(R3|QډPE.Oz>Q%Hp]NiEޘ2`Ղ{𝹑ΞZˆH$<>G0Bji>5i4AV:,Y޹"ŧ*oQ^"9b iBdړ9@SE3l tQхZ=YG]43\9]g؏S킞;^M:*qDa'1Q͟[t&ί B9UMINVd*P$dBuSJ\hz7賃h ^ B? @(ɠ*R_ ӳj$FĚ3[El, \>ChGHD͝!T#ϧ4Tg@ZR=FaqѼ̙6w SJc ^ eVߖFO)_ϷfO8/?QGY\a(8LPctiuɱ{jv}+?3>(﵁|(Y6Ʊ-%%-""Z^gոy}SV}ae[D(m`Y^P a:j #f#&S{͟B-&Ί`GQ<=Pհ*CfLj`6kpyc- )EV6"DGTa}k5yԄǤw2v@y#deaNfŗ<.x|k5R\-2ܛsmMj_4jVuиf~\DF pg5 ̵`*$MΈy‚/)9AMڇG5Ñ3#MxNp<0~]4pKm"9N') lmjNyjld(ћMTV_Q4 _I|{˱49 ڕ@( E^.O[f˒Ƽ3@|С*0FH,Df@͘ BwcUوIcX.`ɒ+v:e–!xX+WSz\zϪ7m$ /V }"C@E;ض&0>C1pxCUa-睐{ }L^LdGt+V}h6ϥI&,>.l0*&P3`S Ƥ20:VV# ػY[i' `cg2/`u%!ţpxD%LЊ] ØO*TOWsv%P &|7sҋQCJMm PM!.UK1*\\kW{Q<0lg$VB.^$PJZJPC|/](_, va,s7Y f,wqZHl9QF`z55$KKG'ކe_$)j+6~i}b/[+YgT2$O59``$|!R-WQe"!6>8Iƭv3Xmn|RwFzitZ #[a,}qnH;uC[yW {T9Ep U')|.+~`}X !GXǝ+m{˹+c9Rk^y5*8א *x8@_p[$t|^ 0}5`1ӡ"nOpMf,ks9\zɹ80DHo|8[ JZB%=x]HLWF~t?GdK}]v*6ܣ7)LIɽYv";H.* {óµ0m^pћwYivK~G}7c}5+p[9m,& dyÿGA2^2mVY!,z؞v_ ޡԸM~*Q^ j; IK忐 t00FN,up w,>k6L)8?foA m^gz&ΧzZ "x4YARgR&Q*(qXik>H:"y]خgg9s͈_ySqn) ??T&9}ӑ1GIxF)> u`t/ +k8ʣ' _Gfi{$_Fo o/c0/;GGD7KR/7OX MPu熊J;U6њ&V(5>e6TLWgyB;8EINCFYѿ=&X Jh4kzw˲+R3'w_ t:^{LlBjx)QH;ԞoJB}cyhZ?Y?ʳm"̇[#c'G n&6)Z8Rglߕqkh6 FRHFlg~&';dOgPƎ$PFCoVƦ#PbeM ˆ/)М/W%1dOqtR['-_!W H@@ fby!{;ad9.( :ea+U-lc JGSiYWU<HaTR]nW$@Һ7 /.-\ ڏo*X Hsmu|g2hk)zLm3U91_QEzϦdF=A6 S`x 2p@',s- OW"ғH{L)Dr=FJHDX’^hB " ΄WU/"c^_.GS撐b )j",o/ĮqJE:#JU,‚zap/%BǙ雌 s* )ޚXOtjRV0y&}h'[]uɂd1J\8sĄmpHGl 6HJOj{MK^m(vWnYR3օg\cBXņqKB*rƛ,H۬T;^ F1!O׿AR.[+H7Y>x؝oh mX'kZxFR7OrN&cXqf⬴4nnض.KB 4\!SrZ@[ aXp x co ]yr*֌*,*]ݫ,EE)j)1^(>ؗA_!>3FU0} w}ƬR#4hɐ ޲e6P&x^l 4}[_D4Dwl(CeE%}4@՟2cd7>j Cћ~|zqDb/hmH4M] 9wt +EUѬC[4wGKYqW= Cu9oF>X @ v_ ; ,gݕjWjog<~ux'>q0izg/1.wz֤ɯ~WaWCnY1"œe&^Ѝ;֪Yt,e)I N.HϓvdXi(_>n0J*%߾qgv_pb;F*K(Nd Pȷ}y7QOsٞ9kɈp)̢eiS8!Á{ grDq~ Wwޠco"iOpn#nw-1 kv`-JqM&BDȂ]{:oUzMDkBՈ*>[ 7_|&X<.cu>3ޏidpܞ4/+D58Þ?1p^Hq sl2ϪǗm! _?)LݒLkz%½yPmb(^'sCN1Oc4zZ = 9w0 bƊB1\])&>%T8wuE[e _7k7Fϥ,^}ncn(?D=Fʶtln92 wv&s[-7P:HOmu9N6Z):eouy "%j湉mK/4*C˘?"~9PIpi^$ UGԝ\u%pqmo`t\) l*<xQD=_εNAJ6 Wl0z KZF6a5?.U;PAcɌfCA 2ش:J*+'~pG 4[v9⢁R"R |'Ta+!Ll[H݅iMt=R (֚f5m`7ڧr/1[YOk3Uksyjrd:cm9#VIA,S߸ QB&+_:Ep[(76T{TpQuk3;mrj'Q+'c﫲`@\[U<} 2D%zb%?Dt bvyd{oD Eu,ۚ›%Qc}^<`L |@j˿eә<%VmH3FY)Iݭ "Y."ɤM[@nO^U}[oկCWE $J,{ύʉjP((Đ0bDrJ_9,W$TY\GnۀGXPG%6<2C9Ћ5PF,\?x^t05*ŶZVQ`@{\ѫ7TF(JlB&*b`S{ pE}Cs 0m~(~ÓYe3(Df'QT)~뫏zb,$"a7u|A!gKqӸA50>f$;y֕3'j.t–C+1z)O_Y!іr .ѼG@ 叟œ~ ]/0Ƣ"R֡ϱu'F}B8dma Dky{6peKrTv2"'gGӱ|H.ӎ,a<6ȊmK軼FhpSQ+I\6wW 3Oֈga-@dߏmUlz$*Lr:>KM9 {WD2ͻ! .Gb%doHB2oxNJ2vه[mX:e71YȊl|9|g# fɏpم<Ӷ³- :@~8 0quqD)6 w@-#++~[#ZpM×?_r$J`9ъ<%6]z ן=2$ĖԨs+u]Z^% Sɛ!Nަ&e^ 6K̏wռ˲ cq}qvNe%@ǭtPdXґy+jm1;Ӻ$%5++Imw}3@ ]!zhl3D{Y^b!' _c̛+``)[7Ƨ,&qzFp˱_(C/5IC}SF3m"tςU`n⟢ރĦkOkVY|:^Xgj*th_uq^Q" Pyʼ՟@S5iӟ`[׽ HG[ 9J8)V=54QeDH_r'J$bOktna0mG )AR6n; H+ҰSZԞM)ovŰM^^sT\cB_!DcbP -#$.$JB+.ϔ QYyL-d>Zu>_鷁yg2f'M.E% (m,eP96}k oZSWÇ\;SӺ@{yٌHr6ֺBf> 8fe*Fu)[ K)o[,dk;|{ñbS盒`NuOE'gų E^Vyz$\%CJGjwx|-p1>oxkG=x{V #Qͥ!vI<Ƃaqzlp_ V=?i Զ|mvB KwO,:0H[փi!_Tn:Y2K vL wYs+rj9^~/_ME+ օc\|2甉bmi4[6ǿ쐸q R o S֖_ԍOU;9Q!d=tR+sBdS5y1J ;tKLvEfK|NT R_+.((~RuYP"T{}\}]?e5~=?<WjN`:Єj?;Ԕx\'tT2i哃F pKOe;M ?^#JFwR]ax ,ҨB\|εY@hn:랞͘.)$$/GЯTwۘyL!W ש\>]4 5 wgcmG~R@< @ݛSuB:-3Kd,3;*Uh/;CZLREszQ/-vod*׈! p<{LA}XK$vPNfݻMQ^)n= 4mbAiW(ݗL<0(}xY0AzD%?.DOL\=hn;gVWmq@:u"y  3hDB]!Yfgoπ\p`]pgݝaD]Fw5 kK_*L`fg|YƛzINKCpҠghR5nb Y^ e z6{Xc= +nC=1ہJXBzQN}s8/~pn$h )k` d5ʪXW38Pg't `/\f#XU?]^1 ;w \gQTD ]옇>׫WE/6:fUdAR#=*sR)اis+' `9 4DӑRQ/#dg31a7/Z4kuBaXZǏp.%(qRaQ,q;8jQS[M;H` -6N-;MY9s“x#ʽ@,؄"-s?T l?$z٢jƗf8{wuu  "\"}I?5=!_,ML=)EO:W"þOR!b0>3Jj1s']CM"͗[]*=?Ƀ!lKdЃdmy!kA%>vny⿸>KU2C?IO\]~RQ )ʎV}9*_}ҁaa߯Coh"3ꦴ6H{Φ ^#ѝZ|-M# %*-f+ރOh 7Cbn(+ EXc&Mݘ~ؽL5+U_`o_lrQA0ogp8b:M)PX vQch2~]].MqM_)l! 9RƗ&Eޢ ,jJ7JalKmn[Ip>#$vqP9N*EְB3ikgąY _n(Nsz+e!YM^#^J|'b-K!ܚ=dMهT⎘.gThVN-vwb6Z,%rg\SM` ۞?bA޼Y*$wW Ǐ^ b_|UC#dq>8SKF1,\O{B>^{ &} {BUWȹ2)#O q_P?)t՟57 `5`!>YȃK 2\xj^# .$ÛifIUe{G˧lCmWYOJB Mej_zu1+$2(d؆m].E%oڧaH0~Vm @Kx>P`=VDn+m mRmCҰ!>F1|s^\ S(ίkg˘, xA7^0W\X:ȋ7 mib9*˻ʲLHFbLHu<] 3үa;ZWࡔ FE_ 6~Y[8{,xYުڮnڄ/{$MeK' lO>7tYces=x|Zqb@iqn"ZHvfWV }pH!ퟒ(wT)yr9b]q{n9,x#Z>g)fV*Oc!%a@K*`/Se &wmYz &JtՄ)¯@ݰw+w2֗`[5 w3XA,*7^ #06& l;ټWpWڒ˂Ӛ6RܠZec;4Ud\(7ITR6a{xQ` >v4E 4/PGUM8ҜJɩ4EWKTql+TNf0Y̜ɁX&$U7׮F7:A(q Sː5>BYh.XhΠw7t(5n^)XZU>j!O30bO7?cGT[XrU]K$>m:y/~\)O`s1Uτ9{5ӽUj9i_>/ _?&ClGf,#b,nܰf沔L`fqqm]@C 2! @

~^r1kŸ6|v#q7O.|Aa)e^hi@~̐;{h]DinqZ q2`18{T%\ 7UCHkS,[&xRI?*#^?&-5[`=h.:e@tgƠC!wS0saK.&F[/̢ ֝Z@+S*Oy o&HSY}i,I G|!$AYc|3IJߒ6#Ic]tJ. sAJ}⢣;",)nC{al~ґ*s<8g j)i@ENiPghXF,rCμ3ޞZ^ /AΎ:}0 XL+XtEBp2%9llbAXO%D4VT.fB9|x4YnG$~^h)*w3mDFgzf"Jz?}Jވ@* :Eنp=U<@?7iu08{pѻ5|f:*eCTˌ2z6O$BIrRo]n&#`%"2\gnǼqS$ŶVI͵Y:[ܱ===nߓ\cn6_dW ]UvlT$h͔񃃝ԿX} jXv|Pc2@Oy*iB14.7ˌ uF*g/V9y{1smm^{IjAĢ}1fz:C4*4Mj}fG3zq^NG8RU`x\az.VPJwjp[%S)8Xm9NH`\8/^fנ2qM2Ũ洽oPO .q!/ؓ̈́F/\-y=WgFY3cxU)+F00^t臨7l fFwRYʗPPl umcq#b nD5@X;5 nĆV.x0٦o(`x10U)29E߆ <@4Ch/AbBbt'7ki/In3@h3T֦2}.[Ls/QXm\^x{Yd4`ҪtFp=D9k_j5w0DgcTp!+ 6clcb:ݲ,X㯷P}O2!`gL\)ize6Mt0%_N}Ov,)g;HpXXkq5E^!{e@p6nh@ʺ frdkjy!MU[ h l$w1ټ6lrR\<>*هz,^By띑kh|7'7o1oALZU}LoDVKPuA~4Yrtt5@&>2U,+?I9-N.Xv8X Ox=~R?'tKC2v2yސxlXD[(!ԹqùA(_ ?,V?0\ ܡ`v;u,4 $WjBr`a]*rӇs<t?LhqC's4g,ED{M.י#+WL\ܖu`˿?5mں6uK:kw)$Hh"1U%fhPԀ6y3|Ӆv.t?@rj@_ܾOED6*AJ"uSœ qT3N_;]t;@rtرa|Ru>b{sN4L07^arŭvBv*d*^t~`n@#- /IR*dgюDSp|ѐ7X @FiypeIo(Jl[֜_jQIy Xy4&%.ɲfi=|y&~NxiGǎ;BTF9[\\}Ŧ'zl5zq3dol9l98s`ZEWG &ci@qi:V٬ >6kI0oA]O>e+ ~' @&bkK;-f#C-FYꏯRKtu,\FAgkCky)D:I|`ƞ0D"~ZG\(wXV4Z'.k2KqFv+t0_4CIt4+l7u#61Q_5Wo Xb2HVMVz1N~*J6ih N8u)؏ Lc bQ(yv2Ťui&'d5K737v:C0TU+ЁS9l=rlжȣ ۙ3Hr3PV= +r@HS1F.D&=Kd{J*(Gڈu? *6.h.7gt$ĦG"stoƉM]&-b¢|nBW84rU`GQ"WJX7-+@SR.cC P6#}Է6˃p0` ?cAN =mBU}}imYj;KC02.9By_ x#Ny'AٴJLdFB0y9X@%I2"k|WxyC(c-ȶ1&5: I,y~_S@Wo>KUe:d^2cS^ܱYy 1o) v۳0aT e],A#ao"A/.S~Gotu C,bg=-ׄ-{HMy3|271Tn;CB$=*.JG.vUg!&Ͻ3~= 8UC{zݞL?dr0\UB@jګs7YwqYg5:ky,FJh1궄":R@ NP4ZoS!:!=[ o?!PY]OF7 eȆUx]~D=r3mj먿&i!]!,*3LyimQbpc,C(} QBTwo99JKp.{n<),wLķB̷|@! .^99N5gȋ~N1izXصUް d'7Nq04ƒ혪)|뺸CxXH߬GSpxI95bt2kh@60X!펐4@]3{_r$f. D귕,#=3|VxRu/FPnԮuUљԍ[D,;*#}N=3d84@,'߷AsnK(;XP/tz$)< SIQ 1PL4nebM%_͑ n%Dڑ=co0?F::ܚLu/@sw?Ec|;sCgё׵6ғZs֊#7F50h(Ԣ.3"mur|GMۅ㈢nj.1Bnܛ 5N kD5ܨ O!>`tG|'lmo|x4l cyPU4?o= EE}32=>G3W{]%[[ 3:Wc3*޿Ima(vC}*ҋl;]ͽDvN(xfA7f1pT"uє d$oȕo{ g"Nө,Cl  Ҿ3Ws<.ѯ7sSG4"ւR$ ~@b7K!:,}~S02NiB^? ijYݓhQ<侉'Wa0thEpcCK뵈$觌^,xsRŶ8D PCI=ҹ؞zE{,s"翜Auu%yQw3h7̀ 0zTŚ&+7+FJ3i~=Ul{/% 8iv`z7pjp(3Vk ~)xCӈQar:lGWBJ>2HK VNI2k)iXevxêUiڇ߅Krr]wokPn48JKˡ7wq͔7~G7s*LFe\J#eBQ*NՑ_B=vwl*w2 ?suZK:4=5, wfVQ(b8f%zHp3N6ܺWf5 isPh0g JjK`9QҠX\U5vvِ%X|F"^ /ncX7&Y9"&^2l=S2mirA{SMSl% U]|3%lǵ{j4&ckB--)} 8Ou( DE{uAM5`qFO偍# duh2rܬ᜛)}V"0Dj?ju.XIY4"ݡK]:c\PEaQk`~(Yd6d( -QHۦw $ ˫(j`2"1<ԫp Z|];G2by}hRsbEuӸK; +(<+|(@*t?ܶ?/z0$lkSˁyFfi蝣sTk IJdO}804ک ԏ$urjG-%:_r' 0ͺAy_xM$,z R r}(ʩ[&0&ݝ} 7nC  C E{fbv>ٗ #M,TQ8'`ZҚ WDm1\-F651h`ǹ_.Tyo9dGdn>Zwi'A  alGn>آ mn]C~J}sUccp\i@ž!/2N5唐ki0y6;fQ {%huŀ:ҋgD#.ÀVVUiGT9wUvԚ N@e]sɵsZHE dstHu]~]33oEz=nԄ vIIScI(|YZwMߏ 8B.Tjrs_kU423ݴJxKsF}S^[a؁Z)Ɗz ˕r1 ^ NQG~ Nfa(ɢ0Vfa%(0644T@#> V `,"Ԓ@sD~)G˙mMjl.Z_?"5lu9X>VD*ضf3MxXőhe7JX]2E մ1-wֿfg;f. 曉LFktK4 4UڟLk!K.]yF#_CPz-IAku]tŬ6)5^枵miITTƧ`&&ay .t35b ǥRa=ɹ0w'>? ۼ$ gf_yuun-$uRG5-iW;41mh%ez 4-,a 3@GE}[ߺ2_ mlҗxQV=KBfQcٷ3D_"/{%0(8 `$z"ԃWbuA9{eSis+y $!!(RbSƔ.Sy"^UrhxJ1@R`'^|vWK h!˂+EJ- Wy9O1vbeRm8|>€W7VֈotmWW[,."q SB rbϤɢ 3zH߷)Buڸ!R^P2HW>y9ÌޮMX˶TA ւ#y}mcx=IA7 *8,*6ǣ21f6A*;>̀cWry~K$F1y1gV !B$ }o}*hn {|| { ;p158tIwkMr HzO+/Nedޱ[}ۯN_u&\ycCyUsmy78a8/i!({8qtc`m <ʭ}YUŨL+ByuMj 泐Rs,jWX`Qn(QxVު|QiozR*?͑yD~#}h3aFC,x^If_Ȼ%8>,_2pE[zAg+8+؊1ͻ ؗuZRb!ce +e 9t>ȴaMi5՗=pӛL9jZu3Y.N*<9A]0 ?FTP/4u:XZ.DX%͒GħmO!ʘk$䨍YX'Mm#=UGz" _GyI~!݊9Ɵy-B=E0m?[5tH OOoG{;u֍d.pqf^k:IgL7'ldjd J3m{֨a K,2.:+Ci GHڴ,2㹏]$^}4PGxN.xDoQv$pϥ}.9CCVXOI$qJ0Txdhvn{h4lʍt\ =L3*fxN `aauᢺ ϚS3U/s9]ґpmpND;_U&gS]{6Hl@b6z9GݳPR0Lbg~=Hm&FyL<19\_ &xJTKGv}gƌReN=-p!eL[f{?T7 *̇% w49i6k>b>'>_\8YqFB/xj{;vÞQvLOGG<2# ]GAzk`Wwf^6p~񵋽LZ1\(*#z=ʼnbHXiE㋎c& tP#2K0`!%@c PNY [Z F3࠯bb-E @t Ka/s"= W\>ݍ 5(mIQHӑ <Ɂ=D*};)9{xb=)O6j1=2^T/G)_ S$<3ProQNj-6rRBaLہsMQ@&Bb^Hj3<j,QF jVosյx+`d)?V=xI-X2Wْa"*tޔ= <˝`"w~3X,0h~F 5ڭL0 Xq}|3O<'=bѵ_o^PހONn,?9e~-U )JGF Б8H6L9_tw]AJdJj}&Sv\<-f7dcx+SKYnB!vX`+v)쾧 (m<'q/8ul&}fۋE k}FG`SL(\hSPs6L\O^ms >IPx@  n<| ?Q /%b M˼<3?a д HȒ1/ RaOuA mFhm {: 0y-& t 1i.d!@=J_G|?-WQv  M~+0 FQ]5HYi "#tz1a h%4#FJ2c UͺŶ\{bO)$'?d|6c$aM(<Lr88\PM]XݨAg4&Hh8δcϴ.!JZkuy!?FUC#3ɹ]pm|<*G=dӠ[ mYL9v]!,oQ|K$^,D~ItWS?B+~՘:25C\]G|NjKQv@X݂LնMkN|70FXf ԘѴzmi:/}\-FS;E;&=Ŝa)s5\b Af#E*_MR'<ՈwCp2Po=W7C-\WŽ„L^Oar6C0d+,QoC5elE kCsgğFy:1K jI \{ qUҭr>{ܾf^|iX_8旬/5!c9m/Y{յMZw-3W:pi(qx6nrȢw|Ƚ<$MН 9g< .c:[UޖcpCJpU4q;Z]cK͕͟Ӎ#HXQ[$݈231W䪶ռ'sc4OҌ\8" #^,ޮ,1)/޲\|~uD 3i+idTX%QBuMb;0;^;TJYu)G?eCo.xkay6l+:}[ \-z_2bjX8m# ڇB71Wu 0w^9?z¿;81.9ww2*ԊzK&C#V4Aq;$+ם!C/k>RiEC)׏,Ci7O!1e k8 nҨ+mx6XupQZH}w菲sWIlnM&YR͵5>a礱foCM3ΝfҴ1蓶'XC[lɏ~4=KON_g.gq:Y!Ek$߇"#dg]Ud1=tҙ tf‡>p$/nE,*00S ;SP>IiΉUfN:潀uoͱ cW5 BY_# ^/\-#-H{K3\q^ٷ.":>6ED-욺Q"saJF?fo+Osd̻k.$@b$#ҰdO |TClF]N:Տj SqDVx -#ԪX{WV!I{z)h6{޿27Avp]2˔S8,}C #( `R{AtZ-Ux0+% qiIb:'r EÆXc>k1)ൌ\XV:Zoy\|>Dc0W`X5y^}U=^"m?ITVKA蕄I}5t_mJ߼> ,\s>п sb$]7"A$p (:{jˠ;)Q5߈Em6s86يja͌ :R"Z -å+hƾ^_e?57d~;@-Km4W1ˌ Y!У-xeh~5HA3ą $.,߉t$j ic~v=nJcsii!5ɾ)(bd%ac,HOިisܥfTsĞzxz|.xntO1"G .rgTڜBfD5:[def+pIеT,_ Ϡ.H?PUҹ%=lcLD.sD>:p,Pj7?B %2vR@U:(&og}Ϗ䜋J5YoA:<ҕEI733рOG/A2eaak_F*}V5hKK/ۚbcbH{_05vM~Y>-?`:j@6djFHk|/aiBIujy#E2:b#؆"jU U@5$;F:v\Lx 2ו*;oxm^dqXCw-S5aϥGT[6(ۀ\]Io:;[=L`gXk%e]#K];`@+R3~boy&2g 'zwS?BSF#/]קZLGoۂ6eZE]^^4ssMF'K#`E\,v܃)]Zr@l|0>f aGRs mhL+zh!&œ PC! vFV5%_U_FwvGWn&x'E6bUjAmlf?ɘ.W>JI0O.@43LV\8Iq| k2/e/tl4CDC:57oP `isܖ?9lM6\ c6V!6`jlV#O#*xJv#!}vNZX&d Q\a48 EZ%hOez؅)jJ4U+}[>BHX"JEZz %`zfjVi65n?&Ʋ/\آ0,;y~#nvknǍ}kZTJ uXf\M+1qcL.9 a Q8a}íuw'h)S 0JþڌdZYeCBk<7#=AiBi ^>\[3 Tu_/)<51v?\h7L-IOTvB`7S@⃃p c =A*+Kp/cKW1 :tIWŠ30v̧HDgMOyT -91^W?SE]`L2H vG;^{z[5QQvX/3'J["#;:1Kkޏ2h~c'&Fx|뿴sLUZOd#'e<6ja֗<'եT^;n9-ހM!R?Pf8ǁQ4%<ۑ<a"B+vĬ}i݈Y^0q `34+(`ABD,')gxLMؗtSm=\Ҟ.d8cf12y 7EgZ!" |):p7IZ|s:Mou䜆. YLh9++sYNPUx4u4i8L[oK(#0#ӻ"1)yhyH 5~'}EK?GWµ\$<֨Y.s7-SX] YKU61Uxy&{;8)D(>:\kˡ@rz> W췀ӧA1 ub'J ĪрKRAU[0phqf/PCjiSlj["LW.36Ui#F<PFA7b;;qgKD?QR#>K1(+w]o&%qVMj?d$5U2@ +Ejx-%0!5,oC8-y71&rR0dH<'a6.v~@ CS}D$JF_n!KGy g姈a>cdeUgj=8D<`d.7(YءK;Pڳ`W7FaXܿMi5+T2xDaZ 5̲jO nhpSJha;0LL Vv&vCo myv[QNv-Hp/(?l7Eʡ^Dl܌5;6*a4bt'K6T(Hx Wl=uC^)hHX^HOqJEtDl'GoLAd+ҍȲcx8HK a< ֖Ԋ?Tg2sPw'Ti_WϝoUq껄!}Tiy)"[NRt?j@ ]fYc+JǕQoD!;^zA2UX]1믳Xkb9M)l&LA_^&1]Qvscl,.̈́2҃!`#H+⒩5ciF\(*+uI=+?fM}-<4_\!DRG B#fUF\ɒ7EnDjΫt›\j`C_ZaM__#QVywwV_AЁ]`mDuKDźQ_-JP̀_ M8,4h3IKbկV.&ꝾBU!~;haH(Z*ǥx$<2HȐMfZV]R"R S.N1rw]t(?c4w4>-`Bl`ח( 4xKSv@ D'oyY PZњLLtix:Q`!we\/ERVg@c﷙^XR&lCkIZSk4`8H}/tj`Bڊv< ΰk* ځ.W~‚WcU]x¡3cΘ)N͊,]̎}C+J,r ibF \U wٟjLy,Ծ7De{ϫ ɝLd˾QJ^>u2iypjG >2jjgk.12g0E&%Y߁^m{]Ā٩dJ:yman$#p9qsb2[,}v#W'NIe#G>:SL^ %pbQMhyj;Hϡlr{XAM} BIx'H2ȱj3֣c2 c%~Θ*0@\U3űK*;UGY߻ȧ\aIIc%!8?Jۚudnz+ݜ*6Yd/9f_x!Y*gاD@9E֍1 @Sǖ P_|>Jk {껿&R D[ ^l_⴫Ӿ fFH9AxHCoԱERg8Тg {Boal!4٩9mŊtج 18?*Qd o e:&KK]YݯyŎ ­;&i''DG3Zg s@_xfI(qdaϟ+Nz}Peњ/saZ{P}Z ,]ErQw6zsl>I(L{ر*VzgOG$ȗDK$Nt .G^N+P%:xc\Tlf) ߈XD%(E؄]QV?)ʫYv mRp @*,`EXwO8{J+`cIİ}> wW߼-J۬/.̰Oα!R`Gk裵_7}) ۳msX}0b 4qLC Nks>T4NtfڭIkic+䖚?7wiz@ :!ӆICaxh_x$ y٥-)Ԍܱ 'Xhm+@-PyC``ܔȚ9Szv\ k+CK\pzY,L 鷓M!WEI/]^5*m( o:!YvZK(gXY:Зob^{5/a"IiRZzi/-A@]$Wju;ѻ2J_^=G6,^,I{dzQ\ < Gst/"#|G!W}%uU;{:S<caU? G yD"VsqLB鮨\sN=*ӡ݁J朙3Ve3enO*R$\ECqX~oND@dwX'X@EhW -9딞dn XU&b}Jl Iv6>c۔^LpL-|NxnHZ|:_7FӰ7)`17#vQ\3F:&'⏫Ч0"0R"P>=1\ V@m,Ȣ8:5ZҞ67͗JPubrQmñoiUlB:ڻFntO\|g ,`[HF2t[c*3Xc 1WF'ҽ(gx'?@p)d7В"G_ci姸,>f%Jn2IcsA¶ dxVwTZ*mTˈ2vKZ{w[ܳ/-#z}fJѣE8}PG0>hLG?JŚnYHԈ?b.N;n(ZH {FVNS#a/iu9 hdz2k̖7a-pAh`40VՈ߲WvE[}r.!Wൟ'];F w0vR#N<,5X@OW,?RP9lV߻aWJi#˯W؋WgR!áSI(F5*ViXfRůlFu@]WXyʻE8ȭoIpݛڷp -"a $/]U* ps&wWH()98Y$غIi,yDlb-LOcKJs-|:7}-FA=N οS$z>[6o!ai#&XCArHDZlӧ0˃ 8>MyIˬtԤr`bZ6n6eQpgSnhǤNV,4ů&k?\6@j޿rQ]B2Uk~;SgSj>XAg߼rZ/gܚJ٧iq좨}|8ʽw{1Rx5tz#֠].$gb uyC6|#3g=UWi\-A9nLC Oн9jOE%8XҤ|A'02ȧzѢPm!kr̭-֍Ic)0Ko\ɒl6[EO9;[GH1r(n+VNT-[Þ fȬk8?iFD@z1:=;`byuҫD6ׂ.W ;Qh=K&c*hl0oDh )cБ~Lc&[ v-1;$[vk(U*OxCkA٧_lGC)5wsm$y| @~;SBH"s|߉* }rD9brxe"mi\k\Fl~};ާ=q1{rPE&nUJ:P DEfNJn+Y2~[*o#'Sb#*̾G3M'ɌEa54?j>֪hqM+AH {Lu,]iFxsm~3r}W>I*w"B&ˮB>a7ߙ՘\S;(fzM8''#("ee/  33**\&ݳ0Ka2ac2辜]ZKn:`D,>0L6H%0G @:^7_Ŝ\VYfxˈ&Qz-rOz!nZ;{T rӢzf&m.^4-0?S KcΣ=؏-#IT~ |u-.F2Ȳa+ -WFckb\Yf12͌-ldvCɧ(50N s쏣z'`u~#? ҙ:8Ɖ0e4+QLPJbb~+Ң N=ѝ#eK GƊ;W϶[nu!cbqgM,)KUk0qOW6KOR0ߜ+i]N &0F~'ty|Ao-3%ٛZe+QȜ_H^y[6TϕDf^:Iri' #\X B1d o+97ȞYoFk3KEz![5x 1m)~Jx[>hUfHÊL8lx'%!b婽:5}aYO/p+bIsWzvS-Z[u)#R."_p,^Ac^*D9}2 џk.G^R٩zi#3$c!v*#7iضHjSAE> b*yjԚZ`C wE0KU邢n\x:t5+B`ՙg~&QoP}!EܙvǾUA3 61'377yAf.rf愇B}Uj'y m7Uf8h @(0f/-98dJŠ:|D61ڋ;P`,;MVڶ RF Ĩ 40ˁȩО#'^}L?=_Y, 9Btݩ ZǺI?xs}BgԐ~] f Z)]c6_$c @Q=I KEFD:l l^2WBcw>>"v&US_k:=kqZloG;ur= Z  \~\ɭܱRmpԱ3XCE,^åK#yc*mh[ї!IG&=~R6V"켘UuBEdR}hݾ1i.'FN"@y_>HVGjޝh"Cb#MEP13Ыr:m:<fLފ An*֊x`qc7T7gEՀ#.Xe-Bc+'^Ss?4P 6VM/~#La:{q`ˮ oUF] _6 1fF@2i=T`J״[jCY[//UPX%{@ IdjrOk ]SH%N-Ϛ yt܌=h?Rk V2S;smϐXMT]3r%`rpYXY>yBV'.LTh]9`z?Kzp? @b҉3Ɨ&lqi=CNV y ]-26.a|ы]jBSoRvH?BcCJluf*ym0E:Ew$Y,šCN`/"+XSB<( vXILRwݠrNQEi+R]}v P'\`\kO~)ð_ =0aKmۿ|;] 08lhE3MCl5$!^h[aD1q ʐ?z-d̦}]-}gXhVa"n0Nj|G)iW"e-DGX~{>2F-˶_SaBkglD><"7!|ȼOm a9dkwS`ՔT;sF lSܖwFS'4UĕbcQ$ل3|@_t"5=jȕ^_T)1VO18GJXjԩ8HKe5]SG 0v"{MvcIL!Ni@GIU\(YKdWHN{^@WUIF<3c (bgE pRLqK%j kh*9!>Ux; :iK 0lDLLvoWؒB$7H5$$f~:70ckEWgP~iθGMx$`L Nss EAjieuIPqaIZf. >jW\(E s 8]Us۟CS4Am2OĞM='%shUJo\V؆ we=v/=<~o rLpF6v2 n3IrNZK~Eg\AaK!"{ոcnTwvbpd]]ǚ{$`_3W*>[e[쫰uZ{}z=ZB1} ;WvKz;GRI("Δ`I^T<5\u.og>6sX8dc#fGF} 6I0b0"^ 'ttJ¼?4"?ǫi ]^K A# jPT^59C# ^a:>v/zUN+&/!Sh,-=ɏyA|_?2 YJ. ywP-Y7"h+3ec6k::'H=^r(+Kl Y̚h#sh5!Lq8+B`6k2Zom/I,Xd6R5T{vHDM^֍F涄yNx|CFl~#/#4PSH/JuY nK@8w0JF= Bl m ,x3ϋy ’-/#/{m~c0~NJcnaq`b5ZNYOQ %S!,DlX6{gM98jcMh&ZHb[p%؀L;TJ-3.]FiAPi^,)-JK^ul%9C[mXgշfrmCyUJ„ paކHUxε\jX"I,4cts|(n|A&!T3K@cכT`2y`#,ot 0!] `ʪ /r.|m (I6KC\v-\p)6I!DQUY vҏBܹXBDc7ٞ18 л,N_aŰA$;j $!hMS\Tٝ%[wE\:3jnejȸC`m"~/,(кPE^ђ(o:brq*IƸKdb#۶8GGϟ"0@MLj/3&g,ŭ- A7Hg]vd*XכZ(>\yKIZ̀ή'P]R\Q"QE~eCzYyY, 9F#GHeۗboj MJyn6溏XeNVdIOsFrNj?)qmm׎քVJ{4q$tIQo,瑴Pm2;^dByi y=MNQe3E`U=mwg =P2TAAwdJ]=9`MIf79&x~ш@{xIÃh]ybX{fZWa:귀?rxM+趡^.NJSp`nLA+j5X*́:I0){Mc|ngB8-=1eN F3LtWA}Ag-a2[`o׵@DN'<}D \f%m~v68@9!(K'Fڋ{kQ$]:+|((єzJHؑ1rrk䪊hMS}7\Y$M!iA'瘞'~yBqL|UIy[Yi湼"RG&47^JI / @$.ҨESZq., ueF#ԣk3sًXcEz!,CǽTX-N˫0 77/tX)(^sTKD;٭ӍnLŨj3Ս'y?/o`5UW#g`4.~jlXW7 xWU/dazWxTF)*}3!{vƒ' !٨);f&Mm〕`KC$;wF\'kBRDCIy{kKt\A'R9 FySMW"Y[%R죸KN7Vn"c^rXdhgѨ C4]'CO0LLnB]N#f{t[hQ`S2C/ S0v) k%^{0`L9g=p*fm1hig:0Xj [Ϳ>ݮX:׃N( JV\q#nkIꞼ*@˟~T--1Ï{ƪ;n:_WL>EţKCUmD]plRItQ} RZOb)/r"8rˈk"Z` X؎EČ'AiXC?6;5f\YVl&c f]釹L }J;͔й<3:|GU/vg"H xk"j^CWI(l:JΖG~.(Խ}oh?*W<|$|@ȭ)a 0&J]v ;,IW"nq9ֆfנhLu/MHU _򭌃C1Q>ҹuN kaFCO-kɥD a\ba/Lkb~AU\2VQ(20+)BQ~džuwԢJY_GfhO^]E^I!`1>Qc?0}.aosQٲhZ6ڸN>sGjv[RK]!gb4GЭ|Zŭپ3f-W(IkGq\*~5>xJKd2(QHӰIL 륵|eCb!>ț9eE!U'!1|؈[Eb$`L@'*3Go40[ö_Yi͗! qۏ=m=vw;3Exx/p^-s"rrB.18dF<\əA7nUPyTѐK Fz`#IEV]0$LNuE^1- $+ld-m@Q}.!c B=Jpo OWsUjUxK>:Zor?KVg*HGF N1Yp;$!@lX y'!ߥ79#aW [q$&U Zt֬qާ'mDŭc\H8> .8:&l_81\;;M[Pme^%?Wn{BH ixuy6\*| Y׌05I? x[A6 k.85J@R0,,y))&k<#j2}'`43I1I0l-zG ',D-My"8[UpNnt–~wCGځm1:pm@>'7%j*Ȋ7ju~kT_ +T/یw.߉FSRuuϓR=~i.Й\$ǥ tjw {D:YhUA).(@RN#$Ň0]zZ=XGw?ԳY,M0Y)]0+s@)^B`L;>''(ag*ǁSݼyXybu$i4|ʂIsNrpJÙ>6kBǬ#,~`7TD=y'_ ,`XY%:ѮU=St4:}| T溏3bG4-EjWaiWf-,:XO\0ʙޜ\L-o:B <~6B YWOsMz E) D$B$e' !PCG BW tL TaL,0RenK@(]s*B)]̽A1buA|9ʍex'}[3eOfɬDB|0{*WBP'ҷ`!fp#g]-~0rd.ډw M_.YZ|y_f ü.VLB-=ЀwĬE|C|s=Yx% z 2SDwͮ6^Zѷ 2nY&=Zs7\4QF-OU*+Oo tӇi[-Qkc=\T `)Sܣq/hI`RPco![!nF}e M$ͦ2Cs"r5lzQBc簯Zo)<AŖsvݷ6e8D'-,57BqASy<,+YD%Cx LBVM@rmF fn_W$GfRɦ(8ޜh,d2p }p6fZcV zEofSE^j ܽ^Au=u͊W;%U5G)+Jo`ηI[x$B}6s%*9 DhNjZoFf:'eDT>̩*msM_sW_sN('%z,_mwXN$qSwb}Sٖ*)uG/vf*ؤ5<8^ r/]Kqfg _VDb;}KشrV肰cUo 2K!BvMMAԑ1~I,c-1Sx+XtZ' Ś]+ojAu^ 7󻷻u *Rfm4C#Ŝx`{3)s*-nF@g""O!.ץEq16g)=w>6 txz ZcM{ );F/RKGdl\O`蔖g{PȲRL)בpz˃IT#T5\,BPAzt_Y yY4-Á4Lw[IKwρWSX@vLHn*hm)?ESJt=1^.N|GKF|%"96NLHT O؂ M%C :6 +(P g!$9澊@L4Rԓa<ě=xv9>cx]w@w:NXnŎL!i'X L>@h KKB{z^ Rxr `tHZ]Lk56~l /NU~я/Rg. J$nȳMe$úݟK͍{$ZңJdF.u ?xA)F 9p9zŎwGx # 5ywCcjxF!"%@==Ҋn,besaق7tq`Au]@t ^IĹ뾕ST[Jl6O]W$)I=%1CSQ<̡).'⓲YJ#/v)%u*֦ڌ 3h|KX,H3x^bqS{TEICC//FF Hx >9AEfuzZb=+:6yz hɳW6R&"x2}̞T_Q Y3gdxba<(t}vsr^ S? ks%>AcxFk͕{1ӧ+x3+PȮ!B`sø)=?ٳ3>Etv Xl{B*Zx׼"תV90/3m^;jg Sakd!ʠPzGuA;Sy#--*1gꊤ{5s-xp/Ȋk`B4JL _S1BIVώŬ=̞tU{+zpt1эt2~O`\MiB-Yl$t0懿0kBDE-ydڬK0\YѢɫG4gY >Q 8= };>I+:0~ȘT[/MHx+5) Bǻ9e|UohJU4 RUs;ԥbgm?t,+B[  _lA]im%կ'{IB& Q5]~UL(BrY3φ:L#ԛB.RD j tja7?%}ڍ\n[e^s"Eu3pBF򗭯|?dz".cD?8\9 7-xX}ie &io3 3"X;3^xpb}J12}\peUA}q++Xz h-&;%'4 n|#Y-52˟~MIH.Dt$[.I1G֬-nVr< 1^Xp%đ!ʣ=y5e}_s}Mj塀◪)daNajqy])ZcT!"n'zUVqQT'Y Pa! c +S2Sӏ=`P5TݣI/83\DqWsꃐJ~oGAjz{k=}T}!7<ؓ U}5tل4&_JJ<6.&FPWjoy;>C>Kώ!l WymA l!,d)aq8{MF~U}FChڲ9 vYq>O+n}Zɶ>[9~TlgJXB>'UC3p8YNk%#*d%;n0l;Ȥ0a,uGc93MZCs-}&vjT#t"?36\&A fqH&B|PQ>ѰGbZ\-4^"\n$5R%}4p|"D6 T]}[g5,'X1XgnKxoR8Alp#*|B ߐlG~>0l3Hu"ay)b,@ܤ695LU`$ nE;+p 5Yʉ:Z1ѻ#$$=$$|sfWDowWEch޽T?;NzVaՕF=;T$f;D i&qb<.9Q#aaLM!”Sl7FrBNTgC݋Jx^?;#}1x5ܺ%:6`g ꝣe_ol=>NI0DM8\9IW*iȺ~ i4'u";)}Rw ɉn`df-59p_Y#c>3.:\`9k=,/bHVx筁}a_Z(wVR})Ц2tb>ҹd7C@Ga(D˶Nℎq#Ҽ637xr[S_.rBڟMیYzcF.M0>4g]$5 +v#f~{5U:50 a5$Cgϱ=_p~ ~x 󋨜a'۷؆\2n كBKb'}+t٠B/YԪ4~]߬5S uYZ 0>x^zbઢk3NoM! E45 b UO `A%P6R/짘 i_=E dhttr#23krX:xzC.ԟQ(- 5asTg6+:~ȵ3݌Wm'ihOnXAZOhe׳nT&~^}Lr<*;lBr2@}Cf_4D ~ke3|R--,8-j h1T؂0Y67RS!Y4OgSLJ5x'*s_bDpp_U8ck`Rả]z:! 0A{u4Ao=zN^9jUtEu43\܏'{ UVx{Eߴ>Pقl>]U}{' yk6ӡ(:1#, KO з~%meyқ}g.3`-8ᐜ!OOI!>V=x qֻ NA"ݯQQ:k;\ЙGXnԿy!A$FGWIPMn'^ī8_+]%ѹ1)Z\ۯߒmai^;nA\\qI|F ]PՒ(#Ɖx2P "]K] W{0OWm{C#PQ7HdL e[yʁ;C x{SiwvN7eWκSeC#WE@P;&b) u2'OA$136]y"G}BG$9rJy2Ƙ|xHʠ*ZNlR}볹[;A~Z+pN|{)W|ov[nTJ!Gؤyo0G$&F驕rqгeBǾϩr.#ю[kH5jvxj',<7Y"G^AVHcotHC&yh<#<|@[t_ }JnӒ-t:@D enCguR;n|T,fY$ݦIfiS,ZH|U)NNC5iJh>櫝LD@~lݜBfy< i5/}G~<&rWS Ͼ{*"P1o0^L;뵿$;|n{6S[Ph7fs˗g=i£" o)ytzdf[ʳ!(:),&lzW6>pя;qMba!+(nWx`ZD,Zk+נ`*`,æk-OBn KQCipliRج"iLG[5R @jŻ&ҵCB vlw+һTiӤ٪uhɅS<1@1]=5,SuJE 6nkR]=OxmK] Ϫ%+/~?%)2ztUCh4nFl8hϲ(ʗDɱ ֶ+7[&7h&nZ K0m\ɂ6V}~ %I:Vb(;Vx@ߴ1'1:h:Q!u"OPl;P?dC0KBH*I;iMZ zU!+63#pSS9gx?=DB%P8pvxV˷(ϊ,wud&D[><ˠqP-2oi[&EiyqO2៛?Y{jyP]`Ծ|_mVv-׎gl~m_c?rڣ^,' 2NSC^* eupzyQ{61/ 2+DW}+M#}8ڬ\<ӏu569E^h#tX7;q Jڦd:PzUvr%c0>\kLL9B+ ER)$OC!8 ci#YVX3$d=9eŹdP׆LE9]GP57_CQӅ0-g;̓iفqՎar8!}B: Ŗ]9^㜠0)Whœ1 IsD D?OfSa^ivNx$.'*?ĴЌɈ}` |5\`*'aip3H!Jߟ; 1^F` H̡:ʅ{Pwv&=0e'.+cRSc?9Twfr[}+QD J$Q+l܎1\F.v̒Ӷ/E$/BZDٶn֖Sx9i;y7K)r-JMCEnhʘD)p G ,@26Ea$|e3!t)HUH×<(@Ч4j%`e [i'˜ =ыM'iB'/=z><;D;XoN~\⼻Ȩ~$] ? *UYoḽ>#X*ީ_xUAd.se38xv:3 B\x<:3ѠU}Y: |^.E]jeױPIY)bNSQ9,g\;uF]1;ǦjSpvn5Ű(QF"x(ַ>*qӌJm Aee>gRmS#md?݀07H͆aˆN$_CdØ !TAy"$j?}۪ha 45/P^j1{@P"r@JK4$T7 "Ro$Ew"U, yZgt1 eA45, 7R11ZZ&} |F(_0+f( rImcN:v j_'rCGF8Ǽ GnXT({ĮPNXF?sP|QQoXtd&Hh.p搳}HwUlt;5l*`ٜ.Ph^?n MFmDUx\pR^"׍*Fsdk:%0M2+NB d +IT]zo )AƯlnJYD*f);3`Uu߇l +>;Z5UK'-%}^@V-&2 @V%3I&m v9{7(3)Or˽uNE45ahL/j /BCٷp01 2 ԴWa/ەy|YEU|k4(|T wV'Ul ř0]iT_WJχ,bL;8q<蹡>AK r<@Gw묎;V`h`&7B9΍ҥkxv.>b53$sGS9+r :j I,`UZե8ـ- +^L)~ᜥ_]%'ޛk8aI%tk%2P%D*2/ęe8͡) VdE?yADשy4$+P< | iķg SByqϻСaw]ۏ)}:a~zǛ'!4JfH0?'.M@.Y|K0Mm=AO[X,W)QnE;h m=%gec1YwozwC;WdahRwV.B<; "K;_%": ('yl ƚ,2^h  z"CvNR<f² k#rC-\y^>9k+M%(nvNE|uU*5Mٛa7C*xuxUAfԣ2 sC>vd?C v9( i[JV.PNA-Sy?6|EM>V)Ԝd#o2'Xowsb6Lժc:K&f aD) ňmwAgm}[쩆6U|LkoDzh2(Hx <=Sku_cںP.srU eqԪTO:74, o#V{FrKBiܬ`++uk+D=3ėM1z13Vxʉ]vB~r tBOJB*8&kbD@MI'іPMr:@Cz8_Rx&aI Lze5w4 uO.= JA鄩Drdmfw&ۨ#[cI<\\IIg. eohҏK)6l${G ZoX6Fտ/iM?0I=?$;3jرUF}zZ췚]Iy^ VL\G:R -tG*&捄ֈ=DC; }n,Cϵe-%.WDwEwsl%B +č87f¾ZdnZPBJ!1468e(_6a*Tk|ۥ-ƩJiq vot )o#S X]WTB@NCʱsI^飴kw1[F  v( cR1W"9gYϨGDs4d#K+]{|[ڪm?/r$xxģ0p}JlFi`ԝ%!EV Q|M-D8}mScs= jjӎSiB=&4]4g1Bբ%NxJIcA),'- l6E= n/פV"=)(U2@q?=U S5L#wX%dYЪo'E U.ŔhfR\9=WƁ(k^.mu0Բ 8EFC6fWa gcU%LC>(Y e|i}n1ES5 $;zو-[#Q:q2*MK  yz5S34l`Q޼]HfPȬk%U<E<łLiVzpG0RaftVc:r:tf}(D).-i|t/> %fj4x>^g+h vLA7N"SCJ2b%z4ar&),ƴJJDp=)sCiL|HZ/igscx~)WK?;aMi*~ڨˮ=IeJ҉itbƤCyd/`ѽtmT^_Lx7"dN"zRrawiWa >I^wIZh߃Aœ߸~cIx"@??guަ( |Y5.J.9 =_Wd]rAL!%7!uҘW*쁏RSDa Wڙ~un ;o})9+| #V(ݤ) ZJ /RX po/^-&"$>%~e*9 mݭA8^#ܓQYT2H(/GPY͟Xl/[z_D8B1 ;]=;vBg!ؒ-(A[5k9͖ݕC-8֗7Gsje!M[ Vit*4gരS񖃙Cd M$,$]eM#yͫiH\<# To T*lZi2񖳕s?xTa1B1xn )B4o|)uL")$I!/^5B9p [Dl.3& xbuw|&͞ J~strPþy! ;C*ØΧ*S'4"  NujLl_ CC6XH߯X]`W'ykhXcڑ@ltg_S5e?O88t.^qL8&F&Dr#eiO0 tWKӺ(lO f7S֡xYZI`L oVZ7WֻTsCQ}X|5Lx+Qd{3uJ\AM@L!7X>f4h F?Ⱦ4SR%V)vD|қ~e_~i-Q.nm؋#A L ]䭠:TIJ]ȗۺt7g =nIgRẢ9Ƌ;b[ n`!FE13~~nȱߠLm;P{Qtl% 3wt1O-9.H%Ɍ^qC3P*JڬʝfhX"AxZRY"k-ZS}F)6srsoX/L!q$iCb*FdrNmK+nKAS`|f`́%nj ;P7/sW tKg#XpL$7:%7|i{-(q{I;kdd8n`W/-'Tm} Z= HE$Ԕ7=󖹂1Gs3irBC7oCP5,hg#(#"s:B \TL CBǴ>G_X>Hy|ʼat4zBiUGMh?QcZ?hYT-wB(P*Ca MfOez@Ny$635Q*(X\'۪ EO<]鴘gS3O:!dmk}lݬ4#qVrɡP`; ݚF"fJCk 7Y&i)n5Ynz3t^GX&)}azuCA@i $q[Z`\3%*׾gɰ$_a!~f41#f/c.Қ"qfIJ}B|KYAtRi!DKvE*'߻`*F@^iyV@p0۵8pWblM|3]Er~Mr`egNƭR a-$PM”&~J|D\x4#Pq91sqH rB\" dHȚPV"%¸P; 4amm{I3#zZ~>S}^wXC~%p.<ځwOxz{4z9"QXĻZtД8jq#\WcwOW~x5q$imq' {([nvz' 9YUZ\կ_DW"mD>Vl*c#'^< $քxm%<z9+*kR 4lsm,Zn ѓ4dRw!%4֢J7% ?z4,st6K$2ρڠ8F*yF3.6e8YDŽ9H[Q7Ed 0 ?չۛNXXB-@8V6}lɛ y\vxswWtSAF{Ugf LZ%jA鐰\?~KwA&<̱d)xqKw(-d,X6쵾m_')>8(a;: q?]ͰF+7nQ#rr3|BZ(4ιnP~ u `tK|Q׆C&Dns0* R$ҼˁS=d2!tHNy%4j%Ӓhu<~B6K@j2s TQz~_037V C f> a;+"NJDP5;Lj&d:$4P;N[vɤ@/CP3Ƚ[B1|$H,psq,Efmy?GBR sds]gOժZuvIŜ粨f X3ZqrJ j5=k.v.ΞxҒ#Y {0_i,<._U{A^h~)ߨJ#FV,Lۅ]C#36L*3;9#tҴZG)*i5u䮵8?Tߑ} g.b3E_V_$5;*Txg:ᝓT-k Pb$iG悐Rƍ o4X:!ax$"M&?cd;%ؾE蚌Vg|N.fvzzF\7{0X SGo꛼ StKg w-$= >r%WJ_h62ɹ8"D6= \("2D&V0v#?{VgA U_CG3'DNgSg?9\1c&ņXc$5 a_,t߫q\ - W$EYސt]NskA |Q䆥' iP#peG=3Pt)&# 7ӱ$0"]+VpP[_'vd7fu&ɔE^iFa [磴^]&/|ZUGA`vxکSɺLM㣾yt[B ar l1 ͏7 ,+U(2%2#[PjxxvFz_ g6jA+ϵXh},'4p_ЄjxZՉQAF$@sKq!VAm8xJK!|JZV:(CMyBr%m lYxk+Tμ{i)PBsM^r aC(Ѫ`*0Mfj V|VRW&+~;1]c0.!V'B>~yi:m=r^2)`L:*] JO1LөDo)ĝ g /s]Nb M `1 YoWYtI C KBo>y!c1{# )<YJeڢKT[VͪW@D4Lz`i }rWD&וo)Yl:-PӯZ/ ,!Y5b0q|}*Qok[ƎaơOkA8R P(Up ya| ߱=T`533Z3u !af1聾 ;aS9tɲZ+ђNPԳ( QD|F-l%>wL:D6i.⌏m]eňH04v`][*Z|iV6Atۨgnӽ^@7G6xz%#?qиgJd(95IC=/HgͰT,!BhV("yU ;`,x[o*[؆<좔6xr`cBC醻xF΃SF~v%10._@ݱ'p~@7z4{Fw_6i.yڑmx-¢(u4f0 _gQAȬ$DSEfr1Ig(y)tB^Syʩb5ˑV͉~BzU%Krt@EFmtj1Bsۥy\OPƈ =<!qs\ ]"0.tLJM'y%#aӓaU(?Mf9m}h0zIŇn!EĎ>wA5\Bڛt 1~<~X/v+52]l2hzML,ȻCB((?dMs2J>:N:[Qt[]Iek{5Ou%D/#~V[z1Nez:%8%DSԓo*?-(;(UDfXd13R&?ќ̊iB@e 2-mԳ)jbEˮ. &9˜sw/Y\u W!\ \&9I_"e3aZڼ &_{GH͘H.>KFޕ`K#gIťւwqA1Ý#@{W3obȅ֜cul8!.fE>(F3E=_X`(pbq_[YrƗjD7 E1˹a|uIn}'q*7V/TLI66cQqw46 v$`@9\)%wP0ѕ X$$lkXʹ,G)!f1LGx޽וl>>]T(RYYqt %SXzAUZh9p1ѣ n0#.2V#(*zɁ2o{TrGW"a2sfjaRٿCϕZcbSoJYGr ƞ:rڛ5%tu쾤DFtsbNqxJ`BХ40C=fM/Uy,l>DŽ7YTوbw[Z!׵Dogq7 2V9cn.Sg,42zo@POET(}Yy[rd}Z ;mD=Mʯ[F"½(nkm\dVqm ]ѺXȼkyWY.}XhB`/H3 -{UH _ś)3*EмN7!,0ߊ=v| ρ=b%T2+:Lp4:1uN $V4$vۄ Mi|/FhΕ~Q<klKN5PC7QW$R1pCGXOp?#crF6;pE?F >mlq{~l`/n'FzݶJ_L3;3[W)e!W+45)?h=*yOE1sؑ*!Ȫ kTNxSAe%ZO]܀6LZE>@ҶUӋ-J­(t4@JMմgi>.%j)c{^QdFbyBb9U$s-v.PJ>q)ʶCpGN?–\V\mf~VҢV UʽGFǷQ$v095?WkCr9P9RWyv*J`0hĢ;p,&5H2^w $γ{L4] # :Nk_IwM1-yA('G[IGviXm|p:BO?!7Õ;5[a'zu[Z$1ڰwa^CYԄ| Bȃ*`i?AIdLb*tg?:OZ&3h\cDBB\fLudal>D"A RҤ )IcK9YJ8/^C;^rz1c{$nfk5h$98|0k-:u66\}I&g *$4smDwȯ'c7RK2ǝ'UB#!Ǜ tjعɵ=ٔ?ɛ%+%υ+>B;綈aWr߆#`e$%T āϗ7FbI۫<M !3"?, ܴ~ Y? J -7LAd❞x+{ab ߌ|>>eNVŖPds$1@sN 9>ޞ<2ԎͤJX0mx;%d ;"!L0pN&8ydV}nDm`B/3u_#>"ZRlIe7?m 59E ߥy/ %P)-7P sXd\łV7AAEJe3 o#17TK4Ʋv?'GՒiS/-ԑ؄쁯5h; ~OLF tke ! hd%nc@{%+8qLCѐaw/z6ġA>QX㳼dR!vV; DA:HH'"`4]$}P3fj,gx9OwWu%pvx*p[^6hht".=<쮢104 Eg) ==[DSň:7l׾:dr2LX#myb^0|s\rד,C&B(0馽(FyA3!L TXl/_$ͲxV"ˆwһ}M`շf'I ](=IP8!uci~+-RM֋/(;6A7Ht{oWKfޭ揑brtc_i e) .oB $~Tz_eFKa828@,EmEzrI;TIjIFtRBz'>$zt}B'vfRDoYUJ+qHF!sqrߍ.nܳDb%Ӓ1aZ)vkX !7.bazI7|,//LP^w| 09m}V.V*VӰp`⬥&Z9F<9Oqg}`_72%_Me{&?p_灐Z?%IJA<|XD |#nbc1aB3?{}%I(W>dxc7Բi5GtۓҺ]Ds⯨ J*5'5SML0s.4g&F%݉|oN.MxDbF*nwu1A||Nm]v󵌙fE)9^֚C[2B2JA;3ƈ$'l5 @m\ׅ޲|f.}ܿG%O! )Co>+. hS8[mk ,3S7/=~{%Fu"Crg>v ^Ͽ=Z "]k8/' | GpuCle L5LD,Uh_&3m3BQ4ӓOץOn @!rk 0r$hb3"c,NZj)礍($ /y:e O\/Y-y.Hߓ5b]tS]y7 i&kr:^ JEwx OmQfJ_ƤE`!t?/\vx Ni۝./+{q]0tY:_7K|k 31bs@U/avFMr%@A+d tw/Q8ѯDV%p q2__ 䊡۴fQZ¡贁N/tнh*Q[B]Ɔ>eSٿ \! 9IVqztĒi(d=-T%iyoQ|Jr*IeXPziTD'b|C|ögDE(tTWrSHlMqě9>Fw(dy}=RkMҪCd+97 _ɧؙwE<7CE7, HU, Ʃ@8-g #rQ.9yxWQԄzLU@q ;Q̈́"T^ ԾFsQ键re.Ɩ.HE҂BY5z{k G  YSFyrC*~$Kn<#gW AIl"/oyr4y1%|ՔWy;PV QKegzނ9n ?6E6ennʊC6Km^4GB,80z8Gǜ Ð㉐HEq{O>F~dta$AvxL;d [VTWusc{]~_} 1twƮW;"q-\ڲr~J8zܺw`Mu܆6O44GI((7y7=SS%ǚr{`ꃙ`NW\z`{+g^3Pr!Z79xX,ۿ轞4m3d{MhB+Mrª RBE֝W i@k &Kdl錒 5Woߩ%)뷖㍅7XlCV~*- |0_ϰzW^)) #Zz7n44&l1.8s ).&G8{C".^PakϣpдBӺռv[葄TͅQit}w H3uqPgup0Rx8"C`ZJ'A\فB0oA 6ϊV5JK6$΁VbF6E2+56$l~*mқYrKJN^5tV=D׍mTUQ“") ۯ_ҝ땓PU֣Qޚ5v# Q$oܙژFvyvT6<@T l߈lޞno2!lV%h3A2F YZU'>!33mdkk䇚Fߟggo 3m4Gvz`3 y>BN$. ֘94h%m>.hxeS% fj` Tˇ(Z0<#:?ΖJIL|!AܘB>g:_q?hg8v8:M&NeErl_>pIsOg ǞBS%MU`5 qիC)DFӆziLR5lݓkB A5Ë,3p,bKxdWH1N`&W[yjD1r1#_: Y`1\];yY_z Z7l (1.y&DBivfGB};λf-i^ @hj\YbNjsU uʬ1񅼑Qs`WaEE>jj(ng#%3!Ǿv/brÆKFnTMS=̀͛.(w!$ڻ)wV%N`=#v&?z5*V~$1{(?u'{bQpdZGQ& <짡J2ꚩpԥ]M[nGJm SG‰gLUoim[aB4yr>2&iQmj#qpep;2.!cq vs?@ .1崲oI 3Ogm‰pޝ  l|p UeLdNN|igv/TCBlٓuĚ[ aj?C |*A)w%1LNvw+ N:w~PX7|yoBJ](8:ԎQ7Ez/1WyQ̾F+Pcsp0Ŧͫ_sUuyj}A'ڱ SGBp6^0]R__bO=&S#Jv'aNC-:ީeph]&IBnFX&SiDҞTO"+\_V -MD,/T9LT|n!UJD( 3^_[ Ѡ:$?C4qeT2sB;Y0xQ$~ngV%֬K W;ZAqVIA_@m:In7W8wIck|,pWkՊ;Ol `w.krF5kVA3 Џ[ 9m{ \ԄH~]?B) By5w@\l tH6dj"LBrj( wb O4!|EI08pTCQDGl8\"X{E5\-c}Wyqw7èpVP[xX4p%HrfSҔO+pr)S ]UM}懺V!B xLk_|2wI(䟗^Ek9O׼(ص!%A;E+,DfVիmKvLC,Va!i \]~d[t~*j B,LK4,,eRQLa-K _5|(D4~ż;ݐ7L2T*YDݟJ;NR"v`u⼰~X4LcG= h(`|.}Lh[62"W[SW  si 2DJ荜5V*4]m#iRT] tyH~lmrng|@|% %|_4T,0u[Cj3/1rasxQ"V(Ӕ̮"CCÆXǮ,h-R`i ,2W 0FULv<1xW@|`V# أln&cRejFRk!&yn4ѯ~710 (sA-jGnT%11!/:DAUnqg}xy" _We@ZD਀Zɺ]*`-X{K 9U<0Dž^nn۽j ̣udJrP\^6bjRP=C-T8/HO0GpHR D<>341Muj,v/~7# S'oPg=HIg]}πRs!mI$/YK9>F6j͒|ϖei0ƒB;oGnIRWTfnzⵟ+N`$\n6(&1cm{;Y:adce5 5QJҩNET,ZQǂ zNd4RŠbO#*;iiǧ[@Fxex,O$It?dnCBk;5 tЍ LCp9riBQUY,6] WԗU[ #><"mGKr21`[LczL)s8sTx…4y;O_􀸥dUk+/<݅a Al3d8Z(&[elB%1 FFV;gD/y|yY2YR!;L-Qo8pqg衈q8eV"P`wtG eOsKX|PAs9膻 ̌.)cwHīIC@D2fR@qK/sPtSkα2 ֠4$4B]Ҩ#ov_Lõ"57t⿎q]CXy0;EjN;v}w 6l2 h%6cVEW;V* WEB{q$6&F)Ib:(Q l'@4oJu"IC = 9FoMxu-Hm*b.]ȼ\u^w{=%sׅKP.Kr«ܟbUM5dr̥G!>&d ^%ۏA>3("7NYLjEvqf.W}$Xk7b鐝F^5 SzOuN S +&mڰ@>T =j3mU%pղ&Wضzm2][!L3UR͞شSӊw? mq4oHqCxKG`W՝Jl͍ ɻrnQ4*/rX̴sLE!AkJyu矾M:4WBV4k Mr}zhLMgރq9)8*2B̂QrL0NMDm<#K'6>9#CO.Wqk:D}wE3b=wiKcX3` K)v~͝焳~+ |/96 eM`^#[3a'31E 0GW࢟PGZP)ȼ.4Q3JF{[t_k"hP,ҞinȲ|bbJJ7>="8p[qxr ~3Hdé+c.y@Y,߇^%$rm m c,wh2Έ5I=ߑ /&yNiw}-({ z ^/tftyPtMۋgxkt"^.q Q=@H o?L$z ?x\~]ZS-NFOZ-(E)&uq=5`*/WTN,kTDP| hUQHޱ &}W̐ IݽKk"4NcYiX$mg')Zծ3\td?PGvX"eDFwC{)NwڲpQj>KҗH1ti* .~9n.Ɋ?=9u5yss)\8`ǯ*7zljD4U}+Ze@%>Z|>n?u>,o}"BIvq;BSV~Sx&;|]c/S;n1?b ~NQyUk S! 5bfC~F-Z̓awV_]a8}v%i[skT05ZΆ@KYqg܈R>AzBޤet]WpҁKҹۧ3iO"b+M呌2F8=OTMhyb%ַѻG(Kζɩ7>L 3@}ɫPNRLHLdx$*+sJϼ4b∙=46ѡ$|\ٻ}sۛ7p`G.3/u'13?LAj$qU vѡJBڍ¤VZ!]xmޮv蹛2kl.]k"[eCJT ak&(k?}u|tzxLXID~ҥ2R"H_];k%n*Hs100].#Vk9sHad{#uZ&t%[]9 FҵSԹC }}r^/ѮzƊ9o-O9ҞŎr(^ҳz-ӝ&Pcth|RgoY/ JEKa?)MjSsVd#G};-b"@7+X8_HP!zoT14q w"9%w.d]ǀ1؃;Ҙq ͠M:!7#Ƌl#R׋,8(l1ߺP(_z1ɻ̌Ol$pm ' Df?""k US<5&(nbN+D@npf/56sIGn"Jq6qa-[|Eaֻ"mY V[`ځor87jkY0q!Ϻ3dU }x1F&4:&/W&1pg }L@Y/i\isc25}~7.vB=uwl3j?HD"V5;Q7&\5:N"2t^pk){UӐ+uє\P-_kKbGuմmH >9^K7ḚHQ)OGJAM?&FI!G V_;~# << d=FČ`=Fi%*hM+BD@ Ecchl4Wk⍥]j { P]i QBK*9 lru$ `WY|]a27NUSe%y ʊUiu|_:*>qv{E[-Uz6G{3<в&:Œ+/>֐ CHQ<bG#H5e*C͢{R.o(5@d*2ckHD>K6|1P a۶:֝D͞Fv Q#u 'W h'I9Ni8zKx,w5B a4TReGv(~'~8{6_JI(J/IeXzpXnI 'J*Z&ʧz3{>AN7bL5^Bܰ`+]D1/38u,>El6 -  V"] oHȠ с0@τ;M -2bN?Zi|IRO_6T)=j}N!`zĵn_kd?MqjEJ m*K8M(aHZ4vh"Q&K_xMw+v"ک/+%Kv[^m߲~q0pҍL$i=nفDw 7?mKa< f|jt$*u& 㼎En‡Ӽ@BWP{75^3t4t \&`!{}q^c줍Z Q{JA_j51GegF'Mʿ΅'6FP;EaSa~q5jwj('FUӢk*̈X9sPVdBրtwW$B%1Upw̥5&֐]4e*O 4N2Tr\FrcM,ǀ#hVp5?,"?+@c!,_/]|kRdZo됻 xӰj{F*~Q?NyC򻃗a߿Y$11ѝn`6ʹwvs),H l)>=LRzݿJFkECf [>F] r 97ά҆h.zDX3m5lR]uB2*!ai⇲ PV-ue+9B9-U۹IZs>hO!I;#Ƌ~A[XB,|w,FWc߇ l 4Lr؂ή0 iG  RC:?md2jT)/_` #::ҲVC1_B# Iw+jK c:NMn xeip8 3i|S4J׆eJά`;x[[w(*=jyV7ge{c7YG4ƽXm`{6}c8awiD3i26@]zZHkM֌v6 u]]Χle rS O-č4h+ -XNմԁ;Dl52'׉yNVO!J~ %`AX63 7.\?#;{)򞃮־)џl%9ZK~( }GTMl3%1jƢE4Wf&ȯv ު;6dOk #_vOZ@\'K*mY54ԛ+'A&ub]֯HOLksJ1zu\hB[g/u"juwzID o84,NzK,S6߲ԂCW$YX:/95%Q{X}Ck&آskLYAY>W۝,]؂`|nsS|%oPg}q(0$6j+50gvؚ/L9d]^>71su Wr;qMnMȕ-$rrOZŠUGKvEocܵ~T܇D!/KTZ2,y8yd zc1Y еJy?!aتCYI|owss$dJlPuuMc野ݮ'zP%䜠 Qd5-<@^"$'#Qxg fs H >;ff֜tK!K'CoHAIk{ ZL,~4#jYLsx2g:<Ë; Pa;%Fؘ]:x(վFĆgeM=[<ۨP mVwa\B{ )J?Wu45_Iz bXw$7+fݯCE:4L@)%ܜmiͧ7 ;-gtShR[:h{үH1Jҽc] R̚xoc&v{ݾYq*8dj_)ȃqyYRCy vhg8BNEJ\z .kaÑujת2D e]"nUI1Ǫ8} OTtj^9re:U*>Ƚp6%N>Dse_u+\(D]E#\Cmܰ {蓖_#\OePL͓ޡKiT'yO)/C%n DFNɣCUJ88#l"L4-{lcF]} 2GVI g,rVtNF$٭omEo-)(3"#SK;⌻hڽ1esD6Q8۸BP<77`o=D_UӑUV S([tsc8BΖ ;3@.NSƿvTƵwB'FE r. .m'8RgRr]WkkҪ9L}A6810Z1U17 3M:K6eQjcS(U.!8@W;?KXkPv@5Q,;gʣ4xZg26Yő,C'\2RnAנ9WXXcH5)a^KS ꠱"kA#*L'ʮtaWҳ FoѱOPvnZG\0T hlK3z`zA 8#0KoIB|6ge#O3[70?Ey>Ȣe{8?&y$H +Uh?4ؤ-B-0r#6Ce"0|$(d>̟oP3{)i/l ˞8,0Sv5Olx~# ™V⃒+ r`  2j/N5/5“FH 5 8s2>OrIN^ I#9B rzY4zK­^< CO 6M|[}Vׯ_ViMξʅ.I'V㹵8 !k(6gG$&3ظv,P0\<;tʓ5R?rpgD!kO[W]AF}ⷕ52z(W#WLw#u \Lf LR)TòW`8mCa?NMOJG/1/@zYV"6VPXu_=R=1zЩqpFڟ `eʫ/e&hb4 f m^qgDr'ݘ]ml5`9Pٱ t &8p-(yS1g ^ꁚ'9nj#M.1ͳ%Ӊ#x p'r:WX> թqfW,!dI#<(7qڛëѭls%ư{B]$l3kUXVSy#[f7ηvO Y NYx Y4G c%Pd>R>̽1o\hkuS'TaÊ\tz6aKԬ(<4?( Ak ݝUQ(tzcQOhtp9[iڻVz<bצi>9oRK -Rk2Q!5j+˴QܵZfRr%XHAVR=_FpBpn)r+!Ѓ'ˈ/j<&Lr#f>^~m{ ( Ũ ~#ڑd+񞃥 dm >:ltaUd:{A.*=/{ߋ7s)7sc(^ %?-.L #Ӟ4L#ӽIgPֶF!{l,Jǀkj^`I=d:HuՕNfKZf1K$e~)L9 40Zt7S[G t! jk8+wԩ,VhI>RŐA61xN}>]Cf: K0Dha?$u\J &2V5 /Y^O2.Ef?nmxkPql!r2Ѹ'B1ZG 3-|WB YrJ3 i}=rH鸻YUOPV , cvV}2>tU[phqx:s_Txd[h !+6fKzༀd}P欽 %ZG4gYЕZ a^m2:x9~U"Xx-,}fcs3dQ5 m8/v`%iDYAaϒva6u-B~3)æcWs ^|@@oWJKnn)vJ `Y t&޳D'8ծçWƎ.JQ\~Ek_io#YhB6I+Ϟ&Dtw&}gf5T2Hm)("3-J$MyE6p/*?XX,y,-L_&kA.^ÌOӟn*4pz\ ~(du7_o6(NGTމĢGX5*ٺ[1ȫM$t!x(}ai`IE,<*x%/60]aEkP> Zp!cxn"ՙs* ?Iy&1Hr Awx~}_6>m9P}}Wڔ2J~c/:s!~1?sQ)o e0v%k{M6NjnCT^Tt(\c"m2w)`WozY'FU wC5 䗟W~OP 0` VF:br*1JWG>`ӟO:{Oƍa&A\\-ϐ [nZ+yeoܭ ^xcTΊ#퀬phAFTʣ--7'Rt?Uqhsk͕dO}\ט S :eU~k|yDdYq-Q1BDT˯YN'c"ϧ>hf' zr5@Bih+LӲfdRl'(n:x&8-LJ^iM.qb^Pm[ p+RSm#NYN)!V qDۍh!t74INYk~u xfMvabcπZǩ~ZuDz/*O%8wnAєߒШլu( $~?ap9{ODZ{WЌ2fc9Фt̔h1~jFĐF~AM|ב bxC|),Asc8"hLb;E\ \UЛChm!FhJU<}s"I[&x440P]u:(XiPʅڻo?ڔHk&8=`9y}edǪKPiR&ȿqP=y_.[йpX D"/bU^#la&Z}{㾚|chD-w6E4 ?f-5>/\8+Q#Ach{Pi93N5FLázJBb!Ʃj6źɟ4 ,^Aj$(!=,ԏ-(]1OwܮAeQR9b|~'{gF$Nؙt[d&8px5{G$bSƸW:LN+Y9x;k )`~ UNn%ZMP/F:5di*̻Jۢ7Mu/`_3j11&\/ISACi$xE ȹ)Pʃe&)ys+Lu%R,'H>j],U3K;o8FJڳPͦMgIVTСcj 29?֫g9.`ig5` BA!o$h}+H͛ۢ{Rd}꽠cvkS2U@[iX[$.hGY =lGn w:St3̈`"w=~ɷL>_}l쑓D4PMHfBٺǞC sߋ=L_;Sr{hN OK|a$԰[>L>MQaUΥ3"A=15j0{cXQ:B8ΧC@iZ#^;j:rڡV-WDQ={}׺[/,$S+5>)Q{Ϥn^3O ɋ=m uwO%u 3)remp"Vr9Ѥ!'AG!kWcZR+*^wN1&_ޣC\oƏfvmzq\e)[@WJh6kl̞jKx/<`\Z'Rٴd:=Å)Ƙ0\GL$n_l:5))>A)Osݤhlo.QTQ+@A&R-A&m @su*e?,uSZbqsbKjt o.,D@Y0Nq ||t&aRҹiT.kM3%3dW1#a8( PoaG8ae}?U:2> ZJ&N,ev8a._zVW*?|I@lהlil-:OҴ3^Q?S |bC dxg Yhsjm|\cddoa͈w@ol3YĈygkI=R / 320hv߬&J2㱔Na3IrewM$ܝ>l;'Va,iӍegK}dVƦmz3e'XV8ƶ0sӑJ痺Uf߇rQa*>wd$ 9v>ڎ<*^GX^p[op9ٴJ ɼ>vfbqSPFNeO0vnJ݇zIIU3q?Cێ DDDHZ꾃Zj7mθhctK^G\uyd!봁䕔)5J8~cgb-\u3 ^P=q82FK0쟅ɭ\B&дP ͷ&I94&F(kr5'f`hHZe0^fKb2a:p)Fa}>+q>"?w]s=50;n6<3u,me M9N~TNIfq/?p :(R)! KH V +|=壘1 R\~(Η#6GF{Cdڝڞ̧>8O{#.y$ %xQ;Pl|h-^M{*vrܩn3 SAfDU/g?~8~*>UfQddaXj1z5 էfgI@Z6￿:+4׃udK2{kSy2n 괾c3cEu~W A Ȕ9>z2gX\j%qYhL1%KWr}yPSI..c`]s1W'$$H‚ '*$XqfҰm3)'wv=J)EMp;=0\Z0WŲ.qϥ "Px}X0S['*"ڈo?ENuf`oW`[kע} v!ɀV%G"LkR+ɞ"6񾔞s]@eT{ϡɗ?*ruQLU%0Z=ZMSxYgj: k]n6קUH}{ztz {^1u$3w.y 2Ux,@M ^`ߝQjV$>޶^@`zs>o TQ! " #tBԏ{MN:mtyI2 q( i)jV{niҤ4H1ae3/:6E!(ԙ(po0ʈ)0br'@V֚~~Io =94ӉDžQ5|^y5(6* WSv\?>iMx6{GXB@EkSN1* '}ҿGuS{{97Ųm Vm9Hˊ+DA RW>ʋEd)+%E냵D"8CM˧&}&MP݀g`>G~p X.8ڪ}^ynKiU(j!=p +x #{8W.@j's unC2=\q(@yxe<'s ׎ ѭl2 "i`eo<\l_~A|dl?X(ݑ$yƸg8CORD6Z$SOMxwP'=XW\BSm>X2RT,"FDȝ_lc~%hw7 ;ٵ+yKߏuShNDGpm>1N>?D3. q-!DL%fQI6 w12rݻhDŽ(u5b3n"nQ=lj#{USdGk1PӞ'H9`r#GosK4 b:1K D1|zqb}]zxd숚(} xtL3nSh8abտG*O -2^^,r?&*x/6 4j ?PXʿ apsϹM1l Jd ֤,?YP/_M"rCIP}O-+cOVYxtF("beG+yd`6@U\O$Vy%T^(\DweGo>2]p((Q\PE mTZ+:{CSi;5s!>Ҷh,l|X 7J{R ,+X YAdMӯv$>\'ӱR"N6&G9r r%8E]Tݜ\9j EBz&/ &׊Fmp9g,uA:8I%o-A\apެS;Mt[Ux:C^M ^M LMbC4-5O{ kmN{Wb. xUvp,x)NM(M c:`ЛԊ1r,KF]඲m]DwA1a]N ͌([d}$ 5 y6[ +5^d!hwW*s.|_悗<w3o,1DP D!yfHHeFEa uA?UA~5 H;[ 1xH||r0PJ)zg]?2E KYG3p.@H`wq*oNfF$YF e#J.6#.g:Z#!B{yxEv%]`\L<_~&BMk:63ԗQSurfMwuӣ,٪]_QRWe$z+9"m>۸Ӗ8.o؞ȠLᵞ83bRw `I{}i: D`BÞiRF!͠gvaFH #ї CVfhepβf@guW+4rV*/}@i!4YE4_ba9GGZ) ZK ^MVR>T:WycZEy9ߙ#}p; :י7PQZ3`sg6)a Q"OvEu<`e֤B~*`5J!`#+'E}|_iLs6Oے,3ےkH dc}f@oc^*ݢ*{~"(;]3qLq<.\6:7g4=yhF?'FZ] |x9\%|UkJb?ROoT7sqI7^j>V';,L7alEh$zbX|Ypw|.u)#+ ySFO=ႭeUҗJSWXBr.)IiEma&H@H9pD_H}$P ?$?m; s=}b)|ә#`w=0=Jm)> rQ~b#)'f6◧$75ViTx(eMfz*v!q8KsGO]G_셪$)nWE6ph=tzew1*Y9=t{Xl&s `[f \OV #&Ò]vVyEֹ{ox4W;! 6tCmgW6܍ |Hf5o'@EX=]+.j 5ImAY`zLW!@L]hfT(F9p>6އ4l7br-xX|Lg" obQE3;|W68FGdAh-TLEy A9n1Hzw=UzOBalzSgT (G_;<=0R4q*8Ll|#d,MKqWrW4nNd,QRaIS~Mlw!"4cK} p 1u}0M 25ݾ~n hT'y:wh]V|vԥ<$F_d]NDd MGܤeHI Mi #d!wHzue']٨{Rz>&ҲS\ƴSHž3l\pS΍!cL/atn( l?U :MgO%Wm%wo{k$ר(ixYIPu(H:A: ys!h-&,᪡,rb|YqݛuKbMDMŖŃi4iX5ƺ? @Ruzq/ڥH^NoWm?m;^7_9n+U|$mm.,\6 wn~?ǭ8Nl(}/; nHz&0֯7hiq k 4kt:ᷕ|/}Z0%( H%7o)Jߛj$ѠwPѱZK⾡ͥRp[tsɓbAYz %s Zlv؎/>OrlffFRK捨 s\P;HEp WvWZYlrR/T×T# .8]ߤ@X]*{)o5][6-QxmM6wd 8s"k}m%vDjL!(6u$:yeb xD|Bb}b٨9T$ ~,͎)# u#yDRy-YI;'@0cH׺,qn56٢%͔o7 !_x oeFځ.$d/H/)++ M &%KԟX06-;@&3J=8sEihd~ʪ߿&n5\:H22m6BLFa%z*gH/km'IfQ.9L8d2T[qyypZq't 7ǦZ/*k!v@=A.C;П';. ~qwꗕ^#VCN;W- $*CNۣff'٥isnIeȏ-Fm Ѩ"_!eEHyʾ80L; Z$;.Y*׸5>9ouC0UoxQ_=#%^6sl-\iJw<+|:Tk}Fſ"UƵZQ wZ,;|pZ śF {jvlUF \婸h?RlW*[ɉXѨl ɀQ(;;Ԁy/4n;QW-Zl[yLdmQ*9%;H,{=B"r[jRęM"Ċ1̻ńP$8b $g3Y V̺{12:Y \iɰk0J^^^F0{uAi+a,\qiDiw̎%ѸaTl(:v0NܬN&k/zcs$v!GeDCwU;)K7r&=r# P@:4.TGzMFf\ {Yp Qya\ ۼFw,A4@F1D4BEUw_wR`6ہf@ 拐bӚ(`xUoSD-JUM7Oovuۭ?pRr$֘pT`6 /9UC!`;y70jERjQS?u% ',J2k漜0ZJFeye{sTy \WUJx^1ܳÅk^N&)JC2 Q/HM^:<CmW9;Zt5\0uw,յ2膧 (& ,! [,qZ@$yĘizUZh - + ;}fǃZ:y|CX=EBK 炽ibL{ `sېqG'91)zӛ*TmE%xi.wNpb.A>`ݲ[x&r$/pTgizpdٟθcpU6ܞResUvxh;IXrlZCo+YkM uhhPFĄB т Mъ`qvyu 3O Rcľa K2R3EՐB Np8;Pde xdkCS`ZBXTj @SV?ǗN/Q6} s)55'vg#y3dNtSs-JH%l.Ww,1@V1{̪Wç̲M= X 9ܺe4kN }fto^~ K -9}C?{9m)q#wsRY{̛ޯ,@ѻB+BeKJÊBTCo+6pbִ!Y-E2Tg2 JT7u:PD)ПPf!il|iNY"J>ʥ0Fp,y8tz;$f E>N*X^7*v^ڬ4V+VĮMVl| 'YR-lS@HD2j=9vv *sCD%\T dˎ*7^+ ۲OB߯d+C33%ڐaT~y`xUQ6|˜*1ia҄1>֝R 10,Nd kn]g`4 ҹC>#DTc" I|k[Wkׯ@auRumŗ| ZsEr4)wH+Hp h|_ƣG{naxGtneq.yB&1D]"!8B'0]?D0`]ZL | S>,|.)"]*LFH&ȐtC]Ad%\LUþj(Jeil.lO|Vq{!L#EOh5Ft~VMaע*SGwfZ XTj˕yO_dYX;o(u. ?C GǨcQV9mJLUpBcd Sc&짷GrVnRq4}-fD{q<JZKЫ33.GXb{cHҶ~8uFh!,*6BJ"b{zȵ)Ҳ"__eQԩQx(JjW}k^_ř\#OT U!| m]]rjH*MDfMĻEd{JH L#uA i{~uT Թ w!= ~VCM{ķ~>Ccs*I廕8Q;5a<B /ĻKTC !)̒3tDd{직90fЋ_U{0ZĂU(u 9#ڎ2`gEi2shCr3ɊbU6Abht|. -nwǓJiTҖH=Q2#Vo~kڎoPY,ʨFI'Y@R{V֪UZ<织*xΝ_l -+B֖H-U#yxW./OPvP ANCj{J[vtָٽ ^[)p b䠜`ђA&jȄ]Kw=pC7S|•xޏΜGjyKl;SOG-'= lϾzݼ' >+ay Kա|kRHՉ3|Gum!W? =7Gļ#w R[-3<0-qGA;FY L{jI<H u)u҆sKǑo$]٠0|jU@$'Fa uJZnh;D ,تi )y/s O;t墦 5!zi$Vmqdv6;&q0okƑ8Y Qj'2l!GO6֦*옷mėN @k tl 뫹oz L};%S@Xp,C HA'c9^ mZ1$j|#utH^)BFPrxbAxЗ @R(ྈ*DU:6bc]c jH:%}<]X:MOٍ1MPG\ sFdȩؽ3hy0܆(:Z&g֤Wߛ 6#7F_jXGP3e.Xʐ* ϟGJGdy=쇾㏪!>&cK]?]WX&G-EN 1Rg읣 '\HJ~0iG$Z3eQ`@7Kxcb ؃SVJxUu@?aioPѨ,(Le !0',#DG75nAZFus(O'L؆RDq= yցX7TYO'?XJ& D {"yvP;H`WV$ zqYM3R\`54%y7"z g`LzrpCNY s}7 =MYl5g?g0%1Zd(zڳaBGw_. UaJ4U 3/fa 6vzhv:YP#k m `uxiګȶNǩג|6|bxpM^";OlFd)"`L#͌UsF?HO}=ثA us'KPgFEvb*fXO)1E7EN]ҒՖlAdp L[3^D8&- sS%o^1AJv uĤ-fՌiyp(0c?iUVjuw3RN~ڜ$ ;.vĖQhe2ϵ ^%Ƴ4?x%D\}I5o&(vDJ(U6S؊ ۯa WE)I1h$qa( 0r(%Ut o F-Z}9YH 0'c7mFbb0z (GX*JpVy-ꔢ([wip\U:_kKAp'-#P9 !pd|$FU&܁CAN(ŊutÀ߁䏁ܪ{%fX͓L/7`GCko5t]/fFT.@w NU^vHN[\@1޵Zx0eiG)]M"#"6$^|?*  P#!)ϻ0fȃ4afr@Uvu_\RZ}NgǪqqGhee`Yr~jw?%M9`,^VPD\%7tּz^4o zG}ݺ I qQD݊L S(L2)Wg;O8͞Zu?`|­GnƓ﫚[9E {>Q#0ťW#+W^k٣J9Ol ZZE+ Uh!bD0Gݳ]?~I~1 -yd$GV Z&8~Kpx%2c6@θbUaPcg״x_,*?⣽WkM療?yv6DžAGc֩xl-Dz?DJ8ݠJ@Ѣkty*;zE 6`ݥ/Q7YU4m$T>E֖ܵzQT9( U,=TKu/Sq4b֎^V8 -|4fD,m `M|\5 2qbmSgRAmӡi~բZKP bHv&Xl/ z7sdJCs,nRKM פ a7ba fVKX_RlwI׭on! Dt#ݻd*طGbDZcb-@6 rf`&bgu*KDsâ޴EA0Cwf>$'@W1i4$,ۘ[Y*`\dϹ\X1+}NS[)=@ŀj1a7XX<4^R*gCW?C;*fKAݖt՚Odx+X¯aȱEɐ$iZ'X\3]mS)p& WqhU-/)|:ŕkYXݻ% a__:&9DOW|xQ_#QuCAzjԡ9~pnJݴ lH챱>VrBZ0cizDsu uN8q- PnWeQyף\ӺPy,Ʈq"=[ K^h1>SڥV8V*Պ]z(f {oN .?mcJG%So½)ldi[|D*V[ yHٶ-_3ܪ=9#2\tMRJf 5z!<~e&rDIl ؋| V 'wZZ9(bu~*npi!P1\iDp*E, 4#(##qֶlNȐI,߭hfzw_[ޙxWh[h ǵ# YnGP8'NZ>vvnus%lh;6`u 2_p$hՑQ, (jI{LV/; c!>kbN[,wžqI#7]CDښr+P@KV>+ a hYm ^ҋ*zIndqݏ@;`;G2 $pE晜|T@vp3ۄ|$~c(a[-ez/~4(~N^bn^Z6>B[IkN \am(-.9Rp ߔ[6hwk NޥAJ2Isl}Q*@jn>u+n}'?g@r."_,sY(ҳ̭{}8q_I H=M5Or)jQ$/_]5#/`G"I|~PyMfhy*)* szTaJlCxKR>>RFc L=Iz Z/Eo$|؆OKFS<wY޳SIsh9~bUd%97u6GcC|. OsSA:2k&SL1enΛ vC..y:sU)Yո-bk5v(<0xSߩr cZ cT.(yYSns:tOor j&Bgp&-Sf;ƞmU /_Jz9Wslϧ 1:DuK}ܚgڥ!IXCpRvzE URQoKp&NMy:Ƚ$IdpL˨,9PzG0c)"IPʽԩAqo10d6.:X?od8[4+WCZ;RsfCK<* rpNi2Wj#9{qA ҠMXѶ{LW<(C;&={bLx5̶ =6 JxDRd 4}7"va|y@[~Nx8/0TDRpmU}z{|.XhSmw>viݔ$O_,^'J~J­.&pf Y4#jdM>sIS \Fø߽[//Mda1dYXnj7/+9Ks}}Rgw u]2-1ђdE E:ؔ<%v~O!<6&`1jb_PxIM\ Ve&+ŕdz&DrK˫f(0.]༳e4XIKMԴvT?}:gM)͜G(A̍Z+|Fjp++lg_rb$3q]w@Vp8il+Dž.t@Z MҨcZǭJ^ZIƿt@#+?;Y"wKq'v?%JU|I{'akkRk_Ȼ堘ņ,l`A.;k8u1SQHl;utJٟU «}VÀqnIhêq}E^A~Z ӼbgM!+fؒCkaGS yY0 d2Dۓj0`P=WMt  IÚG\×i޲EfV'uϊf5n<gvrBY;7)~9Ru<7C֢!h̓\.hb@(_n>ѸB`Ŏޭy=+Ua0=Q?Նe IϐuYv>_c#Viw;Ay{66P{a #bg%=7[z56D3\;א\[%{a߄\ܡqj L6-*]3|Vk>x⢔dw$vV6t 1/<xۊ @csV_uCd~\]Qj,L&%GI?Au&.l.HiHt|uetm\ǑD!)cz־7ݷ6Rgo$S`R#vJsMo)Cj ƃWC7j*뢵&Gx) LhB::\tF6c{{gz"/GpgMT^JxVdC3l^-TuѲ}ڈ>׸HpTRtP5M Kϗh9Iwѯ٪hUg*-oւZ6G4|I X lѫeӾA~?F_\`oK RW'dfOwLq,+.s?3ōemS6V65I ^'q^ ɅWlLQő|W,gL c! HZvʩ=廋<»6LWn\nd+HB\oSaoX@5O_団3pRG6W4Q#M9Ϥ"s d t` {\+3¤e&!g'[q/toI V mC^lsϯMetetoУZ΂jRDu+$yr^PkŸt K"eQx1{Cg.9"_$4#w'Ufͩh"&rxI\n6:$kojˉkEd]ô>JqR|FZ="iE꡴\$fI,)R+"`%3֙ M;N{|:'.F|E!L?pF@vR8{rsEsd$ckNW *c[0͒v5~UC~zޱEǮ14pҥjZ8ht!.arm𑇊 [4`-IژGcՍn×'"ɝ8G tVz: ^ kuY2"3v_gfaKf"TDeXwVBی0Ũ_iDWtzfRoܔKs}5rvar\Vo𿛤yT/ƠvLゎtd$jbwQkH9++gnY˗`(\S(kGu6["Gd=.F2XJb665(k~T謔EX-?$=@*^©<-WaҾ+Om1Ѡv=$]vDu1zO+?jo|Һ07ɲa1'IXnz-Վ,w'D렷X*jo@R@&\ ^odTȄkNwo͏)~P.pƕ- vJFG=ERO9|q棟L4ђ2TE]n|.+`Ž=s\N,JӋ{yabHR)>#5Șɉj#b?Duʢ/cqN^%N,:#m1rФ۴5i?w6tAfFdv %,H;pVy <{&  Yl$ nM( "5/;tEOj m*nQCq(}_zF:/eXTN<(N#@荹Vb."9`* {~T0fj߯KӠo㺋d H}& QW#Bs&+_y+ ZFoDҡ≇#~߹%&&f%8𓼫MQn~ k[+<﫱ґ![-@ߟj lU#*ۥ?Ҟ%ބ A@4\cJ=V $ }g+x2^5&yx!P'^B)^ 5Я:O R 0aS娺Py{QrN(*hv@GWԬX:{)XlhcL ם" i%"sI" 8hڗtn_pfI|q[KoA6Oh쾰{罭ضK wi)rW `Û6f(=jL;:\>#{Ӎ&:Z-՟oPa40yԶLnܼtbT@ad/.Q'ЍIyu3\Q);/\iiZe*8"u,}Ru107;̲EP]RMj ɯHB@ O4?K`6՞*AB_$a{3=̓ yEf)M>X.c"9PilܺZFv/f!%30+r$>]GkUM::@/q/"_hHI$Qx> c+h峳uݺDT:C5܏2$h29iӐ{Jijceuz&wᙐ2/a!v%IͲh7t8[wDϿ6qoo|S  ?$m.]!0k;c62m= WIhb,{3k4Lm4Ddӆ[eV.w\[^^ }%:&iVK4ŏbɇwrn7TcBb6Tc "~ӝź7#A Tנl"[+9N|^{F20ßCN)]f/ t^?Tc LU 3)0hU_Ėdŧ&u8S1$[L;ӜQf2,<&LnVz*BpI0疭yᥱHiZ.I ƚ 6Nt|&:CM!xLŽZflUH"R7!(XAb2q-BL η1uB~ 5aMBZ;+Jݲmy25cf#`ݪk4M7kG]-}zAmyzVziC|-j2/NГb6Њ;!꺪Jދ}dBV3(Lh<^Ր⪇\n =VQ'^Jm,^eOTˑצ x@$o +a/VF\{Y{.|/B}7Ҧpd$ \dƩڤr^ꮬ5NhC7.]rfZI?Z| ᴥAU`ڈߕ(&`p'a&YB\ϑleVyySФ?8zXO'&0G66 /4(cAX߯[QOUUFn֒j4wfg1>OD@7= 8Cthlp'89p%{/zfУ%ju֢5B~nw|Jg9t|N)wDYE3%&_pfD (+uqX40 c|T(Wd<c zXL.YewU-G!5:^ 1EA m:-VľvcD ^$hv~):`ŽR㪚;tV^SsDD` ~+Gtc0f5dqM*ݛN~T)KBAYVs˕v=>^0= by?kg"v "kQRQ Q5eBIrq3J*({:tcz9Y֫Qb(\vj2]U:.8(rSȏA[̨&ULY<'YFIߛ}e)RI_sK LJ8rtĔ7Ԓ)"9IG2FxhT'58fM ?ֺԺy;w5}=J^9pS mj8p˼ ɐcdOsV Ey];~X*S ͵GfBB*Q(fnC\Χ ;6+R\<7P򡬎e!>-P^G8l|q@eS?<31.◵!9V::BWX_H5rtFcwX [ng=]qQ,L<@#Faq}UrrѦ!BQ( ,㢫55Њ\gS0ij K83B->$֠&e^4eF=xNuw5bȘԱlp^ ,WqDrَ4Pݯ\TކcǞQ0iqs"WD6!ux- !ӎAoNqK3M|Gxn3Gv+唕<1+iizڪSjL7]z(ZћYT"AocaN1EHj2H.5͐oƤWLaqjMj.>X]VX$¹{ 4 {"ND4#Q˂i]D;6S{CjERI[x 5r,lHEk%h/zBR W*37Š E9;VE^חW8&53 INC22;*E@y FC3ƵϰҰe-8J[VoL/rF^Sbʎ#` Ap۴:+>460x+)F}O@b9F aGhj DARmP}`θx~NgXZ _C1ۺpf_ Y +_?0̃  Dbٔj)UpXXeiH._/0҇cJWׄeTTK9o*^zR8'hLnK=ޒ:]*\UnzQQ$)z! U#,jgqQ`O%xZQlbeX߹i,S0!;4t .y鳵՝^웦i"H7h2' wR ,IEe:z*o9ܸX=/d-Vc cS &"|fMUЖ7d%9 | qruY{!@&Bp(E}mW6hNHfݔl (XXtA>Bg:RjNj~2?蹛g-&ߝBCSgWߦplEAM\{(ߡ ӱv^J%bʑ.Wc:)ycۢX |*hŋ_k,Or,>\ej6ć{td6ʣ=qғYP{KX0w0*y]0PDҢ)eI**U(J;1o1 fy044[8+؇ӵtmFkxIf>(+ud5藝4sD#i+ Q30}GfAy>ޏ3zֳ&7EOc|Y o62Cn_2|id\oϮ5,<o."`"{iࢰRt-PxFY_ Vkb#{^z'HBIpoHs,UTEL%Zxh'8uYOPqN<8lLKtu7n=qqu`%FbVVj:|ħs`rϖHWJNj+fzfcy%= @}?=VpƬ0jl]L|{x 1xgM˩0pdDuf <D4{Ց%TFgl7& ^onyJQ m / 卬t”s=YQz+fmOt u Ϗ{mHQ}xEXAT2 |v,rc9􆻙 XlDb憪z֫_@u4Pu/ @o$N)| `y] X VƕOyeZvݺ+^eeцC=*9.xRy iL~^f<@$ 1G;[)3{U75gQRϹ4؊Pt&wCP(A,δ ),Y*1Cw}H_dfN-mNn\agnj,iE_htkQ"qPiFpH: l!X 4f',*tj*/$k폎C9Up`7]ޑۓUӽHլE\RI.L.¬K& \ܾ|Ql s ,OM J#pr9W,#ܔSy̝6 Ŧ+?,Vs 0~mߜby@!v5[[V1i![oiǢ£ tx;~ \f=R,`vS93IÞ2yS>a_B$q16d%#9<nYR V8"U-槂 |BzR(hvZ+z< x8z.JSb9ˁK~hvpN|-SFxP#^9Qa <0(|R^jAjl1d–yӏh.ltG(71&[U%B3*3UTƿ9x)v)bYt Q$r,]}%IX'f;ٖ=531R 9$Tפ9Y@'R^;?>}C+>(ٵڒ?bقt+* [gq%CB\ƘZ~4,)wSz|R#(|սZ^_+e j^Sp:uSa>(w%h"^ӡYQG,C]iݦE/KIƓ7*N"A?1~|3a]ڣOS`twsJ բɦ 넃/1ntbVzg}+ѿ[EuqmDHrbT@RSRPO*i8YƚG )ZXPw1\_Q߈ s}1U< (peOz(츽8 arBG^JAtS9+ᩛ :N}CsɡRLo-}$-[1%L׾L5iM117dl\N?ZR0  C~Vfi)/6`== Nz~xJ,.!bPr Zy7eϑ & e.w'ev!"L; gւ+/#$ >b4 rrrSg"%& G]AvAr]%ۅfpz!@`%mkGԑ19s4 YA"-\/U G σ Xi_h$ *\*~7$| h}%PcPDN5D&(S({*ύdTP58L}b)O>;ez~B VH 9]b}"+V5X_˟oc $ָ^B+*U'z N1^ du"my'Ed)TŇ'SITbgo6볎x|@kL9.CZR(Ʃ4ж~2{,f8\ZDs eK(vۀӥ?C[-p,Q/lTr<-KFof*{<+x^fcxf_CqapΜuH"Ts/j;#/ʲJh#j0)X;c܋AInSO80سhd$~6ES8VPSDYKzrZ+&d% %5+L iZD-e_[xfn?2`b3PSR$FeKCE&LX(ۇI÷ru4cC6,y.\U_BsFrɝeiPk8v(eΧ=j%ق=z}r4\>>YhC4m&*-x5jjg頣-yu8b)T^uOԽZh?Tk0Օ]1jAH0J;8[EԖZ@#s.DFQ ?‹D][JT='g#I96aBhpA]Ls1Jwrv`̂.gϑUܩ1(odQև.VR,qEe+fVf9i-#J* bT>}ia8س;f>ТgL1c\,|j6x d Ec=Ӷ Xu0A.)N g'fldde)wLyes537W# _׶o=<(sQ2l%:9c2)Qͷ?'5gIb jJڅ&pZ z~u}][#=ߕYЄKQ(>Ma-;_Dnf . sXt^JN9.{U xvԋxmp _o)ۇ.%aGJf'fRͥQ*fTJ%PXd*ѳSɓЧ& PyZn[\#BZUz)3p#vc.#OVnWe T׆c#0]i5E|PfgLA )r}%_{e/Ixsbm ! ⺲q,XIkVCHZ;v<Y݊3I4R#A9ƅӓ~=IJӷcW_m q1cS;eTfs4U)^T ݘTL nʔ9;yα}sJ(Qom3gn"Sn\{ pr_NdtIbRنfM%7:qmSBZSyZ*F+ESf3VL~eCzJR &jd{a ^:Ib㡻`>\r% Ɠ'YH7%Ϩ'O1Ai(W,D[ #i^F\p7.ێPޠco]d$ÖN"T忲x>޸ ^r DwF~X.fĘR;e/<)XrJL0Ik7EFznٚiwΪeQlZ'@*jc,J1LśrX4(9KtV)$@t %xm8̠;#1Ut$~{7^^o7 i6mBд,DbEGHun/,:'%jbQHr$;+u;`*eLk{hVۥtxLW.L ݮαŴ9@QUO6ϣ‘h%~sЈ_C/fPpͨ22NP )$-/ !%uf-+_30Tn9.DC2\]ܓ⫭!HݭP<+a°ZAf{pvZhlH {{IwC~dh9e (3 !ذޘ$޿~gda] ^>9dViM_!4p`sO5\k?wPGk0.eSP@X?$zٯ=-R΂iROՈs;*iל{qM27!i,ZDd&T؟Jy"4# F^Yl[y@9sy9&y@QcIy(wo"Y1{`N]Ȅ,TAGI] ZǵU 8|U@}X(mk{ats˩f:Cuh|hWv:PF?_[{ArcLEV`'H+56JE&etTReX* F2ĵj, 墄 fTG5W472n:0Ah@D#7q0#H"1w#isz`"T0Al?ܠ'J6͍> ۇ)żc;є13.}5/}QqTn*nd\t~%DoԔ>@Q-`MpET`~4KNkWܨ7D`Bףr'&YkH+ڎ!_4lϙ)6̥KiaH7M/Wtc5#<*nsGoN "v}-;vUX],s굁M1{2^SQ]l.ĩ.FH Р'Qe|՗\/TL'me1;5 6"LP>IqOiU_wz2s$V/X|wx#v>^F < SJOvVzT;{55 ojU3 w: MGe9Ƹr.QLsQc iⰻs-Md2}P`E "N&XDf)cG2Tg ckqIҡQ88Uuvvs-ThZ; dp(.a:1l:B&OPmIYkɻU07BF Y7$J;ㄉ 6 %[rc8pP|J+9h4sχ9RXcЗ P2q(xgn0\C:kج4/Тw/LpŎ | ,h4'@kP.m21>rrU,Av N9exQJD.릒7OyAaDӳ)Ӽ^"[˕Ӂ]1a\zhA{?U ئ J8VL%& ᳁}u4RL-2:(M;kaF 8oIc C!Qd]4ڑ!ag^DA9JʣӆZ2{<`3So;$؝)\g׵4LݔMn od}ׂ$Jx`ui\Nվ #d(pVpM3${@aҾzq cuYiaܮG#y 7eKCS=Z)O"b60Zg!Axhr<,A7|d6\܃\1R}0$a&m[wybƧϐ~nvxia|,XdN 5VB'yD3{>* M5t3!iҁ톑"ZpJ PGRɈ5"nl!Dܠ[?le[5Κx%0}L|.$q e_h]3I؄9_>ħRr=/o. QYQɃ8x3IB#: 7Zm7MR}2wzra02-*B#S>ܾdܓi&yl4`Bn/ O֯`CWEsrlcD,5V.mQ~l[Y}1Q9\j 5G>kǽ:eՉ|;ae"c7H@)MaݔUȢΉNbSl5HȓhNxo) 4&`/JedbW%/|:3䗺2杒}&;+59^s4hkR% kݮH0ŝ%8 PTQ'6Z1η>,j&H5MHvz/Yգö TLmGiBJ4{4sI['P:;]Y M%> ˌ(Mc ʿ'ۙ*ji/6eSh8QrR('4j9z9sS6cve،irWtR`#f_œAIqglqRӉ&|/ܯv_R@U%C=&.!UY.7"pd!'Z#py~/g.eCCë أ&[km*n!y$"m$rɵ,4 .lNwVڤ"׸BNvŝ49;(K71E$q#hYN=feʏ2.[1ĉm >,Փo} }ti~^炿vjB Y'~՞J8< T3: ~b `W g{z@//lU_"O7Ka"v G>6P|u:^+)6pBVGYN3 74V%PkHiLS^s,A US ?fHأm)g$ܒso\R=0:*lL{4-rvc0AG&W+h 7Ue*LGd+ Ytc07@TY^8Agu6V~Wzא.F騐GSCBD頀_m`' Ŗq3 f zR m^;p$hnsU\+\x ]_7ܱOJ̼dbtl -HQk`!*])y'(&+򃳪fL*SҋR\kԷTd!ܒ4 Qtzn֬Vqv)=_㦋Qv^bپ՜2qt&w7T{c s2->4^@e敕o(sMO|adRV3@m"!4ĉ},c R'BJY2d":męƏ3: ׌9%yUi#(-5$ >Obm[ӵfcVWQ{~M ,_e+'UYʸ<#?q6{#*?ugI΍GA5HYSA@$㏯CUaic ٲQNlÄJ@CPm8W<(6;pA. ݶߡE}{|Dn Gwv?JхD$F$=XEO.`IeyLٖ9l o<,ꆍZA ҉GeuA~MҬ{1t}(dpn</%( ^-`$WQ?+ܽCUC #ycۏj̭/ #L҇C5mOe;˱8W'~(v]r| Yl$N=YkV ?Յ)Mޔ +`.!TD ֡#Z#xHA޸gygbnλW2*їb/obi֪S1JDJWZ|$dn{Gn;\F5#6^:5g4Ebv}?3\/SS]XX6 8H:NxDW*($r_J6Ε-V/n{F|\/#q6 ]ؒ)|fEnk+heb;r&>pn멉„w4kwZZaL`ǔWZ$QŔ~QO j mjpd'ݎ[/'G;[ЎNG16*Pg qXEDj\ e'G#UOҩXN]G1=u0ҿwlaxnN K5`UIx 26kngz<$S2d렯.nntJe{_'l/6|DtKxv.)فc*o,*UV>: Fj #T{G_ySݟ)p ?h M7Ge~S tr3"U0w]7Z ש xC"O]ۿN՟;W5*έ''xO dZfU!٬\)bAG*AVrJYǰS$WfE1Sҗ?R8@@«XN@ygtdl<.+ Y6!RHSYtMH>$0f%2 @&o_bLNYЈ%чH.o/y4',8A'f{=cD.͕%;e_qaTyn@I=/uq-q 'ij2xEa,jJWu+4kbꋫ@JH6b,G#dɰSwA'8d7VhZje/ILarY#bQ*|++S_!'|'5f w|~ O**-ܷnx>T&T`Tz90] P61CzƋP񁋋H!ꞵN0e˥:@ZO aAWX== WT΍)1M@ŝM!~W}_Se΍5uU{W#b_n@$wdͮC!޸^ 1L\kM>3Vx90mJ߆o-N94]/n>y.2dxN'WN,-(ч !`Hў5AdФ΃0P@S>}Pykqqf;&ԡ^CVEՇZ"ģY&5|Kj_TG~m*\ 0/5+ڏBGͭ{X>'6Z߅5aSK6)wkU$\JL%e|GͰW{,6F4;u][)ƉQvlXZ*Va֤􌓕q-UC7EE-nx~{gxIl3"֬1io(d̒Kn1GDe)؆yѧa?Kd WۆZ`Z f 0]hܪ3$/x `Qْh9+Ìcku-<*u?4rݖtL(XEn];U*'jr ̧ lEe5 ђ\+4uhlݨb0j6l%˷j(ZKt:!ޟ6itQd8Ȅ|`=?p3EeskifTAs)l y*i$?Lcb5K/r j.ÁJuvRZw3ǝ{O.) T3ﴔmO:PT a/UbXI]x:'F/[SsoD Jӌmgڏ/ǓxeJ:K}֖WޗH.^A4!dK-^> AR 롼 j E`z}St^{UlsBqN$4&?.WJz6p×T=_(2P̐$ϡi\-{rҲA5]5U2n,#ꃫJC>}w]Nxn;҃~Z5.ߐ=SIA7RD]jHV-AMĭ+I:i_T9G^f;*hލ;7"YoGߎeũU"4H&^PYs@ Pi)كw&/oaqs 3U^5esq!pYw4p\n1Ej(FR9!<_!u),)V4KtlF{]{Xk>^ ԙOq#L%85ǔboUԞy5[4ȥ"Ϲ%)u\Xgt -@OÅ,6vD> eUOlÄ]-_TP~SE(%8q!8[ ~hfJukDO $ >T GImt+ +w6*Eݱ\d=6 ؒcH&t6 [45NZ_KҌahtC|1\ϜehV19H.Q1KnF^;>7e>ːbև1bՓn2b8ft鄥;+gTp nɔ?1giHc嘽A؈c2z`{]y)n2Tӭ`VVF`h Zr&uo1J.wgg)ᶋneOq)4)}޽*I|OKݾ,6ۈxqp@2+\ِKBgQ!IO׎] ى(2{O,&սdJH[]EQamW`Z5{L;+z NKnT o{ JΘG&n{D##_u”艽f]MR9ac $r5:J5VLG{[nN Y'Y)ols{aqLZjdz g6)\usm;45T>QV9z&eI5Y]/9BEkg.mBh9!\ j[?;$Tٗ'ki!)|FEhU=R2@ ɸmv--^U3{w2yS?}e,[gNq_c%n/i`##:""狺]qzE'1tɴ&a k2%A!9BELVEWħr숭 !έެ0ȳ>xC3ӻӀϫLd1Ey_K5' Ox?/t8fw19SLWX|>E?|\bTP8]Ec@4jƹʏR$3qꦜiN ˳LRϲ iwB*%L#-A)+v,kpfΞ 1E@*B(?Y|N3A|hU.O5 9 Af\+z+\|ջ r2233׶[]Fa5J[#[.0hH:5Caz3Vv`%C:x]}UXgcPv2U7 ͺ2ֽÂV!E<φ/(c۷i!F_Ȅ5hQN*ao3"vi/fm<I2 xLY˶MPd ֢W6S-|f=O/IJ1\i2G΅,U̙`F伬\Rlf^^$5UVt|;KF$CLC > I\{K4:lKMc6T7cEҫKM~롅Ov kA,k02. QsMf/wJØ]OKa&w&K/]|}1剹،qdɄ&k?}"~#+9j@[&JvM̄n ~ZxX1N@џc NʧQT5k W?)3t  )j,>dJQvyI C1YV8=W LqX0鷺6VU^}K1#1/q%,u༌‹#eUCTl?-.Eܪs2UzI^Q/Y/s>t02)^:\r⹉1#r!l,L-1!c[pg¤'i ay`bʣŵDǖkZĤ.m<)M&zKA cl}ffE`^lNk`꘳J BP(iʠҟ/(R>Ш=?{xgh~oIu*.gNS?U@%6 qqˏDh )/z4{PiQU5IE%y0 gF9gOaѮĶ"l r&.3ix!X<0ŚnBT8)~;d}Mȑ/RVUF$uteb]jl;}/ސGȁ)QW6uQ1p.2QG`E'b2&QnEl4&O9Z)hxKIҌucu> >uwet~iގH sz> 8)f\bC6ŕʺJgjU5,c ' ӭubįOB:uVT7H]0x.:G2!;x$P1ѼlX<Ᏻu/ 5RĽ],Yă1-;ob=EU1-+6 .H8"9SHƸl@]uZG窷G4&ڶ)К7'7is0Q vGD{dAm)cщxQHGUge*Ư& 1՝;ܦwFMn,sz(?4~7A 6UٷCQ~FT 9fW!} gw7LsGG,/ 鋥2yd~дmSCov3;S}gZz֩I·-ue[`?͐˫\>c,a74u,h6SffWB^r~(DAo@lDn«^pgĢy'(i4۟9+0 ٵu@ɨ\q_Ml~)F5<>&N qmiqRXA]t_'A;b"0}<$Igԓ6 F"~u[E^=B h١A1J>}9Kz2&p"&kKVi|O"2mr1۵ӫ^(?m #KY L(/Alj.8C#ߥ'i5  ]lt=fc$WWҿA=w|VR5aI5-oχʙS j d%X3NmtH PhV).[ ҚjuffE%-."J70 NT3u@9DibPץtJQٛz^] :LaA84C蟽l0q ͒Kf;RRvRHW.]C.OGHNk1*mr0۟a钟m-զZ( 諰#zOYW ?X˹d@vSREy޹6 c!}$IYϝd&IMc6(; ΅ b>2+ȧ^oAkuݹTfvp4OEQI4~)BÏ7CX.҇~bLyef]ΑEOJm/gA{O^/S䣪Neez5,>Dt):IX9v@̑a([P 8[CdufڦuoD¿99a te|/ٝ)^}b3xQEt^Z@ pQÁq2PqAto^WSpdOc1׉>"J>^Y(ҖI=3fPs:(ɳ'Vn^_ ةN5,2 x%v0eU޿ٍ7+bޝt yb<|jP>S߉[rNwg OIxUd4b IaJpM:7;U#9UJCo>-T߄3٬7&~ڊt<"04]c.a(爺8ВQSkIKvOb|}礢;Ȓ$gZglhfO+F㚆G9ЯX'|ǀ:ckNK-"[mK\w>?3aVE aeX&B[Pƙ!h]PM,@Yp$~ܬ I LĞUi]jwz2c_.[C2"p ~ໝ^!>Q;֎ϥD *3V~g0`-ZWZIj aFʷ6`UtD*r?K47Q9h>aZn[/k[ms4rU@~BC3; 0Y5-SgNd4iLdyHC1Ґ]\e0e3$[ iІ'[3ƖIWdyY'sBuےb.4GQoh)nWHNTU'j{<'Bzq=LJ% pŤp3JmEyf&rJ/zo<*(Y<;h "uCJ?2źGOH}Sg* #_qV./=&8쵟Y-4D( Vzy/EHF>;#$<W33r|/5zԎF&0]Ju^ځ=4 һ .1q?䔁V$}*H+Oq*f ,B{Nϵ4KKkǝ&"!'}b1|sck5)L o .o@|_,m//?^Z[M v$: aT\9O<.I8s, YK h$nz*BP/lvXKPg!0?Qwن.e~Q I{x?It$,)H */++܏kptS]Ќؾ5Rʳ&6UX]%q}`xݑʆ qijd-ÏMߗx poE5;֯`.d,;l'!1s2cj__܉a;4$m*7ɖEqCxUg"c RgOO}Qbj.ʝ> LbL%YDh8aٹD9i$7@h nql5uKߚZ֨˶9Fzׅ)J 6:+L Ӗxs?Z?oXo|'^ؓO:JQGv1a AbX"No^ &puqa#:W 2t6d!-V/ ZF鳾d2Ƣ8D%#F3TNUkih^C@Auͱ 2Iߺ{W_7dvCDMX-|/)wW`j|XE4ۑiR+"9!$q{bJ,]DV+\ ] Ԓ:.5 6 LU h[ȅ%<4LEzw>tlxz~ <ת&]pϚ2R0[қ-wMX}CY8jŧ6C[ŻJzDc\cy#;ͳmj!E ހ<ǐo<a%Ǵu:P]/$W+"7(@/tDH۱Y/??o1(,jT GF*t\M0^0g0~3 S1B* } |C~ Nӝ4ǛEx͈,n̶_Aq:3 arDz͐]ar82[$ v?D7?غQ <>xr^߻>=T]ʓS̽5J KS/0螖yr|v\Վ5~-S'#<0=NYJ$lF8#R:[O2 e][G'Q%f \sRVzdfaڂ) x%=7s7AOبΌ~S{.,g9]l;$S V"=}T۾C-"{B @tƒz'k](y ƁWg=d'`Y؅af3l?`n>3+yj!Q drWMW {=Z *1'^(ɇ򅲪/vP:Q9Gjz@Vf 1=|Kq s/T#(`5pK (PcIX:gǽUrnvx;w?DwDc(v KxԿ۝ʝ~tA^WGsa/۲L3c68(45F H3q4= 'Hm_؇CJ]r5dijnOdşDkΧd՘6! 7\uef.R 04n8(#*~R&NdI% i00[?A6&nXD8bCRw6ToX{BkʥZoص"yzeJM}v @7;a׮X&s"+xR\Jh/r'9= ]bjл\;\}Wü:s2*h^ vpE3wW{f sH|Xɗȴ"m2G)2|-"YW ;{]Tٴ4$Q\?R;CC(9"or#CzP6L4"jjmyht)P!j%KOyH5A&@JdD xZ/X:wN$7{@dNK*['O o]C[- t98:8%,%1H?p墊Q47 `0Wnc#MөMrNw(lg^.ygS8GlrѽǾӡb%c*sW ^\@{n0,#;c̬pu>%8w]uAMf3|~ O,RL?#=c,7N#ݣ>IU%ާ.,u8qq6TE9fd)qg*o)OA}&Q=N.|{jX!d\b]$2?SѲ J%uU: zTV?Ape46).[>myAS,\O4< *A7) `a~3}T9&JL/ >v~gIh@dubyK709)wC.T-+ =KL:l(6Oo?Z ê1|d'vyQ-9-Y:Tg 1X7,,GHpgf@we"Lr1K޻r+ l4]ٱ_@NiHqb\vs&"3<eL?Ȧ.(je v]<ޖEzv |$a|;Bd(z&YB&,-;:r\z1xL0Z4Fxp!f(~TJQO=Ʈ̟bIƯ!^*)[ؙ B/IEMuв4~ٝ>*FfFH)EҎw4=!o\ ٠h)+:|WMkry~3Be52>49S +'E;x6 ^v@:VwuӍ'%Vd;xG s8]!SCvOyy0Usvt;Yy@_[rPi,G_EySx o:Bb8fR I"[>9&"n¶t?!-l=]/PZk|T̉2Ӧw .D\03'†Hό;WxsC&%;Ue,e0k|VhߦC^>zlt>?t'zjY}%NhoaHT.BL":[M]gfH0 C@ *Rg9xzd 츞̼F2§U,=a2+Ḻx.A՟a#} S07Ů.v4Li3\F7G('"@Na`({diuF郸E_5"E5qolZTb|ߐΖbkagAgO/ g)6xpH4Z%X֜4=p5Z>jA4>^K9lmٺ'If; FɒYu΋E~kZyzߥ柗Oʞ5DrsͰol+]0N݋>^uwI[겎8<ۄGz[D\c2z-'b7 5ujE9|<&ENzħT(.J 8 6%O5|*ҳ1 ŚABvi#H*Hf G$y%LE7RS,Ye:1\a8:q0r0)FŜ> u=0?'G'߱ܨh@ ҦyRp{%峾IÄyA6<1TW 5 񮺠 AtZmgK!Oѥpl7%OQr<[=@p@,ں&}9?tx"[`gP.IcKO(|xWFsMe ?-u~ܥob( X׬i3k˺8e'->_LēK`-tFN SENjv%HxA)${ 1yTä?bı8nDK+U-4Ѳ\X跰*1@Ėr'zXM. LsuI{ c˛̐ᡤgft6gO<~[;-g@k;2-یt\U| L#8;;d:>ըG "Ga*ұ:<b}}PKWCSK'-0䌼^!󸕾EFN^156.p])[[P gkspd]:/e cC ?U27@UTß̠4uFJh؞j&kLҸ[ 5k#@l+>O)j6=KnUſY@"tL&AP)=@;D{>>[ʂz{M|WU`ܷe/kG㚞Wh7=G'eM⾹s>t:/ Nc_-#Vp%\*!:+9+zwJlS_VlirV"DAT2f,ZuA2rrhdyrVL3q'.~'Bpր +y{ďhF]C&b}ki ,JKC"VvQLHF:A{ZQDD`AINn:|e븆=Ҡ|]92vvoCNUj.3qJrKZq]mrlQZKcql*6qE,.U5NkuȋxvVNhVNW#iLBnj?Cn;Ur$pc?J߅@bl ޹GMQ[!-|\]xNP38Рn=QXOnܢ=Rj*5I f`\B9B#EjA&id(]ć ar{gQlKJs>nrn2U8ȁpŎU:$\,ȸn/󔡟} ik 8<6p }X͂ |UZaSUB섖f{-R 6Y£5tx#$hy9iʹ0;:<>EO/D 4]#^&x>ۋs*_̆ȞTN*-5yơIB8a}X%`2 ė(z P),(ާoeeVQgϿ},fD_>rJ/}#oP2gY{|ЊNv5WxOC#Rp9]hȷӼ-epW+Lv[Ӓ*K uk/RP?]~^_h뇌PۍR9 `D0.lfC/mT+y jUIq'%r#NQm)]Ꙅc>K<,b)(/4I~O tI @sU{-ޙ[7#ʉᛎc׻gW7R|P]WjR{A%[Ró5: };˒J&2Ȃ#5Ɵr-dQF]Q4૛V2@Qh*;Hp+׏c$/ty*8::IxԉdI]nnɠ! $Eɼy1k1Lu1bԲU^9Ba~Åxg!UpeYˆzߩ3Y1E|ʼn;Fjcxܳ hcQ݂RMFTN Yiw}8W&1U*oP>_'GcGoa jlb&S(,WFqryw`fUzc eLm\) hU@?iE>, wAr-gZxs;딑r,lrzrAygj~@Ư;gh>B+7WeԹ@<{OW# [/#0FFw":/Y &!G|ڗ@o TVPIꁂ{/.W*^f=aolãyH ͡}۩@jsd ,0ǀ?y-ja4B;s&(ĝvRv#+w`S%O~p}TO~A_ k}rt*e7[}1PQSY 1U.1_TIYjjD݆!`7?Dc"b]!j? SeN#5"=t* ng콨[tmtN{5"_Z3X<S~nX+:XruRBk /Hwg36uб) cЭ#8. vS@#`xL=]TP Ju_]e < =դl\viYd%cJ& 1Bqޡ?>:lIrr,bwr>ޢTbkKj9/W#gSCB!ZYuK_J~kB}j8`#1DEE5 !) &*Do61 ׼&@ëEX`\Q^߃.ŠbvQUr00HjNIyVX *yas>WХ zI߾g/E4归{V-t߶֗/|W@x #N˴꼍moQ;abE4tMnR"SXY&t_'F*rl‚eZGQ%A o΅R2{ma 97F|8Y G!l㗑y> w e+#$ms hGW9~2]ݱn:3Ѱm9ejJGQ0Ym&1/#Oy}Ij]'a=T[A6(3ڻv&ψܘ4włKT ]#{o 7mO ğTԉ7_FzEF1~M,#^KVV#_ Exǭu8cG#AP<;;GF˲қWl)x2TÖ́vtQ,S upM\YUFVC^BuA"|rF+RJQRb $f^ə)sc&ꪲ0anxEY"(0ǙMWƕ1{˅7˫0Gs1Z$DV!*@P\6䕴6mzqbu8WKO[3-$OTo_r5cH1*:T!qD .VJaT, 896kL?(D%S<6lX}6#KCY 9C4̈G ,4\VKd ]9F{ oqaYMQQlmpx HlH}7Gme9Ii]jhṐ>K 0_Զ cPoS0o+|+OeJKE/I "+vUJ kySOn:9Zo3yzx T)pt ;X6 7[oZl2b_?-cfo3νP0qPu` !>c8uT<_gC00ut P3N~> m^Y j^3^i󠄢Ŝ lhvGwe6IMQ3_d:nmmy1mFg^o.9kSPͶ  */.tGNBuPC/֔>㙯Y>D de|j)̡V;J/=_ kWRdV%dpcؗ4;H7Ztꌀ5 tg~0OCbFSۼ` ;p ?@fS!nP eTc=JLx ZI#[p1ocDoYE6ĞBCXةIXNHnPT = w  *LB,5?sRMaRoXKOnX3@+|-}orf[ }IlWZ}7+Zt-UF?PtK[㏛lC> n:Mcn mΘatPcOgI)'=2hq͋D?h!Wc=+p4U+l)Ủ y,m 8,(n7pωb'%( y40&@ȑuEnw?y gР9;Q]GBKN-OylB9nl=.~UP{b7`%.:äLg⩸KIv~ [g^,QQhwJqkN}F8?N&"c UP,KG;3f]K'` A%.}#ˣ)-m.рz?_wV@`׺`9l ϫr-z oۦu+!>n` -gI qT_CyT{ܸ؛.tU {n&v=p+spÖ?ײ+DI҈gHstY#?GSjN%j? GW)@&ǎbM}68iFml8ॼC&^,qDv9$t7HC+D>"FlY4-߰\9\yus-ub<.wUUbY f|6IeGZ2CGa >c\ޘgW]v0෺;|=%'9ov/mTmWPk!1&2EVlCw(@wHk:y+3m\&҈ NҀsӠF_{e1lүXFLcdAM|8]KK$R- {I {ګwƛ 厗 >_.ю)QC1֬ĵf &@k팒Y'mg0o)xv͇ODBXAn5"mWbDz_nzօ` n^ŷۿvPƄ  |qx%jp^omn]u C3aNLrFդeqVX<%*'_ގm7!pSh/d`vFrՌ#,!m꺎f3h&a2.s å= qlFtNdy򧼶Z8suR#vCc^Ee(#Mc-K=''큚L*?'j4x;Jss"I>3@㙌GzT]wQx'BDxci ZBG *{sq@:'YW)[/QW#~DP Q*,' O"+Km*zOн<0[{YvbeMЅxTƣRB3'I6́6FSDis4;yhHB7ϔk5Xm/PD.7 V8UV*"7g=HϨsjP*Kz6>EMkH" !SiQ&Ggڣ2J.Q`c(dŞYɦPV"f.Ao/۔6jkRH; )+D`ӱm,d]\-axip3U*T<.SsROeOZd/8(zyxZL3n/ *Qrl ~T $Erz}Xj8; ?V*ufjSi3Nө2bk\r>!T|_luy a DҨ6cY]%R2gٝB{ OIkOt=ջ ^?zw+ 9<47a,CvnG;%9v(v(kvLA.Ǭ}r&?Amc}h38s Ab%3\ɸTGHf/'G īzI/vO[F#H* #v4VM=;$1hK'[}_EWo2RPP'9A1^}(;IˡI{)x9"ܧtgfF`Ĩ{Ε=F$ ƻ@i>9-,âzPOܐRh^ $Ue'D*Rz}LmS3}l92g9U-:s}f\ng&ɌS q4O콕Ss1!yUz~Rrds!ZcD]+w9⚀6rܜ _R[6P @xh{1Y脗t_[apw9J^Ԗ@ FTnq5׆탔kT3hCy^7`Q^s!>D J5ErO]f$eW+QVD_e&WV|4 uj ыF'Zܥܗ^:8%IJg fTsfv&W>.54Ȝ!fX`V93lQmҾn$gHN1Wfrvq TvkKoҿQB@z qÝN>.~dmA56LsUmpH Dl)A %gX6q9S,7V(g>AzODycD`߬I3l$ӯw-(.6F0$^~Q8}S#yfm>sSW⮔?|qbH שŪl٘HY5aɒtS4٣CB_xiö Dxݷ܆E"b4PoZiN1 ӧ-O"]wj8)4$/OSojX‚t+ X P iDfY`zFdo>ـ!0r\˟En e~"V!3i}iiqI`22` r-=EwP07n7[8>.4{3G2Z~ĂT ʹVUl(Y=؍T&>0MWGv].<4#8@@cyoeqFሄuꩶBS3ZOԓrjg}=eY\cVa-E$H!<ҌCgRԺ0C_(ʴ.VH]L9 E* C-gW{/@}^{F뼞+ &kc쨣Y;]Oms/E"+%v~ׂtِbl :vXdÏ ?8o g#[-7娾'?xq{݆6nсX܁-V1s]MKD紼\}^h4z:M1֏mky8 ~~TzLqIނӜnIfuhr)k^}³v̉?|Zw)Zaf|Yf Fo?i.W7mAܳjNnn8nzFSn)ѮۼR +U (a9ߜK.b. ,hu@6_M.^i5d=Ku3#IHoZٮw]1 Ә¦9j1%mJR1^.HMqli?VC.xs{?M䧝EfT=x.2@.~SHM`>Cr1ln!׉i:aa7st" _SsRW#YM[[ 7w: j77jcNןߵ`|6Dn2M1jEі""@Ogx'z)zܯ6eh/ϻuܵyRSLnksaKLY0-tf%mވg;o[C;嗖.*=b&O+HR{,{ |O'T|aȤܸJF#ϔ7 *N:lN.4+).WD:"nw’9YSt}DבOE_F])pZ]^ g;Z R@1 &h|Yᥜ /d޹J 1;G%:*-)2&c驋ژx{8vق3fWyaĄϸtoTow^T_ ߖmh)yx_/YS޳\?OCL= gjdz;d_<υO_6W*U  V|ԕ_-%WA=*1ucﺕRTb :ӣɌ^b1?HoKw|1 W(g^Bi~-bqK=HNqzA 6穂d(n-z+lT1 LUz%{>mc.Kf]vn8(V?4GpkA8y|Uҝ-q$F Ӭ6k:1:@@uL9LHF/UQ(y hyۗ%j&ڹR, dR2DiPyp@y( XwdGv _Mj`ҕٜLSZ2ʠRfU.M5%?kSJQTf#.w@K;"T/Eu?fdI&hS`ǽq6oᘢKu:2*t+h5!IZ>~j-?]@)1wh}mҔTз^V7T!Ch0.V`cYrp }rVH.dplH(~-8}"p֦#[ަT&~ٿ N#uP@gQ> ]r_bD>И9Լ:^NShVç4cN&|BFJ?sIIt\Q0AjfYn0`9[yİQJrfQowii~E4cv٨떡 ~5W-ڙ5Q s]A9橗yzi+#'}9ExM|,(>_ XA/y+%)5Ɩ1nj!e'2{$;MON҇ͣ͜ .* ߱ mFRx x`W.I,?Vn`fz=0ߕ U~ Bdؕ6mǚ^mu/T\6oH$U&aZm&LđΑd w$x ҠD|w] /e:;yF`xuڅbS_ś83ɯѲn9-KR[n; ~PL"~+޻T'"'L@*<&_GA9zց˜wB6A&)7Qɉ?ou[ ?o>Ak^{G<ֳszj8b6 UW l|?93t 4x:ueצ䑭}L̊FMoc4 h8>ͻMB.\-Hj~j'/`ͅ=tJ.UD,jJ,A\8q1vu]+iH*OVYDEg [vBRVelвyOʛ~BW]=ŏK(5A"R4K6q=eoqR'g dE?rd5+vAŒeVH m?xL+1;IsTCB$ -|>= .[_|g5Bk(5>ȋ [}=TnR"%t 2?<pW4h8"[ µ۰ +毙w1*Ɇ~YƜ2S\+ՅRv͇ΏX#Aي@ePv^SGԠE7fڐԁ^MPW'[ GUUTD_ JAZ^o͓=t]łF]#†t@p516+b?;B[dF|Ϻqq"!/j["{iBbxŐIl0sEK]ΐJ51X:7&̓2ftE}N }S, "7 [NUFZ|RysP0/v sUhV|e @UGG7"P灅@}r&̐Aۨ,@M5Kҹ#8Re{wk:R:y.qwJ˶H@$OR]ZmF؞zЙ_PE VGj==+q Κh:AkX3t9Ԧ;ɛ[3-jb/(/zfwR}k:Τ ED@'Q@ Z|ZS/35 o^+5>&K tC*#;u#hdb9m38B [  mRqߔ יt.J:eUL@&> ڗ>c*3׊d-/јy灉_z[UC3h.Q"S7>TY_~>X7CbY58ԭgA ҊBT,HU$b At7Me/,TٯJL): ݉/wt)g;6.񨓐앿&0]a1?$NrB ax<*YCs`;}Eԏ@7d,e"~qv?(PYX}T凨[۵JsWnRDߒB)8Pbk{ly tښ2`*M7hMaTvzMcݬt>WM@|jT 9ġawRq(ɝ60c0(=gTғS|~> +ϓ~HRp!R 5B IˋdUowbIzRV40>-hLy3Pa%|"ġI7#֞Ÿ"nF39f T} /Ts7t*\p-]K;D7u| 3!gҪnJQ K.Jm%9eg66 \X~`k BBGW e(Z7G:(Mz*IM| +l@9SǗ 3Z$w IN5&A7fT@ZlFBg%5pTpI>ah޻E*{ %F͗|Y=˷@kٟ>AF @E?oqqnPA6kʥgӚַi>(xȴC;w<4rb(*i16(D-R mKB짒#Gɝ CR)YՅR1GN) ;M}:14bUW 9g]O_'IO<~q2j@jS0@*cT(ǔ`D!AJ!pN`jqƕA/ C6GbW|k,)k2F#B| (CqH \5Щvg$.TA`:an;@ݞp!1=>g^`!Swoh;XO6.A3TeXmb K#*W5jS:7dy6clczHn$e1֛lT<d+ڢ h+k7Kb>(akl)jVݽ_e\vg4#EvMˆQ/'vqZniD-MXS"݊w=5P ׬m94e(` ²b/ |0hꎃr{3(ۖ oE聴Ach_ۀC6899C*dHC_Nc_}'(M ߕ_Tf )?.+EeUf$a۾+;Bj{l'X# \8e5ߟzk@Iن_ ɐĨt54QXswvTq}^qcUmӕ~;~.*rv S@2r'fȴ{8IM8Q;8n$t4{!"%A6,#vGz5'&x[$\?K /ML1ۚG]Ĝ5͵XfsM _2(c s޻`/ve9Mtm0&uC) +`QO#(T27~-p{0ʄ` Ƴ =^#(5D_9ʲu%WdDE!.tK f>%&(\;|L_yuNXt{o&='@ '=|j3HksHhxڃ?:%=NOt?0ZHQܶ:y-vg 0/10FI4 =#Vjo H8w]/N<5z^|1-204#F?<ݽN#s,"YLlRژ*AG <\S~wOQ}m`:NJlKvMpƿIvD9Hf:ъ6GcVT YeUޛurt ܯqߐk;'GU^L8|#4=毴yToBWXjn^/h) wTKR*x9"X2m4OXj>b);0=%xɛniTԚ%b(MԂs0aÍlA4{JWc#,Tp{&iJ _ 36kA "6WW [P_FUd3H^E(SSk:*#򆟘 BڬᾄRq(Sۜ{4HAf"y葄K.s,2`RbLp9>Nx!L ( b fy蚘]r܍]d2GW%q#m0/Mn6C* !Ҩu86m]>zslҫ6j{8zW<=%"SeMJRƀ9ED$eoev5 CXKH}`Kb@VfӀ{ȶ-rwH%m4|*S.7hO\`:Q 4u*~t 'bL]>.;~f21`eDw*J5<t<t2q[ +Mg%Vؤw]!4-nihg=dF\Dfsoʻ;ي}ҸB( 6NLl/sg9L6W-%Z6K4' <'EbV1L=30R&='i~0Aـss4^Dpj/?|j ƦZsK|d 5FZVeogfe=fb!r$h%q,vM`V~}eE=5~d;5Hf4ƛ"98{)E@ѿ?X*'؏Xvd Z*[͒$+ڦrT-srfy^@䶬 hR^U=q*4 dǴcuNZubD( A[17Rv7fu=:u|ׇ(Ч:m EY( @- m'Cl 84.lJlk c|x/PJnlf$ '&9d͕u+hT~*c+.pKeiAy aXW{) m@Ǵl 75*C86~>g^?[h-^VߔZ%L*{ZW`X+2zb+07 04-R2<DO7|8{IؕLC*Ԋ/%tJ-L&Mbis$G:)Fzm7 gVԖdєY NjsS6d/ NGR,9 #>h(@rn` Tû|U2t)=Q:ûHqϐif"D|'Ƕ/2>4!Vu+s ҿRK/+8 [=nHh9 M:Ku}3{ DS=ПhXRR0ĻX鯲uc|>"{Q&HL^}ύiۦ yV}czD +B( U.\c n0Qi $0I$KNPͬlm5H$H=dw/tfm>8/Z631\Ώyˌ&%]GMꎜ}Jα4Ǭze~ P>~Es΁0;jsg >(WjY%(Un V(ZƑWc < Q᫧w7y-lo+8nES$!!w>Dos7} DuJJoJ[D!Cė3U#}'|ܽ8S~P!{ ,;p;annP'%Ytd3Դ.0 pN;yRd7лU~<؊_>C, ɹ0RK|TIw0qxps/Yu3y$.d8"a8kHşE2-y}W@4fJ!a wÄLܼ deC(v%r:U6HnȱLAȷ&`~OmQآ=,w xo%E0[G3Ӈ344 9R%(`搝R&ϽJb={WowN\uK^|ȇ'B6~sܼu ` w“)A0YS~nw^XI:#emݠ> Z{a+A6鶪<<+g4QT^TDe5ug$gfKlfpMf" BaN@N ı)˳r :L;dG^;'].-2į; d8G'J{jLu@NaNMXע_;Ϸ\ ^n̗Kd;"E(xrCnmaa>[/v5я;ćSK̠$ =UP1Rs]W}TٟHѝ9x1 PsgzLcģaTD&>?.{}`AJ"_XIgyŢpz l xI"7iYbjrtdzk)DuhNحFCr!'{?K/lXp6:\gI9upit]kgc%+؏Ÿ:NӀZ/#S2z~|`lÏQ$ ~bmf_3"\Z%mP_1Na ^7͸ MTDza% C_ vQH +U H H{*YႰnONrXruh/Q% !h+bi~}^dd;ìcCޘ(TOX/NԷ^Fx+^xM& ~vk'$`f9pݥW u]'Jb { Y5~G\ Zv%tm~4:,q>R~ڡv:<X((bV)܊wB776y2G6kQ:K,txth5}7\?ږc& H7w d'2G{ٙPU)\bmq8WauSns`Cܿю"T͢"Tnk RY 'd/iHnq ҐZN8)Hy7gVLctJ3@R|@#*l^%yLkR|jp;ˆuUm'_.%EZUba@k1 xa[6轆zו"X/p*0]˩Xg%CKyeE&׏/[V hu q~<-mbVtkO#fϣ$X!TT<H_Y t]SU!fk_u8t)!e 1q2ޯ/>8b",H, @\C(Iq+;OBCL{zR@}f<ӈe:Im6C|| G)7Ѳ~$l<۫ol>4:TZg]s!-ًKv;n tf,Xf>*10IUiԴT4|̠|y;YnX+A-U(iur+$@j{(5ChK @*΁C{7?rlfb"W;ї^zv ]}\q";ZL*B$7t57 geaٗ#-ƯaE~1ħ6z_hHיC%!y ?뜬.Ct~qRzʋIҫ_jpEW}D_bHՙiLNI꒠ p$rV ` J.v6kڛ=z&l]mͨIu N #M wIw#<:,{#/SVad pN]DJĞB40z]4v%671*@LYE#[K]efVK;&\y'J \Ndsxs-BiACi!3\Wp_aa }Jdo& [c0:[{݋YBs?ui :q29s0?qo)~e/{C)Ls c{hY]C3M2FJCuhƘϟW"9Qj[+ 6^}xd?ݣ+Xr bEk@WMf؞VZ9czݓdH[qP[}O%@Y5CU%* *VAǾ~!7*Qن`wVwC^+;]fD fg9~%t w?- (yY`*{FEGu7gbZ۳D~g?$]裣o\p\ikp=oA7(ܵhͶ D#yyB A{2QRH}M1L@̧'u {YVKsi]l.5LRpd`Qb_DݗӚFx]>hyul`UzMI.0Ca u|#u#9lg3WiZ%gM>:W`f䬫 =%j^ZÎ(BcEW徭-b  1`Rܟ+ү3I^Z J+*s&pb%E 2GZr ™ `A_(0o<.Q{q=:Uq#.IJ;)F[|Y(SXӐ6@TFe[5H+i1d@TYl-zVbHYD*Pt4^ ud`v-ůl}Q<yr S"]L k9Cpy'+?^I L9}v͇`zw/]t$R<"$j* ~#Duyl+l&MM\N2_EDYD牋$*ŝVޯ[aO$n>yt | Ș?ZT up6v!:HTuFM/Qyէ]}O;#jss +=6w~MٶxdCHY:hsJͺthK}ZY?^Vf^2Y4Ytzو z||pE\.|,7c3X[>x0:&}b0sAKSa#*H!,1DU|rY,rL;*v@|VQ2h(17;}ƥKH2F~Ћ2y^if"c;{*ăؠoK6Z7bn\!k=d{H@ڋX܂AOgfA70ec7pYĴs+* ?  ~7!V7LsQdu;b"21S}{ZY#׿B/fX>pFy}xAjy}G> 9Dm*=T]9|b.b%s#CEiBo%Di] + !4 -@FN{,d>6 @Xb/P0¹+S 8;:;|'@!j2Eb.L ˊGm!b Τ3JA2cim} P; k#]X.z\e s4s]gNͳiYV[;&, yZ>]ue*,dZDi-JrpQhɌ$ZM:աGBWB8Y>PTb_c'fH]RY]jZgc׾Yb` `3fo.۶^yУ@!PkQCOz~ya2 |Z<|iO$]~1u1]N!MI-M⸃D]Y_Aܨ7PHX\$yvİ8$)Pyl^x4//p.<)OP/uqj5r5:)1n.3r)V4Wյqֵ1WݒHC8ܗcVn}Gr@W(v^'º̃fWTsmĊ@e?b9ܮ6娙vdz0"GU;#δc5Lj ű'VdbwfVvc mw(m.rfeԕeTA"btw2f"y]IC!ᡶ&t3Z@laR^f2Z疖B=COpgqKNnvbWXAn8Bp5dB[N@o@9l0:M9oĦh}\pk3խ%(?@1-5pݿ ϟ-exsC$XI4~ao#RM9GEf뛈8/bl* "#BE(&;4[>U&!ˋ5!@oXd60+%zKm.6a8wV-`u7eζ~@*c4zM,Ct>6W r]-_3x@=3"ѩ;jDrXkdnh80ḭ̈+7kE/*<8QGV@RplK"z('rTUjՔ 'g+` B[c\XmYg⬕8;?>kF@5݄6JC~B\5qbhXζQ3uzW=YZD-bpML?A\9X޼0V멁`6g2j,gUtcV^հ(eBqZ"-4%>p4T|9Tv}iPgfz2ɬ8qk Tŵl\$+ $ aαvM+ yʯdǴ kMAz#kڤ S4N-gO)}UbOkzL#G֪66 CegJ;ݼ5ёT$y}} F Nw I]oVgɚR%-IN09Z\>ݾ< `_3A;caNǢ>m! Du\)NjG0x%쮈`72Z౵^cgY&*Qx_PCDĚӡ496(լ V aX\N/tjaqvAH`R'-7O0fT2<(GJU^D;iC|U/7[Jn "d_CP@+s) BdDZov ]1MXOPN0$1\A& V820=Do<( 5Ν>2HEp!,W]VKGyТWFU)9):MO>\]L4A5$4'C"^?ߞ" $VNØ DLR>@{z-,tad9koMi:qqЇ-bI2*; EG+f"fثV|HI,Y ;]mڒPal愖 bڇɱp*|TOs} XaIy5 ݃ܐw zZk`PT#D\uk{o%sA(Eyܖ#cmfMbľYfg w+ qI:$}v;@'jNpUvַu߇z䭚6d97շ\提yζf/2#yzC h/b}@oC]NPm9}M|~,c1J.U*E `sv 5pr>0E[ e+!;QɸilFc͓ijY|rY-"V/ivbqs<0e<^Ǥ腧Ʌh<+ w>imcP+Z&Ţ&ODIeX| LGq9~z*y,򅚈U_I%9hYD39qid24-_x$vH)q3ZhPDἀQd-rE@Q TXޥ(RDkӘRM NeN˹ZwjIKr6!sxZ+73H{ o"'ħ.[#k3qLh:xa=f3x~!&ӽ dŏʿqMQQ֌*vS>pZI;z7K>eЉ;|fmY▞m즽D~BF`ڭcQlr 0`lLr.ʳ$sb10ΓpEI(NnGOyo}h W’Dl2x~ $fLa]}g&\kE}Dt&pl30E͇ıԃW#Yơ @x2rq ͉qkz $Gh8b DUO"5tIY"!$rY' ƴE ~CD(%ʽרHaΓocg'ww7nGoO(@fm(^2THGbߚW іΉ"v,v|Nۤ4M4S$D?E_%_E/(f/抩R R3]u<Ş*^.V2Ed"=89?fi zLC'2@ ,@Xȡ&Y(Dusǫ9b^=Y ϏSrPt$VXhS>̣mĚ:Tj<2ƌ&h{|8Jb.LKp,;lwma[t6Es/uHFZ*U` E iM܇`q{1ֈ-E(3ow8a q4sU;[j+Dc#@В1`,`"]iYyc* w 8qx.;ؔuM+04F)&ߣmcі:/s qD.R=Z1p0?Pt+e<:0 t:S{kb uoIS/nq3]y -z&RY(\Dr;"HՇ@}V.g8@~wfKA5m/FBci>'keǚwnHY `s~sKo- z ? F͸3*Y ~ZbdkΤ\(ֆFeV+&?to Q RS`F#F Rϸ!ƝZF~ *:> !e$6=;_{I7m(Cs.YӒiẍ4p74Rď|\iy;WҪg`6Q@0+̊Npo1⿁wmcv=N!LzrCz<};=*'J?bY*{M,a)Y7}v\,er('u(򖟿fd 3Hrᖁ谆*xr3chYR kRr1 8:\ 3j<~O/9TD/@F!bݝt{3PW!mg>6AbrYAva3B3_\Ba/_I=@գ 9h5OL+ *vo`E޶Ij".6 FkSˋc_6G5uZ4AL*ȫ.ssξA!!8tl{36{kma b &oW^pp"\5wWO#u2{5۠k"MWN 1*;W;ȫ 1p ~ؽ^R_ 36T9;HZZ5-NVׯI=EVƊ'E5wir$u+8m,C!)jyhZp|r@Oٓ}q;|g(akFvGٴEaiAvs{#s"6؄,:*}՞=q"| WNjwTx5wSt<^![7rzR(/dɢ&PU$sV;JXe>]*H5֘cJm ^$ļ-n@lGTU8҅1RzTz໿d5Wknx ӑA YA V3.ㅧ6."y_i 2#C <_ j{ -켹FhڏkA2$zΤLHdK,O<.5C]Ha R*.0wiPiӖ~+d"+Gz`w~gl ӟ2c D2\t; w$޹9ӔseWi3ŀ9V }ݺ_ ~zzG[`])[ V Ϸc>)4M%A+c3XJ .*_\&+?ې.:ǵR"yԫO;XJfw1H $^7fV6u`x&xѪxN^8uihRQTn8&^Zɻ6DlhdZqޠcnCfM4^^̀>vcws-ӑ&2D1'XphK=@<ЛZH9}M5~3hIUd?I2((& zþ<L縃YK=3 LFB\{ٲ@֫IZ;-C/ֶ,V2~mU'o5{Ǐ?k6$xc"ǩ N>A0BZ>~Z5};34 -NVޘfw~xS|U锿tqL#iTwH<-5'B@9Noo$`S.HS$I CPZhQzޫ<LY Sl*L.t6T1Qb8#  qI{/2JYov(ӜLu>70bȮO nV.ʓ} ݣVKVڪ^>Vn7#t;=̙oԯ (!Zڥj{xy] f5 p/Ͼs}A4CvUԻ?*h7s- Ex57!cbKVq)7Hʳ%41IWkGpCr^`Re@NE7XU"Yx@ ]o%ib Ѯf^.M]vo?Wy0zI@~_ݥQ5^cYC%Ά #%yî&22pSf}0 n=)2DNK_BZk݉fZj*3W,f Ef8 C}OaRp-iڒL/8[ĭax9f NGk~ضD)4KY0\ '4vP)I7{"Q}49XxOF1)̚~՘\ &&CaJӫjE'n`!CHl 5LNL.J) !V&-۞d1eE@Bp!F OLZyVVC0&zLe|!Y"aqpT]"R(` DpyT֟Շ(RZUږtX'g膋ypЌ@ 0mV.#":@d mΖT>!7C>WHrT.G-ـ~Ů0[> exA pLhU>>EA~˛Sͤ%D| ӯq}-_90D\Sp=BQ=P ?Կ%=#-r@جIýl5_ UX*Լfq4fZ$l6Lˀg {eYCkpUUKX3ێB~ aPSBX4 _;dՑ̄h\*aT$B/9aU+|Ւx88ESkQ3mPU?'451с $ZE Y5e#*奔U)B\Fi{/tƔ47+r'9ҏM&{n=@N{⭶ @xI@~904&6g$%8*?:Oa}5mG9ȣ0gvÎ`2'hO"MZ ~ "^ /_'!N,6W\㈗RcYͼ #Օ|$`KV̲SZVbi0S6:$Q|ly@gN7k)WVuͲNnx:3G*ɋ⛪#f.Y=*C,: Iy Ԓ2S.Ќ0.;",ɛD&v=h%批7O`9I̶HZCnLfb)|G08~sG" M_ܟuն{t>rʋ ]>+`I.0*"ao,vQm B%?H6=,ȃ̞JǪ3c0nvSH^d?c1u&0..d(*J-٣F`S]ט2CR>V1ŷ]q4 NDX q~K>?t)7ȇy@CCG5{y$E;^Z <`|~)e)蠕AdP`~^Ѷ{X^ܺ 0oz? & vk8ߊ[LVVN@;bZ3[w覱 <50-QnQq.Af[{^$Yڄ1d.19nڬ9j,rҥ P kjqϾ.v74AXqdÕsг]SD#A1Vmۥ2D2O.Js БΝRf6N +QgwsЎ+6ε( ,z꭯ mۊ& (0^~{LK/t ϙ/:r-ycuH3{$ּXͿio%,ZϱReP7{^KPo߫dR-1uæűo0!r!L[(3|ZPm*x5!Ese'2TTj,An'RlƥT6).i$1ptrFTZnD.,Јj;>kyRE?xQ[3D])SMu%217^7geGAj4+EWof:3 KB ?¶:oK\3(|.Ϫ$0UO4 <0Umjn򩳑}I9wI**җO>hWdu_~ƂiڒdgUYy ln4BjK"z$&\"0;'<V1׀E!Cy}H-G7ڎKrw]"E,/.MF)M// J}[:rxAMxn寒/4;5U;?CƘj\#Feskojvhǎ?lG7TLyǏ(Լn1~H?1  Z]gc/vn7$ 3un,ƖPFbcl.^_+7,a˚.8W+NL0gd'L,2*|gRV \c Yv" ?1l ]CbSvPvg|Z&UXȐ۾c3)o`u_o=$鍠*cm##'2gNJЅZUÖkM(7lɝ@\OB *nuzUf3Hy'w>c-Zq rrE!+$5%%X>1WnEWxTS' UZܰ `o:!6ƒݰg~*샋e >-RGVH4@{;0-Um2G Ŭ\#a),@JY+sOdA'iVKK əØZ1IN 0$˟7ҫR8a)| Ģ YXb5H"Ã{0r NPǻyR>5_A>ZghfOcp\ZҰ,l2T4F"O F.yql)13QlyܡfI/;}"K嶝=Rvn.<cޙ"ve_t"0dϵzterR?/x-nlaOӁLBF8ۊ1eB"J GB.h )4Wk3M(fF{Ҝ;Md<3 /& 욜J'I@FpA(E-<^Vsp8nY!jaSb|y6WƘ ) :&'6.S(.w+ا_ۋ+N_IXZ:\>vL2ha;$'󀈺m <= JN_b e% ~Y:xbH@̞#]s{Oc\c>2yo&CM#nW*jC#MW\T֊+9mbF81_娆޵ToDlVG׀No9iάx6]݉{`+Pf{BS]1ux\U˸F×0-uYLo-<\;^@oUJ \kIfD~ՁYӞ+-QK,VzKD;3r*(:3s):d<baTRixv̇ *q"O3!"Ңfjj-tq}d<<n Wv+|bn~i GL Fgiϊ,D&0.K"Fe k&36Ll"|wPBm7#s/xvߋVw%5UpH%.4]%ހFF~ۓO+!&MhFe PHd#RWKxє 7#S+ݽdJ/Č/s; ;6`1VI{SB<вfz~zk PVT-aJb;i?B?g85KyMg> ?kCRF>vI8@^ {Z'$݁ ÛPO݃+KL@(&~ÝOl% #WLعuD4Z10FӲ5aLKR9cס jfF ZEz0#~]z y$~qoS+5C*朤FWb\FRŒ5p?~)~^' 6#xǞIx-ݐ\5Ay$n^ k2Z# )ҼmXˆAuMQ^ dLU6pxt/!Ku5 n7f)։ cJ~ǽ)R` ;kݏ68ޝi ~J 1]޿#sf`4AS!ݛ8e .,2WEũwGprɉ2Yd4bH;@u kȌ901;Bn`dGx6Fjҋ kVErK"՞Ҿp;Xuq^({Qv'.BtrP^,:AnëVm-~%=gV/n3baY| ?TyPm#oO0$Kj!䄺>u2?ek( TCi Nk͏EcLy2 k-FL&Y zO5F[zl%8=?jQA3 ҩk>cSSH9#D#{卑l/ N[WOmڂMO>J^eϳ/\\X0=pi"&򄖙߁l:hi7:6WJh􊝝H9C1nQ @y4t3v tXjc2k@W2$ }T51GkѲ\g4R=~((v<}p"3 %1i'N'ǝ"O);Scկ0>l ^!|02{sAJ<+ؠep]H%'[;&R57O@4}E7m];r(]ނR +AAS@_|>ϔ`O#aﮰ1 5& (q:bpK3,2jdVG"}*mD}rO]uS|ZTf/sBɫj2BSIhR+*_P?k7S e lm"R)[h 7y B1.sI$rEL!bEfHБ]17EY&E>L\b4:WD&'"psl8=\jv3=_\Ẅ́l?wjlNAׇf.[}udtU{^58x Pt/];]t#+:c(;X&boZ!`nČCnmװsY@T V $/qIh\ǐJZ~B-S{@=o2Iz|L 4d,#D5I呆oKɚ~=fO_kKg #^qx' s{"u#TvJLE3~R{íF; 1j:[Z4 ^wILzng1䯉JeOd0JC/N1b&ϔWUީ0N}RG ?m<{ a?:{nMOf/uQVt%ᙆ*pRck)]f bsnȹ`!b!RGdDu*럛ChJb+|SwKKBTS+ZD%K1b =aod$Xd/P]Z!:0b=1)XaXuΔ  oQ'Q!n$2 ,;=g?SL+ݬ6f]z8lI~DdL3![\r 6yӤG,Z6IL2wA4R=DkR6`1^+ΐ'WүtbbAϰ.h9V3z͒ab-#uDv$ Z ]v؇i= Î|'\f.ҝ"\ĒV>Hz+0y"my@ ..ƚIJ"76Й0>$k#emcq 8[쾘0Yt\Ck2|BX8q-[ w"Z4QgPTy];9s%.܊!lUt,wWq u:]WƹU0-7=`e6zöIDc{Q8}!ŶRScw̍3z*ޒ tW=^|a*¦"2&WUiKZߞ߂&@.ATG!&YZ1FWO#45 NF;8_"֕Y"x J''0hԳ5%m{)=_0A8_i7 T/7aot#E|PqT_j}%űmEa@Mo,tU;H=U58΁Sq$As?YagD_u9d҄?ڪ kjOή}1W~OǂjU-s;[U׉kc1_e#W3hC ^nߕYOxіaHspMh{{SXdH/S}QECy.?߉%GRN& sgʉ+'.ٟHD(F`Nсmj޹\pJ' =0wYp ۟$詴xi>Bg|ETa {Uy;_w_+-r O aƭGXzf!sˉ\əd]qsX#[[}`=KDAfR-PUrM\zfεQr3x[0KAV kV:,оu_ ܼ;ѥϟh11Zh8!4 TY31`LhB^{9K'A秴m&9Vin)'gV2{~ uK!a}gΤ1?ڳ4١-6?(!lMaX :ی1E֔@=Ě ='T0Ú qbS|?oD O(!1a g^bR{gFo蟂SHD$Z0rs|{l.6sո,ޔ'*"+>b3*зv\5&T3b^ZDэAﰞ΍ԷTޒ[`\,F.dZAqhiU!Lۜk2mV^IdJVZ /LP\LvPzH%If+=HJ+U1~tƅvL U7S1Ԝ$$O75!5߮Lȹ.BztR5 煲3W!+ۢC+sFXb\We#3'2Q38Fǁ]VH/ڗ[B?Υ!7ʱPk~@XyUhZ.h2-0J_p+nVIt#xh8 ǨU#mV~5Q>:]fµZk*;yPщho5 "7 (4#DǰOYV&hoBgKFFlNyS;,0Di?{|I٢fG6ն!QwŜFfr|Qc۹ QFrJzl9֝5lSY u@4Ǟ\n6Y4cxIR45G ;Wﻺw69i!w'AAh%w\)@(UmQ^7ah+Kl՗:Cs.~Z{ԕ ,5_!-˾ظc::6WTV_F8x,ݸ{ȡؾ">bt>SMqL,al618حtaKcOX(׾&o KMCaI@25H8sʀz@9 Pvvíj&(Jp^36i#;lߗqv֓sȥ1sBb&19|X Oc-ǿU݇}P&-O5tN~~rp9b󉰩B|>=q?Dz\lw w$m![d` SBaM;}c2IVNPSh A*~;Ɵ~}2m0aSwA󻉛kKs8`pّQF ?h 7LD\TEJI7 wrlڣr{d'VPuH!'Hye A+iMiu  WƊTn8M㯝&|#seSp5fiY#\OҴ0Ok)sy!2 Y`lIJcGOOudPNnH+,ɶyU &Cҳ͔1b֟KwvQvf~ʽzWk3-Nr§guדL2X u8snUFҐעGt楬f}*J͝T&dQ5'[yc'Ъeg Lm!ݭI,KJwD`b-3T¸ Ȥ %(x\)c(ՇvG-(/iݔc$2]+?f$0Jo "*o`5<3dK \UaTG]`۟44nvAMt`VbT$`$`wxU:F2՜rNϐɲQ_!NS _BT{J!̭Դf;'d-B%R.tpPB]V2X`ާzixEd{fJ1Kbi}BמiӁNI4"aMdWw V(A)־yӻ5굚 PZ -%w(oa/,UQi"@|];lMԗ:LKB")S4 'YA]Hi s?ɋ8kAIMHX B*/cdђMq6?QYAh#A#1|)ÅQ_1rƇd0I_)}vazل<+@W0OKdS}LByB=AZ5@N3-m4޿ /JA ^o#.Jlh[WIu@OǀFCD3]WA}dx/'N! ?GW1pl]8_Ӄ67&!΅|XϒQ$ge5ybl4G0az>=F+,o4dłu$@KcS+kFo# |n rS8ODU_\&RF0sQ켽| )y?~U4`BbAݮ18B])8%(V7dF/z=d F! q (2P(!ggIGü<}BlDM+G|"O}Fò{&P(qZ2 bk^E1)UXZ4hg뒰:4:sWÚ$vtNaqv%]ӡqy!V{2=/bMU&ܸon^T BUcOz/|8Tk o.o+dg-}$da@num?ay8zLk-xny:tj3ۻ?!b[rA)wwC%yn0lNVqيl;A*z .RtBs/K^ W~7uݭߑv]̆A:u {OU$OkI<Kϸf| }BO8IiMvP/7uq̈_o_N)$ܸ=Zݒ0A8EAZR0b^N )CS?=`RBޏN |fO&N6tʨ\-#ĩ H^7VN7G+~0FE3,8Kmgs MNpy]nvڰ#(hLPCwxMئ -mޘآ0Y1]R#=cL()UM 7FP>l:B FzūB&"f2pw2u#Pf]~r?[Q!>[OrCSD`;vYtl3DpABƄ ?5ĆNsVhH@|16UAcUS&(qP3aڇ"hdIui5yb*kqAk {x)?zH"5qop3t59'7i/ ^$J^ZM,ae;4p5%\ra_㨄D$T2٨Sİ OAh->Xd(NAsH7oGekdr͆P SVm/ש5%3lNP x%3 N7p[p@IZI a|oJYGNIs?_nTHuL;pB/өiuX!Rxga\ Wz{ s)Uk]m߹ y0?J!xZt@<++VQQ5P eHe]߽psg!>el&_s )a $rTw<;v:@ni\G@c}Jf^*A {Lư. VNR{LDy\)kz8'cjb7)!iD8)L.X1TO\ `3#Ii}kYli&oBEZ,;ˍ>;xr )eCB)M>re3:$J7J=CSD{!._^u::,|/5`۝ e>؋Z|4{ hLj/aZ:\f2CtPOxςl΁B ~rAᝦ~-d~~Ś5F X㠪d\QD7[t~tcayOE"#hʼT\A1=zWLwi4Tk$XPOQQyQmoZ]8yRۋ[oo楣$!;fE9>O}Yb#e1)NjJ =VDl+|9%k6#۬c/_ wϱrc})q !'elyNJK o>t>E#T27ZQ4KȕّD|qǠ-bqaYs:THO*uMrL cѸ%"|mkk1CJӐ>rPh˸5q+o`zxNE=PX,F.Iħg0yHk׽En_֡ / #/e_|c!2f+eΗdvaZOߏj2UEeG_j5ϝ-:إB,Yly~!#x~<^OTZv,n2{;űMP7-OÍb۾B[LTԱlFᩩ:V6|)=cUtD_#U90B>>Y&)m(ZNNЄ ~8WW&܄D֧/nBO뷉kݫIRO WV2C ub݅&=dW^6ݑ!g A|<\]ZW?%G`?#H\!zUg@KkB]R~Ί4>ķl"io9!R)ʭ֞Dt/|Lm@>?WHdS'(S<Ƌ]_fBk0[UnoV*Y<)VyRQ1ǀ"^Rſ@D.nAF;{6П 2<{~QAOqQR΢cQ%nc--rl,ƟnR5XDXݧ]N4MpzmbD%MsiS0X !/B>sD;6|-8+*AQ csSZoNGߨ*,zg+<İ_Kƙ雋eZ6lMtڈ(. 7csh/q2C؉3.=tݽ&CG{y.VLw!npD1<+=h@TOJP7 qjP :߆BDdpt&IYf΄#}(Qi:;{' . pԎ,ŗdN+V.'e T$]v* /2iuż"#sSs9'_~lnڿtW N,4Alś}̓f u!~Ѐ?<A ٣7R8MgNr].l@sn9+ aH!J4#5(ʫzLs*ʌFO{ڍcdtw=!Hμ!7W&Ҝtz L< ` .'UƘ;Ɗ͂[GG#A/ 6ia_T)f7UO.N=%W;p2yqflR)I80mY,V8c{ObA],WHݛ+S=w{lnlMݵ6* .[?ke~^&T tıt>DP;߈>0Õ((,5d Tdf1?3/9gc><=W0*Tm?\&Esᖂ@C{zZF5ZSLNE5uMd+bN8E/ $ cPط##In~8 lOsWC Vt2^c/;d>EX^ӶeN|_˛6:֣"MH=q 1=lbx->s@o@dXxhX)S/  iKޛ?*(3(_Âxo ] $0zPVMGImiw`bne)Ap'Yշi  #K+Z;މ.XcXuB?ż!;F6ɐso+܈~/ IygR &/G: UGF.M)u{΁ 8lQ8kŗT J3q~443ĪF̂OYY;㲄҄϶ڄ0_;"P&Y9oe}5>j.0BR4lw >$1R/+A}5oNZ%dFw棫%-ne*FG>|z\U8LDݝaJZrZ^wqn,%_e"4J&}dz`Zdio;x1|,dE(A=sR۾bn$k6z)}GTp߼"^ Alml"IVeP bnfFcoWxQʼq ր#ͅjiA+M(Ku~^`$-HsvP< d.|ĨdpzM Q4ѵ_ݚx3M(TM+D8ݽ0C߇e` Yj5&Zc7at38?a)GP`$0 qVCqn<.خͦg7f ԂvI]N#%Ŕz^DMKD5A 주'QH()ag6^ (::4?CٙGM tx HA4h2/rkj dP9`k\Xc Ne|,Y6|H1k"zOBo fNEُW^\ % 4X_!mrHމ!-x9PQ ]ja]q`+y;BmI=oem:,dRg +12OZ,X>"r@씛-G2\c8j@:z.pC[mRzV8Ga{(#HX:ضt]Y2IyÊmɕ^xK״ءF}t";>w-5GZ6i?Y xDA'TPO,VH5y[KB'*;eU6T6 T&͊]K?Fz֒倍uЛG}b21f3.NJBt[ ]0/a)둙uցϿm8(:ӷ(1cwiHٰHEPn^!=D$iGlE~0(p{(!QO˥:! Qs[s JA]#ЄSf°1u ޲& c6|&9 qHz(f08pʥ$k`(tR$o0G!H -G&u6P N̚D6ay(#ýe+`nw/% ĩX)4y'tHTVҤ-:-aإ=2;*hczs__t >6e`E67ЈF7CW(%BR1qU3_FDZkg˙!K! ؃$v3RLU>V:'ɟmh|Dk<|95q@L:D! Y|[Lc]V5{Oho߾+e/ׅ &>JJEQէ'`}饩o% $P6Q^DE?xۃיJ^>`;y%CxVV͏Ծd쀤kv ڌ&8&M2LYg B%696]9qDJ"Ͽ_(XLf^736^S$Vx ;U);8`<"^Q,Lj]c0QCJ/%`Wkg|°l3y|ɽYqs8|?a8ӵp N0fhȀNCb1;맶>|FFleMRٷ(;4Uf>+0%zha?W Q[~wN(Y<scPK=N⧐y8ۻ n+P4X .ZcI׸5(&W99bb$cm4zR?nD\yyi9)srR1BՂiKV!v3Y_vGUe'](< ۻ+tuF&g[݊8ܲ}SlRȷ:h䘋07#Ӧp\v ŮaBSN$.9`@&M:]q,ZqѬhW*c1]z;EX0F.:{EдU|Y $LVj}&ԫqv.V]116CI' +%8ֻJ5OtQLKD@St }^84 !c%B`N% ASP@= 5nUyϺ,J{#huOeAB9Ίre/>7SWnǻՂJ]pk>^"K8!x/GM0A7@Шb@[܂~;c Y nn;W+a]!g(܃gc-@^)  3g }brGfzӸtAGpV CQ>]&03fQ"$~A'1f,њFl53]'%IT <<{iKݯQL"9;QwF XEf9rzs`xlպŴ\Iu*H ?3(k%op?BYD7ao{Ok}2bDR"'ԙ\_~"7nޏ,*FGQv; CKPR˴,k!Q ]@D. 7hJEkgC$smr R!y9墳_%*,o*)pDK~*EJ}`HnHYec6gAs(D{ ;(zi/&C+KB)KV\ъV|q|U2k)MZ0H~S+KSarѣã`r`*d7uvl ^x>f6+I{&mة$AդAxF+(7|Vzpof{6:d⼷Ru$6)[AU]%Q%Q(x{ogߖ7˷ wy_R& @d琣$"wJ,mSZ,_48 Y/vc'!:?8 01%x?Z 0eC?4>_VD]Ob4lO@ Àɴ yc{#&9JXCsp'"ěenJXMժWV%SJ)ϞiM8 LLIng98$p ԩ83qى]DSךW3q"Y|Ym٠2=|6E`\ %̭섎 9xȐ:ts{x!J,Ϩ:F9̶B+\Wbi8[i,:$v6PPrwqj|1 5U& G[ZeM)P-?X;J7mE2ِ]hgTjZ~cM}-ŽfvnL߷R>_`+Ҽeh`_wS-_4*ϡ^XM閧' Bl`Q+W |O O*眧jԂE1jHM.xcU/4dߑ8Dڞ٨Ur-q(6cW?%ES`A]9^ Tnϝ Aȧ,6y,;h[(^Fⵏyۭ 6aTJ"tŤleO[O{?#qCkۈx}Z {e<=dўй룹-R[2zl(<қLetd̟Q Εp ŷ5U-漏Cj븕Fd^巟W>x/?'&Q 9!XY<ղP!T?W7 0H&[Kʥ3 (u-[,yfrEԵ a!s19F|%Ww%\ ]GPA׏7*gf- AePπI& uW }h5cO:2¡wH?ɟEA"H<@S!U"}#k6F[_i{wkrsIxA>&U|c,G8DjIӹ?JLs}ո \P-FqǺ*TF nqp FoܥgzB<慞6ۭ-yjFXIB4tW% K!a=s#Y`YӃr=[hijlh9zG5Rxkk.ꖙɁ5.q@b֝E@Ǿ x{ LX`\T, |[#A 1PhHy=kc L=Md !4)tXC5XbWG&s9 *xjڠT%σQXT7vTxEH@h=(1]:~ z7 r)VELvϥ'9x@*12IҰv6)KuMoW".Q͏+tGHkYz]o.a깡Ր>#2SP9Se|'yRVK2OPHZm>6b; ;}kڂ4HENՀ ni?j^sߗQa?խ?l fI.=tmu(*B:1ETvA~H:؁f/$*8iRb'ԁ;{|ìJW؏N{ )$p?5 0eA"C1(LW umJo8-[}Yt0R^Xwz fH n /k?~|e9ܞ;8B~Y12JRKm8˅/0cc B>.(s(a}z=BEj1@~OjlƎu L='E%()Cf(ͩ8"BSR_㈥qQ ڳ_=PmLBcw#՗BD$5!;Y``p"zpoH`Hp1H ebRsr`欠Y/`ak)X?]?\vyxINH ^X$;"pm_1n /S5,er3[xpQ Wm#."Yl48#GD /%]7jh)95\NPEHa1flU2bEeӝ= ĺ:Ci7n]!HADG *a]^킟=x崦[YY vb5zcY7YE=#)ÈW`.)Е6m!0$%~qWa('>/I/3=Ku\f4=@}$cHm_DhM #9|jH\V `O)^z796澚ڼ:ֲUkS߱M^@#IF?(m:xd> MQ=ǂDegxhl Υ,]]=S `EBXz-$zymo=ɁFsAŬ&Ԣ5 ;Ԛ Cz%q&'H1 LlSLj~jȚ|P~GP]—8!fۻ\[ ,\*$#38'@X6Σ}!0u> u7/J]q#"EftZ-)啘uKxT#e/~|}WA[g\A Sp'gJDd"fd5_m o%njkWnbEto4ۻH*EaRTW}#>V^8LPI08Qƿ3y(tZN8+ mCx(^I([EDž8y طWPbɝ3r8:DCH TiTTd)YG6rϾ|^RNajR?olIrLMbr}R@ni^ÊAG|z$A<V/*NGh74J$"kEu v[cD&n|bĽ)Tcbkkqë%Ysl0_e* R$K%|@oSenS0б+FOshy @ 0oD,5' lb>IoKcZmը,-Ҩlg$߄`LIwyfN8åK9   }n`{ʟAN~#zI%Ew(ww+\ek?3Lߥ`bFdI,\z2ѐ¥hni} cL4f g3:5p֣)~D1!M.3%KXD('g*tJ_4 ̝q.Kܨ];&D_o㓼EPyRs & ?9IBaӢ>UՄjZ{ӔBh bGK@wp?UP=Zu$ dqkeCǢU27<2 Dc@̄;$W<~xS,g-+ ,U޵n/6ZCN9~|m20}㵮fA CIȮi60DmoJR!0x#;mbwgLϗt:vWGe%ˑO*҃nr>t8Zr1`>Y 39z\8_=o Ֆ4\f>dDJ-}{D^\ݳJEljw(60 WV9Fb6іY6㟇 k8[$ZJAb1h9BC|7"n-"J{F^=t&[bDrM!20z=kVH$9q]ngtp"얄bik/cX9zoLqgEXס3_lo8qS ^/oc=D D'v)\VLa Qs}@qbР2M!VQBPEuo5n?NgI3n9kJ6lk2O} L]ar*sR? @y1ҭxtܺE_Fv ':Pg; !QJ k}6f J']#삟&g;'#I{${di0imW t tVV'mjTPSm$Lhqd#a]}㣖>) Ni2$ hզHvK_N*I؊6Knjڅ: mXn Z\C+M)Ή?R^;V&|Lo)yE3%UTVr[ɘUxo'ǐ\d(e "Z 6 WY9B֧XpdӀ6R?QVpR=^3U@c/g,V qDq,f}Pٍ<*U.P>#=fw@I 1>ES4uGe,rfP9~BǷ غNAZ@,_UGgi@4"-RSK@ y͞C՛xPG3$;B%?Е1,oACٱV)ÕjU5 Gǜf'Ul ,99x*ص:*6p2?9d(I`rF.y]nfv#{Ym_Y\]qf~p95GS`.R@ q)Rb ?!Ș3%dSL]O.pǩ`ɫdInÏ5Û: عs/@Cq6fG`xst_Qn/aa](n± `1Hv~\fȥE#t JAݳc+fP|=za>!! ;'/Zȓ +m*oJ.pQe"4P.6nbbE/#ˣS ZD8p~,p1mӈ'5W<߶U'@g TRLnnjZ{.:R 0[qX[Zl%<]#D^KrYgab^k#S8,Q!J!gT2LZOXSv´,O`i}q%EVt϶vT9s|,ċJ| ,k|=}bGGefi'q$Mԗ4'pfjClCU0uٯoCs$IUb}bu9qT2079xG씂7u$, p#MwnBPm2-A1<'.f<˜Bv>iCN"z?KaE"E)BK,se`,-]ZoˊY>ҁxC@5Aܡ.q 85raʡ 4?d4dFA3b^řϡw\+mWhN#krMnϦ }Α^Yxh1~~XܓH٤|3;,.M[0#9-_;=B^/q':w+b8= ||z[Hx}{W̨p 즾s\C٦_O# [[].+V{8#ѩ٘kyLl]wKU*'҈^t.H3dVKiE ay-\)kl 7BergNFgFz_R2?`էΑ^Lcw.-XIQ86n]qW`*] X!W)]]$;zw:9 [>$l齫R E^1Pņ&h?4E}T'qe- dr-]{iӏׅRY,@XbY`Gq![)[b{D޵]O[`o5{ PSVZI237#s&k>3FVŠ!—Cl|*6mYn(kAz<>_(5#/찅FZ3;]|zbw֥0w~{^!2;ʿ`W~{Bm& THUE/`nQ s67^^ɩC?$z( 4lu]_IvF0vfct* Z`Qr)0 QDUQ‡uCf=ox緶e}5AޘayGQ]^QqpoG[j],nԌnQief(?X<,ME'zS;1ߥ u:NVByyT AyUGJ$e~}[A>4DJ;TAx\Iƥ.법Cq$pk%V*crt,`/]Bas0B1 0ﭾ śTc  bRkFg=O ORxVMc$!ǘ#_oR] yx{”Y^-jv7@1,7o564o=K_*- {331E=ic̳ۋ?ʝ?S fekg(Ui?ϛ;eQI܋KD6ΓW.4%5kcO"G~CUxxCڱrOƴ6¢8X`V| *m h%D@`C5:VPVEyr`?}ݣU~ҴQR& Oԕq6hFIVZ[zDdZtqC0:e?`D@Os.%{+בf&+VJ{l*Msk5*W5lX.2ku[Ĺcb9KR17_&ZBdNwY$)0㗀ʼnR6qDӵA> ⺀5D}Si}>,(/Vv@DV#{eݱ/yRETG/qO~(}db5ITpFО3qdsL=E SxP:bL#[?,Ң䵉YvdՊ>QAFV'41X֏%dnQ+BOZxZВwJdw+sbut:6`]2_z%QeWǍl )[U[ɯypE_/e9ǜ(2Fpt`l53mCČ5ie33DxXd9MQx8 .$@tį1x1ݒa[(v^)(fqoW-s8yGpab~x~u 7ŝdv䮶`҄ _g]XoSjdQLj8F Yvs91UZG"!(ֿ o]׆N M wmbOb47)+~{gq.~cgw1n>k 7D^u`j:NcX8hVV]>waf{7zYLQΗRƁ8j9Fg+(}h2oǃVڬ̣{}~+l+JSNӥC•]v(L/oڙ8 &p"rlzښ H+y[@8q{ȱSbzzH(7< T 8[+;:j-Ijht zNǚ2$F_2"_qrHnQѐK O.07}KݭBv{)q$-pfߚ@^L w鮕6E <)`DFA!$*΅^^!o40yQoD!]~ծOlTV6'afTfzB`=DL;Y/9J%6SHK Bݾi/ͩ|C4ɗQF %[7r!!L׀ֈ5 .uq&h&.9FHw%^ߪ-;kGp=m%GnitxֿQzpKUʥ?tg$Ӹa@}j* \g.n]Y'dk~n__x&f+*#Vj6 SCw<@MN_Uqݛrz`nw0d;:ܘnsk&$CR~PCk_Пڌ}C2x f@΂_[QY;N`;boz~v͉Yҕ8A˽G^CQyl5L_.A`<*1~svvɘP`t "ÕIɒ%vjп^$E{Wz dY,[N&?h^ZEs4T5#![BiUJG" 9<]vV/Wl!Zt#vNd ) L' i(U,zM߷k(Ű{EeTzеKmlr/8,U#iiZ x1mf0(O$UKNpsJ'-Eѣ"`c0O3x;Oɓ6Z_4aIe'ؼ(Be W6]*^\ۋWAGuYy&OKP`ȈӉDbK S>qڰ'kR^<р.krsGȨSQ7Xb)BkD?aq'@@!0tμNrF" "#| 3o3 N?mG,Ռaw:ׅ_r%0>2 )N- Һ3lɿtkG峛'K{K*)?ѧzKj} Fw{.{ВqHs<ѣow5ğ9 g *ؗJrYK#r|cqȇX dts9qݛ]g4~fT}ԭe\̘^+5}Ip߫B,mZaܙũQLqSmfXtS o{(rI:|*JhEuRT׀B qu8!?N} P vjmD10$hҥ(rqxPv\I!{ "GH %9h.'(wS׏C0^mXr:$9clgPږ>]eoL+vyI64gQ3R9^hڱJA_NOE@Ɯ$P"^}K~Rif}kLdt!}'FacߛfΜ}+ezDfUm r%:e;%Zj_4Y2ws١F%4ޕo'bK5T䯫4,>۬2 [\*I4陣HgjvvDXNK$|Ϩ̀D7]v[KuE&""q e]#-Rǹlbbj+J`cf.Y8alu6?T;dQKB$f:ИGR$Ɂg#0uUV$P H?ƽu}NGWҝ(C; ӳ՚"FȻ5M$Nː_̍j[ZHܜ܈BMe9CP|$*=$ٸtEۏi  ީIa?eB))7͉BVߺ@Pg{`c?)Dg!u *]3 j%{@ B߸HmrF|Rv*gB6(**%q.<_CJ\{;p uKr~$ПT-FϯuqT?hM܌ gils]HyWoD%0-n2/IW4-`nhS Ljd.Q'fv4V@ F,L:/H Tbl)0Ӊi~xfkQo}l6Oo2%R `܆AhY>Eh"x@ e2#2rjY>4y]?՟ϝӟܶ#lx9g@.*z{{s{v}Jۼ?1=T!0 zXƝfuπ"HW)XԋM>a $+o]e2yo\эF\t+, .<(˪U`$LJFoE =2g )-YNTd&2#v4"q=G",IV%vP55:5\ _TçKkBuh [Lj09@ jy#n`s`p ߺv! %z}2~mgA,d}7VM;W",Qf:N8MsS#UHA&l`E[2,sWLVd_S2+\'Z+Xx3:/sC55bH4C>1ygIPB;xq .nh(8O{FGZl&CU |%YpSA7,sYbQlnav)QF -K@yQ-m9?q֊L鋳F/IёH$Glvhjy7Q߸$%<][ٿ:L^69'r {|ƒ@siHH/Sג!)햤@2{ nu)a1ëR[n Pu3In&BC[{sm aMh3-lK<,V Y,Yi.:sU2bӟ۩Bz7.awvsyf!h' CW3lI$]m҅00Sj0cZpzGw=l)Ț?ߴ(Ŀq#5Vz0ܕgHp^ݖt. >󌳹ѳ| c$Qiͬ1/cK }I,t7x֑(:9=HK`$”YWr-Tgrfq?T$C!p[=ck? AxD.-4Ɵ]cHzxjCJ{Sn\yGehNE, >6ռ,=*- G>X0ܱ&{QQ\/^Xu?7:Ef>?y8.U,$+.]:a'$>3`Br-0;!,>*h s=+-tW 2ڛkÓK=Ln5waz\ :BJR(Kd4R{莕@LZ:Aaaލc]dIi\ktBDlb-l`ʜ])$!-aY1& k^hlt,KQPBELۍ!!y'9O&O4m+ Cx5?\PM5lLXfKӴ92_{jC"sI :8R`clL}z ^-MbPLNl)W`ߛ瞙d+Fi!󡔝^Fԭ9ɽqᯌkMA瀚~%dgQ(N*"'s5Vl! CU e[=>}l~uē*2';h1a?mFc6A,I-ЦM+@~!l `) | ArpzTwFV灳ef LP'I&*1%}e=J 2H2 #Os_sC_M,%!N:yB_>(yDlGRw;\ۛz" _ձ±ƩT>2p9[8aom(=}О챻/VZMt6Ҩ S]k{Mi`nU'~)&M%~?.!CTɞD mmdh1gӺ o\ UD $fmpb'Y3#x@ywҫ>(F?Ҋˣʼ5lՕ"Ԃs-p&3 D "r1skHYqsls^͋Z9=21UA) %JUL6*]>9`AQqU '8EzVLC"Y4 of2E)@J8HL+;]p.F /ڵQ{d :c\:#ARiyx#`Ɵ<M[^=rmqrUg,VRq4P0=9~*|3vy5KO;Rm;v>(r~& s4 Ax7 ,nD+k1B2ޘb5ݽI{y`,)xM]JMŴ4C$Fɨ!aUJۨ>hᏯcbI38tȆ)}X 넳N n 2;pI4#;K).cdo4!= P$ JTVQђ޺r197$=7Mݲ"ȊxP*"S& ų aN2. =-Dgc}2 ײHpwn"b)ĆȒ\9 4CRD54j !EMBWWh_vhy<:BC+$IIi`Ȑ'[DPo1ӳtМS. j`·Ak5k\4fdi;nXMRk}'馤2r;` @{c ,O_ͤiwqKw@6cIXFGNJ U,{ӬH(n27Y`2~ `k^ǜw.?Hj3_jN /++c; Njo+k2F: n=|,R^lz k}4#G/`quc8iv1§G$㺡h\ƣ7(ýAuȜ af}+eMc4%/0B8YRZb搛%=u~\`߷H9)/u+g (6B0Ʌ.f\ ruȡr a(x^S+\X,rhb?-7n #*[BHYhcGڻP@Tb;;x6hS3wAYΒSͯD<"uDܝE.6íH|XdiVLE/t~/!Ee'1Ɔ!c+H/{L ojKȁdzxrhߩc/RO%!].q qPn.J9hftx"rANBFkXU_>">FŸp\%/6K6ijQkJ!=Ku)?aƒ7;'KݎAp'NY*|ypY8_G2g-/.׼?ۑGz 6*@G*=k1//?v`u'!!!K,I-,@v@h>sҾ/LԵV2!|?q (sFz8,Q(8+%܅ ?eYD˱f2 '2^Xhq 3>"ٌW~ci~~OЂ[XB¼*˦=LCTg.F<-+ ]e4 k2tTS1_Em+ ^Fg󪂧<#_/De" *mq[hkh@/v9ApL.}1M [uIEHHz#*4e@GEgh!s8մ彾Z>hҼˀ) KLJZU-wF sjNsDm A&[cg9"#j=x)e!H@8ltC}9[0k+8nJp&_"v-A# qHNQ~cNhqٴWHZJV;~y4g]/˭K ]z3_}*Kyƽ0INVqvh$ 3vHXBȥ1b{Q+.P~}!cd%>7⥨bnj eݪXo,+:kc_Ww<-Lpiayw+`>-헏5;S-rC89NϼH9o$UTdc@ZhX3 hl5_lcwY[0>f2F*hkF,7>CErĂq2+6~+ ! x~}pB,iʌ{-E\% }o/9F`pDP+hY԰p} Xd96#*PB{#Ё T|G6+'.WpSc<{¯z>!YuE]I){xY?.r!eD`)R4:쓥-j5%ˏs&ֳBX/ 3tۙe!Z |ÙH.P9~,nc: jdF\ج)RE*xN,b"/=ݹGDDև#BwfUlS9LOؗ>5:- vFWgI<C]i59&WN @0.Wmc>Ӏoz6}M}FoSP*%LF{㓨RT.#KC.MW=T7('ȣ~t.41zШE 4@C;J.LňgyNwp2} $ƔW#,fVh2.g4P\0Y"R~>vW DW+UzH.]~ vp\ URh7t. Y^.-`W։' @?ׇn籆vbe} )yc%ʚ4Y'<t02&/A?!`UlRQ-|[t:Půp7&;p y[.1C"y1߂8ldT f}#A ʜC~떑y2*v-V0( EggsݻR~qzx 3)ا+'V-퉿^|pTy(x:/Qsk[oq޾(I䴕`l.`8VeA99?wǙGc@ GM]97ݻ`OWchq?jI7oxe//P,OetyzhG@HʔRg7zt(,l&QZB]\ Aq2zBV+R.F-Wړ/f7i׈\2K:>/1iB'0uZtWҬvR8)o87F!䶑͑1oJo4qÂSf6T~ *t!sf+c̑]9Ί;#6V%Է=6k@),?Dفu6k)1M&Yr;w:Ǿ)wƅH~Av)=Q'Ƶj(}P֨`u Á,P0H+8Rrr_N-Mr~ax׺?VP0/NH[_4 ߯g#bVمܓIмbMaٸ0 R֠YH,vnE8)s%ߐsYQ դYPM6䉧R9Ra>EGz !ɢT׍wꎇ_ռĖ^-x!#@5Hài+EAyh093T&z^jSc3d'ScIsl:jM@6 *T~S~(Zɥ =BWk$Y= B™m@r`3KϼG (S3(^꾋s.5=5/o`ZHU4T )b0i`"HI=eƭ`WG)w>A68X[ 3… C 8s8'$q$Lysyb`>bɠ(ᮑ0{T/wPoO uބ99xb#QlYu%GI8ul5wᢉ?syjFGk!zZOH%FtNNv*"t]7)9Pq^ i)i!fbǟ|@%Q=cqp^/f9`Ɇ/Ҟ'-w78ǫD ha%6.v VF`@%o,[fudiG8\& $ɟJWf8~fNEn/ xVe^F E*/h/]n-` șj<{ޔɗx#nZhTƺ$@V2sH&$v[lgéDt"VCP=KLQrO`k{Tt#b iBVrdiEZbC9 ^}qhaH6ꕞ,=g#1kV\ɩ 'V(btqG :aq67rOc( ãK~5 I8A QTAP5[3 2QPFm{2G>uLx Vk 7iw׋0rLW$*y>t6ZIzSo$V>m˛h99Z3GԆjn7g^wOSϽ.BLltoTOŖ^6@ @s;L0.VNv cs"M:2)}eEQ)mѕcH~Š_E7h=iG o IiMX"/p 8'11kqt eu7sgةaex&RE'Pjf5=sĜݔB*C`YbCL*GdHtVƓ(vˆ.am&9RES wG OuQawv%RzìZ²[%Ow0Eq,@rOYYQ"O_fl҇̇s=daG( <+'"bqdsiL] 4eCmlojܾ 8 "=WͶݨchd,3'0Р$WG&qAM(Bl0ye oi1 oX}1Es7'!Drdnut~x# !{:zm<38g3d?6DX/AdrTBU#4RV;FCIocwP;z(ЫHvpF\RL3CLy2_k a,O hX/Ll l/g(m諦LH(9a=s86֖< VQ eB%ج蕆W]>"KȠeHwe6i&sNH5$*%LᆲT M&3BUSY:YTm8JM,-I !iE nw/Kzy*7CWx6BtBnAs [L LռM>7} .%Ns۱|pIQ~aPM3nٮ@>6~^6%Jmt%(?uq#R_*E3лvOcĈL@[HϢ2KZ~~ً !r ǩGܟ1ffgzKjSތlhԜauybkB5dCOc^˻(|'fT vnN\ڷB;7{ABCɔ/hQg(G6"}e]4Yz _tn)"n3Šp֞oo8«`D>zWϹܘFJ_QWg0 gI_"V1{ѓU7\ფtᦞ֚pl>8W`kq}2ZcMyÉu$ӳb+SbQRہWv5 9Kд&U(i$ }Sm%U*: i&|VM/:CE8 _f.N;VsF"NL>~#^_w-r}@2njcdܤG0rQQYjB[pln1V#!;tf9M`1 i-癆 3{HOs*~tLQU]LвD]A+A-aHuJiS CRXЪlqiQXlEU*\MT('/p'V_A.DV DÒ e2fM]!zh+Wc*|$l%Ҁ?XB;^=x$)ƺϳ,נ qXciWs}Vn.i CX҄/\f 'ׇ1b)7,xj-UH(oR T*م>iAnJ&-:.#n}vRw~?u}/SѠ*풛z:)9Gc~nRF"*pO"PZٱ6ynKE9]D҆6 k* _GA4he&!x L$su1\.<>s/N[92 J͟kFeo w801i:F5){Qѭ7{.b1ꭔNIW(E'7PG~R5ѫYoudSƚXH*zx-ĝ1 bs+@$=LmWZ%'*qˤ )VBQ1%5ܵhO@|xo{9F'9c2WNdVb<j1 ]LaMfbX&ډڋWe& K):E]w8w\q? ;5J_VՊ'L ]֋>`W֢Oi)X`*̧0iJMt@< ?TO_ 6,(+Ʒr ӵ%CN7qyGvd B|QqKZN)21"c*{L T㒃_򤼵@N0祢KoAk7X'vf!a"$ĴKl%輮2kz5_p$;R§yeJp~MѶZN6a"Hrq9^_'Kn%MEr@[O^b褄Z;E.f fA8Hd;{672t%*HOYlEF^*^Bc`s`rz{wIiAi .DG5S2g5=8p3U^ p=;'ַ 4vL)ppB@T[J `OIiXh:ddkTjGۏ(ܠl9׃܈vNjƜ+m!\$/?\6H(WǏڋ{l}3ʠ\0|~oȤK8モ>GB%?NiEqL(MKׄ"E"29_ևY6cN)%Vp<$}o<ehB!P{j1L3V(k hJlL];37DyЦ G-V;<~l+ (AN̋@es,X2Ҫn: IYϹCg{fP4k hRV+p'gEYgD,`_ 7PEllvAE|@~;gmN@%Φ}<̐p/vB~C^ƫ)ٵk-5XY}۟ fPEFUUfdR{\^~"cKC[7=B~c;7ķJ<ڳ$|KCчպfߞ;ou1A H8a ׬ yZ^l.9r_`ˆm[ 9g|IF/M/hP$[ b㼅긷]w>JZ{C;SyyC$ p 0.Ԗ4`]J-BK#O_@"|uIe(\9A(҆W\mTc3׬Z?ڤ"JQxY۳l5tS԰laU2h87{ )Nzg&5zsVٲ4]I !qqC=|F V]誃;(cf\'c˘Z`#qf0+L) <OԬXh32J^b4Z 3k1GZ7)9uO0 ys{́E%Ćfm8R[ &1%I U \XI.&3J&_LcL05wM0y/dΌ*xpF{`Q] $l)*Mmx7^$^a0\QBf!+E(cG@,(~mZQޤ]YQr5PPEO5 rZX88~+1=E%U9(bF dL'%T<dp} qE>PЁmm' Y*i2UU^,P&~1 K%$eUa6z`urH/mp.FǠ #`kBhblȞ#>dLpP'̕l6ȋk๝Đhݺz#&\lP VJh͘XAHnyt gWlw} e9+2"^]@kTn7idNHf"^]Q!ouQ6a=sWlMWK R6YiXdtx2.^f4TI^쳀_fL71 J)*0n(hw@aDFGu>,<ݰ|n+A4x>Kq= ^c@+4Vei ~8uָҞX,Q˥( l` ɚپ /'a2&:'c2dr@l {XU7~^IN<@D6}>ic ,%*lrZ({Fo;fwq^L~4\bw7wO\B0%wA˽%9PGv\/ *B!rH5./zQ?A upQ$ruϸ9/iÑeR'6P7l?僢c uV|a [G:Nвu.yMĖdQ|N1{5AKܭ87<$t^3(9>nxax,zh R^*Ű8 >ߛٶڏe1S4t%{cY3zjW'VZ='wD::9lyz->Zٝ:Taɐ3O)Mi9 r7"V|eX[GEN a獏{ p<\n65R25?6Ww7!"p^5~]0YӚ=Լ &pM_p<~'e:&xn}zE<}2J8r/$LI 63͓yY|qT:xO,%žFFDp ܩc0%0"a4?x}s6og[AYdZ^tqX,:׃Dw]Db=zjcBHM3ߛ%'SdiL p8=u#PFU8^cw{+/^c:cm%[dpN2F%t-4kgO~HImu-5N W * ئ[ДwqfԸ]K puku_'c>;\k3?qoƤ7vAj+? 졌21"?.K1 `@0jßpZ*4]/pWf|MC@;wImN+<,e~KKx8/BVmYpڡFmE!ޮ ,I53L+ k1y'Wc&cO-EiOe&b.ߙt8Q^?yӵ+1;*PI%$m ֛~:Է.̕}ܷs 8rhOؒ\pobs}{ m=8Q_WIN$uQ3V嚟Dͧ@pxV,N^3?ԗҿ8)3wzt3ҨfCMdַJ 6=/|\V-?S }ʺcQX{.k'RPAd pޫb3pmݴInmER uhaXtxҟO<0\krQ'ƒ֓w2ʨO7G~ĉj8C֬z³ƽVVsJYHpq+.9@6 &A4@iϹpFWkV/#š UAt}pl_ݹj"%5'`g#\T:oW˙[ɬ  7}jPn1_`4qKȉO A/xYͮpGۋ{`)H`NД|6Iێ/pXZ^̮jfVDw!PFR|Q w?cW8+6u(#I*hPn *g\_^HC1nVtf%=\ʊ*/8F7YQICS2ÖYBZ!aMf83d*yIi 6탽C3F{&lq'g@R@A='(:[>[@ƹ}g` #tH32i%DJ]hᷭvnRpd0-Y]޲Xê2S:~',7  >*}fs}b%xZmytJVYw֋x4¹r;ǺL  'E#OgrWKtE.UwaOmE?]:k#Q;ZeGc ssEgE3/D, VMK%O1՞) QY[<[`ū+M>C ;=ZN '2y 'geVlɎ5t  ʢ]_]X/nh\D7O0N װO]# ׼\{nU"d=g@41nWrWj\SmC$(%  {|ǂrK/5XHk93^K3;QXKY4D@62;5а$z m6;wc0}04W]4SZX..i8mlzͶ!֓b^{ ŊFA<33IVA5r'Vt`R<~nv#&M&T1/u.E Z&8yn᥊z"E-&-.3[~KG3~-`܅zJ3ɾn2W^6VHy>KnTNj09hb)BROxj"yV.'X *2E0FI8o]޼%8*1៯‡95w}BZtuS}g[o[ȒkGVp\S~w:DX|8-d&˂Uu`¯1TSniW):J: ZP#p=5_XUV!(w؜)4$go- w?&z4%kT$/ѠRުߐi% 䑵Y0-mqE]o.b 99׀4 ܊ KOzblz ΍2fֲS3Tt5xo%ͤA= [NI1H׺K$JΣVBss;%W9[j/-AV$!9a_~x TafrVMYNm1[YlSG59NxzP !xBɯJZ85e~Ŭ8 ^*ͷQ4L/( Yܔ/Ez# di,$;:(CU@ (_Xf9>\/wT]-wc6JE_%kUK((37pϥf)H)Vٰge1F*~te"Uc5%WhWkª=4t$fe!:i9FcuS845HzSX&h?4^ڮOWۦ"x˯#N*_"yHD{&=kAouXF>lZbt/o1B:!GZڥ7?E)m t;ZPgh}+uJLI$M֖r{Wc`@ГSp,`X/#!ʷTǦElĎ'"59n hs0'k,/Zj߸>E ~~z.[v#qpAjk-UƼ2>̮@;{I8Jb7$2ʮ6t Ja,Ν ZثCq*oK+@?*&St[A{si☌h޴ӇroYCb渤Ag&+a3UQ$ENW%σ h-6w]8.mf ߀*^mԬI:+ESޫLh-B>OI0(B1}M>#QE'k^ c@p#,^|ґ] k 5NךVs*\v {#Lid44C?7*G)ʔfgHy%j! >bAU脁IYč)Y[~p2/0l_4kƳ({3eG4 LX)1bĦ=`mҒ_ R#rM4%B٭JOw-${iD i[$ݣKn-Dr|:<նTUS7 {r,ySa#uc)'e*6иZQko{H,H=8p{+"{]{P~zTioح EA-;_6&KRjIxz2)y0>b8jci0n# +؄Р{+v17gƛ=//w1+ֿ+D!MP4J+s8.)KFPaf_:>qb6r*= 1!rbGGRbPʭX e#H>v ޭ6%xJٰB"NnWT*y{zXU(MXS>2F(1+#ٳJD2c P#;BNcCn(Kgjp^Ox0XhP߬%]D,kRs}dwv|ŴSCںeQeEE\'V=Aa~͒5W^o8.&w=ph,cqcZ W9x2Mq|ҬXjf4|5l풞H{!GPS{6IN9^X:_Uř=#dockѬ*&jӋung80'UB0ƙ@>Cڙq `FRZUP}PE@1Бև6izEz;Jw* 6jgvcr^Slj0pF.IX"X Uj>ED)=<4-jrʐϭX4+@΄e#r5΅=TNKJ%I}S zmdj_oYct+:/=o8j!AS%zSx~2&W!|R*:{[EF>?\s`^Nc_+mΚ~c*8Ϣ4lgDŵ uDm >P*]oչLO2,!bۮ_V̓Y[7ނYLl\?h>iZ|3Vnw|+%L8tEOs8x8c lv)mmu} &|"[|뤣BKڎe"<!5;kE6h1KBIb|'G8}?ڀs-Eh)|]%qucw[fb͵@vz '*ޟmHEaVEH.᠞65}Mq" 8eusTcͩ룀mmvk?Pլsauj=b{䠨P0eB@], QA`9"!~[qԊyy[O{F憐@jzᥥ2^{QC ?tU[!=޳ӿfM(=Ԛ^^jVgUVIפ"y<}`g_;U]͌8NJ?k1D6@P<k0#D'}u,`f¼-ɓ<@a{zǰZ_/r_HWF3;lmVUœVzHw +odz?4sut0< b\$bWޟYFG2:+Woo]lp}IS9pF ; `!S5bn%7V;6 SŰ`+7! ~q=?r(^#֡ƋD%Rڞp ^# WxdC9)̇.rJ]voq%Io$u9*-He8[lI,zaS,< CTl׈2v3ۅ/"vwl3XLWh[UO5Y7ʍ2^jë^n3CFy:g-:4i$*C.~^>Ԡ8?D->fa*&u%mcf C )B*DM.sx⤟EAKK5s-[ `_8].,PT͂4:eݓ8`bVJ~& n5mT$ګ>e%]w 1])"P9FbQ7.}4, 7γ26=%[_=G(!k.`hŪeG_xwq~jJ=q#̾(uմ"B)bsvB{(aZ211AT-I onUv|h)Gh1OfT@RM6b@0jUZyoq/6J@艴?(Fw]j }+Qo%Ō j ҹ-;2;^HY14QcrK|Ά\'c"2 I`19u]cSv^|`|\HS ʱM_^sO$aZ^_.ș ;Q` +mqUwgIVMKUo,pu~BVuH˧*tMTR}BkV{Jv+ϧ.zbV<5[S\ p(t,^rU"u2 #jۢ}'=-V߳cNrВYQXDœԔTc @䉰N_'=J>R;Rr{u>x> ȷ؁Dtmsy_:ǝG ۪12ח!ZhyŘ.(.a"&=Uާp#t4BpUQp3)J+ɏuUמ2*>|-r <,h]c:~D0alG P)F-1Q2 ϼ S>Ҵ5gn odͽbۈ$Z|To+Gua}oo,w߼+|LzR,iBsg`sz^BI;gj7FگM/b 2 Iy6DyAcT1^`P>sϪq Òm37,=1&1%mi>ӵ݁E6P؛"JFQOHp yXnޜPW>&}0\V Q߷Nq:[F^+,`ՐְZMmZE L{QðudnʝUpJNBNV9d"e}5cQ+D_ 1C'ho0r% a M`f`c7CZo_[fQ,-#8FH5PfJѦ.X解$Rggr,!NFBrn7p{3G4]]K94* R!:@78L A(#(ͼH>NJ3v1j|~mT/Kq OvQ:w!tpKuW/g?%E Wk|roU a֯$ Zwݧ,k$88fՈ~wV O9HY,0;$lu??MkF`E'"ދZg+'F^5.9Un|jBN5J%! Թ IJ( - ,*պj%LDJ{OvD[)\94:(qfRM8+&0{+${%_u9ղ7c,>u*T@5(PAZ!IdDI&5gܶdW&Q^*[~mCe xhLb4w[.㧯'5@6<#655q{.* x!;F]@*'vTH>jRQ/e_YHb d߶+¿ 8GԀ̰r=ʨU1N3ʤe_H&PIOM&>ē1@~̄I;Vu*&A]㋵$;ںeh=L@ct`tw W1?ːTD޸4l$Xha^NiEA=闩jgB&+#h@ )5aAH\7.ܗ!N1A| \u Kdի׌?Ҍ-)S&Qs7$Lq\]~܀m4]Г 'QÎC V; kSj.?*7XvZQlL1ϪjF `9}uâֱ9I+pW/KAjHj.ӳẠǍ7rhP}qmSO׬CYvM'[.8tJ9~ghrI>-3QeC"ЕQZ{ѫ}cldגHtƣkwko>p'i Q"#`'0j}%)c:ZX6ƺq9:V\ֆlRoC j75e4y̷*c9@HY@fD铚 *x0c1cz "G΅c9n9)Br ѽ'B.sxB蔰”ۗ42LJ0upL @m1ތɩK(!qRu&^zx,a]b^&imԋmtZ;TtMBEhwg |y*V:+F݃H|!QD 3! Dg35d7U$lkc˲vhDVԫW;_蝽Ѥ4%<B XhY?W% ?v^ o%Cį4hH}c!!q|GUzi k҃8\ Zx>md9hy (8y?_r *5ȴqu)gepm 4 O{`n>)2SA"g%lek-~MNRn0;%<ˆEzw'[mVvȊ 8"ф7kSr8(5|_i3[׊H%OUG6l>[;2▅_}3&8ϲ&IZ)Nq5azKԪC͏`:Oa=_bT:/!LӢ$#R`U_FNyU=KD=a?Wt~yDid pwlN:1 kWzJq#GUͷ*yctGw)F+hd mmGfm_n׫roRV%!ߗJC$m_If 0Bnhh]DVFSu,v+L'ĥBmMKضmgT&C%C-C9%_6uPe\qԏWjO3^!J}mY@038x)ѩ *A50:^,!yS^hWZy.EV:+ZAD!ÈЇ_(5 !uU.3d'^ܬn+?:g )7q(5n`e+>r~YY.>;zF3S![KB0&l`xxde@F B]9skp1n1A嗛6gUݎxֿA`$ys[lש14+vUqXB eN C~WJфM>zGf,۷@x7M6>:O1;ef7>ΐ :Cb&SEwaWm2}(L¼qYoYc"cB:D.}e])n(?v~ʯ!nRӶj f}]ٯq8`n/!b)E 5Y0^?? r\ x\X('r&#|lPq n>.FI*_jq=\|o+Qu\@jHV>{p^Jܬy.ϽM T 3-8͹ 5ݨKYR+5kRؚ{;{<$9AAUug";xv|e^3gI^aXԊi9zZI\6zj:.q+FT,iwL`N]!~5 ¿gp~pî")wSh{$)oy֛T0H+V. m#7?a盙6i )Eڞ{8!&e[IW͆&Ͱy;^" KA$D节g DP;Ϭ|Ҥee> u9[b" #|Ob_fRAi]ClY-01yGPzy  ZeyL)9hϭ=|'Xg[Ν 65Z۰θؖl,cxdLD8 M5YnP#qG4>`6Қ[F DS<ֈGh}-:xU0'xk+Ϟs;hJ8:X7t8"w,[=Q,ZdVUu pac @zkD)t?:̑r/Zi{-A: sjR}fJzY(;%$YiJ,ij4|Ds'#?tqz1IvȭzhȢwםQ$S_癯vP=.o$-)E@^צV)!Wa+Fr_dd9<[$"NXu/ۇ3f p8ni4KG&^j'D]QdbY> d ڏ\!OXck!D/ܛ1`y{֭?eʪT wXF{qp@C=j$GJ`L;iw8G7k5\f/h\CݕKp'RdtYTZf@#i'J+ɴ\>v8#eC҇6Wz׭#IdO|m] 6#>\Y{U@+0PIZPmR(pV #<ۮ y%`ԕR~?{ )(N[\*bV#"o^5xɩRDD-P@1Ѫ26Gv!W+ .f,DYcOիΓ/p7]~p+pJ[-n[WȪwNF2ȅOcz-p5Up0e:K~MVH.sN`WōaPU.~iٖ$y\{xay=|5-$EE2}ZJ 2P)h N}2D̵~K;fmW B]ո>őPސNqM">RR-/ɮ@穦"}rG85L@^ Aȥ0T]*|4:.;8R#o-ᑩ9iLѵTوRs%Ӱ{C}I<0{l$4%RHBJ\fl]1s5q?̧6ZN[hj>9E? 8'!YG&N^8LS-F#g:i3Y8xf#q 9 0a(³CzuRղBSXMev2KuO*0[lxz3J `/]N*$ 1lL߿)]Dp+Ƀ9D 2-9 Nj3NEIJ̹JB\5۷ʹ-x)T|Ku:8r-fi;r!X/fM0"n? 2QpL%!|tu6$ ^t;D&A&fh0FE5境>Hj, c \zzԔ){ҿ*>U`b}iAJ/ИeN_l נD -ןh4G7"ܳTegwxZ&Co;e'{eE_BLlZ&}Hؒr@:py{[ Ͱgeh[#ij=(P1XÊN=pÖb) <%n3 BvߌA* 2(id=ClU ^\ti9Q [pһeC9C 7^ \mR/P7<Ѥ~i/A `&7,9+jW f Fy8@$ߴdԴXȹ¨U)_:Jw{DwbnxT#op|_¼X)?&::=ݠD'SW\OHdM\r1(1ySwF8ۥ+ēKaOO3;浄`]$Y;i5$W3UuB%5dԉe|:0/b錱 0 ǟ xl-z}S1.l =!<**Pmj/۠C& ѭ ,Tg1eLsD0$Ϫ=ACf.AdYM>NQW;FŚG0mE/e$ROB̾z1Q >}36HEѡjO[SO"㌵.l;MgW}?6xCuMkGN/[Jb>0Og~ dbI؜I})Ffn#|1T"ţԩSZer5\gR &WqqՌrp]$+:ZYm7S7 !#lS%*u'z"RU.R;1EkFHr:>oF+q [U4Ǵf {PP35^yB,gq iSj!~uIERr=[r'a̜HJ\NFWA^55fr&4Urw@aT==.%ٕe&. ./sBUA7GYƤGG_JtEB:4kQձE0%פ >jVX>8ė֫?$z+%+-s!s+By!edr3i%#zv=fLW'!oCoz)_0B̕sqsHR9>Aԏ5Wj$=`t磩*;a/ݽrSr1?▚\ B^o(#P-#bPh!86,Tշ*u<>P*M8x MiL10e_ˎϵ$4Ew/ȱ_R'UT7beR>rM9%JD%k@S@>F N> ~)S^rB/Pr,UHA!3~?\7$B M #8W}Kr닜sNW}`{)EtwzʻpCп4/$0h"vٝ.ҝ DQqyD{)+u .쟀 ܔ'BF`ؿW.\L+9郃]*t!vi@.\h b㗲[^q dL1mӅ>} =.~n|:ܑݨf0GlqI DFPv2nI=f]:tch|]V]ԉ^aշCΨCJ/ %N9GSeP]Gpb,AIUg.=;sjZ񆂲MCnKR+KBJiǺce=FB˷pq3F?3pmҵ@P>x][}41lM.pz(${b h=\,~>I+K44 S̡wvaXQ802Ėx\kC/w2YF /2t,zk96zSaxBe<ʴ0S#14-1f3 ]fr4e0ɂGΤ?4ͥx(sz_͔!v]RB>q.  I } 2C$v1 U̗&;;(5ю^,KtAuV |%;}p-;:t6Ԃ< F֔kVqVHpn&m 8>_w8.I 9sb ~sՇ_P )gz<}nFLx%r \>MwoS Kqfĩo ͪ< GDN_ {(b TN"6/z!{e[j^-f8bB]HaJKmcd^|/k)唻p+VIbQE|PN xl6XÉiCΝ|HXS`4R'783{byqPacu2mKzU^hZ $TɀRHRUuv,C9^ @d?b>˓@`{gucR )U:)Def^=UG6@0byv|ܱ~j'0v\wOSHױS^u2 lOOa e."Vid1] &ZBem:aSsi"5 w]o/jCÅHVT~$ژ4<*u]X5`ʾ҇ݷ͎X2+9Kv(Y2+Nȧ^ %fmp㖓##Jd%0H) mىx^A#0.)ndnW\Byd i8t$GDmE4%*B7I!O|ޢptj܍`dm \bpE\O[ pąQ(Fmxjcrnj/&ac3rƾn{To 1B-.tL m$#|3@\}Xٜ!pr|E )us2hpOʱ K디KY);܏˚Рhf6Q_}=]|#m2h~ٺ~.Q;`qi\M&U(Hkq+t%u*s}<%FWVΆn=&5J'Sg3*ӎUݩE>۷v|)RbJio|כKOVVy'H9b,3u 8ҐD: 8-K|Zv ڱH/+)ćR+nVd1kXEǮN?(&yCXN"T~;<=q͂x/Z^210@5:bD˒(4#jwK1᰸bᴩEZ %őe'vC dd{;"bSZ+?:Hǹ^SۆE[ )2rJLpO+,J}PĮ>7zUcﶨ<)Q&&9(\oz=}A6A'֌i@9O}mzZL% б8(MMfųXXxjEFSlJI\%Xv/w04@p\ \z R[ݗEꋥ(7:yص^ZhCҘZ9Und䟝v6, zJ$FҁeEյP)*5̬Hƃ7Īccv1fg?qx\ll3 j¯\/9KϽ(b,lF oFg< [S"nF2יO?L f &.^H`v QwQFX-S"c:bGȬ{-x눴_ya w6fV| {-0U(VB TabALU^c%8s׳Zjk \3e11J<*" ]mՋzFɂ;a1`]<:w`PmA$,HBs[9P$Y 6ѿ k!H%o䞣5A:>:wLH0P< )?LtW 6Gd2&נKfRTK?*'69 \+|L肢 Upա15Ǘt7Jg;Sn6AHľBQn<~KR5~) 鏏D|6ˮ@7SLS[9Dj$Jk4V9N93\]&OϵU)6 +\MZDHhRs,$ޚ^Bb=^2|KiA]$F @ W\sTokd'~xh&lؔѲbVLAϽWxP:f~`惞 K Ns K$Ƚ*]] T"Ί:HV߸(Hm)Z:m:H+v,lH==,25 E!vVfQk,Ŧ! lKFE.xpBŞg4[ ?En`ٚUP-6h^Y;= !ٺzgLH]Fjծ݅.#T~Vh sm4;"BvyTm#5o YARMx[ח9%.iv,L/P\ DL pz9sm[dmLV?fUmU[Zݱr&swIAiu{YjO`-t-H5']]x-~WLǯJ/$*daYbvD Ȏ/, dSAsN^s(B%fkԇdZ a\R)Y~Mm_BVL^l߫ uJAkE=jIjm>[7qslU,YMMH9arV'b1%!Xm0w &9Fdx6[v'XHŶu xqGѦx"f\ܨqYЋJ f }81*#-[xDX&ZvOԂ%}O'lA7_L]O16&nC7#tp}wzKC]M݆r'%Nj|`L= $"ElgJw9# Ψ?m~>s)A 00l6:zB N"iyB#Ay(^Vx V1jLP#y xgroZ,628 ǯ5>u% \5HFWO䅷×ZiG1km)۱sUB2oͅ},R /&iD.O*AGe#P柈7\d|\N"#Q!ˮs䖁*?䢖 Zb 5e,.NW٠Rw3p`EJ Cc܊nLɡTB'6%@Mi]ߞFL‡M #',XI7rB 4S$ЄgX`nS]x.t0g$fG)"Q5#۽5 ٱE ptIVmO9]m5Yn&4ft=RiђH QH2&%lj^7gCaiTQe@iU!Z^t%uz2 W\Z;]s-uaRG4{?s`V㢖 8Ԣ!L+N޾cXvg+;Ҳe{\T4Dk%YDteDogJyթ$x6Urx4eM kЇvFEEu|p U QS ~b@m+`x9,1* * n.gKR3cOrN۶˰`g :\WӆJ}  y(Y OA6@UBmsኋ+Hq߭< FAEU/ou^I7`?>SbvY[ڭR+td+.[ֳ\(t3l⧑^ z5KtM[0.Ve%S61opG[Y$▢8xveoΘ7[gV cxGp]wY]*9\P2,ivC,@2kZD(\YJ2KEtʻщp .qy]*>Zp_2PYnG7 2خe^6}T9@|F;k7M5{ UL=u)k@UTE 罨j#Z k 7`y |Dؾms :L2{7ͩGT>ӽw>ƞ?y;Lu\UICէ\L^ݘWTc(w|KrocUU( A"}k`, :Y!4;/_ako@B+\~mj\$,l|h9хz/2^i!ɫ!@(Ÿ }j?gY/u_*>j殎EvGQ!Mn'8\7i4u)t =mt@@FIOׇ6hʣӨ(VP̹mS! eiEUvo?e~V剁Eh8IA]?:r38`fr ݎC &CYmɬjWV Yȝؤ\WYb_-y&<<6a@` מ6P^%Fϥ]8LAg 'RfSvudrt=YP>H@RWtRΟIqf:Pĭ=7[w9#:Izh昰GF!ڪfZ5&qA8)3;;, ALg[jbU90ԅ~|_ .#iD d5|+#޾(K8w E0D&l}Qe!2]ۉz**YDH`\WQxv T=z0@K[n3y~?l6/Lxĭ|*Y܆MI!Neo(ZHe RGJl ͇knԇŧVTxFzKs-4Y@@ S$ k+Jڲj0,~Cg\;5w_\mBR~PW+"'Ϧ4=%s։peĥHߢw* R)$TDշnz8<Ť}咘 %ȑbE+b,2d0ٟz?;2ߠԺӓ"8u9,$] ?H$e Yconu[QgUm걄V|UL9bktʹpWKS@e`q40*ߕ?2%Y8M*|136TANbEҿ?f jn$tz?J8/Q9 ::M3'z˩Mz%) ]-.8KREHZ'V"`g_*9 rEd-:8*G) MCeEIeA:I>srNZts8umN6YGYC 7;Op=swR.qLɵ7~j v+`~B" Ao/]հ4&WޭZҭlȕ_mDMnR[,Rϑ.=v؋HhBV=C7/ct4Or4Wt wu/lP@qХ<FEmJ*Fnpky۱Brx+3_7Ⱦ3H#v;(^QZwex^Xɜ[搪{74shlW;ز>A}sqHiLĬpq!n;KA=c~=o]rt2!d-g)Akp;G$$>4DAR@)sT4buK`]F^K>BiĜdisg|L^h]"UxGaDl3i:kW~sh*"Ru_n-YnrQɂ5<ݴh~a*މ ` ~mD_1ef;J.QgED~7ȋtR.A-4mYл;^Z/Eu1+z[/wCƅ:NK}d~W.|-mdhkg{fMܠqEQILCoA&w#$"= >M7=٥i? HRqdۚ:ΩC#W0X\*]A~0]*׈Ώd=e<3vsl#TZwhu?z24eiCd|ni֏hx9AgȐku\hدeEHCst;{I[,WL͔ۧKÑˎ3ͥ8iks"d6#ɥ \{ij3c0~egZr6ٖ%{Ċo$g %nS [{ΕG<.Iao5+OlhMdoVm=߅ΐ(.\ h~\tlnmIa(;:&c^Ą_St %#07T勞Q ^ ݭqu~p:6g"vg-zhpK`*m~3A-( /.SW!, `}Yc.2|UZIOްUt$WCB!"ǝ E4u;ĠbUCs&XHMly+!kf^7ugլ(h4PnԹHj A,LRo8@<6ɜɉ$OI,l}|"or@Јo(68oXM;|G}0d+PeMq_V<ĒVCAЛƖ2C9N ۧdI.[S^G0YX4O&\?kWVRaUԂ=Llg˩e~!Ҍ>?뫋D0bټ*Uo-Yu_i(:Ee)1ȱfԒ)ސ֚b❈cީ+o< 0ڽ7G-g/0TRU #Uk]l 9SJߑOtYDfhWyȊ!DEiIK VJ6lrۍw[Qa M}S|gV$lkii~BdJ%ٷ]z)F"oAxA$WZM4Fb.B 83rl]RnfU\z8cquEOC%#da*\tYDB x&Nr->&am}#F]`#톸(:K$ HhUzfȜdY0}0*p:-=}Y&HAmnO?&L-.pz-DS1Gx\A "T1y>WMi6);\2^'~P)pZ4SmUMK䁟a: lYݜ(}q&!BHjgNWh7~$:SGς.-rt6l DuD, dnQ\%y5C* jwQv"#`2+ Ȋs-h(Xs]֥-e1!U0@՘Ϡ[ʻs"B0z}^ XI`݋Y?ګQݼ~鶵_Y_&Ӿ ٣B"1FG dzbxm[ضs Ѯuo}!:P6(Ѐc \a*\Li^/u@ȯ{y''Xpq"sQ2G,NWP(nS\ v|@zq#2Uɰ5L{($lƮ0pZ/`e2x ~z1Oorv0|`OXxA'D*dJ~f' -<EQ]MpbÊ3?_t&<+iȚtnp% #E LIB.{F85@{24M],B耻st2ʹ%h?u8!/G3_8+Şܘ\,7E!JrEcA")DD q}EI?\Z-論k6[w0ҫRuWcv"G2l-ct47gtdw|$"n*~L{=š_@ˈ͘[i~ނ:Gr@β#m!pp' UH . ^|͇]KNddPoߢ@R~z#y\ d(ƮvDGڅZkz13`7_Uو`Q!sέYc`] lt]ۢp ?'=Wɩlm0'Sj0UD$˨F&t/))(be<`/oy-J|O1qҼ@ V,N;][Ƿq,/뇛TĪXpa ݃ ԅ/ ]D:TL̂  ݉1O0“}~9dQ J39f܀@96~M:<.4@~ #of0hSR(Ix9F;f-{]oYyoI}zGOiǩ&+OǤ2)g$ "MDoqc5daD6P$}6"|4qJ. M]@V8Ȃ+đQV&/yܑhq-- k-obrFT]S!Bbޡm4"8,C} "(<yɼE.I xtk>_[5N͹j2ڄ.?k*g+n~o|HҞ ә$;~1%j%1E^γUE벾W52_;@o͆BIcfts.171<^FK*6B}uڌK +=oW޾k/'r V?% nP~߷OQ<(Ŵ{2 +]/XDX~tg{(S4U{Z' NC韭A0 G !A}8햨Pzq ~HB/-3.k7&0Y&#"ꣷa\h :#0I% Вׁ( Bلe3O61ڐ$ svQ+bvO5 b^d uJ}'s, !݁|$AOc%uv5O^3R0;GңٞMw+!dL!Z߃6}:KiڷƒY3^w(FmЗ6 Z l20 PWۧU pv YU7u;?/,4QۅT.Ď&Y(Yv~<+`_汉e~'6 ; =j_cu:Me`=*̬xZrUE-+. ۄc{u88E)&'H` 0L0>.Y@K A}#=ʫ혶*>(cth~`ƿS kX 柴0 > 0T=j3 Mo M2<lm' qШ˩#rOFvS*޸WIBԽC,gGy,rm5h|Mhd@m|eGq4ʡ4,/;)" vOq~ R3\`<,e_ w$bAK2H,jبsbt}""|HWWa[~sabYੰhG ת=-!vq5H*)֍,rC-U1%/a]Ѫߤ|ZXAUPBjcwFc+tkdR\']oYγZBVvyKfǧ5`͗ Pm7QiҞ1E+Ue-ICtERlm퍇?uEN<}meȈk^nga$ջoHz-G2c7T Lkr+p*κh~L`ɹS&jz\=W m5}IGD(ߖ>=鎬C{@S[wW&2_ w,ACxR ]Vl/oC!W76Kұ TZtQvh\'}+r7"!cYHLQ rvMl%]LLÐ*t'>>(1SSNhNkIȶJ2Mﰑ&),$o]Lw5KiE?j_*4 9?Q: n m0/.j/Q}^Mɪeh&j2q-lUA\8IM #jNN>\>"a"oN)9ǻ4WwJPI %dTP/#.zaD;(fGɕg%F L`z~˶:`sFgyrPH3o ldhOwL(c uCVKkĺHcD)!m~WoE9lFk{ +|M#m*'+= K;4(fxCQ? `4k'G""6Kf~PpJ%J=5ݱn=72M0&E2C)㖒CV~6oC qEdlΊfNqPFCeMx0쩪,[BX`"g ѹ!+!9TIi$y+[FYܦS %.rY">]fsoyQ'ߐ°IF?Ҵt/Zż sQSllbܜ='qNÉˋ.1W$E*_8,:֪>P5DNx r2pJHRϹzx3ٿq̑b,R3=WP9lz{9JT,C cs"O.PGNq8}F>7܀}3!%aȜY3(+Ӷ$,[Ztiu }F#})߇bJp>qj~g vx5uB,)*~4+Ex,sbgV(Mpa @2t!oȼJJ%*Fnd19#]Ռ_?q X c+ޒ+"Z粩+Q}*#Q8Z* p 5z?]8*tߋ\sk~Ghx%d?,vJ\A85Qzwߜ}eJ')yS-2= 1=kk똭`*+w|[`f=-23aM}Vm-wW;gu[ 9'R ¾m)~N%apK$ۘ-kk@wܕJS?ZP^8oJS$$٤iFh0ǘ"г 仸dT=zi8;»{ <7c!.^5*V]"u=$w_#D;hPc^vti.@Жg&@m9Xc ej^&[mg`ଭx(OQ}j߉3Tӄe- !j? !`m_ VZoluGkt?oX87,^;Tng_P򺥛CC[? ̝^gJ-ʱޢC.rHֺI7_& ČɄ⒯˥)׼'=pn?o4 |GE"9||f@אc/7(HQцUc7d"jك֡&wuDMRi2Рo6찥ɉrm6|}#Jr˻ѧԅ_(x:qԆ0+JKzNyhw sdd ZiWd?荍vZոgd]Zzt`壾#C?R|E!{1oys+\k;ņ2fB+_/ZI4=i#εԳ/%=_/?#Hǜ~qCl+e.7靇ӎPl(*`(٪;>|y{aAQyv0;?ޠ"Q0r˼/؉-DG$EdiobtTr]ep!;iH;ZT[{n#I],? y1-0:sMR4RH8ub*Nv)AY+{MOy®Ow/U4?#8ZNSHg*j@*l=EF:]Rw+6rhv (#*ĵ0BvQ>!s:#(s.۞>hXR bX(GDRa]e]l3t~izy<|%SdA{zs?swxraW*4w$^p7ޥiM\SO1Wp.=go0_F.p8?[bxֱ>=F+4lqo3݀_j_S=)6>愝4眹='D:?zVh~]oNӠI tGEF}UU'R-U1]6#~o5'Mfc0c^ߝ>_qf>C\ƋX% BNxYU8f d4 >ݱ@M!KS09VMF7vMSQ X6z:i6]SbWءP-{o0mG3^yWZ%l`hYih[/w$|!Uz걊JHLm[&&*=Jk4N!{ BI%;{POqNx.~WLD %z'=؁Ǻ0;kePi Mb1#^0Q.F̣`osãm|VF6E@KpђA4q'a^^InWT$!ILbC$c[R{ZUpBHTǠ>aTA>L"R<0&Ͻބoal|C)M9tpBkJǹo8$[H9"A18\UVFA?$«8 6y'SX˘@LLc&ɿW|Oa2y݊ 5.UR%>2i _.8jSJeکeVʺ$VO01 C]1h+KP5 љ^!oj?ByX={;;? Q]04A h-5u /@P5J@TKt ۓn+;>ϕ/Hf`H RO-tx̬? (Z&[iV*cH_@é ~LJ_5Agnf) ǷsOI/DeYn KD9 s{Sy Wc(O$N&恏"D÷??…=QDuˮr!rjCJ^8q7m5_^9S-P"2 +`f#oJ*NєAHy(DЃ{󥜩R]砯_K5𛄆E{qgP J$(5)Eq*'b] pnHuw'D7] eht`@7MxOB[/j~K)RGOźf@^ew@ss'?wJPMPGˎQyƻ[=BZS7򛖨W=<-sL~;)x-B)Ѱb/d]҉ƴP-qgo CQup@ [,nQNTX7h+bYW)Pry1}*YZ|]]Ocq 9 :Io"^t..ڢ9^5jYG,KHm@҅h>_ӹ*8B4~#ͶfT, IzaNrH١--:ս0YWT0 śmSф2gQ'QYd0JDľθ V &,l :,QS}舝Trk+.Țtb2f^?L^hz[8Mq];epb{#u=K2EtpJnu#,vMqeZ/gE[v TqSY2H@:hG]zdݏ4SUzU׍*-W[1M7˒Ay1 Y ]dR8ѩj[9y(s/nݒ:L hn|EB.y؈v]PyN (dt$/7E(ljKq;Ƕ h"n&)nG73*;>Z)w) Гc~v/_V ~Kz_Oq3rέf0A[u$sʡ4 U7hk*VSFo%H^|T?/29 T,uXr?$ |x+ ONy okɣZݫikB6j.V߷-$b0/͏7>2.xrhTUm"JO` @veA+^S(sH)(D xbu;36WW?zp[r@rUZeyT: +~:RgjAOLÝsXے0O85&v` q7[ ]L )8 E̩֐23T  =@s%έJ? 65NwUfizF:q {c{&w,;ȗWKbH#E+';rF⣣aּҚ0$R%;$ToT [GK:+aqV:+ JpKi.c>\zI+*ݥ8a9>'&Sڇ o A].YZ^giԍ,p;0ʀW~ꖑl}LpP7u ,R~;Ebabn8B$wT @HEj}]Oғ"]DE0g<ؔʼnmkG/l:.e;P3xCHFGbf*mO0U[m{6f%] Bϟp-RliG?i(b/$|iB=,Z굕o(mO`(sU-p!kCV(( 0^+׆߄UANႉ$=?}j }9Bё7´7"oC\:aF,]X[6,09^ZFaZxOMխPUG u&VFFŃ*eU%(c;ud$cojESITDs5e2'BzUE> i5UޚF*vOo\Ȃi<##HHd#Xn/4~dndB7ыa8ۮZTd=ӳ2;, -|Q0>`Ѹ6F{nY@.P;#{PN*qv"͎ +q-4zDT*c`<y܇Rk9H$hK;4ٸ>yfl JQ#SBߚdDg_&^ VD/HX-@ѣՑCpSIT"e$:4^OU ڎys|_}@sHv|n:XIzRYy/ L錂K{8fJ!0Bѱ2a(آV@ҟJ޹,p"H(vGPH%$TT+O ^j3 THXužCTi$m6Kr[WUF, 3OeIՑV `C>VY*2ЉΌbk2 Z 3p=+_jO /7@b p!ۢt_Mv kqС|ѿ`"TPoSUQ1נPv֗;"1jx^&ݱJ^74ōoV&˯)S`~H$"cfGB dYz[.̯fTZ ֲ{A8!mξO 54]*st< ^A,Mdrvhoc DÞ,_mFwQ7f=.5PlӖ [Qt0<41dri0 _QX&zhjʀLfcK ֵ̇4#A(P7_tKT~ƠFy 9~}gA{ٽ̂ÕxVr` N~ s$0+A%M99'ɎSPfH7O!r{7g9|qՆT=j˃fZ&OgՑ>Ɯ|k0)]Yʻ\4z|3` ̴ek- T@2P}373s}vL%7RK9BsKk.3,,HT}ݖ(4 [QhǘǢv>7< e^Osy.Gf9 ZQqJ G+=D=oڱ<\MQ6F1T.po 9ނFKrHQY0# &]ƗcI7 2i:'+Z\ ZOɥY,ҢH: C]^28aD['Ubc OyU~]c4>򒭤,1'hY`/2~# :pHz.sP̅[씶fLs*JQc tip" ִgUm)o!)DCj(^Ě >ɜC|y,Г8԰^+]!bT;ܬ+]]aU_F^F9/]"@~V;׆^"ٚt۹/$qEx=S<0Cm79ޟ^L-`ud8g~RWdsG^M5 [đ*-T_q7T6z_@7ge!qɛFd ӽSMNs{TKz8&/>6ev$fɂo/|Ԕ|E-g9&-;Tȟ) OB=忥5F9$z+й`jC4 #/ӴzX|_ϴN ag$UjB% n;=h Y Ѝшwn֚"nvRdɝ/+=8uHg0vBA9LR b8z.{*wo"=CF/EB|FtO K%wA6;Gܓ*&@%Ƨ'?EY ߌgW@D^Z^ 쿕`À mFcnu 8Vn4%\K~XOV'!{+ey*{'d;CMd^PU˗?ӭP?tfpUx!(w8ЯKʼw/s@hAI\w|aJI8mjh"e@~|{B +7:A <[aՅ ; yUm! WF?ӐF=Jr4,7^W"ʽ;G3(I]dn:- lE5.XTv^jN[/]Z}@,4"ok2Y5MZ&V,vIu!~g4)( Я^Mn)8c{݃rV\f|L\lpA0|( k#Zz+qˑiX/Ě~N.؋/@('sŰ#9ĊXV]-Em+݊A~N)zn2.OJI c_fYiu6aMR#|&pX>tSiC[ӍQ46QX=l|&w8kv-|hFLp'~5Ƽnr; V==H4C]|c㋀a,|.y\Wi[ p]0.DhxӋ, x!jD.I5=1zV D'7d+n[[ 8N24|msi2Um7/x/,h\xl8{źn%955YlrMvտg3pIV2X -qL z:hJީCDYN-xw|ho/AChHGFm8RN {y5D ٭:ZSnSVF&> Y\뙄.Q\j}́Ap6(@^xyA3L4&NV1ICV 60bG'6|fQúPo$!J:)Ćfg+^\C1 I($&[!:is,5vLZ^nM':%TxG6/OƯ&V ӊ]ś0vo.eަ#=b)˫Qb1מǂIb:4 zеjظjpGZP;YK BrL+ Q->=urN0a;dppLqe?ߠ\tNjCh9J+9dzDYf:w19hC"N&|" ӘnOY]eqT6,A`EtA \⯓f)CIzg4 !|NWJ@iK!S=Sq64)z%XS Y  ?r(vujO+ iןJwpG܌vRwX놶@?`3%Iӕ|c؞O^+U?AkH:j]9(2Sz&HDDh$/wzZG0zױ&;'sQ ءv+2vZ3E좦htCE,[佟WI0N2df.A{0xv|1s65zq tg,X +t*8K-6xXYMm1ddBX~vPChyzXo$:pUd6'E=QzhOYT!dχ䅠r]-fߕ512p)*t>1-pQ\^x2bW_ 0[1ƀJ>!|KEƸEb1a+sz1$Gtve( 6P0!2Ss>eKr`ym43 4>lҗGZ)HjpdQ-b j[bnޥ0AegzK8pr~30ꙅN;!4y(TX}8H/$f0Ggga7#agT(G>5']7ɣۗ58% TڑȌҺYފ 3"x qpر2*2r> 5g\5tBG.K&AaN/(TbHE54BE턴_UuēM I6Or*$SsBf8Q|4*.9 4ʿo|5=8ۭb~nv\ 2n1jڬ;9yY6>u.5T*|y ^*W*,/Ɉ^?E/ELm[(gT ffvyc+y'nloQmo[A!׻M;nsT4 |7)|AFm|"gZcsȆŸ`iPzf=4&Lv?g1a +E <(MޣbDG9d`(}:P߸6 ԋ0yZv~Dq,]\V! /W*jg8Ͻá(Zf RH|XG82򎠰 8O4N@0@o9ǥ=M)}~uIBn]QA~ҳlD69ouHM1 A)pNu̼%.up4 Ic̖VhzNJ[sY iNe#P>&Lx% t"&n5@kh;G҄K% {7wsE-H cT"0^YՁ*0qvSZ&l29H9FRH'RuL-9fuk%FG"$Lx5EA3Aopr\ iGA^66W˕GD/7DW <%IV鴯lO4J[L5p!#LpT>{k3m1|ތ9<-L) v5]Zͽ}{GrPciX&cA|cvHoz~>#"^{e ԁ]}J[رW=.4a3/7gfFU0ώˎ맛9{Ьj%CPāj7%`T΁S wӽ l9IZ߻0#vxB5mϫ +S/Ao#|GB˜xwH*&DomyXO96*Wc9fقP4ԌB/Y8Ńp,oa?WJdY6I|JIO{PQuCCjl*"%w 3Jv΄ɩ9lw_*BP0eov ލ iԬ.w~ŶĭL%YB:X 3ק@_$DQ:"lnO3;ݟԹ5=+WY)B=+ 2 (g:*`L1pΪŤrSK!P2>sTV2Wc;1r1Jx\zcF2~8 Ck,r$WYّU)uw oĘ0ySG6ޯ疰s q|\nd?TOFK ~>T(VpC5[Z x|f1nGD6DC `ܲ" 7āb]?3oabUV`:wQtde0nܧ6 D$Mo9W-Ff|zHĹTgQz 0c>HIVeʡGU0jc=ֽ]G[h8D'uP٢7T*v|j|ͩ%~`vX;<ۦm6 ,D;Iq$]ُ1KRrǫPyzTx3vFϑuӢX[~P]t5W_Z4"͹SȱJq+1Cj~^7bjQgfdX{Kw4co*,o?VBM+?|v ^Yk ]%u V~ 3`ױb_ Q9˵dbdy$re0HBv=2e-},qi}~K Q<&: Yq"q)w8Ƌvzmj6{)*(Ge䮩Ij<&9 vyNWY6]A5I\Ҍ@jJ2auPquXH#{e9|sr.@-ʪhvUPۛFqL[^cd5Լ3~<& }[a`vԻWvjJ7&wWuRWGEApi HnG+UGfV!<{QmFw~)~g.F`g|jȫ_ţ8gdVj3NE?A눉f=Of|!cU"WGuOd@ P-M{k1#^x'F{Z3CHSy$!^T VgF`I< Vj*~2bb;:=)8"RGLBjl@RjeILW*Dl~VKEP.2͞@=L%O*O d,;pO4X.〉+KGN_(-~!s,ُ.{P[+ʂ/+HMڥ1.i0&p&|bѷ( *כ񃛢zmnDbPmuc =1`}a|&Fo,. Irnk\Hӧ0-M)CG,T$0zYFr5TCe>7^E ]wpܪ+wmH|6}jM߂Zj.8Vji8O yELh)& e屠u4Sa]DDOʴa.2D/rGlSiݮ޽/ŠWD9ߛ9Ep T_|0m lAq{׿0X(J>L"V̈́:˒ \ka AɳQ qB۬dY t*`T<+3ERoz+ \'Mÿ괺=xv{-ទ4 #3ihZ|HLy_ؽ  )1*cBҞìLgYÇYz9ٴ3jxj|%H+s/E=FWXڞLs)׀WBOyȪiBrNre;Hd`U_4V8'-U2Aͩkq^qGv/2Ȳ:Oo JĎ a րcYCMưO*'6fqڴݯ{sX["ypZWl݊Q"g=L|?{BOnf+٣u[x59@#Wh%ܖBX%dUZd9q$?p m z{;)|c'=ZbNǸal1nE#֝k'w} X$=(E%ᙞYTe$/V Gȁf2hzvlfQlc;}W#pN ZI4G8v#J.Ƅq{KSor[k3RlY!}#X᝕+ů4a,(-ԪTN-_[p\P/v>J`w53rNV7"?L ⩞"o25+TAapSԘEnZ-sMZŽNPe3.#礍FpG::cE)@{ۯ99^HY ,+Θ1wQ>uwN.d?gF jcK,kV\zQ=W= "um/~7T8{δP>0FVI]ML{(4/^)pB$ϫ*G:&P j@>}y;e- {Xc&3#lO6"fgyKj3'w L s|TnFЅJkqn+*"o7SQ1^3__s#:Fw5ϡz%3H %~#j1W2ˋ(8M,Vœ|/Nw8:҇J6P\*ǹ24V\ZIM:|2vp3?ݦWts;w5fW.{R԰'\EdZ@hЪs&`'hų &xdN}"Y^"÷|Tag8Wy`v* h2uA8xvjg|T4X>l_Ljc G'/x>0)u;):̤OL=f@I<1G8Kd( ۆuw+uWByӛo,XuK8e>J#Wv@Aa<8_m^I6鿎-,\>?Õ{rt&M]=L2M^דxLͭ'@2q!7D'P<.8p*:^Kvicu}[bO7;o]ݟFt%!?uB~$vk>LKUj@=Inz}f,b%<5v=} ЭjOsR1R-3";d@RLnLr ")hdɦV)VևVm`c֌w#J~x6F/]o쨚3U`%5' 2eUE(X_g6ҾK#yƝ;3H?h*G =s`e$s KͧSćX C>_=1F 8~;Ω7%ji#x 3Z6AYWQTm0ETRw%a|-)IqKv MeOH"(?ci<*CyMԋޛO67~ĽS6TBR4#IrfB@oU)/sUT chb1"m\.1B"G{(88pn0~ {ޏ鸴$'b`/EMj+sY8੯.ّV*it6ܙV9RDYXK]ya|MʢU6 ʸEj;k8o ]|{0q8Po +]iL3 ] Og;E.rF(QeJ P菤-B~Zhq8̚MPx!C0{Re6 |DCat-y)M?)>4qza־[|$^)ŷfͨՋPe ׳S|]OR hbo3e{3 9X^0$ַcE,lZġx>mu6HwN!o*X*Q`Sה) T4LkVxĎКJ `V9Q cݦFM&y2{iYՅzL j:{hck 2xeZO-C@RMB!mrkdK͸!OS(-l&Ћ>9]MрT^Tm= UF,khy%=fӯ*(()6LF>#}6v LݩBL͓}~U*zk5K8|^ohUl0&.@C? =n`Cn[٬a 3c*+~m/]G*ɓK >SF=J$&RfwAg#> 4Kԣ~X6/ǖ?!*i<_tJf#]VI;&jT z4sAP98 &}r+#,}wk~IKÕcs`rlmz"ӱgG։J#`~I!~[<<ÿeTVu6 Sq f:XRr7G[]W4AKa𖡈?n&6 R%;"`>(Oh;[Mk^/M/ [3HR~3,-f"XN6*׆ӕО 14qz[-ϩVHJ Ȩ_1Bogc+h?ɤ^(@Ŏmhëzr{{HĊXG;w@G(g)1PE$poZlF j챽%Ŵ;3 :./> ڼO,y.ICq.)mIGq<&0x̑vXx N|/ 2:EExv"7ycZ<7F,#6?&Sn)ܸu4N*O!+*T:&1~i$S#I~ =60$V,E4U)Y'i&,lD¡P-'gUozBDjKiltz5ܫDڿdU]fe@Wm)5d~3[׋m94Xٳ +YIFooS#14=?&#^RLGRfo0G7W\9 #-;JtsFg׼dޚ7D#ͨjYb`4f=G$y*=trN|\ܿ$nC =KļSJX1$lf15ɳlj.+tp':D`J.J;~ Lcʑ* Iu33%pd:(9<`ԥ_M5bJ[ކ0?bt@-Y^/.LZdtĪGxG ɊM$Tx>ae;=Ն{|0 z,qʦ\%i-)#:$,=u(PIS:e%O eY3;at_;7i;SS4N u-nKm$,~Z Ny&w=SsH`hz+&kfm,T)84rj;}2hȎAM6+H9(EP*jm~/MD=zlM#Ǿ~3 ҇K3@͓a33XWFvJ+C_!f(6HL.Zݽ(xۓ_h+Dʁ3 'k]XJăT[Q3OʎU|$9I4;;5ѹ9Wh=d>I;Z6d'™cȩi%3@rp7>}#mzD=io>xӓ}O0֜v}TOz#h{aOaw %U *⡍ʐ}175 kd2Ճd8KG w:SC츍ƓJQAs흉.A9!F녗`yVb@YVF5:52_.c[ ;vW+c8iŖXGN{ηr!>D.7DƊ84sr  \dy5i?|M_t:$,>49Uߕ[HD1ȓ[􏐢IH4KVlpl ]ʦv9X?r9@nSѭ^V5 - 1=⡳<>Յv)^:+瘪vWD=D ;ċORx5rMz=U:nI/6YfC|H+ܛp=-yV8768u]jJt;1wLP@5yK6LoUWD@-[ycW,'(9'>vI0{2DޒZN{tGQW@=\Do=50#[!lC+"UkKP7ϊ;|WohA!s#mӤ$3*6Ot8*,X>jM+x׫"8}2;C<*J 6&mԢ\lu#XצI l3xܵ>g#H7*8R6_my o?6x낷ɹHq~x#v*^եzrDbo3"+{P3C7١!-Qz1O= ’֬9izN='ݥaã+h(>a(#c4? Juccz|g'|P $<§oZRhmRŜ}[:\ Zs:6zrm b$F̧Լd~>炍AԧZ[ȺL732-Y[%+ІI"W`x{pxnU`fv :;v9: !.^<-8r1I8[{dsBU6<ZKǍ 3_/Գ(^#Š͖!LWexb:)Q8X"E;DiW g\\ RPw 4qV]_fHOZ@Sm"Y1̭]Q(,==hڜTܮuN2eXґ4e5FU|q4ԁۚ{Up -Ҩ}DԶBދp{M½?,r6SPht`RS!=F`#lANlm2cR|b6]$,X^FfOHŰO^ ap $d:ߧ~ e4 s\EeFpfOJO-t̀fb~[Lf"}\a\. С&Nꈠ&dEK{ę MGX\lB$XD6GCd@ށ"aտꅡBrl'Lo(1TO䔑ÎOДºYaE$"I*뾚@C_NР7R sط?I㾨n GiY/*xw&̂aqA\UU8 tfG><ؕ/!.S#jz\kR4d깩JV+q%qG}* N}EjH{7< %^w-×k @xBX~lUp$k jr<:km(؅',~tA#AOi"8*=)J݄6O}W a]6AdaWqO {ȇO/Ϯб]n"E09]1t[`U٥+kobN\SXɶ}{3QySt00@`;;(O8`gE[Ie$~OڅO$GY`6o[sfݜ=זRvz'33$1@ SC`18kQ\ߐ&vålWr!4nvyeS=Eޑli塀?1`U^\ kvh̎%) e!Dlx:"LQPS:9 otO1Q13|[\ %z7gt+f9cU9]z:b\R=]pVkǽE ]HzE$;NL]_l&lS|hAXˊN]߶2ё^Jfcڠ2ؽ;>T1즹z!l52.|}9N uQb= ~c_88y\y$<К= K+аpfxk%qQ؟nP|J+}C=a훔B ~Ψ0];O7;SLYDݚy8g}_^3 AjY-!7܎? +WEik>S0+vl'zF 0onMfe9T[nk&% 5 Ah#AOΏH}@8+!Jj{P/iu(8B4Ynf,z3IMLC\mՇz7Cɑr(w6h1T?y,@Nk^=b'g, *4sM'3 X!p?6I:Gy\Ձf  ]61+^СOdt'QH>puaFt2Uu){ijĭ99K{2vEgQ..o)7Hי?!=9O*ZԂ4䓸ts#B%u EZq&\hC ]v"0yOiU^f…n̿AelXeW)5lFThtNR@+`*Xz}_( !"L^Q9jYWߣʴ]!TBIo(?xx+2ÜbfSSY e;Ied͏!?mm-E>83YL?_U0u[n 1"e@h`:LϾirmW)W4hK  H!ҏ헉U4GPK">kU=׍;8Uvvݕ%IцW( 0ݹwnW[sB,/ׯz8g7Fj-%EI)'I1Z0X=8)g Vl/ίd.tC `{O9ʴH1̫YzAN"D3w2ӿ8Ac!$/= (T &/UOrqdIJu6-x̆kiD,߯T B}R2CT爯G$m_'x+/0>Z[~5!l+"#Dw\gQdWح]Hwյ(. lF \1}/HI>Mق޷M{FEfF^yt:@B7rxeqі W$!Gx;YCeUk8h^v`nm>@wˆN/I/viji&%O,M%LޝU,Η(sUX-"< MЌMQ8qcM:PaFYiKO7i0z( )x<lFɡEkZ脩=قy2;h\*Q>'&MI.B4[ nYg~IEa+:+ BL<6YF؛`I#G'ߐ3=~52y(|>gi*::ERE{ !_`yΕS`(`j%0Ġϱ7t-[Ef"6,mMfB\GW4h_x:Rw"ɓƯ8L3㼕\}/y'I3.$R^sn[wA`' #]B‹ʧ\e0I.@BQ;Ou *n ǓQ{ۇP'8Bf5`Y)Nӧ>>c.7t ?VStj.|r/lJXlGe%3hiU>,L}2~]]w[0V ӉyšqB@AqxDoL)T)z8c/\2'c 47c'7ˡdZܾd|myץ0pj2!ۀoҡu +֑h.lS.֥(tmQ?a^-Wy~,7"o ('~i8!#k!gk| '$iALA3&0P$@aE$22{ax@ò=i? mG/3=f흒tdEojLɖ;rC^鏂%__4LڛE{P)2n#6-D(AOєG7"O 0)RBy<]#$ŶV>ԯ8 }P'E B=L a;x `ί7xP(glПxEs_Yok)L<$؊/w|l 'átڟ[#t)up#q}m|a-=NeE,}2ggdiDn $PgH_E%`}O#Qd &No^\}VXztkftjT۰A#`$hYrҳzNK%͚_KR&r_QlD-a/6]ܕVېa}5ʜheL oTQUS2/E=ёw !)CP 30jMId^)G%u_pG@x=sQ1d%@@=+PD\vhtK[rV(6M?_4}W<FDNAM'o8YD躿.IZE:륕D3_!XY*xG ϔKiTG/zY ^L 2 6}5LMf"YGHc¿UcBW1yťbtǢ6:^:YE@ΟTϽBERW.{\Mz&o߭ew;5W9k_Dޙk~K ``U]CJWxᬮEޅu S=cnrs~'tiw#<o\t\<4ֺr\iSj8 8'*_ e JzO >~r2y jQDjna-pɍb"O pi +dgu2cY8 ,PZGA9d#^3C/ uAD,/`)pL44;yO(P> 1s/4{w3p HH-^FaD@ :/Ah)V\P$˝aEsP^})dM~?zFs#0 ^i+|Cr 㷹.c1Rᢆ&"XrW8SKՖꋉ P Hg"WqZ4D&7,SME$"6`O@:|s2<7Aݱ2 >~]p \skzlM7P#q|u؉H 8CEϺBhU_3kv 5^{q*`-``3Ldi`<&dsE~**[@x*] 8 }2TW^ePHG0Ys:εs+&r}k>9QoQ*y *+8M4x(R }7Hx.lNdB;)#͆ *(ME8\$]U: Ն {xt{A /|ڳL7=pA@T@}{GidXOUzm <)'T!c[d3B2ə-uD5 )3|-BC> ){,92,)pPtgGYb~g/`p+:0+w}˯LN"6%)-^~8 Vn? cEv_/uqL*\;w: H7BpTϾ)u1&3R-9Վ_#N4 fb>S9JZj[&`*&.sT?k|DU>H~o*:9x_R[ {-?` ]h#b}mj@.RrxlfND=\O*j59;/c׵LΧG/mdsjϰ;ZݻyL S //{`![V$OnιHv/Qg7hkyGm7` ZȳSUDE(뉧ƎWwu {QtH%^Q!  Ws)K6{FRDܭJ* đY""lX,_Z \^j#~jc,0EzzH :$yߓ!l"UxOv5Cِf)`$uj#|^6RBCrB6OZ$0~-U!eED% `XP2i XjuOV ,9JQ'/xOɌKԍI7r'3l [K[kx"Gaάʞ %/_os-3QE(MYr-1;,+~зU iSQF HP 1 W;MQxSCWp3*%1qNJ?>ON.㇂47qZXS̮@~^rF [d*$ RHΣ̙_e}(Uwa< "_YA`#š%(#-sb.(ee$ LGLś!a@k(YȺzin;Aw*(L_',# }ο61ڬ]_9l'^LwYnǪ5%%p'=/;۝L-yzxBM 1]8K8_Oi\[;Uj5DK.-4uvq.yu.WeʾhMG|~B3<˄_{ȕxBA˨'{ּaE] ތdnJGlkڬh1]xZTҡRdmQ8z 0sLW7$?,{DYi"je64ԝO6hJ<>!o% J9n t-=n-+m$䉝O|IIt)]( ؑu9$*Amw0 ZP{egKawSuf{e\Źx802h.\vFp֐,5<-qIk)VSЁ~\ pW|Y6pBlIc#e=GeC܃?8A\rk}.:5 mU8NY{] L8er%(h'1$=)F &e@Y mޭ(?>"8E}b=xC~^hy,fTN>Oi-rMT+I\pJϐV>\]8C4$K5HE?ڈ9DULXb`=*nWm\ z{NA>g],!CmN@E8W`Didͧ{0T9\^Tͥ;'c(J;LR@J_cŕI]#4`DX™,(ru*hAYzV!MA[t*jB{+$rˋ0;N_XFܫl䡽LDk5˜g<}Z;mx5F1\M~;O9Q}K#ؔuN<*YeX9pl&'ѩv-ezd \W$-%Z#~ې]EVo(XG"|M2|< )(0"ם;é')g#hÑ$k'H3x"z?0 &E{_'5gb M{GBn+ =gh򓄉I?uӎߠ;摇,q4eژPo/m5~cϽuZ\'mX 2<~Ar6*d lB֟ybVi:kff^#혤Hbc}k2g D`TֈogEM>N*z) c4`l^xA^dܐ} FbH{ =ţ; L4_۾2Ttl9D}cޑ|yq> H<*|ڰkET7'2 d'2J88u9,̿]*@fj)I*Cih}$@5Fsi{nb,qvD6n+"*.7T_2;t9 X2K'S*:x{/XxnCqUyوb8qܪ+U%Xg,KT" &dq™iHp$W( 1,&LS/3*Gv{Kjd:u7 NHn֠ktw tzp츷,rкV p0 4Efqu`2}u%e@4i*/WR`1WN8٩Pɱr8X%Մob،_~<:p!H[<,oTĦ]hͽN95csE$خ$\~ǂ)/PҎ--k$\‰*7tݶש?=8/͛`ձ_q?2 *'-[d-ODl,{p_+67EL$I_MˉXsv=Vh貑޹;BgީՇ>kښ?0 YBeP"_"MUߐX w5n*^ idftX 8.>81dY#u[\rVa`cNVj$s𚣦VOYʷCk2t1(?S@8~n*ڢxHcLZF.nwQJ8t݊jAsJC' dI$FB&߸4d+'hH]].ۛjh=I}~''ZY@ǩ O /"qX*jO (;Gr#ՐX2!In ,֡d:=?Cg4  ;%oeRJ牂 Cho'-9(Lr~v0s@ĬH-LJ*˄KLt_(+-mcLx9}f${=j2H"H-pV9o\ uL~2T?JDBxZ.Q3:l ;BWX1!&B"yAf`R5VC_worj}=6…d@[%uX9BЌR*,[섅j3JAz^"E#-8GBsne bܐ| ,^h0<8cM #,F t kEl3&!dk8餱+*dql&B߯mՀT[6Q& r=)"p-pX+MD{Q"h0P╜/n`e|Jr>$`mlmo7 F"kq¤-9] &{IIl;nFhAHAj5M$,j6sYK n0L:ś?Rw`T_>80'<1(@g3<-CE=SժwzWm^␷nC< J_yr>`֜КFgsn8xb"Z[Jz5=¹Iݴ A>g1A ?Ir(0v<,.3{mcUjz0Vz={S*Y m?C> KfPeݙ"%qN Hݏ' (y`&S.g KG.a_C 2/mȆLv/~+X l4P -o؃-ڑݞF' tJlH]S /JEtUuQtvk>c)ة^/{BFd+ IK)&WՙB&ɳhE:hJںxϊU7N3ׇ+xOC#l#}ZZp^5V3ǂSM9Azj*]2Gb#p޻G%5j o蝸͙\`w9^:o$hsΚXٴ曰DQSk*q!fLvZ T,Q9S"qc$JBғX%yL~?3Džȟ1/*,fn2|" GUx]DȮ`֭)rNT:%#L:9DG9Lxz?p^Hp߂Cd[b3wdzKQ pB".MY\_j/e%I-apښZ#IP-9cs­8ŋӺ Sp&Euиx9"FJڹ5hBU?s~τG S6=zo,T}(lk($wō3%o*:TM揮ai@)O1氛iuz{plf]v(S5ŽX;Dʭ5ڂrtrQWUzUlnT҅ V$c/WNܝk_myy4A?=(w:h.e*,ei;_}W#]OxƔꮸ+/EޣR25t| z&R1 ̊@Rs vNdU/w}=;S9 1Wju_}s/P/\Y̾r4KNh͚n lf@}JXoɳHW` eFz 5c8o#Tu8F] ?`t!8| h8I%'Cu&n|jPk-.!K)gWK^Ce@e'"҉իM x,(%q|cn޺wV 7Yd~ZeA+NȵjXEki1`Q>;ʓA">q*ΏEVn ,Xogb^Hqk&-}7p Zz^Cy`jݧ j2h}* $T;W0vHИ@V !{ѽԸt#GϏ3jMBt؀&`E:^bx ry=KlMFJ@~+VI  BmXhG1.a1&ɋ?OgvG1)ş{*o#`BA4mԭl̟Jhc~}ƭpKV E^q~9b5*u&^U>CX$4!{m^^E4 `2QdCVj`@s8{P_ۊ~j鯠|P ^t.;*^QcSI#5$k?a6:M6g#~oy44}ї`IuuC%p4|1yZ8Wcb,t?1;ey~a_qhWc>Lx-VQy`]3[6 y;.ˀ환IŘ5/Zƍ -y7p%XwS9 oxg̹e1݀f>ENlo.[r]|4$Su~ И+G-YSc[j-FPN,D+wQ:`V~d~61Y͋Fjճ2NLã+a&[ck{Y̖ʢ~UHA#/Q)'&;m['bgEJ]?Q $n2k1&yKmש,S2`9r90v8bzxp)>QVV sKNcWi gR]9C9j9/nLe,Vnze5zÕK[տΕa5+ˏɞ0J"d0~Hf/\L "M#>}zLJ*;*mVP_j|[^a{B$.*lADE02!KaSW:ꦜ b:0FӘ l(A"W I٫ ѱd:S2$aW cD=qcӭ(]dr!ytUAOܬh1J"2Lص:5-*3V5*#4rEdaB*Pʕ3NFyJy`zR90X#[!+뵅$#%,G/J~٦hǥ4_Ee`ԱעXK;" b?x\%S8 #&9 &PT P]o̷\H:4W})cZ!(.SOWaq?Sx`>Z^b(/$\x@.QY/ $ bxk ?i5 e4&q~YRB(rsɣx6 9p` u؂~6ib# ؇E(`#3=Y-Wj ߾mHP X)frX c뗋![2_ HQsdug* = !|`]U )BzWOL _V 1υz6q1ߺ`%:3Wl "w--t&jÌ 0kϠr|!nVV8F{u Xunq[sqjŕ\|P3G3l"Fy,s[}jxJ:ZM@JaD"fpAGeg ¦$E(Y/Hm6J4?ݒY_P $R5LdAe A9j 3`1v#v*+G}d8'5{hJMX`{V[S+H$ S\4ۚ AkT ry\[y 9-aMkVF4.G-Οbed3mSe驫EJ_YV!!i'fAª`S'Y;F}Z5/s̩FF=\*AAc7cNg5nڍ2—%?}- +4}=i:]l (^ӡHA v_]0CMj8CN_RߡZxY6:aRS]'i5Ƙ4 Ra|k d$J]ymДm%TFȑ(qŔ4 sOi^蜡\+/_`qMss:of.͜O%ݶ>~ݹ/n-`9]qMVb!Cf0S?֜]fo\QySѯB6@@ | 78u*qYrY^R$j 8v.uKv[yjudQEPH2L*{6ؽ(v{",ռ:>!x2+ͤSz߬-RI6fMO&P +X2Nx 56{$R _wE:Ɣv. V^5WK©Oe w!ܨUlWjkTp$ H7vQ^)FpjEZ'I; #E^1t}V b5}(syc?3QC<) ˕}hh>ſ/Zo}PY} v t! m0|IwWnr/ȍ@0U_ˡ^Q7"/Bb\`iLcbb}kqj~Mo"c@ a $lc߉Lӥ50UUJ&L;욁$)̾D/7b.W@\|c.Tp7=;WOd0&NS8;(QAX_RMm_tnPͮfq CN3_6(]N>%Nk` גriܡ~LRFqK0EUup5 peT.pQ+#$q7S4]wk\b4Q޲+H'2Ae|N\VD˨bE aeXaUD䓄FL_\}Q,Xy$ v:ɜ"w\AHEk!5 /w@DHƩ_O^A#7qb/m|''n|EgηhaHXFGD ROEo I-Eipj>?;,A47>'7SBeͱ'<ʮXl0e1*cte80ۋBA˷dz za.&ސySڥ΃_}%;>èu؟q8.;Uʧnֹp{(^aGZ 9=-524N.lUD3P$:/$,U)ګqj,ڟxߣ@I|eDQ7_E'E ۙ&U>rdv71g&".%;ȔZYq={24@Κc,8hX; Nu6|O(Y;1ű0(>O9s}f@XjeZr8.9LsUj8(uȤbf<0 LuCƁ#5<)۸"SFkJLQW,Qw"[C>ܦ2W7e:;I]/yd%"䕉g8nrشz25_M%Wjڭ"z0^0!ABͭō(\Ḣ$j.u]`Jr66~O_mW+LGܟP(ΥG7RPF-p׈У/{S~**uN`n) (S} ya#m۶#Yn[5S?N)M\o1fBՖ􎓙f%Vb4'n~Q&h|J 8+%s4-J]DbD9)gJ6 `$yroΔ-݂v )ǁZ;7 hs~SƊbΟ["ky7LDEt?Gם1:i޴ t]+5z`C3ELODWpw rmD([YB\#3KhJx{mFn_ҔL͜ƪsRJ>!"< :&W7YVM˪4Y9S]莬Kv$(QU]ZpyxW3#H#VR~䬕l\1nSܸN> 9~v"uW^@hR7'B/3&bU=J$B=j%s}bM+R0NK5@-Ӏ!ͫG>GdF#s&VZ(LbjB|#b<-Yʫ\ߵ.3+.]jWwv*\9)>{4ש\wI9`XUvXELlAr^QcjSb\ٕa0/V_T?.;Hn ?xDYdn 5XċU,=^. $vY4 Se b(tkMQ^~@QkҝIu[wIV~90Uo_)zmI/~6]w S T+\'C\l DIʡcHl̒pbo M]'0„,MQ?ޏhAh=|!I/H p,H!9f!s.qb*T9cҊE0(<8E3 A;:V:-3i#ܬDUi6+XуmiH3k!&R?^Fpҕa8%JP'*lbP^u~4aO:8{*T[7x|i:Pr C u?`v3 m2$"}(<^S&Ʉwj^{X]Eh, "M,]n2$euV%1NBGQiXw %Fn"wk;zɶYbh =(mL8DLyXpih^LބٚSDx\7E8\9>n{pCx K2ufq5\2NoNxD H\$@gG0NywlƮx˭XWDWԘJkٗ;G7!<|se5K]8G7ww򽲗"VcC'/u8v<+[ p)-\;a ]ضj EuW c)f@N WǢCwarhF;wG<[’N?˜D;10%VvLFqhlJ]Sћ˨tUC؎z#V(Cf1lʾ JS-e%_k$d;*& |tmDd]ϳ}'aڰBYH>JG9ue31v4)VkEQk˼J2wՉ,<6~tGlSAB76DdS\>B?%J UO'u L1X_9Jݝ Fcr:vG*F21 D^bOF4P4jG*;,r9TXF ^iݾ#[NdAՃgy٢w*Z vIa X\ am.ͥ) (w9zȆ!ooRNTF.d>Gl7FJ6ֽ4Ie˜gBl2 xs%A=k ÇxҭN 5fTb)cTwX55n+VsTlL|礎ѶdL[!HX'R !Bx'c8K6Gr>֊,'9EWu+iO?F[.ɨm\E2ǩ.j<|֦fyd^]0Sr-j g>"Ro )}p8e܅%~r\`|ͬӃ=i a 쨼ԫ7:"%XaT=3g%uq;oAq :T3M?G?AiJT"eay8A4$#3[r2ZVn~|tZq@B`0mw,7ʞ(+wKwjꃟpvژ%}39t-vt5C\3qlc&Y3&=#Hivw6t:FV=?GV [|;Bgڙ:tuj^#RzA%FGiPaJˡKb=b9q*I^Җl .;z/.:LCrqFl2ryWX]-=6n{V/m6epR!{C4h@ߴPM X$=6Zylź&#K*Izn^usi^l ,nc_d}2y_TL YNhBjN(􊦌@3#4u d݃-j/jr8a+ZFkSvh{la~~ƍg< M:&.oD,CenNKxY:iOIC 3ϧJHI҉y&[ۇ6*y幑v[C.4YYV \t ިy_ :b>,;=gVarhȢ(Y6% ;wcg8(wYf7;Y/2=U# si"Z;^>p$XYP)(ጦ\ *]Ym %u v6UD]ExtvdY6* 6F{FOFcg[]C1ӌf/vʅLPŀ;\eLջ#V(;az3=si#.YǨA/A^ Xes6ߒkhe`iDVBy*i<'"; mFZAGV5&wJ:7]p dB1" :lR!jrEfHP0[ @qVw3$<۾ʝؘ ucHфd<.伳-m?E$zUAu+<qr?5opذpX4yF`T#ۻ-:#-6' $ d D(A*<B7)l\;?>_k_^Uݷ-oZYZ%U͂@HBPbOt3O~x8qàrND Z}c 3 dP=`L6M &'uDLN~)F^WS7?ZXuɳ]CYE[HN.e"{Nd;B#BQ{ukRH > 2wv WdO 0'djZv3HB JG5̻1f5;hc~6 DWN),}L3oݳj \Nr "|#)]vڱv1wnb@JJp}G*a?e{*Fcub]Wh,#`yW˰&=nOR [Dg]550ty;sƻ0^_K-P0M.y\ҿA0=\ b :>M"8Rr]΁}B1~Ơ7ʈ(m`'†2no6W8o~M $`܉1m?xkpzYC|׌0_5aC'O/iaN{Oj wj.QAIeY:Aͬkwme(c"sl6{r(5tah /*C*9;*gZ@!Ya3<'mـZ(DFF1ZGtCI1? U=iV@ƧxNfImȹROY7pxBj~rf+E8x $Ǥ(%jd㐡QxPN6oP'7?FDB":~9 pS1{5vvp}m0S"z zUU 6&B٦>>A4JsO` /V-&VUj֢U}8%Cb&bVs)D"[6qo!e۠RѶ{$R*84V)0+4A=MW,\{r-p[Hj:SZ6E!-Ui(VoOnZTedw`9U0hB^yMĝ55P@=[h"vM2j[. 'JvE8yCuJMYvŖi6c1q.=SgjteO~\QP/f, W>ѲKT,L 3D; @3,q;~yxbM yW\.S{bj7c :3<1eʖ3Gȏ2*%(U! N+r"Gw@wOP2QsBMʡFβ+hDBVq}Uऒ "·^;.3RERx'0NVNG5Z4W DDz^YA|;KiJX=s6Q&mN GSQ1c$B:54ﵳV:R6|wlb r >?:~ƚy 2ImȃDǣIK+ 9*(_}q|xUe'c?bc;^+RCV |gfW ~r9<2vh<^b]a|ђ쐶zSQ,"Olo?6|rìkO f!ubsn7j!c}H 6 ӤY_Ǣ~c *ZIڧWe ɒ<g)_la:(եRtйӫ*θp%1N^licL6~ӛ8#KydsrtDkS83;~sq+,ETHBʘhNEa|-klUQ!X~0Z8el5e -OMXL. ~d1Vwrwd5/Jr%D]nqmKQH(jF!I8LƁx o;Cqױ%(IyXfՐ^x^ՁvUH,49°HGknGl&͜4W ffИdZGo%*e}`~{ڊapElNa:&6nI8*tǠs/R "bIlo!"+t)!SVAMu2ߓSj^- Jdab:ハ)GU[|݁!Hca;zEBT,X=VQğCUH:\ 4q¸~|VI6QADF=MwX[Ab8AI{ڿuIQQxQM ;:ؕUkt=P`<6Oh]x<&uAJjg'.|Lx\e| pmZ+]l'ԌXY["96ǡ]r`s켜>P75Мj(. 0В FКoK-9yk(Cf+ ɟ>#* ?':av% V2wZDz%ƀ;/r1ӂ\.+ۙEl -iP5m96la\1&ñ@&t;@k[G(؆w ;ibT2aauR lM:95 ;qA{ I=f^O*1!,|=pVR FV9أ -ag?TR TnTND~LfWsۉB0.Ȍ: =bhI?/Wk_brٴlj' ,*ԠE㚒l\fȩLR\u u]u> 1賯 jJX(|= *gY8؃أ;CHO!uL襄StxmXC'YtQ٠yehpUÓ %IL ,wf+B>MSG_Ђ (5 n+,VCLA1> G/0ohߨ-!PW9k$ɪ1Ƅh@KJG}5ihm?s(TC0Xe$fB@.a]=a`dYnp^WzbMULt^' bX^0}So|}+>Yވn=˂Lcns]ԤVũ(5HVӱBA_fN(}%YP1Yii+ @'L3ىgTcwi|mR+Vxեx^!xsSk]HvYEo+8j1yA;Ta"Lkੴ^&˖KT#?ͯΉ{x,KWdӚlvuZ] R!LNp"O.Gc$Ȼ^pdY{1nPm_*$2i*e¬; W!I9vIɅ&%"m33:dj$stz^řIyu}%A,@3J]&ShNLB5[cB5z zL'J4a;G#a*S[^Az aaΐ "[f9B/dieEsZև~6ᚋvR.~ rf.& P7拳9? \ЎqGf7aKm1OH΍i'YU+*zֱ"w[ιҭt"z xYLf?a*'o7bu_ho6wb#Ϣu񑃸TޅV-0Zl`.7n.%q7'{lWhw1z1Jcpk<w'CeA ?9uگX2_qWOܭg {~s3XՊK0DB92}r̼ 0̓H6ro'NazV`#FF~3mI ;>9~|L ~ft Hk=dDgJZ  !‚nߝN{pW,h)~ano٠OQ{e6;~F<&~>q\]9@:K)fkCojJ%LOؼJKd Jyژ00;6HrÆgl8#J#TA?a{1nU9"Ғ5 +GǙ67 3fMӢB<d'?\$@f'^ "Sx֑]1-659sQ"hV$yf@{C8Z,?#[لmέbfШ<`j`xGc[;=`0xM^MI+AR#[\C5$8X'y"v:'(242^ûΡ.2SMIrbS9 ~L9蛤&ܣl*v 40fuN҄ԣ@jL`i-ōT}>hlrC^)"^hu0)< ~SFügl'st=}x(?WNժvp]SBZ/6]/Z.E0'h3 pN38Ré@(ių"-lfL`YP%B l~%[1Q2  w\pZ݅x`=~lFk8mV?+bxlddGœ[JДnm8[UV:?x+-ǽu  LyIAb 6rb-z686\yh|sf*zȯ)A0 /?JA<6GbM4¶;uC]žM:k IAm=7"o$t9?4OF .5#qdzɡ(gP`ߗ0g b|6G22COz&Zƽ-z^r زKhl.~ q+8$l5\ !Q0K{gfa:Nf/fX %"J9;D?!Y;'GXˏ(E8931wq6M?(1X[wWDJS]L^^RB/'˄6eH%VDye/?9YN"O \x>) ٜV8r7=3l".+K:Rrv "Js>5.'kMv|i=Ry+kVF>]pdNy QbKLo>7YB) 7zl(½`ހϤ/HϺ$I3Vʉw(̢y-BeG95>K^*mCՄ s~lڌQףU`Hl>(]W)Q2c1 ǐA@[{Xҏ&b~kEt6g$s"RϭDu{ cP@Lk&2ZTtm\_j!sk21F;/6="ƧJ(YѢ3~D #l5hD !JCKQ yDφtZ fp1թ߰Pg|)Ay#A{yK!^#7nʹ*MY1as^y،zy. *qzf=9ha)Pλ!43ףnnr}l:6 gjX &`T=IQu՝~C C9Hx=TbƆ01Δ rPP*FKI9T sx< k GWYeE=?t}}c~3vͰhb.qxae2K ڒem|@燄k~nt4,h1'+|`:Wm*ف"y/"42):ɗlY w2CJ!N~o# o2^5'U2 OD[CÌIЭjq$0*DIngI-D_*x(bޯ 4q!t:5Bm ]ɻ'F˹EܨEP:dohnۥqxKāEd\@V^saB/SSQ幦W= wt߱T>S;:]w43k(ʪ4J{Mvcۚ.N 1Ȃa$VǐMB mK'Mgdx`gϮbTC#"L'|u8`,>9܄Zi8#M~[^6XK7۟9bZf,b瀢Su:DSҮR稧tHwk`4ϔ<+ B#x0PoOAh=*P,'aQTXtI\mpDLh֬#wBǻ壐)#SYFCYc`|,;tl]WD-Ɖ96::h!2ڒ@sn-{'ȯ$ )p RuzзN-\w' Hl5:ӡQ NUEմLu/KiQ=XL{.VKK(ixɗwz3\&` d4+Ph.8Rs߆, :LSxQZ&.έ© 2s[WJ/=g{wV ?Lv.ZlCa^Is3݀&<9ޱLROX]5QNGF\!gCA3図SLWzi"ՌΛ޻1Ub ;7͖#)}6ܥH9w1{,[,cPNf!gugjN~ZtkcE/l)d9u`nNkkgk߯a)U_:5ȥ]DXb_%†A[ .C}ɺR2}U_OqU$1`!f#:BS;_:N-aBuA㩡`Qq#!}=c5iCS%VLi!';)\ݟeΰT^?=R&9"seL!#eZ/h*9,@b+4B!8a6,A`i\nf=j1l0T%bQq,00լlVF?)R{4pPA^j8Mg, ezEpGMRw6sՕfa CM`T;15o XM8g}K;sG)gHҵi"p&$`{v5 ?Mf#XE+%t@uR2.ʆdoLHkAi:$(v {(/?+(NpXwP P;\R381~-%ؾ(ߚ%qK_xkfJ*Ȗod^==wWvsRӤy#RZ@ZkzY&VҬ EAY-vIÃ4Rz$L+6#MXy/4pC`~w.U}.kx2U#b[CV #WʲPB|;MKZO#4eTb*|>a,"q6S[sa zN]Z9N+lH*5F@i̙\k-y爸@Uޢ(7jZ]~]H0hqڅhTH]O:q̐{NT+olxà(o =VyG>7Y_ݥ:Lp>#{w|zyGHuk9mzwUEq*~N|@uv6 'P֯{"DvڴWT9Gf頛zɴO]Am?ŝzRK.Ť)wJ?}${ 1o&4ܗ$-L عؠk45@!~o+@}{/GisWHgysTo$nȻA+ؾ)*_ŊPPUkϕBDtܗSo8oA$6n)nQKz ua.נ, S[ʛ<4QkiƓSt@5u]_&Kb%b?y.Q@YZafex/inst/extdata/outputs_glmm_vignette.rda0000644000176200001440000027153414413615542020761 0ustar liggesusers7zXZi"6!X 6])ThnRʠ3$R F9[p; 5|#`AL PlR}NW|Pͫ͵I#NUXS-T$ʬDM*} 0 #21d1 oS-B 0AryX'Z Hu$ l1ԔWZ}M7F?6fVˠhf8uDDp/X/ƴV7Ţv@ "~#jZ"``0 곿T4A4͖çywKdusFWWxjmrg+qA\h$.B;uh5Bԝ"A;"+md ,s,&׹2Z8=)f0ajs_ Y+Aߡ\oOJܓ4JPhnj et3LTUB6 f @4fnwP . Ă̚xF0lJ6oAQn\mi[S`bj0^^Z+z+" G:f#f%,ꍀMCƷgw_!BF K\){@-f +J\N,f04)v6; x3ހ|eԐMS]$>N]7`Ug>8xjOF"1<ʪ.i3 <ӈ @%zĤ[$;8cxycЇ:nUZ\EqzG>vo7+uT*[X[ka_No쾄NuI,:?[/:R¨6t;kxG(;j$AK/MH +Ã_jVd7HDQd@t"'=JQʳq) ՂccbN] P,x uָq1ֳY%%{ Ƙ!h2D=叅i4qSv?^ ŲlᆘmDUƶ)wKacd~۪d[oڕn>!9iڣJ8CFF}2νtW<# A CV;+H6l?iJm(Vmf M(Kb*$h,GsdLlp.JiĵT$ PeHa>M\'KFP7յGIX߰4U{!~-.F5:ԉsH4b 8bx0?y IgX԰{Pغݣ9izfce^ / /ϡS0&jQwe|Ng%D(<+:Ƚ|v&uOlSee?,ִct`hS*("uS2%>i}@P)}c3Uϓ[Ctm)1̗'ԇ %֗{jZ(oۻcuQ '!d Q`, Rdyߩ<֕ӥ3u:iyh}I@h\8f^g)+Wg^5lfrRDy(hм,Je޾|r#J:C9QpUZUyv| K0 ԡq[/Wvߙ N2,gvGe }\hnt ej]˷I uM 2rMcKNw+` . (<7][tX݌#?Ȉbc$J(&/'yeHyS@gQe]?zOi96qqZp/-7 YmA.k_FwK)moڥ- `%!EPkTwPrih-&%ϑL+mP6=cARW i|; b_j扛?.f|ѶJ[=]sܮCȭEy&d E3 ^.CfdIPPqœybS{qN.DcK+zn"vT޿$>2'3;6=Xv $2IZ^QjUM+~y0x;<7y!GoҠ5K.1tD .! 14etn<|)Dn-uZFN}3;/.Ӥ3aDFqv _&d7C/zrM% J_.) 8ZjHq,mC턻{6CuEכ:Ahˑm1vM(P.Go ۹;\cz⚎,23#< gmDq E~MkvMarϥ*\pқ|P.̋dB& Š4b'sbj h/h1JKw0ݍInnEWq}C"4 פ-^< IeQ䭯Z,txO\}zѥHk&ʮe(]~T6Bs!MG|]虙]2dUy@Cpm@v79$4+&c9ABN.Շf\.2i>V@ۼ%W73ta@2BP5=yVP"qdІ b`ѐ#FϷI֫&$F,2UrNKO+ Q(?=fb7oB;|C [;E̮";Jޠg%=I+ ֩zj~ E4~ 2%8EnV<] 9 M/"~opUp|`6F "8b T`O[ 9޶j.0g1|H6&$q<>a+lgѶvNڱoijq4v>MQ`s9mMQ̜t>Zi?CMNPOh?<@n=,.XF0Tv ڦҒ@됳N.~_6{xgU&K6=O ez-1tKF!A)~ PG?gҩ`(T&̴K>ݾxǡ`r{riQH~J `ܮΩFb}+ZN<oN#F SK9H L#}V~,xūSKJw^1@EZhӑND!oޔU2X3+G QߩԌ`<2̋ij m4P][ƟqĝvaiaP4hqV:j}0J5 O2c0fȺe&qKmN\L9f{z٣ (=jF>B;B\ p(-tk%/ f]^]}3 M|kܴ̯3D hy0? 3[73}Ԉ9= gqŵ$!N/ %f>) bʤ>lhWׇliA%>Zf8:[{ _Mc/D)3n@뿿1<ܲJ㎇nw |38ϣN\8s4hr]ڈP~4o/@˗[O(zxe#s3HFAyi adX0h_gJd]"9PY}̨rsLEoNIk;K,>c-=>c:6<=0ί N{'CIu=~ҁ9DԞep UϾ2Y"˂@uN'&yxVU,eIJ퉸O-Nf?ìWj$ѳJtё{]pT(^nVʻ5QrM| pw}~Xߩ]~]3yM7`Hd`:mU1gb9 RPW qZmwQ%aWkd!\Eok☶rW U^OۣUxy\؛"`S~e)sGѬֺM%qXH ೵Ӏ<6ކv硴'hp&UxJgʋ I]U +`M- aOvٵ$7<yA;>zL}-Ev֎8Gp+J,\Hb!xo:rT_BmP- ݚGs8;g{S8 FAg{ ? 4潃 `X{|b*L.-Gc;<FOzfF(=8u m̚{=]ыvzK?|f:?&YW;9d!s9,EX\BZkl")e).I1WWkWVsab*Cu͇ '+0(=A4 w.lZCD7w] 4,6ŵFť[45]y{k&z/*CzLbR)/uRG&KLqTYVR&Jraa"?Sl3orҊPʒ1!q2U^ ^T-Ӟ˜eiYedD>˙& HƊֻl%yB.nZ43pd71ޝ;Dqj^xst4Iv)LrK'B:RDuY—`8Лy1.Hut9}$^D '%r78 "m^Yaԧ_79ލ촇W=Nhct5~I5*fzjX‰s=pu8v)Vom3R%t``p%Z E|I 屠NAwaP(=%tJ.9&E{\ItA(K csߒ{ b=!:w{=C?'fso4I"M~ZŞ?PE>u,R;~^XMQ<3 Nge|I+wЗe 1~ߏzc9=HKma`n t#Q[V薎s"P9 /Ӧi3CZ@]q 3yI \"K/5BiȟqR"@kzYEM%WaլɎIa{DaY0XaS7CC'S't:^ްܗw㭋S`LUSZidž,s d֫L1#.Mv$W&y;MTގ o4Ιݮm <͸\r4c޳mq-Lr ӓ WގJo¡ͥB*KHS. ?rMdGi%g6dF>Oa`h5ۦ3 EϺ^[Li;1%l^%z#pRDPEZO4= PB$1bև\u 4 \R8?so*aY1*&@L! $2&T>^qIWZH0XlI.EVk7~bdOY5gN '.c#}qshE*O}$-o $Iv{ 7;%Y0ixDžqȪϰv9?)*)*·.,*kFgJ4nR=%C[|enu|dGK72)4KJŚ¿v,lN4/Phh`vzhN|ޤu#CSO1sk%5 g7_I3g H\Zj-29[q\Hwtuxt"a\vn=ԘmźB9+6_waR噞:ERmp"0@ND,cY.n j:Wh9kORܽ=da)GmWTF%zY p0m_EpƉM>kވb4GbY$d P 1r7w&=6,V "i#X&̘0:6k?s JU2fg1q_0fbc=oշV1fpo)wڕ+,R|++1T73]ΩmM(ߘf`_U0'-gG0x?2-1U^KZxڒx>h8cH`*984=仆Y1{ar>?y:Xha-_ٝ9oml8y27Af]A4DB&/Íӯm%7 Oo?kzt/:m[MѪS)n~Y  # NrE.P;@PhGk'TI#֖XC0M66nGGd!4gTc>gZLڙtWX\ð+m +J)kmLzV'l@ 7ÐtѪዸo;7"m8^t|jwG8Ko#(d_ wU],$ 6 nOF?Ѡ/ 8y)Ythw)Go_:^: `-jM-0HVa_m떧q )8@y=$N['U*j `H]+6{W@1XԾ""j.mEsĿ$| =Oro2+<'% O@ޮiM[\ۓY*)_7mݝgzE>Lx2i:oƇBRL.)o~#c |/I$r6.pgTj{ Nɡ}_3xAbd66u};pc }kG?z)+=]m jSŞ6. ĉEBi0y[ mj)[lt4sO n(s}o5ǰmjĘOw9rg.ƧԊ.t>舯ˈOS7X|Kj@.onܒ'dSEs-:VZ :o1}dQȃU@ej΁FI[A4M^s琇Y1Vi_b  Uܶ$sM,hGHR,-!Mx[\s v 4gtHLHf̆Bx'1o H Y^A+?Vuy_% i1"'cE pywy5Pvv;X#PVVoW`6ո֞yi.49|1^`)(\nXo+&l* Bx}.Ow*BKL? "0I#(ZZ"+fBEhZU' ,ZKdxܲûeQ+(+f!9\(x)yF{ua$R$X QؓWiέ1#Qb9i>sҾuZLv.yKWJ` TJQNZT>5۹sLjV~@+)͛zՓBxU\`fe/5O۝~mFXRQF9_'('Sfq y,/eUjy}P$A[ϛ%IC[csJQ3nkwX5Y&|<}߸^g_R)f@Zi*m]:@n M'٤y~4޸cc!侍lw"3;Id]";3{!E!&d~)L3aoOe$mtR /a9RpLT"H|[Y/ye A7hkBq%6mNnĶ L]oa DQd )S[0o 'Lk0c4lns?.ZF0tR Lfkț_ @LA\~ uұD"k⠸2k_DbL2g<!{%tA$~@["B+ $ ZFDo 2=1vZy)fdzXAUji*q3>P៤c`X.K{hO?ua } u$AžZX/k>XS\[692N K"~PM.vt'\<=q kZʈ`C nb<<60mqcy6%Kbí 7Hme-aB>\ .!mG ϫG7iK#6jB簫Ded/HP޾}X[{ϝ-be XV kGS l<}fFV2s5!7x64aǵC#=#&Y"T]Tƪ5iT%^m=jŵHKQ&{).~ E0UV\ǝ0wiAa½36 yA&31˖O؃a]h&E_/o ™udM'&[qP浝gi̩Pf;@f}O;e.gXNT:_5Y2i>`T'{d0?췓F;yŮK]a3'Jϥ!g9K[ wp?\8W1&LNi!K+BhQb+[\= }tFPBhqq{cټ2 ͇dg) 6eJy>R3g W Aw:yV1dD>-TJd[T7Jnd7]Mȴe?ƇzcJg8t&aowt+kĔ ix߮0{SHO̶eWGdnG=5eS;`'=ųWTY!n>"BFAXqC\ gh 46P.Ц6}FRia+K}ωS2ؘ$L64y^?uƩGi)}T@[p^jȌK;bN`tP/r tAR,5 ;'MۤaqXs\Y[Tț\R pn 2e`&Q\SxSרGF81;0ŅRgAM )K=#4v*{ZR}++ffmEWqn+0QE#r Jk0`9ކyd_ 9."V\Z|̜AEUqM=0@-.vJQ/ٸg6 R}_dsfF揗/rx+yFд.Ǟ'ɰuQķ 95Yx8˿߾3`8f{g>_`b+)>G*qNwp㣺@_q9Q"Wz>h;A˄6s6nȋ7<-Mzg?n= $fgI\f|k`Ar>bvCk-E'|^kn>{#0kLd}x<kOvhL6NގeQKxZ$FqUȁ*Te,, )S~|Dثu ?WdbqJH Aiz` uM4U1Ԭ(Y٨@GbW(NrffvjllSP wݰ&3АVz$s.bڙ}"ϋx2ظCBc ?[~(o,)S{Oaٶ$c#%F?Z\IAٌ*!EK ,NtrZ ɮ5Εͤ5f~*4Rnz젢 LF>)̟1j3d25$@E \Ɣ?BxeATӴ8Hu1rTZ?!4aDh'Q# E\. ^ة 5Xb&Z&?^ۋ{5T.GŴ)( $&l}UM8$Q=oQ\u澘XS ժii6Η3TΘsHwGW7_UDA6~TKc^qLIl r*3I]S!` 4Q+|A7f.ɗq(#(!Էݏ"7976:H"GZ?CN3>,Q(clXc'!cwRiI;u8af4uvٯإ>ẄBUz<Vp[-^~Gdx`aDڣ``);Ed#QD?ϗϮJZ2iIi70yӅR+Z1[mL9~-P4;i:cހ',dt+٢!wZN,Jڊ58ӺexD8G%_9}STbĺUUcԖ]`?U7=iCq98.R=x eaDgޒ4-^C7lh m5~q^]`\KTS'*9E 2 HǛ L7}PK=+0mK1wF1PS0d ^ơSf=xcQp944J nG죚ç=|̦NN0Xv>b乩$C@4M#=o`SWd.N[mIkgkI)F/Ի|ˀ ;epoTfC_=żJVVB!sĥٌ.J* !MK!Yޥ>bSBP Wpj%oNi%$EԱA6n p+c2iywXvTGׁj?c̰] }ҕdT'(N ~(#hPߤ1pȺEhu58q]V [ t@:Og؆=ǘdZ{?}%v ħi#ngD Az"qJKe,r]1? @ ;3F{@LL8(lD }qD\X6 v:Y]{ƴq XfuD<3$֥4IS,h]?.fG޼࿜M?q5~}OD5`7\eֆG rPȨr#N 1{!^A !y+'Ēۉ0kdwB L"E:LLA[r=X0hPrIq3=O jYI1g[X >G}{xW;vr3Omfr,7Sv˹:68 NkU董*m]@զkH|=(wzwI&sv=',n!U W)!+#K4- qYy_N=ŤːD^_LYOP>mrżxN#rS/QrV4DDh8}7Ox:`brA⇺㯶%L&Y[7P6eCL`#vo/QaO}c~l&bP.Jt1A#G@$nӑuՕ WFɰ/Ì aeͽ =/"^KAb /K@<Đ ֥|HG/*' X9M]s[ݫq9&s= ADۅm&Y{OPv},Wo0b˗0MS ЫvJJ ƞ}rs-i'.i?F=&#}C4+|7{F/p\ 8~B+ P~=!QNv N)޺jR֖V/7K$Q.8 se6@r0̽o^_Q`Ɔ==:yE̗}vl̀vV#ƭkNaFmeƛbXgUl3LauؿND^1; O7\e3|OMvofBnYsv}V𸆄9Kn@x!%Docx;,Uvsf;q jMwIx[n>S*\:)Dy qtw@ _EvNm Xo3O},\~1̈Cr7P?z>_׉:Q#ᄫ g.u.èրC4rϗGA3Pd[_ݾ`^HG,ftM-sȝOn5!wtP'Uݼ5 `:};;OGUQ?QwDړ0roCs$@gx$\ͼWmdaN&$WWF<|d\A&/&8v;U礎-1z :S}Y5 80ze^ GNF?T_P@G6D8 Փ9p@>5*_ MrQkgq\Emy:UN~"w I27N * L5)`n݁~ ٷ|"fȰ_:{eS@e}Dx)cN))D 4& د=f_m'erl=/;yI0jNw07ſ_(ά&DNŠnUԨxFSm>r ?(pNRR8He2]-\ߤ[a-[ףՁW֐g \L6Ŗ;6LlJuDOJhVXe2n6;"nu6z\enDZ2. R{7dz#1]pf25yU'w |MF+6J7ĊA+[A0b~n3xC?/̑ HQ"-32';;?0'oj=$"*>gOwFe (Mcߧ*ViJY>յI/I[=H}*i3CSCӸB+( 1%I6ETl6Mݺz @)>'BA/GT׿`@oRY\^ݦI0R`0-ō?Qݮy goĤ<,UDI1Mo3]TE DMM]"-aJt]ҽT 6-GY<\duY Q>hQ`4id p'}?qrr"j:'XN|\BkČIǶF 2F1=io 9CV{Jo(Xg{ԣX9gxR?JX|*3 in wX-mk%UjAdnll-:Mװ{$O1OFIwQ>pN)K m_re_:/혨0*&9:W=>z̻KVJcب-k*q:"~~D$:s!Tm80/ %KQ%Uk2h`ED!(VK* X0sn\BiKע^5D  _miJ`Vqe_h݁;? ڝЊk0|n,:xjb$qSϫ[[t;w.rKCx9ixo7]nT8cQN6|o;ƺ;ޒ6)ڲ7h\SD}˸9TnSIՋXdjȬ]./Yd:stRt̳JG{U:3k$bc,"E хIWi1/ [Jx)t3LQ3pY2Ey\u7.]*̣>  wszUT );33M2bbSi&գ3=י?kAtf' XMMKxN؞~໵h]Q'{sKG0UknWX?[b@{ZZn8$Bp<~aZGq\ۈ1[#^i,6tS%zƿf(+"tPhϺct2|trCkOj/sT(UG*#4 x jfݛG!OCHmp+ -nZmO%Gt3":ב^Hj:JdY bzeoFXq6ck-P{!"Wx9[pe Y:T8ID3r,iX~lP&! ROe+&V6]4àrq{OQg1 D6%&?V\W 8JpJ,GK`ŗ@&5RY!>#7I%ZytabGvn"=7@u5q9.UK@A9.ʷ?F M,`)/lTm ~Q,b?8sGohZq)K+\DXT|eT%shI;i>\(ǽbUV,Zw)N,(a +f+a& B$<5*pϣyb08Xw4xe n NF&!Vg, OWk'剙Ռ4%(SDnmF#OJU_ܞOU3L;_Uru촔^ ;dOJj<+Bg)ב?]B4jmRʖOt_37XPRQ rm-?VʺQN.1*-"RoپQAN=^ST j0X&cQޜ{vύ A4cX}Kd%ғ,UDT_^q3'){cs,vu,ф%Ia*㲥Ԭ@C}c)*^yt\o7P=i]H0ϝ^s$^UC챪`tmPzԒNZh M M0DU<⿳cڿc;6p*A4l3u9s>Dg7/l"<1Êfu ȑNήZK@aVMA7}Vo`t7DF킇t.%Zh{=Des 5B!u=% .->ӝǣ&8.=OtFOhZwd" @?S^,,yR?O y&@$s*/jDUR嫮h,_xh6)LY&Hővi2݀t)7$r'XΡ˴?,  *U|8qo+[v;A-zlfQb][>xxȌ ǛxZx]IZm p\<k#z7 I@OdkԖ<ͮm,g*.`Zh0 ±]BLqqJ%Yjъm/8a @F~̒#kS$ ϩYM˾]hz F0?Ǭ(G];'{yOϳ9\FF_/s xroMv>1r 8aPf`HYOrRb~}\W3'7 3!=vαNjM*[+gۅP<۱)aNp %~HCH\9r gTd)IpPY _ g5H {ʥy1~D 킯6Ϲ'"o;Efp58Ah)8xXoV0ῬJ/IsDc-Hs.qW8'q=1SG#tF[8%eXA 2K.PZ6i؋[@NDJthWliNP:[ܜq!/?h?Ghܫ=c8¿v~;3f;aT8ϪgG"i MVH WUѧl%m~ kZ]=ӫ[^fgZON0o@YqlJu@D rH<à$C o YY[ϳf[e^XdI+bβ"%1U (Ga|-`%~A7n>30J}=;\9ɭ>Մ)zcGGy]39y#lH^W5EvUv>̎BڻD> wU{ݧͷr(lLӔ<.QR޷;)l5tH7c^OR@ݹ~LBuv{|衹ܯHؖ>ƒDUR^$c<fXmN9ĭ:#oN*m9~Z 6*)O<Ԡ3$qٗeEJ%$5|)++`+S&Yֈ\e!"~{gmxX>[n/t&EhmJ&.8N ^] ]U^]Hl7-ɑA?] =cey뀽yyQCB3zLF'7ʔ6|&=O#Z{ &HRe8oa4DMi*>1In,J:|A\!Z/UC0 wzx~" TIhl._JvH4YAf8i?)^-lr!X}H>o("@cbÁ%׌*[4~Cw^an { T̞ƍI~y#v H;&Z/J_O?Q&}}tBG`}vT 'Ur ).]]h[6 PvؘV0S'AB1tȞAۼ{6UƅS WJSoQ_xLj-(MA-{퉕 ̍i1k\:}2s۴#%V =r%xť׎Y>^jL]Tʓ&s9Nߩ2`F ROȯ˭(RHC-GsLG (7K%3cW%>PEQ@oe3Ƽ3I&Eգl^=Fi QdqG_p˸U!2y  y~ U^|lY8V*6o#C=K<jmNW"rC( !YFEW= om(SlIǡLRft.5A {RtGosF|cuTco44w`,Sg.E:oFN;iYϓFݝҺH/uIt߽#˗|!4Dy{D.CxX\~\7VRtKҿDն%@m/a s7 Q4զ-q~ .Odϲ+W:*p'V dH eKm43[`>ƇV-n2=˿`.eTb=r! eED'=yX]hSЈ/ZmAtڻj& mb6kh$oҀB &]x(Xy>RiZ&:s HPCppT"Z+ q{i5"4Ҟ#D FT;"ޗz8_iZ=@Ҡ]4s! c;0T#<ሪ3JqG6B3 j<S0D3`fq!\Qُ0謈q߮2sgDSBM<8?WIyU$$ĿjTCaTO8vຍ(@v<Ĩ#TB_i-~;'y4W[u -#*V䢖59k}= \YĒs ,b.JàbxU#2JWpZXB)/-[b[`wB#i,s6xƺ]p[e{(7EnĻiLޯ3Қz!hD\K"F=C?Kd ^׵jqύW=H:dQV9)fa*#Te0r"-Kr8qx擯_=խhh  N>xG'a4+[ ${;ho~ ŚLl5CѵwnWc3dM^8K0@M:u$zG}k\@bh:kUM_>Kxb V!dd+愻io(hEKgWɽgKa/ qi2ۨ12b`䕻p¾BN u!@ \7);Ze<xdy窬x34dGGmϞIFv1uvVճBsKd93Pϴ C*xpF@<G3LXsﶈ=@nMVIt;P¿ eݸXPJvj2>=j:<Fow"PJ";GF&f̵H]FĢ SlT8΢98} OdAYյz}#bsPaW/_GtFFdVG[0K 8@esa1TXf2#7iUg/;?a`= mj3.tb L q7 ;b[z:*Q4ptF]a7((^pnX'!B3~3|Z%_a iB+UͮD)- 5+&ɐ) rA>ԄRNf!AR.g.i=2?)F knɼ 5> =cqцyuD]Iz3uFg;SNzs& y@R,\Q|B5$tqG8g7;^,X ̼x> u5El|qZw|ij5m-ҽ iO} !4A5* 2To#~'+.N2p2tsw a}s2o9 9` z|4 TxCc +He'}ܬDY#r0.\ | *]Y44ĔNi2).]FJj c|IY^hP°y댗'UJ#`5Pr,! 9-#Y NOK3Q@^h/OflCO8XO\G¯] #vp;`8;*D ;W֞".wtȮv%kRjK1Q9s, 'T)֒a}g)aGىqߢq'#5PlMVd9uX/b^ԉ!mmiχ!B{J@g(lWN2K7eXJGר[턯yW٦ Nv6sqbuƔRAI<U8;t9;hҼ%1^ tkP3 #q+}BGe?kmGZ9d24@*~1)vfzAIO [5xDp=z[EY;Ն6:c~C:FI.*IOZT^;VV[iP.jq(!șevH!QQC3e!rZ_Jx3'euIhίnj*xқOmFz6%I^]r2%HL̝'+OȽ{$F@FQҒR ̖Mʴ1ٚeG"ug8yVPDK2D"︦ʕ4EZκ@`43luOֲ]" H#¸{tG- eA^Ut4ܲ&S±~ !PUgh9 .-GhKݒ{I $&oMN-G!$YP[oS:v;_+ Sfҫ$5Pzlzncڬ޿adigSDյX ӳʔC_&5 !)ez 1<;u)raG5; ;bk3W z.azN|@0n%@|K{k@m[!2Otv@z=`P^}}Gc ކTtAHC=ЄZ&W9AW(*1m_r*ju֘P$/N3g4;*PFꘈ%r1(=ˋcpD2j:F(^߇B7g':9\?>9=L%!I+}x^w쑛O?B1S.:΄q[&4bb]B.u#|/Ѝ}e/L2i\V,_efhrWzmPh+74IEՆ ID)= Z)| #V[9z6~R%r P-Gfl%-ɍj!ݵ߱dd 0SyY*F́ȝ%}]ySd7;DSygI\[τ6^ĊQ.eNiYGi2yL*졊%nv- mQH2r=qizP/R*˻a᝭ ,~lM#&wGSTf [[ Yf/%6:8bDssW9餇7qZʑp˷nQWíh- bU*/1giJIxP KPDA P7HSjGܡٛsY$ELwXr\#r NJl|-~K ڻԋzKv[oZ=C>s8~۔(O/qA$R6##E;] c6t2HpC1.eԖp,˜' {t:Tg0X> gu11 T !E.$Ս^$MMӰWVǧ )t*گKӢ_ ,_RkYr` jsykiF}s 謠<-Iok{\0l̜f=M1ՖN.\}q=,h!KO{ Cqݯʕjȳ氦/i>MXkB*g˂V./kzN/{7 J@JC$kmc*qie6]65buw-: mnMp40 3kI+CW/RF/cm<<O| : A%^~ -  LnxLΡ>2ԑ>䰆kiPR]ׂ䭉NI-2- od-5?gU|֠ osg5UJ;B^LA[RBlU>K@MkDF>^{Togí@Qe}_s{WzamYqs%W|Uư4!{2pZOSծtbyS̠{LebG:B7ӔQI@n{c#6tΥn~)r o !T*"ϋ8ExY-?ٱ|ߜ^@cuYQ"'|'ڶsq8Xm`{I`:WTʩ(NXJQULw#u4&YⰈCRQL2|6JsOF-җ% `PyP LB;zJz} ˃F&dCsWs b1m;{ޒ{T~  {[ RVrol>)=Ta|>| q˦ܤÙFR0 ^OLq_#q Xf?v LmmԀoWQcLWvkPư_ԧd ~"9gԃ@6V=6BW#S :qs݁=ŧDO_a/ErM'v~ȴ#4kqZt4b_ɼq(Κu!Դ~2ߕj]hV ^>v́}wrS#6mZ'q+=A!*S9N>T mի:ZFYR'DG^.AF&PMg#-vX X@FD ~}i!W2GHKzU4n[oʃ(TgoIk?t H+C^"鑑'PTbV. Y} y뗮ngJ0vBbՂ݃zVH#٠sxG܏b͑De2̤]JjIB> R>%e /$S)Ϣ*4*H[B{?-4536i]ØX8b{Y x߽銔FPPYhڽA `,2p\-Óȸ Οg*@l۬)~=`xvxDEG~;x-[WB_|(W35%v0T"lCD-`Js"14KyU:5&PW>^N ;NHO65ld%Ocof}c@6dPįf|}3] Һ `!#_B*#w\ bxۿbNWrq qR$jSɷ3K%oku,lQ p7j'\49օ=3 Oo 9bv@5cL X; ZDi+ LQP g'e?G N?"|}&]u5Ͼ/ZƱ֩Y*vby8; xv$IץZcQ|xH|7J<>NPN"vq>!^duki,2>8dCwADIdKJk?ƑIhpZ>|/lXg DLF'5f 1HЌ.Ρ3|"ֺ #%J6u0o*5%{ hj(D?L*Ld_F9*GgH ')m-nV)-υn~L=%Bx k7o 泮[>9y9pj כIϫ2$L_5v 3 b~bOTO [x:ĜWUs$b[9sLazոCbRk=kT;lK m@nF| cv2Ue^QvH:KlEPft*`6:Veߓuj4RtN &dS0a)xU v"ul7Vi\=$,jUO:Lc$ WHR&薿)duCo1 L2@;m{xp˰%n) L.$ @EZ|iF'V,.4.(w~.P/j!t<32֤[&DA )~ Lދr%D "g^*jYm>j1%z?<1,4i+Wzkz3rcqeF#_\zAtRS7M !>2|%lǞcڀ 0= Wkgyû'31o~2~?ƺt .~I\y/OE(Yg)!F-7TNaVrCJaџ o51 . LL\/s^(l.R!@zL~y.8`</BmSOR^$;~<YS% MOKa>Իv6Q'M #~\@`S*;\AKCKjGZ\5v9c1yWy>l1rFL8O]|㖼uXٰn0@مqj))=OfW_kzH+whe jh*#.n l: u#x`,E|H) QIeZqM'r] ?Wo V&+I^zJsL5/ ~:~b0rgs@'cOaD0gFי o}Q6̭-]i'91zIoۘ%xc4wqx4&oqNGUDzcbP?SWh4hlE/,ys$|%FU@.${bK<%5 ŗAGvlQgwx1v?c_ݓ\*{/ygtwtfU}(vS&,/Wat0'PĒ_eCxGIz}`stf | 6 +Q`HջV[Y~!X iGZ"Zz$lP}fY2}.+$<m)X{ V _@+V^S-RvOYDWnW/yQ]7ԏ/Rۛs=S}˜6&/ײʊK*FVZi y{wu3] "gs 9rM_'2dmN5^SBeD HQ}ÑZZ S=ִ'9!i"4OLY+ *5J /=xcv95Bj~a6^ k{n{dm!uSuCDzYﻴGK}9n}Ŋ}eZxY[] DVXaXVDutɁfrUWw{!R$W,D_3;mPTFc9A sT4:ιYyq)U$W;+q1q#6^O ҦM*$ 3}XŌIA{Y'A)Gm x$H.D $*̝ڡ;o^ºm(b?o-4q3J/!"=n$Ҳvᯜu1 &kE݄sKEQ\|fSD$|"n"w2E6jlf`,5IGѹ8m31:YCu|J#z꠸FX  HLm8|ո"/A.s b`Car ЂCisVJ>#-jB; &o4 ~au`,S<󱏠K/8f[cN3Ou^-d<yx1Yܟ rDA|gQ4{qgԷ%VَYJ=<9B[+g\]ͬ( Gdx,>+b t[EKm̤Gs Ŗ"=,3d`y*)jjm]wcoX1c൘qbEom20uU:ώ+ 2DoA _ ݚg&,- &+0A~@f>z!`r#- Z]iy[ F^Ol4oBO;F54/ ߄DN ou1 _HC*l ֎#^g? mnWvT7'JQDžJI# ;mX~h0턅VNHOlZ>`ל1dC oA~O7fdJ:Sf:oψ!!iBRd8 Mτn۹M7FYce;䙲aEѼ>+bYN!x b"0NT#Gp׭Vթz}xBkćd% .Ilw~v=F1W.g;:i)udUM֐@j˓Y9@)*-";Q":i <.3e*fSL8s0N(P0O.}\6!H؏mBD9%BП]Mu-%O uz3,Ev iAax,ka.XqxSmsvh/ h!ujT9K2K`>#*twӂkM6{|]" ujQfFs$FGY )d@ܩvAO`kk 8Q5W3ej!#3BMoþ00"d'0(=i8RF^yNZ5t TAt(OŪh0lFIUNu)6QR7z*υ$Hd q8ႠOL ?"K>R2uewN/sJ9p <єzmDK^륉Fxu{6ABjS!2`%)FϚ<׀ R\5Ba!7EaL/` jc^M]˖߆s͸j@喇ZҮw9+ߟ薍$$q7lt 鷩 ]hdtNATcXed!nĀdѯ|YzO[ }cXǻX/ )bt\^&PZ,BzY@grjcsnMk_Ss \Zs82,FeSΗX-m ' 5-#L;̱CRwMW-"#t sk|K۳f*h@hy AnF 1:]3$h=+@Va7W|nHSV8:aRJSiS^' 6rpד!x+u{BX~,R1 PMØ<_ғD*:6pO<зT*tNS0KWEvnQAՂ?ݤ0Y g7agr`w?1M ӕ.Bg)Whw FQXKgf|Z ^aarrPhKMu-{]a]k.V7 Ue tbȟMn #,_Uuhbmx}\uӍ$1S\b$W bÆRDk xw+)i?\b; Ke5 "*ܟeQCu;x}R`-.ԍC u6g"YȫQ.6UmWs%%Uu!gH)taH2:B-[7zL,Ct%3>v%ax湣Ȝf/Uv ~b,lvFPnB%hR{l@1ymHPWyٸf MmɣH7Ôo~z xt`(AE0$UV_J[%]>l%D+@S}IaanfH+ؠucՅ_G폿P:с 3Cn]ʃg -ydzlmEqM6Fy? BT }3-SX0̈́}P` ON}\5H|ܞ&2uDg|݊ |)⿚9S5D"]毽Ua1%D_8)U! sv2TL^#N r@ԏUlU([m 6"7myax{'!RnBr~!&.S}5g DL^J Pg і}WDWlҼ߀PUiI4|JX/a'F@U)vy'6ʞXHB}D^,z]X޺Q9u/~`1vP>c=d-"H{Q%^X 4>n1XS U=cP;GV9m g*QP?܌Dߝ<U.0fse|/ 9nh܊SjϨdmRvgw:S6l,u]h@DC%s!̣E}b6.-u1^e87|Xۥ /5g=ߖ?cEu#IÙ1}4 @~L CWS炶ŗau-$t>QktWFJl}|mlދl(xp_?.XQJ4Nr9 PU0Y/Lon>?/:ޢY6gbgҫ=[,h|}PW{]o lA{'T0]z6 &R[Y=UGb-RoBEhPysgg;xAَvkvu@NF1c27OKL8vlhG=^]ta+gi2c0a?Ő&0-{|G=<,1EDOu .&3^XDGs`:PF ]6ϒ!E0ӰRU2ԉ۠fڳ4f r߲ }p}Fu.X !8?8ˆ~ɃweV 8LR1ʂr }[InU<[t#ؑ8 ~}#$2h6w+A+p49繐X ke:.-7_w䠰ԇ.q_CUySB08̏NޠDw~Seɱ09N#Я=lgt 3Hy׋$(_9 v$p1l~/ ~E"1;)F8oSty Q+쳐we^̱/c"Os3x ">$dXR?o9e]/wI[մ-YԔ4ˆuϐl5`Z"cseB -rjN8E{<˃j-~SLp;5wҏZ$O_w tRT(p`mrqVW(hhea$W{@䎔)jZ O<;?f OFMoۏ=SѨ<>3wN){$TpO@m/4e*_i&R4ݏM5^iRtW`;6n.r'7u^;,H~%R.VR븦|q=kAc~OyLrdF#ci_l-ϳ0D 0ogyt5S$@E62́Q{ٗzfvnX@>#v[)T"6r{78—sC0CABA:|[3]BrRd @X6xUMB bXsS27bRn6͔]YYUj8 =`;@g|趰uXmqE4rnps`/sϟ8Z ͂_h U"B?;Sl.b/*:mE ~毴A|5:^*#>ZȦA7[ܷ6{ur6giC}.gۮ3(ፓй:x6['*N :^PqՂl% 37dZCB'{vP(؄@=As{žLnK͂{ڮ Ojj· M/Z}kwJ23zl'x88Ptybz7 knD~:P50K RÒ|Y.r]{NB!S4,%rfG[jHc~؀~ousfm|Gb;HrSC⌞bg}Noa^#ݟTiʒȬ;)ISt). L7VC38hnBc-@Vi*jR?^RSm{RI=.vx+:RY.yr3鱳::xs=.C F@3ERKCp\+#`%{N7&+/ا$/2jx[䉠nՈey\LJxQCLx<.|Yr뷌ċ [)fBw*U+`|x:Nu+q-x1!Q`R vvB\uE`x-l7adG6O3.UHFqPGlrd|f y1ekjź!MYXr#"%(DgIm{rCkNh*\ wQ%>:BG~NmW>^G\0|߯Ӕu['8:Z;3@&AAqۈ:<ɔz؈۷sx bϞxg_8& KW0e M<|K M}ȃ`F8bGne)8pt;ir0ty9:/ .>gz f=]?dҧ"(cwԳZؒd?ވH~ś! ^ lì}䪸 M]O[4e#➷K 6\q9Vu7ۀ?-߾j[f."e)֠}'̢7 ^Z.諝DТ1s[eڗBRID;.6";۽k?Bjeb@8NG6*W([BrLT3mRzXhT'$'Ay!/::l﮷m+a|6P|N/Ӑʆ<sҒm.4Kw!pO(F~²7[?es@Ц+Uh:Za54mr)6,Cwyj/5Չn<"] YWLI*F_rZZʫyC[E͙yPsVI.9lo-Z1%1qLXIwS:nMGTxZ g38gw5)8KZDqaX:`_H ]"w"yjPOuæ19k!nh' v"E S D Eh5,򡟶zR Kϟ h :vUDU:I>%nT&_4JƃAº}nme*1|A甎$tr.a͎1 Uʦ[&"71M<0mڳGrRcx3Ԡ ^ ERdDz|ΒXfJwV*(jNty iu[_Wmkb*],!jGک~^o}mu^7JةY 8t) +hSb+S1Vol9/|}tJ95@YtJ-L8(覩ﺐIbow_q19V*̒ sHZ2'ᥦuk|rj908]MW-uCETS:ِU^$A+UY9@1 %12jro59B 7\ɹh^e ZI{z*=^ce[1_+hW_i%c{n1,faaX/ݜMĵY@BEyowOlΎ*!0ZAS%i `HV5#@ mw̱c|ih'.4Z\7'yZONtr.>3dQ%koj6MwR|Mʑ !9! Q!ɫ^Xwpŧ;W)],ǚ 1'0]&v*`RAqMrQ?lY s#Ĩ½m\#au.h$`/E=/my%wggw({]7M5%Z0< E ;\dkKG|TL_iAc "@%-Ө\y+D3VhIe3:"$@A"aP}( m0]Ҳ8`S/X._ݱ2-G(LOk978 : HcضaĚ"bpZHά$U+[r>+48TH{&n@MU1)lWƗƁ'osDG.'&QiƀB+x[c6A( "EqFmshVwy\2}P{lu|2m Ld&1#L}~s) b:F:84V JKDShaєQlXUv٨4ȺiGEMu`HưlACW\:kc4D!.vfMԮjNIM^7f^Ia_JU9Ӫ[;3*:b1!ٿv_;Ww?Ԏ.TobF<`BZvdP2Zed%5+by Q˂:LU>Ml\X!ԝ@4Mt XI9桏BZO+i{\C5`yQHnMz+CdÖt&2)U3B~:*u;lM]-M.f ;l?u LNv?Xp[«(8MJHqL1-03%8~Igz>\EN{/+@)czAܮzTsVNȗE|CD; i7DPmnBp!wxDE_[]+5EA/4cJ4DxZ7qUo"4sYrôG{Ւ't9=T,d.ϕ"dRjջ*ZfZ߰Ojҥϑ\~Q"._VOx@ eIB͆<.#. H3r[T"Jhw^-ŧ~[\c S#􋍣etf[{Pg4sۆh^AȬso}^F_'y ']jQSa&s s'-tbYQ@ VkH%+3;Z'S]b1A~: <4cGC 4 |+`W B(cQuǓ]_k"toc9ox@Hy1V8^(]3!۷5)atx7ߘ&\ .$/Qka ?Ŭ"!/O~ÜAg@+)am~6@<&?B4PcoS]P>*$ ( ډ s$`ަӠ,5'NpdL]k;<|2}X⮊tk0v=Uy:2xvE?{mfyduO<Kn.m.),r  o 8 "ߚVVWcg`w3G($c(Ii FfH`|+X`y:8w%blx9-oJkk v-FM7'ϣ|lSb;dulw`'NWo (YNWxro8."s\R*xY*9f+B:+P %v559 v[-4\Pm#oY8]m ,SOco(x/zyfvgݨ#j!=/e=9+IntkL9z?8dyK߈͆'h=ti*w\Yۏ)>OZZs&^ePrx'͊ÒKgr*8ržBqrj0vcK1Wh4 ]s&##™/mT|Sq80E .kKPpiz]P"iP v>}I:{#/ g"=W|odPદ-!p]xVZ]Y/R>4 3ۼ H#;Z,094>6BƝެ[Uєpsm&ٰM cHD"NʑaeFN#/v ^8b/{ci}BEzncŒrTH"c}Mh)ƍ&,tJaW:if dpEhp5k?a ^Er#'_n[r'7T,Y>#<IMZ WlD{z|g %-弶J^\l2b\[ma\0?@/7tDҔJQZNNӇMW5~ag)U>U۾Jj*i?no0zwK7`ٙBC߬JY$#5 r 6Knz10 v-UT;J-%\ WϨ n]y!|>{L\N=eM!q&ƚvU/=}-7P>k%XIlܓ(<C {. 7XPSi:El<J2UnMӻ㹶;iOQ]L9?yǜh0}%yFSmss6i寣ǐIFS@  D~RQS;::lJ)8k@Q2Es* cWGWJӴӹ4LC݇Y kv#ީb-aR T*rьhxh~!,廿>9]rKe_[S},1Mc"Q+HBc䪟quR_ &Jh4w_ƀE]S_/(W]e IiMn\R%!^G @0X>e. I=ذ4*9n?DmR!2O؇;)Aqe:[t|+jFeݍplϔ/^qy:.;D@>9Zqx4〆ˀXK}pSTn dD'ZLM93`NG+x ITCw_Qqds{`T * =i滗 l yIO ߃IXqDqXp0yW/9x%-ߔ kUYXЂKB6阷3Di8Ĉ%E0o[>ٕDHxE*rǑ`FYTFUs[FVssP7UDOсWkdfMj4"M7?wzXCxjixvO k#kfL!gEx@%5e$Go{׽rĴ{ҫgw:tbW@Yn?okܨn EO`I!C_:hfWa]OR"ldT g<Iqx*o\> ˻fu2 8YUv zhcZA%֐4L(p˷dj$ 54hMd4`H_˸CJX}gl7/#z]Q-bqѻaE΂6`Z=!sq M$@0:P7 gudm4) Gvdw|‡d0*m Fu@(umUHN,¢ )p]_} kӲK8]N+n4Z9ɳês5nprqm \7v@g1$*E6bwMk7;Qͽý#NC}Զ*d$=rqq0ȗ({VA|P8/bLKW*aYy( ̩ZϵjgߚlG~!}.Նd<7f\Buh| UQe"znG KJ:D<5/R};hK$rnbӑSM6̳j5% hSG%7l};:ѻĤl|Gw%ܔ9sw/lb*\mj͕?rmO_isfSEqGsY8=}"XQ>ғDz!B(PC:=Fs1=3`p@u}` ɀCV |xno$vnlix㣤_7Zѥc;q˚$  URZ qE>czFt|ir졠S(Duά[ | 4.yP yտb8Lg+Bw[+!Wnb&B%|aaI؛B;5ʶtV$Ϛ~jR1ZhP0 95y@y -bPppKx{g$Gq #p.k,/p%Yjjļ%oj}+^M][_[hȡ}lAPg:2Y3S.ɯXm`ʹ3ն;::zm66~u$R+3d6E$bf;5Ss/rpe7pQNf(R4tvB]CV͗eiVHX>$B >:]Y xO%(=rFPN=ӛA_=&Wd|-6ypt c2]=pa;BRO<8:3vhN f5tb<F͸6jZͱonfe! &gsUx,oH$(Qв-C^O avpgS2fgcggn኿:EAJeqs-:Bdǧ @+ 4Y_ff9%5LMC%ۅ=_]v{gD~ߨZ_PTIcGR~aꑠH58jCqc3ʅ/?9ɷ# ޢH%D]!1 Lnte@( ꖽse.t!.&"N[bJHJ-  ?w1i#ʧi^wo{nBvV|Gp Em(4u;n~*J;_pԿrĨl=N.jz#>"RKs.;n3"cRGWʛlTb,T}-(uB{w ~ˤE8\]rC}6P^'nְ 8y0>.GGfQ"1-A)2сH:WܑJPl*oSZPp`Ld!:J%,FKe6~[~_yAFuixdT] > _J";{:LS.>"pྯ3 A\ǞhwO"h.`i7pX4vi%7Mk\tt᝝-Il&V1! t qU%L< ?TWu 69 KT>AQf4Sޒxv"@&4\ŏcU,gtB{dQqs @<~o "QG>M|+jo8|-ngn**E O*w#oP]16 7.>@̞wS}wIu?(7/ .uy;X4H4bNV[]|#}$;ݱBt{&h 㑯I]05>șj%!e7XY2Ǒ@f _O } )`.D89M^׉߶nɖ]{q'Z[@# Ӣ޵0Ctm#DЎ3JB 6 ގA d]CGX I.Q.MD'anv^k:g#OG= m Q_P_h/\MXCDDE; Rhhpf$nreȕ8uև E%UlH~iː.6%~\nϝ>2h<6~#|Vv ߤ2 A'}GoeH-%7胺ԕͱ^tZtC>cɧ?&Cq|q䄓=SĆ$c0/y=eM2N"cY=zﷆg6,-U)ECG8C +|+ 2J#W?F݊$pL(>$!}>k' ^$SH= +!lD5foZdaƅW1G+ǟ)KhVNj֪ #Zt#F//`n9f bRl 8%U9tA3_ZArL&koި:)n?UM(<9 _| vVL1Q@| sAD8r(Km6@E![5%<)a%?mM" )b_M-7Ȓ1p]딹>n)e}!I0 Cֿ!NW>4=su3 <,>(0s]AӖCtIϒf+NP]]^.K{։)aG}Ez)5#2*x<[ʞBܜB152qR: =änt .}ǬLƂHѺ8| q<@8mzd&RB.ho|Y3e*q_]rV*.ɀhUzX9c-CHm PV+M $G%\iw¸,u46!ϦH*,וB._^OGY7O=%Cю[^\GAwh38oSw oDv[ jcݣ YSE}2ZSS@24WW iCz5KsQ;%,L%"egCnB-[^ uf'p4rY(EߌC‚m:v@{̑^Oo `uDkˮ.aEA%Kwݰ[V1DCM4TL^0}|4 AGQ?8˪ Us-' Z!yF zѻY,o&WZ}n1x5Rm;n{Y6ưW#ra V KWsAzuW'^k4Hϴ;+:nHm̤" PmRU'&̨N}vbR)e 4P! }/C_C2T䏝~&D|דk8f 7ݷ2"4!2p;rC6:ËCttڜLfh)WNCR&m2w#s5Ƭ22. ygv3pA_S:dDU.#I"'Y%6=spYn\j l*(Z[&a\tP|S7TQ,[?O\MD]F em&U|Lk|x@Yxt72K Oͭm_ik =:Je ӛx [L=ג i]gc厈Cs{b MyyZOc=ng*Fs.1I1a*{< nH5Djy$J N|V{A@ [HGG${ ]֫[d+s&`j: qXȞa66)v)ߵllڎY#Zd FYF|N1uuƠgV9LVR,nq#!1 `RMBfe)dd`clE,21nOo;]s'b0Z|$6_>&Gxu[]5ŀxcJV|l*gYDqunfaNY:MOx]uֲ,*\q|yvRv8cM8S)L7s9ŕӕ81]YKx 0?D8IY8›SBT6|9ZrIq& Ro/߇Nk x~$ 󧉜׳F|I}iH6"7G?DRBx knׁADӹ=--E$a31Y{@b,7Ob7 vLc@y.o-ھW gkb9И'mPF:e(Ƒș!kC.ҋ% "y",X"B;.P1(` d3j۱ew;9 9i`(~Te#\bEIÇJ]<.R`s9_nC.I׃V*FQ]Җy& 04;Fy52щ}Iz}y{n OrOw , wXfscI_3wa>ПK;j7D[ZjV=\C}% b*dQvOL~6_گӡ2ڭYF\npSWnXI?Ԋi$Vp\$t`} fjJ!F stN!ĂXJ R& U4e1{IEY=9ir˲)ȜչA l i@aqt;XOיd+BTA uPl{dZCXʨ,Aw~S6Uc.s(ݷ|)f|lK C*mw̜vc& $0Gӷ Gg딴t=.4{T4kՐ5Jdjux|zmi6-Oh7ƧʨZdz;#j qσQJI`2mQЂī<}HU;B";|IEÅwMDϒ ?4bj6֩ W(р9'uVd&Bށ#'P7JiFbCx*aiWo?Ek`CTƋ4vr߹4O;HDH6ՠMUQ#fd`iHJ^t{wSpǻT}$Cdi޴}4s{5M`I#=Pז(~c .{4?6|S>.S;ᴉqTL C'uGy^g=uDrSڐSL4Љ<&?;=l>Ƚv ~$x?  xI̤A@ARU~VeS ?O1A;;xHPxF6" 1h@~_V8 \v(Zz b|م+2]W\᰷oNߟM 1HAak&YNTf[͵?7[ iYϛe3@kZD[n+\+z6⊊ݔD.B4تD#w\u@ukAwHgpzD-o "؝o*קaװrXJwc*c Xzڑl b%fs?:yvwncf\I@o]~x҅~?jZ`R={rM[c?רNmY oAG|)G/#flѭ;MWbsi.?Ju}u8ٟ@X~nLӅqM;#܉cc!.SgLS7pX`K"¨+_^\ B?uʂ -/4ȿ TI۶agOLI#o* +Q&ګ4$ݘX$'q}XA1z+x7GI$:A}PJp/|.Cx\=Ɩ]( {Cz"4W*QI1;|&= 3tF[]NgTe# u,aU`]"FM)ZQ 4YAS,Ls`=& A2kkݬ,XA"yZz SԅbLrXe[pM܃TH/9r.Hm0@/ub] ryP?̋?T0v<<@5W}k82bC47//ܙ|SJjuP;ISߝf/K BrECq[ڑ+Ε*a#*(#@bk,+@9;; m,j~GbnZ(A"#,ttJK@3 Zù! ,2D-|LJQb0ځUAm1EVҘ#;2-< Xԏ ԋHmDl'J؏/0VMdFZ5!+@*T;s _˜M\;T459_EqfƔJs K5/txU'RG! dԶϐ}3C] C2Fi&'|9b*ID(ITWnL6+isXS);22ҕ2We&\_`PnPMEl$bpVÄԮ!\8UI-(7de<kK}A+qjgR΍SW݁-z.E/e5~a,QD!˜ o^}̭Pٻν:L"e^GX9xO@d_|lv]EC+o&vB!GRj#wZ4o R@Xԅ:X)DGx37l(pGmzM+'@-ƛ;Nĝ 2u];W7GN{ -͇|MSa2<8;\g@Y8h I+!Y<:"ov{P2<]U7-00jüoh 2 D [Q0=Q~&S3}q$V^Vvo_Am$|Z9xUV/^씛ӃzP 0È\0`s:HzxZ d9ɮ.=QB锿T؂L{96?+ tkk:v=&/|kB$;o $Z|%SyI=,ǝ,B^'ޱE%(:ybX|Kh"͚F^XY +Q[DYDz"u{R[UtQ@XDCe[&dO\c8hDXjoa^N?pY,12h$+,ER-MW> ;"bE ξ?C,ϝ;*ʈ2l$gvQoW+S2-A1XI$lhl]< |kܞgԻWW28Rtۯn<'`fBc!q )7*ڟ 9h ּKf{+pUcsк`kYa  b)סvt ۦ*Ba;@1WD,=1nD Ђ%nYe7ZVǑL(|m #5 Ylb XFsPv"IIJ /lD? =Y$|Q^p09' zI͹x ,y˴K^,3 ĩDqv4?omRM\ҶnjGs%{1 [I!~_7 **uZ% %pVuR5UQ|D|V: jCuQЏkQr(sL<4Iq j//rԩoY^(zgPyeϴwY Qf!ɇ$QSE@2ጽ}{HoH*Yn ۘ4[ l (NEm,.?w ~5feR\qҪ?+ )TW~9 ; WLHmcjR=t[ i f lpVo Mɷq'!:.Y?| kKF hgsM @pdrs݂ZVYA7wl|t< {*(Ze[mdaMG!M/y]]cRpM50d.@y3)F,CEF.d^nMm6c[O3IJRw#Oh,ZY8:I,:+ܵziN`8@rgtt4,u<< > @mQ7ԨGn*e .籀Rhm g7kߞ1SW`a2& QLJE&dSeqm1MUP~ke6ʞIJSJ-cΚ?8 `O]oSދ aokٶovUB b]|"xnR][)CKᰦo AoP=\RUMH jw0$1άL9?<%>WHZp꺐JPC: M }vZgGUph,p $V 1OfA8udi~ ,Tt罚fv)B#N}`"L$NA(qbkFoqR/5=ݻJ1KI,i^*&C|?/v85R]O.v@=p']}e#q|,(vu*Т(鳓 a 99\dܾ*Τ&rq-c/н 2&-+gzkkM4yG6=q;6k^Ͽ$),D(9ObՋ?_0xϧ.Ki)GAsU$d 6dWMA(!ַ9`/H^BAh̵H;R&REh2 iQnJg+%s֛k{D(_TRx1rGݵSrTg\9ץփD93x ( okl(O5U\c3n`FYN"5OA:ő)vy ɢ[ ,.|Vh‘:Y JҵP|\h}Vc.-(5S /dC.Q6X'{EYܡ1YY :SN5[5(3%q["W`쿆@ Osu5"&@!VE;tPDB '-r)- KX~rᏚ(V|{% }% Pdz))AB:?Lhdt ^p KXҳr~Jht˳ZSe߱vl&Ma ?Q(dO5QW^%oJ# "ӻZ+~CTt@߃k@d=:/mSaI_ 9y3m}Y.hzI,`yl׋EƮofFu;oLmHqCNƯ"‘J5`"VƉ$9wFMb3m,/aU!ӗXd\_hh#-L=g^tL.L9v-BxpRg[dAo e'Pc<>Y=͌Xۓ}lwF8v%݂L'(a:fG!-y LhjYR~PĖp`oYvF mҠ^`3K|q)突Ϩ2ՔǤ{45 ofzzT;̫3NξN8ڰ׳LOXp1@c*=y[Tl*L27X:& \rXwU/@#y2*~hs&I?츨9Zc2#^\iLKB"6 5V͌r &,N+$ /SC#ؠxB.6OTĘ,/P=mei|?Γe;i^Ӡ$A&㹍X Iw-B5TM.z:W؎0G| ]rC{+IN1V mluo5 wh˄rQU~ 'Z5Vɧ&HאH6 xП K`4 ^R$ۙ/vXSЛb pܱzOHYuBR/;>Ð?4$e,: 0v 2}(cn-ٷjgXlC5_4m=8 %גɧp//3B^k~I#o.X{GA<L-Aйx]WtOU Iکk#8֢ƬnE/"Z^>v7+O}g`.uIBt _n,&m`.vfw[֒F V#?W'8)4A3y175L塡3%"$arJ {y%U*7j,î M%M;Qq~=ԀFZg1՟%Ll-4j2JʅPJˇ;<bC{ApRlV6֨҃EFǺp:\>xO@WD.Y,z&e:Cs vDe( cFv)6}~*}xiJ;_W@3kDQk,Zփ}K2dIZ\ 5F.y~\lZ3U7{duP^$ q.&ТC37C٨yIdOIR-2p b\ -77W͠F} mܤ[r.OJ8qj{CSćkc4ӱ[]y]K/-xf@F``7ił"X*"e;7\תF؋{I{q4\UHQ77$]/|aa JԞ눸xߣا< K}:n!MfEsa%~ep-G N(3h͉h5icqX)#^]~5^mt{t*b^w6?' ٳa \^TO2b<KSg[&q'n LIU<$J^["XVã@kwH,:E~3J%K (#>;'U*6h5,M$sޯ2{'uf b%R̠ C.wΏ:@!MϪ׿(C&Xa,0_.T 1kkX &Q!9SBh'E_/i6p(%bcK\d_EfgEyckpocZqѪfmǯ+$9`ng3zØ5ypTe`dԍzX4t㈈G|ޓw7Տ?bSig%EY.<s໑> JuP)Jݒc+:0z&[b&U)\^65#)Bt?^jf‹9 ,mi"bGQ7?=vJ~"3W96^5Q`*S .q a6;Q3"F}Lgol„puZyR< pVbofSbb򘹮j"G忟`aOku5P! X (ON2Se)\l#6_pI&fyg3ȧEqd{n6X)YMWY :aiARb w@ͨ@܅4jI.ph]huo6 U^I|@#ṬU3H9xjj92 uC,{r"q P+K Cˈ.sf3 ~Οѫ^3:?#aLoExG$#$;>k3kGڴcva8vkU .q$( g1.DZnY0e'~t+>f{=1W'DG[˺s)3<~ $}]W}w MqJ)Lkto'XE`:Iy x:l49*юi/ZYϸ?qHxːsR0oM6t040|+q嬜sc6xҷ'DJܝ 0fnJ yPX!'pa&/l#{^젆RAz#{nKPRu{os ɾa(x"`Μg-W_tܤѥ eàudLt#첎DM3`}d<kDWwSGAuR\nRT"13m=;f- ?q^~sTW1.mj0{g9(m+i"dVc@OODFhs{TE}ahNM*"=ü< }L35Ƨo3ӶbEFu9wU+h`μaOh̼]}(vlp)f.q3j6 :6>i߬#?- O@8<ӫ13\vNn;58)޼y["]?|Cu˭~p㍠zh3|ujvtvImF|R.DMkL5}~R@{xi]P+?(+sYV1kpѢsM׹_^igJ6zn+aH~69 T<+KCigu/HB(-Ս0`ò}J^)H_ ~{^f>D!ծ <ۗ.a$r}TfuOϲ?Lj6+M~a`&l )G+ȢJuZvU6eg"#D">=sWx?[6GS„y&576mFnly S` `#bcm~x SbE*>mԇk]bM[}\Ѭϒ/+hŖp3W$QLqmȘ׏B+0y-._|ߟMxBd> LMqyK6Q`GazSřN 2cv),I ЮAB a\\NpXe =2PPK ~O)]-lLVӡڈΘ5%UGRwC˲#rvzH}%]ה4Ü`l|×Z`ɠo EtKo1V}eqFu|0^h~d5'ŘԴY򷠟 d{5ZR l?VP/ˠgG,:*G3*q7c$",Cv41^pf]"k8G(T-9Vg[@0N!5=پ $a|Ae$bSQP3=/3M & #^ÔfGaKe:rM!/dhjL۲owK,j;EK||zWW+8 HGjoF1fQQ-p_$Sd]9Ϝ:о03puE^Lo#] W23(ͪ9R(V,nc=}[D;)9GE?Am-(\B S:uj7Uv3\o#ʌuTTݡG>\8Mv,ۛ_"R18cAc}T9;uyk^?=-i6G7?󄍖qcRe#Ch{"ifm52@/P7ʗ^.? fTw_rLߋP:DK6.ʖDc Xc{eEb s(MNcCф8Y A,D*VMءadWdd.D rTi2+dɕ} x&YYPjKV,"!{9~}=GLs(Ė ecv]7iHL͢b,qvRYx2tܦq! (ZzRA/ #yU R5o|zFVYσdT==.}Y!N.Vh.AkDƟ/o.1mMXu_6gcBU_58@iܟK>cgAs!jXe~{ a'VQ6v"\=`o[Rg(bhJvmVVʿRWD JR3Z.R^PU@nHP ;f:*fhp~ƕ/|3W̤Rky ݀5/X+<)2ܧc $0+GԔec8*;hh]6Hcn# T!e.Ī]nM{@[0ġ}hƲ2s508gX3 yE^K CaWB%|#X 7IWݪ,GpAʲLIOm5l4f:_TIM2EW>YLҒm#W/ٹcAML 2!h-^>P(o iUEȣ =h:칖|, `K\5tC-S/GUB `x]05RCaCyxɱk3K9L9,3xlh/?"ziqHvӄ@*\Ԕ V^k}u=0G/Rؒē](T^- ePF Q 'jZ!$pgLo\+9qpQjf{HWRjKzhfBOHovE(xOMJwb}HWn"&qU9w%;,٬d c!^>@'f%"o?&~Y$!FZP 6Ӡ2 AIxX >Jd= z%ܑq` iR,'.$'jh.p]Ɍׁ-\Q%3xA 'hжP+({ڹދ:%z{`O1Tg]fFAHDXܙPU,6sd&1DDҳB,S-bT$N`M5f1és;$qUHh/eNcѤXq?W@viU/itx 27b̀ԋ)#HϠQe#No2L):^Ǭ߽Y(Ԓ?B'&1e\GF ou^ff{wY{SwbI/U"W-/ghC}ru4"P ֘z AP %3z/!Cs{J=%WԅgQg Y.䭀H`U(AN"ll(^vz3~J *usА,M)tߍ GoheĀ?Ȋ$ TN=2(+ԃTMŒsO5˰q9x[Q4BURCUΆp+,Z#Wg P*kNb5+[AIR -B똀n8/ݟJr$TB3o;M\z -&8( aFK0w̩씎F*{mƻ\Ц(9pڊ< 81R׮UFO*G$V` cbIX68=$Hcz<a\J}+Y>|vk'@I!Ixzsof˖{91+ywϑdyNT+jHTYRr(}3QoGOGJ~r@ E%lU]G&k OZ7k.|D{s j{-X P҆Z޳QiWMsX mXú>$o²ڻk?JԒ,PKIojkINLݙAAhnm7[e Hxt8 ,LkfIwϩl2kUsvLfUvp6S̆}oܮQ osUxbp#$Z2bC "w)3!顶%A}lқC0``&aB6 ; *c&OP'\y,)>!n~iײ;|NV!"E`4~7w፰xlo"UV =osp/()e/L[P.:d7ݖh- >O7mjzki5?yפriaн?ym`GHd%軶 syq{SH\Ȉr]fY@-~Bi*d8@p|R߭u(4뉑P E<ߪZ7 kgoD Ien )]QF)]+תQwOVgPCW-xj[Ʉ1j#5A>z$㩧w+A֨YA$?82?W6[0Ү G5=(]JI,ut, )xo';9f88' 8F}8Y;!X$yMH C載E9dB;AԲ%+SpP(1Xo͊e?1k.~ϴ9_T:R̦U6a]VaKdfbKdz@<Shyi'dn[Q@O"HsF!|9ռJ(8§ȎFbluu> `!)',Eܛ⸖joVats7/7-YVyJ* i*N`61B./{`VE0_UfK*rw90B+䋴v8uR{8* &$5i`H18pїVB ">B'vwp:sg6-xַXG[> eoQu IR}%OE=,#˪GgGuӵ0p}v-;gH{քR!U殮긂)qJFORhɤɺ4!]4'dVz20.,6-S9QE_/OQCKȖ# W4@х-A#:-*e 3Q97N?*)4:L%uү!U[(S,hxQE7=R"[;Jyivn_8i&P50 )9bW˼  o-A;fhZfDDe1+3*PP!!#H>-(CײN-UCyieR,l04vGLu䤬C/Yxk;ޠA$ѡf;xBFxSdxA.z['RJ۩T7⻭X؃=/FFI4'tJ=/=_!r9,G]aLâ63tXG5h8V&q~N+pON6)T(·ROVlh=JcucR!n=w2>u'6Ihpud8\mOTZ@@1U"3SR!^ 0/pS-e/z:A#%I)26Lr=S(!G|gR#.J.Aæ> cs{zNaP/?s\HHiL Yv YTjGw3фi]DeSJ3"Tnj.L~(99ToҕNYr̀jD#`3:SjIr*b14\3n#a 3y6E$ُ|} nK.zt?*j50x0_ϲ*NO2)IFnGf3A^WV1H>0A iBL(zZ*{t "M>r.@l9!)3nf[\eAu'3XZJ1۳ ;{MFo]H,PupƋ=&; +8֩?+UNWr&y>Fuؖ Pi{bƙf{̀O\}߇AYadGIZȔdW-믒jK몙Zk fŕPM _u\zDfb5: CƘ6N#h}`0&lZqM\& UfH2.4 e"U9''SzT`0<F73OgcY=B?6o.k8X*;v;Cs f((]Yz;TuH:^3xJ'όٜhTdb1XՔm&ݬq+U^*9xW.툫|47 UXq{z><څuq٘Er8fI&ɵܢXy)8aͦ}\q2@֔#8PjӳT2;0ƤGRU)-#n̝D[0~v&sB73kww-GR9yeennI``I|c2JtL V;U<"31O0!Rү=܉k&yTl W-ҷ-fvs0bP/ėmsH[r`2Y0;i^)ŋ /ʋi5ԇp>ܝ&Ԍ|g?@ZgJᬗLn"9%&CJK?UNvmHvx'i3d4I|Em;p`WA~̶ZȤ } ['C̘ۉ Lr=_:~!>{SBAW\@OV;8 gP7Xb_dX^6&<{}uՖ, D*R+(E pm ?rGa8|[2~5j&7[­P@D>o%e0]r YFiܷgŀ[:tr^6ee؎]ПCV]#`nxth⢑?H{` yE$$aot++pg/(WEbGV.L>f׾AaIͥr\jd֙;ƌG.u19vDf9/]ǭ}TuNД-&:tgI3BZb ou{OJ[7>PG"C*, [eN y[a1A]f29+*]4aj7şȱ 5q)$iooqiDŽ{ k*>\&sL]BйiLȊPyxK=Pp\Df[.#鹆 ʡ悃H3Np!_q<{1jfcv*bkkn㊈>w)g?i׀@,/WpMHmmc Ç[(EjSDzEg|J<͡xe9 JF.'"=E(̖*{l2BFN|hm[O+S^ uG*MV)ZV#en*-j$v)R1Z?E6.$Uwxƙ"NJtyoY1.FJ)ln7w g1 VaeNA ނ㶄T $(ۼ06 rb4PYJJ<@rdk\iqBW?"KWlLNkƺwq }THЖ*aBLKơ0Q![L+QO_C[ ^\i(+$XpB6O#u ge`V-(-]Ơۯf4ntda`Vʡ#˺a1x\d!*XS#>3mmUTHo!k[gnuL 9ا;|OƨB!uwp"{Qc`2 acJ( dC @B`4j%yJ۞'@NHu_wx}' )⟃JwLs'ꔭݡ;aE(榾|6 ʏKBfz]Pj}$P{r-Tqp!X7TWb2ݎ @bRmTkĦOAXݝƷvB=ЅGfP48P&3r(Za8믕*[∠$\ q&Zwl) ID 5)$NU GkXJV1mCS7tVIi5 rttI}ʢtg},<+OE!9F9K0?ܕWa0JZe%/ĿM]fpY +R~vm3T򒕥讚U 9ݚv|:vhlx&uF pw4GR҇fAf>2%UdziZ.wҦD]ǢHK-+iҵphNM^Φ\O{p5;5u$6:~J^umL%l^KnsFZqo&TМRFtpFeO=aurg=(`m";d#' /xnajV xp ) \nuQ5)^ ͖8.,~V ;p0&\0\Y36rlמ -X0A!^ߞ9g$y }Q<<.f<,VoP W'*2L8=,jOI^}dj DhN9'R,R A}x Y ;sׂ9(Wx8f-+ 68 ŌbټH_ G0 hQZpu_ox#V _ \,dY|h ,B*TUg[9D[89Brs|i٧IZyG2sU;À~]JBZ7Y}l\}-nc=$aX 1KJK]b^!V$p(Vr'\̋hd0"x% 0n4H.evƥv;3 2`EUwk]/{(- dG}%< = 9Y=MNӻABӤ-zl6s\Jq}`ǁGW hr斕z- ճeD*%YQM)2=C< r !ߥCCC(Kyx6rp&L(OGa] ,Yar幧jԵ- +p#G%Pnn#Oe3HCRl.Uc d%(rt;%-RąEE^Q@< ^עҁI Hg6gv0NW%1D:ꝣ, *[EFW^E3Q#q.KۍeX+"$NJ]$EE&U9;\RSw-";Kl1{QQ'augYک ޗʿhcWq_ .̽R"KO?1'8@8qRE219jk> Cb*,꾀ۂ^F`2Hhϵr!u;`}#1'Z"A*&^D|)=V<~T5 | ݹY=!]`kїmě{֧Йy[#O|^ni}iA6#-[ճ?_ @37D_5%j([!:g|=J^R'T0iɛ7)xUeο<~W o&dq'E|23t~<ο°r6]rUMIO ~7R2H1FIDInF\Gt *N0;ObךH`yxKȌesFHbR{:{?sP+˓2h K:r=_yC]$̒XEgDt4c<$6R4Ys]ulF~F_ZKGFU0kJ,GNG4jt ?cS* ٔLHk 8jc'V]dy9~ .$ xnӸ2c 6):#|x&{ 9CG>ہ=❟7 ]6~4h5>c'~+s^X><` ܄. k.#eTS08\ !|e#U V=ɁtޗL(:pYp?#b'Ϧ?-7&dO ~u%T%*Q^lOv?kYz⵭/SX:sSSFVeSF=@qKvD j58"ޘ {7KE7;Gj3?x+{-'FԨ+ -VtmZj TV2iczI`|0_^X}a@&q"t@6l( ňf3YdqtC|<: @vbqY M[DeǠ+q `W2`=ĸMGZRnm@hDTcV}ю.ZqZ ؟p&S  id0=@dRj23zDw'4ITRw>}TL<; CwֵKK&,X$ȼW5\frU癉T!F@P;ڻSܯ:6 XO*1E œ]ZA 1k^+*IcCcn,8gJU.kZ o>"m.׊a4}Ёo! >8 f cM2LNCoR8L;g?"bn7MȤ-JZ(NFA@<2@6tX/A^3>pCstilESZh!T3@73k<I&|[Ar  +.qVdŮc}$Tvbl{0+= 4~mk8hS&9cc{oU"BüV~rI>0 YZafex/README.md0000644000176200001440000005530414413021055012456 0ustar liggesusers # afex: Analysis of Factorial EXperiments [![CRAN status](https://www.r-pkg.org/badges/version/afex)](https://CRAN.R-project.org/package=afex) [![monthly downloads](https://cranlogs.r-pkg.org/badges/last-month/afex)](https://github.com/singmann/afex) [![total downloads](https://cranlogs.r-pkg.org/badges/grand-total/afex)](https://r-pkg.org/pkg/afex) [![Research software impact](http://depsy.org/api/package/cran/afex/badge.svg)](http://depsy.org/package/r/afex) [![R-CMD-check](https://github.com/singmann/afex/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/singmann/afex/actions/workflows/R-CMD-check.yaml) The main functionalities provided by `afex` are: 1. Interfaces for estimating standard ANOVAs with any number or combination of within-subjects or between-subjects variables (the ANOVA functions are `aov_car()`, `aov_ez()`, and `aov_4()` which all fit the same model but differ in the way to specify the ANOVA model). 2. Function `mixed()` provides an interface for mixed models analysis (estimated via `lme4` `lmer` or `glmer`) that automatically obtains *p*-values for fixed effects model terms (i.e., main effects and interactions). 3. `afex_plot()` visualizes results from factorial experiments combining estimated marginal means and uncertainties associated with the estimated means in the foreground with a depiction of the raw data in the background. 4. All `afex` model objects (i.e., ANOVA and mixed models) can be passed to `emmeans` for follow-up/post-hoc/planned contrast analysis. For `afex` support visit: [afex.singmann.science](https://afex.singmann.science/) ## Installation - `afex` is available from CRAN so the current stable version can be installed directly via: `install.packages("afex")` - To install the latest development version you will need the [`devtools`](https://github.com/r-lib/devtools) package: `devtools::install_github("singmann/afex@master")` ## ANOVA functionality To calculate an ANOVA, `afex` requires the data to be in the long format (i.e., one row per data point/observation). An ANOVA can then be calculated via one of three functions that only differ in how the model components are specified, but not in the output. Note that in contrast to base `lm` or `aov`, `afex` ANOVA functions always require the specification of a subject identifier column (the id-column), because in case there are multiple observations per participant and cell of the design, these multiple observations are aggregated (i.e., averaged) per default. - In `aov_ez` the columns containing id variable, dependent variable, and factors need to be specified as character vectors. - `aov_car` behaves similar to standard `aov` and requires the ANOVA to be specified as a formula containing an `Error` term (at least to identify the id variable). - `aov_4` allows the ANOVA to be specified via a formula similar to `lme4::lmer` (with one random effects term). A further overview is provided by the [vignette](https://cran.r-project.org/package=afex/vignettes/afex_anova_example.html). The following code provides a simple example for an ANOVA with both between- and within-subject factors. For this we use the lexical-decision and word naming latencies reported by Freeman, Heathcote, Chalmers, and Hockley (2010), see also `?fhch2010`. As is commonly done, we use the natural logarithm of the response times, `log_rt`, as dependent variable. As independent variable we will consider the between-subjects factor `task` (`"naming"` or `"lexdec"`) as well as the within-subjects-factors `stimulus` (`"word"` or `"nonword"`) and `length` (with 3 levels, 3, 4, or 5 letters). ``` r library("afex") # examples data set with both within- and between-subjects factors (see ?fhch2010) data("fhch2010", package = "afex") fhch <- fhch2010[ fhch2010$correct,] # remove errors str(fhch2010) # structure of the data #> 'data.frame': 13222 obs. of 10 variables: #> $ id : Factor w/ 45 levels "N1","N12","N13",..: 1 1 1 1 1 1 1 1 1 1 ... #> $ task : Factor w/ 2 levels "naming","lexdec": 1 1 1 1 1 1 1 1 1 1 ... #> $ stimulus : Factor w/ 2 levels "word","nonword": 1 1 1 2 2 1 2 2 1 2 ... #> $ density : Factor w/ 2 levels "low","high": 2 1 1 2 1 2 1 1 1 1 ... #> $ frequency: Factor w/ 2 levels "low","high": 1 2 2 2 2 2 1 2 1 2 ... #> $ length : Factor w/ 3 levels "4","5","6": 3 3 2 2 1 1 3 2 1 3 ... #> $ item : Factor w/ 600 levels "abide","acts",..: 363 121 202 525 580 135 42 368 227 141 ... #> $ rt : num 1.091 0.876 0.71 1.21 0.843 ... #> $ log_rt : num 0.0871 -0.1324 -0.3425 0.1906 -0.1708 ... #> $ correct : logi TRUE TRUE TRUE TRUE TRUE TRUE ... ``` ``` r # estimate mixed ANOVA on the full design: aov_ez("id", "log_rt", fhch, between = "task", within = c("stimulus", "length")) aov_car(log_rt ~ task * stimulus * length + Error(id/(stimulus * length)), data = fhch) ## equivalent: aov_car(log_rt ~ task + Error(id/(stimulus * length)), data = fhch) aov_4(log_rt ~ task * stimulus * length + (stimulus * length|id), data = fhch) ## equivalent: aov_4(log_rt ~ task + (stimulus * length|id), data = fhch) # the three calls return the same ANOVA table: ``` #> Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`. #> To turn off this warning, pass `fun_aggregate = mean` explicitly. #> Contrasts set to contr.sum for the following variables: task #> Anova Table (Type 3 tests) #> #> Response: log_rt #> Effect df MSE F ges p.value #> 1 task 1, 43 0.23 13.38 *** .221 <.001 #> 2 stimulus 1, 43 0.01 173.25 *** .173 <.001 #> 3 task:stimulus 1, 43 0.01 87.56 *** .096 <.001 #> 4 length 1.83, 78.64 0.00 18.55 *** .008 <.001 #> 5 task:length 1.83, 78.64 0.00 1.02 <.001 .358 #> 6 stimulus:length 1.70, 72.97 0.00 1.91 <.001 .162 #> 7 task:stimulus:length 1.70, 72.97 0.00 1.21 <.001 .298 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1 #> #> Sphericity correction method: GG ### Plotting with `afex_plot` ANOVA models can be used for plotting via `afex_plot`: ``` r a <- aov_ez("id", "log_rt", fhch, between = "task", within = c("stimulus", "length")) #> Warning: More than one observation per design cell, aggregating data using `fun_aggregate = mean`. #> To turn off this warning, pass `fun_aggregate = mean` explicitly. ``` ``` r afex_plot(a, "task", "stimulus", "length") #> Warning: Panel(s) show a mixed within-between-design. #> Error bars do not allow comparisons across all means. #> Suppress error bars with: error = "none" ``` ![](man/figures/README-unnamed-chunk-6-1.png) `afex_plot` returns a `ggplot2` plot object which allows simple customization: ``` r library("ggplot2") afex_plot(a, "task", "stimulus", "length") + theme_bw() #> Warning: Panel(s) show a mixed within-between-design. #> Error bars do not allow comparisons across all means. #> Suppress error bars with: error = "none" ``` ![](man/figures/README-unnamed-chunk-7-1.png) ### Follow-up Tests with `emmeans` Follow-up tests with `emmeans` need to be specified in two steps. 1. Decide which factors of model should be involved in tests. Use these factors to set-up reference grid of marginal means using `emmeans()`. 2. Specify set of tests on reference grid from step 1. Either custom contrasts as a `list` and using `contrast()` or a convenience function such as `pairs()`. ``` r library("emmeans") ## set up reference grid using only length em1 <- emmeans(a, "length") em1 #> length emmean SE df lower.CL upper.CL #> X4 -0.1087 0.0299 43 -0.169 -0.04834 #> X5 -0.0929 0.0296 43 -0.153 -0.03310 #> X6 -0.0653 0.0290 43 -0.124 -0.00679 #> #> Results are averaged over the levels of: task, stimulus #> Confidence level used: 0.95 ## test all pairwise comparisons on reference grid: pairs(em1) #> contrast estimate SE df t.ratio p.value #> X4 - X5 -0.0159 0.00768 43 -2.065 0.1092 #> X4 - X6 -0.0434 0.00782 43 -5.555 <.0001 #> X5 - X6 -0.0276 0.00602 43 -4.583 0.0001 #> #> Results are averaged over the levels of: task, stimulus #> P value adjustment: tukey method for comparing a family of 3 estimates ## only test specified tests con <- list( "4vs5" = c(-1, 1, 0), "5vs6" = c(0, -1, 1) ) contrast(em1, con, adjust = "holm") #> contrast estimate SE df t.ratio p.value #> 4vs5 0.0159 0.00768 43 2.065 0.0449 #> 5vs6 0.0276 0.00602 43 4.583 0.0001 #> #> Results are averaged over the levels of: task, stimulus #> P value adjustment: holm method for 2 tests ``` ## Mixed Models Function `mixed()` fits a mixed model with `lme4::lmer` (or `lme4::glmer` if a `family` argument is passed) and then calculates *p*-values for fixed effects model terms using a variety of methods. The formula to `mixed` needs to be the same as in a call to `lme4::lmer`. The default method for calculation of *p*-values is `'S'` (Satterthwaite) which only works for linear mixed models (i.e., no `family` argument). A similar method that provides a somewhat better control of Type I errors for small data sets is `'KR'` (Kenward-Roger), but it can require considerable RAM and time. Other methods are , similar to `'KR'` but requires less RAM), `'PB'` (parametric bootstrap), and `'LRT'` (likelihood-ratio test). More examples are provided in the [vignette](https://cran.r-project.org/package=afex/vignettes/afex_mixed_example.html), here we use the same example data as above, the lexical decision and word naming latencies collected by Freeman et al. (2010). To avoid long computation times we only consider the two factors `task` and `length` (omitting `stimulus` is probably not a fully sensible model). Because mixed models easily allow it, we will consider crossed-random effects for participants (`id`) and items (`tem`). ``` r library("afex") # examples data set with both within- and between-subjects factors (see ?fhch2010) data("fhch2010", package = "afex") fhch <- fhch2010[ fhch2010$correct,] # remove errors str(fhch2010) # structure of the data #> 'data.frame': 13222 obs. of 10 variables: #> $ id : Factor w/ 45 levels "N1","N12","N13",..: 1 1 1 1 1 1 1 1 1 1 ... #> $ task : Factor w/ 2 levels "naming","lexdec": 1 1 1 1 1 1 1 1 1 1 ... #> $ stimulus : Factor w/ 2 levels "word","nonword": 1 1 1 2 2 1 2 2 1 2 ... #> $ density : Factor w/ 2 levels "low","high": 2 1 1 2 1 2 1 1 1 1 ... #> $ frequency: Factor w/ 2 levels "low","high": 1 2 2 2 2 2 1 2 1 2 ... #> $ length : Factor w/ 3 levels "4","5","6": 3 3 2 2 1 1 3 2 1 3 ... #> $ item : Factor w/ 600 levels "abide","acts",..: 363 121 202 525 580 135 42 368 227 141 ... #> $ rt : num 1.091 0.876 0.71 1.21 0.843 ... #> $ log_rt : num 0.0871 -0.1324 -0.3425 0.1906 -0.1708 ... #> $ correct : logi TRUE TRUE TRUE TRUE TRUE TRUE ... ``` For the random-effects grouping factors we begin with the maximal random effect structure justified by the design (see Barr, Levy, Scheepers, & Tily, 2013). In this case this is by-subject random intercepts and by-subjects random slopes for `stimulus` and by-item random intercepts and by-item random slopes for `task`. ``` r m1 <- mixed(log_rt ~ task * length + (length | id) + (task | item), fhch) #> Contrasts set to contr.sum for the following variables: task, length, id, item #> boundary (singular) fit: see help('isSingular') ``` Fitting this model produces a critical convergence warning, that the fit is singular. This warning usually indicates that the data does not provide enough information for the request random effect parameters. In a real analysis it would therefore be a good idea to iteratively reduce the random effect structure until the warning disappears. A good first step would be to remove the correlations among random effect terms as shown below. This warning is also shown if we simply print the model object, but not if we call the `nice()` method. ``` r m1 #> Warning: lme4 reported (at least) the following warnings for 'full': #> * boundary (singular) fit: see help('isSingular') #> Mixed Model Anova Table (Type 3 tests, S-method) #> #> Model: log_rt ~ task * length + (length | id) + (task | item) #> Data: fhch #> Effect df F p.value #> 1 task 1, 44.80 13.47 *** <.001 #> 2 length 2, 325.78 6.03 ** .003 #> 3 task:length 2, 303.23 0.33 .722 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1 nice(m1) #> Mixed Model Anova Table (Type 3 tests, S-method) #> #> Model: log_rt ~ task * length + (length | id) + (task | item) #> Data: fhch #> Effect df F p.value #> 1 task 1, 44.80 13.47 *** <.001 #> 2 length 2, 325.78 6.03 ** .003 #> 3 task:length 2, 303.23 0.33 .722 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1 ``` If we call the `anova()` method a slightly different output is shown in which the p-values are not rounded in the same way and the warning is shown again. ``` r anova(m1) #> Warning: lme4 reported (at least) the following warnings for 'full': #> * boundary (singular) fit: see help('isSingular') #> Mixed Model Anova Table (Type 3 tests, S-method) #> #> Model: log_rt ~ task * length + (length | id) + (task | item) #> Data: fhch #> num Df den Df F Pr(>F) #> task 1 44.797 13.4692 0.0006426 *** #> length 2 325.775 6.0255 0.0026940 ** #> task:length 2 303.227 0.3263 0.7218472 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` We can also get the default `lme4` output if we call the `summary` method. However, note that in contrast to the previous methods, results are shown for factor-levels and not model-terms which is usually not interpretable for factors with more than two levels. This is the case for `length` here. The problem is that factors with $k$ levels are mapped to $k-1$ parameters and at the same time the intercept represent the (unweighted) grand mean. This means that factor-levels cannot be mapped in a 1-to-1 manner to the parameters and thus cannot be uniquely interpreted. ``` r summary(m1) #> Linear mixed model fit by REML. t-tests use Satterthwaite's method [ #> lmerModLmerTest] #> Formula: log_rt ~ task * length + (length | id) + (task | item) #> Data: data #> #> REML criterion at convergence: 7624.2 #> #> Scaled residuals: #> Min 1Q Median 3Q Max #> -5.9267 -0.5900 -0.1018 0.4789 5.2673 #> #> Random effects: #> Groups Name Variance Std.Dev. Corr #> item (Intercept) 0.0115702 0.10756 #> task1 0.0104587 0.10227 0.47 #> id (Intercept) 0.0374050 0.19340 #> length1 0.0003297 0.01816 0.16 #> length2 0.0001009 0.01005 0.11 -0.96 #> Residual 0.0925502 0.30422 #> Number of obs: 12960, groups: item, 600; id, 45 #> #> Fixed effects: #> Estimate Std. Error df t value Pr(>|t|) #> (Intercept) -0.089098 0.029468 44.989068 -3.024 0.004117 ** #> task1 -0.108035 0.029437 44.797243 -3.670 0.000643 *** #> length1 -0.020756 0.007810 226.902599 -2.658 0.008425 ** #> length2 -0.003746 0.007467 380.122063 -0.502 0.616214 #> task1:length1 0.005719 0.007569 206.633789 0.756 0.450736 #> task1:length2 -0.004627 0.007214 353.115359 -0.641 0.521661 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 #> #> Correlation of Fixed Effects: #> (Intr) task1 lngth1 lngth2 tsk1:1 #> task1 0.118 #> length1 0.056 0.007 #> length2 0.021 0.002 -0.526 #> tsk1:lngth1 0.007 0.058 0.329 -0.173 #> tsk1:lngth2 0.003 0.022 -0.174 0.349 -0.528 #> optimizer (nloptwrap) convergence code: 0 (OK) #> boundary (singular) fit: see help('isSingular') ``` ### Reducing the Random Effect Structure Because of the singular fit warning, we reduce the random effect structure. Usually a good starting point is removing the correlations among the random effects parameters. This can be done in `afex::mixed` even for factors by combining the double bar notation `||` with `expand_re = TRUE`. We do so for both random effects terms. ``` r m2 <- mixed(log_rt ~ task * length + (length || id) + (task || item), fhch, expand_re = TRUE) #> Contrasts set to contr.sum for the following variables: task, length, id, item #> boundary (singular) fit: see help('isSingular') ``` However, the singular fit warning remains. We therefore inspect the random effect estimates to see which random effect parameter is estimated to be near to zero. ``` r summary(m2)$varcor #> Groups Name Std.Dev. #> item re2.task1 1.0119e-01 #> item.1 (Intercept) 1.0685e-01 #> id re1.length2 3.1129e-06 #> id.1 re1.length1 1.2292e-02 #> id.2 (Intercept) 1.9340e-01 #> Residual 3.0437e-01 ``` As shown above, one parameter of the by-participant random slope for `length` is estimated to be almost zero, `re1.length2`. We therefore remove the by-participant random slope for `length` in the next model which does not show any convergence warnings. ``` r m3 <- mixed(log_rt ~ task * length + (1 | id) + (task || item), fhch, expand_re = TRUE) #> Contrasts set to contr.sum for the following variables: task, length, id, item m3 #> Mixed Model Anova Table (Type 3 tests, S-method) #> #> Model: log_rt ~ task * length + (1 | id) + (task || item) #> Data: fhch #> Effect df F p.value #> 1 task 1, 44.74 13.52 *** <.001 #> 2 length 2, 597.20 6.67 ** .001 #> 3 task:length 2, 592.82 0.40 .668 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1 ``` ### Plotting with `afex_plot` Objects returned by `mixed` can be used for plotting with `afex_plot`. However, two things need to be considered. - The `id` argument of `afex_plot` allows specifying over which random effects grouping factors the data plotted in the background should be averaged over. Per default this uses all random effects grouping factors. In the present case this would mean that all data points are shown resulting in a very busy plot. When choosing only one of the random effects grouping factor, data points in the background show average response for each level of that factor. For example, when setting `id = "id"` here each data point in the background shows the mean `log_rt` of one participant (i.e., level of `id`). - Estimated marginal means in the foreground are estimated via `emmeans` which per default attempts to estimate the degrees of freedom using the expensive Kenward-Roger method unless the number of data points is high (as here). This can produce quite some status messages (not shown here). Use `emmeans::emm_options(lmer.df = "asymptotic")` to suppress this calculation. ``` r library("ggplot2") ## all data points shown afex_plot(m3, "task", "length") + theme_bw() ``` ![](man/figures/README-unnamed-chunk-17-1.png) ``` r ## data points show IDs afex_plot(m3, "task", "length", id = "id") + theme_bw() ``` ![](man/figures/README-unnamed-chunk-18-1.png) ``` r ## data points show items afex_plot(m3, "task", "length", id = "item") + theme_bw() ``` ![](man/figures/README-unnamed-chunk-19-1.png) ### Follow-up Tests with `emmeans` Follow-up tests with `emmeans` need to be specified in two steps. 1. Decide which factors of model should be involved in tests. Use these factors to set-up reference grid of marginal means using `emmeans()`. 2. Specify set of tests on reference grid from step 1. Either custom contrasts as a `list` and using `contrast()` or a convenience function such as `pairs()`. For mixed models, `emmeans` attempts to estimate the degrees of freedom. The method can be set via `emm_options(lmer.df = ...)`. Here we use `"asymptotic"` which does not estimate the degrees of freedom, but sets them to infinity. ``` r library("emmeans") emm_options(lmer.df = "asymptotic") ## set up reference grid using only length em2 <- emmeans(m3, "length") #> NOTE: Results may be misleading due to involvement in interactions em2 #> length emmean SE df asymp.LCL asymp.UCL #> 4 -0.1099 0.0304 Inf -0.169 -0.05040 #> 5 -0.0924 0.0304 Inf -0.152 -0.03296 #> 6 -0.0642 0.0304 Inf -0.124 -0.00469 #> #> Results are averaged over the levels of: task #> Degrees-of-freedom method: asymptotic #> Confidence level used: 0.95 ## test all pairwise comparisons on reference grid: pairs(em2) #> contrast estimate SE df z.ratio p.value #> length4 - length5 -0.0175 0.0126 Inf -1.384 0.3495 #> length4 - length6 -0.0457 0.0126 Inf -3.618 0.0009 #> length5 - length6 -0.0282 0.0126 Inf -2.238 0.0649 #> #> Results are averaged over the levels of: task #> Degrees-of-freedom method: asymptotic #> P value adjustment: tukey method for comparing a family of 3 estimates ## only test specified tests con <- list( "4vs5" = c(-1, 1, 0), "5vs6" = c(0, -1, 1) ) contrast(em2, con, adjust = "holm") #> contrast estimate SE df z.ratio p.value #> 4vs5 0.0175 0.0126 Inf 1.384 0.1665 #> 5vs6 0.0282 0.0126 Inf 2.238 0.0504 #> #> Results are averaged over the levels of: task #> Degrees-of-freedom method: asymptotic #> P value adjustment: holm method for 2 tests ``` ## References Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. *Journal of Memory and Language*, 68(3), 255-278. Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. *Journal of Memory and Language*, 62(1), 1-18. ## Code of Conduct Please note that `afex` is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. afex/build/0000755000176200001440000000000014665070066012306 5ustar liggesusersafex/build/vignette.rds0000644000176200001440000000111614665070066014644 0ustar liggesusersTo0Nl&!! `qêR@PmyZ8v;[sByI{~?vJ!( "D?$zsrzڰR2 JaG WT݊ 5g!)SR2D q]A,3<#KG w2f!GWT2Iz2wS岺+ٹ5ZǒQraGkunk Nxb=%@^Y__ڪ]_ Q].VzĞש&l]3[ߥ&\v+C3c?gh {}uuOfII絛8m Aj@6bϸݷq|7NTD-iq+3/ۮ=/|L߫B6NU qq/y'afex/build/partial.rdb0000644000176200001440000001304114665067762014443 0ustar liggesusers][sF.#9%'rlKHZ|YX7JBY^@ T~}ߗ}9gũ34H$2Ubn`éT7ߓc 'c}}~ݟP:s }GTb`Hx LHҐYH>`UJ{=,H-\-776V_;hecrX3 !O9u[UE ov^f*j}<*1}Mϐ K_pUc,k̢M̽[koEՕ &͔xvy>$7)` 5+RW6g_bMVǤ4D,>x9Wj7:wq ~{%+qHJoR +R7/DM ;_g-Xj>z(_{$6ЖBI4V%-YSO!L7{X߽3yh;m{(؀(MX,z08jZp$dAG ?pĄʨv8qC@ǡQ'bDbqa_P8b¥ m1 GbcP͐q{B{aÏy(8 1jmΉ`=M#`^`]=ɁndX!],؋w,MSy[ɛOo7۫fpC'נ}]ךU,0PzQʡ)H+X4C Z=Љ!&jL/<}E#r 3~C;PtHY|iϘ+:m GDf}<J.&S4dcr Uh_bo4veM#L3SJ5UdMT B3*T{ ix l -qiFf] \D_U> jQ{a7U~975hԉ(dIBPH}B/[M9A d4QæQ@SWd++5k.mCI4qgy1ӌ*\ 4 H=jgP,MHQ. R/@Uqd]iôUIޓ1f"QN`ڮEbBrY9E]$`u7 J/&Vk19M]0=G5_!끎P@ؐL_زaUlNDjآځ\u\0B+mHZMolPRiбA3UːET4˴ s"իTaӶX wKi2E7lj4Yd~BѢaƒQE.W # ,LlWXt(>>N,&<2{`ŀ D{8ŋY*a6 .7OuCȬUm2ZˤU4*[N'2YZɢQL.x흐3B|)Wk#&Fɻ (R{(/XXs/Y1蔝`ťptEvaeu{K*)˱vRyGBפ=t2s *J茁W"DQ6?Ԑcc̖y;L; L~DmK]ä4"]i1dWI$"GlOm_!:Q%k^G4|==ݟ|i.5)v\f%R:HJjεk&>(nY-ZQ ?rhpKZ-z 7BE7C 3#FϋrsLF%Dse`Nxf٥S^aլ 8']U 7CGĐ%K0J ; l2/nv2%[>X愙  ;"6؆'N-U##j̱8a'QIӠS+2c Qn4nύE~_YVw68aghTyaôO˰ێ ;WtbwY!~I/ &qzO '1eI*?E!b݃{\*ҽ ~kU]3@O7^5XB\vֹzgo>ϲKz4`J ɃUsUU$ڨYҽ8͋yvzu-QRNsv:B%tJlS鈓ӑMm#NG7TImj;Ц+Mm#'ںi1M (]Dv9wLN3tFsn|w{ G6=T+H~:ueӬn ά"Q60nkLsO@_Z(y~3M|ُrY%E|bt 97#n.)bͪhеRJ8ԩGԅWD5TUY9\܆+} NME_MNRo\Aeea]q(l>9TJT YX^[YOx{: 'ӼmՄQ=-i.1|P8i-=%3"UŠ_'K)ck嗃14|- ڪhӧo 6eamD]$]bا!lF6G*Bk /V Gg\25"ŜGuo:%ҼRA &R,2kZhQ&'4"WP9TWVВ31+l23#j`\?(#E{Ú[aewcrO8 #^kVH.5):mZgeԺNjqg4)9N5Of wh{^3DYiF9P |K}%v 82BܲW-"V9 7ʼn9,(bh<ΧR^j\E^yBn+?GRBPD5FXe7rWf̩pn\J| ,=]؟jY=kKE}"8jIM֣IAg73QSUboyyrΘZM!4yv'gOa,z('O9Oq)ݹ7&)v./x<YE:Ugƣ^cT1VӑBFdTCK5SN#t-=Z?xvx yh80}// %d hϜTʆz(g6s}Dn3x&>Ǚg9vr pFsΝ Ǚ;Ep8Ep:CZD؊4оpS];1f Sw'6+^9{wbïz(e!|_H‘9GGl\ 46Bp0 |F,A.C,i snjS$nT*¨g) ehj9d`xwءϷ"("[оP㭅e>.!-a4A@T#qo} + (<`oM m36k*vaZж:7v2t{g?W]sx Kl"hj˔StiR@&aƗzniIq\0'uzo۩]l^xHǍX٫5 0{\bt Kɮa+@נvk6C0l?]zAQ= 1gEMOSgO~_4O9Is/ +zx/@: f$͜2="lthtJobU|_47h NUs\RNY {*Ryv/_ TSQL.p=ɁU`&T}BL럯" / #t-}hh [ y U{]:x^w!iaҹ٘h̐U&RVdX!͘zȞi9??_S=yuY]j޼7R <fay?d_O6{]G^{+Z/_o6+,:/ ٹ_gsy /Hy'͛& #973gI_uuMJ~k`UR`1)=<~akyͤ!z'Pgm"wbPMF>{U9h6N"FAYlJ'.axz% ФǏFA.F=i(Xpޜ af*F7SVV0K:=!XfY cqjEIWNĈNvLe4`sRDrac˓;WRf0I.P;"2XLZM'] _ B8S0=7@;Nf_y]ǻsz8Q򼫟5UkzѾdgpy/ mlW k[;kEp}xo X1G \=,B/|۾ Jc_Č bȝ=ږ.e$c_t񸋱wKr.sBܫ֌JЖb &9oiVF^? :MUvKې-LZqafex/man/0000755000176200001440000000000014415323520011747 5ustar liggesusersafex/man/predict.afex_aov.Rd0000644000176200001440000000301414217364040015457 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/predict.R \name{predict.afex_aov} \alias{predict.afex_aov} \title{Predict method for \code{afex_aov} objects} \usage{ \method{predict}{afex_aov}(object, newdata, append = FALSE, colname_predict = ".predict", ...) } \arguments{ \item{object}{\code{afex_aov} object.} \item{newdata}{An optional data frame in which to look for variables with which to predict. If omitted, the fitted values are used.} \item{append}{If set to \code{TRUE} returns the residuals/fitted values appended as an additional column to the long data. Recommended when data was aggregated across within conditions.} \item{colname_predict}{Name of the appended column when \code{append = TRUE}.} \item{...}{Not used.} } \value{ A vector of predicted values corresponding to the data in \code{object$data$long} or to \code{newdata}, or if \code{append = TRUE} a data frame with an additional column of predicted values. } \description{ Predicted values based on \code{afex_aov} objects. } \examples{ data(obk.long, package = "afex") # estimate mixed ANOVA on the full design: fit <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), within = c("phase", "hour"), observed = "gender") new_data <- expand.grid( treatment = "A", gender = "F", phase = c("pre", "post"), hour = c(1, 5) ) predict(fit, newdata = new_data) predict(fit, newdata = new_data, append = TRUE) } \author{ Mattan S. Ben-Shachar } afex/man/afex_options.Rd0000644000176200001440000000724614217364037014755 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/helpers.R \name{afex_options} \alias{afex_options} \title{Set/get global afex options} \usage{ afex_options(...) } \arguments{ \item{...}{One of four: (1) nothing, then returns all options as a list; (2) a name of an option element, then returns its' value; (3) a name-value pair which sets the corresponding option to the new value (and returns nothing), (4) a list with option-value pairs which sets all the corresponding arguments. The example show all possible cases.} } \value{ depends on input, see above. } \description{ Global afex options are used, for example, by \code{\link{aov_car}} (et al.) and \code{\link{mixed}}. But can be changed in each functions directly using an argument (which has precedence over the global options). } \details{ The following arguments are currently set: \itemize{ \item \code{check_contrasts} should contrasts be checked and changed to sum-to-zero contrasts? Default is \code{TRUE}. \item \code{type} type of sums-of-squares to be used for testing effects, default is 3 which reports Type 3 tests. \item \code{method_mixed}: Method used to obtain p-values in \code{\link{mixed}}, default is \code{"KR"} (which will change to \code{"LRT"} soon). (\code{mixed()} only) \item \code{es_aov}: Effect size reported for ANOVAs (see \code{\link{aov_car}}), default is \code{"ges"} (generalized eta-squared). \item \code{correction_aov}: Correction used for within-subjects factors with more than two levels for ANOVAs (see \code{\link{aov_car}} or \code{\link{nice}}), default is \code{"GG"} (Greenhouse-Geisser correction). (ANOVA functions only) \item \code{emmeans_model}: Which model should be used by \pkg{emmeans} for follow-up analysis of ANOVAs (i.e., objects pf class \code{"afex_aov"})? Default is \code{"univariate"} which uses the \code{aov} model object (if present). The other option is \code{"multivariate"} which uses the \code{lm} model object (which is an object of class \code{"mlm"} in case repeated-measures factors are present). \item \code{include_aov}: Should the \code{aov} model be included into ANOVA objects of class \code{"afex_aov"}? Setting this to \code{FALSE} can lead to considerable speed improvements. \item \code{factorize}: Should between subject factors be factorized (with note) before running the analysis? Default is \code{TRUE}. (ANOVA functions only) \item \code{sig_symbols}: Default significant symbols used for ANOVA and \code{mixed} printing. Default is\code{c(" +", " *", " **", " ***")}. \item \code{lmer_function}: Which \code{lmer} function should \code{mixed} or \code{lmer_alt} use. The default is \code{"lmerTest"} which uses \code{\link[lmerTest]{lmer}}, \code{"lme4"} is also possible which uses \code{\link[lme4]{lmer}}. Note that \code{mixed} methods \code{"KR"} and \code{"S"} only work with \code{"lmerTest"}. For the other methods, \code{"lme4"} could be minimally faster, but does not allow to use \code{lmerTest::anova()}. \item \code{return_aov}: Return value of the ANOVA functions (see \code{\link{aov_car}}), default is \code{"nice"}. } } \note{ All options are saved in the global R \code{\link{options}} with prefix \code{afex.} } \examples{ afex_options() # see all options afex_options("return_aov") #get single option aop <- afex_options() # save current options \dontrun{ # change options afex_options(return_aov = "nice") afex_options("return_aov") #get single option afex_options(return_aov = "nice", method_mixed = "LRT") afex_options("method_mixed") #get single option # do something } afex_options(aop) # reset options } afex/man/residuals.afex_aov.Rd0000644000176200001440000000607314217364040016030 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/residuals.R \name{residuals.afex_aov} \alias{residuals.afex_aov} \alias{fitted.afex_aov} \title{Extract Residuals and Fitted Values from \code{afex_aov} objects} \usage{ \method{residuals}{afex_aov}(object, append = FALSE, colname_residuals = ".residuals", ...) \method{fitted}{afex_aov}(object, append = FALSE, colname_fitted = ".fitted", ...) } \arguments{ \item{object}{\code{afex_aov} object.} \item{append}{If set to \code{TRUE} returns the residuals/fitted values appended as an additional column to the long data. Recommended when data was aggregated across within conditions.} \item{colname_residuals, colname_fitted}{Name of the appended column when \code{append = TRUE}.} \item{...}{Additional arguments passed to \code{residuals.lm}/\code{fitted.lm}.} } \value{ A vector of residuals/fitted values corresponding to the data in \code{object$data$long}, or if \code{append = TRUE} a data frame with an additional column of residuals/fitted values. } \description{ Extract Residuals and Fitted Values from \code{afex_aov} objects. } \examples{ ### Setup ANOVAs data(obk.long, package = "afex") between <- aov_car(value ~ treatment*gender + Error(id), data = obk.long) within <- aov_car(value ~ 1 + Error(id/(phase*hour)), data = obk.long) mixed <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long) # All residuals call produce the message that the data was changed during calculation. residuals(within) residuals(mixed) residuals(between) ## Get residuals plus data used for fitting: residuals(within, append = TRUE) residuals(mixed, append = TRUE) residuals(between, append = TRUE) ### in case data is correctly ordered before fitting, this message is not shown ## between data: obk2 <- aggregate(value ~ gender + treatment + id , data = obk.long, FUN = mean) between2 <- aov_car(value ~ treatment*gender + Error(id), data = obk2) residuals(between2) ## no message all.equal(obk2, between2$data$long[,colnames(obk2)]) ## TRUE # Therefore okay: obk2$residuals <- residuals(between2) ## within data obk3 <- obk.long[with(obk.long, order(id, phase, hour)), ] within2 <- aov_car(value ~ 1 + Error(id/(phase*hour)), data = obk3) residuals(within2) ## no message, because order is correct # Therefore okay: obk3$residuals <- residuals(within2) ## Same for fitted values: # (show message) fitted(within) fitted(mixed) fitted(between) ## Get fitted values plus data used for fitting: fitted(within, append = TRUE) fitted(mixed, append = TRUE) fitted(between, append = TRUE) ## No message: fitted(between2) fitted(within2) #### residuals() and fitted() methods can be used for plotting ### requires package ggResidpanel if (require("ggResidpanel")) { resid_auxpanel(residuals = residuals(mixed), predicted = fitted(mixed)) \dontrun{ ## suppress Messages: suppressMessages( resid_auxpanel(residuals = residuals(mixed), predicted = fitted(mixed)) ) } } } \author{ Mattan S. Ben-Shachar } afex/man/sk2011.1.Rd0000644000176200001440000000577014217364040013331 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/sk2011.1-data.R \docType{data} \encoding{UTF-8} \name{sk2011.1} \alias{sk2011.1} \title{Data from Singmann & Klauer (2011, Experiment 1)} \format{ A data.frame with 640 rows and 9 variables. } \source{ Singmann, H., & Klauer, K. C. (2011). Deductive and inductive conditional inferences: Two modes of reasoning. Thinking & Reasoning, 17(3), 247-281. doi:10.1080/13546783.2011.572718 } \usage{ sk2011.1 } \description{ Singmann and Klauer (2011) were interested in whether or not conditional reasoning can be explained by a single process or whether multiple processes are necessary to explain it. To provide evidence for multiple processes we aimed to establish a double dissociation of two variables: instruction type and problem type. Instruction type was manipulated between-subjects, one group of participants received deductive instructions (i.e., to treat the premises as given and only draw necessary conclusions) and a second group of participants received probabilistic instructions (i.e., to reason as in an everyday situation; we called this "inductive instruction" in the manuscript). Problem type consisted of two different orthogonally crossed variables that were manipulated within-subjects, validity of the problem (formally valid or formally invalid) and plausibility of the problem (inferences which were consisted with the background knowledge versus problems that were inconsistent with the background knowledge). The critical comparison across the two conditions was among problems which were valid and implausible with problems that were invalid and plausible. For example, the next problem was invalid and plausible: } \details{ If a person is wet, then the person fell into a swimming pool. \cr A person fell into a swimming pool. \cr How valid is the conclusion/How likely is it that the person is wet? For those problems we predicted that under deductive instructions responses should be lower (as the conclusion does not necessarily follow from the premises) as under probabilistic instructions. For the valid but implausible problem, an example is presented next, we predicted the opposite pattern: If a person is wet, then the person fell into a swimming pool. \cr A person is wet. \cr How valid is the conclusion/How likely is it that the person fell into a swimming pool? Our study also included valid and plausible and invalid and implausible problems. Note that the factor `plausibility` is not present in the original manuscript, there it is a results of a combination of other factors. } \examples{ data(sk2011.1) # Table 1 (p. 264): aov_ez("id", "response", sk2011.1[ sk2011.1$what == "affirmation",], within = c("inference", "type"), between = "instruction", anova_table=(es = "pes")) aov_ez("id", "response", sk2011.1[ sk2011.1$what == "denial",], within = c("inference", "type"), between = "instruction", anova_table=(es = "pes")) } \keyword{dataset} afex/man/obk.long.Rd0000644000176200001440000000564314217364040013761 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/obk.long-data.R \docType{data} \encoding{UTF-8} \name{obk.long} \alias{obk.long} \title{O'Brien Kaiser's Repeated-Measures Dataset with Covariate} \format{ A data frame with 240 rows and 7 variables. } \source{ O'Brien, R. G., & Kaiser, M. K. (1985). MANOVA method for analyzing repeated measures designs: An extensive primer. \emph{Psychological Bulletin}, 97, 316-333. doi:10.1037/0033-2909.97.2.316 } \usage{ obk.long } \description{ This is the long version of the \code{OBrienKaiser} dataset from the \pkg{car} pakage adding a random covariate \code{age}. Originally the dataset ist taken from O'Brien and Kaiser (1985). The description from \code{\link[carData]{OBrienKaiser}} says: "These contrived repeated-measures data are taken from O'Brien and Kaiser (1985). The data are from an imaginary study in which 16 female and male subjects, who are divided into three treatments, are measured at a pretest, postest, and a follow-up session; during each session, they are measured at five occasions at intervals of one hour. The design, therefore, has two between-subject and two within-subject factors." } \examples{ # The dataset is constructed as follows: data("OBrienKaiser", package = "carData") set.seed(1) OBrienKaiser2 <- within(OBrienKaiser, { id <- factor(1:nrow(OBrienKaiser)) age <- scale(sample(18:35, nrow(OBrienKaiser), replace = TRUE), scale = FALSE)}) attributes(OBrienKaiser2$age) <- NULL # needed or resahpe2::melt throws an error. OBrienKaiser2$age <- as.numeric(OBrienKaiser2$age) obk.long <- reshape2::melt(OBrienKaiser2, id.vars = c("id", "treatment", "gender", "age")) obk.long[,c("phase", "hour")] <- lapply(as.data.frame(do.call(rbind, strsplit(as.character(obk.long$variable), "\\\\."),)), factor) obk.long <- obk.long[,c("id", "treatment", "gender", "age", "phase", "hour", "value")] obk.long <- obk.long[order(obk.long$id),] rownames(obk.long) <- NULL str(obk.long) ## 'data.frame': 240 obs. of 7 variables: ## $ id : Factor w/ 16 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ... ## $ treatment: Factor w/ 3 levels "control","A",..: 1 1 1 1 1 1 1 1 1 1 ... ## $ gender : Factor w/ 2 levels "F","M": 2 2 2 2 2 2 2 2 2 2 ... ## $ age : num -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 -4.75 ... ## $ phase : Factor w/ 3 levels "fup","post","pre": 3 3 3 3 3 2 2 2 2 2 ... ## $ hour : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 1 2 3 4 5 ... ## $ value : num 1 2 4 2 1 3 2 5 3 2 ... head(obk.long) ## id treatment gender age phase hour value ## 1 1 control M -4.75 pre 1 1 ## 2 1 control M -4.75 pre 2 2 ## 3 1 control M -4.75 pre 3 4 ## 4 1 control M -4.75 pre 4 2 ## 5 1 control M -4.75 pre 5 1 ## 6 1 control M -4.75 post 1 3 } \keyword{dataset} afex/man/afex_plot.Rd0000644000176200001440000011602014604547604014232 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/afex_plot.R, R/afex_plot_plotting_functions.R \name{afex_plot} \alias{afex_plot} \alias{afex_plot.afex_aov} \alias{afex_plot.mixed} \alias{afex_plot.merMod} \alias{afex_plot.default} \alias{interaction_plot} \alias{oneway_plot} \title{m-way Plot with Error Bars and Raw Data} \usage{ afex_plot(object, ...) \method{afex_plot}{afex_aov}( object, x, trace, panel, mapping, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ... ) \method{afex_plot}{mixed}( object, x, trace, panel, mapping, id, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ... ) \method{afex_plot}{merMod}( object, x, trace, panel, mapping, id, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ... ) \method{afex_plot}{default}( object, x, trace, panel, mapping, id, dv, data, within_vars, between_vars, error = "model", error_ci = TRUE, error_level = 0.95, error_arg = list(width = 0), data_plot = TRUE, data_geom, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), emmeans_arg = list(), dodge = 0.5, return = "plot", factor_levels = list(), plot_first = NULL, legend_title, ... ) interaction_plot( means, data, mapping = c("shape", "lineytpe"), error_plot = TRUE, error_arg = list(width = 0), data_plot = TRUE, data_geom = ggplot2::geom_point, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), line_arg = list(), dodge = 0.5, plot_first = NULL, legend_title, col_x = "x", col_y = "y", col_trace = "trace", col_panel = "panel", col_lower = "lower", col_upper = "upper" ) oneway_plot( means, data, mapping = "", error_plot = TRUE, error_arg = list(width = 0), data_plot = TRUE, data_geom = ggbeeswarm::geom_beeswarm, data_alpha = 0.5, data_color = "darkgrey", data_arg = list(), point_arg = list(), plot_first = NULL, legend_title, col_x = "x", col_y = "y", col_panel = "panel", col_lower = "lower", col_upper = "upper" ) } \arguments{ \item{object}{\code{afex_aov}, \code{mixed}, \code{merMod} or other model object supported by \pkg{emmeans} (for further examples see: \code{vignette("afex_plot_supported_models")}).} \item{...}{currently ignored.} \item{x}{A \code{character} vector or one-sided \code{formula} specifying the factor names of the predictors displayed on the x-axis. \code{mapping} specifies further mappings for these factors if \code{trace} is missing.} \item{trace}{An optional \code{character} vector or one-sided \code{formula} specifying the factor names of the predictors connected by the same line. \code{mapping} specifies further mappings for these factors.} \item{panel}{An optional \code{character} vector or one-sided \code{formula} specifying the factor names of the predictors shown in different panels.} \item{mapping}{A \code{character} vector specifying which aesthetic mappings should be applied to either the \code{trace} factors (if \code{trace} is specified) or the \code{x} factors. Useful options are any combination of \code{"shape"}, \code{"color"}, \code{"linetype"}, or also \code{"fill"} (see examples). The default (i.e., missing) uses \code{c("shape", "linetype")} if \code{trace} is specified and \code{""} otherwise (i.e., no additional aesthetic). If specific mappings should not be applied to specific graphical elements, one can override those via the corresponding further arguments. For example, for \code{data_arg} the default is \code{list(color = "darkgrey")} which prevents that \code{"color"} is mapped onto points in the background.} \item{error}{A scalar \code{character} vector specifying on which standard error the error bars should be based. Default is \code{"model"}, which plots model-based standard errors. Further options are: \code{"none"} (or \code{NULL}), \code{"mean"}, \code{"within"} (or \code{"CMO"}), and \code{"between"}. See details.} \item{error_ci}{Logical. Should error bars plot confidence intervals (=\code{TRUE}, the default) or standard errors (=\code{FALSE})?} \item{error_level}{Numeric value between 0 and 1 determing the width of the confidence interval. Default is .95 corresponding to a 95\% confidence interval.} \item{error_arg}{A \code{list} of further arguments passed to \code{\link[ggplot2]{geom_errorbar}}, which draws the errorsbars. Default is \code{list(width = 0)} which suppresses the vertical bars at the end of the error bar.} \item{data_plot}{\code{logical}. Should raw data be plotted in the background? Default is \code{TRUE}.} \item{data_geom}{Geom \code{function} or \code{list} of geom functions used for plotting data in background. The default (missing) uses \code{\link[ggplot2]{geom_point}} if \code{trace} is specified, otherwise \code{\link[ggbeeswarm]{geom_beeswarm}} (a good alternative in case of many data points is \code{ggbeeswarm::geom_quasirandom}) . See examples fo further options.} \item{data_alpha}{numeric \code{alpha} value between 0 and 1 passed to \code{data_geom}. Default is \code{0.5} which correspond to semitransparent data points in the background such that overlapping data points are plotted darker. If \code{NULL} it is not passed to \code{data_geom}, and can be set via \code{data_arg}.} \item{data_color}{color that should be used for the data in the background. Default is \code{"darkgrey"}. If \code{NULL} it is not passed to \code{data_geom}, and can be set via \code{data_arg}. Ignored if \code{"color"} or \code{"colour"} in \code{mapping}.} \item{data_arg}{A \code{list} of further arguments passed to \code{data_geom}. Can also be a \code{list} of \code{list}s, in case \code{data_geom} is a \code{list} of multiple geoms, which allows having separate argument lists per \code{data_geom}.} \item{point_arg, line_arg}{A \code{list} of further arguments passed to \code{\link[ggplot2]{geom_point}} or \code{\link[ggplot2]{geom_line}} which draw the points and lines in the foreground. Default is \code{list()}. \code{line_arg} is only used if \code{trace} is specified.} \item{emmeans_arg}{A \code{list} of further arguments passed to \code{\link[emmeans]{emmeans}}. Of particular importance for ANOVAs is \code{model}, see \code{\link{afex_aov-methods}}.} \item{dodge}{Numerical amount of dodging of factor-levels on x-axis. Default is \code{0.5}.} \item{return}{A scalar \code{character} specifying what should be returned. The default \code{"plot"} returns the \pkg{ggplot2} plot. The other option \code{"data"} returns a list with two \code{data.frame}s containing the data used for plotting: \code{means} contains the means and standard errors for the foreground, \code{data} contains the raw data in the background.} \item{factor_levels}{A \code{list} of new factor levels that should be used in the plot. The name of each list entry needs to correspond to one of the factors in the plot. Each list element can optionally be a named character vector where the name corresponds to the old factor level and the value to the new factor level. Named vectors allow two things: (1) updating only a subset of factor levels (if only a subset of levels is specified) and (2) reordering (and renaming) the factor levels, as order of names within a list element are the order that will be used for plotting. If specified, emits a \code{message} with \code{old -> new} factor levels.} \item{plot_first}{A \code{ggplot2} geom (or a list of geoms) that will be added to the returned plot as a first element (i.e., before any of the other graphical elements). Useful for adding reference lines or similar (e.g., using \code{\link[ggplot2]{geom_hline}}).} \item{legend_title}{A scalar \code{character} vector with a new title for the legend.} \item{id}{An optional \code{character} vector specifying over which variables the raw data should be aggregated. Only relevant for \code{mixed}, \code{merMod}, and \code{default} method. The default (missing) uses all random effects grouping factors (for \code{mixed} and \code{merMod} method) or assumes all data points are independent. This can lead to many data points. \code{error = "within"} or \code{error = "between"} require that \code{id} is of length 1. See examples.} \item{dv}{An optional scalar \code{character} vector giving the name of the column containing the dependent variable for the \code{afex_plot.default} method. If missing, the function attempts to take it from the \code{call} slot of \code{object}. This is also used as y-axis label.} \item{data}{For the \code{afex_plot.default} method, an optional \code{data.frame} containing the raw data used for fitting the model and which will be used as basis for the data points in the background. If missing, it will be attempted to obtain it from the model via \code{\link[emmeans]{recover_data}}. For the plotting functions, a \code{data.frame} with the data that has to be passed and contains the background data points.} \item{within_vars, between_vars}{For the \code{afex_plot.default} method, an optional \code{character} vector specifying which variables should be treated as within-subjects (or repeated-measures) factors and which as between-subjects (or independent-samples) factors. If one of the two arguments is given, all other factors are assumed to fall into the other category.} \item{means}{\code{data.frame}s used for plotting of the plotting functions.} \item{error_plot}{\code{logical}. Should error bars be plotted? Only used in plotting functions. To suppress plotting of error bars use \code{error = "none"} in \code{afex_plot}.} \item{col_y, col_x, col_trace, col_panel}{A scalar \code{character} string specifying the name of the corresponding column containing the information used for plotting. Each column needs to exist in both the \code{means} and the \code{data} \code{data.frame}.} \item{col_lower, col_upper}{A scalar \code{character} string specifying the name of the columns containing lower and upper bounds for the error bars. These columns need to exist in \code{means}.} } \value{ Returns a \pkg{ggplot2} plot (i.e., object of class \code{c("gg", "ggplot")}) unless \code{return = "data"}. } \description{ Plots results from factorial experiments. Estimated marginal means and error bars are plotted in the foreground, raw data is plotted in the background. Error bars can be based on different standard errors (e.g., model-based, within-subjects, between-subjects). Functions described here return a \pkg{ggplot2} plot object, thus allowing further customization of the plot. \code{afex_plot} is the user friendly function that does data preparation and plotting. It also allows to only return the prepared data (\code{return = "data"}). \code{interaction_plot} does the plotting when a \code{trace} factor is present. \code{oneway_plot} does the plotting when a \code{trace} factor is absent. } \details{ \code{afex_plot} obtains the estimated marginal means via \code{\link[emmeans]{emmeans}} and aggregates the raw data to the same level. It then calculates the desired confidence interval or standard error (see below) and passes the prepared data to one of the two plotting functions: \code{interaction_plot} when \code{trace} is specified and \code{oneway_plot} otherwise. \subsection{Error Bars}{Error bars provide a grahical representation of the variability of the estimated means and should be routinely added to results figures. However, there exist several possibilities which particular measure of variability to use. Because of this, any figure depicting error bars should be accompanied by a note detailing which measure the error bars shows. The present functions allow plotting of different types of confidence intervals (if \code{error_ci = TRUE}, the default) or standard errors (if \code{error_ci = FALSE}). A further complication is that readers routinely misinterpret confidence intervals. The most common error is to assume that non-overlapping error bars indicate a significant difference (e.g., Belia et al., 2005). This is often too strong an assumption. (see e.g., Cumming & Finch, 2005; Knol et al., 2011; Schenker & Gentleman, 2005). For example, in a fully between-subjects design in which the error bars depict 95\% confidence intervals and groups are of approximately equal size and have equal variance, even error bars that overlap by as much as 50\% still correspond to \emph{p} < .05. Error bars that are just touching roughly correspond to \emph{p} = .01. In the case of designs involving repeated-measures factors the usual confidence intervals or standard errors (i.e., model-based confidence intervals or intervals based on the standard error of the mean) cannot be used to gauge significant differences as this requires knowledge about the correlation between measures. One popular alternative in the psychological literature are intervals based on within-subjects standard errors/confidence intervals (e.g., Cousineau & O'Brien, 2014). These attempt to control for the correlation across individuals and thereby allow judging differences between repeated-measures condition. As a downside, when using within-subjects intervals no comparisons across between-subjects conditions or with respect to a fixed-value are possible anymore. In the case of a mixed-design, no single type of error bar is possible that allows comparison across all conditions. Likewise, for mixed models involving multiple \emph{crossed} random effects, no single set of error bars (or even data aggregation) adequately represent the true varibility in the data and adequately allows for "inference by eye". Therefore, special care is necessary in such cases. One possiblity is to avoid error bars altogether and plot only the raw data in the background (with \code{error = "none"}). The raw data in the background still provides a visual impression of the variability in the data and the precision of the mean estimate, but does not as easily suggest an incorrect inferences. Another possibility is to use the model-based standard error and note in the figure caption that it does not permit comparisons across repeated-measures factors. The following "rules of eye" (Cumming and Finch, 2005) hold, when permitted by design (i.e., within-subjects bars for within-subjects comparisons; other variants for between-subjects comparisons), and groups are approximately equal in size and variance. Note that for more complex designs ususally analyzed with mixed models, such as designs involving complicated dependencies across data points, these rules of thumbs may be highly misleading. \itemize{ \item \emph{p} < .05 when the overlap of the 95\% confidence intervals (CIs) is no more than about half the average margin of error, that is, when proportion overlap is about .50 or less. \item \emph{p} < .01 when the two CIs do not overlap, that is, when proportion overlap is about 0 or there is a positive gap. \item \emph{p} < .05 when the gap between standard error (SE) bars is at least about the size of the average SE, that is, when the proportion gap is about 1 or greater. \item \emph{p} < .01 when the proportion gap between SE bars is about 2 or more. } } \subsection{Implemented Standard Errors}{The following lists the implemented approaches to calculate confidence intervals (CIs) and standard errors (SEs). CIs are based on the SEs using the \emph{t}-distribution with degrees of freedom based on the cell or group size. For ANOVA models, \code{afex_plot} attempts to warn in case the chosen approach is misleading given the design (e.g., model-based error bars for purely within-subjects plots). For \code{mixed} models, no such warnings are produced, but users should be aware that all options beside \code{"model"} are not actually appropriate and have only heuristic value. But then again, \code{"model"} based error bars do not permit comparisons for factors varying within one of the random-effects grouping factors (i.e., factors for which random-slopes should be estimated). \describe{ \item{\code{"model"}}{Uses model-based CIs and SEs. For ANOVAs, the variant based on the \code{lm} or \code{mlm} model (i.e., \code{emmeans_arg = list(model = "multivariate")}) seems generally preferrable.} \item{\code{"mean"}}{Calculates the standard error of the mean for each cell ignoring any repeated-measures factors.} \item{\code{"within"} or \code{"CMO"}}{Calculates within-subjects SEs using the Cosineau-Morey-O'Brien (Cousineau & O'Brien, 2014) method. This method is based on a double normalization of the data. SEs and CIs are then calculated independently for each cell (i.e., if the desired output contains between-subjects factors, SEs are calculated for each cell including the between-subjects factors).} \item{\code{"between"}}{First aggregates the data per participant and then calculates the SEs for each between-subjects condition. Results in one SE and \emph{t}-quantile for all conditions in purely within-subjects designs.} \item{\code{"none"} or \code{NULL}}{Suppresses calculation of SEs and plots no error bars.} } For \code{mixed} models, the within-subjects/repeated-measures factors are relative to the chosen \code{id} effects grouping factor. They are automatically detected based on the random-slopes of the random-effects grouping factor in \code{id}. All other factors are treated as independent-samples or between-subjects factors. } } \note{ Only the DV/response variable can be called \code{y}, but no factor/variable used for plotting. } \examples{ # note: use library("ggplot") to avoid "ggplot2::" in the following ################################################################## ## 2-factor Within-Subject Design ## ################################################################## data(md_12.1) aw <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise")) ##--------------------------------------------------------------- ## Basic Interaction Plots - ##--------------------------------------------------------------- ## all examples require emmeans and ggplot2: if (requireNamespace("emmeans") && requireNamespace("ggplot2")) { afex_plot(aw, x = "angle", trace = "noise") # or: afex_plot(aw, x = ~angle, trace = ~noise) afex_plot(aw, x = "noise", trace = "angle") ### For within-subject designs, using within-subject CIs is better: afex_plot(aw, x = "angle", trace = "noise", error = "within") (p1 <- afex_plot(aw, x = "noise", trace = "angle", error = "within")) ## use different themes for nicer graphs: p1 + ggplot2::theme_bw() } \dontrun{ p1 + ggplot2::theme_light() p1 + ggplot2::theme_minimal() p1 + jtools::theme_apa() p1 + ggpubr::theme_pubr() ### set theme globally for R session: ggplot2::theme_set(ggplot2::theme_bw()) ### There are several ways to deal with overlapping points in the background besides alpha # Using the default data geom and ggplot2::position_jitterdodge afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.3, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 5, dodge.width = 0.3 ## needs to be same as dodge ))) # Overlapping points are shown as larger points using geom_count afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggplot2::geom_count) # Using ggbeeswarm::geom_quasirandom (overlapping points shown in violin shape) afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_quasirandom, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8, width = 0.05 ## small value ensure data points match means )) # Using ggbeeswarm::geom_beeswarm (overlapping points are adjacent on y-axis) afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = ggbeeswarm::geom_beeswarm, data_arg = list( dodge.width = 0.5, ## needs to be same as dodge cex = 0.8)) # Do not display points, but use a violinplot: ggplot2::geom_violin afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = ggplot2::geom_violin, data_arg = list(width = 0.5)) # violinplots with color: ggplot2::geom_violin afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("linetype", "shape", "fill"), data_geom = ggplot2::geom_violin, data_arg = list(width = 0.5)) # do not display points, but use a boxplot: ggplot2::geom_boxplot afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = ggplot2::geom_boxplot, data_arg = list(width = 0.3)) # combine points with boxplot: ggpol::geom_boxjitter afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = ggpol::geom_boxjitter, data_arg = list(width = 0.3)) ## hides error bars! # nicer variant of ggpol::geom_boxjitter afex_plot(aw, x = "noise", trace = "angle", error = "within", mapping = c("shape", "fill"), data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.3, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0)) # nicer variant of ggpol::geom_boxjitter without lines afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.7, mapping = c("shape", "fill"), data_geom = ggpol::geom_boxjitter, data_arg = list( width = 0.5, jitter.params = list(width = 0, height = 10), outlier.intersect = TRUE), point_arg = list(size = 2.5), line_arg = list(linetype = 0), error_arg = list(linewidth = 1.5, width = 0)) ### we can also use multiple geoms for the background by passing a list of geoms afex_plot(aw, x = "noise", trace = "angle", error = "within", data_geom = list( ggplot2::geom_violin, ggplot2::geom_point )) ## with separate extra arguments: afex_plot(aw, x = "noise", trace = "angle", error = "within", dodge = 0.5, data_geom = list( ggplot2::geom_violin, ggplot2::geom_point ), data_arg = list( list(width = 0.4), list(position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 5, dodge.width = 0.5 ## needs to be same as dodge ))) ) } ##--------------------------------------------------------------- ## One-Way Plots - ##--------------------------------------------------------------- \dontrun{ afex_plot(aw, x = "angle", error = "within") ## default ## with color we need larger points afex_plot(aw, x = "angle", mapping = "color", error = "within", point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) afex_plot(aw, x = "angle", error = "within", data_geom = ggpol::geom_boxjitter) ## nicer afex_plot(aw, x = "angle", error = "within", data_geom = ggpol::geom_boxjitter, mapping = "fill", data_alpha = 0.7, data_arg = list( width = 0.6, jitter.params = list(width = 0.07, height = 10), outlier.intersect = TRUE ), point_arg = list(size = 2.5), error_arg = list(linewidth = 1.5, width = 0.05)) ## we can use multiple geoms with separate argument lists: afex_plot(aw, x = "angle", error = "within", data_geom = list(ggplot2::geom_violin, ggplot2::geom_boxplot), data_arg = list(list(width = 0.7), list(width = 0.1))) ## we can add a line connecting the means using geom_point(aes(group = 1)): afex_plot(aw, x = "angle", error = "within") + ggplot2::geom_line(ggplot2::aes(group = 1)) ## we can also add lines connecting the individual data-point in the bg. # to deal with overlapping points, we use geom_count and make means larger afex_plot(aw, x = "angle", error = "within", data_geom = list(ggplot2::geom_count, ggplot2::geom_line), data_arg = list(list(), list(mapping = ggplot2::aes(group = id))), point_arg = list(size = 2.5), error_arg = list(width = 0, linewidth = 1.5)) + ggplot2::geom_line(ggplot2::aes(group = 1), linewidth = 1.5) ## One-way plots also supports panels: afex_plot(aw, x = "angle", panel = "noise", error = "within") ## And panels with lines: afex_plot(aw, x = "angle", panel = "noise", error = "within") + ggplot2::geom_line(ggplot2::aes(group = 1)) ## For more complicated plots it is easier to attach ggplot2: library("ggplot2") ## We can hide geoms by plotting them in transparent colour and add them ## afterward to use a mapping not directly supported. ## For example, the next plot adds a line to a one-way plot with panels, but ## with all geoms in the foreground having a colour conditional on the panel. afex_plot(aw, x = "angle", panel = "noise", error = "within", point_arg = list(color = "transparent"), error_arg = list(color = "transparent")) + geom_point(aes(color = panel)) + geom_linerange(aes(color = panel, ymin = lower, ymax = upper)) + geom_line(aes(group = 1, color = panel)) + guides(color = guide_legend(title = "NOISE")) ## Note that we need to use guides explicitly, otherwise the legend title would ## be "panel". legend_title does not work in this case. ##--------------------------------------------------------------- ## Other Basic Options - ##--------------------------------------------------------------- ## relabel factor levels via factor_levels (with message) afex_plot(aw, x = "noise", trace = "angle", factor_levels = list(angle = c("0°", "4°", "8°"), noise = c("Absent", "Present"))) ## factor_levels allows named vectors which enable reordering the factor levels ### and renaming subsets of levels: afex_plot(aw, x = "noise", trace = "angle", factor_levels = list( angle = c(X8 = "8°", X4 = "4°", X0 = "0°"), noise = c(present = "Present") ) ) ## Change title of legend afex_plot(aw, x = "noise", trace = "angle", legend_title = "Noise Condition") ## Add reference line in the background afex_plot(aw, x = "noise", trace = "angle", plot_first = ggplot2::geom_hline(yintercept = 450, colour = "darkgrey")) ## for plots with few factor levels, smaller dodge might be better: afex_plot(aw, x = "angle", trace = "noise", dodge = 0.25) ################################################################# ## 4-factor Mixed Design ## ################################################################# data(obk.long, package = "afex") a1 <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender") ## too difficult to see anything afex_plot(a1, ~phase*hour, ~treatment) + ggplot2::theme_light() ## better afex_plot(a1, ~hour, ~treatment, ~phase) + ggplot2::theme_light() ## even better afex_plot(a1, ~hour, ~treatment, ~phase, dodge = 0.65, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 0.2, dodge.width = 0.65 ## needs to be same as dodge ), color = "darkgrey")) + ggplot2::theme_classic() # with color instead of linetype to separate trace factor afex_plot(a1, ~hour, ~treatment, ~phase, mapping = c("shape", "color"), dodge = 0.65, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 0.2, dodge.width = 0.65 ## needs to be same as dodge ))) + ggplot2::theme_light() # only color to separate trace factor afex_plot(a1, ~hour, ~treatment, ~phase, mapping = c("color"), dodge = 0.65, data_color = NULL, ## needs to be set to NULL to avoid error data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 0.2, dodge.width = 0.65 ## needs to be same as dodge ))) + ggplot2::theme_classic() ## plot involving all 4 factors: afex_plot(a1, ~hour, ~treatment, ~gender+phase, dodge = 0.65, data_arg = list( position = ggplot2::position_jitterdodge( jitter.width = 0, jitter.height = 0.2, dodge.width = 0.65 ## needs to be same as dodge ), color = "darkgrey")) + ggplot2::theme_bw() ##--------------------------------------------------------------- ## Different Standard Errors Available - ##--------------------------------------------------------------- ## purely within-design cbind( afex_plot(a1, ~phase, ~hour, error = "model", return = "data")$means[,c("phase", "hour", "y", "SE")], multivariate = afex_plot(a1, ~phase, ~hour, error = "model", return = "data")$means$error, mean = afex_plot(a1, ~phase, ~hour, error = "mean", return = "data")$means$error, within = afex_plot(a1, ~phase, ~hour, error = "within", return = "data")$means$error, between = afex_plot(a1, ~phase, ~hour, error = "between", return = "data")$means$error) ## mixed design cbind( afex_plot(a1, ~phase, ~treatment, error = "model", return = "data")$means[,c("phase", "treatment", "y", "SE")], multivariate = afex_plot(a1, ~phase, ~treatment, error = "model", return = "data")$means$error, mean = afex_plot(a1, ~phase, ~treatment, error = "mean", return = "data")$means$error, within = afex_plot(a1, ~phase, ~treatment, error = "within", return = "data")$means$error, between = afex_plot(a1, ~phase, ~treatment, error = "between", return = "data")$means$error) } ################################################################## ## Mixed Models ## ################################################################## if (requireNamespace("MEMSS") && requireNamespace("emmeans") && requireNamespace("ggplot2")) { data("Machines", package = "MEMSS") m1 <- mixed(score ~ Machine + (Machine|Worker), data=Machines) pairs(emmeans::emmeans(m1, "Machine")) # contrast estimate SE df t.ratio p.value # A - B -7.966667 2.420850 5 -3.291 0.0481 # A - C -13.916667 1.540100 5 -9.036 0.0007 # B - C -5.950000 2.446475 5 -2.432 0.1253 ## Default (i.e., model-based) error bars suggest no difference between Machines. ## This contrasts with pairwise comparisons above. afex_plot(m1, "Machine") ## Impression from within-subject error bars is more in line with pattern of differences. afex_plot(m1, "Machine", error = "within") } \dontrun{ data("fhch2010") # load fhch <- droplevels(fhch2010[ fhch2010$correct,]) # remove errors ### following model should take less than a minute to fit: mrt <- mixed(log_rt ~ task*stimulus*frequency + (stimulus*frequency||id)+ (task||item), fhch, method = "S", expand_re = TRUE) ## way too many points in background: afex_plot(mrt, "stimulus", "frequency", "task") ## better to restrict plot of data to one random-effects grouping variable afex_plot(mrt, "stimulus", "frequency", "task", id = "id") ## when plotting data from a single random effect, different error bars are possible: afex_plot(mrt, "stimulus", "frequency", "task", id = "id", error = "within") afex_plot(mrt, "stimulus", "frequency", "task", id = "id", error = "mean") ## compare visual impression with: pairs(emmeans::emmeans(mrt, c("stimulus", "frequency"), by = "task")) ## same logic also possible for other random-effects grouping factor afex_plot(mrt, "stimulus", "frequency", "task", id = "item") ## within-item error bars are misleading here. task is sole within-items factor. afex_plot(mrt, "stimulus", "frequency", "task", id = "item", error = "within") ## CIs based on standard error of mean look small, but not unreasonable given results. afex_plot(mrt, "stimulus", "frequency", "task", id = "item", error = "mean") ### compare distribution of individual data for different random effects: ## requires package cowplot p_id <- afex_plot(mrt, "stimulus", "frequency", "task", id = "id", error = "within", dodge = 0.7, data_geom = ggplot2::geom_violin, mapping = c("shape", "fill"), data_arg = list(width = 0.7)) + ggplot2::scale_shape_manual(values = c(4, 17)) + ggplot2::labs(title = "ID") p_item <- afex_plot(mrt, "stimulus", "frequency", "task", id = "item", error = "within", dodge = 0.7, data_geom = ggplot2::geom_violin, mapping = c("shape", "fill"), data_arg = list(width = 0.7)) + ggplot2::scale_shape_manual(values = c(4, 17)) + ggplot2::labs(title = "Item") ### see: https://cran.r-project.org/package=cowplot/vignettes/shared_legends.html p_comb <- cowplot::plot_grid( p_id + ggplot2::theme_light() + ggplot2::theme(legend.position="none"), p_item + ggplot2::theme_light() + ggplot2::theme(legend.position="none") ) legend <- cowplot::get_legend(p_id + ggplot2::theme(legend.position="bottom")) cowplot::plot_grid(p_comb, legend, ncol = 1, rel_heights = c(1, 0.1)) ##---------------------------------------------------------------- ## Support for lme4::lmer - ##---------------------------------------------------------------- Oats <- nlme::Oats ## afex_plot does currently not support implicit nesting: (1|Block/Variety) ## Instead, we need to create the factor explicitly Oats$VarBlock <- Oats$Variety:Oats$Block Oats.lmer <- lmer(yield ~ Variety * factor(nitro) + (1|VarBlock) + (1|Block), data = Oats) afex_plot(Oats.lmer, "nitro", "Variety") afex_plot(Oats.lmer, "nitro", panel = "Variety") ################################################################## ## Default Method works for Models Supported by emmeans ## ################################################################## ## lm warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks) afex_plot(warp.lm, "tension") afex_plot(warp.lm, "tension", "wool") ## poisson glm ins <- data.frame( n = c(500, 1200, 100, 400, 500, 300), size = factor(rep(1:3,2), labels = c("S","M","L")), age = factor(rep(1:2, each = 3)), claims = c(42, 37, 1, 101, 73, 14)) ins.glm <- glm(claims ~ size + age + offset(log(n)), data = ins, family = "poisson") afex_plot(ins.glm, "size", "age") ## binomial glm adapted from ?predict.glm ldose <- factor(rep(0:5, 2)) numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16) sex <- factor(rep(c("M", "F"), c(6, 6))) SF <- numdead/20 ## dv should be a vector, no matrix budworm.lg <- glm(SF ~ sex*ldose, family = binomial, weights = rep(20, length(numdead))) afex_plot(budworm.lg, "ldose") afex_plot(budworm.lg, "ldose", "sex") ## data point is hidden behind mean! afex_plot(budworm.lg, "ldose", "sex", data_arg = list(size = 4, color = "red")) ## nlme mixed model data(Oats, package = "nlme") Oats$nitro <- factor(Oats$nitro) oats.1 <- nlme::lme(yield ~ nitro * Variety, random = ~ 1 | Block / Variety, data = Oats) afex_plot(oats.1, "nitro", "Variety", data = Oats) afex_plot(oats.1, "nitro", "Variety", data = Oats, id = "Block") afex_plot(oats.1, "nitro", data = Oats) afex_plot(oats.1, "nitro", data = Oats, id = c("Block", "Variety")) afex_plot(oats.1, "nitro", data = Oats, id = "Block") } } \references{ Belia, S., Fidler, F., Williams, J., & Cumming, G. (2005). Researchers Misunderstand Confidence Intervals and Standard Error Bars. \emph{Psychological Methods}, 10(4), 389-396. https://doi.org/10.1037/1082-989X.10.4.389 Cousineau, D., & O'Brien, F. (2014). Error bars in within-subject designs: a comment on Baguley (2012). \emph{Behavior Research Methods}, 46(4), 1149-1151. https://doi.org/10.3758/s13428-013-0441-z Cumming, G., & Finch, S. (2005). Inference by Eye: Confidence Intervals and How to Read Pictures of Data. \emph{American Psychologist}, 60(2), 170-180. https://doi.org/10.1037/0003-066X.60.2.170 Knol, M. J., Pestman, W. R., & Grobbee, D. E. (2011). The (mis)use of overlap of confidence intervals to assess effect modification. \emph{European Journal of Epidemiology}, 26(4), 253-254. https://doi.org/10.1007/s10654-011-9563-8 Schenker, N., & Gentleman, J. F. (2001). On Judging the Significance of Differences by Examining the Overlap Between Confidence Intervals. \emph{The American Statistician}, 55(3), 182-186. https://doi.org/10.1198/000313001317097960 } afex/man/fhch2010.Rd0000644000176200001440000000737714217364040013471 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/fhch2010-data.R \docType{data} \encoding{UTF-8} \name{fhch2010} \alias{fhch2010} \title{Data from Freeman, Heathcote, Chalmers, & Hockley (2010)} \format{ A \code{data.frame} with 13,222 obs. of 9 variables: \describe{ \item{id}{participant id, \code{factor}} \item{task}{\code{factor} with two levels indicating which task was performed: \code{"naming"} or \code{"lexdec"}} \item{stimulus}{\code{factor} indicating whether the shown stimulus was a \code{"word"} or \code{"nonword"}} \item{density}{\code{factor} indicating the neighborhood density of presented items with two levels: \code{"low"} and \code{"high"}. Density is defined as the number of words that differ from a base word by one letter or phoneme.} \item{frequency}{\code{factor} indicating the word frequency of presented items with two levels: \code{"low"} (i.e., words that occur less often in natural language) and \code{"high"} (i.e., words that occur more often in natural language).} \item{length}{\code{factor} with 3 levels (4, 5, or 6) indicating the number of characters of presented stimuli.} \item{item}{\code{factor} with 600 levels: 300 words and 300 nonwords} \item{rt}{response time in seconds} \item{log_rt}{natural logarithm of response time in seconds} \item{correct}{boolean indicating whether or not the response in the lexical decision task was correct or incorrect (incorrect responses of the naming task are not part of the data).} } } \source{ Freeman, E., Heathcote, A., Chalmers, K., & Hockley, W. (2010). Item effects in recognition memory for words. Journal of Memory and Language, 62(1), 1-18. http://doi.org/10.1016/j.jml.2009.09.004 } \usage{ fhch2010 } \description{ Lexical decision and word naming latencies for 300 words and 300 nonwords presented in Freeman, Heathcote, Chalmers, and Hockley (2010). The study had one between-subjects factors, \code{"task"} with two levels (\code{"naming"} or \code{"lexdec"}), and four within-subjects factors: \code{"stimulus"} type with two levels (\code{"word"} or \code{"nonword"}), word \code{"density"} and word \code{"frequency"} each with two levels (\code{"low"} and \code{"high"}) and stimulus \code{"length"} with three levels (4, 5, and 6). } \details{ In the lexical-decision condition (N = 25), subjects indicated whether each item was a word or a nonword, by pressing either the left (labeled word) or right (labeled nonword) outermost button on a 6-button response pad. The next study item appeared immediately after the lexical decision response was given. In the naming condition (N = 20), subjects were asked to name each item aloud, and items remained on screen for 3 s. Naming time was recorded by a voice key. Items consisted of 300 words, 75 in each set making up a factorial combination of high and low density and frequency, and 300 nonwords, with equal numbers of 4, 5, and 6 letter items in each set. } \examples{ data("fhch2010") str(fhch2010) a1 <- aov_ez("id", "log_rt", fhch2010, between = "task", within = c("density", "frequency", "length", "stimulus")) nice(a1) if (requireNamespace("emmeans") && requireNamespace("ggplot2")) { afex_plot(a1, "length", "frequency", c("task", "stimulus"), error = "within") afex_plot(a1, "density", "frequency", c("task", "stimulus"), error = "within") } \dontrun{ a2 <- aov_ez("id", "rt", fhch2010, between = "task", within = c("density", "frequency", "length", "stimulus")) nice(a2) if (requireNamespace("emmeans") && requireNamespace("ggplot2")) { afex_plot(a2, "length", "frequency", c("task", "stimulus"), error = "within") afex_plot(a2, "density", "frequency", c("task", "stimulus"), error = "within") } } } \keyword{dataset} afex/man/ems.Rd0000644000176200001440000000544214417325247013041 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ems.R \name{ems} \alias{ems} \title{Expected values of mean squares for factorial designs Implements the Cornfield-Tukey algorithm for deriving the expected values of the mean squares for factorial designs.} \usage{ ems(design, nested = NULL, random = "") } \arguments{ \item{design}{A \code{formula} object specifying the factors in the design (except residual error, which is always implicitly included). The left hand side of the \code{~} is the symbol that will be used to denote the number of replications per lowest-level factor combination (I usually use "r" or "n"). The right hand side should include all fixed and random factors separated by \code{*}. Factor names should be single letters.} \item{nested}{A \code{character} vector, where each element is of the form \code{"A/B"}, indicating that the levels of factor B are nested under the levels of factor A.} \item{random}{A \code{character} string indicating, without spaces or any separating characters, which of the factors specified in the design are random.} } \value{ The returned value is a formatted table where the rows represent the mean squares, the columns represent the variance components that comprise the various mean squares, and the entries in each cell represent the terms that are multiplied and summed to form the expectation of the mean square for that row. Each term is either the lower-case version of one of the experimental factors, which indicates the number of levels for that factor, or a "1", which means the variance component for that column is contributes to the mean square but is not multiplied by anything else. } \description{ Expected values of mean squares for factorial designs Implements the Cornfield-Tukey algorithm for deriving the expected values of the mean squares for factorial designs. } \note{ Names for factors or parameters should only be of length 1 as they are simply concatenated in the returned table. } \examples{ # 2x2 mixed anova # A varies between-subjects, B varies within-subjects ems(r ~ A*B*S, nested="A/S", random="S") # Clark (1973) example # random Subjects, random Words, fixed Treatments ems(r ~ S*W*T, nested="T/W", random="SW") # EMSs for Clark design if Words are fixed ems(r ~ S*W*T, nested="T/W", random="S") } \seealso{ A detailed description with explanation of the example can be found \href{https://web.archive.org/web/20210805121242/http://www.talkstats.com/threads/share-your-functions-code.18603/page-9#post-82050}{elsewhere} (note that the \code{design} argument of the function described at the link behaves slightly different). Example applications of this function can be found here: \url{https://stats.stackexchange.com/a/122662/442}. } \author{ Jake Westfall } afex/man/round_ps.Rd0000644000176200001440000000216514217364040014075 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/round_ps.R \encoding{UTF-8} \name{round_ps} \alias{round_ps} \alias{round_ps_apa} \title{Helper functions for rounding p-values} \usage{ round_ps(x) round_ps_apa(x) } \arguments{ \item{x}{a numeric vector} } \value{ A character vector with the same length as x. } \description{ These functions return a character vector of p-values that are rounded as described below and without the leading zero before the decimal point. } \details{ For \code{round_ps} p-values are rounded in a sane way: .99 - .01 to two digits, < .01 to three digits, < .001 to four digits. For \code{round_ps_apa} p-values are rounded following APA guidelines: .999 - .001 to three digits, and < .001 for values below this threshold. } \note{ These functions are useful in \code{\link{nice}} and the default is set via \code{\link{afex_options}}. } \examples{ x <- runif(10) y <- runif(10, 0, .01) round_ps(x) round_ps_apa(x) round_ps(y) round_ps_apa(y) round_ps(0.0000000099) round_ps_apa(0.0000000099) } \author{ Henrik Singmann } afex/man/aov_car.Rd0000644000176200001440000006616114413016175013665 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/aov_car.R \encoding{UTF-8} \name{aov_car} \alias{aov_car} \alias{aov_4} \alias{aov_ez} \title{Convenient ANOVA estimation for factorial designs} \usage{ aov_car( formula, data, fun_aggregate = NULL, type = afex_options("type"), factorize = afex_options("factorize"), observed = NULL, anova_table = list(), include_aov = afex_options("include_aov"), return = afex_options("return_aov"), ... ) aov_4( formula, data, observed = NULL, fun_aggregate = NULL, type = afex_options("type"), factorize = afex_options("factorize"), return = afex_options("return_aov"), anova_table = list(), include_aov = afex_options("include_aov"), ..., print.formula = FALSE ) aov_ez( id, dv, data, between = NULL, within = NULL, covariate = NULL, observed = NULL, fun_aggregate = NULL, transformation, type = afex_options("type"), factorize = afex_options("factorize"), return = afex_options("return_aov"), anova_table = list(), include_aov = afex_options("include_aov"), ..., print.formula = FALSE ) } \arguments{ \item{formula}{A formula specifying the ANOVA model similar to \code{\link{aov}} (for \code{aov_car} or similar to \code{lme4:lmer} for \code{aov_4}). Must include an error term (i.e., \code{Error(id/...)} for \code{aov_car} or \code{(...|id)} for \code{aov_4}). Note that the within-subject factors do not need to be outside the Error term (this contrasts with \code{aov}). See Details.} \item{data}{A \code{data.frame} containing the data. Mandatory.} \item{fun_aggregate}{The function for aggregating the data before running the ANOVA if there is more than one observation per individual and cell of the design. The default \code{NULL} issues a warning if aggregation is necessary and uses \code{\link{mean}}. Pass \code{mean} directly to avoid the warning.} \item{type}{The type of sums of squares for the ANOVA. The default is given by \code{afex_options("type")}, which is \strong{initially set to 3}. Passed to \code{\link[car]{Anova}}. Possible values are \code{"II"}, \code{"III"}, \code{2}, or \code{3}.} \item{factorize}{logical. Should between subject factors be factorized (with note) before running the analysis. The default is given by \code{afex_options("factorize")}, which is initially \code{TRUE}. If one wants to run an ANCOVA, this needs to be set to \code{FALSE} (in which case centering on 0 is checked on numeric variables).} \item{observed}{\code{character} vector indicating which of the variables are observed (i.e, measured) as compared to experimentally manipulated. The default effect size reported (generalized eta-squared) requires correct specification of the observed (in contrast to manipulated) variables.} \item{anova_table}{\code{list} of further arguments passed to function producing the ANOVA table. Arguments such as \code{es} (effect size) or \code{correction} are passed to either \code{anova.afex_aov} or \code{nice}. Note that those settings can also be changed once an object of class \code{afex_aov} is created by invoking the \code{anova} method directly.} \item{include_aov}{Boolean. Allows suppressing the calculation of the aov object. If TRUE the aov model is part of the returned \code{afex_aov} object. \code{FALSE} (the default) prevents this potentially costly calculation. Especially for designs with larger N and within-subjects factors, this is highly advisable. Follow-up analyses using \pkg{emmeans} using the \code{univariate} model (which is not recommended) require the aov model and TRUE.} \item{return}{What should be returned? The default is given by \code{afex_options("return_aov")}, which is initially \code{"afex_aov"}, returning an S3 object of class \code{afex_aov} for which various \link[=afex_aov-methods]{methods} exist (see there and below for more details). Other values are currently still supported for backward compatibility.} \item{...}{Further arguments passed to \code{fun_aggregate}.} \item{print.formula}{\code{aov_ez} and \code{aov_4} are wrapper for \code{aov_car}. This boolean argument indicates whether the formula in the call to \code{car.aov} should be printed.} \item{id}{\code{character} vector (of length 1) indicating the subject identifier column in \code{data}.} \item{dv}{\code{character} vector (of length 1) indicating the column containing the \strong{dependent variable} in \code{data}.} \item{between}{\code{character} vector indicating the \strong{between}-subject(s) factor(s)/column(s) in \code{data}. Default is \code{NULL} indicating no between-subjects factors.} \item{within}{\code{character} vector indicating the \strong{within}-subject(s)(or repeated-measures) factor(s)/column(s) in \code{data}. Default is \code{NULL} indicating no within-subjects factors.} \item{covariate}{\code{character} vector indicating the between-subject(s) covariate(s) (i.e., column(s)) in \code{data}. Default is \code{NULL} indicating no covariates. Please note that \code{factorize} needs to be set to \code{FALSE} in case the covariate is numeric and should be treated as such.} \item{transformation}{In \code{aov_ez}, a \code{character} vector (of length 1) indicating the name of a transformation to apply to \code{dv} before fitting the model. If missing, no transformation is applied. In \code{aov_car} and \code{aov_4}, a response transformation may be incorporated in the left-hand side of \code{formula}.} } \value{ \code{aov_car}, \code{aov_4}, and \code{aov_ez} are wrappers for \code{\link[car]{Anova}} and \code{\link{aov}}, the return value is dependent on the \code{return} argument. Per default, an S3 object of class \code{"afex_aov"} is returned containing the following slots: \describe{ \item{\code{"anova_table"}}{An ANOVA table of class \code{c("anova", "data.frame")}.} \item{\code{"aov"}}{\code{aov} object returned from \code{\link{aov}} (should not be used to evaluate significance of effects, but can be passed to \code{emmeans} for post-hoc tests).} \item{\code{"Anova"}}{object returned from \code{\link[car]{Anova}}, an object of class \code{"Anova.mlm"} (if within-subjects factors are present) or of class \code{c("anova", "data.frame")}.} \item{\code{"lm"}}{the object fitted with \code{lm} and passed to \code{Anova} (i.e., an object of class \code{"lm"} or \code{"mlm"}). Also returned if \code{return = "lm"}.} \item{\code{"data"}}{a list containing: (1) \code{long} (the possibly aggregated data in long format used for \code{aov}), \code{wide} (the data used to fit the \code{lm} object), and \code{idata} (if within-subject factors are present, the \code{idata} argument passed to \code{car::Anova}). Also returned if \code{return = "data"}.} } In addition, the object has the following attributes: \code{"dv"}, \code{"id"}, \code{"within"}, \code{"between"}, and \code{"type"}. The \link[=afex_aov-methods]{print} method for \code{afex_aov} objects (invisibly) returns (and prints) the same as if \code{return} is \code{"nice"}: a nice ANOVA table (produced by \code{\link{nice}}) with the following columns: \code{Effect}, \code{df}, \code{MSE} (mean-squared errors), \code{F} (potentially with significant symbols), \code{ges} (generalized eta-squared), \code{p}. } \description{ These functions allow convenient specification of any type of ANOVAs (i.e., purely within-subjects ANOVAs, purely between-subjects ANOVAs, and mixed between-within or split-plot ANOVAs) for data in the \strong{long} format (i.e., one observation per row). If the data has more than one observation per individual and cell of the design (e.g., multiple responses per condition), the data will be automatically aggregated. The default settings reproduce results from commercial statistical packages such as SPSS or SAS. \code{aov_ez} is called specifying the factors as character vectors, \code{aov_car} is called using a formula similar to \code{\link{aov}} specifying an error strata for the within-subject factor(s), and \code{aov_4} is called with a \pkg{lme4}-like formula (all ANOVA functions return identical results). The returned object can be passed to e.g., \pkg{emmeans} for further analysis (e.g., follow-up tests, contrasts, plotting, etc.). These functions employ \code{\link[car]{Anova}} (from the \pkg{car} package) to provide test of effects avoiding the somewhat unhandy format of \code{car::Anova}. } \details{ \subsection{Details of ANOVA Specification}{ \code{aov_ez} will concatenate all between-subject factors using \code{*} (i.e., producing all main effects and interactions) and all covariates by \code{+} (i.e., adding only the main effects to the existing between-subject factors). The within-subject factors do fully interact with all between-subject factors and covariates. This is essentially identical to the behavior of SPSS's \code{glm} function. The \code{formula}s for \code{aov_car} or \code{aov_4} must contain a single \code{Error} term specifying the \code{ID} column and potential within-subject factors (you can use \code{\link{mixed}} for running mixed-effects models with multiple error terms). Factors outside the \code{Error} term are treated as between-subject factors (the within-subject factors specified in the \code{Error} term are ignored outside the \code{Error} term; in other words, it is not necessary to specify them outside the \code{Error} term, see Examples).\cr Suppressing the intercept (i.e, via \code{0 +} or \code{- 1}) is ignored. Specific specifications of effects (e.g., excluding terms with \code{-} or using \code{^}) could be okay but is not tested. Using the \code{\link{I}} or \code{\link{poly}} function within the formula is not tested and not supported! To run an ANCOVA you need to set \code{factorize = FALSE} and make sure that all variables have the correct type (i.e., factors are factors and numeric variables are numeric and centered). Note that the default behavior is to include calculation of the effect size generalized eta-squared for which \strong{all non-manipluated (i.e., observed)} variables need to be specified via the \code{observed} argument to obtain correct results. When changing the effect size to \code{"pes"} (partial eta-squared) or \code{"none"} via \code{anova_table} this becomes unnecessary. Factor contrasts will be set to \code{"contr.sum"} for all between-subject factors if default contrasts are not equal to \code{"contr.sum"} or \code{attrib(factor, "contrasts") != "contr.sum"}. (within-subject factors are hard-coded \code{"contr.sum"}.) } \subsection{Statistical Issues}{ \strong{Type 3 sums of squares are default in \pkg{afex}.} While some authors argue that so-called type 3 sums of squares are dangerous and/or problematic (most notably Venables, 2000), they are the default in many commercial statistical application such as SPSS or SAS. Furthermore, statisticians with an applied perspective recommend type 3 tests (e.g., Maxwell and Delaney, 2004). Consequently, they are the default for the ANOVA functions described here. For some more discussion on this issue see \href{https://stats.stackexchange.com/q/6208/442}{here}. Note that lower order effects (e.g., main effects) in type 3 ANOVAs are only meaningful with \href{https://stats.oarc.ucla.edu/other/mult-pkg/faq/general/faqwhat-is-effect-coding/}{effects coding}. Therefore, contrasts are set to \code{\link{contr.sum}} which ensures meaningful results. For a discussion of the other (non-recommended) coding schemes see \href{https://stats.oarc.ucla.edu/r/library/r-library-contrast-coding-systems-for-categorical-variables/}{here}. } \subsection{Follow-Up Contrasts and Post-Hoc Tests}{ The S3 object returned per default can be directly passed to \code{emmeans::emmeans} for further analysis. This allows to test any type of contrasts that might be of interest independent of whether or not this contrast involves between-subject variables, within-subject variables, or a combination thereof. The general procedure to run those contrasts is the following (see Examples for a full example): \enumerate{ \item Estimate an \code{afex_aov} object with the function returned here. For example: \code{x <- aov_car(dv ~ a*b + (id/c), d)} \item Obtain a \code{\link[emmeans]{emmGrid-class}} object by running \code{\link[emmeans]{emmeans}} on the \code{afex_aov} object from step 1 using the factors involved in the contrast. For example: \code{r <- emmeans(x, ~a:c)} \item Create a list containing the desired contrasts on the reference grid object from step 2. For example: \code{con1 <- list(a_x = c(-1, 1, 0, 0, 0, 0), b_x = c(0, 0, -0.5, -0.5, 0, 1))} \item Test the contrast on the reference grid using \code{\link[emmeans]{contrast}}. For example: \code{contrast(r, con1)} \item To control for multiple testing p-value adjustments can be specified. For example the Bonferroni-Holm correction: \code{contrast(r, con1, adjust = "holm")} } Note that \pkg{emmeans} allows for a variety of advanced settings and simplifications, for example: all pairwise comparison of a single factor using one command (e.g., \code{emmeans(x, "a", contr = "pairwise")}) or advanced control for multiple testing by passing objects to \pkg{multcomp}. A comprehensive overview of the functionality is provided in the accompanying vignettes (see \href{https://CRAN.R-project.org/package=emmeans}{here}). Since version 1.0, \pkg{afex} per default uses the \code{multivariate} model (i.e., the \code{lm} slot of the \code{afex_aov} object) for follow-up tests with \pkg{emmeans}. Compared to the \code{univariate} model (i.e., the \code{aov} slot), this can handle unbalanced data and addresses sphericity better. To use the older (and not recommended) \code{model = "univariate"} make sure to set \code{include_aov = TRUE} when estimating the ANOVA. Starting with \pkg{afex} version 0.22, \pkg{emmeans} is \emph{not} loaded/attached automatically when loading \pkg{afex}. Therefore, \pkg{emmeans} now needs to be loaded by the user via \code{library("emmeans")} or \code{require("emmeans")}. } \subsection{Methods for \code{afex_aov} Objects}{ A full overview over the methods provided for \code{afex_aov} objects is provided in the corresponding help page: \code{\link{afex_aov-methods}}. The probably most important ones for end-users are \code{summary}, \code{anova}, and \code{\link{nice}}. The \code{summary} method returns, for ANOVAs containing within-subject (repeated-measures) factors with more than two levels, the complete univariate analysis: Results without df-correction, the Greenhouse-Geisser corrected results, the Hyunh-Feldt corrected results, and the results of the Mauchly test for sphericity. The \code{anova} method returns a \code{data.frame} of class \code{"anova"} containing the ANOVA table in numeric form (i.e., the one in slot \code{anova_table} of a \code{afex_aov}). This method has arguments such as \code{correction} and \code{es} and can be used to obtain an ANOVA table with different correction than the one initially specified. The \code{\link{nice}} method also returns a \code{data.frame}, but rounds most values and transforms them into characters for nice printing. Also has arguments like \code{correction} and \code{es} which can be used to obtain an ANOVA table with different correction than the one initially specified. } } \section{Functions}{ \itemize{ \item \code{aov_4()}: Allows definition of ANOVA-model using \code{lme4::lmer}-like Syntax (but still fits a standard ANOVA). \item \code{aov_ez()}: Allows definition of ANOVA-model using character strings. }} \note{ Calculation of ANOVA models via \code{aov} (which is done per default) can be comparatively slow and produce comparatively large objects for ANOVAs with many within-subjects factors or levels. To avoid this calculation set \code{include_aov = FALSE}. You can also disable this globally with: \code{afex_options(include_aov = FALSE)} The id variable and variables entered as within-subjects (i.e., repeated-measures) factors are silently converted to factors. Levels of within-subject factors are converted to valid variable names using \code{\link{make.names}(...,unique=TRUE)}. Unused factor levels are silently dropped on all variables. Contrasts attached to a factor as an attribute are probably not preserved and not supported. The workhorse is \code{aov_car}. \code{aov_4} and \code{aov_ez} only construe and pass an appropriate formula to \code{aov_car}. Use \code{print.formula = TRUE} to view this formula. In contrast to \code{\link{aov}} \code{aov_car} assumes that all factors to the right of \code{/} in the \code{Error} term are belonging together. Consequently, \code{Error(id/(a*b))} and \code{Error(id/a*b)} are identical (which is not true for \code{\link{aov}}). } \examples{ ########################## ## 1: Specifying ANOVAs ## ########################## # Example using a purely within-subjects design # (Maxwell & Delaney, 2004, Chapter 12, Table 12.5, p. 578): data(md_12.1) aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), anova_table=list(correction = "none", es = "none")) # Default output aov_ez("id", "rt", md_12.1, within = c("angle", "noise")) # examples using obk.long (see ?obk.long), a long version of the OBrienKaiser # dataset (car package). Data is a split-plot or mixed design: contains both # within- and between-subjects factors. data(obk.long, package = "afex") # estimate mixed ANOVA on the full design: aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, observed = "gender") aov_4(value ~ treatment * gender + (phase*hour|id), data = obk.long, observed = "gender") aov_ez("id", "value", obk.long, between = c("treatment", "gender"), within = c("phase", "hour"), observed = "gender") # the three calls return the same ANOVA table: # Anova Table (Type 3 tests) # # Response: value # Effect df MSE F ges p.value # 1 treatment 2, 10 22.81 3.94 + .198 .055 # 2 gender 1, 10 22.81 3.66 + .115 .085 # 3 treatment:gender 2, 10 22.81 2.86 .179 .104 # 4 phase 1.60, 15.99 5.02 16.13 *** .151 <.001 # 5 treatment:phase 3.20, 15.99 5.02 4.85 * .097 .013 # 6 gender:phase 1.60, 15.99 5.02 0.28 .003 .709 # 7 treatment:gender:phase 3.20, 15.99 5.02 0.64 .014 .612 # 8 hour 1.84, 18.41 3.39 16.69 *** .125 <.001 # 9 treatment:hour 3.68, 18.41 3.39 0.09 .002 .979 # 10 gender:hour 1.84, 18.41 3.39 0.45 .004 .628 # 11 treatment:gender:hour 3.68, 18.41 3.39 0.62 .011 .641 # 12 phase:hour 3.60, 35.96 2.67 1.18 .015 .335 # 13 treatment:phase:hour 7.19, 35.96 2.67 0.35 .009 .930 # 14 gender:phase:hour 3.60, 35.96 2.67 0.93 .012 .449 # 15 treatment:gender:phase:hour 7.19, 35.96 2.67 0.74 .019 .646 # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1 # # Sphericity correction method: GG # "numeric" variables are per default converted to factors (as long as factorize # = TRUE): obk.long$hour2 <- as.numeric(as.character(obk.long$hour)) # gives same results as calls before aov_car(value ~ treatment * gender + Error(id/phase*hour2), data = obk.long, observed = c("gender")) # ANCOVA: adding a covariate (necessary to set factorize = FALSE) aov_car(value ~ treatment * gender + age + Error(id/(phase*hour)), data = obk.long, observed = c("gender", "age"), factorize = FALSE) aov_4(value ~ treatment * gender + age + (phase*hour|id), data = obk.long, observed = c("gender", "age"), factorize = FALSE) aov_ez("id", "value", obk.long, between = c("treatment", "gender"), within = c("phase", "hour"), covariate = "age", observed = c("gender", "age"), factorize = FALSE) # aggregating over one within-subjects factor (phase), with warning: aov_car(value ~ treatment * gender + Error(id/hour), data = obk.long, observed = "gender") aov_ez("id", "value", obk.long, c("treatment", "gender"), "hour", observed = "gender") # aggregating over both within-subjects factors (again with warning), # only between-subjects factors: aov_car(value ~ treatment * gender + Error(id), data = obk.long, observed = c("gender")) aov_4(value ~ treatment * gender + (1|id), data = obk.long, observed = c("gender")) aov_ez("id", "value", obk.long, between = c("treatment", "gender"), observed = "gender") # only within-subject factors (ignoring between-subjects factors) aov_car(value ~ Error(id/(phase*hour)), data = obk.long) aov_4(value ~ (phase*hour|id), data = obk.long) aov_ez("id", "value", obk.long, within = c("phase", "hour")) ### changing defaults of ANOVA table: # no df-correction & partial eta-squared: aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, anova_table = list(correction = "none", es = "pes")) # no df-correction and no MSE aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long,observed = "gender", anova_table = list(correction = "none", MSE = FALSE)) # add p-value adjustment for all effects (see Cramer et al., 2015, PB&R) aov_ez("id", "value", obk.long, between = "treatment", within = c("phase", "hour"), anova_table = list(p_adjust_method = "holm")) ########################### ## 2: Follow-up Analysis ## ########################### # use data as above data(obk.long, package = "afex") # 1. obtain afex_aov object: a1 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), within = c("phase", "hour"), observed = "gender") if (requireNamespace("ggplot2") & requireNamespace("emmeans")) { # 1b. plot data using afex_plot function, for more see: ## vignette("afex_plot_introduction", package = "afex") ## default plot uses multivariate model-based CIs afex_plot(a1, "hour", "gender", c("treatment", "phase")) a1b <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), within = c("phase", "hour"), observed = "gender", include_aov = TRUE) ## you can use a univariate model and CIs if you refit the model with the aov ## slot afex_plot(a1b, "hour", "gender", c("treatment", "phase"), emmeans_arg = list(model = "univariate")) ## in a mixed between-within designs, no error-bars might be preferrable: afex_plot(a1, "hour", "gender", c("treatment", "phase"), error = "none") } if (requireNamespace("emmeans")) { library("emmeans") # package emmeans needs to be attached for follow-up tests. # 2. obtain reference grid object (default uses multivariate model): r1 <- emmeans(a1, ~treatment +phase) r1 # 3. create list of contrasts on the reference grid: c1 <- list( A_B_pre = c(rep(0, 6), 0, -1, 1), # A versus B for pretest A_B_comb = c(-0.5, 0.5, 0, -0.5, 0.5, 0, 0, 0, 0), # A vs. B for post and follow-up combined effect_post = c(0, 0, 0, -1, 0.5, 0.5, 0, 0, 0), # control versus A&B post effect_fup = c(-1, 0.5, 0.5, 0, 0, 0, 0, 0, 0), # control versus A&B follow-up effect_comb = c(-0.5, 0.25, 0.25, -0.5, 0.25, 0.25, 0, 0, 0) # control versus A&B combined ) # 4. test contrasts on reference grid: contrast(r1, c1) # same as before, but using Bonferroni-Holm correction for multiple testing: contrast(r1, c1, adjust = "holm") # 2. (alternative): all pairwise comparisons of treatment: emmeans(a1, "treatment", contr = "pairwise") } ####################### ## 3: Other examples ## ####################### data(obk.long, package = "afex") # replicating ?Anova using aov_car: obk_anova <- aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long, type = 2) # in contrast to aov you do not need the within-subject factors outside Error() str(obk_anova, 1, give.attr = FALSE) # List of 5 # $ anova_table:Classes ‘anova’ and 'data.frame': 15 obs. of 6 variables: # $ aov : NULL # $ Anova :List of 14 # $ lm :List of 13 # $ data :List of 3 obk_anova$Anova # Type II Repeated Measures MANOVA Tests: Pillai test statistic # Df test stat approx F num Df den Df Pr(>F) # (Intercept) 1 0.96954 318.34 1 10 6.532e-09 *** # treatment 2 0.48092 4.63 2 10 0.0376868 * # gender 1 0.20356 2.56 1 10 0.1409735 # treatment:gender 2 0.36350 2.86 2 10 0.1044692 # phase 1 0.85052 25.61 2 9 0.0001930 *** # treatment:phase 2 0.68518 2.61 4 20 0.0667354 . # gender:phase 1 0.04314 0.20 2 9 0.8199968 # treatment:gender:phase 2 0.31060 0.92 4 20 0.4721498 # hour 1 0.93468 25.04 4 7 0.0003043 *** # treatment:hour 2 0.30144 0.35 8 16 0.9295212 # gender:hour 1 0.29274 0.72 4 7 0.6023742 # treatment:gender:hour 2 0.57022 0.80 8 16 0.6131884 # phase:hour 1 0.54958 0.46 8 3 0.8324517 # treatment:phase:hour 2 0.66367 0.25 16 8 0.9914415 # gender:phase:hour 1 0.69505 0.85 8 3 0.6202076 # treatment:gender:phase:hour 2 0.79277 0.33 16 8 0.9723693 # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 } \references{ Cramer, A. O. J., van Ravenzwaaij, D., Matzke, D., Steingroever, H., Wetzels, R., Grasman, R. P. P. P., ... Wagenmakers, E.-J. (2015). Hidden multiplicity in exploratory multiway ANOVA: Prevalence and remedies. \emph{Psychonomic Bulletin & Review}, 1-8. \doi{10.3758/s13423-015-0913-5} Maxwell, S. E., & Delaney, H. D. (2004). \emph{Designing Experiments and Analyzing Data: A Model-Comparisons Perspective}. Mahwah, N.J.: Lawrence Erlbaum Associates. Venables, W.N. (2000). \emph{Exegeses on linear models}. Paper presented to the S-Plus User's Conference, Washington DC, 8-9 October 1998, Washington, DC. Available from: \url{http://www.stats.ox.ac.uk/pub/MASS3/Exegeses.pdf} } \seealso{ Various methods for objects of class \code{afex_aov} are available: \code{\link{afex_aov-methods}} \code{\link{nice}} creates the nice ANOVA tables which is by default printed. See also there for a slightly longer discussion of the available effect sizes. \code{\link{mixed}} provides a (formula) interface for obtaining p-values for mixed-models via \pkg{lme4}. The functions presented here do not estimate mixed models. } \author{ Henrik Singmann The design of these functions was influenced by \code{\link[ez]{ezANOVA}} from package \pkg{ez}. } afex/man/mixed.Rd0000644000176200001440000010534614665064345013373 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/mixed.R \encoding{UTF-8} \name{mixed} \alias{mixed} \alias{lmer_alt} \title{p-values for fixed effects of mixed-model via lme4::lmer()} \usage{ mixed( formula, data, type = afex_options("type"), method = afex_options("method_mixed"), per_parameter = NULL, args_test = list(), test_intercept = FALSE, check_contrasts = afex_options("check_contrasts"), expand_re = FALSE, all_fit = FALSE, set_data_arg = afex_options("set_data_arg"), progress = interactive(), cl = NULL, return = "mixed", sig_symbols = afex_options("sig_symbols"), ... ) lmer_alt(formula, data, check_contrasts = FALSE, ...) } \arguments{ \item{formula}{a formula describing the full mixed-model to be fitted. As this formula is passed to \code{lmer}, it needs at least one random term.} \item{data}{\code{data.frame} containing the data. Should have all the variables present in \code{fixed}, \code{random}, and \code{dv} as columns.} \item{type}{type of test on which effects are based. Default is to use type 3 tests, taken from \code{\link{afex_options}}.} \item{method}{character vector indicating which methods for obtaining p-values should be used: \code{"S"} corresponds to the Satterthwaite approximation for degrees of freedom (via \code{\link[lmerTest]{lmerTest}}, only LMMs), \code{"KR"} corresponds to the Kenward-Roger approximation for degrees of freedom (only LMMs), \code{"PB"} calculates p-values based on parametric bootstrap, \code{"LRT"} calculates p-values via the likelihood ratio tests implemented in the \code{anova} method for \code{merMod} objects (only recommended for models with many [i.e., > 50] levels for the random factors). The default (currently \code{"S"}) is taken from \code{\link{afex_options}}. For historical compatibility \code{"nested-KR"} is also supported which was the default KR-method in previous versions.} \item{per_parameter}{\code{character} vector specifying for which variable tests should be run for each parameter (instead for the overall effect). Can be useful e.g., for testing ordered factors. Uses \code{\link{grep}} for selecting parameters among the fixed effects so regular expressions (\code{\link{regex}}) are possible. See Examples.} \item{args_test}{\code{list} of arguments passed to the function calculating the p-values. See Details.} \item{test_intercept}{logical. Whether or not the intercept should also be fitted and tested for significance. Default is \code{FALSE}. Only relevant if \code{type = 3}.} \item{check_contrasts}{\code{logical}. Should contrasts be checked and (if necessary) changed to \code{"contr.sum"}? See Details. The default (\code{"TRUE"}) is taken from \code{\link{afex_options}}.} \item{expand_re}{logical. Should random effects terms be expanded (i.e., factors transformed into numerical variables) before fitting with \code{(g)lmer}? Allows to use "||" notation with factors.} \item{all_fit}{logical. Should \code{\link[lme4]{allFit}} be used to fit each model with each available optimization algorithm and the results that provided the best fit in each case be used? Warning: This can dramatically increase the optimization time. Adds two new attributes to the returned object designating which algorithm was selected and the log-likelihoods for each algorithm. Note that only warnings from the initial fit are emitted during fitting. The warnings of the chosen models are emitted when printing the returned object.} \item{set_data_arg}{\code{logical}. Should the data argument in the slot \code{call} of the \code{merMod} object returned from \code{lmer} be set to the passed data argument? If \code{FALSE} (currently the default) the name will be \code{data}. \code{TRUE} may be helpful when fitted objects are used afterwards (e.g., compared using \code{anova} or when using the \code{effects} package, see examples). \pkg{emmeans} functions appear to work better with \code{FALSE}. Default is given by afex_options("set_data_arg").} \item{progress}{if \code{TRUE}, shows progress with a text progress bar and other status messages during estimation. The default is to set \code{TRUE} for interactive usage and \code{FALSE} for non-interactive usage.} \item{cl}{A vector identifying a cluster; used for distributing the estimation of the different models using several cores (if seveal models are calculated). See examples. If \code{ckeck_contrasts = TRUE}, mixed sets the current contrasts (\code{getOption("contrasts")}) at the nodes. Note this does \emph{not} distribute calculation of p-values (e.g., when using \code{method = "PB"}) across the cluster. Use \code{args_test} for this.} \item{return}{the default is to return an object of class \code{"mixed"}. \code{return = "merMod"} will skip the calculation of all submodels and p-values and simply return the full model estimated with \code{lmer} (note that somewhat unintuiviely, the returned object can either be of class \code{"lmerModLmerTest"} or of class \code{"merMod"}, depending on the value of \code{\link{afex_options}}\code{("lmer_function")}). Can be useful in combination with \code{expand_re = TRUE} which allows to use "||" with factors. \code{return = "data"} will not fit any models but just return the data that would have been used for estimating the model (note that the data is also part of the returned object).} \item{sig_symbols}{Character. What should be the symbols designating significance? When entering an vector with \code{length(sig.symbol) < 4} only those elements of the default (\code{c(" +", " *", " **", " ***")}) will be replaced. \code{sig_symbols = ""} will display the stars but not the \code{+}, \code{sig_symbols = rep("", 4)} will display no symbols. The default is given by \code{afex_options("sig_symbols")}.} \item{...}{further arguments (such as \code{weights}, \code{family}, or \code{control}) passed to \code{\link[lme4]{lmer}}/\code{\link[lme4]{glmer}}. Note that additional data (e.g., \code{weights}) need to be passed fully and not only by name (e.g., \code{weights = df$weights} and not \code{weights = weights}).} } \value{ An object of class \code{"mixed"} (i.e., a list) with the following elements: \enumerate{ \item \code{anova_table} a data.frame containing the statistics returned from \code{\link[pbkrtest]{KRmodcomp}}. The \code{stat} column in this data.frame gives the value of the test statistic, an F-value for \code{method = "KR"} and a chi-square value for the other two methods. \item \code{full_model} the \code{"lmerModLmerTest"} or \code{"merMod"} object returned from estimating the full model. Use \code{\link{afex_options}}\code{("lmer_function")} for setting which function for estimation should be used. The possible options are \code{"lmerTest"} (the default returning an object of class \code{"lmerModLmerTest"}) and \code{"lme4"} returning an object of class (\code{"merMod"}). Note that in case a \code{family} argument is present an object of class \code{"glmerMod"} is always returned. \item \code{restricted_models} a list of \code{"g/lmerMod"} (or \code{"lmerModLmerTest"}) objects from estimating the restricted models (i.e., each model lacks the corresponding effect) \item \code{tests} a list of objects returned by the function for obtaining the p-values. \item \code{data} The data used for estimation (i.e., after excluding missing rows and applying expand_re if requested). \item \code{call} The matched call. } It also has the following attributes, \code{"type"} and \code{"method"}. And the attributes \code{"all_fit_selected"} and \code{"all_fit_logLik"} if \code{all_fit=TRUE}. Two similar methods exist for objects of class \code{"mixed"}: \code{print} and \code{anova}. They print a nice version of the \code{anova_table} element of the returned object (which is also invisibly returned). This methods omit some columns and nicely round the other columns. The following columns are always printed: \enumerate{ \item \code{Effect} name of effect \item \code{p.value} estimated p-value for the effect } For LMMs with \code{method="KR"} or \code{method="S"} the following further columns are returned (note: the Kenward-Roger correction does two separate things: (1) it computes an effective number for the denominator df; (2) it scales the statistic by a calculated amount, see also \url{https://stackoverflow.com/a/25612960/289572}): \enumerate{ \item \code{F} computed F statistic \item \code{ndf} numerator degrees of freedom (number of parameters used for the effect) \item \code{ddf} denominator degrees of freedom (effective residual degrees of freedom for testing the effect), computed from the Kenward-Roger correction using \code{pbkrtest::KRmodcomp} \item \code{F.scaling} scaling of F-statistic computing from Kenward-Roger approximation (only printed if \code{method="nested-KR"}) } For models with \code{method="LRT"} the following further columns are returned: \enumerate{ \item \code{df.large} degrees of freedom (i.e., estimated paramaters) for full model (i.e., model containing the corresponding effect) \item \code{df.small} degrees of freedom (i.e., estimated paramaters) for restricted model (i.e., model without the corresponding effect) \item \code{chisq} 2 times the difference in likelihood (obtained with \code{logLik}) between full and restricted model \item \code{df} difference in degrees of freedom between full and restricted model (p-value is based on these df). } For models with \code{method="PB"} the following further column is returned: \enumerate{ \item \code{stat} 2 times the difference in likelihood (obtained with \code{logLik}) between full and restricted model (i.e., a chi-square value). } Note that \code{anova} can also be called with additional mixed and/or \code{merMod} objects. In this casethe full models are passed on to \code{anova.merMod} (with \code{refit=FALSE}, which differs from the default of \code{anova.merMod}) which produces the known LRT tables. The \code{summary} method for objects of class \code{mixed} simply calls \code{\link[lme4]{summary.merMod}} on the full model. If \code{return = "merMod"} (or when invoking \code{lmer_alt}), an object of class \code{"lmerModLmerTest"} or of class \code{"merMod"} (depending on the value of \code{\link{afex_options}}\code{("lmer_function")}), as returned from \code{g/lmer}, is returned. The default behavior is to return an object of class \code{"lmerModLmerTest"} estimated via \code{\link[lmerTest]{lmer}}. } \description{ Estimates mixed models with \pkg{lme4} and calculates p-values for all fixed effects. The default method \code{"KR"} (= Kenward-Roger) as well as \code{method="S"} (Satterthwaite) support LMMs and estimate the model with \code{\link[lmerTest]{lmer}} and then pass it to the \code{\link[lmerTest]{lmerTest}} \code{anova} method (or \code{\link[car]{Anova}}). The other methods (\code{"LRT"} = likelihood-ratio tests and \code{"PB"} = parametric bootstrap) support both LMMs (estimated via \code{\link[lme4]{lmer}}) and GLMMs (i.e., with \code{family} argument which invokes estimation via \code{\link[lme4]{glmer}}) and estimate a full model and restricted models in which the parameters corresponding to one effect (i.e., model term) are withhold (i.e., fixed to 0). Per default tests are based on Type 3 sums of squares. \code{print}, \code{nice}, \code{anova}, and \code{summary} methods for the returned object of class \code{"mixed"} are available. \code{summary} invokes the default \pkg{lme4} summary method and shows parameters instead of effects. \code{lmer_alt} is simply a wrapper for mixed that only returns the \code{"lmerModLmerTest"} or \code{"merMod"} object and correctly uses the \code{||} notation for removing correlations among factors. This function otherwise behaves like \code{g/lmer} (as for \code{mixed}, it calls \code{glmer} as soon as a \code{family} argument is present). Use \code{\link{afex_options}}\code{("lmer_function")} to set which function for estimation should be used. This option determines the class of the returned object (i.e., \code{"lmerModLmerTest"} or \code{"merMod"}). } \details{ For an introduction to mixed-modeling for experimental designs see our chapter (\href{http://singmann.org/download/publications/singmann_kellen-introduction-mixed-models.pdf}{Singmann & Kellen, in press}) or Barr, Levy, Scheepers, & Tily (2013). Arguments for using the Kenward-Roger approximation for obtaining p-values are given by Judd, Westfall, and Kenny (2012). Further introductions to mixed-modeling for experimental designs are given by Baayen and colleagues (Baayen, 2008; Baayen, Davidson & Bates, 2008; Baayen & Milin, 2010). Specific recommendations on which random effects structure to specify for confirmatory tests can be found in Barr and colleagues (2013) and Barr (2013), but also see Bates et al. (2015). \subsection{p-value Calculations}{ When \code{method = "KR"} (implemented via \code{\link[pbkrtest]{KRmodcomp}}), the Kenward-Roger approximation for degrees-of-freedom is calculated using \code{\link[lmerTest]{lmerTest}} (if \code{test_intercept=FALSE}) or \code{\link[car]{Anova}} (if \code{test_intercept=TRUE}), which is only applicable to linear-mixed models (LMMs). The test statistic in the output is an F-value (\code{F}). A similar method that requires less RAM is \code{method = "S"} which calculates the Satterthwaite approximation for degrees-of-freedom via \code{\link[lmerTest]{lmerTest}} and is also only applicable to LMMs. \code{method = "KR"} or \code{method = "S"} provide the best control for Type 1 errors for LMMs (Luke, 2017). \code{method = "PB"} calculates p-values using parametric bootstrap using \code{\link[pbkrtest]{PBmodcomp}}. This can be used for linear and also generalized linear mixed models (GLMMs) by specifying a \code{\link[stats]{family}} argument to \code{mixed}. Note that you should specify further arguments to \code{PBmodcomp} via \code{args_test}, especially \code{nsim} (the number of simulations to form the reference distribution) or \code{cl} (for using multiple cores). For other arguments see \code{\link[pbkrtest]{PBmodcomp}}. Note that \code{REML} (argument to \code{[g]lmer}) will be set to \code{FALSE} if method is \code{PB}. \code{method = "LRT"} calculates p-values via likelihood ratio tests implemented in the \code{anova} method for \code{"merMod"} objects. This is the method recommended by Barr et al. (2013; which did not test the other methods implemented here). Using likelihood ratio tests is only recommended for models with many levels for the random effects (> 50), but can be pretty helpful in case the other methods fail (due to memory and/or time limitations). The \href{http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html}{lme4 faq} also recommends the other methods over likelihood ratio tests. } \subsection{Implementation Details}{ For methods \code{"KR"} and \code{"S"} type 3 and 2 tests are implemented as in \code{\link[car]{Anova}}. For all other methods, type 3 tests are obtained by comparing a model in which only the tested effect is excluded with the full model (containing all effects). For method \code{"nested-KR"} (which was the default in previous versions) this corresponds to the (type 3) Wald tests given by \code{car::Anova} for \code{"lmerMod"} models. The submodels in which the tested effect is excluded are obtained by manually creating a model matrix which is then fitted in \code{"lme4"}. Type 2 tests are truly sequential. They are obtained by comparing a model in which the tested effect and all higher oder effect (e.g., all three-way interactions for testing a two-way interaction) are excluded with a model in which only effects up to the order of the tested effect are present and all higher order effects absent. In other words, there are multiple full models, one for each order of effects. Consequently, the results for lower order effects are identical of whether or not higher order effects are part of the model or not. This latter feature is not consistent with classical ANOVA type 2 tests but a consequence of the sequential tests (and \href{https://stat.ethz.ch/pipermail/r-sig-mixed-models/2012q3/018992.html}{I didn't find a better way} of implementing the Type 2 tests). This \strong{does not} correspond to the (type 2) Wald test reported by \code{car::Anova}. If \code{check_contrasts = TRUE}, contrasts will be set to \code{"contr.sum"} for all factors in the formula if default contrasts are not equal to \code{"contr.sum"} or \code{attrib(factor, "contrasts") != "contr.sum"}. Furthermore, the current contrasts (obtained via \code{getOption("contrasts")}) will be set at the cluster nodes if \code{cl} is not \code{NULL}. } \subsection{Expand Random Effects}{ \code{expand_re = TRUE} allows to expand the random effects structure before passing it to \code{lmer}. This allows to disable estimation of correlation among random effects for random effects term containing factors using the \code{||} notation which may aid in achieving model convergence (see Bates et al., 2015). This is achieved by first creating a model matrix for each random effects term individually, rename and append the so created columns to the data that will be fitted, replace the actual random effects term with the so created variables (concatenated with +), and then fit the model. The variables are renamed by prepending all variables with rei (where i is the number of the random effects term) and replacing ":" with "_by_". \code{lmer_alt} is simply a wrapper for \code{mixed} that is intended to behave like \code{lmer} (or \code{glmer} if a \code{family} argument is present), but also allows the use of \code{||} with factors (by always using \code{expand_re = TRUE}). This means that \code{lmer_alt} per default does not enforce a specific contrast on factors and only returns the \code{"lmerModLmerTest"} or \code{"merMod"} object without calculating any additional models or p-values (this is achieved by setting \code{return = "merMod"}). Note that it most likely differs from \code{g/lmer} in how it handles missing values so it is recommended to only pass data without missing values to it! One consequence of using \code{expand_re = TRUE} is that the data that is fitted will not be the same as the passed data.frame which can lead to problems with e.g., the \code{predict} method. However, the actual data used for fitting is also returned as part of the \code{mixed} object so can be used from there. Note that the \code{set_data_arg} can be used to change whether the \code{data} argument in the call to \code{g/lmer} is set to \code{data} (the default) or the name of the data argument passed by the user. } } \note{ When \code{method = "KR"}, obtaining p-values is known to crash due too insufficient memory or other computational limitations (especially with complex random effects structures). In these cases, the other methods should be used. The RAM demand is a problem especially on 32 bit Windows which only supports up to 2 or 3GB RAM (see \href{https://CRAN.R-project.org/bin/windows/base/rw-FAQ.html}{R Windows FAQ}). Then it is probably a good idea to use methods "S", "LRT", or "PB". \code{"mixed"} will throw a message if numerical variables are not centered on 0, as main effects (of other variables then the numeric one) can be hard to interpret if numerical variables appear in interactions. See Dalal & Zickar (2012). Per default \code{mixed} uses \code{\link[lmerTest]{lmer}}, this can be changed to \code{\link[lme4]{lmer}} by calling: \code{afex_options(lmer_function = "lme4")} Formulas longer than 500 characters will most likely fail due to the use of \code{\link{deparse}}. Please report bugs or unexpected behavior by opening a guthub issue: \url{https://github.com/singmann/afex/issues} } \examples{ ################################## ## Simple Examples (from MEMSS) ## ################################## if (requireNamespace("MEMSS")) { data("Machines", package = "MEMSS") # simple model with random-slopes for repeated-measures factor m1 <- mixed(score ~ Machine + (Machine|Worker), data=Machines) m1 # suppress correlations among random effect parameters with || and expand_re = TRUE m2 <- mixed(score ~ Machine + (Machine||Worker), data=Machines, expand_re = TRUE) m2 ## compare: summary(m1)$varcor summary(m2)$varcor # for wrong solution see: # summary(lmer(score ~ Machine + (Machine||Worker), data=Machines))$varcor if (requireNamespace("emmeans")) { # follow-up tests library("emmeans") # package emmeans needs to be attached for follow-up tests. (emm1 <- emmeans(m1, "Machine")) pairs(emm1, adjust = "holm") # all pairwise comparisons con1 <- list( c1 = c(1, -0.5, -0.5), # 1 versus other 2 c2 = c(0.5, -1, 0.5) # 1 and 3 versus 2 ) contrast(emm1, con1, adjust = "holm") if (requireNamespace("ggplot2")) { # plotting afex_plot(m1, "Machine") ## default uses model-based CIs ## within-subjects CIs somewhat more in line with pairwirse comparisons: afex_plot(m1, "Machine", error = "within") ## less differences between CIs for model without correlations: afex_plot(m2, "Machine") afex_plot(m2, "Machine", error = "within") }}} \dontrun{ ####################### ### Further Options ### ####################### ## Multicore: require(parallel) (nc <- detectCores()) # number of cores cl <- makeCluster(rep("localhost", nc)) # make cluster # to keep track of what the function is doindg redirect output to outfile: # cl <- makeCluster(rep("localhost", nc), outfile = "cl.log.txt") data("Machines", package = "MEMSS") ## There are two ways to use multicore: # 1. Obtain fits with multicore (e.g. for likelihood ratio tests, LRT): mixed(score ~ Machine + (Machine|Worker), data=Machines, cl = cl, method = "LRT") # 2. Obtain PB samples via multicore: mixed(score ~ Machine + (Machine|Worker), data=Machines, method = "PB", args_test = list(nsim = 50, cl = cl)) # better use 500 or 1000 ## Both ways can be combined: # 2. Obtain PB samples via multicore: mixed(score ~ Machine + (Machine|Worker), data=Machines, cl = cl, method = "PB", args_test = list(nsim = 50, cl = cl)) #### use all_fit = TRUE and expand_re = TRUE: data("sk2011.2") # data described in more detail below sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) require(optimx) # uses two more algorithms sk2_aff_b <- mixed(response ~ instruction*type+(inference*type||id), sk2_aff, expand_re = TRUE, all_fit = TRUE, method = "LRT") attr(sk2_aff_b, "all_fit_selected") attr(sk2_aff_b, "all_fit_logLik") # considerably faster with multicore: clusterEvalQ(cl, library(optimx)) # need to load optimx in cluster sk2_aff_b2 <- mixed(response ~ instruction*type+(inference*type||id), sk2_aff, expand_re = TRUE, all_fit = TRUE, cl=cl, method = "LRT") attr(sk2_aff_b2, "all_fit_selected") attr(sk2_aff_b2, "all_fit_logLik") stopCluster(cl) } ################################################### ## Replicating Maxwell & Delaney (2004) Examples ## ################################################### \dontrun{ ### replicate results from Table 15.4 (Maxwell & Delaney, 2004, p. 789) data(md_15.1) # random intercept plus random slope (t15.4a <- mixed(iq ~ timecat + (1+time|id),data=md_15.1)) # to also replicate exact parameters use treatment.contrasts and the last level as base level: contrasts(md_15.1$timecat) <- contr.treatment(4, base = 4) (t15.4b <- mixed(iq ~ timecat + (1+time|id),data=md_15.1, check_contrasts=FALSE)) summary(t15.4a) # gives "wrong" parameters extimates summary(t15.4b) # identical parameters estimates # for more examples from chapter 15 see ?md_15.1 ### replicate results from Table 16.3 (Maxwell & Delaney, 2004, p. 837) data(md_16.1) # original results need treatment contrasts: (mixed1_orig <- mixed(severity ~ sex + (1|id), md_16.1, check_contrasts=FALSE)) summary(mixed1_orig$full_model) # p-value stays the same with afex default contrasts (contr.sum), # but estimates and t-values for the fixed effects parameters change. (mixed1 <- mixed(severity ~ sex + (1|id), md_16.1)) summary(mixed1$full_model) # data for next examples (Maxwell & Delaney, Table 16.4) data(md_16.4) str(md_16.4) ### replicate results from Table 16.6 (Maxwell & Delaney, 2004, p. 845) # Note that (1|room:cond) is needed because room is nested within cond. # p-value (almost) holds. (mixed2 <- mixed(induct ~ cond + (1|room:cond), md_16.4)) # (differences are dut to the use of Kenward-Roger approximation here, # whereas M&W's p-values are based on uncorrected df.) # again, to obtain identical parameter and t-values, use treatment contrasts: summary(mixed2) # not identical # prepare new data.frame with contrasts: md_16.4b <- within(md_16.4, cond <- C(cond, contr.treatment, base = 2)) str(md_16.4b) # p-value stays identical: (mixed2_orig <- mixed(induct ~ cond + (1|room:cond), md_16.4b, check_contrasts=FALSE)) summary(mixed2_orig$full_model) # replicates parameters ### replicate results from Table 16.7 (Maxwell & Delaney, 2004, p. 851) # F-values (almost) hold, p-values (especially for skill) are off (mixed3 <- mixed(induct ~ cond + skill + (1|room:cond), md_16.4)) # however, parameters are perfectly recovered when using the original contrasts: mixed3_orig <- mixed(induct ~ cond + skill + (1|room:cond), md_16.4b, check_contrasts=FALSE) summary(mixed3_orig) ### replicate results from Table 16.10 (Maxwell & Delaney, 2004, p. 862) # for this we need to center cog: md_16.4b$cog <- scale(md_16.4b$cog, scale=FALSE) # F-values and p-values are relatively off: (mixed4 <- mixed(induct ~ cond*cog + (cog|room:cond), md_16.4b)) # contrast has a relatively important influence on cog (mixed4_orig <- mixed(induct ~ cond*cog + (cog|room:cond), md_16.4b, check_contrasts=FALSE)) # parameters are again almost perfectly recovered: summary(mixed4_orig) } ########################### ## Full Analysis Example ## ########################### \dontrun{ ### split-plot experiment (Singmann & Klauer, 2011, Exp. 2) ## between-factor: instruction ## within-factor: inference & type ## hypothesis: three-way interaction data("sk2011.2") # use only affirmation problems (S&K also splitted the data like this) sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) # set up model with maximal by-participant random slopes sk_m1 <- mixed(response ~ instruction*inference*type+(inference*type|id), sk2_aff) sk_m1 # prints ANOVA table with nicely rounded numbers (i.e., as characters) nice(sk_m1) # returns the same but without printing potential warnings anova(sk_m1) # returns and prints numeric ANOVA table (i.e., not-rounded) summary(sk_m1) # lmer summary of full model # same model but using Kenward-Roger approximation of df # very similar results but slower sk_m1b <- mixed(response ~ instruction*inference*type+(inference*type|id), sk2_aff, method="KR") nice(sk_m1b) # identical results as: anova(sk_m1$full_model) # suppressing correlation among random slopes: very similar results, but # significantly faster and often less convergence warnings. sk_m2 <- mixed(response ~ instruction*inference*type+(inference*type||id), sk2_aff, expand_re = TRUE) sk_m2 ## mixed objects can be passed to emmeans library("emmeans") # however, package emmeans needs to be attached first # emmeans also approximate df which takes time with default Kenward-Roger emm_options(lmer.df = "Kenward-Roger") # default setting, slow emm_options(lmer.df = "Satterthwaite") # faster setting, preferrable emm_options(lmer.df = "asymptotic") # the fastest, df = infinity # recreates basically Figure 4 (S&K, 2011, upper panel) # only the 4th and 6th x-axis position are flipped afex_plot(sk_m1, x = c("type", "inference"), trace = "instruction") # set up reference grid for custom contrasts: (rg1 <- emmeans(sk_m1, c("instruction", "type", "inference"))) # set up contrasts on reference grid: contr_sk2 <- list( ded_validity_effect = c(rep(0, 4), 1, rep(0, 5), -1, 0), ind_validity_effect = c(rep(0, 5), 1, rep(0, 5), -1), counter_MP = c(rep(0, 4), 1, -1, rep(0, 6)), counter_AC = c(rep(0, 10), 1, -1) ) # test the main double dissociation (see S&K, p. 268) contrast(rg1, contr_sk2, adjust = "holm") # all effects are significant. } #################### ## Other Examples ## #################### \dontrun{ # use the obk.long data (not reasonable, no random slopes) data(obk.long) mixed(value ~ treatment * phase + (1|id), obk.long) # Examples for using the per.parameter argument # note, require method = "nested-KR", "LRT", or "PB" # also we use custom contrasts data(obk.long, package = "afex") obk.long$hour <- ordered(obk.long$hour) contrasts(obk.long$phase) <- "contr.sum" contrasts(obk.long$treatment) <- "contr.sum" # tests only the main effect parameters of hour individually per parameter. mixed(value ~ treatment*phase*hour +(1|id), per_parameter = "^hour$", data = obk.long, method = "nested-KR", check_contrasts = FALSE) # tests all parameters including hour individually mixed(value ~ treatment*phase*hour +(1|id), per_parameter = "hour", data = obk.long, method = "nested-KR", check_contrasts = FALSE) # tests all parameters individually mixed(value ~ treatment*phase*hour +(1|id), per_parameter = ".", data = obk.long, method = "nested-KR", check_contrasts = FALSE) # example data from package languageR: Lexical decision latencies elicited from # 21 subjects for 79 English concrete nouns, with variables linked to subject or # word. data(lexdec, package = "languageR") # using the simplest model m1 <- mixed(RT ~ Correct + Trial + PrevType * meanWeight + Frequency + NativeLanguage * Length + (1|Subject) + (1|Word), data = lexdec) m1 # Mixed Model Anova Table (Type 3 tests, S-method) # # Model: RT ~ Correct + Trial + PrevType * meanWeight + Frequency + NativeLanguage * # Model: Length + (1 | Subject) + (1 | Word) # Data: lexdec # Effect df F p.value # 1 Correct 1, 1627.67 8.16 ** .004 # 2 Trial 1, 1591.92 7.58 ** .006 # 3 PrevType 1, 1605.05 0.17 .680 # 4 meanWeight 1, 74.37 14.85 *** <.001 # 5 Frequency 1, 75.06 56.54 *** <.001 # 6 NativeLanguage 1, 27.12 0.70 .412 # 7 Length 1, 74.80 8.70 ** .004 # 8 PrevType:meanWeight 1, 1600.79 6.19 * .013 # 9 NativeLanguage:Length 1, 1554.49 14.24 *** <.001 # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1 # Fitting a GLMM using parametric bootstrap: require("mlmRev") # for the data, see ?Contraception gm1 <- mixed(use ~ age + I(age^2) + urban + livch + (1 | district), method = "PB", family = binomial, data = Contraception, args_test = list(nsim = 10)) ## note that nsim = 10 is way too low for all real examples! } \dontrun{ ##################################### ## Interplay with effects packages ## ##################################### data("Machines", package = "MEMSS") # simple model with random-slopes for repeated-measures factor m1 <- mixed(score ~ Machine + (Machine|Worker), data=Machines, set_data_arg = TRUE) ## necessary for it to work! library("effects") Effect("Machine", m1$full_model) # not correct: # Machine effect # Machine # A B C # 59.65000 52.35556 60.32222 # compare: emmeans::emmeans(m1, "Machine") # Machine emmean SE df asymp.LCL asymp.UCL # A 52.35556 1.680711 Inf 49.06142 55.64969 # B 60.32222 3.528546 Inf 53.40640 67.23804 # C 66.27222 1.806273 Inf 62.73199 69.81245 ## necessary to set contr.sum globally: set_sum_contrasts() Effect("Machine", m1$full_model) # Machine effect # Machine # A B C # 52.35556 60.32222 66.27222 plot(Effect("Machine", m1$full_model)) } } \references{ Baayen, R. H. (2008). \emph{Analyzing linguistic data: a practical introduction to statistics using R}. Cambridge, UK; New York: Cambridge University Press. Baayen, R. H., Davidson, D. J., & Bates, D. M. (2008). Mixed-effects modeling with crossed random effects for subjects and items. \emph{Journal of Memory and Language}, 59(4), 390-412. \doi{10.1016/j.jml.2007.12.005} Baayen, R. H., & Milin, P. (2010). Analyzing Reaction Times. \emph{International Journal of Psychological Research}, 3(2), 12-28. Barr, D. J. (2013). Random effects structure for testing interactions in linear mixed-effects models. \emph{Frontiers in Quantitative Psychology and Measurement}, 328. \doi{10.3389/fpsyg.2013.00328} Barr, D. J., Levy, R., Scheepers, C., & Tily, H. J. (2013). Random effects structure for confirmatory hypothesis testing: Keep it maximal. \emph{Journal of Memory and Language}, 68(3), 255-278. \doi{10.1016/j.jml.2012.11.001} Bates, D., Kliegl, R., Vasishth, S., & Baayen, H. (2015). \emph{Parsimonious Mixed Models}. arXiv:1506.04967 [stat]. Retrieved from \url{https://arxiv.org/abs/1506.04967} Dalal, D. K., & Zickar, M. J. (2012). Some Common Myths About Centering Predictor Variables in Moderated Multiple Regression and Polynomial Regression. \emph{Organizational Research Methods}, 15(3), 339-362. \doi{10.1177/1094428111430540} Judd, C. M., Westfall, J., & Kenny, D. A. (2012). Treating stimuli as a random factor in social psychology: A new and comprehensive solution to a pervasive but largely ignored problem. \emph{Journal of Personality and Social Psychology}, 103(1), 54-69. \doi{10.1037/a0028347} Luke, S. (2017). Evaluating significance in linear mixed-effects models in R. \emph{Behavior Research Methods}. \doi{10.3758/s13428-016-0809-y} Maxwell, S. E., & Delaney, H. D. (2004). \emph{Designing experiments and analyzing data: a model-comparisons perspective.} Mahwah, N.J.: Lawrence Erlbaum Associates. } \seealso{ \code{\link{aov_ez}} and \code{\link{aov_car}} for convenience functions to analyze experimental desIgns with classical ANOVA or ANCOVA wrapping \code{\link[car]{Anova}}. see the following for the data sets from Maxwell and Delaney (2004) used and more examples: \code{\link{md_15.1}}, \code{\link{md_16.1}}, and \code{\link{md_16.4}}. } \author{ Henrik Singmann with contributions from \href{https://stackoverflow.com/q/11335923/289572}{Ben Bolker and Joshua Wiley}. } afex/man/afex-package.Rd0000644000176200001440000000217114413224634014557 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/afex-package.R \docType{package} \name{afex-package} \alias{afex} \alias{afex-package} \title{\packageTitle{afex}} \description{ \packageDescription{afex} } \details{ The DESCRIPTION file: \packageDESCRIPTION{afex} } \seealso{ Useful links: \itemize{ \item \url{https://afex.singmann.science/} \item \url{https://github.com/singmann/afex} \item Report bugs at \url{https://github.com/singmann/afex/issues} } } \author{ \strong{Maintainer}: Henrik Singmann \email{singmann@gmail.com} (\href{https://orcid.org/0000-0002-4842-3657}{ORCID}) Authors: \itemize{ \item Ben Bolker \item Jake Westfall \item Frederik Aust (\href{https://orcid.org/0000-0003-4900-788X}{ORCID}) \item Mattan S. Ben-Shachar } Other contributors: \itemize{ \item Søren Højsgaard [contributor] \item John Fox [contributor] \item Michael A. Lawrence [contributor] \item Ulf Mertens [contributor] \item Jonathon Love [contributor] \item Russell Lenth [contributor] \item Rune Haubo Bojesen Christensen [contributor] } } afex/man/stroop.Rd0000644000176200001440000000464014217364040013572 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stroop-data.R \docType{data} \encoding{UTF-8} \name{stroop} \alias{stroop} \title{Stroop data from Lin et al. (2020, Psych. Science)} \format{ A data frame with 246600 rows and 7 variables: \describe{ \item{pno}{participant id (preceded by study id), factor with 685 levels} \item{condition}{experimental condition (control/low demand, deplete/high demand), factor with 2 levels} \item{study}{study number (1, 2, 3, 4), factor with 4 levels} \item{trialnum}{trial number} \item{congruency}{Stroop congruency (congruent, incongruent), factor with 2 levels} \item{acc}{accuracy (0: error, 1: correct)} \item{rt}{reaction time (seconds)} } } \source{ Lin, H., Saunders, B., Friese, M., Evans, N. J., & Inzlicht, M. (2020). Strong Effort Manipulations Reduce Response Caution: A Preregistered Reinvention of the Ego-Depletion Paradigm. *Psychological Science*, \doi{10.1177/0956797620904990} } \usage{ stroop } \description{ Lin, Saunders, Friese, Evans, and Inzlicht (2020) investigated ego depletion. An initial high-demand task was followed by a Stroop task. The data of the Stroop task from all 4 of their studies is included here. } \details{ Their abstract: People feel tired or depleted after exerting mental effort. But even preregistered studies often fail to find effects of exerting effort on behavioral performance in the laboratory or elucidate the underlying psychology. We tested a new paradigm in four preregistered within-subjects studies (N = 686). An initial high-demand task reliably elicited very strong effort phenomenology compared with a low-demand task. Afterward, participants completed a Stroop task. We used drift-diffusion modeling to obtain the boundary (response caution) and drift-rate (information-processing speed) parameters. Bayesian analyses indicated that the high-demand manipulation reduced boundary but not drift rate. Increased effort sensations further predicted reduced boundary. However, our demand manipulation did not affect subsequent inhibition, as assessed with traditional Stroop behavioral measures and additional diffusion-model analyses for conflict tasks. Thus, effort exertion reduced response caution rather than inhibitory control, suggesting that after exerting effort, people disengage and become uninterested in exerting further effort. } \keyword{dataset} afex/man/ks2013.3.Rd0000644000176200001440000000743014217364040013330 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ks2013.3-data.R \docType{data} \encoding{UTF-8} \name{ks2013.3} \alias{ks2013.3} \title{Data from Klauer & Singmann (2013, Experiment 3)} \format{ A data.frame with 1440 rows and 6 variables. } \source{ Klauer, K. C., & Singmann, H. (2013). Does logic feel good? Testing for intuitive detection of logicality in syllogistic reasoning. Journal of Experimental Psychology: Learning, Memory, and Cognition, 39(4), 1265-1273. http://doi.org/10.1037/a0030530 Morsanyi, K., & Handley, S. J. (2012). Logic feels so good-I like it! Evidence for intuitive detection of logicality in syllogistic reasoning. Journal of Experimental Psychology: Learning, Memory, and Cognition, 38(3), 596-616. http://doi.org/10.1037/a0026099 } \usage{ ks2013.3 } \description{ Klauer and Singmann (2013) attempted to replicate an hypothesis of Morsanyi and Handley (2012) according to which individuals have an intuitive sense of logicality. Specifically, Morsanyi and Handley apparently provided evidence that the logical status of syllogisms (i.e., valid or invalid) affects participants liking ratings of the conclusion of syllogisms. Conclusions from valid syllogisms (e.g., Some snakes are poisonous. No poisonous animals are obbs. Some snakes are not obbs.) received higher liking ratings than conclusions from invalid syllogisms (e.g., No ice creams are vons. Some vons are hot. Some ice creams are not hot.). It is important to noted that in the experiments participants were simply shown the premises and conclusion in succession, they were not asked whether or not the conclusion follows or to generate their own conclusion. Their task was simply to judge how much they liked the "final" statement (i.e., the conclusion). } \details{ In their Experiment 3 Klauer and Singmann (2013) tested the idea that this finding was a consequence of the materials used and not an effect intuitive logic. More specifically, they observed that in the original study by Morsanyi and Handley (2012) a specific content always appeared with the same logical status. For example, the "ice-cream" content only ever appeared as an invalid syllogism as in the example above but never in a valid syllogism. In other words, content was perfectly confounded with logical status in the original study. To test this they compared a condition in which the logical status was confounded with the content (the "fixed" condition) with a condition in which the contents were randomly assigned to a logical status across participants (the "random" condition). For example, the ice-cream content was, across participants, equally like to appear in the invalid form as given above or in the following valid form: No hot things are vons. Some vons are ice creams. Conclusion Some ice creams are not hot. The data.frame contains the raw responses of all 60 participants (30 per condition) reported in Klauer & Singmann (2013). Each participants provided 24 responses, 12 to valid and 12 to invalid syllogisms. Furthermore, 8 syllogisms had a believable conclusion (e.g., Some ice creams are not hot.), 8 had an abstract conclusion (e.g., Some snakes are not obbs.), and 8 had an unbelievable conclusion (e.g., Some animals are not monkeys.). The number of the contents corresponds to the numbering given in Morsanyi and Handley (2012, p. 616). } \examples{ data("ks2013.3") # replicate results reported in Klauer & Singmann (2013, p. 1270) aov_ez("id", "response", ks2013.3, between = "condition", within = c("believability", "validity")) aov_ez("id", "response", subset(ks2013.3, condition == "fixed"), within = c("believability", "validity")) aov_ez("id", "response", subset(ks2013.3, condition == "random"), within = c("believability", "validity")) } \keyword{dataset} afex/man/md_15.1.Rd0000644000176200001440000000643514217364040013314 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/md_15.1-data.R \docType{data} \encoding{UTF-8} \name{md_15.1} \alias{md_15.1} \title{Data 15.1 / 11.5 from Maxwell & Delaney} \format{ A data.frame with 48 rows and 4 variables. } \source{ Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 766 } \usage{ md_15.1 } \description{ Hypothetical IQ Data from 12 children at 4 time points: Example data for chapter 11/15 of Maxwell and Delaney (2004, Table 15.1, p. 766) in long format. Has two one within-subjects factor: time. } \details{ Description from pp. 534: The data show that 12 subjects have been observed in each of 4 conditions. To make the example easier to discuss, let's suppose that the 12 subjects are children who have been observed at 30, 36, 42, and 48 months of age. In each case, the dependent variable is the child's age-normed general cognitive score on the McCarthy Scales of Children's Abilities. Although the test is normed so that the mean score is independent of age for the general population, our 12 children may come from a population in which cognitive abilities are either growing more rapidly or less rapidly than average. Indeed, this is the hypothesis our data allow us to address. In other words, although the sample means suggest that the children's cognitive abilities are growing, a significance test is needed if we want to rule out sampling error as a likely explanation for the observed differences. To replicate the results in chapter 15 several different contrasts need to be applied, see Examples. \code{time} is time in months (centered at 0) and \code{timecat} is the same as a categorical variable. } \examples{ ### replicate results from Table 15.2 to 15.6 (Maxwell & Delaney, 2004, pp. 774) data(md_15.1) ### ANOVA results (Table 15.2) aov_4(iq ~ timecat + (timecat|id),data=md_15.1, anova_table=list(correction = "none")) ### Table 15.3 (random intercept only) # we need to set the base level on the last level: contrasts(md_15.1$timecat) <- contr.treatment(4, base = 4) # "Type 3 Tests of Fixed Effects" (t15.3 <- mixed(iq ~ timecat + (1|id),data=md_15.1, check.contrasts=FALSE)) # "Solution for Fixed Effects" and "Covariance Parameter Estimates" summary(t15.3$full.model) ### make Figure 15.2 plot(NULL, NULL, ylim = c(80, 140), xlim = c(30, 48), ylab = "iq", xlab = "time") plyr::d_ply(md_15.1, plyr::.(id), function(x) lines(as.numeric(as.character(x$timecat)), x$iq)) ### Table 15.4, page 789 # random intercept plus slope (t15.4 <- mixed(iq ~ timecat + (1+time|id),data=md_15.1, check.contrasts=FALSE)) summary(t15.4$full.model) ### Table 15.5, page 795 # set up polynomial contrasts for timecat contrasts(md_15.1$timecat) <- contr.poly # fit all parameters separately (t15.5 <- mixed(iq ~ timecat + (1+time|id), data=md_15.1, check.contrasts=FALSE, per.parameter="timecat")) # quadratic trend is considerably off, conclusions stay the same. ### Table 15.6, page 797 # growth curve model (t15.6 <- mixed(iq ~ time + (1+time|id),data=md_15.1)) summary(t15.6$full.model) } \author{ R code for examples written by Ulf Mertens and Henrik Singmann } \keyword{dataset} afex/man/reexports.Rd0000644000176200001440000000063314217364040014275 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/reexport.R \docType{import} \name{reexports} \alias{reexports} \alias{lmer} \title{Objects exported from other packages} \keyword{internal} \description{ These objects are imported from other packages. Follow the links below to see their documentation. \describe{ \item{lmerTest}{\code{\link[lmerTest]{lmer}}} }} afex/man/figures/0000755000176200001440000000000014076011251013411 5ustar liggesusersafex/man/figures/README-unnamed-chunk-7-1.png0000644000176200001440000001524314413021020020104 0ustar liggesusersPNG  IHDR \1nPLTE:f:f:f?b?b333::::f::f:::f:????b??b???MMMMMnMMMnMnMMbb?bbb?b?bbbbff:fff:fffnMMnMnnMnnn????bbَMMMnMnMnnn:::ff۶b٫nMnnMff:ې?ٽپȎMٟbٽٟٽې:nfȎې۶9+ pHYsodIDATx흋qW&"Jj&҉eMq ,0qo8~w0xg+(beS; $*Z(j %Н):F$ J,~7qVzٷ <*SRW OR7sӇFE9-=F=Qi+}?慘d􀖞Cm􋿦 [ Z7]{,"@Ke\eGS.~Qw3eTm<̓=iӃӼ=GaIF$IeJ'A(P t@ (5OSruD! )7 6>wjP:S(%Δ`I3%2X@L P:S(%Δ`I35aIuIEڷhl@$"[$2(~@zSm$5bYjw=v@Aq ("cjeŚPPM 9R "T}+^@]J(̔(LPBh$ix@bzДrXXVKcJEY  Jg*@}FQ$ҙPP>^;y:'''hA=L. hCfBZ@a"O{> uWCI*#IXP@(J|xA{PS)ͨOPD(!@SeZUҊdiA*n8Z,I+@64vK(~'dBU7b>(u>iI&,S26@M(N ҩTR($R@sN*A@aPbJ#BiD*$ h2xP:S*t-4T@_|4{ūg۟oO<)ұxPb@rzyzW4?*_|yfj bZſܩ 8d1pRP.,2:VDǀk;-{&UZvYc}"x#hJ%$W/PBKQ"6|[UW(xU?h4Ib) @am:a?%:MN UYhzظ{YD (†LqSL (T"BXIHX䍤 *.DY:LIjS|S%TJ RŃv2V6)Fi dii~sPl#ɴxY2RST5&Bk!۵ .EsG)AM@Qߧ1RkGhΒES+TfI5=&,"qkEs{3c+df JAAMIr)~@hs/"=t@)'@H@L1]9fʾ` /sK; m t 6ZT![՟3Z!cuZ&nV 65ItS0ˌAïWXWt;mߘaOHAa)vbezeٞz=/{%śr:<,EQ?z%g],+A}qrh}9(Esw]<k@*שl^V4hAn;3tLEs=.˲к*[6SKx9-Pqc>b~/nfeui.!LF^[-O9\< d15HBػ3 st]@/n^_}@{Y_hFf2M8&$hAq,^Z)waiVeſ2>W^_MNr?vr7{3d5/2Om%ԺsN8V=FY<97dhV4Rho8]i3ʬE(iܩ\Nh2f{6վ7FroܰB\@/o5[Z񐸗Y*;' )?`(a\`(:@O:9Am`6?3n2oC;k (b,u*M(ph~[X0~7  Аp5ލK&+|,]e@Z{@@ɖ*z\%C'Z}?@:&g`0ϬVsSf _qH%o$#g ?{|}8S]W[:olCx@CT{NdG=҉kz tE@ ןO񁪖/[l,^bj=’QOjUsuۻ0˼p!t-2Y;|o}EfΩV~sA%U=i_R{be:TZ,2h?AY]ΏOJvQ'vf|BQu (D:,gY9h=Q9hS[&m򨭫C2f3E0JHb?6,M oZKVm\+^Z\}0eMx"c>ݮGo079SSz/ uxͼs?hT}teMC HB=5*N\\b^d+NCA~6SW($.Y%X47+吽oۣ^lU-2 :Y-#IAdf} PK>o9#6BGPϥֿet@=1wX^̹A).@7x>>yvY[c1_fDe|^<$_l5WtԧAyIo>t//#h_͉l`4 Oڧ}5I5-=vp^AMtjFMcxWX;O(<wfqGv2(dpr7w_''770]O[@@ Vm-춡:ƫ^Q/#wy,yA9n=Pw]OL)~OC6| t֒RKw]0ixuNg@>yq82g1يGui(v (|PCU5\/;*>@L,S (vkz9t"̈́ʗ&| PPE ]aJFz]7KuNw͢|-2yZ&AmqZs,sdWdh][Ԗk%]jL>"eT+Frm1|-2r#v}SU / qZ7dL]A;w QF#,63(t;}ܪzaed7Yd\W't>mb`RCADgv \ ),(9v+~2(VgN ; {7{*h:5.{{oդҥ쨛#e6@E၉AU`ܳڀٍھ .EmŴA=etHmPzz_즳-hZtkMVy=lhm,f94~Тi6 A.@c\%켡P@c#HE>PUo*Viw 8u"Ų<^wۈT堘Siw(Y>e6p̈́@2,[isexVurfvci-CP@i93;PrF}:0nX|獡NUMJ4( jEJL:hEs% sfK(x}^&AI$JGPv%ԥQ}]K=@5P7J (>%- ˱\Զ4f-.pJ@=@]*^+@} O3jv:=^;B}z/B15&nzHuI(-wNN[(Kn)JDPɿ%9($┑$F%%iΒOgIuIEڧ$. Htd$%A^J!yiЩ((DuN糊t.=LVj%z$9(܀q?U4Հz/%%iΒOgIuIEڧ$4iJ(!"ˇξxJ%žxJ%žxJ%~@E@EQKE-TPQrexqUſZikI'u^^{ dfWS>-[!/;7+ TaVo?.^?Fz&vU<-?7"Q{\Jˋ,N3WzfM/Q|pz r*ʰڝ$Џf3U<~VI|GEmDA]Ii/"K4|;ֲ Ai-/ )PRWS>T_T^yuZ+nq{1mLxʧ)A{JxRq5OHH$"*Z(j [LJ:P %zue׋^Yvuj6__ Ƌ{W|w/ڳ-ꗂ/__z%@*ͳjr% ԯ,IU޽WLHh)ϮM!Q ep"B BFE8YdB%( /(ꂞ9xSѯa6B5At6Ao=o}nxy{_~4pܾ}{>ݳ>c{&2 I~6=sj9wyp;\<BN+vq?>^<>m g] g5 "l|k"orvg߮]mj%/Pn*l[QȂaVZy7{vZ(eZ` 08@;xMcbQd4xtc t4XS o#@?P D Lq[M|4׺RH37T3@_[ ^Ssu[e W͋@<߸xF2Sw*k^Pe|lP?5`c ?@I@R5%}{^+uGv(0lhw; JܼD9(Q,*!zmyro~G 36Pd*ʀf~4Y+b9.ԀaWk WmIA(-_rwdwz&wA7[5k_1۪S sxѠ_(¶Z'fsSSDyl^7*X)v |Χ[KȝzMM~?-,힆vSS@=腈y}Aڛ i<Q78.*RW#IExÞ>)exO-ul7en+HPϔۿo膮tnM9 j޼!#&1 **VA.MET(. D: @i hʀdj6ʀLJ"^ d3}Bȇɏ0v~»xj0 1b'i e M? u&{ <v? Կ:h2 o#(xV" 7ϔ^PކMw\a6棨q[2 Xmmj@L  wC峛 @4ГyGQ(pn é\_> 106#uS0ml"w7?W k;EzrE)u8`,@p)6 r@0˭ πq(jb( @غ n D1j_j;@Y M`ld`4B NE `+e0\ ٰsKX?_$ S 89Tn@ B 2wC PIc~$+ЮL*/^X  B@/Ȓ4gId,dYW4 Lu@3 h0)Ej 2Krz:E=2j9^r2hhgg(3@Gh2X T7e]#aP6d 4KdeAʂ F SmuC@d1@vLdhH ""@ʉ @0-;>2:_~`~wz𻿞k??~r֖i_g\oW xb4)ye<w.&|sX ?GB &[,A/?z0-7'8JMk+d#Yπ7}~z7' 5/a^W5x hKMЧX H:i;zAwOzAՊ{G؍َ{Gz.,,,bZ-Mr@yz-Q'cM郏Lpɣ}t}XA`A' cy{eӅX;$RܾB#N ;QބbIENDB`afex/man/figures/README-unnamed-chunk-19-1.png0000644000176200001440000001127414413021054020176 0ustar liggesusersPNG  IHDR TcPLTE:f:f333::::f::f:::MMMMMnMMMnMnMMff:fff:f:fnMMnMnnMnnnnnMMMnMnMnn::::fff۶ېnMnnMfېȎMې:nfȎې۶Le pHYsodZIDATx흋۶$sZۺx,ݒn)ؘbVYLkuvlp %!<~a%oV.@"E,Xf~;+O %%%%%%0֙c6BLUYA @ U@`E7J`$8K`/ˢ0p^,PW@_iUp4)d> }02@J2} 0O!ң U:2A>EQP[CW4%)kEJ@#YYz䳟o=[Pnu~|B*ћ7˯!ß^7L8>h[}b[3ƶ0i(l0TiclXP4m4ȟ ~@D*Vb05{\n,(5!p4bD} $#s-f2U+;0[ Jөd)@1Bw[u(e'`8-As@A1B[|N_i Ub0w [1W"8:S9 V|@ `o?Fк¤9ޗy2wȜV07~| C[>ߌXstOig8:g޳:OȨ3X 0)̆kpM 9}FDyux^Qm#S2lW_v# vFL\J6V*+0A0A!.٩$zds 6<[ kmmV+-`7L} @yqWJLbgkp*mv&Wl7! ԆMp+l9QX;iGiKZ~ 8ׇ ^>ً;K3yի/vtt%Dd 2nhFYGwa?(Mw}2n`@]0\81γq]+k,юIm %5@WG{٤'I vIm*0[JHՂ6kumGAvVXpN ~%jERs5B6ݗ 2g\0 p4!8ɞf9f!U+-IBlӴ^ +kwhH!N\vh <2eF@vC4O4 U%SCЯUF`ǬT;/( aov^P2Ug% @2ScHZ@{8ɜ))t6|4}9-%.h^:*NՏF^9o7m~rgYzΕ@$QP[>Vy=UOZ~<N MÈ@1AmV?~`S:K4AΠ bIqP&nJ`N8=Qe#Va6X=GM2lD$ _~?ePSȒ beLhar*8`+\ lS(XwAZ Y96[Xx0hU,&k!g%6OԱV߭kvʻUQP%6N.'NppF? `&l"n 9/ho Uto*drvDdӧ)cΏ+4z=|@6EA1;s¨@Cf'v] 쐡4MM5VY sOOE@.d^]*V،X$ݾM 0)l)"$)ˊ4Q6bO@ #_@Jj}·(VmEdFbWz$pV <%e@Tfg%@㐎pV${@KUg%V  S|j[F/E ( >V<HZf"ֲ48xbtK ) - @,?gVK@RAʐ (s"P0ȜYH p p p p p p p#p X B  @`"lv_?Bp*×LYԼVp?+7kq3: jvFc8 NbrOy jS*u?#{J~}?K0*<Q¿G~'C\9<6óuSﳽ|x=w8p2Ksŋ$o yl_[@e _xp<$O p[-uj{l訢-57ҷCx#}k8",X F'OIJlQ /# ]4rqT#7tvԘmiAb1(ali h `TyW$7EG/ ]5&P{UO:  pPwN+_,FHT\? U @`"E,X ր8IENDB`afex/man/figures/README-unnamed-chunk-6-1.png0000644000176200001440000001603714413021017020113 0ustar liggesusersPNG  IHDR \1qPLTE:f:f:f?b?b333::::f::f:::f:????b??b???MMMMMnMMMnMnMMbb?bbb?b?bbbbff:fff:fffnMMnMnnMnnn????bbَMMMnMnMnnn:::ff۶b٫nMnnMff:ې?ٽپȎMٟbٽٟٽې:nfȎې۶ͣ pHYsodTIDATx흋qWՇ,>tb}JeZ'-U#ᆕbv1$'wV+(cU$*Z(k %8OKr5*/1%&WyA)4 jL U^PcJMShrԘ@Ɣ\5ǟSzwy+W~_W~o&?oO|ހ~NctU2Q>|??Qm=} ihDX7 S}6 'yyM<6>|/'o;砝jJy*=>:u euLU(qJ_Y6Oeh"KeGeנ_/fc4z]{ZW]=s; ($W#JMShrԘ@Ɣ\5pxȫ0)"A:u-\(̔($(r !)ge'K/^G]PE/BxC. f)P}% (%",Aa&K3twzPQ:>>NPR"YJԋYEh*[fBZ SEʭpe~h@NVl&Ѕ94{T*Pa=y@V'BZr/Eв^OaeJ j$xiW橧 b'bB0b>wWOwg>iI&,S3.iGڠʭN2txA)$ӒGwN@@e=Mt1mPJ'BZL/X8P}%+@˹o$P9}_4f}տRLދ\#UӀ쯾^W+%LZΌ|+ B{/?A t1ܕ]i^~zwkk7jq{cQL2:RUR;`4}=ҋZҋoȽ^a"@YZ% jـn栫 L$b,-|Ŕ<^%JTP',N 4ڌ1fXJTY"~0K!AjV'UY j\O/:n7`O{EPPcJ(춟7`=5- W<@AR8),_ gIJ4v!"h3%93!z,ɄeJԴ**lWO,sle[ $`eAiʒy/~L>b;I%XY|P :eeR4 (f"v-1?Z|z k2c Fh,ЉS%Ԃ*L5h9k@]"qڗ)lEs{3@m2f3yK^"AA]ʝ$"@g )}/{ќL[L!<ۋ,RA ǗjOple&Kz a~{ } 5ii8>~*VebA}AދS)eIL7o[i}vԬr)4g?wCJ8*WK%N-נWS Ukyv+RkP u 8φ{ |5W_zR_ݷ(ZLʆJhnQN˖C}нM*/JnFJwڙfj܇^U]@JjE P@n[ wnTms+~q]B@ .Bu}~ :)TS0"$t0m%TmXƵի[nk/GZ]@#.fhUAYKU.zyfLϿ{[{.txW[M|*2+(XPmZ؛x~ZOا jU ga&Vv3w'p&2$4| @L(} ?v Ws @pj4E (9Ym.$ހ惂ǦcʐFĔFcNRpc2Nobs}uPXlJ:RUB km?,r ֠&{+ PKfL@!RzӭnjP^tut-p63c:@.:W5hQ+t,rP^Ba`fvKLcݹi}7i-55WUO[c\9WӅڭ͏߭zfhË zgA|D:<8itoA/^GYy5s.;^昣tjPl,9hhOd:p2h3ni67@IsPAvBqsfwQ&7l\P)/ 7׽axHWY*;OAAMPS\Ep֪v7/o^<46̀"7Ad[:חu~[X0Kܛy\vntA=i~iaavvt>5Bzg?mr^_OT^?sr2W#5؇]Y/Ғx<24ԠOT{Ͻk fKV{F(<(ۀ{wףӉzuSKF@AWz?ꇷU|fc?Qwn\{uA(8('WKFrԪuat!:8*t#l9Y9??5O=D /pGR}[fYzTK!wZ/7ϒ-ao.kPV@C~t;g~BӼDŽ/d>  質B=Q9躉L tIJ5^ ،ﳜ+^M%+@_՞!~"o9n#7Xfԓ>hmlu hAc[ AKi$f쀮;I. i7Lc 8>߸a6]/[@2`bQNjד%a}SUA^s@e*4*¨Y}'c ?of7C>-#~/~|x}:&B=v%ǩKm@p=sܲ^|99s5xajǙ5[UϲcP3YXCϼe26ӣh*cǠ:Nϸ"xtPss} tswqk(fx~mZ=&iUS qP8(m?.zv@mF K9 `Բ#2ETR}LT tIՠԮ?-A5wݫp|ŬArPԕdE:i{s2\ϥt^^Z/]p"=]nŤnՠфM1EA؆chಌz,-6,NtxQt {GX4 hd rŒhdVMz~=S= Yڳ9y^ve_61j6:*? dVMcoWunU\ jUMݫp|M}Qut=ʤ8wiVwþ !-it?w{Rau#ev@zYxA:l(Y5f :r~ێOY9( 㠕n)[AWoJvҙztOdȁ]7X(B[#=>>ejOجN;;N-zc|rnȮh77[jIzJ6MS@߻I(B=mHsrPLf2dF|a& DpPvݫp|1hۦH@ϙʂ]@r~f@)gԗmߋƭNU]XYpPݔ/H駀7NHH@]eP߄2%ԠTʾen^UMXb?>euGevP7Q@( vgq@KbjLݫp|IS6>s@ 5U8Pԣp|I/zS:>xW癩;QS')qTAr~M~uGu=' %; AUA$5ɿJ&o8AMޝHr\^"Z S@A-t&AMJh ijrOPBSpOS7 `EM~) f(>% <%"YJTTuMTTuMTTuMTTuMTTuMTTu*PE;Iy)< :SpOSK G!t>XX&?+=a Й{Ãq/>׮V bX)1M:<Ň .Q:SpOSKA-}0]kPqc#@g ,_P&KA-Z/ާ/g>US;*{뎼i8HXGڧ*>% <%"Yiq,Oh8Od}:Ki* I* I* I* I* I* Iz1QytS* ,S* ,S* ,S**He-TPQ@EY+xqU뫽}^qU<߱͟?OmgȗTPRWS>4T˺9}p +qs7tUv넴~솴@R$KvEkh\&v ݫ:ϊ6U%<PQ@EYKe-TPQ@EYKe-TPQ@EY}1/5XIENDB`afex/man/figures/README-unnamed-chunk-18-1.png0000644000176200001440000001017714413021053020175 0ustar liggesusersPNG  IHDR TcPLTE:f:f333::::f::f:::MMMMMnMMMnMnMMff:fff:f:fnMMnMnnMnnnMMMnMnMnn::::fff۶ېnMnnnMfېȎMې:nfȎې۶&s5 pHYsod&IDATx [ܸII&n\vm7-ɶЅI eRIXŶlK:|n0Z:*]     _Uj? A~vp!p~8?z9};'~e2<(%8*WI)jJpa~yϧJ$KM Ez<\$,P ?/L&uɤڝ7}4`z~0x6 Sq_=B$*U6g<<=J#xg!p~8?pߠ'b B@X!Ef9L77P@d^@d^ :R4x ^:M\B@ 5JvMlm)΄U!.Eh KpC@!BMfτ;z"L+bRV"?U?YMG(o#Om!phle36 Y [ $0Y,lY/w|Nۧ]`i..g; XiWmEts9;<fTt"Ɔ[ CM]j/#QSt&n h02h\aԩ X>wV+jMZ CH|h[`FWC7&@BH-Bw;314L8IxXhp+xHfd6kw֍s(U-ɕZz)# VG"MAaS&y {r[xTHpS}R}ͮTqؒ\JeQ)xPDоH$t [irl:)t\Zz2?X#L-~FAW3XO[ֵ T6Unm@Ps ]c\DH$t)i@vf_qϰ,M"lyYS 66qa5aWsNzZ8}=$k.aOۄ^(oBn˵eHfd SyvA~zƛv8s @ 7x$ C+h0½ 'R/J mclӭ2L:S~oQ}u5\7ra 8 `<&.h>?)-H]R16\jJʰY }]90oYrU CIᕾ!W6mALHE oݹxѾx^E"徧ɩS'[;IAt=b٧Zl Ij vWhv||,;5V@d9nQ~ӧc%?|UYI2W_)b@ʆ7-P>5VZRSl{mEqo45V:Dmm=FWذoE BV| IW:cj';7î:Eݬ ++9j87n][I:w$v@S_a'b^QpbxE<% |W.(D7?WQ׈-vA&(y@]Ll|ZJ[}1;G'Wm j &%Woo~.m5=VҤd^Lē,7-` .H6 1U2?@I `g<@oo _= ]w ^ juʛ\Y՞Z $-Eky@3}V6hw3ӫ w idY!Wa_/Hcg]^hN]59i=6rd>(![ %F tiS!Lp @ Jf?;0 vcr|~tϸD ܼLie2<3NwK<\W#Q-Ɖ ,Lˣ|ڧ Zn(edhRĠY Qh~A(CJY C#%[D5Ri)X-7 IdX/$Z/,woQO 8L[7OvkA{wP`5?u-y2 P25Iн"Sp& 3O ^ _Ow58%]L,K3:(VVѨzPn- K[@թ @&`AպGε|&lA0p;YXBg]cZ9g-hFȹ^NY:z @x蛻!ty{~<h_o枸P2= tC!p~q10.t"B:(Vh [J9([@g$0-I IDM%G$&QJ $"fJ!u1p"S D<\F[GMdIS9uD)&yD VEuDߊ @@0V4|ZM./f5   ؅5>gfz (?KȲ"dϪio|.W܏EzΗq4͓>  [oE|uq9Myk}a0yտ;~|M9gI-\]͹}wGƀ}6|%ΒfB?isbd<]`OWfO$ܾ.(T x д^}PDfu:>l؊y(?d}0w1wB1H!`!`!`!`!`!`!`!`!`;IENDB`afex/man/afex_aov-methods.Rd0000644000176200001440000001334214217364037015502 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/methods.afex_aov.R \name{afex_aov-methods} \alias{afex_aov-methods} \alias{anova.afex_aov} \alias{print.afex_aov} \alias{summary.afex_aov} \alias{recover_data.afex_aov} \alias{emm_basis.afex_aov} \title{Methods for afex_aov objects} \usage{ \method{anova}{afex_aov}( object, es = afex_options("es_aov"), observed = NULL, correction = afex_options("correction_aov"), MSE = TRUE, intercept = FALSE, p_adjust_method = NULL, sig_symbols = attr(object$anova_table, "sig_symbols"), ... ) \method{print}{afex_aov}(x, ...) \method{summary}{afex_aov}(object, ...) recover_data.afex_aov(object, ..., model = afex_options("emmeans_model")) emm_basis.afex_aov( object, trms, xlev, grid, ..., model = afex_options("emmeans_model") ) } \arguments{ \item{object, x}{object of class \code{afex_aov} as returned from \code{\link{aov_car}} and related functions.} \item{es}{Effect Size to be reported. The default is given by \code{afex_options("es_aov")}, which is initially set to \code{"ges"} (i.e., reporting generalized eta-squared, see details). Also supported is partial eta-squared (\code{"pes"}) or \code{"none"}.} \item{observed}{character vector referring to the observed (i.e., non manipulated) variables/effects in the design. Important for calculation of generalized eta-squared (ignored if \code{es} is not \code{"ges"}), see details.} \item{correction}{Character. Which sphericity correction of the degrees of freedom should be reported for the within-subject factors. The default is given by \code{afex_options("correction_aov")}, which is initially set to \code{"GG"} corresponding to the Greenhouse-Geisser correction. Possible values are \code{"GG"}, \code{"HF"} (i.e., Hyunh-Feldt correction), and \code{"none"} (i.e., no correction).} \item{MSE}{logical. Should the column containing the Mean Sqaured Error (MSE) be displayed? Default is \code{TRUE}.} \item{intercept}{logical. Should intercept (if present) be included in the ANOVA table? Default is \code{FALSE} which hides the intercept.} \item{p_adjust_method}{\code{character} indicating if p-values for individual effects should be adjusted for multiple comparisons (see \link[stats]{p.adjust} and details).} \item{sig_symbols}{Character. What should be the symbols designating significance? When entering an vector with \code{length(sig.symbol) < 4} only those elements of the default (\code{c(" +", " *", " **", " ***")}) will be replaced. \code{sig_symbols = ""} will display the stars but not the \code{+}, \code{sig_symbols = rep("", 4)} will display no symbols. The default is given by \code{afex_options("sig_symbols")}.} \item{...}{further arguments passed through, see description of return value for details.} \item{model}{argument for \code{\link[emmeans]{emmeans}()} and related functions that allows to choose on which model the follow-up tests for ANOVAs with repeated-measures factors are based. \code{"multivariate"} (the default) uses the \code{lm} model and \code{"univariate"} uses the \code{aov} model. Default given by \code{afex_options("emmeans_mode")}. Multivariate tests likely work better for unbalanced data and provide a better correction for violations of sphericity.} \item{trms, xlev, grid}{same as for \code{\link[emmeans]{emm_basis}}.} } \value{ \describe{ \item{\code{anova}}{Returns an ANOVA table of class \code{c("anova", "data.frame")}. Information such as effect size (\code{es}) or df-correction are calculated each time this method is called.} \item{\code{summary}}{For ANOVAs containing within-subject factors it returns the full output of the within-subject tests: the uncorrected results, results containing Greenhousse-Geisser and Hyunh-Feldt correction, and the results of the Mauchly test of sphericity (all achieved via \code{summary.Anova.mlm}). For other ANOVAs, the \code{anova} table is simply returned.} \item{\code{print}}{Prints (and invisibly returns) the ANOVA table as constructed from \code{\link{nice}} (i.e., as strings rounded nicely). Arguments in \code{...} are passed to \code{nice} allowing to pass arguments such as \code{es} and \code{correction}.} \item{\code{recover_data} and \code{emm_basis}}{Provide the backbone for using \code{\link[emmeans]{emmeans}} and related functions from \pkg{emmeans} directly on \code{afex_aov} objects by returning a \code{\link[emmeans]{emmGrid-class}} object. Should not be called directly but through the functionality provided by \pkg{emmeans}.} } } \description{ Methods defined for objects returned from the ANOVA functions \code{\link{aov_car}} et al. of class \code{afex_aov} containing both the ANOVA fitted via \code{car::Anova} and base R's \code{aov}. } \details{ Exploratory ANOVA, for which no detailed hypotheses have been specified a priori, harbor a multiple comparison problem (Cramer et al., 2015). To avoid an inflation of familywise Type I error rate, results need to be corrected for multiple comparisons using \code{p_adjust_method}. \code{p_adjust_method} defaults to the method specified in the call to \code{\link{aov_car}} in \code{anova_table}. If no method was specified and \code{p_adjust_method = NULL} p-values are not adjusted. } \references{ Cramer, A. O. J., van Ravenzwaaij, D., Matzke, D., Steingroever, H., Wetzels, R., Grasman, R. P. P. P., ... Wagenmakers, E.-J. (2015). Hidden multiplicity in exploratory multiway ANOVA: Prevalence and remedies. \emph{Psychonomic Bulletin & Review}, 1-8. \doi{10.3758/s13423-015-0913-5} } \seealso{ \code{residuals} and \code{fitted} methods also exists for \code{afex_aov} objects, see: \code{\link{residuals.afex_aov}}. } afex/man/nice.Rd0000644000176200001440000002010714217364040013156 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nice.R \encoding{UTF-8} \name{nice} \alias{nice} \alias{nice.afex_aov} \alias{nice.anova} \alias{nice.mixed} \alias{print.nice_table} \title{Make nice ANOVA table for printing.} \usage{ nice(object, ...) \method{nice}{afex_aov}( object, es = attr(object$anova_table, "es"), observed = attr(object$anova_table, "observed"), correction = attr(object$anova_table, "correction"), MSE = NULL, intercept = NULL, p_adjust_method = attr(object$anova_table, "p_adjust_method"), sig_symbols = attr(object$anova_table, "sig_symbols"), round_ps = attr(object$anova_table, "round_ps"), ... ) \method{nice}{anova}( object, MSE = NULL, intercept = NULL, sig_symbols = attr(object, "sig_symbols"), round_ps = attr(object, "round_ps"), sig.symbols, ... ) \method{nice}{mixed}( object, sig_symbols = attr(object$anova_table, "sig_symbols"), round_ps = attr(object$anova_table, "round_ps"), ... ) \method{print}{nice_table}(x, ...) } \arguments{ \item{object, x}{An object of class \code{"afex_aov"} (see \code{\link{aov_car}}) or of class \code{"mixed"} (see \code{\link{mixed}}) as returned from the \pkg{afex} functions. Alternatively, an object of class \code{"Anova.mlm"} or \code{"anova"} as returned from \code{\link[car]{Anova}}.} \item{...}{currently ignored.} \item{es}{Effect Size to be reported. The default is given by \code{afex_options("es_aov")}, which is initially set to \code{"ges"} (i.e., reporting generalized eta-squared, see details). Also supported is partial eta-squared (\code{"pes"}) or \code{"none"}.} \item{observed}{character vector referring to the observed (i.e., non manipulated) variables/effects in the design. Important for calculation of generalized eta-squared (ignored if \code{es} is not \code{"ges"}), see details.} \item{correction}{Character. Which sphericity correction of the degrees of freedom should be reported for the within-subject factors. The default is given by \code{afex_options("correction_aov")}, which is initially set to \code{"GG"} corresponding to the Greenhouse-Geisser correction. Possible values are \code{"GG"}, \code{"HF"} (i.e., Hyunh-Feldt correction), and \code{"none"} (i.e., no correction).} \item{MSE}{logical. Should the column containing the Mean Sqaured Error (MSE) be displayed? Default is \code{TRUE}.} \item{intercept}{logical. Should intercept (if present) be included in the ANOVA table? Default is \code{FALSE} which hides the intercept.} \item{p_adjust_method}{\code{character} indicating if p-values for individual effects should be adjusted for multiple comparisons (see \link[stats]{p.adjust} and details). The default \code{NULL} corresponds to no adjustment.} \item{sig_symbols}{Character. What should be the symbols designating significance? When entering an vector with \code{length(sig.symbol) < 4} only those elements of the default (\code{c(" +", " *", " **", " ***")}) will be replaced. \code{sig_symbols = ""} will display the stars but not the \code{+}, \code{sig_symbols = rep("", 4)} will display no symbols. The default is given by \code{afex_options("sig_symbols")}.} \item{round_ps}{Function that should be used for rounding p-values. The default is given by \code{afex_options("round_ps")}.} \item{sig.symbols}{deprecated argument, only for backwards compatibility, use \code{"sig_symbols"} instead.} } \value{ A \code{data.frame} of class \code{nice_table} with the ANOVA table consisting of characters. The columns that are always present are: \code{Effect}, \code{df} (degrees of freedom), \code{F}, and \code{p}. \code{ges} contains the generalized eta-squared effect size measure (Bakeman, 2005), \code{pes} contains partial eta-squared (if requested). } \description{ This generic function produces a nice ANOVA table for printing for objects of class. \code{nice_anova} takes an object from \code{\link[car]{Anova}} possible created by the convenience functions \code{\link{aov_ez}} or \code{\link{aov_car}}. When within-subject factors are present, either sphericity corrected or uncorrected degrees of freedom can be reported. } \details{ The returned \code{data.frame} is print-ready when adding to a document with proper methods. Either directly via \pkg{knitr} or similar approaches such as via package \pkg{xtable} (nowadays \pkg{knitr} is probably the best approach, see \href{https://yihui.org/knitr/}{here}). \pkg{xtable} converts a \code{data.frame} into LaTeX code with many possible options (e.g., allowing for \code{"longtable"} or \code{"sidewaystable"}), see \code{\link[xtable]{xtable}} and \code{\link[xtable]{print.xtable}}. See Examples. Conversion functions to other formats (such as HTML, ODF, or Word) can be found at the \href{https://CRAN.R-project.org/view=ReproducibleResearch}{Reproducible Research Task View}. The default reports generalized eta squared (Olejnik & Algina, 2003), the "recommended effect size for repeated measured designs" (Bakeman, 2005). Note that it is important that all measured variables (as opposed to experimentally manipulated variables), such as e.g., age, gender, weight, ..., must be declared via \code{observed} to obtain the correct effect size estimate. Partial eta squared (\code{"pes"}) does not require this. Exploratory ANOVA, for which no detailed hypotheses have been specified a priori, harbor a multiple comparison problem (Cramer et al., 2015). To avoid an inflation of familywise Type I error rate, results need to be corrected for multiple comparisons using \code{p_adjust_method}. \code{p_adjust_method} defaults to the method specified in the call to \code{\link{aov_car}} in \code{anova_table}. If no method was specified and \code{p_adjust_method = NULL} p-values are not adjusted. } \examples{ ## example from Olejnik & Algina (2003) # "Repeated Measures Design" (pp. 439): data(md_12.1) # create object of class afex_aov: rmd <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise")) rmd nice(rmd) str(nice(rmd)) # use different es: nice(rmd, es = "pes") # noise: .82 nice(rmd, es = "ges") # noise: .39 # same data other approach: rmd2 <- aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), anova_table=list(correction = "none", es = "none")) nice(rmd2) nice(rmd2, correction = "GG") nice(rmd2, correction = "GG", es = "ges") # exampel using obk.long (see ?obk.long), a long version of the OBrienKaiser dataset from car. data(obk.long) # create object of class afex_aov: tmp.aov <- aov_car(value ~ treatment * gender + Error(id/phase*hour), data = obk.long) nice(tmp.aov, observed = "gender") nice(tmp.aov, observed = "gender", sig_symbols = rep("", 4)) \dontrun{ # use package ascii or xtable for formatting of tables ready for printing. full <- nice(tmp.aov, observed = "gender") require(ascii) print(ascii(full, include.rownames = FALSE, caption = "ANOVA 1"), type = "org") require(xtable) print.xtable(xtable(full, caption = "ANOVA 2"), include.rownames = FALSE) } } \references{ Bakeman, R. (2005). Recommended effect size statistics for repeated measures designs. \emph{Behavior Research Methods}, 37(3), 379-384. \doi{10.3758/BF03192707} Cramer, A. O. J., van Ravenzwaaij, D., Matzke, D., Steingroever, H., Wetzels, R., Grasman, R. P. P. P., ... Wagenmakers, E.-J. (2015). Hidden multiplicity in exploratory multiway ANOVA: Prevalence and remedies. \emph{Psychonomic Bulletin & Review}, 1-8. \doi{10.3758/s13423-015-0913-5} Olejnik, S., & Algina, J. (2003). Generalized Eta and Omega Squared Statistics: Measures of Effect Size for Some Common Research Designs. \emph{Psychological Methods}, 8(4), 434-447. \doi{10.1037/1082-989X.8.4.434} } \seealso{ \code{\link{aov_ez}} and \code{\link{aov_car}} are the convenience functions to create the object appropriate for \code{nice_anova}. } \author{ The code for calculating generalized eta-squared was written by Mike Lawrence.\cr Everything else was written by Henrik Singmann. } afex/man/md_12.1.Rd0000644000176200001440000000527314217364040013310 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/md_12.1-data.R \docType{data} \encoding{UTF-8} \name{md_12.1} \alias{md_12.1} \title{Data 12.1 from Maxwell & Delaney} \format{ A data.frame with 60 rows and 4 variables. } \source{ Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 574 } \usage{ md_12.1 } \description{ Hypothetical Reaction Time Data for 2 x 3 Perceptual Experiment: Example data for chapter 12 of Maaxwell and Delaney (2004, Table 12.1, p. 574) in long format. Has two within.subjects factors: angle and noise. } \details{ Description from pp. 573: Suppose that a perceptual psychologist studying the visual system was interested in determining the extent to which interfering visual stimuli slow the ability to recognize letters. Subjects are brought into a laboratory and seated in front of a tachistoscope. Subjects are told that they will see either the letter T or the letter I displayed on the screen. In some trials, the letter appears by itself, but in other trials, the target letter is embedded in a group of other letters. This variation in the display constitutes the first factor, which is referred to as noise. The noise factor has two levels?absent and present. The other factor varied by the experimenter is where in the display the target letter appears. This factor, which is called angle, has three levels. The target letter is either shown at the center of the screen (i.e., 0° off-center, where the subject has been instructed to fixate), 4° off-center or 8° off-center (in each case, the deviation from the center varies randomly between left and right). Table 12.1 presents hypothetical data for 10 subjects. As usual, the sample size is kept small to make the calculations easier to follow. The dependent measure is reaction time (latency), measured in milliseconds (ms), required by a subject to identify the correct target letter. Notice that each subject has six scores, one for each combination of the 2 x 3 design. In an actual perceptual experiment, each of these six scores would itself be the mean score for that subject across a number of trials in the particular condition. Although "trials" could be used as a third within-subjects factor in such a situation, more typically trials are simply averaged over to obtain a more stable measure of the individual's performance in each condition. } \examples{ data(md_12.1) # Table 12.5 (p. 578): aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), args.return=list(correction = "none", es = "none")) } \keyword{dataset} afex/man/set_sum_contrasts.Rd0000644000176200001440000000156314217364040016024 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/set_contrasts.R \name{set_sum_contrasts} \alias{set_sum_contrasts} \alias{set_deviation_contrasts} \alias{set_effects_contrasts} \alias{set_treatment_contrasts} \alias{set_default_contrasts} \title{Set global contrasts} \usage{ set_sum_contrasts() set_deviation_contrasts() set_effects_contrasts() set_default_contrasts() set_treatment_contrasts() } \value{ nothing. These functions are called for their side effects to change the global options. } \description{ These functions are simple wrappers to set contrasts globally via \code{options(contrasts = ...)}. } \details{ \code{set_deviation_contrasts} and \code{set_effects_contrasts} are wrappers for \code{set_sum_contrasts}. Likewise, \code{set_default_contrasts} is a wrapper to \code{set_treatment_contrasts()}. } afex/man/md_16.1.Rd0000644000176200001440000000364714217364040013317 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/md_16.1-data.R \docType{data} \encoding{UTF-8} \name{md_16.1} \alias{md_16.1} \title{Data 16.1 / 10.9 from Maxwell & Delaney} \format{ A data.frame with 24 rows and 3 variables. } \source{ Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 574 } \usage{ md_16.1 } \description{ Hypothetical Reaction Time Data for 2 x 3 Perceptual Experiment: Example data for chapter 12 of Maaxwell and Delaney (2004, Table 12.1, p. 574) in long format. Has two within.subjects factors: angle and noise. } \details{ Description from pp. 829: As brief background, the goal of the study here is to examine the extent to which female and male clinical psychology graduate student trainees may assign different severity ratings to clients at initial intake. Three female and 3 male graduate students are randomly selected to participate and each is randomly assigned four clients with whom to do an intake interview, after which each clinical trainee assigns a severity rating to each client, producing the data shown in Table 16.1. Note that I changed the labeling of the id slightly, so that they are now labeled from 1 to 6. Furthermore, I changed the contrasts of sex to \code{contr.treatment} to replicate the exact results of Table 16.3 (p. 837). } \examples{ ### replicate results from Table 16.3 (Maxwell & Delaney, 2004, p. 837) data(md_16.1) # original results need treatment contrasts: (mixed1_orig <- mixed(severity ~ sex + (1|id), md_16.1, check.contrasts=FALSE)) summary(mixed1_orig$full.model) # p-values stay the same with afex default contrasts (contr.sum), # but estimates and t-values for the fixed effects parameters change. (mixed1 <- mixed(severity ~ sex + (1|id), md_16.1)) summary(mixed1$full.model) } \keyword{dataset} afex/man/sk2011.2.Rd0000644000176200001440000001114714217364040013325 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/sk2011.2-data.R \docType{data} \encoding{UTF-8} \name{sk2011.2} \alias{sk2011.2} \title{Data from Singmann & Klauer (2011, Experiment 2)} \format{ A data.frame with 2268 rows and 9 variables. } \source{ Singmann, H., & Klauer, K. C. (2011). Deductive and inductive conditional inferences: Two modes of reasoning. Thinking & Reasoning, 17(3), 247-281. doi:10.1080/13546783.2011.572718 } \usage{ sk2011.2 } \description{ Singmann and Klauer (2011) were interested in whether or not conditional reasoning can be explained by a single process or whether multiple processes are necessary to explain it. To provide evidence for multiple processes we aimed to establish a double dissociation of two variables: instruction type and problem type. Instruction type was manipulated between-subjects, one group of participants received deductive instructions (i.e., to treat the premises as given and only draw necessary conclusions) and a second group of participants received probabilistic instructions (i.e., to reason as in an everyday situation; we called this "inductive instruction" in the manuscript). Problem type consisted of two different orthogonally crossed variables that were manipulated within-subjects, validity of the problem (formally valid or formally invalid) and type of the problem. Problem type consistent of three levels: prological problems (i.e., problems in which background knowledge suggested to accept valid but reject invalid conclusions), neutral problems (i.e., in which background knowledge suggested to reject all problems), and counterlogical problems (i.e., problems in which background knowledge suggested to reject valid but accept invalid conclusions). } \details{ This data set contains 63 participants in contrast to the originally reported 56 participants. The additional participants were not included in the original studies as they did not meet the inclusion criteria (i.e., no students, prior education in logic, or participated in a similar experiment). The IDs of those additional participants are: 7, 8, 9, 12, 17, 24, 30. The excluded participant reported in the paper has ID 16. content has the following levels (C = content/conditional):\cr 1 = Wenn eine Person in ein Schwimmbecken gefallen ist, dann ist sie nass.\cr 2 = Wenn ein Hund Flöhe hat, dann kratzt er sich hin und wieder.\cr 3 = Wenn eine Seifenblase mit einer Nadel gestochen wurde, dann platzt sie.\cr 4 = Wenn ein Mädchen Geschlechtsverkehr vollzogen hat, dann ist es schwanger.\cr 5 = Wenn eine Pflanze ausreichend gegossen wird, dann bleibt sie grün.\cr 6 = Wenn sich eine Person die Zähne putzt, dann bekommt sie KEIN Karies.\cr 7 = Wenn eine Person viel Cola trinkt, dann nimmt sie an Gewicht zu.\cr 8 = Wenn eine Person die Klimaanlage angeschaltet hat, dann fröstelt sie.\cr 9 = Wenn eine Person viel lernt, dann wird sie in der Klausur eine gute Note erhalten. } \examples{ data("sk2011.2") ## remove excluded participants: sk2_final <- droplevels(sk2011.2[!(sk2011.2$id \%in\% c(7, 8, 9, 12, 16, 17, 24, 30)),]) str(sk2_final) ## Table 2 (inference = problem): aov_ez("id", "response", sk2_final[sk2_final$what == "affirmation",], between = "instruction", within = c("inference", "type"), anova_table=list(es = "pes")) aov_ez("id", "response", sk2_final[sk2_final$what == "denial",], between = "instruction", within = c("inference", "type"), anova_table=list(es = "pes")) # Recreate Figure 4 (corrected version): sk2_aff <- droplevels(sk2_final[sk2_final$what == "affirmation",]) sk2_aff$type2 <- factor(sk2_aff$inference:sk2_aff$type, levels = c("MP:prological", "MP:neutral", "MP:counterlogical", "AC:counterlogical", "AC:neutral", "AC:prological")) a1_b <- aov_ez("id", "response", sk2_aff, between = "instruction", within = c("type2")) sk2_den <- droplevels(sk2_final[sk2_final$what == "denial",]) sk2_den$type2 <- factor(sk2_den$inference:sk2_den$type, levels = c("MT:prological", "MT:neutral", "MT:counterlogical", "DA:counterlogical", "DA:neutral","DA:prological")) a2_b <- aov_ez("id", "response", sk2_den, between = "instruction", within = c("type2")) if (requireNamespace("emmeans") && requireNamespace("ggplot2")) { afex_plot(a1_b,"type2", "instruction") + ggplot2::coord_cartesian(ylim = c(0, 100)) afex_plot(a2_b,"type2", "instruction") + ggplot2::coord_cartesian(ylim = c(0, 100)) } } \keyword{dataset} afex/man/compare.2.vectors.Rd0000644000176200001440000001071214217364040015513 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/compare.2.vectors.R \encoding{UTF-8} \name{compare.2.vectors} \alias{compare.2.vectors} \title{Compare two vectors using various tests.} \usage{ compare.2.vectors(x, y, paired = FALSE, na.rm = FALSE, tests = c("parametric", "nonparametric"), coin = TRUE, alternative = "two.sided", perm.distribution, wilcox.exact = NULL, wilcox.correct = TRUE) } \arguments{ \item{x}{a (non-empty) numeric vector of data values.} \item{y}{a (non-empty) numeric vector of data values.} \item{paired}{a logical whether the data is paired. Default is \code{FALSE}.} \item{na.rm}{logical. Should \code{NA} be removed? Default is \code{FALSE}.} \item{tests}{Which tests to report, parametric or nonparamteric? The default \code{c("parametric", "nonparametric")} reports both. See details. (Arguments may be abbreviated).} \item{coin}{logical or character. Should (permutation) tests from the \pkg{coin} package be reported? Default is \code{TRUE} corresponding to all implemented tests. \code{FALSE} calculates no tests from \pkg{coin}. A character vector may include any of the following (potentially abbreviated) implemented tests (see also Details): \code{c("permutation", "Wilcoxon", "median")}} \item{alternative}{a character, the alternative hypothesis must be one of \code{"two.sided"} (default), \code{"greater"} or \code{"less"}. You can specify just the initial letter, will be passed to all functions.} \item{perm.distribution}{\code{distribution} argument to \pkg{coin}, see \code{\link[coin]{NullDistribution}} or , \code{\link[coin]{IndependenceTest}}. If missing, defaults to \code{coin::approximate(100000)} indicating an approximation of the excat conditional distribution with 100.000 Monte Carlo samples. One can use \code{"exact"} for small samples and if \code{paired = FALSE}.} \item{wilcox.exact}{\code{exact} argument to \code{\link{wilcox.test}}.} \item{wilcox.correct}{\code{correct} argument to \code{\link{wilcox.test}}.} } \value{ a list with up to two elements (i.e., \code{paramteric} and/or \code{nonparamteric}) each containing a \code{data.frame} with the following columns: \code{test}, \code{test.statistic}, \code{test.value}, \code{test.df}, \code{p}. } \description{ Compares two vectors \code{x} and \code{y} using t-test, Welch-test (also known as Satterthwaite), Wilcoxon-test, and a permutation test implemented in \pkg{coin}. } \details{ The \code{parametric} tests (currently) only contain the \emph{t}-test and Welch/Statterwaithe/Smith/unequal variance \emph{t}-test implemented in \code{\link{t.test}}. The latter one is only displayed if \code{paired = FALSE}. The \code{nonparametric} tests (currently) contain the Wilcoxon test implemented in \code{\link{wilcox.test}} (\code{stats::Wilcoxon}) and (if \code{coin = TRUE}) the following tests implemented in \pkg{coin}: \itemize{ \item a \code{permutation} test \code{\link[coin]{oneway_test}} (the only test in this selction not using a rank transformation), \item the \code{Wilcoxon} test \code{\link[coin]{wilcox_test}} (\code{coin::Wilcoxon}), and \item the \code{median} test \code{\link[coin]{median_test}}. } Note that the two implementations of the Wilcoxon test probably differ. This is due to differences in the calculation of the Null distributions. } \examples{ with(sleep, compare.2.vectors(extra[group == 1], extra[group == 2])) # gives: ## $parametric ## test test.statistic test.value test.df p ## 1 t t -1.861 18.00 0.07919 ## 2 Welch t -1.861 17.78 0.07939 ## ## $nonparametric ## test test.statistic test.value test.df p ## 1 stats::Wilcoxon W 25.500 NA 0.06933 ## 2 permutation Z -1.751 NA 0.08154 ## 3 coin::Wilcoxon Z -1.854 NA 0.06487 ## 4 median Z -1.744 NA 0.17867 # compare with: with(sleep, compare.2.vectors(extra[group == 1], extra[group == 2], alternative = "less")) with(sleep, compare.2.vectors(extra[group == 1], extra[group == 2], alternative = "greater")) # doesn't make much sense as the data is not paired, but whatever: with(sleep, compare.2.vectors(extra[group == 1], extra[group == 2], paired = TRUE)) # from ?t.test: compare.2.vectors(1:10,y=c(7:20, 200)) } afex/man/laptop_urry.Rd0000644000176200001440000000603114217364040014620 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/laptop_urry-data.R \docType{data} \encoding{UTF-8} \name{laptop_urry} \alias{laptop_urry} \title{Replication of Laptop Note Taking Study (Urry et al. 2021, Psych. Science)} \format{ A data frame with 142 rows and 6 variables: \describe{ \item{pid}{participant id, factor with 142 levels} \item{condition}{experimental condition (laptop, longhand), factor with 2 levels} \item{talk}{TED talk seen by participant, factor with 5 levels} \item{overall}{overall memory score ranging from 0 (= no memory) to 100 (= perfect memory).} \item{factual}{memory score on the factual questions ranging from 0 (= no memory) to 100 (= perfect memory).} \item{conceptual}{memory score on the conceptual questions ranging from 0 (= no memory) to 100 (= perfect memory).} } } \source{ Urry, H. L., Crittle, C. S., Floerke, V. A., Leonard, M. Z., Perry, C. S., Akdilek, N., Albert, E. R., Block, A. J., Bollinger, C. A., Bowers, E. M., Brody, R. S., Burk, K. C., Burnstein, A., Chan, A. K., Chan, P. C., Chang, L. J., Chen, E., Chiarawongse, C. P., Chin, G., … Zarrow, J. E. (2021). Don’t Ditch the Laptop Just Yet: A Direct Replication of Mueller and Oppenheimer’s (2014) Study 1 Plus Mini Meta-Analyses Across Similar Studies. *Psychological Science*, 0956797620965541. \doi{10.1177/0956797620965541} } \usage{ laptop_urry } \description{ Original abstract: In this direct replication of Mueller and Oppenheimer’s (2014) Study 1, participants watched a lecture while taking notes with a laptop (n = 74) or longhand (n = 68). After a brief distraction and without the opportunity to study, they took a quiz. As in the original study, laptop participants took notes containing more words spoken verbatim by the lecturer and more words overall than did longhand participants. However, laptop participants did not perform better than longhand participants on the quiz. } \details{ Own description: Heather Urry and 87 of her undergraduate and graduate students (yes, all 87 students are co-authors!) compared the effectiveness of taking notes on a laptop versus longhand (i.e., pen and paper) for learning from lectures. 142 participants (which differed from the 88 authors) first viewed one of several 15 minutes lectures (TED talks) during which they were asked to take notes either on a laptop or with pen and paper. Participants were randomly assigned to either the laptop (N = 68) or longhand condition (N = 74). After a 30 minutes delay, participants were quizzed on the content of the lecture. There were two types of questions, factual and conceptual questions. The answers from each participant were then independently rated from several raters (which agreed very strongly with each other) using a standardised scoring key producing one memory score per participant and questions type ranging from 0 (= no memory) to 100 (= perfect memory). We also aggregated the two different scores into one overall memory score. } \keyword{dataset} afex/man/deprecated.Rd0000644000176200001440000000124114415731712014342 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/deprecated.R \name{test_levene} \alias{test_levene} \alias{afex-deprecated} \alias{test_sphericity} \title{Deprecated functions} \usage{ test_levene(...) test_sphericity(...) } \arguments{ \item{...}{arguments passed from the old functions of the style \code{foo.bar()} to the new functions \code{foo_bar()}} } \description{ These functions have been renamed or moved and deprecated in \pkg{afex}: \code{test_levene()} (use \code{\link[performance]{check_homogeneity}()}), \code{test_sphericity()} (use \code{\link[performance]{check_sphericity}()}). } \keyword{internal} afex/man/md_16.4.Rd0000644000176200001440000000507114217364040013313 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/md_16.4-data.R \docType{data} \encoding{UTF-8} \name{md_16.4} \alias{md_16.4} \title{Data 16.4 from Maxwell & Delaney} \format{ A data.frame with 24 rows and 3 variables. } \source{ Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: a model-comparisons perspective. Mahwah, N.J.: Lawrence Erlbaum Associates. p. 574 } \usage{ md_16.4 } \description{ Data from a hypothetical inductive reasoning study. } \details{ Description from pp. 841: Suppose an educational psychologist has developed an intervention to teach inductive reasoning skills to school children. She decides to test the efficacy of her intervention by conducting a randomized design. Three classrooms of students are randomly assigned to the treatment condition, and 3 other classrooms are assigned to the control. Table 16.4 shows hypothetical data collected from 29 children who participated in the study assessing the effectiveness of the intervention to increase inductive reasoning skills. We want to call your attention to several aspects of the data. First, the 15 children with condition values of 0 received the control, whereas the 14 children with condition values of 1 received the treatment. Second, 4 of the children in the control condition were students in control Classroom 1, 6 of them were students in control Classroom 2, and 5 were students in control Classroom 3. Along similar lines, 3 of the children in the treatment condition were students in treatment Classroom 1, 5 were students in treatment Classroom 2, and 6 were students in treatment Classroom 3. It is essential to understand that there are a total of six classrooms here; we have coded classroom from 1 to 3 for control as well as treatment, because we will indicate to PROC MIXED that classroom is nested under treatment. Third, scores on the dependent variable appear in the rightmost column under the variable label "induct." Note that it would make a lot more sense to change the labeling of room from 1 to 3 nested within cond to 1 to 6. However, I keep this in line with the original. The random effects term in the call to mixed is therefore a little bit uncommon.#' } \examples{ # data for next examples (Maxwell & Delaney, Table 16.4) data(md_16.4) str(md_16.4) ### replicate results from Table 16.6 (Maxwell & Delaney, 2004, p. 845) # p-values (almost) hold: (mixed2 <- mixed(induct ~ cond + (1|room:cond), md_16.4)) # (1|room:cond) is needed because room is nested within cond. } \keyword{dataset} afex/DESCRIPTION0000644000176200001440000000645414665110732012721 0ustar liggesusersPackage: afex Type: Package Title: Analysis of Factorial Experiments Depends: R (>= 3.5.0), lme4 (>= 1.1-8) Suggests: emmeans (>= 1.4), coin, xtable, parallel, plyr, optimx, nloptr, knitr, rmarkdown, R.rsp, lattice, latticeExtra, multcomp, testthat, mlmRev, dplyr, tidyr, dfoptim, Matrix, psychTools, ggplot2, MEMSS, effects, carData, ggbeeswarm, nlme, cowplot, jtools, ggpubr, ggpol, MASS, glmmTMB, brms, rstanarm, statmod, performance (>= 0.7.2), see (>= 0.6.4), ez, ggResidpanel, grid, vdiffr Imports: pbkrtest (>= 0.4-1), lmerTest (>= 3.0-0), car, reshape2, stats, methods, utils Description: Convenience functions for analyzing factorial experiments using ANOVA or mixed models. aov_ez(), aov_car(), and aov_4() allow specification of between, within (i.e., repeated-measures), or mixed (i.e., split-plot) ANOVAs for data in long format (i.e., one observation per row), automatically aggregating multiple observations per individual and cell of the design. mixed() fits mixed models using lme4::lmer() and computes p-values for all fixed effects using either Kenward-Roger or Satterthwaite approximation for degrees of freedom (LMM only), parametric bootstrap (LMMs and GLMMs), or likelihood ratio tests (LMMs and GLMMs). afex_plot() provides a high-level interface for interaction or one-way plots using ggplot2, combining raw data and model estimates. afex uses type 3 sums of squares as default (imitating commercial statistical software). URL: https://afex.singmann.science/, https://github.com/singmann/afex BugReports: https://github.com/singmann/afex/issues License: GPL (>= 2) Encoding: UTF-8 VignetteBuilder: knitr, R.rsp Authors@R: c(person(given="Henrik", family="Singmann", role=c("aut", "cre"), email="singmann@gmail.com", comment=c(ORCID="0000-0002-4842-3657")), person(given="Ben", family="Bolker", role=c("aut")), person(given="Jake",family="Westfall", role=c("aut")), person(given="Frederik", family="Aust", role=c("aut"), comment = c(ORCID = "0000-0003-4900-788X")), person(given="Mattan S.",family="Ben-Shachar", role=c("aut")), person(given="Søren", family="Højsgaard", role=c("ctb")), person(given="John", family="Fox", role=c("ctb")), person(given="Michael A.", family="Lawrence", role=c("ctb")), person(given="Ulf", family="Mertens", role=c("ctb")), person(given="Jonathon", family="Love", role=c("ctb")), person(given="Russell", family="Lenth", role=c("ctb")), person(given="Rune", family="Haubo Bojesen Christensen", role=c("ctb"))) Version: 1.4-1 RoxygenNote: 7.3.2 LazyData: true NeedsCompilation: no Packaged: 2024-09-01 13:47:00 UTC; singm Author: Henrik Singmann [aut, cre] (), Ben Bolker [aut], Jake Westfall [aut], Frederik Aust [aut] (), Mattan S. Ben-Shachar [aut], Søren Højsgaard [ctb], John Fox [ctb], Michael A. Lawrence [ctb], Ulf Mertens [ctb], Jonathon Love [ctb], Russell Lenth [ctb], Rune Haubo Bojesen Christensen [ctb] Maintainer: Henrik Singmann Repository: CRAN Date/Publication: 2024-09-01 16:10:02 UTC