affy/DESCRIPTION0000644000175200017520000000466614710267250014247 0ustar00biocbuildbiocbuildPackage: affy Version: 1.84.0 Title: Methods for Affymetrix Oligonucleotide Arrays Author: Rafael A. Irizarry , Laurent Gautier , Benjamin Milo Bolstad , and Crispin Miller with contributions from Magnus Astrand , Leslie M. Cope , Robert Gentleman, Jeff Gentry, Conrad Halling , Wolfgang Huber, James MacDonald , Benjamin I. P. Rubinstein, Christopher Workman , John Zhang Maintainer: Robert D. Shear URL: https://bioconductor.org/packages/affy BugReports: https://github.com/rafalab/affy/issues Depends: R (>= 2.8.0), BiocGenerics (>= 0.1.12), Biobase (>= 2.5.5) Imports: affyio (>= 1.13.3), BiocManager, graphics, grDevices, methods, preprocessCore, stats, utils, zlibbioc Suggests: tkWidgets (>= 1.19.0), affydata, widgetTools, hgu95av2cdf LinkingTo: preprocessCore Description: The package contains functions for exploratory oligonucleotide array analysis. The dependence on tkWidgets only concerns few convenience functions. 'affy' is fully functional without it. License: LGPL (>= 2.0) Collate: ProgressBarText.R ppset.ttest.R ppsetApply.R expressoWidget.R getCDFenv.R AffyRNAdeg.R avdiff.R barplot.ProbeSet.R bg.Affy.chipwide.R bg.R expresso.R fit.li.wong.R generateExprVal.method.avgdiff.R generateExprVal.method.liwong.R generateExprVal.method.mas.R generateExprVal.method.medianpolish.R generateExprVal.method.playerout.R hlog.R justrma.R loess.normalize.R maffy.R mas5.R merge.AffyBatch.R normalize.constant.R normalize.contrasts.R normalize.invariantset.R normalize.loess.R normalize.qspline.R normalize.quantiles.R pairs.AffyBatch.R plot.density.R plotLocation.R plot.ProbeSet.R pmcorrect.mas.R AffyBatch.R mva.pairs.R ProbeSet.R read.affybatch.R rma.R summary.R tukey.biweight.R whatcdf.R xy2indices.R zzz.R biocViews: Microarray, OneChannel, Preprocessing LazyLoad: yes git_url: https://git.bioconductor.org/packages/affy git_branch: RELEASE_3_20 git_last_commit: 1174adf git_last_commit_date: 2024-10-29 Repository: Bioconductor 3.20 Date/Publication: 2024-10-29 NeedsCompilation: yes Packaged: 2024-10-29 23:24:24 UTC; biocbuild affy/MD50000644000175200017520000001753014710267250013043 0ustar00biocbuildbiocbuildcb8de2dcf5f02aed7cb58d4e2c5cf2b1 *DESCRIPTION 7984ce06d5e44b7ee5b982a0f63a9f28 *NAMESPACE 8b302225673e9a47484648a2252433bf *NEWS 070c28ce6fe355baa903723f9a1a6884 *R/AffyBatch.R 0334cde0c9597bf58339e1040df122e1 *R/AffyRNAdeg.R 1e34cef3ee0cfa288eb50ce36296cddb *R/ProbeSet.R 75afbc07f49617854f85957502e84542 *R/ProgressBarText.R 84e01d934f54386ee3e16579331cecd8 *R/avdiff.R 86b21a2412a47119d1b5c662715746df *R/barplot.ProbeSet.R 86645a209b53341e168858e4df6f322c *R/bg.Affy.chipwide.R 69903894b0f4ba096e88bb2ea9aa3900 *R/bg.R 9633394d4855c85bf4457ecdc127bec4 *R/expresso.R 6000f929caa9f84891296b48f4cf2d43 *R/expressoWidget.R 7c57e2223d9c30295e8181a4b409fa15 *R/fit.li.wong.R 991e0028ee122aa84bd2cc139f417c4c *R/generateExprVal.method.avgdiff.R 8e0ddf6f4c7a9f45a4edbd57bb10e336 *R/generateExprVal.method.liwong.R e7d5f4b3a24dbf928a08ea3ecb4482f5 *R/generateExprVal.method.mas.R 58bc927387b56558006b6b8e9b9f15aa *R/generateExprVal.method.medianpolish.R 6494490d3ec4caa07bf1ae9411f13fe9 *R/generateExprVal.method.playerout.R fcabdc74d88796a93efc73501f8e00f3 *R/getCDFenv.R a97343ecf34a0c695dc1508dcf7e95ec *R/hlog.R 21220a993da63a15bf2141ca8a4dc24e *R/justrma.R 5bb59d92cc8b7764addc2d8ce19c80d9 *R/loess.normalize.R 4062a189ef820c2aedfa19b62f06a5c7 *R/maffy.R e3417071175b0f879d11f049808d498a *R/mas5.R 1e1bc9a16c57a55948e00dced1ca13ad *R/merge.AffyBatch.R 343f38efc817b7fe7958f790f5217a52 *R/mva.pairs.R a1581f97bf9a9c98cd807624f15c39cc *R/normalize.constant.R 6e92431caa1f6622e45db88a4a8b98f5 *R/normalize.contrasts.R 6af38ad9c6ba21335473898db67be0a2 *R/normalize.invariantset.R 570dc63a32c5cfa7ba1a72721875bbb4 *R/normalize.loess.R 4f53b0370608ea01bc0a391332b40c49 *R/normalize.qspline.R 730d7fb54740c85cf23d3356b767377b *R/normalize.quantiles.R 1745f88af5da0e81926e9548658a44d0 *R/pairs.AffyBatch.R d9b8cfffd49fdd53e119a446d6258e0e *R/plot.ProbeSet.R 304ff93f0797af8e74d66d73c773d5fa *R/plot.density.R c25e9df921c693a5f8c2c1dbfed4e1c7 *R/plotLocation.R 9fddd5ea4b46aaf3689eb7bda672b30f *R/pmcorrect.mas.R d0ebcd4a00b350e08b23a0cde56c0ffc *R/ppset.ttest.R e748aa1b8986ab33b04fad872da69938 *R/ppsetApply.R 615a24b691fa8136e35e087c6908931c *R/read.affybatch.R 6f5497160b879d511c5e3bf25d818d03 *R/rma.R a61b711740a87955aadc2a8c87a007d1 *R/summary.R 98ffa171b42281acf9c9011804e60117 *R/tukey.biweight.R d62dc3f908fb10e595ea8d298b734b91 *R/whatcdf.R a6255dd06ecec9a6b0143e1b6d4037e2 *R/xy2indices.R 17ab84f133f9243b2fab5feb3f54aa1e *R/zzz.R 3ea9d3b1261438691611357da98e0034 *README.md abeb9de2b49712d03717420da49d6a07 *aclocal.m4 18caf646600d813b3534224f28eac317 *build/vignette.rds 4d5d1d9e86fee7f5bdc81370a418a979 *changelog 763d76d03c222874a8084d847ecc835f *cleanup 1d6167a77c56a8817c02360555c3ba2e *configure 694f8cb2cea59b4012f22bdf486e2143 *configure.in b6d037f3e75a2239f732061dc270f4e9 *data/SpikeIn.rda a54dd058aa2082b8be22f4039031d02a *data/cdfenv.example.rda 90670c4125be13a9941d6a7cb55599e3 *data/mapCdfName.rda e519c08248c6b5f11b3a517d39429769 *demo/00Index 2b7ad15bac320f607b433f256d9ff06f *demo/affy.tour.R c3f94566b0951a39aac9aa91cf316724 *inst/CITATION 81d74906df8e2d6fa228d9b90e42c363 *inst/doc/affy.R d1829fbd816625e0f1599f6590121344 *inst/doc/affy.Rnw a8eee26bcb8c7fe50253db24000791ca *inst/doc/affy.pdf 4a7b9c144e68788240986d9f2b42ce9b *inst/doc/builtinMethods.R f6e3c4110f194e78c4f16e1a7a98dd1e *inst/doc/builtinMethods.Rnw 6eb5bfd3cf3b5ceaccf6507c3f1dc357 *inst/doc/builtinMethods.pdf 65435e477c3c62640472eb2524ca9afa *inst/doc/customMethods.R ef0418df26d8e1c57a54dbc1b706c834 *inst/doc/customMethods.Rnw ef50c580b0d939500a39a9c653849e48 *inst/doc/customMethods.pdf d5d29eb83b25fdb651734ea20b40a46e *inst/doc/vim.R 014d1363e486e5a63fc13e173a218a5c *inst/doc/vim.Rnw 9a2ec063f0a49e349306c908b2194435 *inst/doc/vim.pdf 1d80aff5790a51668cd931beaba9f94c *inst/tests/affybatch.R c9cc934120a959d16bc53572904de476 *inst/tests/bg.correct.R 976fe73df407facb3071d1a02825b969 *inst/tests/expression.values.R cee66e6a3b8acc98f1cc88c3addb0c32 *inst/tests/normalize.methods.R d1534330b5f9b72b811677104efb610e *man/AffyBatch-class.Rd 1bfb284b16c44b60f18905b9bc2f73a5 *man/AffyRNAdeg.Rd 066ea73a33d65df0eaae336f071adb3d *man/MAplot.Rd fc9d9830abef2564ac4dfa7c76283f83 *man/ProbeSet-class.Rd 405313c3dffce2ee10f4847834e20c98 *man/ProgressBarText-class.Rd 750cf993178df8864ba44122d2fefa02 *man/SpikeIn.Rd d566f94347fe0fa1b73787e2e1496bb4 *man/affy-deprecated.Rd 8ff2e5519e9470ba4178c05ef76ec272 *man/affy-options.Rd 0876c61f7e8bfe99b3363b281f0b6a88 *man/affy.scalevalue.exprSet.Rd c720dec86ae7096d126c2f2937da7003 *man/barplot.ProbeSet.Rd ca6249d86a8424a697b12e2ec2b8f43d *man/bg.adjust.Rd 06e833370fa567ff50df3d412a3df173 *man/bgc.Rd 5dedd9727ca49fd1130fbc8ac414291b *man/cdfFromBioC.Rd e2f1140f25d030e472d5ae8615b4a9cb *man/cdfenv.example.Rd f4f36f2386cfda69800567a390dbddd6 *man/cleancdfname.Rd 60ee5037c0fea5d91564924617e6cd38 *man/debug.affy123.Rd 57c527aa78401717acb953ead8a4ab45 *man/expresso.Rd f9e6770e3b9241eaf04fb005c7e08400 *man/expressoWidget.Rd 78b0d41cc173aca50b989f5bb2544edf *man/fit.li.wong.Rd 47b5b3dbef27e0ebfed64ea10fb4c330 *man/generateExprSet-methods.Rd b96d2afd44960a978590d7950cfd2a3f *man/generateExprVal-methods.Rd fa2ae84cca7ce90cdd4a2bf7824024c3 *man/generateExprVal.method.avgdiff.Rd 015d5742ed18f046b9a96704508b1cb0 *man/generateExprVal.method.playerout.Rd f9d17d50812500acbe4dea3a5963addb *man/hlog.Rd d7543823e1c73a4b8c6c00e929c18d2d *man/justrma.Rd 9178f3662abb58216d554cc943b21575 *man/list.celfiles.Rd 0b86ecbfc4ca3f739fd659c0b532248b *man/maffy.subset.Rd 0ebe26dcc80ff3c78c81a4115850079c *man/mas5.Rd 9dd82406c4bae43a41a657e594acb54c *man/mas5calls.Rd e0b41fed0c1666a09dbc80cb29eacf95 *man/merge.AffyBatch.Rd 6cba2a32a9481320bb2792ef8ab60b1e *man/mva.pairs.Rd 49df698566b50fd574606cd1f22a6472 *man/normalize-methods.Rd d62312c4e44e2681f0d38e5811a79b45 *man/normalize.constant.Rd 802315ced6a83d9d6fb98f25c5d81e03 *man/normalize.contrast.Rd 40753751f011fed5aa74a432eba627f2 *man/normalize.invariantset.Rd 16512a6132f330f781693060084c934a *man/normalize.loess.Rd 3a7d8f7384b88e635e74ebb9b176fa77 *man/normalize.qspline.Rd 07209fcf271558014db58b52e2ac3ba5 *man/normalize.quantiles.Rd 82d5d5a791ee01318d4756053d5543de *man/normalize.quantiles.robust.Rd 0857bb2875b83da75cce4568b6da383e *man/pairs.AffyBatch.Rd a727f57d89370a6083702208710a8c11 *man/plot.ProbeSet.Rd 001eea95ca63540aa3ee367ca16ff18e *man/plot.density.Rd 6a2bb5aec50f831f51e6948c9b0f1072 *man/plotLocation.Rd 589c26cd7526df5b1504ec2f216386ef *man/pmcorrect.Rd 004c35841fadc308ff6f95d867ad0468 *man/ppsetApply.Rd 7e9dbf1ad38a9a4a02db2cdae004c10d *man/probeMatch-methods.Rd 680f7dd8575ccc65b6841f90886d7ef6 *man/probeNames-methods.Rd 64a5bb7a44c365d8da77086ae4fa3dc8 *man/read.affybatch.Rd f690e020192ae5b137340b462587bfb1 *man/read.probematrix.Rd 78e619b246027b0bece9506fba74acec *man/rma.Rd e05881faf138b7eebf35eaf23d2730af *man/setAffyOptions.Rd ec74b0d17c6d84b9bdd386f55cba6d4c *man/summary.Rd 917e7f409ebfdbb114a48ec729d467a3 *man/tukey.biweight.Rd 7be2589bc05ab3412777316c35cbcf81 *man/whatcdf.Rd 34715a4586f0f1d342050e343095557d *man/xy2indices.Rd d9358be4b7f002294ef05476ce5f551f *src/Makevars.in abe1e96b753ca58718cacda87eeaaf61 *src/Makevars.win e56e9878b1ba4c2303617d6392afcc6e *src/chipbackground.c df0c0b8c1c9d1dcf6d308dfa22331303 *src/getall_locations.c 5a0ca8aa0c31ee8ddc901aff29f8b062 *src/mas5calls.c 07ba44b1932dbb01ac80469fed79a826 *src/rma2.c 560379da720c31d10166029bf912721d *src/rma_common.c 29aa92807b22bb271676c54a99076b97 *src/rma_common.h db4e1ac0f966e66b9c6646fe91871d68 *vignettes/EWSnap.png d1829fbd816625e0f1599f6590121344 *vignettes/affy.Rnw 1bc072606e25b7ff335d65db7ba011a3 *vignettes/affy.bib f6e3c4110f194e78c4f16e1a7a98dd1e *vignettes/builtinMethods.Rnw ef0418df26d8e1c57a54dbc1b706c834 *vignettes/customMethods.Rnw e5e1b2e32c84d618566f76b911795042 *vignettes/image.png 014d1363e486e5a63fc13e173a218a5c *vignettes/vim.Rnw 2dc131e830609ac4e828f05bfb181840 *vignettes/widget1.ps 7de3db1a5a1968c84657f817de849548 *vignettes/widget2.ps 2295dd5c806c4d595fcdec813d26bc1d *vignettes/widgetfilechooser.png affy/NAMESPACE0000644000175200017520000000452514710217042013744 0ustar00biocbuildbiocbuilduseDynLib("affy") importFrom(BiocGenerics, updateObject, colnames, boxplot, image) import(affyio) import(zlibbioc) importClassesFrom(Biobase, AnnotatedDataFrame, AssayData, eSet, MIAME, Versioned, VersionedBiobase, Versions) importClassesFrom(methods, ANY, character, environment, integer, matrix, missing, numeric) importMethodsFrom(Biobase, annotatedDataFrameFrom, annotation, assayData, classVersion, "classVersion<-", description, "description<-", experimentData, exprs, "exprs<-", featureNames, "featureNames<-", isCurrent, isVersioned, notes, "notes<-", pData, "pData<-", phenoData, "phenoData<-", preproc, "preproc<-", protocolData, "protocolData<-", rowMedians, sampleNames, "sampleNames<-", se.exprs, "se.exprs<-") importMethodsFrom(methods, initialize, show) importFrom(Biobase, addVigs2WinMenu, assayDataElementReplace, assayDataNew, multiassign, read.AnnotatedDataFrame, read.MIAME, testBioCConnection) importMethodsFrom(BiocGenerics, normalize) importFrom(BiocManager, repositories) importFrom(graphics, abline, axis, barplot, frame, hist, lines, matplot, mtext, pairs, par, plot, points, smoothScatter, text) importFrom(grDevices, dev.interactive, gray) importFrom(methods, as, callNextMethod, getMethod, is, new, slot) importFrom(preprocessCore, normalize.quantiles, normalize.quantiles.robust, rma.background.correct) importFrom(stats, approx, density, IQR, lm, loess, loess.control, median, medpolish, model.response, model.weights, optim, pnorm, predict, quantile, runif, sd, smooth.spline, splinefun, t.test, terms, var, wilcox.test) importFrom(utils, available.packages, contrib.url, data, flush.console, install.packages, object.size, packageVersion) ##export everything that does not start with a . exportPattern("^[^\\.]") export(.setAffyOptions) exportMethods(show, boxplot, image, exprs, "exprs<-", featureNames, geneNames, sampleNames, se.exprs, updateObject) exportClasses("AffyBatch") ## S3 methods S3method(plot, ProbeSet) S3method("$", AffyBatch) S3method(barplot, ProbeSet) S3method(merge, AffyBatch) S3method(pairs, AffyBatch) affy/NEWS0000644000175200017520000001247214710217042013224 0ustar00biocbuildbiocbuildversion 1.41.1 o Fixed bug. attr(r,"constant") <- thisconstant * refconstant to attr(r,"constant") <- refconstant / thisconstant. Reported Aris Floratos. version 1.23.x o Populate new eSet slot 'protocolData' with information from cel files. version 1.17.x o Replaced usage of defunct Biobase classes exprSet and phenoData with ExpressionSet and AnnotatedDataFrame. version 1.4.x [under development] o xy2indices/indices2xy have now a (dangerous) parameter xy.offset. See below for more details. o a new package-wide parameter called 'xy.offset' was added. This is the first towards getting rid of the 'indexing-starting-at-one-and -not-at-zero' difficulty. This package-wide parameter is the only thing one should play play with to change the offset of x/y coordinates for features on a chip. o computeExprSet (method of AffyBatch) has the following (visible) improvements: - better reporting of errors - better handlings ids as parameters (does not crash any longer when unknown ids are given) o indexProbes (method of AffyBatch) sees the deprecated flag 'xy' removed for good. o mmindex (see indexProbes above) o pmindex (see indexProbes above) o ppsetApply: a function to apply a function over the probe sets that can be built from an instance of AffyBatch. This is done in the spirit of esetApply in Biobase (the covariate information in phenoData are directly accessible from the function (see example in the man page). o rma - the subset parameter now works properly. o mva.pairs - now uses a subset to fit the loess curve (much more efficient). also the summary statistics displayed are different. In particular the median and IQR of the M's are shown in the lower triangle. Previously, an IQR of loess curve values was shown. version 1.3.x Things done: 0 (wh:) moved everything related to Cdf-class from 'affy' to 'makecdfenv': R/Cdf.R, R/getLocationsData.Cdf.R, locate.name.R, pmormm.R R/read.cdffile.R, data/cdf.example.rda, man/Cdf-class.Rd man/getLocationsData.Cdf.Rd, man/locate.name.Rd, man/pmormm.Rd man/read.cdffile.Rd, src/read_cdffile.c o read.affybatch2 reads all cel files together in one big hit into an affybatch o the baseline in normalize.AffyBatch,invariant can be selected using a baseline.type parameter. Also changed "progress" to the more standard "verbose". Seemed to be an error since both PM and MM probes were normalized by only PM's where used to establish the normalization, now follows same standard as been introduced for normalize.AffyBatch.quantiles. o Most normalization routines can now be called with the parameter type which specifies whether to be pmonly, mmonly, both together or both separately. This introduces more consistency to the how the normalization routines are actually applied to affybatchs. o express() has been completely removed. Things that would be good to see before next release: o More consistent usage/application of MIAME version 1.2.x: o Autoload of cdfenvs on demand (uses reposTools). Can be configured through the options. o slot 'preprocessing' of the MIAME attribute used to store normalization step information [will be polished, list returned for the moment. Need for a class and check compliance with MIAME standards] o default methods for normalization, bg correction, pm correction and summary now in the package options [options exist for all, but only used by normalize for the moment]. o tuning of the MAS5.0 methods implemented (bgcorrect.mas, ...) [Ben for details. add URL for the comparison he made] o method plot.ProbeSet, an alternative to barplot, to plot probe level information. o parameter 'scale' in the method barplot for ProbeSet. All the barplots are scaled to eachothers.This is the default. o bug in the parser fixed (infinite loop reported with apparently non-standard CEL files.). o bug in the parser fixed (the 'sd' data returned were not correct). o missing slot in the dataset SpikeIn fixed. o The function express() is deprecated. It still functions normally but gives warning mesage. It will be removed in a future release. The function expresso() should be used as a replacement. o bug in normalize.AffyBatch.qspline fixed (thanks to people at Insightful). The expression data matrix sent to normalize.qspline was mistakingly transposed. o The default background on the rma() function has been changed. Now the results from rma() and expresso() should agree completely. o New functions 'xy2indices' and 'indices2xy' to shuttle from x/y pos to indices (like the ones in cdfenvs) (and reverse). o Reformating of the documentation. version 1.1.x: o 'image(cel)' scales to the size (# rows and # cols) of a chip. locations can be plotted over directly ('plotLocations' was fixed accordiginly). o 'write.celfile(cel)' to write Cel objects into .CEL files o 'getInfoInAffyFile' to snoop in CEL and CDF files o 'whatcdf' to get the name of the CDF from the CEL o one more slot in class 'Cdf': cdfName (will match with what is returned by 'whatcdf') o one more slot in class 'Cel': cdfName (returned by whatcdf) o new class 'AffyBatch': cdfName (returned by whatcdf) o extensive set of tests in the directory 'tests/' affy/R/0000755000175200017520000000000014710217042012720 5ustar00biocbuildbiocbuildaffy/R/AffyBatch.R0000644000175200017520000007261614710217042014706 0ustar00biocbuildbiocbuild##RG added a method to store and update the available normalization methods normalize.AffyBatch.methods <- function() .affyInternalEnv[["normalize.AffyBatch.methods"]] upDate.normalize.AffyBatch.methods <- function(x) { if (is.character(x)) .affyInternalEnv[["normalize.AffyBatch.methods"]] <- x } express.summary.stat.methods <- function() .affyInternalEnv[["express.summary.stat.methods"]] upDate.express.summary.stat.methods <- function(x) { if (is.character(x)) .affyInternalEnv[["express.summary.stat.methods"]] <- x } generateExprSet.methods <- function() .affyInternalEnv[["generateExprSet.methods"]] upDate.generateExprSet.methods <- function(x) { if (is.character(x)) .affyInternalEnv[["generateExprSet.methods"]] <- x } bgcorrect.methods <- function() .affyInternalEnv[["bgcorrect.methods"]] upDate.bgcorrect.methods <- function(x) { if (is.character(x)) .affyInternalEnv[["bgcorrect.methods"]] <- x } pmcorrect.methods <- function() .affyInternalEnv[["pmcorrect.methods"]] upDate.pmcorrect.methods <- function(x) { if (is.character(x)) .affyInternalEnv[["pmcorrect.methods"]] <- x } ## computeExprSet: ## - better reporting of errors ## - better handling of ids (does not crash any longer when unknown id) ## - use of the progress bar in Biobase 1.4.4 ## - cleanup of the comments in the code ## indexProbes: ## - deprecated flag 'xy' removed for good if (debug.affy123) cat("-->initAffyBatch\n") ## Inherits from Affybatch ## The accessor 'intensity' gets what is in the slot 'exprs' setClass("AffyBatch", representation=representation( cdfName="character", nrow="numeric", ncol="numeric"), contains="eSet", prototype=prototype( new("VersionedBiobase", versions=c(classVersion("eSet"), AffyBatch="1.2.0")))) setMethod("initialize", signature(.Object="AffyBatch"), ## provide a signature consistent with the new defintion, but that picks up the (implicit) old function(.Object, cdfName="", nrow=0, ncol=0, phenoData, featureData, experimentData=new("MIAME"), annotation=character(0), protocolData=phenoData[,integer(0)], assayData, exprs=matrix(numeric(0), nrow=nrow, ncol=ncol), ## se.exprs ...) { .Object@cdfName <- cdfName .Object@nrow <- nrow .Object@ncol <- ncol dots <- list(...) ## remove reporterInfo, description, notes from '...' if ("reporterInfo" %in% names(dots)) { if (missing(featureData)) { if (!is.null(dots[["reporterInfo"]])) { if (is(dots[["reporterInfo"]], "data.frame")) { featureData <- new("AnnotatedDataFrame", data=dots[["reporterInfo"]]) } else { warning("trying to convert reporterInfo (class '", class(dots[["reporterInfo"]]), "') to featureData (class 'AnnotatedDataFrame')", immediate.=TRUE) featureData <- as(dots[["reporterInfo"]], "AnnotatedDataFrame") } } else { stop("use 'featureData' rather than 'reporterInfo' for feature covariates") } } } if ("description" %in% names(dots)) { if (missing(experimentData)) experimentData <- dots[["description"]] else stop("use 'experimentData' rather than 'description' for experiment description") } if ("notes" %in% names(dots)) { ## warning("addding 'notes' to 'experimentData'") notes(experimentData) <- c(notes(experimentData), dots[["notes"]]) } dots <- dots[!names(dots) %in% c("reporterInfo", "description", "notes")] ## update phenoData to AnnotatedDataFrame, if necessary if (missing(assayData)) { assayData <- do.call(assayDataNew, c(list(exprs=exprs), dots)) } else if (!missing(exprs)) { stop("cannot initialize when both 'assayData' and 'exprs' are specified") } if (missing(phenoData) || is.null(phenoData)) phenoData <- annotatedDataFrameFrom(assayData, byrow=FALSE) else if (!is(phenoData, "AnnotatedDataFrame")) phenoData <- as(phenoData, "AnnotatedDataFrame") if (missing(featureData)) featureData <- annotatedDataFrameFrom(assayData, byrow=TRUE) callNextMethod(.Object, assayData=assayData, phenoData=phenoData, featureData=featureData, experimentData=experimentData, annotation=annotation, protocolData=protocolData) }) setMethod("updateObject", signature(object="AffyBatch"), function(object, ..., verbose=FALSE) { if (verbose) message("updateObject(object = 'AffyBatch'") if (isVersioned(object) && isCurrent(object)["AffyBatch"]) return(callNextMethod()) if (!isVersioned(object) || is.null(classVersion(object)[["AffyBatch"]])) { exprs <- slot(object, "exprs") se.exprs <- slot(object, "se.exprs") if (!all(dim(se.exprs) == dim(exprs))) { if (!all(dim(se.exprs)==0)) warning("removing 'se.exprs' with dimensions different from 'exprs'") se.exprs <- NULL } if ("reporterInfo" %in% names(attributes(object)) && any(dim(slot(object, "reporterInfo"))!=0)) warning("reporterInfo data not transfered to 'AffyBatch' object") experimentData=updateObject(slot(object, "description")) if ("notes" %in% names(attributes(object)) && length(slot(object, "notes"))!=0) { warning("adding 'notes' to 'experimentData'") notes(experimentData) <- c(notes(experimentData), object@notes) } if (!is.null(se.exprs)) new("AffyBatch", phenoData=as(slot(object, "phenoData"), "AnnotatedDataFrame"), experimentData=experimentData, annotation=slot(object, "annotation"), cdfName=slot(object, "cdfName"), nrow=slot(object, "nrow"), ncol=slot(object, "ncol"), exprs=exprs, se.exprs=se.exprs) else new("AffyBatch", phenoData=as(slot(object, "phenoData"), "AnnotatedDataFrame"), experimentData=experimentData, annotation=slot(object, "annotation"), cdfName=slot(object, "cdfName"), nrow=slot(object, "nrow"), ncol=slot(object, "ncol"), exprs=exprs) } else if (!isCurrent(object)[["AffyBatch"]]) { ## remove empty se.exprs, introduced in class version 1.2.0 se.exprs <- assayData(object)[["se.exprs"]] if (!is.null(se.exprs) && all(is.na(se.exprs))) { message("removing 'se.exprs' with all NA values") se.exprs(object) <- NULL } object <- callNextMethod() classVersion(object)["AffyBatch"] <- classVersion("AffyBatch")["AffyBatch"] object } else object }) ####################################################### ### accessors ####################################################### if (debug.affy123) cat("--->accessors\n") setMethod("exprs", signature(object="AffyBatch"), function(object) assayData(object)[["exprs"]]) setReplaceMethod("exprs", signature(object="AffyBatch"), function(object, value) { assayDataElementReplace(object, "exprs", value, validate=FALSE) }) setMethod("se.exprs", signature(object="AffyBatch"), function(object) { obj <- assayData(object)[["se.exprs"]] if (is.null(obj)) new("matrix") else obj }) setReplaceMethod("se.exprs", signature(object="AffyBatch"), function(object, value) { assayDataElementReplace(object, "se.exprs", value, validate=FALSE) }) if (is.null(getGeneric("cdfName"))) setGeneric("cdfName", function(object) standardGeneric("cdfName")) setMethod("cdfName", "AffyBatch", function(object) object@cdfName) ##intensity setGeneric("intensity", function(object) standardGeneric("intensity")) setMethod("intensity", signature(object="AffyBatch"), function(object) assayData(object)[["exprs"]]) setGeneric("intensity<-", function(object, value) standardGeneric("intensity<-")) setReplaceMethod("intensity", signature(object="AffyBatch"), function(object, value) { assayDataElementReplace(object, "exprs", value, validate=FALSE) }) ##for now, there is no accessor for se.exprs. we could use this to store ##sd, but if no one uses it... why do it setMethod("length",signature(x="AffyBatch"), function(x) ncol(exprs(x))) ##RI: assumes matrices setMethod("dim", signature=signature(x="AffyBatch"), function(x) c(x@nrow, x@ncol)) ####################################################### ### methods ####################################################### setMethod("featureNames", signature=signature(object="AffyBatch"), function(object) { cdf.envir <- getCdfInfo(object) ls(envir=cdf.envir) }) setReplaceMethod("featureNames", signature=signature( object="AffyBatch", value="ANY"), function(object, value) stop("Cannot change featureNames of AffyBatch")) ##geneNames method if (debug.affy123) cat("--->geneNames\n") if( is.null(getGeneric("geneNames") )) setGeneric("geneNames", function(object) standardGeneric("geneNames")) setMethod("geneNames",signature("AffyBatch"), function(object){ cdf.envir <- getCdfInfo(object) return(ls(envir=cdf.envir)) }) ##show method if (debug.affy123) cat("--->show\n") setMethod("show", "AffyBatch", function(object) { if (!isVersioned(object) || classVersion(object)["AffyBatch"] < "1.1.0") stop("AffyBatch out-of-date; use 'updateObject()'", call.=FALSE) if (!isCurrent(object)['AffyBatch']) message("AffyBatch out-of-date; consider 'updateObject()'") ## Location from cdf env cdf.env <- tryCatch(getCdfInfo(object), error=function(err) { warning("missing cdf environment! in show(AffyBatch)", call.=FALSE) NULL }) num.ids <- if (!is.null(cdf.env)) length(ls(envir=cdf.env)) else num.ids <- "???" cat("AffyBatch object\n") cat("size of arrays=", nrow(object), "x", ncol(object), " features (", object.size(object) %/% 1024, " kb)\n", sep="") cat("cdf=", object@cdfName, " (", num.ids, " affyids)\n", sep="") cat("number of samples=", length(object), "\n", sep="") cat("number of genes=", length(featureNames(object)), "\n", sep="") cat("annotation=", object@annotation, "\n", sep="") if(length(notes(object)) > 0) cat("notes=",paste(notes(object),collapse="\n\t"), "\n", sep="") }) # if (is.null(getGeneric("index2xy"))) { # setGeneric("indexProbes", function(object, which, ...) # standardGeneric("indexProbes")) # } ## indexProbes if( is.null(getGeneric("indexProbes"))) setGeneric("indexProbes", function(object, which, ...) standardGeneric("indexProbes")) setMethod("indexProbes", signature=c(object="AffyBatch", which="missing"), function(object, which, ...) indexProbes(object, which="pm", ...)) setMethod("indexProbes", signature("AffyBatch", which="character"), function(object, which=c("pm", "mm","both"), genenames=NULL) { which <- match.arg(which) i.probes <- match(which, c("pm", "mm", "both")) ## i.probes will know if "[,1]" or "[,2]" ## if both then [,c(1,2)] if(i.probes==3) i.probes=c(1,2) envir <- getCdfInfo(object) if(is.null(genenames)) genenames <- ls(envir ) ## note: the variable name genenames could be confusing (the same gene can be ## found in several affyid (ex: the 3' and 5' controls) ans <- mget(genenames, envir, ifnotfound=NA) ## this kind of thing could be included in 'mget' as ## an extra feature. A function could be specified to ## process what is 'multi'-get on the fly for (i in seq(along=ans)) { if ( is.na(ans[[i]][1]) ) next ##as.vector cause it might be a matrix if both tmp <- as.vector(ans[[i]][, i.probes]) ans[[i]] <- tmp } return(ans) }) ##pmindex method if( is.null(getGeneric("pmindex"))) setGeneric("pmindex", function(object,...) standardGeneric("pmindex")) ##wrapper setMethod("pmindex", "AffyBatch", function(object, genenames=NULL) indexProbes(object, "pm", genenames=genenames)) ##mmindex method if( is.null(getGeneric("mmindex"))) setGeneric("mmindex", function(object,...) standardGeneric("mmindex")) ##wrapper setMethod("mmindex", "AffyBatch", function(object,genenames=NULL) indexProbes(object, "mm", genenames=genenames)) ##probeNames method if( is.null(getGeneric("probeNames"))) setGeneric("probeNames", function(object, ...) standardGeneric("probeNames")) setMethod("probeNames","AffyBatch", function(object, genenames=NULL, mm=FALSE){ if(mm) Index <- mmindex(object,genenames) else Index <- pmindex(object,genenames) reps <- unlist(lapply(Index,length),use.names=FALSE) rep(names(Index),reps) }) if( is.null(getGeneric("probes")) ) setGeneric("probes", function(object, ...) standardGeneric("probes")) setMethod("probes", signature("AffyBatch"), function(object, which=c("pm", "mm"), genenames=NULL, LISTRUE=FALSE, drop=FALSE){ which <- match.arg(which) index <- indexProbes(object, which, genenames) if(LISTRUE) ans <- lapply(index, function(i) exprs(object)[i, ,drop=drop]) else{ index <- unlist(index) ans <- exprs(object)[index, ,drop=drop] colnames(ans) <- sampleNames(object) rownames(ans) <- names(index) } return(ans) }) ##pm method if( is.null(getGeneric("pm") )) setGeneric("pm", function(object, ...) standardGeneric("pm")) setMethod("pm","AffyBatch", function(object, genenames=NULL, LISTRUE=FALSE){ if(is.null(genenames) & !LISTRUE){ cdfname <- getCdfInfo(object) psets<- as.list(cdfname) psets<- psets[order(names(psets))] index <-unlist(sapply(psets, function(x) x[,1]),use.names=FALSE) return(exprs(object)[index,,drop=FALSE]) } else{ return(probes(object, "pm", genenames, LISTRUE=LISTRUE)) } }) if( is.null(getGeneric("pm<-") )) setGeneric("pm<-", function(object, value) standardGeneric("pm<-")) setReplaceMethod("pm", "AffyBatch", function(object, value){ Dimnames <- dimnames(exprs(object)) cdfname <- getCdfInfo(object) psets<- as.list(cdfname) psets<- psets[order(names(psets))] pmIndex <-unlist(sapply(psets, function(x) x[,1]),use.names=FALSE) exprs(object)[pmIndex,] <- value dimnames(exprs(object)) <- Dimnames object }) ##mm method if( is.null(getGeneric("mm") )) setGeneric("mm", function(object, ...) standardGeneric("mm")) setMethod("mm",signature("AffyBatch"), function(object, genenames=NULL, LISTRUE=FALSE){ if(is.null(genenames) & !LISTRUE){ cdfname <- getCdfInfo(object) psets<- as.list(cdfname) psets<- psets[order(names(psets))] index <-unlist(sapply(psets, function(x) x[,2]),use.names=FALSE) return(exprs(object)[index,,drop=FALSE]) } else{ probes(object, "mm", genenames, LISTRUE=LISTRUE) } }) if( is.null(getGeneric("mm<-") )) setGeneric("mm<-", function(object, value) standardGeneric("mm<-")) setReplaceMethod("mm", "AffyBatch", function(object, value){ Dimnames <- dimnames(exprs(object)) cdfname <- getCdfInfo(object) psets<- as.list(cdfname) psets<- psets[order(names(psets))] mmIndex <-unlist(sapply(psets, function(x) x[,2]),use.names=FALSE) exprs(object)[mmIndex,] <- value dimnames(exprs(object)) <- Dimnames object }) ###probeset setGeneric("probeset", function(object, ...) standardGeneric("probeset")) setMethod("probeset", "AffyBatch", function(object, genenames=NULL, locations=NULL){ oldoptions <- getOption("BioC") if(is.null(locations)) ##use info in cdf envir <- getCdfInfo(object) else{ ##if the user gives a list of locations let them use that as enviromnet envir <- new.env() multiassign(names(locations), locations, envir) object@cdfName <- "envir" newoptions <- oldoptions newoptions$affy$probesloc[[1]]$what <- "environment" newoptions$affy$probesloc[[1]]$where <- parent.env(envir) options("BioC"=newoptions) } if(is.null(genenames)) genenames <- ls(envir) p.pps <- vector("list", length(genenames)) names(p.pps) <- genenames for (i in seq(along=genenames)) { i.pm <- indexProbes(object, "pm", genenames[i])[[1]] if (is.na(i.pm)[1]) intensity.pm <- matrix() else intensity.pm <- intensity(object)[i.pm, , drop=FALSE] i.mm <- indexProbes(object, "mm", genenames[i])[[1]] if (is.na(i.mm)[1]) intensity.mm <- matrix() else intensity.mm <- intensity(object)[i.mm, , drop=FALSE] p.pps[[i]] <- new("ProbeSet", id = genenames[i], pm = intensity.pm, mm = intensity.mm) } options("BioC"=oldoptions) return(p.pps) }) if (debug.affy123) cat("--->[[\n") ##[[: no more [[, because no more cel class # setMethod("[[", "AffyBatch", # function(x, i, j, ...) { ##no need for j # return(new("Cel", # intensity = matrix(intensity(x)[, i], ncol(x), nrow(x)), # name = sampleNames(x)[i], # cdfName = x@cdfName, # history = description(x)@preprocessing)) # }) ##[[ we need replacement that takes an entry by the Cel in value ##[ subseting. can only happen by sample. for now not by gene setMethod("[", "AffyBatch", function(x, i, j,..., drop=FALSE) { if (!missing(i) & missing(j)) { warning("The use of abatch[i,] and abatch[i] is deprecated. Please use abatch[,i] instead.\n") x <- x[,i] } if (!missing(j)) { phenoData(x) <- phenoData(x)[j, , ..., drop=FALSE] intensity(x) <- intensity(x)[ ,j, ..., drop=FALSE] if (!identical(se.exprs(x), new("matrix"))) { se.exprs(x) <- se.exprs(x)[ ,j, ..., drop=FALSE] } protocolData(x) <- protocolData(x)[j, , ..., drop=FALSE] } return(x) }) setReplaceMethod("[", "AffyBatch", function(x, i, j,..., value) { phenoData(x)[i,, ...] <- phenoData(value)[i, , ..., drop=FALSE] intensity(x)[,i] <- intensity(value)[ ,i,... , drop=FALSE] protocolData(x)[i,, ...] <- protocolData(value)[i, , ..., drop=FALSE] return(x) }) ## --- bg.correct if (debug.affy123) cat("--->bg.correct\n") if( is.null(getGeneric("bg.correct") )) setGeneric("bg.correct", function(object, method, ...) standardGeneric("bg.correct")) setMethod("bg.correct", signature(object="AffyBatch", method="character"), function(object, method=getOption("BioC")$affy$bgcorrect.method, ...) { ## simple for system to let one add background correction methods ## relies on naming convention method <- match.arg(method, bgcorrect.methods()) methodname <- paste("bg.correct.", method, sep="") if (! exists(methodname)) stop(paste("Unknown method (cannot find function", methodname, ")")) r <- do.call(methodname, alist(object, ...)) return(r) }) ## --- normalize.methods if( is.null(getGeneric("normalize.methods"))) setGeneric("normalize.methods", function(object) standardGeneric("normalize.methods")) setMethod("normalize.methods", signature(object="AffyBatch"), function(object) { normalize.AffyBatch.methods() }) ## ---normalize if (is.null(getGeneric("normalize"))) setGeneric("normalize", function(object, ...) standardGeneric("normalize")) setMethod("normalize", signature(object="AffyBatch"), function(object, method=getOption("BioC")$affy$normalize.method, ...) { method <- match.arg(method, normalize.AffyBatch.methods()) if (is.na(method)) stop("unknown method") method <- paste("normalize.AffyBatch", method, sep=".") object <- do.call(method, alist(object, ...)) ## collect info in the attribute "normalization" preproc <- c(description(object)@preprocessing, list(normalization = attr(object, "normalization"))) attr(object, "normalization") <- NULL ## and store it in MIAME MIAME <- description(object) MIAME@preprocessing <- preproc description(object) <- MIAME ## return(object) }) ## --- expression value computation if (debug.affy123) cat("--->computeExprSet\n") if( is.null(getGeneric("computeExprSet"))) setGeneric("computeExprSet", function(x, pmcorrect.method, summary.method, ...) standardGeneric("computeExprSet")) setMethod("computeExprSet", signature(x="AffyBatch", pmcorrect.method="character", summary.method="character"), function(x, pmcorrect.method, summary.method, ids=NULL, verbose=TRUE, summary.param=list(), pmcorrect.param=list()) { pmcorrect.method<- match.arg(pmcorrect.method, pmcorrect.methods()) summary.method <- match.arg(summary.method, express.summary.stat.methods()) ids <- unname(ids) n <- length(x) ## if 'ids' is NULL compute for all ids if (is.null(ids)) ids <- featureNames(x) m <- length(ids) pps.warnings <- vector("list", length=m) ## cheap trick to (try to) save time c.pps <- new("ProbeSet", pm=matrix(), mm=matrix()) ## matrix to hold expression values exp.mat <- matrix(NA, m, n) se.mat <- matrix(NA, m, n) if (verbose) { cat(m, "ids to be processed\n") countprogress <- 0 } ## loop over the ids mycall <- as.call(c(getMethod("express.summary.stat", signature=c("ProbeSet","character", "character")), list(c.pps, pmcorrect=pmcorrect.method, summary=summary.method, summary.param=summary.param, pmcorrect.param=pmcorrect.param)) ) ##only one character cause no more bg correct ##bg.correct=bg.method, param.bg.correct=bg.param, CDFINFO <- getCdfInfo(x) ##do it once! if (verbose) { pbt <- new("ProgressBarText", length(ids), barsteps = as.integer(20)) open(pbt) } for (i in seq(along=ids)) { if (verbose) { updateMe(pbt) } id <- ids[i] if (! exists(id, envir=CDFINFO)) { pps.warnings[[i]] <- paste("Unknown id", id) } else { ## locations for an id loc <- get(id, envir=CDFINFO) l.pm <- loc[, 1] if (ncol(loc) == 2) l.mm <- loc[ ,2] else l.mm <- integer() np <- length(l.pm) ##names are skipped c.pps@pm <- intensity(x)[l.pm, , drop=FALSE] c.pps@mm <- intensity(x)[l.mm, , drop=FALSE] ## generate expression values ## (wrapped in a sort of try/catch) mycall[[2]] <- c.pps ev <- try(eval(mycall), silent = TRUE) } if (! inherits(ev, "try-error")) { exp.mat[i, ] <- ev$exprs se.mat[i,] <- ev$se.exprs } else { pps.warnings[[i]] <- ev[1] } } if (verbose) { close(pbt) } dimnames(exp.mat) <- list(ids, sampleNames(x)) dimnames(se.mat) <- list(ids, sampleNames(x)) eset <- new("ExpressionSet", phenoData=phenoData(x), ## featureData picked up from exprs experimentData=experimentData(x), exprs=exp.mat, se.exprs=se.mat, annotation=annotation(x), protocolData=protocolData(x)) attr(eset, "pps.warnings") <- pps.warnings return(eset) }) ##some methods i was asked to add setMethod("image",signature(x="AffyBatch"), function(x, transfo=log, col=gray(c(0:64)/64), xlab="", ylab="",type=c("exprs","se.exprs"), main, ...){ scn <- prod(par("mfrow")) ask <- dev.interactive() which.plot <- 0 type <- match.arg(type) if (type == "se.exprs" && all(!dim(se.exprs(x)))){ stop("no se.exprs in object") } x.pos <- (1:nrow(x)) - (1 + getOption("BioC")$affy$xy.offset) y.pos <- (1:ncol(x)) - (1 + getOption("BioC")$affy$xy.offset) for(i in 1:length(sampleNames(x))){ which.plot <- which.plot+1; if(trunc((which.plot-1)/scn)==(which.plot-1)/scn && which.plot>1 && ask) par(ask=TRUE) if (type == "exprs"){ m <- exprs(x)[,i] } else { m <- se.exprs(x)[,i] } if (is.function(transfo)) { m <- transfo(m) } m <- as.matrix(rev(as.data.frame(matrix(m, nrow=length(x.pos), ncol=length(y.pos))))) if( missing(main) ){ main.cur=sampleNames(x)[i] } else { main.cur <- main } image(x.pos, y.pos, m, col=col, main=main.cur, xlab=xlab, ylab=ylab,,xaxt='n', yaxt='n', ...) par(ask=FALSE) } }) ##some special handling of main is needed setMethod("boxplot",signature(x="AffyBatch"), function(x, which="both", range=0, main, ...){ tmp <- description(x) if( missing(main) && (is(tmp, "MIAME")) ) main <- tmp@title tmp <- unlist(indexProbes(x,which)) tmp <- tmp[seq(1,length(tmp),len=5000)] boxplot(data.frame(log2(intensity(x)[tmp,])), main=main, range=range, ...) }) ###hist if (debug.affy123) cat("--->hist\n") if( is.null(getGeneric("hist")) ) setGeneric("hist") setMethod("hist",signature(x="AffyBatch"), function(x,...) plotDensity.AffyBatch(x,...)) if( is.null(getGeneric("mas5calls")) ) setGeneric("mas5calls", function(object,...) standardGeneric("mas5calls")) setMethod("mas5calls",signature(object="AffyBatch"), function(object,...) mas5calls.AffyBatch(object,...)) ##like for ExpressionSet "$.AffyBatch" <- function(affybatch, val) (pData(affybatch))[[as.character(val)]] affy/R/AffyRNAdeg.R0000644000175200017520000000576414710217042014765 0ustar00biocbuildbiocbuild"AffyRNAdeg" <- function (abatch,log.it=TRUE) { { data <- pm(abatch, LIST = TRUE) if(log.it==TRUE) data <- lapply(data,log2) names <- colnames(exprs(abatch)) probe.set.size <- function(x) { size <- dim(x)[1] return(size) } max.num <- sapply(data, probe.set.size) tab <- (table(max.num)) ord <- order(-as.numeric(tab)) K <- as.numeric(names(tab))[ord[1]] data <- data[max.num == K] } get.row <- function(x, i = 1) { return(x[i, ]) } get.col <- function(x, i = 1) { return(x[, i]) } rowstack <- function(x, i = 1) { return(t(sapply(x, get.row, i))) } colstack <- function(x, i = 1) { return(t(sapply(x, get.col, i))) } N <- length(data) n <- dim(data[[1]])[2] mns <- matrix(nrow = n, ncol = K) sds <- mns for (i in 1:K) { data.stack <- rowstack(data, i) if(dim(data[[1]])[2]==1) data.stack <- t(data.stack) mns[, i] <- colMeans(data.stack) sds[, i] <- apply(data.stack, 2, sd) } mns.orig <- mns mn <- mns[, 1] mns <- sweep(mns, 1, mn) mns <- mns/(sds/sqrt(N)) lm.stats <- function(x) { index <- 0:(length(x) - 1) ans <- summary(lm(x ~ index))$coefficients[2, c(1, 4)] return(ans) } stats <- apply(mns, 1, lm.stats) answer <- list(N, names, mns.orig, sds/sqrt(N), stats[1, ], stats[2, ]) names(answer) <- c("N", "sample.names", "means.by.number", "ses", "slope", "pvalue") return(answer) } "summaryAffyRNAdeg" <- function (rna.deg.obj, signif.digits = 3) { temp.table <- rbind(signif(rna.deg.obj$slope, signif.digits), signif(rna.deg.obj$pvalue, signif.digits)) colnames(temp.table) <- rna.deg.obj$sample.names rownames(temp.table) <- c("slope", "pvalue") ##write.table(temp.table, file = "", quote = FALSE) return(temp.table) } "plotAffyRNAdeg" <- function (rna.deg.obj,transform="shift.scale",cols=NULL, ...) { if(!is.element(transform,c("shift.scale","shift.only","neither"))) stop("Tranform must be 'shift.scale','shift.only', or 'neither'") mns <- rna.deg.obj$means.by.number if(is.null(cols)) cols=rep(4,dim(mns)[1]) ylab="Mean Intensity" if(transform=="shift.scale"){ sds <- rna.deg.obj$ses mn <- mns[, 1] mns <- sweep(mns, 1, mn) mns <- mns/(sds) mns <- sweep(mns, 1, 1:(dim(mns)[1]), "+") ylab <- paste(ylab,": shifted and scaled") }else if(transform=="shift.only"){ mn <- mns[, 1] mns <- sweep(mns, 1, mn) mns <- sweep(mns, 1, 1:(dim(mns)[1]), "+") ylab <- paste(ylab,": shifted") } plot(-2, -1, pch = "", xlim = range(-1, (dim(mns)[2])), ylim = range(min(as.vector(mns)) - 1, max(as.vector(mns)) + 1), xlab = "5' <-----> 3'\n Probe Number ", ylab = ylab, axes = FALSE, main = "RNA degradation plot", ...) axis(1) axis(2) for (i in 1:dim(mns)[1]) lines(0:((dim(mns)[2]-1)), mns[i, ],col=cols[i]) } affy/R/ProbeSet.R0000644000175200017520000001142414710217042014570 0ustar00biocbuildbiocbuild ## A ProbeSet holds probe values for a probe pairs set(*) accross a batch of experiments. ## methods 'express.summary.stat' returns of expression value per experiement in the ## batch, and 'bg.correct' does background correction (in some sense... the MM probes ## were created to measure unspecific hybridization. People thought that doing ## PM - MM would remove background noise. The method 'bg.correct' accepts extra parameters ## through '...' (can be used to pass background correction parameters common to different ## ProbeSet) ## ## - ## (*) : a probe pair set is the set of probes pairs(**) related to an affyid. Generally a ## a probe pair set has 20 elements. ## (**): a probe pair (or atom) is a pair of PM/MM values ## if (debug.affy123) cat("-->initProbeSet\n") setClass("ProbeSet", representation(id="character", pm="matrix", mm="matrix"), prototype=list(pm=matrix(), mm=matrix())) setMethod("show", "ProbeSet", function(object) { cat("ProbeSet object:\n") cat(" id=", object@id, "\n", sep="") cat(" pm=", nrow(object@pm), "probes x ", ncol(object@pm), " chips\n") }) ##DEBUG: what to do with that ? ## --> with what ? setMethod("sampleNames", "ProbeSet", function(object) colnames(object)) setMethod("colnames", signature(x="ProbeSet"), function(x ,do.NULL=FALSE, prefix="row") { cnames<-colnames(pm(x)) if (is.null(cnames)) { if (do.NULL) { warning("No column names for ProbeSet") } else { cnames <- paste(prefix, 1:ncol(x@pm)) } } return(cnames) }) ## pm if( is.null(getGeneric("pm"))) setGeneric("pm", function(object) standardGeneric("pm")) setMethod("pm", "ProbeSet", function(object) object@pm) if( is.null(getGeneric("pm<-"))) setGeneric("pm<-", function(object, value) standardGeneric("pm<-")) setReplaceMethod("pm", signature=c("ProbeSet", "matrix"), function(object, value) { if (! all(dim(value) == dim(object@mm))) stop("dimension mismatch between 'pm' and 'mm'") object@pm <- value }) ## mm if( is.null(getGeneric("mm"))) setGeneric("mm", function(object) standardGeneric("mm")) setMethod("mm", "ProbeSet", function(object) object@mm) if( is.null(getGeneric("mm<-"))) setGeneric("mm<-", function(object, value) standardGeneric("mm<-")) setReplaceMethod("mm", signature=c("ProbeSet", "matrix"), function(object, value) { if (sum(dim(value) == dim(object@mm)) != 2) stop("dimension mismatch between 'pm' and 'mm'") object@mm <- value }) ## method express.summary.stat if( is.null(getGeneric("express.summary.stat"))) setGeneric("express.summary.stat", function(x, pmcorrect, summary, ...) standardGeneric("express.summary.stat")) setMethod("express.summary.stat",signature(x="ProbeSet", pmcorrect="character", summary="character"), function(x, pmcorrect, summary, summary.param=list(), pmcorrect.param=list()) { pmcorrect <- match.arg(pmcorrect, pmcorrect.methods()) summary <- match.arg(summary, express.summary.stat.methods()) ## simple for system to let one add background correction methods ## relies on naming convention pmcorrect.methodname <- paste("pmcorrect.", pmcorrect, sep="") summary.methodname <- paste("generateExprVal.method.", summary, sep="") if (! exists(summary.methodname)) stop(paste("Unknown method (cannot find function", summary.methodname, ")")) if (! exists(pmcorrect.methodname)) stop(paste("Unknown method (cannot find function", pmcorrect.methodname, ")")) ## NOTE: this could change... #m <- do.call(bg.correct, c(alist(x@pm, x@mm), param.bg.correct)) pm.corrected <- do.call(pmcorrect.methodname, c(alist(x), pmcorrect.param)) r <- do.call(summary.methodname, c(alist(pm.corrected), summary.param)) ##DEBUG: name stuff to sort #names(r) <- names(allprobes) return(r) }) setMethod("barplot",signature(height="ProbeSet"),function(height,...) barplot.ProbeSet(height,...)) if( is.null(getGeneric("mas5calls")) ) setGeneric("mas5calls", function(object,...) standardGeneric("mas5calls")) setMethod("mas5calls",signature(object="ProbeSet"), function(object,...) mas5calls.ProbeSet(object,...)) affy/R/ProgressBarText.R0000644000175200017520000000610614710217042016144 0ustar00biocbuildbiocbuilddebug.affy123 <- FALSE setClass("ProgressBarText", representation(steps = "integer", barsteps = "integer", internals = "environment")) setMethod("initialize", "ProgressBarText", function(.Object, steps, barsteps = 10, internals = NULL) { ##.Object <- callNextMethod() if ( ! is.null(internals)) { stop("slot 'internals' is for internal use !") } .Object@barsteps = barsteps .Object@internals = new.env() assign("milestones.i", as.integer(1), envir=.Object@internals) assign("increment", as.integer(1), envir=.Object@internals) assign("milestones", as.integer(seq(1, steps, length=barsteps)), envir=.Object@internals) assign("i", as.integer(0), envir=.Object@internals) return(.Object) }) setMethod("open", "ProgressBarText", function(con, header = TRUE) { if (header) { cat("|", paste(rep(" ", con@barsteps), collapse=""), "|\n", sep="") } cat("|") increment <- get("increment", con@internals) milestones.i <- get("milestones.i", con@internals) milestones <- get("milestones", con@internals) while(milestones.i > length(milestones)) { cat("#") } if (.Platform$OS.type == "windows") flush.console() }) ## to avoid 'loosing' the default update. ## (not sure this is the most elegant way to do this) setGeneric("updateMe", function(object, ...) standardGeneric("updateMe")) setMethod("updateMe", "ProgressBarText", function(object) { increment <- get("increment", object@internals) i <- get("i", object@internals) + increment milestones.i <- get("milestones.i", object@internals) milestones <- get("milestones", object@internals) touched <- FALSE while(milestones.i <= length(milestones) && i >= milestones[milestones.i]) { cat("#") milestones.i <- milestones.i + increment touched <- TRUE } ## the 'touch' thing appears to make it save 0.1 sec / 100000 iteration ## (which makes it absolutely mandatory :) ). if (touched) { assign("milestones.i", milestones.i, envir = object@internals) if (.Platform$OS.type == "windows") flush.console() } assign("i", i, , envir = object@internals) }) setMethod("close", "ProgressBarText", function(con) { increment <- get("increment", con@internals) milestones.i <- get("milestones.i", con@internals) milestones <- get("milestones", con@internals) while(milestones.i <= length(milestones)) { cat("#") milestones.i <- milestones.i + increment } assign("milestones.i", milestones.i, envir = con@internals) cat("|\n") if (.Platform$OS.type == "windows") flush.console() }) affy/R/avdiff.R0000644000175200017520000000070014710217042014277 0ustar00biocbuildbiocbuildavdiff <- function(x,verbose=FALSE){ if(missing(x)) stop("Argument x missing, with no default\n") cat("Computing average difference for",dim(x$pm)[2],"columns") avdiff <- apply(x$pm-x$mm,2,function(y){ cat(".") tapply(y,x$name,function(z){ o <- order(z) zz <- z[-c(o[1],o[length(z)])] #take out biggest and smallest mean(z[abs(z-mean(zz))<3*sd(zz)]) }) }) colnames(avdiff) <- x$chip.names return(avdiff) } affy/R/barplot.ProbeSet.R0000644000175200017520000000204114710217042016225 0ustar00biocbuildbiocbuildbarplot.ProbeSet <- function(height, xlab="Probe pair",ylab="Intensity", main=NA, col.pm="red", col.mm="blue", beside=TRUE, names.arg="pp", ask = TRUE, scale = TRUE, ...) { opar <- par()$ask par(ask=ask) on.exit(par(ask=opar)) if (names.arg == "pp") { names.arg <- seq(1, nrow(pm(height))) } col <- c(col.pm, col.mm) if (scale) { ylim <- range(c(pm(height), mm(height)), na.rm=TRUE) } else { ylim <- NULL } if (is.na(main)) { main <- paste(height@id, "( sample", 1:ncol(pm(height)), ")") } else { main <- rep(main, length=ncol(pm(height))) } for (i in 1:ncol(pm(height))) { hh <- rbind(pm(height)[, i], mm(height)[, i]) barplot(hh, xlab=xlab, ylab=ylab, main=main[i], col=col, beside=beside, names.arg=names.arg, ylim = ylim, ...) } } affy/R/bg.Affy.chipwide.R0000644000175200017520000000266514710217042016123 0ustar00biocbuildbiocbuildbg.correct.mas <- function(object, griddim=16) { nchips <- length(object) pm.index <- unique(unlist(indexProbes(object, "pm"))) mm.index <- unique(unlist(indexProbes(object, "mm"))) ## some chips have some probesets without MM probes ## which will return an NA in mm.index mm.index <- mm.index[!is.na(mm.index)] rows <- nrow(object) cols <- ncol(object) allintensities <- intensity(object)[c(pm.index, mm.index), ] # note that the indexing is +1 more than you'd expect because # the c code expects it that way ## (note about the remark above: R indexing starts at 1 and not at 0, ## that's why the indexing is done this way. The package is primarily done to ## be used with R...) allx <- c(pm.index-1, mm.index-1) %% nrow(object) +1 ally <- c(pm.index-1, mm.index-1) %/% nrow(object) + 1 nprobes <- length(allx) corrected <- matrix(.C("affy_background_adjust_R", as.double(as.vector(allintensities)), as.integer(allx), as.integer(ally), as.integer(nprobes), as.integer(nchips), as.integer(rows), as.integer(cols), as.integer(griddim), PACKAGE="affy")[[1]], nprobes, nchips) intensity(object)[c(pm.index, mm.index), ] <- corrected ## and what with the 'non pm or mm' probes ? ## answer: they are not used per Affymetrix Statistical Algorithms Description Document. return(object) } affy/R/bg.R0000644000175200017520000000333514710217042013437 0ustar00biocbuildbiocbuild####These functions take an AffyBatch object "background correct" ####the pms and return an AffyBatch with the background corrected PMs ### bg.parameters <- function(pm, n.pts=2^14){ max.density <- function(x, n.pts){ aux <- density(x, kernel="epanechnikov", n=n.pts, na.rm=TRUE) aux$x[order(-aux$y)[1]] } pmbg <- max.density(pm,n.pts) ##Log helps detect mode bg.data <- pm[pm < pmbg] ##do it again to really get the mode pmbg <- max.density(bg.data,n.pts) bg.data <- pm[pm < pmbg] bg.data <- bg.data - pmbg bgsd <- sqrt(sum(bg.data^2)/(length(bg.data)-1))*sqrt(2)#/.85 sig.data <- pm[pm > pmbg] sig.data <- sig.data-pmbg expmean <- max.density(sig.data,n.pts) alpha <- 1/expmean mubg <- pmbg list(alpha=alpha,mu=mubg,sigma=bgsd) } bg.adjust <- function(pm, n.pts=2^14, ...){ param <- bg.parameters(pm,n.pts) b <- param$sigma pm <- pm - param$mu - param$alpha*b^2 pm + b*((1./sqrt(2*pi))*exp((-1./2.)*((pm/b)^2)))/pnorm(pm/b) } bg.correct.none <- function(object, ...) object ##bg.correct.subtractmm <- function(object){ ## pm(object) <- pm(object) - mm(object) ## return(object) ##} ###bg.correct.rma <- function(object, ...){ ### pm(object) <- apply(pm(object),2,bg.adjust) ### return(object) ##} ## ## this function calls the c code as an alternative to the R code above. ## it should help end the disagreement between rma() and expresso() ## bg.correct.rma <- function(object,...){ pm(object) <- rma.background.correct(pm(object),copy=FALSE) return(object) } ## --- pmcorrect things pmcorrect.subtractmm <- function(object){ pm.corrected <- pm(object) - mm(object) return(pm.corrected) } pmcorrect.pmonly <- function(object) { return(pm(object)) } affy/R/expresso.R0000644000175200017520000000764514710217042014727 0ustar00biocbuildbiocbuildexpresso <- function(afbatch, ## -- bg.correct=TRUE, bgcorrect.method = NULL, bgcorrect.param = list(), ## -- normalize = TRUE, normalize.method = NULL, normalize.param=list(), ## -- pmcorrect.method = NULL, pmcorrect.param = list(), ## -- summary.method = NULL, summary.param = list(), summary.subset = NULL, ## --- verbose = TRUE, widget = FALSE ) { # JZ added this function setCorrections <- function(){ bioc.opt <- getOption("BioC") if(bg.correct){ if(is.null(bgcorrect.method)){ BGMethods <- bgcorrect.methods() }else{ BGMethods <- bgcorrect.method } }else{ BGMethods <- "None" } if(normalize){ if(is.null(normalize.method)){ normMethods <- normalize.methods(afbatch) }else{ normMethods <- normalize.method } }else{ normMethods <- "None" } # Default for this one may not be correct if(is.null(pmcorrect.method)){ PMMethods <- pmcorrect.methods() }else{ PMMethods <- pmcorrect.method } # Default for this one may not be correct if(is.null(summary.method)){ expMethods <- generateExprSet.methods() }else{ expMethods <- summary.method } corrections <- expressoWidget(BGMethods, normMethods, PMMethods, expMethods, bioc.opt$affy$bgcorrect.method, bioc.opt$affy$normalize.method, bioc.opt$affy$pmcorrect.method, bioc.opt$affy$summary.method) if(!is.null(corrections)){ if(corrections[["BG"]] != "None"){ bgcorrect.method <<- corrections[["BG"]] } if(corrections[["NORM"]] != "None"){ normalize.method <<- corrections[["NORM"]] } if(corrections[["PM"]] != "None"){ pmcorrect.method <<- corrections[["PM"]] } if(corrections[["EXP"]] != "None"){ summary.method <<- corrections[["EXP"]] } }else{ stop("Aborted by user") } } if (widget) { requireNamespace("tkWidgets") } nchips <- length(afbatch) ###background stuff must be added before normalization! if(widget){ setCorrections() } ## -- summary of what will be done if (verbose) { if (bg.correct){ cat("background correction:", bgcorrect.method, "\n") } if (normalize) { cat("normalization:", normalize.method, "\n") } cat("PM/MM correction :", pmcorrect.method, "\n") cat("expression values:", summary.method, "\n") } ## -- background correct (if needed) if (bg.correct) { if (verbose) cat("background correcting...") afbatch <- do.call("bg.correct", c(alist(afbatch, method=bgcorrect.method), bgcorrect.param)) if (verbose) cat("done.\n") } ## -- normalize (if wished) if (normalize) { if (verbose) cat("normalizing...") afbatch <- do.call(BiocGenerics::normalize, c(alist(afbatch, normalize.method), normalize.param)) if (verbose) cat("done.\n") } eset <- computeExprSet(afbatch, summary.method=summary.method, pmcorrect.method= pmcorrect.method, ids=summary.subset, summary.param=summary.param, pmcorrect.param=pmcorrect.param) return(eset) } affy/R/expressoWidget.R0000644000175200017520000001040114710217042016053 0ustar00biocbuildbiocbuild# A function that takes user inputs for correction methods for # expresso (affy). Default values can be missing, in which case the # first element will be chosen as the default. expressoWidget <- function(BGMethods, normMethods, PMMethods, expMethods, BGDefault, normDefault, PMDefault, expDefault){ methodList <- list() END <- FALSE if(any(missing(BGMethods), missing(normMethods), missing(PMMethods), missing(expMethods))){ stop("At least one of the method arguments is missing") } if(any(c(length(BGMethods), length(normMethods), length(PMMethods), length(expMethods)) == 0)){ stop("At least one of the method argument is of length 1") } if(missing(BGDefault)){ BGM <- tcltk::tclVar(BGMethods[1]) }else{ BGM <- tcltk::tclVar(BGDefault) } if(missing(normDefault)){ NMM <- tcltk::tclVar(normMethods[1]) }else{ NMM <- tcltk::tclVar(normDefault) } if(missing(PMDefault)){ PMM <- tcltk::tclVar(PMMethods[1]) }else{ PMM <- tcltk::tclVar(PMDefault) } if(missing(expDefault)){ EXM <- tcltk::tclVar(expMethods[1]) }else{ EXM <- tcltk::tclVar(expDefault) } quit <- function(){ tcltk::tkdestroy(base) } end <- function(){ END <<- TRUE methodList[["BG"]] <<- tcltk::tclvalue(BGM) methodList[["NORM"]] <<- tcltk::tclvalue(NMM) methodList[["PM"]] <<- tcltk::tclvalue(PMM) methodList[["EXP"]] <<- tcltk::tclvalue(EXM) quit() } base <- tcltk::tktoplevel() ## post -- hook on.exit(tcltk::tkdestroy(base)) tcltk::tktitle(base) <- "Expresso methods selection" ## Description text tcltk::tkpack(tcltk::tklabel(base, text = "Welcome to Expresso methods selection"), expand = FALSE, fill = "x", padx = 5, pady = 5) tcltk::tkpack(tcltk::tklabel(base, text = paste("You need to choose correction", "methods or go with the defaults")), expand = FALSE, fill = "x", padx = 5) ## Selections for correction methods methodFrame <- tcltk::tkframe(base) ## Background selection BGLabel <- tcltk::tklabel(methodFrame, text = "Background correction") BGDropdown <- tcltk::tkframe(methodFrame) widgetTools::dropdownList(BGDropdown, BGMethods, BGM, 20, tcltk::tclvalue(BGM), TRUE) tcltk::tkgrid(BGLabel, BGDropdown) tcltk::tkgrid.configure(BGLabel, sticky = "e") tcltk::tkgrid.configure(BGDropdown, sticky = "w") ## Normlization NMLabel <- tcltk::tklabel(methodFrame, text = "Normalization") NMDropdown <- tcltk::tkframe(methodFrame) widgetTools::dropdownList(NMDropdown,normMethods, NMM, 20, tcltk::tclvalue(NMM), TRUE) tcltk::tkgrid(NMLabel, NMDropdown) tcltk::tkgrid.configure(NMLabel, sticky = "e") tcltk::tkgrid.configure(NMDropdown, sticky = "w") ## PM correction PMLabel <- tcltk::tklabel(methodFrame, text = "PM correction") PMDropdown <- tcltk::tkframe(methodFrame) widgetTools::dropdownList(PMDropdown, PMMethods, PMM, 20, tcltk::tclvalue(PMM), TRUE) tcltk::tkgrid(PMLabel, PMDropdown) tcltk::tkgrid.configure(PMLabel, sticky = "e") tcltk::tkgrid.configure(PMDropdown, sticky = "w") ## PM correction EXLabel <- tcltk::tklabel(methodFrame, text = "Expression") EXDropdown <- tcltk::tkframe(methodFrame) widgetTools::dropdownList(EXDropdown, expMethods, EXM, 20, tcltk::tclvalue(EXM), TRUE) tcltk::tkgrid(EXLabel, EXDropdown) tcltk::tkgrid.configure(EXLabel, sticky = "e") tcltk::tkgrid.configure(EXDropdown, sticky = "w") tcltk::tkpack(methodFrame, expand = TRUE, fill = "both", padx = 5, pady = 10) butFrame <- tcltk::tkframe(base) quitBut <- tcltk::tkbutton(butFrame, text = "Quit", width = 7, command = quit) endBut <- tcltk::tkbutton(butFrame, text = "Select", width = 7, command = end) tcltk::tkgrid(quitBut, endBut, padx = 5) tcltk::tkpack(butFrame, expand = FALSE, fill = "x", pady = 5) tcltk::tkwait.window(base) if(END){ return(methodList) }else{ return(NULL) } } affy/R/fit.li.wong.R0000644000175200017520000002045414710217042015206 0ustar00biocbuildbiocbuildfit.li.wong <- function(data.matrix, remove.outliers=TRUE, normal.array.quantile=0.5, normal.resid.quantile=0.9, large.threshold=3, large.variation=0.8, outlier.fraction=0.14, delta = 1e-06,maxit=50,outer.maxit=50, verbose=FALSE, ...){ if(missing(data.matrix)) stop("Argument data.matrix missing, with no default") II <- dim(data.matrix)[1] ##II instrad of I cause I is a fuction in R J <- dim(data.matrix)[2] if(J==1){ warning("Li and Wong's algorithm is not suitable when only one probe pair") return(list(theta = as.vector(data.matrix), phi = 1, sigma.eps = NA, sigma.theta = NA, sigma.phi=NA, theta.outliers=NA, phi.outliers=NA, single.outliers=NA,convergence1=NA,convergence2=NA,iter = NA, delta = NA)) } cI <- II ##current I cJ <- J ##current J theta.outliers.old <- rep(FALSE, II) ##ith entry will be true if theta_i is an outlier phi.outliers.old <- rep(FALSE, J) ##jth entry will be true if phi_j is an outlier single.outliers.old <- matrix(FALSE, II, J) ##ij entry will be true if y_is an outlier theta.outliers <- theta.outliers.old ##need this to now if change ocurred in outliers phi.outliers <- phi.outliers.old ##need this to know if chages occured in outlies single.outliers <- single.outliers.old flag1 <- NA ##these will be false if convergence not reacher, flag2 <- NA ## this will be false if outliers respectively cuase iter to stop if(remove.outliers){ flag1 <- TRUE; flag2<-TRUE original.data.matrix <- data.matrix ##so we can get it back after outlier removal change.theta <- 1 #start with 1 change.phi <- 1 change.single <- 1 outer.iter <- 0 while(flag1 & flag2 & change.theta+change.phi+change.single >0 & outer.iter < outer.maxit) { outer.iter <- outer.iter + 1 if((outer.iter%%3==0 & change.theta>0) | (outer.iter%%3==1 & change.phi>0)){ #something has to change ##starting values phi <- colMeans(data.matrix) c <- sqrt(cJ/sum(phi[!phi.outliers]^2)) phi <- c * phi theta <- (data.matrix[, !phi.outliers, drop=FALSE] %*% phi[!phi.outliers, drop=FALSE])/cJ iter <- 0 change <- 1 #start with one theta.old <- rep(0, II) while(change > delta & iter < maxit) { iter <- iter + 1 phi <- t(data.matrix[!theta.outliers, ,drop=FALSE]) %*% theta[!theta.outliers, drop=FALSE] ##ignore the outliers c <- sqrt(cJ/sum(phi[!phi.outliers, drop=FALSE]^2)) phi <- c * phi theta <- (data.matrix[,!phi.outliers, drop=FALSE] %*% phi[!phi.outliers, drop=FALSE])/cJ change <- max(abs(theta[!theta.outliers] - theta.old[!theta.outliers])) if(verbose) cat(paste("Outlier iteration:",outer.iter,"estimation iteration:",iter,"chage=",change,"\n")) theta.old <- theta } if(iter>=maxit){ ##convergence not reached. might as well get out warning(paste("No convergence in inner loop after",iter,"in outerler tieration",outer.iter,"\n")) flag1 <- FALSE } if(mean(phi[!phi.outliers]<0)>.5){ ##for identifiability.. theta*phi = (-theta)*(-phi), i require that most phis are positive theta <- -theta phi <- -phi } theta <- as.vector(theta) phi <- as.vector(phi) data.matrixhat <- outer(theta, phi) resid <- data.matrix-data.matrixhat } ##DEALING WITH OUTLIERS ##we alternate removal of outliers ##if even iteration take out thetas that are outliers (as defined by Li and Wong). if(outer.iter%%3==1){ ## we start with single outliers single.outliers <- resid > large.threshold*quantile(abs(resid),normal.resid.quantile) single.outliers[rowSums(single.outliers) > outlier.fraction*cJ,]<-rep(FALSE,J) ##probably chip oulier, defer calling outlier single.outliers[,colSums(single.outliers) > outlier.fraction*cI]<-rep(FALSE,II) ##probably probe outlier, defer calling outlier data.matrix[single.outliers] <- data.matrixhat[single.outliers] data.matrix[!single.outliers] <- original.data.matrix[!single.outliers] change.single <- sum(abs(single.outliers.old-single.outliers)) #sum will be total of changes single.outliers.old <- single.outliers } else{ sigma.theta <- sqrt(rowSums(resid[, !phi.outliers, drop=FALSE]^2)/(cJ - 1)) sigma.phi <- sqrt(colSums(resid[!theta.outliers, , drop=FALSE]^2)/(cI - 1)) ###THETA OUTLIERS if(outer.iter%%3==2){ theta.outliers <- sigma.theta > large.threshold*quantile(sigma.theta,normal.array.quantile) | theta^2/sum(theta^2) > large.variation cI <- sum(!theta.outliers) if(cI<3) { warning("No convergence achieved, too many outliers") flag2 <- FALSE } ##single outliers in outlier chips are not longer single outliers single.outliers[theta.outliers,] <- rep(FALSE,J) data.matrix[single.outliers] <- data.matrixhat[single.outliers] data.matrix[!single.outliers]<-original.data.matrix[!single.outliers] change.theta <- sum(abs(theta.outliers.old-theta.outliers)) #sum will be total of changes change.single <- sum(abs(single.outliers.old-single.outliers)) #sum will be total of changes theta.outliers.old <- theta.outliers } ##PHI OUTLIERS else{ phi.outliers <- sigma.phi > large.threshold*quantile(sigma.phi,normal.array.quantile) | phi^2/sum(phi^2) > large.variation | phi <0 cJ <- sum(!phi.outliers) if(cJ<3) { warning("No convergence achieved, too many outliers") flag2 <- FALSE } single.outliers[,phi.outliers] <- rep(FALSE,II) data.matrix[single.outliers] <- data.matrixhat[single.outliers] data.matrix[!single.outliers]<-original.data.matrix[!single.outliers] change.phi <- sum(abs(phi.outliers.old-phi.outliers)) change.single <- sum(abs(single.outliers.old-single.outliers)) #sum will be total of changes phi.outliers.old <- phi.outliers } } if(verbose){ cat("chips used=",cI,", probes used=",cJ,", single outler=",sum(single.outliers),"\n") cat("Number of changes: single=",change.single,", theta=",change.theta,", phi=",change.phi,"\n",sep="") } } if(outer.iter>=outer.maxit){ warning("No convergence achieved in outlier loop\n") flag2 <- FALSE } all.outliers <- outer(theta.outliers,phi.outliers,FUN="|") | single.outliers sigma <- sqrt(sum(resid[!all.outliers]^2)/sum(!all.outliers)) ##in case we leave iteration and these havent been defined sigma.theta <- sqrt(rowSums(resid[,!phi.outliers, drop=FALSE]^2)/(cJ - 1)) sigma.phi <- sqrt(colSums(resid[!theta.outliers, ,drop=FALSE]^2)/(cI - 1)) } ###code for NO OUTLIER REMOVAL else{ flag1 <- TRUE phi <- colMeans(data.matrix) c <- sqrt(J/sum(phi^2)) phi <- c * phi theta <- (data.matrix %*% phi)/J iter <- 0 change <- 1 theta.old <- rep(0, II) while(change > delta & iter < maxit) { iter <- iter + 1 phi <- t(data.matrix) %*% theta c <- sqrt(J/sum(phi^2)) phi <- c * phi theta <- (data.matrix %*% phi)/J change <- max(abs(theta - theta.old)) if(verbose) cat(paste("Iteration:",iter,"chage=",change,"\n")) theta.old <- theta } if(iter>=maxit){ warning(paste("No convergence after",iter,"iterations.\n")) flag1 <- FALSE } if(mean(phi[!phi.outliers]<0)>.5){ ##for identifiability.. theta*phi = (-theta)*(-phi), i require that most phis are positive theta <- -theta phi <- -phi } theta <- as.vector(theta) phi <- as.vector(phi) data.matrixhat <- outer(theta, phi) sigma.theta <- sqrt(rowSums((data.matrix - data.matrixhat)^2)/(J - 1)) sigma.phi <- sqrt(colSums((data.matrix - data.matrixhat)^2)/(II - 1)) sigma <- sqrt(sum((data.matrix - data.matrixhat)^2)/(II * J)) } return(list(theta = theta, phi = phi, sigma.eps = sigma, sigma.theta = sigma.theta, sigma.phi=sigma.phi,theta.outliers=theta.outliers,phi.outliers=phi.outliers,single.outliers=single.outliers,convergence1=flag1,convergence2=flag2,iter = iter, delta = change)) } affy/R/generateExprVal.method.avgdiff.R0000644000175200017520000000051114710217042021020 0ustar00biocbuildbiocbuild## Currently, the input is a 2 matrices a pm and a mm ##avdiff is more like median than mean, it would be nice to actually have ##avfif ##added typical se of the mean as returned se generateExprVal.method.avgdiff <- function(probes, ...) { list(exprs=apply(probes, 2, median),se.exprs=apply(probes,2,sd)/sqrt(nrow(probes))) } affy/R/generateExprVal.method.liwong.R0000644000175200017520000000052714710217042020720 0ustar00biocbuildbiocbuildgenerateExprVal.method.liwong <- function(probes, ...) { probes <- t(probes) if (ncol(probes) == 1) { warning("method liwong unsuitable when only one probe pair") list(exprs=as.vector(probes),se.exprs=rep(NA,length(probes))) } else { tmp <- fit.li.wong(probes, ...) list(exprs=tmp$theta,se.exprs=tmp$sigma.theta) } } affy/R/generateExprVal.method.mas.R0000644000175200017520000000127214710217042020177 0ustar00biocbuildbiocbuildgenerateExprVal.method.mas <- function(probes, ...) { probes <- log2(probes) M <- ncol(probes) slg <- rep(NA,M) for (i in 1:ncol(probes)) { slg[i] <- tukey.biweight(probes[ ,i], ...) } return(list(exprs=2^slg,se.exprs=rep(NA,M))) } affy.scalevalue.exprSet <- function(eset, sc=500, analysis="absolute") { analysis <- match(analysis, c("absolute", "comparison")) if(analysis == 1) nf <- 1 else stop("sorry! comparison not implemented.") for (i in 1:ncol(exprs(eset))) { slg <- exprs(eset)[, i] sf <- sc / mean(slg, trim=0.02) reported.value <- nf * sf * slg exprs(eset)[, i] <- reported.value } return(eset) } affy/R/generateExprVal.method.medianpolish.R0000644000175200017520000000013314710217042022066 0ustar00biocbuildbiocbuildgenerateExprVal.method.medianpolish <- function(probes, ...) medianpolish(probes, ...) affy/R/generateExprVal.method.playerout.R0000644000175200017520000000217014710217042021441 0ustar00biocbuildbiocbuildgenerateExprVal.method.playerout <- function(probes, weights=FALSE, optim.method="L-BFGS-B"){ probes <- t(probes) nprobes <- ncol(probes) ## skip if only one probe if (nprobes == 1) return(t(probes)) ## I do not know to which extend the use of optim ## is really equivalent to the use of nlminb in S-plus S1 <- optim(runif(nprobes), playerout.costfunction, method=optim.method, control=list(maxit=500), y=probes) ##S1 <- nlm(playerout,runif(20),iterlim=500,y=t(y)) r <- c(probes %*% S1$par / sum(S1$par)) if (weights) attr(r,"weights") <- S1$par return(list(exprs=r,se.exprs=rep(NA,length(r)))) } ## The loss function: playerout.costfunction <- function(w, y) { N <- length(w) # Number of players J <- length(y)/N # Number of games (the number of games is the number of chips used) sumw <- sum(w) tx <- y %*% w # Full weighted score at each game pl <- matrix(0,J,N) # Loss at each game due to each player for(j in 1:J) pl[j,] <- w * y[j,] - (tx[j] - w * y[j,]) / (sumw - w) sum(pl^2) # Loss } affy/R/getCDFenv.R0000644000175200017520000001303614710217042014653 0ustar00biocbuildbiocbuildgetCdfInfo <- function(object, how=getOption("BioC")$affy$probesloc, verbose=FALSE) { ## cdfname is the cdf environment ## methods is a vector detailing how to get the file - one of ## 'library', 'bioC' if (length(how) == 0) stop("No available method to obtain CDF file") cdfname <- cdfName(object) badOut <- list() for (i in 1:length(how)) { cur <- how[[i]] out <- switch(cur$what, "environment" = cdfFromEnvironment(cdfname, cur$where, verbose), "libPath" = cdfFromLibPath(cdfname, cur$where, verbose=verbose), "bioC" = cdfFromBioC(cdfname, cur$where, verbose) ) if (is.environment(out)) return(out) else badOut <- c(badOut, out) } stop(paste("Could not obtain CDF environment, problems encountered:", paste(unlist(badOut),collapse="\n"),sep="\n")) } cdfFromEnvironment <- function(cdfname, where, verbose=TRUE) { if (verbose) print(paste("Attempting to locate",cdfname,"in specified environment")) if (exists(cdfname, inherits=FALSE, where=where)) return(as.environment(get(cdfname,inherits=FALSE,envir=where))) else { if (verbose) print(paste("Specified environment does not contain",cdfname)) return(list(paste("Specified environment does not contain",cdfname))) } } cdfFromBioC <- function(cdfname, lib=.libPaths()[1], verbose=TRUE) { cdfname <- cleancdfname(cdfname) if (verbose) print(paste("Attempting to obtain",cdfname,"from Bioconductor website")) ## First try libPaths libs <- .libPaths() if (!all(lib %in% libs)) libs <- unique(c(lib, libs)) result <- cdfFromLibPath(cdfname, lib=libs, verbose=verbose) if (is.environment(result)) return(result) if (length(lib) > 1) { warning("Ignoring all but first element of argument lib") lib <- lib[1] } if (verbose) print(paste("The environment ",cdfname," was not found in", " these directories: ", paste(libs, collapse=", "), ". Now searching the internet repository.", sep="")) if (verbose) print(paste("Checking to see if your internet connection works ...")) if (testBioCConnection()) { ## Check for file permissions if (file.access(lib, mode=0) < 0) { if (verbose) { print(paste("Directory",lib,"does not seem to exist.\n", "Please check your 'lib' parameter and try again")) return(list("Bioconductor - lib does not exist")) } } if (file.access(lib,mode=2) < 0) { if (verbose) { print(paste("You do not have write access to",lib, "\nPlease check your permissions or provide", "a different 'lib' parameter")) return(list("Bioconductor - lib is not writeable")) } } biocContribUrl <- sapply(repositories(), contrib.url) biocPkgs <- available.packages(biocContribUrl) if (! cdfname %in% biocPkgs[, "Package"]) { if (verbose) print(paste("Environment",cdfname, "was not found in the Bioconductor", "repository.")) return(list(paste("Bioconductor -",cdfname,"not available"))) } else { install.packages(cdfname, lib=lib, repos=repositories(), dependencies=c("Depends","Imports")) ## no way to know if we succeeded or not, with install.packages ##if (verbose) ## print(paste("Installation of environment", ## cdfname, "was succesful.")) } } else { if (verbose) print(paste("The current operation could not access", "the Bioconductor repository. Please", "check your internet connection, and", "report further problems to", "bioconductor@stat.math.ethz.ch")) return(list("Bioconductor - could not connect")) } return(cdfFromLibPath(cdfname, lib=lib, verbose=verbose)) } cdfFromLibPath <- function(cdfname, lib = NULL, verbose=TRUE) { cdfname <- cleancdfname(cdfname) ## First check to see if package is installed if (verbose) print(paste("Checking to see if package",cdfname, "is already installed")) if (length(find.package(cdfname, lib.loc=lib, quiet=TRUE)) == 0) return(list(paste("Library - package",cdfname,"not installed"))) ## See if package is already loaded if (cdfname %in% .packages()) { if (verbose) print(paste("The package", cdfname, "is already loaded")) } else { if (verbose) print(paste("Attempting to load package", cdfname)) ## Attempt to load the library requested do.call(library, list(cdfname, lib.loc=lib, character.only=TRUE)) ## Check to see if it got loaded if (! cdfname %in% .packages()) { ## package didn't get loaded if (verbose) print(paste("The package", cdfname, "could not be loaded")) return(list(paste("Library - package",cdfname,"is not loadable"))) } } return(get(cdfname, envir=as.environment(paste("package:", cdfname, sep="")))) } affy/R/hlog.R0000644000175200017520000000062514710217042013777 0ustar00biocbuildbiocbuild hlog <- function(x,constant=1){ #constant is where the change occurs if(constant<=0){ warning("constant less than or equal to 0. Returning log(x)\n") return(log(x)) } else{ if(constant==Inf) return(x) else{ aux <- (abs(x)=constant)*(sign(x)*(constant*log(abs(x/constant))+constant)) aux[x==0] <- 0 return(aux) } } } affy/R/justrma.R0000644000175200017520000001172614710217042014537 0ustar00biocbuildbiocbuild## Sept 11, 2003 - justRMA calls just.rma2 ### A user friendly wrapper for just.rma justRMA <- function(..., filenames=character(0), widget=getOption("BioC")$affy$use.widgets, compress=getOption("BioC")$affy$compress.cel, celfile.path=getwd(), sampleNames=NULL, phenoData=NULL, description=NULL, notes="", rm.mask=FALSE, rm.outliers=FALSE, rm.extra=FALSE, hdf5=FALSE, hdf5FilePath=NULL,verbose=FALSE, normalize=TRUE, background=TRUE, bgversion=2, destructive=FALSE, cdfname = NULL){ l <- AllButCelsForReadAffy(..., filenames=filenames, widget=widget, celfile.path=celfile.path, sampleNames=sampleNames, phenoData=phenoData, description=description) ##and now we are ready to read cel files ret<- just.rma(filenames=l$filenames, phenoData=l$phenoData, description=l$description, notes=notes, compress=compress, rm.mask=rm.mask, rm.outliers=rm.outliers, rm.extra=rm.extra, verbose=verbose, normalize=normalize, background=background, bgversion=bgversion, destructive=destructive, cdfname = cdfname) sampleNames(ret) <- l$sampleNames return(ret) } ########################################################################################### # # this function uses a different parsing routine # It was added Jul 7, 2003 by B. M. Bolstad # ########################################################################################### just.rma <- function(..., filenames=character(0), phenoData=new("AnnotatedDataFrame"), description=NULL, notes="", compress=getOption("BioC")$affy$compress.cel, rm.mask=FALSE, rm.outliers=FALSE, rm.extra=FALSE, verbose=FALSE, background=TRUE, normalize=TRUE, bgversion=2, destructive=FALSE, cdfname = NULL) { auxnames <- unlist(list(...)) filenames <- c(filenames, auxnames) checkValidFilenames(filenames) n <- length(filenames) pdata <- pData(phenoData) ##try to read sample names form phenoData. if not there use CEL filenames if(dim(pdata)[1]!=n){#if empty pdata filename are samplenames warning("Incompatible phenoData object. Created a new one.\n") samplenames <- gsub("^/?([^/]*/)*", "", unlist(filenames)) pdata <- data.frame(sample=1:n,row.names=samplenames) phenoData <- new("AnnotatedDataFrame", data=pdata, varMetadata=data.frame( labelDescription="arbitrary numbering", row.names="sample")) } else samplenames <- rownames(pdata) if (is.null(description)) { description <- new("MIAME") description@preprocessing$filenames <- filenames description@preprocessing$affyversion <- as.character(packageVersion("affy")) } ## read the first file to see what we have ##if (verbose) cat(1, "reading",filenames[[1]],"...") ## get information from cdf environment headdetails <- read.celfile.header(filenames[[1]]) if(is.null(cdfname)) cdfname <- headdetails[[1]] scandates <- sapply(seq_len(length(filenames)), function(i) { sdate <- read.celfile.header(filenames[i], info = "full")[["ScanDate"]] if (is.null(sdate) || length(sdate) == 0) NA_character_ else sdate }) protocol <- new("AnnotatedDataFrame", data=data.frame("ScanDate"=scandates, row.names = sampleNames(phenoData), stringsAsFactors=FALSE), dimLabels=c("sampleNames", "sampleColumns")) tmp <- new("AffyBatch", cdfName=cdfname, annotation=cleancdfname(cdfname, addcdf=FALSE)) pmIndex <- pmindex(tmp) probenames <- rep(names(pmIndex), unlist(lapply(pmIndex,length))) pNList <- split(0:(length(probenames) -1), probenames) ## read pm data into matrix probeintensities <- read.probematrix(filenames=filenames, cdfname = cdfname) ##pass matrix of pm values to rma ngenes <- length(geneNames(tmp)) exprs <- .Call("rma_c_complete",probeintensities$pm, pNList, ngenes, normalize, background, bgversion, verbose, PACKAGE="affy") colnames(exprs) <- samplenames se.exprs <- array(NA, dim(exprs), dimnames=list(rownames(exprs), colnames(exprs))) annotation <- annotation(tmp) notes(description) <- notes new("ExpressionSet", phenoData = phenoData, protocolData = protocol, annotation = annotation, experimentData = description, exprs = exprs, se.exprs = se.exprs) } affy/R/loess.normalize.R0000644000175200017520000000276614710217042016202 0ustar00biocbuildbiocbuildloess.normalize <- function(mat,subset=sample(1:(dim(mat)[2]),5000), epsilon=10^-2,maxit=1,log.it=TRUE,verbose=TRUE,span=2/3, family.loess="symmetric") { .Deprecated("normalize.loess", "affy") J <- dim(mat)[2] II <- dim(mat)[1] newData <- mat if(log.it){ mat <- log2(mat) newData <- log2(newData) } change <- epsilon +1 fs <- matrix(0,II,J)##contains what we substract iter <- 0 w <- c(0,rep(1,length(subset)),0) ##this way we give 0 weight to the ##extremes added so that we can interpolate while(iter < maxit){ iter <- iter+1 means <- matrix(0,II,J) ##contains temp of what we substract for(j in 1:(J-1)){ for(k in (j+1):J){ y <- newData[,j]-newData[,k] x <-(newData[,j]+newData[,k])/2 index <- c(order(x)[1],subset,order(-x)[1]) ##put endpoints in so we can interpolate xx <- x[index] yy <- y[index] aux <-loess(yy~xx,span=span,degree=1,weights=w,family=family.loess) aux <- predict(aux,data.frame(xx=x))/J means[,j] <- means[,j] + aux means[,k] <- means[,k] - aux if(verbose) cat("Done with",j,"vs",k," in iteration ",iter,"\n") } } fs <- fs+means newData <- mat-fs change <- max(colMeans((means[subset,])^2)) if(verbose) cat(iter,change,"\n") oldfs <- fs } if(change>epsilon & maxit>1) warning(paste("No convergence after",maxit,"iterations.\n")) if(log.it) return(2^newData) else return(newData) } affy/R/maffy.R0000644000175200017520000002500714710217042014151 0ustar00biocbuildbiocbuild##******************************************************************************************* #********** maffy.normalize ***** maffy.normalize <- function(data,subset,verbose=FALSE,span=0.25,family="symmetric",log.it=TRUE){ k <- dim(data)[2] ### Number of chips #### Create the transformation matrix t1 <- 1/sqrt(k) t2 <- (k-2-t1)/(k-1) t3 <- -(1+t1)/(k-1) transmat <- matrix(t3,k,k) for(i in 1:k){ transmat[1,i]<-t1 transmat[i,1]<-t1 } for(i in 2:k) transmat[i,i]<-t2 #### Find normalizing curve if(verbose) cat("Fitting normalizing curve\n") n<- length(subset) data.subset <- data[subset,] data.subset <- log(data.subset)%*%t(transmat) index <- order(data.subset[,1]) data.subset <- data.subset[index,] if( k>2) curve <- multiloess(data.subset[,2:k]~data.subset[,1],span=span,family=family,surface="direct") else curve <- loess(data.subset[,2:k]~data.subset[,1],span=span,family=family,surface="direct") ### Transform the normalizing curve before and after normalization scaled <- cbind(data.subset[,1],matrix(0,n,k-1)) %*%(transmat) unscaled <- cbind(data.subset[,1],curve$fitted) %*%(transmat) w <-c(0,rep(1,n,n),0) data.scaled <- NULL ### Normalize each array for(i in 1:k){ if(verbose) cat("Normalizing chip ",i,"\n") if(log.it){ mini <- log(min(data[,i])) maxi <- log(max(data[,i])) } else{ mini <- min(data[,i]) maxi <- max(data[,i]) } curve <- loess(c(mini,scaled[,i],maxi)~c(mini,unscaled[,i],maxi),weights=w,span=span) if(log.it) temp <- exp(predict(curve,log(data[,i]))) else temp <- predict(curve,data[,i]) data.scaled <- cbind(data.scaled,temp) } data.scaled } ##******************************************************************************************* #********** Select A subset with small rank-range over arrays ***** maffy.subset <- function(data,subset.size=5000,maxit=100,subset.delta=max(round(subset.size/100),25),verbose=FALSE){ k <- dim(data)[2] ### Number of chips n <- dim(data)[1] ## Size of starting subset, i.e. all rows if(verbose) cat("Data size",n,"x",k,"Desired subset size",subset.size,"+-",subset.delta,"\n") means <- data%*%(rep(1,k,k)/k) index0 <- order(means) data.sorted <- data[index0,] ## Init set <- rep(TRUE,n,n) ## Set-indicator index.set <- 1:n ## Indexes for subset nprev <- n+1 iter <- 1 part.of.n <- 1 ## loop while(nprev>n & n>(subset.size+subset.delta) & iter 0 parametric <- match(nmx, nmx[parametric], 0) > 0 if(!match(degree, 0:2, 0)) stop("degree must be 0, 1 or 2") iterations <- if(family=="gaussian") 1 else control$iterations if(!missing(enp.target)) if(!missing(span)) warning("both span and enp.target specified: span will be used") else { # White book p.321 tau <- switch(degree+1, 1, D+1, (D+1)*(D+2)/2) - sum(drop.square) span <- 1.2 * tau/enp.target } fit <- simplemultiLoess(y, x, w, span, degree, normalize, control$statistics, control$surface, control$cell, iterations, control$trace.hat) fit$call <- match.call() fit$terms <- mt fit$xnames <- nmx fit$x <- x fit$y <- y fit$weights <- w if(model) fit$model <- mf fit } ##******************************************************************************************* simplemultiLoess <- function(y, x, weights, span = 0.75, degree = 2, normalize = TRUE, statistics = "approximate", surface = "interpolate", cell = 0.2, iterations = 1, trace.hat = "exact") { ## Extra init parametric <- FALSE drop.square <- FALSE M <- NCOL(y) A <- rep(1,M,M) D <- NCOL(x) N <- NROW(x) fitted.all <- matrix(1,N,M) fitted.residuals <- matrix(1,N,M) pseudo.resid.all <- matrix(1,N,M) if(!N || !D) stop("invalid `x'") if(!length(y)) stop("invalid `y'") x <- as.matrix(x) max.kd <- max(N, 200) robust <- rep(1, N) divisor<- rep(1, D) if(normalize && D > 1) { trim <- ceiling(0.1 * N) divisor <- sqrt(apply(apply(x, 2, sort)[seq(trim+1, N-trim), , drop = FALSE], 2, var)) x <- x/rep(divisor, rep(N, D)) } sum.drop.sqr <- sum(drop.square) sum.parametric <- sum(parametric) nonparametric <- sum(!parametric) order.parametric <- order(parametric) x <- x[, order.parametric] order.drop.sqr <- (2 - drop.square)[order.parametric] if(degree==1 && sum.drop.sqr) stop("Specified the square of a factor predictor to be dropped when degree = 1") if(D == 1 && sum.drop.sqr) stop("Specified the square of a predictor to be dropped with only one numeric predictor") if(sum.parametric == D) stop("Specified parametric for all predictors") if(iterations) for(j in 1:iterations) { robust <- weights * robust if(j > 1) statistics <- "none" if(surface == "interpolate" && statistics == "approximate") statistics <- if(trace.hat == "approximate") "2.approx" else if(trace.hat == "exact") "1.approx" surf.stat <- paste(surface, statistics, sep="/") for(k in 1:M) { z <- .C(stats:::C_loess_raw, as.double(y[,k]), as.double(x), as.double(weights), as.double(robust), as.integer(D), as.integer(N), as.double(span), as.integer(degree), as.integer(nonparametric), as.integer(order.drop.sqr), as.integer(sum.drop.sqr), as.double(span*cell), as.character(surf.stat), fitted.values = double(N), parameter = integer(7), a = integer(max.kd), xi = double(max.kd), vert = double(2*D), vval = double((D+1)*max.kd), diagonal = double(N), trL = double(1), delta1 = double(1), delta2 = double(1), as.integer(surf.stat == "interpolate/exact")) fitted.all[,k] <- z$fitted.values } if(j==1) { trace.hat.out <- z$trL one.delta <- z$delta1 two.delta <- z$delta2 } residuals.all <- (y-fitted.all) fitted.residuals <- sqrt((residuals.all^2)%*%A) if(j < iterations) robust <- .Fortran(stats:::C_lowesw, as.double(fitted.residuals), as.integer(N), robust = double(N), integer(N))$robust } if(surface == "interpolate") { pars <- z$parameter names(pars) <- c("d", "n", "vc", "nc", "nv", "liv", "lv") enough <- (D + 1) * pars["nv"] fit.kd <- list(parameter=pars, a=z$a[1:pars[4]], xi=z$xi[1:pars[4]], vert=z$vert, vval=z$vval[1:enough]) } if(iterations > 1) { for(k in 1:M) { pseudovalues <- .Fortran(stats:::C_lowesp, as.integer(N), as.double(y[,k]), as.double(fitted.all[,k]), as.double(weights), as.double(robust), integer(N), pseudovalues = double(N))$pseudovalues zz <- .C(stats:::C_loess_raw, as.double(pseudovalues), as.double(x), as.double(weights), as.double(weights), as.integer(D), as.integer(N), as.double(span), as.integer(degree), as.integer(nonparametric), as.integer(order.drop.sqr), as.integer(sum.drop.sqr), as.integer(span*cell), as.character(surf.stat), temp = double(N), parameter = integer(7), a = integer(max.kd), xi = double(max.kd), vert = double(2*D), vval = double((D+1)*max.kd), diagonal = double(N), trL = double(1), delta1 = double(1), delta2 = double(1), as.integer(0)) pseudo.resid.all[,k] <- pseudovalues-zz$temp } pseudo.resid <- sqrt((pseudo.resid.all^2)%*%A) } sum.squares <- if(iterations <= 1) sum(weights * fitted.residuals^2) else sum(weights * pseudo.resid^2) enp <- one.delta + 2*trace.hat.out - N s <- sqrt(sum.squares/one.delta) pars <- list(robust=robust, span=span, degree=degree, normalize=normalize, parametric=parametric, drop.square=drop.square, surface=surface, cell=cell, family= if(iterations <= 1) "gaussian" else "symmetric", iterations=iterations) fit <- list(n=N, fitted=fitted.all, residuals=residuals.all, enp=enp, s=s, one.delta=one.delta, two.delta=two.delta, trace.hat=trace.hat.out, divisor=divisor) fit$pars <- pars if(surface == "interpolate") fit$kd <- fit.kd class(fit) <- "loess" fit } ##******************************************************************************************* affy/R/mas5.R0000644000175200017520000001305214710217042013711 0ustar00biocbuildbiocbuildmas5 <- function(object,normalize=TRUE,sc = 500, analysis = "absolute",...){ res <- expresso(object,bgcorrect.method="mas",pmcorrect.method="mas",normalize=FALSE,summary.method="mas",...) if(normalize) res <- affy.scalevalue.exprSet(res,sc=sc,analysis=analysis) return(res) } mas5calls.ProbeSet <- function(object, tau=0.015, alpha1=0.04, alpha2=0.06, ignore.saturated=TRUE){ if(alpha1 < 0) {stop("alpha1 must be > 0 "); } if(alpha1 > alpha2) {stop("alpha2 must be > alpha1 "); } if(alpha2 > 1) {stop("alpha2 must be <1 "); } ## Saturation: ## shouldn't be a problem with new scanners ##or those that have had an engineer visit if(ignore.saturated) { sat <- 46000; } else { sat <- -1; } pms <- pm(object) mms <- mm(object) pns <- rep(object@id,nrow(pms)) unique.pns <- unique(pns) pvals<-sapply(1:length(pms[1,]),function(x) { .C("DetectionPValue",as.double(pms[,x]),as.double(mms[,x]),as.character(pns),as.integer(length(mms[,x])), as.double(tau),as.double(sat),dpval=double(length(unique.pns)),length(unique.pns), PACKAGE="affy")$dpval; }); calls <- sapply(pvals,function(y) { if(y < alpha1) { return("P") } else { if(y < alpha2) { return("M") } else { return("A") }}}); return(list(call=calls,pval=pvals)) } mas5calls.AffyBatch <- function(object, ids=NULL, verbose=TRUE, tau=0.015, alpha1=0.04, alpha2=0.06, ignore.saturated=TRUE) { if(alpha1 < 0) {stop("alpha1 must be > 0 "); } if(alpha1 > alpha2) {stop("alpha2 must be > alpha1 "); } if(alpha2 > 1) {stop("alpha2 must be <1 "); } if(verbose) cat("Getting probe level data...\n"); pms <-as.matrix(pm(object)); mms <-as.matrix(mm(object)); # Saturation: # shouldn't be a problem with new scanners ##or those that have had an engineer visit if(ignore.saturated) { sat <- 46000; } else { sat <- -1; } pns <- probeNames(object); o <- order(pns) pns <- pns[o] pms <- pms[o,,drop=FALSE] mms <- mms[o,,drop=FALSE] unique.pns <- sort(unique(pns)); if(verbose) cat("Computing p-values\n"); p<-sapply(1:length(pms[1,]),function(x) { .C("DetectionPValue",as.double(pms[,x]),as.double(mms[,x]),as.character(pns),as.integer(length(mms[,x])), as.double(tau),as.double(sat),dpval=double(length(unique.pns)),length(unique.pns), PACKAGE="affy")$dpval; }); rownames(p) <- unique.pns; colnames(p) <- sampleNames(object) if(verbose) cat("Making P/M/A Calls\n"); calls <- sapply(p,function(y) { if(y < alpha1) { return("P") } else { if(y < alpha2) { return("M") } else { return("A") }}}); calls <- matrix(calls,nrow=nrow(p),ncol=ncol(p)); colnames(calls) <- sampleNames(object) rownames(calls) <- rownames(p) if(!is.null(ids)){ calls <- calls[ids,,drop=FALSE] p <- p[ids,,drop=FALSE] } eset <- new("ExpressionSet", phenoData=phenoData(object), ## featureData picked up from object experimentData=experimentData(object), annotation=annotation(object), protocolData=protocolData(object), exprs=calls, se.exprs=p ) return(eset) } mas5.detection <- function(mat, tau=0.015, alpha1=0.04, alpha2=0.06, exact.pvals=FALSE, cont.correct=FALSE) { ## CONSTANTS saturation.point <- 46000 # not a user parameter mat.r <- (mat[,1]-mat[,2])/(mat[,1]+mat[,2]) ## SANITY CHECKING if ( !is.matrix(mat) || length(dim(mat))!=2 || dim(mat)[2]!=2 || dim(mat)[1] < 1 || !is.numeric(mat) ) stop("Invalid mat matrix.") if ( !is.numeric(tau) ) stop("Invalid tau.") if ( !is.numeric(alpha1) || !is.numeric(alpha2) || alpha1 <= 0 || alpha1 >= alpha2 || alpha2 >= 0.5 ) stop("Invalid alpha1 or alpha2.") if ( !is.logical(exact.pvals) ) stop("Invalid exact.pvals.") if ( !is.logical(cont.correct) ) stop("Invalid cont.correct.") ## DEALING WITH SATURATION; COMPUTING THE P-VALUE ## According to the Bioinformatics paper: ## * If all MM's are saturated, then call present ## * Otherwise discard pairs with a saturated MM ## According to the Affymetrix whitepaper: ## * If all probe-pairs are saturated, then call present with pval=0 ## * If an MM is saturated, then we discard the pair ## * If a PM and MM are within tau of each other, we discard the pair ## So we're going with: ## * If all MM's are saturated, set pval=0 and don't use Wilcoxon ## * Discard probe-pairs when MM is saturated or the PM,MM are within tau ## of each other ## * Compute the p-value using Wilcoxon's signed rank test on the retained ## probe-pairs is.mm.saturated <- function(probe.pair, saturation.point) probe.pair[2] >= saturation.point is.retained <- function(probe.pair, saturation.point, tau) !(is.mm.saturated(probe.pair,saturation.point) || abs(diff(probe.pair)) <= tau) if ( all(apply(mat,1,is.mm.saturated,saturation.point)) ) pval <- 0 else { retained <- apply(mat, 1, is.retained, saturation.point, tau) pval <- wilcox.test(mat.r[retained], alternative="greater", mu=tau, paired=FALSE, exact=exact.pvals, correct=cont.correct, conf.int=FALSE)$p.value } ## DETECTION CALL if ( pval < 0 || pval > 1 ) warning("Computed an unusual p-value outside the range [0,1].") if ( pval < alpha1 ) call <- "P" else if ( pval < alpha2 ) call <- "M" else call <- "A" ## DONE return(list(pval=pval, call=call)) } affy/R/merge.AffyBatch.R0000644000175200017520000000264014710217042015772 0ustar00biocbuildbiocbuildmerge.AffyBatch <- function(x, y, annotation=paste(annotation(x), annotation(y)), description=NULL, notes=character(0), ...) { adim <- dim(intensity(x))[1] if ((nrow(x) != nrow(y)) || (ncol(x) != ncol(y))) stop("cannot merge chips of different sizes !") if (cdfName(x) != cdfName(y)) warning("cdfName mismatch (using the cdfName of x)!") if (is.null(description)){ description <- new("MIAME") description@title <- "Created from merging two AffyBatches. No description was supplied. The description of the two original AffyBatches was not kept." } lx <- length(x) ly <- length(y) phenodata <- phenoData(x) pData(phenodata) <- rbind(pData(x),pData(y)) protocoldata <- protocolData(x) pData(protocoldata) <- rbind(pData(protocolData(x)),pData(protocolData(y))) notes(description) <- if (length(notes)==0) list(paste("Merge from two AffyBatches with notes: 1)", notes(experimentData(x)), ", and 2)",notes(experimentData(y)))) else notes return(new("AffyBatch", exprs=cbind(intensity(x),intensity(y)), phenoData=phenodata, experimentData=description, ##need to write a merge for MIAME cdfName=cdfName(x), nrow=nrow(x), ncol=ncol(x), annotation=x@annotation, protocolData=protocoldata )) } affy/R/mva.pairs.R0000644000175200017520000003440614710217042014752 0ustar00biocbuildbiocbuild### ### ### Code for M and MvA plots ### ### Mar 6, 2004 - added the generic Mbox. It performs ### the equivalent of Mbox in affyPLM ### added a generic MAplot. Similar ### functionality is implemented in ### affyPLM ### a function ma.plot now does the actual plotting ### for mva.pairs ### ### Aug 23, 2004 - change the placement location of statistics in ### ma.plot ### Nov 30, 2005 - fix double logging when pairs=TRUE in MAplot ### Feb 15, 2006 - fixed passing of cex variable into mva.pairs ### Feb 24, 2006 - add smoothScatter option to ma.plot ### Apr 11, 2006 - fix problem with smoothScatter option. ### Jun 22, 2006 - Fix problem with where statistics appear when xlim is set. Add plotmethod="add". move pch to MAplot. Fix it so cex is passed down to plot(). Make adding the loess line optional. Make lwd,lty,col settable for the loess line ### Jul 21, 2006 - allow MAplot to have character string sampleName arguments for which,subset,ref. But then removed subset ### Jul 23, 2006 - added groups to MAplot for AffyBatch ### Aug 4, 2006 - fix small bug in how plots are titled. ### Oct 11, 2006 - change some apply(x,1,median) to rowMedians(x) ### ma.plot <- function(A,M,subset=sample(1:length(M),min(c(10000, length(M)))),show.statistics=TRUE,span=2/3,family.loess="gaussian",cex=2,plot.method=c("normal","smoothScatter","add"),add.loess=TRUE,lwd=1,lty=1,loess.col="red",...){ plot.method <- match.arg(plot.method) fn.call <- list(...) sigma <- IQR(M) mean <- median(M) if (!is.element("ylim",names(fn.call))){ yloc <- max(M) } else { yloc <- max(fn.call$ylim) } if (!is.element("xlim",names(fn.call))){ xloc <- max(A) } else { xloc <- max(fn.call$xlim) } if(plot.method == "smoothScatter"){ plotmethod <- "smoothScatter" } else if (plot.method == "add"){ plotmethod <- "add" } else { plotmethod <- "normal" } aux <- loess(M[subset]~A[subset],degree=1,span=span,family=family.loess)$fitted if (plotmethod == "smoothScatter"){ smoothScatter(A,M,...) } else if (plotmethod == "add"){ points(A,M,cex=cex,...) } else { plot(A,M,cex=cex,...) } if (add.loess){ o <- order(A[subset]) A <- A[subset][o] M <- aux[o] o <-which(!duplicated(A)) lines(approx(A[o],M[o]),col=loess.col,lwd=lwd,lty=lty) } abline(0,0,col="blue") # write IQR and Median on to plot if (show.statistics){ txt <- format(sigma,digits=3) txt2 <- format(mean,digits=3) text(xloc ,yloc,paste(paste("Median:",txt2),paste("IQR:",txt),sep="\n"),cex=cex,adj=c(1,1)) } } mva.pairs <- function(x,labels=colnames(x),log.it=TRUE,span=2/3,family.loess="gaussian", digits=3,line.col=2,main="MVA plot", cex = 2, ...){ if(log.it) x <-log2(x) J <- dim(x)[2] frame() old.par <- par(no.readonly = TRUE) on.exit(par(old.par)) par(mfrow=c(J,J),mgp=c(0,.2,0),mar=c(1,1,1,1),oma=c(1,1.4,2,1)) for(j in 1:(J-1)){ par(mfg=c(j,j)) plot(1,1,type="n",xaxt="n",yaxt="n",xlab="",ylab="") text(1,1,labels[j],cex=cex) for(k in (j+1):J){ par(mfg=c(j,k)) yy <- x[,j]-x[,k] xx <-(x[,j]+x[,k])/2 sigma <- IQR(yy) mean <- median(yy) ma.plot(xx,yy,tck=0,show.statistics=FALSE,pch=".",xlab="",ylab="",tck=0,span=span,...) par(mfg=c(k,j)) #sigma <- IQR(yy) txt <- format(sigma,digits=digits) txt2 <- format(mean,digits=digits) plot(c(0,1),c(0,1),type="n",ylab="",xlab="",xaxt="n",yaxt="n") text(0.5,0.5,paste(paste("Median:",txt2),paste("IQR:",txt),sep="\n"),cex=cex) } } par(mfg=c(J,J));plot(1,1,type="n",xaxt="n",yaxt="n",xlab="",ylab=""); text(1,1,labels[J],cex=cex) mtext("A",1,outer=TRUE,cex=1.5) mtext("M",2,outer=TRUE,cex=1.5,las=1) mtext(main,3,outer=TRUE,cex=1.5) invisible() } setGeneric("Mbox",function(object,...) standardGeneric("Mbox")) setMethod("Mbox",signature("AffyBatch"), function(object,log=TRUE,type=c("both","pm","mm"),...){ type <- match.arg(type) if (type == "both"){ pms <- unlist(indexProbes(object, "both")) } else if (type == "pm"){ pms <- unlist(pmindex(object)) } else if (type == "mm"){ mms <- unlist(mmindex(object)) } if(log){ x <- log2(intensity(object)[pms, ]) } else { x <- intensity(object)[pms, ] } medianchip <- rowMedians(x) M <- sweep(x,1,medianchip,FUN='-') boxplot(data.frame(M),...) }) setGeneric("MAplot",function(object,...) standardGeneric("MAplot")) setMethod("MAplot",signature("AffyBatch"), function(object,log=TRUE,type=c("both","pm","mm"),groups=NULL,ref=NULL,which=NULL,pairs=FALSE,pch=".",ref.fn=c("median","mean"),ref.title="vs pseudo-median reference chip",...){ type <- match.arg(type) if (type == "both"){ pms <- unlist(indexProbes(object, "both")) } else if (type == "pm"){ pms <- unlist(pmindex(object)) } else if (type == "mm"){ pms <- unlist(mmindex(object)) } if(log){ x <- log2(intensity(object)[pms, ]) } else { x <- intensity(object)[pms, ] } if (is.null(groups)){ if (is.character(ref)){ ref.indices <- match(ref,sampleNames(object)) if (all(is.na(ref.indices))){ stop("No known sampleNames in ref") } if (any(is.na(ref.indices))){ warning(paste("Omitting the following from ref:",ref[is.na(ref.indices)], "because they can not be found.")) } ref <- ref.indices[!is.na(ref.indices)] } if (is.character(subset)){ subset.indices <- match(subset,sampleNames(object)) if (all(is.na(subset.indices))){ stop("No known sampleNames in subset") } if (any(is.na(subset.indices))){ warning(paste("Omitting the following from subset:",subset[is.na(subset.indices)], "because they can not be found.")) } subset <- subset.indices[!is.na(subset.indices)] } if (is.character(which)){ which.indices <- match(which,sampleNames(object)) if (all(is.na(which.indices))){ stop("No known sampleNames in which") } if (any(is.na(which.indices))){ warning(paste("Omitting the following from which:",which[is.na(which.indices)], "because they can not be found.")) } which <- which.indices[!is.na(which.indices)] } if (is.null(which)){ which <- 1:dim(exprs(object))[2] } ref.fn <- match.arg(ref.fn) if(!pairs){ if (is.null(ref)){ medianchip <- rowMedians(x) ###apply(x, 1, median) } else if (length(ref) > 1){ if (ref.fn == "median"){ medianchip <- rowMedians(x[,ref]) } else { medianchip <- rowMeans(x[,ref]) } } else { medianchip <- x[,ref] } M <- sweep(x,1,medianchip,FUN='-') A <- 1/2*sweep(x,1,medianchip,FUN='+') if (is.null(ref)){ for (i in which){ title <- paste(sampleNames(object)[i],"vs pseudo-median reference chip") ma.plot(A[,i],M[,i],main=title,xlab="A",ylab="M",pch=pch,...) } } else { for (i in which){ if (length(ref) == 1){ if (i != ref){ ##changed which to i title <- paste(sampleNames(object)[i],"vs",sampleNames(object)[ref]) ma.plot(A[,i],M[,i],main=title,xlab="A",ylab="M",pch=pch,...) } } else { title <- paste(sampleNames(object)[i],"vs",ref.title) ma.plot(A[,i],M[,i],main=title,xlab="A",ylab="M",pch=pch,...) } } } } else { if(!is.null(ref)) stop("Can't use pairs with non-null 'ref'") if(is.null(which)) which <- 1:ncol(x) mva.pairs(x[,which],log.it=FALSE,...) } } else { ## group labels have been given ## check that group variable is of same length as number of samples if (dim(x)[2] != length(groups)){ stop("'groups' is of wrong length.") } ### group labels variable can be integer, character or factor variable. ### need to check that if any names supplied ### for ref or which can be found in group.labels if (!is.null(which)){ if (is.numeric(groups)){ if (!is.numeric(which)){ stop("'which' labels must also be found in 'groups'") } else { if (!all(is.element(which,groups))){ stop("'which' labels must also be found in 'groups'") } } } else if (is.factor(groups)){ if (!is.character(which)){ stop("'which' should be character vector") } else { if (!all(is.element(which,as.character(groups)))){ stop("'which' labels must also be found in 'groups'") } } } else if (is.character(groups)){ if (!is.character(which)){ stop("'which' should be character vector") } else { if (!all(is.element(which,groups))){ stop("'which' labels must also be found in 'groups'") } } } } if (!is.null(ref)){ if (is.numeric(groups)){ if (!is.numeric(ref)){ stop("'ref' labels must also be found in 'groups'") } else { if (!all(is.element(ref,groups))){ stop("'ref' labels must also be found in 'groups'") } } } else if (is.factor(groups)){ if (!is.character(ref)){ stop("'ref' should be character vector") } else { if (!all(is.element(ref,as.character(groups)))){ stop("'ref' labels must also be found in 'groups'") } } } else if (is.character(groups)){ if (!is.character(ref)){ stop("'ref' should be character vector") } else { if (!all(is.element(ref,groups))){ stop("'ref' labels must also be found in 'groups'") } } } } ref.fn <- match.arg(ref.fn) groups.list <- split(1:dim(x)[2], as.factor(groups)) grouped.data <- matrix(0,nrow(x),length(groups.list)) colnames(grouped.data) <- names(groups.list) which.col <- 1 for (group in groups.list){ grouped.data[,which.col] <- rowMeans(x[,group,drop=FALSE]) which.col <- which.col + 1 } if (!pairs){ if (is.null(which)){ which <- names(groups.list) } if (is.null(ref)){ if (ref.fn == "median"){ medianchip <- rowMedians(grouped.data) ####apply(grouped.data, 1, median) } else { medianchip <- rowMeans(grouped.data) } } else if (length(ref) == 1){ ref.name <- ref ref <- match(ref,names(groups.list)) medianchip <- grouped.data[,ref] } else { ref <- match(ref,names(groups.list)) if (ref.fn == "median"){ medianchip <- rowMedians(grouped.data[,ref]) } else { medianchip <- rowMeans(grouped.data[,ref]) } } M <- sweep(grouped.data,1,medianchip,FUN='-') A <- 1/2*sweep(grouped.data,1,medianchip,FUN='+') if (is.null(ref)){ for (i in which){ title <- paste(i,ref.title) ma.plot(A[,i],M[,i],main=title,xlab="A",ylab="M",pch=pch,...) } } else { for (i in which){ if (length(ref) == 1){ if (i != ref.name){ title <- paste(i,"vs",ref.name) ma.plot(A[,i],M[,i],main=title,xlab="A",ylab="M",pch=pch,...) } } else { title <- paste(i,ref.title) ma.plot(A[,i],M[,i],main=title,xlab="A",ylab="M",pch=pch,...) } } } } else { if (!is.null(ref)) stop("Can't use pairs with non-null 'ref'") if (is.null(which)){ which <- names(groups.list) } mva.pairs(grouped.data[,which],log.it=FALSE,...) } } }) affy/R/normalize.constant.R0000644000175200017520000000165314710217042016700 0ustar00biocbuildbiocbuildnormalize.AffyBatch.constant <- function(abatch, refindex=1, FUN=mean, na.rm=TRUE) { n <- length( abatch ) if (! (refindex %in% 1:n)) stop("invalid reference index for normalization") refconstant <- FUN(intensity(abatch)[,refindex], na.rm=na.rm) #set.na.spotsd(abatch) normhisto <- vector("list", length=n) for (i in (1:n)[-refindex]) { m <- normalize.constant(intensity(abatch)[,i], refconstant, FUN=FUN, na.rm=na.rm) myhistory <- list(name="normalized by constant", constant=attr(m,"constant")) attr(m,"constant") <- NULL intensity(abatch)[, i] <- m normhisto[[i]] <- myhistory } attr(abatch, "normalization") <- normhisto return(abatch) } normalize.constant <- function(x, refconstant, FUN=mean, na.rm=TRUE) { thisconstant <- FUN(x, na.rm=na.rm) r <- x / thisconstant * refconstant attr(r,"constant") <- refconstant / thisconstant return(r) } affy/R/normalize.contrasts.R0000644000175200017520000000217114710217042017063 0ustar00biocbuildbiocbuildnormalize.AffyBatch.contrasts <- function(abatch,span=2/3,choose.subset=TRUE,subset.size=5000,verbose=TRUE,family="symmetric",type=c("together","pmonly","mmonly","separate")) { type <- match.arg(type) if (type == "pmonly"){ Index <- unlist(pmindex(abatch)) } else if (type == "mmonly"){ Index <- unlist(mmindex(abatch)) } else if (type == "together"){ Index <- unlist(indexProbes(abatch,"both")) } else if (type == "separate"){ abatch <- normalize.AffyBatch.contrasts(abatch,span=span,choose.subset=choose.subset,subset.size=subset.size,verbose=verbose,family=family,type="pmonly") Index <- unlist(mmindex(abatch)) } ##we need default argumetns becuase they are used in this transitional file alldata <- intensity(abatch)[Index,] if(choose.subset) subset1 <- maffy.subset(alldata,verbose=verbose,subset.size=subset.size)$subset else subset1 <- sample(1:dim(alldata)[1],subset.size) aux <- maffy.normalize(alldata,subset=subset1,verbose=verbose,span=span,family=family) intensity(abatch)[Index,] <- aux ##attr(abatch, "normalization") <- normhisto return(abatch) } affy/R/normalize.invariantset.R0000644000175200017520000001227014710217042017553 0ustar00biocbuildbiocbuildnormalize.AffyBatch.invariantset <- function(abatch, prd.td=c(0.003,0.007), verbose=FALSE,baseline.type=c("mean","median","pseudo-mean","pseudo-median"),type=c("separate","pmonly","mmonly","together")) { do.normalize.Affybatch.invariantset <- function(abatch, pms, prd.td, baseline.type){ nc <- length(abatch) # number of CEL files if (baseline.type == "mean"){ # take as a reference the array having the median overall intensity m <- vector("numeric", length=nc) for (i in 1:nc) m[i] <- mean(intensity(abatch)[pms, i]) refindex <- match(trunc(median(rank(m))), rank(m)) rm(m) baseline.chip <- c(intensity(abatch)[pms, refindex]) if (verbose) cat("Data from", sampleNames(abatch)[refindex], "used as baseline.\n") } else if (baseline.type == "median"){ # take as a reference the array having the median median intensity m <- vector("numeric", length=nc) for (i in 1:nc) m[i] <- median(intensity(abatch)[pms, i]) refindex <- match(trunc(median(rank(m))), rank(m)) rm(m) baseline.chip <- c(intensity(abatch)[pms, refindex]) if (verbose) cat("Data from", sampleNames(abatch)[refindex], "used as baseline.\n") } else if (baseline.type == "pseudo-mean"){ # construct a psuedo chip to serve as the baseline by taking probewise means refindex <- 0 baseline.chip <- rowMeans(intensity(abatch)[pms,]) } else if (baseline.type == "pseudo-median"){ # construct a pseudo chip to serve as the baseline by taking probewise medians refindex <- 0 baseline.chip <- rowMedians(intensity(abatch)[pms,]) } ##set.na.spotsd(cel.container) normhisto <- vector("list", length=nc) # normhisto[[refindex]] <- list(name="reference for the invariant set") ## loop over the CEL files and normalize them for (i in (1:nc)) { if (i != refindex){ if (verbose) cat("normalizing array", sampleNames(abatch)[i], "...") ##temporary tmp <- normalize.invariantset(c(intensity(abatch)[pms, i]), c(baseline.chip), prd.td) #i.set <- which(i.pm)[tmp$i.set] tmp <- as.numeric(approx(tmp$n.curve$y, tmp$n.curve$x, xout=intensity(abatch)[pms, i], rule=2)$y) attr(tmp,"invariant.set") <- NULL intensity(abatch)[pms, i] <- tmp ## storing information about what has been done #normhisto[[i]] <- list(name="normalized by invariant set", # invariantset=i.set) if (verbose) cat("done.\n") } } attr(abatch, "normalization") <- normhisto return(abatch) } type <- match.arg(type) baseline.type <- match.arg(baseline.type) if (type == "pmonly"){ pms <- unlist(pmindex(abatch)) do.normalize.Affybatch.invariantset(abatch, pms, prd.td, baseline.type) } else if (type == "mmonly"){ pms <- unlist(mmindex(abatch)) do.normalize.Affybatch.invariantset(abatch, pms, prd.td, baseline.type) } else if (type == "together"){ pms <- unlist(indexProbes(abatch,"both")) do.normalize.Affybatch.invariantset(abatch, pms, prd.td, baseline.type) } else if (type == "separate"){ pms <- unlist(pmindex(abatch)) abatch <- do.normalize.Affybatch.invariantset(abatch, pms, prd.td, baseline.type) pms <- unlist(mmindex(abatch)) do.normalize.Affybatch.invariantset(abatch, pms, prd.td, baseline.type) } } ## The 'common-to-all' part of the algorithm. Operates on two vectors of numeric data ## normalize.invariantset <- function(data, ref, prd.td=c(0.003,0.007)) { np <- length(data) r.ref <- rank(ref) r.array <- rank(data) ## init prd.td.adj <- prd.td*10 # adjusted threshold things i.set <- rep(TRUE, np) # index all the PM probes as being in the invariant set ns <- sum(i.set) # number of probes in the invariant set ns.old <- ns+50+1 # number of probes previously in the invariant set ## iterate while the number of genes in the invariant set (ns) still varies... while ( (ns.old-ns) > 50 ) { air <- (r.ref[i.set] + r.array[i.set]) / (2*ns) # average intensity rank for the probe intensities prd <- abs(r.ref[i.set] - r.array[i.set]) / ns threshold <- (prd.td.adj[2]-prd.td[1]) * air + prd.td.adj[1] i.set[i.set] <- (prd < threshold) ns.old <- ns ns <- sum(i.set) if (prd.td.adj[1] > prd.td[1]) prd.td.adj <- prd.td.adj * 0.9 # update the adjusted threshold parameters } ## the index i.set corresponds to the 'invariant genes' n.curve <- smooth.spline(ref[i.set], data[i.set]) ## n.curve$x contains smoothed reference intensities ## n.curve$y contains smoothed i-th array intensities ##data <- as.numeric(approx(n.curve$y, n.curve$x, xout=data)$y) ##attr(data,"invariant.set") <- i.set ##return(data) return(list(n.curve=n.curve, i.set=i.set)) } affy/R/normalize.loess.R0000644000175200017520000000506614710217042016176 0ustar00biocbuildbiocbuildnormalize.AffyBatch.loess <- function(abatch,type=c("together","pmonly","mmonly","separate"),...) { type <- match.arg(type) if (type == "separate"){ Index <- unlist(indexProbes(abatch,"pm")) intensity(abatch)[Index,] <- normalize.loess(intensity(abatch)[Index,], ...) Index <- unlist(indexProbes(abatch,"mm")) intensity(abatch)[Index,] <- normalize.loess(intensity(abatch)[Index,], ...) } else if (type=="together"){ Index <- unlist(indexProbes(abatch,"both")) intensity(abatch)[Index,] <- normalize.loess(intensity(abatch)[Index,], ...) } else if (type=="pmonly"){ Index <- unlist(indexProbes(abatch,"pm")) intensity(abatch)[Index,] <- normalize.loess(intensity(abatch)[Index,], ...) } else if (type=="mmonly"){ Index <- unlist(indexProbes(abatch,"mm")) intensity(abatch)[Index,] <- normalize.loess(intensity(abatch)[Index,], ...) } ##set.na.spotsd(listcel) # set 'sd' to nothing (meaningless after normalization) ##cat(cols,rows) ##need to use MIAME ##for (i in 1:abatch@nexp) { ## history(abatch)[[i]] <- list(name="normalized by loess") ##} return(abatch) } normalize.loess <- function(mat, subset=sample(1:(dim(mat)[1]), min(c(5000, nrow(mat)))), epsilon=10^-2, maxit=1, log.it=TRUE, verbose=TRUE, span=2/3, family.loess="symmetric"){ J <- dim(mat)[2] II <- dim(mat)[1] if(log.it){ mat <- log2(mat) } change <- epsilon +1 iter <- 0 w <- c(0, rep(1,length(subset)), 0) ##this way we give 0 weight to the ##extremes added so that we can interpolate while(iter < maxit){ iter <- iter + 1 means <- matrix(0,II,J) ##contains temp of what we substract for (j in 1:(J-1)){ for (k in (j+1):J){ y <- mat[,j] - mat[,k] x <- (mat[,j] + mat[,k]) / 2 index <- c(order(x)[1], subset, order(-x)[1]) ##put endpoints in so we can interpolate xx <- x[index] yy <- y[index] aux <-loess(yy~xx, span=span, degree=1, weights=w, family=family.loess) aux <- predict(aux, data.frame(xx=x)) / J means[, j] <- means[, j] + aux means[, k] <- means[, k] - aux if (verbose) cat("Done with",j,"vs",k,"in iteration",iter,"\n") } } mat <- mat - means change <- max(colMeans((means[subset,])^2)) if(verbose) cat(iter, change,"\n") } if ((change > epsilon) & (maxit > 1)) warning(paste("No convergence after", maxit, "iterations.\n")) if(log.it) { return(2^mat) } else return(mat) } affy/R/normalize.qspline.R0000644000175200017520000001065714710217042016526 0ustar00biocbuildbiocbuildnormalize.AffyBatch.qspline <- function(abatch, type=c("together","pmonly","mmonly","separate"),...) { type <- match.arg(type) if (type == "together"){ Index <- unlist(indexProbes(abatch,"both")) intensity(abatch)[Index,] <- normalize.qspline(intensity(abatch)[Index,], ...) } else if (type == "pmonly"){ Index <- unlist(indexProbes(abatch,"pm")) intensity(abatch)[Index,] <- normalize.qspline(intensity(abatch)[Index,], ...) } else if (type == "mmonly"){ Index <- unlist(indexProbes(abatch,"mm")) intensity(abatch)[Index,] <- normalize.qspline(intensity(abatch)[Index,], ...) } else if (type == "separate"){ Index <- unlist(indexProbes(abatch,"pm")) intensity(abatch)[Index,] <- normalize.qspline(intensity(abatch)[Index,], ...) Index <- unlist(indexProbes(abatch,"mm")) intensity(abatch)[Index,] <- normalize.qspline(intensity(abatch)[Index,], ...) } #set.na.spotsd(listcel) normhisto <- vector("list", length=ncol(intensity(abatch))) ##need to use MIAME for this for (i in 1:length(abatch)) { normhisto[[i]] <- list(name="normalized by qspline") } attr(abatch, "normalization") <- normhisto return(abatch) } normalize.qspline <- function(x, target = NULL, samples = NULL, fit.iters = 5, min.offset = 5, spline.method = "natural", # c("fmm", "natural", "periodic") smooth = TRUE, spar = 0, # smoothing parameter p.min = 0, p.max = 1.0, incl.ends = TRUE, converge = FALSE, verbose = TRUE, na.rm = FALSE ){ if (is.null(target)) target <- exp(apply(log(x), 1, mean)) x.n <- dim(x)[1] m <- dim(x)[2] if (is.null(samples)) samples <- max(round(x.n/1000), 100) else if (samples < 1) samples <- round(samples * x.n) p <- (1:samples) / samples p <- p[ which(p <= p.max) & which(p >= p.min) ] samples <- length(p) k <- fit.iters if (na.rm==TRUE) y.n <- sum(!is.na(target)) else y.n <- length(target) py.inds <- as.integer(p * y.n) y.offset <- round(py.inds[1]/fit.iters) if (y.offset <= min.offset) { y.offset <- min.offset; k <- round(py.inds[1]/min.offset) } if (k <= 1) { warning("'k' found is non-sense. using default 'fit.iter'") k <- fit.iters } y.offset <- c(0, array(y.offset, (k-1))) y.order <- order(target) fx <- matrix(0, x.n,m) if(verbose==TRUE) print(paste("samples=",samples, "k=", k, "first=", py.inds[1])) for (i in 1:m) { # to handel NA values for each array if (na.rm==TRUE) x.valid <- which(!is.na(x[,i])) else x.valid <- 1:x.n x.n <- length(x.valid) px.inds <- as.integer(p * x.n) x.offset <- round(px.inds[1]/fit.iters) if (x.offset<=min.offset) { x.offset <- min.offset; k <- min(round(px.inds[1]/min.offset), k) } x.offset <- c(0, array(x.offset, (k-1))) x.order <- order(x[,i]) # NA's at the end (?) y.inds <- py.inds ## must be reset each iteration x.inds <- px.inds for (j in 1:k) { y.inds <- y.inds - y.offset[j] x.inds <- x.inds - x.offset[j] ty.inds <- y.inds tx.inds <- x.inds if (verbose==TRUE) print(paste("sampling(array=", i, "iter=", j, "off=", x.inds[1], -x.offset[j], y.inds[1], -y.offset[j], ")")) if (converge==TRUE) { ty.inds <- as.integer(c(1, y.inds)) tx.inds <- as.integer(c(1, x.inds)) if (j > 1) { ty.inds <- c(ty.inds, y.n) tx.inds <- c(tx.inds, x.n) } } qy <- target[y.order[ty.inds]] qx <- x[x.order[tx.inds],i] if (smooth==TRUE) { sspl <- smooth.spline(qx, qy, spar=spar) qx <- sspl$x qy <- sspl$y } fcn <- splinefun(qx, qy, method=spline.method) fx[x.valid,i] <- fx[x.valid,i] + fcn(x[x.valid,i])/k } if (na.rm==TRUE) { invalid <- which(is.na(x[,i])) fx[invalid,i] <- NA } } return(fx) } affy/R/normalize.quantiles.R0000644000175200017520000000755714710217042017065 0ustar00biocbuildbiocbuild################################################################## ## ## file: normalize.quantiles.R ## ## For a description of quantile normalization method see ## ## Bolstad, B. M., Irizarry R. A., Astrand, M, and Speed, T. P. (2003)(2003) ## A Comparison of Normalization Methods for High ## Density Oligonucleotide Array Data Based on Bias and Variance. ## Bioinformatics 19,2,pp 185-193 ## ## History ## Pre Aug 23, 2003 Two years worth of stuff ## Aug 23, 2003 - Added use.log2 to "robust", ## added ability to pass additional parameters ## to normalize.AffyBatch.Quantiles.robust ## changed pmonly parameters on functions ## so that it is now a string argument "type" ## the options are pmonly, mmonly, together, separate ## Jan 31, 2004 - put a check for an integer matrix and force coercision to ## doubles if required in normalize.quantiles ## Mar 13, 2005 - Modifications to normalize.quantiles.robust including removing ## approx.method which never got implemented. Making it a use a .Call() ## rather than a .C() ## ## Sep 20, 2006 - fix .Call in normalize.quantiles.robust ## May 20, 2007 - remove the functions that have been moved to preprocessCore ## ################################################################## normalize.AffyBatch.quantiles <- function(abatch,type=c("separate","pmonly","mmonly","together")) { type <- match.arg(type) if ((type == "pmonly")|(type == "separate")){ pms <- unlist(pmindex(abatch)) ## Change to faster computation of noNA - SDR 11/06/2003 ##noNA <- apply(intensity(abatch)[pms,,drop=FALSE],1,function(x) all(!is.na(x))) noNA <- rowSums(is.na(intensity(abatch)[pms,,drop=FALSE])) == 0 pms <- pms[noNA] intensity(abatch)[pms,] <- normalize.quantiles(intensity(abatch)[pms,,drop=FALSE ],copy=FALSE) } if((type == "mmonly") | (type == "separate")){ mms <- unlist(mmindex(abatch)) ## Change to faster computation of noNA - SDR 11/06/2003 ##noNA <- apply(intensity(abatch)[mms,,drop=FALSE],1,function(x) all(!is.na(x))) noNA <- rowSums(is.na(intensity(abatch)[mms,,drop=FALSE])) == 0 mms <- mms[noNA] intensity(abatch)[mms,] <- normalize.quantiles(intensity(abatch)[mms,,drop=FALSE ],copy=FALSE) } if (type == "together"){ pms <- unlist(indexProbes(abatch,"both")) intensity(abatch)[pms,] <- normalize.quantiles(intensity(abatch)[pms,,drop=FALSE ],copy=FALSE) } ##this is MIAME we need to decide how to do this properly. ##for (i in 1:length(abatch)) { ## history(abatch)[[i]]$name <- "normalized by quantiles" ##} return(abatch) } normalize.AffyBatch.quantiles.robust <- function(abatch, type=c("separate","pmonly","mmonly","together"),weights=NULL,remove.extreme=c("variance","mean","both","none"),n.remove=1,use.median=FALSE,use.log2=FALSE) { type <- match.arg(type) if ((type == "pmonly")|(type == "separate")){ pms <- unlist(pmindex(abatch)) intensity(abatch)[pms, ] <- normalize.quantiles.robust(intensity(abatch)[pms, ], copy=FALSE,weights=weights,remove.extreme,n.remove=n.remove,use.median=use.median,use.log2=use.log2) } if ((type == "mmonly")|(type == "separate")){ mms <- unlist(mmindex(abatch)) intensity(abatch)[mms, ] <- normalize.quantiles.robust(intensity(abatch)[mms, ],copy=FALSE,weights=weights,remove.extreme,n.remove=n.remove,use.median=use.median,use.log2=use.log2) } if (type == "together"){ pms <- unlist(indexProbes(abatch,"both")) intensity(abatch) <- normalize.quantiles.robust(intensity(abatch)[pms,,drop=FALSE ],copy=FALSE, weights=weights,remove.extreme=remove.extreme,n.remove=n.remove,use.median=use.median,use.log2=use.log2) } ##this is MIAME we need to decide how to do this properly. ##for (i in 1:length(abatch)) { ## history(abatch)[[i]]$name <- "normalized by quantiles" ##} return(abatch) } affy/R/pairs.AffyBatch.R0000644000175200017520000000257714710217042016022 0ustar00biocbuildbiocbuildpairs.AffyBatch <- function(x, panel=points, ..., transfo=I, main=NULL, oma=NULL, font.main = par("font.main"), cex.main = par("cex.main"), cex.labels = NULL, lower.panel=panel, upper.panel=NULL, diag.panel=NULL, #text.panel = textPanel, #label.pos = 0.5 + has.diag/3, font.labels = 1, row1attop = TRUE, gap = 1) { #label1 <- chipNames(x) #label2 <- unlist(lapply(history(x), function(z) z$name)) #textPanel <- function(x = 0.5, y = 0.5, txt, cex, font) { # text(x, y, txt, cex = cex, font = font) #} ##labels <- paste(sampleNames(x), unlist(lapply(history(x), function(z) if (is.null(z$name)) "" else z$name)), sep="\n") labels <- sampleNames(x) ##y <- matrix(intensity(x)[, , seq(along=x)], ncol=length(x)) y <- intensity(x) pairs(transfo(y), labels=labels, panel=panel, ..., main=main, oma=oma, font.main = font.main, cex.main = cex.main, lower.panel=lower.panel, upper.panel=upper.panel, diag.panel=diag.panel, #text.panel = text.panel, #label.pos = label.pos, cex.labels = cex.labels, font.labels = font.labels, row1attop = row1attop, gap = gap ) } affy/R/plot.ProbeSet.R0000644000175200017520000000060314710217042015542 0ustar00biocbuildbiocbuildplot.ProbeSet <- function(x, which=c("pm", "mm"), xlab="probes", type="l", ylim=NULL, ...) { which <- match.arg(which) if (which == "pm") f <- getMethod("pm", "ProbeSet") else f <- getMethod("mm", "ProbeSet") if (is.null(ylim)) ylim = range(c(f(x)), na.rm=TRUE) if (is.na(xlab)) xlab="probes" matplot(f(x), xlab=xlab, type=type, ylim=ylim, ...) } affy/R/plot.density.R0000644000175200017520000000272414710217042015504 0ustar00biocbuildbiocbuild# matdensity <- function(x, # ylab="density", xlab="x", type="l", plot=TRUE, # ...) { # x.density <- apply(mat, 2, density) # all.x <- do.call("cbind", lapply(x.density, function(x) x$x)) # all.y <- do.call("cbind", lapply(x.density, function(x) x$y)) # if (plot) # matplot(all.x, all.y, ylab=ylab, xlab=xlab, ...) # invisible(list(all.x=all.x, all.y=all.y)) # } plotDensity <- function(mat, ylab="density", xlab="x", type="l", col=1:6, na.rm = TRUE, ...) { x.density <- apply(mat, 2, density, na.rm = na.rm) all.x <- do.call(cbind, lapply(x.density, function(x) x$x)) all.y <- do.call(cbind, lapply(x.density, function(x) x$y)) matplot(all.x, all.y, ylab=ylab, xlab=xlab, type=type, col=col, ...) invisible(list(all.x=all.x, all.y=all.y)) } plotDensity.AffyBatch <- function(x, col=1:6, log=TRUE, which=c("pm","mm","both"), ylab="density", xlab=NULL, ...){ Index <- unlist(indexProbes(x, which=which)) x <- intensity(x)[Index, ,drop=FALSE] if(log){ x <- log2(x) if(is.null(xlab)) xlab <- "log intensity" } else if(is.null(xlab)) xlab <- "intensity" invisible(plotDensity(x, ylab=ylab, xlab=xlab, col=col, ...)) } affy/R/plotLocation.R0000644000175200017520000000113214710217042015507 0ustar00biocbuildbiocbuildplotLocation <- function(x, col="green", pch=22, ...) { if (is.list(x)) { x <- cbind(unlist(lapply(x, function(x) x[,1])), unlist(lapply(x, function(x) x[,2]))) } ## need to use nrow - x[,2] for correct y position. ## use image width to get nrow, which isn't ideal ## but follows assumption for this function that an ## image already exists nrow <- ceiling(par("usr")[4]) if(nrow == 1) stop(paste("\nYou must first generate an image of an array", "for this function to work!\n\n"), call. = FALSE) points(x[,1], nrow - x[,2] , pch=pch, col=col, ...) } affy/R/pmcorrect.mas.R0000644000175200017520000000221514710217042015620 0ustar00biocbuildbiocbuild############################ ##MPM Changed delta, Affy SADD states delta as 2e-20 pmcorrect.mas <- function (object, contrast.tau = 0.03, scale.tau = 10, delta = 2^(-20)) #function (object, contrast.tau = 0.03, scale.tau = 10, delta = 9.536743e-07) ########################### { all.pps.pm <- pm(object) all.pps.mm <- mm(object) diff <- log2(all.pps.pm) - log2(all.pps.mm) delta <- rep(delta, nrow(diff)) for (i in 1:ncol(diff)) { sb <- tukey.biweight(diff[, i]) pps.pm <- all.pps.pm[, i] pps.mm <- all.pps.mm[, i] pps.im <- pps.mm j <- (pps.mm >= pps.pm) & (sb > contrast.tau) pps.im[j] <- pps.pm[j]/2^sb j <- (pps.mm >= pps.pm) & (sb <= contrast.tau) pps.im[j] <- pps.pm[j]/2^(contrast.tau/(1 + (contrast.tau - sb)/scale.tau)) ######################### #MPM SADD Need to substract the PM-IM, I think this is the culprit pm.corrected <- apply(cbind(pps.pm-pps.im, delta), 1, max) #pm.corrected <- apply(cbind(pps.pm, pps.im, delta), 1, # max) ########################## diff[, i] <- pm.corrected } return(diff) } affy/R/ppset.ttest.R0000644000175200017520000000043114710217042015336 0ustar00biocbuildbiocbuildppset.ttest <- function(ppset, covariate, pmcorrect.fun = pmcorrect.pmonly, ...) { probes <- do.call(pmcorrect.fun, list(ppset)) my.ttest <- function(x) { y <- split(x, get(covariate)) t.test(y[[1]], y[[2]])$p.value } r <- apply(probes, 1, my.ttest) return(r) } affy/R/ppsetApply.R0000644000175200017520000000172614710217042015212 0ustar00biocbuildbiocbuildppsetApply <- function(abatch, FUN, genenames=NULL, ...) { if (! is(abatch, "AffyBatch")) stop("abatch must be inheriting from class AffyBatch") if (! is(FUN, "function")) stop("FUN must be a function") cdfenv <- getCdfInfo(abatch) if (is.null(genenames)) genenames <- ls(cdfenv) ## e1 <- new.env(parent = environment(FUN)) multiassign(names(pData(abatch)), pData(abatch), e1) environment(FUN) <- e1 ppset <- new("ProbeSet", pm=matrix(), mm=matrix()) r <- vector("list", length=length(genenames)) names(r) <- genenames for (i in seq(along=genenames)) { ## use mget to get NA when genenames[i] not found probes.i <- mget(genenames[i], envir = cdfenv, ifnotfound = NA)[[1]] if (all(is.na(probes.i))) next ppset@pm <- intensity(abatch)[probes.i[, 1], , drop=FALSE] ppset@mm <- intensity(abatch)[probes.i[, 2], , drop=FALSE] ppset@id <- genenames[i] r[[i]] <- FUN(ppset, ...) } return(r) } affy/R/read.affybatch.R0000644000175200017520000003340314710217042015707 0ustar00biocbuildbiocbuild############################################################# ## ## read.affybatch.R ## ## Adapted by B. M. Bolstad from read.affybatch in the affy ## package version 1.2. The goal is a faster, less memory hungry ## ReadAffy. To do this we will shunt more work off to ## the c code. ## ## History ## Jun 13-15 Intial version ## Jun 16 Verbose flag passed to C routine ## Jun 17 New method for checking header of first cel ## file. ## Jul 7 Added the function read.probematrix which ## reads in PM, MM or both into matrices ## Sep 28 changed name from read.affybatch2 to read.affybatch ## and cleaned up some old commented stuff ## Apr 13, 2004 - fixed problem in read.probematrix ## Nov 15, 2005 - add functionality to read the ## stddev values into the se.exprs slot (non-default behaviour) ## ## Jan 24, 2006 - JWM: added cdfname to allow for the use of non-standard mappings ## Mar 6, 2006 - change .Call to reference affyio. that is new location for parsing code ## Dec 12, 2006 - added checkCelFiles() to ensure all filenames are celfiles so unintended ## arguments don't get passed in via ... ## Apr 19, 2013 - JWM: added warning and error messages for Gene ST and Exon ST arrays ## Sept 26, 2013 - naked .Call() to affyio replaced ## ############################################################# read.affybatch <- function(..., filenames=character(0), phenoData=new("AnnotatedDataFrame"), description=NULL, notes="", compress = getOption("BioC")$affy$compress.cel, rm.mask = FALSE, rm.outliers=FALSE, rm.extra=FALSE, verbose = FALSE,sd=FALSE, cdfname = NULL) { auxnames <- unlist(list(...)) filenames <- c(filenames, auxnames) checkValidFilenames(filenames) n <- length(filenames) pdata <- pData(phenoData) ## try to read sample names form phenoData. if not there use CEL ## filenames if(dim(pdata)[1] != n) { ## if empty pdata filename are samplenames warning("Incompatible phenoData object. Created a new one.\n") samplenames <- sub("^/?([^/]*/)*", "", filenames) pdata <- data.frame(sample=1:n, row.names=samplenames) phenoData <- new("AnnotatedDataFrame", data=pdata, varMetadata=data.frame( labelDescription="arbitrary numbering", row.names="sample")) } else samplenames <- rownames(pdata) if (is.null(description)) { description <- new("MIAME") preproc(description)$filenames <- filenames preproc(description)$affyversion <- library(help=affy)$info[[2]][[2]][2] } if (length(notes)==0) notes(description) <- notes ## read the first file to see what we have if (verbose) cat(1, "reading",filenames[[1]],"...") headdetails <- read.celfile.header(as.character(filenames[[1]])) ##now we use the length dim.intensity <- headdetails[[2]] ##dim(intensity(cel)) ##and the cdfname as ref ref.cdfName <- headdetails[[1]] #cel@cdfName if(length(grep("gene1[01]st", cleancdfname(ref.cdfName))) == 1) warning(paste0("\n\nThe affy package can process data from the Gene ST 1.x series of arrays,\n", "but you should consider using either the oligo or xps packages, which are specifically\n", "designed for these arrays.\n\n"), call. = FALSE) if(length(grep("gene2[01]st|ex[1-2][0-1]st|hta20|mta10", cleancdfname(ref.cdfName))) == 1) stop(paste0("\n\nThe affy package is not designed for this array type.\n", "Please use either the oligo or xps package.\n\n"), call. = FALSE) scandates <- sapply(seq_len(length(filenames)), function(i) { sdate <- read.celfile.header(filenames[i], info = "full")[["ScanDate"]] if (is.null(sdate) ||length(sdate) == 0 ) NA_character_ else sdate }) protocol <- new("AnnotatedDataFrame", data=data.frame("ScanDate"=scandates, row.names=sampleNames(phenoData), stringsAsFactors=FALSE), dimLabels=c("sampleNames", "sampleColumns")) ## allow for non-standard cdfs if(is.null(cdfname)) cdfname <- ref.cdfName if (verbose) cat(paste("instantiating an AffyBatch (intensity a ", prod(dim.intensity), "x", length(filenames), " matrix)...", sep="")) if (verbose) cat("done.\n") ## Change sampleNames to be consistent with row.names of phenoData ## object exprs <- affyio::read_abatch(filenames, rm.mask, rm.outliers, rm.extra, ref.cdfName, dim.intensity[c(1,2)],verbose) colnames(exprs) <- samplenames #### this is where the code changes from the original read.affybatch. #### what we will do here is read in from the 1st to the nth CEL file if (!sd){ return(new("AffyBatch", exprs = exprs, ##se.exprs = array(NaN, dim=dim.sd), cdfName = cdfname, ##cel@cdfName, phenoData = phenoData, nrow = dim.intensity[2],##["Rows"], ncol = dim.intensity[1],##["Cols"], annotation = cleancdfname(cdfname, addcdf=FALSE), protocolData = protocol, description= description, notes = notes)) } else { return(new("AffyBatch", exprs = exprs, se.exprs = affyio::read_abatch_stddev(filenames, rm.mask, rm.outliers, rm.extra, ref.cdfName, dim.intensity[c(1,2)],verbose), cdfName = cdfname, ##cel@cdfName, phenoData = phenoData, nrow = dim.intensity[2],##["Rows"], ncol = dim.intensity[1],##["Cols"], annotation = cleancdfname(cdfname, addcdf=FALSE), protocolData = protocol, description= description, notes = notes)) } } ###################################################################################### read.probematrix <- function(..., filenames = character(0), phenoData = new("AnnotatedDataFrame"), description = NULL, notes = "", compress = getOption("BioC")$affy$compress.cel, rm.mask = FALSE, rm.outliers = FALSE, rm.extra = FALSE, verbose = FALSE,which="pm", cdfname = NULL){ auxnames <- unlist(list(...)) filenames <- c(filenames, auxnames) which <- match.arg(which,c("pm","mm","both")) if (verbose) cat(1, "reading", filenames[[1]], "to get header information\n") headdetails <- read.celfile.header(as.character(filenames[[1]])) ref.cdfName <- headdetails[[1]] cleaned.cdfName <- cleancdfname(ref.cdfName, addcdf = FALSE) ## Allow for usage of alternative cdfs if(is.null(cdfname)) Data <- new("AffyBatch", cdfName = ref.cdfName, annotation = cleaned.cdfName) else Data <- new("AffyBatch", cdfName = cdfname, annotation = cleaned.cdfName) cdfInfo <- as.list(getCdfInfo(Data)) cdfInfo <- cdfInfo[order(names(cdfInfo))] read.celfile.probeintensity.matrices(filenames = filenames, cdfInfo = cdfInfo, rm.mask = rm.mask, rm.outliers = rm.outliers, rm.extra = rm.extra, verbose = verbose, which = which) } list.celfiles <- function(...){ files <- list.files(...) return(files[grep("\\.[cC][eE][lL]\\.gz$|\\.[cC][eE][lL]$", files)]) } AllButCelsForReadAffy <- function(..., filenames=character(0), widget=getOption("BioC")$affy$use.widgets, celfile.path=NULL, sampleNames=NULL, phenoData=NULL, description=NULL){ ##first figure out filenames auxnames <- unlist(as.list(substitute(list(...)))[-1]) if (widget){ requireNamespace("tkWidgets") widgetfiles <- tkWidgets::fileBrowser( textToShow="Choose CEL files", testFun=tkWidgets::hasSuffix("[cC][eE][lL]|[cC][eE][lL].gz") ) } else{ widgetfiles <- character(0) } if(!is.null(celfile.path)){ auxnames <- file.path(celfile.path, auxnames) filenames <- file.path(celfile.path, filenames) } filenames <- c(filenames, auxnames, widgetfiles) if(length(filenames)==0){ if(is.null(celfile.path)) celfile.path <- getwd() filenames <- list.celfiles(celfile.path,full.names=TRUE) } if(length(filenames)==0) stop("No cel filennames specified and no cel files in specified directory:",celfile.path,"\n") if(is.null(sampleNames)){ sampleNames <- sub("^/?([^/]*/)*", "", filenames) } else{ if(length(sampleNames)!=length(filenames)){ warning("sampleNames not same length as filenames. Using filenames as sampleNames instead\n") sampleNames <- sub("^/?([^/]*/)*", "", filenames) } } chkSn <- function(filenames, samplenames){ fntest <- sub("^/?([^/]*/)*", "", filenames) if(all(fntest %in% samplenames)){ filenames <<- filenames[match(samplenames, fntest)] } else { warning(paste0("Mismatched phenoData and celfile names!\n\n", "Please note that the row.names of your phenoData ", "object should be identical to what you get from ", "list.celfiles()!\nOtherwise you are responsible for ", "ensuring that the ordering of your phenoData object ", "conforms to the ordering of the celfiles as they are ", "read into the AffyBatch!\nIf not, errors may ", "result from using the phenoData for subsetting or ", "creating linear models, etc.\n\n"), call. = FALSE) } } if(is.character(phenoData)) { ## if character, read file if(length(phenoData)!=1) stop(sprintf("'phenoData' must be of length 1, but is %d.", length(phenoData))) phenoData <- read.AnnotatedDataFrame(filename=phenoData) sampleNames <- sampleNames(phenoData) chkSn(filenames, sampleNames) } else if(is.data.frame(phenoData)) { ## if data.frame, coerce phenoData <- as(phenoData, "AnnotatedDataFrame") sampleNames <- sampleNames(phenoData) chkSn(filenames, sampleNames) } else if(is.null(phenoData)) { phenoData <- new("AnnotatedDataFrame", data = data.frame(sample=seq_along(sampleNames), row.names=sampleNames), varMetadata = data.frame(labelDescription="arbitrary numbering", row.names=names(pData))) } else if (!is(phenoData, "AnnotatedDataFrame")) { stop(sprintf("'phenoData' must be of class 'AnnotatedDataFrame', but is %s.", class(phenoData))) } ##get MIAME information if(is.character(description)){ description <- read.MIAME(filename=description,widget=FALSE) } else{ if (! is(description, "MIAME")) { description <- new("MIAME") } } ##MIAME stuff description@preprocessing$filenames <- filenames description@preprocessing$affyversion <- library(help=affy)$info[[2]][[2]][2] return(list(filenames = filenames, phenoData = phenoData, sampleNames = sampleNames, description = description)) } ###this is user friendly wrapper for read.affybatch ReadAffy <- function(..., filenames=character(0), widget=getOption("BioC")$affy$use.widgets, compress=getOption("BioC")$affy$compress.cel, celfile.path=NULL, sampleNames=NULL, phenoData=NULL, description=NULL, notes="", rm.mask=FALSE, rm.outliers=FALSE, rm.extra=FALSE, verbose=FALSE,sd=FALSE, cdfname = NULL) { l <- AllButCelsForReadAffy(..., filenames=filenames, widget=widget, celfile.path=celfile.path, sampleNames=sampleNames, phenoData=phenoData, description=description) ##and now we are ready to read cel files ret <- read.affybatch(filenames=l$filenames, phenoData=l$phenoData, description=l$description, notes=notes, compress=compress, rm.mask=rm.mask, rm.outliers=rm.outliers, rm.extra=rm.extra, verbose=verbose,sd=sd,cdfname=cdfname) sampleNames(ret) <- l$sampleNames return(ret) } checkValidFilenames <- function(filenames) { ## Returns TRUE if filenames is a character vector containing ## paths to files that exist (directories don't count). ## A suitable error message is printed via stop() if invalid ## file names are encountered. if (!is.character(filenames)) stop(strwrap(paste("file names must be specified using a character", "vector, not a", sQuote(typeof(filenames)))), call.=FALSE) if (length(filenames) == 0) stop("no file names provided") if (any(sapply(filenames, nchar) < 1)) stop("empty file names are not allowed") finfo <- file.info(filenames) whBad <- sapply(finfo[["isdir"]], function(x) !identical(FALSE, x)) if (any(whBad)) { msg <- paste("the following are not valid files:\n", paste(" ", filenames[whBad], collapse="\n")) stop(msg, call.=FALSE) } TRUE } affy/R/rma.R0000644000175200017520000000414614710217042013627 0ustar00biocbuildbiocbuild###################################################### # # rma - RMA interface to c code # # the RMA method implemented in c code # # this code serves as interface to the c code. # currently # implemented (version 0.25) background correction # # Background correction code has been added. # # note this function does not leave the supplied # AffyBatch unchanged if you select DESTRUCTIVE=TRUE. this is # for memory purposes but can be quite # dangerous if you are not careful. Use destructive=FALSE if this is # deemed likely to be a problem. # # UPDATE: note that the affybatch is now not affected if you use # destructive=TRUE and you might actually save a little memory. # the destructive refers only to Plobs, which would be destroyed. # # History # # Feb 22, 2004 - activated subset. In is now possible to # do the entire RMA procedure using a subset of probesets # # Oct 26, 2007 = makesure verbosity flag is correctly passed down to C-level routines # # Oct 28, 2007 MM are no longer passed to the C code # # Jul 2, 2008 - change how probeNames (which is really probe/row indexing) is passed down to # c code # # ######################################################## rma <- function(object,subset=NULL, verbose=TRUE, destructive = TRUE,normalize=TRUE,background=TRUE,bgversion=2,...){ rows <- length(probeNames(object,subset)) cols <- length(object) if (is.null(subset)){ ngenes <- length(geneNames(object)) } else { ngenes <- length(subset) } pNList <- probeNames(object,subset) pNList <- split(0:(length(pNList) -1), pNList) if (destructive){ exprs <- .Call("rma_c_complete",pm(object,subset), pNList, ngenes, normalize, background, bgversion, verbose, PACKAGE="affy") } else { exprs <- .Call("rma_c_complete_copy", pm(object,subset), pNList, ngenes, normalize, background, bgversion, verbose, PACKAGE="affy") } colnames(exprs) <- sampleNames(object) new("ExpressionSet", phenoData = phenoData(object), annotation = annotation(object), protocolData = protocolData(object), experimentData = experimentData(object), exprs = exprs) } affy/R/summary.R0000644000175200017520000000344114710217042014542 0ustar00biocbuildbiocbuild###these are summary functions they take matrices of probes x chips ###and return expression and se (when applicable) ##DEBUG: appending the se to the expression values in a same vector ## is too much hackish (I think)... we need to think about something ## better avdiff <- function(x,constant=3){ e <- apply(x,2,function(y){ o <- order(y) yy <- y[-c(o[1],o[length(y)])] #take out biggest and smallest if(length(yy)<2) # SK, some genes have only one probe mean(y) else mean(y[abs(y-mean(yy))detecting normalization methods from naming convention\n") ## this could move into the respective methods of AffyBatch later assign("normalize.AffyBatch.methods", sub("^normalize\\.AffyBatch\\.", "", grep("^normalize.AffyBatch", all.affy, value = TRUE)), envir=env) } .initExpression <- function(all.affy, env) { if (debug.affy123) cat("-->detecting expression value methods from naming convention\n") ## the first one is deprecated (well... "should be"...) vals <- sub("^generateExprVal\\.method\\.", "", grep("^generateExprVal.method", all.affy, value = TRUE)) assign("generateExprSet.methods", vals, envir=env) assign("express.summary.stat.methods", vals, envir=env) } .initBackgroundCorrect <- function(all.affy, env) { if (debug.affy123) cat("-->detecting background correction methods from naming convention\n") start <- nchar("bg.correct.") assign("bgcorrect.methods", sub("^bg\\.correct\\.", "", grep("^bg.correct", all.affy, value = TRUE)), envir=env) } .initPmCorrect <- function(all.affy, env) { if (debug.affy123) cat("-->detecting pm correction methods from naming convention\n") assign("pmcorrect.methods", sub("^pmcorrect\\.", "", grep("^pmcorrect", all.affy, value = TRUE)), envir=env) } .setAffyOptions <- function(affy.opt=NA) { if (! any(is.na(affy.opt))) { if (class(affy.opt) != "BioCPkg") stop("obviously invalid package options !") BioC <- getOption("BioC") BioC$affy <- affy.opt options("BioC"=BioC) return() } ## add affy specific options ## (not unlike what is done in 'Biobase') if (is.null(getOption("BioC"))) { BioC <- list() class(BioC) <- "BioCOptions" options("BioC"=BioC) } probesloc.first <- list(what="environment", where=.GlobalEnv) probesloc.second <- list(what="libPath", where=NULL) probesloc.third <- list(what="data", where="affy") probesloc.fourth <- list(what="bioC", where=.libPaths()[1]) ## default for the methods bgcorrect.method <- "mas" normalize.method <- "quantiles" pmcorrect.method <- "pmonly" summary.method <- "liwong" affy.opt <- list(compress.cdf=FALSE, compress.cel=FALSE, use.widgets=FALSE, probesloc = list(probesloc.first, probesloc.second, probesloc.third, probesloc.fourth), bgcorrect.method = bgcorrect.method, normalize.method = normalize.method, pmcorrect.method = pmcorrect.method, summary.method = summary.method, xy.offset = 0 ## this one is for temporary compatibility ) class(affy.opt) <- "BioCPkg" BioC <- getOption("BioC") BioC$affy <- affy.opt options("BioC"=BioC) ## --- } .affyInternalEnv <- NULL .onLoad <- function(libname, pkgname) { # where <- match(paste("package:", pkgname, sep=""), search()) all.affy <- ls(environment(sys.function())) ##a place to store some variables that need to be accessed .affyInternalEnv <<- new.env(parent=emptyenv()) .initNormalize(all.affy, .affyInternalEnv) .initExpression(all.affy, .affyInternalEnv) .initBackgroundCorrect(all.affy, .affyInternalEnv) .initPmCorrect(all.affy, .affyInternalEnv) .setAffyOptions() if(.Platform$OS.type == "windows" && interactive() && .Platform$GUI == "Rgui"){ addVigs2WinMenu("affy") } } affy/README.md0000644000175200017520000000063714710217042014004 0ustar00biocbuildbiocbuild[](https://bioconductor.org/) **affy** is an R/Bioconductor package conaining methods for Affymetrix oligonucleotide arrays. See https://bioconductor.org/packages/affy for more information including how to install the release version of the package (please refrain from installing directly from GitHub). affy/aclocal.m40000755000175200017520000000113414710217042014361 0ustar00biocbuildbiocbuild## ## Try finding zlib library and headers ## ## R_ZLIB() ## AC_DEFUN([R_ZLIB], [ have_zlib=no AC_CHECK_LIB(z, main, [ AC_CHECK_HEADER(zlib.h, [ AC_MSG_CHECKING([if zlib version >= 1.1.3]) AC_TRY_RUN([ #include "confdefs.h" #include #include int main() { #ifdef ZLIB_VERSION return(strcmp(ZLIB_VERSION, "1.1.3") < 0); #else return(1); #endif }], [AC_MSG_RESULT([yes]) have_zlib=yes], AC_MSG_RESULT([no]), AC_MSG_RESULT([no])) ]) ]) if test "${have_zlib}" = yes; then AC_DEFINE(HAVE_ZLIB) LIBS='-lz '$LIBS fi ]) affy/build/0000755000175200017520000000000014710267247013632 5ustar00biocbuildbiocbuildaffy/build/vignette.rds0000644000175200017520000000050414710267247016170 0ustar00biocbuildbiocbuildR]O0kl,nMb|hڒ҉{م =bH˽ܞ{i}0,qLòf For some (mysterious) reasons, save(..., ascii=TRUE) is behaving wrong on my linux box at home. I saved it with ascii=FALSE (portability could be .....) LG ###why not have a slot in cel.container denoting the default Cdf ###then change all functions so that one does not need to pass Cdf ###with this and some methods we maybe able to get rid of Plobs entirely ###maybe this is a version 2.0 task. ----> Yep... mentioned in the file TODO for some time now... Yo, Laurentz takin' the mike now: - fixed a problem with CDF.example.RData - updated the documentation for the normalize functions (should keep 'R CMD check happy') - introduced a generic method 'normalize.methods' (Plob and Cel.container) - variables related to normalize.methods (normalize.Cel.container.methods and normalize.Plob.methods) are created. - changed the methods names 'normalize.Cel.XYZ' to 'normalize.Cel.container.XYZ' (more consistent). Documentation shoudlhave been updated accordingly. - removed image.Cel.Rd - fixed the method image for Cel-class. Added better ways of asking the function to mask areas. updated the documentation accordingly. - did a bit more with affy.Rnw (in inst/doc/). Now it goes through Sweave ok. - update the file 'TODO' still talkin'...: - cleaned read_cdffile.c (no more warnings) - made something usable for the documentation of 'normalize' (hopefully) - various fixes in the documentation - Did a bit more with affy.Rnw - the example in generateExprSet-methods.Rd is commented out... seems to work on the command line but fails through 'R CMD check' (??!?!!!?) - the 'normalize' part being done (apart of possible bugs), we reached the version number 0.8.0 - started to finish the part about generateExprSet - accessor function sd in Cel moved to spotsd affy/cleanup0000755000175200017520000000005014710267250014075 0ustar00biocbuildbiocbuild#! /bin/sh rm -f config.* src/Makevars affy/configure0000755000175200017520000007614214710267250014446 0ustar00biocbuildbiocbuild#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi case "$ac_option" in -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) ac_optarg= ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -disable-* | --disable-*) ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he) # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then echo "--enable and --with options recognized:$ac_help" fi exit 0 ;; -host | --host | --hos | --ho) ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir="$ac_optarg" ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers) echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` eval "with_${ac_package}=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries="$ac_optarg" ;; -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then echo "configure: warning: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } fi nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>./config.log echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do case "$ac_arg" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo > confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file="DESCRIPTION" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then echo "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo "configure:530: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # This must be in double quotes, not single quotes, because CPP may get # substituted into the Makefile and "${CC-cc}" will confuse make. CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:551: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:568: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:585: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP=/lib/cpp fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* ac_cv_prog_CPP="$CPP" fi CPP="$ac_cv_prog_CPP" else ac_cv_prog_CPP="$CPP" fi echo "$ac_t""$CPP" 1>&6 have_zlib=no echo $ac_n "checking for main in -lz""... $ac_c" 1>&6 echo "configure:612: checking for main in -lz" >&5 ac_lib_var=`echo z'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lz $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_safe=`echo "zlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for zlib.h""... $ac_c" 1>&6 echo "configure:645: checking for zlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking if zlib version >= 1.1.3""... $ac_c" 1>&6 echo "configure:673: checking if zlib version >= 1.1.3" >&5 if test "$cross_compiling" = yes; then echo "$ac_t""no" 1>&6 else cat > conftest.$ac_ext < #include int main() { #ifdef ZLIB_VERSION return(strcmp(ZLIB_VERSION, "1.1.3") < 0); #else return(1); #endif } EOF if { (eval echo configure:692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then echo "$ac_t""yes" 1>&6 have_zlib=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* echo "$ac_t""no" 1>&6 fi rm -fr conftest* fi else echo "$ac_t""no" 1>&6 fi else echo "$ac_t""no" 1>&6 fi if test "${have_zlib}" = yes; then cat >> confdefs.h <<\EOF #define HAVE_ZLIB 1 EOF LIBS='-lz '$LIBS fi trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. cat > conftest.defs <<\EOF s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g s%\[%\\&%g s%\]%\\&%g s%\$%$$%g EOF DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; *) echo "\$ac_cs_usage"; exit 1 ;; esac done ac_given_srcdir=$srcdir trap 'rm -fr `echo "src/Makevars" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@CPP@%$CPP%g CEOF EOF cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file else sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi if test ! -s conftest.s$ac_file; then ac_more_lines=false rm -f conftest.s$ac_file else if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f conftest.s$ac_file" else ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ac_file=`expr $ac_file + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_cmds` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else ac_dir_suffix= ac_dots= fi case "$ac_given_srcdir" in .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac echo creating "$ac_file" rm -f "$ac_file" configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." case "$ac_file" in *Makefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 affy/configure.in0000755000175200017520000000107114710217042015032 0ustar00biocbuildbiocbuilddnl dnl Configuration things for affyR. dnl (http://www.cbs.dtu.dk/laurent/download/affyR/ dnl What is below (and in the other configuration fiels dnl was taken from different configuration scripts for R version 1.3.0. dnl dnl Acknowledgments: The author(s) of the R configure scripts, Kurt Hornik for the tip with autoconf. dnl dnl Laurent 2001 AC_INIT("DESCRIPTION") dnl dnl Are things (still) the same ? dnl (taken from the 'writing R extensions manual') dnl dnl tests the zlib.h dnl (the test is found in 'acinclude.m4') dnl R_ZLIB AC_OUTPUT(src/Makevars) affy/data/0000755000175200017520000000000014710217042013430 5ustar00biocbuildbiocbuildaffy/data/SpikeIn.rda0000644000175200017520000000316614710217042015470 0ustar00biocbuildbiocbuild՗oUnln5#M4F`)6! eigLKKgi;-RZVh$PUm@@4$j"~ DbH$DN]ipyϹs{y]I\,ˊBcBѡQ?5uUZ+*fƄ躚пCOweGvF5kla3үDe#BЏ9KT`[X19/{џ]>_`yN٭΍]52q;O~%*O7r౔QגEpj]I*o z"k~&q:U^;~ܥ)]s ?Љʑ3|gYd97?eo&Ogߔe[K[xffaoՉ|3# Zԉ7?4ᦫ=.ag#AX?EXn;VYN}_T~ ȫͱN^/#V煻|L=md,,=pE#Ė<\BcJ+BW5z[('L zj|tek&NN{lNL{I;9y9nN؄#ɉyF&1C' 5c-HڰJsE"8 Mٮ߸BZ9*$-UƖͣpK~ Ykfr}YeM ?)m%jSi5(|}~9o ÿRstgSL3r1WHWƕ SD-^3-{{T;^wMN&ϊ?$࿒+w_taM^ˉo].?Y+}۴u-e=]YWO)i̺㶳S?' rԚռg0]Wkc5qz3:QEuS_x`ٴ.w q=3ZU\JLi>LeVʏ#?-7ģT- #uLv7|O/x$e;QAZa^sUῆ̗la=0dph}oIa|vp]ɾpU"cR8Ga”׬EE=J=Pk=~ʔ̆M4\)&DMT+7!affy/data/cdfenv.example.rda0000644000175200017520000003346514710217042017032 0ustar00biocbuildbiocbuildwew]7Q좎(jpΊ$*("*J !1ɶnΝ;{]}E,sw{WN^>o|9k7>++p)WߓOk㳮㮷t?9^?ٯ|EU|C᷽=#yΥG~ Zu7o ~ V >l/? __ (|1z c<=Ԇg^:`|Y~_r[o_7:c`8/O_ > >>~9|&| l> p?_WkKᵏ;|?/}.r7x[ν`.% W*\pn- w.Do߄$]{?^r8os}1\u?|=q'O7Ÿ?|>C0<‡1xG`|Y8hzؽWkKeUk-8ow;]Cnx6Ov@Mc8<G!CIx N_ ;7W``6`F0-/,d % ~ p >!xn~n- w., `s0 K #i2&#i2&#i2&#i2&#i2&#i2&#i2&#i2@i2&#i2&#i2&#i2&#i2&#i2&#i2&?d=&֤ϚdzBÚ<ɣ<Ƀi4OwF4EiQz:ivZ=+o(kPY0Cϐ3kO>6×ftg_}o;hG/`6*]C#Y=4 MFgP _ % qxtm`' 6pٟp' g|f:nskcw4]C 8Q&+heqLl`+#e­2WWJҦ)+mJҦ)+mJҦ)+mJҦ3'{xzʮk;YB]Nu׵m5on(7xyC0n؆I\a0qk5 \"Aiȼ !6dކxd_'*rU!nu uwUf]6VeUn*Buՙ{ѡYәYӑYSg3ԙk{!950d5uMf]۫3}0Yg r2pIa&kPl|s߆A/Cg.@>Cg጑CF%#d>/PY󧬹SWtg]ks5W%T f01#kȒ3WGQ;'kS@1,zۜe?+ϪOgեY1pVYQIAe,`fI[ &Bƒ)H,F4AA4AߑQ(su]X8L,v1w̱s\Dc1yQr(9&scs2C.v]7W 6R3ToFh83Bmy!7#~ 'A/vFs;hng43y5#f'{eV*  2*J R:6oUGTNTNTN{kշACjP5y:é:é:OvP|_eҗY2K_2^&Vebe/+ˣP^{萗C]q+q8ƒVx B++ M}@rUmݓhD$Z'9IMmRԜ'E1(NړdSڔ6%MIjSڔ~JY?sg>tF ;#`!03ݦR)ٟHsR C)%DhJ4aI+ф%hw/  MX 4a&,ӄeLiKONVɘ%J, y-@=[,4ۀtYuY(%cd vrm`6k|;tC bO a`LPu `LP (TD 4a 4v`LP0&( c1AAuTPTGQAuTЄ)h>}/DaSfimE쮨s+ReE[+:\:\*:V1 T*c@XbbbרbǨbbb}HW U[ S j!PW*EHG?'SEhhU*}EnN;YӷūB:Eע[$_~o~-:[|hu6GZ ? 9 3_ ~2p׷o҃<É޲[^K@oQz-E[`KoQ-E<|BgZ?"%W_?m/mOn MA)X4]HP(Hj<"#UyDDHPHPHPHP Mfxe!/MbSmԤۚj&Hk"6jMBSWUSj&Oi&h&Oh{c| ~||:|7o A^Wڕjho+Y+X+W+&Iފfa*ꃐ~][WUmU[VU5ڪ_u{!J=t_BOYr%Yr%Yr%G*b)*)jUZE"K."K."K.*/*I_}xJ$ȼ (ϒ*}~oMϻ:0p Fr,7uCYr;Ǣs93ȱݞc9j'sNN0uppppCΣ9oNśst{Q;9j'7}o>.rȝr[".En^ܽUEk|d[WW0OUywHHi1-54JZ I i70EZjL#;-5ƴr'ͷ|*͗|(w|&W|$-5EqQj\EikOťD7 2n2#@dlEetFȸAB Sҵ)Y"+@d DV Y"+@dme),|]' c9!<2SYy,<>?Yyn}ހ(40ծjy輚s^kk^7g^g^f^f^f^gLfqGɾPY+TY?l UVlZʺ,ez Y7uYA U`*BhfmIHHH xP}q!%bXU̮,j\ëDbU1J$VY~HU"#j/W͗DbHU"J$V*X%DbHNvC Fv׎p#ZU /j]afa:ݽ0v.wvv[V.q⺾~>Ế\wsO@ҲnJ=TP:yCHKX5_#j,&\x@MQ5F=ԨPӲiYմjZV5-UM˪eUjU}1f'z_* Lk+bmbmbm2 V*V*THJE{_ޯW+1}JJJJJJJc'zl"T\99l<#\VL9Z0(R`7`7`7g .xFfjA3ZL-X*S) >d=2t춑6=$ oi;Q;f7;tN Ύ]a8kжkvy.Oa$5Idòaz0]sX9uXuX;,`擇apxt_l&j9z$Gt|'9",rX^e9刳#r:ACy'+{ʞ'+{ʞ'+{/>CI=R(-mom[,l^ Hlmzdoۮ:={eMmmD6f ی`o;m퐷l]糗vIXIWlB:b;nZw6Mn)w^FQ~s<{6EMwKRknDl@lGOI};thޡYW+֕ArQ=@6"62#*"'v$GnNd݊$!"!   3D~;Ct? ?1lr&nҷMELm^nSSI6UM&ߤrTNiR97o {o==z'O)S>]$uz.n4ㆲA'7rCݠ <#<f1 YLNNNNNzrzrzrzrzrzrzrCUs &3O+Χ|ȦOӔȤtRM:crS͔rmJ6kz5ɚdMo7YӛM&kz5l6g YashnE} =RBJ )%RBJXF'D(%QK<$%KH)!RJ&% |$D_K~I/'w'RMضbܦ)mjM1~SmAJ}ST.mʟ-~KRo)[ -.ϖiҖ!!!!n}iߟP$F:68 ` }߿;|߿ow| ?C!=!)nn߿}n߿z/*}:ߞ0~L$.N2~֓L$O2ݓ$r'ɕ9It,Ą85!M;2Lw>UU n#7n#7n#7nc&m~%}GxQ?=Џ(c?: Q4t?}s0{N9s9L#kas,F$9NПSюs8G;юs8G;m;Km Y泃f洃fC0 ;Hޥvi]oۥvi]IfWrٕTv%]IdWؕ4v%]xm{ <1>^O>@}t~#Axqt, C!~!C:!>zoⓇ˳Ԗ湎ɱyLcrl1MCzN4'MsHi6jg㸍lyõZ0-iNNNNNN>ĺ2 XV.e2XV /A2Yyʲ̒Wt WtW̃V́V>+&+WVl^Yb{eEkEkEkn}I'?Sh9S)\c:xNAquNi9-ٝNKv%ӒinMI>3%NISꔤ::S35m۶כ$p{6d^E(j΋g#)#1vSl7vSl7vSl7vSl7vSlw,>: ?.e\˄nY&/^`j2/Myo*j2SQU}e_EWQUQUQUQUQUQUQUQUW>W^}WFBlj(T/@*VҪTZJܼ*VyNU*rTZ]RRRRJkRiM*I5&֤ҚTZJkRiM] {mPW}bcbʘOcùEbj2cú=σ,6~X__ __ Q:cO\®oZ%ޅy,^"ϓEL乲H<_ ;"'Y$ E;gQ&64ϡF^}~zMl5F^m;5z7A$8INƓgPgƠL 9:g?g?g{1q\gTgY)T}VsVsVuuκt>JwMq$7MpSp6M#(l $[Rfm!iKoKŰRR!lI[RT%nQ[m[m[m[m[m[Dua'vUPUUՔU\eTtW,*PUMMMתתתתתתת6UUOqB,q KqIaPƒCXBҗeYv(UKʩ%){I^e)yY*^e;*eYv>كHB"/d!C"3d!RC"7d!CP %,9d!KYrȒC%,9d!KYr(RnX>_|.E:Hg%"QtFQ*E:ZЊvbgQ(E:Hg"Q3tF(E:QQG*y704@Y\idFnidL`z ꡧBQAh wE9fG.Ey"O[abh҃Q,=pHKԮ5Pʝ@(wN,=`KXz'/8lJ4EOStu88S$b$S$bʡV!H m4^0^0^0^0^ HqD\ HqD\ Hą_>ÃO0j懫9[s(5zpjtm!êѹ5VXu/^Q zYG:^QuԽ.F5/  rj)Ȃj5TSXTxƲj* XZMXcq5}Dxng a3 |VgVfVaV_aV`uf]g2i&EPe̺]1n.c֙K]Ƭ溌YG~]ƬYOA(ce̺Y12f]Ƭ˘u.ceِ̺12fCl|iA{ ~%*k¯_~#@ԈmٱX[;ESѱmX;UKb5c5Mb_g;7sppLE \kC߃&iL:14K,A,R@,VbOl5*6|#i3MP8 X xN3p򐝌FbCk)NjLbX_*aUNk_Cn~?//?GRx-| L"Kz(]YhB#H8 #uhdG#C(;7< YhB#MC((51&Y^D8ox7ΓMRIj7I&݌` 5Mۦⶩm*nۦⶩdHvdHvdHvdHvdHvdHvdHv >یw6d7dÆ,ؐ^Ckr ٭A4.@ҤA4H Ҡ3el6 y@ن76H 鹉&hzn鹉uкZw{ 4Ȓ%dUBV Y%dUBV Y%Dt]p,ٖ*&lMUFVYedUFVYe لl_6/[h.e1|}'wE߅1އmz:tl\񙱽-{1?5Kխ&ڪ9H4:EzPex PbQ"Ma\iӕ&xڔ%6mIiQqou]guu-׋(- pۢPzْ,u' P"j,-pen*0\0dـEM@tD@tD@A(dlp B5PC6m^Qql#~r'('I֑zmt ' :'uONNQ8(S S)y0p יxn4؟y!o$/@}'Gl y1A1O6Ƃ* }}}mAC[С-qAI\n_Nے;C$C ?<ãwj p :]ayuNȈ'dćeće8c1yLx<S<&>:xYOod 8`pCLRBQ ; Z]j 8d!pȀC2?Oh?O聊lzB^VôQ[eqB*Uw c!"ա6̪tU1]5Y]*^Ug*V JU`U)@@d. s \@2d. svud. s \@2̅_I-:iIvȒSh=ShxO3ӗA\u ۮhTTH ^!+HBWY!+$x BW4H*$BWH ^!+$xBWH ^!+}u`b1όk}>Ò3S}gcj1x*I2 x((㡠L}a$R,.Kq)vJS)( psRBI  k!-8^P/GE#x\y )EOd)ĘEb̲,ϚdS0 y@#Y1sbRY9kg0kg0kg03 /0 m^؛hoFwmc:f#:_s}~ϯԑ|~o)x7@}~o->YS*ve+KG~b~'G?ߕ2r=uGQuOGqpԽQ(n TWI4q.w=.cyӚɥq.x+<?m6KJ %9 9LE#usGstgsNru\gu9s9i{NyZi^&} ]gu&0affy/data/mapCdfName.rda0000644000175200017520000000032714710217042016115 0ustar00biocbuildbiocbuild r0b```b`RL@& `d`\)i~ @( RWZ[ 0640O40]s2SAaGaq!T5hTl`pm(Dilution)) ################################################### ### code chunk number 15: affy.Rnw:515-517 ################################################### gn <- geneNames(Dilution) pm(Dilution, gn[100]) ################################################### ### code chunk number 16: affy.Rnw:531-532 ################################################### hist(Dilution[,1:2]) ##PM histogram of arrays 1 and 2 ################################################### ### code chunk number 17: affy.Rnw:548-550 (eval = FALSE) ################################################### ## par(mfrow=c(2,2)) ## image(Dilution) ################################################### ### code chunk number 18: affy.Rnw:566-568 ################################################### par(mfrow=c(1,1)) boxplot(Dilution, col=c(2,3,4)) ################################################### ### code chunk number 19: affy.Rnw:591-593 ################################################### deg <- AffyRNAdeg(Dilution) names(deg) ################################################### ### code chunk number 20: affy.Rnw:597-598 ################################################### summaryAffyRNAdeg(deg) ################################################### ### code chunk number 21: affy.Rnw:605-606 ################################################### plotAffyRNAdeg(deg) ################################################### ### code chunk number 22: affy.Rnw:620-621 ################################################### Dilution.normalized <- normalize(Dilution) ################################################### ### code chunk number 23: affy.Rnw:667-671 ################################################### gn <- featureNames(Dilution) ps <- probeset(Dilution, gn[1:2]) #this is what i should be using: ps show(ps[[1]]) ################################################### ### code chunk number 24: affy.Rnw:687-689 ################################################### mylocation <- list("1000_at"=cbind(pm=c(1,2,3),mm=c(4,5,6)), "1001_at"=cbind(pm=c(4,5,6),mm=c(1,2,3))) ################################################### ### code chunk number 25: affy.Rnw:696-698 ################################################### ps <- probeset(Dilution, genenames=c("1000_at","1001_at"), locations=mylocation) ################################################### ### code chunk number 26: affy.Rnw:702-706 ################################################### pm(ps[[1]]) mm(ps[[1]]) pm(ps[[2]]) mm(ps[[2]]) ################################################### ### code chunk number 27: affy.Rnw:725-737 ################################################### data(SpikeIn) ##SpikeIn is a ProbeSets pms <- pm(SpikeIn) mms <- mm(SpikeIn) ##pms follow concentration par(mfrow=c(1,2)) concentrations <- matrix(as.numeric(sampleNames(SpikeIn)),20,12,byrow=TRUE) matplot(concentrations,pms,log="xy",main="PM",ylim=c(30,20000)) lines(concentrations[1,],apply(pms,2,mean),lwd=3) ##so do mms matplot(concentrations,mms,log="xy",main="MM",ylim=c(30,20000)) lines(concentrations[1,],apply(mms,2,mean),lwd=3) ################################################### ### code chunk number 28: affy.Rnw:771-773 ################################################### cat("HG_U95Av2 is",cleancdfname("HG_U95Av2"),"\n") cat("HG-133A is",cleancdfname("HG-133A"),"\n") ################################################### ### code chunk number 29: affy.Rnw:777-778 ################################################### cat("HG_U95Av2 is",cleancdfname("HG_U95Av2",addcdf=FALSE),"\n") ################################################### ### code chunk number 30: affy.Rnw:785-788 ################################################### data(cdfenv.example) ls(cdfenv.example)[1:5] get(ls(cdfenv.example)[1],cdfenv.example) ################################################### ### code chunk number 31: affy.Rnw:799-802 ################################################### print(Dilution@cdfName) myenv <- getCdfInfo(Dilution) ls(myenv)[1:5] ################################################### ### code chunk number 32: affy.Rnw:810-813 ################################################### Index <- pmindex(Dilution) names(Index)[1:2] Index[1:2] ################################################### ### code chunk number 33: affy.Rnw:817-818 ################################################### pmindex(Dilution, genenames=c("1000_at","1001_at")) ################################################### ### code chunk number 34: affy.Rnw:822-823 ################################################### mmindex(Dilution, genenames=c("1000_at","1001_at")) ################################################### ### code chunk number 35: affy.Rnw:826-829 ################################################### indexProbes(Dilution, which="pm")[1] indexProbes(Dilution, which="mm")[1] indexProbes(Dilution, which="both")[1] ################################################### ### code chunk number 36: affy.Rnw:841-844 ################################################### opt <- getOption("BioC") affy.opt <- opt$affy print(names(affy.opt)) ################################################### ### code chunk number 37: affy.Rnw:848-853 ################################################### opt <- getOption("BioC") affy.opt <- opt$affy affy.opt$normalize.method <- "constant" opt$affy <- affy.opt options(BioC=opt) ################################################### ### code chunk number 38: affy.Rnw:859-864 ################################################### opt <- getOption("BioC") affy.opt <- opt$affy affy.opt$compress.cel <- TRUE opt$affy <- affy.opt options(BioC=opt) affy/inst/doc/affy.Rnw0000644000175200017520000010542014710217042015660 0ustar00biocbuildbiocbuild% -*- mode: noweb; noweb-default-code-mode: R-mode; -*- %\VignetteIndexEntry{1. Primer} %\VignetteKeywords{Preprocessing, Affymetrix} %\VignetteDepends{affy} %\VignettePackage{affy} %documentclass[12pt, a4paper]{article} \documentclass[12pt]{article} \usepackage{amsmath} \usepackage{hyperref} \usepackage[authoryear,round]{natbib} \textwidth=6.2in \textheight=8.5in %\parskip=.3cm \oddsidemargin=.1in \evensidemargin=.1in \headheight=-.3in \newcommand{\scscst}{\scriptscriptstyle} \newcommand{\scst}{\scriptstyle} \newcommand{\Rfunction}[1]{{\texttt{#1}}} \newcommand{\Robject}[1]{{\texttt{#1}}} \newcommand{\Rpackage}[1]{{\textit{#1}}} \author{Laurent Gautier, Rafael Irizarry, Leslie Cope, and Ben Bolstad} \begin{document} \title{Description of affy} \maketitle \tableofcontents \section{Introduction} The \Rpackage{affy} package is part of the BioConductor\footnote{\url{http://bioconductor.org/}} project. It is meant to be an extensible, interactive environment for data analysis and exploration of Affymetrix oligonucleotide array probe level data. The software utilities provided with the Affymetrix software suite summarizes the probe set intensities to form one {\it expression measure} for each gene. The expression measure is the data available for analysis. However, as pointed out by \cite{li:wong:2001a}, much can be learned from studying the individual probe intensities, or as we call them, the {\it probe level data}. This is why we developed this package. The package includes plotting functions for the probe level data useful for quality control, RNA degradation assessments, different probe level normalization and background correction procedures, and flexible functions that permit the user to convert probe level data to expression measures. The package includes utilities for computing expression measures similar to MAS 4.0's AvDiff \citep{affy4}, MAS 5.0's signal \citep{affy5}, DChip's MBEI \citep{li:wong:2001a}, and RMA \citep{iriz:etal:2003}. We assume that the reader is already familiar with oligonucleotide arrays and with the design of the Affymetrix GeneChip arrays. If you are not, we recommend the Appendix of the Affymetrix MAS manual \cite{affy4,affy5}. The following terms are used throughout this document: \begin{description} \item[probe] oligonucleotides of 25 base pair length used to probe RNA targets. \item[perfect match] probes intended to match perfectly the target sequence. \item[$PM$] intensity value read from the perfect matches. \item[mismatch] the probes having one base mismatch with the target sequence intended to account for non-specific binding. \item[$MM$] intensity value read from the mis-matches. \item[probe pair] a unit composed of a perfect match and its mismatch. \item[affyID] an identification for a probe set (which can be a gene or a fraction of a gene) represented on the array. \item[probe pair set] $PM$s and $MM$s related to a common {\it affyID}. \item[{\it CEL} files] contain measured intensities and locations for an array that has been hybridized. \item[{\it CDF} file] contain the information relating probe pair sets to locations on the array. \end{description} Section \ref{whatsnew} describes the main differences between version 1.5 and this version (1.6). Section \ref{sec:get.started} describes a quick way of getting started and getting expression measures. Section \ref{qc} describes some quality control tools. Section \ref{s1.4} describes normalization routines. Section \ref{classes} describes the different classes in the package. \ref{sec:probesloc} describes our strategy to map probe locations to probe set membership. Section \ref{configure.options} describes how to change the package's default options. Section \ref{whatwasnew} describes earlier changes. %%%make sure to change this when we get a publication about version 2. {\bf Note:} If you use this package please cite \cite{gaut:cope:bols:iriz:2003} and/or \cite{iriz:gaut:cope:2003}. \section{Changes for affy in BioC 1.8 release} \label{whatsnew} There were relatively few changes. \begin{itemize} \item MAplot now accepts the argument \Rfunction{plot.method} which can be used to call smoothScatter. \item \Rfunction{normalize.quantiles.robust} has had minor changes. \item \Rfunction{ReadAffy} can optionally return the SD values stored in the cel file. \item The C parsing code has been moved to the \Rpackage{affyio} package, which is now a dependency of the affy package. This change should be transparent to users as \Rpackage{affyio} will be automatically loaded when affy is loaded. \item Added a cdfname argument to \Rfunction{justRMA} and \Rfunction{ReadAffy} to allow for the use of alternative cdf packages. \end{itemize} \section{Getting Started: From probe level data to expression values} \label{sec:get.started} The first thing you need to do is {\bf load the package}. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} <>= library(affy) @ This release of the \Rpackage{affy} package will automatically download the appropriate cdf environment when you require it. However, if you wish you may download and install the cdf environment you need from \url{http://bioconductor.org/help/bioc-views/release/data/annotation/} manually. If there is no cdf environment currently built for your particular chip and you have access to the CDF file then you may use the \Rpackage{makecdfenv} package to create one yourself. To make the cdf packaes, Microsoft Windows users will need to use the tools described in \url{http://www.murdoch-sutherland.com/Rtools/}. \subsection{Quick start} If all you want is to go from probe level data ({\it Cel} files) to expression measures here are some quick ways. If you want is RMA, the quickest way of reading in data and getting expression measures is the following: \begin{enumerate} \item Create a directory, move all the relevant {\it CEL} files to that directory \item If using linux/unix, start R in that directory. \item If using the Rgui for Microsoft Windows make sure your working directory contains the {\it Cel} files (use ``File -> Change Dir'' menu item). \item Load the library. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} \item Read in the data and create an expression, using RMA for example. \begin{Sinput} R> Data <- ReadAffy() ##read data in working directory R> eset <- rma(Data) \end{Sinput} \end{enumerate} Depending on the size of your dataset and on the memory available to your system, you might experience errors like `Cannot allocate vector \ldots'. An obvious option is to increase the memory available to your R process (by adding memory and/or closing external applications\footnote{UNIX-like systems users might also want to check {\it ulimit} and/or compile {\bf R} and the package for 64 bits when possible.}. An another option is to use the function \Rfunction{justRMA}. \begin{Sinput} R> eset <- justRMA() \end{Sinput} This reads the data and performs the `RMA' way to preprocess them at the {\it C} level. One does not need to call \verb+ReadAffy+, probe level data is never stored in an AffyBatch. \verb+rma+ continues to be the recommended function for computing RMA. The \Rfunction{rma} function was written in C for speed and efficiency. It uses the expression measure described in \cite{iriz:etal:2003}. For other popular methods use \Rfunction{expresso} instead of \Rfunction{rma} (see Section \ref{expresso}). For example for our version of MAS 5.0 signal uses expresso (see code). To get mas 5.0 you can use \begin{Sinput} R> eset <- mas5(Data) \end{Sinput} which will also normalize the expression values. The normalization can be turned off through the \verb+normalize+ argument. In all the above examples, the variable \Robject{eset} is an object of class \Robject{ExpressionSet} described in the Biobase vignette. Many of the packages in BioConductor work on objects of this class. See the \Rpackage{genefilter} and \Rpackage{geneplotter} packages for some examples. If you want to use some other analysis package, you can write out the expression values to file using the following command: \begin{Sinput} R> write.exprs(eset, file="mydata.txt") \end{Sinput} \subsection{Reading CEL file information} The function \Rfunction{ReadAffy} is quite flexible. It lets you specify the filenames, phenotype, and MIAME information. You can enter them by reading files (see the help file) or widgets (you need to have the tkWidgets package installed and working). \begin{Sinput} R> Data <- ReadAffy(widget=TRUE) ##read data in working directory \end{Sinput} This function call will pop-up a file browser widget, see Figure \ref{fig:widget.filechooser}, that provides an easy way of choosing cel files. \newpage \begin{figure}[htbp] \begin{center} \includegraphics{widgetfilechooser} \caption{\label{fig:widget.filechooser}Graphical display for selecting {\it CEL} files. This widget is part of the {\it tkWidgets} package. (function written by Jianhua (John) Zhang). } \end{center} \end{figure} Next, a widget (not shown) permits the user to enter the \verb+phenoData+. %%See Figure \ref{fig:widget.pd}. %% \begin{figure}[htbp] %% \begin{center} %% \begin{tabular}{c} %% \includegraphics{numcovariates}\\ %% \includegraphics{namecovariates}\\ %% \includegraphics{assigncovariates} %% \end{tabular} %% \caption{\label{fig:widget.pd}Graphical display for entering phenoData %% This widget is part %% of the {\it tkWidgets} package.} %% % (functions written by Majnu John.} %% \end{center} %% \end{figure} Finally the a widget is presented for the user to enter MIAME information. %%Seen in Figure \ref{fig:widget.tkMIAME}. %% \begin{figure}[htbp] %% \begin{center} %% \includegraphics[width=0.5\textwidth]{widgettkMIAME} %% \caption{\label{fig:widget.tkMIAME}Graphical display for entering {\it %% MIAME} informations. This widget is part of the {\it tkWidgets} %% package.} %% % (function written by Majnu John).} %% \end{center} %% \end{figure} Notice that it is not necessary to use widgets to enter this information. Please read the help file for more information on how to read it from flat files or to enter it programmatically. The function \Rfunction{ReadAffy} is a wrapper for the functions \Rfunction{read.affybatch}, \Rfunction{tkSampleNames}, \Rfunction{read.AnnotatedDataFrame}, and \Rfunction{read.MIAME}. The function \Rfunction{read.affybatch} has some nice feature that make it quite flexible. For example, the \verb+compression+ argument permit the user to read compressed {\it CEL} files. The argument {\it compress} set to {\it TRUE} will inform the readers that your files are compressed and let you read them while they remain compressed. The compression formats {\it zip} and {\it gzip} are known to be recognized. A comprehensive description of all these options is found in the help file: \begin{Sinput} R> ?read.affybatch R> ?read.AnnotatedDataFrame R> ?read.MIAME \end{Sinput} \subsection{Expression measures} The most common operation is certainly to convert probe level data to expression values. Typically this is achieved through the following sequence: \begin{enumerate} \item reading in probe level data. \item background correction. \item normalization. \item probe specific background correction, e.g. subtracting $MM$. \item summarizing the probe set values into one expression measure and, in some cases, a standard error for this summary. \end{enumerate} We detail what we believe is a good way to proceed below. As mentioned the function \Rfunction{expresso} provides many options. For example, \begin{Sinput} R> eset <- expresso(Dilution, normalize.method="qspline", bgcorrect.method="rma",pmcorrect.method="pmonly", summary.method="liwong") \end{Sinput} This will store expression values, in the object \Robject{eset}, as an object of class \Robject{ExpressionSet} (see the \Rpackage{Biobase} package). You can either use R and the BioConductor packages to analyze your expression data or if you rather use another package you can write it out to a tab delimited file like this \begin{Sinput} R> write.exprs(eset, file="mydata.txt") \end{Sinput} In the \verb+mydata.txt+ file, row will represent genes and columns will represent samples/arrays. The first row will be a header describing the columns. The first column will have the {\it affyID}s. The \Rfunction{write.exprs} function is quite flexible on what it writes (see the help file). \subsubsection{expresso} \label{expresso} The function \Rfunction{expresso} performs the steps background correction, normalization, probe specific correction, and summary value computation. We now show this using an \Robject{AffyBatch} included in the package for examples. The command \verb+data(Dilution)+ is used to load these data. Important parameters for the expresso function are: \begin{description} \item[bgcorrect.method]. The background correction method to use. The available methods are <<>>= bgcorrect.methods() @ \item[normalize.method]. The normalization method to use. The available methods can be queried by using \verb+normalize.methods+. <<>>= library(affydata) data(Dilution) ##data included in the package for examples normalize.methods(Dilution) @ \item[pmcorrect.method] The method for probe specific correction. The available methods are <<>>= pmcorrect.methods() @ \item[summary.method]. The summary method to use. The available methods are <<>>= express.summary.stat.methods() @ Here we use \Rfunction{mas} to refer to the methods described in the Affymetrix manual version 5.0. \item[widget] Making the \verb+widget+ argument \verb+TRUE+, will let you select missing parameters (like the normalization method, the background correction method or the summary method). Figure \ref{fig:expressochooser} shows the widget for the selection of preprocessing methods for each of the steps. \begin{Sinput} R> expresso(Dilution, widget=TRUE) \end{Sinput} \begin{figure}[htbp] \begin{center} \includegraphics[width=0.5\textwidth]{EWSnap} \caption{\label{fig:expressochooser}Graphical display for selecting expresso methods.} \end{center} \end{figure} \end{description} There is a separate vignette {\bf affy: Built-in Processing Methods} which explains in more detail what each of the preprocessing options does. \subsubsection{MAS 5.0} To obtain expression values that correspond to those from MAS 5.0, use \Rfunction{mas5}, which wraps \Rfunction{expresso} and \Rfunction{affy.scalevalue.exprSet}. <<>>= eset <- mas5(Dilution) @ To obtain MAS 5.0 presence calls you can use the \verb+mas5calls+ method. <<>>= Calls <- mas5calls(Dilution) @ This returns an \verb+ExpressionSet+ object containing P/M/A calls and their associated Wilcoxon p-values. \subsubsection{Li and Wong's MBEI (dchip)} To obtain our version of Li and Wong's MBEI one can use \begin{Sinput} R> eset <- expresso(Dilution, normalize.method="invariantset", bg.correct=FALSE, pmcorrect.method="pmonly",summary.method="liwong") \end{Sinput} This gives the current $PM$-only default. The reduced model (previous default) can be obtained using \verb+pmcorrect.method="subtractmm"+. \subsubsection{C implementation of RMA} One of the quickest ways to compute expression using the \Rpackage{affy} package is to use the \Rfunction{rma} function. We have found that this method allows a user to compute the RMA expression measure in a matter of minutes for datasets that may have taken hours in previous versions of \Rpackage{affy}. The function serves as an interface to a hard coded C implementation of the RMA method \citep{iriz:etal:2003}. Generally, the following would be sufficient to compute RMA expression measures: <<>>= eset <- rma(Dilution) @ Currently the \Rfunction{rma} function implements RMA in the following manner \begin{enumerate} \item Probe specific correction of the PM probes using a model based on observed intensity being the sum of signal and noise \item Normalization of corrected PM probes using quantile normalization \citep{bols:etal:2003} \item Calculation of Expression measure using median polish. \end{enumerate} The \Rfunction{rma} function is likely to be improved and extended in the future as the RMA method is fine-tuned. \newpage \section{Quality Control through Data Exploration} \label{qc} For the users convenience we have included the \verb+Dilution+ sample data set: <<>>= Dilution @ This will create the \verb+Dilution+ object of class \Robject{AffyBatch}. \Rfunction{print} (or \Rfunction{show}) will display summary information. These objects represent data from one experiment. The \Robject{AffyBatch} class combines the information of various {\it CEL} files with a common {\it CDF} file. This class is designed to keep information of one experiment. The probe level data is contained in this object. The data in \verb+Dilution+ is a small sample of probe sets from 2 sets of duplicate arrays hybridized with different concentrations of the same RNA. This information is part of the \Robject{AffyBatch} and can be accessed with the \verb+phenoData+ and \verb+pData+ methods: <<>>= phenoData(Dilution) pData(Dilution) @ Several of the functions for plotting summarized probe level data are useful for diagnosing problems with the data. The plotting functions \Rfunction{boxplot} and \Rfunction{hist} have methods for \Robject{AffyBatch} objects. Each of these functions presents side-by-side graphical summaries of intensity information from each array. Important differences in the distribution of intensities are often evident in these plots. The function \Rfunction{MAplot} (applied, for example, to \verb+pm(Dilution)+), offers pairwise graphical comparison of intensity data. The option \verb+pairs+ permits you to chose between all pairwise comparisons (when \verb+TRUE+) or compared to a reference array (the default). These plots can be particularly useful in diagnosing problems in replicate sets of arrays. The function argument \verb+plot.method+ can be used to create a MAplot using a smoothScatter, rather than the default method which is to draw every point. \begin{figure}[htbp] \begin{center} <>= data(Dilution) MAplot(Dilution,pairs=TRUE,plot.method="smoothScatter") @ \end{center} \caption{Pairwise MA plots} \end{figure} \subsection{Accessing $PM$ and $MM$ Data} The $PM$ and $MM$ intensities and corresponding {\it affyID} can be accessed with the \Rfunction{pm}, \Rfunction{mm}, and \Rfunction{probeNames} methods. These will be matrices with rows representing probe pairs and columns representing arrays. The gene name associated with the probe pair in row $i$ can be found in the $i$th entry of the vector returned by \Rfunction{probeNames}. <<>>= Index <- c(1,2,3,100,1000,2000) ##6 arbitrary probe positions pm(Dilution)[Index,] mm(Dilution)[Index,] probeNames(Dilution)[Index] @ \verb+Index+ contains six arbitrary probe positions. Notice that the column names of $PM$ and $MM$ matrices are the sample names and the row names are the {\it affyID}, e.g. \verb+1001_at+ and \verb+1000_at+ together with the probe number (related to position in the target sequence). <<>>= sampleNames(Dilution) @ {\bf Quick example:} To see what percentage of the $MM$ are larger than the $PM$ simply type <<>>= mean(mm(Dilution)>pm(Dilution)) @ The \Rfunction{pm} and \Rfunction{mm} functions can be used to extract specific probe set intensities. <<>>= gn <- geneNames(Dilution) pm(Dilution, gn[100]) @ The method \Rfunction{geneNames} extracts the unique {\it affyID}s. Also notice that the 100th probe set is different from the 100th probe! The 100th probe is not part of the the 100th probe set. The methods \Rfunction{boxplot}, \Rfunction{hist}, and \Rfunction{image} are useful for quality control. Figure \ref{f3} shows kernel density estimates (rather than histograms) of $PM$ intensities for the 1st and 2nd array of the \verb+Dilution+ also included in the package. \subsection{Histograms, Images, and Boxplots} \begin{figure}[htbp] \begin{center} <>= hist(Dilution[,1:2]) ##PM histogram of arrays 1 and 2 @ \caption{\label{f3} Histogram of $PM$ intensities for 1st and 2nd array} \end{center} \end{figure} As seen in the previous example, the sub-setting method \verb+[+ can be used to extract specific arrays. {\bf NOTE: Sub-setting is different in this version. One can no longer subset by gene. We can only define subsets by one dimension: the columns, i.e. the arrays. Because the \verb+Cel+ class is no longer available \verb+[[+ is no longer available.} %]] The method \verb+image()+ can be used to detect spatial artifacts. By default we look at log transformed intensities. This can be changed through the \verb+transfo+ argument. <>= par(mfrow=c(2,2)) image(Dilution) @ \begin{figure}[htbp] \begin{center} \includegraphics{image} \caption{\label{f1} Image of the log intensities.} \end{center} \end{figure} These images are quite useful for quality control. We recommend examining these images as a first step in data exploration. The method \Rfunction{boxplot} can be used to show $PM$, $MM$ or both intensities. \begin{figure}[htbp] \begin{center} <>= par(mfrow=c(1,1)) boxplot(Dilution, col=c(2,3,4)) @ \caption{\label{f4}Boxplot of arrays in Dilution data.} \end{center} \end{figure} As discussed in the next section this plot shows that we need to normalize these arrays. \subsection{RNA degradation plots} The functions \Rfunction{AffyRNAdeg}, \Rfunction{summaryAffyRNAdeg}, and \Rfunction{plotAffyRNAdeg} aid in assessment of RNA quality. Individual probes in a probeset are ordered by location relative to the $5'$ end of the targeted RNA molecule.\cite{affy4} Since RNA degradation typically starts from the $5'$ end of the molecule, we would expect probe intensities to be systematically lowered at that end of a probeset when compared to the $3'$ end. On each chip, probe intensities are averaged by location in probeset, with the average taken over probesets. The function \Rfunction{plotAffyRNAdeg} produces a side-by-side plots of these means, making it easy to notice any $5'$ to $3'$ trend. The function \Rfunction{summaryAffyRNAdeg} produces a single summary statistic for each array in the batch, offering a convenient measure of the severity of degradation and significance level. For an example <<>>= deg <- AffyRNAdeg(Dilution) names(deg) @ does the degradation analysis and returns a list with various components. A summary can be obtained using <<>>= summaryAffyRNAdeg(deg) @ Finally a plot can be created using \Rfunction{plotAffyRNAdeg}, see Figure \ref{f4.3}. \begin{figure}[htbp] \begin{center} <>= plotAffyRNAdeg(deg) @ \caption{\label{f4.3} Side-by-side plot produced by plotAffyRNAdeg.} \end{center} \end{figure} \newpage \section{Normalization} \label{s1.4} Various researchers have pointed out the need for normalization of Affymetrix arrays. See for example \cite{bols:etal:2003}. The method \verb+normalize+ lets one normalize at the probe level <<>>= Dilution.normalized <- normalize(Dilution) @ For an extended example on normalization please refer to the vignette in the affydata package. \section{Classes} \label{classes} \verb+AffyBatch+ is the main class in this package. There are three other auxiliary classes that we also describe in this Section. \subsection{AffyBatch} The AffyBatch class has slots to keep all the probe level information for a batch of {\it Cel} files, which usually represent an experiment. It also stores phenotypic and MIAME information as does the \verb+ExpressionSet+ class in the Biobase package (the base package for BioConductor). In fact, \verb+AffyBatch+ extends \verb+ExpressionSet+. The expression matrix in \verb+AffyBatch+ has columns representing the intensities read from the different arrays. The rows represent the {\it cel} intensities for all position on the array. The cel intensity with physical coordinates\footnote{Note that in the {\it .CEL} files the indexing starts at zero while it starts at 1 in the package (as indexing starts at 1 in {\bf R}).} $(x,y)$ will be in row \[i = x + \mathtt{nrow} \times (y - 1)\]. The \verb+ncol+ and \verb+nrow+ slots contain the physical rows of the array. Notice that this is different from the dimensions of the expression matrix. The number of row of the expression matrix is equal to \verb+ncol+$\times$\verb+nrow+. We advice the use of the functions \verb+xy2indices+ and \verb+indices2xy+ to shuttle from X/Y coordinates to indices. For compatibility with previous versions the accessor method \verb+intensity+ exists for obtaining the expression matrix. The \verb+cdfName+ slot contains the necessary information for the package to find the locations of the probes for each probe set. See Section \ref{sec:probesloc} for more on this. \subsection{ProbeSet} The \verb+ProbeSet+ class holds the information of all the probes related to an {\it affyID}. The components are \verb+pm+ and \verb+mm+. The method \verb+probeset+ extracts probe sets from \verb+AffyBatch+ objects. It takes as arguments an \verb+AffyBatch+ object and a vector of {\it affyIDs} and returns a list of objects of class \verb+ProbeSet+ <<>>= gn <- featureNames(Dilution) ps <- probeset(Dilution, gn[1:2]) #this is what i should be using: ps show(ps[[1]]) @ The \verb+pm+ and \verb+mm+ methods can be used to extract these matrices (see below). This function is general in the way it defines a probe set. The default is to use the definition of a probe set given by Affymetrix in the CDF file. However, the user can define arbitrary probe sets. The argument \verb+locations+ lets the user decide the row numbers in the \verb+intensity+ that define a probe set. For example, if we are interested in redefining the \verb+AB000114_at+ and \verb+AB000115_at+ probe sets, we could do the following: First, define the locations of the $PM$ and $MM$ on the array of the \verb+1000_at+ and \verb+1001_at+ probe sets <<>>= mylocation <- list("1000_at"=cbind(pm=c(1,2,3),mm=c(4,5,6)), "1001_at"=cbind(pm=c(4,5,6),mm=c(1,2,3))) @ The first column of the matrix defines the location of the $PM$s and the second column the $MM$s. Now we are ready to extract the \verb+ProbSet+s using the \verb+probeset+ function: <<>>= ps <- probeset(Dilution, genenames=c("1000_at","1001_at"), locations=mylocation) @ Now, \verb+ps+ is list of \verb+ProbeSet+s. We can see the $PM$s and $MM$s of each component using the \verb+pm+ and \verb+mm+ accessor methods. <<>>= pm(ps[[1]]) mm(ps[[1]]) pm(ps[[2]]) mm(ps[[2]]) @ This can be useful in situations where the user wants to determine if leaving out certain probes improves performance at the expression level. It can also be useful to combine probes from different human chips, for example by considering only probes common to both arrays. Users can also define their own environment for probe set location mapping. More on this in Section \ref{sec:probesloc}. An example of a \verb+ProbeSet+ is included in the package. A spike-in data set is included in the package in the form of a list of \verb+ProbeSet+s. The help file describes the data set. Figure \ref{f5.3} uses this data set to demonstrate that the $MM$ also detect transcript signal. \begin{figure}[htbp] \begin{center} <>= data(SpikeIn) ##SpikeIn is a ProbeSets pms <- pm(SpikeIn) mms <- mm(SpikeIn) ##pms follow concentration par(mfrow=c(1,2)) concentrations <- matrix(as.numeric(sampleNames(SpikeIn)),20,12,byrow=TRUE) matplot(concentrations,pms,log="xy",main="PM",ylim=c(30,20000)) lines(concentrations[1,],apply(pms,2,mean),lwd=3) ##so do mms matplot(concentrations,mms,log="xy",main="MM",ylim=c(30,20000)) lines(concentrations[1,],apply(mms,2,mean),lwd=3) @ \caption{\label{f5.3}PM and MM intensities plotted against SpikeIn concentration} \end{center} \end{figure} \section{Location to ProbeSet Mapping} \label{sec:probesloc} On Affymetrix GeneChip arrays, several probes are used to represent genes in the form of probe sets. From a {\it CEL} file we get for each physical location, or cel, (defined by $x$ and $y$ coordinates) an intensity. The {\it CEL} file also contains the name of the {\it CDF} file needed for the location-probe-set mapping. The {\it CDF} files store the probe set related to each location on the array. The computation of a summary expression values from the probe intensities requires a fast way to map an {\it affyid} to corresponding probes. We store this mapping information in {\bf R} environments\footnote{Please refer to the {\bf R} documentation to know more about environments.}. They only contain a part of the information that can be found in the {\it CDF} files. The {\it cdfenvs} are sufficient to perform the numerical processing methods included in the package. For each {\it CDF} file there is package, available from \url{http://bioconductor.org/help/bioc-views/release/data/annotation/}, that contains exactly one of these environments. The {\it cdfenvs} we store the $x$ and $y$ coordinates as one number (see above). In instances of {\it AffyBatch}, the {\it cdfName} slot gives the name of the appropriate {\it CDF} file for arrays represented in the \verb+intensity+ slot. The functions \verb+read.celfile+, \verb+read.affybatch+, and \verb+ReadAffy+ extract the {\it CDF} filename from the {\it CEL} files being read. Each {\it CDF} file corresponds to exactly one environment. The function \verb+cleancdfname+ converts the Affymetrix given {\it CDF} name to a BioConductor environment and annotation name. Here are two examples: These give environment names: <<>>= cat("HG_U95Av2 is",cleancdfname("HG_U95Av2"),"\n") cat("HG-133A is",cleancdfname("HG-133A"),"\n") @ This gives annotation name: <<>>= cat("HG_U95Av2 is",cleancdfname("HG_U95Av2",addcdf=FALSE),"\n") @ An environment representing the corner of an Hu6800 array is available with the package. In the following, we load the environment, look at the names for the first 5 objects defined in the environment, and finally look at the first object in the environment: <<>>= data(cdfenv.example) ls(cdfenv.example)[1:5] get(ls(cdfenv.example)[1],cdfenv.example) @ The package needs to know what locations correspond to which probe sets. The \verb+cdfName+ slot contains the necessary information to find the environment with this location information. The method \verb+getCdfInfo+ takes as an argument an \verb+AffyBatch+ and returns the necessary environment. If \verb+x+ is an \verb+AffyBatch+, this function will look for an environment with name \verb+cleancdfname(x@cdfName)+. <<>>= print(Dilution@cdfName) myenv <- getCdfInfo(Dilution) ls(myenv)[1:5] @ By default we search for the environment first in the global environment, then in a package named \verb+cleancdfname(x@cdfName)+. Various methods exist to obtain locations of probes as demonstrated in the following examples: <<>>= Index <- pmindex(Dilution) names(Index)[1:2] Index[1:2] @ \verb+pmindex+ returns a list with probe set names as names and locations in the components. We can also get specific probe sets: <<>>= pmindex(Dilution, genenames=c("1000_at","1001_at")) @ The locations are ordered from 5' to 3' on the target transcript. The function \verb+mmindex+ performs in a similar way: <<>>= mmindex(Dilution, genenames=c("1000_at","1001_at")) @ They both use the method \verb+indexProbes+ <<>>= indexProbes(Dilution, which="pm")[1] indexProbes(Dilution, which="mm")[1] indexProbes(Dilution, which="both")[1] @ The \verb+which="both"+ options returns the location of the $PM$s followed by the $MM$s. \section{Configuring the package options} \label{configure.options} Package-wide options can be configured, as shown below through examples. \begin{itemize} \item Getting the names for the options: <<>>= opt <- getOption("BioC") affy.opt <- opt$affy print(names(affy.opt)) @ %$ \item Default processing methods: <<>>= opt <- getOption("BioC") affy.opt <- opt$affy affy.opt$normalize.method <- "constant" opt$affy <- affy.opt options(BioC=opt) @ %$ \item Compression of files: if you are always compressing your CEL files, you might find annoying to specify it each time you call a reading function. It can be specified once for all in the options. <<>>= opt <- getOption("BioC") affy.opt <- opt$affy affy.opt$compress.cel <- TRUE opt$affy <- affy.opt options(BioC=opt) @ %$ \item Priority rule for the use of a cdf environment: The option {\it probesloc} is a list. Each element of the list is itself a list with two elements {\it what} and {\it where}. When looking for the information related to the locations of the probes on the array, the elements in the list will be looked at sequentially. The first one leading to the information is used (an error message is returned if none permits to find the information). The element {\it what} can be one of {\it package}, {\it environment}. \end{itemize} \section{Where can I get more information?} \label{moreinfo} There are several other vignettes addressing more specialised topics related to the {\tt affy} package. \begin{itemize} \item {\bf affy: Custom Processing Methods (HowTo)}: A description of how to use custom preprocessing methods with the package. This document gives examples of how you might write your own preprocessing method and use it with the package. \item {\bf affy: Built-in Processing Methods}: A document giving fuller descriptions of each of the preprocessing methods that are available within the {\tt affy} package. \item {\bf affy: Import Methods (HowTo)}: A discussion of the data structures used and how you might import non standard data into the package. \item {\bf affy: Loading Affymetrix Data (HowTo)}: A quick guide to loading Affymetrix data into R. \item {\bf affy: Automatic downloading of cdfenvs (HowTo)}: How you can configure the automatic downloading of the appropriate {\it cdfenv} for your analysis. \end{itemize} \appendix \section{Previous Release Notes} \subsection{Changes in versions 1.6.x} There were very few changes. \begin{itemize} \item The function \verb+MAplot+ has been added. It works on instances of AffyBatch. You can decide if you want to make all pairwise MA plots or compare to a reference array using the pairs argument. \item Minor bugs fixed in the parsers. \item The path of celfiles is now removed by ReadAffy. \end{itemize} \subsection{Changes in versions 1.5.x} There are some minor differences in what you can do but little functionality has disappeared. Memory efficiency and speed have improved. \begin{itemize} \item The widgets used by ReadAffy have changed. \item The path of celfiles is now removed by ReadAffy. \end{itemize} \subsection{Changes in versions 1.4.x} There are some minor differences in what you can do but little functionality has disappeared. Memory efficiency and speed have improved. \begin{itemize} \item For instances of \verb+AffyBatch+ the subsetting has changed. For consistency with \verb+exprSets+ one can only subset by the second dimension. So to obtain the first array, \verb+abatch[1]+ and \verb+abatch[1,]+ will give warnings (errors in the next release). The correct code is \verb+abatch[,1]+. \item mas5calls is now faster and reproduces Affymetrix's official version much better. \item If you use \verb+pm+ and \verb+mm+ to get the entire set of probes, e.g. by typing \verb+pm(abatch)+ then the method will be, on average, about 2-3 times faster than in version 1.3. \end{itemize} \bibliographystyle{plainnat} \bibliography{affy} \end{document} affy/inst/doc/affy.pdf0000644000175200017520000346557414710267240015716 0ustar00biocbuildbiocbuild%PDF-1.5 % 128 0 obj << /Length 1106 /Filter /FlateDecode >> stream xXKo6WV Xq^؛lSl`mʒ!ɋn}q/$9!sY&<:KTH䲤(*sòcݵi&YA;?ʤvsTr29' @Av׻69A7ݍY}5- r醦vzm 丸նNfůg]3K4T$:*r~G=e&PQ)pC 2B%tiHFF7 Pj`ptNE!p Ovp2?T%,JK"q#W7׶]M'a^8n3N ?QwcgI<Ǻ]O39OKmݶp ֯ū ʎgccۻa@46;Υk>̡S(TJQ'w2 "!/ xW:%'j2CD ?? 8jBWX.Y .>(hNWH K^ݳ M~T9Uy1̀/OnO] endstream endobj 158 0 obj << /Length 2279 /Filter /FlateDecode >> stream xYKs6W-*7-Ryf]oSى Knm$G?ZN*MR>򇇫ot#ϔ&ɸiGv"cw2c݅bu^;3hX |.Ԋ+6;(b.D1o! Z&+"x_`*Ʒ;?Bs&tPow f* 3f)GIm3pc1_|,c.SA?5I\JFx:6z3lou4.!Qkö́erMMAjU/I]h,jmkiw]B.NÓSk8)ȭ l ᴋzP3;:U] r8X$j8h MŹݏ0 &_>eЅFqz="LEMȴ$&2a*`m4JޏdhWZ`WTSivЭxqیF\fbyv?ofD$\ZxęȓM!HL`H\OB8 zx7ό=~tW~'m n <+:O dט k( И#sZ&)bt-Z}gXVYj ;5HBx g =_uec_˗pSi<EXcqMcLa1+`K#_qf!=Xn%qœ=KzqT . v)Jݹ-걄$DrŵP -[B〪KiMS 8z? 5}W.DXA[(WpCҀp: U!jHT8T8&:9UCQuT/wV ,/Ό[+L¿cb ]k׫) LV"1&vW-pz(AwM@bй%Cߩo9|hg-&U~DNS*$qR;0v4iNC*Lg[9#=ֽ &H +Wn"ӧ aCO$Ee'4) ȯ:ph-jXz;j3P:kZŧ[@%wP衅q݋l[$|D-ow-v[)0 ƎL\%·N%"ǖW_iqCȪ܉P?Bk͘گ7xAt \40>4́  yRN]kjN@*/7?|:"\ ,"qPn-o ,aa}x#jֳ5u-hpw` vgeA*t4kw[)pݒ2HMk5~J$F]+Hj=hTC=]bWP zꉜ}x0't{()ɇb kk\yxF?*djܶ~Cи_FڝHʼn9}xz%viwkN QAo~Sj{# H/Ds7s(8죝w|bsZ㺶r܆} ]&!NRxp,5dOZ>G}Z;E$yE).&/R(NF"!K`Yy>Vy`o@;H~[ǷZr0(ƆQ/6@gGz+v~Xɍ4a:]Z<$3"Ve2T H+:.4v*g9{ oEDyrIJ_(Y36Es-XH ͯ7?\3&61dx \|e> stream xZ[6~&@!`Hl&n2ǙwdlvZME~s( -$IDAOh#Wh/yDF(AǁR"(ƥ(BtIa\kQd;A 5S=Ѓ^RЋ UXŒYc< :B)@N8^w=3zk0&TA 6 z!`BjEEށ%oju"lkrנqEm ̼-#  %x$$[`UDabTf#"H!R#,Z#1:)) A5 Y(A吝bBP-$LDʆ̴c-Kف4aP7AYO0TA0 fQC 5XF`4X԰#@-VZƋ"!b8D40r;AĆD#x@ȓX -R*XYL_ Q}%ʧ|k~ldo?eQ2I6_6:-6i{Z3n^]rJ{& -v+'nhi@jVTCEe9nb !"WYT4͆)J^,սҮ]s$ 6LGXnXu&6ѵMOZ1*jZ#u]յ]D/ YE_6><CNG]fq0;>^d`qٔu&)pSmYjL&&k[ػ8U]\o-Vr㪹̏ܽ]mouXA#|ەӳn}Gԯ2͘l$7[ލ>tjlͼ#xxkiX|e&bfphDeЯg4nf<,wO|gk]6iƙ#mgkw0 f{4fl`'CR _oƢ|;'t1.O0sPϫhHcJ 1ótzt:@C}1Բw˞d)*:%zQG%z*SJT E}j2eP>fY:/ʗLVF B[EZܬ6 T ʑ0V&EPa/[\ 4 !סs^*ʻBb2E?ށ2{BFda9 G LuRVvp_@p[m9x _†c{\C  >TfdHb, vcz1 HgvkӻG,,D#`1eTՀ=82K 31 }{7e+yҫ6bG 4)>P|{A"-^=Q҉3(:KPIx PR!20༚%zNdc5>B(x~+E7QlVtZLo;gƂ_ k돘icj3eSVY]Cth.,J /ΪB(ߏۅv-ewk)h-RͣRͣScRcRcRmcRds&=gRdRdDǦZ&z6ѳ+zj'Q%*( &qLaU^Y'WHg9;rlT za(=8+G84B6·Z` n0!FJ{UM;W+&~4/ WG_D;N$$`[m=C ?jA,?Z€OG >Ha{4X"xa Rm7 "kj gPLGWCEjBp6|pex4 9{d6x1bDGuHΕY_HT 4$2Wq񏊎H}?)Rơ56GahkЗg:G_w-L@IO+3AFWM|''5ʳ^QY~Tjzq;ZT]ǖu9 b: .<g, endstream endobj 185 0 obj << /Length 2309 /Filter /FlateDecode >> stream xڕXKs6ϯpUb(zaSI&=L\ftmiG-;ί_ V[N^Z|I>|ovsVKnʚe7EU*~sO?vDu)Ud~OskGr(7mV&;Q+7Y`J:ՃjhH7w0Wcg0y06JV"4́&HGnTv\ MAKQ O;H?NV;7+1,Ge)ӵ@L~6Ɯ9j28cњ$F A\еpl0C'4lES. W ,)_,S>J^q9>V9prR&QaIyYdi 7Z5glQR/r|^yH6%>a!ʲ8 `5R~]Z5<7\y[G胚1ۃY t%`o*"}4\v^؃_eN[plkOX/3[%re@ < 39M8^K{wch6,G sg@4G SC3ڿXH*k7IR^MkU% ˸h;}^: ӲNޓwaYS1΋4Qt4H&?t=8h †a`YH} )LgJ{Tg;3ł{XNju1YppJ͊hO7r ԏN7g2TQ>aŎGLfP=cD#RNTAk[lR(gU-#'gDhCadZ|l#!%+ Fm7yC䕱+Oƚ8aT2ɍhL3< V5n0Bޥd}⟴j[:J sɜ.a98k4"ƹxIuO#D0-5[*i`2g qM>|L E$yݣ;  5΀itf3VC2)~,GLz>>C Y*kmaܓ;ҙ@cC`H'G^d5+\Bߵfj/wjpp3񃆾6,ܖGbƣwQveC-:j ^H1 `7!{nu~@v_-WؾC4^Qx7Au\O{\iy8}nKQBa~c YJ = A6Y 6 2)k=za.7CGYcm:|~wE:o1-d5Gԁ&^?bnFE-!JNWX3pHxKpx(݊ku#.x^ tC!8+I{S&ʹc## T}D-qoH#l{$CWtJ;e"HƐpk_ -;I*;AuR8P& d3oCDvj ާΚX8dO`40–aLFF^Y=¹;3EΝkv7x8MO%F[n\/_ gCI&J` 8v'vO{<]9lnnغ>j04nl-i{&#UuWB.ZF`ll%& 7 =L]fe3ۂ~Wq q<Dlj!` .,.y|7\-ëhKi0C7b&!5Kzqg}+S0~^#zm`Ij8fЈu?0zgMCӠLOTsaRe[a$ߺ!d@)F/+,O].^CSWv>lc-fW #qi4fE*CPwҊԠH `OoM endstream endobj 199 0 obj << /Length 2156 /Filter /FlateDecode >> stream xڕXێF}P&Mr1Eg ‘ZwxQx뷪- '/bTiyd(6I2nLTB92i(H]drtȴv{. 26p* D! ^a4>a#ᢣ視cTsiVXjw\oyC4YjI90H 4u;B)DIe-\0ϗv]^ jl 0@mY8 |dž & F=R܄?/pU"ΖqN =>yE=Rt,:wv:u4GZP',j$cO^d~5Kf$P3{ؔe<#x6)mԄ-i_iAgd8Ώo-BNǣ[0j0Ï ct×;55f"UmvQkŲpϯxf!¶fj;_p(̧0V0}(ܝcҴžmS@QG? 鼋i>GN yQw4pK衚k))Dub.:FgEp}O3 ~wE s!CP8*z[a6ki-X/ey)?\,RU cs{jhT~UR,T,;p RɡU'm2UPRe/#^cgfN.5f"`H%5߉-b J^S9؃2g#35L t]=gV # //[#>Igq0S[呂4FCqvX€[1{ILw:0QGSku2~bˊ_۷_-g D!jF>J=LtQz9G]!܀N]Ҁwe(slXsIc]' kbP1r7  33:d x$j=Dg pwYOf@D4/~|-$ ]qG H\k{eHNa?9PxW+dמm۵r&lSU!{:P bpxyJV^R$km*!yg\qKFALaJ臶vrwkmyʉ+H5m%p2d- y{Krۛo~xJ ~W7?"7%!͓WA[O7oݟ]Cud0f Z_ 5n2] $ )ų9ͅS%GUd> Sn_q{>"}N|$9)DJ0/3EU+> stream xuVo6~_a/$RҰh:Hb-ѶYD*J#w}p Y!DXod(2XN;kee~g.,Byhs $ᒏP@4:gí#e1_D\m<и`"|nե[2[nE^W^SwB2X,y _I7+mʾ&`t^ j K 7H݁ J 3bzjk5 X;ҥ2Q~p!5M}j(mד Ow7bn, `{ ^_ K,oZ걪 ޴`DNG%hgr:8sǦoX+ E0 |:#iC .X9nEPifiv&jXThUs2uQI}m5{/|Dx9!(|о0~]4A4Mv¶k7^tew8@~eUר xJ3D}MmJY3}G7^Xxw22ڊGQpUEAO|^B6Pc@v̸`]fh|dfJ:Cݞ.>aEZ3J"D*s C:NYpgIhOH۱$ݪ h@mg݌׮=MbD> stream xڕVK6QbFHʡŶ E(ǁiKX=IPnQx8~|EĴ\Eb<rt$%w%vN_mn~Z7^fH8gRbݯUBj[Sk&H5qA^dwEw,ZB}f}Qm?éIj&U^:{߿掉փПa$K1tGۼА`{2J$8s=}nqŃ7[rg1IJ&ᒻr4Z$Z,)pVShe[_4@G wn#>  S}2@sS{+0Rt%2!oc %8AU֍͝mpζ Ap?G[ӛ%b(")w}Ll΄?0`[ /HNBDVC4D;-j_|cL=o"A}=#lfδC' nqIB5.ڙuSiMg %w[ktܖG>t@TMk¥:Z.$WХAinj۹& 0|RmshMpd.M\Pe!ㄉtLO~YLkt8J q(;ouPN-kF2|6=v|#3W^-8׶7/H3N;v[C=ܵhj ɉPi`raifP /9SDPV[j 鋉ំ,Ftsӑ|y$Uf"i@u* r*z¢ҍ)Ȭ;,o}t :e'wT['ITi+ aYT:m.-z)a4K+GYKg ;[0@Bz>a6Ki l?au1C>eIji6xS΢8Y@\J-7} coN-wG$\- flEs^v`p+SKj/cY1N#[|DX\& kq\lGm\|,QQC״j*͚C]|ňݣ ?kS`늿W;oqVc=i0s,M/4GIEkߜj`/bo> >> stream xo}܇nӇVmښ)@@]zLH#4g'IWHD3d"CbDmNР4č6hT>Bq/Gu B]$))iϻ3{fvw:x ĉ=:|[U|%T* w¦^:SBz{?ZapaٵK*6O&+o§o_5W]+񘊂0xasonֳbr֥'>M|+!ݞmaIs[U_[U*|NEwE w|*@sAۧh~b(lqAX {W*>INg57r|jYΪȪ ^lx`Jk.@#t}t$*MY~v}|N{o[囗zw<%Z[-;Y{=!|мdZe/^GGD% 7om,׃hcōrbA8)JpL]VGeZO˗>]V;GѠ=HVꭎ=[p~w$(/K=;÷f/10g%Dq$teNaaO.I/h0SͽW^XQ"/)̯5I#  毅s-e߲i[ocǢG6= jo5_z9ۤ*4>/:}ƫRk'>rZ:zbhcX`)Cs7/Y~♵ZkOEYڡs9w֕+sYFhw}3Jו RT:wD/߉?W[lzV(r#ѓr'2/˼+Mڽ3Z]gwIi|I˒ X TwpCuzq՗Ve|UE=L떯ɶվk7_WHzP~òqe-\~3/-F%"Fv޳ ; Еҟo>nk=y| t3K3g|jnӘK̺R‘YVneom4*|b[2oR_[!m,K ÎHݨ~hӴdϟ2`gRw'UVjwL_Ud䙽eo-DGwhK={Vf<2#%'hWuI?y[?:,oW}|q]E{Ⱦoxzm}K^ a'#6nXZ|+zՙ돬33җ{[un:I^~*zo:""RH MKUTQऊbYYA^n޾q׷n^?"Q?>HqDYmMJG~t4CmiGgtڵEC>it$oY|Mz]j>#_RG:K+3+__QۧUOmK$/D[{swP/*X {z*N2"+3%ߩw]g%z߇%:}<[ڋ>YZϾyeʌ+ٹ@~O.IOo]?:|<*5SkΗ4&u.5KK7Ԟyrt< \=>#鍲 Dd[8[\U+򮲆m5|/v~EhsZE"rgerڹ?٩;Y }GuEHg/d8ݪÛ:FP{3$jH۬pӛLwzlFvG:Gѡ>IHm;-YLpߟn׺\}co,۪ՂS<(/X+lE|KV [(ש}P+1cO5}!y@-QY:S{S5e\>윙^/.N9\.IO\f_\G:ґ7Gtq;Hf$ٶƇ]xWW.MwGr1v-M:eYE=t^l;"wʬ̚]+k,"y 9ru>eq_+=Y؋cT97#_G$m]S7o_,R𹶵dtV8h25 S܎#'K)Iss7ghxiVշnz<BeYCҭg| ^0PwJfzDDDff,_73qqޡ؉:/v w~q6?&>y"K)>ٯz^OK]Viڋo(]Nw%fUְâ#_rZ%^'\EʾNݞܵ{=.⑕ȊSz!Sp0[O+ۭW:>öڧ}n۷BQ3=[/2r8cv%!ϣ>enIOǽRz |mOl\xuO>:Sүk^z\rC[w^DrD)÷<4|voGz"" $@dE5|!}yx{a4P}5:zg;ECz[0  <{XbmP_DKL}l=ߓgW0`>ͩ,M+koq[_v<2lUqH0 aIxϳZ#iOzWA4hVg~yު-qk5{ף-m$K{} yBkstP7=$w롭7*^gevkwP5)yoO-m+"KLZ}A ZZ#ec%4lIW]OtV"[__&d3I#}S ?[3V{_6Uzo@ᄄs(ozv}/zL'{ts&&3!}˘9dl$͊Ȭ3cҫ,3R̲峧FY l-^4ӟ?u'~|[ z憍ej4tOd;^zMѥOvǫi.vgGkoipV?\ڱn},[Vo.t}"rG~eѪc(:M{Ɨ˱A\^4eЪ`@&{E+C-3٣f.IWd{:0d3euLiOI#` avPRu?+ sLZA&I[@(N>Q̶A{$f@<RE%ݗLL/ mVB:n~!ebJz`N=TC@&]^Y6^G'՞4 @C4 @C4 @C46Ȥ!VIC@2u9k,>Z@kh4{Y˙A#tꝊYtm哧)]K& n@@bvиֺzm]QΞX[ƕ@14 1Wdd6^X# v@04 `DVgyPVe4JQ Gh4;P/(ϵ֮O=mY X!5oyuۧU$"/@h(U2yMgV-PQp=&tIy@1cc6gDp Totaab*An ԝ9L;p>Zap] E P E P5S SJV\׿fw̚ܬ@9Zeˍ+^9b&&bJ٢Gٿ׺JSƧbu*  ٞ\ֿ>9ҧ/{VPk]Vsɓ3 51^O u/mЖ @O+7kO=u< A h>+d~ z*~#pVIzj\we%PluYV̕'OAV[:_+45omVm`4M`>pjʲa/&=*& "lW0AU W ,}! }gD)kMse3*uV|/ o͘X=UvrVL ԛyoM]{v&1w5ߕ&upwֿ ^ݵ׮{+X1W0_$ _v6iY/e:kfYd>_/pKzW_אnhqjsW"Ŕ}Le r7b~TqUO4i7L Vd5dG{\ /Xߪ/~OtӔ/p^=z?|duS&F|)!OM\랿#sÎIA1W0M]VG\ CN=GxE"(}׷)5^IJS4)o_lAy@RMx ʃU [Y]c[4K veM^]Nv`ZWRh}?)9HVe GUd J*ہfۄ{]3x?ϟ'/)*aa\A׻7 |zӤYkoO6P*ڜ}`S̙!ӈէ=zLkҵR8Ml} TE[z.ǡ&O3eP|IJ Ur TWCîIƹVf+})9?V4yȥGu_`&a9߿>'{K/}YYLC|@J=}iiiK;-=W8Is110@;3Jp,2: @C4T#Asa>q+cshy;r4{\pvwGP\3AxiKqZCa>ic?9 =/H1r Okehu^ø @xNX>q9^>IjAg@44 @#hsZEAF}Ah.!hA4&ieh`e(sO_ An "ʽ5Oxh84_q-ﳉ__bR%io*X'><*&>?({]MIx\}6$g]xmXo'/t&<\o枰laK04Yi7!fE@=L`aԕkzR=>χP?k8'+yr3})uzvcU8n>/+~+D@>43~]䐦Kk׽i_;WM;YSW>ub\A{xwz_Sͪ&EOV)-%ͳE-U" E P E P E P:_spfK :_p,"|8AFPh"kZ'/ e9,zI.K\ᚽ<~[>4 &\(he \^k@r|j8>K6~ A$@R#P E P.A蓒@1 Z;T_2>kbWni^F3rZ5O[Zoeow'iZ4h[ CC:C1s9iJ+Mm$~|vLPW*ڜ2ΥG5f;țG׺<[mWvi7>$VP,% I {<‘l"{)5u~G&=ԬˆӗYI@ z}L~Ak0\G'7,>1r>4<\]߻kSםIKEs H*ǡOLZx&*MӤLU~)=v GGoyN1ו{k.':J}m8̛ܼ˙k2\X?X8 vFWi(\~~h\3'yS r!>%C 5@0į_:m:~%Gל0hXpEESÖ?5z<^Iky2?g;My;|zkCRsz9ɘe=dy"/f;ˋΧ& P2Iͪ :g:H \P=5_k\Gܻ"LʥGRLTlҜ w>_vI;/ǡ(>)5^IJKҔٶ$GI@sba͑K ?]a(C_ i\sħww}HDҕ{k./hh8G; C^1=JW0)/01)A׃>K*1}а,Im|GP`= E P E P E P9qSə˓V5qũ.)3|d?cC, >=%^I{hz=>}ff   ME*24B[ Bs*i݁1?5liN߫ \9hV("2o.1L𹶊'}|jPu#P E P::\p<AZ1A>"WJAWT. s4TMAw rw1!B7WJW>ϫ 4k\A3'y؁ts0 8\|fvobs ! @ zX$~ 8a_BL\z]a|2aa_Ҳ" E P E P E PSr@3hsZE !| ܷAW/+Psth&}uts.}_]yis kf&d`<=,?<ްOHF]VGG qɥGu_`\G?LDRN`hy|00@C4 @C4 @C4TAA*֟oou5D|#sR*Գ/!`K h8gso>rp*}XyטjP-kX3ã4Raou=m{}\@#/0M|k˳G2ԍA$]W / Ų&i Z̋ȼ3LX A s 4 @C4ThuY {B.ħ|~.ҋnVkm{0oO%W .U)̱GK stm_=EODb g#h:9y/+tWzN>0YY$> rʯ-`s k=fOAO ̙x=g;Y.=v`ՠN>Wٖ5^34 iCCl+ku1|j+J\^E|zx9@_;gO AAaMviWU-s d+Z9%8u0ۜeZ.u&P"_XW{U]OggiTW`(.mڧN?s`~+R+{SyK/M(3`1j)l԰%y@_Ҵ ( K=Shoƕn@/r%Ao0I]Jx=vfGP _jz/@uM V@0>죏.TW`GK&8@p˱Go9P]j W+S<TWW0uY F^=YB bQ,8\Q#akfAF_ *,Ex@אJ+l's'L @սd#=ٹ9$7kW0iT*|7&qK^&u=)W0~{[JkۿΩW_ _X7X7gusjusuhszibF\Z~28V[}`{MW|޴αnαn몠G@@jpuٳgρܹsg"E/ n8qG\WE}SWq˙huY}r`*kQO =+7>)4z Giǂ+*DQ+l[;| A{ ϯSS>vs9wv'ϘnfYvM\kpu)'ɫfze!>`~7ER#X0ے[p&k|?%C9ƿ {Jnf=muz;r,Ͳr&i?GD Rׁ+@mr3s&~2MctvoǻO@:3ӹ=dfh/w Qŧ4C:]i[e{ @H0&$*O8& 3aS,Shk>)m+uzHz}3\I=h0}?-ͅ<5{]uO<`ĵ2;g̹z?):\9ohh\9;g{v%a'e檳h0r ͼz6x-x2:2GD;*?Z(^1ISpOb?W/1fݯfvħiZz<*$B`xxjMZ!Kesϟ+&""g*{5arPD"ҒkzW)횈̙e=s_>mbeþ&7|y#,чmilӻ~q-l}dX{UCj|O5,Fv`vsfgmP# g07z3glኡ dA"hmNJ Aout#x~ܓ9Mg58@V*#xiW8V{7(="u;8HcHrt <~*k^Z:4OZapʼ̛y _KK; =vpO0X}< =. t! ;Tӣ@&cK SJjϞ={|?;wlx- #"Af,qmk/7"P[:8 z+mA C+^4=sfx@@lٽz 7`vǀ/!!z4 14 iG@I8k4),z@15 C^N P E P>ί{:F _xL;@#`hc"#2;GkTn hq h+ y7Vh ސah/uheut1]z?>3_YF.Ȕ过 4{4D> endstream endobj 224 0 obj << /Length 1818 /Filter /FlateDecode >> stream xڅWY6 ~ϯXQ,KQ4&R/EAckgחixM_lIQ7/^qtspd"D!̋%f+em6[Al?^W鍔"3 oQ$dlmNm]#'GP4({&u`˦:th'&J ZG{Ip+At@سZg}^ rZXU~mb6r4wAl)H~  xcGEXV18Rsˇ\Bw T4y΅'DDg7Ŭ@؆6IBs0ػX7S: 65PFRT/ b~v;L V=L6.PyI‚q\pev )0Y.%Ẻf pTrO<\T$f,RoOAaGYSzP,& pqNPRd0U|<4 HKT唼zq8HK׾Y(RsC'$ta©3u~XE"5 @HȬ{3Lym7A-,/[0r:. ([^H1 ds@{R sA䙞> stream xڥWK6WEbH= @&hɁhX=Qڍ;CRndjyowWqC ")XiBR bq܅_Wk`;i[wK/%8XM#i,JguOYF8YDY h_E*0ӎnCX3-#u`{TюtS( AA{kFoT]J@RJĄq\bBh:GQ~ ]v@rv8'4L!bP" LO "K3w7RZٞPA~.d'a΅Q&d~/pkFE!' ɂ?1xU9װ݅oJu96tz]΀uFN`=[M,ea,Mmq1y;HēB`dݷM'\/;BO=Z d:Z׸7˾";I{Ǐ}Ӻc껬N%- R>If54S\H"o,&H<t4g ȉdQx˲Q,o"B }*͜JmljЙz.ԄB mv~N'SSDK:Ra|B@̧(b"8A,9\ϝ{\[H\ ϱխ?IeV=WH e:UɏJ#pv0!KSy,n~"W>\WP*-L(j\a,O2b9\Y8d:B|IJ0M~jK@AFp(~ ~lb}p*U@= 6\KjqVt+@碏CqA9`2HpS[W["I61()[@Yb9שzС[^^5q]MF \WsQ]s^FGyO H(?h4 )d{+eY1M So\,ݪ@n}Uuw,{,a,e?G#uE@t<;Ty]9@O,8=$| 23_ >CozPSI]ig AM<6Tlnu+/OÛyO(ёDyg:u2'Fo~q[b]ְNh 9A8'2B7k,#~u)'|ЇZuk̐_ai+;xvk NS #bè @ccޜz;_5GPL"'}<έҕ /<М0~ry]0FZ:sV[o_o. endstream endobj 242 0 obj << /Length 1062 /Filter /FlateDecode >> stream xڍVK6WC%Ec$AH ˲FWo\wC+B.b<$3g1L?jpo*cSθ;%\XƸ)6S=>S>,~y"SggB 6קJM:+ZO؝_zn?IBb@!$$SlU5fͦwtPSo˺ծMB~ euasVYA6IU,zS~d¥J2:}Z,wG]idsxTfD7^^,CHsDЌ5 r cX`׼ESNNA6O3}|OP5Vs(8۾,4>*g͵pXoYt&M?R endstream endobj 233 0 obj << /Type /XObject /Subtype /Image /Width 1871 /Height 1054 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 244 0 R /Length 26992 /Filter /FlateDecode >> stream xݯga;GE ,Y\ە9BZ 2zXN !KŅ4bE6!nDM DAv=̜gygH39w^ޝwqx߷k ؋ [ڥO~Yu[޿}Y 0sh{ŗg%\gR"V co3`s%̅/ڞ'.b/b KW5nKﴃg`A޽xos{歔ܗn @{[we2uw ]k׷^|]ط߹u/l2~]ا.=`Mڮcky{} F˰w׽V{{^WW{^{^W@{^W@{^^W{@{^W{^W{^{^WW{^xc[!f=Y?VH^aw{.Pdu{^uH{;b++bw{^W@{^3b+9{G!lf+.˅݋\bwoYE|;z0 ?r-TϬRBuM#@cf~2Ϊl3> 5©gWXpLg5tz O,;g<2?Dcf9u W<,=h}b+b+b+b/+b/+b+b+b+?OY?͆n닽:yt3;x߁o抽/ܺ3۽g/^g|83U{1j3i]8=|(Xؘxݹ?jɺvXWfU]U8 lyʪ#+b+b+b b b+b+b b+&n 0FK0F.|h®7Onż`[E3 ?ɘYus뎽7N܂#bqJۘ _󑮗|Fu&w}] _=:5b޺/kw6VXWMU!c8\'d< b+6f%]w[=K7tS#[$ƓU>o\0q80> 8y[a]MeތŽSߒb+b+b+b/+b/+b+b+b+b/ b+b+b+Kτ2ĝ׈RҬGTW'ػػT8C_o(}V('b/+b+b+b+b+b+b+b+b+b+b [{u+_}Yb|bS/3m5unG>2~%ތP/^ yR'NXh& ^XW{^W{^@{^@{^@{^@{^W{^W{^^W{^{^W@{^W@{^^w|PhYow}dO>~h]&]׾ e{oҺ6ІK8f|dػ`Mԥgֽa}Kֽ b+ mcG+w.?r{5iVs_u/z]د޷߹re`1!W{C K'{wEݮ_v[{?z0b/ b/b/b/+b   b/ b/b/b/+b   b/@M>CGMXQlh) '7+=*+l~pV[tH\W1*2ܐ20zv ن"#.3zՄacV8 ][poz*4z]*lslȐk2ȭ6^ O:ksQh\ߪk N{ boz g5%Bwc+Y,`GG|1Fn /E"/ B*V]ǿ^W{^W{^W{^@{^W{^W{^W{^@{c^kco{҆hw7O}'툷t&έH.uíc<C#Ç=`YGqy0 wa5C'qU~g bo Ȍ/p[h0ߪY3{w\ ?UΪk<1ć3nBO&nħ߳,7&>8I r;βCs *:G-t  1 պN,P(Vx͐k툏 b/ 6ޮ{i>F>GxY;tVuboV.d߅N>9Mj# P!?2$n : !7柢 UNW.\h%BɱΪAF^{^W{^W{^W{^@{^W{^W{^W{^ o$|[F.[ m7żgUqVZ!jwBibP;{Gܹh0_udU䫒3ΪБ!kZ 8CT7f#^:W.\j8B[\a N{p ܈_ b/ b/ b/ b/ b/   b/ b/b/b/+b/ b   b/ b/b/b/+b   b/ b/b/b/+b  r=}Cdɣ=nfC[! ēہԜ, ogč]OVyY5{m8b/,Z b؋+b/ GepkWu{^Wb/ nr- b4!bo=fcU 7^`}w[b1.Seyj bO`zs/Ci{{^@{R^W{A{^@Eub+:Mb+"b/ b/b4a b؋+6nm?-ܝ*B\gWu^WE{^@^b.^앿{vp;S{^^W{AE\#^i+ ^ؽn:1){kZ0nU6t'OYW~1:f #qV%DX׬6ZlG΅ -Xg0Ĭ[-f`H\GSf[h:2Wy癩]ߪg+ 1xrɝ^l7\ q; 7n&2^&YWRQ+xЕ {N3P41 q0T)2pvV'OyA[iĬ"7tƿ\hzH܅;Eƭ6tӄ'8b%jGsG ۵G-y9s#| >bw zĩ!f@#CqUA˳l`쉽2^O{D]`(ɡZt+t1H5C=}&w|d(4*\_SXʺ]5+b+b+b+b+b+b+b+b+b#b+bo7:/߈yrcoKbކ4%[lU7qX!܅c3⅟#tmw4d0;2等_Ӛ򞴍kpV ߲Ug1ֵFo ]@Vxg|2"_Ƙq3Dqr0NFckV=c,S睽󿀬YUpd/}yB-t'ƏF Z{Gq:2:eWu ˔3>_ ĿCLu5b\1C4_j<$\xg+UϿYiƒMY? ǫ*t +M0 A` b+b+b+b+b+b+b+b+b++b+b"bc7_%3?7_uv^~3AĉGvG]qmR;^?f{slqIv~Wh0t2OWޮ!gΜ=;+=wŧ IG-=ˏޞػ z+brb[DqY֑Ankw^`Z]C߫Bܑ2iV[\0FwC-8"skco -ud(t_ao۳)vJDbvX  ˍ B ?Md(Jj][plW"O{3 WzboQ-iȿIkB[kyqTA:P92$>1^dxd|畸 yʃЪ,wd[ad܂u* z3fϯ_ib&jh`XtxXn͸;OPq95z(Wh\e f{^W{^W{^W{^W{^W{^W{^W{^W{^W{^W{^W-$|F{x]d;O6f5-[\ ^m?ZlYmn&{D bXYM{dH|EψurdH|O8. [`{RzCU=-X0tٝ7;展@-~] }`_0[}XV-t7Qh/sO9fw0w4Qe(1bN=!c+42_32<^{{@{/8O9{J@{߇4b/b/b/b/  b/b/b/+b/ b   b/ b/b/b/+b   b/ b/b/b/+b   b/k}b b/b/s'ĕk.{{^{{^{{^^Z=?C@X;/C@{A@{A~/>[KtΫw^~^^9~73L&dZ !d2L&Id2L&Ico^ |̇؋+G>/`k5CcOМT^^@{@{A@^{??ԳnormK|K읭{^^@{\۷X~6n/wV«W{^{^{{@E^^^f{r7^^^@{@{A@W{A@W@W{{^^{^{{@{^{{@E^WE{{@{A@W{A@^^{^W@WW@{^{{@E^WE{{@{C^^W{A@^ /8pM+A1ӎnݵB#gb b b/0Oyf&hw0b\[m؛q ȡߕmi*P`8*%RĈq3kڝ+{'rK ^{aVPK|)qV{0\`L\h0؅3>a#C]xa3#>ϸFu1v-` sb@]D.U^W{^W{^^WE{{^W{^W{^^WEuޘ:F1|_+#o-63rKw.TRno\n 3{|bo:ۍw$l57oxd{C.=`K@{^^XnM):#W 6f\WˊCt>\gV1òV{}ޙ+W{{A{^W{^WW^W{^W{^^WrNx9;ytsx1DcGGg{0[bػz4?&sgΞk ^ |$]b+ 5O^^]j4a^W]}1b co3r(b+ b+b+b/b+"b+b+b/b+"+b+b+b b/)Χe<#WXW1H{7㵺+VvBw.tY+ +b+b/b+"b+b+b/b+"+b+b+ ؛X'Z[ z4:4:Vߤ`g~}Z[ }̻[`xx@N|v[0UT[>f<#Ո-;[P^W{^W{^^W^W{^W{^^WE{Y4H"CG6bzL̗#,`bq0t]j) g53%]`w#y\ <_R읭EE{^^^^{{A@W@^+W{^{^{{@{^{{@EE{{@{^^^^^{^^^{{A@W{{^^{^{{@{^{{@E^WE{{@{A@{{^^^{{A@W{{^^{^W@{^{{@E^^^2z:jj~&ᜭx|n{^B9|k{{AWE{^WWE{^{W{^W^WlyÛxMl(!4b92G^^^@E{^W{^WE@E{^W{W{A@{^WE{^-;;Ǜ^ 6%海]bػ񧴚c b b/7ԓ mh{Y3b/ " _b؋؋ ""b/b؋+b+"ػ>зn6.^<m7ߪUǻt}P pzmZhVh?yt +lpV];N{-s9F-w mpINuboc#K{^^*ލ硲 Ïo,l̷UUj{7fTh]Sd<[07Yu8N-Gֱ ΅NubocU^WW{^W{^@EE{^W{^W{^@{^^`n z'5Ōq`"ÏO=oM8 km3l{4[oǭclc,؅ޡv0X9.k g&>0񔇄7>^Qз*aoДUzz0c -{SFػ-X0;Kb/b+b+b+ b+b+b+"bo|uA?v]ĉGڟ _Fm͟:y:ԬϮ&M;;|97okV鑣}[P{W{{^PM =0[e,{Ujjkco [P{W{{^W{^W{^{^{{^W{^W^WW{^W{^@{^{*ܥwco]b;~ģ[-21 b/b+b+b+ b+b+b+"b+b+b/  .+V'/h{g{ޢGe£hE b/b+b++ b+b++b/+b+b b/Լ}2%\ؽ|'Oǒ+N{as?Xg~ʵomyL&d297koHE@5L&d{A@5L&d{A@5L&d{{^c_y9phNd*b/b  ؋ b/b/b/ckVblW/b/b  ؋ b/b/b/b/0)䥻߻rm%"P.ZyG{@{A@W{A@^^{^W@W^W^^{{@{^^^^^W{A@^^{^W@W쵆b/b+ b/b/M8a~Y{r  b/b/+b/b b/+"b b/+"b/@9{g-$fڅťKT٪d*I mWr[+cb+"]hY3G~هj+bK̛jb؋ +"b + b؋ b/bʞ0_jvx&>,yŔdo%^^^iY5&e|1{vE{{^{{A{{^W^@E@읒I8K΍*uͭݬW):*zPV*GKax*{Vk9&x\{*=y0dMCk5=X%V\+!{^^ޢ5rZp]*E=UYژ9f*=Xq1㪝؛U%N21Se=Z ~VZ@W{A@{^W{^^W{^W{^W{{^ǎ=SU))>k9{O>}aq)UN;7w"ܪiW׷NUaS"^"M d YO=^hO=“|1X*΍ޘ覯#㘩§UֲfboGLJ >d 0Ŝ©JlUĴąU.,qpU*qtòCCͪ*q\U\boUTkU"^A@Db/b+b b/b+b+b+"b+b+b b/boJtnת [n{+5co;{P{^W{^W{^W{^{{^W{^ws@{^{{^W{^@{^{{#GgbC{ @{^{^W{^W{^WE{^W{^W{^WE@{^W{^@{AJ):yt|OoYX\J}rO>FKQ Pj W{^/7;NCk^{^W{^W{^WE{^W{^W{^WE@m'ͭUʺaT K.Z&boco[;@{^^@{mj(bۋ{@{^{^W{^W{^WE{^W{^W{^^F.2TT%=؛|y# 5c` w0{P{ks؋+}Y[5J\Zq~ޜKFTgvsS匆B{0" b+b b/b b+b b/b 0AgΞK>bhdt%:U'KXTYKݝ=eu}EH$SÑJU`8Ul(V<b-rNջ=Xt P3;=? 0A ^ G {{^^^W{{{^@{^{{{^^{{iLư8+  Jb/؋ b/b/b/؋؋+ "b؋ [%+  ؋؋+ +@{@{A@W{A@W@W{{^^{^{{@{^{{@EE{{@{^^^^^{^^^{{A@W{{^^{^{{-bo~k4dW^^ډY^i؋+b/b/ b/ ""{]- RdZ^{{@EE{{@EE{{@{A`JbaaF؋ +a! ka! ka!"{OI}o/" <{{{^{{^{h-^~3g~^{c "{{ o 4^ab/b/ b/b/ b/b/@9K/\Zʿ G׮w?xb/b/ b/b/ b/.~w}?齵wGE`c޺aaF?ǧ_|ސ؋ ka! ka! ka!"TW^Z97͉L؋+b/b/ " b/b/b @ŕ˯öÑY6Sb/b ֶ,iO ?b/++ b/b/0{k4?+"\쵀͹kY^^^@{@{A@W{A@W@W{{^^{^{{@{^{{@E^WE{{@{A@W{A@^^{^W@WW@{^{{@E^WE{{@{!b/b +  ؋ b/@~ّbo؛g@{^^ q#[=D@{^^@*{@{A{^W{AvM>9{"v'.l57wB@Ea[^٘0~YkT؝؛%y  b=؋؋+ T(+r=a%kH/=? b+"t6Z{@EE{{^WE^^^ZMfN]ݹqDŽOzvͭ'3Up岾_`r:Fn5N{hNU1{-Gѩ­ك W%S5t`xfh " [E8mLKܒfy&cp岾_`r:fDZSU4(z0S[{:*v:0j<3v{{A@{^W{^W@{^W{^W{{@=Y=%nWsaq)aGލcc=9{gΞkcҬ8E=X6ݏ53Cqc ^ڃ% +q?oux^p썼{]$\%ʵZ8m.`|Y@%.~qIJUg8bojI^{@{^W{^WW{^W{^WE{{^W{^@{^^h?6߳GC-;޾S;;ٷ b b/b+b/+  b+b/+b/b+b+b؋ [UV׷ӧ'_O#ɟyذcox=.bobo77Vdݻ>Z @7x4O{'{aFCV)݃T5^] N*ߊ[ b/b+b/+  b+b/+b/{ckG7}kjcص{^wwsk74 b/b [W*qy co7+ڃb+"+b++ +b+b b/{,du}{1<%r]X\J_:rkOI>vګ;7}>Ӟ9{Tb[r0}āuZk'[Ub/ 7Vяjb/P(9ţ9ZZRXQŠӶpq8UŃA{mboᷧsW@{^W{^W{{@{^W{^@{^{ v-"cܦ59[xvxF]%C[qKUț54mR8UŃV݃5 ,UUfF䙡e{wob/#&{{{KE{@@{^^@E{{W{A^^^{A3é{^^{AE{{A^^W^^W{{֮AeH[>@{^{{@E^^^^WE@{{^^^{{A@W@W{{{^^W^^{{@EE{{@{^^^W{A@^^{{{^^{^W@{/ YW@vboַW%"b b b/b/b b/b/b/kof` {V^^{{{^^{{{^^{^{{ϓ{o?>L؋+G^0 0~ W5 0 C0 0 CNAS@}ߋ#u``^^^^^^Z׮L=~^{    b/-Rݟ?^^^W{{{^@@@{^@{^^^W{{{^@쵞b/b/+b/ b   b/ b/b/b/+b   b/ b/b/b/+оӻ=;w&x=˧ ^y>4 c @޻oFOAb/babkb/ !! MO QcoUv t +0=踏>7*O@{{W^{{@w#{&?,={$^^KkϏ\yuG"ڴ0ZOc_] -oz?{{^?PVвτ{?ܮ]Z:b/b b b/ b/  b/b/  b/b/b/b ++ b/kW b/ b/ b/b b b/ b b/ b/  b/b/b/b ++ b/+ b/  b b +  b/  b/ b/ R # KD{va^W@Vtg b;sΰPb + Z+W{{@^{{du}{ye6v{/0bEp$-\X\JcMm O< eJ:{j.{{#fVӉb/b+b+b/ "b+b/ ZxΓNg mx3gωb Yw"b/ NR~+[+/&b + b+b=( b+"b=( b+bT(ڃb/ v9,ld==GNUƜd{sT΢b b/-睬BBNuhb;[@W@{@{^W{^^W{^W{@W{{^W{@¶!fB{hFIG{|;*1L5*f՘e/qjg^{@{^^W{^{@{^W{^W@{{^W{^W{@{{9du}{yeci@=3ώ9{Tͭ1WwnUtk&/W"ڪ,0bo_Αk稆{@w.$Z^{{^{^^^{^^^^^{@-";Tz^{@wW旿#  b b/  b؋+b/b +cye,b/  b/b/  + b b/  b/ b/ + b b/ b/  b/b/  b/b/ W@^^{@^@^{^@^{^{^^{^{@{^l^4Gv%o + fKkY?6-W?xhAwb/b b b/ b/  6S} bod콵w'={f b/L6rv  b/ + ~'+nu0wgvt +0=0~^0z7| @{{ {^{@0 0 ^{z;<~]Sb   b/ b/b/b/+b   Ec?@{t*&E{^ދ瞿8r埮%3 |}pwO;?Gӳ9r2.~J$ގͷo'޷8 "b/b/ "+"؋ [FbK endstream endobj 244 0 obj << /Type /XObject /Subtype /Image /Width 1871 /Height 1054 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 1934 /Filter /FlateDecode >> stream x1 g Ae endstream endobj 251 0 obj << /Length 1324 /Filter /FlateDecode >> stream xڍVK6 zز@g["@43Əe4Krg2EOH>~$uyWEf*X*u' Vκu$`y-4VqWP5SύrZw]<*OF}EUoԌ:R确hb~m?Pp:R93Fx"հPRM7w'269=%2QH%m<w}{7=)Ƕ} Xfb68q8*> stream xڍWo6 "osΒ, wl랶aPlαi{G]ER$Et}-xWa &i<jg,W<Ί׃mqe޷ ~uqKľ{׭ӽ~yw/PJx)y0wy.y`@A"q%h'gk2<{RA)CKlTG޳4;L$e2g>\:ǣdw:(`3dJ9Aơ)aR<93:/;2q|}_Sy’D&lWE9]ILGb<X (O?G\Bѧm]Rvk㦎Bd8J^4xLM@ {(=(CJ>l-V´uMT ue|lp$i1ReQY뮛 gΒbRL 1Hm9ER8.1uyNHXm<ޕV>+Y,&t_kDa.|fӺ/ \e|I;8{b|gEwkwac4r8]y\5]id:ƅJxsmc7X$y{ pCKXH3kgPN$D}a6g9K:L&˳D&8\~D3eH6!ډ%Ec&Ȇt1}-~NbTgc3j2D+ ˁk%aVL?ӉkKmZ귃Yk_gj$b9 .I%u)r1 h ʻWIkOXP(a)8>8_"Ӗyz|X;[ĠY(P* U$/L} ӑ$ 0ۧkFT(4;(;,G3p Ču}ڮ/nP_:f,Mי bsOqW"Kf5M{ ~̝KL]%aH(9Lm)nɤ`RH S9c8%6tf<8!LLMwW;fINa*Y_U*#x B":8836On^W Ƹ9 *>^c[ӕ"J<sḑyks$W!VhX@y"bx,4a|Ͽ_ 77o]NC{qM͡)C=ž#}&WOF~NBc )7Hecsci; O:6'͑6q No#g<pǝ+'xxbͳ:IYowFKGȾG5y|*RtZ- >eiđSlaytK /hoOxZX$#HYH_!MG[uZ3\0a$c~ }xEl|,a\2xܟFE HE?+@#(M\hh)\(]f5x^xI1HXARD 5bB,#Jecqly1/;bZ}mM1]gJoCJ@> J=:^nO$cu|^;r5랭|~М<˩;"ROk ١Ťpf0q-8\eH6硋{= endstream endobj 265 0 obj << /Length 973 /Filter /FlateDecode >> stream xڍVYo8~$[-" >m蘀ȿ!En` &9ofBP)M$/MdþNNaVUGLG}FT֌>c{S،}:l[^?p&,/T}{V };r[>dȋ9×oI6jA|vSn$#q.% ?V]Z{[xg>W)IMXV# YTPv4(DӠS&^ztO>|?z?EC TjA<0z 'B>tj4}UE:nĐXpIVb+%]8"B@[!AN=s zszO+`3j{-ڠ4|Lp+ HrԼ:.'"2C_%Bu:T_49lC&@"W9w~jPʕi&ǛoZ?&BM.Yq Ql}#'$!'JT ŝ|) n?,wo>ʢlew>-a Wb|0OR>L/6wtߤj0SKo;##3^rӻ=RaAa'd勑0V]ea$|VzsbYc3a2EDXf+6Ko&aJ.+[CwN.C좮^hxmZK|1c7Hլrn 1NqzV*QY.-"xf-;r" G>r!Vo~MH^ye~XRl¦U5ne=< (g oQ um-> /ExtGState << >>/ColorSpace << /sRGB 270 0 R >>>> /Length 401616 /Filter /FlateDecode >> stream xOn)z ܮ?Hc# `  ##'Fpc _?{ݻk21~zb$jy_x~~ǯϿ_o~}__?x_?^___}ǯߟo_u6_̿'=_s?__?zVo?>~}ǯ_Ocur{}+/ytϿ_Y?:^wCY_&xLOVoۏ ֽ|_74_|"˷_:۷_Y?޿_>^8: px(׫V#l V6/_z۷wZZ|}~ou~_K/__{ܞ_{49[nMznҥjiZ۩vyțtiz4֤MNNukS۩TM&]ߛt{R5i3+mwS>ӯofm5I`4Lul_ϰ05w3ۏhoթtl{=];_ϗg=?B^z;\|ϏSdVk{L>w,xt?N<upǠ{o<6:lsOǠlw:+7'j.MڦT[7㭛Mۦu!Dm&]MTvG;NS3L>QttDmӭI߻n곝곝NvҤ_m5aTk;NuS}7S}˼o]4DI&h[;խNuozS-Ti:+tO}1}phfjJ>۩>۩no|NIetmҥjmZ۩v?iNxުY~8`ݝl3m{E,uG=—N<_C^:dKSRk,>Y.|"ZDzc"ߟEE(pE8STdNR`NYRT`J"vSE8P 4)Yx֯,B)Xn*T`J"Ƴ~`NYR`N"6SE(pE8gJ"E8pM,i|[<{Vͯ3K'?mWSw-~"Y^g#X{ZߺW\:-gḑ[dp'Dt-/tqdh~[`f(p@)hӨJA34i3ix4C)hJA3vSf(pMᴛ 4C)h{J4R N@3vSf(p@)hJA3f8pLE4itN(P ᴛ 4i7hR ])hR 4i3iR TN@3f8n4itJA3vSf8JhRpJQ3TQ)jn* Tϔ5C)AJ *Eͨ5Ci7jn*ԌJQ3TܠRԌJQ36Sf(mbͨ5Ci>]xR 8jƭ2QҌz=1k'jΓ?.!͈WGԹ!k'{lurf9ډg.ճ-/Ҍ{.hƣXk'/uȟRҌx;o_VQ4vj_i(:Ú SͨjFJ *EP Q)j3ePLŚ+Eͨ5C)AJP3*EPM 5R ϔ5C)Af(BPMQ)jRpJQ3TQ)jn* Tf(75C)Af(BPMQ)jR8C5R ϔ5Ci3kFJP3vSfTܠR fT 5C)O>@p@)hJA3f8pMN(p@)hR TN@3f8n4itJA36Sf8m"P tf8W+DP#oC6^GlsoƱԟj+:z;>m}?|q|:<|ek0x3e}s WUt8nG=zvvKc)uN6:d*u8ݹƑPgd C0`N&(pC)Ǟq8m"pەq(p5A)n*0`N8vSq(p5aO8FMP ơi7n*0`N&(p5A)R0T`N8q8i`J8vSq8P 4+P 4jžq8m"P ᴛ i7R0Qq8C)n*0`Gu@If%g_ꠒu!%٭rU;y:CJrG\N<u@IXj.u@I>9WuN<Y<%yknv |ֳz<>_:$eQ䣦Խ5k' {Zq?STÕ_=N^wuFV:$quHI2+ [d%!YQ'*I vҾ(QqEE)ʞ8m"Qq@)R.8QQ ⴛ Di7R.Di *JATvS8QQ 4څR.(QqMⴙDE)hJATFP Di7n* *N(QQ 4Ş8m"QQ ⴛ Di7R.8vDE)n*<(ʙ&8,*gHi3ʢrTYTi#͢r.4ʑfQ9n,*gMEHi#͢rIT4ʑfQ9f*3,*gs;9:N@GJ8S;:$*8!Qٯٛ5$g'ʾ?늖GD%qv1([/u&k!G}\{羺e6!g'JW܏{k!Q쟠jfy];YTΤD~;f]:YT>^(*iޣC.붎J~;,*rA)`34G';Rp3MrY4fg9,gDHi7Uv#rTYδ*;ˑfg9$JY4Ƒfg9,gMLiv3MqY4Ƒfg9,gMLY4;˙&8,gDHiv3rTY4;˙&;8,GLh(g9f*p#rTYδ*;ˑfg9$GLhiv#rTYΔjeTDcTDcTeTeTeTDcTDcTeTeTeTDcTeTeT*5*{AgYWiŵWLV\diG?RX_;,*>u}y퀳ĝbNv!gٯ("G>=5r}>,񊒣CRuwݯY>߶ן):ީ ߌami}GA޵uϲrVβyCREgI윝,ʯ,aCҼzkβ,+e^e^e^Dc^ϴ e^ϴ e^e^Dc^Dc^e^e^e^Dc^Dc^e^e^뙂h뙂h둢둢둢뙂둢ҫRvWz=RtWz=n*tWz=RtWz=SWz=SWz=RtWz=RtWzSt,zQ48E)8n*pT,{J4RpQ4(gqMⴛ E)8(JYFgQ ΢iͬ,_i%#C۝,|stYy:,wkS!gIǞx >Gs?cߧ+/pz[}[l@dg3Ϻ:A/Y vܹsv:gcg،:,%`ydgIwrvR8,:cWSyc!gIpldgIwr%:,G4;KuYEp=Ɛ(H&LF)ӨJdvS(qM&㴛 LF)Ө{J&4R0`2NdvS(qC)ӨJd8qLE&Li`2N~(Q &㴛 Li7R0(qcOd6S(qM&㴛 LF)ӨJdFP &Li7S MUMi`2N~(Q &㴛 Li7̞8Li`2JdvS8Q &4R09(&CW3WsuHu⹐::N!թs뙟;YuS8:q7أCv9;u88zvԷޥΛoN٭U.2g'NH^utNPCW r'RB)ٔ;uAJO݉6l*~Wl*OmhS܁օr'TtMuȦC6~u'T~Rt7;`S.K\TwwM5 dSN m$rmJi)w)w6tdSDR 64*R)`SNvSM)rhOɦFR 6li7ؔn*)`SN)rH)ؔR)T`SNȦM9 liT `SJvSM9R 64zR)`SN)ٔf*)`SNvSM)rH)ؔӨ@JM9rS565;ښUĝm*JѦfqhS[RYE)(֬"ljkVW65+EpqV +ԉb@7\/bnf9ߺ[+֭o8[9Km !NJKC[RRc֭oW+(бf}sr[,bk7,u;֭ojM9VW}_q!NJk9&u}?l7G2-k';V^.cmk~?/ :ɎUNÎɲ/T+_:VНcm4<[(Vyb.;[AoYo8Y|ymͪJQ¶fs a[n*Y)֬zikV=W5+E ۚUϕmͪNfs`N[RY\)J֬z,a[S0Y)֬z%lkV=W5+E ۚUϝlͪJQ¶f=e ۚUϕmͪNP¶fs(a[S0Y)֬z%lkV=W5W4R0ќ) sM洛 $lOIœFsR 4JR0 aN@œf ڤJ؍;(a;;U! {݉n)%y6gwм5Udwy!!akS::h^\ڝl^q{:#r+Ǫcڙ`O?uȼ;J֏̫'בX2zz8d^奟:Sv?.l^U=.ǀ~nvyE+Tͫ^y30/uȼ5WMu^0/~!׌30/uFȼ:`^Na+ꐄ5SQ܉Wt)I; a$aͷf6Kȼ܉K)nV0/T`^JF]S2/Qy)rM崛 K)ӨKJF]R i7f*2/`^N.)ruI)R0/T`^Ny9K)ӨK{J崙K)n*0/T`^JF]R 4R0/`^NTh^f=vQy9K)n*0/T`^{J4R0/Ѽy)EN7+HӁ30uF`tuP^w)E Kg/ꐄū6YxHX=j٥:$aJ.w@ꠄ3lw@jY$L\a+]%`-upZ-벏;Y+{ K$-]9K$l_r}퐄գ*0CV߳?! +܏! ?ݮQבX.?(aobS/ [$Lx; a#J:(a^5Q30wN0.wǚF>wJ1!k|L31wbj5S N4Ҕ9fKS 4՞9j,M)Xn*4T`iJҜFR 4R4`iNҜ6S)KsJ)XӨVJҔ9KsM,i!`iJҜFS4TdiJҜvS9KS 4R4Q)KsM攧j,mk֥w j5;ښu镢mͺJҶf]zhi[.SYEuPضfzݬhi[Z=֭VƵjpV[Z=|ߚꕒū!KW{m\1yﰥOr;bꠥOj:lj`i[Z=X֭V5Փmɻ.^ǮZZ]{mjz.ٷ>.;!KzYk:nu!Kרk_ޯlib[Z}RSzvū!K۵Ggdi[Z=X֭Vw-u'[Z܉B4~Z֮VdVW]lŶn nmNUeJQT6\þj|a5kPͶf|Qofm|If|3@KۚZm͊NAf|hi[bRY1_)Z֬jkVw j5++EKۚ󕢥m͊{ʖ5+;ښZm͊JҶf|hi[bRY1)֬-mkVSY1_)Z֬ﴛ -mkVW5+;ښZm͊JҶf|hi[b~hiK ZӨVJҜFR ,i7Xn*=%Ks}J)XӁV /S9:n[:n㠻o꠻3w&κ!WA\;lEYs'|:q[](Sgq 4Nƹ38uFi\cϝqnҸj~Nָz-\!;y:qz[.?qrr=nqyMwEY;q :uH=d߅{Ͷ\~Xk_sv@p8uFj\ZKиtu:#sgw:#S5.h=NfJG¶wH؜FaS:6w¦HAakfCaKV [ M) $as:6u@؜vM)hY{J4ZR6 lN@؜vS)as-K)hYJAؔ9asLE¦i, lNe)aS 洛 i7R6Q)as-kOI؜6S)asM洛 M)hYJA؜FR ¦i7S m{TQ؜FR 4ZR6 lN@؜vS) (lJA؜TM) [Nn 67?uP7YuPؚ!a!aס-:$lq}uP'~2w@={-[v6uF¦Hag :UH ; l_㼿P۵qϵ? [u@5cxdac}rvHdaZwP. n\~(l[uHG=yda36uFN+l=d&lAa;3Bak>f׻3X[M8Q㔢wƩ3O@ƹ5.:qDMҊkJƑ30:uFS F4_A72pϚO)(RP>Q9S 4zRP>Ӕ)sM紙O)(iJAFOS ʧi7(n*P>|N\)S 4zڞ9m"S 紛 i7(RP>Ӕ9O)(n*P>|)\o*_|;:||Jo*_uH*_uz,KUʗN| @R|M;#P3Z!Ν^ | Ug|!|q|!GՁ|[n!E)_=mRz&j.߾իay{\;Y❰{^iǮ=n9Ws'+_XR]|_caKwD3T򩓕y?*:Y_rǟ?Yy*;uxf;R; w5rWU'ݷtdt:`YUJH㪃{q5NgݍN$\1a5Ni P㔂UW)jRpJQ㔂{UW)jn*8Tq)5N)Wq)BSMW)jRJQ*ES LY6SU 5Ni7j\qJ*ES U)j\qJPTq7rԸ3MuY4בf;ҬqgM5L);S'4|ltg+֎N4:utH7r̖L.wG.}?:(w[ ܝpnttPQGg"wgrHL܅Nt=iNGrXGnOhx̆rW*wg'[=(ݾܝ,wwǹ]Y^;Ys#\$wwZoNTx׬:$wǎuܥNzu꧴7}7AKwOܝ_wt&rwv@> GYg=dS wtygwt&wt)x^3z^3^sDAt|gwtiR#w|3k ܝϕd;Ҭ|gHM`3"xY4ۑfz ^K4K'+_TH(:#s' WZ5%3sg|@Ӭ|w EyA&5Au@DPnrfrA(_z;TDiA JQg@"q:x: JAFT"M3TDP)hoJAF{S "Di7f*A N)tM)RAT N@:ʥDP)ho{J"贙DP)n*AT JAF{S "4ڛRA N@T.ř-ř-ő.ő.ő.řDp0~vɀog qxvɀ I٢:E'\0ՀLV;;#'\0}G0mqv~Z:S'\0n:퇱_7.~ Bu N8:eq8퇑=; *gq9nٯqNv:W'\0Jy| ~NX^CNXV~d'[0G-[.t´!'l~>e~{{}C'LP.0:!Mph>KNtat3tw? %B*"-߂d8-~ݳ߂ae6%{.ӽ3{gup p7.F{ ޓL!=lΗzGzGzGzgMzJYLLHQHQHQLAHQC)»z)»zi7»z)»z)8»z)8»z)»z)»z)aj:Nit:JAvS:=Ӭ o PC#=t{^{;'TP)Ktg3$wzH!=u7ݳt!=W&ta:#WXzQô?= ô?;Y}^vd=8_{;wQ=:}zg:?ޮ-A=L뺓0JA=L;ôwzVO<:0އHA=}w@ӿ&zo{A=ϟz<^bwzНJAPC#=tgН3CuFz@=t:CuFzasTC>BdNR0ESTMy#STLQ)ӨwJFS Li7f*2E`N)StN)R0ET`N):NLQ)Өw{J贙LQ)n*0ET`JFS 4R0E`NThx3zLi;`JvS):SS4aD{S:2Ewe]Ҙ)ƳuFT:Gw~ !gL>:, AWtKt.Ǹ:䏻p|GJ\Sۯ䏏n/xͱ;zhu y=cK۝?>ڽT욲S|4{(K+'vV=V`uh]i' f>?`lf۹;np`>{hhq:GsKE~-+ _O̿3g3Q' |C@+ *3ԝV Ti@+:#@ܝhꠁcuF찁MWC nZ4tG;#h0z&;AMwChw 4Ru@d{/z\߸OA?`|vt@?qnd|v@}7k fۅAݿr Fhv}F{˫hhuh?@V L :hϔ T@34PuFZn TVghꀁVJ=ۡ:dYhwTZL@W lh3PFWTF24kcz:ॕV/W/z+jJ++EEU ^Y)*jJPQvSVdRTJQQW>SVTT*BEUMZ)*RJQQWVZ)*n*TT<*NW*EuU)(RPTT}P)HQ*jv5}/TgDmT:RTuF@QՉJ0t6_;qU'l5]jrRuVẓmhsuw:[8:#[Ul5߭j=c![ݯ޼ܭNոZ:dqtuFNV꠭~d[8jҖzz![_k'z<[ra[Mkt![w8zj]dcwRm5VhOw+6l]_* ή/ug`ꀭ)٪ӁDV/]-?^VǕm՝lqG.uVnaꐭƕت:]l5;lW%wNoi\Tij8UuFV٪:`Nj|/:xjlGNڗHVGjlGN=٪;{Չڿf@\;tm$ꀸ::#qu'RW$ݳFqm t`{lU)تӨJVFT li7تn*U`N*[U )٪f*U`NVvS*[uS)تӨJV:[uS5تRPJVVZ)ڪnm>3ggjl:C[U'=P\[{U<V P:TTuFZZ);x5+VTg(!q?U׬%AqM{O$:$!q+hVuP\u$.,umU2!qoKZgA}n״W; YOZasc\^;(7R}/xWW܃8(չ쏦P\kuH\3꠸;#kuP\g|ru{J׭:[%S[U'tt:juH:dlt5k8CqUg~ Z(RgPvWp=EE:3PԽ3STuHQKuU(j|*:bw*ꊯљ3PTuPQ}QTwk3RTuHQȹ3PTuhMgf5-qmg֝JG;Q3rXw ;a:#Ug VrDu:Z?@W; ꠸6Sxl#qug ꠸6fumbdD[U td XXu*qumS)hJA\:quMiTD JA\FSWT$JA\vS:qU 4ڦRW6*quMꔧBq]_(P\FT 4RW NF@\ޙ;qU'4ڪRfF}ÝhJGV[U 4ڪґ3UuVy:[MNwިYő[:RuF^Nx:iuZ/;ɢ!/PD\;3A/-Yw/w}yd/-~zݛy;>zi[^}頸>y-zuvq]]@\fת=C_:$ѫᛸݮU~bo/6VuQ״;#q]]׸ڴ:Cq]]@BvתxkkU3۵JU8Sq];\3׵N<^<ґUN0׵{Cq]}an+pصjOy9B|vau vvg~::#ٵ#K)l7#슻a}KG6^)E]}î;WJaf+TkRtص){vmSvصJ):{崛 vmR6^9\}x;WJaf+kU[(JaFU i7Uwa;ls6}4:Rr Fn]4:t ꀸ*qu:WuF@\:#qug {g; 5^Vuzq:$Q1WcU5_kRuFkR&w@\.~tm:(?:$$߽-N 2k={v&qzw:%[{v-qdlZ+`Ƕʯƙ Wg;`i]iuFwVǪ3UwVVت:#[uglU3FuVΟV٪;٪;`Q%[mu`M55NV٪;[Ugd Ugdl՝3Uw*[U:Uw*[u:սCliTL`Nb*[U 괛 li7تRU *[usOV6S*[uM괛 lU)تӨJVFT li7تSl:ӤGmLi#ͶzT[=;?գ3UuFzv6lL)j3#jpv׳sq=:Q\;{aaaVÞ;!Mzqtg Z1p]q Vst&ztH\ݥ^dqx{p<kiӞ/,ƣCZ0Є/z&Z ўStP\^Muvĭ2: G:׳ZPף=;Y\?w}ף3ףCڼY\5[|>8;?ףʟ#q=;?_oL D\k8q=:ot"Gg"gzt&zv@\ǙљIW*[=ӟљљhҟ+љ(љ($GH'zviV3zQQI#ͶϘHi3fzTY\4&E<,GLm*q=f*#zTY\ϴ*fq=dGLmi#zTY\ϔj+W#J6+EqU Z)k(JNWDP\)H\ŵ-:_uy>[:uVVgՉ:GJ: g|uףud׳矝êmæU ^:;ۣ3YuLTgA׫S3WΆ#lַ*/~Y~dݿ;_~>i:[W,uQg+E}|g\^YSlX}t:CPg:?*Gu:[VtUMYuvF:[>;SUgA溺:t:"mNuVVt{>CPg3Yu@g)ґVg:#RYAm~SU{IΪ:[)lCUgla̶fۿ.i(*ɭ%Wi7Jn(JA'+Eɭ%W)3eULŒ[)Jn*\T(*3%W)i(*BUS??NPrF3U 4JR\ NFHnTSg${%-Kӑٺf)llg;ݳ;UͶy2mu$ם4Jt`{gjMmVviٴ;UgܯΖ+?_;]zVNhutHg/5x\:wzΆ5Xg*?7YbUg:,ǵ/κu^Z8#Uu6;Ut6^i@gAMNtQY#;aqUg$ U9~3u y>#uê3rXw1y>7úvOaUg9;?e:g<3Uyt樎֝JaNv:;t{Va݉t$DT i7+n*W N"*qU 4枒:m"qU 괛 i7RW6:U)n*W<sW6:U)n3WuFwX\7$wA*;qV6GUHQɊR!Eꠢ{3PTu@Q:EQQٸ;_R(ЕQ$[MW˪3Uw+:):#Eu'+~*U5:;~('AZ?==Ɋ;)yK5^]NV]ke7RTe\^we˾O5wvv@Qx+^~⨨kuF(j=EQAE {utFHQ(:#Eu's<ꑒ:(:QQ/UgLVl=; dԝՙdT3QuF2NZ--ʨlgsOI;T'jӑkL4?gͮ^k5݉\S)fF˳!T /m&i;v*tS)hn*NN)T 4➒v:m"T 鴛 i7hRNv:S)hn*NSTrTTh_J w7ݯPlT!磝߷χT^K:Y%Whc@* Nt:n:X.ǍURRr@yz^kA|*NV? U:*_yKW?QJVT2^îdu5STgA|x} [STIqEOC7P%\NTI\R4Ev=5)VL)*bu J>&SiTg$AiT: :CiTg$J: 4V:Fuϋ;~C|v+EwIG>BSTRJ?V RG`j?V4H_ZcTfmlU* )Z渲UVVTRJUVV R)OVu7JQU:VR)XnU23ʽCV4RJ*U*tM5JwV*tR)Ze:{qg:t|w7JUwZ:dq7-w*(kx^^3Tgd RU3Ju*]iv;Tgd R=Y;*U:VtdU7VRH%:JA%qdU*trO*V9&3t ix"ZSTI~MJvoDT *U9pґ?3ǽCy:#t'JRGN?*tMit2J_kNRG8tWGN)tO)RGTNyfW% }[SǭUI)쪤4㷴*R w?rzFNQ7ܥ[M5 #rN?sn!lp硿<"Em~DY~D|6.ER0 wp=ܺ=@n!8Oߺ=ZvnnB [оzu +H+j~íMHwYUìF[оb>'|z^K'a\Q^}kk'a}1].Ps߼lTy?K0NzџA=sMUuzu{ 5sru{ ŕ/6cHnC&|oݕ9߮77hvwFu;5߇Xn/ P 3 r>g 5;8\St[gO7{e wmΙm:J#.:ovi/Yf|[RTE)(㴛 okvq 5(Ep}ouڟ'+4<|[RTq)xӔ9O)(n*P>T|{J4zRP>QΔ)sM5Z{ѝ|`$Q/~3ƝhNI:y:{s q ٨: Lw"\(JQ<Dzukt'~ewfuF"N(AuTDp_ ~zE0yR-/"X +T{EfTDuPVEp?)"XAǹ`ߝ3Ɲ"ATg; i% uF"NFh_3AwJi_DPHA$JG"@:Q?Ȩ ~J F'SrB'T=LH=l@=T ztp:`NWҨt$DiT:Fw4)Iґ43FuFN4= JAFiT 贛 Q)H(bJA4: N׿4:H: JAgis\I4:i4= JAvS4:PIF4:Q)Hn*FT {J4RFQ4*itM5FwҨJcfIc7JczTg$d{;;3tgVdTU2]NVxm:J^tY2A*!8rbU=VJZҺ/]Fk'[erOFwԹCA!/UUO~UVGwokg`UƽY;T2z*Y:#t'[e\WUR**݉VStJ)$_@Ә?-[. iVA';븓y݅::E\ԉND5fvniͧ"-N=ߊ{wf|ckVNtg+򗣊46Gu+d=\_/{z/NQWLPWܣ)|K;z^*kpV+-=\PpPf'kSõ i7YН(rJ :f'tMNi,J eA~ם:JAisI:Nit:JAvS:=zjP)8]J*E=Pi7n*gzRCVzt:#=P3CuFzXo 'Tg:qo=::ž'J"H"Iq' @uPv{X|;YT)`uHKAA`9ز{\:YjG2cׂǵE^u"X zC"_t'jؽ^;K]]"vq'CC"XGOP`u"`OVg(D:CTg$"t$!l>Y;_{1N8aC'Tg:auN8a3 'RtB rϔP)\脕*B'TMNX):ґVgꌜ:脕*'P)83e' +:: rVNPi7:aJA*E'Pi}ꌜ:脕* ):hVNDRtB rVN*:JzFS 4R0E`NvS))hJFST L)bVgd)/uFhwew+32Ew)|uF݉{ܣ]=cs⏗+!;AǴҡ:Bii!M]VM!c-}t ډ ۛ:mc=پt?c}>i-k1^-cMc0GwCv Wq;!љ?A8w9TRJJ)#pNL%:#Tg TRJA%J:N)T *鴛 Ti7RPIBl^3TTR)ӨJA%FSRI#t'ܼSͬҝyLY0)5k:\S)(mJ5k: \ӝk\ix^N56G\S)(J5F+T \i7&^kV:tͯ]iDN *T 鴛 \i7枒k:\itMJ5\Sk]3:#tg\ӝk3rMuk~Kwfm4Ju J#t' fr !oWE?NETǙGl̠?NET SMLq?j}^菪S?ME]Gl̠?NET +jj?NET雊 7q*jۊdUOMҷjǧ&[5ڶԶUGUǧ&\5S?qO{\3;̀?̎?{\3;ϟyf@%Én3* Yd_f*Ol;f̐U߅G}&[)Zez!L9fU?oV9JU>3okf* Ze0g2\3;*g̎J>3OmUrլO{%̎J>3k&Y%TrլOMJUSMNjǧ4H;̴ KS4q,OMjU4>5\4ؒ5q,O kƧ6HYLo,OMzjU4>mXC4u[/~VS.~VS.~Vͪ(?fUƋU*JϪy*HϪy*HϪYϪ?Swg=Uw J㺩W{ 5 ?JϪaͻlnQ]8_Y56k"dS_cmeL12ū=f|4p3MqLziח2ő{m&bzfC^Y5] };l7gLjϪSڳjʯx!S,Ocڳjϐ]SvUfT3x/|*M)^{ ՞JS~/aSvMjϪ)UUS>blg)^]]U/~Vͪh?fU4ŋU-SvUlϪYMgլxjT/|Vͧ "wSie?fMSY5)^U/~VSA.~VͪhW{VMiȦRxjVESY5)^U/~VSA.~VS.~Vͪh?fMSY5'4~MO5*H*Hk ѵmxWF( QUAUA]7Q3[ i H4z^^Y3-̖?zfzM߿z͠4&̖4z&J*Jc:{&Kc[m͠4'٬ƨiޤQ3(I~<tkޯC8znQ3$u82z4 q3Yb4uR3$߹=?,kH3kpzmslIf3Yk4 fHj}Fɼu3ᏚAL{f=Ꮪ 䏪;OY3[  cM*kFW4'Bv2Eϴ LQL5]]ީ))]V``hjP5*kûF{S=t=F[zF=T=T=t z zc=kP3r=t-_mCUCtQUAUA]V^8u ?QT ]ȩ ]Vw%'tN NPPfvl8f U~񵇪[ _8[ g\7O3[-L~?sl^{,k"efPNx&`zŚ!Գ{r="mfPm:5̀fL)+χDIsLͰoWϊy9{!,=ݚ!ϧ̆jfK5%η&kD0=uO3Q]3ٽ̖y=gF[nٟf3䚡NXn[N-'L'T't"wWrB(rm+pB׶8*8+8!kw== *kCUCרw%=T=t z躡=TCϴ5**k,UCUCנlaOu 5N N>WpBu%'T't" NMPеm儞ɯ2BPn**8Tém+Cն᫲NE=T=z8PuKg&᧺3N8Ppjf g033N-'|ͰnY34:3N-'{=NX9kB3[N83脷 ߾:f 5iח'Hr gJ3kg-K̐VǼu 8axvf oNdLv98~>ߖ gS :-̐{0atB{AlrP3zq6P3[z83pyf[?6ÙClD=TȦkUW*ڟi}|SQT^Oն*j o**jVkvofPMES{UV|`dSQT;|S7O33@S囊7O4j**TT>U0WeS-[MESm[ܩPܩMESr7Nm)wْg60;hd wTATA\V wm+ܹFSsr r r r lxfT\nyg9k[2͠%/ ]zfsv# ]Y3n̖yf2:DT7̖yfC4~{fO<_=L6Ds8lhf@\ZƩFTkT=m diQTT\V`im+4U4W$WhM3 l lQTA\ݕM5*{]5¦%lik6U6U6רF l lѲJZ"aSasm[@TA\eFaSaSasm[m gxmK;6KS j5-m*Zj -Mmli`iSTҦMEKS͖b Zꖥ ZT4UХ[OL6'73hi!Kk-Uzl/W3z7UyZl3!Kk--5.͐z,-fI3diߗn}u!KğliG;߾`i{܍[m&:RSAK YZ|҆g4CVhiɚٴ!K+ߣ63[I XZٴAKSKK̦ifff빹̮if)AKiz7l fmfPTMEaSa¦ڶBa¦ ,l`YSQئPTV(lSQTA\AMESm[Ǧ.MESAci*Tc`>SǦD*jي}l*j }Lm>6}L$j**Tcmzf)3fqFR5s> j jڶ5sm[ݕ5*kT3UP3UP3 5 놚iL5:ꖚy,}LTQǡ{f<f[j 5̖yfC4CjϴA5KZ Yzgf3Y$_o Y͐O1^d5߃9>/3fc5| ^"6,{A5Z Y|g4Cj6?P3=5LV elg6L3[jzh|g6I3> 5̖3{jլ}-5̖ifP3̀FR5S5sj jڶ5S5s>uWR3Sffm+P3׶*k)UP3Sffm+P3ײ*k4'UP3WP3CjfikT3UP3UP3(AffѧJjZ"5S5sm[@TA\OF5S5S5sm[mgxM@s >%J|L|̵m>ڶ+k1U1cccm+0׶*k4/U2hz0/lf3E݊g{&*jԭOuzrg6K3[-Lijfб iJO1̖ciS~?fcS߷y} ȱ=z?gc;6ϫٞw83X-Y}:CX7͐c9^3XW}}Avs,l=3̖ci9f5a[-Wt,w";֧y퉕g6J3$VwqJ3 VцTATA\XX@TA\ ݕ5ڐ**k ʵmb bmH5ڐ**k ʵlEb bGuC4b%Vik+U+U+ר0 V VцJbZ"Rrm[X@TA\ XFRRrm[Xu[r+Qw:ʽ(VG_(XW 6t{UQWE:ʭ`8G~[=ڭ[qPu=.W' 6n9nnsn3n퇳QnQnJ3ٱn :NOuC4PAJ3P{TATA\BB@TA\ܕ5z*(*(k ʵm G5z*(*(k ʵlE  G5+TA Pi(kT(UP(UP((+PP{J Z"Rrm[B@TA\BFQRrm[m)gxMwrkUP(=PPm+P(׶(]I\BFQRrm[B@TA\˨FTfYZuː2!_r'LHj~z y&P|=._ct8?֫yf [5B?Svq~/3B.5.؅ҭK z!U) +Z*XMy͠z>%y';DDTAJߨLE~ڶBQm[LEQ)yUU7SoTV7m+7 %SoTAJLEQm[ߨoߨ~LEQR35KSVh2m+4h2 Sdɨ~*jيMf*j MFm&3MFc**T4h2m+4U Mz1d\~ɸFPQqm[ɸdJ&CL5**k LƵm& &CL5:**kي^Z̀nf|YTU9鄦ԗ_=?n̩͠q27 }} !P̀O`o_З|g{%K̐!zfK_fe* {fdTdnkM&[3[&33&l2E3i23& 1MFc*T4նj Mf**ǫɨ~LE&ڶBQm[LEQ& 1Mf*j MFl&3MFc**T4h2m+4նT4Uph2SdTA?^MFl&3MFm&ڶB& 1MFc*T4ն*oE&sLI?V&ԤfY5SVdڶ& &ԤfyjҏUɬMml2Om[eY5S~MI?V&j6dZںxdyjfv晁s7kfK |X3o ds=c -_ʴfoY>3~Vo37s|~\E371Wܬ33=L5C~'do Ma dIfo>37k&ͪ;~߬7O͟WU'hfTɟmҖ5SvQ5:k&SUOVͪjVXu\F?QQqm[긶@uJDT5**k Tǵm DT5**kيTǵlŪ kDRdigKu4:i=kT'=ՙ?OZ3:EkTzdչ~ȏRg&NԖ{T'j͐4[POZ3:g (o3[- N]f͠Ӭ:t'q :IZ5lAS~ΡDgꐂx|7m dK̀߸F)QqR ~ ~ڶqm[ߨ߸F)+kUU׶k F5J*kUU׶kيF5J*kUU׶k F5**o7e+U׶k F5J*kUU׶+oU仃 RrO)9UoN;xU^仃 RrO)9UoN;xU^仃 RrO)9UoN;X[Wo ~jzԪ(5Lt}|9`>w?3Yj~Nw>3kfPj}kfE;n>t IMz3,w\g&K|1_f@j{՞5)5g;8F3 5hٔvݔ\~o'ٮߜx7'> rî OQ8UQ_N%xUԗo ^[ڶB}9UQ_N%'Tpo ^[WE}9UQ_N%'Tpo ^[WE}9`U֗o ~*8ɷ?[WE}9UQ_N%xUԗo ~*ɷr-/'*ɷ?mr-|KS9N%'*ɷr-wE}:FP}qΡ ڶ}qm[ܕ5:*ktUU׶k E5:*ktUUײkي%B]3/qd<&S>LKEe~S|PT,!Qr,*πnU4 zmgL}'*YO=gLT |nβ*]IT\ˮ$*Q TATTAT\]@TTAT\V *m+Uhw%Qqv ڶQqm[FPQqv ڶQq-[FPQqv ڶQqm[F%PQQQqvqWײ*k Dŵm BD5څ**k Dŕ*r;s].rg+UUEQʝ(*W3WE*w溂]\\Wܙr;sUQTrg*Uuʝ`W3WE*wޕE*wn=H3[O,̖\ܶۦ\_5rqjijhD%E3(*8ɢ2pqg<$W_?tfHT@nv;.nǝ̖\vr͐t\v}+*WרF;T]?YV.d;ݶwe;ݶh'WV*wۺR\n[׶Uum[\n[Um Jqm]A)r*UUE;ݶh'W*wۺR\n[Umvrmvrm]A)r+(UUE;ݶh'WV*wۺ\n[Um{Wmvrm]Vh'WV*wۺR\n[WPmvrmUNrT5**؉kT UU׶؉k d'Q)TN\RN\V`'`'Q)TN\RN\Vl's|lىg6D3h'e7ۖh5IT͐gg ͠Who3`'oD~gNfFO>̠;Q4vr{h>$ZfNv߳a;IOL^f;)gN4v va'ٲD;Q;+ىkU`'`'Q)TN\V`'`'m+׶؉*؉kTFP;Q;qm[NTN\RFP;Q;qm[NTN\RFP;Q;qm[NTN\F+ىkيDĵmvڶ;Q;qJ vBDĵmv[LԤf;yjRUml'Om[e;Q;yjRU<5)ŪNVvԶUI)VvԤf;Y5SV`'O-[mɚ!;I LքγLp^|fN½k$Ve͐>3Nܷv,X3d'3y3GxfN='kde43`' Imdɚٱg$ٱgdd;Y5S<$LRUl`'OMADI V͢j&X5SVYTV͢ԶUE.TATb,*fQyj*SVYTV͢dfQyjUEm,*O-[E.V͢dfQY5SVYTڶʢj&%X5ʪYTBDe+UU7D3N_3d'kdΥ؉fܷާ߿Π{\;W>vtɚA; oyf Ɂ_םM;M;̖̦hfvfPTTATnf@TnkEEuKTfEE`*TU(*m+(*m+նTUWeQQ2EEmڶBQ v1EEb*TնjDQ v1EEb*Tնj Ee**(T(*`ʢZbQڶBQQm[LEQQ v1Ee*j EEQH5//Q_TA_\V/w%}qΡ CEŵmڶ}Q}qΡ CEŵlEZB})_Y_“ }̖x^RvChM&b3*qHjI3 5Dy;kuymfN!X4Rd#}zRάtSʚ! HM'͐Ԕ۞hfKj4%5IOZ^L|gq̀F}Qϴπ%=C⺡/}q Cŵm ڶ}qm[F+ktUU׶k E5:*ktUU׶kيE5:*ktUU׶k E5**ktH_TA_\V/m+U/9TA_TA_\V/զxچ⺡/}qΡ EŵmrW/9TA_TA_\V/m+U/9TA_TA_\V/e/Y> h'j|ꖇhfC[R5J:w}R̀1??gd5ջ>)f@Ik->)kdnȽ~WG3$3Wz%y﯂ * XI“ *IzfHIw#'lډfn̠nD;֣8͠Oz݉떝 ډ*xTh'SNTVh'SNTVh'm+h'v J1d*ډj Dmv2Db*ډ*(Th'm+ղTUPh'SNNTVh'SNTLE;QxUղTնډj d*ډ*(TUPh'SNTVh'U;1 yg6DE3 *.TATTAT\@TJBD5څ**k Dŵm BD5څ**kيDŵlE EED5ꖨhfKT{fqYvm|ՁfY;h㽵Agw]k6p4{%bE3,]KMg9(~?]et/GVuY׳obyjvaY:Qnu;8-,GV(ت[׶:QnUEg9- GD(ت[Utbr[l]A4r+QnUEg9-,G,GD(غh[Utbr[lUYr+QnUEg9-weg9-,Gֵmr[lUYr+Qnu8-,GV(Nt uY4ECE5:*8k ,Q4TY\hY\V,,Q4TY\Y\5΢,΢ Au[lx g 9K8,[΢ty;{eoj9#,y: :K|mfY⻖<,rl8fY=AgI'tdg)nq@_TQ_ \W\bK_4/̞xfC_4EAE5:*k Eŵmڶ}Q}qqW//m+׶*ktU//m+ײ*ktU//m+׶*kUUw%}q-[@_\V//9TA_\s@_\y+-{pkv\͠\v\U4܎ &sq]Vh2W*㺂~\v\U4܎&sqUdr;+Unuh2Wl2ގ˧ 7ֿ,5W_ JͧM&H3h2e 4ݤ &stoYѻw5C&s+?3#m ʅ7~/4ԗݙ :v;s>ԗݙ[Ww*w檒e/jwSX_oS_.3w*7麂(\&]UԗܤrtUQ_rk *7骢\&]Wpܤ qtUQ_r*UnUE}MWI*7骢\&]Uԗܤ{W֗ܤ qt]9r*UnUE}M/WID*7骢\&ݻ\&]UԗܤڶB}M/WI*7麂s\&]Uԗܤrtn/̀FP}Q}q ڶ}+ktU//m+׶*ktUר///e+WЗt* "FuY<E5z*:K:{i_S&[ԗݺv2͐;B<3^͐{&L3̀ɸ;n L3dwͿߏiLF_o̖xfd4e2&e2F}Q%}ih&˪{wzfY4@E5*8k EŵmڶgQgqqWr(,,m+p׶8*8k Up(,,m+pײ9*8k Up(,,m+p׶8*8kUpUp(w%gq-[Y\V,,Q4TY\hY\yMg9/ g 8k UpUp,,m+pFPgq ΢ ڶgqm[FPgq΢ ΢ Z"gqgs,[,,YTYL3,?<,nfDE3$*]*QI0 JzVg@Tm J}W3 *-Q JzfPTɚlfD3pngF3YO|KJ/̀ܕ ,gqv ΢ ECŵm΢ ڶgqm[FѸ+9k UpUp׶8k E5*8k UpUp׶8kيE5*8k UpUp׶8k E5ځ*8*8kYTY\V,m+pUp(,Q4TYTY\V,].`wn̠]LEQ 2EEm,*`SQTT.LEQQm[PT]LEQQQ2EElŢ%*32uST42EEDeꦨ C7HQi[l̐ytfHT<]͐wx&J/aQy].0MgLv@o!̦֝rtl9l:Y\ATnfDefD{_3*823/ SQ_sLE}Qm[LE}Qm[P_s**8Tԗ/m+նTUp/SQ_P_TV/SQ_T9sLE}ڶB}Qm[LE}QQ2EUY_TV/SQ_TV/m+ԗ/SQ_T9LE}Qm[VO>_fnf@_\sF}Q}qm[ܕ5:*ktUU׶k E5:*kUUײ놾hnm lgɨɸFQEI0״k,-} Kz g@_"A}Se o3/{%=H3/q3ifK_4/ٸIW3[ }̖h5ꖾxfC_4/ uY4@E5*8k EŵmڶgQgqqWr(,,m+p׶8*8k Up(,,m+pײ9*8k Up(,,m+p׶8*8kUpUp(w%gq-[Y\V,,Q4TY\hY\yMg^,΢p(,,YTY\V,w%gq ECEŵmڶgQgq EEŵlE,rl9gFgQ ڶ;q;)_-;̖x&I|׊f3`']8 I|rfN[xꖇh<5zꖇxfC4C_vϐnxfC\_NSm[|^uݔ+ '޳+{?8۽]&?k f|.^Y+ 1OtE'Gk|q{eO/ǧgA|+Aٔ+ q{eLellj~[q{e]4{eUQ>r*YUE8˽m++q{e]r+YUE8˽(gWV,ʺ1^YW0+q{eUQ>r]Y>r+Yuc8˽(gWV,ʪ|^YW8͟^YU+{W+q{e]V(gWV,ʺ1^YW0+q{eUQ>rT;¿ xf|<5êY>VԴY>ڶ d fxj2U|m,Om[eX5S1I>Vj@>f|#L2U|<5ǪY>VԶUfH'5#kfG>pƚA<3 7s G|2|s<_ˬY3;yf^I *Ƿ?dM1[Jf<5iª$Q5(St_5{ȪCa!Om[eY5{SVCڶj&yPyjU=m!Om[eY5{S<=IVj֏L֌w3_fP3ғj i=i9ڽG֨tL[Ovc.5nq][AxP|kSgBqP|?Sm+'}j IWE8~ҧ|?StU']IWE8~ҧ|?StU']IUY(`OT']IWE8~UQ(p>~UQ(TIWE8~ҧP(tU'}*X>,IWE8~UQ((W5Z*kU U ׶k $TA(\PP@(\V  TA(\PPPH(\7B3 -Lpϰ:砬z]Dz31F0? XWYf,B3EB%B%p'y(j5*kي|5UT\I^|m ڶ_pm[//Ɠ]\I^|A|mڶ_P_p'yUxW_P_pm[/T\I^|5UT\V m+UxfV_P_p'/T\V m+UxW_p'yUU׶+oU||ANST$?}a*j }Am p ' STV m+ p 0}a*jي}Auf}a/hNST/LE_Pm[//||5$A_Ϣɾqf~PX6}~=15MB3 !_c-A_,o, $™}*Jj %UYTV, p:0%ASQTV( SQTV( m+( pfUU8OEIڶBIPm[$LEIP3TU8OEIڶBIP-[$LEIP3TU8OEIڶBIPm[$LEIPT( pfUղKTնJj %a*J*٧$™}*JTնJ*o:$3*Hk<$$@\V w%IpgvUxfWIPIpm[$@TA\]$5J*H*Hkي$lEf :u@t@tm:ມPd3s8 gXS/4C:E3Yʈhuxf͠.y&x&UATA\9\tm:pWײk<s*k t@tm:ڶPps**k tm: :᪠ : :ڶp-[s*k<@\Vī : :w%p-[@\V :᪠m+WުPsTU8OE:ڶBPm[**ç9|*Tնj u`**ç9|*Tղjيu`**çLE:ڶBPgAHO8 }_ho3Y*ԁxfP(hMht ~3Y443C:_ݸkT4hp:fڶB3xU6ղ*LE3PT4նT4նj `**_@NS  TVhS Tt>@NS  TVlS Tt>@NS  TVhS T<`**_@lf0@mfڶB3f hp:f0@mf[z? \\5U T \V`m+0ӹ*k< \V``t fO``e+2ײ*k<F3P3P3pm[f3';̀ng6@3hufpϠ;5S<f0x3͠*< zC3dnlg+ Tt3 : :᪠m+ЁH\Wt@t5UA\Vm+׶*k<ߕt5UATA\Vm+UxWppUU׶kيt@t5UA\9\t@tm:ڶPp'^UU\I\Vm+׶*k<s**k tB-7#s*k<@\Vw%ppUxWPpm[@TA\9\t5UATA\Ve+UxWp: : :ڶp̀ng6t@3{t =A |7QLցxSfP{.<:_kցo~'/Y3QT<5UT\[mpWrײ9k<۪*8k @mڶPp'*8*8k m Oܪĭ  ڶp-[*8kN:xN'?'?Xֻ'YTYnTYntYntm[,7 U]l}]Vx?Mm+O*_S?Om+<񫶭?Op'xW_l'xWm[_m'xWT~5U֪pWk Nm+8ߕNl '~xV*]Vpwm[_Nl '~xV*]Vtw-[щ_Nl '~xV*]Vpwm[_u84uL>7=U;k?N_oL>񷏳uLD]L< \3t|gI4pUUxWpm[ܕtlE:O :ڶPpm[@TA\9 : :ڶpm[s*k<@\V :᪠m+׶*i{^Gn޿@A懆,d@zlBA}3ٹd4n`Lf{DxE0}dL0;`ZUv@iE>\(Ӫ*\؁dhMx7v4ځ'ZUv<ЇF;DCniO*ځ'ZUiO4<ЇF;`-vUe;` iO4F;DxUU+|pa23xBa;g2li؁ >; ځxʄ>4hhMxUU4ہ'ZT i<ЇF;D0vVUE;D0v><ЇF;`vVUE;` }iO4F;DxEUF;DCn }i<ѪhhUU|P-b; ZTv`PЇv@A v@ hUځA>e; 8Cv )v`x!; 8v=2`PeFiF];02M; ტ(ტB;pPEUlDhDhUځAVUB;0(Qv@A v@ hUځAB>(QE;0(Ѫ*EUlE; }hDhDVU(t(e; ZTv`PUUhD v@AB>(ځAVU|'W;`pQ`LVUiE>\(Ӫ*UU`D>\iE0-";`ZTEv@iE>\(Ӫ*UU`D[v_wʴ333v`2yq33B4Oa{cveZv@pzv؇;`pQUU`&%;`ZTEv4v`D>\iUQUU`L0}dLc. v@iUӪ*`Lc. v4`DVU0-"; v4`Lc. v@iUӪ*`Lc+ v@i'%;`ZTEv@iUӪ*`Lc. v4`DVU0|0}(؇;`ZUv dLc. v4`DVU0; v4`Lc. v@iQӢ*`Lc. v4`DVU0; v2`A;~ 7UA;? ځΠ}L(Ӳʐ(^Pe}(Q;`ZUv`REUdLc+ v@iEVU;`ZUv (؇OJv4`DVU0; v4`Lc. v@iUӢ*`Lc. v4`DVU0; v4v`D>|REUdDVU0; v4`Lc. v@iUS JD_pW' }XpWBS Jhv`] ( JD_pWBS Jhv`] M,+>|] ( Jhv`] Ov`] M,+>|] ( Jhv`] M,+)ځw%|ĕ4=R?w%;^{)7΀}*3 ΀JЙXښ`M,{hUz|EU=>QVUXp'ZU`M,{(t ?h`M,)z|q/{M,)z<){|q/{M,)z4EOz4E'eVUXpAS ?D^p' XpAS ?(qMc- 4vܢDVU00)yq0(xQUUL0(xq`ZTE<(xq0(xQUUL0mxeZe=zzgr(`Z@PixeZq`;nQUU&%`ZTE4DƎ[>UU>>E>E>>>bo?Nۛ.Zz{EBo/ iUUUOJiE7](ۛVUAooZU(4vѢۋBooZTEiQۛ~Uz{EBo/ iUUUۋBooZUE}K?83ۋRog 8ZS4xeZ]2.ޙFLw&ˢŋBoeQMxӢ*Mcg* ](t_.޴ xQM7.^x/OJ]iE.޴ xӪ*E7(t_.^xӪ*M.4ˢś~YxQM7.^xؙB/ ]i'.޴xQM7.^x/BoeQE7.ޔ.ׯ/Mc, ]iE.޴ xӪ*'.4ˢś~YxQM7.^x/BoeQE7-.޴xQMcg* ]iE.޴ xӪ*E7.>u4f uǞۙϽB{FoLWW3I~ʴz{gb- (޴ zI7-4ۋBoohQM޴ z{Ӫ*E7]ۛ.Zz{QM7^z{EBoohQE7޴z{QMc- iE޴ z{Ӫ*E7(ۛ.zRM޴ z{Ӫ*E7](^z{Ӫ*Mߖ.zPE{A^ {ro/ ]ۋB=(bo/ZUhUbo/ ]ۋB=(bo/ZTŽhQbo/ ۋB=(bo/ZUhUbo/ZUiG/;܉+o/{' ]|Gŏ vűhv#╁~yP.^A.ŋUq/ ](˃b/ZU]ŋVUa/ZU]ŋB|PE_A.^ A~yPE_A.^A~yPE_A.^ AtP.^r/ZT]ŋVUa/ZU]ŋB<(v/]ŋVUa/Ua?hMc, ]iE.޴ xӪ*'.4ˢś~YxQM7.^x/BoeQE7-.޴xQMcg* ]iE.޴ xӪ*E7.>u4&LWߙŋBoiu`_<uqGDeZ]3_.^x/BoZU]śUQo;SQE7(tUUŋBoZU]iUtś~yRMc, ](tUUśVUA/ ]iE7(tśVUAoZTE](t_.4ˢŋBoZU]iUtśTxQMc<)uEUŋBoZU]iUtś~Yx/B/ ]iUt\vqy]iE7(tśVUAoZU]ś~Yx/B/ ]iUtUUŋBoeQMc, ](tEUśUQ/ ]iLE7(tśVUAoZU](tUU.ޙ.>v`~LE7ϫ+C]|87mXuQMcg, iURnZTEiAE_~4vƢЯVUA. iUUUЯBn;I_7(ЯVUAnZU(릱3~4vƢЯBnZUiQЯXuB. iUUUЯBn{PQE_7ԯUQ. iUUUЯBn;cQMcg, (UUЯrUЯ_//z\>}?/;}OFWy4yh|俥#q>pgmX5yvC͏|[#WwzF=W{(='㐥o靳oC,_>ުS{f?>ͯWķgxgϹ#=<W8oa5z|S:q4nuXCCywxx|9;,w U=/tg}OLg#w?u3Mxx#dYGj?N66q{<[:gtA㑜g%~ǽk8wx]6U)ö޸qٜx}3|2>^ǻ.H ]w>X'&l67YM{#R^sTj}3z4z~gq7c6G%,`9"~;|ϯ}t_Mg{c9K%<}=7 x|}Y/ؼ >.)'pFt}Q%3p:*/>eǙ~L_3}g^xûjljS)UfqKxf0αsAwx}n|g7ǟx[8>l /wy< cֻǻϓ;w纽xwUz?/2-xkxӞ>񎷣 ;>Kڹw<㔲(|}uyZaNoQ:~I5~=ޤ_Qz }؉Ym .3=>ٌnQjcG[qG}S ?/kֻ9|˨o=.rY|?=>8ߺqԷWΧ:Q{mwYx|=uֻTxu6ROu-ƻ;<>F?.auhu}[>Ǜc^2?*'/bqWv7o???˗_GK8_ݿ?O#Og'?q'MW^qJW^~qȎlww_yybx{}iƏ__>ߟK5F'DzE?s㏳z_}[̞oq@7co+_OeW$bG::0__mpx(m"9%,>}|->쭝ݿ˻|?Ne|os-V8CC[] z?P ttNHu-R8 WU%-:֤\4;W\)w~iIoeU{YRVĕr']Jr'JqEnUUǚ5i'k.Vʝ;hZ)w[Yս^VU5isoL\kL\ɮLXw=®L>sTe3_c:h/O8X\׏LZvRSkTKSkL\;朙μ+bL\WuqQ]h#&jН4hZCwҼN] ] Н4hZvҼiI5tZ㺰ua'kN]4V5t-5t'k.օ; hZv[\vҼUUy Eָ[\uѴ.{\vѴ.Lt5t-5t'Ҵ뤷iIq]Ij-kNX' XX':Е_| z+-uӂ.]ʪj+~3)tt]+ ~aP E0(QE ~aP e ZT~A:A/kD/ ~A  D(t_hQѢ* _N~P E0(Ѫ[RCFC̠uAl Y評luؖu_3`qLSg: aj6t>d:k!B.APu]12M tPte!ZT.B]Ġ"D](AEk"DEB?(AE8(Ѣ*vPt.bPtUU"DE .BAE8(AEU](tPtB!ZU.bPt](AE .B ](t](AEVU](AEXWvXqH.4QpEa~QpE\iQa](Ӫ*p"Lc׿Kco~Qp"LEUa~QpEaZUr>OW0yc@fB{.cpuÃdf褷{&vQ2a^2`3q~2j*XU?~;`3*W&یy3C6x 0 ޷ʴlƲW6CW6cl6ClƠh3Df 6CW6ClƠh3E!ZU6CW6cP`36CmƠh3D,{e3D 6cPUUh3Df 6Ch3DfmƠh3Df 6Ch3D 6cPUUh3Df 6CAfmƠh3Df7mƠh3Df 6C mƠh3Df 6ClƲ;06Cli`3DfFo 64 Q0-"a( Qf0! 64zQaZTE6ôl( h3DfF! 6UUղʴl3`3ﰕAV#u&ی*6#mqe1.v5nFm븚?Kl22xޛ ٌY63f3Aglƒ96? l3ƻf(Ӳ4l2`3L71) h3DfUa( h3Df0a( QfLJ6ôl( DfFo 6CliU Ӫ*`3L7amƤd3DfUa( Df0aZU6Cli06Cl( Ӫ*am( Ӫ*`3LamƠy΋y΋yΓyΓyΓy΋U}yΓy΋y΋VUy΋7y΋7yΓyNQ;yR;yQ;ɝr4:Kvޭ-W{x);G}2d>ܫ=2 6Kd||o^o{&v>k̇x7lk:2w{}c#{C#M2|6ٖ츳'ʝw4Q!CLyb}(IɇU1A|(CDVUb̓(hD1-"bZTE>D|i&($u)K܉2ѝ8hTFw .D2*i3CF%L6*>w<3dT^cXz Ȩ|  =^c[&ڄq=k1ʀQۼ^?3&|oxeqd Q۱fzd2j{&sfȨo=bŸ4*(CF%Og4Z hTsVϳ8=(xgb(xYDg1b(xQ,ѳLJŴ<(xh4DF! E^7L6*{j\oʸ 3xwReȨ1ߟhe|Ͼo. y2٨}eȨ?W&C2hTQ NѨg22*GQO6*y.0ʀg1-yQ,hg1E<(xӪ*,hgb=ˤYLȳg1FCM)׸"3}^!23|g}D)y}8 Ig\oovzU;/q 3`_nx>`Nd6>CwV k Nf+vE';ȊيdElUUdbYQt2[)8AִV k c+v5;ȊيdEldbYS[)8AVV +Nf+v5;Ț؊dEldbYQt2[)؏AV +Nf+vE';ȊيdMlUUdbYSp2[)8Av\F1NFit2dDɘF! N4:Qp21-"'c(8Qp2Ɉ1'# N4Qp2~'cZTENƴdi9g,h_R'L/WQ&ڗMM8djb 6@25q_eiɦfN++i!S3G_ydS3>篻nfM0go}mg S9AGyԦf>=-E+J05p)C&4g)hjig1=cAS8&YXehBgD[ffzƙQ&'O:?<`U~x`L$ 4 Q0@ѵd ФdL2E it-`DVU2$ 4Q0@MJH iQ Q0@ѵ2E ( Ӫ*0@UU`DF2) hD2d]( Q0@2$ 4 Q0@ ~F$ 4 Q0@`Lkd (IU2E ( hDVUd]( ZD2-"dk^e kke E#L"enER&"SBճE/TT^(d/wQP6 y9ohU%d/4܏+^iy!g^hf y[兜6z=?xcj[&{q.<kXZmC^h|]l!/4}=P5IBqj2gWXc +x ^86S#2@4 2G4>r& Q0@`LZF" H i4@2-"$ 4Q0@ѵdZUȴ ( ZDF4) Q0@EUdDF" 4Q0@`LVUd]ˤdL$ ȴ it-`DF$ ȴ ( hDF4habaS0@[ϰ)gX V3,h+E Uڊ}Em>æ`baӪ*4@[ϰ)g V3,h+4 npazpOb6ܩV_\F^ڿ /qǀlQ8d ݪ皉Uʐ-z+/lV_Lh+/9{^i̠-%M^_O{ gUDGm[ؿc|~͐-=2da{Eyʗ2dmg1;B)C(3ozsGԾiں}gw)iIgʀoҊqqLid4 ~C4>sɾi>\ގ^!w&xת2KRP|d 7P|6g U<Zq`kQM䛊oPZ$fdzYY" &yo2fG|(&&%dZTEI|i4;L$ ɴ |iU&QM숂o2iRML7o2fG|i4;D7VUo2$ 4I7F$ I|iU&hvD7o2I|iU&QM7o2i7=Z7o}(A7 IΠD7 D7}ӠD7 I }ӠD7 }_)jh*odMԑA7WʀW#Cn ۙRfWq6GUԆΫz3Q4ڭ-9 p^{缔%k MXuʴL3  0Q0aфMJ&40Q0a`Lsf(0Q0aUU`L 3ILi4a fZTE&LLitN`Ls& &̴ LiU0Q0a9MJ&40Q0a`LF$ &LLi4a`L 3&LLi4a&l)y7 [}Eф->h–bwQ4aKϻiQ]MRn &l}ej=x ixa[pyJ\pjkz[tRV]RV=RV͂՛6RKWy)ZL-վ`j_z0kK/=ܗ~~qK/=ظڗ~|"[-C6n{J9m}Wǽ{q{YhyːW'Y{&۸u[klNﵿg7y=ִqK/y0_l;Mkʼ:Nqc'-mxZS|MW2`bd5׸-L-n9m\qڸڭzq|e?TѴq Voڴq K__E[p_:m\Qy-}}6n)7ݛ[E-~hb{QqK߽iUڸ^mRwo k)7݋[E-~བb{S^K߽(ڸ^mRw/6n)7ݛ[E-~hb{QqK߽)ظ޴ mRwo 6n)7~c_qM6]4ٸfwl.Ihq'6NlE]4ٸfwl.l\ttTϠcL^vQpNEݒC2יx3nW} Zw;3vf:$vҎw2ٻ%uf:ݞyf:;_0la͙Av:3h.W&jհ2lc}9%= |аoq>hwm$= X}=aϵ^g l$3?ˆ̠akJ{&9[{e_3`ؖ}qX3`νמ ۙ!6@wm.o4lo+t ەɆ8 2l\2lgcخL2l'3Aߺ½W_EdV_᠍+m\|DW_hrt.I;ivtM6]4ٰfGw.ZUE;ivtM6]49:Qpt'͎EUNE ;ivtM6ѝ4;VUeGwѪNE GwNIhUUvtM6ѝ4;&Gw.ZUIhrt'͎MZ8g\3. n'EG󌀓yFI<#EUvpRtt;h89rv'W`;N64w;r4w7]vqNEsj^4w{5pW3 lj>ݎ3 ~ޝipfN}f˙L0w{5`p2duV9L6w궾d͉sqCs7^۸+U̐۷3 >GtFp/4wGF^|ͮtïekDLeŽO{&2{5 <3hnNZxpfnf ;>Wu^4(β]sLӦ۫UMs㤃'rt;40mڸ^P\Qum܎ +*Xw<@m3 Nm\c6w?hD3mX>eZ|__)Ӳ|ʀ3͆+^_*Ӳ|4,2-˧L9Ӱ|3ӳ|4,2-˧Lޏq%(;lj7eZN0w3h9:gU;ʴ2-GL)Cn= e1Lk6'U_2Η 9=L2ѥ{^ 8x/Ɏnnn8n}stcpH[}nxݽ̐KtL9ptʴ3O ڸ,mi˻9SLg߸3mmx7efV\88gϖl\8hm\}stDG7)9:D[Nsi9:g G' 4::QptUUDљF& 4:Iщ3-"G' 40QptцGgZUδ (8:h&%Gg(8:QptUUL G' 4::QptUUDљFG' 4:A}oUttщ3N(8:hDљFG' nRrtEULG' δ!Gi8:eZNpt*{ L)Ӳq4l3 # ٸ )CkbL4\Lѥ"ʴ2Lgк֙Si9:gNttc)gwX :蚔G5#~9-g3]?ݰc9o-]8rtdG7;;֭d͙Ɏ.M=3F/]orts׹b-)rtDG'J.1s&::іsi9:eљ6֐)CwVon4wqZN4w̝2-sL9ݤdLA}^~ϙhD牂3>O|iUoRyL牂3L|i4gDVU3' >4IF' >O|iUO|iUom<6EqQyϢ8)gQ}Ƴ(N>oY-b,pn8jn\m ʹEmhjBEUZEׯ[9x^M˷U()['f۞ijϗ8) 'I͌VMsuC۪`j:İ"sg3ܥʠ+|>!{c>gds76Ʊ%C.s&,ocK8ojLmt=0t&vz a'As7㿙n+C;`s}t}ކ!L>o9pm8≶|VM*oC4'rt[58 @E]GQvtΌk: KǼ6EQ?vtO8):'T*Nn 񄊋xBIm<6PqQaO(ذ'T*Nn 'EG񄊋 xBEm<6PqRttO8):'T\*.ZUn G񄊋ۊ *LGg(8:Qptц3NݤLљFG' Ni8:eZΙu2-G 8:ӆSu3 sL)2w4̐3Ns&z/Q0w܉̝2h*>ggЙzeNSei;eids7nmfͫG{ɐx}Vg;C2dt gUɑy_=e܍3}5;gܥ!s^l;`F~ g2W^s2wӫmgsai;gm;gNS̝i)2w΀+W@ZgO|iY>eZOs&ZI6,2dc9[>n͖O4Z!gݟ(?ӪVpLegߤDUg-(?hD3gZUOܟil3Oܟ(?Ӫ*pѲgݟ(?Ӫ*pLgߠnG4?Qpg-(?DMJϴܟitD[ϙ2-L)rʀ3ޫiܗL)mΙ!g ϋ-=L9͙(?D[Oti)gg@oڸ7L)rʴܟ3 ʠweNo94ry=8V+^2߾w}gg8n1@W9ߨ6̗cT_ZL9pʠ7LvsX﷿7t|gw(Cot!6/.SfOi?eZOp g,)m;gπ]uV)aMò=D@sWSКF%G*::zDs' δz`DܙFG& 4I܉3-"s' 4:2Q0wёsgZUδ ̝(;&%sg͝(;Q0wUU`L#s' 4;Q0wUU`DܙFs' 4A s,Lܭ4 S0wk1BZLEs,Dܭ4 Ӣ*6wk1B݊,[qf\Š3.hѭ4|4 ]UmMs Stt#4w+NxUt݊s+ZihrE4jEU#3j=B[3.iqomS}yk5byZ _kCg:]V# ϳ[3.>o>_^j|Gϩo|Zθ>oy|Qɺ>o-&_8+4wk1´bMZW|s㪽qp^8MV/k[4ߊ/h ƪ=eoaǼVD8ctk1%CZLES2LŔ Spk1%CZLES2LŔ Slk1%CZLES2DŔ Slk1%ZLES2DŔ Qtk1%ZL0BS2LŔ Spk1%c|F' 4?QpLegݟ(IU3Oܟh9/])ZL*CF0^e*FeiAgmAeZFЙ2 #L*2Ds& F4-_ZLieZϙS,?e 1 ݟ3x!7W|3MGdG~k s9Eq>³Vݟ3~}烞Sf_| /Tϙ ?eZP OL:ʴ<2 +'T ixBeZP׸F*EOȯm:ݽ{(ڲD{C8)tz`E4F' 4I4i4-"( 4:=Q0鉂ihZUѴ L(F&%hM(FQ0UU`M( 4FQ0UU`E4F( 4A4>lMihM(FQ0鉂i4QLdM4F( QMc6taiFg;AX<lpʴ3hiFeZљi2 Ө ƪit&FQ04imFgQ֎4L2-ӨL4:0ʴL3,o54[uc]KLX+uioY4q%2`˼.鲆D54ثA8WyiTeɦq'Z?jӨL4:q5=þe4~n!8k 1UM>mzQiitaiFgQiTLi4*2;Ecі=t!_3 {L*"sD(JN8)>ц=Taq,2-{L\{(=UDOHnQ`M{hdEU={h=(CD=4{hZUPit=4P(CӪ*Ӊ={h(CӪ*`M={h᠅=\=(AP<ݠhElE=M{Lp512M{L'4ŵX''TeF G iy#ÞPlpdPފWhs\nwdQiiTeGiGiiƑA8x?Fe4'9q~nOqd4{yɦlȐi@;M0 n-C1ZQiiƑ!Xd?[Mc^L׫iTL8~g ۟P35ʴL4M2-824FCM82kic62$42ٚ82#4#4ʀi烦 2p3#QG8h? ꘣cq,Y ZIQF+CU"q׬AvSh;E+sPUUh;EvSAvmh;EvWmh;EvS mh;EvSl烢mi`;M) 4zEQv휔liQNhEvl3 ۩Lv:S=/d;4myMgOTfr1yfk6V{*^&Q i`*2ʴ 3`+ʠLTiLeZ;2*24 2-L6q]̠\ҝʐ0-{&qg};h0U}Nngw+e0iLe`΀=3NL6sDfe`3ʴ 3`l0hU*R*iJeU6\2-W JŵS`: , WY\,^۞t*iJeU6\2*%W)]%U\3 WLU*4ػ@Y<[Xm9iU*rDW) R\i*MW) Ҵ \iUJQp NJ4JQp*MUF+( R\it*MU4R\itqVJQpW9(AU](AU]hQJQpz*iʑiJe|-62x_wTM x;2k6 2-yd'{MӦT `%EM922΀}ȠNB} zʹJLT1iFiu3kƩ$3^3N3V2 %o54mZo9sZ}}d:?_|ɴ3@^ʴVqLρ:pʴ3сm9PgTpqKіTuo3vl3UGe;iNgv+߳4l2y9ʠ,jkNeZәTe;iNgNQQmyMeZ^St5E[v*ӲD) Sli`;MW) Ӵ liUNQ+NJ4NQ`;MvF( Sli`;Mv4Sli$Nh;EvF) Sli`;M9)NӢ*vmNg}AۙiNeZ}iLc7OeZԙUhˁ:طsfЌ^ό*2ʴ̨3ь5fTeFiQgfTڌ gN?jOiQeЌ{z3&:+f83z4~c:>4Zqftky>*eȌi΀M6U2_ݷNLˌ:0ʐ.y.3L<ou.3 ѹ+›U8g}6\uaFiљQgfTu&QQ004BQv+ӲTϠe;iNeZSta;gg;iNevw62-Lk*ʐ׬hk:ʴ2-LE^85]ʴ3ki (xMhEk4iZU^Si44^S(xMӪ* i(xMӪ*5Mi栅܊C5b)xͭ<$^s+&܊C5biQ{ͭ<$^s+'3VMo<6 ·LwZ\}!g8 &Xϭ1s+g eg )4[1c V9564]ܪC`0jP߮Lkt Vጡ'mqV+>iT3Lt ׄ@r_wuVN+vj:Э=Mp|u[1M.*o: կxׁnՌqЁnՌ٢-*o: g BZuӖC|s+&܊Cb)xŭ<$s+&܊Ch;b)xŭ-zeܢE=3zeܢ\IZrrgVLr'n٭^4Y̓FZ^`\O>{؋V {؋Vf{a/(x؋&{aO=Eh2'^4yؓf{ѪaO=E=iMvR-zXaEÚF+ V/l%j6Xɵ )CV,Z͆oޏ>q2d%`އd%j6T\ YIk5*Ud[ Z]ꈿecJ״k%b6:i%ߎZߺVrfC\P};WeZVr-gCk%l(eVrʼnQh%.['W0i\)Pq⊓7ռFruQ)ռq);WZ{*O)'*;ً5iǵT7grS|qm{rWDb+ɕwZLvE+L4Z{mZ=pJ(\)Pb )Xɵ%Vr-@\)Ph%b )XɵeZUVr-@\)P`%b D+i(XIh%EJ4Oi`%'%+iZTEV4?Q`%M+iZUVRi`%MmYIeZVpfzVYIіta%+iڰ ʢ zT u>80ʐfD2s4w:3e`&L6qoǙA 2d0s f2~ʀfљl0ʠ!98o|ZS0ǹB4>-L`*SL[a0iLgS=>E[ҙ*E[Rt{g,_k625Ek62k>цTe0iLg]\3 WLU*ӚLc62*Urʴ\3 _ \2-WLU:8*MUJeZҙ*EU4 ~-JQtE-WLx*MgR\i4 ~fY5xh;Wi@EF* Դ (8P@EF:h@(8AсTl@E@E؁m@ET @ETM:2MLˁU@G@w2-:2@E[td`e(4my͑!9#^s\݇ z4ڙkFps=#C^S6oZu{͐L=m}d9_-;\IT4^u%*X+!ֹ"wG:' mn}|kL |1CU fk5u+էtt1_o]L5 ֯kjc隯kj\sԦkj_S3׋ktmATͮYɮ9*jcfZ{c&j+&OfjfZ9fP;ɟvvj&\c&[_$11L̀`ڎY} 5]5u1tM̀k9*j뚚c隚 +jk 51Nxkx9cǮ9*蚪kVB]S\sTtMUp]s|5]kkFTTt ]S\sVrMT䚮QU5U5]kkVTt ]S嚚ig9gz)Z陆kj\5TmLvτ]3@p13FڮttKf5m(ɮ9}xf5^;g5~Ys]iNf5+>qO3ߙyϙK͐kƛ4CY?Ǎ\wL55rMʹ\3ۄ46Cx\sqkɮV-Ltͷڸ}]3- >Z\S35Y;S5^tmlLtD|זϙ`z!i fP0ҾJh- Xk=VV*JjifJǯ珚ig???ngީQ3-Lxo]]Q5=L5CO[QevZVUz&*X*XkJUJT``*U*]UV=*]UUFTTt* VRrVJTdQU*U*]UUVTtV VNeiYgV9gzVYf*6[+ Y| =]3MLޢ@Lm׮k t|L6@ ?7L6?SGO3l/ijc t ~dOC_ ?͐[< t6ssS,NK5AD{STt" "Z DPD5*kQQ?&(QUA]F{St" "8+kq*Aho QUA]SFTtFA͠ўi鉠g'ig@"U~zx;5rBD'T'tN_  :MT'oac :|z&;<|> :85zof [;LvdmP3_yϙ4CNo 9x>Ocz&;t~S3cᄞi8fZNzᄚi9gNrB׆jnщgxǹ))6LQ3oπ)dbu4j^>#)3  jǷNJFSSTStNZ LQLѵaASO2Y{)z&**kPo4E%STmfZ޺)V*kL=_*<9ZN(r U ]SF'T'tN8jWq+8U? NxϨ^3WqjtBV-»jy;Q*QE{m\^TWq+Uk "w1+N+.dn o?֬۫xH%i}9Lj)Wu_[`^}9_ʯy\󖘹M0꾜c=Cx}\is,^O;{=4)r򓛞ɂ_̸#3 ׯ-) Li Uޗ^`^}9 W9ÂyOYLWwfP0}9igtEfo o3yUTh UݭS+Wn͠`^x[+q\ /;p\Q0/ljњi 7جʂɧ UUywոӫ: UU̫}Wg{늂ywը`^]5-黪l fs)5{WqW*UU ywոVB׼j\5Wpͫ蚪5U5U5]kkFTm鹦g 7IcTt ]S\S\5*ktMՖkj嚞i鹦gӖig5ӿigkj嚞O[3 LK05Lϔ3ʹ3Y0gOO|9?Ͱ`, z[;>g]k33Y0Fj3KfH03|׸k%ɂoSLK05L4n rL4n &!tmfP0vO05`=LLULU- 5.Z`z!s'if@0UA0]`F+TTtNZ Sӵ!i g`Lʹ3Q0UA0UA0]?mP0S%i g{ Z 3,_O05L4S3-LBULUL( թ@0UA0]``F%4kU`s,f5ߪY0wMjG05~3df.Z33?w5]s욻&\55Wͮjv]k]s䚫FtVSe|?55=s\3_׽fHӿmk#{&Ii3 C=>KHif 5As&K54jq>7뙴O3 7Qom!g~~O˚!iL3Q٢u}.48pW~s9כq͠4 H˝Ek#kq=8 ~>mIHf473?5=׀iR=s\33I%W*jG%Y3{mLzrf5Q=sLK%Urd\5V*kUJUrTY%wNUrլ\%LG%LRIՖJJf\56-3V kV] Y%wJj{*f:&Lg :Vg rl&\5[թUrdF棞sVL|Wͮ'U+wլy]5k|WͪM<;^)~m7ߜ'ߌ*7㬊y8k|3ή 'ߌ+7㸢kxͪ'`S-t]kgZyv3^UyV_'kGguδy7<狢8U{&kgz5ijY݁nW ijgeUks+>D.Y5Cڙn _3{s>鮣5^35s}̀kJN竹?3CLv){f53]3s9îdkjsA/?Y3Nvjک کNπv﨤g8E~=9՞vjS5*hktEUNUNTթ@;UA;]~Ϛgvںgʹ3Q;UA;UA;]}3 =L@=>`@U@U@]7gzꙟf@; ڵ޶3UA;UA;]vvVTtmhfZ陨6Btک SS5j*hkNU93=LC;5N4S3Q;UA;]vvvFWTtک ک ZӵiifP;yH;]S-L=pMʹ\3 L횏4rMπkk\s|}?]3 ל3iAL <^r(ɮ *u~g{;_Ǿi͐k;pٛq6tk?3kzᚚ!לk}_ϙ5oks皞ifZ陆kjTm g`z& *jK0={ WסFtmYg*+giXf*U*] UFTTtNVZ RҵaiYgUڳJʹ3*U*U*]}tn3`YfZV1ptV V Vл9ӳJπUgx;`e* V VRҵ:X*Xk*5CVY}v*Gm[7 Vy AU|CЪh*Z7ڴʣ!~? ipt 3-<ޠU*7hUʃ Z{v<ޠ]*7Ve*~df̣?&oFwݞ>k)Gq QyT mB~g ?s7gP0+Y f|3g5C vx95y7qy nwBni`~bo`M>o˻`M> GuOܕ陬wO`xO+Gyd |v5X5*̣ߧt<&hoT2tǤγ**yǭeLʡʩL*=ӰJ͠UzXg*_Ps2Y3d@4? XeU3*s|UjRrs|Ov9Wok_3dk|>ʹtn)xk5V9M=L*5V?NQ3*We䟧Y%][KʹQ3-L5QQ5[m<zVQQ,H*Yif@%UA%]JFSTtN*Z TRTҵ!n@%gfZ*陨AyP%g-$*ɟJz&| \A%]JJJ6nT3ɘ5RÌJۖJz&**kTIUPIT LK%=UrԶJŝ=wqg+]٣*ywJŝ=M;{軺>wϴT.QE;{TQ%UTɻ.q;{TQ%ΞYY%=i]ٓu)*y=߼-w6.oxWxiJ]Γ_ Ic3-iy+5ҘL9A͐4<͠4=,ydi<Ž?4?ƻi{xq3]WGo^홖?x[wTo[it{%#Xo/筶L.o3vM.nQESqTfU4Żǵ:]܌x7㸶LnƩnf>EfU4Ż5x7Ao95Ż}_gM.QESr\zȟ7zX?CY*]vNxݨm7wqۍ+8ayD'y m7 ]F'T'T'tN NPs焞iL =pB̀F'T'tN N NEN5:*8*8kq*rB׆j儚iv(g-LC5C)FLt·3te Zjpᄚi9gNttg b :a|f sN8Fsn|0p´3R3tS~!=Z=p|tC=z^!=3=~gzzigkjC5Cʹ3 = kCUCUCרDUpBUpBf|ũHTA\FOSSsNZ O5*z^J7k{.{[-;U;נV{ߓ;4N3-LK<> wQTATA\ړ;4N3-Ls=5*ȝ*ȝk;U;T w w LK<nԦ}}ܹFSsr r rN5ʝjKL4N3-LC4r rN5ʝ*ȝ*ȝk42U;(w w wũH\r;ɝgܩܥT<ӸZ3- ȝkC4Ӓ;4j%wiɝgͧ~&>͐Ż2<.JtΰܥWjn|g>3uJ3$wQ<.*fH~E͐܍ 1,}!wkWc&?N3(w;!wЩO3-LC4rn3m潧=<ʹU3:4N3-L<>`tTT\Z͚s ƹVKsj -M,͵:X*Xk4Ӳ4DKmiTFEKSK-mT4UQTFEK?#_3ligfZ6fQTFEKSK-mT4UPQTFEK-M8[jL Y XڨMKLL ZjLղi܂i,m|1nm XZzAK ZZz23'4C^Hyf-!!KD X?|1C61Ӳ1Ӵ1Ӵ4̀]ieiciiieicsm٘i٘ifZj6fPTAFE5LlTT3UQQFE5S5{UV3TfOj >5*٨fթPTSj >5**٫jZlTT3 Fo]5LKLSLS4>ffj >ffjZ L|jTTQQTAFE5SNj6*jKLS4j6lkT3UP3רfffQTA\l3Y׋fZj晆iL5*kT3UP3UP3SfQTATA\S6L3fm ZZ=4,M3-K Xk4CLeig4C6_צv}!K4dK YZliC [ZzfRi8fҢWy&[ZVU͐;;g6gN!wUyaN!wM=egLvx?fN5CoLU;k I7~23n3Uq6t՚rsx4= [zT3-wL4zm6y& t߅iN뙆i5**kt7Up7(\nnf%ws-NE K5 **ku*p7TnnQT\J ZM5Ssݍ0vl-wLFwSwSws5+kt7Up7Up7TnQTT\VwSwsmfZz&ۨmw;[\VWpA,nEPEw;[TvV"gu+Bv՟n(lgq+YZ ,?p:\AU`,lewsm ۉ__gu+Bu򦰝6Wxoխogu+B|D3hioaK;[>)͠<=nEK;[sUGgޏUgq+9>?.vf>v4\T!`R9l>El||Q,?Ⱥ}d5;U>vV7?>vVdsmJپ@3(agqӁ*JYt v79M(agq,agqӁ*JYt t79M(agqӁ*JYtv79x[ ;NW@%,n/p T@ +~*v%,o/(֔@%,n/PE ; \Nୂx#+JY2v - agqˀku*e%agy%j2Fs> >}L|L|5*k1cϽg3QTT\yyVRr KK˵8Uϼ<0/fiIgy!aO'oIfZSeA K4SK^=fĎgE3(a! O:ylhԼ~̐EL PSe񕙚˷&x1 5 _A}l}L|L|5*k(U1U1c"Ss >%J|L|̵:ku*1U1(Qcf%Ss-NE> >l91πOic W1cccQf%s> > >Z |5J**k1U1Tcc L<)a$\F S S s %L$l,ao8U6ItKt5*ku*-U-H[QTATA\éxΰy!=+~ke^ig楙yy̫8=LK<>Pmg楙yie^ifZ0s+>?2kϼzd?o Wv%d󊯾 W|L3d^LAT3d^k6ҥLü45 ~W3`^I͠yi6͐yE3=Lü40/k&S$3 Hk0U0U0(a aќTATA\JZ$L$5*Hk4'U0U0T aթ@TA\9F $L$̵8I*HkPDO<He^ig{ Z`^`^Qf%r Z 5**k4/U0/T`^`^ W]D5jۼb+Qw:h^G_(yb:p?+Qlw:Mթмb+Qlw:Mh^nwQm9[54_3M:ʭٚu~6w6hoLӼjkT/u[ӭiQm~5>r[g{ҭ!W:lfȼdAೡy2yxK3cWZΧ>T/uT[VR5C67Kgd?{S{D:s^42[3$a^=[5 [3(aN'i%l'wd?(a=s [3(a*K[yh^ol^-תѼ9E4/׬[&Z5֪YvNukHfZ5֮ITAv-Nj֭]#ukHfZ5֮թnZ*֪YvMj֭]nnukT[f5yϪQjUXFzթBZ*+ԪYvMޣ kRUBjTYvM޳jVUBjլPV jV]BFozIfY=tVUѐn**[wy`H7n_ MhH7o_ ﻂ!ݼ}ThH7o ﻂ!ݼ}U4owv7oVA>M-;LSn ijg~ԚZt tehdJOh]]qAr;xn _~k͐ {\(KfȅW5,c&'{6 | +ͅbSgZ.tf.txWw¿UP sUzn*Z{WEy`=7yߵ8[{wUy*7y_=﫢ܼ}U r]zn*Z{WEy*7nt*7niwEyh=7o^_뻂ܼy}W7sUzn޼*Z͛wyթzn޼+Xύ;*Xύ{}]FQQq GgVTd=QUTzTz\VQq֣ GGǵa=sg4G3d=є4C =Ty!@i f򭀻WíR4TG3 P|@3- XZf͐̿?o3`=99֓ YOd|eZZOdnfz=L1~&[fzz<z {&jﭾo͐iiXf:Lp{!@i gFkQr  Z 5Z**kYI\SFkQr֢  Z ȵ:*kU (@"Rr֢ EHȵ:ku* U h-FRRrNEH5 *ku* U (@ @QFEy3QTA\FkQr 4+ kq* h- @ @QTA\SFRr  9 π5Ty&jP͠=S_-Lz4Ӳʹ3`=aA LlƜARw YOπs ѭx)F3d=_jAILc@3_={~a9+֣h1sAz<Ӱʹg3 Lz<GG5*XkUUT`=QUTzTz\JZG5*XkTUUT`=թzTz\F뙕Gǵ8Y*XkTUר*`=`=թz\SFU5Z*X*Xku*ר*`=`=zTz\SFQq3ja=oػ\{U7bsFUz.ވkq*7bsF]z.ވku*7b sF]z.ވ*Z݈W~ÿ`=Wzi*7bo{4]n3BWw#iЅ];홖]WxπxbcΰWiT*v_; (U&͹*9e { | h}fP|ߞ:y_;(@qÔfPhVw$ z]k)@Ww+@fp+ Ѕ[*Xśwxs(@o^ի]zW7WZջ\zW7WtUQ.\* śwkxs @o^ի]zW 7WU Q]azU7Lt]Z.0+WEx(@o^ ӻ]azT(@o]o­ѿ k U (@ @ @ZTA\JZ5Z**k U T @ @QTA\6h3  PvZ䙠fZ䙆i%@{FQmYgy4ӹlʹ3{i%@iМA PR 4C3(@C,@Qs4C4~3xJfHfMO~?>?$@v=h5C__Z ϱgVoϜ gy& **kU (@ @ @թ@\Fȵ8 *kU h- @ @թ@\SFkQr4+ *kq* U h- @ZTATA\SVRr2+ k U U T @ZTATA\VRr hT?b(@QTA\FkQr 4+ kq* h- @ @QTA\SFRr  9{giz/4H3- P,i5 jK<6j%@9ifZ,@qk˜ fH>y!',@Qs4CI3 @y[g ef@l fH7HTZʹ3 LK mwvmXfZh=`=`=QUTz\Vq ֣ gVTd=`=QUTz\VqN֣ UE5ZϬd=`=ũzTz\FUQQqNZ G5ʬd=zTzTz\SFUQQq֣ Z G5Z*XkQ XX*XϨh=`=֣ 2*Z*XϨh=֣ZGTeTQzTzFEQN3*Z*XϨh=`=֣ڲLz4Ӳ1Ӵ1Ӵʹg4G3-3ΚAQDS4(RD3(@)i f{i)@i k;c4K P+^3$@>,d3$@ Mc(LQ݋FJ;=(Q~ᮙi%@c)@dYVeQmYϘiZfzFEGTeTUQzFEQN֣ 2*ZϨh=`=֣ZgTUPQzTAUFEG:Zju*QzTAUFEQyUQzTS֣ 2*Z*ʨh=VBQN3*Z*ʫ3*Zju*UPQzFEQG:ZϨh=`=h= >z\FQQq GgVTd=QUTzTz\VQq֣ GGǵa=sg=i䥙he=iXfZl=Z֣׆he= zG3-LCu4R4Tgΰ=0ϚxiI7kT'|噬:Qh4 N|g@u4͐/^ NM3::Av4^٥x:ՙTǵ:igꨂꨂF?Qq Z T5**kTYIu\SꨂF?Qq~ Z Tǵ:*kUPר:ꨂ"Qq~ DTGTǵ:ku*PUP'FQQqNDTGT5*ku*PUPר::QuFE9^UGT5**kUPר::"q~ UGTǵ:*kTUPר::: ՙ3:IdՉBfʹx:igR왆he=֣ڲʹxa=iYgJ|ӜAsO Z?<*L943ގxdOhz;d=5ixfzkv2;vۉfNnA3h'u1vD3d'h4Cv;n3c_dďAܺfNf5vn3 ;LN<Ӱʹd3NTN\FP;qv v vZ 5**؉*؉kYN\SFP;qJ v vZ ĵ:؉*؉kT Uh'";Q;qJ vBDĵ:؉ku*UרF;Q;Q;qNvBD5ډ*؉ku*Uh'`'NFE;35ډ*؉kUUר`'NTNf%;q-NEvBD5ډ*؉ku*Uר`'Q)TNTN\S";Q;qv vDe'iىgvxTNi%*!Qx JٹfZ♆̙hEea}g@T=>kD%oNL#Q)ǯfLTkTg@T͐Wi%*ifZ♆h%*s'* EEDED5څ*kUUT *.TATTAT\JZDED5څ*k UUT *թ@TTAT\]FQDEDŵ8*k Uh * *թ@T\SFD5**ku*h * *QTTAT\SFQQQq2* YTocEeTԗQQ_T9FE}Q}UY_TSs2**˨/թP_FE}QEcTԗQQ_TSb}EeTUЗQ6E3Y=>k,i9˘!gZLY4r1Β^,)9ΒjtW<{ :?<_)pfY+4C_15:  =Ag8fY4;+JVYʹDe4E5-*ʨ(*] 2*ʨ(*թPTT.FEQEEDUYTTS v1**Ũ(*VBQQN2**Ũ(* *ʢ2*jq*QQTT.FEQQEeTT(*թPTFEQQxUUQQTFEQQN v1*ʨ(* *VBQEEDeTUE5 ֡(*[gFPgq΢ 2+9kq*r(,,YTY\SFPgq ΢ Zŵ89*8ktUp,,,s%rLY4ŵ%*QIwh%*ɢr3(*|͐[LCT43yHT͐ħj4^1؉g@T͐D]LKT<.9gYv'ʹe3YTY\FPgq΢ ΢ Z 5*8*8ktYY\SFPgq ΢ Z ŵ:8*8k Up,"gQgq ECEŵ:8ku*pUp(FgQgQgqNECE5:*8ku*pUp,,YFm:˿v׆h,΢ ΢ EC5:*8ˬ,ũY\hFgQgqN΢ EC5*8*8kq*rT,,.׬/Ol2߼(5υx7igo_QEIB=&;𛼏3 3;j4π߼:!_<~G37і4~ MitgAAIҩx7!Oy7i͜gߨ߸FQQqR ~FFƵ:kUU7߸"QqR ~DFƵ:ku*U(%7of%Qq-NE~ ~D5J**ku*T77QJf%q~ ~ ~Z 5J**kUT77oTo\ߌ~Wg7-3M ͨ7ߨ~ ~3*ͫߨbQ)fTUQoTSߌ~ R2**Hɨ7ߨbQ-N~3*joLo411̀Oh7cfԦh7c7Itǰf~'H37pE9$5qg@j͠\h&=٥@)XjS3A (5ƮԼfRQQjTAjFEFLdTUQQjFEQNR &2*Jͨ(5 5RZfTU0QQjTDFEF:Jju*QQjTDFEQyUQQjTSԌR &2*J*Ȩ(5ԨVBQNR3*J*ȫԨԌR3*Jju*U0QQjFEQF:Jͨ(5 5ԨԤE(5 LKj<FF5*HkUYIj\SԸFQQqR RZ F5*Hk4UUT$5ũHjTAj\R(IhW3Qj*)Z&㙆hLF(4LF3h20mt9&_4I! L|3dTdS۷=yǾ͐]D&oLd4&|3#T[♆h/s/)[ר///9TA_\V}qΡ eVT//9TA_\sV}qN C5ˬ//ũH_TA_\sFP}Q}qNZ E5:Ǭ/Q_TA_TA_\SFP}Q}q Z E5*kԗQrz][r^.^Wp r{{ge}/wW.^T/w.s^Uԗ;+]UE}-}qoS/7nl/w:ES_roKͿM}/wW7|їKrW;~l4ԗ'ݿԗ___&_43c_q2kMfԖf&sW;~dn:I3(5Yjo3+KMO &s;~]dbǯ*]UEh2w׵:]UE`2w׵8]uwWM.vŎ_U4 q;~]dbǯ*]UEw.vŎ_U4&s;~]A?bǯ+]UEh2wWM.vŎ_Th2wL.vՎ& &Ld<MFLFL5*k4U0Yd\SɸFPQq& &Z LFL5*kU0U0Td2ũdTd\J4&Ld4MYғʹ3 HjKj<Ӑ͠ x HMzfF3$54F3$5<Rh&ʓfHjeπԌeAIOx&KMZ3$5wJMS&͐?-zR(5 5QjTAjTAj\ԸFQQqNRMDF5Jͬ$5ũHjTAj\ԸFQQqNRZ F5*HkYIjTAj\SԨԸFQq& R RZ Ƶ:H*Hk4YIj\ԨԨԸVq& R RFƵ:H*HkU(56z!׆h%5R R RMD5J*Hͬ$5ũHj\ԨԸFQqNR RMD5*H*Hkq*T$5 5 IM3 LKj4Ӓ?-LCj4fUy_fZg<͠ߤ{<9ʹ3 Lo<~hf5gM1OBizC8i3 Lo<ʹfΐ߸FQq~ ~ ~D5**ku*(%77of%q-NE~ ~D5J**ku*T77QJTo\J~ ~ZF5J*kUUT7թoTo\J~FFƵ:kUU77թoTo\ߨ߸F7W%ص7W{KgobK*Ul VE-7W%ص8Ul VE-7W%ص:Ul v)- %W%X*~s[UobKk.jK0}sU[o.\%Y%3-pK0{w{7W;*v\` ~s\U3qO*JMz}fHjIM|fPjV_Y,5Uߕ\.ӕ\RSTR*UVE}h2W*\>`U4&sUdb+Uv-N&s]A?b+UVE}h2WXM*~\>`W0&sUdb+Uv}h2WXM*\>`WЏ &sUdb*UVE}`2Wص:Uv}`2W8s EqmfZ&h2`2`2Q?Td\ɨJ&ZL5**k4U0T`2`2Q?Td\~ɨɸ"q-NE& &ʹL3 Ld42?h2Ǡe2ifdf4LF3`ЗS4k%|vΫL6>o Kږfrv|xYm N 8O3h2ǚLf9-驭=M4䬶3s+5g%Vu-ԜxURs>]DN+HWE9y(5'^}ԜxT,5'L}xURs>UQjN+w9y(5'^}xW0Rs>UQjN*Jw9y 5'^}ԜxU Rs>]SԜxW Rs>{g>ifZ~777QJTo\ߨJ~Z5J**kUT77QJTo\ߨ߸"q-NE~ ~ڰ ts3 Lo4?-L זh&p'ϚiIgR3gzReRT͐DuLH!t~Қ H_>KfZR̓Z3`2)Z&㙆hLfV2h2`2dTdTd\~ɸFQQqN&CLFL5̬d2ũdTd\~ɸFPQqN&Z LFL5*k4YdTd\SɨɸFPq & &Z LƵ:*kԏYd\ɨɨɸVq & &MFLƵ:*k4U0h2&~ =׆h/ C5*ˬ/ũH_\sF}Q}qN C5:**kq*T// L֗(ifZ♆h/ʹ3 }LK_<2J2gzx&GzMfH_{&Kz͐!i%m3/x/!})#I_\A_7x/}5*kUU/Q_TA_TA_\SFP}Q}q2+kq*U/9TA_TA_\SV}Q}qΡ eVUT//9TA_\sV}qN cVר///թ@_\sF}Q}qN E5˨/[ο? }Qm˘if@_FE}EcTUЗQQ_^E8*8Ǩ/Z eTUpQQ_T9FE}E8jq*֗QQ_T[2fP__2i˘i˘ifZ2fڥ̐fd4zg]._Lf̴6xe2Ɍ2p̀ɤ[4&n L74ɀ͍43`23Mk,5MLd ̫ɨ*̨h2ɨ~& &3*̨h2թdTA?FEMFLUdTSɌ& 1**Ǩh2ɨVBQN&3**Ǩh2`2&3*jq*6QdTA?FEQMfT4Th2թdFEQxU6U0QdFEQN& 1*̨h2`2ɨVBMFLfT4U0i2^zɸ6LF3-L4U0U0ר`2dTdf%q-NE&CLFL5*ku*0U0ר`2Q?TdTd\Sɸ"QqmfZ&gmze seҴ$#~%7 A`k ߧ2Yg843<U1X NF%'̒qf(CN&g%̒}qf(C%Nqf^e`_^ 3پ-ʐ}Ǚl_eyʐ}i^/io+%r&ۗݵf_1yELWŒ}qf(eR/Ѿ}1E(9DF" EiW9D}1eR/MUd_DF! 4zQ/`_LvU}b=(h_&%" Ŵ(9DF! EiWӮ*/`_L瘔i/`_DvU}1C(h_DvU}b(h_}9,FDEwR݉(XNDEwrRv'MUNDREwR݉(NDНEw" (QEѝEw"TDIQt'K2NQI8ѝpRN%̢%Q,IEKREK XW-IԖaKR% Z$i2$qȒ ,ʐ%UM`Q-I$WUD%KREKRhIZ"-PI|6UmbQ͇(8h>D|EQ͇hWQp E|E! l>D|E! (Qp E|E!UC GQ4qR6E|6U(CCQ4(C ͇hWh>D1͇(h>B! (h>D|E!U(Q0E|S400Ċi4`>D|F 4Q00m"a(Q0|0! 4:Q01aTEô̇(Lqę8Ll2`3L܍2h3n~_Lh3ҝ=,MAqff(6#u^i.̰Hk$!׉8mF\ ٌqfu/ʠHg!q&یA3 6Ch380@i4-&%oaTE´(x hD[Fo! BiWx hD[0bRMU-D[FC 4Q-L[vUoa (x -&%o! ´(x hD[FC BiWx Ӯ*-L!i-D[vU0@(x -D[vUoa(x -fVi-Lo! 4Q[iSy hD[0BiWx Q0@(x Ӧ*MU-D[Fo!B4 Sp .Btg]rʠHYpʐ;]D\!03"JeEδ.u2"'q&^eEU,ʐ""* eE9"Yrʀ0](\iSӦ*r"Lc/ .4Qp"LEƮ_\("&%aTE.B\iEEƮ_\(Ӯ*p]U"DEƮ_\itaTE.B\iEEƮ_\(Ӯ*p]U"DEƮRrEaU.4v"DEF! .´ \("DEFQqG39\ā3R(*.h8i"fiS*.h8i]U"f)tG3 *.hN.h8i"{DE8]'.擂8p>颋8IO$ܷ$wwg\M";("ni3DrIfi޵Er}niǙ"eE{YrN"eq$' ]3G(tG3GtRvG3GT]Eq4sDM?9"f(#*.h戊89"fiS#j ]5h戊89"f(#j ]5q4sDEEQQtG3G#j ]Eq4sDEEQQtG3G#j .h戊89"f(#j .h戚vU89"f)~u.4QpEa~QpE\iSa](Ӯ*p"Lc/ .4v"DE6U0m"! .4QpEa"!;,g]r,g\2",Og\̬eE dP\DW[2"c.9E.w ~weEƮ_\iEELJ.´\iSQpa](Qp]U"Lc/ .B\it0m"! .4v"Lc/ .B\iWӮ*p"Lc/ .4IE0m"! .4v"Lc/ .B\iWӮ*p"Lc?)"DE0a~Qp"LaU.B\it"L(.b"La](Qpa](IE6U0](QpE0! .4v"Lc/ .B\iSӦ*r"La](Qp .B%LtK.B%L"ަ*"Yp3.zݷ ,gBn!t&wq2hRC\Lq52hҺg2KA`{Qu0m"`TEAiE:F AiWXߋu`ädL:u0(Xߋu`U (Xߋu0aR`L:u0(Xߋu`U (XOJ4ZQ`L:^(XhD:vUu`(Xh6ao&Zu؛`f(Zh)ao&Zu؛MUlf(Zhi ao&ZvUu؛DKSf(Zh9)[h)ao&ZuqJS;N4~þ3C&! :nهM}0!wPf/n#M}0yN}4E0F3Qh;6U_|GQ h h;_|GQ (~a4E/f)w4mb0ɏf)t(~a4E/f(w4N~4M/f(wE0ɏf)t(~a4E/f(w4N~4M/f(wE0F3h;vU_|GS h ~a|O4h /FDC'o ~4fD_x7~4'i O*hM_x7~4'Tm~4':yh /FD_x/8Y OY O̊_p2n!0χB krS/g_Ȯ)i4 $<гFDCnMEIxMU$<ѦlLIxg7&`Mi4 O*'zvhLIx$\4'TMi4 O4$<гF`M&vUE`M =i4 O4f`Mm&4'zvhhMI0&vUEDI0&ቆ$<`LI0&vUEDCnMi4 O4hhWU4 $<`LIx$I(ځhDE; Uv(QË>(ځhD6U(v@hDE;PhW%;PUf(d*0)d ځg:P<@؇)**poSfTf(v(ځhD/v@hNv@hSہhD/v@@QEvU>(ځhDhSہhD/v@hB; Uv(QË;pRE6U(v@hD/v(Ѯ*]Uh>lDE;PhWQË(v@@Q]Uh;P(؁;E;u6hL;`(Q;`(؁I6U0}(Q0; v4`Lc. v@iSӦ*`Lc. v4Q`Lt( ,o̒pf {ߧ):CçL!gt(C SJ)dv@(؇0}(؁I6U0m"; v4`L; v iE0v`RMUdD>\iE0;`Uv@iEF;0)QMUdD>\iE0;`Uv@i'%;`(Q]U`Lc. v@i`L0v@iE;phm(؁hDE;P(E(vlDB^@Q`B;P(EB^@QMUlDE; }xQ`(v@ (؁v2v@,CLW&]md§ ~}~~/2hD@e2`(v@hD/vlD6U(v@hDE;PhWQË(v@I6U(v@hD/v(Ѯ*]Uh>(Q'e;PhSہhD/v@hB; Uv(QOv@@QEvU>(ځhDE; Uv(QES6hDF; v@iEF; v`RMUdLc. v@i`L0}(؇;`TEv(؇0v@(Ӯ*.e3 v@?׮vF>v<@(C9B_Yi3 v@%;L`D>\iELJviSQ;`(Q]U`Lc. v@i0m"; v4`Lc. v@iWӮ*`Lc. v4ځI0m"; v4`Lc. v@iWӮ*`Lc>)hD0;`pQ`L;`Uv@i`L(vvhL;`(Q;`(؁I6U0}(Q0; v4`Lc. v@iSӦ*`Lc. v4Q`LF; d!;{RgݕA;nLsB3_2dDNߙϹo3Y,eN_X%`YD @u>v3ý}@oo =W}ӝG{{~z{gbo/ iE4vѢۛ.ZzI7m޴z{QMc- iE޴ z{EBo/ i'޴z{QMc- iE޴ z{Ӯ*E7](z{QM4vѢۛ.Zz{QM7^z{EOJiE޴ z{EBo/ iE7^z{ۋBoo{i^z{ۋBo/ iE7(RooTEiE4ۛvUAo/ iE7](ۛ6UQooTE(4ۋBooUiE]ɽ}k2K3 S׷f([3O'L3m~}kb5L_ߚi|]Uدo4>S茷f)t[3O7)[3Og L3~}kb5D_ߚi|دo8w.u[7a/s=S̷nj^Sjg_oupowP~|>[__,sߛʾ ~gUPy9uY0e4\vo~';_ܿφ'dW~=[}e~Z|*gCڶ~yݯ3N5\cPݿhRlѽC;nŚ?I^VUp4&_sw{/q=s]yj߫to/`>Ѩ^X*ܯ qyI-S>Si왞-}jME~__U+u=s{xWj#}g}{:71Ot;[8ߙp꺦ړ |h-lh5]^;gΘ '>?uϤgtK*v]䳮v^Ф?#WQ0gZe뢮6U'?k3JVnWU|ݾͫ/뜏͟n>||߻u6_u\Οҽٸy,/9r\{^?zVW5u^tgN53=ז}͟O~>_}6q}s6zr䷺﾿YU?S=߿4_~~o~oy3;fCĝ?W+1/P?߿/Wyi{{z>xz{s{>S;앿_U8^}\,g}ΟcꯣPg=] ~})M(8N^;QW[^[Of~ݯj垼?C=?ȃ?_w߯>TׯK|~Ws}GϏUp?2Q̿?)ݿD~Sj%?7:_s=L|p;ÿw?r0 F'L?:VPjvγW^SW_yyٟ?7̟_~廬W/rW/r:~e+ӯ̟_~e>0DZ;&q*t>g8mv3_6;~y|!^?4:~慿>`OC?)Ϧ֭=hZvѼnA uk4h^]Uyݚ([{дByڃb.׭=hWU^]UyEBA ukV]4[h^MUnA`EM+.׭=hZvѼnyڃvUmi-M.׭]4[{аn4P{MU85κ2jZ9jWfe7G&P5-J^\ZusR^K&PG=­{&>kۗL\vyșx ljk7>sgWw}d3|e*9XMȄUj8G:XݨL^g׿z=hZwѼ&yMރok4ɻh^wѼ&AM.]4{д&O=hSɻh^iEM.]4{Ю&AF[U^iEMkDaMEm5yU]4{дyMEk*ɻh^i({д&yMEnk.]4{д&yMރvU5yk*{д&oR"a](a](Ӯ*p0](aU.´ \(0](QpMU"LE0]絬3"DE0a~Qp"LaT"AQ}[_;{eEi"bO 5G}oK\^ׅG}#-]D][.\Duj{}kLv_gDz;~_3"Ώ$>K\?o"j~t6dEɏ /Yr3"Ypʀ0.B\(0.B\(Ӯ*p! .4IE6Ua~Qp! .´ \iWQpaIE0m"aU.B\iEE0aU.B\i'%a](Qp]U"Lc/ .B\iEEvUaU.4_Q](tEEE! .(Ѯ*t'e! ]QtEQ]hWѮ*tEEB_](tEEE!T.B]\(tEE_(.B ](tEEE! .(Ѧ*v )]D{2"j >R?x_2"dko/pޫ L<]xV1qڅӳe1uų׷%.byo8 1d1{'Qr? d2"ZYu,ʠQ]DQtE(.(Ѯ*tEQ](mbQ](tEEB_]DQt]U"DEE! ]Qt]DQtMU"DEE! ]QtEEvUBQ](t'e! .("DEB_]DQtE!U.(Ѯ*t"]DͫAa](a](Ӯ*p0](aU.´ \(0](QpMU"LE0]("DE0a~Qp"Lanif 2d(bL6ރ.S0g Ć2`(qG3uqxɀ6;[& G]5b>b"dPZ5#'=3Pu5-[md(:k[&hĔACq6ɆfCAVÙ-D[0@i-D[vU0@(x -&%oaTEBi4-L!o! ´ iWx Q0`R-L[vUoa (x Q]U-L[0`R[oaU4Q-L!oaUBiWx -2[Fo} ڈ4Q-LoaUTEBi4-D[vU0o! 4QoaTE´(x hD[Fo! BiWx -D[FoA]3f|_CZfjffĿ1+C6#vdg=(C6#ޏL^k0[=ef;ϕ ox gV> ،m>L<uUpxɀ+Q4xɀ؎\L6)6#[-g͈L ڌf3Yc=NtgH6xC|FK" D,i$`ILK" 4ZIɒ6U%Kb}(X#D%1KbUD,i`IL,(XӦ*$]U`IDF! D,iWXӮ*$`IL,i$`IDvU%1>B,(X#DvU%KbU4Z%ٚ `If))dk&p%ٚ hIf)i >bk&p%ٚ hIf(Zi >bk&pؚ hIflIf(Zi >bk&p%ٚ hIf(Z)- >dku~]Fe&{ƿ+Fg4™lT$LeȨڏ5FVW5O=? ?<ޏz_ܮU"/0*_u ~?=W?^2`Tz˼dTfTlfgG2*qM3&ĻAv ~Qi6*q`Ո;p6(j dk&;ٚNfb(j dk&6U;ٚ`)fb)X*dk&;ٚNfb)Xj bk&;ٚNfb(j bk&;ٚNfb(j bk&;ٚNfb(*dk&ؚ]UNfbiWZɭ9#wb݉(h)D;1D܉iWIɝFK! 4Z Qp'NLvU;wb-(h)D;1m"wbTED܉iNL;w" Ĵ ܉it'KDr'owB24 v'i2N4gθ2NF=Do۵fTzZ :K~q~3|V/pI2N>njxcY~Vedߢ [}i>3,ʐ;֚L)C$v'Ys'x(0i>,3 D$ђ%Kb-(X#D%1dR$MUdIDF! 4Q$`ILvU%Kb}(X#&%K" Ĵ,iWXQ$G%KbUĴ ,(X#&%Kb-(XQ$]U`ILK" 4Q$]U`IDvU%1hcIΒ%)D|DQ$Eђ%)D -Iْ(D|DQ$EђvU%BKR-(hIDGEKR-hS[Ѧ*$Eђ(D,IQ$EђvUEK,PfѨTJu,d}NepJ|гpmYʐg:=KUE,1h=oYʊ:چ xr !Dx >^C} x2U_x >Άm~̀gxrZϒbr&{8E,y^eȳ?<3YggiާF aRKSŢ}QfɾT(ؗh_}R(xh_}rR/MUl_}Q(xh_}B"U(QEѾ8)ۗh_DؾvU})EeŸ0dTDѨ4UQOlTOlT8=(xQ,ѳg1FC<(xY&%bTEEC֜2KNƙ'̒q&:Qp2dL'c(8Qp2LJNƴ(8h?DɘF! NFiW8Ӯ*p2dL'cǤdDɘ6U1'# N4Qp2dLɘvU'cǤdL'# Nƴ idDɘF! Nƴ (8Ӯ*p2m=8Qp2EɈ(N(:Qp2EɈvU9);QEɈ(N(:Ѯ*t2]UdQ(؏dmb'#TN(:Qp2EɈ)Nht2|% |_bp/2d.Kp2E2dꖙa'3׵δU ,9,qfaE2dYe2Gmo:}L!'S[kLu?첔>"Ȥ 8<řdeUŌA'W9NߧdOU'Sr2㐓ǭ̢̒QLQt2EɈ)NFGQt2EɈ9);Ѧ*v2EɈ(NFGQt2EɈvUB'S(؏dD~LQt2MUdDE'# (:dDɈvU)NFIɈ)N(:Ѯ*t2`?)NFGQt2]UdB'# N܋mfF'# N4Qp2dL'cUNfRr2~1C(8Ӯ*p2]UdDɘF! N4Qp2dLɘ6U'c(8djZhjȫ(oY7JQ8p?24e&vHʠIݛ3i*' ۮ2KǙ׻QY'L'3'|]˼dwO=~*3~>3 oYr=tlmFgκׁop=*ɮg~ۿ^r=չu Lv=bi︽= AӼ=ÔAß0z3d(?17@v=7Mv=䇔$ 4 Q0@ѵd ФdL2E it-`DvU2$ 4Q0@ѵLJH iS Ӯ*0@`Lk$ ȴ iW Q0@ѵLJ4 Q0@`LF" H it-`L2d PQ4@ 2H it-`DF$ ȴ ФdLkd]( Q0@]U`L2E it-`D6U2m"$ 4 Q0@ H%̒rf)(,ܓ 7)dsQP| Vf 90gXϩ~L=3 ũ+ʐEuМo=Ny_J?ܗU놾LN%C^(3VP5}iugeu:/Bq63щ!/̠F9Ptʐj腚B^?G E˯ z!.5@`D F/DʙeD-2hREMUdDF/# 4zQE`LvU-[d("e&%[$ ȴliW"QEˈ-[dUȴ l("e&%[dm("QE]U`L[$ 4zQE]U`DvU-2hcF3lhbQE_,h4Ef~)x/6/3ŢhF3Xmh-bS2_l ^f4Ef~lF3Xm|9p1_uǁD,R8hr2EfC8CMVRZ03ҾS,:MV'OǞʐC[gt#~}M~A㏓#SRMPo9:ni{&;2^FqgCӘ!TdT&eC!s{{!nr{tH7@|kdYfӅ㔁GD*ob5ΓtgQPl g4ӝMf(ZLwE 5΢hF3|h;tgQP,j4ӝEBf)LwE 5΢hF3Y-h;tgSP,j4ӝEBf(ZLw63Φ]UhF3ٴ -h;E UhL e}(X(QPB2 5)Y({DBF# J,iWX(Ӯ*P`L e}(X(QPMUdLB.Y(g,24&QM Pf79YM,LQV2I% ̂R&Z'ff7)WLMqje7sJ=xdTN:SwY |2q-}S]_m3o?^%ߤ 2$88n};7uhdT CiZ9f}Ss^oؕ!:?75J웚Ağ }SMCIW2w2d]P,Y(e,3BMJ4Z(QP`L e}(X(QP]U`LB2G,i= eTEʴ ,(X({DB2 eUJ,i=2J,(X(Ӯ*P e}(X(Ӯ*P`LBF U,D B]4[MB]4[MB=hWUP`4f \4[f ]UB=hWUPAhP|EhPTA+n*\M>2\\!{O@~dJo`mگHW,Tz[ٮLWPu,Tː]; Y[]--Լj֦dBuz*veBվe=A V=2BU+Ǎ-T{])u ueV,ԕf|/G&#wl.JfFM]웺75EڢoG XMB]4[MB=h=B=hWUPU-Ez{.-ԃ&# B=hSXB=h=B=hWUPU-Ez{DB=hPB=hWUP|EhP|EzЮl.-ԃvUe BMX'x?(X'x?('x_-/j E ߳߳xEBms&^|z '=2:5ʐJ=2cںiW+C[9vnm<h VMvWn5-ڭ 'WEvk vkEtx:EnmLXܪ^y2!y4{fVv2>{={&{yc=~ǺyaxDctdc}\s>)+M?dj 豚ܚRcuj>cEkK% x%̒rfc y,Dc2HVW,m83輚A|rלEz2 gBr^i!5?xxgGr^:Vc{dU{df2][dU??ե߇ ٭ZU[&ۭ:{9&dnE3:3lz[3 ح4+N[i'G&ۭh!M2z7[ vedDiVm演{>Rfn)d vfvȢ)&LLitN`Ls& &̴ LiW0Q0a9 3iR2a`LȄvU f(0Q0a]U`L 3iR2aф fU&4:'Q0a`LsfU&LLiW0hŠ >(0hDF$ &LLi4a`LMJ&4:'Q0a9 fU&̴ L(0DF$ &LLiS՚ s&Jm /&,g+veL3ل+he 3E<[r^]Kp^[Y2afw&|иRm5̒r&{8)HXq"3GʐNJw)C}TmINdUO}Fz4o)dUݶ񚡵[9}-Mr&ۭ+~\q#|d݊AU߯ ֜6W&vk^nMwVZLoL2KkY[ʠJޙlOlo5̂Ry7Κ SfɄ)dœY0a3fœY0aʀ fj~"Z?[4ݫClo)9:zAG9nY'GWptg(2/rts&ܼcqɎ9W2с;̢D0g]e{K62626Nq͍6{hL[eлu zqV2Kޭ2݊w]nYnʀ* G [Qn3@V(Dp[QnMUDлE& (zDлvUw+M Iٻw+ޭ(z7Ѯ*n`w+M WQn]U݊wB& NѻNm4z7Qnpwf(x7Ӯ*nw3Ki4\DvUw3& t)ݜMtɻ)ݜm5̂wSV̉.6g 2K͙æ 6Q0l+z'`ؔY2l,6gaf ۤk3Y2l΀af!W 9-Caad5չZ- n0ly3ٰE <)M4l#b0Y0lʐaޯZ: [ Z6 6w,zٰ0gY0l,6g:f˔]Z΀KKkהnɿ9`ؔAƟ4t)Ҝ.Mtɥ)Ҝߙk.͙ 4Qpi .Mri1'&ҔYriD& .ʹ{DFk% .4ZIɥK3m"fU.M\iVDvUK3& .4ZIɥF& .M\iW4hDK3J\iW4Qpi]ULK+.`Gf](4hDK3.M\iWIɥFk% .4Z+QpiLvUKfҔ!'.Mtɥ)Ҝ.m5 t 4QriۙKtɚ9`͔k&JF/L.X3e2K̙3.;{ׇ [<8^2hj\>3Ufɰ9`ؔ&J-/gvPfɰ9-ϴ |iyE7LfS0g@}h?E7DfS0gh?E7Df{o4"+_ +^hF¤on |;=`_U7#h`k3 #|nq=XmafV n nmhv[ {8FuZdFBҙx nFT r?ug=WV3ޟ8qNu=[p4{0|*^L'!{X:͙a{xzPgXރ/{0 :EYu݃yU{,:Ł;34oit)dY|d5L>͵![qF'_'|hgdY|,Y>gI*EljF< EFO( д <(xBhD'4OhUPz4;:@g |}5}AMht4n_i/ӘFH4Ǧm4n  sY4w y w.+Nљ%8opt;t1mSfi3i<>2sG4fgsQ }olg|f4֊vik:1 pt;;Y2Yds]{&$h;hWUvmU**Y?Kk%Y0,LehdWzq&2:5g&{MS4ng 2Kәl00/4!kq{ːO̷L<#z!9ɿG{d-2d0ռ7~;`>W ْ+]M9^3*وrZ~vg,*t3UG ]D+) V4ZI%+̒t{*Lc&,FeL34Nf{3Sl;E^s,9Ege]r,9Eg2KNXW3lcm4*dY03CQLZMe??`%M+) VҴ iWXIQMJV4ZIQ`%MJF' VRi`%MJ4+idJ~.`%f?SG(ZɣE"Vhs1w4<\DJ  g`͎0Kk'&_>1Mmht`>1Z5GOLsTW h0MU1h%fQGO(Zɣ'cUVh1B+y4E+Y ZIh%EJF' VRi`%MJNJV4ZIQJ+i`%Y,XIeJeJ.XIe&H:0AR ,YIgtJ:`%!+{(e3 N%+ WoU*y>*Yrdם`0EVP:5!-35 ;ʐԙl;㝭,Ngl2h;k\}6=l2d;k/aƜɶ3ޭ iZ3vV2d;cn2h;!ufv*Csz=mgkX!ټh;/ߎ:;¶S{n$G(:]U-: ӎ7O{|vvzfo+4532P W2u`Ugl#D=33P lW3# hdT3)=3B͌T3#/1ygyiA/mֆ^ڼF^0H~IQU٪fV]jl5**ت*تkX+تk*UUUרF[U[U[uVSlUl5**تk*UUUnU`V~uzdf[kRSmVOͶznUVUVllwMzjS;= k |π633>Q3a39Ig{:33{&H\뙙뙙|03C=(H\ۙ=}q=3Y\O׌5sjTԷ}/ \zDFѠ4ge^?U3ߗ333C2 YgnGܧP)?~}d-]z| dG}Rҕz3C2Z?m2m"gf" hv!-!W3,uhW=etκ1=}=3=3DFkF]wg&{/g:{&yKOx=}/KzfNd f=3=3gDFc2<$LdLdjdԉ3߿ndeLddk2SeaYFڭ*YF RdIFO2zjѻv2zdf=5]Aeݪeݪ5讍>VEU2ZeTd*ʨj*WeU2 2ZePF53њAͿ53њh eT3#jPmng53R̀K53Қzi T3?̠3>ҚziD/}S hU4PU0Ъh֬ x(2p-ڙՙ@u}Όdf@FIjd4Xq hh͐<ܞ~}D h@3$iee?jf$52N :3CHFkf(2hաjd*(Zo2ҪC/ x)Rzfvt}*fFX3CEL1*j U3`)j͠63TT̀+6'}fKk-n/Lz-zo/ y6}ߟ3Kol^!/M'^Zyg^pff^jf䥞Fgt}xfF^(#@F52:QtktͨgV:[yҷ:=3QόLF53Q TP3(e?(k&?# (4viѷ:0P͌ 3YW (JXFym3 \_:0P͌ T3`QU@U@]Z]@]UFmܕ 5**k*0Pר``QU@]UvuZ ~IFUuڨ   T Ե[d@U@] 3@$͐f&'023JUn堝#LοݕgHN~]d|QTQ05Nz?3Q0SfOW.<5a暚TG'v|3:0==3Sj nY h7mA-a0P͐iܷ~B h]0>?gcs,\huj2jfdZت_.efd{fffFlA=g=w/3#LBՑz&3 UGꙬաxuhX'lou|fک L@4\S3#5=3#553rM̀ks g@0eo&(f\S3# kDUpMUpMװVWpMnUQw%t ڭ \5 **kDUpMnUݪ5]kVm\5\55ӚNE|iMk>k>k>SpOq ' hpʿNpnd ';g8etgym,졌6:Pπ>3U g8GwSLvPQN/Vӓd{fSaqMWjUeN?d'Gwh֣9)E~fP\uFL׺8eusuC] okĵ; ќDNvo)d'GwSeqW? ,Aq[C\ӓԿc> g8eSR ўĿaLtط ɟt;l 1=9cz=3rGwS*A}NC}t55ʩ>3xm۬ Ya|]A<|ө>Ttt*:Ov+Ov+8Ov:';NE}Nw|NwVڭ ';~5';FUu  Vֵ[8䰮aUa]êê3a=3pX͠6kCMy=3pX͌3Y&'+9l#4sX V3a]I\dlou fFꙁjŕ_C3q \:U lU3d+<3EHQ=3PT͌qI͠}(fHQkUSc&+jcl̐_[>3YQ5}>^%uO~R1@EMzf)gzfשfFꙬ{)fPQӵټl3VUGUׁj&[|]3#[V=3=3U lU3h5fW砙jfdتfFꙁjfd]M79gga3`氞8fFOٿ-_n'J_*k]U]U](FUUuV%U|W|5J*k*]U]nU໮wza%k]U](໪໮wUw]UJ}W|5*w=3]͌|3w53] |W3#LO-շggf]UEmV>oU3tm*YfF{晈VA}gWufF뙨W3#@}53R_ϴ\u͌W3<d-ϓ>>o <-gnm)cT33ϯ3u ]^=7fH}3R_͌w3H}=vLg{vg'\iԷm̂5:`̀0~>3 oշYH}55n+[߃zfp>f于3l=30=33[͌3`fahpa53rX͌3u  sWrX谪పమݪa]xêúFTuV ڭ 5:laWs+8jβr\YV谫9Jv5gYî,+Wp՜e Tβ6k|fúuuVu+Se1@qͿp?Y\]VWwUs,:RԅVTQe0 js;Aw;(IamuugdLWN[MߑVWwU󇭮4}c:CZDgo9m$Vgo=>{hT'd[iK ̐|V[}=4,՝ӰV4,ϴ^l[MWjl噑VNLܛAmugduA[]xF֩Ӱ<3~X3CE]x[isOI OrE/]U=@/zi|. +sJ՝Lּ6v(Ws2*J՜L{5'^d Ws2*J'^xY'ݫ9|jASE߽sTwX/DufF(໪໮wUw]UJ}W|5*w=3]͠+q滚Ugw|3w53] |w|3$4}w!w53]͠6+fFn#3R_ W3#<39b,X3# Lg;j- Xp8W!! W~XfЂkO 3`5a! {3ޮ9_w_gk|Nɂ^ۏ? Yv XpqC3ĥ=\}13`π539B3# L4SU7^ܼ3h gfFB૮tprb(Ļ΄3!Lbב{f` v  :`͌,3=Tw]搜|3`|wJ]4vbpflUl ͶygfFfނٺFUUuf+k4[U0[U0[ׁj̶)al532[DUuf f fڭ 5mls?4f:2ۚf@GVEUfڭ UlUl٪VE: l͠VfLV3#a53wbLV3$5VGZ3h#[YόlfU~v js;C[j&<Ij%όfz/}yڗr羵u~Rd/{׆̐^眲r3Kz$?_gKKrk7yiU^!/w=zjt+9U?/zkf꥚/W^Z3zu<1tlx~f'i߃g(hf)juvշ:RԚ*f@QfxwjfpUffmCakV*:lUtXհVWޣVEq Y5[k&۪kTԷ:V3a=3՚A[:U͌lfZ3C[LwoVUVVE[U[}lŵzf`flgC4vY~g(c;kݿ"Hr=3W3q=Sud]뙁jvAp+_2[Ցz&xHg=3Y͠5:٤r:Gu-}>um9uv޶_6?5lVD?=]UB:w@g53=3Y tV3#@g53Y͌t3Hg=:˿'WUpXxH\=Uŕu]gꙬͽfEߒFPT(QQUnU४८KUK]gZYkQUYyT/3U lU3#[V=WUh``Vw٪gjfdتfVuȶl6UDT[u ڭ l5jVs|gJ3#[LTLUUUUh`ݪVw%[u mUlUlյ[(k*Ro5^ ƫ3UGkzf{&[fF`z&H+XkJWPIՑJzf*VJR~flV1RI TR33o{&H%=3PIʹ*o1[%5*ϙm 6}9Urg_JjT2iP,*D>_%iFU3Y%e䞙g*Jzf!vkfzQ3x(:YYew;`dͧ JhU6*5߱Wg*PIQ%UA%]UJJFSt Nw*#.d?GՑ?zffF{zffF?FTTtܞaG Uy6g*JzfT3Y%WL%53RIDSt* * *ڭ T5dձJ6*:RɚfJVET*ڭ UUY%UJUE*ڭ UR[dUTIUPɪU*Y3Od=-{fUv3ʚZf*UUVE:J N ^A<_$fY3Q0*kޭ|(̪C fա`jf$5CY̚ f`8ve\w@ɂY{}]!;qjsOX| `oks}]>'mi3gX0`jf$53߳̚5UGY3tnC׬oP0kSUY0MfP0S3#LUª(UQ0UA0`vB WSUY3C |;RfFY3C׬kjfpfY3CLx \5U5kVETkfꚚW5kf蚚?C5kf53tM̀ VET׬Y]S[*]3=} ׄw{yf&y$W<5kY;ԬwVSOy䊧f<5k]UekfkSv5i<3g{?L\L\Iyjvͻ&<5׼gA 晙ɮyWpfݫ\3YfF'%ɷNDggfg:h=s_=vej?fvֹC׵_fH;7 i-^Lm3k^ϙu;Wݟu0N͌W@^}t|_;[gfd+h'&i癙h=}<3Y;TN y׼ogHolN lwMxj6S5@ڭ*@ lwM:23ʯD^LLw(fmgcI;Oyjλ~_43{_L?ggfgfLrSv5iY;OynUY;sU}Z553rMDATTt ڭ \sWrM(QU5U5]UkvTt* ]S5+ fzw f|553rM͌\35U5]kk\3Ln]L~Rt \S3#555Cgk\3~f5K~~/̠k*]35[1C>gc9?3J3C~dܟkce\3] \S3#3{Lvz?]S3#z?35=~d{ffF陁kjNՑvju{fhf@;UG陁vj5*h*hkNUNnU UA;]v:3̌383P T3# hjfdgc /U25pϠ6+KWK53Rzfग़yfF^(८KUKUK]UF/:.>Tt9GwV^L.> 9:t9G O4rE/]xv[/]x[/]xƐkҷ:՝;7ޓܠ33х.fH\աwϙ,:Lַ͐ޯ?]̠ߵu~9ѕl[j5Z_gFgfꙁjlu?l3V:tOSmt)gPTG@Q53RTDEU)f@Q]gfPT~F緟zfEu^ Uյ[(*(kTTUPTרU3#ELsf^ꙁj&z+(v+ɨfF2por;$',y F^zf`{f楞xfF^zf6z)b/m6RDT/u^ ^ ^ڭ*z_PԪCELJV53UDT[U[u ڭ luWUר`Q1UVUV]Uv[U[u mUlUlu`{ffتfFz&ڪ*تkUUUUUׁjfdfF7=ܟzfF- j3[V=3U͐F ޵s*`[L|~ j:ɶZ.!ɵ6jlu?QfV9L52?3q kv廷xj=ӊ#X\g57͌U3#qLvF뙁jϿf:Y:۬ tV5lY#_V12=33[ V3'*,ۙjt5:**kYUYnU6UAg]:U3ufFf뙁jVudWrFu9g=G~U3#q@L\=3W͌U3#q1 q6W͌U3#qLMUW( aU3[qz:k|bg6(U׫91JjNREq\6(Wͫ91JjNREqTQ\(W׫91\Q\/<zP5>J3CqTQ\l(U φz#qSGy(W{ T S\Gzu@u+zTQgFz@e9S@Q(P; NGLg\_gHQ㵔ɊZ2CZZ kP_/kmLVԸ+fHQAx(; jN"ES+j֏_;VG^zyOK(^ʿq^z)PY[@VTס^KĨQe/NjNrTK(Uҫ91JjNr/\KQz՜2ڬb(e^xޓk4зV{<tin05 φ334Ы;1?S'Fifh( N^<z5'F^͉Qh{?4Ы9]*h}lΑrhfF芪Q;UA;]UvJ]Q5*h*hk*NnUQ;UA;]vvvvOkgvjfک SSuigکvj/ngdg'F,dqD T3<30P͌ T3hЭ9 1ݚ T3d< ~RV=/2CZ~#4=/f@o6Pd-^JX3h ^'yf`!Qqg6?3 @532P T3# (ovkg0PՑzf`{fvgv:2P T3`QU@U@]vUu  tיj Ql:Q dT3 QFUAFUAF]ê]Q~`mjf$Am7qɨfF2c0QDATfFh`=Uuf@wI2Ъ|(<(ב>'Fy ٜ2lNRE}6'F>\ ͉Q`(Ugsb*91Jeٜ 2lNr}6'F>'c*Ĩ.>TQF͉Q((ב>gf(Ĩv2>s@&9R#)pg{TwQ3~\'癑>sJgw>#z)]cϙ\tv}Һ6ucw yi<3KyUA/M׳z&{inV3C/}6H=sܟ^lϑ{itO13#/}Qo've'FXFxb_V1gwTp*O\AF͉QݪPF͉Q (Wg{b?(ͫes|bfPFx6[}yO( Q&m2줙>';황>ǀeYPFx+h :{2gs+9Ieg8ޣ6)'D;ʨkQho5*h*hkNUNnUvFWTt ک ڭ ӵ[h*hkNUNר3sgvW͌S3#LNUNרH;=3N͌S3#@;53N su$w/55CY >]3 >g:COxny]35L~4C̔k|J_g5קUW<2Cw fP͐k#5=YNp]5f6=3sM \S3-||΀k55MOu$fF`zln'f{v UT ggfL^ j͂ VUPRҵ[Xk*JUJh`*wYfFVT3 *kTIUPIUPIװ<#@%53RI͌T333 $9SI͌T3Q%UJtQ])ըݪ@UA]zz&aա^G=tz zNP5*k*]I]өFS=T=tVzڭ P5*kCUCUCׁ̜P3#'LtBUpB脪' =3pB֚͠9gNz0izC3#=@53C͠K}g@˿>N v9>*?Π8'&}!=εL(!=W=zI({(󶣪g6zgzCרnfQ~E|TTvWP>}ǿgʧ|sFOSs ʧ ڭ ϵ[(*(k42UP>ר|fsEW ^{ϔ3 (*(kT>UP>UP>װ͌3QveU543k_=o?ʟzzfFW3Cϫ<|}\9U>͌fW3||UQTAUES)kyU𴪨|iUQvBSVWO***(߫UVUe{ݪP㪢ƩUEVM5N3#P4>SHjfq538t5Nܫ*j\U8UиqݪP㪢Ʃ4fиP֋-P\ƩƹFRSs ڭ 4nW8^qѽTATA\UƹvSs 5N4N4εYUvڬ*[+kT3UP3רfff5 YR&πfH⻱gjT-g۲#z7͌|3c򱺝Ui~Se|,~3Ǣi|,3ц75>-334334}RLt$Ցy||L3cs> > >:=31 |L3# k(U1(Qccݪ\UFRs+*k*1nUccTT\ê"fF>y&Ѯ3L1(ayF]RRr ڭ Ku`^gyMx}D s I$L$5J*Hk*]I\9FsR S sVڭ $L$5*Hk4'U0U0fU$aͪHTA\F S S sHfH{g@’6i%YJX,aIggHTGqIgz8+2CVǘfHSKLZ񸑄oU׾f_fH72=ζ JXVgջzG IX*oϠ_)0πm&aHfP'G͐O\?yfcf\FSSs >vjڬvrSrb HK˵[8k*p,Up,(FXQv%RrmVEڭ K5:*8*8kXUÎşcJ3#L]XhSѦ\A\UBFQRr ڭ JuP)gWU޴S\Vs*+jNEPEoZͩM9Ai5"TW՜޴STћVs**zjNEpYͩ ;9Ai7-<ioi57U5>@3CoZ9M;[zSs;CoZ97k) VoZs <T޴s u3/zQ3CoZ9yW*͐7myc&{S[{>ΐ7!,wUһzԞ^o޴s &=)ԛVwNAzzj)7-O!3ِ=J߲{| )~f&tdCJ׬2^L6xk_fg/3dH{&I̐!gU1mH R̐!j 3ِRAC NsfȐw!3ِۙ=}C:3C:3ِ lHwMZsj6S!5*]U! IkN͆tפ5fC:5]UeCklHfCkҚS!5i*ҩِڬ ݪ! ɐN͆tj6U1hH'9۩-:3-g˨5iѩYNZtnUY\ԬEf-kҢSݵ[U֢SZtfPw<Ŀdžx!-އ5!? i>䧢!-އT4f>wYhH!? i>䧢!-އ5!+h}OECZ*}OECZ]AkC~W0prhHoh.⮨Ew~CZمVG.V3G߆{||B\hu; ng}[}v}c&>md_fȅAg\(&~dGscnIr]@͠ .POvryWbjn'[ К ~fP ~* OEZ3]AVU-`-w+XOEZ(@w>hwkY]Z}* OEZ(@w+OEZ3Nt,[kYW[Z++ OEZ(@߾+ڭ hw jpmաh=`=QUTzTz\vٕ5*XkTUUnU`=ݪzTz\FUQQqmVEڬG5*XkUUnU`=zTzTը::]3?N33 1vfFPW N=B_w*:3:{/ܪP?||̐oj[u7R 3CS;mɪufHuҎHLVA NfPuAՉhUߕf'}z43̀FQq ֣ gWfUd=`=QUTz\vqV֣ UE5ʮd=`=ͪz\UFQQqVUvR &cW2h2`2`2ݪd\~ɨɸFQqV& &:0͐DCL4cynwynwxnԧMɻQɻQɻQ&ݨUdh2OލOލ`2OލT4'F&]dk[yv;Aû yv;AAj?dNе}]sL&}[G3h2uKvL6t֙!ǏDz_2zVɻM;A&䝠 䝠 䝠OEyNЧ3C%L$hD߭_~d%ginOUR d%תXk#%]iVMN3Jϓ *IԞa%Iy&>m$ygf$53TM`5x+GUU(` UQ>||*ˇj*(` UQ>T|TEPVڭ *ʇ*CUU0WeڬC[GUU0(UQ>TU|vB , UQ>|vBPcQC*ʇj*(ݪP>TA>(^P>\||FcPPp ڭ cWh TA>TA>\U|vPpƠ ACõYɇk*Uh Q>TA>TA>\U|FPPp:ggf;hfg{j=^8e3yh(A%g|=Z3Q:LV ͠{Wπx脜TtfHI^x& Uܫ/3$q/D!Xn%٧+:CJɇTe%LI<3P͌;HI<3P̀F%Q%Q%qJ J=BD5*ɮ$ͪHITAI\GFP%Q%qVJڭ D5z*(k]IITAI\Uv%Q%q J Jڭ ĵ[(*(k]II\v%q J J=Bĵ[(*(k*Pר$UQI-5**(kUPUPר$$ݪ@Iv%%q J=BDĵ[(k*PUP$#TAITAI\U6"%Q%q JDDĵ[(kTUPUPר$#%`=3S͌35CJkxf$)fFJPz >x&+I^$M{oJ^$p͐De7ԣxf$%qJ J JD5z*(*(kT]II\UFP%q J Jڭ ĵ[(*(kUP6"%qVJ J=BDĵ[(k*PUPF%Q%Q%qVJ=BD5z*(k*PUPnU$QI6J]iD***xDUT$$UQITU*+*xDUTU$UQITUvB%J QD<**IUTfU$ͪXIGTE%Q%JRD[**(IUT$$UJfXI_R53Td%[JR3C%LVzܵD3C%hf$5JrUI4J *IV?R?G/JR3$qd%{hD53Ù35CJLfPIh*fFJR3$$UQITE%QJRDUYITUTE%QJ Q**j*TnU$UQIT#G*+IUTfU$ݪPIGTE%Jڭ D[*IUTUWe%Q%JRD[**xDUT$UQITUTE%QVJ J_E%W#kTUP$$QITAI\UJJ=B5z*(*(k*PnU$$#TAI\G6"%qmVEJ J=B5**(*(k*Pר$$$QITGJ♁왙hf$(fPI->ePfFJT]{f$)gēr5JR>JeE3$@JuR.0gPI'ܥ동$&͠aD%qEIxf!q  =D<5ʃ*x*xk]C\UFyPq  ڭ <ĵ[x*xkU(6"qV Ayg7gijk5򐸷gDC yHޏg+g4CR_ײXC<=$~K3!;pjy?)gJPר$$$QITAI\GF%ٕĵY)*(kUP$$ݪ@I\UFP%q+)*(k*RnU$$#TAITAI\Uv%Q%q+)kTUPUPnU$#TAITAI\Gv%Q%qVJj$٧d5GfVUTӪJ}ZUQIVO+xjiuX>$٧Ud5fVW }ZUQIVO뮬$٧Ud5GfVWPӪJ}ZUQIVO**jiu%Y}Z=3RӚ*Z}Z=3R (I/*jiJ}ZnP>dufUߕdu'l[x׋ }ZW=?犖>g+g4JG~ygPI3ѵJ3T9*ing$kOfPIVO**jiu%Y>٧Ud5J}ZUQIVO+xjiuX>$٧Ud5fVW }ZUQIVO**jiUE%Y>٧Ud5fVUT }Z]AIVO**jiUE%Y>$٧ݪPIVOkUTm 5**(kUPUPר$$ݪ@Iv%%q J=BDĵ[(k*PUP$#TAITAI\U6"%Q%q JDDĵ[(kTUPUPר$#%@ILI4Jr.(fFגx&+v% (ɣ>6R d%W6|(fHI JRưhTc͐k<<$ʊfHI8׹JH3$u zLo%3$|(g@Iif$(fFJxf$%qJ J JD5z*(*(kT]II\UFP%q J Jڭ ĵ[(*(kUP6"%qVJ J=BDĵ[(k*PUPF%Q%Q%qVJ=BD5z*(k*PUPnU$QI<_A%qJ J=BD5**(k*P]II\GFP%Q%qVJڭ D5z*(kUPUPfU$ͪHITAI\GF%Q%Q%qVJDD5*HI<38w̔D3#%LVxfFzf$)fFJ♁h7xqvfHI⾦%xx&+yH3C&:T! ͌<3C43 dL}vru;L5C xJ*su{\ޫZ_fCU2{zȅ{S;j=jvdUEY]CfGVWّU=jvdݕ=jvdUEY]AfGVWّU=jvdUEYUCfGVWّjvdUEYUCfGVUّjvdUEYUCfGVUّjvduYUCfGVUّU=jvduyY]U\͎ݪCfG֪!YfCjUICɾ!Wvqg+@ )I{&+I`4CJg$gf$jN{|CL&95{ȩCn<e}퐇H! 3Cҭ <} C;a =3!kf!yH͠TzfFR3!!UCTEQyR=D<3͠|=-?h>n#rfH>֣~gWhx&}3T2 =#^|f8"@BH{ꜙqx#f1|_ɇg(  Q>TA>\1||FؕõYɇ*ȇk4Uh  ݪ@>\U||FcPpư+ɇ*ȇk*nU  TA>TA>\U|vPpư+ɇkUUnU TA>TA>\1|vPpV*ǏÏC5*ȇ*ȇkUnU |FcPpƠ ڭ õ[ȇ*ȇk4Uh  ͪH>\U||FcPp ڭ 5ʇ*ȇ*ȇkՑ|x#gJ_<b1yghf!N!gf!o|xfCDh=$}c3J ͐r$\3JNV +Iؙ%IWRif$(fHI^ gf$(f@I\F%Q%q J JdWRfU$$#TAI\Gv%qVJ J=B5zĮ$$ͪHI\UFP%Q%qVJڭ D5zĮ$QITAITAI\UFP%Q%q Jڭ Dĵ[(kT<~wJ JRD<**IUTUP$ݪPI^D<***xDUT$ݪPITUTE%QJ Q**j*VfU$UQIT#TE%Jڭ D**IUTUPC%LV 5JefHI/͌fFߗS=3ePI43R*f(4CJNi93${,?3U7=vX yH W3!ޯWzHJ3C1zH =D3#U!UCTCTI>~=B(|3u:~| C3#@>4%Y>H1<5A5**k*0ר ``8v%pmVEơ 5A5j**k*0nU``QT8\&Jơ ڬõ[*kU0U0nU`ݪ8T8\&JCCõ[kU0U0ר `ݪ8T8\UqF㨊Q5*kU0U0h`ݪ8v%p 5ACõ[k*0U0ר `QT8T8\Uq6"Pp CCõ[k4U0U0h8*hFeQ@432πq432 C3`͐qlA_38<#~C3d3C7h`ySd{|=̐q&>{hͫ#yfqՁfhfigfFPPpV@4C45jƮͪH3TA3\fF7PPpVڭ 4C45*hkt]I3TA3\UfvPpn ڭ 4õ[h*hkt]I3\fffvpn @4õ[h*hk* רUX`5;ffSUԌpN] Vé+jv8UEXT5c5;fSWppNweX`5;ffSUԌpNUQ3Vé+hNj*v72d Eگ@3;?i&_n'z}~ (*(kTUPר$$$#TAI\G6"%qmVEJ J=B5**(*(k*P$$QITAI\U͔D3#%@I4J (I/R3#%HI<$xPIj ͐D (ID3$!%kRm*ηgPI̞(f@I\Jhf$ JDDĵ[(kUPUPר$6"%Q%q J=BDĵ[(k*PUP$#v%%Q%qmVEJڭ D5z*(*(k*PnU$$#v%%qJ J Jڭ 5z*(*(kUPnU$$ݪ@I\Tmju%=G]#fQUTsTjUJŸ\.܉?!]C%pRt5{\^$W**e q5{G\^$W鮬$W**e q5{\^$W**eJr5{\[mV5UkkgFJru_Wk)(ZOZEPtjfHI~%I'h$}D3$Y<.ܵ5j2}TF%IVtgFJru{3<3 2g;yWk+(ZJr5\ͮ$Wk+(Zڬjv-u]K]#fRUTٵTjv-UE%]K]#fRWٵTjv-UE%]KUQIfRWٵTjv-UE%]KUQIfRWٵjv-UE%]KUQIfRUTٵNX Iݓ1<3͐q5v3NA;I;x&IU>poft'[UldEw5YEѝlFVS[,ldEw5Yew5YEѝlFVS[ldEw5YE;2بl͞VhT*,[մuֳlYn{+xיY*sC&=moϲu[lxM2YNeȳ3ٚ:gg,㻕߾Wfdг4YϲV}tmleÝ FckgٚYf{(z*ekgٚTYf{)j FckgٚYf{(zj FckؚYf{(z*ekؚYf{(z*ekؚYf{(z*ekgٚ`4f{i7zjMekE؟,ѳg1FC<(xYDvSMyAϟϒz2Sř Ϣ xQ,ѳg1E<(xh4DF! E"~Mr2+ LL3d' Df'51E" (Q/EѾE"ME3`_M.:rdo>3`_·I/ufþn_̌}92پK3}7/z#3c_a¯`/2e__/G&ۗfr9I}9h/Tپ4yfrl_N(ؗ6S}9h/'Mپ4yfrl_NMI}9h/'Mپ4yQ/T`_NMA}9iپ*ۗvSerl_N<(ؗ&rl_I}9iپ4yfrnl_I}9i/}оF" 4zQ/`_L}bM5e_Ffξ83a_/Le}1Ei/`_DF! 4zQ/`_LȾ6S}b=(h_D}1B?l_§ ٗأ/LeF2}Qfʾ8KgGfʾ(3e_%m=2h_ gf¾(fbK#C%;>3}~e}i^h_Ӝ}qf¾(Ei`_L}" Ŵ i`_DF2(f*/`_Lb=(Q/T`_L}1Ci}bLEŴ (9D}1bMEi}1E(n*/s}b=(n*/`_LFR/cc_DE" (ڗh_DE"M5i_633e_*3i_/AR(ؗh_DER(xh_DsERh3f*/EѾ(EKQ/EѾvSMe}i~gKe&2S2h_Dt־TKڗʠ} 7L/iǑ!2^/aə//LٗLڗ޴d'>IudɄ-:g&;9t2{ N2NF)'St2EɈ(NFLQt2EɈvSQLQt2dvNFLQt2`?QLQt2TdDE'# (:Q;e'Sh3;n*t2EɈ(N(:n*t2TdSv2d)NF (؏dQh7:dDɈyRt2_p 'NFidDɘF'# NƴjɌ̜qo=2SNƙ ' 8Qp2Ɉ1NF(8h?DɘF! NFi39f*r2dL'c(8Qp2TSNƙ '̔Qf83d'c̠sNF)' 8]r2L8e2SNƙ#)CNFЩGNƙ ' :W!'p21)CN&,gl*ǙYfeгԽp|fgI߈udг =Ks,Lygg" 4 Q,ѳgbM4 Q,YLg(Q0 TdL$I0]L(n*0 T`D$>(hD$I0`;(Q0 I0 & Li4 E 5&ALBQ4 ًI(&ALBQ4 Thv&A:{Q4 ًI(&A Mh7hDE (hD$6SI(&A:{Q4 `I(&A M(thIPMh3hDLBe$@GTf$TLB> e&M2S&2hҧPLLeIAQLB0 _?? lL6 l ):QpEEg (:QpEEg M@yQtE3);f*vEB;/@yQtEvS3BgP( DAQtT DEg (: DvS3(@N3(Π(:n*t΋3(@yQtT 3Bg <4:Qp3g`(8n*p30\il DvS30g 4sQp3g`LE(8EFg @i78E30@i39Qp@)ḡ3PAjʠ3HɏAH :]Dg )ځ5v{,3v@);02svhDF; v@i`L; v i`DF;0(f*`Lc;`{(QT`L0=\iგ;`LEv (E0;`Mv@iგ0v@(n*;`{(n*`LF;P?q;`niiMAMM0vBnhLMM0vBflLM`L0vBM0vB0vB0vBliL؁K383a_ΐOq(8C=΀I7S1dI{ ^L8C&!KLL#3c.Fp~F`M…nM…`Mi4 MM…nMi4 LAIflLIMIMI0&BInhLIMIMi4 LM…vSE`M…nMi4 MM…vSE`M…~l.4hLInh.4tvhLIMInhLInh.4IXq;ㅂIXq;Bg_q;)3IXq;)3^(t3^(t3IXq;)3IXq;Bg_q;Bg_q;)3MŠM$BB$MŠM$MŠ/LŠ[/MŠ[/t${Kf$EhkE1|%&!7ۢ>pdV`(vC&a\nI%A(9QpT L30\(8n*pT Dv>(9 D30g`۹(8Qp30g itEg g vDSt K4EgDSt KPh KPh K4EgDSt K4Eg v vDSt K<(;%3Xp_B;_p_⅂3Xp_):%3Xp_):%^(8%^h3;%^3X},ݾxł2`%ގF n_bBg_xL9(vdVgtۤ3Xp⅂3Xp⅂3Xp):(3Xp):(^h7:(3Xp⅂3Xp6S3XpB;_pB;_p):(3Xp):(^((^((3Xp):(3XpB;_p):(3Xp):(^((^(8(3Xp):(3XpB;_pvS3XpvS3Xp(:30@il DFg Lc;g`۹(8QpT L30\il D6S30m"g 4sQp3g`M4sQp L3g`LE@3PA]3@-ʐ3w&?ʀ3ț ~@py/2 g&2 t(3 Fit L3g 4sQp3g`M4sQp L3i39Qp30\(8n*pT Dv. 4A30m"g`M@il DvS30g 4AFg @i78E30\i78QpT L3(8ٗh `k%B;ߚ} f_(:ٗ(`k%B;ߚ}ηf_(:ٗ(`k%3ؚ}ηf_)ٗ(`k%`k%3ؚ}ηf_)8ٗ(`k%3ؚ} f_)8ٗhL`k%N9ۗ`%Bܺ}cn_"8ۗ8~_ f_"uۗ`k%݇ʠ3HZ8ACIgۤ3p_⅂3ؚ͈ f3(:ٌ(`k6#3ؚ͈T f3(:ٌh `k6#6S3ؚ͈ηf3)ٌ(`k6#3ؚ͈ f3)ٌh |k6#3ؚ͈ f3(:ٌh |k6#3ؚ͈ f3(:ٌh |k6#3ؚ͈ f3(:ٌ(`k6#B;ߚ͈T f3i7:ٌXA Fg 4sQp L3g`M`Pr30\(8n*pT Dv. 4sQp L6S3g`۹(8 D30g`۹(8Qp30m"g 4eS9v }rAO!(3ev ^ ف7xD2h'$!;S}\:v }32ht(3eFi`L; v4pQ;`Mv4pQ`Li3Q0=\(n*T`D. v4A0m";`Mv@i`DvS0; v4AF; v@i7E0=\i7QT`L(vQ0=\(hDvSi`Lc; v i7Q0=\(f*TdD. v4Q`L. v@i`L0v@t83aLg+v`w@7 فek.v Pf83a#Cv4Q;`{(hD0;`{(Q Jv(E. v@i7n*`Lc;`{dD6S0; v4pQ`LvS;`{dL; v i`D. v (n*mc(؁hDE;P(؁hD(hDE;Ph7n*EB/v@zxQE6Smb;P(hDE;Ph7QEE; v(f*E(:iv ~Aʠ8΀H߹ ځM ~A%0!;VE_W@NځLځ=v@@Q`(v@zxQ`(v@ (h;STl^(hB; Mv(QEB)ہhDvS(v@zxQEvSB;P(;P@QThDE;P(hDE; Mv@Xrv4Q;`(n*0=\i`DvS0; v4pQ;`LEv(EF; v@i7E0v@i3QNg&2dﳕ!;oLze| exT@*΀H(3eLف!;`(hD0=\i`DvS0=\(h%;`LEv@i`Lc; v i7Q0=|P`LvS;`{(QT`L0=|P;`Mv4pQ`Lc;`Mv@i7hX?0=\(hDvSi`Lc; v i7Q0=\(f*TdD. v4Q`L. v@i`L0v@t83aLgƁ+v ]Lx Lī!=Bg=@G@^J46~QhBo(4~EB7o(4~QhJߴ(4~حEn- _i74~n*hMcoE6SQ7/ 4vkQhMvSAoMc/ ߴ i֢En- ߴ (4~n*hml4ƿ6M[ͦAQlkiPlƿ6M[ͦASkiPlƿ6EͦASkilƿ6ƿ6EͦASkilƿ6EͦAQlkil4mƿ6MiBvv;P;>):x2~@e&ƿv;tSf{(6(mB^큦f{(6(mb_큦f{i37h zmB^큢f{(6(mB^큦Эf{(6(mb_큦Эf{(6(mb_큦Эf{)4(mb_큢f{)thMmvSa_E?a/ 4vkQhMcoMPj[B7Z(4~n*hTEn- 4vkQhM6SQo(4~EB7o(4~QhB7m/ 46~Qh_lseܝhPɏAn_lloM5~ebLlѢno(t{f*Mcno(t{QTMcn/ 4vAۛ6SQno[(t{آEۋB7noM^ilѢMc(t{f*TEۛ- ^i7t{n*MciEۛvSA7-Z(t{آEۛvSAnoM4v/fiMcn/ 4v{QTno[(t{آEۋB7noM^ilѢMcn/ ޴i3u{QEB7^(t{n*EBno(t{f*Mcno:학Pv&wx2gɏA_nTw}Lu{gbn?(u{Eۛ6SQno[(t{EۋB7no[(t{QJ޴(t{آEۛ- ^i7t{n*Mcno[Eۛ6SQ7n/ 4hQMۛvSAno[Mcn/ ޴ ilѢEۛ- ޴ (t{n*ml3n6LE>QkOln6LE>ShkOln6Dۯ>ShkZln6n6Dۯ>Shkln6Dۯ>Qkl3mn6LۯB苿KVWk/_ zgc=}vwX}c0W~}f)tٻgL~mB^{f(vٻ'~mb_{fi3wٻg -zmB^{f(vٻ'~mB^{Тf(vٻ'~mb_{Тf(vٻ'~mb_{Тf)tٻ'~mb_{f)ٻgM~mvSa_{E~'YOAs?ij۟4unnE۟4nԢAs?i7U'۟4nԢAs?i3t6SA?h'M-۟4unOMIS>h4w6SA?h'M۟w#3 v3׻nzɏAG}3v1Gf۟Ԣ(tnOL۟4nAs?i7U'M-4wn/ TIS>h'M-4wvSnnIS>h'M-ZAs?i3tvSnOZAs?h'T4w- 4wnnOZAs?h'M-۟*wnnOMxIoaТ7ްwPo;(v7N -z {'񆽃bxAoa7ްwRho;)7Doa7ްwRho;)t7~ {n񆽓BxIoa7ްwҴ9sܺ]zn^bPFuo.nzoK[[N -~y'mּB_xkIo57ޚwPlo;(Z[NL-~y'ּB_xkAo57ޚwPlo;)卷[-~yּbxkI/o57ޚwPlo;([N -~yּbxkAo5З7ޚwn*lo;i7 -sAlŋB7}YZ(xEśvSAZiˢMc_/ -޴ Zi7xQh/B7}YZ(xf*jTEśƾ, -4xQhMśƾ, -^ZilMŋB7-^ZilS-^ ۯWl;[|l`of=S-^Lˢo[(xf*jMc_o[(xQhTMc_/ -4Aś6SQo(xؗEŋB7oM-^ZiˢMc_Z(xf*jTEśƾ, -^Zi7xn*hMc_ZilEśvSA7}YZ(xؗEśvSAoM-4ǿo_OSzɟO?ǯ/7썷>v^O^<}_Y׿_4”~7uHws? ~M;g^/!g{?zevY]3`?s?z'k/;KSϙbhl5Yf㫲?R~/Y_?X1G1>ސ:b?F kmK2W¶p[}h|!_C|H~>T{?.k^+c1=V{³pWl==GzMWk\2gtO~?0?xlLr6/Y_O^>Q=},pR'i^K!lZ5Nn>gt8{G:=ƥq~XQ[*kq^|꾿?0k:"=u@AszB3^ r%=z~˟Gy_ژ~R|=|g}z$oaQ/춎/OlS~~ W>MǫǠ>u\6{4.Uy``YxrnCgcNmI$Uwe{Y>7[*ȰϑS,,C_Bvӫ=|ǺG|w6>c\q ģXԕz c9sRxx~yA6Ѩ3gco{-<φGIƷނ|c,Cy6??_??߻>Y^MsOU} ~ߏou{x}{:?<\ǝ8Q'sT{Q1˸^cm~g>gz 6oYew)]1c?>{ny6Ay6oF:븿cیLs_?u?ǿ8x<~VyB;!+lP޵zuz~=]_7lq>?x:޸QǟNUݣSh_C?ot};q\oק?ϟV/_ӿ˿ igV3_u?oc9Ͽ|1~}c?iy???R<~R|v~{uK/g95Wq{ގ_|w:痿\_ٛ?m痿|+^e富{;~>v__{=#Ͽӣ݆ou=N?^ҥ.4}.;#]Hg.pɚWdBR0[TBåBtQ΅rLt.4p#]q͑V Ū9^_WHxzH8~p$̗9sKd6c%| Yұ4_xi޽_KBuM>5^~eukꠏx~}PC{i]f5ݦq.i ҵk.Ѯ W2ұouxn>sm>Vb>az뎥O.7wGm/7]#/7Λnb #sƒEKR-(XhI%nP-(XhI%KS$`I%)DuEђ±(ZhIDEK" (ZhIDEK" dlI%KR-(XhI%KR-(EKR-(XhID#![%hI%mْ92S2ѝpߩL4*uUIXtdwr'h!wRϏZҊ{eLܻfН(5%CQs3ٝeP3ѝ왯.J7zxqwf_2`Thc FQ5?dT4U|Qs˟2dT?E 0dQa |dٳ3l_(i,>9A'ShDɈ)N(:ݙLQt2d'Sv2EɈVSt2d)NF)dDN(:Qp2EɈ)NfdDE'# N(:dDE'# N(:dD&;Qp2EE'#۸(8Qp2Ɉ'cv\it2dDɘF'3(9dDɈ1:Qp2X' NFit2dL'# N4:Qp2 JNf;>N4:Qp2Ɉ'c(8dDɈ1NFis$$'3(9x' NFi8ҙ2hjRp&;Y05)C׾L8Ǥ x}3ߌk |fߌvU2o.k&v}eDL7k{=oo ~e~^oZ~eY_#fq;ozYz޷ ~u4XGS퐿eD~͙ogy71n4?som7:W;Q7ͱ(~!#o#of2`D6dDF$ 4J4@`Lû) hD2mZ Ӧd ( hD J4 Q0@ڎAEd ( hD2mdL$ 45=74@4ftlN A:i2@4 Q0@'M4cA:i:4ftd I:h6@4&$ 4ftd A:i2@4ftd I#! Q0@'Mg} P8>2dR83`Bs92dRC:2d93׺w\%sdfyf Ȁ+ymG PD@=- RǂᎶ Mxˀ׳U)ohթzWLIIkY_Ep=KEg);~?oz:2zS:3$Oxd뼎 I3]Oؑ!s;>h9*i~z3?3sGf4@; ~t|IW[#A9iV4YfsduD4[w\luNA9h:'mX6MA9i:V4[Q:'MV4YfsluNA9i:V4YfsduA9)'A)V(ZQ:EE# V(ZQ:EE# VghuDES(늢c]Q:Eꈂ)VGNQ:Eꈂ)VGNE# V(ZQ:EE# V(ZQ:EE# V(Zp$ t=;e# E3D߃Y/TBI(^(7ʠ m?2oL8KeSB銝38ʐ[W8ʀZ޿]}sfKPBk^^gk{3nEq{ˀg-2|vʠS5{=![t_WgxN/EZݴe-lk5O "=3n=m^XJ#Cy[lQD[ܽnG:2d'LE`*C ӞA[I2E ;z!pI^w녺ATj4KAT͒hs6f(%Q0KE,Y)hD{)%Q0KE,E$ڴ-6KMbT͒(hD,ES6K`YTRQ4K`YTRQ4Kј͒(hYGz,Yd͒(%Q0K,Y2fI̒(%h%d͒(%Q0KX' f4D,Y2fI̒i4K`D,F$ f4A,Y2fI̒i4K`D,F$ f4%Q0K`LYd f)?*fiP2K\<2SIM|7ųse|37Σ ح!ߔpwM^g&x}2' 莜i8>ߔ}37}:#]5C{᫕vʀo^!U=^GXo^9%U{=o+d^䛾:ak27e {ݎ>+|goi{?zޯ{S|StTd4ncz{o蛆zud7=ʠojxuRtʐjl!! ռ5KMsBԼGfԿgԟ'2J4ZܔitSLܔ()n n4)QpSLFnʴkDMF7% n4)QpS2nJܔitSDMF7% n4)QpSL7eݔ()QpSpxAMma60}PtSo>(7LO nj '7郢xAMma60}RpSo>)7Lnj Ӣ60}RpSo>)7Lnj E7铂xIԆ{tmRX놛3|u[lݖkhM[:~M2Vi geX8Zϩ 2do6{&{sm_3`u[ xDcEekv_=F,ʸjg[f곞xx{X}m<5곎zo2V_etM=WGx~fcu{{&|2`Jߞ0VӝDc˵5XʐWb +vdX5x4V{ l6ޓ}ҦOH4VY+~fcFc՟cdcŖkEVnQXo>ix7EVx+InkEVx+Icm[=[kEVx+Icm6}PXo>(zr4w?% 4z,QXLe=(x,QXc J4z,QXLNe ʠ K#&%J&MXjʠ KwLX#C&,68eȄ발 WGLX˙le*Kʀ /UA{9MXfG0a_c[&nЄEs zNh>U=_LGY{&ǕU2aWFɄ}ķW{&z4_y0al.u޸n_hºpz׍\ʀ ˟ct&Ȑ ~u&,~Q0afFMXsLD6nm2dg&,3eȄ5? hܜiz1~d?ǚwucgiCs3cL#72dD3Sfњ5kf4IfM$k& 4Z3Qfњ5if`L5k& 4Z3Qfњ5kf(X3hD53GD(X3Qfњ5kf(X3hD53lPfњ5kfu`LN(X3hDFk& Lif`L5(X3hDFk& LiftLtitL>n(zf L*3piʠKK#.-#;hȥKk ;2bq&س!2sg™=R\Z2Lviqא2Ŕ!VUף(eȥ9]ZIov!2҆*su&|իa4Kui_u.rirvozlorij}zvjK~輦cn/=tGvCz4{'( g JeȏkK~l|>z%C~븂]cj-ggukW_hcps1 ?O) %~,^L~:G^z nX={cvZ?UGc~^igsyD?Qkgwnζ?Ǿ^ӷʀ5 cq[&?sn>g 1pjf/=9o?+o8G9ƣ +C~ <'O!kּ7h9eȥ5٥l, [sdž?ǥOs [g+h닢w{4Eѻ=Meh닢w{4M=vAٻ=v}Qnf)xG]ۣٮ/lEh닢w{4Mw'Dw3M(x7DF& Minw3M(x7xfuDF& 4z7QnLwf۠Dʀ36Nlhqt̄SwXnE>O|)t̔o <;Q2w݌hRkP]0wm)C.R]AL8f 9ܙl.:N2wq2djsZșl9q^2`>Hn0w{6lEF]$2{?Lg꙽}o܍Ͼ޾>3߯o]ݑdUޝo??hpʐ[ok4wuOv O5|53\ Z0wKΣ^] #nqdmloߔ!s>~|c3l">e5 hu}oWI;ݘ*gWp;]de6]gGvt|F4::Qrt*9A,]g&L{Fvt} s' δidL6KN̝i4w`Ls7(;hDܙFs' N̝i4w`Ls' 4;Q0w܉sg>s' 4;Q0w`Lsg͝(;Q0w J4;Q0w`LN̝i<։sg͝(;hD܉3N̝i4w3וg}hy3>/(>/9}^w;D|3yo\a޸vų\esko8W(fr2hSq&خA#X[S`ګL8'#̔tf*3u-2x-bMh \W>zL]ĵ|#Fp6ϫ _2c;#[] :J?2d,;98Ώ|`{׋P&6v֧ϐ=?toӽ:}y5z~f`e6)Aɕ#{W;d~;g^qS3\v;5Y׫|}k;m:oHUL5߾Ck]Lh*z5~"`3/w=/)L4{ͽ+3As ^h0e`{=d; ̥pu#9 !L63o) Ȍs۷hr&x2`0t&h=!T fnyWGٜЕUҕ͙"\ &K4Y3f 2Ma]4͝ )tf)L} Ͷ75 7SD3[ї/5T|(RKEF_* T|iKM/_* 4|e_* T|iKEf* 4RQKM/|iKE|3TKSfT0ь5K̨(QhFEF3:Uh|vh:GQ̨)t̔U&[ͽoy3*Jf4_;ͨ(t̄ULqdЗƽQ@kIU: -jt3{ZNYTeTfʢ:NeٙlQy!:blv7xzv;5~2dQw8-jo H!zKLgQ9~ȯә7ux#[ԷLTfLXTe,2dQ5T,j+~Т=ʐE]+E.L=j',>?Ҽ}gEmhQoUSd:}FТf^5WeȢ̫2dQǕoכ:Gwh9 ^ڜdڟաS䃢EmΖEѭvntfܪ2tuhfظ6q50LWeи6ח[5pLՑ!jݪ(UVE[5nUܪitVEF* n4UQpVM>ƭEZݪ(բV[Zݪ(բV[SvV[-n52VE•4A* Ƶ(WQiEѸE* Ƶ(WQ0;5A߁\*UtʸVkeޢq;R|jw;v&2`g'MsLz=9g&Q=,Еif=2S22V؆ViMu1[iM5ʐɭGؤ{d[8C^2S ܲ㻎~~L2S&י M3mGMn:2lr7=-?2 ʐmodr^WeƝ0ʠ5t=2dr4c!+&7_L>w*C&7nRPLns~&7~s2 Zfgmnns~v~ܒr}!D3 \S͌S&Wiw٢LY_eȐ5Wi`}EF+ 4Z_Q`}Mk(X_Q`};DnwNݚE59%wksJ|)X߭)S[Swoc؆O5~k6.+>m7\ݚo25p%wkJ|ՠwyvYΆ{g9[mXp~a_xܞ~s}G{' qUbPQNr[nFB\ ^_({s=sB<_zd!k˵BA!5gHWG5 xT@G1xHG5 xT@G1x B\|ƣ%(quHT2uHAG1J;\ʣ8~HbQM*]Pb̓Q!!.;ŵ|Qr⁓kBvPG V ()E!\1(ģ+xsŜbRQSBi:N+7vX)Rpcэ;nҞrcwnvbuZBNKi:Zi\-Wik];u`w [)mqzӒ\uPrEro*JnZ/HnR%7TxNW_;e&jgO)1 ɍ{u%7ΓW$7WNܸ{օJnNܸ>Xܸ;;Yr}vHrgնA=׏N$hܞ9Ny _z}/$W亓%7{W%4$W֮ ӓ\w@r?K:-u!$Wy;7u!GӃ; i}:(iwuHrfU$wݓu6r^@-)Pr}ہvWf[ ghoVfևf̶>b-)\-K4lXt֝Ϊ!uuV)ӨJAg::tiYJAgFU :4RYN~~4N^iٝfi+M:ӬWtvYgwuJ*Ҥ;E ٫wݝ^ttvw^iVZ;l4N4//KN^i\-ݝ^KtV_t|wwwd߽;;SݰwwVV"-n'[Җ_[tfNǂXpX;d7W,8:hw:|uUV! N :`Sp^cwȂCb fחYwq9Ƀg5y+AAMV 4idJAFMV 4jRdN&4idF&duZNCii:NA': i,'(ZNdN&t&]&+\[˘HquƬhJi~]:isu;sK똫LSw'Ng4ZT݉vf1R5TJ}S괔ڝxZΞW'+uuHCJvoNVϽO:—)pqd^*uxwH>W'+|/ikRJ=?>_:Vzr\ydR 9q;soJRjwJNKi(:-^RPjuZJNC̯۝R=-v4ZRRjwJ*5RDβ*uq;;qu;l|vNoGVixW'yA?OHw|z$N ܝsuZ~NsQʟ҆x6;hɷ݉#xww/!/1M<ڻ:-wLĕW1=WL&lK9IӆRi\V;+ S"W&^&4R0q`NOS4^)Sw&~85Y 9y+swﳚ;gw4Mܝyᕂ~yxu~~][SëΕNrx'N9g>->q/TӹOg5' rNb񳚓Xx0ϵ:M?9it$x?9`gwNiYI\nvs'1_o>wsڽ߽M\HR__;h`g1'1N6yl9vPLg11b~DħL<퀲:]?Ź/&ϕijDh/xq5񳚞X\78'YMOnMOXLOiMg?yq1E_n'u|+(z-Yl'π)ZỲ@kW ֮iv`JڝFkW =ԁJiy|%(zNx-W%4^(O)X;?=kWi(ڋ]iiY;ڕ;־ҞC^Ώ.Z{ulڝGRuu@՝FUWRuu@՝6dQ4T]NOi:-UWU=rTݝbi;*6:݉WyR:~nU}*ܛ1u{v?u@յ}NG&Ua}wwq'z4cuHգMU=:JIv}ι#>~<9_YoNCi;lB{/z%WU4耪nzl=UwT]U4喙;YՋoV$ꐪ߂<[2i:Q՝VW+}V>yF@~^ESy<~zܝ,quZRIyq~J+m;lig4L\hOi(@WH8Fo&V 4wq]#7_~owNK݉[)Өߟ/ioJAFV ioN4uӝN݉&eꠉGw&J%괤\r )W%Z:ţsw+?w|ϝr~PʫiJW\iK)WM=i:SK/ܝܝC9:Xĝ(%U{PuuZzڋERuwµ-%NKUuw@Tik?nCv$=NVi9u@}ѝќoz[x݈^_oӢމ ډ dU{CD7W=;z}u^9dk][}_WiY; kWe4] Y;odiY; kWe꠵඗;`_yUǽk{=Fw'[{quڕFkJ{^'#ڝV< suZN8pRuuZNTu-Uw'RTubȪf?)9_8Fs-?wD? TiCi;YիGUAUg)Z?WT]iTZڏbΧR(|*Ek?9J?~LP~8)_WQLUڴ* G{:h#D^<]k?NڋG>-5괩G{;G1U)SEOܣZ>?-??I|FUJ[~~3AƕJ&~3AzmwW&ΟOh4MfUQ oܝN&ӒyNSʏrRh rBIʏjR(QM ]Ʒ۽|wH3{'Ky.:(j=^ |5RwQ|>b_y8>twy}ϪyG5)40w9|V~T;G{;xU:_tU&zªYZ=ˋ`G xYj&hqO;mY3Ay,ڋ#oZQL uת+VPڏbNgJڕ;֮])XhJڝ+`괬]ηӳvw+mY:^k/n=G݉ߓJ[ӆRuw+m:-Uw'RPuQWJ4Sm֟Ә 9d?vZӨJ[NKi:-UwT}uzN 8֮߸,˝ӒruZRN^iI; {ۓ Ӓru@.d)G+bˈokVOLDU;ܝq-:LdU_,V\ \Puy;i:*=N\qagChq ;,%:diX:-kWϾgDkWڲvuڝ6]ӰvuWڳvw0J[NCi:NӆRuuPՋ#o:QJ"kWڲvuZX@QL u (&*EkH? ?p)\Rx-?{璺(#^qE?W ~isJϝF?W ~\;ϕ\ϋA?Oi:Jϝ6\#?/^űܝJϝF?_)Rsϕܝ~աŧ Җת+m:ϝJ? wH?6ko鐔Id)>nk'V|~nwq{d)JYꠉ3ǽ%ȯIv=WM|>/>Ni; WLwYSr i:Yꐔg=)W%4\(Nī#&DV ҬOicsuZNCi:N~+m; V[)ӆ~Nj&M82QU&>YNG1kT)(f*EլQQͯQW(ghuL|TF7Yţ&^NBTQī4QLUў*(:TQ:m(g@WG1?icOu=phzd/ig:mNrPQN=WӔQNR>q:|SEhOu'\rhQNR>SEA)ǶVQ;Yv!6HmbV8#zϣzkCRQ75ԝ,q:$quwǝ`)']TѼvؚ~>WQM]i({_bh(f?T~r(&}!?ɭYѣ5 >Yř KyVQM 8)J̏jhqRwT+ggԸ8&VUTFgWQJsh| ڵў5Zf" |u$սmf._&VGA._QltyJFW .\ityN.Ni; _˻]^iՉ.ƙJ[NkW a꠵+])Y{u-kw'ZRvWJ֮iv-kwavjQW\wJs-kwa괬]]iiX:-k_ӰvuZHթvENxY{\NiY:-kw'\ŒӲvw5߷yz괬]%~7kw}Ak*>c~_&:hz鐵뫵ο{'[{eY\Ϫ-adk{Cא֞|ޝCNiY:dqw֮NiX:[Vg4]ӰvuY꠵}U܉֮={X{ZaNAkORohxv]Q=;`|BsI6T}uzN܏T])^MfkwJUTu>GU/볪? ?WxZ~Ni;ϕ|uz~Ns-?w_{~ӆZNs-)WiCiI;QʕJyq-)_(JAʕ;R\)H(JAʝ+ꠔBRouzRNr(Iաţ+؋ۉ6\sN~N4J(N[&N4q`NL\)hJ[&8{&N݉&L:C&^|^Lܝ`&ꐔ/G[Gqud)}?W/_{'K2u|c]6!)GsމF嗷K\}ON4S$ꐔG]w'K|N{{RN uZRNKiH:(AvaS{?]NӮi4zvvNޑ<.v۩: ڟt{ANA`mEo+i:-ўm-tE{vNN˹gܳtnugέ{i׹i94[sNӹg[)8LѹcJ=;Q9NLQg]h}و,;͢}IwE{Y4Nh_E{w:;QlQ$ifd;v}ɮwzٮ4\:ͫ4yNFy~J14[~G4zt}YWdˮ5خ7tu;(RNGw:\N;}uov t}quԻCJ]*uj:lw:{\+tzwPïN;:WA6*?CJ=!Cx^:Y?u;aRsVJ=usɏ(\OtzwPêJߏ}Rvz>J}uR&G>P(RNGNV?)tZR_+tR_NGwW:;鯤W:R5ԻQwޝR)uߝ9utuЮiՉ.9lˮN띢];.R Q(IJӬWzIH+RNGߕzwHJ}IwQJR37?wڱӰ/~k`JFV vik`NѩCvMkwSjwR+V J4~)vZ)(RPjQR;JZ)(ӨJQu룕G+my; V?-yV9~b9][ˣiy:-v'zҖGhuZ:=vGk-uȣ5; V34]v=S뙢]+神]+)LѮ]Z)LѮgvzMV'LQ(=;(ձs:wU';7|NNӹi94{vέ8Lέ8w>swέN˹g;_=97\rى}4E{vh?񪐌bvЮ磰~u;riH?oCv=_ 돏{'uvwȮ~Yu]{W3t{!N_밣]+uZ{5]OV:F;MVe׳Ӵiڵ:`z1gVe׳v=9Wڵ:-k4zv:su؏zwȮo'[:{D~J[J=;3qu@dAR:^x>RNgRi*izwH3N=;MV{-K4y,w&O۔~7;ɟduZ:󕫽tNKih:-MV&w44Y&w4YiKih:-Mv4ϯP8Չ#c\[Kii:NNK)\5zZNdN&H1S0fJ; cVɘfc"S k(psu Ngh\<-cVe4 Y)R0fј1+cvY)hJ1;ƼR2fј1+cvY)]Y)hJFcV Ƭi4f-cv9W'3}¨C\[OՉFcV2fuZNØՉ7-7V4Xpc 7V8A7g봸nD$&4AMNWb&O&/ii;-:^`s4yJMAAM5Y(A&&Oՙߙ&5y:&{)uH=u~t&+,{< M*N䨯&'U59 ;Y&ɚxg"j[AM.^-MV4yͽ;Y>&AMX\j;Ym 4ٝ&Sj}O#uZNCAMX?ƞ&촡&+mi; MVdM;ujrqmp' 4ٝii:4\[4槴DMV 촡V,(,lNQڷDMv n4W!'v'BV6 bymrE7~JB qA!.n)G1P) QL#t B|4B(N#tB|8K)!>JQbjR⣘(:!>NAbjR⣘8#jj |85?-j |Y85iSj>`vP{; |rTSPrj`qMM>py@M7>G5rcN;ձ='iQ8G50SxO{{q㣚sNōj>17;э%^[A7BnDyNk; yV%<;mȳ: NyV]ѿEK. RRW=V'*uih(JA<;{Z(N&WEKịys1bR4QS Ut6\Rī|lwt6FSu6:q7OwFQt60t'l9uuPg~y_3EMwD\dC:礹u6l\9lVwV:[8O٤ήO};Yg#]N:g::{̿9e=i=Uyl]ix;z:NCgU_!u'նЪ%7 ;Ar٦f[VٺR3P2[ UV)⚜V:m8:3pqE:t8 YAgvuzNvبnæձ4VpXN*uV)8RpXa:-urم6m(JA\:U)(JA\FqU iו:U)iW JA\FqU 4RW N*m; q]Ww(J[NK\i: NxNtX NNK\i:-q]Winꐸ"꠸#Y; qUk3wNai9; ';:ޝqu:)ͻcFplBd(_tظ:qgUw\!;ź6,9l\9l4UwVugbwa_C^k68iAݏ!4VroONai8:iqwîW@|9:-u';l]Bwrz:,!TAMjNp_nN aOgiN4}wz*uwQQM]Ե+6uwj|ujvw*]lM5k_}w59Eߍ;}7n^˪.X(}LҪ.x+wݼZi/ǽ}7֬NwG5um^{}s/#w?>ݴ:MԵ}w޿=A](ru}wԵ}7{(f)mJYlNlvTS׊3ޮَjۨfUdž;pӦjZuic: ҦV_ñَj[uM,6V_irPrW(;YlNwN]{J:E4r竘V)hJl:fi4[`JlF])hJl:fi4[`JlFU f4R0[`N*EMNlWgOTwfhJ[fNligN4[:_r!$W%WiKr)'z:-nP}7]֝[%7;Yr<uZNKr WNNln&kPv4!}{֝lWݷ5xٮPK{'ZQpvl!ow'm\m\'N6۸U4yq}fu'm\_mڅ֝lq-:hq_fwƝ!f[l.}֝٪Cf[|[li; U6Ncoujߜlf[7jujͷ%8NOriI;|>շN{#%˭; U|W)._/NIrcd؞Ӓ\w*U[#UG %84JR\Qr*u%.*U 4JR\ N5R\Qr*u%w$N*U 4JR\Qr*u%W)H(JAr:$7~ƸV%7}Ӓ\wH(JIrcD-Ӓ\wNKriI;QrF}J{.ӒaM*XN\dq;OlݩvNk:-u'\#9m;l5)>L280:dKD;lㄲA!N68L0tluٮwҪhEAMN6۸fV2۸7;`둙}.AMf;m%=?:d$fW?;l=:h~;Ϸ٪f˟l؛Vٺ0[ulo[4۸'; U̶8AnV)mu-]lN>>g'upXuaNNK\)VVزUuW$JQ\(zNC\i;Q\*m;ylXyai9:N*uV)8RpX[64_V'-?g1L)JYL&s Wg1)HYL&S{Vʒ{ɔd2 g1)|kd2(g1L)JYL&S{ɜdȒ?Aj2Yq;YrҖٞ 2`g5M=d/泙'׉ʜ6uyeNQg 2u:{ vzlաuqE:hYj2Y\ϫNSrj^\Þռ2V> WYNIr.;?&td2ܳLrsɴg:{'KHV%7N3S$7N3s'K|Ĵ1@]jvYp$7+YL&#-=dg1,JnZMN8q)cV5Inٝ,k%w=dU&=@~&PɝtCuHr8Q\YM&+>{ gdk:(g58K魾U'JS f{V3Ȋٞ8)Y+οl\1ulbӖٞ8mGW %icySrOAV_d:%8 \8)J3~_(,.NVHlbS0۳m)fNlOWFb^RXQDU :tiYN*U :4JIgFU :tiYN*U :4RYQg*uuViKg :Nqlp:æuwaӷ:-u*yeNx֦8S>Ni7Zh!Ekkc@Z=֠yawVR(ꐢ5諃'q'*jM**Yꠢ9ʊw՝JQoT5!NKQi&yUg68W,:(|ʷ;C4N8Rà:ƨN[NaUrXwNa݉4:N> [UeD[U le[M[uڰUuZتhJVF[U liT ) I,;zI\wJ4N^iW WuY\wJN^iםfqi+M,WuY\wJ5|_xzXX{w{aw[r8æowݝ;{wݡ}gcUdU f{j(]Nޗ`]gwuvׯ:{uA W'^ E4`W6Xنaf;]umن}3AMv6:lZcW٦jN6۴W٦}Zw69fuwlJޫ62&M_0lN6۴ |wljsulW62%s6G;dSu!->[f;:l_;w6!;:7 -e}JAguJH:{:ӎ^껵^uۉf]gw'l}Ċ+I0[`Wvt$iٝvt]gw0(^Sl hdd;f{lwvle bNSr6S܃])HƮ$ic;E=xژR܃%icW %OR܃%ic;E=xNQr6v N{J*YJvNsz6+G5 A=p({Tդ/8?I_prयG5+۹:k`w:{ :|ov>p_o/pأ~pTK/)w9_iʫ6텩΃6Ip83dϦzaW':lvwau/ۣU9lZ |uV:|~txav~ b֑krش^]tشt?{';l=Æ}awG9{TG5+ ;][tg6]=p*SrأU;ѝ;a3ެNry+-{tgzN^%S\%[EaU )3Rt=`O)*?rhs+_Gw"q:u`5jVw*jZI(jFyU5_źZCi(:i:Ӧn(jZ)jꀢ}(AEMvuNbZsƎp7uHQħ5G;C֗ソ;YQCW纓z HQk퐢lW'*jAEEɊ/Ʊ;q갢dEM{NR(jZ)jewZ(*/&r]ꠢ8Ksg]]k٪:VWuZNW-qUW/dwd Wd6tVκuV)JIgFU :4RY-u:m:-UtiYN*U :t6-l|AMρ:-u'RYN*uuV)RYQgWJ:4RYN*uuV)RYQg::tV)ӨJAgF])RYQg::tV)fM+`i:-u:`Jaݪ49k-uvua:J[N尷k&uaJwæi[Vrظ{;Z&ڭ:-uVúߞ.æ&Nvش:aæIW';|/hæ\W';ltwa!vNrR `(H\{KZ=$i ZJH\_qM{iCʱ:$q֫?Ͼ^״?Z| O=u'_(7 k :(IOթ5~yOkr՝V}:0Ok-Eu'yg=EuvsgVY=zNէW`NCQi);QQiq.@4*RPT-Euꀢ:m(:-EUiTTN*EU 괥bk+4uv(LQQguJAQg:STT)+RPԙU)(LQQuJAQgu3EEU :STT)+LQQU)(LQQgTTuZ:;MEU:STT3m*:-򻃊 W}Оpu4;M[U'julhi};`iW:uVcgmu~źp$uNVgl5]wV/A[*Vɶw\0hwV᧚mtnvVdm5<je:dq;q+쐸gFH\ĵ|I\Ĭ5M5J{|֯v}V5M̺: Wꐸ,i; tvP\Z|vuvH\s+yv+'*mwu(|]qvH\AqeluvVH+TǢ;-q:SU)LQ\u[Z<[i94vvaV)8Lag/êrXuZNtXJaFU 4:RpXNîitXJaFU 4:RpXN*uV)8RpXa:RrXN*u:c;[i; UtV)KsYr҆٪2陭; U6]ǩf-Ok=; U'Se:N:NKgi:t֝Φ9=N'>uv:k:Q:%OٹF}h{ΦHAMl^NRJ p';lVr8LtLܦ`6NRz5ƿIC:iw:l]ڝqua?iVT!LUr<89:-U4VC{ gPe䳔Bzfmq;h|[%Nچ$iCriI:-u!$ם(JArWJ8 u%W)HҖˏ6JnJ`-%:$i\ JAr$w|%wv;;MU$w(3EU ;S\ 3Eɝ)JR%W)HLQrg$w(JArg;S\ 3EU ;Sܙ*ɝ)JR%w(JArg%.|˟C]U:\4WNkN;- ӵҮ[uH}%!-SݸO;5zvN'RiUwvH}T wCͫhT_u@}|6׸wS!]ǏuuLI}d;C;-uH}-wƙ[u[Q}T;qwYEշ$CNڄ>/SJ}w>/NV_ i:-ߝ<ߝNkwHq-[<]ߝz}wcCUZ\w%wvZ ӒiJ: 3ENYrg,JArg;Sוف]vvf;;hJlgfvh3EU0j:-UeDU fiV f4R0[`Nٮi4[`JlFU f4~+U f4R0[l*uV)h+%U f4R0[ UegJ6[-u[-uVڍVnYw:NKgi;}!NcV:-U6|;-Uvokp3[uZfNi$i:h^g0aMJv~np:hIMmRulZw> qE:$;?$w|/\+!ɍssɒvBH]k۽{=[Yr}!g/wIn@\^@ɍT%Qr`ܸW%WiKriI; U%jOriI;,Ȓ&Re> N:SX}[ܯ٪2[wfNl݉fvdN*uV)Җٺf˯2[lh:`N*uV)R0[` MUe֝hJl:fi4[`JlF])hJl:fi4[`JlFU f4R0[`N*uvdJlFU f6}ުCf?i;63C[|ޡVli; U4|WNoژ;==Ҋuw!ߍ U}7`r|Wﺓ]wwӞ⻯fNwi:-u|7j9Eߍ-݉gjv>ɾ'lCU}7u'^)%ɍ{H%7nJ48uHr癇V罓%7S$w};Yr{/n|ם]w*]) |i]J[N] N:m:`N*uV)R0[-=icy|lOs,)E=icJlbژR4۳6,9=icJlbژR4۳6,9=icNlbژR4۳6,,9=icN[f{ s͖?l;dOiKgOAQ™~Ξ`kWar^YVÞռv{VC Wg5,R6Y+AqVvwa>^pXW]z;~Y+k%Mk2AbxH&j^Y+_݁Lwu';lVr*9'ֵK:qB;9MS}5ޗNv8eLt:bMۺ@G>a|] <dw>+dquzsŊclY+Ψ:m*sv^Zcҧ4!W(FQM=qV/G )j牳œ6󬦂NVvT0g1i=ySvT5YY)g1)Yr 2z󿔢~|P!}NKFiɨ;QF*ueT)Ȩ(JAF:2RQQF*u?󕂌:JAF:2diQ JAFFU 24JIF:2diCFiɨ:$܉;(u0PuZN@i:-uaꀁ  4^~N@i:iEUe ԝ|wT 4_ѻ 4V2Ш ꠁG6;0Ф'ꠁDUyI2иНlh:w@Z$1u@>Cԝx 4N6и:dq>:dq;@/u@=Y+8lk}m—:hBd]liU;|$I4Pᵨ2߂,|&e):-Vz>RZT>3dEqRԕQ:1& r'*ҨNaOyuhqD^괸vf/ea/-喗Rw*/])y;iRJ>qR0PqҨN5FT 4RpMNO|o5VrvZNtMJ5FT 4RpMNk\itMJ5FT 4~6+T 4RpM5k*t]S)+%T 4RpM T]3:-t'RpM TPUY܃(N[VN*\i*݉{)%&ԉ*?5)ѝ?GuZN6?γۺMuѝQ.!pWcu:w?F)s'c9uCҝid^SNVyPT2Edjvd!\D{~;TIuH%dڷPn:sw@%?uOURJRIw*NK%݉*zM T_|^G5ѝ(+I: NDqYk|F JA׭dN>UOFh,hQLѝhJWJ4R0E)*StMQ)hJ):Li4E`JLiMN:m:QL`RNx&G1I):QL`Z);QL`RNxQL`r Nx&G1I):QL`r Nx&G1I):QM`﷣wT< L|vt\4;zT1NE&%Y􁓒¹3ƊDuZiLW;:(都#~"xTӏuH#w@;YAAbiQM?Z{~QL?kA oS+o!ӂ!ER\\ӝJ5k:-56\SX騔V:V't,DT ڹRNQ;v:کS)hӨJA;FT کiNNv*T 4||dQiʧ4RPINJ*tUR)RPIQ%WJ*4RPINgRPIQ%J*tUR)ӨJA%J:*TiTɕJu`MӸQiFqhuZN4QX4_1sNuZ?RIw*NK%i:+;8 ^WYquP0z3uU' SkhU.-xݡ̝UӲJu*!VWYӲJwUFY8 G)Z*;*vXe^XeZ=Ye:`VYYeu*CVYem;*Uƽ܉yr:hiAp'[eAJ|Y:U XmduZVN*iMW,ΊP0vZNC0Չ6`[eMu*ڣgDT ViqMV鴸&T *uJ4>)Li4E`N)*ST 4R0E)*StMQ)hJ):S|Lh)>0JDhb"R4G1)⣘LQLQ(&(ES|a)>0ND`b"R4G1F)'°=pN >pz ?2J5SF4>p/C+LQ͟ΟqڔG5iMi|'ͨ?>3űZI4i:\y=pStQ͔k2i㣚)(gd|3eJuG5SQ͔i㣚)fʀ<2y;-hǸu篤oШC@T,3e~?>I3yFuw?=D!ScgT1:yvP|goդKף4߂]|ङjLu;|n=Ź_ǧ%4󔶤QM)#X8iiLhb:MQLQ91O)g<`bJŔhbʋR4G1)⣘LQLyQ((ES|S^)>)/N)k8ͦlWLqwMJ)4&Si6ŝfSdJ4N)4╦ϺfSYl;ͦxwMJ)4N)^i2ŝfSҿ:hwM1|_v:xu4#CҘοߥqw:xu~:o\[w3'wW5J[xunMqS:<ɦx`atLqwõ g`C^tLqwۋ!\)~~uqi)Ns^vu)ֻCf[_lǻC bɦXbdSL2Ŵ)W'bڅtwþW'b2AS X|)ԻCX|&)hg) LJnMJn)╆3S:wMqS:Lq4N)^i2ŝfST xwMJ)4N)^i2ŝfSd;ͦlWLq4N)4╂)S4Ł\R0[v8xrNOn)-W 8xr˕)ܲS4[v8xrNOnR0[Lq䖝)ܲS4Ł[syC8b~3a~?hS[46pD>8'i Ήh:1;E'1W'ȸSswpT3e G5SvF5SF5SpT3erT3en`z8_:av=|yd=Lshv)ddžzV{몲zaCsu_aZ;/ǽdsT3ew~Hӯw0ĸ;qezv CPQ̔?iu_0})S}&g/azz52_S7tz8pLz]=⼑x|5ѝUsu:YYϪp4JS 8xNϟ)3NϔR0Ł3eR0c)S4cv8xz̕)s`Mq)S4c4(4E`JFST Li4E`N)*ST 4JFST LiS 4~)ST 4R0E)*StMQ)ӆ)b:PL1?!S/4V[K݉Ҩ%4QF-it!4V]J{NG-Td1:EYU:-iT'JSV4Ű;ɦW2Eu4vb4ŰSr)!S\I;!SL:/|wL1SL1;wWMzӎVM|v0ldSG?li)bæȟl˻VCX|Ӱ)&Se4V$M)aCuH؞:6XᄫsBu 3NDqՑ~(48?*T 4RG?iGN?*T 4RG?*tQ)J?:8J?:Q)JFT iǕ?:Q)J:JFT 4RGN?*taLg?&cqѝ?GuZ'Ng"Iw:-tD|J?V_gGFuz*NTI;iy˕6QF5괤QZM Wt N폷_8_sugur? W1Ķ;OJ4~mcU;׳?0W'c:u )ҘTƸѝ,w4F V1xu4ګXQ!iXƵ2I> 4116W1DT1;Y~W\vzQEwܩ?6cqlN?GGu3NNtZ\gѝꛤQ)H(JAFiT ҸRFQ4:ҨQ)H(JAFiT ҨiF N4*iT )/;Eig5?Mif̀nKϯ?{ۍ\z/\OO5a|fH)!P3՚A=޲X1~#=jYL'tgUTUR?Ra+;z*;ҿ,;rWwXπD|Xw܍/^ w޹;;;ܢN-wE'y疻s˫s˫s] w޹;rWtwnyPP5:*8*8ktBUpB脪 JNPP5:*8k<֩F'T'tN N NPu :a͐ƫ> P3#'Lcf UGN虁j5D{ >{X^d Hc>4Q3#ifPg4;cz3  =3E3# O5?jf䏞OZ3# cu3}/fF4 cZN3i<π?_qd5j1>ۨlmT3YMd\j1Y3?u=1wk{5CD c"͠?ىϜ]9rv'T|ϠJuL%53RI͌T3|*>NTɻQ3uf? TqF*rN* *URT5*UI%]JJFTTt* *URTRT5*kTIUPIUPIxqP%U?JJFTTt* *URTRT5UI%]JJJFTt:UPIUPIרQ%UA%UA%]JJT򚙩fF*陁Jjff@%UG*陁JjTT Rh{A,gtfF*yT3t85CV<3xOf*ӐXfFV=&ig݅=՞њAL{1>Mhpjxϔl6Ž c\{U{*^vQES1`{=Lq/Ǩ)eU4Žc\)?UU])))FSTSt MdUU]))c**k4EU0Eh``U]xthj LQ3#S5X^h̀)LQ3Tdy iH=3اZ3OU])LQ3=מ 4to)z&L3S5M1>2ŸRgx͐)~532Eπ)4CL6ŸʡfCjL13ASL bzRT3d]ӚASL6z&b%S, hqF͐)'2vAS,ƿ0xfSL4E>L3U"_M)32E͌L3S5MF=T=tzxլZu9fFN虁jf䄞)䄪 U ]^5:*8ktBUpBUpB脪 U U ]F'T'T'tN8 U U ]F'T'tN N N䄮 U U ]c*8*8ktBUpB脪 U ]NxͰsfFNpq 5gNpBՑz|U8kpBבzf *kAUE/?y'f癬|]՚AKw_ӆ W_a0͌^43?̀O3#i/>Gly5̀G"5i/Xd? x!L f׀}Ⳝ#7L _\3 }-n)ߚA3@?WRr*fFʷfʧÊ4CS[3yy穂睕=oUN~-=5ʝ*ȝkܩܹ+ȝ@43;͌3H}y&\g4CWL7 z9fhhK⠙y Xhay/ɓfPҪsKpLT>yo5]~N3$w';j=.>UZ͐E)LZ͐=.r\@kxf wAc0]w͌N3 wn&wȝfPɝgr;U;(w wQJr r w{53ڻW3{=3;͌3nN5ʝ*ȝk;UܹFSsr r rN5ʝ*ȝ*ȝk;U;(w w wp}6TQe WGgCQPE{}6TQe WGgQPE{}6TQe UGgQp{}6TQe UGgـx5w+jcKgLԸ8C{C{C{w ݣ Fhd`jt.ݣFhd64Fh{g5<32G;cft;QwF;jdx5ҊemG 0GQc}7et^]| 3eGzfIqC`LfA[3%$gS] {^zgFh;j5{@9uGqP3<\;5*_8C{|K**ߣqUVG%5\ =.>UG%OTe UTG%Qvp{]2(d=.|K+(ߣ (d=.|K**ߣI)|||QTATA\FSSswUR>ר|||QTA\NO5**(kT>UP>UP>ר||f/m=W1?DSSEKW쐫qFi5ڟ<3?̀]5ڟ43? O3@43zO3<;k53R>π;t͌O3#@4Cwy'LV65wWyf|AK{@xǗߣR(vAKO z&+_?D3|ʗRa9 k?o|q?[͐]xw/waKxf|)gʧT>> Δ3o|(fF{ ȝ*ȝk;U;(wW%Ss wW;ׁi.fP 宽y͒ܩܹFSsr rwU;(w wQTATA\ܩܹFSSsr rNNGB({\e Uqrw=.TQDž+Qp;(wGB({\e Wq rw=.TQDž*݁{\ܕ}+j|N5[a;Ca;peyqv|?^ lGu"_]'4+?N8۩m[QwHkk.{QwȮw,e=32f͂{\d;%π-L;qT͐wz.ف{\Ɓe7fHa=5.V3q! h\aV3q巋4.?Ҹ~k5X9ոw硩mr^e;ƻYxfZ͠m7r65wpE;ʾhtGٷltGٷ5]莶o()6:y1޷3徕(Ve W0[qU6[Fw}+T莲o+Qp;ʾhtGٷB(Ve t<D~wFwltU5ݫ&k6f{dt`tU5ݫc]5ݫ&k6WMFwltwFUѩ5ݫ&k6WMFwltwkύA ר|3^5]'Fsg&Fx6U\3{3Y^5-{Ϡƅ'=^3j4hk5h=3Ѹ̟PqL45S4h5.=3ѸLָdM i\955.wWҸk&k\z!K{Df=_Ը{4.=W~Y75n|ָnVͰƅx_3q|ik5+ڽjOcw v7>'un?w{&]jrfw{nnwLU3jYk_5[ګ&KkWMvli`i,^5Y]5[ګ&KkWMvliw͖-U5[]j >53¶3lTCgPž,l3ЪoY9͐ŧ<ݭ} ךܭ}O@gCC5ݭ<R [9Ax=uvpz m]Eָ gwv^vޯn;pWtkPewyW wWtkpEaqZ/rɖ   li;pWwP+Z;(*X;(*X;(-m wEKyWQEKSKSKs -M,5Z*X*XkFKSKSKs:U4xSKSKs -M,M,5Z*XkFKSKs :4 ,M3#K4z<-M,ifdi<34͌,M3#K4:4͠g/434τky{fkf~P͌,M3#K434 ,aK;O{]3`i]K 3diiELlfҢi,->5Kf;>5COπw|j[ڧ<--fլXXj~?(#gy&[Z>6U*F¦6U6(l lQخJ¦  lQTATA\]' k$aSas¦ M$lQTA\FaSas¦ ¦ M5 **kMM5 **k6U6(l l lQخJMM5TA\NM5 *k6U6U6(l lQخJ¦ M5 *H<36͌3 l嵍M3#aL6Ցy|w~^3OׁifdiYg4Wi<͌,M3<T3di㠥gW4v=3͌,3K<;hffiAK[3|35C3b!Kk,->cli3͐vz&[Z9 KK3di񽝞;9gҒk,hi(;4͌,3K434 ,M3#K4:4 ,M3`i`iT\],M,5]\K4rI -M,5Z*XU\FKSKSKs -M,M,5Z*Xk4U4U4WH \Ҷ#*ZVv$PEKʎhi[ّ,m+;meGUH TҶ#+XVv$pKʎhi[ّ@-m+;\-m+;meGWH:m#fՑmWxM3Q;B=j zwk;Wm Vm#f}l=cv$5;x&\?mmGq}zJE3C5;xffxGόl;l+;]Ͷ#v$ڎ `H,=M晑meLd54fH(Y]@5Oj,n晬fj լQʹkf[ۑѦj>H[ݽ|meաm 4j \AͶ{+Vv/PE5f^j \˝$VPE5f[{l+{\l+{meUT= j\AͶ*VPE5f[{5ُ6LL5**kT3UP3רfffQͮJjLL5TA\NL5*kT3UP3UP3רffQͮJj jL5**Y' L3ff*X3#5H<Ԍ\L3@43Rkufgw-hiT+Xsh3͌|3J+vy&X|D3#<3رS3ciw |욙fNfǒAy&غl]A+|}>ci<͌|3Ǣj|,>!nKdk|,>!c布ŕˮyԌ)35`OD5sg>yfcSg>1U1ccǮJ> >cTT\=#kg$Ss> >}L|cT\FSs> > >}L|5**k/.**k1U1U1x >}L|L|5U\c*k<֩FSs> > >}L|5UT\FSS=U晁iޡ3+Z͌L3fI<լ}hoS3#Kf\ifdi) 4ׁifdiYgU5ݟjfdiXfnAK[?ɟ3`i/3disX534͌,3K YZ|Wgլ Pg}{Wl(LVvfH͢k,g@b!5Oy&Y|V3fq}kffjV8f|D5kgfF晁ifdi'4Ցyf`iKSKs -di`i -M,M,͵_K4U4hi`iTҮJ-M,5Z*X*Xk4U4hi`i`iT\=~hi+Xڣ'( =~hi+Xڣ' ( =~hi*Zڣ' ( •'( =~WeK{\e?WGO@uhi~Zڣ'>ZZ|[c5j=lgnNόQh '>h?πGO L3Ca{=~`'~Tm?GO{~ ly1͐'>3͠e}{05–1 XW -XGۼj:RG#}j=\ʫأP>e7~أ>(=nWe{\9}QvPE{\=>(=nc+أpUG @}QvPE{\e7WG @}QvPE{Te7c[> > >}L|L|5*k1U1U1cW%s> > >ucX > >}L|5^FSs>vU1U1ccTTG431 |L3# X>Z3 fH\A3IfF晁if$aHfH430τLfF晁if$aIgif$aH5vaH<v J3 aY<߷Y?X.͐E XZ5<}4>v nŵ=31̀]|ucgj|Lucfy||ccU|L3ccT\]|L|5]\{F1rH> >}L|5*U\FSSs> >}L|L|5*k1U1U1W𱣬>v]ǎ¿*QVWE; cGY|(+eU>vUǎ¿+QVw; cGY_}(+_}(+eW𱣬:WzquAI.<ںk>VcG]rR*X͎?u7y1 3#5;np'zm7Pvnc|hWm_}g9ںcGY(VsY}hkW1>Xlǎ{C;ZcGY_}(k_}(ks+QWE;Z垑}(ke-W𱣬 >v>vUǎ*Qw;ZcGY_}(ke-U}l;> > >}L|L|5*k1U1U1cW%s> > >ucX > >}L|5^FSs>vU1U1ccTTG>晁i},نg|ZeAfχ*kL430τW0/h^ou[gncFz *k+U+(VW%Rr g\W+r%Rr-wq$V.J5*k+UXFRrb b bJ5**k+U+(V V VQJJ5**k+U+x' b b$VQTATA\N5TATA\XXkmU+U+(V VQJb bJ5**U պ3$!!WW#Ȧ<3)[h<{J뚡\OiifdSٔgQ~P)BifPĪM9+e{53& Vț<3kfM!ojM}~!ojI|M靝wo ySTIDo yS|VQ3M)Y3#o xkft̼3M|aoq&;U"!R'ʫٔfЦǡ'g bO^W1r,̀ccFRruUr,Up,r&r-ggr,Up,roGZȱT\ccFRǺ*9kt,Up,XXXѱT\cccFRr A.*:֪XXc w8c½̪XccKkUtUѱTX*:*VEZKkUt,U_kUt,UpUѱTʎ*:*8֪XXc:t,̀ceAZ3X*X3XcW>t,͌k͠cԱ|ƪAVymUZ3CL9Oh?Hτg^3$a5UifckfgF>vL}l }L3c* }L3yy}͐ŝ5CjLV305Cje虬fwլncY9lV3Wr $lD caLn`Zr-wYٱj|JmjUx5>-޴*z*xӪMMgeoZI5/]ћTVEoZI܃7{0UћTVEoRoZMM77޴*z*xӪMM7ޤ ޴*z*xӪM7#{*x*xk&U&U&MM>BI5zUɛ\777c*xk<֩77FoRorޤ ޤ I5zUɛT\77FU&Ց7y&x+R(+DՑ,if$KȒf@\qާwUzuEifFZ䙬E~I3Ei% VhC͌ 3ᚘ I3#C ~o ҥ-g}Z 3CȐ< )> t I3#C40!U4CL6kOj )?ElH)*͠!wj wАhfdHO^%ׁ,if$K) $K K~d5ʒ*Ȓ*Ȓk%U%U%(K KQJ ΢ KQTATA\ɒk"YRYr eId$KQTA\,,,FYRYr eId5ʒ*Ȓ*Ȓk:@t,KwͲIeY^5],jfYkWM IeY^5eUӱYeU,5ҫ&YkfYz$KwͲITAeU,5ҫ&Yk,_3I$=LeubH?7{&ҫ#,*ҫɻN!-Jw?ע{fE?ע{fE]vt{ɻ^3B9{\H3z 3Bi̟fF.tL\5S`,@U5=C5(!JOf%gf@̀T]zUz¿3y͔39X]jyd=wsl=Z`=wzU5[ϫs Xϫ&kfyrz^5Y]jfQyd=wzz^5Y]jfkWMsl=zUHzVEYGgUUzTzVEQYgUUֳ*Z*VEQcݪh=•h=`=֣ ֳ*Z*XYzVEQYGWEY5Z[f)" Qy=^3G=ȃ;5.tV~ZL~⨼!!iߟv I3#CZ3w3CCL~'zᯙ,s(Ko ) 5 XzJ㚭ƙxzTz\YkUUh=`=`=zTz\\G5]z\rC֣ G5Z*XUz\FQQq֣ GG5Z*XkUUx$|^*wQq֣ ֣ G5F*YkUUxSq:UUh=`=zTzTz\F*Y*XkUh=`=`=zTz\U*X*YO2 XOzLL/Dw̅'3х@ P|Og E f.p!>r\3NtU x/:ϔ>Y*Xk!q֣ ֣ GG5Z*XkYkUUrCZzTz\FQ*YkUh=`=`=zTz\#YkUUW8n]z6^aUz6^ah=0}WW+Z+L*X+L*X+Lgֳ wExWxWx黢l]z6^aZg_g_7^ah=%}WW+Zև+ ׇvE͢|ϰZҬ:t{f:0VG~յlu-|ǷΆkIywgMW~͌TgkFljUAujt8d=6[[5fkFݽALǭ XOv]~ֳU4[V $TΠB[[5mj]Q6^5U=kƫFhU_hUZwE-xhU֢W~rd-x転mj;(֢W+jƫF*hƫF*hƫFmj]Q6^5EEE}WԢW+jƫFhU_5 ? Z ZHH5j*hk"U"U"רEW%-rZ Z ZuEX Z ZH5j*h*hk"U"רEW%-R-rZ ZHH5j*hkS-RE-JWOc\Z]33-@43"̀f-jbEhfFZҢτ_&͠!f I3!yf`Hg]3lHifTCCT>4AɆ )0 R\3`H ɕPgE)wz2$@^F5Z[-wRUPr/CUGTGT5**kTUPר:W%Qq 5WPר:::NTǵꨂFQq sURר::QuTAuTAu\ꨂFQQq-GBRר:::p$<Ъ:GYT(Ce}hUTs]Au>+QևVE9Ъ:GYZU(Ce}hWPsUQu>UYu>+QևvsЮ:GYYU՝j|Gk q:|p՝mug̟=\QWwwd RJ+6(5ooGY\`/͌VL65&}h+6s<&ß q._k4fdP9XY>gt<32 }um*5Rs:ή(5GYO\s6KQVav-',5GYY(0efU¬RsURsU]y(0efrRsUUQj +HQVav9*We9*̪(5GYY(0efW¬RsUUQj *JQVavG',ԨԨԸFQQqR RUAjTAj\\5J*H*Hk<֩Ըc*H*HkU(5 5 5QjTAj\\F5J*HkSQqR RTAjTAj\ԨԤgw<3͌暙IgR(5L@_4C<3[K3`2h2_=]d43zz3Hj43 F3# HMk&K+Lyh2qMc͠WM&fd&?Yh2q͠+L9.1rf2fF&rv&*kQq-gg2U0r'B&MFLFL5**k4U0h2W%Qq 5W0h2`2`2>LƵܧɨɸFQq& &sU2h2`2dTdTd\ɨɸFQQq-GB2h2`2`2H~dTdTd\ɨɨɸFQq& & &Md2dTdTd\NL5TdTd\ɨɸFQQq& &Md2`2dTd\U**k4U0xէ & &MF:͠+k%ʆg|N|0rܝgx%͐Hy&\hfghf/fF;{&K|5D_ LT L\O3`2!ϼhL&>0]@)l2W4C&Shl2|TfF&rv&*kQq-gg2U0r'B&MFLFL5**k4U0h2W%Qq g;W0h2`2`2>LƵܧɨɸFQq& &sU2h2`2dTdTd\ɨɸFQQq-GB2h2`2`2p$<ʪƪh2GYL(eUcU4j&sU]d+QV5VE9ʪƪh2GYXM(eUcW0j&sUUdUd+QV5vj&sUUd*́U0/~dJh+R[+ģ>J\}~&q8h21p7w$ JMzwgµ+=gFRsIjRqTW1 I V*9pbW4_g!iL&>h2+GY82pãI\~Sd7M9i=Uҗrf}IONjf/>r]j9e`rrUUQ_Jk9e`WЗ rUUQ_J*QV VE}9*厄(e`WЗ rUrUUQ_J*QV v}9*/GY%X(e`UԗE}Q}Q}q E5**kԗF}Q}Q}q:UxS}Q}q EE5*kԗF}Q}qW}//Q_TA_\U**kUׁh%{5OĤFU2xxu/ghf/ ׮/ghfƯgҗh_fH_TI_ʫ`}IOi%g@_;r' %B})Ghd<30͌L3L&sU2x' &Zd2`2NL5**k9ɨɸFQq&sU2U0p^sq& & &ZSd\} *k4U0h2`2W%q& &MFLFL5*k4U0U0r$$q& & &yk& & &MFLFL5*k4U0U0h2W%q& & &u`2X & &MFL5**k4U0h2W%Qq& &TdTd\ɨɸƫ>U0U0h2`2`2J\3d2aIwKI3# H@j43 F3#Hj<hIj4CRsݱdO@hf$5IgRIO\3o ,F3oj9g\5ޟԸs6I*Hk?!qR R RFF5J*HkԨԸ+HkUUrBRZ^HjTAj\ԨԸFQ*IkU(5 5 5QjTAj\ԨԨԸ#!IkUUW8e_U R5~UQjƯ*J^UE 5{Yf/ke_UR5~]AjƯ+H^UE(5{Y,5{Yf/kU^UE(5{YWf/k[IVW}#q^W廬}ƯfRC`2x_ Mfok5~534}Ưfdqo|aɎ/IhL|Odo~>F3Cʿ7M&V-S6>nga_q_Wԗ櫊|]c/0^Vu-/{YWe/e5_Uԗ櫊||]e/e5_rG|UQ_+^Vu}jWe}j/{YWe/e5_WЗ櫊|UQ_*^VuGxA}Q}Q}q E5^٫F}*kUUxS}q:UUר//Q_TA_TA_\F}**kS}qW}//Q_TA_\U**kUׁh&]Y\Y݉fF΢x6rF/o5\=fFRY4βBY<3p͠$ 8 tul3!gϱx&:KZX<%r臚!gϛyYxYL4孖s+k9\D5Gs+*k Qq EEDED5*ks+kUUrAZ2HTTAT\FQQQ*kU(* * *QTTAT\#!kUUx$UU(* *ODED5*k9\u`'A;Iw6!;ᙁhfd'؉fFvp=Jىgvhfd'؉fFvl'kVxQE%IOx&+ɵȧ**I|gD * |LI43Rτ}D%qq-gFrf$*yk Pq-gFUr@=DU0U0h`HHqU2xէ: ͌439 4C3# hkƤhf5G=3 ̀ff/4Ce3I&ԌB;d(qԌ򳊚Q~'X3Lh4#ʄgu-<U-T-\µ-JnU-\Bµ\[FPPp-g0r Up -Jn n)-T-T-\˵O-VEXBbUtU-T |Ut UpU-VEP8+*Ū[±nUt U8֭n**Ū[n n**Y-VEPU-ToUtU-T-VEPU-VEPXB -n W}b B39u ͌b b͠[kL]3C EzfFihBY(6h& E|a >3Y(O nP hÚBVɊ fB._bU rbP-*Pu(\B* j.gPXbU rbXBbU UPB( PBZ,媝bU UUQ(TA(VE8+ *Ū(HB* *Ū( PBZ, PBB B BBB5^kPFPPpBqU (  X Bu  Q(TA(\PPPFPpBqU U xէ BTA(TA(\PPƫ>U U ( HHBqU xէ: ͌L9jfx"4&"43dޅ>͐EF=Zh)d(ZD|A3dq d(?ah巀-"=Eh&ZɁg⵶jUATA\HJUA\A\k:FuPuPup-RUPרQJ QTATA\\::FuPup pURr$$up-GBRUPרQTATA\ˑ5**k<8 X AA5^?:FuPuPuppURרX uQTA\:::FuPuppURUPxէ TATA\::ƫ>UPUPרHHpURxէ43RNpXfFpVhNd~fhlg&5CBD ER dڠ(Bߩq͠PDA dPO0 EcHOIhf$p \BµH(\˹$\µH(TA(\u9 k U U r"PpB B$  BBBµ\Pv U ( Q(TA(JBZ$HHB BB5 **k9PFPPpGRTPpB B BUA(\PPPF* k U U xSp:U U ( Q(TA(TA(\PPF* *kSpW}  Q(TA(\U**k U r$$* kS fPr|dHᙁEhfdg(!h"gPD ER ͐PD E8$Q<B_,dπEO0[Drτ3 fE:kmUPx Z?CpURx Z?Z5**k9::FuPuppURUPpFpup ZI\˕8*kTUPרW%up-GBRr$$uPup AA I\:::‘p+\:leKWPs강u.UQΥ*Vֹtu:[YRa+\:leKUTs 강u.]AΥ*VֹTEu:Weu:pշu.]o+\:leKUTs강u.]AΥk9:leKW:p?u.A*Υ"%1nmK0 WdpMLס:lmLf:/d+p˿x %_('||X~Cᚘ sVz++ZUVVTE_ʊ [YR}a++ZUVVt-ghZ*VVt-gh -]*VVTE_ʊ [Yҵ\s/leEKU􅭬h -]U*VVTE_ʊ [Y|a++Z/leEKU􅭬h-]p;oTT\///+eU J}A|A|5T\N|A|5*kS_P_p } O|5^//F_P_pW} T\ˑ| O5+*A# A *A|V3`ÙOh43 @3#3L9{+eU0x f fZdAfpU2x fZd`J5**k9{F3P3pfpU2U0r'3pf f fZ \u4*k4U0h`W%3p-GB2r$$3P3pf f@@ \#ẸA3P3P3pf f fU \F3*k4U0U0xS3p:U0U0h`O@5*k4ƫ>U0xէ f f@5^F3P3p-GB2ƫ>U0U0r$D3a3H{!3A3(@ {f`f@w뚁]6]1u|^;:ցRHhf) UxM :UATA\yt'HJ:UA\yt@t\FPPp- UרQJ: :ZQTATA\јt\1FPp: :pUr$$p-GBUרQTATA\ˑt5**+ *VVrtJ[YQu`++9le%GWЁ :UQ*VVrTEJ[Y*VVrTEJWeJpշ]o++9le%GUԁ䨊:]Ak9le%GWp%GWԁΨ:ԁ :c{CpuFWxv@7\[ѕ}k( OM WQ|([Yh+\ne DUxo5U~+k V@t-Gy劖*oe Dr{ [Y*oe DUxo5]q*oe DWpo5[YQ*oe DWpo5U~+k V@T{E{{UW{{xo pohU5۫½*ۻ{ҽkW{{Uw:Uw:UW{{xo OU5۫½k*۫½kS{{xէ poU5^½*ۻ{{Uw-GB*ۻƫ>UW{{r${ݠf_ ׆wL~ *fy5:Y>N f_U4c3Hh= T \㕲*kRV3P3p-g2r 3*kRV3p-g2U0rLf@@= T \F3**k8ʻF3P3P3p-d:@5*k4U0#!k9F3P3pf f fZd T T \Ñ͗Ouo+o_~zo_v}8|3<~<0c^oy~vVGuy닏k>|?e'$|#?E⾅{cĤHZm^:<~ _7c[8jKa_#|ֽy#|5O[ y-s}_Wy]|֟kUypc}_#|FX[ײw_k~z3=:ϙ֫zW0'_+sX~}ugc~|}k>3-l<=z„ynK+2|oJ}я˖~߲eK3|UG%`K꼟V^~d(U~\ˏ;w<#3z^hdOGQ~]خG5帎{:OΛuR~ڟ_z{:kxku\=?=Wym }~Asux -tWJ??qvl_tIv?UmכOmݞ{l|~Dt+XǜtvXǜkNg=.L??W8z<ߣײ0>.H:yJ7' V>}.7=uϿ3̞WPkN(z\KW}[g7%*ߺLtjǷҵʶ~&ϓG~Kb/h-;[r[ɅwYqõo>m|YGyq΃,l|X5KX_׊"fNJϫzЏwiϋ?ן?ןcp~B}>.;X7&_׏oן?Ozhyyql|?_Cy=/q?y*+Ǻ{W?Pϣخ]׿;p=|m=֯ŪV柷.=%[9^W |y]y81y>tqֹouoZ}Ox<}]路<{:_y/)ϿnW?W+ן+ǎS}}? sT'Au g#oP=Oٽf$jA|$߱DX@i3=.V$} >)Sͥ|௟~|/~!=zjgLӗ+ůM4-YLL"Wg_C_a8eO Lӗ+KV8ӴhtH++=?0??.4}yW鋕񋕕+3M_1b>Ӵ@IsYoqҙ+z^7a=?0݊>Jn3M˦V/4- ]i^@ԻHRq/uJ?~ů4}︬L+ůWzZ4}-.k=ӣHe bH"˰wsU~Egۮ4/:Ӵ\jqJr3 ma ܟg*̭Ζ`aiI,<;6Z#{xlFg',ϼ8wkoGZt7 ֎\;qs'ߍ8LtV=.7@q]ԯ=.X N8۪_{\R~ g{{cϐ}Oa<y ՕQί0~δ8;}~o(V<GtNbsez:;}|TO'.8||e+?o:27^><0HXLQ>/xvե=耇G}9gcs[<p=KǍY(%)*RPD)(HQId$JAI)+RPD)(HQId$JAIFJ8#E%)*R8D)(-*Y)RPDV$J88RTRp?+%Q J2RT JሳVJ#E%)*ҭHQIg$#E%QZqXId$JAIFJdTd$JAIF;?N:)/YJRS' \E 萨L`p' ] :YT1>+ : *8 C|>kYEex~t@Tqvpc1C2QㆢNu2oaG_F,*qŌ:$*eC? (*0dQ~;,*E :˳΢8eg?+gQZ(g):Y9e,JKv,#Egy,JYF΢8dg):⬗E)8HYF΢e,J^v(g_,NSpY(gqE)8,JY82SrY(gqE)8,JY8΢i<(gQ 4q82Sr,N(gQ t+Rp8E)8xT 4:Rp,Ng,NqP)8Rp[8G,JYGrY(gqE)8,3%gQ 4:Җ%֦'qRp,IrxNvx9K:,x]_;YkмuYzwCq6\g=|퐳l$vDgQd, z뀳lǮqDgƱ{(:,x6%[_8K@ {:,ye;Y\^,Pꐳ-q';KPuY͸Ÿ;,fAgS}LԟYHn}Q 8&}qE) 8&}Q iqI4RЗ8iqIiq.L4R/N(}qZ (}q c/#E}Q 2Rԗ(})RЗE)5E)HQ_FE{y(})HQ_E)HQ_F8#E}Q 20E})RЗEV/J8xT2RpnpQ 2Rԗǣpy/J88Rԗ(݊E)qF2RE)HQ_Fe/JA_)HQ_<}}Q' \a<<(}I+V!}+4u_plK\}NԗZCЗm*:Q_ve|>>MWҗ{_[>jk'Jm'!|\q{|w}CG'Jx2H|X+l.(5:#+l>k<'ϒIx5I躆ǝ(57YDT&s'KM=:$5JMuHj*;d)>qLvwr}3Jap\ߐUG)RP,Zc(qUG)LIuFQ 8%Q 8&qUG)RPQu8-αIu8c#Ө:JAuFQ TiT:N(Q 4LIuFQ TiT:N(Q 4RPQu(qUG)Ө:3%Q 4RP:N"qJAu8A:N(Q 4qnk}T8TG)ӭHAu#RP:N#Ө:JAu8TiTfաZuzҙ;qURZiX:#Ma,JR\(Nt!:GrYu<V\H0* w },Ak1:Byŋ;х_r }vvȅ>3sg*ډ.97ɱo.9^oZcm܉.5ΐ6征 }Wr|d:]>o"u:[;م%C.Sr3;хo!;&](KrhI oB9.ğBűW-k/2$uZN4$`HJdHJdHN!)C)hHJdHJgdHN!)CR 4R0$=R0$pF($v ($v ($V($V($V($v ($v ($V($V($V($v ($v ($V($V($)ңؓ)ңؓX)ңؓX)ңؓX)ңؓ)ŞNŞJѐŞ3eCz{+ECz{;݊ QI QI8dCsGSRGSST瞏bv遻:G2\m^;R.(Kry<Ҏωs%;Y@ȟMV~;$K{UNn^lG'xn?/+㵳߿; KQbdGr^yNm+qw@HLymw,_H^f~Djv@zT; ],o(Kg0R֨\PCr GCSТ\! ,Kbf(Kbf(Kbf(Kbf Kbf5ң؅iqϲ(vaV(vav (vavZ,=]я4ʒR%Q,)YreI)Ȓ(KJA,94S%Q,)YreI)Ȓ(KJA,9di% KJAFYR 4LI,9dI)ȒӭHAR% KNqP)Ȓ(KJA,9G,9A KJAnE 4q,)YrZqzN%:TI)xMJ77͔>xxS6P)]ޔyWV=k*u@f6 5yMx|\;YoʿR*_6G+ :P_xeDmr@>[j~AW/C 5:{>PY~^nk|߿]:Qqz|=ʻ4>^k<Pqr6SP;YUN)x6)T}LRYuH\Er(5XD 4+Tq UɦlJMSM)rZM96ljdSNM)rZM)rZ\)M96lJ)ؔhSJW dSJ+GrmJ)ؔhSJM96li)`SJF)ٔhSJM96li)`SJFR 64ڔR)`SNM)rmjdSJFR 6lV`SNqP)ؔR)8li)`SJ#LɦR)`SN"r8JM9-8lSϝlSS)Ѧ~ VJ[bNX5U:w*]GCbWbԁRJfWzk7uȦ\lwMŕMVeRl*r'T\Ԑt޷lSq:dS[Gqnc]۔6=KK񊾍#vMeoTl{>SDk'ԸxLyMs<:uȦ/\:ѦC65nYwM[;@]?dSwM՜d sm*~;ȦMm8M)EslSٔhS]X9-IFR b5S+QX9-IX9-HFR bi+ VN+ VN(vv bu;x;:XJQbo(VGS)Q(vVbu;x+E:XNAbo(VGR{,VGS[)Q(vVbu;x;Q(vVbu;xϔ(vVbu;x;݊(vVbu;x;-8]:p_o><ݾXyQŪPYYQt~|ErTÕρxߦ+ԡ**w@\fWMҭqt(v':Nn=oG~tn:[q>;Y||L)cJǜFS >|i9>|L)cJǜFS >|i1cN)S >4R1fJ>|i1cJǜnE >4R1cNQ)cJǔ9G9AcJǜnE >4qFu@͜רӲ4wy:`iJY;Ҕ,͝hi3Y:diÝRRxNVY:/c͝ccꠏkNw>N뗉ꐏũj/ǿ9Miy~} '/\_V|J.w*vJک|bL}C>-ҝcHtư_cq.w{5r;c7u Xbw}{5sc8H Hw_@C>MMWe;/g},Np'XdXqw:d5+kcJ8>M1>+*_NY}}>Ikœ'IfJ4JR0IR0u I(aJA”9$iq]B$iy4JR0Q”) s%L)H(aJA”96S0Q”) s%L)H(aJA”9$i0 aJAœF S 4JLI”9$L)HӭHAœF S $i0 aN) S 4qfJ4) s)Hpġsu:cN{A>>hS>͝cJǪ |lc|;ǔ|̝cHZULRvP՞:Ue~^iE:|\ٸyM~{NUcnr;GXřꐚ _[5Ȕ;媲wS'KZ8W/AKFx5g?cj6QcͶtwSr.q]O}l !{ۻ}xESS|>ϳK'X젏M*NNMX})+cJ[>L&t%8 S $=S|lcN)sZ\)sZ\9>|L)cJǜFS >|)ǔ}L)HF>|lcJF>6R1cϔ}L)HF>|lcJF>6R1c#ES >6R)Hǔ=S))HǔnE>|lc#ES >6R1c#E)R8cASi:-c|;:f,Ԭ~Ҋ{ꀥ--_SYe/uF|;MKcƴߐ:dissœ:4q8=liqʞ:di0nܮli>EF,m |c1 4S MwJa{MZƵfa{>b=!a5Mqda5|]: l.c –w' [- [̝(lꐰʼnꐰweo4w9CF*NϴM׿:$lűWꐻG[v|^sS4aXFqҜwS"k\};lt#FbNqr7R;u˝R܍N)HQ܍n(wJ @sN)ȝ(wJA9ri; wJAF)ɝ(wJA9ri; wJAFS r4ʝR; wN)sn$wJAFS rV wN)S r4ʝR;Q)s83%sJAF#;[Q9ʧO)(Ӥ|!;Ӥ|+wIVoY4)JiRf[iV3MʧL4+JiRf;Ӥ|+ʷҬ|goY4)J4+ߙ&[iV3MʧoY4)J4+ߙnEL4+JiRf;Ӥ|+ʷҬ|g8JA4Wo;;[3wRTۿgOL|Q/)d[iGߕouPفU{ou:wvcgVcӱw[dK׹C[7W.ϯ_ى=ڣ뫑on{Ι|͕~Zv _^߻rut~:;;{[:` {vͿr߼Wm;;`aӎW?:ο[񮾬;;wUhiO!K+Wo?hi=g'_qC+l|FWo4W8b"gi~|;-\JDpYϴ><$+",gDpYϴ\i3xÙnx:JNtv gFrϛzU3#x+m3#{&ITjSjDmַ|_ni[5u6:w[ήzgZWM1_n,)5:H(C89^A^(y%};`󷹚D:nhv)V6ŹyȾu/bpuޅ d>di)C~~v)ΕS)bdSS5?C8%C;;`㙙w.Q4jA<;N}ebًv,<~\<;`|AS,hűMq +ES+6E>bS)n8͢4⌚M[7R4ōdiqǦ񔌕)n<%L7qS24\s}>'hN)*StMQ)R0E):LQ)h3%StMQ)R0E):LQ)hJFST Li4E`N)ΔLQ)hJ):݊LiCP*Fw_=aFE(D=+!=, iZ,Hz4a}FS,-86E>'CS,tvܯgLѝZLQ) Li4E`JFST 贸>#ST LELELEV"+ES|d)>xș)>xș)>xJxș)>xJ ?p /Xgcg/nTBS,nM<9;pW@YoTNME|,U>xJ*8%}kQM):):puStv8/%miQMƩZ NE=8ս26~/>; ꠌ8i@jMVf;S뢣k uQ̵kУk3q~^S\?6y':u@cb6Kǀ tahuC=感 kܫxF9k)vy3ꐁg{Fc ᭃ^4:q*:-/u'{iu;!/-xi'/U^Z ^TvJIF+;G{^Nq5H^iiRN*/U ^4zRRK*/utN*/U ^4zRRK*/uT)xJK:^iҙ*/uT)xRR[:^TiRLu'*RPTQQFEOkuZN>n#찭c;V9:d}n-Eu'7*m); EUCZ=歽Ciت:+v@\giV݉e4v U+k'uV 5qUR8/P4HRԸ͝Y!E;)2:?:YQǻ>މAEw'*Ќ[uHQ RuPQm۵Ә]NKQEM!EsUPTuHQz]߮Pq;nvZ*\vvSTwi):]Bi.R4UVǟ~(jSRw@Q,C괡DE}I*%/-H{^Nx,KTRuZ^NqG^)x^L?r ^ӏ#{1H)z^L?R^ӏ#{1H)z^L?R^ӏ#{1)x^L?R^ӏ#{1H)z^L?R^ӏ8?Swğ{1)iP_EVw=o^Z^ZRTԽ=kɝsv9^ZR㬥_]#[8is~8i]qqZӦLꐸ_C >WӚqZK׽DW{5)>՝,q: $9{1ityTA\q/AqۋLvc}됸}c:?sIꐸ\,{5ia_^;(s\]qsP){5 u2ŵ꠸>eqM~NoSwZ⺗s\_׽DsH\j.Sq\[unU\&׽ߣ\&׽Tdq])^M`*Vb֒RU> c[sNU>G[ սT݋8^pR3F[ݞ/mUV:lU)تhJVF[U liՙ:lU)تhJVF[U liU`N*[U 4ڪRUVgJliU`JVnE 4ڪRUhs؝|JU`Ž_+Ny;,AiKiy;ߏ=JK^N2hW2Zh3Pw@?}ek48Kg9>hd먧~wZh>E+Hg ty:v@Qz}D/: T⾑+|STwARTNiTTN*EU 4*RPTQQ*EuuN*EU 4*RPTQQ*EuU)(ӨJAQ:iTԙ*EuQ'*}jtսKDU :4tVY UtV)QzvXgםNVٺ۹֝pU !$ם,cޒ\u`Vլ$ם<*^NwuW*mI; UU%W)Jn; U%$ם,QTAv"wisI}%x>W]:Yrvzc;}ppdmg6nmܷ(/il!ϸvŵf; ;V٪CfYL0[ulzlwll!\\V4[~G٦5f׾0[ulީf՝|*uloxl/-lo՝٪2[wlvvzfN0[itX Z:Ns[<&='9:,_9VúV)8RpX=*):RpؑÎV)8HaÎvJa);RpؑÎV)8HaÎvJaGv#EU ;RtXϔvJ[;:MtX[aGÎvMU6FVivXA):Җ>;]U尣ti::[vag*Eq),_ZMqvP\utNK\*P=ζ1:봵:iw`WlYuZ:;:Mٸ+;4uVqm:آՂuv5:-xv{tv7?{y~Pgǧm{tv=\=|o6iJu5[u}A0^of;:MU'mz#WS:_VlSVF4۴:ds}fm/:C:ŧlͿw'l\,5PgJWwt%mͪNS\wP5W>gU|4_ gJV):lqaG%m4utNK\G)r,#EqUxƠ:iW JA\FqU 4RW NΔiW JA\FqU 4RW N*qu*quUiW2Gwҧdo)mq/lftf[܋ٺj*m;`I[u fS*ag$7ag'4$W䪃+Г\w`Em*u]uᄂ ţK[ xwg4|wvz.=ŧTw݁շCWȨӚNC}ix~.WP_uH}&V'C;f[{|?Q܉[woRq}WwU7U7J; UDHOO}iNC}A}k;Y}ɗ\k受bA1˝B}ng7uVZpYZp-֝hg/Zp\WhN[N^תcU,iÂiN`-:[w:[NҖﺓ{4}-u|םJw:]#EU ;Rݑ*)Rݑ}W)3eU ;Rݑ*)Rݑ}W)Hw}wJwG]uZ[Qr{A͟t4}Wݑ|HҖHNw望_ǯ뻣]u,nqwA)R@U|iSrG:m9:q?ۙvuvt:Nc:Qg_ҸV)+?R,M.u`zӖNVGiꀭ iڪ:V*BuVHx%3N+{uVPwE8yu{Vǫ6!םl4mU<~ִUuwO[ո#;`VGmut.![кm5h0;WwVsm5Bj܅մfVTCBGVwWqtP\!qofiUo4UG;-4ۑF}I[JaGti::-êWb|euۉKvFu}W)Jw:|i]JwFߝ)Jw:|i]JwFU 4R]N*EMbwF]-u&uS'.}n]}i;Q}*m;l))ԷxF@}WK}g4WRⵔշ~-{շo?R]NN_)P_Žز`uZN,X`~,X`qi :(i]wBɍn~q:-7vd7Vqܙtvȍd7]h*{R\^/֪xGj~ٍN j4Xt#v~y)i,uZnmiXNˍnwU8N/S8q8;nNv㸎Wrd7.>эͺpcuZnqZuNvhoi7vZq<Co\uZwg4Xpcu;n{;i:-cva괌ٝ12fu`]ӿk砝ifM>Ӥ+͚Ҭg4yY4iJ&4k&MV |IW5yY4iJ&ifM^i3MҬg4yYW5L&g49|fA$\4fohtyu3ɫ䳓4yYWwM^g4ivvݍiNǍWgg˷%MB(Ŀg~+ҼLcWwu:{v*mD}Iijf=ӿKt$wuHr%7]Jn*>;YrӊHt$dM:$ieɒjuHr/AM;۵%w s߷I<_];Yrհ֦C]ܴ#NGr%wuPrӑܳw]u %7쏻:$iqNܴ:(i׃wuPrN {QۿZ:=;Ht$䆵%)M}w0qc ;?Kݣw^4ݣ;3mu{3Nݣ{T3ӊݰɾ;nZu:{F{TPrZ'9E #9;0'9E6|T@rjZq[J.NܗeL^4Ij+E=xfJ grأ;3mu{tgNa9l!=|:itXJaFU 4:RpXNΔitXJaFU 4:RpXN*uV)8RpXaw;IfV):l,qVΪlnwXuZNtXJ[N>/cpXy׆U٫4tvvξ U֝?caFU itXN*m9:9hgt栝3:Ww*m:Q\_RtUjvalUS6uVٸm5:dS}:(*>Na)0omF~}\;V};^:diꐭu4lUӰUuZNgܳӰUuV/հꔶz 씶>zNոVD[}INKQi(:J6~jd[F[UZjSrAM*N\-ua|?;-uV6~Nl!{Cfv=;`iaMk[f׶fRili;lfֶCfNlա=jo!ɍw]]uZ;;NNwi: ԉ,XXg4ou/ZNK}i:-u'ouP}iK}vOG;SP߃h+E=x:JQ}vOG;SP߃h+E=x:JQ}vOG;SP߃h+mQMGϹ}7jtw}(Gw:=x:J{T@}v-=x:J{Tъ շ笾4NG;;lG1k_sDŽǭkG9ގi ѝm:M!>fs_qvܧi Q6!>f$G5 fmBwkw@ ]uHQ1;flnfMS@Qv㴃;ٍDqNL}W)Җ[e:;UlStv sswΎ{.q;;[u6I;qҖúpXuZNaM:lZ78x}\Vtش[:=م֝:l\uNtؼVtX9; U6~?8lZ9lNsXuZ:lPw*E-99l[uZ;;d4tVκuV)ҖκS\sN y1lHEurXwNai8:-U4bژJaFU itXN*U 4:LaFU itXN*U 4:RpXa*uViai8*upXuaouai9;a*EM wV8SpYw_f˷iKgi;ƒ::tV)ӨJAgFUJ:[=Sŧl:GUDiOguWs}uپqoa9w*qR5];⚮qNkw@\/AqMv'kx6I[u< ;՝,s=w|됸ǵ{r'~y>~<$6γk'mk\깖{%w\o%:(_7\߽WʼWauWzhw@rdzCrj^Y\Nܸ:(iF:H[WW.,dɍӔ՟,bV7ܸ:V^M1ݫ)f;N1]qY}~[gNKrwxҮgD}I{ߪ͜z%8æJlk8%m^M&^M"hJlFU fi4[`N*U f4LlFU fi4[`N*U f4R0[l*uV)mq6}rNo^:-uV(NibMNKr݉$Wiܗ4zHi_>2ql:`Nf;;l_MҖêrXw64%uV)8RpXa:֝ê˯޴:)8l.Q:m:-qU%+^uP\z'w@\z[uH\HWwNK\i:$@Ygszv?uH\>qdqH|\s/?|됸>~v@\pUZuP\l(kB5tkV״s:^wQ5w5M״; ?R(NaӬqu>թ4z;RuZ^NK/-n?;Ks޾Êhu/)SP^*mKNcXuZNW`J[NV[uڰUuZԁ_NÕ=͎4O+[uңNW JA\FqU 4RW NΔiW JA\FqU 4RW N*quU)RWQ\՝U>iت:JkiﶪNV݉lU)تhJ[NVA[MuV/~}z%qUŵ~[:lU)تhJVF[UڲUuZNVi٪;`|;ꀸ:m:5^u[Nai9;a*Vuþ qU%״M싸御cnt{r~뜍5x\:Y\{͈z됸ݾW~y~H\/wFU5u'kܱAyLg꠸nuvƝ.i;Y\ꐸ=!qߦ5N׼; qUU)f+S[|wǡN[8,AaúpXuþ |vZ=quĕI\6U(;lq;U)+UrXw8ս@- pX-+ViaGÎvJaGv#EU LaÎvJaGv#EU ;RtX#E):Rpؑ6Vpy2:MU:˟J"m::#E):RpؑN;ѡ`WBa3;NQ\nEu(#EqU :RW #m4UNS\iщ4vtNVikN:MqU'+|NaG鰣tXuZ;:MUvL9LWvIA ~}];anx?g;W㟗!G1/rظ;aƑ>,k]t_sU;;:i^uaNß::-tش\êrg6p|upLD5U'lE:qCkgmlcplG̶85%wt`W9]58gFɭJnqߚ\40P}wMU廣廣= <}_Sw]w*U 4R]w*u}wN*U 4R]w*u}W)Jw:}7٦;wn^AqW/״í:$ {K]6=N׼3:$㙹NC\!qrm3ŵꉫ:(7ƽaqMBkTZwNK\i; qU%՝(LY\oLŕ^Q\+P⾡ĵxTY\WwR^UW qUŵ簢i^Q PҖNS\q)HQ\U)HQ\G*q)HQ\U)HQ\Gu(JA\G:RW #m:-q}vhghyеi蠭*݊mU)HVGluhJ[::M[U-[}vHVGt+RU`#E[)ڪR- Y\q߇wtX~wVpؑ6V>;]Z%[NSgGtf[NlG6NlG΂ʪ$ilGivtl#tm(2~vl#5_?:llߟ=4۹uwbwd8Z=eCf;S m\N68]K4۴;lgj)i%UvwP6O2:MUe$aTf{[@َmN6[A-na6mqߚfNlGi4[uVCf[9&3ftvt:lq;:[ܷ/ivʒvMU尣agViaA ދ4tVκuV)RYQg::tV)Ө3%uuV)RYQg::tV)ӨJAgFU :tiYQg_Rp2;x'ΦOLw:NKgu)ӨJAg::tiCgiaNkwG%N8_'$JArnE 4JR\ NN]I+j$W%WiKriH$W$)u0Pi-kMwNK\݉⪴%4GWV;^TuE\gu.q}\;Y\ΕCz[;^:Q\oss: y?UuH\5x~yγiXO]kױvin՝⚾Pŕ,7%/{kZN8!KvP\j5*:(|el՝ӲUuZNVA[3lNAQgkӲUwj0K)ziqKZNCQEURTw(ӆRTu@QWq'+j|i);QQ*EuU)(ӨJAQ::SRTQQ*EuU)(ӨJAQ:iTTJAQFEU 괡CYOwK{RuKnE ^4zRRN*/uژNKՁլN2:;=u!ꀌ*u)Ȩ(JAF:mȨ:$32%d$ ӒQw*լսլŽEURTwSi);QQUPTu~QydES!EguNvNoRmy'w]J!Eb󑸼'PQǙuGXw@QGg܇򜲢C:I^.TiSQ!EMiŬi;icuHQ7ꐢƝZi(u5}W)jWuZ(jU:۩׭ƣSVi٪; [UelU>٪;ԡ9]tUúV)f{^.-u*m9; Uiq-)تӖ8{壚ўQLRzD.hG1)QLr zD.hG1K)QLr zD.hG1K)ꁳVkQS^ҠN^znE^z3Ō,G1#iKrFV>+8pFKaG1#K)zQR^z3Ō,4yZ֔-wRG59 ZrrVj9YՌ^4YN^zT3KjF\匬lG{F:ME=Y -G5#kE=YqƏ:_igAE3Ɋ:]s9^R9tNV+vuHQAjFx~/TԸ:퐢ο{uS8VPԣWRcM:oᇢՌ{:(jzufd9~(QE=YgoVTM/=iXG5 aGެ^[K4,uKizQM*{ӰA/eUb/ǭG5#8^Z_tY/)xў{Α;^zTs{ң{崸c/=pKһa^Ϊgw]$+2,gdtYF4J4&U 2zIFWetYF4Jiѕf]i3M2,gdtYFWeL4&U KW L4Ӭgi3MڹҬ+yI;WLɟktpvTiK;V'kJvVY;4!WsY;ڹ:vsht5}tdTNGFNѕvd]FW'J;Shs:=;ꠌ޻jꐌg2:Ue4:;YFn,qooF2:sWetn/7!MsN!2:4 خ,_k]0o쀌y#xu:2:(IF|Nf|ugd?{q}i{tuj/߽tu:^zv/ttuKxtd/-Z^zvRuZ^zvKxIKWڑ2zZB/.R~=d/1'E[GQW'+׈+͊z_u߅'Χ; [UeD[U liU`N*[U 4LVF[U liU`N*[U 4ڪRUV*[umU)تh3%[U 4ڪRU`N"[umU)تRUV:[MGQuZNV݁WwRW[:GS JA\6UWuZkuҕl՝NVi٪;D:-qu!ꀸ*EqMW4UWuZNg-i:-qu'k~:(\՝(q?!qM?;Y\y>d|/_4dqC:>ځq:wk;; Á_%۹:(aꐸ,~4⚄R$}QWŕ?/JV{ѲUwNVՉ6UZsR,4UUi-u{|:):-EuU+my; /UiqG^iKjj\9Rgt9R+E/yJKw#RҝH)xst9R+E/yJKw#RҝH)xst9R+E/yJKw#RgC;{r^d;׫C/>Gdj/jWSq릮ĨBݫQսhδcy ԙ 4vGuZN4P`J@FU 4R0P`NΔ i4P`J@FU 4R0P`N*u T)R0P@::S2P`N*U t+R0P@*u T)ӆ2PuZN^3gf'4dTQ N"uJAF:iȵdԝӒQu@ ԝlLzvzN@݉ekBu@ 0tլhKDU>N7} 0ϠYhZN6ju@ tܯ2qic_Q6]t晭N@A6~oOY4Ӽg4 T2꾡Q T)hu/ZN@u0PuZNw~7?;=ua ԝpmR?n(dԝ2Zho$JQF{ђQu@Fr$JAF6dy{:m:-u'R0P`N*u T)R0P@gJ4R0P`N*u T)R0P@: T)hJ@F)R0P@*u)hJ@: i0P-T3W|δ4\SpMN"tJ5k:m:-t\SZYyvZN0Еv*jg<7w~ ԉvk5u@;F|I5%ALw'=nR3ҧhg НƊOuZNC;!L3ii;wv&Ms'kx i+o4d팫7A fuH;C9^o9}u(wG'kgA:anL߲jgǝvNuZ;NuZN˿z.hѝl}ߧ*NK;ih:-휝J%,y5AkrMwҖkpMu5rJ5b֒ӖknYKknŬ%[1kI)VZRknŬ%[1kI)VZRknŬ%[1k)VZRknŬknŬ%[1kI)VZRknŬ%[1k)֞Nk;Uέ=kIέt+Rέs+f-9m]vnլYmjVZvnYKvnT%8gުJŽ@롭j[5k)fO4 g-@Zw*gnT%ߪJ [1U[b8lѩXW8PȶW}H@~ǪgFƷ*y&n[@WsR~g'4C ƶ[Om_g@. R w_}~0f@붿K ~F9 tOCo h:B3d)(7ݪ@WwnUj֔- (CS]ݭJZ<5Ѕ*U=4ݔ}C]MIN ?hq𦤷 6@$D}A;]5~V`UF#Uh:x%VV VtW3#LJUJUJh`*U*U*]UJVRR5Z*XkJUJUJh`*U*U*]UUFܕR5Z*X*Xj*XkJUJUJh`*U*3**=3J̀UUURRuBn)"͌R3#*53JDuf!llϬ3`5V:3H0=ߝU2g@%AчJzfdfF*gX%_=*Y'>fH%噬swfH%~V^neTr_7sT2=eRɽا8?gJ'M5C*YG%5*LV_Ty3*ɿRxf{U2=әJjT[?yH3G TR35*:PI͌TR3덙?z&+J#X`il>wcfF虁?j5**kGUG*տKl㏪#?j*cUGUǪ菪U??**cUǪ菪UU?VET X**cUGUWe X*j**cUǪ菪 Xu53%3[tόf?? Y*xf?4vw'^MQ3`:5ŚfFX3CSkMKόLfT$>z*2>Ix'g?B4ޥꙑ? c {fꏚG-dgΐ?c͐?=1>ǚu?11>4fO?_=?k&c|BX3CLx"ŞAl&?6X3C cĚAl>7fc͠?f=QsD:G󏼯ClqJ?6ߑ? #MQ3#GUǪUU?6?«^"]þu$Ҩ Ҩ Q5J*H*Hk]I]444FiTitҨ Ҩ Q5J*H*HkFUF(44FiTiTit]MitҨ Ҩ W~UF(#iH=OuffU]WS]㪧 :0E͠)ݘgFϤQ3=3xQ3#L]gMj&[HfF虁4j&J#f=38R3)=޵?j1݇ᙁ?jf䏞f뉷33 >ps{fj| [od2jq'w9X1Wך1>7X?;di )c:e33ג쏮#i HcYDi|S5CM6wFW0EUxzѵy z{(f 9E͌3' 53rB P3 U U ]6 U ]+_n} "EP5[ O5ڟ*؟*؟k]\FSs O5ڟ*؟*؟k?U?hFSSs]Ms*؟*؟k\U\O3hi L]g癁iOu55d``l|iPY3Qv:z3H<3P>͐E˞(fF癬|Q4g/6gg@ ͐s<38{Q3}Jgf癬|x{Psnҏ|{iύk?]_RxgwFk/igױS<5R-8£! ߟs̀򩎔3 =O3`` ̞2 *kb&fyBǙfFz虁jfgzCרQUA]\*aUCUêUQUAVE=z zUQVE=T=zXP**aUêUQUA_**aUêUQ_P*a^k,̀*!S=êUE=z:Úf⻑UGjvea P3ްf"+aYnc azfFzf5z azF3x{uǚf@ A=LLbR3.oza=,z o==wXa;:Ú(05E͌Lf) "O{]TkHsQQ3A=<={+={:Ú虑D P3#=CUêUQUA6XF=<^DCרQUAUA]F=T=T=tz+kCUCUCרQUAUA]F=T=T=tz zpWCUCרQUAUA]㺭 zPug:C P3q%S=T=tfaݝfFz虁jf zH=CO$3QUGz虬fPӫ7͌35Cz_]{&a|$zVX͐'<N :aԾ wϠ@sq3' :'=N섵Kί?Y脵'=z 8ェ;9N 9U_iFd'S!'G}353rBπ?߻jE'Lwi=9gg 3' :!5NV"zf ":z3H5"kAUIL5"+ksg6kf$g"A( QUA]Q$ Qr"EPD5**kAUA( Qw%t" " "EPD5**kAUA( QUA]J" "EPDPDu5D5**k\UA]DP3Qj]ՁiOu55N||DSɝfP~3H<3=OW#yg﭂59Mѥ?432: N3# +];?D<.>6rL6xτf~7L6;Kί?Ydt_߫end ]|f3곒pѭt|{򳖞Fw?@5CFW3JFI4:=EkZŻC ]3 N3# =kgry%,1f癁ifyAky#4+y4y;Ϟߑyfys =O<ϵyD WyyGs*z,w47"yGs+x,w47"yGs+x, w47"yGsȮyGs+x,w47"yGs+Gs+xށ7m!x/+⺚Fw47 ͊FwC;;`yw]13#;[=uǁz㭎n> |8C;[=ғ*yЏV]όn;[=G!A9[==ſP]V~ϟ3Ya%]_֨|;~{G>=| d;[=߁RN4+}R3|ޚAKx/]3|`͠Vtvߞa˒voP5:pETEL{A؉o¶t4ʞwt4.<z^|yGs[+xw4m!yGs[k|uuyT\穂穂FSs =oW3ot4:5631g&gܽ`tYTA L!k&qw:qgnwvnOMvnOm^5SUY<, vmwEw;6|]nfTpo+Y,vmOw;6|]nfvmOw;6|]nfTpox*ہY|C*ہwQ|SWSun:faw;~ Wr7رM<7I3Cw;7IhnhSw;%_;ո_8C;%5/N|zf@㲬% hoߔoptNݭ`tGwD3|3un}UL6-`wz"e>~|3=CFWftGsy:{/q~}dѣ~=CFГ_FP 2u&/g ]/GwDzf։pf332opj:Ѭ4S;['xE|8dsہNx[w;~ Uv_3j~j"j\UvwEw;Έ|gSWAn*+kt7Up7Up7nnTT\JMM5*kt7Up7Up7nnTT\FwەM5**j*kt7Up7Up7nnTT\㊳+kt7Up7Up7Tp7׸⨂6+kt7Ցi-%=gg=Ǚigy&k\qFy4." j\zꙁifq<̀3q 4N3q齁Ay&j\W!>5ׯи:C4C?gHҽLָ(k!Oy&k\(y{4N3q}.5.jg@~ӖA ~f5s3 i\/hܞig8U8^5ƹ>u l fHؚ]L4ϻ5yfnws +kp7W6u=æ6V\FSsm^«`x*w0<|;>v wE]|S.cpW`+w0}; >v O]|].A}; >v wE]|].cT`+w0]|].ᩫcpW`xjⰏ]|]>vuw0;\vMo[ =:4kz=34m8C34m!3#סn]ݽ ԧ{f[^{f[WwBc9>g@^y V4i_L֭}A獾̀nśCЭx3u Uϴy&Vtʞ V}jtn^ݽ 5MuUO}kzfuMUgPf}vfJ؅*]m %Hº{vm o$TY.A%[\Q.6KX.(a^To/xj% _|} Q\F S S s %L$L$5Jخ$aQTATA\F S S s %L$L$5J*Hk]ITA\F S S s %L$L$58uP$L$u5$58 a a͊C%L%,4Cwu<)yfc{|LucfǺ31͌|L3#4C>_!z&X|K343R3 L3f׏}?{W3 L3f_O3feEjPp =3R3d5j?yzgRt=Cjn0}fE YYjV_~wj,=KR_o}f@͒jլ}cSH4j3Y7-|gjP3Ցyffgji&[>轘# @4%L$lW0(a a+0U0u Ik0U0U0(a a0U0k%L$5J*H*Hk0U0(a a aQv% s  %L$5J*H*Hk0U0(a a aQTA\J %L$L$u5$5J*H*Hk0U0(a a aqٕ$5 a a aqQ S smV0(a# L:0/͐yE ȼ<vg楙h^Q4CO43s];x%Xy*HL/V b z=3+DST?I_P U|gXw>j*?O,V/W!UYj~vH d?3 H<3+{]6hSd8rmvԤPQj&Yr +ɒk%U%fGM I\,,,FYRYrm$K K|#K KUQTA,UEYRY Te*ʒ*ҫ,,UEY TeId*RU%U(K KUQ,,UEYRYzU(K KUQ,,:Xe*ʒ*UQTA,UEYRUYTaTeIu5eIV(KUQTeIdj%W4$lH*jfhHkfv–fPU۷fFT3CY{T׍>NT(ס7i)0sSAoRyS͠73=ikη5ޔ3Mh&{S<\3M do*^{[ yӯtǢfț{<fțXޔ xے}|Лҽ޴O?ci~c)Q͠7o>zS|3M1{[mvlHU!'όdfT3(K͎e*ʒjfYRY,K KUQT5RU%fϲ Te*ʒ*RU%fϲTeI5e5ʒ*Ȓk%U%U%(K KQTATA\,JeIdId5ʒ*Ȓk%U%U%(K Kq}SYRYr eiW%U%(K K K KqTYRYr*Ȓk%U%U%׸JAU%U%T%׸⨂,,6+ɒk%U%U%ׁ,ie9=3=3%͌d3Yi&[f$Ux:5*P/.:ù \H3#LvY3#334.>]3B!r=t]~)yޝBA͐ <](>Wt.Lvs}|Ѕ~Ƿ<]-.J]33$@Hu$@i@u43R̀6YRUPf7KUGTgWRר::nTGTǵcFQQq IuTAu\U5*kTUPUPר::QuTAuTAu\JUGTGT5*kTUPUPר::qRQq*kT]IuTAu\ꨂꨂ긮uPTGT5:QuTAuTAu\㊳+k\UAuTAu\WSAu\㊣ ڬ8:QuTAuTAu\xT' Lu7 ~:z3 *+, fFOxT'Tf蔤3 Y~5a=Xfzm{{ff=XfFl=kgNL6wG aYz,K`zȵcU%-jV֢EqC-jV jjKf-ZYTA*k*hQU"fZTHٻUE-Z ZTHٻUE-R{?ZH5j*h*hk"U"רEEEQv%-rZ Z ZH5j*h*hk"U"׸5K5jѮEEQTATA\WSA\: Z ZAU"רEEEqٕ5EEEqQ-R-rmV"רEEEEl͌3YnyϰfUxo3-@4Z Z:"͌3-L"ב yfBg|fF.gf.8:= y&P|FF3B]Ӊ)Ъf=t|.T_~v ЪNZ?y&P!ڟUFN2.TD۟o3مtfȅԞ|vtfF.䙁 ~( 4{l"U"^HT=gLt~/],3.Hȵ%F-R-ڕ5j*hkK&-R-rmEQTATA\6{w"U"׸w?^2"רEEQTATA\F-R-R-rZ+ik"U"U"רEEQTATA\ƕLH5YEQv%-R-rZ Z Z亚 ZAU"U"׸F-R-R-r+ήEqT-R-r]M-r+*h*hkF-R-R-rhfHN3EighBȅ<3p!i镊f4D R3C >q^Ijf$Kɲ_kf$KoWHL<3%͐,ś<3%͠,|kZ?OLfHCT@ϭg!Yid^{97˒g,wVje)(%FYPkf$KҞɒg8ɒH<ϳn;&ׁ7ifMyg}6y*xk&orޤ ޴+yk&U&fMޤ ɛ\777FoRormvMM?]ړF 6hNVEo:]mft4'm69i[hNvo:]?{ќw3zk&U&MMMћT\777Foڕ5z*x*xk&U&MMMћT\ ޤ I5zӮMMћTT\WS\: ޤ AU&MMMqٕ5MMMqQoRormV&MMMћTћ$͐7Wo͟ț<38[3#o'ĻTGdG!o/5ޔN xSz>C3M^䙁7ift*aoJ{fMyg@!o>y ͠7%LfțHOMM3MY2͐7u?M=͠7g<ĿM!ojͼiϰ7Aޤ_f 噁BifPȦ43)4{r)U)fON6mJljW)hS`S͞lJlʵy@6mJlJl5ڔ*ؔkJlJl5RbhSѦT\MMMFRr6 6 6mjW)hS`S`SѦT\MMMFRrk*ؔ*ؔk)U)hSMMFRRr]Mr*ؔ*ؔk\U\MMMgW)׸MMMGlJlʵYqȦ\MMMFRٔg6gf63Ȧ<3)͠M5x5? }hS5gMעTIL(fzxgg7ijhk3H<3P(͠BlO#*T}[dOJi*䙬Pls̀B?}!KrϟT!j~QPqP(Ԟ)g7*TY3dpπBJ {F fM I\BBJ Jʵ}BB6 H\BBBFRrm^B^Y\5j wZyᮠP9/\j5煫BpUT՜ ]AVs^**j WEZy᪨P9/j5煻ZUQVs^**j ߕj5煻BpUT՜ UQVs^+9/j5煫B]YVs^**j w]MEZy᪨P9/ܵYqXVs^**j wZx2[y]35jO;՝ }nCoZx2{Y j7*>URAJ9yfdS=[3͞mj56{r՜N6]Vs:k'gZ+՜N6]Vs:kJmj5W ?N|:SM5SM5]M=5]M=5]M5SMM=5]M5SM5SM5]M=5]M=5]M5SM5SMM5SM5]M=u55S:xlSw6Դ5SM5]M=58`SOM]M5SWSM=58w6ulSOmV&kfzjfz۔fF6uLl{g&6M3g&6M3zf{fbS T2gmꞙ{ '?3 ԾM=3`S2_Og< T}6uϐM߽_?hSyg&T{l*=dJw3dS鹶{l*){mʕjlm*Y36uϠM`dS=3gmꞙ=3gٓM5S=9SM5۔*SM5S=9]M=y6dSw6ulSOM6ulSOm^)M5S'?l̟ 6uIwE$M]|]Ѧ.>`SdTO2+'m6uIO$M]|]Ѧ.>hSd6uIO$M]|]Ѧ.>hSdTX/>`Sd~WO2We$M]|SWSѦ.>hSdfa$M]|S.tIOo$6O2j &MMћTT\77FoRoRor޴+yk&U&U&MMћTT\77FoRoRorޤ iW&U&MMMMqToRor*xk&U&U&׸JAU&U&T&׸⨂776+yk&U&U&MMo33o x4Cߞ7ifMxfF䙁7ifrG=3yG33&͌3or̼3ٛjGygɢ8M{)S Jxzf,_t=Cd,[+,y&ʒ*ȒH<bd3YH43% dI3#Y@43%͌d3͎dIdɵQ,FYRYڕd5ʒ*Ȓk&YRYrm$KQTATA\,,6|%U%׸֡,FYRYr eId5ʒ*Ȓ*Ȓk]I\,,,FYRYr eId5ʒ*Ȓ*Ȓk%U%(K,,FYRYRYr]MYr*Ȓ*Ȓk\UA\,,,gW%׸,,,GdIdɵYqH\,,,FYRYrҞɒf@\,yf KɒfF䙁,if$K :2$LNf!yf`HҞaCi> R=!g21$͐!R|fH MLF |=EY w3#YL>թ7:q!j2j3P)fF 噁BifP(fF By}BB6oR(רPPBFRrmvߤPPkR(רPPPQTA\PP(*(TUT(UPPUQTABBUE PPUQBBUER UJ***(TUTPPUQTA^***(TUTPPVE `UT(UPPUQTayUV(UXBUER]MER**TUT(faR UJ6gfdSM ڔȦj&[ :&̀75_7iЛj)ۑfT4ei e53%͌df,K`AYJid)1DYl R|wg,zt=t>7YLT eI3#Y,P4e T5òīTjd$Kݿ'ʒ.gﲻgT3CCLwfCِT!**RU4$f̆T Iѳ!!UEC T Iѳ!UECR;!Ɲ*k4$U0$U0$hH`HѐTT\!J I I 5*k4$U0$U0$hH`HѐTT\J  iW2$U0$hH`H`H`HqTCRCr*k4$U0$U0$׸JAU0$U0$T0$׸⨂!!6+k4$U0$U0$hH#C=33$̀! I3`HCdp͌d3YH<eIu$K!Y 6sf$fFzMgf43& I3M&͐7E;LZ!o=M&4l&U&fMIiW&MM>Iɵ7FoRoRorޤ ɛT\ OЛ\77FoRoRorޤ II5zӮMћTT\77FoRoRorޤ II5dMћv%oRorޤ ޤ 亚 AU&U&׸7FoRoRor+ήMqToRor]Mor+*x*xk7FoRoRD;k}f]v34^xf`SrؔfF6Myf`SAJg1yoj>Xi*w왁Xis<3+͌jop͌3 UgBzߦ~=d>U<3 V*+eJ7Ejf$VfFbXyf V{f&VfPx圉g}L<udSٔg=9ٔ*ؔk''r6 6+ٔk)U)fON6 6ڼR r6 6 6mJlʵy@6 6 #ؔ*TU)UhSUѦTMMUE6 6lS`SUѦMMUER6UmJl*ڔ*TUhSfUERzUhS`SUѦMM:Xm*ڔ*UѦTMUERU٦Ta6UmJu5mJVhSUѦTmJl*TաMifdS56:xݞTRPy]3xTmf6U3CȦjfhSMfH)fBg43T(͌fP>5 N Hj?G~ U?W)T͠BS4C LV:C U9T>gBDjAy&+~ o1*T*kK3PsP)kfPiMg|MUɛ*zS9I3>*zjfoRoMMUћT}6{SU&fޤ T*z*xSU&fTI5%!zk&U&MMMћT\777Foڕ5z*x*xk&U&MMMћT\ ޤ ,U&M77FoRoRor]Mor*x*xk\U\777gW&׸777GIɵYqț\777]g7E x̛4:&͌NqDorɒg;<O=ױ!o zS3MI)͌3oț̛<t&̛<T3ޤ@!oKQ} xYakTa734C3MI5ٛơ43& i̼3~|Myg̛<IuMyg}6y*xk&orޤ ޴+yk&U&fMޤ ɛ\777FoRormvMMq_&MMћTT\77FoRoRor޴+yk&U&U&MMћTT\77MI5YMћv%oRorޤ ޤ 亚 AU&U&׸7FoRoRor+ήMqToRor]Mor+*x*xk7FoRoRygޤ:*=3o .g ByfPR)g By&+T|OfF TgBEH<38\3#33@4 3Pj!'k&*[-L3M'do MvD͐75?M[<& I3MMo5RW=هgw%hHoy%L"ըEZV0*k&r. .+kt!Up!f?L. .Ʌ\ FRrmvBBK_B9\h5g pUt՜.3]Vs+jWEZB9\]h5g pWXVs*jWEZ໲ pWp՜.3UхVs*jwup5g pUt՜+jWEZ஫B9\]h5g6+jWEZx8“yg !}jOϯI SZx^|nBlOLԢ], U9;/hyo]^)>dpxړdl=;gu'<2߭gu'wFG艣gwi(33Y9XA:/vfP{d PrΞ8 o>-<hocgz`= OvEYI۪:9i۵ͲmUT՜ ],jNvmج:9i[Ug5'mmfͪ]x-q:QuTAu\ꨂꨂFQq UgWRר:::QuTAu\ꨂꨂFQq+**k\qTAu\J UGTGTu5T5::qTq W]Iu\: 㺚 WUPUPf!q :Rπf@u\s=F3#o43z3o4~:̀߸F3# =߯Nu6R TG3ӳLu<3P͌T3:IN4CF3:D N"> LV{ n N;ǪOYuLu43R̀TgT3TGTǵcFQQqmv::nT5*ή:QuTAu\,*k&q UGTǵcꨂjΨvչ3]AujUT9ZUjΨVEչ3]AujWP9ZUjΨVEչ3UQujWP9V9ZUjΨVEչ3weչ3]AujUT9ZUjΨVEչ3]a3]AujUT9zWV9ZUjΨv]MEչ3UQujfaչ3UQuj^ Qͻ=?T.<_\y֠aW{uK3.UzgWBJhf.ό\γ<:k|rgFtu'WǛT]j9:߹xڵfHC{H⻴<(ޅ yCj~SPY,@drZυgTՑ\x5[՜Fsoy\YҪh=V=.[՜qz|hU9j·vml=Ws>kf빚Uz|hW9ڵy\Юq}~z\FQQq֣ GG5ZϮd=zTzTz\FQQq֣ WUU׸⨂FٕG5Z*X*Xj*Xk\UzTz\: GG58uPGu558`=`=͊CGGud=wޚ'x\gfxf:R-e=ףx'Jz<3͌G3`=zbd=XfFֳgz?x'Fz F<> ZO|XfzSE} z3H9lJIgh'h=V͐ifd=XfF\Hu4f3nFƵM߸FQQqm77;5*ͮ7oTo\}+*k&q~ ~ ~FƵMߨ߸nl[v9]oeU9oYl[VE9]oeW9oYl[VE9UoeW9oV9oYl[VE9we9]oeU9oYl[VE9]a<]oeU9oyW9oYl[v]ME9Uoefa9Uoeyy}yˬg{ s~qv07:[~Yjٞޗߜy`1'J'y7eό[9o7g{r9o9I37͐tth'{ϯ)7齃!Oyf7gwr3Y0;oPu泘ٜs6-6{lV9oYUl[vmv:gs޲ke9UQueWP9oٵͲyˮUl[VE9]Auefͪs6-=?|S5S5]<5]<5]5Sꨂ<5]5S5S5]<5]<58wͪs׬:OM+]<5*]<5]5SWS<5wͪs׬:OM]<5]5Sӊ Դ5]eygxEߨ\"~7z1&|όF37Wc7g~73͞g4*k&q~ ~ ~[oTo\}+kU]o\ߨ߸6VUf7M~FF5*k&Qq_M!k\Uo\ߨߨ߸FQq+**k]o\ߨߨ߸FQq~ ~ ~F5877qQq~+*kUUT׸ߨ߸uP5**k\qv%q**j*k\qToTo\5**Mz&M[k5ͮ3o<3͌3o43 F37i F37 ~zghT'>ᙁhU'ҤTIn } guiޭU;kH;<(wz3?o(@L<L~vR RSF*JMUU(5 5UQjԨԼ*K*HMU(5 5UQjTAjTEQR +NU(5TEQyU(5 5UQjԨԨ:X*J*UQjTAjTEQUYjTaRSFu5FV(5UQjTF*JMաhf$55R R,5F͌EHjjf)όfRS3CHjjf(5IM͐+ښAMj43JfFRS3CyLF3#8AL LɤwHy&̖5C&OL6槞Mdkfd2534̀TE& &l2M*jCfQ&SMFًTEQml2`2Ud^MFL*je&dTdTEQ&dɨן 4h2`2dTdTd\ɨɸFQQq&+k4U0U0h2`2dTdTd\ɨɸGLFL58`2dv%Qq& & &㺚 &AU0U0׸ɸFQQq+ήd2qTQq]Mq+**kɸFQQ&VkV왙hf/fF♁hftzfH_H_4^Sz&k,ft~ E3,hf,{f,: 8+8K͐r+D|'Y,v!gi~_Y?YL4FQQQQQq+k%QQQqm$*QTTATTAT\$*k$Qq +kUf'I oIT\FQQQqm$* *qÈEED5**kU(* * *QTv%Qq EED5**kU׸⨂GD5ʮ$* *QTTATTAT\WSAT\: AU(* * *qٕD5 * * *qQQQQqmV(* * *QTTAT\gXT J|u=ߚg@T'͌D3Q g :Kz6E3#gF(͐tg,9˞9g΢pfRp#*!Q L}a4C<4,*g&*f@T\FQٕDŵߒ6[(* * *NDEDŵIFQQQٕD5*k$QQQqm$*QTTATTAT\6[UW߮^W՜ zUQTVsB*jNUEQY *9De5'^U՜Ыz]ATVsB+89WEe5']YTVsB+jNUEQY (*9WEe5':z]ATVsB*jNݕEe5'^T՜Ыz]Ee5',<]WAQW ;^,,;܆xAGVwo5NV{n66ifh'k|fFgY;IiNmoYx:qYVwno|gwhLpu6,b, egYxn[gYY, Oݽ+;jNUEgYIͮe5'骢$]fβt]%;jNUEgYI,9I׵_$]fβtUYVs+8jNumv,9I5z6'FgQgq΢ ΢ E5:*8*8kt]Y\FgQgq΢ ΢ E58,,qQgqβ+9*8ktUpUpTp׸uP5:*8*8k\qv%gq*8*8j*8k\qTYTY\5:*8*8ktUpׁ왙h%:LpW3'Q>sGQy`'鿢k$zgi-G3U<^kf$*"ؓYgXT{g<C3(*IaSluȅغΫ> >WVGvru'ӂ\x2 Z͌n (I~{ug+9ΠS3$4J]/.7RZY>! (I3$6U;Nm.L“iYI.<\$Ws$Ws**՜AYYI ZUT9ֵ\jΠUE%3h]AI ZfwJr5gк6{VV9VjΠu%3h]=++՜A*kTUPר$$$QITAI\F%ٕ5**(*(kTUPר$$$QITAI\㊣ J JWUPר$F%Q%Q%q]M%q*(*(k\UAI\gWR׸GDĵYqHI\F%Q%qJLI43RD%Q)gt#xkN͌<3CTG'kxfFgzf!A)my? >3dOsh0qHwhc!{&ǟi4C|C3(!)g'k4U0U0hq6;N2U0fICCõۑqq6{;2h`qFPpmvd`͎5**k4U0fIơ w% k4U0h``8T8\qqqFؕ5**k\qT8\qqqFPp+**k\qT8\qJơ CCu55``qTpơ ơ W]8\: ơ ẚ WU0U0f!pơ ơ C5Ǯ8\f-*<Ǒ^hfpH43r DP%zh"Zgn[xf!0vtg-;d4CqDL֌xfP3+!͈gx&kFs0 4C3Q3H&456Hr -v%pmv.5**k_#Ppmk-T-v%pn n-T-\]$kt Up Up .Bvgs+ٜ nq6g[٫gs*ٜ nq6g[٫gs*ٜnq6g[٫٫gs*ٜ+ٜ nq6g[٫gs*ٜ ٜ nq6g[٫[٫gsj*ٜnq6g6+ٜnq6g[٫'nqɩ'•N88N5ٝp SUN83#8NA(S;N84x& hٝp}xf@( E ٝpߓ0 Nj_d8SKUQ(RW9Ե/Pͩ~lN-UE8SK] ٜZX(RU9lN-umvf,gsjk_d8SKUQ(RW9Ե/^(gsjk/^m k U (  Q(TA(\PPPFؕ5 **k\qTA(\PPPFPp+**k\qTA(\PJB BBBu55  qTpB B BW]I(\: B Bẚ BWU U f!pB B BB5 Ů$ Q(TA(\PPP2<3 ͌3Q(TGB܅gBPx& EE3(.=B~]<BA3$ydY}C3$=@Bτ3H(4BI(\PPPFؕµ/PP6E (  ΌBµٙPFPؕ5 *k3#Ppm$Q(TA(TA(\PP6E U װ_,Vi(o5k (o5kB(Q(jXpB⭆5 [ kk (o5kV(Q(jXq\P wBpB⭮FxatB⭆u5 [ B5 [ +]PհFpBVWSPհFpBV' [ B5 [ Bk (o5k5 @(f@( jo33 [Kf-<3p~3{f[ ExJm&E! Ep Fd:yfnV]dv5kt-jn6o5kt oٯepnVZv5][-j_n6o5kt o5kt"[FxOQU-T-[TEPn nQݢ**ū[[TEn +NUt UpU-T-[ŠSݢ**8U-T-^ݢ**EUtVEn `Ut UpU-TayUv UX[TEP]MEP*EUt faPnQBܢ**ū[TEPn nQݢjt: fP-fEf?3#mf 53 B i}!Π/|m&B5@_˩y@_+?B͠/6=U UT^}A/TE_Pmv{ U/6* ;}A|*«//TE_PmU UT*BU UTBUո cU T\///F_ؕ|5**k\qT\///F_P_p+**k\qT\/J }A|A|u5|5 qT_p W]\: ບ WUUf!_p }A|5® T\///f_4C_yH&:h:wc:e3/N ^{&A ͐ 4Cf Agfx9W"3P3pm \F3X9#3P3pm \6Jd`͹k4U0U \6Jd`k4U0U0h`*+=]hV\t3x4+.<U ͊hfEW0G+YqQѬfhV\TE3x4+.<]hV\TE3x4+.<We3x4+.<U ͊hfEU4G+͊`fEU4GlfEU4G뭩hfEU4Gksa3x4+.<] ͊`fEU4G*YqQѬ f虑=Ya&A͐oL6f 545GbffU] ʈYQѬ fhVFtm ʈYQѬڜ+<]s%6G2*YѬڜ+<]386G2*YѬڜ<]\ \1V5**k4U0h`` V%3pf f f8`8 f f@5qT T \G5d` T T \oM3pAU0U0xT3pf f f8**뭩` f fq \F3P3pf**k4U0h`` TGf1h@udigff N3 4x?g{4Cf3``3H!3 xf`gs%2U0 5**k4U \382U0 5**ksDf fڜ+F3P3X5*ksDf fڜF3P3P3pf fڜ3Ff` T T \F3P3P3pf*k4U0U0xQ3pAU0U0h` f f8` V%3P3pf f fzk*k<*k4U0U0xY5U T \oM3pGU0U0Cf@@5*k4U T \F3P3P3pf:2 @3 ZT3Qjs>33d32xošA3h Ġ2.fls!3A3H f:4gE͹kUUר6j͹kUU欈t@t9+"p: :*kU欈t@t9W#p: : :u@t9W#Pps{+Mͺf]CUԁ{*YPuެk :po5t7ܛu UQͺf]CWЁ{+qͺf]CUԁ{᪬f]CWЁ{*YPuެk:po5tYtެk:po5\uެk:po5t5uެk:po5tm8f]CUԁ{+Ytެk:po5TE7ܛu ]A_=:︮!_uǫz&qp@+ j$a}AAIXk"Իq'g$ ܻ'K<pT2"_qeD( o9Wb376gplfCU4{ڡ+Yе9c376gplfCU4{ڡksfpoV;tmΕ jhfCW0{ڡksfpoV;tm jhfCW0{ڡksfpoV;tgpmF3P3pf f f@5**k4U \#*k<F3P3pGU0U0xQ3pf**k4U0U0[S \qP@5U \#Ϊd8 f fzk*k<⨂6G2h`` T \Jf f@5**k4Ցx&A. ̠{h|dW!X>3fP:HW:Vhf ڜ6geTT\Jڜ6geTT\rUp5:*8T\rUp欌5:*8*8ktUp欌@5=&txTp  @5:*8*8ktU\#*8k<FPpGUpUpxQp*9*8ktUpUp[S\qP@5U\#Ϊ8  zk*8k<⨂6GrT\J @5:*8*8ktUrx p_^+j yf;]vdX5C:QX3Ͷ{.4COxf`A3H( <@9W"3P3pm \F3X9#3P3pm \6Jd`͹k4U0U \6Jd`k4U0U0h`3+N 3P3f fP͠**AU4U0hU T f fP͠**qq*AU4U0hpĩfP@8U T fP@̠*AU4[S T8X͠**TE3f Gq*AU4[S TS͠*jsa3P3fP@̠**V TE3P3fP@̠ 4fk̠{h9aHp_3dxBjf9@ fp;@Ut欌@*:@UtUp6geUT2vUpUTv;*8@UtTEPm6geUTEPmϺ0%8j:B5;Q5;^59^59^5;Q59^5;Qg{GMGMGfkv#^59*8^59^5;QoMptkvf8j:5;Q5;^5qT{G55;Qg``@```᎙~dWp]81 }!HWҿ3XAH3IuY^9W8jҁfkց&P8js:׬Gm@t`YuY^9+8jҁfP8jҁf8jsV:׬Gm@t`YuIu͹^^3TEP:Pu@t**@Uԁ[eP:Pu@8UQT8Xu**@UU8TE: G[e: :Pu*ꭩp:Pu@UQTATEP#VYT8Xu*ꭩpĩ:Pu@9TE: :Pu@t`UQTATE: :Pu@]tfck5u _o3>cf5C:=@@ u@3UQT"ց͹*@Uԁ[ePmX6jUQ6gEUQT"UЁ[eP:ڜTEPmXTATEP:ڜTEPju5*kUUרQTATA\J:u@t@t5qTA\qPt@t5*k<⨂#*kԁUITA\ޚ :8 :u@t@t5qV%pAUU[SA\Gt@t9FPPp: :u`UUרQTATA\Fx\GWRxf>]{&^۫ҵ}~^3|m-k{~|m<^3k{͌=U޵9k{Uwmδ5^۫µ*\ۻkU޵9Ӣk{Uwmδ5^۫µ*\ۻ64tm 9 ]ۻk{U_]㵽*\ۻ64tm ͙]ۻk{UWk{xm ͙]۫µk8Wg_o^o<}W_׿>|o__KO~ڶϿͶ~q_'3 ?Vzy`Z_ǁuW_s;9{>~z'lo5_q_gηUs _gkp{xe}qGxQiKتk-:)un7^'Z>;Z^+}-* ܗ {ZV]\}z窏|_W2^S?0zO/*O\~:ZR$w};>[uwz]=S .C.3nW(~|sxF~7״\~k;7`~_Os{Wnu{=m |ܗ uZ^?Ϸl˯}ӛϰUc]\]Ӟ^NޯNf?¾zA|f!Ez}=ѧnO{l~F_/}]'n icXxq/)|U=o?{Yﱟ/!;U9_뫩6W/TN }lo۾W ען81o;C?6Uۿl'zN~}Mׅ#6ϵU|u,kve(y_u'm?w~,.Z7.NniO='y-g}F~7y7 es߲+~Fgf/xrQ2<,=L헾~z=H:<.13ߔx(.LGɏm'dxM^ʹ#N߶Ou,;9I걖63M^ovަXbcٔNO_OosՕF}nhusYL~}&ۤL_!J\G+X>SYoR{^E],.ڞ ߿~w.F?;ϯ7o@_k[v߿՟߿Pu>o{h{j޶c2}gmT.:Uؿ{=Q^0Tp|_oESHZc[6X=ouA߳1zh^Gmz%۟pͿI} |֟uq]׺xa^j~ N }Zy%2xNzl?o==slo? ?^RXgszF?_ſwv0|=Υh`_oYٞvw¶s>럛sp~>^?}ׇ\yӫ:oOhׅ۷Ϗ}?>P>k[uw+?uW~y;v}oe_Y$|e{͋7}ǎZ^_׶;ve;­?vu~z=on~ nuL~^Oo߯߾ӿEq__ƾnsNzIV?^?ڿo5no%x]n7|FOo٪jyOo5zM7Aڭ4zO7ApÀ#0L7 f^WᆁnpL7 ~[3j5ݪtÀ%ݚzM1pkav[uO1>m o5o}ѽNFja50V KUQkUXoMXjUts3V-{]pˇgڪ|gҍ vp{H3馑|Li7ߌK#.+샰L{nĻjy&N{u󇾘m:Gy?5s3ͫnJ_H37c_gMt~M7;p-={魆\n+w}[Um実hj;t[ KSt-VvfwGunv'O[._nwNp ݪkwֹֹ޹n#_֭4qTA3TA3\Rp + fFPpm4C45j*hk U U Q3TA3TA3\"p 5C45*h*hk U n@3TA3\ffFX4C45j*hk U U fv[ 5cU ר# iFv hFF iFL֌lgH3f@3տgS\k36O45Qa:.n?fH3Q糿̀fgmhƣقf\|||v[CC5ʇ*ȇk4UU(|6[E C5ʇ*ȇ*ȇks5Oɇ*ȇ+\ocPQC㣓U(UQ>T} Pc, UQ>Tb QC*GUU0( UQ>|6[ Q*ʇ*㣓U0(UQ>TA>|v[QC*ʇ*VY>||TEPQC*GU[SQ>TB C5_y zHy|t4=j<lC3CY$vyԕ&?gCDw04^zW߮̀k 3CL__?gCu|\:%*+*xSUP$UQITB%Q%JRD***xDUT$$[e%Qm***(IUTUP$UQIT+V#XI+Z 5n*(*(kW$QITAITAI\}J=BdURר$$VF%Q%qJ J J=B5**(*(kU$QITAITAI\FP%Q%qJ Jm(*(kTUPר$F%Q%qJ J J=BDTPn@ITAI\JJ:P͌D3$.6$^i$^Mz&*{?c$ߠP{ >~\{& ~۵P[:Sz<3QIu]zݩcZ{ocZ<sV{QAO4^g)Z3$Q4CJ-DY )e+S;JΡDY *_3$JBUh'`'NTNV%;qJ vDDĵ*h'`'`'NTN\RF;Yĵ*Uh'`'NTNTN\ ;qmD5z@ƭR;Q;qJ5ډ*؉*؉kN\RJvDĵ*Uh'`'NTNTN\RF;Q;Q;qm5ډ*؉*؉kUר`'`'NTN\;Q;qv vdUUh'`'NTNTN\Rޚ vm؉*؉kUՃg@TUfHTkD%^uy&J\A3$*q] dQWQ:[yf&y!Q#Rnwkf|:1h۳1k'n癸.wk4u7 rD׾UhDW}r=̺S{~̐V-ji͐4ۨ/[3/lj&AH37Uo~ RRF*MUnoToTEQ~ RR**VoTb~ ~SF*MU$oT)a~M]ʢ߸ƭRQqJ5**ko\߬J~FƵ*U77oToTo\߸FQQqm5**kU(%77oTo\Qq~ ~fUU77oToTo\ߨߨ߸ޚ:dWAIgq~*M7߶5~~VSL!wx&MF373?چS/luD~g_q_L:ߌqo>게9~>g%.u&x:kb}1͐- Z\;<' fzGOz iͻ,zS8#oL\GVavC./j֢؟ TJ3 KQTATA\,,FYRYRYr  GdId5Ҫ$KV,,FYRYr h ɒkc8$K K%Ȓ*lUU(K,,UEY+%U0(K[eYRYlRU%U(K KUQ,TEYRYTeI*%U(KUQTA,TEY TeI*(K KUQTAʲTeId*ʒ*RU(K KUT3CYmD5߭ j )_u R"L6fؐqT3]f!Y+@{& eI3#Yu93%͌dfVS3,}u8,Qdt?fH,{]> K^=s,ں;sdiB>34 RvdY+idiJEAYJ,K{',5,K,e*ʒje=gao{,"{o'*o'[X͠XXUERbUJĪ**PU(V V[eRmŪ**UU+U(VUQTaRmlŪ*jT(VqTATA\Rrb b b++hC VXFRrmJ5*k+U+U+hC VQTATA\"rb b bJ5ڐ**k+U+n@TA\XXFZJ5*k+U+U+(V# U<Q =<=[4*T T8lSs-!ו!Zt̍gҷify:䵓7us\kNWZ;iZڧlSx{N m*}3Mn\-/gX[3(V8{JbW-,V!g,V;5bW U\53Y*rAJ"|7UT.Tn{< p]qHº;ҿw^مլyRL3#5LT3UP3UP3רffѧTATA\Jjl*kT3UP3רfff6>Ejh uJۨ*lUUTfUE5j+T3U𩪨f[e5S5jlYUT3UPffUQͪOUE5S5jVL*V3UPfUQTAͪOUE5j jVL5lL4>6 lيn|.иUESi\͐9f@5f1W𩪰* [>7- [6g5Cm5._ifq k?j\ i\I i\qԸ5=5nr78?=c4n gD}ձߏҸzZ)y40׸o׏׸: %; '5Gu4|y>`t<NN5*k0U0:U0:htѹ6[EF FN5**kNdtѩѹ&wlFwԴU{FltGMj莚nݾFwԤa{F Fwdt{Fwfn莚4l莚nV5^5Q5Q5^5^ύn!K/LcqD㎙?8d}C`t{1ndt6f;jnOeD>.wD3.w1rl3;f@}>ͺ>1.}Rp!K@3$w;Vq}^Q:O3Yoi3Oi03oWr+]c&]X]̟>nhtq.8>F3dtFw?7}fbtL0nQ~~Q~l5^5ٟ*Qk&k&kf;jY`Gm o zhO*_U?UWUTUESڟ*([UUESm*ڟ*_U?UhUTA٪UElO*_U?Uh`UUESA΋jOيifd  !hW3`UmDSF)\S-` k{gsn3S' kW ! P3 ӝC 9al10ϐ*g M3 Ok)i_;絮NrtW>:᯶s0}>963uš!'x}~xG>3tB̀'qšA' w3 kf脚3jf5Cz= Vz{:f |d5N:rš:fFNX3 mfNU U Nl;aUtBUpª脪U 6Nڈ;aUtBh_ƭR'T'tJ5:*8*8k ]ȩJNPе*rBUpB脪 U U ]ȩF'T'T'tm5:*8*8ktBUpB脪 U ]Nj?Ǜ3=H=353C͠>}A=MQudgIuz] 촯IJ{ IcTCdisu}9Ҹ.K H?\jH=sK3Q3(7Y}1}w>K_<33 ܑMu䄞8f We'Lijy>Q|F)zf`!Slά])z&**k4U]"STSt MQLQLѵq22EFU]}m"hqTU]RSt +0Eרw`)FSTStmLQL5*k4EU0EU0Eרw`UU]"St MQL5**k4EU0Eׁ)jM1if㙏ght0E~6tƨ2f)򾞙g))6[Am532E͌L3?{Q3#S f_LQ3=fff虁)jL1^kf= b}MI-h?fӚL6_bCP3dmo_ɦwS,<X+-~|f)zfַC>q>z~=3}'S bqN虁)jf63E݋Ѩ43Y:G Q33>EՑ4zf If>Eׁ)jfdfFsWQ}0FDS=7[UJ}A S5 **kr$``ʽF0Ua`VET}US* fULn_`VE* *fULfX0``VETYS* *fU̪(V``VE YS* fULU̪(#`P05ejf( 63̚Agɂ,ojJWT Uf*Y3Cm"5C*탡JhE͠J6g}ǚ}1ߚϠJfɬT- LTIݯxM ZAqGݯu9͐JY@ [?i&d}Trl4U2~X3ݴ?fH%ӷ3Y%׌-4C*Y\uy&d]Y63Lf*[!Jjf53TɚAg5C*QLV潗tT;]53ǚA5X5[Ic fF4zf53G̀?67G>;c Q3UX3U #?MUfP%JJVET*YUR6VIX%JFi^ԨqTA%UA%]Rt* * *+PIJFTtmTRT5*kTIUPIUPIQ%UA%UA%]*I︞ VITItک ک SuifF陁vjfh皙ifF陸LDTTigҧ'<ig|P;}ټZFکvzfk3N;O{h<]3ڇf5ggk~Zr͵ܯ"{)d׌p Ltͯkc}I͐kRyk֙e+ܯ癰\I0w_3Qg;}f$, g@0AZ053L͌3 i5Z͌3*53R3t_esifF陁vjfmКAmgp͌VK53ZAR3pg@F53Q dT3# hF2z&ʨHF52졑zf Uu2 2eTdTdԵ>Q IFUAF]A ˨*lUUѪ(VE2+QU0Ȫ([eU2lhUQUѪ( UQFAVEU2ZeT٪jf$5e%f^ z*xiUҪ襪UKUG^Z3C/j4- zi|eTF52Zu: 2sҪC/Kkݳ^ ߶:2Кh T3@:Nd93 i T3`8}*U3CL6zہ f@ZuuN5CW"L6]ܚ!7< &2)ùA=AfHF|R?wLzk M:,E?OeT34C2Z3CHFket=YFkd4޷,{TF53њh eT3YF}۶gF2Z3CfՑ :Κjg͠vfvW;SN>jfFY3C hgUf+کT;53ΚAک YS*jgUNFX;UWdک jk*UNUN׸TA;]MTthktEUUI;]vv6[Eک S5j*h*hktEUNרVʹ3Y;;fP;D3#@;5SS5j*h@;53N͌3㌴3Q;Wvz&jH;=3Ǹv7O35]G۟f5]r fF(3 ͌S3# f͠`O{f AL:r@8d\}wLHY:dmֳNχ^ڧ> \z& f49 fj.u/3Y0upCqL053LLL͌3H053Lπ`.43L S3tՑUz&*lcTIWG٧=96JJ5L%5*:PID|5G͌3=Qu䏚Al=3GDJVUFTTtmҵQAJUJo 5n*X*XkW`*U*U*]}VUPrUJh`VUUFTtV V VUP5Z*X*XkU3 Xe gUQ%3 kTIUPIUPIרH%53RI TR3#LTUg*ѷ y&H%=3PÌJJTR3#m9nUR3# |Oofd|*53ZI3*=V|F3d5CV{g]^gL"J]oT}}gU Ye>͐UQR{y9dl Ye.u~ 8qf*ՙ[ h)>ZgkzO6z\rs_O T34CZ3C@kfh534P >q4o<h͠VE*l9yՑ hs0[_3#Z_9טh efPFUG2Z3( 6V;<3њʨf ef2n3,mYFk7ٶ西ٶj**jUTTFYQUdEeAƭREUEuJ5**(*(k@Q]WJUյ*RTUPTרQQUAQUAQ]WFEUEUEumjEMT͐#fFꙁj5**(HQ=7lյ{O5]x&3=V=353U͠&d[m~sfl㠭6:U͌lU3#[m8#[LUUUUlfkl5u?Ujf$f~#yf !qWˣ~׶1Cz_Yy&kq E趾<ŵh|7hĵLH\z&kTZ͐R>zπ֝hk5LJq-dq k.@\5CH\=3#͌3q ټ3 8a53r53sXπ9:lsVŕ&H\]Zͫe氚9gz&:a53rX v3ͳeqmb$fF( "6I  ƭRqUquJ5**k@\]mJUյ*WUW( Q\UA\UA\]mFqUqUqumj&fF⪙z&+k&+{&**8a=6MiupfF:zf~͌t3]3Ou6huyq LVv{u}cgnLu䰞Jktۈ:ll25C: :5C:?gzfg:jttdצSK~̐ήcsO?癨ʬ4~~ekt^ZC7 qf؍U C!z]=8όVLHkf(5CB\hky& }t}2 zy8}SfH A!N+z& qW3$v-qBͰi]&ⵖm]y fnifPkY fFB\3C!k& ۿq͐OSH}kf[WLV_WY}F|l̨qTA}UA}]Ru +P_諪FUumW5*kT_UP_ը>ᙠ5[p|Ȃ5wEkffXfFf,X3# L`U`Ց{,h<3 Ȃ53`π7gd ܿ}ͫ-loԗP}@m-*o#5V3#@}53R_͌3Y}՗\3тUGk9h,8g&LVev' odV_̀jeԯPr˵*W3|T<7Rߒk&% o\X[3Y}=Am՗L}53R_LV_͌3H}53R_πw;L}=3P_̀W3 535gf뙁kfd vXfF! -X53`D VYfȂ>`9,3 Ȃ5̿3 Ȃ=-X,X,صM`F]ɂU]o>K`׸U``q_F V V vXkTWUUɂ]6[E -X,5Z*XȂ=3`̀w8͠7[-7v$kf&Ğ!}0b͠73b͌3QUAUGB, gBkf$Ğ!NgKA!n^#!^3$Īp_k`WZpS TG뙨# /P}WL}=3P_͠6χԷ{T_3LT_^}O&z&*o& W3# r><շ}ܯ?gH}y}W5 ond˝f@}J _^y7Pm[Zjշ΃-dH}=3P_͌W3#@}5Vi@}5 :P_͌3H} os :] |W3wsC]ׁjf仞fF軿CQ}](# Jn&mg&HfFzf Ig䪂䪂6:Iژ)I*H+H*lUUܪ(䪂VEɭ+\U0Ӫ([eUɭlKnU\Uܪ( UQr%W3YrW3( f[3CHr\~Prkf(}=\̀VEɭ:\͌$fPr:ܚJn %W3#ɭjf$ KnU\Uܪpk0[W٪i*/﹬kk53tX͌fFwjf谚 Wakf谚[jf5:l V3awB+<9l͐U_=v~ou;aqt*!ka㝴Aޫp :lߦ[!jf5C Q3C 8,ð;YvXWZy?뙑Pg5tϩaw6ϖuyY>ǘl͠ΪtfHg-'m&:[3C lUYU٪Em^Cf:Pgkfl uV3UQgΪ6:8(lUY$׮#=jڪfk٣}׬GM:׬{:{n_e=jrнfU=jٽf=jU{:{Ԥ{:{Ԥ{:Wv̀Ά}&Q\g3=f\g53ct63G:LtI:׬{1:LtsgHgǙ1:Lts ^5^5^5Q]{׉3?>gaU1Lv!Ot~F:{3g&3Mj m|wٝflKܞˏ?glu~?>31c&z孮%2c&zs̶=J>d{y_`3lOf3degz>6cf3oR;fl3dݰo,ld{Ews4ydl|Gm8$Q}$̟K>3c%wH>%.DrfM$wH1$wYr$wgHrg%w#=fl3ur?7}fbL2۽fk6ۣ6 f{FGllUaVEU}UV̶*mU4[n_٪VE**mU4[fl٪VEUf[uh5Cߤ6dɅʚ!ɅʚJfFL%W3#ɭPr53ܚJf@rVJfF[3CHrkf(53\d-Jo~QrzEf f[V̶*mU4[U0۪hUf|ffl Ͷfft*|3Qaʎake}j/[3C 8l/[3Zakv֝u^*}sؚ! 8: >Orzc3pc[3cf :,u V34Wjf5Wgaw6}O>3tX̀V:l V3#j&;ls5um[3Cakf5:rؚ:fa:lmC̟rD>@:4ۚfgflou5C:OuV3#jt*lUYFYgUe:s#Y׸Uq_κFUUuktPUUIg]Ϊκ6[E: :uVt5*Hg=u6hu6yffF:뙁ήz&lfF:뙁jfll=߃LV=ff4qlWl532[D]VugL\U\喟5rlET~OF V VYgn~v{f`A nmdo1 ߿ˏn-F3#7 q'J8π{43rc X3kz>vc͌3ٍ.~5qk< z_oNܸ*gJn\uzo qW3eu=~gfȍz}n̿s| X3#7LtcՑk&}{ Į# X0,xd ~H}=3P_͌W3LT߷}{^#w=3]͐6WwF꫙z&瘝˿W3#LT_UP_UP_F2I}]_%UuƭRUuJ5**k@}]JW׵*R_UP_רQ}UA}UG뙁jfMgMfF뙁ou໚fF뙁jf仞ffH}WL}53R_ W3# o|F꫙z&瘝#LPy7kfd v :`܂53YS堙}YgfflњYfȂJVy&[Ǻkfdi,X+ڂ5,[wOV͠]y&[p fakLRHA .}.;==Z· Lx?fȂצX3lk͌,34#aA Ziy kQ3# Lo]<\}ߏ?fЂg$<߃όX3 ĮQUU`>טY! vXfF?Ƴ}fd vMW׷hQ}]G뙁j}y6Ιjf仞*+.o#.zf໚g廒廒6fIH**+*lUUݪ軪廒VE߭+]UԪ[eU߭lnU]Uݪ軪Uw}W3#߭jfpWf[3Cw]Ց nWGbv̌|fwk}w]Qruǒ<[qPrg;ܚJf@rʒ[u(In͠63ܚAUɭ%7o軚= fF[3C߭jfw53ݚ늒In͐>?d]5Prkf(Mh$uf>3 Y([3 Y~!ɭҵ< Inkv Hnt>`MwCk$]34C[3$z>ό$fHr9ܸJg I.f6Yr]q5~fɭ%93M3C8}ٶwk}W|* [%jܷ f܆f*lC VYgUG:[3bm'a5[*:jc찪xVEU0a]Vêú} VVֵWమQ'զla4~|^WmW^s~e/s׳Gۜ,flVflf,a٘Þ<+ecW,cl:f)[وcY6+ͦ,Ut6,Ut*:Y6+flV:fTljY,Ut6,Ut6,Ut*:zBԪTYlj3lBg٬tlj}UgTԪTT٫ΦVΦNe:KM:KM:Ku֟TN^u7]aSæVqMիYϷ,+6U\ԕY)j6 EeRlNZQT(jjUTJQY(1EVER^f,KوvA<|Gvf|nY)j6ϜbRT6+EffEMO>?=2f%و^wed\&lLF/DFt뷍.5o^̣뷍 f2ZM~6&2Z6*^6&Uhe*وיs_6+e2h6 eSeK](Yh6;Yh6 e2k3lF SWfTvVvRE;Sful RWfT׼fO`ILILIפk\3&U\*rʉkM6+R;gITNhTΩTΩTqũI휪I=ʵsj'Usj'Usjԥv)?gSKP=joQ/U\U5S5.]5gS]3qw%)filV::U *:uilnSJR2:Yl2:QJFg٨שl>62:Yl2:*_@_5ß֯$g2:u)lV2:y>}FdtuǏϮ9~٨^֞G_6"cnlLF?wQ6]F/G頻dzO mDF_.lLFU|3Ee*3)`Y f6U0"T*TßO{LJ0Y|.'gL6+d#L6+dl>~_0٬̦\&6vZ f6*N]lVI0ߔJ0y]&lT0_ɻ٘`ɦ f+6*s"t%sէ6*ϒ} w6&oSJg6]0;و`v)ͦ *z7*U~٘`Vamvu .?._< &`fL6" d#I] f6 dlf%f',J0Y&`Y f6U0"U0"Tԅ`QN*٬2jW5L= *b*b*bTԃUVUR*S*O,r6jTyUR*UNUUNU NU|UJXTJTnS*bS*bS*UREUR*UNUNVIV9uilVV9J)٨UζJ6+*وUNUVIJ6b8vߜfL6+ lKR0gI] lL0OR0|ls6Kd#9UpгY kc,گ<<[꾝٬s6wg٨`۽ߐ fGge#x?^2l?;ŲY#g#>~nک$lUYYe6 dkVy:*SW*M&ulV%Z*HL]##&H]#?fS揩?#U1#U1#U*z1TGcjr~!PL]#?L6U1#U*Z*Z*xUTé⏩⏩T*}TTGcT揩TGG6+fl?4 ilYIc6U"T*ԕ4fӥ"lVMG?vflSflV1?Q<<'cjGcs6wpg˓Y#ǿ;Q|w̦cu'6w^|Ms1A}ۈ?fcX%Mjlsfz??U99ϝm٘??~ֽ?vc+xF l?sgt< }f*2^I]Ic6 idN"G]}x6OgG6+LH?.zG]#?fS揩?#U1#U1#U*z1TGcwGg٨?RўH8U*8U*7UUSS?NU?NU?NUH雪H8Uz8#Uqԥ?Ylf右QZK]IlFqJTFHԥ4YIk,Mx:KgH]l8?Xӳd鏳Ylf可Wp6,r6fڨlVV9UYYlV9%وUïF5ʑ+5M:󸽼Ƭ~6~lU;Ƭ~y6~竽6j W㝍Y_ǭ?f?cU~t<]Zl*`ӭ~J6+Yg[%Ur*وUnuVFg &z$uiYZ%ʩjTʩjS**SJ~wS?ViR_Mz8T5ET5ET5ũjԃr)RFqJ#i_MUxo6xo4>}ڥMڥ]ڤ]L]"Omx.O=J]ڤ]ڤ]ڥڥMڥ]z8HS4޵K]7l~_FK㽩x9$⏩UfwxnOmx׍)>7E6+S7S|6n_jꄩ]"xo6"xoT/c"]gۈو}dg"xo6"xoL={g"xoTǚ1llD9׮xt|_Ƿ`{c"ޡl+ 4dc"cLmLOҿ?*ݧy"??ϡ9wEpو}7|6"|j\1<|A:r];"wW7lNnOmwnwfwԦlwwnOmG{TbwfwfwwnO=SM.D.DJو UD0 UD*"ZE*"Z*"xU*TéL"U"U"TjoT*TA`T&U"ԕfA6+f!lV"FD0 UD0 UD*"ZEl~ΉlΉw]_6 c#Z*GK]Iߛe:+falVǦߗPkSl~3Z*_yY)_6 cRl]6ب)UgӕSs/MWN+Gؘ'7|}Ϧ+_VޘUM̦+eeyڨ%*_Sl>3F~Wf|lVfgP>6+f|l=*xWj|,MUo/]߿ޘ|ԕY)_6U|U|TQԪ|TQiTQ>(_jUNeGKGKG壊,ɔ/u|lL?MREO:(u|Y*lT򝙪G囪7U*7U*6UU]|SUSMU壊MU壊MU囪GOG囪7Uz8+Uo*'^&vF/*U*ʗP>6+cw~MU/uylVF=uVwmvجQak2̦ >v6$:ۦ y_m#? Ul6&l3(Vߥ{mT껁٘իh@m?^f%la3՞ [w6+aR'ޛջZ٘~+ta;|յq٬m6nFᚪFw6Uݍz:UmTu7Tu7TunTqWuwN6Uݍ*6Uݍ*6Um;nԕ[H|E0nϕZ-U,->TjiT4XZj4XZjU+XURQR2KVKVKQRZQRQҨbiSVKQWMTS.YQԪfTQԪfTQ3YjU3jU/]M¨U¾b^[U[TѭԪ[TZK8ԕMe)6+b#6ZmnS~ƝMYzX6ݦ껸بM]NFlj6ף|ۨM]0z5N6ݦL^&7fS׵UMemj~yٷ|ozU6ݦ:٘MONȦfljSUsl̦.e{l>ڦMe#6>lz0Memԗ* 4~zj%6PyPlV B؈B]*zU**U* z:(TjU((U**U*zU* ZꪦPSBQERBQERBQEP1J](BJ])/ E 5U*TU((TUPTQPT񞩪P E E=j*Uj*Uj*TU(xTU((TUPé\PSUVRśVoReVCJU-MU-NZ4U*Z4U*ZESUESUESUQEMU-~jQJfN6Bמҫn ʐf4TCRWZ4}g6]>Q-1-WlwhMע;@}ۨ{ӳ1-aӵz]y]VKjw"6Bglԅڻ6h,]MwY6BYl.t]Q_ F]Z\(u)@Y =,Jf.@T*@T*@SUSQEMUMULUDzU T.@SU"@SU"@SUQ&D] l4 B~~TJDG*Z*DJDJB Pj PT&@T*@T*@T PjPj U(p**@T Pj PjU( U(t* Pj PjQERQERQE"@U"@TԏC] P6"@ww6*@5eS;ʦ P+6&@]#l*Fو ̰YP6݅JXbc.TF]j?~,\Х.?B ,\hq!6BMd.TF\(Pյqjwbrl>ڦ e#.F]]fBt:TS ʺ!<+Cb2lF fHUkbHՐbHT1өĐR!QŐbHՐbHUkbHT1jHW5CJ= *Z *Z *DCJ=Rج!F )uaHԐR!QŐbHѦ!VC!QŐR!QŐRPŐjZ *z8U )U )U *Z*Z *DCJ= )U *Z *Z*DCJDCJ=J *Z *Z fHT1jHT1jHT1$Rj5$U )PW܋feHlVM1$ d),YӲY,e#4ݕ?}ڦ_Fn~r.7MlfMYݫ;&Y,ʛf&6+ozӫ7QEv7Qś7MUoNDo4U*4U*3UizUUݛS7MUo7MUo7MUoD={uYrl4&›>_,ޔZ*DoJ6U)zU*ޔZ*ޔZe*tUMTé̛M՛M՛MT*;TMT&xSTM՛MTMT*;T&xSj&xSTMTMTMW5o7Vo7Vo7QśR7QśMZKYjF1Y1Y:YjJtm,} Cb2$6+CdHoa2l!ulfH3lԐ溓7Cʦuߢ7Cbct)| 6bHsbHl̐9ߟOؘ!Ϳ՟4tCccTʦunE6jH]'٬ i6jH? i6og2粥h6K-Rجh6;mgҢ٨kU\fjUhjT"TETѢESUESU2SUQE^յz8kT"hT"hTբEԃ_Q](UZ?j=TTXOj}b=zb=Tc%֓ZU*sUj=Tézb=zb=zb=TԪ*Tj=TXOTf=zb=Tj=TԪ*TXOjXOTb=Tj=Tj=W5롊V롊V롊PzRPzb=*֓z:zؘTɦ~~U]ull꤮oجgoؘ׹loFA&ja77tWbc~S킍<>yܓ(7=[lo꽂~Stmo'̱QygQ7=l~ӟo;a~~67;a#~46OJclf7,UoRPoRPo7Sߤ9?]uΛNQ7 QŅR ]\(p*s!Pju!Pju!U\(`B1 6 =݅]kw6kwvz.&0w.DzjsvzTBw.Bw.Bw.tBOmsBOm.tBw.éą\݅]ͅ]M`]݅\݅z:Uwvzjsvzjs!] =] =] ݵSܵ] =P =tBU߿J нt׍={cޑl~_ MӢyqmucF$Fh~vGplTloվ7*@sl>چ16&@g  6*@MtilB7s`sB+f!@lDjZ*Z*DJ=J(u!@lT_ڝe1vx ʅج\Pju V QŅR QŅR QŅB0J=U\(U㿗ʩ MUc5U]*.4U]hX QE` U\hp*wBTqBTqBSՅ"0SՅBSՅ Qr MU.D.D.4U]*.4U]z:Tu!Tu!Ы MU MU MU.D.4U]qBөԅ QW.ڬl~fs{"6EulTPhQYjlL.lFj?޾jQZ>ޘ}%7ENEϦkQ}/"jעv 6Eƴ,_x|Mniᙵբ٘͟W-jZt!6+҅f#;|UDlfeHQCzU7$hT5$T5jHөԐ+C_K7$![Cb2, i6jHT1WuC!MUCDCDC4U zp7$Akܐ!Q/}jHTT1$Rj}bHՐbHT1c%Z*tU3jHT1é̐bHՐbHՐbHT1Ԫ5T1jHT1$RTfHՐbHT1jHT1Ԫ5T1$Rj5$RTbHT1jHT1jHW5C!VC!VC!QŐRPŐbH*z:U )U vmvMDiQ}H6Eu&esҢQ-G]q6WklR|hӢz7lO7EOؘjM} {{5LtCw6jH wCbR{!R{2l!QW"F 6 ^D, ʐY1!V!VC!QŐROCJ]!YR6ݐN_G uԐʐ؈!VCRj5$U )U )U *zp3ԃ֘!QŐRZOEC!NJ*Z *DCJ==VbHUkbHW5CJDCJ= *Z *Z *DCJZCCJDC!NeZ *DCJDCJZCC!VC!N%DCJDCJtU3$Rj5$Rj5$U )j U *qbHS!QŐRtmܐ\~d%6Uԅ!1CwͦR5Zҥ:W?و!7bH7tC i^^{RQ6ݐؘ!+TAtm̐٘!ϡ{6mߧF :wCʦ>yTF r6wYR6 Yb%6O?{6gf%K,dUMRPER,QE"KS,.dJجd),YR6 Yb%6"KUjZe*DYJDYJDY,d)`8&KTTђ,QTSU,Q屚DY4UezzTb8SU^e*4Uez8T%T%T*KT1*KT*KSUS,QE,MUY,MUYLUYDYD=JeiUdiUdU],QE,QE,MUYLUYD8T%T*KSU+YzmT;6"KlLul.7Fݱ%v%6M|6Mu~&6ozd,6M~GlěODlMu|7{(eӽyS6*MGF_ySԻl>ڦӑy&M=[mcT[FƼuԛ֛fct:z?zMlV4WuoLUo7MUoD=J,i6Kob,ʛf٨7Qś^ս*4UizUizUizT&PܛqoDEzSj=U*ޔZ+xSj&xU)X7V١7]ռ)zU)p*&xSj&xSj&xU)U)zU*ޔz8ySj&xU)zU)U*ޔZ*ޔz:xU)zU)zU͛M՛M՛MT*;T&xSǡ7N%DoJ]xӵyS6pT;&j-,1Ywwf!KlTkJg4s}ϦRu6&K;tYG Y5lD> v]/,UɦR}zT6]_w]zr6&KN|(+RlDYe㌍Nجd) l'QC:|eHlԐgΐ؈!] )j U )U *z:Rج ʐY!e0$6+Cb#Z fHՐbHT1jHT1jHT1$RE̐RZcDCJ.2/ԐR멨bHT1XQŐR!QŐbHJ )j U fHՐbHS!QŐR!QŐR!QŐbHUkbHՐbHT1é̐R!QŐbHՐbHUkbHT1jHT1өĐbHՐbHՐjDCJDCJDC!V!QŐR?U )t*1$Rj1v-RuH՟بKlVZBج(1-kYiQ6].yu6E>;t-ưQ-6-"Mע~46Ezl]բzr6E׻G{hQ-kQ"{Z^f#Z^ZV\ʅY ep!6BW5JCJ.D N%.p!6Okcrl.fB,\ʅ؈ VPju!U\(U\(U\*.zsԃ QŅR:BT9TuBTy QŅ MU+u!TuWu MUN.4U]*.4U]*.4U]hUfU\hTu!TBTqBSՅBSՅ"0SՅ QŅ QOR.D.DzUwBTqBTqBSՅ"0SՅ Q?U]z:Tu!Ы QW.4s!p6B7P6+*/ffBYl.fB1fB1F\HMwzsptﷻ6B^lԅ=ϳh:b1dB [҅tWسQwk,h6K-bҢ,JfZETqETѢESUSQWZ4"3ollZfllZ4"hѫQEMU-MU-MU-ZD=k2ESUU@懮jQj=U*ZZ+hQj"hU(XV]մ(jU(p*"hQj"hQj"hU( U(jU*Zz8iQj"hU(jU( U*ZZ*Zz:hU(jU(jUMEUEUETѢ2T"hQǡN%ZD-JZtUӢԅYie"6EӠYhYiQ6E׻Eج(E}PlLѳ1-}bY6]GlTڧeSڨջ@-w7n]٨}W-F}!Q-j|-!]r6 Cb2$6+CfaHlV؈!] )j U )U *z:R˺3$6fH!3|gHlVF )U͐R!QŐbHՐbHՐbHT1ԃ! *Z]mWCJ!QŐRcECJDC!+1Ԫ5T1!VC!NeDCJDCJDC!V!VC!QŐR2CJDC!VC!V!QŐR!QŐROC!VC!VCU )U )U *Z*DCJ8T1өĐbHՐjZ )UfEt-؜sYhբɅiQ#ѢZ>/JZTƴ~>Ѣdt-#1-*hQ{ݵQ-FMG{1-IhoYݡJ)Z.?aԅ%Y ep!6+fBląj.Z*.Z]*.DJ=J\(uBlԅYslą_\uV.fBląR ]\(U\*.Z]*.Z]*.DJ=XPA`̅Bb<UN5U]hUBTqBSՅJ]*3U]U݅BSՅS MU MU MU.D.D.4U]z8U\hTu!Tu!TuBTqBөԅ QŅ QŅ^]hU\hU\hTu!TuBԏCUN.4U]*.BTqK҅ج\h6B^m F]]ՑMw뺞_\h6B.و A1wfc.T?C,Bb<2b]ڨ 1wn٨ é}tO9}t,]MH^fElVZ4ӢTJ٬h6K-bҢ٨kU\fjUhjT"TEԕƴr-:|ӢשZ\h6KU\U݅BSՅ QŅ QŅ MU]zwBj?_/ԅR멨BTqXQŅR QŅBJ\( U\BՅBS QŅR QŅR QŅBU`BՅBTqé̅R QŅBՅBU`BTqBTqөąBՅBՅj.DJ.DJ.D V QŅR?U\(t*q!Pju V\P{P{F]~5j6 b.t]ؘ݅ 79|sz?l wޜE;Ӟ?wDh6 QalP{ZK-J*Z<$U&"U>"TөD>R|PE>"U>""T*W5H=*Z*Z*AH=7H=U#˫Gj=U*Z+GjU#X|Vc|\#U#p*GjGjU#U#U*z8GjU#U#U*Z*z:U#U#UM>"U>"U>"Tj TGǡ|N%AHqU*ԕ|YG6 `lNJ>ج#17`Qblג1^őMy RRo{͵19v{1ηwOeQ7G'ϳY|YG6 `l|PE>"U>"U>"W5H@HA|N%Z*AHAH@|VGT&T*T*TGռGL>"jASMUAjUcTR1LUxUTT.SU>"SU>"SU>|P|PE>|LUNA1U*1U*0UcUct**T*TWuAA1U*0UcPU>S|LU|UcR>f6]>ul||8ڧ3ߛqfil8ڻ'ؘqp8th$7K㘍GI6qb~r5z 3zl>Fc6K`s2_do6K㘍GJ6+8؈qLU㘪A㘪A㘪nTфjT1jS8SqP8qLU㠊qLU㠊&LU㘪AxU7TnS8bS8bS8qP8Mp㘪A~RHqP8RcEHA㠊q+1Ԫ T1qV㠊qNeAHAHA㠊qVMqV㠊qP8R2HA㠊qV㠊qVMqP8RqP8RO㠊qV㠊qV㸪U#U#U*ƑZ5*AH8T1ө8b8jƑZ26+fqutwa6+ȦJ]l~wlF]޾?G6]>k>N_G,䃍Gj6"SSب|;=ؘ|wd#1_M1ؘ|O|.x{\>Wz6+ȦGt{cqK]qdS*AHAHA㸪GjGj5U#t*1jT1Gj5GjU#U8R2㠊qV㠊qV㠊qP8R8R`AHD=UN5UcUjT1jS8J*0UU8bS8SqLU㠊qLU㠊qLU㘪AMA㘪1Uz8UcT5T5hT5jT1jө8qP8qP8^ՍcUcUcT5hT5jԏCU㠞N1U*nT1K8,>8؈qL5㨟ƌzUqmg4685٨qtG{GI68+fq:f+F~ 3l>^fil8ڕNl158f46bS8qP8qP8qU4aUcT5TjT1jS8bS8 S8qP8^Սz8T5T5T5jv7A8qP_8R멨bT1XQ8RqP8bJ#jUf8bSqP8RqP8RqP8bUb8bT1é8RqP8b8bUbT1jT1ө8b8b8jAHAHA㠊qVMqP8R?U#t*1Gj5qV㠮8YqdR_QhF}Ni6]>+^6&3^{*lD>{GhF_yGsq2G|d#vF#u!lVMU#U#U&"U>"TөD>R|PE>"U>""T*W5H=*Z*Z*AH=7H=U#xrZOE|NJ*Z*AH==V""W5HAH=*Z*Z*AH@HA|NeZ*AHAH@|V|N%AHAHqUGjGjU#U*q"S|PE>R|\#U壽.a~l|\|1²WwPWƌFc;*|۬#nl8 QhWd"l8_njއڨq75Ǎßn?8կϷqY1ԅqYG68bT1jT1jT1qVMqV㠊qP8ROHA㠊qV㠊qVMqP8Rq\Ռ#p*3Gj5Gj5U#݌# fT1TyqPTS8qP屚A㘪1Uzz8 S8^Ս*1Uz8T5T5T5jTфjT1jS8SqP8qLU㠊qLU㠊&LU㘪A㘪A=JcUcUU8qP8qP8qLU㠊&LU㘪A8T5TjS8bA㘺4٨qt`#1~q٨q+BY\f)Yy+,働|;i1)ɇh U1fcQA|V|V|\#U#U*z:GjU#U#U*Z&S|PE>R|PE>R|PE>"W&c0|ʫ^*1U*TT*cAc.T*é\>|PE>|PE>|LU1LU|LUA=*1UcUcUaTTT*SU>"SU>"1U*1U*1UcUaTǡ|PORAxUԥ|f)lV1*_\q8R>f6]>=M٨|?=3٘|{sQMtŘɇ .?V>fcQ︑Gy vQ6"wu+͘R3؈fLU͘A͘A͘TqTьSU3SfPE3fLU͠fLU͠LU͘AxU TSU3SU3SU3fP]37p͘A^pfSQE3fV͠fPE3ROhFjuhUM3RfPE3R2͠fV͠fV͠fPE3RPE3RfPE3SfV͠fPE3RfPE3RPE3U3SfPE3RfPE3Rf\4*Z5*Z5*AHn@͠f~hFTTьԪW5HA]ifd 6vG}K68N_nj G6jj8hm٘qϦͦG\6js[ج#n+TRE3;`Ҍl>ڦ߯jFlƮ8M8_g%lVMU#U#U&"U>"TөD>R|PE>"U>""T*W5H=*Z*Z*AH=7H=U# Gj=U*Z+GjU#X|Vc|\#U#p*GjGjU#U#U*z8GjU#U#U*Z*z:U#U#UM>"U>"U>"Tj TGǡ|N%AHqU*ԕ|YG6 `l{|N6&=gGQ6&v6"k٨|+{sQx}+(YT)f'lVGtb#|Q]*];`l|PE>"U>"U>"W5H@HA|N%Z*AHAH@|VGT&T*T*TGռGL>"jEʩ|LUc5U*1UcX|P|Ucp**T*T*SU>b SU>"SU>|Pr|LUAAc1U*1Uz:TTǫ|LU|LU|LUAc1Uq*өT>|PE>^*1u)YI;XRW15=%ߍc6f^ tw/eZM7z6fGؘqwd2T㰫HYk٨|ߟ|ful`>Cʇ-lFcTTTWu1LU|LUA=J*1UcUcUaTǫ|PrAA1Uzx5A=Tj{57翧S۩]>vxjvk.Omp.T6kN%q.Omq.Omq.wf w&wq.O=JM>]>]>ڌ]>M>㩧Suk6k6|ܵS|ܵS|ܵ]|<]|ܵS?SOq.OmAxjnl>|ܛ.O{w)F壼و|}zg#QqoT>ܛ|<brɳ9Ǜq(<7x6mSg_qo6qo=*?KVlqܵ]q<]q<]qP848ڌ8ڍ㩧Suxj3vk76k76Mk7vxj3Sk76k76k7vxuS qnO|WHqP8RcEHA㠊q+1Ԫ T1qV㠊qNeAHAHA㠊qVMqV㠊qP8R2HA㠊qV㠊qVMqP8RqP8RO㠊qV㠊qV㸪U#U#U*ƑZ5*AH8T1ө8b8jƑZ26jQ6b}_Klf%l. f!lL>l|/FKو|4`cq:&6*N(fng6N>Yԅ|YG6U>"T*T*T|Vc|V|PE>ROHA|V|Vc|PE>R|\#p*GjGjU#j#` &TTy5ߏ؃|PTSU>|P屚A1UzzT>b SU>^*1Uz8TTT*T1*T*SU>S|PE>|LU|LU1LUAA=JcUcUU]>|PE>|PE>|LU1LUA8TT*SU>"A_F+"K`2٘qGYlm*?ͤWFt\F" Yk3s"~lkWq׽\j3"mbg68Z3\zt3ŭE/^1f1cT*cT*cTǮ8P 8Pi8FqSi@qjƁJƁJM1Ʊ7tq/m8Pi8Pi8Fq 8FquojjS8PizPi8Pi4ZI֚J8G6TGtq*k4hm4hm4TGTG6T*#85hm4TG6TGT*#Z*#:4TG6TG6Cq8q8q8PiZPi4m8SI@qDk8G6R`G pfj@/5\h՚q>;=3j3W\\,k 3R3ڣ/Y wfG3V3~ ̥dfVK>sf0sIϙK5#3j3R3fR3PZ3PZ3PZ͈nJ͈֚J@fDW5J͈֚J͈nJ@fDk8jFtq*ԌhԌh TjFt[͈. TjFnz*Tj*5#Z*5#Zk*5]]+ PZ͈֚J͈.Ne555J͈nJ͈֚J@fD5J͈֚J͈nJ@fDk@fDWJ͈֚J͈֚q TjF TjF Tj*5#Z*5-TjFtu*ԌhZ͈֚֚AOj`U\H@/uH(o-2#bN]`FE{} f[G:dFE{D3-Vvas/We=g.uLWXX|]\hk݂-PththtC[Dk!@[Dk@[-SInJ@[Dk@[Dk!@[-[j"8u TEv TEv T*"ŭ[D*"*MjTŨv Tըv TŨvQZi@jջ*bT8wQtQtQ-P)-P-F[Sy@[jnJnJ!n1n1]JŨv TŨv TŮ-F[-F[-F[j@jn]JŨv TŮ-P-F[\rhn}w9_XhI>ӻE}F3-3'--fFE{nx[&sh(>sk3֯fƺE}\3¿Sv f.unJn1n1n1bWQtQ-թ[-F[j@[j@jnJջ8wQtQtQ-.]-кnB[-Z-[-PյnnquhtT-P-P-Pth-tht TEtq*-Pthth-t TEv TEtu*ththZ@[Dk@[Dk@[--PB[DWnJnquht TETE{93-3#g[--2#b>vif[s$nzBf.t f[|df-ǣݢ>T5)-jbR̅nLK"3 3R(PR(P)Z(P)Z(P)ZJBJ@PDWBBJBJJ@PDk8 Etq*+h-h- T Etu[.Z T ETm[ TN5bT *jT *bT Ũ tuPFPB1] Ũ T Ũ T ŨQ-Q-Q-Z(ũPR(FPj@Pj@jBJBNbT *bT *bW/Z(P)Z(P)Z(FPFPj@o BNbT *bW/Q-Z(Kbf. fJj"-^wmy-㙱Q?i,Z`F[D{GfExhϙaF[DiR3sE0sĚы-K-bfE"FEj@Ej@Ej[*[TZĨQmT"Pi"FE"FEjJ[8QmQmQm"~-]l"FEu~ljS"PizPi"PiZI֭qhmT"Pi"Pi"PihQi"PiT"E"Pi"PiѺ"Pi"PiթE"E"Ej---J֭J*-":TZDCEDk@E"Z3"ꖔyDH@PԿ+)o2=# 3Pw[33V(#BAf. f.BQ1sP0cML-U\*P(B^*P(BBJBJBJ8 ET E T *":h- T E T ET *"Z šV(SY@PDk@PDk@PR( EtPR(uZ(T T E^+T E T *"VR(R(BB] *"Z *"Z *B-BBJ.Ne"Z *BB-BJBJN%BBP+h-h- T ET *"z[TR(P)Z(BBJ^(BE+_0sPdX23R(++BQ_!3P0gfPl3Z( Eՙ7sE3"TfEdVgj_bR̅<T2s:0#!Z*pUhQZPTTR:RPZPѺߣRPZ]ʪ*!Z*!Z*]lVު*!Z7}yB:RZR:RPյ=*PZPũ:R:R:RPѺߣR:RPũ:Dku@:R:RuG:R:RSIu@:Dku@:Dku8Ԫ*!Z*!Z*=*-TCtu*ThZuJu@:Dku@:Dku@/Uf:gBu`ƪC}Df:MyhuhσL 0ա="3:G33^dƪCՙZT2s:0#T2s:0#!Z*pUhQZPTTR:RPZPѺߣRPZ]ʪ*!Z*!Z*]lVުʩF:ju@Zju@:juꀮVTQzu@:ju@000aT*VTèVQT^PZF:RF:ߏjuJuꀮNaT*aT*aWZPZPZF:ߏju]JèVTî^PZF:RF:RF/V 3:833߰gFÏAxTfV}af.fnuFh_m oO͌ы}K}af/F/j_@/j_@/j_*T¨Q TP F/F/ɏj_վJ_8Q Q Q }]lF/ugTB J_kJ_־J_@/DWJBnC/Dk_@/DJ_־J_־J_@/D&J_־J_@/D}J_־J_MJ_־J_N%}}}P h h TBnTBP թ//j}!Z*}}}2#}mX_L ueByh_ufz_5 Q oz U23sfnuf2s/0#}վ3/P P P Z_M}J_N%}!Z*}}<*}}P ũ///P l}!/3ow}Sj_վʵվJ_վ0}]]+ lvJ_վ.N}aT*}aT*}aT¨T6Q Q ũ/F/j_@/j_@eվ0}0}]J¨T¨T®F/F/F/j_@eվ0}-T:Q ]/F/j_@/j_@/־Ւ7-f$T0s$0KBP^!3Rk<\* 3cϏVL߭gafb_`Vg/žz0z/0s/̌T¨Q Q Q z_@eվJ_վ0}]J*}aT¨T¨T6Q P z_@0}0}0}aTؙ/M¨/" z*T*}!Z*}!Z*}]]+ Ѻɣ}]*}!Z*}!Z*}<*}!Z*}]BT*}!Z*}!Z7yT*}!Z*}!:TBTBC///P ѺɣP B/DWJ_־ph TBTBTz/dB_`R_Ȍ f/gO0c}a~|H_[3HcFKZ=K%!3:#?~YzT2ӯA} 3RK%!3J3R$RP) ZP) ZP) ZI֝%JIN%%!ZK*%%;;*%%P+ ũ$R$R$RP) vl%!٭$Ru;~o$DP) hVh- TJBtu$DΎJI8JBTJBtq*+ h- h- TJB쨔h- TJBtq*+ ZP) h- hQ) h- TRP) ZP) ZJI֒JI֒JI@$DΎJI@$Do ]JJ*%!ZK¡V$RP) ZP) ZP) 襒^njWfBI`JB93Zo3#%=O) ѾEמqxIh ̥[aJB}\( Ԓ`{?3/67XLQs2#}F3su3s3Rofb3`R3`f F Fj3@j3@j3՛*6T6QmT Pi F Fj3fJ3՛87Qm4Qm4Qm ]l Fu~Wkmz*T* Z* Z*f]]+iѺ ff]ʚ* Z* Z*f9* Z*f]ʚA6T* Z* ZsT* Z* :4TA6TA6C   PiѺ PiBDWfJ3fp5hm4TA6TA6T* z03dB3`FA73 +/f_fΐ f^3"3:S3 A{ 33   Pi Pi PiZ3ffJ3N% Z*ff9*fPkũ   Pil έ u~ mz*T* Z* Z*f]]+iѺ ff]ʚ* Z* Z*f9* Z*f]ʚA6T* Z* ZsT* Z* :4TA6TA6C   PiѺ PiBDWfJ3fp5hm4TA6TA6T* *͠p\j fPǞi X3fʾ|ցɽW|̭:ցPT:u:u:J:J:J8@ԁhT@tu*ZPԁhԁhQԁhZ.Neu:u:u:J.6^nu:wajTTըTցQZi@e:Ttq*ZPZPZFj@j:.Nu:0u`T*u`T*{ցQԁQTZFRFRv:0u:0u:0u`T*{ցQmZթj@u:0u`T*u`T*u`TR}WdRKB`F6=3g.0u`kG \m3c͠Cfnuf fb3m4Qm4Qm Pi Pi vfv>f0`T:6T6Qm4Qml F vf.N`T*`T*`T6t{3@۹7Qmh݃oHmz*T* Z* Z*f]]+iѺ ff]ʚ* Z* Z*f9* Z*f]ʚA6T* Z* ZsT* Z* :4TA6TA6C   PiѺ PiBDWfJ3fp5hm4TA6TA6T* z0c͠>s!33Q5(>6kP5*| nj7@fnך3 _ך33   Pi Pi PiZ3ffJ3N% Z*ff9*fPkũ   Pil έ uؿEDPi4hV4hm4TAtuDvJ38ԚA6TAtq*k4hm4hm4TAn4hm4TAtq*k Pi4hm4hQi4hm4T Pi Pi fJ3fJ3fJ3@DvJ3@Do f]J* Z  Pi Pi Pi4hٗ@fցxfG!dׁ~fgF@+ ̯ԁj3Zyϵ:r lgF"* Z;* Z;*puhݸQPtTPPѺqP]:* Z;* Z;*]:* *vE@TFrFFj@WJ;*v]FSyJJ0{T;*`T;vtq*tQPPٸGj@j@W00wQtQtQPٸGj@o N`T;*`WtQPPFF/vf.ufvo3c}Af/`э_ \ՙW 3siGuGeՍT7QQGuGeՍWQ٭GuGeՍT7~tu*QGuՍT7~TvQGuGe7~tq*GuGeՍT7Q?ح}Ս[BeGek?*?*tudPuGe.Ne?*nlѺGn?*?*tq*uGeGe֍?ZwkT6~T6hQSƏ?*nƏ?*nllѺ[Go ?:llѺjnllѺGƏƏ?ziL2c}:3gw{fgF:@ njwx,w\JJJ@Dk@Dk@j Z7nT:@vT:* :thtT:@vT:@nܨtT:@vCDJJJ@DubJn9]tTN5`T;*jT;*`T;vtuqj;*`T;8wQtQtQPٸGFj@J00{T;vT:vtu*PPzJJ0{T;vPTFvJ000`T;*`T;@{wf.u-uف@v황A/eaэq?譾53siGuGe~TwQQGuGe~WQ٢GuGe~Tw{tu*QGu~Tw{TQGuGew{tq*GuGe~TwQž=آ}_wh=*=*}^+TvhQQk%}nѨn=*}tq*QuGe>ZhTvhQQSn=*=*}ѺEۣGnn]Jv{TvhQu?v{TvhQuGeGe->z[թdGePuGeGe>Zw{Tv{TvhK}fdo-όnz@f.&/㱍?znk?3GƏ?*?*nlѺj֨lѺGW?Z7~T6~T6hQuFeGe֍PSƏ?*nllkt[Əm[&6S7SvN]jO]Wתowm}GekO]Ծߵmm?om>owm}?ow]J6Ծ7Ծߵ֧ԾߵmSԾߵmmGe?owm}kO}kۭO}m}T}?owm?*]jO]j6Sj6Sl3=3W6kόnd3H}|/圹g~nԾߵm?m?wm}GekۢO]njO]W]njO]njڶSnjv{Tv.N%}kO]njO]w]lѲ۟wʾ]nʩFuk5=*ۣk=*[nn?=8ۣۏnn?lѣۣۏn?=8ۏnn?=*[ۣۏnNۣۣۏn?=*[ۣnNnn?ۣۏn?=*hTΌn} eCffq߷}Ʒ7t_|\K9[<3-~TxTQQGu--~TxTQw-}yTxTQGuGW--~TQQGuGe_-~TxT]}G-~TxTQQGu-]lţ}ٷQѺ>㮝nz*TxThVlѺţţGWJhݗQ->ZxTTţG[<*[<*[|˨lѺţţG->ZxTxThQu_FeGe-->:llѺţGmlѺţG2*[<*[|P⣫S[G[<*[|nllѺG/l_Pft{qC->ڷ]3ŷ:nq]♹gόllѺţG[<*[|nl2*[|nllթd--->ZxThݗQQu?ԶTţG[<*[<*[|t]˶ţGfWO?{n`]moO_nzkͽB||y?~_[sڿoA?qMvSJ]?LJso̗ۏsoǯNx6uۏC_=F_sTEkFGڿoEVt^_Kc+}v5^±~Ͼ|| mkї} +mu/y-_%9V}3{%osm^Oz<~~o:oCw1|]mvs_^{>J{v/~Vη߁_7/ev|Am[}.Jm~[_{ٯ{ݾ>?ۮv5s.5}gp[*_?||}/Utb?iNu>p}wiܮƷ)~%?ndvK1eGϹ xo*,=ɗrqw˾~xUzs=Ԟ޿6hP>櫽ݚmu4Aw˰L?3ok^?.>Gۙ?{nox.9Cv{Ov|owviz󺷓{}`3Oh_us5xѰUz@rnE?QͷG {En'_mq{{WmJ~.lw%>`+|>;ۡ}lrNmq(]^>^_Hv[Fhk۝xs\~߁~.|L_9o'6Ǘz}"? pms<}vYL~y}x㼷yw㼷yx׹#=my}~?_6gyosByl?~6sWW@>m_3oo?6Ϸ{~ۯǷK~&3|/~'15oߎ;gwy1~ ۿ\]u.-v+ǧsi?cn x`}>y缹]Ϸtz2~_X~_+ v5pO?ӿk>W2w};N{/{ssy~.d>f}|kw??y|2wW'eN8>߿{w*=߷O??OKfssnR_͝=Ls endstream endobj 272 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 275 0 obj << /Length 1349 /Filter /FlateDecode >> stream xڕWnF }W,-RbR A L~[?,i~vZfjQ%˕Yz|i?h6$\y׷O}(ͷ~S!4.9|sDJI:k) iÙp=B)@ b_@F%ewqNd/Mx?&(׾)>O~Mbad q㰚3\¶fDQmIwdJIb5ZEӷ˕b8\U*/TQv9J(ްh5u[?O-'qs?!ӫMo-Zq dJ%9rŔ ]$%"ʟRLԖ(rˉAWd cIVQT1/ #X2Ȋ&0s y Y%vŊm!Y?=EcQX31jOEb'o.A[/wK m6ӣĔ4gøwMv@S8eUkrFP\EF/.a \ۃ9 H$#~ٓ% #zK5ٍ) Šhr OFZD,x,s:a¬OB4UtK5{tIiW?TxUj(j T<"y$ZЍqR}X`l(P7ή C!(ĝ4q;PjCQq*n$Q92éfAnl >TK]=(Fl a%ހ -v j;Զ.)<0zi74Ӟ.C?b8'[FңHN9/TǏp-ϣWOnH ݂ W*?7FՁ7"ox!)vâ%j-/`봊aO.mcOǠ KHS_"a*8ŞJiUt*Ir뻥`ͿXZpC;[`DqZy A|J~HES6& mPc+K[`sJMgsB{$1ĵr#,%L$ n(`sDǷtyvhJMXC˺9U/; x)wpb.$G׻K 34,i]nt1]*`F0@B2Ag&%(#pXk %(# endstream endobj 286 0 obj << /Length 1917 /Filter /FlateDecode >> stream xڍXYF~оQX.d}p#hS䘤lI_]EܾƈSon7Ka}ؼ)&c.}O~*}Ӟf˪%yӆnvL)4Qg 2K'\͎S"p†@T  ._QGXcDYHI]JgP /j |`; [ ׌~B]5#Р~?nv'.Y0d+=j%zH7uѵHg][ē]F̸2J+qp~lAA-JdkX9qK)qvҪVY™̼ͩ>հ҄"Z=$ϣ?@+ZCpfB?ō}`!Z9KKE9\)!F<3O J z3cDcA{50[ ȓ1yH.d0!C~='/ ,{QE&҉`\<2G<A@ǣ1]IB,i+swilnw x>nG| M&%%`9 ӷZ,{4}{>u!`6ʢR(nF/` ߊIlLjڄ_`MI,Vn]/!0e9߭ 4G5VhWpb,$:iܲakue-33)3eL=Hm\| 7ysn|mTlV[ܐT.J5f?af >KQ7 ʈvQhG~LJ[@AX$%qV PsSsXCDt*<{$k~gL ۼ][c"0V>͔XĄtlBxc Y61ʈ&:F% mEŸkT~+*}8͌)O͸?Xxl!/qZC/'yB!?2\ ݁"˧m.WB;(:K Soi䈵6}W?ܾ?mB] endstream endobj 291 0 obj << /Length 306 /Filter /FlateDecode >> stream xUPj0+HP9)`GMm琿,ŤAwvgvfQe8KTGbKDK(I'[r ~~Z,em}9B>mǯu>n;uO]T@ɝ"ȵ-9͸Cc#~"0-Ye}7A0ǸGJB `Or9˝@O4ZhGG@7^6aUNQf á}vI r?1$ 9 gu" CJp)0)y endstream endobj 279 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/biocbuild/bbs-3.20-bioc/tmpdir/RtmpQ4K6Bk/Rbuild35d24010182fc1/affy/vignettes/affy-016.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 293 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 294 0 R>> /ExtGState << >>/ColorSpace << /sRGB 295 0 R >>>> /Length 6735 /Filter /FlateDecode >> stream xKQ+j [[d $X ld^"j,r [dddS]|w|cGcG;coǟ?~͗QJy/u~_=7_w_*xӗ8u=b| [}~9wuKՏYU(]xѶԴRT󣸽ZjoUъԲj?ڋjuQb~TT=>擵`)O.`F=9ߢVX zl{[5 cϚU'faߏ0}~ҡ[քJ|Ӕ;>gJտRàض&MC\xwi{ީmu= | _в;^z/XNj Ŵݱ]a4j:6Rþ;6c06"}a}о}Nh@ZO:h ; m_L  v{/ȾJޮ7F}Z}hoԴR0Ii "/E9~,i _ {q8q w2h47L nXRcbð}~g PƁ5j4{??iX ƃ}_ͫWQ1XmWj ?|= 76[5m0`߭cx˅G?WӾFVav`8ؚ]Kk|^WӾ/ Q;rV!Ӿ?H9ǖ폎=֟)_w}c۟AӾXoQ{}v}@VP1i?b{0C ]kj,T=rԓ Km{Ƈ}W1Rþ{s`> _eM wy؇QuDV>/B8^tM=d(]Ye^oKШSyhp%)"_Oo5>Du)aϚO|~5̲G nԋl}slGe{%ia\&e@H}>0 t`}C@a2RŃݯexQ9ҶWԴo}x;:+L]ޑ}x/4fXy}wM5'+35x0?a}o GM0Efwb =;?{}C{7gs2P}a(o,=q5 3|0i? ]3}ד덍@Y{B1C10EF#R  M+hC4u-izAkLM[c}׼QӾ/1} pTok55Sk5n]5^/8i%GK. |AxXң}itz~)@]fj7ܾ \fdžu}qо˵G:zʾCԴoc+A=Wj7R Ƅ탉% M./no>_6: {+P)mw f4OTA^s4dǮ1B@.'gPFnWΑV ndYrtJVoOf(a) s0)3S={sP4d+(qm3rk#c+o !,\`vPz anM#x;>E%.!'Lr^ >h@ HdR"j͢Ԟ73$g%9<-_O˓-fS'Y S =U՞ Co! RzAaBLQ.5Njf2GtdN2RY褤f*{< (if|h] j_2qJDQ#R. <] VO2筆u{:5a !XjWa5QjY\˚RJeMjưTv{E rw+(gj{ZXd򨾨H/ZnH[7*1ڐqʝ2Tƴ]m"s}v K ynU"xv}n%)#_U5dݪ}H;+v{gogEE[>j^!kYp^!+'rgGSWy]۔*vɻܯtUe7:Ku7ut[% ߫>Z =|{9pH7|{'}zv큟Sp{|^ya)_8]8oǷ}oUiۻ˜ln-_3o/e:7HBd9>f <Go0R?p<|{ ;}x߽MPu+.?o3׿.W fį(WBO+wQ`6#}&E$[NB7|'@tWR"Ta}NO*;_91qRBJF'rQ.LL ݺgqDS%`%#{jǒ9Ý*BB2l*s.Eq̂+pT&m!DXˏb.!Da̼)!(/*zF&Q,SQ;%,J2rn|oFh^(K].}9oQ(+Փ2\ ("qWq7==ӝ^sqwԕSiN~7;e9,jׄ2$rJHMJ^itpf1f(MzAp/ _D aW35A0 {R FF^ȭ|T5sXifweȦabKUYy!AixZUd6sh kjB*+KApKJB{BpGS󄘙g_NSw&z ́/GZ Aؠ Uܙ @.|vUY+3d"ceEFlOI &^MhhM&{jBFB/=Nl. ֫ yLTwLPIMeRq'v!.9!h-yJX!֤=CWwjI!(*khOːQ](UATi*OjBEnOE~85ª2éFb$G(d-:BPTʜPFTuTrQPN"&CCvAY*CN%6dP'':X,޿ S ~Iir9'*&p2MM$+CJ,B-mz_ԧ CX ٩F'f-cX4<J\?P{e(-ٿmBVDAUޘZS*,)#Cb[BU[ 2\BUTI뵛!~!6UŎk mCQbՁ姠9wB"lLi E}!yH{/(9 VôbrJ'ꖦBsUcɕWj+N!/u8y~:?I3JMnyA4>ABsVVhmp9B EQpeL1#5  6 {>Cs\͐2f BsUPܘ(3L&7΅t-Еipaӗtۆr#Adކ\.eVGjfOx\hFFuHGIHb$+j]-):fB =@MH,;bgqm誨U{/,]``(bSP% C,E5$dNu_AV%v9YԂjrU :!#ȪtxO }U%E[iWUEa޸Н 1VC-/ d QDo7> 5:R_'#Dv!fh֚ RaRS_HhkXʩG^#>CU걮!_ք\h6nȬP_~*( f-񏚞%1?/Ƚ5e0PNhj]!892c(F_zeAw!hj=! ؇!*C|  ʐ[-CvJBc*#nCU£|BUCT5)n$TeNE5AU=5eiiC3eaP R0jRG?B+Bw^¦l^SR.B%X 1GQ&-n )6t3U<;r J4O/$:OI:o%tSl峌.:=p<3ee !9F3"hLS&xUa\ky-^PUi򄪚 1vi3u9^3z{ jyv n0^UDzM"kkBdf zUu=# >XX+#ub&߹D&HJ73'/ g0|e?ɲ%RW沣ܦ.! es=kYh4;4)b\Nēʈ<)*(!jIQ Wb$E "w^8 ߮x{F FKoِŗ(3P ?I(ēٽ~" 7M]CM4OBdOy^ٽ>} eU endstream endobj 169 0 obj << /Type /ObjStm /N 100 /First 878 /Length 2453 /Filter /FlateDecode >> stream xZ[s۸~ׯc_3I28tیhٕE"l}CQhY2-t$p|8X9$S2e=SA2ZŜDz7,x,}q`&hJk;f <6j5D76giRa,=`@Eh#u`6=d&H:ɼ Р! #Nȼ};(Oni=ILc1$08$Q$-A[CH : [ ݞHqoXT4)&M h,qj| LqIz>0ί+V[۷o}߆}m|i:=o?&MUOۂ:qgs9F#7k\Vs8#н$wէb/jKa`rm.(,/=7.B6.0d—U"WHO%Ha@mCnQ Pa-o)ƺ}GG uyq478/Oۼj^՗⪘t?|) Q"[b5fr-=[8v|'Dh9 uOׯ_u[OE\,Oy^]Ӧ#=}HPlv2qơHm9RA76_۬#1^ML S S7+L}/_?.*PI\|УK㆞ TSX˩Dí(r#hف=RW`XQ%G<:lBV$hўUjY\cx@I(DJ)]E?qj N NEZk'%@ѝ0E=䌆˹W=Ӡx*G-WPsVQYXMW]aQcI6Xnz.˶.6ԞNƩS'$tشECY]wʲܴܔ[|FsgVcp!G2hןIZ@S|&=*Qmڨ|ӣJJ#Jv%Jq$E"uƍ9?•*;XtxEwZ cܓ4fC%ǭ[G#er W\ޭkbZL)zV>ꪽNo xY-P}>g8)yq  kXUc~Zͣvtݴ}Մ*.N;)ϴ=NeنϳREY;tkC%At_DJ#jOzYg* d x O8]BQ=*lYc-@g: nVB|$Ý c(!hwlIo~3uq̍h[3[֔$]~6"vVEw*y5{qGp:+_bjuS0rU/ms6/MMۼiXVE]/#ޮ8u)1 kE})2&O󼚖jg{儷ߋEy7|R^\ b]ſڪ)f(kŴR\ٗBdy"/뼽DSΦ򺚋 >K,ʅppBX[lv^ˬngYۈ겚<@;󔄢چdzv[\^?8wƲP ϲi;a,oיӲ~>kWge22^3gHXkPvRIvgm(u?@fB>3 }?`yWr?,d&f endstream endobj 297 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 301 0 obj << /Length 184 /Filter /FlateDecode >> stream xMN10 ;I2"R6ĀJ ZOint6@@l1:`XF< ?:Z.qA\lVܪZ׻JbQD{ϐƢd0YU*m9~t FnS5JAosV&Pe_>1 H?yt'6I|ߒ; endstream endobj 280 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace [/Indexed /DeviceRGB 73 304 0 R] /Length 58929 /Filter /FlateDecode >> stream xْ$Gv,۾/m{xlțK 4@ )C'A"#BrP;|9>s|9>s|9>s|9>s|9>/?O}w߽w4Ndw ۿ޿ww܇rPݿ|? ^Zݿݿ?ݟ?9xϿ&?x? ^O<à?C|_,xϿdWI"s|9>s|9>s|9>s|9>s|TZf9NYvBr[&\&[WMèAɘ\.Bp~q2ΎQ8;;+YtdJ |lE3!6h'/IL vLXePSn\-xkVojSkڔo6ݛy20cI[ə88ƥ9s|^p1rc>F͔LLur:,(/7W֤gcI-!sئczbͅnby…܉bp]QNr3+~&bvrtiκ^.47H e38ov{1`8+ۻ{U?{:||2vi)lN.*Y&^W-xcq#A/y': O>]|4eR1%}oyZ&̧i/ZyfSxINb񚇵K& z%m| j_kHϢw\^XSkj/NΜ 32nBҔ "AJYnﻹU.p]J@ qDJJ%d}Bx,p-ƤYӨU?dt'k_JZJV,pa29r qsfl}pBCnRw6u^I fUP:nXuǼzdX-lJ4,X l;1,7V`L.E}+KEX4^{S* ?% \Yn3oxFZF4)+K}0Fw5q5SEv"1tߊ5휥0U6N-\3_ {< ;Pk[Fe;߀>/ґ9J!+vd_Zp sεj (%ݼ{`ZI4񖚦R]MÛN<.J&&$_%d^o%}ZNWY `cv x)g"J6˓l=ن3ެdXn;aR@[Z}Z{q4'Ca]|TRDn%e2kf0ٝwuѨRv,0kñ B00H t ~qUym7fLrHc  @J&ccVlʌ az2#ƥݴEJD7/1McfB}@#Ā^j.v4aK.X!7G6=}û9<]Kz9儹"c;rNiWU$]m~f-R>96P6(*]3)r<,(T}N0mr޸c6\Ȁgjv%8k#c(Ǔ*-N(Gh(FS0&.(&#C>!454p":? ,SkGϴh7YB/I ˨brK6W".!"Űe1@~UfuY)!˘jd E=X‡5Eg?P\A+1 [h EޙyY|;7իG6'`fY1U{".`QFN(`$H$V?OˆcdNΝz#CDBwGWm#&Ny4J! 3~B3xI;J5tkɅuC;EuN h* ~!OZOP%hM\(t ޝ l`0js|}RWnU@kY\z/2MyHRLXkƬ U'le,DIBɠbMVM=#A",^ ,4+>m}2^ˆ| b0{I ГY}1UC㴧#CeQURz$ΠF3 q޻^@mΙg_ӏE?p[sbEf/)+dA3SȽ_EbW+D16cxSFCyp(pwGU9 gl9"_b8f|c,B% P'=׾GIH`?rDrM<[>cz6d Hnz x Wiu|:ɥy =/q-39GzHr~*1g#z@2=*dzGpx|GTlYKzg!%Lx@$ {G+عv\]TbKx.ĞK(^47Hy*eABpeR-͊+'eH/ag}X~H f:'GF{Oo3Y%tr"Xm*u4d:'߸.@PyWweB2BR0dJ(H11XC9i D{yh5!*im_)oڝK dXH'[ym+TP;<7_J#]Ӱ[^xK'Qb{JU۰` gޤ?CRBD֛ mō[ӄ\<֍NLd&=&DCkWmyUbpV4yJ\ /z ?v K .jT񜐤Xwz 1DPimψwxSD5^ l!@#,ٶH`jrZyqY{XfF ֤Y7uZ lurt>:H4y-(̹[ [^aA_<_na6-oGX=ϒӻ9k/:u-j9@Ӌ-]tỴB`i1iClc7VvsJFzpͥx7[ }f?9e'H>yV+ͼO0'm[pC}2i>$ N!iOG'{XLUH:, o"Ftv| A3R4r*eYI+,Wpui77dHG_Χh0Hܰs\U諡^}AqU I; l$$سh7P4ف.d`~066_[Q8@s^uc:L;w{ MU!Q搞MAs_ChkOzO*zw;CBYW~~\tH>nH[k߸.K$4X/2OG=ǁ9%ƞ'*YlPhX9Ĥ ֔3P.CώS ,!0@:fyb–0 ʡC8kr6}:~-d'ۄu|3upn#2 !˼3x\MNؤ:K`\(W " x)G^WMicRh^ oTsJJd%9nW]n sP>EmP-tGQHIe,5qD Ù$Mu&XN7EYgRMJSxomʶ/0`!&E]t5B^6CcXTBҊG&IaRǒz!#rg9cIhՄjB,yE)3>D&L+XxRƳkS%L ܆&$e(0k )A_EQ)w1Z@vXPo~Dk/!t^{C֮b6\o~eMN@@M[;C7o7_Jo\*7H—WZ'F羛_nyJ2g30H3i : >UD xP?3ۚZwthOn{T>Y9zoB1U'S AuJqfP|G KWг 7=fPp&yg&Z Xx`嫰΀?qCIΝV~ȘqPt2!^$#Pg" lE@c,BQ#ҫ3䫱jв&MCn#g@B>Ǒ _}\ 欨Z^r^DdN{xɊID\ N :gb Ӷ@t":FS HM+Uu j'].jԈ/:u0yH5ԃ+[.# 8X99:ϓK gm4wUlkr0MĎj?߹rS6,g(ݴ6H{^< Tܭ] #rm1 J'V^NSF! 1>Lj**EF0$9=$tRf,syeBZZOx(^I"s% Q)/M~ (';ŊfV$FH9ne¢'ѩ4c3Aߐ+L2:Ox2̒/I0G֛} hKrNU4(ǘf9a0*A$N=/,@FY`~b2nw蜸GDiá/}Pp+^"/#ıy Fު 메#I< 9Q,s6/0=^D5q'O*^ /{ S7Bp ͬR/% 5vuq'kmb*e1K0e?הkr{⸘kىڙ4`5,z4iwczl{H`UTG/II>^ラrI_ ikfq RD M&SS vVMCwdX8p#?7#B]X{x!Q/~wտUre@+ši+ЙЎs"Ӯ?5y: #ڵ;#:J|ty4%ޛ>k)˩ڸ/|dLGFjK-t9iUVKr{5Q7ne8qI12a3B~8/9KI͘Ay(hYKOG(F&y<#\a>V 6D bHVs('I] tڙGm`X0͊ -ѡ ]P v.|弥!艱7Y&T0˝r%z򯏬{,J NG aO.#aFfdeڙy}5 r6 VUh!K-x-rzĪ%4&5v'RB?3{ -oM]U-Yq0HGV6F۳Lٱzc (*C` MBXpdkk-txCA$RrD5_A8j{d?ZŠ[+*:67e0[N{?ቆZ.΃i%Eh2CA1/c"(`/p{|r?vtFN;nx=+]YOTƱgj5ur"ҁʹ-:1n']AKf`c -=`H3٧yOUjex LoK vTf}]y^JpǛT*oP~NeI%/FZ$R,\ҎX:\p em`q5=UϙNEş@Feѥl :+2ۅSa,5(, ?ϷA'<,։%ms)-K-hxo/ Y3"nض ÍA _BP?*:$b^qwY{JRa兺#t=r[8&i4Fn[&)c# iF{^ļ/]6!DTfGڣtmic6^|D.~U؂%d5 6YL'y뺉.5']!ڷ&"3C)ҞG=!Qe t ̵ҹ!Q`e %XPq@+N3s.:13Vyj?T-4:I zK3];/:P>O10XD=Nu^T_f$ k IKPR[ mlhV/-|pގJ 5 &19VT t gߖ4ox$D sAuTfӊ *NfTz諮wHŧMq-T bg^]HF{P%?GqK~]~aѥ6Z= Ub i2]S2_CIVHLx YPRBGkS^fX4&k'nj{r9"wJwPvK)'ZT{qymT=Ƅ8wYGC#,/A$ IfOS .~OÕlnhAQ"8Im.Kmsa?q,FH{kl?"XP !,VuPtq{D`9uQtSj{A0"G9B]S>-xt;?Q : p&187g_"H#^W WjƎa xYЕzO]":*Wh`|M68nt5%-uregsܿ qx4M#;wUꑖ.r +޳%x@}J:|}dz 5cn2  ɰAM}8uZN 8}Qi{<^_M$Y `W0{:6ARK1 %vLbBDho E8q9ub׈aL]tDK#y-^1,cb&7BkNTtR&Y`r1DzP%l&XA袟ސcS4y$ZߙbE~J=h&Ps[x#fսAe+mS:z7Lyc/wk1}5a^-vJP.E~b0Ѥ+{5]ʯTr)ઈԠG RDZ0SRL,e$1(f?Qh5y;k:Y;h#-UjH^h\nk脹w>*%Ln:#RH,6> }͎q VACN~aԊy$M> s?1U^͚8C%!`A KhgE›#lnvI2>oKŎUO!Z3Wo0-hs\C S(NᯍW uQmmG:N /tn?y9Q_,r!Beaj0O]|hIN75`D̶m&`A@<샄Rm(4BI가i*Ɣ[`J evx;so\n> i+h[Oiբx/.c yNjpJj4F>f].h8P+oNܪ!.1Lj݈]Xײ ,#I/IGZn.)86&izڶdNsaLCGœ2U$$;*/:%#d^>TDZE@'kCMwgXi.:hފ`, aP&ez?#^B^DUg[yX6tM], ru}^,_GD՘6^LY3KA6σM,Wkcձb9aQr?6+F}T>雥Ls!QCN}՚:fK;S _Q^A.N2(p t}#Rc&A$HTA>{_d12S"Z}z:08J$_3'&[tk7&s.0xg]HG=1'F=Ybgmʵij e2SM %J ̈́r27mU APX IU%>+JO6Tfhw^[Ý_[̪7^ uhڅlr`I"F,p U/54Pt>'7b8|hC7Oi?K xYiv^="`6DI`<F w+EM"H|kM}Z\mumtu_mPeڒڛ^[w FfpQfӮ4mͧxˋx]G{#`VY‹CxsZdfU-33\JmJc!ԝ7zW5KNGexF3@8դ^ =}> T$JTq^@BLHXa&v;Oegt1A8F0{shiI:PTA6nhɞ($D--DSUtP܊PDDd [ E4= ^\m^^*))}DrHtdbQ|;ҵT[D;U*R3( yvCNB.`\[ SХ}Oiu}ס.Έ)gxUrwٺN$Bb:]ca}öx=Wv\ʶF<"gQz^`2?ą-JXdTZ-~ND6r)"혹ƑN"S}Ay]r x_EOċE-mg% !P!ڄ84?2i^zX}V-W (zHTxe].g2k>;B*`^a:bsݵ#XMx'OaͽfKSSaqN RLx#㕀H`/JBߗ#B!0F=ݜ‡{lW os@W_BC.y$&ȹ`JmD\ﰽ ݿUt ғ,֣$-:K lǬ9(N)j1-0@Wh*i'z^ WH3((c*uh] s+䦨2n|2#s]cm\dX[NPh?@1v7$ wU; &_I8̡\RuxCJIUlumr{ҵoխN5J. ۫i&\unuFJCz/_uI,؍=m("R\ԍ51i3S5LE~˭ּX0Zl<NBTȧb17Nx3:MuDZ_uzlEO'ൽMux V@뤛tr\z4W49D;SԺQ1+/Em*sGу?CD&b٤ҔMiO݄:psd.[(ϛ0Ԁ7 ~مRS7RTOÆl-#DF]؀F焌ހMd/՚W|9sRj[y,ܔ. N>6' [!bV7CSL0&Ć^. cƩOrU2eOU/ J]}ybrYcG ێ ݊&߃tI:W8=pa՘"7@wBR:iQvG&.ZQ%Ћ:1|7w'r ^USl3x=v>)=$0L̴<^ؑ;tX;׆\sVsrZ;~sw`M~BxoV`Q͕ A/SfcdS/Q>ߵ h$Jr7Th"虢a Z 2#"1-I:":xgnӱP;jZe`Hr>.H-H@[`䉮 7q6];G) ORb2 8R K#dov]&u9-zfdmq/QW3/_S >7CQPL| v]+-xVgmG~*ʹ;؞Z: {dtӈc\…Wf{%I$Kp㜬sl"I&h,#$^*}2+#BMU17=Js,pdp]}  T,ұagkY;!ˋ "tRx0 m_Bַmank˨ h/N &1~6Z\:?O=*f ߄|t7&ą[^‡.:K =#*F.T,ł,E o-RK1' I6p]| +w+B%YͬMF)@$3nIt8К *(uaƊWa\D[Sx*$ujpԱBGiL Ĭ#qR=M}d^fa:4 $}H<<~wFv&"䶒SbU@ ![֌(+Ը*:|F,:; Lg,v[[n!{V$DϹeh/Po7ѥl|[JDJEnzh>nbE3jwoekλƸPU}Dg7;oMOWVpշߋkN_f=痷+M[VteU{tH[R|yV ToJCt4Ν@;ɆzK zŃJ` Iz9+U V3i@!4\䙐1_HP<ɏD"]7~N0K\CQ@e@=q}'BhXZ|:LI !;0)N_j&̯Uzp0"Z V%A7oMsb$tHKV㗿/}-Ej/bίfPlL6zyxLцwKowAHG4 DC +lr@*u4UR .2[Ӽ\?E\~%eg4;ƆYMiwcO}Lλ.YK-Z3rI*Mό_Pf-/KΖ+I\>+8KOuц3Zq:bmAp;FR kQ]l'.>֔P<8ӡք寠1ly>$9Z4 VZs5eKcuqkG ܈d5sI=ʯ8о=Y`Z.Ѐ 'ySVP6qjx:%A@5/x,Џ?lRVD^Z$Ԝ*J3YOl6lMS#k|$GVSZ&a4lCH"peZ#i')QvH^:K'w5LM sbe7OE[N<"ۋ5V3]4` 8ZFR(5tXQE.iEVdЫ=? Ǯ4v'? !ZkCU FzΩ|kRv+F >ˠJ3"F/2PA OP9id{-4)ː,q bбMf%fv|~/xUQ2~Zǰo FmH@5۹v:*|- ܏ɎfѠ{n|3I=}pS4t(W0씦:XGNmQsC黰,3hLb2L(ji|Іf6΢ǒIr5iB<3_]e[P$9UPs]sc=Ah|8EX_Q]JYMsWoô4bH@oX3Uf^ML 28]4=}h)d_x԰#lB{[4bImb`ԗ"xBXU\ͻ MzAm2&<4tzVND/u}]Ŧ݆&0-+C҆V7'5&=Nty4eHc/J !n1k%xER-yQ='ۯΦIf/k >՗3ԑ뷲QCra|}JSgsuY U6w宰V(:+vU wFr&x5;cimIa jE"+*Z$w ~[P4-ښ֊_m= V1[])OX\ts8wAjZAjHzBi4e,a(#AJDQ!]]|tXi葋hm0译3+i'ItHo۲MN 6#YRd3AZͼ^t밈.vcIb3WRW?S礡k+5,PҩCv<4+Ӡ–{e;!mю ZqF}˟]D2.DԁʹYo Z|rFK~emzzmMP yQԀw ]gsv4 Tuv5knҙ 3y,YNE๒/r{~`4c̣i3@7sE $[!݁T5t:5L/N-2.L06nT.Wv2.X/۵UKhHENc.\2&4;#)9$BRC RUأl};7E%QЌ5sUR"po*ܬ-)vѡYRq$)#K W RXEջ^;ZQDҕz7!r=Ǹ˟=Pymk]"ʟy>wδ[?k:;Ws/g l0ǔB WhR UlܯqK-yBw$߬GVʬ9U|R:[La{ggˮ%?YwCFxL&dRH߈몴I- #<8;>nJvN wjZQT$r:WQCetUA3lgDvj(LHB߂Z{<u*N| 5q_lFkf}V}g'1/`Yw" ퟑb\ԈYtt ’Б=YKSiYt+M67:^D>~=,)+e|6s W"Pt" Uu|*I\+i{#dg?T$*K )u#{}\lIʈ ؤpC51ꦄIc \jϭ*rD͊z*_x8x@A ͣl{uvzE}+PJ2xdf?uC/7_O 42ξZ=3Y'6Wm`g[]ztRX/><香4o{[R_@ ]-3PqR^eTAkii~(>v;^쵳eQCX&x`EMUن?eo4y$4|/H$(:? s*(E!KТhI`DLO~=  ऴWB!\yQ::~NIJC݄R5mȼ̓Қ֫fOՏv%aA'Mte||{bC`P@M ,hspZl=|sR4$O 8oxz)iZL|6'@Gh)͝.e /7O71VtZ{ B1LON4K rzI4-sV rZbѕ5-$6I%=wt,@cy?FQWS^;s^;:+zD[v.#wzQT: U6BEeS9_3EADh̴&okG QT)Z|ϐR& ~TA_ $sTj :W6JD+[>) wϒ?^O aQ3lޅzu"yנ$W VgS'|3qv jA(/oWyz663(ŧTCN\B x4& ҈q~jX2T``zH D8 -PW\8u﷕&RKӃj9!-RA҆5}^I;ԟLOYI鄹\/:rm64HlRjmlHNuJp 6ۯ%zB<~`Ezol^Ej>^ 6Cb` dQ^q!IN)8+?§tyჷWAA&Nymx5[nLH#kCZrHC/Mfh9|h`[ 4: *̻q}MNVQ LbaoF 0΁)U̸^?~8I`B_(XԕɌ r5-ǖafD۷D E^YGIW)Ba7?1vi嚅ͭI֫ț+u5#5I ߩ}SV.FKհp;MGƱ~F$u>3Էug/&lCe+ѪOJATrym;buݫ>5%uյʞV9 Ko|Sl6(>-~(?\PK v2 WKɾd(As3%5p3;jQ[I竿ATW˿"FyylԬݽZժJ+P%r&9 k7Մ! žt[% 4F97ޢI~^ ?"/kp)ؖF{JXٗW孾X^@:^P7N|Ob4S.9ehܛhF=娝? dBLbϴ_엺 XL֝?_P8n,ҀXo'xA-6ٰ 6ćh3P3k]1s{4ɘ驃H݊ 98:H NJo04^7>=ff ɂY9[KBtld5.3(pRsgM1HZcDX.L|G\$`[ّ kq.GNMsKΧ8)B\E{u_x}> 5eW޹EuL =C}4˛ = .ҁf ZEvT\ zDRQ[dj[s:'[13KմFBMn*PF^y&.\uMdՖ74ky` ;(P3/o/ to%֦CoIjZޒl}wI-5xvGXl8#N/y&u>]mkUB}f,0S"\eT*jhXEG}DbcM9&-pFݺ߅5ZjZiM`(aUZH5{dxQMQ3[OtxN}7d4V366|4&52o+5{gdXBeΥ)_S$S}rY)}4k+Xk{smYhvq(K;} qd=7,jWb"ӣqT:)eFnDGMtݮ,uADcWz@߶W[mzdn&"³tA@,gG{tZp/+VSI[<3aam[UIWNJrDyUi`GjVre^jt׸wdu92ܷ6ٓJ$eΒn}dCg~nònP$Sn:҇%w>\v )p֐be@1:/%=Pc#X'ЀZqIni\b%M6$.+^yjYuvN 3'W,?)jF4KZEѾ DHa>>vY*w`E9 vs7 "4fNLD\ES*/P|{ R5kjk3H5zk -uY+-&˰U&7DFe&:|-Hv Y.KܤZe)}z~ո s MZ`6qQqJIK{z4f6ժЁR: x~+2*Ko*5Bch[;T7j94,&j+1\%1p{umS*-K\0/ES9#cB⓴/mҶtԪv0a.Dg`|qGd ٻTU/uix4G5~P! ZOgo05g@jB0gV|I>E5g'@8e_fMմ`U('h߻bQ'Wh.;\wI~%E JUAHطW37ьEL@۬D $:}& R_]]DK&YJeon{u6/gcjv(㿩4gJ`D^*J^NS[V5AtPK;7Hz5fH6p#+RZbswcz/L&]NZY:4}.b et \~%O$62АL}æBz.RX/u!5(˾wƬI b+_\~˨(pl.֙wKyם373S Ʌ, ?r|JgE~s$-/ӆmzyd`l:KVt ν"pUI۞I9xL*g:Y{%So6'gE:_'L~$ʯr Ȩ ȏN1ѷVHa7lVjwm2 +7P}e|i}y8/y?gɝ4yCU^Xd ]Uy~R0 >]ӏ׵S&iQ_wբWtbAj`` LH.-.dHesY$i[Al׎Įji2=u^+Mf0cmS^V'}=u{Y^ܳ_sA]} wq3dFmNҧpqz$ ѭY-5'v$:V|at($ׯV` qҶ\qn_L fKD\hTQq!J7g7+fq.}N4jz<*lWpii.k'ZٸPS0nT]EZ'K~jTR(I!)v#qzmV\ǹ! ADctK$yڞ:/6PC[=#H/=RiMm_P`= h& P/uh2v z~ԅI¦ TlIs<__.έ!kp%y{tkPGy2#E237Y_nv:^̮n;&3|r, XPxKUCbob|z[} )E8u|}\ #94}y~m"o|#M%dnQ$g{n?hTl턣|_8{]$8L*KVHrb.d<)OPB*(iN0\vT|ujHyecgVP~54yya-"l~Yw_JNu ["- yKFSi_C"&k72;E4OmܙJSHeFd6 Ja}C5tm(e^W꯱S^-/âyEZ.~2@R1V-/ ޵dz~@UmbiRڹ7 w.Xhg#)k6; o Ybե%벮5^C'YA>Aө|# mmi2@ccwl&uwɧ&xdgQt,`M_ r4bJ2%2Qj%)A#DdeefV+[iMTA_8\@2[Ж@oDOڜeߍDɘhtfG}o': jyS"ێ4nq5Dזn,؄h< YAb+?Oݐ͕3ٹ`- ŶR^RGlI!SϠ42lG>e*2uU)YUc-tPz=( .]' ݣ̌pcs:P+]b萸lodIGPH"9Zb9)/p4q9!hK36#P F ͢bIE4Zq <+.3:EFEͱ:.c"=o2 8}H"5N]A˪G6>o땎Gddy$8; qIyi1R,}t~-)5#qТQ)vUv<|^u+u*Oի4M'R<-2t8$so\zs֫l c#砀܋~{Fn9};2?nmR?u@$D͓FħorigK̅?P%EsĿn#=2t$0 v']x. G$_$;o׀-H_HCAxʹkYwW2ڂ֢.]+?S_3݀<ISE$ohH7iAih$0 ^݀Rej.HnH?E,4>UرovmY}})8x;PgGtIǂw͔w F[ٴ5PCXHɊy[ONM1 ~ DzN_In\]?oR,Kz9mU:a_j&En@.j׍}>((T8I]t Քsm󝎁ch>T95`MH d$oQ]yevЭmPxa"Ϯ0R;Һu/(֊?y;\dq}2"Jv9tp"p)U4>&jJā_KCgʞ'޽o(nۉ߶p/byӾ#4 ~.7Mv-3jB~oQx]'p/P!FҀFC?&Ǩbɭ| KUc*1KmBd,m-{7F~F Sru UN[7_PUOR69/¿j6bQzP,R0^Bl5ql(@DwAkPΝ{&L748!tغ2pB=M{op.z%g:T\[d[qu0_v̋{{Kɏ % mz b5sV*xb2jPFS`/B5ŷ߻5QQ>&XyEv*kv4m־n=;5Ajup蒑PhI:[U&StL)«"JShMېAtt4R6EDZk 77]4Yz5H8=a2`Ǡ0e+pxFR3/4ŨR͊Ay>fIӡaPtsp*QilHOԣ ZRm)l)z/u+C ɣ7`m}$gj׵r˶Jk<ߟavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav~?~O?D˿0җO߳??WK_˿^O?}ף?aQ?~yׂ'.???w@vavavavavavavavava/kdJ'q&ئNByM~z*ڲV޶whPN(əΝEzB\5\ BZ)6Z$x.a*4i~eZktkfNr~z)pTmy{:g3gk|cӧ|?e.yՅ|-4 rS`q{.`)0ޠQ?We(d6Wf2FS8=_Β/so'& 7זspBHzqֈe:e99/LL)\VaR QzVjZI\~Wl l!E4mnĥoanJ3 ?q6bi~WMlqXfK+nXu>m(;+4cůUia""ZܱĹc%VtstURh&fctStU`(J~'}Xu\'ʠ^SnnR\OMX`>p4BU c'D´iN'9airNs[Xd?{m,o|qI.7r3??}}yg|̓"Tyzopl8)>XMǃYlZ|,"7|L0t"o_ѧ ѵ?~n7?קo#,{2.#1 .{>yKWȫ]gXT6G?u1ދrhUYz5^4!?*m`]A˩o:_#n3W KtBMxm@$V1;4;7p$:hD:;Nmࢍe5;~E(&LyJ=Uz0=nkZ=NT/o#/ZBmR%&X)PRo]s !BEdDږvBKBNx!xݍwf,̉a1{uLl~F2fv rQA1gWk4,BMe(y?T8]9Q[](/EinM9cH>zWLC#ę5i|T6!T6x˩l/FX6&jEIM~uO-J$D,oR ume"?} q,.X b&db4ss*5kVT-"{ޟx4uNr,٫ua K]slçGa1uϭ9ӝA7-u)d"iyq.zلEl@AO'U%D #ݞ@N2WָxVҎlVeJF$Af@pUF,cI ”Re^L"N /[<+Ah\,N3-Nu\Wװ*7yojE*YtSZ6" Jd;/Hb"QSꂿ %- >}k+ fF P8[gr;/FJÂGk|5t7%ouĪsgXwCڈҀ.6`E$#!hؗCm3WQ)8To+ɸ&yUk[0%f,"^J}~Y?H$i>9PV )ZՈƑaQISReE6ooB޺# Ha^ w}4v_ʃ5zXeB"3B:b2E9&,3oVg4ڛVr$KS!r< `-JjIb4G5 UYf ֤KB! cЉq>Q6HI5=(6ET6R¥ '`4BL%9@0"A& "t` ix`K"i o"IDt=\ iH<ʐlHf#t `>7Rj1YhC1A d!cO |SعCQ(ŭ纯Y73.a!!Su ăXXr,lg5zz? kRɟeRc~m4[ \ ݦaúmR`M;{)^rvGY\d 4ő#꣕> F:Ƕy@/ %"#@PxU=&jJg՚*eZֶU!*6.V'{&>v @ Hߤ\*GΈ@igӞh/r<*ua4Α1HDYȞNI{%쨑+x7QxoB8tG Η&3Y۸""4.}|xAOD)JH?Wn3R[JML=% BAvjP=*(4bQC9kBGt+khT!2*4S)#E1 c/Ұ' oJ7dFUV qx*6i55LGY/hӦDW' ,<)+ Τ[AR hBQywYE%E _Hf 7Ӳ"|u&oWqU+%؛W%Ч@z t E ij|N5[qQV^ZNlwaC&=H+##i{0MnD3:~]K[ED.t% 搛sfjB/.TWddm3^m})<_hX m= z 2 TtMm["zD98%hP3BCe/:6%c=7ZAo+it Egـx~n*2m xk]hsF|5LVv+p>C{}fJm}VTƭ͋t" 8 51iJ :L.ԔUA2W5gw,w=ͱmC=3Bު'q48/lFhv M:vzImD؉jHFCMb` `NK (a0pڵT-l/PE.?jn'R3WЙ8W:ƁQs"jyɧx@ͪ=bE;"'Ђ䤐i$IBr54T葜Ih)=ɃDdܑ+{ hsh$qQ 1 /7N1!X |ҡ zT,YOb_^G|7~vKvc,@?1 ~Z(+>DW{1*R*1E"k\E0["`)5q;4TEnAbg'nIt)Y'UOՊx ަrY}VGJ&p1 Dp\, a즳I᷁B)#eW7^>3;A HwK7yo}cλWE?? 3>f3IP$:EyfIa*!Hيă#VrC+ROP[h3lI-2Gg*g!I֓;Yb3bAl,l`HD^qq#WM'{t NiTwDj\ZAd|TR#?C Fl*oRԠs!b ؅+8.9%F Ɛ}ul3iuL5h6)$~11.S&=IqيQh_ž 2_@1@3^SgQ7:t*Wy" KJ8-Ve<0<_e :`2>aH#I%c0*3|qֶ"48$Z %xmd:v.BMl?-Z"#=sf`ȫ8   |{c=la/ y`6,3w)FH7җYȹ@+$e$mRBscߨN::5 T/W!§R7ŞnY\k B|ll93sOOZ;f졮 KްIC~/Ulg:(.{Xx5py=ӟ 9Ƥ`|NmS$dnaa/LΟ\ڝ$=,|1v{Tx4 _+]qtGe¤i]N;g>Ҡ4R399P4bAT~X:ֹ$Pq <;^h|2e*%IK?pHEtFm_ 0\4tMM6dm%7<;ǂ0XRQDUqY`40UkѲ5T`C=%;9-]->tȃVCe"g\0uLKtNCK2ȫFJo~Qbd@Blb Kua-cPJ Yg6^UIꓵ;8UReY3Utu"YfE6cD~@JX#@*\kX!&WL|fCҦ"#V|[N1i8Dބ]_Y*k% ӥA:|22/m"1NwTR}Qх_37 _(aXfp,5Pz xԪG$H4t9f3Fdw M_EUJWM:N;U7M ѽ<&s A&f " {2UH3( m3U" o VﳅtU*d)|3\ϻ Z' $cCR2GA|D C_L EtTwWTAR+Ӵ(} տ3U9Yx@ڮ J]y&3$+ҧM_]&cX>Xp¨JR'f=$E *'}$SOPBULo}:TXY?Ip*Y(9 _~=c='wQxʊڊ݅&?9Bή! 9Wù30k5uQ׋Б // vt%SF#n,:ea#5D @-~PH"LAS2%mLt\Ԣ #*Gc˒mj|L ێ7!֨c^7:nKJ7,ϬWa |a?! v"md%rNY8&[3# HSG&!#UQC+^hqt?(^6.|veT>ףsg2Ջ}l])ؿ\|"™*.J, dj1J:̨rvYߚI5<v(XKGT\ۥ"Ϗy޽x>"grĪ8,reԴ"9] ipT~܋d*16t ~63uy) x }l~.]EzsUL{9d9Q*F_f8T\$iHշ`XH<7J85kQT} 9 VtHRp`*F,mj~IP.X%0 ~c4@ɁaPaoStk4]y>3럻dBC1 ,$0NnU9 R+~aZťp(`ۣ_L8l_8͆nfM{'dBZqfuүP<9b"vvtׄkTņUUcUYJCS+tT>S}|CDV,\<~tMeD'kyT_9 06XIi3aƦFn~U] mc8̌ {9KlN'z|ovNԜ5=ؼ^3N.UgB:TWc>;u+ L{66x.PK-?>栄ڳL0ZiJ$Qz7KXBqNKv6X'1yݘRޒSHHt3T|6*}YD/_:ZIֹSe xrp]+78NG)k]Ү5Z"}tSOWkd!1}W,|7[3XPu6uf+\ §\4yC{U _q>h1v! n4Qo HGJ% N/K[: OO | W`0NF"$X^Y)t52(iA@+M;vP2I@iEH\ j_:A-fT~+ft D6qY&M+Uj|*RqVN.GnAj!^ ^EVxvIلmBغc?; "ţ$Q{y(i.WˣZpHRKle5]QDdnY[ u0+.%pf"*_+&>tCvU EՀlv70^n[Z3he(q_f X`=znz @]Lc|7 Y|Qlo+i}}H_*OhTd/NMz\@ұ*z& y#=y$湅iD{GH =nUq, gA_]@JQNRJ3tB|~cN|PƈDz@~jUjEbćYc3d4fbCrSˋ )~x-⧇-3MqmJ^uc{/G>~4Pg%8Ӂ5h 7N;iRJUM8ﻐWIOM.wa/0 ?^- &L4Tge) <߫xc|nZe3*oGDf*._}cbIvd.:Ttq{j' ĉԝ!1ಎS#0{-י "ZFw>keH_MѨ$Ƶ+}t6WE\X\#]xxfJ#&#iWg=O,Mx@!Z= 1L _HPY ?Q+/.Q΅ 2$L{ET.9?7|fTzÖqeQ\}4& ?hDXv}4sIɋfF;>ٷVgQT7 :!jOJk gbϬM;CM e3)Gv]fj+17^1JNNy~dÛΕ@ĽI.IM!Z N{qVT{j!rcص,T/&@gOH {Б Dv[/ti! ꇩ+u_]&4_e+w@@.E:ERSsvTEo>Tt0|WߠmU=SBeģjҵR^`#]j ( N^5AUyqR<3]&_{u~ \ $H%l);ՓQmTiWſ^Λ7#2o:a2_RX8T47kq|z tbĽ% 0F[(' boF=hHm5ܖ*RˏR `;HzN.]5 r I1Zi  ltͼc'E ;!lˊ`3irNlĞQ3eO >%+Sb1R@P)%wR-rYs##Q(4W9*Xbb8;=nJ\D%ajQt A.bŃKP =u STi&ubH3s$6afC%C)+UiAo Nז#8TA@DyJsOdXP.nMM\b]QdX-HviīMF4X[RC2~ײ?'vh·~t}NJU.ʐ3ahP&^NRaFpb<ǭP~,x_1 Nōn6]f6q[ -/M t2o ?'쥚X ܕ1k HQ'I({n`w Sj2&H+SU=t?'6E7tJ̕x#7˶U7gN#"V-Z|{$)]68s/_G*ͽ ;b)u5 Dy&bjuһP.A3OL/aFd3m}(xw$GQ<}O Upk%ԱcؘvX`sΧ.WGmxnSlQeՌχT("H~=:}2;nT]F6WlBʉL;y!vN(|^]|}XQWRj=Fq|L¼>^/t vj4P5 D<D $8BW"FsEdPBCȩ*c|g m,LZ ޑ{'*^y>9E ;kLj?Mhg,1xlL<&~7 6CKEcy!%`Tvy2¥Firu)^[g3k_ZͰ5 ?Y+KÃ\/,;܍,6k1>aEnF@`~'Xi6i;" GSZu9 H\ `F7~~ǧoⅮSx oRW#)Xecq?*iү4X^-n힮|L:[$` YrMWAM膭w)ʁ,W˨)hPzyȋë}'EȽW $*@4Oelv |@ 蚩o4*3DF?8x#^ rͅ˼ZOzfd] C`r i5.YYae!2Sr ;бzr+cҋk~魊Y_ JT/vW X<<-NWOA5/êaԈr*]r ]d=4eԍS7ҝ r1{_V3nlT6lZ!QtC'ZBAy4 k"!_ 3( n2KE<* ^M8G(b{Tى_ꅙS"7y"FzBJ1{*5X!lhGBT<@2s@rd|l[R\NDoF3^wW]w(Zafwz͘- i.(\~ɱ);-u7N]YJ~S13NA vlnrT{Kh^.;@%K^ {IQ!˔if哃iQl*x'_,\=(oF!80LRs^74$I^J<ԇmw+7Yo^]:xEu,Wj0JJAU-}b ̐F9Kg64&I]L5ڙv5޻)J%<ǧ E+kP pwVGoLʳtDރKt`l|9 ˷N':Oh!`<{6UT d'h,0Eh3SS=&考fjl5Y^?N!Y+"cЪF$2SP^bu?QQ?YqBÁXʀ:H'F szƠi6BGr^4dNSZU6;~@SLTCM4اipu31lEZm2Jеc糑-ԯ~n#AvUQ&M!JHh$ntRLR+J$t%Nj~}|2#^F)a`j)~`syNpjtP(`/PJնxb,>CB椉[(0SR,˗!H)3RZdj֋|7A#"j,_n7ӌ<|aÇ|ӽu9}NbL?VnbZۙ9v 4> ?3dYFБD`ݚ6Û1k^3"F3b7T|GIs@Q>{{/ xC/:U.\6448*/ VaR+dt} HC\(>>z,u2'*?(T*[R;I!Ezx)&eTš;Π@ZêoNI bWcC/!MӼ46 IÈň=gy,M9̶֠Ә0R\y%dELgi\6e9&%H.4|YfDZ=0!Xdw:LO5#A铅Nf-3]y#ŝa:?ϟ>(" I-UoE[9zJ`U'2Y5j)6yt.14i9qƺ7+dC?{k?}C21#rX6"?z^ V{OQ=N1j=C r8๯IfEl\v΃7B\h%s8' 1pů.1je~Ǔ"N, Ui!uBA3tSꡫwM1yJj6 @ZO%iH=D{'S`rmt7K.aR>JܞuZbс^/E6O/l`/>[3{ȁM`mC:PgzRz]SHc5mE3RD 2uşp#N]9U*oN]3<ꍲc=|Ҍh|t~}Ҭ^?a^ͷo,n`s1W6:>!U5eagi:a Mc{d`&e+oDfה_2gx >;5ȄDg|۲L>Vc̱8$|lW:RCos/~ So*ďXt:M\,Msc4%QMbˁT=,!9n4Iq] µv=}Jh;BD ^녊dv#UD$+9Q@iDlAm"VqV`ZQ?5j#GRbOiҬJ4P5n THCw0 nBf|! E?j<_M6f<عH/n2;tCnl?bk/aT`u#I&bAWvvJ+L;/5/YEV@0'iFpIAOTO@t4SGrp~lbњg4^KK" J^R=4MA#{6^9@.t7nFCiS߇I^$l(Ђurᤑ^erT)XV3¡烷 4Ul͸͍Zwxo fm['.?oro* ._ciQf)~{{@%P!ɝ!6kа 3/6{Rh>7c/Mw-έk6|9ȧFQՋw {]9ZYY \[s%h4җ1&gw"[z%/%dž mtn aTq#,O0J׮>Ҽ$ڑ`R;tAL"ATCt֌@0TB fٟQ!Fakv|$u>I$Q?^9?z|OXX篅+⻫ xm^yN䥩9^i+j8Aσzy2^^sΫ/'m?BuET \.Jťb&db#6MT=NQ*MZ=V%>€xߥh4+IDL4H9ID ^MGy4o$w$P嵜QӬW)b^FE$  kD1R;;h!zJS &Qi@ppx7m=_3MM\_JiЛvrsuVLD#ؚ>1;K+\¦dKk42ï~8~@ 8I Ay|fՅL'UA2HؽЋ=M9[UD:jvh^U&>K+;O*c 嘼&*rp|)7 Džj%zBO\>^ˮ}$gM%C4 bW/}3ziيZO,?/DQಙA5ǫ /)]/IoB,MEhVas<~|,JL4@Ƌ.~P`JV>KYz)Uhi@C9?F6B)OZKI?|{[ h"_a> v9=ͦS}W? Q-6 U8[o{OUu󨶵-?6U8{ʚ^,^B4IZr~Rs01Zt)ੴv5;k YET Xh*Qm{K3.GB10/'x3\/;Mjw2+ `?,yZ 3զhIџWLD,N-"PDzr8N90ktFxc+VPrw-P%cUR CM<- s46 菁IZ_"篭_ehVa -&xF>7b/S(@ͅ~$wr=Nx5,ݏZؑ#&UB<|&ӌbۿ蕜L:p]ׯ.b{zɂ-oR沀kG!z=:\~:'/a*yǖFωX*H:Trno"_o^fqG LgVplY~yۮ-6NZM <6;:ۄq*]Hi4BNbe-w w[ң=Zb^E*ɪl+ظW=*L6 a7BīJN ;Z^;ր1:ASwVSMZy. rQ#7Zxk4N{a0ʍ _;S̤v ve՟cEZ)px+ G*IvF6PW4v&tdk /wpg\j&C`Vk;Y6Z%ƻ%/:j'Psƀ™XZ 81^ %l#؄D "@E%fZnRyZgz_nerlԦH\KcS𵚾:a=kywhW3~n19"q/{9~ljP0+uUgGp{gb4=+mL 0/bpFZ0PMq@1jF1ȱ>kU>gp~MNdNQ^`7Z#b"pՁ$ “>ә̫JVgygWֆ"ʉZQ)߼: @Z;e1jԖD[b)97R8 8.:_F < W 6.U@~l}vxYsSTSb>Y?yȊƾa?>hg,h|1p&6g3-9 1eX+"#c'e_8sS.o`q=X2ѼU4;j5Ԗhs^1 ƙ--&H=-HJ٫D߲NzQUWj@'9s>%ejx+()b m=x:=M/4Tͷ~TjWE d#vR9CkX:4b`oU>;XmdW[rHP OyDYAA||+4 B$1Ppc ;4ny7L,clE?یAAۺtX{mAD)2))&BRp O|i#W*]F~ sǷVO׳wV5iʇTD*qx[7;uAiUoQJ_1u%vUL9д4M.2ƣu}ׅUBY,p15ƩY{Z-: BNH>(by/~_3M*p,#Omp6·N<Qj UCZŊF.4p)5qyVS=0h 7^, XrK >r#S1O1Cc>v{ES:~,qaZ/^ٮ+rJL5!&e:]nʰ㼑=H"|ńwxЮ3"<OP0SEm.6`jRi >o) ŋ{X1bټy Jt7ʄS8\_kǎ_=9?ʡ]h 6ByÞW7S6kmKgaY^݀:Oo .ع=6`Sda;EZgGAs_5~Z5|uX)mD]qyRKK>4|&. xW_WәX_(:ݙ]5̟BۈU?[Qhߔ>vt>wtaI+)NzR4Q6EԲkyhv{_voRY <ncvvoBVu`ԋLn@ Dڈ }\qu4;KvWZڲeASY?Ģ'Mk1cfhg &PQllnoɓ0N(fmG &0X˳fx=-WMM- ECO,dnpm'##ౄ(*RGQn0+J\4ɝ›~j>'f݁|xO] 7u*F'~{Vj+iJbnoZ\ևD3(@YFOB3_5 FҺRMɋ= <朗Wu185NXv$?$ &P|ejp &پ&%{/Jbϯi>,sp%al%)ҮUaO:mhr<5sD0_!QS)RKm“uJ]%wP̂QRآpN]DP|7/hTIuaV&[a^QQ%U$A{vb4UH&sKJcI7Ռ+B k&R`+VRHG\:. hgo˶4EQx*̇U^a]妾 o[E(=y@Wk7e`Ϻz7tWÕKM@yGe1׈&k ,)}+\ы4ٰk3bx0kCCM UƳ meϳX!ul"00EaǛ^ۇLW7E(0^>nc}A5?J !!gx:sTb7.tqz$[K99?v2V5 ^-fW06֩r5F֫nL'bkvo} ǎhY5 kC|;N=Tf"l Ɣ?:ި#2t?Ϝ%; PjU$]I&w$bp͈w6w@NcP1==zgZךܨ2«ݢoaQXcJS1N#nE4 `o4yc*mW3ʖcuG\#+*S 7QD6RԿgTm08Q:tw֋WuèjͥPbo~#oK5ȗ7*!iLX]x8a/DdȖkpuy) eQ)XvN^Yzbgz%ş*of-֢19w+@“HQm56jUu`JDctPpҹs|DF(u~l=Rk .%l˭U#mdUjLQA29>HL{x]dٽ1V:{>2QnuL KKuccbc^{IY-[͔ vy5$Ù >39^`|{/vrV_Io.! jrjm %NkG'uzrD v3lœ/Y5<4a~c>h PLR،] lG}֋1] 7\ ( [`˅2t%L5PrӹmGꅇG uQiكSo8amb'2K}&$~jorLwmΘZ ceiiAM2w\.yUveA1c#!"L`6owTz:h _"SUn]˻'!57U7P7 G=sJCcE| IcrթU xEBaGk*>]@zv TE(޶;e\KT/cWEܖ(<ޙ p4I[<5}53W<?_ݒ^r6bn8iq^cɘS 6i::Xs٢]NNƾz{-<#^ao@'.1I>WBuȑq Kt뱶P%|ncwvC'ZF[vjQ^{-T)rbw`Ւ<}ӧp(yA ޱ{PMNB-a ϶*A/1hf?8?2[yaջV[1*EJݡ#fҎi2{Dn{: ގ@ꈺ؜5-Os%GS[/dLw죡-tOc~ΗIZ];A17E~ʮ$g{/ϡH&BΌa[e Zh fz_A$n @eݺ<]ޯ]L`r|dAt):dtipc.lWwe̟N%m(G6]c*Olx4ӡуC]"+Ed_(GIl/=kP}n!d6+Ш)TTSjx73_l'␺N:af+ذSyM+yCqfmrA'w?֡wa/oF7gbs*1؞gͲK \e5iU%3vV77&Q-(c/٭[MшN:ȻSCa'5]mWPo{m0{x7AaĈNPiD2OWjv3(Q4n{,y҃[sr>q8Qg߆IN|w4,*Y\hVIu!%Pʔ$Tvr׺s L6c4$vˮa(g̫nvuҫ"C"lD)û/BkB X&f9|SzS\%jW٫.b/+,)57; +E1ނg= |{g#/xN+Nr 11Wڌ@}Ķ&34،$[ĥPX ^;vgP KJm:4;|:dSx1סW' p{0|3j |st?P^ V;?Jovjʣ.znȜC?7%xLEcD iKʺx;lr S<|(9o%~5˳΋ Z(/'3ְA9}=l-W`P~0t2|`wKu6ҶSlC5~l[tgw&fPY4bbf-P5KoI׼K0axkK}T'}1(if%a4_ K/exy={6tltZk \oدK ivQusr-#Kz+nn#"-H,n\Zy&*ꐤ5q/+#ہD~^͋^ Yxbwn|e}~i..!@t]/xuV,L\;C0*"%CNi{I2R ۻC\b8v Iz&_ t%\iT_rdOa_ُ]K-u]OYgNihXD$ N vuWC[t5bX%TmVc 7/-5}Cc J]lre֍xoo|yKŢM^UVހk)aKfz1Uemw_lH57x#'NkD-eWFŌxUs;"ΘCbwY5#gf٢M[{eB7U-u1A 0 d \ri*[v5zzx;`FLb |js|d={i^k L;t@4BТ qF;6\f#ό1^ 8^6Dž :f]ҌpMIf[ _/0^,N$Qgnyhe_c W5"?2gUċ ^LcP߇~f]h3 >2{@r-l؀;n/,?ie[P1^7%efТuɾvD1*]`uKrdӈ }L {i.ǶlΕ_N>xn#\E4K, (wb+pz7;3'5aQWeL@gj2]Zrc#$b-a:ۉs֋Pn VgB2USXk"-J*s0^\ߺu j64Y.CE$돢_uށ[` fy1b8۪^0 c+i0EHײ~jg>-<ԭ_ݭ-qeAJ6^2ZVИ? 8s _`7>Mf!an8~0Ȅx4|B,cuTlXv(~^&O`?icTz/ͦbjyGHbE/*]\M<x r=71g}zV:ыYj0=vKh3C'"RqJϋ'<_7WzQgP褼\Oy5x;SHv;ۻKyo^83S'n~V'?~'<7=΄{G<$ڶ}ݶ!nQ[ohw)O -Y~klߛO v\rgRL8~ ?[sO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=iO{Ӟ=?B endstream endobj 304 0 obj << /Length 233 /Filter /FlateDecode >> stream x!  $$$(((,,,000444888<<<@@@DDDHHHLLLMMMPPPTTTXXX\\\```dddhhhlllppptttxxx|||t endstream endobj 307 0 obj << /Length 261 /Filter /FlateDecode >> stream xUPMO0 WJM;Hp$!JGQviUl"y~+JY<#l. ō=<ӻX /ˆm= Z+[9vq ۶;m< cdr})EK{  WBݓO½nXICoatVمb1|@ 0O+ڏ1%-7"fep46j~RR\]Hjb Ͻ>JqBn5d endstream endobj 281 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/biocbuild/bbs-3.20-bioc/tmpdir/RtmpQ4K6Bk/Rbuild35d24010182fc1/affy/vignettes/affy-018.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 310 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 311 0 R/F3 312 0 R>> /ExtGState << >>/ColorSpace << /sRGB 313 0 R >>>> /Length 830 /Filter /FlateDecode >> stream xVAO[1 _c{ 86 iV$@- gk(P{gN 5u_llM3Ɂwޭ}:Ug͐z;^:R61z4 aa}ŋ=YVzRȁuvsNNEgḣ;d|z=5; VM'$JJ&X@t&s='NM Ewzܛ7.*.|a0M*‑KR,j~@9Rŋd̎_1kK= PUz2Xc*5O!L Ez^LSQ%&Z(QQw8*gGkTg$hX#N?VW|6t5PUZFv(LGܭ)2>&+M5X({k1c,Jbā+U~ QY8ȮW II['OľhXgQ2p֊P,s5yZ߸^Lqn] #d$lz+AaCxt!ۙI>w>:K:F"8G!/aS_wEekL4渋wF.o D>=u1I=–4v%lFjyAaK堍 A66 2y% q[_h񰳱s lvwkj vk҇^Ckhdq >W'lgS8>yKZ<>\bJoAFW j.زi@z=r,UXz`M endstream endobj 315 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 320 0 obj << /Length 1437 /Filter /FlateDecode >> stream xڭWKo6W,|/CC@QAk=@뛓-qBJZ';ávWl4hOfԇwu96)X0a]mKBp.JW;dӘ~~!XT07,cB+S`dwJTJ\+ ݠs۝3\sSq)Om}⊋(+fT$e4y6r;b2!tMɕ hQG`͔2 rЅC(R CCބ+ٵ7G7eYQc@˹3%jX 6t Ɩcܘ{Fv@vb&vi\M$~K4?PdzKu {P~q!By^w\tq~J[+czW S}WCy2UT}j.bkM)cQnCĸ?n& u#X+ 0Y|I ی0g03=XwlpFYQvǦ?xתHn/9WU(8X siyU18tK(H0Phdí}/lxޑ+'/:XvO;k눝V 5ԢtFS PZ>DPř'ìz} ϊd WK&!C,,&n mb?9l5>[9kԙBNZaX2TV#:>ݴr(یo r}WG)NzgE Eŭw>reD endstream endobj 327 0 obj << /Length 244 /Filter /FlateDecode >> stream xU1O0wW9mTP $ [BTMn齻緮jS C݂b" ViG^vƙ!V?Z-?/KXfapp׋K n#,ľSR7Ui]j ݥSswf/yߤ,y9nx9\6'1YJSaP(.A?V endstream endobj 317 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/biocbuild/bbs-3.20-bioc/tmpdir/RtmpQ4K6Bk/Rbuild35d24010182fc1/affy/vignettes/affy-021.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 330 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 331 0 R/F3 332 0 R>> /ExtGState << >>/ColorSpace << /sRGB 333 0 R >>>> /Length 804 /Filter /FlateDecode >> stream xMoA +||""(qH Ŀ]7U[):y" 5lxmkE?L_hfOyl?|1ߞ_ .7?WmlA#x~P^?zebNp{u9RS7@&5O5[o/<͏o _.;q?|O^ɯßWbÐq"`y pެ eLl"T8 7B(}*ΛJ27!\%9 gC6}6I[Rx+h&dIDxTs'!QMp|;;7Exi;*T(z a ŧ$lR.J~ΥIƍR,JbPeb_vk(Pjr KM׉ք؜> P(Ͼc6,CCj$^k[jnvkWn LTxI^`I (1M ¤He@49 @9MF6>*RB'T* @*;mP  7Iv,H~r#I _g@|OI  q)J`ZB;@ oG,n âD o0h9"p0q(i+`2 endstream endobj 335 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 342 0 obj << /Length 2199 /Filter /FlateDecode >> stream xڕ]}e4)4-p{H$H[$yJY,m$yכ_P\b|q>u{w惱i76j:+\6w(dl軮?M{>]o>hRdIj٩T(~:[uw;lWCVPF`ExPvn6V%vCEoW)dh=9X}}s< F2Ne <LJ]3yIjs*5KFw 2:jI6Mܦ*Un8^RfĉLNM5Ģk;EEk;b .{/"_jX^`,vHnN bҠw?X )kdKFNEq-HcՖȋv`1ʕ pj_;"> 2cƑw5Z98pcmDJLd*+)&jXs|?cqxylu\ J=as̽n*'.e@fš.t{x}X\7u?In(Ca pr Nv dQV~q[w>w*:.koׅT^!\ջ-O5T6D[}^_o٤͟g%F$R6_MuFAHǦd$ 'K}},FWcuN سiX ]s:YA~&(=fS1hǚ6dL:뫼7JXs+}wĔ˖N1)A&..iCe+C3$ֳMuPze}MFCkn$?]JGY+,<%΂` $a{S=hp.rRtiŗǩ ],u l-PMp4'R7F9a&r'"mEZF4X>ENNV .Ym ԇՀ]j4LSTysH ~y|Ʊ,Gё*oVB%!1sn0iz4ykZ{rhU(nNHaԀQ^ہ;[NqrbT_i*]l/Me={2HW-Aw)Z/%`E lm%*KS`^8JbS`aHs6b-ACq>aqq9*̠niG~{tAg;^WF*ІjCicѺIn!J@n7_M 'F,|?fBd5\ taXhR)/Ć&yE*~P0G+!1Ckl> stream xڽXKoFWB;IuHzp(-I5Β"%*vs^vY]߾z}cLi+gY39Q".LΗBp|R #mo},6泥LXC'o)p, %lv9~FXU4 ȏMA B-+7U]$mVRmh! vH+XdeIt[1)-|!S7&ĕzzv1Ɉupn- Ck뭮 SAU6HIF3lWL"NAr=yMviF).693Ff`,,u$"m3hRjșj; Lph[L:YoPE*B_ٸ.D e{kl6OIN GaF\le%ym܇N|TTttI/Q7vb)j@"_쪭jCMD@oQ cɫv_@Ylȹ!'ʘ3!JN4CiPmvHߺ<?B%&iIM!釤HOYGp5{Nf̩uYrA;q)?4#?̳Q_IK_-4jtҸowsz/㮹{͝U:/!#sWN)+^e:=BLqڏm[tL>W  !}GE4פ^ V7ڤgWExC;v"oJP9xFRzNe * Ǫ˔[xEKw7)F( QP<lh*_Jk-z*[V GiFDӡ58NJ0yt>nj嚱LY:dA3Jh;Q*[{j A&yJ*稢:](v:#}6-}:cupYBwsx2ů*G"pecRtنt_}uPJ4 r(OkB߄t yh/= WzEG1 L8B~+[rjQ*i5.@7YݴaZtts0wh& {UG*^Zjs1?Xtp{zzL辆9T;؂U',O4%3s "٠XTNLP 1"s\-|dcM5vSX4̸>̋}V]T\p PrQx^ENaIY{Ϩg={rťN[B꺕X+VHd\j;n4@@@7wФYvR觔yY*I3LwGèH_NP\n\Crq pϤd{3 ),g趬/M5r5ץHR4$‡qS0ΓX1{53 LoɾGnL^u݃CPRg2G] j 5v(dImvߡ[k8 \nUkME Nj E_Y: tIC`P8h&L.c5~,Q.^_1t9mQ>NAW޾`\ endstream endobj 358 0 obj << /Length 1940 /Filter /FlateDecode >> stream xXˮ8߯RlomH2 :"bѱ=ܒSJ$dS~kwY&rcs;)ݻd:i?S^wa?nۙfߗ ӗC<&R$`;L3-|QOg-.yf\J UD\Yu_!Վ]faqؚMLxƍh3p[%&34I1i|}bC94Jhg\P+H~ˌ^=rY,ϯ c5@j-?T. Ȓ+MpּZj.UF>OǛ90:IO{` 8SeCTmS\OڏLct-RЏIwQ U$⶿^Lh#+҇aMy]R:#^8@QyӁ g(*Rކcd EBN<[efm%D iki#y?N.yѧ=@14y>0\Ow8Lwb,xFBcD.B"F ) b!Z8<02G S5%T(D1Ρ =2 ǾZBy%9Å3= 5[#x.ٽ k.(0x.#*Veix3Ka,zvWc[Ԃi!!D#̍t^3["~C&g%mJM2#mޒ+mY'/0>7a/(j=$S_rO3EA_|~J0Z$>`YrGϒ<+ޯh8p\~#SXwg^LƔWU\-bWith? >-221&`(虡0"젎|j`KNm˛s-\eKws,mOAGe'~ϛW*Q<^]_V-@=AZ0+vuxd=Rh̙fZMJoo̅s Ztd-8#[[8L_sxHʪ;i(i;ܺ ʔ&:דlf1RmKE%r- cGa~+* K!kpX ]ӻJPh)^<  M#? ΧImڇ~rgMJiMSϼwg}jK72KeW^^ kOSAfO@T`x45¥n.L٫rˮJ fN]RBז´W>,һnrM;c2js$څ:ӊOgzpKꊇWs"wᒅRkT> $r dpg?PAzXIFCZ.E? 9aiBg_u9=u1o -0[\ے|۩4SX.`[R TM~6NE>!n@ /c v>$4Kû鮄[c~DHߞtW>%Awr)_r+wЬYGWf~?1RM\vKxVy!-#8ݵ EO:~SSJ.@n.> hOGh endstream endobj 364 0 obj << /Length 510 /Filter /FlateDecode >> stream xڽT]o0}WX$bLR'eV'1WilL%U=-Q=瞋sK6+hN)sD@(k| #Ӡfi|߉5&v ߟB}Ҁ9wիg~>@ "4͎;9|Si<[L}{F8:Rm[3Bge^m51$Bop1'0W ԾHދ|`kw&M'ZbwsfQ|4DFi vlf1{͠d]V4]#SĆ|Av#Z1#\Ou]iKKlmm$}Pn:\oYP.+nJ`I`Jz> /ExtGState << >>/ColorSpace << /sRGB 369 0 R >>>> /Length 3712 /Filter /FlateDecode >> stream x]M] ݿ_q7mm=@A5f&п_RW8ӹNx4Og$^m~{}Vhq!%l=om._]?~xqsn~|»2~_rv{]۩nw r{]շa eoa[kR)ؘ? Сq Q^ Æpz* WD#tzSؓG=`B m3U}2l5'ٛ?-io6W_Yehˇ͗p-oۛ'Kc|\5(MdcUQ+PSV8sjV(RcV8s6SEF- nOO} ?=Nhx*{he+w)cVO8Wk8Wȼ}k8U.((]+Ź+v Gq@"ZQ+/lwp Xi晘wӬ/Y m>i`Y<<[T5H<$/8_!~OfhX_TO6:Lj_||vwz'֍ _c<v9ðl=;CW<Ífu+g+JAl(Zhy7GHuJ2+Q ٖ1 t{kul܁ruh Mߦڶe0jױ|!txuC2 +bc#fbN>NP5[&N>{+ecu%״_6tV5Tۜzc&Q|hE`A,_^/`l 68Τgt]#-CpKE|*Xm&+VMN+ei }XǺ b$-[!j]@-c))zPlXPfc ZGn2Vѵ=+qMԎ*XVQuxw l a"(7r~=e?mfI8L@?c%OؘЫOXH^Z*7;ب'J@'H VLnSZer+@oסcՉHL0p!5 8_7;i0ڬ$ mgM<.I;\2@n;"+ K't[6/՛*,n)wwƩ.gK \ed^3$GK* .M 2&9£H<LUKhXֵ%N`%3’T@rc@rx\ { e{{-<3`>FGuk#p{8!gu0%nH0惤G5,Ͷ`łs% y$(Ƌ-O4zߔ($O<QLAb>A0w&$,@A%\ww(xwfXKprNwbЩUfA{'fB!uB,jyϕzQM0o3ً0XB&4gݎph.Hyah:DMhpLz>rm+<`jgr( fizzloY6dw pD, 9HNL ^B*k6h:r<[g\>WR 1ݞ(39+I$NnsGJK~fykȕi^dսf\24Nf#a.K4vM\ȷ`N--E,{t;-+=gE>GH4')buKKzGݸհv'+4o&c'Fq5fQ*0sYWQ+?97\!a % 8W;n9B'd[ 4؅agfgUryJUAL4ZEyD0è2S9hr*VQ629h'aT 2:hP]:TN: 4Lxaqb0?E|DgnQ42ҧ;cDzA wۧNa}"B Pp.Hh"@` ZPi/[ؘpы'Ϥ.%r!2aJRז|MPK#2Y_f[N&2ȇ,ɢY* Pc4Yi,AC * k63HNU%1M_fio<`j,Rnҧ&AR&^j-dt+'.u!`9,؀f%n  sq^J Qhw %SJU\0aJA49:XNJ]+*8 fN`Vu^ gRZL!~u W), vv-gLȀ5cZgkSN_t3(da$}&=Ar?8/S 0ĺLE%t97Zm4sdK*R` ˤ IrnD4;| 8]>JP6渒P=iKn F& 9XOW0w&,+>< n".IC^B,7lr:ә KpSsT|RWXN Ȓ,-$$ҹ31 i Rm`pȓWa }Fg4FNpyˤ $(uo[װ>uo^W eڋ+``Ki&jE= ^X~+$]>Y$0$}EY,46ENz]KX^Y88O`]dSg0)[ M/A0:ᆎv'Da0c3"BpYމp Pxj#l-dI"w?Jw\|u -Sl8%YKNZ&%f{DA`\P5AճZz/wzb9pdݰ1Q#uGrw>ej-&l,#:h6#g"!d\) LI>`2Be`yюe"`k Y6:y?be"<\nbIH:,^rS[zY®[P 9 ]T PRPvD ؾ$_!8oD[b'&v endstream endobj 371 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 374 0 obj << /Length 1645 /Filter /FlateDecode >> stream xڭWKoFW>QE훤8iЪ'%b#I}gvHJ׎"qgg3^-ͯe:<δzd4Sd7IET$EnDt5MQq W Q2ޭܪ_ xos}udo]{lk@7-KQQIbq.Pd^ӑA&XECR;xD-|fXP@]-X,~9`wB*|OT<շQ ʳ!}IreZ/JbbYBf-Eּ`#"i O]< lJѭ@|D.L uOWCA@# (|Q.*OR&1ٸs x)RGhr¶UwE}[@ܣ!M/TEO`AJVa'-$: جW $'sIb62TtGB@u9¼;VO8 Ѝ^&N//3#-xv,G$ ^3 #hHx ^<'-VI_]#+4@ݡm>\$Ro=pJ1ƹ"1I`'$|7|!MF:'/pNqq?p2v~ 3&].&J+X:bRs2bzR#,(Y̜u`,́Y1LY%YA4MIP{Ds endstream endobj 379 0 obj << /Length 1244 /Filter /FlateDecode >> stream xڵWn6+F q4+p I")\It%'ZtuU@L i +:onAxFtQ7WjC8\:"͈HD@N8)Ij&de P:CyV6Ci4m34FM*&(f̒34F~`42D!!jCW;p&|*_ waphWfMpGz m>Tm{:?)jӥaXAOy qQGH( wv(/A]aR EX<~;콹$I1`)et]0Hȉl=jun >k.6!+*@ .$gg'ŅUSvUHT#> \7i51e@yh!/KP7y@Lx6QsFTZD"26oG4P0!Iq>P8dP)mѿ~sUCy|"&hÈyrW8~dϾ~KsiyZ@3t7~T䝸/ 6!g<ү _.qWȅ*–|׾;Ao.z'_0HIaR5@]~ ^W-blRA uנ Kd;}b('ŗ\keO5;ma>VWnn& ܥJ$˝Nvkm-yv(hA֠bwƻe/|PKơE]\6}\þrSك_/.^Wby8%s|Eұawf_!iN)qtS8CXW5(f_Lh" @6\)L14aa?a &`Tg?5O| sxХ ,+`)H2Ev sHOpqkCe` L ib`Sfb10+TIbKP. 1tP}鿵ajN'G !=450LTD]AZk{; endstream endobj 384 0 obj << /Length 1140 /Filter /FlateDecode >> stream xXKkHW fa5u òB CLf4% 7~UݒƖ6$Uui8{k-VLwXw}uͅaŀۢinKنedewǶ΅ ZwEODy<+:ڴMU$.n%M_6u/k{TAzϾc$B N%l9Zl>eN!i?AZ8@@us qy3T\Q ×Ҭ3B7sDMbfyBbvvxM =!0@? jaqY3 w "?NESRx{ 'jwCnX @qz1?NK{NKKw,Oϩ5]{W> stream xn60=H+REb].zHȴ-D\Np(JAnm/"5w|s&x,E^2ȊX7W<7Q쎦ֻpe` 6YdQp^< ypuwb9+Th9y\{)rY=d%s|@'@%5mn8> stream xWK6 WHmfN%hYRw}nS{ |ٽz.7Ynb?&N? @Rl`?w~0Lp.1o'1{;t}}a,mm`:SHx#$($gkZs_fx/)-d4+{ ]H:7l-0IsEx[Z3M#P&pˉL1$鏴5;>yQAtppcO쉔iX?SSjwLD#'eGMNpteKkzҌTiujj5mTUA+\+1= (@!S] [E‽ F#r3pp'H!0t(#n|E\("CYvv ܎.Et59)b r_A-ذ(쏪5j7@gS҉1|6>*;Gi2\aG@0ngig_ L-Z.'dgO%ϡ@C:E"j0(ThCks<)|8BCTYe9L  BF],PmAx'zxe VX˱an*5 #F/ 2b&Snck0>4 Li:WJ|}|.Zw"Z_rc=ʘ.04>&PhyʂsG{5~y&D :'Or׆sӴp݄?5FXk5"yʇp:lZ%"2?g q^3TF~L"LU|LE&QHL~I%IM=*;]je+)ԯ^gp 55FU>e<ۣH*2/r;S5 kƢb8"Żfg=l/ck>r*?tP䓧`_F9ÚZ[)K l:r{Ӕu:W\UUGm=YBм2f{bRJeVLkˢ4pꩢ;<$~. K6Ե#7nhfOk.55% N꓍!TYrL{18)x#?P QV)FU8vkrmgإ%5 ݚj$]L\El;ȦTog?,j TS'<}UAKŔ ^AV[q"]ob8AW#B:`Vycš,n[it׌$@8: taөf8J8ĉMPxqxѿ` DŽom}߅Cm_tD]͇uܬ>6fd?["?+GVl#Xem1!R\{4 endstream endobj 396 0 obj << /Length 1924 /Filter /FlateDecode >> stream xXM6 W̚IQsM4tf:h%%gJ7~]{(@ٷ/s7 "yY2Vto_t. 4Hi֋Y)Yti*kyqԬ|Xl>srYڷ;: ̒j& xkvfL<ut348Hw)k\˲Lݔ*ci4̪L$$]QNag+ Iv; h8`!ur5ٮz>Erw=Z{1xodOeV_o,f=LKxrT9l.3l'=oInSZ[- nAc?4򶶦3/SuqR$m1zLԹn<{ėܫc_~BAr L;өu7Ѵ3=lL[O0aad}YK>loY^9Sfpc$ء@JU!dOjxϵz9tv*LJ1]nr*;K0s lmp@8m 3p4#A@dxp#˶J_aG<L#+AK~-`Cp`m41++Q{&b.㇀#FB5q?qy™&4#jm(tHaQDi~ Nϲ`Y1Bt:wV$o]g*MZ,Y\\oiڇS gRe^^_g !x"7Qu$`H׌vz]R`ç L>cR c ڋNHނaif{Z* D\&v(n |pk>2^LӱˬSuBpz]0"܍m1SV=dHWd> )lHFt\rl8d~$fB2/p P9#g<"U endstream endobj 298 0 obj << /Type /ObjStm /N 100 /First 875 /Length 2139 /Filter /FlateDecode >> stream xY[SG~ׯG󐾜Ta1Ue{+R< Ҁg#44:~3B 1lR*t>}AhAQ_+I›gg<5k9 1"ǜ:H8a:ƙ1H OĊvJ<Ӄ1a2!A:h!Ȁ,k@q@S! *K8ӂ=xł?F ƁNa%;䬅ueygx0i-&rD~0O! ٬HJ9K.HRE4x2zs[U'bR,5u"b<./.]'Wo߽ewGB},4@`HiP`x@/g|*0. ao/ <3S@y NnZak?Aw2+lъT䫂!}NˢQєk3th뻏|@z/~ןL2o^h>,I'Y5/sbW.ۊZ-ǟ˦[n G=Pڍ({SG񞪓C2j+o'pqV &I{ɑE\'A|ר らiz\. -!TMQ9m2g:Q3&CF:2F(  pX>caՔdktdU}G(5+Bgp4T\Ti)* l&5 HP2>fu?MrMv@K;_Ļ%Kob0f{bhM}`7&%V!a-H qעO&>kuGy]b7tڛ3?g0HJdLhliKm|^g˦k}DA6Jd%9JHzG+ d rDAl3ۋnp\)e&Frkd'3a#"o7u9 5t C( |D:bk"P}5uńt@/'|)`6ۻ~U[a+/8 X1YR=O<y.{mEJu-*E.#*v ~ -iyM4mCBUFZ:{0^D#B  {,3?Q@ ! [$YAKxZ vC}M| MvC. {dr9v/­=~Sz ==q@)}:_Sû)Du uUH2'i')'$$]sZx=ٞ|.$ Bk\:)H gFmuߞڄ>?߫OMsZH} w45%:*Ԟz{>՚Yk]򔥳ZD`C֢6p}až:H, {v@=lP1wߎOv endstream endobj 424 0 obj << /Length1 1470 /Length2 8150 /Length3 0 /Length 9151 /Filter /FlateDecode >> stream xڍwT.8!V$@($wbšZB⥸; ?}ֽܻ+k%<3{ 3.- ܼb9uue Ypf6`(D!` +ăO TB*nN ?($V`[:7@ .^0a6l0t3ԭ mP0%X%1n+g87f/ #: 8 аrMЅ!<` lR au@ ;w!0O N 7 Z9VV`'+֭2.87#2۬:; 80þ{}/!P?bk >R@\@~>.P r07 l65 w7/a`O)ߟ=?( q7i*pM_AYY'y~YG wUA2ao=!l,}.o <|'&UJݜYq+g߈!@0 ]u-q?H (+ W{ld_9! -(yÔټ|F+d9ğm?P@mO ~8K|S[ux!PC  }߮?/G_(a x6xѣ @⏸c.@ O ,F<Ա!G q#>" LD¤D ^ Y9+_}6z |Sܱ~={y:犚a=Ra,X)I& K־OiC\ IJXFgW]Y)zPoSis|zYTUΟ؉ÃK4T܃7O Kxo|Huuȱ [n1; l;@~ vN3DؿXV l1 QAZOWc"4n[TBK_MBeiM0rIbf@"d1{j^,e0 1UhL!Fx/t"J{K̗39ϢJZ^gez+6ۦ]ֽlrl7v:v<eqŭ<x'a:޶u[&R|ƞ{ΉƌNIByBhNʜ BVit@TN 2u=B3#k5I2fy!%mov[s3K y "$˱יG$[WD?hl) U2H)2k.q贱Z|^q]>ieV;FYC=$`y9s2%PlŌdVmׂ6 = >?9Lf}M*xa~B]0 z^)C8)\cKIU{Dd@ҍ$\X>KP~ʾbx}9ͤŬ%bwZox=bq^HE,`c&ř1hQ!=5(U=ۻmeXCaKǛNKW$2Xdn~C1rDOxnω?eu9!}5ٍ!+͏"ZoO?&-!(GWtsᜊC+g$꾣R꽚ZOEcOՊ7 3X౻`^ {'ϐc׭Dtuʱ=7[a謉F!&žjb%-E'+`Lčzʼn]x=xଭ+ݿ&mJUѺ62[rKu mG;V8v[U:/lewZpg{'zgB})ƥn ~ѾtѬ yH؋Lf䬘U0+"^5x64{(3Vs-g CZ^MxsED?sDqkϬt}{$W 'Bu&oOh}L?j-PtP ƗԊ h(Z(O'q3E%G1d#|MM;/;g-6/剭oUsW&slx3w($/uC>2Cc:oz1ivÚ)h ABzERKahK|trFVE&x:369Q\(6ì_u@f8kL@Zӊ~F %,-/OĖ7$;߸IF i+ώa"B%DXQtz} f _ergY^,AZ|I#/`EFO;6%2GI4-Ce/cIc#5D !WT93~D,3T=A *S3#Vؽ'Ix8Z_s VUJcX9d&}F3ߩd6Wq\]:߬,|9r1k N!=TyE+E կ7 O90YCF {YrU=_B#JZ@Ըg\]d~4ڊ'c GSZ)!{ƺﻜv2 Y;U ]17yɴZ)+(h*$rxAKZDQŅ&G./cCE`/0^piT\8IގFSF&O}[1U )$.Sq.a@lPIkw0̗$esTw칖NpFۓ5Oq\ᷬ\*KI"=4[%Fz0aDkޱ9ZLr`n - biJ`Ht p ǻ>8/F^ӟlDfHCxXo e~[q,41dJӝ[)98 g!X*R~wvx%,8G0:WS+ 1~VpVz#W*R[rs:u eOBw!!}=|g}QV {iRȰT)ء4(3m[g9ɦ"/Y[9BBn`It%xw {"6 49:}RiZmSo_)G&zyEɮr`6r%]_̟TVpΓjC$Mn9A㵎 ܮCrn yC/uU%Xz:>>J\a~Q{ك{y*q^s=[EˑȌ?$f;\d +@brNVE2%c)_zicy yO- 7SR03~t>I L3Q_^_"U Cge5VΡbc_x|~FўIw-Mm wL'қȶW6~$HWb([] JgU3\{8XD\ZfWw_{_ȋ:{w؆ b e8G']EeBgi`' VsGebž{HP#)aĩmB{fU7H w>xn7F:/xv 4r,6-r5oTtRNsXyE50OWS IZQmtg P/J=YPV-*YsFa&M%gi7}KȍYsgF~WjQVg}}\%[>kWnM02s:rB]xS{(iU1 "콥e32L bSD'4jo#;~~^>_|al)HHp".Xc#!!R)VV<.uH\&$=˖`o|v%m.5O$X:VOW,]HvU1.e|F dߕcMCJA˷%; 9YEdlA (s*nQ;_!~hJ "U.? ʮSQn"vEěއ}m:= 0$ٽ/7Ь;)%:e&I)vAq%θ^STQr˦ d^aZ& RubNP">Z -$n4b=*2펊( SC ~FwȗCCזo!ôl22Vi4^ի -yMl3h?[*t-0]-z|AUu鶽*^-첡Ґح5tR;yxd5&YG$d;wHCibDUER;RdZM%igrAzhl?ZujwHpzgp7^NaVE ~rY.`q\ [u0Q]-==TP1\uC5"qG`Gg ̓#-{c,1mRF?6K~aа-y#+?rpRXӃΔ/n6Ej>a3n KƓlk!sSu3U:@JO~PP-#zI,앾5f0D"̗;HbYWqAM:2BtӖ'Dh9vP-݅XҮiRܜ&kyizj1w}P ^Ol@-#ٵD|PvuO"e<!-FZw%EH|+.T˵p?$'y0;qx1Eܴ;ss)+ 2 ~!_s!ʺ <8!b2j]2tPz'Gs;3ci^3.$|4.N@^JHL+nqiԆ)[}RXa4 z*v1dkN|,#zxYWElmð.TUG|]f{ۢ}M)Lki&!z&x2[O1m!Q\#QJRP1[j!OV (079^aMWug ?w:\O ]^ڳ՗2Z[|;3|2^丕%X@Y֗&n8м J):;a.r1\P}tV:p˳tN NDct{Dרwd+g7lG,׽ $麼}16#ݸ1"HM"T }!UƓ3:SM=%,%/Bb{D`;h 1O ψJleQEdbW,#Pش&+7fd'|FS URZZgwn^/.5:w G+9K88lPI'^nJ1n-I߹͈~("ci"L%FͻDA{dDb^dKmU;E50$ve,0ܶHEh/Ww47Ng$.Dv#o=*kD 6)y")M{=j]`ٍr(Gg/'#C3;ѵS&G p|U @ז"dw*&B6$jK[$> fwwC3L:hh:c ^bn5J[i7>>5\#ْ9At9 ͋nZgY¦k>\_z%Ϟ4!_+ q!P7IWHO<\]49FW5wj_yN34!owP~mQVn:ykmL8>I\().m?n(;JgXk GxيS+dl51m bs|KIԫ)9fU}* #❘2Vg25'ˇQF]`$1GV(vBa"kG=z$1|ܝ<%a |^Fs57c-3tz]L$DfneZL|DjBB䵻@s\ɚZ9zԄUSG"'|hP[̀n=3:;5mKk^*M<7V.D9˚K{KLJjLK|LKͤk_y%D͇ϐ&i ~$abrIг[ýZLwWK0TL5Z+ O?|.@eŞ nnI٭VWUszFvQ?pFYOL| {]>~$ݡ{6S.3">*8ZȤl``8N`sGe(WĴ Dcrk_fe/ endstream endobj 426 0 obj << /Length1 1479 /Length2 6963 /Length3 0 /Length 7964 /Filter /FlateDecode >> stream xڍt8l۶FUcM^$Djڊګ:WQCը=K^>m}#Ǒ>keb.A:@o#Q 1"@LBJ似0 7LkE{EBCA+L"O8@B !(!$@hE6  9僆99c_X 'E q]H0  JQ\[ !D; agB ܠ*#X80o`1"{ A^ pE9p[*(o/?p*s^y  y"@`` C :9_  '핼 Hii 6MM$'*% (dbW}#'٫.+a/n3JP?$&_Q_n{MҬ'Jȫ-@7gg [1=@8Fm 1adpjzU@ٮ6 zrx\) z8y0IY$)#ZE[q1s*/D@y+7"#w]_@  3WPpO_0hxQ }But@X(|f V sk=`ŽWY?AyQ Vd,4Rݘ_8TTKٜbQ(|ޑ_5jzD-/] x=L Nu5=%sC8 ;%cq_N8|dEe&D8<4H&؊*Y?BңنvhOs#̀qUz(Ͷ _ zsώwDQI^IR^Kd霝y%\q2.W#cF<˫ `'i̐ZÉ蒉dϫᣊ*91.>/ .5*P7}rʮ\OEym wYa~*o]]Fesj60듛59G M,qܩٙMRu&}lq_)*6ZzOzҗX\jTg<'#M?m \aEQ{6r *@DuٻmDb%NԔFt6Ɖw˰)vT|yYmKhldPɤsVF6]:kZiO{]ہѭ0f%fCL#j!M˪yg`sJ>%}й{/0Pٍ䣤P^YCLcx䧡l !AG'GCK &r =9le _U޷3*ͽ-]kh|vZݾ2'!8LI.q=ͤT')grtf<9A#pe7,ybDfjJ*#v,{1x3z3]n3Y6? Dv)ȮLˑq8v3O@l57Ǯ%;xQ=jPbOpp3SFl*ր[AY>?~>M/W-$Z퇚#҉ǣQBvuJkc lLOjAnlF`gHZg[Fw\|c9d@=i4˳SPc"-* 0i;̏z3*MQdFwRF]1=Į>`eoqov2`7,A hN|X=xx<a@1Ԁ*LP?O}J=2@'M}ӧʋJ$?eI'tg1q"bUWPeR$jwf˃9ei٦t<['-FkڷAG 4۲,o&1xv!KoYڇB#ku;?vQ@a={4Iwlj8KbSpt+ ͒ 1G>*\P}8NUXѢЎEM5jg҈N&uPrJ9Xl4vZq^}UG.A^Z= =\z_\} QE/7k(x;4{h&LfreJ:<<}ucyn؁~ٴ7d"Aqk qphWE:|XKF'mk;16r6W's#x#(`R?^{0ibvDE[{:ft,$`d/ޡ@7}_{8?%mĘgY3YN╓=^BN<=L|'2-$_*N^1xQ/3rP8)m Yܖb'K 5Cۤg_|@C^ekHŋӤ_"G,^ 7YԢGUf"YeRDW'vJ2j, ;ԪFS607KIN(G aUj=Ƌ},jW W+d1?)g {z N$B _P" C 4s qJ;S:-rU /#2$H[q3a⥮vM0&4V hU&W8գ4T^޷JTPefFDuأך9^Dl6lAaBu8CV`Skq$^ι}f+"ZIf&Aa{ogޫmbՍxg"8e.ZhfE:5œOf.[j4D3u>QH7w_<#.X\y/B8̳E|A>uO^㽠ϒU=d%DK\z;s2L8(6uOоI_K iH-NM,a46u洩 H}uWf eu9P`n]Q?s`k= ]61RB`_` s:w :'ShvδkՍj/ SE|/?\O< U3Ó@qM*G4RZSdD휾8"ZHzyơs#6$n,^ЄEʞO%u+[c7|Éb҅o66X}ҋH>eН;|OݺiQ=bdIٮY8>P f3QG4'~l Dbn,^d#m€+JHJܼB=sfR+gF>yݖ%9L~]Q6+ϜL E;w>ʌ=r0*L*,Q"qN͏ll}zH]&65ipWKQׇfVhY2Kqw9%,n[W^h:#ܞi?0*w6!sP#|Gf9A܈S5EJ3L-=N\KN7z+%Hۛ uP*lI"ϨG{Զ#zh5LvLh', Zu(kQZh}vĖ "5 OC9u78ܴ,L1?YWs,Ҹf'4_RfLcDδ=M؈NZf9j}\Gc~g=ȴBJ@6=m;fbMxCQCs27(~/ȝ_I:ߡ}{?"D"Xu!/uSGϜ Zk!ntnn܍ "گ`Wߑ!d8+X![*wxR_o=l|<[qv7Q\[ߚq yhOђZs(tfֆk)P1\2bj}Z0D`qk-5gQK yl`aJ,_5;C 5T(,/fHTm|z{"yR*Tc447lc(*-nvog|/tOʶJ'lY}w󿏘3S_ZJ; q@X_z]/S|J !y n>EU/)9 o2.mj24sV,CmFA_K3:&D`pEUtwq{+ABϖD;n@>8Сx=.ʶ f74II Sy E{w%E5\sFVk6?EL9@uALnS2NVbC? 恏H 8QAm֒]x'qOM+mGT=f4&ZdL;:X#ӀVQ+٣9ovX-۝X"OޱMM=k͂=`dR9f~:{ډ֜2mBR5E HV&*a&$#W fwZqᗺ 0)0A3/t,k?|r͟by#,SP' Gw1_ DX#X0$<3qX9dE>dfP؀3@r8DbM !{6EܗTxSwL7D^@MW[H־?SM0 endstream endobj 428 0 obj << /Length1 1399 /Length2 6072 /Length3 0 /Length 7032 /Filter /FlateDecode >> stream xڍxXm>"R@:7nc`lFwtI tHH(HIM}?;v}Wu{;DA@I@!Bvvc'd7z`H0<`4S1D$  QI$%&"=$`/@GD@QJHw_3KPpz `@va2Bp}KvN|o`EA=_-tn? a FHG7 p@a\<P&;HCEE9_x CvC H7w0p8P#~p`{ w`O(@z*%FO`W"W06<MP ? Do %DEE@C,+;7!pĴ 9B1(+BP'105=`>+ F~ _W9 p)eTTD$@G Sj %{ן3.\(BB0oT+*Hmn0Fh 1oՁ:<۪cAQ4?_8 :Tnk0T`a ⊹0mbfyUïa=<ƬD T:@}~ (@1.LGᯃ`O/7 ]4О2(䤫z[/mgRdV&gv= 1mKj3_c6EZZaxA/53k4B}s<^P u \|3EQ}8+ =;M]ϑ{|_ê!NZt D!B;svvR^j#7QEk!m򓦃 qۻԤ,%'XLI 猵7t ,$#BH(\*}T&E&C<8qtC`/~AϷ[6GB6Z]veɰ-E#٥&A '~{i9Șjb3cG ~XMr5^՜$Ҧq*jqڂֱ\zVʇʀ;k5:!8D1_'„fXΎ̈́p9EVlZ.܏z?R3 jAoI\O hw!rN+n岓"E*GBkBkZ+ ):ʡOv$٥]&֤ikY?kc:3)䍆+]XJK{#gἎy:wrփ`֕nQd`eZzCS,_LIՐ-zL*헬AOy{heӷM}jP-:f+B)ԬJ57]A6LnlxՖ*Ӑ~W*=^f,_ZYU֪o94 2Kp HmGH;]P';74.m+r(J4\ >ߓBM5*FQD{^ƭ [3hfGݑ^L|627lR#wڰ+3!E2G#B릊 go4;E} J[#bӟI" "Ԉ/S Q8nGOؐ+;8^/^Uٙ |5rT:]Z|>\,V{NV}W=U&pHGK4]e?iwd{KckrqxFKT+GDkU㍾0 JD uhkTVƕ Q,q bb1x &;~5rZw?8?fr`H`:cu<Z\k4_I[u̎V}j[-[ߨ6}>6 ȱ>ݒ#?GӲDS~xؖnmH6g1p?'xp!zZ2s{`kY•ȗ"7 !k;~<SkӼ QP1zs* pȾsW]&W[ ۮ xˆ\gmɀ W{nXcptmT5O(Ғ{ݽs\\ܗI|bf`.z>:4'jA_qK`UM4t ߺ T@*>7`ktrZy5\,Lˑoɣv_?g(s@)W7moF}!)^ˈXIUݛ-.[NWcެͷ(Dûԯ C}Pc:ELtP[JVԭ2$cGHZ}3 6> ^{P/DpeC˛¡iq'E2.$xA_ ϣ"rCbdbR,ۏ~N,1<ϐmXӷ\~-A'ky8}LpP <٭'6 :}#f`-Kn}nL?y-+`tqj9όEƅXg "תq.@?JL+wƾLWlELjh7//Fk LߋJW|O]X{*OU,Ci1v1MGpZ=sɯ]9(.JQGS`s5 %;cߦ,0ޥ:I yBs.Hg7n_x£?bHK|.dY޸e@ ˏI~N*o]<J3rK"OדSR/P:pm,鋁 kqUаѹ n6*"sD4Qc4y"]x9 <_y~ϝJtIMHta/J:d;TŶ ̠uR\Õ[Y$壯\ Ne5 Cdt/"ot#[pɲ.l=u-@]`}Ī'){^Xu2$S:́!GQO. xRv3T&%?]Pg5xXLБ>eS-plJ/~;R]U=gp@1lPMk^߹!HѪGcv'&D Șoiʑ`@z:3=*}SY4q.А4 }U]!W" SSLI0NNi֢\RBα7I3:)JrɑdYWnE(M%-3H_ѐ+`1.~޻yfb<VS4NEVqO&)||qu:`|>`gڱrT^Z,I GulY="7XWhH4.qjު/;p:%PݔA'AH\ܬJ>UɆ]Utbr8`*#6){1(tpYD͑Eec94pU?]v>wk}"Mw{ Y~\"U# (\̳w,*}OT吴}.5ď/$J)$U Q-hrYcdg.;»Yl% J6t!rvn09ߴ+?&nߩ!C3TYiГ/fI[&F6{GFG7Wl+t* `-k|z-:Ii&Uڲ{85b]%Mv4*Y;VY\0(vcz*߸#όA - cִg>8ED_(u+k1ѽvrv,5 ڍ~f!U&\elEDwaܲt9\Hi,Ux T:#Paώ?R?Y斯lQ̺eJ&+RUgI*ڋUY8|ڎnWD;w(Y\y35+`8EvQ;1tZl~zIuzBd=>ovz+:Mv\]UsZ4|gz=QCRWpFw8mt)t{KpbiU%+P'a 4U䂷oUfyIOYZ5Ӧ} ӣ:#3@2Rj]¸ͫsj<5 ?T2hXrdAhEv3&iɔ7Xɂ K-Um.b4%gB{y![< hcB? G34\ endstream endobj 430 0 obj << /Length1 1372 /Length2 5935 /Length3 0 /Length 6880 /Filter /FlateDecode >> stream xڍuTݶ-A@%Bґ.А%$A JEDtKA91#\ss~b30Rw(, T3b 0XeĹ .3DdAQ@mPDRVDJ 2"1@5'(v qmEdd]$ AqW0  C"p>(+ù {yyX'BF,㉀ uE 8"pc= A @a(8o4!PȺg_P E Q@{ G (/"C=Hs(!xXÂH_# *?eu\@ᰀ_!1}ܬ3 G{ -<%22@; sU ;( Ov@ 0 "#a8:FY/Bx>~ F~Z 17OH HKd,cEm\-=([1cϿk>?kEUG` 0 %-)77twwC].> xzCmo9ipGpPQx1 p$7@`$7e5$ a"[Y`9X.xs_u 3Q I x9OoH8 Og ڣ1_*. v a?J<0~+ֿ@x#` 4L.ܩ:RK{_Zb-%pܓu/gj܇]O3z92¿q8mݖ2G޵%w怸G3; I,Po>2IyB yl>q!.\Tpւ]Y RYpsZc-8YZS` &ZCg8#H|ƻ4< ɲHZ&:_m&GXn})L]#爠]8(S凛va#VbLj 춺g8Ј4G’g7WyH)Z$ vn+憯rǁw)e%md$"t2tթjܞwKT(]y7w{0!ט>Vxb quC 5~fҶfgwYߎkuz_<ٿ5v1vZ4[:mϧ)~x[~鞰0lFaP`y{s%I:|ڕiZxUH|V?*/}i;`R$1QKA^zCLtog;UD~+3 DEpd㧏h^@idJrM\UC4 e5k6AeLWwK`9w)B |E r!n+uw7NJUԀ4t/X 6L6 ^xV٩"j@ټ0;ŸkjXGLJ3=(N\G&7inzha?7r[:ikz|c| d#q2|PPgmKqS%PDYٯ{>o={1)]="&njyXE`9P^xN(e?>ޕ}@:G&*9rd٧Z6'b-*]m(GʱCИa `rv* RYelptcq>2h?|wBuuZT!<,z,w5IGj'ƒ*˟Oi8fsNCzorIw.`gd؟Kx^x0#ye)p6yIʗ4?{~rKkG#4 Gdn>y,ȼa<AҾ4PN""1 7/JI딖a f&l^- &v^^ao@ug(3$#5#x ;X{O>}:Ktxqqc Ng)6gAKig/+޾~c9ψw7A`P "E] nS̴SPTb)sc,RG0ϟGd6M~䗆(o:0X BEO>ȯ fMtCdh킻 `"y'*f:DflYd&eK.a Ob]^}2jD;"޴&:<ǛTnupEWf5³ &N9)+yi+Jn+d~= .-1桽έhetn~Z^ƒcXi_x-0=آKCIQ秛ȟĂmHnEOZd08vwvxg "Y;#6>ݲ&8a_bEvYi:,$#IzCmַ  acx9R]4naK %nS nQ'}o{uyKCiqő($I_c gng^ËՏ-'8Pzf&I.1 LRV,xF( ܋^R;}OX5s#(|ijCf&{=ɅĪx bO 5[2 !PǍD5=3eXUhRqS3g;j T PV3Q֟}+mфC#-_GFoQ;e:GuҢW!{YɶZ8n6#gَVe[<5߼S.%gpg'sPpH)TR{ )h/|/xEY'Q2n?իo#|$%um%=K_'S_v4ײyE8+m~!q(O4Uԍ~a a{ RYd]~S.(@d Of.AblMJ]fԗo7Ǐ]b5?i,/HH|ꄻ^ Xtl0ZЖQ$KC{kĨUqfb7Iv7}|j3VY9>#rUw{bmYˢ\8Lo-Y#yH Ѽtӿlx8cXl MN~e˛{r]^UҤb6`Lg.Okx1^|? Hm!UJtkѠu@RdavK"n,qqg1O̸.mSM#]ܛk="Z$IAua ( nl: ˯|b~(v:S4JigS 0b,ktm73%`SPF~F$ImtV:"3I˔ {0kHmťQ1QMsɬvEaRTE|!v//ˆvGEZ]U(*b P[9ZTu EݥTdU{$/Ȗ~!۞WLv}J&hݺ}N`+<`vsrN])AU0fv_Umۓn1c=3Y*ȼ [G^#Җ~|[,ּďpԖwZku>yIEmvc*|7tAZ#6qrxYh%Y ǜGqAzؐrHɢkWL%Qg (?"XۤY}՛y۷%M\ ٍizGTok95<[پԚSLB8*%yy#vm2,]Ֆޫ`Ik7,/*d~`N~D9IP|›<x'k"U q^C%t7J Wܠ/\hѩmn>ҋe{ŕOL>}7ڄ 1b!O7I0i.*'?2\E5ʰPi/U:Sv`nɋ5@OWg.4kfqqzqaEDBQR3}uPO{.pAOUћl֊J$v=g;`kՁ[p)\2'e WzVt<T' Ru endstream endobj 432 0 obj << /Length1 1414 /Length2 1591 /Length3 0 /Length 2495 /Filter /FlateDecode >> stream xڍT T D"B[~EH& a)U'$$$ Ol*uADX)bEV@UQY"(QDk}s;9g2n}cnnǹIT <9:@ A 9~yBQc$XB` 1/:tG69xI(R?!b'LX +Yx:pGc "dG,8E$rH4L&b*N[*a!>P xdr5*pbQD Hd0!By&&S!Ll:d'<c(&T`D.0Wa'$\0>: |CLn8G 1UT;Tecx|(t:< "BNM?A4Dҏ 7$8&J~bghHgсiX {W )~ÒvIXM|\+'y4X|o7O:T$[M#ǣI[@ N*52!@J?I`R P Q*G!;΍ rD(bTevt$FG~=$%C;zc<`)$R|ĀFp R'(+!@TIh=΀&7?'%RX'Wytv]\ח){YuL/ $S5[ϷM|>EeءT-kfwrbjgsw{~fnw|S{꨻sV mcקLo V7f [+2ҬƐ%%`4r𗮥>s6a#}DչQ[bUeմCXzy('_]ki]deLnC?Q>.*^Lp+=U٠3B*鳧5 ^ݷS1 D;H[aS6p8^r)IMCv&5jgg M5S񲠣,?au?ĮM\D0攧T=FQwyu1Ҙr@&̄۲n,.3u7[FQ&F6gf$* ܫ^2̑Y7xi|kٽGRB4i1+MrҔI^W 0Y'2ckKh.YO‡-]t"ybݮg/ ,n΅v]&.e%vH1^ahWX<`OvVMi|1֜eSCvBfQ=o.$1re7SfX(j46Vb _=wkxÙO  cMO/XEVʹ+fUAAtY]Yƨ{\b(W^T?{XE̬V4|k85pPgE D.p̞KEWW+t{gG?ؘ9:kQ v촬mxd|7\ժ`Q$cӋVQ +:wX6 я2q涸Bi34.|_1%:]ٴ[mX`Zev'%T)yFjSF+Ov7i[%/u; )_7-]K郚 Z瀦Jo椺f-p(Q#:יG^u,ET|\A]ԟL59e x^j(t8|heh\Գ6Ђ<=._ॳwvD +7lye|l9#^8նp> stream xmUy4V$/I,10Ț}|LfјȖ-PI٢la,IRh!#Hl;կ~==}s}|d,IDKX0SC gK3 Z p2HDs$4A4 0M@ q+pRpRe/p#8 P  &g(XAxa([!\+xǡ; $*@ 'DD~j Q% ),adp1t@p 8$;kV;bb7 i#un @P ?}!0( 0z;7n\/L!=2I>Lr嘨 $7Q rux(@vn'K`eveBRQ'U^`/M L,{ YT^M c(|mllNg"f~Z6 M3| T/o@+7joPMr\o0 %GKpZ({N.v c*Z?"=#ǖA6 y<26'm=<1c[N_n:s僖h(8pXڷgތh"G#0pyEz!0CϨ1=͓oxZR8L3QC6+7к fD6>=#n(vǮY?F2\C#F`:_U7u` qjPٮP~5IYy#Di x;'"A۲*ZtS}zyk]hqZ嵣 Mw>o~ee~Asƃa2MIRQ@ӧ3^Bn Zp ZWb+)zlfdop%OtDWs$(Y6 "fS m2q_ k$M8_;eEw.s8޼k[fmk͵l ߀f~jݽt)f3SyB-uf@y/O?cKԎ GkgM>V F5P#xt=R((wn2?/w'3&_ƣ/ݤY@OMqcrP۵mj{w;|͎>}Q=>-XS}t[iȁqpFmC\ o+{meWxjMn{6r>Ѻ M 9"w/#c=c%%(\2~lp7'bC<%w_^\_(#}|kF U!2VQc\dWSW=OSMp{lI[GY gNK U 1"ݓéf|sqN֮_2{Ԧtkgse{+I'uN$_H_iclԻE-D҅}s-b2Mso^u,ݽZ9}<=R(27{.>5#v} vqET9ğ=XUM˅ܩSgN2# Y31.v\z}Nw8@x1K <̣L%!)my_H7|u9K_2_ţ:q˯uV}ќ']¦?R7P)Ai.GFZk2=/|YF L L^-:FJwZS5$< gg dۥ,7Ct)ťG>z{f}Uy/F@;*|5AⰓr<6)ٱQz'z|zߌu[~=x6yuE:}yeۭV4Ř~E"+ޕ1VM;RLy̼t?x5V9vk;=1)'蚡<1 &`';}iE 8H7rYvk>n3D-59!7lɪ@wU9[ZRq_=SHIr\]7e%::WOF]+[3&TW.~*a_4/zowt)%usj}rH8w< 2зv1+脇KHy(0C endstream endobj 436 0 obj << /Length1 727 /Length2 22783 /Length3 0 /Length 23378 /Filter /FlateDecode >> stream xlePeM-Ӹiݽqkhݡqwwwwwww̝^2WEZQ*)I%lU,,L< MVff3<%#dg+f hM*@{ + <%@dn 1nmd 9\A&>WWW!W'&G&g d **iI+Hh$@[5@dm3;G;[Sп891+bfv6yqUa EUwUQ)@NN<&nZ,Y:bgaL@s-&mkf9@󏆴S?hkk# F3:DMn@[SF6 k_AH;? 2rM@HnfdTk?Jv'?w¢ +mMLA5r4a%#jT[S;7rvtU$k_'#++fku4_Y3 Ln *ϛ.4T_d_A[_ߪgB$5>ߒm 3"G-?{Wn*Ԅ_B٘(@]8)эgV8ID@n,JQi"w+P-s/wV ( ,rK|wZOXmشZ[N lmg MYظkN!ŧ9 /8R<ՕH)~4 HKL1I;dT~?GyxmS\f"2VCZd`ڬql-VF΂ZH]h\7 /:{e-Q vEՇD6'=a"15 J'MіJI[B1MYVŶ~;8r"P ;TÅ%(m&mblS?y2K#\vg*údhys`m>.j \M4_fR,{6F߱D:9`vREw˷=$'˃g0tXerm̳^ׅ׸`PVڀ.T8.^gÿ)!i8*VQ$O"uo>02Z;ܸJu=4)/Kkx1 Ta2 }ahr-ԭHG襹ۈ.5|+ɝie/;Aw\gUEڕXn8[g i@Eiͻ8(@ &l #':';kFwL" SLmw8Zm ۹/T)G ?mx8-awuғBs爜bt11_ /+irKBbeHJrfBS6cnF}V%Qt;1X\'IpEnnÛ_̬R; 0عy#Cj|C3OVF [G4z!m_9pK MjJL΍V tB*Q Aĸb5` γYf> "{o!:UM^J2ٹ?TP6mAMn $8k!)cJ.)p9+J"U X}2hB9jC==ZV#U&ˬP. 624ŽmYM*: (ߑ 듩Ai`oy_Mo#Zq^\ @k&,[hrqE-}~JDOfɉGGA^--#8kvfM6~0A) zs剥"ϔBRdΤ1&]ŋ==7n+=݇lqU,7OQ}ϻuHIrҎx"tgt?gp)Czs-,M[#T&T}mt$I/^cшFc B>w vL7{QXP}Ec.o2Ϡz[ds*x|.CQ17mJ1xFwhkEOhF|=ŌL$f}OzA´k:.|؂-B374"}X3rxw"^*pnszt:SAL;y\HRl.nC soWWR=;8.@y*i020(!d_&g8?咏,(,[xا,AgV9;܂'U0t '$Нv.w"@3O?z@3g;I 1y+i`mh Eh"9B3&k'oJS+֋Ğr6s=6QoۥxsQs̕#ũ`WHx'5/XW\:apQ%P?hfHI #K$cYU+V\ylc\y%S(@WJyuőb9ihaIQ9m:!Qo@YSmЌê>emHRC̫<͋8+8GFo]XHjK#'BMc*[/3mMupP]꽫1&`Czp!t ۂ}ޛ1+_ P3Ot=~5/%TS2!K7{ ;D,` {-& - )Fpd &43ooZ$|1.zNzGx~n1*o9Քmwlo2i܋'J0 -lȨ=eZH֢ۅ|Ŷ` A_L/O4ǟ\LW'{f:J.AsqkCfݘ%u u I\+;MnoWEGo2܊j}&} x*HeZo_X=8f1BH6"IʏhxOd/+mn$q'WrHC]KgF ~xA|X `D_*̠w?4ʙ $4G , 'E|ƽ|5Fv b-]D3ʊ+ԿQaY2({BNiKР* \$a V#%ĸo@'ժok!ޏCD_GY?!M 휇cM\)Sp=n»J$7f©jЖ1P^n.T{-p'ˣݐK]U.vI4U1MBO#֙*e%0%b^UxrbԺ)uܞmOMk2/ƒꢸyf/I /`d~œ8P>1B,>Z~q9Dg"D_,9*eTSBNMS'b` RWW 764E]Xa?4|k Fg├@ u38g[4)"wM-5,965 u9.53AHE9O>ۋ1쬵㓒gi4{h`oX&!=3РVq_ HܵLi WSEaS2T7l)Q]!2޵4ER7WNW\-Ά~#I,,"x$͠AߣS)>[%4٪D1j^}qlsB%d%8LQL,iҬ(uǑI`x%"RYC(:>kRj-ILsV?r/-dzǁlaES 1IED'~:3w#yi|ۈp֏/9b }D[L?"fH3hlY0(m9yT`fֻ5Zw|  4߻̊i# cmmWMw}u5’vx=k?| ˠZWC >wa34bܘ}=$pԄ >Z]Ȅl %Gf*yBÊJR\;agQrhzTx0`$$2M,c;mNZXt\ou~^Es&w`5a&;`f؋`%IhJ OE+j!x|x`- QeMw QLeSV d3e f\ ]l~˺;0c! O/sбQ@ۨVIT}^DƎT&ya)f[( /"pNݵh鱨D ,Ɨ̩yb./ WB쯅gIV edOw}~ؿ5}1g5~2#$JNI@LKu_?OĨ$/88C"p.$ "ב>LD SFKeSR9hh! z;}LwׅN17{C$~IU9;碗,ԗ[lM۽KcKnd"@Xc"2~$ǂ!XeO8%D5Ɓ?] _n3ho <$m[KxFWY!TSC2ERC 1Ev_S޼<њeh-@k4h밡"׈( iߏ{{9# !xOK3fEILZIYvX'Q[TV76IĬ9ÄB\a^POǪM,|#IVF?_p}強ѷ^%򒜢‹㪘AG5Hnq6z5n-*P4cs 1%T 1wk-9Om*L$GYA.*H 8lOH5*U\%oR;iZMImk ezu=w<:ן~p0j/ڬ&׳ !Č߂% 񇥜ML6MG= 5&VIN;윕i]> +1_r%Q8@0AO.%WzˣSFjKnkׅ)"N<~m1z}=tgNˎ8uYŀ8QbF1JaR-YYKl$NSAiF&J[hQ̖=b<^[%׮ţ[MmfڋnY,| 5/TZjl~f.d%2(F-L-kb&'ם?Vp8}Щ;\0w$D3js}^c1࿲ƒ ^\@)cӉR+W3ƹwP}nxg2MqGc7ۙ3M!i}ĄB"?1  !Cs#aB"ҒFYCᏼ2Tع!⠓GOϠzT,[z$J- [nZiƴiU;ˡ҆\eG\H$H 'M|*:~76*g oNLR ;%tIMbKPo+r6J46 qe/P9d;iL}x].%Pʖ}OeTf_)t Ubd- `y3$zyƗZ'QAk,E6-Jdba$q̥qb'.E 7ḵr>v;?v@{h܅SAu1Z {,oqڇ-CpÙcť(SwH+ .)rNgJZv06yGԲ'?韡kEiv2H \VwT#7QaAуsߖjȘzد"7H_|Y׶fOv cžDd}: dYU@iXw_ӱ+WVfWI*KSc=mB"Q!iAlOCܖx<g;*DɛʁKY|UGS{mKZ:QG-CH63g=]8xߊYP߸(zqò'=KgqhN0c3>j'k-*?f%~Gg˚Hsk.zgy`XO.R}٩@V6E'!1=2Ve,fj˷?Lp"_,J~'qEs=bhr]= KMp ~.|V2I7b\ԿoRnHޥ:$V6wxk؞)z{U?o Sj!nS}>L()C ܞL$XN~:{|c#7/"1(wWB{}~iy:?]uj]_FPTQdwX+i)*RD1}ʏA+$I{)y+k7/9HaVUN2x'_ߏOQi* 9CE+q1j]ol^Si~)1(>bT) jҜ)pe@PquL'EW_CToҽ<5>yoba9Tt!F{ W'gP´D̠kwkT7 mt:) 8?RfdNap%E꩟M$W 34wjiUL珦,arzOCn/)ѐ=rp6 'EJ:蜭qW jMUp-jG~~xe=ѭ孜8Ϡ-t<:+W̹~ZW?U8:뽽 :*8OO:.~@-e9z6`vr~^@#+] O1Ods\YK--刽K6'gqb5Ί[v:\m]_FZ V6j% xR\ކ /'a~E&yrxҧVЛy=>98kve!"xe}n~Ud'˒H1)OZD~Gx]{K "Sxz-j'0בW>N1y|ӽnE)q/~Gq.!8C4vTInfFM'U|Gcfsǥ1Ǻ5wyR/";:D_ܡk\KiHeNVuHc6>TW1Ģy431Vd!3G\;j!Kڟ & xĚ4_k qiz,}X}vfuў 면l&E @fb]y_a"|YaؘW&oU 酌NjisZ0.e1^mt$÷ȃўÿIHrIP+?q&͘qj*XL|Zr뚫km?BA /.k.t 8gCHGP;k8a 0~Cp a>NI96߁^߶}EȊ;hd\1as5nQ^g)?(E5d[;Ut9&AEiYr^i.~;2&qo~'`!H:$ԴCxl#wd;Fo (7 m22\+،ϕbHXb%op17ls E /%)|;}*1L݄,ơ0su!H4+Qq<=Ҵn!r|H<ɸ2 _0R2[4/Sk؁7zY깷2E͡ˋJLjsY~,%KcuPYV(} 5Ɍ*V?ۯDAHקsuzx IiU/=a }]%\'tq6.&\RM)6'vk{s<0+:૱cxly] ;҉+mĻ! 9!;9T':uߺ%DܛphlroK(!?nu$譪 iuƙrE)jæ)<,98:IE!v:"u $W;)LB B޺RqًmE48M #ztty*~zAs?G%l.^iR{oPƵM8FD벤0K~x}Zi{RLF4Ö0xlՙ9fcwS+;\A̕E{{[!!ի E!,%y*]_+O `!,䊥Fǩv?qɚVxѝ'$;ScZaw)|./`霭U06CPҀq'[0s ?ZR]Ia¥63ح."2A/^g(yݮmh(%ҥ4{ȳ秫rގ'Nz$-'yU"^y>E/9!VeVopzWhOt*6:Ih 8uytF9~D>e(reCLCA@0kG{~RsrŚ-驦PcN+#X++7u#c'V]E-̇XPA P_;j}ZD`]T_'u;N ^^n# A+a:7h *5LIHR8|SG:A?|>! OO\ qZ E: HR|XqS9A5l DZO,tH;֔M¹t|g? t\c3Ґ̔L|j=;w0qkܸypO]Ja)~Sl遤?gK |d{+voH͉9JPBmG6_B;nW=9Ij瓉J^{|5)^FU3ACe OPR rpIr+VqVhrj/%ԵeRUװRj9Gb?G=Oȏʪ M^+#i¯>ڰ~29U)ɠ<з:Uʸ%(=g;s!Yٜp 2Cpws~۱P{2j8PC$#{D>-{1Oq|Q( o%KdWk؆+i9>-|zCwH-,,OjP4~S T"m+wC$ȝ;.2 J|":Lt1}{8׶|(v9(5~Jg78fcH5h^QM#3Yd梽iFٟ{ռ@qTZ4o3Cp@U slT^#Hn6te ± ^ _Gh0$2d2=IۚXYiϿsKrr| [d!HGm ~nׇ] lACN9j6c"^%5J(&Lz-\Qc a캳ǝ$ jS574MR3m=8~vWsǷg*SUaA@r9CyRhj VZ- Z38> ظJ3 8#@Xgc 5ǻޢ872D`Dmܒi  ҟ vLͅ$.lQE?$ñM =47IІB6zķ/Ήn$v6@%OU$ FlK\5x~_UG|7dnwCw.4%6ou! { n2w2KG+1~EYi9S9u:F|O:|}Uo˕Zo`^ȯdN'5cSڿF `%sW\[Bj$`piTAPT0/2 H;{`{Fލ̰ VǧG˷QoϪFe2Yec+OcLiyJAo{KJ-7W~]MA~t^σҳh.caEK ,UGłLZ8ʷ4ㆱmvRwrQL̆&w+ͯFj퐋)41ZC JZ]blH 8yѯn\9$kB~YMN( f3gj챊NsOa:>!Cγpqxȯ0H}K[W*=p#ܫn?VʲVm7u0Wd&.^E`8g88rgzX }P>bүm փsX{f@ࡇz*Lݢ-}uvpZ"H}/{-Ȯ:RE~PO/I\Qfj,f׫rGSbb Wadu}n~ΌTҵSM] ݋$PZnTG-V\gz,c#2Ikv" O]Z>(_7+ 1޵% $zNrl.)@V<`(1տn5;ԬÏ nrS y+02|;`%IӺg RoD0C!~Z7l۩[}֨|tR\qeP*:TYJrU^=ña"? ů!P(O6e#O4N5%a u]X:Οl<թ`m%ԏ"ȯE2W[b6?Na50sk  Y~i޺YB~\{yeDR9{sX2kǩE~u6sxj9NGvA ]>*c_BTNEV6gtͦom2>9PTJi6qïP-x"7h;ghuN;A0]JhQ+Ʋ\0gW>k/X&Pu -Y"-tMR<6Npv\vvtG^j%g%=J=r7Ȟ#7̉ZXw*ڬotAsq?j(5( 10lCͷv7=31).,*E+lo֜Q%s&MEOQ-y-|Gepr,itWĝwy G͐="ICЈʌ]%!~`F>yIK\xƪ*Gnf'@jOv`GJDceKj܏45M/ ~~ 6ȟtlo7I(]& |%=Qzծد';ϙ2Ҟ6m^OZDz(1`M%/LDMJ6N7q<.l׍w[F3:ZT- "$7$W9gy[ 8V&h%"SjK +6PR1Fޅ`T>6}hA e;p2DoK1Zti^Ɉ3Şb^fx>~?!w;π7_:}&yv6G-j|?3&l_ڄ-UTD9RWȆpMuC NKn<\42}%9f*3s,0\7"%M;8W=\7:s UDpooyuSeN'rƈv*Zoa`BUzƬ4:'k3Il?_u'}V/Ubr8{؉h.qY|)fXTWbͧ['\ #d*q/9]]8_G{"6#F84]3zC*')^x7j .o#ʬefPUqE<lfr{ʂ'IA}" mYTca[h~nkmA"U }Ym3ۛ+k3UM+ Bߦ:_:AU&ٗp\愍֕1f#ݰEoI9f`"bK83f^/v]M+;Kƶho[Z$vG6A ,C(xM`M,z_*Y :cV`&6b@E5#T0?rxLGŶ otS[NI@_(G}[ x)Pas# [yWJh'alȠòS|[.U~ Z PwbHۋ̬N>~"[V7.l֯t0hq 6m ]꼷8<(\kefXgag旰[rL&^X[;\p##\ _2#ڇM凲tzнI#3״/櫃a9D:4˒cfU -EZ#BD>yW4Uj_al>7I`zwfH&VMNS}/1smSLrNyZ)7"qRÙ6#ܟ}@?V6% ><.%ae憔:A ΧMbWe;5Ku{pڙA>ؿDF@H̩1qA'qhLB?Iz=d>rhڪ]Ęm`gF OiE2=LôeJGԳ%NS.,fɡ4 1֢ҽijsySu#~lA80W2c0c|+=1 hJmC{l<ǿ.QJ9 jp(Wgj&0Tm,8XBsL}B>d!nͤ!ߘjA;yAcLpM3`uhHk839ZrcL~ eq2((9 ? K2@n&vI oe3z7f$.|ֈZ Q[ɯ2AP?GoS T.4,,$6Cy6hI_~@QxZYyZ3nf[1HOgs9S̀7G;:AF D E@5$I(_B W)ΛG~DҶ2TrH86x  r7]$bjGK4`t ?P]DLZ d`/ej2|:,zh/^TC=/8.!wMV!xQ|, |9rP#]ql>7<_ͳ/NrE59}k-lgd5k62\rrs0[!gF3PD/O)%c**Q hێ3lV: dlON;JOXkP{hR<ʂ'RyB`e$)3G OwH9gMgXֶna_ymK`b*Pbaw+]:YF8foIɒKўd vWUqEu<#o$R4d>kZpX7蔖5񞟹D'Iȶ`(Th{ߖFTgͅwӖ0`b~%bZsN@\D )ykMŔoQH*[ ieT*^'y]xQ/ώ \SZAsb#_4jkӵ>6ZK>kJL}o(쎁 `u1A>8 Ph'cl6b G\UtOUV<_5cVyC<$O4s5Kuw6 ̬7$ݸ;4/Uo2 +R̞XJU0\j1ճgQeGнOVz;7P5Qi!a"GxQP[ eKoC#D;௖Z}ۦqx03Ce`DOM-k:V[N {urmN|γFL'T=cK1VIlM2MdaWnwˊ 3e+$*=gr 2.PHd]>P!GڊRm^#, ((J !@M#{sC"r3>`@ , Wo "uƯ(s1@ f $*;:8mL$pᓼtC:V)tt >+`GB֙_r Vh׈c փb݀48延2s.f(%z >E$z/X) *wW1 '6`s=>uwZmzo-ǻ=%pZA@oM &8'-|X6i]9PgVYieijEMV%}|bd8SA_,^.b7={tA4lCQ$6lrJ-=Y5׫0-U@18E]w7[z@pk-=N\s)=YCڢUL /K?mQYe2K09$˩vN`O*r{s3u+%ZG?dLL MyKǶdK4xQ*#4Ɛ˚-8 CnEIݖ h=[mV ls .V:9]z 'cI7 <:HkK)͐ _X(2 %DڷhgE2jB`kr{| Ҳe iR+LzE \AYiKЎ;QW@/6%gl?Az R4CmО6?)[%\?@G5u@AqQ%I+pq*:1 ɼr<14\' XH>Z8 `J_\T9ܳROHہ&^FFK!#eЙєHG}L$d<Ө3ŵn=+3Bn\Attnd0 [X}c[Hb`r|ôa>K[ҴpȤ,b`A,7&#-'G'̋H;ʅ_Pk']3PG)\=n0ްOTU7N O߃3 I0/T<f=0x2ràzDyLIK^|nx{gNNOp 52k .lI=2:bӋ (B&mj t3 sF,Mvqd3͑"{VO'83Ka3R0F׾?0c{N͗1Hl߫A9A] u&V˜x7$c|Ïq>} f*М'T}cm,&&*Y@}!j20ruvt l5Ơ zYW/^HDŽp|K(uJJJHb8Z{9isΘyDm H~0nfn%K*+I-w#R!t<gHeZ[wRڞ2_XC]5~ȵgvD%XaDx2rH va~ss} &Ndk`1 #ϮI0tmc6(PܟQW8#:{N契|_淪|%p_}?Pg  فD;CFVD t S#yWibᆳ px23n(Gyz!t;X֋' QdƫO#5|M(ѿ~1s1xF~2;xQٲ.921_ Z,QCdA43l45rԷ;I! Ѷ`L錠،k9x- y-4es^*Pg̕&uUCv4@N* 4 ZYs F:n(oS!%e+ry:^v4d@/.Ql<݌}QہH3lVЛj7E`_hag[rh,=zPI682]ː?KC|l-T[ _v(G\^n&` \\?)"gOwñct>2r(a1g-rڜ#Ux 8a*pV﹏,>zokG9\*d6(!dbH*jG#{OS " FHlF(x%zM@!<%:$8~3Ü;J+b ~ X܍2lUM劲m_MCo?&1ěp"gt6%,_vXYsZ(%ڤ,R9:gM\Z?S#uAƒ~F"ӧJ.Gպ\,Et),pU/Af}oA"'_:ː28jWng6$NNW?NZ;8I1#yRcNb$Bd˼Y@cmD*B<>}]pOӝsm}o-ANjIM#sman?!ϺmƎiTmy,o9w7T ro=&49\:-6qvxBRA6޸eA*c C)QA~p7vBCP5;c11[* ] WE+:GckײbWVw:4lќ6 }%N+ńЀf [E5+G-;̍IawF+l z}Y<϶$?G!9TFBx =^0NyoP]\t׆Z'<#b6#:Iꦉx73G ϙ,a=7Fl li"&jMo h0evSNw,Q\/%ѤsZ/9Bk7[HNH5&VN[e,zjiL^sI-q7ǡLm[K v-J p#]rZs3!#qoeRF(~Ԋ/4> DqD{~AGUv=$K[t9$Iedtrޝ쾰^+he[3M.xYTq e X*,Bڢ$ѪnMUSA| njVk~b7ec >. cI ~(E\*D{P2,/;4иB R_gYb\C[CRn}j"# %%& '94e.&yoN3gџn}aKNmԾ/m"2`~gGh"_YU.MQJGF  0As.^8n`.2s1SrRs{ӷ Y8ၤ4K`cs8% #UnM}m *(vDŽKÈ}n&cO–3(!A:F?I.#'3yh:C6kaV#Շ @5>Sz%h4>SRH齂ku]Lu( '[Lk4Y̞'9F}|# AqZZL8?HL \soZws ٶT)=Fujrmoy@})Trz=sK& F1`K*$\OM > stream xlcpfm.c;Ol۶m[Ol۶m'cv쎝m~̜Sgֵ{MN,tUr4ggf`Jh11XE͍]bƮ<Ms3# GuprrPRа36vh89[Z݅]IR57Z,J *Iu9fbgm 65S,vQ@3ara7?,j jqQF5Q1 'O:ՅhsSuGpdg?Ξf֦sKk xZ88c6ss@.P!5h7;;c{s3@q3{mlom"]ChL1YHX{)YC?TۮiWdS Ϲ9Ow9FquUuaM@S3k%@Fg[?3_()]=L =o= 3ff9;]M?W8{­8dWUCӮ0N^X[^ީz^Hߵ'ONGྔV[o)6E\Ah؛*@\Gݺf+L8UH2Uv @"o'Y|JRSf|!Y_쭁E_ZW9F?wamڃ?8rD4޹# Cy"tv+-RNM`i/8q:q]5f}m",3dkL,?)>#ĸVrI\\jw0hn|޶ID8a"'^_C]HB₠*웺ORKB ''a)ѷר-Fu ;9sB4}hXˍ;f^蒾N5¨`z!EDŽf-}0CJ\8@7.`a6k/ &ys00zXTpvls") J?Br{)D囚x$U"oxS!t:7Ȅj^Q":Uz /ٔ1˘kf-TC"蒼xn΁3 rК@ob{jЗj6%C-H _moP\f6}X?bu!b5GP{zpO4 3ZIrbrH9(-fP)juÌЮJc~ybp,;-dJ"6~U2@AXBҲw*IzU^Ug=h wviJpҜZ=|a lKp=\wg_#.,^-b&SXf_FsJ[>ڜRVoO .y♀bAkFUEہ'!}_ts%>@4L寫 h >,ђ8A*s鋋3GrWdkTqvmE8S7AM'>{GE|ST\ek+k]20=MƓ >ΐJl*{0pM ( lսJ'd@KMC%7ϫz353&-PQɩGX7 "2&<h.տpN7zx f_S,Z]s]V3]v7S%~"0 3E@j;g.ڠ4{PDy(xl"M"7Ofޘ?N9AӦ .d[pg_nm!\̎z>T )tп#Wq}ͺ ^hf1խ.ʣvxdZZ0/o&{ȞWSԎ <lAТ -+o1 J>7pcܵTM=Kgx6g!8%SޏAǯ >mraie`W+K55ZǦd>w]9>V_Q*`bӡb[LK$GmY9ո`y燙V|QߐϚ<јȪɌ ;ɢC.>Yr%2Dښ?ݰ.|J`3oÞvx2%Rqi?̵SY/w\ܕ̼XH#Z k} r!cS-9ʖDNBůHyfC l,iZ4%t+UBkBI\v)h)f.7q0ؾ^%#+gIVABԐ3,3ΓwBYEnH=b~x3 BDDI7)e$Jp.W%9M$j RJ;?QqgK`jVN7kk:&8,/,Dbf*АМڥR+ cs;㭽g}DIEGصJhdc#-〒a[vuBޞT%x=Wj'A6RQX+uZwRf)~e=S(]oy@:}(S8 6VŜ"*Nkr R].HBOd]~3wq_G,*&L-9~wr@*Q2aKyƧL1Vj_xyoPڥrz ͏ W\GMu" q6skV$MmIt+3LuV?7g8%59:ܓŃpT~YDK]5)Rmu:w_4M$Ir ߆yI*|!RD_p%_v/N9 nT:zвZў] ·Xǁ^R8:SA4<z;>ýtfC:3GDh.ba] +b)11):Jw9n'Io&P _ ]BǑm@3s]oܻ47EzZzc oLŠzo1$3"n>?<>ꘑ}|*A )dK*Ϊ|#7 Uk YEve:ײuݟ{8MH rd<ҦkP vCNXB$XƔavqV%+ԉ!,hAO,x{Ǡ>Tj6cpn6 `68MJnjȑar8(|L‚D{?QI W?&'|ul,NjC>HɵOc:Cz4ؽ˒ [$e}Hݰa"xnls%M mng< n Jt mlAAb)Eܟ`Y(א>=]Qλc-.!4͌϶G+IZGsE$tGo3y`÷Rk7|#glq}8[b}@1v|WVb/!_Г"foi?`nNǜ?s'=ʴ;K66Hʅ> pMlBo$G4o#yF_"Rx[d qij'ak# D:~upƌ&CZ pD3nKS68N@fXzTDY E_b21y4xAD_6a'm??*bJ; -ٷP^%dhRC昹[w}0K;۵^]Ҝt#XCA`-+7Tܓua9y,"5c"JЪ|rҭa,a8tHFb losƩANӭgηׄLvi\igj$ 2@@.'-$Mŷ<1}U;|>:Rx X 띏VUt :~8VirKBVdT ބE)1AXoWB"-Kvm {탧)/#>(u$ϫGM 9ikcWCӮ 54ҋQpuڸc4"ۮzR*U ؾRZ1YxM͈^3"}ue1oڳ3C!?K4'mxwyU]d8燄pLjF>u6hF@.&+7!_,D[qլ #P6m5\3^Xunh3\|gLh.OPF?Lk=_9[7&Kn?4$dS'O.Y^u vо:s24a3(IڽY¹ٚ<^SsB\1, pxo=Gz|Cոp4:uwt|-ܭj>{֣SB*TLmU^)1j[ "G~t:=+z\NW`t ]y(%FV:>vq{NP*aΣ̢*}(^?;>P<1!ɱ8UKYQY2|c>3Ծ=J?LY(mf(Ћ^tS)*8iB^[_He&#!^5@h|KK?Jm@(L4M,Į)C]}iIpl3|x-V.%}{u '1ܹ9t1ƽxՔ3B)S޼7;iN R@"tKG̚д~=  1kT>_LܘWZA\)atlqՕT4Jm#0Tlqq~2GJ~u&[UF<:"o@h# tioɲS?e ?r;4s.yx RcIآs'7G!'1zGIUwx ;6ŋnr86k[I}<-)dss3r0< BS{eBbd|*C!H19P`h$ÿ*2#c3zo*7_W; rX 둫o},ԒniV۸({{B"[  K7^ꀽБe*8:ӧceZ7y'Ќy[%GeCC :}3CH`k4֩`L􉥩~il ~e쒦@;(mt;HnVǃ#WC)VШcX}0\ 2;R mMFݣ)SxAgtk~"*-ң!Qq|*{a[ *:XwB@oUzbȕж=/M֥=nG`LU,5P%S^ҙ޺J`iNrͣ4yIig3軼yoK+9)=I%z4_9n՝e=fҠ"nxF I=Ulq6ݯiQ=)z/vDZG)2c^a QsT$ ʥQfwŁLI" kyBoGK%h_4Pҝ{d9[> dd ~ϰ8R bG_#\V107'7C"ijvbGU!Ir?]@OhO=U]wq)E, -Z ! ͉r ѝX=,;{Y*AͨY4JR"Mс?>^UF2l;>m4 騚{ [q3. XF<6}L31nOu9` .[ ґۋ_K[T>s xct[z3̌M.f`XqqK!UYU&T#8t5Ь~iG|}inͼisDZ}0)zj4g;;f/wm7&Zav31KPUHP E='q3}# yzia HBo[8{8q^T)r4[AՔcy c16HId+$m#B qwj+o'ጘSydx "oO)XLzVR\L~*cEDA}f-ny ":v'rNHdz~E#w ~j\?ze4M_mV(a[$>6>4.ˡ~j-r-^4=t7F)@D$j $ues[v%KVO|H Q< ƒ0mCD oJ,ʦ:$ 4lMq{A0hC;R1{_ % GnԷJM+k\ $5Y?5I;b?I O?@?}]=[a)y& `Sڿ@:`AW<3 c{r[bnuMtmI; (zɘI7oBK$nL]AI H9?S{9#LE> pē ΢&?2Yofi]Y1FьTd:țl8(S }!7{g:Q?TFӮǕe/ڹKٶ_B\. jAup^#XGi\yp0\kcT'K]yۥlRb Iƭ@Xo4(:qQ"Cc$5cLv+(<( \ܣQͳ% -Sfz/=DĒ`TJÖ  mg?ϺFu=E`uST/;%]_DylSP_R xvN޽-XӭC ʮ85-6`5_]sMĽ]а{ڈWaw([v3TO1D2h@#d6o` Y,F6׬CXX[X2v6n*`昻7B|qdpH;f9'"ӕaX_LMSPv0kiÛ S##ܫXv4AWT,vYuS|") )$Cow&d˺cȀbkW^)iDlYL#gM&;(A;=l -z0kxTʩ!Nrm4$rє/I 廩u2}+S=n-ft! ;k.Oôņ_sGR}ჱ&א7eۺ`7f6.'[TT ^4[j'3WknFoVKiP[Wa/IՔ$ƘviBK,Vƒn'n\w޶*i(R^Z!g}uqV 8 ^ RƳi5Ν*10o^60eRR fӦj hMUS03:4uYF>ʑ"Apsph9ّ-gH#$826r[ 楽"yaTKh72 SZ5 ':x|]V?BmT'* ;U_o-~-x&&=^ nt, wEq:le=w0έ4V^&q}EPgqԞ}CAbyU+%Cu&FHSQ/>dE"PFUg>&8zd8y_. sD}.!OYNt vĸqyWc&iLv#͕"I&GnKz$b!<8EH1IcmƦFAG,9t C4kdX!9mKjmL7]o2I|#[mZUPa_UOoka1- uM\Ϟ,F߽5aJ~g~b*M[l.|4L˽giQᵐ1B[(Kc]sts=[yP'@IBƪmo]ŕsiL2K TyNq7EF9)avr˯: ?\qE |hnGooޑ1 e?e(yBo 'D̹&Mޠ6HE_↝11Hi!C77EeNg@9t l3 VwEqi;fhbk]#(UrM*$G;e-s~X/ciW;#/ĝ'n :ٯ_S\6Crq~y! 3*[Z: M& ]K| V"LGؾ^mu%_ EqOZ) *ѷ߼a;j[`Hm3*y%n>zO{Az0n?Xu۵߳nfu(7$d֔Ej*c6, ~( QbcG0\|y䶻ol@=5<]H59^JI lx=gUb=cIjW|]gdBmǬ*W6CvI$DŐ43Pv֭@O?тxUam1W[)'Raq ND~:5K]SH6lvTR-kݤJM\ e0A=ȵXҌٍkQ+SpriKrxۖߙ!Bge\@&<8 5_FJBh}Nxo1h/'h9Io!1oÏ*zن-ܣGUL#9&,wAkpk0ˊM~ib/ΝE3JԚzȧ_Srhp ˞@ms0Z*18OF217?Mי.NLc6lrGDz`TWw*엱IrSu EtdkJGbZG| vU8bH@DIZMV3G 31x}%{qHV-s^{H_mrpM[|O(o&HStq_="z s7=F7/D)ny馶^wkjFIyJؓFuªi޲ExQ#r9p@NLpBhjY.b;N:-۾."AnCϯ lu 5۱)Wbtd,-x?[&"|A!=mdU"]kB&| v]En$"O fd +w2gCcUbpY}B{)#xР_73 7Np4^Ѹ oyψ㍧ǵw&j ܞ5퐰τdT$WAС?9}X;%#a^5wVAj~j$V*dÆzzog#:w:͌@ ]ps Q9ÉSF@2\~#i}0gI3skogmd7h+҃B5e@5˯'`+L_ .G#a.kwZ-!,<矬oD9LRX`*oVPZ B M>h!wP np,Q$W0^lK=;`knॄKPTSzc DI,9}}v9Ǥô4qH.36X֙mɆt)pqI1W 4${ CśBʯAm](T5H43gxK|QB Hx6B߆3m{!jne $8D' iJ?94Q)sVe,:>lZ_щ&h[q<hp|qՈpTpW3~H9 #/)@5 w8 ERČ>l6xde0;%h/ǻw_UY!Oz.Uasf'j܊s}Xfp>TuˆC5z,PBڬ &v@^V[~@XhVG؛S//>P: GS&Hcpz$q[Čng7)G%Goʂ Uҋ͖ ,ľ !]VXoѺ(mxԡ9(@zlATUh6aeEk-#g@k,[q.J-\hg١$hȠʔkb."WōORTNg1AߌU=,Ǵ0S SNrƏ%3ڼnq-܇ uU/H,dņXqxy;uh]GeMpQw<5A[&B͝i&V6g·V˽Ks=%CCb\ʕ!NkA7`**,`w>.NT@ S8FwyuA >T/'-9Im_M1Wx7 xEvF*4T9pJ 9-_Ϡc#MH2ۓk58u B l|nьRK\P334y-HNDnVGVNerk  )9z^mVF̐XL#QO25lUnLXPLx.dz}vМ=>!`Hcr(;|CW+__s'ܵIqv{KgZRjZ40Pu_uz3]N5Jaו @B[:'i>y=uBx>yGZ|{Ӣ45ԣCC ] Hpa[t :r&⧞rVV'gN-yDvHxG4<_jw4~2dHW~aɡtZW65'u9C( f㝀7&[։R1q tw6vj?@d.^2w&2 g_O "Ę(V?^h |x ;v"4 0(揶-M*䦧?ue(qtlH~v〉fbN[l2,G1YKѽ5%Ή ^\qv.ýĭ7uLBGyΦ?]+znL߈م%Ԛ_ dR"}ݲ*\>/ϫ-<]#I= + endstream endobj 440 0 obj << /Length1 727 /Length2 20937 /Length3 0 /Length 21527 /Filter /FlateDecode >> stream xlcpm5vdG;mضmgǶm۶m۶}ޙfsNWjR"Q['%w;cZzN#; TXFXɘjlP400`HBvfN Ṱ*V.fn~GgZg^Nfs+cBLF flcos627H8: mmɑl\!f`k #$ *+S)qrmlhNg_?-  ``ljnC/$lLl 97!(71B hkeqs2126/ZN!`c ;ə;#?R;jWT ϻX vtbҒT[El mmLN(`r١RNG IO%_Km[you:`*ֆ2`7awNikrՒ%]eo靍 XmPjs>_V@pF<_?ZM*klزy7}n`]wysfDic[EBB'}>,K8"!o 8^s^tE` S$Aۧ]\ը=$.i|Pߕ*+UW`#QL$嬵Ϋ>S>;xI-lG), Y"T +Ont(THea5b^.^t -'L Z,kQ&fDƲ4]ʣ2kl|7vw_P)KQa#H"oc!˹oDi qjs*Q-s(ӳҗk"T^yriǨϏIX*QF@ֱ3ǹ ^`_qr0F ;٭SԆVdrBT!}V z/iX'`Yjw^,w=hY& #jsvDҢN)%z&%]C19"PCfoCV_|0+vm)N(q EXU+V7w AٍuKiG.YMۑ%(;o$b)f$!:pF6gBECq>FrЧFU}qzJ|ٗHk"ޓ"uOQ6rhk8=ߩv'V ze+eTz}WKyPd.V#8169dA=~ 1Fw~:F%ޅ.f X8g_:!!S ]B.6դ FU9C B:hN:ꄬi^E H-CXOY^%MncNzǬyEeڇ\Ha[_6mђ_>6Vu圗#׀Ec4ͭğ& D>)NV<|w`lQˤ(TXH$#_tVJʀ >0X CQTPAךb,,Nz; StQ #aᢨf(SxieQ )M=]`=M*eOH _1Od ٟFq˾e|b N#qJ7?Ih|m@nOd9N?m1بe=yt21nW&Bb"Ƹ^j#n@T񙈘8 kj~B'DvˮUk.Y g' tIoC܁& !UASL2e"n; U9> u\-ǠHцIJ@ mvBowȲ:Z75D\Aca$hTJD?%3 0GH\䢗 E ֕%0Zݯ>oJPi>[SS%6 =MhNTw\-!JC"ՠh@EbӳK*>H=y[Ydx 轟O`ӗ **cϞ.+ ;IbdL_Ƶ>T@f?@ǵb=LϮjZӣįFjn3ʏ#'[:>yxkv &B̛!Mi'E%Ĝe#E`T#M6g! Ե_#Ө>tFE , 8-))Q|,CUP";(yBDxP Tz!tXtuwL8lJW#m[㗱j5D3Z>ÛO׀#zm\M_N%-_lS{fqtHFk5"U%GL X Xmz33>WX; 816(sH'o !BZ"ʦR+LӬÀ;gL \| t<| D%`j|6j#gtA(8x;rC`4A|%pޢo$m_i@AϬFNLWZ\d W63A  橆5]HSh\':&k {p6U7gK%≽{(:4-c,g2j K+l7M F2CL<7,`:U  9r#p-E$ 6VEY$hFɯЦ[ͩh,Gs׵YVQheb4(x΍1 %Th'q~zq'l q`צWXS!gf~VAc|=jut5 DDıE1C!7 HxV qavf ȹFZ]FUۚ@ȕte3d;Z4?/{Q=xFfpҩo\(NRjel^ D澷\G\$W7N kUUc ;riVO[=[wZWWra)B#"`6=jN*oT\ݪ+-kx.؄~v1s?sY8ߔ D[Y?rYSP"HhX$*b|Wfxbtқ x`2[ ٙ(`׍%it,6% L 0J Po7tlqN0(;:GlN溜ycx[UBF}`!QMnTu$?F]ɫvИRۙ.0XL\D erNGK2I$>lCHO|nmf[dh3t²ؠbA0֭;~b~M4ﱠ G}V kɣoIs/ك5H!3XXH-9عƙEP=-o]w-`*kA`J7`Y->S]/22xre"{auWD*wa*FS %SD-As[(+1@4/$3rMh%~MEM=MnѹձZb/2x Pvɷ1c %%,[ k[8΅l<`}jV25r51K>NOmFb\aNmL aE0ZFEt[T.]l:Ք`]i}uɎkmb7DZP3ri=P`!Ri&T!vmwj:ڠҨt\{y )S9G5c=ҝxb2 $[UL1|B=GѠ}P(cw( }Zffm~< )O7$ܗw/ (t i'0#o8.Mbx"̐Crc ݈T; Q 8kLvI]*=qt:mr֎닛@#oIHZOaU{2"h+z8qZ)|JEnthnqy7A9qZ+%f3&&Ά5),y S]CBJӲ}x2gi+29s_&*KVFr|~w/Ef:P@,"wl|OJ:UPf XfH~]-E~h%\@#-Zkl+es=\ovu3yG*R e9KVu%#.//c0eMak)fPoCtUA; %4.1Vs1E{bڐ!2&U[iz~K r1<>0i]#bwUHKM͟D%cZPDuĞGZ f?PJZda).b߳TgI|w4# 1d8^ XJ ,*ZmCnu;QGL@@CUu?jjE(ݣ1Qxz#1-$"Jok& {LCF8$!@;K;WATvd( gvb |gRM@C(^Rɩk4K X>8dԋ^ϻуh+ǁL]CP~!T(X!uzf6~Gy.vNX*˃PHjQ93 K"{v57P +?TRUgaɏK/{0z۞"pϾ0SBDW8i~(_qpֈtYv@ꮟ%9ϴW,?0s4Yf%TL*2G;ܿ؜%YtIA-MڨȎɹL@AMQB@crdFCk w:? n%l^hhH#؁x'j#(!V:9/dN`M찎8 8sG1ԯ(_73 Ɉ!~2 !W6;ꓛh>X.w5MZBf԰`\X=z6֐4 O*4\;,M>Sd? t¾$J#OL 5$Z;0=Dy gԁކlrmTW)> r]mPr2.SJo-^AKou> AVT s1 ~M3u)~4͏sf$h%CdV  *~143 ,(:Ix|0J&Z*Eھ' e(;I聆M;--wIXqo ĕkyc,C&l, /?4&iBtW牻”8oں?O}uJ4UDml}'@_u:qõT&el\uM9 ] 24EC U_0|%y,Ve;Fcd"8;cPE saDx&ꇌ4D`_9**R -k2!VȡW:=ur 5}5G6%W|0c+%nLJ'8biK!7{xTN:<9> @`cxTv?ѐ5sf6N04>WWTӺfù۪x80h$+N!QQcRB<)+|K(JN|*pWDo'$6%e[X!DL@8sz 5LW37v{ygV;}UX<44hҖ#gboRqU*i! ɵybD$^oP 8vqKrE)HYŘ5®)  혽ʙ-H4s~sv{ݳNEu9ASyTn8?*&/lJ靭;yE: :0E,gvϢÍ֌ܪoj0,&;ޜٲ}CFiT!"ɞ<^UDN3Z osbnS2 ঔYԊ#T=;^'-W%0A'u/{BSv.SAݑFe),tDwB7)i M/WFf`Sj^r+&̌`ժgJ ]WC\+ 1ܴ<#F2Nald_e(}V[q(Ǿ"Z@"R+Cbz8-2zihiA瑋N*ȉ\L3Qb,{X4m 7dg@ ے*w ֬U BBBFnQJ>$!|z^&WVOo;W 5DBs+dcu#qBx ➋3Hx"*) (Ҕ\}f6͌Z^Xa= !TQQ{ݬS yV 6v%q1OFwaQ͑W8;=PMaN-Ra,n! wvU:c;U)]Է@XrLp6f~9l4&Un/0yּWzuXw hį&i_=*['9³-&IԠ8Fg2ip 2"HC 'u`2VC;TǗ@XMA(hMnӧ y+T&v{wx0DnjMx|SKov6Z&ÉUTIHVKǿ}ruDFXa[s/UNE󕨕*:ok,L$A>SlC*GWH "c79^| K]'= >, V4b'}4u7̌݁mAwMʈG)ӿG*]ݸ\yİunAƟht# y{6~7U^n4uϯªiVN :P:v!)gT0a~7nZND7-{N?BHƾ@Ec%ʽrl@WCak"YhtN>=z5ڐ=| 09 [~XNX}):- N=\"۠۩gODp(czla(E/wugRFng^;̣}թšх95y<}bn0ږ'WX/e47AN.’H's^qp!-ڵ:x?f-q)=rBȠ!75=J`儰;.{5 $w,Ku;J薌ȯ>PJ&Nny,EĪ r57>n*cBX+VٚI*bӻG"r#;t3`Hz55'es[œ>U̢HE=޾hrw8BAAT:hfzֺ!k3t$ʹ~:dCuA~Yn=a;6 m0`?ZzKHSH,='J@ zK_홊вP;h⒣}d.l4T߬Z^bN;W=7};’2'-Yڙݾɱ}3GCZӄM,xXՇ=v "dR2&::_YW # S`*Tw{YtR& (󍿨ORZ_Bo#=2Ncd5Ġ,rdܒK[^3DkN6KO|݉At ˈ,A٥Nlkxbu0wS&bJ> DZPm+晌RJ=ߐ0; ;X\Kmeꇂ,l]XSgAⵕJ[*k F ;|6վ,O:p ҕNK킦{0X,[8+!|Mg;)0׮2`y*7ICKц\VlBRjx:%C2+atVWQG.*)ۖܪr|YˮRgΚi%W6tGu'&Z-5(OXC1 ?("z P~. 4y_R xGR*Uh1 W'ۙ ?xNUJ"#WCNdWx%^E D"xkIR_"h~U* w;YZAWu7fΪv6)It1µjcaM^#ӚE&paH)6·I(P*W(q8DrΘm#b='gYqƘo>D;,6)]A2CrEpƵB]m!|!2} ;$lx&~6!*6k4\Wp1v]z #K}2=^0 7p/-3S>Z~Ec".Vx,Hc ۊC#}FrHSeb|{WJ[5оg[ \E44V T~K,SNsxy1Őz+pw5h(/Uy"k&x{"B,N$'hBJ``^- zA&X|.)~aLW٧E,H :/Br_64Sꞵt!KzA8Q .Oj*!'̢Ry ~ş^ŇS=tN`Ӛ{P4J|"'Qy %7WRFRԫ9 v&6M@K1iCmL_s2wSU=t)y[s}% |9#`&Y2_ avSsɖbo b8nQ<[ #܅ӾBh wYyatRf+'6D=BLTnvyo*̰~ H$ɻ/i_Pֆsofi; zR3yp 䱃~Q&?uSY@0nI_U>cQS7ޠ!X,S '' /튁68)QZ>Qj"d+$VZ=ϡ WrW7?$S2ߛUHiBŕ9o=[fY~ĭB칈-]"11mm§jհz+olfAgGR`xJc\-hJ][֐ntH`Pd² #DcoWq~SMa/qEc d73-8ڴP[d5lC !'1|Y5T/ӤSDX䇯|#pDmsXʱ%u.]!Y?nTr3N@%L)T!02 a z變Fa:Kƨ|`ʺuو L\rUzxY-(G۽5 v4Վّg Lʱ٘x^;ˉAʴ#݊-A?OSG4.h,v-TČݢֹ:7$ Z25,*E!tǺj6Y>Ih1x됆-֫)oԇ\Y,K핣@N"1~WVieqw/V@qO=zi@67fwOƕ,5L=0D8`ZNY>ϥm1mc}/{E6B+x6nabp&ūҪo[o"P8pÛE:QHl?Å7xBFvNgîxݾ+V39\L& ќML`7<<#p-ihC{;۱yK1y nBs>ȼ=x4'vR@a6y4c6GߗU1v\Z~A( &Ml/Z"~!F*8@V[۹LA {[w}n")<\M7#I{, 1"t37$oE }n)cģHX0d]`[EU^Ni^bf}T_ɞ ʵO=// $f۟58_K+9܄ca|?4$xcA+}4*_;jp 6RHo8W{zVؠUq4:1p-X}.TtT"x߶|0*ʱ، y'xGGaesM6*Sǣ,_-|TRg4ޠTqꓪ.QppuC-!ϝh@j&u@G!t/g\] N$UиǾ iN ٚ>{K,e됃JRxc]d: No?\);V0h>7)b6inẄW, |udDT t~%/%r cW,z9c'_HO-6JݚR}) `UakW,|⻻BxG Vݯ:^" IGa^{;fG'.LGQΣ۝Yqng6t*s=}8mVTFթ 9'ofgWg~PJ yl7!^9-J`L`WĹmJ-2_L /k|<94oop,\e.HUO*Of)s`4?t`Rb>b5aqW-ŸRRl{l4ą [μхix?DFҤPND ~ l/AəyvZR%k`Xbn BY\'z j1*ZWGdUM07s* J{6DE[~Tȴ5,O7 $=1YE04xkXFPts2Ų^ qd2W5|`-%& TJ36ݗeg[Xy/nQ݈y<@ {ݺdN$n+-ē&Oߙf C>>}$jSxEK 7GC ̖C[HUrP}Sb]1w ~i ׇހϣES2A'#H)]M`" /SG!]u[YӼ4ҩ2 i%2 Z'4_ -U`Jeu\CY=GYPz\=9$' GS0xM)n*75BASF_julkP>kk_2Ncpc1{9%6u@a)0kD #w>ߑWjOGڷD4w]#]3# 'Nԭ8@XcnHOl/#Y'µrTxcU) AӬ䐈,}#N3`Ԣd]&r7(HR! wQRRPxH!ɉxoM*E98m7[U~N>y҇dZEX3_"1 ʦFr!b Nܐ1L)ԈiOZD"c 0ȫBkzwչPu"2wKQuw6ewBB,d8mLG25:wih{,ģr7Gtxrb8 kU$lu {,/\_!5STwe*{c9+2Tf 5Rk|y6(ZL*ۢIgb 7w e UBpM:BMkX@fXDB/*mKx X8c{ChJiwVKZLֶpgy%@E- p""Qx0ix9,9)Y{VǔdkV%;#Y{u3i"(/k,wz KD1huը*vf# q*";# o ADw|/izUzhK=KƉ卡Pۻ{,~"c-?G6 =$Ud.rOcA@uMkGk_#kS`~YcEH]XLN,m2撫"wQ&]U]_ͽ:/ﰗ%Ẕaw)ݠ# 5,T[o,3jKl Y8h_* cHi[[Fgetyi[GP\hZC0] })Syhc!,ڗ\@ySx&{KV>j$d{|IV%_οLD!j#n}E[7 dFו5f[ k'keҎ˩))OX"WQS%WfI7i[?Z#!: )C{3.\fʑ4h]`9|~c`W6ZFKԈ,lrc Nh^և~]pr'SDtu lsy*Ģ `/.-Ũbswj 5q)!@jFBvv(T!\<_0VYx*E1#Pi\E4 1@V)KyĀJ Azwu d7";Tl#&p( mpUƫ ~%KMSQ%-uQsf_kt|:RH$}v~tX;FE+%ϫťZ0,H/0 *x~1>YwTsIbG2)M;06yW130(q;DdPÝqラ~/Ɵ.ݍ{(EuI]iZܤC[^<`&s$E8B*Q,DM#ÂN^o*N<t"[s$Y'6M fi)\($4w~wЉ<ו}V4hUϜM@ | sӜat.;Тd3䰢Kjv=kUcccy&<épzpkZ$<]?uoxCHE"\^{4g7+w3R~ARUtTv1}h:>p\AfX&՟_ɞy!ghJv˽9lO#-F[ QkPPUmF.f͘,ckVD3Gԙu^ru)ھp^ SSw;E*|H6O$߸T U "M%w)<C(Dnu?ғM^j,üyVw'DD@W}p,g7r|EwtS0oaI\s${9 z0/;G"cTS04H2\cSot}k{i}ȣIfHׂm>l>XIY1owYp_mA;..L &9?Xke@`cԥ2$NXӶENlsb~4ٶD#j tzB䫺.EB-;>كi ^Z07n 8 jBsͲ-qDg%ps85tVnl(a~XPu|1hP?&F#GeY2 ̞Q6o #GG;(Fe 0xUo߷6A8]>v1d_%u]Z[ (x>66t#pTg _ҤArF(rď$\dE4m3j7f6Tn !rmocp}w1\7$I6ɦo-Zqv'W)#bp* biɸ4B3) \ ED?^ΔN1Z1$ mh)[t7mlm_:q1*r@ˉU h:C^;O{^ )ʽE#+AZTpbY@T15lO_p܋v.R'kŸe.cPR_ƸL_#E[_EJUC^K Cr{GmC?}69\mhe+cbxwBCqS(Gi2r y\"%w|\# ,a4d;jlؤ4Kۧݎ/=@+Azq@>e4OS YBַfg0/YFHP p/ҿ""Fiآ(/h~WRޢSA1@>OkE^e,6*mTp i)*ɼ3DF  6wqq( i*i_;|AuyC_J[U SVYE*r-_hݝ2Ss,KFvEht9]{ BH5PffʹT 'H0EB bP\ҮǺEM-b)+fW|)a ȝuz;}$<㹠A`ՉU_teSbjE5ԡ_up 2yho 뮗i(BamtQmI?ʏ6hS_ 1;pwG\W:~cRzgLLRF%"|S;& x\bh`^8e40/v1*,0p'1te~mWgO^TflІ4ۍT`]xWojv1N+֔eV{pmLq&UM;6̭TiuTmu7nLʞӜ2)oLm Q["&H$KB_RUQߛm=p+O^b`WJq8VwnC@\v9 ?dpJAMx%&YIa;Ԃ0-14FT JH Ľ6+; 5CIB R_P|c!9@,ԆC!u(o:!sBbPkEű/{ endstream endobj 442 0 obj << /Length1 721 /Length2 13602 /Length3 0 /Length 14157 /Filter /FlateDecode >> stream xmwsg]eٶWmme۶m۶=Dl=y2{۹z:213rTĕ9,0dd"N.v.uSCwt4pPS14tw4𺹹 9;]bj p0YژD5%j S;S'C1@ٔ `f03'gع:%fdo SWW0 L۹8sE;:Z-ZFuE04v[0K7);3{&I%TShWyC[S@lokhR.u3C&.63+?quEM&v6w˿e!9@寖N& V4 |9C'K6#ƃ_,cfdб03ؙ9\>CA2505Y]7 Jm -˟)2PYb^F0?ĹSqß0۹ؖk$65;" ]y)$)3|S} ׻mk,vq뒾H=JڱY)ʠi+neNJ%C ti"$Hew$,'h ["4 L󞍲k{F41VtXJ!(.O՟dα!f<|ytPGP1*ĿتXBǯrɹ%غoҋ :#K_O77Kp(0JK/s ~Oi?RԠ2y=`g3P!0eMȝD+2qC1L'{Rn?'o܎vDkYh?/&[\0g٭fclvʏ"ĕp2M4[n x+zUJz`)Gy&Ulj{+sڭ!ye.=;u17|'4h0mEpD(w O<#n݈7" p+ŰGYG J4dҊ>lPTsqi:ɑL%~>pҔqY%T L'MECԸ2܍q O*#4/xO˧99Y洮AO( kx=~ӂ_2~6w.Lv쀉fGܧ^zA%5~,{%62% fiR J-eft #聡`kxܒf{ ; n&%+>B{}3^}2Ӟw!$s=%s?0Bz{0!6#ߵsB1aUfa`"%SɅ |˰ݲ1akcԋ6oE(6 &R! mol@ڃTGb uRU3iO˽X. UC'jٚVx1/W9>j_0̞>X;,YP#5I4 y.z=_܃UR]Z3?HAX's~/&ߍZXm<%|V~؃S)V۲m GȨc:wA#8 l IJ}t搮慊WfP A3 \svVZBL!c,kl Mf`X$n*=xP5$KV%`e$ܺH1oCoVE:H(gueVXJgnR:ױ%*s{B$]6Rz" *,)鴫;(g-sAGU ÂH6fAWVd#$m¡fv}dRخ^i^H?o<*'@A_u&"'iܶʰ.ͷɝY/W$?^΢ k;\Gujr]/W~0KIOIXC_¢[pe'Q_s(+[< KYMi~;g?~Hp )2Yӕi:kb%aEFrVekڞ>A2W~x@δY 249$ dc%N|Hf:pPb wIg-oɦKVsl%Իl{3y\A5y*"SB3Ia5wt eފZA0:7s,IMx:A0l SE{D<=nOék M}ݯ 3<eIb$3a3QqnΙK_\F[*,(bI^z~˪ X69k㠠|U:s#{&xE1>1G;B7XC4p+5k43Bg~rB#lמ;ר!kɸ׮$,"Ӱ˄Q-4ޚAW.< ԯ`!Ru l+}I2s͚" eA;ߖuPS)&9 VY7m̘XbQ =C 7*W;ɫ{JTd\=k7蹸b}`%Ehq@,ϊ֐6 ,I-Hұ!ʏ^~jzh Wʳ>ѱFМܘ ^?{n9*EYXF۵ݦ{v6b {͛`g5n PZjY"=hGV0<LpH_%➈A bBq=Z]uv!^m=Dpl:xk+F2lD"sA)h|L t r|>96JFmciag75O_\Q`9=ё6Vaa#VD ^6њi ;4GVJ[9>Y}y>>Ƅ/~U""QuUxƐϖ&*˱mRCB)SҊ.$(? IܿIlkgz~ERe1 N#fl^ 43II[axؚOTBπt76^I 8e Zʖ:Ý>:_ NεʫѱYTBNB=ɒO$mb !R  XBWƱDCO?Nҳli~ 3j`'8J"UF/Un$ۋ]Gwwu RJDL \yr7 uUTlAzfĚ/Y( UcT+l =]e{/d%$"TOvkAJE#q#*<9#p?gf7_ES8Q ~3L\椬?P?KKj=^1frڂ &aP7q9(WyY 5O_&0"*]h]vt H{Z€#R^֗zp+ljJKYq2FsM`Ѐݕ\n ^og(:6rǵM{ikPJ 59Knܮȡ*|C@Sـ-Lfl8g($DZ;)Cqz L~ >o_ kߘiC'-8uuFF)tPjY~6>k{N@>\(wR~R (gMVnحʐS\H_}d14Z{9T]mLG+-@%S|HBoFYkG#g(C]EV9^67/ֿyj~ o1`26h[Oi jbb:vf (1juk(=vKNL \;Y̛ AmM(25ItoabA]iS:.XJWt'b$ gh{>ˍ *c׻ғI%Vz}0?Uv Io^vb ysQbZpsPN? Mn^9g\ҨS}Πf„|Jhv[ tN )>:*j kpW4%vNV;3n_~ J0׋i?{ZeXAw5h&~3p~@j?w?\vJ%좬رl.ےj ٱ/4f ^hxb[碈hǘl,X'fS +4Y`a5o;Cz4) L:2sKu'oe+e`ح|.&_/p(pF8l8k=2W:r >(ƦzŇ[ϋ*pn G%yojp\!s@.AX].d <M@4gwėy`іo&7gw  /}:IP;! 4O$T^{zqbl@b~3xLaĶ,sSŨFPL7}h爔WS`-yN)֝mkU:{|;:rCPvqo]_4pB}]fV~3)7Hd&.{Gʺog c]erJѓMIDӉ%Yi_.1RTTh*4Z]#I>ϮA43߇=G(]|z,B &l {'Y 5gBFcnkd14Yq+CG'.yS H)PG \FLĆؔi;bS>D @(J\C;bZb[&yh{ >M{ոz'z&f$ӊtWˀD3H"qPNʼnRRks"sQj*4ze5 F$iF Va~%MY;mfϽC؟u f2t3䚑ʫ[Ꮴw,S5mz"=}p\ߞ;`è S2&;FLXߔTf ) >?çf/&P[ܛOO&L"({'?ff`ͨe"IMZR֏F{pqFQ0^VG;eA" FJF^ip" ܫ_ S}[ZTNWZ6op&]^I}ڑV[Ж/'.ϐqoBXϴCK3j5;̔7>Fwq '<#Tǂ8t;LuggM koq_#*V.Ϫj4Đz@<^4x\l 7R֥z~VJ"yp4d 7N() %Ksұb{S]BϠ qň?eed(Qw H脁-:}t.](:{ۗV ߣ\~VI˺\h.y+DߓDsFn@@$pDdMohQz5/wU.f-[ӛHMBF2Aċ7,ȡ>gMi{݂sd˥ݺhm JUpcj@;(| /JYFw1'Sc]JF3]#nŰxu͖Lbpw k(:j|.mM3LzvTJI:PA.NęA:sǪGi!z;l[¸`U"rId1iBYv[ܤuc1 >! e:lvmӡ>'7+DƑ>SDʋvY޾ _"6RUGeWYӀ6 5e_^yVq:6;pL-\6y_~fĊ'*ԧ.ⴺ ]//蹂jjּZp'+݊sRm$]jAϥ$=RGaQŗp;eGhy ,hRQ ̏l<5n4! \ʾP02\_0E[YabR5$<,Mn{rzlc}0Yz9H-G(~'Zܵ5Ϝ@׻/>+yW棘o=;kB/*H)]@k$y-HB#1(f-ޓ[b٫sK#dS{L7*[wmBKYTTD>H\8GhKrpwOR@8F2ZL5p_\UGluE&LP5%*^E`ܰKAb p4oޒnҟɉ>Rm z'}>e .sqnǨ! ~kuJ+vw̟\ywxJFuw]= hM@D$WF&Qf‘iI`ß *JH^ ՙ5JHKXifw}Om/A#bg; _H'&g%{oy/2͝ߟb/1+4I]~R("jye\@1*Z4TpN4Q;2km-c-]+6#BFXŽ,oj25B"?E"لafO0IGJ.Tv>QmRr; 9(۪xab: 1Ƃ'hWh0}꘰Կ֭T^`+=KW2<%p8 tROU?Zuи"dž3K߮Rut%e;d."8UŒ|7'I Y~CB^ dg 5 &x xÍqΟJ uuI^ lSrEʼ 3."Ln(ǧzn@NR"AT$,.ᮌ4?*0_|mz2 Sz:#(ïS}:'P/T橘Ze$i9hLj,@o}%oމVJ!; .ClHҁOeNe:m&p^o睽%,7W[J0[':$ߗ qIgaH(ENkБ13PN ]&(bzw Je6IV4#brB!}+_^:ϮB(+)pnئlڌo`I6*YG4$L!pF|h%NN(86s3IT0H.pzMߦ=ny?l5 p4Ynz6b>@ʠn߈N/%Fʥme`exE8k|֤pJ%yAT'{ioBɵi9+eӏ;! fZ CTի˾' t)-a;v6*u (x<o°2^7Lc &×8qJʓSԅ<IHPVG8r o`U=~

{^$8P#m%3weD=9AmnMXQ)A|kF)N^jfuEOaی}FqY"/\ v [2n - ㎸V`h /gK qmXw|^9&%e]i`t==t/^]n{g 4 8#`6H,Υھ|N}ߛaoE?dFYɊ9vqyH&EM1]·Iv]xiY;wra>ر4iv\v(\Imwh;}!T+:/|"EDV[%ȕܝm\`id FW0B,7Ⱥ셒~' FܹE婋d)ǝE!H) lEѐ.⍨Z Z>YL O蠩+* g".hQ?;(h$*bn4TTθ@2/J}L0z,RF9lBˮ0f\Eu+p(Gd->X!g#fe}+%U&] ?uΞr}v k3QX CӤ7gȼ=')n+RS|K$.5$]r0'b̍_`p 殸T,(.8fQ\Cɂ6o{S4XX1fLM4v7Xyd j fMPOi+A,ww{U-1F QΥoƣ٘tH{ԄvIԿQpф5Zi~ۇLlW_Az|H.%=;וF\}̻L &dKٞ}?dNs ++&] Ub:6xO6 ,ZNj D9q TNujQt0|bI瘆Î+U#Rf&h7u]ijmx68p'eS0} ikU6زL%W/]TF?d? ?uc"ȭ<0?+zލ t-9.#>kvAJO0amD4VYjܨt>vúc쎴=]4dWJx8#5wuޜ>@UVh}9{d7z-UtϘ A󔀡}lKiu ,Z4Э[Siq;ڷ[_bviX]>yۙ= {o5O 9;T.q7C"F KU~+Uc]Rd+q Tz-q endstream endobj 444 0 obj << /Length1 721 /Length2 16831 /Length3 0 /Length 17387 /Filter /FlateDecode >> stream xlcp-vضmɊm۶$+Vl۶m{޽߽OS_]zv=5Ɉ\T=L*rFz22'SCK{;QCSn @ `fdd!;x:Y[(XZ:m,-nnnnήN$\,Lf6E-)y @jdci 46s6;l}ۙX'gs3ur-@NLUH\A^ & *03Jnײ1e_Q'[0LLKc &egf`?9@TSЮ66򆶦J{[WS'@?(C[K_"\ At05QtGj3C$_s35tw?z3Q{;-O*Ƞ%&JWX򏖆N&u+hhl ],=:?(aa{o:fF 3#5vur2sfmޘ'*%쏟Xl8/5e&dA +{Uw8@#fbxSe$~5[Jo`ض`7w.kAԓy5Ҏe|L1;V$(PLif-B^@ wnȰ ,:k=Qq,J&ҡs{ءɤDt %.F!~&oa#t3ZFjJ`C8x;FO( i$& 8eFG9<}O@!d#,$LJ|q e#yuNީJ~_u%" x#SthG}Nx Y}VGރ kRA0Dg] >TR*.|cw6}sB;JNh)(}nYD~op/8I/v3M$# y1KF@ߍX*b'gjI\8v(_O-Vg]{m͆[3BI}9@c'˯[s ֌RfaVLA ocHw 42FpW^ j X;ӎz<#\2kzF-kQEbgg5n h>m;p,4=Qe d4m3xn~kؒnf~v/No&ej[T /4hyYJ#C~&P^g2I_A*z'wUpl3wNzt/] $evU21O3d# :_~ l?!#>qtžO(IȏNn+6BoL̜{Tgp2M9E)POA{鬟UyVFHw@$` /dۥFx.xU5;بN1IG7|{T宝WBJ̆5£p͗1̣߽V?N'"?Fᦐj%$ ~3P9`_Na]du1 ] uҁ9z##拃x5GvּmeYJSLd|y3zF.kf63` {Լ9Ox={/f7W#xJ>oFf=dlaw%`U29˅ W,kL‹߯ۤ|͜Qe r8ކ,ɧ%usk0.ґ9)mOUȜݙ^a:lH'#RUq;{R@AIRzcNJE|{uVo-4(UQxkcwP0}\]ga[i8 5n`#[2bE c\|;c (8(qf*I w,@̌,/2;O~QQB(+gGt[A9txO+kphoṁ~*Yͮ*TjNb$ pmK-au Dz#nIyO.<~~\*?}M*V9g VCt#4FB1xF z#tw>=l(x n;ܩwл,¸Eu N Jd ߇A;7@2? =h`25YYcC,JnUl JK\k*cnGD hk>o_O^=$JZX*vA/0|{ku5e`x@vxko-+tZD@A.42*!&6&tGa1xsb$SB=HݑΣgzAxZWCA:a!|HN)!JbYqրg\vhdSIu0Is'U`$hYFƊ =.(R%REÈB% $cNS&T[y9(*,zXS$`{.ls~6& EWU6RwRwVf!!]s?qU1;gd3KN.oVtb;2v9,1l`y6)];}XY> \pWumqE˲;w=Cd"!z9oU>[* øhdioprL&Rb^SxjLoQirҕ1صS(W~]P]jA8^jQ%;ż;u|zN={_kZ羶[ưFˋn)|?{A5;?160\Gijz,? I=.%WNڴDЦ-҅@@Ca+" rM 4(z@'.gXXxNaoqrx;w̵=.P1*9@kִ )j쁎_l UyĒ.?I"8S"aW+'ϯ_-%t[Q(V$M:8 y|"?XaRx[W!{dtQHv%(TԝX /TC "0~r-3T2zǗV$u^Ƒr Fϕ m }lpd>4qRcR)jwVzF7s/>q/TOWoO&G,Hrwkn$o94 ՃPM}"IBuNasa6p˅³wX,mvQ1gƦmcdo0rKxP|Xi9bbhD_J CLA|@ XEuS/"`M_`׃X }_x_̶A7ű[lwGCwM_ |]~%L!F+ySX3H\^TL: lF_9g :M̠ < 7AN(me\֗F4[9=!ݽd>U2p G x`<"&F̲$,o40(Yv4}ߘe"BJ!b E:ek\F4LO#A^4I'%`'5\ĶHC$TMT BY$%M;Li\[V1 UR QzmA`0 4b#;1+$NAn/QF!dyW,5 *;o茦w;1^;`uY5+ ?`(SYWg {aIw̚1ڥ͓1IH()C 70F.dG*^~A,^D sUXkzM,!+F3/N OgS&Po5 O?Q fWs?(`#4}9_^cwP:IuaPg~l!5uarZ})8KQ:_HP](6[jfa lچ. tڶQ&&"}Oe Ѩ=+joD_-]~v"o] y{R8-Yz_1Ic [5V/il,Q\25:3eG,Ir'y8sO}QPJ:3>s:hʎ2fMI!*ZM02+PNt@#I9 (<(-M% EnGwۍ[uj:g0I_s2x\M=]`nRLji12Uc=Eҩ́ ix rc`C[ vg^B=4wB(I=8sWzW uwǒ{uч7-ؔ9eS.5w {/(OT?XzAMՌPZ]a`ʸB j&9@*uq6\#=Hn@CM:6rBI\(ҕF PKI;t^LiMHҠL-\L.YŎ+j?=#mF۞(GOas6Zd(BGww_ 9c 4O O.Yd**YUW7e>1ޕB P,~ۿM#n\ZiAGYrϾPm1Og^>\9aV]bt*FD}W%[jF< .Hӷ79[-5:ޯev ZrDE[`YƤv򵟚'wa&;MMOJ%UHo6s |+HQ<_4);ʅTSxd*cWw Ѵ> Y=m3o2WSpأ.P(| [k،8'#}$+PzՌK>.Vo3g}v:(74a(=1ʙ%5}=Hv"t*Of l^u;/OyZ6`= UnOQ({}UsxEE]{,YYu$ҡ]yN:"l(S8id3ND++`Q6<Ȩ/--:"Q f(F|^xj&hR-sλj3 ߲;U oVo{ o5e<]٣xD&CSfj9/d0h/%FyhBdP<^(ŧ.ᅩQM3IlN*B"j?ۉ"YrVYsCboyН]f{g( Ut俨ռ{OAA:{_D3!h @hH"DUTI{J2xŨP I.eX,&mٛԕȇ`l-n'&&=~PY+Pů6LF5*WLr;]|gXso=_~WVՉ$k(qfxqoIYv֮=kf զ]Xɒ@r)u9| Zd7Lp9:x䑝3ٌK їF^)ޯ.h0d NXnHOɮN_F!Ѹ^n}VK(r„⇹=$!b[Id,Xda'~d0Nj,F o*3߷5y.Ċqn`AL"z^Ӯǐpw0ٝR:TDpZUK S)C|Äi$t* oR}<^,`ikv*wAjgh!Oҫ g|dHg \^Vؚ0]c_;f4SI)LD#ܺyNn ܎s c/k;⒩g}5bb)i~@1aF>f;.xKlr߉af?(=*LR@WoP"9炱}B}^1>xƏư>u֮8 06q9G;؟i>J7߷u0mΌSƙYe?g}]|J?np/~"xtz&Jΰ ҡb4O$-uOvXߎkA_0ɪ2 =.0 ÆC&uu~(ggi W,n 1ţZ7ubT)h23oIEc @Tjk$B@&`q^:]nyCx^'-gn$jl=l4!] ;n^_ֵ)ٖ^6$O[a{ /ƞY"A[idnZԭ$,眐ϭcC YJnZXn.&pn3z6xk_Vp􆋕?FJWWt%{9}t+>@L"<tnZ50ou+#-d~A3dOHHCqEjie:Jq ?%xe\TQTVbvDJ37RNkK~N7Rȵ\n"ëO^tg®$4iku㻬U<ݩ[kĤ2Պ1anz򽑿-q+ڣr90:ETߣNiڋ*MMH'|mnSH*ەŀ`#^l"ԈqwB$4EHW2̙"4 |`qTv}"tbs $v+t_2̖7t-n!Y+;aT eU/p5>0307( s:$\; "/YWC<1;?b Y$*Xܽ-T G /د\?!C Ȑ4s)bP Z%`'\lBj.5P׃@מ?ZSYa>xzMKm5K/s}L](u2p bTzvӾyECV1%Fo*{LvCh%4Ie>"bPvb |*P5îc]?MKOKg.=EDj1Wӎງl3  _z#Q1b%O&iπxڋ}CCZh 5mplFA$|ZWl5v;֝EAJ b~J]ɤDׇխfVIjEZok4jnKUeZU͚UDrL5z3m\RH*i{=Pzo>қX>CP<dUń-6F"̈lҽPsCV>ucÎW 5./MDwZň(6әB"nfd0(ݱɹVX],'0\H濮$4J?6q**J)2o]:[,T&+tR[/т 0A)A[>;8K_j߲?/!.;<⹣, ?_0ۿ&m73[G+CKQ aN 9TM!*\Ƈ" d;TPogK=!Npu9 *f #Azhhq$.nS2+w QuoPMQQX)^w)X'?񠃛$q/ʗ:bik6BdO olaV<{ ㌡VW:Tq!T~aa&k \gz9gi@-@T;ƕw,1MЬ4$W(?ɫ92VSΙ 6,>s'!+/ Nτ ^ζ8AS%o#g~36Lx k$,]';9Y>ߞ'q`%'Axv$tO26&eamXrv(C]sq?rb|ZɊCV&'+BhpGE R#yf-ٟ`Hj1re :a!:˯+j %9<ݾQFթm&+3C Csh~E`J0ʷ^}w 6C0O9BA}GFcIJtI>J澤rShO,!YV3bq껀 r"S墯(6[QXXM/+Q:ACQZ?ɥσ٤L2=[߆qxb$_㈚$e0kZkթ,Yg91Zp8\04l_W.U&UNYp`@kE ~մo/G>إheyE/*ŝ"6Aiv`K"* A-ѯSySjO`yeQ9=Dz걤Y$A`Xn<eJİ͋${! # WͫyGHUj{D;u{k}Xd[WXB/Qay]:gZwY%[TCuXUiMKv9j. ĽF-kNGwu?7˼ ѯ>c2cB>ؒUXE|2~ʑm>5_t"{RtTB͏Gs/q7i*)1o~,Eܴ++,w$wަKR3dÝ[0+ F6u1gz/,ܢGجC/Yʲ j{ t(b.xj78_1|k|zڥv ~M<;2)B˛C6A|c*_ȟIwgBK{}̟7S!+ΐ] Jnb`\oK8C$0FꬋorMԽ._{利S'ٟy㸓EH?2 0(GU]EX26BGM_/9n,y/?=&>LES7_ݘ'cR@ v/}y})ǟq$!ªtI^JnÖRmUQD]L1o' 1Xl5S}Z'u_:9Vag$:oZW4mW=8C5)9mz)@^1!8,wH:ӣ;ET)/3+WBQV6/<(Wod$sMHb1ÊxŎ0UHV 7!Pg?x烆# P?^!"S3[Μ-{ 3"`ru$ֹ)Ė _dÌUfyvAbP{+;~G V盤Beh:sdłjj'ּ#=}閿eaeV'еA+"͐( 9ݸ"Hf!BF~%/p E `7 zO1VjuE2y-ݻs\bдMm  JSJA2Nkmp䴺{?v1Q*b$@5?V$(^ (k̆X8hIta ' E˼aDjtODF[XERY[j~ Xn2ie8myW%[me9^:zb4eWMF.Vz+ ;iɯ(t2w'8󞜠@͠Ve3C˂ց]K9Aÿy u^<g q[mDy@zdlh%P(n`wS1ሷ.a弟SENE[DYVwŠkǂO V$|7*tQUxiV-mTe: x5QaZf1(8H1N[ϗֽb]^fCh@/\赨bi 3Fy$f3ktc@q3M}>ki^ry(: Cwo+o| Cx:o2g1}tmGR8?]IۂnN12=-> ͽt+J1_=`^g /c3@Ԕ_m-d`STK~j('^(β^=}^2M2@lE`X+JE#uw22H>LY5F1X!b &)!ԞRD5ؕNP|4ڨT/)ܢsqn0guU?׫WHA C!HIﯙy0.I< 0L-.(*Z;$0ZgYqv@H.a&tcKˬ.IB;7#XѩH dUboǵ4_T:Jil.4x\o坄0CӚ|V@YB`*w-$ݾy co-EU>FL5s$B.|j4S5iZ۹Oa[B}O7]"Y@'dТ#yX_*=x?>G}i:f!.]Q%3X>Ņ8 Ab<SG#vRd^ (t%zΆ CO~kzAV`oލXɚ*`P=m7jU pR);/q\5 { I,n5̌u[(&>RPݘ1X`:2pZSڙ=uͫh\z"?Nh7q*krLEf9cӫOFĖ2fX)W3@ c%xOA OYeZ9ʠir𸢨 HɡjY eyKbnh[:V=Ʃ荢T´Y1hxU +w .9\i~ॠ"/юìPސMJGi΢hRlMq5[#^DСMD5_;x`sQâѫ9MR W0vG #/g>|blZZ[Fm- .B>`xtOÔda!ªR/2<o&[ˣnV+0۽ƗBWPP~5<\+ endstream endobj 446 0 obj << /Length1 721 /Length2 15218 /Length3 0 /Length 15797 /Filter /FlateDecode >> stream xmxcpfݺmر7m۶7mv';m۶;}TZYsEɳ0vH{ ~VFG=by/!_ڨGU"=l@ښǴSJ<~Gvm0P,iKTfsHWdK<"yӶ \y ЛFF\(EGKwA;Chn!:u8;2!,ܺ?h\s&'?/Zo16鍡gr\Q/ iיiL58x3r"y9#wRm~B=IcɟDex_N7^Rd)9uwV:),ثYcg&h%]YՐ/?oRI)NxH0>@ץ7,2 M/D d&NrPVaHA!9k큌YKh敂*5nZ(w)!'=ZPzc,+0q9^VG9#T1>ktAs!ltBg?W_:eEKmM&܄(csZ'_XBy?U[nF[ ibi%_gt|d%9DM τv>Evkl -GQђQ0wJ_;8{ wԄΫx<I6>-|GJ`,2a66% |Lk*_QԀUHoldЬ^WѐcG3bqr@C )^z6CSG/Z%0G::obTWJ(5,^$v{C__I/vG2+in ,TZ[:##ߛ!6(Pw&"%G1yocJU$H[~x)5pK;z.#EΜwB4 :ɥ=wikCHZ;o?ږ%%,PVR%&+_3QжK:{QIUҊ@p6"K| ,4j1$`07gŻ[i2='8C}_Zmeq N,:PM\{~oOHϮY2efPWq|Fx4(ϧ_v ͦ0MIRvw]+_@ߧ86,\7cɚVy 9EyG΅,G2~;,pWQ9Ip_//:X3'J7Hϖƛ*g92ː!rE*GURT|e Kw:>cE~d3 DH4+M 3aDF~7sʇ|9ɡ[va/W#1Ms]`ߓU򊣺Caxmm/e¡/>Nuk7#DM@fdF\r'/x+i&CNhҗl֍bkZkh!6ؙ}\y;&n`M=S'R f@sr.2ϳx&{r˴ n.nܠplF$a9}i\<ƿm`T5~3uu0dX7 ` l?#[ry'3ZZ7}$~nQ\nxS#wEGu:pBz`a~<i. },^ VP;ul0L=BFrߥ}Rv) ֣3۬n$ury^y y"͟qG]8+csAuݦ<}OQ Záfq /{KYurjM sl #$sDP|XF{*|DB|E;4DWÛbeM)NBJxI(f%朿#W%q+736{Oב܏^k&rl d3+rxa˅5jV7A~f$kko܀Pnq:B'h{I:sgu@@>V7Ou4.t OѯGziEHnna?$hnԖ1}[寄E fA%R_-GAs!F9˧$!,wez%7Z؝=ZXL3.Onf*GL F .&j`.H-?_p>d%Blp?x$< <Ɲ0<;ٳ"Vs!GÉ y-)RS!͏ dC[bmy'ugTvQ&㸨Љx:G-3p&ʰN:g*c5wps\ʊXa&}9Ɏܽi]^XlMIQB.U|/TStSq%-vl(~%O#eۤߝ3X^z©>P![a ]< ۱[Ww[tbv|^^B>Eb“+RD\3q!ud>ڽu&SE#cC{!R;=m/6r: MxL8EJ㽱 st=Adw[ͭU7B6`^?Gͩ6=|!oy 23TKt^\.Ғ},ʗʯ6 =c$??fV?WM6hMƇGY@R-onC5ff}J3/p`T*X>ర|rbQq#tj5/3Z8Ozҋk~J|wsQty]IfQy<>L3bIty'J:s+'^gVo98X/pމ_vCs'̈(ISzsj9VG-V}AN83VI3 'y0*b;UW(KxՖr$X(yOWK>(^Tx$|n0\mk͡ r|S\ ~fi5*RvYKw*̎nLI.)HֵJ4gM!kw"'gc\7Y 2j`mvw*"'AC6P6~i=$s|sn؟Ly fb2V+ 4رw}k:<3fQTםoT7T5v魺YCgs_x ߕg_8,;s[l6[/mńCmW%CN oۡ4䝻W -:GcVvKN>q$`;(k\ Ge) ڔ*1BDj_%^v3j2>CSϗKT)O6;Ƌ:QCw,pu<^ I _@\c TMFCM/s[euO*'eciתVP[*aIGeGC~)X2#$Qxzle ͱ&8J[K(6}*Vh$d]ΆE'"ݶX'4)!O68'q.3"G5B(‘,lz 8j3(}5Wy>_2],J}1xoi(T+@Tk,X k JqdRdr"S7|zf<6;۪* ۮղ?WO,{ ϥV =pp2'Jzr=}cLAp;) 3|KCXK^ry4e!86)H % o AڏɻOWI̢#>aw Ί $6c|xrLVY̷m~)F)Pk;n`JwsU,gIؕV&(-pHĺ1]B#Ϭy6 b84UF I2BN]SAE Ѳ.R5% 0EʅR*Bcflp[>gz!&ɜ,oأLJȋi+RwX\Kc)XE+ ۺCv D}+d1ɥn@L&&} |rXvkDfE{, o]e.Rv.v2so f`#Ʌ 6N+^`#XWދu4.[u'Q%ƷO1Sw'3nW=_mM)dlvT9zuAy3iWuMG!]!g%,hbjN"o~l(;QsW$/BvJ"ktNCtc;?ڳ`_R!$Dm"kjLv F -d_͐fױ3>i--cknt=>r*)Rާ11 LQbb&ⓉWy@'ZWowQ XSQ}[52x5`c<|ӢQg,8;SӠa3rܯi_y*I~XMo]3aj;nAu.PxH6%I?lc m "רʷg`Iۀtݧ|u%h/@=nmu0U²r֟;USkb"_ėfVt;8l>Xoo?ABaS [] Nu{k ;'>raoȪ.+*u%R^gC;!0͎վ%$Pp&x1GT>/ϒ=JX g8P=Ƨݚ]0y+3yH\k۾OCW1%@[ųGB&\v 1OW"C,ٿƒ?jp^%V6dƟA0_Lu;G񏯊o\*]>F!g"= 9C#ӰuFjKӳSυKEK市{dz+!V힝 —O'֙D׾~q<ұ|wuDNq.|Ɉ:؎_W5VK ؃ daJPi=ʄ J4<'x4՝ھ Bi~(x#Hռ`l-N1)fxK_Xr2w2`nVwqNTY䀑yT<z+"B}%E4^VurozE4wq{ֲ;k}7cq6w3*!qkf Y@\t: ' 2BB3Q#wER(*(yzsq8h "0Ķqi#I#΅Ϭn:~5C_Q:͑ETm moUe8^o#?UP[m',8{qTOR^7Z3XD%r,xx|o ೆiKFwwGz\SQs 2@+;%>a,JEoM^8Gl/󲲐]CiI0H[}CGb+^(q5sb~~+#__|xvVd'nˌ&qg֤xS9Mqv5"+Ÿ_+PB(T@Υ4%6 y\֍>zr*H"8eV%]bP]_^3aW:+vP(;5'PEcCZ'*_mvnjtQks̽<2%1N'aptAK$ޠ;ތԌ5P{M9ɷ(ǗyEݽ"~B:1F Ty9go vZwEͻh^UVW1S^bIa?έT(تrNU܇U^ + t a"]໠Mk3p&],KVQWh YVɜ%wtFF]y{ahX`jleiZ̯՟5ӹTlq/0`\/_`;Q{\i6 ?&<6b  Jb Bn N vO$rqڏ(VZ@ GH>no86TW%moAnfފcߍ<6ʊ\4oLE%>"D MLp1᫟VSjlIWӤ=Pi>tCR"1-1/3oZ[ޒ4}V9 /⦤I$FNt?h)loreg'ÿG'+1,Ov*Apz)B%fICY{SP@ kxD@"XZSȉAz%LGl,ƨ%Mg Un}ay GWS'mZ%VkچXeze%\@^ uG r?5X/!=kgO׮÷A|c_'(eKRYrQDs8 p K[e;'5?^mGE=y+o#\*N)Ǯ>pz`b<pI)vO 2?N1^ģcw W4UE $܎"UqGE3X,|UǬPLZy[EQioAQ6_\JTJW]׳XYyP̋m(a0P&U-)w&B`VƀsN6Fw7E"aZs7˰EK} sE)gBlPPU9Um+~'2&hwm%>A?q4,1o>Kqc {$[Ƈ9m ..'* z'E:}M DSƃX05c/9p5ɵܷR576|@soʴ=ӘI)m:vTUڍWK?qY=Rp\ףpTp_+g Iw.F/]EFz) %f5졓bC|KW/q怯 ;Y˳O~6F`+33By'&`u8ja7ꢾ'6V$E۠ 2_3& 89@aײkuǷk!L8&K4q)^e68(]w 1o^kZDKKKF`/ʏ4@f7}FA95ꏈ #J\" 6"XSn{_< zx+ڕ/i &}nm<dliqE_RWnrUrQk$!!$&3OրDzyv.\}2iϛ e8vV3$8)2rZũ `6HE?y&u'Jԓ8ҋ3pDZަBo&\^)[E폘?؊S!#y<4t -j"]2 1ؼGC@ՕqkE6!MT6`Je߾Q lvMt&`2F% @>a}=?Nx(-ۺI|&8$X9F${[%ppm.$S͡8f.ҿ ^ 9[& |"-BNkSOd@̈L~G敨LyS}IEDP`FXK{PCPmdm!5pC aa2\' ,S=Zo>{ymte0Sr!\$Imnh6Wkc{TY|_Bқ2,KG$_"XմyUqoU*.]?QQ[b":sFY2 P?hv+?%.ڪ;9/$kK)MG#`_6h՝θb͟Fj.\*N,9Xd8-r}%h3܌%r9N۝3-!)qеA~(ܵ?:{. ߵckt&-*U}`,=Vh G ҙ&$`wD Lڶ Ol/y+@|])1.=5ZoŏlLN}}o-a]?a fwfufal'A?l tM-o0369%ާvcJXdҊ{VjCg9eI#V 287ȷ Nu|sq3)+gǛq+e1"@-DJn`RT@,jJ9c {,ESxcF>!0\N$5Ե(LuB%Wϫ#?`G妎&敥T[zf_O-XKqecSeP4˅%T`ǂz,韎b">h~6xX Uҗ *}cfP\[]tg_ls+T^`7B+!WtHhuܣ %KZVg@,9aV L?8>Wj?BذO\YAb*RҀid 9/c2Fx*c5M(fj'z@ QMޙތN=VW*X,c1Ț]7Tf1&j07⡨Ac4v:D /,Y1xj5uy46 .Th^J!r k@=GfUB>JaYE 6SRV-tM;|O]bc'V&UEط? ҨXH{&JUTH'אT kS jj8>pP #ivsJʌ |mqHbrAԨì:s~+*nu8&*!eA#'mOZ7`-6dA)Cķm"$dLl" !8Tʭ+@+vxls"#a\2'xWjϮ2wϪϥS51 *AyRCt͡x7:Dx" ->Б _{ GΊE"1{UZ7iffNQkeތuG$VwB8dsKu at}`88&CVd;hi8֌PwJ$#9HRg[jgrQ'Ui- -CѾN?{ܙ*<(2g7ISC4qN35yɒ+4SC(e o!0@m+[+9Ί:&CoZf&p61 jtU0N_b5>BU\RjUմPx\B{+`8 ikoS)f/Ǻ/uX#5-Vr+T8މ]'PS$bhB*/Bm&}w8ևx}ݥ̥WRN1%JAw(:X :04 (oP6?AKҁLa֋fWERd.[&]8 9U<:/o>!VSNV9- o֧{ hAe'}):kri'(}3֠CpTK!)d7&/19ՓZ&zMpsu&-d,* 5=Ul+Zt>W (gu&;&"EB Gk~Git_ljlZ'yE5t[D߿4RĜT5VHG ōKYkٿS5'8At*bL8,v)_Nfi]Y;r|8j]ݿg0VdJW^<"cǯq=iGq(_}Zŵ8+h 0kz]^dm[J~RzfѠQq+dܖZhx-L}H5@{h*b2ip ZJfeĊZl]|f¤ʎsn\^e tL3,0dA5Д~"^q}7T򄥐 J"G`e:y섏7KTB1ƁlD*('#+߀47^x$wVY]@x binMCvfzC fJ*hW[i3劄@5dĤe/64D'դ!fo)fZ;b'g\IĞ6hۛrW+ۇ˽x]WD@58[aPx4!eAD%I1u`: 7w@[l,i1o)CP*ap0\A"ȑE]ߍiۥBN \h87rW)F֢۹ϮօfYG Oʭ6y?ZYm ?e6e ~[" TO)~*&r<^dM9$;($q|e±_C 0TϏa|(7ߢ4߭[jvXκ"h `k] 0ʩCl֓?LXn s{??"ٯ endstream endobj 448 0 obj << /Length1 721 /Length2 23891 /Length3 0 /Length 24479 /Filter /FlateDecode >> stream xln]-Zvm[lmNٶm۶m۶77yĘYc5VI EmmiJ2L :fRRac}'s[N\5c#  lk`nj0wjodnmPu174𸸸8:98Sdl p23[5$db*1cc}+!@ј`b012'Gq1vp5@FDYPTNV "L, з1HSn_gY2,:FF_Iؘ6roBP!%1B ckd`Pַ/JN hcr ;ɛ;#?;f}162wO?zF6Vg*El mmLJNh`4/`bx0QBBnZf&#?/N]Cgc O/=HnƆ0k˶܁)e"Գz*ˌ+S7ZHfFWعpx3~;MD1pدE[ you:`Xֆ`7awNikT,Ւ%Hbz}۱ 6bpUfA{k !p7Xfe~v!;mf^ H* {B>uWgYzoa!\Q46?ooI$W c]LM7X*j01X/V,6N:X) B^TMoq(!qo V)ͼLvf8G/2lT ƻX `nz]rϠ}>=9DeޛI/:'aTL:P6w)/VȿV? V:ƏK-ѿzdaKݗt\=zX7e-s.YWq~D`d04WpBfpޝ&кQ 8qd̹Tu6@ g ^Cهύ 4dz{^gHfV;Dn'&„u[5V]k}RIe{Cm^ebs;`  Ptю^QB"Ⱥ0ccN YձZۿkd7N}EMf!D0 MPsyhΊb菲jc|TJ&3Mm5>l CM4 OezW*dR_yL;[D'_XmɊMþHݲ;Cvawq=[^ iR,sRZ(OnuRUd>b={۲ ۥj/eaOu#Ye;BSVCs4)h L{ÔιZvl# i-,ΆT,wnDwj.eyz&>e `ıtYIrE|T-%$@-z+M,* a_(4*7?AZL;o $ckS`9rC;kdAx9HYVOu|:O$[Ba1kq0}=Et[15|%haЂ:ӓ䂘ơqw+U4c VZ;-5p9gQٌSL6}bKM m"Gh%T=ɔOsR,;h;eҏ{xs#:H܉˻ZSiHy,X\Ygr\ XݶiBS+||b)]s9l/8:QfH.yVn/re_"6%* ѝ8_]֠oNc]ܿF5o  ,x Fw2T"2*#1&BFAQ)*/eX,c&VIG =N`s8=JfKBHo/o$|_D_+%}هȺ|n$E KDmhh#p7 H(MJ|#Sҵ̵jx7})L^OB3 SԠRUh:g[k˶'> 90NtxI3a|}ٙ^Tͫn+5X3VB :DyPbevY+PWikJ `Z]J,y*>PkO_m{iBLc:LL05e(Cj쩀Y2p\ehzDPQ=\?~y(f_' r4z3D #oćM,pމ`sLQ+zh@A(L@!\Plؒ,1yuɾ tO}#$S+[~V&gB?2#:\u^=Ik\ek'b$^7pC1N'9lP^ }l+D" AAƂ)8t񞴟7z #s.%? ~/~[#ҥ0Tc7uGn,6 A.jf{)w>:aI œnf!)ƶt:#ڟ MQ+\\^gQid?KQ@-fZTKF12ްȕu riƩ+$J!FCŴŽHLoQr-)*B=+|gY-7TԼ~%J̏ק+mۃ3[͠^\sbu&H7{u\7 )B$)?#`ZVʮiB~}ۉj.Aa{=\SS!h27 ,y8ro5Dx8&Dj\!˜6h]&1iD=G;pa賲&w iѰˍg!A!b,4pik]c{,n4Ð+s7,K /Y\^zgm%F4jRt8"n;me9zۤ:xkGIWfi6x8E&)8(I 'H_|2ucr+#,ڠ91LwDbpF,'ֽnEڪ93# NeSbUbtlrFZI+RelCfêz0ֹL{gzM[%bWn6{{Ov=vr"i87?/RiLIE㉱f9cXM赓F"^kNoR.zQ'pvskFtW/ŸL8!O0PѢ=PlnVN.&o#c=΀`]DISR!9VG*KlDw_FBקy "v^B;eP]T>CHJ8;:^uD iJzyɈE#ACۗs~t~uWI}F:`0]eYmbΠYl ;UKDgbL48Hf$s (0vbeȕWYt"̫䄨W``BG+޾ܩ^@z'. 'c"dȓto7};"7S1Ӧm3Fu>gŌW6&+W_z8,xNnpaAD;KK~~*'z٪ZZYl(45$3'х 7(AMV6OQASܞqr tGw]3tVHekyjS@VMg&jI9p1b>`6m;H^rHs{@ެ[ E1Gضh;L iIwNЩ½T%x`2bE .?+ݦ7 }E1]ObOF ys,p?qW`n ӁY$"渵UѪ-Bkh"=Q 7r7Gݴ/q"G+qߏGe絞2)p t-'NUrng7A^޺wJ  G= iۻ dzd'NQ#RPYG=)F`_0 B,sPܤbQ{vgRl;$ֵs`;sȉ'rqk;9dKKPpRߠg<5dfÕ8ѴqSEl5NOIJ֋tCu5|GDf<# Q3DB9xcIm5 *.1^m LT l\^U٧ ri w"V./ECpRk))}ArP3KLc-`˾zB,%R;+r(j5]cb!c 閌2J+A1kh/6P{F<%oh 5J_;0 \I"[m鑅m8dW(ޛ*]!θl6-hDrok56wޗzOa,9KdؙT|>=6j:bƿm*_zhLVY!C o<wJQ9=};<=f'ֽ.NHht%O<ȯ(my6։ hgNܡ9-Y(IX #4N mgSKhH˃Nndb܄/j?dAz`g#eM;D6}kj ]uUXNI}#R`MGQy/3sФ4vVeVldI u$՛ɞ7f k C!O MڡXI#qNpTLi$j ޹i@<1"Xz>;*1nc0iB%LuP&$Mnh@ȼ^S0"Y2a%fw.O 9:‡ebAGZ0&g[M~qHܒ$\ )ȈFOPI-:ae^UtlvT%/@n$^ ̫I-r.$-^4MPe4)7f%S4u'K߇+NA|]7qrsB/ 3-He(̊:UK9wcZ0j XjF-Fj1|-x e٫ڃU@b"/>jDZ`j)H-5 {#˨o قՃ(t؀J.z t07WsT0 !R|(3w%6zX'шؼc¬_O(H[ȳZ-?"@&P}TrͲ6/;˰FSy)k՜ۉdm#hbdITF*_:'}{t"Yw~;'Ï~u Ű,O*./0CN 1r, _%&ڜG!J:j6Ҥbo pjٜCt"FQrɼEZ-qJzVEtL ;.%j08t)3(HGͫlMd_kA9Q,P<gs[l d!F=[ F 3} ȡ0 cCVTaz&]%'՘:*%E' N84\!.Z5gKF+T")U¡= !_ڿ~P6QG_KE7\s{3=Hx4s/0iE\aTإݳWcf8a9eyAo}zlYqR l)m1Ձ. g5̵HeSH4 *\&`TEqGWIƉX>rYOHMgMH n G5hrv9d4@i&D=m`jb w&;*C#L [bי%D1uDZbrY_}tkE)ܩ\o;`)ͯ.BTHfp`niA*GU["R5# C ;aH9p F|ԉJ#|dcT/$y Ir] KYԱa6T865j/MLdڌ QoFpR/,kUlF, UoAa_M#%Њ-!Ebw‚>_]IbE"Tw:ZN7Ƈ>JX`}VRD1  %+)cnHyXzN$H4AD9g>1R'ݪ<)BrN50ng"n¬4z r+b⑼ҹq))yԹc|A{@}y:i ͱō$WN%yVZgF\KǴp{ Zpa}<- 4I\2^H?.An:ַWl:8Hcwau* !gVʸq-,a!_ᵭ@<$ x_i/jr[5ݪZu ^8;PE* 5[ܝ Y]R9.NlyGO]ϱaZ7r+"ۆB:c[D kFpăS'jY35x߻b/ nl~E)'5k!udOq|^/؞BhK{|x#mtJiƩ?߰Xjs(_'~rڳ GMm[b%{f)ba.Fy=x:kЦ> Fr8;"\np!zI7&+b =3FYgx)xl8j|V{- |*V#]њ}.N>&΢`t?N!NQ|!ؘrNSoUٹFiH%6T߳}C +{T}(Ԙk\&u7εϖQAb m)< ˜S< RΈۓtT[{qQ,D6d4TU Z-cDcΣJeU;(޼S>Bb+NF20 [@rK䉇I?|$Dg2oxηn9]PO֏S>y) eM:z~]1h!+E'`0X7㊟_bw~a kuTh*yDLb_=xN'j侞bYWv➩-FtΖ@ (||쉖H$zDMorn4N*C]@Ҙ_s]qN,]LPL_b AD1j)S]Ⱦ/Oᮇ!}@Fc`y fF-M#RxQn8> LT&OhAfmArlSMriOUs?[­ D(tl?r;\CB<9E]_?1ڦ1%dP;ފgUh6Jc3Y5w>%w>TtN~!דix4G|]|twz#-<U`tE-LS,,+ 7${,JBɩxw~q(YI湡NML? q\"EU`F*.s` TP𖈠SkK;{,57O"\UiK>d|Z3p<8q;a;Dx- S 1'Vq ,&r)f4uى]tsݣW }/M"tJY9-p ^ &um~փ|StC [DCV0Jo_;PO:IK^Ů/PRELQ<1'Jg1ȔmQ|R7t/eA[uʉ.D]=x\=n+Gr#B Tx=adWTd~6jS0B gY(փ[$<T1o8-u {ڋo51 FŴuݞpvÃզ% tό~\++/K(5lx祖sUOO?_VNj)WvuqaXC ۜbU% ʼnAoWR 8LsmvrTzs^ Xlp|ǸN^ zI1'Æ>!cnFud!wm drՕyN-ҿ 􊟲w[BYEDZ&0ZNXJq a6T}L';iȡ)}zh_eS,*6QHG {xb\\t5q NJ7|V6^HR<݈D6@,I^ĬAFq>f@9R\CKz5!bWڗN,0w]*Ѝ)%y*d=J4x2QMZ%яQ鹿x r耒猢!Fy5o*BTW;&`D~Hqi2Mf(0Bi}-w+0G 370au{Y kryW{W:~[1c )˫R Wh9#HeiPÄ 4!JKq|FQcFX(-7OQk d ??ek|V-;b||D3 -JjQ0>VPn3)A.275(D sp- 2?񯈻V@`J)Z(oWr={gĘ^1a@[G%t+EQi|`57 ea VPzF0]d}PF{KDb|)g_SՌK {n9 3LJ0:'F'X#V1p,n:}:lua<%Qw^>sQr\!TܘR?.rzyR=טXñI sKT3R. +Ci/gvpHR^:&%l7A[clHa[kp`=cw&0#K88ΤYkʯ A_&Ɍ OR/Z81+;>mNf] ,r|DnzH\oWiyg9k6yC>Kz471#>Wm!Wt)LVVZW7w6)Y&@gBn5_:vq*~B;wu=Lm jY63Zt ; MNjc&X -5pbkekh7B]R,_@6agyrZ-Bz&d;'N~: V~":a>H}/IĀ`ng38+[*W!FO6C~g ?V*H.GErJI>aUg%^$Ty67@$o;\w>pyPgSIG8򯹋xpaYxu\V }O2&el١gd5Rz X3?!DeZu!kB dˊ-Zٓ!1a?틿X}ZUA6hnX ͕))pg%ڂ6M{ M}bɆaI#9~uC);15vUd۰"fsõlʹVqrg{, 1PpMe)Cn?_{Cb<+MRľ*rL8(y{*²oR=;gw ltxF øMЈ9 !}2J@*.udcl-(θ5=!3{咗^6͐oT8s'XC2p7Os0=2FQLn3yO]t- Sz,7]{'=Z6<(Y\YEpwGbNIt<4qR*Eՠ2ٽy4$b09A'0arx&+Q۪e䓾"O7uv06Kcd9"L&ɄFu)RWTT(Rpoe=ΎfOۗHƬk|cu-@R/&a?*pSyX}|vVJ%)dgW\ n4 <~ 8ZFZhb@Bvfc\s(HRѧªQN؛3\W#6xLPj%2 @Ң{Lq@ R;ڜ$C5-%C"anb  ;jstV,o16n7Cy3< nKLúEc&!,ۨݟ~mP>DpE281j+j"<=b;D6G"~< fTYxJHWH(q^).?Jنm؝8$1[~2rGs1N5ʰF(bz_uqfE8@mZcnYUgmkQhDb`S%}B}J/UM)r15}pE8c) gB<؉@gD?[ӓ܁®`zsLdG+kщbT Y/Y\o C- $XL``/dÄrSrAHkӊi0+6~^>kvm^DYt_p,&AC,4jyD8o+ʏ'NKϮFГemrkr#~p IK6yvtֵvAL+C1 5*s\mpۚA^q ae/@#ٍ<:vGw9 t(K;n3zG5ܶ(Au\5A3˯x~+۰*ϿJ@`}H9pYJW<6C4!9~hqe',.B]wAP-Pu~X zCGҪtgK6\Đi1=g+y>647Zҕu݋5#RLOmCr^QL%T җY߆UgKɦ+SD܆PƂuj}}U9d!B| ̿r970s/˴cQBrvfP E Ondw +,r>Up(>ɊrQ&כ7ɸႴ[R?7S/MS(߀V?е I]qMקxDiv0r!]bnG(+¯`ESb 7^׭6qg/@w; exxivlW=!xpΠMI;)t)oZ>S@EhE35qrO&"^jAmGS|-@'<00rRvXFy5dSt >EF˖Ε2A9+Vcw`BBohU}V˖gS8۷7raۇnj΂pB;S^2cď9=F/tVo=EG| T)À=֠>7G,}mwhiYE<G*]Co8A-GC?P &x#Vx%rwD\`MhLĐrTK '޹Ρx~⯘/18`Kuqm'qq`|hbN&X\-39b*]=T VM8zAs$jttaEe-SS<yV:OrhIjUi!PkhE T eμ.a`ssY~tyN&qdM@=j lY 9:-uVk-lK\ӂckL'oE*ɗMƴG@UWTxe!(:vI'=bԦ4Ť{aTi`s(40MYOZ#DB to)Ƕ?*\204^kʙ` `6w4:b7H+v ?B>@-ɱXh`oKqHAk}\=hP9~ܯ(75k>PjP *N6v}7U"B'b?D7O;䇑 )?~-Z }ecbcMc<:*S XTgysr6f!KU܄H"iLҠUnJT]C~eYP.n2< @% iY$P^@.iH?\\쩉{ۉv>yOT4T/'(|QVu[4?2k)ݨf961ƥVpRxr17l4|~w'+KVVshˢ4ܝ d\`Sؽ5}h8EBlWTֹH3҉rU2`q/\Cn.NZ4-[DXڰ(%G`c #uPgy_]U[|R b W*e>WRa9m z@;%^{w/ X۵' W3 1a:]?o5n[_I"}9UQgG=Hhem+m8/M1oQ]2fW_izXB|[<.JjS AKZx|uNC+?Uj2 A<:s.La<לּ)vlͯ᪥OXЙѦn1<79-PZUw[)-B7 n]rT>Xry\x`ة[vM1F"HJ|}(\ߍxZZ\8.$FVea3-@ HXU2arz$2m p,%pgɌƠ'Gv_W[" 4/X;d 5'ȴ,[: JZw,8qz8@mҋ3S]b햔Wa(;IC=DY?}Paf.OyB'e,[/8_+hm~=HUQi[CY>òT4A7u]9&[Ss.[H*] wεJq{ gsQ՜#ع0#wIzZlJ~I\l3hf<RHao;V9.$zҔ$K[XIeWzطmƧ:l} uBջM2` T_toϔI&]__A]~L:zRtGabCQSlS^k$>&LJ-~ NB$bhzӥxdÛa "\<go+ö߲?^ס2i8"o{9ݔJ}:rOb8Ru) "h(3$ݽ/ hs: ѕR?…?!Bl{U9ǃ_̠ڔ鵢^}9^}0 R- oQ(k=]ؗrs 䢭GnRtwSK5wplwr溗a4%ʟ֔;#v)~Xwy&HeZeVH5$j>FDKQ # Fxx=hcΧ&[h%tppNNxQҍ J4D/h:sBX~U},pSewG{L4[. F)en*J$8O^µ9eӊ4Î{Qڳ I{<j5.M¼PP%:!bVbr[n/i)]kv><`8vbDHf@&jE*;$ЙO~+VB }+/ e O!c,2ǒ[Eaf[FĤ}ŖKhULlT"ʗߨ%rb3[Ìz<hpy!o$~&Y{\Q唗z ׻6wTPMVEW&br!xl!I%[y14bPL>JB ?|e6$oB6=(Sk]i}e;²Lu ܋aV" 9,A?c!_xju" BHao!ptTqjTw() gLV]O7kg4Ȣ/TJQ}+`K MTs9(UH3 ~\RAm%8Ѐ[&i28֡(f1L٨<Ƃ[dҬ;x|"EO1.J,aBFA ַni951}ϐ33Kt g$䩄J|6t+xwS@%d~;֏oQ8%DZ](3jFX͟Riz/.aUmݻUCZ0U><]-t(6Y6еȺ^e0?+oıJ]j.,':y0s܋jtU2Ov iOf%)GC$٢Jb 1B.Ms6m&@:oI`AZՄrOe[~MկŨ;1oCf5RKu@sd<C^,  *BWke)+s#:(r.'8`$X8n# fNma|j 2 5c;YW ̦AD-䎹@>6V¥HVvsU<ƣ9mP3ъM_԰刲etsm\~)C# (+3"Iaa_㌇eOOWǗEzD}vaA1٥u#hBWqEm b0ρe:-FϠJD>y oڔ;Õ&x>t&:\U^G?Ň8~~6:-'9v$hJm8Q¼YoX8b: #Q>\;V(cMoB}ECdO|R#ϡvi7Ќ4*˸1fRdi(gtg C89ܾդ]fd3r㎶c(E4V$&GҫYNv4"x (h>o_`/G`8P^ԕ9j_r/?a YHDZ5{Bxy^< zn%DA!` G.y=dL~ #͌q2j≍ii  w:l:Vuݧ/+E[h/-M˞!;(ZwziFwF=fb)J蔻\ ǤD-"ls&~`m+b_< AFf_輅zбvJloic9X#/ iP "\qW0ip++Dq62BALN{YRx(Y֘6bN6bՠ% y ]LMn/[X_\R 8Jehʥu[DkXIxft>N*b P>"g;9T"(O_խ (_I#ªfv UL@.QNPBC4oBN.֡-̯]'c ?bV+y#ŽS㘏ٻGZN!_i_ꇕ7{$GmBV98͛J)cMˁOћHFgU9ϰfbPR:ȈW05٘}7Gr&#>,gڔl[ۙ[k2{0rG/jA='YChE.WaZ'.l{S!oDmu)B HnTj/?'F$4v m# *ۇ7Ӏv!\1.(6zǯXmPC //ޤvMT6pxģo] Xc{ a K^'ud)̟KR&5 qgaP& :P_7tYAQ.W0M=o䶁v?DbSH=FKkA m:"opӓ(Ua[8aTWo$opPºRk]bJX)(ue8Fl&.o*H@G(,͸ ͏h+JD'Őv5gTz,z ?" qxhz=+s(随A|-b[™+N^bpcc1V} vHU+/e>`8FS*Kj$Ur}uuY!~@0Em-"tqS}"cJآ|G Npea}0=ߪoMX6| 1xk-p :^'<_Ӟw,~nP"s "Fϻ4 )i(J .б:3r :hbKFn15MBYx\t ,"k5hX҈Rd /=wqw X|}Gr|J4EAp" 쉘Q:ړUm t^>79v:$s"_YP/4ET؂cLɻ*Ɗ)s*3G|vqڣݞ(tBKYZh! PhY] M F~ZxB+RLl+,lE+TCrN6J>[^eu@˶V)_ZP#9z<]  qr%ݥM+$:wNRUؼ4gڮFc,cUwm_ҷ/M+,/!sD9ylS҄f3u/LKBʜC{n>na7&kvbo}.j!p'Tow.-L K<BPC|Hc[w6 _/:7D I !A1:OĒHZhXl$چK4ԙQmad$AWaNH_͋RE&TCF5۠<"|6E_׎dy.2'Ob|d2 'x3zšFۛSjR'& WJSx6*71,QLd:y-qn-e_c2K]$!(7:|iN4(Z$ۑpG|dfmm> stream xmeP]m-Lpwwwww9A ][pw ;3w֭jiY]])H%?, ,̼5IUvvf3#" r7yZ@ŝHshhښ@NM[WUمE"5 ,@@ZJQ :]LmAfyHpp9؛ə]NY89$E$bLb{s?`g@3'uGϲ5e?Y'X,,s` #2K7{ .??hH0ZvU4~Ns=@(;/ d& bor %A@se-Llq-4LO>IYI^AU ﴄ9GK'V6g{K` cfz0eQ^ ,\6 3k[zE݁f+f|A)!e30t3St,_&.AVF7ng[27Md&@(0E"rK0 hM|;3EkpJ2{FjYt)(Ҷ^͸;{)*td.]ڌUp dhmK |#ſ?'5YVNT'9=Y/,|Z?}1񵪘[k;j |@^mXSiEBS.Fa+쮰h!/2R ZpW=<-+Hf Ywk8e X/0W;#31u{X,XIo*BLX$oFB4VBMa>Y]u!N,Pt2rbI_VJaQ GJki ,bk0vέYg;׺u |{zDmݞufN*y^@k㹍I9%Yɍ:qD)R}XNrxy2K~PjGюYnS5!6no@XO1|$=@ *ؕE *SQ/}#Orxڧq6)JqSn5w&İT~KutwzG{"L֜zb/7*`_klKPF~Nlu\%ťсm >S\tn4 fI@ܭMZ"{T?Mj%,JĐbŲU"fj@pY~yFl2ȳ]ʳ uNzXia3L.*%kTl}1wJG4o{'TèSbe伽G-<-w@sz[1̟8o#NpRCiL tu8٩%c63ܓI\xj x - +# ˕L8e1~?&f4DC+Gery #a0O-\:U^/`5G:׸ORc/5ѩL$mu)6&D[qwRvw :\*б;J>i-6o_ ,p.ІzBC͑H^.;yPk,ʷ0L3P0m5!^A[ ^36h#|S5.ƣ2`Pxʚa\fGbpEWG`ұ(u5)8y?Zm"۹+l!1C' bw3+:)^.QK1^Gm)g(Ԅ;W֪Fjyx<$pυk\Et B,ZduJ}<3 z o GBL/^q$4>2Mn =/uI<]w˚mjrCImLE IcHѕ7[R5j:rIn9'w |u vY' TZʄѴR{™%L[,@nH4[m8Y?E9IzjEp~uk~5#u:y!E59갼,qcbu5dNgjkтB!hsɞViU`af7" +yXI.AbL&y| -#"}N5[$J,>Tgk =vyH[V d[Nf#"rD=dȃw8~dxgE7wP2؉Uqu2 i܃G3RN vjwhꏬCَY.=XHZUM+_}r;i.s_^S<b,iX Enį6~M}_g1&S-W%<:j [K,A;n{)&;EJ\lrȆ6 5ei)qܱG\=-ֳ*j8H߃|EF*^` 0I-t~ Y$feOH3x ʨ)VMmiğp#/`(gK|술F9 WLZ`Vg+>wss?6{ 6~ѪJMz$}>_P1MM2H*BN9MXnkJzmrB\'!?Lw-i?]NRO UY2Ѣ-؈d0;&Ml_.ߖD@qDڹո.Ѳ~ RJԻeܰ9)EDʺWӑ4+5WOQѲsLxT҅ߥ~x?}p,,t`mbVl_2'Ru?6rRxVTYBL<|0mz*bbM մ_]. gQ fԟ[{s3|a͓--Մ>%%`~LŃCoqZ#ER/ SZj+aVb RO |󟟮,DfErg$5 ;AF@;>3 ą&I2nOeѵ[Uжba hΊm?*wh3vVG9[-u^-K_uf/vVɎOm幬cֶ1_=x G±FX~&w5C) œT^9kd}c3%, OLrٗNe{-wZX^\DeȾ"}`BBZgJ5[+!:cJΆL k TnTr 2?=Mif:k~E~On4{2[: XI:fU|Eݬ[g4kiiB[d*egsDd Շ!IpPH2Wr)@2Basx"E,FxBAs,ZVjsѝ: _4 1\\ '1 \\h7n?Lյ0Dw N[=C^y325~jI@m3@|,G?$93_b|(7f̐) >"D/I? bD>՛{uV\MWg}HZאַ/R>0z[3{X1`KNGõ\I['T@Zf$6`hq.Dz4Dw๱[885n¡5`teAIŴMC27tYEZ1/ʻ ff/pSѓK]l-OD>H`>9Qj,fmґKөض>A`"V,O!QN7KĖ}vF&2'FoyyAXWF-YUwu?rhH׽9|#1o2wr3x䕁U{Abwq7߮]"g~-6t5\5.EF5*V|zncb&:[_;==!O:I~h596 FO$p fiYgL{ni+,7F(0J76D5te+M3)-ۉ֣t&QrȘ|0BM7v\P) G#̘X9QqkI6"vGD_t@0PN&QDUZ4R%Dۮhd3S.=7&Ĺd>u5S"k 1t@iK) '{ Xub dkA\kYP9;gؓbY[0,-x[ҋ*@pt>GaQ8J CB$ %L):8-%, GmN[{RE&֠fKraL /߳;+1aN;`H;涫1x].L` ه#޻ĻAޏag85,*Ңn~-+jљY~Qc˦Zտ7WBx8n*:|@"Σ[̷6ϑmDI$}@{\J:}"3JUn04aoyξkYx:+ۖt]vW;dfA(XRIb@Q>/f 7 iZT!X/GykPg72慅 NT,1yI^)9IXieh[27HATԎ7$3G e]uc-VQcگֻ55z,zY}6O¨L875~QM `JݗSJZVT.z  l6uW3%r^`,|yGt4[Df~_H+ũq43Qg]1ܾo+~OQ^cuQ48o'Y'5M\8C ZB&ĈWq HΥ7-Íei(ڶX_D2ۀ2۱a"eNw<@#Һl˫|N'67`B$3Oz'Ƒ<E>'a)#vu7!za݉Nŭ7=yUvf.t2[Z[tNR"+7>Sc xVPtc(iFdGd랊&3R3Zp,k~#X >]pLַs9.^GGհ:P ׌" NR4ÀWO߲Q\t`Z{'OkGޝ-28QȆ}H)s;k  5g;w?i~FV?$W)Q(8BT0=M[ZךMh=DK@,ԧhb+<+E56`Yn&*ZȀ5 p`fTmIEgIcwBTR HDnTE:q|Ѯ6S%%=Ȁ28ܠcVsM2_r(%At\[VDJoz- u_64Û ׃V^7~ev=bkyǴh)Bm`jYb9)Yt2d |5xnxD(T+}NIr+GM)hNfI !Mˤ7NH%t`rDz/>M٢.E^N񫔗6&ヴ0KR)J64^U.By w> KIyp~hCtYĭŪQ9o4Jckȫ ]Vw{R뒍ڗxG޽O2V@l_|x^AV#h?$0$b)]WwZ hct%faaut|T{`?G?rGRYBɫqcߙc.qǺ>K޸دE*zt|`q S~i߯e MBɠ[k c{rɎzEުAVD{N~9!5*twl߄"eE=ZIb/oցݳu#KQ\!l^_r-e^zF)w7N6 T!/],MM,i}mvn_4u)4u+G4%/hMx3onW.-[Iwwh o GiW|$S˓EĜ5dȗ~¥d}虁ԓFnߖ@kNYUaUikg](av }&T8f&X$m`ƈP`3ہI_(Aܶ@e+/3Jbyd:;P`:aa'm6c3rr8Cɡ&[Bٱ^vysc+H7IKv>rJF-MRU jռ `W٤QN"ً.h-? Lȑi|QC!,~օy`:@HzJ*h9_zb*㍁R>BډY~> D܅b(6*,Djd趍i' )fM}psG$bvfwf}ݿ"~,]xEM7<Ԥ?:$LTƁ^N :_VHt}Wd~ L:-<5lak*Xs{455r,4B-նkktC CaX@SJ @p1o݊gѫ_ךf#<-D*s1\~|T}GZk#!ջq6lś㻡1ԥ)ERf&~/wɤX PB?XQ[ܒ!Ik;++; ;`U4ׁ )[ʑX'>_zNx??β+޸rθТ7s寮}K?l@SkPvcH/+F?<05@+tH]߅k0^9tk˻5Ss& endstream endobj 452 0 obj << /Length1 721 /Length2 9380 /Length3 0 /Length 9978 /Filter /FlateDecode >> stream xmweP\ݶ-N]5@# 4K;. |sUUḵF7f+i x0 Q@bc@a0`GՖ"hvCFn.n`[G7K"}s. 2UY @ AxŵG,0ɝm6z``j=] }CCp֣nCS9E,g}-\}Z0^ͣB_ue 2޷K!l,f/X]:yǨsk1#v.ȭĘ^@XG; zߟ z$,:f/ 6~ic\Jdy1bNm  RɚŶd)s1trI2YwdҖ\ŽOgXѮM# uASʐ&6Yv=>oC5Z,<{פjz@W_4_**U9gtGOPsd<[ƧdLrDl( $ No?-=JX2GGym k) z\+exV\v*x^kXh Y=8U7+iM_:6, pPlQ oPHW)tÄm{Z.O}m+>#bs j_ H]U m.>4\S0x~QMѰ%y&JV1ci͉oR=`iFW\D|W=, D^N ;BZ!'5н *WnK:!JgzSE]P^X4P>['.A+[~:rt: !*mFߙ&xuԚ3EnBصm 3&a(ŽضU'Nc{n{47WJF9X#TKd]k6?L$¾_+q}Kh;سW1˷ oa3j~bk@5 Ch )@: 3316EeVTJ \-#I|Ԝ mO7 $0,WwZ6+yм)O(]<mt .R |o@LFA3O>Ksa6v1>)+]uyF#)|,{q ^ sn!й%g+CiDϢg.*lmq@8eĪ7lCowOB"tANf# d ёyu-i'E!ZweZmQ9⑱͡m&PÃK$*YKžWO To7D }AVS(!fA\p!l簣e3,KBvtW.UA0k)' Q<4r׵qt/m$`8wLaLH8Մ3v&rWmEBӇ/bA9M}_W|P(9 ӥ+BLC<< o (w3' ,zt*-j[ES4nXRpX9\Umich"w-D)-OX̠V [~Nj "qArsM=?%a2}q9tu$E!U<~Wcwvэ*Hu/)lTன96v{s+L vqqϑ'p6UG: bqzD.C[b TYW *]%^Dc UaEWw>FMzR1.F7Vx  T(k;qҧotaWeۓGW}1-n㙠^U⪐gY'xLIG j̊: " hdeU{ġ)xCZ8s:`֍M[ßoXr3+JtT*#)1aԙ#ж-CMS:Q6uܔ( |"$$z!B^+I8c`o޹}>IUDE|#f u0᮲o=iWӭOQ:J&G*.0mXH4_Dyl G1udőϣv'9O.q1u:ƍ4xd<DZ H7XP1''.8kMIyE|Si!ch޼vPmR~"xR'LîZ?RC~[[OpT^aPbr3A޽#KDY@Pj`?a;vM*icJmߪb5 a+a,_)8+z-DJ("-tV/O&1712.J{8h? =` NyWX,Pw>e' hrLlEp-a&%o'}z!DIF{ddAPqq=RVMȦdzz+\&\!>lj{]e餜hE/2lck u>+UqYxZ+]rH%{~Q{įƭA|Ej| ;8z嚶,:U(h>uduο!9Hu‡\ Z8+)\?,h*{2}kkx|pc_Uto;4 53in oO냕1Yu}01Fae u*J~+&9L)X|F͝Eğ0&Y*̽șq뒆1(ts-8pp&'ORN`8H4>\Mkd-_>~Z7ު)(U0A`igq$s\~٩ͺ:Y7DizZ_$:'gt"NZR.~E 1wHN IYDxIKQ@d1L;U"螄8Q6䜱6 mچc-,1uR8吺,j1C}ы. Pz;C`ȯF<)]Mcݍ&?l;<@'HLjc'KqpYq@z,8jK IH"&%/lv% (p5;Ҩ{yTgbS( zVe p͔QP)Oe dPP:`5p*kM҆!&ugCPuw;BwJKV/\Zq_G"9ΞJ49N—&:+?Ї;2;rΤI'vq3ޕ=^_)eXŊtx3,%J}Q^VmbvloN5x"8 aӚBuuOu">uѱRI(l1v?tm:ƫ;xRk $Evn7yU3!'LDdv39# ѾjmnOEF'/c4/6kqv^*3hR 2f8\;ڧW.ty"ۜ6'%Bb2k?9oE=~; s.vnm :c㈒ #ѬKxUSϑ O9*'oMW*`,𲑢 g(R*jEiYEV -jpJXCv | 9~5Z=u *30cIb1#8Wq=V 5mwa/8 |ǙRbm~ :\ ,AMZ'[3`)j/D\1SXdiM@H.ei"y#Y(9OG+M$I%w?.Qf֥JɰŻvW* M/~u*YH|f\} @k$C\&7կy!DMMNbM=~~jk& g@쫌%BFU7[ C%2Ap%vǖ3%y$A4kzNk*G9,֘Aر2@զױz(C-|f3~4j^wN;m(cYu$48ݞ3f4خX+hZnydX_ļ85;'& 4-m$ɆzQfAtָIU-^&=b7RusGQE^E?!Cz5υٿHlXJrh=dO֕LjiZOFĂΣ<|3^1r~/KNa(e;LC1c=ZzP2wK08:mɆWvPȦ-ԓjd Vg4k.1~zF=-0:;Hԭt\axB>xb.XŶ _̩m33޺t ]$ ʭŜ:+ȤЋ*e7YUK>de&,u1=o4s}C8iX;l]cҊԭ~b%~{y ͍s%i鳤;&v̱CUIY6o?y6Luy m 7t="!*_% qPu5/֩x75BdǑ"l|@Ұ 3.6R0sDÙ2ű7M5.WY&!Xl~ F;zlN8Lfw.N|h{ 9+bv+CbPsP!@gqeo8M$ƶ˺'0Xm7RnaLGm؞0,S(8΁.P) pO *gҁجs?;Ϻ<ؾk* YLM:XpM-$rK $DHňkKb̏zpۡ JN10bqcKS韚?zq( McS«HN/WK>'R A;ߘѹ z2b P8PXF.ZWcV?az2<>aP+,ecJû@FJzęZokǥzb?_WT8)f՝kXtR[Ɣ); Qa"OSNkC(R2?$MBZ[9q3`*HxaĭK&^07ᑒi nz=-5^Е:ė c)()J$C|y66ׁ@T }˶ fO$эP3ҷ;3[_"4|J(Z? /e@A.g:1#s_?Γr1~ )Zg[]+4 ݽW/&Oȯ6Uy4"̴S9=L% o>©>c 2y{ "8[`m㖷1JE9O-% ꄎa)U_?Hhoaa(R oxE0P# AXR&n>.qbP#վp6)`] QT=a_w;ӧB74^~+3ў-i@ ֢ȂZ3{v,INl>DԷ{ ixh'Noܼͼ{⟵<"n/ԨS%R)RR=hy'9vޜa;<τRkAXl,`!!u EdUiͩJ$ "kU0JN0q~2J@'8&%E)ZK~C)ָ:cQ}m?-M)&C_5jCP,Ϩ'0!"#'9zKzO,ɱ C4i a6"}?w/=FldyCv#SǐB5e.V}.Yȁ| ѵ-.xܒFi\|VU#qX9~j3L51%72vxk?x!9 /0ʈZÀS{4Y4EAP]dLXUDpxR%+i=sҌ^AHS)s ?5%'!`LF'gހ{ 05#P/)-.C(ZA͂A?;Mu/zn)) ^XAĦpA:YyA$qY ނ>hS*]*j̯E:Z˶Z3< 9N:S<T$zsNoJ!ьR6Eӎ~Ja ԧYld;/sM%ʀgOT"L +3Tvϊ._S~ے~oF1"޲#Âϭ_gU, Q`/,Ѥuz0wrW@GC%OGĘ]i<8 vs$H Lq ] ٦WyG&lsE~qzu J/qWUIV:W# TAٹ`Jr !}163At9 #Nm Gp睖xi^4XQ*%:ʓg*hTC/X 3DlgL9,x b0x#yu$EVL8+@HS"x_F4@\kO4k cDI7"k9!c'ʼni)̆YƤ,w[Tk!'8xD7  y6}plfʰ)F4w VEKOp4APr8]~3{`P-v(JNDѳ6v0jM⻊).P> stream xlcnͲ.ڶ~۶1l۶m۶ms5۶m[kN7ƟdUSUY# #uV7acg())3132Y`ȄM -lE Mj&%{3&23҈B#@*BG `jam-!)'Sؚ8X] -2F&N&TS;Gſbrw&fhgU- fPd$quv_KY2/_(z&&3_Iښ#6v?9 &XX[ؘ(l]Mv&ah/?t6A[`geIX]L#V3:ɚ[ggl=Ϭ9dj 535(9VXwL5pvph1\ܽXt,&6&'3 O.LLM`֖x-ZC+|Ef+ifUhWzn-̍pqg ^H޷ęOLF,㼖Tn+5^bɁD9gSOfJ9Bg/Gڎ_]xҡ@3٧A5)6[ څ!3/? 4D>Fc ~wi"O(kq_ J:DTAfh;؏=4`hQUYUzdq{/?=O3; G_]'bu&/&w]9zrקE)sR}Jǀa>E9 6Dg#1(T9N҉? g{I<^*<<\$1֢7ف~%};ooߛX/lZV h6.-"_9*:><Ȳ>;Bcjt)]xmc|"p){ֽ{‡w~Px'*-!W?_ ~4DPhriOeʜxr^.m3:-be]i w4]M^CU q 0|վmGY iyDde&`0^y| UeYl/W|Iѫ}RЍM"=uHFpqqõ@{Q{ &NBFg MoEP2]E _S ?^g˓#-|6 I֧ H, hk#rci z9#ޮ>ܝWgGQlO^P|HvɟŢ`I#Zgo@Q+84kЦwK g5e SETZ*kx;qJL?u- +U<){BڍլE[aCk{) \@X3,ib/AQR!T؉.3eY9uU驻PW+APBQGayA?erJd@Ά/|}x6 q]2v LR!q5A"G ~dVG1 6x*K׻Gz~{vE~8}o͟54v>չ?*j! fF -jgywP:) GEזOQ\cܥqz~]<<#y=±`CáWl{ U'MTrYѝ*yjOLTy@>h$d YܫD<CXLzeϿ0h}oJL'q9txr-}-0mE`U1nF/ovSЅt]B+MYgԦb2`bV^UZ6.Q$ TXmag{ u_Q"qղ 5.bQ9Dcf]fN+h>)D?%+xاsLMWZ^aw٘بTi_HÓ._һg,؍Mbƒ[{\,/1 n=a%bQIrXaL4v~ F@2}aB^P,7%+ V%.J.K! DrS8 -( نO5W$geeEXA2%OwQx\Bo*B[;sR1L"nCR'&VQۂn cq;(<3`sfkO65f)?8|W֛0z"6#ܛ c'/0"e5#|>"aweV)7lʁL2'ж}i,[db\||uyÏ' ޹V24 \M%;JJ35eFO/) f;I(1%2> `,P:l5V~ ջE'6R,{m 1k=\}8p%.˪5ʕ9˥Bac:#en>X{!n,757 53A `,KA6RdJ͏v&jKӴ!o|$*νKO4l3Kg'Q/9s:'Gi`7ʞ;EtNֶdq}aQ-Y&]x74ALZ)9Z _Z€&MW6Uۈ ?џ X}3n걑%?dߍs;|lҠ`Pybn}_>ߺ.ܲdqOY5tFcLa usTۯt\fЮFXSHZR':jԿMR$ӣ98[2^>wg0TNE& k߀P>AIKjV F@o )g0{sTvm /I4uLc5&2j^@Y)zJ";E3_˛Tm2 iAAerZXOd a :6/ aG^("_4 Jz v1ĹBzJi~7 tA8iݰ\+rqL&kl ӬXu߿|S0B4K?^guAĺ V9qm$p4@& ̺7`f> B Ӿ]i)A5S%t5t {n?'l&fB劑r"Yvye l@E7$󣟟*Q8t{)$+}-G>O&2FFNBJAeo\i|l$g6QųmW騜2rhm73~2Vq1rghT%1"XƱw\Rtޓޤ@AA0ўi\JݢWq댌|##(܃yZVخo}]O`|fʳ2dtz}^omIՔRRs1AcCy,⽫>r<",,)Dt/q [P@˭Ѽ_V)"ݶUǴ*kyBa_NlrH}gD.i ʄT )L˞E]/O.s\JF&yJ@6MH7mz5L<mx=&w@@Q_2JV [( 4& oR)_c)/! Lv>VvpSqɅbHO'$]tuP 66s?CQպ3\-y>֊w5 Z-}crG o*80"qjrZ7ô+6 ⊠8  aԭ$@ΗlH"XZ]O^00.؂("1D4z!U'C1 sƜuAJi,N"~:6=9%Tej&6{c/q5;1/9+q_XpݾNeV7a Jt8`-:w_p~W=NH%ۮ b1`BDš9q>pS$sԂ# j׭ﮖxV5(IyrQkP@=Ɔ'=O^^٠.z .HAFqN3P9&uz >=\R)6u<'V+. @KwRGTRСVy k^:w:]ۉtVa- جoxw9ͅV52؊ M*7tFU`*b N&ndo,y0C`6]$qKՔIkmJUӨ&X/eH<Y쿄\W wxho>^>pHuSw vZ(~.A|VeR:AUeFGXd('2WJn9 U߿MyhU{XH׍sF74ثUgiHd{̈́zV_o`G3 b\rio-@:Wą0_מfc:)pk ԧuY;xT͔O=n]ݓ%<1%9-RV-\ xNFB{:-fU&0w}\mp˾4fb+{w{ ~qq[W/Iі`?]QeO=?5BSн*X [ZOڜ,H5͸)14tt|#^x@$_4Bt`#qw`hWBm/ Αy?m4w)ӌEKl!dWsfKKaURxWdDMȆ.NW4Jg݇*ZSOD~RmjGYO`F`ބN~?w #eBw!v908;E)Zii/ w1!cKXjz!܅p"2w9Kit7Ȑr*# x8nbCn)tV<K򨨎,0W&!dӵ07G5c)/ /5T *g%L\"@+R%hr"\q*[}I'iҩA m~nH( T(gB.ԕm/ b>vW$]:lpf_)n9=ǘ:1df^J9$핡7Hd9AKeb*M\c3&TiV ?KbrT 1I4Wnǎh47 a9;!&̼޲Ze[AZDV>fQt]/ CA}'qF>oOoÀyaUg:o gj1PojT- Βd:hXbo/;;ꠜʼ٬Nv(G53 . (Eu'cc^-4e&ΣRM;LqC% D~­Z-AB[ a㫱c`G((/ͦ9W(5cp&BP2\# ӟ$p: pC . !)[_s킘Cqz[Esܬ }T&cY 4# &qaNv0WqΙ;!U^kl@1qw# (ƒB{/4i(}ceVՑs>M"Jo)dts^c.k82+pMB}@? n)&:!aG\9`'ؠWv>!+?i6yZK7u7cw&_p!]6Uz @dKY0|!G1!rlq?бWg/Ѕ:gy͉+緦;x)iUjPk]@Bð匶V˜\:R2vo*K9_.!#p{P!t"!n7G'MMYm"D)y>R )_{AbKtQ`q6;w95< ?6h*ҋZ{X>[>TIHb %Tc~+22;UiR5LR–:Rtv_Vxxk3MB{Y.eșt% PY>|1}:eᷣ ״.ΤfaŞC-%zt-i.\HFLu CAy@XSt/Kv46ܟzNpm*` 17O)4hح7(s 59fa5{BJP-&<`zl貿ou4 Βt{wuC9q3wj`lzYPs-0Ҽ7pֱb,AWC?mGD`sWFvn!}8aಳ[<QǢJή6<$;M;ʞ ZEjzUQ=]1j;FpA1w !VޱJ(@TDzj5),pE\&q$lX?X6'5j"COpa)џ銲`k ZbUp)qg~;swo_WڷiM ⃩bO{}~ƕo)41̟-gUg>mu}^ 3Ϝ:ijSsǤ 2R^۰wߏV)׏1A GCSbHt-%ް(Qk\ E`d/ST V2A -{":=[2;ɍ1sgH;[+Lu"ٽxH_&"tEYRטAo݌&L{;Px=5Kadw6qϻͮq~Fn "ĺ8RMxt\D8wUY٨gK{EeLJxU),csM #m^TAejʟRVv3/L8IhӒz1i_#YƐ]uB=3&9p?RH WZBFd4.r=rr>xl3]e쇑VY&}mg8Y+P!H" ȵ8Q4QT͠ԛKJGFL{=#"iAH̉|-)?-9욆JK+s:iGg̍U!Iם3 {gɱտch?A`=yA+ᛄ {IWtI,FbXsbCQSQYcb+au (-7zi{F}y 7ԕ"ݫfV]&#4h[ObYӶ R`na~@@Yq*8%Br-fXbX\ }wЏ=t` EC]f&t#%YWDHX3A-z*[ER޾Y#T$`;(D*$ak&[2=p".K)@{>#!E{#dSȼPoKtFR+!db}qx\G#.Nf_S7Dc _D*u{eVs`*V9H[+Ѹtvٓiw%UaD  hN迊m C%0c*o=[Fp 80NчfUTMI9]o鱕*6g|:{(qQ v q6TܐЂO0>\79'Z.ate/U4F֔j ܳwcK<`1Q!Eo'KrK!RsYTkIiFAS6HwxZ馈-DXiDteߛ> (L4G#N\,J+QRw^?| Sx'D[[kfCo"i]>[}y($#z(RBsڰj3wu *<}+r7Ȗ YМzU?B9J"g~ӫNG'A;m](}^$,:L[&TōP)|\ ߗ ͓la fIM`͠QB[]ȵyKS,i)%\Zgf3;5 K.V 6G7فY{,WXgEul'zԁSjk=yz\d#k%y41c7/ZQccB~1(R턐 pF~1b 0w.!.٠7|, &^qej }7ēMOnt~?h. 8}5ljT0qvO>$ӌw Dwp,hVLowZ7uZ'mQPim1ӱfц@?Ims=1œEp#l-bt Žծ~&F ;L]V" ] PBNRmOpִq2MA_O:gR6rZ˧(Op4jHۖ"E8 ?AhpvKA+o gw3n`= *< $JTbxU#w[WC~;3˾@&E3F9;}i*eEv2GC>`K/7M8".m(CS59={@kSK- j9~.6IWU;x1K'1  ;%'4O78!@3v'(=DhF&*:^Ȝ?vZO,`-%O"ɮ#F~T/GㆧVΙBYy XtIR`;hT%&8)h6GmAk-#qė^#;NgRW}-ewjA9eiw`Ɋ=u\Gk;B%$[Lqy)5{ODj+$Wp 10&QcѴ g*5aX%SIZ:I~22:p 3jPU`I}xlx`EGAt{$(d8nZPgȍOMFIYY9UeUC#mrD 犭@ iRl0i&g~nJj`6nd̛Ow[Ncp/mAv}+$ʐ泊^h6ilZ!+UtOj&>d}$6n˓@ 2Ƴcd m(`nt.𜐦Gw|cq|#l/U\fLϪl&'ffd։: sZ=ZJ =!{ثăsHn%7H8ۮ*Qi J3մO C'rBnv;qRe3k6bZ|i4Z*,a:%&Zƺo~v ~wZQ眘7Єg#mcLeioL2Z^U50Gb75f{# r0R^N.I#pd/a4fGe >7}ٳD?GhpLs ńX>KV=i ]Ua{s/T 8ح FJڝɎ[سdG 8P rV/N62|=v1 ".'lK-u=L!Ev_/(¬0eA DoɮMs˦ 3prV?Y*b!&:D6R{m[>{>_!HE)ra%q);Tyicnʼv7Rsڼpn uÕn;T2\Wk(AХJY,J7Id @R q}A}d=/-ި# 5oO0 A̷P<)#tF 1r%=n9bՍo>eB8-njv3aU 3ykNO9V}qwCX+RzwhJЩʔ>R#Bu?JV4·mc/MTOݪuVG\~dfts=tG X\)D0<ɢg1+ņ[v%7-wJԦr'^Gj'*YS ?u׶e=LHuBHd(`/3 =g1`_;JqלI\ P>^l[s>ߙ"$ϞY;w&_a5TX2zzB1i֡Xwiwn*8’U]7/~mK;0eTx@^x#VH BBCw_ksY[]z5Kȼ'G+I<'U9~jR5?\bq:pL5sDK V r`*X m ;upVt%bEz#r>ypU"hŕbْ|YDª҂= #2V)V?{N6W dKD1k!{܅e]k&O/<זj͟m_wfٶd ]k<;uXb-t *_d)di>p:f[~e0WPf}xA2*^]~zv[ó@2̈́#QRΒ.هu 5շɨ<끥.ܹ oĪ#)ؿGM`2 pc(e-2KmOȟw0Ѐͺb~ɔ_7 .Щ6KiOrqa}b23~ 'oPRpC$CF&` FDmzmceY#2銸kkl ^Ko$Qq..R*˥6nO9C8ns`^ _{ r; [>®KV  =h:mc&P-j#n6Y0M@:6۸y >zf?;Kb󏙢̨)]Hi2$Pñ' ͦ_-_/G\^ fڨUe^UrViˁ-e> ǃ'OtߒQQnU:7f |=I%WwiHFa+x\N7^'`)ӛ|3B,׳,2Po$J+yb[6 o4@PkDi90"I nsAp0瓼'r C,[!SZSRo.H)`24ɶ³h4| AHw !%lw͗Fz>%|`bo,3 ᪸J(Ub22tiI8c'Is 0qW֭+:x'%EWk|M >#ABMA}}3Xx"R9|F5Zn2#w7[SF\3xTB \LC{;geftJȡO?%Dl?1 lT2 {..:<##,$ʍ\جo~gvnDXTZ4жr/y{*>VQ" I"%K,5\=fsaCMޑu a Ӳǖ,!]&X $_x ) ~;ﹹ*]c1%81%<'],m\d2DVcOlkF ԑw}+IP A/X!Ax;J^g'HˁesG4k[;2(MQQkd ^_f|ȏ Ef&sdd\"| \>s1!!ڴE*6gĤHXJ4b !N1.^hY&X⋛Jh=wt+czjKk8\>$h^IqN|U壎n:-Ä: <6Dg0+ k̮b` x}}ܪ1:v)SU1pA.E\Ģ \Wl2H9 br{T钔x"745LJ|-[ *ޙ"y͟QWA$24c<,3.OY0o" µ-h)GگSpP܁➾)}%S<>!27ISSqh7~AJCc1$k*W+qJ%[4+VݡJZj;-j+~,5o |64TfjFP&TbP6ώa0At,qy;^i:1 oNt%(cIc KD-t;6֑R-5PSwQK=`$+a*_89[b5?"?%P.ڜQ^/^k,?w/$2G5poֆ(WBeѤ£R-=f{; XJbh Ԓ +E6F?XiCbL]Jn_M%).`C>2D/F$tET%%ʏW9z.F:;iD@ D0t;rXA_\83O|.`jl޴~=l$'<&96t[>'wɲVg55Э39gG޶9wKٿSC>{yJmIIȪҽBizf .WY&/ +_wJa8"Vj{ʖ'i ߈MS3\.4BԹp§1%x#ӠRv车W*?ZE'H@eQRj#C5E<-.А,87ӟq*Xr'GV. &~ݻFPϝ)cp FnUG>ׅF6kc?oBҤ@yM@"7?JS8%S$ :wJm:XŁDcUk#X"A{iLK.8mH?fu #gaGCJkgB^~&їL]zDίy&(+p4AN|p$ͺ9 A&CYoӧ(aMO(򙯦ߕ58dW8ʾNLdEf@kPK1zpRaϸ\-L+NC`+3!$@Kf&J?C5^R=!@\pm7RÂZ(X~+9ƺ[Tl^éU# |{08 # V-5q9NmA5(+P8C;c۹}z}B*QJb JK & pgLgr<2`:|VDnWӵqȔ`FׯHQB.nX6UʚIC{1* /ʮihCT4oDQp=7J!aNlqH"U2BM(ϡr!bb[=M>3ĭTNaT ā|:_/&]v5%1lľ>?3 mgD| l/AVow#x"ó7ԻIDTT>K&[V٩@tH7(4,Pe3kXoTu\hq 4EA"wYx{6ufwvvP2M,aT#kw,+ I͊!8njZ}ČxKw[> B^3UiC,XU|[~ kK$y?jLAPqU@?]v;R"{䱸ș6j!]#3ɦFnv,m^X d+ D}LX?goׯΎ0>Q`Tvy}<5Pa>Gv1:$$OOƊsV6 Gb{lf:(znm SO'z_(,n/Xih<~ ZVhSg3s"cM7K-8r.1Np,ҫs+aT6gE@ ȦeY/&x)"2~ .În"^YTv&2kTL$h@us=Sm';}/dۤ`5ڇ.|(Pjj_Σ3QH!a(38A\pեh|s'u>\Z$9W}٧jƖ^٪RKq.f`)  .u6>IRy!&z *-Ӱ}! 6(%$8 έ~3+-K?nݏ$} ,B!\Vy3ėG8 'ZY&oVTr)]0džJmx2ek(f;\b 00Sd[qh`}j_;cv>Z)̵RGi'8}ZW&[ć[`Rʅ ;W'|<7CD삑 "+Rod)pV}s;/ \c|^aqW#TU]`Nq$.6K>kδbJYuJ'I9zg?pCySymdIם}ϙ!Ҏ'L8U,-;";o^ S˿,>.[G*o,=܉>*N*PI)UwGT0$׵"> D;m6UUO- OͶbxlL-Z/C_\;H;94|KPNu%O˂d?5:jI`1J!jo?H~&y̡nM{eC G.-S[9;']&!Q{{?{@˫c߄|PvKx ̿91VICtZJQ`Ēx r+YBjsV6AV"*=~ ?_CTw˟9+ %/6l ʓ'XaaМ($Lm8^kxEAoǶh̝iyzM'\+9MlュCo&!-՛ #sNHҮϣuxZ nᾙg8*K'6crX7RrvJԁ^wv29 oH>60?M,<xЪPi Ń)BI`L[qbO bq6!?K[@m ԧL)LDC?oD{aZU \a.P굓H'O`donRX^uz/X(on=SCiAHsGFN I/=&_s>Ev}JQ..U:BPsDYJqb@k:>^UX)>h蓸/V֔E\OxE*c^''ATgT >:>@B.Ntη">9gjVO菕:zK*j sA?T2Sj!SK107feS+OFM `@1qq\ ̹{HׯAx8qUf{WEҷui]lD#SfFSZTH"&n9K sCianbdˇI0/8]uXdnI+"a*F (iDY%sm?)n;мʹ,Jy"WڃOKw RQ;1SvHLs;λI4C Õ7\ڃr$)IRosrZ=5a=<5 1Gxc bc_'B#+ںmpǨPY"pt'\uy!@xԌ!D3yH]aV3OG_/j܄TB".izeJFJ;|yEɆBy2T~7 ;Lua33Aㇳ+:JjV`Oٽ si?*db#SoKO4w*P+箐>zGcLp|e+sW`"1 K C UYS`)W;N(M2{)٬ƽ=3d{ގ]IOnwП6"Pns,&oć\ݞ`-Hp*UP?!8ol#奯m _ค<~2|VI z yj"7d0i5Bb vهij8Ǯ ~ɤzd^r%+19'djHCq SRZL0cľIHea Ǵͮ |fK Mt>O)MhYT 3]mmӷ[;Slȅ4PľQ)PieHM_btp튲"FyXyyCr uśm{6‘} tg. +S^uѨ@ bJpZ|]%?{RA펤w 3_Tժڗ=H {UkHS}܈釤W36/&?)|aʯ0`D l* 953nAXݻ@¥SnquOg>( 1$!ܵ#yy89sǪ'H bI4w-'l#o?IzZp{zǟ׽=:)8}2:+ FJڋd\,`oLݽq5GQMw|3xQKN4QBKk xS*hOaΤ s,#ȍ^ ['%G ܧeU{䚊PK/Q Z6_֮!v)ш;At &yLfEgx;?){2&oDTK&rtٕد_qr+~K? 8ş7)շŪn2z:5Ph ֬'"W{iwXĦ|Mt,^|xyh PzF K 1)h)ifl&c+\>΁Kvh̖.Pjv[XCKl7鮓;-(ʯzb,۞io֜)}ߍL8lD*轀Ɵ1a\hJ$VPz> M~܁.ā3E'_IzEŕ8?s% 2vGJ8Sm=r#z,'mbyG R;3Ddv(uЬ ƒi?掀!\'vq+ ubSCBɒ7qmz\LRMv4)Űy!AA(2(/DmhxpWu@? ly_ޜmd SOI^/x/џ~-/kHڶ;,1<'-OG.f+E\B7Ic8ɴDҦVw|oՠ!X8vNt6ᘖa'¯X:LI@-5PZBC8t6-[Qꦢñ}"ȉ+"xSYM$mnͺZWam4cj}͉;AҰ\jΠmф9!U[2xu`pޖֳvWDoUR#rВWeLY"^l3GfRP-jڇEcTs>/slocG)D2tJo]  = S?oIF9*_ 9YpPq;H*-R)n-F-У i.؃ڸR¥C‹ahwvfOQR"k ]NcMⰆ_lN\UׇcwCƴObNQ[W׏0V35䵯B>H򳼵 ÿw+.G]V0jwր+-WAB /89Qk&< (jI1%zDba`6x>]쯔fG^|Pzݬبŷ*R@VAS,D`K0NAX_1li sĩi%$[l1-sͪw-=O@dV *9ZeUOfv|W [W/~H5~Ot~sW yO'clE/߭ w%{ZCA˷rr񁘀jHkjlhnG&yQp y-'%Ucl O6Mɜ q>%N[ Nj5ubF%*in{2m-0,E7>mca @` Mn_"kǮGh>nVȆGCv,%fNTCgC!RCQ$Ď LG&7ϡiC#~L%lHމLV=zt.eJzf(5yZE kl?( t#kt3N ˖)9_‘iu) 1FxtR>B]R}z]_v21/? ghz8qh1k/gV & {+۷$@ $BobsLwnq+*3iL+>MŦh^޺F2 qksb_E5 ,rJK:ݘqH q~/v:-z! +# n 0WзCMc,aX2tx=%l^lb5ʂ|ϣ#7k E_iA3})93rcn F1F; endstream endobj 456 0 obj << /Length1 726 /Length2 14223 /Length3 0 /Length 14805 /Filter /FlateDecode >> stream xmsp-vضmMmĶ'6&dbW?VwkUuWw5#&. `fdsZ;؋yZ@s `eff98z:[[Zhhښ[Y;4lܭͬ.nn RV@- #(RH&e7S[k3Hpp9؛[ ػ]!f`PPTRTH1L wu 4sWuZ&Lk7`nm 0ZZ1K7{ n?hH0ZvU4\s=@fbgm E-?qkIk?[#ԿZ?Q}5wS̿WeWSՖo;-ao`nmo PsGQgV6Ow,+:[{$2_7acؚ9;]?n=fpkf|!6a~sts3t,+ӽ7zCVFWxx?gMv/wd[HMǓS1$x/d~[o* vf7wkAʴSy絲NeR,1( R4ThY_}9ТkS5] \#@p; QP7&cKح(٬BY^'!&{ C#G|HՈʯ^SB˳q:I$[jZ_+QO{ݱJ$L/[7&}$n4a}Zko wi=ttCF00A*d[ġHf ߃(ZoBî[iF)k%=slpI^$wxD5wIiuUAvpl ncāўQ!Π{<8m"Z5 !3,+%}X({KP o(-F[Z:`GbQ)u |=4Q_RRJiڢg$wӲ~^s[`>=1PB-/ZX:&XgQ܉$"zӌ.+h0] |%4?^x/?jgIp\`đ}-7 [S͘0ЛGZ&+jQ;e}Kw(/kμWo #D!7 utzzxqP@Z~_Ɲ6G 9R[AmA0uf iBUi;gp9.]t@~E  !Ob8&6eeu@Ǵ)Z8Z0i .T*P!\ׂ[(]@.܂A-'j#aV "HKfE(NlEgWݩ&hd`NQXר=&9 dc"㠃=GpɎB57}'qoc !t5¾5 dθZ.=_u] w|c}jB֠lzNT4r+Vxn Rۏa1V: TOcP*ҶB!Q8ee;vI<){ gFl4brHAM ډAKoΓ #+Ȱ@\@DvfX~l'i1dh|=to>Qyx,(OP=zp75Jw*=A?M%m*- $ J}AY~=j*ʀJ%0.1LHߍeױMȽFpUy}GB 1P0$f)sZF >nb%3~,u WM"j5 `\dT+9J+bT^/ԋ_-5ı ersp/ٻoKFޜwϦzM J5@g|i5xUenoꊍ7&B 4⺬,_FuPO$Hs+a3M;Vi Q#( 6iKf%1Vg j` KUb"\reθ\qq&++Rcp̶Ѝ"$ c0=M%|pV4KYBõ~H܏nN]u&&'۟cMYT&EjZQM.̝7 -RGOuEd-L%V^9yi0:٪ Tg5.f]A:C ROlӸϝu=شz˔RP,.ވ; eʥAc~ _jID.=+]`pmcv2ޠ*paNZM+S# )Wk8o4^dtotu?4B\\VHJ ;2e;{/Y Kr wυ`jMqQbrh4GPOFAN^\9k1y "+4#^!Es[RV#FuM7 BgTǦU"L1wvS`TA7mQx m~+U#*.lg>a^oI!*TiLV /mC]*$e+x?7486pWtvSp9rՏbݥoѹ$;59h_Df F}wAv1'sv Q표FX/cH!)m@,JH*ެYܤœ=&Ep2O W<ʻ=2&.sE?f9Jw Jm ѝ S<6ElH,L->JRc͍/x[\fXgׂz/Z͜|~z2I]N楷 !j^.p*u1MxwY Iqﺟ`s7^R 9>Clt.`496s6 0eX=z! )UMߖp_Ciި1wC2 h]Ď n;z!6qeK칙{w F=|yG*sȢhN$zoշP l©S)Gg@T,7 Abk$0sG+M(JAT: 4^b(IبjdK4=h$[t[a`$'5>xzwmI<қeagMSrgv7 ƾP+gA!ћI=P"eDr|)J~ I*3aD>_Inn"NFɔZ<ʘ71tm[kau[ ool9t@CV,|/:vcD"lXx`Mx V9_.i},Vy7A"ѿɛN2e[X8G HOhY0BBԓɏDJl ucPy2 02"Eؕ\w&:yZ-##@@bOLܲN8zO/2TJzc`C$H"?!G#PD@qVEJZYX0R9PEg]yUgw9NKю_۽QqmTl? i:;$+9+qkGZ-)nK1Q9'BJf襓w 4s¾4T|*^89GGbskˀի4aZz^8 Wt~s"?RA {9k_xA#4dzz.~ϻ$\: j z|I] Md#gREO(jүdJc|CE,B{1:`؂SC,rZQOa%ϠN#(歐9~}eda]9]Zgx_(-CҟM 1W]ωla_ UZkp[rH唦MH;Cyrq$fqD.9 WR8V`4,r3Uۯ.m 1W*GU8~nf~]x6}<ρ)O 7,I _K IUՓy;zA&^n;q4ḗ;b08T[XQUGa@6Qwl 6ox5l"Ono5 ɮU*]oY7l-_YFp NR@|) X6*v?CՖE-5\EPF|4hUGrwxdyOTL'VSpi_|}9 +Go-E=[mɫ3Ca;<ɳܺ0++yb藄1n~=i/TG)vC$)ڽFdE$.Aq8p7k)d^= Vw5a S meX^Bf8LeLDO8w6+$_aJnJW[vr+#'UdƏ#ii%J`vPQFl'kg#?[um(Asf%mZ9 5QE93wʸZsU20]J,l| ZEw"2뛗h.l FTE4IDqK;3(W]3cqjhGD[Qa+⇍$d{&IE3K.y٣,ڇYtع4͒s$s#~E9cq!X;ˠ_)"z "!V`HN,J%ˡC2'8Yx=ff-KqumXM#e ߳;Y fRY 5V\`ϤL4u| +I3?g_Aa_8>}A n&$6qU[3=;Ja(ʝ2K4uo (ϚD5TfsXOHwHs!J/q 9t| eHLUث6:$܏>a@uOf#ņ`;-a7rܝW'M :83&3vSZoWSpꮊtFNAEL$&1$7QNd) A2R1" ɫt9vO0ssulTɃZ,O/wg-ݽ/"W ïGӑ5Z@s&ތ@Ht÷˒3S Cf%*w.T # [*£ 29]ps1 c-޵=gi:7aW(]jEܿ j&/;yLD {FU3s6rz4V#տ_?Xm  "Ucf#UGO;@Fsf~r ?k\~:p&˜F|؋Xcik| ^(~vmQAMdrlaP۬ ƛT<f>D=]p'2D5Z PZIoam%5CuXY>/lCGJ hd4A\#ϴ9 $QZWU&T'ޟ hNy(Yt;=+f9gYӢ9'B%GF2*{q2cm>TY'JTBj|@] /<,z~r 9[6&VƊ_S^PP}3u/,K`IeS)Np\`Z+lz&IV EMIЍ|a+ n9SaȧYyN"^jw%vlH%7J%b5H$jTk%덳 XX_Ta ,wi6jh|,$x[d;<1)DY?N~zӊDfWAjv72U.F4%W` euXDKF>,5WzzLv:-l`#DzkvV7UML(1b(+Ph_y$Bi7Xh*Osb7QLK|J5i2wn];Mh4hcbVm~v mm4@.A@_wX7J{D G @[0K{a ^Η2D.P"߶KQHq҅Pd8VW/!K!u rhA@rU|A8e]+ZQl-* j0 }L3ԣ:Bx@EOV0i|O1cuT^VL~>H=51~|8|Tnj3bX{s9|C@,|ڰ P6?]-vrA8QGPC|5tD&*ZlʠUmJ 9|;O#TT]/MN>o&;ok9h3,u-qh8P2lYNQSmnŇ(>cc#*QNI7uކPKճ=IihM#aR"{z>' c%v< GH_۲Nl 2T<*lL\> 2!s9U#LWD!CXg~*k 9OlJ}絽MtNz YgR0[wrHFy藱STуr1 鞿xG2wF$AKcA`[L8~{D2Hn ȦsȾKF%[}tLRz`S\|oܙQHP}^'s֩#熯q6f7Dt6&I6I@;GY mzqEO8D,3̵Mm:n"NL|Bi}HC(} pz4g0֧IqCxC$+ys6; 頻Nh? QIXщSCÈ_41=GR Bd,~9d2dJVe76-ZvdAbZ%zt.zxVf_n^իD~Kʥ GdNX# 0:(ҹpgdQmE$Qo>~iPyQ <9k-Oxge!WžB8;(ȱ>>;Ҋu]Ᏻjw+Xg]mZ;V칢 f˼d+>#) 2&՝O~R_>fcnP92T e{z| PmW&y aduҰJ{=Kn޹3YBE9\Z%I.aOJ`[>0C^mjt a@eJ"%S߄8! :z+=:.<_p};I7p7qF?B)p][#YN M㷻"acT?,P*xXcg.%` @+ GޕSQ.QqAxR€&gƶyHg9UaUW)e j.zPJ6@G-g%tuH1th#ls™{S˥ ޭMvpq[c,<k%TwK?snY0讅'Ԡfd_saUڏL*%Nr+Use&RcOC6Z=% ܎7![X-J]%JDXȘw^5҄qF*L2DF<^&?)qZSV"Mթo܊1W(b>JëCtӪ]C%i>& 6yZ_W&:`$b5z4a|C$^^~쎪 3k+˭S^M ٹEju>r{l-Wц#(wU~f-P BW'9H@&b܃?'M췫^7mTb 8ށS E2 S="SKfmC5&H8QUmn1 N]9d4~GQ2d:: dژJ ~~o}ʬU<#5"aC.ui%_TS2pV29rVL/ORiI}ĵWڐ1d])e}t/ B42-` 2@5Sj̺Z\<1}M&2zL=U<\_"UsDps6Dx75w퉆w\(K/i"U]q1ޭl&~"tcɷzwz{ Y&UsF!Z( Vhnv>:}k賐|Kh̷wӞKşG7Vkv+r{\5>e6u]o= Lԋ]6 Nd(K0̅sҗmTGgNG{ğ7!e!+Gq0Zš&6 DW!߆1!Vܴ5/͚`= g$l[k@sz/BԚq:;ѝ^ܼ13DdIXw=H>8f^N<K;;3Fw!g)*^hnc. ʭ@yVܷ6yv|Le55ԭKg왦xdEhT͍$l28(xDd%]^8et#C < J5vd> stream xlspf]>m۶5qض&Llۘضdb|yyOS_W}uW]k/rb {;5O 3=3@UBM GN.4r3r4U jdin2acdjikаw4𹹹 928 0 \,3K @TQI[ZA@%lJ6&9K3`f03̜mj jqQF5Q)@Np;g@?x<-113L-M\@sK;8MoITpH 0vQ0Dm\]Ny{S@fdki ÅvKg K?CԿwGhjjEO_Ml<߾]eUi3rۙ؛ZڙT]a?,=CY_:F.N]&z[7=73 f_ٚ:9\?i=&pk&Vi-~Eӆ̠+S=7CWj3;$Fq@hpeܗb s7pk [; %IR~TIhò~HՅG;Ij=:_}jYkc5_78aԒb7JY26=wY f=+}ϓJt~J׵"SɗO{/IO_Ǚ/zzw'+qvԘT/ IUV{xYi۬ ˷FP?A»R7R˖mBgdϚۼ8K@9_N 4j]*Rޙ^Mcw95g@VEj~P\7:[ʨ7(G$mV! _4@tBZM>'Ej1pF`6H\{E%2$aS4U-K=od҈$5f]N4C9[1'1G\WqaLeYwX)q;3)xQ\#i6f˄8'W~zl +ʊ/ 5> ~}I~:oìX hO1!fv[C9C<%#gndk|T>XZ(,>grY&EHq⠕9uMd8\[BlM$RʾyUdmiTZ9;}vIMV&զ.*^vE|^H޿æ=DH:FvHhx c,﷨ 3ٱAU;@qf"#ysߩ&+Sl'/=0.,QHծڴcNjgv%}N 3_- RHa'7Ǧ$]jضr=~FQr$T:0 :4c>ƾ~J#Q 4=t돚XJ sd*wP'u]k{.gBp ZYd%n V#A&.Lr#ky(Rn^ tYbi%z,DS6]JuK4w]DV hRُ/3b* ה,*^u]}u); f{$lq*Jh% Ua„ Yk% {@ %nٽGVrW#[܃8Zkl`gŴrno& !?K;ŜžK[1t`1K<.1ħib/kF)zJ~j=:(G;[#[hwjo{̄viEM|\w޾oVm:><~tGfck>eC9"]߈ك%f,9&;(noMB}.^.@4*`f |J\}&Z%봪v $֏71`<7XHPK;YWChZ]h`g9DD.h4eM@yI)DT w+K: =ك)^v)4X-58\~s:Qp|8~DȧJy3]nN[Xvt:1'@\[ ӛUFYRʱuYn%_9aăZCQn-ܺa_:k+*Lʒ>we#foַ+ܥYl *l0ѥ5:Tý޾Ӕ dc(+/*%s.`zD+S)W<uQL%AJi<}̖`$>v׸ﮫ"ҍ~j]GDj0*d='lI!=U𱟞%PDQ1g LiMl#$)HG8ؽ 07>jn Qsa[J-v`2A/% t(am߈cs2D^,ևj;dSɍ&_b$nI|zgKڢ_c4)\((huv"G7$XabdZfCWP"zn^O cKװ le׺BaOܧu3^Vc(T\ iqXжe;ZF\hd$^Å>n!3[>,B**]Kز 0qT"BUpU]-d4Uo9'Zmͽbpqg|^GQ1äGu ̗{A~W_-;R6F;N08~s!Sf}I8 X-ANZb/?v͋ ͢oys]Sh,&+At|㤍(B`kƈ7F6Xҡa-}tlX[dB:M}҃80Wv%Lx7r+kSj$XӆБ>3i_JAۅTn<-O$N"EB\@ kH?( yÆ'l"q.~SitH=:z*ߴ|&Ng=ߑvRi, Vm@~c'v!-mކE%6E(̔R1VtoY0|[jy4u_T˜S '&Ѭt`,2?}il(~d@eT޺hE2NxW *߄fqv P|IJ|"(z%1.6/_ U;r捰h5z%{ԖU1w|DP;zRmnTзt75t\vYCꙣ: *BL\ثd9纈/u}HQsvyywFFT,@/. #}axgH'ˏa/C%1$EzjBY±-&|v/~VS,/]b3?d_eR9 )5leBF: ~¦G&SR9/^\To6C3وz.ѴGfΈ duz"h嚁WJ^{7vZsAWTL6iIH{RT.yG f̿-U* _Q_e@aG vS2{J X=eaX'%=\ec^e0aŦ=^K⹿Ǎ+Rc ]Ⲇ" cޝ5KƔz1.-maϾCk%.tD$i9ys&=X hSee+Z4jeL<%WǑJuNF۬}9&#t3ʘvL=}dZq{O};C6Ğsi#{ku9;d`bFy%Z+^-DcQlX:B: xҶ I]e ěy3on#'} :]$X$sX{MInr_+5!VpLU^RgҲ8$NkC_A}oh+ohsš))>DzFwt_\_ Qrz|4cOt53ޏk9{W.HoEŤ=&9v_FxقOȋ4CFeʕн%&Ѻxmg0?ѐᓳrj]HBպS-x+}NvL4Gi? /kB&՗E$@/C.%`Cc8vA?z*̣4iڿxkj\!q]<#9鯠 ZoRAӄ o{(8K  oaYѾ3򀺄da׭̉!7NwD?: ˢ@rτlqsyƲǏN"[9֜iY .l t \oWDU1ޠG٠[xɛ~( _-5Jݚ R'VW},^q~}niͽz yi!R_2(RR[zäeX xbNkӲڨLIUwNv9e/>$WeqFRmlr>|IE]03I$e:efЁJ2)dX0y5:f¬tcO$< "Qs,^־,' & Wk!ֿY>0*A! zeI[ɓNm^W8H(MAgZX]X:Rt+ƹ uX+"O]>og%@!JppCo˛1 @{R:%KX ζsO' ^YVI)Q8Qdz\T"Sk xНUh`]rߋ+j\sߏ p '.wflV|gtT+ Sщ.8G:I-69o줦^,r8,,tQ^TVu\\J GLcH$Dʂ7@ؓa4d^wcpk.s?d"AR-t(r+Wz:,k%z,&G,;6rTP`n%鲞 }0C0G ug8IuOdʍuSh!oUMo^D$ZwwH@!GrI9nE)u#5oOc*|ށ cfs (] 7$c-*,fӕ_&MeunUߢt!BwGGfkbBej:K4%M`]bf\ڼcZlA)2hzml5!ӱp4 w3\ 5nt>w&ÏpkrD3??1RhO,"x'&t] WvB{<5 Pd`ŶRo 1f0:eC茧sL`P3mSYF_}ꡂ^6DޖQw~ABXh}۔u0WqEvv@C`}\ovt #rEl~l=S'g`:M{o` 4f=;}f_}б% gg7TkƸޫTKebF-nl~kQѯnX]ƗID^lCȯƄ(#rjlWKA敀xnF%a,C)LAS{H[?y^r$Nx=@^hTKPE1;%ͻ.]75;›[e Cu?+yXi$c()1BEwc4Q=}}< Ȩ3E-W})~PX[> a}JYg/_k}(%89{M| KOH >(̑~%T wͭêCt$#˃vET4B$i\̽}I|O]n۫jA:J ubao~Owt'8þ0 +C7|AK 'M(藂<&"?#ÇV43詜AgADԠcۡz' =sʊϣ9`3q)KC—q#p2Uukв| g:NLJ0Ah]jnu\gmNݪGH!HnEbnS9 ]n:zI?en XS SҠ\AR"7e?;Qt!vzs^FiW4|$X֢*\R0Ct~&?wD,v*皈G\@u&{OFiU ]*Z[2eP4KJԠ@%ɒXVO\l>g wiȒW85Nbܾ>3dYj-)t8WcO%BJ퓲 Jird"w7ˋ]GӓKWXbf8˹`96""PRy@,\S[O.z9m¢e$5u2"O è݂>ca*$ qq@+1gL"]j=[')(5>a=l&_ylW7\F'M ] ҽ'[=ͩL1wP&l/O*"kpK/eHYƙ3 q'Փ{ FJ Sgk}E[o5n^م. ||Y44?-!}mz~T=V&^w~j8HdúR}GL`*mN2ct6dsE7IKhWoG^>df՛iקn۟ď 2ɾU'eul>#IE(:=jom 9)Al\gniNJ #P3lE~ Sy9?Ktq'suƫ{D/.*.O ϕ^+bC[ݬ5|lETlHg :v4ô)ip2O|;7Nq mrTI;5n_ZB/30m3M: .ԈG*4V.I=߰wmcpרQk>1/̏~`{~pį,>5*!m&/LB7Rf_>tKg7`^K*' U^MV+c'5.!jEbtz>GY%"ާGv[edїǕܧGob1E):RaO&z]8ߋcHyP6䷥Hn+;{ kcX6.wX uqifi*m0G3e],')dxgS08@3K9lk2O>ak: H'4KXT 0mCxh0Gpz{xm2 vJG3$AZ_ [-p;ZP4y\%lU 2\6?'SgS}o g]ֹxΠ_)# w *:9OXiU-K/a 38?lmHs!f%^fgH>yG5ۡ)xl?Jsؤ/B&9"[E|+ +6tkCOb'P&f + NEDX0{{;sXg(8(LUy_&/)ӓ`5V]VڃFs\P/SJhsP%zv\Fßp^m&SD'J,3*g0wPU0q(޲9o`-rmY@u{G sÑ4"o6S bZ ǖN*Eh9ˋdbR!ͧ&|f(bTJg-vqFah e=#c}+ e` +~#C0ҩ2 }.W"@qJ/m4Jttly%T?"kƉ) 5^hy4IXx%vשhԔӧ&P`Yt.+]%`SŽUj(pZh 3!?+1OYqo|8EB#Y~DV>B-#\De·NV涸*;Dr\>m'˙) jĀ1{ʺhŷߍEfTY M[ L/jXOӷ`^(UzF8B#J'|#_"Մ:am֝ԢLˈI/|`j1ty Qu{l};p!=L'-òCα5\B@P/Y@;=|44  Ml'yD&hMf] j-~u@m}äP|ͦtB%!N(Ǽﻟ\vъwiR(;\jl4n[]r{~tb-z-m@u$̬}GGc%nz%5!>ֱ `zfx9M~<`(1\uW63IJ-qJς W!H-J?+g>e/[ߟDVSĥ^"&š)Y ΙQy4>!jNuTyX$(/3hPeJAקRa#kyP%؛'zPVLE*8cZIR!&ˌ4{oq 8@[m ̵Љ[ҳ$Vh+1yN3~ߢ0ca{6ԑ5 b(_B&ؠon8nG_\"8;~+|!9B N|2-;W>s:lAsrc j032Rƞ'5(l~F}PoAdjhۮ{~Oyvq_+v|Uo8J`oڴ/SW0&f2+؍2?ԑ1;3M_Ύz5(ze\V(EK9r7u})@rb`ھu_j2!DG5XM)I*g}c .>}O% @T2ݹr" qxjs[&O#K=2?s#$#lʱv|vz6;oŽIYwty3PWЈQۊNONW22oB(=ذEuy"Iun?v1Hl3|q勴"!Ԃ Yv%Ε*E _T8K J+n}y8 CƗ bw=dCyl |z:ס&^WX߱Q갭jr/jGQuxէY6Q $,-r{[HxVWEDcac5c`.qRj墬[>)75 ?76U ~ :dl]G ϑ$$vxuwSmRzcRGfJz..YE~a}Z=\œ2iG1PcެZD6>+8vBvxv܇U#yUaL t:*McTtت3YnkS.>6e?unՆ^󼌐={+DitoNYcJ2O` .nZ(܄ݾto[LK4ZwpkL=ke|q),G(iefCJCJJAE/A:v:%l~D4s zl;";.j>ӹ" 7˾A>{8(ۥ9xqZrZ}z>4=!F?!i>?Qʷ cݣ״_NIE*8<މ>4É6bH)ڦb }5M_.`QYص&TM.O^,`2uY[wXv~^pg9kGoc@Ɏ宲>|}vCFԿYjet4J fe 80jP_-"V6rH 7vҴ1pzD%fhr]4xAiBN5R _H&9jߎyO4qI KDȕ2<O&&تO8%"%.=5ET 0q 0M/a .i*lM ṯ&i%~˱ Ě)BwɄ@4?B~g z(OSS@xrghEZo l Q)#9LT RV[+3ڪ }j}F P1HUc*lw)ߩIri㑉˨·Xj쯴O$UÞ6S;ޞ`rYb IEɥ% Ye|HWJOYY nLtԢd3q?9GMzX<~vrBe6W!9?~E]M(GK`Š?lM7ýR t|aQ^E@ӨvEvY~-/OQ"Qiʈ "_5BP{ iCnn=m]v[ $Fe=BJ J45P6pNl&El*B()b]n`]j?mÄ]CWp ^<9G._RzH{+|q2k^֡'1M+"yii"Y@  f:)i@`[t#2h^W,i1c9%"/6Ji&6c$Q%zA} dƸ$[ ޼#L y:?]KzB1&.Zx6pLޖ:+}/؅cJ'ס{Q2~'$ 'soI gG/z\ͫv+`3z%9\e>34V||SW=礷hD)DNHVzDfb5OK2™,/}I`%'Wo v72S.~cIH\}_@T WeջU>Q 5_"` EO*`M>$ ±:g S#zBv̍nOjA _wm4ų)zP9"daI=,dgݲLD'ثf GDzUv\zTh3 Ǡ$ u~MvZ dZRG? 2鯩 TH[\Eѝ#b$R"el [SЗ6vI9^vX?+[\1 ^={E*!=gn|(1. A$WmĠOOJ.š-oWD} ?'b'ӬOfV۠ol\ڜ'ɪkYla!{aU㦲B'Gkc~L'Tcv׃ n(ZMLs"0睓yq|˒q̏"{UDClj(*2 Nw=j&8=O2K6j`ǧ ,hmQxi2D'FJT= }盗v(9ЋShH`[jg\ቩy;^RRԔ}6W=+1bԜ`vw #eX4= $$C@lY[ffiq67sP%u~Ht|r|Ͻu~`&@4ߴY`3Wդ#Y@ˊDmm+|Bh/EPiea׌_ &CJx%!5BM(͛t2ZB횦?\ B,w 'nTsu=큗R|0cF.%h}r&||ڽ%td;:Cӂk I y٭FtO;mڵArq[ s 302bo־=yoIj_QH#bg(Vǡu{uQ#.pDZ,}9f(a'fƳ{ /f=l"Gd9"1`u=OwqD/3YX0<]GOBZ_X{ojrb0V]7R=Y%"h4‚t6b{fVP_g0 j)_`D:Qݟ?ŗ>:E]'՛[E+~*gxD.;)rs$A#v7En>," b!ekN@O5̬I?* 3+N7R'ԥjߏx=@V4=fjRWvx3a.gn,#5<c -aN+sU9N.Ii K9bЀ(@4_{LeGIW F2M>֚r&tIF=""'^#Ai6'q~. fBPJB8Oϫ6373Б,u{U kUx8"C gaL-wt2F>ԅRA  (PvgY$u9QmO)}n]JIIYw/#7"m[wO1>ȁf6RLOנ$:Us o,봻fWQ u/=9s 8nh;-J/ Jȯ 8@ǿÌ]GuDFlz]i"~Dj,W?8ܩ2` QLh)z4*rm/IO7z/M 75Ow痣'hS(0}D.r> Xj25Ny6s#%.J44 gԂ1v_VOO=4N RBeLo~-6?v{|NQ~aѮ%H]v{iHrPԆO`o6ѧõsx WXlŖdR^/# 7 Y'l,|;Ids fy6kWL|w~ۘkl?ٙpj`{1 ABdc wمO0@ HG kDY|I 9zfE UtI/M~1&|ݧ^g fȚ,R1W'3@$i吢&#A/[vVt_%OȏAzsf=a+U*=D|H3XdN[>oU+F].zh]h\#xm긷"SVxz~-lŋ8-gW2ӻ4Y>%7U1Wf7wO <'(_^AK7df/ "[ѲjNK/ qG6e Z&EKСX;Fp3>UmDb% UcAt[VSwhQKqeJZx{K 1t^rkQ_E{f7c$l9$-^uÓg +5&lƧ@{AgLKC=^CjBL;H`N[4rQj9B0ٴ Fm)|q(m Φ%=NdŜY.xb$5G"%+̳7Ve)q td,F̣QS/ FWPJav`SWuK_[`TG_oqOn# Xzvm%1ek%L}t4awoڎ~sxS²V<- )}g>sx[^H\Oەu.f8M_W D4YZ8@Qs[Sn-+:p'PAڶo\L? h_ i S%9i pCr;췤Qm}22 AYK)8J_,IP&RH|U͆B%5 K }cg^lZQ]j$j]tVN'd`JŢr1ߑm&1+mj|Nsz`FHN >юitʹ+T#$lt~)ymlsY/.q<#Ji(blQq9]Nw|1L`|PtEr!>[h?ۘbx ~QpXxjJ n]}`*[[4+Gٌ8[Ik$5:C L"I mrtʙİc';wI"~C@(h }>􄭙i伹qWnšzjQh}0v=d#ND[^ĿP#6T[A 'CrW) ^[57h_Gͬw3c)VdڞXꤙkCxajMh؇)HQXDtpG^{ŕO}G,,iã񓛤ij''#8N9\:^]$NS `q0 Cט=='Gf{>i'JhM?b|Ā~Hr!vvWgM`?yT¼}>CwɁ5HvTQil dzhD6pW W N'#TE!yn5{T݄M8_38U(: 0޿QOBYۺD  8({g.ɑɹT'c0Uԋ蹎=e= m,bkBOEOQ]fg0$Z% " }b֤cJƎkKJ%"iaLC^%~wdL/ƋY[)@ i#Ξ?NA^3縩- XJh92mWd:˾ccvr嘌F@dUkn~ŏph`Qzݝ'2`7`fP"`g_l|jx@]>@Ybd=E7$f/Xb|>a@ÜxY4}Oo􃡑6{$\)<ؑd?b R.z&91d{$fq̪ky-nm|]~X,Y//j!ۡԽ*l_oGLD{Mȑޔ1v#3t(Ua;@"ӊ`PBva]'-O}U+\Q>/%7Sm^CZtD-XhZŦ6栄dYT aMNg-ׂNXP_Xx5 vKS^<}|8Uة -rQۖFg1^|>^koKU*w.ٵ&UOz[HF1(kxu5q Ւ=?6ڥ0&+meD$yf[\@2ڋf}d3E֯A6p- KA{wŞ +vY7dHF`c`U騜-o!Y2X0('^բ]Be-TK RNjfOe$/LL]G`w h'怂AYy/_ZT|ѥ/gD„/tNKW6>(.w 2*t1\!IX| 8g= - #mUm5LILSCHG2lfmI RQ@̫.1BR&oI+f4<@.6N@$51Z!j+ ]P577AB[ pFب-Hʂ?/ai"nR%O"z4K+%R]#j=m|n0աzYTtOT2ItYzO+Ng֝B>ϰm44)]0wMj!A8C> t2MY:( 磘3)15<ѹn} A]m0\րA)cz\څ |Usa5OsDxܒS/fbH SoKGQq%~I)/B*:8;Slxb$y-Un_j9-~" M#5)r^Sb{cot3Ah]hl&X $MBQa0cz{ Y:{MW!>3P/H/H!ϟn<-:XQέ%.al4(U~ʭ2)}.sF Ց"i]fH Mh٩ͅޖЖ1T;w(kq*:` %.;a[ R~$vEΔl{R00W#D -A մ=[ QLn5~’Ώ 3Ny_B-МK} ˦2/"h#վ@g<%Y6! $J(y*^&[2^in-#ǎJkɭc෦"P@e!pD JkSju׫9YXרDkǥ 3 |M~Mu2NB_r{]^hwV0Ѱaʧ KGQ ^T vǢ%ae9_tgr".GjKm} MGEcS;E p] 8::`xztD_U}$m!2Bkѕ`L@ss)ŰE XI*qg"p)伔Q{i>JH[P&狌-^ W܀@l}ėH] HL_ӻI~8'KUq;o7w=KǥS?b?JwS awN.'4U|a %6Xnșj!477rp9"i˦帬u8Q^a.x(V kVrӽYO1$D!V%|s'9'_|q }a/0W['/r8mw;"2H=#AS>W mlzLOԌQoiD0(OXuEi#,}<Cy>~cC /F0;Nm :3@b >܋e, v MCoZ1et=,<4>HH6Љoi0ӛbIB j:w EFzԣ>>V:-Kn;U2+7N)uʍFJL(4L|rkHL s[e;Q `)Qr5ϭ6<)jqpJIlv.l.+a¦|pJ" ޏ#i@"h-XCMjUr< ƃjSAsOg?" m_|/(ڤ94 +jp)QH\V_ [ QZN$ynqwOd# H?A&\~(gb"2až>dCe{Soe⨻umjު.D1*b(D_ !J$۷3FMi8r8/:ٴKs]Å"s;>{(,"*AHW VJ*d۝]WJ\ܖh5_G7dg;*jpvMz&-saFMךOg_W](笂4hUq'Q*J݈57PlFVmθfpDMRRaQG 9, d_;|36޶sB_lSa)^>3YVPy{4 .UhEEmHvh|@tf;f:^ۑdE"5o!/2:tkS-a 5uC7n?^Y֋ ]62Z2]z_gAzߚj>. 4:녟GQQ6\&eDH`b0'F4 [rV81ȅX^R%ę>CfӁxdE0qx|U7 '0i9PBͫ}@n%sC}[f=b՟olڟW"jK뫖o12XU ev)Tj}܉i-IGp3Q"lEί Q6(p۱'bӋiI4jxgk)^ica5DH1J`"nERI4a&Op V8E^MW0Q3i,/ٙGAyE&4.|0hel7}i~F'hdž70MT㣵 J{J5A:-(R,x92bu9߀![k{^Ǎr@';͜6|5ăR =s$aJR0^\U1ejv}uSp o+%Sn>XX<@߳+|#ֹ|rLI!u^!15Hfi}Q&؏O"\(g ԹmimY])rɼmOUG+Q-')"PcǡVw cHxQV`qڭZ&OsDX ɯ [rٔ ª 03=[ՕK n)HBqrB%zC5 di DۀaW>e U;tZJyc҈;쫤4l*`e3()@@>ci,ؽAicHdBmL3)r?a^'BI!E7H%ߛR J?}oqkO4_%TG^ISJ$3I~@T^,<3n?}{Iz6O ZJ[Ɓ:,x6~pkjWV/ @|3DN$3{D%o"2?v>YS[*v e(c-ElN=V:ltT+mh> -NHZ7F7O`w_}&NB O3M\I.Wq3TWOo?R Z4%P^z!Pt;YItEDYW!@YP^A\KDߏ S|0`/4U@"R`zI*nX>Up]PZx|E'vO;sݴ~^֪_ H|j3ΔG[+vx"W&a!co]]/gś~0vU_iq_hޱS*Qo'G}B^@2) 3IBG͛}(%sa_b, /Y1G}s­$!UI5%U-|L`wZTUE~v%[EQ c)(XYqgtݾN/O JpYbr4ѓ{; \ms !h;UU kOZ'2t{I@1|7z0g~OOb8$HT~rjӝF2?j zr߀ ZG~b"0V7:wVzDtbB 4^g WsԠ]**'*qrݱa $@[{Gl{'™*Ri}v0_QKb& Kv{0dhmOP@Yr:aI^'2(*ο\/uhσRj#I{8 3zeU(h&[G [ZmrfF3)C 3d?t!t"yEKjEPw]#cF`e56C\|2=~`0C==iLsT \kwsgRt-I;:~f-2%{MYڸޕBK3~9}h选?Vdca\S$(9#K<7-"nWD8~x-3hw5؞O8euR[ϟIHҪ9@/d,?]ed+]d/21m ʲ' ~)u{?v4qd{-+]#?3Rw__$ۼPNa^;H ѩ~p'd%0w&cC!JOe;4F`BwзD| 1/7¦^kȘc'uj3bb4G\~ I$[Vk#r;m+`/q_9'[/TbjyHÛ `z7_2%о k\zmHǖY>`O|uψ*8*ِs,7ҷ`9.9]_@fpK[׊HnS.ЏH tFo~9Iz4&.aTᤋk(%YP]dC9- d~?3ede5aւ ݐ `}:-2C CҔFfC4%+UȖ|*J 7vE/uD^2،44j$|'n+sVn 3s`X=UmR)dsmÀ?R&' Х 82TP>ImNQ7Uؙb\'k͙aSi{y@&7f )I3:k; D< ;:r9fs &?GmsNr|~ ,2{xAOsL54n^ B(Es7GhwMU1AA(vd1Q*`Qf1垸6uǠC~ʂ8}ɋ:/c Wu-!I"OYASdepx'17L`&7vÿKI,gsAp07R77Gm3,_fcSTQ0>yK4gԵQ%Q05n"wN\?C20䘯`y,Z}9GR* ڲ$!Y l&c[y~y_ݙYAVe7FQR Ta;g]{(wP[ *1|^03|^zq|*g 5梽{emସG1ަmD3? >FX/?(\klռ J |4姳 0Tfŋy"ܦؓl{?:@?ӻ+ 'Ob 43GE8LΟuxz ?"+Jۅ|行4ٍ)b'=ƗZxHSQMDzw? \Ϫ݊6Q$Xv̽<@Yp5Qѐ_+Z;sN'OHmj>cr  l:#U;y?]%{;!l$a{KZ.!?l 慛Ml;UN4q˕ه!u.e 0&\TPQq-Y0yb"MTVilZU{Cu }'C=er`E6&OilL1X^ij!Љ.IcBf]zjdǰ Z#37(< K_.8ՀDuJmy}'#v>#-54\]&"s^ F< RdjI'UpXPcW)܀,B4ɧzfZ@jq"P8S|ι,7 ҸvyN KtT햺TPAe}wZ GDK6ѿԦ5\D:-+G-(vs]M@N%cҙa}n`j2!F_}kSX: sy?yWuN%%/_8hڈ ׍ vbA5(F,1;S`.T'`TwVxE-#R6ZW2 /1p\5 s:>.W]cf+/nF÷2ęw~$~(xإl^jD~;lD.x=2hA?`. ۢG3A7vko͂͞fh,ýlU|9pEhOĞmSPvck5@?w4svs0ZX?U ;A$#eiq8t[I&dP6Za[A"wnLLJn:DWAw%'5ZJzю!J*TYSs! (眍qKnUFcLvqO !oB +fx:*peFh Td1KFlB>b׾5/K 碀$e{ԇT;~ ;-}e0ʃ5*K D.N<]. p*x$-ONRSLw<  Ȥ'6߂[e( jj1@U ,͍ZҮY#m# }WՄ%^G:bvW7aok.LlChCѴ  ZRK ځ*"_L[K2?10OLjV_z gRrqTgBr$HF%m.50Zݶ}bͧQ(wRF,~?-f .=$a(dn"|Í'ބ7^:|R͓wLZRƔ?Pzxʛ f`[#8mѷVUqK\%`eLT u&lI堠3!&I..-#'WA4O-0pE1fmk>52i-RD R"wiy+(6[x7za"ˆ rNa$9Ud!Hh(X \|ѺLj_k[ޠ?5Q{lx?U&Sɍ!Xm,GU " lCx4ۦ"S4[0v7QvK&LUrE7woM^Ł5ۥ0楜 5(IpgW8;J^/b= *R*Y뒃9:#aψ"9-Og pӔpxrӕ͔ ҴRpӋDl#nXx07uot}K1DV c*5{ gX˯t$O-SZ + ,kJ(?B(-%5EcKDm449O$4 lr_6aeŧ#+ڠVHdA+ XۨvLxL__O(q^x5t6o9*Д:1mN5H.ʚx J !CmE|:0d$X-H됫*m\ZeMVk)ų@wJz&QZ맓̠Zko!2bC&!4=seactjf7I:YkD%s4LG#1"XeߎȔRΒ%45jlqh0{@:*Rۥ 6SH`B~?Zn~5u[ }a_2)^DTGB78iv~N@w Pc~C1ߔ 3Z0l'gћ۴Jי&t"{ iA3Bd ĄF냹;;ZO`fFQ1  N6Ŵ;`7FwᜯJW_a4⿵ק 8$=ٳŒ@topA HIW1~(E}L߇'¹r0]IqXn QWx`v)XFQnu 2ݐ(۽ +~gZYMً5iXJ3PKB&L44ko]/u>q]xө|fVɊR\,5#ls F4ITq?EKC57>uw$x_))H@5v==|cMbеeT-~H.A;ڒso"1 %bʖ*XKnU/*KjMCtyMu1[F0@yCr2P;KP M*sϐ\œvA›-g@P(S"jFG}6J=޷,5Ŀ&LJAra|:ź> stream xlcf-Zz˶.۶m]mvuٶm[[kN7|#Gf̈$%uV7aec(*+3200aHIM -l8pLJ&F&# )@@aDo%@jgmjadquupurst'Hln06kHȊ(dUb&&yCk # %`_ `v6eAQ9Ye00 -O?&F_࿒Z#02-&f0M>?RMLv51Pػ88dMmXX{: g5>,D-M-?j5F?&pOWl=OJw>zQia i"Fvf%4p4fyL`0߷;@_#$%$dEefc0289|\#GG[O-0-q[VSNP/3Lh![57;¾WsÛ 0ݽܑo&25;" Y~-&0zWӽSŲ1 sN__ d9t(Ec/Gڎ[]x!G3٧F5Spm wCg^P`_e)!?%+W VٶkW@+=M7C>nS时%1Bg []KOIOʕ߻{TIcX%F 1WU8R9-)Ѻ4n 4_(4(Chz^%W"4 ɸ9#bte46d<J d0r*)ޚtL.Bw b& m3'u{GlĎ{Q@ koF!g])Xt7#a0ć>]_R'<Ɖ]5Uؕ%#R}iNGTWa?Wn60Kh d0ѤG5^ $` QLq=_-މX`Ͽ&+Z Qx3p@JG>4) g;Cs!>p2sV ;-C{DM3}e}Q7-b'šG*Lf1aXVn.$!ݸ>O4D_7#VМHMc7A%x*C Ԫe<Lv;QE1:CUSL/E"He#;sBWZӄw+eFb>mQ+ݿT>P2q R|}npvȾcsH@ Kum8ȩNdžAtDXd bћE?y`WoO`Jr>W$ry /)9<ټO'|=khoBe\IG^;[$d(H ;[SxO/i_DttWïbih"cM4iOx*ZRqzrtr\vUPtw~8(=ð`tpy6!M+uXQ6\`WemqE,DġTӒr83\ x ~`;[1̈?m~nȤ1ӇvaPܺ YJ&Ob';K//*&ۏ~a[0zs̥=&P!*_sƤ 1b쁖a@d EqĂ/Q"(], aW# ;׷O%X]o Qĭq1{I%&G \dqEo߆Ugz6sUn] LEE#< =_5\{b5g <Q4ȒT:衞!s whzׇF$e^ʁr oFׅm}LݟJI~@Z_#̅jP=UDOo:4H7rOkv$CmD 9M}I,|U!3!%6p9۝˅whLM6bo(c MFy^4!Pexٛ;Cђ5V 2DZЈƦ4> qC,a@B.]uSX/Dž`M_`.׃hz̈́"g %]x}&@-ֻ/It};"F`qFt~<YoeNOUJdQJ\V\{PIh'n wdRJ/ ߰:[e] O^ǏprjmB׆F m ߊU14 Ѧd4@p[Ӵ9R66(MZDucH[VS~ xt8 :F:"[5v8ە 5VO!9n9lnD0ޘ^f|3O }D4!JrZne~Se;n7WCG <ÅAF] iMJL_RTL;Β^Ujdҡ9cִٳދX0?O_434fol:; U P]~XͭQ 9wdx{.Kkj})ڱP6zRi?a,TđPCŔSh NZ-!rb-C-Ay翫D=|9 Ԧ_Պv8ԉkM$]n[WЁi1u )$om~-˽Ƅ7tX+MDmP6U$j@K]ΦnѦC`kCٛ) ؠE\ dP|UG{ջUU<+*ilffz4, 7Bc=Zʪa N?1#pimP,>( :3bMoID-4E)ӦI%&)P(:tG|TU nYvz#䇻ƼG:P-3/gmh@J[>@zEA:A>%0偛 ]2Htq+qXV7D>{1 bP03EoS;.E JVF-JDg^+B/Wy3J*d?:^mGHRÄTGH jo&Uҙ=sxR͖'/ۇNUU.'t&Q-w/4ŀ~3 MruPyjytٿ% 2#HH-B%X^5쏇dQ Մ ĩ|M̝Wm$N3tٯU؟\_ư=:V a Pj0x#WٕM9lquĺBr𷅃XQeS&lg6ڝ8"NЭEX/%/,z&+YC/$"f ~m0S9+(v91܌T eMI5Nh 4X0k_}7;#,eHc^n^ 54!SJ|1m|(vīzrZGIs^ƼE(Dm~`ѧ4 @9uWж2>COƻ J!yݣe Qy:^~6a?H!: g٠CDm5IV)H7isbRG0Jwʨ(Ljq!/5ĞnĔ+Ep+1SaEhZHX)uMtߎB ]0I+k#=]6f+ u}[QNdϒ= bnm̮Q7u"ߔIVhR3oFi ]c @*k%4˹@` ]rND=o6\BۂU)g9BSdb`@MʑT8>?W2 IWG>4_wևidR@G 3i_T$pm*sZ&[c|X6F 3cj)hkyϹ<ϥY)TubJ#)nXt DiTDnLp}Ǘژ?ȶ N'uPl)d=ȽVGjIJ9\ď.Q@A#cakہXj1Rb~عLg ص-hcJz% ]^KYU>5n"-Cq $Yj\Bn]7ǯR ,+Àwεb`lUuձ/kq;X ,?c/Ra =%-`z!_O0F%N<^aIq0v["jMKF8"Vy+ϑprIXH ņѲ-zD)XS|P,Ǔ4xmwC~c0bY,}P"$T/,W:2rPQET5]~aoӳgmVs V){: G{AfTfsvhHbkE] :d0oQ8Big!70ĝ ho9dɗnV=!v }zɋ%t,rIWw0Df4 ,)}*eu{EEɒ=/E)]g,Pi%fȰVC~n/]qR&7ke 2$[#yr4-itt*DM7oVjȥ4Jm 5./;ZO "7Hu0;HR$s&GW.9߉KQ--"zrcF- $A{z/ܳ:#WGɅ` 0AYսu?pNEX݈fW1MMR-96xg}08b./7^N`'ǑD ~H K 5GvC۾w;L*h&x2u bߊ1vxhzm+~"k=3\8#=0`\4#6Ӡf.LCٓ\pYeQ)w!W2W8.Jp!Kin7 Yjon6dpE6ꁐN@f/Mo{Án@/[Wk[m~ ^gs[ %rU]piLbM.gy쭴05- ք `dzNHd1 z,E7`-, 7H8m1Ж}qõ/C+p8}"ebUv݉x(68y\jo&"έ:r# Žyݮ}}KI ^ XEP~#\EOqRp+U##ژv>{}~&b?9t{\aʚ)/4qvfJ+=Mս|񶚫XO^.7FJaH[AY!Ƈ[i$b A(^@m;FDרiN[eȮN] /J3lP(S_@5LUovC>7E;nS9h (f? 4(T{) \{Aq1$m1^R@P+lxƋuXB a#N؁zC0Jzcz}l&N [ȮwvL4_DеnE8Kӆ9A->belƝS^`å#&ܧQt_f䐍Y] qAӝ_BŠ/W CQ;?" J\}-l Gv/X?C j=tȐ&syI"PrE`'Fd*X5Pen4vگ=2З5 T2iBNۗqt"–kqK. %s9|Q2D@;)umk+}r( $,d>)+3^T Q O$gP-,bnl]r1Y0-9+دn5]r'W\i!V'CX W Ѱͫ7YQAnYuTK:x Fn,$($Ǚ\T}m=q#o8R?P}em'Vi(sn{hH.An| X6>Euhå<==.Gy\cP"BVc`9W`pb.Xw aƙH|OyE<' 9*c4q~P,dcgf~qzo@| U:ZN3qEa8aˉEP {ۑ~RAU(׬ʿ_0ְδUpJ x |*|]A9zәHnb>z<N#($8Hn6\e136Ko*^7/=>y5WW=w3X ;R`e>.RnLT1kpdtA"6yPrIOQTShLz,vЂ_ݪfN "4^ s, tO +rp<6cy-L iߺ#=%;KOc4nISQB6ZԏVBc؉_y|( _WO j!N UU6~/ttG)?b zA"7[_&BBv^> r,M-7@;A2vhugzm :I|ϐd$tSqGYSO"SPƒ-!iFNII@Rɂ6#J^rC>˙H@{ԫC-tշF@?nc#䗄~@0brAX. S:ɍ+ǜ1*7-@'ԝ'@eM@7bf"H}j)ހdjZ},C-;\.)W^Ě!ͻP5\dln6)S(1E(6!n[JMp5qgXD(&I4OzuR)O- u!_euUE#wU6%HfMN!=Lrce8*Y qzψOqteX QM3:b4ݼQkP;:y\Uu+{wPĬҹ}VQ.o6lwLF7ƴVs"L఼Q0TB"\DnPN}9U$}|POq&?H%TYx|p8'J{U_}@?hQctow^xCPwd[Y![EQM[V-P Dt!?x湤vWaZWx$=}׊[͵3LKu0Y6K4EYFN*D (Kˏ.m>sf/@IޤxY'Y&M,s^]s6m<=!Fry><dNaeLkN ׃mhDI"u-}覔waw߀l hv #Ǚr"I/\{Q# ʾսOG۠tUO +)iςʦ6 `˨=tn5љ]S.iK]y驽w\A`PM,vbAtgq䋪npEs^&?t{ ʰ. 81^g`qc L: ]om˷f 늎?>hoYں!Fx87`G(\T.$.!_ >ah_&7cnsrvG[295]762mF"zǎKY1]n8>|qc#[o<pkN$^\BcŲ]O bIzEs_%Gf'ߦx>'b5ŀaHqӵԑ3AFbR <3%?2<wCKrQd{'~B#F4wA3%]T\G-,RLv]WT]4ѽʜ\zG2?SLU>Yt'`~]Ո ]If95! 7wz)y6ZHȠHaǞi3W; j]G-pj]f_N n_˟P,YHˠweŒ=`C=}O j2ˁ wf7s}U__KSq7B%k Yvj6iyt7+GCr|@bgHE1D犉$#0Tf' PlCS>Hb>HLA=:#1sJ`l@ƈB X1 _<ŰO=B]"lk*t2 Lޯ|bʦ:o@!|%GHQ(䪦A|2{ӒFڣq{w,^:dsm H!fEtTOss.A f峅Pn?\^~. 쯐-*d{y?aC0+S"gRpٚ Py8^qbiqɀUjeףՒ`mC4*~ZP{ySxDjQ=C䭺%0}Q0^ zT2[^PP◬w3x/L|_@le[u%E>/gwʝFM!Y}P|){jW0譡Kr*$Њ;1SHHv+wBvR׸Vse/#),ӴdHYUcPYUMWԧ=[(pc}=S76n/&$xnqPd!H4b?>S畳E(h }>IOr˕~L~T^EI88$d_l{J_[ޮoXYDWfB˥.u;rː g?.UOõtalqܼ>1+V* +C.C ;21?X`Ǿ͍)Jku chaacԁSvUx \+w nyų ;F rM GkV=CFg:a=~N"N'ugzDo#Hxeejbd"tGj9k$>:5_E"gEb2 ķʁwF!тߝmDJpDⰚJ+\%FSBF\*[A3y^p6CZMjԵLz~ wWo{FNcmc?DYL] OG=nϐa $Tq'~Dgk¾ԣw2eR 61RB3c#.t⩄aQ+Q# b^c`zV ofsPO#ig-  }o|6DR:Z}j#my)VU^Q](6ZIC3RǐmUAJ!c*@ v=)6a4I/k}\Z., wb}(^5XO&6JGdc K3PU}pPdN0J{I%bD5䁮6'S !^@{Grϓn%Yvi9E6~3=|zPZ<4TB}Ngd KGNqnvfƒn'(can ;j_)fkDHRAj+Nuv֗ݣ[rt/·U\/!LO)݂#$<_T0f\3{As.7"bDh\J@֢*6zi&hz wUDWOeSBdBW▻N 8 XJ +E؇` {aDskhʱV=y xuI#ݭ6C,>ie-ΝBόMPW(e^{qEZy6HלНa endstream endobj 462 0 obj << /Length1 725 /Length2 36657 /Length3 0 /Length 37161 /Filter /FlateDecode >> stream xlspo-v~m۶m[;Ɏm۶m{ٱm9zj3{գGϵzu$#wwUr4ccg2132Y`D͌\E\͸f3G3 @@iBo'@`neb uwwtwqwv `nekQPԒPJȫ$͜lnƶV&Y+3{3*3? տ8?̝rbB 1U)@V.L\]5;Z-[ZuE02qYX0K7){sܦn?hH053fk+odgqsts5s99?Yz/B1-?.+q+O3SE+vuv3[?k#gfjffhϪ:zʿcєSo;,fo`jeoPqGO#g:V4O(k:[yt"z(aaOo:fFf ;# 蚸9;ٻ[?' ڊ OuZkhoJp?j4+Lgzot-M pUq=gv/w[Vp^KH*-~n+5_cۙȃDܹf*ROfJ;!K0Ew#mǯ.>KPQdjÙ Y^ ݐaXV8i?u"Tƻ5ꐃ'^Vx.T%tTqo"*"e_Nh\"~bT2X\kӫ ҌV7wqS&t;-)Xq#۩\9ٳ߿ߌ}"pk,,DTw"Q=qwTD=^"@.&<-u21ƐOr#3}G'cbrz1m>}d~CeeXmSn r/ Sae`FDȧMV /"BnuTu{u c٧#L}L[GnA7 b2 2e8& V8$h*0I J^s%wua{:!Ōm.LB0h̀p,4nQ2bw)w7|V)hAz~[Nl0f{AGeX'cR_ٲI$|kx֮= z$þ5=8`*gψ i ,˳.Č0 vBD(lvoj[w+> \@ ϯ35jV)xj86(Xu8B0 KSaWőG !A"N>b/o7U{4[uA⬍}_=44s_9+JCBκw6͗4^}H r_b$bck% g4;|IC蔄'^:pBjF̄qrKxٕ˹DUdؑ䥪ӕ&!O}y/7ed~ ]]jFuΘeshǠ!lPBbSsa)Fgh6%n,V۱7iabWqdC.Vqdr|t4z{ ]ږ@Mp۪Yb ܋iD^VKPƧ^o>ݺ46f:3tTBdDS"-auԉ,|å9 2hb0#̭3Oܫu6U] d甋a8O/Oy<q*o4MĤ!9S0d2J_DDތ\m|/RrF J]Y 1D(sf&Iɑ".Ip2 yt;j؜%#9l=wh\C; "ϧ8sp!/9rg/F<t IXɄCRl|M!+-Xr-MAĵg H/0qq ͚ tek}D ʖV`"K6F(.b}G|3Mk\04NƫJ9bRm'%JQQr8')GVm D}yqdYͷ^lM{p.krNZSN$b#6)3HTZta幌*dڦ0m%dss╣},0!l(y. |GO<<NJ'z!.d4틯J9;'YqD}Ǩbp٪L$u uiP; t~(zz#4ofC U&YV70 N!&? vb[CLń$Ir;իavIn`\)).)J8SoHYrz~1 5"jj6nL.Oj'jtH@& g\i|a<{n3a~!gĵm& &n)nҎ$4: |c3;||+?%XIݙ \[%Tvb~ĒRյ5eGzSק;BQL-@?mhj  U?JXbxx'*SS"l xm2Z;JEQ5CAc݊Zuk9G ,;\72_/wNCE9Ug2hWW%Z{~{ΡwH䴳 I2 i ru`IKњGXϊqpL~ĵaO~sjmcdmyZK߅\g43%:!(5q뫿ɢGTQ>xd9ԧS=ѿRsU7%0}C ۙc"a%zCF[I0S9􎸬~+0ƃSe8p|rBʧjpI).Ƿ *@Xp4jE,qҠ .8pKW1n$swi-fgxj 4pf6 ੯&:ӠV=V:,w;ME`x>6`s!TgЖlpKM2 c/8De!1@|HpC"94/^ ]~)lYU=r*T,).0~^M:nǠAls/=6|y\*z9BݥE*dQЮjgC{: ] 9u|͙>ҟ tt?-o[C鈎[X{hN6)Ih~-n\캪(Փp^C^"U #r-S$ 7] 05+BNJ^DG4JB6zkRH hb5GXթA*#~BCBoU:;e/OGU:{ 9&.%זWdcz{[`!6N2Ot?i0V,,dRk ]C&0 2y,25rrmP hgh|9}g<0h!aqǐ5(f]lK?|SCCsq\R`vlk't>t'Y$MFr PFžv V+7$#aTR d$svt]쌫)bgf$a)~^+}Q.6kyX8+.@5^f–HBu,nI{m)6i: xk_L&0l&"l(F34q3j{Aʼn AR޽ޓ4'π~%)RVX-YV,|_=ۏ_ 0-!v>`j ᑪ}np[$ V[C=јfy<A&#/Ws2L;,=8L芑ҥDMܲ%'`Η))hEz?`L9UO6f 't?jcbۤzǝi2a3,/΍>)u1eU :%D'$mD H?TCoHC{zż(Փ^ s~G.bP""]K#::6od2ʇ%gZ s?2KO.dA:V.nʽS_h P?jrq3s#\Mxm^c:w#kM1g̝̪>rxDnI1]ˇ*k-(߽Ѿ.II"&SE'f-pHm%Re=^ ;p }D-\AdDJA@JUPm= U*9P*m!. p Z/$XFcu-']%HjG½:6KQes!(-%%o!6?1 v% cʻ|#p{~&jX 'Q%,"$:^T,=K"%Z[dQ@WWQqK{p }87'Evua'YQgHa7\UvD҄kp8'7u8VB5  a=.8Ή{朰*Huaş=L *̲0hssMi#g. fWpЖWt(rc?=]:ayE Y~%ZhD[\> INzgzpÎڥy#>7ILzf2 ʹuL𣜧6izމA6/˼D]Fy-:M l= b1/Y}}n::)'g!bzW ggWs{o3%p|k{]~uAw8 =ML@ y {@{yix3cHX_iH+ݣN}NM5q$ɳ8ŊsP2?JRŲ!Pp! d'!&2}3}| )Or5Uv%K#?!piS, $^w|k~t,絁l 9'Q0o}?[V&> IJ}' BMtٴcYN/@ˆfbrUAc]g3+2;F*5\!h,kT1[a9(p e\Վlア iZǭ] BќF8U6X-!FX9ճ$~z/yTLY}wS'z`Q W+1[0vk£L2|:r+]aa@dl<Cd.ViVh@(r{gqj0I QJNs5 %W:KP"~~o&<{=+p\q`>pT~`l : :_`BWE, J+RjnQr \5C$[8N4({5!]?mj`zX3c I^ZVXm6o؇2VSM[A/zWOA +lu۵&Tq]Cqi췴T`SLi0>Upz^Yz2PXdrʄEM0#7BZ&o~V: џbDFDzP޴ vvn'a_:$<Y!R̼JD8j|hȣ^C2s 鰥+QZ Wb&3P8]\ĥ /}_5mX᪞9gNA_gX—(^PnN 4!kBDVͼ&n@ ֯Y>]y9YrKV'* X oOlwʀ-Qcϻ{r)=JL(0y/ m5}%ɚ2!&d P]z^>Ԯ)'S.wkFnJT+ƾ\كyMucpq@ alz=jÞI ^u*εZoěLpM{AI0t eR)}tCʁJ ^߻p$HO"5yRtesrk33[P!Z)voD(/ٴe7.z3%NI={^7fua'FSLR+ >H[Z/9CHj-QyAv%" By_ӺS=z >Dk'U}۫ t?,)P οT0GUˊ/7}`ɅyJ_TrܐݬH[9%njINႹ7j)QkQ3Ӛ@Xn]o'۲Y7c:,*d1TM.ezٖiv%_D))O倹v^V-C4tc޲֧?I} tLC8-R'4d@3AV^S7 tRokIbɧ1o3xڝf W#!gLdƜ)Uk+!9Lxdg2<t\sGfRuyyۃEvK]|1 d wU j+IOs0WlafӍnw  ^ʩ0l3MV1!R,?'!MD nzt p "2t$`U0= loh,뙚࿀[-wFJKty)*e #ie:*F =H9}$~Kψ5~ot9 3U'׾˯{rgMRz۽Iwe/DKyճ(>ed cj9e*^sq_FvRhe_Tn]ʸ_0la@XKޖHrˇ`t«pO"un60HFF҄hƶ tsm6#&&E+4QIeu+EI_#g2~ *G),ŭ59l4^ ulvN,k P)c{GY!숏Bl7-%YDe~]Eg3yD6}{fTP ((Qj{ yTomX$FF7 5;`?I`q] aXQ^"=y';RiQ|POL. 6}btQgBG]@R#lg, 4|_φ>pTY yΈ_{@)-֬_in_-K?Pks n+8CB.A<0@3i%2${!3D66R-&1}ZaC;BZSj {YGcs !…F:A2##i|Mˑ[IN6yjέ2G&֔p=^TOvrD8e*G5Y (4/`+1 VŒQOnJqGE# ޢu̬ў`e`z#E{2kb3y$Ӗ%0d Һ]4vn #}V-;-$*w>uCѤ~K'y rK8䣙@l].!63@rtGfSǺPOeiUPWTGO.>F]733hgaYdc8v$&4%;" ^Y;PLq/Ɖҙ%+|5[~gwQ,nwx?qg]3ӎQtPI`;ы00i8z' |m E$'Ce`d}uo3%+ΫqjS#gXbKw]|Ċ?S$n. [uC)<)Mxz^˕m[BU?Z7?>b~+}׼(ɗ'_԰ )=nc'D2i,XKp J-~z/]#Q /=/ :~vHw}ynoкEO~%,YhۊU&T˦ػRVrr`]V2N랲 I4M0,GM *J i1HOHAHyy+P|@;f"CIp !|j(]gOnkb,+ ^mz}=PgvNm`M¿ ؄$ئZRC=-/}ri>ًI]e}R#tgnggٝ012 l25/C&|'He̢/yPLL0efELXz}}0@Rc`~fVKBBMWRMʵƒ8HŮ9>:ZՇiFvVm%'AN/W1f.pP8i;2^Jv?QhB_d 4S"wŧ{J.ꬦ&2+;eȃ9~S=nz)8ϻ2;K-iwDt&r~ɏ[8Uğymx Mn_͍Uv/$pxM.WCƊCCvb{s^ٷya̿fKA m2l[!y1k v3%|`|OVl,g띳]M)g剅a>P&_r즪pS29:HY" q&5!5Ha^p[cQil%Utslp9 2]L8NE;Z =_(4jjF|B{d=r28Y'CQԁ⎋ d؋# *ШbH ` ^tLe(zѸ< V l#Zlü[m׷Fl'SBBah,YW*~tbXVw(ݲL}^?؋:-\x8+_akÕ R= hx)YktAUR|ۇLS<ڊ8~΢{cG%Z(=5q/ƾ!=ӎqڊ l6C9`ͫ2*2ʿZY/7OyW4^@ t.RU47c]68d燎 d=ú0L ߌ(˓Q-øREQsg N޳4Fk31ˑ #̀1δK'ηDoR%[v44 ٳEUHL[W]^Erա]/;W qfLʾJ:ڟEF)/ 8q5XBP)˙ƞlicLedv}umt%!x?rOQ긏Ifnc~? ;YjbHqY|OlZQ ,F*?-~}Q/׳R2nr(:B*@F_~]&ȹL+V( Hr7eۣZW ED)d-u}> 5_9Kͫ`,hhgFLnv6m RǑ]_zA/,QwDDJRp q*; XK;zry&Xr8(P~-8+2 ?Ko[IT0 $wUq~=լ oW7Q9[58џ9,Bo-OôU^6l@v@1mʯ'̰+aߣUΓR?@- ³rCW*hJ?Z3ޡcaw+jB,3 TAZV?K=јoaM35!7 c@|e:WE"W'#HB?.N 3Gq>\+õ7 um:C 惥w6B&r mï\nhVqe;GsxL%[qiDbYV\d_A'Byv xW@& 1k30fbqLcBzFqRa08J".TE9h59yy&){&TWoJuҨY91^dKIevnU5ZV֢+ Q8T)J O3VvUlSxpt-.6f.</DmiTYySww껏&G<2LwAn[ZsB"K#s^ۗ MVZbޟq!cNw-VUԬRNQ@#׽6g$ꊫѽ9x+AF/1'ۺk2uϟM& ފC./yv8{ RVl׌+&0&b`zϾ_KhàJ=E ?/_f5HC;ɝAB}=b}c%+~ӮufNI.t\1+8/Q]9,hGeۍ/2O26*E[(qe) mԅb46o[wDnjw؎¢hw1ٮeLw1ߴ0RLlP!Γh8O݆ bHf) _gKASY4SqzL6JA9bO T[UwL썞1͐%=RAHHnMw?]"ecuOgɮq%P]4R4T"vxy5M{[K[3@ ͵v܌Wj5ue+S=V(s]<+jc3K̔AI-a0ƃ\ Mmw7; 1*קL%Ow+u2eb6a a=ЁPqNMخm۶m۶m۶m۶m_۶3udl=Yz(C"\avby;croBG1obrn;xhtU~`ko—M-q pM+^(r`TJdM\1;ƻV2Û\\ qӞ7i{zzԟ(}S0HgGz>,] J bSqk7u9QA<>BB$+Sb#ȺH ΍bMΗ@~93Ȩ$ 9A=c8sg̤J~@{{Aݤ]%<"`.z˛ഈcr`W-&&0ۿ#XՒR/)RCBVHvD>ZY^ibuʪ#zGunZQQ7=r;"cqCoDD?V%蒏})D古>)Kjơ<\д&䫯{>4]"7mXxIn41iz`W B-8jI$Ko̘ᵟ2M"a`w !=3I!MBEZ&|1ۉN(UfDbF>_^>z> Ij˛"[' +nLv>83_u<D!oy;~RWB.SwIN?@adٙ ЇJa ;\T{nBbgtv\məX[j qsfuΘkЕ )(\q]#M /BlPff=~cibw=̝GՃ`Y)@@2UU;353 m;Db^p EmFSp2tU$̰ڼC?NE>Tc,md˘Sνi䬲[}g/ 2d $؞u#2<= ކɕVULp wtW]B*ky54@u3}P'u βnەK[^a{{zPbAdX` u (?Lq"os֏3P.r-[lIVϩvn ձS͊"()CP7 [^aY^F* Zڈ]Wyp?esahI1FD/fG2BF"dzCn`P@B? O.pn֠Œ !6L$/;gnf@"k`;P!,dLIk\CDvkf\­YbYM<>lh_|>5$f m5'w(; 8mjp°+K䏋1MG^lmdz$J1}c@bB^QX^'UB`b Κ"'s8Q=τ8SfG3zP=qU52a-$<+,BE( YPh^݄4 @s=:Y%L@mۑ{3Gܧ tmqM赘f$(kȅuWx V;o24y7E#tlsN-n[N EJ c|ٓ0g+0`xl h0F߁KoV(*qRmLofs?@o A0E;^5g7pQxꐛ'G^A 5/;4.ꫡǀ`ifR#H2, X'\!sIaY$ ?B,0Xx]DpOl=3flºYg|cFe^7R2:z2 b7@~rznܢ\0x 8vat#_Rn^e;荙 1W5tA/Q`cm:|'1=ԽeB= eʭK;[eUi|Tjl7>-+9`h*WN~s%M=pf09ophጩ, /ZaG ktT 'rKG~*]G+4\ Ls\ )=vNa{X2y7 ],R+VnOG<\dشt1OA@r❉n:Ȣ-h{jTV4_5Ӯm}=(LPu9-LϗKFs2׽ }mmYKp G׸AZpdI'<[Oaf[UŽGX3kSʄ:3,aoHzM6r4BC6Ŵ]KqO'șNչj\RN Ll^>CDFAguT;\ɰ:-dƛ0(.Ew|u2>4W0~2u?$;2ɔ#vt\e@4:=;r.f2b[Or)w ,)p*дbD(玊92TFi{кDfv%h gX4g[K=ͦ1mm"G%SnѧUS =}fL(|nO:K"ӈE!JD•G >X),~MgKSs.e%Nq1{:nVȫ!T9A 6F@4qskQu:)'; }JNmE N26k\Fym)jB:CaP2aJ?h8=S9Pw%SD@m"+3M;9eq9ES:w&3۪QtCͼAҜ|uG#Dud! '*P\Ӡ5|ݟ;!VST8W-WOF$sJhǰi1?}DM xt}10sܦ;r/15{-uTp@{—vlx麍q@4Z(mY*X O͈IQ^|'AV(#?{_4D(f#)h]9(\(>Š-DAV]]{iaHV ^w|^{+T6CQ[aq zBuJ6Փ[߽̉_~R9# !:g>X<|& S U!wԈ}Ш+=*pikFi8!Q֙p%MܚaL`VVv&qaW|w0Ϸ ]if Uk Ct-)pGy14.8}v$k"qMEڂ݀RZ&/e+@*t"A}C_YhBt\m|Ow]bl#̝13Pc^K21yꈮ$Jms/hM 7  (sۋ^w-Q\+dE9宰v WBYoa㛐yݾ`3pm +#'^:$4Bj /oFZ;u jNG >qU]D:}ІIqg(] 2`<[=7%:Zl0C;7Tv*aZ+{p(Tu YWzaF Ҳw+WfQ291.`hYɹ@JKB p R]&W|7֬ۿ@G>В Mġ-J~fCKєYŚ w+X5XY3zO[Oi<OK %GSh\5w YZ' w5 NL-i= C3'$ٍfA*|PRŸy|A:n "(Rg3˻BzͼPIu rwuɗ7[05Oz孪xuZQ%nZX%x~DNpd-W'}1t@/uΛ)3:\ϧ ;gn=&d{lqt@^YuHL*D>ap{wʮG]+/"BAc1 FCuֶR;Tc*d7CaڄT]K'$Y b/9liػc:n\/\A!^rﴴ E+ވ= z$bS7 8gbG/ =W6LHjS,e2-=4˵k-Ta}lڔ–D K nLeU=-w6ܩ45l:suIygwF;@EOk<gϙo*=nWF‹)2Ba~zE1DϪ._f_fPitpaEn&5:EY~T$nUlw-ꆨ(Q'_ջyb~(t38ӮZ׻F#8d$::jP۞Lz|MTh,eNΉl&F6ZN_Ig\%N9jù!|)Trdp 큻HΌ’/;V;oFnMqD;˜c'7=Հ.$oFftF_G0 跜Xz6 tBY_v<=^mJjR>B@ g6q{Hl Rɘ vqVJ#RHtP|.GBpJzo `WTX.0dVO949ϐ(0fkz*K@QZfdB+E\}vOh.n`x{?XnxZ4w@K1&a0#.fi4xAǙ4DU6u^FZ^asFd>{t/7Ru&*Dtr^7 B7&Cͭ6uc nOE,-;.ze{6o8wOh66\_R|?fXGQaK+8 +=\߶ )ǒߓ:?\y1ɮaae}\T\ePmDe (Dǀq8QEuGsYCp/B6~vu6{eTx}cDxurW5"Zr;{yi;qE~xq\IP] TY{T'qM#&|ig.h#Ȋ,` k G$ץfTv^Uz/VmN'X>ND/=RVRWN01c^1Y}; ۊ"HU3jzy37&2BHp/ yj H02:5ilKF Fql q`r7~}m6瞿UpJWE؉ , s~črjTFR]'G.pf8q,CT%l daR3hHte7'vcrwz.sɓ^ukArƴ"$e(mڲ&'5_X\ty,K FҤnlp,ƛ)`)q Q;s7O 4@C&粽qzܢ2A0>RqX6Y=}yT"ך;*2!v 3^ gQMwΠB\?/unBӱ9lh_C(ɡnoRo3z[Hw[HK^bWxGI\րZ\z a0$p,хʢ; ؽÃ?_TW;mKXX)\,C?V;0أ`$8 sr- ^Dl~8-k:+MG!&T6٩n&]姶.)x{n ],CD3El6#74FQ1#ދ5hG#u.*Ja{6%zש2Zfeyoĝt myR{ilPr8ah3oFFxҸ"tzx[ }NҘhgՇ&O*#v1K.lBeEKfV,r7z(Ex*0A`bم]xɎg"V)@N'E%p9Ө#7 bsaBZϫX#BAԁ<[(A۶$[<:T(zkKC%VzU8Ev*t~PǻUgw<`6o>|}'\.L n-420|7Y)k!`pe^J!.)n|$F>j HtB1͇4-\4Z'ы%Dl$wSv2<9u ֓Qӂ#3Í|vBL Kw.SuP/Ajqc\. IX?K6b}tV@Em[AvԐrHri+0fȩb<f% ܁  @H4~h+Ƈ",>G}:﫨;G*[p$*կEQ*AH8Z`ޥ܃j rc y;hiZcl:8lla\W Gjy0sbr7Fs<=0`;Z>ӔQ/[w~9z0mVi컢(iW),6ȏ$ȏHÇގKnGJO2#dO2]ǧziW=z$Q$S[djܥY6%ԡ|0ޠ NKv] OH\ ?.WXOȶ/A5 f;w^PaKDUp1$Hy* ,$'%|yUa-`ͨ򞱆Dv6`_0H|b mEB !0b$wSGˇFWI @Cb4S6Kܙ! jIzYog0?%۪U:usߎ4-[5q;KKComD3r/S$f;C/kiIP'I<7vI{0jREƎ+4:\I!.~2b Ϙt^DswG!W1SaygU;{FAӂcx,1uC{h׮;\1ylkÈHxbGBlEz5.}5̓z#EAvP%\bj*<[$y¢$WZ~Ҟ+Ic&nYs7((4j.<,%\-UM쬑3Yyg)27׆ҭۮ~|c"a VD.h )KW]3ߑF<5r ֨XM&5cpSbn<.m^bxU00ڃ2S]TgKkvD%0#! eTiRխ'AA KI@o Tb?eu " 0Dt &FsX6ǭ;@y7ɤꦍK NU0+ {LŴ .xgxy-}\Ѥg`ƂWo 8n+Q?-`3 >T7XCmK8ǹ<){cQ"205 ,NF5X 5E9l m=i#Ft yV& P6W*|7YSL' AQaVڟ..\mBF[$fGMgf+_Mi>*)UO</I $VM3Oח?n"[3dFI9J6,t]aȫ#=_++\~xf*9 wCIoOz3O!㟃?&zΐ@ZnW|EÀAu6x t'3Mk؄X3"<,zYOڷ&cE.Yv 6QK{܌`ϯqg}w/D1k1أZ!O^^z*_Hnn'I q)xBFbtiƐ$#Oy]M**L ¸" ,pMwtDf(bT)84D_ ܚ/^J$8MK^JRj֮륲auAUjҢ'@tʚ?:l.S # ~o 0bv wls\o<%9#aKMxD)=sxN8X,e/Mzݞbq 41Kuʝ얓R%BTv+ӏl9 'qɊW8.U65h&-LkPhog?fWe z&&)FkLفkzGç|p~`PʱR1\Wa:b51hȮduQs$0T䙺$:9 1NX}M G=  9:uw*>e 1a%R2znW@xvP>$oQf쎛M7Z.tt ^6Û߹ooQ Xsv݊\g_v#z\BFۗveIpLm9b( R`̬mM,SLhN}|*:ߥ ؃%%,ARhu1{InFBv} kۍ H"Bg9ՠSԵ=W?/&UeBfr 6^nb>7|/kCcr|vP080C%QH e摌 p9W7 0AиC%!_dw֨٦KpaOwb+ƪv ֊p~7żg]>ޙDЊ@i^fb6]7?V#|ynN'J{ `z6 !EzJih im|0rAYAh9MKZ;W#8 K 1KѪ5Ptnṃ~T!-T6'_KT#/{ =h73DXCDPuM0#;:RO<_#+8xպ%jmIxl0YܴFJ~ù*-M'RBo+kzsdDk8.KmzMqB rqj:Om`7/O0}[K:-y 2)C Tu K 3I9iϣp@fePk@;+vYpVjGWj('rVeySdm=@.B:߆ݷނ ٗ}Pacb[7ym' -S[ J8$^TED 50$7ORV9^@k.?'MMc=&x̦E%}G")T?SWAQf@BF2USWʣ9o+ÊrYdr>܂Jk%XJ̫]W-C4)D dO2,R~xOH +/^)-t'u"c <}9݋ܥ_% BG%  j"zyg[T 2ؤYA;S*).Co7_df#r`5RyT 7!歓GqG0咬9.$gvv23. nWU^ Cʷ$ǺGnj$t-Dp>oDH*E~<:`Y Xz9B(.iɈ< =hcf'd @znJ!k1컯Tit K5en9ebޓji4@blO^ߓF'>~: y&TQ#,ę  "d {fpA]/Bhu~J%"> ׿C w !LymV(La͵e!Y*-y"GwK S%u~, x kK6H[~UBqD,DGgGx{+ka^ ßȲ7LZUκo-N4M 'BUY/V`1Y0{DŽcluicޡ%>{c>ͥ1o4q-?^5sdv`CWDja n)I.PlSi\ [6P^2%z]g@\ { C?~{t*|Jè2VT@Oq W7a;:5^?Ln,FӐ&z~Ќ2i>l^s+DƁ[^  jq}7Cb5H+|S TbE7ݲ\3Ow}l@`i7Sre:xh!~-B fY`|N@?Rqp 8NM;y#;zQn+V/]NE\@ |심yԻ= J(Ju!ϡqYi`Q^B_*LE{GKLcl#>5'Z^,gF_ijZi/x(Y.33ԝes “biWw38;\*+)45kLY8Hy3ؽZ+Yʘ(fa?m9Z?1X*#BbA-gգC[bmJQ=A!*nm5JwSw]|&UgVC K uϠ$n岳Td g=Үw&h=B@ j9woرޯ#=Ӧ'ZTPQk:N\x>oA@*d]Dr t Q/#&_# MJ\6#ŮF[5FM4|8J 59:+P1*_ Bۊ0 &(I-_&7ţPsA8BGB4Nc!McduW OF` CZ4F/< Oc a\< QLT#׏xu];n ׻Iobng_|7Zt,gGHaLF S~]\+)ɰ|.$ļyM\NSaхF?#ZBK&Bo#8L\1IIصs18 /h+"wh&($|TҘ7t vu/\. H|E F>g2ѯҳ4]{†F#o+mgYx,6́CwG7F$wv; dLi0iG6*G`"^BjAЭ-%c.Gd3X'It!f@i{;8V $ Vy(ƒ:'w?}3s6TWO-D'RrӿlBS=d/FmG4o4.ct pag1oǏ\=&x&RZ9^0DCЈn/F6%_t3-Om[gTֆdL(X`5'|ܧ|_i5'Sz!El]򝷻03:GhU[N7 'Z|fi[i1&t(7}aLjڦ%dh% j@ZLNĒ?3pF_Dz[3b&={\ ̖RDW(Xk辦4csm ~=Q}h WJZ @2}7FB$Ay|UG>Ƹ5ҐFu'Sa`oap]|KEsW߅ҲICL\fv{l}uHcX8hUha[< jS-Ǯd׳6HK ML4ܔL? \kwknŒ3&ma80KHX< ++X=[yWt 5z aTLb3.JN@{r9h)ڃG,e+6u{+F&~A5^?0iBE $浥,ZAd~s5!lNHՙ]5ǟ,&@O'#i[XfyeAʵhNd1Z%mF#, A ZJAτ⣈bc:흷?,٬?_%2q'FRǏ Ids1tߙ79)al 9TC2/MwG%6 2~\|352brY/1wMi80ہN}FQ,zC~]{E;whi&}gv]!qpp>K7*=t;Aoo*,_RKqtuq$1C0?夯޺gf7 9]'xq Q{("[eV#!N%%'5$VSd/:S>x|jEa[8۾XQ[>#ݜĽ;TT,Xgs3z\Ǭ N>бYΖ`MPcCӭ!kRFc|lNOG|,y[a){ELd L𾨽F6V7.s^՞X|H>EGz":yh,Cl*{FSEhAwq2DUJe L;!׆ė01T]l3iuYʤ 'ڑFS䅐V`BZ;m^lV_(K8k/B>UF:tYa0yw},|7 9P,vtpK fueScET\جəO~-41F^}'tXTH%"Cl\7XpeL|G*!7vWu iඤ}]{`su99-ArTAӓ쭷̣Ce$Λ݆ї{׬t;Z5B:|Q3[9gjt? w< q_(E*lƲ}z2PI⃆sm̓I+BbyKLP\ϓwR=rK"~_0<9AږȍL"(q䛭-Ԥ#ox9tLLI(+ENÕ_Wt<8Hm"u|kP|!U-|~**RUxvh X(ސ=$ gSQ$ bZ^F'z}M{6t *sC:{-%oin_ WK d+U5Q 8&K?X߰]UJN槑vh\>LȍCg^D 0wo]G:gޫtJ:QuA:DIf4k@SaYAe+G,YX31ù4$,jOTwp=P;fKyhƔG[QxF15_Ƒ,NXq0 w@クy4J6yVK?Q/ybH簸 "Io9mFHi$64q Ah%~v 8Yr5CbRsWr 7nz. g1M'Jġt n<@bݤ/M6# eMpe!7m,yXhW>%11-?l5 1gHQV%YWWz`Qg*Q̝#z6CpU3cx [Zn RQ781~'[k??B D1n&#W4&\@UhnDbG]@^- au!dM0c.bw\i#G^E]V fmozv -x{cuog-*/P`[3llڵ^ۚ&eHlXvMEzdyRX:K]{=~l*5ŋ"JZcQ̀㧘KXR˾ F%k5tXY[Yk-[Js%4Xi3e \xYg7&̫ k˚SҊ滎NPءS:;~1ĻS?T4Pu i_yC=LY|gQ2 $bӻ(Egd%mOOqnr F¾{XΘPbIT+'9Qt VvSoBGMJ[` M4X@YZ*x75*i4BϓUztc`fFz![AtI5z=wrQzAڈO =R:JbX;cU"swt>OUGЭ#4jP"&2+_"?</$fב`,{ut}l#d>9ݤT;NZ]E32 A"nG7`ƫ'@l!|~o@:AgˑFchݙD{)\~qs = NQG+,J=Շs;@kTJFL%ˑU ا 暂l:ޚwT@S$mڟ,xy0 endstream endobj 464 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS 9_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZK endstream endobj 465 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 467 0 obj << /Length 900 /Filter /FlateDecode >> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vz|N8}No)e0&h?q:P_ X}ac1+a  jҢ~]ߏ{_r)4i_px`!dZ>i]<U_cr%ͪcךv[\٤ժX*be-@E-X@-꩖xkM PY@ ,#bEA 5rEqIb>,彐A$ G#e"&c D`%rE*s(Ǩ5ثCI*=ǔ^pk+ ܛbVLbX+@8:13Jp3<|6 ^ΜANVjRy9cpסAM}Ė)|֪,+pp70h8J+NK}Eլk)up >o U^g{_e{]*?`CBhgiیtV;۳ѝ)(ZK7bA;E^]|sQ endstream endobj 468 0 obj << /Length 672 /Filter /FlateDecode >> stream xmTn0C6*drضj^pHA@Cfy'n`g#govh/}eg羋򶺜m=Ooٽ[׌uRۉ=Iۏw{VQҜ8ߛIߞ3d_ ~~hZ# W c *'qU;HHV7xwuɻa;zopO_`_ݥNd0m6G_?[6vLClw6ZsaD%!p%blcä  PP[ u_g_x4$O<X^\NB8 \;cBbMx y%P 3jok:E q:/d48Q4A2="\šY+ːs(5$Y r~+A\HȕWr{Nxo $TL~K//p1sQ*GG-G-GzA>|)3Q/G""&!uN>|%h8hh$hb,n~ᰏnˣ+p]h \2 ᫄ endstream endobj 469 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5Fk=iL4RWOlJQn8N[?ˮ-;SݾkQP,#z7o;]j'OӇuþ{Qן x|utX|]ߙoGB;76݋ Z/ԼL)]z+Q&)H8@hcReT\`^QqJƒXQh)5HK |6 b.fh\e`bsN[sS9ӺuSrk4"nXCA8%ľFp O<cǘ,⏜x! g!aM4cnGym: C[1Flx L^"K~2&NCC&^к䅙` YecO{"CgcY =9O('=g)YB|֙Bs:S|uF:#e~,٢+>G+>3qgegK+>c]+>O+>G|FV|~+>Cѻ V|B|ƺ ~!>_Sϔ+>B|&LOrBG/}XTK5?)Nkx$sy儢 G5. &&s'sձ?"Ƌ:Z endstream endobj 470 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5&z& h<ϯK)ٔ?pݝ2ZkXvm)85];B7gѻ9x~;a`>W'?y:o&> ݋L'/㫃Bnz_7_t|~;:ذƦoiܰ^\0zu\7g"NFsu_E07H6!L@@B@q\s *Tg ]8 i/nTvc-+>c_ZZ~Z83z3[:ޭ ߬Lg3t3-g B|B|\3gg|2?z)BXIAup*^+&#sU-'H8qɼe5A78{Y-7^=!U endstream endobj 471 0 obj << /Length 868 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5f6ӓ09]nD#y~/XOϦӾZkNTĩ(wA-&T9ˈ;n>yx#7ahݰ^g=a}9_(,u;_r985wѩƆ56}NMM₹ 5E9qv7rk u/A )`JbD>`2$`TY'``9&*8W`TR&4`(ZsJ5RH+h3}76Xš60aG+gıXF888sέ-.x]/+5MĹPN<1\?ǘt1:˿#7^YH{upQF^odž1BЖEQ?1^׆ƨqА.yaf%+CsV2GYŘS&ƞjЙ??grCOe zYJ|֟uМ8gΈrY}Ŋъ1LkYҊX׊ӊѻߊigngfg/>Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h. ljeuȢn( endstream endobj 472 0 obj << /Length 868 /Filter /FlateDecode >> stream x}Un0CƆ"RVmkN7RI̤߯]U=ooƾ4qݰZGNc'>wÍzeu[U gҿl Qķ&M'G3Hy_ S)E~e!jءC4qjz( z#neDvBwfs5} FzqۿitXoBjߙo{b?WWZ/ԼiL)͙ \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,9Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qo{~Y=[|btD&U endstream endobj 473 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sxЩֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]X7 endstream endobj 474 0 obj << /Length 866 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&j=iL4Rv@”lJQ~c-'>c_::~:83zw3;:ޝ ߜLgw3t3-gKR|R|\3g[>Y^J?a)SMW:?85‡iG湺N$ոd<ᚠ}޿_V,z薻\7z}< endstream endobj 475 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 476 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 477 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx05rtlf)OS`)?>RTO)suߖSIQg Lڮ9ˈ;~?˥?y|#7~l/3bV+պ};85wѩƆ56CN]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~FȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sxu5rtlf)OS`)?>RTO)suߖSIQg Lڮ9ˈ;~?˥?y|#7~l/3bV+պ};85wѩƆ56CN]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~FȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fL9 4Rӫ~R~J}6O7SVk-#SkQ70j$#z7Go䎛n˥?qHM0Z7u@O؞OW1Jj;THcui׸a׽`J-zoDpמk uA )`JbD>`2$`TY'``9&*8XV`TR&4`(ZsJ5RH+hg b.h\e`^bsN[sS9ӺuSrk4"nXCA8%ľFp O<cǘ_81Bx.B Àh'2xk=6u2,bق6E0F,eLLu /Y1<*T71DV3ΜX7g19=zr֟P.O{S3u9(uF: XE/V|FV|gXˊؗV|ƺV|V|&ޭ V|N+>w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsMMD>NC/SB=t].Z9K endstream endobj 480 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.R!W3njNylܬ;WWМ~8׺2{SlݤMƓ7}zn݅9p/]A:fzfэ4RS`)?>RTO)s}`ݷp@c`."w( 3&TmL2ws!yva`TG?y7{֍]? F`RޗS/~g> ilXc3t5n/.XjR˺^o3L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rj.R!W3njNylܬ;WWМ~8׺2{SlݤMƓ7}zn݅9p/]A:fL9Ngiob쉬f 9돱ncsO{(g1?\֟g Yg 9LsQ.(ug^/u ?L[ V|FV|oV|3[: 3 ~!>CO!>S 33>Y^ ?a!SMW,:?8ÇqG湪N$ոd<}]/pD=t].Z/ endstream endobj 482 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fzg 4R㫧~R~J}6O7}w̭uזSIе(TPfw۷莛n˥?8ޛ`~?n8t/3NbV+պ};:5wɩƆ56}Χ]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~ȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fM9Ηfi<WOlJQn8N[hEOrDz=4CH޾Gwt>X.Ouá{Qן tzutZ}]ˏѩ]3NN46[w>7,^e]׵͙SwPG*X$D F @F@k} 89@FJuFF#`R0JRq eF)kjBS` F5(Z#.9Bkx>w{7E^ kCXq pD zAet 8alSM3?rN%NbQDa 8>#h0\?I`\~KWc?qc.\X7ьO*ezl,d mY50ymȋ,aYʘ8 xAf_14g%cxU>ob쉬f 9돱ncsO{(g1?\֟g Yg 9LsQ.(ug^/u ?L[ V|FV|oV|3[: 3 ~!>CO!>S 33>Y^ ?a!SMW,:?8ÇqG湪N$ոd2 }ν_V,z薛.ZP endstream endobj 484 0 obj << /Length 720 /Filter /FlateDecode >> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5үxO%r^q &\TƦkR@YwDoYia) SZM5_$$>kxq4|;o4vhwqB؝Bf#j{p7P_?{+4}+VYu}e}n.ˍggfjj{k:lF #QhJq  HQ/e.!Pp #]gQtVTv)#l-g!7'uӾ:[sI r.39uf *gQNxEqV11V啣Yq:54kDCZ+)]Ws8:а/9R\Qrz\8Ç]按Sp/ d8D(B!4׳030 =;fzÞJmw&^0C~/nS0GKW皠NdzG5cC)!=E^K<3Iò8ȿ q3NOg{ACt~Qn~ɸ\ %1.: *4hH`<4̶E hS!| endstream endobj 485 0 obj << /Length 720 /Filter /FlateDecode >> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5MJKWGIxj;4RcN}aFHo=Λъw_ڎþ}ZʍXƳmڊ3355KJ 6KR#( K4 8 2a(8(:+Y3B`ȓ:ρi_N9S:QJ3f('KszTMЬCf5{Mˮh쫹fh䜋Aq)~H =.WC.s)\2?"N!H~uYUÞ3|ЏaO%6;^/!w@)#%+sMP'y_YO#ԌYO1ߡꐞ"@/qJ|%}ǙŤaYP}߆8'̧O罠!M\o:?(7d\濆טIQ \4$0^f[Ȣy4 endstream endobj 401 0 obj << /Type /ObjStm /N 100 /First 933 /Length 5001 /Filter /FlateDecode >> stream x\sGb?;GU9 b.aНlI&$cv5$WWE%gggz3m(Da*d  Q'FB/*BC8g.bа6BA#`/Ey|,L'@2ԞQ yO‡kAjeZ:mմ/B0Ea-#%p6B G в RS fH b >>~fŞq0CK-'@a Nb +AA ֠46^B L0  2p0j V3b]sJ@>Fs*Q64 `x%ك Da2?~-k 3p`*ph( ǖqZL'}x "VyFC~A!2hE ڻ3&|k@40=ve\=2!&<@ylDZU@`=jlp0z;"G aS8FR8؃Jp S2hHhB*"R XJrBBWS NUVnP܇"5ƚ?X*5~Ԡapj_#rLyBod&<^⍾`![833hS=Q:q\hVqD!U9S&a6p;fjAwZ1 d͔fy $ytH4$ʫJЩG t B&֣ ,F5B56$V/PL=3Nwqj69#Aexd5|`șs9b%,TXq-%$:4q ,}1>&ڤ;m'H|,W NO(ZqIܡFK*6;,K{FM 2.+*3oM۽ό|uF,7&|YQa94{ˇ  v¤~IV&t1$i:J2\-mh֣b?G&1K{YÓ{J-yu*$?xlϭ:-T4`FE\AJq$K kxHr͐ɋT[ sLybZWPpG(k;dFSY.əJGfQSTcr@Gڑjp[AWO iR\6,6%Y; :c=rllm߲f kӡWR =߸TtݝcC Mc@>0Urj4J(9K ^plFrBcL#Kv cICjI ^!I4Zc]#m1|H#}R}ƒ{!+Ѽ%/zLc;ւD{oUQ>,Uv159zyߎNNyaxkC- #۽`~U, P<>?c{%.J|yMW7'@٢~ +/,8[OY(~(OWzT˯oX'c``?j^x̠f!G1ZѤ0RӛͪIaN)o'wriVUm6Z<;:| ZbXmF~_K jJͯ7d1tˋHž/XLbnbuRZlONAU;O㇎x k-uQG)ޔrVVGmΓg.vݫ\}OWZU|ϵM9{1Nmm N^6j6:iQ|\>),s/ʗ0*O˳+M ˪$?(az7+?O~n 7cPSS+U5Oߗb }.*~5+ YuZޕ__1Wi8[Ÿg?qYejXUD 1JmFXHvS*@*Ưyw5mGwwǒ6[˟N<OO_G"sQ!Wi-r &QVAsV/|[=kz$/* <=꜆_u$~ϟ1튋2RkP^d4 mӯ/N^3|j5|6y~ =nl|Cȣk9_ɤZL{z5]DQ)Imj2ҿwȻp߿ЀӲ(+F07R˫ONdSnu3 SK0@>Fی n EfU8~|)%Y@P~ fGU])JZ U>89x (zvfCx-޾]6F;u\Q9Z6]7ǻ4 陸hRdvTr]fb5]|T߰WԊw7tVvc0m;g5f>?m|]iVgXǕe]:T6鸪Hݸ_& ҽ*?y9"v@z{Jqr0Z/i o.O.ګ 6V9ñn vq\ Fїj1kJ-ܲ|0lPl@^{|s5}ˀ >T U5/~nMU(B8:к. M2 BǼP1M(1zƂ C&"1,\8MZ&P1RYhs3-kP߭p 3o7j THe WHcZ3oV1NF pP˻d|=nWcZ=sTBAe=լ(V}3ӬˋRnA>4uH뙵E L6@N-PB,`ԺD&h6 OȽY']$>r߆l4q Τ5;)`ar,k@rI\Z6,nnrvρb+V47 ooErp+6imUPP7kff.hj6*{H 9jVmkY*ش#oa5{5ϲA[A6> endobj 492 0 obj << /Type /ObjStm /N 18 /First 154 /Length 802 /Filter /FlateDecode >> stream xڅVn0+x 4*Fhn]T8!XF~}gȤDqfޛ7DiDZA8J"UeIa5Q 0f Q&$SFPVb*3c$ `Eg)Є [p$CX~#}U{^Awrizzz +B0|hwUUT,Wiʶ:uM{W.yi8 qn#JStCIm9,#|׬- |jAS Gcr3c^9oJL?%)ʥh P ?T[6(Ύ՞86R<@At8tkqgfԤ I1)RӺ5sL(NI#t04E`N C>jFcNN !HSY8Fܛ>e}д&i5O`:0xk;wD߭@ p砑5u^b9 KD|*Q T^B* ,3 w  ;S=#sqt`v5V["{|g8j\gv x;6lr5Js6첹M|}M| m8Uy}/GHFUU]M}MBuﵻ!U5W˔ao7;Z^bŻ xu zCלv[,AGޱ˯nS?ױW@+d6 endstream endobj 511 0 obj << /Type /XRef /Index [0 512] /Size 512 /W [1 3 1] /Root 509 0 R /Info 510 0 R /ID [<56962F01C5EC3D38304A42826E1625E5> <56962F01C5EC3D38304A42826E1625E5>] /Length 1302 /Filter /FlateDecode >> stream x%KlUU*{noh)mR(JKi)ZJ˳PJiy5 H$jDGGԘ8h' Wbt`;1a@t/k{\̹2g#qz@YDB;C:-F;M:,@[6K Z3 iTG;EZh]hӤEPBG;I,B@"цN.KM.hhIkrhHk?WMցzV `%ZU`5Z;aFm!&m+AfЂvi+`ymx 1u~-qQҍMgt tm`` }uBN/WwHu@u**/[/2&ɓ2\倹wc@ '˜Q ̀;~ǂ 7%p?"Vp7 .fO-wR[]AAaR˳;`PrX 0pi7h865|Z uԃVsU8Cyi`A+㿰0M6wuMaWaǀ k@T-.D4k`ǀN ߬{hc1s]W:Ϋ쀇!sw 8,`€ & [=),LY$Kf,{Y⨳t^O+jyr,e@nٯ'hxE܌JSrr ,9:KĒkJ妅 *@T%'Ѽ\TYr_e@PƳ .B1=D8ѫK.s}%W?e%ꉤÒg^ 7fK^zYz9 ls Ft)~Kz_S]ةTr7-yO#&%h}0ߥ'K>LQ'OYrۤa.? ԛ_a 5}RN(y*8"]JRT?- bTH` mj7>[~JZ~.S(ꭢ8?hUZhUVhx[QH+SdP**_|PQVjŇYx~\;")D~(}وވ"ތhhG݊uĶ"#a}\[ꯋl}Q,N9w)oQƌ f/x(^F2Qe/x(^F*+}!.?E endstream endobj startxref 943462 %%EOF affy/inst/doc/builtinMethods.R0000644000175200017520000000167214710267243017374 0ustar00biocbuildbiocbuild### R code from vignette source 'builtinMethods.Rnw' ################################################### ### code chunk number 1: builtinMethods.Rnw:39-40 ################################################### library(affy) ################################################### ### code chunk number 2: builtinMethods.Rnw:48-49 ################################################### bgcorrect.methods() ################################################### ### code chunk number 3: builtinMethods.Rnw:99-100 ################################################### normalize.AffyBatch.methods() ################################################### ### code chunk number 4: builtinMethods.Rnw:175-176 ################################################### pmcorrect.methods() ################################################### ### code chunk number 5: builtinMethods.Rnw:199-200 ################################################### express.summary.stat.methods() affy/inst/doc/builtinMethods.Rnw0000644000175200017520000002456014710217042017732 0ustar00biocbuildbiocbuild% -*- mode: noweb; noweb-default-code-mode: R-mode; -*- %\VignetteIndexEntry{2. Built-in Processing Methods} %\VignetteKeywords{Preprocessing, Affymetrix} %\VignetteDepends{affy} %\VignettePackage{affy} %documentclass[12pt, a4paper]{article} \documentclass[12pt]{article} \usepackage{amsmath} \usepackage{hyperref} \usepackage[authoryear,round]{natbib} \textwidth=6.2in \textheight=8.5in %\parskip=.3cm \oddsidemargin=.1in \evensidemargin=.1in \headheight=-.3in \newcommand{\scscst}{\scriptscriptstyle} \newcommand{\scst}{\scriptstyle} \author{Ben Bolstad} \begin{document} \title{affy: Built-in Processing Methods} \maketitle \tableofcontents \section{Introduction} This document describes the preprocessing methods that have currently been built into the \verb+affy+ package. Hopefully it will clarify for the reader what each of the routines does. There is a separate vignette which describes how you might write your own routines and use them in combination with the built-in routines. As usual, loading the package in your \verb+R+ session is required. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} <>= library(affy) @ \section{Background methods} You can see the background correction methods that are built into the package by examining the variable \verb+bgcorrect.method+. <<>>= bgcorrect.methods() @ \subsection{none} Calling this method actually does nothing. It returns the object unchanged. May be used as a placeholder. \subsection{rma/rma2} These are background adjustment implementations for the rma method \cite{iriz:etal:2003}. They differ only in how they estimate a set of parameters (generally you should use \verb+rma+ in preference to \verb+rma2+. In both cases PM probe intensities are corrected by using a global model for the distribution of probe intensities. The model is suggested by looking at plots of the empirical distribution of probe intensities. In particular the observed PM probes are modeled as the sum of a normal noise component N (Normal with mean $\mu$ and variance $\sigma^2$) and a exponential signal component S (exponential with mean $\alpha$). To avoid any possibility of negatives, the normal is truncated at zero. Given we have O the observed intensity, this then leads to an adjustment. \begin{equation*} E\left(s \lvert O=o\right) = a + b \frac{\phi\left(\frac{a}{b}\right) - \phi\left(\frac{o-a}{b}\right)}{\Phi\left(\frac{a}{b}\right) + \Phi\left(\frac{o-a}{b}\right) - 1 } \end{equation*} where $a = s- \mu - \sigma^2\alpha$ and $b = \sigma$. Note that $\phi$ and $\Phi$ are the standard normal distribution density and distribution functions respectively. Note that MM probe intensities are not corrected by either of these routines. \subsection{mas} This is an implementation of the background correction method outlined in the Statistical Algorithms Description Document \cite{affy:tech:2002}. The chip is broken into a grid of 16 rectangular regions. For each region the lowest 2\% of probe intensities are used to compute a background value for that grid. Each probe is then adjusted based upon a weighted average of the backgrounds for each of the regions. The weights are based on the distances between the location of the probe and the centriods of 16 different regions. Note this method corrects both PM and MM probes. \section{Normalization Methods} You can see the background correction methods that are built into the package by examining the variable \verb+bgcorrect.method+. <<>>= normalize.AffyBatch.methods() @ The Quantile, Contrast and Loess normalizations have been discussed and compared in \cite{bols:etal:2003}. \subsection{quantiles/quantiles.robust} The quantile method was introduced by \cite{bols:etal:2003}. The goal is to give each chip the same empirical distribution. To do this we use the following algorithm where $X$ is a matrix of probe intensities (probes by arrays): \begin{enumerate} \item Given $n$ array of length $p$, form $X$ of dimension $p \times n$ where each array is a column \item Sort each column of $X$ to give $X_{\mbox{sort}}$ \item Take the means across rows of $X_{\mbox{sort}}$ and assign this mean to each element in the row to get $X'_{\mbox{sort}}$ \item Get $X_{\mbox{normalized}}$ by rearranging each column of $X'_{\mbox{sort}}$ to have the same ordering as original $X$ \end{enumerate} The quantile normalization method is a specific case of the transformation $x'_{i} = F^{-1}\left(G\left(x_{i}\right)\right)$, where we estimate $G$ by the empirical distribution of each array and $F$ using the empirical distribution of the averaged sample quantiles. Quantile normalization is pretty fast. The {\tt quantiles} function performs the algorithm as above. The {\tt quantile.robust} function allows you to exclude or down-weight arrays in the computation of $\hat G$ above. In most cases we have found that the {\tt quantiles} method is sufficient for use and {\tt quantiles.robust} not required. \subsection{loess} There is a discussion of this method in \cite{bols:etal:2003}. It generalizes the $M$ vs $A$ methodology proposed in \cite{Dudoit:2002} to multiple arrays. It works in a pairwise manner and is thus slow when used with a large number of arrays. \subsection{contrasts} This method was proposed by \cite{astr:2003}. It is also a variation on the $M$ vs $A$ methodology, but the normalization is done by transforming the data to a set of contrasts, then normalizing. \subsection{constant} A scaling normalization. This means that all the arrays are scaled so that they have the same mean value. This would be typical of the approach taken by Affymetrix. However, the Affymetrix normalization is usually done after summarization (you can investigate \verb+affy.scalevalue.exprSet+ if you are interested) and this normalization is carried out before summarization. \subsection{invariantset} A normalization similar to that used in the dChip software \cite{li:wong:2001a}. Using a baseline array, arrays are normalized by selecting invariant sets of genes (or probes) then using them to fit a non-linear relationship between the ``treatment'' and ``baseline'' arrays. The non-linear relationship is used to carry out the normalization. \subsection{qspline} This method is documented in \cite{workman:etal:2002}. Using a target array (either one of the arrays or a synthetic target), arrays are normalized by fitting splines to the quantiles, then using the splines to perform the normalization. \section{PM correct methods} <<>>= pmcorrect.methods() @ \subsection{mas} An {\it ideal mismatch} is subtracted from PM. The ideal mismatch is documented by \cite{affy:tech:2002}. It has been designed so that you subtract MM when possible (ie MM is less than PM) or something else when it is not possible. The Ideal Mismatch will always be less than the corresponding PM and thus we can safely subtract it without risk of negative values. \subsection{pmonly} Make no adjustment to the pm values. \subsection{subtractmm} Subtract MM from PM. This would be the approach taken in MAS 4 \cite{affy4}. It could also be used in conjunction with the Li-Wong model. \section{Summarization methods} <<>>= express.summary.stat.methods() @ \subsection{avgdiff} Compute the average. This is the approach that was taken in \cite{affy4}. \subsection{liwong} This is an implementation of the methods proposed in \cite{li:wong:2001a} and \cite{li:wong:2001b}. The Li-Wong MBEI is based upon fitting the following multi-chip model to each probeset \begin{equation} y_{ij} = \phi_i \theta_j + \epsilon_{ij} \end{equation} where $y_{ij}$ is $PM_{ij}$ or the difference between $PM_{ij}-MM_{ij}$. The $\phi_i$ parameter is a probe response parameter and $\theta_j$ is the expression on array $j$. \subsection{mas} As documented in \cite{affy:tech:2002}, a robust average using 1-step Tukey biweight on $\log_2$ scale. \subsection{medianpolish} This is the summarization used in the RMA expression summary \cite{iriz:etal:2003}. A multichip linear model is fit to data from each probeset. In particular for a probeset $k$ with $i=1,\dots,I_k$ probes and data from $j=1,\dots,J$ arrays we fit the following model \begin{equation*} \log_2\left(PM^{(k)}_{ij}\right) = \alpha_i^{(k)} + \beta_j^{(k)} + \epsilon_{ij}^{(k)} \end{equation*} where $\alpha_i$ is a probe effect and $\beta_j$ is the $\log_2$ expression value. The medianpolish is an algorithm (see \cite{tukey:1977}) for fitting this model robustly. Please note that expression values you get using this summary measure will be in $\log_2$ scale. \subsection{playerout} This method is detailed in \cite{Lazardis:etal:2002}. A non-parametric method is used to determine weights. The expression value is then the weighted average. \section{Putting it altogether using {\tt expresso}} The function that you should use is {\tt expresso}. It is important to note that not every preprocessing method can be combined together. In particular the \verb+rma+ backgrounds adjust only PM probe intensities and so they should only be used in conjunction with the \verb+pmonly+ PM correction. Also remember that the \verb+mas+ and \verb+medianpolish+ summarization methods $\log_2$ transform the data, thus they should not be used in conjunction with any preprocessing steps that are likely to yield negatives like the \verb+subtractmm+ pm correction method. The following is a typical call to \verb+expresso+. \begin{Sinput} library(affydata) data(Dilution) eset <- expresso(Dilution,bgcorrect.method="rma", normalize.method="quantiles", pmcorrect.method="pmonly", summary.method="medianpolish") \end{Sinput} %@ This would give you the RMA expression measure, but of course there are other ways of computing RMA (chiefly \verb+rma+). The true power of \verb+expresso+ becomes apparent when you start combining different methods. By choosing a method for each of the four steps ({\tt bgcorrect.method}, {\tt normalize.method}, {\tt pmcorrect.method}, {\tt summary.method}) you can create quite a variety of expression measures. For instance \begin{Sinput} eset <- expresso(Dilution,bgcorrect.method="mas", normalize.method="qspline", pmcorrect.method="subtractmm", summary.method="playerout") \end{Sinput} would be a valid way of computing an expression measure (it is up to the user to decide whether such a concoction is sensible or not). \bibliographystyle{plainnat} \bibliography{affy} \end{document} affy/inst/doc/builtinMethods.pdf0000644000175200017520000111133314710267243017741 0ustar00biocbuildbiocbuild%PDF-1.5 % 120 0 obj << /Length 810 /Filter /FlateDecode >> stream xX[o0~߯ȣ#a$<1 $|^" 8%Zs>L3ch'jG*Kв/uecB5-"1Cݵк ?^/% $Bj>HX(@ܺeZҵ5 tyD569oIxr1 XD8SF,Rq#0u((rwcL RLX+uueA.:b3JwQ#JUOLΕLLu )zQJ+ZhaiuEi{ol -B/4o*~Ҹ߯Uctiu'BH!h2bO9yygQ XRuӅ&p ZjDMJblImn[KLbVڷv[vS4uJ'N_34yMيvA+r'04BjN[?R>"\啸@,UrwGv/aS+7uaAb?W݇l` c*_@},kh tDOm9[Kȼ1}gG=dG ɾ7HK1Γiٙ p |$DSk4̿mmT\SB# sIErDt46. endstream endobj 137 0 obj << /Length 2432 /Filter /FlateDecode >> stream xڵYK۸ϯP^LTũ[eoK 6EO7H5l*) ~y}w'eV0ZV&ebXl,Vw7<6i\8jj}k\OҮ8gYīH)o +0ḥkvuk.lmOkw_siHή=yvF_eׁQ]5kA~ˋ%2qŔJH&|<ǒ% vLqI?²X~}{>c"{uO;tEo Dy&zȑ]ȇ..ۻ@|‘KmtYu6/Hfs ( j{!1"b.Wyǐ윗O?_ٶXNk"M ;BPS 67+-KRH&0ctAO^x=HLnG9k`8O۲*Ld>g m`/V:T,68â8Bv%!5+ {ѓN]G e'#TDMKڵ]]6=kGtUȢ`O :Ѻ{)+Go3!%ׁD'Bg4/;UL94~ڃҪ'Qzp|_oL_*q h45 ߳~eXg[Rc꫹El}! uT0)ևZv86?*􌈍9/VZ IW7D]U@zD`IsbK&8K.Up0{P4"rhNj1#"Z6ZħU P!Yä0?/$O B\mNgT0qmQn7\ pPGE "0ns_aϛ`QPwA $ϤԠ.ʩG5>U$)ϠL%6VmhKa@pw^vΤ'#O_'ʬn]@\m\M]u½+@]\՟/{3 [9[&lGlh;:`buYdb\wCR#I t/̥ @,]Jl"Yl 3R@;qFW=UAcW-lhǠ6JLPSn)\NUM3pN\MTZnL#_V>>씏v\ /+`{PlTipIm k{ه1*-"5UC|S> `ڏ'!(x$,@`KB<+D`33 #xbz&j gӢ1)e-"oO˂1%ZMa:H-_ [}k $d)="W{QIXb4Ԙko~/"eZ7?ƫ=,BeՃzT~kL6Y%Ll\*GLhR|%Kh4ϩ!ǁ+.Sy 'm Ƽ\3nI 4_b(t:]6y1C3Оo7!P+oT h,Rc%ScSsRB0s})a3{AB\U"H97ON  ۑ_g\DeO*(% 4\W~|*aTv%K L`G>ɎY qNŸ79\po 9B6{alw?`x\>W'N嘊z3hgVM zOxҐz+PFrp*Kb-,]_&cgףCLHأs8m6GuX-+FxuA@l=&@/A1b> stream xڭYYܸ~ҴxH$:cd v@ӭVڢ#>Uyjb_ٯ_Ս4BP7yaEp.QBL\_~u)EefyFT%k纻U6;i<մPq@k~}(Kxah-6]Mw<эU@Aicry_@Ux:;X\2K~3SЃ{jd/>R ~e25yNͅf fNV&pxiVqh1EД:/ Uw{[l[GyيILROkB{so^P7Қ!.Cߠ&E2֝kPdHi'GQ4"hm'a[n3NLUT#dy $,~Ň9 ?t|?x6׻t 8Ov#K2(j] +VSP"VIAPwu1pVuN8FdLjFͨYAL=028"0+`Ò°9%zj*|g-F(G3O4[BoyaI:՝7 %3K$A,Nm  mY%tz?ӹUӿ|ƃ/ aij4׉Wx4nCZE8x Q:Q>m3\sL:7]wj.TmMӵ-Jy6GVG !f&#vW.$;% "Mұjո?3``kNJ_!b!Ɨ`< PኔY>!H2m_; X]x{L]K'ik>0E\AT/cք ϲrHk gLN`{ +쮰 ! s 9w Zi΃L0a".H6~ ^w:Tjɩ.$7^̚j3cʴ2JW\a=D>L?^4r{j,.= {l6-m%cAWkZϗfh|6Pa@.'`$>0bAX&ǾaUrW&ܵVє1|35\j*.Hu܂-*Ew1o"P?P2@Bdwn&omv]M!T袚r&ý,ʒvmS \/2Qh1vr&FJA)glwr+Z e(m"Le9Pz|6)zZahL}ެ-\HViTS $$ 1BYws_!2:Zd\IЇ~\WazЁgϘjQJJbMj{NĹAH#֔N MJ6*DoXSn̂1q}8 KJX!u l) [7 l?m}8."Mj\\X4SnϊYA,VZҨ%M boQFWO–6PBr n Ysڍ wuCgŕ%|ƉAșO9VUcLApnpb2*)wɨg'7Cқ"ؤmiyӪm|wh]Z"3YE~ALwg;_6H,ksםΠl5JkhG(L?DS˾5-GRX vj K`]- E*!U=;I p.C2MU(-l0 endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 812 /Length 2061 /Filter /FlateDecode >> stream xYMs7W\@tUvRNRIbvWAitHjcpF#95JhC L4Ca/pr~dGl|N !hbgMcHTa f1I`LI4'@" x*YڌdtD &B!E%%tNS x9x3P +/GN/",@`6%@~IL%S?&sl ȁ .q՝QMG}6=,n."}]KznxU+|Tmϸ_p(}%ޕZ/6hUm)k?^7X$CQȬ+֫.Zr@A뎸Peu _n~Mk%3Q!|ZAWzdٝϺnklcxVl `Xߦqk%QM{u_4I1ޫ}< *?K_og孨x䧆\K23#n4ۢm&қFۮ_ݵŞضpc;-v80Y5s_M3dnj/s]ӧ/fj>~ZnFk9:߬nֳ9O?-.^>3";bϗ4'YWMm**mnn}݆u6mG5xTQG5xTQGx瓎xLo.&O4Lu*֜lQ-@d8qGt{nɢ DmueHŖH@IP+ V!Z[rg J'2IFh'S0G GVZfe+iH3@8^P訕3 WeIVR/Q ?xXd2-z<3GO5)M$8b aA&XE6A䇩*#-W|HwvgIzhS]8 FJT%IO!dkX0Rq80ü B>t'hfHB2#@Y|"; [ 얏zM')5!(Do7:MI&`.nǗ(*/}]  osHs_->}^^!%T߿475ӧWzQoV;:%DD#HgHb;'vA%-4bI"*_WHYc1s)1 =',.2!]}󢷙~⤝'hj;ҰMawȢfa@̐0RFW;L}PH}~"CɨDCz=e4`|؄/޿d;}PJ˅%QC&Y6۬QfsF=ӹ\]o#ࠎ[:%X¦T7Y"`fGf (@HSrѠS > stream xڍWKoFW>QŐ6h(P=9EkeJf ]|s0Ia.*T,2Kj( ~JXzI2Z-VJq۝ ث(-qsShmww;6ָ`&u:-JX(T%0ƠJ$$63nFviYU39GQepYPBdJ\rƙonwk c{ai6R*T7**@Ou 79*2uO~%UeeUET/W  >P}w?BWv.tj)JE*ŪFXO8 endstream endobj 198 0 obj << /Length 1614 /Filter /FlateDecode >> stream xڥˎ60$5×^HHQ d96V!Jٸ_\%٠S_߽x6+Ұ=ҜU,?>DFΣʸǻ?_UJDZW)HbURHRDdq]<2z, WnZifr\Zx~ԇ.C(y3~E>[h<|,Sw3mB" H2\ӨG_%ȗuڽu,d,,!eHsټ5@>҄D> Uqznj)eTdQY@"2[xBEDpo?Hx,3`z4ۏ4k)si}8}]> stream xڽYߓ6~߿bjpZABp}Hn6ں=06c39篿G3I%yB߾Cnd"tͅI3+ۛDF$qmU4ZQ[W~)En߬25ʣ9Ká_j&r빉u&]7,/I^7?Z*5Ri>IR.RYtQ=TzWG,:֮F۲wXF'b(xkL+ oǮsʾc8mŠ#2WKs22`u,հIRi6rU^Xe2r}e ɒP69S)?5rBBg ˄X53f˃-yX {"t-(R 'lo[-Ԁ3p~mM"EΝoJ$@hX1BR\ΓfƵS/+cN% {SMc˨qj4Ek;` `$֗8]e*:}qE|.=<5DLC2OPiU*>eї޴C9(,@Oli_v8SY.qTSO]*:V+)Ȉ7d[&z/MƋB]PKLSgc4\Z_7wON'sMy̒pJ-D56)D 0%ot(t)7D7m<xZ@{yÁ`c͌RC/I9$_Q^?Μ㟡+dv wa#wdg 2yqAFc>\jx<]iJ+8(M/8$kA"<.@@,_gCsUYԔ;xT܇٨sؤp )쎇*8ytWc(j+ dCqkj u=ONre~OaaBǚ?z#uuh)؇=<O0X}$ǚ_ 3ͻ&[$\'RzcSկ%>bT4[| :o8k^}`I}^+k!"o|dQou7=޲ )ꮠ2q4E~|Xڍ_pvtj !b^ӣC*nD443 &f(p#lDߟyϓm?)]3b%c=t|.t|H]]#:za ^ | sG ?B qz}CvN).Rw,_~>UCL|U%(&q.Lt~ Qkͦ UxYv窃 :VTH~CmGpx8P1)E0{cp.Wo endstream endobj 218 0 obj << /Length 2153 /Filter /FlateDecode >> stream xڍX]s۶}ϯ#4ϼ·֙NLss`P$㸿%%9Խ}1)b _BʨLSuqxQfQYGE #Bje"KUK? >R}ԮaY3 nwwb)ņ#4b,أۮsmC5-|dp {ݷY?{{y2$ Vv*2'a;ْc6k{Z&ՀMjra2%>/`J x|JUZ>Gm9*T\~~޻GcL i+ (+揄}x@- hn5l&>u;Z;GJN谢!4KBҕJ1/& YLÓ= Cf&3u?_")6PXS9*@6乮 Xv ) =5g(QqDi ;*lk9t*>(DSEQDyNۈ0-H3ؙU2C6GKyFN"ΎD'8 YخS<睩8 NٷŲC5ZADM Dۚn!4}YφO8Pue=e)ৎ>w!N t-%u&b,Q2?\]q I-7~z6K-ot.BCc@҆> stream xڍTk6L7H5Cwt0  1ÐCwH)-) J !-H}9}Yk׵}5l&NG ez E89Ma(v"Ns(Q7650ꆨz@ HRHE>D@$uߟ/$--) E `8@rz{L7.p'(p;D[`E s8?x vC O/0<w8< ]!TJ;"=|7`?0xC:lT>yQWcV;"<=pѯ`H(4^9Nοp6ü}j87&\(8PZDRB@ ¿60 A75^2!0g͋PH_hWD  A.08ߘol7|( /w4t-4PE@ E%@RR@`؟D wFxL/߱7҅xt[8ro?Uf0?n@q3 Z@]=Qmf.9H,dCA\R_v_C >_ @v3`F!{Ku8kD%`$Ht曕8 H'ho!ԍ ়3I =:T`.vA߭.J⋼QuSW-" nMѝ?7qnX ]?3y"?"O3_/(gD5ǵ?48` w陱O(LrU͡+˖KR5mNM#Py$1:*{*`slDW]ƓU='|&X.[+S4_ k@'dfbHQǒɢ2\v*wĥW~<$bhi[bG< ~'Yf%irB٤j~Z Xׇg dK8J+שŚu+?EJ͟24=sКϸ;j> O]рZv^jc`x޵tM莓J==(Q+H_@xy"K3*gqi`HNXInֿxxnU!6$)6~'#y|K(3']{'u"/+?S1EuLh5M?3Kws*3EXl<[-sh1$, !cO%e%x{{MYVoۨvw wA43. 7I|8XU RuKd~%+%j|ں!L *?8)|?e% Jږߕa{4y9nTaR-Cž}{Yo/OImomɾ:2N c|LQQmLAŕ{DPnuW.Rn06U=f|J.c0,oȌhF',oOG5m2צ֭ S`3hV72ks_ Nh)ɚmˆ>A7:lW;]=uQ}\ '_듕;G(>;{'wPu[zZ]bͭΕ6ݻ=AKEb$H]1`0n` K-֙%ݙ(Tes{uE q yΒg0íP35߽+A&BOw_%ɭ~k}WP7o5In=|-.+t-H؇-]})EQNl7\>=ݫYmA,۟//(c;b$+UŤN]x"wOuj$WqrL˾jګKS9`! ,zǎP25'Y9|dV}zx|ak9XE c6=OQ+\ f(gM<e^C4) Jį1r8$ DȨϢ>%8dc^.8UU*v+??|< _8.3g0 7|mV( ^kKOζNl)茏 w`yHM;z??`fM`^\6kS {) k瘸Ɯ|uvF8ZZ*rVqn}hԺZ0s8>ؖDçyLVr\(pF1#"0(G@Drb7Ȁ{)p^LQ+E9zexەpH;{e+C;Hr(D%&xh-5H峬tǑc c&I$'o1o8.ӠU<>aEev@czvb/L&ڷ01& ѦGhZ~8hdD׏3PfR1 cl/{",!BCضҶ=o!$POJ!6z;yMppu(3.qN=y:V:mB" =bqñ٘A*DbUױKH:,~>z.A%6!]x580{ݧ"sAdl r1AWzzN/6îfIvAb'– } @ݚ(jkG*"dTRPdtkҠu g4+ srA2yׇRʓ[⸅Y?xgh_ͣ[J ]p 84-<.q3QrDs#Yx*f1w޻hFsbl~/ |%>`l,H!RǪIkZe8';E.ȉƞ.Rp\- ӕOEdƢB]\f4SkpôEnvF[ˆFjMA>Bxj rc`RbM($vEFXA)nrcOz~;4ՠt 69#Z=q)O(1=SLv`?OPZm|eGՠS%;$U?TG}alO5w5pD#1OO蹩9,IW vÿ]b+LHf= )J=aaG' ,c"DZEqs!;hǣȰ}%A:Y(cZg7j;r&h:/W|qIdPMR [Xzl'CW6:gg'xgl[|᯺t"$j' }7'J gyf:z/O ńϸ̀05JBTT~6eJԚ-Y[nEG90Fl]:rVCbآ.$C,@"7C),XYVKXR۽*XEmI~a_4]=^0mޗ/G4J뾕֙0K5UՐ۽~[Ma6c)oU b)s9U|zq-Zˁ"3ofϼҺ[1O ?|ٟ#  h' $$JEc nTux [ԽSPl"yяuYƝuCn+řx~$)ٲѷQQ\е zҡ QLGW;~|evj)5+'Տ+[`׽EnC**2 KXlx Fa8a?W,#QEJQ"_@(>K^uLՄBإ/w%0FHYc8[W?8ZsQ*cIq;hgz4J:5P93=]!ǖߺ2,!Eo 7P^_X{i{4bS.O0P=B t =[jg/_?񆐥8׸z? XBbvRb\pQpؽ;9/3>6N8:nNv|WujNQxAaTJ"]Nó3pNg՛4,4{`H',"i˙d %+N7K Op\؊ Vf3&茢dvRC4*d׼x'Iv#o-hٓ (/者DM% 3  Nc ~:uk?sB`|iO ZxYᘚ|gDA$cPHy{TLIs+Mb'䢿N8ðKm/"5v%]e_^V++ ?Tx7^/Xijީ4#>FM'(vɑe˖6+'b kHU8 ֢N0FJ)[=B'ԣF\u?n4 z)z!LWb Zޑ'6*oUJl]-}u71jJV)P 'ESIY܉``ZD 2*O 9+ك[uX9N;n[DBDu j̟^j%|Cᅲ7KVEKVAJz6CV>ĖжEKь A8[y>]JI endstream endobj 242 0 obj << /Length1 1842 /Length2 13009 /Length3 0 /Length 14177 /Filter /FlateDecode >> stream xڍPBHpK-8]h4ҸwwOp-}-oLk(HLF@q5 "++`bbe`bbAPA,#RA`kE !6QCk, ` `f0s0s01X:L )5Blb23'ʘIg:@ h26B́V -`c?%!FF'''C+{5 1(v@+ ƀHP1PB 퀀W%hm`mv(Km@p -w@&l ]@fS% /.q M4:, ^ .0|@6{{;2QŬMDVV@k=Ư~;YMLXQd;Մ 3qqrq9 T\l:0f_!:;ۿ& chFh~;3@~?0?^1+), vѳ2YؙL,`{r%MzPoPjR:LLƯ?g?Qw"qK?T @.GR*Yo:/M@V+ 1|+A@/eWCp k|*3ؿr/ ^*ClX9vv.n̯25:n#5x` C9BBF"N&?(b0JR N?赦kMQ㿈5U>6X_" 7k_%^ڼ>)`kLVп _u,M53_mu\WMkb}M1W?&ko{ٿ7x*mZ_u?8 4>@3qaloQJ߉~g, h(S随s, hk*J"V;T4_|ܴ &B*vT7ؿM3Gw<&O Rm91(HCKY6D _$' G읆EZyJkN^9+{׷i P7q%ƹImTideE^CBaIZ YYnt'c3z.xTA q߫[Zk O]ujkц_!چr6sǿOR \>ߋR xrje?&|']ll]%Hrq\mD̽zͷř5;N_Ԇ-Ot(2 MJ_f2ScCҌ6c=' eKbbza&>xUXgiz zQ3sbprےw*ZW[[m -`ǙRR~y9s޵Gw& Q27;3᤭|F$pUᛊRN%i%2.OW-sTW' OzaD IC[ֈ~Xzȸ<'BȽI-XnoYzѬy^N W+`gMe\΍67ZjSPkILbVuYC/K:\} kMƲV#g`/}e /EA{iD& BP{Gi酖Y'AOՅ@ƈvE.xa4IUAIQXghP`(kP pQ T @H۸@lHƃb#0axkkK >ďz, }lL+gg2w)y3bԣ(6yUW沽4tc9mAl=1NAuC17ƚ\1hVVb|jio  n%½]Z*򚨽uI%Y|vqY̼<|m&m!ئ+\'vMK]<N'_:"EBVzXv{h5[c4UՖYAb8q k2HK]q׏,$_dej4="kpGf55gAS}*YxƎe0~g 'U]IMpT~Z[2<}?>KJBwE 6Ou@˽_>RTb4RƯLn -NxwךA󜗋3VQBO8Hr+,IUY"r?2x^Q˚tE#4+|3Gܰ'-0Ej}O=Sg }J"w1럾ICVr zz *;pkO|ԅ5u* VWXBlC<'rVȳwʸň.WUߕQ&'%91m? ێQ#ҍ(8'bW퍢;Sީ}t#a(ǞJ>a\Ĕ+pc-ޯ1JܽO2Om P;EAFo?s7 s|qiQfT=2Xrt֣񉍝坴G)MsQV=,jfBA['d_q2aiA}8/X 7cuIƹ8hs!N t/y agˆzΪ>;߿yM%3UPCaGI^kpuy_@ӷUM^+N!tZ8;ۚGc|HW:êrhr}1lB~a9zl~Fޗy:ݜ$?+o=!NqMϘ۱b$Ծ+\$ϧeԂR |w9dܚ]}şiAKoPe\ɵHX>~4BbbSܨ|Zu0 4>_@s u#22郂rRwOg*Jnn? l6dv!ݫ];:q?Gfc'MZ@Qg,@ڀ'˂d|"%/+{o R) 9R{=øt$ĮÃ4T{4\ 0?D\!.,?NTxFGĆa2Zo=_77#W6t& ;^Rwΐ<2j tsQ#qYO1JO˦x:e ^Ayk~oӌ(e (ڡdnϟĴ 5b\I Y | Ƥ%Z8.|ck179M;btz/Р^(hӳ*1SbĂߡݐl)DJp2jigf 4e?7{UNxE6BjN^/ܚF[Rjo =U TvD'Fn1u\6s^IT.S;xim%tumZŷ-9h ]y zE~a:ŸzI=p@^t%;oYL%r;Z=NweڥR*u2s&Kmà-T=N1~,`gM{mf@_Q?Nޗ! ?}]nKF^D~t$3`%UְX^G`8 r._%ݲ: :xwN*j̮3qXش E3ô*)| QU:CԭaI~K{LR2f/eeڗa%6Az7opo4?/JlZP`>N?Ӻ97d=ﯼo( 1 ]uKrmS,ݝ >ұps`tO$!B'k!M`># u1-Aqedlh̬ZM^*DU~3"~x9:$<Rq3qBvc@k–XE=XdlZ)C 589m``Hj2ld`{,6M~HX1}\~l59)!{AȎwʃnWKsm9 ۉ퉋r1 -?y= )DI "&QzLhsV'&N[l0f|nS'?sGnX*\ o,R։0{2ND+Ѡ.|[M7@x{޾Ӄt Y 5`,I=Xʘo)Wi=Zq֨Oβ'0FIXW. -F``&wX[禸C:_0ߥid_BJ'KYg|4;O2rO% W/%,w,w9,v3[d\l~ Uސ|d"G{G)s>U8.BZl0XZ1]giTKbqS#U~4w/elOƱ LCX&5;-^ѢȽ[R3 >aOza 1z:.FˈX*MF׈F3;+\ v}"NJ7TR}{Bף[+.Z3G&jwly$qltGP$ʤp LFSlD*{?)^o$,94@|/8=q+"V>מXuՀBtDَ@$"]wUؔrWdHrO`krb`ydˠk@? ے6vEx3>Q$19[> [wL5DB,uLNl]Vt 26!j ߩ9 &fcPdwn-׎A7&qkKV}l>dlf*İx/Nכi&#~s%yL\&?g2rw0oC⏳pv:"9t崴:i19}|4ScqlS!jsj@rќ=FFAZ^tPQ㟋ޮ1zj+$ Mrz 1lX[G]yfKZm^ha@f=QrUS0ڤLBWJ:wL惇_W׹l{JWTmÑ_4 ~{ǁ|$\-֍θKʍg}^LE`\GlpvjO'c5jÕfo;7DzZ:3FvP#X R zx$/V?åKY+`ӀBgպfKVa4i!;7s!Xt #\?k){{vv7 .&njI:U2ձwE+?˻OcMSCL=Bk b0a  %O*s&E2̥V O$}+r wIxzW_>E.os.?3:UF c} ҝtAٱ;U5r\(/"G,\WDKTs73'D,@4߬;5̇Zi53p=,^3F(ɵ#bw@>kg9X% a /w泐j*ZBFмWM:h k%X9N`MF zJ7*{IC eS^jb]%: 6GF?J^GnNrp*o; {E2]~Y+<^+\0BCw/{cE$eXzH&ݗ$ﴲ_JI;a辙T02:ڧWˋ7*=˃0lm[2SqDܐꐟYuԦ6oK];IKn@]xGˇ&OK0N`$ %m_0Q(1 {72Ž^nIXVyfGoxgdG "-[J'b&8Aiʵb̬q=w拍]K('n@#δٚ"gasadxs`\4z_]mFTv&rdOpGO*O<&6ދHq4(ǩFG%I.ek27[эT[gn ]/tY@6{R@^J 2 gY^ U_w\^Hۇ}QBɄͷZj/?1n>쟣eD+^.ԽREս˾T/yE [RQdoU-QH^hnLNq0fG (Dydze2iCY7KK&,_@ /`*4# &#۔Afd/ Zzn,XRe@6%ZokE_gApGaa~hX x% =ʫtJCI2 ;!洚ti+,YxƵVnĄQoE0ob؇/؊N ;{x* %'xϿc՝9Kf7o3횿^4vBsS!hWi7]'8BAOoH~6cz^tW4sVr/L.WPG;qp9'}|VC zEej7"ek`_ؚ>^hq/,;%tK"n! aZE3g}>ͼf%/W{W|(V#沆c$ʬ?TE`%$7~rRg,BRJw;| guY?=f ;!`mL/"~ذ4e=Z{6$$qf^Iv-HYCz*{+g}cLBVZOMFG1@g ?$ uA;s7=MX^UUr6\}?C5׻c; ER$'umĆ4)R H C}`nviT^NoZxXiZ]IpMbbgޑ޾OA_s^!|vv^[ep (P4]jUmb2;nEDqF_˴v05ÎZdw.:ϗm´DF~ũ_S ]-~;CS)/@E Xs%@j=WEGe7܊e^<=.1]<oT"'wEC.X'Nʊ% p7* ;ħ˽bl}=WQ`=mykɢ KO_e%oAKx̠q)wN""ɚvOIp/t|_x7)=.eD 񙶄AAMT Փ D~"TRd$~")SPGEk<=TƧLai\j&ů_U  -DcRk!V=%ԶߺpgcL-ykɨ>" AKV.zA rU0uh0E,T.N|Y[ kKW+ަi~x5/H\1ȜАmrEc[I2!Es@c[ TloS0r60Z:FIiRU,Xș?D J݂7wwG_.kS}_QPިJCE0jv1F:u"t<PBM]8'+(^ܱda5©awu YYxMi}DJA%X Ǽ\84^Kk$д!Mx+KԟeZ@]cߋ(pՍFcQ=<&:5F,Wh<3]/9U a K^ i+*v~@sej]6ķ2ː uO\9rgTP\@?svQ ae=B1*+"S~sO㸀$'91q^g:"KUt_hQUt_ʆfuBe M^ f xyzQ>q@Ɋh )VO:iUS :ZSLy|rQ57#;>o0 /WaK8q >z*̊_I/MݓС? H}ٵ[cjd0b&1icWVUhn JM. yV:P]֏;}iA3k,c21?3LgG#Ƣ>''MۅQ5ViHT"A[(ʭS/c83"޼H;9`#w⎥1)c! &[ 0Reg͉TKB w ʏQ,ViaPW_ \6%0C ,SoUJVD-oCüڧ[zk̪V<->Um$>X6Dwl6pJX~҇ bMs*o8ISifIeY.\ϷALerVD`3? W0dg~Bǟs endstream endobj 244 0 obj << /Length1 1459 /Length2 7087 /Length3 0 /Length 8077 /Filter /FlateDecode >> stream xڍtT6HSJ@5B^wC$@B]4 I ҥ+Ҥ|QϽk}Zo<3{f٬LzHk*H deՇa Y a(8!yw)@Pp`aq8Dp[@Y呮>p{4f-6t nE4h fG3@i}QCv⃺R</8 C=a_4.??~= `p@z*-WX|+W!8w2 E;3 ·F_@3 ɇzBPk wPP6pW4w5"2SVD#]\`4W pw }ܬ˰#l~ aoyT`\ah$*"(*`6~ܘ \; G臂zhwXi[ ` #qؘw{LA_1E"}_~u-yU?;&' x  D0цjw  98R'4 `>3(nHww C]>0@cG?Հ=\;b ǰ,㇣0[m8g ~ii#Q_ & F`6N!Q5a=E  ;ԇs cj Mm?Ƥ03YLcmA??LaTM 4h70L`0Hp7gղ^Ò{gFEnq˕$sjJJrng93G~k5>B'J[OOnL&1O4b?Jc/qҦ!m#c%g9vTID5Y4[>U][>uw*UϱfO53$[ H{ɺcBT=CY"d}t BxU?rKVrAI7LT8G5g&làYnjJ^Gyi.r./[epwNwaFKTΥz]^Z 2Y88ؕ!xdv)C ݽQLgSa(+ҌN =w#[z7?UX@wr"~# /begӬ;/)BJs&co!lFGMXdT|®~s".?#Ukޙr 8:Y/JޠKt#\RM[&~s,UU_ϴXQ{z 4EB O+]<.1靈ؖo{4;O^y}qA˘/O,@&OFX*;=2V.cz|(rv{RXАW?#W)w:*oC@k=m*\U W)~MY]f &m?-,r%a5s1S9Fw5)Cl<㉲A]Rߩ4g=s_ɭ1Ô[t\/LR ؟ ̥R"YM4wsj6nlD쟾Ϗ̤2)w؍vr6հ5pfDW9~`2:d<^z; ?S,;ٟ.x[ۉG߻mm?/D ִlD5w)؛BκN$!nOs̶Hg´h/R۰=t {9g@DʦRXO`:'0nx(q]G\A-Е'Xl|7v^Sׁ^^rS%͋|")YbIΥWp/@/ޛwp~Q^s2l8a9sҺJ {kNþ" /oW6jfN.(P%v|O*:_l^\ !q&B @m/^ui 7<,ĶX2 ϩYUnE҄(Q&t.Ge<[zcX\&_Qꅊ"/SYkK+؁)2C Bjl &WRIIfr"FX[<$S`n2ݱl۟.h (/AP mΝǭ̽z5p I Q[E qd][u"p~)h6?`kxAS1°fc`2Qu)rwfo 1 1a:N (Bs|SMagPr»e*2>bigJW#s7{< ~LR xg ZiR.(ؐ[N Kk=9wM#r]JOH A:rlu专 VJk%ԇ_?SY[\~yg52O⯡*]s$s+I۾X%u~HBr3< (U|vO~{4:>ޏL5irTք- dj?AEB7>_<U.?u߾;jS)g@3umi(l0Xb`ν .Ǿ_ xXn j/+$rZKv8Cfoō9 w7&K9Y.k)M<ީ+z T#͑^bgds2OɂYwgQN'YoiE|"+Bv4w?@8%n"lS`57!:Q;CW%y{2R0)J!k{ji^׻&}DJmg8)*d@Z H)lsY{]誊UC_-n~Hrid@ƴHᅨ>y[9ڝㄅ6?L{]Wݸ~\)Xӊz?C (Lm {NVy~9vTb 0zraVQ sm];-Je=x'= LZG82y'.+eC _]Na=&+ &:9II{yP,?\k*0)Gm_hf~[ .0@eaRݮ.T N, yf@FP~|W93Y|,{7nd=8א }> i&O[i:Wl'zF3w>?/!I+FZkJD>2<`V3WrhL+sH:(٨ёL VR;2(,WWP]Ei8${k?S5ߎmʛ9QZV8|46bB, 6_ZNs2Šzˇ ғOdu |t*>E6Ǒ9BeHҽԸ\DRu=6{}&i!. Yޡ[qІ?cX+p݇8/_c-U9l7'_ NJYf;^M9TN\QeI{1qP ) ƙXɾrՓvl|6+έw[Aܜa~7nGݽD3q~WǠʲU@tag-RӉu-=>Cd) y%v7TGf(oqoG|{Dqfb7]VֶIVAG&@2cwYjeWa~~M՛at2wmJ_x? qҖ}〚CIY Z/O!R(p=|-@L( 8_kT3z׊4@^!Tu+qv5`D9$aA;dUG$78p/q~lipֵq:d(]2VH>SOfԘpַ& x4m=-S1Z>Y8yDc1A /hi gGcf %3Q,oS!*J-"8ܓ]ش M;3uAKe$Q'ŽA?Z<J0k2.XisQf.V"I9靳F~߼I|(d-}YwU*Fgkp#(}\}+㒰EݪkDG3 8?Ixw;Y^{"MmY՘]3kjt+َ['rw`g/ zxr`]Tܿtw vBow_7i ;CY&I^<_K7e3eǦ4OJK> j:O?n- E:,vM+[_Y2.]r60 }7E?YHtvo݊nэ\emt>p+#b 6̳;T;MwC+׾DC6)> stream xڍXn6Nwwʐ!RۀCRC@A i$>__]m>99ih, EP"@8   &1]H00cyzH@ &@D$ZvCz"]$J£Dyvc dn:pca'BNc$xW ~{ %/*!vvAn<{ Cà_ ΰ?Lpc-'8ppC@ahc{ |DIWDp`0tF^phxbn/"yvÝ6ׄߕZFu AQWWӯE&tv!0$Ӏa{YGa G@m5uC".n0(ɿ 2r  _wBMධW; A| `60;80}}h'!Z{b?,E"_QcMUC ?SSCz|%$Rb9YYY E{= v G^W㏀R@ W -7'n wpY7̵[_9p7`{sgpW-' j@nkɜ!U,z.kĥ`4EGz0 u{~[$׍D ῰E!p4:oXZ sq1@?DV(SRBQpbEBH oz٘AHfۡ?UY=7*Nl ̡;(SǪ)C4T9.|>F&=h#ygպ>vb6aM _ GN]|7Y Bڞu}Fg66Oǚ< *)əfIf'I9utK,WJvf~D!cڍϤYUm}$?">ѕ_V̗ͦ~F|0> 'beԍA݊MĊnd%xv- "vjdNOi-r NIZ]ʗmEz,Ѽ̜ӥQh9֨~׀v83mf/!#L3Z!U cjl]K(оw' @`ZH^Y8}T?np.iv}`׃) q&0hgn .O:yX<]5܋crE{ߞ%1xOf1~w!Aa)}  gmZ'vn=k_l>:|JN*<ٰBl-W\e;cOx2vNE ǻc׫{ԦObFYfD}7+ |.YwNket^,I^)gB,QF|r+ud |8793O>A-vR&ȕJ^kǭ֛ʭ 2Dv)B!1t=介6v6`vL9-"?m9&LjjwwෑQ#a_ ztscTrߦWD<%&h{Anգx$uDzgzҼO;lo-MKUV+K2ѹR)^\2 4b 6j12XvDLze=ƒ[pՉSldVrˎtow=< fzoVTύHgWmRd Lis npX|t7=\uj70hp:[NC&zph6)+.`\+[;/sB8.rQ:/!JW$U¢$ɟ. 0a;aχz1&>z/V|ZUc|Cd^ o=z3|E {#?ʞ2QeH|J2jX9a~o^4:B'lHϿ(FXu;\fhrQdhSԫ3 |GBbBqi_D96PQL!drħM`>qQ2s^!AU?PCD75Qf4e?ЖcN -&h^pF_%uIQ ̛ٚ۠Ǣl%U#{22]<]}X51Ƞc@a6AOw_҄Ss*X1J+C(Ɨ<7 oa;UVݝ .&JMLAPf>qe}K w@x&U^ tG?{N-&Bi+cNuY$W'} D44eCH7ĒKy%ֱUΕP Zipp)n5 8;|Df#qyQ34r}Khʕ@vD0TWч8lL @ns 1bo*7U̷2+d]ȿppv" Δ\,N  'ޡv嬕ff PJL=B4L1zJa^|'D]wӈ[ M^Wv<\0^stӖW7AgBP/|-~ҝ۰m$b1@#nc˻Y0NU_dwcgG ')#sz|OJ>Z,áܚ=xںSctb~L]}t'U닧!K^g2N}BߖRf~R([VNb$;.->r08ugTMydoHZrQkzV引BZ6Hj]أRpC}|AXYs2xzamX>sgvsBzI{R0|V>vW3q:FT~}b:d0&0!K5|Yl,ʎ$ڥL"yèM3$9=s=5GqFY=:xLLmy`lugٽM#Ύ겋r&( x+ꐑ~ܒ| B1%^EL3TyTeKd}e<9 ų( x cS]մ@ꦯv v8>3rSm~?Fs2ZwK%8qÏ?}`*Ȏ%IGrSsLP`L:_w߉.^]a6i q=K(Ae8}O4M1M#}AW ePk܌!c&rbL%ƹCKq7`Gsh-d+"KȄcieo,l*vlբ6ֶkuO6pHq hhr5j>tZhԘi-3w1 oR$i6wJ41bbowo Upn)89#C7VO/WuuӥLPay L^dmo)7[t4+=wr3zeIDkp8[6E$WN!MxF*{ψl }4>D(bU WIa砺afUZ+5IS>T3FPFԸg5ވ}@+gB!7Wݱ5P`e_{aDSA)+gJB!Bm^*K9qԦ=|9uLJĽDa߲#ZM{RQ ck}GZxӕLbʹ7}\۰P"?@9tK8sL= ~P8byBs2̊^y"[->lZbltaaHq& /eGtqˮBb=06)~6IKV"VGUSoL}1S,ZJܦ[1o`envu-aer9 Cf\#IMuz o307C6|,[7xw챹UלnqPԷUIUgϦ2 iNmA ?=0$DkFF|I˹LXA$1 d7F * !p˻] bw{eK^$X ﰖk}ͣ$\D/"5Wo~NJrK\b3z_N,V} 4ǖTLXBQoZ7# ^M!}ZR멏OB}Ik^LO bdLUNWr`춠F 0eڼ_+T[!,?Y KH@CiN/mtXc`JTzBr<5/ʺWnf64 UTOH^ݔ6ݧܧ˚?3m$&W(a潙݇Yk)?9^E:pCٗBY?~8ם  ']h@ !oҥCK-b{GS[̾k} .fʷgaS(oo+/Ìo“Ѓ7pg"Ү$7+-xdFRGPb5< 'ݍ/[ tG$.fhG-gVo(( %Jɣ,bX/*G]+'G瞀"/jF{+ʽfT=Xo=G5 BiuI {|'q^ȏy1>یC,C73 ÏWIX몁?~Xo(ú KzvG{Vk'۸|ç5{aԁ5P%L*ɠξ7tb煊P@™wk4| Õ/?%뉚m:|"Ux<2QY R£29}4Ӥi"_(vpgeˉHxp^%dU~J i"hq;>+&@°DE>tɓv#HMnZa–U1GB^l[sX {$$A:k\g)&6!6SJUtgewFp\L'_#0S*Ӗ- 4MLp$Yԋ'u(6Wx5 0CDg?גm'g_.x^j +Z}.Ӳ8jr4&-8& VS\,•" }bn!s9KgT۴0);pBVd!#kݤ6xX-64(+*o[]6"zWF.%HL`mA`;!o GIp1TA%D5ɺƅW`90Mld _r@Kxal;f%(E(\&Cbecw3|Wܢ[;i40WҴK畆8d9SVBE}',ƞ{{hG3R endstream endobj 248 0 obj << /Length1 1418 /Length2 6342 /Length3 0 /Length 7307 /Filter /FlateDecode >> stream xڍtTk/]%H CHw# 3 H !-! J79{ZY?x~ooFm=YHEy%rb~~A^~~<}0\`T\A$&o@iU7(HE%\%`/@X`^`;{򖿏vkP\\;@ 4, '֖ Bx+#{Yà s{ # 8dU.@ 0^<=փ"<,]A$[p @ SQh9pzpy v99[BP;-h)"<K/CKtC,(,U쌀_ |d E~'vY#_݋w[0ϟ-jc7g>( "!@\[F s"KmA?<;puoſ%< `F@v`(?ё0+`$[60(2246]TO<><"a~_ <;%,UE }X0$cAn/oi_Q| Z_CkxG  96} 3 kUA`"d FX׀AP6 P<@~!4H>VC+0_% ,tuC) |1yf0 C ]0W_!/sF.(d02)>\ƈ߬A{@ kdCmHy,$t9VKBTˮ+3|koJiHl^5ѭ1| `x96@ol1>>\|w\f}&Mt7W!IgaQm=*29]7~s;3F$)9T0*TNAS5Aѩ$Ğh=vz,n̅ lBήoY4/J朎, j~Au})>ZY&^ݙ +Ju9RXU0N r-8Q~) qr. erŃ!?l5S|\iqeVl0Ρ&nԻL!ĂxwF~B |HL 1A6bY&12ײBt>X Bw'՝sR¼r\QV(]^les^JJ Q- yo2~Irj Y̋"VŀfeFҧ.v^#ؕI(E!Zq4>Nu=-58%M1hxq+xm%֞B5¥/[87?ѭW-3Wyk7OqȌ'Z1ԘqĒ:B탈7U# _bN$v}"jknULoL'yJæ{6y <:ICN0 g{FS)6 [*w+ʴϓPN3ݳRޔbBU xrelssrg~ 7SMJ/LYS&]*kAGɖ9ռ<|!#&#ftdCxcOg&_ܠ~nTKVQ~c@pQCx 1̹"$3h_.aef ƫ~}Oy2Y1LݝW˅WgXPj/f!s]Ye'ٻ#hajeGEܕNh "S'DȦMSƏ|JNjr;k'/AF^ݳ˕Tm]L.`Xx293)5VOaGȺdw_"a!ÞVjh-QWO0 d Ex(TlQuJ맠2hDS*6M\ȅfe6ФYƞw$9Lh:*$2)P2·I2iIPz67ӿsPg-ʕtExy>#vW<R?Iwrͬ_|cq/c%'2*Jop+D G'Lt2.Q8-PKڍL~zhiWQib9EOB *Ky0ѳ ZUA1**|;TԱb4G~ߕؒm~'yL&X K[v|[Uȡus{Ylu8hta!-}H gŒoi'Bmp '}' G[-H)Y<Ȫ f\y(*zmE2վ/V<;a=LhyجIJ%k"UPuO>ՉZAqtlKKDln (Mn#juR6N&Q,/=yd=F1suu5=%Q($T:nDtkIJM>:;+`ܚ{چzDyr[Mήɞ;uU |c4 @fٲ iN5:K"PDfu)qf} `o0LFs (cw#ޤZ5 ~P HadU&pNWQsԵnivӔ8`(J -&>5qM( G/{M?d_D[-mpS-YY t0bIfOW'Z RmU_M6/+Xԇo&mj264NHAq4@GԅĜh 2= ҉<|l^@'֗`-c3lR*m)߆>)\`\]~d5{5ܯ16{r/ z]2ǥBưYZ{Wgf\]6_'Ծ! tF}&,=6K FQc@'jB>l )!%ˋOE>FAXճ]~F9Ғ}tZ B,A:^d .`+j'StL'X=E:LSKG,G#+㚲(&#$)Kf~!^e4_2>% jwcfؚMY,)o6t%vO!@Z Y6;‰AG6ܮE ^JzJ[10̛;%.y~yU7kC)^~x;W.Y779Kt7y{Xg$Ι؝7uZJOtu:vJ\C%_w&J/[[?;RɌc=v\ R8K(xkq#;/"H(pD}C_EYV6C]YeJ8.%ETW!{QK3/Ê 3jn>tlZv{',1!tsj$Z5> stream xڍxTT6"t --1  3 )ݍ ҭҍ Z߷f==6!=EmCsA ،(o⎄"PtPhL Bp ( B@D$@ h4pMutB} s%$x]!P0 ` `C!(|BI xyy\wG.^0 !{: Wȟ FNP_C  #.p{;`u"kE  n p ]-~7"`H @vhAy}`w ɏ~(+ zWW$UFﻏu#~p{_m{ á= J8hߘ#J oF>n0?7$A!AP0 `q  CZ ' 0{o#4VR oOBGSE%{3\BT+*HmAPZ(h#гo)ՆC=\۪AV4~p(R ׃N/׼p A{eCAA?*_&$" |g^Si-f?B=V( B@+ <`(:/Ytm> ,!Ra/:>ᮮuG'D9ieN?V7P15O}x5unJZ Cy`CᘯpkG=qB,#z(Iے#t:\Wxn䖅PzAʜN|j̺1DOnankÇ7§E}54w}5Gh(r5Z "i,4%+Xb+g;=u>yр]91*@t59ډ.Ub$VVЇMm^=(+4\j{*lyޕm\vU4L|sQ=ۨ4-:}^/UfL)7#CDݤuwd&ʢzyD WB~LAA>^G$K0IټFmspRb KբoIJ,ORO ߸:X@ZɶLC ڼx`>|,6R8Іɣ_Λ ,`ѩ=Ӂ62tY gHVkv}La7*9VjNiW0Hml9CKz? 銾G>۲2}L݆e`, 3o8b9^1 '<3,<|0aY}UMPn/K-4"G@ϤYAF'2m=ٵ701Oyje=Ad*I\NpZѧq~idh.WX#Q5Pl4q0Uo)v"'ɔޟ?,ZWHݝ jp1)x泲^g3b慜Q<N+#-ͨ.?aOW?`&eČe|a{#z=٩8,-aZ q}ݚ+S spqa*ːP*a;0@^4KTAle_P?>uYAa%;558,W0>J| w/o4|$ҩ8rbC~9`ͯSl~6Y Ud[obڡ a)NI?u<{mp v6H$.oNls|-U`3(BCOդ&E4<Hq9̝<6c竪(Pż]>&7ZbMg;x %}zښ a N"{bSZ\iO:_5M .bVhk|~֜ϕq>2'm` [>< yDEʰ|^C%6gyhxi  ;. }xKB l@L}װqk(b~O5a>y) KLG0rK8xм;gtq5[s 3j7k4 mPqBK `ovC^4w3"ԡe)㕚 ~y%n(Ȱ#DCN{%>8S"c(;.us㲷#4IgIG ڳoIt|2R\ G=iOȌ)C0pdHO̪?-D8h^Px;{yBاS:ҷl#;O8NwBc ĂcEgG#+eX`ud~hǘqyǧ=`dq*0!-[К8.&*owP$WDwaq"+,6/[􁴛n.Gɘ">f Xc/N>`^ jTUqXUORW`Xczݒ0a mW~Ώ=s?z2~1C}w!nn*U_W2=ugb;dXܵtf_d:%V0($AR< ~\KɎ}uܻf&gon/&4ue%.kkX+Ao,K%޷ 2]1柃~I؞Ôqci韱3"z}l2O) W:DTݒ#LNcIL%iU$I`a&ڐ8\ܬYrnx$kka݌Su?w+yR5A p#fK1tcw.}(Qmn%TU^nfAF২t.B4\mikEW>97jmٖ*H˘;sUs-*YGʫG%G]M8X_Jߥ2+k/' "M'ޝ`P)ɗR3ES'x@' d@r\+>Jow®kÔMVU?-鎶v;ASCAOڑKO:Z/#=$*dgDݕ^SB*_X:4#"x:ͻ!b*δ |=]V krNsuX/R['$_<[3WcLiZPk 26ʦ!%xƪR.]MiԄVg* tGHРB$E悞SFVlݨ Ec#*ߕi[Τ^߲}UVYj`p$o)QyٺC !&Hx깶slꗫ=",;W}jUҔF.'Sb8i&ٺNS23~5u)f($>օd)wnE_id|k#7Xu aWig_. kcꥰP$RΦZZSMVR]A,bbgH QAȵ1n?[քȌXv'iT+73v kq=?r:SB7VD'Eq}̷uh\c6즞D1(OYI{$* /YR*l֍Zz:5{HڣɨG:!Qʡ$kr7^FkyaC9ӵB< |}2j]6 \pE-_YVl`ˬH-@_4LqԦ̷-?ی׾~Ч&5K?~`'VcfNh?Ƒ|wg_屹w 3Kf%?%̲w`cu_sfZtt 6xg?RpLZ1a_Jg>Ry=^M"+ aL8-72|-f0tPA2$Y䊧YfqAK-(u0 @" /' J6~ MG:w c¶7.wx7 &Bd |!ŒӴƋBS2ÂQoRXHzM۟|Jzz N2g^}0A+'Fj~/.|D}U%&M WmLߨýҨ0%sYVڈq#˶*3SO:ިMN'^6۞c>'k<;l{ol]>^94"=q3|`Xu>y?2^X|I~_lT_ONW#7Fi,:F, %]8D+\\ >;/yFyZH,o =atU?TEan\A>69fEY;|gǹYZ*BEqbb+z1VOGvR }779hGyn 'ؤHͫ2ѐNppc%S%Z$Yotb͹&(%}&V̦4yd -#h,,s~8$#AR%j]8uBZnןM ^يj endstream endobj 252 0 obj << /Length1 1389 /Length2 5998 /Length3 0 /Length 6956 /Filter /FlateDecode >> stream xڍuTݶ-A@%Bґ.А%$ޫHQR Ht)"IX9?ɷk 2mFD@`Y4 ..$p!0X$%Ԡ8A4B`Ok`]+d q^P \0 @ ~s.P CC=Hf*DN`hW7(r#]@; 7NE.X4> E@ߝCw P0H7EQW)hWW O A#fQh/߅=5Mt@h!0("܁o&>nA_0~?7?"iPO@?W  H?07kO ^^p4?+lnvJC~Bb`PDDZ(%% g(oj@?_{_sY.Z?"Ka/oN)W;..üGtK7oSL#=\;⍠rYHD#ws#?/ Q4݂+u;`h/JH I~"xC޿ 8| ?cV0PB@a7 `- |#Z68ፀ'0pMGU,^B_ߓ~d-|{9Kc]>zTIȄ? Ѡu[N\zעʶP^n0$H&}1YTJry vJ;-@9;a%;Kk $Dt0ptI|7;ۛݕ.Q)YID͖۟D0GK"qZ5{1 ix2\~pN6b%HԨJ@ 0naH.qQsg ;(*kK^m~}wYg ?ΓWnw cOHg(|P7Ꭹv0߷/S4L =|zd7QTpu0IGOC2MQK i]— #@߅|v\ܛ?CʂbIBD7 EG߽|_kKMעM;>ATXG6:ax>P;M c,c6M(#CpII̝,3M ueV `~[gEm`R\=H%Ss+ufov' xÔզ6Em&CgpL.ktڿHd6?8v͒-v6b.H} 5)" Rl7f<&?ur*'k`)gͷ9M^бK5?WX|T [£eI( Fnc{|0:3"OX;ApdpKV2KgVefA Gu'- ZJ^z? AN%|Ʋh^w16lx'qj9L^1=߅04i,v_ H]-%%_~- 38{P,0l1[ۋpRR  1ȎKS% ȺaPHsS,YOw=6(~Wާb[MDV-Xsa{d3Eŵ_J;"sajAmNuVDՆ?f*:b 3WxEqBXn=4<mO xuӓgD _ɑn@b{'yxAU,]IfRCaW.-O>DBis^|Q{Z2)ґ{:$&~jy-RsJ$Pʬ|+M%,tXOMTrR!O:ln [T<5"P֕cg71\h9<`U8di}i>2 b6w˗6ߣB Ip7]d?9p@mpj5i`(\ҝmYx%9^{;4rHiaY)\Mwr%Ϗ^\&RZhstt74_l ? OeZ@7W?GK $KWk$*RYà|PyRR@]NZSMR63mhU7C7^J ~;GtNg/oEru's`HuIƺ}ɓY'K̭x4ͭEvr>N_bTD"6wޏ-8Ky;VNu$8BsӰ9Cwl[.۲/rwNNsFavf!VyxbY*--J4 j$?e YGs8\!pheIk?gѹg:Ee;ӟ4od98̮y@KuFQSONEN}HgQafk_ d}X2o}iqhS]EgbyiL&*m}e>^F(_lDBN3ioc@{ZܴXL.a8_Hx'Cu bG0ʁ|C%yEu:(CQWkH(ty m| xeAԭY(µ@ڵ全)to,hkhR3j>69t.-/ICQ7Mla0MoUIyBqekVzEv)fET`꧸e!!qk[KikNdS]RK hu9yaDJ݂1T4C 3 F )bb4([;)"8bPP]~<W}]tsIF:FN mh˂(flѡb9~̉θq[_qm{>rJxh,c;x =1eI.g] .w'Ie=⶜算Wod4(3`+yamk:iZmzHUc&?/1t|H_Ɩ"N6|tI$ڍ<>|/vץɖ{bK`M~d E{@X'6р&ͦSτ]߀J*ǩf.WIp]7ߍ\rFz?Aha(ß_&ϓm:j0*Xjj̢VWbs,F6%# Yz?A-3=sQKKʉ7ekuҨ_"1 ZvBd&՞VB:i`8 ?z zX45&7PJ.?̮k'@Z<^l94nS2>yP3N_,{Z\+W !*PVںvc-\Q c֒"S({4G>WZy7M䖒(4Lǘśbд0@W47Pw[:2 4|'l^M "'ӎJn{D5?s!Qj͈ 8x$N.{h$+;ѵTK,R%Ty '`9"* }j~lރ[+93ܭŖZ^Ma-RWC}.UߋNdH,"x(G ) wU@1HU=-:" h j}A |dmvfojivzh˶']S|6to_nzn]Snڭ+"%ȼf̎}[|~j_̩} 2w#"*уϯKik?-wk]b=F5y]eO~rQ,pdAPʈa|OW({GU WOf&}? ^n}OZBf ?Xnc%N `Y}5R. y ۿ7}ۺ ]畇yV*P4EMQpr¯'<{m~4 @R\fWqcDISY53Ǥ;g3O`=Ԩ ].o5  d<8Έ.C逵23Nj$2y9m3_>xyhY ܇Az HkWLQg (?"XY՛G+;;%M\ٍiyGTh;5<[ݹԚ[BB <.#}q#vm2,]ޅնޫ`Ik7,/d~`Ns r~sݟޜq@;G Twb⽆J Xy79tmj zfhK\żd xZw 8lnA_!*xIIVBߐ+ Vc&mR}<۵tXZ E!ODN\!i˸-u*OdbZ >.TL(Tu)ȭyuѭ\a?>V]wo.n.bv[Ltob;,]fI;{"/*aXY;RZ3N}.-y5xs2(Q%6] hv=z8ݫQIRTb΢ &{~ endstream endobj 254 0 obj << /Length1 727 /Length2 14881 /Length3 0 /Length 15473 /Filter /FlateDecode >> stream xmcp&\-XOl۶mCRBZaWTZcg"qy X[ R`=v*G`12`/AG`G[2cZxeew,#|ppE?=Cmto/ 3oWwb j.+ñQhBS2/*-v Gn7>.>0+&"Uqoe&nM^Վ7W9VZhIoDM./6Mc\+&![2sM>ܻwxT-cR/HޠA=."V%8lNK؄h, ¤( U(w_K!i<&eԉș&m6ecD~wժ\>jN\.]Lp7 8>RY2gyx R_0)^)p|u*qq'5ğÏv ȦАpX$k5MOg֍8mj{r -²?r0c"2%-&=?Sf xScFnޔ"CC]ۂs2r/{0bّ+.^)]ekL la>(of_"F/ξn1D*zoQ~4zg9H"2Ã+coXv،aНik!Xe-! d5)m"Y9=+1^ J.Kpc$Kyz 3b+|P0 ΂e:d$J.D uO8"<%lz&-H'T|y'. /$͂tB9m2?|޳Fk8/ 4xF\&\Q(ʗgb'g; ^`u`'Dg1Ȋ̆ߏt<—jGTO23^T#`/mvW"K.K& m aW6Eԫ׌%j8">luv.jR՚VP/GNpD$]|Q@u29P ꙁRUƚ4Q(XAMMT0*Ap g+,p&,Әv^Kc8(:Yز=ӏ^`a Lzg@i-TŖD$bN ]aM 1yV8G:?#ܢO麛];v,۫(;5V 3Dpn˴kJSVu1 C"P5֍HbkͰ Sr\SH?CO z)n܎"4e9JsEőһt9z1:Ah:!u:߳|@9 lIRUdh,DSPמ]4?)o  sz 7nM{!~SC3cos@g]%'A=?&. r /BuI9Jui^iu9$J*Y5.SyHDKΈ6$F ~ΦԌ} ^@}2SŒ%\rFSlٰs鮳MgH"/Ѝc?H~&c9g Nګ+_[((52=|V ohE2\*>٤tnr5Io ;j3\?J?F+: /)\&5BK>ټ;(}4oUK.c)巷3 `$+֧ϩ!ب$Gϋ)8JDC Y/޹_8*Ʈ~ubJo(?b$T ~&"Rt VEZ=ADUSzE:!kt, 0+GaL"/qRy.ȜQi:[OkZ֬Ό~TxOM/@Җr, 8p7+P1D&a8uA=x*A][C,Atit;:i^<}U6b:@$e`=.U3#}qW;WJ.z=3I PI-1jg 9nm-r4X".`Gru}`]2 M"{?ΓB]&1j!z 1Uѩbgf댴,?0UgZ5ύd[PI f߽:ҽ/G,H mYL <'fŔ9W lΒ8mz:c?;QI{>%9ܽ9e (|; ՑOư\Lx*\ҴBc@Cy5"3^W7|!GV8suփwA.N]ՄjhuG-OGUn υ`z? C[CNYLak$#ɅRG ݅7Qw#7[T>OE*54*^ vE Crz6\:GSzlz] -{8W4cy'q)*ţ=$&K{M^l7SWS莱 ǦFQ]Bƈ%%Qbׂ0UO=zA Z^C ZCyEͯ 14pcaEz7v^D8{Dؚy}t\ 3qD,2ȐXCo)o%_ȣJMō0uйB|aUC\iX ?ׅgJ_ Z7C+>ف;V}⺺vI?P]=EKN`r]2+JdSym*[gsc41B ϧYr2&|i@gFLur7IoK7ƿ6@omico0Kگ.8_lUQ$ʭ=ʥqV*raN]'qlھR[Kh >d۠5/j}1ËyO*sKJ$dޓq 0 b9 sy ܣN P]B޹eC"LbjLAG5FBYQwYzY;˧*O->8g1b%ض"iU ;dž!_Eu7q #o0,acݷJ 짰MJsO"֒'V,M)+`Rvp,d>F:9@:>p+a7Ehgk&03=ʵ ΐ3~ SR؃T0n,dgƇ;|cǕ })eb1nf"[E"J]?g5Wq8?k 4X/}{tFMFaIoJ!$GkWC<[^0}1V| *pa?dGVgWT;ϖArvmچ8Zk^E0TݝTQ:*DGdyjGyC_d$IJ.c h`I )b$&IqlĜɁmJzl(aݐ_^?dgՓevP& >bZST'gmOOӻQsj϶åv@tB~ ӍO}& 2WږDU>U` =~~;Vxy-kZKtT466a._\d.H2if7A`&͋⤽K9 ]' p.2z!PpLMD︊]VI 0-eX~rXOX6h*2yBOvu թ4TlQƑ} Q,F珪1bf!C4 ֑ڲAqDN1bܞq:ز~YK >J F6]1ٸ|} _9Rlzݴ- VǨG^ݑُjV/Y舭n%Ps%Ev%s*NY$yyp/_C锇[fSFnG(Zz84y%HD{H7&m )ES̾%64P w5Zָo_ڮ-7"U&Դ wBėKiC4J3<BN02g}})i D쉘 Voft-K~+ OlLhgH}nMe9qPþK7̞N@Xf&xn2~[s>Edpe`qXR$UJ\~} m89Q-~iX*3^p^;T=_P+sIZs^|MA#B7OՐl3cafu%үղѬ:Qי55tiL[JB΄}>G"Wz@+'lRqWp=q}.tKWU݈ WP3ykIv*I8A,XO=-BO`Ѥ|)_#/PMa pQV7)+6gvБ]],ʷBM6ѯrqݟtD; < A\d HJǀ2< %9ۻ"O"J8bbO2x|uA3!.Dn(Krzh 3DW(z1';=,E#먽9fgXW*&DlH&xhHP~_X8c8liu\&C|;Zy~CG|B<`֌u&-w~XHj-l_ZpޞGW70<8!wlRۭKo]ݰo5Aq/GzQP9!-ôRԂe'o[2֘]W .Uu*GT-<,Ҭ  EQo<~`[.غM"$ܵ$9EWMQ/{5> Puo VuI'9Qx'DwJ0X#[d7 O/ugjmٮ[ *P2LJ,? ӏ\(u1pF&E}`C#Nvu& 2U2<4XR}b`WMul!SB̛W !UT3qy-ر'j;YS-^1u|,W>) xd"4&njY*nsXLqT%`Qc#1/pTn;긆~z5PBW;!=RϗY\}!?.l;_?k6uܯ'`>U"5wq\Y=T'}Of*nF$*@+܋QT8Sst*WcNI{73jݩsJ?kXӓ6dM3BN͂}44jw򨱽x#)A9$d)CW%TA;"huvPΘSu8 &ttq.&27>|7wҮYU pg~. Wk=FFW(U@c LY(8Bka[ᕏmRPwZDj^Ym<3{}^$+b+!o r}X +sͲ/ClC<} !n~ /l7CWػ2~Nd'ipE'i̻ަKDLlz@|x8`Nab4LoM=ԢIք2)S5@.c?`;Ѕ:$d[\IԱ{r<*bdw^]}RdY䴃l!>$)ں#B;IWYS f2鷗<؞SWTOi[TpYy\T`j@j7~?c g9-5&vYj K}T AWT3ﱣ M2',w]hٱ|'Ҳ:gtQHț@&a$?GCb9ZJMW7_Wq97[KiY8:':YZ_%E\tt&Bqb\ݩLē;K 8|J ^yW֜d$||R#M]9*29= trkZ)>~=9DIRט"6EmUPS#J9cH5NłF=-u4jts ,=~ W!4(r[pe侺+m.[iG^O{~lZ<`U@0Tʁ 96)|x1defk=\}@j^!l].txJ+^yRҮ6$ 25wo 6y}h| /\)pI dRC#VbdCˬ(ދ%}E}>z"l1A+0@o7^^7J0¤uُBsoIikctS#YMX1 eqc|7WM,)6E@m}0°8oumN.[䄒ˑ.PW-aBx,h[@8fqqWC+jҮ4 mT1VsYsvH/|vi}e%F`)gAEGaHPdwÊ}9,^̟l.,z3\H7 ۇj(-mk5\⽼BPHT,ނgn7+8zVR襒^CyNC?A9Nh37q1^K~t_jH3FҽnHc)ֿ/a3h[R3-:|d5 H_8CC~RJ'uEOZ p_橣.s`\@4o x:)(X |ur{,#[L`]ZJX Σ1@6,3 ~ (5S?9|Чb.\z޴F6zJ]}`Brɚl2dXRz޿`MFFײ$=l2[ܡ<ڛ+!A^2gYÒ@Ub "ŭU/zLVAit6r JUΉHo.5pgH@J7\ "%Owl*b)웄 Wq]5z,D5RO#;Dl>g><{R:f?:B駶RtB<2]e}X: $(SEAT$AiG &Y+zXa, D쩕1R&.܅CSKr/fs5q14wqwMGYK!7Q&gdD rspG9K_l3_)h@. G>G#bs7rWugjaN>"XX N,2 ޲<  V s޲]>U駵,7JP~=VN*= Ʊ]F%K|00KQ2w #v^ye'rҎx! `@K&Mî(l҅;3.VmT*sιWep_SZ8t&q@gga"#ft܀#mePuc9k%r{uY.ӫY $a*6z^Fwdhw9E/GeM$5Tt+J=\ކp6ԍTTu)lRVΰmsQ렆fI-_s`QJPm"or/n#uaE%m=%|,mժͯhr@!ɼs8ݷ}O[| P Ub5Uxj943NF~x`ҪO(6"]ۆk m~dנD:T,=JPOgxMOb`1 bt]!əqlb oǟ2ί|=f ~-S/<ɋߔ=p-*ƻ]S(fOCX~\[kzV:ۥByԺ1xi'{5j+p\Qu.)eŜa_V| ^xVs0a¸[#0mrXV"͓YOHLߩl=l zppwL0Whrv4&EU4iD– >/I1Tgsa a7{;6MjKUOf %т30GnX5>J|\PO{M~ z&YR!q=v'#]ADR?cmbD鱗MNQT~c$ ' : 0⯏ո ]M%^3gX6IV OJ>VXnM/edJtz&fs<TJ4]4?u`BqϠ$]gr /il)dqYNc.+`R; @r< 5c~ :XUGa ddʤv6C l4y夂;~WZmv@ke}!qjREUϻL4⦳CaHD,ZjaQ*|􌸥߄篽e,a xy.@jl>$@#E`nj`9A *;8plӼЅ,q$UDdS`@˳!' D,'pVy& `"r͠ZkvwGr^& z&t@\)DcԠ~NUsC+d?j!H#q.7{x[9HZ~GMةfxG2/Fj] 7Pq 4tףՕeg.Ėx ysSEtmmz&s3_1@} Ӣ mAħ2Lpsd〰p>KҖ/ꕠÅ~DIPf͂vJ3DJ!Xe zw<8qT3,p99.,| aulPb dǒAApͽ]Ӆ=_ m}ҭ2uϻTe;Ѕ_h,IUY5^/!cBT}J$\9h3I[p??/ N' HWK|w3zh8D"2+b dy-1 `Y/E ^+\qzڅSK^+pzA1W| W)P,v V>!eI8zQi,{@Ѕfx3l^*Ԉ ?$GKP38,gHRHv?YNAzK$KVMɄDd(uML#ɚ$9$OZIx9 \i{fsVT#,H$۸u4-EԬHѧ~V$! GT'BJڴlۥ.MXhzJ# ^ڰNtU;$R5yr;! K0A>[NnCYBŕ ^#sInJV0PKr-)yܜz5v42Z5;Eýul6Ð"bJQLB{(1`C O^qD~e{i݅#@u 7؂m`o#"ë*cs)aHvu.h/,&-U9`onyO<U&߰97FŠU@tf< `, norj"62؃ȧxXh;-`[U+NxC6dQ/֋|( 64ݳ=[gEJ 4\Ǯw[3Bۂ,VU 1ػh(0 ȇD`$z#2 /svWjtUѳ%BsܗanՎoax]h }>fd=s{i ‘)O çmIM֘.3d'C$sv8+Bv0l]:-_Io4ʗA/{-o'ga.qzR[2W"]FHhe.rT)77& 㤨MqRlF|9RpUG- ڋV {|7v\6Dk$oc&rըY/#){6EɂwmJ- =BmLN\P.,$Vh2c mYr9kzi$Ǔ6mnAZG$=`7lѡo bؒ 3TgedTMπ@֧bk+U dw5-2N\MsmT<ЙDy:XC#kn@;`4=膢k);R/0[N&7{gHZ}OۚћF4% ԺNH{:3Ru.LGE#~ծMy$1Lnuy`$[#G5U^uo[_ I)xW1Nxb:,0Ļ~:+QJb(qlsWAC$x]dyhHS׹{}>`ڼ+Ȗ5 |WْYVĪ?z*q[&C xxlԘ#pU)$&dKM~~_Sx4yS=~XIw7h\mϩ7(Ri=]stTM3tj$],*M {? h͝X'N-NȀP4 /֦lc(C)e9I+5?;;Ý2[g;/(GgYp%dk)뒣k^[ɾ3RhI h(g+K"Rm:))iL{ Jta ^!leb <㨂ߥ&߸|sLhJ|49> stream xmsp%^-vn;ضƶm͎ٱmwlfͼ:l]{uvթCE&arQt22JhX#PQ:]Ab.M@`e"PD<,,]t4lͬ쬜nV>777!7gW&'WT@%`ne **iK+Hh%@jbke 2ts{'=_Mtr@^\MXBQA .ʬ& 0)8 45t.lg_?++`!0K7i=?a3W!??̀]mmZQ{;W@ ۚ=\ 3vVv1Ga? 'd,a4SrGrscw\WT Ͻكl=ow;fe5E  S{3+@EwZ?;_*)]<,LZZ%"b ` ``r蚺:9A.Y{@)꒽)ouzKXxL4̔:+d.ՠOw$@mfrx D Ys E_rK}%UKj{vic?$kѯ>h{$> F'pm2Dyw"geayAϽ{u;л-W#^Vf +7]1wI*0! UqZ-\cdyJII&a;B6v_g++ ϬOWm@#r%U,]o$>gy%iu_ˠcMJ/v]R e̹24z1md5RZ"{xyFDnL(g57,tw)!%gxHjNoֹxH2W ,If]Ogs=P},66V ~w,2]{(yez ',ȲJz0.ng QH!gnJ!\B>) 0QuI02eB},ظ&ol>9b<3R$볿sN3lëCX}l*yAqNIޏ"!ݚ9DO׷AtVp3+G'*cKj6NEAnЅN$$WO8'NbM Bo4 aaLV;IHduQz͝/A8g Ѿn|%I'i^ck-S?;ĐPkJ3 u㋶s5w<4:lۄ* MNgfVku puxXI&a,cdW6KQMӣ5^3zC#E7d)^E4Esf8xovJV.ܩk" xjJDBT` ~TZc3fgJ򗓢ЩdG^|$|èM W#_yrX4wN^]ٻ ~!S +'6}۠ghǀ0 K1%i]pE7- ;c %Xx57.?pGTGh_wFUzZ)qܶfhxu_ĨNsQ{?pS"ҞW![Gκ 4ϥn]/G|"@ha/Ag{1`)c٨GRz<^7Od5`EIG f gTW/43tYǁ܇5(P(IȥV<$Kz%R#強j8ne[`q.iW7pQVi65MEX]Ě=!OFQBrl/9H Ob>冼8FPrfwHR'HyfL5rhH*3%k_$ M*vy&E/nP$PM//L#tNLoF Rj|Ԑ}GѾǬLbcuI* x]Օ:9QQFN?dqg, ZXevQ.ar!:A>t_|ûo{{ʹI4G]Yf)"8F:P@1s䳛 A R !L\o收63m=~E,8t\ƴj FbTЭ>ݷU P'EkziJjD4QoA,J'JCسuޔ)-Ehٍ*;m:sv7Oi/Xh?,G :M dx>+O\}@fi찹@G)Ǽ(ӈ.C elpDiHhIj3jg!ʝ֧;9aS^w5#m.GvZ2rQ=hCW#v59jXtLBU.A:UZB."jJJkG~TGĀ+[s|EoE;͚1o0?衡;dtpuTc`۫jJ6 +i|F)](zFLIQPI-9jg 1nH1 =䀽ҒZPLlltX)joGp9~u*0H@Ak+8D@'y{8kIc Xms cx+LZY{:J 'Gp!4D7/a*ep0]CB)᩟ܐ Ζ=H"=cd P!6ҪUnv!o.-b5#ȃ&90V@-ǡH7ضDx[f8=IJ jNFUV%5WUV:2";[Jc/bcƅ3ց<%}K;)dqNtJqT?Nr`&#KFmnM,+O5¨hby5eyxQk$yHKA\ <''8G'?dӽLtS% u~קl USfʶ\vߪ@Bq, U8豙KoyG>9Uj'?rAL m4^N*usDʄ9Is߫af ;hU)wI\6F4%tQ$ϝ.Th]Qg<7>7wVP, ks24#C2 7&2>HwQ{S:V2ױ0dT +AiX9nڤ3lI.:#\v;6" s՚L}>UJ[yAeu{c(ahg J̕O-\G&zU@^X>-v=Jub/X>b";]560^*/N+aR_%R3'%?[oF7lȚHvB1K#'mT%9o$MUQbS CZe3x{FY%|Ih r$6QlM* !À۶H4pQ f_K %fN @\di_%vES)N[ezv"]Sy|L}\ϨR1O~:섢z.礢/Ja%Xȹ5殚y \?l{d>;܎`pn@rHt |38R+bC+^q]==\@ OS-@iMᆡz#֞yM.bbAuTb{wrX; b|N&QlDzo&hsln_=/_}?'?kpǵhnA^gvs#a~HR&2 *Ϥ&"ؾ@_c72QT' A-ή7\'_ xqhOE;DIoJL5=ZRY{u\ +V9i8Տ4zHO4/+z6I' v^fq@./b8݊/=9rפFa} "< ՟_WGPx6&s|r*7yՓAguN^ &{Y2~GNDK+_g:0r@׈6){{o:eMrIb,!hBz=w)O$H*EWb1I^:=* MT)汷A*KUp$V5vd͑|?N9^%U~?sھFdQnfpYF9U +G_%`f?'Ǖ;V%vdfA-L1+[2*PMYEyB 'uUƛ;PO[B@$A|7-}6]!n @(L:B 9ϚP;Nj)jdPF{(&`ǸǗ0_zd ࠐ0FR[L{L_!|kz_zQٛ8Q梅b8y#n[!FxUW&g,ྥhrB}I~HmG v^2i6a!kPL z{l'$,2|/KA>بŬX-X %z8Cp+ף憩]ӖngcFa9CTr(͘` yoբJzJ1/4g8OQ99G\M|C.HI_ȏ/Bk0]y5.T 3'ro&^dۋDd#[``1cn)KH epg,I6C=пxǛk>-^n\|qWA=B(j:9z'ֽ2P/pˡ$|ƾrybJ6c &6[0f9 [Q` uJz!)' .3Mt4Pm0J蝹gg9~/YˡpoymmSH뙴#2ީ.vۂgFED[t]Vۻ+r񌞘sAUyt^%0}zei1J)~[д]>5]M_)UR;1OyZ62ۊ>MzפGƫq6>>N?}YP(*OqޜLVM$y1W |q cf=6[* (8~1[PP| 4u^K?*RBe'j:i@ MYvL'{kKOo=ۯc%BJ-B$yWeѦE گ! Ã!`]̫ԑ3 ͓EJ|]0kzM\tcBX{8NFiSBpvwtwvU* z7\*);'kG_pֱ6ugFqϽCZU,.zaʔKceSG9dְeuv" | o~ "zNIF(\=o=3i^}9I:[EsFBݤw7Տl$i}u>lOܥWS. LYIRʂJ2 :'T)ߦݒ*]mN;)}hhhUqΡo&1 C6egKvw ~<,X+Q8a%f"Yd`][?OvO)fVԴґY,ieGS"1OnsydxΞE״bkڶ/xvEd zʗZa)f3;:Z_p1'Ҡfy?oD vW 9:1WlSCI^:!Facư4EL!Fěs4M#F/sz)V0ʶep!M<;zOoGO!ڜࢳ3F*\V(MBE^ 7A'o}WԄ7 $k[Jl5]._>f?@WZ9Z0 r:V+~sV(|#78eU [A3XYv9<$!mC۟Z±uE`Ⰸ*n O/贵{(#cIGjo?)ܸ Ma *9ԕ)-"~͠/4OmRa_ G}En[nn4<0,.K5 =Ay߉"ko /e_%jZF5.xv:a~+]W mpdo׳ 5 :^z|Ʃݘ4\[c[4?avZs|gꯕ3¿OElXdfC_b'+iɉ+T@5R( T,*A%Uܲ943= چpRy;nIXA$=N|WeR~ʕ}C0|LƬ.G FHwޡT/ fa> ƤZ5޸@Wn!HmN_A;FqMQb(/R K&74{+ G.sqm<^-އSU0T, lBX}VpT9DmQC}*]5-/p-ߣyẅ*IDNdgѱ}3BSjbgUt(@ųJW/ h+'`$ z8\3f<ɪ5]Zw'r)&H8zpㄘc)h,'wK})+X:Ml:? NFf)5~'aJ^.S5g2S]z0YO8MyJhF1:Qc$> ;n7xS/A-L̆,ON{~PIz(bKe3eĔGҚDTȖhFazPAGk%z=G6t("S[&dM٪ <&;I8{GQ@.G'{n唰h AQl*Md8P UyC Ʈӄ5 .PwEy޵AyCV)\NRz7f 2-#_3ER@SFAS&{Ι??"Q6yk'1)& D]1o#d^ISx|*Si̼*md8Ic(+>硈Il aL\~g$R(knNUe+m%4TL,\㓞jsm ̖y)_՜F?pħwZAc}1Hg^ax>A/ԕ:0pV’=g7dIvT0E^j Er Mo`"DzX٪\*+< 94%ynY~ iU&:J;mz9ds`-0PkpKy'~*Җy"#/Bf19;0|>(/F7-iExX'qW-ɯMHJWD:=uwN.{I]RHS ,zC.5ډ~bwAmv_e ƆzJSaئ7%1GBXpcV @6,-jG9:OK<7'xq0ZU4Wz?HQYFB8UI>b"d+McUjz*mjn՞Љ [݈2x}yv5F& JQgZ &VK`_,n[ך(D&\nv7 XC[ dS)MoED,]/mu-0 Q%"=}3/GCҠ\шNY}ԡǝ*"d$.$ _cmrl`Tp%O.]]'))M72þ0~yi[ՆXȨGL8ESQzߚb= ja%HP'eH&4 caSz7hщECKP%5EHؕ89AY(;?aO)pvwWŊBS4PR O17ĭOn"b,P4z|ZkB^=ԓih'ٱ 7ieMM MnzhþSE$E4xgJMw~m∤M5|Xlpc?3(cծxh4h7SQ0II6Pڜg0n41m> ̿}5h!U6Fĥ]sKjvHb}EЄh7`u\LXmu7NJ"ks==Иa zǸ4zjE kb,nmޫ_Zȅ xwxHgsoPzH:3vj9=)k!>Rg:)]f|sfbI$IB~2%_iH 48\?w sHHCUSp([Z:瀷 U pvǐWWЋ{#L#n> stream xmcf]-\zʶm˶m۶mevٶm;3w;seʵ3:+{؛021pĄٙ8 tФŽ&v"&\5c= M p03wPQ P60pY۹Zx\]]\\]IR218L-M r q95@ cadbdB 0sXg05''u5qt @VTYPL^N *L, 05Hn_gY2,:hFF3_Iښ6voBNP!% B kglh 6;m`caIg5GA,,M,W3)g_l=ow9zAQ2Em-lJ(jh?ǿ RLZ@!a_KܽȟlF6Fv'#e=N&&&FkvFiEgUWzn,̍`f yw/w$[ L`'& u_K+|k5^bɁD9g*PMdJ9"3Fh+NC kO]8kRxm {Cg^X`h|)5{f+ϼ-5!-> M_{Ο/p+c)S/ Xc/ yD:\Ơvv,v~w_ %dmAJW3cH~%0|ł Q4`ajHKV'sX^ = i hBWq.{EpfEӕ<1+ p"**NmzWZ2y-_XSo|úx19H3U::A35fЂd`&cN]1)b.a}CsWv|WeZN1.6jLt83&TůAP2*3Dc=<Q5a|(\@ma3f!Qr_ۅ ..eosY*·]oMܘu%dꕓUF 5~% TQu"˯hg9vx2"s2!Uߏ#1Gԟ%BQdbaFHB{ /n7ę{\شaOtX$EOCUk Y̭ c]姵(ѳ DZ(/~6]1QW0*2sp0O_ XS8F\&@%_k}ikwtEQ1L;Fl0.vJ QM7W>IeܾG Bo)Cd! b7ο+eɩ^i,hFe?8i Hݞ%"V@@\79;X!Md>xsO 7]&[m'gtN%aF(W8Ffֳpd`.>jK`L e/|[I|쫕Q UU a}c7t.)[x)2zY p:5XemqY|x̔^Eh)Sτ2 [{e02r 8,>Q\Aã+$L'F-[~+vm, dj-rƄ Xh>\],(G\.V=ڀMYF%'qZ2CE>4>2ae]T8^ c1to]bLBC7jZN+(.`T_xNԪm%-#>S&ѩ(^DC1;:cYQ<*vX]sX2l|J-6𐸤S4JLlT}jeo 3 Ùd"l-llK [AQXM?!dXGv?se5tY5c#TXHEDgu=AFRVߵ i)M< 3M<*SNDϩ=SHqԈM㼐#MRzcDybr =}8}ej6Y% FփUDWMkmi(o1@k{]M㌊SzCtڸB׋#gi`KU`ît|`\;ju-ߡb3Z_qx?u0p3!,֍-lCq[zߩ#^p  #cTP49lnڇ8e͖J gl%&v}P7&2ey"^5홖j]oblTUGnY3qUZ#Rڪ;֬K+UYEne4\-Zp%7>BAxJdu̴ )xAKgE\ +#5)JHAcf̓9Tb.!MU:B®/Zt6}v SP۠=l;UY|=3BeP{XrmR;4=$ӔDp˻r>PjaqWqgOw/:%<_>Fm趹_t45Nџ"4sxolr+\^ºOXTӺGt-(Gʎ݅#+ËA=|C38R6A漈Mq#HEɡ=<Rj 嫔2q,'[?4era2UD)VM̫u1{ ٝRH.?$ ʟT5Wk:j0`:c-J3<1a Hh{S&bw>4V_Kȑ*qۅt%k׼o& j'&G~vFȄлQsڠ,ֵx:{'u.#LN;ˬs NJ{T.T醷u=c2+!p IyVYKՕ~>T5݉\m:s;G`U'@K33ҽƀg1k6[+;5}Ldi宎 OO2g%5.tN@W%̛G@ (ϰ lNћѯ*[>yn OK%̣B?2̚oBEGcMZ?`&l[@O6[VxXz&=|(Pv&XHPH̻`6v:m- tQcIqE˷Iġ_ =vJB=eI2рD6kWb(% xPs3-XSۛb>iZ04S = (P15U nIaNo@) xj=X@ wΜS1.7U_ sbX9Xb }|S'uk^gD|N,Gʯj&p|< XכlF3  r:@(X.C|6e;3d,,΂3+.4r&Zh9ipTz1' ǔE#MjA+u g7^\Tၽi QQ8S$fyg Dz#Ag!m=he9}wojB%bBLPǣoӊkfywu!UZRKVX%:П1[{zYIbOԅ$_S/9 4YBP~>/ R~?Ǖi~фk}NF,"1ܘ[ WHCax hrơmM㙔}󱆡 ۪{vj(5r.Û>˹2X?`0:KxӉ^W-Ih-ir]}t>E1hkSePZCt҆)Jv<0aθc H ~^ȯ YsgbD42*h/|Y2Y5 Z%bhdG\}Yת̒xZ0sn4ӞGM}͆cd=2|5(G,MQe{}WBVrjXg ޝl-nʻP.84no7Ɍ\yV6Eo1j|"F_>RMps`AocUi #p> Ch}%9˓)oUu6{N‚5rNx~AdkLbD].ulg|4!2r(D(=5nd}a5vM5<+VJr&IYT[_qm-}`Z<@䫗6y0®^ԃA4gi&'صu.> k9%rn5}bVɽ=8cHYBm%bZw ^2v?I#.Iw&˧sXV^96%fX 'ʸ bZ.VG)yOzr& w(Vx*jc ͘ .[TA7_|62F؍/ uM0펲nz{:(z># N줧3xoB>\*k8`裊^!uZ0&L ^]EYVV _(94܍c6ȀEB(? 401eڦziJ+p(|P]Oi s7[2 w^i%ٲJ@KG0a#ς{LW :jߠ+ &~}1s,Ƕܰs;?1h@)H8pcM0?L,Geĩ2~F>dk\ yE9= &YOe?G;2Ѧ\୏d~>r0 5E~liOQ'7 ϺTF>9ol!zN¥iDԺIH`L;/:6aWNt@))z 9hlIg?י<{v0-V6GgA<+-RiG)r_CXJ&M3CtRk듭m7u,Rּ;(e !u_&, 5|(vە,bZ׽J?q \53e|UK:߅᲌z*c8WI{R7ql2!B?[4rYѵR--FĪw/#XuzbtHtSM@B d\h~SғāH =ΕHXN.ȰUu+"T`׶)mDKh)knh@nq!vHy6$x53>t2OY2.O,GB~D!tUcwٺNX wݤ06|̅O5E?36щno?0 :NV[Z ֔AߛwvΆ<"4.C6 Gy6IwIHMf]GZ3dc1oNU߲Po6*+2aP5EXBQO>*fi"# -q/d53Z'hCxU[9FiS3+B|Y^VSYlJ %Ȋ=@arv& JDy,pʬ R_Q]זz{@OV^덊a.drdɹpݔw\Ę_M-\wʽ Ry>ԝ[͈ͪ:lyw֍ Y X&!zmy9F-3:łҗ󖿨KJ` A (r/9aq[$3VTvrkϯcg:ii*\XdԞmMzv]i|zSo]y\ v >HV"|'"E2eiwXV4<8:u1Yf.mLU=~bAܧ6FAQG"Z" YY6*bm5i͗(-B o$(iQH]5M4c>^*áWKo#tBw?C_ottn I~e{?H?ÿQVw1vk~lSn40%T-wmk#)z'f+\@&m{b|`yc-ߠTRbf:X7L `>%u@^Gȶ1RPXGeɍ}S{ d_N SD<74O,SfO3d1r'oŭUY#t8%l!h,EkT1W;>.2٢>$q,je ar-B~@%}Mͦ/=uFX|s3%"V(_t*ιݨC\cӠwOqCh 0#gA?n@S?wO4M,Rꑧ}OÔaZjS@VX79,@=ؔ[a mteg ">nYե C *xwf(xmYEۃfGUsK[ 7ƭ =CDsťKZ0 ?MCuvod-?T子DC3ӉBz{gS9C:bnD_Tĥ'ʖGb`05>=ƑJ:1Y=ߨ~(!WCqɽ0͋`p2QROԐ/i_֘TfO{`AuIkD qS&hL>:Xx 5Bu N]!PKWX6r,H~޷3:䫿r tY\ڨ㋾f>jF,ZGzM(Agsԉ8G_]n (K75;v^*Lzc!R󀐀tbeQ),Wyq-m׸.ٓyv-5Њ\VUvIUR4̛H Mym>Mf7eH'L?Sm+6(jq<@qpj<8"N;F]T9z:Ej -Sa=$ݞ*E/ QϪ d|$ur`Iq4ԇ &醺"G#n[u4iYz]VٓQ+J[%;@;fJ޼Ժtg%4c[V9Z/f&+ҁN 9:߈45 q\01?=c( eGjhpe$x\lx#ZyC{z)O>ஊ+4\ Ĭ"BW-JQ.2KCn{ɭvF!˒ Qmxm B[ w6m^GM҆!ىSx:k=vCIHNd D(#YYA.:w+͐r֤1QC9͘;%txg8,C v-򱢧~ !v_b`u*mxl_9C{ah|XM6rablg=S{#aF?GPY 囤Z LQACcBMIH3ps$rzب6SS I{&5+#xӋA|a k)*ElP2~Em XdC,3^t#Ӛ`+?|Xf/-w@{]Rv oAiz;}4 zJqbtvVG^ YhZ!ڗ߬ʞ\\(P?"[W'Z^]VAηsїz 4>Ͱ6^U8t@tW"ǖƿq+N׶ԟRVT^{uOP8wN`p~Ѵ"F)=cλԮ)KWDqB ]yŚkeI+A;Us|Т ͧ0[xBSo8P<|7;P2D]&P&Ǒ4p>^8 ^uj?N(-!,#= vNu*t^U 팪˕&ke5&2AsB KxOzQW=OcK{TS65ǣvzKX]cl'!-IE[ 5qxTq`B9tjwP:uȀ/ nanܧ2!&Dpo?@f[+Uf޻-c ]ȷ=l7hH1q{AaGT pL!w?t`3< YwsMb՛YO~ z}'Nh`KMxWR֦OٔW;h5{ԇ+9'h$pI+6r4^qLSUϓcpBR ;pnB¨I{uPT:/Xգ)KeIwww!5ό1dy '+W6K%|)N݄:Ё5UHeF` X(J"HV8pˌH FG[gJtngibYCUT{3IaVe.C(l7ˣ+8[N=wWX Q˻Qnf iK`P 'nFKqדx_,Q"W"[xf̘ٙz <M8|V ))g6waGpMV`ꁃ6^x66#CSeivm+-yqk4^gԤ,kԗY>ah*Lo~"sG s۔~hgJАZ" G*Fdk;9KZD-ĽMMaPK]'I2H(D=ʖȖ;3Tܓ ˒ xfsZq]9[| 3*!װ{He ɘ(pzr ޟ֙P{6q(|SH= $\"|5 (DrcOM 6M!y_ 1^Ew0<~13^Pw"^*6sSΞR\2>c5%6S䐎اib w C%$Kv}_JZ*1"&|J]/tu˅n5[ڕV=R.bOf+ \wslf '^'dB0-_ENժo̚-'"43{؉~  š2G./}蔑΂(0h/vv}c)47^t7I㒢V~Ihچ^[Oxt fOWڮDhŸnZ]1%$M(XN~+(zk͐c"_3Noe֤%kxw+WfrFo鮙e{v~ZKZF̮qgbwVyy`g*{ ?+17ȦQݣ7 dJLFUߪHa:KWu $ - !-JJvʱ*Q~Xגksw`%1^nT>eSxʗΓ;qڋ؞uURRm*@4i!# xOdwdocuitӽB)u3H\`$Hg^}<~fY\"* iWqfd[z3豻Q0EZЃDܿ^Fh,}:GB1pRZ6|t'=9U ?-lBxü`ȿ~za4qۚ6&vUZ3Bcb0SV*'mU[$_o>Ȃ8ԭj2 *ΊS6O4b-$%_`_s !֪CefʭUkoxκK 0\/P]0]ոhREU<7z2 U_k 㧴myUA1M T 592JC/B3clN#V_*b1GX)jA5\iDrhyPnUvP:-PTxGK6tsNMT#7 t)&'#O?יUO;$OUe4i endstream endobj 260 0 obj << /Length1 721 /Length2 22979 /Length3 0 /Length 23564 /Filter /FlateDecode >> stream xlln5\vSSnOmm۶m={%V31f֘cͬdduV213r)2132YEv@n: 010D=-̝?YXX8\-N..)gs WДSm#k c1 H0sXٚX غ!fhgS%/aPښd$)uv 4vWwYֆg/ `ba 0Y1K7I[S;&.MC~hH0v3~ػ8v&@G[Q6t6G![cO闅;DM quEhbbz?zs&vg B2b4lL,lhih 4/khfx0k(aa;w/:&N6 3#+Cho tí-Y6̖CN,3LuhZ ^ݫ!6۽ܑo"5"OLF.(7zW{ ӻPõ1 sN__ Pd>r(Cg2(mDَ[]xҥDFT̚_ "ܐ? |`ʵFw+yohV}SeL¯&@hZQe@g.3a˕Ͳn]2VQ{xW,'%qx l*ÅsK9PXdW<ǔg g$Cӭ~&9o%;sHkxXAt;{d.}L}&R'ʄ={{_P)G-ѻ9͊04%j.B}W9Vs?'`l Z.Q.E DC@Uh'zY>C9vf{pD9x|/ҹ*Cd%6E>zۦAl䳆'(1Nd3GV7ԗ [9l` Φ%L #cc; Ҿ>lOz}$ffImKe ]nYp̮96a\F=(xDVHW=}YIM7GՓY@S62גe~hG :vV;>cS{U(?t&ib*;uHgZCosd#c؎N).{R0:F6 1x Ezmr*\D?Ke\[՛Q/l Bɥ<S0]tcWrL tSXVul6纵ofS_Gas>2L$&*P#YьmL*]YRbǰsQ<5[yv)y.؄M|4ƄExNP5:Z?Ƒgl?8RϿ`K%5JyJ2Uǂ6Q .pdt*ؾ,B'1eߩڰ#&I9^x+~v-J3?oO@SfI6x]B'.-wf5mS`֍Tkx>ظΟٻh!#/=$žJz]EݞBa=!1 |ӫ "ۼc84yn=Fg=C#X+ʖ`1zA=bd=t5B(S+*!HR_:4lh<".RjQm>!8 ^C^ ^j,_3$Wȅݪ\~L3yC۝ kKim$ d8fҀ6*ŵ תUI0.uX ٌI'-р]ơ6^QyUIU7%cYdK.J1 ͈Wap8L˥i]o>k Rj۔΃9Xͭv`2cn:%_P0#^(-+9[>ȃ+?DKGJR,߲RjIr,3)6K?$]&0 3(#FN+#Y>y6ݣ`"F-O+$qӊFrvX7lWjm=B')`/E& P)?YI7c`i $y&>&B&]ҿdE,"Y׍=ICDFrdQVOv[O30͍7}\6akЉNk10 @&mZqnO6A<%F$BR>9p%Q$hB/l_C[q좪m^mRaΐEVE(1ak#7j<\h-TwK'y 9% ^1_]nj&1XFI2~ ۦSUk54''&.AFhoGqkǥlTẍ́ Gӝrqg/y!dL%y$;~V! zT1 ~l‹'s⤞^0L6a¼ܓkT3^#xJgaP "X;# ->/< M0Wbށ~Km]/qlVKMcY)n䴹6Ś=[kXD^LM2ꋗy)sFA@@S+:L\R2o;v"kRx oV;g  upzYcWY2 ndL5 ̤%2a28w MiX[B"b 31uP9*QOFlg$upNL/h>K>RT4NgA*O [wtm2cxwT[IQ7[~T9[9tbʓ8L |98x8O'γ{@~ĩE3I ,HgZ2 fQ jl-e>XM &H;3ѥVm%l7^~:tYn͐Djhѝ%eQm+dg,gő"smJш:`L>Xt9XN;7K>|@e~=Pw1íbȩp~vI!ǃ,, 6$Ӛ{95|pjBf-V~wrThR1`PR%"7TaLL5R26v ͶHbL#?j&Ԫtsm8"diT66f^1- 72hs*|՚1ǀV%7: >*0؈[s('Q*@2ۘER[|=Uz-_aQAwN&5 $n6A)V~bv>(}7S2à[c[5GϹE^N7܀rE|y_n)UV-AQ{SK4FpA^3h"'I[R^Z 2Fɠ ).)'Pte4\h43&!?^IÒCg;{f~WfN Ǘ[~߬`򕏽)] sj$%՝w _-~O_'%[ms9v p|C(vNӑѸ.'evQe5-L8wT-F ]2Ґ Qq{ҏҩIΫ'L u-^ D,K5J(.` v%Os"3si$ĘCD/jEzxK~Ѽk'Tl߮5ϾOn i%rơPJ\V; M 3NqY'صYװL$)JuRkskngmeϦbژHưbƓ8]KK* xⱴ0W_]閅Q9s+ zTb$a9%ik%B9|>B!HW1h"Od.-9HOg2+R?'8ZRY b:C )4= bʜX=}il*j qd ~u`1F[ND=-VrMYM[(6>|.C3am@sf (3v+}Yƈ %hr| %W3y-Ϩ` f|d`6hD1x^O1P^!†eeؙ7YDcUX}}fb3Sk\s 3(X:qe>-єWFVH1מMpJ9$̓qZ}ĞDx^-]ʥJi+\pA$:-2,UBJҋSjK)A_b{^wYH7#\+*^Ƙ}ƾ>wšKtkޕd }Ӆg5I~{Tej+YɭM!QT:g[W|L;ɀe$C0ܹ@z~WHQyAݼ2j!ӈ%ˤi 9v.r6"V R\=k(<@& 4ldQb5EropU+QcY+:hOkr ^qm^&-ZirL4v 3ݩGXl!vQo̲7-v @m!?R7Nt&W_q4u #g kOI5V#cR#3h"r5ČQR2!jqi`+S(VY4zx }-{۹\P~z+a>W )}/2+>wӺ} މIrB=R %Tu|orOcښ p }{C@34Qro Zt0#.=La#S 㹟>+‹C^B>} 9(RU3W l= vѤًšHh>' t%i[`CEsUm&Cg!j?:S`@06:GEn cE޲|_lg/ds"bG>%ygv`L a (aKxVh 9qgc֥0WZE){jsۚ\N$։5.+EW0*~4\T/;JLf1cCU =Jq7WF_b A˿3uc7b\oe#³g 405m\7@ܴ2 I8c\55xlΎKTx V%!-hGVPX}qL)FW_'$48dOa![jJi~f༃muH ]R?^S !B/_^ u,ߢ &ҹ~VSG+.RI+GlP%YȢcUZ⍳!kߙw_/b{jTrK z@ #z$&im.a0!N?zIn~땹`RC<  I& oھG" Yo`GlJ,٫JɫA噠4XAmk4JpLU8l۝0zz!YpeewKK"B[kw!5<8<Ė2q jCG~$UeIԛ?gRvv/#C=L !"f%GP%J憴 SohQSCfZz!v} Z_͸/jTQxZR\WE3l)EɨCބ_(hIC.{.86ǝz(!+kvpjDPNmG83M9{2%FypoG8^]۠;9vUSƛp;r 4K9s1ead0WOkꍱ.ڻ2.a Zu ֵ1*nBpn^Ӥ:{\>^*ނrǚy}TKZ̅by]؛Dܪ?G0¢L_hm,VY8IZY@(ž_0גRW.;v0p7-\qFP+sȀQ!eFӾs엂ST+ƣAZbH>`G ѣٲҧ첟/{$OPkl-lkNP|<,[O񷵝$Ibr lsՅ$jAbu8 OL PBm"`Ћ覊 }}p"uYh Ėu1K_cPp3vs*e`*o.6 뫩CxTa"Nr c*ŷ$<Dzt"!U1B CZSo~탬`яjpq~nQx0 m` o ;>7#z.65+B զ:j;2߱3"H }*r3lYyv munxu3;) WȖQ*TBq"LC!5Vȱ3ٌ([a=l\ɮ MT=D>w8å>ZۉE{AF䤼D3ok{FSGi_Ԉ:^+ϸ.ix2Ǻ=IHR-|JL$tF$yb?5+YaܤNcCy.AU57RWT8Sv!^ƛ3/2M $,GPWcYr=F*n{L=ЯgIj;ڽ#ӼtQG #q5=m@%@$)S5j+U oqN"œ(-xDǞ`IKLG*ן,`& X VDZiPf@+]cQQ fPGDžϟi@_`? xGX5 ~Q:tf<qjrSwb` a؃&TEgiv3c졐L{;<1#o5ˠ4]LH  >,GF0im!'&WTX-}dz,x^=cjgS$dg.$ 7\򜕻7OZ@[/MAUZ"riZ@ C,W Js;ߟD<} {|*!EnQM˯(0Xrp>I1W"{sa|I܌Qs7y\+cq'8j'F /r>Ah/?[ߌiL CYBJH0Yef.Uޜ _ѴJB$cLd`S=ͬ*?3^:dp 1~<䃏--4Ҳpxހ/hnD{&z>.yLje؇NA"^š2w)|A'lH`o_oǡ.E>#əX@3hO&\ZہҸ+ER-n6OKJO?jQ*6qkHKsߡi^ mM2d<xų{֯WL6hA12JIc"A@knlQkR7w1?m:N0o! . ÆX{tʗBhD Gy坿L2DE?!H?h O7 X#.wЇO[`c\AHd%TƼBऍ ?!EoI0z%6>"?Ljye14]H.ZbܔDP'OqjH擳q+!"lpd\Aޛ&^";4&1R_:+4D<SIhߒ ٛG聦ͦ_k"q!~Ǚ\aId?;گX`|QPUy(c˿FGBPxai~K*k$8LʫmrmwGV>qָ@="P7L:R~(%P;$H`2UKVVULKY$J v/җr"`c3-:=CijF(`0tht]䧜#YdwPV#]F<帶ҍ6R *BiKs"C&*)5BޟtO 8}nv z+ xifnӂ Q-9'$ㅔTk|t5iiz|!>pYY9.mpr2({NȃFVqҧY  <  ~m]tڶ4Q(7?)t\P}vW&DZ :M=Nc 3hk~4`KrM7H>EgB _Yh5IC{siJuNygDffVc}qU_,-;Yt.配 @P W-[ƠYRTV_!sYl4GW͖6Ml=4%%M-[An"G. ]_"8;P!w q<ӛ76Lt=ޕ]_YL ()]oy1L|J+r57VA(ѺCʜ>' g: qgfU#[dk$ oFT3p%^k-cz?-KKDRSF=W۹S7 U*>kQ.3lWR*o)) i$Ӕ̪] z>)WW{&lO̗no"Zۤ%Nt&&i>1S4/iPV9(?VdX-s/GL\$[w!P>A06F 6, ˅1s񯑪LwKFbU]gb$ [1dao#uU},9g(pW>.=8n{O%7PݶmƟBa"fQa!MhFdmaQ"<iE= c}NLAY#]N1]H!r5'yߙSee0a"s≏)Ӛ9l^fJ5ןP.1ɑj>mH2hvn7MO % x1Ҫ`sg/&*,-]' HI_Rdm@ mZq@Qb6 m#aY8x{e_^VW]i!0 xm6UXg66c~ٓf:*BކI/oSCpRRVkpٚ+[ c2Is=VUu Ċ9hW7ǻ)>vL4:@2XAiX]Kی*RĘT= 0oƜ%8[_|bͦpjӃn*hf[xtQtGݓͭrs#Zd|?(ͳ=\/`fmW|Lη&'w)9#4æMZJQCVUe~뤭queJu K#JiBB-wTmI!Pg3q4D:)4@!Wٕtʱu3ȕ2`k|n]JG+-u.*o5 @1O|Ur ЌWOF e(׷Jb;vx׎%he5!yn? ް@dQ2)h/^8lГ?赠:bk$I GpoNxߥ7@A&e;j7Gf I+Cr'uj!CL=O][5N"*Өu;xLBj3ohjx)2z0=C01qD]ۏ/dwi%QyhRODZ|NY@V |Tϩy~i>ԅE?G{yGHX,Xοܑg3ύcdF&fɺg2;^N{:(@=S,ȰU\epŔ%ᄕ#>-68#_w6w &. Xco][es[et51AV--tq4 -}ˆ2f> N9?6o5V'\L*? furVF&U嬯gl . XU4܇G=!džsP\cp%I[xkI[VgmY 4;UKY;6:[P~Nr/b$pV=a PzzVCi$!;2OV=)ԩ}6N WcAn"킓9 8 Kl*٠1&ݜC0~X]ffV [Sg4yw.l45E?+ . z/ZvS't|[e/~[ k-C9ILFRkSdÄsh3c# zJPKptp Ѕ##`J< YQM Wm}l8,9" >FRw-@A90 :PKG| SKkпeN|c+êh1L.20 6v_WԐɈdvͯo(ژ 2VtUDu3@cQl ȼPÏ\ߕT ""#c]58;"Ɉj>"PtHW%夂=DkiM_F7@EKܵ<2 Լs T3_3ǔzVP*J4˙Y֥|dq:p&R ɂ%%8?Ktv#4CsT:<d/bN(@ueqg8־x釕*Jk} ֈa#$KRL x{YksUP "aU$щ%i6lgp\DZo2QvoMP#d6/Q%8H$jְg4ڛؓ}Jl= #5V.cT WB0fJ#k ,0qQq/57|ؠKZȐp|/y41Z, ?vb(MCۿgIrmkr5B{wx6dL®=bo^Ir$ď(QPPT_);cy;d!DL)<g$ѷ[*h@ 꼮T"U?]QRZ_43388rAc53&j+9L|Ǯ8{{!D#/C.g_q ©+I }l_,] ZWYR;+;!8'\LpbFLJAQEސJR ٰX[0 x"F }̨NedNQ/P#8[8<UJO#tR͛TuhIO.⋶YAs009:qrNE"o7 ^絅fbU*WTA4 \L(V'm`=~$W8 )Z&tjuu1M3u ު2%{f#i_J}BR4BJJ]X`շ|Eo17uQÊA]8{7>H^^eۋS|IV !¹Wy8qz{?_g۹ŀ]zy 8b$yJWVTލvRp /Im̋=Z-m"EOaQP1آ{0RL*5Vs V6TX1ZWA\%D 2aDž5e2rɞ$QT/Jk_ .6FЫ6%y( U:2uBHNU\t_z6kQj%Ґ< <\t${5Cs3@~5E1 %-䉲UuH/>Pi-_Q>崌O'GNƳ #r n6_IK.xQ\Z77(>DD,x§ 4oN/C8uV¥uqA\3S#M@{6)>JMjHj,Oꤢΐrpv^׃6Q]uu䀎?K>^#K]Hأ27un`#<c^atlS% QAdyB.͗ םAJa,'8hi{ ssVS"'m_}}kUdP$b!)5[JCʦl4y$*!ԗ13a~' ~>Չo͎a}DOԦG5I̕6.j^b&_Ĵr}w :feH\h,&KtKdߑ:Rt[2=ZDq_{s! 1Hc/HtkLtMm%)qKzT %os8Z+wp|T}'Lѓ03÷;thyiO!=@BfAپf,'kXEnʷw)f qA{EyOj.gO6R6D1'kp3}isÖp]UD %/ Ĵs~>˶ôNhK-m!q4X>Omu/rC:ɼꉄV\/VDXl``u8s?ts͌$5(h%n8{'֪kro8$THo#F2sy0)M!لz^Ytec>T놾Zm3zRae+g`-rQk,#.Z%zF%l-qs"Hv.<0_}HU;sd&at%Cy 5<p %Dg< (ZG=Q5>׉e0DY]BJ)va( Oj6ҷ LZP @$g[+:#@h1/Ywnr\G ,.71wK)SNRqlA,M@[)Bv< u$b~@.c;5>egƙэaLsjrR)$ Rs _M`xPo ٝ*>Ν"Io09p lF(Z\E^#u1bxTCeRa>|7z|,]W-[Mjtq>Owum :+ڔx#gV23@sWT_@,Z h:ҸS?FFK(>UWQuZAL͓'H4!tEae,VJͩ=][W @|P˸hSg< s &.zR\S`KF -r{$8RWq }Oc6B~ɵP)H`e!y^`Gc! U;[-.oշ7qw]@}'GE݀ZzDOS$ N9Owj'JtlNQ:u]?\CEԄjsHx5to[r$~/-0 ۪~MP|38T_hc{Y@0;KxDRr/+@;U1E& `)gD!ItӜS띓R]e9_(_3@Joniڈzjrщ%If$i4qhoіq 릐6{.J_s_I'hKJ6gcig&Q@Em)Zh( YB$B^7/iyӶ(sa4'"%fl9xFxbNas@\7: }y|g\D3י 8bZX ."P ȧl0, oG>NGy+\i+Gk+`uNJLIgNt4j#&^8WJPnppqD~436}uX4suHKpHWЕ3e7F':NcL& |4R;ZsGn&Ds*i HZ1|vIzvpy~qC}Fr?WWKGe9~0=QQi*` y?U6TTό@M2 NlKsދ#Fu=5a#}EDՓ@Q"bj!NvdZ%GŘ+æJx *A[ UG )e&jw s~)E罒0Z1^:UE ԣ"q V@cY`7lu[뫫: *Ȥ:埢{*oԶR0g%I646/T-!%F=R`D tV7%gtj/z꧴L[ARv_Lj<0p9I͠ʹ2dٯ8[oI,'x}.!Q5?niLZ¯OAp?eWu2tҖ5̘/wwV)`7%^[qW rE8S_09Dͭ oc"9͸ U8URS^!Sݦ{O5tCB C>EU&SID3>> stream xmweP]ݶ,Op' nmٸ[p  |sVZ٣gDnda`adJȳ3>SP:@`1#' @h PXX,)v s ' ?E)аuX\\\\' d **}VPK*$`5@d@ l 'G]N9Մ%Lj#)@N8ɑ/h`N7og) ` 4?3K7i-eSgr@WC)/Zsv:mM`?(#?i':*Q4U9D5y)zQS[wdQiMlMA`s_-L[d{C?no.or03/JD͓ `adp{&@???F݀&WmMx-K|Ka' Y &:/t@{_վf"NomJ_7"G-~}, +5\Vy gc}v{_v=-RƾM%°u#zy,IGܡ@c,)$;` "n/D0ںrʯL>!2xf$ uӬ`no?d T}ZI{5ErW:$wQ!9 4oM82iCG=X. ͵rNAVHO~zZUzuL2p/m=WZ`ɉCSo#[%m<ھ-=fգBTISBUM^-%e<fĒ[BVa,AqD헧ry6' V¢~J QPPC16rmI\ؐ]%kk\|Hr2zƹ2+z8.Ut{?K'c'KLsPZ^VWR xLp;*SEb=sV!Eg?#:ryJ"tkYPV̛%"h8Mhc/QO_$#(釡rs,iECCWY~'jސ_ O⊶{7? 82w&H?g7myupR0jy5Yd8m%8nwIc?MQff; x>,RplBsN~sPEnpu?٨&`H ]ߌ^NR|O"큪!WRD'=r06["%Ok}VZŀH~&b0 D砝Ȓ,D#a]AsD?r=M̗N֊zEzL;H}w b+nA%@) QAt[{G7C bџ~+= dB?*X%tyZC=t)gI±#\1͊uQ>^|,Ed?ذp; /U&) DZkEcuHcb.v]qNj&P~˝Svdb ,"&A(~O1ϴ9[+ȢB0GJ!:H'=z{I$OBt"<:)7Rs4nş2kkkV/dz Gy}$Ѷ"GGEh/Mi/[2M7>{Wc+Y퀔b͙madAMk^é,g&9'z#VS\ߖҸs K]ne2>H3 AuBpR|sE"_2˧~G_+ބy.` ]Y>@,ln-"Jpi~mh9@y3^&jqMk0ԒeY`#\DFBFeq]2~KڑW0J0jC'|9ԕaX1NZTTVcɨ!.D ^ffo(#2_a`JwV BiuJw?7X`ua7ϛ SB$S ;O"t0`~F0 ݯ71Rtw*!,e:Ga\?t:mcjrd]f`q<"cK1@ZJ ?AKgF? CX G!5@v0JJ 苿yDH&bz{ezD/7lFo@*MDD[Н6 '&9'70e(D$wVϚ\׮!sqGtdLALMϜnʋ,}n/&>^BPͶ i*QC܃50w'ѢSP+N0m˯ٝ= D 1XڻԲvlDI~N;gVMuX*B_E{lL,F~|kI r*\ΔozRLIuUKOS􃶬bM}쉔3bp,W$Ϋ,fz_xW$LmeT{~陓|=bҴ9BYL w]i@sJ&MW۔}`/*|T!-1èzo޼]#^& K^&gD'x'RP*%M;4U/&>}Zqڙ;x q4#95<[}"_ڐl ~ 5\%ͩgEِyl:VxiQpriYrf,|~;IWmS#껶Ė:c; f9X֮`j CjYsmET%/Wc``+䫱!XVLFBT%@5+izx!QLPBm[4'˻Fu+V,gkdž3DFhocyq`dt~5ƦJ2G'D0_Ѳyl׮*%\|{_Xʎ>.0)5H lEHuhagC`p{״D#& |ftO&Ũ9Q߱ӓ)RxbMȠ0:J0ڝra-)lEv4E'O!q]đ~.cW/Bfe鵒5OYt y5.6ג@J-FIGE:MڥL\ynd{h#zFgpZTE<ɿxlt/7b'uvnb m#l,yrM0I$GagUW>zb~+4!@6~7s xL8' *I=ZZE{?쭞SG EF|{fkA.5X-u:"UeG*hx&eP[kqE>dfeWҾvQˆMlӴ9JpcnkyV:PM8tlR̲./̏De4Jf$x WP=7 yYEGXm@+k9Iڡ(#7iR",[,m,~9Q#H7mVF$-@%f+/Lj\T# X[D۩!,AlmMfyZ$:|GfP[vC&: |.dw}/N.C/RW  vu6E "YѲzvnJ#WFt?v?Gb}]ˌEw,~ Pd3d1VꃢEYE;|~(z@YXpn^gms*J@NVgmDUS#:sR}IکЈ!_s3ס|<tEuڊ?M#W}J۵M?|ы$rs3 ^l³ޤ-eB@@Y(ИKʯ@#M/ttRG BgL||_Qn%^%1`5TB='Oh/(hYЅhhQшՖa<X26#\썣@ێꕥS:lFc?L| $x4J,ThIE )'Ճ}Kw}7oM# "\Iݩ؛S4ѹosQ㏙/B$](+qT<yh7 ٍ|ְXsų`b-ʹmǻ 39VS9FQ}R2Tޖx9xi'-FލG>깑Kh ˚ȢIo- >o{+ʰB8go7r2ʩa6'-s&qdUژ0lh6Ns9e#rW Pm E#+Ÿޙuns2TmR`|8drU[c݈R{} 6l_V} #k [n0ps4M?& vBrG~„Ժ@z*/0xA,tm\ՂNz8{G``ݟ?M"E [NgRIA=؊هs<̹/ze4Hz>Ui&Ay,Eߡ CDk91M(tFZ֨ZH9wHjctLonB.C-XcCh?yNjwnWҚCp!,9dsQOa} q|sË,/<*;##yjTEYa+` I\AP1~M'L֥s RbepmBB IvKNַN."IM ȭ:Cպ8p/"ȵ\ڟfG+C,Oħxy-H zL-\^glW%3Vs&k7#2밶 "w.Wxn$$(V#1(0#؂&U؟UI.%CX~UNoirb?3ԍK+N$%aAn[aI7bzhEXhlB3Q<]p#[ev.@XEvjSSȋYXΗEh"C78D~Rht֮k!KꞼz ?G>͸h y8E..dBXVP~D!ډliL/6 نFw6M..nw~o@3oV;-ݐN0^|<7QIVDpǑX FʇϲSS/d0ZpÎ|(nQYz}MES"$z;ҁIRH27%] ʦ5.sm;Cxqkxp^m "W i=&S-,=OI=1_7Vsodnќ)kG8V|Bݭ@oZ.ljX7%n&WNG#n?}X &f}YzȔT9MXԝKQwQc.aqyӮ塏ڒ7HkJ}$zwv6c ZO4|L_[ܻ^Φ'1缲R8k}%\DE*YM xHjrEؾL=uj8uvV]X {BdU9 @޸D@>f g&AAY';ͨQ&IM-)uMt/ေWW%jcTYQ`VKBg uzɩ z[:TDpY5T{װ rKj? ?cD&Kf `M僷e0ʅ\`~XG(QJ-8ȳ@[%nr/ ʩER{´¢Ѩyޟ0at}21a-uԙ$͓hT&f 9|MwMf?Z*axxMsj.}_6rPD[P^zΈnQns!1i`tOē2+_^+87;^G;Xsw|a啽<罏M Gnk~7%եBe>ߥ\`XS5D!*2̫ rY|cw OuִD9TJ8:oZB 7KQMnpfU6)@SsB 9:Tb!$)cGLxY3M%ō޴1~A_:2iIZsF(yb\Tay)T_3ᢤG̜C{ A%GHL/ƅ!Xc=ቫH?LA #p?q/nWql]*h։puYѠ.!„ eщs4Q6uvVxO 12O}ND}UcCs~UmOzzgO@.˩5]RN@*eeBKII]酾!cn}bbU'j])s|n{ %Z{CihiM1o6n/W4=bznLL=g^X;1|*C@V$L ΗԼ r?_\]#^ JNE;bKf*ÌPp'ҫN1 !Gjּw&# G>~:/B~%['56G0/:eLxDsZW'["Q+})KfU ޑ8Y ų䑀0|0|F4zUK Kyp`?4e@nچ}$HCH۵<6Lb4عuلqiK`-l.i{YO!;T6n)yjN>lgoFɎ?Ϟǀe1ՏY)$ ș%]+tREwXiQ(ҫ,YY66U~[8ǖdAp9K[ϟDc l.3kOyITg=m JME$2߱UZ~6B]-`є4콈R[͚͢;ͱH Fʣ1Ъe%~Lj'R8l)i#Y^"ҨղPMߨ›!GS_ -._ m-_tYfBx]j_{U%*!:~CɍLPw0ǃ" a_h@rúo_sbN/c]\tBJPi8'l-M42onבXu7f;Fw6ۋh𦼟%KU$KhI`YK&Z-2lG-i;6W p([nVY],T~=`~{$__aL;R~cCXA  O!c{vy x=G fhlt⏬#,M4.o&`?3WV3{߷.Xz2 woy\_?<8Z͠ĺ]sb{Q\þh1ߖ:iq֘{BU% .[.5͵G bZSɦPJ:PHME[c:FbU)_;YF+_ &j:ĺIb^.i.5}Bx7,x8_Lo݈ L endstream endobj 264 0 obj << /Length1 721 /Length2 11118 /Length3 0 /Length 11716 /Filter /FlateDecode >> stream xmwePͲ5]6CpwKiDTBQi_Z\ix oouu㖹B?wZ#\&. 5.oFJ\w3@1TX] ?BD ]QYU9D^%. }[ƏseY,5d.3Sޞ| jQM!o`@r` 85Ȼl.)=Z|>6%h :V|mF/`T4ohr ߸qF!(k6N]K(Rg~n%xZ q G);½M ;@ *{Iѥ|,IJFm K$ȅBt<% RHڸ)H€ ̋h!Q<'F+w`hHA[èWyǗ[(`~,hX^gIJ|֪vb{d5 LRĽمNm(=~q}7cV݈ġ}.uSk0eH!FX|oZv]M=2^Ut$K붰J }NP!y,t&yJw)cBy߃JV.4;"T\%L)j/3cl^ X;J8|KJA)%*̓ c%w6,Q 5P0? @K6͓ʧuP@mO2`j8N҇ă y Dq5xvKƙ!Qw?R$: wjEi>gwh[ǻy`S!f^gȾ[pawacTQ<8KL&u曝%ˆ]h٨KsNeetSv= y?Րt3nD9w%}wG0vn/ ɰt&e!`R \LؙFR/aH@+.~wA(.|{ @m!6CCOeVou[ $FnjPl^dj͢@nH^r n2G |I@榌VbyNg,eaI7fpw"yJ0|RLmQrm*a@9ur;8ˊ oi!5YOEfA©(x)=˖@p&ۿ"[Ny| G"FS~${f6|;`k]D^HON.ub.A"uqӓp:x]3i<sȝBەf촣@؊`:. #h`ؼGr#:QոK܇+Lo ]欟`[ sdɚ%q{ppۈ+\˔c#UL驮>'-R-~r^}>js{_Z.g&0[/=S.C1X*WcT|o0K{HyJ{ :q vǞqhM?+k7[4(bG '5J1 +|~B+?oŵN~Fİ`͏˸?/>L-he{Cba:iuyߒ? 23sZ6@G(Y//9Q [{]iZ6݋0d_x]*u?qT|̸ʇp'bs W PGjC x&τtU᠙몁{k=bbFH`.pOZS'5ö HgE7e4גe@S}ztu̗JLq:XUP. vŽw *_{ ꑪg5O-D@ E,xOR1z_qidXs_YAЌkc4qF owLS/k1G&> ѷ&oyQ {: :}mW>",ɤ4-~dQ]Lm%)b:S}>{ DJ jҌDbiރWzv 9ƆቺJ~@rG%AW_|ǰLCt52aȲ>1VGG~߈eh׉~Kj7X 8\mxY'0r\=$֣ P;d<&]?qyrxa#TXT'{cRp6|OAnEUu7T0xHZnDwϤ4jwl#F~ek͋ø`٬\;+?(j Iv ,6;DLs5mh𤦧ˎ_ܴT`y 4%w~B_SНĈkf{2CV}P W 2^5O-h~Dz<(!)k cf@R!}{vCQ_4 /8zʛ\8 q:ta7ȴ7 q A 5 n. @ TQ!v gTP5DNGn~3Ŏ. df:ɩqȈ7B\zfˢEe]{AM`mrոA]@֭|Q8?\eINf&k0N%,UWrGL4⼰uD)r{ VYݻ 9>NPޕszFjfO:xoƴsoQ ׭+ea9ƈeb{߳LSWe͎M!QCD|1Ĩa03atH窪ǔbF~Co8pҴlUǖwu== AJFTlA>'J~7,Oa$˼`ȕ۝AW"q}ҶpbzRxHjqZ/];0fn1@!g)J ]"+mkRINT̢:c6*3L*mv8<铖|hyɺ)yj\tK TSn:jED-EW\&C)dn*ɫIЭb M2D} w(́^sy@_񼣋6sJ6*ïmC}E`7 :"u14qNDoPπ&WV}K+Hd(s]H>c^y;@+3=Bh|mn 3u|Iǐn8~)fD\C̋ f/4%tH9RAu^~i^2U}FxQ.V/ē6tRi:̮9?w:E/ys.N-nHT^E}9m!n*kk="6z>0, ߮ZX_RFz%`xiM\#Ϣ<\BKպ=phЎ .Fp无f)&Is,Xkm ?$ѨÔWl!TJ X7wn&m*|YN ߹ݮmq.N3I{(IƾFd3F 5|;?Z+>ծ j@= & ϕZJ90pu9 `>$\.Ӝ|PR{^"PԈ&ZŊOdLđAAݹ_P0VhUhr[RwKnյڹ'a.3' M7?iѴH_SUJl݀6CrN Qѡԝokg-eyftd &EfWU4}3Ò۽dD1g{#K(DG=JvXoW+h}1Ugf lgSQϪu5yp -~dI29/ dS<pJ\ >jbLG4Ůy%i2:kuP%@3D ``BʚrF;y`KF~A.aq}=Y\1?Un=is 9A뛐*9 1d m|gsvNdX˚EsuBSlN=(/CEfuxlNn#&FK~nu݇^6(v,%4'ROaSw Y_:c qۅ\8>eKOpR ;dg'e;PP967; XZ5JG⠹x4u͠-@AcvcCe-S:E> {MiN.udq+&RmITuŘnN[x Pm4Νlp|ڏ5flΚˡV`w`gw^Vr+FE /9E`/?} [> K=ϞίQ:tɬf@ᘷbgX Q"n5M̋'NK-:9ǵ5{d3i~pRu xB,-i2Bu]7҈*}'Wb~#kq3Q8~ÑeTXDk9$ލ'px5 fuZC%O Iɵ쾈 S}gmGmB"t{|܅b8V @@^W3G~ua~;4'cRޣΎSeh]d}`XAZclY3/Ӏ[ԖHd-gsԑ$/E9w aXMK ѺT_kpIէUkUBb\'> U5\bT-/*yy\xVI8DFv4̽- e>]wjA*rI2YlZ1^ffo Wf}Rs.Z>f{R5n/(<{YmrQrakNYtrJs<1P$iÿɂ%礌Ϣ}3^gN_@](dBxw ħk-J`45 8b5O/VJMm]C3.ԡ_lCP(6Xׇ`7QQA};];F,yud\{,3ǔr 056)ç_+(/$-8RuORӥ`:[I^{!1otU.xx ݒ pQj} `c MAtd ٖT#MTHCP^7Г8TS 6ژc3W=p1VXd730Bm!_to%!Հ*P8^ewz$xM\wJeJO4i^,3RBsɂ2A=ߛ$|tc@;f2^ZLjL ƋK<2Iܓȑ& MP~C %AhڇPU eC wg|}q$8.'eKJ*l1 lR6M)ԑ̎Dԯ>[ 9p׉59:w +(G߮_$(娶(?,h@6{l{HmO cl'"y ˹/j*ȼ_z'/GJid-ji-M;8KM 23)ߗ55G\ƛWxDdrDIVyޅwmݟ6U̽¢;$G1OIS.eSY']a2eI;U[?IJ0k4y%iZjӍ"ԿtL%{YM _ҩ9` l}hadQ52;{$Ҡ-B9_Ui˯gq|Ne.?Ƴ!:C鵚b\WZ\k P2ȂZm(`w‹ CEoTq!͋ |C皎 Y_QIǢݕTXɌe^^cn@U~vʕX]C-'Y[#*x*,\ņJ9M2ۀY#YL- a/xG6p&6$]=t§'I>&-lcRǯT$rqB,Hne 'xfO9K289mH3IFH~pUd|޼hwڏb/1onJoƄ)?p;l5A;ΗCNl%!ƘCGEڮ [aw*-fxbW NRahf  r4(0):a#&oX";߀żQêu|P~dvb%)VlXvvGoyü,b Un0龸>lw+0 v+_vϴk?ޝ%}IIZ_զ7 d,kMB͠z?#SJe~࢝;Ɍ0>#o%)8.9TbB'9xI|mP⁞ǯ;)npfH(bCev`c#'7 )SrI!Tש7n1wWE[6ݜ'2$iYKCĽA!mV$P 2,h_i#0b*RUmbA/ۛg;o])A[pYi6u^%ҏG}?LpQ-GӗVE 0p@cMlQorr"=lFX$ }Bs@ ? 1?WhĈy=fz!!axSGjBǻs.?WCJEEQ7J~Z~݄JY31=XS^uKr034#,dՇzkB&R"6U K!; ժ/y|̥f%{48<J=)s "I0rدM>',jk!{wE 9 \. U+hE(h䝮Y_GZ Eӑ;۪\jvIGQYz@bţTEq;))BX YJaYs |' 70`ks2g/DNIܸ@6zpZa 6W#~oIx)2z#a?#gA*B8wqco`ExHgFܓq+hdB a3L۵FX<[G~ +˝lt}֠V$i6D*V.U( (03V1g SW8F6>#CXNP9| +8:'ʗ!%2H^K]g_nfrTuΠgQ4kn‹E!4獑|bfDD3m&|Q&ZlN[1)t] Jy~/bT:l OsşѼǶ`D 4B_g`Ҷe42c5d Ȩ Gc J8KXwo}EuU}u KbOpEX#oM<* 3Vz+G>@uY >yJzAYhD`K+mN$i.9hj˼ {"KiKԵ# :ՎuŖ!M_<r]2 47΋A:zl V fk_oe*A|;iS% ƲL"݁)uFRr4".ʱ]'WSkjalY 45.%pmɊW& 4nEYI[:6@ Ux0%S31f (d@"6a<1'!I jaFj Z> gJ=wvʌp x% [aӸrf3 xjwZ0hцUZ@p}F169"`I"{Aʬg +8 $Fx^ɶn,ԥu!1 {V"<=X%_ʲ@8^Qi̩f:-ϡUk.KU^jM}=?H;F.A}R<[Z 5yn҉[d=n"'b Ou0P Y%.=NS0 /c5R7RHME"n3JjZx @i:9~R^ݻ Ooh0_G(]U>'eådVdTQhز&XR@dxQu*F{@ +`'T>mP}Bs5&cXqmv<l*(eaq|?k<^]+읟$aK! endstream endobj 179 0 obj << /Type /ObjStm /N 100 /First 895 /Length 4662 /Filter /FlateDecode >> stream x\[s7~ڢuV@HR< f4&F?-QF<Ƅ7=67kƢNNĤ0C ǜњx& g]=ѱ‡N`5J=xW  xd-P:4dܛjĂ['A5&)bA{:xNar874@YliG a}.T󠙚W6Q`V c8A4h4xGWo^u8n`1>Xa8/tGHBMFg6 !7fS,x3ޭE=5kU뛝"]^];x.$7Aw7 [4][ Z-u)V7M龝5nbܾMnM  -Ē[O.z/Z t!pLdAjRMjLZuMXZ'6um@w شb~zJUq-H6-bЂh&KZ-cNf3-?fH]=oWDDF3+<zl=~, mUC+~6 _r^3lLۖx:}3ӧEm0Uh=1Qm?iV`mD5ѲYü|+Ytccaʷܰ֩ܰ@~aG0yt>{1rw5񟋓dOTOPr~(9?גcXr,?eaTUZɊe'|6޿b.YR\ A.u3ʵWHF2I+:BnkarѮ5CcI=yVDY_,ة jX~GM,p'E 1߯GE/D۫#;퐋y>BںL]W'G)ڮ_Ø[6zX*rCntxk6k̳%A޵=>A,QRض8[<8;/sSqv :fu=*m8ns1恇XΨ:ePx㜾Lw\15Èō˔<}k#Ha^85rZX=q3=_݄c+%!hѐzheh F b/>&G_d?4wiWL祌ӘxZzK׃c63#29"70SUm):ZakJU;Ӧ6QRj+\8.n->Ɏ4\ՙZuHYy3DCCjhQQ|"ҊJ0O<-cHiz{zSxy:ZV榳:5?c&1ZNVadE^P7'Ep)h0pbA=NQp͹gq,:~ +:EZ~:D MR0kFvylսLZ N=c__ڥ,s ̫)J%)L+[-숣^'%f/DSv@XҎ+*&CTkr_Ks^)jH}_>#O,1b}f/VcY>-?v`,;MSC9!,9) $?S߬5g3vnJ<{gmThg ,<̫ʡVB'Ad)v((J P(<ʁr32-3@ny! f&hQjg8k*}^JM([pz VyFW^\q+Y.`kF"]ӕk2*f\Gw=5&qtUvA5\P˺t"u1n|rШ5tR9 y2ȩ*O#5Q("w|Kwgd(\y1/;KrVʫ%uܟ.r 'dild_ ܓT ?( ,.3c֠zPGTB(gFv_`s2<sn9A1N,L`G{.<UjhHKLùnOR/s;2oHq2CiG%.y9yT-h>QZtUEW;edhۥVcB/wG{b6/>bٽ?w}z LG1nˇ 7mnď$Kţ=~`ȝ  b4:0sbGi{]Faќ+p330L ۑ363wOn?(}6Fyw*Wdk}457FvowݣI{ݍpԽގnoMMuvnvd;ܟtGP|uA'?N1IF9Q:W"\{]p|+դ/TBe{ѴMx wuEO&j`F&qpgOnHxS|y܊KLqqoGN;]L~.^=}&`?7篸P]s;O>׹Pϋ{_Bt9j8j\,[fmmDGc={ݻnܽ0;K~~0LSKcZqw}ZʅճO}c vKs_*ﻇ"3?Dn/WOf(}J!DiMI'(JJ~0fzfʆ;-NqɸX<#G1}>_(xYKX;@/ؠA7"J3ؿPxٽ;}qNY`GK-qY'_] endstream endobj 266 0 obj << /Length1 737 /Length2 24885 /Length3 0 /Length 25489 /Filter /FlateDecode >> stream xlcpfݶ6v6;ܱ:mfǶӱm}S_W׸ƨZDY PPUcaef03QP:-Č )@`aGwp4pPP12tػZX]]]\\]IR@  % T lJ.6&9K`f03&'s:: /&,eRٙIsv'hl+W?# ` 4covfM] ` 4'Fupq:Mvqh/?ooDH;C?420sl$a4Ut{gGIhjb%OMl ~X۳,g`fh,baFg>'Vts* PO:'nF̃#(A,*~:se{֨]e٥GC[g#. #)mM@8!~T|&`n#(F錐',`;#~{aY[NgD#GAf'0GGb{yMO TmyH)vxŷg(G6zF>k V{a1[^ۥjkLXBjp@S73FK;9P-{V19iİHNY|B6rL?ɡoŘGjmcf&m*y6DG,=:Hj ȀgsbPgOw'x#1^?&S w]FJF=aR]kWcHp}(uF.A {ɠ!eUx>_e''"cG vu"DQDk@Tm+<{d&;|nVIm$ im9-oi{|ql}b3gߥ33PK:H'C6Ĝ7,aj1rEF- W 7D 8k0m~ 6pݨP^;~X<%s}zO +EON.Ĕ^Kwڸ:w~ vm R$ۚsxWދeR<#~U7Hmq3f%.5#p nQߞE1@ކ O[G~^@7FL3Et1^"8xlg̔uaX hͧ*i* 1:.MoZVqD(]e}?vrGI^VqIޭF.w-e" ]K,g TF]y>49"I= j;B;u mw_+>f*ӛ |!cZu>.aWtv)2B'z+jLgorp#%W-Y"Q)soM2;T{9yYS _v Poǒ~ӹIPIƫ ll\t_1@Z{Uf|h(#d˧~WXz%`?0&С)j:=EMUxE:> j 2cgƏIY; C䁫عD+~L MEjʠ*YƘz91/5_\M*y~]ȴs}`=k2If E\*F8][Hi]9|D1-˾Azh܏~025Jdqy祃WXs ƴs,nϏf"H>Ʀ)RAb6b݌d(tJ#E/- nJ4q4h2e0|{(j12yוlR{iA.;|#4W5X`ƖoaP1g0 4S)ᵞb6W:\G)ą96é,*f}Of'[bȆGVf= _5ep!>YY83\ zGSޑn:\1q"#_;5n^L?o$v 0{<0GcEO-!o}.7ovCJ@OUf571`ZʑTxVHTt׊8v| WYﰽ߷f]=nޅH?.7(KY^eC>mnڥNW 9 ]e'@@&RP@ϝ, av%@i,U)gݣSD(Ҫ﬌P06R@3A~[6V|6K %geSعzJ eah3(~垕nvri ‡y\-T-:U߽k-8oS]9l0;-6ZdnAL|RкeNiMXy.by"~  -dAӚ*ݡdLΧEnhow= qFlH" -(MKEtaVLwoc )teF~Vk.-s?/TVT'Qm" /o@O߉Y*g-_e߰.Iۼ|ɜic!]N,<B?,96lrd%T\-m[d1~jCKaXJi/ݠ`(+smwꍮ,R+ knފn * ~ѥMY[!)G3/bǶ@qQfj M ޶GJhw 8jh\hA¬¢;[FuߍԮ N"!f}ˊ/x/8;sMo_.>IX63雀.9dSAH(tLHt(9M2>_L7"GA~&z]WkR-^Y[گxGC\c^{lDbJJT[jܒa#q-NnC&"C?|@ ͌Mmњۓ݂ST\)THjV.k9$7 3$w.x_vdkȧI Jϛ7ΙGK9oV,'SDsaş©!ܣaz{y#<9TL?9Y=ҭ*Mp?;ޫuKv\Z9_e`_j !Pz(>,+rBӇSxk(4y<&_s&l0kzĆGhyګ ܨBGȄalK̔lΆK)N2;lJUZGm<+uT#Li2MFC@v"^4,02 5G<ߛN^ kc}o=Q2U39#2wxFW29RƛZlX4i~+I^ NkS[0N{ *  >10;'{>JlƦsv'Ǯ}Gﮒ. OU|d>9TRO!=̈́OQQ2 ;AlÚ1[۠㢕_yTwŶxRF|r!w< jv;F$,O*7L*e9ZMR0xqWciO|* (|M]\h1%/1Y ǕF cEl6 _5?O8~K%rcܱ8J:{w;ki0֤% %qccSAlWU%7:IT>DmoWOMvKA޽l?PQtZV]&wBT ];O Vl\\Wb@%Ј GȽJ&TMW]PY|oQut[l8*KDCى#Uiuw< F+JunݪDjvfh%7DpeFҔ_m-dǫC.hLIkݠ9EZ zh ~C S˂J׵Tah}|ư/0f`;Z R|/6@H:<4X,Vwd0^vkkV}sbz>It*mg) : \Pbg%Bg.)K>F}-r[]Yp>ȡqԼцI(~تWW}qAa^:8 3Rl(.')IJqv]K:p]O:# K+G7buvV?a٢ڎx閰lZ`F'㮡x&/r])Ve1!,fɶ˰㏋򃾎di6u$iNp 7HXRb_Fk)Vk1 7+IfVqm"x[r'QjjhZ?͡?/9)tǴ-saq 'ηX]m-9aaRO;eD=rwsh#VogV'x:uC$⮺p gs_1v"bl'^J,~vVPtE؊W|oSawp4ap둘fgr8Hk-vvpMeE HDWONn{R[cwkF盺1W/l/t101U4 =/2Ӡ,^] _MVuTWPbV- O4m0/e" tJ ?EMx(ks/FUжuFY]:A#zD{$}mFաk>srEh[-Cs72B61ck;|⎛ n$qbk.C򅁟OV$i}bU~9 :ÌAΛ^۟L~&buY?_Wdt^L@6:'lv o; [VYktMQr11fcB؛ k=|HZ(QW~0.vWРy8-]E66N(|1)|wI~l6fvm`xSHh4|Ek E]Ze~f}?o%Oy]{L?!NJ%8z1jT;m07`IWr;Flq5Loxj o{7" @a'f6!YGua=Ry51@ ^MBj>.^~&PNr)pJdc':S~%Jj ZLLJR8H>̘DGmyˆ,O "좟㙫Hu\^l1(.I/_SG3"6($H.;q0v{]ڊspzHʠ1-bVVaW Ut'++ 2da+Ƚp&,,"l]rR)% F&b|#\OLhƩpgi.K"R 3(h1"{WAp*$gXߥ[J2_Jw+J1xv$M,hIK.C[  lijHVGڢ1~:$-ֶ" Ӵ  B ³l>)W|bNLǀjZ3B<9ck]s8^8[@0<{9# @`lM)7dY7O``StJ V +;]"7ń2AKJrC%{[A)o5!Ul%JVسpP·)mI)lJڷVjn!/j<%C݂quW~eݴ'RsvZ%/&[wljR6 D<ӏd4X(`͕I zQ+j'!+nB&~ڦwtbCDș ZʚOFڋռ(N6wPLtKT6b$Y𿚲,(GוrcIpc24n^` ji% w j pi| ş[<Ǥj '\N34q iQ$oBp/8d!OS tY}`&lՐ;#=f)<0ANO[b\W4CQ* Y߁<$ 8kAm1{ghRrEaW|`'3a9IyB'g0O\aY\y8+G{4_ AfI?Rd % YM-kåf4 q,  G@Q[qDHZũJClDC=E.8'ŽoL5J=4寏׼&H!>gAHwB$5ծű&nw.EAY'Df(E ja˼4#?f愅7[Cɩ&*`tuP-ب{ѹzzHqx${dô>K[}s!/\xM"c}nUjlwhJ:]/X8U렶7I,:nLEVBi-_'|T؞Pc.յUWD`bȄ ᾝuLj9~Z7lJ̡o'' MK9FA( v{OA"T֩0AŨ#Cu"CXӈmK kuX)וΖ<4MK?&G6].?Ǎ8a+oYRBoU# F4]d&W\v |f}UїW@*쨅9X+H)qhFJ9V!әQ`_p+Ll/v-yvJ>š]k;'T)K,)׸34S] oÎg>R^eL}voCQ4\Y_paSsHf~8cÞtdwk٨@lHw6!OdK(^4_,/9Lx#ag{!{JOm :,5Ɂ3PE*){-7FB QRpl$/ Qe߼&_ҍ @%E"6QmEh`wSǒ$96H8<;AI1KgN}-2Jh'=uCR71E'ѫu %soMf ?_XPe+GR-6xO{uy:9?]2LYSFʌ@^-ˊ<%eԌ5 .G2s Mx73ZYI-w*QITXd) t޶ 0Tɂh oF+1kt꫽DbR}8vǰb6sz`V'hKͪ $~vja[1q#;"xdԂIIEsV]Nklf\rwv?|;/O 5$!~S>au :QIn|pgS =۩s3OG =(ić%R #.!meNf9J[?mF4/BMy~C9CZÇ)zV7:TAE^*&( i 7}>4A$д̒\j]ID3ܛ"'`q)v)w./#82z%fC%' 1&.)}sxCf%L#p.V,̍uOg0?BmuzмNGO#tu^d.BTpGm͛wP~xM)I0;=KVI Eםdݹ:{,``ٍY#:J0.PPB% 4Ǯ+xu SJj[J2 "HmVQ\~N90DW9j^? ? R\ۑ:u!@. jk)̱{1-yU틢ҊͫwFMap/Zal3أJ49~6G`%S%t3A yjG%킦}҄}an榟\h1~ cy`F>#.C ##ZFXx]FXhx&f3F0'[?.є+KѾuv B C$ 81-j (jHM!o`}~F׮1'z>8a>SnS2EW`B{$Fm[BЗ<>UM7nFQ'-;={ŁڕkzrlzUgZ]-6Yi>))U mrOx @0|c`CYqL']}X6r:_s//PC=W7\i&zGq_6ҘlV;ڢ=mjb~M hثsdaqƾctӨl:F%;QfʗrgB+?̰ᢥ#S $.ͳM;&cY17mhuk)*cM(5RۍDz3(1kv0V)`quXlD; ֜~`AQ` : r@'@ANCW h`<=J QNg"/ywY9qrچC\v673kb(updgLAτ haOhq~&-1fW!ƿK-{zdp;_=2TRmQ ΆxpGk7$nAjj3/e[J"oNP`[2w% IGm9\=|F6P>';0)ݼI}TMK^-W,?C\+FRoEC,NE ۡ9p4 =u0lJPg %Y3_0@\!vq'URnԪom]GJP%N ĂMoȜo3Ɋf!bB/}3쑐ÜoJ>i0^ n@x '!;CcR"x~ԸR_L8cp<)e (1U.sU*bhF^hm+o颒( y(x>0\!sʨG<\5GBl@+NlMe @~ f;v!qI=+EZV*pusXl>T~Z `njA@yۀEy+#dAo5B+&ѷ/?+n8uDVׄh(I̯^hӻI-"aozBPG@!؟5ns[xN.tHA1(D*RT̏c;;+\C#w<2ca篫ި:nrod1oGH9Ub`HM{Q,=Z:<\ȼD6O4Rml vjHWJU{nJ܍Q;h5 u J~+#vO02vϜj3Cjغ; bݹyݗ!7 sj->XQQ^lFe&ÿ"G"6! yo qeKHSl2lS R~i,?MmڵVדŜYmC}M<&|C'KH9_IÒ{`|WjgCQ2G< `=oFHӯ4ٯ^ѢNC#˧48YM.Zf|rK/̟ @gZ.kT_-&B/Yܶ33"5 "&N)pXz{Qa*: q|"AICz!F>Q1y)h,.$02)HlL0#\LOP_Q'FI ʟBWKٙ "Oc62n,cE !7R{Kϟ^X = vjhA'Orʩ%W?W!_ȀP9$.kaMSDA>nH2Uf wB i]Ÿs5ZW\]d]Hμ"S0g# b:97& #E{Q+Q;;\ߗt;xg`F=BJ|oƘ<"Ed%? cE% !~.iխ`̈d>Z[T|Є߂iU{(dR2N!yC&]Cϙ$2z6o-kyg¯w>#! [B.=jJ/ID~ y8Ki MH1D$8rl ځ5#M9UWY3^Fܧjj, 15(3(t[d:"1Wű'vdz@wxgWzhpC*?2ҁ:όAm7R&vRo&?4Z]s qUȄ^kvrj\r,BF l%o^OS< & |CÝiUN#.[!(gvoYf؈ۊ33CKFaVDjd8~HhAA$aVyE!"#1N 8+,5h9HYo{Zugke |MlE ;o^ÑKqr[5doEE~\ƽ3r>3]syzɦh%HS$]ΐ`w~V ^JCOUQŞ Oz`U YNRh%撬 3kNYkT~Ge˛5ɢQ4&<(ZuENOEK !#ײ`>ijŽ|?6 O]+ܟ vzM$gqyu=yq,5FQǽ7dJ=[qa O+pK<`]os`kAfA_":]N9J{#VHI$~[?&unbEM-*E_oV]BsEFl|=@ap-_[R_hhL,;tDt'1(+iT 3iE4qf*!U2/S)r.{_Eڅ+(BN߫ol5&/]lltPŭtג# 7 o"&#;¥g ©!5p^u>0|XmYIJys)W5,"&wiq"]J`6'-4h'rU|^xCwJA< CR0=ס.eAoJnyZlb4@^ݛ-sLÖn:ϱɽ5YF ~$d+|r (b$ZA&Z?ELKHK`x&$bEњְ8+uu5J.w%Zǥ%ђ|P4h. 8\5Ub 넭QDYfMьf['݄g+ Kc!:vteBIXteE22 Ǝ->,<4>HH6Љo`þQ2Ӭ|Y`K\=%?^fv#凤lM_HJ$±OU-.|) ܪ*ݸȖDS/h E@L04PcPxt6$cœ:m:~ Y\әUvT030F*ISl `gثk{u>sE}Aln6-H*db,[5ؿq^̶ͦ {M!g̛602Y6 CB}yϼL(GiL-CB}VFjjb$3nx*#t]kW2vqb,_#< 7SGsۃ\ i8wȁ_}Ꙟ$w}@f':B;^bkis.qy(#Gۂ"⇟<^@D,5X├[eXcM"]e$7p  d<1q@ ޫ؞rʎzptcA5 cYh}Yx*WQW|jW3-?䨙~?2sZ?Utho0Cl8+i8ćaB( hN1-O)I1r{iDl x1SAnAC2Lt[1ՃBs+{rƀͩYƠB~[>Ij V/ =%uSy_1DXITf/׻懼cy|mZAyp<ꑸI .A3ΰ'ug~bAk_rٺk{ĞɘEb^|`"`Nq/[;2/'P4!k{A[i(ZF>S08Eؿic+JzRr`t!8-? LҴ F9@dDt/oo?QH׽ ey4BL@;lJ3G#  GVzb]Se-n_-b9UG &]8%V3Fyҋʎ9 g AJͽF Q'_O蘳'c=xl0, >ñdy"am.zUOС0o*gpawM5hw>ЭNYҤPTqYJIq~LIH[͎|)bbLg{:3`cᓟ/qR}TV )ɡnݿLwMxm˻ɊI"h5p&0B/{n5NO /ps8 7NjԶW9# I :T>5ܯ SrmҪ߫M[*H|nZ/]"'Iʂr=<60N(8qAe݅ڑP+&s1ʶk*)oݷ}E1h$KBد&M7gh=( Vʥɍ#$W8C3n ^w^vy\-#C줠 0:SN~CAe@(5`v쎜Ќt,efz67}oxJD[ gNB 6lBeZ&~/#<8sHc"E,wAD< @`ǒ)HYo&crt'=/;Ž]ysȰ;6v>qm?L}p4:9jT gdHIFᥲX>@͵hr['(~O3}Ψ /%I%BAuz d)FMm-2"EC,ػOUNj 3"yc Gox+B\Y+J2csj-ST+zLY۠ѡ\.uvB{pϓtA^ $T!2@ ꦤv_ƋmJj 2inOFOX'QMq&"Nܬu4Ye g:6y؈L -PPj]Fg϶Ń-U*ŮG9"BM gX%b nP?|CF  H79w*.:Jj LVܒ:gGk^ܬE% NkTM_H OD"姑v~ pPCE]Gl 5@it~:=Ft'e^eMm3,.@ULNKK$^eG(#D/0 H{+NgKg f0ҤI?1P3l ,S&nr!]u.=bΈfCuO॓N衄X-YY q_sύD'[j~+K_^ɾz< Knde-_fD_ǩGdoi^XĖ”]$8 Gib4,"QVfX O@,}u|uڕ#lKK珤5 un>g72 $gNYT}#1<;تOlV[>Y- #FIB yU~*H|߼dS[zmv H`88K1z*}h<,uϛ0/YS'?yJSkؓEu'Ҡ2R8?eE'p;.8΢RͳI?>jGu0f5 LMqF\QJD?#Pu'n y:t+Fn;eȜT`UV>xgky`"zOl1+#|isauWNτuX+{}uAvB'|ma~YPCxMܣ #k=#i=t?m(z7vTPE GeƑK[Yme(x8lJh|i|hjƄ_Вs4iT1Db1~F8{ ^鸟naUj& @L.w4EyldmƔ#dxGPs JoDhȊLIdsDMcW~?JHh^#<9V)@9M3`C9qQ;U -^=k=GN0#[~8vNOu2o8bx~e:y1!+ɉrWd7E]ⶦ8%ߜY vzǙv3vO3(9KiSa:w'ms7z+v{F$bTibݵ,?@MۼEjG$^gQ58;8}pnIۛQUjp{cD|Zҹ}7%5{X :JP$q6-h=p?ߛ[#|N{1= ¼rA^G'ߒjnsm"8az ˱+,hS!VxfL]4fFw-5:("U7 5R,9S [-s"*W86er ~^LHR~b3 pye&y>]RUܶt2Dr\=i 6z9_ܘ cqɜCu)3@x~ !(t5T 腥pȘ\jr ggU*ppKQeVRW,²dRBQw:8[L@n%r* uk6$ќHrXBRsA{AćsO5,=-oӯY%*by6ͬL$O5ZSf5!_BVBH'ϔDcA`F~þqY:0Ҩ-z!ГjyŖ6m[}Vܗ^{CԍYu ᖤe!adE> #P/iNb#ȵ(~%A~ȔIo7Z "HBHM|yuA^zjw.lMcU럀_/#/`F@g|f[}64G=QEezW~Rn~G5(F][ﶞ{g9q[ݟ٤\v;L^\O? 6m*F[zQɖ5~gbH*  @? [ @tIN)8`hkX" ;5^jT;Y]F n=,T|~Y(%&=uE0 ݅V͒mADԃ9UNC`!UnUv}*D:* ;dV LQ8#d$LrWzƪ(./b2g[;.r W"M<1d۷LUQ ƂUErTtQ4pLjZR`H :4Xo%Uhe+ N\q+,(hI~ZE<}җ-hA ѡ葓9 >!Q0zIŘןۯڟ10~s`Xń5":4/FTzŨ[C odɺ_&Kp?hY )&h! @01*}?7% Zn;6 _O&a߹"W# }PU[w'H`>Jm"4 S 5g3|8(ڴ!aĜnt=@unB>%}3 (mBL6qoe~;Nr0"w]ݛѦ?Ә}ᥴFV kPcm?o\>G; {ΐI:nw2ݦUr/{ӶX+XoX3g9spʏ;?3PXq`B}o.V(Nhj|bT L $;|s2>N3uOL<-rv]sAR͟'!nTyiw}%YJ Vw-q NW(۽ qLo[1AR}ʊܜɬo6Ҷ{oec%~% 6Ff]?i> 5*ZP֠>rfK7bA+ "+e9!oDltz:a»DE!zԥ0loe7ь Nv{}U-=/[K/ht 1~8nO62){l+ znw Ck6~´oiYyqiey)H?ׁϴ|,2>|D\pBBgAGcu@aImF<ߦ$2ODe鶿upjVߩwDˇAX ;m¡oWVZw,As"o^ccCpGSǟ mݧUiE߆9ə!)l"s=y^*"= Té2ZeN= w4leg[* *>[?6$ Klr)_ 9vg D~]AN%?cE\Ao$#}ca% Ix<%niY fF?xoHwWk Sy}PZ? &kcBV <\8mOV!\eP_d*Qhܲ"?=MCRg B׬N!ۼ}PZ4tz%B8-Ok&&nq=DCߨ6UUX},l iO`8rZ q_W݇63 >>U"f; - _b۟*z! #mYi2~,ߦvIq- |0>Id2t O{d+fՋ0V?Vc5^6U@Å]m-PYg_R n wՁ]xDHso6 hi|) D74d= BKhl>"4L#Jwv-\lsK$iq5ˀXrͽ;լ))=pvO5!?&aIpePUl JOۑYчѫQ(M (RwQRc %/!g_FA&ݸQ<7)G'6L@d:Wlܭ]\rE¨cn04F jJØjoWܺ /ћw\p3UsNUzZ orSFAf7Zh#[H3G7!f3%TJeb1t?IA %Ȣ 5RPO\0f#{[2I`9}%1ͧI_3Vy ec9~jFjy}}zʯ^X%.)J)KN *Ϸ/9 ݹyq1B/}M  KHh..A_O$5l=2nE8A"=Ph?匮*e #fEogD6Aӯ w; Rҹg/Nj捴#@~*9n] p5kn."mx:ETԁ/]-l0!)Eui*`h@^ӶmL=jcdҜHҍl)ZW s <60'Nhx3F,, ; =gRX- U8bi lJskgTy\'WeOW;]s06Uسx#aH+fh<D.bb.5{֊q{G$,&PSjr<[!OX3bZpCqX%:b$IRP%r}MD@.mQXX4%H]u:AYmr6+9VVޯ4]qL+ ?= My,{i*i:LաG'V D4G_tWv;UmDa!}KJQ ź~dqÒDy)r/QgyYJC."JTWp,bl%&[/X}h?^R endstream endobj 269 0 obj << /Length1 726 /Length2 24886 /Length3 0 /Length 25433 /Filter /FlateDecode >> stream xlct-ܱm۶m۹c۶m۝c۶Nv}}7?VUU?2"q{;UO =#7@E\UHKF&4r5rr4 bdin4ncdjikPw4𺹹 9;3HXf6@RB^ :]m,M&@;g  `o`bogj?99+;7?9TUb" "#;S?\AM\,:Z$HuD04q-`7);3{ͦ'!P!hFupu:MNv)*_/" 3::&VzF--=.nfdQk:r@SKWOEeՒO-fgbojigPqQ#'V4wtҙ.gda&a%bб03X8\,_S& hbobV'Vfˤ˷WAZ\3ӓ+Ɗ7 5.n}Qn*cLh)J s$>aKy^Y5]uCMdKi_B`slxĿ?O7*?Xd $$t|jڭ=T^1g mW{zR Ga*ѲTeOYnˌHlvi<{*1_Ӻ~ӉuX+FFB/ _zX܄fln$W]{jǷK7|bN]lя1JIhQQɖ,wЙ*:f1aevllYy[?b8ؤUVEgK6[&3`O( >hIf(p4robBɩjW碰OCjSwC$d_L]T%"Tt B0 er]up})Q:OkIcdK}TX <+dֳHȺy(cQZ؝,{Wʕ:uF4~2QBO vcDD;,>1<(z==y[D]Bp{q\Q3~)DX/ll)_}(ľI7Ryϵ\i"Ýͷd*~io{3'],%(sЌq{ eɫa`Z{\Ÿ ӡ<50vM|0\BmOיnPRJ dT`P9ǥ%*WkFx8޾zm}]ԥ;&|MQ$2>a.a'oU!׮I n6l"ɭa2u,~Z.b?r: @!v¿b g@'KX o@){79HɢrH3# < >ǶHP 3uB9+`om=~j)V^ G1 ߎu)R=%:J<8RS*(@豒{DW:l3aT<4#ep+m? .uX|[KoAxcՌFZo2Z(NA8}Okr><^ec˵kZly:xrފ5[tZ'H-Y9'闷;mgB+Fc(\ӘUN!u=|8J%yU8^Lǿ~;AD2 .9gh[*W!>}lsD#ё%mV,IrUinKb {UtJ[-8Ry \ϭWa1f>w2w%!UxJ 6l>p; Gzhs6>a96U<󭞨vebǔAn;؁8zv^hr<_n$,:;X~$2ua:M^"j|(~z*&˯҂zA%/s6DULu!wf+f:nv0AQN'˻( j"p,;1lWqTR3ns8iw"O# f]. /#NKit])aX5 9rOs <=j[S6c:Y P\Od,69Cl`΅[JZ]zڎ~:U~|Y3= +di)ÏTqL2w3d,{khNKe]Չ 8t) ymYjD7Q||e,qiY@\ώo<( JɧID ׃MhFO;?BȃbE/iZ-%3 &oXs+x#>kOG W8ܻ5K g/[È\fxvMn6Xo]p:3d='n I#l?xy(h){KHFA0ˏ%ƏD9rD~y YǮ^rk1CRH\hö\Yds.ܝao,v#Du?!*\`~)5Hg-˟$Iun7Yt8O ["^K*k80G"S*t Lr4A.~Dj[-(M%m!ElloI";NQer:+߁} tfmpnr*Q .uNYXلyg&c Sy7}^IV8sl"H1 Yܘ]ȼ %9PD$0N=Y{Pi~MY iG)&{sNT{y鞦I+I9cpRxS~_4XA~#9:~"aHِOdF 9Jk!5!`F\?KY&D *mAa;^AnlFwP_E=zWg,c!{* He^.3R(>Ӟ́ZxAXKzrW߸qԓwVәު=(j|oQň~ 2Ϊ C笚e&Ab &j7aoq=¥ y39kح$r&%%0M80a++Þ${f2?{#I+lp`o'.\;ӀwNI?@xBH92@uqQȊl^<-~"} | liRCK=\p!Q8=Mɿ(qN>LJq*ؗg \}˫tAg}hzOL/EoMTEEzO U|U's5=cCc4+X8S =u_`qÐ҇[DxWRTWBe/ {5޻Fw1#ZFc-7^+'تjyq-/5^ 0.OAy=\mZOZY9pYTlR#EP6ZTy5ׂNw$k*5BV[&(T0Y+[p|tQ 5j0HA%) f$`rMHEX C!`dܡ#)SЋ CE{I6Y6{;Aq@:^ ^- HS2VU ']\`${MSe4p FlG4-[h!Ar0p*G͈\xMpaNl& <*U$#&8H2=')CZ`[@LR!!,/jU==iaGK ̓4ŗ2e.sNw %U2_08pbPde==Qe~RXحcbjE0e1uEsA L-u=֛aup @X ig{b`œ1729S(vփFnϤc!t D`}b+->-J>SrVXKJĻ2쬁| c1Zr_}|tq%,JtTHsf3ap+p a_]dXPϨ+-H`bѮC[" i@S;h<9Vemxt][gḭB^ ӡ"aauײ Qb1 6>0%G %h2]) ihF=h[w(-8` /A%R)< G5\U޴Dy0n) U3Cɦ@~ Yg ]#рa}鳀%4 )56eNgy ͬޭ%}Jan2&Ku[Vݛ{h>,2XH ߔ)JkHu#{]+ %G7OxzBLkᵕs /@z{ .4RcVGY7Awǧ U3qʦE.0[[, ܹ2@;D-P+aEUj^ElSVN~qGK!] ߭x#l΃: T|D5Nd&aq=MrcrGN7"$^+Н6VdU՗6+:m?y3P8I,RH6Fhga2z&{gh4sOnr_{s_r 'qhbj}؄b.?18~}$M>! _T\Q;nXVk[xjzjR`ivPkQ8Ry~`-$ܓ; }bg:9X' }u({ݷ\.wYW6]/QQ_=CQ%|* {3 M 6I5J.zS+c U!j^wkfbdC?#tOL6irز,e5BI{of{wH>Dl RE AبӞD;&ru[5MuI*:#bFkױHw\x6|yd"^M:+Rv&Ap2JgPkWvD5" *ar si5AF;y6z:v elҼ\!Ld A:3ekH:gU G]Ώ!j|UۃU]GPߣ|`S&a Hn_ ׾i8o>o!7K^ {f{xOۃWXw}yzt uk|J4K7st*Ϛq1PϦ8]M(aM z(&Qvّv1{96[X۰[p%fy!跻+#F73Zc]OwOy4EdzClw.|qSZwgH{:}d |`d/6]u6@.uű>BKDۄa=o 4행S}\2hsA%tp2V|yR9U=\P+k5MPUvY/w4eg( \ݱJ`6$nodaQڻK\YDLQI&v"襮GKG-qT$#[C3_;G4Qꝙ J#h㦻Op+l1ԻP`y |uć0Vta'}@ߑD3 HgfH.>4a8!nf8,Y%Pd,;u(J>ĽUPձdԊvEW'cs;|d!-"PE}SQ[sQ^Vjlk Fp  5IN,Eb==yN7Rpw(94 BR2M⭩FOkI!}X?4F#cMWy:.cAw%P mB1Ow rhIA/%guٸ9+^z j`#|l̘6<Bxelv/MM m}9ًB}׋z c!~,:@8JoŧQ1?g[԰/4&6u% z7"w .ӍmܶnՊquA;3т;_wQε}o߷cMO+/mS%r"ÅR寞;g;x7=Q"zj6q_XCNFA[L1ʂh)*SYODNq8ZGם   ?˪/mbȞB޺+OЈƤ=t:_=_Mc5FigduaƔ E?z->H+/e"=3Kon{^1cA^Fa:?#WiS Rfj^ .U>KWُf(#@#-݇:wvg:2N-`UpNxej84rqV+~hi3" )J (s C:8 W俚r]a>m`-ņ5+ĵ:b/hS85(c.)ނ ڊ0/ނ`X }љA*`˺j88 ԁwHS/(7Ur8؄Ϻ|hv7hP4?(kXĬE+W%(_mNrW6U?7S]QjByռUHa|0\|[mũfCcbF'/42껪%i0o5vRxR+GmCznZE nm 'aVMM{uv@c6E#"J-vF"e(d5rnc&H'ȱ\>vDp_Yž&rA_FG'nc~7|t2 ;ȷR7u9J@Jb {jVFȤBt+e& zv*<-{k /6ć)_/nh eFtKPtne2ɱpp^%w $mI}Hi*U9=&N7BO+qk_vᄓ~/ҩi/N|hjw㼄9<-x/˪[}JnNxSo4p`@+} [=7Ī]ۤ Uk[!7 3QQm,5ÓFja,jD{O.+vȭLBoKʒhɁMS8upv6d3 $Y  o"dz(wRy Z(#Og\i9TIЬ  [͑} v'jsKvZcޥ} GJBܧJ,jt^SГELO;DI 8 LNu|qX߇C{T$Wx8yh$߈x[*4TcB>$hczFz?>|~W"1(XHAC5kQ vE"xfҭ' }$obnS S;UaC*LK9>`wlIX+G6H%}op&'oYX}lAdžo9F'TDh O~,4]g:-c,,^:;Z4IEgi?(kOԒ*nT% hNK~i$:bXIx(̳bkdw_L2:{4xc'8kvoe"|by/ZNZ`nOSAV>p9M(w j_U aW7.ɏl~d. ]zx4LgG8Bv?%O1KQ)9WoHja\i]!l 8FhL 7d:YwEm,o{<Ģ#P4_0H"rreV]OW9g Gڥ {?f2oBiMVU?й޶M(6+=Mٶ߬x`>(u65oCyӧNEWX~7 α3k-[ Cw=oEiCu܂P-C|CA9 d`Lƪl!lg(E7b&8dmyum*L5z Im*ԉ\j$$ҽ ywXpSuOzx  }q:s5A d!$$3҆h_؝z)=ZH`7`K+F JlyC2%NIw: rpȭ\)r}'S&7ϪD/0kjyEyc5ŝX)KI~$s!Mjuy(3,:tR?](6lH6HhhWZ-[vO[GDd[~]Rk]+A!mZBI;afUlU1Eŭ&4Z/kjdʎ9 j/%Çg Mpb弟#WL:Ss?}? ?f4[c}OA'vJ26(C?=;]Kh'@bR_%/BZʄ!i\=-6 A敋^\$-_$aDY0.KXn@fFbMXhĞN-oRh& ŀHu&SvArHS׈(ucۥ̣q^ B!]>eOiF,dv}.-|:ͪKV KnUR#qf;W .U/p{67bTEr7һFq_ UvPXϮLi)-},Cj?_o:C/Ԁ -*fw!{*<=mlcrsLsL P?(r ?HJi"?=$QMdWPt@řD?J0dwS)#ۆԙҍ}kX,vw4Ԋ'{.5s2w "FKLDE2/fh:rd=rBԇ'T #Ț1Գl} 0-2Q+ :sR+CMxP H&BjE_PeX`4ֳgOkI1UVB;Z2k6WmOe߂;Ecپ!!w1_yT+{x[dROi`]l=Nk`QW>+uwE=a:Aew*tkٙob2'eCK֟9 ~,>}񻺬KAQrC=ĭpDɏ49XdIل9XB=򔮬v7ҼuIY%^z{y|aߌyuJ051YWE}Bכ[諌ΆL۠o<{t*lTMeo]-(3:.|_3z;M~-Ih20~ٍ@wROƨ\LPIMɩQ{GFDmQV9Fgc$p@K sB 'pT#JoܩpQ@-̷Ԗ(yYSs G7l)s'w{ ߓ"bBr3'S[SEu^s$Z,. ]۸`D=Xs7L"!dEA7AA|#KlDţTktMŦNe I]㴶m]dNlw Er[>:S=x VHТt Km"@pG.0O8͎ؿqׄ2{vMW1<*Jn,m[%|}*J+vɔw2|W Nue%OWQQXjG_\w4aDV$V}#o;3*V5oRO6JyB:cUƊ"On &\IGxN>Q@2ETzMF'TwmWDoW 0շԂ|q/Um=}L-`Ĭh-Tv\%/kBp qvYuxOuTS;D zXGX(.F˕mRS0+MZ5mOX,f!qcV};S7 St:5JA,S3:_s:9r9 nxP#e$˓)5jP 1DQGNϢHu?2ReDcTncqqcG]dp@sUVN[ɲf@J~ުi?a0_sm' z'Ѓv=,Mf<{o:=\+- _?fSp?M/e^ڌ3gA`'3Պdh4bR;S^ ;|4SwuzROU! өHɫ4-3J ?i!%fcz`a 񋀗a+n12g3|Cy{krڴJh [UKB䄨 JV%SeioEAPb%;~Q<ޗ^75S㤒(ׅrOWx,Tm"S ^ $e&C-o6S?gm+`%AR!&Rs!A(*K_:@k)49dx W@i_]Љ)ίÅt7F9_eW3&r藣`9Rr! {(Ƿ&Ea[}:#K肿5WVB/4/4y tT(4P?tR q$J6o$Zؔ*^ ٜ/4hЧ0+1-gf#vwAR䝴CQ_[tXu";?),ԣߞ)ה-+ A!UZ_eN?  ,E>X::O:'0+yei !)g'tM˼'-/!7b.wɪGURNЕ͞:B A9Hݛ<07CO čh9Zj:kecq$~Shn?Ue`BSאl?rE\On=>m;sKݝA̭ gI rs(PO#xYxESQnQBjK`$`bKs!`" [CmQh0it[׾= 1D4h?'3Ʀ*rEnQY7M'Pr/0Fڢ'}~E#l3I"ւh[6m+=7h+@݊ꄠ<'ydWa(~"!i2쾢@*~5T .\vCjZÐeYa:ۮ[c? 8ff}R8BoH3ij76&Sĩ.d}Tt]?) gDIWbh{DjѬd -NuY_n\mQڳqN6iTq,lf[?o:8ϥeC*|Q5/&8;&L';DiЋ2rIΜϷ@F#Ix]Q6 t$*ddHΙoJ SHtEx*:_^)W.Kݠ^W =Gk3!cY"Q)@Bג.:x 9`ekX.a! u鞄(5YYF&OZ,XQ01co%CO"YjGs4uE&?*(N&Ÿ0 /bQEcJ˜tTњHpb!ZuBDɂHQk}Đy.@*Q~j''-[m>n($q|\hO'$B9etEVޚɓM!iE쟑lfp0Aec](4 ]U_Q9D#nX:2G.'PTWuf&fI;o诌q ">3=gUahR@Άr{l{E: 92fq6g2 W56ee֑'I KJ2TS$/wт7*K&}~e`(7!QO<#B.-I_4 7w6>,e$ع"5W!фY@e]'lF粻ފL(sdJ:)I@͸4鰟řy*ao_ѱYͬT򉩺aBc~]v6j]b- 般'f?ZdL0I{ d.D&µ33"y r )Y㰨wWmb d(ql /IJ2e86a(k3K4vRsH: x GR1}%O;}D؊?czFXU0Gxo}ag_޺V@K@%ܻ̂? &*Mn]'Gb3qXvAƳgv0g)rptA׶o"(8Kㄖ0[ :wi엵S@s*I9 K& œG a}@ʌ:^D6evr۶/}}2nEɄqvpwX# goXx b-f^p/"EfQ8 iVcS-, $jhGq9ۥ}1G f6AIhG-(ŤGu3\SyEk('T5PŢ^N~GY7OZl?lW}bم$4s&垷RJ]C="GyUEĵlX8-Ҏxߑ?.wd:v{KqPIuwlCB<ܘGHgCK Ol;N3<z9ViE5| %R?NQF r { izJ;ÝLBnzUçNl_^N(.iPYJowdNnd^1pcf P7Z*8;kN ka<0}= &E_P;5usu4?,nF/&-GMCYXq787*(]}y@͎TC$<Ц@uV/Tw:rBkOfi'r{d TW4 aQZ }h8,אe=( F5Z(+]GW|ݼ{e.0~NuUɘDrSZJb;u*YU6K] $3;Ť@sUݫ^Q_ٔTC3AX},qdˉ&NjR+|lL(%R.H/ 4@iFiüKl:TjLBx׋%LYQB)\>j^,-?U rǧұP=.b >ߟK]S,-E=A$W#QK iYT;^@{a( ƇXп?x k|jNn[t;!ާ^W5$񐎆m*w ENlMudړi'RcRvH$x?&U}M% W"ϦRϢH!p͍dugM]YI58w"*=5GJCEkŷYPȸ7 zsh:n EDo^:1DjRo'͸"x'2Fa!ڕ7axUFY&39 g۠ivCK:c]׍G8 c&w$ь4Y  .8OF % R"[ ?4k, WwxiCh@Xx(V؃59&юpD9#>Z߿v8 1óNUz5JM륍~(|~ݫzFA@jT T,*IL=8E3w{&"[&'WE9Kb!BGu|ϥcѴ=ų ]I,6]Dm#&iMn"4e}-)X_,W SvS|)T^_"2H'$c* J(k5Gbe%맶6Nшqos)n/vюNy&O]o5K d Alpgs~/tR+6.s{OiJ:lx>DU^ Ruhf43b ?i '$ֈP3v1~dГ9i6DusW`h \;Yʲ@sgі5R>SdW( A͇QM|V׸ln^pj\Z%wihCGO{`XEP%ng,$OG[:niԥ-sg #6kJHђdNӉ m ~0EqnUJYYQQ|/Lt45%FKʖͷٿ]Ve%{0ɄL:96b;^MOxY?"c:[0Ρ$!Un\҇Rc|&>W2 _w@iyu]#̻zEcY㎑X-:%\ Fo a{#Dmxz%dҊiq>/|Z: g/ɱ'Z{B5@ɜgXr&ۛV0UVvu!߰Fu2 j;&? 1'n1/(_F28-+MSn<m#>HHB+LY3 uuE A<ѭ =Lcw݁YR[oGFFU=#OK 'X3DlpEvDKc#8vDLUGIeB?!ː^^*G Y-5$qĺe󏛢AP'gtM1i?I X 0B..]wXI89{[rRoK3ˌQϳz26Y@BqM$n4 Ċ#2*oazs)^#5F%Imҩav0 يkNAf.3,3yy8N#wAS8!bmh93@puy trKv!& yn>\ǠAֲ޼:5ɡKdHIs_w=Q2= &Z0M{)ڈ>ڤ8/^H B$O9p %*[`vāNt@Dݝ9 *7H!}^ _#iuG `WNo|&l}v9ՊTjɽi)rtKhZA{JbY//q# TbrHSW`>/4-׮Bf (Ty \>v+jaa:<bt^@$stU8!TVDZ98"7$ɖp0$MڱHici ovXZyV T3@jnW =3aa\^cq})ŭ wi.y]VM2n!$Og^y$~T!XG& k6<,&M5e4sЀC=optɇJoX7St,[& LMcppMabtQ#L8{n2W˯ ܖ8`&Z,{ x!^*)$X A@Ӥrz%ooSk/cxyvfoT릏IyJcڈte1 eX{J6+FDŽ˪[F7oū'+l#'-BmvR |8 i7@\Sc< Cj0;Bd1l-*u\}\ٌFhzj'Gyr@k O,K1:=ɇ6PNa;1E]~L1[C5ћ2CD!HLRC+3l +[*oqѽ^1ƛo ݢZzOq1\J#2Iʆ +W/2,]3N)I7#LQ΂s$4H\S Ӆ`!B,@`@sI97uǏ߂[ɉ=%P. \4X1@{?)|hW.p|.:%@ ;YX:;1d~|bA){_k\;t!1ݠswal!~ ͜9o#l;C%zܯJrQ `}k*hˣfO`a.S.Igild] L*6_\?6#1_~g@f9A ^JlYP6_IKo\G"a`zGQZAtv\+XvԴ{WW|)f~zKYi0VB͂c )TY@RW4؞DZ7KJbTLV}ziĺ}67zy# n_yZRؼM)Q^.EDϝw㼰?Rg,biji \EcJgH~vWyNtԐ\Y%!@V7Ser@_t@㔪8:/da zN\6edSve`ԺDN%rN ϗNHWҺN]O{=dxS)%bV3…" + L4cIrtz[2)qe2t kի@&P" ~u'[GY7 OqԙiևTi)ֳ|4 @G ׯp脣[X˹mnX))io{_UZ~)CFWqXczمQ^Ţ8ءgN3!S#ͦHƍhd2U]+28湹Dsw8$Xh|1Z7 eڜ}]$ jJ~,\TJnGLgwheu KnOR ̫Ȉ#O=_'8У^h =ؙ2 J+}9'GW LP'į*"A8w6V6=f˷D~YZ֤}1# HV9d =G㥉aLE^gDcD)!_.)+M5*#<~B@(њo(&nHv`~S:}"i}z >a[Fijڙ6Uߑ~;(*YцVɎPjD9F0+h D/ӎut{/z|6P yq¾rTUh""d@MIU/uak?/iڬιe`T|Jjhs P>g**L^-$7$v e Hmm~c\žoEW*t*RRt #$wjɼRJ Cr;qDbb Z:hԄX WE\{dAk&S;iӌ #z+caÍ7[q閃tC~BNK2S Zx[>҂ͮ-@ifM{k{>nu QW)."ֹ[Uۑ%BdZ5eDJ?Wx>y@Ī%FR>5jL#{q.'c3^0^{eVT.T۟.RO ob; E Oli%|gֺBIHK z0 ᧷._ticaiR(Vx±\t5h(5mSA鵛_N/88lք bu\B>~&V!m}$Q<:[EN7*9hi:Y3TGy$̥e%kHzTo"V_3Dћ#mMI$,gc#QyEY=y2DրXX؄ > ,$Wf%m+ [EA g:(gF~cϫb2yh!EHOHG#!NVC9QW^n%ZryYZ/vllFDmb#{$k]蹳7@D *E~L^9'`]_I6kvyqYQ?Cݍ1Toc HTI] oٯIY y水y@2" g$UZhTS 醪.q *f f8z@ 9> \!}Ǻ;Ft&(Eא'[L6 _ Zĥ8U j) iCQcbMu1ɺHu#v 4.S2aN2zGB eSvh@;Czak7!$$w>{ cH@#KsnvӸU?7T#]ҙm*&])}2>jрDXfUIQFmm'?$O6çd0-!h/#=ɽ. Lιj8\kz8ᾔV xM{0']U, <ߍ&;5Jc endstream endobj 271 0 obj << /Length1 725 /Length2 28547 /Length3 0 /Length 29019 /Filter /FlateDecode >> stream xlsf-ܶyڶmNOvӶmLmM۶m~7΍/?YV];vD9)3=3@YBE GN.hj 3t6M, pQ;{G3ʘN Ps[\]]\\]lj p0M r*I9U5@h :RlMo3sWS2 mMRLuvmjkYeFc113L#Ss-t5pmb?9@S.r6*Q;{gSG/;SG[ws Ά!lk|Lq$& @vvt1[?ejtt4&vgRzZZr"ۙmih ?`_Ύ@w6ÿZ_X%"bEg`01X}E'LMMVy-SC| g!ig TiA'Q&xw*xynF;wM$Gu^Vo)օ]AA\G:*LeU8J26(mDي[֥DB0ݣB)2|] A&շ(( ?{0lG=ļ!` ~sצL(+ir'H>n@VEɺUPsF*c#3HU٬dol$ʴIXPT2ȋl%"o5=%wȜ}y5į2o񯟱1l+$U9vW@9Y oЛ#vO<^ۭhia#{rpv㕊qcikltv>a6qhvà˪Nw yP܏H,Ms¤{۷0bg{~- rXd~􅿕ge'*K_c%/C8X]e-pϗu[ 6. }^,)5wt'%܎˶qaDZG;-͡BfcZopDeP.LK0)I Ka3 Q81Xn+l?e=f mȡxJfComR6vϽI;-D0vg-JK8!_>#iG{Ew6DPnO}}2TY!4C)7kV.:%FhUBk ;. &izX8s"c\DdxhBKe]4Fur` MRK5jb`\jMt ~>bǧ/쵳$ߴ\XxwwRZiz< l)>P+{zX^* j -#A+B!GNo…==.ۧE40MQsu): W0Ӟ"Sn ܭg!{R XtX9 79{C1/ZD9xD[ӌ~Ux:-OR8D%8.j&:\Pҝ⣪BlRB3zd- fҲl[o}-L+.|C*= [h$nU'Cw2wDQf(k@(kwfAA;R L[Q@ B*Y- ('צsİjkU;фVqۍ;7HB0N|9S|i'hY-Le(_@֟)n\`,~>YT;bT ȊZH.%[~ټUey0i։O:WؿDvVB15^[UћMgG]QU[1k\SokAhoT:hh"!-=Xy*_`sKz LԘy@U19\Ӎ;-YȽ;b.ڣJh0I+qaehQ ^OYH/pz<>Q8*6B9YXX=U~c!o3?!ΏW՟~1G7-TϷJpZ+V{PfQŰcL4_Vl_fTtcgZ;d ߂o?[7|E{k.Jnt Q5F fTmD+A cZ߫PeLZ!+iKnҥK[!Iz8Oiҽ0G@aЦ(MAWOXa\;|¨U1W 1S ,+Ftcq,>4Th$zn$? mSM,-i%&~U{qm3Q|ƚ:IQ- PA~q%|ت(1e*halM 5F8]N!o@t ϋ$)c5h#bqD8>}8?udŒIr$=Par9 >{(Yy1mOdgj':keS?&0+BKLËPM Ryw;91I5~+4Dh? A]6 [%+r$eVԖ>%7,Roipl("tWn}p!|,e8`K;"\m!׾wMt X%u!?b"1X>>n: p~ثPP\^#;o4)7ڨS1N^T(L"8k6`N/BmXd3:8̈A#w~pFN `Ay$Q!V' `e?Q+ș~IYmˀ&0kpS>nFOSΘFrN1 dvδ5s|.QFh,!86Pzx# ^&[m2 Ql7Tl/vAEVZ r㯤Aw0Fk#grs\rܔ?%PK" sYȠZ8=b݃I8*ęӋe1 ~1MY 0"ltGvDVgù'- vC}imh:tϗ}o*z<'foޢ Qv^'J_p6XU(PLx-Cwgy~z-ȞNl:Gt(n7-uU?쇈W@3}C DaGMKsYGl\,u qioT|qX`Dc`,㙉2O\JoDԜ.lɑ:/5:Sb{ wKE&pB#.n'0_;W/rc3*KCq߆q.Ӂ&I^a26v^^xl[u-GsDMP5  ӿF#hwG@fNZ"oϜן쉞akmל.?HKn2xW$+5#g Pg${Jcٓv1Gp_&mȬsu 3Ok{~ ҐY~Q`JNM: Kzy&ݦ%_&V1RUR{F貄0G Pr.9:ԣmE鞞%.]Pϫ\)`]\U6ng$, R*oX&83G wv3ASi:ќGvM$1/B湯aFx0nkyHv'A!{$J%Td_%:FR^qU w&5h!GJq\lp_d G1h\f.Әa8LhL N"F]ǩ@VNk¯ҐJXq̚š`E!l~y4mI"uuNM\ bMr~o+YD]s溶 '߇Uں6[vDYxUl0Mo;pɀ81d”/`HSkTP6܃"#4FM =]&Z=J5'j2hjxQ+RIp\&A:ad/BaEZ"g&Ht5d݆Eɓ׏[SV0iHC%_o#fX4*ezFî_ZP,1lr {UDxRCW (01igM}ǡe{$<ܺ?qhF:s$Ȧr 񾡫zYpՆxHmS>-9Z9?t8h;5(ֺ]8if(+ZYzt\1eמF\D)9^CmNjL~& )x]٘AvP9qʜ~6P*S&DIՅj*IRn]bً|qn}g}Hafо#H^K%^Kf"l| R rݸ"0B#>xH|* 9&\EAo`U0 pz2e/LZnsO;M&%чaĊ &ֳeT]d6AYڀջNJ4`yx֗ ʼnAQ.u*Ph0Ude1"@C-/ {(|۩v☗^h*btu.y81do% znd ɻa(g9Jeo-󾸳f^>u+Y=Acl3m#*a% D \R2Aۏ[qr?>Op#^[mWoz78U,% &r״"Ye~.7r'}^L9 nb2}TvaqZK(\`LJ'Lj{:5OKQ݌yZA(w60KUGH* Rtg"u^-nєZL]^ŠY>r}uzr\#j=pUB[M<Џm55Я㢯 qM`2aEOHLr4)0S~{:+e B=?gb'y%@YxhW"A _XAZviƱ@UxYo%˩c˼9-! yCLttu[ M"v[:(͢|5ީ:~x\.הk Y!Z+6lXV.ދ ˱djԱB$M4d%R՝Uo (=%!Z( < 4]f, eaHUĊsbUVl} ϦbpGnQwY7fk{nPɑBu&-K&IG,kЋRkB\x~F o9hpHުmS91Ko3z, _46sb1y>eJ EIK1cCV)/]@{Őfs%rR]g};-Dh)xp:v,}oبHH&D0gUoC.HƻYnh+qɚ\dtI`g`w5k^PٙeCfyPHDEăFnEU@QV_@Vui9Ug?U,63.W~K3H Jpn Jwۗ~- O P "nXsd ?*Q ^Є0h2IޭpǿЭ$s$^[~^Sb-,{sGUԒ#:GWv oQ!jcYQZܨm5uxMkCrR¸PB.̴ t >w𜟃 ̵V-}@kмE!} k{ r:zÕqذO,!*<*55g4FV힧û-A B-Y9,K,]Ml\]q_0[M*=]XV59=nZWն5l]E1F.t@7CS13HUk&Vb)nngұ/pL.-Ǟ"άkX;PhdȚy C/ gg|qR.6Γu\{zsP?lTAB*B11]0 vK&C$SV":2m޵F hck g[ pz'І6?@U4bw"vuU7eq]Y!Ŀ`~+?sR/ aV|)YM0lUe?X#͓_Wy/-TYD.hҴH?N:qjZ# ^`bZ~,OQpmfí--Y:Q׃w'-ʞUW=nS8L#UW'(#ەWkqg>@^uS* Âљ=sZ[,~sUy iCyrё`߳N X+VOj1C",p=c:Tk`>%p}NC%:e? qp/?XjEkAL~ATW?;g&0%16ê! jSU ŵ|I o(dN]k `lڕIpLB99QF,Aү͍st~qeziȏKuV">nvnl|w^W9M-Z9o72j l&e j&u3,Zw I8܍AEηh _GY?#NlN 4Hb++8Tk9!.bqAyDyҬVo!cc'i+"!'Ȳx'`ahp v(%82xgt5wF1dV@lpPO8yttzyʤFGsicԧ, Q$ sS#|_ڡE zF]@޹쁱ho_t= J >al lg05!F x2I & NjưW˧(M}R)S;y!.K]IXlX{']Џj1mgNvcN X'젞7H79g8Zqe9e ! x`|qdgqJ6!0v$/r\IH1nO>'S%X G ,*hYV]­<,Tt0s"u{TtGOQvJIrʈ E;쁍k? `ET{.uPOTda/ۂSm3P`y%I~=o2.>cUC5jP&_a"Wjߚ1=40thwDA~G]i%N^EzT^K<()mܓHb^']L 6jG`{(>y: ‰EJ{+eJ2L>P;Hlz 󑁐KZz'z3ۯ8`ĵ e)Tp pŹtX㖿חS2sB"hx(dịrN#(ȏ1Q_H(PҔ5lyZ937"JǺ=sjՙ"wbş"qRкבu?¥)1$+oǖbTpI=}]32ogsl#T)ƄM/tLS^L$ާ:b|N*IVGiqwx5܏F4 < <&3RW_^2Ti.븈 itJ2R0,]GLbZźcǁp1Q J˟fa0p2Z3DF$>Nࣴ3AIlZm̻-=(v7*oG0O'L|j*(GC+iou}FWw¡GX>2%'ԛ:Qe )3oDo9[d!xπՋ 5y H/j%xrV Mi?UJc )[?fFḧZQJobp> PJ~ mҼ23ȋ-|ET7J?IZlv2R\,7bKqGpocA-WO+zȈvԯ!x8PPA[? N~N;yYŕ%ayNNGXՎ:̅ion6Cm ̡txmvʸVSE'[6 f=e:Π4*Q4)ϻfj>Fm_pЂAJ<Zףt}% UoU,U5"2QtNM\0B8}lƼ47ӾLدˈF_P^Eo@CNz#Srܝ-f.:.2,P֥^5elgy-\w$3{4 O og/$s9+% ] %n ng}¼jxe힕G+9? cpKO7;W-{cNnp<>zv<ՍZ #;:T5oJs@2] ]n띁%^Y2=Cnι QPt^mM/PGoFAا G۠Z|B2v_EmMG=ܽBgc|`=m~OEY?%\/)p1JtqP`{Uc`1t:`$fBZdx}SAهGqEjőJF3 ݡKAK|f/# E(Fa\$( Ch,!Ӭg7/AMʷ(4bTD]{o= <`DpV-w]pV!2’t(T2 vTXC1+b1 _}x[ϡ>/r8~Vw=kK6t _aޏwuRՋS0.@x17wdMWŰKd|}2P I.NĴi-/?h("H6(l̝ N*wA"z%p#J@RLAvdл#2E 'oϨF(~N(ҠHՖ{g F_c7w4KD 6﷌X"VC"B9PmWTNz)>@ᵋ8CC5^ߘF8k-ӧ@a4sHQL}<*FvhE@?TdE}q8PM3/?;*Mk( l{wE4ּy vTD_.J\#Űwqx @'g 8z]ʛ<e5#*:0L9,M9Tvk&WGI'&rPڋf7÷aeFC-'?vQ:2v\~Kz_rQ)Yb{R4㲺B6l .ovV Cw뇴sJ^mðUԏ1ڗ7GN^$\&?Lŏ>.iT* bb،g=Ƨn"}=GynEckS$5Hᄉ5z.^>4<GeWe&! ")\FBƘ?gXxKJ1+E#4wT7I|-GqکOӼpj`4; V2GjRRǥѧ}8e d|=$:X?D+0sUKy;(}* S"-C=4k‰Mc2!H@Ke/޲m۶nٶm۶m۶m֭yܞE~q"3Ic7?Q<7uN}8,c[-H!.Q޻Q.d՛)SǩG[^$Ʌ>w3 _J(=ߕ^{ !}CE6|c=ͶQuXDXUh5dVߨַV}&g,zGQCJde-1+NEQSߖZgV_8 kpW#Xl*BqvlՎ"ui rVrx#45RGW!z gUǦcaO;WѴ{L7WooZcG}8ALZ<>U}o}>T`i$5˿g;MW|Zn,r](nBXp>D]샹k8;l]V:Q7ˏ3 `ʾfqbדClt^7K71uVtO7$I,G &S.$Bh'iRhÞ~ G1?c v?;G߫*Azt3}`ظck:5Z+@Z;/H0DV}RMg _<][)pDk \BP< 6vQZA?t*ac AFѐ60instSN-iT{VeH] "o'6};S $_T.Lpń1-pNO+#oTAPyM|DA6k#l-?{bvKKAPJv m#AWP7X̜Fb+`#P$:$%'#]VʶuUcoXpuKIJb,Ԗ̥mKҁ'0 fX11ڔ#,#] JhVIg;&7Oye|ocvVtU$JdKDylx>$5 -yX] #~C w"]tէ1"s>?9'kCSt%NLsD|5~o `./P±kÀ^I6-6D5vVkV`7*Q˅6"a?c EUaLۭekRoLVv!,\uV:?,ᄒA0{]gA2wom|ͷ>é5+3`EebG,#.?ՙl׷@kɵ #^`Ѷy+" OZ'>P#31"38}LS;RE5 #Dn±dV&^<\{e '^ڧrH>{ڏS|fyWZYxJy&]nVRSl$םm/!F{+ޗgk͖O$0' 0sǕJw03nC\đ&a2EtwlbDܧ d]ydnK=ʓ*`ܵi \U}?B6RPRbȘۆ3K^RR 4 rRm89c{3^?ZB;B'9Y9itE!JH"^ds2>^S<"PvjcPa *hS1[bx+A: Y ߄oIR}WP݇竂 @#2NKcu= .T mM{dEcb8[lKFh lǎ>u-݅meA)+69_CKb)`+\7$&C|OlK؄,~WkXAs ^ю0mGtzD J`CQ^NYb86]!FgI0SwL7mqJ[ݨ'0h`R z^<ۯ᳞AUW%U\Th%\_y 2IoW)YJM"`}@%% !l8QK#~nEک:x9sf2Ϩg5ܓۑkPR6tӇ1OXtj.ӥ3BT* D5h3" >D1>"EER 'tAaa!l!zyJ)nۂ_$~A$*)W"UmY|yUtUuɝ(> ~a"Un! ƝSXdq-@%ucgd,>Vᒃ'lg$vu:$_7Z03^H:7qi&lgr!,'-Z\~};ʞ̫c\ZsG(B1ܑ$'[/VDEbEah\ ?Ξ:e2Aä?ERoWD۠gE!zGk"R @/s&5yIAy.z02(FӒԭʕ^Eur5+noFVIQGZ7"p`l)Ǩ^$NP_F,hu1T(cp#)xX\|`T3\Iq<|[(Ew9rVτ S/n_ ^݃}F,/t-zA oX3?>6VpumuٽU.O^qY[h UyB2_taluP2amu/ =J{8{_4X 3o!M` ˬト[!IPLCe"윩IY8\#P2 ǃh)i'HqNΝJѢS7,S~`Z<;| -+%v.PUDŽIyݿ2+BS;X AĚC rTl;&[l?zGq~Ԯߚfhcu){ \!] njhlYī\>Kf{&q(n:{ ?ٛw7{2d_^F. wZNZ$ ^-"2lNA*.5UHI,, 6~IL8Wx)7Fwk Sʼlە {hPo1kGxԭTtlȠ9M$]Ȧ]$s, 'a жr).$-JD<5]AJ>n?2;Sy#*Ƅ́ͳ82*2dDâ* 7oҟo3t8JM6 WQʏl];xM3q{sr$o7gWIZON<A=2Y/KIe;s_$ ?M[{as}Sv,_}/ 9t۬0 X*B˭Iöi,S:h?TsP?a66ޞ~ epWWQ5[rH!!8Z M4A Cv-ȿFm{+\FB@D05w׮f TIf$4y\-@5; pJڒxJG7ONX;FL*N!~XErRWim|{jءƹ/8R~k#hIl_ɧ`%lOTQ6q>WH*N#S3\:n TbA-}`nq~90Q ű.,)mA\ Npy"U_P( I7>G1nOrݰhbMBRh69cJJ dJ*?8T0K3Ƴ %q~ &sV*'c#^K(Qso+ vU=*}0@yt61[;6UV1M^w kZ2fxB{^3@IյalGݗb5sXPtE.7G[EO|)dL,ŰEEQä)+1\ aj } H  O(UJe{f>b{C.OR'OE/Z㪚*U)@hggVqd>Os+w'5ޟVnQ3K SD {5L9\ FF TP fziؕ1 gҙfE%7Ͼ!6{ar賹6̤+˔Gah\uu؍SkLgL}y_}{X7, _;-9Eֆdjv<@ Wuh8W>P 6(W&Z~ +.ˍ5ј&ˑAzﯕ'jS9QnGfO#p,K~DLUqYKHۙBQ;JV^z>jCI+T* dpwy+XKYHbT>TH2L|OBp& kgGR_BnH'7D$/^$ ,Lݎ/7 "+G4=sk$]_ȕW6sC#YFnk֫H ۮo$cPIj,pB#gM]g*M0B?=tbbQ1+- $Q=_d(cȽʠ<ǝ5JX[!*UME^ aS )ρP|P Kݱ~]4G0Zg!;x5y.е̡8o@Vk&{ua˅O3K?ow+hkrF@]+, iCNkg7OIj0+:6˨9!=ѻ@3%_!r 3sDzaYb#L(]ye!sjȍ>  ^ƍ pcY.UA$]"Cֈ!ecXRBƍ-]Ř#+] Ksat1ql|wh8JbYU=)g)!J7R|槌#x,d_w؃7)hT~"NT6w|"%i[Tf3:XBrDKir54Hʄ3:u4IuoS@ $9f7T}K],"#[ 3Z??*%*\@kB 7EXMc#vD.QinЀGKp9.{ڞ8"(].QDk@ 'a䨥+z8Kka&pX+ȕ9xk ȃIʯz_p}Y [?lii)Vȷ7MM $jl|3DiKɴ0yŸ?0saƇ*Шw:iNH892Ho,Z!=)'-@~Ír(p+:k0~W2Ppr4i^8hs[x9?C܃}S'4-{Uz7^(`!,?!gԶ[wz 4ci'o3s~vǷbSLPkS׮b[뼣 C#Kln+J^j[c;cs=o?PCJrY3q-錧5 ҷw5:OqiٝN>xϯa"ae>8A8d͎fi~Z,J˾_̾y9j.b6ՇiRo#lNGHi|?nYI%$}~>Q6c|e%`5i CڋO eA ';!QD%dE48!D-QN;GLN-J@q/d R]4ُH_;%Gb/˶ $̷N iЙfFFs!-'^&5-ɢni =Jsu^$ʌVe9>vma 3wO|H^Bpg_/5*sj4+#+@ vm7<,*H!BY]ՉM 1!S&E12^k*Fi+;A tWք݂UL9s8~dT篼nE;(R7UDC^nB-$$/䥆1c-kRvw h\kS|ĉXP>CY(EץRC@0i.uX@G15Ѹ*ю7R2$5Y',ƛP_(!hKK9H<1*Wi[!q;_ 0yo-%t9Ӊj{W3{`Z\n}| vz԰sn#Jᡑ(DRG'PdJbS&QEмh h_w%ݭ5/N>z+tlY7HOi1bK݉H^=h?DF`ͣAG#/oR9#I[5DWW+Qhuj3޻L'i!} EZ"dxV$0]&J]ꐿ)]ScƶZ5pm 9 Ȭ>QwcmmPgV~M9Žw0-,WGqu;d f}zv[Nh<%j'jԲI207*BΒdqt@<]Uѫ $^&Iӆ"laAś+"ùد]w(ȗUϦl_FP{Yl!qlU ;f}r<2~IE{F%T8cz4-u-Ct^uKzW Ʈ;g,^ U/TerS*.ܡ?ZHK]H;21bvMYgX_YԫCڠϧ"pbgjÊ/2 iĵ{b_SnE9ֱc}.;d<hcxZ؝[IQ&nXߦtLĖpo,44bSG/~_k?Sf8z뛮~UB/g'-IpTm[/VF΍=!|[ф,z02mZs66}&5یYr\Q녋Qgb*,U$mw/PI]WMUa)x'Aq 2$ì&Kk-"fHdCcR@O\gn:d#´oͽ<yH0;^5?xY!]Nn-y4Ootvҩo煮IF[bݠ 7!'/4 syFsC1%qM'yaSR soz_94 >?4kr(ZjPv63(aRŐClq\-MB✋Q b,{f[tgl%~b \26HxRK&X( 4A8 JSI(ܵR񽐆q{ \`Yѐ ˩ܜyEnE|Q)=Ԕj/T\C"a]=Le-_Pqݣ<4 1a5x=ð b<-s\tQMc>JZ{HΪ h>3uLjDQh2H3Vb"DA0ygKtHu`p~ޕ>AXT}뤨gKNF!S t,"Br(E`\ I8'muXp%r7SV3,5$ap:Ś~.d$>"KT*]fd6f;4f^mW5>g/e57Bl>Yf ҂{;=J[cĨk]dJ l9r{=99f)߽/=2lG5m4YP?q2<EnyG&ol5OqPz'pǟWƇArTht+iBF] !sU_͆ ъ+Bz{h q5]%%J8K6F:Bn&|L8ݓuKGH~. iy%*7`,nPS,ّ(̌=XZM63d{>Q$F)+K Smfn^lp/ endstream endobj 273 0 obj << /Length1 725 /Length2 24755 /Length3 0 /Length 25242 /Filter /FlateDecode >> stream xlctf6vÎm;۾c۶ѱձm۶m;{9g?S5W5VժIN"ngadcg(0q0sYEv@n: 01"vf*cjֆ&65;k;W cs ??@9`ja +hJI$T@[5@ ca uRLVv&ɉ_l]3uȊ˩DTD&:;q 4vvh #G=`4cޤlM6@NP!5hO @%bgc tڙmý? 5 ?RΆ!dk}6Y8[M,o:k# 4pp?&vgR| *%hSrۙXؚ? -]A+ 겆ΎmF)yWܽ蘸Xt,&F' 5vqt:r__֖y-SC| g!if Ti@WoQ-MUgv/wH $x?|!pm n"~NfWK;J0EAlǯ. ~3.;^oA]^75Ы1 9pDiZl-׷Ė3ڌ#i>YBs$.x~VQ@]gwŀ쾩ѻi\:;qPHz(-0 tLjLkwgGy 3W$حjkBoو%_s;֍(J2*Ceq?RZ?/9KBSS^ z@- 8beH/-l~tH/j3U~q8(>o^ q("! qwz| *rKK=%  :(%xRFٛ!am>&xeY'3M gj0Mڟ4 S ~r0u*ԴE ɶFnϕ~hd@ :6hFӷa;|љlg+* %,G•o݀Ҍ{ }|8Y~ڹJKK4؁Ѻާ]7!hM=h{Os(y*xߴ~8_[cߓMv~,dT?UʸGێsh֝4-=vۏi0PK|x^mp ?]}1H8VdVUg՟r~#dZ J1KHjNrb:Q,(]P<m,$֠\#ۉWW}ع4q2"Xڢ ]z?FD#Nde52d?dJ~8k5*kVPHˑm_ :7|Enn! `HO; TdVtH b8FN(<ŬPG_uHY} -e?$C0m̟Xˏ*߾f ߨ=d}3~J"sJB?ޖ[} Ꮚ{꒏$ã@ml*I0kx A t7?I!DŽ;OF,=9x,bEk?nǭSm|JRp|phXv)tP܅q8FNԩ. ej%`ܬg՘.խr~6[1QT).sd|ԑH܍$XSZ3\VXl̂-.{gpBG_w,΃!o!;]9Gzs7A$dn e-I)2+Cd8ٟj>`5 K !o%_f8i=!qc-T| 5Yp{z[; $+XAzFޛ̂Ԉ=ߠz5 bX!cmɷ s冷j.btC=橜-jY&@+DǸdmpo&}0mI1gϡ>Dgqv.s3w B:[H~A"̢xxow9@gS4dZnFYf; [ѭ<>׻DYZPC?'iAMg _A beծ!lt i& #k<͡z"Woy:-[Zϊ(<Q5Q?G`mXen N,LA}ԛv@0 S HnT'ѝSVKuT~8C:"8 ,c?SW$r y[ўYd]o/!> \jُ/K;MU(R'E'#d#S~Sa1x5R Q_Fz&HIͫmxm ~)>)xKr&-s\eӔA]C~3sn.bVgYw9b~y>bM:&0ӑ,!p>EϹTW'CwJqV- V;dP3ScM;"]­K;DX8KfyDOe+] vgr> jHA !#0=CbD-g 3df8>xnNub`2rg3?U/=8YAZʡY%Qf<TFut&by?ad16X.N@t9"6ܶb/Wvtލ|a1fO9}.bSCS+F c2//J:| hiƍֲ&M5 wF:+W-f.荜 rU^KPGk'a_9!&OWHq}VG~'F@vޤul4K㻟7pEb/c>ﯕV͏aR,w _=H|S.mM4|Ӽ@V79qTPJt32k2&mWBwr.Ib 1L^QJwwx9gmL ekgéU8O;":?|L)㨹76Fd-4"2M!0k?PrR& WtH@Ip(M}1wTЙ/)+8_ZםHbKwNrx+rWA8ϧɋ.l҃ۚ p|hNڀIDLSPVb&§Zy.eń۞_S@0^- {Q,7fi$\\(a@(gG= Yۻ+$7+L(K Z}A+ĬYnWMZ)P8>~/.CoL/<!_5^Ou[)o~%d0&hL[)!ڛ*$l'Ӂtܥz9%x/]2iLC;OEU5@;՟w'a^(sǾA2a)l}?>2"Mf-/\?J8@}iRNI%D_Y .ͶH%w=h3Bqr LM'r$xYs^c6հR۩CqE*_E 5[lz#0JqPhOMBz%NN2'r0XQ(|Cx(!'Х_r,M s=F3h*;BěU€|aɳeku s Yb~ oKq0}:Z;O+6{N޺]Amb#WD7RPQ]V,CYZrVeu K6,Iq Y, C]_{ճ3n2*,)HWcuo5G~Q"s2O GxO:5gr6@>cw R+nxƿҧTcR`~#yr'2ccWZԣĆd3Kas8~V_h{C CTq䖱u+qJs7=+a Ujv:@|EpNց ZNF 6W '>,>(Ƹuq9D^K@9rtro'bB :pBbوcIȔajOK:œbv&zc=wjOs纅ֆQlb$GUP0 Fg!#I &)7"Dd ̜0Aё a.^,jQ2X?(ש3qo.܏"ZݫY,S9iӒu g0]"{ -# ^v%s. ;Xm&59v Kz>KǗJu5:TF^;:1Ra(Х0ѢhٺzHi:8U"6pzv ʪ\Ոs1R;wӎ| ȉ,^%?_u{+sH` ҅ %v밧͓h(a ;ga:.mE{ҳ e'FƜR]j]IL[M!%+l/ŁLNrE\QWba<}5'urFy]hw' 3uR,d@Jٕ5)1y탈`MnLи3m2N ="Q9TOS|7Syukčؓ r yl NɅe Pm6!dmŲ?=˼ sҘ(f&KH=F i|32'NVPbWiAB*~T1.5vHnzyP#e/THg3bA}G@*!$IE_ ~]t-ø+tT:rnO,NC@Y xwEV@2zGHϢ6 T]Oy.'(&\[FLot7;բ|ڗ/Cgϸ*^a Éj$X|EOS)2 kRکB@5=F7NVi uH7.GT? on@Jbnjǖ/m-øY"ő$\,WהĴS-xѽmJ6 9Lo$GyebHs?)*x}1@ v4hGw<26qC%=zWWٲS4nC!yTQS!hLcD(} C%~\ܥ{[-gJbKەΑ[zEdБz-I)i3?#DVaݹo0,=cUB ǨF_z iv"<UN-@ 2eL 'JJ7bwVj_>>?#- zͺ)TH}2=8aM*WtrS'51%]qzEI#,D i)I7mjǾU[~-X [T[dPBY=ն4~ޚ <2PY r oMD]IЋl&LC2<2pao}\d*s0TpOܿd2A}Yww$ UB eRu5x͕oJ Q Ԫ'{C|ݚ@*$IZ] 9C]ÍYLEnۇSi*+AM|HE#qI0Ȗ /5"o <}N *w@[f3esl*=Ep:bd~$?JWD.dVQiX(=T"?{9Ps 9C*RA/8 [70U2 Rׁr;o;iC9Loa&A$YouSܴ9>^) R^9s6/[Ix 32Xp|Nr3(4DɈmE;\0vObQ$uGI봺HVI1Cu:e$& (?yu5( {H'ߏ _$ͰG!\_?A|?:Cy`X-(uD3:ǹ# <ܸXl*{c^nn zR 0xiJ[?u. v#fHe !HX^w/ }~G'=69Gߴ\wΎt@L#-$j't&BV[_*cU:=0A̙1 ZnT|4 i&,=\iz&`iP(H2j+m85cYЛ"='[*>oUgHm! 1 }KRŽ1Ⱥ{gSRsbE2ޱ>i[MdV5 ̙b_ZFiC Oܯˁl0,:gI̋6ap: }0<0_'o t)pYAүI_cRr9]YU_o*˕Ge_LJBv F%J&M~=Efk04HZwؓ<[gVEUnlL7DW!D28 k.R = X!8k%74PkmFx7BH&$h1\NRuEqrK|;M4x*OT5&|, DbcYEgڳQ×(7HIZ3[Q6CN1ݒAhBV(j4 ([w:/}a l XQRI Cs"Q53Somڦ ˴i(xA0UVh򃖇ćvD˜0z~ s ߾9tAnÁ#,4roJ(Dޔ79r1-\짿» UU3F5Hfq`֒ XiV|EX6xrzx2g.V' Ė uYl'|]ߴX5DAˍ/1$l[touʊN{/ ߕikm]ٜJb#v YHj\0O8М >;ҥUW*vRP& Csw/|G)i, G2Z2;աiņwI}|َbCFAmozc󂸯%(V?)%ե\ǨeJ\{h^|ΎB-Iی;_:R ,fYTg9ܙlU󛢫nk]z#ĴuTMf&09Ox<=9NU%Bi JK)cE<kHr 5dv; k#)x>#?n3a0įBQVV 9Jse+)X~πг1 K_;S,NS#ɺ)!UMO};?L,Vh"6vvn.t|~J ĹSТ(_8;Ҝ7}h21!hk䷷\OW,!j`KJ¾cSn&6{29H5jnMr"}a({G;:qNLDZ|//ǑC~CoT"GWMtc{ 9⡋ͺgs:8ďB5|MmG`9 hL_oXFw|+, {#HžZzWckH;4 N 0UU*\Ӭ QwlwG=sN*qjs<ϺՊL%4I<{"BH|O9hl٧K֋'ڏݿlT54ŐI6/ټ[A9j .ciԧ,39]R#mqv}LM1sͪ@2 <+*(9fN)DPeoX8z؇Q"m弄ަR{wK?ǰ3Gks% date;>5l9V6KC2 6k4of,i&#'̘2(x.?yET>wDŽ g$ m75m2/<IC*s7Ⱦ/=h{eb4#7q$÷+ YEζ_w ms&J}&F[r 4,W)+y,pnLY=O"gׄ63i 4grZAg^~.:aZXuo"]Tu(Ql# #N6/j"u(ŮN\-t! $Dth[rL^:d) q<- S`Ul[?2;CZ }Hr[֝TeߵmWs wJPVN߃%}ټmbhX?qݓq:w u(rᖐj8&vP+j`AZXҬAFD._IPXz4ޤn[DWo}Pډ nCe*{* 4.F+L#|6&]NӴQ|ZW-֧pjI^RtپUGn:d: dY!uP隕O|p\\{#4{1ɸߡc'N)1 fsf'AfÝ;:$ͱGBיWqV QC":pN:nFqcf'WNPGAٷ Y A<2ŧM\=Ϫ3v~9';gq.=[Th`p̍d1QabV/ K% z0{p{;dג]腀uBz-Lz8tx:cO6$ 7,;+J p_?b'"=B׼k^35j}4&Q*u8ӕSbMʉ b*z*^Iɷ&*0gM4Hdf{íj"ҽA̯I9>V(b1e.ǧ*Ͳa#;f+Lp ?(d~~$JkM\xWЙV9iS' qou8rO0,-|$- v/[^; ŏ3#^K2*?oS9Oģq͸jM&K0~y #5ۗ>6"eV&/O-A=I\_YƈNԧOs9^f!P^y;,#۲ٿ1U3ęqRSˌA'n>r/g[(尢t(5deZ@r虺g[I`/^p %>ͮ/PhZ`-ԚSy9%`4 RghQo7ҷ_Z,(qzBP_Ll"'I #{I"`<&zX7V%?zRkj9b!SnE r>cڼ*Y^DfVJD 3yD~첨IesJرŸb9SzMKYS k7Wن_M(y0j%;'}53̔-%"ՁaUSH T^y2 ŽMхiܼ1Y9S_W Ŕ"psMY{uarj&NehBbzFx^wC~y^ DmWc"Ü[K}a޼!.u-f4Zi_47u.:t0 eϣݻLǡ,PQ -KX`- V^i6Ez#B\c!R?VN[}vq/%Φa!s8W4^`-Ư}ǝX 6BC%}*zc<3ۭpA1*v\-٤Qs<0 Y"JGA9R>_7 5زfi ׵ÇCO>">Yr$&X*{I`Z^Շ 7M"3y|žٚo2ސx[)K@ &c ֳx ޮJnCs)+o&[ΈF Ů'>@o8N=x۱#HB#PJ.m)DF+' (d69ڛ:o^c7f"V1ll!{B&+6'n{ U` 8;0*mP|\2< \i|_q=}I_P|x8{eQqN|v$$isQ--Q"5u+)q1)㐖 T_(gQ䔸ݫ4b dt_4vrppH$~ 7sF)Fu&剅(K 5}""3ָoMBźvšOo#1¨,8"Y-7٫1svo3 ftC#3ЋnSeܖ ÒЈc`9$xZ66GܿN!9J54/N 巡=qp@^[0MY*na5 կR\ʹ AM)NO{l劣7\,@+XBfeq>r? :!ޔْ^'ޕv\QBtn2l_woa&vVE4D8k[k`sDNj^1e@yXf}s~d;:WJ*az|d_rV=Pj_-F[$L**k~~4̧S=@`3B˪(;4cYӮ|'5 CͰCCL[o{TxrDw1lT8)bakcHø`Z҃H/C/]q|-c'~8ڄx/u=0" :#dd>}Ex#` |ԉi?4&`%Q*eF)ʌ_LƉz0w"f ktq%ǠKK9NH 8kay*/nbgGK.?wM'x3['=/v 4>kAXP}D}F; QDUSM)YRt[Qn:->jsfIpJƙQ},ϊ[ 37}4Xro2YRrP$;$8Aѹ^w=gA sMx{Ov kw <"'!'"R?gj_b (u;$/jZ i?#bD i*;_[& A-z<|d-/D d\̫Mr_ OE+,R|B,ϧJ5zيcﻟ8oN#HBz}NRV)6##K:.\|-J$^wo4BajLY.8l=?xӂr%w08 2;!A/[vVt_hMfӖ颔.9n}c&//v@& /jv2I(^<&luV~w^WPgjH o oBA$}U.yilpНX3;F]^4v lb,S`Y3GBEU`)C{7Sbu?QxW3gE)bZ;F4&>zO&[jQD.#`4[0|2/R7tWPJAHd#I Rՠwʢq@N"ݎSwnZpf?  i4)ֲǑtd%% nY7H\"{f8,X+ըCny,B=9 O'MY=cz͖ziҳU&7;@T@+"HZZL3ZtND(c.ׅz܄+@m!cYbt3Ah]hl&X $?IYނgdU|j+\:p>UjupW`)G5ⱃOͫhҚNʂxϟiұZ6ɶY1a{mbr4ٌKb~ӑ[q18Of'?!S9TYz4hS#;(A|Xe2|vhv44( 4׻gRfis|VUU$ψ\k9n]X2H& (!jx/S~L Q&d[ 3*u0HԣΏ9 Qɢ-YTهdվgvGW6dxmPcC9FծBg@ %5gb,*9)'U)KggVB[e~u#ϥPh0j{7"QszyRT*3`;d LHvJeD1fC)zak|2}iv\+6r`{|$_/o'}nĶ!` .xm=$衢mU&Pĕoa? ȩ>N\b!~b<" [b(X=6PP7@ h/W!i-)3h Gd R%-O:hmK{ 輴aZҕf3)K ` vaΟyb'ol@$~ 'Gc?aܿw;!t.)"}I `¤J1l|[W^9+R7nDmWqEYڐG:r#CoBԛd!"ddCDY6ш?T>8cKPժI_`Pu*!@' oe mf:RȷcOʔ~mRfbϺ>CMD]0-UEGk!?z $ʝ+ >rz1Eq,vW䜃87U$/<:5Hbhx<=JwS  ֣rgZM5h`ng08|]a#\Ra:<B2`fyu!BC`$%©Z]Pcu ,$M&Od;?$[Oz`L0Rш|tʟtwyޥ &+DTjSo}p1Axڻ%[ ԙH*k.F)9AlJa߄خJfl- Ͳ\B$Mzt/Y7Wa=k]/ ak=.\Q*t<n\\8`rx5=uHآ]O7C"Vo-[9-wٓ#'֦[gi-[WC.lI)Q ^ R!_dAwPx:J\% ֧Q)(#ҤR([JCoyG=k B4!g 2xE^;=l쮃:Z3 褵vPEE;1‡[$"LA]~{82yQEv},eXttlƀxߨBT8s)k`hiC'i@oWVc̳m֭lpˁmQ% :*:HZځrL,<8CKvS a޹1JYń 79_ jj^.OF{EW5zQ\loS۪p$%%Ez/Q[͸5d~A҅keJ-#V­h86G{ j2my}]E_櫍ՅBWZMFFxO9CL7l?]GVӉ}2ˎlO_ p¶2 LrBW@*0 R#Q8X3ig"f(ampb3JFx{h{L#Q܌WdML!~3Gw550M&,rS[?AZ+*-Z|,U1RҔbe7с̢zCCBErg#;hIlՉ*%AZM G!aܪf~\%փ $! X{Mit!%"bG'/kT;sQ|s(vGӏ j& ¾=\F*PGmfW9~@a!0bKlnk:T~^ip'HUtY ȿAoaF寶(QŇg68/n{Y #T>FKiȳQ?zb13Y3_|L u@zp#!i%;}AV0E z^Rdi(6NR#f9OiԓXژML krfpC=E:Xb0=̗G!,h)QEpg!pT`BN'ig.?^yNOx?v)2^SYC+W]P0otF!B</+"]i`u {4 ¾#WsEuވMҵz{NCi8V TC8cf>MƤ`=!zE򙉊\Nzv ^dIPյ2\S~@,[2ܿ"epBXnmL9: @img!2(aJ,3T=i$SW/ ].,v5#1yaɍؚ#af1ǣP= y>fȎp YxW8*X"1klvaZ}XiPܚA Cz:,ͦ(7|wҲ4D$ЛcE3~Wy*=e۬zA-ug|wvq+,Yb>Qcd:J!D$o=YH2,)ږy³şx54<3D ^5k<&TmeXFRhHϴDS:vl#ֺM7A惀M!0?5GKHpݍ͡ḣRC{`pEc{mOKN!) SJ =9{;&)Eq$0gXl;j[=_ DZ~S}!RV-hݭ]yõҟ(D])m`O40}Ax2k{2+0@sC1;宿}e,(PZ?]k{$L>bnb2}z~,7 OIsWc6V!+: ނ[yn/ss쏄-$XgTh[ˬ>oi`JJ_v?+9Q+-0{¢rGnGۦo+-=CԲcC& 3 H6@r8F6iǦ hj'bڤ#>|sR hz8603j5jK"y= [uǢHKfr9ƃk,P -Pk8|.XQĠy?=r ұ2c @!K}I(̪, $ iΦ`9JN|VO0)J>o`^|FDv}zU`Nmo 0&t%*X^C0%/)^&*#@ GU=~_%Ț6G@?Poz{3sV^sNюd( G&`ȏ>,{1yz'syOzg4q&ˬr,kzݙ}eKp_i>rx!47< =uy?.dZKqr͓(ę@\yK@{}Q2s;IH~B#GXk_&wLn&ޮxMhR*џc"Ե u}U\3~-ЛA;1sЅkJ>GlòI&^.O\*E$L]R3zUu%:\F~:Nf/HɦGOTqݿ)+{cJ`Yd_g㒾uP,OEd$s:$sGzHq 5sp݀ n:3w~+\}~{}rMC7yB\$, ȅJ'Lt{k+dKao`f9LԸXa|$ [#O'fF˦C0N^vu=~DU`j 2kxQ6jі[ґ c80Q"yiFUB0Y@qt09wʐ|y%t:}1m8zI4zOP' i [~e,d#j3cרSHbQ.ڊvS>Q-CQ-0 r,L|@N yDujOB7uYnb}ßG,a6݄-@FoP0r:LȳZЂ|Te!g6 S2oP-\VQYϟBI?)^mRWiJo$@PÕyb oO zu]&NIl}? YʆZ̊x7Z568#8 {X]Ft"[]vcDzWA'h;D0Z[CwSuk1hS.%\?7h'IhC s;tPduӫ^TA6?_8HG>HdR>PkB{8+7Sss R#VSPj #kzFjZ<1E7'(G~װ=n#`Z`'9h<˞I_3T;G3OQĉ"x 41.^`O^$м֊P3aUŠ {m7y Va̰/ZU+poHVY\pO|X|$ޠoVcwy0Zr A'yӱ4jX:bLHr$F!ٝFГT0ƶ HnHj`EbDHQ]~MYWV!LV-%F`D8CSOOnł k)$b!&7 耗H;׃j D!mFoX+1a B;MX+g5xqg`Ž11|mg[y)̣R}Yd{!!_sDRr.U%STk{>݂mQVC;[K endstream endobj 275 0 obj << /Length 494 /Filter /FlateDecode >> stream xmMo0 !Rz|UAa۪V&$E 6~=HUAgɯ~uo$ƛLD- t @ZcNt=YNk`T=Ro æeCڕ(>Պ AiZsn[6uc^0Xah\je?0bprOY[AKS|dۙoF)MZ}4W@{YmG;<9`;K (EytbabisbgEjq(po$}Idon-p!J m-O[L endstream endobj 276 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS 9_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZK endstream endobj 277 0 obj << /Length 695 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS'K}v}tƾ`R\ws*pWl:*;m_Ű=EB.=]6E%‡hWvE;^N ƣՊU ٟweӟQ?OIz^UU|ڕߵ6ZrbˢXEIS:.trA&TH>4"PX H BM@5*08WfH AX v.2I## .zӘˈ0Qa8tcpN0A2 @݆s>^l>^wo_j4Rrtsľ x[%QLuQ.ݢT ܂PKߗp#}߂pMAM37CB2>*R{@8񩎤3 }c$f O#z  ) spW)9N{=g-_Z ~YK/t:/~e}Y%៍-t:UEk nmGkp\x{)ނ endstream endobj 278 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo0WxvHUdC۪TBb A!Gp?gxYOTm$|՜s_Iss :L;268{zb/}WUjWm?fd}Oi=7gRd{nCN8oͰof-%6'&9Pu`L/"tkں(a[ duS $xqa MN{}m}gىx` tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 281 0 obj << /Length 900 /Filter /FlateDecode >> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vz|N8}No)e0&h?q:P_ X}ac1+a  jҢ~]ߏ{_r)4i_px`!dZ>i]<U_cr%ͪcךv[\٤ժX*be-@E-X@-꩖xkM PY@ ,#bEA 5rEqIb>,彐A$ G#e"&c D`%rE*s(Ǩ5ثCI*=ǔ^pk+ ܛbVLbX+@8:13Jp3<|6 ^ΜANVjRy9cpסAM}Ė)|֪,+pp70h8J+NK}Eլk)up >o U^g{_e{]*?`CBhgiیtV;۳ѝ)(ZK7bA;E^]|sQ endstream endobj 282 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5&z& h<ϯK)ٔ?pݝ2ZkXvm)85];B7gѻ9x~;a`>W'?y:o&> ݋L'/㫃Bnz_7_t|~;:ذƦoiܰ^\0zu\7g"NFsu_E07H6!L@@B@q\s *Tg ]8 i/nTvc-+>c_ZZ~Z83z3[:ޭ ߬Lg3t3-g B|B|\3gg|2?z)BXIAup*^+&#sU-'H8qɼe5A78{Y-7^=!U endstream endobj 283 0 obj << /Length 868 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5f6ӓ09]nD#y~/XOϦӾZkNTĩ(wA-&T9ˈ;n>yx#7ahݰ^g=a}9_(,u;_r985wѩƆ56}NMM₹ 5E9qv7rk u/A )`JbD>`2$`TY'``9&*8W`TR&4`(ZsJ5RH+h3}76Xš60aG+gıXF888sέ-.x]/+5MĹPN<1\?ǘt1:˿#7^YH{upQF^odž1BЖEQ?1^׆ƨqА.yaf%+CsV2GYŘS&ƞjЙ??grCOe zYJ|֟uМ8gΈrY}Ŋъ1LkYҊX׊ӊѻߊigngfg/>Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h. ljeuȢn( endstream endobj 284 0 obj << /Length 868 /Filter /FlateDecode >> stream x}Un0CƆ"RVmkN7RI̤߯]U=ooƾ4qݰZGNc'>wÍzeu[U gҿl Qķ&M'G3Hy_ S)E~e!jءC4qjz( z#neDvBwfs5} FzqۿitXoBjߙo{b?WWZ/ԼiL)͙ \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,9Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qo{~Y=[|btD&U endstream endobj 285 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 286 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx05rtlf)OS`)?>RTO)suߖSIQg Lڮ9ˈ;~?˥?y|#7~l/3bV+պ};85wѩƆ56CN]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~FȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sxu5rtlf)OS`)?>RTO)suߖSIQg Lڮ9ˈ;~?˥?y|#7~l/3bV+պ};85wѩƆ56CN]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~FȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fL9 4Rӫ~R~J}6O7SVk-#SkQ70j$#z7Go䎛n˥?qHM0Z7u@O؞OW1Jj;THcui׸a׽`J-zoDpמk uA )`JbD>`2$`TY'``9&*8XV`TR&4`(ZsJ5RH+hg b.h\e`^bsN[sS9ӺuSrk4"nXCA8%ľFp O<cǘ_81Bx.B Àh'2xk=6u2,bق6E0F,eLLu /Y1<*T71DV3ΜX7g19=zr֟P.O{S3u9(uF: XE/V|FV|gXˊؗV|ƺV|V|&ޭ V|N+>w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsMMD>NC/SB=t].Z9K endstream endobj 289 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.R!W3njNylܬ;WWМ~8׺2{SlݤMƓ7}zn݅9p/]A:fL9Ngiob쉬f 9돱ncsO{(g1?\֟g Yg 9LsQ.(ug^/u ?L[ V|FV|oV|3[: 3 ~!>CO!>S 33>Y^ ?a!SMW,:?8ÇqG湪N$ոd<}]/pD=t].Z/ endstream endobj 290 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fM9Ηfi<WOlJQn8N[hEOrDz=4CH޾Gwt>X.Ouá{Qן tzutZ}]ˏѩ]3NN46[w>7,^e]׵͙SwPG*X$D F @F@k} 89@FJuFF#`R0JRq eF)kjBS` F5(Z#.9Bkx>w{7E^ kCXq pD zAet 8alSM3?rN%NbQDa 8>#h0\?I`\~KWc?qc.\X7ьO*ezl,d mY50ymȋ,aYʘ8 xAf_14g%cxU>ob쉬f 9돱ncsO{(g1?\֟g Yg 9LsQ.(ug^/u ?L[ V|FV|oV|3[: 3 ~!>CO!>S 33>Y^ ?a!SMW,:?8ÇqG湪N$ոd2 }ν_V,z薛.ZP endstream endobj 291 0 obj << /Length 866 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"Bg,Y}s..=}?yxǡ}n~7]m߾:f}N*ˮ`u|;M&ώgi<@”lJQ~c-'>c_::~:83zw3;:ޝ ߜLgw3t3-gKR|R|\3g[>Y^J?a)SMW:?85‡iG湺N$ոd4ᚠ}޿_V,z;_5 { endstream endobj 308 0 obj << /Producer (pdfTeX-1.40.25) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() /CreationDate (D:20241029192419-04'00') /ModDate (D:20241029192419-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) kpathsea version 6.3.5) >> endobj 268 0 obj << /Type /ObjStm /N 63 /First 536 /Length 2376 /Filter /FlateDecode >> stream xڵY[s۸~c;)śHvvv&&֤ȎN+~IY%y$>|AQD2BiRSW4+!Ddb#0DN%L砩"HD9U 7"63A##CbQ (G2 LDL` 1ɢ Q:6~b"))%30F5en`FD BHqc =#.AsH'WJ ̵(E0Ep(pVp%8=8!pG1<@"9y0 %`>= #$1M(K+C01JhBb,K7 I) I%h$h+1"O~Zʋ}>Ma䨿sw589;;Om10AKotRAtw4=ՏƓۂ*gh-WU wOIqV ;/q?ߦ4?_/Og+qZOde6H'tX8/i6ͫa \ OO ~5ʎeעs(>\N&(5BkǖH˞#cg 7ۧ;Frܢ5"L=kZ2]4 eSќ| TR#dGk%T7bԖb\d?f̆V -?$n,9tO`0CX 1>'zao1!(ݤ:qijV=)<.ewбlI8@w}u3A>|+w–5AJ[44B)"-*loBm vv nA}4B(LǷ>{wG^>a't5Li9N{"{6{J֥yL2(S("V9xsxN6Ss@1EofED> qa]m@j)ţ6sv p_A4ppnv.PE?HE WхC6sp{ur]=uJ5F%=$AI_?~r(99K;]%C66Jr(I8qgMG>:(_?`JCڼ:(_^_X4I8FI7rLF;kqn-xЌ  bUΚ|f,O5Olo[I/7 sBӯnnr3̧;5t3Œ=pY KJ60N4V)]|XX#3l6|q"m' # ل/WI5BVb`'m2T[:d'%}"lco`Jy[ڛ*}~G@ZL-F`F<7JyV7 gYrU҆jg'1+ߧU2-S")$1|0QWӯj$ IȏL|DDՄ/UO S棻{O+NLVn>ZOFgHO|p6J77T../-D(YrQ$It{344-W@>4l <78DA8F541E84004BDBCB79FC6211B25C>] /Length 754 /Filter /FlateDecode >> stream x%IkTAVwN:Ibf3h< Ke>eOA= D;?% endstream endobj startxref 298729 %%EOF affy/inst/doc/customMethods.R0000644000175200017520000000445514710267245017244 0ustar00biocbuildbiocbuild### R code from vignette source 'customMethods.Rnw' ################################################### ### code chunk number 1: customMethods.Rnw:51-52 ################################################### library(affy) ################################################### ### code chunk number 2: customMethods.Rnw:59-63 ################################################### normalize.AffyBatch.methods() bgcorrect.methods() pmcorrect.methods() express.summary.stat.methods() ################################################### ### code chunk number 3: customMethods.Rnw:68-71 ################################################### library(affydata) data(Dilution) normalize.methods(Dilution) ################################################### ### code chunk number 4: customMethods.Rnw:129-140 ################################################### pmcorrect.subtractmmsometimes <- function(object) { ## subtract mm mm.subtracted <- pm(object) - mm(object) ## find which ones are unwanted and fix them invalid <- which(mm.subtracted <= 0) mm.subtracted[invalid] <- pm(object)[invalid] return(mm.subtracted) } ################################################### ### code chunk number 5: customMethods.Rnw:144-145 ################################################### upDate.pmcorrect.methods(c(pmcorrect.methods(), "subtractmmsometimes")) ################################################### ### code chunk number 6: customMethods.Rnw:151-167 ################################################### huber <- function (y, k = 1.5, tol = 1e-06) { y <- y[!is.na(y)] n <- length(y) mu <- median(y) s <- mad(y) if (s == 0) stop("cannot estimate scale: MAD is zero for this sample") repeat { yy <- pmin(pmax(mu - k * s, y), mu + k * s) mu1 <- sum(yy)/n if (abs(mu - mu1) < tol * s) break mu <- mu1 } list(mu = mu, s = s) } ################################################### ### code chunk number 7: customMethods.Rnw:173-181 ################################################### computeExprVal.huber <- function(probes) { res <- apply(probes, 2, huber) mu <- unlist(lapply(res, function(x) x$mu)) s <- unlist(lapply(res, function(x) x$s)) return(list(exprs=mu, se.exprs=s)) } upDate.generateExprSet.methods(c(generateExprSet.methods(), "huber")) affy/inst/doc/customMethods.Rnw0000644000175200017520000001356214710217042017576 0ustar00biocbuildbiocbuild% -*- mode: noweb; noweb-default-code-mode: R-mode; -*- %\VignetteIndexEntry{3. Custom Processing Methods} %\VignetteKeywords{Preprocessing, Affymetrix} %\VignetteDepends{affy} %\VignettePackage{affy} %documentclass[12pt, a4paper]{article} \documentclass[12pt]{article} \usepackage{amsmath} \usepackage{hyperref} \usepackage[authoryear,round]{natbib} \textwidth=6.2in \textheight=8.5in %\parskip=.3cm \oddsidemargin=.1in \evensidemargin=.1in \headheight=-.3in \newcommand{\scscst}{\scriptscriptstyle} \newcommand{\scst}{\scriptstyle} \newcommand{\Rfunction}[1]{{\texttt{#1}}} \newcommand{\Robject}[1]{{\texttt{#1}}} \newcommand{\Rpackage}[1]{{\textit{#1}}} \newcommand{\Rmethod}[1]{{\texttt{#1}}} \newcommand{\Rfunarg}[1]{{\texttt{#1}}} \newcommand{\Rclass}[1]{{\textit{#1}}} \author{Laurent} \begin{document} \title{affy: Custom Processing Methods (HowTo)} \maketitle \tableofcontents \section{Introduction} This document describes briefly how to customize the affy package by adding one's own processing methods. The types of processing methods are background correction, normalization, perfect match correction and summary expression value computation. We tried our best to make this as easy as we could, but we are aware that it is far from being perfect. We are still working on things to improve them. Hopefully this document should let you extend the package with supplementary processing methods easily. As usual, loading the package in your \verb+R+ session is required. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} <>= library(affy) @ \section{How-to} For each processing step, labels for the methods known to the package are stored in variables. <<>>= normalize.AffyBatch.methods() bgcorrect.methods() pmcorrect.methods() express.summary.stat.methods() @ We would recommend the use of the method \verb+normalize.methods+ to access the list of available normalization methods (as a scheme for normalization methods that would go beyond 'affy' is thought). <<>>= library(affydata) data(Dilution) normalize.methods(Dilution) @ For each processing step, a naming convention exists between the method label and the function name in \verb+R+ (see table~\ref{table:summary.labels}). Each processing methods should be passed objects (and return objects) corresponding to the processing step (see table~\ref{table:summary.methods}). \begin{table} \begin{tabular}{|c|c|} \hline variable for labels & naming convention \\ \hline bgcorrect.methods & bg.correct..ͯ":O.T-oBgiIu\OyBx=O=0P#Tp ^ŊB jpYT;rWe=d Xp'f@|w$fݒT鞽v}T/{X`dw:1rR퀬GpŒXmsսզ;E xvZظGP=nݝϩ=E UG{MnT&!-^?d2`s Y-ՅU:D")#NnG.T[N Da_Cb!ЗY 1N߹i/8xw;S=#XH#`Ԙ!@!c#R?Pt8¼ӕHc'Լsgod<:䨄C~Ɠ5C3ZeH.V\g$,6DV1cŧhR fhr/Ѓ'1Ziu94G|)t?buyEKMc\dbKclaZ{?cyҟ`\X y°ktӯ2V~]Ko|EB*#6H))T!uPD)O/)fou6]`w&s[sKq$ܞv¶׫KBeܩ2|,q26L; B"tq=Qͥ\[SC2+W)5rJP(eT,|h6L7ۿ]yrn,}B;YB50NV?XZSFr..k1!xN\H'Oo҈ AF4b;;ef{x=\ 1FWxӬGȝa~2(L%4ֲA59YHL zۢ]풎gdK{VXyƚŊ珘 {P}xA 7{S5)Nf}֮tCr~2YWWv!=ʵL(> \ՖhxCS5dIIgL)94¬Hm8g=lfG?[4uVk=YmB{wGaEuX[r[t/^)[༽hU='U\/h;#|"<9jwiK)?"=6 S1΁ic5CT} /uL _ŌBcZ[нX~P^qgR)3;su&JPVB~PMUX33mCI) <1)Yd^:C܈I#$3!Dj < Rzw tVy]g!sɶ.*qL;{ط 3G,D!i6Oچ}N_CO?MDNz(j4%>DUB0+hG4ռavF[)Uߡ-_()8Lċh~}P-5 V] ESbҐ_}N;o{S 62|ߩVzR_#%BOq"I4Z JP #xA+diu1 Z/` ?.MD{w<+]7`|z,{$B$}esrQe9Y ތYP)_нmʠ5c绶kRbXbXe80yee~Uyz<~L 7iRsw`Kg~^JE,MIrY8^ܗ.1xZ[/ +LjTLD*28qt]GY,G$zG*7L>Ij6KаGJ"w?;Z )Y\9*J =2݌iQ t])ogJ UBprmA'aj0k'>1Jv0h]$*q ZPۈd+>-CGg۽X|Ieۢpˉ<їB߉D嚒;!xJ(7^bF\k">_*\.NrQVL" }k:j(EDԄJa7ja͎32YZYPǎn8љF DGهr>5IgIw˓"S6("kAG^}sQ8$B 0l i̋s l6>b[0$!W=֓kh imǩAw ̵4/ ,wd1 g[+RCjݏc5Aޟ8:n>R-!ݐ$zA DMЎ Sw0cinx#:*j%b{e^v?M~,Ɖ7~I0- w89Y;=FՃ;a|b[V- spz' a{RAV븖ɼ~"ӂZZz%P'P-~k1Dڂ=ORy"}(>X6er[_.GX`qO6(xc qq'LQ-U3rQ8*P<`7ypHF}Z`+>zF+$dShv#J`9U. jA5:V^n@D|{v A熬p⭑˼Ӳ~cĉ.;o^L=B{uR볜2|,K(G/X1P9dz ݱփωLY>a9Z~1O:\.@;V o5ra|jY+ k4h FZ[ y FM-e=S OtѦ }"K6oK1E| @ !E6/^_S46,xgx)%|-$[[#&Ѫ].tLF^ )i 7O̕"˥^`bV; sӾ}ty_RAZgL (%ym;YN`TyMµ[x nԚj"PhZ\8*3rt#v0u7, gM0cSGi}t\vBo68PE1z~>Ş:C`"gVss6Ÿy9G S"o&Z: UoMWH]rL-Kndm%4FVX_Ƴq "m X/clŻ_ſpC2l]ؗj-Ap5_|7{iV*ގƞ"jc@df' -b?)0آQ> &k)n'ЈEq1OHr6 @Nus<0썊-ec.<[﫭<Ӡ0̾{EqB%6[P9̶ɅTUs'2w_lvЍ2c"J}Y\dnF YKJ`= .wI<vrqݩ9u2eSڰ;@wŠ3ԒɑeIoɷ6b]J#ı=7}Ž槕8. mCJ '/)fR^~1Pɇp"W|!F$ ]rVjuǹKI0Wzp,RN2 ި.aA])lVTK`6u?b(PTk,…w,O/|kȣ/&S[W|Ký3䔺ϓ}79mN]zؤ=dE,2SV&eUt xB{V+XN(9bHq㟰A}3={zEB kuc5y5Ē߉eMo)>%^t9÷sPYcu[N_iYV28׊s(UbAa"RYC-hs#;\z%V GF:2tӏgpXveBp6^=*[!/y϶'HS@@=O6ZG:i{{CG'xB>¯IE$7:L&?d=6WM? pؿN,Ib: ly@Y:y A4KYh.hp8z揃%"~kIO *%&m<„J>票ٖ7!Z_*8$Fƀ##[2Ϧ*2V+RԄ7kn-7SkW̛twlt3`  [rJ&]&ChXyΣĺ,j퉐HOGFu%֙B]hbyLRO_cBeoc\1G)$mV jx ' v; ^3TFV&h5Y\,t^u zhPf. ` پFiMA\˅r x H&f1~(&oxR1AX9TFr4|}h^gEo;a2&wͷ]kYP8x4W m}KO!hh~|%<>nhY]rJ9ƾ"Hla}jOm½%Sj1@Ag0&`.CJq .]]s߼Zo?h*{Niv D*$BqlP5|ҡ*iC30|e%x0M@1jԌ$~AѼw3!L]'Yh^mhV'=B6}ʸ|Yu͡qcAr*8;/iB}uA!~=#fC O 07i@M-q«HІ= |Fa^̟M~Kɷ9><UOD茆,2:UVEX8NY]N77*)7.TP:afn&QA>:n¦^E[з\4M;4: {k%T/j z[@R':̿rƳb&}(ş1ɓ /X f(AcjO~O # +l`ocC1ֻMOFҬLZRPܺadmۿEtzKΦa֌ W:QW8p.$э7oĉL["Bd[ճͬ=S,$61 #"oe{: Ih'DC7ԂX58vX'(v96}76ܵ_cM4Ki]g U[jF^> E͊˱1'ٸ)2`#XUxôO.=\%yq˓TfܭFwVe݉\C|(֕ A_ͼE]Dkߣn̸Է[1du_Kۄ+EEfYnTTWN~Ne|"[ƿZ ^d[yp3,}l:f9oqkIk5S MKmf1{0~yhɚZH[ KhBK=# 3qOIA57iw\K0KYyiթI p|?Xy7,Ny9lF3f|ᐵQ+Eղ iްw:TR+5DpQy Z4kunNNEMi7B=TGnhX3xUU KDQ!_ɖ·(mc A8WѬ%d,\Gx$&}Yx16fCnZ"z͘ժ^/(@]P ȕDfE +D1!lN-h1JY5ڧoaVqKIO QvᘕI򂄆Ϡ%_ Κ 2:{nZisq%n BΌ$O %raWI30%-ס$!n_o[JH+bX4TA|pϗJǙΑ6E< Uz=d kKZzӇFWXY/~)? koX59 C\>n+(Zp70O M@/7 h `F-gWfS@3هds~A[>&MŢ ^AMe~QPX@X0-n mvFm)υ 0Ln/`L!xoDΕӤ|y ձ<>RpTD΂EsW#DkΟHʜ% ,On8–Z}Ӭt(o4|֦R JIk&%0舊Цax0@ 85vÁK6C7YމKS/{گo2A1EN'ɗR?\ #,Y[1A ڣ"6KpA#f G / 8Z)?nZSz Q+4 \(;](=@f0L?5@&|Fx],ShU`;GU-xq,*j|"-5-y؞2ht! ubTdF )9[Q%cg63G9u}վZ1.΀uLqgmt-[fqs\> ;D/g訝Z uL#s{zi/a4zv#ggy E=2n;mqىfWb%w֎9?oǰ ì D/z៫J- gMR.?5k622:=|yG\sX8M˅#IlxW3 ff^P@%^ /:ҥ2`r A؏;Z|u6 ?CDHklaę©pXBMDwŻMhki3=]`^v>_ڒE c ?q8S!3OLpF M =;HI+(Ҋ.edIh,Z'rG7'Mt9] ɻL(bH̀mLƓ*"R5>\G}z$lԥO`S"a#\oa"ΰ 9qe+EM٬KH1v}D(y6ʄ*F@JibVy6E^Ӯ+ 16ό, 9ӆ ̹56 z h$޽uCk4Y&UXwIqLV'fm՛8< Z NAeaie[쥧&eZDfk0@ G\.!CM(Ƨ߀IP#csb_e xMnn׳ҫ;YM / K:a?U0|+Q-_xAk7b%cǙ<2$XS}8|+~wD.~t*} ~j3`.Le32qJo0Z#\͇OY˜Mdζ oSQö=+sә&ˤU#?%_Mjd )%U'}'Z~ Ldv^abX)7+w_e>q}6łJ~.BqӨ9=Ϳ+"D2zmAثyG2 խsοݤ_E݄&жR~o?ocDdkօ"IzE-,u޳X=dgfA0Jug8ǺˤL>'Ivoh68\p=h]pc;kZJ)Gk]TYBR7<]#% endstream endobj 77 0 obj << /Length1 721 /Length2 10716 /Length3 0 /Length 11305 /Filter /FlateDecode >> stream xmvePܲ-ww w|pw .%wwgp{έ[j^Ǧuvrqddhjpp8ظQhiV@w4Jke дrpr888QhR.>`;9ggO-@S̓ !I nk9XT>>i䬜@ rrbX;NNircG0k#@EFKBV@F]K t(mwrw˶;k:##Fpr,As+ |SpvpO =dXZYe{88|:Z]<ܭgK+@C 'qɂ,@:\be pw_?\w.dWQWdSqp94z [{{#?\y 9:%)/`prsyx\ 0E@Y^pKo )g2f^^bm-MwHH ȧE7O7 Vh $%ԕ65kO#Mt->A.3,1Md(bqƚZO\qc42xCfƚRxnak& t BKlj[XaPn:cDTgOڗ7SXrˍwC.1n5G[]HwmL)(G9>ymI֯G`H|0 kސ5V8z 6\FUw|{ 7ylQ^_튪@5( B`H`Vd{~~7r h[\YZٽ(F?Sv|fݡmP|Ob}{ݍPΑ 愝`NreV;)PZJÔ[.gA@&ڃ-ۯb>d%b(H&s1>j F*yv~xGnۜvcK-@!x :&/S&YQqK6 dP)mg:qUzg(߈{\O&j~5Ssu\yeL.0&3[-VhPX!e,kWNRTega<0#|4\ 'WZTY%zisA u fF`&M;x`;>CGws;<Pvn~5bMb"PI HQ2HRjW*P{jHj `X_nԫpE&I-۵ /J95eWLAujP>._n <3p? w{{z8AY . "(Pa͠]$99>xfS-O`SFՖmdalh䩾~5E:"OEF:DdX" O7w<.AWdîI= 89"m8 jTǩ: U$<@Ã33<"hFDJ6}ɲjS:wթQR\mLeɘ B ]>+ eCpIZ #R6^&udO4&{ K{ ;,R>oi)"IKx{Sr &W5P['!!YJ|;5++/%V~,k=@"|:fB(`hv&"DuGXz7jD YA^|*'>U.9ħ6]- ^-j!ɀNN#/0O? ;a1T~Ҧ4DS^i>>J[|dono|)6#G6]~w ,C= 6u9ŀ`%G|ū{j죰m RJ!L> \s?aL. -/9_sNG﷍BdU3>@nc UعҧQYk9|~žX}S&QީPX smnr5{i`Boțu<{e3"އCnj vl`Ld!P^D-Pn%}ݓDy:x'BoN J֪ATT5TfIP|lGlbcıSe'^sR[XAWhm[tB~3 )mQPu,OXy?Q%|UwNe{)Yքn4PIH% Ƭ¶w9=~+ .dQ'YvSd\Ef~dk*u[?|AA/Tln$oB'z7frAms1?WI‘BR]!._Icͣ192ơhv*m#꒎{sTm7$%ebG'߉-ZFݥ`Yq&I}-ϳ(2S{%<> XւX31e!𸒇YR[ Jt: ?I%J*\%'wDKjڢq V1^qW[lU[yXl}Mj!˦`:iu<_ؐ=Lmn4rDqVt!a=tC˦mGANHd"F:Wk8a6%[5͉e\f=a+fΟe{AQ7G^7Ƽm6ўB"f;APZ]<(~Bx HU 8d9et\˻ .s#_&_4B@1iQe"Dl?묜4,!ȥ'z9X8Jc^h&k}U ޝ#Ni^-::K*?WZ ^Wg2X݆Y敯SУ?MFD%#g/SC lܷ8qP^/3o/k&3zL[Z?(th>%F}9L}Q1rUӦ̸=ץa޴Ya(`f\gHita vJ#Ф9ƷY,~C)v2of:!g0wǚZyyyc#<:YA[Zr{ ?0AЫCHaIeGdg^z/5Y+_û1+ov6@;kwr[CšfC 7j/O{\$^X 2#3HPw{ε!ZCUaQo m56V<Ȟ1t.qVZ_(;m4L柅=B i\x#\?~yJ!( ~aZ7}hO'Q+RO $tI6@B\TGŸJ}}bAaAK'O\".ґ mftj~ԁ9{oD> L>u:O"y;OX=hpݟ6m~)eII8NöA{kA6jWE~+^Z;DP=˳CZ$~3\Z.(R}X.Yn(/ ӹ&{&$zdžY}ZcYp;dr7:-߶B\ehq_u_ry  wҪ`?8f%%5ve19߿5^'qZW2G,ovCQă"J r, unԋP.xx^G}@iKrbcmD9Td Βۺ~HwU0g\L!7MT'κMQxlHΠ'l9jx ;Sݩ#]"25y|x T(~] ԔSrlj )ű,4JE71P^?.7j-is xAVr!Ǧ9Ƶ _z7IES 1EO0ssm#6F9Z7][Pe` Y*79Tkt݈vkؔI@ol8Scb Fr%.x>3a,4P%-ud PNZ*U ۽OPinC`1R,JO'Pޤ;r3E MCQ=JZ#B7A-G޼k'Cտ[eF]h9dfĪS60@gՖtx?B% M)nsiYXslS1=0t ͵DvLۜOzG[W}mY; ĝ톴"/K&7]) _n%5@I|$jd_]n*4eum뤑إurkBUG'&N"IҚ-WPXZ i#j7{w-әD(z+\b]xwj5]O^bphCn}"C +NfTq!%4F-gCVExcdRaA3wEA2br>\߱y~{C!/T8\!*_xg\I?9̟Q!mjF61Sּ%Ѧ' +" n+c<4 hܢeA@"X/rRޗo!v݇=)kAw?6{ ? NRb' <24xҒAkG2|!AQ2A&n/C>Vq6 `S̯Tz?pn"C^~/Qc590yzά$erT{؇B; a-yKZHΆv0! &Yel%.0<и3SPD *BWOvFcF_ 0ԶMG_])ɡIԻ]ﶏ|F'lkipO])I|&@xȷ,1 ?ӳDýx$Q\ gbcC22z"]"TQ\l[uFmUK8CA[/D2N*T OP04Uq0&Do~Øz DZdz? -\k#!հݒpwP· LBȶ9]gse:j:I7W&D1^EΜ|-i൶ L8߇=X$ȳAzPk`i/*[7:tVt),S(* vB]=t]x^ 69l2M]{-.@A4,,=?_%Cj*UPY\ JM<Y}?i|wD!Bz<ۜ01.@bϩkvz$ OvVwv+QOXHP'WT,R!Wdz pƂQҬj+BWOIs&r ~'B K?Qkvcʢ!W}@:{l_xy[DT\4YfvtR\?J 6>IƩW(v)xL%X~QP{U9D$$2a5@6I3nk w6uf/֋h݄SUa(-ݕ]UeQ&d=]>]|ny7o>pAen/(y6ϯ I@6r2pl:8<k¸Ǿ/XPB `KLL،8z󘄄& X`u5b8l{ݍ*SU#n."GvE9?'-\KH#_Dm]"$/3.(<드+$0YHՕ .Kf˦I>/.83 $ F^)7' C_plZFMIO"G%/Nj69T/f+Ԧ%,SHK2•r9208JC1Ź|W侩p{ʣ| 1">OsͬV)arwA$)⏿ǃ`yo/f5I&'.Lp_'t a̹+FjA: -NΒ$W%KgCkIw0g †A/2 uQ_s$ {Y416O8oP"040O#o*[ h~?*]zg3dѴ0 $$MMK'`L:~A[Y%^XCў^<ZC%n6\hMR;}u[`y{43 h8jQY.49ǒ 'έMOxH&GXMO:٫֞#]a ~M3#iV(> |Rz˟mjlmyO3w R cyeuIIgqeFo$ê0>D#0vaYYdݯS8( {{I*If}_Lo44mwZ1Vuu"[v7qh[}԰(qX%8FO2&f~ SX!D'[U:% ,_vD~%E#=Kq,X ""[Ngzz!p)L>Lwχ-VlS :TC8S,WzPK?>$hr:juh] +c2,ʦ1)]\*Q^#߈s F‘wAz s 7!fXG-A=f^;֑+p Fcch;jTn[ĹQ) 2LZ3"^Ĩis(㽝%0.TIX r^DGl݇9m!ץRӨcƔf<ǰS{Xcm#INM.ejR%_ĝ}}z+s`ڶ[5wv}>]b |p)0M5Nz>EmCZ CYR+]q.~qo F"IȰMlf#R*7*F˞`);Al"f]1 ;<\ zՍ OQN_X!@O՛x ,y9Q.&6InJ/J WP;odMA,sW0qޤ'%OEQחȶQ|s*Hx Ri <2Q5KJy>c"d/᫔r~ވ-MuςB gNhGtDZ`e**;Pƀg t<|R!Ѷdc}H8_\25IM ID>Jd;2 SuSz)H(Nqsno ڜv,:B;:C7,-bmq%Cg7^uE'$&:5‘BHЕjwyu8--c )>XĎl z 8x|:Fy\=K&˗ >~APӸ հ`($ 4n̿ ݼD򼡞6` Z =TdY \vsJRt 9@ߚs<{$<0rl;i1b\Fg endstream endobj 79 0 obj << /Length1 721 /Length2 10433 /Length3 0 /Length 11033 /Filter /FlateDecode >> stream xmwePͶu6@\0=Hpw; ww{έeWzj i&́DM-2vCl%@-@ d`c!Q$ v` K'gSMkc3  M-....@ %`$:rJ22J-t6 [G0ؚɑ.  6/RbJ) u @Qo#_4_1kY2߬ۿ-f$66 `"K79[sa3grt3_ Ybcr|lcm_"䜌 fkW9`7Wjsc\6Alw˿m!PLBGOZb9쿁@c?d3M;9zX_%.qdba0q8|\]Sg???L AVɍ!?}Ka'4ؠ~Ota- wNԉr\QHM6N(Pƣ(¾.=RZT>>քhژ*_:Y ҏsgU aʰEb.}J}Cm1T`L[睙*Ƃy-9-`.Iqٛ1Śջ9"Wvuf9~NUت*ud؝b-eoor}Gڥn<1MD'LFOe, 3m0d;%44i?@ Ow`måf\Whr<>R`xk?t6@J4h4DS$ %Dݷ?;$y;f/Lt[\sQ5/- 68:|Eυi#4"Oth 4qJ',rN<~&V$>EP}vv;>"B05㝑~0A#P+1=;L"CN;1 z$)˵tp^l҅7EX t}*j~J˟skVZOЏ/؈hFZx0}W8ʟJV3Mq笙G %۴B3Igw{axjU[U?#;.)=)ol+ j~)qkxQqxYz\"/;'?KPiNwF\ cƥ$)=3eNKIqEyO+.wt )kG;l(zQY6KO6G1 B?L$^vQ5~ZVf$EQQ|pYĮEwM<]M;-=".ɐ9/IGxwPl9J\'b{ޓ0.͛vRh˳GU%ذ?=9)ZnFh' uMk{cq@lV`2t菹iSu%KCYW*9vlD /i!}a[)QanR\MSW mIxR/hD7uGP ^=d!m|c4> Kb ^V'I$L2 Vą`SeBLp<+p<{a+Sv7r"y1ugED$q{V=;\<|?;'X=EP-?*RaPV>ԇM`!l%x'?5h=@g*17~h="&,hD8k@'y\!oi}v`ϟVWVRgf,cϋ!qU^Y|0ޭx*buiSڦx:W$l3Gn:jII0U X9hmxC6Eg棇'#pKܑ~61 f{cɂJJ&H) aShU8=I( ]yS'O_ 6B+3;m*Q :cC#MܾWy56u秥 "岷;OI(pYS-n`O7/THzi:sOtA-u[WW*(z9 M 2d%Ϣz=m ߌRnD)odm Y:ge!`u~ E9`u~j>x0Ja A9%xɪpy2}UV$B`$.Gq>dYEn]o>ģ`xXgny|~Y?%2P% p+bw5Еii`/ l:y(KfN[6Ghm mplL*,f_%H oTBxVI•nVO'G5nrݓF *JrG戈Ce-V {9bdL?%k=5Uعn6cy+ Y0b nu_-BU[/q3&2.xsYgNeOHTԁؒ|NRiY-B_GP0T\½2XR\9X\..LU(D[ʊ߬~Kk1o 濾[;6y5n11H6}/|黎T7إhY^"0ܑ 5`ױ0sWO!E$,|m[?ZCBU.8*7duQRP"c:mݐʛ/d硕Y~ jl=&dT@z5zC<] h|QLv+TN2xPT'wԾHuY%׬oȖ+_?NXe'kD:Ɠt[YP@vx^SBq~P@wIQ^srʞĎ魀NҔ*2P;;?దc݀ $q/^~`P7ƭFgox(f[Hyy>X̴Cn Ϳ+5<+# , d$᠕WW'sudy6 0'lqS4xž^˶7Ͻu}ꅏLet`v25&ƺ6 2"WYBߕo)>JJkrh+ 7!Toywo4FAe^\L=L[ yFy)ȮL"\Kn>ʡrK9PQ9Q=3q [!@|.g̗y |3NC(_2uv>Tݪ%rxN}"ddξ548{]N@zUwNaê+-:_;w/P.:Kl=ae qGÛZIE6{?t%T~O*@q+.&n95}ի Rҩe,(> T66ܙq\!-}x:Jm/R=Vɟa{N ʰe0Pc7-] 0 b`-)#~hB=ė5ʂZ(^} 2̖ZH o űTv1/; fO%orI.l*3=\8E9Ξsc#i6+4&YM3˔ԉWQWyU!][03$\- !wTCcqt1 }K{ ],_>fǮA q4Q]GqN*&f<3{#+Q$(+weFDk{i|r`RroidߘGM9>yoY}^BQ͒h2(-34E2WyXHbsdm:"&}?E22cldRc1 ity91olf[=qn7|KA U~{cOӽKv_'{!^/ڜc~빁Z1\<{h'ÝϤ`wM׊ݏ)<J.SaO-.bF {8SE k*~.IOxddsϜy+rL\ ~kFhc4ClSCp2ԭZL·&_MxE*%n4mD0u5҇|}-J{5LBf/df~UvD- 1b %=(/"iϯ*F>zøѽNJUG_N(Yd]Eƭ;ȾL$<),7Wi%G񦖥K&`}u,XۜμpWO"c^BލTQQ8Z1=9I"8U uuh$=n}ʫ9D:\9;*`TuOQ4t Wֺ6*pxn?#yI Eͱm53n6er {!jI1bC4Qsg 48%jO* TY=bCZ`uK#9rCW /w5`L'nTb0:޷YJSheSR:gry/M13#k/ًy}ꞙyHXzqoĂ3)p $ I/]AC+rƊ|0r#5aY5iٔcmGh3ygJAizMHjMU6{=\ַ?sLSxygZ*n ~Yzl{_gВ;6(;;LڃB`A(C;E/j8caP5xả0zrGߜ)m#YNec}}7؞E)$X Jo"F8};0Y#">.T4%xDz, BE  (׋m3c}SMC:ezHR#~Tl*=9a+$@  Z5U+ ]u[e{e#zH6  =`sC%!#$RdF׽O;%IR5[Uc+⥧u 9}XN\4cP6rT9ʎq_3Do7͞yj-5_;#>7l)e4gTLrI~>'p_^F[6#nzwA흃߫Vl{(q 0+[:Q+aK=dac>N'OD -ꅡT?6N}%S"'pXMŚyūzA,?l1*^y0u2._jٞ!>/T; zEFy< X~֑W Lq\=v۟'׺4Sq~F%N8>!`^֘nPfaS?P3K`Tܻ̉=R᫮!8 a%j3abR=UX|v!E?v[kF`/jltq~!8ꣀ?DE32jqkbQ蠼I" Uℂb7۳w|+Tr64K?Osk o-氕ȲA)œFRn ZGj*͸3ԝSPB߹+Ud2|KO)]rW#@fƕ9O&eMi:2c+c.l(Ɏꮒ{37!,8΁T"Dyo݋B [Ћ6k\yB4-~Q~.U:Md jd ջH ] cWZ/M\ru"@lOld_r,f _M7%t x_A3.V}w 㩧3"Bn-YwL ?xWSH?4]%w Q1HN zD\15) l])e丩!ڠŧD$|!{=Q.|Jifv^Ehh ~z_iޡf&M1ly tP! )G@Fj~p(z |-F3x:u˞WhrbX(yy]L$H*J|hjJ1 ǎ[xBv1t/if̣TڏX, T[_n#gʕi@EucdeKLOX#G Énj@}E#LKy@;dȆ̙XW,>f:Wr?ФiUyU yKMH6VBN6B⇆+O.;1'wg.Q4ә׈v=zqkG~Kz'qbfI ]E/ 5BO3. ھY2ڰTԱPq.w9fjo"oWw'Nt-C8'oڛ &m0[Jnv vѺ!yP%O֑53G'ui*ϲzR>#zA˰+B"[ܔSsl ^{I(W,[`o4:rRGu-ܑ6U:4ۊٌ(26d"_*,_(YUrUt7C[hfI"T͟Zzo#Iz(/7ozJ&>l:]*=" ZqNQfU^P튟"34?$`\j1D"QGlJ7;vanɭ: Sլs~67̑OlM{C,^yIJ[w#C㞗MWĵg{t@.` ofh[qMKш f}!qX !AT:NN9HM`<9Y=ie?2zY@G9a2 4t?|n;W!l,Mݢᡁ!A*"qQ gqeBFfMPh͗jPyyVmRy qΑ|@kJ9L)3BQtIC=4(lYke"$2HkVZhw{D`c=SeWV={E|5OӾ+o2Y탐 W N#J(kK??|C[V6 )+q̴RHa:ﷹNr?֡6sw߸S endstream endobj 81 0 obj << /Length1 737 /Length2 27441 /Length3 0 /Length 27987 /Filter /FlateDecode >> stream xlcfͲ6ܶ۶m{ڶm۶mi۞mL{9'vO*YIF$no`DD PWVabfd0ҳ8XۉrMMʦ&f?&L0d{O'Ks 1տ5CK[K'Mٕɕ'eSS) )%/WHڙ:]l,ƦvΦT3{'brwvnN.fdo SWW0 L۹8scmjh.K/ej²"(9ڟ._$e $OT$ /l@Hu}Ugp%4`p9<.5'Dk谫#:fh') ïh$eXXi:y@+d)QX6QWP4ILgi^ ݧb( aM야%yG))s`ۂYN )vcS.F4)ՠڝ_x}#$ v{G1Z"PBJiVGS Kly$Mz5Q#Z0&N_ N:IE!7Y) h˂/RkJװq0 C23 ^{nbg{z̖@3aeԛƮ|Г;F=$h}J^:@K=h7ȳ{a7e{8K(&Ŧ=9o FThVbDHlwGXTu1e`PW2 S YVv8釄=yȫW؎C!7nN۴(Sg1hfE[*gx}0FpUn!]S |?UA|t}0:m{E'Έ 879G({0hֈqG ~PaVR.gW|T0U9D ] N czf:yYZ\ib"` wUB4ݦOIH۱pasKs69KɰCu; n3Y7ZElnK-U;tA0^:Wa}5OHc7 *fcZs/ H`ѕ 0r;7#U}lÖ#b͒;4%cH50[ #07h{4\"eHŲtм4@teY_Ǹֿx7 :6j^S y !s4kf\8"hݓhQiPǃoWT0 k+6z4e@kP9%NJP+7FW7  }$&O/H;v*խ_h4\4ϛ,G2^9!@gnw 7?kք&L@WjnNd#U'02Ap2S!e8ڋIhL~z*_.[[MpR/J󯼞BY@>/׋BउJرsDP,^%QM+81Rqx,H%WaC^FIc(z]Ο'G-!+y3$b7xZͱߖes9 nH,1zY,Pe5%1" ko:(0+ɪz%[GX΃؛=؎ןx7{\PBm9 piޜZ FlҶO F 4qdY l?}=3/̙?TN2L< =!z<ko6pv#ЯLs˜OzFCxRUkIt)QՑSNyNgk0\ۦ(f̓m)`PD7$5gt\΄Á}~=9Rv"&I(8Vc_9K ʾz9v! e$2ZIh3D\ZнuH3LnMG3 rwKa؟nMA?ǚ"lq$%y=Y'է5E J׀Zm l6=^ nօX:܍Bqc$ao`[\bJhRW`zY]4(y\2?a͞٢z 1NH2O)KէnEa_|\^af"56D_ QbKQ'G j:Se}kdB w 38 @1p XckPωHi4 a  d)e,bg׀5ʂ9hz31dzva]HK>m`쎖²5-"jwBKq懓9xHI~׿\); tCXo^B [7wC&]Gfv79eek=Ѱvt;X+kv-~h.BE]:BSi$ DS@ |Pd?tk ˗+kێVQ[BMo't)fcQVϔ4tԶ,).mc꧛mԬȔ}Y{->_bF !.{0wY-:?~B.}(gn#\/e<YiW*/f#fK'TzDe{sYTVn̕W;ܻU!V="~RT80ņ+baYբ1'q^jG17LW15=Q."&`/@ If:. l8/yIޡoXq;U8Je/H1CdggtosNed%̇><>[0Y\&g#aCߎ`e2 oKJ֘Eգ|OŨ}ԝKkyon݊/%p3҇әU56Ly ^'n}%DafNGo(2*ZEvd*G܏ˏ0&]ksIXcmIJOb䣌L_9а1dF'0sʹ#926=)9#)ۓJh #ip@zTP./afG)_ܞM)ɚ$AMC~?QV E`0#gnulcϨCw,z#`C*Rտ\y@zmA'@8j>X>!2~ A[VxϿF0ch#.~3+Ei ~E4XDC" jw뚴sL'$/? n\| eXnqJ$) 'Ż;D[ҖvꀬS9(07\)Q[/nP0:̲Ebw,{-P32P @N(\>^J!>:v>;;# 8I &M T/g*(*E- L+}.Tĝ30jFtq;B#|] YW6iT*ȿPx28 w~AEq/z+k0]Yno6[Yei]ŀ^ƋD{L~/\e,-B0P򔄷.j ǁXLp;>%[S4I/"8~$(aR4IƁd41$ix;Nt>իEY {4+z'Ե˷gf' mP̠L?`4]2clEN^{n5-SUkh,'c@f$Ѐ8uCbe_vM@|I@m;֒s|)|c[^{U2@lq["q 28cW2*n.=L:R{"gBZHgQO}(Ô3V$yACESc6xc~.}סwíԔ u!Zr"J8cwj3go2]`ukDp˫\ΪBŻ2#cLI#dc ҷɭ,Cy_-+jVLX x*UK3'<4*c_>^= =*7bg  :]*k}'֪ҹ3;Br}yz=% ߽= ;y/C0'SejR~rr|BްC&G"b=A BEA@r^S onbş 4[ejLR(,xۨ#ma9^Hԇs>¬5 mCNRhS"̄427vǖ^AkO+Ց.yW@!}k©k}nr&ΏUb֪UK15:U4TӍz@NKZ;R5MUn+v|i-ksC ;k͉|wn%ཪ@\5G񗄏. s2GG+܉l._(h3P c dFNv@ȭ͢}R<¢ԠSŽw P`ƟG֨cK̗*^ R)⑻JܶVV[:auꄒ(,Ex WP-冭ҫѹɔWYg/B'K4=$+Cv Z*I '˚=p)ܹ0{#QGP hc[($)xez9'S&6 4Tצ -+ WwdnDdI)xab}9 Rs [QB{=&-4ӽb[zC42zG=԰R[/'q+ ?kKהs):{q [%&Bw9m:;ؑE6=SN}jåJͥAvy &WB :$ш%x^wG$YPt 0-ZM.rTVe17o!B-8É[r2BqPha†DI<əPGt qw8[jٟꅦlG0& ^9uE6 !1ҞU˙@;JVJ]'HGx vjTr/^g A&%j/Y<Ժ|VxZ3dLd5]W0+π ?xX SwᷣU'i9 zxض~i#`xa mHaff^1ьc )^`싕&#;Vu@cz_NS y[Wd8s>q{La =7*p3Ԛ+M^;DcN Ny-eS.XRa21~k3BYn)Jj'i߫-N"&t%r`O*wl°1=L 8ݯa@Gydy´rcr%W#+"^+Л6^bU51ZGʶV?㚞ǡ$F8i^}SהIy"5S]aYHlx]8TO;\K[LK)OpS&(Z Ep`z`unIJȧ끑HyO NGdFj9f[4kt.4ޗK)(}PpRdҁ;(%SI=)TCs|?A5%v?^ه{Hq|V+:ҮJi ۳U먋An+\qf2zĉ uLEr<^%F*)˿Vu ( /5aFu4R`OɁVdŅ g1C;BCϖY||߈nޜ8JMZww\ڸ13Ohc_Z*ԅߨQ[},yGivj{y*\0RbX03җo.fӈaR]0&UP>rÛzWN: +WMUuK[Z1"lL5+o+M*kc ,sR[E8 n-Ģ9OHgdqK%=,=izDBλ9I{_;7F Z{s+j%6` V_m @t 9/VEFK,ĥ @RY|h;m͍poPCŊ eͪk/ʊt3 á+& @<Q!aPm%4_+{/UE&KHbNQBp5ktڬ$ʌ?np"tϫ䯤NchĞXT_ִ+LX/:1mǠ̧-H=.ux?W.y: 0X 2cN}+`Wwr8l>{i82KL*]a cj|n>NBgfR\&ָ>I]ec--,BHߩf_V@"V%Uއ6'òQw҃Bى Y-rGŔQJD{Z_eSEy'9SFo [qYk+5xccl&wƪous@%A*;2Wњ? wV^}K7۾`P-'#Uxiw:\H#r 0}Dz qCߺ^Yە*K7cNvJΐA(6e$qbWEĒs3P)\T ["`y2J[[4_Y )WYw>2FHrnkD8qc䬍8TeZI;q}D'>.l~qD1ʵp/ƪ7z7;01,:% ,/l=P扰Ƕ;|pW𗯝p/LclϮtZ!rLYOsf鑕D\ma&y9npr ly `82 N{OЍSijS.vEd KޗɍW 1]ߺ+5ge=׿v)SYmΉ֮b.Nc4 eWZcWIrOa>ήg޷WRo U27ɹps?`B1sՕ T*b^#Jf9s'F<$;/8SY*z|"HiV2\wp2v9qyxƎ͙Ö0Y90׃utp[,2X(;gA-EN(B2YTCђ P\MGU8H1ڿ:WM?]{ʼ&r͊89ünwQ\2IgI]>,ї:WܭihWƮA҆v mf'bog!yoc LOuJI˜/:,##nYtq# S^A(q:&iB$ޕdimJz ӌd}FmWL+;ŇPjCg]DY7ֽd)S0AUQlobȱ\艹l6!) 3kv?QuO3] 1&HO@Y. evY f:\s{h0DڬG: jD/(J fx& +cB\B1AY5Bޘí.\lPvXL'y)y'CM0q39so/[Є o *cxA/U_fZ)+wZ'`# tAҡ`K^KZ|lDTxגPZ9a*tOF"~Qũʓgp$ί д/.kLJ(ZF?)u!'j ,0vkY`:1?dYV&d drQ 7%:~UFbN=%@4L[}1ǁ|m`5;rEEnMqE'>C 3 :ILW gZ5C T*wO$7NuHxVBLeqtTq5|])n[82dQ]+ օdFdOh0Sg. ek2цzZ!'dIeʹvTR-A]&aG(l"|X L:6sҟ)3,G5V_ Ű><,e#2|.f-Ylw#AIiDH$4z,=@kw0RPr,`+:75BgAu E1&a!I :T,ub_A\FnL?1ȝ! fUT ߵX5X=s4.&*̉urJѰض_a-Mڍ|2Mi[`f֢^\Qäv '@2FRnqsޱɭ6O?*[uz?iOF L7IxEuMMVCjOKֿUQL<"8<DZ`bs*D޹hnAnFU^JO1~cƦ4Y(&:0MtY);;2)"*ì}7?DB'"'~h{;X=3l-#P];vBָ}ţyZp ' c~5tcMF~kEC "P--{^.ieik$RQ"WE +hxl .$D_Gi ߃,rJ;QdQf?0Gbǯ`vA3K8K`qTL!`~~t4UM{$HHH$RZͫ>ba(S `g2SApf y#eeZAWa𐿁)Â:L[Ew!蘔r/ a$lRNI pK[bDa WCMDTف_efdz3рȩЅ_B])9FyR(ux_> `cG&~%ب%=Wka09U{E@j.y FAX]m~-r g3[&نUL&-T}oA;CЅ,Ih%KUBnȆn`%#p feɿ C}hR? 2*o?8uP>I ;ՓˢrL+/ш, ŵg'Bbs.8BZčвEJ0 ԄG+VO~]bY26X n;]ħ$۝vXnG`bwL_x@(QRWt6M(#ݭqJ{2!Œn9hF,>~+~:+YJN*n.% 4Mϧ[DAA13 V5nLQT%ǁ.6ܛN?E\WOl] JжD)™eXv2k@|!Ss} j&P:C9=ԛҬ8-x]gx=S(S͡t Ve7t>>|_'c'2TXl](.wRԽB]8\o]-?u73P2C-Z}F"57O0TPٞ[4F:v_ct5YAMai!11i YxdfA:"&јI E׆q1/}0寥$y*)SBs6F+ng3!.D7DԘ t,N{eBᅝ;o94 Uĉ$X*} ۞3c"!T+^Ћ{_;]TmxPo K`%r)Ғ6JhRiADz*S+לk!"S>pVKgN<*l7SjZȅ3j03Y}2iꆬ,bJSMѺ'=(+b_LލlN,n3 sZd<"?Bw; h5S0Cpzk;)9HI"]uk1t-b0q+ 36{S}S*yɸ0d~}*o@e_ w D?]Jޝ[E\ų+O!G^ oDIٞk~Axvq,ŭn.n(V`1MR 7 w4qp׃HвEtlcFX9 /BHsJ% rPV znr 4>jPV,RobƦnl  4sn'a:gi["-<̖Ilqe^Y̼q艃5k]]3:psygz+~i婄F;"˻,2{A2J%\qv|vH85'e,YF M\K+)D-Y#/l/`|<c3T鷚ShIsf:2%1TRQ&:pDw >ʇ[`)එ~v=x=@@b^8wm)eŃ]_7T:\Ԣ{ouY9!1L vH OgKўvw#.i0 }ɗKzB~c7vi"36 ͕LPmU {7i8n萆\&WS!bNhKM)6Uܬ;JG%],Q8z\ AG}-IPUÊ L :~{aM+XTOL|=ǵEV1\lok`(SBE v=)ChoTQ\wօt0QC28i RP"Vm^\y=P5QfUc"r1n]l' ND;\0}UBGD0Lͳ^'YuvCUR[Yv>wՃtڀ{N]a8:g x f Xo[Mx.yn5m&SEpݽҵ҆UtjLXǡ-SZ^*q"ZFuGl<|j9ϸ!]`Q9Z־'yZbhw -AFU Sd@#wͿYVÐ{_ovڳ5y+RG8**47G9nU>h^ *H_ŠYv }"XCۆtChΤ{xuZYk j(UU ¬H*1llBAŦS vjr縣?A?tejn剫A߁t*:] J*-3^@(.K_wsmB77~V^d %kFFBxH3]Y:G99gCX4g]>ʞtՎz)d93[[f)*@!Et7i1HTEGQvHw]'I! @f(clS4ϯy}e3p&08eVI *ZvҾ/O,L}p@J>iDJ;dO=ĭuSH5}GȲ}޵>6ؗLQ+0wz#d>DDHy|i\pĈ{ʞ X_k%7L!7NlL4@>W,0L>+*턹`ZJ tJR^]H+T_W%.aБ5 9LoFA5~%l# l/Mgv&=I\HG4]$vhJ Ba \]1OМ_ \`6jcJſ!1!s{B}ُux]xѠPI;~5q"k$~_&x_zqrO9"oXه6RV,iOw]&JFߢ,nkR$Yr{و`wLH%)Ǝ|*jB?#-n 9lk! {cɖ+(sR5nDb Ҙ[ZTcĦ3 ]etɛuLt'V^A*zOf-<_ot ȃp3z&7/bsϒ$^΃SU  0 :otM & )GA栓y E꾶ZY&\K:$WvPPU"Ey^\r4#,9@PqӇR0Rb6YF?-z[KifIo@ $}y00 ꄵrڔF!wM-j{ԬDZ~{+dV5fg>݆DYҞ)yď[ctT~#Sd\OjOc.eJ͊=o2 m>d!V0yX 3K ld8:4,dn5ꄈJ%`X OʋbOr|'%kM`fm-Y8(=gʁfmĆ* |qrr g3DcS\].ftE"F,0*|59q,5݆'dthBP>?K΋(&vi9 A?mL*'6cOSXEk&Y-弥6_Xq* r<#YPA_6*b¸@<-b9j{K9~1uX'm=[:xǐ<`-ªD"aB}x7bHKIH~O{!YRtN18Ǩ9CN@"ld%|_,^бw+!Pm [Bѱ94?^)GպfI2 (zX(Z|XAu3W/#%%C5nɳŮrv1U@0fL(N.HԊ.`Jn bK3kidt:GeDlÚ \0Va_*(pI_"K>κV|x'Q݁wƃBw 茣T1lQT7Mm1{$ <+!K*dl~c1]kbHf,_l%i[7srA>[Ĭ0r7|FH!U+/BY"Z:U C(2gd45f/X:o:3*v4Apg|tDhp:@HZA6].8TL f ܽ_;abX]Y)u w/?2?+lQH' oފ2v'rP=u@`tr]/i! '>2iV_$v.8}_s$M Vyퟖb'T~gY(twJq(/N` [ bbbVSۓCsep&ǃ:>z|jS[f( r]CáXPN5Hi|7ְ/Ua|v'};GZl[qY~]6_ו1PRT_%qn~G^HyFDԳ?" NęSnR2"FpyŪ#_Y_)w&Zd"l?;=RhX]S/TwVwk7.DaSPzi[!(E=͈.Hu~PG|fgr.ȵ P8tgPN[])B(AXfsG~ v hr1~/eJ&3nu&R5 c$Z!.lo [~DDE[\а${ W13}#kf? B$`㗆[W:%/̍5O5|S+lËiPԁfeOfMQeE}鶴KpH6WYW2bJ*?F. -A F|}tR5y|=pˌ XD8W10!TT?LJ/Swצߐrkq~ƍK]m|[^+R+<*2#%# G0S \rt|{Dn\H[ sV+ #ύT &?c{mĜ6Vg'N]H}OEF6̽2?s74i1jg'ٗ>★0 lG}9BnwYߗAP&(8?wHs Wq^^|no92!^8ʗŁZʕGᖏV;;\zmZ ).=זYj``F&&8@MC.7wnEeP\=Nj y!0at7h髼h/F_(gZ;ܒXegޱ H!FPi!jV@Qd7t:Im[&FF)BO&Rd<|x2)}[m|=Em[l ؤ@PYleL{"tBseB&~F+veᲜ9R6H[F T`Z 7&qtj;)%>D1f,&jѯ:%0=66H`p!,\ӡs[dؒkݱ ?O(\3y-@'+8-@N҄'xt\F0;;^200|zuzXݨzя#˺\U>*/_=\ m*2'WO*"vIEnGlߝ@=T1턣;IIqݛ[$H~dy } 2U=uR 1~#1GnHܮی .%qmxu?bZF%rYʈ I"ъݳv`k=@AMM$eڃdܗ˩(ԋ%:mJ?eTvSR堈wa¹\?޴מ%]t09D P [%Tջ;ꂘ1=BWe4\Al _A[,.J" )hpݦB@c=hM*YoNKZxͰpB 3P#m>c9dy2FNk9ӞWVl0) h#FsGG=)f&m2'LJ9\`nШq.D3Kf;y ʛRn_ n<&CcrW'z~t{:$IDf߰WEzj[B3l$#qAʢ$4u5IaʇǤ*wC]pޫ-O˨ ׺ 5 u|˴2I^;w w[L8A|kqa Ө.`(m$Ùt9&ӦooLt<)o|'+S! A.j=yz{eҠ\/[b<:U{R5c`9^!akq|fKx(S8jWg lw{d(|i\7*#36"Bc2%70Pfs&TF,[WnL`8򽿗Dq`FXUW'L7j/1nRr*I缹—@r&{bM=vf0'i1P!ԏƧב#Jrw=/ltp;Bh^~rKȤ5h"4l6O{PV[|u' J*1Ydž.͹ 1ڒ8iXh5kd 5yk։b L8^aM&yc1|Q\9Z2\R@\|uģChBP\AXmӜoRz0I4 rêKՖ#36%ߞ s!J([+qXA8P[cKӞBBޏ h26Y!%)m> z˚Bk!Vt:!S80yNe#GcYHf:[GB/XtUG ~c<3S"嫡M9nKsb2:~FguO-<{E+bR`]z.B8F+_8|cM7OtS_= (x3 ?Bߟ [B.ji C@A"p1߂Zr}PzΎV>\[S̚7SZ.@OOz8f(8eOa|9-ߓֳ;m27(WyϧCA,q%sP Z{ FQ<};%7L'%RPH@*Po3 ՝U * J}TiF:duk U(QDez%I`7a>q _דO-QKfd126vׅ&Kpՙ5l{ƕwaR #!bPd]y79ʓ+t~C#,ɧHqZb_lNPsH0U؎(N*#5ڧT[ҥbaam[|LpgϮH7W}j|R` [>j$ūiAҡ^s?rACN)8+f˭^p5nFNDCe!y0~UŠ~=`_'\fuVmFn }yx,\K9B?reogk.g`!b%QY䘄Ş yq36!D"4b[8*X}?@hǐnUgU]f5xB"CO.:8b| q(T/ma#fc4* Q<:Q3cI}gxyJi? ZM.W&7 hxN{Y[7(<8wcSP.%W 'mRx;#,TTm0!R=3#=Nm"/?U3U+вgk+ɷFl֨_uobE)>|~3R`IUs^bu+88 k{Au0 J:*~dlj^H-T<?aXr/D5e!UL+a.) s=HT1䮌/hI%%~ ZE}m :ϫ!@6^tC4s;v) ˜w䀽ߒD/BZ kǚ_ <0?$}iKJY.˪?&Lnͨ0!eF/ꑖ!+S Cw0jw٢}v`m?˘.O9ALy޻`iڸ->ga"/п+>Hؑ-C7+tİW &Yn3e "xCi[I/a:(R'hb;{3 |ܠ$weX :]*%O п#yߌy !ďHH,8|>yi qH.6EykF9jySXWRJ3YZ%k{C%TD?άx|z\JКQz EIR,R7)rf1 T~lFtazMd M^Ҕ ;n:N)-;(2`o#vBz |a.]تjaeQޑ73Ax sJ՟όԂ_R5)8q͓ WP0cce`"촗nI50Xqh;ݠfq17W>colEתMڧonPmlT!59BY{8Fi`\G$)-7xO6uEu+.j!!iu87L+>`?;=4=af}@tI8T c~*<0DLL.#9m NH*7c_1FWa'EH"fY :RmBb2®J6gEM7 !(}YΛ@嚆ZOOLR%+߇5ȱf D mA$̱sN8"فpüq4&joۇ[wfcq  tظԏZ_5|p{ ȱ@KM9GB(ii#I|F0q~ۢB!ޭ?+4X B}7nXV0}l{m6(T _5(w9 אv\qEk;%Uw"{(13qBMI5 ɿ`).h^giX=Sn|EQ53M0X6sz8 JX)"HHDK\?'!hG^(ŕBe(3ʹad&)}s@qiؘԥ -rEZV^hM3Mz/#$G3Ⱦ23t;N4~M>x/ljh LDp]}kF4F精Lq5bz-0kxk}# endstream endobj 83 0 obj << /Length1 725 /Length2 29477 /Length3 0 /Length 29961 /Filter /FlateDecode >> stream xlstf5mm۶m[Ol۶mN:蠃;|sY暵ޣƮ"'pty93330T%ԘYL .@kG1c9@ j`fa%::yX[ZT4ͬ]v֦V>www!wW77V k;s$JRA i`blPr36Y;S,]vqfo.Y8Մ%⢌jc3?,L,zV&3+3蚺;-?f2747\s4 h /Y]3R]c>wb=befx|[O0d¿'Jb`2=KZFZm_\ipco~u VaɿqGd5@ IOo~H[`V|c"z QKchU\tSxd܅rZq֤KJKwUULX{Yó"{=6yn4 Y%h@n ky Ȭq**0>oشg>8")aEt\Ȇ;RAOHa~NY|y3YCllZ&U;uwRB?Y 0k$vO9߆:hjog,$} 9z `H5^dmKmeTe[a(vJ  |ג u=Eɉ_!I=z?*J~mLmku sշ3\}\ O֣^:8Vt#?U=UH\ H [Y&!tp2еZVvLR9B "PqHЌ< ^I*RO9WB(v9_4kK{xQBP1“kj>BW^ +@D>zǂVY.M6cL=ȩ (#VáOS,_1WB?kpvbvo۲_W~\}p}Nrq$4G.j3oL W?HTyTms7JQtC  JӠ$CC.Pv`37uy畈:v_i :yP ~DZPR&RΐE WeX `6E KZ@PyF+]u ;#@?UfOU&rlJzSnC)o/O_< ~h7UF*2=C~gI?tQH0I ZO;K DzpIg)F"yV!L8.هΫ֓1caf?~3z_o }TxCI@[]2S);@ram(̵y^F+x'W=TN=ns_0/ JW,*+» >V/Ȝ7֤hI2tm+.&_[9 ZyBQ\ Vb<<,,+Qu8dBNإi*uΞ)M*֮OgZ#JGV/-|<‰dd*֦vI>c$(~[hĘja&/Oy~ 0kxՐz 7U{Brsi3T$; f~sI̖T-RPF;[F(٘AuewSyB7-D&pJ4ۆtqRZ h@0EEMq4B`\s(xץ=r\-1_~̫*m@'Av1YP=;;YTnN-8C_XR"I,tXy= EAͦ7 oe MHr\,U[i k7"( q/jÍO)n@nb_{i\ #ea%P\fPMV; pIl<*mln\~F6eS+&?o|Op|9v/Y{iS4N[9̛Z( +{ G?Kyʡ340hkʵkZR6uG :7^䬜t2老,pkq,QQndWa&s(6W֝Qqo gSL ceZy_ðay5+_6x&ׇ@=5\8&,2#gJ?;'69ad)iԁ>ŲoV\lC.7DzXr[hK32R(Uby ^P s @L.(`D`o/k+n6GC\zDž}YbWVv^?*HJE}ZEϼFYJ,l%_(f}׿2Ӫ XU:S_xd?xO%@ͽ_]pex-?rSWcip>\xbqͦƆJomc3}q`.dLhI*Kk:(h gJF)93K쮌HUxhJ )PBݣYz _|w,6Ƌ9f CwW ^`*gʸG{o@}Y+uR&:^]k4[O.O,ǫM3K]}v, h"Bts7vqk+\yrC#hX# kk*z- '3&;L5eDy %BtaaT5֎LSS*ڌ>??5+yTKi٥*50e;(C9<us[wZr殑zҀ*qƳtb!/@hmVZV|mny~/p`<ϜS?϶X$me jԡ 흝u{ih(#M@:Wkl]5UFu,V3]J^1 y+׳S|ڝvCC}/~d%.y_/ϻ؟4 +M9\uٴØSֶo䚲è1*`iDdDwLmUBpOL$6|?_/\Qaւ9g XDm0Oa֓`q4Pj !/ulL_ Ѝګ+e}5݇wc{F %UhйysL.`UU6[9>\IJ/V{`hԕ"[.&.bW\%ASca%$؊n WTo*cY_ @ sJW][LAh\Z`*> ݟK dMfQnlG>Ubb3 _x7Ulx kud#9:|ϞN3Yf//z*qOj0u8bx?wwK"JV4/;2Dn 5d3X eyS}50. oaܽ׉ѽ4E6칺] R)_95V:i¯w4jH+&)(2>Y%,zJmk~f]* 5NЏ]5%Y0QzZvsEQ n?n~+jw*_9;ƪگ'b XwUzL;r# 5UAOd)B2CIQG,{~d2 3 >)x>]齩n] O),8w9J?3Y [NOާάqU̼˪Gϖ+i2?΢x`: itBAu|QV{26i̸3"}海3-:?vdnrYDɼ'$qUٍAduЍLø M4_A$|$V@ |ɸJ =]TH=ϩ/[T N2E=d+Z]Z0r` Ҝ-C8-Ljj+-Ԟ!K%]q-K[J$b"rdPl.\kY/͗~(s53nXO7vXsљI/F\6,n00X?Vܭ:Nƈv{, ,kP0ѣA:MŤYf^,rPO8MQ/sҝOB$T .zߢEB?'5?j!ꪵf (<[u |iv; ) H>V˄MwmpBt -hIKmFU{P@TwJ t NQ`\/7 +$54^V K!8XlbtÑ*;$y{_8ӛ#i(4+<ۚosqn@ +'ϖ DeSF>k{VYbi%_G!qpB c+ES򉷎?"MzR8&j5+ĜZfEdp>Jx懾q)OqV'Cv6Ƌ.tq]ځ*TCJV f{0XᏅ&fA޾)BIL3G^84WYLвτ ,@|5Gg%7C՗P̗.fF edo'.?S"_YĬ|o Ч1]zk6Gb=/!QLDr2GcVؕ.z,!];}nlZIH=倥xu\>c*xTӫGUK˳ qHy݄lbQUHp!X.䋐Aug]lJu(7 E 2Lڈ}eRV(?^ǵM9-^XXRɘgA1`3;Yyظ87I#y#R]&H}E'[MI~pZx/"~>"0[;l4_pٝ{ Kb8͹oO~l#?JIB@͘{hHq]!yҢo+Wzg>J (YʖDUaíeC47޲|ν*7RɲuB:x(\r*?UHOxi}{ohL?+i\2 g Y~ ISGe.5j{]g6FP2\^UeY$ [eUtCƻ ׸r CSp*, ۵zL` $˄Dlte X> ,j̞1gsB h٣lL*_{b⌔I-JqN9_QcɘN7RN큇%-(g~4ֵb."W h%-`gwark§)'PsNCW&j e ټ9ժ3@7?_ڜ: T [!B[~VUr!]4`vYnkRlV&Q(08/o{#k9} 2E`i,`9/!2 MiOh’1F?RE[ucz2/u{΁gqoP֍k Ԯ*S,$W|?XӇoN{Dh_X 2qчB-k": cL;[J(u`!~AoJ"@檶!.@vi2ɬ"6Hٰۋ[@$RYNQ)K=K@&$/xAg)[ cn/8 s7[-]'9:|{&,#/w`viu.sT: H"j;%ʡٶ,Fp1@7SIMC=4hdo<FsZ2Z]TGnd1uJ6[n}6 E=_(T.RƶG~bf^}.#űӇ筵cuf4^7-B|_49c=ANgi̾78& t¯IBVlv'E )ømxU &Et6u%q-رq.\W~)0"\|L!_JHRܑ$@gzBӏ`) H!}'f2J'aTWzՓ-'Iu\ eUYP 1ωO:\o=lg QP8LJbpf EW$>bx|}f. olbLIn ="kE Lj7K_Z`G~4F6RɨWSH=n }$HPǑuN$ԧЊ F6ש+\=G'qN D{.P|Tr1l8irHc4~M-6"fvW9 ƉE>Kvpf͈}g/p.v.WXKiZ`BzF`g[TI;>=apz[5Zh@ 0!6&[?QHK]u6#eS]aGyQ,IA%;Bq-}əUM;[MIёڵ &R c%*F)/4K`'-˄>aq)4WLTAZ3Pr_c'v{2VVń0]Q?̎z +d('4 2V}5ap>W[ei7st`6{.݅D%4<׹{n.5EfLdosL"w k1Ł!P0ƀ2VJh|ECUڪOYF~MmFPR^f{%a{>k t$c~9K"L \eMm_둄,F7:Df\9'[7bkl*4%IV Gل*QRz'nM\vE.CU(W`ϥ/5Bvl;[^/}]QUKxDH|'Ϭ?bh%fxWw{j vC*hFlL0RyY(Wh'\ Q ?{WEhe+4GdKYJqa3][}SC :뮻}ֽu +zzG0](34S]RU\.QM˃1x@Y"FJWŸt~e$Fxjdz04PG̙ jUk jZrV0B^pCܞ+Gja!qviقɴZjMW`h/.E(z+nu}b4WN;UJrd)WKKOlUw4AfUj΁y hL4yNVT+R=^tK)dVfPCMM>?Ӆ1W}= l+yRЖ0"JQajMfFɬIJ3:^Ui0.Jb9BINY.&Bp~HD aH 1y:j/fg 04!>8+Xp)*GH ZlٔD{'I>3IO qlR͐ :%1\6 'LnbŚ˃{SP/"[츠Uz2sFxADVe $5,7l;1) v0sOL~ݟ;Znjhn 㷞 HEMx3.Tu2V6K&˰~b[b""Ԩ}adRy\&?P44B_}NJU^K2 fbIzl^4l™ SdOVT$R ?GDVTN&ktP('rsHpW2j::\kV}sMa 1D_X~4*Ro )x^8|p4&qy&dnH˜U_5:M=R3y&b.XK~ϚE}yGdPКV0nF㈊XsSZu;1#kf0 MN%h<9LLdDB0t&̡@ eՌt_TIև޲ NJgZObͶͿò:ROٝ1R~7a{4 #kT3G"m2 ]vם,Nb ت*B8Nz1G" @B#tz+L .7w"<#`9HnkM^6.\ᤖ&J|AL3B^'L:랅-^NV4NclTSfMEZVUmCB6+rYUwy[:ڢ `5V&y9m6 6و_fv_VcO㑴.ZT~8c۠p\+d!F5_FiGWzE_U?4&83%}^=: tC9GHRI zk9`Ns5(GI~:GN1Yw\;^ A vIa;5z"} `3F&l,!'J?H;[8C>vzӯ 2J_ R&n\;_+!}CA#3441C]r[jhmwSuPocÁa}؃{d>tE4|~9neaDJfkBJ~\wW?&sA,zbkRͲe&?ˍ0-#eL/]&^1cnU?GEKahyJҶu GՈ>{MďY(Mh-. [S A`ST˕l^>56\' *&l\[Ln ^]6̈́-r=Hhd{3h C.Qٍ8Jk˷aAuK,f0;_УB_L{߷U8yGH)cH+XkHHSTDԩ*Ή[r~[$smk? 7-IL΅kucqaJRR}}3F*&3$bA (h@w]GB ;jvyP(5ʿ5e_ &8=iMz }VgB ш%J-4YM ;TSZwgAk%B'# |CY1ݒgp>xTE= ۞9niF), U_G_I#y`i~^(#R ^]!]#* !p}CdYYh57~3~|rŐ>i0)iN-cf%l 8W̢;+Za" D*7D^A9=`ש¾8Uy](hx.rN$/EZ3 Kі&;+dꛈS~і vجWfK%H?r:{qo1&ԝ`\9FEt}ݸ[A1^==WL=ik. { A1Z [K* 0Jkؙ2Q˻DsNifsj?6S=B+_dzP5?_D,JHAء$g%4F G˘*y4ؓ2'eB&ۺU$7~ԈJRjW&|VhzM"IRofZ뗘uվhZq\t<2"o7r>ԛnU\f4:-ZHb,sI) (ʑtϝ ES'umT/Kz֣9E3eMkMimF\Y Wtxc u/aG=2J[a:r]%.qG3… 8ϡwwE_bƝ%^KH@ś`#DeFi4;n__U/Co5PD]#en:v0T#b*_@n:6 %wHju/Gm /($cVzRw";!"BD`9"3)/4Ex}&)زSA.}cjĨcpV7-)S䔫k8W@h'$m Fl#x$1kK'RzaVػmq1 lp(z@צd*׫%Rk"CR)&}.9=֘ Òyo-DOoqb8P?>K3O3Qcf]yコ<(D ¿yui+O`+ߪ%j!aDiycD>x} izt.YllcEh&kF J `ƪ@>%DSXd^n56y:[_^,&(O2;]Y0;n~%f'L0WFvDMlyԝ6wۈݔPl rbX"'cC'6<] ukC(M'~t,ERj%$ zxk Bg.%>wr7.a#)B[.yR`~VE\U"tha6k=w/ < E ) |ѱ{y-Ŵ8z[>N1^[5= ˑ"f?UULzL׽ L/*sqmݭ2&Fg2l4hƩ^l$^ Ӷ퉞RƆIGv+o x9+DBC&-rɀ3 {@Sx[=I2}[N M"2a(E=-"3\D56U}`;Yrxn_v5W zAL6e@)00Dff^ٵ.H{s._VN4Ε| &H+<^ܤBwLݖihNB.7|Ұ0{JgS{cCV`4u:D~"^=rBi?>+Նs6%8a|6ps#π7ƶere{ c(F"hY")TέWC 9C&uY9m6-ij)6~탂#*kxX?;Jdc e<xPVY G#I:ɨ9[^|Qsu OMBz"_*Ǖƍ] $2V.NSޟHa7^"rʦPi.`M~ <,X箹A|5, NCc-=*I G Y`o (+.TKgvT q_II8?]cw% lc۶mٱcضm۶msDkZ9Tg?J-k$2$Ȳ벦[ ׳͜=$V(mژ߲ȿ*a\##,d]q7 &5CX #m&m$GzttJ(t(^9VJL^1nO&x@7!9#=n”i<'g4H|9z U\+2HS Өq&q/y.@ݠ~ސgݛxcp#ӉZHp6g+bN|U!v$y5i݁L˹.J^4D;]fE߄Ԑ_n `aH5N1Vʋfj3:˅'ƗAL$=h v}n~T=z , \f/* l7~Vf.J t ,$z̯@ZV9EWC)H㛉.W'Qgָn1 :\ bF %ێPތO'?Ɗs}\t4#W+1:=*ѫUG߹˰D^򮺃[<;$38뭪].?Zb d>}YDdnDo /.@SW_TBsk5(O9ENۻEVlVR*aiTδq`$$Z;`7H $^pz#ʔBuҠg w&T!1m^aLȮc#oYTE\\ya_:3!<^MKbԦϾ? '"/SbSͶ= )c;uŢuE46ay%L5d\OLcB+vn_79w'!U>-YJ)aB9w.Ȑ#TPr-(|hIX‹\4-zv *E)ۑO`^ > @ *#ZnyAZwі8 <ҭY''i66.g`=x&>UA $)r8Uʷf_z&p54O^7R rF]l7%1+>YHcR2dD NNrQ}4*Qc7^ }D{GMt}CDÏ mȝ ;{UO8=%cڨ|1;޾bbf`vk_QD=OGj3gt{{o:9L>HOFoLN"W覝]N $Qphgq?Cx!};(ʀ漝K_8 "6DvX~zR+befZU5~2)uOSR#B"CF1s@lD B}0 0W?HR[N3y T,{@zD"$_RSk ?ߔ)TpB0[ocz`e7#!\ u߽Dx8SR¶2.@h.>I;yJhAR,1|:n'549 ׳63.EͿSsWGR>'f  ;]d]{uV)[Afj,_BXK.ic~DBter,no93Y3Z [t寏\2I>+n7V)\AEEڒ][+N9Tg NA9 ~dnbY0VQ E0-1ү@rcm'?ݧÖI[\[ EŊճu%YdIl e6Ws&KMŇ(2ϱ1˲{6ԗ }\P>2P~ ʱtD/oͣ=b Q._}lTOJ "5D,Qf}e`@T;Ԏ x&5SfT @6섛UcNXF+έB UopJ7Kd:%tMu'1 =':DÚr1#C %-!"9ꄱS||ȃ8y:wjX0NmCW<{E亥9e6F̻w<0B 6DeYT? N!8jȌ*=oB/`b-V>: +<)]J dM߅:0}:d6):__ᏟX@$_wd4@QuS,`LUl/ip[ - ,̿ЌCceḿo.^~xs BCۣTEre04]M pvvI4!p,u+>6 =Uir!"$YO&cQo.; !S# u۞P,j xeVc,ɍ0|K%Jl@_>WRVQk`$Dzk EM*KQt䐪fmhJoy2q}eY`rGچnII*Lb \ǭ4wtH,Ք<)y#H/@C⒤6L+iU-vyܾgq2%p0j$ik.BݦkGhb x7Oa@ ^̍bnAϴu%&#YJEwbsp~#5ikۣZ@HcKajnT`'!9緤3^9?i<17ּ_*٧ZJShIdo>Qo5b.|%4(˛ f .u*9tP./~')$Krnu4bH}ц.{T?|c@dJ*Z9 T9Jzi1`xVPy1#WZil}a} .Տ}J4Aջ>L`O\w|:b#I {b$q9HrVxQ =v2ד BAS80>!lcoE\Nr=*fE<'94} n* `v'dBza7R/5_awn"ϯIylvGg6s{uiP.6FPV\Cɽ)dߔS;WTkiax2_JtSƒoH EroW?Jm4+-h:FRw*nkNM伡xcW}Z0֭.5ٳ| S;RWxXJ Aqhx-)y  Pu闈ܑH;d:'ZlIKMS){xQ!0DAeW;lxCtDJcL|p~v9Gˁiրh[Jd#SG֨9>ٕW߿H('OD4q#حMY&ĻeŘύΠn#ƭ92;?WˢmNAQ+̧PR<Wg?T_,6qaW[sLc A1rR cGTEoF1 cH9\PuZN*6kt*_O`x0D 7%t aWL`03:P7UzLWCo4*7[l70~d9/'&Q>"NюpWDmYf,bnq+W 2g:_~pz;5E|o%ͦZRv' \xm6o _8+GS5Б@ƝI^1hT2_j -96@JD¬1}}W``q}@o[`ndng>DLk$\$lX&YeMT)^ܐjUJ/HPL1j[e.Ѐ~'mm5%rTN9/a:+ǐK6⟵Q1ϣ4M&)åsAIDAG&(~\Rr(&.5Ni#G4\N<™#G^TA%c>إT*B.!.Q=<5 ǣ?Qօ&?R4~>`FZ'#h+v28:%xX/} JTxFU~¨ %Yj3^6?@idޱS TCk`6Ze2e0}R90 F̱WbJWgVAE@tʝbfȮX!\`ߨ95iJ 9dop҈ +"Ak4vB 8ᘎEHe,C>5"j̍> ks\zn>JI99bwp:OI}^ ;C0qk~R_YBվ2!\-" ;ˤM?& ~^+UF^߸/- Q\=ri&s CVI},2.G mсm60` |d&7pr1\<͞@˧ѳ_o3fiD&Č3dny [P i+MB v~{.+,mSCۚ3i)U5<;j cFS8QI|\GWN Ū?rF3+bx7H3r‰1X4g, _Rp급an׃b=eRh|[szle#Z]= vE0]#PrC 54?;M:}>dH7_3GO9[!Cr]o2j>6}:7]z2g_0;`:y+b9B[;-H1:sNc a?p37;MT;іps,\Py8 8JܢudbK+Jnz%DyX_Ըwn&:hX97ẬFr".{H}vUnz v+:u5\Ԟ wZVRHP5DűjrŭE0xc5Ar-3- 8Ye&Ԩ)HWQYu0r\|d" .M7qA18Wdx-jJd>CnW=V1Y瞲]# V-D~IC }@;D + )Ѽ$YU 6sq@iV :6 xLy,vs!H%v\$p,ysMOҟyES%! %`Z+^ы'vK7Fmҁ≑ 2 Q2f5kX_T5m}AfT'7 ʧ;rUgˇ~|~0!'Ɍ~I cεlb)GHt8#sOlK g6씺)DV}k}9 12!H/ <Ȫ0(P{G;~ ]#co!LuA4(Ԭ}v֭QDaqRTjz><F8]Ѐ2fv hr%ըL~Z|Td`[?S-f: \[l!V e5FIW< cPm 3n9E'TMTx!ZnG&N$kQךjד9d^$UZ$Ѳ&:b?s0TW~2ed?ߜpBK9R9-=y)>=@D#1Zugt\CcA-Yݙ0=7Fܻ)x e#xZ@877]#n]Du8ΎX<&30JPhH;U axQ 20Z< |>O~ *|]?cZ7ڥҾf(OR$`ߊ,sJPJ|0CbSK\EﹹWEr{/6 W.ZNEԋ׀k q_ɧ_}GXCE{OAez޷@nD 3k@ C2 MXV]Oo[5-,4JYL.zP4Go(58@)f [+Q=z]`a@#&eG Fk)S֤bt`.ŞpZGw#>aZ &b 4j9;Ɛ VyiGBQ׺T-Q$eWv1PesCHHe(,R%\aF Io'cSg?G.㳓p0'Luۄ-B=]I6{:'R+QsB1`-x2ЃҵV8Fh r{h;G#ԹD,R{/vi=~UBfsA/ lꁱ;-״3 "!ξXws"-J͈3NW(mT;ïB\9>9c:!&\TgWJn؛̐ҋMJG`w'P=.WMq 54<>SX'xn;`_Ҙx""y ~b"IJoi@[ )PIђ1\;EoXa" a.=g4+)n Ԝ?| Dl+uP0 D_b׈{/ apy9Ti:[P#Sz$}*t˞qÕ(fW{7B#12koBXS 7#?EzcQnD cI98^|YfCX,!PVpųxNۛvk@G\P2l[b_cdN/m}]< pqPr ?мutStaωp[`[ 6032@}|3fG&0jYKAwg9)qDpB!yųCrLesR~i07Dij#I~1Q#i[ԓ@19vR26slxkZYh/i+piåw|HW&WJi`X 1$gE픊"TUXy\ j~໽o +ۖ[ ܩJ2w -Ew@Q33Tx?IQ ʼn>Ƚ-E˦WJxc RGli;5iÀكPHØw;;0?'+ G> T1[V\aT`Qo{*%V?ۂ 6m. ] 34&h?ek}.U6$g nio}oh]&WC 1J̓\ VFBg ?%:iڝ$_uij]3Wx7]w q\ڙiY*L;3|Ɠ6&d1qEE{BO+MԬ{@%JW}$S(k2s32E8vvQ"X  Dxr6!(Qs:|(6Y '_5O IZƉ}NWHUÊ[*9=.ma,K[ GlHU/gTZ/g.@A*˰券psas GAzH>* $rZajJr}*)wx;ŒWZʗE,]WqfE4Y6=-0!8F8i;֩~S8~e^?6A,K8`qg"[N!xƬ eXۭrŮ׋M,P,X\1@yGX9l'w̜;.;W|Rn2.eʤXr9KdIB/f"B hM)" $e Jru8C{ĸƀ;G>3EF r凑wJ <]y( viWiH"͚f̗=|;C-usvB2n`Oي\@D3?lftv{Y+-T],g:&{_WD娖 S\Bz4h 0 7<ؔ,H(Zlr 7"Eٲ-pR9N +`J@l|滘gqXl1MrrEDq4XP f>Y}v9f${" .ovܞp LM PQq"k[V8()e^fhT:Q+uAۡ?!;`:]U]?wǚ A}ÑfXA⎢ 3Z v~WV?-NP%&k-&QG]#A7Sx.g 蚀7YS~`!આ_ ?Tv1wI~ 'n7P/{+ )@ ϥwU 9A`?G5 0h 62,_YS႕+_75l#S0C@M蓰s-u^PI\gfݦ晻vsquvBi⛶5Sa8?8_ G=!m y;YR!jKؓ 4,r%S%R Fv~ Wfַ-M6~:eU8p!fq ~<ĵZn 4NNh>ۭT3-]49 h%]$4,vf=Yo6BgHnDZԹNti91n! &R&29np>~)o9q \Ү/<[]G~5V%6&0_ONd-6b-bPP;uN=AY5G/;Tj|c{*m@욀n+3\i`sT0NX,aחŎSiul &_D-Vlݹƽ]Z38h .P(9ht!ᅢ,1dζ(Gơҥ=:=-˘#L/ Єs`:VK-L4UHܙƀ1c0kvAp|cNC6m ÿ[GgtW+>\T) #`φ)yF. 2?j endstream endobj 85 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS 9_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZK endstream endobj 86 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5&z& h<ϯK)ٔ?pݝ2ZkXvm)85];B7gѻ9x~;a`>W'?y:o&> ݋L'/㫃Bnz_7_t|~;:ذƦoiܰ^\0zu\7g"NFsu_E07H6!L@@B@q\s *Tg ]8 i/nTvc-+>c_ZZ~Z83z3[:ޭ ߬Lg3t3-g B|B|\3gg|2?z)BXIAup*^+&#sU-'H8qɼe5A78{Y-7^=!U endstream endobj 87 0 obj << /Length 868 /Filter /FlateDecode >> stream x}UMk0WhFCۖ,{Mlh$73nw҃ͳ,]}{\Olo$ɝиI}s \wwu8{SC߬Y]j7KF½ Q5f6ӓ09]nD#y~/XOϦӾZkNTĩ(wA-&T9ˈ;n>yx#7ahݰ^g=a}9_(,u;_r985wѩƆ56}NMM₹ 5E9qv7rk u/A )`JbD>`2$`TY'``9&*8W`TR&4`(ZsJ5RH+h3}76Xš60aG+gıXF888sέ-.x]/+5MĹPN<1\?ǘt1:˿#7^YH{upQF^odž1BЖEQ?1^׆ƨqА.yaf%+CsV2GYŘS&ƞjЙ??grCOe zYJ|֟uМ8gΈrY}Ŋъ1LkYҊX׊ӊѻߊigngfg/>Cn!>_33/>?㓁EK!c?RMO #SZ1|8Gxp4aj9DQK.h. ljeuȢn( endstream endobj 88 0 obj << /Length 868 /Filter /FlateDecode >> stream x}Un0CƆ"RVmkN7RI̤߯]U=ooƾ4qݰZGNc'>wÍzeu[U gҿl Qķ&M'G3Hy_ S)E~e!jءC4qjz( z#neDvBwfs5} FzqۿitXoBjߙo{b?WWZ/ԼiL)͙ \݄Wb MLS!"q #u!`Nȩ(( LFUjp49cIMh ,hPE4pbvŢ !\΀Ѹ 8!\=#2:x 1v9/8vӺuSqk4 "nXCI8'ľ&p 2<Wcǘ,9Ϳ1bxb Ài',ymƌ&Q/kC^،1ۜ1q, Vu 3/d Ͷb l͘S&Ş c,Xu ֟_~CO` ?'>ψ:sh.Xgo\΄rYgBЏ>;gX|&}ggg݉gt3zw3|s3߉YX/gKzJrg^od ,gz)R؇O5_qTԼV j M2GFN(:pTy 8kn":qo{~Y=[|btD&U endstream endobj 89 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sxЩֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]X7 endstream endobj 90 0 obj << /Length 866 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWU񛇱='$I}s=}}N=C'u]U;o_ϝ>'eP~&j=iL4Rv@”lJQ~c-'>c_::~:83zw3;:ޝ ߜLgw3t3-gKR|R|\3g[>Y^J?a)SMW:?85‡iG湺N$ոd<ᚠ}޿_V,z薻\7z}< endstream endobj 91 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ZYs.G7fԝ_= S)E~ 2~}[4v "N'oGQ70j,#z7o;l,j'Ouc׿zr<:Q:XTߙOoGB ;ww ZԲWL)\]W|, MHS"#p #>y| #:##0)%V 55)FњSjR@J]!5w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsGMMD>Nwq8"妋:9 endstream endobj 92 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx0ֳ0;]nL#;z,gS t;en>r8S0qj>w};B U5gѻ9x};a`TG?y:o&ߏE]&AjZu/?v_t|z;:ذfhkܸ_\zu \7g"NyOܵڿB`ilB =@ )U 9yI(J5<T` M55֜RhR 1ڟS(yq( buX& &q,1+N978Nsk`q8 ^8% FMq.5Sh@kO ׏p$q1/]}/ĩ»p^`D3F?x[a 1ec!/1g)cd?4dK^| МQV1Կ'1t?ƺ9Y?ГrYs֟'g)437YgD3\ib-z3zs ,>G|ZV|ƾ3ֵ33qgng3tZ[Yog,g[3 =L3z/gd ,gz)R؇O5_TTV *M2GZN(:pTy 8kn":qw{Y-7]%# endstream endobj 93 0 obj << /Length 867 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sx05rtlf)OS`)?>RTO)suߖSIQg Lڮ9ˈ;~?˥?y|#7~l/3bV+պ};85wѩƆ56CN]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~FȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rj.RI73W3njNelܬ;WW\?pu4{SlY]jwOusR^u5sxu5rtlf)OS`)?>RTO)suߖSIQg Lڮ9ˈ;~?˥?y|#7~l/3bV+պ};85wѩƆ56CN]]₥+U9q~=W(_KdR$| 4hd52HHNsL FU*q8cMMh QEk%RWp gn~FȋCam `42W0A/c9^'-pʹ)pq[[i])9^W5js7 Gb_#xb~ ' ˏ1}cLu'No ޅ0&1Ie76Z cx-~`& y%Q?K'!/h],KV0d 1էM=Ռ3g1Y ~i?'?!>L9g)q:#eNC?lыѣc`83ֲ3#>w+>Cӊ݊͊T_|~+>Cg!>cB|/g)g{!>_|&~'a9K!B>,TGbPq> stream x}UMo0+J! ᫊"Rjn" W3nj<4nV~ߝoGM?k]{7[7rSmtɛy=TCA:fL9 4Rӫ~R~J}6O7SVk-#SkQ70j$#z7Go䎛n˥?qHM0Z7u@O؞OW1Jj;THcui׸a׽`J-zoDpמk uA )`JbD>`2$`TY'``9&*8XV`TR&4`(ZsJ5RH+hg b.h\e`^bsN[sS9ӺuSrk4"nXCA8%ľFp O<cǘ_81Bx.B Àh'2xk=6u2,bق6E0F,eLLu /Y1<*T71DV3ΜX7g19=zr֟P.O{S3u9(uF: XE/V|FV|gXˊؗV|ƺV|V|&ޭ V|N+>w+>7+>S} u B|)W|FL| ,B/^ &+jRP׊C8ƒI\U E'j\2wAsMMD>NC/SB=t].Z9K endstream endobj 96 0 obj << /Length 866 /Filter /FlateDecode >> stream x}UMo0+J! ᫊"Rjn"B73W3njehܬ;WWU\8׺v=ߩonTtƓ7]ziTCA:fM9Ηfi<WOlJQn8N[hEOrDz=4CH޾Gwt>X.Ouá{Qן tzutZ}]ˏѩ]3NN46[w>7,^e]׵͙SwPG*X$D F @F@k} 89@FJuFF#`R0JRq eF)kjBS` F5(Z#.9Bkx>w{7E^ kCXq pD zAet 8alSM3?rN%NbQDa 8>#h0\?I`\~KWc?qc.\X7ьO*ezl,d mY50ymȋ,aYʘ8 xAf_14g%cxU>ob쉬f 9돱ncsO{(g1?\֟g Yg 9LsQ.(ug^/u ?L[ V|FV|oV|3[: 3 ~!>CO!>S 33>Y^ ?a!SMW,:?8ÇqG湪N$ոd2 }ν_V,z薛.ZP endstream endobj 103 0 obj << /Producer (pdfTeX-1.40.25) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() /CreationDate (D:20241029192422-04'00') /ModDate (D:20241029192422-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) kpathsea version 6.3.5) >> endobj 2 0 obj << /Type /ObjStm /N 75 /First 601 /Length 3619 /Filter /FlateDecode >> stream x[[sS9~#>_ ,, ɃIN;c;3Z-۲'Ov[jɱR8aBI%PF*hB :`:0$Q DPNh-Bb b( Ŧ^:tAXvL>.$D@1AJHn8:N8{HHCHA(X}{Ŋ(ƽB("G)b2";ъ䡧M"%R$@E %B#\b`%=lm A+R L,jM&\ 9 暤_N-@NJ,88h*f\cýhh΃_L H)_8&pIh6۟^^lݟ`se*7  "qB\-\!F ތkv)RVrH"<~i]靶fs8X @i޵S{2KHAy\H#xd|yKWa΂(yiٽ2_u'q;ʛy< <5Ǧе (NdHR`wVvQlT]O:uz8E+ZDX+u(鮗vQUq]P%U QQly~2N]h*>tەh~}JIY·Zm.*!"ZM3A,SndSniA7ru G'4MqES,YpM p쌆G-Bhڿ&egZ\Ymfe0{!ڮuZVSmnm9 #T΁ ؍Z?q:Yc<{|.5j:b 2 oX_pBЊk <<)'( tt4B;0]t1gqЭ89fjjH5M1rwznڊip^Ď&eq,)XpFqQ#]< =qGyAΐiY=I:3CޥNA*? &ZMd-yԑ?-{A_$Q;Z\xT nBamP09k;0xMNUr>W,Ac9;{'QE1(tۇ )J%?x#H1*7,O4 2 r3hc)g&G= aMǵ9t2&Q6yD&;A΂66! U8w 2D%s8\!3RVG͘gme׶`YKe6Tx 7zWq?\2MM4TMBț*eggT@@0Xshmn<`K.)g׹יd7h54I6cJ([x_霘/X?)7kqU2GK a:X;qj;vjd 5 ϳpR 05!f<<(=1 n(Գ~_sd> yZCeq qk\(jVSOcJz Y;'Pg9s(xNje s)yʣxm3%V0{=x4 6KyݜW/vkx6zሟk}̳BiLN2œQv*HnG'Pn.3|64HI18=o1I\i>U(09؃ScW۴?n=W룑P EҮVH.(D_WHNqRZY~>5_hx>4Mۜ4'9vq~s|mͰ梹hGq3jͤ9l.?o 1X/2^gqj V5N`_abVn-?Ϭx:g!?6$( r̼?hf{{~-õ Ik}+cZ촾FZCu:||N]ꄵԫ͗w:C^ԡ7CTi4ږo;.(V+-KBϚ-KT^P_;ժzr٦K'؊]_2[X|y:ȠGUff>26D>,4SWBi qgcs?kei.IszCJJTշ>S[ ֪/7w_l{7*#S6UPjuf!.))E ӼS]/Q160p8w;Qq/h?]'-9/\ ѸVMxfhݫӛ3<$\I`C64K7:!lI•LPZBwWtzqLo;^BؗN~qg02.R"" %JPNMqߒ 㒌$ˢQBy t_XBamKXyt%,BS7,7<ǐ_-b 8P}71{y1_DcXb5_}+ew+u8ȕ[޲L=ۗ-%RQkX _@KLY 7 +kO?i) <889AE61D1DDF514453919A8A23614634>] /Length 282 /Filter /FlateDecode >> stream x%ѹ.Ps.2`,c;c}; V($"DD@h~GWorȯq%%T9,,AB,BRPEbA TH C)4Bơ&ajZ%paQ:zhFh4C BCJ(j{*].=nwJͪG%*OV}U֧ՀѡՠjZE2V u'Nw normalizing an environment...\n") tmp <- sample(1:50) dummy <- new.env(hash=T) index <- cbind(tmp[1:10], tmp[11:20]) assign("gene.a", index, envir=dummy) index <- cbind(tmp[21:30],tmp[31:40]) assign("gene.b", index, envir=dummy) cat("done.\n") cat("---> creating an AffyBatch...\n") samplenames <- c("sample1","sample2") signal <- exp(rexp(n,1)) e <- cbind(exp(rnorm(n,4,1))+signal,exp(rnorm(n,4,1))+signal) colnames(e) <- samplenames afbatch <- new("AffyBatch", exprs=e, cdfName="dummy", ncol=NCOL,nrow=NROW) cat("done.\n") ##can i get pms? pms <- pm(afbatch) mms <- mm(afbatch) ## normalize the AffyBatch cat("---> normalizing an AffyBatch...\n") n.afbatch <- normalize(afbatch, method="constant") cat("done.\n") ## compute expression values cat("---> computing expression values...\n") e.set <- computeExprSet(n.afbatch, pmcorrect.method="pmonly", summary.method="avgdiff") if (!is(e.set, "ExpressionSet")) stop("e.set does not inherit from 'ExpressionSet'!") cat("done.\n") affy/inst/tests/bg.correct.R0000644000175200017520000000032214710217042017006 0ustar00biocbuildbiocbuildlibrary(affy) library(affydata) data(Dilution) meth <- bgcorrect.methods() cat("background correction:\n") for (m in meth) { cat(m,"...") abatch.bgc <- bg.correct(Dilution, method=m) cat("done.\n") } affy/inst/tests/expression.values.R0000644000175200017520000000144014710217042020455 0ustar00biocbuildbiocbuild## ------------------------------------------- ## routine tests for expression values methods ## ------------------------------------------- library(affy) library(affydata) data(Dilution) essm = express.summary.stat.methods() i <- match("playerout", essm) meths <- essm[-i] for (m in meths) { for (mbc in pmcorrect.methods()) { cat("expression value with method=", m, "bg correct=", mbc, "...") computeExprSet(Dilution, pmcorrect.method=mbc, summary.method=m) cat("done.\n") } } ## playerout alone 'cause very slow m <- "playerout" for (mbc in pmcorrect.methods()) { cat("expression value with method=", m, "bg correct=", mbc, "...") computeExprSet(Dilution, pmcorrect.method=mbc, summary.method=m, ids=geneNames(Dilution)[1:3]) cat("done.\n") } affy/inst/tests/normalize.methods.R0000644000175200017520000000047714710217042020433 0ustar00biocbuildbiocbuild## routine tests for the normalization methods library(affy) library(affydata) data(Dilution) n.meth <- normalize.methods(Dilution) ## remove qspline ##n.meth <- n.meth[ ! (n.meth %in% c("qspline"))] for (m in n.meth) { cat("-->method=", m, "...") Dilution.n <- normalize(Dilution, method=m) cat("done.\n") } affy/man/0000755000175200017520000000000014710217042013272 5ustar00biocbuildbiocbuildaffy/man/AffyBatch-class.Rd0000644000175200017520000002316514710217042016522 0ustar00biocbuildbiocbuild\name{AffyBatch-class} \docType{class} \alias{AffyBatch-class} \alias{AffyBatch,ANY} \alias{AffyBatch} \alias{probes} \alias{geneNames} \alias{geneNames<-} \alias{getCdfInfo} \alias{image} \alias{indexProbes} \alias{intensity<-} \alias{intensity} \alias{pmindex} \alias{mmindex} \alias{probeset} \alias{$.AffyBatch} \alias{cdfName} \alias{cdfName,AffyBatch-method} \alias{checkValidFilenames} \alias{probes,AffyBatch-method} \alias{exprs,AffyBatch-method} \alias{exprs<-,AffyBatch,ANY-method} \alias{se.exprs,AffyBatch-method} \alias{se.exprs<-,AffyBatch-method} \alias{featureNames,AffyBatch-method} \alias{featureNames<-,AffyBatch-method} \alias{geneNames,AffyBatch-method} \alias{geneNames<-,AffyBatch,ANY-method} \alias{getCdfInfo,AffyBatch-method} \alias{image,AffyBatch-method} \alias{initialize,AffyBatch-method} \alias{indexProbes,AffyBatch-method} \alias{intensity<-,AffyBatch-method} \alias{intensity,AffyBatch-method} \alias{pmindex,AffyBatch-method} \alias{mmindex,AffyBatch-method} \alias{probeset,AffyBatch-method} \alias{boxplot,AffyBatch-method} \alias{dim,AffyBatch-method} \alias{row,AffyBatch-method} \alias{col,AffyBatch-method} \alias{show,AffyBatch-method} \alias{pm,AffyBatch-method} \alias{pm<-,AffyBatch,ANY-method} \alias{mm,AffyBatch-method} \alias{mm<-,AffyBatch,ANY-method} \alias{probeNames,AffyBatch-method} \alias{hist,AffyBatch-method} \alias{[<-,AffyBatch-method} \alias{[,AffyBatch-method} \alias{[[,AffyBatch-method} \alias{length,AffyBatch-method} \alias{bg.correct,AffyBatch,character-method} \alias{indexProbes,AffyBatch,character-method} \alias{indexProbes,AffyBatch,missing-method} \alias{computeExprSet,AffyBatch,character,character-method} \alias{cdfName,AffyBatch-method} \alias{updateObject,AffyBatch-method} \title{Class AffyBatch} \description{This is a class representation for Affymetrix GeneChip probe level data. The main component are the intensities from multiple arrays of the same \code{CDF} type. It extends \code{\link[Biobase:class.eSet]{eSet}}.} \section{Objects from the Class}{ Objects can be created using the function \code{\link{read.affybatch}} or the wrapper \code{\link{ReadAffy}}. } \section{Slots}{ \describe{ \item{\code{cdfName}:}{Object of class \code{character} representing the name of \code{CDF} file associated with the arrays in the \code{AffyBatch}.} \item{\code{nrow}:}{Object of class \code{integer} representing the physical number of rows in the arrays.} \item{\code{ncol}:}{Object of class \code{integer} representing the physical number of columns in the arrays.} \item{\code{assayData}:}{Object of class \code{AssayData} containing the raw data, which will be at minimum a matrix of intensity values. This slot can also hold a matrix of standard errors if the 'sd' argument is set to \code{TRUE} in the call to \code{ReadAffy}.} \item{\code{phenoData}:}{Object of class \code{AnnotatedDataFrame} containing phenotypic data for the samples.} \item{\code{annotation}}{A character string identifying the annotation that may be used for the \code{ExpressionSet} instance.} \item{\code{protocolData}:}{Object of class \code{AnnotatedDataFrame} containing protocol data for the samples.} \item{\code{featureData}}{Object of class \code{AnnotatedDataFrame} containing feature-level (e.g., probeset-level) information.} \item{\code{experimentData}:}{Object of class "MIAME" containing experiment-level information.} \item{\code{.__classVersion__}:}{Object of class \code{Versions} describing the R and Biobase version number used to create the instance. Intended for developer use.} } } \section{Extends}{ Class \code{"eSet"}, directly. } \section{Methods}{ \describe{ \item{cdfName}{\code{signature(object = "AffyBatch")}: obtains the cdfName slot.} \item{pm<-}{\code{signature(object = "AffyBatch")}: replaces the perfect match intensities.} \item{pm}{\code{signature(object = "AffyBatch")}: extracts the pm intensities.} \item{mm<-}{\code{signature(object = "AffyBatch")}: replaces the mismatch intensities.} \item{mm}{\code{signature(object = "AffyBatch")}: extracts the mm intensities.} \item{probes}{\code{signature(object = "AffyBatch", which)}: extract the perfect match or mismatch probe intensities. Uses which can be "pm" and "mm".} \item{exprs}{\code{signature(object = "AffyBatch")}: extracts the expression matrix.} \item{exprs<-}{\code{signature(object = "AffyBatch", value = "matrix")}: replaces the expression matrix.} \item{se.exprs}{\code{signature(object = "AffyBatch")}: extracts the matrix of standard errors of expression values, if available.} \item{se.exprs<-}{\code{signature(object = "AffyBatch", value = "matrix")}: replaces the matrix of standard errors of expression values.} \item{[<-}{\code{signature(x = "AffyBatch")}: replaces subsets.} \item{[}{\code{signature(x = "AffyBatch")}: subsets by array.} \item{boxplot}{\code{signature(x = "AffyBatch")}: creates a \code{\link{boxplot}}s of log base 2 intensities (pm, mm or both). Defaults to both.} \item{hist}{\code{signature(x = "AffyBatch")}: creates a plot showing all the histograms of the pm,mm or both data. See \code{\link{plotDensity}}.} \item{computeExprSet}{\code{signature(x = "AffyBatch", summary.method = "character")}: For each probe set computes an expression value using \code{summary.method}. } \item{featureNames}{\code{signature(object = "AffyBatch")}: return the probe set names also referred to as the Affymetrix IDs. Notice that one can not assign \code{featureNames}. You must do this by changing the cdfenvs.} \item{geneNames}{\code{signature(object="AffyBatch'")}: deprecated, use \code{featureNames}.} \item{getCdfInfo}{\code{signature(object = "AffyBatch")}: retrieve the environment that defines the location of probes by probe set.} \item{image}{\code{signature(x = "AffyBatch")}: creates an image for each sample.} \item{indexProbes}{ \code{signature(object = "AffyBatch", which = "character")}: returns a list with locations of the probes in each probe set. The affyID corresponding to the probe set to retrieve can be specified in an optional parameter \code{genenames}. By default, all the affyIDs are retrieved. The names of the elements in the list returned are the affyIDs. \code{which} can be "pm", "mm", or "both". If "both" then perfect match locations are given followed by mismatch locations. \code{signature(object = "AffyBatch", which = "missing")} (i.e., calling \code{indexProbes} without a "which" argument) is the same as setting "which" to "pm".} \item{intensity<-}{\code{signature(object = "AffyBatch")}: a replacement method for the \code{exprs} slot, i.e. the intensities.} \item{intensity}{\code{signature(object = "AffyBatch")}: extract the \code{exprs} slot, i.e. the intensities.} \item{length}{\code{signature(x = "AffyBatch")}: returns the number of samples.} \item{pmindex}{\code{signature(object = "AffyBatch")}: return the location of perfect matches in the intensity matrix.} \item{mmindex}{\code{signature(object = "AffyBatch")}: return the location of the mismatch intensities.} \item{dim}{\code{signature(x = "AffyBatch")}: Row and column dimensions.} \item{ncol}{\code{signature(x = "AffyBatch")}: An accessor function for \code{ncol}.} \item{nrow}{\code{signature(x = "AffyBatch")}: an accessor function for \code{nrow}.} \item{normalize}{\code{signature(object = "AffyBatch")}: a method to \code{\link{normalize}}. The method accepts an argument \code{method}. The default methods is specified in package options (see the main vignette).} \item{normalize.methods}{\code{signature(object = "AffyBatch")}: returns the normalization methods defined for this class. See \code{\link{normalize}}.} \item{probeNames}{\code{signature(object = "AffyBatch")}: returns the probe set associated with each row of the intensity matrix. } \item{probeset}{\code{signature(object = "AffyBatch",genenames=NULL, locations=NULL)}: Extracts \code{\link[affy:ProbeSet-class]{ProbeSet}} objects related to the probe sets given in genenames. If an alternative set of locations defining pms and mms a list with those locations should be passed via the \code{locations} argument.} \item{bg.correct}{\code{signature(object = "AffyBatch", method="character")} applies background correction methods defined by method.} \item{updateObject}{\code{signature(object = "AffyBatch", ..., verbose=FALSE)}: update, if necessary, an object of class AffyBatch to its current class definition. \code{verbose=TRUE} provides details about the conversion process.} } } \note{This class is better described in the vignette.} \seealso{related methods \code{\link[affy]{merge.AffyBatch}}, \code{\link[affy]{pairs.AffyBatch}}, and \code{\link[Biobase:class.eSet]{eSet}}} \examples{ if (require(affydata)) { ## load example data(Dilution) ## nice print print(Dilution) pm(Dilution)[1:5,] mm(Dilution)[1:5,] ## get indexes for the PM probes for the affyID "1900_at" mypmindex <- pmindex(Dilution,"1900_at") ## same operation using the primitive mypmindex <- indexProbes(Dilution, which="pm", genenames="1900_at")[[1]] ## get the probe intensities from the index intensity(Dilution)[mypmindex, ] description(Dilution) ##we can also use the methods of eSet sampleNames(Dilution) abstract(Dilution) } } \keyword{classes} affy/man/AffyRNAdeg.Rd0000644000175200017520000000374314710217042015476 0ustar00biocbuildbiocbuild\name{AffyRNAdeg} \alias{AffyRNAdeg} \alias{summaryAffyRNAdeg} \alias{plotAffyRNAdeg} \title{Function to assess RNA degradation in Affymetrix GeneChip data.} \description{ Uses ordered probes in probeset to detect possible RNA degradation. Plots and statistics used for evaluation. } \usage{ AffyRNAdeg(abatch,log.it=TRUE) summaryAffyRNAdeg(rna.deg.obj,signif.digits=3) plotAffyRNAdeg(rna.deg.obj, transform = "shift.scale", cols = NULL, ...) } \arguments{ \item{abatch}{An object of class \code{\link{AffyBatch-class}}.} \item{log.it}{A logical argument: If log.it=T, then probe data is log2 transformed.} \item{rna.deg.obj}{Output from AffyRNAdeg.} \item{signif.digits}{Number of significant digits to show.} \item{transform}{Possible choices are "shift.scale","shift.only", and "neither". "Shift" vertically staggers the plots for individual chips, to make the display easier to read. "Scale" normalizes so that standard deviation is equal to 1.} \item{cols}{A vector of colors for plot, length = number of chips.} \item{\dots}{further arguments for \code{\link{plot}} function.} } \details{Within each probeset, probes are numbered directionally from the 5' end to the 3' end. Probe intensities are averaged by probe number, across all genes. If log.it=\code{FALSE} and transform="Neither", then plotAffyRNAdeg simply shows these means for each chip. Shifted and scaled versions of the plot can make it easier to see. } \value{ \code{AffyRNAdeg} returns a list with the following components: \item{sample.names }{names of samples, derived from affy batch object} \item{means.by.number}{average intensity by probe position} \item{ses}{standard errors for probe position averages} \item{slope}{from linear regression of means.by.number} \item{pvalue}{from linear regression of means.by.number} } \examples{ if (require(affydata)) { data(Dilution) RNAdeg<-AffyRNAdeg(Dilution) plotAffyRNAdeg(RNAdeg) } } \author{Leslie Cope} \keyword{hplot} \keyword{manip} affy/man/MAplot.Rd0000644000175200017520000000344014710217042014756 0ustar00biocbuildbiocbuild\name{MAplot} \alias{ma.plot} \alias{Mbox} \alias{MAplot} \alias{Mbox,AffyBatch-method} \alias{MAplot,AffyBatch-method} \title{Relative M vs. A plots} \description{ Create boxplots of M or M vs A plots. Where M is determined relative to a specified chip or to a pseudo-median reference chip. } \usage{ MAplot(object,...) Mbox(object,...) ma.plot(A, M, subset = sample(1:length(M), min(c(10000, length(M)))), show.statistics = TRUE, span = 2/3, family.loess = "gaussian", cex = 2, plot.method = c("normal","smoothScatter","add"), add.loess = TRUE, lwd = 1, lty = 1, loess.col = "red", ...) } \arguments{ \item{object}{an \code{\link[affy]{AffyBatch-class}}.} \item{\dots}{additional parameters for the routine.} \item{A}{a vector to plot along the horizontal axis.} \item{M}{a vector to plot along vertical axis.} \item{subset}{a set of indices to use when drawing the loess curve.} \item{show.statistics}{logical. If TRUE, some summary statistics of the M values are drawn.} \item{span}{span to be used for loess fit.} \item{family.loess}{\code{"guassian"} or \code{"symmetric"} as in \code{\link[stats]{loess}}.} \item{cex}{size of text when writing summary statistics on plot.} \item{plot.method}{a string specifying how the plot is to be drawn. \code{"normal"} plots points, \code{"smoothScatter"} uses the \code{\link[graphics]{smoothScatter}} function. Specifying \code{"add"} means that the MAplot should be added to the current plot.} \item{add.loess}{add a loess line to the plot.} \item{lwd}{width of loess line.} \item{lty}{line type for loess line.} \item{loess.col}{color for loess line.} } \examples{ if (require(affydata)) { data(Dilution) MAplot(Dilution) Mbox(Dilution) } } \seealso{\code{\link[affy]{mva.pairs}}} \keyword{hplot} affy/man/ProbeSet-class.Rd0000644000175200017520000000340014710217042016404 0ustar00biocbuildbiocbuild\name{ProbeSet-class} \docType{class} \alias{ProbeSet-class} \alias{mm,ProbeSet-method} \alias{mm<-,ProbeSet,matrix-method} \alias{pm<-,ProbeSet,matrix-method} \alias{pm,ProbeSet-method} \alias{show,ProbeSet-method} \alias{barplot,ProbeSet-method} \alias{colnames,ProbeSet-method} \alias{express.summary.stat,ProbeSet,character,character-method} \alias{sampleNames,ProbeSet-method} \title{Class ProbeSet} \description{A simple class that contains the PM and MM data for a probe set from one or more samples.} \section{Objects from the Class}{ Objects can be created by applying the method \code{\link{probeset}} to instances of AffyBatch.} \section{Slots}{ \describe{ \item{\code{id}:}{Object of class \code{"character"} containing the probeset ID.} \item{\code{pm}:}{Object of class \code{"matrix"} containing the PM intensities. Columns represent samples and rows the different probes.} \item{\code{mm}:}{Object of class \code{"matrix"} containing the MM intensities.} } } \section{Methods}{ \describe{ \item{colnames}{\code{signature(x = "ProbeSet")}: the column names of the \code{pm} matrices which are the sample names} \item{express.summary.stat}{\code{signature(x = "ProbeSet", pmcorrect = "character", summary = "character")}: applies a summary statistic to the probe set.} \item{sampleNames}{\code{signature(object = "ProbeSet")}: the column names of the \code{pm} matrices which are the sample names.} } } \note{More details are contained in the vignette.} \seealso{\code{\link[affy:AffyBatch-class]{probeset}}, \code{\link[affy]{AffyBatch-class}}} \examples{ if (require(affydata)) { data(Dilution) ps <- probeset(Dilution, geneNames(Dilution)[1:2]) names(ps) print(ps[[1]]) } } \keyword{classes} affy/man/ProgressBarText-class.Rd0000644000175200017520000000433114710217042017763 0ustar00biocbuildbiocbuild\name{ProgressBarText-class} \docType{class} \alias{ProgressBarText-class} \alias{close,ProgressBarText-method} \alias{initialize,ProgressBarText-method} \alias{open,ProgressBarText-method} \alias{updateMe} \alias{updateMe,ProgressBarText-method} \title{Class "ProgressBarText" } \description{A class to handle progress bars in text mode.} \section{Objects from the Class}{ Objects can be created by calls of the form \code{new("ProgressBarText", steps)}. } \section{Slots}{ \describe{ \item{\code{steps}:}{Object of class \code{"integer"}. The total number of steps the progress bar should represent.} \item{\code{barsteps}:}{Object of class \code{"integer"}. The size of the progress bar.} \item{\code{internals}:}{Object of class \code{"environment"}. For internal use.} } } \section{Methods}{ \describe{ \item{close}{\code{signature(con = "ProgressBarText")}: Terminate the progress bar (i.e. print what needs to be printed). Note that closing the instance will ensure the progress bar is plotted to its end.} \item{initialize}{\code{signature(.Object = "ProgressBarText")}: initialize a instance.} \item{open}{\code{signature(con = "ProgressBarText")}: Open a progress bar (i.e. print things). In the case open is called on a progress bar that was 'progress', the progress bar is resumed (this might be useful when one wishes to insert text output while there is a progress bar running).} \item{updateMe}{\code{signature(object = "ProgressBarText")}: Update the progress bar (see examples).} } } \author{ Laurent } \examples{ f <- function(x, header = TRUE) { pbt <- new("ProgressBarText", length(x), barsteps = as.integer(20)) open(pbt, header = header) for (i in x) { Sys.sleep(i) updateMe(pbt) } close(pbt) } ## if too fast on your machine, change the number x <- runif(15) f(x) f(x, header = FALSE) ## 'cost' of the progress bar: g <- function(x) { z <- 1 for (i in 1:x) { z <- z + 1 } } h <- function(x) { pbt <- new("ProgressBarText", as.integer(x), barsteps = as.integer(20)) open(pbt) for (i in 1:x) { updateMe(pbt) } close(pbt) } system.time(g(10000)) system.time(h(10000)) } \keyword{classes} affy/man/SpikeIn.Rd0000644000175200017520000000306714710217042015131 0ustar00biocbuildbiocbuild\name{SpikeIn} \alias{SpikeIn} \alias{concentrations} \title{SpikeIn Experiment Data: ProbeSet Example} \description{ This \code{\link[affy:ProbeSet-class]{ProbeSet}} represents part of SpikeIn experiment data set. } \usage{data(SpikeIn)} \format{\code{SpikeIn} is \code{\link[affy:ProbeSet-class]{ProbeSet}} containing the $PM$ and $MM$ intensities for a gene spiked in at different concentrations (given in the vector \code{colnames(pm(SpikeIn))}) in 12 different arrays.} \source{This comes from an experiments where 11 different cRNA fragments have been added to the hybridization mixture of the GeneChip arrays at different pM concentrations. The 11 control cRNAs were BioB-5, BioB-M, BioB-3, BioC-5, BioC-3, BioDn-5 (all \emph{E. coli}), CreX-5, CreX-3 (phage P1), and DapX-5, DapX-M, DapX-3 (\emph{B. subtilis}) The cRNA were chosen to match the target sequence for each of the Affymetrix control probe sets. For example, for DapX (a \emph{B. subtilis} gene), the 5', middle and 3' target sequences (identified by DapX-5, DapX-M, DapX-3) were each synthesized separately and spiked-in at a specific concentration. Thus, for example, DapX-3 target sequence may be added to the total hybridization solution of 200 micro-liters to give a final concentration of 0.5 pM. For this example we have the $PM$ and $MM$ for BioB-5 obtained from the arrays where it was spiked in at 0.0, 0.5, 0.75, 1, 1.5, 2, 3, 5, 12.5, 25, 50, and 150 pM. For more information see Irizarry, R.A., et al. (2001) \url{http://biosun01.biostat.jhsph.edu/~ririzarr/papers/index.html}} \keyword{datasets} affy/man/affy-deprecated.Rd0000644000175200017520000000111014710217042016575 0ustar00biocbuildbiocbuild\name{affy-deprecated} \alias{loess.normalize} \alias{maffy.normalize} \alias{multiloess} \alias{simplemultiLoess} \title{Deprecated functions in package \sQuote{affy}} \description{ These functions are provided for compatibility with older versions of affy only, and will be defunct at the next release. } \details{ The following functions are deprecated and will be made defunct; use the replacement indicated below: \itemize{ \item{loess.normalize: \code{\link{normalize.loess}}} \item{maffy.normalize} \item{multiloess} \item{simplemultiLoess} } } affy/man/affy-options.Rd0000644000175200017520000000313614710217042016202 0ustar00biocbuildbiocbuild\name{affy-options} \alias{affy-options} \title{Options for the affy package} \description{ Description of the options for the affy package. } \note{ The affy package options are contained in the Bioconductor options. The options are: \itemize{ \item \code{use.widgets}: a logical used to decide on the default of widget use. \item \code{compress.cel}: a logical \item \code{compress.cdf}: a logical \item \code{probes.loc}: a list. Each element of the list is it self a list with two elements \emph{what} and \emph{where}. When looking for the informations about the locations of the probes on the array, the elements in the list will be looked at one after the other. The first one for which \emph{what} and \emph{where} lead to the matching locations information is used. The element \emph{what} can be one of \emph{package}, \emph{environment} or \emph{file}. The element \emph{where} depends on the corresponding element \emph{what}. \itemize{ \item if \emph{package}: location for the package (like it would be for the argument \code{lib.loc} for the function \code{library}.) \item if \emph{environment}: an \code{environment} to look for the information (like the argument \code{env} for the function \code{get}). \item if \emph{file}: a \code{character} with the path in which a CDF file can be found. } } } \examples{ ## get the options opt <- getOption("BioC") affy.opt <- opt$affy ## list their names names(affy.opt) ## set the option compress.cel affy.opt$compress.cel <- TRUE options(BioC=opt) } \keyword{manip} affy/man/affy.scalevalue.exprSet.Rd0000644000175200017520000000213414710217042020262 0ustar00biocbuildbiocbuild%%%THIS FUNCTION SHOULD BE In BIOBASE or SOMEWHERE ELSE... NEXT RELEASE %% LG: In such a case, I assume the long awaited agreement about %% normalization methods will be here and all the normalization methods %% will be stored together \name{affy.scalevalue.exprSet} \alias{affy.scalevalue.exprSet} \title{Scale normalization for expreSets} \description{ Normalizes expression values using the method described in the Affymetrix user manual. } \usage{ affy.scalevalue.exprSet(eset, sc = 500, analysis="absolute") } \arguments{ \item{eset}{An \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} object.} \item{sc}{Value at which all arrays will be scaled to.} \item{analysis}{Should we do absolute or comparison analysis, although "comparison" is still not implemented.} } \details{ This is function was implemented from the Affymetrix technical documentation for MAS 5.0. It can be downloaded from the website of the company. Please refer to this document for details. } \author{Laurent} \value{ A normalized \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}}. } \keyword{manip} affy/man/barplot.ProbeSet.Rd0000644000175200017520000000211014710217042016740 0ustar00biocbuildbiocbuild\name{barplot.ProbeSet} \alias{barplot.ProbeSet} \title{show a ProbeSet as barplots} \description{ Displays the probe intensities in a ProbeSet as a barplots } \usage{ \method{barplot}{ProbeSet}(height, xlab = "Probe pair", ylab = "Intensity", main = NA, col.pm = "red", col.mm = "blue", beside = TRUE, names.arg = "pp", ask = TRUE, scale, ...) } \arguments{ \item{height}{an object of class \code{ProbeSet}.} \item{xlab}{label for x axis.} \item{ylab}{label for y axis.} \item{main}{main label for the figure.} \item{col.pm}{color for the `pm' intensities.} \item{col.mm}{color for the `mm' intensities.} \item{beside}{bars beside each others or not.} \item{names.arg}{names to be plotted below each bar or group of bars.} \item{ask}{ask before ploting the next barplot.} \item{scale}{put all the barplot to the same scale.} \item{\dots}{extra parameters to be passed to \code{\link{barplot}}.} } \examples{ if (require(affydata)) { data(Dilution) gn <- geneNames(Dilution) pps <- probeset(Dilution, gn[1])[[1]] barplot.ProbeSet(pps) } } \keyword{hplot} affy/man/bg.adjust.Rd0000644000175200017520000000145014710217042015442 0ustar00biocbuildbiocbuild\name{bg.adjust} \alias{bg.adjust} \alias{bg.parameters} \title{Background adjustment (internal function)} \description{ An internal function to be used by \code{\link{bg.correct.rma}}. } \usage{ bg.adjust(pm, n.pts = 2^14, ...) bg.parameters(pm, n.pts = 2^14) } \arguments{ \item{pm}{a pm matrix} \item{n.pts}{number of points to use in call to \code{density}.} \item{\dots}{extra arguments to pass to bg.adjust.} } \details{Assumes PMs are a convolution of normal and exponential. So we observe X+Y where X is background and Y is signal. \code{bg.adjust} returns E[Y|X+Y, Y>0] as our background corrected PM. \code{bg.parameters} provides ad hoc estimates of the parameters of the normal and exponential distributions.} \value{a matrix} \seealso{\code{\link{bg.correct.rma}}} \keyword{manip} affy/man/bgc.Rd0000644000175200017520000000415114710217042014315 0ustar00biocbuildbiocbuild\name{bg.correct} \alias{bg.correct} \alias{bg.correct.none} %took out .pmonly casue rma is pm-only %\alias{bg.correct.subtractmm} \alias{bg.correct.rma} \alias{bg.correct.mas} \title{Background Correction} \description{ Background corrects probe intensities in an object of class \code{\link[affy:AffyBatch-class]{AffyBatch}}. } \usage{ bg.correct(object, method, ...) bg.correct.rma(object,...) bg.correct.mas(object, griddim) bg.correct.none(object, ...) } \arguments{ \item{object}{An object of class \code{\link[affy:AffyBatch-class]{AffyBatch}}.} \item{method}{A \code{character} that defines what background correction method will be used. Available methods are given by \code{bg.correct.methods}.} \item{griddim}{grid dimension used for mas background estimate. The array is divided into griddim equal parts. Default is 16.} \item{\dots}{arguments to pass along to the engine function.} } \details{ The name of the method to apply must be double-quoted. Methods provided with the package are currently: \itemize{ \item bg.correct.none: returns \code{object} unchanged. \item bg.correct.chipwide: noise correction as described in a `white paper' from Affymetrix. \item bg.correct.rma: the model based correction used by the RMA expression measure. } They are listed in the variable \code{bg.correct.methods}. The user must supply the word after "bg.correct", i.e none, subtractmm, rma, etc... More details are available in the vignette. R implementations similar in function to the internal implementation used by \code{bg.correct.rma} are in \code{\link{bg.adjust}}. } \value{ An \code{\link[affy:AffyBatch-class]{AffyBatch}} for which the intensities have been background adjusted. For some methods (RMA), only PMs are corrected and the MMs remain the same. } \examples{ if (require(affydata)) { data(Dilution) ##bgc will be the bg corrected version of Dilution bgc <- bg.correct(Dilution, method="rma") ##This plot shows the tranformation plot(pm(Dilution)[,1],pm(bgc)[,1],log="xy", main="PMs before and after background correction") } } \keyword{manip} affy/man/cdfFromBioC.Rd0000644000175200017520000000204014710217042015672 0ustar00biocbuildbiocbuild\name{cdfFromBioC} \alias{cdfFromBioC} \alias{cdfFromLibPath} \alias{cdfFromEnvironment} \title{Functions to obtain CDF files} \description{ A set of functions to obtain CDF files from various locations. } \usage{ cdfFromBioC(cdfname, lib = .libPaths()[1], verbose = TRUE) cdfFromLibPath(cdfname, lib = NULL, verbose=TRUE) cdfFromEnvironment(cdfname, where, verbose=TRUE) } \arguments{ \item{cdfname}{name of the CDF.} \item{lib}{install directory for the CDF package.} \item{where}{environment to search.} \item{verbose}{logical controlling extra output.} } \details{ These functions all take a requested CDF environment name and will attempt to locate that environment in the appropriate location (a package's data directory, as a CDF package in the .libPaths(), from a loaded environment or on the Bioconductor website. If the environment can not be found, it will return a list of the methods tried that failed. } \value{ The CDF environment or a list detailing the failed locations. } \author{Jeff Gentry} \keyword{utilities} affy/man/cdfenv.example.Rd0000644000175200017520000000052514710217042016462 0ustar00biocbuildbiocbuild\name{cdfenv.example} \alias{cdfenv.example} \title{Example cdfenv} \description{ Example cdfenv (environment containing the probe locations). } \usage{data(cdfenv.example)} \format{ An \code{\link{environment}} \code{cdfenv.example} containing the probe locations} \source{Affymetrix CDF file for the array Hu6800} \keyword{datasets} affy/man/cleancdfname.Rd0000644000175200017520000000252114710217042016161 0ustar00biocbuildbiocbuild\name{cleancdfname} \alias{cleancdfname} \alias{mapCdfName} \title{Clean Affymetrix's CDF name} \description{ This function converts Affymetrix's names for CDF files to the names used in the annotation package and in all Bioconductor. } \usage{ cleancdfname(cdfname, addcdf = TRUE) } \arguments{ \item{cdfname}{A \code{character} denoting Affymetrix'x CDF file name } \item{addcdf}{A \code{logical}. If \code{TRUE} it adds the string "cdf" at the end of the cleaned CDF name. This is used to name the \code{cdfenvs} packages.} } \details{ This function takes a CDF filename obtained from an Affymetrix file (from a CEL file for example) and convert it to a convention of ours: all small caps and only alphanumeric characters. The details of the rule can be seen in the code. We observed exceptions that made us create a set of special cases for mapping CEL to CDF. The object \code{mapCdfName} holds information about these cases. It is a \code{data.frame} of three elements: the first is the name as found in the CDF file, the second the name in the CEL file and the third the name in Bioconductor. \code{mapCdfName} can be loaded using \code{data(mapCdfName)}. } \value{ A \code{character} } \examples{ cdf.tags <- c("HG_U95Av2", "HG-133A") for (i in cdf.tags) cat(i, "becomes", cleancdfname(i), "\n") } \keyword{character} affy/man/debug.affy123.Rd0000644000175200017520000000022114710217042016014 0ustar00biocbuildbiocbuild\name{debug.affy123} \docType{methods} \alias{debug.affy123} \title{Debugging Flag} \description{ For developmental use only } \keyword{methods} affy/man/expresso.Rd0000644000175200017520000000674614710217042015446 0ustar00biocbuildbiocbuild\name{expresso} \alias{expresso} \alias{bgcorrect} \title{ From raw probe intensities to expression values } \description{ Goes from raw probe intensities to expression values } \usage{ expresso( afbatch, # background correction bg.correct = TRUE, bgcorrect.method = NULL, bgcorrect.param = list(), # normalize normalize = TRUE, normalize.method = NULL, normalize.param = list(), # pm correction pmcorrect.method = NULL, pmcorrect.param = list(), # expression values summary.method = NULL, summary.param = list(), summary.subset = NULL, # misc. verbose = TRUE, % warnings = TRUE, widget = FALSE) } \arguments{ \item{afbatch}{an \code{\link[affy:AffyBatch-class]{AffyBatch}} object.} \item{bg.correct}{a boolean to express whether background correction is wanted or not.} \item{bgcorrect.method}{the name of the background adjustment method.} \item{bgcorrect.param}{a list of parameters for bgcorrect.method (if needed/wanted).} \item{normalize}{ normalization step wished or not.} \item{normalize.method}{the normalization method to use.} \item{normalize.param}{a list of parameters to be passed to the normalization method (if wanted).} \item{pmcorrect.method}{the name of the PM adjustment method.} \item{pmcorrect.param}{a list of parameters for pmcorrect.method (if needed/wanted).} \item{summary.method}{the method used for the computation of expression values.} \item{summary.param}{a list of parameters to be passed to the \code{summary.method} (if wanted).} \item{summary.subset}{a list of 'affyids'. If \code{NULL}, an expression summary value is computed for everything on the chip.} \item{verbose}{logical value. If \code{TRUE}, it writes out some messages.} % \item{warnings}{warning when something goes wrong} \item{widget}{a boolean to specify the use of widgets (the package tkWidget is required).} } \details{ Some arguments can be left to \code{NULL} if the \code{widget=TRUE}. In this case, a widget pops up and let the user choose with the mouse. The arguments are: \code{AffyBatch}, \code{bgcorrect.method}, \code{normalize.method}, \code{pmcorrect.method} and \code{summary.method}. For the mas 5.0 and 4.0 methods ones need to normalize after obtaining expression. The function \code{\link{affy.scalevalue.exprSet}} does this. For the Li and Wong summary method notice you will not get the same results as you would get with dChip. dChip is not open source so it is not easy to reproduce. Notice also that this iterative algorithm will not always converge. If you run the algorithm on thousands of probes expect some non-convergence warnings. These are more likely when few arrays are used. We recommend using this method only if you have 10 or more arrays. Please refer to the \code{\link{fit.li.wong}} help page for more details. } \value{ An object of class \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}}, with an attribute \code{pps.warnings} as returned by the method \code{\link{computeExprSet}}. } \seealso{\code{\link[affy:AffyBatch-class]{AffyBatch}}} \examples{ if (require(affydata)) { data(Dilution) eset <- expresso(Dilution, bgcorrect.method="rma", normalize.method="constant",pmcorrect.method="pmonly", summary.method="avgdiff") ##to see options available for bg correction type: bgcorrect.methods() } } \keyword{manip} affy/man/expressoWidget.Rd0000644000175200017520000000414414710217042016600 0ustar00biocbuildbiocbuild\name{expressoWidget} \alias{expressoWidget} \title{A widget for users to pick correction methods} \description{ This widget is called by expresso to allow users to select correction methods that will be used to process affy data. } \usage{ expressoWidget(BGMethods, normMethods, PMMethods, expMethods, BGDefault, normDefault, PMDefault, expDefault) } \arguments{ \item{BGMethods}{a vector of character strings for the available methods that can be used as a background correction method of affy data.} \item{normMethods}{a vector of character strings for the available methods that can be used as a normalization method of affy data.} \item{PMMethods}{a vector of character strings for the available methods that can be used as a PM correction method of affy data.} \item{expMethods}{a vector of character strings for the available methods that can be used as a summary method of affy data.} \item{BGDefault}{a character string for the name of a default background correction method.} \item{normDefault}{a character string for the name of a default normalization method.} \item{PMDefault}{a character string for the name of a default PM correction method.} \item{expDefault}{a character string for the name of a default summary method.} } \details{ The widget will be invoked when expresso is called with argument "widget" set to TRUE. Default values can be changed using the drop down list boxes. Double clicking on an option from the drop-down list makes an selection. The first element of the list for available methods will be the default method if no default is provided. } \value{ The widget returns a list of selected correction methods. \item{BG}{background correction method} \item{NORM}{normalization method} \item{PM}{PM correction method} \item{EXP}{summary method} } \references{Documentations of affy package} \author{Jianhua Zhang} \seealso{\code{\link{expresso}}} \examples{ if(interactive()){ require(widgetTools) expressoWidget(c("mas", "none", "rma"), c("constant", "quantiles"), c("mas", "pmonly"), c("liwong", "playerout")) } } \keyword{interface} affy/man/fit.li.wong.Rd0000644000175200017520000001047514710217042015726 0ustar00biocbuildbiocbuild\name{fit.li.wong} \alias{fit.li.wong} \alias{li.wong} \title{Fit Li and Wong Model to a Probe Set} \description{Fits the model described in Li and Wong (2001) to a probe set with I chips and J probes. } \usage{ fit.li.wong(data.matrix, remove.outliers=TRUE, normal.array.quantile=0.5, normal.resid.quantile=0.9, large.threshold=3, large.variation=0.8, outlier.fraction=0.14, delta=1e-06, maxit=50, outer.maxit=50,verbose=FALSE, ...) li.wong(data.matrix,remove.outliers=TRUE, normal.array.quantile=0.5, normal.resid.quantile=0.9, large.threshold=3, large.variation=0.8, outlier.fraction=0.14, delta=1e-06, maxit=50, outer.maxit=50,verbose=FALSE) } \arguments{ \item{data.matrix}{an I x J matrix containing the probe set data. Typically the i,j entry will contain the PM-MM value for probe pair j in chip i. Another possible use, is to use PM instead of PM-MM.} \item{remove.outliers}{logical value indicating if the algorithm will remove outliers according to the procedure described in Li and Wong (2001).} \item{large.threshold}{used to define outliers.} \item{normal.array.quantile}{quantile to be used when determining what a normal SD is. probes or chips having estimates with SDs bigger than the quantile \code{normal.array.quantile} of all SDs x \code{large.threshold}.} \item{normal.resid.quantile}{any residual bigger than the \code{normal.resid.quantile} quantile of all residuals x \code{large.threshold} is considered an outlier.} \item{large.variation}{any probe or chip describing more than this much total variation is considered an outlier.} \item{outlier.fraction}{this is the maximum fraction of single outliers that can be in the same probe or chip.} \item{delta}{numerical value used to define the stopping criterion.} \item{maxit}{maximum number of iterations when fitting the model.} \item{outer.maxit}{maximum number of iterations of defined outliers.} \item{verbose}{logical value. If \code{TRUE} information is given of the status of the algorithm.} \item{\dots}{additional arguments.} } \details{ This is Bioconductor's implementation of the Li and Wong algorithm. The Li and Wong PNAS 2001 paper was followed. However, you will not get the same results as you would get with dChip. dChip is not open source so it is not easy to reproduce. Notice that this iterative algorithm will not always converge. If you run the algorithm on thousands of probes expect some non-convergence warnings. These are more likely when few arrays are used. We recommend using this method only if you have 10 or more arrays. Please refer to references for more details. } \value{\code{li.wong} returns a vector of expression measures (or column effects) followed by their respective standard error estimates. It was designed to work with \code{express} which is no longer part of the package. \code{fit.li.wong} returns much more. Namely, a list containing the fitted parameters and relevant information. \item{theta}{fitted thetas.} \item{phi}{fitted phis.} \item{sigma.eps}{estimated standard deviation of the error term.} \item{sigma.theta}{estimated standard error of theta.} \item{sigma.phi}{estimated standard error of phis.} \item{theta.outliers}{logical vector describing which chips (thetas) are considered outliers (\code{TRUE}).} \item{phi.outliers}{logical vector describing which probe sets (phis) are considered outliers (\code{TRUE})} \item{convergence1}{logical value. If \code{FALSE} the algorithm did not converge when fitting the phis and thetas.} \item{convergence2}{logical value. If \code{FALSE} the algorithm did not converge in deciding what are outliers.} \item{iter}{number of iterations needed to achieve convergence.} \item{delta}{difference between thetas when iteration stopped.} } \examples{ x <- sweep(matrix(2^rnorm(600),30,20),1,seq(1,2,len=30),FUN="+") fit1 <- fit.li.wong(x) plot(x[1,]) lines(fit1$theta) } \references{ Li, C. and Wong, W.H. (2001) \emph{Genome Biology} \bold{2}, 1--11.\cr Li, C. and Wong, W.H. (2001) \emph{Proc. Natl. Acad. Sci USA} \bold{98}, 31--36. } \author{Rafael A. Irizarry, Cheng Li, Fred A. Wright, Ben Bolstad} \seealso{\code{\link{li.wong}}, \code{\link{expresso}}} \keyword{manip} \keyword{models} affy/man/generateExprSet-methods.Rd0000644000175200017520000000426614710217042020337 0ustar00biocbuildbiocbuild\name{generateExprSet-method} \docType{methods} \alias{generateExprSet-methods} \alias{computeExprSet} \alias{generateExprSet.methods} \alias{upDate.generateExprSet.methods} \title{generate a set of expression values} \description{ Generate a set of expression values from the probe pair information. The set of expression is returned as an \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} object. } \usage{ computeExprSet(x, pmcorrect.method, summary.method, ...) generateExprSet.methods() upDate.generateExprSet.methods(x) } \arguments{ \item{x}{a \code{\link[=AffyBatch-class]{AffyBatch}} holding the probe level informations to generate the expression values, for computeExprSet, and for upDate.generateExprSet.methods it is a character vector..} \item{pmcorrect.method}{the method used to correct PM values (see section 'details').} \item{summary.method}{the method used to generate the expression value (see section 'details').} \item{\dots}{any of the options of the normalization you would like to modify.} } \details{ An extra argument \code{ids=} can be passed. It must be a vector of affids. The expression values will only be computed and returned for these affyids. The different methods available through this mechanism can be accessed by calling the method \code{generateExprSet.methods} with an object of call \code{Cel.container} as an argument. In the Affymetrix design, \emph{MM} probes were included to measure the noise (or background signal). The original algorithm for background correction was to subtract the \emph{MM} signal to the \emph{PM} signal. The methods currently included in the package are "bg.correct.subtractmm", "bg.correct.pmonly" and "bg.correct.adjust". To alter the available methods for generating ExprSets use upDate.generateExprSet.methods. } \seealso{ method \code{generateExprSet} of the class \code{\link[=AffyBatch-class]{AffyBatch}}\cr \code{\link{expresso}} } \examples{ if (require(affydata)) { data(Dilution) ids <- c( "1000_at","1001_at") eset <- computeExprSet(Dilution, pmcorrect.method="pmonly", summary.method="avgdiff", ids=ids) } } \keyword{manip} affy/man/generateExprVal-methods.Rd0000644000175200017520000000301514710217042020315 0ustar00biocbuildbiocbuild\name{generateExprVal} \alias{express.summary.stat} \alias{express.summary.stat-methods} \alias{express.summary.stat.methods} \alias{upDate.express.summary.stat.methods} \title{Compute a summary expression value from the probes intensities} \description{ Compute a summary expression value from the probes intensities } \usage{ express.summary.stat(x, pmcorrect, summary, ...) express.summary.stat.methods() # vector of names of methods upDate.express.summary.stat.methods(x) } \arguments{ \item{x}{a (\code{ProbeSet}} \item{pmcorrect}{the method used to correct the PM values before summarizing to an expression value.} \item{summary}{the method used to generate the expression value.} \item{\dots}{other parameters the method might need... (see the corresponding methods below...)} } \value{ Returns a vector of expression values. } \examples{ if (require(affydata)) { data(Dilution) p <- probeset(Dilution, "1001_at")[[1]] par(mfcol=c(5,2)) mymethods <- express.summary.stat.methods() nmet <- length(mymethods) nc <- ncol(pm(p)) layout(matrix(c(1:nc, rep(nc+1, nc)), nc, 2), width = c(1, 1)) barplot(p) results <- matrix(0, nc, nmet) rownames(results) <- paste("sample", 1:nc) colnames(results) <- mymethods for (i in 1:nmet) { ev <- express.summary.stat(p, summary=mymethods[i], pmcorrect="pmonly") if (mymethods[[i]] != "medianpolish") results[, i] <- 2^(ev$exprs) else results[, i] <- ev$exprs } dotchart(results, labels=paste("sample", 1:nc)) } } \keyword{manip} affy/man/generateExprVal.method.avgdiff.Rd0000644000175200017520000000352014710217042021541 0ustar00biocbuildbiocbuild\name{generateExprVal.method.avgdiff} \alias{generateExprVal.method.avgdiff} \alias{generateExprVal.method.medianpolish} \alias{generateExprVal.method.liwong} \alias{generateExprVal.method.mas} \title{Generate an expression value from the probes informations} \description{ Generate an expression from the probes } \usage{ generateExprVal.method.avgdiff(probes, ...) generateExprVal.method.medianpolish(probes, ...) generateExprVal.method.liwong(probes, ...) generateExprVal.method.mas(probes, ...) } \arguments{ \item{probes}{a matrix of probe intensities with rows representing probes and columns representing samples. Usually \code{pm(probeset)} where \code{probeset} is a of class \code{\link[affy:ProbeSet-class]{ProbeSet}}.} \item{\dots}{extra arguments to pass to the respective function.} } \value{ A list containing entries: \item{exprs}{The expression values.} \item{se.exprs}{The standard error estimate.} } \examples{ data(SpikeIn) ##SpikeIn is a ProbeSets probes <- pm(SpikeIn) avgdiff <- generateExprVal.method.avgdiff(probes) medianpolish <- generateExprVal.method.medianpolish(probes) liwong <- generateExprVal.method.liwong(probes) playerout <- generateExprVal.method.playerout(probes) mas <- generateExprVal.method.mas(probes) concentrations <- as.numeric(sampleNames(SpikeIn)) plot(concentrations,avgdiff$exprs,log="xy",ylim=c(50,10000),pch="a",type="b") points(concentrations,2^medianpolish$exprs,pch="m",col=2,type="b",lty=2) points(concentrations,liwong$exprs,pch="l",col=3,type="b",lty=3) points(concentrations,playerout$exprs,pch="p",col=4,type="b",lty=4) points(concentrations,mas$exprs,pch="p",col=4,type="b",lty=4) } \seealso{ \code{\link[affy]{generateExprSet-methods}}, \code{\link[affy]{generateExprVal.method.playerout}}, \code{\link[affy]{fit.li.wong}} } \keyword{manip} affy/man/generateExprVal.method.playerout.Rd0000644000175200017520000000242014710217042022155 0ustar00biocbuildbiocbuild\name{generateExprVal.method.playerout} \alias{generateExprVal.method.playerout} \alias{playerout.costfunction} \title{Generate an expression value from the probes informations} \description{ Generate an expression from the probes } \usage{ generateExprVal.method.playerout(probes, weights=FALSE, optim.method="L-BFGS-B") } \arguments{ \item{probes}{a list of \code{probes} slots from \code{PPSet.container}} \item{weights}{Should the resulting weights be returned ?} \item{optim.method}{see parameter 'optim' for the function \code{\link{optim}}} } \value{ A vector of expression values. } \details{ A non-parametric method to weight each perfect match probe in the set and to compute a weighted mean of the perfect match values. One will notice this method only makes use of the perfect matches. (see function \code{playerout.costfunction} for the cost function). } \author{ Laurent \cr (Thanks to E. Lazaridris for the original playerout code and the discussions about it) } \references{ Emmanuel N. Lazaridis, Dominic Sinibaldi, Gregory Bloom, Shrikant Mane and Richard Jove A simple method to improve probe set estimates from oligonucleotide arrays, Mathematical Biosciences, Volume 176, Issue 1, March 2002, Pages 53-58 } \keyword{manip} affy/man/hlog.Rd0000644000175200017520000000134014710217042014510 0ustar00biocbuildbiocbuild\name{hlog} \alias{hlog} \title{Hybrid Log} \description{Given a constant \code{c} this function returns \code{x} if \code{x} is less than \code{c} and \code{sign(x)*(c*log(abs(x)/c) + c)} if its not. Notice this is a continuous odd ( f(-x)=-f(x) ) function with continuous first derivative. The main purpose is to perform log transformation when one has negative numbers, for example for PM-MM.} \usage{ hlog(x, constant=1) } \arguments{ \item{x}{a number.} \item{constant}{the constant c (see description).} } \details{ If \code{constant} is less than or equal to 0 \code{log(x)} is returned for all \code{x}. If \code{constant} is infinity \code{x} is returned for all \code{x}. } \author{Rafael A. Irizarry} \keyword{math} affy/man/justrma.Rd0000644000175200017520000001152314710217042015250 0ustar00biocbuildbiocbuild\name{justRMA} \alias{justRMA} \alias{just.rma} \title{Read CEL files into an ExpressionSet} \description{ Read CEL files and compute an expression measure without using an AffyBatch.} \usage{ just.rma(\dots, filenames = character(0), phenoData = new("AnnotatedDataFrame"), description = NULL, notes = "", compress = getOption("BioC")$affy$compress.cel, rm.mask = FALSE, rm.outliers = FALSE, rm.extra = FALSE, verbose=FALSE, background=TRUE, normalize=TRUE, bgversion=2, destructive=FALSE, cdfname = NULL) justRMA(\dots, filenames=character(0), widget=getOption("BioC")$affy$use.widgets, compress=getOption("BioC")$affy$compress.cel, celfile.path=getwd(), sampleNames=NULL, phenoData=NULL, description=NULL, notes="", rm.mask=FALSE, rm.outliers=FALSE, rm.extra=FALSE, hdf5=FALSE, hdf5FilePath=NULL,verbose=FALSE, normalize=TRUE, background=TRUE, bgversion=2, destructive=FALSE, cdfname = NULL) } \arguments{ \item{\dots}{file names separated by comma.} \item{filenames}{file names in a character vector.} \item{phenoData}{an \code{\link[Biobase:class.AnnotatedDataFrame]{AnnotatedDataFrame}} object.} \item{description}{a \code{\link[Biobase:class.MIAME]{MIAME}} object.} \item{notes}{notes.} \item{compress}{are the CEL files compressed?} \item{rm.mask}{should the spots marked as 'MASKS' set to \code{NA}?} \item{rm.outliers}{should the spots marked as 'OUTLIERS' set to \code{NA}?} \item{rm.extra}{if \code{TRUE}, then overrides what is in \code{rm.mask} and \code{rm.oultiers}.} \item{hdf5}{use of hdf5 ? (not available yet)} \item{hdf5FilePath}{a filename to use with hdf5 (not available yet).} \item{verbose}{verbosity flag.} \item{widget}{a logical specifying if widgets should be used.} \item{celfile.path}{a character denoting the path \code{ReadAffy} should look for cel files.} \item{sampleNames}{a character vector of sample names to be used in the \code{AffyBatch}.} \item{normalize}{logical value. If \code{TRUE}, then normalize data using quantile normalization.} \item{background}{logical value. If \code{TRUE}, then background correct using RMA background correction.} \item{bgversion}{integer value indicating which RMA background to use 1: use background similar to pure R rma background given in affy version 1.0 - 1.0.2 2: use background similar to pure R rma background given in affy version 1.1 and above} \item{destructive}{logical value. If \code{TRUE}, then works on the PM matrix in place as much as possible, good for large datasets.} \item{cdfname}{Used to specify the name of an alternative cdf package. If set to \code{NULL}, then the usual cdf package based on Affymetrix' mappings will be used.} } \details{ \code{justRMA} is a wrapper for \code{just.rma} that permits the user to read in phenoData, MIAME information, and CEL files using widgets. One can also define files where to read phenoData and MIAME information. If the function is called with no arguments \code{justRMA()}, then all the CEL files in the working directory are read, converted to an expression measure using RMA and put into an \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}}. However, the arguments give the user great flexibility. \code{phenoData} is read using \code{\link[Biobase]{read.AnnotatedDataFrame}}. If a character is given, it tries to read the file with that name to obtain the \code{AnnotatedDataFrame} object as described in \code{\link[Biobase]{read.AnnotatedDataFrame}}. If left \code{NULL} and \code{widget=FALSE} (\code{widget=TRUE} is not currently supported), then a default object is created. It will be an object of class \code{\link[Biobase:class.AnnotatedDataFrame]{AnnotatedDataFrame}} with its pData being a data.frame with column x indexing the CEL files. \code{description} is read using \code{\link[Biobase]{read.MIAME}}. If a character is given, it tries to read the file with that name to obtain a \code{MIAME} instance. If left \code{NULL} but \code{widget=TRUE}, then widgets are used. If left \code{NULL} and \code{widget=FALSE}, then an empty instance of \code{MIAME} is created. The arguments \code{rm.masks}, \code{rm.outliers}, \code{rm.extra} are passed along to the function \code{read.celfile}. } \value{ An \code{ExpressionSet} object, containing expression values identical to what one would get from running \code{rma} on an \code{AffyBatch}. } \author{In the beginning: James MacDonald Supporting routines, maintenance and just.rma: Ben Bolstad } \seealso{\code{\link[affy]{rma}}, \code{\link{read.affybatch}}} \keyword{manip} affy/man/list.celfiles.Rd0000644000175200017520000000071514710217042016324 0ustar00biocbuildbiocbuild\name{list.celfiles} \alias{list.celfiles} \title{List the Cel Files in a Directory/Folder} \description{ This function produces a vector containing the names of files in the named directory/folder ending in .cel or .CEL. } \usage{ list.celfiles(...) } \arguments{ \item{\dots}{arguments to pass along to \code{\link[base]{list.files}}} } \value{ A character vector of file names. } \seealso{list.files} \examples{ list.celfiles() } \keyword{character} affy/man/maffy.subset.Rd0000644000175200017520000000164214710217042016172 0ustar00biocbuildbiocbuild\name{maffy.subset} \alias{maffy.subset} \title{Select Subset} \description{Select a subset of rows with small rank-range over columns.} \usage{ maffy.subset(data,subset.size=5000,maxit=100, subset.delta=max(round(subset.size/100),25),verbose=FALSE)} \arguments{ \item{data}{a matrix} \item{subset.size}{desired size of subset} \item{maxit}{maximum number of iterations} \item{subset.delta}{maximum deviation from subset.size} \item{verbose}{logical value.} } \details{ Please refer to references. } \value{ A list with component \code{subset}, the indexes for subset. } \references{Astrand, M. (2001) \url{http://www.math.chalmers.se/~magnusaa/maffy/}} \author{Magnus Astrand} \seealso{ \code{\link{maffy.normalize}}} \examples{ if (require(affydata)) { #data(Dilution) #x <- log2(pm(Dilution)[,1:3]) #Index <- maffy.subset(x,subset.size=100)$subset #mva.pairs(x[Index,]) } } \keyword{internal} affy/man/mas5.Rd0000644000175200017520000000341114710217042014425 0ustar00biocbuildbiocbuild\name{mas5} \alias{mas5} \title{MAS 5.0 expression measure} \description{ This function converts an instance of \code{\link{AffyBatch}} into an instance of \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} using our implementation of Affymetrix's MAS 5.0 expression measure. } \usage{ mas5(object, normalize = TRUE, sc = 500, analysis = "absolute", ...) } \arguments{ \item{object}{an instance of \code{\link{AffyBatch}}} \item{normalize}{logical. If \code{TRUE} scale normalization is used after we obtain an instance of \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}}} \item{sc}{Value at which all arrays will be scaled to.} \item{analysis}{should we do absolute or comparison analysis, although "comparison" is still not implemented.} \item{\dots}{other arguments to be passed to \code{\link{expresso}}.} } \details{ This function is a wrapper for \code{\link{expresso}} and \code{\link{affy.scalevalue.exprSet}}.} \value{ \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} The methods used by this function were implemented based upon available documentation. In particular a useful reference is Statistical Algorithms Description Document by Affymetrix. Our implementation is based on what is written in the documentation and, as you might appreciate, there are places where the documentation is less than clear. This function does not give exactly the same results. All source code of our implementation is available. You are free to read it and suggest fixes. For more information visit this URL: \url{http://stat-www.berkeley.edu/users/bolstad/} } \seealso{\code{\link{expresso}},\code{\link{affy.scalevalue.exprSet}}} \examples{ if (require(affydata)) { data(Dilution) eset <- mas5(Dilution) } } \keyword{manip} affy/man/mas5calls.Rd0000644000175200017520000001300614710217042015445 0ustar00biocbuildbiocbuild\name{mas5calls} \alias{mas5calls,AffyBatch-method} \alias{mas5calls,ProbeSet-method} \alias{mas5calls} \alias{mas5.detection} \alias{mas5calls.AffyBatch} \alias{mas5calls.ProbeSet} \title{MAS 5.0 Absolute Detection} \description{ Performs the Wilcoxon signed rank-based gene expression presence/absence detection algorithm first implemented in the Affymetrix Microarray Suite version 5. } \usage{ mas5calls(object,...) mas5calls.AffyBatch(object, ids = NULL, verbose = TRUE, tau = 0.015, alpha1 = 0.04, alpha2 = 0.06, ignore.saturated=TRUE) mas5calls.ProbeSet(object, tau = 0.015, alpha1 = 0.04, alpha2 = 0.06, ignore.saturated=TRUE) mas5.detection(mat, tau = 0.015, alpha1 = 0.04, alpha2 = 0.06, exact.pvals = FALSE, cont.correct = FALSE) } \arguments{ \item{object}{an object of class \code{AffyBatch} or \code{ProbeSet}.} \item{ids}{probeset IDs for which you want to compute calls.} \item{mat}{an n-by-2 matrix of paired values (pairs in rows), PMs first col.} \item{verbose}{logical. It \code{TRUE}, status of processing is reported.} \item{tau}{a small positive constant.} \item{alpha1}{a significance threshold in (0, alpha2).} \item{alpha2}{a significance threshold in (alpha1, 0.5).} \item{exact.pvals}{logical controlling whether exact p-values are computed (irrelevant if n<50 and there are no ties). Otherwise the normal approximation is used.} \item{ignore.saturated}{if TRUE, do the saturation correction described in the paper, with a saturation level of 46000.} \item{cont.correct}{logical controlling whether continuity correction is used in the p-value normal approximation.} \item{\dots}{any of the above arguments that applies.} } \details{ This function performs the hypothesis test: H0: median(Ri) = tau, corresponding to absence of transcript H1: median(Ri) > tau, corresponding to presence of transcript where Ri = (PMi - MMi) / (PMi + MMi) for each i a probe-pair in the probe-set represented by data. Currently exact.pvals=TRUE is not supported, and cont.correct=TRUE works but does not give great results (so both should be left as FALSE). The defaults for tau, alpha1 and alpha2 correspond to those in MAS5.0. The p-value that is returned estimates the usual quantity: Pr(observing a more "present looking" probe-set than data | data is absent) So that small p-values imply presence while large ones imply absence of transcript. The detection call is computed by thresholding the p-value as in: call "P" if p-value < alpha1 call "M" if alpha1 <= p-value < alpha2 call "A" if alpha2 <= p-value This implementation has been validated against the original MAS5.0 implementation with the following results (for exact.pvals and cont.correct set to F): Average Relative Change from MAS5.0 p-values:38\% Proportion of calls different to MAS5.0 calls:1.0\% where "average/proportion" means over all probe-sets and arrays, where the data came from 11 bacterial control probe-sets spiked-in over a range of concentrations (from 0 to 150 pico-mols) over 26 arrays. These are the spike-in data from the GeneLogic Concentration Series Spikein Dataset. Clearly the p-values computed here differ from those computed by MAS5.0 -- this will be improved in subsequent releases of the affy package. However the p-value discrepancies are small enough to result in the call being very closely aligned with those of MAS5.0 (99 percent were identical on the validation set) -- so this implementation will still be of use. The function \code{mas5.detect} is no longer the engine function for the others. C code is no available that computes the Wilcox test faster. The function is kept so that people can look at the R code (instead of C). } \value{ \code{mas5.detect} returns a list containing the following components: \item{pval}{ a real p-value in [0,1] equal to the probability of observing probe-level intensities that are more present looking than data assuming the data represents an absent transcript; that is a transcript is more likely to be present for p-values closer 0.} \item{call}{either "P", "M" or "A" representing a call of present, marginal or absent; computed by simply thresholding pval using alpha1 and alpha2.} The \code{mas5calls} method for \code{AffyBatch} returns an \code{ExpressionSet} with calls accessible with \code{exprs(obj)} and p-values available with \code{assayData(obj)[["se.exprs"]]}. The code \code{mas5calls} for \code{ProbeSet} returns a list with vectors of calls and p-values. } \references{ Liu, W. M. and Mei, R. and Di, X. and Ryder, T. B. and Hubbell, E. and Dee, S. and Webster, T. A. and Harrington, C. A. and Ho, M. H. and Baid, J. and Smeekens, S. P. (2002) Analysis of high density expression microarrays with signed-rank call algorithms, Bioinformatics, 18(12), pp. 1593--1599. Liu, W. and Mei, R. and Bartell, D. M. and Di, X. and Webster, T. A. and Ryder, T. (2001) Rank-based algorithms for analysis of microarrays, Proceedings of SPIE, Microarrays: Optical Technologies and Informatics, 4266. Affymetrix (2002) Statistical Algorithms Description Document, Affymetrix Inc., Santa Clara, CA, whitepaper. \url{http://www.affymetrix.com/support/technical/whitepapers/sadd_whitepaper.pdf}, \url{http://www.affymetrix.com/support/technical/whitepapers/sadd_whitepaper.pdf} } \author{Crispin Miller, Benjamin I. P. Rubinstein, Rafael A. Irizarry} \examples{ if (require(affydata)) { data(Dilution) PACalls <- mas5calls(Dilution) } } \keyword{manip} affy/man/merge.AffyBatch.Rd0000644000175200017520000000137714710217042016516 0ustar00biocbuildbiocbuild\name{merge.AffyBatch} \alias{merge.AffyBatch} \title{merge two AffyBatch objects} \description{ merge two AffyBatch objects into one. } \usage{ \method{merge}{AffyBatch}(x, y, annotation = paste(annotation(x), annotation(y)), description = NULL, notes = character(0), ...) } \arguments{ \item{x}{an \code{AffyBatch} object.} \item{y}{an \code{AffyBatch} object.} \item{annotation}{a \code{character} vector.} \item{description}{a \code{characterORmiame}, eventually \code{NULL}.} \item{notes}{a \code{character} vector.} \item{\dots}{additional arguments.} } \details{ To be done. } \value{ A object if class \code{\link[affy:AffyBatch-class]{AffyBatch}}. } \seealso{\code{\link{AffyBatch-class}}} \keyword{manip} affy/man/mva.pairs.Rd0000644000175200017520000000223214710217042015460 0ustar00biocbuildbiocbuild\name{mva.pairs} \alias{mva.pairs} \title{M vs. A Matrix} \description{ A matrix of M vs. A plots is produced. Plots are made on the upper triangle and the IQR of the Ms are displayed in the lower triangle } \usage{ mva.pairs(x, labels=colnames(x), log.it=TRUE,span=2/3,family.loess="gaussian", digits=3,line.col=2,main="MVA plot",cex=2,...) } \arguments{ \item{x}{a matrix containing the chip data in the columns.} \item{labels}{the names of the variables.} \item{log.it}{logical. If \code{TRUE}, uses log scale.} \item{span}{span to be used for loess fit.} \item{family.loess}{\code{"gaussian"} or \code{"symmetric"} as in \code{\link[stats]{loess}}.} \item{digits}{number of digits to use in the display of IQR.} \item{line.col}{color of the loess line.} \item{main}{an overall title for the plot.} \item{cex}{size for text.} \item{\dots}{graphical parameters can be given as arguments to \code{mva.plot}}.} \examples{ x <- matrix(rnorm(4000),1000,4) x[,1] <- x[,1]^2 dimnames(x) <- list(NULL,c("chip 1","chip 2","chip 3","chip 4")) mva.pairs(x,log=FALSE,main="example") } \seealso{\code{\link{pairs}}} \keyword{hplot} affy/man/normalize-methods.Rd0000644000175200017520000000506014710217042017223 0ustar00biocbuildbiocbuild\name{normalize-methods} \title{Normalize Affymetrix Probe Level Data - methods} \docType{methods} \alias{normalize.AffyBatch} \alias{normalize.methods} \alias{normalize.AffyBatch.methods} \alias{upDate.normalize.AffyBatch.methods} \alias{normalize,AffyBatch-method} \alias{normalize.methods,AffyBatch-method} \alias{normalize.AffyBatch.methods} \alias{bgcorrect.methods} \alias{upDate.bgcorrect.methods} \alias{pmcorrect.methods} \alias{upDate.pmcorrect.methods} \description{ Method for normalizing Affymetrix Probe Level Data } \usage{ normalize.methods(object) bgcorrect.methods() upDate.bgcorrect.methods(x) pmcorrect.methods() upDate.pmcorrect.methods(x) } \arguments{ \item{object}{An \code{\link[affy:AffyBatch-class]{AffyBatch}}.} \item{x}{A character vector that will replace the existing one.} } \details{ If \code{object} is an \code{\link[affy:AffyBatch-class]{AffyBatch}} object, then \code{normalize(object)} returns an \code{\link[affy:AffyBatch-class]{AffyBatch}} object with the intensities normalized using the methodology specified by \code{getOption("BioC")$affy$normalize.method}. The affy package default is \code{quantiles}. Other methodologies can be used by specifying them with the \code{method} argument. For example to use the invariant set methodology described by Li and Wong (2001) one would type: \code{normalize(object, method="invariantset")}. Further arguments passed by \code{...}, apart from \code{method}, are passed along to the function responsible for the methodology defined by the \code{method} argument. A character vector of \emph{nicknames} for the methodologies available is returned by \code{normalize.methods(object))}, where \code{object} is an \code{\link[affy:AffyBatch-class]{AffyBatch}}, or simply by typing \code{normalize.AffyBatch.methods}. If the nickname of a method is called "loess", the help page for that specific methodology can be accessed by typing \code{?normalize.loess}. For more on the normalization methodologies currently implemented please refer to the vignette `Custom Processing Methods'. To add your own normalization procedures please refer to the customMethods vignette. The functions: \code{bgcorrect.methods}, \code{pmcorrect.methods}, provide access to internal vectors listing the corresponding capabilities. } \seealso{ \code{\link{AffyBatch-class}}, \code{\link{normalize}}. } \examples{ if (require(affydata)) { data(Dilution) normalize.methods(Dilution) generateExprSet.methods() bgcorrect.methods() pmcorrect.methods() } } \keyword{manip} affy/man/normalize.constant.Rd0000644000175200017520000000216414710217042017414 0ustar00biocbuildbiocbuild\name{normalize.constant} \alias{normalize.constant} \alias{normalize.AffyBatch.constant} \title{Scale probe intensities} \description{ Scale array intensities in a \code{\link[affy:AffyBatch-class]{AffyBatch}}. } \usage{ normalize.AffyBatch.constant(abatch, refindex=1, FUN=mean, na.rm=TRUE) normalize.constant(x, refconstant, FUN=mean, na.rm=TRUE) } \arguments{ \item{abatch}{ an instance of the \code{\link{AffyBatch-class}}.} \item{x}{a vector of intensities on a chip (to normalize to the reference).} \item{refindex}{the index of the array used as a reference.} \item{refconstant}{the constant used as a reference.} \item{FUN}{a function generating a value from the intensities on an array. Typically \code{mean} or \code{median}.} \item{na.rm}{parameter passed to the function FUN.} } \value{ %A \code{\link[Biobase]{container-class}} of normalized objects. An \code{\link[affy:AffyBatch-class]{AffyBatch}} with an attribute "constant" holding the value of the factor used for scaling. } \author{ L. Gautier } \seealso{ \code{\link[affy:AffyBatch-class]{AffyBatch}} } \keyword{manip} affy/man/normalize.contrast.Rd0000644000175200017520000000217714710217042017424 0ustar00biocbuildbiocbuild\name{normalize.contrasts} \alias{normalize.contrasts} \alias{normalize.AffyBatch.contrasts} \title{Normalize intensities using the contrasts method} \description{ Scale chip objects in an \code{\link{AffyBatch-class}}. } \usage{ %normalize.contrast() ## currently maffy.normalize normalize.AffyBatch.contrasts(abatch,span=2/3, choose.subset=TRUE, subset.size=5000, verbose=TRUE, family="symmetric", type=c("together","pmonly","mmonly","separate")) } \arguments{ \item{abatch}{an \code{\link{AffyBatch-class}} object.} \item{span}{parameter to be passed to the function \code{\link[stats]{loess}}.} \item{choose.subset}{Boolean. Defaults to \code{TRUE}} \item{subset.size}{Integer. Number of probesets to use in each subset.} \item{verbose}{verbosity flag.} \item{family}{parameter to be passed to the function \code{\link[stats]{loess}}.} \item{type}{a string specifying how the normalization should be applied.} } \value{ An object of the same class as the one passed. } \seealso{ \code{\link{maffy.normalize}} } \keyword{manip} affy/man/normalize.invariantset.Rd0000644000175200017520000000435014710217042020271 0ustar00biocbuildbiocbuild\name{normalize.invariantset} \alias{normalize.invariantset} \alias{normalize.AffyBatch.invariantset} \title{Invariant Set normalization} \description{ Normalize arrays in an \code{\link[affy:AffyBatch-class]{AffyBatch}} using an invariant set. } \usage{ normalize.AffyBatch.invariantset(abatch, prd.td = c(0.003, 0.007), verbose = FALSE, baseline.type = c("mean","median","pseudo-mean","pseudo-median"), type = c("separate","pmonly","mmonly","together")) normalize.invariantset(data, ref, prd.td=c(0.003,0.007)) } \arguments{ \item{abatch}{an \code{\link[affy:AffyBatch-class]{AffyBatch}} object.} \item{data}{a vector of intensities on a chip (to normalize to the reference).} \item{ref}{a vector of reference intensities.} \item{prd.td}{cutoff parameter (details in the bibliographic reference).} \item{baseline.type}{specifies how to determine the baseline array.} \item{type}{a string specifying how the normalization should be applied. See details for more.} \item{verbose}{logical indicating printing throughout the normalization.} } \value{ Respectively a \code{\link[affy:AffyBatch-class]{AffyBatch}} of normalized objects, or a vector of normalized intensities, with an attribute "invariant.set" holding the indexes of the 'invariant' intensities. } \details{ The set of invariant intensities between \code{data} and \code{ref} is found through an iterative process (based on the respective ranks the intensities). This set of intensities is used to generate a normalization curve by smoothing. The \code{type} argument should be one of \code{"separate","pmonly","mmonly","together"} which indicates whether to normalize only one probe type (PM,MM) or both together or separately. } \author{ L. Gautier (Thanks to Cheng Li for the discussions about the algorithm.) } \references{ Cheng Li and Wing Hung Wong, Model-based analysis of oligonucleotides arrays: model validation, design issues and standard error application. Genome Biology 2001, 2(8):research0032.1-0032.11 } \seealso{ \code{\link{normalize}} to normalize \code{\link[affy:AffyBatch-class]{AffyBatch}} objects. } \keyword{manip} affy/man/normalize.loess.Rd0000644000175200017520000000356014710217042016711 0ustar00biocbuildbiocbuild\name{normalize.loess} \alias{normalize.loess} \alias{normalize.AffyBatch.loess} \title{Scale microarray data} \description{Normalizes arrays using loess.} \usage{ normalize.loess(mat, subset = sample(1:(dim(mat)[1]), min(c(5000, nrow(mat)))), epsilon = 10^-2, maxit = 1, log.it = TRUE, verbose = TRUE, span = 2/3, family.loess = "symmetric") normalize.AffyBatch.loess(abatch,type=c("together","pmonly","mmonly","separate"), ...) } \arguments{ \item{mat}{a matrix with columns containing the values of the chips to normalize.} \item{abatch}{an \code{\link[affy:AffyBatch-class]{AffyBatch}} object.} \item{subset}{a subset of the data to fit a loess to.} \item{epsilon}{a tolerance value (supposed to be a small value - used as a stopping criterion).} \item{maxit}{maximum number of iterations.} \item{log.it}{logical. If \code{TRUE} it takes the log2 of \code{mat}} \item{verbose}{logical. If \code{TRUE} displays current pair of chip being worked on.} \item{span}{parameter to be passed the function \code{\link[stats]{loess}}} \item{family.loess}{parameter to be passed the function \code{\link[stats]{loess}}. \code{"gaussian"} or \code{"symmetric"} are acceptable values for this parameter.} \item{type}{A string specifying how the normalization should be applied. See details for more.} \item{\dots}{any of the options of normalize.loess you would like to modify (described above).} } \details{ The type argument should be one of \code{"separate","pmonly","mmonly","together"} which indicates whether to normalize only one probe type (PM,MM) or both together or separately. } \seealso{ \code{\link{normalize}} } \examples{ if (require(affydata)) { #data(Dilution) #x <- pm(Dilution[,1:3]) #mva.pairs(x) #x <- normalize.loess(x,subset=1:nrow(x)) #mva.pairs(x) } } \keyword{smooth} affy/man/normalize.qspline.Rd0000644000175200017520000000716514710217042017244 0ustar00biocbuildbiocbuild\name{normalize.qspline} \alias{qspline-normalize} \alias{normalize.qspline} \alias{normalize.AffyBatch.qspline} \title{Normalize arrays} \description{ normalizes arrays in an AffyBatch each other or to a set of target intensities } \usage{ normalize.AffyBatch.qspline(abatch,type=c("together", "pmonly", "mmonly", "separate"), ...) normalize.qspline(x, target = NULL, samples = NULL, fit.iters = 5, min.offset = 5, spline.method = "natural", smooth = TRUE, spar = 0, p.min = 0, p.max = 1.0, incl.ends = TRUE, converge = FALSE, verbose = TRUE, na.rm = FALSE) } \arguments{ \item{x}{a \code{data.matrix} of intensities} \item{abatch}{an \code{AffyBatch}} \item{target}{numerical vector of intensity values to normalize to. (could be the name for one of the celfiles in 'abatch').} \item{samples}{numerical, the number of quantiles to be used for spline. if (0,1], then it is a sampling rate.} \item{fit.iters}{number of spline interpolations to average.} \item{min.offset}{minimum span between quantiles (rank difference) for the different fit iterations.} \item{spline.method}{specifies the type of spline to be used. Possible values are `"fmm"', `"natural"', and `"periodic"'.} \item{smooth}{logical, if `TRUE', smoothing splines are used on the quantiles.} \item{spar}{smoothing parameter for `splinefun', typically in (0,1].} \item{p.min}{minimum percentile for the first quantile.} \item{p.max}{maximum percentile for the last quantile.} \item{incl.ends}{include the minimum and maximum values from the normalized and target arrays in the fit.} \item{converge}{(currently unimplemented)} \item{verbose}{logical, if `TRUE' then normalization progress is reported.} \item{na.rm}{logical, if `TRUE' then handle NA values (by ignoring them).} \item{type}{a string specifying how the normalization should be applied. See details for more.} \item{\dots}{optional parameters to be passed through.} } \value{ a normalized \code{AffyBatch}. } \details{ This normalization method uses the quantiles from each array and the target to fit a system of cubic splines to normalize the data. The target should be the mean (geometric) or median of each probe but could also be the name of a particular chip in the \code{abatch} object. Parameters setting can be of much importance when using this method. The parameter \code{fit.iter} is used as a starting point to find a more appropriate value. Unfortunately the algorithm used do not converge in some cases. If this happens, the \code{fit.iter} value is used and a warning is thrown. Use of different settings for the parameter \code{samples} was reported to give good results. More specifically, for about 200 data points use \code{samples = 0.33}, for about 2000 data points use \code{samples = 0.05}, for about 10000 data points use \code{samples = 0.02} (thanks to Paul Boutros). The \code{type} argument should be one of \code{"separate","pmonly","mmonly","together"} which indicates whether to normalize only one probe type (PM,MM) or both together or separately. } \author{ Laurent and Workman C. } \references{ Christopher Workman, Lars Juhl Jensen, Hanne Jarmer, Randy Berka, Laurent Gautier, Henrik Bjorn Nielsen, Hans-Henrik Saxild, Claus Nielsen, Soren Brunak, and Steen Knudsen. A new non-linear normal- ization method for reducing variability in dna microarray experiments. Genome Biology, accepted, 2002 } \keyword{manip} affy/man/normalize.quantiles.Rd0000644000175200017520000000313414710217042017566 0ustar00biocbuildbiocbuild\name{normalize.quantiles} \alias{normalize.AffyBatch.quantiles} \title{Quantile Normalization} \description{ Using a normalization based upon quantiles, this function normalizes a matrix of probe level intensities. } \usage{ normalize.AffyBatch.quantiles(abatch, type=c("separate","pmonly","mmonly","together")) } \arguments{ \item{abatch}{an \code{\link[affy:AffyBatch-class]{AffyBatch}} object.} \item{type}{A string specifying how the normalization should be applied. See details for more.} } \details{This method is based upon the concept of a quantile-quantile plot extended to n dimensions. No special allowances are made for outliers. If you make use of quantile normalization either through \code{\link{rma}} or \code{\link{expresso}} please cite Bolstad et al, Bioinformatics (2003). The type argument should be one of \code{"separate","pmonly","mmonly","together"} which indicates whether to normalize only one probe type (PM,MM) or both together or separately. } \value{ A normalized \code{AffyBatch}. } \references{ Bolstad, B (2001) \emph{Probe Level Quantile Normalization of High Density Oligonucleotide Array Data}. Unpublished manuscript \url{http://bmbolstad.com/stuff/qnorm.pdf} Bolstad, B. M., Irizarry R. A., Astrand, M, and Speed, T. P. (2003) \emph{A Comparison of Normalization Methods for High Density Oligonucleotide Array Data Based on Bias and Variance.} Bioinformatics 19(2) ,pp 185-193. \url{http://bmbolstad.com/misc/normalize/normalize.html} } \author{Ben Bolstad, \email{bmb@bmbolstad.com}} \seealso{\code{\link{normalize}}} \keyword{manip} affy/man/normalize.quantiles.robust.Rd0000644000175200017520000000462014710217042021104 0ustar00biocbuildbiocbuild\name{normalize.quantiles.robust} \alias{normalize.AffyBatch.quantiles.robust} \title{Robust Quantile Normalization} \description{Using a normalization based upon quantiles, this function normalizes a matrix of probe level intensities. Allows weighting of chips} \usage{ normalize.AffyBatch.quantiles.robust(abatch, type = c("separate","pmonly","mmonly","together"), weights = NULL, remove.extreme = c("variance","mean","both","none"), n.remove = 1, use.median = FALSE, use.log2 = FALSE) } \arguments{ \item{abatch}{an \code{\link[affy:AffyBatch-class]{AffyBatch}} object.} \item{type}{a string specifying how the normalization should be applied. See details for more.} \item{weights}{a vector of weights, one for each chip.} \item{remove.extreme}{if weights is NULL, then this will be used for determining which chips to remove from the calculation of the normalization distribution. See details for more info.} \item{n.remove}{number of chips to remove.} \item{use.median}{if TRUE, the use the median to compute normalization chip; otherwise uses a weighted mean.} \item{use.log2}{work on log2 scale. This means we will be using the geometric mean rather than ordinary mean.} } \details{This method is based upon the concept of a quantile-quantile plot extended to n dimensions. Note that the matrix is of intensities not log intensities. The function performs better with raw intensities. Choosing \bold{variance} will remove chips with variances much higher or lower than the other chips, \bold{mean} removes chips with the mean most different from all the other means, \bold{both} removes first extreme variance and then an extreme mean. The option \bold{none} does not remove any chips, but will assign equal weights to all chips. The type argument should be one of \code{"separate","pmonly","mmonly","together"} which indicates whether to normalize only one probe type (PM,MM) or both together or separately. } \note{This function is still experimental.} \value{a matrix of normalized intensities} \author{Ben Bolstad, \email{bmb@bmbolstad.com}} \seealso{\code{\link{normalize}}, \code{\link[preprocessCore:normalize.quantiles]{normalize.quantiles}}} \keyword{manip} affy/man/pairs.AffyBatch.Rd0000644000175200017520000000332514710217042016530 0ustar00biocbuildbiocbuild\name{pairs.AffyBatch} \alias{pairs.AffyBatch} \title{plot intensities using 'pairs'} \description{ Plot intensities using the function 'pairs' } \usage{ \method{pairs}{AffyBatch}(x, panel=points, ..., transfo=I, main=NULL, oma=NULL, font.main = par("font.main"), cex.main = par("cex.main"), cex.labels = NULL, lower.panel=panel, upper.panel=NULL, diag.panel=NULL, font.labels = 1, row1attop = TRUE, gap = 1) } \arguments{ \item{x}{an \code{\link[affy:AffyBatch-class]{AffyBatch}} object.} \item{panel}{a function to produce a plot (see \code{\link{pairs}}).} \item{\dots}{extra parameters for the 'panel' function.} \item{transfo}{a function to transform the intensity values before generating the plot. 'log' and 'log2' are popular choices.} \item{main}{title for the plot} \item{oma}{see 'oma' in \code{\link{par}}.} \item{font.main}{see \code{\link{pairs}}.} \item{cex.main}{see \code{\link{pairs}}.} \item{cex.labels}{see \code{\link{pairs}}.} \item{lower.panel}{a function to produce the plots in the lower triangle (see \code{\link{pairs}}).} \item{upper.panel}{a function to produce the plots in the upper triangle (see \code{\link{pairs}}).} \item{diag.panel}{a function to produce the plots in the diagonal (see \code{\link{pairs}}).} \item{font.labels}{see \code{\link{pairs}}.} \item{row1attop}{see \code{\link{pairs}}.} \item{gap}{see \code{\link{pairs}}.} } \details{ Plots with several chips can represent zillions of points. They require a lot of memory and can be very slow to be displayed. You may want to try to split of the plots, or to plot them in a device like 'png' or 'jpeg'. } \keyword{hplot} affy/man/plot.ProbeSet.Rd0000644000175200017520000000121514710217042016260 0ustar00biocbuildbiocbuild\name{plot.ProbeSet} \alias{plot.ProbeSet} \title{plot a probe set} \description{ Plot intensities by probe set. } \usage{ \method{plot}{ProbeSet}(x, which=c("pm", "mm"), xlab = "probes", type = "l", ylim = NULL, ...) } \arguments{ \item{x}{a \code{ProbeSet} object.} \item{which}{get the PM or the MM.} \item{xlab}{x-axis label.} \item{type}{plot type.} \item{ylim}{range of the y-axis.} \item{\dots}{optional arguments to be passed to \code{matplot}.} } \value{ This function is only used for its (graphical) side-effect. } \seealso{\code{\link[affy:ProbeSet-class]{ProbeSet}}} \examples{ data(SpikeIn) plot(SpikeIn) } \keyword{hplot} affy/man/plot.density.Rd0000644000175200017520000000344014710217042016216 0ustar00biocbuildbiocbuild%\name{matdensity} \name{plotDensity} %\alias{matdensity} \alias{plotDensity} \alias{plotDensity.AffyBatch} \title{Plot Densities} \description{ Plots the non-parametric density estimates using values contained in the columns of a matrix. } \usage{ %matdensity(mat, ylab = "density", xlab="x", type="l", ...) plotDensity(mat, ylab = "density", xlab="x", type="l", col=1:6, na.rm = TRUE, ...) plotDensity.AffyBatch(x, col = 1:6, log = TRUE, which=c("pm","mm","both"), ylab = "density", xlab = NULL, ...) } \arguments{ \item{mat}{a matrix containing the values to make densities in the columns.} \item{x}{an object of class \code{\link[affy:AffyBatch-class]{AffyBatch}}.} \item{log}{logical value. If \code{TRUE} the log of the intensities in the \code{AffyBatch} are plotted.} \item{which}{should a histogram of the PMs, MMs, or both be made?} \item{col}{the colors to use for the different arrays.} \item{ylab}{a title for the y axis.} \item{xlab}{a title for the x axis.} \item{type}{type for the plot.} \item{na.rm}{handling of \code{NA} values.} \item{\dots}{graphical parameters can be given as arguments to \code{\link{plot}}.} } \details{ The list returned can be convenient for plotting large input matrices with different colors/line types schemes (the computation of the densities can take some time). To match other functions in base R, this function should probably be called \code{matdensity}, as it is sharing similarities with \code{matplot} and \code{matlines}. } \value{ It returns invisibly a list of two matrices `x' and `y'. } \author{Ben Bolstad and Laurent Gautier} \examples{ if (require(affydata)) { data(Dilution) plotDensity(exprs(Dilution), log="x") } } \keyword{hplot} affy/man/plotLocation.Rd0000644000175200017520000000233314710217042016231 0ustar00biocbuildbiocbuild\name{plotLocation} \alias{plotLocation} \title{Plot a location on a cel image} \description{ Plots a location on a previously plotted cel image. This can be used to locate the physical location of probes on the array. } \usage{ plotLocation(x, col="green", pch=22, ...) } \arguments{ \item{x}{a `location'. It can be obtained by the method of \code{AffyBatch} \code{indexProbes}, or made elsewhere (basically a location is nrows and two columns array. The first column corresponds to the x positions and the second columns corresponds to the y positions of n elements to locate).} \item{col}{colors for the plot.} \item{pch}{plotting type (see function \code{plot}).} \item{\dots}{other parameters passed to the function \code{points}.} } \author{ Laurent } \seealso{ \code{\link[affy:AffyBatch-class]{AffyBatch}} } \examples{ if (require(affydata)) { data(Dilution) ## image of the celfile image(Dilution[, 1]) ## genenames, arbitrarily pick the 101th n <- geneNames(Dilution)[101] ## get the location for the gene n l <- indexProbes(Dilution, "both", n)[[1]] ## convert the index to X/Y coordinates xy <- indices2xy(l, abatch=Dilution) ## plot plotLocation(xy) } } \keyword{aplot} affy/man/pmcorrect.Rd0000644000175200017520000000271614710217042015565 0ustar00biocbuildbiocbuild\name{pmcorrect} \alias{pmcorrect} \alias{pmcorrect.pmonly} %took out .pmonly casue rma is pm-only \alias{pmcorrect.mas} \alias{pmcorrect.subtractmm} \title{PM Correction} \description{ Corrects the PM intensities in a \code{\link[affy:ProbeSet-class]{ProbeSet}} for non-specific binding. } \usage{ pmcorrect.pmonly(object) pmcorrect.subtractmm(object) pmcorrect.mas(object, contrast.tau=0.03, scale.tau=10, delta=2^(-20)) } \arguments{ \item{object}{An object of class \code{\link[affy:ProbeSet-class]{ProbeSet}}.} \item{contrast.tau}{a number denoting the contrast tau parameter in the MAS 5.0 pm correction algorithm.} \item{scale.tau}{a number denoting the scale tau parameter in the MAS 5.0 pm correction algorithm.} \item{delta}{a number denoting the delta parameter in the MAS 5.0 pm correction algorithm.} } \details{ These are the pm correction methods perfromed by Affymetrix MAS 4.0 (subtractmm) and MAS 5.0 (mas). See the Affymetrix Manual for details. pmonly does what you think: does not change the PM values.} \value{A \code{\link[affy:ProbeSet-class]{ProbeSet}} for which the \code{pm} slot contains the corrected PM values.} \references{Affymetrix MAS 4.0 and 5.0 manual} \examples{ if (require(affydata)) { data(Dilution) gn <- geneNames(Dilution) pps <- probeset(Dilution, gn[1])[[1]] pps.pmonly <- pmcorrect.pmonly(pps) pps.subtractmm <- pmcorrect.subtractmm(pps) pps.mas5 <- pmcorrect.mas(pps) } } \keyword{manip} affy/man/ppsetApply.Rd0000644000175200017520000000303414710217042015722 0ustar00biocbuildbiocbuild\name{ppsetApply} \alias{ppsetApply} \alias{ppset.ttest} \title{ Apply a function over the ProbeSets in an AffyBatch } \description{ Apply a function over the ProbeSets in an AffyBatch } \usage{ ppsetApply(abatch, FUN, genenames = NULL, ...) ppset.ttest(ppset, covariate, pmcorrect.fun = pmcorrect.pmonly, ...) } \arguments{ \item{abatch}{an object inheriting from \code{AffyBatch}.} \item{ppset}{an object of class \code{ProbeSet}.} \item{covariate}{the name a covariate in the slot \code{phenoData}.} \item{pmcorrect.fun}{a function to correct PM intensities.} \item{FUN}{a function working on a \code{ProbeSet}.} \item{genenames}{a list of Affymetrix probesets ids to work with. All probe set ids used when \code{NULL}.} \item{\dots}{optional parameters to the function \code{FUN}.} } \value{ Returns a \code{list} of objects, or values, as returned by the function \code{FUN} for each \code{ProbeSet} it processes. } \author{Laurent Gautier } \seealso{\code{\link[affy]{ProbeSet-class}} } \examples{ ppset.ttest <- function(ppset, covariate, pmcorrect.fun = pmcorrect.pmonly, ...) { probes <- do.call("pmcorrect.fun", list(ppset)) my.ttest <- function(x) { y <- split(x, get(covariate)) t.test(y[[1]], y[[2]])$p.value } r <- apply(probes, 1, my.ttest) return(r) } ##this takes a long time - and rowttests is a good alternative ## eg: rt = rowttests(exprs(Dilution), Dilution$liver) \dontrun{ data(Dilution) all.ttest <- ppsetApply(Dilution, ppset.ttest, covariate="liver") } } \keyword{ manip } affy/man/probeMatch-methods.Rd0000644000175200017520000000106514710217042017310 0ustar00biocbuildbiocbuild\name{probeMatch-methods} \docType{methods} \title{Methods for accessing perfect matches and mismatches} \alias{probeMatch-methods} \alias{probeMatch} \alias{pm} \alias{pm<-} \alias{mm} \alias{mm<-} \description{Methods for perfect matches and mismatches probes} \section{Methods}{\describe{ \item{object = AffyBatch}{All the \emph{perfect match} (pm) or \emph{mismatch} (mm) probes on the arrays the object represents are returned.} \item{object = ProbeSet}{The \code{pm} or \code{mm} of the object are returned.} } } \keyword{methods} affy/man/probeNames-methods.Rd0000644000175200017520000000101514710217042017312 0ustar00biocbuildbiocbuild\name{probeNames-methods} \docType{methods} \title{Methods for accessing the Probe Names} \alias{probeNames-methods} \alias{probeNames} \alias{probeNames<-} %\alias{probeName} %\alias{probeName<-} \description{Methods for accessing Probe Names} \section{Methods}{\describe{ \item{object = Cdf}{an accessor function for the \code{name} slot.} \item{object = probeNames}{returns the probe names associated with the rownames of the intensity matrices one gets with the \code{pm} and \code{mm} methods.} }} \keyword{methods} affy/man/read.affybatch.Rd0000644000175200017520000001072714710217042016431 0ustar00biocbuildbiocbuild\name{read.affybatch} \alias{read.affybatch} \alias{AllButCelsForReadAffy} \alias{ReadAffy} \title{Read CEL files into an AffyBatch} \description{ Read CEL files into an Affybatch. } \usage{ read.affybatch(\dots, filenames = character(0), phenoData = new("AnnotatedDataFrame"), description = NULL, notes = "", compress = getOption("BioC")$affy$compress.cel, rm.mask = FALSE, rm.outliers = FALSE, rm.extra = FALSE, verbose = FALSE,sd=FALSE, cdfname = NULL) ReadAffy(\dots, filenames=character(0), widget=getOption("BioC")$affy$use.widgets, compress=getOption("BioC")$affy$compress.cel, celfile.path=NULL, sampleNames=NULL, phenoData=NULL, description=NULL, notes="", rm.mask=FALSE, rm.outliers=FALSE, rm.extra=FALSE, verbose=FALSE,sd=FALSE, cdfname = NULL) } \arguments{ \item{\dots}{file names separated by comma.} \item{filenames}{file names in a character vector.} \item{phenoData}{an \code{\link[Biobase:class.AnnotatedDataFrame]{AnnotatedDataFrame}} object, a \code{character} of length one, or a \code{data.frame}.} \item{description}{a \code{\link[Biobase:class.MIAME]{MIAME}} object.} \item{notes}{notes.} \item{compress}{are the CEL files compressed?} \item{rm.mask}{should the spots marked as 'MASKS' set to \code{NA}?} \item{rm.outliers}{should the spots marked as 'OUTLIERS' set to \code{NA}?} \item{rm.extra}{if \code{TRUE}, then overrides what is in \code{rm.mask} and \code{rm.oultiers}.} \item{verbose}{verbosity flag.} \item{widget}{a logical specifying if widgets should be used.} \item{celfile.path}{a character denoting the path \code{ReadAffy} should look for cel files.} \item{sampleNames}{a character vector of sample names to be used in the \code{AffyBatch}.} \item{sd}{should the standard deviation values in the CEL file be read in? Since these are typically not used default is not to read them in. This also save lots of memory.} \item{cdfname}{used to specify the name of an alternative cdf package. If set to \code{NULL}, then the usual cdf package based on Affymetrix's mappings will be used.} } \details{ \code{ReadAffy} is a wrapper for \code{read.affybatch} that permits the user to read in phenoData, MIAME information, and CEL files using widgets. One can also define files where to read phenoData and MIAME information. If the function is called with no arguments \code{ReadAffy()} all the CEL files in the working directory are read and put into an \code{AffyBatch}. However, the arguments give the user great flexibility. If \code{phenoData} is a character vector of length 1, the function \code{\link[Biobase]{read.AnnotatedDataFrame}} is called to read a file of that name and produce the \code{AnnotationDataFrame} object with the sample metadata. If \code{phenoData} is a \code{data.frame}, it is converted to an \code{AnnotatedDataFrame}. If it is \code{NULL} and \code{widget=FALSE} (\code{widget=TRUE} is not currently supported), then a default object of class \code{\link[Biobase:class.AnnotatedDataFrame]{AnnotatedDataFrame}} is created, whose \code{pData} is a data.frame with rownames being the names of the CEL files, and with one column \code{sample} with an integer index. \code{AllButCelsForReadAffy} is an internal function that gets called by \code{ReadAffy}. It gets all the information except the cel intensities. \code{description} is read using \code{\link[Biobase]{read.MIAME}}. If a character is given, then it tries to read the file with that name to obtain a \code{MIAME} instance. If left \code{NULL} but \code{widget=TRUE}, then widgets are used. If left \code{NULL} and \code{widget=FALSE}, then an empty instance of \code{MIAME} is created. } \value{ An \code{AffyBatch} object. } \author{Ben Bolstad \email{bmb@bmbolstad.com} (read.affybatch), Laurent Gautier, and Rafael A. Irizarry (ReadAffy)} \seealso{\code{\link[affy:AffyBatch-class]{AffyBatch}}} \examples{ if(require(affydata)){ celpath <- system.file("celfiles", package="affydata") fns <- list.celfiles(path=celpath,full.names=TRUE) cat("Reading files:\n",paste(fns,collapse="\n"),"\n") ##read a binary celfile abatch <- ReadAffy(filenames=fns[1]) ##read a text celfile abatch <- ReadAffy(filenames=fns[2]) ##read all files in that dir abatch <- ReadAffy(celfile.path=celpath) } } \keyword{manip} affy/man/read.probematrix.Rd0000644000175200017520000000326114710217042017031 0ustar00biocbuildbiocbuild\name{read.probematrix} \alias{read.probematrix} \title{Read CEL file data into PM or MM matrices} \description{ Read CEL data into matrices. } \usage{ read.probematrix(..., filenames = character(0), phenoData = new("AnnotatedDataFrame"), description = NULL, notes = "", compress = getOption("BioC")$affy$compress.cel, rm.mask = FALSE, rm.outliers = FALSE, rm.extra = FALSE, verbose = FALSE, which = "pm", cdfname = NULL) } \arguments{ \item{\dots}{file names separated by comma.} \item{filenames}{file names in a character vector.} \item{phenoData}{a \code{\link[Biobase:class.AnnotatedDataFrame]{AnnotatedDataFrame}} object.} \item{description}{a \code{\link[Biobase:class.MIAME]{MIAME}} object.} \item{notes}{notes.} \item{compress}{are the CEL files compressed?} \item{rm.mask}{should the spots marked as 'MASKS' set to \code{NA}?} \item{rm.outliers}{should the spots marked as 'OUTLIERS' set to \code{NA}?} \item{rm.extra}{if \code{TRUE}, overrides what is in \code{rm.mask} and \code{rm.oultiers}.} \item{verbose}{verbosity flag.} \item{which}{should be either "pm", "mm" or "both".} \item{cdfname}{Used to specify the name of an alternative cdf package. If set to \code{NULL}, the usual cdf package based on Affymetrix's mappings will be used.} } \value{ A list of one or two matrices. Each matrix is either PM or MM data. No \code{\link[affy:AffyBatch-class]{AffyBatch}} is created. } \author{Ben Bolstad \email{bmb@bmbolstad.com}} \seealso{\code{\link[affy:AffyBatch-class]{AffyBatch}}, \code{\link[affy:read.affybatch]{read.affybatch}}} \keyword{manip} affy/man/rma.Rd0000644000175200017520000000550014710217042014340 0ustar00biocbuildbiocbuild\name{rma} \alias{rma} \title{Robust Multi-Array Average expression measure} \description{ This function converts an \code{\link[affy:AffyBatch-class]{AffyBatch}} object into an \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} object using the robust multi-array average (RMA) expression measure. } \usage{ rma(object, subset=NULL, verbose=TRUE, destructive=TRUE, normalize=TRUE, background=TRUE, bgversion=2, ...) } \arguments{ \item{object}{an \code{\link[affy:AffyBatch-class]{AffyBatch}} object.} \item{subset}{a character vector with the the names of the probesets to be used in expression calculation.} \item{verbose}{logical value. If \code{TRUE}, it writes out some messages indicating progress. If \code{FALSE} nothing should be printed.} \item{destructive}{logical value. If \code{TRUE}, works on the PM matrix in place as much as possible, good for large datasets.} \item{normalize}{logical value. If \code{TRUE}, normalize data using quantile normalization.} \item{background}{logical value. If \code{TRUE}, background correct using RMA background correction.} \item{bgversion}{integer value indicating which RMA background to use 1: use background similar to pure R rma background given in affy version 1.0 - 1.0.2 2: use background similar to pure R rma background given in affy version 1.1 and above} \item{\dots}{further arguments to be passed (not currently implemented - stub for future use).} } \details{ This function computes the RMA (Robust Multichip Average) expression measure described in Irizarry et al Biostatistics (2003). Note that this expression measure is given to you in log base 2 scale. This differs from most of the other expression measure methods. Please note that the default background adjustment method was changed during the lead up to the Bioconductor 1.2 release. This means that this function and \code{\link{expresso}} should give results that directly agree. } \value{ An \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} } \author{Ben Bolstad \email{bmb@bmbolstad.com}} \references{ Rafael. A. Irizarry, Benjamin M. Bolstad, Francois Collin, Leslie M. Cope, Bridget Hobbs and Terence P. Speed (2003), Summaries of Affymetrix GeneChip probe level data Nucleic Acids Research 31(4):e15 Bolstad, B.M., Irizarry R. A., Astrand M., and Speed, T.P. (2003), A Comparison of Normalization Methods for High Density Oligonucleotide Array Data Based on Bias and Variance. Bioinformatics 19(2):185-193 Irizarry, RA, Hobbs, B, Collin, F, Beazer-Barclay, YD, Antonellis, KJ, Scherf, U, Speed, TP (2003) Exploration, Normalization, and Summaries of High Density Oligonucleotide Array Probe Level Data. Biostatistics .Vol. 4, Number 2: 249-264 } \seealso{\code{\link{expresso}}} \examples{ if (require(affydata)) { data(Dilution) eset <- rma(Dilution) } } \keyword{manip} affy/man/setAffyOptions.Rd0000644000175200017520000000113614710217042016537 0ustar00biocbuildbiocbuild\name{.setAffyOptions} \alias{.setAffyOptions} \title{ ~~function to set options ~~ } \description{ ~~ Set the options for the package } \usage{ .setAffyOptions(affy.opt = NA) } \arguments{ \item{affy.opt}{ A list structure of options. If \code{NA}, the default options are set.} } \details{ See the vignettes to know more. This function could disappear in favor of a more general one the package Biobase. } \value{ The function is used for its side effect. Nothing is returned. } \author{ Laurent } \examples{ affy.opt <- getOption("BioC")$affy .setAffyOptions(affy.opt) } \keyword{manip} affy/man/summary.Rd0000644000175200017520000000061214710217042015255 0ustar00biocbuildbiocbuild\name{summary} \alias{summary} \alias{medianpolish} \alias{tukeybiweight} \alias{avdiff} \title{Probe Set Summarizing Functions} \description{ These were used with the function \code{express}, which is no longer part of the package. Some are still used by the generateExprVal functions, but you should avoid using them directly. } \seealso{\code{\link[affy]{expresso}}} \keyword{manip} affy/man/tukey.biweight.Rd0000644000175200017520000000122014710217042016516 0ustar00biocbuildbiocbuild\name{tukey.biweight} \alias{tukey.biweight} \title{One-step Tukey's biweight} \description{ One-step Tukey's biweight on a matrix. } \usage{ tukey.biweight(x, c = 5, epsilon = 1e-04) } \arguments{ \item{x}{a matrix.} \item{c}{tuning constant (see details).} \item{epsilon}{fuzzy value to avoid division by zero (see details).} } \details{ The details can be found in the given reference. } \value{ a vector of values (one value per column in the input matrix). } \references{Statistical Algorithms Description Document, 2002, Affymetrix.} \seealso{ \code{\link{pmcorrect.mas}} and \code{\link{generateExprVal.method.mas}} } \keyword{manip} affy/man/whatcdf.Rd0000644000175200017520000000113414710217042015200 0ustar00biocbuildbiocbuild\name{whatcdf} \alias{whatcdf} \title{Find which CDF corresponds} \description{ Find which kind of CDF corresponds to a CEL file. } \usage{ whatcdf(filename, compress = getOption("BioC")$affy$compress.cel) } \arguments{ \item{filename}{a '.CEL' file name.} \item{compress}{logical (file compressed or not).} } \details{ Information concerning the corresponding CDF file seems to be found in CEL files. This allows us to try to link CDF information automatically. } \value{ a \code{character} with the name of the CDF. } \seealso{\code{getInfoInAffyFile}, \code{read.celfile}} \keyword{manip} affy/man/xy2indices.Rd0000644000175200017520000000735214710217042015651 0ustar00biocbuildbiocbuild\name{xy2indices} \alias{xy2indices} \alias{indices2xy} \title{Functions to convert indices to x/y (and reverse)} \description{ Functions to convert indices to x/y (and reverse) } \usage{ xy2indices(x, y, nc = NULL, cel = NULL, abatch = NULL, cdf = NULL, xy.offset = NULL) indices2xy(i, nc = NULL, cel = NULL, abatch = NULL, cdf = NULL, xy.offset = NULL) } \arguments{ \item{x}{A numeric vector of \code{X} (column) position(s) for the probes.} \item{y}{A numeric vector of \code{Y} (row) position(s) for the probes.} \item{i}{A numeric vector of indices in the \code{AffyBatch} for the probes.} \item{nc}{total number of columns on the chip. It is usually better to specify either the cdf or abatch arguments rather than the number of columns.} \item{cel}{a corresponding object of class \code{Cel}. This has been deprecated. Use abatch or cdf instead.} \item{abatch}{a corresponding object of class \code{\link[affy:AffyBatch-class]{AffyBatch}}.} \item{cdf}{character - the name of the corresponding cdf package.} \item{xy.offset}{an eventual offset for the XY coordinates. See Details.} } \details{ The Affymetrix scanner reads data from a GeneChip by row, and exports those data to a CEL file. When we read in the CEL file data to an \code{AffyBatch} object, we store data for each GeneChip as a single column in a matrix of probe-wise intensity values. The CDF files that Affymetrix make available for various GeneChips map individual probes to probesets based on their (x,y) coordinates on the GeneChip. Note that these coordinates are zero-based, and (x,y) is the same as (column, row). In other words, the x coordinate indicates the horizontal location of the probe, and the y coordinate indicates the vertical location of the probe. By convention, (0,0) is the coordinate location for the top left position, and (ncol-1, nrow-1) is the coordinate location of the lower right position. For most users, the mapping of probes to probeset is handled internally by various functions (\code{rma}, \code{espresso}, etc), and in general usage it is never necessary for a user to convert probe index position in an \code{AffyBatch} to the corresponding (x,y) coordinates on the GeneChip. These functions are only useful for those who wish to know more about the internal workings of the Affymetrix GeneChip. The parameter \code{xy.offset} is there for compatibility. For historical reasons, the xy-coordinates for the features on Affymetrix GeneChips were decided to start at 1 (one) rather than 0 (zero). One can set the offset to 1 or to 0. Unless the you \_really\_ know what you are doing, it is advisable to let it at the default value \code{NULL}. This way the package-wide option \code{xy.offset} is always used. } \value{ A vector of indices or a two-columns matrix of Xs and Ys. } \author{L.} \section{Warning}{Even if one really knows what is going on, playing with the parameter \code{xy.offset} could be risky. Changing the package-wide option \code{xy.offset} appears much more sane.} \seealso{\code{\link{indexProbes}}} \examples{ if (require(affydata)) { data(Dilution) pm.i <- indexProbes(Dilution, which="pm", genenames="AFFX-BioC-5_at")[[1]] mm.i <- indexProbes(Dilution, which="mm", genenames="AFFX-BioC-5_at")[[1]] pm.i.xy <- indices2xy(pm.i, abatch = Dilution) mm.i.xy <- indices2xy(mm.i, abatch = Dilution) ## and back to indices i.pm <- xy2indices(pm.i.xy[,1], pm.i.xy[,2], cdf = "hgu95av2cdf") i.mm <- xy2indices(mm.i.xy[,1], mm.i.xy[,2], cdf = "hgu95av2cdf") identical(pm.i, as.integer(i.pm)) identical(mm.i, as.integer(i.mm)) image(Dilution[1], transfo=log2) ## plot the pm in red plotLocation(pm.i.xy, col="red") plotLocation(mm.i.xy, col="blue") } } \keyword{manip} affy/src/0000755000175200017520000000000014710267247013322 5ustar00biocbuildbiocbuildaffy/src/Makevars.in0000644000175200017520000000007614710217042015412 0ustar00biocbuildbiocbuildPKG_CFLAGS = @CFLAGS@ PKG_LIBS = @LIBS@ PKG_CPPFLAGS = @DEFS@ affy/src/Makevars.win0000644000175200017520000000047214710217042015601 0ustar00biocbuildbiocbuildPKG_CPPFLAGS += -DHAVE_ZLIB ZLIB_CFLAGS+=$(shell echo 'zlibbioc::pkgconfig("PKG_CFLAGS")'|\ "${R_HOME}/bin/R" --vanilla --slave) PKG_LIBS+=$(shell echo 'zlibbioc::pkgconfig("PKG_LIBS_shared")' |\ "${R_HOME}/bin/R" --vanilla --slave) %.o: %.c $(CC) $(ZLIB_CFLAGS) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c $< -o $@ affy/src/chipbackground.c0000644000175200017520000004364414710217042016450 0ustar00biocbuildbiocbuild/*********************************************************************** ** ** file: chipbackground.c ** ** aim: an implementation of the affymetrix background/noise correction ** as documented in Affymetrix Statistical Algorithm whitesheet ** ** This implementation is ** Copyright (C) 2002-2003 Ben Bolstad ** ** written by: B. M. Bolstad ** ** created: Oct 3, 2002 ** ** last Modified: Oct 3, 2002 ** ** History: ** Oct 3, 2002 - Initial version ** Oct 26/27, 2002 - generalize the code so that it can deal with an ** arbitrary sized chip, also optimise algorithm so that ** when we call from R with multiple chips, things like distances ** are only computed once rather than multiple times. ** ** Oct 28, 2002 - added a couple of 'static' statement when declaring ** the functions (you never know...) -- LG ** ** Feb 5, 2003 - add in I(x,y) = max(I(x,y),0.5) but commented out for now. ** Feb 25, 2003 - fix up some compiler warnings by adding some includes ** and remove a declared but unused variable. (gcc -Wall) ** Feb 28, 2003 - Change background to be average of lowest 2% rather than ** 2% quantile following suggestion by Helene Boucher ** ** Mar 10, 2003 - Check indexing, see that it roams on x =1..ncol and y=1..nrow. Note ** that affy cdf files are on x=0.. ncol-1 and y=0..nrow-1 ** Mar 6, 2004 - All mallocs/free are now Calloc/Free ** Jun 7, 2006 - change distance calculations to be computed using floating point ** rather than integer arithmetic. ** ***********************************************************************/ #include #include #include #include #include #include #include "rma_common.h" /************************************************************************ ** ** void get_centroids(int rows, int cols, int grid_dim, int *centroidx, int *centroidy) ** ** compute and return the x,y locations of of the centroids of the regions ** ** int rows ** int cols ** int grid_dim_rows ** int grid_dim_cols ** int *centroidx - place to store computed centroids ** int *centroidy - place to store computed centroids ** **************************************************************************/ void static get_centroids(int rows, int cols, int grid_dim_rows, int grid_dim_cols, double *centroidx, double *centroidy){ int i,j; double *cuts_x = (double *)R_Calloc(grid_dim_rows,double); double *cuts_y = (double *)R_Calloc(grid_dim_cols,double); for (i = 0; i < grid_dim_rows; i++) cuts_x[i] = ((double)(i+1)*(double)rows)/(double)grid_dim_rows - (double)rows/(2.0*(double)grid_dim_rows); for (j = 0; j < grid_dim_cols; j++) cuts_y[j] = ((double)(j+1)*(double)cols)/(double)grid_dim_cols - (double)cols/(2.0*(double)grid_dim_cols); for (j = 0; j < grid_dim_cols; j++){ for (i = 0; i < grid_dim_rows; i++){ centroidx[j*grid_dim_rows + i] = cuts_x[(j*grid_dim_rows + i) / grid_dim_rows]+0.5; centroidy[j*grid_dim_rows + i] = cuts_y[(j*grid_dim_rows + i) % grid_dim_rows]+0.5; } } R_Free(cuts_x); R_Free(cuts_y); } void R_get_centroids(int *rows, int *cols, int *grid_dim_rows, int *grid_dim_cols, double *centroidx, double *centroidy){ get_centroids(*rows,*cols, *grid_dim_rows,*grid_dim_cols, centroidx,centroidy); } /********************************************************************** ** ** void get_gridpts(int rows, int cols, int grid_dim, int *gridpt_x, int *gridpt_y) ** ** compute the x and y locations of the "grid points". Grid points are ** (x,y) locations in the interior of the chip which mark out the boundaries ** of the grid regions. for a 640 by 640 chip with 16 grid regions the grid points ** would be (160,160), (160,320), (160,480), (320,160), (320,320), ....... ** ** there would be 9 grid points for a 16 grid region chip. ** ** int rows - size of chip in rows ** int cols - size of chip in cols ** int grid_dim - the number of grids (default = 16) ** int *gridpt_x - place to store gridpoints ** int *gridpt_y - place to store gridpoints ** **********************************************************************/ void static get_gridpts(int rows, int cols, int grid_dim, int *gridpt_x, int *gridpt_y){ int i; int grid_dim1d = (int)sqrt(grid_dim); if ((rows == 640) && (cols == 640) && (grid_dim == 16) && (1==0)){ gridpt_x[0] = 160; gridpt_x[1] = 320; gridpt_x[2] = 480; gridpt_y[0] = 160; gridpt_y[1] = 320; gridpt_y[2] = 480; } else { for (i =0; i < grid_dim1d-1; i++){ gridpt_x[i] =((i+1)*cols)/grid_dim1d; gridpt_y[i] =((i+1)*rows)/grid_dim1d; /* printf("%d %d\n", gridpt_x[i],gridpt_y[i]); */ } } } /*********************************************************************** ** ** find_distances(int x, int y, int rows, int cols, int grid_dim,int *distance) ** ** aim: return a vector of distances squared from a cell location to the ** centroids of rectangular regions. ** ** int x - x location of cell ** int y - y location of cell ** int rows - size of chip in rows ** int cols - size of chip in cols ** int grid_dim - the number of grids (default = 16) ** int *centroidx - x locations of centroids (length grid_dim) ** int *centroidy - y locations of centroids (length grid_dim) ** int *distance - vector of grid_dim length to store computed distances ** ** ***********************************************************************/ void static find_distances(int x, int y, int grid_dim,double *centroidx, double *centroidy, double *distance){ int i=0; for (i = 0; i < grid_dim; i++){ distance[i] = (x - centroidx[i])*(x - centroidx[i]) + (y-centroidy[i])*(y-centroidy[i]); } } /********************************************************************************************* ** ** void compute_weights_individual(int x, int y,int rows, int cols,int grid_dim, double *weights, double smooth) ** ** computes the weights for an individual x,y location: to be used in background calculation ** ** int x - x location of cell ** int y - y location of cell ** int grid_dim - the number of grids (default = 16) ** double *weights - where weights will be stored upon return ** double smooth - smooth parameter used in the weights ** **********************************************************************************************/ void static compute_weights_individual(int x, int y, int grid_dim, double *centroidx, double *centroidy, double *weights, double smooth){ int i=0; double *distance = (double *)R_Calloc(grid_dim,double); find_distances(x, y, grid_dim, centroidx, centroidy, distance); for (i = 0; i < grid_dim; i++){ weights[i] = 1.0/((double)distance[i] + smooth); } R_Free(distance); } /********************************************************************************************* ** ** void compute_weights_individual(int x, int y,int rows, int cols,int grid_dim, double *weights, double smooth) ** ** computes the weights for an individual x,y location: to be used in background calculation ** ** int *x - x location of cells ** int *y - y location of cells ** int nprobes - number of probes ** int grid_dim - the number of grids ** int *centroidx - x and y locations of centroids of sectors. ** int *centroidy - ** double *weights - where weights will be stored upon return ** **********************************************************************************************/ void static compute_weights(int *x, int *y, int nprobes, int grid_dim, double *centroidx, double *centroidy, double *weights){ double smooth = 100.0; int i=0; for (i=0; i < nprobes; i++){ compute_weights_individual(x[i],y[i], grid_dim, centroidx, centroidy, &weights[i*grid_dim],smooth); } } /*************************************************************************************** ** ** Compute_grids(int *x, int *y, int nprobes, int rows, int cols, int grid_dim,int *whichgrid){ ** ** figure out which grid sector each probe is in ** ** int *x - x location of probe cell ** int *y - y location of probe cell ** int nprobes - number of probes (ie length of x and y) ** int rows - size of chip in rows ** int cols - size of chip in cols ** int grid_dim - the number of grids (default = 16) ** int *whichgrid - a vector of length nprobes into which we store a number indicating ** which grid the x,y location falls. ** ** ***************************************************************************************/ void static Compute_grids(int *x, int *y, int rows, int cols, int nprobes, int grid_dim, int *gridpt_x, int *gridpt_y, int *whichgrid){ int i =0,j=0; int thisgrid = 0,in_range; int high, low; int grid_dim1d = (int)sqrt(grid_dim); if ((rows == 640) && (cols == 640) && (grid_dim == 16) && (1 ==0)){ for (i=0; i < nprobes; i++){ if ((x[i] > 0) && (x[i] <= gridpt_x[0])){ if ((y[i] > 0) && (y[i] <= gridpt_y[0])){ whichgrid[i] = 1; } else if((y[i] > gridpt_y[0]) && (y[i] <= gridpt_y[1])) { whichgrid[i] = 2; } else if ((y[i] > gridpt_y[1]) && (y[i] <= gridpt_y[2])){ whichgrid[i] = 3; } else { whichgrid[i] = 4; } } else if((x[i] > gridpt_x[0]) && (x[i] <= gridpt_x[1])) { if ((y[i] > 0) && (y[i] <= gridpt_y[0])){ whichgrid[i] = 5; } else if((y[i] > gridpt_y[0]) && (y[i] <= gridpt_y[1])) { whichgrid[i] = 6; } else if ((y[i] > gridpt_y[1]) && (y[i] <= gridpt_y[2])){ whichgrid[i] = 7; } else { whichgrid[i] = 8; } } else if ((x[i] > gridpt_x[1]) && (x[i] <= gridpt_x[2])){ if ((y[i] > 0) && (y[i] <= gridpt_y[0])){ whichgrid[i] = 9; } else if((y[i] > gridpt_y[0]) && (y[i] <= gridpt_y[1])) { whichgrid[i] = 10; } else if ((y[i] > gridpt_y[1]) && (y[i] <= gridpt_y[2])){ whichgrid[i] = 11; } else { whichgrid[i] = 12; } } else { if ((y[i] > 0) && (y[i] <= gridpt_y[0])){ whichgrid[i] = 13; } else if((y[i] > gridpt_y[0]) && (y[i] <= gridpt_y[1])) { whichgrid[i] = 14; } else if ((y[i] > gridpt_y[1]) && (y[i] <= gridpt_y[2])){ whichgrid[i] = 15; } else { whichgrid[i] = 16; } } } } else { for (i =0; i < nprobes; i++){ in_range = 0; low = 0; high = gridpt_x[0]; j =0; while (!in_range){ if ((x[i] > low) && (x[i] <= high)){ in_range=1; thisgrid = j*grid_dim1d; } else { low = gridpt_x[j]; if ((j+2)== grid_dim1d){ high = rows; } else { high = gridpt_x[j+1]; } j++; } } in_range = 0; j = 0; low = 0; high = gridpt_y[0]; while (!in_range){ if ((y[i] > low) && (y[i] <= high)){ in_range=1; thisgrid = thisgrid + j +1; } else { low = gridpt_y[j]; if ((j+2)== grid_dim1d){ high = cols; } else { high = gridpt_y[j+1]; } } j++; } whichgrid[i] = thisgrid; } } } /**************************************************************************************************** ** ** void compute_background_quadrant(double *probeintensity, int nprobes, int grid_dim,int *whichgrid,double *bg_q,double *noise_q) ** ** compute the value of the background in each quadrant, also computes the "noise" as defined in the ** Affymetrix Statistical Algorithm Whitepaper. ** ** double *probeintensity - the probeintensities to be corrected ** int nprobes - the ** int grid_dim - number of grids ** int *whichgrid - which grid does the probe fall in ** double *bg_q - should be allocated, on exit contains background values for each quadrant ** double *noise_q - should be allocated, on exit contains noise values for each quadrant ** ***************************************************************************************************/ void static compute_background_quadrant(double *probeintensity, int nprobes, int grid_dim, int *whichgrid, double *bg_q,double *noise_q){ int lower2pc; int i=0,j=0; int *nprobes_in_sec = (int *)R_Calloc(grid_dim,int); int *cur_n = (int *)R_Calloc(grid_dim,int); double **data_by_sector =(double **)R_Calloc(grid_dim,double *); double sumx,sumx2; for (j = 0; j < grid_dim; j++){ nprobes_in_sec[j] = 0; } for (i = 0; i < nprobes; i++){ nprobes_in_sec[whichgrid[i] - 1]++; } for (j =0; j < grid_dim; j++){ data_by_sector[j] = (double *)R_Calloc(nprobes_in_sec[j],double); } for (j =0; j < grid_dim; j++){ cur_n[j] = 0; } for (i =0; i < nprobes; i++){ /* printf("%d %d \n",whichgrid[i] -1, cur_n[whichgrid[i] -1]); */ data_by_sector[whichgrid[i] -1][cur_n[whichgrid[i] -1]] = probeintensity[i]; cur_n[whichgrid[i] -1]++; } for (j=0; j < grid_dim; j++){ qsort(data_by_sector[j],cur_n[j],sizeof(double),(int(*)(const void*, const void*))sort_double); } /********* This section was commented out to change from quantile to average (Feb 28, 2003) ************ for (j=0; j < grid_dim; j++){ bg_q[j] = data_by_sector[j][(int)(0.02* nprobes_in_sec[j])]; } ******************************************************************************************************/ for (j=0; j < grid_dim; j++){ sumx = 0.0; sumx2 = 0.0; lower2pc = (int)(0.02* nprobes_in_sec[j]); i = 0; while (i < lower2pc){ sumx += data_by_sector[j][i]; i++; } sumx = sumx/lower2pc; i =0; while (i < lower2pc){ sumx2 += (data_by_sector[j][i] - sumx)*(data_by_sector[j][i]-sumx); i++; } /* the 1 line following changes the b_k to average of lowest2pc */ bg_q[j] = sumx; noise_q[j] = sqrt(sumx2/(lower2pc -1)); } for (j =0; j < grid_dim; j++){ R_Free(data_by_sector[j]); } R_Free(nprobes_in_sec); R_Free(cur_n); R_Free(data_by_sector); } /********************************************************************************************* ** ** void background_correct(int x, int y,int rows, int cols,int grid_dim, double *Centroid_background) ** ** computes background correction for a probe at cell location (x,y) ** ** int x - x location of cell ** int y - y location of cell ** int grid_dim - the number of grids (default = 16) ** double *weights - weighting scheme for cell location at (x,y) ** double *Centroid_background - Background values for each of the centroid regions ** **********************************************************************************************/ double static background_correct(int x, int y,int grid_dim,double *weights, double *Centroid_background){ int i; double sum = 0.0; double sum_weights = 0.0; /* double smooth = 100.0; */ for (i = 0 ; i < grid_dim; i++){ sum += weights[i]*Centroid_background[i]; sum_weights += weights[i]; } return(sum/sum_weights); } double static max(double one, double two){ if (one > two){ return one; } else { return two; } } /******************************************************************************************** ** ** affy_background_adjust(double *probeintensity,int *x, int *y, int nprobes, int rows, int cols,int grid_dim) ** ** carries out Affymetrixs background correction ** ** double *probeintensity - the probe intensities to be corrected ** int *x - x location of probe ** int *y - y location of probe ** int nprobes - number of probes ** int nchips - number of chips ** int rows - number of rows on chip ** int cols - number of cols on chip ** int grid_dim - number of regions in grid. ** ********************************************************************************************/ void static affy_background_adjust(double *probeintensity,int *x, int *y, int nprobes, int nchips, int rows, int cols, int grid_dim){ int i=0,j=0; int *whichgrid = (int *)R_Calloc(nprobes,int); double *bg_q = (double *)R_Calloc(grid_dim,double); double *noise_q = (double *)R_Calloc(grid_dim,double); double *weights = (double *)R_Calloc(grid_dim*nprobes,double); double *centroidx = (double *)R_Calloc(grid_dim,double); double *centroidy = (double *)R_Calloc(grid_dim,double); int *gridpt_x = (int *)R_Calloc(((int)(sqrt(grid_dim) -1.0)),int); int *gridpt_y = (int *)R_Calloc(((int)(sqrt(grid_dim) -1.0)),int); get_centroids(rows, cols, (int)sqrt(grid_dim),(int)sqrt(grid_dim), centroidx, centroidy); get_gridpts(rows, cols, grid_dim, gridpt_x, gridpt_y); compute_weights(x, y, nprobes, grid_dim, centroidx, centroidy, weights); Compute_grids(x, y, rows, cols, nprobes, grid_dim, gridpt_x,gridpt_y, whichgrid); for (j=0; j < nchips; j++){ compute_background_quadrant(&probeintensity[j*nprobes], nprobes, grid_dim, whichgrid, bg_q,noise_q); for (i=0; i < nprobes; i++){ /* probeintensity[j*nprobes + i] = max(probeintensity[j*nprobes + i],0.5); */ probeintensity[j*nprobes+ i] = max(probeintensity[j*nprobes + i]-background_correct(x[i], y[i], grid_dim,&weights[grid_dim*i],bg_q),0.5*background_correct(x[i], y[i], grid_dim, &weights[grid_dim*i],noise_q)); } } R_Free(gridpt_x); R_Free(gridpt_y); R_Free(centroidx); R_Free(centroidy); R_Free(weights); R_Free(whichgrid); R_Free(noise_q); R_Free(bg_q); } /******************************************************************************************** ** ** affy_background_adjust_R(double *probeintensity,int *x, int *y, int nprobes, int rows, int cols,int grid_dim) ** ** Wrapper function to be called from R: carries out Affymetrixs background correction ** ** double *probeintensity - the probe intensities to be corrected ** int *x - x location of probe ** int *y - y location of probe ** int *nprobes - number of probes ** int *nchips - number of chips ** int *rows - number of rows on chip ** int *cols - number of cols on chip ** int *grid_dim - number of regions in grid. ** ********************************************************************************************/ void affy_background_adjust_R(double *probeintensity,int *x, int *y, int *nprobes, int *nchips, int *rows, int *cols,int *grid_dim){ affy_background_adjust(probeintensity,x, y, *nprobes, *nchips, *rows, *cols, *grid_dim); } affy/src/getall_locations.c0000644000175200017520000000566414710217042017010 0ustar00biocbuildbiocbuild/** * An helping function to speed up the computation of expression values * * Laurent@cbs.dtu.dk (2002) */ #include #include /*****************EXPORT**********************/ SEXP getallLocations(SEXP namesR, SEXP dimR, SEXP atomsR, SEXP ispmR, SEXP nb_affyidR); /* Takes as input a matrix of integers (the slot 'name' of a 'Cdf' object), and return a list of 'locations'. Each locations is a (n,2) array (n being the number of probes related to an affyid).*/ /*********************************************/ SEXP getallLocations(SEXP namesR, SEXP dimR, SEXP atomsR, SEXP selectR, SEXP nb_affyidR) { int nrows, ncols, nb_affyid; int ii, jj; int *names, *atoms, *select; int *nbElements; int iLastElementNA; int x, nAtom; SEXP loc_list; SEXP tmp_dim; nrows = INTEGER_POINTER(dimR)[0]; ncols = INTEGER_POINTER(dimR)[1]; nb_affyid = INTEGER(nb_affyidR)[0]; names = INTEGER_POINTER(namesR); atoms = INTEGER_POINTER(atomsR); select = INTEGER_POINTER(selectR); nbElements = (int *)R_alloc(nb_affyid, sizeof(int)); iLastElementNA = 0; PROTECT(loc_list = NEW_LIST(nb_affyid)); PROTECT(tmp_dim = NEW_INTEGER(2)); for (ii=0; ii nbElements[x-1])) { error("Inconsistency in the Cdf object (slot atom, element [%i,%i])! The atom value %i should be positive and lower than %i for the probeset %i.", ii+1, jj+1, nAtom, nbElements[x-1], x-1); } INTEGER_POINTER(VECTOR_ELT(loc_list, x-1))[nAtom + nbElements[x-1] * 0] = ii+1; INTEGER_POINTER(VECTOR_ELT(loc_list, x-1))[nAtom + nbElements[x-1] * 1] = jj+1; /* iLastElement[x-1]++; */ } } UNPROTECT(2); return loc_list; } affy/src/mas5calls.c0000644000175200017520000001173614710217042015346 0ustar00biocbuildbiocbuild#include #include #include #include #include "R.h" #include "R_ext/Boolean.h" /* taken from simpleaffy2.c in the simpleaffy package Copyright (C) 2004 Crispin Miller This is a numerical approximation to the normal distribution as described in Abramowitz and Stegun: Handbook of Mathematical functions see page 931: 26.2.1, 932:26.2.17 */ double pnorm_approx(double z) { double b1 = 0.31938153; double b2 = -0.356563782; double b3 = 1.781477937; double b4 = -1.821255978; double b5 = 1.330274429; double p = 0.2316419; double c2 = 0.3989423; double a =fabs(z); double t = 1.0/(1.0+a*p); double b = c2*exp((-z)*(z/2.0)); double n = ((((b5*t+b4)*t+b3)*t+b2)*t+b1)*t; n = 1.0-b*n; if (z > 6.0) { return 1.0; }; if (z < -6.0) { return 0.0; }; if ( z < 0.0 ) n = 1.0 - n; return n; } /* Given a double array length nx, rank it, and put the results in 'r' */ void rank(double *x, int nx, double *r) { int i = 0; int rank = 1; int ranksum = 1; int ntie = 1; int prev = 0; r[0] = 1.0; for(i = 1; i < nx; i++) { if(x[i] == x[prev]) { ntie++; rank++; ranksum += rank; } else { if(ntie > 1) { while(prev < i) { r[prev] = (double) ranksum/ (double) ntie; prev++; } } rank++; ranksum = rank; r[i] = rank; prev = i; ntie = 1; } } if(ntie > 1) { while(prev < i) { r[prev] = (double) ranksum/ (double) ntie; prev++; } } } /* a straight translation of relevant bits of the wilcox.test method in the R base library */ double wilcox(double *x, int n, double mu) { int i = 0; int j = 0; double *r = 0; double *absx = 0; int *xidx = 0; double STATISTIC = 0; double NTIES_SUM = 0; int prev = 0; int ntie = 0; double z = 0; double SIGMA = 0; double PVAL = 0; double nx = n; for(i = 0; i < nx; i++) { x[j] = x[i] - mu; if(x[j] != 0) j++; /* eliminate zeros */ } nx = j; r = (double *) R_alloc(nx,sizeof(double)); absx = (double *) R_alloc(nx,sizeof(double)); xidx = (int *) R_alloc(nx,sizeof(int)); for(i = 0 ; i < nx; i++) { absx[i] = fabs(x[i]); xidx[i] = i; } rsort_with_index(absx,xidx,nx); rank(absx,nx,r); for(i = 0; i < nx; i++) { r[i] = (x[xidx[i]] > 0) ? r[i] : -r[i]; } for(i =0; i < nx; i++) { if(r[i] > 0) { STATISTIC += r[i]; } } for(i = 1; i < nx; i++) { if(r[prev] == r[i]) { ntie++; } else { if(ntie > 1) { NTIES_SUM += ntie * ntie * ntie - ntie; } ntie = 0; prev = i; } } NTIES_SUM += ntie * ntie * ntie - ntie; /* added by Crispin Noc 2005 */ z = STATISTIC - (nx * (nx + 1))/4; SIGMA = sqrt((nx * (nx + 1) * (2 * nx + 1)) / 24 - (NTIES_SUM / 48)); PVAL = pnorm_approx(z / SIGMA); PVAL = 1 - PVAL; return(PVAL); } /* compute the detection p-value for a particular probe using the algorithm described in Liu et al. Bioinformatics(2002) 1593-1599 pms is a list of probe perfect matches, mms is a list of mismatches n, the number of probe-pairs. tao and sat are parameters, as desccribed in the Liu et al. paper */ double pma(double *pms, double*mms, int n, double tao,double sat) { int i = 0; int *ignore = 0; int totalSat = 0; int last = 0; double *dv = 0; double p = 0; if(sat >= 0) { ignore = (int *) R_alloc(n, sizeof(int)); /* saturation correction from the paper*/ totalSat = 0; for(i = 0; i < n; i++) { if(mms[i] > sat) { ignore[i] = 1; totalSat++; } else ignore[i] = 0; } last = 0; if((totalSat > 0) & (totalSat < n)) { /* ignore probes with saturated mms unless they're all saturated */ for(i = 0; i < n; i++) { if(!ignore[i]) { pms[last] = pms[i]; mms[last] = mms[i]; last++; } } n = last; } } dv = (double *) R_alloc(n, sizeof(double)); for(i =0; i < n; i++){ dv[i] =(pms[i] - mms[i]) / (pms[i] + mms[i]); } p = wilcox(dv,i,tao); return(p); } /* compute for all probes assumes that pm mm pairs line up in the arrays and that the names do to. Also assumes that probes within a set are contiguous in each array. pm, mm and names are all length n long, and are, effectively, three columns from a matrix returns with 'dpval' containing the detection p values for each probeset. */ void DetectionPValue (double *pm, double *mm, char **names, int *nprobes, double *tao, double *sat, double *dpval, int *nprobesets) { int start = 0; int i = 0; int j = 0; for(i = 1; i < *nprobes; i++) { if(strcmp(names[i],names[start]) != 0) { dpval[j] = pma(&(pm[start]),&(mm[start]),i-start,*tao,*sat); start = i; j++; if(j > *nprobesets) { error("Expecting %d unique probesets, found %d\n",*nprobesets,j); } } } dpval[j] = pma(&(pm[start]),&(mm[start]),i - start,*tao,*sat); } affy/src/rma2.c0000644000175200017520000002777114710217042014331 0ustar00biocbuildbiocbuild/************************************************************************ ** ** file: rma.c ** ** Copyright (C) 2002 - 2007 B. M. Bolstad ** ** created by: B. M. Bolstad ** created on: June 26, 2002 ** ** last modified: January 6, 2003 ** ** last modified: Apr 4, 2003 ** ** License: LGPL V2 or later (same as the rest of the Affy package) ** ** version 1.1 - Initial release to affy package ** ** Version History (LEADING UP TO AND INCLUDING AFFYEXTENSIONS) ** 0.1 - Initial version released on July 14, 2002. Implements median ** polish RMA method with ** 0.2 - background implemented in c with the density estimation still carried ** out by the R function density() ** 0.25 - correct background implementation, version 0.2 is broken. ** background is implemented in rma_background.c ** 0.30 - Have a copy and none copy path. ie we can either work inplace or on ** duplicates. the purpose of this is to reduce memory overhea. For ** someone with an interest only in expression estimates this should not be a problem ** ** Version History (AFTER INCLUSION INTO AFFY PACKAGE) ** 1.1 - Initial inclusion into Affy package, heavy modification to how PM data structure ** dealt with. ** ** OLD COMMENTS ** ** a c language implementation of the RMA method as given in the RMA.R file I ** received from Rafael at an earlier point, but assume already had background ** correction to PM's at somepoint (perhaps in the c code) bg will be written in later. ** Possibly another background method will be inserted in at this stage. <-- COMMENT DEPRECIATED ** ** Note that the normalization code that is used in this algorithm is updated ** from that in the affy version 1.1.1 (there will be slight differences in the ** expression values because of this), there is also slight differences in the ** ordering of the results. <-- THIS COMMENT IS DEPRECIATED. Quantile ** normalization updates will happen in the bioconductor cvs. ** ** Ideally and at some later point a more modular approach that can be called ** in a better manner from R than this will be written. This is a quick and ** dirty approach to get something that will run acceptably.in terms of memory ** and speed. From a software engineering viewpoint expect the code to be poorly ** constructed. <-- SOMEWHAT DEPRECIATED. some work should be done to ** clean things up. The user will generally only be dealing with the R ** interface. ** ** Input to the function should be processed from within R ** ** NEW COMMENTS ** ** This is the main c function for implementing the RMA method ** it provides c interfaces to be called from R. ** ** Specific Modification History ** ** Note that the qnorm code here will not be the development tree ** LG: what do you mean ? ** ** BMB: legacy comment, from when this code was outside affy, in AffyExtensions ** and before that as raw c code that was floating around. ** ** Specific Modification History ** Nov 2, 2002 - modify so that it will work efficently with affy2 ** Nov 3, 2002 - More modifications, remove cruft from old version ** Nov 4, 2002 - testing, check docs etc ** Nov 10,2002 - remove pesky debug printf() ** Dec 5, 2002 - add ability to turn background off ** Dec 31, 2002 - add ability to change to type 2 background ** Jan 2, 2003 - clean up old/incorrect documentation/comments ** ** Dec 26, 2002 - '//' is not a valid way to comment out (and some C compilers complain about it) ** (Laurent) ** Jan 6, 2003 - fix merging. Note "//" is valid according to the language standards (http://anubis.dkuug.dk/jtc1/sc22/open/n2794/n2794.txt) ** Feb 6, 2003 - change some printfs to Rprintfs this will allow the windows users to see some ** verbage when running rma ** Feb 25, 2003 - try to reduce or eliminate compiler warnings (from gcc -Wall) ** Apr 4, 2003 - fix up so that the number of probes in a probeset is allowed to be more dynamic ** Dec 9, 2003 - fix a bug in do_RMA (max_nrows in R_Calloc) ** Mar 6, 2004 - all mallocs/frees are now R_Calloc/Frees. Removed ** the function R_median_polish ** Jul 27, 2004 - fix a small memory leak ** Aug 4, 2004 - move the "Background correcting" message. ** Nov 8, 2004 - change how things are structured in do_RMA() ** Sep 3, 2005 - In extremely high memory usage situations ** R was garbage collecting something that shouldn't have ** been. This was leading to a seg fault. Fixed by ** moving an UNPROTECT. ** Nov 9, 2006 - integrate changes suggested/supplied by Paul Gordon (gordonp@ucalgary.ca) ** specifically memcpy, caching log(2.0), and partial sorting for median calculation ** Nov 13, 2006 - moved median code to rma_common.c ** May 24, 2007 - median_polish code is now from preprocessCore package ** Oct 26, 2007 - add verbose flag ** Oct 28, 2007 - remove any vestigial references to MM ** Mar 31, 2008 - use rma background correction from preprocessCore ** Jul 2, 2008 - now use different median polish interface from preprocessCore ** Jan 6, 2009 - fix issue with SET_VECTOR_ELT/VECTOR_ELT applied to STRSXP ** ************************************************************************/ #include "rma_common.h" #include "rma_background4.h" #include #include #include #include #include #include #include #include "preprocessCore_background_stubs.c" #include "preprocessCore_normalization_stubs.c" #include "preprocessCore_summarization_stubs.c" #include "R_subColSummarize.h" #include "R_subColSummarize_stubs.c" SEXP do_RMA2(SEXP PMmat, SEXP PM_rowIndexList){ SEXP Summaries; Summaries = R_subColSummarize_medianpolish_log(PMmat, PM_rowIndexList); return Summaries; } /******************************************************************************************** ** ** void rma_c_call(SEXP PMmat, SEXP ProbeNamesVec,SEXP N_probes,SEXP norm_flag) ** ** SEXP PMmat - matrix of Perfect-match values ** SEXP ProbeNamesVec - vector containing names of probeset for each probe ** SEXP N_probes - number of PM/MM probes on an array ** SEXP norm_flag - non zero for use quantile normalization, 0 for no normalization ** SEXP verbose - TRUE/FALSE or 1/0 for be verbose or not ** ** a function to actually carry out the RMA method taking the R objects and manipulating ** into C data structures. ** ** this function assumes any sort of background correction was carried out previously ** This function carries out the other two steps of the RMA algorithm: ** Normalization and Summarization. ** ** In particular the data is quantile normalized and then it is ** summarized using median polish ** *******************************************************************************************/ SEXP rma_c_call(SEXP PMmat, SEXP PM_rowIndexList, SEXP N_probes, SEXP norm_flag, SEXP verbose){ int rows, cols; double *PM; int i, nprobesets; SEXP dim1; SEXP outvec, outnamesvec; SEXP dimnames,names; PROTECT(dim1 = getAttrib(PMmat,R_DimSymbol)); rows = INTEGER(dim1)[0]; cols = INTEGER(dim1)[1]; UNPROTECT(1); PM = NUMERIC_POINTER(AS_NUMERIC(PMmat)); nprobesets=INTEGER(N_probes)[0]; if (INTEGER(norm_flag)[0]){ if (INTEGER(verbose)[0]){ Rprintf("Normalizing\n"); } qnorm_c(PM,&rows,&cols); } if (INTEGER(verbose)[0]){ Rprintf("Calculating Expression\n"); } PROTECT(outvec = do_RMA2(PMmat, PM_rowIndexList)); /* now lets put names on the matrix */ PROTECT(outnamesvec = getAttrib(PM_rowIndexList,R_NamesSymbol)); PROTECT(dimnames = allocVector(VECSXP,2)); PROTECT(names = allocVector(STRSXP,nprobesets)); for ( i =0; i < nprobesets; i++){ SET_STRING_ELT(names,i,STRING_ELT(outnamesvec,i)); } SET_VECTOR_ELT(dimnames,0,names); setAttrib(outvec, R_DimNamesSymbol, dimnames); UNPROTECT(4); return outvec; } /******************************************************************************************************************* ** ** SEXP rma_c_complete(SEXP PMmat, SEXP MMmat, SEXP ProbeNamesVec,SEXP N_probes,SEXP densfunc, SEXP rho) ** ** SEXP PMmat - PM's ** SEXP MMmat - MM's ** SEXP ProbeNamesVec - names of probeset for each row ** SEXP N_probes - number of probesets ** SEXP densfunc - density function to use in computation of background ** SEXP rho - an R environment ** SEXP norm_flag - TRUE/FALSE or 1/0 for normalize/not ** SEXP bg_flag - TRUE/FALSE or 1/0 for background correct/not ** SEXP bg_type - integer indicating "RMA" background to use. 2 is equivalent to bg.correct.rma in affy 1.1.1 ** all other values default to 1.0.2 "RMA" background ** SEXP verbose - TRUE/FALSE or 1/0 for be verbose or not ** ** Main function to be called from R. Modifies the PM matrix from the parent environment. More dangerous than the ** function below, but less memory intensive. This is a function that implements the complete RMA method. ie ** background correction, quantile normalization, then expression summarization using median polish ** *******************************************************************************************************************/ SEXP rma_c_complete(SEXP PMmat, SEXP ProbeNamesVec,SEXP N_probes,SEXP norm_flag, SEXP bg_flag, SEXP bg_type, SEXP verbose){ SEXP dim1; double *PM; int rows,cols; if (INTEGER(bg_flag)[0]){ if (INTEGER(verbose)[0]){ Rprintf("Background correcting\n"); } PROTECT(dim1 = getAttrib(PMmat,R_DimSymbol)); rows = INTEGER(dim1)[0]; cols = INTEGER(dim1)[1]; PM = NUMERIC_POINTER(PMmat); rma_bg_correct(PM, rows, cols); UNPROTECT(1); } return rma_c_call(PMmat, ProbeNamesVec, N_probes,norm_flag,verbose); } /******************************************************************************************************************** ** ** SEXP rma_c_complete_copy(SEXP PMmat, SEXP MMmat, SEXP ProbeNamesVec,SEXP N_probes,SEXP densfunc, SEXP rho,SEXP norm_flag, SEXP bg_flag) ** ** SEXP PMmat - PM's ** SEXP ProbeNamesVec - names of probeset for each row ** SEXP N_probes - number of probesets ** SEXP densfunc - density function to use in computation of background ** SEXP rho - an r environment to work within when doing density call in background step ** SEXP norm_flag - TRUE/FALSE or 1/0 for normalize/not ** SEXP bg_flag - TRUE/FALSE or 1/0 for background correct/not ** SEXP bg_type - integer indicating "RMA" background to use. 2 is equivalent to bg.correct.rma in affy 1.1.1 ** all other values default to 1.0.2 "RMA" background ** SEXP verbose - TRUE/FALSE or 1/0 for be verbose or not * ** Main function to be called from R. Makes a copy of the PM matrix and then works with that. Safer than the ** other function above, but more memory intensive. This is the function that implements the complete RMA method. ** ie background correction, quantile normalization, then expression summarization using median polish ** ********************************************************************************************************************/ SEXP rma_c_complete_copy(SEXP PMmat, SEXP ProbeNamesVec,SEXP N_probes, SEXP norm_flag, SEXP bg_flag, SEXP bg_type, SEXP verbose){ SEXP dim1,PMcopy,exprs; int rows,cols; double *PM; if (INTEGER(bg_flag)[0]){ if (INTEGER(verbose)[0]){ Rprintf("Background correcting\n"); } PROTECT(dim1 = getAttrib(PMmat,R_DimSymbol)); rows = INTEGER(dim1)[0]; cols = INTEGER(dim1)[1]; PROTECT(PMcopy = allocMatrix(REALSXP,rows,cols)); PM = NUMERIC_POINTER(PMcopy); copyMatrix(PMcopy,PMmat,0); rma_bg_correct(PM, rows, cols); exprs = rma_c_call(PMcopy, ProbeNamesVec, N_probes, norm_flag, verbose); UNPROTECT(2); return exprs; } else { PROTECT(dim1 = getAttrib(PMmat,R_DimSymbol)); rows = INTEGER(dim1)[0]; cols = INTEGER(dim1)[1]; PROTECT(PMcopy = allocMatrix(REALSXP,rows,cols)); copyMatrix(PMcopy,PMmat,0); exprs = rma_c_call(PMcopy, ProbeNamesVec, N_probes, norm_flag, verbose); UNPROTECT(2); return exprs; } } affy/src/rma_common.c0000644000175200017520000000570414710217042015607 0ustar00biocbuildbiocbuild/*********************************************************************** ** ** file: rma_common.c ** ** aim: a location for commonly used utility functions ** ** ** written by: B. M. Bolstad ** ** created: Oct 16, 2002 ** last modified: Oct 16, 2002 ** ** history: ** Oct 16, 2002 - a place to put common utility code, created to help ** the R package build. ** Jan 2, 2003 - Clean up code comments ** Nov 13, 2006 - moved median function into this file from rma2.c ** ***********************************************************************/ #include "rma_common.h" #include #include #include #include #include #include /********************************************************** ** ** int sort_double(const void *a1,const void *a2) ** ** a comparison function used when sorting doubles. ** **********************************************************/ int sort_double(const double *a1,const double *a2){ if (*a1 < *a2) return (-1); if (*a1 > *a2) return (1); return 0; } /************************************************************************** ** ** double median(double *x, int length) ** ** double *x - vector ** int length - length of *x ** ** returns the median of *x ** *************************************************************************/ double median(double *x, int length){ int half; double med; double *buffer = R_Calloc(length,double); memcpy(buffer,x,length*sizeof(double)); half = (length + 1)/2; /* qsort(buffer,length,sizeof(double), (int(*)(const void*, const void*))sort_double); if (length % 2 == 1){ med = buffer[half - 1]; } else { med = (buffer[half] + buffer[half-1])/2.0; } */ rPsort(buffer, length, half-1); med = buffer[half-1]; if (length % 2 == 0){ rPsort(buffer, length, half); med = (med + buffer[half])/2.0; } R_Free(buffer); return med; } /************************************************************************** ** ** double median_nocopy(double *x, int length) ** ** double *x - vector ** int length - length of *x ** ** returns the median of *x. note x is not order preserved when this function ** is called. ** *************************************************************************/ double median_nocopy(double *x, int length){ int half; double med; double *buffer = x; //R_Calloc(length,double); memcpy(buffer,x,length*sizeof(double)); half = (length + 1)/2; /* qsort(buffer,length,sizeof(double), (int(*)(const void*, const void*))sort_double); if (length % 2 == 1){ med = buffer[half - 1]; } else { med = (buffer[half] + buffer[half-1])/2.0; } */ rPsort(buffer, length, half-1); med = buffer[half-1]; if (length % 2 == 0){ rPsort(buffer, length, half); med = (med + buffer[half])/2.0; } return med; } affy/src/rma_common.h0000644000175200017520000000027414710217042015611 0ustar00biocbuildbiocbuild#ifndef RMA_COMMON #define RMA_COMMON 1 int sort_double(const double *a1,const double *a2); double median(double *x, int length); double median_nocopy(double *x, int length); #endif affy/vignettes/0000755000175200017520000000000014710267247014543 5ustar00biocbuildbiocbuildaffy/vignettes/EWSnap.png0000644000175200017520000014130714710217042016400 0ustar00biocbuildbiocbuildPNG  IHDROrD pHYs.#.#x?v 9iCCPPhotoshop ICC profilexڝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEV"E)C.m* UDma]4!{vl@2'1PlylpRrz!"Vw½9Wj}v܁ )KسARS%;@@[Y Vk+ fbuY=f?D&o(Ջ:(4ZU^zĘnM-뺸l7Nozy(Awv)v `Gqqt"VbYABl}[.96.! TVur>yo4m|;`OKfWu<`[?HXg4KسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%b Q0 F(`Q0 F(`@<5dhj404uy W.#8q4`0Etx4PFQ0 F(`at~p3 };o y `[?Hi$Oف ))@A @ YpSR[sm=U lL`$bn! u30 <:O@e 7,4ޥ6׎.>h9 yֿ~w~Xسca D:v*Hظ(]sW+Ot;<Aea]iǫnqky뫔܁ )KسARS%ݡ Pta +/*4I %_=u^8PO_;`{7:+&K`+{vp)P?\ ;y<"}{w;o ` ~H,4 2_z?bF(`"+\烎Ms{3zcaZdLt@j 1v\>?H†ߡ 'a`P"?1|0z$?HWrW/S=ƲeQQ~vܡX! A{->T >(xCc;o ` ~H,;{a ,?@bH@MA"DŽrTF>(G5*at!MWlAA7hElʸ3 [k *yƭ]Z=ϧ8`nY.>>ǎ~9v?G]]eosP8tVkm+CΌ+o2ڡVʵ|8j4~Mm]>b"GlQjc#1GV>F(fol2sZ0p/EA ]vܗoCS 2|}P̛7ڃ"5bF(`!jPm\>Eh0uMhEwM)2s~ꏺ<#E  Ĥ#RtEct@(]$ϙvI5#ϖ$wh=?9zHWĄ`,kyEiؐ_BE@8G/JLJ#Mz>!5>.E]; F(` gw ~I `[?Hi$O1 PąeY ̫D!`?5L^VMKI;̴e({nrY-2\F4h3+ߣ]Vov1!{C~W\h]/;9kpV3;,X){w0QiˁL |>!L^HKI;&l)Gh;S7uUW56"b!BcA˞{Hh:Xp4qT`[?HXg4KسARS%ݱ 0 ?( Y.@pqo",鮉iC*egyRzKAR7{WUaSQ0 F(`GgO' &$Y[dPWzebJ."eBz1 HJcPTR Q0P(@ wRz` @q;5 F(`Q0|/(h {v `AqRAzpHZdІ/yY \[DnZy\s;~ @X_GzZ<*NHk`pk;o ` ~H,ػ[a0V Yṡ%A&8* ?qj6|S[\!_ҵ6gykŦ }Z'Wzm=} g?|j=@,{wlPtFrhDBEq>O+F-6Jmx0k*3y'Zq7xNܕR^Z^`[?HXg4K;%46%^ҕg!R@34Ӳj n*wy~kCvрbO0c6uSͻ^.zQg_1Z9Q$W2FIHݑ3Ĩ֏< 6=j_1i@/jO伶<`Q0 FMhoyp>ӦI$>pZWrh@8@?H޷?h}8O PMWC5"'Gr)7_=uӽLDw( 4Y[G#StVQ4M}Q0 F(`܁ )KسARS%; EQ;1kC)1~a@YN`T<3r\Լ^9S1RZ{&IzHROF!ey,ݯRa >26%ZUhQ-si|kYAkj8O4sL֞].E 0EQ $R޳A&ؽ S{YPu ]GmrYa*j~Χ66=9-Y]A͛%gs k+a?Z̨Jb=z- @-a`[?HXg4K9ca:kwGI뽭4v~1=~VuSC}U$,2hpQsywJ薨_8fI 9MsWb^QuI0KIVU ma_҃BԚ+q;;i^Lk~T;FA85չ~gWv@@H^%ف ))@v@!)bckn`u载(kP2̺w6@Ec1D!LB4Zf?ӔK}Q+-;w A $m/@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%b Q0 F(7crkWg{!f}]r9upzvOfz]<7iy7D9j!:3ȉwlinl[Ѯ0}Vk~~I `[?Hi$Oݱ 0MF?ݵs5- n x\oMs7 RkyƴBgpx_RkB|LryC|U j@5c -zjm=Us$=`Jr?~9sKyMqo8ܔ3?^w)@th1Uehy$)jz'ڢlݟYu]zzo )u E;8(|~=YٰQ܁ )KسARS%ف ))@@he```cf& `\iُm[WkP(m #|j^jKwUݯϨQgvn="x}:gyw_ZG 0K@@G)@@@F` ~H,ػaEp^PRA*-(!5OxE?{GJl)-Tܚ ?fw8ͺ-;}VT綴;^]'۟ZW5zH#*v A#` ~H,سARS%tQ0 Ff?g2`ٓAGnCPPTaHJt4 F@.e']bb$%i`ޜI APQ0vG%`x{3߷}DHmu\0o`Q0 FU@ @/?ԥ?o\v)*7vїpWc59~ϼISx*;w A $m/@@@F` $Pݬ:K4,n:ah M6 PGəLuӪ˛sC/]YcPoR~1#͓Cuհcp]="C4؅4Ujץ?3P.XNҼp@,O|7'z7x`(`!'HFGאuҐ7 @\Uy$wuVaGsۤ!qO?GR:BE:C%R0y +%n?HM_=8݀$4ZUrpMq-&$ ҉]4Y/b|8l e@r }5Bi]B\״; F(``عAR i{ف ))@f@ֆ번vw7u?45Q50HIsǎuT5~@zgP쑂ѩXɍd#2d?+yo":fAfoɍTxbw Ǚ*e^14wO1#wQ ]c1fp A Ы9D'ZP(dMf0IciﲬBq羟*K,=sY5t ~I `[?Hi$Oف ))@@@F` ~H,سARS%ف ))@vnR\z"xe`[?Hyd,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,2`R+jPm:<0栮:p~s$mр`vh V.|]CI3V`A~â2\1$ N 6MA طARKسARS%ف ))@`hO ^ѡ=8dimyosB2qqX:9`^̞Ey]aLW؇Ggo<2Oف ))@@@F` 0\-; ?ukH|p1 @y'6 %<Έ/VS;o ` ~H,عa)*'&@c 8#D) b*U}qJ_Ky~UMb˜@z֢)B!_{AW FJ=$x}g'oٵuG1W%0ƬK`|fKir#ƽPdpiex%ˠă z 5ţЖ"D:"T..:s oZOy\"5~(Mh"JG@iFZ;O -ڞxoGjjDײt4T%C0ƫF.11r&d1EJ)y5 r.=ڻ79v qrw`WEŖ_9}j̱{1㠃uk ׯ?W@ av$[[oE) QXL y;kwek&H}88DQK>=ZJZ[+PEd`}`bayMu{?/s4FC2njr'?=uiE a(Z`w4_f c >m0'gY]F}jd.>>}bC,.C;Wȋv`Gy{oy.27`wgR7Y􏨼$ gQ=`7yC3[Sj?j9$ ˬuXns/3j]]9Cý̸8|bnWv@@H^%ف ))@v@(j%Y1!⤋J# )i ,8HQvp0:"մ1%}NisØI|YK륤Mk/}H}HC.QoGx$*Pb{7:X1Kje &O O ہ )S%ف ))@@@F` ޽xGq/!I4 MJ7op@b5sz}3yGvD{{N}A~\Z߱2[w@-2Z.wTfFZ޻X`[?Hyd,سARS%ف ))@y:ϙ<tngؿo;G8v|e4GdAw@bJ.h@aW@WDy09irw4Q@]\N`C}hAoB/[Q; vhZiFk6H)wif@+;ؿwxkih1  4lk F'O)Ih t1)!? *(Mbctwa޸ % ~ !;5")zQ[Gr#5hn4$;1().6na:$HG_=~ ΁*w@cr!SRH!R|" H!O{ F"&Bv۱r9 vhapՃ10 V[41nm@FJK6fXO]t;@z)ZNù;o ` ~H,;A'f,8h%t^;:c&W-V3w9H,ryr+#ň[/9Ttfyxuw2tCTp."rf8[R]]41VgYʮkҽ٫Ub3L ;U~14]{Qtkb/v'WU tq7@ԇouJ%ػc( G ^`7!!`Pn 'bl<]U(y#&3eYC?܁ )KسARS%ܡ AC!0C`~2 @7W _ܫg-"@; (C@w4P3\/Sc#;w A $m/@@@F` ~H,ػc"b0puH$< ~<Xg4KسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` AQsɓݘDܷה˨x};o y `[?Hi$Oف ))@hEWT ?y @{>gD0İP$+%pC7Om̼1Os%;w A $m/@@@F` ADDxͬAa&t 8kћzʥgٱArB fvKS!܁ )KسARS%1 @"hiI VZ lq[ Hl`N)y;?׫*~;:|w(Q1]0EfLjcmݺah>8(iCTO쿒OǞ^y[@anعAR i{ف ))@@@F` ÿ"LX &H$< FrjSL ~<Xg4KسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ա@@  2"۴ rN}*\7mY1º.ΒǼ&!+G"( ~5FH) B6Xi@93/MnkK|diؾjMT_C}R՗$w]߬%mdR_чֻ>h܍ϛz%2Q4'{f C᠇0lX(R/| l֮5ש!x6g˼$ӼcdNY}CS}?9kFvm 5[30>qDs }"x"܁ )KسARS%A 0E{ ` ; 3B!4$3,&lKɂ+%^H;~ή[2s}(QŨbL F祵 ))y =;ƌ[D͗Ek$.#>AnU*œGTwޕ1&`} c1]yy n(֧GOę!w=ov?DMDB!@ !  @`` (@0@a` p_ı/u")!$ YWwt$õ^.&zhƃoko.ot腁BIr02;iD}K01)t v6;0BW^D؋ïͪp"ȉJsg3 S pY;ݾ@n}>P#}.vb!B lw8\y ~I `[?Hi$O; i?16HÒ>2s†M ʻ)#ҎH$ݶU=_(u[ҋM y_m 1ZiG|WO͹;~̢=H_oLFv @E䚋(k: >OaCʓ>/: Vo{9er5"rd?:{7fNONعAR i{ف ))@@hgUq4ND,XB2N c{ N΋dǷ]x(dmSZY;ſpuV+XGu:`q(ޕiy yKGa!F%O>OaBaݺʠR4)j>fJ+.0,m.W sz`[?HXg4KسARS%1 uhx%5YB?mQˇK'&ռYԴwz]D4h œ7ζO]* $Ko};쭑@ 'v A#` ~H,سARS%A 0 EZ GH,3B!v4Oed; cK/{xu6QPli}'f{Q9Kj!#m5lo<2Oف ))@@@F` ;OG(` <¦f(tQhvü9}ؒ?Tܿ{ĥ+E pسc`P$@1"H$)qe4s@,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@vy~j%l̐HwIFسc@=^fO<<Xs@,سARS%ܱ EQWI aYAsx@%ф97B|0Ӏ#us6*O <xw+ODعAR i{ف ))@v@`H0Q%DRSf庭:o{>(99M1۪AG{kko=p  @"bp4M `B_ેwl(^ˬբw`ώmaNd4L`$;ɅgxN ;o ` ~H,ػ@(xУf"f{>L7!a5Q3G 3%\z)^ib\+;w A $m/@@@F` A|"d$DN@3%lwf{>jCIzk_>33uO*bLB4NChQ¹a2`[?Hyd,سARS%ف ))@qeBM0A" )\0zW˜BgJطARKسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` `Q0 F(:D5dhjDS7]r*Elݦã5xĉ3 F(@A~(I :T5-F(`Q0 F(ہ )S%ف ))@@@F` 0 n_VME[YR*ρtqYo<2Oف ))@@@F` EQOH *kx:P/t}y ˹Yv)B,S?~Hꦽ4˅<`ώm 4_HL!1K~/y)\fα1ں">s8˖܁ )KسARS%10 EY1d0APwVEbQކP3ٔW8How~Ҽ4׷gyTXz/K9e}=}ךp84g4<{>!b>И6_Y"W%WZ#tr-X<#&_ٿkZ)ޯWX` na(@zp%j\D0b)`|n5@ok3F5WsPO/-:Sc7=xTf`Lݱ Eق]SK-3 ڽO߈vWgp=3?rGr=X3ͺ>{ӳ]dvowZ`[?Hyd,سARS%ف ))@@1CJIfJE>.UTLr4` <5l\Ɣ?ᑉԴ-?; q*&&ItE<1ŸEQ@~BH+I>ի{P:]'PL2q>>'@itt55= F(`ЪDVg`httQ0 F(}4^[GmFWqv2Q'6Hl: E,#W.G)Ix2hr=pHB14nP<<] S47 1`ݦãPZL dLvQ$O ]hpMR"T&})'uL`Q@z6 F( `[?HXg4K;AR3-&+Pb\0V ^$YQ#5O)G{w7WQ =ޙ5{\6ƄuͿHݾGkcN4ZW~Ԇp-<qݦ)8|x/Û/|MM] `Q0 F(`Q@=k& 2҈I'1bPVQgPVVKꝎ`Q0 F(2 ?e-N\ "2t;0߽e8}(^5y)(|IY`ZĩG`< F(c~I `[?Hi$Oف ))@@@F` ~H,سARS%ف ))@vbGq r_.zFطARKسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@vy~j%l̐HwIFسc@=^fO<<Xs@,سARS%ܱ A?4[̞6$˜CG{!g40Q@5* ͝_<(`DokO!>'E( ~I `[?Hi$Oف ))@`N2 bP@kRE%w`C _f}[N8+v A#` ~H,سARS%1 0`ht"Q@r' )qyYB};o y `[?Hi$Oف ))@! &b(o},{Jسc"b^(5HSB܁ )KسARS%1 @ nM`ބi6kس`bŅ+.k"p-`~SMnFعAR i{ف ))@ k.R^S=;a 8]{0 ($Sv8͊{3_Kv@@H^%ف ))@v(ߪ5(dnD !a}Dݽ>s`ώm k~J?5HFx3O>pJ3R]عAR i{ف ))@@@F` DAƐP 8>8a 3k`XG5ޱ)ړFCqSlK@@G)@@@F` ~H,ػca@t,u"k! n]N^w_|T )Ęivͳs/ike*s ~<Xg4KسARS% A&~ ep h‹< Z s9#{vL1y 7A< #Cv֨YBgZعAR i{ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` >Q4xABa A ء$b&bK6H譮}?1%a<1+O@@G)@@@F` ~H,ػ((Qc9P.`-װEGQ,׫MYmd]G=U? Lc eJWP 䂁yG$,~lgmǽ)2MPp&{v C0 ?b;fhr{IOT>v?[^}Ϝ(jhs?R~ 8܁ )KسARS%ݱ 0 `%DL) J΅] ?puݜzFvJӛ `n5̣ e  AvZ8!Lԁjj܉g8>iM;4yt.O_?cϲ܁ )KسARS%@0 qBNyEEW[_ݭ}oPks|ut|LyUތ/bXǥym)r1y~^ۘuݼVѨmm;CcŜfg퇎3:ed?:[Sv\]{|NJU_ݘ3YuGwwgmxIF~5sb?g1#gyVK`<(`Q0 MP:MUyx4MBLUt@tc0؁-m:L@c"ߑ GsZ-~*@OI$Gma E'R= ˕q/*~0d 5NÆ 'Id04"d|4]Q0 F(`P.$Ci_mQ0  ~I `[?Hi$Oف ))@`][I8f^S ֏vT/]Ϫƍd[}#?6 `#v A#` ~H,سARS%ݱ 0P\A\ (4f I&V6=+>}P}[Liw9\0缾>X PK@@G)@@@F` ~H,ػc`(㝱tpLAB.Ӊ^M+!`(%oh.y U-JS>e24Is~x4#NR ׮6t:E lsAT P= =D\-n$8T-@,xǤܡc;[*[}ڷ<=RrYül%;w A $m/@@@F` QݢaHئŐ- D+I{]߱o;:fS #SqoQ.zm_]:`m+X08j U뮿POjQusOr ! nq ~I `[?Hi$OA гծu07QYQ;QtfsơG5co wrE^*/-,︻OhnSzz/z]ﷶ=wsd_2 Q0 F(` luyh_:DLRnGS'>^9P[GԸ{~AOZ|Iftx4s H kPw4]Q0 F(`жS=; 6ݎ#;woN>WMa^ _DRV8q{Q0 ~p3zs@,سARS%ف ))@vNia~MZ ] svt[W@@G)@@@F` ~H,ػc"`B)bc] 7߿S%Oh9q`[?Hyd,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@v؇MC Ÿn ^}Z|h`ώi`FO%BޘP^عAR i{ف ))@@@F` D zHHァ='v A#` ~H,سARS%ݡ 0e tŠXPפ]K~W)Z-3pW@@G)@@@F` ~H,ػc@,БP6A; o=O }SX!`ώmAus}B֘įB;o ` ~H,عcOO$3ݶ'GG<=;&a ._<( ~I `[?Hi$O1 @ nM`ބi6kس`bŅ+.k"p-`~SMnFعAR i{ف ))@vX)f u_ n{yiFسc@ ؁'V"؁`0\ <x j>9 ;o ` ~H,ػc@`zq-kH4Pu"s+>ve=;(C*T <+BZ̔K>v`[?HXg4KسARS%ݡ @D h U`3냳2y A~ZKb=i.a47F`[?Hyd,سARS%ف ))@@hK@8ۉlJpNw)@RCN?Mb6E>ۺ`q >@! qwr&k<@SU?Eӟ{_GKCWc<s@,سARS% A&~ ep h‹ Z s9#{wL@п0@IJ6E )y)p] ~I `[?Hi$Oف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@v@ (˸ kQ)YcC$yWwP0c\=9b.H+=;j`1N*!yu82Fcʎ򙽿7:+^2`[?HXg4Kعca(%K2),EV ^{+Z ^1L\R^{;.ػc"`RH Z+/y u}?^=4_s@,سARS%ܡ -C@6;IEMOTG$ɸf+`MBXKv!]OS^|!PevWls@,سARS%ݡ0jdn`7R,A@K L\VHKW* 48ZZvl?1wm3em[k#X=1|8ܟ+bڏG#+c<|6nƸwN,httQ0 F(ʠ*6qФ 6ƫg W.##Pwݿw;AB]CIxP#R &IC;vR1Դn?IW旑\&#P#Sj@ezL`Q0 F(`Z܁ )KسARS%; EQjWBd0?%1(#qm/yo :'}5ks=ݢ?c5/-k.2wL)%/iiVhcxg5hIkm%uZgZ΁.w{=}n^6ػa ÓqUKSv@@H^%ف ))@; F(`Q@c0o$w߁7pDБIAνޝԸT;G(=ۻa8]|O hGW/(`Q0SmĔ\+i)3`! w(0@`O-xϪAyo(d,O.V{Y{1z]Jd{ʹ&Y|eqڒ-]m>O^(|)]܁ )KسARS%!0  AmI ܇4Q &eIEMb{&{B/ZRw$y"b߿x)o/&[@(S4, F`  00VCQxϝ侨x PؾAJ437q7 ~Ō児 NfZ.ѵf\9xwbO4޹EkVrOJw>E/;'og0:x^8]NQ0 F(`DD@6Nܿw;m:< 0~XB4qJi L"9 RPr|>(|Iiy(5`Q0 F(~C|7F(;o ` ~H,ػA ]hQÕ0d>N<jkYOr#fU̻>/9W1jŘ5NՊ؟Dv}U3{wED?MSp^7_ @< F(`Q0 vLxdhQ0ʇ{3H#E8y8À:h@A@\>o`Q0LAP-çoqgbߦqd4`x-G)KAH 'Nw<Q0 F} ׯ?W@v@@H^%ف ))@@@F` RA4W* *PGPؐx5*};o y `[?Hi$Oف ))@` KDpS&u:{ ^wk~%ϘI)to}g4 ôpps !3OH8Q="o܁ )KسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%A   ?",%!0 lWIDJ61O 9ƽ܁ )KسARS%ف ))@ JX fCB ͝7m)G<طARKسARS%ف ))@@ ^aYЫl_w"l{3S>]9"Ҷ.xx~[T3ٱ @!^t?<+dT8O.sZٍ)Vb3`[?HXg4Kعc@,БP6A; /m{ }SX!`ώmAus}B֘įB;o ` ~H,عcOO$3ݶ'GG<=;&a ._<( ~I `[?Hi$Oܱ "*f(v @v# SuE١0I*4ξ})'n(0`[?HXg4KسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` NCQMBې'hqF9|%xociRk(W9Ͽ  i?N>g&@ tUGN Uy p 'rTWpc ~I `[?Hi$O+ P2#Z,0g{7ݾn{GV0~?se 1mjQ^سc``SH%t nA:y )0ҭ3cFj܁ )KسARS%ݱ 0 @AKG %^{?l/<3fՓ c֏]1`m +`p50$6+H$x=w'Ϟ[){ԣ>9O).'Z;c]W7a>t ~I `[?Hi$O! @Qa$$jz XBi8Cf l'ns(g4@E_H&8txO_y Wζ." 8=S`:Q?z`[?HXg4KسARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ԡ DQDg ]TuRĐ@U{wHyG oxt>qQ~pCS`CH ]2<v7SxЎّ%>x Zs@,سARS%ݫ0 @jB@?bbR,8 YBTuZ2\'<, 91beU?./_3mcy7Zz+d{7:+X؈.`Z ,l:"~ =.$y tm} ϋRI4FUݸ^_εu>>gibnZ s@,سARS%ݫ @)4_r>o{Z-pѽg^x}eF  BQ>f  X[F~'x5;^ݝss> Zv<FmJb`g܁ )KسARS%ف ))@@d`a#: b+66`C94$&+J&Nfޏ(`Q0 F( $2|15'N;URsI2SgQ0x0'8S`ٱQv=L ۉ^&* LF#՟W._@+9V 3HGt͛=ÉhQ0 F(`r͍`^R( 7hc. rWR( z}:\$8^?[T6 ~I `[?Hi$Oݱ 0 ECSJAݸ䷌M T㲟-lޙ}E˻q=Ril=F/ػca)а(JCН 3si~rm*߷Y?c>s@,سARS%ݽ 0"(XbR6B 1Z?)uU cw=%T$A]ƺ*8y4sZw՝lg'ѶY paq(X(di<ӺiwEH%mĘwaOο: 4ᩍ.s@,سARS%ܱ EQ +zX9!0WjxzQRuy`m vD@ #{gO|)$?㧛_I;`?Cv@@H^%ف ))@X  Lbc?&0 i:ᜭSmS=;6^K8Kri  BV}Qc4uw6AA>5$* jQD^]u]rW|J,$Ο2'8~~:.5M]]o(w &;w A $m/@@@F` ~H,ػca NW Wp}J.K<k8M4'|ǒ⩿wo߽'zw*֜=Kl3OzGi9z7Oہ )S%ف ))@@@F` 0\]+)+SjOKi`D#?pC8y [yW;ي~:^6UF>r螞a4)/^"I3?D~e>l">/lJ-~g(0@u.κxKzB7EСAL!S~;=y:۶J9N]7U?I {y3yu%G~}!#K+7'vعAR i{ف ))@? XO8EЙ`^;lcVip:w gkH0ԙ``[?HXg4Kػca^_}#;w A $m/@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,سARS%ف ))@@@F` ~H,ءC#@ ba05;ARj7OaسC&>s@,سARS%ܻ 0 ,b*Z{Tq@5^c0>a|:8g[Eඬ܏-\$BQ?\g6@ov)7)# !& Dk`px'}s7/v?(Z#.P0ȾUXcZ.吼);w A $m/@@@F` ~H,سARS%ف ))@@@F` ~H,DIENDB`affy/vignettes/affy.Rnw0000644000175200017520000010542014710217042016146 0ustar00biocbuildbiocbuild% -*- mode: noweb; noweb-default-code-mode: R-mode; -*- %\VignetteIndexEntry{1. Primer} %\VignetteKeywords{Preprocessing, Affymetrix} %\VignetteDepends{affy} %\VignettePackage{affy} %documentclass[12pt, a4paper]{article} \documentclass[12pt]{article} \usepackage{amsmath} \usepackage{hyperref} \usepackage[authoryear,round]{natbib} \textwidth=6.2in \textheight=8.5in %\parskip=.3cm \oddsidemargin=.1in \evensidemargin=.1in \headheight=-.3in \newcommand{\scscst}{\scriptscriptstyle} \newcommand{\scst}{\scriptstyle} \newcommand{\Rfunction}[1]{{\texttt{#1}}} \newcommand{\Robject}[1]{{\texttt{#1}}} \newcommand{\Rpackage}[1]{{\textit{#1}}} \author{Laurent Gautier, Rafael Irizarry, Leslie Cope, and Ben Bolstad} \begin{document} \title{Description of affy} \maketitle \tableofcontents \section{Introduction} The \Rpackage{affy} package is part of the BioConductor\footnote{\url{http://bioconductor.org/}} project. It is meant to be an extensible, interactive environment for data analysis and exploration of Affymetrix oligonucleotide array probe level data. The software utilities provided with the Affymetrix software suite summarizes the probe set intensities to form one {\it expression measure} for each gene. The expression measure is the data available for analysis. However, as pointed out by \cite{li:wong:2001a}, much can be learned from studying the individual probe intensities, or as we call them, the {\it probe level data}. This is why we developed this package. The package includes plotting functions for the probe level data useful for quality control, RNA degradation assessments, different probe level normalization and background correction procedures, and flexible functions that permit the user to convert probe level data to expression measures. The package includes utilities for computing expression measures similar to MAS 4.0's AvDiff \citep{affy4}, MAS 5.0's signal \citep{affy5}, DChip's MBEI \citep{li:wong:2001a}, and RMA \citep{iriz:etal:2003}. We assume that the reader is already familiar with oligonucleotide arrays and with the design of the Affymetrix GeneChip arrays. If you are not, we recommend the Appendix of the Affymetrix MAS manual \cite{affy4,affy5}. The following terms are used throughout this document: \begin{description} \item[probe] oligonucleotides of 25 base pair length used to probe RNA targets. \item[perfect match] probes intended to match perfectly the target sequence. \item[$PM$] intensity value read from the perfect matches. \item[mismatch] the probes having one base mismatch with the target sequence intended to account for non-specific binding. \item[$MM$] intensity value read from the mis-matches. \item[probe pair] a unit composed of a perfect match and its mismatch. \item[affyID] an identification for a probe set (which can be a gene or a fraction of a gene) represented on the array. \item[probe pair set] $PM$s and $MM$s related to a common {\it affyID}. \item[{\it CEL} files] contain measured intensities and locations for an array that has been hybridized. \item[{\it CDF} file] contain the information relating probe pair sets to locations on the array. \end{description} Section \ref{whatsnew} describes the main differences between version 1.5 and this version (1.6). Section \ref{sec:get.started} describes a quick way of getting started and getting expression measures. Section \ref{qc} describes some quality control tools. Section \ref{s1.4} describes normalization routines. Section \ref{classes} describes the different classes in the package. \ref{sec:probesloc} describes our strategy to map probe locations to probe set membership. Section \ref{configure.options} describes how to change the package's default options. Section \ref{whatwasnew} describes earlier changes. %%%make sure to change this when we get a publication about version 2. {\bf Note:} If you use this package please cite \cite{gaut:cope:bols:iriz:2003} and/or \cite{iriz:gaut:cope:2003}. \section{Changes for affy in BioC 1.8 release} \label{whatsnew} There were relatively few changes. \begin{itemize} \item MAplot now accepts the argument \Rfunction{plot.method} which can be used to call smoothScatter. \item \Rfunction{normalize.quantiles.robust} has had minor changes. \item \Rfunction{ReadAffy} can optionally return the SD values stored in the cel file. \item The C parsing code has been moved to the \Rpackage{affyio} package, which is now a dependency of the affy package. This change should be transparent to users as \Rpackage{affyio} will be automatically loaded when affy is loaded. \item Added a cdfname argument to \Rfunction{justRMA} and \Rfunction{ReadAffy} to allow for the use of alternative cdf packages. \end{itemize} \section{Getting Started: From probe level data to expression values} \label{sec:get.started} The first thing you need to do is {\bf load the package}. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} <>= library(affy) @ This release of the \Rpackage{affy} package will automatically download the appropriate cdf environment when you require it. However, if you wish you may download and install the cdf environment you need from \url{http://bioconductor.org/help/bioc-views/release/data/annotation/} manually. If there is no cdf environment currently built for your particular chip and you have access to the CDF file then you may use the \Rpackage{makecdfenv} package to create one yourself. To make the cdf packaes, Microsoft Windows users will need to use the tools described in \url{http://www.murdoch-sutherland.com/Rtools/}. \subsection{Quick start} If all you want is to go from probe level data ({\it Cel} files) to expression measures here are some quick ways. If you want is RMA, the quickest way of reading in data and getting expression measures is the following: \begin{enumerate} \item Create a directory, move all the relevant {\it CEL} files to that directory \item If using linux/unix, start R in that directory. \item If using the Rgui for Microsoft Windows make sure your working directory contains the {\it Cel} files (use ``File -> Change Dir'' menu item). \item Load the library. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} \item Read in the data and create an expression, using RMA for example. \begin{Sinput} R> Data <- ReadAffy() ##read data in working directory R> eset <- rma(Data) \end{Sinput} \end{enumerate} Depending on the size of your dataset and on the memory available to your system, you might experience errors like `Cannot allocate vector \ldots'. An obvious option is to increase the memory available to your R process (by adding memory and/or closing external applications\footnote{UNIX-like systems users might also want to check {\it ulimit} and/or compile {\bf R} and the package for 64 bits when possible.}. An another option is to use the function \Rfunction{justRMA}. \begin{Sinput} R> eset <- justRMA() \end{Sinput} This reads the data and performs the `RMA' way to preprocess them at the {\it C} level. One does not need to call \verb+ReadAffy+, probe level data is never stored in an AffyBatch. \verb+rma+ continues to be the recommended function for computing RMA. The \Rfunction{rma} function was written in C for speed and efficiency. It uses the expression measure described in \cite{iriz:etal:2003}. For other popular methods use \Rfunction{expresso} instead of \Rfunction{rma} (see Section \ref{expresso}). For example for our version of MAS 5.0 signal uses expresso (see code). To get mas 5.0 you can use \begin{Sinput} R> eset <- mas5(Data) \end{Sinput} which will also normalize the expression values. The normalization can be turned off through the \verb+normalize+ argument. In all the above examples, the variable \Robject{eset} is an object of class \Robject{ExpressionSet} described in the Biobase vignette. Many of the packages in BioConductor work on objects of this class. See the \Rpackage{genefilter} and \Rpackage{geneplotter} packages for some examples. If you want to use some other analysis package, you can write out the expression values to file using the following command: \begin{Sinput} R> write.exprs(eset, file="mydata.txt") \end{Sinput} \subsection{Reading CEL file information} The function \Rfunction{ReadAffy} is quite flexible. It lets you specify the filenames, phenotype, and MIAME information. You can enter them by reading files (see the help file) or widgets (you need to have the tkWidgets package installed and working). \begin{Sinput} R> Data <- ReadAffy(widget=TRUE) ##read data in working directory \end{Sinput} This function call will pop-up a file browser widget, see Figure \ref{fig:widget.filechooser}, that provides an easy way of choosing cel files. \newpage \begin{figure}[htbp] \begin{center} \includegraphics{widgetfilechooser} \caption{\label{fig:widget.filechooser}Graphical display for selecting {\it CEL} files. This widget is part of the {\it tkWidgets} package. (function written by Jianhua (John) Zhang). } \end{center} \end{figure} Next, a widget (not shown) permits the user to enter the \verb+phenoData+. %%See Figure \ref{fig:widget.pd}. %% \begin{figure}[htbp] %% \begin{center} %% \begin{tabular}{c} %% \includegraphics{numcovariates}\\ %% \includegraphics{namecovariates}\\ %% \includegraphics{assigncovariates} %% \end{tabular} %% \caption{\label{fig:widget.pd}Graphical display for entering phenoData %% This widget is part %% of the {\it tkWidgets} package.} %% % (functions written by Majnu John.} %% \end{center} %% \end{figure} Finally the a widget is presented for the user to enter MIAME information. %%Seen in Figure \ref{fig:widget.tkMIAME}. %% \begin{figure}[htbp] %% \begin{center} %% \includegraphics[width=0.5\textwidth]{widgettkMIAME} %% \caption{\label{fig:widget.tkMIAME}Graphical display for entering {\it %% MIAME} informations. This widget is part of the {\it tkWidgets} %% package.} %% % (function written by Majnu John).} %% \end{center} %% \end{figure} Notice that it is not necessary to use widgets to enter this information. Please read the help file for more information on how to read it from flat files or to enter it programmatically. The function \Rfunction{ReadAffy} is a wrapper for the functions \Rfunction{read.affybatch}, \Rfunction{tkSampleNames}, \Rfunction{read.AnnotatedDataFrame}, and \Rfunction{read.MIAME}. The function \Rfunction{read.affybatch} has some nice feature that make it quite flexible. For example, the \verb+compression+ argument permit the user to read compressed {\it CEL} files. The argument {\it compress} set to {\it TRUE} will inform the readers that your files are compressed and let you read them while they remain compressed. The compression formats {\it zip} and {\it gzip} are known to be recognized. A comprehensive description of all these options is found in the help file: \begin{Sinput} R> ?read.affybatch R> ?read.AnnotatedDataFrame R> ?read.MIAME \end{Sinput} \subsection{Expression measures} The most common operation is certainly to convert probe level data to expression values. Typically this is achieved through the following sequence: \begin{enumerate} \item reading in probe level data. \item background correction. \item normalization. \item probe specific background correction, e.g. subtracting $MM$. \item summarizing the probe set values into one expression measure and, in some cases, a standard error for this summary. \end{enumerate} We detail what we believe is a good way to proceed below. As mentioned the function \Rfunction{expresso} provides many options. For example, \begin{Sinput} R> eset <- expresso(Dilution, normalize.method="qspline", bgcorrect.method="rma",pmcorrect.method="pmonly", summary.method="liwong") \end{Sinput} This will store expression values, in the object \Robject{eset}, as an object of class \Robject{ExpressionSet} (see the \Rpackage{Biobase} package). You can either use R and the BioConductor packages to analyze your expression data or if you rather use another package you can write it out to a tab delimited file like this \begin{Sinput} R> write.exprs(eset, file="mydata.txt") \end{Sinput} In the \verb+mydata.txt+ file, row will represent genes and columns will represent samples/arrays. The first row will be a header describing the columns. The first column will have the {\it affyID}s. The \Rfunction{write.exprs} function is quite flexible on what it writes (see the help file). \subsubsection{expresso} \label{expresso} The function \Rfunction{expresso} performs the steps background correction, normalization, probe specific correction, and summary value computation. We now show this using an \Robject{AffyBatch} included in the package for examples. The command \verb+data(Dilution)+ is used to load these data. Important parameters for the expresso function are: \begin{description} \item[bgcorrect.method]. The background correction method to use. The available methods are <<>>= bgcorrect.methods() @ \item[normalize.method]. The normalization method to use. The available methods can be queried by using \verb+normalize.methods+. <<>>= library(affydata) data(Dilution) ##data included in the package for examples normalize.methods(Dilution) @ \item[pmcorrect.method] The method for probe specific correction. The available methods are <<>>= pmcorrect.methods() @ \item[summary.method]. The summary method to use. The available methods are <<>>= express.summary.stat.methods() @ Here we use \Rfunction{mas} to refer to the methods described in the Affymetrix manual version 5.0. \item[widget] Making the \verb+widget+ argument \verb+TRUE+, will let you select missing parameters (like the normalization method, the background correction method or the summary method). Figure \ref{fig:expressochooser} shows the widget for the selection of preprocessing methods for each of the steps. \begin{Sinput} R> expresso(Dilution, widget=TRUE) \end{Sinput} \begin{figure}[htbp] \begin{center} \includegraphics[width=0.5\textwidth]{EWSnap} \caption{\label{fig:expressochooser}Graphical display for selecting expresso methods.} \end{center} \end{figure} \end{description} There is a separate vignette {\bf affy: Built-in Processing Methods} which explains in more detail what each of the preprocessing options does. \subsubsection{MAS 5.0} To obtain expression values that correspond to those from MAS 5.0, use \Rfunction{mas5}, which wraps \Rfunction{expresso} and \Rfunction{affy.scalevalue.exprSet}. <<>>= eset <- mas5(Dilution) @ To obtain MAS 5.0 presence calls you can use the \verb+mas5calls+ method. <<>>= Calls <- mas5calls(Dilution) @ This returns an \verb+ExpressionSet+ object containing P/M/A calls and their associated Wilcoxon p-values. \subsubsection{Li and Wong's MBEI (dchip)} To obtain our version of Li and Wong's MBEI one can use \begin{Sinput} R> eset <- expresso(Dilution, normalize.method="invariantset", bg.correct=FALSE, pmcorrect.method="pmonly",summary.method="liwong") \end{Sinput} This gives the current $PM$-only default. The reduced model (previous default) can be obtained using \verb+pmcorrect.method="subtractmm"+. \subsubsection{C implementation of RMA} One of the quickest ways to compute expression using the \Rpackage{affy} package is to use the \Rfunction{rma} function. We have found that this method allows a user to compute the RMA expression measure in a matter of minutes for datasets that may have taken hours in previous versions of \Rpackage{affy}. The function serves as an interface to a hard coded C implementation of the RMA method \citep{iriz:etal:2003}. Generally, the following would be sufficient to compute RMA expression measures: <<>>= eset <- rma(Dilution) @ Currently the \Rfunction{rma} function implements RMA in the following manner \begin{enumerate} \item Probe specific correction of the PM probes using a model based on observed intensity being the sum of signal and noise \item Normalization of corrected PM probes using quantile normalization \citep{bols:etal:2003} \item Calculation of Expression measure using median polish. \end{enumerate} The \Rfunction{rma} function is likely to be improved and extended in the future as the RMA method is fine-tuned. \newpage \section{Quality Control through Data Exploration} \label{qc} For the users convenience we have included the \verb+Dilution+ sample data set: <<>>= Dilution @ This will create the \verb+Dilution+ object of class \Robject{AffyBatch}. \Rfunction{print} (or \Rfunction{show}) will display summary information. These objects represent data from one experiment. The \Robject{AffyBatch} class combines the information of various {\it CEL} files with a common {\it CDF} file. This class is designed to keep information of one experiment. The probe level data is contained in this object. The data in \verb+Dilution+ is a small sample of probe sets from 2 sets of duplicate arrays hybridized with different concentrations of the same RNA. This information is part of the \Robject{AffyBatch} and can be accessed with the \verb+phenoData+ and \verb+pData+ methods: <<>>= phenoData(Dilution) pData(Dilution) @ Several of the functions for plotting summarized probe level data are useful for diagnosing problems with the data. The plotting functions \Rfunction{boxplot} and \Rfunction{hist} have methods for \Robject{AffyBatch} objects. Each of these functions presents side-by-side graphical summaries of intensity information from each array. Important differences in the distribution of intensities are often evident in these plots. The function \Rfunction{MAplot} (applied, for example, to \verb+pm(Dilution)+), offers pairwise graphical comparison of intensity data. The option \verb+pairs+ permits you to chose between all pairwise comparisons (when \verb+TRUE+) or compared to a reference array (the default). These plots can be particularly useful in diagnosing problems in replicate sets of arrays. The function argument \verb+plot.method+ can be used to create a MAplot using a smoothScatter, rather than the default method which is to draw every point. \begin{figure}[htbp] \begin{center} <>= data(Dilution) MAplot(Dilution,pairs=TRUE,plot.method="smoothScatter") @ \end{center} \caption{Pairwise MA plots} \end{figure} \subsection{Accessing $PM$ and $MM$ Data} The $PM$ and $MM$ intensities and corresponding {\it affyID} can be accessed with the \Rfunction{pm}, \Rfunction{mm}, and \Rfunction{probeNames} methods. These will be matrices with rows representing probe pairs and columns representing arrays. The gene name associated with the probe pair in row $i$ can be found in the $i$th entry of the vector returned by \Rfunction{probeNames}. <<>>= Index <- c(1,2,3,100,1000,2000) ##6 arbitrary probe positions pm(Dilution)[Index,] mm(Dilution)[Index,] probeNames(Dilution)[Index] @ \verb+Index+ contains six arbitrary probe positions. Notice that the column names of $PM$ and $MM$ matrices are the sample names and the row names are the {\it affyID}, e.g. \verb+1001_at+ and \verb+1000_at+ together with the probe number (related to position in the target sequence). <<>>= sampleNames(Dilution) @ {\bf Quick example:} To see what percentage of the $MM$ are larger than the $PM$ simply type <<>>= mean(mm(Dilution)>pm(Dilution)) @ The \Rfunction{pm} and \Rfunction{mm} functions can be used to extract specific probe set intensities. <<>>= gn <- geneNames(Dilution) pm(Dilution, gn[100]) @ The method \Rfunction{geneNames} extracts the unique {\it affyID}s. Also notice that the 100th probe set is different from the 100th probe! The 100th probe is not part of the the 100th probe set. The methods \Rfunction{boxplot}, \Rfunction{hist}, and \Rfunction{image} are useful for quality control. Figure \ref{f3} shows kernel density estimates (rather than histograms) of $PM$ intensities for the 1st and 2nd array of the \verb+Dilution+ also included in the package. \subsection{Histograms, Images, and Boxplots} \begin{figure}[htbp] \begin{center} <>= hist(Dilution[,1:2]) ##PM histogram of arrays 1 and 2 @ \caption{\label{f3} Histogram of $PM$ intensities for 1st and 2nd array} \end{center} \end{figure} As seen in the previous example, the sub-setting method \verb+[+ can be used to extract specific arrays. {\bf NOTE: Sub-setting is different in this version. One can no longer subset by gene. We can only define subsets by one dimension: the columns, i.e. the arrays. Because the \verb+Cel+ class is no longer available \verb+[[+ is no longer available.} %]] The method \verb+image()+ can be used to detect spatial artifacts. By default we look at log transformed intensities. This can be changed through the \verb+transfo+ argument. <>= par(mfrow=c(2,2)) image(Dilution) @ \begin{figure}[htbp] \begin{center} \includegraphics{image} \caption{\label{f1} Image of the log intensities.} \end{center} \end{figure} These images are quite useful for quality control. We recommend examining these images as a first step in data exploration. The method \Rfunction{boxplot} can be used to show $PM$, $MM$ or both intensities. \begin{figure}[htbp] \begin{center} <>= par(mfrow=c(1,1)) boxplot(Dilution, col=c(2,3,4)) @ \caption{\label{f4}Boxplot of arrays in Dilution data.} \end{center} \end{figure} As discussed in the next section this plot shows that we need to normalize these arrays. \subsection{RNA degradation plots} The functions \Rfunction{AffyRNAdeg}, \Rfunction{summaryAffyRNAdeg}, and \Rfunction{plotAffyRNAdeg} aid in assessment of RNA quality. Individual probes in a probeset are ordered by location relative to the $5'$ end of the targeted RNA molecule.\cite{affy4} Since RNA degradation typically starts from the $5'$ end of the molecule, we would expect probe intensities to be systematically lowered at that end of a probeset when compared to the $3'$ end. On each chip, probe intensities are averaged by location in probeset, with the average taken over probesets. The function \Rfunction{plotAffyRNAdeg} produces a side-by-side plots of these means, making it easy to notice any $5'$ to $3'$ trend. The function \Rfunction{summaryAffyRNAdeg} produces a single summary statistic for each array in the batch, offering a convenient measure of the severity of degradation and significance level. For an example <<>>= deg <- AffyRNAdeg(Dilution) names(deg) @ does the degradation analysis and returns a list with various components. A summary can be obtained using <<>>= summaryAffyRNAdeg(deg) @ Finally a plot can be created using \Rfunction{plotAffyRNAdeg}, see Figure \ref{f4.3}. \begin{figure}[htbp] \begin{center} <>= plotAffyRNAdeg(deg) @ \caption{\label{f4.3} Side-by-side plot produced by plotAffyRNAdeg.} \end{center} \end{figure} \newpage \section{Normalization} \label{s1.4} Various researchers have pointed out the need for normalization of Affymetrix arrays. See for example \cite{bols:etal:2003}. The method \verb+normalize+ lets one normalize at the probe level <<>>= Dilution.normalized <- normalize(Dilution) @ For an extended example on normalization please refer to the vignette in the affydata package. \section{Classes} \label{classes} \verb+AffyBatch+ is the main class in this package. There are three other auxiliary classes that we also describe in this Section. \subsection{AffyBatch} The AffyBatch class has slots to keep all the probe level information for a batch of {\it Cel} files, which usually represent an experiment. It also stores phenotypic and MIAME information as does the \verb+ExpressionSet+ class in the Biobase package (the base package for BioConductor). In fact, \verb+AffyBatch+ extends \verb+ExpressionSet+. The expression matrix in \verb+AffyBatch+ has columns representing the intensities read from the different arrays. The rows represent the {\it cel} intensities for all position on the array. The cel intensity with physical coordinates\footnote{Note that in the {\it .CEL} files the indexing starts at zero while it starts at 1 in the package (as indexing starts at 1 in {\bf R}).} $(x,y)$ will be in row \[i = x + \mathtt{nrow} \times (y - 1)\]. The \verb+ncol+ and \verb+nrow+ slots contain the physical rows of the array. Notice that this is different from the dimensions of the expression matrix. The number of row of the expression matrix is equal to \verb+ncol+$\times$\verb+nrow+. We advice the use of the functions \verb+xy2indices+ and \verb+indices2xy+ to shuttle from X/Y coordinates to indices. For compatibility with previous versions the accessor method \verb+intensity+ exists for obtaining the expression matrix. The \verb+cdfName+ slot contains the necessary information for the package to find the locations of the probes for each probe set. See Section \ref{sec:probesloc} for more on this. \subsection{ProbeSet} The \verb+ProbeSet+ class holds the information of all the probes related to an {\it affyID}. The components are \verb+pm+ and \verb+mm+. The method \verb+probeset+ extracts probe sets from \verb+AffyBatch+ objects. It takes as arguments an \verb+AffyBatch+ object and a vector of {\it affyIDs} and returns a list of objects of class \verb+ProbeSet+ <<>>= gn <- featureNames(Dilution) ps <- probeset(Dilution, gn[1:2]) #this is what i should be using: ps show(ps[[1]]) @ The \verb+pm+ and \verb+mm+ methods can be used to extract these matrices (see below). This function is general in the way it defines a probe set. The default is to use the definition of a probe set given by Affymetrix in the CDF file. However, the user can define arbitrary probe sets. The argument \verb+locations+ lets the user decide the row numbers in the \verb+intensity+ that define a probe set. For example, if we are interested in redefining the \verb+AB000114_at+ and \verb+AB000115_at+ probe sets, we could do the following: First, define the locations of the $PM$ and $MM$ on the array of the \verb+1000_at+ and \verb+1001_at+ probe sets <<>>= mylocation <- list("1000_at"=cbind(pm=c(1,2,3),mm=c(4,5,6)), "1001_at"=cbind(pm=c(4,5,6),mm=c(1,2,3))) @ The first column of the matrix defines the location of the $PM$s and the second column the $MM$s. Now we are ready to extract the \verb+ProbSet+s using the \verb+probeset+ function: <<>>= ps <- probeset(Dilution, genenames=c("1000_at","1001_at"), locations=mylocation) @ Now, \verb+ps+ is list of \verb+ProbeSet+s. We can see the $PM$s and $MM$s of each component using the \verb+pm+ and \verb+mm+ accessor methods. <<>>= pm(ps[[1]]) mm(ps[[1]]) pm(ps[[2]]) mm(ps[[2]]) @ This can be useful in situations where the user wants to determine if leaving out certain probes improves performance at the expression level. It can also be useful to combine probes from different human chips, for example by considering only probes common to both arrays. Users can also define their own environment for probe set location mapping. More on this in Section \ref{sec:probesloc}. An example of a \verb+ProbeSet+ is included in the package. A spike-in data set is included in the package in the form of a list of \verb+ProbeSet+s. The help file describes the data set. Figure \ref{f5.3} uses this data set to demonstrate that the $MM$ also detect transcript signal. \begin{figure}[htbp] \begin{center} <>= data(SpikeIn) ##SpikeIn is a ProbeSets pms <- pm(SpikeIn) mms <- mm(SpikeIn) ##pms follow concentration par(mfrow=c(1,2)) concentrations <- matrix(as.numeric(sampleNames(SpikeIn)),20,12,byrow=TRUE) matplot(concentrations,pms,log="xy",main="PM",ylim=c(30,20000)) lines(concentrations[1,],apply(pms,2,mean),lwd=3) ##so do mms matplot(concentrations,mms,log="xy",main="MM",ylim=c(30,20000)) lines(concentrations[1,],apply(mms,2,mean),lwd=3) @ \caption{\label{f5.3}PM and MM intensities plotted against SpikeIn concentration} \end{center} \end{figure} \section{Location to ProbeSet Mapping} \label{sec:probesloc} On Affymetrix GeneChip arrays, several probes are used to represent genes in the form of probe sets. From a {\it CEL} file we get for each physical location, or cel, (defined by $x$ and $y$ coordinates) an intensity. The {\it CEL} file also contains the name of the {\it CDF} file needed for the location-probe-set mapping. The {\it CDF} files store the probe set related to each location on the array. The computation of a summary expression values from the probe intensities requires a fast way to map an {\it affyid} to corresponding probes. We store this mapping information in {\bf R} environments\footnote{Please refer to the {\bf R} documentation to know more about environments.}. They only contain a part of the information that can be found in the {\it CDF} files. The {\it cdfenvs} are sufficient to perform the numerical processing methods included in the package. For each {\it CDF} file there is package, available from \url{http://bioconductor.org/help/bioc-views/release/data/annotation/}, that contains exactly one of these environments. The {\it cdfenvs} we store the $x$ and $y$ coordinates as one number (see above). In instances of {\it AffyBatch}, the {\it cdfName} slot gives the name of the appropriate {\it CDF} file for arrays represented in the \verb+intensity+ slot. The functions \verb+read.celfile+, \verb+read.affybatch+, and \verb+ReadAffy+ extract the {\it CDF} filename from the {\it CEL} files being read. Each {\it CDF} file corresponds to exactly one environment. The function \verb+cleancdfname+ converts the Affymetrix given {\it CDF} name to a BioConductor environment and annotation name. Here are two examples: These give environment names: <<>>= cat("HG_U95Av2 is",cleancdfname("HG_U95Av2"),"\n") cat("HG-133A is",cleancdfname("HG-133A"),"\n") @ This gives annotation name: <<>>= cat("HG_U95Av2 is",cleancdfname("HG_U95Av2",addcdf=FALSE),"\n") @ An environment representing the corner of an Hu6800 array is available with the package. In the following, we load the environment, look at the names for the first 5 objects defined in the environment, and finally look at the first object in the environment: <<>>= data(cdfenv.example) ls(cdfenv.example)[1:5] get(ls(cdfenv.example)[1],cdfenv.example) @ The package needs to know what locations correspond to which probe sets. The \verb+cdfName+ slot contains the necessary information to find the environment with this location information. The method \verb+getCdfInfo+ takes as an argument an \verb+AffyBatch+ and returns the necessary environment. If \verb+x+ is an \verb+AffyBatch+, this function will look for an environment with name \verb+cleancdfname(x@cdfName)+. <<>>= print(Dilution@cdfName) myenv <- getCdfInfo(Dilution) ls(myenv)[1:5] @ By default we search for the environment first in the global environment, then in a package named \verb+cleancdfname(x@cdfName)+. Various methods exist to obtain locations of probes as demonstrated in the following examples: <<>>= Index <- pmindex(Dilution) names(Index)[1:2] Index[1:2] @ \verb+pmindex+ returns a list with probe set names as names and locations in the components. We can also get specific probe sets: <<>>= pmindex(Dilution, genenames=c("1000_at","1001_at")) @ The locations are ordered from 5' to 3' on the target transcript. The function \verb+mmindex+ performs in a similar way: <<>>= mmindex(Dilution, genenames=c("1000_at","1001_at")) @ They both use the method \verb+indexProbes+ <<>>= indexProbes(Dilution, which="pm")[1] indexProbes(Dilution, which="mm")[1] indexProbes(Dilution, which="both")[1] @ The \verb+which="both"+ options returns the location of the $PM$s followed by the $MM$s. \section{Configuring the package options} \label{configure.options} Package-wide options can be configured, as shown below through examples. \begin{itemize} \item Getting the names for the options: <<>>= opt <- getOption("BioC") affy.opt <- opt$affy print(names(affy.opt)) @ %$ \item Default processing methods: <<>>= opt <- getOption("BioC") affy.opt <- opt$affy affy.opt$normalize.method <- "constant" opt$affy <- affy.opt options(BioC=opt) @ %$ \item Compression of files: if you are always compressing your CEL files, you might find annoying to specify it each time you call a reading function. It can be specified once for all in the options. <<>>= opt <- getOption("BioC") affy.opt <- opt$affy affy.opt$compress.cel <- TRUE opt$affy <- affy.opt options(BioC=opt) @ %$ \item Priority rule for the use of a cdf environment: The option {\it probesloc} is a list. Each element of the list is itself a list with two elements {\it what} and {\it where}. When looking for the information related to the locations of the probes on the array, the elements in the list will be looked at sequentially. The first one leading to the information is used (an error message is returned if none permits to find the information). The element {\it what} can be one of {\it package}, {\it environment}. \end{itemize} \section{Where can I get more information?} \label{moreinfo} There are several other vignettes addressing more specialised topics related to the {\tt affy} package. \begin{itemize} \item {\bf affy: Custom Processing Methods (HowTo)}: A description of how to use custom preprocessing methods with the package. This document gives examples of how you might write your own preprocessing method and use it with the package. \item {\bf affy: Built-in Processing Methods}: A document giving fuller descriptions of each of the preprocessing methods that are available within the {\tt affy} package. \item {\bf affy: Import Methods (HowTo)}: A discussion of the data structures used and how you might import non standard data into the package. \item {\bf affy: Loading Affymetrix Data (HowTo)}: A quick guide to loading Affymetrix data into R. \item {\bf affy: Automatic downloading of cdfenvs (HowTo)}: How you can configure the automatic downloading of the appropriate {\it cdfenv} for your analysis. \end{itemize} \appendix \section{Previous Release Notes} \subsection{Changes in versions 1.6.x} There were very few changes. \begin{itemize} \item The function \verb+MAplot+ has been added. It works on instances of AffyBatch. You can decide if you want to make all pairwise MA plots or compare to a reference array using the pairs argument. \item Minor bugs fixed in the parsers. \item The path of celfiles is now removed by ReadAffy. \end{itemize} \subsection{Changes in versions 1.5.x} There are some minor differences in what you can do but little functionality has disappeared. Memory efficiency and speed have improved. \begin{itemize} \item The widgets used by ReadAffy have changed. \item The path of celfiles is now removed by ReadAffy. \end{itemize} \subsection{Changes in versions 1.4.x} There are some minor differences in what you can do but little functionality has disappeared. Memory efficiency and speed have improved. \begin{itemize} \item For instances of \verb+AffyBatch+ the subsetting has changed. For consistency with \verb+exprSets+ one can only subset by the second dimension. So to obtain the first array, \verb+abatch[1]+ and \verb+abatch[1,]+ will give warnings (errors in the next release). The correct code is \verb+abatch[,1]+. \item mas5calls is now faster and reproduces Affymetrix's official version much better. \item If you use \verb+pm+ and \verb+mm+ to get the entire set of probes, e.g. by typing \verb+pm(abatch)+ then the method will be, on average, about 2-3 times faster than in version 1.3. \end{itemize} \bibliographystyle{plainnat} \bibliography{affy} \end{document} affy/vignettes/affy.bib0000644000175200017520000002602314710217042016135 0ustar00biocbuildbiocbuild@InBook{iriz:gaut:cope:2003, author = {Rafael A. Irizarry and Laurent Gautier and Leslie M. Cope}, editor = {Parmigiani, G. and Garrett, E.S. and Irizarry, R.A. and Zeger, S.L.}, title = {The Analysis of Gene Expression Data: Nethods and Software}, chapter = {4}, publisher = {Spriger Verlag}, year = {2003}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTtype = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTpages = {}, OPTnote = {}, OPTannote = {} } @InBook{dudo:2002, author = {Sandrine Dudoit}, editor = {Parmigiani, G. and Garrett, E.S. and Irizarry, R.A. and Zeger, S.L.}, title = {The Analysis of Gene Expression Data: Nethods and Software}, chapter = {3}, publisher = {Spriger Verlag}, year = {2002}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTtype = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTpages = {}, OPTnote = {}, OPTannote = {} } @InBook{gent:care:2002, author = {Robert Gentleman and Vince Carey}, editor = {Parmigiani, G. and Garrett, E.S. and Irizarry, R.A. and Zeger, S.L.}, title = {The Analysis of Gene Expression Data: Nethods and Software }, chapter = {2}, publisher = {Springer Verlag}, year = {2002}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTtype = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTpages = {}, OPTnote = {}, OPTannote = {} } @article{ihak:gent:1996, author = {Ross Ihaka and Robert Gentleman}, title = {{R}: {A} Language for Data Analysis and Graphics}, journal = {Journal of Computational and Graphical Statistics}, year = 1996, volume = 5, number = 3, pages = {299--314} } @Book{cham:1998, author = {John M. Chambers}, title = {Programming with Data: A guide to the {S} language}, publisher = {Springer}, year = {1998}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, annote = {S, Programming} } @Article{iriz:etal:2003, author = {Rafael A. Irizarry and Bridget Hobbs and Francois Collin and Yasmin D. Beazer-Barclay and Kristen J. Antonellis and Uwe Scherf and Terence P. Speed}, title = {Exploration, Normalization, and Summaries of High Density Oligonucleotide Array Probe Level Data}, journal = {Biostatistics}, year = {2003}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTpages = {}, OPTmonth = {}, note = {To appear}, OPTannote = {} } @Manual{affy4, title = {Affymetrix Microarray Suite User Guide}, author = {Affymetrix}, year = {1999}, organization = {Affymetrix}, address = {Santa Clara, CA}, edition = {version 4}, } @Manual{affy5, title = {Affymetrix Microarray Suite User Guide}, author = {Affymetrix}, year = {2001}, organization = {Affymetrix}, address = {Santa Clara, CA}, edition = {version 5}, } @Article{hill:etal:2000, author = {A.A. Hill and C.P Hunter and B.T. Tsung and G. Tucker-Kellogg and E.L. Brown}, title = {Genomic Analysis of Gene Expression in C. elegans}, journal = {Science}, year = {2000}, OPTkey = {}, volume = {290}, OPTnumber = {}, pages = {809--812}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{hill:etal:2001, author = {Andre A. Hill and Eugene L. Brown and Maryann Z. Whitley and Greg Tucker-Kellogg and Craig P. Hunter and Donna K. Slonim}, title = {Evaluation of normalization procedures for oligonucleotide array data based on spiked c{RNA} controls}, journal = {Genomebiology}, year = {2001}, OPTkey = {}, volume = {2}, pages = {1--13}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{baug:etal:2001, author = {L.R. Baugh and A.A. Hill and E.L. Brown and Craig P. Hunter}, title = {Quantitative analysis of m{RNA} amplification by {\it in vitro} transcription}, journal = {Nucleic Acids Research}, year = {2001}, volume = {29}, OPTnumber = {}, pages = {1--9}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @TechReport{affy:tech:2001, author = {Affymetrix}, title = {New Statistical Algorithms for Monitoring Gene Expression on $\mbox{GeneChip}^{\mbox{\textregistered}}$ Probe Arrays}, institution = {Affymetrix}, year = {2001}, } @techreport{affy:tech:2002, key = {Affymetrix (2002)}, author = {Affymetrix}, title = {Statistical Algorithms Description Document}, organization = {Affymetrix}, institution = {Affymetrix}, year = 2002 } @InProceedings{affytalk:2001, title = {Estimating Signal with Next Generation {A}ffymetrix Software}, author = {Earl Hubbell}, booktitle = {Gene Logic Workshop on Low Level Analysis of Affymetrix $\mbox{GeneChip}^{\mbox{\textregistered}}$ data}, year = {2001}, note = {{\small \tt http://www.stat.berkeley.edu/users/terry/zarray/Affy/GL\_Workshop/genelogic2001.html}} } @InProceedings{fang:li:wong:2001, title = {Model-based Saturation Handling}, author = {Xuemin Fang and Cheng Li and Wing Hung Wong}, booktitle = {Genelogic Workshop on Low Level Analysis of Affymetrix $\mbox{GeneChip}^{\mbox{\textregistered}}$ data}, year = {2001}, note = {{\small \tt http://www.stat.berkeley.edu/users/terry/zarray/Affy/GL\_Workshop/genelogic2001.html}} } @InProceedings{hold:etal:2001, author = {Daniel Holder and Richard F. Raubertas and V. Bill Pikounis and Vladimir Svetnik and Keith Soper}, title = {Statistical analysis of high density oligonucleotide arrays: a {SAFER} approach}, year = {2001}, booktitle = {Proceedings of the ASA Annual Meeting, Atlanta, GA 2001}, OPTcrossref = {}, OPTkey = {}, OPTpages = {}, OPTyear = {}, OPTeditor = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTmonth = {}, OPTorganization = {}, OPTpublisher = {}, OPTnote = {}, OPTannote = {} } @Article{astr:2001, author = {Magnus {\AA}strand}, title = {Normalizing oligonucleotide arrays}, journal = {Unpublished manuscript}, year = {2001}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTpages = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{bols:etal:2003, author = {B.M. Bolstad and R.A. Irizarry and M. {\AA}strand and T.P. Speed}, title = {A comparison of normalization methods for high density oligonucleotide array data based on variance and bias}, journal = {Bioinformatics}, Volume={19}, Number={2}, Pages={185--193}, Month={Jan}, year={2003}, } @Article{bols:2001, author = {Ben Bolstad}, title = {Probe level quantile normalization of high density oligonucleotide arrays}, journal = {Unpublished manuscript}, year = {2001}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTpages = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {}, } @Article{dudo:etal:2001, author = {S. Dudoit and Y. H. Yang and M. J. Callow and T. P. Speed}, title = {Statistical methods for identifying genes with differential expression in replicated c{DNA} microarray experiments}, journal = {Statistica Sinica}, year = {2001}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTpages = {}, OPTmonth = {}, note = {Accepted}, OPTannote = {} } @Article{li:wong:2001a, Author = {Li, C. and Wong, W.H.}, Title = {Model-based analysis of oligonucleotide arrays: Expression index computation and outlier detection}, Journal = {Proceedings of the National Academy of Science U S A}, Year = 2001, Volume = {98}, Pages = {31--36}, } @Article{li:wong:2001b, Author = {Li, C. and Wong, W.H.}, Title = {Model-based analysis of oligonucleotide arrays: model validation, design issues and standard error application}, Journal = {Genome Biology}, Year = 2001, Volume = {2}, Pages = {1--11} } @Article{lock:etal:1996, Author = {David J. Lockhart and Helin Dong and Michael C. Byrne and Maximillian T. Follettie and Michael V. Gallo and Mark S. Chee and Michael Mittmann and Chunwei Wang and Michiko Kobayashi and Heidi Horton and Eugene L. Brown}, Title = {Expression Monitoring by hybridization to high-density oligonucleotide arrays}, Journal = {Nature Biotechnology}, Year = 1996, Volume = {14}, Pages = {1675--1680} } @InProceedings{hart:etal:2001, author = {Alexander J. Hartemink and David K. Gifford and Tommi S. Jaakola and Richard A. Young}, title = {Maximum likelihood estimation of optimal scaling factors for expression array normalization}, booktitle = {SPIE BiOS}, year = 2001, month = {January}, annote = {affymetrix, high density oligonucleotide} } @Article{efro:etal:2001, Author = {Bradley Efron and Robert Tibshirani and Virginia Goss and Gil Chu}, Title = {Microarrays and their uses in comparative experiments}, Journal = {Tech Report}, Year = 2001, Volume = {1}, Pages = {1--38} } @Article{naef:etal:2001, Author = {F\'{e}lix Naef and Daniel A. Lim and Nila Patil and Marcelo O. Magnasco}, Title = {From features to expression: High density oligonucleotide array analysis revisited}, Journal = {Tech Report}, Year = 2001, Volume = {1}, Pages = {1--9} } @Article{astr:2003, author = {Magnus {\AA}strand}, title = {Contrast Normalization of Oligonucleotide Arrays}, journal = {Journal of Computational Biology}, year = {2003}, volume = {10}, number={1}, pages={95--102} } @article{Dudoit:2002, author = {Dudoit, S. and Yang, Y. H. and Callow, M. J. and Speed, T. P.}, title = {Statistical methods for identifying genes with differential expression in replicated cDNA microarray experiments}, journal = {Stat. Sin.}, year = 2002, volume = 12, number = 1, pages={111-139} } @Article{workman:etal:2002, Author="Workman, Christopher. and Jensen, Lars. Juhl. and Jarmer, Hanne. and Berka, Randy. and Gautier, Laurent. and Nielser, Henrik. Bjorn. and Saxild, Hans.-Henrik and Nielsen, Claus. and Brunak, Soren. and Knudsen, Steen.", Title="{A new non-linear normalization method for reducing variability in DNA microarray experiments}", Journal="Genome Biol", Year="2002", Volume="3", Number="9", Pages="research0048", Month="Aug" } @Article{Lazardis:etal:2002, Author="Lazaridis, Emmanuel. N. and Sinibaldi, Dominic. and Bloom, Gregory. and Mane, Shrikant. and Jove, Richard.", Title="{A simple method to improve probe set estimates from oligonucleotide arrays}", Journal="Math Biosci", Year="2002", Volume="176", Number="1", Pages="53-58", Month="Mar" } @Book{Tukey:1977, author = "Tukey, J. W.", title = "Exploratory Data Analysis", year = "1977", publisher = {Addison-Wesley}, } @Article{gaut:cope:bols:iriz:2003, Author = {Gautier, Laurent and Cope, Leslie and Bolstad, Benjamin Milo and Irizarry, Rafael A.}, Title = {affy - An R package for the analysis of Affymetrix GeneChip data at the probe level}, Journal = {Bioinformatics}, note={In press}, Year ={2003}, } affy/vignettes/builtinMethods.Rnw0000644000175200017520000002456014710217042020220 0ustar00biocbuildbiocbuild% -*- mode: noweb; noweb-default-code-mode: R-mode; -*- %\VignetteIndexEntry{2. Built-in Processing Methods} %\VignetteKeywords{Preprocessing, Affymetrix} %\VignetteDepends{affy} %\VignettePackage{affy} %documentclass[12pt, a4paper]{article} \documentclass[12pt]{article} \usepackage{amsmath} \usepackage{hyperref} \usepackage[authoryear,round]{natbib} \textwidth=6.2in \textheight=8.5in %\parskip=.3cm \oddsidemargin=.1in \evensidemargin=.1in \headheight=-.3in \newcommand{\scscst}{\scriptscriptstyle} \newcommand{\scst}{\scriptstyle} \author{Ben Bolstad} \begin{document} \title{affy: Built-in Processing Methods} \maketitle \tableofcontents \section{Introduction} This document describes the preprocessing methods that have currently been built into the \verb+affy+ package. Hopefully it will clarify for the reader what each of the routines does. There is a separate vignette which describes how you might write your own routines and use them in combination with the built-in routines. As usual, loading the package in your \verb+R+ session is required. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} <>= library(affy) @ \section{Background methods} You can see the background correction methods that are built into the package by examining the variable \verb+bgcorrect.method+. <<>>= bgcorrect.methods() @ \subsection{none} Calling this method actually does nothing. It returns the object unchanged. May be used as a placeholder. \subsection{rma/rma2} These are background adjustment implementations for the rma method \cite{iriz:etal:2003}. They differ only in how they estimate a set of parameters (generally you should use \verb+rma+ in preference to \verb+rma2+. In both cases PM probe intensities are corrected by using a global model for the distribution of probe intensities. The model is suggested by looking at plots of the empirical distribution of probe intensities. In particular the observed PM probes are modeled as the sum of a normal noise component N (Normal with mean $\mu$ and variance $\sigma^2$) and a exponential signal component S (exponential with mean $\alpha$). To avoid any possibility of negatives, the normal is truncated at zero. Given we have O the observed intensity, this then leads to an adjustment. \begin{equation*} E\left(s \lvert O=o\right) = a + b \frac{\phi\left(\frac{a}{b}\right) - \phi\left(\frac{o-a}{b}\right)}{\Phi\left(\frac{a}{b}\right) + \Phi\left(\frac{o-a}{b}\right) - 1 } \end{equation*} where $a = s- \mu - \sigma^2\alpha$ and $b = \sigma$. Note that $\phi$ and $\Phi$ are the standard normal distribution density and distribution functions respectively. Note that MM probe intensities are not corrected by either of these routines. \subsection{mas} This is an implementation of the background correction method outlined in the Statistical Algorithms Description Document \cite{affy:tech:2002}. The chip is broken into a grid of 16 rectangular regions. For each region the lowest 2\% of probe intensities are used to compute a background value for that grid. Each probe is then adjusted based upon a weighted average of the backgrounds for each of the regions. The weights are based on the distances between the location of the probe and the centriods of 16 different regions. Note this method corrects both PM and MM probes. \section{Normalization Methods} You can see the background correction methods that are built into the package by examining the variable \verb+bgcorrect.method+. <<>>= normalize.AffyBatch.methods() @ The Quantile, Contrast and Loess normalizations have been discussed and compared in \cite{bols:etal:2003}. \subsection{quantiles/quantiles.robust} The quantile method was introduced by \cite{bols:etal:2003}. The goal is to give each chip the same empirical distribution. To do this we use the following algorithm where $X$ is a matrix of probe intensities (probes by arrays): \begin{enumerate} \item Given $n$ array of length $p$, form $X$ of dimension $p \times n$ where each array is a column \item Sort each column of $X$ to give $X_{\mbox{sort}}$ \item Take the means across rows of $X_{\mbox{sort}}$ and assign this mean to each element in the row to get $X'_{\mbox{sort}}$ \item Get $X_{\mbox{normalized}}$ by rearranging each column of $X'_{\mbox{sort}}$ to have the same ordering as original $X$ \end{enumerate} The quantile normalization method is a specific case of the transformation $x'_{i} = F^{-1}\left(G\left(x_{i}\right)\right)$, where we estimate $G$ by the empirical distribution of each array and $F$ using the empirical distribution of the averaged sample quantiles. Quantile normalization is pretty fast. The {\tt quantiles} function performs the algorithm as above. The {\tt quantile.robust} function allows you to exclude or down-weight arrays in the computation of $\hat G$ above. In most cases we have found that the {\tt quantiles} method is sufficient for use and {\tt quantiles.robust} not required. \subsection{loess} There is a discussion of this method in \cite{bols:etal:2003}. It generalizes the $M$ vs $A$ methodology proposed in \cite{Dudoit:2002} to multiple arrays. It works in a pairwise manner and is thus slow when used with a large number of arrays. \subsection{contrasts} This method was proposed by \cite{astr:2003}. It is also a variation on the $M$ vs $A$ methodology, but the normalization is done by transforming the data to a set of contrasts, then normalizing. \subsection{constant} A scaling normalization. This means that all the arrays are scaled so that they have the same mean value. This would be typical of the approach taken by Affymetrix. However, the Affymetrix normalization is usually done after summarization (you can investigate \verb+affy.scalevalue.exprSet+ if you are interested) and this normalization is carried out before summarization. \subsection{invariantset} A normalization similar to that used in the dChip software \cite{li:wong:2001a}. Using a baseline array, arrays are normalized by selecting invariant sets of genes (or probes) then using them to fit a non-linear relationship between the ``treatment'' and ``baseline'' arrays. The non-linear relationship is used to carry out the normalization. \subsection{qspline} This method is documented in \cite{workman:etal:2002}. Using a target array (either one of the arrays or a synthetic target), arrays are normalized by fitting splines to the quantiles, then using the splines to perform the normalization. \section{PM correct methods} <<>>= pmcorrect.methods() @ \subsection{mas} An {\it ideal mismatch} is subtracted from PM. The ideal mismatch is documented by \cite{affy:tech:2002}. It has been designed so that you subtract MM when possible (ie MM is less than PM) or something else when it is not possible. The Ideal Mismatch will always be less than the corresponding PM and thus we can safely subtract it without risk of negative values. \subsection{pmonly} Make no adjustment to the pm values. \subsection{subtractmm} Subtract MM from PM. This would be the approach taken in MAS 4 \cite{affy4}. It could also be used in conjunction with the Li-Wong model. \section{Summarization methods} <<>>= express.summary.stat.methods() @ \subsection{avgdiff} Compute the average. This is the approach that was taken in \cite{affy4}. \subsection{liwong} This is an implementation of the methods proposed in \cite{li:wong:2001a} and \cite{li:wong:2001b}. The Li-Wong MBEI is based upon fitting the following multi-chip model to each probeset \begin{equation} y_{ij} = \phi_i \theta_j + \epsilon_{ij} \end{equation} where $y_{ij}$ is $PM_{ij}$ or the difference between $PM_{ij}-MM_{ij}$. The $\phi_i$ parameter is a probe response parameter and $\theta_j$ is the expression on array $j$. \subsection{mas} As documented in \cite{affy:tech:2002}, a robust average using 1-step Tukey biweight on $\log_2$ scale. \subsection{medianpolish} This is the summarization used in the RMA expression summary \cite{iriz:etal:2003}. A multichip linear model is fit to data from each probeset. In particular for a probeset $k$ with $i=1,\dots,I_k$ probes and data from $j=1,\dots,J$ arrays we fit the following model \begin{equation*} \log_2\left(PM^{(k)}_{ij}\right) = \alpha_i^{(k)} + \beta_j^{(k)} + \epsilon_{ij}^{(k)} \end{equation*} where $\alpha_i$ is a probe effect and $\beta_j$ is the $\log_2$ expression value. The medianpolish is an algorithm (see \cite{tukey:1977}) for fitting this model robustly. Please note that expression values you get using this summary measure will be in $\log_2$ scale. \subsection{playerout} This method is detailed in \cite{Lazardis:etal:2002}. A non-parametric method is used to determine weights. The expression value is then the weighted average. \section{Putting it altogether using {\tt expresso}} The function that you should use is {\tt expresso}. It is important to note that not every preprocessing method can be combined together. In particular the \verb+rma+ backgrounds adjust only PM probe intensities and so they should only be used in conjunction with the \verb+pmonly+ PM correction. Also remember that the \verb+mas+ and \verb+medianpolish+ summarization methods $\log_2$ transform the data, thus they should not be used in conjunction with any preprocessing steps that are likely to yield negatives like the \verb+subtractmm+ pm correction method. The following is a typical call to \verb+expresso+. \begin{Sinput} library(affydata) data(Dilution) eset <- expresso(Dilution,bgcorrect.method="rma", normalize.method="quantiles", pmcorrect.method="pmonly", summary.method="medianpolish") \end{Sinput} %@ This would give you the RMA expression measure, but of course there are other ways of computing RMA (chiefly \verb+rma+). The true power of \verb+expresso+ becomes apparent when you start combining different methods. By choosing a method for each of the four steps ({\tt bgcorrect.method}, {\tt normalize.method}, {\tt pmcorrect.method}, {\tt summary.method}) you can create quite a variety of expression measures. For instance \begin{Sinput} eset <- expresso(Dilution,bgcorrect.method="mas", normalize.method="qspline", pmcorrect.method="subtractmm", summary.method="playerout") \end{Sinput} would be a valid way of computing an expression measure (it is up to the user to decide whether such a concoction is sensible or not). \bibliographystyle{plainnat} \bibliography{affy} \end{document} affy/vignettes/customMethods.Rnw0000644000175200017520000001356214710217042020064 0ustar00biocbuildbiocbuild% -*- mode: noweb; noweb-default-code-mode: R-mode; -*- %\VignetteIndexEntry{3. Custom Processing Methods} %\VignetteKeywords{Preprocessing, Affymetrix} %\VignetteDepends{affy} %\VignettePackage{affy} %documentclass[12pt, a4paper]{article} \documentclass[12pt]{article} \usepackage{amsmath} \usepackage{hyperref} \usepackage[authoryear,round]{natbib} \textwidth=6.2in \textheight=8.5in %\parskip=.3cm \oddsidemargin=.1in \evensidemargin=.1in \headheight=-.3in \newcommand{\scscst}{\scriptscriptstyle} \newcommand{\scst}{\scriptstyle} \newcommand{\Rfunction}[1]{{\texttt{#1}}} \newcommand{\Robject}[1]{{\texttt{#1}}} \newcommand{\Rpackage}[1]{{\textit{#1}}} \newcommand{\Rmethod}[1]{{\texttt{#1}}} \newcommand{\Rfunarg}[1]{{\texttt{#1}}} \newcommand{\Rclass}[1]{{\textit{#1}}} \author{Laurent} \begin{document} \title{affy: Custom Processing Methods (HowTo)} \maketitle \tableofcontents \section{Introduction} This document describes briefly how to customize the affy package by adding one's own processing methods. The types of processing methods are background correction, normalization, perfect match correction and summary expression value computation. We tried our best to make this as easy as we could, but we are aware that it is far from being perfect. We are still working on things to improve them. Hopefully this document should let you extend the package with supplementary processing methods easily. As usual, loading the package in your \verb+R+ session is required. \begin{Sinput} R> library(affy) ##load the affy package \end{Sinput} <>= library(affy) @ \section{How-to} For each processing step, labels for the methods known to the package are stored in variables. <<>>= normalize.AffyBatch.methods() bgcorrect.methods() pmcorrect.methods() express.summary.stat.methods() @ We would recommend the use of the method \verb+normalize.methods+ to access the list of available normalization methods (as a scheme for normalization methods that would go beyond 'affy' is thought). <<>>= library(affydata) data(Dilution) normalize.methods(Dilution) @ For each processing step, a naming convention exists between the method label and the function name in \verb+R+ (see table~\ref{table:summary.labels}). Each processing methods should be passed objects (and return objects) corresponding to the processing step (see table~\ref{table:summary.methods}). \begin{table} \begin{tabular}{|c|c|} \hline variable for labels & naming convention \\ \hline bgcorrect.methods & bg.correct.