[Pomp-commits] r584 - in pkg: . R data inst inst/doc man src tests

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Sun Jan 8 22:46:07 CET 2012


Author: kingaa
Date: 2012-01-08 22:46:07 +0100 (Sun, 08 Jan 2012)
New Revision: 584

Modified:
   pkg/DESCRIPTION
   pkg/R/plugins.R
   pkg/R/pomp.R
   pkg/R/trajectory-pomp.R
   pkg/data/blowflies.rda
   pkg/data/dacca.rda
   pkg/data/euler.sir.rda
   pkg/data/gillespie.sir.rda
   pkg/data/gompertz.rda
   pkg/data/ou2.rda
   pkg/data/ricker.rda
   pkg/data/rw2.rda
   pkg/data/verhulst.rda
   pkg/inst/NEWS
   pkg/inst/doc/advanced_topics_in_pomp.Rnw
   pkg/inst/doc/advanced_topics_in_pomp.pdf
   pkg/inst/doc/gompertz-multi-mif.rda
   pkg/inst/doc/gompertz-trajmatch.rda
   pkg/inst/doc/intro_to_pomp.Rnw
   pkg/inst/doc/intro_to_pomp.pdf
   pkg/inst/doc/manual.pdf
   pkg/inst/doc/nlf-block-boot.rda
   pkg/inst/doc/nlf-boot.rda
   pkg/inst/doc/nlf-fit-from-truth.rda
   pkg/inst/doc/nlf-fits.rda
   pkg/inst/doc/nlf-lag-tests.rda
   pkg/inst/doc/nlf-multi-short.rda
   pkg/inst/doc/ricker-mif.rda
   pkg/inst/doc/ricker-probe-match.rda
   pkg/man/pomp-class.Rd
   pkg/man/pomp.Rd
   pkg/src/euler.c
   pkg/src/pomp_internal.h
   pkg/src/rprocess.c
   pkg/src/trajectory.c
   pkg/tests/sir.Rout.save
Log:
- include zeronames in basic 'pomp' object.  this is passed to 'rprocess' and used by the codes in 'trajectory'.
- add a new section to the 'advanced topics' vignette to discuss 'zeronames' and accumulator variables.
- fix a bug in 'trajectory' for maps and 'discrete.time.sim' in that step sizes were treated as variable (as for Euler steps) rather than as fixed.


Modified: pkg/DESCRIPTION
===================================================================
--- pkg/DESCRIPTION	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/DESCRIPTION	2012-01-08 21:46:07 UTC (rev 584)
@@ -12,7 +12,7 @@
 LazyLoad: true
 LazyData: false
 Collate: aaa.R version.R eulermultinom.R plugins.R 
-	 slice-design.R profile-design.R sobol.R bsplines.R sannbox.R
+	 parmat.R slice-design.R profile-design.R sobol.R bsplines.R sannbox.R
 	 pomp-fun.R pomp.R pomp-methods.R rmeasure-pomp.R rprocess-pomp.R init-state-pomp.R 
 	 dmeasure-pomp.R dprocess-pomp.R skeleton-pomp.R simulate-pomp.R trajectory-pomp.R plot-pomp.R 
 	 pfilter.R pfilter-methods.R traj-match.R bsmc.R

Modified: pkg/R/plugins.R
===================================================================
--- pkg/R/plugins.R	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/R/plugins.R	2012-01-08 21:46:07 UTC (rev 584)
@@ -48,7 +48,7 @@
           times=times,
           params=params,
           dt=delta.t,
-          method=0L,
+          method=2L,
           statenames=statenames,
           paramnames=paramnames,
           covarnames=covarnames,

Modified: pkg/R/pomp.R
===================================================================
--- pkg/R/pomp.R	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/R/pomp.R	2012-01-08 21:46:07 UTC (rev 584)
@@ -21,6 +21,7 @@
                         statenames = 'character',
                         paramnames = 'character',
                         covarnames = 'character',
+                        zeronames = 'character',
                         par.trans = 'function',
                         par.untrans = 'function',
                         PACKAGE = 'character',
@@ -49,7 +50,7 @@
                               skeleton = NULL, skeleton.type = c("map","vectorfield"),
                               skelmap.delta.t = 1,
                               initializer, covar, tcovar,
-                              obsnames, statenames, paramnames, covarnames,
+                              obsnames, statenames, paramnames, covarnames, zeronames,
                               PACKAGE, parameter.transform, parameter.inv.transform) {
 
   ## check the data
@@ -159,6 +160,7 @@
   if (missing(statenames)) statenames <- character(0)
   if (missing(paramnames)) paramnames <- character(0)
   if (missing(covarnames)) covarnames <- character(0)
+  if (missing(zeronames)) zeronames <- character(0)
   
   if (missing(covar)) {
     covar <- matrix(data=0,nrow=0,ncol=0)
@@ -280,6 +282,7 @@
       statenames = statenames,
       paramnames = paramnames,
       covarnames = covarnames,
+      zeronames = zeronames,
       par.trans = par.trans,
       par.untrans = par.untrans,
       PACKAGE = PACKAGE,
@@ -374,7 +377,7 @@
                     skeleton = NULL, skeleton.type = c("map","vectorfield"),
                     skelmap.delta.t = 1,
                     initializer, covar, tcovar,
-                    obsnames, statenames, paramnames, covarnames,
+                    obsnames, statenames, paramnames, covarnames, zeronames,
                     PACKAGE, parameter.transform, parameter.inv.transform) {
             pomp.constructor(
                              data=data,
@@ -395,6 +398,7 @@
                              statenames=statenames,
                              paramnames=paramnames,
                              covarnames=covarnames,
+                             zeronames=zeronames,
                              PACKAGE=PACKAGE,
                              parameter.transform=parameter.transform,
                              parameter.inv.transform=parameter.inv.transform,
@@ -411,7 +415,7 @@
                     skeleton = NULL, skeleton.type = c("map","vectorfield"),
                     skelmap.delta.t = 1,
                     initializer, covar, tcovar,
-                    obsnames, statenames, paramnames, covarnames,
+                    obsnames, statenames, paramnames, covarnames, zeronames,
                     PACKAGE, parameter.transform, parameter.inv.transform) {
             pomp.constructor(
                              data=data,
@@ -432,6 +436,7 @@
                              statenames=statenames,
                              paramnames=paramnames,
                              covarnames=covarnames,
+                             zeronames=zeronames,
                              PACKAGE=PACKAGE,
                              parameter.transform=parameter.transform,
                              parameter.inv.transform=parameter.inv.transform,
@@ -449,7 +454,7 @@
                     skeleton = NULL, skeleton.type = c("map","vectorfield"),
                     skelmap.delta.t = 1,
                     initializer, covar, tcovar,
-                    obsnames, statenames, paramnames, covarnames,
+                    obsnames, statenames, paramnames, covarnames, zeronames,
                     PACKAGE, parameter.transform, parameter.inv.transform) {
             pomp.constructor(
                              data=matrix(data,nrow=1,ncol=length(data)),
@@ -470,6 +475,7 @@
                              statenames=statenames,
                              paramnames=paramnames,
                              covarnames=covarnames,
+                             zeronames=zeronames,
                              PACKAGE=PACKAGE,
                              parameter.transform=parameter.transform,
                              parameter.inv.transform=parameter.inv.transform,
@@ -485,7 +491,7 @@
                     rmeasure, dmeasure, measurement.model,
                     skeleton, skeleton.type, skelmap.delta.t,
                     initializer, covar, tcovar,
-                    obsnames, statenames, paramnames, covarnames,
+                    obsnames, statenames, paramnames, covarnames, zeronames,
                     PACKAGE, parameter.transform, parameter.inv.transform) {
             mmg <- !missing(measurement.model)
             dmg <- !missing(dmeasure)
@@ -514,6 +520,7 @@
             if (missing(statenames)) statenames <- data at statenames
             if (missing(paramnames)) paramnames <- data at paramnames
             if (missing(covarnames)) covarnames <- data at covarnames
+            if (missing(zeronames)) zeronames <- data at zeronames
             if (missing(PACKAGE)) PACKAGE <- data at PACKAGE
             if (missing(skeleton.type)) skeleton.type <- data at skeleton.type
             if (missing(skeleton)) skeleton <- data at skeleton
@@ -561,6 +568,7 @@
                            statenames=statenames,
                            paramnames=paramnames,
                            covarnames=covarnames,
+                           zeronames=zeronames,
                            PACKAGE=PACKAGE,
                            parameter.transform=par.trans,
                            parameter.inv.transform=par.untrans

Modified: pkg/R/trajectory-pomp.R
===================================================================
--- pkg/R/trajectory-pomp.R	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/R/trajectory-pomp.R	2012-01-08 21:46:07 UTC (rev 584)
@@ -56,17 +56,12 @@
   
   type <- object at skeleton.type          # map or vectorfield?
   
-  if ("zeronames"%in%names(object at userdata))
-    znames <- object at userdata$zeronames
-  else
-    znames <- character(0)
-
   if (is.na(type))
     stop("trajectory error: no skeleton specified",call.=FALSE)
 
   if (type=="map") {
 
-    x <- .Call(iterate_map,object,times,t0,x0,params,znames)
+    x <- .Call(iterate_map,object,times,t0,x0,params)
 
   } else if (type=="vectorfield") {
 
@@ -91,6 +86,8 @@
            )
     }
 
+    znames <- object at zeronames
+
     if (length(znames)>0)
       x0[znames,,] <- 0
 

Modified: pkg/data/blowflies.rda
===================================================================
(Binary files differ)

Modified: pkg/data/dacca.rda
===================================================================
(Binary files differ)

Modified: pkg/data/euler.sir.rda
===================================================================
(Binary files differ)

Modified: pkg/data/gillespie.sir.rda
===================================================================
(Binary files differ)

Modified: pkg/data/gompertz.rda
===================================================================
(Binary files differ)

Modified: pkg/data/ou2.rda
===================================================================
(Binary files differ)

Modified: pkg/data/ricker.rda
===================================================================
(Binary files differ)

Modified: pkg/data/rw2.rda
===================================================================
(Binary files differ)

Modified: pkg/data/verhulst.rda
===================================================================
(Binary files differ)

Modified: pkg/inst/NEWS
===================================================================
--- pkg/inst/NEWS	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/inst/NEWS	2012-01-08 21:46:07 UTC (rev 584)
@@ -8,9 +8,12 @@
 
      o  The deterministic skeleton trajectory functions now look for variables named in 'zeronames' and treat these variables as accumulators.
      	This brings the behavior of the deterministic skeleton functions into line with 'rprocess'.
+	A new section of the "advanced topics" vignette discusses accumulator variables and 'zeronames'.
 
      o	Include the user manual PDF among the vignettes.
 
+     o	The new function 'parmat' creates a suitable matrix of parameters in one line.
+
 0.39-5
      o	Bug fix in 'bsmc' that arises when the state space is 1-D.
      	Thanks to Arnab Bhattacharya for finding the bug.

Modified: pkg/inst/doc/advanced_topics_in_pomp.Rnw
===================================================================
--- pkg/inst/doc/advanced_topics_in_pomp.Rnw	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/inst/doc/advanced_topics_in_pomp.Rnw	2012-01-08 21:46:07 UTC (rev 584)
@@ -461,6 +461,35 @@
 traj <- trajectory(sir,hmax=1/52)
 @ 
 
+\section{Accumulator variables}
+
+Recall the SIR example discussed in the ``Introduction to \pkg{pomp}'' vignette.
+In this example, the data consist of reported cases, which are modeled as binomial draws from the true number of recoveries having occurred since the last observation.
+In particular, suppose the zero time for the process is $t_0$ and let $t_1, t_2, \dots, t_n$ be the times at which the data $y_1, y_2, \dots, y_n$ are recorded.
+Then the $k$-th observation $y_k = C(t_{k-1},t_{k})$ is the observed number of cases in time interval $[t_{k-1},t_{k})$.
+If $\Delta_{I{\to}R}(t_{k-1},t_{k})$ is the accumulated number of recoveries (I to R transitions) in the same interval, then the model assumes
+\begin{equation*}
+  y_{k}=C(t_{k-1},t_{k})\;\sim\;\mathrm{binomial}({\Delta}_{I{\to}R}(t_{k-1},t_{k}),\rho)
+\end{equation*}
+where $\rho$ is the probability a given case is actually recorded.
+
+Now, it is easy to keep track of the cumulative number of recoveries when simulating the continuous-time SIR state process; 
+one simply has to add each recovery to an accumulator variable when it occurs.
+The SIR simulator codes in the ``Introduction to \pkg{pomp}'' vignette do this, storing the cumulative number of recoveries in a state variable \code{cases}, so that at any time $t$,
+\begin{equation*}
+  \mathtt{cases}(t) = \text{cumulative number of recoveries having occurred in the interval $[t_0,t)$}.
+\end{equation*}
+It follows that $\Delta_{I{\to}R}(t_{k-1},t_{k})=\mathtt{cases}(t_{k})-\mathtt{cases}(t_{k-1})$.
+Does this not violate the Markov assumption upon which all the algorithms in \pkg{pomp} are based?
+Not really.
+Straightforwardly, one could augment the state process, adding $\mathtt{cases}(t_{k-1})$ to the state vector at time $t_k$.
+The state process would then become a \emph{hybrid} process, with one component (the $S$, $I$, $R$, and $\mathtt{cases}$ variables) evolving in continuous time, while the retarded $\mathtt{cases}$ variable would update discretely.
+
+It would, of course, be relatively easy to code up the model in this way, but because the need for accumulator variables is so common, \pkg{pomp} provides an easier work-around.
+Specifically, in the \code{pomp}-object constructing call to \code{pomp}, any variables named in the \code{zeronames} argument are assumed to be accumulator variables.
+At present, however, only the \code{rprocess} plug-ins and the deterministic-skeleton trajectory codes take this into account;
+setting \code{zeronames} will have no effect on custom \code{rprocess} codes.
+
 \clearpage
 \section{The low-level interface}
 

Modified: pkg/inst/doc/advanced_topics_in_pomp.pdf
===================================================================
(Binary files differ)

Modified: pkg/inst/doc/gompertz-multi-mif.rda
===================================================================
(Binary files differ)

Modified: pkg/inst/doc/gompertz-trajmatch.rda
===================================================================
(Binary files differ)

Modified: pkg/inst/doc/intro_to_pomp.Rnw
===================================================================
--- pkg/inst/doc/intro_to_pomp.Rnw	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/inst/doc/intro_to_pomp.Rnw	2012-01-08 21:46:07 UTC (rev 584)
@@ -191,7 +191,7 @@
 
 Let's see how to implement the Gompertz model in \pkg{pomp}.
 Here, we'll take the shortest path to this goal.
-In the ``advanced topics in pomp'' vignette, we show how one can make the codes much more efficient using compiled native (C or FORTRAN) code.
+In the ``Advanced topics in \pkg{pomp}'' vignette, we show how one can make the codes much more efficient using compiled native (C or FORTRAN) code.
 
 First, we write a function that implements the process model simulator.
 This is a function that will simulate a single step ($t\to{t+{\Delta}t}$) of the unobserved process \eqref{eq:gompertz1}.
@@ -717,7 +717,7 @@
        loglik.mif.se,loglik.true.se,
        etime,
        file=binary.file,
-       compress=TRUE
+       compress="xz"
        )
 }
 rbind(
@@ -840,7 +840,7 @@
   load(binary.file)
 } else {
 <<gompertz-trajmatch-calc>>
-  save(new.gompertz,tm,file=binary.file,compress=TRUE)
+  save(new.gompertz,tm,file=binary.file,compress="xz")
 }
 @
 
@@ -1014,7 +1014,7 @@
   load(binary.file)
 } else {
 <<ricker-probe-match-calc>>
-  save(pm,file=binary.file,compress=TRUE)
+  save(pm,file=binary.file,compress="xz")
 }
 @
 
@@ -1041,7 +1041,7 @@
   load(binary.file)
 } else {
 <<ricker-mif-calc>>
-  save(mf,file=binary.file,compress=TRUE)
+  save(mf,file=binary.file,compress="xz")
 }
 @
 The following code compares parameters, likelihoods, and synthetic likelihoods (based on the probes in \code{plist}) at each of 
@@ -1134,7 +1134,7 @@
 } else {
 <<nlf-gompertz-starts>>
 <<nlf-gompertz-fits>>
-  save(starts,out,fits,file=binary.file,compress=TRUE)
+  save(starts,out,fits,file=binary.file,compress="xz")
 }
 @ 
 The results in this case are very encouraging,
@@ -1148,7 +1148,7 @@
 \code{nasymp} sets the length of the Gompertz model simulation on which the quasilikelihood is based; 
 larger values will give less variable parameter estimates, but will slow down the fitting process. 
 The slowdown is dominated by the time required to generate the model simulations, so efficient coding of \code{rprocess} is essential. 
-The ``Advanced topics in pomp'' vignette gives some advice on this. 
+The ``Advanced topics in \pkg{pomp}'' vignette gives some advice on this. 
 Do \code{vignette("advanced\_topics\_in\_pomp")} to view it.
 
 The choice of lags affects the accuracy of the intermediate statistical model and therefore the accuracy of parameter estimates, so it is worth putting some effort into choosing good lags. 
@@ -1212,7 +1212,7 @@
 <<nlf-my-pomp>>
 <<nlf-lag-test-log.r>>
 <<nlf-lag-test-log.K>>
-  save(theta,lags,log.r.vals,log.K.vals,fvals,fvals2,file=binary.file,compress=TRUE)
+  save(theta,lags,log.r.vals,log.K.vals,fvals,fvals2,file=binary.file,compress="xz")
 }
 @ 
 
@@ -1282,7 +1282,7 @@
   load(binary.file)
 } else {
 <<nlf-multi-short>>
-  save(lags,nreps,ndata,fvals,file=binary.file,compress=TRUE)
+  save(lags,nreps,ndata,fvals,file=binary.file,compress="xz")
 }
 @ 
 The last line above expresses the objective function as the geometric mean (quasi)likelihood per data point. 
@@ -1309,7 +1309,7 @@
   load(binary.file)
 } else {
 <<nlf-fit-from-truth>>
-  save(true.fit,file=binary.file,compress=TRUE)
+  save(true.fit,file=binary.file,compress="xz")
 }
 @ 
 From \verb+true.fit$params+ and \verb+true.fit$se+ we get the estimates ($\pm$ 1 standard error)
@@ -1360,7 +1360,7 @@
   load(binary.file)
 } else {
 <<nlf-boot>>
-  save(pars,file=binary.file,compress=TRUE)
+  save(pars,file=binary.file,compress="xz")
 }
 @ 
 <<>>=
@@ -1414,7 +1414,7 @@
   load(binary.file)
 } else {
 <<nlf-block-boot>>
-  save(pars,file=binary.file,compress=TRUE)
+  save(pars,file=binary.file,compress="xz")
 }
 @ 
 
@@ -1504,6 +1504,8 @@
   C(t_1,t_2)\;\sim\;\mathrm{binomial}({\Delta}_{I{\to}R}(t_1,t_2),\rho)
 \end{equation*}
 where $\Delta_{I{\to}R}(t_1,t_2)$ is the accumulated number of recoveries that have occured over the interval in question and $\rho$ is the \emph{reporting rate}, i.e., the probability that a given infection is observed and recorded.
+The fact that the observed data are linked to an accumulation, as opposed to an instantaneous value, introduces a little bit of complication;
+see the section on ``Accumulator variables'' in the ``Advanced Topics in \pkg{pomp}'' vignette for a thorough discussion of this issue.
 
 The model's deterministic skeleton is a system of nonlinear ordinary differential equations---a vectorfield---on the space of positive values of $S$, $I$, and $R$ (cf. Eq.~\ref{eq:continuous-skeleton}).
 Specifically, the SIR deterministic skeleton is
@@ -1580,6 +1582,7 @@
 We still have a difficulty with the measurement process, however, in that our data are assumed to be records of infections resolving within a given interval while the process model keeps track of the accumulated number of infections that have resolved since the record-keeping began.
 We can get around this difficulty by re-setting \code{cases} to zero immediately after each observation.
 We tell \pkg{pomp} to do this using the \code{pomp}'s \code{zeronames} argument, as we will see in a moment.
+The section on ``accumulator variables'' in the ``Advanced topics in \pkg{pomp}'' vignette discusses this in more detail.
 
 The second wrinkle has to do with the initial conditions, i.e., the states $S(t_0)$, $I(t_0)$, $R(t_0)$.
 By default, \pkg{pomp} will allow us to specify these initial states arbitrarily.
@@ -1608,7 +1611,7 @@
                 x0[comp.names] <- round(N*fracs/sum(fracs))
                 x0
               },
-              zeronames=c("cases"), # zero this variable after each obsvn.
+              zeronames=c("cases"), # 'cases' is an accumulator variable
               ic.pars=c("S0","I0","R0"), # initial condition parameters
               comp.names=c("S","I","R") # names of the compartments
               ),
@@ -1666,7 +1669,7 @@
                 x0[comp.names] <- round(N*fracs/sum(fracs))
                 x0
               },
-              zeronames=c("cases"), # zero this variable after each obsvn.
+              zeronames=c("cases"), # 'cases' is an accumulator variable
               ic.pars=c("S0","I0","R0"), # initial condition parameters
               comp.names=c("S","I","R") # names of the compartments
               ),

Modified: pkg/inst/doc/intro_to_pomp.pdf
===================================================================
(Binary files differ)

Modified: pkg/inst/doc/manual.pdf
===================================================================
--- pkg/inst/doc/manual.pdf	2012-01-08 21:40:51 UTC (rev 583)
+++ pkg/inst/doc/manual.pdf	2012-01-08 21:46:07 UTC (rev 584)
@@ -215,14 +215,14 @@
 xÚíXÝoÛ6Ï_¡·Ù@Ő”(KÅV,I?ÖÔŠÄÛÚ£eÚa«/PTÚì¯ßQ¤ɵeèÛŠ y¼ãÝýîK2övöÞœá#ÏËÕÙùë€y£(¢Ì[m=„(^-b%‰·ÚxfïçÏxú™ïÄܧÏþ®Ê¼úiþ×êä#”0F| €&p¡ˆVüš
 WVtñÌ>)&Ô\ÐÓZ’ $¢‘¹È'ÑÅ,„«("ÌY²š/ÂÙc%ö%£$¨Žƒ N:ÛYgû”:'å4\tÚH<“:›V¢]têî4ײÖ2å™õS[¡D‘:䶥²‹Š+-y–9XÊu-Ôƒ±Ul,冫Ï÷Òœ*SQ×¢žvÅZ4rå¸
 Ï„ªeYLy,I:g0
-±O&uYþ‘ª—\Ÿ,NzÀLø˜ø8:å“)º˜$¾H§<b(\ôê.¸ Z0/}¾“ÅÎ%å«Í—6Õ•‹ÁÒ±¼-¹µãºâ*ƒ´ëK%téèwà75±2QtfY!Ô³Ž·éÒàaÅÀþ&2áûsC¨¸šS<ókP1ðÞšõäÉê®õ}«ú‹%\;³_¥¸’›Lï¹pi¹äæöYwú’²;¼rò·¢Éyq*.	Þ‹Ë
+±O&uYþ‘ª—\Ÿ,NzÀLø˜ø8>å“)º˜$¾H§<b(\ôê.¸ Z0/}¾“ÅÎ%å«Í—6Õ•‹ÁÒ±¼-¹µãºâ*ƒ´ëK%téèwà75±2QtfY!Ô³Ž·éÒàaÅÀþ&2áûsC¨¸šS<ókP1ðÞšõäÉê®õ}«ú‹%\;³_¥¸’›Lï¹pi¹äæöYwú’²;¼rò·¢Éyq*.	Þ‹Ë
 —…†1 q±-†Ò\<ÅóçÏÀÅù¯MÞ!±i^L7ÂÁñØÞßo—#!ŒÌõØS°uË[sÕÈ!Lú.s¯uõüüÜ´E¤ü¹o+}'º
 î'‘j´±ªc°ÚÛÇu%êTÉJŸ¨`"
 gØÛqûÉ”˦>Ö‹üïÙ†œ!{>Tõõ”ý!AŒ„ý·1Ã/~q3b‡PˆKÚºmW•Î5·Û)^ÝË´?|ÐE©òN¬YWÐÔÁ¡¯Ž²weæ
 wÊ'gœõ)²&.e*ŠZœèª8îsýÍûåÈ+ãЩ&kÄGH.ù?Ë’o&¡ŒÛÉéÔjÕœpβ£:ŸT¡0î3nÛvЬ>¡ËÊŒt]•Yvbv˜fNúâ眣[¢];Þ:’h2¡ò&Ó²(óŽXeÍN5lû¾JÆ}µÎ ž>t{¹ë¯‚„ÿˆ1Íöéu¹.³n³®«š^Ýò¢X—_*ì´¸¤1Âß6OLç¬}—ÎMå‚׍þQ¹Be!µo
 £çªwNn]·9t]ÝV?']ã	Ø´´D­¸és¥z‘«¬Ôþ!;FL-Ħc³oˆû€M~Î5týÿ<=ìm.·~šñºn^
 C܇£Ž8^îëKÁR€Y®C®äi«ß*0›cWŒ8‹lkò ­‡„]£Gûrýi+ at 9b‚*×b³k±‡¯eê·OYZ™¹4Üô2öõ>ñHˆ‚0¢£yŸ	8r¹Üq²!'	P²¾÷”4c—feÚä¢Ðbó¼ÿ‚ÌUk'Ea0,–ªû 	H0Cfªâÿû#L’§ÝøµþPܾÁ¸%¼Áx|0p¾‚´ÉDÌ"ú¥ïúÙÜO(ýøQàÿ3þÁ4þÔâß+²Å
-Éì¿öì ö}HÄ£Aûs |™ÚHŒ_Î^­Îþy#Û
+Éì¿öì ö}HÄ£Aûs |™ÚHŒ_Î^­Îþ3Ï#Ý
 endstream
 endobj
 138 0 obj <<
@@ -2924,22 +2924,22 @@
 /ProcSet [ /PDF /Text ]
 >> endobj
 662 0 obj <<
-/Length 1620      
+/Length 1640      
 /Filter /FlateDecode
 >>
 stream
-xÚí]oÛ6ð=¿ÂHj1KJ%aØC7´E·b0÷©-0Ʀmmú0$:iöëwÇ£dIQâvØC
-ô‰ÇãéxßwŸíf|öæâ§ÕÅ‹×RÎR–ª@ÍVÛ™àœ…RÍb!˜
-ÓÙj3û0?TÅañiõˋסêÑJ.Xœ #G
-$¹àž5ÐF=Ú¥'^1àBúä}£wfðÕCë‹×AЗq&¸"FÏž-–çó?$­…±ûjCð¶ª	h²]©í±6´}¾ÑV³m­óe€{– tE'¥?òˆ#Ù}b³Â4-Ì=ÀóP}¨«µiZŠÍp[F7p{{ÚmñîP²$ÞïÏSZVT“%ÒD`Œmó·É­ÊÅ2£ù´üöþÝ»+ewÎìÝÁˆÖ¨âe¡—W—7fm«z›™|s	hqE$ø10fŸjJ¦¬Ìl¦óìS{•×Սnaë7†¯®›RŸÝXmMqÐà³>±òˆ>?¿¿üù×—o^õ¿6ÖÔÌÖºl :Š{'Yys:EKå'œôŸ¯<¦ÎÖߣîIDúŸ£.z¢QWh[gŸ¿Ý SßKÝ·tYO+äÔ÷îúCn<.FsYÈ™Šü´ø²^>ßÑgÍ£Sã™iqsã¹µ?ãÆŠ¥IÐθ«=úW*ün!æ~Ó@7.FÞEs]n:Z:œ%Ôí>[ï	þ0õÍ"Àì*=]:.ôÆ02Ð@§@)‹nøv×ޟЃ…ª#Zë’¸_
-ö åŒ'jí³Î>r”?æsÝø•–›…ˆæ.–’ÏÁŽ’wgÔc†8méÆlÇZÆb®§Ôâ	“àpþèÃÔR¢sJuýˆÃØb©àº·Û	¶R±0HÏ«Ç5ë´¦‚ÈÆùÈT~[À£&½g—ûR¨ˆ	€ü]èÅˆ™êD-Ž%öà³e8«âö¡«Mµ%¼ÅpE ëÓQnʝ݃­Â4™¶•H%‹Òàœ±ó¤g,²’€4#+¡ÄItŠ 
-ç™%d³¯Žù†à½^mxf&*—r‚S!J[JH¤äT²%ú<Á'f‰èì]>è•”%I§¯ÓBB›ÚL°°`øU’a¸¡Êä2 ÀÁצöyªKÂѼŠ>Vª­h4´£ŠçTLêL_çXwkÑ„9ôÅ0>«;ª#Á¤À“$…û¼¤$Í–p¾æ¹»-¡|ÍëÉ|ªyÔzØ…É0vnÑÀË@¦®„=5cçÜíØ´®òcQ"œ”€Ó´l²ÆfåÚÒnt¿GniE½&
-“LÊô¼O%Z¢#°ÑaÚA{[¶n
-YÉ¡ÆvON \7fªŒ„)“ÁT‘èôoÆ—`êʬ»…£¸)	¥Ý½d2Øž*löèòuâKÊT|%‚\~enµ†Ròú”°Xª3å	ÒSAl*‘«éQâ:,ýÎ4Q­¡'áY;C¿Š£¡‘wé*.Bh¦0òÅm˜ž“û‰Hw'¶57+ë›6(&¢d4Úâ<	Ý5Co¦¢£”?G1‡Ñ&9_ç‘r?¥&wZ»»ÜÒùm–çDââ-E±`ô+užßy¡*S¯]ÅBY+϶ôk]ë;¯-¤H×v}é»Íìž
-p©wf‰<aþÜTGH·ç`6)2›;@µÐT‚‹8ìTä†Õ0¯€éµ¿æ”5°q# É	8›{ý8ï¡:Õð&ÉÊÍ£1—n ðmõHxaùÙVGØ4šÃË¡Z¢š`*H(8p鑪6ŠæÚÓ–äðX¨	ö,[ÈÐ)2#”ëþΓuËuìS±9zd8o|Ÿ¦š.ÿ|u:¾nªõ^Cé_Ó~sy™­uîïk
-‚]hãÚ=¬6„paÑSaª1ÀË"9
-l䊑Œ:Éø˜{C	eGCÿ¶Oß/÷ru@Ë¢žòi{„Öû@á²·¥ºW¸ÊVî!;‘#J²ð4rµba3øÉÚ^ÑÞ½õš+x»÷žwƒòÜrºWÅHˆ&+Žk—´®
-‚\@!p,‡ƒÅaTDV-)f•i<ç[|CBq!n•¿Ÿ<Û»)ïÆ)j¬ðäãóÕêâ_õºh
+xÚíXKÛ6¾ï¯06‡ØÀš!%Š’PôI&(
+Ô9%ʵi[­†Dïfûë;ádI«]'
+$ENÇÃy~šÏv3>{uñÓêâÙK)g)KU f«íLpÎB©f±L…élµ™½Ÿªâ°ø¸úåÙËPõd%,N@‘
+Š\p¯d£žìÒ/ƒx!ýä]£wf𫇾Ï^AßJTÄ™àŠ=y²XFœÏ—ô-ŒÝW¢·UMD“íJmµ¡åӍ¶šmk]˜§hœ³§Ó(:9ýGÅ®è'6+LÓÒÜŒ1OÕ‡ºZ›¦•Ø—uat§·»ÝÏ%Kâáù~¿0¥eEµ19I¢LÁÈ6™Üت\,Ã0šÿHŸ_ß½}{…¤ìö™½;˜Ð]¼,ôáòêòƬmUo3“o.-®HL€€ÙÁÏ5eSVf6Óyö·©½ËëêF·´õ‹‰ÀW×M©On¬¶¦Ï8hÈYŸáTõpdå×}ý¾X~{þó›ç¯^ôµkjfk]6P-Ž¬¼9íbd(IûW…XSgëïUøUT¡ú«0úJ«°Ð¶Î>}»E¨¾Cá·_„Xi_W	ªGKO#`›¯~­õx½šTó¯—ñl.Þ!g*ò£áóz!ø|wÄ€7ŽˆgFÃqÁŒ‡Ôþ@+–&A;ЮöˆRáïbî
+\Õ ÅѨ©h®ËM'K»À³ÄºÝgë=± ?¦¾Y¸™U¥W£kCÛ…ÞFø(ÅbÑMÚîØûãx²PuBk]’ökC-¤œñD
+ö`ÖÙ΃öÇ|®ÿ¥ÏÍBDs‡…ÉçGÉ»=º0†<4méfjÏÇFc1×Snñ„IH8ô•n)Ñ%¥ºþÌal±TpÜëí„Z©X¤çƒÕÓšu^šñ€q>
+•ŸÒð‚IïÅå¾*b(@Wzc3b¦:S‹ccI=äl$.ª¸|èh'Sm‰o±\‘h ú´•›rg÷«0M¦c%RÉ¢48¬€Å<é‹¢$ ÍÄ(Jhqj#HÃyf‰Ùì«c¾!z¯A[^ÄÙ@ˆÊÆuÅ„T¨ÒÖ„é;•l…>Mè‰Y"ºx—f%eIÒù뼐ÐƦ6*à "~‘eXnè2¥Hðµ©}Ÿ*Á’p4ŒbŽ•jñƒ†qTñœÀ¤ÎôuŽ¸ƒBˆEäp©…ñYßÑ,d)œç-%k¶Äó˜çζÄò˜×³ù„y4º…1“aíÜb€—L…w~Æ^ê¸4Ú©j]åÇ¢D:!+§é³É›•kK«Ñùž¹¥/ú5LR0)Óó9•<j…‰À‹Û®°×e›Ö%‘zl÷ààº1S0¦LŸ"Ñé# ÔÁ|wGuSK»s)d°<!,kÌå:ñ2U_‰`—_Ø[m ”| ŸKuž =Ôö‰¦G‰»™àÓ¿™&Ðp8	ÏÆî«8Æu—q‘Â0…‘cd´ezÚLîW$2Ý™x­ás¥²þÒÇD”Œ‹F[|Àíša6SÑÖQʬ£˜Ãh“œÇùD$ƒÞOé‚3W»;ÜÒþm–ç$âê-E³`ô+užßy£*S¯b¡­•W[úo]ë;ï-´Hwízè»Íìž ¸‚Ô;³Äñ›8lª#´ÛS›”…Ím`ˆZjªÁEöªGú
+ËjØW ôÚsêX¸ìžÍ½O‡á¸ïjxPd厍æс™K7
+ømx$¼±üì+†#l¹±~‰nB¨ ¡`õGªÚ*™k/[V´“Ãã¡&ijl)C»¨ŒX®¬û[8OÖ­ÖQ±OÕæè‘á²ñ^|œºœ <ºþó ë|"|íTë½è_Ózs}™­uî·ïk
+¢]iã·{hmˆáÊ&¢§ÂÔÅ /‹ä4°Q*F6:êdãcé
+%ÀŽ
+†ùmß­ŸŸåꀑE?ôÓöW¬ O„ëÞ>—V˜2üÂQ¶r„Lôˆ’,<\­Yx|‚‡em¯èîÞzÍ<¼{Ï»<·šî¡ÑdÅk­ñ–ÖUA”+($Žåpðñ¦£9Œ@dÕŠbW™Æk¾Å7$€i«üqøäÙÞMe7N™Pc‡'Ÿ/Vÿ Tv»
 endstream
 endobj
 661 0 obj <<
@@ -3017,42 +3017,43 @@
 /ProcSet [ /PDF /Text ]
 >> endobj
 682 0 obj <<
-/Length 3094      
+/Length 3074      
 /Filter /FlateDecode
 >>
 stream
-xÚ­Zݏ۸Ï_±oÕ6#~‰R¯}ȵÉ!-Ð×½§¦´½ÖÅ–IÎfû×w†C}šÎ:Ø…LÉ!9œþf¨øæá&¾ùåÍÏwoÞ~Pê&cY"’›»í
-c&Urc8g‰ÌnÿDÇúp¼ýïÝßÞ~É¤¯Š93)0r¤Ä.obϺÿûAˆÉ˜µL%Z4IC˪ìÊ|_þÏ63‹ùL²TôóÕÇ®¬«|»YmOÕëT«·øo¢cSwu÷t´´úÙJ¸PLpÕ³›¬áS¬ãcÞä‡vÕÅ+Æx`ÿ\*ËaAÝ.ïhú§Òî‹–– |×8v¬S&@´km¦µTº(mêª(q8P©h[7ÔÐí,QÚ.ï,Ñ`cÛúž;[ù¡¼:úzËuD$åÔB´MLU­òB³XÈ~7$€À®EÆÒt8õ²×$p\Ž²mZÖoZ±Œóù¦~‚Þ‰‰
-»½åq”Ÿö(¸$‰Pò%³¹•[êWvþ¿¥n§ª=ÚMù)Ž…-¨ÉÉ pÈ	h[̇M…Y¦GÅ¢YL´É÷{[àÙûåÐAÀüS}u]ó¶=lK[æiÂD*ç[Î+< Ø·LÄDJX‡}†–Ú®ãçCJ¦²‰Zš¢Êq=Ž;ž
-’wåfGE[ÃÌŽðIO™Ò¦çÎâÀ2gǾðQÄ1ol?EIJŽÔ¯¨Ÿùþdý0×saÝíl‹£yêÙpµåá¸"â¦>–xðX®Q®¤ÝÒÒˆqb7d´.¬_Ð!cÆS>u
-ŒÌî|ãZ°ÌdS­q9­ñ›_Ç{ƒO¼„@Å[k½ŸƒKotwTüõÌcòŒq£ÏW´î•ù¢»TÌŠjÌn×:V(]\ªt„“ýJ®¼þ Áûé„‹gÖ”ùýžº«þTô¤?ð¢RÞŽ¬œ2ÉÒlq›ºil{ÄC©À†t<V=¡êh0+"Üߊ8:uTy,»•ÈB¡pAŸ,ÖâGõ9M}<Ú‚-$>¿ÜÀù³,3°WÍÜ«~¯_óf…²‡ºÊõ—Ü;´O.'—-…oð·ñvàª³íCö,”{XÊÒ¦p,ôZö'=›u™„
-uåÉ›z:TD<’UÊaiþ2ä	Ì2³
-äìîZx.³lAfLçÓ]ÚlT%ÙÌ-"Ï3½ËàvV€E܏ÛVlÕ5OTt›ÀBSã.©¢H8Õ,Ué³2†[16sã<g–Ÿ˜çXÒq–jµ0° 6ѽ¥ÿٍ)ã„ì, ;$(çôwÈ»¦üFåzÚ”DEÞùN[4Ip)*åÑÇjÉ+´~jR(bÐ5/îGô("Cõú‚˜ÀÁ—LMä{ß\”mWÔ£Ös­Çù<²uçâÙ–Ê™þãÄ9ÍHûG‚ÛH%š‰«4£-æÕtŸp™
-¨ÑÆõM”EÚ{<8‚Ê9`$Õ˦²*,Êé›oßÙ·ÇΨ4uõ(ɘ£$]ïœzœIܳ §àfk‰ÔžŽÇ=\Ó«Ðqw²JÝû­¦.éαÙæ´”ɈóÓ§ÎeA{YÁq¬÷ÐRPKî{TÖ¸2ˆFàâ!À)MæPÁ:´^;âê&¤Yˆ‰§Ýôè<pêÐQØùœ“†àh0ùâFü9NÉ°¤ƒÍÛSc_Ω¸žÓZJŽÚ—aB\
-²FwZz¸âƒ·G“IÂR.æ·Ê9ç‡HÃ;~³P¤Œè”êä” p€OòHÚôwŠ9¿S̍ö|úÿjU94å¦Ç=C˜æêhÕ¡[\¾ÉÌ“=«}»pÀ."#´
-·˜²ï[‡=|q§4%8`6%¸¥°|䬎e ÇÜTÿãù0Ä8o:
-°0n ,r¹E…j©‹»Ñ¶O$ô¤“¡àq-¯ƒñ°ÛÐñ"Š]Q×Ô‰œƒÜ ËšaP™
-ºA!Îݐï€ZkžÄäÀ$Îaˆtˆr´öxxÕ•‹q tjÉi%£éka〉ŽH.÷X4¡˜Ì)”È¢CítZd$h!±á>oŠt¦¿‚pQÈŠUÌ”L_Ãí)0[~­Û{ŽÑ«8½)£ç|Þ÷ø 
-fÂ̏¥ýb÷¶««ç–p¤!P(,‚¸Ê)TO­Ó,VùTÕˆÖÔ'pxie§™RUXB”†êªœ"´¶guð¥Ñ!ùì­/ŒÝ 7nvÎO"`z¸Å.«¶óÀng{Ð6÷—ÐÖ[,«ŠY¼Æ‹rCÍ>Ñ4m¥l é
-×;o™’ó–½ÒCa)4¤M„†@ö71
-sèJ”¸Ú”û²Ã AÂ	íÁ9í)@h‰DÖ7™ö±);OÚœe¿³Ì	¡,@~•½†å%öø*€cÆ©yÉÌ—ô#žqúŽÑ)ÉT<ÉúS=3(wÙvê–©ãy³Ô,²»NK\Öj4º8*jJ¤€¡Õ
-{¤¤4×U?ÀR¡n
-U‰ØÇû]]fq5É„Œ»!2ßÍ	gVÊEè22ýÛZOÛùæVò‚xV[|îêc¹ù\VŸ1#å3€˜r.*Ûu~”Kgcn ,¹}º·Ãu8r
-†‡Î+  ¢@&?÷>…xÏS1žÍ¿Þýåïï~yÿcùçv&
-ˆïºtŸr÷õdts> ù,=6OÐXb¦ð‰zìë¼ ¿©£}yßäo(ýü”»
-Æç•	-.œÐzgF5hcbcŠ7á[ŸªâJJ&âtŠX×äU‡|˜"C×RV_ÇÖ«Q!?C…ZÌqµ˜#@=É«Su˜ÅÀ±r'=ò
-p<œÚ.t‡ìrL8r57·< ¼W]ÎLÉ—Ó÷øô0¸¨pÊ¢¥8ªc¡·(q’š!ý3_(âùzæçJ…ö9øÏ]}Úþ)dåªÇ¼ÏVHɤÌnexìà›¶M£dAI‡u›?ÜÄõ]Z0
-ëûÔDúNÛ<è=KÁ,Œz%Xjä+ÁÒ‘QóÚpò%øT1«+®È£µˆÅu13©¼«†Âû„%c€úXîÁÐy£FPÁé•ó”.r
-¼“-è;nç,o*Íø:£ç:.¥ Ì©ìóM@ g¬z'д¾5Ïb΄üQkS,QÉhÂk
-xãu7,ÃÁ\GGwkB}XàÔŽ°Ccûl{¦A—A@ð¶¼ï!lêSðð9X¬™Èiµü…Ò®Þ.×
-XâB®5efÌñÔ÷¿‡œ–a&Ó³LkÚ›zŠ5ÍiÓS <Í5/»Æ$“U@(³¢+5¬¼àÎÀ#gËlzm·îqàþ÷ߨ¶;Û
-joUWk{8vNy{£¡&÷žé•‚¦Í*"VÀµ³€6(^½Ç;á÷ŸÖø¯¦Ë]
-÷ç»_{«ÿ©×	7ÂâFð9/ ü„éŒlÊ•ØN‡Éè›Tp?"ÔÁ‘1®¦‘pA¶,¾$Åø5Ç…iC_}»ô}Gš±ñ!ŒQR™¾]ÐÓo\6)îk÷	m#¨ K1†8„«PЬEŸGä~ÍÎ८½¦90>„`|dS'7%€ñ	Ç®#ÇþôU‰FßÎsðú
-0ÈçèÚ#“ïÂ;>AÖþƒG
-zœ§Îl®iñi‹‹ê`RJ2èçü‚d|¼öèÞA–÷¶¯ J)¨\N±«_íSÍbs¶ŠK¢™/‡Ü”—DÕK`”{X\ä$}j#Ë(Éœ¥KÙa=¢eþ-eü@*ëC’l®²g€
-DªÔë<oèñºáó†J^”éóŠÿ¦š¾s¸È*Œ…ði6½?¥‡OQ³W§á‡1Þ¢¹ð{ð׳«
-"·”|\>íþWÛåå¾
-~»'Ÿ3D£¾A)•ÔîzS€Å]ö	ÝÓ±g¢-‹'ëâX¤8÷ÛPç¶eƒyö>SéÖÉC¿8jGP߸‰jjé³ DÍÑ|±€j­úh	3µ>Ûßû»7ÿ	Ö£
+xÚ­ZKÜ¸¾ûWÌ-`š_¢”MÞÀ^l$ÁföM‹ãÖº[jHjg}ªX¤^ÍöŒ1ƒ>4ÅG‰¬çWE¥WŸ®Ò«ŸÞüxûæí¥®
+Vd"»º½¿âiʤʮç,“ÅÕmuõßäØŽ×ÿ»ýûÛ2›ÍU)g&Bn’”8åMêI‡ÿ·„˜­ÙÈ\⢍0Ð'iiÝÔC]îë?l· ±zŸÉX‘‹ð¾ö8ÔmSî¯7¢È“ûS³Ågzjïñß$Ç®Úáñhi÷‹p¡˜à*›íácªÓcÙ•‡þfHocÐÁ#ççR±TŽvå@¯¬í¾êi@wƒkáÄ:gX»ÖZûEµ;’ɶmª€•JîÛŽ†¥ž~(K}p°­íý̇m¨ûS}-tòåšë„ºTRÒõm ªÒä&Â!4K…§!DN-
+–ç£Ôo¼&†ã¾p•l׳phÅ
+Η‡þñfg&©ìý5O“ò´GÆeY‚œ¯™eHÕ𤾧yõàÿ{švjú£ÝÖÓTØŠ†"BÎ@ÛR>*®ÈB0=)½Å$Ûr¿·ÊÞo‡ïŸë«›Zöýé`{:2Ï3&r¹<rÙ  àÜ23.á3œ3¶uÐv>-)™*f:héM‰ûqÔQ6Øõ°«·;jÚ¦ßì:>
+!cìã9SÚê,l pvìg EËΆWÔ¤äØûõ³ÜŸì¨ÞÀõ’Y·;Ûãjž{2Ü$}}8î©sÛk<¶[ä+iwç—ô´bz±[2Y>_Ð!SÆs>w
+ŒÌîüàZ°Âs­q/rZ㾎ƒÏ<‡@Å{k½Ÿƒ˯:twÔüåÌcò‚q£Ïw´	Ê|Ñ]*fFÅ@5fם*ä.nU:ÂÉ~%W^ Ãû阋2ëêònOÓUŠžÍZÔ*û‰”ãB!Y^¬$¼m»ÎöGJó	lH§“¸ðaÔzœæ†:î®Ešœzx¨‡µÈB¡qAŸ,Õâ{õ)V]{<ÚŠ­8¾nàüYQô,åãY¿”Ý
+ò6èžäÞ¡}r9vŽµ(
+?à·õvàE5ØþÏ1{–‚Ê=neí
+aïb¥×2HzñrÔeb>´ïÞ¶ûÓ¡¡Î#Y¥·æƒ!ÏÀÐà-Û@Ê.ÖÇp™Uä²`j’ÏpépP•·ˆ4Ïô®€ì¬ ›xw
+|°ÍÐ=RÓ]‹§x `}„ùf¹ÊŸä1DÅÔ,óœX~fž"JÇY®ÕÊÀJ@j’;Kÿ‹ˆ)ÓŒì,Ð		Ú%ýÊ¡«¿R»eIU~Ò=š$¸•óäçfM+ƒôþÕ¤:Ð Å 0™®â#zQ z}FLààK¦¥î;?\ÕýPÔ£Ñs­Ç
+ù9*ಘtç¢lËåBÿñÅ%½‘Ώîü1 •i&ž¥ ¹˜l±læç„`6¢Fc×+4A\yðx ‚Æ9`ìj×CuSYäÓW?~OÝ~<u@­¹«GN¦9éf—4ãŒãž9÷¶žºúÓñ¸‡0}÷à «ÔÁ¯h5wùØïtÛҁ–±g¶â\ú4Á¹,¯ˆÇv#”~Fcm…;ƒlNi
+‡
+6±ýÚ	Ww1ÍBL<:í. óˆÔa¢ž°ó9%
+ÉÑhòÕ„øS”²qK[ö§Î¾œRõ|J)9jc„_†	ñl5¹ÓÚÃ/Ro@“YÆr.–Qå–œ¿IÀóC¦á¿Y©öL蔞É)Aã Ÿ&eä‘´	1ÅœÇ3f£Nø©V™CWoîÓ4÷ŒV‹‚àò•Èžìé\íÛØ…v¢UH™ïÚ»Þ¡D_œ”æ˜Í;ÜVX>
+r6 Ç
+€cîUÿšòù0Ä(oJ°0o ,|¹F…êiŠ‹h÷Äô,äÉÐð¸›Î×Áz8‡íH¼ˆbo(	u&— 7ê²Tæ‚"#(ĹòP+`ϳœ˜Lƒ6™ÈÇ,Gk§VÛ¸Z§žœVF9šX:fΨ¨ËÕ"›&4/s
+%ŠäÐ:±FˆmÐqWöN
+E¾Ð_A¸(fÅ*eJæ¯áö˜-®Û{ŠÐ«8½9¡§|Þ·è 
+fÂ,ÅÒ¶{;´ÍS	Ki4*‹ ®qʏ§Þé?6›r®jÔ×µ'pxie§A7•ª°…(
+ÕU9Eèm uð­É!ùêí/ŽÝ 7nwÎO"`út
+Š]7ýàÝÎжô—0,—5Õb>†ñªÞÒ°/4ÍGçKIB£
+dÁp½ó–99o”k¦aߌid%Ó2‡n E…«m½¯L$HhÎiO	BO]d}³×>tõà»Æ1g™ðï,3fÂQ(_¯ayƒ3¾
+àXPê^`2Ë-½Äˆ”¾atJ2•Îª>äTÏÊûÊÎÝræƒ:Ê›åfUÝ}pZâªV“Ñ¥IÕR!­¨QÙ#å`¸mÂK¶«\V%RŸïº\ ‘fšdFF„Ó£–Ç£EwÂ,DPFÀШŠä?Öú>g2°ÖÕV 7¿«ˆn³uÖ…SÚc½í©ìÁÙX¥òUèýRjì0xJTâ†n•ð¨adiÈ$J¾"pÎ1¹)ǽ/+^Ä8#îÀòŒwØ®}.`I×PEŠlU¤0‡Ãs˜‚Ï$U‘å7Xã¤
+]åv{:œ ‘†ÅX‚N\’Dâ)Õ¬öu.=“öòÁÒÚ$½<ÝZúXÝoO}O×,Úg’š„õŒ÷þ÷»¿ýãÝO￯æbÀìæA\çãˆ÷þ9›bŽÏŽ¡‹ˆž†ªG¬±lûH3ömYQÓɾ¾ëÊÎÔþýTHDš±ÈOÐ}Y /DÏÕιøªæÈ÷SS=“¡œ™|…PÙЕMÒ;Ìaº©›/Óè ºË$G,Ḟ]rÐãøRd øÆ…Wž¡x8õQ7µ+±ú;òÕpàä5Ï“OI5C/É̪ú—ïRðhŒñú#¤®i>Þ2Æbƒ
+’VµH»Î“H—ûYÊ-V—6Lª±®ÔïÚÓ¾ò÷Rã*÷x,CéHJ&e±òñãÍ“€@qßµ¸J†tVºÄ£ûÓ5ä~J¦aýœ–ºÆ¹ó1ŸœÕCF½RŽ`ä+å¡îµ±ýK’ÅtªžWV„6"ÔU¤Ìä"rÉ«µd,›ªõ)j5\ŤqžÒ¥±‘KKÍÔdAßp;gEliήʂŽK)¨Œ-Cñ:À«àºÞÆ±rÊ™ßkmŠe*›Lx£üý³Æm8,‡û¨Ç•¦àyÜàÜŽpBgÃÕG¡A×!äC}}ò‰Ü×™àÿàâød§Y4N	Z»v_¹Â7 ¥…©àÖÞýsZ†™B/ÊÞy0õ«Éu§í­Gð4Ϲf7&›íPÒ
+…Ô¸ò‚;\¬¯6Z{ïnjî~¿ða†Êซ£ ö6m³±‡ãà”7
+
+¹Ëe¯äÁn?S±þ«ôQö¦ õ£Ý~%yÿeƒÿj¾Ý›Qãþzû˯ïq÷?0V®Vð%-èùkKÅœ*/“ÉW¿¨® >"ÔÁ•+6ÞÌ)bÇÞ®ïm.I1}Zsáµ±ß|½ô±M^°éV’Q…Ÿ>$ÑóI\i/OîZw'c¨  ˜BRÈU¬‚¡E ÑÜïÙÙâ
+¼´
+£«MÊŒæ‹yƒìÚêä^ùÛÐþ6Ç×b¯yÀ×è»cpr–×<ò%ºöÈä›ðŽÏµÿ:sʾ” Ûæb®\×ê;#—¬¶Ñ
+¡d:ÓOùÉøö(î É;r]H+j׳ÜøÙŸP䚥æl—X³Ü¹)ω&|Øa”»å]ˆ}	²fWñ/ò5ïpˆn4±5}­V„”¤Xªì –*õ:wMz
+÷/¼kÒÓ­Õ‹Ê®RñïÃTóK'—YűÞ“çÏÄBà'îá½àâ
+püÚdÊ÷Æl.~9uöaäûÛ7ÿÄö
 endstream
 endobj
 681 0 obj <<
@@ -3074,214 +3075,215 @@
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[1 0 0]
-/Rect [446.075 177.417 467.993 188.321]
+/Rect [446.075 134.592 467.993 145.496]
 /A << /S /GoTo /D (Rfn.pomp.Rdash.class) >>
 >> endobj
 683 0 obj <<
 /D [681 0 R /XYZ 99.346 724.594 null]
 >> endobj
-684 0 obj <<
-/D [681 0 R /XYZ 100.346 123.514 null]
->> endobj
 680 0 obj <<
-/Font << /F44 202 0 R /F36 153 0 R /F22 154 0 R /F35 152 0 R >>
+/Font << /F44 202 0 R /F36 153 0 R /F22 154 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-702 0 obj <<
-/Length 3134      
+701 0 obj <<
+/Length 3220      
 /Filter /FlateDecode
 >>
 stream
-xÚíZKÛF¾ûWè¶`Ô&ûÁnf,’Ed½læçÀ¡ZcŠHʏýõ©ªn>Õ²5ä°šÍb±ªº_'Þ6ñæÇWß?½zýF¤›Œe)O7OûMÇLÈt£“„¥"Û<í6¿DB>üúôŸ×o¤œQ
-“±XàC4çætFªW±çýú
-ç3ò­Ð	Ño¹†MážjÏmSØ®sü…šóϘQÉÀþÑQ,X¦,IÕ@°ûjœÚ“Í»Kk¿‚L÷sÚŠ4‹òz`ÉKS>vïleû¦ð”‚q“
-„e
-L¥¦ŸÜâP>$qôÿ³þÞ¹}HLÔ<WöĶ*SÑyqôÏU‡f‹o“)H»Ù‚OdJy+•ýñô°å‰ŠNù;bÚ¹ËKgÝ¢Ù»ßÜýìÊýÞÒmÝã–ŒºËsgû%u´ƒý¥.ú²©;浝{*†1hûSí9ØÚ¶yåœ#/·ÝmQ¾c^äÈpþFyÏ”u|Êžš­qË.pJ*aFêч–Þ8—[_=žùë¦
-ºfÊðÞ}›_‘×NÎgÒ\D]s²\EŽ¹7zÝÔ}[âÞû2¯¾Í,‰ö ÝíeçV-8oS?ú †ÌlZŒm·üßUˆ'Z2“M¡ºʺ[%……ì"eY6í˜?prPYwB+pi¾<Œg‹îËUíH3÷@ÕœíÎm÷ûízPáT•µõûN5X
-Ö„íU§ûž<¸}P*‚˜ÜDÿ¾´-¸lõé!Uª\™¨Ü;Ò¦¶ÿ@ÒkÆéè5°ô‚‚zMåäõ4%2X`¡â®ìŠÖö ŽˆÁ‹Ë­’%ŝ¦ö¨n|(+ÐóàéwsˆK·Û](²a….‚÷ó3ˆû±<ùÀ[oc[v`˜ÀÀAæðè‡KeÛÀÓð\ò¸Ð$uš€Mñ°„!ëÞíJB²XËÁ1,¾•uåés¾$5ãñøˆ‹©;ý6f©s1ضëíùK¯S2}ºôu§è>Ϧ†«{ògºfùኤL+³Vdg?„)g‰4/ÔDÞ‘™¶B	H«ðÍ[rHùh‡ÀÈË*‡á&
-Þ`|8O‡Ró¢ÇKÁ¡\ªÑ_
-¥pÜ/lÛç¥ß, Á•õ¥¹tÛ!ttôß¼¥hhá{Ox„g:ôu>¸¸ŽÊÓÊ!Ä»{M :é¥iýAg»s9f ¡2*›¾6"
-(ü^)ë¶1Þ:k_rē߾䮩×3-†+X ^ôô`Ð($
-Un\P&Dm|G2lw©’¨Ÿ“Áâh«óP=%Køª|îšâ2YòžS<Ÿ‹ù¨Ý¿>c—;¬¹ÖîíU´ð)Ž¦<Զףּ ~µL§°PL{ˆZ'§#Åß¼¬(Ïyu'ÚC‰ÅòK_H3áGRäíÏs·»‹5wÎMוä#x…é›gçâ$C]`yÞ\ ø¾8óæ•£°{t6zuië½þSÈ™Ÿ
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/pomp -r 584


More information about the pomp-commits mailing list