ctc/Changes0000644000175400017540000000205113556116167013655 0ustar00biocbuildbiocbuild18/12/2006 * add references to man pages. 09/11/2005 1.5.1 * new function hclust2treeview 12/07/2005 * a demo and a vignette file 17/06/2005 * example ctc.php for a web application 27/05/2005 * new function read.eisen 08/12/2004: 1.2.8 * minor changes on doc. 16/10/2003: 1.2.5 * Bug fixed for R CMD check. (Examples using Xcluster program cannot be executed). 05/09/2003: 1.2.4 * New release only for Windows. (Just 1.2.3 correctly compiled). 22/07/2003: 1.2.3 * bug fixed with option dec=',' for r2gtr, r2cdt, r2cluster * option colname="ACC" with r2cluster 06/02/2003: 1.2.2 * Major bug fixed on function r2cdt * 2 more parameters on function r2cdt * Bug fixed on function r2gtr 15/01/2003: 1.2.1 * Bug fixed on functions r2gtr and r2cluster * Add links on help files. 22/11/2002: 1.2 * 3 new functions: r2gtr, r2atr, r2cdt * Option dec='.' for functions r2cluster, xcluster2r. 12/11/2002: 1.1-1 * Option description=Boolean in r2xcluster and r2cluster * Fixed some minor bugs (_ remplaced by <- for R 1.6) ctc/DESCRIPTION0000644000175400017540000000126313556146046014073 0ustar00biocbuildbiocbuildPackage: ctc Version: 1.60.0 Date: 2005-11-16 Depends: amap Title: Cluster and Tree Conversion. Author: Antoine Lucas , Laurent Gautier biocViews: Microarray, Clustering, Classification, DataImport, Visualization Maintainer: Antoine Lucas Description: Tools for export and import classification trees and clusters to other programs License: GPL-2 URL: http://antoinelucas.free.fr/ctc git_url: https://git.bioconductor.org/packages/ctc git_branch: RELEASE_3_10 git_last_commit: 85b9683 git_last_commit_date: 2019-10-29 Date/Publication: 2019-10-29 NeedsCompilation: no Packaged: 2019-10-29 23:32:54 UTC; biocbuild ctc/NAMESPACE0000644000175400017540000000016113556116167013601 0ustar00biocbuildbiocbuild export(hc2Newick,hclust2treeview,r2cdt,r2atr,r2gtr,r2cluster,r2xcluster, read.eisen,xcluster,xcluster2r) ctc/R/0000755000175400017540000000000013556116167012565 5ustar00biocbuildbiocbuildctc/R/hc2Newick.R0000644000175400017540000000166413556116167014534 0ustar00biocbuildbiocbuildhc2Newick <- function(hc, flat=TRUE) { dist <- 0 if (is.null(hc$labels)) labels <- seq(along=hc$order) else labels <- hc$labels putparenthesis <- function(i) { ## recursive function ## i: index of row in hc$merge j <- hc$merge[i, 1] k <- hc$merge[i, 2] if (j < 0) { left <- labels[-j] if (k > 0) dist <- hc$height[i] - hc$height[k] else dist <- hc$height[i] } else { left <- putparenthesis(j) } if (k < 0) { right <- labels[-k] if (j > 0) dist <- hc$height[i] - hc$height[j] else dist <- hc$height[i] } else { right <- putparenthesis(k) } if (flat) return(paste("(", left, ":", dist/2, ",", right, ":", dist/2, ")", sep="")) else return(list(left=left, right=right, dist=dist)) } n <- putparenthesis(nrow(hc$merge)) if (flat) n <- paste(n, ";", sep="") return(n) } ctc/R/hclust2treeview.R0000644000175400017540000000147213556116167016053 0ustar00biocbuildbiocbuildhclust2treeview <- function(x,file="cluster.cdt",method = "euclidean", link = "complete",keep.hclust=FALSE) { if("amap" %in% .packages(all=TRUE)) { hr <- hcluster (x,method =method, link=link) hc <- hcluster (t(x),method =method, link=link) } else { hr <- hclust(dist(x,method =method), method=link) hc <- hclust(dist(t(x),method =method), method=link) } basefile = strsplit(file,"\\.")[[1]] if(length(basefile>1)) basefile = paste(basefile[-length(basefile)],collapse=".") r2atr(hc,file=paste(basefile,".atr",sep="")) r2gtr(hr,file=paste(basefile,".gtr",sep="")) r2cdt(hr,hc,x ,file=paste(basefile,".cdt",sep="")) if(keep.hclust) return(list(hr,hc)) else return(1) } ctc/R/r2cdt.R0000644000175400017540000000444513556116167013735 0ustar00biocbuildbiocbuildr2cdt <- function(hr,hc,data,labels=FALSE,description=FALSE,file="cluster.cdt",dec="."){ #------------------------------------------------------- # # Created : 20/11/02 # Last Modified : Time-stamp: <2003-07-22 16:52:28 lucas> # # Description : Write data object to cdt # file (Xcluster or Cluster output). # Should be use with r2gtr # Visualisation of cluster can be # done with tools like treeview # # Author : Antoine Lucas # lucas@toulouse.inra.fr # # Licence : GPL (r2xcluster, not Xcluster) # #------------------------------------------------------- # # n <- dim(data)[1] # Add GWEIGHT column data <- as.data.frame(cbind(1,data)) # If the name column does not exist -> creation # of this column else: put column name on # first place. (column NAME in the file) if(!description){ if(!labels){ data <- cbind(row.names(data),data) } else{ data <- cbind(as.factor(data[,2]),data) } } else{ data <- cbind(as.factor(data[,3]),data[,-3]) } # column YORF in the file if(!labels){ data <- cbind(row.names(data),data) } else{ data <- cbind(as.factor(data[,3]),data[,-3]) } # add GID column GID <- paste ('GENE',0:(n-1),'X',sep='') data <- cbind(as.factor(GID),data) # Put data in right order data <- data [hr$order,] m <- dim(data)[2] data[,5:m] <- data[,5:m][hc$order] colnames(data)[5:m] <- colnames(data)[5:m][hc$order] # Round data data[,5:m] <- signif(data[,5:m], digits = 4) levels(data[,1]) <- c(levels(data[,1]),"1","GID","AID","EWEIGHT") levels(data[,2]) <- c(levels(data[,2]),"1","UNIQID") levels(data[,3]) <- c(levels(data[,3]),"1","NAME") data <- rbind(1,data) nom <- c("GID","UNIQID","NAME","GWEIGHT",names(data)[-c(1,2,3,4)]) names(data) <- nom data[1,1] <- "EWEIGHT" data <- rbind(c("AID",NA,NA,NA,paste('ARRY',hc$order-1,'X',sep='')),data) # NA will be replaced by "" in the file # data[2:length(data[,1]),2] <- NA data[2,2:4] <- NA # Write file if(dec==',') { data<-apply(data,2,function(u){chartr(".",",",u)}) data[data=="NA"]<-NA } write.table(data,file = file,sep = '\t',row.names = FALSE,col.names = TRUE,na="",quote=FALSE) } ctc/R/r2cluster.R0000644000175400017540000000404113556116167014634 0ustar00biocbuildbiocbuildr2cluster <- function(data,labels=FALSE,colname="ACC",description=FALSE,file="cluster.txt",dec='.'){ #------------------------------------------------------- # # Created : 05/07/02 # Last Modified : Time-stamp: <2003-07-22 16:53:00 lucas> # # Description : Write to Cluster file format (Cluster make # Hierarchical cluster analysis) # Author : Antoine Lucas # lucas@toulouse.inra.fr # See Also : r2xcluster # # Xcluster : Cluster is a program that performs # hierarchical clustering, K-means and # SOM. # Cluster is copyrighted. # To get or have information on Cluster: # # http://rana.lbl.gov/EisenSoftware.htm # # Licence : GPL # # #------------------------------------------------------- # # # Example: # source('r2cluster.R') # r2cluster(data) # #------------------------------------------------------- n <- length(data[,1]) data <- as.data.frame(cbind(1,1:n,data)) # If the name column does not exist -> creation # of this column, else: put column name on # first place. if(!description){ if(!labels){ data <- cbind(row.names(data),data) } else{ data <- cbind(as.factor(data[,3]),data) } } else{ data <- cbind(as.factor(data[,4]),data[,-4]) } if(!labels){ data <- cbind(row.names(data),data) } else{ data <- cbind(as.factor(data[,4]),data[,-4]) } levels(data[,1]) <- c(levels(data[,1]),"1",colname,"EWEIGHT") levels(data[,2]) <- c(levels(data[,2]),"1","NAME","EWEIGHT") data <- rbind(1,data) nom <- c(colname,"NAME","GWEIGHT","GORDER",names(data)[-c(1,2,3,4)]) names(data) <- nom data[1,1] <- "EWEIGHT" data[1,2:4] <- NA # NA will be replaced by "" in the file #data[2:length(data[,1]),2] <- NA #data[2,3] <- NA # Write file if(dec==',') { data<-apply(data,2,function(u){chartr(".",",",u)}) data[data=="NA"]<-NA } write.table(data,file,sep='\t',row.names = FALSE,col.names = TRUE,na="",quote=FALSE) } ctc/R/r2gtr.R0000644000175400017540000000555113556116167013756 0ustar00biocbuildbiocbuildr2gtr <- function(hr,file="cluster.gtr",distance=hr$dist.method,dec=".", digits=5) { #------------------------------------------------------- # # Created : 20/11/02 # Last Modified : Time-stamp: <2005-04-05 16:06:45 lucas> # # Description : Write hclust object to gtr atr # files (Xcluster or Cluster output). # Visualisation of cluster can be # done with tools like treeview # Author : Antoine Lucas # lucas@toulouse.inra.fr # See Also : plot.hclust (library mva) # # Licence : GPL #------------------------------------------------------- height <- hr$height if(substr(distance,1,1)=="p") { height <- 1 - height } else { height <- height +1 height <- height[1] / height # height <- (( 2 / height ) -1 ) / (( 2 / height[1] ) -1) } height <- signif(height, digits = digits) n <- length(height) node <- 1:n node <- paste ('NODE',node,'X',sep='') merge1 <- hr$merge[,1] merge11 <- paste ('NODE',merge1,'X',sep='') merge12 <- paste ('GENE',-1-merge1,'X',sep='') merge1[hr$merge[,1]>0] <- merge11[hr$merge[,1]>0] merge1[hr$merge[,1]<0] <- merge12[hr$merge[,1]<0] merge2 <- hr$merge[,2] merge11 <- paste ('NODE',merge2,'X',sep='') merge12 <- paste ('GENE',-1-merge2,'X',sep='') merge2[hr$merge[,2]>0] <- merge11[hr$merge[,2]>0] merge2[hr$merge[,2]<0] <- merge12[hr$merge[,2]<0] data <- data.frame(cbind(node,merge1,merge2)) data <- cbind(data,height) write.table(data,file=file,row.name=FALSE,col.names=FALSE,quote=FALSE,sep='\t',dec=dec) } #----------------------------------- # Cosmetic modifications for r2atr #----------------------------------- r2atr <- function(hc,file="cluster.atr",distance=hc$dist.method,dec=".", digits=5) { height <- hc$height if(substr(distance,1,1)=="p") { height <- 1 - height } else { height <- height +1 height <- height[1] / height } height <- signif(height, digits = digits) n <- length(height) node <- 1:n node <- paste ('NODE',node,'X',sep='') merge1 <- hc$merge[,1] merge11 <- paste ('NODE',merge1,'X',sep='') merge12 <- paste ('ARRY',-1-merge1,'X',sep='') merge1[hc$merge[,1]>0] <- merge11[hc$merge[,1]>0] merge1[hc$merge[,1]<0] <- merge12[hc$merge[,1]<0] merge2 <- hc$merge[,2] merge11 <- paste ('NODE',merge2,'X',sep='') merge12 <- paste ('ARRY',-1-merge2,'X',sep='') merge2[hc$merge[,2]>0] <- merge11[hc$merge[,2]>0] merge2[hc$merge[,2]<0] <- merge12[hc$merge[,2]<0] data <- data.frame(cbind(node,merge1,merge2)) data <- cbind(data,height) if(dec==',') { data<-apply(data,2,function(u){chartr(".",",",u)}) data[data=="NA"]<-NA } write.table(data,file=file,row.name=FALSE,col.names=FALSE,quote=FALSE,sep='\t') } ctc/R/r2xcluster.R0000644000175400017540000000403113556116167015023 0ustar00biocbuildbiocbuildr2xcluster <- function(data,labels=FALSE,description=FALSE,file="xcluster.txt"){ #------------------------------------------------------- # # Created : 10/12/01 # Last Modified : Time-stamp: <2002-11-12 13:17:15 lucas> # # Description : Write to Xcluster file format (Xcluster make # Hierarchical cluster analysis) # Author : Antoine Lucas # lucas@toulouse.inra.fr # See Also : xcluster2r # # Xcluster : Xcluster is a C program that performs # hierarchical clustering, K-means and # SOM. # Xcluster is copyrighted. # To get or have information on Xcluster: # # http://genome-www.stanford.edu/~sherlock/cluster.html # # Licence : GPL (r2xcluster, not Xcluster) # #------------------------------------------------------- # # # Example: # source('r2xcluster.R') # r2xcluster(data) # system('Xcluster -f xcluster.txt') # h <- xcluster2r('xcluster.gtr') # library(mva) # plot(h,hang=-1) # #------------------------------------------------------- data <- as.data.frame(cbind(1,data)) # If the name column does not exist -> creation # of this column else: put column name on # first place. if(!description){ if(!labels){ data <- cbind(row.names(data),data) } else{ data <- cbind(as.factor(data[,2]),data) } } else{ data <- cbind(as.factor(data[,3]),data[,-3]) } if(!labels){ data <- cbind(row.names(data),data) } else{ data <- cbind(as.factor(data[,3]),data[,-3]) } levels(data[,1]) <- c(levels(data[,1]),"1","NAME","EWEIGHT") levels(data[,2]) <- c(levels(data[,2]),"1","DESCRIPTION") data <- rbind(1,data) nom <- c("NAME","DESCRIPTION","GWEIGHT",names(data)[-c(1,2,3)]) data <- rbind(nom,data) data[2,1] <- "EWEIGHT" # NA will be replaced by "" in the file #data[2:length(data[,1]),2] <- NA data[2,2:3] <- NA # Write file write.table(data,file,sep='\t',row.names = FALSE,col.names = FALSE,na="",quote=FALSE) } ctc/R/read.eisen.R0000644000175400017540000000167613556116167014737 0ustar00biocbuildbiocbuildread.eisen <- function(file,sep="\t",dec=".",format.check=TRUE) { f<-read.table(file=file,header=TRUE,sep=sep,dec=dec) rownames(f)<-f[,1] if (format.check & colnames(f)[1] %in% c("UNIQID","YORF","MCLID","CLID","ACC")) { stop(paste("This is not a proper Eisen-formatted file ('",file,"').",sep="")) } if ("NAME"==colnames(f)[2]) { colstart<-3 } else { colstart<-2 } if (""==rownames(f)[1]) { rowstart<-2 } else { rowstart<-1 } r<-f[rowstart:nrow(f),colstart:ncol(f)] if (2==rowstart) { attr(r,"second.row")<-f[1,colstart:ncol(f)] } else { attr(r,"second.row")<-NULL } if (3==colstart) { attr(r,"NAME")<-f[rowstart:nrow(f),2] } else { attr(r,"NAME")<-NULL } return(r) } ctc/R/xcluster.R0000644000175400017540000000626113556116167014566 0ustar00biocbuildbiocbuildxcluster <- function(data,distance="euclidean",clean=FALSE,tmp.in="tmp.txt",tmp.out="tmp.gtr"){ #------------------------------------------------------- # # Created : 10/12/01 # Last Modified : Time-stamp: <2002-11-12 09:48:10 lucas> # # Description : Execute Xcluster (Xcluster make # Hierarchical cluster analysis) # Author : Antoine Lucas # lucas@toulouse.inra.fr # See Also : xcluster2r # # Xcluster : Xcluster is a C program that performs # hierarchical clustering, K-means and # SOM. # Xcluster is copyrighted. # To get or have information on Xcluster: # # http://genome-www.stanford.edu/~sherlock/cluster.html # # Licence : GPL (r2xcluster, not Xcluster) # # #------------------------------------------------------- # Xcluster flags #------------------------------------------------------- # # -g 0|1|2 ; 0 indicates no gene clustering, 1 indicates non-centered metric, 2 indicates centered metric when clustering genes. 2 is default. # -e 0|1|2 ; 0 indicates no experiment clustering, see above for 1 and 2. 0 is the default. # -p 0|1 ; whether to use pearson correlation (1), or Euclidean distance (0). 1 is the default. # -s 0|1 ; whether to make a SOM (1). 0 is the default. # -x specify x dimension of SOM # -y specify y dimension of SOM # -r 0|1 ; whether to seed the random number generator with the time when making a SOM. 1 is the default. # -k num ; how many k-means clusters to make. num is an integer, greater than 1, and preferably less than a gazillion. # -l 0|1 ; whether to log transform the data. # -u string ; a unique identifier by which to name the output files, instead of basing their names on the input file. eg -u 888 will generate 888.cdt as an output file. #------------------------------------------------------- # # # Example: # source('r2xcluster.R') # system('Xcluster -f xcluster.txt') # h <- xcluster2r('xcluster.gtr') # library(mva) # plot(h,hang=-1) # #------------------------------------------------------- r2xcluster(data,file=tmp.in) #------------------------------------- # CASE DISTANCE=EUCLIDEAN #------------------------------------- if(substr(distance,1,1)=="e") { script <- paste ("Xcluster -f",tmp.in," -e 0 -p 0 -s 0 -l 0") system(script) tree <- xcluster2r(file=tmp.out,distance="euclidean",labels=TRUE,fast= TRUE,clean=clean) } #------------------------------------- # CASE DISTANCE=PEARSON #------------------------------------- if(substr(distance,1,1)=="p") { script <- paste ("Xcluster -f",tmp.in,"-g 2 -e 0 -p 1 -s 0 -l 0") system(script) tree <- xcluster2r(file=tmp.out,distance="pearson",labels=TRUE,fast= TRUE,clean=clean) } #------------------------------------- # CASE DISTANCE=NONCENTEREDPEARSON #------------------------------------- if(substr(distance,1,1)=="n") { script <- paste ("Xcluster -f",tmp.in,"-g 1 -e 0 -p 1 -s 0 -l 0") system(script) tree <- xcluster2r(file=tmp.out,distance="pearson",labels=TRUE,fast= TRUE,clean=clean) } script <- paste ("rm ",substr(tmp.in,0,nchar(tmp.in)-3),"*",sep='') system(script) tree } ctc/R/xcluster2r.R0000644000175400017540000001250513556116167015030 0ustar00biocbuildbiocbuildxcluster2r <- function(file,distance="euclidean",labels=FALSE,fast=FALSE,clean=FALSE,dec="."){ #------------------------------------------------------- # # Created : 26/11/01 # Last Modified : Time-stamp: <2002-11-22 11:48:29 lucas> # # Description : Read Xcluster output (Xcluster make # Hierarchical cluster analysis) to # analyse and plot the result. # Author : Antoine Lucas # lucas@toulouse.inra.fr # See Also : plot.hclust (library mva) # # Xcluster : Xcluster is a C program that performs # hierarchical clustering, K-means and # SOM. # Xcluster is copyrighted. # To get or have information on Xcluster: # # http://genome-www.stanford.edu/~sherlock/cluster.html # # Licence : GPL (xcluster2r, not Xcluster) # # #------------------------------------------------------- # # # Example: # source('xcluster2r.R') # h <- xcluster2r('data.gtr') # library(mva) # plot(h,hang=-1) # # #------------------------------ # Determin if it is a .gtr or # .atr file #------------------------------ ext <- substr(file,nchar(file)-2,nchar(file)-2) if( (ext=='a') || (ext=='A') ) { premierelettre <- 'A' atr <- TRUE } else { premierelettre <- 'G' atr <- FALSE } #------------------------------ # reading file #------------------------------ if(atr){ premierelettre <- 'A' } else { premierelettre <- 'G' } data <- read.table(file,sep='\t',dec=dec) data1 <- as.character(data[,2]) i1 <- (substr(data1,1,1)==premierelettre)*(-1) #si i1 -1 => Gene, #Si i1 0 => Cluster data1 <- as.integer(substr(data1,5,nchar(data1)-1)) data1 <- data1*i1+i1+data1*(1+i1) data2 <- as.character(data[,3]) i2 <- (substr(data2,1,1)==premierelettre)*(-1) data2 <- as.integer(substr(data2,5,nchar(data2)-1)) data2 <- data2*i2+i2+data2*(1+i2) if(substr(distance,1,1)=="e") { Hheight <- 2 / (data[,4] +1 ) #Distance = Euclidean } else{ Hheight <- 1-data[,4] #Distance = pearson (centered or not) } rm(data) #---------------------------------------------------- # Giving ordered distances #---------------------------------------------------- if(clean){ Hheight <- cummax(Hheight) } #---------------------------------------------------- # Reorganizing data (Not essential, # but gives the same look as R) # Fast=T skip this part #---------------------------------------------------- if(!fast){ for(i in 1:length(data1)){ if(abs(data1[i])>abs(data2[i])){ tmp <- data2[i] data2[i] <- data1[i] data1[i] <- tmp} if(data1[i]>0 && data2[i]<0) { tmp2 <- data2[i] data2[i] <- data1[i] data1[i] <- tmp2 } } } #---------------------------------------------------- # Order the clusters #---------------------------------------------------- liste <- list("1"=c(data1[1],data2[1])) for(i in 2:length(data1)){ if(data1[i]<0 && data2[i]<0){ liste[[as.character(i)]] <- c(data1[i],data2[i]) } if(data1[i]>0 && data2[i]<0) { tmp <- as.character(data1[i]) liste[[as.character(i)]] <- c(data2[i],liste[[tmp]]) liste[[tmp]] <- c() } if(data1[i]<0 && data2[i]>0) { tmp <- as.character(data2[i]) liste[[as.character(i)]] <- c(data1[i],liste[[tmp]]) liste[[tmp]] <- c() } if(data1[i]>0 && data2[i]>0) { tmp1 <- as.character(data1[i]) tmp2 <- as.character(data2[i]) if(data1[i]<=data2[i]) { liste[[as.character(i)]] <- c(liste[[tmp1]],liste[[tmp2]]) } else { liste[[as.character(i)]] <- c(liste[[tmp2]],liste[[tmp1]]) } liste[[tmp1]] <- c() liste[[tmp2]] <- c() } } #-------------------------------- # Giving the outputs #-------------------------------- Hmerge <- cbind(as.integer(data1),as.integer(data2)) Horder <- -liste[[as.character(length(data2))]] Hlabels <- as.character(1:(length(data2)+1)) Hmethod <- "average" #Hdist.method <- "Pearson" #Hcall <- "Xcluster" #-------------------------------- # Getting labels on .cdt file #-------------------------------- if(labels){ if(atr) { filetxt <- paste(substr(file,0,nchar(file)-4),'.txt',sep='') data <- read.table(filetxt,nrows=1,sep='\t',dec=dec) Hlabels <- as.character(t(data[4:length(data)])) } else { filecdt <- paste(substr(file,0,nchar(file)-4),'.cdt',sep='') data <- read.table(filecdt,skip=1,sep='\t',dec=dec) data1 <- as.character(data[,1]) data1 <- as.integer(substr(data1,5,nchar(data1)-1)) data2 <- as.character(data[,2]) Hlabels[data1+1] <- data2 } } tree <- list(merge=Hmerge,height=Hheight,order=Horder,labels=Hlabels,method=Hmethod) class(tree) <- "hclust" tree } ctc/R/zzz.R0000755000175400017540000000023013556116167013543 0ustar00biocbuildbiocbuild.noGenerics <- TRUE .conflicts.OK <- TRUE .onLoad <- .First.lib <- function(lib, pkg) { if("amap" %in% .packages(all=TRUE)) require("amap") } ctc/build/0000755000175400017540000000000013556146046013462 5ustar00biocbuildbiocbuildctc/build/vignette.rds0000644000175400017540000000031213556146046016015 0ustar00biocbuildbiocbuildb```b`fcd`b2 1# 'fO.I +G+)O)M.S(W*æ % Ml ba DX%Z]?4-ީE0=(jؠjX2sRad9.nP&c0Gq?gQ~`nݣ9JI,IK+)ctc/demo/0000755000175400017540000000000013556116167013310 5ustar00biocbuildbiocbuildctc/demo/00Index0000644000175400017540000000002413556116167014436 0ustar00biocbuildbiocbuildctc Ctc demo file ctc/demo/ctc.R0000755000175400017540000000265513556116167014217 0ustar00biocbuildbiocbuildcat ("\n\n C T C \n D E M O \n\n") cat("\n------ Standard clustering with R (not ctc): -------\n") data(USArrests) h = hclust(dist(USArrests)) plot(h) readline("Next") cat("\n------ Get the ``heatmap'': -------\n") heatmap(as.matrix(USArrests)) readline("Next") cat("\n------ BUILDING HIERARCHICAL CLUSTERING WITH ANOTHER SOFTWARE -------\n") cat("\n------ Write data table to Xcluster file format -------\n") r2xcluster(USArrests,file='USArrests_xcluster.txt') readline("Next") cat("\n------ Write data table to cluster file format -------\n") r2cluster(USArrests,file='USArrests_cluster.txt') readline("Next") cat("\n------ Hierarchical clustering (need Xcluster tool by Gavin Sherlock) -------\ntry:\n\nh.xcl=xcluster(USArrests)\nplot(h.xcl) ") readline("Next") hr = hclust(dist(USArrests)) hc = hclust(dist(t(USArrests))) cat("\n------ USING OTHER VISUALIZATION SOFTWARES -------\n") cat("\n------ Export hclust objects to Newick format files -------\n") write(hc2Newick(hr),file='hclust.newick') readline("Next") cat("\n------ Export hclust objects to Freeview or Treeview visualization softwares -------\n") r2atr(hc,file="cluster.atr") r2gtr(hr,file="cluster.gtr") r2cdt(hr,hc,USArrests ,file="cluster.cdt") readline("Next") cat("\n------ Clustering and Export hclust objects to Freeview or Treeview visualization softwares -------\n") hclust2treeview(USArrests,file="cluster.cdt") ctc/exec/0000755000175400017540000000000013556116167013310 5ustar00biocbuildbiocbuildctc/exec/ctc.php0000644000175400017540000001057613556116167014603 0ustar00biocbuildbiocbuild
Ctc Demo Web application V0-1

This demo makes hierarchical clustering on your data

Upload your data (text-tabulated file)

File Description:
A first Column
A first line

$MAX_FILE) exit("File size: $taillefichier; max allowed: $MAX_FILE"); } /* ================================== */ /* We write R code in file $ID/prog.R */ /* ================================== */ $fp=fopen("$ID/prog.R",'w'); fwrite($fp,"library(ctc)\n"); /* Read Data */ fwrite($fp,"data <- read.delim('$ID/data.txt',header=$HEADER,row.names=$ROWNAMES) \n" ); fwrite($fp,"data \n"); /* Hierarchical clustering */ fwrite($fp,"hr <- hclust(dist(data)) \n"); fwrite($fp,"hc <- hclust(dist(t(data))) \n"); fwrite($fp,"dr <- as.dendrogram(hr) \n"); fwrite($fp,"dc <- as.dendrogram(hc) \n"); /* A pdf file */ fwrite($fp,"pdf(file='$ID/Rplots.pdf') \n"); fwrite($fp,"heatmap(as.matrix(data),Colv=dc,Rowv=dr) \n"); fwrite($fp,"dev.off() \n"); /* Some png images */ fwrite($fp,"bitmap(file='$ID/heatmap.png') \n"); fwrite($fp,"heatmap(as.matrix(data),Colv=dc,Rowv=dr) \n"); fwrite($fp,"dev.off() \n"); fwrite($fp,"r2atr(hc,file='$ID/cluster.atr') \n"); fwrite($fp,"r2gtr(hr,file='$ID/cluster.gtr') \n"); fwrite($fp,"r2cdt(hr,hc,data ,file='$ID/cluster.cdt') \n"); fclose($fp); /* ===================== */ /* Send command (R batch)*/ /* ===================== */ system("$R_BIN --no-save < $ID/prog.R > $ID/prog.R.out 2> $ID/prog.R.warnings"); /* ===================================== */ /* We create html page including results */ /* ===================================== */ echo "

Ctc Demo results

"; echo "A pdf file

"; echo "3 files for Freeview"; echo " or Treeview: "; echo "cdt "; echo "atr "; echo "gtr "; echo "

"; echo "

"; /* Signature */ echo "

This results made by ctc package. Code use: prog.R, Out: prog.R.out, Warnings: prog.R.warnings."; } ?>

ctc/inst/0000755000175400017540000000000013556146046013340 5ustar00biocbuildbiocbuildctc/inst/doc/0000755000175400017540000000000013556146046014105 5ustar00biocbuildbiocbuildctc/inst/doc/ctc.R0000644000175400017540000000317113556146046015003 0ustar00biocbuildbiocbuild### R code from vignette source 'ctc.Rnw' ################################################### ### code chunk number 1: ctc.Rnw:45-48 ################################################### data(USArrests) h = hclust(dist(USArrests)) plot(h) ################################################### ### code chunk number 2: ctc.Rnw:51-52 ################################################### heatmap(as.matrix(USArrests)) ################################################### ### code chunk number 3: ctc.Rnw:61-63 ################################################### library(ctc) r2xcluster(USArrests,file='USArrests_xcluster.txt') ################################################### ### code chunk number 4: ctc.Rnw:66-67 ################################################### r2cluster(USArrests,file='USArrests_xcluster.txt') ################################################### ### code chunk number 5: ctc.Rnw:92-94 ################################################### hr = hclust(dist(USArrests)) hc = hclust(dist(t(USArrests))) ################################################### ### code chunk number 6: ctc.Rnw:101-102 ################################################### write(hc2Newick(hr),file='hclust.newick') ################################################### ### code chunk number 7: ctc.Rnw:106-109 ################################################### r2atr(hc,file="cluster.atr") r2gtr(hr,file="cluster.gtr") r2cdt(hr,hc,USArrests ,file="cluster.cdt") ################################################### ### code chunk number 8: ctc.Rnw:113-114 ################################################### hclust2treeview(USArrests,file="cluster.cdt") ctc/inst/doc/ctc.Rnw0000644000175400017540000000732113556116167015352 0ustar00biocbuildbiocbuild% -*- mode: noweb; noweb-default-code-mode: R-mode; -*- % building this document: (in R) Sweave ("ctc.Rnw") \documentclass[a4paper]{article} \title{Ctc Package} \author{Antoine Lucas} \SweaveOpts{echo=FALSE} %\usepackage{a4wide} %\VignetteIndexEntry{Introduction to ctc} %\VignettePackage{ctc} \usepackage{url} \begin{document} \maketitle \tableofcontents \section{Overview} {\tt Ctc} package provides several functions for conversion. Specially to export and import data from Xcluster\footnote{\url{http://genome-www.stanford.edu/~sherlock/cluster.html}} or Cluster\footnote{http://rana.lbl.gov/EisenSoftware.htm} software (very used for Gene's expression analysis), and to export clusters to TreeView or Freeview visualization software. \section{Aim} \begin{itemize} \item To explore clusters made by Xcluster and Cluster . \item To cluster data with Xcluster (it requires very low memory usage) and analyze the results with R. Warning: results are not exactly the same as hclust results with R. \end{itemize} \section{Usage} Standard way of building a hierarchical clustering with R is with this command: %<>= <>= data(USArrests) h = hclust(dist(USArrests)) plot(h) @ Or for the ``heatmap'': <>= heatmap(as.matrix(USArrests)) @ \subsection{Building hierarchical clustering with another software} We made these tools \begin{description} \item[r2xcluster] Write data table to Xcluster file format <>= library(ctc) r2xcluster(USArrests,file='USArrests_xcluster.txt') @ \item[r2cluster] Write data table to Cluster file format <>= r2cluster(USArrests,file='USArrests_xcluster.txt') @ \item[xcluster] Hierarchical clustering (need Xcluster tool by Gavin Sherlock) \begin{verbatim} > h.xcl=xcluster(USArrests) > plot(h.xcl) \end{verbatim} It is roughtly the same as \begin{verbatim} > r2xcluster(USArrests,file='USArrests_xcluster.txt') > system('Xcluster -f USArrests_xcluster.txt -e 0 -p 0 -s 0 -l 0') > h.xcl=xcluster2r('USArrests_xcluster.gtr',labels=TRUE) \end{verbatim} \item[xcluster2r] Importing Xcluster/Cluster output \end{description} \subsection{Using other visualization softwares} We now consider that we have an object of the type produced by 'hclust' (or a hierarchical cluster imported with previous functions) like: <>= hr = hclust(dist(USArrests)) hc = hclust(dist(t(USArrests))) @ \begin{description} \item[hc2Newick] Export hclust objects to Newick format files <>= write(hc2Newick(hr),file='hclust.newick') @ \item[r2gtr,r2atr,r2cdt] Export hclust objects to Freeview or Treeview visualization softwares <>= r2atr(hc,file="cluster.atr") r2gtr(hr,file="cluster.gtr") r2cdt(hr,hc,USArrests ,file="cluster.cdt") @ \item[hclust2treeview] Clustering and Export hclust objects to Freeview or Treeview visualization softwares <>= hclust2treeview(USArrests,file="cluster.cdt") @ \end{description} \section{See Also} Theses examples can be tested with command {\tt demo(ctc)}.\\ \noindent All functions has got man pages, try {\tt help.start()}.\\ \noindent Ctc aims to interact with other softwares, some of them: \begin{description} \item[xcluster] made by Gavin Scherlock, http://genome-www.stanford.edu/\~\/sherlock/cluster.html \item[Cluster, Treeview] made by Michael Eisen, http://rana.lbl.gov/EisenSoftware.htm \item[Freeview] made by Marco Kavcic and Blaz Zupan, http://magix.fri.uni-lj.si/freeview \end{description} \noindent If you want to cite amap or ctc in a publication, use~: Antoine Lucas and Sylvain Jasson, \emph{Using amap and ctc Packages for Huge Clustering}, R News, 2006, vol 6, issue 5 pages 58-60. \end{document} ctc/inst/doc/ctc.pdf0000644000175400017540000045167313556146046015371 0ustar00biocbuildbiocbuild%PDF-1.5 % 4 0 obj << /Length 1507 /Filter /FlateDecode >> stream xڥWK6WT"Z$ER  [(4i $9xmzXv͡,J pz2e2md\L#a,|tIj3Jg1ɇYZU_iU:gPS΅(5*Jò.6)Sd$UdzeEW/*r~$|p~e^[`{P]ܡ^[Rۨ-0 mO-Ag^??Sj!^!s$~߂Gc_ܑ[g(pM,@Jz <aAH“5 krn*-ȹ(Ak׆,Pk5G1 XH`pVwˎ|MR"'U`'!~_D1@ LFk]c6jaD6%:4rJ{|ԗII8ӎT# /څR:?s~H]RrK׍;Ӭp2ʊ|~ 0-d7h#GBnOvՈm) ?ۖZԁpi$_f)!ݱ Boo|PycՖȺ{{/+YWùqKN*5:XV endstream endobj 21 0 obj << /Length 916 /Filter /FlateDecode >> stream xWN@}W7{ *R*5ơwfv7RBK:{̙}4OixkOȈ\z0!7y_AKOᏡe6涿vcn4VYƭkhShΡkkG UoaOxh$|KTGҥ%wN{}?:aR%LDZrd\#^ ݢ_ڟ`@ 3g3ܑ9?^W!{8=1c4XFtJax럦sp4e* `[2!@wAFh/\LǢaF26a\tt U3(AwGنۂɮeנõuL㒋rz`8&֛3++>-"^DTV9[ߍ'd́ԚC뤮z9>WP אqRY㈟vBy Ary=L`T PTI!៭q;j9b-w+k<$/5fDD/n&ƚ{(bS涗D. _0; 5/u\ĥ S(}pWm @N\<2)*;Dno./gV53s3m2d |(#f*:#!5iOD}zK\̾, }^oESr監u$a|GM%VI*2΄&7^[ endstream endobj 1 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmptbtIK6/Rbuild96e74472b6a/ctc/vignettes/ctc-002.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 24 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 25 0 R>> /ExtGState << >>/ColorSpace << /sRGB 26 0 R >>>> /Length 3131 /Filter /FlateDecode >> stream xv|^ Җs۱ /X3#q8ӧP s (j^6y|,S;tMv]c;џ}Ssbv2?K]~U׮`e5S74ק+?vqJA˦usV vX2Uآ۩/퇌rZsr {_Wup))TKY))Rr.zȯ4_ۥ+AXDc[ycFH FsK Ѕ < Q,c13.͎ Roum"AzR֐JT!mAj3Hi3i)fGѸe]y6'ncڶw4^˼oW_ʷW0ypFn(o*[9|eP.SI-NsEYCQCY -,eSY#ZCOe=xA&=-褣$3((QT?Oeg/b=Y.=((ʚITMOeTMn:ZHOE5TCVg$ʊHTDOeMT3آ#eZV)(QYEGY1},%̈́A/QuA35M65Y35CQ35CQ3,hfVGJJTLOe$*:B&ajȚ Sh#j1eEYI}NIusZGTȪ e2V}/Z\oGVj;݆qõj+h{*k|u 𤋮DE'DK@T)öP%ۑkz;rEQoG({*k\;ѶM2>\.c`fgF 6քQ6&ÿ796`·z?ݝF0Ս9xھ6Tx>=mT1nQtӘ_o!pϰܽ =)Ii116׊t{E.{%la̰ذY~w8oL JWX P,^.c" #}} 6G2ۺMp9LwsWf03\':e̿ ǭVPoW< 8ic0}rx8ݚV6?Gڷe}{W]F_qGj0/^ ̫ߚ[_ys+A[m~4P1?4GSb%0cgXln|h|"P{}lf'Hi쫺MpDsy9c`}xMD~-k+܌f4M>`թ8ϡkhsFc ^$cQdk?`|æ@5u)]{:nB<#i4x}3l5 2ʮNffkj7hDxh驔+an%Qf} 0[CCBp4n8aGc8|@h|̃sk +9G" cu9}exo2n 8>y0Ǜ@<"O`G<_{iB "xt d_0n X_h'dLƭ_҇s4uJⱿ}ø5?Q_ q'q4CB`:׈s/^_"C'MO9Ȁ?<`ϥ8G?籿}Ǹ5P M97pn )@? HX_s@9Oh9  ? le[כzFWέ3/> >>snq4P9O' q Fέ޽po'1?ůIаץzÛYS6FKi̓#7!mE=6VbK)QüJƨ%|##zħPlVbKF%IN1"KFaf n0/KQl|V endstream endobj 28 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 31 0 obj << /Length 1654 /Filter /FlateDecode >> stream xڵXKoFWwN`MڠhMQb4(Jro6=P.3|3;g i04|Mόb/Rڤl](5l`,؏覨yt>e %(j?[uA~\&T"o4։Ͷ&S&xDMA g6 .uD0{/&k1+IuZr2,Fo0sǭÙn7 {pJmPs~ =QqAb<Ќ%jղ:G7@jucrUS!2qcxCv(>*1`f -~ 8v o|ۗ m~0+ŁZ0b7O Ƶ6N.0$ G{#d=N0Q ,#(vIS$acܨX}A41n-g3Q bCH`C,YZWRou pER K;hCez EI[xf$ '26A4TT4bZZ]5Pw;gdD }HJM<%GK(u&>toޞDԴ֪Bxg+E_6eA-$U6lL<:L<휝 @㵬ck'ZoR4tqzr8ѵtdRsLm+"v{CЛƸ-73FI VVrGa-*9&Ö؊V MJ76f(nY(@TFRXt?Gg+̲*y?xj*B5)b[?$OOy@AdzdMK@:ZQ>nâ'No}MAek W}rh\db߮k1ÓIDhBg` "&U&*N0>.GűZ(E%Ѻ- L <ԑQA aҝ0Dz)6u*尷2 CoM@jèAN6xqlmxЪ9%fB|\ cZ]o|]X8 ]g"=`h+.M^ي^5G;Lۭ\ɢ(ٳ1ƒᙄ %ƫB2tP1(I"^ mSz71ʞF_ U(y_eLf;ΕWS=ȔvžAG◌Cw#k4bBO[b)ێA:ƨI&sx azY._8Y-:<ٌ;Is y,Kk 2oR:v$:[b㼴UR S) Ӓ:OޒF Bq:e:~2KiZ8Zo=f'sE(O;i 򢃮 푙ȡ G5^9ϣ4=2NRZ@LJDa;l0GK%}=>q& endstream endobj 34 0 obj << /Length 104 /Filter /FlateDecode >> stream x313T0P04W0#S#CB.)T&9ɓK?\K(̥PRTʥ`ȥm``P73`v(PՓ+ L5* endstream endobj 38 0 obj << /Length 119 /Filter /FlateDecode >> stream x313T0P02Q02W06U05RH1*24PA#STr.'~PKW4K)YKE!P EoB@ a'W $o&| endstream endobj 46 0 obj << /Length 149 /Filter /FlateDecode >> stream x3135R0P0Bc3csCB.c46K$r9yr+p{E=}JJS ]  b<]00 @0?`d=0s@f d'n.WO@.sud endstream endobj 57 0 obj << /Length1 1820 /Length2 13405 /Length3 0 /Length 14550 /Filter /FlateDecode >> stream xڍPb qwww mqKpww ܝK9ޢ 1u̵\UP(2%Xyb Z,ff6FffVx 5Kg@"@@#w{@`eef23' 7r4(0dNb Ks >PXxxLA&Fv#g {G#%JP[8;;211:1ڃin 412@h5 KfnF `ciszOq32O@ }8F;Bv&:yXڙ,mO#;?l\,mnQO|N& Kg'F'K?fd1Kؙ휝'n ߗkmgfdfigj.Lv.@cḾfff.Nnt7`O'|fc},̀ཛྷ\g ߎE,,SKg1f_Aw޻Ll< $4$NQQ{w'z:JFW=/ʮko-Ew]gOTe$bcuq~]VWdwAh$i4Ut6K.X4K;O ޷pz.oK ;{?@ #K~G/u4b{ }8=0a qL n?鿈 b0;w0W1/b{6lq"L,&!+/;L,ߩX g/NL0}w?rwNN&hr5nJx/N_?=O?0q?w]6>@;~qބ/Ȫ6Zߍaw\`bW3k DSet+4ԃ-A}#D&%A Nej$Do~B85=GokfNYGnd\{>)ѐ]*N9i(Eߍ3pIaiQfongг'ވe} 7XcPlx(5W+{d$ Ä ŗd ^u ''vgzxBP*=2C×}pʈTZzfoOP B?o$&Һ/U(KG_Ǔģѷ_Y%ww$ug ,[w^*Cx/i3֍~.f񟍩SzX7ĚiyaWMګ @,6R?Ta#sk )9E0`1 YPS]Ħ0ɐF1~RMv# `]_ } Fw>\cJ oS3ﭣY# T jAtG ٶQ AW4RK\=pM]i.s/p8=!-T^s r?J#)5b6A)̓n@z[>\L@`tݵuޕ\  W<2lBOU(nZh !z#%'1wg* g!& ϔJ`,^aҺMH! :G T8K Zm~iX#*ڱF/O1kNvQ/ o%&wd\iwt} N1ScSj 6o %6O^_[A" Tf^PҺB= `9h^Ȯ -loՙ 7t fkBl S!]N-L j vL'Lbylχ/҈Fv/~H8:.&]sO otNg 0zBo*JG/&70d-,О:I!XlJ^ |X.Q1cOо~dF,~k2֮xs@ˠ7e0m~GRMgQ]">yxxKc~: Q5zU v괼k`i|NPr8{a?s)4 xh5wg7Ap9=%Y;R(jK\g[]ᚾbی{̂o|1;93 %VӲ)zqZ0:)N)UKQR񿖥Vwn7\@jvdw^ޓVwax О‰cHEǣ'TK3YAcGdxl$ӼČ~P.S߱rV.Vgi璉ymM뱢 b3Y,=P+3cgn Y qN>cP,2$ xKʓ9SY_W*Sj0ѤEUop]Kk B>+!vmnXdwN3|`TEz$ȣ\ytbcQ2;X-7*M_Z\ Xjqjok+Uo>|lߖ1רof"p{ƎGzb*U ` r#*=褼aă$׍3clޒa]kꯗ#LU*҅d{5P6_=+l}7 kYlNyG~5IVVGt3^CYHl3T+ZT1Z9C\p>>!&5Aa_'&yBB[:.DE'޼( +p 'Cp'i#~yu 1x»UbnuOis#*qirNrvg*Yc6SE\ #FT4 DAxx$X.,[za=]Z$U?xv*0 @TG,[Ya鵭ۓڍNyfXGMمų Dw ;ZƁCFڴSJ𙩋L-NF. z[Dqgδn"ah@W\{?5ar7;j j3U4QL5X\F@ rAw|ߣ/Je栧*jrM;;e9A^w][" QYk-xxm'+o'\Dv7x;43H>n6-i c#,$F>0q*on =_w;?iYh^?1Tۜ7B-1UmĮ,X'vESVՏ{ۯ{}T244DT3r˃7֑@<݊@kjKk}FvB:12UyU?K-Jk@8odbr0cdW`kd5<)ĘSlY (`}Sa 0d= Yfg|,)DZ)61ppU1+34^.TK'o|E%$آ*q(6ݤ޾5uD* s[*IWD9-5Ֆfas9e$eXgǽFO(}s*;j7WlN0|?tAʍ0PB=Z:1#|ᑥTͼoE}o̗[ w6 ~e蹆)1EY_ ?% )OЄֺA咙(@/',y㯯RX O< 󒫇{n*E6|Tb|19ǔva\L0DY~P-t'_zB]s*9Q~䎦i͵|4T:Y4M;oȎkb3eWSx8@l0NnT~'΁82ArrG玛Ag6$r\'+R ݭ^%$ ɡ4,v-&CPw5\9N?X_hX9!4_an-mS]}95<գ$F)\ҙztϘX6§1qǷzQ d Qǿv>QbX04S%Ad!}cYR %ǸOB|JrbƖHdv v8A9S$J~37hZ"H\k%|étoÛc"3s}~oר!v:̨Zپ }p=DH#Gi5D:yPdʪ?(O "v4BM8gJk5Oet8[u=D;]>R/r2xɑ. rLB]:i( 0]G\1șMzl4 PK佄^G8M>YN۱ؾ|dkl_EHBm,f!K5]ăׄ*"t\y&K 6L^.VA QrrOlr4) 4WfN춫[lF/Ʉ1ԆvQL,tbXf-}S' r96,G3n&ٗ.,]`\R[Sj-SUєB& R%y364 CZՠCV)#KI/W?OWFm.٧xP3pF \YbYpRe=mrc-})+\#PS~B2Mm~{r1(Q:R]G185cVjm~"L } f q;/BQۅyq: GLMHhT/1%P+N>?s}`+zH0vKtC-6}3+k9#0p)9ғVXKJJNW\hS-jK(=YoFա.IYdO'_|lgcڷ5jK2m`;>j踭G7i ɎiԦ \Y蹢 0MS(0OGWLG gIՒIawn2^0Q#4Cũ$! 7m$9F+(pԗL[I^ E$u!9 s_^$J7%ؔMŠUBu KG"^w\<$h[;q._v!d|z2,P=txFbSq1QŲuEZP}f%Z4{BiLIˬh0U'm-0 Fܪ+Ȫ)>S 2LMeB3Zw@LO: &tCuzc>__0;`i }@r|qqRjC"C;\;%6I#`O(5ǞƭȰgFX o}GTMdK7a9>_&*h&Gȸɕ.\taǯY#*6NVJ@Ni7#g{pH\pu7i/0䯄*q}AvCiu릾)EP3.rqi1aq waeO[1j(g‡)Jl4n<5F*apej 0R&~-`K/h~oenPڕ9)K,΄$dqBwY nBf~}on1Q"{81 3FIfoVPlhC؄Uk׼do"BU;@Δ๵6,&&1M2a\O(}aFtƜy)Ern2;US}v"ţ.3a9f}W]7GRa{yqg\'Ɵ:&zh 􈤇+~etMOirEji`ό!~yX#TBtC@G'wF)^$5{xӰ2hsT2 }$X_e.J2D\ i 6eҏH.e5nE>I ^(~_UslAe8R rB>;CsHBaI$] kV3N ?S nP.1uѰ瑬Jeܪn)NE x:Va}+;cHɘ X6t[43ݵ])P?>G0Hb[s" "ղ>Y[ٕiE Ctt@Dͤ Vӝu==l-I$ڰiu몳$M:N;/3|M4ޚRRZOL|U{8k/ŲDQZ,ρ;_~_`F#lS7(SBʑ5`{YOT:y]T+"xW|n !Tt[yeT)IӉ@OF|3j-)8цmK̲kљIu=B EC&uAuӐ}ٙz ?A68Yq$OA$W10.5t ` 6~ˆWޠ* dKX\,1e}9:cxPG3U| Y:(}fk-c('TQYtG!Kj'JT)l$?o)ۗy&h%S* eV95dT%z+M %>oUj ʰU HGC#pd㗍G9.YV iTJ<v-11\ s(Fwgݪ\OЎG\i۹ȫ;Dʇq 0jP ڟSH %@Փ{(gZYO3lma8Q 7o;>-3~NH .#WCB2ib|Ge#~+a>.h\㮘ZEm%2VA*Ufb~4<<ɗsU(!%V[ԗ-팑OWAE:;Du* f_)7\3 ?j@1`hz1ӥsӞݰYǯ^+ƃqQKظ^?7@̈N6W!u.ⅱǥFf-'A4é OU$08C<9ђo|R?"D];[gey1 =˅|ِ9Yn 8xyw,)5(*Q-w_ͩ5y;Yvvo Zƅ4f}'l?>j5$MO FJ&QnwjR3gԴ8fL[V,S Q<252m~pa~2`pYB׎vйQy,)!6Lgߓ7NtSid{=u~'h0/~-/`q{5<`tXqV^"BqXCl0ϤL_c^ͷIC1ʹ@:EeQzMX' eޛKR9FRbeݡX&t+zTلCWo~=0dt'@O/& -ML XP2 C#JRЅ}x7&~V' o_i k,Q$D'TK9Q涔IW}phC\CA׾f&b^2v0 ێ4 *~PrsTDUVFs@Tt~]*ŚbrLK endstream endobj 59 0 obj << /Length1 1808 /Length2 11010 /Length3 0 /Length 12145 /Filter /FlateDecode >> stream xڍT-)PܥwwJq)n  Hݡ8BR)nŽ@.أ3sg_뽕Ow& $ 8qs %<윜httZ`g;ht:  W t~I/% O & -(F'u/ќ %$$G:@!e59 5=0;މ eb 'd=2@hk4v4:5O&  v`s)b4 ȟJ:;] #hnwB<+%PUbwvwf!vNЧ|+l4{ : +>M|N0< B jo8;' ̟݃˵@ ^A`1,\8!`G_1O&lV g''[sn4`4l zAr0׿и`sg Ad'~`$?.fysj5NII;q|r!PПt?]_ Z*'݈Yw~??~=㯈'8?m2i  su%vw>c;ɂAj`gs?]ف! 5`v>=NOzZn)1Z2n>~zq>I ?T `@RO,07m8$ACo$=U =AOy3rX r8@˿!ou_a/D/(|"bz"|">>ৃqxR+_ԹSs &yl SB9ݠJx:5'OO'/5`Oo$?`d675lSB̍ms7Md&69X/LDO˰+ā.uKy{[;xfqޱ}ٴķul2]1ղ~ȹW-1:Uί~W<eP0Ee>MLFʌ{5uy 7cR! '`;fsT۩ĀwxKr'IWa~Bhd%Lh+Б}Nxhlux4@k}"4\}Nr`N37Z`4Im3'XXwXJ{bm;a;IgI{ N2Լ6r68lCy36&Alx(5G>@䲦xno('aѤt^YgԲ$k??mtꪰK1Llmgv5`"MIٙb;u)_xXjzδtrpR[돫Pq0)v.jT4)!oDB`+ftjMQ禺0J3% sbWŤ""|?R῱xȵfq3uK"gJ(יG}lL0~QI ۜV0(od IyqIiDro{6;,%@u~q0&K<+`A-ʀA/8u?I'ݓ  e4* n~37ٞzGp@5NMp.Tx-`pSi!ΘeBb2پyyc7v[yRgYʔbCm9QvC]uɌ~5A|)M/0^77h)jwa+ &bY"-<C$}_ѭL % q+S'Y)#`s{[e|2s_+_F|W3q+}^Ge)d*W*[tEiv+/.e7Bʢ@|tCbC!"Ʒ̤^[wɗQ\i0TG-q୛t.8XebWQ%55x8d{Dj;&7Be:L{=BU~&0 lY͈d/#5QŞ`I!WȼT)i62'nJzYSv7g05L&O^&J0 pؠt[7kOʷ4"+wD#u': S}EG Жm7/WV[B%#VID?}$[6OAjL3,z}|I"֙RKnɭjxܬe|k <5~R|C4 qнd{P4GڪMN(Y14o:Hqkg_So`xF[M':٘ $Ȭ"^tMChNXιEIuXR\UdlaQzb~zjy7hŷtyW' ,Fh $ă]$x13B*ғ'k~7/ ,sKe>iXjpRy˨N?X*\| ] KgjL|BEp048lPXf`ּ ViB]E= L9U4S~0 (6=3]Tx~/(/&wTPs6IyֿZb7tģ泍EAU@Y\w[]ҡ|\LD7q kk!.@=/mPWb{=+b! %9%@XjbKh1(=03 B'}舔f-UV*S5ql5V_Fԙ FIGhJ՛oKBlno]*:\Xj,.7xkw<̕j)  #ޅlE醫T&`nzQ>>R<(Cρ6Pe.Xs6 4j%JC*]'TUD8 ]ͯc|WcС6ҡ>|XXZ0xkT) +ژ9Nq5O<6C|V,D!v2s!-67eUri'!u_A^(oZ/tHT'cnϰ$正~Вg]= #=*~~>V9 h(.`Pd;nK8bΥ&zn>o3 KgQVui=PV뿤bXgJS*I C!(۶ $\A\/e݁!+T5ǘM|B'Y쭦ʾAwnߚPZ \TТ!cݗ%}To+m3A{iAqm))N-,b2pk0dj .hUE Q!59!+Hgdkҧw-YҨ%0Xxp;NiT߭ޣ$Ee7p$,˵W/ި]5[]nc'IIjc gK֭kR:Tx8\V[ɶB\--o R7dM9:I{GPl:e4#DMoƌ1h›g@\ uϨU½Yv:w&u",/pZE6Ű]b;'DѤ} Ƹ^b|ua8vKþ/']1GyHRjLC,Ut#Zbvq0Wݤɍku"T,Ht@8d+g2\jk{Dx 5aɘ P?kF8d0-FPq7l=pĂ;״)sfQ+й _y:1 {h9![VQϓ!mo6(b!|(AfvN5H1TII y;4wj⏔4/o&QJd]/t)ܑ jCl}pЧ߿7:jZ#dN~RWN7?{nzX4O  ϐJcv*j|[tA ΀w5HKҁ2 ?z_vd~hD;cCP4`' 1# @~ZXP9wl玐p̓=2M"LT3u! t℠1> q/}uSW]rD(Kh7d#~S^ֳ#{6՚> aNu36D }=Ӕ%4&i"=U4=mL>|{OQ KiRkw\Q'Rl /}wޒk#5jRSk6kkD@ lU]4ڌ+2ׂض?/@x}ZN5U^V6hx,3Scs7uCَ h,ee<=zE/5]?UB s#Ɍ{r%+Do3|`Q(IaNgQ iz~%/AbUAIČU1/p fy,FF D9R_vJ-֏blllH/e&ք!u;'>=zʥW`t%{01ơPCS f8Eݩ}L3A+Vy8|Nn˪zNh d/>g5V&z ']<]fX8nH8Q_?Rgr-:|eNq '}p^A^"#Wm 18:W% 'Ɨ8b'>&٩2+0uaZM$nO5TλLyqؖ'S1vTeM=O/f5,s4 {/e}}sS7e ;ɳ:Mu^ne^ڏ"^#W"`E3$6OB@*Wt+MFnCB8BzE[ N5efDd%0*: +T~Rm=zwqmVtG+Mczʕ*%sVoH%%_[_4U~: 6d٩#eEHyR TԑMF"eD g۾`KV{%eNϧ[*mG o<}m4rao* 6Kٟ?tePX3 , -4\@.8ҿ/hNbݱ3:oF'Ov4t MbOaZx fb`G£Z27+H]*pJQPլdXX.Qo |I">?\&$EPfB85x,!?76p"?Rœ!ҹ|VG},̎;m\pJd*BrY,_Ck=„(r t芾" Ck.@Sus"q mi~`חpmNe}%˚pZ7E!LzWiwk&]rJTUt/VYS!/|uY-t˪ʬp9KD*O_ώ][FU'ՐO#x;c2WثUʵ&8]ՍO-<,Q)/ӌoÝ^$E%?bR2 HU61#hy l{FñCenZ2 CVW &]ٱqy#JH?q] ]!nc{LҚC 9& Rar7~<\{CN51_u>nyOPP8|P ($I]= /DfQe%)GZq\Bb@(Oll,$!=~^z]9:\cDX+mB 4gux{}ymX }V1!j}i%9)3< HRgYja$ԅ:t,dP++ B:R: bP^ɘ{zivz5~sC6Cy 1-.9QWNB(1A$1a61n#W)& U?+}<9kO᝝ \^~XRvs5x=bkP: CD@\Ƥ߷=o[*w[#nVъif)~D8r<'QbIoe'k |9.J~"4K"i|I%ϣEiS'-²C)O+p?~ᬛb:zD̛U'+^q\`(oel/=q|Nx T0BZa1);J$#&jidB#mnc3}2- !nnA*T^JB:N_%^( kX$jO&yHV࿣4#]i-\N]IutĸO"\۸-{oMJ&7,&G!1$[Su\:I3 {+!Ϊ݁$&U#G.c\?X"~_p{QL_U3*\D@u3[=YgXVf=Uc7?w;Ɨ/>g^^r:1KIIߚkv;EaEd]BH>! "^m ׶7cLސ N%:%J!O/'39bFl1ϔ]]BUxqFd5Gk{ 5Cڛ zQSbCI9xʀ=` JBbV^DPJQƧPrHE>;ip#Za`^}8%bFbڧg<ȃ6ڟ=Rp8NՂxɿJ 91MackE@robI$b$5 R2b9%;Z`/]ir E8ZAŮTij;=[4>{h);& p\+OW;j⇂,Cbp{vl1py3 W%/ `#ů% > t59~d{{ LU[~C-2pQ-npj\;!gX8CŽzL'NvrQflw uEr-Y(PGQuT6ʚeƋ0zTp~VЂJւk9hj~$P|8̱4pHSR_0NK,38fɚ(] ];%gxȘܼ"5ܓӍ#(+/}k}# +IQ R/cc4={_k,POk nvU7<%-\1BP^H[3&[ILBc<rWb~ykQ F֥eH꣖'ܫw=JyoX?Ì5W?zNJ(TVԹ~in*&GUYHeD<{7Κ܌C S^D՗1S"e~cfHjDʼMK ɦ_) ݺ]&6Aկh-_pCс8 n X~bOlM #!(9h@ģ+J",h B{/-ȱI6ꟳX= SąD?\ MNm0b)߶? KE7aPXw 7c Vcw0 t!ۍ%7T3|k.avErfFWWΓCn;B;^9Bn5Y1Qb[@#")uE#θ~1@2g*Rqtv7p gd<[Uj7'J̮:E{G4ږ[40ը0H. >icN&ڶLs];0NpPzwe|W7D/= <kt ygБ vCkZKYMV-w|Bmf"!nӮհ0U}ā *<%ߪwG~].!%*s!,5gka*=J>ˊf OVu$eﳁQlC]Iy~1L\[pb=~5]ìz7zt#.(:Jn%c%{Vfwf)>,l(w0"qBvR{|I2YBFցVLcku3_ۣsǖLGߍEH*BYM\A%V`⸸9w.o0ɠ.Gsk& ߇lPͮD;|zơ -naV.sXw$IB8~nY&a|:Т%3q}CU}Kn֍2]Ut܍fq&SS+) l|jbH+f`#ž/Z:; .ߗ|^?tѽBn"h3 5?*ka~ ڶyB?MM}4?* nyFoijkM 6>AM3FΨw̟8~3$1@t8^:>Kv]7"M]shgrf5L"1WQDҢ|dn[ GU}h*4{/6"Ҥ[DL%0qct1ף Q,\ʘhvowo>)xyNpʋjf\m;wϥ^ZhS!1mO+9q$fe sY( ƒo4`ֈCu"c3dD),Pt䒀c$K{W1X2up*'_4;lI" 6JqXlW-7б2*@lLJQ]"d{}yTھz=rUΒ4ђHc<솴5E`s%Z) [_rHg`@##ܽ ?ÙaebʴZ QpDRv@fz+%9F&xe$n` J9kYNO2aZA(p]SHF..$+sJ̒8;PnQo0$3U:ҍ1iW JϦs)<n=6$j`+(-FR3]Eb(~$3,80[Aҹmplf5N.]!!7Rbٛ_ ? V=P{`&Q(azdL+-2re.kg;s})s{z}U4k/!wί>c5"MQWAxtUcPKp5}s=.t&l "|Tn}>L7ge6zhCwNmX~X*p;:2/"G2;n,ĸs#Ύ䯨tTԧ+Nn5q\Ud V#Y3_*v 3dM 9pfNAPuaO1L@Pc><ʜ;R=-陵':qNop{Tį5ʍXW WkCE7}ߤq!po>tk0*h ôg2g9M><l3`\!s1c -pvH~l*}Rդ?xڥ+t$|v<ު8ǩ (9)n7]tW).*ʤyp Fw-%M5}[pѻDflsU'Y* kE';?ٷPoѣ%AO1b =O.lۖ+.>w v׸*6жGV0R}M4uzu*<ؕJKrفuζmT(ٿW@:k, 6i\+~ҝ/"$64_7l[{h|CCkvwJȸ1xyf)ZD,y "qŔwo)d(}quD,a`4:3\ՃһI/01G^8h,|Aق7ިz]A#fJǁa-s@f'\V%_\?/\~] XcsYmzA1m;8ӘDkˑ88іZQ[!BÌjqhi^bա+, -Lz{OTqSiDS5d UU endstream endobj 61 0 obj << /Length1 2407 /Length2 20641 /Length3 0 /Length 22031 /Filter /FlateDecode >> stream xڌPݲapwwwww N@!kpw'g'ս*2O{^rb%Uza3;ș *`bbe`bb#'Wr+#::Yفx0u;Č@3+ ?v<1cW+3<@t#pt~K??TfnnN¶@G+Sc@hjgjtT|En4►Kgu8)H G@ntÚ6D#k?lv>ѕJS,z/ϋt||RӦxGa%<}g ԰mAWOU.s{nrtxxb˦B%&xn?rKyx㪺p"~utph`6V&t#)@~ e\-l\/ FJ'Uk2~mp510'IweP^j8ΖUl|& Vnf*f5`@=MJs4%V zjJqa$*Q10R0n/Np3R3xq%CHsn$nadUv|ccIF|L%0)|- 髃gAk0uu߾  ^r&bdC&_r+1\;[DFHijquag}LUJŬr&}5%$[s8knaSds%M3nv o4iB^^>K|$Ջc ;~V0JŠ 6-˰,}0HI%9$e&#"GHD.K͢4T!DFfPHہ}8 Dž`!7 Is/g\uMIm)DB,x1V&ؓ'iJ=vC"˹Bd3g#ZЭ-n,LAO1-lQfP&;d&ݡ~꫇cbN;{~n,vkJgAiad h,:f$D3Ubq]p[U]16esCז"*)RtʪbDGAs&;vلi!(}ONZuwM8K0_) ;Zhpm op<iH:&,,Ke.G jP DONmv*Ie? cK~ÿ,ڠ9FH01L(Ճ4eY^~n\WyEҶ ?hXT2.Jy hM|] UprNVNUP11 Z$"!K۔2M߽+6C꿼RήBTSzv}Ygy5.-Pv9+Ԛ'(ᷬQ>2fBҭHԪhy~{^؀ eV= Ѱ)$DJEu+V.YOG!YzB$wj9&1Q6T6&+č{33zlXF|eܿ4 F Ns̢@H10+vyf2=qPJ rK?*GKrrIYP [ml8KC7񘅇!%2aө?:%a[8)%OTMQxڈlV˵0ؓXOk>QhðFijr(4+Euz.[ 8 g&.q)m=ypDJŽ~y,Qb+1^CD| InX;Tp6{ͧZ%IYh$"W O;wRz$Sew̉c)Ǧ wܥ,2-"ϗuN'TW%tHF$zxTȸ9)l=*p]n4#zTD TDm~7̞a/zs~-ϯ:?xw!g(PBtkVY ZjhyY:o`aA\hQخ,E/JH2\40 ^@4"6~\,+z\&i߳l[7ERq_Wp^gL{OTLCcKQ%(2?f}uo8ȉ2iGqbz& "=EUi;󔘻} ,e2CA 6TSud0AmF[{vYNpg`7uqTbźNTKϏޞbhtupv=44̴vT,ixUcˆ>*4-riDW9DβT~;WØ -Y23K._]6fD.]z|FA1)Nˉp; ]UU9??&U.R$V.~~6ؒL3joݔ6RH{j=ytqdHmjT^W{xnOѢg繟A%húv8\ؿI"YRKi.4~HKS馮Q.zzX4BQfp4>w/f/LkRM2)R%JQK UgoBq)~!6vTЎ` EKFs m/%#VoWJfJigjڧ)#\hS1{=yCŏF 'iw\.d+ .p>ݴ+3xwGHt;VW3W |iwK--{N &$eoxˠ[mI;:  iXwlu_MMj;~'቎\4#|RvFA8/JNٸ4On"W]lnX 5c--7zO #?yJ|m.WT*aZmIA) MgWHڶrݞ?.lxF.wBʏ0fjS 9N3=&rP u?MguvB!xX]aX}z sG9լz uJf y!Ux^F$ F4rMP =B jɻsOV~ : 6=}Ř}V(V01]jm_ ʴ#\(Rm85ފR+=׍XZ>@ 1`q&ŢX*u47m"ՠsAhW~|p[;)pDݗ" \\!I%,u][Z*<$}GZB- $42KHڄU0{PK {2e;a?Z`PQr8\kTqմQ>.aW% 92Ӑt(|_7`l,q~7xn^3HY'?/$`Mͧii%&:;\?NjnB(u S؃7~H΋W 'j"Qn@}}5$M>P"JLs*>'Sf(6F^Z/7:ļgQ|=I'pX q*@4N&ݮnθ:bJ4pjN ѫqA5cyS]WZ+L|-뚳mlMb K T& An>ta: WU*P:Ϯ3I=y vh, _4OZuAB8Rvox5 !f i|0H1`NY=]$!G򃯕֊ſq!>?QWYc8LY4U-cYw/HouCo$V)}\x:yԪضu FϞ³~7k{I[IXizt =n<ї&Q1Q3"E'K {Q3Act4ZU>N-wK7հ -"!w:GftSo]20)셁^!|q.ۣl@XѭYWB+l&-gGo @yOeå Ǚ[,PV.ԃٳ}|rDe~\JX{KsFbU\>fN?u@,2T0sr>妝_;#GI &`Fս@>Jǘj *E᷊vϚ f}BĻsI{Xˢ #-P;h9CcR"&SLpDQ)&%Z1:-{=EXAFF,u1E)a{_^.N쒸=NMf̡ڹPڨPRӦ ꐮH}:mٻcM4`*CHK=#WR<qJx +!Cϔ}쥹RA")v߸\n /jh4,a''ka8Hy+='fY[8^-7^ɲ8l9HU4 \'+hkL6?))zrxeX39 B? x;rDz-Mvcξ k՛<}O]V:֞VԂ'_,y5^2ӮY+y' tg%DG&W]!D]H?\T38>Px`x,{Ą1Jf#-]QՇCHPXbRsbSyk붼qː_O~{Nϋh_i |B+|^bľOEfw o`_ĴvYѪ+ȿfw?bn#:wS76`۟hvh"_Oz\9IHym!.!)x je[ /@Sz5z'EhxPp1R:rWU?$;KAFL5yF$3؇B"'Kn+8eֵPl;UA/Oy%6(a,/KP/9Ү,,\t} Gn6qU Edm'ԈeӐvرo?(>_G86[__pm+K0+[}6ívjub=]It4+wwjWqw1CKU{+b՘cz{Wag,MgQ$ϥ'7a/ i]|)a?GW)О6t@\ s' (!;͘f3Xd:: A]~tyHHdz@5]J{J|Q9o#,&)nxto3Fb8gB; Z̫7W (9.\uT9E֓<zbuVA\ޟ"cy=6`gb?!r(h*uߌ˅0 Za^zmwkX4r>;$Fa/8'9GH׋VSa2Cb$QMDN\|,K-. k+U{\5~frp/ɟP2dCCDOS gn̑si3,H]'c |@@㛆.DXpUysp!Ji0937ov<;,#H6 1Y^ e!X}?{& _5wt(\__4r4VY +.H+)30~Qa)6(VLV?Wjd¼(@/$IX c,R,*0U7 L&I[KGiBtuAKm|~;.K~+LZ,ڹy@Nّ\t[5\ 뜯vgz)7e}v֌ZA_Crmu /Ny=eS)V x+aٜ.w.3'CpYQg)G'MYpƊw.)cl B?&*? ͥJ}|Y i,T_Ri\{?L{LDcYcX!Vzq\;X)> kvWsxƷ rRUIS]k؏b%ؚ/ycr03pO`M:>V>khailjJ{Cf@S%X_kYŁ,H0S |.V#arS)!ٟ&Ջn*ۤ-u\xאH_`HM*IWزaeލCf]tbw$Y{~]X;  o\#M$kr>Q=t V#C/l3n% ؙbcg[Տ5H{cHc{H7:ژ3i4Aly<NfW˜U;Ud}%hFlb,xOLM܋pJ2qOX=ΠKsKb B<,S50er@46\FHiWC DrԦJl1ɵF*_ufE>}A} {Q'5{:z +E%%Sy(zt8fȉ~* Coܠ$@R|C-Tbt#I'eG!7Ǻz`0<}ŲW9K\+Ѥ\ `R(R=/g =}:imA:lDN Gg# `ljXe'!{ps<7cuY,FRĮ*9WSiMmN郊~ht5:^Yw?-wDT#Mζ-w./kiԍ4bR~N TE/E1{'%|u.WtS{&ь Vl5\i?,Lo z#!)Lc:` ؔbwA: vm[m. tUCfڤ Κ*=3YHTpn$x:rigq g:VP(+"!Z2d,B h2VwgAfOjNݬ3ܢ  C\:PG4mҶLtNgN26Tw!o {xRi ЍPҎtgLf4Ƥ8X@?E[Yj?z$#:= ׄgµ:MiTy6G+uX~#^ Daq:.:|')U͘v|uΆ8uy4!Y ֏7 |1ԓ %}=(Ž>C*P3ا<93T_`|sdH73>IG#Mc\tk6fLӣ4Zv)% V2íz_r3IzZ-=UTgռJ*iT^ŗjӑigIJs9,bT;#M0`[v'y,TXzh+zf zTURlW 0ds7QE!e0;>FZd㐕<0MuВ+ms >PGXT+k.$@X(̋M3Su|4Ώ3"W0Y< &gHg% ,-U3,XD}0I3Mqc_6sۿ_\S&u>h+rcLڵk~ $u 94F$H?=&~@jgF}u@ID?OkgQĎ*P J֭&jg3OjݼTo:OHŢLOhҵо9A^2w.>I~:GlipyvWL*/9bHdN,hp:9W|q( C5!]}de2u8^^mws{#W0g:Yu}"LSn6l\\nJ}xuQ;>T|gxVg`Hp[k|"b؝?H(ḳ@G_adX|.NVcOuzZ)iz'UkeBQs4d5ɽoٞ=A 8<7o?U|\& lCUJĈVy>R+ڃa123z([R=,xְ=!MGUX6쎶9橹[E&YfG:ǁ]y:0k*HS "n󺪹2>2~l9S| /ؼJ-MWKԒ*WNJY-Q`H_ZMtʎӌ*1]lMgnY|=6rO^+̍).!^|D,(wo3B͵>L.xkI\ 9"2`~1 9 a?eCha0)PZV'-M '7^N)봋/+"6{_32-e(;zG\d5UK륒>D;K|6tEA{_ϵɓ\"S҉O0*QSM|TO4(̚Q3NMLs@ X6m-^hZ#Мb*V>MYX 68,:? ;7Ƕֆ~{>ArPa=%s"m7hM_6t'@Dz#ʆ3JNO~=m.^BfF[ v?֘~|n龀,`Fcto4xtOԼQ sT'xO&q (]#mL4|f{j(J})Rnڜp;f˗pxJ1a-XF~ vj&K~| Q;)BhFfn,9*޶L^[0`_(~EޑkFź3T׫0UK>t03iR$}=(Jlz|N=Gn4wI<^0_DĘΌht>G$lj/Wce:wrt'H||ʾQ,V}hAX+GoBG+GFyM~m8ɧh[]Z2X"ZG-BhGuҴƾwgø !q=y Խ[h eCoPYi:m ՚z'N!=ŵϛ^Rsť~GBfgl9JO;.QIxNDYOT= u+,&mIjtf ᠥjH(%\G"n2>57o엻1;պp$*Ɗ0<˻ SUa$jX/f%i^".c}e!ZtGjx@¶tǂKujzVw |;r`-*4qlӴuY1dd:p2d W5WW;N|m7e);z˻N˫ _2Pb^ t(A*Xl@ѱ4|R®!CEX FMf'-"¹Ƅ$tZ2u-Z _8x䝣FiW2Plzo%5kFKV1+5*J%~p5A󄏺 $I! ~#m[eD .QVCs(*i, /6ˣXsa AevS-~2..ĕ^|w!xN?I_GfNnȄ ,/eW'm(@Dv97h+xYͲ13@ ^p&c} ăirAt}xf1"0aKVN#zҟ ĺ~bLs5X E곃y m4tH?d|5J}Nź41E5!iHךpq/Z@uI| R8~"Y+l (RUȌؼgTESJHZ2U/By;~K3TMX')6(\MTC=&e uWE7 H-xz-ȃI?=:w,a3B )nGyNaCɔɴ1w<}7о> f(Ui䇸?VKw}K@R =2z1_|H fX2ys0&0R=&l>,G lZ7SABۏ]&BI H&>#=}4+؄fu/.E呛~ %_zV ęA>*$3?ޑ'CRyW(!>Ɂ R^1%V:Jǭ;Yo7XGNgcu29WC؅m$xW{ʠ&4Nq!QY/QR(*=(&Fڐ>OCn4h NzzD6-ux |`ގ`OƼ]R 8ґȥ1Vtϯ'IRA+~0КսNjC)́R* z7b"2eQS\&ԴcXk2Blš֧4nIvHj#1<^Tq͊{T )AJʭCPVSrx>ty#8?qLm/e嵰B|lr׎wV51 i-e%Z|"xoYZ-\]gWJ[kƔi0_2- 4fc#Cr Ooٽ@V>)}Ȏͮ`m1w:%=CUsBk- EKRyj^ *Eti"U1xg{r7;o#9*uju/[.S})azR"62"*Xa/niP7p|]roW5up i =.ٖX,[ὂdQ69{8mJMiB`iy[7=:M/jZs+Z&[`+N~fЂ "Y.b*QzjN**TG2Ed'x酙Sd}*T?~'z+`3trqY)XKZ!ITDQgT1vkF& ^ǁ{x'':]Q^тTָv_"%JK"sXS"/HXA>?o2W>וn6ab3zm6tjq43wA /ҽ\0 񝒵%}@Bslr&0tfc@͏6RpUPJykQgclh<+..C@A JB @Xl S)$ڴg-J_?|7RؔjE2ȁKiuoNG Z= { rzP6%\v`: :OzC)%c_36M߷k>wy A?s,~bRb]xa+ yr!Gth/؊*+/-ҬXkww~GoQF.q"iDj#a-Vz#7eNȤ, !֊_x,\p#NbNM4KDc;W |>NTfoŏBʒy4t_kk 8x|7㌓l K"t G[JV<@oP(:/&9e!L:J# uC8.2M' eFM@PbUNݥءgssէ}&dtSO HU/Gnd}^!uvB).<̴(gE]^fH 4\Gg4m-3#- ex!to\Bɽ=?IG[ŬO-^o$޳8gZ jqfEd[6î{^̭AdixuY YEϱ4 0HO hS6D< ΰ%ChN=({]Y`2cy G`ce\Ȱ8ypԥVRέV]MTٸU_{?ӥNaǽ4ĵh50+ndCKSyuoIVK+ǚ*DU8Lᡰs|hod|3"J&^b&Y6``H2pl"0w0U/r=0y{5v#ý~X)y,G]k@Xw( 0fGϖ)廙?Ę@Fa(MFԣ.O8^r_1B!,#n0Vj p8rLU[6,Sh ,4jŕ֑ _͌.ZIUT8u$Uu9)ʹ,]_yCߙL*qȤ 픢6@.(E$6+CW$-b׷%q+k(qQnx^:9.{oMܩD`Dp&Fu存2K;$f/2OkR,K􇔼yR &CӉF7sgHcgc'!-V> M2~!{ѢgoVA.m5B A^]_u2q{@DTFLhƘj7X#=& YH,WR".0RjLtU5^WuɷlrjW^OS;*7a ia[z.ΨPdكH_ -\H Ts {'^Pg .!QVy$SaݭZ48׺av9 !Akаwڂe(IЎߌ^ЙeJzɨ'l~~ e9!+Ź5R<:}cw KF5}Rr۪E lg(Hv`W ]l$x('`U[yr;{FhR˽zN- /Y$P88QUX L M:JHѺĖآIy[ϭ~HJ*=o*NR IՇYZԪjG\MX+33@FVf8jךmgoei*ƻ٩p0cKel$}^\ +6qoK0୾oLt~ǒ]HPb%#FԽ ۶ubqs[Xy$6 LF.~f_toIw ZmdNSz\!i_2Wqډ?sIkZ3;Ӏ""q7g)$h(\X*U5^V̴9l'^ι/ ).ql-) ީBB`X!r{0v#l}e :z ؘA ul =BOegp"l>GT9DD,v%SLc78H ^BQ~Yҭ]=˜HťsPTaxkRc.oD^AD++6baOKQ5q"QP˖V_&vzto _oIǯp?߸~tB90AAUҐ,K R`@;PVM A8~3!_S¢))%XV+0nTS>_uq"ߒ*tMT `9G:RҾ#iF;S1Ge:\"H6w֡kc0#"쪍!o雕a#EQtf!8ޒoca=d6;St;$/pgf^XjUFmTԵ\xM'^U)ծq~\<* TbdwcیU6 ̬JnʨS3 ΔQ \Ȼjb(Q 8}4Y6.,I_ Tp5rubЏ (`2Ȅ깚_fVJTF8jw} jRwZ&!++YgPlFc:|Jb@s#s=w}s<טHHxSXkܱXS'T!%rv{ S"*^Ml}LW[7#uEyxeԗ}-=;7ZA0 /٘û'8GKTo*L2Μ0ڨeW<ͬ-anџ$T[Sޛ0&~5ˌjLowjjB#ڪrmۆV&KѦRP| ^}ebrL^W{:{x.o* DCpy[LBKEX\DBvdLN"ExFQ4AٿI'gjVbn/6A" qһg<ԝD*M$@ɽ t.KOu% ʻڻnTud=bC Ή~S>?{xL[iy-נt2JL5cIR`ycÙU:wYGqn;hg&)t8qEX ø\_g9Q s TV(JA&kKR!ywOw"qϥ]R- i40R$|*\ W_57|ni6;eN1%[H')UWƘ!EHHA-V<Npq f/ 3)<$RsUEm8)o2y{̝rJAtӏ󣉩>$VNG5x&'D~(<]?&|V:Ω!CZ]cjk펡NPLxRAK-a? cv:x&Jf\%lWUвΫ{$8?Ǹ; F(nAHr;V ~sS)%lbt\Ȅf++8wS|ݵ~shRS*1(y%/ۨc:沟8̚NWnfO^̤ Jgnj%L ߚr*mX>"Mtr<IFoxWiDLۦҥ`]*@Ub49D 8%lY,d$a]m9荋DM'\*t endstream endobj 63 0 obj << /Length1 1636 /Length2 8746 /Length3 0 /Length 9814 /Filter /FlateDecode >> stream xڍT6LHHw ]Cwt C 0 ҈ttHHH "9soZ3zgL:\VN%'(W@ .ˌŤB`b"! ăMx9n^~ECt@P+7@ qbwrCmle f su` BB*A'07ѕ n# "lWb=0@s2n,&-O5 P0:*/؟8 tEN A0/(` u4^p#<7rA@?:d :#\]GaVNw P8p^<ެ=¬ạAT<@A (,* `[u!8y&qvrX? ZC~|\A// F,!6P??áxߟ= QP30s}rrN.~ /@TD ,wM.6pJigk7KA?7 _J#O࿳4 )98fq^4xпjsg VP7 @{ qJPO&S,~/tr~U\@6 lr>(aq" d{ 8| a h sB<X;~ߨ G$,yhD<f}P._* `ObN~|H/0Nr?Ts'X:h ǻxBXsN`PЎZY*ϒLil\>sN+\lp"<ݭFdkߛX_HƊvei0te|o]|Q!w2幸j]x){6/Oojm=Ǿ)Ջ1 *bʷJ΀yNx7uz6I;vOȁ3x/R.4#>roTf|JW#_I;G_:lzok_w̙X)yPU^Ŭ=Kr,OB>XT]T9~gʩpnm`%7dж%Ii F 60Fn Ē->.7Z(Ҽ fUK?92u=龳@|ptur0GNajj ܮmKUzEڐMv& 21%+#&K]l̚~z5Uy"YE0.[P"FH),FFݱT?7+Jp;&2Hx?'He.K|'VVpOo`>"|Zs"ڥLh^Űwg/`',J3,Ne9)If'z<3-^ >F,ѭ!ZŘi:F1!m~FD!stTi4fL>)Ի"(G>"QYa&B8!ck%Ǐ1%37OlJ@^o7Z-OEI3w)!1UB}9SRT)1"R)o@Q7%L8i22H$?X;%F,r&lY+'9D2éD;ʾJT t%QbB\F@4#n}[X,4%͉2 MxU1zG'Qw|8zkǧnOb7=e>@uQ+@:HӸk8 >;ID2,X*jdik3L kceqkw_=!) Daxp YS-+{-a?FQd ٚՁtB߼1KȸZsH_$8<ک аSLh2/!uϝLb`QqDNVY3~1IF~~Ե!GSݯ`Ed?KdJp0FVL=JSCebm.<+>\]<' ncMvzզ^+f5323́e$8{QHc\ /_mT¿oیh2%TZz3oJ۟m,j5],)"@VJ24& VSxdT5`<< )M~c)hE4ή)NObK%Sǧ]|V8̯4?"m_3E+dYYv"yU3p(k^OJ~I+:ŭ\ Mk.}z)0GQ~ Gմ9xY!Px9tKLDV =C4&sao"rw[Nnk{+xON:g̑lsbgSϣO1Ԝ_wjM)7𾐫#dTݨGn:p|{JLF$#}6 S%$H|.lBTrb[J-=eeaQQϝ@G$=""DG~} p3kI21]kӻW=pzlt=W3KqDdXbcyH*G@o㉭|}4a!YQ%7HO;}A#:.,\e18QM  a̮}1q laVc&A0PT)'a?_;K,cDQ>CTKP2<2yjxg׮e58]QR͵_;am:c)hXua O{wh@ɋ ˰3,9mBn%=֐"U-[%30aE j컟Q GL)| }UQLE@>`ܬD!qNQoQ*"ZKFkb6 ѧFF_xyw'5d7yV0+Qm]md]QPp6>%4&V\k ;J^YIܩtQf1LY Nsbi"}E1:qxḱZ. (-=hNjr@ m7H ٍԦrv7UN;AI݄]lst ϥ_<'RB1w-DR6^h|[(k% |w:hz7Nŷѹ ZLޒ}OK$ZHTS>6.D;.o41^6LUJj,[=%&b@) $jYw%aF_Qg@u%+}N*%Dۧd̩Ⱦ*YЖn[Q32 z!6 ʎ?^'K-9U U |..Kvn]ӷt·\[ 3QyF  ԲX1T hU3[ÙBVUg mfGudu^DnwXEpԅx+<*d6@5kJ٤k%~g0g?:Ⱥ($4K_Z,[?Wym3( o(8lTSAdoH㺾z5JaP {Dj;G5l|`8鍂`U9<](PgجayT6X"﹦f~u\$"BVK լ w̷c̊ĉ'HD&K1$1=&o5WrW;mY@2ؙڮ&-}`SYG{kRyDO:ě A[*S^T49xBj%M۬Vz1Yga*ǖwQfconrX~"7đ MA2 ۏy\/F3XDy:6\"ТNȾ׺*?4-"?REc b^Dh=o #lW#agʼ%ŪrgB!qU؈kn75ə͘5A6;d1J O熭55Dk_G+;6 f^ʆxy&6#f#pez\} j3A30v`xL[h#{˦M5*໎ѡ;tc6}2b]c¹iP>K?q.#?,|t45 ;H'cL3:ѴoCJ>}r 0:!~ >茱-;=!؜Hp)qHA*mlxj=ۤ:xn UKnhK^26icJ!) 9v~Ҙ/q'* 풌Aڴ#VQw7mN9;{?` S(^F[/ҟŌ]SP&QT4yADcw4잂Z  )*&U.@f>܃s)9i]j)$ ˧6zAgz:j+-V tďl7Ig&M[t EK,G<ѩ,/@moMQm %?/Rg~cggP^1}O{ajR'xHU麑7^Э̔hEy듄 [&]whh W`Lh$kNW~H)V_,gwɿtlņ_/nNgU񳨱oBff񏍉t-#xFNNU,[07:$@$=@Y׿X3/BBfv#61J}o|XyfETd AGx8jϺkj*p t,8|/.넘Lkz9đc(|qkL{_xb{^ ߂Ӻ"b\7ۅ'&vI)TaٻϥǔXdz-?xa ԝn4^i,3*^cz#R&5jEY90 GOn53HtBUBd~Pv6Ï38^uesvo51 k2OOǥM tX埳OXFվF_~eL k%?I2fvv ͻ-b1)".u\ D Z4 vRbfA vLRg[cQJ8sU| dD6YMcyiP $#Bb/(]t^Uj4"ŝL8lB-gp)ZjHp:zD[߲4c+(9-8WfWCvT>0.ә>EZ2N׾}JfGj1[@q 9}/9{)j/B Ag&,K[1W@UJ8E61̓{ JN mzݗ&0Nrnh(Z{V%,;^&wX6/\3Ȇ3n eQ=xKaڍk.;>A>XQ̙Q5W xR Vӄ+R~ǥUܔRpvP kֶ{I0b,zFZML(dcI?~/4#-N!Ukew50CV @V8 ,I14%U2W݇ ?eGQ uL 2"m l+!>$dAS?r^12?ՠ 7䙼_qʘܓ:+Ù(ɒJg5=eXRN &;at3uݨ݊sQWdWױ"FFv|XLsqgdzt޺8"]Įٸ0?N0zbs[40̣=hg'z6f ]կGBCri}϶~fi<}# Y[mpkfrYqeOcx#"\ʤ X 7TU" ހ}[WBtig=ֳq?cJJ|R%>tf@$VT#N*J3X[S \G{wSrwu`#~{n÷&6t&#}T7pnDX1yD1XR5eT=m!W$KQ52u8 CYbl+nyɄPʮэiMxF>iA Ww՟L̍J_?%K q.-Zl03F<>WD~+F2P^4{,WY1uP/2p-l!f:6X6z!T%WF2w&/sy[vNx+f#ԕ|μRHnP *z?1YqWD0~n~s0Kk ˯'odeXג퇘Tڏ%y 6e_z>tO(sFzUˮϱ;YIE!ߍ+X ~l!s:%G}_3(q*%3 :UTry#$^jݯ(T\]B܄tCSEkȃX|ނSR [G?JEhٱcWSՍ?*ycɡs6SyH}V !w{) cge Q)z]r=tHlh> stream xڍT6LtIP H HwwH tHw*!JJt!4ȇg_֬5^w=w\ac疵E@wn>8@^SO llPw/1. D+~'Si"5O','"@"] O-@D@p>P{c`sD~dW(h  @ B}]YˋwAKsp=b U0@  `u#Gڹ{\!; <<W}U 3Xx@Pog;>P= 4xܽݹ /C yAa ;ߙJ]v:AaJˊ[y$AO ߵ݇dH/_U3!QUN"bB v[K|W3`wWjuyBVl`w 'b  0q^H5zurrHo/_E+ ?;$@Ow]Ož͟;?࿢8 )y`5epY;k"Ɛ?; zWY=6Bݔ[;Y - ݠn7?;nw-οTD6_Hru/$[E[oxyH;]y;+ x~#Q Wo$vy!\|^_Ƀ=\]7*}W@ 0 ,.J֋{kDjm8w޵!K̐3ٗ7Oeo|Ŏlz|wm7Ռ;7F7lM/=:n~7.~FNQr] El~Vǻ.~f$p-&k˝7$i-Z#\go|V_N?]*3wf6G?%+oXFA,h95&v˭n_Nlݳ՘ސAX8ߟ*~67Uj!?ш.= )6AC1ﻦ㲋e$syxϽln-Z'gJbJ3B~.1'46)ֱV8G-Ԥ$!q3JWFo4UX6g}̔[qLU&k)N.bY*7Qz{䯺lO 9^whYWzL1I2[At滩UkR; Mz땝&㶸C.iF~evX?HmЩꉡHr\ Џ{qT(4B;\9(#nrJ׻RJG~hv;c۶:ܾ%o[Q?>-?>Ab0c ˴+Yb9ª_=kXKr~Ugm41 (Fic948I͛1c.<繥?_4bǂ,-hVJ=~eP!(=`žk&\ l M'+s q(I3A7nAi(-b'DSapT)lM^OVI[EuB lglⴲl>!Qb/ M B7ݙFasr̉8ސ8.8ri{OF6.xD5.wxlj%9 (iegMDyqVs'3 Q7kiBQ=W@N֟Q8cCx\j~êJٗ'~ {HK-PLBAZ)^BtAʦlw۟?28 EyjTSoÓܫ#>#ӣvfqh^"!i_WZ/$?J)rpr̛Kj9gP/Z2M(`S>7@ ?/C=PCI+2@Qao) )s"aNQiZZ/aJ,._l ~lg( ofJ# ’lXl0'8 }]wiB+y]Edr+Өi!]Ϋ2qyx FR.;47Z禔2[P%0$x8s@}Alb˽3HPfom@Z~{H_#>Z߼zʗE=;)d9g|U$6G& lE'(_A`ɼ;%ݼ,d#AHrχgxʎƨ`q=8$m!89k;*\W;U P!S+Kit'$'tf8khpM䚜ړ{cRf=!Z#gResay ֎"w]:݉7IBv'!H1f 9ss^sGRǬLH _KٰL@~E"gD}SBıVg3m/nB/ delO,PJ6 (0]RInI)>ZnHΖG.s˼}P4V!{ aȧ\w3:PxxCcz+ziOKSaz=2~/&(hSTrZ`F~Rh2qSJŲ)DoRkrI,1͞ol[PlAT]dGcѾ+STX+̕/tpW>[\~N2{ʃeF]@e8&իlb練lz/^!M.LcTcJLMkon: [ BB>0.Im(h[Rc+AnT`]e@+O$߾\P5MciA٩54_OR7yzk6CZ R#կRj@k| EmtkT_W;ծۅвzUs>G*4wDQO2Ʊ׽_ fWUL\rׂ'bƸ(QxS)f@'y咲|n YD= iy3@IB>[wmi#TWxvV= q$Oh8u()(Y~FusLh-uLY;1ܝイ] E4W kء#PkavE Z%/'v W=܋qD(35S.BGմOy6YzSĐ”Q]䧥;mh(qZ#wo}A dl6gfuvlo04F5 Oy@:("G:)ưq"逮ZƬttEDS![&-{)Y'D]-]U:{,'zɚ,l,_{cqоi )+6iznage[H_|H{c.zA_zUF#4 ͨG9 WNVIC?ly+X׺z9jU*xY®L!XԾ!^Am6/31B| 5$|aJ l2:X>rg+1c> xý }S*Fzȇ)E2>2rIoL̕0G;xpa _+9m*@% 4 Mr&{ ;,6daJT<Kq#X2(b夰O~[PFTEUpI^uY@V2fC<^ai1Yhw4Y6e=-l}ȷ@oȀ%˖>ΚMwEFÅYE}'\8X]^[RHr<,s؆!yS s3 #~D$E4S u $h զ5%EMSd(5pZ &-9붒͗2;J s1xQxo;R"ITwڣF* .[8-~5Kߥ#m $n)4 tԃL9(9il/}ʜ-J*@TQ|ȪY3CNðoAB5yMA@hYWO=yZIakqkK뛳EyV41g{i\6>j_a1]jMWzUhPfIT !Dc1"F a q@|l7ci,`2Z: B"."uoR&r؝`yF,ǃq;}XPE:q t)+` 4GiGltc>qU8>"g/$Wz9׎m_f#2 KUV)ƚO]%dv;;[H-ZeM -J>1&&0Bm0M=,i/)|ѢD&ߴdnGy鈪3\$ Y|oG{nU_IO<%$UN>S[q<|`{{Cco^Hpn5*f9*J}ڋ[x8Q-Ś #} PpҒ1$=[&a.2j\r Z;?_͗^i29^|%o: 8G,+ټx$!ܺ3 pοvG@\oCf%I^%~h^}qD!6 ܙ!)ܴd Z˹P- ge0ܪeL49 !业tNyt.O%ͩ'Mͪ NwoEY-zyv '+\:x5 YP.0I-ԍg-I {4  ,;fÜtkqDOL3;l8 lңseZ?Zxu endstream endobj 67 0 obj << /Length1 1373 /Length2 6096 /Length3 0 /Length 7038 /Filter /FlateDecode >> stream xڍwTl7ҍ #FnPBc6F74 !tJJ7H! !Ny~;;gw3 #E@5}I$&f0/- !ˮQ:qG:n1,d@>0G@z~H S_G "##%'E `8@rc*BnSE# !+,+vB y0 E@ݡ"\`^MN(_0 (`(  w"Sm=_Ww'!;`nP Ꮏn^L< s;`4h y`n'd  GyOB0[sp/<௳ {Goas8FE3@R2'Nnc8aF/BzCA08cPd#ah5<'[ p7\f:VIU @ sg#0.@Ն;!25ҿy&/ B< H|O ݿ?hz6V;o;( ]0ojD& u4 .A/oP#ˆahxaŐ%5ovJHH$؏sI #a!8 ` 8!$S\ y~+Ș:(_ H$f_NCh(dn|TvVrWpmDafW0`0:'|S%=W y֫ǭo^%%-VK|GLy=3"C-MnTHsQ ]]0=f^-KzY6!`oV X;NKG}ts:oU'$h'A8jU4|LԫɊ. 8WFLPi"n+64M,lgA-tejq uY<J |~ΌXz^Pij<@E{H6̒z*֪r6YwW͔%IOǘ=OC SAQ|`jo0(97!7q3TX ~(r'QDREE9/$6Z#Q QiqJ :uܮq=.gmnXN|\2~eZ/ SߴJ*K[ "`AOt>>{{\S*gȷ ^5Z踓݋|lQ_tzO`Qcvԥ{c5.qv]_$[7(4$ZyP,l#l}"kU[/-uinDdH>pG+fܚz`{AEWrkl>^yӏ&IqTt>V48˳mXmǿ`Uޒ|9]\Ti=&Fu^V—LkvCÍD9)'jgVߦYwqHARK=O՜4r$.4me] 91 ts]4)Vyv!9_"~ d|* GM5jH3l=xZʼnĨ; i8=GH=y[B~u:od-t$х>gv-VsOzmvJ/11r QqΎ!enIdRPY)/;<Ig^\]RKlu#5dFTڭ`B"#ֳ{ 9T#t,E/yi-i;Ǘ dZiiɒiRה"& NJA3(oSK˞01/|bCFCE@7{3ZlR}Qj5ʊA,Qx[4GG\8Yg3X^b%MƵ^8ٱڰ,X斞Ѽh,[gp0ߺj)yq_DnPOgYҷXaBs+n;'h=uo ﱵUtxZɷ,#&I0SZR=. Ӌ)Qw([r}FsVoȴ}0jg-@B!˓Tn]/Շ5)ۜZ,$Ģ'V6֪vt}v pgJztCXL Aw'*dw~in0>jBL[=lz+A`FR~>,%fC3f&n)K"ֺEyFM *VQg)&X*pǀ #Ȩa8@Gg_(*1lF V_Г 1ՎdT[E+bE蒋:y`=.Tfvt{ }LTzJg2U2f> <}՗'CoB19BųWFsXKUw'w)v zkjsȃZQBM;,/o#v6>,l "" XV?Ɉϑ7AEY ?0Lj3U5{ȜGͧW #M0z^#{1zD(źMU>)PY [5οДEG>>PۏOj:-%OԾ\И~\8 sXƭrH/} L^e}NO.( į{? qp3;|+q,Y|(G^Cq/&?gIU~Hgn›k-W 2K%#[j^%M#҅HDrin󓙿\K5r} я;9Y4TjP1c2>ܒ_hL[_^:cKMWf}pjgݚ7sD0T=[X鷴9I UK[yV$MyS8gIYܸ=̈́6*w) ]I t)Rut6Wp8W' /FUT\p+s?zm'JUDǮ9WvMhNw/zY -dp ќ{ONU)vf63V{dHDBt~A0u1WcΉ~f,Dǜ4/kn_vM (mF簪ŔK> 7k^?~\& !i"뭆l*Dە@NȚYRGEѮBȻ .Ⲩ+CTZm0W(dI?r>aV1|R43or/}Be$yى9ْ?N >#~H1*3j07}iON!zN$WX?;Av5njsϿS2PpMJ'OS_>k:qt3 NOߏo8|\n%T64*xƓ䫂g@S[28$7]oN1X.6=ߛ/$9 ţjcb!+Gfd$7t/y5:)vTp<^!cq! \8AM4 Xy'Fgؾpkט(=9O\rB['B3N#y &u{YfrHT'By^$."ו3O.`l8aIE@\z1~W<<iq9<ɧ>}X{ǹg'cԀL|}3usnB\"އ_ QI0,p@v珆ϵHkgiάphVoӉYJ9abV:Brc٪=]Ivo-b D'񎰇l,bɧ"صa{^6W*8{m;J&i>e -`G ? {+y^PZpvy*s%gSE| 3IG$^"汞JQ~e!72}{D5>Ju.Cϐ+%Ҭ<MHE_dq uh;߀TF J4U*7-"yXz(!B>u|.;֧H4]!:H;AJOqNJwOWXyRjYiiκriJ#nPQiYA5Vb w7cfwSY~8UQS!6s8:&*,p>G5K:"{ '2x+Ԏ1%_VthE1myZYDbAogogܾ3,楶`U._C@襼֣x VQrw7?φҤTo HW"I]:Xh@wɌ#83E*4<;;A x3Q=a×@ ~Q8 54~lFk+m{lv(V?mxnnNl:"Vtٽ /TnkΖM峣q)mF[6Ē)CFw?YIXȪl](72)-ORT,^| [nZ5Dlqq|M> stream xڍvTl7%1:I(nI 1 ch$$QA@$$.%E@RywW_}~uc3QUg\ ŠB@uCS ,!XO_Z8F/:uP,z!@.X(+<08rc@3]m/8/gD_ "w'BCa04 D\.O8𶖁6+;B=}x u;i R5B= <Oɚ(gu4 Ga}@`0G: P.GpY޾p]=*tp,P ȁpo << B{]#C.p_x) 3:](pd1]0x ';<(Y.HZ[B68Qqef1"X] (W[W~o_obG,(ۂ0BoGUBxb7DoWK_t5;#|mBPEz>Z1 s *-~}( /U0ODο%.% b0@~xI i ` H CB.h >% [Gab0x8 aI4=Wr)Zf 1-4d/s"1Gt5Uf/pobRMςRLGWS#mpQp_x߉ n$l1.d<驘=jRZhEmD8 VR(^C%^0 d+Qg t2幹O; +!Ç8 =O⹢q[ߒ8vڡK2 W}\nQ6 Dcf2]TUyIvp\ uyΟɨy|uI:.\:4=̃?nn jnj-7=. 5\<~UO9s}e}6aHB@: G!ZX1"-(q;E}Z5eРrz-i,l%mղݚr1SB sZmB8$)UrI1՝2v/GJފc{vmf |[˃(~)ҦPݯt/}5$Lȏ2l\}%6r:JGN~%@8>.X-z˰f7*sonή?,ʧ?tXFԐ!uxNMg@ϖFy=iK3n3CHxN~MsL`xm6agA8!ZЅ@q.ȧv!@+LkFm2~ϊe- ; , O}]F64]a4M:՛ @G+&IsFROr!_q*;0Z]ǹmUJM3 ΊMQc_SNF%ED"ߎ5+L㖷24jO+9kD 4w| $o"Dž8a#Ӌ؛zg]1<>^|HNTQ|ƽjHp8~D/g;oI*oސ^|bHC)پˡ3+~_: )Ip^ߓ{(Ux4ei zV[b[hwe9&Ӳ_>9.X4VwO&S ؜*> g}YsrN%XA{]c*cYJŏ4_^? AxBCy޷g{(rGBtY!NvV컘WCJ+ܒ7ȵ{1Ŷe4 %)Ԅ1jɰ|~̅o˃qlk]#fCpj7~`d.&sC'-M7-*2tS]mepWץ>D,OWniLT@FFD{kqOm.pf&P4J_M|EtjqAyM⊒UMTj~#.'1HcH,.[(vKl4i$1&DϘ)6< n˛][$g.7̓?>n~`Go*q/͎;*w5We`GuX5Zv("]zN|Hsu8nmrF^ɯs:Μ]~G[qU+ҟy ޥl]5jkܟ5ѻL&ܤҪ2#ygWxyAԶ._W}`2[hV%!Ҥׅx0;m lew|CwVs k1md!2U*f[GyYa;݌:# gD^`V gOl}wX`[^jo L6Zaumu}x_p$t\1x`Wcؓ`ܫ[l<{ySPen~ƀ(=4{ޕnһ6gצ,e9Ijl,_n Onkw^ޥ>Ǔt%G^w~_8?_֢[לT>͒@)5;J?v~ jcSۏ$SLʁJ5@+联Z=]Hxt50ꨢ\_|J>kdsۇEW*e'M}eRt8ݖ)"%W#_G|يVWlW;Q)zcK_ pu ;- D? gKB([;}r mEJ4>sYo0 ݼjl3r m#^lS4)JlٞPxy@c:xFf̽$K *!j eȀIe^+qzo3i);\bG?ӓ o*(>s?@2*1u>M NI6tB:S PBq3EKx_K^抠-/WCI\Ow8׼NK\AV EwMSG'gP;bەQ{m=X~y кDP˲B'XꝮVKZ&=߽'[vody_=0֛i27KUΝٵx/~MUCgiKyD%,, Wk;{ME^${3t\{͌TfKI{4'-Ʒ1Ē!ܳTŎFm`JHfj Ki Sh1z/>ɉ BJ{2 j~: 3WD m{1 ӷ1$桳! cR%0:߯:|^4ĵX: ;hFJMh(f7ɬE_6 鐤=!B(ټ nER 9N6 2_q|=9k^LuЉ#nf&/W6$~ ̣#̢{u=Gb# >=\/. ~esmZ ә[{wZ ~ p[<7?as:YgAh' {!Y/̻|,6nFdjxߨjK)q.יn9o gLvt옇麵j#ҫ3^4"rli ԣ3ˀkbgӃRk-ρu_2)K3&C)!1J66΁~ۅefR%|*\-ռJ՗ #^8UVWsJ`u T>&gb^pj娑dK{ugke"Kmi{ҷP_) EbVY-F] :qto/guxB3hFP%G`t0kˠ -䍝hFWeYOMTq:&[ovt% gu۬!'?gBCՊ.`)(p.iG:I4.#dŽdٖحbԝXpaAybFP,r%[L-x\^-eV吔UfޟIyM>ЪWgC?)$K|FTop\NSܳE}8 > ȅ9J*~|"UMcu%F%\A ]Uo*$Hh$ve{E6UY$erXIX!|?Fyj5`eBEd}Xܭr3Rl[5xZ=J?g^ 1JұI4B.c?3{ʽgìKmϝw#zQ.l[]\Rt|ҍKɭuB!,e>ʒ_%g>2>p |mS |^K-/kUj_[vd~Q36[Id<@ )=)5Vxv׫S(ȪpEHs\`~wdpu-.F>CY~MUq*kw ӚӖdZ,#9 wҎkz o~F_vzP܏X lzh׋LsNsig#:0{~D^ΌUP] Y,gu7]DhUrzb;@}M墄. _sO=yQ$% ewj:ԑ6#ٴ1+˥W|p{7UV^0k'لZNTC.#AlDu,"Gn,p|ωM0fy&)+n㽝pa+`Bե,S}w۷'[э/z!slUj944! JnX*ӝ}IP-GU):=@?[|;bL#Ykv/3|kWDtY h՗NZ!3k&5c:$j &.k@ǽVPfH)~ S#^ݭ*y}G$D B*^t7J5kǪ/q9:F1=P.O`$D,X-\:~⥙_mK BCL1+4:JJ9l7"P~g)8{n2ɞ N⑝4'B6RMT.XJVs09L,ųhnW'qG.Y,Dݟo;B=! &meE4E1RTmw$u[3xtGB<vMS㐟߹R.ѱ$CDE%~zKg?1P endstream endobj 71 0 obj << /Length1 1677 /Length2 9745 /Length3 0 /Length 10830 /Filter /FlateDecode >> stream xڍT6LwCHw00-RݍHKwHKRJ|9s}k֚y~VSS,sxD2j>.^,FF] KŨvv8Dq2YLPv|(PH#/CgQ, b P(;.X2kc,w=b@pcF `=+s8Qݝ dl.`g7%wu=Oc\X]_b+; x@!`ˣ+ x QRh8aej@.;da`yB`+ АW{9 oC@A 䥴wr@w;%,e0 d!`[3V;;fiKWGn=$ţ?2k0 #$` u=ďz;:8[B?X. 70 X`k ?`!#Gp !ѡEyKy #,a1v\Q18gq/ =X sbumWRcӌ/SY9]oГYk2߬9_H%v,oʱK.{on@kIj3מn2A?^]SWrG?2c0f>{G}_HܶN ]g^q` cy:48'5щ4Qr<;A _WYJ]^N  'D#L{K֜GRfG퓀=mu+L,OIZKhN<~ 5ph$@4Buxf֓.b;ݚ)Y) MUp"N%7H^샡 Xˇ~iHw7b#,ܚIi??\)1RPh~BvL&S m-9?/]߿CǪk_)GA5a_n}ǬTH0mn  k}ΪV~ %Tld]w3cs#BR*AYdWDT @c!į~O  9Bd&%ʂ1); 7J ٵ(=eɩ<,TP/m{+SDO{I#0ԭYt#7a3(-bmj#k d!pa8 :m:dQ_DY6:gv3?l!tyAqn~ڶbЮU Md!$"B:7Fm,ԥP"./ q{Z;[jm;(eRZ*b5`”?߉ɶ̞ gQf>YPL,ٛ=NNdn.{@ӜϽY+!$߬oK<^TMEF˞y:tob#~%\Jvhf42#hzR oJ0k!Ԯ }3 ?#mS4}[DEK[gcW#ty\Sd-=䙬PPTFO/6"gß{787=zU(;B|&CnAB. ܚ Gkq.dIWD8Dj$jmWm4\-69ġ&C#*buIP.."`ttʨWJ FDE}J/xpX޵U*jToBB^?2BFNC9V޾8؆`;rDXǠQ7]{pB, ضJk|.% {'9 lKYm|п3?˫$Fҽ]}O֒;w4t1OH`"S(Dv{X6/ 8:a螸mWZgv]`k|'&.?m"/CK+A'θ`5|#5:~J:)(WDtB|rCnhii,(G*v?ӧ,Yg1m1+\0*EoĞS3yOˉU1(*cݑ6tㅆi}[li[^t%3Vг-x g50/5ܔWi!2ū4ߺ0y)Q[\\e+Mo%60mNdW{]7%8m,Ӊ ZrV{,t,NN&c֟z: &WW_В"Dl; 5HxeC:mvS=0|) JԿ`dvXt㍥<(В;+g݉LfRc8)!! yVDŽix 416miU:[lSJ=8ɐ YWK+NW,/skO.ʗ2L"4-.ha F(2Sn@8̻C8TZuFTY&+rzƬ}# 1G4 |rD@p./c#Z05&x+7@!|%;/!p?Mv8> t eQƧ܌9*!;:_7\)j/+;o n 7fsYNӺЕϲ\=kˀC툴A/ijMXbm`qÎ641¢8x^V˶x -Rt]P2+f_NlƁ)0sT|qdmb/7J_B^' \ev$/gx"ETyI_hu\</za͕,S2?\Ce+mnl~bg4ݶo?{j(qḡ:X`kmKD@Lٹi,*[]fXTOmZR0䒲fD%w&r׵x}Ym,aƛ4.?6}}ף,K-gwv#g.:Uǚ49 %\.W)a8I^kzk!SXAzeg\q8G}Ҧ\ɷ&AwBORf'Ϫ7'sc$ 85/tWc9VbJ׺%Җe='pT^`ɭp[uc= C٭%8Ajr{wyk}dEOJ_CLJ$云9[RAS~ZB:#[csn$\/[O$u4atOy1I~fn!+ߩ-$t:eLHf \5UwF';%ONhƲ*b~x+\IE1=iA6+Su8TϦa|H0-r.>ox6t`r<,cEf =3 ,W) :KXm9rtB)w/d"Sl2kJDYo1HaH)/:.FJNG ˤ v׾S0vf̃i ;v[D {Z_-6CEwv.lX}޷-0b[$yёVOQ0쎽_oƥ1G[ɓi $#{v,KG^[_]-HV/)c;jz&@ciԕfN"po2jIDlz.nږIߎolgos>Ңk w * Gs{H"M/ ŹL}EhVY0^ogX~ʉ>>$%~4CXh^fFIl : L$>`l7h|7mɝR ܃DyTս襘X^0*o,n?yS> !6YV)2<|׼PIcxb֎GJ)@ț{.{*9| _uEwa6s-%: 1)Xww 3h4nH">huɅVZnK3d!f}2jxetQ:*bXpU%JAMz߾j;łcֆ#9U/gkɞ0bcSNu\bC'lnzsk?{S7tI~xRzP'DJ+dt1g%"7Z,Dݺ(^[3ȫf8}_eJ+~Y`g4E N|WFnjuR*rCh}Zt3[eQ-S;͞b&ͤ*d^{Mп02>Y ѽ[&\3<'']~38{sbQ++<$#ciNUCJ lgsR? SU0ɤpwj]J $;_쪉q*<#ν -.M7#͌8Q./$21g(aU ^ߒDYȪ[l ӷ2 &UL:JJZCAF?H,9I>Do|]R?κ /IzU>:Bp |=|VO55iqƇb]Yt\ؑ~C47y?t|MV-0%^貮d:Y,!xizw}ex/]|߻cN+{-rxX ^v9,DHP.i,*MHœ;E4),ӥ7|yr։%'J*#0/ҋR4F}kH'{ĸY77tƥ!æ5ion#U|}-$2vM \uAd7Hڒdh`{/$_Ex \Ҭ (ڋk3RHS;<(*.S7}Z!jÓ }XD GZP75!N-d%9(V n;zly I^ش$|#@%WoP bQ`Z:>"%YQѯ|>·}e<"BwPv[v.Qo{u>Xm!YÜ8vB]8Ϯ9$mI~E2Ӕ1k s8WTr2Y Y$"729+r^v_L~TGsXx:YvG!2sKظGjJZ_yu ڕ'xH4}ܑVKl}7Ϟ@iXw]| DxeH*-5p˟3+F*E`_^Y`h,-xIQ)y^,XraW*6^i֑|ԠE'")fpH '1xC-mw7{3[mQq6&_?\-a* ㈊/i.QD%Rnho1PoY< ꚪ$q ^~i҄Dܗ㘔FRErb&@8}rn3v٧W>[تZJưo߀O<Frw Rv UvwOptUN.B;p =/艿{vgr<ܧEƶoΊfkMpFb~ 6&e2MW9Y6w>p+u$οn mƀiHV+'Q"߂fi_]%4/ N2 {i"t\ @D ̔Ή>sZ@&Z#0K׎'H9rm S9fR,,mn'; dJm Oŀ:'Do%Po +^/d>`WjITWܲ ;EmJ^qgӨY(=MFUZT;n? &Xq!koSKyYO?&= 8Vn@0@ǰTٹ3۶r@ Q/"3$ش]wT ǢJ/9r!=kV߹az:/n*|r~`qLȬAj^`sPk3JyQˆ{+[mڛrXўwceyf%X>Kh.DtmCY"W ,5;ԩM1ɎS/g [.RiO}xkVcC7Ъ\2⸝HEt`EXq8ldž b.皪n:4\aUNc] TT񧎺!1+;%*0̮nr&1z8l=ז1;7$o%I$dUh̀~tՐw"b4^>`/WxAzZ3u,b\=Q&>Nީ~8:3$}uI :+i o/Dž??I?}ٞ!U3F̛:&&`°I"#NRK:x:L28K:xό~[mK"MoT&FjWLE*V6}7^f+!«J;摹V2%?dKU{P5Strud-TmsܲA|lu@+,8HśO;9 OK/"GtTwr6)~Vuþ8&Ld~G| lNDԡ\@BKC0،(jLm*v={~p /Ԅ}y⩉-tBDC1nQ3lk)*uzʤ`ECHm./Ba?FNu"E8?iv\;v{[]beʢ~3|(kn7_vmtCv+Z M+|C*Mw65P&[}?IHe᣺yI 9yG&ք藥h(|}? - S3S(fI 셁}tn집pk^ox_;d3fe)$;DOH-9>I2G8GdM Wg*V;&.i ^|3:U*wǐ`)#/n૦JV[j\RuW[~a⺕md\gJɼ7Vg؞~4WdT3P_4lcy'=r² #Y#.J 7?r{sۖ1%=\܃0 m, 5F6V" y|#cX&U7xC2;E,VZvYW/Od]zlFҌQ .74Lq;FR 5<3J&IWApͬ]a{>%w'9>zynJe5BCɌѽX -7?<.Ït/`N^D;Wbo,ni|$o*ˌP4E/ov8m>Q- ( fݬ&JeN?cTY*E2jl;>˦J: :ьAXWw ,n/;ʜ}'C'vJCftoH1VIGNug֤Mݯӻl:֚?y$[~l+!yD`lo}(0ϟSw-geLb{wGlbб7|W+,Pl̹/jWQtz,B/>N϶v#49g. m?2gyrP-vmӜʷTp:P;]O:)&Dx! (> stream xڍveT-$5иwmi\w h- %̝~kuU]4$, Y(RT@nv NAقH PJU;N>!N~!  vHyZ`']?LNAA~ֿ W[ 3'] A+ Yӓэj- 4@n W%W3Gпͱllvi f `krr;Y\ JUgd o%u+lmd uTe!^V/oaf`f%U@VB`,\m!nn2NR`GG W}Ҷ {s{N`O'W+N. XPo5Ѓ@^6ve vXA[Z?hnf ''0Y:5Pz Pr>3AsKk+nII `qHBUpQ!03'LΥ `w# /B_bC[_ P/?!qPCXdi^t,$fdl&kTX%ڿ vu8AgzA ^Ulkxffh@xyyg @;X]~-/C//P p84#(S_$0q濑 _E'B.PI&p8кN_0~S|:SN@hy? tu߽B dmPk惚в]qB mM;)T'? h]n`W,x[B? I#[࿞ mvl!jWJԓmsOɝ-v }1)Oޅ@jڠh!2vb:"MvnJmmxܼG_yHH]-.k^o@ KZxp!ד*d`un,̅닔A]m^B g,$&  &ev,Z Wv^WiwU=ֿtIJ}Y厚Ăyl HaJdY KQCN29P^Q/b5?ZvQ W8? JIFLԪD :j;Xt,KᱤCDMGUM4gCxg5uZPAV0JRE53@s(DpntzHVɁꡧ㗰H'$9>\{5Qu*R8pv,8X{̪I7Kdp[f&\~\6SӖy KBNSUGb$KN=gb؄1 6祶9bou -3h xP}$INv;a7NeرuTXfM)6imFQ砦NcNdлw^w>-3'CqNcf!E0(hUC#'.a=)jqu܋L>  T@ }=Tg25a^lD-7}Ks^״|ԓT˵rQ~_ QzzV&~ED'{DENK>5ܠ/ `L 0[ ۙ׋8KpEё9e2l$Y0ü%Re )xAF~2M{L $y ?Tdt,Y 9 :*wL4G*dij7)ۉ|w#F+tCWw4MamK#O0=Sghd4fMJ*2oR 3e_qM3glMbK}qï2/5{$FPqÍYQDqI:bI*{yūS탹w.syK9eUs#G<,ӈ% LY+D;7l?]i鋎Zsf=ޮZ^0Vug<0TҎ<* k ;y[1SD ^T=Ub KuӀCu$s68Yց_1B0,X85WznW3;:FNÜ3ܖw&J,/-Rվc.:#DڡZqLpa' S߇קTnr ,in"Ց{2 p>R'[-FeE|)6PR4KjLIMTݎ4*]wFHܯty@QRt2|Ht6;{WtSExj2Eݷ3V"j3ք8 ͵U` cMeL‚ǺT;>EkeuŜ]BaQ#F@ˤ7eFߏ}M6F,NX):>ωzokw >P9/#NeOj`ݠ 2e_9v Œ$o3\ [j3CD:%cFmhȅ=Y6|4a'GY sεxT-üX"Xx?)2g6/jj3TKČ2m.X5)?7?.w"\:zs`i夈Ii$Od_AƕT&uLyl8G]X;ep.62XGZA; sꁢޅb#^1={EGys:FwMY%ٽ$ A qFL|SRu:ILr`])^r`]<+"5P7X.Ð90XNT]UP-Tf.+R*O&y$y:k'H/X7yjT% C#dC$/S152ލy{׫E6gf+}z$CM2:Z6S?&kxf qߨ ʥWX_PX=d8F͆HzF&>E$mK8}e>u_s=[B1LqvׅB@3Ols||@w5 X?~4B1nԁŝ>MJ3祱k B}LcPRj]5~S1. 2]= XkڹdۋAt[ij')e!3>XmVoOtZWzj vݴ(^(&t w҈8X;\!fvIS\ 4Hlի\RAߤz:OSOU]5,n"IbmQ[\Op mFw*s[n- "Cn (M"[1,G[lZJQ>ӷa?/e3\=\虾ă8vOla5sVm9.g 95OKx-iY%]w$q (1"^ cbc.: sƣ|С]$2=XkꤻI1OSwpH">0E!SGT[g2/`ͧܭ-`evHAGI2 %kG3 RXWFe6]Hdf68OhIe4&]ODdS?B٤gƗ'UD2ifF"q-j_tC Vs0cvkna5rsPJFe!mtBCǺԜxsƨȻ t7=âgvѬj?zT,2!kYƷۧe~N%8;T++8K|ie4.f06&kI`^G^\Ah99&FI39nAh ΢6U83%iUT>=lk,8C2+rS!}1y)&m # MZc., Ve.,\BlPa1k4z]`C@$ygW%z0'lY6Kl#6 "tl'響$9azu ~9f UX\ Q'Eىy*KOv(0 Rt{ONkm *y3TM%{$NU2װ5 $JySUP#Vo;O6,-쩚t}Te`)SYfݹ)@պ= 5d,Wl%,Fc"4k0XA=e:5L2$% oɐxݑB^ު!+p,NS\ݡ 55e7`zH7ړ4gsT$[=y4gmOgi+򙶃Vx0|fnR@gZd[7J]FTfL.!qn`õؠo{7b&Ԟ+𭦕 s:d@ qxrdYraʒM1z7Jr9Ռ)oO0NQI fJd+qȔSv?ϖW˰TN`N}aK#4hM㞏KOs]e, Qm‰sY*ۯmO;GH^L?9Li?Zf PVcD&lk[[p9O ."!#96vCr+Q$>mmHpWETsN+zETY%8F6KK.@!"{iqMM=l]҆v8>V >klV4qnl71^'ر`jvlɔe;x`R%>h^I ;*kݷFp)KpI Js^^T^ gSghIpG,ܵI<վp'hnnuP1NUn楷̴{dT**R kk.g;eNqL6.FF!xfd@9mj믡c %>-F! =&/SYo3Qml(`cɚ?fjo-g{7E亝یĄA3S%)CƂƋG)^@Gс&U};G#MnIrrMJ&#u6:Q8c㳋 KM8 2)lG<'P/Z@ϡ4S4r `,'bAaޕ,֧8V|F +|>I;1ZygFfUz!ݑю箸BƕV@"0bW> z޶gA&pNG$nhcy𩙄?`Uz1dg}B(vڴڔ(*(5hG&L{ꩋ}֐Urӡ\Bwv}D8%GqCnDQB5"w/<3ϯx ~v:^7iЊ ϥ `&_>S/ͿErBbKe{]of:} vN1 kVfCP\mVJh8USa~<Nz% Wg121:t5V;DLyؔU3RIKX%f `DS% t|k[뤸pid7YudpzRn@C?Ş{ 9dNUMYL\j˟&j U >yП:DtxR]mڋc|k3s+޸ ۵J<#AߖY,:⨶܄"Y( cΩDꔫQBM:EWy_~c^1@8eivyzdg8[rͰ$j~vDW;apY%$@"$s4@!4Ğt3uV$uſ tVpI}YV0 <"o|k7Ȯ5ǽi')ze?ѽB&RG@~*R4춸|Js>Ul D@<*X[a.XwVW=Kl>= U==9 덃A pRgm] @Xv&OQQZ{DFH}l?/[J#`E `~缈fũ5h~}%vÇ^2"_x-RgB '}5<$ ?Oϒ+N9k_cGFZ\*M)F55}N6|uGi{Yjtp-H[SKw 0FWq_d "I> 9]Pk|R+~v\䟐PG '8becE)m&c㹬3\58vڮ<` W\kSTNSZbɞAn  > c~$ٯBIO5(lbFq^! CTo^% 5b*xD۴T]T'L ғ3ڦo&RYfïIk}O%~ǯ;x,u4e)~3O|rC_)1a5,O1;s+(ŸrR 5}HdOW 6 r-\&?c 1̥m:A0H-'_RP{y4ax3k'W2nOJw?H4>Ƒ.~l_J3 pxF!]h1ߟn&/_- .VXZ ڈ{U1%2FT涘0 a?v3m[]R()(<#P7E:呼q~٭h6IsWĝrWdYkٹerHtZuM;Gh8{+_ޣ0hLV,nlަ2"?[L#k}TPrKsRTR41z.D. f5x4΢N#Ẵ"acɝXSU)C 279'Dؗ-Yr3泅dOg -k\CYl9F: u8Ѐt1(sVׁ|ܲ.QDY0q*6#%h7qgۮdgS-tL #w Bf^(hʪУ-ÿ=@@ ,aPDfDa照ʷyxrYgfKIr{V$XZUGĪOm^Hs4SfSw}gT_ ytR1pOT6ĉ6oVW̲ HrgIr0~# ʸgUcUԖO*9d-nkJ5I cW5k-i=%t7F-@I?ǒ&?/}ý}mS\x\|xKoY\4 bn$a52k8,'޽u^50~=e4q4Ce\+wnოδ#o!ypPdSY:)dG[hotZV(VgU[sv1I5՝NxZMp#CuAM}2 ߏMP˵&Gí:c&vZPQ(^AݽZG2H#m;zh - uŏ8J.s 9@ٙlq2KP` I`<6lqPqrѬG߈\UrLJ4Q0,2XuCqϰX^ ;C{~3."Aԗt岫K 8)j$;|؁+[֚5ZD +ۖskZ=b7DGLC_΢iҩogVХ]|YO1[P#id<(s_* 0Bw8jNGOK uivt+%}M4k]p7d=4!?6X|DzO17SW>dQTS R ^=F$Kثo/;z<7 2"Mh"(u9C.ߐ$|c<=ga!eӷ=<1>\U:feKm8cz߫8ܑ]g-^Uބَ wĤTcWF+LyxÐ>/KJdWhOMT4ۧ+CS)3)x#'De3/Cr7nUg1,Dqz$Ū(,C>Aa%0M^5IH[FL[uL1[,>?7IQ.WvDrKU?USE 133e#))ߎmʟ+mئ>' # F}OTg|&>}̯bw V*Xo: 1C3DZ,;_j(кy8DvoG-Q5Ay[Du"ᾬ o~KY7C#A~=KvkDY̏A֗_ ŻδSr #m ']c&T] ՙx,he_Fru6d%2E!L@>M0\k5~,:A&$qW嶉?)SaSψqá<8&g {֞JWVtADT7՝(Y?U>>Z/3ntDwH֫4E4GY`|5/GYiT-㟇\8弑´o,5z~1l#%A↏D9FB1{hWKPvՂŚǂ1qů|+Jw6dume1ΓWcťzg16<},i*\a0slOw.&fO7&¬^BS!87oDczf5D38ܫX ~oFT;'YRq\29XyJ YbiO/'ZW g: |I$v=rέu Rģ虦MvFPQrO|4dӦ6t[/BJ7򰀩ʬ}!ꎛnd4pME*.EbF?!SDrǥ *͓CAّ lc- 2S")](psB.$kw]C6Angve$;'Ģ5~rz\8#U#zd煋)~$0>BQ]":)AaW:poi;K_xԍ=Yhwy#QLð\T>4%j1/'4@ q |T'D@#"@,&D/<ɓўy! JH1p;-)zy4iI>| i,12z5lݲ ,BWMI *JW4(89d|`.ۦBt,6U ^Ek3nXz;\ޑNӺd $⮢ϐ,Eڇ͘Hn\CbcIE &{Fv]È!:ɂS4!b&lr͸p_v5leZ]*B`Ks d\^ Hv(½+G u6럷]TEg-T endstream endobj 75 0 obj << /Length1 1671 /Length2 11244 /Length3 0 /Length 12317 /Filter /FlateDecode >> stream xڍP.R\ wR,@ P )Z)Pk<{Ͻ?d&׷J]UjBଜlB)mN76nNC!BrO2i P (:8|BB.B@@ `tRPw'5)ϿFs& ?˟I{ @; WFk8AՕ hc:Y1\pk&rrYh @ K@'=8C,@N-e_,/p{ hnwB+%PUfY@@;͞ ,:?c0O,ۃ pI@Opm!PW翐%baG:3HAo'dV 8CKr̭HSoO 7 p'g?089`s8 d`'d~ ~?>>=1 s#fQTe+߾m$Ѭ`>'7wvrzz\ @n spMu`U$+Q.}dH\5Dϸs"$;~F\*|l'5^J"mA4d%zSvn` "{.;+ rD6,!}29e(^]ssPDSmMHtY;e1xNnK7<&N->n.ᰜ 8 iiU,>B!IM&tGo(D.g+, LDֺId-, ζڮ6Kx'H7 SZ̆N-'6ɇBkDB=~Sҏ^T [Ƅcxe9FI&x u}8ZWj.q9PӞT}N;# ᴤ9phU ͜DU4#*lfN'J6I}_QLb5˚V!{p8TH6TyӶsx_G%+Fi}7za(:¤yl@J~HU=0۵q.l}zn_cL+[* _MoӷmH_h^Ru ooHY p6Aպ,t!DsHK8R.0M+E%K7"'53-#4[(9%ncs*0~~bGgoDg" Y YiXnkM4yoNh[^mf re^zSGkHL3IYf Ektj@@ z|ftͅ4\O烮6ѭH|O5/3&aMŀ櫹&h:Uvq{,޳/SVvB'{K776l1xRDb߯,p;eytqǏHSS2.W,Jaҁr ^rt%򫫩;Gݼ +=C 2K_o)ț}!T9v bH\7؉Ϫ$J4q7hXɆR`l_o᧷-׾>IB/[U,,OsXodG} 8\-ݔE{Io*z4s|rN"jX~dg`ċxWȰ˻x'V&w`մS5yN-ʣ|J2V"H3v̹y퉞umHKvŚʣ^R2oss;h9+}vm=gHM}piC2j5,/) I *`?;*?Y ut9BI3`luN؇"{dޅ>Eeҧ _%&7ey>XJ#:gC2R/F`J S~euD7bTGUB5Fu-j-w1?^B"#P89_"WpH(~TfC%;4ɭձ-㚑 g-2Ѷ*PޟwG97?2tb.Z:;f_Fkodϩ^#a}[ꄤQOz7#pUc͑_ݷ{Ɖm6@NeZa008hEa7T$()z2v\\m(UY?*.Kf9ɛ ,TM{>.Ω۟v&'˙VG~@оk4!lWv]8^v^1XE5%WK) Ɍ\F"!'0 {|ׄr?1xN݃fxAC [j$ll"_2Oo,/ꙹ?; 2 + 7L)r}w7b~`XJ.DϪcoG){ >D欉L:r0au=a efWU5q(mD2N gQ'p>DhK|53_IWaѣz5l(Y*G,DZDŸvdISL1$Sb)ujKcVSW4v ֌^&Dk(+oCаm%:d;/ Qϒ\RbB"_ .\o2`=[/x9Ҭt=iL{o-HR@eC;XK|؃Wex:?HWZMxNN [ hU4Z; ;F]/\$lEGL$~v~oD ]~-5(WJyw>{!3Aj*J%TNSTj 2,=<5rY=x`ua^Zh6|5vBxm ! r棗뇞Ͻ 4^#+#!3wޡarؗp]bWei}StH\mFlѵڹ " zUty/ W@'HֻmպHF0/#LH{b\]D-pLkЗ2 K .|-qZjaY\^‡=]BbmFzǨE( ȧES$_+=Z& <@ӿ!/ƚz_MMi/yzpop0"^3=O|u&}c֋N,x1YK?U@ MvMT>WԐad/2ہAm V[uK&1񒝳am._%vvb#igT_vɊ0Q F⦬LTg4.H P u$ڣP-D$L.c dzT}sUF`Νn塂u|L[Xy2rܤv1{.13˰8#WXA3̂2_qi7=Rkz\3W>y;յhȱZ 2Oq;rt8R` ;e{۾ŏ;톐,F{@զqb=am+dG?c%yd9&*.F:Ǐ`a̿7|ఈe4;v%GnW##9nz WrݛѾ}MNudŝK5WmjudY`6U6d J 7YTKNIV^I1e&G HK2}G}c X().E A=Q"}Hl<2 .ԊVl DRREsL9t{R4;u ?zb O9 Pjj]:n>Y3ܕnҋW]93-ܷw"9s777Vv׉Ee_f~7 uP]2I^{aK/cIyEalhNLdz팋JTӗyfhkDg (Tk.+: >[I[J`&hmA  dvL[BkQ}[c3aP4PO&5;Q1ždn>mUOzorcBx]ɻ-U P<XJBܹ45xl2ZυA/OPfee+@}s`w#ҿEcRB\M~^#!~o6nCIWwN+_9hqw+aM_Jϒĵ^RuWy| `݄I~owR8&uDd.Zkj($i5hB1G VxG$ |G56M n'JcՂxX+jǿs/k#&Ä(lCQYn4m?Wh y+Fb`[VGYAs$3mf}C)+ֽ՚7SrŘI6=@v \dl3 J$d087w+YpRz[t-5AvT? Lɋ)sf/ڲٹ?˜ P.E+is1ľ~O1;V<{~ Kר[\ =_b$2JQͭ"Ju^<#NE)r#;hxwuwy.і&{z*ҭ@d5BzHBp14l^]FBCDŽ.y&\*w$e/LR_-\Me=x:%ٳPEGl<+-?'f޳*M u2܅Mo'W"U䋏W2P&K-砟1yi"LnBߎR]n韔.F`YJff$exG2<( ۖ]/01I"iL؇hjnLr)rFl#JMx M"[Ll KAC&O:mKeK?F; 0x[CEloniU (E`qX룰QcфuBVqhY<.dW1|s' VgY e/bf]鷅IGu ~F?u85Fމ5B='uFi~{^ v: 2FS]8Y}/ɅP2 Si6Eq wZ 4w9eVbgTK/=\C k\г P1oGBd3e*:  ?H$\oLgl§\A:#%Y'zZ5žo i`b, v% 9++_Tc}YYd>/ ZaT5P 0i2IälVlUlI"/J6_@:(d\ʱ6macڣuHHjg/ ͺ7=vba:eEGwP=pPI.xi@Աq1 bP(ͼ: Fzxg.-9u*#zR} ckNK`M*8:J#86(TI*c$@5rk:u;6-ș>"h۶;WX9iŠ Q{}ߎxp9VSjsVȔNT>q%fF0O8f֎3KgFֽ>#?Q˫[)ZGsaڐ.T h,Y%cKHdTd%\~o7В| i9A| {0k[䢷hYu⩲R_oh7κu՟nr=HQEf2'`BK@n%GZ 9w٬VbNV"UMfKq뿨!sK m`+z܂"ah!Ajyݹ蝟5CiJ\PCvΜϬ[O[bB'sadD%xn!튙="&|SH~p)y@%J 8 ۑՖc7 ܽ Z^0=G/1PA ~ @x%zb&f˗C{ǃc2kLUj("V84UEFƐAxˬNY&6uɂ6{i2vZը%+QxZG'M{c5&x,y?݊!S;Ь&N!i'^iϮ_7;HDr ٬B\B"ݳS(]y3=uՂ!avnYM[KS)F;RK :Y?Nsټ?j5Avi9w@2)Rim%C;K5$J Z^ EXzv&*tcRVZ(b "MX?yMr\Q`w:j'n;>lEdو2ΞG:$^=ϵ^&i YI*YdDvAyw&?r=7:&Iur(ڜ%Ⱦ3%$(XʂnVU=+5_fZv!eh"z|'Tp۞t _daDg`UmP~H-Q'8C\mdQeī:NJ+!4rrRD| 8l 1 Q4+3+ Ax2ri PiP8$L6ݴrwACWce,,3z?23No}mށN&Q߅r-8tx=G##rK 3%=K 緼oO ?;m``d&>b/[)?o̸ˣ?Җğ xۼ(t]ۤM-Kdw[<6[-Gc946Wm 0o+{h+;yʳ)ב:. Z&Zb(}ӥQqjS?o/k2jz= 6Ѥ+g)Oa \Gg~nu,kRn@r<DCuK+3HT}S =%48K  !ȹݥX{=Ѝx}XX, |}H]|[mjfT]L۲,?1E pTL†XKQ'I*~0fPe!!WҫfהVisUoB-C-ϟ-q(?Y1 fZ~T>U'"lz/L&1חX SfԻqFd!}`C !>#Z+Vb6,4WJKJ@]_.풢ې5 GݤXثr6vS.̬;iKC]^f~i)`Qq a 1iptүg1Grsiv=Z3J&۲[vqV:PɨIzn٦r!;s:ӡDM2|( ^=9"0TQ4m7^WȡzC4sr6}%C WJn]K~Jc-Şy?L{qd"փijtt$/TT{~e`aj3#ĨrqBB:Tkv̈́[XxЇïiEX Q~XPT0ZUjvh)Ɍ n`-8gsb|)P!Ah+(0+{K_=h6/r`@@F2afqopct*UFQ5u"9oB'uwbKT#H ʡxԶ}W|e܃%ĭaD2%uȬ޶{b?ʣXvVV%m3R7?Nn2zv _^7^rtĤ1J!ǎPeJIQc4 EWdڷTAŕ_VåD0{rZ?VIQvc[7'eKQ &:RkQ|؉5#G;Fg9m~2Ba/厰PFª>P&ufTK$x&6!_@ad/xSQ'Vkٛ|[r>RJa.FU4-}2`/4KDND wP\۷zD2, 皛 0_;oQ9\lhr!gk`Th(Vյm7~>S=TWtމ뤚&9b9"B2"EЮ/k"ÉV ?.{vfq_\^˅rXYZ9pz jVnGh+c" 9^֎C2C3i4 4 M@ެ"JNүW^ݐbMPOfVr%QIRoWt.F1ԋ +#5V{! She(i!-] MCBRPh/'>qIxC໥w_.Y߯*R>,1Dr8Vb]؏rQ+,,:5K*}m]n"g CTђ/> wTlGle؞1fiiTnΩkuTUIJ EUP=(ٕ'{)ckO18_/M1-I;Nܓ_q]ⱙ}E'<[B6+ʐ4y9YyxuT=3Nh6If<[gv1>fȃEX,?N 10%_Տ^ݢj$ldzzr+-NF~[2aFyzb~vC+}Ļ -𪸢XSM']y|?"&󖵻[Wx"[퍺נd!KM+n-g+FBReutI) )+%9l=9([Lp]SpD 2sp&ڻ$(+K悫q/1ளwCZzE ̯1Vr" h0޸[0#(qg)˲0 ,P+b`&GYDƊ5I%Q̇wꀵ@^»7'Woh/Bc/s3c:Ցuޞ+ WJ̃75$f?_ǭˉb$lŪN*eg4mWm &sɡr:L!Ǿghd,{<2ˁ9UXAo9f}gܧPlwI(P#+D?9$α$~1T:$RӫkȆ0enǯ\!= ){% P_ r\61oݹ3.$W}Wox?oQ8R]2} endstream endobj 77 0 obj << /Length1 2008 /Length2 12985 /Length3 0 /Length 14214 /Filter /FlateDecode >> stream xڍP\ 4www]w Bpxso=Ϲ\HQNL΅ "`ddgdd!#Sr1Lގ_"NfF.2Q#C9{; `fd7@ G3s!wttG /w@# @BPZ8p30:;YSܭ\,ffNnf-li jiB !21spq35s|dH6ۀpLL @Vv9:yZY̭l ..#;߆F6FnFV6FnR}tO&NV.V6{dcbv"fv.0r23'??w jvVfR|`,\l,3G%f)~?zvwakenlfpqr5 `lfae'oqNV10S{;?14?-W),lc1X8\hdO3p]ǔS? g=Kf?4edc4bL\qwWߊ]mlSm7⃷.; g vTŕ33rZ)] ŭ.?_#ٟ~#G1_#L>Z)sKOˏKŇ_ghP~<(;g!X8̓Q2KqWӿ*fp(OM2s;n"1303Y[7 nP'Nw8ͷ@vAEJUK(uic_Np 2#Y Qyfucx\qNUG=h;p4Y+'bGPŷɰCZvؗyXE|/KX.tP(wPrg i`|/bYw6T{IAP&ȽOҤ1WJbVr聶'}&zsJ`28qILv62jAg:P78#`јK( CG8јʹC{ziɜo1߃Ch} wEySdUNZ=`=sq5\)vY (l,UZJg {]\I Ng/wwfO)6cVBkU h9r*dHu_OɅT?"X4Uqژ@ rQąS,rÎ%b.PEG힁9ekzؼ IMXaj۶%#tI xzCԪsoF^v/3B`[cu2675607G Z _mq6*4/}cI+Pڐ{VPDL ӬmHzA;Ҽ[q$Z6-AXkn~ ;n潮%ew&ؗ\)>϶xó2s g^BJ 7#, N9ܽF#_{2؎`}%k a sFY3ESPzH~ԃ]i(݈=fh0L 2@iWB8rd _l$(@(e륔L=nr/B D`Άɳ/o&|0˰F+y틃oŞIC*Vy Sq eҤO۟@T{WQL&ARѻHY:&EP39^tȣA p p)^91޶; =rBnjd9u}n؀5w.E]DVuC{l)]SxPls.•*^zQas czw И²>4{CrCYXۜT B5.\$Fvar?5Y D n&8y)&Dck l]}f$'?~ҔS}MkXs]Vd Ugq/PͳU8^ >ϼ 0K}LHTb\%,eҙY&7ߖc8c_4C3v>1jϊE R'M:Y2Lkî uv.TE zAGc*2޷]zL]qCw\ҟd,}/KNvAa҄go3?>Wjmѭ`ݓޅS~Da4\.MUv۷Y!}~3t aJ"-˄!*4*J|c#z:ަŁk~%/Mlʡcmv;v w>'9n~$ CB}ʗ}\\/osOP~Á@0%S^R D!m Ae y'@E{b}G^/XWiwJµ ۩Vhb%Q~ T; K* ضu6p-Fjܬl^tф˪|JQ0|v_n&GރMr6+) =&x>a0Px4fv3 ҍXw teϚK^J(jLj§h\M3-sq6: Xu٠^OJr]}x+na𸮷s>`G ;cѵYe_ pR:D/jQtDPDn 9z֢EnI۵fK S>32vվIJ]^be"Dyʊ)5ᱍwxcTr4.WRP,Pm? `n( :P+n>Sǝg.4 :uKΦp-: p85J)E4~v9 6Xa7,4+7T5F'ޝ€;YYr8O씉5"Rs?9KDWDZ&%,E"u nJ"uIY*403dbB) LSV!ag&;X5-DB&^Yncy^w~ŗ\}Ocz bF {VeO.Д :><"%@zFNKw!m _E0~E*]DjJX.:ޜr쑕:2I)N76ɒ:S ou_Է듨/|]ITxl/;MjYb4:V`[: -BQ. F-&j8m7٨gF .ΰ~z,U9#? 8@YQ$eqs Wc{nFxm.4uKI93|R37HҸ1?h_bQ֨7ӓDgT/r_#;/%XŬru&wh BH]~U&0ѷ-,̽zTf]omcLz- }I-tj$6rigl< X2^8T gN ZXˢlfmjJĉ/ _@&2؜^S[ϵӘ 99K bSM8 /K_Y?;_S:ddqPPmےGjL*-r$SU7Z h [MJl!n@zރAỐW{gc WALQփ6˫<>K1Ɲ.=%<Ԋ629)»Arި %ɷ)OoF^u΃y5:50T]zTd{% 9O+Dy]Fi ̕HӒX>p0.*1RaJ^;V"qnC [v$ڬԐkxǖ^ ?MM!N^`M쒼|}F̨݈BP9ŸpƳ> l6 :4'~NTB_e)~1uḔB4Zyiguuؕ%^@E=$s㮃v;ԾCޯ.}oP/WYdkqs{AG+t&$ +_<<^8<)un]\K{gb D.>ѬD7?> wM>٩k .Sͣ?ras%@iH n~tR˂#Dʃrj?"fF^= qrBe˭p*C୔͞9 r)Vb uwXaYqc` \IX. =={Pw-ȫAtõ|))զӃ N'mB;Eye[O5y 6_.XM:H"m+gTѤHhŤN /8Yw%R%x/5\b{MRӚ' g>e?I5tr#ZY%="Gujp{6 8OzJn~vʙ[)5c l'֘k+.u ;w`3p3Ke+?15A + |[N5Ӹо덺?(:jbbx=ky|^A`~t~+˜ɟ?|ȆRPq5f׭8[@ѢtmY1I[uFwz ~^ʣ7";Y#U:_Am|,nMbROiɝ6+LΤ^ײ|r{gbfG= [+&-SN .4qR\:V{ >7h9AUsp 1ՒSN֖&vlo< o="zYG/= GMY8PY-0۔sE5LcE1ԬzZ;o#.%#Wotu2m\eDM'@c^"ϳVai%>M916B yŴN_ZUH6y~[ѨB"ăYR?x?0ӵ7hZ[Uz4"l-1xe XrcxOO6vA͏GH/g%b4!f_|6_#\8')772CZ15%r?&O'Ҟ4Ly:Oʻ1T Z؏J Zt/$c1<йH*2iv4cۖ$rTRAWXBaXxͼW0H8VE NzKнJ{ \.LQTۀ!u*1k#o-JєuÙ~~D'5H[\͛O0& wh~k[Αx{ebF7J9AH8 3*ɻ !:u[X4A!!{Χ`foIAܖ:E]c2p|om|ڋbuU'J6ި67-~b= bAIC=)~M QP:P`"FZr{$tflQ9>2k¥Sc'/:r>fWy/% % "h{j {aKAh*FDNYa&m22U!Q։֜=w ()G0M+5}À{u^J %KL+f|p5Q;Τk\6EȘ UluؿFia w,S{~ciM ;"bpٚ ꈸI A]6EWU*8;#cƌʨI˷qYCGk~&/<s-"LuPr4Ŗ]N(II={.X[+>[mRYvp'A%-6:뒯svƹ"=FKO^uw1. >~M!mx_kY%LZ-(DglgۺB2ݧ魳N $& f=}MALQܓXbbKEAPH~?6P!r072}} JlD0]+,;CSyx)%j"Pkl3z|[Xך6aqDٗ&T`)8LfzʍO-ބm Iܵ'_!@8ro| iK!GlR?2VdgR rS"Hl|=kVEgNqAWIr$I,h4Uyyjs+薄xv sonǸ,eפEtvB:ҁH ʪ0V$894զy_g//]|kFNum;g~̉FeB(#⽵̻XZV*+)K vFw05`dDC_ 0 A+ cF>\3nBan<#5{jP `~\9)b`n_IQd9vZzsC@7kn띧$bW?lݹSzfm) i2y6Y1"HU*4ybI"ӵގ :iTUVwGvG:@M?.#ϭ;r+euc&3uQZWJ9CHJ%~l@>bxY W!1a`ܐg̓B#9HY!Õ/pT%?wg+6ɿެ˃XlI3O;73ZHtlx2COJ(ܣGHYf*m1ɾW9,({xŎp>Q r#gE,U!M%[[hMzpnW0,:ǼMJ$zw:VotXY!Cg$9LžbX]un}0/8rm?D Ԑ3_R}+aK h\\<G|їt!m/PY: ^S ;۹ l-ykDP}$*4s.'$3W+jl5{ր 4-**Dѳty'Vͅy=ˮg?Q*S>r>:ԋ kH v̂\P*ן4AjUeK놼>4cc,]nRPT'7f xL5 GLH PuP+Q__>fEĻNF*~K&8Siekg%T ./u]20 Pܔ;C~y>HvvXʪN9Xg:],9r*HI1ɎBWLٶF)ml EQzܾ) khVuv%U%Xnn:ŀ&DtMVX5>'KB<_?' c4>b#)I9.Lv3^NfrZY׷:Q@{wY}Ԡ}OEb^_>_ endstream endobj 79 0 obj << /Length1 1712 /Length2 4326 /Length3 0 /Length 5385 /Filter /FlateDecode >> stream xڍt 4m~LE(EZ}_B5f1ØaL/Y*JȞ"[JBv*ߏz|ߙsf溷纟!~3KquC$P%%JKKRP!!+m C8"AiG& 6-3&*$$p@ W'HR8`, h2THJ#H@RQQ^l;PwApH0FPhD$X84*X U @%$3"b,d4L._I@+,nIP<$48$@3F++WnI ?~goH$AG:FO x2G#px訛푑$+,AZmoY$ 2tFN3A 08  ;KQZC@Mdp4@hO$UފvJn\là($*k*) pH vf4OypP{|=(/ ߞ/L诎44, .%-r!pIf0D@W{¿WCw-"Y4 WvpY8? };*KHo~R@% 7ke(^} \u#5:8O4 GAb|vk8ڌHm)$WHg zv$_RrDBРpPFR$(綂HS;oC$A([m$)%B22£Z`?HVDD[{Fўh$tTr* V!>.%sK'm. MioԟG NKem>q9wj|ґ=bW;YOORㆵ.KPG-^z,p-%Nꪜ(g8Y6#F~j=5/jL7HɎ6ÍLMp5\J:ssNGS6FpRUQaţUZ/YF08럍DM`[oeV9՞UZolнp>}cU#Q$&(P𝎾5Xca[vҽf/M;HYyJB+dU%fH ;U_-B|3͸ ɧ usU(\nFٓ}(>suOCS0:(neѨ<9ݣtq$¦?ĎhFA094e"eXʸ)S]/1{Q2eXZ~!:/;MY.8%`ЊYxęa:{gͨI/R2U#I\ N<gbeaFq@$5XCtL"ʣ/+Oy$q~ ~(R-Q%Eɹ]]w+߻PHGFs ·t?Vmq lo^{ Ks t4,yf\.ʠ|b'aUF +W kr^{w]ҵOZؐߣ|,{&+%:0:Ӿ/|hNHgp%Bs3:'E"r\rIKqA;Uؽ^>żԆls>s/kRlu;SmDoc#R"y{33HUf| 븈; aAcWC Q)dY`td7QY'C8'}u:=]׃ o}NzⱙF|M[L^ZށN՜MtdZurvc998d&7Y PB=+ Ic=O\"^D;!-|^n`:lѵښKC7S3õ>{k-XS-8N簹z&xPi`@U7.O}Xe8+^nBk/`qs/J[pv%"aA-=6k\(iRIC83|Պ~z`LTIă YT䩙,?1'kJJ8S\V d[UƇh*t `ȕP9FBɯɼn \뤸#\W H)n-99稥/۔5)"e婤s;8kz#n痗E{k5k)\JOa,_Q}8Yu}2DuCD8W.Jbʴ)!bo1usV|rr'* ؜߬ fq鐅 &$ap^a=G&Hz'CLn]nbno-)ܯ.^Ź^*ވf3ow0)^G`k!b_T/}N->J^ToibTCvz=ܦ-V`*J"LeS-Y/+߱ t¨'7~GrC 7/'U 4 /J7+5͐tT]*׬6'V~Lyge?t9KOWоԱ zZ,9Ub=֎b&zSW`qSp6󡔥%nn~ZVUUtyZĭy6,c湂er>Ѵgbx؏qT eɶ4DB9!tv8sۋ$epS1?MTmE{QLƒk? L{֧:iƖ = iL$IJAL7zI-YkUؓ+ٔ̓Q#kBs. 3hKgr1ӓ{f{߼|AR_i`坚1CߗQQsUy)i.LJpKH~ [~lЬxZnrl#_G.J×rN*5,8>b}2-rP&8-Z/]O QJb>VN WqwEKژI1c{[Af} Z9ʍeWtީwݞ.r3mw,19 wZMG\H~?jZ 60>O?TsY]X^ Dzn{I> "5H1hțč`K4\Kz>|&Re:&TcXմl ]ž_kYggFq7 kS5Ve'GqYțjg4xҲ>dշE▾2 5j;-7(?XX! /6 0Hfæݚ]Dڍ2B0Tg=x!Ք9kUh)B!lhYo 9AHǾt1m'"\g,GDIt+/d~xl f3QHÀ+dse9fUv9O5?kk1~Vc~3P?#x#~=O!ݐS۹qh|~AkB7oz+lZƯq M;MSxZq/qҀ\6MS4{Cz]DO-T $y䮮|`a: ꏩ.+W7ĉru$\XCI|툭h%νkP[D(y$i y+l$Qй?dמkK(E1)<d 0jt)RcsL˕2ckek)1%X "^{8:fۼ-*:s{fMBCI~NͣluMv !eJ'gO]**҈q.qds!օ(nEF#vsӥ6(wTKXqX2&/Y(hӗTݧV'Jۚd䞴LgY+ &s0>1# yxxnx=_֛r & 98TŠO^,qǽh*̋T2K|+g#,&ģ9xZ`ѐl_XdW!1yc[w$MWp9Ou"O9ǘgO-w&J7*zϲWg(sz(?=1Atͮ@, ]*;)TC2h3FzndM[갞L{ ]Ytݯ.ħs@=$t endstream endobj 82 0 obj << /Producer (pdfTeX-1.40.18) /Creator (TeX) /CreationDate (D:20191029193253-04'00') /ModDate (D:20191029193253-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) kpathsea version 6.2.3) >> endobj 17 0 obj << /Type /ObjStm /N 60 /First 471 /Length 3086 /Filter /FlateDecode >> stream xZ[S~NźN*@HP< fclb%3&؇ShVV53 XL; 2e)l0LFTdZ= L z:d LDevpU/W o$\g4H&f"@pF0Q5Lkt(*H/Y Wi˜8$BdT.0T 5sycwN`>`b >"@0),8Ϣ)F2"*!8HLJ(zBG^a@~$  0P-/{O_%Yۓq]3`?(gtPV;`7#! W Lٓ'M-@,r@ F x,z\w@+8vvhafǠ.叚,|-&JvAlOˢ&㝢./;EgF0 Vziqy^ f׏H|PNW]_>ʲ&!OkFo S=UJ2Qu5(zx0V3\YcCH˓}b?VYީ|)*4,m>Q@4'lVi`^|PM/Ѱ`:i 40 |XY5_dXp4*Y1_y'gq 7,Un`ãnmXJ]EޞQ `WWŇXת6j{Z?WKy-}͜U}^cТRP u1F>>S@Dz^>w2KHTƈ|-N$c!Ͳ.2כ- R節9[a?YA4D$ Dak[/׶ɈzZB*aVDE2.y=J ]]nn5U4n>V|y2|ڃ퍐B>{KͪQ"I5tJbkLﺉ+H\ΚԂyA~Rˡ.L !~tڥ{ht?RnmKKyhրek4 Qk˦j#¶[HAITO'Xe$t ֿ<:N Y\*SKpR@i Ux#)&af&قFFH"!#u1 2HVpԈE@ r$XJ(ςJOK!5],ۉi:: yDj]@3%Z:঑KDak,ބV}'g'd*xLt<+-B a@#^vs\V}|ZD#m..M> ҩ\M ~9kD5XrC>غПZ#%j)VXVTԗJ\Rx8 =JyT V򆢝s]S4RQpkG[ :-y#g-ol -۵15f!|2]R>MN7աhB,#PFTTI *p4Kt 1S?<:A:@w# 2tFu!cBHpԛ-tnԕk&MRAI4 b)h<`ߝr6Vdؔ>_oI|4* lfcnߨX̃- 勲:;),;bT F%0<b ʷ.wC^/e3~+ɸS>5ϧe?'|ο?GI [Q}QBEAE#*C" l.IBhX3崚 ׀w (o_?=PyS&V&$Z^8s7&9G3@vJn4Dl _#;T~MGMit[z2<&]Mf>uHq_ow94&y3kCd'!< zVYX/1Wlk W4כh7_Nn l&ZsFs|,zW^hut^)X{2gkS(~zlYc"( 6woww>l6a-vPhj b4vMwCuB^ {uxnk ΃Ү-vRxM)O[Cm^3|^NDz+Tr:L"rp(p.xEmǑcq kq܆uquJP[:o>m{9R L(|-k\O^3Zf4fZV t6DQ}GxM|Bxl#N77DAUg a*h5DxƲL(g+|To»p'o'@;Y|G 6dQXNRڑmnlNZؑon6N:Zr5skd/n+ي%dunv5!鈿iJ ] /Length 230 /Filter /FlateDecode >> stream x%λ2PᵎK$.wqMBw)Z3T[0A>= <>= data(USArrests) h = hclust(dist(USArrests)) plot(h) @ Or for the ``heatmap'': <>= heatmap(as.matrix(USArrests)) @ \subsection{Building hierarchical clustering with another software} We made these tools \begin{description} \item[r2xcluster] Write data table to Xcluster file format <>= library(ctc) r2xcluster(USArrests,file='USArrests_xcluster.txt') @ \item[r2cluster] Write data table to Cluster file format <>= r2cluster(USArrests,file='USArrests_xcluster.txt') @ \item[xcluster] Hierarchical clustering (need Xcluster tool by Gavin Sherlock) \begin{verbatim} > h.xcl=xcluster(USArrests) > plot(h.xcl) \end{verbatim} It is roughtly the same as \begin{verbatim} > r2xcluster(USArrests,file='USArrests_xcluster.txt') > system('Xcluster -f USArrests_xcluster.txt -e 0 -p 0 -s 0 -l 0') > h.xcl=xcluster2r('USArrests_xcluster.gtr',labels=TRUE) \end{verbatim} \item[xcluster2r] Importing Xcluster/Cluster output \end{description} \subsection{Using other visualization softwares} We now consider that we have an object of the type produced by 'hclust' (or a hierarchical cluster imported with previous functions) like: <>= hr = hclust(dist(USArrests)) hc = hclust(dist(t(USArrests))) @ \begin{description} \item[hc2Newick] Export hclust objects to Newick format files <>= write(hc2Newick(hr),file='hclust.newick') @ \item[r2gtr,r2atr,r2cdt] Export hclust objects to Freeview or Treeview visualization softwares <>= r2atr(hc,file="cluster.atr") r2gtr(hr,file="cluster.gtr") r2cdt(hr,hc,USArrests ,file="cluster.cdt") @ \item[hclust2treeview] Clustering and Export hclust objects to Freeview or Treeview visualization softwares <>= hclust2treeview(USArrests,file="cluster.cdt") @ \end{description} \section{See Also} Theses examples can be tested with command {\tt demo(ctc)}.\\ \noindent All functions has got man pages, try {\tt help.start()}.\\ \noindent Ctc aims to interact with other softwares, some of them: \begin{description} \item[xcluster] made by Gavin Scherlock, http://genome-www.stanford.edu/\~\/sherlock/cluster.html \item[Cluster, Treeview] made by Michael Eisen, http://rana.lbl.gov/EisenSoftware.htm \item[Freeview] made by Marco Kavcic and Blaz Zupan, http://magix.fri.uni-lj.si/freeview \end{description} \noindent If you want to cite amap or ctc in a publication, use~: Antoine Lucas and Sylvain Jasson, \emph{Using amap and ctc Packages for Huge Clustering}, R News, 2006, vol 6, issue 5 pages 58-60. \end{document}