From be9c71b57284f480aaa7d1a8248540863969d007 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 14:30:52 +0000 Subject: [PATCH] Built site for AMR@3.0.0.9029: c7b2acb --- 404.html | 2 +- LICENSE-text.html | 2 +- articles/AMR.html | 10 +- articles/AMR_for_Python.html | 2 +- articles/AMR_with_tidymodels.html | 284 ++---------------- .../figure-html/unnamed-chunk-14-1.png | Bin 25575 -> 54352 bytes ...-chunk-21-1.png => unnamed-chunk-15-1.png} | Bin .../figure-html/unnamed-chunk-20-1.png | Bin 54352 -> 0 bytes articles/EUCAST.html | 2 +- articles/PCA.html | 2 +- articles/WHONET.html | 2 +- articles/WISCA.html | 2 +- articles/datasets.html | 4 +- articles/index.html | 2 +- authors.html | 2 +- index.html | 2 +- news/index.html | 36 +-- pkgdown.yml | 2 +- reference/AMR-deprecated.html | 2 +- reference/AMR-options.html | 2 +- reference/AMR.html | 2 +- reference/WHOCC.html | 2 +- reference/WHONET.html | 2 +- reference/ab_from_text.html | 2 +- reference/ab_property.html | 2 +- reference/add_custom_antimicrobials.html | 2 +- reference/add_custom_microorganisms.html | 2 +- reference/age.html | 22 +- reference/age_groups.html | 2 +- reference/all_mic.html | 8 - reference/all_mic_predictors.html | 8 - reference/all_sir.html | 8 - reference/all_sir_predictors.html | 8 - reference/amr-tidymodels.html | 220 -------------- reference/antibiogram.html | 14 +- reference/antimicrobial_selectors.html | 5 +- reference/antimicrobials.html | 2 +- reference/as.ab.html | 2 +- reference/as.av.html | 2 +- reference/as.disk.html | 2 +- reference/as.mic.html | 2 +- reference/as.mo.html | 2 +- reference/as.sir.html | 12 +- reference/atc_online.html | 2 +- reference/av_from_text.html | 2 +- reference/av_property.html | 2 +- reference/availability.html | 2 +- reference/bug_drug_combinations.html | 2 +- reference/clinical_breakpoints.html | 2 +- reference/count.html | 2 +- reference/custom_eucast_rules.html | 2 +- reference/custom_mdro_guideline.html | 2 +- reference/dosage.html | 2 +- reference/esbl_isolates.html | 112 ------- reference/eucast_rules.html | 2 +- reference/example_isolates.html | 2 +- reference/example_isolates_unclean.html | 2 +- reference/export_ncbi_biosample.html | 2 +- reference/first_isolate.html | 2 +- reference/g.test.html | 2 +- reference/get_episode.html | 116 +++---- reference/ggplot_pca.html | 2 +- reference/ggplot_sir.html | 2 +- reference/guess_ab_col.html | 2 +- reference/index.html | 8 +- reference/intrinsic_resistant.html | 2 +- reference/italicise_taxonomy.html | 2 +- reference/join.html | 2 +- reference/key_antimicrobials.html | 2 +- reference/kurtosis.html | 6 +- reference/like.html | 4 +- reference/mdro.html | 2 +- reference/mean_amr_distance.html | 88 +++--- reference/microorganisms.codes.html | 2 +- reference/microorganisms.groups.html | 2 +- reference/microorganisms.html | 2 +- reference/mo_matching_score.html | 2 +- reference/mo_property.html | 2 +- reference/mo_source.html | 2 +- reference/pca.html | 2 +- reference/plot-1.png | Bin 37129 -> 35350 bytes reference/plot-10.png | Bin 78255 -> 87338 bytes reference/plot-11.png | Bin 74249 -> 70716 bytes reference/plot-13.png | Bin 77202 -> 72842 bytes reference/plot-14.png | Bin 95453 -> 90564 bytes reference/plot-15.png | Bin 81118 -> 85075 bytes reference/plot-16.png | Bin 38850 -> 38976 bytes reference/plot-17.png | Bin 55112 -> 55162 bytes reference/plot-18.png | Bin 35083 -> 37343 bytes reference/plot-19.png | Bin 51225 -> 53379 bytes reference/plot-2.png | Bin 62752 -> 59674 bytes reference/plot-20.png | Bin 49038 -> 51169 bytes reference/plot-21.png | Bin 44054 -> 43411 bytes reference/plot-3.png | Bin 61489 -> 58827 bytes reference/plot-4.png | Bin 56174 -> 56679 bytes reference/plot.html | 2 +- reference/proportion.html | 2 +- reference/random-1.png | Bin 34521 -> 32898 bytes reference/random-2.png | Bin 49490 -> 48295 bytes reference/random.html | 34 +-- reference/resistance_predict.html | 2 +- reference/skewness.html | 4 +- reference/step_mic_log2.html | 8 - reference/step_sir_numeric.html | 8 - reference/top_n_microorganisms.html | 2 +- reference/translate.html | 2 +- search.json | 2 +- sitemap.xml | 2 - 108 files changed, 256 insertions(+), 901 deletions(-) rename articles/AMR_with_tidymodels_files/figure-html/{unnamed-chunk-21-1.png => unnamed-chunk-15-1.png} (100%) delete mode 100644 articles/AMR_with_tidymodels_files/figure-html/unnamed-chunk-20-1.png delete mode 100644 reference/all_mic.html delete mode 100644 reference/all_mic_predictors.html delete mode 100644 reference/all_sir.html delete mode 100644 reference/all_sir_predictors.html delete mode 100644 reference/amr-tidymodels.html delete mode 100644 reference/esbl_isolates.html delete mode 100644 reference/step_mic_log2.html delete mode 100644 reference/step_sir_numeric.html diff --git a/404.html b/404.html index 604a63221..f1d2bd2ce 100644 --- a/404.html +++ b/404.html @@ -31,7 +31,7 @@ AMR (for R) - 3.0.0.9021 + 3.0.0.9029
+generated on 10 September 2025.<mic>
columns directly in tidymodels
workflows using AMR-specific recipe steps. This includes a
transformation to log2
scale using
-step_mic_log2()
, which prepares MIC values for use in
+step_mic_log2()
, which prepares MIC values for use in
classification models.
This approach and idea formed the basis for the publication DOI: 10.3389/fmicb.2025.1582703 to model the presence of extended-spectrum beta-lactamases (ESBL).
-Our goal is to:
-tidymodels
-recipe.We use the esbl_isolates
dataset that comes with the AMR
-package.
-# Load required libraries
-library(AMR)
-library(tidymodels)
-
-# View the esbl_isolates data set
-esbl_isolates
-#> # A tibble: 500 × 19
-#> esbl genus AMC AMP TZP CXM FOX CTX CAZ GEN TOB TMP SXT
-#> <lgl> <chr> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic>
-#> 1 FALSE Esch… 32 32 4 64 64 8.00 8.00 1 1 16.0 20
-#> 2 FALSE Esch… 32 32 4 64 64 4.00 8.00 1 1 16.0 320
-#> 3 FALSE Esch… 4 2 64 8 4 8.00 0.12 16 16 0.5 20
-#> 4 FALSE Kleb… 32 32 16 64 64 8.00 8.00 1 1 0.5 20
-#> 5 FALSE Esch… 32 32 4 4 4 0.25 2.00 1 1 16.0 320
-#> 6 FALSE Citr… 32 32 16 64 64 64.00 32.00 1 1 0.5 20
-#> 7 FALSE Morg… 32 32 4 64 64 16.00 2.00 1 1 0.5 20
-#> 8 FALSE Prot… 16 32 4 1 4 8.00 0.12 1 1 16.0 320
-#> 9 FALSE Ente… 32 32 8 64 64 32.00 4.00 1 1 0.5 20
-#> 10 FALSE Citr… 32 32 32 64 64 8.00 64.00 1 1 16.0 320
-#> # ℹ 490 more rows
-#> # ℹ 6 more variables: NIT <mic>, FOS <mic>, CIP <mic>, IPM <mic>, MEM <mic>,
-#> # COL <mic>
-
-# Prepare a binary outcome and convert to ordered factor
-data <- esbl_isolates %>%
- mutate(esbl = factor(esbl, levels = c(FALSE, TRUE), ordered = TRUE))
Explanation:
-esbl_isolates
: Contains MIC test results and ESBL
-status for each isolate.mutate(esbl = ...)
: Converts the target column to an
-ordered factor for classification.We use our step_mic_log2()
function to log2-transform
-MIC values, ensuring that MICs are numeric and properly scaled. All MIC
-predictors can easily and agnostically selected using the new
-all_mic_predictors()
:
-# Split into training and testing sets
-set.seed(123)
-split <- initial_split(data)
-training_data <- training(split)
-testing_data <- testing(split)
-
-# Define the recipe
-mic_recipe <- recipe(esbl ~ ., data = training_data) %>%
- remove_role(genus, old_role = "predictor") %>% # Remove non-informative variable
- step_mic_log2(all_mic_predictors()) #%>% # Log2 transform all MIC predictors
- # prep()
-
-mic_recipe
-#>
-#> ── Recipe ──────────────────────────────────────────────────────────────────────
-#>
-#> ── Inputs
-#> Number of variables by role
-#> outcome: 1
-#> predictor: 17
-#> undeclared role: 1
-#>
-#> ── Operations
-#> • Log2 transformation of MIC columns: all_mic_predictors()
Explanation:
-remove_role()
: Removes irrelevant variables like
-genus.step_mic_log2()
: Applies
-log2(as.numeric(...))
to all MIC predictors in one go.prep()
: Finalises the recipe based on training
-data.We use a simple logistic regression to model ESBL presence, though
-recent models such as xgboost (link
-to parsnip
manual) could be much more precise.
-# Define the model
-model <- logistic_reg(mode = "classification") %>%
- set_engine("glm")
-
-model
-#> Logistic Regression Model Specification (classification)
-#>
-#> Computational engine: glm
Explanation:
-logistic_reg()
: Specifies a binary classification
-model.set_engine("glm")
: Uses the base R GLM engine.
-# Create workflow
-workflow_model <- workflow() %>%
- add_recipe(mic_recipe) %>%
- add_model(model)
-
-workflow_model
-#> ══ Workflow ════════════════════════════════════════════════════════════════════
-#> Preprocessor: Recipe
-#> Model: logistic_reg()
-#>
-#> ── Preprocessor ────────────────────────────────────────────────────────────────
-#> 1 Recipe Step
-#>
-#> • step_mic_log2()
-#>
-#> ── Model ───────────────────────────────────────────────────────────────────────
-#> Logistic Regression Model Specification (classification)
-#>
-#> Computational engine: glm
-# Fit the model
-fitted <- fit(workflow_model, training_data)
-
-# Generate predictions
-predictions <- predict(fitted, testing_data) %>%
- bind_cols(testing_data)
-
-# Evaluate model performance
-our_metrics <- metric_set(accuracy, kap, ppv, npv)
-metrics <- our_metrics(predictions, truth = esbl, estimate = .pred_class)
-
-metrics
-#> # A tibble: 4 × 3
-#> .metric .estimator .estimate
-#> <chr> <chr> <dbl>
-#> 1 accuracy binary 0.92
-#> 2 kap binary 0.840
-#> 3 ppv binary 0.921
-#> 4 npv binary 0.919
Explanation:
-fit()
: Trains the model on the processed training
-data.predict()
: Produces predictions for unseen test
-data.metric_set()
: Allows evaluating multiple classification
-metrics.It appears we can predict ESBL gene presence with a positive -predictive value (PPV) of 92.1% and a negative predictive value (NPV) of -91.9 using a simplistic logistic regression model.
-We can visualise predictions by comparing predicted and actual ESBL -status.
-
-library(ggplot2)
-
-ggplot(predictions, aes(x = esbl, fill = .pred_class)) +
- geom_bar(position = "stack") +
- labs(title = "Predicted vs Actual ESBL Status",
- x = "Actual ESBL",
- y = "Count") +
- theme_minimal()
In this example, we showcased how the new AMR
-specific
-recipe steps simplify working with <mic>
columns in
-tidymodels
. The step_mic_log2()
transformation
-converts ordered MICs to log2-transformed numerics, improving
-compatibility with classification models.
This pipeline enables realistic, reproducible, and interpretable -modelling of antimicrobial resistance data.
+++NOTE: THIS EXAMPLE WILL BE AVAILABLE IN A NEXT VERSION (#TODO)
+The new AMR package version will contain new tidymodels selectors +such as
+step_mic_log2()
.
In this third example, we aim to predict antimicrobial resistance
(AMR) trends over time using tidymodels
. We will model
@@ -679,8 +461,8 @@ amoxicillin-clavulanic acid AMC
, and ciprofloxacin
CIP
), based on historical data grouped by year and hospital
ward.
We start by transforming the example_isolates
dataset
into a structured time-series format.
+# Load required libraries library(AMR) library(tidymodels) @@ -743,15 +525,15 @@ rates by year and ward.
--Defining the Workflow +
+Defining the Workflow
We now define the modelling workflow, which consists of a preprocessing step, a model specification, and the fitting process.
-1. Preprocessing with a Recipe +
1. Preprocessing with a Recipe
-+# Define the recipe resistance_recipe_time <- recipe(res_AMX ~ year + gramstain, data = data_time) %>% step_dummy(gramstain, one_hot = TRUE) %>% # Convert categorical to numerical @@ -784,10 +566,10 @@ variable.
-2. Specifying the Model +
2. Specifying the Model
We use a linear regression model to predict resistance trends.
-+# Define the linear regression model lm_model <- linear_reg() %>% set_engine("lm") # Use linear regression @@ -806,10 +588,10 @@ engine.
-3. Building the Workflow +
3. Building the Workflow
We combine the preprocessing recipe and model into a workflow.
-+--Training and Evaluating the Model +
+Training and Evaluating the Model
We split the data into training and testing sets, fit the model, and evaluate performance.
-+# Split the data set.seed(123) data_split_time <- initial_split(data_time, prop = 0.8) @@ -880,11 +662,11 @@ sets.
--Visualising Predictions +
+Visualising Predictions
We plot resistance trends over time for amoxicillin.
-+-library(ggplot2) # Plot actual vs predicted resistance over time @@ -895,10 +677,10 @@ sets. x = "Year", y = "Resistance Proportion") + theme_minimal()
+
Additionally, we can visualise resistance trends in
-ggplot2
and directly add linear models there:+-ggplot(data_time, aes(x = year, y = res_AMX, color = gramstain)) + geom_line() + labs(title = "AMX Resistance Trends", @@ -909,11 +691,11 @@ sets. formula = y ~ x, alpha = 0.25) + theme_minimal()
+
--Conclusion +
+Conclusion
In this example, we demonstrated how to analyze AMR trends over time using
tidymodels
. By aggregating resistance rates by year diff --git a/articles/AMR_with_tidymodels_files/figure-html/unnamed-chunk-14-1.png b/articles/AMR_with_tidymodels_files/figure-html/unnamed-chunk-14-1.png index a31617e3c21fc09218c1af97c71f4daabf5e64fa..0116fcb2a83f5c78523b139f0b8b4efc201c44cf 100644 GIT binary patch literal 54352 zcmdqIcT`i~_a+>`#zzztJ|faoLKBcGy(uDwD!mt_Nk=+?P%NNSN$4eXkQ(W|C_)S! zX;Oo92muMbguFNS{mq(p=Fgc~@0vGjLEv)F+2@@7>}NlF=koEnhVqqvZvO)Ufv!NF zJ<$e%&S!!^RBe|o09V@I&3p#lF1%D#egeD$uS3PgAmEMK?U|7W2*eUb{-TIk+_C|I z?tmaq9_jj~txx-oWJPTqomv)3Q2gB+gR)YR9H>SXU^Hs3nE zjZkmW+A4l>qyI!SR`0`8!%vo;b}#I-=(Y}S=Ll^*Iq#!I|J4RnhGl!$K1$=^+3%^| z-y@e1qb#4_aIBLN=);mx6xd%N7k{?4|9#&?YDF;{6FEt_>(UO38jf;Rekg>^WseY8 z+F_^I<%_JxvY@svE#?>7-XT*5Az#a5%phf|?ndxLE u`Wn{O~JHH zcVL*!j$FM6rULoYb2h0L)?|Y7YZ4 r zR&mo-A}c6Za?=meb(PJ4tKMJWP5OCNk)uWp?|Y;& _ug(j5)^Q}W-f zC|it}c@=j!D&Z9n04Ep>cU{RN5|7^rWo((SbV?#una55=F3+=-M60TyUAYe3CngQ{ zIQ%@o+0y0U^jZjBhE@K|x@8jUz~$~W-R9wFoY$R;nY6Y+{fT1dX=ml zuWH&i9HFxE`EM)sRopYK;)0Cfvh72>VHuh>_Hgy;Wmh! G4dsu zCgGYr< xD3w$pypP?+hpQe(zlhc0CE>vlQXgIm AfPDK@soutE>-(60Mcs==`ILTFvVlVA?c%8^h<*Nb{Ob_Y0t; z(Dw zkq%$jyE-kMf(2NSr`SlB?E?1~@Y4372t !q*4C1OcfivW*h+ QDLZ8BUG&4O`|Q|lhb7&g=$L8}OD4$7w|I`I85WUDYVR^XgEYWcFm&~la5 z>347#jb^LlaoET! AmQa<8?OVd}`s1 z>1I!pqPzJ|(|#2zSSB>t_iSTTtJ$h>I)!`l*IP3dkRn$A2DDY7guXa*aX$L+dZtzQ z*i}UoE@2c$Oq2>@*K@b=fn(DbJT_7ns@r#od?Oq~SQSExuGPGkl*Y0Ua0&fq8JkqZ zFtd$d9(`d3Aw;i}kof2kpMJ0a)9Dl&*Z4zbG=ui;Q>ZDtF*3QJbx*R@!XKuJ-#wZy zcK$9jmgp=k2Pa|=C3WIh96g+8(CW|g1xAwcT{Wu%UAj(pcNc&6lXAfOsv@$n7TT$S z{zWr+$HEN- +}b`Rh`p5Y?UB)0Rds({l t4wcpGkD^^IUsqg_QS56IN#{z%`UJH+r2)O-@X2avcT6s6N~o+SlQ) zbuE~P=DLkNZYkUw7sy{ra<_tO=1*7@RLb}6$$>x$w2{p(^rXv*dMlmN_Ql6$NTpyj z$Ki_&-<(w8`F&AoG0a1{IFx)~(jN4}O^CUylG!mlEq*P`s8PHNw{XG6r<=ufPGUSK zutIjPQ&dNm( b zKL*){d1?BXq^)`zM*6i*pYwzvKkgK$q-hNI4YSqePOwf6?x `jfr8 C8%`^gFR9sBg2rV3OauXs})C093~qoYi~hY&om znq|0=GaZIHs*y;f8?e)y_m?e>>UWi*nEnoB6`)Ah75|r4XE(q^=4+EhQM{4x$%H4} z0EDny?H3fg5I(Vu%C9fZk&-Rr?_R0dx}p=e>1{I6D^`&1?46%67G PsnOB0i zxKwU<*PtH`eelaZ=Shd2_inD&UoK4^53Cc*u`(4}BIZXAu{Sg`+qs`g=~Si%2ii}# zUPJ;RVm@wrSUmBeKJgfk5V8Xp+TD92i*7pUcU=2eG;g=Y7mf91B};7i?nlZo5{-)3 z(v%CNw)nL<+6)Sg$|ba2Tsd2Ycd4!B4%~}`3=(O_YWXnj+Gb+XGnfrEx`BP>g1*|^ zhFrgKHzKU?hV#A#p$eRV`7Uov5<& KGr<#6 z5i$?;P_-TH+c5#PR@%f{Q00c8p$gZLmj~^yXHff6Y@7GrZFzc_r1g1AFj23dXwfj! zBGz`LBK+|mU0G U|(B$RW;o1{HY;&zuIu zK$cPqHRuMGZ9JV2S9E?p`OgX0q-KaulTUcvcbUzCB^v+9n7FT2@mj4Ot)}fNKH1M% zlcjNDQrg!mQi3yQY*u5H(n#iv9)gH;ziwDYO$$y^uf(FC7yW+nv~M~gUn;S9KXN9W z$a2*MLWtBoeu@1vzX6ex$)CYMKkP% NI5Om+AwJnHYJ3p*AsaNjh1j&&2Mq;Xy zKWEIMTs)A6bxxCdtvx{ooEzhkbF~hOLBfw{u!Zq{ZVWHihh43A+@;*pgj?nEd$e?h z$MMdu8zx`KF1c`KYO1@d @Hx j+ 8x^5mPS`|6oyJ3eoy-K0GT_(Iq@^M(OE-!(n(z2Rm%C%&nY?Sy_5O3 z$xUIKXa^gC)J%X^`}2Ww9QFsddW3q7OvVe32+CPKe4XavAgQr@Qf&f_4VIIq+kC4W z&0~^(d-LQEbr(b7URG?yW_qqEY9Ek5(9BcC<{lPTR?)o$kA-q^y_YX!cIl?33!zbJ zi>E_Lc78=n@sT~^-jQuOj+=P3k<^#MfGi9%N>1j;jA7Fm+tLXLl+NF_3X*#;39JOI z=H<6^zPdsnIkP8P?WEbRoyj4C^d8a$lhz4Jygog1bJ>`(fzGFB#D_?4ld7g5UXDb3 zq#MAjSmV+iQ4Hg)(-s+n$4dbGAzq60M^LAND=8mWS;yp(F$gR5syv9#WSV!)xJ%#+ z5bWtI))}Q4LF+&g?<<#0MN2>Msw6r&Fs(fyHa0;+z4%#mu)YTF;Awdc@oMG*kJAZ$ zAbeZobhySyFVxhy)U{e#P*W0*lIy4zhS-^=Dx_meE`6FS|FdisYePy@nSIx_8=fX+!>bPMv9@*Mw;Ho;3 zY%QEos!o!@Ea!7ukj&i1A~R;qUjZa0h<>Kf?<&s0s74qo)Hq^I+1s=Yv`Jmm02ERY zae#0*u|q^R8Ei&X7xo@aMAfoTRj=-Qmd|MLf44C)Af1Q^Z!KmO*pUS9PHLM?NF&Ea z^7~assCGvn8qc 1jM0tmXx1;g z-OK($NNXLO-+e`h3lp+zKOi8`89Gn1#)f-9H@ttMYZcx1@4lM5ZN8j=eKx v%X+2K+&=jiqaOz7;hqSWB1rXZ9qb#1KJ%cd-ad}-kJ`ynF2n 5Zd%= zBs#e>IT*kgiIX(A+tTka)+EEVrPmFGixTPEV=l?~yAl)Q@*1dkk|on3IxuW2dfVd# zz`8dDWiyw<^r^fyTyoSbo?_cvAVo7F7xUK4DxD6hW0i^8YezMDn;%8Q>LqIoI-ht~ z8@b%Kk|!n3CpgSJHm#YLY!xE{#a)on9+&bS$6*isE=+1 P`bVC}ZhH%JlFs)Wv{!L8Jf23TxPM zU*=4CA0&Q3tq8UOftV*Og#I3jh7gV(1kOC^lrF=oKiv7|C?bW~4TA)_zJaE^QpMRe z_O2>18Hh6-uUnI<91O_pTASq!D;Fbv=vmMBYDGtoPs(+wjUKA3W}cJ`O7EANmTxGR z?~R9nK!$DL%w#oj4TplF%Ji88$bKMA4Dm# |=S50%^7$}&DY1;;QK z%mBfnp)CC|_89D^jz1hJe6V#|tt&2o)AXXb?+}CX67Pu?twv7nmac2wAo>-7*FShe zt!n3gfJuh_r;)ni? }~}FAsys1o&lTpu#x;JiMtA#1?jiy9^%Z3Dg!@SG|tDL z+BqZ3 dWrSKt?T?kFRdP$x22 !?)F|c0T1Z*YTWg3;+Z)WkdF|*IN&J-y)c0Wr#VR%WVAq@FrQkn6m34 z^@S77@F~})*Y)%{B^}bnQm1ZCPG9X_Z>2E*X|DOrI{^Yq4b R5`D5z=IzwGrXSb7eD>O1g0-#7|gWAb7PC3+c zjinsE63C(b<}Qlt-kgU86Wj8Tk>h5aAjIJEKFNY<8`!WcLjwDd)iebt3Lb2GpY$9s zZ7bHf`XOdC-y*pX9chxbfNK0x&n{=0YM#0=b%GzA@RXK)hIn7^gx;QCZ!JECuWP=M zZPm|Dw^rslwQz=Z(5w}5Jq(P$f12HkuF%C~U*GLcQug#G3(%xUb8~d9*6E0IT;YC~ zlU+|ALycBG56~X)o=&n>#UBb(24RywT8SJz4O|8vj!P_hbNao+A6nSiwu3y|k1I)R zU{&FU>05(<`Yd#*mYhCnTCF<2ZJ(juFd5kQ-kBR>F0^!5@Y9H|z-H$QADcR%)wyS^ zbbiOwDB82HfeLh+gQ8crMfl`dk*cMD`ms1;y? 4qMg%v5sJ;Kt&HE}aSR~AI; zx-BxfH4=Hcbvh3ANqv!yEmkLKq;B(lw~>w&AIY~!Sqtmkc0j>I5hf{X!gJoxNq$Yj zyNPX#ON(eS(0nPBl^4jNi_#g7UvPEow}_YCd$PV)bI?5D**N(^dwSjJyNSq=?Gr0m z=^WQ<;;~2j&<%PUw&W$!b>Y}?!~XPJKTa3+vXT$gUme3u;Y55}zOL0pO>5Pntpw!& zVT3EKdLw@hnj_F^ JYyF*xb1R@O#U8B|BLYlwVOt?=nu~NM9kR?0BNi z{3;{tZJP<= C*8wqf!IbGsY1}U$N4{o4(>RIG|v}i`f-9*Gy)Jr`Kd+U^O3wG7%d!8S2b21vx)h zCMRH!8F-PIxiPO#qHZ&?RZ!zl1FeEweGPp=*FAV^Am^db1>i*Y0Htj^XsV*Xg=rU- zq8Qk)%BK6d6= @+G%4%uuozbBK_o$r@GB_lcn2l zB3r0`zNQ;a^%SR&HNn+0P_N7jLm6wO9|XWpW|I7ZoF`&8#1Zoo#SYsuDO&=xo3`Zr z769d)xE#6UKpZ>iP_N`Rq6sc+F$Ki}BZk ~e-1}5C+*(+JsbgD`X)+l0YiBYL; z36wa2xu`vSu%)W)yv=SaO(C0#^Q)m7K$SF;B6O*zG*}V_n_p#!`)%>`?$qr~Oq|qO z6H=|cD*5qGQ-?5Olf7at06gf9oreCxBlj3RpIoO|lqwfpf@m(R`6!Sl6)h(xqAC-! zGWxoqjHz3T5?TfH64;l10u8zUZ(cq2leMm`gia>c09(|2@S!a_n#ExKSGmbbttk$@+*q`NMk0KYRqzoq7{37MHx)%NZvuaujmRHrrJ_6w{ZQwh*yDZ~4 zUrRZoCg0Z<@OT@evK22r5OduTl;!V{Tt=J&y4b)g>QgZJV>D3a^&11^caZ2~%G>1k z;HS?NsK`GIT%vwOeh1yYOL2w#uD}k?1V9M_y?Xb5( X0eC&e`I9q z1#d@~W-JVqHXqOU4frvbj?Moe@9U AK@JlAj4%rp zz~eSa8D^-H%7Q&H72x*Z_nMTq4c)w3=ia04cbzD8#m(R3uBhUR2x`DD3dmR`D3Z@n zBJ fy1Z~cDzUS^7P0)0!PauPxxApr^l%j4hg@xNU&j> z+-heF%r&jB#+ICy=#RJYd#*(faWBA6*0wf|ZMDgGJT^+WIPQ}vqNF9`Y2CorZRdh* zA^vWTytss@;A7x|Xwhq80a#HtM_-iMY512{e`)}CCpZ}qj8rr(9i@uMmM9&2&3vh= z!c;e5(Uo55^|Cqou@C>@sQ5;TesO8BboiwAjQ!w#EAdzJK5VvB9bFw9$t<4m3YBT) z!yo=q>&Ed_&rH7V#;c@l5eTaxeaEyvBW;fe45FQ|2uxpRf_fXGQDt0OyDxPiQ<@XU za_RDDG>degR>EREuYQTIBFZYO(Z&DpvRv}L7{}UxSoijy9;7`~YNY+$@p3D4zxMRN zYjmtKYkfAb;eZM&babm4VU9gUhVY;{`uq}td=~lK;bY{z_DjrtU_UJ%6Z#tPy8Vhc z^Ar{vq-vDVZ(jbgLw-k!6?9dtGx);Iglvh=h&h|_F)cr`$0xWbuJ8#i?n~V_uWFf8 zV )R&|0$Uq8s$W{_0K*-l2i#3u;whpwNCKF!(B <&$44&N^2 zP?B#DB;TM?{zB0aI|IYP0|e@u3%2oHlNLNE^9G+mRXY(e;I?3@sB@xUW|=)_&X3_& z``g3g*zUt&yZhnvwFx}fFP?T=pXXRMe~lO4B3r$BE&>Q$1-h$#Lx I)V>~8nojs^P`4REKRG#CJHsV`bOFkyjUjwX+GyCZxKXg2__|Lx)KsaOA^ z9Zrbvmo8BYH%F5X0JJlj4Seu?V&L-Yi}e^P@TdvgKfPO=AqO@}X_`APj#u%sAGc_E zJ)Sy4EHy`8A`j`2lg&(yO|>}s$?m<`w6z9a1~eYNw7r|YzX#}?;h~F{$9B18$hT&O z0R?c4dwXaL2eDDkJfY(wg5CsxnsVT77Xwn%G31P!Jl>oW9jZAV&5+~Z(QwIG$ }LM8XE2+$UjdT9d93CnT0&qom#U)Rg?^wy8T5y;c7%XSDJXk4HHV zfgSlCE@pGX4ftjEUF9WH%g<(S=A!70 tbj<=&R*-X_hV}6xO!tgO$408 1mRV{XF)gJ^@Fzoo~Y{nxM DUcmwH_2nd+1TCej~#P+2K-fx zEQ*pWx=ysTH6*H@N}kkm6XxFbHO@8|g#(|;2frq}XuGST7D>Wqa~l-&h@<^mxhpIA z2u(JwlB7*rX>y1?H5tZ%Qrt$3>{#>?7P}ELcQJ!XTBef@)iXie{I#ZaHr)x$Lxmpg zp;urQCvyyJCiER1@U*0bK1fUALU=a!gSwrcs-#*+3t+v&KWm$gaf{o?eUnC7i@n_3 z0JZV1X`O|oY;O750w>skhHL$7=o!7XQK~6q_$?*JaCf^q!cSwzfLw1z-?64hE4%aF zajZ<%Zzx~AbuG6KEwdz~ifZ1Q$jau{xV1e>L`=2vbtjgXHSTGOJ5P8%VrZcR4TR1$ zZ%!i?a@v7P478Ma{^2=v4jXZ$5s(ggMGM=hiTozsKl0U6j{te$3O)?7F_II-$a@=a zW-CRAfhF%^dLbH
ZxM8_~}L;B`tas+k?FgwA^0#{#u{-8ObG)Zt7A(F>nq6 zjfy(H?iiPes?`w&i-0YDNLRN&>xp!C0>88*1_{=bnU55S#(i0nhrqMB1A~CQq@wEP z!p$IEyk&JS(RqpHM-yNJE{KH%Hreb%3RpA%(22(?3JehQ6tIm^%Zv3?^27r06BvAF ze?MdBMROP@q V th_A% zNUj7R2`$W$g;pV1bXHdIbuaF*to(wo(*ecBBruf9pOL1AOG%556&XO-!%uEb4q0X@ zmg?hJl-XcAdw>w>nR)|Jpyi@REEv$m*W+s@_xOx;VT+61iThmkycFqR023`1TJ-3c z?a_2Zn%lJ3*t8@jdXJrTEEy2DR-s-4Er>8Sh2^XF!{_vxuTn0h{tlY` XOArdf^ZdmndFbw`op`G%JCGdGhh5y0kBf5Wq0;!g3%4cJ0+}m}rvQG-< zr=&&0DG9&}v9~eZ=mbCqMkEr$7?if&fLmK%4Q6j5y+)0c)uo~2V-G%W`*kPSrP_G% z_~;0}U``jmy16ND?d$H-*zPK`rWGRv%(M@N7$xuuG_F^$MK$eXGy@6CkW+8`M0Gd3 zshY35mgA7P8W@(%-6s$}2Vd>eJO JR(>l{!XAB9H=1-Vqn`Pfak!N z3{DJyI=NAoJQxgyWkfcSo><8M)iD>XW+4C2I+3h}L0<;=a?g1JzCGRpmx49rw|hiL zYwMN$=16di|J3{jP=YLhRp9|^gl+*+-!H#@DO`zNnOURv{zSDSs-!g#!;xs3`1`JO zR|T_iqc?uD#Hi9%3!Vns8}}jq4zRQM$thFHNg&x8XdClJMZw~A$G^b+GW?M6>|bt^ z&b34b!234EBS(+mbnpOYAo?|vE%#2r5n*gOK-4CIClOQ9nCdWQ_aDe=$FYRkY41q^ zL}X+b^tVl-nYUJLD;;_Awt(u)8v_vcahpVE00kS689n+ATEx04@SJ6kZ;udKW@j!! zpe1ie3W)rl8SB%H`(xqR2X8C* ~e008Hj5x>RBvw~b|0UaRv zyQ2HSu@;=+iu{E8YF=WXAm$<$loZZe_A7ot@r>v}p!_eh(7!DKLGk}HlH`A-!SDfS zkp!QA<+frEiPp5hzLz|_ZUNDXYraYr0iYxpRAJ~H&{?jiGPdYSaK`?at!eGDtC^`C zdvpe~N>$2~jfSH&E4WP4UKbJWu6Ptd>Pv7QvvtF%iX0p^?%zMFJ}md1DGZr$Wdy*E z_J~izPcpz3OuObrryAN#{Nu-OofsSLzg6t-pPjwlOifR={0a~j(>`51*xnR9*RHlA ztV;OBf*(wXfLi_RXUPb}iCM+L5im^V?IaSJm8A%!7a|WE0EyqtHKO7riC`SH6M|yD zW`*Ugm}JChLfm)UJ}U8eJk>_V%8n=VE2e7Kh}kal8!SYMc<&0jlLuRd0;LO!k{0LT zW4ORVc7%Bfd$hR@N6vOG*oXB&wT#Uu2MkwnGGJl7J*t_D`jzC~Z+YRu-X5R#*=S>$ zuV2?qYF#WeWDhGD4R@#3n+{jv{7kh2MKOKGh3(q({VK_t1%@X%POMOa8YllJT@@>O zzsO@1?0_PoRHW}$ypDlcO2`NfA rv9j6={fHBEk~XbM*H}U8f%k gCe#x1ZwW@3xW8Z^63J+u>Wh&hUCZ7$A^kM{pA+jI{k z#EmB@Eut%-yXyb3c-0rGAkv!V-bJ$REgG}wExMS;7o(|#OuZ*xM a+@xg>I1OTAf|AA4Ou^v3;IN(isfH%u-3!{MM$6# zua{f6J51ZDD^`5^Pd3~1m-V;u$A``CgG$8zEc>Pm^{bl+AtB9@yScm~U)E^hWcNTI za!6}~(&66>GdmF+sD{Af%F4N4Y}VTYe&ZE*ADsjx*EeU@-$N)<-aA^()}%G8(E-3% zSU0V@XLHyCw4JT7c$+Tf)O!LDqf`GHr(^vKwapIg*4qh|qFrB0bb)y_!UDp^o= z>UKe2mXla&HRIb8J{fINad2# pJ##edC0S-atQx5u5)yI^xNs0=~iOvyiK z0fcDzCfx5v(!AV$fW_WY9lf6t92Lp4`zhDg nDCXWPHM*fK~ ze}C5L+zw$K5PUhC>uTFu)Y_GT*hs99xvS)74rd!t*(vDBffLv&R%$Y=y9dxBb$Cqu zQVQ^_J0scflCW&%i;`?^glX!+gcG*~5>Z>GF<2|7)Tfc$NRw!sBCM&_#bs-7*zGj4 zhoLXM?D2!pzx0l7Z%6P p1|LG7l1xbxP#)PG _##-9&h{(IPH| zt={Ezf$aF^T}X>$^}AlftB*4B>*08)pDgs*282TnT z!(L9aW>c2Exbtx *LN>2L0C;+QUHBQn(O7(I!TXA6JD~X12 z!gk8UpfLbA`)vOB$45S82QGQL(+0qkS_* zlTZ$pcFen~swKnAbIPyGdi>uLtJW}i*#lzKuaYj4SE6C&2f3i1j#xK}U08)Y(5$G{ zU;9k&_o$1I;xxX82PoO9tYPVEGxaU =mX4bjfeYU{Kb7fTk=+~N ){f9wD#?}MRlVBs5Eu+Ga_Na~43NUHRyF#3C4>0O07Rkv zae3A&4n`H>xUXLs@=T$|N5-1!$y{Jb>$>5uJln&$z7G0RJC#l|M_csug3@K!6ffM~ z?gL-4{hRj`-P#_D3VsnUKziDYmOyP2_E_R8eBI$OT;pE;$-+Jmt& zV|2p7JmkXIfVqNmw6W24M*_%^pm7<0 o~hDfuyr9a3_JBV*pqOP6jvg>yVzS|bqt8W2{i%DA9XEc;ywAY_!Z4?Wv)X~ zMZo5s6XTID5VVqGrj<>~*Uy%zyb6p&ad&|&)Ce7>o`byZ3qr*@JEfXkTm?O5p{o3V zlQ %z0;yqry?SFO-hdeTOHn&O4_Xiw6Sz|f&_#KP(QX~z{TLO( zRPKROc$GumM(jNS&EnlWAZjhfWp)zl*NTpJ?pp&kLAEhMnIRj7%}4oQwr7M8Q`oN1 zxIu|(_%1}FB)%ai{KU(c7?l1s%MsyjRdHa&=zBoxPj~i#o;p1ELc`_)0;Ngl18?>K z3YQnwA<07+2GbVBLtkmjh>jnR(zrBA0S?8^1@!^JUG*0V1J0qdpcJp8watZLJ=Y#U zsj69EUGsWU;Q=T>s&?rB?UAGXDInJ*+5sw?k-167m69wAGEH`ZFWC0;aKZR7W7-L1 zb;p(8qoZSO2G0pq Je7z)IiqGb7J@=rN*>61tNOxw8%uwI|rd8F{0n^fCO1+?QY7KZ+<>vBd zu%>3LCdar5ua|Ck(;dt*5Tv!0ek)P+Ybh7^IW5Uc=CrzW)zZbddMyzm2VY=kWR|&S zbdsA3ND3}4K&b}w)BAY=l`3#ZI3AA|#*4}xz?ts+-R{#BiYq-ZAm7 5>ZB#Ysp3vKDydz>Gv|8Rp9o7Z8qQ)0p `VW7u+k6d=|co7Ix7bQU;(=aK$r8ntWzG>qHq z|C>f3xOKp>);6WX%{mL!_IQ8i3t=tr3LsG~DsKa-@;{Nj9dl09&C-9T3lEt|UzjG- z=+7}JI|)YOC*#6-ojA0e)(re>mNTSYsPXs#E0O_NYB2S!H&mA2?Ri@>LPlIMZAJ5y zsNKw5Ul`mqhNoJX=TuC!i_Ojr*J|swl6*M4Op8~l1BQV-($9(hAyxV;|Mt?`Jw;=2 z;MGeuPK>&4l>ah6FH%5MNuEC!&hL>Wap&{Oc_oy=^G9Dk+{r$z>yx1M<*B(eA^br> zV**M4?jM7u+2A)nEbWs_CaUcFj)>(x6N>f|RhT}Flzp7vp2z5n9llwf`ikTs&; EphqqHqVyp(UWBrs8zz{eXa{E=< z8%4Mn=etW&=chW>$L&O1_CM;*(L9!5{dE`rkXa)7T8x#R=~LB1sh4Tz9bNJaO%W#E z un!SF#5O`kFnvx%y^Es*!#CC6h=6jJj>W-V(cmG%R%^6FC^F0}@ z1{xnZ&Q^K!-a|oE+rq&q;KIS(KZ-Z`ens^Ornh0f{{f7lxZLi>r(EWVXP|56dwIZd zQPY>NV3@o)FeLd4V9f~lcO7ioSP06)1n0=@cH=Hm%{rsVe4hHX%-z6vZ5-u?%9WDF zP{pgh_y21gtdmCqTqw_MN}>(lWe_Pmjq=o=p)~#Hq_RjkSc1ClO-eLJT-TV+{nk`% z`&3hc%9*)c3T0rKLI2#P+^5{XF<;+f;dv)s;%%F!Wnz^9zngW%NNKJvQkACiRnSJQ zT5`pG)XLvwrgl?SffqS=o?@>~X%y~29-9gAJPor7!T&U8522&pdh#^dFCk&nvCz}J z1EFf1B-bobyZ(2m>?}PqT=W`!gySoRy7!o e3J%W{^3hkqQq7M)iw zDPNzXxwmOOO{(?b2(1jRd}R;&kU-#jnWR*HN^ ZPFF9S^UP~tc0l2m#-;<|jUwex*j8>f#@byxYj zg3vE~{|wkwlpUPhc}{D1@F}-NSLTn_tYh0)o!9S~VR~DIG>WFOqOp*7zIU=V+*L|B zUM}AMmg2~BGozQQ>Mx)jDh%KK`ChcQWf+i<>%{W&KpgP=PhHZ5f8N(pSiC=2nOJ5& z|KTFtx0p*_n$Pc(QnU}BEb+6(Tf90u1W|fxAxh|G(O!md-Kjn h3#1r`4Z%lM5_Q) 5-{kRZt@+F9gH$}lY_)wO=sV3uxt?)@=W74s zOPk%&VY#KM%8`7&FV2t2HAXTaEjlm9C$@x6X4QliTGcH6!q+TjYUOZSZ%sZTBM!>_ z?oVjC&&;8K-}0wnf1|itE$0F_on0@=WPFvaQBh5N;C#*;;S-&8=iQ(5Tl4B|O-+^0 zh=tC*Q}zn?{_9zQlour8@Q|y$c?}^rOurPWYD1Orj#2MYf79#lf21{k1vX00RJME5 zj_EeX-g =EYv*nM>zT^USxcPF~Fz (4z;ON|TrpP+fArTF?= z^EUIHQH>IteA+H9Molc$#nE@aGq&Bu01u2^roA@D_wvQf4(cF#M@RqLzbIZYNqeu? z1#0kJad38aW&mZ}0)CJ7vx~ie0DAvOhQ|l@6fXUSNpCi7$NSmAFGO&tCPbDM78 ;s4s)~Fy59gY=CGW7XCn_NGc0wZTBi$r{`tO_< z8h|LGrSj4{W)F6C={$S@ ljx8jZo$=x#X9VSr8F>~_h2eK? zxq~@U++qPA#`n`Pbp^CJ+DVV@vMO2YPB@#)(m!6L|LmBP=XEu{uh?+FS6W1oqyOY= zmO_%m`7p43w>sA6p?cJIl4+1|vH30K4_s8+!T(8fkF(TtaEeuYC&GE7#1Dg#q%(G% z=rRgU0PjY%U-b{k?=+%k$}cba!u#hgWv_ziBv-{np){&3R^zVyL2bE=pV?ze2}Wo3 zY>MPB4^Z4nc8P`}a!bd5(;@SJ{ZUN0eKr4WA{7bp!KbB8$CoNrKw*(WWwG&<3lUt) z4>fw=cV<(Yv*Lk*D^;3?u)xl3OQi-W~C}TRp4pM*jN7g|q;rV?FO^-usl{{wxHQ(7(&>XQG9P1U++L>~u zkVeQ7 +;c}T{YM=+UxGu}vs^gx z2&O=~IreC^>59`ke4lv6*0S+R6i^z$Mh8+s8#;Iqx65=s;NOE7Pf}2DYKWc44?q)r zhQHjoXL&vEXV8tc@FyCaZhWyq_NdslkMDf%v7=>xWW@W@=BDNY`xi$$eJ9`kf-eg5 z@}Fo#NJEt@twdDf&5XOrmyc*hqXNq)W)P29AwMm(_{y>hf8PwhQgB1s`|fwEyFC;W z#ZYJ3fZ*qK@#T&3D&5~uLrs4`FFiv{&JN&05)f2q-D-Iy;l<9*fczqu6BZo{zM|6c zQd&J~OsgbAgJu5G7OYKOVfVwb*~i~}kL%tZmIf8%1qkJhiZ8_(o*|=@D}qO2Mr$PS z%S9sF>XIo0e&foO?qJ>!UY>aG(1v-4-0Pvb8qI}~w)$)RdAg@`Ax7`|ijzfGvjQIf z-5Rir_M!>d |0`_Jq@OZ`FT<5TFUUtADsDJ>dH{m}H$(1SXU z!17%%;tN!)V-B9CeKv_G*hc6)ny80Q_a6v426EkzL |zK*rajwiyhWNWxqR z%KIgOfb60Qw8z;F?*I8kPPntz9v@uK+Mre`9UC-7_BD0n5W>%p^>g$A5aBV!6Nw;Y zr(9R|KfNw}@nHMy_tzwS=cehI`fLM R2%&)LmQ#Ud=j+D=| ClgE`)16`$#~@(?KG6iob1^Yzo-ucv;Mr`td@J){mnxA z_x cNclq*d1}*G)ES}j9; Dbe3@=msTFwWQHuv_cl_^2ZQ)H zjBYvj?H8!PhiSt*>_Rd?^1nx=y|ZdOq=foFSB=Mb&N7jyLSX>ye*r7@zc9gVZ5F&y zk!Brex9pn$zG522d~gmkSBK5@Jm$^X22+ZBXsRz7Gx^vQZ|K38=bn76EPKH33LRI? zBAxNsNriNu2kMxKPjin*xxd_a)UUYSB|QDWK $EEk1^PSS2 z3vh$8Q52tBpDL)rMSay>>Szy`g^-%tc-Mk!nxVe;zBo?gT#!h+cGYen#arbviYwIU zT{IKV&B^V{56BSIZh`6q&xBda*##drNVafnOnNdv;O^HRpW8UMVZFCbdRdUDo_);@ zgr=G-Xnv|7fo$7)*RaeJk7B=RdtHC}Y5B^V#=lO^6F N3q#_PinvP`odi`cHw`5f809DHIJvYRTd?`ck$g6o$2d&juB}&b1?C% zWF`k>t&~ScU#R}YgN{zd66g!&yGWWIDyh-EkC9Y;VEQi6YPlzcyV@xXE$?r^=Jm*H zs2cfy$a?FrsJf_qc!E+=K{})*1nCYz3F#7$loXH#k!Btci;(V;lJ2e%q@ -8^$nSJ(Id*!|Eb LluidKqpk1YRsc`#?f3mAbgX$du}Mo+CUi0@QobNa+u`4V z&tqQ{H;T0hM|9!MZ?22J6Cyf=X*UA}AVcUEuEaG~EbRWL0K?Wmn&1E>Vo0L7vAJ?9 z|5p9-yz9gpB&2=lB^FVm)j9Sc21VSeQ~BN```zn*yXV`9J$r+tBXE#<@I0r zbQqxJ1inkui+9iTPU#2DRbuU6l^h~#BH`FBatK4_{p2U}Oz7fE^Hf*6RY&}A+$TqE zyH}v)=E$hjyTqjP?G9Y!i`hWL!THoK04heY|AK=H^$)v%Bj6+8bm>Hn<{Mk#>b94T ziDb0WA@u*%nN2^WA4qSjkNDlMA&F$de*$7c6jgEd_*)o %w%)O~3203v?0#U2wKf>nfm6mY)}Ywk&lg{^{SwM07dEQH{POo4;%J&@;bL zm9#Q?|B2pp-v%-eC@4i)RA0lJaed+petN5SetcpDaV%OpWMOb*7&Vm1^AV%(HB;$( zO(3%K@xN#joQQaYiOuwG4Qqbe6FY**=9ft2f(gHX&pWfWsq`JJ4`ecW{x1pwKkQNs z7kegao|3+Jp_Z*ZDH+%JuU%! -zd33T66qA z=DsO~9MW@BJ?l!5Sr6~XU|c~i5DB}~EL^XZKmDdA+`y2wApenhi@Hy6vxhClU&Vsd zTyDDcWS2%H=O*>AXZA7(nEfKbSDOQTmL{JpW;|i9_3oeWU7zy|3@b<{By$KI7U*|q zV?of*^TCgCx`)deJ+%LCV)$C0B>g(&y8yGIrip@_;2h3$7YJ(PGgn+P@sB@fMc(-> z%`0=(M)K! I| M$}^naax?7Qu3!&$-b+8eb%Fr#CB{-nGW z`pePp%`UHh4?EGS9G1{`!0CNx^fX7%j-T956 M5!Tl=0#@uw0_M0aRQuHN;nNm_rA7^g?wRKEtEA5uaW-ojcKh9w^7T@X9i`Lbqf zk`DR*>$koEztsTDk_##aC4`$`%|aU)eErOmfRS(l*LqX7vf5&SH7L;jYN-KO@MW zRlW@70moV&goxK@GqtZsYaS*7`>&b4*^^&H`-80ai2B2@lqd&@1-eY&1mv`G3SlcS zSGJgH`cW0eAPOSF+;stY3u-5pcRv# -)RUXsxp0h-$|HFa-bb zz0W-f(@yu=&+^ oWEyy z#cTlgDFFD_?GwozUk8H&UR(B|kG+uD=4v$yIvg^M4`dqbbC`xtu`4{S+ZIK#Z(zqm z1dxS?rIQMXK?1^WTg{Qn$Yp@qk(I45nI%IP@O7GI2^v#GujsN}aOr!$N?d$uV--(P zyTMBaV_j|&fFleCz9&6zfgzFdh`HkuXO|atoxgS`fPu#^Z6O9gY_2x?!huPSv?;n4 z=mQvB={Cb~^ME~Ku&>$wBXXZvaZo*mQ}RT9KD;+1&GJucAkI4qfVaJ#EFg$~hNnd# z>4lm7&h_I nH za_acAvW3iFWnyJc!aIDX6O)n=8bqoLJ5(K#6+xP(*wdq;2@@4||6yR0>72N~ iGq4ra0K#BM#CjgdM`JZa0i4 z ;#<6s8ooXrOT@^kf|Zm`x)YlH)b;0{T1S?taGl#q~-9s*E)Z) z^T?MPsEH0P{axXjwJucc>B{fA