From a61d5b0454b27f9f17155b7540697520b0050e35 Mon Sep 17 00:00:00 2001 From: Yanchun Bao Date: Wed, 22 May 2013 00:00:00 +0000 Subject: [PATCH] version 1.0 --- DESCRIPTION | 19 +++ MD5 | 24 ++++ NAMESPACE | 2 + R/FDR.R | 26 ++++ R/IPE.R | 48 +++++++ R/NBlike_phi_offset.R | 12 ++ R/enrich.mix.R | 299 ++++++++++++++++++++++++++++++++++++++++ R/mix.R | 104 ++++++++++++++ R/mix.joint.R | 278 +++++++++++++++++++++++++++++++++++++ R/mix_offset.R | 72 ++++++++++ R/mix_single.R | 69 ++++++++++ R/mix_srsp1.R | 220 +++++++++++++++++++++++++++++ R/mixfit_offset.R | 72 ++++++++++ R/mloglike_offsetNB.R | 12 ++ R/mloglike_offsetpois.R | 12 ++ R/pprob.R | 26 ++++ R/pprob_joint.R | 35 +++++ data/p300cbp.1000bp.rda | Bin 0 -> 159992 bytes man/FDR.Rd | 33 +++++ man/IPE.Rd | 33 +++++ man/enRich-package.Rd | 36 +++++ man/enrich.mix.Rd | 114 +++++++++++++++ man/mix.Rd | 83 +++++++++++ man/mix.joint.Rd | 106 ++++++++++++++ man/p300cbp.1000bp.Rd | 33 +++++ 25 files changed, 1768 insertions(+) create mode 100755 DESCRIPTION create mode 100644 MD5 create mode 100755 NAMESPACE create mode 100755 R/FDR.R create mode 100755 R/IPE.R create mode 100755 R/NBlike_phi_offset.R create mode 100755 R/enrich.mix.R create mode 100755 R/mix.R create mode 100755 R/mix.joint.R create mode 100755 R/mix_offset.R create mode 100755 R/mix_single.R create mode 100755 R/mix_srsp1.R create mode 100755 R/mixfit_offset.R create mode 100755 R/mloglike_offsetNB.R create mode 100755 R/mloglike_offsetpois.R create mode 100755 R/pprob.R create mode 100755 R/pprob_joint.R create mode 100755 data/p300cbp.1000bp.rda create mode 100755 man/FDR.Rd create mode 100755 man/IPE.Rd create mode 100755 man/enRich-package.Rd create mode 100755 man/enrich.mix.Rd create mode 100755 man/mix.Rd create mode 100755 man/mix.joint.Rd create mode 100755 man/p300cbp.1000bp.Rd diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100755 index 0000000..63f3c5a --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,19 @@ +Package: enRich +Type: Package +Title: An R package for analysis of multiple ChIP-seq data +Version: 1.0 +Date: 2013-05-22 +Author: Yanchun Bao , Veronica + Vinciotti +Maintainer: Yanchun Bao +Description: enRich is an R package for joint statistical modelling of + ChIP-seq data, accounting for technical/biological replicates, + multiple conditions and different ChIP efficiencies of the + individual experiments. +Depends: R(>= 2.14), parallel +License: GPL (>= 2) +LazyLoad: yes +Packaged: 2013-05-31 12:00:04 UTC; masryyb +NeedsCompilation: no +Repository: CRAN +Date/Publication: 2013-05-31 14:22:44 diff --git a/MD5 b/MD5 new file mode 100644 index 0000000..ed43482 --- /dev/null +++ b/MD5 @@ -0,0 +1,24 @@ +73191c776a0d570e7d09da07f3b57729 *DESCRIPTION +8ccb633701f57d5020c962e5a68931ab *NAMESPACE +c2d161145fe5f54aaf850dd0b86b24b7 *R/FDR.R +0de35362a72a63dae57766d58329d476 *R/IPE.R +b9b79fd941de0876c76cfeefe19deac1 *R/NBlike_phi_offset.R +1e36698d0ceaf5bfe3174e2267056c9b *R/enrich.mix.R +a8efc832733c327427778a866133bb17 *R/mix.R +b6b15cddafa3097b4c1dbc74d5a11edf *R/mix.joint.R +00f90607b7e2d8aab26eeaeeae286d40 *R/mix_offset.R +3e673636f87af251956b7b63ee1b5a16 *R/mix_single.R +041321ec3173ac886ef5efe78023bbff *R/mix_srsp1.R +00f90607b7e2d8aab26eeaeeae286d40 *R/mixfit_offset.R +257d3aaf3ebe645a537cc452c0d2c639 *R/mloglike_offsetNB.R +cb8c5f8392eb06ee89f5df9750d90fac *R/mloglike_offsetpois.R +9cb4b5212ff81b46d91c07733506e438 *R/pprob.R +76e34f89608959cbe3c821ed057edaf0 *R/pprob_joint.R +91637870bd91aa78972be5d2e3e937e9 *data/p300cbp.1000bp.rda +b4a38667ca28859ecb5a237bd01ec1c5 *man/FDR.Rd +0dd607094201c7fe4e65b060045af624 *man/IPE.Rd +35b21f3f1aa099551c359db4b149c89f *man/enRich-package.Rd +8a6580e5cce23f7580da332410d93852 *man/enrich.mix.Rd +28f3499c42b1c79e62b739a03ceb1d84 *man/mix.Rd +78b118a4cb8bd7f631349bc4d81d9a1c *man/mix.joint.Rd +494ad59e5cb59d8c588bde57d032c170 *man/p300cbp.1000bp.Rd diff --git a/NAMESPACE b/NAMESPACE new file mode 100755 index 0000000..e6bcb48 --- /dev/null +++ b/NAMESPACE @@ -0,0 +1,2 @@ +export(enrich.mix, FDR, IPE, mix.joint, mix) + diff --git a/R/FDR.R b/R/FDR.R new file mode 100755 index 0000000..c1a35eb --- /dev/null +++ b/R/FDR.R @@ -0,0 +1,26 @@ +FDR <- +function(prob0, cr=0.05) +{ +## prob0 is the posterior probability of X=0 + S=length(prob0) + Pvalue=prob0 + sortPvalue=Pvalue[order(Pvalue)] + positionp2=order(Pvalue) + newPvalue=rep(0, S) + positionp1=order(Pvalue) + tempp=sortPvalue[1] + newPvalue[1]=tempp/1 + for (s in 2:S) + { + tempp=tempp+sortPvalue[s] + newPvalue[s]=tempp/s + } + newPvalueback=newPvalue[order(positionp1)] + tempX<-ifelse(newPvalueback<=cr, 1,0) + cpoint=sum(tempX) + T_BH=ifelse(cpoint==0, 0, sortPvalue[cpoint]) #Threshold + tempX<-ifelse(Pvalue<=T_BH, 1, 0) ## Consider the tie + FDR_t=ifelse(sum(tempX)==0, 0, sum(Pvalue[Pvalue<=T_BH])/sum(tempX)) + result<-list(X=tempX) + return(result) +} diff --git a/R/IPE.R b/R/IPE.R new file mode 100755 index 0000000..ed59a02 --- /dev/null +++ b/R/IPE.R @@ -0,0 +1,48 @@ +IPE <-function(para, method=NULL) +{ +## para is the fitting results of one experiment +## method is "Poisson" or "NB" + + #1. Check data, method and initialpara are consistent + if (sum(method=="Poisson")+sum(method=="NB")==0) + { + stop('A method must be given, either "Poisson" or "NB"!', call.=FALSE) + } + + ## we need to use interpolation since the discrete distribution will give some larger mass on some particular value + ## we interpolate between all values below cut + T=10000 + cut=100 + n=500 + sum1=0 + sum2=0 + if (method=="Poisson") + K=4 + if (method=="NB") + K=6 + for (i in para[K]:cut) + { + if (method=="Poisson") + { + X.bg<-approx(x=c(i, i+1),y=c(dpois(i,para[3]),dpois(i+1,para[3])), n=n) + Step<-X.bg$x[2]- X.bg$x[1] + sum2=sum2+sum(ppois(i-para[K], para[2])*X.bg$y)*Step + } + if (method=="NB") + { + X.bg<-approx(x=c(i, i+1),y=c(dnbinom(i,para[5], ,para[4]),dnbinom(i+1,para[5], ,para[4])), n=n) + Step<-X.bg$x[2]- X.bg$x[1] + sum2=sum2+sum(pnbinom(i-para[K], para[3],,para[2])*X.bg$y)*Step + } + } + if (method=="Poisson") + { + sum2=sum2+ sum(ppois(c((cut+1-para[K]):(T-para[K])), para[3])*dpois(c((cut+1):T), para[2])) + } + if (method=="NB") + { + sum2=sum2+ sum(pnbinom(c((cut+1-para[K]):(T-para[K])), para[3],, para[2])*dnbinom(c((cut+1):T), para[5],,para[4])) + } + IPE=round(1-sum2, digits=4) + return(IPE) +} diff --git a/R/NBlike_phi_offset.R b/R/NBlike_phi_offset.R new file mode 100755 index 0000000..cde22e1 --- /dev/null +++ b/R/NBlike_phi_offset.R @@ -0,0 +1,12 @@ +NBlike_phi_offset <- +function(para, data1, ppr1, ppr0, mus,mub, k=k) +{ +#Log-likelihood based on mixture of NB(mu, size), maximised using optim() function + N=length(data) + phis=para[1] + phib=para[2] + temp1=sum(ppr1*ifelse(data10, 1, 0) + exp.label=colnames(datacount) + if (is.null(exp.label)==1) + { + exp.label=paste("Experiment", 1:Nexp, sep="") + } + ppx1=matrix(0, N, Nexp) + colnames(ppx1)=exp.label + ppx0=matrix(0, N, Nexp) + colnames(ppx0)=exp.label + X=matrix(0, N, Nexp) + colnames(X)=exp.label + IPEv=rep(0, Nexp) + names(IPEv)=exp.label + diffdata=NULL + diffprob1=NULL + diffprob0=NULL + diffX=NULL + diffX1=NULL + diffX2=NULL + if (analysis=="joint"&joint==0) + stop("You are using the joint method but you provide the separate modelling results. Please set analysis='separate'", call.=FALSE) + if (analysis=="separate"&joint==1) + stop("You are using the individual models for the joint modelling results. Please set analysis='joint'", call.=FALSE) + if (analysis=="joint"&all(summary(factor(rep.vec))==1)) + { + warning("No replicates used", call.=FALSE) + analysis="separate" + } + if (differential==TRUE&length(diff.vec)==0) + stop("You must give the diff.vec vector, for detecting differentially bound regions", call.=FALSE) + if (differential==TRUE&any(diff.vec>2)&any(diff.vec<0)) + stop("Only 0, 1, 2 can used in diff.vec: 0 means not in differential analysis, 1 means condition 1 and 2 means condition 2", call.=FALSE) + for (i in 1:Nexp) + { + temp=pprob(datacount[,i], results[i,], method=method) + ppx1[,i]=temp$px1 + ppx0[,i]=temp$px0 + temp1=FDR(temp$px0, cr=cr) + X[,i]=temp1$X + IPEv[i]=IPE(results[i,], method=method) + } + if (analysis=="joint") + { + if (length(rep.vec)>0) + { + rlist=factor(rep.vec) + rlevel=levels(rlist) + rlevelvalue=summary(rlist) + srlevel=subset(rlevel, rlevelvalue>1&rlevel>0) + srlevelvalue=subset(rlevelvalue, rlevelvalue>1&rlevel>0) + srindex=matrix(0, Nexp, length(srlevelvalue)) + for (j in 1:length(srlevel)) + { + srindex[,j]=ifelse(rlist==srlevel[j], 1, 0) + data1=NULL + para=NULL + for (i in 1:Nexp) + { + if (srindex[i,j]==1) + { + data1=cbind(data1, datacount[,i]) + para=c(para, results[i,]) + } + } + pptemp=pprob_joint(data1, para, method=method) + temp1=FDR(pptemp$px0, cr=cr) + for (i in 1:Nexp) + { + if (srindex[i,j]==1) + { + ppx1[,i]=pptemp$px1 + ppx0[,i]=pptemp$px0 + X[,i]=temp1$X + } + } + } + } + } + if (differential==TRUE&all(diff.vec<=2&diff.vec>=0)) + { + csindex=rep(0, Nexp) + diffexp1=which(diff.vec==1) + diffexp2=which(diff.vec==2) + diffexp1.label=exp.label[diffexp1] + diffexp2.label=exp.label[diffexp2] + diffexp1.name="condition 1" + diffexp2.name="condition 2" + if (analysis=="joint") + { + csindex=rowSums(srindex) + } + diffindex=ifelse(diff.vec==1, -1, 0)+ifelse(diff.vec==2, 1, 0) + diff1px1=rep(1, N) + diff1px0=rep(1, N) + diff2px1=rep(1, N) + diff2px0=rep(1, N) + if (sum(diffindex*csindex<0)>1) + { + data1=NULL + para=NULL + for (i in 1:Nexp) + { + if(diffindex[i]*csindex[i]==-1) + { + data1=cbind(data1, datacount[,i]) + para=c(para, results[i,]) + } + } + temp=pprob_joint(data1, para, method=method) + diff1px1=diff1px1*temp$px1 + diff1px0=diff1px0*temp$px0 + for (i in 1:Nexp) + { + if(diffindex[i]*csindex[i]>=0&diffindex[i]==-1) + { + diff1px1=diff1px1*ppx1[,i] + diff1px0=diff1px0*ppx0[,i] + } + } + }else + { + for (i in 1:Nexp) + { + if (diffindex[i]==-1) + { + diff1px1=diff1px1*ppx1[,i] + diff1px0=diff1px0*ppx0[,i] + } + } + } + if (sum(diffindex*csindex>0)>1) + { + data1=NULL + para=NULL + for (i in 1:Nexp) + { + if(diffindex[i]*csindex[i]==1) + { + data1=cbind(data1, datacount[,i]) + para=c(para, results[i,]) + } + } + temp=pprob_joint(data1, para, method=method) + diff2px1=temp$px1 + diff2px0=temp$px0 + for (i in 1:Nexp) + { + if(diffindex[i]*csindex[i]>=0&diffindex[i]==1) + { + diff2px1=diff2px1*ppx1[,i] + diff2px0=diff2px0*ppx0[,i] + } + } + }else + { + for (i in 1:Nexp) + { + if (diffindex[i]==1) + { + diff2px1=diff2px1*ppx1[,i] + diff2px0=diff2px0*ppx0[,i] + } + } + } + diffprob1=diff1px1*diff2px0+diff1px0*diff2px1 + diffprob0=1-diffprob1 + temp1<-FDR(diffprob0, cr=crdiff) + diffX<-temp1$X + diffX1<-ifelse(diffX==1&diff1px1>diff2px1, 1, 0) + diffX2<-ifelse(diffX==1&diff1px11&rlevel>0) + srlevelvalue=subset(rlevelvalue, rlevelvalue>1&rlevel>0) + flist=factor(p.vec) + level=levels(flist) + levelvalue=summary(flist) + splevel=subset(level, levelvalue>1) + splevelvalue=subset(levelvalue, levelvalue>1) + spindex=matrix(0, Nexp, length(splevelvalue)) + if (joint==1&length(splevel)>0) + { + flist=factor(p.vec) + level=levels(flist) + levelvalue=summary(flist) + splevel=subset(level, levelvalue>1) + splevelvalue=subset(levelvalue, levelvalue>1) + spindex=matrix(0, Nexp, length(splevelvalue)) + for (i in 1:length(splevel)) + { + spindex[,i]=ifelse(flist==splevel[i], 1, 0) + spcode=which(spindex[,i]==1) + templabel=exp.label[spcode] + cat("Note: in previous analysis", templabel, "are assumed have same p", '\n') + } + } + if(joint==1&length(srlevel)>0) + { + for (i in 1:length(srlevel)) + { + jointcode=which(srindex[,i]==1) + templabel=exp.label[jointcode] + tempnenrich=nenrich[jointcode][1] + tempIPEv=IPEv[jointcode] + if(length(jointcode)==2) + { + templabel=paste(templabel[1], "and", templabel[2], sep=" ") + tempIPEv=paste(tempIPEv[1], "and", tempIPEv[2], sep=" ") + } + cat(templabel, " are replicates and they have", tempnenrich, "jointly identified enriched regions at FDR=", cr, "and their IP efficiencies are ", tempIPEv, "respectively", '\n') + temp=subset(cbind(data$region, data$count[,jointcode], ppx1[,jointcode[1]]), X[,jointcode[1]]==1) + colnames(temp)=c(colnames(data$region), exp.label[jointcode], "poster.prob") + temp=temp[order(temp[,1], temp[,2]),] + enrich[[i]]=temp + } + sepcode=which(rowSums(srindex)==0) + if (length(sepcode)>0) + { + for (j in 1:length(sepcode)) + { + i=sepcode[j] + cat (exp.label[i], "has", nenrich[i], "enriched regions at FDR=", cr, "and its IP efficiency is", IPEv[i], '\n') + temp=subset(cbind(data$region, data$count[,i], ppx1[,i]), X[,i]==1) + colnames(temp)=c(colnames(data$region), exp.label[i], "poster.prob") + temp=temp[order(temp[,1], temp[,2]),] + enrich[[j+length(srlevel)]]=temp + } + } + }else + { + for (i in 1:Nexp) + { + cat (exp.label[i], "has", nenrich[i], "enriched regions at FDR=", cr, "and its IP efficiency is", IPEv[i], '\n') + temp=subset(cbind(data$region, data$count[,i], ppx1[,i]), X[,i]==1) + colnames(temp)=c(colnames(data$region), exp.label[i], "poster.prob") + temp=temp[order(temp[,1], temp[,2]),] + enrich[[i]]=temp + } + } + if (length(diffX1)>0) + { + cat ("***************Differential bound regions**************", "\n") + cat ("Condition 1 uses data of", diffexp1.label, '\n') + cat ("Condition 2 uses data of", diffexp2.label, '\n') + cat ("The number of regions bound only by condition 1 at FDR=", crdiff, " is:", sum(diffX1), '\n') + cat ("The number of regions bound only by condition 2 at FDR=", crdiff, " is:", sum(diffX2), '\n') + diffenrich1<-subset(cbind(data$region, data$count[,diffexp1], diffprob1), diffX1==1) + colnames(diffenrich1)=c(colnames(data$region), diffexp1.label, "poster.prob.diff") + diffenrich2<-subset(cbind(data$region, data$count[,diffexp2], diffprob1), diffX2==1) + colnames(diffenrich2)=c(colnames(data$region), diffexp2.label, "poster.prob.diff") + } + +## Output list +## enrich: the list of enrich regions. +## diffenrich1 and diffenrich2: the differential bound regions of the first and second conditions, respectively. +## ppx1: n x p matrix of posterior probabilities of each region and experiment. ppx0=1-ppx1 +## X: n x p matrix of index of enrichment for each experiment (at the FDR cutoff), X=1 : enriched region, X=0 : background region +## IPE: p-dimensional vector of IP efficiency values for the p experiments. +## diffprob1: n-dimensional vector of posterior probabilities P(X_1 \ne X_2) for the two conditions under study; diffprob0=1-diffprob1 +## diffX1: n-dimensional vector of index of differential bound regions for condition 1, diffX2 is the index of differential bound regions for condition 2. + + object<-list(enrich=enrich, diffenrich1=diffenrich1, diffenrich2=diffenrich2, ppx1=ppx1, ppx0=ppx0, X=X, IPE=IPEv, diffprob1=diffprob1, diffprob0=diffprob0, diffX1=diffX1, diffX2=diffX2) + return(object) +} diff --git a/R/mix.R b/R/mix.R new file mode 100755 index 0000000..f4bfaa6 --- /dev/null +++ b/R/mix.R @@ -0,0 +1,104 @@ +mix<-function(data, method=NULL, initialpara=NULL,fixoffset=FALSE, fixk=3,krange=c(0:10), exp.label=NULL, stopdiff=0.0001, parallel=TRUE) +{ +## INPUT +## data: list of data, the first list is the region, which is a n x 3 matrix, where the name of the columns are ("Chromosome", "Start", "Stop") +## the second list contains the counts of ChIP experiments, which is a n x p matrix, where n is the number of regions and p is the number of experiments. +## At least one experiment count should be given. +## method: Can be "Poisson" or "NB" and it refers to the densities of the mixture distribution. +## initialpara: the initial parameters given for EM algorithm. In form of c("p", "lambda_S", "lambda_B") if method="Poisson" or c("p", "mu_S", "phi_S", "mu_B", "phi_B") if method="NB". +## Could be a matrix if initial values are the different for multiple experiments or a vector if initial values are the same. +## If not given, then a default value of (0.1, 10, 1) or (0.1, 10, 1, 1, 1) for method="Poisson" or "NB" respectively. +## fixoffset: If TRUE, the offset of the signal distribution is fixed by the user and is the same for all experiments. +## If FALSE, the offset is estimated empirically for each experiment. +## fixk: The value of the offset, when fixoffset = TRUE. + + data$count=as.matrix(data$count) + data1=data$count + Nexp=ncol(data1) + if (is.null(exp.label)==1) + { + if(is.null(colnames(data1))==1) + { + exp.label=paste("Experiment", 1:Nexp, sep="") + }else + { + exp.label=colnames(data1) + } + } + colnames(data$count)=exp.label + if (sum(method=="Poisson")+sum(method=="NB")==0) + { + stop('A method must be given, either "Poisson" or "NB"', call. = FALSE) + } + if (is.null(initialpara)==1) + { + if (method=="Poisson") + initialpara=c(0.1, 10, 1) + if (method=="NB") + initialpara=c(0.1, 10, 1,1,1) + } + if (method=="Poisson") + { + results<-matrix(0, Nexp, 4) + } + if (method=="NB") + { + results<-matrix(0, Nexp, 6) + } + if (Nexp==1) + { + cat("Only one experiment is being analysed.", '\n') + if (fixoffset!=FALSE) + { + cat ("Fixed offset for each experiment equal to", fixk, '\n') + }else + { + cat ("Offset is estimated by maximum likelihood in the range (", krange[1], ",", krange[length(krange)],")", '\n') + } + results<-mix_single(data1, method=method, initialpara=initialpara, fixoffset=fixoffset, fixk=fixk, krange=krange,stopdiff=stopdiff) + results=results[1:(length(results)-1)] + results=t(as.matrix(results)) + } + if (Nexp>1) + { + cat(Nexp, "experiments are modelled separately using latent mixture models",'\n') + if (fixoffset!=FALSE) + { + cat ("Fixed offset for each experiment equal to", fixk, '\n') + }else + { + cat ("Offset is estimated by maximum likelihood in the range (", krange[1], ",", krange[length(krange)],")", '\n') + } + if (length(fixk)==1) + fixk=rep(fixk, Nexp) + if (is.vector(initialpara)) + initialpara=matrix(rep(initialpara, Nexp), Nexp, length(initialpara), byrow=T) + jobs=paste("mix_single(data1[,",1:Nexp, "], method=method, initialpara=initialpara[", 1:Nexp, ",], fixoffset=fixoffset, fixk=fixk[", 1:Nexp, "], krange=krange, stopdiff=stopdiff)", sep="") + if (parallel) + { + cl <- parallel::makeCluster(Nexp, type="PSOCK") + temp<-parallel::clusterApplyLB(cl, jobs, function(x) {eval(parse(text = x))}) + }else + { + temp<-lapply(jobs, function(x) {eval(parse(text = x))}) + } + for (i in 1:Nexp) + { + temp1=temp[[i]] + results[i,]=temp1[1:(length(temp1)-1)] + } + } + if (parallel) + parallel::stopCluster(cl) + rownames(results)=exp.label + if (method=="Poisson") + { + colnames(results)=c("p", "lambda_S", "lambda_B", "k") + } + if (method=="NB") + { + colnames(results)=c("p", "mu_S", "phi_S", "mu_B", "phi_B", "k") + } + object=list(data=data, parameters=results, method=method) + return(object) +} diff --git a/R/mix.joint.R b/R/mix.joint.R new file mode 100755 index 0000000..5e342f9 --- /dev/null +++ b/R/mix.joint.R @@ -0,0 +1,278 @@ +mix.joint <-function(data, method=NULL, para.sep=NULL, rep.vec=NULL, p.vec=NULL, exp.label=NULL, stopdiff=0.0001) +{ +## INPUT +## data: list of data, the first list is the region, which is a n x 3 matrix, where the name of the columns are ("Chromosome", "Start", "Stop") +## the second list contains the counts of ChIP experiments, which is a n x p matrix, where n is the number of regions and p is the number of experiments. +## At least two experiment count should be given. +## para.sep: the initial parameter used for mix.joint fitting. It could be the result of the mix function or given by user. +## method: Can be "Poisson" or "NB" and it refers to the densities of the mixture distribution. +## rep.vec: the vector of replicate indices, of length equal to the number of experiments. Technical replicates share the same index, +## e.g c(1,2,2,3,4,4,5,6) for 8 experiments where the 2nd and 3rd are two technical replicates and similarly the 5th and 6th. +## p.vec: the vector of p indices, with p=P(X_s=1) for any region s. This vector is of length equal to the number of experiments. +## Experiments with the same probability of enrichement share the same p index, e.g. technical replicates and/or proteins with +## a similar number of binding sites, e.g. c(1,1,1,2,3,3,3,4) if the first three experiments have the same p and similarly the 5th, 6th and 7th experiments. +## This allows to propertly account for the different IP efficiencies in the joint analysis. +## At least one of rep.vec or p.vec should be given. For those experiments which do not share the same index (p.vec or rep.vec) with any other experiments a single mixture model will be fitted. + + data$count=as.matrix(data$count) + Nexp=ncol(data$count) + if (Nexp<2) + { + stop("There is only one experiment, cannot do a joint analysis!", call. = FALSE) + } + datacount=data$count + if (is.null(exp.label)==1) + { + if(is.null(colnames(data$count))==1) + { + exp.label=paste("Experiment", 1:Nexp, sep="") + }else + { + exp.label=colnames(data$count) + } + } + colnames(data$count)=exp.label + if (sum(method=="Poisson")+sum(method=="NB")==0) + { + stop('A method must be given, either "Poisson" or "NB"', call. = FALSE) + } + if (is.null(para.sep)==1) + { + stop('No values are given in para.sep, need to run mix first.', call. = FALSE) + } + initialpara=para.sep + results=para.sep + if (length(rep.vec)>0 & length(rep.vec)!=Nexp) + { + stop("The length of rep.vec must be equal to the number of experiments", call. = FALSE) + } + if (length(p.vec)>0 & length(p.vec)!=Nexp) + { + stop("The length of p.vec must be equal to the number of experiments", call. = FALSE) + } + if (any(p.vec==0)|any(rep.vec==0)) + { + stop("Cannot use 0 in rep.vec or p.vec", call. = FALSE) + } + if (length(rep.vec)==0 & length(p.vec)==0) + { + stop("At least rep.vec or p.vec should be given", call. = FALSE) + } + if (any(summary(factor(rep.vec))>1)& length(p.vec)>0) + { + rlist=factor(rep.vec) + rlevel=levels(rlist) + rlevelvalue=summary(rlist) + srlevel=subset(rlevel, rlevelvalue>1) + srlevelvalue=subset(rlevelvalue, rlevelvalue>1) + flist=factor(p.vec) + level=levels(flist) + levelvalue=summary(flist) + splevel=subset(level, levelvalue>1) + splevelvalue=subset(levelvalue, levelvalue>1) + if ((Nexp-sum(srlevelvalue))<(Nexp-sum(splevelvalue))) + stop ("Replicates should share the same p.vec index",call. = FALSE) + } + if (length(p.vec)>0&all(summary(factor(p.vec))==1)) + { + warning("All indices of p.vec are different: separate analyses for each experiment are conducted", call. = FALSE) + results=initialpara + } + if (length(p.vec)==0) + { + rlist=factor(rep.vec) + rlevel=levels(rlist) + rlevelvalue=summary(rlist) + srlevel=subset(rlevel, rlevelvalue>1) + srlevelvalue=subset(rlevelvalue, rlevelvalue>1) + for (i in 1:Nexp) + { + if (all(factor(rep.vec)[i]!=srlevel)) + { + cat ("Experiment", i,"is treated as a single experiment", '\n') + } + } + for (j in 1: length(srlevelvalue)) + { + initialpara1=NULL + data1=NULL + index=ifelse(factor(rep.vec)==srlevel[j], 1, 0) + for (j1 in 1:Nexp) + { + if (index[j1]==1) + { + initialpara1=c(initialpara1, initialpara[j1, ]) + data1<-cbind(data1, datacount[,j1]) + } + } + tempresults=mix_srsp1(datasr=data1, datasp=NULL, method=method, initialpara_sr=initialpara1, initialpara_sp=NULL, Nsr=levelvalue[j], Nsp=0)$para_sr + k=0 + for (j1 in 1:length(srlevelvalue)) + { + if (index[j1]==1) + { + k=k+1 + results[j1,]=tempresults[k,] + + } + } + } + } + if (length(rep.vec)==0& any(summary(factor(p.vec))>1)) + { + flist=factor(p.vec) + level=levels(flist) + levelvalue=summary(flist) + splevel=subset(level, levelvalue>1) + splevelvalue=subset(levelvalue, levelvalue>1) + for (i in 1:Nexp) + { + if (all(flist[i]!=splevel)) + { + cat ("Experiment", i,"is treated as a single experiment", '\n') + } + } + for (j in 1:length(splevel)) + { + initialpara1=NULL + data1=NULL + index=ifelse(flist==splevel[j], 1, 0) + for (j1 in 1:Nexp) + { + if (index[j1]==1) + { + initialpara1=c(initialpara1, initialpara[j1, ]) + data1<-cbind(data1, datacount[,j1]) + } + } + tempresults=mix_srsp1(datasr=NULL, datasp=data1, method=method, initialpara_sr=NULL, initialpara_sp=initialpara1, Nsr=0, Nsp=levelvalue[j])$para_sp + k=1 + for (j1 in 1:Nexp) + { + if (index[j1]==1) + { + results[j1,]=tempresults[k,] + k=k+1 + } + } + } + } + if (length(rep.vec)>0& any(summary(factor(p.vec))>1)) + { + rlist=factor(rep.vec) + rlevel=levels(rlist) + rlevelvalue=summary(rlist) + srlevel=subset(rlevel, rlevelvalue>1) + srlevelvalue=subset(rlevelvalue, rlevelvalue>1) + flist=factor(p.vec) + level=levels(flist) + levelvalue=summary(flist) + splevel=subset(level, levelvalue>1) + splevelvalue=subset(levelvalue, levelvalue>1) + spindex=matrix(0, Nexp, length(splevelvalue)) + srindex=matrix(0, Nexp, length(srlevelvalue)) + if ((Nexp-sum(srlevelvalue))<(Nexp-sum(splevelvalue))) + stop ("Replicates should share the same p.vec index",call. = FALSE) + for (i in 1:Nexp) + { + if (all(flist[i]!=splevel)) + { + cat ("Experiment", i,"is treated as a single experiment", '\n') + } + } + if (length(srlevel)>0) + { + for (j in 1:length(srlevel)) + { + srindex[,j]=ifelse(rlist==srlevel[j], 1, 0) + } + } + for (j in 1:length(splevel)) + { + spindex[,j]=ifelse(flist==splevel[j], 1, 0) + } + for (j in 1:length(splevel)) + { + srdata=NULL + srinitialpara=NULL + Nsr=NULL + finalindex=rep(0, Nexp) + if (length(srlevel)>0) + { + for (k in 1:length(srlevel)) + { + if(sum(srindex[,k]*spindex[,j])>1) + { + srdata=cbind(srdata, t(subset(t(datacount), srindex[,k]*spindex[,j]==1))) + srinitialpara=rbind(srinitialpara, subset(initialpara, srindex[,k]*spindex[,j]==1)) + Nsr=c(Nsr, sum(srindex[,k]*spindex[,j])) + finalindex=finalindex+ifelse(srindex[,k]*spindex[,j]==1, 2, 0) + }else + { + if(sum(subset(spindex[,j], srindex[,k]>0))>0) + { + stop ("Technical replicates should share the same p.vec index",call. = FALSE) + } + } + } + } + spdata=t(subset(t(datacount), spindex[,j]==1&rowSums(srindex)==0)) + spinitialpara=subset(initialpara,spindex[,j]==1&rowSums(srindex)==0) + Nsp=sum(spindex[,j]==1&rowSums(srindex)==0) + finalindex=finalindex+ifelse(spindex[,j]==1, 1, 0) + srinitialpara1=NULL + spinitialpara1=NULL + if (length(srinitialpara)>0) + { + for (k in 1:nrow(srinitialpara)) + { + srinitialpara1=c(srinitialpara1, srinitialpara[k,]) + } + }else + { + Nsr=0 + } + if (length(spinitialpara)>0) + { + for (k in 1:nrow(spinitialpara)) + { + spinitialpara1=c(spinitialpara1, spinitialpara[k,]) + } + }else + { + Nsp=0 + } + tempresults=mix_srsp1(datasr=srdata, datasp=spdata, initialpara_sr=srinitialpara1, initialpara_sp=spinitialpara1, method=method, Nsr=Nsr, Nsp=Nsp) + tempsrresults=tempresults$para_sr + tempspresults=tempresults$para_sp + srk=0 + spk=0 + for (j1 in 1:Nexp) + { + if (finalindex[j1]==3) + { + srk=srk+1 + results[j1,]=tempsrresults[srk,] + }else + { + if (finalindex[j1]==1) + { + spk=spk+1 + results[j1,]=tempspresults[spk,] + } + } + } + } + } + rownames(results)=exp.label + if (method=="Poisson") + { + colnames(results)=c("p", "lambda_S", "lambda_B", "k") + } + if (method=="NB") + { + colnames(results)=c("p", "mu_S", "phi_S", "mu_B", "phi_B", "k") + } + object=list(data=data, parameters=results, rep.vec=rep.vec, p.vec=p.vec, method=method) + return(object) +} diff --git a/R/mix_offset.R b/R/mix_offset.R new file mode 100755 index 0000000..186429d --- /dev/null +++ b/R/mix_offset.R @@ -0,0 +1,72 @@ +mix_offset <-function(data1, method=NULL, initialpara=NULL, k=0, stopdiff=0.0001) +{ +## data1 is the vector of counts of the data +## method= "Poisson" or "NB" + +## sufunction +#Log-likelihood based on mixture of NB(mu, size), maximised using optim() function + NBlike_phi_offset<-function(para, data1, ppr1, ppr0, mus,mub, k=k) + { + N=length(data) + phis=para[1] + phib=para[2] + temp1=sum(ppr1*ifelse(data1stopdiff)&(k10) + { + N=nrow(datasr) + }else + { + N=nrow(datasp) + } + + if (length(Nsr)==1) + { + if(Nsr==0) + Ns=0 + else + Ns=length(Nsr) + }else + { + Ns=length(Nsr) + } + Np=Ns+Nsp + temp1=0 + para_sr=NULL + para_sp=NULL + for (i in 1: sum(Nsr)) + { + if (length(initialpara_sr)>0) + { + if (method=="Poisson") + { + temp1<-temp1+initialpara_sr[(i-1)*4+1] + para_sr=c(para_sr, initialpara_sr[((i-1)*4+2):((i-1)*4+4)]) + } + if (method=="NB") + { + temp1<-temp1+initialpara_sr[(i-1)*6+1] + para_sr=c(para_sr, initialpara_sr[((i-1)*6+2):((i-1)*6+6)]) + } + } + } + for (i in 1: sum(Nsp)) + { + if (length(initialpara_sp)>0) + { + if (method=="Poisson") + { + temp1<-temp1+initialpara_sp[(i-1)*4+1] + para_sp=c(para_sp, initialpara_sp[((i-1)*4+2):((i-1)*4+4)]) + } + if (method=="NB") + { + temp1<-temp1+initialpara_sp[(i-1)*6+1] + para_sp=c(para_sp, initialpara_sp[((i-1)*6+2):((i-1)*6+6)]) + } + } + } + p=temp1/(sum(Nsr)+sum(Nsp)) + para=c(p, para_sr, para_sp) + k1=1 + stopN=10000 + difference=rep(1, length(para)) + + if (Nsp==1) + datasp=cbind(datasp, 0) + + #Iterative steps + while (any(difference>stopdiff)&(k10) + { + for (j in 1:Ns)## same regions for technical replicates + { + for (j1 in 1:Nsr[j]) + { + j2=sum(Nsr[0:(j-1)])+j1 + if (method=="Poisson") + { + pr1[,j]=pr1[,j]+ifelse(datasr[,j2]0) + { + for (j in (Ns+1):Np)## same p for non-replicates + { + j2=j-Ns + if (method=="Poisson") + { + pr1[, j]=ifelse(datasp[,j2]0) + { + for (j in 1:Ns) + { + for (j1 in 1:Nsr[j]) + { + j2=sum(Nsr[0:(j-1)])+j1 + if (method=="Poisson") + { + para_sr[(j2-1)*3+1]=sum(ppr1[,j]*datasr[,j2])/sum(ppr1[,j])-para_sr[(j2-1)*3+3] #signal mean + para_sr[(j2-1)*3+2]=sum(ppr0[,j]*datasr[,j2])/sum(ppr0[,j]) #background mean + } + if (method=="NB") + { + para_sr[(j2-1)*5+1]=sum(ppr1[,j]*datasr[,j2])/sum(ppr1[,j])-para_sr[(j2-1)*5+5] #signal mean + para_sr[(j2-1)*5+3]=sum(ppr0[,j]*datasr[,j2])/sum(ppr0[,j]) #background mean + temp=optim(c(para_sr[(j2-1)*5+2], para_sr[(j2-1)*5+4]), fn=NBlike_phi_offset, data=datasr[,j2], ppr1=ppr1[,j], ppr0=ppr0[,j], mus=para_sr[(j2-1)*5+1], mub=para_sr[(j2-1)*5+3], k=para_sr[(j2-1)*5+5])$par + para_sr[(j2-1)*5+2]=temp[1] + para_sr[(j2-1)*5+4]=temp[2] + } + } + } + } + if (Nsp>0) + { + for (j in (Ns+1):Np)## same p for non-replicates + { + j2=j-Ns + if (method=="Poisson") + { + para_sp[(j2-1)*3+1]=sum(ppr1[,j]*datasp[,j2])/sum(ppr1[,j])-para_sp[(j2-1)*3+3] #signal mean + para_sp[(j2-1)*3+2]=sum(ppr0[,j]*datasp[,j2])/sum(ppr0[,j]) #background mean + } + if (method=="NB") + { + para_sp[(j2-1)*5+1]=sum(ppr1[,j]*datasp[,j2])/sum(ppr1[,j])-para_sp[(j2-1)*5+5] #signal mean + para_sp[(j2-1)*5+3]=sum(ppr0[,j]*datasp[,j2])/sum(ppr0[,j]) #background mean + temp=optim(c(para_sp[(j2-1)*5+2], para_sp[(j2-1)*5+4]), fn=NBlike_phi_offset, data=datasp[,j2], ppr1=ppr1[,j], ppr0=ppr0[,j], mus=para_sp[(j2-1)*5+1], mub=para_sp[(j2-1)*5+3], k=para_sp[(j2-1)*5+5])$par + para_sp[(j2-1)*5+2]=temp[1] + para_sp[(j2-1)*5+4]=temp[2] + } + } + } + para=c(p, para_sr, para_sp) + difference=abs(para-paratemp) + k1=k1+1 + } + + ## subfunction + arrpara<-function(para, method) + { + if (method=="Poisson") + { + Nexp=length(para)/3 + parameter=matrix(0, Nexp, 3) + colnames(parameter)=c("lambda_S", "lambda_B", "k") + for (j in 1:Nexp) + { + parameter[j,1:3]=para[((j-1)*3+1):((j-1)*3+3)] + } + } + if (method=="NB") + { + Nexp=length(para)/5 + parameter=matrix(0, Nexp, 5) + colnames(parameter)=c("mus", "phis", "mub", "phib", "k") + for (j in 1:Nexp) + { + parameter[j,1:5]=para[((j-1)*5+1):((j-1)*5+5)] + } + } + rownames(parameter)=rownames(parameter, do.NULL = FALSE, prefix = "Experiment") + return(parameter) + } + if (Ns>0) + { + temp_sr=arrpara(para_sr, method=method) + temp_sr=cbind(rep(p,sum(Nsr)), temp_sr) + colnames(temp_sr)[1]="p" + temp_sr=round(temp_sr, digits=4) + }else + { + temp_sr=NULL + } + if (Np>0) + { + temp_sp=arrpara(para_sp, method=method) + temp_sp=cbind(rep(p,sum(Nsp)), temp_sp) + colnames(temp_sp)[1]="p" + temp_sp=round(temp_sp, digits=4) + }else + { + temp_sr=NULL + } + parameter=list(para_sr=temp_sr, para_sp=temp_sp) + return(parameter) +} diff --git a/R/mixfit_offset.R b/R/mixfit_offset.R new file mode 100755 index 0000000..186429d --- /dev/null +++ b/R/mixfit_offset.R @@ -0,0 +1,72 @@ +mix_offset <-function(data1, method=NULL, initialpara=NULL, k=0, stopdiff=0.0001) +{ +## data1 is the vector of counts of the data +## method= "Poisson" or "NB" + +## sufunction +#Log-likelihood based on mixture of NB(mu, size), maximised using optim() function + NBlike_phi_offset<-function(para, data1, ppr1, ppr0, mus,mub, k=k) + { + N=length(data) + phis=para[1] + phib=para[2] + temp1=sum(ppr1*ifelse(data1stopdiff)&(k1=para[6]) + data12<-subset(data1, data1=para[4]) + data12<-subset(data1, data1Z&H+ooF0004LBHlIv03iV!0000G&sfay3lZ=CT>vQ&2UJ%gRpW|3$ zN1x+9Kx)19bU~>Qu#_k58*G`5SCC~&vGr~z)UekkgvhRUEX_n6}OpK%6ng7=IIb{fZPc@x#yA@Qy(HdZ74APSKayQNI_o z^csLPu-Te=TZx%VxOW-_5M>Ms z8TsIRVFI_@0Py&wNOK!eFGl(^>Fo*hWD9H`MJDRvs=#St_3}urN$lD`6bRO$P4Uy? z$NiT7)gV-o+3LoEh2i(?`HSsSRq^A*PSz;{ns@vS+_!`f3YcEq>Wz(3AalIjK5&C? z@}71_RMq9vJ~xxVh4zJ*hvjxvsy|%O1>nrtg57eMSvK=s_3Jd6JZtO>$5g zmnS-6xBrVpdM9qmXMB25`MefC>%37u*`z;cfmYYd@Clw214z*67O4B0rm>~|A46Aj zS=XoRD}q^Dt3HV94E`cxEV$0vQHVc*CqsNC^{650BKKQ;W2ndtEFgtsjph7wM0QX8 zSV}15#d+ze(r`u8O;B*h42} z32@vDQdr${Fid;_pyZ&eiw-di6UVe#NjeZpgJY;{xmitPjpxX(ZOuG!2X-v|&i!*b zzmJ@?c)RAMlq;iW`8+6DTOWU7n0+*`Iu|58Ih53C@Cw`@WEYDrR^U7J|A?&DJu)SN zMP{a$W3D&K_dVsP?X4SHm7+N@yO5Zm zv1B_RqfwT`7>qy_+)vTZ z^6<3v3sniwJE7h=Voc2Ksaf5;hugS*58bO8{0xHwrjMaO0F zVvz#gS9+xC#PD{|S0nl{JiJ6;!H{Vv=^$Xo&@To>DKe zsQ*_&FRyEz4sKb?VeyQsXFQV^yipkNO2wMPRs}O!v#xu4(f6mj-KU1`#kOT@B(<}i zFki)rVGuuH+);~QL=g@F7_L!Fm`bvshv|5iEt54%=z~lODJLwd{PoG|IQ7U9e8JEH zsfMQcj_ee!>@bxa2u@F=2<6-j$7;W5j^S?=t^D=uZwWv!lh##Y1AAwGBieuva8@j5 zEnSg*oc@{s*if&TtE`BmH@c_b*+CD(XuNOHZ(kr*XJKO3mpjazW`@ebtGs&~?0ILreFxIQ+a|5_6xA55F%_0x=d z4e$A4hxfG%w!!v#P59Qi3R!*8a&Xv!xbnq z_SVlN+Mh+Ce!~Jk5pON>sMRY*ucF#BPEMD0H!)DNH3oy3Fzf$g&%ToJWj(dmV4CMJ za{lTs7JZ~!A&qw3pHd)La1*zPCG*zg2#2_eF3hgWK_zn^QbSFyc7vdXc{wL5ovI`4 zzkss)((L~0SG24cmTRyYE#z^=w;?~w#=r0eL6ughldj+Bf7)P|M`cAcr5Kd^TPTz; zS$N}++HL%F3qdt>92`C4q^h5FkO4Pi>|iCSMcY zX$sr6coB!9Vt_%F4Dbu`#Yyb-fw_;<1OlsX_DC-KHb<)@#wk!4`5209bRoG1fi*SD zB$hnMx6-u;=Xi|!N)l+YOC!6)K3!3c97@;*$_8XB(7K^p#`w4PwEpuBx-57zHnq<| z2*2&{0aj#2jo^R#J_4|{WP9&N@(Dsh9=s){7cUQvARBWF(YT!Zu9Ik{_<$_^iez3Y`%%T zd$+O)M4`5SdKHpmN#)RX`~RpXJ$Dg*wSkSV-pUWEzopGh+DHP`;eim~-H{vZxX9+G z=oZxo&{-jKMHc^j3N`{#5VI->DJdcrXH*Zd9pTl8Lo|#Pzk0-FEPz~0*BsKn>dE0E zx^8yHOmiTTTCMF)6U`lT+l9a~NKK{iA!7u&ynsYiciN+pLc!mr(j5`3XJcj$W+NN{ z!m!|_dXg)}?(xPfWV4{@?CNPVSO{Iy1nnB*&4h8}Jy)27>_-nl^{T2<%*(}^8 zi~s&4G9rm(eKwRrb4v&M_V1`W-+3*dLw9-8la4}i%mZ8Z1fAl8TjgEl^^~Q+Vj|U4 zJiWE%XOC^~jXjJA%J7*Opjf6SG*sQcr#o%}BAKMayRKZ*7LpEm*hM zA9*l9a1snL>qaBsGxtF2&GlyZ3dTPG!j3VO30fB=DsjkMLb15mEKxUt>_U6*>Ba2x zGlHrMD>XE{E%(&q>)CzXIRJ~Ped$J-Z%tzaqEzQegK@rm47k}J!UAoXcfmR;8w>>zpVF>W&8!N-q|dZ z?NZ#%zk~0TnSDnD+aARlMDL7*-vxk9lOAqd0UeQJcULzS!!DR*8HvEV;O4Y!jwjO_ z>+%Mo?z&kPd_0GcoKQ=!&&YMgP_T`}5dGc`@b1L>o?8fCZPE}2>#=r2gEWnM`8~>8 z_r0KT!HJ2of16q$MaalIlr@{V)rdX`0HI(MKjKGqGx}LNk$PU0nYCQOxSFL{d>s{c zh!j_6n_6COj3$edbV3DG>IX5K6z0Q&mXT^s96P0&oBuhh`1=T}*(jj!scHDf=KNtd zyJ@3|%{S3FdcNrovc8QKMHUG->;=?!} zM66Rs8d7Hxi_E6ZPacuE$0qK`w=dQ4r@|#BeQ&{{dxZTojAYj3qG(mD9ly}3%aa}8 zU3jntlB!GBC0ati!kbyEo@t4`Dum%hsW)86yehZUyBpUT3H*%kk!;&j6UtzO7pcvl zn7S2atvLG+gL$2tl{G44u4l_7C^8Hp8=x2y4W0+X7$0gi=peJxCBtKd5LUetoN-;( z;P*-GD>*YEjKIMO7*?Py^EZ{(+&(iYrpNYWabf69@ATdE%Q5Ng_`tW?=HGziNyYiC zan5uoK9VKh9A^45Cw7MwXwbnGG8Vru`_&=_7gmQBFx7x%@%3$XNeeaDu@z6eBSC*k z%J!t(M(~|LQ#*-oYi%>wd$RPJWF1ee&$M#-Tz*+~D=|_l6GI-fYd@fuI5w7glVW;< z{aFOdQ|XrJX+zI#Nvw`9y^DUVD=oz8EK$$IDA+!SbN4!BXqtbChBfL40v6rNusZ_f zFL=)2M4k96{-A}Y&O`n-!447xw4K}u8mfa~wvr}-Q5iT{L5h+4lWp-^I)<~r;0=xE zssF6n&mV#E_qEr-L3Sb$X~nB&sd%aa)8yRVFcipkjj|6cspBrkY~I^-Dmh{ykiY^W z5qupIrRuc_daFO4xo@S+uwt-RpZr1otjIlzkW~%WuGP1O*No`1)I@+4o}auY9oP?? zVzUdngj~BI)t;HtF>KnpFqD|H>$9jYzM$maVsC!^<#>KP4_wdnP&a_B zkwMOtkVHU%UkYh{2`;|?Tsoq^9TxNb$K2Lbt?*S$v{UtJDMn1nhl_a4)!g+}43AlL z;>niHRjcdH9<}07FKZ&CukS!_oy(ozK7@08-R2(Zv^q>KD=sn^ z3#U(;zA3I48QbQCUQGVSCm{xnLaZ-#(db*Xu45A#fJr3>=v#l(M!PZzB{D7mR;p)1H8j%YRKcZ(oKIhzmE%;e~+ONdgpB zYc=OK)w$=6P3of$zcyM<7MW2LgFLqswV`@fddWrxFN%tj2!!Z1?hm6Vjxl3Aq|lqd zS@cQkMdcf&m&K?UAVS+)j2y&ZGIl$KmzR-g8ZOsNQdj7sFKUbW**LL1K@xPORfSn- zK0lXmaqjzEl<8sb1&7x^#V%he1+|jv{->?8i&F`d(cLp_|B#R|dlPNMf!;5DZ*W&m zT3SS0`-6dj4IQY69#wzd$1hLU#}4_OSh83_%s0i!uE_?x)KGtgEAR2)V3hh&_wt$w z6Wsn^!BII)Y&v{WO;$9~TVhiQNU*mxX};K3+c79~v!KgGiR|3XgU!7z-k+wc*|gC} z5ISJ;`Tkn7+rSHLtW|l^axea_Xk2p838@fb5S)CKo>+lfuE{zGx~94#Xqo!!1id7& zim)>Hj7=+_NFDY*&R12Ow_dbIcHKegV~lk2>qx?X2-D8#bfe5wlOX|5Ww$S-FOCR!%>Ulq%B6 z=WsfRyrvD!I|t@&=C2zA$^y-NB^}AR*-=ATp|Du$+IuO&+Wh>YBjq6b>sN~rmn_Rfr4M0hJe9wlaq zTg%4lF=INv`JvtorTFk=4ysV)af1G4#FSjWOJp_AetDs3G(x?P_6*d5<(j0aX^myn zNi4pKKqa6~`w&C1ku^sq+ETj+$LjdVjS;rNnOmg3d|Rad*ze>;*|MrY^ zF_&ppiMtQZQ8Y0 zX$F~0<@1Tz0*_hpjkD@p>% zTOOvhZ}m;~3b;WJC{aaky4tFqN+|$B*vnYH%rH;ph_Ng&E;2Ns>YRjZYKm(E71p_+ErnaE9tnvZ7UT7 z2VK}AG7X9Xk59kGm8xlAP-*!2Be0vEsI0I>*@8SR!q@VC6iZr|cMhKw2P&T5EsPR`_4Z zcv-bKUs!U8(om{x7bogE$3qm!aW4;Z9{-zK!aQ;T1f+SjbH}|8$!4(5Dk!N8d)lE! zx`8mX>?06-P}UbCl+Xky$(9~na>l^BtgHX`Zz88ChDC{9fPgNRnlyCIO9nb0CFZ-w z>-`Q1ymj@%PExf#Q-Sj9YN#jLNJN=~nk}Kr^SqYv6B1G9N#~|M6A$d(=7LYA{eVrgIceM%=NO1*l|PssU_ zsg^w$Z!ijI88tGZrpnQ!?bD6~UryFKVA<=u`|9PrZ$1lui`tO9s!$}L0?gVOU%>D;U|8mA; zFn&=H$sPL}-<{^{?@%LGROR?vZZ5K~U@pzm`~nxNr$l$y{~g#M&waOfWhCwRF!<;f zTBS*)?mO;e;RJRu3D2~Ks~yjGD-~(kBa|d?TAdD*^(hJK(X!3-mq1=(Kq1jkZzPTI zh!uP!;X@#_uj|=CCNA7U<8LN{bEhnFtjXaPkC?Jj(d-YZhtNDmeIi=@Xz)QBT4xFn z<((yy%vGUv$;uX2=jyh8Z^Q3qBw(kDXBjAy`DNYr{;Hs`wye%b*TO;J2G{xaZJd7Y z>o7;wZ+D^hEbnA}DTs{)t!F^*FCQ<+W(I5V0LJEn(4G~QM2aO4N5l8{Io?Jfoot6O zxl#BoqL*I(B=G*V8{b6#olJl3%{uKJBZd?gmv`SxVXp9^jN@LFt|D01y9ut&a>nWkfEUbSJJwn+n-G_unGO`o{Ej2|0J8-4hxa%L-j_?8h1xocm3vxs zU%%{0y1oc&_B`gi&k0jC!mM0zaSyR2@-}8wQIRt-SJ(RZ^aEhSJFFlKXI**#@M!88 zfY~zNovi=;lf@TV?FKfq$wbBmGvD{O)b z@I>EgmJFu6bPY46Ev_xnrfl9o9wW(%vFavz89~N305|t?uWJt)}iGzBt*Wz_Z zRkvvoz&BH@1IAt?hNYrbOqeCoh}`0v`L_GJ+JJpiJ3&#BwU!}`4|LFfpk{g_Y7)kF zKfq2GlDKHU7dB-%t;>XqZAJdIyP`HegJ@9$wy(dp8@ohP(zrwSy#(%xZ~_Bui$KV;%D-&SZITjAB61gBPiOYHTMTPo4-{s@5Mmsj&?`L{(4sxtsB zR{CxK^d%RWDO5BLTKzWeGD;4C_r!%n;nRCHFyFzdy_ImV0iIFKL}q*tDo;m^_)72@ z2Kt%ZQB_9Eo)7F~aN3Z5l&k%u<-#|P%iNtqyw5p!lmIrnhsu~UXP8nW|95zx#Hv{A zmXQvKQi;B=@(t)q-1x) z)6Ei?PaK8MIvgD0-HE52ojY*yOy^94Qrwht3>3kR14t5MKTO42=wmh4gb|lR*%$ME zc$mTXC)iYR2oKaDkj7dDbH5dFh|IYcFy{b9l!8$SCFmL?H?c?WSMy!eRx44{ifsIl z5WDLjZ2CufdM6@#enQk2v6h6QM7KX;*gvBb+Y3e{1<5_P@e&HL4bAcQ{j=MT_Uo#+ z-PZ|{>pEt*(=4zvifm(odl8lXqseWmb8D!w83p0Y!(L`U+s9Xn%$ID2zY_K5`g5?w zIhzV@h(e+*QFQ-?8z`f&Frr(v3##6b&Ag$04&DmKS0UC(5SP?Uv))W|nhaN~5X^=!*gU<&J(niKX|J!-O$d zi(u1;#=!b?W`@ZAX>@*58Fx_oB?7PTJ50ge|L@4%WmVsHy~v3fEe!h6?^Am(vcB0G zX$(W;cN+{$pg=l%Vn65qyx)%PcE89`0iIy`wp)XPO->!p8(^bz^V22GMCAQ9*J=CN zpU|}M3PcpD#YH>Cj~+8OO(6_n^@dXM1tkWF@GVhTpDIaXL9TB~bP2nBtTk>LSh=b| z`2X2F7_m>Lr8C=9iRf+5q3C!F4kmA>QX!;&WPQ9FBmUc)u-RqHe+on|GiAs-2^xbO zyNfsj7rVUOZPm~lZujo5_U@-|F+K>@I1AV~NonRdBDy54_${W`Fs6Hug6+%O9%*;L zM2o}M5x1e|K07?ZTU)}}^#0d)q99a{N))Y8Y1E&6wTOzJ zHEU4;`Y&DJyZ1&cDw5FAOirVAoEr^@43Qz{gyd ziRY?;Gl-sP3AZ9^eHB8XpU*xRd``igfQrVVscG#CsFNE#<7-yO`ln|s#deaf_Gw9e zR#2mPa1w%F%Qb#Q#UULK6x(g_dY#0I?l}bN>^{o-z~+XcKTle(G#RV-Y);arIj`I; zpxg(^DY_l-S7xo_i|#2BX*51#vo~iaX;7J(4H1@f!D|W1PE0<$cxbj|n3p+NUGTdK z-w|C$;u=%jF1Xberi?qBjGnrkxE1^tRl-$nqmld6=mlSAk91Zm@W@!$oTW{vxd01$ z=jlS(Ch#39btK7KK{IQMhRxjn{P~|~K(($JGsM@)dFYq`3F+&k>8M7Yi?MMexH2%3 zn_AOQ5uzEZD-a7IIor%4 zHs6d`jgZqdvk+E8d&=V*b4} z%e`OsF8@WcO70>h1ccCzfW(Pr}3=V_3740!eJnqw8wzTpx{~ z?(|Vm=;Q9v0}`R8Ak4#1QeWnQ=QT&ns+|qU@wi4CsaKMUQKpv6D;;hY{3%9+XaJmz zC+b-WZh^@@9<7az*r?)Ez zIcyNw$1ez-g$Wn5p~dBn#Qd*i!(43n%wt+)6;Gjy&DN?HzgQd$L^+kF+GpcJ0hjR z_hTDT@)BpP-9oetz~ZP36GKiskW%U(p;ffw(P1(IaMy(Bksbdm$R_GXReP(5BkiQwte{tvd7Rs? z`d(Bp&vIZc5~NU}$grN`{6Itf(+kl9Of`)86<# zi&Shg6Dahlq^pBRUUKF_flE`x8oMs122Cj6kX@z~lb=8(CNQKP7p_JlUj zQ>;9z=%GM))RzhFs1swH`~I#=hG6L&psq={n{909TBcT-fvA;oNj2dScs0y}j)eRa zAgQ9@?E8enNW#&_3z+>98SRh{W1OxWui6xq^Fbpe?F7owjKnX z2cch3TiaQ~-7gM_bxGz<0-T+aK%A zA#8ecC9=X znFm|xZo9$EXa0jzQ)!K87=#l{2%2`o_)QKEiIdIguAU);y>D}2A(B_3c}lGj|m43NtQ<#Wrxf698->|aChWB!!1OYQXa}hM%d{s6IVsX zDdlUB!p!)SZv!+lGZ!c;KXVsCRDra8sLsk_2?Qs$TlN6}?!&xAawy{Zkvq(FD1`IR zo9rOd1j$zrI*QC-Ll!x87JIJhC@uNxc`{~HK2DQfr#V_id!IMn%luVzj7%?Gh*4Rc5_tn_cQr1E6Cj;$#aI~p!U%tZ(@yo;s3M>oLF_j0% zxy-fiAHX7EF;|>WRK?K5P%-_U3Pdx{*3HqH<~L(olkRN9)eP+i;~dJYnNJM-PkLja zq!Um7k`CBe&jdP|BKKG*OB3-?FZrIh6}=7!3g+9IGMQ#Dimit@5l98{E^RYz5yYpF zOS-IYh!m_@!!yx8*5DRic9m{*)9y7R-A5JfiX&Df#~jB{8~;^*UkWmIgimlQvwby5 zna+x-Mv$LwA4+mUErtJd-7AM_E+;(*ab4*@S~ncZ|(Ls z!SR3v0xX$iUhTtGFr=(4{qA_4aOGn{FgUNWLSXaqs2Tw11chD*(9(vgaMdz9ACM_ZYh@Z^*nF;m?s=$h> z4d{^DNus6ICvh%JMY@`8#O!w_XVPG`Uh&dtxv&K1%9g^3e_2AqtAh}9ehIxkS?&w; zAWJn#yJP$aTKVXEvk<(t+=@U=Cw{91LVSJCG$)pL1nlno&8|1)gA8xNT{?%p;{WU= z$}X9xovaGYdw#lwB8fjQh_&^iKH(YYf9hWJ&;_8`_-&2?oo^;FAFIk~Y5W)AkL`cN zQ@^88-%NKoaR)=-D?aFg4uqiju= z@#t@QJeI)YA zzlQ6E|GQV6E$ITWr)X0-)vgWS`On=_+VCIpst*athbyc8Ip{w0ZLB558v8iUGiXpjVmP<2Pedv@pst4!}mB3 z##o|iU^NtGvoDljC&$!SLSsHeqCuzT!gD6!K_Nx6TQZcLT#yy>0lSawml1Es{n4`` zhk>KLX5&74&yNw9ocU(z^jEQE78(>+fouBiQ{LiB2Ryx__#TKHe-9u#YI*ZSb2Rdo zUao8qOZWj|#16mEQ0~@nD;YBG%{J_--mNhME4n~U&20KEvZrwd0IVMV}l)rS)s}p>go#|1kH{BBCreyxX~o z!eF35%ClG^hFEyKxx?=DOUH#YZM8Tf#DdNuv~0H>R~-!qazDe=Zm)_E{i5X4sEb;X z7P}OfA~h&Id+2B0YGa-Hm=7|0Uz_B2UZgR`y!1Bo;T1@isR_NOj*uHBI~QJ58{%KX zQ1F|K*hpk(i-s<;%_w3No$IAj4v$w4eAlV$mVp&%I2u{iI7Bz>#AYL$7b#755! zp+=gay>2c~5)=!yTLJ8ra2psE*w!wFb2$5r1@75sTLmlEs(pa+LA7T&!$LRz$KFkL zcR_EV^D9fpJJ+fQ{U&m^JoZ(FRdhxo34YpU!zjV(t{fla+D|z*rb#YM>FpPIDs#vE z6mdrGaq6Msj&X+3+vaS=C~5!vC&h>vKF@YmcXQ8Bhz%H`zT)8Rfj0S={Ld9_HtJyU zse(LP-L@NkF0*{!b^ikNZ#ZCY|NmhlxBn*+3l)L1u`fk@R=|Nh%e4#k02O;{!QHgl z4nS4XSL?qaMq>W^TZ>!+41J;JdzEtutrsJq~5R>Hh*{ABGz9yuq?SF2P|5`-} zz&}Ox#>eo@-Y)EHfV5`{G@eYxOB52S7MjVvfP#_K?=!H+npwUrI+sVnlF9>5Bzc*< z4xYu@i}`Z;ctpjw(RGo{ZMirQRV=67A%Rj};=TCT3Wgc8JL4xZMC?0uFL2*|Fk0!4`+(ViT3msuy1G zlM&%1TT5e=l3}E-KM~Ds8AlNU{mI?Hq_)wdoy<1(@4z$nXV#!shQfKAgK~AR0{sF42UnB>r;Rw};R^OGQXt zPvlmz9tBw44u7i3n|2kDIt#pg;m1pLo+X(d?P?;#m?2=9&lJ}C(Sy2#kdmbyN-RXFP z5?R$lA{He3=mfi6Hj?qsKDqRz%vjV6cef1I`0QhU04^dDqO0YDX$$y40X4A38a0^H zdfth93q=}AsgCjFV~};jRjoeAV(MBLZFO7}X<0=LI(=Ch1PDUP#V|RREN8rH1ISWa*gzZ zNw+7B425Mkv?zZ_i_9^L!kuoTwGlLirkCWQ>@A=u<;9fuDYu+Lmmq_V`)Caq)Tq-^%>8IHCcvlK2e0k$iegv! zx=Zwx)_6?hn|`tOkJ!tAKdkhQ*+$pq3=f*EdN<_Kh|im0$l>RA&TLkx!nV;kGq1ex z!+@{{T^y*520RYOx`$gB&JKS1x?TL=!9x$Jj!85dnr`j!yi1r(c`TuIPaaX78*oU#;}i}p?gx3B_JvB1wD<9wnGm;++l_-0%VN zXj@Q{KXzu)&Nq)fCi%^SalG|LRxU3tCAd}{B2Z2lL>0D1!M`>`I3s4K5^+?r@Y1@p zSJV)Q3|Wc;Z4LgztT0rCCrjJc>A(b*rZ+by@?&EX1Pf9+a!l#qlsC*zV4Gm9ynmMS zYK!1B5l6}KToRQAtZ{SPQD$0RP=QHqLc%f(GUAGx{}o+VCuN(-(Q*?PZp172$kSmF zLKZ}LTS0jDfG=h%g-CCo_$)`7yE*cxp68x(=o(MGy@?(&HgE`M#gkhNGC3rgYMw4gcxS4!z z4bL*!wdEm17MVfT#CSo=gSp-Xo3c(U!%xX)!k%gdnps+O^QL&ThelH>SwiA#-Y|el zUkR`~G$SGo6fEQL;IpE3#|Ag64`cCNkky_)eR<@-H0iZu=Sar5U@bHHE)~EJm*&b7 z$N1k}8OpO4Y6#|Jr!gU~ZI!E19>mn61o-azFy)Ej*Fg<{q@PcSxJTaVBb4xbj&7;i zjq+|!!TQ(gqdg^2O0zW0L35JD8Q<77y7+Kxf%5yFb#UfjN^D(=j{ojloH+A*X1;e_ zxL^|QA?0k@3kb=ib^}HO)p_il;~jSV1QZJ^IlSqcbZWz11adZ@xlGkchIRZe#2ie% z5s6?;yMOg1U6o}pF8w+Ou-LEj^TQn6>cvEtdNGrYx}?8cw2+d=CqXQM*=HpGgTiJ1 zo4vs1byV9tk#jzF++uX_?r323p*4JtffcPaBHFC6Kc5>s|9Dr#TPs^2!25bdH<7AWRIXv!LBeR4I49rDREC--MyEqF$So zsgOJ~n!2Q9n+EhC9W%-i_%g7G*-{;#!=>EaAkU+NvY~Ul&E*?OT*W4iC1{pSGa3&1 zAfdnef929(u8(n;wo~K+x+n6O*zg&dD~>KBDU_|W>U?~W{Z);M1%qkmWBF`*Q))33 zQXFK`Hxpd^P}}y<#rj^I$_rHy_}<5L)e>;;Kwq`gceK*`ZvI zb@II_qAOadHT|M=*0w-oBQ%X54;nyT!(VZ zlTtstuZZNPHuv0^lAT7XErjS&z6x3YmS6~WIT#zBtQ5fCu1lYVM3e5?7ePo$h#7yC zR)iYZ_;(Y~3_M=aeyiSppKKLBZxZM6wvFCP=dtS4i z8|}A9B3U7jVnnsHQxDQct0GbY-Qm1gJfaIuUy^UZU?qvioPX=&>W_du^IM+LFY36L zs*RyPmfPA7^&tyYn`(eQXX!i{?4sOik>>H5)TcYlh4K#&xq$B6N+*+=3crR=lC5?t zZ^K{u{(}O#&P0(+)J)COfzg=5C-zq+o7jlwX}(JYpj!0OH=LQXzj~}kiU7~N-yFBzY^bIIt|QowBHG9gx)Om*rdNj#)sah|S}01TvdYxipUc216;{S0pTpsR}s3 z1X79}I9+vdKA0H7X2qUM$gs0x;({N@qC}80KhVKN;c(f&#qas(70Ei#+#sJNx$$7# z0&mi*o>F_JaOKe{7%%Q__bKmr9W=cSh1QcF*$A!c^_I&25U=WQL&a>hZ^F0<{D~6p z@Di>RYE1VQEzXPv*64zHqYBQxeA~bk+Lc0}M|$Oa^o}9%OX#MH@ZeI)hGV^5oe1s) zuwWMQWo%;N#$}z6!vQC@3aDpd0rV+iZEzNZbCD3^9<=&T=wusP84m=Mmim?tpTH4F znR%pK+B3OK5!n?{aM`QaT|&apAOPEDNazYj_$mK2*~2}J-BNBaPbV!XoeKN4-Tu*h zNw^sc(x#E5)^u$*8XP@77m$y}u6=YUOuxOipT_neeTiB;e&fG;kze8|r)-uaeZQ#u zct)86wd0~?UB^Isr;TgVKRw1{Ywj(>k}~7^r1|(ByCBs`jTwMig_^^San7n|bS@O< zcYd^j6YXQ4 zD0s>%B_pz=DB^9}E>ox~fIrqsHG!>_U?{nEKo=@(O$CMmHk(hh#NfRoh5!o!fG&9{ zZh7#tP2&$B(&gy#quVv!o;8I{A6NtX zZ0K5ZBm~s=&OOL7m`}B~q6d9pw>DNsSUi>#%T&)yP}?<ZjAEzK47IrRayJIIde z{N-DD0Wf@)7hIvd07|hGol&+*1g|f4W9`JZ>an(IHQQG1sl9!jL5lTlDjFUVS zp*G{P*+^p~uIc1u#=jvHiT|m^MN*W#I|oNZt=4^mHRL$S2;5uX8Ym$w>{#$hINHr_ z_@OYj-vRZs$x~_>J%1Cs^XGxPk=Le=C8?v&&59xU=dHiBBeKgwlGNLMM>%7!)02$! zOva)fI3g0hnf%D}mkqeOpJ|_{dC{8xwkX#V^Il2iPcT7>21Tj8vz zHlSzb3^~8gh~-rRLL=p$kfUKsd*R>`Uw8rUiUqmNt1Sl9Tjo4FZEIKuA$hTJZI{dZ zXqcatFl;MpA{~f^5o{>!@mQ*+9{xMZoJ6eiahD`XPR0E(34^>*ON79zk{Ukg+}INk z*&rahOzG80s=wf0{r%i2B=}CIVn)EMe}8upw$%WQvKHvN2R_+J5A89 z?n_lGsNMxI2^#6X&Sw2LDf~&u;XV|dHwqiOZzds)=9ZU^BV>7*F{t;T(_sP+*`Y$Y z0`0c5egdzT7yHKsQfod!C&KPQjz;V$~&$T;o^X& z=25p(VP>K1`yiBcauoS-JY<3YD?y_rk)HmPQ*ik`s@&c2&B0nUKCxbfoUD=@>e2Xi zTmhZaiLH86I{;#J&f9OvI4gh&w$YP&Opw+vS1A@ zCzcf*8+G;iaEXm5MDh|_|43oyPHZ6}=e-Z!vIO1~iXpClTDP0T`dY=NtW--Pnj10W z5zl=hYEIUbMLu(v?G%(OB`k?GSd+J^Xuyub|2adswL5)E*nqtpKpxNChE9uGa`iwZ z&m7UV^WoOyb(JHLWK_BGrYjzXnv5nHU$HEJlQDs_Bc|83UpVDp4X~NBOV)PAfE(=; z8`&rdb_df!R08MdSm?e4enwZ-7elrBMyGZc%4Iq|n$Pz6j8Q@&oaM0YX~zW*+i%Ij z6+T_#FIhxqV9Y{zo1BE#syo;I+qW4D`}*go)K_haP-0~@=&~0pCUfnJ!Darw&Q7oX zKtd~-Z2~g1NP3Ltw)rf^qCa0&}CJu&t64!b~vXJ(xg*mM=2TODl}i zLlq3eZYFZP&!X5~-h6LePDvv|BPfv8#FAU~??e#J09)H)HPFrc{PHRxOx61Wsiy$3 zkJT@WlwFZ?gbt&J&7WtPpDli{aL_NeSCfIjD!$sx?_ z;-ubsH&YXU^fv>MndDJ}U%wpskd`Om<;>o`p~{x~L$Y15o5O-eb8qrS7pG{K(0x~^ zWbU3f(nTgUxi>3#%Uc0`1w~Y65G%wXIYeSX&~dCqlz*cjg-&sc*oXB7Q6yx99>zMB z4nY_8IDm3|Wr}xu$U@zxc_5WS26G_3mH2)S0Pim@$kzg0R$h@IFY{5Go`}K+UTskt z1-?0Y0=lLfgG3Td%DJrMs;}Zhk9kAVCVsbbMFZ7>TNNe zPM#OyKU?mJQtQeS=k6rrSSKd5qIuUrrZ8c>04qS$ze_Zh3z%o(%J_w)BADD~($Qz- z*3wdHvqSJ+>DR(W;^Dl0T+k|if86*f4lL;W3R=EWUNM1xMM8fjF$5b3&6Xrv#kD+5 zY(%9(2;Mm|_1%4iXY_`YGZNm}SPjKk6U~exS3h?W=T!1KyBc_y%FRbv$|?K38;7UL z4v0beTh@vmB)KDD;OTAWO~IS57w~fIFYgE*mDk7Q86hXRThTx3|ns_l-?L>kGAXIHuGF_W~@11-9VK=HhCl{yxA+*8cO7$rUKj&4sG z1eNK)Oxo&7kp+YL=CJp z+~l-#(MH8j=j;s9LZJit{s(R5Xs*GBsMq9~;4l}kLNI6YWTKCC_Y+qUfdUvu@OIXj zQ!tqW=kUNA0t5-`DLxj0;G>#vPk@d6%jOnnU|Cq4b%a5*;%_r@uTOyfdvC*5VF0ql zIuBD@!I7A7&^M!N-EkwZyJpjl5;IPn-+;sB(HC8U-`7YjN71*hI-?K<1u{w`^Y@Yj zazR-bJ>=KH`CT=Yl$Bx;Xp%-`vd>JUV#y^wZEM==MJeadRLU=95hB7FbvrG)B467V z)IrMB!$e#Eih&8pV5rqxA#+Grd!tSn{KBQ_2gdh|5YJ~R;jeNJ2~$9NP7Qi80nPMj z!|-rH(o29|5zASPjuBBcr=JB~6Pxlg`hr@PLE>B&ai!;qaT_nU4#~R`-t#}Jw)Q5Q zBw=q}6}AiDpHV=6ct6i3gv82u(1Y+Zm~Yy3u^!W%-&9#WN>aMTsxK&{@nQELq25Iw zfZXP&QHrrc3|ts>VXJjzJMdg2@zooT4Nt#M;32SZ4z}cyd&+}n0V)cX3ST%DeP;cu zU^zrTBn~9P3u{1A0Jo&=#frx@w#d{clRaQhyKI0Tn%9dN+kjPGW zW0%n{9u;vo%%bl=B}fcbLbIA{8_ez-#8`&C>|eoSAEPdbWdo44yZ12|;BTp5aGmGG z$WN{++zW^de-uxOsnRt-sja||9fgV=03KyBtX5f*>uv%;Ka?6nM0F(>NOfd<6wb&L ze`MM>^1DO|DRmy`BtSc1BLVEaB6@BO=aPRH?v_J61C2vvIoiS03Vg*Y;e*@DAEI z`7YdgXkULyi5Qqh6pDkn*|oXoPM?AHB}rHs1QgvL6wQ1#XOupJU?eQ=^@Jt6<*7qh z`dmg%9!3P-XCH#b)KT_iW=RUdc0e+S|kNfgBO zRsjrfwa*@2O>xjd$&!xOVYJl5J8YxAH)cfy2;k@0f~(hyJc4H~_J<3g=oqqfj~W(a zL7bcD=6UDp9Adm+sMn)e4kpRHRWm7cZehIZu!)3zhq#fPyl65xKgz`NxWb$V991$( zCcgG6#JnyLI1`$Sq?_1wnl)M^2$j4^90(Ay@(T`to|h6!FtmU&Ocj0|cU5Xa-yiuG z$;?+$+o7i|8ZI_3GbNpjT2nfn9oo@~5a`GuyLOX{nh3x9jtFTo_vlPv84E*s*7tEW zK)eUY;bfIt;gzpTD-01!#<#7gC0JkKls@)>Qs0o`-ca@Aj2D#e2lu#82;i@|y~m{3 z^vB{akb+}ia=5GMETsOJ{I>Sl%M1lCajj&5-|-K1#=VsdgMQ6?x-Il+m_3UdOY;<# zETx0~0?oX06ccz$$lM^-%G((3hx=OQREEdRoiJXIU=~q*vFRZtEjupnRW7t=)~(@h z%0uVa`%zSa-?rfufDK zz@O6l3)Q_#&vlL8q`7z~VPvB5c-IFm=SG5G11l22yETGCXUb<^rB5HI>^t+xe zgj<(`0h5&%dyNDdlBfGAAt37*N_YW+^(BQg%Cfab<(PK|nW5*M-qVeL5h zVzP@{-mi{mlQOw<@GNl9+4U3qw2$^z=z+rAU}#*JfQ5^Q(I`59(@*!9(I=jwfjhw< zzv5d;A>F>rv$Sr2in4tpkcEpGn!UQ)6L1M~F*1Xeh)@~2-9!PjG=9vfR z!90-5ej1J@e?)jXCCov%y8Nvq*ys8988;<_+6{@&ZMWul{aJ)K%6f9Y^Alq#?I0w7 z1Xq9_?BJZ7N-XFIG9Z@#EJaB2CB#I-ni%k@N5k#58!D@T7`cP)1j>nq?7T6F8&kUt z9BsyDB9$qC3dlD?vs#JTucmEUlYk=}J`D2~C)VgQ8mN>Fi4lKN1rDJ+U3&f?CW`HJJ*nXa{jL!_A%C%E)|7p9sG*Im3KW2J*hf5w+3L}UZoP}hi|&S~8g zG%~fZt$O|5OQ+A`3K19Of#4Q{uaBS{ztTtIg2Hro*DF&?U<5tWTjQ&fr`Zuksl&Bzf)1eZq6!yS9qbyWD zO0ck)vi~jOqGJ>z^re2D^r-+c1%jnzTHGbKJ~)3f0J~cfzj#9InLZ?Yd#k-Yq)kyL#}f9I-pJpO zvp-n5&>Q55$wb^EjjeaxE#H3}OG}=uvH#zzMs2A`ESrC@r3{}Srn{Sr7hWOVuFzVH8k8*&=;s2~tZ}*Was|k=d zxv#Obs`i2xPmT>tYS21>Mh17bFCNho%H~q=Qb_^3GU$gI&YxwKtO<@6{+Qmoeo%_8=Ree2C z+PO2~)0E*4K#jL2%KDh_fLFk*ILkVB^-+<;ieI$NL$W5<{iRZJ;AdJ#hLXn7WZ02_ zR`8m#2+ca%d?7$xs~7Kv7678%VC2H@6>`pbNP8mEU)=OWrEn8ZLBi1&FaELq1Jol5}foGoUTQjkHh z%4zq;S7895ZqG)xAp8p8J~aQEI7*+-Ki5-xWc)SN<4Tgj{_e{6#?-%8`gZsf=RBpG zNkZXeRpJO6l)K-vO^FIBmq73dM z<4dbnlBF!RM$eazIod-?gH3slhV!^6UkCcyxC4AD|D3!o;9drKM=Yn}F*X?pnwNV( zpxrgpdQv^_CD$w8z43E{J!Tl623up?Y9NbRC*U^AM8zr6u8_B^VmtV{tmWbIB!2O zr>6mGWWG?s{Mec6<>#K>m4sj_lgWRmLkfQbPCPS5wdQXu+rVvWTB-#nzw95La2qqZ z60ZP>7*%NU%P z5H^PY6q;MxL@Qu{en6!fb@LB4JLTF}o8*R@}ZO z;|lzu0z*h*p1u<={_n0i9W4U5eyjzuenDV~bQj!qC%fZMrjFv7L3e~Q;XOF_i8>z> zUB*s40E4a%0+AY7zeZjITQjiCtZI)@~=s=&G zj&Xw!{#wB5=EQ@JvC4{uU4fCSI)lI}6-8{xa7y7x#a`>+rP4t2LV_7=3qiFucLyj8jGx#124@Kw?EIQgt@IIY?smtWWjzfmtH>8ak3;l zGRjM}hW{$zHsf--x)Yp@>&yEQmC9GxYUA*t=Z_xc{VB@B)QPAMW6~dT1HJIV<1F@F z1GKM7lP6d5FF}F>z;jGxLNOH)wON*j6HTs>doC^gPIsZHA3ZzCPpVyUzz}_6DNJ%P zswO)->o;9;uT0j&aIrhPnVM3ZLdHO5O&CO~NSL^~Q=Mz4U9mwZ`m0!gEkH78w>bP3 zSUf%>$@@_GMefECDMCNFC4IMHX(su|*7WT5v3S3|EIAP^cN)$@b$!kINF`x61tr3R z?y8_)&?|x<0qpnIuw}iA5=4~|!R@?haZt?NKHyy|aev>ih$7HaI{$--n)M#FprFj?)_h^# zD-okSOrP%;BvG2~FS*gJ>Ubsf;7w2mtcFzj;@@atvoo&&ftlA!CVCgxAyn7)`YpPJ z6GV!qA&!#}mqo%hNTol4aL~e<(OCqApJi-aiQbS()V4rsoNcoO`^L=VzjS|5Zhm5H zIAh$h81*8f`<7kvAW9;50?sVcxbky!fVvhsWt>ErI?pdQ_oN{-qgmf8h%mVU#O`8T ziy&p@<9S#sNja%iqB2q!_WFH4yBJTtu~CEMyDOPM?_qVXO(R#LYS$ih%R8G~xUR@C z62+bS{ zR2}!8w9)2 zff_t9gL2&V%QQ3$@*M{`f7C`^tlJGlo-*x)8+Kj4A%ra%Y@)qp$v}w@sCMSp3i-sy zzKSCur|{9aj7Ae@v|jT9TW$TUfmoHkOHQVk!URc)DU!Ll5fX>uxHb?sq(kXhy^aVO z$ub}hLfgo54^4s-pdgVcBXp^OU~X7eldh|8Ou(>!dTfmmbdzX*<2hV3Cwbc~9qlCu z^`Ess3wV!JCefYZav^VErx5!9KIUQwb;-)Y^Qeh^q}u2nwtXh|Aj-NE>!ppN&KN0{ zhayJZK?9=OD4UMdOCZg8sYVu6Y|Hig>n2)(C`DX+bro~BySNpquyTNpkC9zOjUKOG@$4S+Ymvx;ZyZFy zeolj^X|B5o9sZ)q*W>b{ZdGD1JUxgAZ21ri5<)uFwzXAt0w#>ANE@%e0z|P{(N>f- z@Fl$N3oO5;NV2d)b?Z?$7B3^dor4t+@I>Zhco2u-UDngCmTx#fF8ALc#5<-d5x!n+ zfT7`lW6>YGXr|UE7?>*-GUvAt^0j@4co)^~Td^Vf&El4ZcDeZ(G&Q!@Q|#8xG7%S$yj&oc>fndEYBx>Ouj2m?pWOW=?lk_!H*f9S{u955uxyMOY+-e_u*5Ts&L znE#jbK0RH`uP#kEW4~UPRTr^i23i|R%!*a6~i;D|G#eMmJ=Q3DuaIv8)eD~qo! zRFsw0_{TT|?(WSlg#7`}N1MUAo!F9pU;BnSbNFlY*cUC5Kr$*2YCDpMAq`9WhC^bV zYi8a1^;NqlIXJb!{$~O>0U5aHBtT;?>Oq*b0>T+J(5($Z@2|9fYVdP|zd=m1_~JM*WHtZbH`0laa4Jx#7ILWITG+KF1QvS|;_H%5=g;71e_ zVU8|;Lo%!+{`J4V@gxo9F%4-1yH= z?5Firrah3$+$_FZ9AAV4ig1F(mI#fTfzZO;QE&J>)ziBM*!WIVEH~1c%p906orpn2o4_ou-v3`KiP3iti&sVV_7;?q(LNA>+;;(R7|?VLkKyYreS6Rr=dHICqy!YJ%oY@Xs*Z>Tff8I4zHrse}3 z#H~akb7C{_%TpKrlmQl91K@Ty(XS0rS4{wkHH|CU5Pu9yU;li$w9b!!IaKYEdi!IP z#x#WfH8a{~$IJq~dBt%jpIQYQ&Y5Q`ao>PMQT+ z1Gui8QUoWC+$RfiZL+Z9|A8We|KR<=yfaeN^xxH3KmXCyW>z~1a~A7g)iPLKrHd9c z5ZznZu`?H&mqgKyj6-CiEdHTRv#+&{S8Q@8J#>@_&*n4Ov^F0$v}w8^_t7D7XjLFg z;%&tU3lmp)35@dB#&^@D+3#W+%YmC5y=Ht;^jWDeiNHb49Z9o2FO~`8WJf@qkK!?{z4B=8&dvM|wsX z#NG#}0Y7VNQ$5ToB4)QYG9ONi8ew-HK;52r2D&&clCb0ZmUE50$yll~- zB-mwywllJ>LVmNuMfz=ip8n1kv-`wrLJCa*ezWM6*mOU#1yG(MeehECzRdY|OlkG~ zs1V+j(XV^+?dGK*g@fs1hDTbG5iGRr3Ve!tk zVWYt^M+PkcS@hiR3#cwGpv-eAT%`{v6d+A>XC#Xk&7_lSuO2os&2onaMrv6ZL@rn~ z5d~jX`Sn=6881%v(Gh=0IhHJA;iZ^$2e}De@KpF146KQ>%0C;Nx1~WZ>r|W#UcAWi zs=ZkKrlyz^aGCXFE!2xp5gEiNWXkmh2NGn7Ln+bD+H(PJcu%>Cd==80!45U%m2@$4 zu4oIlFLh4xv;g%Gt(cDD74l!9Hyax}TSfz748NkX*`zFKzBZazY>kO6U@*U1>#5=P z5w2@ z;0jecj%t~m(22xGgwbj#{@e}S+Q zw4C$SZm9X39(ktiJHeEW8iHheboWqBn0*{gxQ9ShkLD9s?o#PNV<^R!O zN=Ta1H28Nq4s_xkSI290ta)vyJ$aIbXZWfiWLWF=7A%ntWhaW9dL9XIp;{!7;9_6A zmV0IXa^5?+4_K#w;Lw-bdxI8HC+_~Y89p$>7}0XU%!FcmnRy^UOvVof%LOD6{v*st5L);^Q;eZAg-A%;s&}N0?QU|& zwHu3R(;!W>4+*0QCE_TtbKV^BLJ?2BTb?8wN5}*vQoN3H=c9$quX1W|u>jGd@)qx>{ZK#$344g3e5nJLUm6koTN1c$za_E9$Jjn1u-;4Irqlv-Av?u1*S^xmrPRXaa%xn|2s`14~ zNjP&OehM!_U9=d6*%6nH{PJy&KTOJRF=Dib`)gszyA2LzP8eDBOkUJvh(-F^^57^_ zQgYMxinaod@57oZQ0GF&*wF?G?^LEJ0#R#Fw}Hjm9}?VjNbES4Aaw&Kp;i5yZ1o+9 zZ;RV-Z$RrBy#V+ydQfudDqH3Ckwz&@wQW-~6KdWeImetf0ymltuV)G zdFHPQ-dwX{;}59)Ewm&4|Xjh<5JjI`-Y{Y-FaPvbigRw9@(E7 zSb&rtd0vj51A|ZE7fXxLT*^BruFEG~+u5>_6&GCOz(`{BQ{i6q-Z6AwDCPkeGDrTP=FU|Yr{L%Lbg9N4q{TP?Q_@6~-lOSU+{qpW>{RNUxvEbS&UX!J~ z6J1${&&~j=21}5*67@l5e~oTyb=$)pi^5e?&O2>gGg$sl*b2i567Q2lzyI@niP+r z$5WjyNZvwUU3VBW|230Ta#KcJH675et!Jao&bQ+v-3gAtU=NYS*sD87?+Jg{o zB9O_>H3eNlZ$+4x-c(_XR)J-5F-T+7aBwaky$&tYj^cB~9im9;jPLr$cyHHXgh3=Z zG?mUloROpK9g19nmKmMK*;-<6qB&Tb@!>Aym{Pg5YCR?|+o;X({vpqDk4G>#UEEhl zKyy@2S-AWWiyktVUoq7C>e?4W_*6wvzt0}rwwQ?P8eR%BJTndZ!MhWADUlsyAav^c z>mqyF{*tXj)GyPUx5Gm=wWt zIIXw8q$H4J*8=Iz4I*UD1VcL9n2jlkB88f@^pJ&XZA2H`>jh29`RjLT$-dSeD{0;t z9k}X1X_<}0-{@1{TkJ!r8l}?RWjp%9YWqHzHY7dE5`~|70Z@G&8#BgIz* zc6*z%0b;pH2D}i>z@rO1zM;wPO9sY%irvUC%TO-3nwQo!B-C}Xvti9ZfaR@lY!8b9 zo6TvUUw_orDWh_pof8jK@{z%jE$-82&(5`~W@gENKl*ed$Aq+%^o1~HoD3ymEv%46 z9UF`>tuEX7_4y(@II8;CmGkZ@{t(F3V;uzJx3D^O?mmnzk)Y<7W@+Ozr{%so5JpW^ z)h@S8aFSD;zMQ3W7^S(W`#a!qqa=Vkbkg0M)Q$9!b7!0~*RABv3(n<6m3yKuweC(< z^PRr_t6fNzw>J{K3wia7yZHDk5N~Aj8Q}42C}8jg<{lZq@i8z`gY~0bU`AnjW&ABP zbjxHDHPX86OpVamHT^rnL1uBv9-;#4nQ42p(~iz}+e8GXh3eSfqaTf?K}7%v#SWf7 z&{UDqT$_4@O}K(Vg2@ucsVW{+%`9smB%J9j3A(xlE)g@C)8mXOJTO`SKPlujqnRW9gik7B(^U&;5i?@l6t*NYAMdsJ))gMR}qHnrM$*eKurJToMu=* z`;4j%mOw@<#^_$0{4rWs7!6rX<%dFcgVTlkHJ@X%)i^g!egb zpmn@eLaBT*x2?na#GNQ8(*7xHj&W_(Bnr1C|A&|%nGa}wmx3{PomuzF6YQ#-3ri7U zuv^kv*S$OlgF73o9v_Pugdw(;n0VYOzfo8AAH)ajFxxeRgMVGps=DW)oZ)xPD1m6TP!WW; zXd5Oyi2{PC_<+O1mfSu7-D^Ha^HG!%Ue5+7Y=aN>Zq_@5*f=k@-1Y%kbRj#|E#BYR zL#JppQGkJ-d-avsGC*26I>&4jVxii@wIuY*}!f3roodM-bRc3YWBw%{NVsi?#_ z=Fsc#p$!MMF!{PUZCBC}r1FR2Z4FRNrn<3KB)((pjF`vwd|Y6ntIqSS9pVH3Ku3gP zFlZ)9TbOR4+ygRvx_wP;K2|Ml@If;O`&~4nrt=?B$L+y6?FMe!d?QX$&Frp-u$>(F ziMYUPt~%G=kQqBVda;|UOyC&gA!vI#sbJV24NhWMk_I0I0T+Hb1wxWh^4>2dV^dzj z!{v@XiNiA`IwG%bBdgrb$fOuEI@3wixY)KSs}Fm4gQ}OO<@!`o}8nC24`>&z!}0Cf@%HFCD(t z_7KeB?S66&8ELJ$WRb>&I8_^e8B&@@5>=h=8h1U2o_G7ox2Cz*qoU+4i#t@IUW;3E zP;mKMj&Jo`9Ui*i4s$0uCBt!H?VPB(77LFF0OVtzf29-=$BFWILBaNAj%M#tCye1m zh_>zV4x@84{}S{wU(|1m?)(8m4nH*iJ-h!RQG9hJ=fo1WUo=e19SoDP#&SD&n$X=m0t}p+!Tt^`l>P0AmFXb~5LAIa2yb5bcTfKU12yZfLYQ zh1{&ZRT2p)mP#Hdw9Pn_a`ts|nBi$(_nr=+k*%L7l5Ehiu*>2fFaQihB=BWXj61Ns zF{*st9B$3>C7^2*XYj+9Bq@)dG^zD=Se;E+X}tR9wIon7Ut)-pW~%a*+2dJL#dz#u zq*E1JIO_u;#^;|@4Cvy#rF>s+^!|)b)+04gI6S2a)5NGu+rj|2RHN854=sITYxj&?s-r!e{-`BW2 zzBEV_ve+bDksFS7EYGcfNS=^81J?9g^izTA_FG7CQ@XZ@J`}m2Gz^>9vOWf=RcfBk zhYG%f@wET;5-cI_X5N{p{6yn+A9D^OxCcNJf5wfEVFex!MjfT8W`d@1*b2TS!i6}@ z3rUH@hXm`bUg~f#ge+3j3iXwc{5r|1$jH^-NrTkodrY`QOT0>o{aGJ|k1fYT0-KT8 zp1u_l_R<(q?`Fy!J!*yuMR^9F{FNy_1h=QVP&sIvYFk{HFHp5=fDEJf!5MW39IH1t zd{#^%iX!lcPq&)>aJoLYzWZJNDczeP3XCe&UU z-IYD!w8%8W3rq2-2o7OpT@OgcGkRoC%CyfSqj$<;$0Y~?Dh#QRF zg)>?pF1u0h!VlyU`e)8Jmc{&a?~q$1`wF`MuDNAuoBI%bvh?u@!W(JX7gpkonO(h( zsJ-WZXEz^2!V>9WE~RjP7HaPtbP@M&Vlj@HW?!yLksxC^%Ch+1SiuJH+Nlx3CgGBm z+~muiak}x9Av^sLeeSL_YMO}e5CB$*$WLJ#!mKRIhvH4Lrd9SkNXRGQKRM#~hWc05 z*Yt7X{#EZYiW#JynUEk0*reK}Z~=dh)bkHEG}^?Fit2Offh6uJy*ta`#UE5TPfuuO zYqi2Y3O>vg)Hd1r*hf-tbvNr3KP}k=-5?_3-Vaa8MhQtq&1ISXSjcLA0!Cu zRh?`<-3(XTHM|bhe_*;ZBIM=&QNF$v?JJ`(az5-oy?2OgPCNBKaE}Ak7Mg32D)~jR%7?0fEz2eo9a&!%zFECgF4-ZR6*d zy+Rm43~D)f4rWi}G^gqNA9lp4;TJ0$UPmnMVCv-KnaIPRuNfZi_I5WW(T?zumJF#- zb%|GA+TdbUp6C`h6FehzM=i_K*A?vVU~!Wc+^pgV#TYmK4GpMLFt;9GOCmAVCZofi zL79Em1Z%h}etT?BmQ9C+Hx$`?S8bJmFdX>R_OliF>e!x-aJF`Q%di?VBhE_xD7sXj`&#mV8fmAs&a?po#bQ{77^Uk=IHAT_a z8B9;a7ZGX|z*?+jxA#4WbAiQ5$u}XeC&5|)=J1V_>uOqnRQe_bS$}6ut!t!m%m^2t z9Z}kdcN3lP#YC5{1pqqY6od(l+? zp>cfxbV>S{ef<NTdY$7-;#%WQ>mG%cLb5YjPDC%CsH8?xpe*HP3RJn!FQz&X8L8 z-?o4Fi?I5;Gq-8ZPUX^lx;O(E3hGY9&W!-$=gq%*BAZu|PF|;`8?ydjrBt8J1+Vo4 zy*9NO$NL{X7>s}FyN3}?zzwG3-58V6s1wW?Xp>+(=B&M)9eFiw{#q~S(@ zVQ7)gvHMR4=>2pd;ArzY8;2vF`rIwuX_>B1N}i?Qq-G%oBv*;;x}H7z zY{IEL%USAeKRr|945G|tE|P7}wtE~Uv7P(Xdo5KVBm7qKcPcdh`+;RKz0YOXv{h-4 zE#LMVAAvB7@EerWnOzyWU0$1fE+XpzTu~Rs;v0suboMiq0V@JZN5@rt@M_LxY%b&H4Tk9;;!0nG*dOU3zOlDw z3lwzB08N;%Uqxow_(NhDSgkqr^Exv-ISt3vf zzd_2G&uV4q?XlN=7PAemLw#+OD+K}|5+Q{!ZJ8-P8L{-zD_C_C1$UU1etUel$K z*cQ|qcW9Fu##0>p(~bN|G}rb-2gsgQkngEp?*9P*Jz+mACuK4g3&&oS*ukzjcf#w@ z8_h9CI&?hqAB3{u(vN9yum6$6f0Y=OpsJ9vS)z-{QTXLM;K5B#s~eJ6VdnqQSf*1M zvWi%Wk+Bg7iFl|S%XYXE@?+P$h&NL^_?YfY9)>-L$LY$|79j{YmV^g8e;03O2`A|O z2&At4h^I4&aG)EiNkkPPNs%AuTM(8$Y81NJaNzSnJO%?KG{zP<1Mqa@VahCv%=>g< zLGGw)uU%Mlm5~VugoBD^vzN{BG{ZD_nTD*8mxldH+UGp`a4h^BKZOA`F=W^^v(+;$ z%?)|q>8GQ&!OA1kpPlI zY7lI3u0V|#_&xl=vzHl={3n0&mjI&=p6)4W&BCxufY~AqhtnsQ@>RG#1A< zK2VxC1mVf`Xch38Cg~ub%0?(sp)$VF#qelncus=&_HajdyLX$UB%Fk9bS7iwLP@|< zQGCn*%Cdgy7U~r~Yg0v(eRaRco-2$Wo`B@T&Qp|6`FH^84@$?UGDB!iPziZ7psoED zt`DC`Z+?TG8-$^CPTk}U?@v|8>NHakcjE*SV6!CEC>r!Bnn4&mj~pW1HwZ>jYhZfy zLE5-lQSsje&(7tC=Vyy7kwUDi~+%dIe`MRjkGD}(@OTFnu%_Engm zw%?h-+w*tcq~1n|xWDi-jiwGhUm)|`AbVD)Tm#}{U3fx=0%cA@{{L3@Aj|`Dh!B?a zW0+==X|)I8enRtCg%urU8uLMMu0qTT%(jCOkRHt zxk@|}lybJVfv7zcw+(r$aJ2wje^c?T?3lD<+=Vg&x)1~YImQR?0-FPAw7k&CpP%&z z7_bT9)^S1876<xNtfZg3 zhSc5YJKh6jpalk!U)DDV{kbAt)PiqQ(3C?Z45`a+M0Vkikow}`4F;|?S!v9bZ9M6- z@?-Z_a+fXbpSqqHaH>AU@y6~{#1|(^qM85(=fJ- z0(bDJ(3XEucXPW>=ZhYYWsfOu>B(glH2(7m?@n*xm9}$&%fpL8I{G#Kj(Pd<_UkjE zVybMQayHtnc_DJ5sivHpq-#pgCqjv&z}DhhUU`G+?Dxx@j@*sMc>1qw+UA~Zr#4_v zx9EZ6IzWwFV?o!Dy95AhSWv*v-^vvC#PZ{yV;7sjdBwangv>>yN-S$i(?67_?Q*ncPH z%{=0J?C^gP$V}SMGDLMDISD?C?n!?63!VQoU&!PLAI@5zM(Zdm4;yG4`I5 zBD~PP=b77aa5_q)snsCcm@IyVaS$}jmAj?OPDlkvNlfyY#QCWMJN&>TLm3uM>*{rdD(EvB^-1zvq39Z zx=$`$UtADn2oR3N8a%$h=g_9mNxYF)JAUH?l_m{hCiW)T5Yh$4heD=+d9hjklM?yKLwFn+>& zr|$)9a-G=MI!1jiMph0E!i;aQbaJT&>h~RC$HcnWjR8J}-yj0hE;Hujy*SAzG48Xs zG|iPN+pNXw8FXwp5MiBP_Pz6`A6q7E(qrnciZv9(dgVt=ngMT7v-FCm7@l@X`*_4R zn@hNvbLJy#J|DjCE4SFB`Y%4YJ)6Kl!%R&m!`pPtg^mNr$RzN^ZqN#L@Z*WX)1K#d z!}!<`stF|d^W7Bu*S|J=GgqfYu~k=`B$DN* zX^K7N7~qnPI$yh{1Qm*v09Qb$zY$ADeRKmZ68qM9Xw7U81n8%D z>R$|68lJMJP!g~#C)~zbnSm~%LNh`?>5J57yV0tFv}eME3&vW>TSCQlX-jcU3M;b( z2O7~o&EfTDOW;5|I?({;nr}{JKt)-C@be5#Qc|U!w@bW}4Qe&7Xxe=UF!AP37JuY> zUlzU1O!dIsBdxrb@&z=!0RPW>>wnh6XCIp&1J8KVthgSQ1k7wrqNJ+By&Fb=6|fEu zppJGOG!jo#j`xmACjUumuakzd!@qC6AdxcSS zZ<>7&0MKt^FiB|pVC_bnuDt7TP>wzdl(E%k&8|}KcP8N^s#2H_@GxAwQ>t)+!)zqi8 zGZmYfq7{+W4Q334d|wbExbc#k6bpo?*`sB~7vxukc-wt(7o`>-NjSe(>09O5^%k~A zOG5rHF=K?o^FivP`;+8PY;Y~e0d0Fn@yCmgFLKAhyrUy9y(x`n?D41sL~>d9O5X-g8^4Rm-w^x?m@>=eCWO#MfHILWQda zZu#9qZN&)Md7_IvR^5ldW_u?KD3?>kBC;WN*!=pdn8YHSdeg4-M#56yB>JKn3S6I4 z?dV5%dETssU$Ho^Jtxw0C$UJ!@y{M~&JKKhH&~3coZO6PMJbYZsgu3`3!H1L%ZW{T za{Zc)Ean#}GZ9wl#6IdliqrZ7Ds05$6_1f{)1 z4@L3DaF5*t9xW+0zb8)*)`(bM^S3tK4m5I8q$gU_ux!S?7$>>T_>vpTkI7&?dKLp4 zrpsgF(Hrbu6`G^)r9{XxiBw5Y*F*ZmstsppXXZMsxe`}wwJ*uXV>$JnI7C+IR5ehi zCBX=8*TWc*3Gu%^5>;VOLvnC0Th#+%!oTVjPW+^aM9~(ba%W6qV`@KAOP#MW!lEoq zN{5b_HJONuN3>*_3f|Z}CyL?}h!ZE8JeyfZXji?{@B6eV@IP!J#b0UJtXc-T9)~F{ zR2_x86xklO(+-c}&w#3vRI)i5j>`XB-q!J(*fX`AB)D4qi&%8G6$9|?YGEF6kk1P0 z*W$A22t>8lx5g{K&dTd)%v+XDeKNqh{~;8jKd5zy4N>E~CQZZ%6Tw96!`FY;?h@Sv zLNd*-<3Km}q_FN>?QGX=Ao79`N%f>_E!A0gSImkp&BU(jnX!Fhq?w-I2puexXq;?F~!mRSLctGA9cM2eV`6On?kh;bUGZV;A_ywb;f1m(~|SmOM(WPlke( zGql*6%Yup#@p_cqAoLgACEMmgI2*D+T0nMecwXn(k!-B$I@S zfmHvtRj~|=^ZV_&<_fJx!Go5>qXT-RK|lWLGwpe3kljWKwG@_sYFwT(h99J&{*>)y0_GoE~Mtkfk7Mu{GQd z8D~A-^mbpDgWFk(SIAF>qwLq3I``iv&&uG+ee)D@tjgWPlKjF=0P7IJrQ)fX%>yV> znwE#%P78YMmY)>Rg;R7Tqpic=fWsNs>#Tu2E~9E975~mgz8v~&)lrm|_l|9@TtT=A z6`}|KJ(}@EFzN^Rj_ngk0MUbKCv@Bfq9BaL&aSUE5$*jNaw##qANGc{iAX>vfR0uG zlyuhoM>L$%0k5(b;$6Z-{Ek=5PLN%Z;wVzA+l?KsL zgS_#8$=QiCqWynUt4?tMMh&dbqYEY>Gx9u)ayIDJ2f<8_oLSf6f$DHOhnof8l#4C1 zz94DRKY)zd2x&M^ZD=IZuIM#$uOh|y(JFw--AarnxM_dXXH>cjUt9EXHD6-3$zy4RX<1}!rMvWq**@M?uT-Lpoh}JVBs5~h1cTD z8Kbn*(#dKaF$0H>x#$OsM|JjOH^J5WpHnw7rXY(M8WARN<(8~)32|2vqeMz*T2s`> z%hhQ|ap>3BIcY#btn1Es9C)lFbp$J;Br3njQpIM_D)d^NYxM6&AU0Irl&hh0!yx{p zHJr>TNiOa3OYQxh5!ym*72Aa1051Vr=pdc=A~~zbwu2Xm>K*9gxyl|A}GuH1FiA^tUp5* zm~~2xH$v@Bk*CRJ#L6Zb4lwq_;mLFX1X6l|meG;P$+w{-O?^mV{{sULp?kAm8>ejjF82ZSc4goWEQPgHtlD)td?V+hjPEwwmr;yzzHP7Fd|6Ld!Eh9hcKx1C)OdwzR`!fXL#3sg6t`XPz@AZmw*DB=Y*D!^5LXIX@c`T(5QbXR(occ8~9X>X>Sl;3W= z#C`|s9a`xdb_ouK4+xjl7|=hX=^^6zmLqE;EBOmgaiZEii7}QfD?nmI<}P#xI)RvS zSq8T7w))4oLTOd(IBk+W4O0t~Pog9Ck{`owN~hI*4@6J<&zHPr8R`0<_k%Nb+gC zv?DfZH+-xV0(L&^4u<1L+j58pY@B^jJ=?k>0}Ic-%qce11|tOlxxE6c_rjgK$m8zy znVsb9pfjH)F_Rte?Eoty={-S9m)1MP-SH+0C2-{(9Sf%(83Lh{msbbOg4a?>T1Dcs zribb8@4i|B8qpUpAb(_Qc1P#K90^T>4k=3P&{A_oBjUp<{ZA$fuZ5ag^de{s{R&HbRJJEBxGtI3AbVHQWoO0{Zrid~tI#Ay`LjpHEWv9gtG>#RYkkm-tM< z`EorA48wOD`{ANYVJW!Lnon2E(!nE;Y8=ck3%$cQo2sk^q+nlX>H|UXc21zb;e{JW zOon&{zi!6`=58bR>Gm{ysLdwyJL$|TlE)S&{TRKc5?2v<%D%YB5p6iP1Y&qYJ#A)&#n{>94{c4|mM9a&ur})|@PI`2){# zRVyeJQUXS@IG^11yj$6y(Q|-!`#B1WdEzB3NmyD;Ha88dc{@5Lu-ppW2NcIiz5IJxfjk!|DXN zMR0LuY5gTABSk|qZ}7&WiJJDIw=m4`PvVqOG(qF44cU_c#nD;|`-)A`UL^u1bI${% z^o$$LK}Dp@72^q8Qm47{x-b8RNryQikxNek3C(~j9V4M@vQ;rX7e9caCx|(m7V{P% z$w?kY`as%xaSuA^(O(}(#4D-j(k0*hgz3!QpDo+9Xf2V(&cfnG;^u#vMXD^=OW5_!iWG%%KUG6+C{z zpUr69V(#w-m)A~2-67KiUY2}_6{GipgJgM@j;Nyo^4D6_H_tpr|B9-LVo-v91A)@I z|D#q&fqKUTE2AeHe=EjeN8%{@11}5x#V7Bpv?6z57-rE5Av{1|LL_ep340qwh%rH4 zj97%g)L507x7QA;HC>JNV7PsoWkdOb_fz%9v#Y_LG(D;VWVkEajA^LDQFO>MOuKj| zg{t>Cwo2b%iQh=+x5yed$tLz07*{RvB;K{S>Zt^ErvZnF0)Jhk#toL5jF&~5-Hp#l=>MI61P~+U}({A00)zq zjiMLc*dD2)EdV)58aGG+auVzupb@?CGm32aXtR!p9MHhiA96G~g&9(CoNmprB zQKjM-C>$nAVYv#;=9*_K$7H4bJHVO}snmg!c`@0Ch~?K-(bLoJHecn9@RvFs`64DS zG1BZJ+(EKd+OARBU9k*r{-p!y%@+6#d1ECW
mL*@knw8!0_0}cW_q$IE-u)ZCA3ie6{+(To;e6yGS z;vP!Kc)N@U=?F_^LNz@8vBhaMGY5U>1;msA0lvX6LUh@C6t?D5$JnZ2DI}N3gyMX3 zL6zY!j7wf`gY-j|45Z57z!n-7GrSS@tsx*1w`JPu!FoD&R)^-bYK#w%5@YPXt6FBN zm?WG#VW8w!R}u}jAL|BgWPUw9 z(JczQnf~G)oO_eZE6D5`!q8`aoR#Nq3okZ05QM$ftlEG{dqz6i0g}4I!^DO@T%+dQ zceKQDsW_y9EHdOP(*%{vIG6%iG_(zdJ_n!z-jccByeREx+;_}=Dcy6zdQw=c zI9>!E$tVn*BMVmD{Lmc}Z$1bnq;Hn}4f?zMft7cA{2c5Qs(T`KkcH)Gm8np3mNmVU3MJhOom0Lc z0SBK&g`y?xVJY}o?@ziqondR?X}#b+H9KX8?CN8c9tl>Y|2rRoKq;<{N}5GOd{IB0{)kIlUc@0D*@h zE+Rm)lDfAjfuYls3f40R_r<@j`gTnw8|PG%hvKlVZj}WI2H3BU#vV}a55*0N!)lc- zhNv+k_)gHJCG&hWR4qh2`@FB8BgE#?_X}yr#vCup5Q=;FB2*BB7z~PbExKW!zCnV5 z*CWBQtT`}+yyue7u~d|^u2(z4WS zD=?8V;BTtuc2s9ib3p4*D! z7P3aQ96zFNI`SlHg-Guo<)6-9BnVeF=_3(jFu1Mb&0aDS@Gy-feJRho}yb2X7XoENEE zBWRpAy0eH)Ui_jf3>tvmIujAkna(p}B+XP#9R(I`O38iykuVNMEn4zi;p*VLyO+N0 znrkkbYOT=lSYm!03rf9%sed2ZBkF0LTbk?kOpZYiEtOFw)3kHi`kTOH+jcw2=s3q- z!`iYfhJZc?H=Ach`<%=rsi)J*Cv|ShCCvLUrpN_}ZKCoHVA9Ppg69{3q}=;AtG8H_ zM2W3uns59Eb8G}5cKk4!%>H|k5fSTe5;w-S!orSRDk{4cp>k-gRNX#=#Bz3nng81CurE~~2TMr0& z&=<|^Z#+6LRm?1WR>q~p=Owm=o1&~*5Liz*6GqW<#B}^^7;Dl(7sc{!S1IM1Ushkx zo^(LMzWPBL|JtTFdCNh1CQdd5w0m6=~vX(DPll})1&flCYpErqS zpg*m=_D;!`i$U9^-CQBnMe#4XzK$aC8)L<_UO+xjYJPq`m)Ij%Y)Ns~MPsWd+tx6* zFK2{np@vB}Eo)%LW|Ocuu{3cI@aT@=50k97_XVGl_)8WgG;#sZB>jTc_p*jM_RG>L zwd^N?{ptUei({fN*2V}`^dlhMibD^l3~I~1TLaG{35C|1cv6j^iU`9cF+w49_0d%~ z+uo(>t(~8-b~^OZm}ZQxy;m4(@uqVY!y{ADxFNi5ngKJ%Cy6=)$sH-3EY^QoXsmr! ze>%7o`*E6O>&G9&$HYw6?Jf?KDI&fQCK3s2YcFAPC3LIp6?FOqL7*+4=`c`kl_ic{ ziE;S)FL_G1tYN6H4s(}D@!#-I0D%&;AyAckvG(=NqY&8&?v#@9{#}F8tk&U}H|;RQR3Huo zhW{RIC^=lqp6Ee1YtX1RFTpvf?(^lFrRZZiM1CDH8Ok(@$IC0rV_rKtT8Hy@k90p8u(MHxDLvS>uRoYYUq9h~BJ6Ju9+ZD{_j@v{ zMCGV#pVqSfjjdCx=$++#K3m7sAT!HX-nswz_Q?}XGl2}3La9`BT7vQBrPgy5S7@j` z9hP)--rqnB3%$ZkfBTXjmQiOI6m@*V-q{$)*v}M58Dq+~M;rU#SkUs(Wq8$i`ro}$ zZVVLoT@nJPJBg2rL_qh|*bL7V`5o&gN=DNxEQEs*YN8*n;;u5R7N<@9;7k*R=jq6< zM76h>lo;6+-13#CK2ki~;o1j_0N@Ih(2FZhtV=p)DG=}o6AR`+5CIj#m*1>st*p%Y{_D*`kPg~5t+vG zpNh+VfRRZn-*z5*vs*C;Ax%rvgDacWWRbOBhE^7y)XVGDru;KFb&se^Jv)Uml2EhjBZ?x+x#Bk@ywW_ zJ`?6KbY8IS_!NFzr1DWb+cO7VyzWo)@!)$nZ$2kFX}z{410Qhe(GYejbJqBcDAY{l<+ZM?BDdC;b*o8VV~C7UnuR*` z1%!U%2zBey-BQKGj?Q9uk!3hzD{uW^Y zm6gTQ0GxzD7>NL+%;Z_m%C=(Pi8x9Kj3+tUpRdIN=83&Cf;(FJcuHi-uOQCgOiuMF z!37DEfo7=bq3u%`eo?Zqz?#b(lE0gLiE2=TCuZR!q<+I z3``c?TciDx{X)Zj3-eE4)*X;;Z0lvd@db42f!F3^cs)X0Oz^K4`^ zAcdnPbQsEND1L>1l^NqLajS$#l!$$dOFf(2MKI)<>#ReZbK^PPUo_+4CD$_WE4^m_ z(UJc@6urS;-X^Dpc8A*@>49*y-l5f~-ZjU<-Kfc$3-eyCTb|!k24Z#wz+>(-hj(c6 z{M{#STb0`Jt&#YQk@QQ)iHH}v447N6ZzIfE;k4e#qx_ke{R0QXKq8wbE0Nr&>32Zc zt)9oKRknYSjq5}F$tjYaq+y>3Mkn zde+U29=QtU^mMjh2u`1I=_C@w_+!l|-PIO{e03fmP}cfEYz?bXI~O4QFcV+{Yq3HS zJ6sVf(5f0tC|5Chnl@ty5|hEgUCTD;(7E@M0e(cW(pLzx(~|B+)%hwgS92>?lGCzn z?RtUf%*ZN!S3(1XxxQl+oODa_T`HNJW_ ztggk)%j2v!A&_$w19A~LP3?{Zp4UD=gS|{60^>d|4WtrmZ!wiD)#+Uymnl#Qpmjby zY91RaT3aho`dBILWW5bz_4G@t-?mv}AZ|Z=?Tl$1wn~xpLRvy9Y&&|pk6}Nb&~`ef z()ONp(jE21+O{aVVLd<4>~YTQPI@(Up%GuHvG^D28@t!eR!1{{gxf%_q4mf-&iUGvj&HBkaBW-( z!Z@XB1M2R?^{vA&<9`joIUUo^AKi{!Qcy|ZTto}wiKY|#%6qc?Lmqxx|E6fTvFms0 z8wNE;Ix~7+m!^QYhG`-Abi+uc=mKBDef(8hPLsI-*w~x`Q*@Wu{&f8Z`NsbBYF;6q zN2NTZZfKuXZHUTp8Wm{1atk_8yFC5OPLrMfjUb z-@PV{-Tyi;@nWrAzder~67TXTpJ0D!JI*h5)#5*@XxN15<<@Nd8dfS za}^VMHLg3Cc;=wH*zEFCGCoW}r@A!C)G6d-iuE9t1Z>bcLpZM4$CpP7{y!T7`=Bl> ztF71X$-R7|f2gUnYlg&7g~wlz_<>JvcKIq_xHOe}^1vY;g)N_?e~tJio-EAHD-!3b_q`l)(y>)MGB7p0 zkx&HvV!DA2*=KnuPqn~SK8CIcde?jY`OO0>X)_27SCQ=&>x6JLA;guol!#ek>?<4Q z@4F6^X8com8$DQQkn*bQVJTA++-&C@921bv+2Od_gj6CEB834#4MakVbXO=CT?sOi zRFkQ+g8dKxU{e)zXrsr7u35z6^$i2ahSR5xgFsU6_0u) z^Cm0%!wH=}Y$f;G2r2cYqVcIo8{j^}WFS31A;!Qqz`h8HDjNP~8~q9*N-ju@n8zAg z#=8#EzmKnZn8CiL>#oBHv3|sY2mJ^?rEfK8W9Nk1*S-Gx;~Q>smr37DP?C~14R4Q1DfA#>U2x@xSfN7NV%0e%C3g=*sD zJ7ey6ZpW`hVZmYSb&7^8&8Oy98lg6xQ4C?PAqtl+8yKPRB}NAKRDN2c&!BfVq}G82 z9VLPIN~YKFRVxRn;5ed7gpc&m0XYKGpw^pfOw8<+13GBS${5vD};1ql@#irDZ8= zO8gnYRIQ66yhvPfBKsg5I67`evY2D}y)4(~g0#Zp6_{_qFcD%JCL^$dqKec+B{G_K z1V2IY?dN#oEWXGiRGBvUw$F&DR#?j$9Cf-?(mNcwyM|0-{}bLLCT`HFyB{JsIlf@U z5L9N(;>8~fzwzqU15dy#$v>i<^UDD+i*fYcV6x!pnH=ch9Rb12^e|8-1hHUV5>Ha} zs=>n8>wUgzHexV%>Mz&|MW7<+dFd)MVGpzh_r$36ybFh%Sw9McvJ0&Gg5_e0E5e!3 z*x2%0M{vg@02tr_U$m9-@2MZT^0q9rX5GVOI{EKD+-v>1h#~tao-3AJ zx2X)|IyGU7_SQvq+F-Px0Y1yAg?k?$YVLCV+P2d#AjZ21QcsTCpkAK#D)#!4@Y}Z9 zpLxhAyI08tB}f}{BWDCm+3fP_x$`I+S!~4*^zsb01gh$GA}}MJ`-duaT_UurK}VOy zo#_?X)n<`aAOvx`+!8iR+rS3*F~U1_&f&Kp^b^M_0>vox9E8-`N<{jsTcDXO3}D4h ze%ZnzxW80io@1jW%yAm;+>uoCI-wTS^}+b=qMaW4j+o0C$ri)v+fW~)YaUC9 z+vJADn88Tk7NBs9T$otQ^Z-9pRI0Aj^oFE8?b@v(-g|EpW(vSzx+|7$Gcn|f{!AqlG$5`QFmMPr6cqzh78bD2bB37Sz{YQcFtsEQ@H9%wvv;T}n z?&!)C_z3**%xseRjy#x%YA`OlvfAC|Kv0MIR6glRGie-ayhIJF+U4t3Vt+ldIa-oN z;R~6jL!nkT?6Ge<`p)rEeC3fj4^sq#IqyW3fl_VyA6E2kc{Hxm>-_XXF9$pxe_#Nv z+RdPyX6>(kQTI=2r{O$@0&{V%fa-A9PzlH&S*QX>W@yn*Wurx1uHVGGn=)MS=#4Dq z&{M>(2SvP@J?^tK#%$EvlR|vH^6mWPMO>jmx=zqiOaohY`|1Norx4=~;e=2g57XQ9 zYQC>rFyEGhP6uYYCO6)o*{l{*Q&oMRLs677Wzax?25X{U%p=;hY8l4HZJ~eh`hnP> zYZ)P=?7&{<;}NKYCN#MbXfi~?OUFO%5AAqg!gob><8vrU@>BnTLRr$BDo|gy;*HZd zVVbxV$dfg0z6_98qNQ7_Q7383RQ~+aJH6*Mh#k8j`qQJTjyooCtKxzFV-xOG_AocU zMdT4qoP{&YfFX0nkdbFWL&+$7l8mK7vXfGNy7ae%H(O!PgHO_B-;m)lje;HNNjn!c zzWwV(W_|MiQ-{*xF=&W@!0Z+IPHX*-@7;PXXQ1i4i98-4b|3l~n1G@s{C92Z#f(;& zES_Mx1k=2bE!61z$sx-68MjCTmEye)ZJZwhzx9h0#3|sdgkvO(eoEgtjzv?u|E|2g zmLf4PaUc-5&FYA{#RCw}eL&P}-3a}@ z=&ZPTXw%rRnjI$C=Dv|3tgHqvG+efNNZk5!Yl=p<=oIoW-Rs>`ss#@7C#4qib+SUO zL#rO4?GBsURTT4$1c&(Jl&Tf=US*;jr%{}=|CyYX;%b}Qrs2=qvbX&EDPgGoFbIZ3e!R>Ow`O57y)0^dX&CJk)KT4FtOin{vN;TKr;)cJdPd62`^eZ<8Dfq4e&fzYA zP3*9K6{IenUdk^5+g+Z-JK7mk5hAo%aS`e7zCpOlC;-T#72$C1I4Kp$h)Zmh%VnCt z)apOt37wtN`wx;zL(r#0wF6g8Z2?(-8=?}5RNKE1eFdj$(TJ5<6DF2Ud!-_mU|1Vy ztPlt)aBNHc9jrwWS=OadkyhVj4~0dtC!8+X?f@`>43*E7p=D*ngOnqKx0sicEot-U z%+5=9h(-^f^JTp47 z0!_(OLB#N^%THT+m2*^a*a)Zxw%7$t>Bfzo-Sn5}2<-pN8}htDK7+<7r9Ecawd*tr z`jd}}+Iz4}jxkr)vmh7Cl5R0(iz+%%*5g>xuFz(# z3;Hlo;@`AgQEoU*oEMcIgjZ72k*<{Dt70K&ypu-ZJv)Tc<3nOho&>cJf~``;g$`_{ zuGdX&YSXwp^Lr>xZ&vj&Gu;XHBCO za^qgx5yLlFNtP$PKdo6S3IgE|1jXDzqcNV1#zZn9^JT^G6qBkr-cCYS>hj7sEKqK0 z%d3i|@{*R~68eJ5>{o#5%NB#*UwD?-#lI2BcPL(4? zh@EXeb>(9VC?)$lmtL0lNBZqq$j*b>YcKH6_HFo>?br}GjO#0$DE`;(NIs<#oA9LQ zc?8k`qDaY2x!$bf5_z=XUTa$4cb%AABEwL)?7Hz=$F_%gif6J#FSdXo`veFPkBHmE zI$T}5vvQ@WfwIROXAyED#e_QJLB~PMM1MgJHtY8O?Zml7K#vq%pCpo75r%FnIQ(uz3Ip~5ZV=S@qTbXke^#WX-ujQW=f5Z_>?g4Hgq={&@$S=n|q zpgt(|$-d2Lz&3T8l|zJ_08cSIh;Het+`X3N!|yF9(duD!v&F)uMc(m!)aO0IU{YSt za)1jfIVXIw=yNCADOgT=i)!M39HP?in(o>ASwaG={fEn!dt;*^LFuL*;J9PEG56C#+t7=kZ=ZG7pMKBODMpDQ`4_ z=?P@NY%i^i>~?&?1~D~bK6^_|O@GhoFhYAeBjG=c)^Fy;BN^$PR6#ZY9{~J?{G1Yo z<(G#*^=o;^p`suhWCKG@`xu1O1z&m5Xty#SMbsNFsBYsMuuvTsj2e&)z}g}x!Rg~8TwsmS!2 zX!yLxOr!U!gU9sRn~oLmiJwuw!EJB zb7Q9~_pvM@p&wUGZchc*rtkK{*8hylPI-1bFz1t-ID|S4raO}0W92W z0aQHDum-K*%vHz}5pH3I1ShoK2+<%gp@Wn!qO7;M`Yx_9DrE`c8CQ&5`9-S6|2cbj z7V1mk^NpWP7WNLX(6pry*jO?*HN-x!tCk2rr8;ysPzf+;(0B)hpVsE%krgTx@H$uY z6p1;8vAO@XfdW;-1+>;rE1&{nn9Gng@y_mJX^HDSYroQzsF^8Q>5RH*Rp$uqXOG9SV@ncV#UB)z0G z#6lY=I=3-ZfEebI!2#I zCht_V897aMqwq6KX?#CIQuq2N$G>N68!bI)-Wiq($>3-1$ij?Y^D{NE`7%HERt5~r zGD#)g-UPlEh!pZ)llHd;A>Nreg3m$OhVZ4Mt@!(@(L;bOUxo0kx_&~P*|`cC_G7m4 zl5rvd_auql15%PAN5B0f3H-Fw- zrjThOqs#5~n0r;eL-iu|S4FUOyuaR~`zM2)C(JM+aR~n=-g=Nx7E2NA>&?6c%&DAq z@5p$3hq->CF`yf}z^I}-K?)b%0<(OgTEQUdQABu3xckDHNoDCP`^@&fis{TFHv|~; z-m9MGu?dz{yY7_)AmRdfMT6vCxwKIOdQab0v*w6n%G5Qmy>Mjjbuk$CyO7Kw1n)oNFrm5h2J-G1BKIFldnn;w5{w}V<9>@*z zDS*KKFvR#Ly$DFNE_J3jzQHCvgimD~2xU_uOiOpKgTh;BHY7l#+x}N=c)48too9@N zEFCP8hKDx3E{Ij^qeA!svv>#0)g{_g12F+T6tv5a{P(N*`bN=+R*G;T54|p97#U*wq^f>`bUtsG{No~N{$b(M-0mRo-?2ZdRJ0{hTVRUx3V!`K zKTW#M+#Ib@G!njytt(E%+nB0if#`FlU%SRGExhuZz+Rkp8c;J3HS!2>Rl#UKAA3`>qth(7{Rc1g`|QZV(kqF3mj}&1QU~eC0sjb45!$XLZiU zP%h2do;KGb5(nXGZjjG0zmr1|eMcvFJj!Dn2z?dr$phko9LOd*>x|8N)lq3O-p5QD z3#y?NzmP>}7_yIv$e<01qbnOAtT}{jjzs|+v>IT7l{!~Bu$||}@b#ZSY>l#f{1M_3 zzmuB3uOX|9?=ZBjp*ZlHn1U5Ts|O2|7Ldw}Sx{q@*Q2PA5tJE@GF>Fp6p zAnh^Y_VV>3Mrc`g3mn5O#Asd;?(J!$)T-RGuIBtpyhOSlz~m({+^cCY&S<2<-&x~% zCP?hcl8~O5zn7A`9e~h#6aDl^l7l&U^xbXf4Z4!skD;Xv6mG&7rGg&5UI%PbZFo|j z@`7>OOR!dp9N)?<&aCEq>&UJqN3P2xMg`aecib8bu1P(+KdR%c|56ZnrXu*@IoC0q zS=IB4wOEvj#ay0UR92ED9^yKaUIu3Pdsc)2F`8Cp~jdXRK2hMN+QCA;q})bvxO z_^8C<_PG-cX$8R)`8CMh1N#gL>)g~hi($ZCwgK~PulsmNsjgyU9DKts~& zo&8J~KyMcP)d|d|qpbLfif>UXz2#v{*$@Kb_PXdOq1v*!O&YI zfb)u<00?zxhFco$vsxr)mwAq6ZB3o3z8` z09Qs9&(Ym=2S(V)?>bxDtu-`C*n!+UPLZmfoyfgm2%__$vws{BEIVm4wVBxg`cTma zC0Xl1mHnB?jEq6+$`)NM;Gne%lYfz8%6yF?7F}aD=G~lqIHMK#Ne*x z@+nZ{B2|)LWP*+dPZ}S?GX}Zz3PUYF1mtHf>0jPcJ{g^9_}8b>s+jM*=>63kiS6cc zZKaWFU%|l`iVc)uBM5ESDoi^t!+~c!F+lMQ>z!b4zvYR{aAa7eO{!)#)yX9CbywVd zBI26y$n+c7C0`U(t4!P$%OY)8DPGkcx|+Mzw5A@H?t5%$H2g(C8z;i5CR~LBF;qQI zj#g{7PH@ycU^0lAcUu6#M0|8hF_3auac)2alX-fz@FOOM z?5Zg%HhNBM&KVC+?s?WpqS%_(b4y;EO@hPVY|Gf!sgrmG@_N7YSy_b)m?fO`(pZMW z164zag@w%TqgH0+i-Tv`Zjx%#Lq8!tBHkmP;}XR4ABD6h+jotzzd`q)`#N#zHbbNr zU7ADU%BN_RKzZ{m!fGGN4(x>X#iIOdOwwcr1;yxE!^)~&LKn2!e2GC02u27YCSIp{SoiA{3dj?!}`O1!6Etle*1no~F9H`V44@6kb0Mx}Nr;e2#C9dHa zBu6<3&-}dqV^A_sjK;I_w0oZCbir-1Mz}bfn{*HG7dc(-N2r8x-&26|4JlIYm+sH| zD}l~R_F}MPO#|aPfmjW!BVUUu0*Ic<1;VQD2*cNSaKAxpS~>8OPJrp{A79NP-Q6kJ zvcNGv!~Uz-h(CiaFkiG!D15!L6R8&(1OG0grp0bwB5XO=?_4MBq*g_qDs!BvBWOXZ zZH`UIk5nzhD4J5au_^Y=PrcsNov1UOF1RaQPvvy9$5d2nQFo6m@%wARd#YMId0Y-2 zyLUtlx-G;-zuU60mGjWpqmU_glBhB_HBu?A9VBAlR9R}`;>#xu09ML@V{i}7#TJ)U zCX9wJCFDIP2t|pl)fZ-GXY!4kaC*xW3B|@l5i~@$(=_@Xx`5IlN?m6 zG-iTxwa~xFjeIB8llFD^DUAK~f^cMQf|hQFHe15n=wF#e_p4uqXGB}!6Pdkz!cqkb z0p0wlBdLCb>!`Rg=x^frZD@0!FamIG=~)tWCC6RVk6(6XsV(8iP%C5NppNVhoPMBN z9@2S>p4oqh=jaBY(TJlJ{pe3@K!Ke`wlahzsRRS3{jF6Ftj0L7Ehpf zEo0|ODXT#_q0BYAGI3r9&-LV^a<(Wjc2(@u?s#CDA1)X)reH=Biy3~M)?Gf!QrzI> zw0SxZTLWWN`gnC^2pN<8vZ?vQIcg8*uls|{chHff!Oo^Pse{kcDBtR1r0D#d8@&=j z9FVgf{c7@uHZC%N%A&+vb>);Z`T3`nfU&Z4A_vmV`&R>>x?GfEO4~2UyD}qpjougm zNPLaUxwJq*K|&LPEB{k-#eZmO$+{s69{_q7us~;%CY!(LrFP9cWgzCs!}P0j2)449 zrf)NmKpIE+5_BOe&mZaG8C_MPQYo}p+c@00dAb$RLUq$CGcTrWeaqh<8BQ7sM>H@2 zozv5|@Y)M(qU0Xq*%eb-BC*M@$F4DK&}eQ z0G|7yS!sDs#9&qPXS%>1g-Kg}M5GmMh(fKLRk4#BOUuyKt(;d9+Ulw+^$EKpyO5QH zQY+o$f=QHKm`1XvN_oIfD1sSf3ZOcMmd}9Qb99p)7q7e8=Yr+{mg65!VpR+T2h@0Z z)#e~LK-_`-&+r37gI&rjvuT95(!ZDoPvnuVwFqsb@-+iWgWs`7;B`yRQ5m;-ciQ(f zJyfGAZ3-uccQt*>sD^oVW+&L2-8S`B32H8WRru`v)u@(MjxHMSJd_bYk!ok?hoiM| zd-pA6MB0O}?**TI-OSZTx56W2F&izroPI~oZWR^D6cr3wbw(}IMoa@VhlbL0(ZQ*# z1k~c|B!ULiVbl0-))+eU+t8_jjHAM+3qv+GBgr#!Mnm@3CR)S#NHV5pDLUav@pBHc zMdx%Cg+rXYI3UbfxVoQ1O?U%(_^K{9Qqg${Rro9gV+`kc9H)Ze!z0aZ9hi@7;?yJD zPts>LJgnbAT7MB!eSlYg%-X_uo%g_*4B~Gm9AB#C0W!P`mc&f=4||NH8PNV|3h8*g zAKo4=ZD)xV{A5+x*^n;C!wlRqY{H0+4CR~)sXw}>ZtEhZGurGJMlL~>`1H|9-Szn& zUQIGTuUpVSY?_{rEk-c8;>NB|2-CpsJOp!Bnr!)9&>J!}sGu>#-*0@4U{z~EsQ~>g zJx0~}gkav58M3_*sk9fQh9E{J-8=;9)n}kmVK&m*uI4W$F~)bJeZNJz#a_puvtatn zaVhWx@2NDbbNVr&Mmev6b^px%zrMGlRiEY(XU@oBMPq|~<_n|J@hX@L$TlCiBnEGT z7Ly6HT?Y&EmC!*w*c=F4bjnnD*@SVf$IlJvp@`vx#PcpMCK&E?sZWFA$d*RpyB9;n z)}GH=l@;F_Q^XUbWD{gFFs4jia_UNKPN36Pr1NO7Ky~eP%iXmH3Jz512QzNp*p9&` zh*`<7X3cje(Mux~0OJH`phCR&KgUwVMJd16JeNzS-JCb*`821XVN5L|g$0$V1${DV z1SGJafvq&l69p&|=#N32PK)6V%UgjeKy%4%>2kA6I=ActsOA0GI6Wtd;7&+-$o&PT z=iQKq8HR~I^fOEgWm}X>h`_H(y==?D!XP%Jb(9bi(Yuh08E#QM&=DlW>_5)(iybyt zUdB$@`qFn7;s^7@4|0L1lt^6IA$8a^#J&OU7FPQz{UmC9pshsS7FV0l7`y^h4q+fe zwD%F^9CZkl($;dG8Azk@(1WJUB^jv5Ktkb5QDeJ)xm&(o5TfJt%R;^-&iO|0>%Hi( zbWXACb&2fZo=mXqwa!%sgl{CL7Z`Mweb^@|@PahVup-fz)-UZvP6;o@P(zF7?C^v& zh5O$`ziv%9UGitOETKz^D~E%-CoKv)%}l44gnE!=iv@3_EMV$tNlqd^V|qD2-*n)g z#g&@bZHd>_lwFJN?sX=1loR5QD88K-%X|SMMu z0T?PfIQK(h4mUO(Y>C9S@%=lrpW39Y6sv_8X;qkZFJJ2z+E9|z%}6blOYiCh3x#Bd zVOL9`&>oX=tdk=XY3s90^G~&lkz6TsajB0Ul0+`+edq_&Bf7D>4LkSPOW#0AkN&`?!rus z(vBuhQ?8JIPC|v{tbch9&%2XPxO;+EDE-Xw331eYL&%S- ze&R}r=6@SZxBS(BQ5pgdS)C|GHOHn^F~^(fRffFXHzrzu5MswW^EAT_o=@h!Abc;I z*n&L1#P)u0vYo{o`1#0Rdg^vxvnduIQswQHFGLZh9W{rJI*y575+1o<&^4 zi~Zs;sy?&NAnNlkN7?n_Or4!zNo{B;33}(hwES#5jgP}6#m-&-w|{;I><@rRUbg_6 zyMc5|3mj14fd^SxmIM)<&_S_Y`y6D6S3ceXJ^HbKBs~~>Uct^b|2Zz|V#q=H=zWia zW?_&9NO1rgC0v01he(9gI5^@ssK=!UZULlXb=3XvNC073?(JU>ARZ}$QO$Ye;zgjKc zlHLa6FY%!^t{JdPq;o(Pl;pSka5KhCFuj$0OR^1&1^#ZDzYR7d{y{##OO-PWvjnd> zhXHokh3c`SKhXg-vak=_`}~ZNbJM}PcFhBC%N#z zzSLMt{m|MbL9IKe{@sfKmr8E^#Bcw^4w+S1Hb4!}W*bP)FDRue@t*f}=#P{Cy>=z4 zAsrn1{!+xhw(DyzIbIlBPD~N*jz?G*BtV6UUzF77YrvrKZX#F!Ir%WkH#-!uGj3?J zfEHg646$uLDBkb23joa~SzyxvMr$^P$Mr)cZW>p4Z_|-?isKE&<>}Vr1Ui0A*8=2n zYaBrUQo{HpNKkzCwE*OJA01)LQ|Ol=n{9E+(I?b#=S*acI5)o5u{!07ig@Mrwvsx- z)kuPZ5&9vMh{*@XB0gMMm;b`JxqxnO^R&Py-1w;>WytD({5x8(4+uB&COtb1cEsCV zy5;mV%D`%6)j!Um0>C^)x4KXhZ#3$mZr{}7i!hmgN)H?aU0&tRf2wIL8Iat}cz69B zf-(xm^}A!H(q;+>9@iND_425ydDBZjWdR1ef#j5rN?A(Vk}|}x8rSuP)~sLE;F{0< z8@)DCb)U|*@0k>>ZIZ^UKf|3=xaX$yFRZ4mFo@SK$(ts;4hhlHdVDe z)1FQiLcVvBV%0{V5{V_fHS;bVONzs`idxA?2zb#di~cGq3KJWRdc zWaaj8$8V>Ja(7U_#p*xZjefVjeySsv`iXS@k_wd!=DhahxiPLp$e{HVkyW$m^Zl%_!0wQJI4Ky* zZS=)!gmvV0H-MGxm-ZRdm2VQ%v}fzMZGnu%(X>_(n8=?hrT6(hW@VDq6gi`6jfx3& z$72NV827_EswPZacZR)LbePiP-*_J^{irVDShZF}SPs7fJ7yNho{GverSO&-nlTs> zMYxtv)N|`!v_g?Mk?W9!SEYm-$i14a$hVE<*~+(~DffAd!mY8nSJA{B>-{n>Vx%HR zh1Ho|X*ZiZNAk09k*Hc!x|`Bd5HP0t$`Zvl;nK7RaEDrFcqD)gv^eOi$vzL#xP(BW z69y;voY5!(q7NM!ma{to}!>W%GR>d&(ki%d(zADN-E3romW zW~A4?N{qZLa>l=PZxt^97(>!OHlv~=5!<|&2So=zHF~c#2M!Wx{GsFPC#lP zz1B8DRxKJ`RVPW>)#qrxD^-O3@P)o&iek#B1o!`?o8^t5Uc$ST_wcrgsrcz;rcxM> zn}oxI3wSwBx7erz)}^FLrC~^u$c1*Go5%c?c_lc#vadsJcAH)DUZiO+#Z}1sy6+}I3=AC)M z`aLQ-ZZZhjyhmBDw2p91zJc#qbJ!JcRJ?ouyo(zEX&@!ob<$D~MWSCKz=a2L#0UnU zN;}vp3+tI8$+>kAu@eIN5&mYJb%ND9zxv+0X0NwZ5EU+qyD?dmfC+j=m(K&WLum-a zHPOK9$qcp)EsK&Z`%-){Fw3A>or*knx|iWm%9yo4FdkuuhvZk%%M9@iH_K>#iF>4` zG1a$mTtLqyG>EVZyG3AA)N%yYdAZ~a*LOUaUcZ85pir31KI@DLw=@O&xR-gTyv%ve zE;+g8Yo%3aokT}%MNVfX{^k?Sl$vGhFHx2MxClRYA^6crY!rRuQw<&`-gqV@49e@NFEa0j zQFuqlZDdtnQ!qeDp zOOg6e{Z%6s!IB6yWtZMU(&fr9ab0q5+96PmR+*JdAq>jWUk>=JkAK44MCaG9@P8J8 zO9Np+046u-!Da5rdDR8mb_#1cVot)GM@GmoP2Q2ri2;E3e#G3@5R0 zt>rh3wRRVM8O+f1NJP;P_*yzNkpViII|*1VQo(vCzOV)$O;uDGjo^S=!D&uxpK_0P z(N;bv>92N{SfnC00R1JlTH9^Z?rI1PtYZ?ZytG;Y^@wHmRbm8|U`*zTI?S+6{0}u0 zG%&pwXfm(2_^SbDQGR4k?dBdc>|DMt9dT#*sB&r0u2wy0^0>t(`qrw~xs%(UTpO$v z@L+=!Eccu@x3BhEwnf%3rifaA7&Uuac>R*qkBIb2({|fy>tQ!re@;fpR-Tel^>yd1 z)`#Ntx53(d>d=o9H8P{*hPo|D|1+%^w&?Egrb^M!2Wbcv@5X<-;x(IhW$QwjEhDYg zv^||E3JOst?1J6PBd=z`9kYYNH>^p$Z5QHko{DuUZO6wsT*^FMau*snj_bJ3wo74c zQ6HY@8b40}Mo}2Shwdvt_`Z%UM%X{*K4G(NqtoGVQV)_Q>A&jfUiJpr#+V+H&|OS_ zXdWWM6q~$7Q@z2;D`CE}xSOjI7t9z8s`lCq#8YJ3wy%9%E_;l88IbeUgmuh=7l08A zQ?Wetc$&uq&$VSq;b{>f9ku*6x5#lj!cz$@c-`$TBq+NkS5D^^oz2F(GBA0iO*``$ zgtk!vjnGa5Vj}GJ(F%ZVg1^U$HE%2ik zCHa|_M2AM-NY|;Rq%My;PqD3Efxgwf9p45)2C9_uJgX0N#9HOTq&TanbmqyL7a?(K zjQ1-ng;0>raV8Ezz#NnZer~FI4A+FQ2J+=NJzLtHxu))^{nOAW*W@d^rZ?|r&lL@V z)`AZqx&TlX&Bt&mQOzqme~(*fk;Yjj_m}JYBKEX!ikD)y5ajfK*-!l1%t6+%V!EK$ zGWUW5F1_Lq@6g_wUA4<$S+^t?3wyI+Ig<1aPP8F@H+X6a;_@E`Gm4*BZ%!bL`ReoB zd&5sAmrehd^}q^|m0mQip*}f!6w8vBDRbggi-5!y+$V2xRv%l0&3S2v(KZ3l2TJs! zSE&y?^(i==)>CfjXaG@R;%5Lcsd7wvF<;-B3kSqAg&ttWMlZoh*>a+`-Y3+QZt#D| zgoCS2eyQ^H?HJ)nzK2S8)8yH2E$5rh1UV7Xgs_6%9sVH&UOoufc>~Os*!RRZ7 zr@P!5{#w&fQC>qxAMH?O)P+u!wLdbNm!N*ZC(UZHklr@$2?(BdUM~=buqT#1x~%>_ zbn=l`41q!&wjE6HDv8k@5*_buA@WaW4sNWv;*wQg{(jJaC6T$($q%dkJnEW$vx)tW zuIb`GwJ<^9t2Yl4JW3Db>V=+%udsyJvr96*G}+Vy3J@9NbX%O&R-EQfu**imnq&SF z!+^jmcm9HVZ(0*mOO`99rNqu4csV^X?|uh~4>Qs{3pDP#y*K?DngH)9e=>2nNIYEJ zoSWqGzrKga6bw5lCniDIgy#@0mLj`mAEYt51kzSMCRPx~*iFXLjK%$;wlGs=mM41T zaS6!J+qp7g%mMDdMsTw|g+Uv}(GpeFKV|X(y6I48JsdJb1F!Ofw0E@b_IW?^_o4RA zK7X58^8%={)VTEUoELpYgAV;$(F)2Vu@mDTBkI9&tt^cAEs{fI&nXdB7YW{D`1w|C zv6gYREzV%8?&o9{M#|-YuUD39Hhwk2LHe651AMrqc0y1K)A00$X&u$DoU{#DKcr<8 zuy;V^4Yz9t>xu=K1Cye8)~EwFTw>iutZ_f=fv7$X~g= zyk~*(W?2(3)v|R|DQ=i5c&JyE8-9*EvPB{Agj4Yw3>lpR)P}$NToJjd1{D$ zzDUtAon-zg(|1LUtvbhM*UCLmptd}|tcl5p?EwVxgclZ448aE3h8{6sm1ryjoh7ga zhJuyF#cPE81pHejnql)5} z1yax2Re3F0fXE)-j>_jxJWbW8LZ^QeAr@GNT^NjfSZS=MIcs7@&gFSU4IHaR*SE#j zqgwtS{@|qIw+U309zZT@H)&Z4GOL*Ovmw_e&fQ*YHCs0n=Js|c4N>B!WUKvlrQ<5j zDL;#w+02-*BpT}1_=j$9Yoz>NAZ^TG*-)YT|2HPPz@_Nl-YCgkI$JnYf2nnMlB~l9 zZrX{q6JL%ce!}=Sa;-#6rKiJoKIuRXLwpyD1F<((Geca&glYENPnj!hatq+LX}PKC zWm5d@)#AP9Tbf|DDS$!ZgYT~=HFd?QnM{`@J@9R_LGx0;mx~O zrl&Ms#9Qxg9SFMoo!xEGcSH3tLcVY%iZ=Qepdmzzt)iQjuN_B!pgD<&qiQ+F;$);V z#_I5bCLpp$na@)NHfYc7aQvMfOqH2`b=R6 zIhPLdwJci$uC=1rXuz_KQd7sk9SVVq82m3tpB{VdU9Z)_Z^T}&?}VMZJA2SVVz9kj z{KRE;tr$C5NUXoQD{eP@vcaY*O|`RODvh8)IM_V%f2RQ{Z(qTE!Q;IRMAmgF*)VEa zJe;;;>ZX8wIm6x%c<(iNI7Z`Vq_u3(s#*=L6W#z${2Vv;vZ@SSwbjcAP*jKm8|YG_ zWMG>MwPFEQrX21BOV@3LNA436DGR0yxWC;^z)T;O1s+Y}|Ji47dH!~Yr!}Wm%xD;k zsrC<$T@qQTD^F5hI!dFc0!?h@spI3tGcD&In_3gXn_X3^1j^v8C67WrZ2h zV>-ePtV;FEN>tn6(lPw7Ai!DK#jLiwCZ!MAuXFjXWb#VD0_KMCme6TFFc*A!k0%YN zzang^6+kr^b@OZFN-IQCBt!E`2-~Om3>V6mCIs%}?Qlz%Yyg6(4g`BCFU?c>3-}^n zz$olG?{OkrlGu5$Fff;mq|tQKH|64_A9J4|3xh|suc!F z#G(m-W>pu*E0usk%?Lh`AX~@vW3Cg1kXYG+92G0o?!3tEQ_dq0W5c(<>!W!2$7D?} z&N?Bey|xxxCLtGGVMBu;MFC2ZCOn>6{Db_yW_!IFuHT1M-&T;qgwn$o9}^gd6sT73 zKRLIMj62!`wvM*)WQ%qrL z={@AvInRg|aCGfcw~p`PjF{)2ez4a=A9Gv=iyB^~yV(j)A9MGIXP%W`FzqesQXKK| z;@}6hO81rvtBrK99iN2h2LmM^ly^{%NU)8`O^u`0i~r+WL_u)Wb6}eK+|Yy(FThmx zr6rB!cb?w1?xeV|?pX*lDhgVqf#)%US17E)e0|~mMARFx%nsveM(2Pf!o=gfK=e*g z!w0s<^X>HZRc?LgDC*7&+Ie1wm&9(uZ;d-hbBFVHBtY7;i}6XFy@{|oc3^_kNJb%} zodVKJh5x(bYVh30!knG`CPx)>6^468076{A_Eksni8MQ<8s=5Z(YR%GsQu3(ngaL? zp-;^;WEA6YcKft|R@#Bdt(PV~sE$C+#>ulz_%eb;>9tJ9TcSFXG(2IKbCUNH*eCER z7+RvK-lf6a-DJfAYcLk&0Ci~_O(MsM+1y&TlI8aZtRyThzdnRIpInhgx3}n0d%7{c z#@ff7p+Crji>Kq~)4`hwwLtZ=1n3saL>xe87l802jR@oytRsB@o69r%S*4RbCt+0> zuNQJqC+SLw$U65!j&QmAPw&zHIPbL@oWU(HG_9Hca&LO{9xI8w5glZE}Y@x?7EVrWHGstfbw!5P_XV3ybYZvde}d0 zC1tW3QW>Dacv~z+Zvzl1tV4J(Y=UD|?2qRVK-nVbrLD6ctxdZp`dno|=?)>rEFaB- zb-a-r&{H!CQm_SQFs(m4$`7SQ`IA`|2+A2?3{{6M4#f~hwY`85lK>yR=oFm3xFZITQ9r`i`(#}-wmH(el_loB98kP zSCwYgT?8Md>8t&-iU(ZSBY3J981wekc9{MjBO+xrye|2bQkiLe&B$EiOlTapcs26d z=duHKX??fCjt>!J_5hm$`8%RrnSHND!oPI`>M{Gi^i z56VnB80j=>?dzg6g3%LLEWq*%*H?5S?lW%g9BH|vL{Qul*~wc^ExYaa1d35v+B``g zfW(LskAWsEnM}kQS-VsngBfGMm{YSrFJnu1u|k&?zeU1wzt6oo$(PJ+&3K4ew(xH@ zcln4|=IlDs&>`_-@NPRYQ zkuByI?7Zdy4{9>PxCQE;&8nAz=L}TLQj}*I1NNo9G=t0ibdgWFFIf52^XcAy{=bRosd#Ur(jgpNZQ^B9LPb-=I5kAJIM(L*=lXlFea7fXU6MXR1;L0uOskd;q zjN=9Af>I1a5b-LR$XfJKxU3+C$wHYt<8bwzQiq!k_gP)2P?9%BP1tNy+8$I1!hEO` zHP`@i==;%V@B5sof)eCOQ^6!WsEAKa8i`2D(#rnc2a><`m3ODt<7svLjO+A_t*R|m z#0^$Zp>bTg^RRl=&Ub0mRsx(pkoRP_c1Y{zv)hgm^Xk}r4WntGxs%`G)0e?6%*dlE|8*{vr1= zPks9hS7JGjUyxrb@RI@&z0WZpcJorpOla1GCg)2cSg%}M&_(F9|JOX`1GNtK`BNdy zP;jBOUJpj(JNlfkM78Jf*>`*^=zo_n=rITiOuApby_#wp>LLSFJ8=^0x{V$8``?kjcz!9y zg()iUQIH0)tfocbmmm!U=f_Ua_ew29Tn%>J@Yw3yu`tx<+*R&X+bY$tl^G=O{Q5Y3 z`@E zOy_c$1J*C2U@DbW^|x1^PnOxl%`}YjcZ0l~oW8wY4`h&#?Cu>e;#aa0p``~eCdecM z6#*ERgIDPlQ9|b_e;$w?w%}E#<7Yd{^5C~J37-xLN!^<17^hPjvROp_WR%yH7)~aT zD!ryYo;6KguV|TXL^s+fh%ME*?U~8}v(S}xg!BD0V9TL@zhY1C!&7+d!lEU(+eSBi z%2M!G*-uasda<4vKC67J@?VZ5dQ#Lv8I4O6Tho!2~ zFldaW!QOPugNmj8uRzFQbJjUJxNObhk3l!~fOGZb(Tf#TsFNuQFqdKQKD*X6iyojE zwVvHz8&tK4|A@W!5-F3xydCbsMLO9#=B5PH)H$Y}<9q{M>pP_ghprMP64EEH&CdIj z2&<>XeG!&V%W-||`LOnK1!zE9C9;WL?P2a^ydMdQy7caK7X~jAr5(Acr9^cgdPsAY zla+`{7|n^u0WE2Zg%#p>3Z3BuS~UjJ&H--x$Jnx=M5?)Y@8IPPC{qW9ngeqK66Z^e zQV0GSI!P^h=Fa9~C1tFva3%`T{c7RmcwESq)_huWmT}X zkeN82@U2X;<hQO%m>yM`^uy?OW0slW+SC_~^nfgD~ojFedTDXNf=} z^Z?nv7yW(bQvy=I>_m!z*ycb=XiCi3rZncyb%5gq(yQ3R6BUAdHMk6>3?EM+hun-Z zl!B}YjY}RdSW1u?k;r5)YmFAw6X{UK3k1MR;P%Mq@-_mHm%Rdum3J9D%=?WgbjV zbi-@uZCy}W{Atqp;%ouTszg2J%br9J*>SMMo4gs9K0=)XGZJ2HsWK5Qi@74e>*b>P zop?W5N|&M#qpG09%(yh2UaNW&-**hb_tHl|!&ByF0zU{-vg-7~BEw^lRY;N0q#>QN zeL+1ssR^JukWG*PNfYQ*V_I!t6Qj9P&QPKU8}mf-oLl921sjhRR_&A&@ekArR@dSv z=IO*(c^roYb7pH+C&^rKVgq;Zo7AAb3n7&U?H!DEKNJawL;gtq)81G$2uhh?r`0{DdkLW@NPwO%0Q>L4KC+3D@L zM20)Y+Z4oE0=To1P^=4mL;8u+FgR#05F5ag}01uJh1u8yn19ThDAjdv=$s+9_H69M>Jb zb!92mZefNv%%M03MfD*nTKo&{)CGd<^C^w&zx+Qe8KQ9D{7 z`UUeoh!mJNrOWTbzm!y=BJi)F3TqwwCFk#Z2Z2p;m!YCGihyl1;KY*g>4kCN%=rnO z0Fj-b&iok?1vH9)$hct{v{&qz-(SR6?)a?_Ck)$EL$UPa%CPMqM|Qq_ zc?P2vxQWi76|-XbSAu-#tCXL;qvj1EJ;S$#zJR9)oUb1pE^=xHGPW+vI;ZzYRWX{b0+>PQr`72};zh0w-*5X6>p-*keN= zhfFslgA&|vnfaVl<5z)+8|bcyU9*zWO^ayV2yy-Zw?^-t3KafIHDiCnA)xSfKY!pO zYr0|T`#Cj;|HOkKGVQ+!x^yZq#E;ID>3Hj0g%=UB*iEDBiPbkzPQvou@S* zMXeTI?3o>&ww|Ec3I8`HFyq(Aw796xls)cbFTID@b=W4li3a7B5n*dY+Ad^}uCWH! z4mzH+->Obq*HNocb{E-PWum0Jxj(dpq`7}4$>Qr7iD3?AVmtM1(Vl0)Y*I7v!DvV-5kLM@ z%h`TwLizBHm$9jxNM6#dIygd9Hz4>xT)==cx5qx65RnVaZ)Kz6TKy(M2s2zfH#2}@ zd&{gr)>pjw;-#H&L$t&)77Rt5l`F5HDHunf09G6xKj+W($^6}0=++4?NUA>vF3HnO$x*$~^vWZ}re)V6rzgN=z0y1YvLt1oWIyXc|m3w2a# z1vK$D)eZaGsf2b~w^GI*$Kk7=)|>`hGd=0@d2yNuS2+n>t)GYzZ>^l{PA+xL7V$1N zG(bvxA7q+P`+$_YQ`i}^Y(ysgi0%^6LgcS@_{wyqZyx4%vN$hJw^h=~AIGa7XOH?r zcwZVEz&7(tE*k8H>9a1~nLy){GhC(dG4Zwj7Wm9|E~y17xM z=&|a2?et~Q^iUHWo%YYzKOfm|!o$0T>_*|A61Lmr6}vvVYajlI!HE8A;g(tKA@!m6 zLl4k4sq?eXYC5ZjmOK89u1++@Q{c|$ndrpOA9^^|h7F!XxbbJag5DON(OwLO1tPhO z`W>wny&`+i`$dusN{9Vd{wn*}+CH{eCZBE=zHqL^u>uETN^kbSZ4R{zYforaubb@o z)QPHjIL)Z!fw_08jBCwqdL#mA0up@aOV+l8H(wh)f9{;%1g6-p!^ z1(~kW!%%??CQW_N<4Wp|&wqDnNCK|M&YZ;1T+!yAy3-nLOO(z%s-Wns^xlA$H<(jt zBZ356wKy(G9cP9htrN@Jf^ModQ=cFGA{=9gdW>qda6XLHkGnCMvAjLK4|r$cD;tGB zccLG~L}D$U5S(MJZ)o<5eCDADm`45&e#h4(AyO~HddN~*A&eWRAj6z8co$uJTQF$T zTnGrkfsPil$uqTuv^A>Gv{)P5VT3|aF{f_z5o(@ncmbKvUmRM^My|+4=s*wlZ@4P+ zmhd(9e@ePc+Jz1G7S6-`qatsj>hz=#r3Bc9Bg;7VQ#Bad|GXrOzXtO8eP^T}Wz(pmCY$M~-PAkt{C*~& zFfRSoW$ZGj7wu|c+;oAr5pckJ{5eJ?Kg_wrY$y#UK6CzsbrDn`E+>Ra!#Rnvs=@rJ zU;nRKwSM~xk}_DaT&nlgBORBzX{@#=cFJwoRIu;}r56Gn2}=~4V$vKU9UJe-Dt zn2%HOh-`k8G0vd~;F_GUNlG;4q;I?OEr1?xokMi6**@#1*lwca#{*MB6ya*lKkJ~ zITeehxf!((xrjIulG#H*o|v=BY|C$Rz4r8olf)uBL+pw0__3Z*!*~m5F^3OwfRCHS z6*4UonCp06Kov%3z-i-9WLrgTd8DSjSxA`ANE^qVh27gl`$7b0c$==?09?!Cv{l}Z z;d@giwiIZ87yH&xPv7~To39xIeu2l}M|o@lTUPJz!LR_6d6X~BUIwn@ecwg3BXA-8DkT;FHA~zQ;tCTXmkbA?NqDcI zo_`-*W2A5}NeBGM!XlFW*MQ*s%(8JH+1^#}G>C1}UU+E0AA>f7h$+^ryzC6!-Tq>P zx`G9h!gnMfep}}V#(^CodDsR_T69l@v!o##+KEqsJML_9_g)bk&KR)djFyX|&1vAn7wi z0B7i;wGU`X$1e*2{^`7F@)o+(sod1nQ}5FC^5gRfyB{!!KQCpg0CqB-h*00Xlwqtc zX75;>id%`5{x5I#(_9{${bKehkdwrPt9JaFd39+n66?JBgGFeH)r{r6S91|t?L>n8 z)Ej@-85RD%{vDCNH~~nfxO4`+h42_oOn7+aDR|j$Q2MEGVM?GRo@& z_nx<@zt`3%vhZ4@8G=R99$gSH8tP?pUvTIjFC|y+K{zw}Yz3Z@(R3CIk?vtIACkzR z?GUK{lDV(LGrU(6vwF0lb@8HFk|U|$Q1+;$CFiX-ioa6u`I|pU^rKr3JjSP@z83aTfr!VL9 z-T>n?+G=**iU+CuAic>zUA=NpwpvaJt zY)N!8BJ-FLISrkOc=XMjGL z|6!N29rPhTNjK+T_}m*fzd_duBN*bgkk3Cmh-nc9t<<_AJx2o~q~dN@*~uk&sP;9G zk_4%HZnW*=$7JNz9n*>~lsHSNZSN$27h+T0<#&GUJx4s~CEuqjB0Jgwjm*%rHlq)-~3kfC@j;zVG0y<`B zFw2k-XJyAa)KbMdP5w|vZJouf9!xuP~NVH*Y;|U>2861I$L~CgdVpZ~bOsT6F?(p@gk96Gvk-NpZVX4`0E&`jkX>1m@)R zA%HvHUHHfi5&0R=eLpnbeB@9$z7w(hb3~5Ynrmkpbh>eV)hsXp%rCY{xfHo^b;nl#%e=FxafCWc`J428o6Vg$S&ohDW7lA7-VQD}1xiaolV54#!fLIzyydf_s(kOL`X_ z72g>hi*D@qh^qtg!gI&`xEG`+0X)-`X2+J{PwMMlAfNbELBeGs%YR!po z4f&6TtJR+Kj&`caaDLo7eI5SVzPyw-fY~nGQ z7G~7ckx=|btZ0%4`n<3Rg(|c`Mc3CM*LlcSOX1~H8NhyYZ&i@;gpfaRER8yl3G)%{ zODxK1f8$c;zcdb1{AR&7Qij%0LS=p|_9F^#XIJ`2s%`C6shK7W?+K1tdK15?3XlTL zZ34QKc4KUo4JPy>mHXTl&TNLD#j^$J%e+LqO_|Ih@oh$A0K(c&v0t4^jd0IRAHWU? z-ZQ6Mf-n$3U`MjzxXcIm6726b`@?a@L;9le#9( zs7=4V>oXZ%0`*Z8xXVGWl)C5GeMJn?lzf7g;JAq>@NdpmULc6mVH(kEJVxn8;q#GR&OQM&Vgz`z3!(T;f72xh<&+`B^%-06Rd$zc#MX3(&EJc_yJ5 zIaI776rT?cV|*nyNp^OvCeDYQx#?zg^)}2H6l74S z_xLGHTAGbWmndMJ;4w}xTlsurW|W^ERuhQ|lsaQ-qAjgRYir8=TE&n)Q&%kE6jOf> zGhxr%Ky+-cgI9#4W|{$g)tjP{!sId$fU`tI@Ndv_w;AWHS%L0g!b!AkHmL#^wfciX z#yW%^7%~?443NyK2=EIYN9^npv$Ek)JC5s*kbwM;%_qv`su}oUEl~5j2r7*B)i6(% z{xlb`1Lrik$@~=X!ZvG)E~ve*n@<;G+9`^i!YTN7K53C{qocXNY#A{PGgNw=>j`Rk zuGNM(#ZGX8jM&d_lYj!)VyCCpTj!XZ`>F(iyLR>@tDdFSZT&3O=D$w4ykp%jWpWkh zYjoDBeWV{XZ|<+P0v*aXyfyAzd&a%6?Yx`$f_pl3J>TjwC^d&v1+Rz*HbD8#b;6?M zEK4E_z&5q)IS^|Bd9c&XxnyL+-+*=(hmawWFqn7UERLj2EX4Mmj17KL$VrZgg@=&l z2(Fl*9)4+oHodYS{fe15q5Wju!%j%k(b4~i% z>ebYz%s-S6GHW+i!7L}qCA{j&n7(Q(5N!(4D516F!ogf98NzgR>hr#D4z@0f*9G-5~EKTGr zwkhxHjWX~6(!YK36!etV?p22JDIje6BQO^NQX-x60A#n^XZ`>v4HS;gMSzfB*!@=Q zS>>~lT7c$lAa+mvss#b-E(Ti0q{ZE7p(`8R3h3wjuK2igDD7ILyh%R9LFGZ*v^u8w zh%IQ4&JTLgUcsohJSi>L_|}r)v1+;N$5ca;B2aWIw98B{2T>;^L5WRu`yf(2*_v$Y zx4@e`g$RvLBe)*lChAC<*)vK!WzQyC%g*~rxy(9yoo&jjWurf6$|L$^$-kU9fwO?O zM556;LZpMas@duvj4pL+9G>N1HCo!~wxM@1@@d3HAq<3{`@&8^W-6twYZUrXdMC`o zAPk@$G=BncA53URu|$_jCgZ#*0(s%7MATh{Gkb39&DrKDS%ykbq!GZOKB_s(>fo69 z^+4%{8~1u@{4FKE;g0QxCyzq8qn?em0(7L0)QC|5S3TEQUin~?%WniBFuheK`?l^F zXO8rvnR(WAWs`HQ->E}rlvU3-b6Y0Gi{qfcnAcLcBAGwGOO`d0DIvuMxiaXqw(=jx zPJFwE)+5Y7Q*S3uY!P-@`CXJT3L3{z_iSc@>`hL3(dbXPA?WpNxQEr?Ph|BE4m4}* zBB zx8HvhH*=5p0bkilk;I|M7J+O08=8`40guXMWSK;*IDC!>%&k}F%VUQ7fMSu`8waQN ze!NF*WxHP@B>YuQbYlYUk(XLe@VITgz2siM?WwY8o5>NtP4`Iymkd&0;i$>4A*BWH zMWmLXIY_$gTtH&l6@bwzeXF@c3hfJ$z;aB-5FvW=4l1Ba0&43^=vMA^kws+XjEdtt zFf^qEE()iPC`cH*x~{Mr!0dU!x? z{baI*zGHTYyl=N{Qc%2_U}`in9;v2nyc&Lf_EW-pDdNzbAJTe;`-Pai-%U0S_M%t( zBQ|g$mJ?oTNp`m4jmX?j&TKUWQ9>Vxoj>mr-b+BDesGv=p`hOcZd>kmiMV4THu-)U zc?Hpf^0xlT9TRv29Hcz1Hf+lo^DzS&P-9G}P!<}}jbA}j9qj(^WssA< zR}QKVuUpJw3E#U3`k|s>82WIBmA>DjJI>1tFiV*;!CC1T>HQERwPP=UKKa?^4ck>M zApl6yMLb&NDnTiEyvt`cZu<1vfo)Ij&J(ZEe)I(=ICiLc0lY0Tnb6A<;3Fi?tsNr? z*=O+S2$_i9eZfX5C@*ZhmA}!mLWO=!x7kLCT854hP5W(Hp$=js>36=#Kx-{j*7wB> z5<~M=T`?Sg0zn~A#T+sco~4EuD45oHoC!ys>CLLmVI70dH~$0r8bw*N?qP_(2p+U5u=}vDRWHpuLxde=3SSm+ zTDW)hY5mwM3u=3tz%llrH3o2N*e(Fq4RLjA=BYB1V7P%TFCf#sq>J_=tz?u_j zopn=6?vGKZ<;H&>PS#FvIPfOg&-2%?x16?mfM~aNyJY-_X`VW7BWcWx#wzzO((s!% zR)ICGb}qaSyr+!!cRyc!?oT|HR^^ppJC?wm3z()1}ofO ziV$m#^1quHEW10gof!L3X|wYk1fo})Y`J8TH&~qO?;!Mau(1$`ed-=aG=9#zF{{g( zubd0Vj(^q6V>`$k2f|d=zvEvjX5hyw_BOlDeuA5HSDnV66S+RW6Eb1PI1!QLt_rzna{9 zh18nez$9wch(+fepkOL79InVaQ~9y$Q(*URjfW`Qic`u~x1MF^1fwOx=m85ltxf2JG+Y*u;MYb#04_ItkqIUHqveO+=U3b#!|RdcZEq02tCzhHg}f`gO}O z4#q&V1E|W;vjv_70AR=g$vW`m1*P5Yrn~4NU=d|W*K?mt}%;^5d4_lrVY~#!op9#A+=2xDJ$a! zH+xtGg?b0L8vqH|F0eMt7|ZCIgmGAW!8Yhe=C8m>4BzK6G{_MBuT(=@I(3wEdz1`aMdEcNHP8ungAK%>Ehf+ ztt0RU=Q+5D}EDuldXofa&!7aZd_ zr9mCvMn%X?+k)GEYd^a?O0Ne#Q+x80W#K9YnkuU}xoNGwz_7Ojq`^KhOhAuq2SxWf z!yI(8@OngzwJWT`?foZHz7FERwG&;uT~Ca1aFoSzh}g7x1%i1L~; zr6Quc2-7NY4W}{er(iXlop!C)=})hA4AIb&QwuxnnvOU$>gB;ru;YlGm?E4 zP-k>T4F!g+_aa=GREKB=PfufgzY&4drJ{i-P$^+4pE`D?2pxchAYKPAtv3-X4{)8A zHO%oBm5$iUu}QYcIdr;E&i8zXQ0QW~jI3h(bMsfFc8|NkeRG*)51QhYwJ`PGL3@L4 ze)eTbxM+f)Fix%gt4k_Qt(wk<$h4#i5FfzF;l}&voM$nNddPaYFpEKoSS&Hpnq5n* z6!i6xD1DY3RfX0^6dty_E)c(R;QT-o9KiCeTU4YYiw$%fwc=7{G#jJDtjtZW(u=I; z!7(5rT@cz1-D9ki7=Fb793G3Al|PqQfA@R?P~DQX`^@3U2M%B-bG;zZZL2=w*V;GQ zr(vrf-+thPzl4H5p2nBzQIdl_T0yrZrw5#_E4O($iI;QeNQa`d?8M*{>L`K#RywBB z&jlJV#D}~<_^mQK`DCEa8lU6(QH$B}4ixOP-73<-!5Cjuyj}BtQUL_Pn%=SsTw=iB zU7ba-qh$>^7lP_A+cq>di?8&{9D@_WNZZIQsIHwFv)eg)j~zY|HqRmI54exo%NAAO z{A9P~bp6lmfPlxT*%(f1mO!xwGI<|>2N*xhX6(n3G7(6$?7`zI(Y_2tOo)uemduz- zART&^DAaWX-_>`@Q?Vn9%ZIZ{sH}qi!caU-lqAK?xlXUT8JMEs778fJn1IN09(XdaVwBsGT|b7&Qb76k=(i%Fb#q#YPXAKh-`FhEt+b^guw%pxQ5o;mbPG#Y z18*b$SSRynw9PM2IqEsee-ue#+o8I{z$J}ApikztsMZf&UIh;^D_G@l5*TTKmN)&| z_=?uCIv2X@z#s8uL{^rGG$~9HGOvuEsp*odTug7#pX7!W=GuwvY{#qha<0PH0Kv{X7zf1M1EX{)Z5_IAxs`|Q!G z^q4D*>m{!b=Lb(WU=^HF`Lik_0qze4XjN$`!Fo=iEq+irL0|hh7uyQ9Zc7al|2CfU z=K^!VX(^nb>eT!0Dv>)+Ex67-?B^yQ#q!34o~Iq2jM@@VB`R%Me5bhv=EtI$95?qT zf!yWE{4=7gUF>8EZF0Z)Y*gr#bo~L0*le2T$71kLdDZ{=W7j$xb-BCs&wvBN#;0J1 zxL6&(kl2wT=GU8ERh*nh;F6iI+$s~MM*9)+?%65@9q$n>Lxf(?P@?RA-JJv?LTghR z5H?1%-n!A!3=)7>ZT)Gnu$QWq*QxV0C%-mP^He6xr!70CHv^5BljgrXMx{t;qagw) z+%7KF!YvZcw|CVmS8B*=iw!NmpaU;16deJbZ1R!c0QLtI>|G0#jVz!9e;rNTd1wm-U!J0Tn(DHn|u?dn)J~qTK zT=Gr?M;L!%-wt(KavoWH8D6qBUIGP{`sO0bZ2^eKtYwkS8sW~nnuVBtEv|s!@`mhSYpJD z6tGjcstJOmXYu%lr0om4>xKD2R^Nu7tqkyn&e(hso1&o!BqYV94YFO(7j#CoHL~*k zH4zjOSu0+v!2If=sQQ#UFO{GEp4v!z#~XGLUQt@(AZv7_D(f)$h`J}$-33n-Yf41a zjvvE+Ny@P4$_=w>Hz~i_Js4R;Zoq+~*XZ-y>~3x?f3kj_->vTovdupQI3_*B9z@1- zETW2Gfv^#*rEXO0B@0WQT`MB8~zc4&P9f*NHR{~)>Kv?dJH?fs37%jg8;~L?? zu(dHOKkd{RVS;+b#rF84x8Fg~P$x7l$yc673v z0+i3k9*7x)6bS`Cw0-=eZ+K*Xb@nlL!QW*o;1ey#hVj3(!@$q0=FYkQ-m^YEBP0Ii zr?3sWi7(?_3hc6?x2@jD4ZI&Zb+Myelz$-BelFTaG(;t^pFnA7ns|>_Ro(a+abYjy|X=_ zs~A^8`{xd4cr#OFXaPLxdxDW~HT?$5^vXx&ytpU9sT~w#b=08KXMsw>Z6JoD)j40B zks0t6y?o{6;Tkz@ARdhntz;nJy4WVvhfuQld2YO3braJfQ;bJ-t>K(*fiWx1vQR-) zbI8;AZ<`sgi43ubugcGkH_YrL)~R)keiOttT!d}B&}oGn937t%CA-X_yXsxxMp=PV z?UqZwByT6ZitWWbdHP7ZJ4^gF84^iM_Qc&t4x0v=J0xEF%&*z*h8+DoVniMEoc<77 zl_+gXI{!zC~-zw}`9mSGE2Vn&}7NCg4g!LHK}msPC$mjRMoPunD5dZw^LwJ4p6 z{8|7y&WS4uMUY?%Az5~Agw@t~_yX{YldN;Jv&mT3elf);C8rz6mWq`a){(4i<Cssn(0Bx`P$~lDbq*?aeXd7wQ%5w(j)7-R+0xxhgz^l|RTcFchB?YxRK) zDavazy?F6Kry^trViOV^ekV1F`w)mtwE`gagKOOPPS->>-#3aY$PzV&ul$D*p#o<9 zBzO1Wmt<}Is#btsV&SjevhP4AMk-NiJt4=~b&`3(oA zkMvbJ8Z>{fGPaiw1m&H^td{s(mSg**c0mUo-XI!mpKBaO_pEVya@Oj~6mah}sp=D3 z;et|tT;W@PC=F9=zIG9@|2aXg9&hWOeSRbPonIPC>k34+K<8{x1Eg3=%qZqn?$qG;PluLW2&ir)hwlh(q$ zv5YltVTgf1i1YuwSalX{o-{0eJNf5K!O3Qp2Gd!!a+8TpQ9LDImizLhrGKJU_gS6S zcIi@TADJxuMKVI!2AU-ArTyq%3=Y)sWW1q8m4U(DS<@w)r8&I}*~?#Ii*>MPG5*Qm z#hwn88dr91Ha}EsicByx(F(!j!klvvn0$CY+UQMRC82P@+{^?LJhHQl4q_j_e7D(f zj*Gl_OeZsZ;v}WXh@Z6jcgu(mgx0kK#UstAO<9ZcK|=ai5KY(s&ZPQiRI;PL4crkP zscUSpbn^BkD+^24_I0CVCb|Yxt`X&MAi?GIe=MaC0MRbgcljwXzjXUk&Riu2ATe_Z z&BtApm8H_tV(?q{$sM-+r_7&m4dt*vGQtkr(MSwV?gQ<+{v$vG>h&MSZksRi)Xj;@ zHS^<3$(@9jzPhv(s>}cwkkzQMqWN&u9qx%9e$lAAP|Df8wQSDH+~7$qoDYKir$kO4oS1-;t$<&UlT+klRfn(a?g7Vx#n`$ovX6* zk0h%djR@gkA2=`FUa>`{V@2R(7B%Jn-)LA`1wPah{2L-AeAx1_0*|AE%0EFt2d~3_ z$Hi+}CU*t@*p3kH+G*n3Zip}Ap~IMpbAVh9}n?2I>?BWvT@wM_1Q^lz@fVHC1`p$KgW8T-2*R&(4F|GJ$6gDGeTrkB z^OcL}7*~ld4bcOODgnv{u%-t|qOR2a9K$v3H**8OC5Q}^1L3_CEPM>=7YR%4Hr1Yp z>X$DDB7|C(5N!K1T5HZ4tAEeA?J!NOk8BwnjfOvG9N+tl57|whdd+WqLDd<^#0<>7 zNYHC6kjI=G>|ziLz2L1?iLdyJkS7WrK()$Fc+~eCk2NhUD4$6SlX@KASO(^0~*qmP33l z0P6f!T_d6(rO)`AVVv-`y1KZ8c##GST_m#LvctQ(@n1K&jt1{RW^WC`bdVueQgzCIQZoVd>2fCwOmaexC4JP|)HnD%^NFY^!aZv3C4OtcAm{A4 zWW+;I)`~^ArFOB8Q9iFfqz(&*Ra>#D)c!QlCKp@2DrdS9~01ruTV6>Jb?$0K1JM4Vri5Vk?H)?WZbSTG1 z9Efnh^}3A;Ir^uA4;S&%d6@XW_Jkdl@o%niJi;EjW<4#!kYYOQ{jd2o0sW9sJ3Zd_ zn<4K*kc{ir3)&JCtD)bMjC&meyy9Gw2O5-4B)tQ01@utxuB1}u$aP)=GAiF+Kk8krqET_9?(>Df)aC( zk>(pI9%a5AD8pjXQt1M8K<+Md0+5f^hpN=>PU{a3ucNi!$9*# zBW}Rid`9#DNJk3y&=RR1c+`{bGnXuQ;>)=^a_hSJ&_AIqcO7l)d40IJt(8(9f0CbnWd%PTSOME$@BVn0Qf?NJ-D7gU#OhLmrN^Kp>2L6+p>g+IJKP`ll>Cj6JcbQ?}+ke7OGt=QbDFef$m&Xqy11WN~u-~J}pUm zgfUU)$N6KHTrL=VR+TLkhEDLPe@>C*<0mX6y!nFBjehM+{;Xpl$(O=ff}LX-ZTXRP zE>Al%rT$g?*xvExXHxs>_n?6ZK2M(_-}`SL_l7!Vrjn2Z8}9FhOby#g*rd4cx6iTU zCV<$ehP^G)c`kr*O?0YRD!mz{GS8J2P;kQFb@?>QLedcG_ABdC5v5k00K5+x(uCp3 zq6YpH1*j;nKUrLbIW6{v)l*mhM55IRylyBI8LC9iq*y*x-4dA|*969T>||z%NajP| z9R-56Vxfj^)svf<`CtHr{?##*r&w~n%Q}bWPydwN%HBCMjFNi!bz`}E(_(SMrs?t# zTJglijg0m0{q^Z9bdLk58tVzsNY@$T@V;tHLl0gu)hG)gM-~s{&F6lvBCaDM57|B=PuvaW=fUK}DOLf|jRHyz zE`Qcg~jmNDTWWggE^J!mx2>oZ+SlGM*;guhEFEOxZBepWWs$I4eH+-Y7gU`U? z^+QLy8rjIYR=~RU>WqGh(Q7Q?3bD0rD%@m<=6UI>GD8@Z10-l)vBk4)K9T~u zdbYYo4}&Ol?0P;xE z2?Ck!(i&DyFjnPtXzA5F8quCnlu`BI!B|6aA&{o;ffT1_^ox=@>K4Y9F}rq6Mwq1D z3#a1@Pmyk??Cm&^=skb470(8kvvNL*|FfrdjyrRP@CMc*Sl>gOqVMbP9iSyWq9&z$ zB!-5mUY;r^j#6!9GrE)hCYb^L{VxBOCUFm?4%swD^Ba)aLDy^{8EdtbrS;3K2> zEcAuLwT{zYy^r6yZF*K~xWe~aq6HN$k*dV`1ttB;3P$u{_`TM^PpMSVOXJI6c0#V| zq+^GTUkY+l^B(f6sIOzxw1&6=eToPMO$HR0%#`T$2sBj5W)-+q`8ac-$v3nwo!?ot zc2RxyCPR&?1@)U6;#1P=|DCznPoR|kFym98I6a`~)u5Lzx60!Sc8|}hm?6WuHQv^P z!Wh=y&bU<`aV+`aSw06)B|!g*@_$!5V<=l!ZL$E6kX4Egf4?v=DQVK73JYi>*OoU` zh4##MCQG~R2{@qLYDJhD7Wot3f>Ny!yvmroA&`T3!3-@B>FwFzj!tIle5%$7RS-M*N zVXq5oI{D@et60MwMM^d__h>nW1C!B?C8>ZeXZWClaZ&Lm{ht6-e|(TP!Hjt<5@S96 z*GedScc~EVN;zdw7#f`FU(TFZ_TMGgm~7(CUQZ=N#lrcBvg8~8J_Aif zKn;Fh%+HZryW$)SoORk*61$`UzveJj#!wjy#a+CM871j46VS4jmvLocf zDP`rQwPu4fj(TsX2#YATjGKa2lHaBX#La*29?i;`yPE4_jyZIr%Ky_E;kic2L7Ept zKj7fyvNATD5K$z`g9VBSl5E7d8Rcp@o0aWyrOYM-gzxcoEC#KUlz7l&_ubol)9) z#78K-aGFp?Q&R;H<+=7|GzqRmjel+)wY4o?g81PHM>&-vLCo2e9#($qO zrsLF1|B*A+_vp0BF6{Rff52<9cpc4L&mPIrHxs9LNoCb>fgMibx%9{?Ld6~#kiOXOU2yB9We+>jb z>fZcp=FV_G&8#rxF5lI?k)s1P7f690Y#3_gSt6?wP12NwP@ryvz7DycrRAwvvx;n4 zmdQ~5j{mU9A8V5bk_gZ^7Jt3)8b|AP2TGdkjHp?Tivsi{h@YdqFfR zWFOl=`_v$xEcAS_j~uM>fmH6PPxCQEwqmg}P#p`s!2p1gB8 zlNmB8NO7Ak4|+=q#lP!c2bb7@f#)&!oaSMG;a=RLNH99)Iu2qr+{)kJcr%tIQ}+c8`0?M4Z|SA`aprU0AkMHvnR zt~u6SZIyC;AiA>i^4~Sly@BIJI&@ZmgH*VQ-0Y^pfw=JXW(fY81+YN}_C=6xVT`7(r%6l3>2?Xvwr#jkMzI`IyaCqyo{OT~6dOccnWzS@_ske?mTo5&mV=?a%E z(&G}a5p&okSHKcB*Xk;v>H{gMhCUO+D!<||zY+3mXy2lND?giYDb6k-`pSUTU;LM9PX4qxN7Nuw&WZ;OG?V?wzmI+Bl<=qmw z8Nlimr?6l>T!<9-Nd5$x7Tn*V#hOG0sbP1`Ch76 zLm>1uU2q;;Snf1~e^ODh{wi(!y1pP50?GFE$*S+*8}IpeO^g0_O@a(YMsKv>q)-y< z`tyPt%YVrDUmXKbzd>>N8#{I;hZ=Ib(Mi@&# zA^>91C@iNvdN5mCVy(KgSmT2rZ~YDvnGQv^P)#+a@TjCTcN>N6cC_$O!#4SjUR{5+ zai#HT_M^O4^9rmX`S^?W5Vf|iVb^j7JgH7$cYhwN4~I%Y$DZ(Bp1Hh!bw$<9Qq*~i zd}hH^qjZUVGBFPKFOm4V9o}t<@3$j(hq)g0fWaNW@pf8?mRd<7Lt~5$CU|=o!WO4J zm4lTi>308h{k-%$qHkvJ;)yI8InTJX{0f_3k}A}r6Iy9^VtqT-PbLlgjrILE_8MuY&r$68BiHd1RtC3 zFpx1!F09kG7{v8CNjH!L*Fg!nTlxk0x;SPv%}Bq{_n zPs?)L6`zaBpRIU`0woozl|gyiRaSj2Waa%^s|~=0I2f*C-rc#B20?mhAS9Jrn{>le zg?z>1jC8OIfJ2c}*|8D?*D7`tFtJ-0UG+4b_HP<^pW{423dfe^P#4e6~g+L#Ik6jQ%zuwP@LAReKq)iK0L%o+p@v753rEvbM zBE`wF#nVDi5sXe{(d!YE)ItXNsJO$GVh)nCtJPpZ#2s78B}gtF9*mMq;k!VF!tk`0 zfbWV6VhT?z$1#E85=|P1sdB8Rke4x*agl(4*HX&yZQ*7Gv-nTeXi}(kZwSB=bO*ty zi?v5+GN0h}2%Xi^@+?ksycDa9p%-p!2(hZEx(hW*P0Qay{Pn0G`BNY z=tT2db>JT@(t!>OY z?>+yf{%o~UZ_L{yQM6XZEN&G-0~e(q(pKCff)`+LEXc{1V-!paaH28&PR|NuCd$Yg z=6KU2MYWH&Rk=WDK9M8+9`h2it}n^t8!k?uyFC| z{(ACXy7*=jTd4V_cBhWD*Tj&b+Bj&{kW^cuFhSrgB97invM8p2>F@Y7Isve;wP;Dj z^zhUDhb@Zw)m*208=daVoT0ac%w=P!zxj)Vu|ZuDiM3K;D>#A{52+{LOG^}GR%k)y zAof$ZnpC)A>2GwI5_rmUUe)wbJ+{!HoO-b;E4lzOBWS~6SA{P2vllo-Y{p67#us#H zk~P$X<#^~TQqjX~;mQByu#-@=Xs52HdOsOs4UNV0Dwv^z-RR`#2K;lMj{Q+eGw3J) zLwrUVZPY3|mVRQa$7a!}Ey$!tyIY?)LU|u5@CO#sy8QmBidh+mwF%3>RW;i5?*L}` zObd?pTxCH)O6)?6(kg4gv>8h#*hOH2RNKis#=E&tIM9=My5P+2qc3xD=}VGZ)wZ8^ zCoGRIW-0y;l$&zSpX*3osavQ&UFRiXmI@={hN2VNL-37}J*$ah8&H*YoJ7;`+0J5{ ze`2xgvt+EGrSz>AbP%ujY{pr}sxz3@G zvE5N1rhK`a?B0o@ZwEe&@CR~B@-&wZ{)X_~0peNiwB!N*Ld+#w7}BY4zm}DOuIH7b zUMyzFS!*aF%m~(c>WV56md(g=fi81xIjU?oo{7K)5IAn4TJtWG$?7^;`<(VHTRVln z{-<&=e#ejUmyr6upWwiwofNX=0+S&uuV~D+iK@tdI%e^C%)>5{A^N>(W?lr!uoW2u3$_UC!;->gI{(MYnfF| z`io@=G9j;6rH}W$|E~sJLLucMj_ah@BtZIc@6YoLm(8^PoLn!||t}&Q5U^?(&$T|Vj0Quo(iAcM zn#q*hAABu}#G9Ls2_)4?XTCOXLji70+6KKYerFE`C)-!0#?5AgElO=Tb%=CRtl+4k z43@^!IM{^9>Nv0uP55|21Sd&&(EUg8%#3;iT-WLVlLj>ND>$wrFX3{B569@7Mu{$l zl42uE;1En;LCs1dqCq&Cj;^m*(`*}08h4hC6$J}H(rt?G9OITUmv*Fhb+xn|7U;yhlU4Z`qqgPGaMMFfrJlJ2Pl4Ns zAR*F9=Gw<-70Y&n^<+{bm%V@Gx3443v7Mi_oP*VGSN(M^L=-n?&s{`^R(?+y1?P55P|v1&n>zWaLfj zrwFP>NbIXJo-I#Xk3x1;9dGNqKb^0HRH*=;nmFO2E0h#}1WZCKsED_B1^ri>@u;UX z)x%liXPkTYHdWLQ#EfPH8yBkER>$l|7QkLZOqDl{iQ@Qk{*Qrqd%Jw81wvLfr`Ekg z_tIf?;-5fAqX{1w_83RS;ng#5fF|p+AD2p0sWSm}DBbI|p{gKVDWxTJ&uL{iDXvJI zlErr;E2MPvLs{%2tWc=gjg{!1pAOoyyzi1!5B+H_WZjA2rwFV|E{R3^DLG9pF>0Sm z{zZ@-H%s zTU@Xef0}xa7{g9b!Q0E)qsp-Mq5}MhMni|%=GqXe7_rVfs>EKtd`sew{i~4t?v*wM zmtwfQyVYHud75p(8g3f-hS!Lva4W*@oFk35U*653Q0W8K@$^@)PP7h4>A(FsR2{H7 ziSHe$=8mr8REd+M_T2PTR(PZ*(U=rtjKbhb3e`Fi%UHAk=&p1_8O&gT)1pRL3Ygr5 z$#T}m{)(TkH=LXpS@ZFgvBlSqx;|3SQ$QGuhenBdKkD)0ar2qmOgi_}uw~6_-V3;j z+kr`ZG4D15hJO>H)*0ec#Xk-CM4?jp_S;V!kXe@+(yK6)ZGa6BNZDKCgoJ3TTx+`> zQv}fxc8z(+M(M0~c)Zh$jLl8^iTIkga4yMx?p5#xH0AF*YJQDWV$y{gA0R3n0RllIu|jGlvoWUAxxb>0&mn0c7DG4WG?m8OnE&^?1MVZIS0OV^2c zdbHSDg8{?&;o9?Jk=W%SY4hvTNc#>aj zdSBe;y2tcR``R-1=cXb5Uf&t|&(W_{EaK|kYYXFz?}VGso&ZwSGpSHrOmz>3yo|_3 ziOS~q#irh%#{Vr}6#W%TN@aLXWTzh*tJX6FyI04IeCKrOi?=O0Y5%cVsR)+4&S~dr z`VX^JpA{Y>$$V&-N-%~g#p2x zI(RL*&oE4fKqiM;YJ1Dh=4DKh{n=x^SnU~aK&?#EMtSI5$>kuuj`{FIlzOQXJLj{nz+cT=QL_oI;9~>fR#bcEm zXEmEuFe%wT@erP)0TU5-k`AB?@EN#p7NoErKa;l^1{eU~&fgIo(Or72EMv*HqKXA# zX^#YUvj)8<0|YK8I>Z>0Su|~_DfI))fhQXtS)@e_hw|hpOKFWObZXGTs|HAfGH+Nf?Q5L&--XS}50uB!vJ@=} zgq6;5o!J$O@_lrlh7%0#sZbQSqhfIoWkZIEe?tlDWMg>vjKaPuGyou7ywIc>L|-X( zak_hjN=Lp~uH(2SW@LIaRx>1w!&UU1;C|M4AhL@DlE`Fkj-ZwPNMKhv8o*(HW1O z4{GBX{%bbCx(Q6*hJU?!E#C^`Pt;carq5QMfn&_NNb+i7+_Yo5Y*~VbK->`As6q=MoU~EBj@WrC=R`?sF zMu1>0Eb>nsG`f9S6xYJ~T^|%8Y;g$xR)({xf!K;g8-s@MdZQ@Z;v-zsO8e^C71qEb z{Bw&G?8io0MATTD2AiF0uK?PHvJOb6+fChAgs|`nMm!P`Lo99usBu)(GNDKOfQ+!5Z{eu zhwX)=Y2LPFUE6SnO3O@p2Nn z6u}i=1T0hZEtmBfu~HT}7`NmYaKUF3xL zB?d)qP1ht=AOThCC?oF6N>8OgC-fEVKMGGw)P2;RYx{gByHmO*y7LUl*rs_` zdy~b9Ipa8MU4Q$5JRh~af3FB7si8Qukt&;DyZV>QWGEWZKD!j+KgJy1|3qg&lS~_@ zOQsFf7tvx|LMnPs1Ttam_XmBohUuqL$gcdZ;Vl5xvq{3^sa_!*??Q@$)?*J&C;vbX zIE7Wjpu~nmYt$p@QjR;RiD+mW79q(ZzRu}o@77K)DFM5jNF{N03W`HNxg;HbOXX@1 zXnJZgpxAPkWydW&4Ai*7QZgVqvk?;qkf;H^L;PF-d4$NsN%dP@G@WS*n%dl2ar=UZ zay~l;W6SNifS?Bv^KiMY^;+3DHo=^qgKt>Oo7(o3=kvsg&o-szL|y|9Y%lLNw+8|LIIxwyBilre}tnPG&y2Y%4I2)~9KrjsFM}R~3rD ztO71vCP#9`Sx}@hdEz6T0DhA&cK2!A>^E6QZK(QIhOKu-hna*~h;I8L^R4O-UOvZe z2bp`!IQ0MIS}df6WRxDu`$@hZ<}sZQmIR793b+QM24silU4G|zMsb*- zWiCGwHwn|CrPcFfKP*McDt*%&yM*hIg$PZ#9aF-BWlngB2MVO-*K~f}Yj}@I0iVXt z8gNxB+sD3^+>xwWgjoSe=ycaVG?&G)Wv(pGrqU!+tokv*U`?|Ua=p}NkPWhiA+Bp3 ziF{U*ucld(SnS%Wqgvz)Kc6AYE7NG-Mda);g9I6aFg_nQdZ0uP<4uVu+hKVhx5LYx z06jp$zg1gY_Nr(r=;_b=k`Ipy#=iEt(qwFi3B|CZ@|DU|t}Y>I~gr6Q=LIrk!j=b*)$! zeUah$hG)-obXPJA86)I_MKeO(eaisp)3wZ~dMbbq(L~U|ettG4 zC)g?cD?G4yI6KQnW2@Va?0FGxb&6CIg&U4!lF@?KedtO2d<#4moiktJnDpi`?AVdN z`c3~F(&w4}A&0P-l}i=1GrSJg(AT{Ea;*J|e&S+UsUIKRjqB0Pv?uH5pi^!d;s1Pt znjQvok7O;fPI)neF;_$%KH2D!MKYdj^)~M&T5Cg6>uS>p7nylmPo)pOSW&&MGqaNV zc_M>Dl`dS=+RsGWdi%e4(7uZd6<+2&B*!m+jRAO$-rDese4X7&VZ08s0H|6YmJLJV z+#4`g`8KJVHJ&2YI(T_b3E(Voq{|O5u zo<2IZmj_U!33yFP44XJ8#wBv-nMYJxl5}_U3g)d6ACr1zSN7ni1T96`rYCPqXE}I3 zjyAMGD#Y92p!t<{^~od#*?v{X#*&+T)vvi>6__iO#MM4X1pF+64wBDOQwzD^(=n@8 zYGQlnZs%8!=s>*{mp%RO8&Ht1pcOmRJ0vrx^m`=$?EUs5-FH0FhE4Lo7-iRKD+T)N zm#{T4v1XZ!&%NfRPl~UyXikJFn;+>IT$H_xqGRznSL_k&5l|t_vbJlM&rCesfgaYU zwjmKX*svo2q1!6T9SY*rlp;I`p_fy81Iid+>DM!r)pQZyB$h~CVBg!{8zAO56@L%C z&EdR_avU2Vma+7TnsgPGJq}I@7B&yjR9g~5a|NzYi(K24nxYP4!GlkK>KE- znSvzPC7u)>*x!v@LrR{p8C$em>-|1VoVv&t!6%6DafdEunLKP%#pag zWFCI~-br07~hG>!QY80%jbDz%R-op@T3Y&gr9E_?^!~C@$eKjGPfws1_ z;DFOI2zv_ryTD8#wI$67fnIPP|CcIH)Aa3%0oB}jLGD20I>L@<>}_Le=!*?;CKtS{ zi3s66YbqWm2RE8*7Y7uuj)F7(aBIPwbDuLjvGb{|QRCV2GR{|SjfzrrDw=9y@@(;% zElQECp_#PEQkn6&az!@xX57>*V&Kig3#Y*|oU8Jyj0m&81Nmgdeh3H%nF~6EgssbS=V8FqWg9-NGj#ewq8I{H>srwNdh;Z%Pgse=9KfgM1&+<=K{%mkncZ*rD0GoA9P|9yZbboidV=%9|a8dw}eV8 zo=*_4UUSBF-Oe^TMJ}L|KgJ255D_QomS3aLo~CE`-kX_3iA6n72;At_!KZ?qardGp zc7=%hf0t043$S?_!R`bh5OIzdfx&262Ct1|#}!-WbrT6ev#abF*G3$hCW{H*<~tGD z%O60isq$)CN4eRIzwDsJ>x?7z^vGBexv(OK8+G|gF;}RTaf*jeipHH3Dw-SjlM1i^)p#C?4-Yz zwVMQ!b24&&Imarw{IJw+eS;Sm>!CoG?M-vP%R#^jiZEBLP zTQDpArMK#en8lnZHqa^%4wYw!WSBe$A8+-OB=F`bgf~kw%S8O9&C;~49&scNzCvsg zcq=^yBkC-Oa&e#sf{*d2X4=vD`Ek*Kg~O|2)R=lf{Rq4Njz!wCu#8=_xCU(N5!brj zCa+k(eo%%iNQHh_+4GbWfBpv)PrWNvzz34AgWlJBD?@FJ9(`IqB2O1%4PK33V6feB z;cPjVquIW?mz(NkPUT`?qyE_l$pHt(KAjfsXmVpv1NGwPG|Gn-WR1NdA2*$F$MLkO z1{>=hroYxV6;aTFcL@~XPV#Opye`ABCgb27de`vJB}1)##FacbU25Qe`1tDxO;DCW zUp4c6`~aWPxO2{LMOz}zx;{s-xT}Za?-BZN86hLSYdLm?LI@s&NME_(x38M=g@0Qi zt`X)4#Idh5J;Y6_Cxec3HS!^uOZnZic^N>K+@huTo_Y~MlvW+#l*a&9>g8SU4ul?u z>MlAvK@y=soT)E2YMwjFs} zAjU7dbFw?Hw|e_l4lahtQ1*Icj_voZb4%Wn{VQJL_!KA{#LYW8Z*9dZJhZztutLT% zLEA2UfU}Fd43nHRNMwn=`}%XV@cJe6TubYDou9KV4p29ly{)rzN_l(L8xF31pXjP* zg?a}?s;)9YSs-X!fuJ%jdt}cmP8SiErwc)^B%=tk8p>lJc*1q@$%_yqmzqil;_Kd@ z%lKk-0{Hs2kr;8}A1Yr6US)bJNqk}^;oyz=FIKXGkDab{wup#-Bp7LZ&j`0Ffml`g zvG>Px!^VQhJ5IRCbVwT*K|9G)t-ZaBsPOQV05;T`=%&&Fo*!*z>4Ng{?}MJll1;h2 zL^xFlv_GD|HYCJ3NXHI)h>%HbK2uQyLLq4V4t%_Tu*LXdwZV+><_ft72fw1TS&N3# zG~4wZdGy;}6RQSk=!B-yM{ECIbHyDp_bt{FJk(dQK*@R0Dbv%8ZdLPMEK@{QVi+dp z)}fN9vI0!c#%>+e^r$1VnkeORC9d#~|4#|O3;%YCGj$#`q|5_U`vyH7yV`aD=@q{MOLcB*4z0=sV~$x- zm|`dL&u{6Aj}tVz1nP8A{F|>t@^lzm2UtY<@pDNBbUYn_Mze<3Usnt;c9GT@0q&Sg z8%E*3MR0IN#cD5IZW zp^FrDz=qq0@WP9-qwh**LI$l5(2^DO(iM7ahT~6TsJTCkR7&5PGz+3HFv?hUmdR~j zoHRSIn*@It^nuZYyMyxmah_FXjXTX;jX?!#?pzdMj0m9Mq*<@EhG=f? z<@Y(yin)FXNoNSBo?|Vl#wwGf{(4OtQ8a%9N1*v=RcUhuhG$S!brTqGz_`p7A?>>0 zMhFtQ^$?BPjgctUGR4}3gZ6}g_qU&98%y8p0@X@+ zCSQ7hC5^Uc6HN(QJ^HEh-Guj`*QD0sZH2mK+EY)7wnVU4yK*bSuhLDTKOsia_vFqR zi%zy-L##bhHjptd6OSb3>PTJ&$8t?3ie^bRvE=7(kiq*2x+S=!KM|&sLg^ zMn{w~Gh;5F32jF@A^59DAc9cxVeT0b4<`#r=3L;aT%4I9*HU?O9=BF0q5EC{4DjK< znlL~Ed$W(SARp_CAf{OJIP|pg4uu=f{;+lKuUxkgGzzUm@ExYqQwhJ8+{S;D7L!;C z{Mv6-NBt?&0?9b%Wqt|sg^rVLy>LpLvhj4OK~$79gXJ_2?Rn1T#73Vm`n5F-O?+zt zgf<)-dY1qlr*hGq|L&cB9GseyRs|Eb_|ou^Yc6}5_^lG}Odgw%gG z6YKRo1Q7R)nr&fWgh8qL%Nxff`ff3?yO;aVq0W{fu;c}D73U;JwXpxQ(VnZUy0|UQ zRU_w-_*FzPqQBR7a%dVQ8&BR{x)Rl~E6Erg#rHa1na-{|Tw!yMe^)a2uRo~TomWP# zfaF5lEmA@fGy6zOub7*pdQWXt1Ub0AjI(^*tF%)uEk+VykBZg4y2c+*=PCSy zY36BV9l6U0=u(_4&)9}y6>m5W9*>LEFnVhmE5DAKDpHUYXu86N+Hpd&n>BD53xsO5 z&%_wNl3SPBkzoA`rR@$;^goRZ_MnF4)SL^jf7>syUeHDzq_nYZV32L{PiI`$GpSmV zJG-?=$g@;RuR0=qMAEdR%m5=UCLfc{GuhSw_KkzM#V=Wwv>kC12?MjW`jq#zz7cSa zOD}%-e7aJ`S237&K<_(0Fly8rPOl;2DjflHDpaEU@@MtL5nF{v z;J;_&Wl^X-&@$p=Nq~-KzSZHzslr-}Em)EDdgR6uVSK^ix;@s+P+c~mVM#5>xK0ro za`R$Ig?EZ;8N?6Rf`>{b%FO32ZQRbQNuPcBg+tx>tlPVpv$yq&S|2Xll@!~F63-Cu{`TQ52o*BeDuR@A@ ziky0WdG_4c^)@gO(BG+R?C=o8kA4+q$nt-EsSu%cIa*Ly{k+hI)@+`yZ?l3rFN#{c z3C2XwlF&4se42+JbEj`BAG@jNLn9iI0w7bb@6o7_(p8 zm0K-2o1Jc}_09vX6AaoTOB39_kOfvu4&jk_`ZVD|yyl9p2Yu!zMNKNEu#svO`1$N} zi6gfpjcE7zXMuam&PjP%J22mdD-iI~F2jas^`ES(f<}1Gcdbi88px>|4-C4*R%Ft& z0Z?^7^jIb-X7n5$a23fAqpM`#Soz(D(=3k8kHcWi@CGcN)6$gjiDExC{~*0N7VzHJ zoLrGS{#&*%N_&9Wn}jJBdNwU{gIXXJO^_jZ$ak#4>B-%-7qWGRuA!_}=P_>(dQtl> z9!FIAO5^veTfio%q|QjdMKYwsg4P_z>;`;37tQmSFznC zLQqk@`+?m^?up`E6)y>?WHfAs8|}o-F-o@HCB)Q&xB&qJcDxE3_i zyzddrvXIW%?{Gi4F@tZc4t0_5L44!`6)Ewjqzym34X?n!9a_btR+K#EVT`S?^n zykZvkRfxxt?g9^_XDLv{E+iv4?u=Pt_yDH8VoGB^D~oL2S@> z0(!nzej$o@Q9G88?o|D}&Rlc@>YN%AYCs9QKb9eYYN|02jr_XOEb)c>;V51r#L0{| z$vhTW4bPu=3}(|Z_+R%XRNeANff8Xf;VP)A7pS~UA465TMz zBDY0b8o!J=1P{6s&&O8~V`iHWY6aXLT6sF_bK=mEd9A1&UPhEulugkm2TgluJLSEZ7kILy4&`^{G;w>P9QB(OTF{Iv?I zE!GwVgLPBM+N#EUU0gfr9L-T0qCQlz2Sra^hxJPQ-?Ynt;*24>cWUPKbhLilbbkq10?y7?e9HQW9-uhG^ zSA@@~kZ8f=VN71El|ho-(ejk~B)faBhrEMnQoNx^j~?_g8Us7pl*fjhh#9C+on~DZ z>u^Ei`%*hc=T!%J^+kvS03=f9RL&zL)CZHP-{kYi33wb|u$WSPW>A^T{2k}e22JvW zLS5_BGtqI=8NN%E5wV=sL298l&y$soGc{8& zGrr6Du!zb9G&e_>Nut`zlj^M31M&3yqQB9|*M?NC+Of2jv6KetTb`D}XM#VHVXFhGrQtLlSYq!R{iH;0o(eXc8V9Vmu zdNlK5N%0y^ivTv4SOMIuE|2IGbwbsE^ftp~YY~xLBD4R(Kb$lCBsue|;>EJ?d4^}| z_4F&VoQT{{>3KVey#B<21UQ~NY?E0Ox)PiyhxX8qFNkr|QxGejHb%!7U3+Dc;_rl%M=g|Jv>gMnkl5)9>>v96nmW;mvVR~bRW(<15#Z7v^5aQG1vERkzYn5Tox6`XCZ>z<+V%Ou|fSh~YKa zXZ4krF5T>}j`vRR9nymp7!@KZDi3~TqrVs18`ZSb;oE0Wu*a9ecbbTUSGHo@x)O063 z38ta#))mrlRezTl+Yp6yF)O^hTW&`<$KD< zZ8QNYNmCT;spsnLp&2K`-)6~7ZijjVQ)O?O3%(W#kZYArdO%xg+zE@N43Q5+UMqSw zt=z1&pHyasdz_DR1I!5(OB*wyt+vAb;|-|Fy(e1n=hF!W&^*TM_eUn*z7d|=vGQ}~ zsBxkMjo$}*54*y>!U-ODf6qJoMT!FVLhSKKS737eMfz9`CxxwNGq-Oa5$HYZiXEp=2XFGQIFWz;lcaRS3 za*c$0fI!7W3VCH!Gx)8T5J_rRrUMnPdo47;vFW2PoH2tj25- z;18bo6BEkARnzHzDxrU5_=b_0cV}#=I8KZSGXZq0wlyJy%Q2bZsKc%4fN5o)&udO@ zl07l6BtoG=D)6a0_F8y3RoUt+?ySQMs1=);e_|8>z%M|P1){)_A6keu9tEM`z=ZjDLX^FHC_5LW$t#Doj$Wk`z)2G(5 z;AdLl&@SXzOA$=^bzaRY$F^JqksP9j!z1$@0awflSrFcY8QOd0qbJa!RG=ToO9#y~ zgySRc(?Jj9!*(N0bJ_PmiFzL3_dBuq<@ad?E+b(6$1ZQ57d5rTWu~Tk9TD;#(6mLJUC=E&nX~_7u9MPXDUj!>whqu#8I9BFjItA>0mhZG2m3?Z@jLn%4%leLtHO%>yB}wk z+CGtYWW`3rZanjCkJ%d2UtQSgmK z0%i6$nt7D3DNUlSxNUOrR@D}4oQ-Y9P7CQ0w^XY<+nz@3JTx*^1WfUHGyHjH0swqv zSbvi*NPtR$PeV z{;&x`r52>H?rXuhxXzpT=uEA7dDP<2YD{;={r{@Gl+{+lS!2dui=WxBNH;qsKBOy; zjQKM6&q*^HthX9ONg$|;jmF72%xb7oXp0be$KmG%y`Q)3r(%OexlE28z43vP9CmAL z&(84P;yoHal>D4ETN$5_vG_Cq=`m>Syi>RL7adPWKcNISme zi8QLyM+sLGzh+sd*`g2 zJRfE4P4tzEu@dUnrvvwJVBE}qnib^l7Y#fbi@~u$<{cs54#n^jwFEOk+!4yj--(l5 zeU;7x+>Um)9WL-H(^QSYAAyNjEjM-0C=z1p0O%*B#izwe7>PR3aCfyWA4NegmLIuCMGvce z+_4^>>h3HZwpfJ-r}{O|<52RW?s4XaqZ*ey*TU-(i*Y=cM(a5@r%wWa>!!CF9(Htn zH1?YlBh?}A8x(s1Y+H1emvA}ZL>XlrG4DViJIf5Dr4NXenuU)dgTQ<@3WBSw8U;QS zfP`6dK=p-@EPfh6GJBNp%lkWfA7@@x{%q5rjXo=Yp<<;8VS4S%X%IqIOuZT`0H>ql z)s&Nf554ummL7Se(jnWaaz+>uAj!BYpDNuEz8z{5ftk=Zsk4{^UZ;XJMhHy!gv5lls_J(f%8Bi3j zZYtKXM2Zo4Cf-(raTA+iD-1TDiKLevJTbgg1>mQ$nIi^d<=+>np3}UxvLVytCjSH} zq$jSVcOLMv4&bGMdXu#Jtyea7XK1itQgX#}9!yqWIA34lGW3OazXT6GZylxaw+(jP z%|a`uEP`;6yDGF0P3h9xvGRV zG2uVNNat^aA=Tb-FXzd604xCO(v|wOfK=Z

gCs1bGMo7FIeD&V!PMC~TSCE^HKu z1U1GdZj*n4{JlN-^QZdBpV7{Fk)4h_uq}GCdqcCVlQ|)uq1lBWIKuB0%CObw##F9? z=BuRkx_?wmx+2|96%`6Hyu~&=pj<&_oCPR7fdlDc75{6Qj=W;q25IT3=(iS)-fPFS zQbRQi=QL@}0q-P7Vl*}6kl)8#Lj*~{&E(nV z1QE=it+Jv$5~~sM9Kj>7^gDu8>f6k-HpSPrLlcG3>Pc#ERiyaWWtSTHjV}Aut&Ynn z8r!Z=P&(vwp0dd)%iyP$;5$4JhXmI{K!Ez9Pfw;*mJjL$U+7i9{JW|Jnplo8A=MyF zNNwM?IotYK5H=5FD=A&^JxW#(LBN{YhQt$ZuUpwH-UL~H{Gaxt-f$VJ_rBjx6z8zx zjTfa{j5oiE+$3*dA4styiJsIk;1Hq$Mz#wg4^P4!J=XM2mIF#5cP>~>z>&kkO+{6k z#%T9L$xm1d$K$EXYduaY!+|73{hAz%+O^%ancAbh%e%=juj?de-VSsUD)GkGd)y8m zL!n}WYm$rj9!6@@bS%y?%8C2&QHl#bw*Zt++u;Y62((-rjC$Mtc={E4`m;j;=OBnO zY*u3u1LHQu)gB(-*}BH-Nl>I47I7Wy&AR*t1UQ2tuIsy>=vzZ#iaMS;q)SZ6F0Rq0 zVJBAU0O|Zt0PYJ96L+soF|cxGqRwYYF`|REm2vgF7gCAvahrQaAF7lk0UmL?=fw z(>XbfwlJmuxAg~Z(;KPWyypeQTlNWac;%X6MNTr zgFg#veB{4tALi-{>@9t%ap+bb8`@;jhf&yABTAL=ecvJvd zOC{@nMXeGUA3s4C`|Nt7eAJ`753QoHLv+nONCdA(C& zb;|apQ{(n1D4d$;ix+my!l5dNH0lvJS98#h_r34v?}5xc=;t5 zy@huwO^#>Hq3A-dMoW@fqMU+sTgQ323453@tL#`XBE9j)_YTEa04#6+r zfIv=xUeG91AKX&K!NMhjOiW^PjNVAJn}@aM?cst3?ws2s{YA*MMl@I_!Bv*Whe)>r zIpCT$pHaV#AkH^Sjn6%T{{p{g_~S~iC+16-rv1ps!gPFW0;E+6O-OtV($`_kFMy*O zB5a?WSoY@%);~9?+4ov8jPaSuI*S{$^`muh`epBV?ChP00)L^2^w~WD3gqCn`b*sr2Ie;NP6d>8q3$k80cFxK3O%q(;+vG`ed#uetX%EfoRq4;p73!fHpRb6 z5ssbtF~WlJ5c@o!{=C3zuhhMcW*?}4nannOEcog-RZN3q&tGxXh#ghzS)rE~wb>0ha@SsSd`k}!@K?vUIyoc@qLpXJ?s zi?Gtu2{FeDgbc{O+pY*&oJ%Z9LSQPyxgXh~FV(>JO*?RsG$ME+9C6*x#0=;s91stT z&%X5kvt$GQchRtSOpxmuQ^GaEEdGpu2}mp})ZFIJ&Ok;F(We2E&qL;F<385#t(7{) z{gD|?JGuBn&ZkY++KEjz0E`pT@Y3@qY_V6qTuf#8t5anVYO?$WYLFvR}G1 zqiyB?q<46Gu~JmaR%Jf_ZwWX~AX^oerqdM~1;6~pw%mk-*glN4Uk=d*U(2~cZA#Hm zg8v<~XBU}1K`PRmEQ6`8L|vAT4S!>Q6zw638kVITeH?nDWCy`c7snv{Fc#+8cHUw2 z$%2cN!K!LQEf*lVevXTFAs`pZRTucvGy>RTC)Mqpr&*YvsgTliqr441SuJ)g5nKq_ zL9z6k8#$%g)Jc70bQiBrIK`s9Z1%6f3Z(rtc6|Gf&X6xy<#&UK@im;f#eKbMA=#jd z2Xr0gd;3NLOGuI;Q+s;SY_}#2V^dhMTgzpXKk{10b|v&q=A&KEUDydK01^GaDL&#z zCB-yrb;nG;3;DFaau|qnx`1sNs(7cji8Rh4W)Ah>q}+#q$1JqV$5?=jfIw`h1kSfB z>)!cZH;~G;wj!=~?SeNXYm7Dl5k^f+@vay>x059;CdaLm`l_kybyfWi_$Oay=MZc{ z3?ctYgm5}BjV>*WDRe8GR(a#eV9i9?n9AF18T#X*R7C6_xSry8`*-M+tRqz`dE4m& zL@VcqXPxe{=y8mB1VKqs{>%~bh%ApSlU?ZCuqT&~Jpc`3z$_=K0fHG4^c>nT)x@d# zc2sq8vTZAt%WniXLVcf~A&qD?%uE11QK+S4K&4$|9lA`Bpg2*~^L>TAa|=QxgvtAK z`vNj%3&3{*J=pEIqfO+v{q}hFg%B=e(8s#$-z|M}yZFBtR1Bz=n9lEczPd?^gZ6YH zir!0H@NETzt~&}F(MI?;LCYkgi51lRwA(AhuEbuh@N@l`(=duDnP}m){X@bRX+x-l-UdO+c^N%bY9#O%*+ZV6 z)YFI{K{u*s9c?{%rBu+rs##+Gn;r1WR{ftuD@;9QVq%Yz>c04}dzS_kG6(8P@g9&m zI4{J_wn+qCsK99gZfK+Bk3njc?T=N=yTgpJwXIF( z{4Pz#qQ(9G>MbGv@V{LA7q3mSYTWF%xvXk47+8KPu>FcS%>Fa@alZad4xq$mJ? zyT`%UTn0RM`!)L4BZaizH&L`5G>D4T;SsSKn1PKhjTC}>QUSXF^!gx#o9)~DnGv<$ zg{FR4&W$9CAS$Mzn`Zb<-Q;p{yF+)GZ! zIEM9l(NVEr7PDg@WLx1_pH|bg56BRraiasc?s=$pV<9d=+%vzG+57flZl|Ys2%VJqHu%wZUA~IG)a+AYM#8x2ZPme`U6e4ClC~`E_4_;q>V&}58UH?wjLo%SaO{sCHXJHKI6)CsSr(Y09DsBs# zBg`cY^&XTr47s;X%u}Xd&ii$xf<1dbvXh-Q3afO3Q zMJACvwgtL0%mdQmq}fxu9#!4}hc<#7t*2vRa(@HZ5lytZ@0=;&vzAe3&`=p2(Oexe zxf(be(D;{ef5dobBwcZ@Wq~|uk0+3DtNj!?BcpC~%dAJHh<>!*8gV27!)+Pgya$0t zVSZ4K{xZ(=>IOPrlxOh~X4IszHPJ@5wgC{?}#LJ&=H8Tt`k5}?vU$(teMhE1`x=ozvLGQQkCaJ9! z>ojA{lzuOHC1b!|bd!XkR}|;>H=P zMJ|01v8~m8PO7Qeu~0z!$F`y4{04ROPN`8xj{-R0&KWhpDjRBra#y|7~$`?7R_ z$5WG~&iQm8r&2)x2jphyEVG#Y2bArAhVeP==Wwms)X|LCT}x~quHk^d{lg{*II8aLt%zrh+-T2U7E^EmFt#EO%Flct6~~f?|hqYqB=F4Y339ofqN7oNXMI z5$lc7c|t_6%D6w+aBup;_QSkyu|>S|3o=prifZ@@p01ydc<}E(tcrbyK4oJ*vvo$& ztnSY?f8q?S(=X1ic14EsJ2bDLmvwr^>;~Blbw|pRKJ#1@K5h*y5C~X+!(c&fvG3@j z^c~g-@|poC$P#tN(>~Gaa!Nt!dfsX36Zm69L=95kG@Hq^onzH8w}PVzR#DX85H^37 zaTZvh7mR%asZlag!h9bu+o|^UGr61rndlCAU9~0_HqqwunlfRC}3GNmb10XK^!wKQk#bDw=QFK+`(1LWjk?gR@>A{CsLl;lG3&&=NIz-Cu5KJAiC?pYki zE&}Vr>AQYrq=p}JmzJvyJ#kbb>g{$!!REuc!LX6lNF2mBe-L96mHP(@+GmOoy$>&G zcJ!KNHJTd2b)*zDGZ-22l#^I*enMAXo@3`s{jM{6Es#Y=&xxbYNKP1=3_rqOvi3JF zQAjF+1G&gWN*tFlDA_I!WYC(LyJ358`cr_#S+!SC;tmVlAgWwOrthAUzX^0A$kwBx z-jjb2KX$1UqiCONeZ^JYmJACd;PPj$ura}MmNNO^BCD8Jsz8(Sqn_-H0&250-Kbz` zwk~`_Yu4aHsqwe=tl)+5fU*s7Rt)KafkShEIeGg?wI4V>Eh}oSuO+Y4f-t~vgOUPT zS|3gA@Z$|rv_*+dC5W5qI#Jqd;9tYJ7j2k_0d2Evvh+!79Xf6yQj^t!dmwK)b*=C1-|X^?C?*#^)l`7ELk&?&PUMUD~)>UWE$+O%qGEMFK0QTN$a zRdX*+)B?2vd5*z+jk5h+%7k2CF(o^f@T8!A#^AU^^JyQHI1%{J+1WR~OG8xQxyfVs zb%uYc@u?jOCqwXoxabr7&p|wz@hrX=Fu%=D3 zG*u2cE;23yZ^ynrjx1-;Fi2e34B-D@5I=Eg*Yk&fg!PeND+rUX=DN z+xf#vV<&Tm?KS2~l5{a*tuyJ+E)n%um|n7{$#Q#mfscP()tXVOhq9i^zd^2@$;jwe z|IWP?{Vb6}m2jvu!9c|X8y;QKXN80L&i#qw`2mRM?Z+A5R#FOV^yXAPhZbzqZ!x~Gb}6N46QUcMhQajfC+B!rD@Qs){#@r=^U zR3l?YjM8LzN}k@n7U>P8tV5uPj_E&Rn!S>em} zlNgZ`TqrVHUS#~AQF?~rz;b?J@}BA_m7LW0{h!XkCwsgru&%Ii_s=XwGi z^7giw)_D;WR&Y-3j6*=}DX!a8)y1XrSY29UfJHVxD5!rTyk37CTU!HQjrx<5Wu34r zoi1FnVS8VR*mO!dvyaLY-K$j~NH(45;b7^zi)OYX(7mGJ@o6@G#yDybg~BNka`=~) z%R)_qURvGDxAfdLO)8_QImRuDUftk^Nvm*qhO-SmuECzYHUTiGcNKt-%ie|#1!A{)l-!(jz~ z{hKmZ=}snU37;P=NdpudA=#|#y5!-xMWvX>brTkj zi8#JLm4vy($_$xfj#}60yUEFEK%WyPn4F5rvQR#Kh8!}UKy;?Dh~x+%jJKZGG6Zh9 zoDs@c*j@Drbn;;Hw1@+H@$f%r{RpD==;8dpQ+(e8qyo|L{YSimANS(Nk?|R=ci<8p z*P{=uBTY1MO&T-6w;Ob%Ip>zlK3wx0Gu(PdtUcin3C3aDfePF&ABgF|xxz zEt6vtip2l5ew{DGxm)q?Z*z;caG~UmA<5d>D^-eBR2n_v?m+N_DL@TfF>R7}rd}-Z zgb5xSpOvNdwjyJQq=_SP7xBq83$~lRCm81&nW_{HXgO+M;wKhK^A7*Zp(!bW+gk~J$0!?t3(7TRN zN%jy!_v(%~2*0FM8L3v_KhPllHW`w$IWmP+Fxp7K3?3KLFAORJ#Li&1dSKqG+j z&!i(V1`q9*u%kS6=?|k@;2&3s)eBSW1&`Ggu5&TF<0|v!ytWmg>JdBy@eb|5q|=Y2E43d{XBEDy4Ix_&!Z0`))Is5s^eQV1#qx#`-=v z$72H93Hx57C-VuAeh12I)+y@Zzx)FP80Y_9nZ01HL2aw9SNG1^6;y~jLSDJ7H?UMAjeiB%(Qq-z0=zd9c&^$M7<;)=Ew=loQi3xOx`>-8>pJ37QB%8k+XKvF@b z5I7XBnwGeETFx{x{1Ss*l81N<_*4kr8zd8>aw8d@%?9mEc|H-R9^inQfWRnA%&Xe) zw&cAk>m(SN9nAK5EycV&^RB);rY&f^sVcB7e%tU5Z`-06p4>QzzB8#GPzZmmvbWb!}5 zd#|yLv7ZwLTuYl^qLMSM#f(JlehGxqTB@JlrFdv1EK{dZp&hWBRz-P0F(}mS#&raT zoWY#E;S}&0{ZY4BzKaPQh8IL7fx0KKbt!mRrNRQl`FCcAl>+0e{`^cGYpz{PKFU^6 z$V&hBrH1#JuZ8k;n|$+GI79moCz2a~OPo&_+B!e^g=>uVTAAO4JkL4*k{?`JF~ z?P#_3sJHFu%wJv##&^8=4+E5;*<8Jc9<3wgHIR#yV;jOwW7f#J$Wt}LA}4ez-(1H0 zAv0_U4>5V)PJ@2ddP`gN1vvr|^HXpSp7KnTKIX|TI7n&iX z+7KkE@usI@sRfuS(#`(j!Pvu%iC!&fc6>orW5Q0L6rL(N|2DMAgOU_O*pIWo(X;mx zP^ktWqT?|Lj#Og9s0Q$iJU9SHK)Ap0hp}467z20W{shDW+IhfxW2nl}u+yLIY+-fm z&WLB^9z@oSJlV2cT7b*|L=Lt8k&s`aizbpFOEsv0ux7F7Yyal*hfJ=!=GzkxY=gbG z{4arD$=*PsCBs{TCP#)-o9svnWInzM=var(asc;dm_qO&pzBxd68qGDi1)9CS*GNb zuvOB$*Zl3HgPh^hnph+@1kIC$h$?C|_myRQpIq}t2tdKHjtADM?aUkF7s(!LcSQib z!70hwVf}*Fhg;y>i@=p0O!68n#;%=(kw{LAALQ|pm)k3+)yQe;nRtm4ZPP zT9y$~x)Y3V0%Dm~+)|9}3>=$D_;D~w!~c!Dkot9AREoLI#4v`M8LD&NNtzx}Xh=X>}l1^dgfqUu^ttm`7q;tu$m8AkP1mac72fbm5L!j*tGhk4O3$uR^?5COa#_VxF ztj}wSj=Yv;IaK?{8ip+^s>aHw{T`8AWjJ?;hVV*kk_(($>G|6epPj>@ml?~`MFq$^ zW+AJ4=6BW|m!AYd3bl#4Px{)o`@C|upHw`GaeyXhc?tIL<@s|TUV%5~Y}9&Kh0nMK zO>ip(?!+1iJ<=tA-t9}#d2)e9Gp0HmxU+S_@NBC08Rgah*6Iu@7B@v_E>pB$)8ONh zS^y;PU!$#UQ9)9)2qi-3X^W%;`-8jkA{8ZTFP)&it?ZY%a{WxX1wYM_nQ3lidZKK7voEGElOVvaR{0&YBGy(=p!IlUGqe-aC5PTm$72ZO6>l6TSFARd{h}@gG|!(aNQ%bMo9%Y2~tlPM3ZCO(FJV6BQfr@oMPkpU&I)X>b{1=@=Q(gj_!JE z*!Z7YD44Jly9j({igHcrs_DOAFk3HMC&xvy%wKoOtoZi7iR6)g ztpDfP)@s;HeC4GiVGE_ zb6!!f@aI29C^n@6ts@Ckf0cLDd(`~PX2Q}C3uO^o`9Xc-K-!uFQ7sk#VY2oZ@d6@p zfIAjX#(q$V36H!7(a7z^G zz!pYACWUoSgWI3=7FpSd%n_vR4R6|Mq|l=_?E9J1TiKH#5o#UTrRphujUR2Z%|!w3 zA_{EgL<%m6GE7<)c34UCO>*DxrRO&F!64V3+ImYraPIT3RD$7FUi; z7G=oKkRatzF8z@mSb6*KC=#r>yj&v z>%LwHssw4x+!b+Nuk1jr>pIi&Ag5`xPBX#PH|S`tt8=~jFSaHWm$`2Ng~=QeK~Svf zBzKhU^}{O?Y$?HTg2En!P$hsaCex#{R%s2uPtDNYlIseqa9(_uEP)=N{k|6kYmEm5 zNY<{Zo6s3z%udvQW=o@!ZOD}s=ZvFRrL-GRx_btkcygZSL7he#)7tQf_2L)zPAcNq zdPp|IG-DS>cyy_3F-H{JcJ*j``7dXbHmBpo=wM5I@%T7$1A?8@g(SV`CvCFnMKTA^VK!FjG1!QwbwS1RSk14q{pSZ|BlQ3LWvhm&1#LN5i zC?Jbwfl6cF;S};&_^k8U|7i*zzk_7-;!SpL4DTB=u5Do*7Z>s#xp7-cvphm|+hD&g7(RQ_ zs&LH#sOf6H&HFb}`o zaKM6)+JrXph0Y=O;mESO3NIF8II%HK?Ql?WxX*uB*SLxEM}rY!G#C%1Llw?@T1^3& zQ3FNhY8nQr+<}zfWp8H-;b)5q zcG)@5Qp3r+uMg$1lf^imV0ai~8x|4RxFPaq5$6vzm0Sj*d&NrC7J`LS-#nn!lN4M`6 zv)d9qLXZEm{k=%K4hj8q)i-$$jM%oW#9au?T3@tu7RtbCV|5oe} zPB;doJ}MH9=`3plvY3O5l)s)mhvM8nCEakFqRt*SeC9Ylygrvqb8s8BniC)_1-?2( z8y}ndU7Bb(2o8v~4E)h!OVLYBici(X;;o?kX51b$#FA$LhP(eoE%5wo{=pZqie?6G zc+&Y)dUEA7g_?Fd7EABXz)b1l8ULzKci1(r-W8BR7g<(*@ynjjyJEhS@#1q4XI`g#Zn6aQrJ@ z*VbL=E}W}hB0eCT2-K?jrELeC$njraZU{e)Xqun=Hf?%Ui>ksD)HWCWEK}Z{`KiUM z#CoY&F!S-%<|*IBaC@q-feYoZhR@h#4d{Kt(*CHXa0cWzOLa8-kf(E`^T|fnNV-Wn zT^PtoD=jrklJ20l)g7n96IoGuWQ2~^cz`*y(V^xpXWCKI&TD(K@c-p3;_CIIjhDEA z+RmyCv~P_5tVeIJ4o{uFg;z>6tRh4`74)MxjaJFqWdGLb=rqCmGg6!W4Vi6|nMUkY zk2~zw-gMY8m`vl*OC?D9_s?={zvNB%n2eFM{k~d7Pl>b%|x z$eP7**3&P^4wi^{e|*SZ6h%%c2wt$0%=Jt+c$(Jy*g3%~s!-;ln*qmwVDc?kF*ch5 zibnx`yohMlSmSe*>JifZWAO zq=av0rC8HP>8E=8Bb-3~9ryZhb&pHhsO^iV)l=T{SV&;t59%Sj|D|z$BS^VV9()%X z$+B+G%TvbuuVFV1hv&ELdRmGTqx#Jo`+#+oqTL!Wbr||dG+}c{RMr&7lX%OH#~&G3ajIS1tpHFl(S=+KM+?iB`ko~+qS##L-D?3!EmkzWh>S9Z{`9G z-5MOQR4XIUTI4YozPMj|zolHT*(vc72nFinIn|MUY||lx5}azP4x*_-qR4@P35;W- zx^3mO@80RngKJJ;(ayPC>&6xr;uVEtA8TP7E+B7IWApyThQ?n&fLZfg>o&5qu)P6( zSMMcM`LEB<2-b5g6;WfV$0g*DEUuf3ExgF}X<=Q8%Zl&Ig02|W-p>B1^C@65A3P&h z#$0}lqQ>ChYK*D!bvG?TS%JIVwO!e*4{%TH7;`ksc!ymXjXma>5DnK0B~C*SQXC0p zQct~DAum0|7<%#T`5*&1u=Itc#7E|pftWa^qN#H9VA_}0A{+Vaw49iWzaOQjoR@SQ zyK0ua6LY(L(qzXCDrqDFNPY;~mwfGdo-xC-)QC>aUZ268P?5kt3z~fi4tO|Wrp@rF zW4~U78piG2Y0)cv7Ejy$TmnF$_v34AlLa_OMDI3$&p;k2DI9A-T9bFxlP0enKF*(h z6;p)Tqh9)2_g6u~%PvPQVaQ(UTj4Jf$U8ubkCYdJYy;v=Hqwcq)px`m=F8Q-EpR0Ih55`W zPjmq^$u)y%R?}ZPjr%1&)r!R{O}sf!5K`P)to>IrS>ThGZ{-L}Ue1>+v+>nU&gJ-P zp_k5IsgtV#YyyJ_a)iGZytfj4gZy4$v3q2%s57gmjcEtcEfh*S4g=B1Tk4@Kj!_uh zaKqgkfi|l6|FBxd=QKN^Js@DKi$3K>r@iJ4ysqRgXqX`T_MSzY^w65#0QIGxh^Gci zG-BFoAHm+%+bBBV3DP#d)#%?vF#NX@r`_k`C=z>9eE!$NdxfU(bPBsNDO~X%k`(hf zB~*YGamm~gt&HUWE)E*-HiI)Q^<4_~ns{;s6kTZcW!C^6o^H)tK{){fh8f=%S^cTc z-{`$39>0Yb(EYkFsn$Wp#kf6Fr>aACjAPF&e@YB^kIElifK9>;<_|JNsacPX~aJN1yJPJ4L zzQcH$rSFC(Q-c17QSj<9IcMXUl~oo85yCqE3Dp>=yrfF^okG8ROc)_YX!YAjNcZVB zFjbJ*sNJVzB@B%bQsN6dGdM+>sl!Bv6(l`{TdT%!(s`BVUy8tLAZy9F+sFg0yD*wYZ z{D)UIPHV8ZvIO0hC)c3T4y#wcuIDcozBk0ojqAq_yW|C|_IhlaWpbgo__OhPS;X15 zzOdaZAHMTtV1{69h+xv3%!y#I?c3ogk!Q$$e> zsaem{=x~Od38+EcRHVSsHs}&oZ=Ncguo+9kJUJ3oDmQT!Ta)dA05%rh{&0da>oT#5 zRIiXiG3p}k3uu0a7ekM_37W1lJZ#*<3$=8TW22`M!y_~!X{=TN0Shd!iSJkma~kpz z#>g7MAgk36P$34`T^UXq0t?Dm0>@g)w31UqnfWTE@AOJ(W8t3TL~nOP5e9Y*v}*3 zl+-iq2yymYn1TslF~(7tXu3;J9}~~r;w=exx-!5;wX2qS50%mCPMf|i(}1%#ah%0K zj24uI1oUj{246-lhrDq&UlWTz_3p1zY>rWBlppzMxp8O^nizJCFAk*fS%&yT?q5|# z?00+dPFrGC*qK?7`3Y-ozP|$F1~iiHEBfj42R0 zBb}Mi+n1N!8)ZEt-9gtkpm86S40hE(4AlYT2R=XK?i9y9@kNz+JmOgXs5&}~Vx7?~ z$2Yx$%qSz+Ds_CruG*z!CH_@D0D_+WD}CG@h~v8{vCB;C9>5@C)DBCC7g3;{i?PXm zS-Yy`AKwhMZBtdT8YeUkbtTsAB=oV4EGNJ$r|Y%Qt+3lL;DiqOo7nNt9@6*#HVArg zAOVp`4_cf1%NVIT22F)rt%3Fu2`WN~TV!={=R0!Gw1wnnOJ`Hhx*uJAF!31{Im}ov zD#$RjIjv*3c_9GmmkFK99`=yu6hwR*1~HnQQNmiYC|KbreIK64uOB>?)AO5Zqo zrpbFh$p`DO8FG9Co=^%oJF7?(gVkA|+>rO{ZA6)8%ph4$>LWCE=~i{&=Kg3~u6Of_ zOEA!%>^$aiTxhD273w%;w6PQmBacnu4>0`odFh6c;P$sxuIS_g^sS3x)H!n$GWeg4 z@^Qpukja`BgG7y>H+!A{?08jT80YQuJ$uKi`8Pa2@1vh!5pU34^8p7!())oWs}B~* zd3LZEfV4`Hrk;g$V{D&~Q_b_@C8QT6fm#9$&J$YFXQsDU=js#XoBkxnBo@5R?67Fg zUCiAi^S5-`<0o+*xiCQ+>UWMz_0#7 zp5qxqYk^whU24&?9|c?-5dO;?wZ*s&%8kD2Bb8bJ#Jk=Y?G^+=n@KGsN)zm`1q`Z-$)g!ATu5 zY8Y_BN*t^Xf~vh>>8|Z!T4k~&}amx0WIY8K;Aqqrewa;rA zTc~a}@>%%M3*c`N7o|s%&obc@2+sG0ZK&BpYiqhWP8AIWEVZ$3FZL3Ax;IPIxAMj-G zakBYNkpqWim659l3lk4$PW#;KzUF6TX}(+Me3j=y+4W?h84i)=>ELXT<)4lLtA}F0 zCL$n-jx(B5qtl8iu8;Hv6;9Musouq}8Doekb@MR5kct~}C)9fPip#x0-7k#0I?EQ85T1H=IWSiLDpWwX-8A%)saCG;jiJyCQ5;@ZLAhYp zZl8nknNgt8^+0$uG?Z3>XNNw^M*Cxxrw}+M&pp`M>GwlafJ`e}Ln@mMvSy4~(*{QN zWod{4NBf&@!Cn-T>HbrCUqq6KeG89Xefr%DeI%!P`9Ie~uC-hYnSH(JPQ zfHJ8khkgoZG-6}*$uq=!(^7J9c+)4+x~&dlsJURP=dx6*J)OLWr12AuP=6S+0VfPD zw6%qaK`VAtxU>dnd?Z>AmeS~j@oO2`o#G*OMdRp39?;u%-gG*6 z5GU&E09B|bKxw(sJ<(gAaV={_jC|<{QWgYsbeXoq!ei0!Lxo~rl!=IpGJQ8J5r*R? zNf689)q_sip z!UO2qC7d!H`i_S!%Mw%A(iOlO?o$SD!HE5sIUskh(VOkK_!s6BRAV3b7`c!;(o_X$6sJ8XYZboUvI_ZwEBxQi}YPa_T)oW~DwR|KG|VsqG0FOc60MURn=)l%2CURpLlarT zvN{0RLX$*ivL_4J$JSJub{Zq(Ju(CFqRmhxQ$N(O(e9V39i28iJf)?S#{C(W>Md5; zs;?$KvrL0%V&JOh0~?fKhcm)fPDcqA7W9fUYwEnAL5PSdUa3JgT8qQ%zxRv>pJp)H z!XuG^-t83g<@~%~aT7Yf0n(S}ArRCeFWyH_3(TX{P z8c&=@mc|({JA%Mf52Ohoz~Z=byy$-gVI4lgmq5O0f{L?ab<{?d(Vsx~64P_0+48d* zdUBcink?N~CB#>IxO6Am4+?>-*~nF%Aaly}_z4_TCxBnZ+N#$K4hEy-y>xJtMap+A z(rrr4qMk7O!OVKR@_LoLQoA~6RD-p^kob`0hF#5zN=aopW6;Z2_Ms4GBUS{K)M(m1u?%5Evz%Qj?0Q zs^Xq*0k&|6R%c*A(bz{o(oJLq?sIrue3Kinwy}$k-y5`J8Qa7ev{=3_9}YMancV2W^7mYmds zohE0PDyaxRGdYuvEgm2~9(v_r;;knN>_`mLU2_h9_4|S)stCjTd24^nv{yhLH@0<_ z*N_D%Z9T7+v5SNbZ{RS@dS!8jPrxoIb~@Q*lCO|^EfXQv);2hX|G>UMn@6i$>Qpq< ze-t976}Je*2oEV)$dVVkL2l@ToD473)A>h?(_H7gpoO-@ zO^Lx!q{!HF%uSa3rTuLZZj7||%kc~(CP$i(`Hv4wOBP8JYfBr?HL5kP_Rn+PFYeNn z(&Z|R*S_U20pLl7UmwCIMiJ6weZG4`ZI0=0#Th96@)rmEQq>V*Cl+*t@n=poU#l?O5ko+M4P`(NKo>1MDxYxr}>VSJs;+pV@q3{!BgyO?t zW?U?3EG*BFe$ivHd-de(JVbX%RR&WVZazx)Y*%ViFX-V6W)XvmOz|lQ@~jk&3A}N5 ztg+nB@&Ubn5+{Im-0XfqDj!+*dr{}9MaB-#B&_ZG&iI2d!_#@i7|uCWd|5J*R;6N3 z9M0d420c?O?$^xfw(v!Zskx>1&>tLAe&|oOCR6ThJgAZkj zb2{=_Z^7DS&X4#Ol`fK{sg5So(PNcel9ifNIYH9xF0e9_j9B$Yejp=N%9KiW#Hjgq ztM~&dH|~@M0CU`!B)SCI57D~2hdWtAgmlk-%}1(%fFcS3H?uf~I9~z3JW8Q0{+<<* z=)kbE1liY)XE0|h2uZ=>5=Y(KqdETQ!tayG{OkezLlC<|9VV~#w5<8^_hJQ(YF$JE zaF>C#;?lta?U>5~`cRsS@x}$ZyRj(l5VZe#+BtD<0ZP_hxC)DB@JM%uIN)(Bdt=2A zzl(tC8T_1%!cO*qf2EImt?zMH>ZPL}wqpLB(N7aUY9)+HN0>`y^5*yY;J;zrlT3zs znUt5Onqp@)I>*36@fQnNXyO$VB0YkyItPJt!z;BsRuN}EB4Kqbp)31{8B5B6W|Zc$ zDampS0T5&X)vWm<@vgobyp&0gbf;my@!RIS0$4GiOup(p*kf@}7@cHN>ZW8H&vrAM zky$K!5bY(USEXL7S;4Qque@w=OXx8D#5BQ-K&iMxKL+|^pa7M)?GWH2akA%gP8%`QJt?@Jkl?veSKgD46P_EMlU=E4fycqa^7Gm5Z@jbiPj`GA zeIQd0V3$#zjf3Cu(DNLDik2l25y8m=6&3;Fg)JBq=+;)3|t<=o=o4U zaWP8ZxWYTU{dOGkyMbx##LC@~=aWe=cSTndq)>V}n*2l_Sq;{a0?ragP>?12QhnFb zBPx^n>Yan9oi2046rZ`uH)ppF^eIyA4a|&>-DAbqkN? zQDU_<&a^n(1OLG`Gcq8&>4Z515r|rK*`sIRJLx+aT;8?lA5Iq3;0P-xgK#z4YF$l9 ze}(8j6cCS%J970457iNHk(w|8#QqKk|Fa138v=!1iXXO*ls`P`^fi2%IRTDZWi{HjmwGkPKK&r!lWbL9Hk)xGM{#l#R zXIt;JxM{P)A4B^FC#B5%s8>}6QC^WjQk^&C=_V)I&trsQmgyYa47ai}FvHEN4Zm7qPX;nO=niqbgMB~KfErF_c$z>Cm4DD3j0>dOsv zz;UD&%)ul(%}oiFyFJ^}}&g&X20b0XW49TRV7m#LWOL zMtON0vP=>G;$`;motUL;@%?9ThXo?6TV@@-dVw; z{9`7qopWp{LuL5wHF;Dgpih8yE(D-YG2P85+ya$XS_nDvA*iaK;ZmDg8X4yS%_ot2 z)Fym>4a-?7MT0hBfU1Sjur)yDS+pVrYV4?lRI~dMkGJgN45FE$CfooOYSb=+bh71} zj+C`@E*b#ZhA#j?nkpi#3UHBGl6W~}IshXb;!V%OBVfeKf^nwfUU4T?QPl_E&+R%W%;@WG}W&#n)Ba3bm#%bl3ek34p2PeAE5cW zkQ4YAbqem(eo?5tCI5gaLNirrJ8uvp2O61<-GY=htyzd=3U|S?O63lav=z)9?$yBe z=&L9V3+=O)#UA9)tJ!wk$VxLo1g+A#A$P2*-^DsRKm*oI$<9R{@Mv7@6;KSDW!N+( zEg`>=`+C;pr4e{KRa*>9koc$+RZ(zKgQ4cZ)GG`S$=93ky42~m=LbWHR4WR^GH}zC zct>zWOp4I9kdEfg2edId`nhZJ- zNih8^C6626`bEOK;i)Qkmlqwbfn%Xe6Rwo6RjjZi8l)mk!&9e9`LIclzXhOgLCFdz zIxqFf9+LP^uC|gG%+k0TX=LF4{Zr`FgWs051yX3z`p1a=LcBZn8`}45CD33*WZY2P zFqfQY`q!ZG#jJMc7i?d__h858(pn*@xdkzfO^AXf{HpK8+Rqoz+{;O049huuyo7s5 z11=yNPiAIAU~v^#D=2|aSC1Oi3Swydt2mHm%2*&Cq^;l0WIEtAl`(f0zN}e! zntr3~&9ee%Er*Q?i5I^lG94E=n72ajLGzM{U4r-xD_=OOewuh`7$(zB5N_p80bX>5 zo5;$0_3EW!d1**1MR=i|yb?UantWPJpi|WT97GfQx{Vb#V6Yi9ly5r}TW6+0XtrxA zX}kfUvW$$9vk81pQjTat0U%w2H#TiNovt@m^GBm zGE-NxAK}f8!U)AIioq3I^(LEh2-ucZ`)4c^jtLfizNE;b!>PyVTl^tOSXlN^v?_%( z2W=QzU&BXbi5StK0vVD;yM5XeEnG2hXne2QcPw=;>XgV&B1f*B#gn>WC_QvvQO<3)?7d%P-A=G?AhrB} zxczgboKf6)eJc;?0Je()4LI1pw$@h{Xz~qTx$u}{6zhqGUV{_I!%hWE@nso)1n`nq z8b5x*UF>B^WU6Q)oa=Oc^^nn|Py)4SXv&qbs^ZxyS$J4HbYVGvDy-9N{~el9%AxNE zyUTa?2LGFWQ)s5ySdMBqYLj5`Jp_%bwA?f@FeNVOHHb$GouNI1VWV8043^^rnbmsY zw2eSrgLW$R%IfqQj1(TX;kE`uN;`{JuR(UFCe2F#)pWx?Rc-yw@Wglp3YrBlc75be zNz_yW4FzoXCy3BYEvvxkUWoL|6I0OFP zAn8(%-uq}RZ3-%Al}7-FSxu}W4_&kfWpez&`J5sx*w?GvViv0d5g5Jl7@P`->%*dy zK6VIo^Wrt0gK15_xA5Q6QV$5Su`%z!qNU*YP=jhf>?3X8ja9-q(VKfP^WbHu5H;IG zhQOA_!~P1A3ZPWUX^&3{*nzW_b90g`4EGcFwUDq9pJQ3n@-^ii`%xbT(*r9>uwmzK zwR|H8sRa`&`ts;>KEITVPq^%ZpM)@mq;`2*ORi3C#zM}Kt}PzPOZL^WI<6mmDL~#32i29MvE;&?5d_j)hSZi7WYp$c3GxS7<3AZ+iGK)w?jeo==ne0a%Da3 zlVF%U<)r(IBZfA6gu{Ur(6bNwmWgE2azyQ(T%cNxyhis0NH5Yat68DIHVMmoDN zkofkG?$9N}AVRn_02FbhXI)8tIQL@vN@gMYsGRTVuOpcYaQkuy%3#yrH{a@1}Qvp?G_Cebg^3XweGAyCe1k?kAC;g3MxH zPZytEH&t_7MaOW(Tf&wPoqya|ao`=P6oGh-nf?y;1#D``L{2DI#a3jiYM>!M)*428 zsWU|t5V22fRkr!`U|pK2P1Jy;e)FoE@$|mmBz1RVs`xhSf#;@Quv5_x&gFaXc2JnY z1IB#J@;B*MX~IOje*j)m*|7Xt)YwLsa;`sG0EV#qP*j((n%t1LeKJh6QW3SeM3MS2 zSMg29z*B6mhIWGX>^3ye5lr40Nwmmn@{i*p=pm0iA1icGaqe=wAh zmUbL;IxhY!DLzi7)-x3_axEq-46hHjTxjuwpR7X5%(lF$A-A77wR3UlOS$otaqU%L zCt7ZY&kTn&1L4>jAyT&ogJUndE+o!Oz-<`y<@!(|H$X0{b!Yo74R9Z`Y7Z#?95*%Y zD6;%us{HaV!CoqvXst>6Z^DIkgu-4nAJ8P|bi473HpQUHA)muQR!PxoNk<~N7-aRw z-F%tp7tqInH5-Tg3(71zLCMy+1=)8B)5=lhYa{AT2F;${#l%?W0ftIAkIjpr5Bv*) z$Rr5hOMT$8#QnoyD=(ZuGvBDH?&R(Oe;T~^x(tm6wjgiBz$|SeO6M%Ommy_iOTP}D{o|z6b^g3p5Ko3GLD(YDH=TzZG{Ay+V%6Ik1+naDUtWSI| z{IJRZ9~y>zm(||3GEr6x>KubW@eR|D-V~X&Yn06JJNCEB>ag(K#UeuU-4{enF-MnN2=hb1F zqE@)*wa8`F(Kp=Ar~DA6eP+u;o0u0%i??7+M1U`Ly*&&8Admg)S#6r7Za7coWbO>R zE{$ZzS6|EhPlU>Y)o@pQ&0X+7)#t@mW;g*VK?~`Q>K~(>$TC+24{D$v0p1D|uV5jx%Kio5)H8nsB=!Dh@u)P{B-+EKG1*FdZ_CEy7P_itQ zB%PU)`b{fEJQ0$N`FtchZ6RAzK?c7rV3RhgCOH)ib{bWgAq_yN?(SOUc*!9ekw)vi zzW>*b6oKZL1Jy$hQmLOP6HVCYWfk)dqg3RX6wIjjvqVd(5*8zw?D|?k*+wYhgWtW` zn@#P5jFpK9fs+l;jI1j!@xe0ew~kAnq3PWcG$s$ciqS45w#Ce)s_`n(Zj3kjv3Ecc zbQ%4isg6c`y_=8jGafNiP?vFM^rTVHb*+mZ>=Y>PTc9wIe-jPg*5-z%y7KWL4S;_u z?1ZZN(7YhG&Z*)#0Y9~c;%Fg}NLkux+mfS5?;T~0J=hI5 zB9REP7?sL#Jh-R3NocK#VD+tF1Sp_(dv>$6exr-;b-Bo7ryu{)=Rs^HZXm5SwtD|q zyFRx7ZzP0-9E2>iB3P={Fi7M;b7+0EvbERc-`;a194~Z7oX-0PU?2h#e13V{sZ#IV{wCA!%k+ds#x6Acmv( zFX3P`4J7DUqB5pS*%;>+g7j-%Fo9{C5m>4im$Q|L$LRbn!{)LPlN4=-(@xD70GBAj zc2*KCxFPmR#|HLwCMKX3U@N}DWNVDgk1J!9i%F>qtMU!DvF&nK`feYq`{XC<)%|ZM zeimHsj49lDmRa{svp9ZklNXYQm-(aM0y9ipfHf#CMa(z=dy^9a{&Od5WK`Pzn$0e{ zS32#95+P%fR=5c}0Gb{OQ*$+#wr+h%r}16#kpl zltJ6J{DxxenkE-|BkPhA|J=V={KoAR(UWE9Mg83#pN|9YVmKN~(AAG03QWX5$4N9> ztlHBS?UKuW`lgA>`e-Z0v)u?gW3HaF(b3@*zPZ4B5?IzWNE_New&u@$l{{z6T*m&Da_9vXcn+*&Ve6xUatc+?|6=9+&|whbr;?%Ziey zpYYOo1yLk?>}^(5HxG}WJG84)UEsEZn-KN%oTeie(uEkmncA`Ks}*uMEHqVk_Nvo^ zimUW7@6Zwt44hC+I2wyvX6uvRS@UY_msQ@%HHdboU%?gP^s%dLrxnidwRDf`ppo3D z7MduxM0lA}Qo5H!ofzn~h6~v-H z^7>COz=YGMS1%UFI@*`dW2Vayk8Ahv^1rgEMzds|6;tUxjEtV0A|d$aETx&ORflQlygUkdP?dfOuza&%8??G)9_ zqC5Qc5?-U?3{FYuOkSpECgpkGzw?74Z{r@{NAh0B7ussFF{lHN_0sDj+Kh}n2uYXF z=htbQ`u)5c61^{W+m4BXNUOjiuz?#bt8}w0=v)AL8X)KWzmq2l;W6~+x~+Zvaad?k zKB5fg9{MP03YrG927J zl<1y99;Fri?0KFhd`;qUP$&1DGmlbj>1#71H%pQBGXdtO28Qa7&8=~$I8031cvAZ6 zR40lPKZhn%VMI-{>_b2}9>6>B`3F>GIXm(ywVwn!V9zwub9$SPX>t@0#hE7;aw2koy=oDr=#lbR6!sIRR&>!g*>+LUI-f)Lp z{Vy+uyhKe2QnlkO^WNmurm-Ey?@LkGR#lq=Ffu%mhREU_)Kb^5r}N?93SEv zBCANU)YRf&OHdD*g-oleCmLSG#W`SqwZmjt zyQ({fTmY3Rt5nd8FnR~HHQV>f>aRiVv4ZlZwBPMt^|~V8NE2v%RP^DF!p0h?O@yH4J=TV$#fml(5YHwrpK--bgJ`PQB%1}mG)os@RaxLK_hp=HD z`IDRSf4fzi(;XusA|wn!-y(c*C49)}PmrXaFP*S&?cN7_vJdhWLtud#^rB& zrh!sIk(SOvjUH_pOdQF#+S|WST%cuV8oB59~udHsUaCV@#H3wvBi(&D6kXW8rKao-HV_WtaD{9w;G1Gi#KI-BihToqw zd1O3w;Jk<0gMRy-4QF2phC=~9`}emTG zxs%Esw7jdx`=a>ak{@?ok3xE6GwPRowZ(|$^5@OGlKE zve2P4op0iQ^!U}HHmG|g*AEz)W%c|HCK-{5R5l;eV&)eK)@a+w(MN@JqbR9REVI?v zEd2gwibJiM3^Z)sFZ3(=<@l=`n(e&fJ5xBfaec&E1%gkF{oqN^;jSQPg_km0l)ddbk^zxRCIPBjk|^L)xN<0puUdEZF2#s`=2iD&o< zf#P7FO3xKNTR#A8p!>@&r_5u*7SrrU3BKx^{5b@K^o-{AB^2<27UPgtg1FbxsEwD! zV=ekLYD|zy*;+w8o9b`sl-dsXTvX~p8!`k>uWQsS%G-C?4Dj;o9H$Np40F1*Q8)R` ziOKTC5H8Yv|IptZ3H^zj)~OkNllGrSE}LZ~oX}@@*Vp6@Gvs+)*ZJf%BB;qMDW93F zaa8GnEBI~1lq28&;v#?Idy1&CWu(D4t3UD)yUzXKZRqek+utW7?k?juG3EDNWSMCR zK_qMzqaDU2s#Fd5TTe<*f*$Yw=2g-9e#yNWh$_%^DiUN)0Bl}9q>>39Ei54~XTe!i zCP-Fq%K1NmQgmZhlsm_VZ16Vj)Wi!2?VQP5JUcLy}DX^Kj&ZDSZ_U+?U4GPFyS+p?rGEsQUo7V>)%68d=U(#feB3dw~XbXRod z*V$5vILLmAZe=mg2)>S8x_2NG&2GCN3I%RWNlXs2h*TyKxGY|+#u37s^sT~no(&PM z+@?&r#+Kn%iMaK*`X{x2N&Lx~YR;ox|KpdJCoiGmm@c(~8ndT(u71oVc`E2k{)_Q= zZ$;AK+v#EUsJi23l#49pR&q0tg&@chHLqYq{K+E0^XEXXXx@v$Mu?4uC5!+(K*PT; z={Z%Agt2@JHGQH-;ag_*An>Juf8)Aqn=ENVI>)s`6j-g#&v}sLY(PvU3f_mvfn61${^chAl4>LC2H;fU8l zm#K`hfwbMtk6Dc*3Lhyox9_P_6m-s!vXj6Xt2~=&iIFC$pKFbAt%-oMdk8I=AI0?v znxqpYNn#^A^~eXQkhmK|Tc(Deu=>RJ=a`Ao<7tfL>tY;dEj8*K;=AM4a4I9y@U!RY zoSbYjXjN-Ah5V)+&gi^VAGmt#P~EXR?o_OW9h2l=N{Y0XhX2BOCO!lhQ(+2|I|3sm zwX@Fgsx@D_O;X20QP&YCoQhh3>k89g^ks$BnuC|W>hhZ~qu%R_>4a}m=yAf%Mo3o_ zhousvvk8D{LkGBs7&qFvl=37n-NQ*gTuF)W_I@NCQE$e;yp-f<(<^rLX0kj)%Ke%@ zir~>-CEi{eaE{QlJ%mMu1)y(c*VJkiPwmD^Gbw@F6B z{LhPwIKYPGI&KBIm^*ZTz-fU@0}!w0rqw7X5~Iv{umeGz-Lc|lfJpLQv|Y`FuF;Bm zyjEstN-Q_gB!U^jP;mewq9|u}Gj#soc*arAxn_iP!?UMsr&9IO4Wxn7TA$93GHn~< zyX0;xW-SzzJT1B&9M3V?QaF26wH*wLA^4&4%(`8AKJCRen39p8C~Qcuv=Ug&$k294Gl12;G5cGt7%tIjGXeO>knci|5 z!(ik5`8f&M3dOnJ7b11x+6#M_Lr2QBlHni3;T0<9*%@)Wow(d6@^BMze9SbUG$)`( ze)d~&4z|?n6{rU_#BGF&swmqt`-nECGj@KG42VI@lZr_z4LrYV+|0NVVT}Q;%SjsZ zCdGnE4rRHFc&tRM*uTPnTZ#WAZ!!UxaAlID$6tF1nU5mr_f?nwh-DtB*e5L@$ z7aJ?Yyb(Z^1n{crlh0eH_u*Nk!-V4j3uKA-phIXLAiV?zQ>l_hZLGO{aNZ*x{k0`{ z&R;?e#VSYP*f)wqcd%={-y<&)euxmnP~Hm@<|n|lnm8(GOe6L`4d_Sk zfo<{zdyH4fk=W_yVymeBhoLjB^IDj*JCO53?@XB+g#>$<-q+GV2xoc0s?FuRLMKR~|jS4^tHo~;XHygJPjY*6xti_)V0;kMLw`Cs{0r-Lkj z`O^D9!>b4!Ei6Y*U}#Kyz>EG|3)bbRypYr0RN%W zV>)-KC^z33y;}mR_6c!^Un19#$hYOPo)0Jh4d2xNyUukA|Z!U@f!8BJ}g(|=`P{*RAqo1O0lil;+TyGDhq7Pi4hn!Sny z^7Q_iOBKdJ7fp7(Vs{)uk>dLD(}tzM>YEuE8I?e?;5%}`)8NZ6pB(BGANq31I<1hcTm7&1gi?@ez%|M)&&k(Xq(8 zmVw+iPCMYy|0ly3k{=@sg=iaUmi&Waq34Vqy6^WfkOWXud3jP6I$V^7UTu7(W;ZtL za5uEqD|lGiXJosJ5n$n5!QMu6>ppx<8BRTzJ&yHN0cs{c|6d)uO9|wdw}qT*yv|EUN!HPklV7iR){kds#fjBN40!7@DXiYqGqD$`)>=G zpq)eV%36vUZ-UFE2uA{donwmJhnI*6x_iSMa7%`j=IRavRJ+JRi(&IzN$tMQ%r-Rv zc9WISP&~E>yPF98j<0V&G1JHt;C{#YH@h zdN-WFt@#^)2E2r=!(T<7$CUG%T)9S}e!}kusY4u?X8?C>;b1!0P z{3A&RLfkPx929p`gN!JF9lgv#QNoKdjb>QexbYCgq_6cg-YZ;<$%EW;mv&@_rg2mX zrp}&dzh66Ey{PKGxTlj#%V+jY=VMqG9l4k=>^e`$Pj0LKztSqR&0dW)V`nY{@BK(a z=YzSrOlW&7JS{ziQvwMCOf?FNr-6Mjozg6n%iD)p#QYVO%UVmS>I7Ie&ohSbRTOaz z2sMZVdwH#5z`9KJNc0E-6gN|EQ1{9S^5hxZ&Y#1F(Rr<#f=3D~0FgrIjcrutC^E$~ zDg4RJ-b8+;4ye8YBy@$3*ZJJ_;bd!-6VJZ4ikKW*88s);EWHk$?YNnMh#yeJ|7z7j_Z#B)xCSod`uFhoqKI}B@BOilI6kiMR+WrhZ9 zzz9dIE*N1Fo<5Hc8f`>JVIO_iM++98DX-C{UhF{wzZ`05*4~(Qd;aW`v7oDq%WqeH z_uz~{8Wlmz{uu((30q>Ay5GcsGB zMrQy8ykP_ z)mxfjvvxx)sZAs9)A^6QrU=4bwHy~9GXcm}A`PVN?UXm2y1Dan<#wGe@nWH` zCTGI7QQ98^c;v{cf8Xa~Ziyg@J<~Wk;oMCEwHt0{S}J{|)+aPbsh)4vCCFj37_mQp z#7`rX^qnAv+e2IV5e{qTLJ^ zVUA^(uLXI$?+EQr+(sQQauH8s`}jDKg6C zh&?U-Re>8_x#|cIDt@g5GcoUefy8X#*6cN(hoNg=B+MzbY&*WMaeGOsEfY6S+F^&I}<>|5Lk zJ_ZBL>MY&EqpknR@0^e50z5+a&d@ZL)s0po{4|jWD=@$?$q=-Cg|i(q)<^Zn(t`rB z7*>9FTYo+@{i%OBDhl+`V;^U#PBPxndbbZT!K>`RnJ9*^j;AEj?tmphQI7d-H6j_g zH~>q{Y~!20sdv5Op-ISz3@C%=1PmRkd(m$>Xbz8vorc%(YVICF{$&JNINqdIdJmAS z{xeOfL)`%)g_p95JF0{)6Ly7}VFREtL%AN#XjSGxt|$r=OLvbKCJ z>*Y2W6{(m=za3;CV}P~{H6m;RJ)@A`Hk5)ID^qlDx56;R!tT{D#j_%8xz*q>5Z`>C zdHUrD{kmmREOjDv=?}Rz5V~|I@gTaYfAxvRHuel{N^}2CIxNGN>3UxtXx~ zXR;^Hmn5}#(gdIw9<7pftsq*DTVvZK#!6a9zA?E7hC6Y^>u*((rOfB&f^6T1ebp-% z%NvyiiU=;X=x3xJjf!B#$^E=jg`avAdvSSvfW=AZrDx0v3p}Mjj(X_wuOBA{=^26x zCdt(bFMMhjOiy8B3aj!4Btc~dV97PzF!MVVU&iPK_FHjerXyj9fH*uo?rFxPgsfa{E{|(VcpdwK2$dqS2+M zWL@OC$p^QPWR|*ZOfj3f{U}d2?z}wL3d(8Sik#xCjT-WZYcuqFNaocV8PrQd(D!W} ze2?Y~8QCel>d9ln(22*bG;tM0{rkPW5Ab5qc(WuBHJ@{iKu=K~5u-#i+_IQPlDH*u zZX`K1gNE*lGU}`%l=!~j#z3cPxG;hYoqR!n$3*Zrk6hdfRJ2IMTs*;HmC(3;2ri*# zGBI56DbL6G&QY(WSNV{!Rg*_yqC*`>R3Z^qv-4#F(u$ZXg5UGB9X((|p)A{h%c&Oe zVV9QGS}%`!a{}G@n2Te&bWPH_ehEc*ZZCFYUUJ^iXb)CD27m-Lg>($x{bRFr77=3b z&0Ta+EA$35CN_u}?H|{c1DOAMsOwHe+c0tp%JxtjX9JSCMJnueuDS<-sXY2c6#Yyh z;XVvybC-L?>X>ZS%X%Ki?5EF)2$|->@JN1aUa(CXsfC7vOqrklxv=WWo9ciALm~q(ROarLp~hhM3>dlge8O9@f}6#3cpz zHoc=v1+vrOq#Al@ziKXJwv&P0(REg`JNiTqjJphlNfjmJH(3lmhC(P^sQt=*VSF98 z!o%&F7|Yhe=-+IX3fDQgKWx4L^89K$vUqWfXkqx9Jg65|lS7&SCS`Z(GzEAc+Tf>r zUA&o~MF<}C`nKoBAmswmtxL?%s<RB&wVahc+vanA|U`*?Z>|Jp3l}Mp((orxkox{~MUm}U`OKXXa;ArE?mImyW zQ2J=uZ{VeT^gK;j`<0UKP-0%xDpR!7Or)EvmVDi81K|@|r|f%vG=Qh`-bZ;kBbPm@ z_(D3Jutn(qLFqn|b!gOxupI@8y74i%Bol!rS_Kd8dm;$;uEsd94;9$9wzrT;2L3J! zTi0;zHdfKVS1lf33A--aCNc;0$e9olT3^WEa7Y|X@dQ}k^gI7RJLw?aDt!W#q}uLc zSX(Alb6PPD5H>JSXx%-Ww_XbdLP2nrvB^eT5L%ijl8;cCP?~uWDehg=L;xQ?F~#B8 zuMy=TEPA$|-}-ziKot8!CS0e_8}6q1=f=B2=*ZR}EuY z;Pj&abD;g69C!&AI`Cyuf53wnL*{9MAE|-X4pvdqTT(T=eO@#t{@!-i07C9tRmf1V z4f12#*AS6C=&ghsKt>3DBN8E@pGW$ZokmPTL-VY{^x;HBhlNf%r<~1~T%(F?9yI5o z-Ol3DudM}~hE|_LAoqOc+teM=b>Ej7^nFEf_e48SQ0z_uTt;*ra#K0lLq1l>b%(;D zo$u}&7yhpZc4;yQhKElp?F_v&pXpvDFsH^{R>obDJT6z8;S3NJCJ~)De{R%-fvM5> z@%_%XEDm)d+jM*A?GcVbFTEmDNMTom-AIY@0o&7+AOxu>sNhuC>vsrhBYZ4OrG%_H zJf!hnJIRc;dkNgqVVhsb4)>+E10H;ReCb&?{XV%~=@OF72k_PJPwSWDUr~sX%{>Y& zsqGE5QZ^2rHXG0{>1vk}^L$4qfG0VT=T82*!bDT=p&& zq(umu34TgBKc!lB*4vs+mCb{~ms)dH1G0bwxTwu@e+x`9@)>`on6!ExZ@`LvDH`9! z609kfVx6`Sg2;>LCj(6^%vzoi0ijTA@iJup+C@OSk?#q%pP(y72yJ2C@cI zY>lRw8ih}m1Z%lxP9{n&RdK-H!Bsjo{_|8@He@TfCb>uB-3oElKN|(BXchupJmwr_ z%aXRV(va*D*sW;EF+NV*rkeKa3LU=#m_WgWZj%lS9rtHiY@>x`Pmw~t2<)1-Eurou z(G@2Sm%*(Q+sZu>Ka6Y=8C^V~cgl#*`w{BV_!vDL>gC(k`6Tyv^UG#cgY@3kjLWKmLK8#eEN-@zBUQEOG0bwK&a(BsEEgqNo%aT?lpAwcFpB(4-w3_)N? z(EHS>AOnrn%@ZYC4T2<%D%1f{mcZSscmm?kX%4L+hn&U;7$iM?i^SQ8)pI_%40<6LvU^KM@nNA7_g^iZ>~W1)_PS+aTkh(}N02o5dwJGY*|C=Q***0cS2$zB?|o_ zE2#fOOTu95(T8d(!S$u|y2-rFDZN8pbsJHQaupr;$0UhhwrI zVw(waN!tU-ce>>fnvwb`n+gAD0#|rK$A1!P*Fg+PsaFnxG~U=6q$%)f??Yz~bV0~A z*=;j;PT`P1sAWO*nP<`t6-|=|^~{2Sxi5BOf_T_oC>IMH$2Ix?Bh(FiAXnYgPW zP>~luIsPY%>18Z@Q}gy^U3BT9El__w@I>L`c85`GF8b86bpmaXiFCAtM(>F?CggEL zw0Uq{QV{n+1198!9ZXx1?HiL@+79$OyoIKA?TAANV_ zhz;qvaiD7N&4W4y$V{%cGQi$*dID1-=)}T{OEw5fvK|Nq&0v282->V7F{~-Q8z_ou zA?v1U&IK?Z(dkNjFc=Q~`>imX8a^7qku!AKbNq0Z67OJV3lyi6mv3kRFDc~~e=E`p zs$Mly%I5gveQ8Ael;04ad?~O4^hDsE>}m$ww<*G31JRuhv4a45ij~OIuUa_zf?G>> zup2^Nf`ZnGTOqcHm%Cq=Ku62Rysb&#PU%tDjJ~pxM;T&TP5t**vR^58ke5ry3wGd>o9i zkizTJ>TGaENvCiF0X}h2PeVfUSXUfHJp;mAiU9X+I;aoI5VPGxty&*Q9qt>yQIl#o zQ(s8-CFSt>S``4M$Mp!sLaidsV4wZu=q2i)R(GK27wPY87#hJ&NML|qqZ<#21Y2k! z5p{m$hy%Z1@!J=>UaWE(nd=oC>M~RFXa?DrIDf%@pJZ=TxhhTAErp;wU9GB~+?K6iLR6tZ-g6eY$AL&2`zw4H?~ z`Gmq|MY=u-sV!=%Dr{;6wc9QT>SC}G4Zw1;4Ja0_$uWhDg(nk(yJh>?4ZU8W z&4xeC5&VtNil%BC4X zK4!_Ra|AaNX)(n6jXFVw!0 zP&L)X26n#J+*1PD$)Ie!xTauQr_Pqg7={`J9C#&I#ERzv!3Uf(ufvP~dLJdvQjto1 zvQxGtQ5cLK0yW<#W~?giije%f^=@;J2Ca={t{X|x01m!WIZ61D+o%Oe?QedBv$4Bv zk#(1u~ z6HHys#!Zo43UTjaT&rvbto2v@$wME?28ZKQ=o0Js5=riy^Q!@qOsi{%r&-L`;E zJ~xbd7gmpS@WCd)}D|{GjQ8wr4HAi$(m!f%z*E{va09A zcOiY%unCmRNC2q;re-1OF1~FsGdHiiCG8heH>W|_$Lu4PbM$utal|dCL;d&Zf|LGgd%Q!U->M9@ zrrnx9!5sC^eqxOfvk2~_oP6>9rDtEGDy+dRtux-U)9r6<#>HaC4*h41&RKhIm4iff z?t%n`(#R6@`&OQ!&@n--u~WfB?V39Bv)B6w-%9t1D#ynWqqeyBRAx_JG5M`S0HdLv z?8R>dyN~6u(-SQMMO^EnkZ%GjaxgC$L4~+E{f60bQ`ud6wn`VHi!o1u zV<%L=rZ|0m8a2?l)vdh;9+Y)8^C(pXidZ!2oXZovsoopFg7Tf3ko`<`M0xHFo^kQx z79PuTD%313qYmM^7&RN-bE*|lY*Z6E4>N5d7z-$F>G5@Hfr@zI#z(aIfw2Smo6%=` zNk49fo}eq95Y{eJqNZe`^N0A6#3k^AD1g)~Rm1P&7tIilw0q21S8SC3i_xNrImpdf zAv2MuZxONuhW67K@quOKz$=W?i;QDtQF%OHL2%roe>f!7w*`i@c}Z> zQDqph5r(Ns+SsD03&R6gMWfuw^I&)AVyHEdUb#7_e)GQL?9M3-Ry5iopi!SKYGdCU zGN8>WScl`Uq~x7wvxPZ69_&O`#>%5-azlfhzQij|s9jZtQ4*e{E#w=f8gud7&FWhY#lj02 zQ$@a#?cG5niQ8yzMBB0&&?Te=S~KSaG+#nIBY@w`*FORCvruY~aaEo>nQHm~z6HtI zC$tSl_>q7SVq|_ePi4zG0~kAXj18aSSmJlUiDVrT=N4x7kD{B)di;e=1?$| zsJNOm%<-je#A#MvZQFUxPV{}LE|*#Tt3x)Yc9$GB^uDhV4y&d1AR2Rgh?d&aJ*+^7 zPPoqF>@fnfB{M(SJx0-<1QT^-XGg?j%m|`{;-BE*%gfP0X4X}dB@hmNQVAE`hOEW0+SP?EW+T7Fh^iU=HL7u zsikU`_xi)O@22hyC|IYQjPj2Ds~J2s3mXKe2BUcCP4a$r79@Lb}!M zUyfHd_ut1xOW)@5z|ID2T_`v^au>-tf!9ZlhtrYKdU|$ZA0t;g*s4ZLSXN%9Q6!TUj(FGU{6N zFr4x-%78MDB^0o5bLH3XelxvY1Ww+kz_}pKT9_xZuWItpxUV&SQa96|=^z8W;Zksa}MbRIW6K{<6 zJXW`-w=FQ{nK?7%&B;I_wdMON2fV!HB6tg>1j1F3!{QbmQ(UxYewpF8U3~QkLU!JH z?Qu3vZ(&Cjbil0ZUg2G|BMIkB-5W{>1PF2)F)L+AJ$_*_xQ1g64ahJvMImZ7s(Gv z@j(OP>dvR1{>?;qBn(6brB=Ugy+aguAXLshof07Kkfkv9H-z4bK!r6H<`L^QsL5+p zPjcede$P@>DS8lXuq^=e%(SN<4fx8`vBh;2r^D&#pI&~U|l(DSqa*t@H zgtVt9^<6bW|AF8~67x;pgR?f>1nv?uOXa*|x9^T$lx2GLWd8lsYD0P@Te-@&In8>` zcf^bvhz%INtb&p%@>9Cg?VOBu327gq)~yNos4Wp&@|A%k-m0qnyo&k$J@5BDvp4g_ zP*dI|RAw&7`TS6mg7FvieLZiH zvq-34hq&m0;@zBvu~rw^FfrH5LZ@`fnw@@9q7OdHYmv7#>fn#EPGmtaYvSieYPY*& zNWlm-&$AdINTle3%;9M4vS`wbx_lo9uHzpw0v>|jWd$EVdMC+mE86JdaWzghJG}2m zUzV=G2p>tM9e2s&*DpWfmSfpEQ8DMG9@e%Mcsq|0yU`rmKw68CjFD z2H?JG*{NF2N-cIuVdP-_m{&cA?!J3@d){0mgQx1*2U+9?Zm%A7YJ1*g65~IeFBE8Q zpPGy6FDA>U-oxj=adA~0x$-WUWbgPR{Hyl6OlOf3bN(ez<1N=TaKhUn--Ui!5odN) zKLtSqE5L{5stkmycxlXz;ivv3&|63IE~JXmxg;Ypg<23y+95Hq~*0HlQ^Z*#26yMb>67HM0d0Rj@QH1O`V_zfmUw1-XH!iY5%k z!(Hc!02Y5Oy7r0(G1|E+npwDCCx&&4A%RXyx+>GTi;o+jHw#yF#FxrfsT1$i8pHh3Y06&VJgUAaot42>ZWDG*z2Hzz7Y93<%en9S_xHAHpWOmK90UHZC6 zAus9!?Cqsi9VDU^$htxRD^HgA+r&U&=A!JTv`QEEWRq{(qdc1xjWOKWRz;?0UD?y# zBYS+)ZVWXyOPJ%2srNlm>-!qlk%XrbvxgP3!dlSU4J_ftoq4u-Wqa9&ESG&lW_t+A z3jwa%&BUH`&%5r!B6IHgja=YrWr8LUM@|$;XBMtb$Ca3=gKub`6`F|h$r(DQ9l z?=Fy+smAklso%~Z6gUp>FQ<8i(memUAjGzQ4ck`NjIR?F;Qdj40yMg=D zZm}%d4LaabmdpD8?@q5a<&FB5L_MrY6y=y1?`0dpAW3K*wfV3ykXe$>OGd6RD9#Bj z+wa#eFnYOL>nCh2G~3ZISTo6SZrRZJ6qm~Fwz!==MWf^$l53D!JFMfT?~GtMI~aW# zENh(A1H6Ce-@iUstNyepoYOv&`MQO&C0B#8YNV!+MGCq4a$A3V>cD)B$~VSvcEL!_ z!ZZw@Zx7r%3Vx+no)GLPWw;u{ZY{xfSVet6|#q;6voC@TF0u%JS%w+qwxGD@mNz} zrHIsOjK3v)(9SI=uSMD&M|Ai0x1Bw8ywz{@$-EVCM?=|DB6q}Rjy<55Xzdy<)?)_`X?)YjAgfLzxfJA^-2vVzn z=OmVc*M%CsGYw9qI=mJVSze@&0du)t^{lHG7C}(&U{n2SXyZ0q+j^xmfouxh50H>z z^eQ*Ia9k~H&J<~Ik&ZyUS&m2!av>xohci(Trui*$8*-`A+m41Ha+5g1!jS=o7TQq= z`weLWyCA_32*AxDac#nIHMq}YZKKPPOW_Vumsj0*<9q0UClTk{mCa2ZikRBIo2psg z2+s1Jy6ga0J1E!rds4d6sYSp~hFVMUFmOI?48HUdRw-`l7P2_89``Gh!|o^k0f(V9 zsceHcGYRc6@8!EubqVY7U1djld#JNiE$e5LeqnLdYdZRKIxT7WIgsB}8l)%4-(&4< zUO{eg+5VGeaY&L6rA~p~Vo!SDFu3Al--h)Rp$HQ#)|=uaOP%C2v#zM}*z~VKZ_*-* z2`-_a<^h_lX;F!@B*`)sOU4B~0BFI3K>?g2xg|c#L`Hji-J*AwP#PT3ctOzGb1UBG41_pLfoDbkh%p4JhyrdL<>Ua!ntnwm?i06Jy1)jFPkcFFv>I z0^Q>IAOK0uJuZ?~;a;_(x9RkX15Cx3?5!|uJRav#>v{$JicKIq%O+18u?}vs^ zNMrIlfPlW>D3&4A0*?8jCHSBKHI#-*n_=@v)6_}F1zSLhf9nPh-HUO$VT2Ssmk!$I zJhV$#xyc$59$($)W^=K}UTgk)i-Kl12;QO8&XmuByneQG3u}ym`I=*%>~7gvgcX>N zjZ=CHL@-`<*)SC)pHy^(ce0%iDWyPG6-*9N4lZj-hUgae--2N{_6G z2t;-DHj7eY>b>99S=d+u2kJMpm;!^Bu~9>PhQ^;$(7O2P>xoxV74%DlGUdMEpz0qk zMM#8*Jz;A%{}EF;i})&d7tF^htW9va*RyHQFe=(jOpznGJ#rd!YMMWq83H#Y>?z^K zD~RQ)3fl?}4Y%_C0)5XctvFV)$EYyowi#h63lNj+KJ$#L>pde z3N&_3ZMye~XYqL|7+0@_;g2Lbj&Jxt*3%L3u$v?Q5dIi3EE8`Rpt zGwUJ$*SO#!eNRWhjn?Xcm62Vy?ardTaxJl)BRQ!JtfvaKrYU#%40$Gx_YM0AxnBA` z|1FfSrbjO4F0vVW1ESX#Bz`Pp71NjhF8<{nwa9f>@I3W?=b{(jz_((OHaa)LBF+OE zUzNKZA-E546POoAcv4LrSi24uv@n?z!yNoU&Y8qYvq11PRo#_5!^!&P?WYzfUUCvW zJJ_0H?z^pHZNhaGo2F-IPrWE0r-##uUHxm>U7SRA zDvYOAxWDy&{!0kWH>eKXKQ94c-Mdfl@0!jTykNB^vwH_dSx)D!S^9^+9&kWq&St#Y zCS0Ysv(C?j?xzdS;L1!$C++r03TZ^wHbjsqcb)RdOl#-x6|I(ltg1lB=b@zFo{sOw zBek(ac~~{MBnF_yZg%x*6@I+p&~|^%Pmg}Qc`Asfor8lgUYWOg1Xa2Lvs>(zj@Kfk z0_qeH=7&`L`aAK(-hQ>rV?t=qWckToab!Ski-F=Yk~A(574^!u$kZ})ov&E51_o>* zb%HbgjLJ%=PJ13?ttVUwRL|hDU4rlPQG#chh&u|wO}o0|!K)-gaUb)RtjVtE-KsQWoewMsODeW+@M%QiS15rE;^;I>F#6!Wb5)ciq3z_ z6XAV^`-uO_Kec0FMknw-dA@nsARlHT+ok)TvZ&tF0bjI*3(h7EN2$bty9>PH2BskC zd>fZF8f@Bt?vgBiXJVFISw9k7bm#81qT74N9X1rAnNoC_*a}t+_uDJ=cL&rslwOVu zQN*+&DR9Z4z~9-kM|~PQE~vdGs$@%(@dPwr-7HLUeQx2AOudUaN$t*rN4VCRCAl=} z>y|wPe#7W-3TtG^Y&B;_fsF2Qv}t<4W~96*I-8#h1}iswZY9t}7}`^p(&8Q`EhNlb zWoWYrUpOvpt_=ITnB}We6J8hI}>3N>KPIu<0NQ{WPwBlmDfwV3qQ4P zX1=pE%Upugq%r&2LkBS$ZgpAoLR}g{|A>s=vA_1MK{(t>k%ut;uPFePcnv&JVmco@fyd>Q4 zV~A~t<3&WeEfmI{?`5AWFTTCVkN>85giJ6cj@ z&m^o(Max%2bUEZX;&){<3aQLa^@atur9rRfA1pim$g}<37Eht(nXCFsZY{ zQ<1PcF;Xk9zcqQOR8Ry6s0Cw{#_x$Y6_X!zVR z_^GUTXZNFvn`ZsNQb;t%mL>)9RqW+AZ!5BYtPb6&0VuxMQb{0h-Au&8#XaUhSqc`K zQN7pMqW%VvtB-L&GY^XCG{FC|_WMLR&$oQ?;`mK(@+nrMV z3rqy~1zC+641Qj0_`91zw@YGxOsV%L!331{vSjw5w<(Qfcsi}laPs=W9%?2$0x)HI zIIr?!z{vRsTWUe$34Zzp{y~rE3U!>qhm5((mn8L0LkyHNXb61oaPV>-eVp(%Nye4^>0LIn!JMX-ESbOZq39DgH@2%7;8x&$I6?SHUZc=%%Q_mh`)Wh08CG8Tmx&LJIra)eSuV69Ipkw zt$oy8)?yG^Qly>!_h6K|cVe8;Of6(5*IKTU4}oD@Ar2Oji_!dGPYK+zCpcz5@?5J< zcLg4*H!4-W7Ll0e1F-nI`$2^zyjMnG{>7GM;9&4u5!F~&!4@RX%ak45I%6s{qpF5L zx^b(Ucc@|5sE|3m@;Hz+m+`&$0((*(WC!EcAvEhXRxEXS7NgV{^7qH(rr!cdFZ}_K8~+pzB8~KPuZ2b_BQ{>tm^z73Q7$w4D9-JVjRx^RZ7)w4 zmjwph)-m=%)AuL1XOpa5;+K5LKbrcfLEPjYZ5+mi4XQUwW33+8u?rOAy8=m-_oCQg3{4N|KkT zJkZ2_7k(xOeyotWnoNSO-B4aBqbuS1e1ZYo=3vO%2A4~zl+F=1JAY?b8hsS#dT#Ie5@(Zz6U9HWRg)s(I==}=W-mt z)C$=jpk*U66T%EJp@`)@8ZO|}Nfouft*oHZMn$9^ViQt)nT!*gEex9IQJ@v$uCKwv+GU{Z0U@ZP09 zgRiB$UUL_VyjoH$u{^NSKnyB(;x|Y@E2VQrO5mn!^?T5@3dtXKOb4fS%H-;!c?fdm zC!5Xd;3W18;=y|eZH^M(v!oNpq4CKv$Oi1ltLr0BSUxw}zU!e5T_O}A*bLbp1_<^!x z%Y2p%vA7GFnljzi9?aC{ofHUIG+ET!4=kb4kcg3$L0bd=wZkmdCoOynseve@WNIC@ z^Ya9*nJ(fLl_MvCmDT2?%1eKUx4oizO%9>7)sPEJBeY}G>`}6xp{AE7sNqWr@CYd( z<9mJ>+5~LL!zu#i86Y;N#K#}}Y2IRH)4hz817|~h(kgq`Cqx>J&^!^b@zN~5Q3@(I ztRuG_BRQ>@U{PJ4J+_Uca$=7os^?#FI`9Vv(g;c5QuwjelRaY8H5Cva4R>4#`g!z* z;|{qV?liJ&yUQuC@Jy&s+V8vl(u9C(OP61U+}#H_B2E)$Szo=5n0eGsM{brPFrMJU z+$R=)E-5{>5&p$BixYR!L`g%@FP@12j=M;B`7IxWA znz`UFXz`fv@uKby36Qkaf?NiNQHi$I8V-rIc7jp@bN}rx%JpgG<@*+VQY=+8DlowL zZSnAygxACCa|LApH$ce0>aT-Lsk0vWn73cKjG)=AF(b=48*AxJhg945$kNAi=s?^~ z7N=+G-2`iWkXg(XM;_*V527>~!RlfgJ!RE0vQe5kxFLwQj@|(W2n6cO9}sC=zx{Y> zQQalzBR-nU48hA-WL!BMofV-&hMoZbPT@XCAmIcZlu!4xL(A#|LOdIa=5^NH zW?~S5Fb6pW0;nl-VDXCLj5itZ1PmHz-I|UF(1^-N{<^J~XEJ>96wz;!)39*`fD_I< z)w-n`t;GX0#cr9W7taf#!sQ;(!U;&9&v_$s(`b0IdqmDn`t!b%(d0@VfS-fR-mxw* z11q;Lp&U@Ms24u9(90)lx0CTP3Qsro7Mx5IR1;3WrJ6eaDp=jVv%NMgju0}~%g}SP z3FOUyv`z^als{s~o38^0`%J$eDNqq0nZgj(n=7hL2F<36YQHIm1Se{Ov(jcwqiWIc zGx@!5SPm|$5Vc{(@}aeN>&DfW=PWp|Gd^u#SGCZL9o22MDUl2-bvwH2<*lWNq5mPx z>G+)xYYV-2Y*KJZ%F^47xk>dvH`7k!sDE^t{I^Tj>K1h53MIz50K>AEidyH<{yNIE zE*!|3CVJ}lPaUY$17yy$`UptmmwoX1p+nx=f5-(dT-Y4j&cY2(+5i;v=0a7^WjHDh z?>8hDDE9G}Qlv-wW?6gjELZd?*I|%1k);<&-;-6rLxq!$XKjzKTnhkZ1h{Qc+MGkC z>i2n$M28zt!s2O0)3}khyra7kpZwaelXYkfuhf%+-;%Pj)Cikgi=U1LpCBabVQ=K( zuMs!-kze9e&=sLJ%Pfn)LgLHn@2rwUjdqsnL(8=>Jcx7l|0s+TpCo+Acx9)kH>&v8 zd4BYn9xE6~Mq@8((Qc{as6N9yJ`J01{>~nAOA^BlPt_R9>EF`8)T_NE`8?Q)sT(R= zQ+(=-KlsFRhS*xF`@?Xts6Kj+Q@(((DJCO9dCvKtNMW*1>30 zKC=iJG&k<(x8MWG)DiJZ4j*r-?X#LWl%X>is*T?BL6elN80A){=#UI6%p;?%GsZl{Ir~qKBXBYobX;*8THoUb@jkybG2~&H=G)4IVRYwDuMme zGdV3ddG%A9IXjOqsxMTY)9gzm#xr?jkfmA*-UL7f5Y3W(IoMgSGut^X0k%a1&@>kj znZ^@RCas#(`a09O!kfVryB~W4OZ7rwL^l%7{e~5i?`MQc_4TN+3HtE=p@m%)Q1P9d?56V0YiW~_Zpz}i+UH2T>0!Qh&gE=Z4f2T2e^Fup zI*57UT-#&d=#;A?jK87G*bPu zH2!Go9wYuQz#n7XpE`OH%9>wUxN507^EA2gG4z$XA2V(6dBQ}@^<`KoO1C8mfO_&- zeP(GW4zy7^o|Qd56+C_6AYR-j!Co2YgxZmzkAC^;MYSo4w`mfa(keu{Cqd^_dv0rT z_SC>>bs27yuyHlpu#31lQ1)nJj$j%ul zHBFd3!BOqYe>WhOKFqd@)}fZ7nd~?VYR+&G`=2+tkwHq9o*ncF=52r0a?aMPf`wAy{2>Sb<~0A|%SU*=cq>MLsWMRoi$F6sA(BjHo-_R_wC{an4UDc4aZ&^#NL_ zF#BsS8`+~9Nm-0yEQr9~z3Pc(MuSy4i7n7#B9m3fqQh-#wuOz)C>~l%_wt*s(wTNl z$Lbr{d|6Vb*Vz&5&0EfY1f{lv7|r5Gf%+P}<2hP;O3PIOf|DPo&uT9edb z8}9ItVvG}fpmn-FI$I~NaJPf&Dq#x>1l4W)1iQ(iPdO(U z%IPiBWLEhm{Ch0!8XgY!CVNSWOtpp3@mPSsLO5tE}&eT88j-N({>4~_^r4Kc!C zbmNkZfDYBb)UV$RzJK43*f?|KxinhVoflF_Pca&MRfO=-p6~CQqPlN0H*c}b(;qCd zGLj+xERcHlFX$jK7_CHTDtP~Igr}Fi04*{Ya4R9!GA!Da`;$oJ?us&jy~1H^Xq#=+ z6Xw6xk$!)-oeyDxK?1Y;Tl+QP>M*UVm+1cD(TKR#qBJJ~evv=%rSz8KC#5ztMoWG( z>)y#3ts1m+UnCGtB#U0BO_rGYR$^Ugou|SuM6f%XKJS<+nE~va2SS2eALR!SQ z**C^Hm7_Fb*}VP873R@87ZL^ahh>{UN+lU2u+O0h5NgHeLNW*TEGiR%DJN`}0qfQT zaM`>AyH#$g>_l1*sdX7t#923$dw36*%<*;k79?M<5yeLa(kyB|&!kZb$P#$YUGU(B zxB~BA6t9z4!}ws1vK#0NT*`Lo`u?r&egQ}E8ar}026l|xxQIe2=;vM zZWK!n$RlSm-gXUM5d-O##nwj*>}&Q@?m%N#a`~Pdtz^QqV88yAh*+tQ&+17j+e$nD zksZi|y|9k;L_{P%e$&Q!zomTVi+m}FSXu2OP&PKUdLW=Hajr80dEfJmIPoyf zAdkhbc2Buk(m*~s7O1B3im0mfxfnn}U-%l_`R4lq6@6^nz1_!hs1^!lYUqv4FfWp? zA@f7|Ccf*5zpRNjU4Rz3{*YjUnpMTT`RndI4+ZI-S9qL6z{3N2GVZwf(Ym!cH}Zw^ zQ5X4E>urz3bwX`}zmNP<7s1L>Vu+ds@K)2yu00j5%Y#!T4r-G3*UL*#o?fQvZhCN# ziTzg9>mCc;=R$uYG0%RD$2{nQ*%UZ)!deYa(| z&xJiiwUYRPegs~EURQC5ErC5&Q3Fxjyh+)Imv=(=$Ijh0e>j3`%qV$Wpo!?K()4}} z7;sOQ$9d-Cf1)`-*&6DA0!r(tRz87*Bv|z~dtY8$n96dlI z(*KynQ_}Sun1Iy!wzs{i`Jc@|ziueSN=c$yR0|Md884;!TPI%n?>J$x?YFXJPh#uO z4l_YbVI{`@51CY$z3h1Lb)#~&YrqmiS(n%AeP!Y!Q6&;?Yr&$aOtJO7AO-x*AH%hHYJ)_iJ=9*|wrVUrD-J4$BA5#@W;D9eD7l>LOfNMb0MMMrjBhcfb>6%o z9`67jP@FC#srT7z_k1C+#g>Gagmtev@VDiE4sMI)zKO`sLj4gx6*zZpw*~gHFYF209Joh$+QK*m>?WzZa z2F2_AuD&OM&JCD1;B7IQXNZIi-9U1I4Vq$7(9TzgA{&O7-}tnyzDGMu@8+kW(SyAW z>c=sg$?I^U|EGVOr2M$W9&PV`3JB6nN^f|5EJ={Sc&|~Tm`Ji&ZDF7jh^upwp1(m| z!P_!nRwKTb5T`p@hE2+1@2-pOD5eV+b-^XE?S3O`<-bzxlovl_fH+psO5Z08_?9NG zP6roA!6}Lv6La|rL|s-2v|-<0br&PhY^sI|YM?&ZiKbu_{05mgNeY;oNbz?;S-0nw z8L;^dJ?@zgJ$uj5(-_S~?=zNgIZ3~x8E`E3-hZ~|I*H$V3H zFi$MJjE01%RLkAvXC(9mLlZJyP#W#SoH zkav>~fqR306v{uurlX&M;?XJbY2nERI&i5ipaR^fPPoysvHc*$9wjl!=|uPN*Ykh+ zcaP0&Di_(;9TKqn8INmoUX1#iOeq#!3wWRcRD%z-Vm(d2nMiz5B<#F zp_G|keF;FMhta+fJf=rS1$=8J$4by zM0zEF2}zFs@IpbN9EfaXk#xI~$!fO1UlV=FuuPh2S5dpO-V89cIubBC!D-s<90~a24iigZ%rj?e48vLPI0Z7QT6i$MvKd)=K^mb@zn_yHu(>h3c)OA+|b^( z8QsZO(RPxsMJ7&tJxZisY-r#rUCvAt7+j(9ggw!j$#-U$1HIIgjl_xxHoj>3Q?~7F zQD+T?6FL~!`z4uof!*qekQ(%6^d&agEW*Gox*f>)O@`Y;k7laftK{`I}ZSTh`VK}!*rsW3k`KNltVo`3S5^GSia z4rtHP;QR|vRf}3|B;%p=t;zda9U_+$zKLi#7HP;*ENiG>xE#e!#22PshCFpR(r!#Q zxU%JoQhd0=Fh}xG`UP9zi9XTh{I>1KEVlOUKg&Cq$rZhSu$df$1~~#MvKs9o{r}PV zHpGyYr6aImF9fT|ljJN4Bf{GbN?8C}+(b4FqNC!6KeLa+nGBLr<#j(IA@0aX3dqHo zYLii-oaQ0MiJ1;BwKw9(F-Qn>gBSj)@kb2W(A#-ncNPMUd}T%G678T}*#kdEmvT zwyyeb*kv^9|Iy}r+8B&3<4LDO;wVV;Ex9vOFK0pf>ulQrT~1vuQn9ZBeF>qyv~#8U z<^W0f#w$p>41nsM3jz^ok971cGhkbck3+Wjs)ociN{{)JW*U^n&A)no7Dvqx0}Q$w z8gCf^H`zNBf&K~3(%w>!CAt+5a#HNzRx4#iTH>kg{Oi+)wFHK*tvn>`Eq4zI)r zCBMroJFqphRJ2OyeA>*&^n9_-F%_{6OQ1sP;kR#s@!0Jo1F%RdTU=&?*tL^p`k3ib zV<~jHSUSj}Edw|paHPx*Faa;-R$~pS;buzYoESj86x1cgV5Xr-3T=rIXp@J0VY^ZN zYuV`MoZ}F2u0m_gDg(@&e_RNHpy|tcCDa+W+wAmE9}n)Qp;(w3+z|EHHMyYRsH?y! zUaaScPCCHz;R>YZKlz4E&tl-zBW`gHv~NDQcsiH0&O5| z+%w5zkiY)Zb;DViVtGd@ioX43;0z$4!0Inksi0DITJ^Mv*7_ik7Zryc&hEFH$5H3V zZ-3U-_1;?*rSAA%J2vXM#!MdLRg3&QCb~)!5?!E|xm)&$p~$E3)+%X#6+5~}HjIe% zR4m95WI=<@-=1L}z&od)1c=Mn#Ns)zy@7Vxw9QwU@u`s`*ub#g(?&B~>Pak6sxbayr+kB`1tXFfe*g2=+U?-(EXSp$>{ZZD%$K6hf7r~UC&}^3e zFrE*uGm?|5+h9%o!FHI#lPgcz;v|s==pHJISHP8O_qoY66s(l1M4@K6d&m-ZeWt>b z1Y-<5atIy+_@gkeqYGBOuJVCrO ze|X|#qEjn8_JIyZirFsRE6j(K4n`l;=y1gZE6$e<=mgm6FZ67(#DbkNW?+HeIXRRY zQa*kWkAa~auF2I%-@p4B9u}RB$cI!~9pqggyp>%@n}d9wIrGlG46t4muEH$=n^ESF zCPMYPB#D>3@+3VFN?ka^+>TY&xm_ z1T7A_+mwL#Rs3vQ6-n3b^6-|w4f6Y9zFdPk*(8#l;g^|}OFzfj{v_zor*9zjkBrPW z1Tm3Eqn9^J($56pl-u1Ox?E6I8Gu}_$X1@_#Zyz$UAaB<ua_n{KwMs2y~oQr5A{DVnKhWu#|el|Er+z zW-UPW5!`hg@ukhF!ggl&>e4NyGs9(bR4LRl;e(16dW=LAGS&MM)g2n}m@cPe%j-eA zEf`p*BAEzMpSbHN+3$anV&5}zz*>?Tl_~PV0zqNUeilit*CRSM^RF|$F`_ISJ&@3F zgvV;F+ls8lvEyxSVZ;|dOm#Z}j<8m@CE22=Xw9mNW{{|IL$aZswppP|_sU*PYPLQ4 z*(!2J5C9Kv6~HiPWI?@}jQfCE&8pZY&lKLBu(gZ*umHl-Q~s_Q42n8oW^e;uWzqs9 z=&5HO$zIasY<@@_Cm0fRU0uw)zqheM9S`?hkAEuGGSA@p(HfGvW$kD|+u9XA_7KH} z`b*DamSAi>x9|B2iHC+M<>y<)wgbNk$h~}%%jf=Sz`~l6Rep>o%5keFmL{-;F%z2_ zAal=4@%8U)iCfzQ%~1pZ^DU$Z?293_a>Y`oNp5UirGZm4LrfbN*>3^%HfY;Y{M;e6 zW1`922DT-(w#pzxW7ikYUoYg6K36c}%06kuS=z7dwFfa;D8(J_QfCqDYw&jl|3g+o z`?MMMQq}MD&zz$5)-S^ zdDr1nmZU269OA(56~~=iMdd~Rqc`2*I+A&&tS_%p2`TD^HI)MJT`Hy)u51GMZI8WP zgL@3Fd)zUXV7In3hM9kAmYx`=tI~DTOr9D>fJB^hX)5s(^C_JG=<$^uI{|}O4bZ1w zcqa?yTo8Ot<^);zo5w7ZA5FL;<0r$Citz+aCL_ZIfy^}FBg|~9!$ou^P7{$a<)D4*Z*?9amxEodz())R?voqN zSd*}g9<_U@(qomeEmo0a-dwvjMsHAxDh1SW00h6HK9>_W80L)T(7|tA zMCDYqdS>K{eA~Ee;y{@-6UB1ae-^)Tj8q<%WgMXgtC?{moX=i~>#v2&pm>{r24-ve zTU-;waoo&(rR;tLXE}|4h7o9SmCbuR_V(>B`d1Sg`)uxQ-CDXqA7ZkQ%Vns%*=Ja- zaFO?I)fdXBt&SA%T0(Y!IPq{}$8$+-w!sbM&;BonNv?K#03FDGR!b-Qb?)i0vcnzb znZV&yIH(Nkw;&%9Sin(1l5A9b(F%mf0;d!n<&my6M0kYWaIa;tcC2V!s77mLNLJgl8T`!h=$%U`lS{T>n=8rBp4J4g)~`WcI5SZI8-EB4OhZkEQ@iXkJUiF) zJ{`gvz5X<+1X5#3nL0uiZNC6so@3OUu+ap9rbk){qCL*Gt%8WRBawJ5p%tuY-@TbW zN!cL(8=VDvvXGCXdA?9oo0d}D{Q4lgZIN-w$yQmigW1?1n(&R1TG9J9Njuo5H&68+ z=me45Rs13D@9mrZb}V?3^aVHU@F)VMTj@ucK)J=BD3Pz$Zl8p1k@81t?pni89RmRW^#;LqEhbjX=g^jQ4ow$&iXkcEu2u|X9-5> zJKqC*?i4Hw-ZaJg?()@NMI&g(rDXa%c5e0ITZqGNRZq|z@*EF`f(G-Bj zBz_FrOv6h}orkTjbdPJS@9a`!N9qr&gf)BDU09%%tR*L~exfFdm(akr@a1_WwGU+T z>?PPMIkpB0Y`pxLybgdQEA~8+^!(lyYQ#p`WQPoiPl~!-duJ|ie$6nrjSU(BC3QEQ z0W+^a26huaCo;|x=kX7E4h$P`f>2lwgV1XasIpTy*+-VlO416@<{z|OzpyY=Xi?wE zzUwI^oCXq(Jxld2go}^8HVJ-0600nyP3GHRLh`~#s#&Zp-s%DuTt!FeGDw-eEbWO% z2b#f{cETvEdb!8Z#Do=d!!sO|%3Vu!CqhHowI8+(W?GdvH)MB6!~aDy$S*O2h;Wnf zYjLi}l~)@LYXfSacirO(JmDC>Kt!s^&zsEflb%qDM0@g6P2`LKjjL*&_1cRfH54)r za9-}#X8`-4>-k}|TX#IHt^>D863PtWtM!uKiewEI^T5CktaDXeB`mXL)zJhw$l0!M zg;a8&T~{zJJK7Xip<;!S)L$MofrKPp(}zKqpm^@T=2nv3{iPS6uCqxLM%Q#-^_v?` z#XiBSV$fEyEkLnmVn#Y7qQ=VXpGiMqM2_@Wg)51Ud2pPhlQF8`n}|q4hAoASiSD>q zx~fiSnMjBo{gJUNuz_DG@`aM5b7dHOww_&)J2xFS5wn;*}CN><{j}-I0hG=<|U7_xBAk~FSe$-I}=GeX2=@W|jn;%G7SQWciU$GE& zVCi*ht&WAvXHjQJ>jEr+R7uQ8wL`qt&{oTJMv~#>lykO?UbS!60CGGhJhulA)7$f~;=Kmj^nulba8;h_R_SQ*@s; zahVzJ2o7>X^UxLCKx-yH2M1HIdUfqgrrTQ!nu`OTKL{BieLa!l=D)Rzs4(~1pdTv( zY1CXD(Rhf;Wdi|bNcM+7iPe`scT3%Qa*A#%tp7+y2R#C@0G_Y_;EQH@aNe>QIT80~ z8;S0fga1@W9_?C+Gfa|B=eL&~h&etmlb_OX{r#lFXHB(ESeqxhxdW8pFJ`2y)O&&v zssJUOtRS+niPwnm8q~dx6fLRh5{=+is5jOW5vJY)UV(tH&_p+WO(5pQrN`<0XgKt& zk~t>l8J<6oPDY-7&?FVQfCfTMiy;7=h#zht&4GE_TDhRl3ls9r9y6+GlQa(jD(}-& zTykFLw1w)Lmed6r&}}PZ!Sy7g*3FrOJr9wF_1=o_4`5mK%uw`vdv*E|Zw+!)+NeLq zieiZ8^)42cYEBV3EfjHlw=xdHQ@gMe*7J@+-CP?Q=Mp2cHQtMj{v(#A*1$aDSvar`G-i;h#i&tX!1qe`880p# z9}wa?X10-d8ecrHIkbkS&^=y3vrmX)o}{5cJXRK*8!t6P9S9@LIR8WY8Cw@Sficig zHZW+Y&H%A@DV&mwqDAdczvZ@ZdsdYzZHAG4QWIDMoqIoI+fkb= zgR6!X*nf35sDtlJEuNB4yuW^fygk@b>z`{^UTQ&ykUaBijJK^ThX3>cHi)fJ^E!@$ zV{|SJ9zfYqGw15Ebc!FVL)OPKr!5S5od3#1_JSGbw(OF>FaO+$S^n))PLMhd5qnJa zDy`uxmx2!Z(nFV73+`5%W$R>)z4x0B66LT-K!=M*8U&#$>t}yiRI@hua8(pyjt`0r z^Xi#J@TjheE14BqOE_UOE35FJE_|yR-?~MaR2%!%?2W;nN|*c+0te@PUZ6;TF-mk1 zrD(;!!%%!ai;4;AG;z|QGO`zk&9@+JG-ET!iNpp7u)Jk8nr*U<2M-<(Kx9VuH(pg2 zu5)v+CJ?yyD;=@$|F@GLi@q)?Y1G?O8y07Rf(oSY%qUBy+{%QW8XpiDLghNuAEKHg z0x33%eHRC4tkZNaCo}D^U!a;TDMmo$tdt(+9otoRo}~J20z><`CeI|5en>`L1jSw#kjsB5Akk$Q{+c$H5UFhp(Ko+UM|{{*b0<&Uc7 zqHMj0O(ym{h=`jq&jozjV$iN{fQDkC_MxTyVp7bmHrC8qy#$V^S%e!?GlJ)Ttua_F zoT>6g>r`#JBPhVGWwWzSw9d$?kiPkJ}*!`2Aj3VdXu$%=uRRI`Gn&{zUAJwKcV0;3MBe7^qjS)UlmIbq7^cHzJ-wi#Bl3okXmv0skE z#(NFtC%fTAR@J<$ZvSEDdbWJ~ANyMj%_}|c!qJMeaPyZvK7*Qx&WVQe^egyucy;Em z5p|p70fdpv7_U_7+AF$L7~>nkHe79okn{Ootn2ahL{a8$-ic~jViwt?M$Dr))$MU0&#QugcDo0 z2sHQ*1?K%e0(box`^!gS5NT?Tn?^05*MbTUU77Tn^sU%6yryQA02%$L`?nE}32=8aKEsnkV+HHO zivqm!aM8_IfGCvF1LuCMin=8mF3lX5s0g)OZG`6Xd$JqAh(25_82}O8-tK?p<_OBB z%$gOM+-sBkTJNCyVs%U2VNnSk)VX5)Um-RA-;_|QDFXjk+Wai(wT)~~&ZV8*Vpj1V zEFa+_uo29GtRz(6t67XrUAtvDV@h_I(8&h48XB%3uZ|4Xq<26pq~VnKG3iOu>`{F#P8f| zytet`l=dIr%t>FOl+6%OIBEQhiH9hsQjMY-KNC&g6`&qOZ${yZEa>PH_%H8XJZ+bV z_~+G80N{GF*^WzN)dlT|9kZf}SU%^{p6_FIBdvF2L}Q#gcWdC+2RGJApctWd#>5Tr~hw^%dNY) zLM6xWuT^q5ShJs%_7{|zymd)oU_w8_G@^KPInI7n+19h~HsXSp{6;_s_HKWtPXODD zyx*4HJFkozwmXll{O2^=UWJ%|tZ2h|tUUBm{vIM%^A^@o*|=cf)2!Op%G+?Cf2@%P zD^iQJK338iSwJu}o>Jyy&wFJ`H?}*zCmJm*w@h@%GO}Z#18Zs;zo3-lunbKOVZ*-p z5NZ0vd)O&Nex?RaH@2l65FuVzSC-#R3cbt)1Dp|Nlm%rL5kBpLUBR|6^Fr|r9~0k; z;oM1VC#zOzAfps;uvNNMApH-`;bSL6fv;Q>DB9fMuQx{Wq=q(*;oyA_1yaRj&ck>4 z>d@1kP@*^}4k=t#^J22+eit`FhajLAOt3ZL9Yff&*pV`5{ZUlcs^D;Mumbo`Cp z-=DYeYOF?V4LJ!>LHYhBQ_ipf3@nEr94|9(5N?gK3ww;*V%Dqtk`@|9=cH!6?MLyq zdJ!zt#xPE4y;b(Memo}?Io&4YNH^OsP8>$qMxXoQ7_J2*J9I&hFbgu#I2D}*jZLL# zzO*##tyyU@E6fkx+r!CM)s#rxBE^3TCjvDDx|=O3oCDD|X%fai!>$RuBUnX05l-xG zNFCwv8H0*JZ7=u2*?vM6>c#|Mq_(>olLNWY@)#D1&?~>frnea(ma^pd2*AAQ);d;f zw%X@@7!%;MBJZ>n;sK^{o{4)`@2)rtcBw4Y6Xvth=XPxBWtl3?s2z2Na79^rY-OWW zC3l9gEA-TxQxv8Ge)!O$+!H=FkYPn5cbjgJqC=ibvrLIB%E`W5DX~{kf@9&E8Sy~N zi#@cCHyYuC1d#%(@kimrAYzhDvTrZowSZY|?eEM@bZN5qeEL2%)Vh<+qk|(}*EDas ztrcv=3;zBTjZBVRpm3HW$}MV5fp){>!dToqAzcTBeu*n-)kCKi*eKRZ14aId_Oikc z%>R``Jh)z;YCtYm?9n(lFt%`969lB}jE_(5KJWd=9<(@(u)HcoU8vV3@JAe{$nq%m z<3DDRye0!rw4Ipo6IQXjs#5X}`Xjz;>?V6Im|G%ocV|pNgL=fUhGp?*s1+a=t zqvB!1w{h+n=R$l0<@q*^gNYGq!m$ca5s(`Tk65bgG>NUYoB=|Y(CKWh`+0Gixe2ZR zlHTMTku~aAtFIm&`?0GXCkpuut6@i9Yg)dM=*w;xoiV5d2X_PN?g% zx>^Qa|BHNa&d^@W43r74ZR|wguF-%`fB9hl5hb)QSQcMDJxLq@0lL&JuA~>|uE8(G zBrF?q_h7cbZq{tLWF%z^e17UoI|~j9UR1UC<2c)G14_9=)-6cM5h@XW4r=rx4gBNd z2a|1xp*do401gHHoC8c$=>hgV`ng6&mNW8gC3hFHl^)#;nSN~xw66iaaN&Ij3TPS4 zEZ7z{bTn3@DWF+w)a81^UfT1^xU)TbreQ{RTim4e-L_~| zTrP_Ij3dqt{=cs?TyF{q4Y^hK=ObtoJ3g>`xRyWVrn@1E=S{IZL9+QwNtG**xizRSwer5JjXSxoKsR(OF-E)+bUl2vLr;&)6~ z@bF_nPS%7+gHm{YP5hKpm|mfUIX?ac@N3TtK)rH>yk`f^%F45bSAE@m;u5T8+gq~~ z;~ouvc~b80U$C~kIBjQp7fIXChQ*_;Ip7UpTStD3!gh@yQWVFU=3!$Fk*nV@s7{Cc)cqPH!9uQ8Sj5dDLn@CaN!C);kkD^G z{WT|}v1?J(S!y2wpejVri@sQ@vCkF|g*Ru}e3s^Tpq9Wiq85h^R2*TQHLV3?W)r=bi0cwc*BS=xUy2eCR#(Zr_r*~y60{wx_(VO<&w zU%Gr~qUNrS7unbc^0FnZ+<5MkjDH8kna$+{BS9tqg#pd&khofj4gJplJ?L3;iiDgA zNOL;X5{zY9)Z=&`iJ9YWiavrMDL{3gpp#7RU>66!sFwTP_eWJ^U=9Pa7mo zdj!VH^TWvymYQ$#1irNCJSDV)0x>_bz~A`BbXbUry`85x2c4?7Qy`ECfH_KShq-m5 z*#>187rQhp_3Zye%ze+@{RU_cM&9sm$R61$^{U^< z%^Ret0s>;0<)1&G)M#B+X>Sr7;WREcP3f9GNc?h(b*9t5+2i;tf#NIM+V0q98N3{L zW!Nw!!j(7S@-K!d_E{JM0v#vjN=7Bo znK!{>FaP@R#UK=f=MXM@AqVeBgnv=tUz9oJ6FS~R!@Dtvuw3sX5>^VBs1;T=-+|&& zo13)i#J2;D_6e5CBqQq7Q!#9_R&yImdGa8yDUBzlzK2BHpb_iYwNckrpYPCLO=tQV zX)XlkU)#Pn497P`7|j&HN}brE%H|-pqSaQoC5z)R?+m02V!hoj_fVHrHT_Bk0W{(F z)_j%8*czJSe)EriqWF%gaOm*mt6e9i(ydh-F|q=BGo_>Egn;xs1FG3}=~IuoT}$1?QDSJmCNRa||6@D* zg0;)*CxnymOQKiF&dR4-1dTC7B5*Ydq?HGS@b`4vw`G7p;(UX%qHi46bv>SWjsnG( zua_kV$82$4<06#y6pT3aXZ`|VmsTc!@Uk9k33!{cAAaBJ77&ist$`?s556U?@MqRj{nhYAllf4ukR|dlA)xC*bDmgLD zD`|*`y_|g2Qc!59rf0+zsO|9fTJucFIR0GxlQ%!FWB*7qawiJr- zHY;UY=pT?ZNzle3Q$M~XfgCsuhQQ{Ao{@7^oq)s+E0G)r7iAB;%0U)#hm4h8CicmD zg?du@tN9P;rTJPFSH7wI@?Ho!(6dU{10VBJ^Ru;=H|mF|;!y4n{yi$Gj~M+8v~NBje40 z5d{NDM1&-IpDnRrl^w8rvSUF-df6XgP;>W^sc|p+1ST$6-8U0si9gn){vc`uUi z2^i@r6^2kEHvv_ZeunohJ5woBXtOf@TkorcC)4RN+;YO5C72>5aQl8bMK&+j1dCl$ z{fGVAxlc#OrUwk;)1h@cjU*k9{g1Ig9&m7kp$Xh^DHH8skg8wTzINJT-61HYK3}S1 zs$g@u%$VC?n)i~Y%uQ+&;1ogyCUjdE8fGL6HdK5aGr|m-ZvRpdMp!)#aPXtYsKYgg ztfs?2X6mmusDy?&<61%x{}EPVHu} zYHBB5EiC<~R;?ntBtM~gmh84(6eR?Br+X#nb<4hUT0x&ElF6be1)Ga;6ig9JR@p31 z>{UBeLInR`59EmiW{2V0f$sz|0zeVSr*8F84Rl}ew*aUAgKfxAxN6P z2#X)t$Yol^DKW9Lii|8BOe!kz=Oi^o-PI_Oab-d~Gc=3iZG1`CgC?K+*JfPd4i*rl zV_ai2mT(RqP)*gVQru^}(nznaM`_K3iQFU+tPKb8%1wLUNrQd0HfolWC~NXh+RwrS z5K|p54&n+P(t**Vkt-F0_@>OnGjx0jw5~zbmKppyraFVoD2a1B1S-BTbd~H%VHHk+ zOdDJ)Uh=NV3b+Q%9e5Y`Nz$Vg#UPp?c%T`-*K(!N z4R2vw=56znNrtU23w&dbS862<>1LzW(j8ef2PF6ao zB79poQC9@_J?f$uWXTIr>{IdwecEHEliGLvAVOc*!siMswsp@u7%iWbQK0qHWw}(- z0!&(534;i1vT<^j!j9;DWR8f@9sVRiJrhqHfS}?Srq%oGXVOxst#T7pKg64#G~u)x zr5W9A%7!j3s!c_i#S(1g`tfz|UwsT*T70L{#;O!NYGC&y*hM^lC*es5^QkJV4wp{o z^Kv1OUcg+YpC){ItkaJ%Qi4V)^ZynlBm#z0UXD?XKS$9acwWrX=yn`l$Agb`kARA2 z8-*~1?vN&rRJ^SQz?B@MNmIe)$!5AoaHjNm1zE2~%T(#+VtR-}zV!*sj{MgI0(#$w zRjBG5yERCp0%$tRW9YxLx1fzGC#K9)xSx(6^7%yk73xE*(d=6m0a062eax%X;dWs5 z=ca<%R=$C#Pu{W0Ju)QP{Y7z=4>!@Bh?R<9txUzF-AqePL-`U#g4)IRPXFKVzebPX zBwW3o^`BKt3ClvPWf0!IQ6`#826&zmy6R+6SobGH1~9`?b4h&9(-&ztEpE&wv0qN^Ud7S9a*&ys%-iWJ*zh{!fGV1osTGq~>w~v?*B38-YF4B9` z(hgnEcp}qY?k3n{#Z3`O50O93)2ABX0I=Thin0OgphA}PQ*MiQspPPFObxV3rjXdh z7Q&a9jH|RI34T$QSYgbU@6i2b*#9$Wcl@0ZE1}Xq1IgrNbgumyhiy#tjj7Wc$~_iU zsg8d-62k#me<3kwxT!|`?-___=FTSUrkqFN+efr%O(-YYGYZwE)Pz%a}r@`UF4YQCoVP>c%jif!-0g`CD&_S zUc~lwvc-E;8J8@lr z4b|mjb-dmG(daKT`)Je4PLB{;9=n9n)z`OG=i_Q87Ug5>8O1{nw74hNld$;NuEMs_6CJeL8T@nzWZe@l~wD%*$8z9VsOr zHEDsi%&X{Zh&NoTLHUn7a@#a9zibJ%hA-mV>#ZE%1D13C0o{k~l-UClzsEPLBF{TB zp?@lUprjPDT2xhKMG;jfi04;(5zx1S>uSL}=0mplIJ)*WQ3`s2ddx5XvCc#0D^^z0 zv^QZ#uL1%s)^69=Nq(id-B(2&-Fr5n?di}D?sQqc>h(qrA{5oSN2iw;GBa7I!C7jv)n zZttzoB895#!7o6}3j^`{n*<@r-N{2184%*$wy`(PIdV+?(} zdRJ|A4fceM;c78?;ZW}Kb$~}JfcbIJdj)~*8NT)*$w^iRUzi^*m!VhWRy)!O9E6Aq zxGA*2_9I>M1-Q_!7B?RJap%e2_~5K1BE{U#5GMe^4jlr@1XJBw;-5(im1s(Mmx|S{ zOX;tp7^=!WO2Z_*9Ck(g#u9NTBouOl{vV=3^o+6avxNyWr*oaG&M1m>WNT`3jY8YE zQMEp~=%R21_i!$JxzO9Vkw8%oGCMBdxNG(?2V&S#?%ws z3cVT7y~Fw%M2u@_f*zfSX{d|%9SQW!%VklE`b*}&T+=%jhI>gq?mE{`cFs)5T;7ww zy_(Nun^2n4&1R&|a#~*6@yt?*;q_D1Aq_+1?}Lq(9y91|t7;LstZ2s|w8h-s=Hi_; zU<|M0)GM>fv9Uj{1&N)#&4{`+xy{t4%6LqegVp@6BNV|vV(bW|x$OJn zx2&A1ZsOw+`IAVPdixqA7AqFh6gy)y@HO_G~idU2c36j}X4_SPNO+Wcb zt(;h}2oS+7wfI!!Zog z6#fiFoW+A>q)Tx2UxadBK zQ4nzuLmP#Bdv*5MVjX)Sj`=2diy8Bx5ru;xbMqb+r4AT+QT-n1x4L8^8yW8_FI;i~ zVhYtN8NGM3J4Ex9penuY6k)mdlwke=OUGK;o=k5I)?O`HViG5Mz}9?cZ;xHual^vp z1Ij3BHsj?FNs6)lQS#&e(7~m%{mFo@36HQyiMEIOGMw&eM_ejb5t4TAAhAz@l*`!a zzX%dIyr@Z>FsajzTpJXdqq%1~lI0uX-W}u?B`1|WZZNPn!l2cb-QIyT%P2mikBjd% zjQqhG(uT)-l#DiQcbe=mR{4Ky38_H;Z#zgIfe`B5WfNueREIXusQxI0R2 zpDqE?Q;3MF*y96I%q7Va^aaYIF@32VMHCh^FmFA%P`AKXV4y)Lct5I0dh3B_)(S*| zXC)xzB#i^Sk5&p5EiZ7kCd9xpaWnez&p5t^mmP?|mC|bjny|}fXDISBm}#FKY{#ts z2SKs^#r0+2)Tff1#M6Pflj}e9mSH2r>IC*H!#BCO{%yhNW>Y3l$o1Dxct%IwBD%;Y zC5o5#F=i!~DcvNWUGT7Msb@_9EmseH@ezxxOJ5FT&UKi1-S&{IQ0h6!-b(RqC>`i#hfsTg3*CKZ47;q*x ztWWfLCKOT6s;|{)M_r3n4RD&+b-DMNmpnT2-n~ON?D42ON`XcSye7pUi9TB=RS6;! z(}}hW-KW522YRyPt}ID90xZ^;B-cQWt!3Vs1Fe#sa2r8(IFockv4ci?bCP>@vB?Ks zEUkC~zr#fF9MT8~=)@G+;>gU*8;?WwF}%UXJw;_8x=85p;o0n|%r^ z${zn?vS<8lNYM46%*}H)0}^x&Br{MJr-*2?2scO&4|!-#NZ*5@ z=Cxw^^Pc5x-Rl?5mH~L zUH;D8NF_}G6|IxP#LFS-Nn`gF#S_5QxjhelXO=e2)1?MG7VPTHxSb~S<qBW%w^+I(&gw+XGxbsy?ueejcA|$cWM#xnlF@U{m&ZT_Tu^PVWYX%bnZI zIRUIsAxP@g#t5N`zBKCd8Ot z^~8Fq(@mHcQ-;0z$-aqT3CmiGL3}Q1abp?iMnld=I1}1|w^|bOEfEMj&O8untw-CE zKFXUDiaB#7D%9Xu|BqtFWEv#*|6*fopv*5?1I$4xkOXs1$TIp=ksroDyz(HP_I3a7 zaRxLgLcgFg2gQ=iLoQB3kO`;VVTwsu7mtkG^rxJ@gW3wu$3xk0P?Ni-UqP#EnW$Oq zZQ!nB`*81)@oogyYlF~=r`UJ~Rv{^O7Z8KjO4x83r*PS~<2~s!uBO^|4hV55B(q`f z}2rGM4Gyk5Fek^a{e?z2W&K3=h4jQ zA}_WZC4+GppzryTZe7f>yV~R>gb_F3tSZyg3RDmGwq)M#;c?cBMIw@ige&hfhcQ)x z&_l{`%j`;sXA_F!2|Hz&ceq$d+>*`eWIbQ%5`>}h1mc`l>hA*77CXuRXx-yt><0sd zr3HG_`7$ahwc14g8|c$pZ~_Xz^U_RAc0UYEjGwC~thYg4A@Oa-8C!Aq&vQdi;P+JV z68WAK9$vpTmzm2QMq8?vom)N_g5BJ{y6h;@%ssWol={L7DczvVMfivqYGA_sv;%C| zXLHJqJ6sK*k_&jKyN3XM?T}IX=eaTwE^K+KH|JxfVd;Tf$jelqHof*w$~n zWb9ne30N(|toN$*@Q zxYxI_8osi>aL%L~0hr-q3U>Vqgu-rG^RPfp6)(pf&Uq_rU)qiTBsS%%j0jxg7DTHI~SUdDV=nsx+xxIg_h5s2l z9q{MSnu6}lf#{vysZ*7?09!EpvhntEdf0}|dG(SqAJsdTp5uutH|Zz)FIn@)L;kwZ zKEI-IR`%lV(=kFCdJ)?oYz5^N6*Y$4XE{yX(gpuI@ZG&I2xuc7f?{T<4lN#OUV?!7 zBjaUx^He=2p-^Gc$obzFl*Twfo0@xj*xzpT8SX2k-bOIy)S=Tj0ovxg2SS8%u)i7u zGFn9v4u)QB*L)TNqDZIis|m}`aEiCJ_W2eo&xGAg2PZH)aiRzsCBeGAgwcP^br+j- zL^GRF{i%o#n=Z2{#t=N8M?LZ-rp2vXHOL+Tq;PlfuO49bY?GnKj!UDWO1be7b1tOr zMt=RSm>MUy9MFfeO4)Li8Ll7|Ip|geHE5`HdKlEx$8$NB(@!}2waf=zi`Lft=vh2u@ob$*&2 zQpjM}myiRuX9pB6!is>8@gu6kf$z^dF}D28Fw)6>@v90mAo=E+if&^R+5I28dKPq# z-pT@EBf}My&?5R)^16oDLmKtL4)&ro8Ezrxj=RZfn9RPqw|84~$X7%+L)ly*FZvIc zk91rCKK{M(uZ<{xq6%qW_JIaDm*>^HVCc60bhy-R3X%vmE;=f^>BRo@gRR^aoL_2- z>cV2(?yoZ&+v5`jTT+pQ`>Hhy)^A)EME30(1E3yck0KPwomb;d>rOr0zlwG)IL`qi zpHKs+r<{oyl5q2_8zzD}JX%Wb8vp@G%*MO!09dG(%kx1^@iUs(-OyoF1))A@WRSL% zlgzU)5u^Vy3I!JfsM&kA+h+NcV*O*o0t?vjH#yLJ(^c*+&Rt^~0kRfFN|1}C-HFYnXh_+*!1b%0 z|KhsMIrel=r7t-d@;6G+h`FUNa3d)CzF#<_0%Mwccw7gPQ8}b9j~c8iyAVBOmXoCuJqZ-?$ z1ChL$kbsQj^+0C#cZqA~!G0ej<-58_FDGk0%Q+8H^nzw#US1qO+HKgMNA71`NuHRE z!-b0wdWe5;px>XPIh$!1H9$$}Jfs6#xZU>{j_tzpiMX-&&8=J@;p5cOwl#g1abyO8 zG7B2=!lq0<0e!zVz|`7SQBkpmqt!VAa6#KmjSY$ceQ;ad`{+0s4Dm~+15YXY`pjNb zA=ZDT&SrXnx&&!j@-}|-zj}PaM#zuN><=l*j6m@M?%0}S%D6fw#qudlt&-WM?Rcy5 z7Q9W%#0X_4>QsNzKS?V$jLAtm6Cb1(zN@oM@}@hOpcb1qj1QebEk zQ*rb3f8J4r6erPcwE??tn8Qmc62umlWk>wEB<-KIqoj5H9eaKdW8O#msCiJ)c*0o>N$EHbKxxb^Ag7*}gVmN@#j;j^7Hq1!4oa zEwD;nxAc?{b}3o1-tB93^5W#qquJQCRucXU|}dna3&3hGQIg+ed3Qk zw{5E6vWfLtkQvbV0@i5+l_2KB)6QwI8GLgYFTDj&=BK&Mz+N_BDsw9Ev@GpS>x3Dr z4c8sGb_5y%S#fmrEw4MJnS4GRvJyz6jJ^N+;sn9VA5rv$E&PlCm5$J#8f@;C?<;>^J5aaWFeE7-NtXbuD$J86K|0;rH)B=M$ zbBYi8h+8kc(|}DO98LWT!*~aY_bFYN{f};HCAT{LH&G(bf(A{J#r8a&2Xi6Di-}j% zPKZIAnvp&L&1S_v4oX1684!dZ@Z@p}83t)F*2ON|1a*rV=+zPr1qD>wqeiSMC?(?+ zVcynl-DdCB^L@xTDdLkk0u9M*N-1~u_S+T#tj6}wgL+@U1#W^7sO%2^{|1% zwBZM?xucYjf3-4N<8iNifI25!Pn z5&ygr%z_#J17hnLIaMYjT)n{vf|?qg`D82GOzr9PH+Q~I6HK>BY4T1-xAmWi1#IBl zE>{v*qUqpz1O!DYIquT;`@4Iausu00c|6EL&>-V;J8JRMq|czQI6$Cv9Y`A&i>lI$ z=-$g=RV<<|q{tC1i(j&yt#VTy#spUvzE~-OLfoILBzVm?yrVHcIkZzUJPHIsJdFf8 zuEVidr4zw}N@Ke2j|)mk|BJ4Omo10)7LBh!I;RJ{qORHl{;S7l2$T0wHpPC?BkIfSZC_rL1=e{+x zO+I%#Z^FBF&5a92$A#9>j6A*+a!`%A5T$gurcuE$GTrG&3(>7FH_p91B727Q_Q;vn|!1&)obO40=2efsG`rT0NFo6o-<7 zu21J&f0!`uuh$b6V4{mSUhRSh3f@a;25C#XYuy^KP!cm)8{%9qwI64Bo=9baNwh+1 z1HVFnwK`?k2=OOOV((P34}cKBR`&cO9Kz?`pC~iIhi56)sSQ4B;#6QHBM_X9k4$t@B+i+^Obtt<()&H(&*DNJq;1S#Ek##sZb1Hf%-uP)pC}UixhqH^y3BWG-wI zZ@j-!dIf~v)0ALvgcHuxI1rQ_%cyGgn3oAZ&y2LWd4rMZ1;nw!P0*k>5CW{oroz1<$ z^7y8wUQ9T~sdf;UlyjKj(p7C?a_rJjLnlK)7VkP}g69RLfJySnE6!)Z1D9`)=*kuk zMWwog2w4Y5t4Ll~`>WJEFKaARHJQQTc9& z70rehn>;Q1C?VkGtx&vxJ7(p~!v&t}wl+Q{jM?9m5DbK8=_oT64#h$!Bs@vt{C$fQ zACbib-^X}tJbA5IHMc#~(Yi6}>h6RI#%k#Db0Rgl>qkW!YS2aj2kjbamaxZb-j`#V zsX)r@sFa2X)UMuV^8(c_7<#IQ5(vn%-R1$`1<873Xs$8yvR5w%**(ue;gEk(oyAPj zsSY%wF;2&9@8Nkx%k_tdaAp@Is^JnIfh%spXEtjxV)}8ryXPqa&9n0uHXg zc!h#+bvK^MxX)0GA+UZ$RmNomfT;r14AsvmN^|8OUARq0Fn<`fu(!`u8V+|=z27{M zQ<z0 z((-Q116X`oZLWq55*q1|9P42kB{h>T`(YSXjs~FN4ljOFm^W*9@Jjn2HWvZY+rka2 zEZw&oxM(V!v%yY^@V%daG4toVB_rg{LVX(87pw_E_J*ZV#6iBu@rue5%{h9H+>}nCWj~TL-^I%%rRWH}H%V@MhTd%PBIVDGIugQ%zdP4gxvbU&| z4UGELD@1^ce9)H8Z}W?Q!H`2>A4dFN9BG^5%*FD8Lmy|UU3n-;J}|8vSZ=s&4LrLz zNpmW=tX+tUcIj7J_pYmRSnldJ8*+rP?~df%Qw*XXX#Za+DW5dsZF~tCV7idW7p0P( zr#fAo!OAe;e}c4Su(zrYdt}aP4L2w!ga$j`q*A58?-N+d^(*zj784F>R-+1T7FAy1 z1ZnwEw}+u4qyg68{#e*U%Rs>z4GRjWb_PH+(l zJTdWSVM<2G#6gua7q1%4f`oEQck^Wbsnei5HA{Ecz-#C0OgB^$zf>*eJR3eaxz8gr zE9ocHNGo*1Gy=i214F{eaz7n-TSuMjaM5i#8qmu$j7xM~dQYtVSm&9OM(Y)2putpJ zpG>rFrdUcQ`V=icD-Ua9%$|!P@)OnKQb^0@(xhfTug#i!y_UndHk|Sqp#qfcl1{tY z?Sd8cvn2euQXfCwe67o`yE~B%dHQa#Y6h?3A}lYop@VMY20=55A5E(S_iRj-+$eMu zU+HEr7{D6(h|qce@Wo4xYa1eEJo>M?&0R4v18U9;==UJn=Yeb64#8o)e|skz3o;s@ zK(iA>Lv{GjmshUmCWYsy#@q8B`OFT1~uarQ)e^sP!5-k~=Rko52UW)ga>E5`(tuI*c&8r%Ts~NF>A-s*5 zqp^V#q+`q@I{i{mLO=;+F22cj#_)y8>0y74CTuFGgF$@s%atzgz^$M^0o~vgKgGKO z)yq6@x`!CiDOe(VV{x2!ogM=yvNKHqSn;4+DoIXHqPAMtf-le}DZwjUVp2#RBT?OQ zT~q(O_}m~45OYUc$e(Nu>Wc={+!7ved8wz{Uoa*a`J>nsNZ1~ih6P!5X^sx z)cNk;K5GCY?5JDH{2RqK!H3%&&H{W98eJnb7eUeKJe7U4M6dW9L5gjQr zCLUuI&hE8{?_kVpxEI4<#psN{{(?K^$_!Ugg3KuR-qJ(58}D4;f@s-yoVM4b@X`sn z59jgk$cCTDJls6`p)kFx8L8C_bAHgDQw_}KSR8q8UB66{ofu7p_AZd8^hTziDN$D? zGG{wBf8mhwr>kwP2d0>P8kY^iFZ_gLhg;m((>sjOhsOEr#+5UQE3z42D(kEL4pR%81F)eYI2k~bXXaRqz2Z8jp0YT0**`{rnb zTRoqwTZOdM#pG7DD#~|7i>7u<>pvi~Qb4JVb;n{EhIhkqT1!Y-V@A>rN>2)7(@^N+ z_%xV~(;4qKs#iU(oB!h<>}Khtj9zw`Pyl#YsuUStcU zuhWBRNO@7QEnFY8TR%)^G=NaFChL(eb{iS>88{&T%~$X=-5^cu&Msi$BsJzFI+6bg zn--lkkm&I+rF4YxiwWMWN08MB#cI1PW8upujM=- zM7|9eFywNc47!okKizyz13Ra%S&+YuBP)%c12v;z+6!BSDmz{v_n7th2-)xG@#>4p zRuJcqywalqGAj~w@@=Ss(>|AVZ%ir9h#`M(JEfprDC@B-D_=OukWWT2erV;NOF5pv z;VD}(LuBQV5kGevm@*Od>>s5(Z{c$o-RsDRpC0j8zbiy=#*!Xkg0c1yur3Ep^376^ zBSP$dXxZ2xs}!$q-KQ5#7w7Cy2YL=w z22MR1cjZaqU0$G}UW-j0;#qR|jJg(-Cn#Ns4kfqICJtY(c5rRwBjSQAWaG#n>Vknf zd2O1Ms~>Hi_4jM7$Xa|x1f-P9SmPqT1R~Jnez?>KlXIWJ*}B;rk)M z1-u1S-%-i%nWwaYgUj5i?{9IuJ2M>MtuY{)51}X}Wj2oWZRwZb{8?InIo0zzarsT$ z`HKaV4Fje7!6~m;c6PZPfwgki^=Mc*9(X^d(2uA5jKD3Wr3=~L8j%+QDv%YS$sXrF zllQQSp;2S5gZ*Fmngg6mZT(@Q2Ji^y&_>AVEX<6gsDi9-Jr#1IES)J!sFJqiKg&0Z zl2LS$w=YIele>hgZgPfhwL3&}9ErPk1WEEtfd0Fha(cV)7KTKBQaMQLOAOv~*EqV| zY|7MypT>?n$Ll=E68g@3vC#(H6CM{J+fc?iYA9XPw3XT9KRYw{n|{^3*C&4Lg+*S7 zGst@3{jTe@LtInb?{@sLZq)oVyO@|Ubh9$ZUD#ei<3J8?;A=Jq_`39xES;=cp;-VL z&jh0+F#plc$8xP?P!i{69U`AFO~h(K5h9vN+izF4ps_X$S=-H76-$vzFaidf+856C zZH1}QZrl>`DOv8Wq<70+QEN5`dq3!usC?N;Sp8(d$Z#sr{fO&eMT&JBvKH#JVc2mB z-r`k@lAS$fU3plzUP=)hZs|{D(_k_10bnJ->e|`*6DDW?cKrGBEpfCZWW!KS70@B& zV?hF*l^FcXpCA2nECdKGL@Cju=hgF7?Wb zp#v|RSxBx$D3hy6yH`I#0MjSADcJU}WK&9!De2DdaJ4F$D)MOs*K3v>xh(;UJDO_9 zfi(S~e$eyVwhAF1R^`K#SZt8Y zjucWLJqA(a2Ye7M~1No1}?1^er0O~ z=JR(4$pnXhMIxio+W5A8q|b@OOu+frd}&$Sd^X9?hVzs z12ma|*N8nO~!3sJKqmi!`1o zuFaS&ATKAj5&8K%*&PyKr*&<3GzjE^^T>2Ht=b_=!npZJjg{7IJje-u0TA&UIw7&mz)YRW(Ov=;n}BjgBnS=$a2#k412qvQ~yj^(J zM~z%o)P#kwQ#o!XixtM#WA%b~b;*S;a8`VwDgmSld8 z6K%bTULok%pkigbtB*Vq_RG02&%>2i8w!kZ!m1VtwRqVn#Y7@phtmC@X}H1LwL(fw z&#tU+hKqO54r@URSaX<-&@aenVq;1I0ITJWd*|5);49BX*N*NzpjD_vdqBtzf@NtR zyZO`46&j3~6HC!^b8O7BrOg9Ny0-#Zf?h&i6YIq=qim>lSR2;@WUbmSm=8Ak8mwVe zC#*=Q7qy=yaVzPsISnp+QJnlDyA54&IX7`xfvhaQdo%;S8FJ(mY&sT^(EiK34AM~=jcu0o|47m2ue zf^dqLhq|3Wp)q-e&McpEHU67yRzvunRF`TIiL5S5I|?>=3+)vTJpv^%yDxk*AY)NweSnB`YblOH>BAPf z(pmzU4Z0#E3l%lm)q|N#5QCsGH|h>44OmE9GwrBPu-cn&ig|JsY^eG)VzJ09Efljb z)nuDk+;CntTZehkCdo+~6P?k*{@ocSS$ae)S76)3GOL|~8n<$=mi|JB-woBsTfPmhl0G2dsi*YuoqbZQ^&sKy|Cpl$SSOWe!< zXr>pm$5Ee?mTGkA3*SA$oZa)jfxytVrTubkL!fTVuI^TC3>WGqt6qEo)~~=$JXbps zCffUcV&~kO>H+baMh>^COIinaSfO|?&3NHmMu9QaOk{&0c(+Y1AW>6dJsfHtLTbKj zjbEg}&j1Z8?#DorXWvl&`e8;dG)XKP@=-G)Pj=NrHL!@+RisHOWUh9^QX|Z+KtgB* zRXNYo3zAVhD1nnCO(snxGBcAOE&!Plp(T;bmDhGyfW=CL9NoY_F$;q17bzeZz66%? zJ6-@vp826SF^@bcEf4fH!BC;mO+#nWd1Q2ep8dD2Z^B|%lzu+&cJ?uw&FtmLX{(0m zj@Z~T7jCHdq7*0&u$bzFi!;B~_s6I}?QG@!*a;zqTYxKlZ99`s-90SvE!-m{GIZ+G z7Aik(LcQwHMwY2X9$A1op%SoEcU9kZMlEZ}D=d`YfyPX}ECp#zW$YRe1;D z9&r;z(u*5N3TZ7EHw-)PgSkSqj=;H4#H2)2!$I>P^Fig)boP8Ssk)5t+WaIWVvub? z$ZV1Nn0X5`9L``SMBtd3$8W$^;seyNSX6FNW&2ZY?D1syyj`6WpDpX+Z`}6tTb~Lt zH|o|UB?h@p3LqN{jYJ@oxl;r-EfSzY{~A{~ke?4r!4Mo;e87p7u9%MIAqnWSeFDbD zVk$u#(>SUSk|_^yREf$MBky1wfP&%YNo5^+B?<7GHK;RLQbWUUUIL41ZJqTDl~5}J zxXH=ch3E!!eH&I|OJLi(Y+`B)G=d$P$CT6V8^@Lh7`Z;D>YvT-dPd&~kDcMW=PR_O zjq9y{s4#v_*HZP1X}<04)nld_Y@gxE|gW2H6JE`mvQfQc&*(YVm+t@BqC;uXv+* z!o9pZ;`GTf=8XN?Ja0Qxhabn?ny5OVNQ>)1O&dldbAdLT2b}F9u=Nx zHbc^yOch6C^y)wl`DOGaJagDKc3Q2+EVWqi3;ib?f>IeF9Ze-@-(fvNu^04*%bK0B^#>}VCT zSui70l>g66sD*Vi!mbX}EB)#n#Tg-JghGPL69kw)*ttC?S`-@Yah`W>XEV3$Cfn24 zO6F*TV7=(gkWBQ-M?)7P`W)pZ^&cF!U=SwT*Xy7c|Jx^O~R8{pyeMknRU!;04=-e(LZZ|Ns**eHQeXR)^M3`V^?5BL; zT@?|Q!Z-_YiZ0ueo(-}J)fXuVIk@B|pL(2r{P&YN@v@F(u#$4tNnkaz!Zgh=gpX|P z*X5`nA7gE`D5*y{0)?AEiIiF)&%e1<=j5MKT3eV+P+&UrbvKvXko;bORP_^p8a*rpnt{TQbi@9Zdl8c-+b+MPwagXFv<(YdP3USe#YN+ z0j9^nT?maHn=N2e+&l|5lliK2AP zP9!69Z$@NC&L*Q5pOy&WPTDTV%cSg%L_Hfbp1u7Heuyv$Efdm%^G;XIM#{j_Ge}oy zn?+S+`1^F76~?l?C$@Q_P2E7lKzuC}NOQ-sUi#i1eLM0^Ag#amg@;iid2hWUwdUj3 zvyJXQiRAZx7qE9$%pQE*tFeJ!TU@l2HQB;9WxLs^Tp}Ju%nw=tuvTeJi~(hwZAFLV zR1&3|2H}mbikwefaO|ARa@NBJkVALncYysE!Y-e(fQ0cx6CDr`n6++w@s$;ye^*eZ z{nu$YW;-{TkZ)IdEh;{UudM*C`6$pjQg2=PVREIT?FZPnLG@QjcO{n!@(wBld=$^T zx#3d?fnsvNXj{&;Ve$EpEeBoWK(6im9Cc;Svxxgrn=4Mue{2QROdgf=faAw#u9p|8 zg8Vt#$+I)b|e}CKO*(TKtK- zAQsxX+uWOSbWE#7NP|SIo~hLwcxfWxfMac_Y%O(yoN0vlt+8E;CbG5oDjm5yI4nj~ zxeQIN@3@*UdwZwUE3{VK3z^yN2CVoNUaMRRz@;hfoldCohrWr_*!KDB|v)-ExyFBO?xrt?(#uI)zWFjlJp z7ieD0&trjaG`y)>d8-J5`FBF5IA9VB{^DvYeiAG`?< z4?F(knD0?ujzRCIX|0R;@}R5H$K?jIYlz&ucK6 z0v`2;oh&%we61voKWw57BA3Yxa=W4SzA;+-gZs3kK#uOD1wF$r-Nkvq39Z2&^m~y2 zCT>QL&X;NF&M?A-t;mT&u|!gft71np&rX9j!*&;(p}mDrgctC*FWVqQ?#ZCP7e>aR zJIHu3t6GPFS*1K?fR+@~%L4u7yPKzKw`6+IOV;;wp6hpmW}n$nAgO`;UdAowU3bUCYGlL@u;UQ_GXz{hYShdCr(_7ea5^1HS-?8)JhZRVw%g2v rDj>I!$S42+Ks9H>00Gb834r#k0RR91wC+24o8wVH0{{R300CKAKs?{m literal 0 HcmV?d00001 diff --git a/man/FDR.Rd b/man/FDR.Rd new file mode 100755 index 0000000..4b20397 --- /dev/null +++ b/man/FDR.Rd @@ -0,0 +1,33 @@ +\name{FDR} +\alias{FDR} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +Identification of enriched regions by controlling a given FDR level +} +\description{ +Identify enriched regions by controlling false discovery rate at a specified level. +} +\usage{ +FDR(prob0, cr = 0.05) +} +\arguments{ + \item{prob0}{ +A numeric vector. The probability of the null hypothesis being true (i.e. a region not-enriched). +} + \item{cr}{ +A numeric variable. The level of FDR for identifying the enriched regions. +} +} +\value{ +\item{X}{The index of enriched regions (1: enriched, 0: not-enriched).} +} +\references{ +Bao et al. (2013). Accounting for immunoprecipitation efficiencies in the statistical analysis of ChIP-seq data. To appear in BMC Bioinformatics. +} +\author{ +Yanchun Bao and Veronica Vinciotti +} +\seealso{ +See also \code{\link{mix}, \link{mix.joint}, \link{enrich.mix}} +} +\keyword{ Statistics} diff --git a/man/IPE.Rd b/man/IPE.Rd new file mode 100755 index 0000000..8468106 --- /dev/null +++ b/man/IPE.Rd @@ -0,0 +1,33 @@ +\name{IPE} +\alias{IPE} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ Estimating the ImmunoPrecipitation (IP) efficiency of a ChIP-seq experiment. +} +\description{ +Calculate the IP efficiency of an experiment by using the mixture model parameters. +} +\usage{ +IPE(para, method = NULL) +} +\arguments{ + \item{para}{ +A numeric vector. The parameters estimated by the mixture model. +} + \item{method}{ +A charater variable. Can be "poisson" or "NB" and it refers to the densities of the mixture distribution. +} +} +\value{ +IPE estimated value. +} +\references{ +Bao et al. (2013). Accounting for immunoprecipitation efficiencies in the statistical analysis of ChIP-seq data. To appear in BMC Bioinformatics. +} +\author{ +Yanchun Bao and Veronica Vinciotti +} +\seealso{ +See also \code{\link{mix}, \link{mix.joint},\link{enrich.mix}} +} +\keyword{Statistics} + diff --git a/man/enRich-package.Rd b/man/enRich-package.Rd new file mode 100755 index 0000000..351ef7c --- /dev/null +++ b/man/enRich-package.Rd @@ -0,0 +1,36 @@ +\name{enRich-package} +\alias{enRich-package} +\alias{enRich} +\docType{package} +\title{ +An R package for analysis of multiple ChIP-seq data. +} +\description{ +enRich is an R package that performs a joint statistical modelling of ChIP-seq data, accounting for technical/biological replicates, multiple conditions and +the different IP efficiencies of individual experiments. +} +\details{ +\tabular{ll}{ +Package: \tab enRich\cr +Type: \tab Package\cr +Version: \tab 1.0\cr +Date: \tab 2013-05-22\cr +Depends: \tab R(>= 2.14), parallel\cr +License: \tab GPL (>=2)\cr +LazyLoad: \tab yes\cr +} +mainfunctions: mix, mix.joint, enrich.mix +} +\author{ +Yanchun Bao \email{yanchun.bao@brunel.ac.uk} and +\cr Veronica Vinciotti \email{veronica.vinciotti@brunel.ac.uk} + +Maintainer: Yanchun Bao \email{yanchun.bao@brunel.ac.uk} and +\cr Veronica Vinciotti \email{veronica.vinciotti@brunel.ac.uk} +} +\references{ +Bao et al. (2013). Accounting for immunoprecipitation efficiencies in the statistical analysis of ChIP-seq data. To appear in BMC Bioinformatics. +} +\keyword{ package} + + diff --git a/man/enrich.mix.Rd b/man/enrich.mix.Rd new file mode 100755 index 0000000..102482b --- /dev/null +++ b/man/enrich.mix.Rd @@ -0,0 +1,114 @@ +\name{enrich.mix} +\alias{enrich.mix} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{Detection of enriched and differentially bound regions for fitting results of \code{mix} and \code{mix.joint}.} +\description{ +\code{enrich.mix} returns the enriched regions or differentially bound regions using the \code{mix} or the \code{mix.joint} model, by controlling a given FDR level. +\code{enrich.mix} also calculates the IP efficiencies for each experiment. +} +\usage{ +enrich.mix(object, analysis = "joint", differential = FALSE, + diff.vec = NULL, cr = 0.05, crdiff = 0.05) +} +%- maybe also 'usage' for other objects documented here. +\arguments{ + \item{object}{ +The output of \code{mix} if analysis="separate" or of \code{mix.joint} if analysis="joint". +} + \item{analysis}{ +A character variable. Default value is "joint" and the object should be the output of \code{mix.joint}. If analysis="separate", then the object should be the output of \code{mix}. +} + \item{differential}{ +A logical variable. If TRUE, the function will compute the posterior probability of differential binding of any two experiments or two conditions, as specified by \code{diff.vec}. Default value is FALSE. +} + \item{diff.vec}{ +A numeric vector. If differential = TRUE, diff.vec must be given to show which experiments are to be used in the comparison. At the moment, this is restricted to two conditions +(e.g. two proteins at the same time point), so the value for diff.vec should be only 0, 1, 2, where 0 indicates which experiments are not to be used in the analysis, +1 and 2 stand for conditions 1 and 2, respectively. diff.vec should be of the same length as the number of experiments in object. + +} + \item{cr}{ +A numeric variable. The level of FDR for identifying the enriched regions. +} + \item{crdiff}{ +A numeric variable. The level of FDR for identifying the differentially bound regions. +} +} +\value{ +\item{enrich}{The list of enriched regions for each condition at the chosen FDR. Note that there is only one list of enriched regions for replicates, if a joint model is used.} +\item{diffenrich1}{The list of regions bound only by condition 1.} +\item{diffenrich2}{The list of regions bound only by condition 2.} +\item{ppx1}{A n x p matrix of posterior probabilities of enrichment for each region and each condition. ppx0=1-ppx1.} +\item{X}{A n x p matrix of enrichment for each region and each condition, at the given FDR cutoff (1: enriched, 0: not-enriched).} +\item{diffprob1}{A n-dimensional vector of posterior probabilities of differential binding for the two conditions under study; diffprob0=1-diffprob1.} +\item{diffX1}{A n-dimensional index of regions bound only by condition 1 (0: not bound, 1: bound).} +\item{diffX2}{A n-dimensional index of regions bound only by condition 2.} +\item{IPE}{A p-dimensional vector of estimated IP efficiency values for each experiment.} +} +\references{ +Bao et al. (2013). Accounting for immunoprecipitation efficiencies in the statistical analysis of ChIP-seq data. To appear in BMC Bioinformatics. +} +\author{ +Yanchun Bao and Veronica Vinciotti +} +\seealso{ +See also \code{\link{mix}, \link{mix.joint}} +} +\examples{ +data(p300cbp.1000bp) +exp.label=c("CBPT0", "CBPT301", "CBPT302", "p300T0", + "p300T301", "p300T302", "WangCBP", "Wangp300") + +## Simple examples -- only two experiments and first 10000 observations +CBPT30=list() +CBPT30$region=p300cbp.1000bp$region[1:10000,] +CBPT30$count=p300cbp.1000bp$count[1:10000,2:3] +Poisfit.simple<-mix(CBPT30, method="Poisson", exp.label=exp.label[c(2,3)]) +enrich.mix.simple<-enrich.mix(Poisfit.simple, analysis="separate") + +\dontrun{ +##Separate analysis of single experiments using a Poisson latent mixture model for all 8 data sets +Poisfit.separate<-mix(p300cbp.1000bp, method="Poisson", exp.label=exp.label) + +##Enriched regions for all conditions and differentially bound +## regions between CBP and p300 at T0 using 5% FDR +enrich.mix.sep<-enrich.mix(Poisfit.separate, analysis="separate", + differential=TRUE, diff.vec=c(1,0,0,2,0,0,0,0)) + +## Joint analysis combining technical replicates +## (CBPT301,CBPT302 and p300T301,p300T302) +Poisfit.joint1<-mix.joint(p300cbp.1000bp, Poisfit.separate$parameters, method="Poisson", + rep.vec=c(1,2,2,3,4,4,5,6), p.vec=c(1,2,2,3,4,4,5,6), + exp.label=exp.label) + +##Enriched regions for all conditions and differentially bound +## regions between CBP and p300 at T30 using 5% FDR + +enrich.mix.j<-enrich.mix(Poisfit.joint1, differential=TRUE, + diff.vec=c(0,1,1,0,2,2,0,0)) + + +##Separate analysis of single experiments using a NB latent mixture model +NBfit.separate<-mix(p300cbp.1000bp, method="NB", exp.label=exp.label) + +##Enriched regions for all conditions and differentially bound +## regions between CBP and p300 at T0 using 5% FDR +NBenrich.mix.sep<-enrich.mix(NBfit.separate, analysis="separate", + differential=TRUE, diff.vec=c(1,0,0,2,0,0,0,0)) + +## Joint analysis combining technical replicates +## (CBPT301,CBPT302 and p300T301,p300T302) +NBfit.joint1<-mix.joint(p300cbp.1000bp, NBfit.separate$parameters, method="NB", + rep.vec=c(1,2,2,3,4,4,5,6), p.vec=c(1,2,2,3,4,4,5,6), + exp.label=exp.label) + +##Enriched regions for all conditions and differentially bound +## regions between CBP and p300 at T30 using 5% FDR + +NBenrich.mix.j<-enrich.mix(NBfit.joint1, differential=TRUE, + diff.vec=c(0,1,1,0,2,2,0,0))} +} +% Add one or more standard keywords, see file 'KEYWORDS' in the +% R documentation directory. +\keyword{ Statistics} + diff --git a/man/mix.Rd b/man/mix.Rd new file mode 100755 index 0000000..9c36fbf --- /dev/null +++ b/man/mix.Rd @@ -0,0 +1,83 @@ +\name{mix} +\alias{mix} +%\link{mix.joint}, \link{enrich} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +Fitting mixture of two densities, either Poisson or Negative Binomial, to ChIP-seq data. +} +\description{ +\code{mix} uses an EM algorithm to fit ChIP-seq count data by a latent mixture model with two components. One component is the signal density and the other is the background density. +\code{mix} can deal with more than one experiment at the same time. In this case, it fits individual models to each experiment. The output of this function can be used for further analysis by \code{mix.joint} or \code{enrich.mix}. +} +\usage{ +mix(data, method = NULL, initialpara=NULL, fixoffset=FALSE, fixk=3,krange=c(0:10), + exp.label=NULL, stopdiff=1e-04, parallel=TRUE) +} +%- maybe also 'usage' for other objects documented here. +\arguments{ + \item{data}{ +A list, whose first argument is a n x 3 matrix with information on the bins. The three columns should contain "Chromosome", "Start" and "Stop" information. +The second list contains the counts of ChIP-seq experiments. This is a n x p matrix, where n is the number of bins and p is the number of experiments. +Count data for at least one experiment should be given. +} + \item{method}{ +A character variable. Can be "Poisson" or "NB" and it refers to the densities of the mixture distribution. +} +\item{initialpara}{ +A numeric matrix or vector. The initial parameters given for EM algorithm. In form of c("p", "lambda_S", "lambda_B") if method="Poisson" or c("p", "mu_S", "phi_S", "mu_B", "phi_B") if method="NB". +Could be a matrix if initial values are the different for multiple experiments or a vector if initial values are the same. +If not given, then a default value of (0.1, 10, 1) or (0.1, 10, 1, 1, 1) for method="Poisson" or "NB" respectively. +} + \item{fixoffset}{ +A logical variable. If TRUE, the offset of the signal distribution is fixed by the user and is the same for all experiments. If FALSE, the offset is estimated empirically for each experiment. Default value is FALSE. +} + \item{fixk}{ +A numeric variable. The value of the offset, when fixoffset = TRUE. +} + \item{krange}{ +A numeric vector. The range of the offset, when fixoffset = FALSE. Default range is from 0 to 10. +} +\item{exp.label}{ +A charater vector, giving a label for each experiments. +%If exp.label=NULL, then each experiment will be represented by Experiment and the order of that Experiment in data. +} + \item{stopdiff}{ +A numeric variable. A prescribed small quantity for determining the convergence of the EM algorithm. Default value is 1e-04. +} +\item{parallel}{ +A logical variable. If TRUE, then the individual experiments will be processed in parallel, using the \code{clusterApplyLB} function in package \code{parallel}. Default value is TRUE. +} +} +\value{ +\item{data}{ The data provided as input.} +\item{parameters}{The parameters estimated by the mixture model. The parameters are (p, lambda_S, lambda_B, k) when method="Poisson" or (p, mu_S, phi_S, mu_B, phi_B, k) when method="NB". +p is the proportion of signal in the mixture model. For a Poisson mixture model, lambda_S and lambda_B represent the mean of the signal and mean of the background, respectively. +For a NB mixture model, mu_S and phi_S are the mean and overdispersion of the signal density, respectively, whereas mu_B and phi_B are the mean and overdispersion of the background density, respectively.} +\item{method}{The method used for the analysis} +} +\references{ +Bao et al. (2013). Accounting for immunoprecipitation efficiencies in the statistical analysis of ChIP-seq data. To appear in BMC Bioinformatics. +} +\author{ +Yanchun Bao and Veronica Vinciotti +} +\seealso{ +See also \code{\link{mix.joint}, \link{enrich.mix}} +} +\examples{ +data(p300cbp.1000bp) +exp.label=c("CBPT0", "CBPT301", "CBPT302", "p300T0", +"p300T301", "p300T302", "WangCBP", "Wangp300") +## Simple examples -- only two experiments and first 10000 observations +CBPT30=list() +CBPT30$region=p300cbp.1000bp$region[1:10000,] +CBPT30$count=p300cbp.1000bp$count[1:10000,2:3] +Poissonfit.simple<-mix(CBPT30, method="Poisson", exp.label=exp.label[c(2,3)]) + +\dontrun{ +##separate analysis of single experiments using a Poisson latent mixture model for all 8 data sets +Poisfit.separate<-mix(p300cbp.1000bp, method="Poisson", exp.label=exp.label)} +} +% Add one or more standard keywords, see file 'KEYWORDS' in the +% R documentation directory. +\keyword{ Model }% __ONLY ONE__ keyword per line diff --git a/man/mix.joint.Rd b/man/mix.joint.Rd new file mode 100755 index 0000000..a166999 --- /dev/null +++ b/man/mix.joint.Rd @@ -0,0 +1,106 @@ +\name{mix.joint} +\alias{mix.joint} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +Joint fitting of mixture of Poisson or NB densities to ChIP-seq experiments. +} +\description{ +\code{mix.joint} uses an EM algorithm to jointly fit ChIP-seq data for two or more experiments. +Technical replicates are accounted for in the model as well as individual ChIP efficiencies for each experiment. +Prior biological knowledge, such as the expectation of a similar number of binding profiles for the same protein +under two similar conditions, can also be included in the model to aid robustness in the detection of enriched and differentially bound regions. +The output of \code{mix.joint} can be further analysed by \code{enrich.mix}. +} +\usage{ +mix.joint(data, method = NULL, para.sep = NULL, rep.vec = NULL, + p.vec = NULL, exp.label = NULL, stopdiff = 1e-04) +} +%- maybe also 'usage' for other objects documented here. +\arguments{ + \item{data}{ + A list, whose first argument is a n x 3 matrix with information on the regions. The three columns should contain "Chromosome", "Start" and "Stop" information. +The second list contains the counts of ChIP-seq experiments. This is a n x p matrix, where n is the number of regions and p is the number of experiments. +Count data for at least one experiment should be given. +} + \item{method}{ +A character variable. Can be "Poisson" or "NB" and it refers to the densities of the mixture distribution. +} +\item{para.sep}{ +A p x q matrix, where p is the number of experiments and q is the number of parameters in the mixture model. +This is used as initial parameters for the joint modelling function. We recommend using the parameters of \code{mix}, as these are optimized for each experiment. +If there are no technical replicates, then the parameters of the mix function are automatically used for the mix.joint output. +} + \item{rep.vec}{ +A non-zero integer vector. The vector of replicate indices, of length equal to the number of experiments. Technical replicates share the same index, +e.g c(1,2,2,3,4,4,5,6) for 8 experiments where the 2nd and 3rd are two technical replicates and similarly the 5th and 6th. +} + \item{p.vec}{ +A non-zero integer vector. The vector of p indices, with p=P(X_s=1) for any region s. This vector is of length equal to the number of experiments. +Experiments with the same probability of enrichment share the same p index, such as technical replicates and/or proteins with +a similar number of binding sites, e.g. c(1,1,1,2,3,3,3,4) if the first three experiments have the same p and similarly the 5th, 6th and 7th experiments. +This allows to propertly account for the different IP efficiencies in the joint analysis. +At least one of rep.vec or p.vec should be given. For those experiments which do not share the same index (p.vec or rep.vec) with any other experiment, a single mixture model will be fitted. +} +\item{exp.label}{ +A charater vector, giving the labels for each experiment. +} + \item{stopdiff}{ +A numeric variable. A prescribed small quantity for determining the convergence of the EM algorithm. Default value is 1e-04. +} +} + +\value{ +\item{data}{ The data provided as input.} +\item{parameters}{The parameters estimated by the mixture model. The parameters are (p, lambda_S, lambda_B, k) when method="poisson" or (p, mu_S, phi_S, mu_B, phi_B, k) when method="NB". +p is the proportion of signal in the mixture model. For a Poisson mixture model, lambda_S and lambda_B represent the mean of the signal and mean of the background, respectively. +For a NB mixture model, mu_S and phi_S are the mean and overdispersion of the signal density, respectively, whereas mu_B and phi_B are the mean and overdispersion of the background density, respectively.} +\item{rep.vec}{The rep.vec used for the analysis} +\item{p.vec}{The p.vec used for the analysis} +\item{method}{The method used for the analysis} +} +\references{ +Bao et al. (2013). Accounting for immunoprecipitation efficiencies in the statistical analysis of ChIP-seq data. To appear in BMC Bioinformatics. +} +\author{ +Yanchun Bao and Veronica Vinciotti +} + +\seealso{ +See also \code{\link{mix}, \link{enrich.mix}} +} +\examples{ +data(p300cbp.1000bp) +exp.label=c("CBPT0", "CBPT301", "CBPT302", "p300T0", + "p300T301", "p300T302", "WangCBP", "Wangp300") +## Simple examples -- only two experiments and first 10000 observations +CBPT30=list() +CBPT30$region=p300cbp.1000bp$region[1:10000,] +CBPT30$count=p300cbp.1000bp$count[1:10000,2:3] +Poisfit.simple<-mix(CBPT30, method="Poisson", exp.label=exp.label[c(2,3)]) +## Joint analysis combining technical replicates +## (CBPT301,CBPT302) +Poisfit.joint<-mix.joint(CBPT30, Poisfit.simple$parameters, method="Poisson", + rep.vec=c(1,1), p.vec=c(1,1), exp.label=exp.label[c(2,3)]) + + +\dontrun{ +##separate analysis of single experiments using a Poisson latent mixture model for all 8 data sets +Poisfit.separate<-mix(p300cbp.1000bp, method="Poisson", exp.label=exp.label) + +## Joint analysis combining technical replicates +## (CBPT301,CBPT302 and p300T301,p300T302) +Poisfit.joint1<-mix.joint(p300cbp.1000bp, Poisfit.separate$parameters, method="Poisson", + rep.vec=c(1,2,2,3,4,4,5,6), p.vec=c(1,2,2,3,4,4,5,6), + exp.label=exp.label) +Poisfit.joint1$parameters + +## Joint analysis, assuming the same p for two different proteins +## at the same time point +Poisfit.joint2<-mix.joint(p300cbp.1000bp, Poisfit.separate$parameters, method="Poisson", + rep.vec=c(1,2,2,3,4,4,5,6), p.vec=c(1,2,2,1,2,2,5,5), exp.label=exp.label) +Poisfit.joint2$parameters +} +} +% Add one or more standard keywords, see file 'KEYWORDS' in the +% R documentation directory. +\keyword{ Model }% __ONLY ONE__ keyword per line diff --git a/man/p300cbp.1000bp.Rd b/man/p300cbp.1000bp.Rd new file mode 100755 index 0000000..92016cc --- /dev/null +++ b/man/p300cbp.1000bp.Rd @@ -0,0 +1,33 @@ +\name{p300cbp.1000bp} +\alias{p300cbp.1000bp} +\docType{data} +\title{Example Data} +\description{ +\code{p300cbp.1000bp} contains ChIP-seq counts in 1000bp length bins on chromosome 21 for 8 experiments. The names of the 8 experiments are CBPT0, CBPT301, CBPT302, p300T0, p300T301, p300T302, WangCBP, Wangp300. +The data contain two lists, first list is the region information which contains 3 columns: Chromosome, Start, Stop and the second list are the count. +} +\usage{data(p300cbp.1000bp)} +\format{ +List of 2:\cr + region:'data.frame', 33916 obs. of 3 variables, Chromosome, Start, Stop\cr + count: 'numeric', 33916 obs. of 8 variables, CBPT0, CBPT301, CBPT302, p300T0, p300T301, p300T302, WangCBP, Wangp300 +} + +\source{ +\describe{ +\item{}{The first 6 datasets, CBPT0, CBPT301, CBPT302, p300T0, p300T301, p300T302, are from the GEO database, accession number GSE21026.} +\item{}{The last 2 datasets, WangCBP, Wangp300, are from the GEO database, accession number GSE15735.} +} +} +\references{ +\describe{ +\item{}{Ramos et al. (2010) Genome-wide assessment of differential roles for p300 and CBP in transcription +regulation. Nucleic Acids Research, 38(16):5396-5408.} +\item{}{Wang et al. (2009) Genome-wide Mapping of HATs and +HDACs Reveals Distinct Functions in Active and Inactive Genes. Cell, 138:1019-1031.} +} +} +\examples{ +data(p300cbp.1000bp) +} +\keyword{datasets}