mahout-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gsing...@apache.org
Subject svn commit: r881650 [2/3] - in /lucene/mahout/site: publish/ publish/skin/images/ src/documentation/content/xdocs/
Date Wed, 18 Nov 2009 02:47:13 GMT
Modified: lucene/mahout/site/publish/taste.html
URL: http://svn.apache.org/viewvc/lucene/mahout/site/publish/taste.html?rev=881650&r1=881649&r2=881650&view=diff
==============================================================================
--- lucene/mahout/site/publish/taste.html (original)
+++ lucene/mahout/site/publish/taste.html Wed Nov 18 02:47:12 2009
@@ -253,482 +253,695 @@
 </ul>
 </div>
 
-
-<a name="N10011"></a><a name="overview"></a>
+    
+<a name="N10013"></a><a name="overview"></a>
 <h2 class="boxed">Overview</h2>
 <div class="section">
 <p>Taste is a flexible, fast collaborative filtering engine for Java. The engine takes users'
-preferences for items ("tastes") and returns estimated preferences for other items. For example, a
-site that sells books or CDs could easily use Taste to figure out, from past purchase data, which
-CDs a customer might be interested in listening to.</p>
+        preferences for items ("tastes") and returns estimated preferences for other items. For example, a
+        site that sells books or CDs could easily use Taste to figure out, from past purchase data, which
+        CDs a customer might be interested in listening to.
+      </p>
 <p>Taste provides a rich set of components from which you can construct a customized recommender
-system from a selection of algorithms. Taste is designed to be enterprise-ready; it's designed for
-performance, scalability and flexibility.
-Taste is not just for Java; it can be run as an external server which exposes recommendation logic
-to your application via web services and HTTP.</p>
+        system from a selection of algorithms. Taste is designed to be enterprise-ready; it's designed for
+        performance, scalability and flexibility.
+        Taste is not just for Java; it can be run as an external server which exposes recommendation logic
+        to your application via web services and HTTP.
+      </p>
 <p>Top-level packages define the Taste interfaces to these key abstractions:</p>
 <ul>
-  
+        
 <li>
+          
 <span class="codefrag">DataModel</span>
+        
 </li>
-  
+        
 <li>
-<span class="codefrag">UserSimilarity</span> and <span class="codefrag">ItemSimilarity</span>
+          
+<span class="codefrag">UserSimilarity</span>
+          and
+          <span class="codefrag">ItemSimilarity</span>
+        
 </li>
-  
+        
 <li>
+          
 <span class="codefrag">UserNeighborhood</span>
+        
 </li>
-  
+        
 <li>
+          
 <span class="codefrag">Recommender</span>
+        
 </li>
-
+      
 </ul>
-<p>Subpackages of <span class="codefrag">org.apache.mahout.cf.taste.impl</span> hold implementations of these interfaces.
-These are the pieces from which you will build your own recommendation engine. That's it!
-For the academically inclined, Taste supports both <em>memory-based</em> and <em>item-based</em>
-recommender systems, <em>slope one</em> recommenders, and a couple other experimental implementations.
-It does not currently support <em>model-based</em> recommenders.</p>
+<p>Subpackages of
+        <span class="codefrag">org.apache.mahout.cf.taste.impl</span>
+        hold implementations of these interfaces.
+        These are the pieces from which you will build your own recommendation engine. That's it!
+        For the academically inclined, Taste supports both
+        <em>memory-based</em>
+        and
+        <em>item-based</em>
+        recommender systems,
+        <em>slope one</em>
+        recommenders, and a couple other experimental implementations.
+        It does not currently support
+        <em>model-based</em>
+        recommenders.
+      </p>
 </div>
 
-
-<a name="N10048"></a><a name="architecture"></a>
+    
+<a name="N10053"></a><a name="architecture"></a>
 <h2 class="boxed">Architecture</h2>
 <div class="section">
 <p class="centertext">
-<img alt="Taste Architecture" height="1060" src="images/taste-architecture.png" width="442"></p>
+        
+<img alt="Taste Architecture" height="1060" src="images/taste-architecture.png" width="442">
+      </p>
 <p>This diagram shows the relationship between various Taste components in a user-based recommender.
-An item-based recommender system is similar except that there are no PreferenceInferrers or Neighborhood
-algorithms involved.</p>
-<a name="N10058"></a><a name="Recommender"></a>
+        An item-based recommender system is similar except that there are no PreferenceInferrers or Neighborhood
+        algorithms involved.
+      </p>
+<a name="N10066"></a><a name="Recommender"></a>
 <h3 class="boxed">Recommender</h3>
-<p>A <span class="codefrag">Recommender</span> is the core abstraction in Taste. Given a <span class="codefrag">DataModel</span>, it can produce
-recommendations. Applications will most likely use the <span class="codefrag">GenericUserBasedRecommender</span> implementation
-or <span class="codefrag">GenericItemBasedRecommender</span>, possibly decorated by <span class="codefrag">CachingRecommender</span>.</p>
-<a name="N10070"></a><a name="DataModel"></a>
+<p>A
+          <span class="codefrag">Recommender</span>
+          is the core abstraction in Taste. Given a<span class="codefrag">DataModel</span>, it can produce
+          recommendations. Applications will most likely use the
+          <span class="codefrag">GenericUserBasedRecommender</span>
+          implementation
+          or<span class="codefrag">GenericItemBasedRecommender</span>, possibly decorated by<span class="codefrag">CachingRecommender</span>.
+        </p>
+<a name="N1007F"></a><a name="DataModel"></a>
 <h3 class="boxed">DataModel</h3>
-<p>A <span class="codefrag">DataModel</span> is the interface to information about user preferences. An implementation might
-draw this data from any source, but a database is the most likely source. Taste provides <span class="codefrag">MySQLJDBCDataModel</span>
-to access preference data from a database via JDBC, though many applications will want to write their own.
-Taste also provides a <span class="codefrag">FileDataModel</span>.</p>
-<p>There are no abstractions for a user or item in the object model (not anymore). Users and items are identified
-solely by an ID value in the framework. Further, this ID value must be numeric; it is a Java <span class="codefrag">long</span>
-type through the APIs. A <span class="codefrag">Preference</span> object or <span class="codefrag">PreferenceArray</span> object encapsulates
-the relation between user and preferred items (or items and users preferring them).</p>
+<p>A
+          <span class="codefrag">DataModel</span>
+          is the interface to information about user preferences. An implementation might
+          draw this data from any source, but a database is the most likely source. Taste provides
+          <span class="codefrag">MySQLJDBCDataModel</span>
+          to access preference data from a database via JDBC, though many applications will want to write their own.
+          Taste also provides a<span class="codefrag">FileDataModel</span>.
+        </p>
+<p>There are no abstractions for a user or item in the object model (not anymore). Users and items are
+          identified
+          solely by an ID value in the framework. Further, this ID value must be numeric; it is a Java
+          <span class="codefrag">long</span>
+          type through the APIs. A
+          <span class="codefrag">Preference</span>
+          object or
+          <span class="codefrag">PreferenceArray</span>
+          object encapsulates
+          the relation between user and preferred items (or items and users preferring them).
+        </p>
 <p>Finally, Taste supports, in various ways, a so-called "boolean" data model in which users do not express
-preferences of varying strengths for items, but simply express an association or none at all. For example, while 
-users might express a preference from 1 to 5 in the context of a movie recommender site, there may be no
-notion of a preference value between users and pages in the context of recommending pages on a web site: there
-is only a notion of an association, or none, between a user and pages that have been visited.</p>
-<a name="N10091"></a><a name="UserSimilarity%2C+ItemSimilarity"></a>
+          preferences of varying strengths for items, but simply express an association or none at all. For example,
+          while
+          users might express a preference from 1 to 5 in the context of a movie recommender site, there may be no
+          notion of a preference value between users and pages in the context of recommending pages on a web site: there
+          is only a notion of an association, or none, between a user and pages that have been visited.
+        </p>
+<a name="N100A1"></a><a name="UserSimilarity%2C+ItemSimilarity"></a>
 <h3 class="boxed">UserSimilarity, ItemSimilarity</h3>
-<p>A <span class="codefrag">UserSimilarity</span> defines a notion of similarity between two <span class="codefrag">User</span>s.
-This is a crucial part of a recommendation engine. These are attached to a <span class="codefrag">Neighborhood</span> implementation.
-<span class="codefrag">ItemSimilarity</span>s are analagous, but find similarity between <span class="codefrag">Item</span>s.</p>
-<a name="N100A9"></a><a name="UserNeighborhood"></a>
+<p>A
+          <span class="codefrag">UserSimilarity</span>
+          defines a notion of similarity between two<span class="codefrag">User</span>s.
+          This is a crucial part of a recommendation engine. These are attached to a
+          <span class="codefrag">Neighborhood</span>
+          implementation.
+          <span class="codefrag">ItemSimilarity</span>s are analagous, but find similarity between<span class="codefrag">Item</span>s.
+        </p>
+<a name="N100BA"></a><a name="UserNeighborhood"></a>
 <h3 class="boxed">UserNeighborhood</h3>
 <p>In a user-based recommender, recommendations are produced by finding a "neighborhood" of
-similar users near a given user. A <span class="codefrag">UserNeighborhood</span> defines a means of determining
-that neighborhood &mdash; for example, nearest 10 users. Implementations typically need a
-<span class="codefrag">UserSimilarity</span> to operate.</p>
+          similar users near a given user. A
+          <span class="codefrag">UserNeighborhood</span>
+          defines a means of determining
+          that neighborhood &mdash; for example, nearest 10 users. Implementations typically need a
+          <span class="codefrag">UserSimilarity</span>
+          to operate.
+        </p>
 </div>
 
-
-<a name="N100B9"></a><a name="requirements"></a>
+    
+<a name="N100CB"></a><a name="requirements"></a>
 <h2 class="boxed">Requirements</h2>
 <div class="section">
-<a name="N100BE"></a><a name="Required"></a>
+<a name="N100D1"></a><a name="Required"></a>
 <h3 class="boxed">Required</h3>
 <ul>
- 
+          
 <li>
+            
 <a href="http://java.sun.com/j2se/1.5.0/index.jsp">Java / J2SE 6.0</a>
+          
 </li>
-
+        
 </ul>
-<a name="N100CC"></a><a name="Optional"></a>
+<a name="N100E2"></a><a name="Optional"></a>
 <h3 class="boxed">Optional</h3>
 <ul>
- 
+          
 <li>
-<a href="http://ant.apache.org/">Apache Ant</a> 1.5 or later and <a href="http://maven.apache.org">Maven</a>
-  2.0.10 or later, if you want to build from source or build examples. (Mac users note that even OS X 10.5
-  ships with Maven 2.0.6, which will not work.)</li>
- 
-<li>Taste web applications require a <a href="http://java.sun.com/products/servlet/index.jsp">Servlet 2.3+</a>
-  container, such as
-  <a href="http://jakarta.apache.org/tomcat/">Jakarta Tomcat</a>. It may in fact work with older
-  containers with slight modification.</li>
- 
-<li>
-<span class="codefrag">MySQLJDBCDataModel</span> implementation requires a
-  <a href="http://www.mysql.com/products/mysql/">MySQL 4.x</a> (or later) database.
-  Again, it may be made to work with earlier versions or other databases with slight changes.</li>
-
+            
+<a href="http://ant.apache.org/">Apache Ant</a>
+            1.5 or later and
+            <a href="http://maven.apache.org">Maven</a>
+            2.0.10 or later, if you want to build from source or build examples. (Mac users note that even OS X 10.5
+            ships with Maven 2.0.6, which will not work.)
+          </li>
+          
+<li>Taste web applications require a
+            <a href="http://java.sun.com/products/servlet/index.jsp">Servlet 2.3+</a>
+            container, such as
+            <a href="http://jakarta.apache.org/tomcat/">Jakarta Tomcat</a>. It may in fact work with older
+            containers with slight modification.
+          </li>
+          
+<li>
+            
+<span class="codefrag">MySQLJDBCDataModel</span>
+            implementation requires a
+            <a href="http://www.mysql.com/products/mysql/">MySQL 4.x</a>
+            (or later) database.
+            Again, it may be made to work with earlier versions or other databases with slight changes.
+          </li>
 
+        
 </ul>
 </div>
 
-
-<a name="N100F4"></a><a name="demo"></a>
+    
+<a name="N1010D"></a><a name="demo"></a>
 <h2 class="boxed">Demo</h2>
 <div class="section">
-<p>To build and run the demo, follow the instructions below, which are written for Unix-like operating systems:</p>
+<p>To build and run the demo, follow the instructions below, which are written for Unix-like operating systems:
+      </p>
 <ol>
-  
+        
 <li>Obtain a copy of the Mahout distribution, either from SVN or as a downloaded archive.</li>
-  
+        
 <li>Download the "1 Million MovieLens Dataset" from
-   <a href="http://www.grouplens.org/">http://www.grouplens.org/</a>.</li>
-  
-<li>Unpack the archive and copy <span class="codefrag">movies.dat</span> and <span class="codefrag">ratings.dat</span> to
-   <span class="codefrag">trunk/taste-web/src/main/resources/org/apache/mahout/cf/taste/example/grouplens</span> under the Mahout distribution
-   directory.</li>
-  
-<li>Navigate to the directory where you unpacked the Mahout distribution, and navigate to <span class="codefrag">trunk</span>.</li>
-  
-<li>Run <span class="codefrag">mvn install</span>, which builds and installs Mahout core to your local repository</li>
-  
+          <a href="http://www.grouplens.org/">http://www.grouplens.org/</a>.
+        </li>
+        
+<li>Unpack the archive and copy
+          <span class="codefrag">movies.dat</span>
+          and
+          <span class="codefrag">ratings.dat</span>
+          to
+          <span class="codefrag">trunk/taste-web/src/main/resources/org/apache/mahout/cf/taste/example/grouplens</span>
+          under the Mahout distribution
+          directory.
+        </li>
+        
+<li>Navigate to the directory where you unpacked the Mahout distribution, and navigate to<span class="codefrag">trunk</span>.
+        </li>
+        
+<li>Run<span class="codefrag">mvn install</span>, which builds and installs Mahout core to your local repository
+        </li>
+        
 <li>
+          
 <span class="codefrag">cd taste-web</span>
+        
 </li>
-  
+        
 <li>
+          
 <span class="codefrag">cp ../examples/target/grouplens.jar ./lib</span>
+        
 </li>
-  
-<li>Edit <span class="codefrag">recommender.properties</span> and fill in the <span class="codefrag">recommender.class</span>:
-      <span class="codefrag">recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender</span>
-  
+        
+<li>Edit
+          <span class="codefrag">recommender.properties</span>
+          and fill in the<span class="codefrag">recommender.class</span>:
+          <span class="codefrag">recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender</span>
+        
 </li>
-  
+        
 <li>
+          
 <span class="codefrag">mvn package</span>
+        
 </li>
-  
+        
 <li>
-<span class="codefrag">mvn jetty:run-war</span>. You may need to give Maven more memory: in a bash shell, <span class="codefrag">export MAVEN_OPTS=-Xmx1024M</span>
-</li>
-  
-<li>Get recommendations by accessing the web application in your browser:<br>
-    
+<span class="codefrag">mvn jetty:run-war</span>. You may need to give Maven more memory: in a bash shell,
+          <span class="codefrag">export MAVEN_OPTS=-Xmx1024M</span>
+        
+</li>
+        
+<li>Get recommendations by accessing the web application in your browser:
+          <br>
+          
 <span class="codefrag">http://localhost:8080/RecommenderServlet?userID=1</span>
+          
 <br>
-    This will produce a simple preference-item ID list which could be consumed by a client application.
-    Get more useful human-readable output with the <span class="codefrag">debug</span> parameter:<br>
-    
+          This will produce a simple preference-item ID list which could be consumed by a client application.
+          Get more useful human-readable output with the
+          <span class="codefrag">debug</span>
+          parameter:
+          <br>
+          
 <span class="codefrag">http://localhost:8080/RecommenderServlet?userID=1&amp;debug=true</span>
+        
 </li>
-
+      
 </ol>
-<p>Incidentally, Taste's web service interface may then be found at:<br>
-
+<p>Incidentally, Taste's web service interface may then be found at:
+        <br>
+        
 <span class="codefrag">http://localhost:8080/RecommenderService.jws</span>
+        
 <br>
-Its WSDL file will be here...<br>
-
+        Its WSDL file will be here...
+        <br>
+        
 <span class="codefrag">http://localhost:8080/RecommenderService.jws?wsdl</span>
+        
 <br>
-... and you can even access it in your browser via a simple HTTP request:<br>
-
+        ... and you can even access it in your browser via a simple HTTP request:
+        <br>
+        
 <span class="codefrag">.../RecommenderService.jws?method=recommend&amp;userID=1&amp;howMany=10</span>
+      
 </p>
 <p>
-<em>Note: the exact URL where the service is deployed depends on how you deployed the application in your 
-app server. For instance if you deployed it as a .war file called 'mahout-taste-webapp.war', it will deploy
-at a URI whose path begins with /mahout-taste-webapp/ instead.</em>
+        
+<em>Note: the exact URL where the service is deployed depends on how you deployed the application in your
+          app server. For instance if you deployed it as a .war file called 'mahout-taste-webapp.war', it will deploy
+          at a URI whose path begins with /mahout-taste-webapp/ instead.
+        </em>
+      
 </p>
 </div>
 
-
-<a name="N10168"></a><a name="examples"></a>
+    
+<a name="N10190"></a><a name="examples"></a>
 <h2 class="boxed">Examples</h2>
 <div class="section">
-<a name="N1016D"></a><a name="User-based+Recommender"></a>
+<a name="N10196"></a><a name="User-based+Recommender"></a>
 <h3 class="boxed">User-based Recommender</h3>
 <p>User-based recommenders are the "original", conventional style of recommender system. They can produce good
-recommendations when tweaked properly; they are not necessarily the fastest recommender systems and
-are thus suitable for small data sets (roughly, less than ten million ratings). We'll start with an example of this.</p>
-<p>First, create a <span class="codefrag">DataModel</span> of some kind. Here, we'll use a simple on based
-on data in a file. The file should be in CSV format, with lines of the form <span class="codefrag">userID,itemID,prefValue</span>
-(e.g. "39505,290002,3.5"):</p>
+          recommendations when tweaked properly; they are not necessarily the fastest recommender systems and
+          are thus suitable for small data sets (roughly, less than ten million ratings). We'll start with an example of
+          this.
+        </p>
+<p>First, create a
+          <span class="codefrag">DataModel</span>
+          of some kind. Here, we'll use a simple on based
+          on data in a file. The file should be in CSV format, with lines of the form
+          <span class="codefrag">userID,itemID,prefValue</span>
+          (e.g. "39505,290002,3.5"):
+        </p>
 <pre>DataModel model = new FileDataModel(new File("data.txt"));
-</pre>
-<p>We'll use the PearsonCorrelationSimilarity implementation of <span class="codefrag">UserSimilarity</span> as our user
-correlation algorithm, and add an optional preference inference algorithm:</p>
+        </pre>
+<p>We'll use the PearsonCorrelationSimilarity implementation of
+          <span class="codefrag">UserSimilarity</span>
+          as our user
+          correlation algorithm, and add an optional preference inference algorithm:
+        </p>
 <pre>UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(model);
-// Optional:
-userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer());
-</pre>
-<p>Now we create a <span class="codefrag">UserNeighborhood</span> algorithm. Here we use nearest-3:</p>
+          // Optional:
+          userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer());
+        </pre>
+<p>Now we create a
+          <span class="codefrag">UserNeighborhood</span>
+          algorithm. Here we use nearest-3:
+        </p>
 <pre>UserNeighborhood neighborhood =
-  new NearestNUserNeighborhood(3, userSimilarity, model);
-</pre>
-<p>Now we can create our <span class="codefrag">Recommender</span>, and add a caching decorator:</p>
+          new NearestNUserNeighborhood(3, userSimilarity, model);
+        </pre>
+<p>Now we can create our<span class="codefrag">Recommender</span>, and add a caching decorator:
+        </p>
 <pre>Recommender recommender =
-  new GenericUserBasedRecommender(model, neighborhood, userSimilarity);
-Recommender cachingRecommender = new CachingRecommender(recommender);
-</pre>
+          new GenericUserBasedRecommender(model, neighborhood, userSimilarity);
+          Recommender cachingRecommender = new CachingRecommender(recommender);
+        </pre>
 <p>Now we can get 10 recommendations for user ID "1234" &mdash; done!</p>
 <pre>List&lt;RecommendedItem&gt; recommendations =
-  cachingRecommender.recommend(1234, 10);
-</pre>
-<a name="N101A3"></a><a name="Item-based+Recommender"></a>
+          cachingRecommender.recommend(1234, 10);
+        </pre>
+<a name="N101CD"></a><a name="Item-based+Recommender"></a>
 <h3 class="boxed">Item-based Recommender</h3>
 <p>We could have created an item-based recommender instead. Item-based recommender base recommendation
-not on user similarity, but on item similarity. In theory these are about the same approach to the
-problem, just from different angles. However the similarity of two items is relatively fixed, more so
-than the similarity of two users. So, item-based recommenders can use pre-computed similarity values
-in the computations, which make them much faster. For large data sets, item-based recommenders
-are more appropriate.</p>
-<p>Let's start over, again with a <span class="codefrag">FileDataModel</span> to start:</p>
+          not on user similarity, but on item similarity. In theory these are about the same approach to the
+          problem, just from different angles. However the similarity of two items is relatively fixed, more so
+          than the similarity of two users. So, item-based recommenders can use pre-computed similarity values
+          in the computations, which make them much faster. For large data sets, item-based recommenders
+          are more appropriate.
+        </p>
+<p>Let's start over, again with a
+          <span class="codefrag">FileDataModel</span>
+          to start:
+        </p>
 <pre>DataModel model = new FileDataModel(new File("data.txt"));
-</pre>
-<p>We'll also need an <span class="codefrag">ItemSimilarity</span>. We could use <span class="codefrag">PearsonCorrelationSimilarity</span>,
-which computes item similarity in realtime, but, this is generally too slow to be useful.
-Instead, in a real application, you would feed a list of pre-computed correlations to
-a <span class="codefrag">GenericItemSimilarity</span>:</p>
+        </pre>
+<p>We'll also need an<span class="codefrag">ItemSimilarity</span>. We could use<span class="codefrag">PearsonCorrelationSimilarity</span>,
+          which computes item similarity in realtime, but, this is generally too slow to be useful.
+          Instead, in a real application, you would feed a list of pre-computed correlations to
+          a<span class="codefrag">GenericItemSimilarity</span>:
+        </p>
 <pre>// Construct the list of pre-compted correlations
-Collection&lt;GenericItemSimilarity.ItemItemSimilarity&gt; correlations =
-  ...;
-ItemSimilarity itemSimilarity =
-  new GenericItemSimilarity(correlations);
+          Collection&lt;GenericItemSimilarity.ItemItemSimilarity&gt; correlations =
+          ...;
+          ItemSimilarity itemSimilarity =
+          new GenericItemSimilarity(correlations);
 
-</pre>
+        </pre>
 <p>Then we can finish as before to produce recommendations:</p>
 <pre>Recommender recommender =
-  new GenericItemBasedRecommender(model, itemSimilarity);
-Recommender cachingRecommender = new CachingRecommender(recommender);
-...
-List&lt;RecommendedItem&gt; recommendations =
-  cachingRecommender.recommend(1234, 10);
-</pre>
-<a name="N101CA"></a><a name="Slope-One+Recommender"></a>
+          new GenericItemBasedRecommender(model, itemSimilarity);
+          Recommender cachingRecommender = new CachingRecommender(recommender);
+          ...
+          List&lt;RecommendedItem&gt; recommendations =
+          cachingRecommender.recommend(1234, 10);
+        </pre>
+<a name="N101F5"></a><a name="Slope-One+Recommender"></a>
 <h3 class="boxed">Slope-One Recommender</h3>
-<p>This is a simple yet effective <span class="codefrag">Recommender</span> and we present another example to
-round out the list:</p>
+<p>This is a simple yet effective
+          <span class="codefrag">Recommender</span>
+          and we present another example to
+          round out the list:
+        </p>
 <pre>DataModel model = new FileDataModel(new File("data.txt"));
-// Make a weighted slope one recommender
-Recommender recommender = new SlopeOneRecommender(model);
-Recommender cachingRecommender = new CachingRecommender(recommender);
-</pre>
+          // Make a weighted slope one recommender
+          Recommender recommender = new SlopeOneRecommender(model);
+          Recommender cachingRecommender = new CachingRecommender(recommender);
+        </pre>
 </div>
 
-
-<a name="N101DA"></a><a name="integration"></a>
+    
+<a name="N10206"></a><a name="integration"></a>
 <h2 class="boxed">Integration with your application</h2>
 <div class="section">
-<a name="N101DF"></a><a name="Direct"></a>
+<a name="N1020C"></a><a name="Direct"></a>
 <h3 class="boxed">Direct</h3>
-<p>You can create a <span class="codefrag">Recommender</span>, as shown above, wherever you like in your Java application, and use it. This
-includes simple Java applications or GUI applications, server applications, and J2EE web applications.</p>
-<a name="N101EB"></a><a name="Standalone+server"></a>
+<p>You can create a<span class="codefrag">Recommender</span>, as shown above, wherever you like in your Java application, and use
+          it. This
+          includes simple Java applications or GUI applications, server applications, and J2EE web applications.
+        </p>
+<a name="N10219"></a><a name="Standalone+server"></a>
 <h3 class="boxed">Standalone server</h3>
 <p>Taste can also be run as an external server, which may be the only option for non-Java applications.
-A Taste Recommender can be exposed as a web application via <span class="codefrag">org.apach.mahout.cf.taste.web.RecommenderServlet</span>,
-and your application can then access recommendations via simple HTTP requests and response, or as a
-full-fledged SOAP web service. See above, and see
-<span class="codefrag">the javadoc</span> for details.</p>
-<p>To deploy your <span class="codefrag">Recommender</span> as an external server:</p>
+          A Taste Recommender can be exposed as a web application via<span class="codefrag">
+            org.apach.mahout.cf.taste.web.RecommenderServlet</span>,
+          and your application can then access recommendations via simple HTTP requests and response, or as a
+          full-fledged SOAP web service. See above, and see
+          <span class="codefrag">the javadoc</span>
+          for details.
+        </p>
+<p>To deploy your
+          <span class="codefrag">Recommender</span>
+          as an external server:
+        </p>
 <ol>
-  
+          
 <li>Obtain a copy of the Mahout distribution, either from SVN or as a downloaded archive.</li>
-  
-<li>Create an implementation of <span class="codefrag">org.apache.mahout.cf.taste.recommender.Recommender</span> (must have a no-arg constructor).</li>
-  
+          
+<li>Create an implementation of
+            <span class="codefrag">org.apache.mahout.cf.taste.recommender.Recommender</span>
+            (must have a no-arg constructor).
+          </li>
+          
 <li>Compile it and create a JAR file containing your implementation.</li>
-  
-<li>Navigate to the directory where you unpacked the Mahout distribution, and navigate to <span class="codefrag">trunk</span>.</li>
-  
-<li>Run <span class="codefrag">mvn install</span>, which builds and installs Mahout core to your local repository</li>
-  
+          
+<li>Navigate to the directory where you unpacked the Mahout distribution, and navigate to<span class="codefrag">trunk</span>.
+          </li>
+          
+<li>Run<span class="codefrag">mvn install</span>, which builds and installs Mahout core to your local repository
+          </li>
+          
 <li>
+            
 <span class="codefrag">cd taste-web</span>
+          
 </li>
-  
-<li>Copy your .jar file: <span class="codefrag">cp [your .jar file] ./lib</span>
+          
+<li>Copy your .jar file:
+            <span class="codefrag">cp [your .jar file] ./lib</span>
+          
+</li>
+          
+<li>Edit
+            <span class="codefrag">recommender.properties</span>
+            and fill in the
+            <span class="codefrag">recommender.class</span>
+            with your Recommender clas:
+            <span class="codefrag">recommender.class=[your recommender class]</span>
+          
 </li>
-  
-<li>Edit <span class="codefrag">recommender.properties</span> and fill in the <span class="codefrag">recommender.class</span> with your Recommender clas:
-      <span class="codefrag">recommender.class=[your recommender class]</span>
-  
-</li>
-  
+          
 <li>
+            
 <span class="codefrag">mvn package</span>
+          
 </li>
-  
-<li>Your .war file is now available in the build directory as <span class="codefrag">mahout-taste-webapp.war</span> (which can be renamed).</li>
-
+          
+<li>Your .war file is now available in the build directory as
+            <span class="codefrag">mahout-taste-webapp.war</span>
+            (which can be renamed).
+          </li>
+        
 </ol>
 </div>
 
-
-<a name="N1023B"></a><a name="performance"></a>
+    
+<a name="N1026F"></a><a name="performance"></a>
 <h2 class="boxed">Performance</h2>
 <div class="section">
-<a name="N10240"></a><a name="Runtime+Performance"></a>
+<a name="N10275"></a><a name="Runtime+Performance"></a>
 <h3 class="boxed">Runtime Performance</h3>
-<p>The more data you give Taste, the better. Though Taste is designed for performance, you will undoubtedly run into
-performance issues at some point. For best results, consider using the following commad-line flags to your JVM:</p>
+<p>The more data you give Taste, the better. Though Taste is designed for performance, you will undoubtedly run
+          into
+          performance issues at some point. For best results, consider using the following commad-line flags to your
+          JVM:
+        </p>
 <ul>
-  
+          
 <li>
 <span class="codefrag">-server</span>: Enables the server VM, which is generally appropriate for long-running,
-  computation-intensive applications.</li>
-  
+            computation-intensive applications.
+          </li>
+          
 <li>
 <span class="codefrag">-Xms1024m -Xmx1024m</span>: Make the heap as big as possible -- a gigabyte doesn't hurt when dealing
-  with tens millions of preferences. Taste will generally use as much memory as you give it for caching, which helps
-  performance. Set the initial and max size to the same value to avoid wasting time growing the
-  heap, and to avoid having the JVM run minor collections to avoid growing the heap, which will clear
-  cached values.</li>
-  
-<li>
-<span class="codefrag">-da -dsa</span>: Disable all assertions.</li>
-  
-<li>
-<span class="codefrag">-XX:+NewRatio=9</span>: Increase heap allocated to 'old' objects, which is most of them in this framework</li>
-  
-<li>
-<span class="codefrag">-XX:+UseParallelGC -XX:+UseParallelOldGC</span> (multi-processor machines only): Use a GC algorithm designed to take
-  advantage of multiple processors, and designed for throughput. This is a default in J2SE 5.0.</li>
-  
-<li>
-<span class="codefrag">-XX:-DisableExplicitGC</span>: Disable calls to <span class="codefrag">System.gc()</span>. These calls can only
-  hurt in the presence of modern GC algorithms; they may force Taste to remove cached data needlessly.
-  This flag isn't needed if you're sure your code and third-party code you use doesn't call this method.</li>
-
+            with tens millions of preferences. Taste will generally use as much memory as you give it for caching, which
+            helps
+            performance. Set the initial and max size to the same value to avoid wasting time growing the
+            heap, and to avoid having the JVM run minor collections to avoid growing the heap, which will clear
+            cached values.
+          </li>
+          
+<li>
+<span class="codefrag">-da -dsa</span>: Disable all assertions.
+          </li>
+          
+<li>
+<span class="codefrag">-XX:+NewRatio=9</span>: Increase heap allocated to 'old' objects, which is most of them in this
+            framework
+          </li>
+          
+<li>
+            
+<span class="codefrag">-XX:+UseParallelGC -XX:+UseParallelOldGC</span>
+            (multi-processor machines only): Use a GC algorithm designed to take
+            advantage of multiple processors, and designed for throughput. This is a default in J2SE 5.0.
+          </li>
+          
+<li>
+<span class="codefrag">-XX:-DisableExplicitGC</span>: Disable calls to<span class="codefrag">System.gc()</span>. These calls can only
+            hurt in the presence of modern GC algorithms; they may force Taste to remove cached data needlessly.
+            This flag isn't needed if you're sure your code and third-party code you use doesn't call this method.
+          </li>
+        
 </ul>
 <p>Also consider the following tips:</p>
 <ul>
-  
-<li>Use <span class="codefrag">CachingRecommender</span> on top of your custom <span class="codefrag">Recommender</span> implementation.</li>
-  
-<li>When using <span class="codefrag">JDBCDataModel</span>, make sure you've taken basic steps to optimize the table storing
-  preference data. Create a primary key on the user ID and item ID columns, and an index on them. Set them to
-  be non-null. And so on. Tune your database for lots of concurrent reads! When using JDBC,
-  the database is almost always the bottleneck. Plenty of memory and caching are even more important.</li>
+          
+<li>Use
+            <span class="codefrag">CachingRecommender</span>
+            on top of your custom
+            <span class="codefrag">Recommender</span>
+            implementation.
+          </li>
+          
+<li>When using<span class="codefrag">JDBCDataModel</span>, make sure you've taken basic steps to optimize the table storing
+            preference data. Create a primary key on the user ID and item ID columns, and an index on them. Set them to
+            be non-null. And so on. Tune your database for lots of concurrent reads! When using JDBC,
+            the database is almost always the bottleneck. Plenty of memory and caching are even more important.
+          </li>
 
-  
+          
 <li>Also, pooling database connections is essential to performance. If using a J2EE container, it probably
-  provides a way to configure connection pools. If you are creating your own <span class="codefrag">DataSource</span> directly,
-  try wrapping it in <span class="codefrag">org.apache.mahout.cf.taste.impl.model.jdbc.ConnectionPoolDataSource</span>
+            provides a way to configure connection pools. If you are creating your own
+            <span class="codefrag">DataSource</span>
+            directly,
+            try wrapping it in
+            <span class="codefrag">org.apache.mahout.cf.taste.impl.model.jdbc.ConnectionPoolDataSource</span>
+          
 </li>
-  
+          
 <li>See MySQL-specific notes on performance in the javadoc for
-  <span class="codefrag">MySQLJDBCDataModel</span>.</li>
-
+            <span class="codefrag">MySQLJDBCDataModel</span>.
+          </li>
+        
 </ul>
-<a name="N10290"></a><a name="Algorithm+Performance%3A+Which+One+Is+Best%3F"></a>
+<a name="N102C8"></a><a name="Algorithm+Performance%3A+Which+One+Is+Best%3F"></a>
 <h3 class="boxed">Algorithm Performance: Which One Is Best?</h3>
 <p>There is no right answer; it depends on your data, your application, environment, and performance needs.
-Taste provides the building blocks from which you can construct the best <span class="codefrag">Recommender</span> for your
-application. The links below provide research on this topic. You will probably need a bit of trial-and-error to find
-a setup that works best. The code sample above provides a good starting point.</p>
-<p>Fortunately, Taste provides a way to evaluate the accuracy of your <span class="codefrag">Recommender</span> on your own
-data, in <span class="codefrag">org.apache.mahout.cf.taste.eval</span>:</p>
+          Taste provides the building blocks from which you can construct the best
+          <span class="codefrag">Recommender</span>
+          for your
+          application. The links below provide research on this topic. You will probably need a bit of trial-and-error
+          to find
+          a setup that works best. The code sample above provides a good starting point.
+        </p>
+<p>Fortunately, Taste provides a way to evaluate the accuracy of your
+          <span class="codefrag">Recommender</span>
+          on your own
+          data, in<span class="codefrag">org.apache.mahout.cf.taste.eval</span>:
+        </p>
 <pre>DataModel myModel = ...;
-RecommenderBuilder builder = new RecommenderBuilder() {
-    public Recommender buildRecommender(DataModel model) {
-      // build and return the Recommender to evaluate here
-    }
-  };
-RecommenderEvaluator evaluator =
-  new AverageAbsoluteDifferenceRecommenderEvaluator();
-double evaluation = evaluator.evaluate(builder, myModel, 0.9, 1.0);
-</pre>
+          RecommenderBuilder builder = new RecommenderBuilder() {
+          public Recommender buildRecommender(DataModel model) {
+          // build and return the Recommender to evaluate here
+          }
+          };
+          RecommenderEvaluator evaluator =
+          new AverageAbsoluteDifferenceRecommenderEvaluator();
+          double evaluation = evaluator.evaluate(builder, myModel, 0.9, 1.0);
+        </pre>
 <p>For "boolean" data model situations, where there are no notions of preference value, the above evaluation
-based on estimated preference does not make sense. In this case, try this kind of evaluation, which presents
-traditional information retrieval figures like precision and recall, which are more meaningful:</p>
+          based on estimated preference does not make sense. In this case, try this kind of evaluation, which presents
+          traditional information retrieval figures like precision and recall, which are more meaningful:
+        </p>
 <pre>
-...
-RecommenderIRStatsEvaluator evaluator =
-  new GenericRecommenderIRStatsEvaluator();
-IRStatistics stats =
-  evaluator.evaluate(builder, myModel, null, 3,
-                     RecommenderIRStatusEvaluator.CHOOSE_THRESHOLD,
-                     &sect;1.0);
-</pre>
+          ...
+          RecommenderIRStatsEvaluator evaluator =
+          new GenericRecommenderIRStatsEvaluator();
+          IRStatistics stats =
+          evaluator.evaluate(builder, myModel, null, 3,
+          RecommenderIRStatusEvaluator.CHOOSE_THRESHOLD,
+          &sect;1.0);
+        </pre>
 </div>
 
-
-<a name="N102AF"></a><a name="useful"></a>
+    
+<a name="N102E8"></a><a name="useful"></a>
 <h2 class="boxed">Useful Links</h2>
 <div class="section">
 <p>You'll want to look at these packages too, which offer more algorithms and approaches that you
-may find useful:</p>
+        may find useful:
+      </p>
 <ul>
-  
+        
 <li>
-<a href="http://www.nongnu.org/cofi/">Cofi</a>: A Java-Based Collaborative Filtering Library</li>
-  
+<a href="http://www.nongnu.org/cofi/">Cofi</a>: A Java-Based Collaborative Filtering Library
+        </li>
+        
 <li>
+          
 <a href="http://eecs.oregonstate.edu/iis/CoFE/">CoFE</a>
+        
 </li>
-
+      
 </ul>
 <p>Here's a handful of research papers that I've read and found particularly useful:</p>
 <blockquote cite="http://research.microsoft.com/research/pubs/view.aspx?tr_id=166">
+        
 <p>J.S. Breese, D. Heckerman
- and C. Kadie, "<a href="http://research.microsoft.com/research/pubs/view.aspx?tr_id=166">Empirical Analysis of
- Predictive Algorithms for Collaborative Filtering</a>,"
- in Proceedings of the Fourteenth Conference on Uncertainity in Artificial Intelligence (UAI 1998),
- 1998.</p>
+          and C. Kadie, "<a href="http://research.microsoft.com/research/pubs/view.aspx?tr_id=166">Empirical Analysis of
+            Predictive Algorithms for Collaborative Filtering</a>,"
+          in Proceedings of the Fourteenth Conference on Uncertainity in Artificial Intelligence (UAI 1998),
+          1998.
+        </p>
+      
 </blockquote>
 <blockquote cite="http://www10.org/cdrom/papers/519/">
+        
 <p>B. Sarwar, G. Karypis, J. Konstan and J. Riedl,
- "<a href="http://www10.org/cdrom/papers/519/">Item-based collaborative filtering recommendation
- algorithms</a>," in Proceedings of the Tenth International Conference on the World Wide Web (WWW 10),
- pp. 285-295, 2001.</p>
+          "<a href="http://www10.org/cdrom/papers/519/">Item-based collaborative filtering recommendation
+            algorithms</a>," in Proceedings of the Tenth International Conference on the World Wide Web (WWW 10),
+          pp. 285-295, 2001.
+        </p>
+      
 </blockquote>
 <blockquote cite="http://doi.acm.org/10.1145/192844.192905">
+        
 <p>P. Resnick, N. Iacovou, M. Suchak, P. Bergstrom and J. Riedl,
- "<a href="http://doi.acm.org/10.1145/192844.192905">GroupLens: an open architecture for
- collaborative filtering of netnews</a>," in Proceedings of the 1994 ACM conference on Computer Supported Cooperative
- Work (CSCW 1994), pp. 175-186, 1994.</p>
+          "<a href="http://doi.acm.org/10.1145/192844.192905">GroupLens: an open architecture for
+            collaborative filtering of netnews</a>," in Proceedings of the 1994 ACM conference on Computer Supported
+          Cooperative
+          Work (CSCW 1994), pp. 175-186, 1994.
+        </p>
+      
 </blockquote>
 <blockquote cite="http://www.grouplens.org/papers/pdf/algs.pdf">
+        
 <p>J.L. Herlocker, J.A. Konstan,
- A. Borchers and J. Riedl, "<a href="http://www.grouplens.org/papers/pdf/algs.pdf">An algorithmic framework for
- performing collaborative filtering</a>," in Proceedings of the 22nd annual international ACM SIGIR Conference
- on Research and Development in Information Retrieval (SIGIR 99), pp. 230-237, 1999.</p>
+          A. Borchers and J. Riedl, "<a href="http://www.grouplens.org/papers/pdf/algs.pdf">An algorithmic framework for
+            performing collaborative filtering</a>," in Proceedings of the 22nd annual international ACM SIGIR
+          Conference
+          on Research and Development in Information Retrieval (SIGIR 99), pp. 230-237, 1999.
+        </p>
+      
 </blockquote>
 <blockquote cite="http://materialobjects.com/cf/MovieRecommender.pdf">
+        
 <p>Clifford Lyon,
- "<a href="http://materialobjects.com/cf/MovieRecommender.pdf">Movie Recommender</a>,"
- CSCI E-280 final project, Harvard University, 2004.</p>
+          "<a href="http://materialobjects.com/cf/MovieRecommender.pdf">Movie Recommender</a>,"
+          CSCI E-280 final project, Harvard University, 2004.
+        </p>
+      
 </blockquote>
 <blockquote cite="http://www.daniel-lemire.com/fr/abstracts/SDM2005.html">
+        
 <p>Daniel Lemire, Anna Maclachlan,
- "<a href="http://www.daniel-lemire.com/fr/abstracts/SDM2005.html">Slope One Predictors for Online Rating-Based
- Collaborative Filtering</a>," Proceedings of SIAM Data Mining (SDM '05), 2005.</p>
+          "<a href="http://www.daniel-lemire.com/fr/abstracts/SDM2005.html">Slope One Predictors for Online Rating-Based
+            Collaborative Filtering</a>," Proceedings of SIAM Data Mining (SDM '05), 2005.
+        </p>
+      
 </blockquote>
 <blockquote cite="http://www.daniel-lemire.com/fr/documents/publications/racofi_nrc.pdf">
+        
 <p>
- Michelle Anderson, Marcel Ball, Harold Boley, Stephen Greene, Nancy Howse, Daniel Lemire and Sean McGrath,
- "<a href="http://www.daniel-lemire.com/fr/documents/publications/racofi_nrc.pdf">RACOFI: A Rule-Applying Collaborative
- Filtering System</a>," Proceedings of COLA '03, 2003.</p>
+          Michelle Anderson, Marcel Ball, Harold Boley, Stephen Greene, Nancy Howse, Daniel Lemire and Sean McGrath,
+          "<a href="http://www.daniel-lemire.com/fr/documents/publications/racofi_nrc.pdf">RACOFI: A Rule-Applying
+          Collaborative
+          Filtering System</a>," Proceedings of COLA '03, 2003.
+        </p>
+      
 </blockquote>
 <p>These links will take you to all the collaborative filtering reading you could ever want!</p>
 <ul>
- 
+        
 <li>
+          
 <a href="http://www.paulperry.net/notes/cf.asp">Paul Perry's notes</a>
+        
 </li>
- 
+        
 <li>
+          
 <a href="http://jamesthornton.com/cf/">James Thornton's collaborative filtering resources</a>
+        
 </li>
- 
+        
 <li>
-<a href="http://www.daniel-lemire.com/blog/">Daniel Lemire's blog</a> which frequently covers collaborative filtering topics</li>
-
+          
+<a href="http://www.daniel-lemire.com/blog/">Daniel Lemire's blog</a>
+          which frequently covers collaborative filtering topics
+        </li>
+      
 </ul>
 </div>
-
+  
 </div>
 <!--+
     |end content

Modified: lucene/mahout/site/publish/taste.pdf
URL: http://svn.apache.org/viewvc/lucene/mahout/site/publish/taste.pdf?rev=881650&r1=881649&r2=881650&view=diff
==============================================================================
--- lucene/mahout/site/publish/taste.pdf (original)
+++ lucene/mahout/site/publish/taste.pdf Wed Nov 18 02:47:12 2009
@@ -256,10 +256,10 @@
 >>
 endobj
 50 0 obj
-<< /Length 2277 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2288 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm=968iG&AII3Ydq]?Yn7Ur2lAcQ2jm7,-L.Sp!MU\K2+b"p.,"Rl>s9Md-rQ@D17k`SMSSY/]DLtJr,0(?A\%S[@?W+"CtEG$HB-JPp$F`E/@DnJ^\iCj/Rk4%<oA>og[go\2i^ZRf<Z1#<f90Xn!8m`\"Vn?0.]$igY+:<"Scu<DQDs;l[cIfXhV"Yo#eP;m4h\Wn$q'X^40_mD(RtpC-(bM]3_H%OXLJF@VHO=aH5[k%dg'\&ue72YS4NWQ0*]m;%9/Nn8XZ^#I2GH20oBELK,P)N3/mb>3sUU)j+j;7'RaRnR=!Ur/+IkiY1'$KYTA)o,BR!k=F@=ii7=X@qD*E7tgTuQATUji^JI.)Cc$;F7e;_Wu&?uW-\"4'nW;b%h$@!XU;Fj='FZYF7dc,EhuP,=:GDPD=d1pD1:gb]=3baYe2f?KKN?Clt2eDjLg@_),b5rjZQdV-/X3NYg;VDRE/MWZ:DeUaHL5'Bo->1>:]?:X>LJD-$'3!)fu`I6k5%`0!83;1+[gt1dae$;j!k32Bg#%]$`@S50:c%7Bin5h@pOai-4O/;%0'Q!T+V],%sOp9aPVK9IFJPjA)fP[(=C6Wo?QH\\V%a93LaN=*#4>i-CPEg<BtP<)I@0-i+7!ikG\[#qN^Y83r,c;E6D])!gH!9[DmD`.?/hSnK:*BmX!kPtL8i8>\2=#OmUfJ_c,lF_1%S\@be8i\ub$p#DN54+X+:g`uI7Z[rTH.(OqPc@@WGkZ.ulRMD7;.+&GYlBo/2j"c5pM>[*DNCj)%RbqM%RYcn+U'Vg4j;`D:e`_.1UDZ5X%tJQ61@/\^_\"Y];uTV9$KoD`XI'kGRG<[1g:\'`8,t0`9I-Ch4+UjZcW?=Mg>S0R)Qe_0qM)V2>qWlcdXW,;!tE?B-K@1J^aN?+caMVbVi=h#ds:e,fkSD5[4i)p(\?fQa3h>IUh=Pa<Bp5H^V4if3t3j!M=#LfI&GIY^)ru[mm*0
 +2B6u#"46aS\SfW?6Ak5!6hVKKIW3NR5J]_E6nU6lg8sSKT!hDDJJr$7D*9m0MRo$3eD0R+3,M"7S6[0^_6`K[<mjH\rPkO?6!'@E\UIEn"lu:%$oT*"r%"Z6=TgfHp(5m6lIBSk2s`[\3f$>b7E-cSD$bi9;GM7u6Mj$2%;D:i,+p)?UQ?E^"$J[sQ+3f-%cC`^DJ<LSjX=D0PLtlN@l+]VB/[7Zd?p@qi)4O#FhG4pmmVtU@oWnQSk40IO,.\65.`_#P-`rb5">A]3_WfHK`5]8bYHm6'"6p_Y\o2"8Pp`N#[Lf`10R\EV,Z14@Wd!=I;nItco$aa6g(!&;E`m<TQse7M&Hn:4jPp-@O=("jb4`^K?2]mo_2-Rl;.r,TleSh9%ESP%B)u-bcCN;.[)1H\dNtIqg8XsDGHH(NuY[@iHA&KO@ce=%TIA6'AGpu-:>t#O(:&h8X)sl;,acdI'1XaC'CB"`Y$eBcaeRW!BuMf6^,0^:/?2`%:eDOk"^ll+d[Yr4bO4AVEJ/jS@sb5!N%K#.-\+6#h-7:9gQ!1\fK42DB`8'>^@)'#/n!'9C<uP:o&TNrE,pd.k]IT0gp(_.ehI%E@@E$iK/p02kt]F3H!`InB/>2jcQP4#g[K=U72Mq_tU$6OR)>N0'$l./34Tr_$L49Ru8t.<S(C3X@d`:0k/@/EA^gF$9;f7jT"bMlHA]ij'r*3'LX]KDkr*?Kq&Wb)!RU8G's651P3K>l(ZOXi:l&I7^uBZl%XimchA<.DrsgLS^WgrclURg50/GWrh@"b$7Qo_DC>,Efd7+U)*$=%E*4:F6pO0#X^Woh&nsbUd/HgR8=NE]X#mTHAcg5Gj8s0dFJROQ'JNCH4htO>nJZ&lbck8#\ZV.<hQ85p_;QrO)8[]_m4]e0!6qAkQ[#OU`''a+-Ynj:"fPGFM4d^1.!EW=W1-B-m([>gj0AZX;+Nh@+LA#8M>W#ji&*RDVjVUtV2s6lK+C
 <*K=S]/.h()L:0$E[lg""F@)Xh(psbPt*[V(gCbO8aV]h".UD&)%9fXmRH37GX:/d/h&3"bB1keTsC$JMF!h^!5R[te369*_nEDJ[`0\)[,L*R62C0c7*#:ni^NNkOqdGpE$19",9+f'W844W_[KRRhp[)RQ)n)e#]1Y1(]*F6Ip);;r6eLrU<)H&#ieZh3K!,WXkCchRT`US?h_e9L!kKk9^pTf0GLE#*SR;cREp75V\D*&S8rVn4U"[]:rJ!1hbmgEn)jAshpHP!Qd@u5*Nb-'*[[l7X')#b&u1M5)~>
+Gatm=968iG&AII3Ydq]?Yn7Ur2lAcQ2jm7,-L.Sp!MU\K2+b"p.,"Rl>s9Md-rQ@D17k`SMSQs@r>'jk>l:m4r4B1)'M#TI21Id0C&[sP**JT]>4Z*M]sAKZ9l)?L4o"F?c0$%d-][LqMHd.#+,b?d`Tu:*Egdf1RtY]r(N9HR3**N=F5cf->3=CC<t9Leh9bk_X5A,+m0)=]ZMq:uT/nj#G5#8qeFc?H":)1gMF_8KodtrB;GE"t+^We->d?un6)LT8cYWBdanUKjAc*H0JrRYtO]f\);DBbHkdZVn1fpF(%Zbk>'a9%TWaYFSm25E01?J*H27r$BgUcCEHJ/2<1tR`nmEI3thf-Pm"E-.s&=VeG]C/fSFQ9+\`V3HT28slD.'@>cTKTs9,%m@>GFk*NFiqa>+BR>Vn"/7qa$-bTg\:lo9-ZnSJsF,[egWu&X*BpR[8p2^UErt3rJ(a#]ZuUqS5gb[1]i7QBr7;a3(LEb6Jomgj"s[i7rE.,DScjF6_Zr(CR(\($XY^7d#n3),jC7^aC@eIBpn"KjC4T&\#jW*'ThJhG8t[$%%f<Vh\AU(BLsOF$#C5J(MB`.:9=8u]#l_,i^cqW_*Q7;=n"aZF$:YUk>BfD2_4Ap7AX"TkVMW?s"tjcYgNo?&>V96Q1JIEI9f!fl1pj033dbK'.m`LD(j)@;@/m4`H2=V^qF2]i%X.q>o@ki+YT+Zpl49LrV1!Q:4VO1p'CWfX<7TT9!2Qm1I)A5\lHTIAjn%'.Pq6d3i$ZN\BNktUA4[c@o,C@ju4-LB!S.Nd=`U7jW&53e`_.1ZPbph&)c8qAN8%OLGNJ*Vu36Q's<O+=tqfp1:\.AFEet\OT8FJR7KfZG66m_T!'K#[DO4-2-L@ioo3qh\m0]PKE3_5"rNH`9u_As3MU-,4kk!%T/L;.9]tBD7B6kReA?Zb]bj!&3R5&J'Kp4^Y55]\r:R0Jbr!'U-FVf7nXWSXpjRV]^&qZ
 PgMjr^%fk@Vjgm2D#q<S!K^:]sr8:\BImSh&M-ORb[8kaq4f(p'JKA<;D'M%kMRo$3eD0R+0Ps//S6[0^_6`J0.VU->IcJe[J<cs/Y+HCt_=Ptc"re%TrY7fqX9UgIp5mqalIBSm2s<CX3f$>b7E-cSD$bi9;GM7u!du35L:!b9#TuNJ'QR\+d%f&fM+LE_!!gD`$NhV*8*+bp`,=o_Z[&K0PMkFe@qr/s9>O?fG]Cp`M[\RaWYX5L'Cb'(!Sn`CFu4RZZeWVcB)3,W->n#os"kq+PBO6bXa(DTRpdcqMBi:tlg%\AX6R!T8fK<^VoR-hVkF?$_`0>lc?V%mj37qPj8)I#GVJH/T!8qR_5St=oLKfe`f>f25:NT'C(LlWF.Oj]f4Qq52C1&\ihNMIQC)e2r#GG+%[>e>.MX!bE-K3A:tAH7Zf;O;DjV3m6H^]SbBK"T1TF#G:*1&s=\Cs!EfsVB.&M!=p%`Y]@:4VHUWCe-Dn=D];09^C\@/p]Hgad(5N3a$"hn[]<s!#Q,"r5?QU$jYg/6q[[kLNBZ6m.'dUmA@>3EEf-oMKiD[2Wa78SM*s)@k?9FWI(fN'^0F&a^aeI6CFSos:ZM@u+M^#pBa2e]k0Y%DZaC-9@S*6RL-_SM&ABc#:1Ha!lH)g`?kMrERsJ^;S0fO7e#/9"T8][YSDbZJjBf6docBb](snZ(ltnOhhO!?W"d1+I4<KulYV#;b`2S]l8)r?EhE_PHFje:coWh/Pln;jlm)KEBHn'nL;c:?g&<8Pl'M1lMrc@B.*+DN7'*7ZlFsI=%95!@.ao)]LEi@86qj1u9_E.P$WNQ43D8\jG,&6GC#E4)Ph\X@[:8HI7j]Vc1B!7s9FuN]1;)lC&Sk9-r241<J@@Q5L[f1<C)F3H'Zr&NS2`?+ImPFXHPPloeM;q,ms1ME)7[on-^t]R[_a1h?VlK-$@*!0'>)R0T-SFikj:W7/ZM;Op`B-8A=I@mdG51B9
 R.;'>)jpa?hY)#5\e_VSP8\]VR3>s4e,e['[5_['X@GRq]F.(5K,fNdqLitHkeJiPMMH39=8NaRk`JG5Q9K&Nk]>#j(0+=E-,W1b`8'uJW6NI+'.kH*g90I1WT;![Cf4*):#DN*,N`?(Y!O@_U\[E_^$TUk@k84('M)-F6&fXj/rl\ouZ5t;`=hop.MYNco@.h/Hlg$74\^VJS\KX#arT8_h-,_i9[o"aPIGOK,=W",0/@5IhuM!R4@MV<5-XSRENF:707G5Y-QoY0e%h32&GpV9,B[LPR674Yu:CYiBPiBI'%>p*sJ~>
 endstream
 endobj
 51 0 obj
@@ -271,10 +271,10 @@
 >>
 endobj
 52 0 obj
-<< /Length 2458 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2461 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm=?*E!@&q.O06HE(-,cjObDkCp9VF]'Mdp=]3^tsL4A_L08M(U+-n\<tD-!<%0W&WTU\?SV@aI+h?B84p*e\b1`LVFn?Z\-#b*tjpN:)J`T^E9i??[FIA\=mDsZ[V]:iQW/BKFmW-55tMm^u=\1CAZpqUg3]8SPCpO/9H;Q<B1$Smd[.F?YB$4,a,4Hn2,>L$U^Nn]Too&W&H3@$3mtk@D_rA?rjrD75+Ld=7=[!aN@\SX\@,AXms_AD$jEY\f<*Z=uZ+6Cas#9dD;c`19+#J`Q$S$,b>a+>SX9?qdhFH:lmdn@8OYYG'gUN`lJh%"^AD9GfJ.^kQ32=T#X-n)j@:'j2;iT,jC2%=^f*^8/Ad'CZO0@._jXK+gR82XY=SfQu,g1&.op>,%P/5k2Z:%[pM>3IIlJ^ERBMT8EI+SAI9KZk59HO^.Y+>1\>ahn1+pADKbp10]4!nY@0[9-kD(q9.p=!F?X8]N^g<B%`,TF9STeW2eFIior5=q8`l;0o,<4sl9J_O9I(dhlWogWHe]G,LrE;$2@!HJE#&s[XS1R?U`LSAf_t-92DUg'$HYNu@@Hc^+TN8]791%cOi[A0Pp5Z2Sb9ni)0Eb&=e6"<eFQ>oQ[aPn)#&&,Ma\=)&d7#?$Pq[>ZHfnHg>JLG8IhqD!$]VC^I=8;o1%O:^t-RnS[A2+RImX:n;JO$Ja$cTT;'0_ZW=D7KYba0AQ("@V*AA6c''-m>^9S3D]ZqMM.=+oY05WF/%I4"b1,SV8Pdei`%7"2TAGbuZ_3rRqi#S^p\KPfcDm_eP?Z.C%(BrT9\of7A9#6OUG;>PKFtQm'B/34Y`(\D9eL3mX%u4HP<-EYogpSh6.>[n;R@D\S0!l9H6**[7RJnSD(1:MBP9m04(`@)+G5OZ$d<G9o&E9@V9JNeb+o?'=3]]s9jOG?E2jtUa`N.cM`g$4;,1*eFUEJ(?s]ol0S_2dfIH';mI8E!I?s<'Qu)Drl)m7
 6*$J)M),Qj,l=a(6M</@O3Ks\ImcqKf.U5)Nl_LPhf/kYLK5":cPtnYWN6]J.%jc+h10rlHL[.F$@sZ+/X3\(g6XLGdF(IdhdY6NrZJ7If?A[";-,CUE,Lt/FJ$,dBAcRFoG9mV0H,kk_6E1E,`A]dF.rZr:6)9,],d)rhD?>EOH?"9j;NnsUb>DWLq`YSaQ#mLVLVs)VYe>UFAB/4pE_8ZlV:H@;Iot[SaD*\YjIPecSuDPeon4a@OIpN9ZmkZ__$S[nOOagI:;+]Y\X,hGB"\$rCI-Y_4F]A@]?pMrY330a53M<Gi$P_hR%7aenb8ZHm_nO?JmD1=gh1N_OX#56[!hUA`V'IJ#o*@HDM!.t#4s>pZ5dUJND%NC@)VR?C]h48n6s5QNs;0QLkV-f"KIUMZ68*"?Q]m\Wq9cH&R92cM"F/RZVo&ShGR$JBLci3eL/%PG2f$32nl\3WG@.3,FQ^4AoU8nCJ3-GRKep$T?A];NgMaVI#u?7*GD].MbM85PZU2:W2;'!\P:Y_9_Z'W+:%_=%QKDL&GoGsIk%C6CMicKDjJ`Y6KmhbZLfc)IAm8@,3ZfIg"AKU^!Qo7R*+-CE>&+3\V&JXer`2tDse$-HRua[7:CRZc!i5E(//;>Dols)i%o<4PP[AC4Viks)*#p6E84-3gle)gKhNckY^+k^ljbfBKP9c<&[W@AfBm_/AgWMYBpg<7/OU(<DjhBDL<oO0I#n\r1jMqB-sk+1Jt&u`Y\/[kX_gb2jSV`q/iuh?T0#i\,&CO/W(n+`c8it(IHF>eQRY6$7iojQ@\[[LMQG%)G6%h)ObBr=^BJHf8ttZ+q^b-G3KMrRp+<][?]T/MiWk/#HU;DUHT<1Rp7QWL$f`X=in_o&fE6oI?Wi21i^#1/=j6U9TF;h:^Eo"uci\2kF.!8lHiB7#r&Fl62\'/l,OUeF=+<)q\Y*,/)+4H4H/WmEBKr6GQSAHCA^CRS4mlq'p?GmN@^(
 gKg1Fte!S_ke8BV;QA4peH(:VQ&^.pr'#>66"`k=dWH\q0fDG]p$n`pGMo[>c,RJREqLI7/DpMX"R*l0C'#(-TkpX_d%LY)7c(15pioR^kc$=K$DnDusOKGT+A^9'd?oFd4?[KAlbN*eG-V4TtQ[F]K._pV%HL`TN'R&=hf_)GGOC!X@Vk>(=^OEHcKBQJJ_dClTTHP=iq!V)jd(]]sTfX!8Den6Zk[22)&hoO^oTEm<f5)nJ"NCb.c?L>'$Gqi:e(SM?'71d1blWu(6_',<cibKH+&O\JmaYYiKLa>nHg(!fT)q4-&CGNKX:0qSilEltn,OKLcK"m4O2e#Y2a1Vj$>T<Ck1$n';9md^H]q1kSFAB::OHnVg;?2kb7"0[C@^g'5KRj6]!>doRr2:-=1L-#1EEAh95)t<^L>ust_fH\<\1Zeh]rb(Y_q*)FdnS`J0dP>`l0AP?]dkpoZ]dD4$\\N\@sN1g~>
+Gatm=>Hcek&UlsZ6HIU[8@TjdDkBc_HPQpVDK_'K'^4c`/^lViP3CH8NrOMtQ=S7]U>iOGE+5$^O>Ge<Ho%STXWDpt4oG,kSK7Y,nrUB*Fi#hcs8AVhrml_$^^Zi43U;IX*o;<F5R7B4j5W?f"V,IK<ndlR,3?[+mW=VC@%lmJX5*O&&!*obIlj]l+H]nTL8VT*=W%!7i4Z5R-aQ\'<A:ot$kqc!"a0JV'YW`-6bQR]5SpgX[k^BN[D>(G9ps1.RpqnPCX^enYc1S^NXho>W_sS2Wn9<.Lr=FbaAf="\mP/?#mJEQ'*d!.^"]=<2PiNE>HhZXJ7fj=99UTsMt8p,9N.hRbrDuJ#"cDc>#lIo)j7b2cl/>O6Y/2<,",J;WYL95*;)d$$PCcP,=3^]BKhuZJ,A!@p[<RB-SF+,%B2J`ZqS;GeXR`M`-2NpUIIJW$GXD"RV'%$%0Q#QpDO7SJb!d$FF"69V"7/j)&gTu3<\)_.Q,3ego+'QRo<biPKYL4k;<BpeUbHm9I(dhlUbaS*qoinBCSrgc+t/@SAiAZX$&ESWJ:]^G5o.R9:8NTL#em!0MQij&-.W?65Kc9,dRE18s+>gcMCuE!kR?D/C(dTe]VahQ[aMm)#%JqMa\=)&d7#?$Pq[>U=NPN2E5>*P/D&TJB5#,mnon(XAO0AYUsFh:8[pkRIo!nn4ZDo"4PN35'_e&B<>dN#_S7>M^DN%:B-272c"HRF6.Bj^3L^),`_+YR43<;XQ6[#.T;rM,X'>2+_H:Qr;;*[RK`XPhe/Ge]%:T5F&jl@T%lq5A%56cAb$>(,`CE:+3RQRQS="l?m7_h)jZVAWl\eRD"Xc,fqaY3<IIaP:!g8]U_GBc,u0Lm3k^IP:ns_O]=&El>;S13q]0eu500Dp_?)OJn7Z@G-XFeE4/5K<d!4(\%]6<XoE7q>UF`feE+P/Er%-!Ib.LGW0+?(*[/oEO`@G0SS?O$jq6\c<hMTFpbaRt
 r,KUPW<*oXEq5TH%c'DI\-BLSt:rTTogT&-0UUEptC4!YcJj,PkAQ>-t:L\E0VL0e3,F+Yu=#aGDZ4,24<a1!7D&`>++J1)5nrk]uer]"=M=sPh^+BZZW#M^eLAab>SMpW^e@dA8ON9Lu_?m3`TbZJC]W],IU]uqk,+#e`>.P"G6L)PWh+16IgFPjC^$bb_e5t'Ya;kcbDo;8Q.Ztg9V9(.mKpGn@GlM6,=-M0Rm`7KKSNTjG!U9tgU*2b]ltB>_c%6V1XWX_`'V'K1F)s!q`6EQ&UM`BO$p9#"J%O)+`ieL3T0DH*BAb,Aj-2XGro<I^38KGIpB8+"fV+RR"-4GT,H'q0D^oqbZ6rKD0=V>N9cDAkSa-]!7?'sb#@PL?#AaLQ6h"O%`/b+nr.p&m9*D8Wl`qYkpKo$S!NPd$cOjE"&W$'KD0;Q7=`5`9/$u'/VWs@J3]jl,j)06[bu30UKe/Y7i+?stg1s@1S!FL/9/`,:?5t\<=SO"3$[&,]Xt2=WF&6<H=e_@bD!*]Zf.u1BNe8>4QTF%Y@R9?Z`W**6[]N972eKCLAcQL>Aa*J1qcX*g7F6SrZEng3H_UbM0pT-ej!=8FEX/_9XWrAshV9!9Fqg-n7:CRZbn>=HB#.HDqOS,Y"[;NI5.R<Gg1-6NP(DZk$-1;Da"<^)OD6!0LX!`f@<[g$-U_`OO.a2%]PXj92D]&8:<PK)Ca!gIc)+)&CA;&k`WrL48<[*YK&Y<3+h.gd#CC&"d+ZJR9$Z>$m.>;OrS2\P'k-D@6$9ImFO!0Ylna,@^Jk5S3:^0H'cU/R1=q5oh?=JC6k[@;r>)b7.#>1Hm#)F;jZIS<fXKK_Hp,@&M'!;'*seS!mcAiCm6U3"(WK=Z`4MS*Ym1bq^Te@A`.M;=ZC(%(6'ZEQs.2V&64^_Kc".qMmeKd*n`L<sh`,kONjr$a?2`I?nq(UfAInknjFu2[U&Bdb?c)`UQ9c1?p:-S8gT,B-M8:
 rrCR^k4"`350,:t9:O=e!h=PPh3qDnZ9*\<!NoL>B>_L%.-VJ]6$a78Icnbhu<$CUc3",B7*Eqb'^5WjX$SdbB$K^Z+"2@m"Yf.F_L4m<.%BGJ<.pYa5IJ-dn.#(0X30^'f(%rDQ+L`!mAi!c1;0fQMlF10!7-V9+8<+))kDO/*t=,:S:VEsB?lPkq.UGK8;]q4HE<RJJdC%m/Qcn#TU9GZtt(c1IcR$cS8TV6:7E",VHR9uT,n,L>%N`!"RqES?qeb_e66[B>tYMd!Y8ptXa-\hDb##bY%bsaAsN@87-'T.(OIK.=Z3q\etY.'VHRJ/%FVXI'f*/3>>,1qlW'_HD663l+srH8VH3COUR`DNi%B/lHG/NmVjGInQ>,SuRbTXWQj)C/bL5^1"4cSe"U_mpa>aJ-2FciG4Y_KEb9[-HV\$kQ[1n[$p"VnQU*AtD]F[r`%8F`7,f_.E'BNT'5'*m"T&If\F=FTq~>
 endstream
 endobj
 53 0 obj
@@ -286,10 +286,10 @@
 >>
 endobj
 54 0 obj
-<< /Length 2547 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2566 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%%D0+Gi')q<+_<H_5RB%IE^NdcIC$Hu,9V&&cdd,0>jp!"Q#r,""+=UInrg*!\R4n,UC^Ur-`U5qelsfd&FnKp#p&3%[[da1n.aX$T\ZQ<iD5[<En/YtQP%j6_5HiqVFS>9rUDYD+Z.`IIeKQ#_%*d/tEi%e/=1>S;UAa7T.e;3F_Q:1kFVOD/I!trsqldI)!4s*(0's.VB\Oe`he_f41nAN8o5$];d^FtfMHnO[B1OFTpB/"aa#p.X(MVGbQ0`k6-!E\5Nt4o*@YU+$M=lpY'T+`F4D"*Hr`N9T41#e:oRT2(RA8S>,(\4)rkTV<PgE>ni+Z\T1X.MBR'#Ki)P1(NNHgHn-/sa&!A1U^"^0'Y4+&punP*Lb1@%cS--i/NK/&-"*mn3"mS=@Crr1mMc#:'JVtVBEnH9t.>:6SbSgXE&,n*a(:]&B'fq@4QU&E=b:]95;.tNWqe""Mmea7tpNk)#),JtSO/`O60qfN9Y8'p4)mU%dJ7>+.@\BO&nb*Z\:+2H]I*+5m:^;H.=SRqmXTWnSAkQi?ed<*R;ei"95ken!Zh9sIG[UGF#*BimL9l@B/00d5'C8u;ZTD1!<)%JAP>9PLm1[G-A3fZ]3bH6h:UDUXTM87/1GgWbu!o2FcZ]1+pLT+.9B">kP)MUR2>8KD^&->ceO9Is$p]J&/Neh)L&TK@^,BJ.!jg#0<3,d&L"kqtGisKR13]p$+k:FUC&2_+sr+Qc77s=%m>&D_4HD@q$1C54lD@pVY^su#"4i\\*mL\-P[kYs?4t*?+NRU2D-++3%GUW86`5H9+JG4.5$5Aj>#D;Si;-FZ:OE!-g2GteKO8SZj37-kCs$Yk6`W@>)K0tATIUKL0CBl1@)f(l5egdT0NO<XCYp6.@_*DVkENJZo]f:!)42WHs)*;@(%qAYnjn\n%\NCpoA1L(L4Ip(PaR+"S7kZ!2USDs_N\K:,FSq<iC%sZ^@:S>[Lo_1ER_6dGJ`A6
 .P0tft!<SfOUh)U5(06#W79MP<$05'uU5lB:=gmQ.qeTgrAlH#&p&kSIP!1MiZHuc?IC7:0\4e$fQB4g0+[_PI9.*WAo8^XGAc+*s9tb#XSnOOSQ^u1[^$##=;PZqLEcIo7VilbEOJdAc=[>P>p&uRkkq2:MU^+W1q+.5\ah0bIAn-Q%p`t`G:fQpq@j-.A>:HdO#7im$#h/0SUB8AuI;Jds`OtRIWs`n0!o(Wb(<rJ0FR&La;:UDG7<0gHiTa^cV"%uXC"--AhI8U6<[g3O0mt8t)g>[<j9UVC(:Xhh+cUJa],)?g@5Vn9.fe3[Q?LB_hn_o:&VO#"[Z1i0jnSn/7\2Olcgnb%pqqM5O-#Z!1*@@CAU2TMj;X@tjtc)jVt-oAf)9m,Q.+JiIiIqU!l3b@&Fgrq3sfjDfupZVauPq865,NhIC=t6U^`Ap%')11(f)DP5WgHIa%dGj1n-Onm@-plX6ZtPSa,J\'g.\'"3H2Fab/*bK7k1AiJTNF8*.Vbnl&\7I.$`sFgg[[j:Y\t6'si,'dXOB/XmJf=^?[]Fj/%8ln63jH/D_qT<<`](IosQcsl7X<jk<gRt'I7U>.M&VPFqp2-Zn(\u,d\*Cpm!9&OS2:Y3Kd6kq=Z-h7.Ta5ZmWH-;RE7gA<o04`oYkPj)JhL>C[+.lRE2iGG7-UTi[qcV8/?@T5ii+>j3Dc-KT[tQjST/W+faM'KadO8%35YCGclW"DK;PjE$'ZZ0Sq9Uo"]*l<LriT/>:1X1.YP\//"]EhKqPA_Emr!'&=Tb)+d=o_Xa-D)S-7C"MW!J0*DHYMp_/n96lCg%F$P(e-renBmPl@?$),7r@..Af-G>git<fpeF.iq%kA'WN]%Ys<F?(`@MTpSc_U;dS.G#KO,m#$In$d!'Mf@UEqK6pi>W;W&sP.,Rl\>F;lLolU&'X-9Rq3!n+1h$2K+EO&*:1"F8+02a(5Z,WM%Tp]RC%_"@Q\IUPgO+!g6If
 2g&,n!sM)#Wfi1\RO!<kD=<#TX%`R*j'OuB&M$(9pSAu\XF^+^8[Uu^9M.NR.<)LW1Rj[f&o4kud/-BnpT/3^=Jj^j+,WO,Ys21cl!0@ApK@hqd=g\']X&#ebEK@R>L;$nam'N6bf9uP-;3<m8-`V'fP*:^oLJc0YtqLhedpOZuJkV,,o_`"GUAj(skSVV0p"S?1?7QYV&Vs3HccoY+mLa]/Sa$,BN?(V^%B>l7['uQBa#YerU<b:+Y-pu"8fKL&ubeW]N'Z$>SjHCVPF=IcM^/<46Wk)5<cb2$W_K8d0-sHKQmr2pC]%X!<eshRnNY+;"+s^.t3#p-RFtr=[8#GE94c$0<TWH^-c%?t:@0Y!2LoTMg2t9!CGej=B1>4lp.&63I>PI2ZKEZ\VK%g.V[dKh.:dfS(dmD[0<i'?\VJVtFk@\qqN0\Br:q-4+F4<uceW$BY8680^+g)L9oUrc_D^Zb\"`X5.D:%"8\,&hc:U5D\jd!sReQ:3SqN7cCDEh;^(9.S[@b(6>D";)b40P9h/!E;,%5c7CVQC)gljSkV"fhpB,5FH^J1.&~>
+Gat%%D0+Gi')q<+_<H_5RB%IE^NdcIC$Hu,9V&&cdd,0>jp!"Q#r,""+=UInrg*!\R4n,UC^Ur-`U5qelsfd&FnKp#p&3%[[da1n.aX$T\ZQ<iD5[<En/YtQP%j6_5HiqVFS>9rUDYD+Z.`IIeKQ#_%*d/tEi%e/=1>S;UAa7T.e;3F_Q:1kFVOD/I!trsqldI)!4s*(0's.VB\Oe`he_f41nAN8o5$];d^FtfMHnO[B1OFTpB/"aa#p.X(MVGbQ0`k6-!E\5Nt4o*@YU+$M=lpY'T+`F4D"*Hr`N9T41#e:oRT2(RA8S>,(\4)rkTV<PgE>ni+Z\T1X.MBR'#Ki)P1(NNHgHn-/sa&!A1U^"^0'Y4+&punP*Lb1@%cS--i/NK/&-"*mn3"mS=@Crr1mMc#:'JVtVBEnH9t.>:6SbSgXE&,n*a(:]&B'fq@4QU&E=b:]95;.tNWqe""Mmea7tpNk)#),JtSO/`O60qfN9Y8'p4)mU%dJ7>+.@\BO&nb*Z\:+2H]I*+5m:^;H.=SRqmXTWnSAkQi?ed<*R;ei"95ken!Zh9sIG[UGF#*BimL9l@B/00d5'C8u;ZTD1!<)%JAP>9PLm1[G-A3fZ]3bH6h:UDUXTM87/1GgWbu!o2FcZ]1+pLT+.9B">kP)MUR2>8KD^&->ceO9Is$p]J&/Neh)L&TK@^,BJ.!jg#0<3,d&L"kqtGisKR13]p$+k:FUC&2_+sr+Qc77s=%m>&D_4HD@q$1C54lD@pVY^su#"4i\\*mL\-P[kYs?4t*?+NRU2D-++3%GUW86`5H9+JG4.5$5Aj>#D;Si;-FZ:OE!-g2GteKO8SZj37-kCs$Yk6`W@>)K0tATIUKL0CBl1@)f(l5egdT0NO<XCYp6.@_*DVkENJZo]f:!)42WHs)*;@(%qAYnjn\n%\NCpoA1L(L4Ip(PaR+"S7kZ!2USDs_N\K:,FSq<iC%sZ^@:S>[Lo_1ER_6dGJ`A6
 .P0tft!<SfOUh)U5(06#W79MP<$05'uU5lB:=gmQ.qeTgrAlH#&p&kSIP!1MiZHuc?IC7:0\4e$fQB4g0+[_PI9.*WAo8^XGAc+*s9tb#XSnOOSQ^u1[^$##=;PZqLEcIo7VilbEOJdAc=[>P>p&uRkkq2:MU^+W1q+.5\ah0bIAn-Q%p`t`G:fQpq@j-.A>:HdO]>G,SDqf@qHC2\Y'O;J"<+S@PPUXM$B@#2R]>_"cfQSre$VYJirjbRt1k<q$b=9,g3L%m1oe)TZGd@=u]rE3q>E#K5.f3j'?>5((j1YtV*!$m!#+)84UbOKLpEJWTihe;E"b>gVdOpsN#d@4M&Rj1YX^d5kGs9$:Olt!4Z[At:KlGqm,GZWR$ogap=l,>Oq*l[!\W$@^WB@5V!Il//jn+iChF9W";St7>^u6S)"sSWa$IBdGbHbg(3Lf#!'CrV\[YY']%?G!-X#&lTcS9C&pE2H9:)Co,RlXZ>@>qPcfCMa[oo9BN8\9Pd6L)3MlF]I#%B8hc)OI3kidLX%X@PPLqoh+Up,[4#/q>'<+/FdWV!42iMR0B:_@6AEH'[9?Qm1u<bOa1?d-]g`jV1lLS_2(Ckj%bXS7n,pBZcQuK;`C_PY:cCJ8YdO_GCPD>NG$p(lP?fKpsF'>4,K4s#b3;e*+l'4mdsIHfNo]qUaJ_s81j*lJZ@FGOf;.VL:\p).<%'c>g[sUR^59r&sHbFW`m:40=WnBa@^;VHf.GZp*'\)RcJ7s(a'D)3aZcB*NMqH;/*[V2h+fnnVV,od's@VDIp=!F+I;hAER'14>o*Q.:mFXTV<o5^H9>%_(K(WgSM&Z43$jBuh&0DNar7GIK"!5m]B:JjWDn$TN%2K]&sV_73Q/L*jp1V8LOge+L=<6Z,7GVdMrQ(GP6R5aL(<#u)5!d>4s1'n?M_\1UT^1XdUflP=J7jdZoe(Y^BF\'=LjHR`aHnr#cq3*i&g(h>j3B=i`#P"cq#MI4
 itj7+`2GuSqej7n;-Z)Uh%;`58"+S*<8V3:rfDJ6!@i_GB)dpXM=7"H",c)8cbTAFs(.)JQt\)UFKY4jgM+M>m[lMl1?7K#t0);&&=@`?K:$6`>^X-.3#4]Ga^bqI*gR]<g^c2A\[eQE*WC#og>;WK7'A?;5UOje@[J/O73*um9"LC"%ZkA'YrVi'pHbN@2\GXdI*:jL92&<T$dh/itea"E<oicn8JduC&FU>->X:1'$0'KNch,F6W4:WhFI0:riFcE=Lr]&uqFN$#<Q/5DR`i<^oaS(>Y.459s=*<(>\SeY7JXhLBR@@Do7W`i6+p(-$=VI+JR9,4Qf(S;ZlEhn%QWZ#h9Qm(g*f!gr=c%gTV=8bEfXa?KA2d!s+RMQ]=a^&fDGpMm0rR#2`HaHU=h2Af2afPgVoHFLQ!RS8tHej2rb&a$>\mBP7-.=bhDr!B;Wrm"AHqT+'`V5grI]BDc,h5Aq)L;j4SbT&eeK&s]$#(i=];KS"ejd@'Ddn3Zm>EX$9O=p:RZ>dV9O2l>dAjHJ2*_qX`XcOB+.K]brT%7P'`)R;=]R=q4fDn(BZqr.7Hj-\rrKCT/lh~>
 endstream
 endobj
 55 0 obj
@@ -301,10 +301,10 @@
 >>
 endobj
 56 0 obj
-<< /Length 2193 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2191 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm=gN)%,&:N/3Y^VEaA&/:m:YO)>ELaVh\7qZ_%oj\o#nkofKF1UXo_2W`Up-LW>>6mp>67>Hp?\Ba!.HpL]H.U_),OrP^Ma=593`hQ6hosPp%OU3'Al[(R1B35]GqHbDF0+6GVEG4h#/E5I].<i(bcT6^,'(UIh&*PGUbZ&W8_A77U%V/lS[@9p#P\C1Lb^i_lV;D[oo<gd9Nbo\^P&KhW4P!a7m&667PX%LML4mH8HA[X=3U^p!^[GnZNrA?:+Q*_j(DC'iMesBg*o(S@p4S&gssM3VB:GC&JpZ8aJEOl1@2fs2Jbh:D4AL[\j/"Sn\/EU&Mn)VUfWY+tl&l*>#@4l`Y]Dc:*Ri1nF$F`".o5q@P$))koL1#HAo,nKp,H_!C"N/@^9[-=.Cq\0s];YnUq0je\@1\bBP[="@.lL$Ag]6i`U#RbtJ>nDHiV;jAIL/r^@@fJZfWF2Tl;&1+@k%5+I!J<N+15S5`7`P!\"9Z"H6/ZW0;<m$,==7lJ%Lq+]fIL!SWiYKNn'e%(6]Kjl>jEraNRkCPEJ`X;B33H/1Uf:R7^L/:;fX4QOm^Zbj?&uZ+M8Ht<1JsHCAbjUYb]?A.!](7uW2$i'cE\>]>VY\iis*1uDR,-qZ%!N%b?]*4Z1/1_Y>S=jdU]<;AsqdC6jSV)'(9*&a9%r&5jB+Ip:q$`.X25M#EKVCEq0p`dV&(q2sA8HOdU25`?Z%NlsaU>Q"HkXJpn=Fegc$1WNsAATEMH[7,CJE\k,ZVP!V]+Sh];3K72Y"\]Bit:?.bIJ4,rN=S#FnO9T't@ZG9tMbjK>]/<<l.8AWZ,.!<'O;0j&"@"ZpOqh$NM_#Zf6cYcn=^r[%19=.U74q(K9SIo@=!'UD,[YQX3Kke8<f"&B(hTkN*cSA#H6i,m'+,RZh-OH#&?kT.<atTUk8WrA`t.;<':ntH6U@$ZXVY:V\A9Ia>h<PR*XOGG:S/XRdN47lnBg6\Gp<N9Wt%=
 7plk\\Loh`RJ2`Lh-`>9;_i'rhV#"8G<g0H-+%>H\X_a,KIXn,H/)CT88m/fi8r7qff0<f-4s8ld-pd<Y%*>j0^L;Guhi49EomKcD\qo>dH855P8!<:TNnLg;<rOmI&kj3KB9+049]\pGa]5o=X>[,p*"OauFgko5XFs8Eb`#XbR6#6]37hE-Yb]<]/R(+ro6ni0aQ8TfIJ7i!hnQbNhg]Pu5I6clG'K5odqcJsMVbt?F`(ua.%r]/IrR+UL[JhiHh4<Un03o]Xn2#B(8pM;/2n]6--VTYHf@e2bB,46\o3`-b>&,@Ap=39!1aa4=4[`7!h9LDc,b6r4'hn7\tiD;9b#in+*[,_gY[/89nqN$PnH8*JXmF?SWnD[H_H0!O1Q25C"LrtCY6;E>c9bA1cIHY?s"Ei1FP)NV<?qSXSOIOrhEd"p4h^(WlNr_7W9'JWSCZ[fd?S9rC.JfA[C+:0C)XB8SiF#e__qJM:ZKnWHHm\YDcFje[mPnoiY@EMajtPmIKO1e-)9&$js9O*Mq&Vi)65^R_!.%Vi7s8=i5-\;>W\Jk?jmW"Ci%<N\&*ZO0OH8Tl+IkbKB*?D4C>QoNFI`pnQA&3l,9LO--Z3I-O%=PVsE10G$IIX8VNN/g?tELGmTXmhZS[%8"Egp*,*^CgEOm>:q+5&sMC$-PFsZca\_&1$"SGDd,<Yd25#ob3r-K>YjsS=TDQbaSNX:+mddVofG'Hd"i:;Kk%Cq'fp^OJ010K:n%'Qfm(uP[RP+<Mp^LQN)W?U1WIF3%p*R2Q$Co/PAPjl,_WVQ99,('I(`PniWRAb4\\#N3/)f$+oZh@mlD4V,+.t<Z1"RZD/-?"7>\Ve\J=kkY/Ypej[`c!m^CONedm;t%G8n;BZWk?T"5BE(HE,CaM*Nl!k=EGfVN!o?MknY0s@fQ5"O_^>'&O%'QRK$6>5COd&74>7gFg(&Zf)QN**KeIU=1AYmpSL+2f2J1d8"=)5c#CJ'l
 ;Lk/>2&8N[UG7EUbqYSV(_kC/aG,"WJ(BD?Y"<GkKiN7#/LL,3GEj_TQEOsnL@Sig*g3ghC0Ehl>N!CM`LZmh/A'ns(@NZ((<nYNd-J5B/<OC+\TYfI@%Iktb7ZSc]2+!B%0?]aTEJgRACeS2l%W^k9U6To1e>FO$"2HP:ae"YPS.AJocb>"2o#[3OhbCfcMW7"$$/_%JLs*aYY<m=Id~>
+Gatm=>Edc!'Ro4H\GHn^#.0\D:YO)>g$ElDbr/9enkf0*5[ZOjU9[q=^[EoPEb+6:RV";U,[9I.SX]?'AFO1dph)jo(&Yfe6oM;%htQ*Youc0%a!RscKJa_H0mGPn>i#/jAaj*5*8$$62Z0?$nY#%Yhfc-DgA5mcCs?J#/]It?$SgLp);f8ONiQff95D`]`.pq3rn\r8g9)3#PKJ<ck3,OrrquQj%T/$n0&#EA(NI'UM,f`#QsKO[05L,o7gIWhDQUgA6&-s9IKnPS5q4o#9A1YM6JJcfDjSoCgU![%ZII%^J,'#oWbg!$in(W:*heU3rP5/qdJCH(i01tHO&C>#(%KOM^>>Y0a!0fo[U%nh%8/XQ`3Xm1o6Y0471:t$<UcN]?B.<)04`!-_HJUM2#EXJ24j>C/D@f3@P68JOY)7O<S.[E@Ho]EG%h3>?3>.P'V?#-#"MNabZ2h+iJ]8iaWa34$`OcS,Yp'i7*K69+L32RYi"m2`BH^<jjM3b]tXe[Y)*JBSf<cq<auaM'Ou3UU$,?oZ(3,:.k+38nkrL.=0Y"iMOi[4Y`XJ&7]:G/68Qcua'P0%@@rCeaE+MIFDk.&EJ\$QVAX\_7W2V'AM`\`CshRg/UB)--3^#Ms"#In]B3:+is!S4\L8#cktoLh.Sf^D&.lH6k$7c(TKE;j2p,V@X<F]tLQM)bZ##\$02X9K(=,kfDHpnD)(/;j&ol,JAn2ZsP+*V.gP"+ohBXR(Du_<&$Ug+Y'Wu>JPIRDp5TnBdoWH$EDrj<]c+2;JB$;Jck8]dMQYRk_QR#cX>Q#b15k=>bdqs/3p4d,+0bgp&-]d1U3a.]j8:-c#_J!UA%,-q'd6]%n_W4PS;C'(PR!HFFn4<`XRUa\.0M.I%jF+hj@qGUpM]Eo)Tc<9sJ<AC<odGB9Ks-IKb>17VMFTdX1e6K2WGag3A;/fbiC':)NEB`G2B+Zp]9lngD^a$TMU:k>kS/;P(5.J$e!E;
 ,5;TQ[(H:93k4J<<flVI9!eD%m$]o+Lq;Ot?SVYWre'F't<--#?_,W+of2=&[*qK/_"O[Ncg]Aec"-=[O(5Fhj&,3[J`1jE8$W\$?bb8)c2f_I=4j>^m[`XDUM":n)#1qNt8JG+f$>OSnY7[f-.^6\rXSer"Z:e.`VT@n'/=gT7/>'qN*>0.\R'&p%[V*>cH&oL`HA(_fDY<m.=7,J6/"N<%9^bA%#pNpVQ7d`_pTCdH?"jru<!W+M+,&Y#*N`"RSeV?&&<NQ.rk7+GPl6U'#4`"WQqk3a`4\]BnP#tXcm&.LSHt*ppO!'n:5L]`Ws*DGc@`iClo^+Fa+r!>=5ju6VVOH&g`P5,GNhhWcH$7tf-d.-&u/4E4NG,d,2Uf:`Bi5NFdk6^hIb+Tpsdn5SIQK+7gBV?Ra0=PEXES1*WuC=0*&YYH'@N-G>ejDQq?Amb0%*EkNH-4$'i_-5JJ[P'h#=L&Oq8V-mVP>"btU,04/Fm`[H%B']ZO&p]cRA\$aEF'2hbFQ89Z)Ho+Hd#JlZjI5SFYR&@;o6EagAf;O+kb],;_.)B#9THc8__c*K_heegMhibYIZ*hj9%XP7L%JXYVD4G"<]AjR>VL7YqdSQDC9/R8EW87=/HX&rm<Y"ZFJ%peIe0Ye!lAGq&Z?9lMDn1[32Bu(?-PDZ9B3[gN&9<Zseu]t\BXAgEjprhNY,?P:$jmhAjS$=R1#7gZbBHY,TRfn/=reV`W6jL=!;o*CLKq#1(#s/WfhuV7=f`XXabYXMHYomEHFRGURD`>@9t!?1(i<rgHHu'%aYt.b+\iRXg!d=GM_jS;OiDlhnQj158YkJm=WY.'I%-S,;N^#-6ghkp[]@D$2iImnE4;$#A_dX-?7DB-(G/4=_,Ie9%jFI'QcW=65ROY?2Kl6+L1gNVDN$)^Oq1I&Zu.U::_[qUDus_?8l2Po>"8fb_\c-b[T]c$7"6Ti?>RMC]oV67Bc7NJEJ!/Wk$Qj4R9:
 \Q:D-G'H',DrW7]9&T_#r&HJ'_9R5KA=\16+=`nG0*?GgJ=f5eSoP9e<AO=-+?[%ULnWZ5^d8AL<2QZ\1]7R:JR#_PapGC66noT5Bg53>op'.e)co[aN:_;OO((A&!!dAgQ8S%XD#VJ*$ZP^0WA6,VoqX6R9mRV#`EKh"6WMd;T'W\IjuX0bCDYnUIb*-e5N$ba#G%g)e(iEnZJ:r<~>
 endstream
 endobj
 57 0 obj
@@ -316,10 +316,10 @@
 >>
 endobj
 58 0 obj
-<< /Length 2087 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2101 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau`TD/\/e&H88.+nSE++D+#>eB?P\B[\;Ad:-CFTbup??u4O4-B"H`kN1Ui,['8,VB'U@0GKLhPfUI`Gk^!UDf8D-hjjUi6A%;r^H0J'&dE=q_r"!AcQ`oaWSg(=K%lK]:Yn8qJT4.'o_J<Z#Uk<a2m\^PSJB"+)K[b=,B4P(2p:-g;mT<D(U-0:cKT@4=]fAbCSN@g#;1.1KgJg]A]:W*dRpo&opHP9UR%ZZ=f\MBX40NjQ`?RUWj\\.6>J22QK2d\kuF!AUVNbaK:@o(^GmN:n(/puStfk4,:d7mIA\Q*St+!:[,QLO&.3HQlhiNm@bU-Z/1"/`\uIFT6G3IX53o0t[Ze\UABk;aLQd]=)#_?q"hM$,k;MEI8N5+\h@WE/%R`hbd6<l]h?o:nj5"q>dq?o@'D#V'NF.WO]KG+TCR<+OP4WX?;pU@'@9V1%cVi`3OQ?MYBaU7/M`QcGJEXSiQT7HEDB9>@`DYDZ^,$_IpGWe''>6#[<U3g/0WT7Sj[AaAISmDNFa9[]8eoe8\ie9T$nQL%6?.=daDlYqriF[?eS^tPpd#h-?^*MPARY/+65jank00/r+peRbS<7<Pk]s='<QUt#$B<%;?0HY5$7T!cf!BLMp>nXJ6mS[CIQ+(gO[BsS5&%i';]kZN+mSLdb`,"YG'T)3A*1a$,_Yk.XXZ3^m*?C7fJX^a57RqOL1_ci,?N8m"*m'j3X7W4(`b7",fp<g*VC\!IVu.D!^&3fH=H4PPS>Y?^i`NW>lWS(ZiR*EF91r?%%NaYG$O7*:m:%r='cS3,J$7GpSm`1,9c-EQ+R+/[K1DQN:OgJ:XQAtJ[&_G&Y'eO_Np@SKu-7fF.5QNApKfr\DEq#]N$bc"QN%,@Q[pl'McA:61<$G18^ckZ%_MEm05*iQ#H-t"Q),.#$Q$%'gXLZ7<(__J(Il>qrPKq:?5rJQZMW-Tq*7TJD1iiMk-]afRLpWLeK=HJdd!;VbJ*1?@15
 m`-OJs/?da=hN@34nL8$33jTpWd)K_QX[8`,dZ=^YDa\=2/&EhHJnc@nJ,/aekka%i23i.0hpR=6:-X,TR0:n2G_1fN!f>Pi.0rFDjLW\g2>X:?+mWs72;MuRUC`<&Pk:iKl/#1i0ndGO.VPH3q^Nr\RIfO?5fPr:<-$K)ekk2YTe;!a,K[cG8+j$ChPpQ`MW%N;:At(ke6T*f=XQiOXH*hrl9W#,@-4E[)R$6o`YYd?M+Q9fZDf:](dH+p>\&M/qEM@+rG,Xb5Kc8f;3^eE?KLcI>66qn7"V5J$[!,rW03H;nFGX)B2jp<E5(+Zg#`mBd4W97f7_7[C&p>L0Y\PGE?G9s8Uq.7Gr4TWa:j:Z@mIW<1HBW)>,14[bJ*jKT$XI2PX=3m?EO?U-R%U&9H]!B*o8.>9.X2^*$n*r1Q*^(R-:fJ#`X$gCn98JQf-6dp)9]Z`5b\.MaAWI9u6]A\,B&(1kASX_=n@ncCYCjYbgd9a&+B$clN[pi_'Q)?*VcNpk3^hn!%l'<0b&4I-VbeMYn"G%R)AQ&bT#X8RIo@Q4VnWkW_HqV4g$kgES-#ej8+B-cLChc`=sHf3.0kGVfZ_6!aH[_>cMN[8ti6G%4cA+`s^(c[)4Y+5-Pc\0Bf+Q':Z-4>_t(0E-F';.'Gre3;J$mXkp-,n#\O+U=h!r1d)HH+9]cL`_t61hJ#.I1Oi_-LOGkpHAl?"]Xg9T-ANkH8)?Kn^5,CBE-N(;EjsM3K8bGnP+aE\R[k@O]^mhZnJ%bP`_bs@1Xjcr&6$<>bD;/dXrUL?TkKtF3Q35c/uau[=`]!+X67mj"YY8)om%X-ZTAZR4RG$H9*gL&_"6V5Sl^m>f5D4arI(sL^OJBBD$[%feM2m,o/>^\T?H?8X^nj!]`SMeh-Ql0s^,:&s=OqCYH*`gP)AqOX"`;A39?W:Y+HbfdY"eI=$`E#j5EsadJ5UiIdA_odN7`[L07$6`0njT-bLU^W<sd2+G
 =.YX8jjK-cXFfDJSR.$l+X%\TnAQh9RJC3iV/AW<+N<aoJS>Nl?!iZQ0Cq-)+grT9u+dgA#cI1$3>RD(+HKAGf^kKN&o!BE20AGI$X0G-t~>
+Gau`UD/\/e&H88.+nSE++D+#>eB?P\B[\;Ad:-CFTbup??u4O4-B"H`kN1UiA6InhVB'U@0GI)H8gNjHhECUpI=$&+roW:f',o*RkNX<#8JoBc%)4%74HDK"8HfVS(#5DYI.I!Q!K8fIU!M%<76ha'\XB"ARo(@,UHpt>0G9.<E3ft%4#IDRHiXmsjuH_M-O\[takE\NfT&U1fg[-c\['JZ1t&gIAa2)+b`,edDIorI[]`RB]j.RXWiFeHapQD(e@6f+X%KRq>T*c(r>saA*;IK%M)rC8.J"NR>8p]_gXLGI6KZD#bY-^'cOE3,DV$qab^)spFW!hD'W:BIQ[,:]!?.U'<#,@>Yqqb'6,MSgUBa9gd*Ft$An^"tS0[?B3*LOEP-bD?C&Vcf96G.lNn*1GGN7.bbn^ua@%N?bN*j4[i7Z+&Oi8U1h"mn>(Bq[_W0*^K_JpaB"+\iG+Xp+M9`>'elT/D8&<XMK4CD7N:-9MUiqj[P[Y\<,;dYoKPS;FR?J"J([@n^G(:urJ-s>*3][0ZT$>FNd*b@DD'-`0PTbtLNj>_?,[oR:>C,ZApCnW``01qb*Z7u)PSTuAL6Gbf'DV#)\@2:k0'0XZAW@D$bBL/D5ZkrQ[^Tu1pBNkK+ft'Fqp7VVPP1)5%)q+E#+d4+BCu@fN+8$Nqg."?RL2N5",0Xi_77ebXFsuUC*O)QnBY-K-]OQ@Te:&AI1/X9u-9CXb<t40bjQQ5l6;$HLN[O']n;KaUrLBKad^T9A9XUH/gBGR92HnbE<f9cNgu5SnVsSTbnXp>-RWWdYkb:n;k1`sD&4k8l]3ar1b!V\POI*E;`RhL,OR"XD#G44Lb[(OoNfci9EKgc6A8W.iQTNE;'"s[oAR=ChLuRu+c(*dPitTZ.F?NJ\osU^22>>4[MLagcP4mGk":Ii`lT>6b[uCSX1QL5\k[h:QNX57Fg'7%aHEVl53EbG)h"tu&Ve9_ZXU!cnB<!][hm!>
 /dl'BUL:sn1V@<O/^!#raH90\0YM$PEOabsXPVO;NfoKi\j)^u*6/6'daFiVn6tu6oKNT2reNDLao'9<&.c6%Z&pMKb7O3)?o(ci0J0OOe'r;$GZ#rqUNbZXXTiZ"$;i*ilff3cY,Jg,d8o^);VPNH_%IP(MiAVLY9>u>P'!(8E\LN\\Ns]T(24HI&GBZT60T_YAI!:n5Fj[6O!),*e.a+f`5Cg=\<?ga>WIa`iYsCNDf,;dPQ!WL=p"EVPGnQ=B1M'chCajgr?+@r]kOa68bh[&>-9o[<:f3JNnQt>K`MNca&;UH\3u@0/H;Pt?;8^S@s-uqLQGCVK#BQ)!O@Hhbqd1!`Vl9j\(rH2gCrCl-W$MHo#j'HqO!7@:ZA\hKo%)mS;7&g;Wt"so4-P7k74Eqtls?grH7'ltek@3>0HT()r(ASC_OO&Tk%5B-Otk?m5nP%(EnEFZh_2ebh7HrI8k==<"g]U&,2O*J?a8g="OI:s$jPTS*'BXD"LcgNqDa@L[!OVLMQ\Ds7E.[Oj7CNt^/N<+:fZcjo<!)0.Io]b48>K07asqR-[f^K=@.7FU&PD[P_RHQfH*<*[LVS/3@WNXHs.PV][e9&`1o'^G3\@Z&,sn;WO8boqMfLnK[?P:5O3`XIUqp)j,/*I?^uL6ih9KXHh$iON<0bYU3=)eYRWGHPUnX,64QPuq+%+oo<>.-L`_t61hJ#.SH`is)>Br"HW,T9!igD-:D#]o4W%1apu('+ZiB#q.3JNS3C6*"p`;f+>dBs[81\mDg6YSL1-b#2(^*GirXDI<(T9X%oUq!,<t?hK>eitHf\@:U[du+97"h[P49j?GF\GkX,$.U*a\j`Vduhb2R)TjBCD#XH2=+&2bb6No/g.s"g%V=Rb@oXu=O;kF/8I%:dNf,3a:ZS#G,dK\Of`q%8=%2qO_9T3$:S5FVq(6-ht'T=f&2VB.EKb.I#C`*k?G49)(6Gu8XW_J13@31!#mpH"\A
 DFfp_b+cJ;K1j=:[De:9AX&de1P!)s4PQQcD>TWF>MHM(At>19LQ0b`'F=;]&dFb;>e&7V.&[@Wf`m2c1,$9+,s!sL`R^+#/ZhQ2^^REZ<FEcd2[nh5c;(<c~>
 endstream
 endobj
 59 0 obj
@@ -331,10 +331,10 @@
 >>
 endobj
 60 0 obj
-<< /Length 2685 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2701 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatU5>EdMq(4P^ZOZ2K-@XNAneN>MoYY,^tD)0UW:%P%1MBf>WO(9Ul^OD66fK+'MP27djl'?0,S]c4@SKn*E]m7<)q<Q%'Aao<b-FPLQ'o!n0mg&.H[Hkk6\.Wnk]D;3GYE/\\q3tdR\F=+B^TlNr2Z.VskF"VLKsnbM(99ZlP,cZ-6>FN`>EI<kH^YL&W"0T%8<QduoiTRo(BlD><Wm_gA4-qR/#o-)nNXM;:KYVD%@&f>9Ze'aQ5,4Qch&G7d'n8VmHX"PqeffFmob*Pn%Qp8off9f7aVj@5JBP^SELH^:;r>Ae3Y6UA-prZ,M()c>cKG]Kq?&9qg`e2H!Y=+?>/U/hM1j"h9Q$iN[3^X0-b]a_foD0)9UTApS>/C/=4qdB4/1&c.[2#WQP$44oWPB0k6%B=H$bAP]t_&K8LNK'QTc'<$S1EI.Tp'77hMU3`NcU(N:EHE&Q5>X^H44mT;:A3;06J5-XBKRu]Z#?tk.m:D@+Y0Cc`<21"b`*-bC,pG,kZ[VJjb+RDo/ZV]lZJen]9?Tq_[!<",><9B^H)!=:4#BlooP.uV$Z+S@hm]sUWpRBH8Y66./*KOUO!s"4)^c9JZe*oE%&T'@AEKOD",0>C>7I+2/fip=r278+WSTPqWrQ#l!^OKED&k2.PNq@LXAhFFFJ^2)pYDL=S;G)ajPLNjmh_+djE3-#0^NYD3"-bsPGYp3>[]H(YVdpVnrTCeZG6j"Z3&!cI"=pf%6&\<Zfii<hZdZ\+=s2*S4$SfOb7#n95*:RK")L4&:s,@PiM^1>*],/CloRt7s!=WRLR4dY/cji=FE.D:b3sBmo)7O3AcKYHVt5CWL&^+OT.+tY3G3p+[%T7P'ZX,?E=DDijS@RHiRf`l%2mK2$s@Vt_d11NFK1Y:X<sj_QuFd2,no<!:[gh!BZ28ZK59>uI_;rFcJ,&#(k+]026A.'p0:77laBnu=E,!f2Mma[lYf,6-Im`8TGq%kLbMu
 k`Jcg[mC$#H+[2m46%<4:?\TB]Q][I1'to!dZXq$!<tid>$H")a'?f]@n`D%$NB)7PW<BE'W#:kAfT+cG\:t\"Z!_d9nN1-Rl0:$[XU$Do8c=gBa>qcbC7LuJ'9jo?A`:FeYkVh;&F@jS<hBUi!*Nb<HD(3i"2kITV9?dMbHHh#nO(QPnJ,3kLD,?<2@Yhs`<AD+df;)W1,qErir@'C_p^:M&Rl='Q2H;[nHaODfbrZWd:I:^lpaV.ZHHKWkP_r+>PB*AIH]@Aku<MTj/.q8+nlq8l],G#/kJ?-?$`mf[;Bd?NU<jtDr5Qan%].WX[KUdIX1[2F`,#=)OB9gi/Yqqhrqm$fSrBFn&:k55[sD.gaW&U$>A6&;C3)nBsdg[A>L6"\FFbFDg51LIi@H8b+hCi'uh/oC#54kTk?C5VDHI_`^-.lZ[tBhg&S3s]\ZfsXIV?50_Oq/+*"#J@uHIS(u'C0C1>PX*b5[\r*+m(B2dJLCZnERX]rSaFr8FE:W\hnQBeu$1qNER46bFOU*nMn:SnY-k[upu1hFh!>trcfjfE-7B3+"qVo$9tHHV'&apOD.P2k1q*5j"U]YQMn..4/>PtbRXA=[J#R'BdNdV(Q2`b-1u.Hks[ms1MrP;,f!%4#6BX@/NFF-7]1VX(p>?f!FW1UqF87I`g!He/]B3RNOid-Yp]T2.9*G(O*(N+5P-TiHJG.QWn0..)\3j"Kl!CM8[RN0[F.c&BcY;T4W'7OM^(2WnY[#(3C&n_%T4hu]%oSIlF%W]>9]CHr@5!#Y[C5,=F$h2D`t]_AoY7#3GGIh^>9?,+`J3^!7YGr0T&j]`[&&rOn[nsrO/jZlBpI[7<Mg%Ys=1aFk8me(n5M9hjJh#5/W8i`0u'7@%3LjD0I!MYX=E<_q2OrKg#<eW#NLi@p:b`cI_9NDJ2LCP;;7Ul?Rq=8'\^a")?,TZVYd9ooi[*\d)^fhh"#F7'M-fAJL"8iHs%VOQmUt:
 1['oo1=>N;(gaYt?[8ldb'Hl<G]6%5K&B7J6uN/W#`lI)8/,f-R2,^D0hN>srG3h.=C-=n-#IjPBLr#d5]%T$cg4HSU19OR>*^,KXbPSZJ/'s'6$$Mt.Z]I&eS[!@mm"*g2X:NB&3i54SB)jDjT&c/IsZ6IN>XI'X=LT)P?RoC4iTl*Oo<;7DrB%'&MZ-]MMT(s:rGG')%*bCJ&&Sdp;j2F5Hd*nQ><dom<c_&)5A7X$$8p-"@V\qX!-Ufn`!:^_oVb[j_m_/_EjE3P*_/UVU\:$V$#AbCJ:)%KhWt/>'?9mMB\G3cT"Gla2.NW_6j;L>Z?.)M:0fmS:^;@Lbq<haaWn3GCo&=mB?Cg*=2-WGUU2DQ&4r5e@pLc8a*<T(N!AF&:pU;R1^DjeErj,V=O*\eLm#!1u%kE'\Nf=BsUdn>6m4#nSG[%5-$e=*#3FpDio=S2'k!B/J+,&ojTK4n*)[mK?EW8H$"S=NZf^lBFq6_80-)f;K?)\`d#dam69ui7>3koKLIan9DZJm9SnM+q]BPi_)R\G<&)c%Ao'nqYOTERKRgP1#<\9+?$1tnu(gipH01TG*sF^T==o@#";rK7bud]q-nL%a8\quGR$44*Z?@BeJ\@'ZPg@0OgaB+n8Z+l*2iO'LELp#siqSd3>BmJ&Kpf-_chP;g.bgu)CMg6n>SK6D*g`jG+\;KSN$?UCZs5l~>
+GatU5>EbO7'RnqHiO<?qCP''bbiBpAPI-b"V&M@W:,`\=aB/`k._ngUl[+9o3ar,:gW=8T"mG/T^@US/l0%`ibOsEC=(IH1cg.XQ[d6Eo"Rs1hX1t!](KnR@ZGktkpT'o.r:uOXrdm-!B"bm`gK?H4,E(SU5Hk4D>HIG8?]So(AiuqJ(WA8QBuN5q.2p\tL.4"[=]O^kA?j3s<[=dQoO?.G*`P6T1T&4-Y1Fc"N5$<4eS$]i')]<j5r?4$O+]pYid'.608oLmJ\@XjH(DY'-Hh_0N$To?972-e*9hNP)l,NYHQFsNIE[d!F<gK]1ILb+IG$+BjAj\7Uf5Q],:dd:;a9b0bRa&`r`?\/M26Krr]M-jj&fh?@uK0,YaY-aZ:6tZZ^l!b>2Vt`-@Y1K&(/H99*eo[MB#ROD2/NHB+.VX-,Z]O8.kXLpR93UAnH.PI+g5=mO`B7eFkGCFcoM$)1@=SC;9Kp]@5p@#!?!)+R9\0PfQL,CLiDG]VR^;eB#>9W[6OZ.V007(l)6BFB^27"M7Iu/kUYC&TK3S5nf2u.cVQ,1[CRGr.nHmk:c#2^XW"Yc<i4MUGX!O@*8WPML*&tb&u2&3j''t1i3Pe>-t*qN`gYn>V"Z726CV*8W>gt1(8IP)9T^@S2V1?fT,CQod%eP'F]A[K8!E*R:;s+&G%6OKtP#]msgs3@HW.7!rr-GHX;N@jHse04i'qa0N.bn2pZCS&.NVeMFn.\UdK_NO7IR3h3H8\mfI9U3;`&i8,#,'XJj*+)C?H.!<GG7H[pcZL)G<a'EG@U3.:d!;B$*!H=b.dj7kZlPS)@N5si`uei.6_VYE(445[_9l$R=*.Ht=%?P"0$gh5#O;p8D'XP,?H;t>@1pHK-J6aLTHqlmsRpkF_H*+'cUoPi:K/=ELo:9.CD+c_8H^mU&Z9Z21>P,o?456>c[gKq7mU<_MEFd<]S.+4=n-e`Vn'e\6-k0/]5?SbE$5/,l'^e@\
 `.h]FUop&.56(ZAhj4I+25oAVA;B,8[8c!.GP(";ul!Mf\-Q,-eGj&hh=^>E[k\AOkR4(h$%ZX39DiHc%?Rhm#RB/ELk-,jdD/]q5#%GF:%-)QI<7@,1+'Ba`_5)O"7]SQ"'Pb]c^]DTEd?8M-86C6s=sWfU#-6(&`J6!!"l7Z,f`3bT=R#I^rUS-7W-EmU_!$BOoR[B9;]?'<g"?O78(.IC0*%o.b5X]N4?O&D&0V6t>p0]6(\c94d#IS_&7#L<c>Kqp3q"iEep2bHka"Ae6'$?!@QILUn@0q.DTMcG;nHJ*SdV!n7$hJ%ZY`pIBP"d`p"L]ZrUt(nh*Rusl'Jl_(WZ4hU1&=QHVRPKGXd0(/r2G!GrKaq*tkWPj%d],9L;sMdirC+9B/RYKrfBJ!$;P-^,nGGpn*;OORd&sAVIBYCRR=s>2WR0>]lnUA/s)*2:'qXXnBM6iqCq9Y]f"3`72\W?A4'1VACI;2n&I6f$p?K4\.U$#1a-Z2cJDGC?Sf_X_Y^q\f8j7:W\8i4=tLQC390GG1+WgU'KOV:SnYqoEmW$1drUW:!Jh0jfE9;f2gg5Vo6F!H<1QnPnbd<.Y2)6$4qt4nd=-Y@CYWdXD5&P6Ir+oMAr$R;]1RNhY9cs+U,R)i2t'UEA48h]n%NRN#,%6D+7H7dWE1sk0r(k7hAE0>%)O$i6H??Z^g5E1$E^?097J$Zh=8((rr$9<3,f":ip#<TX5BhNBb+IY+[R:;cYRY2)?TV;AD-R)_IJ/gIr=G'(D_YaICQi_#Yad4!Pk)ATR2`Q[g%[!&/_=I=PIkm:I@%o\G9++[g.Or1$j,G._)Kkj[g5l-[]mQY3Eo8LQ?4kr1L4Q5ua^pc6ZTVrKG'e#9d]EA*ZR%=SYDkiN*[;Bf4C4MljpNNC1\j!4C[)!AdCUR@6IAlYeHLBn^[aZMH#7qe`0>Nj@`Ah)#s-=7gQ&pOP?9uY+8PrBQ13QlPp2R(b"gjpcqlj<
 I.`;kB]j4t=A'Buo7=c)1<ajrG'7e.#0n:K732kNRWOONYHl1mPbV^>oFJ@`*8Q\o6Qhp\ZpO@Jtr,977*5a/L5XZr'QC;-#H;hlkZC[UD8=sgKJ@,DnZ*Qj;3P&akG0noQ/C0hRq1YOt4_uVto]Z1nb"*!4>Taf-JX9edS"'H4JBN@eTikqRdF.6.e6_SBk7o]6kYKWkr@Ul*3;a'^u4AVVm-4dCQbm6/PIt%7C4*J,6gWHj9NnR&YS;ch1X\^CHeMO%6lD1@j'-M`LZK)VW`m%RM=`rECS-rRm%;mN>XTBT"3sd.VH1_Y?hF^?:K95!9"p&33Y_ks,,<84)ri"HSWYh:<Y@$3nf6m<V9@W:L0Y(%;'X(:,Z^NP@>#@5I31of.U\hBcJW@IFM*Md.O1T0AnNVug7fV-kha]gE&p?\XL&7.L6,uHK5a+>_lLkp#/A/)b`arq(@5VT@1%X0kVrjBOUu"\nb<U2^oJ[U<I,]%$D(4[__Q`35kMo2uJkAk;]<b<kmLX%ToUEdUN]KCCDhZ^=0XRQ.E:>T"s(H,*qO4..nr&;CFA7IL"eZ#^U>(EKhEQ.T2Dj-fpY9r*-Q,o@JiYSJl1s9P_1'K;=\7s)I\H^`6I/.\p]S1b..A$'%nn>H(fp3LG;N/c&^noOHK<_%TLYoOpGbG+C<%F8[Q[NET"G]\l#trNduM@o*40K_B[#1Z,!kB@rrUMJ\K_~>
 endstream
 endobj
 61 0 obj
@@ -346,10 +346,10 @@
 >>
 endobj
 62 0 obj
-<< /Length 2780 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2783 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm=D/\/g')nJ0U"_4pJXFic-+,]PR^]$1("[;CfKF'=""hnY2j1,9W-E`GrU2h4/8M1#-Nt8S>>t*S1XF9-1IGM4SD?B!rH@=*)u0=#/@LCP/XK-*f+7N:7GpVQ%m3K?CN]@2g!tu^Y3-?4IJr`^YoFS:4KQlq7`pHMNn$`+9B&@RooNCmS3OT&nCIH>p$`iPihK<ti7QFC@VHo0(-hisDK3QE]#r[mmq'KPY!-/6pBX68\=fg>md]]skhN+cIb:WLOO,PZqP=fPeFWU*KPk=<I_W'#bK2)V4F_a*68.5U83@S5rQ,RS<mBrqd%Xm',2427)Be3i`:*EVel)/r*6G653iJ9^DNUS>@blOZ7EQkge^/N4BsnV:X)21V2tl)QEJbNI+n78t'S&!%mljC1Me<-NABWD8P<GDFS]N<\[$N6Z9/BUKg"q7I,?WP8h&qZVif,_Tor6!`#a`6'hajPO<T=h,Pt68;&><.#(bIAh77j?0c[?o/RPrq-M;9%Uj3U@$1C_a:A=SJfaI1b>PRNRc1,k"P&p5RLa=;a@/1M-l0b[K$O_&"B$\YYAAbGJY*mQ/sg(V@aXr->#Mh76SB%+LP$M3?<`alV:-*ADq5g=3u&UDZZ`hF-jiY$I>J\YtGb3:/iKL9#oOe8A9&Ektg*:u9,J]<8`#GO=61BsS2.P;)!U(b>dq"pSc7'uR7Q6AreWel=QV_"U_.<pWo2cnTiONCiP&$f:3"3Y"YmWgjYTPlO#./5FCH:9?U+Bc\+6&dk8\Pt]Ss'mjAT\<j2OhO,3GRFR>)VG1f]OoTfAPI&uaK?haQp3$cjuJ]_;4]HhMn)F[,_Eo*e'/;6E@?%[?V<dfk='MJ,H+8f'G;H21(F?aqlHq\ZN$LFoA-d+<li'C'T8^21:540X<;,b-;fdlUFp03?+U:"`F(q&3YMjSNb3to#[G<T^o^0[_>2/9n9%q5X^=jN=guoVF"u_8Z*q.Zcn#uu_Wr5
 u=#4'_KMi[<=Rq-,q?g$JFE8'S2W@Hd@mIHBd:reYdP<Y*Mt<<!@iSkqCfk!NWG%u3A3<(_IOF1OES,>m/r^/*;M`QDG`4Ym(i[r?>YR9]\e`)D;d?b.E0a0aOQ@2O!Fc"B4W>#i*'V!D[tZ5enq+uA8Y>g@hm4"eO\n`U!cHa3:S+7+W$W&2iBC)+NPq9($uYLL0eoeB9Pk]Dall8P72e.QW@N/2Mo1>]`V@ML\glOR((!&;+d"^J9=Y1`Z9?K**:Z*^bL04O%pJ^oZjagC5_Ro(>3_EAjE)ne7?TN*]%\RC'd1)cccE<S.O!D6XM4hR'B[PNN:27/US]@6R>E(?IG*NXps2B/Z@oE$eLcHkd:@nt+9*Z]P=5'oIAWu/4#[:*Ml:PIF^&9&h!"Oe^*N1L&e-b_32i7HD%agMm90:8hf8;gJK77H,raEQbASK)Fr'gXQUKX\meF^YB(sK\cuQcJT7NT-j0nf;`5P`\S)b-CpCO+iq55f?[f,c(\1E(qcFRJMq?Jq3\4cnb,bZ;$Y7nclE1J]&[#srhLNnC!=oe0"S1.qO*[UVoM^qt.m?i8cSS0H&Tu!=W\T-07R!T.]SFNE>[aB;$n][gXF<a!9ON+Vn(Il@-9UuT94e6%S*/r?V3];n?c*Po-S5go!-Ti;?J\ki.3o8e"j).1ZL.^$RRQHo$#%KRe>2tr5M*'a)2u#?UbQ=Z7d>#n,aLm'iI2agn)Cl!om0I"QTN-qC%$B5SEasPHH%O??cY116;$\-SG/il.*oY/i=%C/=j^$gFa'G$pcsA7Gr"_su$l(D@CL0\Q>;9-EfKb=Sfa2A%=/e3Ic+B!nl;;[:$niej#6nHO[mMN)O,X^\_cKg+*C2-!h]\FY3ap>mGL/t5"UnX*&UuOu?IJt\B:@Aj-tae69jem4aaVs%D-YE=13a?qSMk;0j]+VU,Wuh^'B0.4_!X_XC0I\VdQH@;5kN+%44nDaZdC1mYf7%QiXE
 ;CnNP*TQ6bsi^A0jTIOJ@1V`E)tK*Qnp58$<>pFCpmQ)<D]dVdsEL(DW`"kua[m"S?q]s0d4Had)(h&cUb5F1slCO<.F=p'3"S&b,/f44(Y`'$XcD`Mn6jlPEZIX)e+g4]ZIC%%SHocY>NB\]I`q\c;1qkS!Ag=7;/j82Dpr8f34\*_1%Nm89pk<%#WnbVb!,i,[8X%Hp1@Q/[_\G)CP=M#<e<%@1N:DnmFLV`5Rc@cBsgfo$1JTSsrFqK!SMKJL/-8A]?Yg_eoRt0nB[aWjk4'ZlV=MapOB^p_s(B#`O'(%sF>d^HggSUOp&h7s:N/"i2KL*MG`%f)'h8F#tf^OW,%'pU9I/tG>/CR[U3_:i,`:5@VTKEJ2Uo+sV2ueV<#X@o=PSKI'FYMRO,bWZBf\1dq_JgXPA$LJ<=pPORO+H7WUX<n-S\eHA9%&r>+ac;eMl&cunH9nq]WDQi5GRZccu'_N1(#uLTp;n)9RlI]h7b@j'[<q/,E0]"0<&uJH0@cLFnT9!EaYII]<$_O1<GBF^>1<>WkXFl*;rNKGNMCr0ZfLlV[Wp3IE`pYPH'+9Bot,;?/E+m7!tbClQ;e:cjF3QFklc-QqdNtj?jQ89@l6)de!U\UP5s6p1_Pp2^55^5D^5`3=Mpil#m?cH^IZIiWa]q?2$R.%s/7G7kaEakaJ78T^#TdG2q'Xg$74lO(#bH6U*h#Rl`o$ialLdd&OS\m&rjg5E<$$E0"npoIJP%Qi61MQV<'7Zb@5k[A15YhMJg7qf1gBQD)<q3?*6<VkncQ.D".+'2CjFec~>
+Gatm=D/\4>&cV3*U#)+qJ5,A.,sbDHFrVc@cs5qsY,M5K.rfcYQ:)`^H#HpZ^NV*.<^XR%*M<\$/>XA-k*_WMB"6G'B-/5@IQqnT%K-0HQIs-a_D$XmrBPkH%(qu&JS.PdXj2AZ]7*Vmoc2tcY@$*GQK,iOL\7(k9%i^SYr]uL,Ym]1%u']&o1.CAhHKrb*km/$EYRdB*'6>TK_@^ko%.7+?/G.@Y&a7+O"0<A=.aAjHN]Nq>gUtZpNZEJFDb)C5O:3h884[I_bu=)l?RhL+u_D=^YdY#'kELlSj0qPTpP3P,T-uRiT,bGX-`KOBfR_4RI:Y6NKE`piqIe<)lX#ZNo\_+*E5Ti[nP0_YoZ(F,%D7BC?YQ@1uAS\e[DF6)gh%93(8b5OSG1J$G`(NpR``^`3TJ6\n0R-adu5^hW0VF3_5NpAN?gWHuHgE&Zk;gD@f9[q*peCqUFP@KZd[YD^<c8DX\"i8u+UXLeoTXN#%c5AOWHL07=r9RQ'#YLts$,i6]RK1C_a:A=SJf.%&_GN/Wd11H.ie')*c$aD6?,/8G`XYn0iLOlp2o98'G,<W2?Q*mQ#o\eChbY*e?MLOtgOB%,Wp$HqMi-6s!oM&Q^O;"HbA78^:p[HIb"\ATD)+E1M@C-IJDiR$(H'W5Uk!dY;F#JEl$TQ-XqOXMl_S:RW5MMmY1kQERqq(X7MLj"7#15&4t[o'BrPV?dAJp7!1H[TrCRJ[fj+@"tK+DLe*AM5b34Io*k2jdteHl$M1U,>`/XCB_Y7NC5h.:2LnZ\:eD?*Tehh]P1s"T]d+C]RF?1MP:C-9">'2j.%^T+jriJkEs0:RI?b;C);U6"0WcG(HtZPe6apV'9i8ZG'EPe0So@#nIUcLB.?a;:bm&J'XATDVdZ0A7-k/bHf62[*&]U+D/,A;3")?.2UZC]*735?pF9E(CGkVAq`5N>f="bX_B#rq8bbhF]SNV=O/<s^XW(#Z/FZA[^[1$]F_K
 flQ+g5$X9`d;E671qLjt,##E`rEtUGji_A3<5deY[C'78b0f437o9_[N*+0_%=A]C(BW5<K4?j.%OR`5o)E:6R7YGt36uH[#`>i+k\7mk(k8aS/$fK)T0&%d6.jcF\$4?]]YlD@B$jf<3?eg\a%8@Pu-'K.O54`96?n%*[UQT'igpT/54@;b<cQ9[8I@r>7M)F0-gcU*s@TkFPg,;L.d?/1$1iP-I=7"'GLCkVcnWBAa<P!r;;KaNV@W*faE=!EBH^p?\icgPdQ(]TJ[I,\^)+4RX#e;+cdOd7(kZ0NtUhc]H[nUrp5]feoPM`ZG8oBYkIfk@:bZi4,huCM^9hPmN'16+&]"e:@YEsCN;SL.N[hK0>P7\9lr0oCb'%LpmR:ZNfg_06'U:qZ5[_bkNea^%q8`0at*c98F:chh7,Yhh'Zh4:3j66LF4,GO^DQMrdh`k9"/FL,&M>LH2nVM,,mT4Upj`ki1"$ImLmIZ6kMlU5MaWViM+@bD_03b#cLZRE4=o=5KFj4[o(MpBsR/kH&,!S+p-UcAG3amn[/*A2gnH,Vp!9Rk':rZ*i9(L4B=1#9i1&68^d5"`gK=qh;e#Io&oFd<Ik@r[fU[PGXR7gEB7XWu79kQ+4MM]fO3ZIL53lR=C)Q0KTC_lJokF'.GX'DGrGVk]fKu;2X]YV.uh1V@.Q#'@+F>2/Q`a\L]`eQ`LHK/?kpc&l0Au;6KL+PI-]R`@s)_Woa.g?+C"C9fUeVm*/OkI<d@t(A$MU)1@AA[e3#TOKM`p>Z+iMY4-8&K0)?/Ye(?'g`$?<fhl>r!i`<4G&oGr`WVbu@VM""?9C-_uT)Xd3?QmlG3`8(C`r]U/gb(j'?E%\;rK2F?=3?VtN\"I7n4LM.an6j)3!5qCWQ0Q7mur5G1Q9aen2C#0]%S<5K^KkZ(7qfsi<EP5W#i'@?cg9B\(<s]1poN63-LblOA]-"#QD6XjIo5n@"a!=73d;I-uNCNGk2'2
 7>1Z%Q=q^=B58`2Tro62V]:pP1=F'e3'&,n\=,_WfP<XA;49tfAYh7[$P+.un3[[Y1eNM+.8;h#k^m]N;]4oR6bXI</GoiMm87f&c:O6>Q+a4)D+#*@QqEoHMgX3hg&nhBWW$OPV:h)T]F6TUaa\4`af1JXk98`(q<X8eoTmq;%X_c^e?FrLfL3D9:;mlYg0lbbNBFMg;DC6:H4h=C6thIl7am8ap"R:m'pAJj,@#,e4W1E&6p@,]K;dNeM=8*%W7da8_t,\RA!:93,Y!d4h'c;:/%E7+Jq"nMtoj\I4-%'-*uZicG3eX;;5Rs&C:W6D(m)WDME"q>Vd`rnJJ';ohZiu=:5bYB,g"aj:U9OAh*,cu%ua02.fncE'[SQ8GAr#9f&r63nl<n>:@_.'a6Jl56OC\Q'k_kUTfek\aCJY=)<0RROjRbb/Gp^0_eRW0p401U9?2TR5:^a#"dF^aKHoN_RQ/a#o!!J_i*2E"_%c^iE'WZk!]4C:"`Lck9lWdpIlIUq9q0,>c;k/jRJ>,X'[SG;pW]qVP+IrUaKJ*H@Hr5;2SH$\JW&OCQC3Q,f=%o6sm11dDb44f@HD\R'e"&ot;&^7SARiE9OXoGMN7$8s?Xn/`5046oR1fhX\mJ,aCUs8EW&S!_S6+&N)NZ`ZZ1TF1)5Yn?Ei<Sh6Xo[bM`L[6=;]HfWr<CJ`S/NVV*P:ntbkH#9#O#fA-O<6U#$)/7ML3/<7TB9F.,+dskQ]>:Ec!lX<Y)]N,/i4.]i_<U`AR0\1hAS(6O0k92)ajTaD3ggjYP*,]uL'Pr\)mS~>
 endstream
 endobj
 63 0 obj
@@ -675,19 +675,19 @@
 29 0 obj
 <<
 /S /GoTo
-/D [57 0 R /XYZ 85.0 624.6 null]
+/D [57 0 R /XYZ 85.0 628.6 null]
 >>
 endobj
 31 0 obj
 <<
 /S /GoTo
-/D [57 0 R /XYZ 85.0 593.466 null]
+/D [57 0 R /XYZ 85.0 597.466 null]
 >>
 endobj
 33 0 obj
 <<
 /S /GoTo
-/D [57 0 R /XYZ 85.0 222.013 null]
+/D [57 0 R /XYZ 85.0 226.013 null]
 >>
 endobj
 35 0 obj
@@ -746,100 +746,100 @@
 xref
 0 95
 0000000000 65535 f 
-0000030420 00000 n 
-0000030534 00000 n 
-0000030626 00000 n 
+0000030484 00000 n 
+0000030598 00000 n 
+0000030690 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
 0000001336 00000 n 
 0000001456 00000 n 
 0000001621 00000 n 
-0000030771 00000 n 
+0000030835 00000 n 
 0000001756 00000 n 
-0000030834 00000 n 
+0000030898 00000 n 
 0000001893 00000 n 
-0000030900 00000 n 
+0000030964 00000 n 
 0000002030 00000 n 
-0000030966 00000 n 
+0000031030 00000 n 
 0000002167 00000 n 
-0000031032 00000 n 
-0000002304 00000 n 
 0000031096 00000 n 
+0000002304 00000 n 
+0000031160 00000 n 
 0000002440 00000 n 
-0000031162 00000 n 
+0000031226 00000 n 
 0000002576 00000 n 
-0000031228 00000 n 
+0000031292 00000 n 
 0000002713 00000 n 
-0000031293 00000 n 
+0000031357 00000 n 
 0000002848 00000 n 
-0000031359 00000 n 
-0000002985 00000 n 
 0000031423 00000 n 
-0000003122 00000 n 
+0000002985 00000 n 
 0000031487 00000 n 
+0000003122 00000 n 
+0000031551 00000 n 
 0000003258 00000 n 
-0000031553 00000 n 
+0000031617 00000 n 
 0000003393 00000 n 
-0000031619 00000 n 
-0000003530 00000 n 
 0000031683 00000 n 
+0000003530 00000 n 
+0000031747 00000 n 
 0000003667 00000 n 
-0000031749 00000 n 
+0000031813 00000 n 
 0000003804 00000 n 
-0000031815 00000 n 
+0000031879 00000 n 
 0000003941 00000 n 
-0000031880 00000 n 
-0000004078 00000 n 
 0000031944 00000 n 
+0000004078 00000 n 
+0000032008 00000 n 
 0000004215 00000 n 
-0000032010 00000 n 
-0000004351 00000 n 
 0000032074 00000 n 
-0000004488 00000 n 
-0000006858 00000 n 
-0000006966 00000 n 
-0000009517 00000 n 
-0000009625 00000 n 
-0000012265 00000 n 
-0000012373 00000 n 
-0000014659 00000 n 
-0000014767 00000 n 
-0000016947 00000 n 
-0000017055 00000 n 
-0000019833 00000 n 
-0000019941 00000 n 
-0000022814 00000 n 
-0000022922 00000 n 
-0000025193 00000 n 
+0000004351 00000 n 
 0000032138 00000 n 
-0000025301 00000 n 
-0000025440 00000 n 
-0000025658 00000 n 
-0000025826 00000 n 
-0000025996 00000 n 
-0000026290 00000 n 
-0000026488 00000 n 
-0000026706 00000 n 
-0000026856 00000 n 
-0000027006 00000 n 
-0000027136 00000 n 
-0000027330 00000 n 
-0000027562 00000 n 
-0000027808 00000 n 
-0000028034 00000 n 
-0000028375 00000 n 
-0000028513 00000 n 
-0000028716 00000 n 
-0000028928 00000 n 
-0000029143 00000 n 
-0000029484 00000 n 
-0000029647 00000 n 
-0000029760 00000 n 
-0000029870 00000 n 
-0000029981 00000 n 
-0000030089 00000 n 
-0000030195 00000 n 
-0000030311 00000 n 
+0000004488 00000 n 
+0000006869 00000 n 
+0000006977 00000 n 
+0000009531 00000 n 
+0000009639 00000 n 
+0000012298 00000 n 
+0000012406 00000 n 
+0000014690 00000 n 
+0000014798 00000 n 
+0000016992 00000 n 
+0000017100 00000 n 
+0000019894 00000 n 
+0000020002 00000 n 
+0000022878 00000 n 
+0000022986 00000 n 
+0000025257 00000 n 
+0000032202 00000 n 
+0000025365 00000 n 
+0000025504 00000 n 
+0000025722 00000 n 
+0000025890 00000 n 
+0000026060 00000 n 
+0000026354 00000 n 
+0000026552 00000 n 
+0000026770 00000 n 
+0000026920 00000 n 
+0000027070 00000 n 
+0000027200 00000 n 
+0000027394 00000 n 
+0000027626 00000 n 
+0000027872 00000 n 
+0000028098 00000 n 
+0000028439 00000 n 
+0000028577 00000 n 
+0000028780 00000 n 
+0000028992 00000 n 
+0000029207 00000 n 
+0000029548 00000 n 
+0000029711 00000 n 
+0000029824 00000 n 
+0000029934 00000 n 
+0000030045 00000 n 
+0000030153 00000 n 
+0000030259 00000 n 
+0000030375 00000 n 
 trailer
 <<
 /Size 95
@@ -847,5 +847,5 @@
 /Info 4 0 R
 >>
 startxref
-32189
+32253
 %%EOF



Mime
View raw message