You can subscribe to this list here.
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(27) |
Jun
(63) |
Jul
(17) |
Aug
(58) |
Sep
(7) |
Oct
(9) |
Nov
(3) |
Dec
(9) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2013 |
Jan
(16) |
Feb
(5) |
Mar
(8) |
Apr
(3) |
May
(9) |
Jun
(7) |
Jul
(11) |
Aug
(1) |
Sep
(5) |
Oct
(33) |
Nov
(21) |
Dec
(32) |
| 2014 |
Jan
(8) |
Feb
(43) |
Mar
(36) |
Apr
(22) |
May
(69) |
Jun
(76) |
Jul
(66) |
Aug
(53) |
Sep
(39) |
Oct
(62) |
Nov
(28) |
Dec
(16) |
| 2015 |
Jan
(7) |
Feb
(2) |
Mar
(51) |
Apr
(97) |
May
(58) |
Jun
(20) |
Jul
(8) |
Aug
(5) |
Sep
(5) |
Oct
(27) |
Nov
(28) |
Dec
(43) |
| 2016 |
Jan
(17) |
Feb
(4) |
Mar
(12) |
Apr
(5) |
May
(15) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <nik...@us...> - 2016-01-11 14:48:00
|
Revision: 2463
http://sourceforge.net/p/jsbml/code/2463
Author: niko-rodrigue
Date: 2016-01-11 14:47:58 +0000 (Mon, 11 Jan 2016)
Log Message:
-----------
sorting the input files to have them in the right order compared to the input
Modified Paths:
--------------
trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java
Modified: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java
===================================================================
--- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-11 14:38:00 UTC (rev 2462)
+++ trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-11 14:47:58 UTC (rev 2463)
@@ -26,6 +26,7 @@
import java.io.FileFilter;
import java.nio.file.Files;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
@@ -72,6 +73,8 @@
files = new File[1];
files[0] = argsAsFile;
}
+
+ Arrays.sort(files);
long init = Calendar.getInstance().getTimeInMillis();
List<String> differences = new ArrayList<String>();
@@ -83,7 +86,6 @@
for (File file : files)
{
String fileName = file.getAbsolutePath();
-
// read the mathml, infix math input and expected output.
byte[] encoded = null;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2016-01-11 14:38:03
|
Revision: 2462
http://sourceforge.net/p/jsbml/code/2462
Author: niko-rodrigue
Date: 2016-01-11 14:38:00 +0000 (Mon, 11 Jan 2016)
Log Message:
-----------
modified the output produce by the infix formula reading/writing test class
Modified Paths:
--------------
trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java
Modified: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java
===================================================================
--- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-10 16:05:51 UTC (rev 2461)
+++ trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-11 14:38:00 UTC (rev 2462)
@@ -25,7 +25,9 @@
import java.io.File;
import java.io.FileFilter;
import java.nio.file.Files;
+import java.util.ArrayList;
import java.util.Calendar;
+import java.util.List;
import org.sbml.jsbml.ASTNode;
import org.sbml.jsbml.xml.XMLNode;
@@ -72,7 +74,11 @@
}
long init = Calendar.getInstance().getTimeInMillis();
+ List<String> differences = new ArrayList<String>();
+ List<String> difference2s = new ArrayList<String>();
int nbEquals = 0;
+ int nbEqualsIgnoreSpace = 0;
+ int nbTests = 0;
for (File file : files)
{
@@ -98,6 +104,8 @@
continue;
}
+ nbTests++;
+
for (int i = 0; i < 2; i++)
{
XMLNode xmlNode = astNode.getSemanticsAnnotation(i);
@@ -122,13 +130,28 @@
System.out.println("Infix input = '" + infixInput + "'");
System.out.println("Infix output = '" + infixOutput + "'");
- System.out.println("Infix expected output = '" + infixExpectedOutput + "'");
+ System.out.print("Infix expected output = '" + infixExpectedOutput + "'");
+ boolean different = true;
+
if (infixOutput != null && infixOutput.equals(infixExpectedOutput)) {
nbEquals++;
- System.out.println("#########################################################");
+ System.out.print(" ###");
+ different = false;
}
-
+ if (infixOutput != null && infixOutput.replace(" ", "").equals(infixExpectedOutput.replace(" ", ""))) {
+ nbEqualsIgnoreSpace++;
+ System.out.println(" @@@");
+ different = false;
+ }
+ System.out.println("\n");
+
+ if (different) {
+ differences.add("input= '" + infixInput + "', output = '" + infixOutput + "' (expected output = '" + infixExpectedOutput + "')");
+ }
+ if (different && (infixInput.indexOf("%") == -1) && (infixExpectedOutput.indexOf("arc") == -1)) {
+ difference2s.add("input= '" + infixInput + "', output = '" + infixOutput + "' (expected output = '" + infixExpectedOutput + "')");
+ }
}
catch (Exception e)
{
@@ -138,7 +161,9 @@
}
- System.out.println("Nb test where we have the same output = " + nbEquals);
+ System.out.println("Nb tests where we have the same output without considering spaces = " + nbEqualsIgnoreSpace + " / " + nbTests
+ + " (" + (nbTests - nbEqualsIgnoreSpace) + " failed tests)");
+ System.out.println("Nb tests where we have the same output, including spaces = " + nbEquals + " (nb tests = " + nbTests + ")");
long end = Calendar.getInstance().getTimeInMillis();
long nbSecondes = (end - init)/1000;
@@ -148,5 +173,18 @@
} else {
System.out.println("It took " + nbSecondes + " secondes.");
}
+
+ if (differences.size() > 0) {
+ System.out.println("\n\n List of differences: \n");
+
+ for (String difference : differences) {
+ System.out.println(difference);
+ }
+ }
+
+ if (difference2s.size() > 0) {
+ System.out.println("\n\nNb tests where we don't have the same output (excluding modulo and trigonometric operators) = " + difference2s.size()
+ + " (nb tests = " + nbTests + ")");
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <and...@us...> - 2016-01-10 16:05:54
|
Revision: 2461
http://sourceforge.net/p/jsbml/code/2461
Author: andreas-draeger
Date: 2016-01-10 16:05:51 +0000 (Sun, 10 Jan 2016)
Log Message:
-----------
* Improved an error message.
* Added convenient functions to Curve in Layout and to Group in Groups.
* Added static function parseMathML in ASTNode as requested by Jason Zwolak.
* Removed Java 8 dependency in TestSemanticsMathML because JSBML should be compatible with Java 6 for now.
* Added a type hierarchy graph for Multi.
Modified Paths:
--------------
trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml
trunk/core/src/org/sbml/jsbml/ASTNode.java
trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java
trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java
trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java
Added Paths:
-----------
trunk/extensions/multi/doc/img/type_hierarchy.pdf
Modified: trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml
===================================================================
--- trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml 2015-12-18 16:01:20 UTC (rev 2460)
+++ trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml 2016-01-10 16:05:51 UTC (rev 2461)
@@ -34,7 +34,7 @@
<entry key="SBMLCoreParser.instanciationError">The element ''{0}'' could not be instanciated as a Java object!</entry>
<entry key="SBMLCoreParser.namespaceIgnored">Namespace ignored on ''{0}''! {1} = {2}</entry>
- <entry key="SBMLCoreParser.reactionWithoutParticipantsError">The reaction ''{0}'' does not contain any reactants or products.</entry>
+ <entry key="SBMLCoreParser.reactionWithoutParticipantsError">The reaction ''{0}'' does neither contain any reactants nor products.</entry>
<entry key="SBMLCoreParser.unknownAttributeOnElement">Could not recognize the attribute ''{0}'' on the element {1}. Please check the specification for SBML.</entry>
<entry key="SBMLCoreParser.unknownElement">The element ''{0}'' is not recognized.</entry>
<entry key="SBMLCoreParser.unknownReferenceError1">No {0} matches the {1} ''{2}'' of {3} ''{4}''.</entry>
Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-18 16:01:20 UTC (rev 2460)
+++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2016-01-10 16:05:51 UTC (rev 2461)
@@ -374,10 +374,12 @@
*/
TIMES,
/**
- * MathML markup can be combined with other markup languages, and these mixing constructions are realized by the semantic
- * annotation elements. The semantic annotation elements provide an important tool for making associations between
- * alternate representations of an expression, and for associating semantic properties and other attributions with
- * a MathML expression.
+ * MathML markup can be combined with other markup languages, and these
+ * mixing constructions are realized by the semantic annotation elements.
+ * The semantic annotation elements provide an important tool for making
+ * associations between alternate representations of an expression, and for
+ * associating semantic properties and other attributions with a MathML
+ * expression.
*/
SEMANTICS,
/**
@@ -1091,6 +1093,15 @@
}
/**
+ * @param mathML a {@link String} in MathML format.
+ * @return An {@link ASTNode} representation of the given MathML {@link String}.
+ * @see #readMathMLFromString(String)
+ */
+ public static ASTNode parseMathML(String mathML) {
+ return readMathMLFromString(mathML);
+ }
+
+ /**
* Creates a piecewise {@link ASTNode}.
*
* <p>At least one {@link ASTNode} must be given
@@ -1402,8 +1413,8 @@
* XMLNode that will hold the content of the 'semantics' mathML element.
*/
private List<XMLNode> semanticsAnnotationList;
-
-
+
+
/**
* Tells if the type attribute of the cn element was set and we need to
* write it back or if it is set to the default (REAL).
@@ -1504,7 +1515,7 @@
className = astNode.className;
encoding = astNode.encoding;
style = astNode.style;
-
+
if (astNode.getChildCount() > 0) {
for (ASTNode child : astNode.listOfNodes) {
ASTNode c = child.clone();
@@ -1512,10 +1523,10 @@
listOfNodes.add(c);
}
}
-
+
if (astNode.semanticsAnnotationList != null) {
semanticsAnnotationList = new ArrayList<XMLNode>();
-
+
for (XMLNode semanticsAnnotation : astNode.semanticsAnnotationList) {
semanticsAnnotationList.add(semanticsAnnotation.clone());
}
@@ -2294,7 +2305,7 @@
if (equal && isSetUnits()) {
equal &= getUnits().equals(ast.getUnits());
}
-
+
// TODO - semanticsAnnotationList not part of equals or hashcode ?
}
return equal;
@@ -2379,7 +2390,7 @@
@Override
public TreeNode getChildAt(int i) {
return getChild(i);
-
+
// TODO - add semantics XMLNode ??
}
@@ -2389,8 +2400,8 @@
@Override
public int getChildCount() {
return listOfNodes == null ? 0 : listOfNodes.size();
-
- // TODO - add semantics XMLNode ??
+
+ // TODO - add semantics XMLNode ??
}
/**
@@ -2836,7 +2847,7 @@
}
// TODO - semanticsAnnotationList not part of equals or hashcode ?
-
+
return hashCode;
}
@@ -3152,7 +3163,7 @@
|| type == Type.RELATIONAL_LT || type == Type.RELATIONAL_NEQ;
}
-
+
/**
* Return true if this node contain some semantics annotations.
*
@@ -3162,8 +3173,8 @@
public boolean isSemantics() {
return getNumSemanticsAnnotations() > 0;
}
-
-
+
+
/**
* @return
*/
@@ -4403,7 +4414,8 @@
}
/**
- * Adds the given {@link XMLNode} as a MathML <code><semantics></code> element to this {@link ASTNode}.
+ * Adds the given {@link XMLNode} as a MathML {@code <semantics>}
+ * element to this {@link ASTNode}.
*
* <p>
* The {@code <semantics>} element is a MathML 2.0 construct
@@ -4427,12 +4439,12 @@
if (semanticsAnnotationList == null) {
semanticsAnnotationList = new ArrayList<XMLNode>();
}
-
+
semanticsAnnotationList.add(semanticsAnnotation);
-
+
return semanticsAnnotation;
}
-
+
/**
* Gets the number of <em>semantic annotation</em> elements inside this node.
*
@@ -4450,7 +4462,7 @@
*
* @return the number of annotations of this {@link ASTNode}.
* @see ASTNode#addSemanticsAnnotation(XMLNode semanticsAnnotation)
- */
+ */
public int getNumSemanticsAnnotations() {
if (semanticsAnnotationList == null) {
return 0;
@@ -4479,7 +4491,7 @@
* {@link ASTNode#getNumSemanticsAnnotations()}
* <code>- 1</code> or n < 0).
* @see ASTNode#addSemanticsAnnotation(XMLNode sAnnotation)
- */
+ */
public XMLNode getSemanticsAnnotation(int n) {
if (semanticsAnnotationList == null || n < 0 || (n > (getNumSemanticsAnnotations() -1))) {
return null;
@@ -4487,7 +4499,7 @@
return semanticsAnnotationList.get(n);
}
-
+
/**
* Returns the list of semantics annotations of this node.
*
@@ -4496,8 +4508,8 @@
public List<XMLNode> getListOfSemanticsAnnotations() {
return semanticsAnnotationList;
}
-
+
// TODO - removeSemanticsAnnotation
// TODO - unsetsemanticsAnnotation
-
+
}
Modified: trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java
===================================================================
--- trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java 2015-12-18 16:01:20 UTC (rev 2460)
+++ trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java 2016-01-10 16:05:51 UTC (rev 2461)
@@ -19,7 +19,27 @@
* and also available online as <http://sbml.org/Software/JSBML/License>.
* ----------------------------------------------------------------------------
*/
-
+/*
+ * $Id$
+ * $URL$
+ * ----------------------------------------------------------------------------
+ * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML>
+ * for the latest version of JSBML and more information about SBML.
+ *
+ * Copyright (C) 2009-2015 jointly by the following organizations:
+ * 1. The University of Tuebingen, Germany
+ * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
+ * 3. The California Institute of Technology, Pasadena, CA, USA
+ * 4. The University of California, San Diego, La Jolla, CA, USA
+ * 5. The Babraham Institute, Cambridge, UK
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation. A copy of the license agreement is provided
+ * in the file named "LICENSE.txt" included with this software distribution
+ * and also available online as <http://sbml.org/Software/JSBML/License>.
+ * ----------------------------------------------------------------------------
+ */
package org.sbml.jsbml.test;
import javax.xml.stream.XMLStreamException;
@@ -29,10 +49,19 @@
import org.sbml.jsbml.SBMLException;
import org.sbml.jsbml.SBMLWriter;
-
+/**
+ *
+ * @author Nicolas Rodriguez
+ * @version $Rev$
+ * @since 1.1
+ */
public class TestSemanticsMathML {
- public static void main(String[] args)
+ /**
+ *
+ * @param args
+ */
+ public static void main(String[] args)
{
String mathml = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
+ " <semantics>"
@@ -45,25 +74,28 @@
ASTNode node = ASTNode.readMathMLFromString(mathml);
-
+
System.out.println("nb semantic annotations = " + node.getNumSemanticsAnnotations());
-
+
System.out.println(node.toMathML());
-
+
SBMLDocument doc = new SBMLDocument(3, 1);
-
+
doc.createModel().createReaction().createKineticLaw().setMath(node);
-
+
try {
System.out.println(new SBMLWriter().writeSBMLToString(doc));
- } catch (SBMLException | XMLStreamException e) {
- e.printStackTrace();
+ } catch (SBMLException exc) {
+ exc.printStackTrace();
+ } catch (XMLStreamException exc) {
+ exc.printStackTrace();
}
-
+
int n = doc.checkConsistency();
-
+
if (n > 0) {
doc.printErrors(System.out);
}
}
+
}
Modified: trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java
===================================================================
--- trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java 2015-12-18 16:01:20 UTC (rev 2460)
+++ trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java 2016-01-10 16:05:51 UTC (rev 2461)
@@ -28,7 +28,9 @@
import org.sbml.jsbml.AbstractNamedSBase;
import org.sbml.jsbml.ListOf;
+import org.sbml.jsbml.NamedSBase;
import org.sbml.jsbml.SBMLException;
+import org.sbml.jsbml.SBase;
import org.sbml.jsbml.UniqueNamedSBase;
/**
@@ -42,13 +44,13 @@
/**
* This is a collection of possible values for the {@code kind} attribute within
- * a {@link Group}.
+ * a {@link Group}.
*
*/
public enum Kind {
/**
- * The group represents a class, and its members have an <i>is-a</i> relationship to the group. For example, the
- * group could represent a type of molecule such as ATP, and the members could be species located in different
+ * The group represents a class, and its members have an <i>is-a</i> relationship to the group. For example, the
+ * group could represent a type of molecule such as ATP, and the members could be species located in different
* compartments, thereby establishing that the species are pools of the same molecule in different locations.
*/
classification,
@@ -59,9 +61,9 @@
*/
partonomy,
/**
- * The grouping is merely a collection for convenience, without an implied relationship between the members.
+ * The grouping is merely a collection for convenience, without an implied relationship between the members.
* For example, the group could be used to collect together multiple disparate components of a model—species,
- * reactions, events—involved in a particular phenotype, and apply a common annotation rather than having to
+ * reactions, events—involved in a particular phenotype, and apply a common annotation rather than having to
* copy the same annotation to each component individually.
*/
collection
@@ -85,7 +87,7 @@
/**
*
*/
-// removed as unsupported but could be added again in the future private ListOfMemberConstraint listOfMemberConstraints = null;
+ // removed as unsupported but could be added again in the future private ListOfMemberConstraint listOfMemberConstraints = null;
/**
*
@@ -109,10 +111,10 @@
setKind(group.getKind());
}
- // removed as unsupported but could be added again in the future
+ // removed as unsupported but could be added again in the future
// if (group.isSetListOfMemberConstraints()) {
-// setListOfMemberConstraints(group.getListOfMemberConstraints().clone());
-// }
+ // setListOfMemberConstraints(group.getListOfMemberConstraints().clone());
+ // }
}
/**
@@ -172,7 +174,9 @@
*/
public Member createMemberWithIdRef(String id, String idRef) {
Member m = new Member();
- m.setId(id);
+ if (id != null) {
+ m.setId(id);
+ }
m.setIdRef(idRef);
addMember(m);
return m;
@@ -187,12 +191,49 @@
*/
public Member createMemberWithMetaIdRef(String id, String metaIdRef) {
Member m = new Member();
- m.setId(id);
+ if (id != null) {
+ m.setId(id);
+ }
m.setMetaIdRef(metaIdRef);
addMember(m);
return m;
}
+ /**
+ * @param sbase
+ * the element that should be referenced as a new member of this
+ * {@link Group}.
+ * @return the newly created {@link Member} or {@code null} if the given
+ * {@link SBase} neither has a metaId nor an id.
+ * @see #createMember(String, SBase)
+ */
+ public Member creteMember(SBase sbase) {
+ return createMember(null, sbase);
+ }
+
+ /**
+ * @param id
+ * the identifier to be set for the new {@link Member}, can be
+ * {@code null}.
+ * @param sbase
+ * the element that should be referenced as a new member of this
+ * {@link Group}.
+ * @return the newly created {@link Member} or {@code null} if the given
+ * {@link SBase} neither has a metaId nor an id.
+ */
+ public Member createMember(String id, SBase sbase) {
+ if (sbase instanceof NamedSBase) {
+ NamedSBase nsb = (NamedSBase) sbase;
+ if (nsb.isSetId()) {
+ return createMemberWithIdRef(id, nsb.getId());
+ }
+ }
+ if (sbase.isSetMetaId()) {
+ return createMemberWithMetaIdRef(id, sbase.getMetaId());
+ }
+ return null;
+ }
+
/* (non-Javadoc)
* @see org.sbml.jsbml.AbstractSBase#getChildAt(int)
*/
@@ -219,13 +260,13 @@
position++;
}
- // removed as unsupported but could be added again in the future
-// if (isSetListOfMemberConstraints()) {
-// if (position == index) {
-// return getListOfMemberConstraints();
-// }
-// position++;
-// }
+ // removed as unsupported but could be added again in the future
+ // if (isSetListOfMemberConstraints()) {
+ // if (position == index) {
+ // return getListOfMemberConstraints();
+ // }
+ // position++;
+ // }
throw new IndexOutOfBoundsException(MessageFormat.format(
resourceBundle.getString("IndexExceedsBoundsException"), index,
@@ -243,10 +284,10 @@
if (isSetListOfMembers()) {
childCount++;
}
- // removed as unsupported but could be added again in the future
-// if (isSetListOfMemberConstraints()) {
-// childCount++;
-// }
+ // removed as unsupported but could be added again in the future
+ // if (isSetListOfMemberConstraints()) {
+ // childCount++;
+ // }
return childCount;
}
@@ -460,15 +501,15 @@
return isSetListOfMembers() ? getListOfMembers().size() : 0;
}
- // removed as unsupported but could be added again in the future
-// /**
-// * Returns the number of {@link MemberConstraint}s of this {@link Group}.
-// *
-// * @return the number of {@link MemberConstraint}s of this {@link Group}.
-// */
-// public int getMemberConstraintCount() {
-// return isSetListOfMemberConstraints() ? getListOfMemberConstraints().size() : 0;
-// }
+ // removed as unsupported but could be added again in the future
+ // /**
+ // * Returns the number of {@link MemberConstraint}s of this {@link Group}.
+ // *
+ // * @return the number of {@link MemberConstraint}s of this {@link Group}.
+ // */
+ // public int getMemberConstraintCount() {
+ // return isSetListOfMemberConstraints() ? getListOfMemberConstraints().size() : 0;
+ // }
/**
* Returns the number of {@link Member}s of this {@link Group}.
@@ -480,16 +521,16 @@
return getMemberCount();
}
- // removed as unsupported but could be added again in the future
-// /**
-// * Returns the number of {@link MemberConstraint}s of this {@link Group}.
-// *
-// * @return the number of {@link MemberConstraint}s of this {@link Group}.
-// * @libsbml.deprecated same as {@link #getMemberConstraintCount()}
-// */
-// public int getNumMemberConstraints() {
-// return getMemberConstraintCount();
-// }
+ // removed as unsupported but could be added again in the future
+ // /**
+ // * Returns the number of {@link MemberConstraint}s of this {@link Group}.
+ // *
+ // * @return the number of {@link MemberConstraint}s of this {@link Group}.
+ // * @libsbml.deprecated same as {@link #getMemberConstraintCount()}
+ // */
+ // public int getNumMemberConstraints() {
+ // return getMemberConstraintCount();
+ // }
/**
*
@@ -515,142 +556,142 @@
public boolean isSetKind() {
return kind!=null;
}
-
-
-//
-// /**
-// * Returns {@code true}, if listOfMemberConstraints is not null.
-// *
-// * @return {@code true}, if listOfMemberConstraints is not null,
-// * otherwise {@code false}
-// */
-// public boolean isSetListOfMemberConstraints() {
-// return listOfMemberConstraints != null;
-// }
-//
-// /**
-// * Returns the listOfMemberConstraints. Creates it if it is not already existing.
-// *
-// * @return the listOfMemberConstraints
-// */
-// public ListOfMemberConstraint getListOfMemberConstraints() {
-// if (!isSetListOfMemberConstraints()) {
-// listOfMemberConstraints = new ListOfMemberConstraint(getLevel(), getVersion());
-// listOfMemberConstraints.setPackageVersion(-1);
-// // changing the ListOf package name from 'core' to 'groups'
-// listOfMemberConstraints.setPackageName(null);
-// listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel);
-// listOfMemberConstraints.setSBaseListType(ListOf.Type.other);
-// registerChild(listOfMemberConstraints);
-// }
-// return listOfMemberConstraints;
-// }
-//
-// /**
-// * Sets the given {@code ListOf<MemberConstraint>}. If listOfMemberConstraints
-// * was defined before and contains some elements, they are all unset.
-// *
-// * @param listOfMemberConstraints
-// */
-// public void setListOfMemberConstraints(ListOfMemberConstraint listOfMemberConstraints) {
-// unsetListOfMemberConstraints();
-// this.listOfMemberConstraints = listOfMemberConstraints;
-//
-// if (listOfMemberConstraints != null) {
-// listOfMemberConstraints.setPackageVersion(-1);
-// // changing the ListOf package name from 'core' to 'groups'
-// listOfMemberConstraints.setPackageName(null);
-// listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel);
-// listOfMemberConstraints.setSBaseListType(ListOf.Type.other);
-//
-// registerChild(this.listOfMemberConstraints);
-// }
-// }
-//
-// /**
-// * Returns {@code true}, if listOfMemberConstraints contain at least one element,
-// * otherwise {@code false}
-// *
-// * @return {@code true}, if listOfMemberConstraints contain at least one element,
-// * otherwise {@code false}
-// */
-// public boolean unsetListOfMemberConstraints() {
-// if (isSetListOfMemberConstraints()) {
-// ListOf<MemberConstraint> oldMemberConstraints = listOfMemberConstraints;
-// listOfMemberConstraints = null;
-// oldMemberConstraints.fireNodeRemovedEvent();
-// return true;
-// }
-// return false;
-// }
-//
-// /**
-// * Adds a new {@link MemberConstraint} to the listOfMemberConstraints.
-// * <p>The listOfMemberConstraints is initialized if necessary.
-// *
-// * @param memberConstraint the element to add to the list
-// * @return true (as specified by {@link java.util.Collection#add})
-// */
-// public boolean addMemberConstraint(MemberConstraint memberConstraint) {
-// return getListOfMemberConstraints().add(memberConstraint);
-// }
-//
-// /**
-// * Removes an element from the listOfMemberConstraints.
-// *
-// * @param memberConstraint the element to be removed from the list
-// * @return true if the list contained the specified element
-// * @see java.util.List#remove(Object)
-// */
-// public boolean removeMemberConstraint(MemberConstraint memberConstraint) {
-// if (isSetListOfMemberConstraints()) {
-// return getListOfMemberConstraints().remove(memberConstraint);
-// }
-// return false;
-// }
-//
-// /**
-// * Removes an element from the listOfMemberConstraints at the given index.
-// *
-// * @param i the index where to remove the {@link MemberConstraint}
-// * @throws IndexOutOfBoundsException if the listOf is not set or
-// * if the index is out of bound (index < 0 || index > list.size)
-// */
-// public void removeMemberConstraint(int i) {
-// if (!isSetListOfMemberConstraints()) {
-// throw new IndexOutOfBoundsException(Integer.toString(i));
-// }
-// getListOfMemberConstraints().remove(i);
-// }
-//
-// /**
-// * @param id
-// */
-// public void removeMemberConstraint(String id) {
-// getListOfMemberConstraints().removeFirst(new NameFilter(id));
-// }
-//
-// /**
-// * Creates a new MemberConstraint element and adds it to the ListOfMemberConstraints list
-// * @return
-// */
-// public MemberConstraint createMemberConstraint() {
-// return createMemberConstraint(null);
-// }
-//
-// /**
-// * Creates a new {@link MemberConstraint} element and adds it to the ListOfMemberConstraints list
-// * @param id
-// *
-// * @return a new {@link MemberConstraint} element
-// */
-// public MemberConstraint createMemberConstraint(String id) {
-// MemberConstraint MemberConstraint = new MemberConstraint(id, getLevel(), getVersion());
-// addMemberConstraint(MemberConstraint);
-// return MemberConstraint;
-// }
+ //
+ // /**
+ // * Returns {@code true}, if listOfMemberConstraints is not null.
+ // *
+ // * @return {@code true}, if listOfMemberConstraints is not null,
+ // * otherwise {@code false}
+ // */
+ // public boolean isSetListOfMemberConstraints() {
+ // return listOfMemberConstraints != null;
+ // }
+ //
+ // /**
+ // * Returns the listOfMemberConstraints. Creates it if it is not already existing.
+ // *
+ // * @return the listOfMemberConstraints
+ // */
+ // public ListOfMemberConstraint getListOfMemberConstraints() {
+ // if (!isSetListOfMemberConstraints()) {
+ // listOfMemberConstraints = new ListOfMemberConstraint(getLevel(), getVersion());
+ // listOfMemberConstraints.setPackageVersion(-1);
+ // // changing the ListOf package name from 'core' to 'groups'
+ // listOfMemberConstraints.setPackageName(null);
+ // listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel);
+ // listOfMemberConstraints.setSBaseListType(ListOf.Type.other);
+ // registerChild(listOfMemberConstraints);
+ // }
+ // return listOfMemberConstraints;
+ // }
+ //
+ // /**
+ // * Sets the given {@code ListOf<MemberConstraint>}. If listOfMemberConstraints
+ // * was defined before and contains some elements, they are all unset.
+ // *
+ // * @param listOfMemberConstraints
+ // */
+ // public void setListOfMemberConstraints(ListOfMemberConstraint listOfMemberConstraints) {
+ // unsetListOfMemberConstraints();
+ // this.listOfMemberConstraints = listOfMemberConstraints;
+ //
+ // if (listOfMemberConstraints != null) {
+ // listOfMemberConstraints.setPackageVersion(-1);
+ // // changing the ListOf package name from 'core' to 'groups'
+ // listOfMemberConstraints.setPackageName(null);
+ // listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel);
+ // listOfMemberConstraints.setSBaseListType(ListOf.Type.other);
+ //
+ // registerChild(this.listOfMemberConstraints);
+ // }
+ // }
+ //
+ // /**
+ // * Returns {@code true}, if listOfMemberConstraints contain at least one element,
+ // * otherwise {@code false}
+ // *
+ // * @return {@code true}, if listOfMemberConstraints contain at least one element,
+ // * otherwise {@code false}
+ // */
+ // public boolean unsetListOfMemberConstraints() {
+ // if (isSetListOfMemberConstraints()) {
+ // ListOf<MemberConstraint> oldMemberConstraints = listOfMemberConstraints;
+ // listOfMemberConstraints = null;
+ // oldMemberConstraints.fireNodeRemovedEvent();
+ // return true;
+ // }
+ // return false;
+ // }
+ //
+ // /**
+ // * Adds a new {@link MemberConstraint} to the listOfMemberConstraints.
+ // * <p>The listOfMemberConstraints is initialized if necessary.
+ // *
+ // * @param memberConstraint the element to add to the list
+ // * @return true (as specified by {@link java.util.Collection#add})
+ // */
+ // public boolean addMemberConstraint(MemberConstraint memberConstraint) {
+ // return getListOfMemberConstraints().add(memberConstraint);
+ // }
+ //
+ // /**
+ // * Removes an element from the listOfMemberConstraints.
+ // *
+ // * @param memberConstraint the element to be removed from the list
+ // * @return true if the list contained the specified element
+ // * @see java.util.List#remove(Object)
+ // */
+ // public boolean removeMemberConstraint(MemberConstraint memberConstraint) {
+ // if (isSetListOfMemberConstraints()) {
+ // return getListOfMemberConstraints().remove(memberConstraint);
+ // }
+ // return false;
+ // }
+ //
+ // /**
+ // * Removes an element from the listOfMemberConstraints at the given index.
+ // *
+ // * @param i the index where to remove the {@link MemberConstraint}
+ // * @throws IndexOutOfBoundsException if the listOf is not set or
+ // * if the index is out of bound (index < 0 || index > list.size)
+ // */
+ // public void removeMemberConstraint(int i) {
+ // if (!isSetListOfMemberConstraints()) {
+ // throw new IndexOutOfBoundsException(Integer.toString(i));
+ // }
+ // getListOfMemberConstraints().remove(i);
+ // }
+ //
+ // /**
+ // * @param id
+ // */
+ // public void removeMemberConstraint(String id) {
+ // getListOfMemberConstraints().removeFirst(new NameFilter(id));
+ // }
+ //
+ // /**
+ // * Creates a new MemberConstraint element and adds it to the ListOfMemberConstraints list
+ // * @return
+ // */
+ // public MemberConstraint createMemberConstraint() {
+ // return createMemberConstraint(null);
+ // }
+ //
+ // /**
+ // * Creates a new {@link MemberConstraint} element and adds it to the ListOfMemberConstraints list
+ // * @param id
+ // *
+ // * @return a new {@link MemberConstraint} element
+ // */
+ // public MemberConstraint createMemberConstraint(String id) {
+ // MemberConstraint MemberConstraint = new MemberConstraint(id, getLevel(), getVersion());
+ // addMemberConstraint(MemberConstraint);
+ // return MemberConstraint;
+ // }
+
+
/* (non-Javadoc)
* @see org.sbml.jsbml.element.SBase#readAttribute(String attributeName, String prefix, String value)
*/
@@ -714,7 +755,6 @@
// TODO - add methods to get/set/... the attribute from the ListOfMemberConstraint
-
@Override
public boolean getAllowsChildren() {
return true;
@@ -728,11 +768,11 @@
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((kind == null) ? 0 : kind.hashCode());
- // removed as unsupported but could be added again in the future
-// result = prime
-// * result
-// + ((listOfMemberConstraints == null) ? 0
-// : listOfMemberConstraints.hashCode());
+ // removed as unsupported but could be added again in the future
+ // result = prime
+ // * result
+ // + ((listOfMemberConstraints == null) ? 0
+ // : listOfMemberConstraints.hashCode());
result = prime * result
+ ((listOfMembers == null) ? 0 : listOfMembers.hashCode());
return result;
@@ -756,14 +796,14 @@
if (kind != other.kind) {
return false;
}
- // removed as unsupported but could be added again in the future
-// if (listOfMemberConstraints == null) {
-// if (other.listOfMemberConstraints != null) {
-// return false;
-// }
-// } else if (!listOfMemberConstraints.equals(other.listOfMemberConstraints)) {
-// return false;
-// }
+ // removed as unsupported but could be added again in the future
+ // if (listOfMemberConstraints == null) {
+ // if (other.listOfMemberConstraints != null) {
+ // return false;
+ // }
+ // } else if (!listOfMemberConstraints.equals(other.listOfMemberConstraints)) {
+ // return false;
+ // }
if (listOfMembers == null) {
if (other.listOfMembers != null) {
return false;
Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java 2015-12-18 16:01:20 UTC (rev 2460)
+++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java 2016-01-10 16:05:51 UTC (rev 2461)
@@ -123,8 +123,22 @@
}
/**
- * Creates a new {@link CubicBezier} instance, adds it to this {@link Curve} and returns it.
*
+ * @param start
+ * @param end
+ * @return
+ */
+ public LineSegment createLineSegment(Point start, Point end) {
+ LineSegment cs = createLineSegment();
+ cs.setStart(start);
+ cs.setEnd(end);
+ return cs;
+ }
+
+ /**
+ * Creates a new {@link CubicBezier} instance, adds it to this {@link Curve}.
+ * and returns it.
+ *
* @return the new {@link CubicBezier} instance
*/
public CubicBezier createCubicBezier() {
@@ -133,6 +147,22 @@
return cs;
}
+ /**
+ *
+ * @param start
+ * @param basePoint1
+ * @param basePoint2
+ * @param end
+ * @return
+ */
+ public CubicBezier createCubicBezier(Point start, Point basePoint1, Point basePoint2, Point end) {
+ CubicBezier cs = createCubicBezier();
+ cs.setStart(start);
+ cs.setBasePoint1(basePoint1);
+ cs.setBasePoint2(basePoint2);
+ cs.setEnd(end);
+ return cs;
+ }
/* (non-Javadoc)
* @see org.sbml.jsbml.AbstractNamedSBase#equals(java.lang.Object)
Added: trunk/extensions/multi/doc/img/type_hierarchy.pdf
===================================================================
(Binary files differ)
Index: trunk/extensions/multi/doc/img/type_hierarchy.pdf
===================================================================
--- trunk/extensions/multi/doc/img/type_hierarchy.pdf 2015-12-18 16:01:20 UTC (rev 2460)
+++ trunk/extensions/multi/doc/img/type_hierarchy.pdf 2016-01-10 16:05:51 UTC (rev 2461)
Property changes on: trunk/extensions/multi/doc/img/type_hierarchy.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-18 16:01:23
|
Revision: 2460
http://sourceforge.net/p/jsbml/code/2460
Author: niko-rodrigue
Date: 2015-12-18 16:01:20 +0000 (Fri, 18 Dec 2015)
Log Message:
-----------
added a test class to test the expected infix outputs developed by Lucian
Added Paths:
-----------
trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java
Added: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java
===================================================================
--- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java (rev 0)
+++ trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2015-12-18 16:01:20 UTC (rev 2460)
@@ -0,0 +1,152 @@
+/*
+ * $Id$
+ * $URL$
+ * ----------------------------------------------------------------------------
+ * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML>
+ * for the latest version of JSBML and more information about SBML.
+ *
+ * Copyright (C) 2009-2014 jointly by the following organizations:
+ * 1. The University of Tuebingen, Germany
+ * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
+ * 3. The California Institute of Technology, Pasadena, CA, USA
+ * 4. The University of California, San Diego, La Jolla, CA, USA
+ * 5. The Babraham Institute, Cambridge, UK
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation. A copy of the license agreement is provided
+ * in the file named "LICENSE.txt" included with this software distribution
+ * and also available online as <http://sbml.org/Software/JSBML/License>.
+ * ----------------------------------------------------------------------------
+ */
+
+package org.sbml.jsbml.test;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.nio.file.Files;
+import java.util.Calendar;
+
+import org.sbml.jsbml.ASTNode;
+import org.sbml.jsbml.xml.XMLNode;
+
+
+public class TestInfixReadingWriting {
+
+
+ public static void main(String[] args) {
+
+ if (args.length < 1) {
+ System.out.println(
+ "Usage: java org.sbml.jsbml.test.TestInfixReadingWriting folder|file");
+ System.exit(0);
+ }
+
+ // this JOptionPane is added here to be able to start visualVM profiling
+ // before the reading or writing is started.
+ // JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.");
+
+ File argsAsFile = new File(args[0]);
+ File[] files = null;
+
+ if (argsAsFile.isDirectory())
+ {
+ files = argsAsFile.listFiles(new FileFilter() {
+
+ @Override
+ public boolean accept(File pathname)
+ {
+ if (pathname.getName().endsWith(".xml"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+ });
+ }
+ else
+ {
+ files = new File[1];
+ files[0] = argsAsFile;
+ }
+
+ long init = Calendar.getInstance().getTimeInMillis();
+ int nbEquals = 0;
+
+ for (File file : files)
+ {
+ String fileName = file.getAbsolutePath();
+
+ // read the mathml, infix math input and expected output.
+
+ byte[] encoded = null;
+ String mathMLString = null;
+ String infixInput = null;
+ String infixExpectedOutput = null;
+
+ try
+ {
+ encoded = Files.readAllBytes(file.toPath());
+ mathMLString = new String(encoded, "UTF-8");
+
+ ASTNode astNode = ASTNode.readMathMLFromString(mathMLString);
+ String infixOutput = astNode.toFormula();
+
+ if (astNode.getNumSemanticsAnnotations() != 2) {
+ System.out.println("!!!!!!!!!! ERROR: for file '" + fileName + "' we found " + astNode.getNumSemanticsAnnotations() + " semantics annotations !");
+ continue;
+ }
+
+ for (int i = 0; i < 2; i++)
+ {
+ XMLNode xmlNode = astNode.getSemanticsAnnotation(i);
+ String encoding = "";
+
+ if (xmlNode.getName().equals("annotation") && xmlNode.hasAttr("encoding"))
+ {
+ encoding = xmlNode.getAttrValue("encoding");
+
+ if (encoding.equals("infix-input"))
+ {
+ infixInput = xmlNode.getChild(0).getCharacters();
+ }
+ else if (encoding.equals("infix-output"))
+ {
+ infixExpectedOutput = xmlNode.getChild(0).getCharacters();
+ }
+ }
+ }
+
+ // compare the different output
+
+ System.out.println("Infix input = '" + infixInput + "'");
+ System.out.println("Infix output = '" + infixOutput + "'");
+ System.out.println("Infix expected output = '" + infixExpectedOutput + "'");
+
+ if (infixOutput != null && infixOutput.equals(infixExpectedOutput)) {
+ nbEquals++;
+ System.out.println("#########################################################");
+ }
+
+ }
+ catch (Exception e)
+ {
+ System.out.println(fileName);
+ e.printStackTrace();
+ }
+
+ }
+
+ System.out.println("Nb test where we have the same output = " + nbEquals);
+
+ long end = Calendar.getInstance().getTimeInMillis();
+ long nbSecondes = (end - init)/1000;
+
+ if (nbSecondes > 120) {
+ System.out.println("It took " + nbSecondes/60 + " minutes.");
+ } else {
+ System.out.println("It took " + nbSecondes + " secondes.");
+ }
+ }
+}
Property changes on: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-18 15:12:03
|
Revision: 2459
http://sourceforge.net/p/jsbml/code/2459
Author: niko-rodrigue
Date: 2015-12-18 15:12:01 +0000 (Fri, 18 Dec 2015)
Log Message:
-----------
implemented the writting of the semantics mathML element for the top level ASTNode
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java
trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java
trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java
Added Paths:
-----------
trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java
Modified: trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-17 14:53:38 UTC (rev 2458)
+++ trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-18 15:12:01 UTC (rev 2459)
@@ -39,6 +39,8 @@
import org.sbml.jsbml.SBMLException;
import org.sbml.jsbml.SBase;
import org.sbml.jsbml.util.StringTools;
+import org.sbml.jsbml.xml.XMLNode;
+import org.sbml.jsbml.xml.parsers.XMLNodeWriter;
import com.ctc.wstx.stax.WstxOutputFactory;
@@ -161,9 +163,27 @@
writer.writeCharacters("\n");
writer.setPrefix("math", ASTNode.URI_MATHML_DEFINITION);
-
+
+ // if an ASTNode.isSemantics we need to write the enclosing 'semantics' element !!
+ if (astNode.isSemantics()) {
+ writer.writeCharacters(compiler.indent);
+ compiler.indent += " ";
+ writer.writeStartElement("semantics");
+ writer.writeCharacters("\n");
+ }
+
compiler.compile(astNode);
+ // writing the semantics annotation elements here to write them only for the top level element.
+ if (astNode.isSemantics()) {
+
+ compiler.compileSemanticAnnotations(astNode);
+
+ writer.writeCharacters(" ");
+ writer.writeEndElement();
+ writer.writeCharacters("\n");
+ }
+
writer.writeEndElement();
writer.writeEndDocument();
writer.close();
@@ -357,6 +377,9 @@
case VECTOR:
compileVector(astNode);
break;
+// case SEMANTICS:
+// compileSemantics(astNode);
+// break;
default: // UNKNOWN:
logger.warn("!!!!! I don't know what to do with the node of type " + astNode.getType());
break;
@@ -446,7 +469,7 @@
writer.writeCharacters(indent);
writer.writeEmptyElement(ASTNode.URI_MATHML_DEFINITION, "exponentiale");
writer.writeCharacters("\n");
-
+
} catch (XMLStreamException e) {
e.printStackTrace();
}
@@ -1002,7 +1025,42 @@
}
}
+
/**
+ * @param node
+ */
+ public void compileSemanticAnnotations(ASTNode node) {
+
+ try {
+
+ if (node.getNumSemanticsAnnotations() > 0)
+ {
+ // TODO - use the current 'indent' value to initialize the XMLNodeWriter
+ XMLNodeWriter xmlNodeWriter = new XMLNodeWriter(writer, 0, 2, ' ');
+
+ for (int i = 0; i < node.getNumSemanticsAnnotations(); i++)
+ {
+ XMLNode xmlNode = node.getSemanticsAnnotation(i);
+
+ writer.writeCharacters(indent);
+ xmlNodeWriter.write(xmlNode);
+ writer.writeCharacters("\n");
+ }
+ }
+ } catch (XMLStreamException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+// private void compileSemantics(ASTNode astNode) {
+// // would be needed for ASTNode2 may be ?
+// }
+
+
+ /**
* @param args
*/
public static void main(String[] args) {
Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-17 14:53:38 UTC (rev 2458)
+++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-18 15:12:01 UTC (rev 2459)
@@ -886,12 +886,15 @@
// All the element should have a namespace.
if (elementNamespace != null) {
+ // TODO - change the way we deal with notes, message and annotation and just use the context object ! If XMLNode, we use the 'anyXML' parser
+ // it will allow us to deal easily with unknowns XML elements.
+
parser = initializedParsers.get(elementNamespace);
// if the current node is a notes or message element
// and the matching ReadingParser is a XMLNodeReader,
// we need to set the typeOfNotes variable of the
// XMLNodeReader instance.
- if (currentNode.getLocalPart().equals("notes")
+ if (currentNode.getLocalPart().equals("notes")
|| currentNode.getLocalPart().equals("message")
|| currentNode.getLocalPart().equals("annotation"))
{
Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-17 14:53:38 UTC (rev 2458)
+++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-18 15:12:01 UTC (rev 2459)
@@ -786,6 +786,7 @@
// Creating an SMOutputElement to be sure that the previous nested element tag is closed properly.
SMNamespace mathMLNamespace = element.getNamespace(ASTNode.URI_MATHML_DEFINITION, ASTNode.URI_MATHML_PREFIX);
SMOutputElement mathElement = element.addElement(mathMLNamespace, "math");
+
MathMLXMLStreamCompiler compiler = new MathMLXMLStreamCompiler(
writer, createIndentationString(indent + indentCount));
boolean isSBMLNamespaceNeeded = compiler.isSBMLNamespaceNeeded(m.getMath());
@@ -817,8 +818,27 @@
writer.writeCharacters(whitespaces);
writer.writeCharacters("\n");
+ ASTNode astNode = m.getMath();
+
+ // if an ASTNode.isSemantics we need to write the enclosing 'semantics' element !!
+ if (astNode.isSemantics()) {
+ writer.writeCharacters(whitespaces);
+ writer.writeStartElement("semantics");
+ writer.writeCharacters("\n");
+ }
+
compiler.compile(m.getMath());
+ // writing the semantics annotation elements here to write them only for the top level element.
+ if (astNode.isSemantics()) {
+
+ compiler.compileSemanticAnnotations(astNode);
+
+ writer.writeCharacters(whitespaces);
+ writer.writeEndElement();
+ writer.writeCharacters("\n");
+ }
+
writer.writeCharacters(whitespaces);
}
}
Added: trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java
===================================================================
--- trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java (rev 0)
+++ trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java 2015-12-18 15:12:01 UTC (rev 2459)
@@ -0,0 +1,69 @@
+/*
+ * $Id$
+ * $URL$
+ * ----------------------------------------------------------------------------
+ * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML>
+ * for the latest version of JSBML and more information about SBML.
+ *
+ * Copyright (C) 2009-2014 jointly by the following organizations:
+ * 1. The University of Tuebingen, Germany
+ * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
+ * 3. The California Institute of Technology, Pasadena, CA, USA
+ * 4. The University of California, San Diego, La Jolla, CA, USA
+ * 5. The Babraham Institute, Cambridge, UK
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation. A copy of the license agreement is provided
+ * in the file named "LICENSE.txt" included with this software distribution
+ * and also available online as <http://sbml.org/Software/JSBML/License>.
+ * ----------------------------------------------------------------------------
+ */
+
+package org.sbml.jsbml.test;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.sbml.jsbml.ASTNode;
+import org.sbml.jsbml.SBMLDocument;
+import org.sbml.jsbml.SBMLException;
+import org.sbml.jsbml.SBMLWriter;
+
+
+public class TestSemanticsMathML {
+
+ public static void main(String[] args)
+ {
+ String mathml = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
+ + " <semantics>"
+ + " <exponentiale/>"
+ + " <annotation encoding=\"infix-input\">ExponentialE</annotation>"
+ + " <annotation encoding=\"infix-output\">exponentiale</annotation>"
+ + " <annotation-xml encoding=\"infix-output\">exponentiale</annotation-xml>"
+ + " </semantics>"
+ + "</math>";
+
+
+ ASTNode node = ASTNode.readMathMLFromString(mathml);
+
+ System.out.println("nb semantic annotations = " + node.getNumSemanticsAnnotations());
+
+ System.out.println(node.toMathML());
+
+ SBMLDocument doc = new SBMLDocument(3, 1);
+
+ doc.createModel().createReaction().createKineticLaw().setMath(node);
+
+ try {
+ System.out.println(new SBMLWriter().writeSBMLToString(doc));
+ } catch (SBMLException | XMLStreamException e) {
+ e.printStackTrace();
+ }
+
+ int n = doc.checkConsistency();
+
+ if (n > 0) {
+ doc.printErrors(System.out);
+ }
+ }
+}
Property changes on: trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-17 14:53:41
|
Revision: 2458
http://sourceforge.net/p/jsbml/code/2458
Author: niko-rodrigue
Date: 2015-12-17 14:53:38 +0000 (Thu, 17 Dec 2015)
Log Message:
-----------
modified a bit the reading of semantics mathml annotations to comply to the expected structure
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/ASTNode.java
trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java
Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-15 15:04:43 UTC (rev 2457)
+++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-17 14:53:38 UTC (rev 2458)
@@ -374,6 +374,13 @@
*/
TIMES,
/**
+ * MathML markup can be combined with other markup languages, and these mixing constructions are realized by the semantic
+ * annotation elements. The semantic annotation elements provide an important tool for making associations between
+ * alternate representations of an expression, and for associating semantic properties and other attributions with
+ * a MathML expression.
+ */
+ SEMANTICS,
+ /**
*
*/
UNKNOWN,
@@ -3145,7 +3152,19 @@
|| type == Type.RELATIONAL_LT || type == Type.RELATIONAL_NEQ;
}
+
/**
+ * Return true if this node contain some semantics annotations.
+ *
+ * @return true if this node contain some semantics annotations.
+ * @see #getNumSemanticsAnnotations()
+ */
+ public boolean isSemantics() {
+ return getNumSemanticsAnnotations() > 0;
+ }
+
+
+ /**
* @return
*/
public boolean isSetClassName() {
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-15 15:04:43 UTC (rev 2457)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-17 14:53:38 UTC (rev 2458)
@@ -26,7 +26,6 @@
import java.util.List;
import javax.swing.tree.TreeNode;
-import javax.xml.stream.XMLStreamException;
import org.apache.log4j.Logger;
import org.mangosdk.spi.ProviderFor;
@@ -273,29 +272,15 @@
}
// if elementName.equals(semantics) add all child elements as semanticsAnnotation to the parent ASTNode !
- if (elementName.equals("semantics"))
+ if (elementName.equals("annotation") || elementName.equals("annotation-xml"))
{
TreeNode parentNode = xmlNode.getParent();
if (parentNode instanceof ASTNode)
{
- // we are at the end of the top level 'semantics' element.
- // adding all child elements that are not empty as semanticAnnotation // TODO - keep the top level 'semantics' element if not empty.
+ // we are at the end of the annotation or annotation-xml elements.
+ ((ASTNode) parentNode).addSemanticsAnnotation(xmlNode);
- for (XMLNode childNode : xmlNode.getChildElements(null, null))
- {
- if (childNode.isText() && childNode.getCharacters().trim().length() == 0) {
- continue;
- }
- ((ASTNode) parentNode).addSemanticsAnnotation(childNode);
-
-// try {
-// System.out.println("MathMLStaxParser - processEndElement - semantic annotation = \n" + childNode.toXMLString());
-// } catch (XMLStreamException e) {
-// e.printStackTrace();
-// }
- }
-
// System.out.println("MathMLStaxParser - processEndElement - num semantic annotation = " + ((ASTNode) parentNode).getNumSemanticsAnnotations());
}
@@ -321,7 +306,8 @@
// add other type of ASTNode in the test ??
if ((astNode.isFunction() || astNode.isOperator() || astNode.isRelational() ||
astNode.isLogical()) && !elementName.equals("apply") && !elementName.equals("piecewise")
- && !elementName.equals("lamdba") && !astNode.getType().equals(ASTNode.Type.LAMBDA))
+ && !elementName.equals("lamdba") && !astNode.getType().equals(ASTNode.Type.LAMBDA)
+ && !elementName.equals("semantics"))
{
if (logger.isDebugEnabled()) {
logger.debug("processEndElement : stack stay the same. ASTNode type = " + astNode.getType());
@@ -381,7 +367,8 @@
if (elementName.equals("math") || elementName.equals("apply") || elementName.equals("sep")
|| elementName.equals("piece") || elementName.equals("otherwise")
- || elementName.equals("bvar") || elementName.equals("degree") || elementName.equals("logbase"))
+ || elementName.equals("bvar") || elementName.equals("degree") || elementName.equals("logbase")
+ || elementName.equals("semantics"))
{
if (elementName.equals("apply"))
{
@@ -420,7 +407,7 @@
// System.out.println("MathMLStaxParser: processStartElement parent type: " + parentASTNode.getType());
}
- if (elementName.equals("semantics"))
+ if (elementName.equals("annotation") || elementName.equals("annotation-xml"))
{
// Creating a StartElement XMLNode !!
XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces());
@@ -437,7 +424,7 @@
// if semantics, create a new XMLNode and return it. Set the ASTNode as the parent so that
// we can add the semanticsAnnotation element in the #processEndElement method.
- if (elementName.equals("semantics"))
+ if (elementName.equals("annotation") || elementName.equals("annotation-xml"))
{
// Creating a StartElement XMLNode !!
XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-15 15:04:46
|
Revision: 2457
http://sourceforge.net/p/jsbml/code/2457
Author: niko-rodrigue
Date: 2015-12-15 15:04:43 +0000 (Tue, 15 Dec 2015)
Log Message:
-----------
implement reading of mathML semantics annotations
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-15 11:58:07 UTC (rev 2456)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-15 15:04:43 UTC (rev 2457)
@@ -26,6 +26,7 @@
import java.util.List;
import javax.swing.tree.TreeNode;
+import javax.xml.stream.XMLStreamException;
import org.apache.log4j.Logger;
import org.mangosdk.spi.ProviderFor;
@@ -35,6 +36,10 @@
import org.sbml.jsbml.MathContainer;
import org.sbml.jsbml.SBMLDocument;
import org.sbml.jsbml.util.StringTools;
+import org.sbml.jsbml.xml.XMLAttributes;
+import org.sbml.jsbml.xml.XMLNamespaces;
+import org.sbml.jsbml.xml.XMLNode;
+import org.sbml.jsbml.xml.XMLTriple;
/**
* A MathMLStaxParser is used to parse the MathML expressions injected into a SBML
@@ -66,7 +71,7 @@
* otherwise the XML version will appear at the beginning of the output.
*/
private boolean omitXMLDeclaration;
-
+
/**
* A {@link Logger} for this class.
*/
@@ -117,6 +122,13 @@
// Process the possible attributes.
// the sbml:units attribute is handle by the SBMLCoreParser.
+ // We are inside a mathML 'semantics' element, everything is read into an XMLNode
+ if (contextObject instanceof XMLNode) {
+ XMLNode xmlNode = (XMLNode) contextObject;
+ xmlNode.addAttr(attributeName, value, uri, prefix);
+ return;
+ }
+
if (! (contextObject instanceof ASTNode)) {
logger.debug("processAttribute : !!!!!!!!! context is not an ASTNode (" +
contextObject.getClass());
@@ -162,6 +174,15 @@
logger.debug("processCharactersOf : element name = " + elementName + ", characters = " + characters);
}
+ // We are inside a mathML 'semantics' element, everything is read into an XMLNode
+ if (contextObject instanceof XMLNode) {
+ XMLNode xmlNode = (XMLNode) contextObject;
+
+ XMLNode textNode = new XMLNode(characters);
+ xmlNode.addChild(textNode);
+ return;
+ }
+
// Depending of the type of ASTNode, we need to do different things
if (! (contextObject instanceof ASTNode)) {
logger.debug("processCharactersOf : !!!!!!!!! context is not an ASTNode (" +
@@ -243,6 +264,47 @@
logger.debug("processEndElement : element name = " + elementName);
}
+ // We are inside a mathML 'semantics' element, everything is read into an XMLNode
+ if (contextObject instanceof XMLNode) {
+ XMLNode xmlNode = (XMLNode) contextObject;
+
+ if (xmlNode.getChildCount() == 0) {
+ xmlNode.setEnd();
+ }
+
+ // if elementName.equals(semantics) add all child elements as semanticsAnnotation to the parent ASTNode !
+ if (elementName.equals("semantics"))
+ {
+ TreeNode parentNode = xmlNode.getParent();
+
+ if (parentNode instanceof ASTNode)
+ {
+ // we are at the end of the top level 'semantics' element.
+ // adding all child elements that are not empty as semanticAnnotation // TODO - keep the top level 'semantics' element if not empty.
+
+ for (XMLNode childNode : xmlNode.getChildElements(null, null))
+ {
+ if (childNode.isText() && childNode.getCharacters().trim().length() == 0) {
+ continue;
+ }
+ ((ASTNode) parentNode).addSemanticsAnnotation(childNode);
+
+// try {
+// System.out.println("MathMLStaxParser - processEndElement - semantic annotation = \n" + childNode.toXMLString());
+// } catch (XMLStreamException e) {
+// e.printStackTrace();
+// }
+ }
+
+ // System.out.println("MathMLStaxParser - processEndElement - num semantic annotation = " + ((ASTNode) parentNode).getNumSemanticsAnnotations());
+ }
+
+ }
+
+ // always remove the XMLNode from the stack.
+ return true;
+ }
+
if (elementName.equals("sep")) {
return false;
} else if (contextObject instanceof MathContainer) {
@@ -276,12 +338,29 @@
* @see org.sbml.jsbml.xml.ReadingParser#processNamespace(String elementName, String URI, String prefix, String localName, boolean hasAttributes, boolean isLastNamespace, Object contextObject)
*/
@Override
- public void processNamespace(String elementName, String URI, String prefix,
+ public void processNamespace(String elementName, String uri, String prefix,
String localName, boolean hasAttributes, boolean isLastNamespace,
Object contextObject)
{
- // TODO
+
+ if (contextObject instanceof XMLNode) {
+ XMLNode xmlNode = (XMLNode) contextObject;
+
+ if (!xmlNode.isStart()) {
+ logger.debug(MessageFormat.format(
+ "processNamespace: context Object is not a start node! {0}",
+ contextObject));
+ }
+ if (localName == null || localName.trim().length() == 0) {
+ localName = "xmlns";
+ }
+
+ xmlNode.addNamespace(uri, localName);
+ }
+
+ // TODO - store namespaces on mathML elements !
+
logger.debug("processNamespace called");
}
@@ -306,7 +385,7 @@
{
if (elementName.equals("apply"))
{
- lastElementWasApply = true;
+ lastElementWasApply = true; // TODO - write the booleans inside a user object to make the parser multi-thread safe ?
}
else
{
@@ -340,12 +419,46 @@
parentASTNode = mathContainer.getMath();
// System.out.println("MathMLStaxParser: processStartElement parent type: " + parentASTNode.getType());
}
+
+ if (elementName.equals("semantics"))
+ {
+ // Creating a StartElement XMLNode !!
+ XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces());
+ xmlNode.setParent(parentASTNode);
+
+ return xmlNode;
+ }
+
} else if (contextObject instanceof ASTNode) {
parentASTNode = ((ASTNode) contextObject);
mathContainer = parentASTNode.getParentSBMLObject();
// System.out.println("MathMLStaxParser: processStartElement parent type: " + parentASTNode.getType());
- } else {
+
+ // if semantics, create a new XMLNode and return it. Set the ASTNode as the parent so that
+ // we can add the semanticsAnnotation element in the #processEndElement method.
+ if (elementName.equals("semantics"))
+ {
+ // Creating a StartElement XMLNode !!
+ XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces());
+ xmlNode.setParent(parentASTNode);
+
+ return xmlNode;
+ }
+ }
+ // We are inside a mathML 'semantics' element, everything is read into an XMLNode
+ else if (contextObject instanceof XMLNode)
+ {
+ // Creating a StartElement XMLNode !!
+ XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces());
+ XMLNode parentNode = (XMLNode) contextObject;
+
+ parentNode.addChild(xmlNode);
+
+ return xmlNode;
+ }
+ else
+ {
// Should never happen
logger.debug("processStartElement: !!!!!!!!!!! Should not have been here !!!!!!!!!!!");
logger.debug("processStartElement: contextObject.classname = " + contextObject.getClass().getName());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-15 11:58:09
|
Revision: 2456
http://sourceforge.net/p/jsbml/code/2456
Author: niko-rodrigue
Date: 2015-12-15 11:58:07 +0000 (Tue, 15 Dec 2015)
Log Message:
-----------
added a field and some methods in ASTNode to handle the semantics annotations
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/ASTNode.java
Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-15 11:56:29 UTC (rev 2455)
+++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-15 11:58:07 UTC (rev 2456)
@@ -48,6 +48,7 @@
import org.sbml.jsbml.util.compilers.MathMLXMLStreamCompiler;
import org.sbml.jsbml.util.compilers.UnitsCompiler;
import org.sbml.jsbml.util.filters.Filter;
+import org.sbml.jsbml.xml.XMLNode;
import org.sbml.jsbml.xml.stax.SBMLReader;
/**
@@ -1391,6 +1392,12 @@
private String encoding;
/**
+ * XMLNode that will hold the content of the 'semantics' mathML element.
+ */
+ private List<XMLNode> semanticsAnnotationList;
+
+
+ /**
* Tells if the type attribute of the cn element was set and we need to
* write it back or if it is set to the default (REAL).
*
@@ -1498,6 +1505,14 @@
listOfNodes.add(c);
}
}
+
+ if (astNode.semanticsAnnotationList != null) {
+ semanticsAnnotationList = new ArrayList<XMLNode>();
+
+ for (XMLNode semanticsAnnotation : astNode.semanticsAnnotationList) {
+ semanticsAnnotationList.add(semanticsAnnotation.clone());
+ }
+ }
}
/**
@@ -2272,6 +2287,8 @@
if (equal && isSetUnits()) {
equal &= getUnits().equals(ast.getUnits());
}
+
+ // TODO - semanticsAnnotationList not part of equals or hashcode ?
}
return equal;
}
@@ -2355,6 +2372,8 @@
@Override
public TreeNode getChildAt(int i) {
return getChild(i);
+
+ // TODO - add semantics XMLNode ??
}
/* (non-Javadoc)
@@ -2363,6 +2382,8 @@
@Override
public int getChildCount() {
return listOfNodes == null ? 0 : listOfNodes.size();
+
+ // TODO - add semantics XMLNode ??
}
/**
@@ -2803,6 +2824,12 @@
if (isSetClassName()) {
hashCode += prime * getClassName().hashCode();
}
+ if (isSetUnits()) {
+ hashCode += prime * getUnits().hashCode();
+ }
+ // TODO - semanticsAnnotationList not part of equals or hashcode ?
+
+
return hashCode;
}
@@ -4356,4 +4383,102 @@
return tree;
}
+ /**
+ * Adds the given {@link XMLNode} as a MathML <code><semantics></code> element to this {@link ASTNode}.
+ *
+ * <p>
+ * The {@code <semantics>} element is a MathML 2.0 construct
+ * that can be used to associate additional information with a MathML
+ * construct. The construct can be used to decorate a MathML expressions with
+ * a sequence of one or more {@code <annotation>} or
+ * {@code <annotation-xml>} elements. Each such element contains a
+ * pair of items; the first is a symbol that acts as an attribute or key, and
+ * the second is the value associated with the attribute or key. Please refer
+ * to the MathML 2.0 documentation, particularly the <a target="_blank"
+ * href="http://www.w3.org/TR/2007/WD-MathML3-20071005/chapter5.html#mixing.semantic.annotations">Section
+ * 5.2, Semantic Annotations</a> for more information about these constructs.
+ *
+ * @param semanticsAnnotation the annotation to add.
+ * @return the added {@link XMLNode}.
+ */
+ public XMLNode addSemanticsAnnotation(XMLNode semanticsAnnotation) {
+ if (semanticsAnnotation == null) {
+ return null;
+ }
+ if (semanticsAnnotationList == null) {
+ semanticsAnnotationList = new ArrayList<XMLNode>();
+ }
+
+ semanticsAnnotationList.add(semanticsAnnotation);
+
+ return semanticsAnnotation;
+ }
+
+ /**
+ * Gets the number of <em>semantic annotation</em> elements inside this node.
+ *
+ * <p>
+ * The <code><semantics></code> element is a MathML 2.0 construct
+ * that can be used to associate additional information with a MathML
+ * construct. The construct can be used to decorate a MathML expressions with
+ * a sequence of one or more <code><annotation></code> or
+ * <code><annotation-xml></code> elements. Each such element contains a
+ * pair of items; the first is a symbol that acts as an attribute or key, and
+ * the second is the value associated with the attribute or key. Please refer
+ * to the MathML 2.0 documentation, particularly the <a target="_blank"
+ * href="http://www.w3.org/TR/2007/WD-MathML3-20071005/chapter5.html#mixing.semantic.annotations">Section
+ * 5.2, Semantic Annotations</a> for more information about these constructs.
+ *
+ * @return the number of annotations of this {@link ASTNode}.
+ * @see ASTNode#addSemanticsAnnotation(XMLNode semanticsAnnotation)
+ */
+ public int getNumSemanticsAnnotations() {
+ if (semanticsAnnotationList == null) {
+ return 0;
+ }
+
+ return semanticsAnnotationList.size();
+ }
+
+ /**
+ * Gets the nth <code><semantics></code> annotation of this node.
+ *
+ * <p>
+ * The <code><semantics></code> element is a MathML 2.0 construct
+ * that can be used to associate additional information with a MathML
+ * construct. The construct can be used to decorate a MathML expressions with
+ * a sequence of one or more <code><annotation></code> or
+ * <code><annotation-xml></code> elements. Each such element contains a
+ * pair of items; the first is a symbol that acts as an attribute or key, and
+ * the second is the value associated with the attribute or key. Please refer
+ * to the MathML 2.0 documentation, particularly the <a target="_blank"
+ * href="http://www.w3.org/TR/2007/WD-MathML3-20071005/chapter5.html#mixing.semantic.annotations">Section
+ * 5.2, Semantic Annotations</a> for more information about these constructs.
+ *
+ * @return the nth annotation of this {@link ASTNode}, or <code>null</code> if this node has
+ * no nth annotation (<code>n ></code>
+ * {@link ASTNode#getNumSemanticsAnnotations()}
+ * <code>- 1</code> or n < 0).
+ * @see ASTNode#addSemanticsAnnotation(XMLNode sAnnotation)
+ */
+ public XMLNode getSemanticsAnnotation(int n) {
+ if (semanticsAnnotationList == null || n < 0 || (n > (getNumSemanticsAnnotations() -1))) {
+ return null;
+ }
+
+ return semanticsAnnotationList.get(n);
+ }
+
+ /**
+ * Returns the list of semantics annotations of this node.
+ *
+ * @return the list of semantics annotations of this node or null if no semantics annotation are present.
+ */
+ public List<XMLNode> getListOfSemanticsAnnotations() {
+ return semanticsAnnotationList;
+ }
+
+ // TODO - removeSemanticsAnnotation
+ // TODO - unsetsemanticsAnnotation
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-15 11:56:32
|
Revision: 2455
http://sourceforge.net/p/jsbml/code/2455
Author: niko-rodrigue
Date: 2015-12-15 11:56:29 +0000 (Tue, 15 Dec 2015)
Log Message:
-----------
improved the TestSBMLDocumentClone class to test as well serialisation and de-serialisation of whole documents
Modified Paths:
--------------
trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java
Modified: trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java
===================================================================
--- trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java 2015-12-11 16:09:34 UTC (rev 2454)
+++ trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java 2015-12-15 11:56:29 UTC (rev 2455)
@@ -22,14 +22,22 @@
package org.sbml.jsbml.test;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Base64;
import java.util.Calendar;
import java.util.List;
+import javax.swing.tree.TreeNode;
import javax.xml.stream.XMLStreamException;
import org.sbml.jsbml.SBMLDocument;
@@ -39,6 +47,7 @@
import org.sbml.jsbml.util.filters.Filter;
+
/**
* Test class used to check that jsbml SBMLDocument equals method return true when passed it's clone.
*
@@ -129,6 +138,26 @@
System.out.println(notEqualSBases);
}
+
+
+ String docString = toSerializedString(doc);
+ SBMLDocument serializedDoc = (SBMLDocument) fromSerializedString(docString);
+
+ boolean equalsSerialized = doc.equals(serializedDoc);
+
+ // System.out.println("Equals serialized = " + equalsSerialized);
+
+ if (!equalsSerialized) {
+ nbNotEquals++;
+ fileNotEquals.add(file);
+
+ List<SBase> notEqualSBases = checkEquals(doc, serializedDoc, new ArrayList<SBase>());
+
+ System.out.println("SBases not equals after serialization: " + notEqualSBases);
+ }
+
+ // TODO - write to String with SBMLWriter and compare again the result with equals !!
+
}
catch (XMLStreamException e)
{
@@ -178,6 +207,38 @@
}
}
+ /**
+ * @param sbase
+ * @param serializedSBase
+ * @param notEqualsList
+ * @return
+ */
+ private static List<SBase> checkEquals(SBase sbase, SBase serializedSBase, ArrayList<SBase> notEqualsList)
+ {
+ if (!sbase.equals(serializedSBase)) {
+ notEqualsList.add(sbase);
+ }
+
+ if (sbase.getChildCount() > 0) {
+
+ for (int i = 0; i < sbase.getChildCount(); i++) {
+ TreeNode child = sbase.getChildAt(i);
+
+ if (child instanceof SBase) {
+ checkEquals((SBase) child, (SBase) serializedSBase.getChildAt(i), notEqualsList);
+ }
+ }
+ }
+
+
+ return notEqualsList;
+ }
+
+ /**
+ * @param argsAsFile
+ * @param filesList
+ * @return
+ */
private static List<File> findAllXMLFiles(File argsAsFile, List<File> filesList)
{
// System.out.println("Analyzing directory '" + argsAsFile.getAbsolutePath() + "'");
@@ -224,5 +285,29 @@
return filesList;
}
-
+ /** Read the object from Base64 string. */
+ private static Object fromSerializedString(String s) throws IOException , ClassNotFoundException {
+ byte [] data = Base64.getDecoder().decode(s);
+ ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
+ Object o = ois.readObject();
+ ois.close();
+ return o;
+ }
+
+ /** Write the object to a Base64 string. */
+ private static String toSerializedString(Serializable o) throws IOException {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+
+ try {
+ oos.writeObject(o);
+ oos.close();
+ return Base64.getEncoder().encodeToString(baos.toByteArray());
+
+ } catch (NotSerializableException e) {
+ System.out.println("ERROR !! current content of the serialization : \n" + new String(baos.toByteArray()));
+ throw e;
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 16:09:36
|
Revision: 2454
http://sourceforge.net/p/jsbml/code/2454
Author: niko-rodrigue
Date: 2015-12-11 16:09:34 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
updated version in the ant build files
Modified Paths:
--------------
trunk/build.xml
trunk/core/build.xml
trunk/jsbml-build.properties
Modified: trunk/build.xml
===================================================================
--- trunk/build.xml 2015-12-11 15:48:48 UTC (rev 2453)
+++ trunk/build.xml 2015-12-11 16:09:34 UTC (rev 2454)
@@ -46,8 +46,8 @@
<property name="Name" value="JSBML" />
<property name="name" value="jsbml" />
- <property name="version" value="1.1" />
- <property name="api.version" value="1.1" />
+ <property name="version" value="1.2-SNAPSHOT" />
+ <property name="api.version" value="1.2" />
<property name="year" value="${YEAR}" />
Modified: trunk/core/build.xml
===================================================================
--- trunk/core/build.xml 2015-12-11 15:48:48 UTC (rev 2453)
+++ trunk/core/build.xml 2015-12-11 16:09:34 UTC (rev 2454)
@@ -43,8 +43,8 @@
<property name="Name" value="JSBML"/>
<property name="name" value="jsbml"/>
- <property name="version" value="1.1"/>
- <property name="api.version" value="1.1"/>
+ <property name="version" value="1.2-SNAPSHOT"/>
+ <property name="api.version" value="1.2"/>
<property name="year" value="${YEAR}"/>
Modified: trunk/jsbml-build.properties
===================================================================
--- trunk/jsbml-build.properties 2015-12-11 15:48:48 UTC (rev 2453)
+++ trunk/jsbml-build.properties 2015-12-11 16:09:34 UTC (rev 2454)
@@ -1,7 +1,7 @@
jsbml.Name=JSBML
jsbml.name=jsbml
-jsbml.version=1.1
-jsbml.api.version=1.1
+jsbml.version=1.2-SNAPSHOT
+jsbml.api.version=1.2
jsbml.groupId=org.sbml.jsbml
jsbml.artifactId=jsbml-parent
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 15:48:52
|
Revision: 2453
http://sourceforge.net/p/jsbml/code/2453
Author: niko-rodrigue
Date: 2015-12-11 15:48:48 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
put most log4j Logger as transient (and static final) so that they do not prevent serialization + removed some unused ResourceBundle in the spatial package
Modified Paths:
--------------
trunk/NEWS.txt
trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java
trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java
trunk/core/src/org/sbml/jsbml/ListOf.java
trunk/core/src/org/sbml/jsbml/Species.java
trunk/core/src/org/sbml/jsbml/UnitDefinition.java
trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java
trunk/core/src/org/sbml/jsbml/util/CobraUtil.java
trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java
trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java
trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java
trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java
trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java
trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java
trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java
trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java
trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java
trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java
trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java
trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java
trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java
trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java
trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java
trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java
trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java
trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java
trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java
trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java
trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java
trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java
trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java
trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java
trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java
trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java
trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java
trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java
trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java
trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java
trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java
Modified: trunk/NEWS.txt
===================================================================
--- trunk/NEWS.txt 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/NEWS.txt 2015-12-11 15:48:48 UTC (rev 2453)
@@ -17,6 +17,16 @@
- The clone constructor for SBaseRef was not cloning properly it's child
SBaseRef.
+ - The equals method of ASTNode was failing when one of the double values
+ was set to NaN.
+
+ - Corrected several potential NullPointerExceptions that could occur
+ during the cloning of an SBMLDocument that contain plugins.
+
+ - Corrected a potential NullPointerException in the
+ TreeNodeAdapter(Object, TreeNode) constructor.
+
+
===========================================================================
Version 1.1 (09-12-2015)
===========================================================================
Modified: trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -49,7 +49,7 @@
/**
* A logger for user-messages.
*/
- private static final Logger logger = Logger.getLogger(AbstractMathContainer.class);
+ private static final transient Logger logger = Logger.getLogger(AbstractMathContainer.class);
/**
* The math formula as an abstract syntax tree.
Modified: trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -79,7 +79,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(AbstractTreeNode.class);
+ private static final transient Logger logger = Logger.getLogger(AbstractTreeNode.class);
/**
Modified: trunk/core/src/org/sbml/jsbml/ListOf.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/ListOf.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/ListOf.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -261,7 +261,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(ListOf.class);
+ private static final transient Logger logger = Logger.getLogger(ListOf.class);
/**
* Helper method to initialize newly created lists.
Modified: trunk/core/src/org/sbml/jsbml/Species.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/Species.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/Species.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -42,7 +42,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(Species.class);
+ private static final transient Logger logger = Logger.getLogger(Species.class);
/**
* Generated serial version identifier.
Modified: trunk/core/src/org/sbml/jsbml/UnitDefinition.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/UnitDefinition.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/UnitDefinition.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -63,7 +63,7 @@
/**
* The logger for this class.
*/
- private static final Logger logger = Logger.getLogger(UnitDefinition.class);
+ private static final transient Logger logger = Logger.getLogger(UnitDefinition.class);
/**
* Generated serial version identifier.
*/
Modified: trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -51,7 +51,7 @@
/**
*
*/
- private Logger logger = Logger.getLogger(AbstractSBasePlugin.class);
+ private static final transient Logger logger = Logger.getLogger(AbstractSBasePlugin.class);
/**
*
Modified: trunk/core/src/org/sbml/jsbml/util/CobraUtil.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/CobraUtil.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/util/CobraUtil.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -40,7 +40,7 @@
*/
public class CobraUtil {
- private static Logger logger = Logger.getLogger(CobraUtil.class);
+ private static final transient Logger logger = Logger.getLogger(CobraUtil.class);
/**
* Parses the notes of the given {@link SBase} element.
Modified: trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -44,7 +44,7 @@
/**
* A {@link Logger} for this class.
*/
- private static transient Logger logger;
+ private static final transient Logger logger = Logger.getLogger(SimpleTreeNodeChangeListener.class);
/**
* Creates an {@link TreeNodeChangeListener} that writes all events to the
@@ -52,7 +52,6 @@
*/
public SimpleTreeNodeChangeListener() {
super();
- logger = Logger.getLogger(SimpleTreeNodeChangeListener.class);
}
/**
Modified: trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -64,7 +64,7 @@
/**
* A {@link Logger} for this class.
*/
- private final Logger logger = Logger.getLogger(MathMLXMLStreamCompiler.class);
+ private static final transient Logger logger = Logger.getLogger(MathMLXMLStreamCompiler.class);
/**
*
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -53,7 +53,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(AbstractReaderWriter.class);
+ private static final transient Logger logger = Logger.getLogger(AbstractReaderWriter.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.parsers.ReadingParser#processAttribute(String
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -70,7 +70,7 @@
/**
* A {@link Logger} for this class.
*/
- private transient Logger logger = Logger.getLogger(MathMLStaxParser.class);
+ private static final transient Logger logger = Logger.getLogger(MathMLStaxParser.class);
/**
*
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -66,7 +66,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(ParserManager.class);
+ private static final transient Logger logger = Logger.getLogger(ParserManager.class);
private String[] parserDefaults =
{"org.sbml.jsbml.xml.parsers.UncertMLXMLNodeReader", "org.sbml.jsbml.xml.parsers.SBMLCoreParser",
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -90,7 +90,7 @@
* Logger to be able to send informative, debug, warning or error messages.
*
*/
- private Logger logger = Logger.getLogger(getClass());
+ private static final transient Logger logger = Logger.getLogger(SBMLRDFAnnotationParser.class);
@Override
public XMLNode writeAnnotation(SBase contextObject, XMLNode xmlNode)
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -60,7 +60,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(XMLNodeReader.class);
+ private static final transient Logger logger = Logger.getLogger(XMLNodeReader.class);
/**
*
Modified: trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -48,7 +48,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(DateProcessor.class);
+ private static final transient Logger logger = Logger.getLogger(DateProcessor.class);
static {
instance = new DateProcessor();
Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -119,7 +119,7 @@
/**
* A {@link Logger} for this class.
*/
- private transient Logger logger = Logger.getLogger(SBMLReader.class);
+ private static final transient Logger logger = Logger.getLogger(SBMLReader.class);
Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -260,7 +260,7 @@
/**
* A {@link Logger} for this class.
*/
- Logger logger = Logger.getLogger(SBMLWriter.class);
+ private static final transient Logger logger = Logger.getLogger(SBMLWriter.class);
/**
Modified: trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -36,7 +36,7 @@
/**
* logger
*/
- private Logger logger = Logger.getLogger(XMLLogger.class);
+ private static final transient Logger logger = Logger.getLogger(XMLLogger.class);
/**
*
Modified: trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java
===================================================================
--- trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -47,7 +47,7 @@
/**
* A {@link Logger} for this class.
*/
- private final Logger logger = Logger.getLogger(ArraysParser.class);
+ private static final transient Logger logger = Logger.getLogger(ArraysParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.parsers.ReadingParser#getNamespaces()
Modified: trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java
===================================================================
--- trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -61,7 +61,7 @@
*/
public class FlatteningTest {
- private static Logger logger = Logger.getLogger(FlatteningTest.class);
+ private static final transient Logger logger = Logger.getLogger(FlatteningTest.class);
@Test
public void sizeZeroTest() {
Modified: trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java
===================================================================
--- trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -63,7 +63,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CompParser.class);
+ private static final transient Logger logger = Logger.getLogger(CompParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.parsers.AbstractReaderWriter#getNamespaceURI()
Modified: trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java
===================================================================
--- trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -80,7 +80,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(DistribParser.class);
+ private static final transient Logger logger = Logger.getLogger(DistribParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase)
Modified: trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java
===================================================================
--- trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -53,7 +53,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(UncertMLXMLNodeReader.class);
+ private static final transient Logger logger = Logger.getLogger(UncertMLXMLNodeReader.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.ReadingParser#processCharactersOf(String elementName, String characters, Object contextObject)
Modified: trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java
===================================================================
--- trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -61,7 +61,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(DynParser.class);
+ private static final transient Logger logger = Logger.getLogger(DynParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.parsers.ReadingParser#getNamespaces()
Modified: trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java
===================================================================
--- trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -99,7 +99,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(FBCParser.class);
+ private static final transient Logger logger = Logger.getLogger(FBCParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase)
Modified: trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java
===================================================================
--- trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -53,7 +53,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(GroupsParser.class);
+ private static final transient Logger logger = Logger.getLogger(GroupsParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase)
Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -53,7 +53,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(BoundingBox.class);
+ private static final transient Logger logger = Logger.getLogger(BoundingBox.class);
/**
*
Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -116,7 +116,7 @@
/**
*
*/
- private Logger logger = Logger.getLogger(CurveSegment.class);
+ private static final transient Logger logger = Logger.getLogger(CurveSegment.class);
/**
*
Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -60,7 +60,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(Dimensions.class);
+ private static final transient Logger logger = Logger.getLogger(Dimensions.class);
/**
*
Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -60,7 +60,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(GraphicalObject.class);
+ private static final transient Logger logger = Logger.getLogger(GraphicalObject.class);
/**
*
Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -57,7 +57,7 @@
/**
* A {@link Logger} for this class.
*/
- private static final Logger logger = Logger.getLogger(Point.class);
+ private static final transient Logger logger = Logger.getLogger(Point.class);
/**
* the x coordinate
Modified: trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -115,7 +115,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(L3LayoutParser.class);
+ private static final transient Logger logger = Logger.getLogger(L3LayoutParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase)
Modified: trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java
===================================================================
--- trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -80,7 +80,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(LayoutParser.class);
+ private static final transient Logger logger = Logger.getLogger(LayoutParser.class);
/**
*
Modified: trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java
===================================================================
--- trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -65,7 +65,7 @@
/**
*
*/
- private Logger logger = Logger.getLogger(QualParser.class);
+ private static final transient Logger logger = Logger.getLogger(QualParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase)
Modified: trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java
===================================================================
--- trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -64,7 +64,7 @@
/**
* The logger for this RenderParser
*/
- private static final Logger logger = Logger.getLogger(RenderParser.class);
+ private static final transient Logger logger = Logger.getLogger(RenderParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.parsers.AbstractReaderWriter#getShortLabel()
Modified: trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java
===================================================================
--- trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -52,7 +52,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(ReqParser.class);
+ private static final transient Logger logger = Logger.getLogger(ReqParser.class);
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.parsers.AbstractReaderWriter#getNamespaceURI()
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,14 +23,12 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
import javax.swing.tree.TreeNode;
import org.apache.log4j.Logger;
import org.sbml.jsbml.AbstractSBase;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.util.ResourceManager;
/**
* @author Alex Thomas
@@ -44,7 +42,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(AbstractSpatialNamedSBase.class);
+ private static final transient Logger logger = Logger.getLogger(AbstractSpatialNamedSBase.class);
/**
* Generated serial version identifier.
@@ -59,11 +57,6 @@
/**
*
*/
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
- /**
- *
- */
public AbstractSpatialNamedSBase() {
super();
initDefaults();
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,11 +23,9 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.util.ResourceManager;
/**
* @author Alex Thomas
@@ -41,7 +39,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(AdjacentDomains.class);
+ private static final transient Logger logger = Logger.getLogger(AdjacentDomains.class);
/**
*
@@ -51,12 +49,7 @@
*
*/
private String domain2;
- /**
- *
- */
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
/**
* Generated serial version identifier.
*/
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -40,7 +40,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(AdvectionCoefficient.class);
+ private static final transient Logger logger = Logger.getLogger(AdvectionCoefficient.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,16 +23,11 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import org.sbml.jsbml.AbstractMathContainer;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.SBMLException;
-import org.sbml.jsbml.util.ResourceManager;
import org.sbml.jsbml.util.StringTools;
-import org.sbml.jsbml.util.TreeNodeChangeEvent;
/**
* @author Alex Thomas
@@ -47,7 +42,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(AnalyticVolume.class);
+ private static final transient Logger logger = Logger.getLogger(AnalyticVolume.class);
/**
*
@@ -71,12 +66,7 @@
*/
private static final long serialVersionUID = 1757917501241390228L;
- /**
- *
- */
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
/**
*
*/
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,11 +23,9 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.util.ResourceManager;
import org.sbml.jsbml.util.StringTools;
/**
@@ -42,7 +40,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(Boundary.class);
+ private static final transient Logger logger = Logger.getLogger(Boundary.class);
/**
* Generated serial version identifier.
@@ -54,12 +52,7 @@
*/
private Double value;
- /**
- *
- */
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
/**
*
*/
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,11 +23,9 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.SBMLException;
/**
* @author Alex Thomas
@@ -41,7 +39,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(BoundaryCondition.class);
+ private static final transient Logger logger = Logger.getLogger(BoundaryCondition.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,13 +23,11 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
import javax.swing.tree.TreeNode;
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.util.ResourceManager;
import org.sbml.jsbml.util.StringTools;
@@ -45,7 +43,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CSGObject.class);
+ private static final transient Logger logger = Logger.getLogger(CSGObject.class);
/**
* Generated serial version identifier.
@@ -67,12 +65,7 @@
*/
private CSGNode csgNode;
- /**
- *
- */
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
/**
*
*/
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,11 +23,9 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.util.ResourceManager;
/**
* @author Alex Thomas
@@ -41,7 +39,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CSGPrimitive.class);
+ private static final transient Logger logger = Logger.getLogger(CSGPrimitive.class);
/**
*
@@ -53,12 +51,7 @@
*/
private PrimitiveKind primitiveType;
- /**
- *
- */
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
/**
*
*/
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,11 +23,9 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.util.ResourceManager;
/**
* @author Alex Thomas
@@ -41,7 +39,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CSGPseudoPrimitive.class);
+ private static final transient Logger logger = Logger.getLogger(CSGPseudoPrimitive.class);
/**
*
@@ -53,12 +51,7 @@
*/
private String csgObjectRef;
- /**
- *
- */
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
/**
*
*/
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -41,7 +41,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CSGRotation.class);
+ private static final transient Logger logger = Logger.getLogger(CSGRotation.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -42,7 +42,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CSGScale.class);
+ private static final transient Logger logger = Logger.getLogger(CSGScale.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -46,7 +46,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CSGSetOperator.class);
+ private static final transient Logger logger = Logger.getLogger(CSGSetOperator.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -41,7 +41,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CSGTranslation.class);
+ private static final transient Logger logger = Logger.getLogger(CSGTranslation.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -42,7 +42,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CompartmentMapping.class);
+ private static final transient Logger logger = Logger.getLogger(CompartmentMapping.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -48,7 +48,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CoordinateComponent.class);
+ private static final transient Logger logger = Logger.getLogger(CoordinateComponent.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -44,7 +44,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(CoordinateReference.class);
+ private static final transient Logger logger = Logger.getLogger(CoordinateReference.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -26,7 +26,6 @@
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.xml.parsers.SpatialParser;
/**
@@ -53,7 +52,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(DiffusionCoefficient.class);
+ private static final transient Logger logger = Logger.getLogger(DiffusionCoefficient.class);
/**
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -46,7 +46,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(Domain.class);
+ private static final transient Logger logger = Logger.getLogger(Domain.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -42,7 +42,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(DomainType.class);
+ private static final transient Logger logger = Logger.getLogger(DomainType.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -46,7 +46,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(Geometry.class);
+ private static final transient Logger logger = Logger.getLogger(Geometry.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -40,7 +40,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(GeometryDefinition.class);
+ private static final transient Logger logger = Logger.getLogger(GeometryDefinition.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -44,7 +44,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(InteriorPoint.class);
+ private static final transient Logger logger = Logger.getLogger(InteriorPoint.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -43,7 +43,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(OrdinalMapping.class);
+ private static final transient Logger logger = Logger.getLogger(OrdinalMapping.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -45,7 +45,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(ParameterType.class);
+ private static final transient Logger logger = Logger.getLogger(ParameterType.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -41,7 +41,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(ParametricObject.class);
+ private static final transient Logger logger = Logger.getLogger(ParametricObject.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -46,7 +46,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(SampledField.class);
+ private static final transient Logger logger = Logger.getLogger(SampledField.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -47,7 +47,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(SampledFieldGeometry.class);
+ private static final transient Logger logger = Logger.getLogger(SampledFieldGeometry.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -23,11 +23,9 @@
import java.text.MessageFormat;
import java.util.Map;
-import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.sbml.jsbml.PropertyUndefinedError;
-import org.sbml.jsbml.util.ResourceManager;
import org.sbml.jsbml.util.StringTools;
/**
@@ -43,7 +41,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(SampledVolume.class);
+ private static final transient Logger logger = Logger.getLogger(SampledVolume.class);
/**
* Generated serial version identifier.
@@ -67,12 +65,7 @@
*/
private Double maxValue;
- /**
- *
- */
- private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages");
-
/**
*
*/
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -40,7 +40,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(SpatialPoints.class);
+ private static final transient Logger logger = Logger.getLogger(SpatialPoints.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -44,7 +44,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(SpatialReactionPlugin.class);
+ private static final transient Logger logger = Logger.getLogger(SpatialReactionPlugin.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -39,7 +39,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(SpatialSymbolReference.class);
+ private static final transient Logger logger = Logger.getLogger(SpatialSymbolReference.class);
/**
* Generated serial version identifier.
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -43,7 +43,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(TransformationComponent.class);
+ private static final transient Logger logger = Logger.getLogger(TransformationComponent.class);
/**
*
Modified: trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java
===================================================================
--- trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java 2015-12-11 14:05:22 UTC (rev 2452)
+++ trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java 2015-12-11 15:48:48 UTC (rev 2453)
@@ -60,7 +60,6 @@
import org.sbml.jsbml.ext.spatial.InteriorPoint;
import org.sbml.jsbml.ext.spatial.ParametricGeometry;
import org.sbml.jsbml.ext.spatial.ParametricObject;
-import org.sbml.jsbml.ext.spatial.PolygonObject;
import org.sbml.jsbml.ext.spatial.SampledField;
import org.sbml.jsbml.ext.spatial.SampledFieldGeometry;
import org.sbml.jsbml.ext.spatial.SampledVolume;
@@ -89,7 +88,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(SpatialParser.class);
+ private static final transient Logger logger = Logger.getLogger(SpatialParser.class);
/**
* The name space of required elements.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 14:05:24
|
Revision: 2452
http://sourceforge.net/p/jsbml/code/2452
Author: niko-rodrigue
Date: 2015-12-11 14:05:22 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
renamed the log4j Logger field to logger in SBMLCoreParser.
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 14:02:33 UTC (rev 2451)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 14:05:22 UTC (rev 2452)
@@ -98,7 +98,7 @@
/**
* Log4j logger
*/
- private static final transient Logger log4jLogger = Logger.getLogger(SBMLCoreParser.class);
+ private static final transient Logger logger = Logger.getLogger(SBMLCoreParser.class);
/**
* Localization support.
@@ -158,8 +158,8 @@
Object contextObject)
{
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(MessageFormat.format(
+ if (logger.isDebugEnabled()) {
+ logger.debug(MessageFormat.format(
"processing the attribute: ''{0}'' (value = {1}) on element ''{2}'' ({3}).",
attributeName, value, elementName, contextObject));
}
@@ -174,8 +174,8 @@
try {
isAttributeRead = sbase.readAttribute(attributeName, prefix, value);
} catch (Throwable exc) {
- log4jLogger.error(exc.getMessage());
- log4jLogger.info("Attribute = " + attributeName + ", element = " + elementName);
+ logger.error(exc.getMessage());
+ logger.info("Attribute = " + attributeName + ", element = " + elementName);
}
}
// A SBMLCoreParser can modify a contextObject which is an instance of
@@ -193,16 +193,16 @@
isAttributeRead = true;
} catch (IllegalArgumentException e) {
// TODO: Write from which element the error is coming from: astNode.getParentSBMLObject();
- log4jLogger.warn(e.getMessage());
+ logger.warn(e.getMessage());
// Log the error to the ErrorLog object ??
}
- log4jLogger.debug("SBMLCoreParser: processAttribute: adding an unit to an ASTNode");
+ logger.debug("SBMLCoreParser: processAttribute: adding an unit to an ASTNode");
}
if (!isAttributeRead) {
// TODO: Here we should add a hint which SBML Level/Version combination is used.
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownAttributeOnElement"), // Level {2,number,integer} Version {3,number,integer}
attributeName, elementName));
// Log the error to the ErrorLog object ??
@@ -225,8 +225,8 @@
if ((elementName != null) && elementName.equals("notes")) {
} else if ((characters != null) && (characters.trim().length() != 0)) {
- // log4jLogger.warn("The SBML core XML element should not have any content, everything should be stored as attribute.");
- // log4jLogger.warn("The Characters are: @" + characters.trim() + "@");
+ // logger.warn("The SBML core XML element should not have any content, everything should be stored as attribute.");
+ // logger.warn("The Characters are: @" + characters.trim() + "@");
}
}
@@ -236,51 +236,51 @@
@Override
public void processEndDocument(SBMLDocument sbmlDocument) {
- log4jLogger.debug("SBMLCoreParser: processEndDocument");
+ logger.debug("SBMLCoreParser: processEndDocument");
if (sbmlDocument.isSetModel()) {
Model model = sbmlDocument.getModel();
if (model.isSetAreaUnits() && !model.isSetAreaUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "areaUnitsID", model.getAreaUnits(),
model.getElementName(), SBMLtools.getIdOrName(model)));
}
if (model.isSetConversionFactor()
&& !model.isSetConversionFactorInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Parameter", "conversionFactorID", model.getConversionFactor(),
model.getElementName(), SBMLtools.getIdOrName(model)));
}
if (model.isSetExtentUnits() && !model.isSetExtentUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "extentUnitsID", model.getExtentUnits(),
model.getElementName(), SBMLtools.getIdOrName(model)));
}
if (model.isSetLengthUnits() && !model.isSetLengthUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "lengthUnitsID", model.getLengthUnits(),
model.getElementName(), SBMLtools.getIdOrName(model)));
}
if (model.isSetSubstanceUnits()
&& !model.isSetSubstanceUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "substanceUnitsID", model.getSubstanceUnits(),
model.getElementName(), SBMLtools.getIdOrName(model)));
}
if (model.isSetTimeUnits() && !model.isSetTimeUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "timeUnitsID", model.getTimeUnits(),
model.getElementName(), SBMLtools.getIdOrName(model)));
}
if (model.isSetVolumeUnits() && !model.isSetVolumeUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "volumeUnitsID", model.getVolumeUnits(),
model.getElementName(), SBMLtools.getIdOrName(model)));
@@ -290,7 +290,7 @@
if (model.getLevel() == 1) {
- log4jLogger.debug("Transformed SBMLLevel1Rule: processEndDocument: model is level 1");
+ logger.debug("Transformed SBMLLevel1Rule: processEndDocument: model is level 1");
int i = 0;
for (Rule rule : model.getListOfRules().clone()) {
@@ -299,22 +299,22 @@
if (((SBMLLevel1Rule) rule).isScalar()) {
realRule = ((SBMLLevel1Rule) rule).cloneAsAssignmentRule();
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(MessageFormat.format(
+ if (logger.isDebugEnabled()) {
+ logger.debug(MessageFormat.format(
"Transformed SBMLLevel1Rule: {0} into AssignmentRule.",
((SBMLLevel1Rule) rule).getVariable()));
}
} else {
realRule = ((SBMLLevel1Rule) rule).cloneAsRateRule();
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(MessageFormat.format(
+ if (logger.isDebugEnabled()) {
+ logger.debug(MessageFormat.format(
"Transformed SBMLLevel1Rule: {0} into RateRule.",
((SBMLLevel1Rule) rule).getVariable()));
}
}
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(MessageFormat.format(
+ if (logger.isDebugEnabled()) {
+ logger.debug(MessageFormat.format(
"Transformed SBMLLevel1Rule: realRule = {0}",
realRule));
}
@@ -332,7 +332,7 @@
AssignmentRule assignmentRule = (AssignmentRule) rule;
if (assignmentRule.isSetVariable()
&& !assignmentRule.isSetVariableInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError2"),
"Symbol", "variableID", assignmentRule.getVariable(),
assignmentRule.getElementName()));
@@ -340,7 +340,7 @@
if (assignmentRule.isSetUnits()
&& !assignmentRule.isSetUnitsInstance()
&& assignmentRule.isParameter()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError2"),
"UnitDefinition", "unitsID", assignmentRule.getUnits(),
assignmentRule.getElementName()));
@@ -349,7 +349,7 @@
RateRule rateRule = (RateRule) rule;
if (rateRule.isSetVariable()
&& !rateRule.isSetVariableInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError3"),
"Symbol", "variableID", rateRule.getVariable(),
rateRule.getElementName()));
@@ -362,20 +362,20 @@
Compartment compartment = model.getCompartment(i);
if (compartment.isSetCompartmentType()
&& !compartment.isSetCompartmentTypeInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"CompartmentType", "compartmentTypeID", compartment.getCompartmentType(),
compartment.getElementName(), SBMLtools.getIdOrName(compartment)));
}
if (compartment.isSetOutside()
&& !compartment.isSetOutsideInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Compartment", "outsideID", compartment.getOutside(),
compartment.getElementName(), SBMLtools.getIdOrName(compartment)));
}
if (compartment.isSetUnits() && !compartment.isSetUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "unitsID", compartment.getUnits(),
compartment.getElementName(), SBMLtools.getIdOrName(compartment)));
@@ -387,7 +387,7 @@
Event event = model.getEvent(i);
if (event.isSetTimeUnits() && !event.isSetTimeUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "timeUnitsID", event.getTimeUnits(),
event.getElementName(), SBMLtools.getIdOrName(event)));
@@ -401,7 +401,7 @@
if (eventAssignment.isSetVariable()
&& !eventAssignment.isSetVariableInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError4"),
"Symbol", "variableID", eventAssignment.getVariable(),
eventAssignment.getElementName(), event.getElementName(),
@@ -418,7 +418,7 @@
if (initialAssignment.isSetVariable()
&& !initialAssignment.isSetVariableInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError5"),
"Symbol", "symbolID",
initialAssignment.getVariable(),
@@ -431,7 +431,7 @@
Reaction reaction = model.getReaction(i);
if (reaction.isSetCompartment()
&& !reaction.isSetCompartmentInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Compartment", "compartmentID", reaction.getCompartment(),
reaction.getElementName(), SBMLtools.getIdOrName(reaction)));
@@ -445,7 +445,7 @@
if (speciesReference.isSetSpecies()
&& !speciesReference.isSetSpeciesInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Species", "speciesID", speciesReference.getSpecies(),
speciesReference.getElementName(),
@@ -460,7 +460,7 @@
if (speciesReference.isSetSpecies()
&& !speciesReference.isSetSpeciesInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Species", "speciesID",
speciesReference.getSpecies(), speciesReference.getElementName(),
@@ -469,7 +469,7 @@
}
}
if (neitherReactantsNorProducts) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.reactionWithoutParticipantsError"),
SBMLtools.getIdOrName(reaction)));
}
@@ -481,7 +481,7 @@
if (modifierSpeciesReference.isSetSpecies()
&& !modifierSpeciesReference
.isSetSpeciesInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Species", "speciesID",
modifierSpeciesReference.getSpecies(),
@@ -493,7 +493,7 @@
KineticLaw kineticLaw = reaction.getKineticLaw();
if (kineticLaw.isSetTimeUnits()
&& !kineticLaw.isSetTimeUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError6"),
"UnitDefinition", "timeUnitsID", kineticLaw.getTimeUnits(),
kineticLaw.getElementName(), reaction.getElementName(),
@@ -501,7 +501,7 @@
}
if (kineticLaw.isSetSubstanceUnits()
&& !kineticLaw.isSetSubstanceUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError6"),
"UnitDefinition", "substanceUnitsID",
kineticLaw.getSubstanceUnits(), kineticLaw.getElementName(),
@@ -513,7 +513,7 @@
.getLocalParameter(j);
if (parameter.isSetUnits()
&& !parameter.isSetUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "unitsID",
parameter.getUnits(), parameter.getElementName(),
@@ -530,7 +530,7 @@
if (species.isSetSubstanceUnits()
&& !species.isSetSubstanceUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "subtsanceUnitsID",
species.getSubstanceUnits(), species.getElementName(),
@@ -538,28 +538,28 @@
}
if (species.isSetSpeciesType()
&& !species.isSetSpeciesTypeInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"SpeciesType", "speciesTypeID", species.getSpeciesType(),
species.getElementName(), SBMLtools.getIdOrName(species)));
}
if (species.isSetConversionFactor()
&& !species.isSetConversionFactorInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Parameter", "conversionFactorID", species.getConversionFactor(),
species.getElementName(), SBMLtools.getIdOrName(species)));
}
if (species.isSetCompartment()
&& !species.isSetCompartmentInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"Compartment", "compartmentID", species.getCompartment(),
species.getElementName(), SBMLtools.getIdOrName(species)));
}
if (species.isSetSpatialSizeUnits()
&& !species.isSetSpatialSizeUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "spatialSizeUnitsID",
species.getSpatialSizeUnits(), species.getElementName(),
@@ -572,7 +572,7 @@
Parameter parameter = model.getParameter(i);
if (parameter.isSetUnits()
&& !parameter.isSetUnitsInstance()) {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownReferenceError1"),
"UnitDefinition", "unitsID", parameter.getUnits(),
parameter.getElementName(), SBMLtools.getIdOrName(parameter)));
@@ -581,10 +581,10 @@
}
} else {
- log4jLogger.error("The Model element has not been created.");
+ logger.error("The Model element has not been created.");
}
- log4jLogger.debug("Starting to check the package version and namespace for all package elements");
+ logger.debug("Starting to check the package version and namespace for all package elements");
// checks silently package version and namespace and try to fix any problems encountered.
PackageUtil.checkPackages(sbmlDocument, true, true);
}
@@ -615,8 +615,8 @@
} else {
sbase.addDeclaredNamespace(localName, URI);
}
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(MessageFormat.format(
+ if (logger.isDebugEnabled()) {
+ logger.debug(MessageFormat.format(
"processNamespace: {0} = {1}",
prefix, URI));
}
@@ -630,15 +630,15 @@
} else {
annotation.addDeclaredNamespace(localName, URI);
}
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(MessageFormat.format(
+ if (logger.isDebugEnabled()) {
+ logger.debug(MessageFormat.format(
"processNamespace: {0} = {1}",
prefix, URI));
}
}
else
{
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.namespaceIgnored"),
elementName, localName, URI));
// TODO - store into the XMLNode for unknown things
@@ -763,12 +763,12 @@
return listOfSpeciesTypes;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"),
elementName));
}
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"),
elementName));
}
@@ -938,7 +938,7 @@
return speciesType;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"),
elementName));
}
@@ -955,7 +955,7 @@
return unit;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (list.getParentSBMLObject() instanceof Reaction) {
@@ -979,7 +979,7 @@
return speciesReference;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (elementName.equals("specieReference")
@@ -998,7 +998,7 @@
return speciesReference;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (elementName
@@ -1011,7 +1011,7 @@
return modifierSpeciesReference;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (list.getParentSBMLObject() instanceof KineticLaw) {
@@ -1038,7 +1038,7 @@
return localParameter;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (list.getParentSBMLObject() instanceof Event) {
@@ -1053,11 +1053,11 @@
return eventAssignment;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (contextObject instanceof UnitDefinition) {
@@ -1093,7 +1093,7 @@
return priority;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (contextObject instanceof Reaction) {
@@ -1120,7 +1120,7 @@
return kineticLaw;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (contextObject instanceof SpeciesReference) {
@@ -1132,7 +1132,7 @@
return stoichiometryMath;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (contextObject instanceof KineticLaw) {
@@ -1153,7 +1153,7 @@
return listOfLocalParameters;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else if (contextObject instanceof Constraint) {
@@ -1167,26 +1167,26 @@
return constraint;
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} else {
- log4jLogger.warn(MessageFormat.format(
+ logger.warn(MessageFormat.format(
bundle.getString("SBMLCoreParser.unknownElement"), elementName));
}
} catch (InstantiationException exc) {
- log4jLogger.error(MessageFormat.format(
+ logger.error(MessageFormat.format(
bundle.getString("SBMLCoreParser.instanciationError"), elementName));
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(exc.getMessage());
- log4jLogger.debug(exc.getStackTrace());
+ if (logger.isDebugEnabled()) {
+ logger.debug(exc.getMessage());
+ logger.debug(exc.getStackTrace());
}
} catch (IllegalAccessException exc) {
- log4jLogger.error(MessageFormat.format(
+ logger.error(MessageFormat.format(
bundle.getString("SBMLCoreParser.instanciationError"), elementName));
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(exc.getMessage());
- log4jLogger.debug(exc.getStackTrace());
+ if (logger.isDebugEnabled()) {
+ logger.debug(exc.getMessage());
+ logger.debug(exc.getStackTrace());
}
}
}
@@ -1239,8 +1239,8 @@
if (sbmlElementToWrite instanceof SBase) {
SBase sbase = (SBase) sbmlElementToWrite;
- if (log4jLogger.isDebugEnabled()) {
- log4jLogger.debug(MessageFormat.format("writeElement: {0}", sbase.getElementName()));
+ if (logger.isDebugEnabled()) {
+ logger.debug(MessageFormat.format("writeElement: {0}", sbase.getElementName()));
}
// dealing with level 1 rules
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 14:02:35
|
Revision: 2451
http://sourceforge.net/p/jsbml/code/2451
Author: niko-rodrigue
Date: 2015-12-11 14:02:33 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
removed the XMLLogger field in SBMLCoreParser with its associated methods as it was never used
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java
Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 13:51:54 UTC (rev 2450)
+++ trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 14:02:33 UTC (rev 2451)
@@ -71,7 +71,6 @@
import org.sbml.jsbml.xml.XMLNode;
import org.sbml.jsbml.xml.XMLTriple;
import org.sbml.jsbml.xml.stax.SBMLObjectForXML;
-import org.sbml.jsbml.xml.stax.XMLLogger;
/**
* Parses the SBML core elements of an SBML file. It can read and write SBML
@@ -97,11 +96,6 @@
private Map<String, Class<? extends Object>> sbmlCoreElements;
/**
- * The logger of this parser
- */
- private XMLLogger logger;
-
- /**
* Log4j logger
*/
private static final transient Logger log4jLogger = Logger.getLogger(SBMLCoreParser.class);
@@ -148,13 +142,6 @@
}
/**
- * @return the logger
- */
- public XMLLogger getLogger() {
- return logger;
- }
-
- /**
*
* @return the namespace URI of this parser.
*/
@@ -1223,14 +1210,6 @@
}
}
- /**
- * @param logger
- * the logger to set
- */
- public void setLogger(XMLLogger logger) {
- this.logger = logger;
- }
-
/* (non-Javadoc)
* @see org.sbml.jsbml.xml.WritingParser#writeAttributes(SBMLObjectForXML xmlObject, Object sbmlElementToWrite)
*/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 13:51:56
|
Revision: 2450
http://sourceforge.net/p/jsbml/code/2450
Author: niko-rodrigue
Date: 2015-12-11 13:51:54 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
corrected the AbstractSBase.equals method to make sure to use '.equals' to compare the namespace attribute and not '==' as '==' can return false even when the two String are identicals, in some circumstances
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/AbstractSBase.java
Modified: trunk/core/src/org/sbml/jsbml/AbstractSBase.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/AbstractSBase.java 2015-12-11 13:47:06 UTC (rev 2449)
+++ trunk/core/src/org/sbml/jsbml/AbstractSBase.java 2015-12-11 13:51:54 UTC (rev 2450)
@@ -84,7 +84,7 @@
/**
* A logger for this class.
*/
- private static final Logger logger = Logger.getLogger(AbstractSBase.class);
+ private static final transient Logger logger = Logger.getLogger(AbstractSBase.class);
/**
* Generated serial version identifier.
@@ -954,6 +954,7 @@
@Override
public boolean equals(Object object) {
boolean equals = super.equals(object);
+
if (equals) {
/*
* Casting will be no problem because the super class has just
@@ -965,6 +966,7 @@
if (equals && sbase.isSetMetaId()) {
equals &= sbase.getMetaId().equals(getMetaId());
}
+
/*
* All child nodes are already checked by the recursive method in
* AbstractTreeNode. We here have to check the following own items
@@ -978,7 +980,8 @@
if (equals && sbase.isSetLevelAndVersion()) {
equals &= sbase.getLevelAndVersion().equals(getLevelAndVersion());
}
- equals &= sbase.getNamespace() == getNamespace();
+
+ equals &= getNamespace() != null ? getNamespace().equals(sbase.getNamespace()) : sbase.getNamespace() == null ;
if (declaredNamespaces == null) {
if (sbase.getDeclaredNamespaces() != null) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 13:47:09
|
Revision: 2449
http://sourceforge.net/p/jsbml/code/2449
Author: niko-rodrigue
Date: 2015-12-11 13:47:06 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
corrected a potential NullPointerException in the TreeNodeAdapter(Object, TreeNode) constructor
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java
Modified: trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java 2015-12-11 13:43:13 UTC (rev 2448)
+++ trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java 2015-12-11 13:47:06 UTC (rev 2449)
@@ -87,9 +87,13 @@
super();
this.userObject = userObject;
this.parent = parent;
+
if (parent instanceof TreeNodeWithChangeSupport) {
- addAllChangeListeners(((TreeNodeWithChangeSupport) parent)
- .getListOfTreeNodeChangeListeners());
+ TreeNodeWithChangeSupport parentTreeNode = (TreeNodeWithChangeSupport) parent;
+
+ if (parentTreeNode.getListOfTreeNodeChangeListeners() != null) {
+ addAllChangeListeners(parentTreeNode.getListOfTreeNodeChangeListeners());
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 13:43:16
|
Revision: 2448
http://sourceforge.net/p/jsbml/code/2448
Author: niko-rodrigue
Date: 2015-12-11 13:43:13 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
corrected several potential NullPointerExceptions that could occur during the cloning of an SBMLDocument
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/SBMLDocument.java
Modified: trunk/core/src/org/sbml/jsbml/SBMLDocument.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/SBMLDocument.java 2015-12-11 13:38:49 UTC (rev 2447)
+++ trunk/core/src/org/sbml/jsbml/SBMLDocument.java 2015-12-11 13:43:13 UTC (rev 2448)
@@ -117,7 +117,7 @@
/**
* logger used to print messages
*/
- private transient Logger logger = Logger.getLogger(getClass());
+ private static final transient Logger logger = Logger.getLogger(SBMLDocument.class);
/**
* Stores all the meta identifiers within this {@link SBMLDocument} to avoid
@@ -489,7 +489,8 @@
}
metaIds.put(sbase.getMetaId(), sbase);
- if (logger.isDebugEnabled()) {
+ // logger can be null during cloning apparently
+ if (logger != null && logger.isDebugEnabled()) {
logger.debug("SBMLDocument - #collectMetaIds - node = '" + sbase + "'");
}
}
@@ -513,6 +514,11 @@
* @return
*/
public boolean containsMetaId(String metaId) {
+
+ if (mappingFromMetaId2SBase == null) {
+ mappingFromMetaId2SBase = new HashMap<String, SBase>();
+ }
+
return mappingFromMetaId2SBase.containsKey(metaId);
}
@@ -1162,6 +1168,11 @@
*
*/
boolean registerMetaId(SBase sbase, boolean add) {
+
+ if (mappingFromMetaId2SBase == null) {
+ mappingFromMetaId2SBase = new HashMap<String, SBase>();
+ }
+
if (sbase.isSetMetaId()) {
if (add) {
// We should call checkMetaid if we want to throw IllegalArgumentException here when metaid already present
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 13:38:51
|
Revision: 2447
http://sourceforge.net/p/jsbml/code/2447
Author: niko-rodrigue
Date: 2015-12-11 13:38:49 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
the ASTNode.equals method was failing when one of the double values was set to NaN. We should probably check all other equals methods for this problem
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/ASTNode.java
Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-11 13:10:22 UTC (rev 2446)
+++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-11 13:38:49 UTC (rev 2447)
@@ -2242,10 +2242,10 @@
&& ast.getDenominator() == getDenominator();
}
if ((ast.getType() == Type.REAL_E) && (type == Type.REAL_E)) {
- equal &= ast.getMantissa() == getMantissa()
+ equal &= Double.isNaN(getMantissa()) ? Double.isNaN(ast.getMantissa()) : ast.getMantissa() == getMantissa()
&& ast.getExponent() == getExponent();
} else if (isReal() && ast.isReal()) {
- equal &= ast.getReal() == getReal();
+ equal &= Double.isNaN(getReal()) ? Double.isNaN(ast.getReal()) : ast.getReal() == getReal();
}
equal &= isSetClassName() == ast.isSetClassName();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-11 13:10:25
|
Revision: 2446
http://sourceforge.net/p/jsbml/code/2446
Author: niko-rodrigue
Date: 2015-12-11 13:10:22 +0000 (Fri, 11 Dec 2015)
Log Message:
-----------
corrected the MultiParser to properly write listOfSpeciesTypes and IntraSpeciesReaction
Modified Paths:
--------------
trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java
Modified: trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java
===================================================================
--- trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java 2015-12-10 15:51:11 UTC (rev 2445)
+++ trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java 2015-12-11 13:10:22 UTC (rev 2446)
@@ -30,7 +30,9 @@
import org.apache.log4j.Logger;
import org.mangosdk.spi.ProviderFor;
+import org.sbml.jsbml.AbstractSBase;
import org.sbml.jsbml.Compartment;
+import org.sbml.jsbml.JSBML;
import org.sbml.jsbml.ListOf;
import org.sbml.jsbml.Model;
import org.sbml.jsbml.SBMLDocument;
@@ -39,6 +41,7 @@
import org.sbml.jsbml.Species;
import org.sbml.jsbml.SpeciesReference;
import org.sbml.jsbml.ext.SBasePlugin;
+import org.sbml.jsbml.ext.multi.IntraSpeciesReaction;
import org.sbml.jsbml.ext.multi.MultiCompartmentPlugin;
import org.sbml.jsbml.ext.multi.MultiConstants;
import org.sbml.jsbml.ext.multi.MultiModelPlugin;
@@ -68,7 +71,7 @@
/**
* A {@link Logger} for this class.
*/
- private Logger logger = Logger.getLogger(MultiParser.class);
+ private static final transient Logger logger = Logger.getLogger(MultiParser.class);
/**
*
@@ -111,7 +114,20 @@
listOfElementsToWrite = super.getListOfSBMLElementsToWrite(treeNode);
}
- // TODO - IntraSpeciesReaction child
+ // IntraSpeciesReaction children
+ if (treeNode instanceof IntraSpeciesReaction) {
+ String sbmlNamespace = JSBML.getNamespaceFrom(((IntraSpeciesReaction) treeNode).getLevel(), ((IntraSpeciesReaction) treeNode).getVersion());
+
+ for (Object child : listOfElementsToWrite) {
+ if (child instanceof AbstractSBase && ((AbstractSBase) child).getNamespace() == null) {
+ AbstractSBase sbase = (AbstractSBase) child;
+ logger.debug("Found one suspect Model child: " + sbase.getElementName() + ". Setting the SBML namespace to it.");
+ sbase.setNamespace(sbmlNamespace);
+ }
+ }
+ }
+
+
return listOfElementsToWrite;
}
@@ -257,6 +273,13 @@
{
super.writeElement(xmlObject, sbmlElementToWrite);
+ // listOfBindingSiteSpeciesTypes if a BindingSpeciesType is the first element of the list of SpeciesTypes.
+ if (xmlObject.isSetName() && xmlObject.getName().equals("listOfBindingSiteSpeciesTypes")) {
+ xmlObject.setName(MultiConstants.listOfSpeciesTypes);
+ }
+
+ // listOfIntraSpeciesReactions cannot happen as core ListOf don't depend on the first element for their name.
+
if (logger.isDebugEnabled()) {
logger.debug("writeElement: " + sbmlElementToWrite.getClass().getSimpleName());
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-10 15:51:13
|
Revision: 2445
http://sourceforge.net/p/jsbml/code/2445
Author: niko-rodrigue
Date: 2015-12-10 15:51:11 +0000 (Thu, 10 Dec 2015)
Log Message:
-----------
added a class to test SBMLDocument.clone and .equals on the whole sbml-test-suite + corrected the clone constructor of SBaseRef that was not cloning it's child SBaseRef
Modified Paths:
--------------
trunk/NEWS.txt
trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java
Added Paths:
-----------
trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java
Modified: trunk/NEWS.txt
===================================================================
--- trunk/NEWS.txt 2015-12-10 15:08:42 UTC (rev 2444)
+++ trunk/NEWS.txt 2015-12-10 15:51:11 UTC (rev 2445)
@@ -12,10 +12,11 @@
- The whole SBMLDocument was not serializable, few classes were not
implementing the Serializable class. This should be fixed now. Thanks
- to Jens Thargor who reported the problem.
+ to Jens Einloft who reported the problem.
+ - The clone constructor for SBaseRef was not cloning properly it's child
+ SBaseRef.
-
===========================================================================
Version 1.1 (09-12-2015)
===========================================================================
Added: trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java
===================================================================
--- trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java (rev 0)
+++ trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java 2015-12-10 15:51:11 UTC (rev 2445)
@@ -0,0 +1,228 @@
+/*
+ * $Id$
+ * $URL$
+ * ----------------------------------------------------------------------------
+ * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML>
+ * for the latest version of JSBML and more information about SBML.
+ *
+ * Copyright (C) 2009-2015 jointly by the following organizations:
+ * 1. The University of Tuebingen, Germany
+ * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
+ * 3. The California Institute of Technology, Pasadena, CA, USA
+ * 4. The University of California, San Diego, La Jolla, CA, USA
+ * 5. The Babraham Institute, Cambridge, UK
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation. A copy of the license agreement is provided
+ * in the file named "LICENSE.txt" included with this software distribution
+ * and also available online as <http://sbml.org/Software/JSBML/License>.
+ * ----------------------------------------------------------------------------
+ */
+
+package org.sbml.jsbml.test;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.sbml.jsbml.SBMLDocument;
+import org.sbml.jsbml.SBMLException;
+import org.sbml.jsbml.SBMLReader;
+import org.sbml.jsbml.SBase;
+import org.sbml.jsbml.util.filters.Filter;
+
+
+/**
+ * Test class used to check that jsbml SBMLDocument equals method return true when passed it's clone.
+ *
+ * @author Nicolas Rodriguez
+ * @version $Rev$
+ * @since 1.2
+ */
+public class TestSBMLDocumentClone {
+
+ public TestSBMLDocumentClone() {
+ }
+
+ /**
+ * Checks that jsbml {@link SBMLDocument#equals(Object)} method return true against it's clone.
+ *
+ * <p>If passed a folder, it will look recursively for all xml files. Particularly setup to go through
+ * the sbml-test-suite folders and test all valid models there.
+ *
+ * @param args the file or folder to test
+ * @throws SBMLException
+ */
+ public static void main(String[] args) throws SBMLException {
+
+ if (args.length < 1) {
+ System.out.println("Usage: java org.sbml.jsbml.test.TestSBMLDocumentClone sbmlFileName|folder");
+ System.exit(0);
+ }
+
+ // this JOptionPane is added here to be able to start visualVM profiling
+ // before the reading or writing is started.
+ // JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.");
+
+ File argsAsFile = new File(args[0]);
+ List<File> files = null;
+
+ if (argsAsFile.isDirectory())
+ {
+ files = findAllXMLFiles(argsAsFile, new ArrayList<File>());
+ }
+ else
+ {
+ files = new ArrayList<File>();
+ files.add(argsAsFile);
+ }
+
+ double globalInit = Calendar.getInstance().getTimeInMillis();
+ double globalEnd = 0;
+ int nbNotEquals = 0;
+ List<File> fileNotEquals = new ArrayList<File>();
+
+ System.out.println("Going to test '" + files.size() + "' files !");
+
+ for (File file : files)
+ {
+
+ double init = Calendar.getInstance().getTimeInMillis();
+ // System.out.println(Calendar.getInstance().getTime());
+
+ String fileName = file.getAbsolutePath();
+
+ System.out.printf("Reading %s\n", fileName);
+
+ try {
+
+ SBMLDocument doc = new SBMLReader().readSBML(file, null);
+
+ boolean equals = doc.equals(doc.clone());
+
+ if (!equals) {
+ nbNotEquals++;
+ fileNotEquals.add(file);
+ System.out.printf("Reading %s\n", fileName);
+ System.out.println(file.getAbsolutePath() + " is not equals to it's clone !!!!!!!!!!!!!!!!!!!!!!!!!!");
+
+ @SuppressWarnings("unchecked")
+ List<SBase> notEqualSBases = (List<SBase>) doc.filter(new Filter() {
+
+ @Override
+ public boolean accepts(Object o) {
+ if (o instanceof SBase) {
+ SBase s = (SBase) o;
+
+ return ! s.equals(s.clone());
+ }
+ return false;
+ }
+ });
+
+ System.out.println(notEqualSBases);
+ }
+ }
+ catch (XMLStreamException e)
+ {
+ e.printStackTrace();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ catch (Exception e)
+ {
+ System.out.printf("Reading %s\n", fileName);
+ nbNotEquals++;
+ fileNotEquals.add(file);
+ e.printStackTrace();
+ }
+
+ // System.out.println(Calendar.getInstance().getTime());
+ double end = Calendar.getInstance().getTimeInMillis();
+ globalEnd = end;
+ double nbMilliseconds = end - init;
+
+ if (files.size() == 1)
+ {
+ System.out.println((int)nbMilliseconds);
+ }
+ }
+
+ if (nbNotEquals > 0) {
+ System.out.println("Found " + nbNotEquals + " documents not equals to their clone or failing to clone.");
+
+ for (File file : fileNotEquals) {
+ System.out.println(file.getAbsolutePath());
+
+ }
+ }
+
+ if (files.size() > 1)
+ {
+ double globalNbMilliseconds = globalEnd - globalInit;
+ double globalSeconds = globalNbMilliseconds / 1000;
+
+ System.out.println("Reading and writing " + files.size() + " models took : " + globalSeconds + " seconds.");
+ System.out.println("Mean per model = " + globalSeconds / files.size() + " seconds (" + globalNbMilliseconds / files.size() + " ms).");
+
+ System.out.println((int)globalNbMilliseconds);
+ }
+ }
+
+ private static List<File> findAllXMLFiles(File argsAsFile, List<File> filesList)
+ {
+ // System.out.println("Analyzing directory '" + argsAsFile.getAbsolutePath() + "'");
+
+ File[] xmlFiles = argsAsFile.listFiles(new FileFilter() {
+
+ @Override
+ public boolean accept(File pathname)
+ {
+ if (pathname.getName().contains("-jsbml.xml") || pathname.getName().contains("fail")
+ || pathname.getName().contains("sedml"))
+ {
+ return false;
+ }
+
+ if (pathname.getName().endsWith(".xml"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+ });
+
+ File[] directories = argsAsFile.listFiles(new FileFilter() {
+
+ @Override
+ public boolean accept(File pathname)
+ {
+ return pathname.isDirectory();
+ }
+ });
+
+ if (xmlFiles.length > 0) {
+ filesList.addAll(Arrays.asList(xmlFiles));
+ }
+
+ if (directories.length > 0) {
+ for(File directory : directories) {
+ findAllXMLFiles(directory, filesList);
+ }
+ }
+
+ return filesList;
+ }
+
+
+}
Property changes on: trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java
===================================================================
--- trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java 2015-12-10 15:08:42 UTC (rev 2444)
+++ trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java 2015-12-10 15:51:11 UTC (rev 2445)
@@ -126,7 +126,7 @@
setMetaIdRef(obj.getMetaIdRef());
}
if (obj.isSetSBaseRef()) {
- setSBaseRef(obj.getSBaseRef());
+ setSBaseRef(obj.getSBaseRef().clone());
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-10 15:08:44
|
Revision: 2444
http://sourceforge.net/p/jsbml/code/2444
Author: niko-rodrigue
Date: 2015-12-10 15:08:42 +0000 (Thu, 10 Dec 2015)
Log Message:
-----------
we decided to put the list of listeners as transient in AbstractTreeNode so that they don't need to implements serializable
Modified Paths:
--------------
trunk/NEWS.txt
trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java
trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java
Modified: trunk/NEWS.txt
===================================================================
--- trunk/NEWS.txt 2015-12-10 14:45:31 UTC (rev 2443)
+++ trunk/NEWS.txt 2015-12-10 15:08:42 UTC (rev 2444)
@@ -2,6 +2,21 @@
===========================================================================
+Version 1.2-X (XX-XX-2016)
+===========================================================================
+
+ * New Features:
+
+
+ * Bug Fixes:
+
+ - The whole SBMLDocument was not serializable, few classes were not
+ implementing the Serializable class. This should be fixed now. Thanks
+ to Jens Thargor who reported the problem.
+
+
+
+===========================================================================
Version 1.1 (09-12-2015)
===========================================================================
Modified: trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-10 14:45:31 UTC (rev 2443)
+++ trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-10 15:08:42 UTC (rev 2444)
@@ -110,7 +110,7 @@
/**
* {@link List} of listeners for this component
*/
- protected List<TreeNodeChangeListener> listOfListeners;
+ protected transient List<TreeNodeChangeListener> listOfListeners;
/**
* The parent element of this {@link Annotation}.
Modified: trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 14:45:31 UTC (rev 2443)
+++ trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 15:08:42 UTC (rev 2444)
@@ -22,7 +22,6 @@
package org.sbml.jsbml.util;
import java.beans.PropertyChangeListener;
-import java.io.Serializable;
import javax.swing.tree.TreeNode;
@@ -36,7 +35,7 @@
* @since 0.8
* @version $Rev$
*/
-public interface TreeNodeChangeListener extends PropertyChangeListener, Serializable {
+public interface TreeNodeChangeListener extends PropertyChangeListener {
/**
* The {@link TreeNode} passed to this method has just been added to the
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-10 14:45:33
|
Revision: 2443
http://sourceforge.net/p/jsbml/code/2443
Author: niko-rodrigue
Date: 2015-12-10 14:45:31 +0000 (Thu, 10 Dec 2015)
Log Message:
-----------
making sure that the whole SBMLDocument is serializable. Few classes were missing and were not serializable before.
Modified Paths:
--------------
trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java
trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java
trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java
trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java
trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java
Modified: trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-10 10:07:57 UTC (rev 2442)
+++ trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-10 14:45:31 UTC (rev 2443)
@@ -22,6 +22,7 @@
package org.sbml.jsbml.util;
import java.beans.PropertyChangeEvent;
+import java.io.Serializable;
import java.text.MessageFormat;
import javax.swing.tree.TreeNode;
@@ -38,12 +39,12 @@
* @since 0.8
* @version $Rev$
*/
-public class SimpleTreeNodeChangeListener implements TreeNodeChangeListener {
+public class SimpleTreeNodeChangeListener implements TreeNodeChangeListener, Serializable {
/**
* A {@link Logger} for this class.
*/
- private Logger logger;
+ private static transient Logger logger;
/**
* Creates an {@link TreeNodeChangeListener} that writes all events to the
Modified: trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 10:07:57 UTC (rev 2442)
+++ trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 14:45:31 UTC (rev 2443)
@@ -22,6 +22,7 @@
package org.sbml.jsbml.util;
import java.beans.PropertyChangeListener;
+import java.io.Serializable;
import javax.swing.tree.TreeNode;
@@ -35,7 +36,7 @@
* @since 0.8
* @version $Rev$
*/
-public interface TreeNodeChangeListener extends PropertyChangeListener {
+public interface TreeNodeChangeListener extends PropertyChangeListener, Serializable {
/**
* The {@link TreeNode} passed to this method has just been added to the
Modified: trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java 2015-12-10 10:07:57 UTC (rev 2442)
+++ trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java 2015-12-10 14:45:31 UTC (rev 2443)
@@ -21,6 +21,7 @@
*/
package org.sbml.jsbml.xml;
+import java.io.Serializable;
import java.util.ArrayList;
import org.sbml.jsbml.JSBML;
@@ -39,7 +40,7 @@
* @since 0.8
* @version $Rev$
*/
-public class XMLAttributes {
+public class XMLAttributes implements Serializable {
/**
*
Modified: trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java 2015-12-10 10:07:57 UTC (rev 2442)
+++ trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java 2015-12-10 14:45:31 UTC (rev 2443)
@@ -21,6 +21,7 @@
*/
package org.sbml.jsbml.xml;
+import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -61,7 +62,7 @@
* @since 0.8
* @version $Rev$
*/
-public class XMLNamespaces {
+public class XMLNamespaces implements Serializable {
/**
* HashMap<Prefix, URI>
Modified: trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java
===================================================================
--- trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java 2015-12-10 10:07:57 UTC (rev 2442)
+++ trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java 2015-12-10 14:45:31 UTC (rev 2443)
@@ -21,6 +21,7 @@
*/
package org.sbml.jsbml.xml;
+import java.io.Serializable;
import java.text.MessageFormat;
/**
@@ -61,7 +62,7 @@
* @since 0.8
* @version $Rev$
*/
-public class XMLTriple {
+public class XMLTriple implements Serializable {
/**
*
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-10 10:08:00
|
Revision: 2442
http://sourceforge.net/p/jsbml/code/2442
Author: niko-rodrigue
Date: 2015-12-10 10:07:57 +0000 (Thu, 10 Dec 2015)
Log Message:
-----------
updated pom files to 1.2-SNAPSHOT
Modified Paths:
--------------
trunk/core/pom.xml
trunk/dev/maven/pom.xml
trunk/extensions/arrays/pom.xml
trunk/extensions/comp/pom.xml
trunk/extensions/distrib/pom.xml
trunk/extensions/dyn/pom.xml
trunk/extensions/fbc/pom.xml
trunk/extensions/groups/pom.xml
trunk/extensions/layout/pom.xml
trunk/extensions/multi/pom.xml
trunk/extensions/pom.xml
trunk/extensions/qual/pom.xml
trunk/extensions/render/pom.xml
trunk/extensions/req/pom.xml
trunk/extensions/spatial/pom.xml
trunk/modules/android/pom.xml
trunk/modules/celldesigner/pom.xml
trunk/modules/compare/pom.xml
trunk/modules/libSBMLcompat/pom.xml
trunk/modules/libSBMLio/pom.xml
trunk/modules/pom.xml
trunk/modules/tidy/pom.xml
trunk/pom.xml
Property Changed:
----------------
trunk/modules/tidy/
Modified: trunk/core/pom.xml
===================================================================
--- trunk/core/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/core/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.sbml.jsbml</groupId>
<artifactId>jsbml-parent</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
<!--
Modified: trunk/dev/maven/pom.xml
===================================================================
--- trunk/dev/maven/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/dev/maven/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<groupId>org.sbml.jsbml</groupId>
<artifactId>jsbml</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
Modified: trunk/extensions/arrays/pom.xml
===================================================================
--- trunk/extensions/arrays/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/arrays/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/comp/pom.xml
===================================================================
--- trunk/extensions/comp/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/comp/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/distrib/pom.xml
===================================================================
--- trunk/extensions/distrib/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/distrib/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/dyn/pom.xml
===================================================================
--- trunk/extensions/dyn/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/dyn/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/fbc/pom.xml
===================================================================
--- trunk/extensions/fbc/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/fbc/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/groups/pom.xml
===================================================================
--- trunk/extensions/groups/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/groups/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/layout/pom.xml
===================================================================
(Binary files differ)
Modified: trunk/extensions/multi/pom.xml
===================================================================
--- trunk/extensions/multi/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/multi/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/pom.xml
===================================================================
--- trunk/extensions/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -32,7 +32,7 @@
<parent>
<groupId>org.sbml.jsbml</groupId>
<artifactId>jsbml-parent</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/qual/pom.xml
===================================================================
--- trunk/extensions/qual/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/qual/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/render/pom.xml
===================================================================
--- trunk/extensions/render/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/render/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
@@ -40,7 +40,7 @@
<dependency>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>jsbml-layout</artifactId>
- <version>1.1-b1</version>
+ <version>${project.version}</version>
</dependency>
</dependencies>
Modified: trunk/extensions/req/pom.xml
===================================================================
--- trunk/extensions/req/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/req/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/extensions/spatial/pom.xml
===================================================================
--- trunk/extensions/spatial/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/extensions/spatial/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.ext</groupId>
<artifactId>ext</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Modified: trunk/modules/android/pom.xml
===================================================================
--- trunk/modules/android/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/android/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.modules</groupId>
<artifactId>modules</artifactId>
- <version>1.1-b1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
Modified: trunk/modules/celldesigner/pom.xml
===================================================================
--- trunk/modules/celldesigner/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/celldesigner/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.sbml.jsbml.modules</groupId>
<artifactId>modules</artifactId>
- <version>1.1-b1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -44,15 +44,15 @@
<dependency>
<groupId>org</groupId>
<artifactId>libsbmlj</artifactId>
- <version>3.4.1</version>
+ <version>3.4.1</version> <!-- TODO: versions are not up to date -->
</dependency>
<dependency>
<groupId>org</groupId>
- <artifactId>sbmlj</artifactId>
+ <artifactId>sbmlj</artifactId> <!-- what is sbmlj ? -->
<version>1.0.0</version>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
Modified: trunk/modules/compare/pom.xml
===================================================================
--- trunk/modules/compare/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/compare/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.sbml.jsbml.modules</groupId>
<artifactId>modules</artifactId>
- <version>1.1-b1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -51,14 +51,6 @@
<artifactId>libsbmlj</artifactId>
<version>5.0.0</version>
</dependency>
- <!--
- <dependency>
- <groupId>org.sbml.jsbml</groupId>
- <artifactId>jsbml-.8-rc1-with-dependencies</artifactId>
- <version>0.8.0</version>
- </dependency>
- -->
-
</dependencies>
</project>
Modified: trunk/modules/libSBMLcompat/pom.xml
===================================================================
--- trunk/modules/libSBMLcompat/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/libSBMLcompat/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.modules</groupId>
<artifactId>modules</artifactId>
- <version>1.1-b1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
Modified: trunk/modules/libSBMLio/pom.xml
===================================================================
--- trunk/modules/libSBMLio/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/libSBMLio/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.sbml.jsbml.modules</groupId>
<artifactId>modules</artifactId>
- <version>1.1-b1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -42,4 +42,4 @@
<version>5.4.1</version>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
Modified: trunk/modules/pom.xml
===================================================================
--- trunk/modules/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -33,7 +33,7 @@
<parent>
<groupId>org.sbml.jsbml</groupId>
<artifactId>jsbml-parent</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
Index: trunk/modules/tidy
===================================================================
--- trunk/modules/tidy 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/tidy 2015-12-10 10:07:57 UTC (rev 2442)
Property changes on: trunk/modules/tidy
___________________________________________________________________
Modified: svn:ignore
## -7,3 +7,4 ##
.apt_generated
.factorypath
.settings
+target
Modified: trunk/modules/tidy/pom.xml
===================================================================
--- trunk/modules/tidy/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/modules/tidy/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.sbml.jsbml.modules</groupId>
<artifactId>modules</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2015-12-08 13:43:58 UTC (rev 2441)
+++ trunk/pom.xml 2015-12-10 10:07:57 UTC (rev 2442)
@@ -28,7 +28,7 @@
<groupId>org.sbml.jsbml</groupId>
<artifactId>jsbml-parent</artifactId>
- <version>1.1</version>
+ <version>1.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JSBML</name>
<inceptionYear>2009</inceptionYear>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-08 13:44:02
|
Revision: 2441
http://sourceforge.net/p/jsbml/code/2441
Author: niko-rodrigue
Date: 2015-12-08 13:43:58 +0000 (Tue, 08 Dec 2015)
Log Message:
-----------
put back the escapeinside option for the listings, so that we can add some Latex code inside the exmaples as before
Modified Paths:
--------------
trunk/core/doc/user_guide/User_Guide.pdf
trunk/core/doc/user_guide/User_Guide.tex
Modified: trunk/core/doc/user_guide/User_Guide.pdf
===================================================================
--- trunk/core/doc/user_guide/User_Guide.pdf 2015-12-08 13:10:33 UTC (rev 2440)
+++ trunk/core/doc/user_guide/User_Guide.pdf 2015-12-08 13:43:58 UTC (rev 2441)
@@ -25,7 +25,7 @@
endstream
endobj
285 0 obj <<
-/Length 2690
+/Length 2691
/Filter /FlateDecode
>>
stream
@@ -34,23 +34,28 @@
Хq\x9A\xA5\xC1\xCD2\xF85\xFC\xCDdvt\xB5t\xDDE3\x95\xE8\xF0-\xFD\xD8ӵ\xA2\xEB\xD2OR\x89
W\xF4\xA3\xAF\xB8\xA4\xD7t}E\xD7\xF7t\xBD\x8A~\xBB\xB9<\x93g-P}\xB2\xDA\xDEv\xC3F\xABU\xDE\xA8y\xDD\x9C@\x80!I\x80r\xBC\xCC\xC9ĝ,w\x91(B[v\xDE`!\xC3ݭ\xD2z}0\xD9k\xC9c\xA9\x81JL1-+Ͳ\xCA\xE7\xF3)c2𢖰\x95a⏑\xD4\xCD"\\xE0>\xF0\xA6\xF6\xCA?F\xD0`\xD1\xCC\xF0\xB4\x816m#\xFE5aG!\xE2|d\xC5\xE2\xF9r\xD2
-\xEBL\x8C\xADxY\xDB/\xAC\xF3\xE6Λ\x81.\xBB %Y\xE7\xF2h\xB3SJf\xCAdq\x9A`OA)\x83\xA6UX\xF2\xB0\xDA\xD8\xC6̩v\xDFu\xB6\xDCO(\xE8\xB1B\x8F\xB4Nn-Mc\x9Dd\xA7[+ɳv\xC7Q\xF0\xFAVe\xD9nҍ\xBAr\xACc҉\xC0\xC7\xC4\xE4c\xDFն\xB1\xE7\xB5_"\x9D"\xAF\x81\xA0\xDDۥ\xFDc\xDASYV<\xA5j\xA62P\x96\xC7 \xBE\x89
-@\xB6\xF4;\x82V\xB2\xDAW\xF0\xFBVMTB'\xDAz\xCAw*.\x9EVk \xE4\xE9x\x87o\xD0G5\xCAn\xD9y-)\xA4\x90O)\x84]\xA9\xC6
-Y.\xC6\xC4] ;\xA1-\xFE\x81\xF7\xF6>V\xFE(\xA7\xD4e\xE0\xFF\xB1:;\x99RfRCK!\xA10(H\xA84\xF7'p\xD7\x80EՖ\xB1aͬ\xE1\xE7\x9F#ڎ\xF2N\xB5.\xFBv7\x99s\xDCg\x85:M:i\xD0\xC5I\xC7\xF9\xF2
-$H7\xB4\xD7]\xE4\xEA:\xEC\xF7V\xA9$ʒ0f~\x8AT\x96u\x9B\xC9x84\xB1\x92iHp\x96S1.\xCF\xB46\xFC\xFF@E\x98\x88=Pm=1`tJ\\xF0%=\xCD\x81&
-\xBB\xD1ߗ<\xC8K\xD1U\xDBm
-P\xB1\xDC:\xA7\xE00\xDEZ\xEB\xD4\xF4\x9C\xF1\x96x\xB6uv\xE2"<]\xBD\xA7\xD7f\xD0\xF9\x8ET@S\xEF\xD8b7\xE0$t}\xCB\xFF\xBB}s\xDF\xE4Y\xF7\xF0`\xB0{\xD5G\x9D\xB0+\xD4t\xB6\xB3\x8B\x9E\x8C\x95|ȳ\xF0rl\xAD\xD8R\xAF)<\x9C`\xB9\xF4\xCA)\xF5\xE1v?-\xFFzq\xF59\x912D\xE16\x94"\xEB\x84p\xF0\x92\xE6Ҽ{\xB4\x8Bv\xB5\xDA\xD7<\x86\xB4\xE5Pvٓ+a5S\x8B\x9AF\x97\x95OM\x8A\x8BD\xB9\xA8\xEA\xEA\xA8,`\xF7aYoy\xA0^\xB9\xC0\xB2\xA3#@\xA5{[\x87\x80\xAE\xFC>]#Տ\xBA-.\xDDG\xA5H{:\xBD6\xC4:\xE1\xEAa\xB1u\xC9\xC45\xB15\xB2\xA7 x\xFC\x81e\x87\x9D\x86Ǭ\xF5\x86\x94\xEE\xBDa\xE5:*\xEE\xD9='Ӿ?\xBCg$\xAB\xCD\xD0\xC9g\x9E\xC8\]\xE2G\xD9
-@-\x8E\xEF:p\xB0\xDA\xF4\xCE\xE5ph\xC4\xCC\xC6\xC3\xE83E!\xEA\xC1\xE3\xC5K\xB7\xDA;\xDAI\xDDw\xD6%zc\x92!\x88\x86\x99μ\xB2j\xEC\xD2Ir\xC3\xF3\xC0c\xDB]\xB2\xC54\xDB=\x8A\xAD<\xCE4\x9C+\xB7\xF9\x89\x92\x815\x90\x9AJ\x85\xF7x/\xC7Ik1%H)\xFE1\x99JzYH\xFF)L\xEA\x9AE\xF9\x87\x94CZfL\xB9k\xFD\\xDF+\xF4\x87yn\xAC\\x96\xDB\xC3+\xC8\xFE\xCC\xF1\xA7ןn\xE3[\xE2\xE8Ót*\x91\xC4E\x91\xA2SZ\xC4B\x98 \xCBt,\x99L\x97ׯ\xDEG>\x932\x8E\xD0e\xD7U\xC0n`\xE0\xE4I(b\x81\x94 \x81 #K3\x947S\xB4i)K\xE1\xE8\xF9\xBA]\xECqu\xAB\xADӣ\xFC4\xFCe\xFCUlP\xB6)\xC2\xE4<\xE15NX\xD8f\xEE\xEF\xF8\xB9\xA4I"e#\xC07\xDAV\x9Aǩ\x80\xCD\xEB,N\x8Cb+^F\x82BT߁\xACv\x87\xB7ݰ\x87\xD1j\x95\x837j^\xF7\xA7\xE0GH\xA0/s2q'\xCB]$\x8AЖ\x9D7X\xC8pw\xAB\xB4^L\xF6Z\xF2X\xEAB\xA0\x93CL\xCB@\xC7J\xB3\xAC\xF2\xF9|ʘ\xBC\xA8%le\x98\xF8c$5F\xB3\xB8\xBC\xA9\xBD\xF2\x8F4X43<m\xA0M\xDBH\x87M\xD8Q\x888Y\xB1x\xBE\x9C\xB4\xC2\xC4:c+^\xD6\xF6뼹\xF3f\xA0\x83\xCBnBI\x96ƹ<\xDA씒\x992Y\x9C\xA6\xD8SPʠ\xA9@F\x96\xB0\xA3<\xAC6v\x841s\xAA\xDDw\x9D-\xF7Jz\xAC\xD0#\xAD\x93[K\xD3X'\xD9\xE9\xD6J\xF2\xAC\xDDq\xBC\xBEUY\xB6\x9Bt#\x84\xAE\xEB\x98t"\xF011\xF9X\xC7w\xB5m\xEC\xC6y\xED\x97H\xA7\xC8k \xE8_@\xF7vi\xFF\x98\xF6T\x96O\xA9\x9A\xA9\x94\xA5\xC51\x88o\xA2Ѓ-\xFD\x8E\xA0\x95\xAC\xF6\xFC\xBEUF\x95Љ\xB6\x9E\xA7\xD5\xC8y:\xDE\xE1\xF4Q\x8D\xB2[v@
+j5:T\x86U\xDF#Y\xD6S\x90B
+)\xE4S
+a\x97F\xAA\xB1B\x96\x8B1qW\xC2Nh\x8B?Dཽ\x8F\x95?\xCA)u\xF8\xAC\xCEN\xA6\x94\x99\xD4P\xC7R\x88D(
+*\xCD\xFD ܵ`QA\xB5elEX3k\xF8\xF9\xE7Ȅ\xB6\xA3\xBCS\xAD˾\xDDM\xE6\xF7Y\xA1N\x93N\x9A\xC4tq\xD2q\xBE|\x85 \xD2
+\xEDu\xB9\xBA\xFB\xBDU*\x89\xB2$\x8Cق\x9F"\x95\x85e\xDDu\xEDf2@d\x9C<\x96Ptz\xFBi\xEF?hU\xFDI\x90\xF4\x94?%%\xDD\xE3<\xA7\xC0\x9F\xED\x90ܮ\\xF4\xFF)\xECZ\xE0\xF2\xF9V\xA5 gX\xEAj&\x82&\x89\x8DʞNp Xưd&`-\xB4\cFah\xFC?%\xF8!\x8Dc\x94\xD3\xF9Q%\xE2t}\xD5\xE3\xFF}O\x99\xBCݔ\x8EW\xE5\xEA6I$\xF3L@\\xF9\xF1\xAF\xD2\xC1 \xB1hNa
+i\x82\xF6\xAE \xBDC\x9D\xC4͛\\x9Cr\xE1P\xDES\xE8>+Ԇ8\x8E\xBA~̕\xBD\xBF\xB18\xF8|\x90\xA0x\xB9\xE7Q\xB3\xF5\xAB:>x\xC7\xE6\x87.kI\xDB \xFD\xF4\xAF\xA983pf\xD3\xC7;^~\x85\xFA\x88\xDFG\xEC\xD8ao\xB0\xF5M刽gs\xE2\xD2}u.\xBFDYJ}\xDCh6\xF9\x8CYB\xEC]\xF8\xBBPF\xDF{ʴ\x8D=\xC2l\xCFP\xEB\xC0\xB2/};\xD0\xEC\xB0\x86T\x95\xA8\xF3\xD8%\x8E\xD8Eۃ\xA5\xFDQ\xB0J\xEE\xF9\x9E\xFBS:S\xD8\xD4}¾^T:{\xD8v\x86\x8A\xD4D\xAA\xAA\xCA\xC7\xEE\xF7\xBD=\x8DQ\xA8&p0\xBA#\x94\xB9\xCD\xE24\x9BkW\xFF\xAE\\x92\xF2!w
+\x89\xEBWQ\xE2
+4\xEE\xDC\xC7f g\xD6kY\x83\xFEp\x84\x88O\xD2-\xBA#s\xF0E\xB8\xFC\x81S\xBF\xE7G\xC7C\x8E\x94t<i\xD7\xFC\x90*j\x89\xA9\xFE\x97\xEAg\xB6yE\x84&\x80\xF7\xE5ple\x82\xC7+\xA6\x89x\x9F\x84\xFFv\x96\x89p6/;\xBFl\xC9kV.p\xEB=\xCF\xF7(\xE3}Ny\xD7²r\xE3֓\xAC/h/\xB7\x944\xE9^\xD8 t\x84\xD7\xE2\x84;P\x9E\xA1ts\xB5\xD6:#\xFEZ_\xC6\xDCo\xC9\xCB\xC3\xBBÙ\xECk\xAD5\xA4Wr/\xA0X-ʚ\xC7P\xE5\xE0T\x87\xB4*\xB0\xE7+\xB4f\xAB\xA63\xB5hK\xF0x
+t\xB9w\xE7gs}H8ܔC\x9DvP\x97\xFDx\x8A'\xBE7\xC1Wg3t\x80I\xEE\xE8tW\xAD\x89?dڌ\x88k\xA9a\xACd\x9C\xE5T\x8C\xB0\xA1\xCB3\xAD
+\xFF?P&bT[O\x82\x97|\xC9DOE3D\xA0IîEF\xF4\xF7%\xF2Rt\xD5v[\xD4C,\xB7\xCE)8\x8C\xB7\xD6:5=\xE7E\xBC%\x9Em\x9D\x9D\xB8OW\xEF\xE9\xB54E>\x82#\xD0\xD4;\xB6\xD8
+x\x85G \x9DF\xDF\xF2\xFFn_\xF5\xE5\xDC7y\xD6=<\xEC^\xF5Q'\xEC
+5\x9D\xED\xEC\xA2'c%\xF2,\xBC\x9BC+\xB6\xD4kE
+'\xD8A.\xBDrJ=E\xB8\xDD\x80\xC0Ch\x80LX\xE2\x8B7\xCCm\xA7\xAB\x98ؑԅ\xC1T\xEERp\xE8\xE3\xCAIq۶\xB3#\x93\xDEa\xDA\xE8YZ\xB7\xF7\x84\xDBr\xC4\xF6l\xB4\x87\xA7+\x93\xBAfQ\xFE!吖\xD9S\xEEZ?\xD7\xF7
+\xFDa\x9E+\x97\xE5\xF60\xC0\x81\xE2\x899\xA3\xC7m\xB6#\xF3\xC6\x98$\xB7\xA7\x91"\xD5\x87\xCD\xFE(\xA3\x8C\xDA\xC3\xCBQ&\x89G/I=i]9\xA2\xAFh\x81>\x8E\xDCC\xBB\xA3\xFD\xBB:\xD7U\x94\xE2\x85\x83\xDF\xF68D\x89J\xA3\x98y\x89/\xA8\xDE\xF1\xFD\xD27\xF1\xAF\xB0\xE13\xA6\xDB\xFC\x86\xA3\xC1h8~|)B<>q]>
+̻\xA1\xCB'\xD7vQ\xFEf\x94\xE0w\x9F\xBF\xB6\x81\\xFE4~\xF2\xF1-~\x960Дg\x99\xCA\xF9\xC5ؠ\x8Cgq\xD7\xF7\xDBݼ\xA9\xE3v\xB7\xBE\xB8nWX\xED\xE2|uq\x{197A53}\xD6_\xA4\x90\xF5L\xEE\xB5\xC4\xEE\x95[ab\xAD\xDD\xC9!M\xCF\xD9\xFF\xB2\xEA\xFBn\xF8DBn[\x8F_g|+\xB2\x88\xB5\xD2_\x83\x8A\xEE\xBE\xE9.~\xC7@\xF2Tb\x90c\x84S\x8E\xFA/\xC1\xC1\xA8. p\xF0#\x9D\x8F \xA7&h\xEB\x8C\xD0\xFC\xF5:Yh\xFE\x84{\xB8}\xD8\xFE\xC1ŻF\xAF\xDBg\xCE\xFC\xD2uΜ\xBFI-
endstream
endobj
283 0 obj <<
@@ -13568,37 +13573,35 @@
endstream
endobj
672 0 obj <<
-/Length 4569
+/Length 4559
/Filter /FlateDecode
>>
stream
-x\xDA\xED]m\x8F\xDB8\x92\xFE\x9E_\xE1\x8F2\xD3")\x91\xD2N`2\xB737\xC1̾L\xB2_nԶܭ\x89mym\xB9;\xBDX\xDCo\xBF*\xBE\x89rw\xA7%\x99>\x87 \x88\x9B\xA2\xA8b\xB1XO\xB1H\xA5\x98\xB0t\xBB\x9F\xFD\xB5w\xA1~~\xFB\xE9E\xAC\x9F\xD8\xFF\xAA@{ w1\xFF\x91r1\x91$\x8Bc9y\xBF\x9A\xF0\&҉L"\xA9\x98\xBC_N~\x8Fޕ\x8B\xA6\xAA\xB7\xD3\x93YD %ә`,\xFA\xEBUST\xDBj{\xADoۥN.\xEF\xED\xBB7\xBF\xFE2\xFD\xF8\xFEmOn\xE3.R
-?R\xEA2\x9D(3\xFF1ˁ_\xCE\xE1\xE0w\xC6'"\x9F\xCCR(I5\xBB\xC0M\xC5c\xD2/\xDCߞ\xFBְo\x82\xFC.Ⱦ\xA6\x88N\xF0\xDC\xD2 \xC8\xF9\xF3\xFB\xFF\x84\xEC\xFEщd~hNd\xCA&\x8B\xCD\xCCM\x9AQ:\xE1\x84g`\xBC\xCA\xC9\xEA\xC5\xDFG\xD6\xD5\xCBX*V\xF0\x96\xFA9\xF6X\x9E\xFB\xFE\xFE1\x9E,\xE1\xDE[\xB4\xFDy6\xB9S%7\xF0_\xB3\xBB\x9E\xBCnO\xC8ɓ/=\xAE\x8E>\x9E\x92n<O \x94\xC4L<B"\xE5\xEC>?\x83\x89\x94C\xF3c:\\xE3\xC4\xFF\xB0;\xE2L\xA0:IcBaD3
-\x83\xC1,'"I\x9C\xBE%\xAB\xFBّ}\xBA\x81\xBA\xD3\xC0>\xBA3\x90\xE6\xF94\xEA\xD0m\xBE\xED\xFB3\xE0\x94$\xB0`[\xD5 (\xD9\xF1D{\xF9N\x98\xD6\xFFU\x81\xF6\xD2zz \x92\x84\xA4\xCB\xD0q\x89%\xF8y\x94\x9386\x8E\xEDm\x81\x98\x9Cd\xE0x\xC9\x89Q\xE8\xE06\xD6d^\xED\xCB]}\xA8\x9Az_\x95\x87ךf\xE9\x9FX\x988&\x89H\x82\xA6%0Ci\xF6L\xB7\xF9!X\xB0N\xB7CJv<\xD1&\x86\x91"\x95Z\xD3\xD9X\xC0\xB0\x94)\xE6\xFE<\xB8\x88<&\x8D\x96\x96j0\xB0%\xD9+ݶ\x84J`\xA1Z\xA5)\xD5\xD14/\x87\x91s\x83\x8BVp>'<\x97:w8\xA9\x96\xAF˫j\x86py5\x87\x8B\xF3\xC0\x92QB\x84\xA1\xD1Ғ
-\x97\xA14\xFB\xE0\xA5\xDB\xFC\x90\x80 ,X\xA7\xDD!%;\x9E\xE81\x93%$\xB9V\xF6$f\xB6Ŧ|\xFD\xFE\xA6\x9C\xCER\x96F~\xF3\xB3N\xB4CΫ\xB9*r\x96$%)?\xF2\xB4d\xC3ai(\xCD>X\xEA6?$\x96֩}HɎ'zA,Ʉ$\xB8F\x8C Ha\xE9\xB8_\xBF\xBEi\x9Aݟ\xE6\xF3\xBB\xBB;c)\xE4\xF8i\xFE?\x9B\xE2\xB6\xDC\xCE7LMX\xEE<<\x81eY\xF0\x85\x8Fl8<
+x\xDA\xED]_\x93\xDB6\x92\xF7\xA7\xD0#UeA@d\xE2rU\x9C\xDDd\xE3Jr\xB9\xD8\xF7r\x89\xEB\x8A#Q3\x8C%Q+Q3\x9E{\xD8Ͼ\xDD\xF8GP3\xE3!)\xE8\xCAu\xE5rY\x82`\xA3\xD1\xE8_\xA34Ș\xB0t\xBB\x9F\xFD\xB5w\xA1~~\xFF\xF1E\xAC\x9F\xD8\xFF\xAA@{ w1\xFF\x81r1\x91$\x8Bc9y\xBF\x9A\xF0\&҉L"\xA9\x98\xBC_N\xFE\x88ޕ\x8B\xA6\xAA\xB7\xD3\x93YD %ә`,\x{23EB9A8}\xB6\xD5\xF6Z\xDF(\xB6K\x9D8\\xDE\xDBwo~\xF9y\xFA\xE1\xFD۞\xDC\xC6\\xA4~\xA4\xD4e:9Pf\xFEC\x96\xBF\x9C\xC3#\xC0\xEF\x8C3ND>\x99\xA5P\x92jv\x81=\x9A\x8A\xC7\xFE\xA4\x9F\xB9'\xBE>\xF7\xB5a_\xF9\xFF\\x90}M\x9D\xE0?\xB8\xA5\x90\xF3\xF7\xF7/\xFE \xD91\xFC\xA3\xC9\xFCМȔM\x9B\x98\x9B4\xA3t\xC2 \xCF\xC0x\x95\x93Ջ\xFFYW/c\xA9X\xC1[\xEA\xE4t\xD8cy\xEE3\xF8LJx\xB2\x84{o\xD1\xF6\xE7\xD9\xE4N\x95\xDC\xC0\xCD\xEEz\xF2\xB8=m c$O>\xF7\xB8~8~\xF8xJ\xB8\xF1<\x81DP3\xF1\x89\x94\xB0\xFB\xFC&R͏\xE9p1\x8C\xFF\xC3n\xEC\x883\x81\xEA$\x8D \x85\xCDh4\xB3\x9C\x88$q\xFA2\x94\xAC\xEEgG\xF6\xE9\xEAjL\xFB\xE8\xCE@\x9A\x9F\xE5ӨC\xB7\xF9\xB6\xEF\xCF\x80S\x92\xC0\x82mU'\xA0d\xC7\xED\xE5;aZ\xFFW\xDAK\xEB\xE9\x81H\x92f,C\xC7Id$\x96\xE0\xE7QN\xE2\xD88N\xB4\xB7ybr\x92\x81\xE3%$F\xA1\x80\xDBX\x93y\xB5/w\xF5\xA1j\xEA}U^k\x9A=\xA4j``\xE2\x98$" \x98\x96l8\xC0\xA5\xD90\xDD\xE6\x87L`\xC1:\xDD)\xD9\xF1D/\x98F\x8ATjMgc\xC3R"\xA4x\x98\xFB\xF3\xE0"\xF2\x98d,4ZZ\xAA\xC1\xC02\x94d\xACt\xDB*\x81\x85j\x95:\xA4TGӼND\xCE .Z\xC1\xF9X\x9C\xF0\\xEA\xDC\xE1\xA4Z\xBE.\xAF\xAA\xC2\xE5\xD5.\xCEKF \x86FKK6\\x86\xD2샗n\xF3C&\xB0`\x9Dv\x87\x94\xECx\xA2\xC4L\x96\x90X\xE4Zٓ@\x98\xD9\x9B\xF2\xF5\xFB\x9Br:KY\xFD\xFD\xCDO:\xD19\xAF\xE6\xAA\xC8yX\x92\x94\xA4<\xFC\xC8Ӓ
+\x87\xA5\xA14\xFB`\xA9\xDB\xFC\x90X
+,X\xA7\xF6!%;\x9E\xE8\xB1$\x92\xE01\x82
+\x84\xA5\xE3~\xFD\xFA\xA6iv\xDF\xCC\xE7www\xC6"R,\xC8\xF1\xE3\xFC_\x9B\xE2\xB6\xDC\xCE7LMX\xEE<<\x81eY\xF0\x85\x8Fl8<
\xA5\xD9O\xDD\xE6\x87\xC4S`\xC1:\xD5)\xD9\xF1D/\x88'\x91iwXD <\xED\xCBuY\xCA\xC3\xEBW嶸Z\x97\xCB\xD7\xCD\xFEX\xBE\x9A۫WsW\xE2<8\xA5\xA0\xABI\xF0e\x8Fl88
\xA5\xD9N\xDD懄S`\xC1:\xCD)\xD9\xF1D/\xA74%\x94g2\xD02\xC2<\xD8:B \xAD\xFF-\xD9p\xFA?\x94f\xFD\xEF6?\xA4\xFE\xACSՐ\x92O\xF4\xFA\x9F\xAA
-\x84\xC5&\x82\x8Dƣ\x87\x8C\x8C\xE4\x80&;d,\xCB]\xB9]\x96\xDB\xC5\xF9#\xE5D\x88<8bZ\xB2\xE13\x94f\xC4t\x9B1\x81\xEB\x94;\xA4d\xC7\xBD b\xD0=\xCC ft0-Fb\xF1\x9F\xF3u\x9Fg_~\xFE\x99a=(<"\xEC6Z(\x89P\xB2\x95&3\x9AyG\xAE\xA7$C]N\xC9r\xE3\xC9\xFDZLY\xDDNY\x95\xE6\xE0u\xB5=4{<\xC7\xD5q\xEC\x83\xCEnjs\xFCz\xB9\xECf\xDC#\x85\xFA\xB8\xD7W\xBBzC>o\xD6dD\xD0Q\x91
-uК\x8A\x98P\xB85c \x893\xB9\xF77S\x95P\xF0\xA9<<L&Q\x95#p\xAF\x86\xA3$`\xF2\xA5\xEF\xDDUk\xCC3%\xD5\xFD-\xDC_\xAC\x8F\x98\\x96:\xFF\xBC8@>Мaz\xE9{l\x96\xA9r7U\x84ht<\x98\x8A}ڿ`\x9A\xB7%\x8Bŧ\xE2\xF9\xBA9 e2\x8F~Q|2\xD56؞ꠟA\xFEoJ\xBF\xBE\xCAT\xB3\xADMc\xB6\xBA\xF9\xF0\xB344\x9BXx\xAD(TI\xDE\xE5\xAC\xF1\xC4vʻ\x9A2\xFD]ݑ\xE7\xB9\xE1$\xA5\x82d)Hҿ)\xE0u\xEA\x9E)\x90\x93\xBEúT[sS\xFFٖw:Q[\xB1ۆiq\xAB\x{132F1D}\x82֭\xEB]\xB9|\xA9\xB3\xEE\xA7B?r\xF4\xE8Wk\xD5]\x97\x8Dי\xB6\x9BU\xD5\xD0\xFA\xE8\xF2S\xC5Uq\xEB\xBA\xFD\xBAu\xAD\xA9m\xB0Q\xBA?\x84η7\x8E\x8BM{\xA1~m\xF9\xFE\xF3\x8AW\xA5\xF5p\xB1\xB3Z\xB3\xD1\xF5|\x88cfu\x84
-=\xAB-9\xC9s\xF2\xCF@o5\xC5\xF7Ҙ\x86\xF6\xDBF皺1sW->\xE9L\xD72\x8D9\xBBU\xFA\xB94\x8F\x99g\xAA\xAE\xF6\x83f\x82\xD0y\x92w\x84\x8E\xF1q\xE8d\xF5\xB0j@u\xF08\xB8)7\xFA\xC2\xEFZ|\xECj\xAA:P\xA5\xEB\xAD_\x81\xD5\xC2S\c\x8A\x98D\xEEQ\x97\x98I\xF3\xC0\xDE\xF2}\xC0zҵA\x9A*R4cfz\xBD\xCFA\xA2\xB7 \xB8ש\xD70\xB3\xE5"3\xAA\xAE\xA3nՊh\xBD\xBF\x9E\xBF\xABW\xCD]\xB1/\xE7\xEA
-\xF3e\xBD8\xCC\xC5\xDC\xFF\xFE\xA1ޮ\xAA\xEB\xE3\xBEh\x86\xCC"O\xACX'\xD4zJI\xC0n\xC7Ʉ\xC6$\x89\xE3\\x99D[j\xC6R\xB0\xE0\xC6 !\x94$ \xB18\x8E#u߾C%\xA8\x9B 텹U\xE8\xAB)\x8D\xA3\x9B\xEA\xB6\xD4uxA \xADX(\x91\xFC\xA0DG\xB2)Ѵ6X uן\x93\xB7\xACڎ\xAA\xAE\x8De\xAE\x8D}X\xD50\xC8)\xDCDf\x994\xF6N(C\xAC\xCAo\xAAuaJ6u\xBDS\xD5\xDB\xEF\xE1\xE2\xB7/Wk\x{133D70}\x85\xB1\xE5\xE7)e V5\xAD-\xBE\xB1,\xA8\xB6-g\xBBv\x8C\xB97*\xA7\xCD>\xA7Pe\xEEhK|\xB5G!J\x93+c+\x84\xC5&\x82\x8Dƣ\x87\x8C\x8C\xE4\x80&;d,\xCB]\xB9]\x96\xDB\xC5\xF9#\xE5D\x88<8bZ\xB2\xE13\x94f\xC4t\x9B1\x81\xEB\x94;\xA4d\xC7\xBD b\xD0=\xCC ft0+Fb\xF1+u\xB2\x9A\x8A\x98P\xB85c \x893\xB9\xF77S\x95P\xF0\xA9\xE6V\x98L\xA2*F\xE0^G+H\xC0lK\xAB֘gJ\xAA\xFB[\xB8\xBFX1\xB9,u\xFE_xq\x80|\xA09\xC3\xF4\xD25&\xF6\xD8,S\xE5n\xAA\xD1\xE8x0\xFB\xB4\xC64oK\x8B\x8F\xC55\xF2ts<\xCAd\xFD\xAC8\xF8h\xAAm\xB0=\xD5A?\x83\xFCߔ~}\x95\xA9f[\x9B\xC6lu\xF3\xE1gih6\xB1\xF0ZQ>\xA8\x92\xBC\xCBY\xE3\x89\xED\x843\x95w5e\xFA\xBA
+\xBA#\xCFs\xC2IJ\xC9R\x90\xFE\xA4S\xC03\xEA\x98=<S /&}\x87u\xA9:\xB6\xE6\xA6\xFE\xB3-\xEFt\xA2\xB6b\xB7
+\xD3\xE2V\xE9ey;\xAD[r\xF9Rg\xDDO\x85~\xE4\xE8ѯ֪5"\xBA.\xAF3m7\xAB"\xAA\xA1\xF5\xD1姊\xAB\xE2\xD6u\xFBu+\xEAZS\xDB`\xA3t\x9Doo7\x9A\xF6B7\xFC\xDA\xF2/\xFC\xE7\xAFJ\xEB\xE1bg\xB5f\xA3\xEB\xF93\x8E\x99\xD56\xF4\xAC\xC4MN+\xE4$\xCF gF\xC8?\xBD\xD5_,`Hc\xDAWl\x9Dk\xEA\xC6\xCC]\xB5\xF8\xA83]T\xC84\xE6\xEC
+Ta\xE8\xE7\xD2<f\x9E\xA9\xBA\xDA\x9A B\xE7I\xDE:\xC4ǡ\x93\xD5ê\xD5\xC1\xE3\xE0\xA6\xDC\xE8\xBFk\xEA@\x95\xAE\xB7~V[Lq\x8D](b.\xB9G]b&\xCD{\xCB\xF7\xEBUH\xD7i\xAATH\xD1h\x8C\x99\xE9\xF5\x89ނ\xE0j\\xA7^/\xC0T\x96\x8B̨\xBA\xB3UK\xA0\xF5\xFEz\xFE\xAE^5wž\x9C\xABWJ̗\xF5\xE20\xFF\x83n\xFF\xE7\xFBz\xBB\xAA\xAE\x8F\xFB\xA22\x8B<\xB1v`H\x9CP\xEB(%\xBB'\x93$\x8Esem\xA9K\xC1\x82'\x84P\x92\x80\xC4\xE28\x8ET\x98}\xFB\xDE\x95<\xA0n\x82\xB4\xE6V\xA1\xAF\xA64\x8En\xAA\xDBRW\xD4\xE1-\x80\xB4b\xA1DR\xF0\x83\xBA\xA6D\xD3\xDA`\x81\xD4].Lj;\xAA\xBA2X4\x96\xB96\xF6aU\xC0 \xA7p\x99e\xD2\xD8;\xA1\xB1*\xBF\xA9օ)\xD9\xD4-\xF4nLUo\xBF\x83\x8B\xDF?_\xAD\xD1\xCF\xD6\xC2\xC62\x94\x9F\xA6\x949$Xմ\xB6\xF8Ʋ\xA0ڶ\x9C\xED\xDA1\xE6\xDET\xA8\x9C6\xFB\x9CB\x95\xB9\xA3-\xF1\xD5\x85\(M\xAE\x8C\x80\x8C\x97\x8F+ \xBE\x8D.\xE8\xD7\xEB"1h-]ί\xE4* \xF2}\x8C\x9DY\xFE0\xE5@\xC9^\xB7\xD4\xFE\xE8m\x9D%L$Z\x9C\xA4+]\xD6{\xC9\xEF\xA4$CNvi}0\xD2.\xAC5u\x8D2\xC6\xC9aOw\x90\xD7\xED\xB1 \\xB0X\xD5tN\xC5V\xFD\xEF\x9F~3\x965Zuצh\x94\xD2=T$\x9Ee`O
+ſ)ո\xB3\x98V\xDAZ\xA7\x8E\xB3\xDAm\xD9{M\xD7\xE1yni\xB4\xA9
\xE1jQoQ'\xCAmUn\x8F?3\xE29\xD7\xE7\xA8\xEDHa}\xAD\xA3\xE5f\x87\xC2\xC21\xBFk \xD3'$\xA7}\xAF\xED\xA9Se,\xEA\xA2uV\x80\xB2\xD3\xE5rom\xFB\xA6\xBCs\xFE\xA8r]f,K\xAC\xFDD\x8C|\xC5ܸ1\xCA\xFBh<\xBD]\xE9\xF4qk\xD0ʹc\x89ג\xC7t@Xm\xF6\xDD@\xF0O6\x9AV\xDD
-NV\xF5z\xA9[\x91\x98ַ\xE6\xCA\x9A+KulJs\x85GҬq\xC0.i\xEC\xF3>k8\xC4X\xE4\x9BTA\xAEV\x83C\xE5\xA1\xEF\xB4\xFC\xBA=\xCB\xC1\xAE7\x810f\xC74\xF5\xA4(\x92sㆨڵ.\x81\x95-\xEEu\xE2\xAA\xD4?-\xCDE\xB7\x9D\xFDc\x8B:\xE2\xE2^\xAEC\xEB\xE3w\xBA\xBBZu\xE9FG\xEB$\x99\xC6\xD4\xFE\x9CGKk\xB7\xDBO%\x8C(\x8B\x9B\x8E\xCB\xE9 \xA5㛵f\xD2\xF9Ev\x9A\x9E\xB5Nz\x96@\xCF&\xE8T]\xF0U8վ\x9C\x9D췓x\x98@\x96\xAA\x8B\xBDAR\xBFJ
-\xA7\x9B}YϹ8|2\xAC^48\x9A\xA9\xF7\xF7[\x93\xD8Y\xBFf\xCA\xE3\xE8\xB6Zvj\xD4E\x9C\xA9\xB5E5\xF1\xDE0iq\x86-VF\x87ɩ\x9B\xE1w%\xA7\xA38\xAF'\x8D\xEA\xFD\xC3e=\xEC̳\xF5\xAAc\xCD\xEDؕx\xB8`0\xB7\x92\xA6\x8F;s\xCD\xEA\x9F\xC1\xD7t\xDD\xDA8`4\x94TrH\x9B\xE1*;Q\x86\xDCj6\xB5\xE9\xE2\xB3e\xEBd\xC6k\xC8"\xADN\x992PVkCA7CF7\xD6G\xC1L\xB7\x91?m3\xCF&\xB6\xD3CHZ/\x92\xED\xE49X\xB5\xAE@v\xB2\x93\xC1tč\xCAy;\xA2\x83
-9q\xD58\x95\x84R,3\xBD\xF3\xD0\xA7\xDA?\xED\xCC\xFC\xA9\xF7\xBA8\x8F\xD1*\xE4_ﺸ\xC7\xE0\xA8uqs\x92yƺx
-ϯ\x8B\x9F\xC1\x86],\x89\x8B\xBD*\x8D\xE5ƍ໌\xD9`ی\x83i\xF6\xD8g<i~\xC0\x8D\xC6Ђ\xB5\xAAT\xB2\xE3\x89^\xEE@
-\xCB=\x9E\x9F\xF5\xAA4I\xCA\xEC\xBA\xE2b\xA9_ơ]\xFE\x87q2gmӳ\x8C\xC2\xDF\xE0\xC1\x9E\xD9pJ\xB3\x82\xBA\xCD\x89\xA0\xC0\x82u\xCAR\xB2\xE3\x89^A\x9E&g\xBE;\xAD\x83 \xB5\x93*oE/t\xF6uJ\x98\xC4\xE8\x98\xE4\xEBuJ<G9%\xF8<xg8%=(<\xC1\x86Sᡒ\xB8\xE0f=\x85A\x80 0\xAE\xA0\xD297\xBB\xE0?(\xDD;y\xE9\xB9J\x9A5tH\xC1\xA4\xEC;\xB3?\xAF\x90 U\xE2\xBCW\xA1֥}szin\xBD)\xE6\xC1\xC3M\xA9\xD6]0y\xBFm\x8A\xCFgl\xE13\xA6\x98\xEFl\xE1\xFF\x99\xF0~DT\x99\xC9\xD9㻾\xB3 \xDB\xD4vb\x87\x932C\xC7\xCE)\xCA\xF5j֔j\xE6f&\x9E\xD5v\xE1v엥]í\xECJ\xE7\x8D\xCEh\xE7\xCA4z\xF9p\xD6\xBD\xEAv\xDF\xF7\xD0&\xCD\xF6\xB9J\xF6p\xAAg\xA6\xD2].\xD5T{m玱\xE1\xC6ֳۚ\xFF\x8D\xDE^\xEF?\xE9\x81i\xE8?\xFD\x8A\xEDK\xCB\xE08\xFB\xC2)\x98\xE4\xFC\xFB\xF2<\x85\xF6e<ξ\x95\xC4\xE5&=4#\x99~\xBC\xC0#\xCEeJ\xB3\x8F\xCB\xD6m~H\x97-\xB0`\x9Dꄔ\xECx\xA2t\xD9%R\x84\x9C\xF38\x8FM
-
-\xBD\xCD)E\xF9\x8A\xAD\xA9\xE3o\x9C1\xA5\xF8&\x9F\xB3\x8C\xE9\xF3z\xD3\xF1l\xB4\xCA;L\x97\xACd9I9\xE80nP\xC7浚\xBF\x81/\xE0<\xB5\xC6\xE8\xB7Uc\xB2@+\x8D\xB6\xDB\xD7S\x9A\xAA\x85\xF3\xE5\xA9;\xA7|\xBCў\xEEx\xE1&4%\xC2w\xE2\xB2\xEC\x8F\xD3\o2\x98\x88\xC1\xFBi\x96j7H\xCFLx\xEEP\x86\x81hvM\xDE\xE5\xC8v\xE5y\xD4˹Roa\x88\x8E\x89\xCFiw\xEA%\xEE\x83#
-\xF55\xEB\xF9H\xB5M\xD0F-\xCAn\xA4O7\xD6E\xD1P\xBB\xA9zM\xFBv2r\xEE\xD2\xD2\xDB\xD2-lۭ\xE9\xFB\x90\xC2\xDB5\x90\xB8s\xFC\xA8[&\xB0\xBA\xC1>\x88\x9Fd\x99\xFCz\xAD\x88\xC7\xE0(3BE\xAE\xAC\xF6x3҃\xC2\xF3f\xE46\xAC,\x89\x8B\xF9d4\x84%\xC1\x8F\x87yd\x83\xF9d\x83i\xF6\xF0\xC9N\x9A\xD0'-X\xA7:!%;\x9E\xE8\xE5|2\x9A\xE6jK\xFDN\xD9ž\xBF9\xC5\xA9\xF8\x8A\xCDi\xCB\xE08s\x9Ar\xA7g\x99\xD3\xE7)\xF40\xA7\xE3\xD9h\xD5w\xA0$.閁l\x81\xAF M8v5\xF8\x87}Y4\xED\xA7\x8D\x93\x85\xDB\xCE\xCA_\x91v;\xB2!n׃\x90\xED8V\x95\xCF8\x83ֳ6f;\xB3mv\xC6!\xE5^ \x88O\xEB]\xBDLt\xA3\xB7sF\xE28;
-\xDE6Q6$.kW\xC4$\x86ZX\x87\xAEXܴ\xDEX\xAD\xAC\xAFT8\x88\xFD\xA3u\xF6\xD0'۹\xA5\xB0\xCCE+\x9C\xFAn6\xCEA:\xF7Q\xC7@\xB4\x81\xB5e'\xF02]nY\xE9\x92,\xBA6լTT\x88;t\xE1\xFB\x8D2z7Ř\xC3+\x8C\xB9\xB5\x81I\xFA\xBC\xB7\xA9C[\x99\xE6\x96\xF7\x91Gi\xCC +鈛\xF1aq\xB3\xB6\xE7R\x8A\xEC\xD0\xFAx6\xA2\xC22O.2\xE0Ϟֱ!\xA8\x85z\xF3;\xCE,+NV\xF5z\xA9[\x91\x98ַ\xE6\xCA\x9A+KulJs\x85gЬq\xC0.i\xEC\xF3>k8\xC4X\xE4\x9B7RA\xAEV\x83C\xE5\xA1o\xB5\xFC\xBA=\xCB\xC1\xAE7\x810f\xC74\xF5\xA4(\x92sㆨڵ.\x81\x95-\xEEu\xE2\xAA\xD4\xFF\xB2O\xAC\xAC=\xE1\xE6P\x861\xDD:\xD4<j6\xD6sTos\xE8\x90\xC7\xD7uш\xAF \x98,3ѯSH\x97\x9F\xB0\x81/\xBB=\x84-\xF3{\x9Ak\xEFRw3~+ϯ\x8B\x9F\xC1\x86],\x89\x8B\xBD\x8D\xE5ƍ໌\xD9`ی\x83i\xF6\xD8g<i~\xC0\x8D\xC6Ђ\xB5\xAAT\xB2\xE3\x89^\xEE
+\xCB=\x9E\x9F\xF5n4I\xCA\xEC\xBA\xE2b\xA9߾\xA1]~h\xEAY\xFB\xF2,\xA3\xF07x8\xA7G6d\x86\xD2\xEC\x99n\xF3CB&\xB0`\x9Dv\x87\x94\xECx\xA2\x84L\x86\xA1\xA5əoG\xEB@Fm\xBB\xA4\xCA=\xD1+\x9B}\xBD&1&\xF9r\xBD\x8F\xC1Q^>.\xC0^H
+\xCF{!g\xB0\xE1Tx\xA8$.\xB8;O\xC1\xEA3\xC6T:\xE7f\xDB\xFB{\xA5{'\xAF5WI\xB3h)\x98\x85}k6\xE4\xF5\x8A\xA4J\x9C\x88\xE1\xB2Ӻ\xB4\xEFF/ͭ7\xC5\xC1<x\xB8)\xD5B&\xEF\xB7M\xF1\xE9\x8C={\xC6\xF3\x9D=\xFB_\x91 o\xA5GD\x95\x99\x8D=\xBE\xCD{0\xBB\xAEMmgr8\xF3wp\xEC$\xA2\\xAFfM\xA9\xA6jf\xA6Ymn\x8B~Y\xDAE\xDB\xCA.m\xDE\xE8\x8CvrL\xA3\x97\x97]\xEDƧڜn7zm\xD2엫\xB4a\xE7vf\xEE\xDC\xE5Rͭ\xD7v\xB2n\xBC\xBDh=\xDD\xDF\xE8\xFD\xF4\xFE\xB3\x98\x87\x81\xFE\xD3/ؾ\xB4\x8E\xB3/\x9C\x82I\xCEϱ/\xCFS\xE8a_Ƴ\xE1\xEC\xCBPI\n\x96C3\x92\x89\xE0<\xB2\xE1\\xB6\xA14\xFB\xB8l\xDD\xE6\x87t\xD9֩NHɎ'zA\x97\x8DQ"E\xC8I\x8E\xF3\xD8\xD4\xD0\xD0ۜRT\x91/ؚ:\xFE\xC6S\x8A\xEF\xEA9˘>O\xA1\x871\xCFF\xAB\xBC\xC3q\xC9HJ\x96\x93\x94\x83\xE3\x8Etl^\x9C\xF9;\xF8\xCESklD\xCEq[5&\xB4\xD2\xF8`\xBB}=\xA5\xA9Z)_\x9E\xBAs\xCA\xC7\xED\x89\xE1\xF6\x80_B3P"|!\xAE\xC3\xFE0\xCD\xF5\xAE\x82 \xBC\x9Ff\xA9v\x83\xA4\xF1̄\xE7eyf\xE1m\x8El\x97\xFA\x97G\xBD~+\xF5>\xC6䘀\x9Cvk^\xE2\xC67\xD2P\xDF뱞\x8FT\xFBm\x98\xA2\xEC\x86\xF6t\x83[
+\xB5}\xAA\xF7̴o'#\xE7\xEE!-\xBD\x92-\xDDJ\xB6ݫ\x90\xBE)\xBCm\x89[ŏ\xBAe\xAB쓁\xF8I\x96\xC9/x\x8E2#T\xE4\xCAj\x8F7#=(<oF\xCE`Ú\x91\xC1\x92\xB8\x98OFSAX\xFC<\x98G6\x98O6\x98f\x9F\xEC\xA4\xF9}\xB2Ђu\xAAR\xB2\xE3\x89^\xCE'\xA3i\xAE\xF6\xD0/\xE1\x94\xFDU\xEC\xFB\x9BS<\xA1\x90\x8A/\xB6\x8E3\xA7)'qz\x969}\x9EBs:\x9E\x8DV}J\xE2\x92n\xC8\xF8\x9AЄaW\x83\xBFߗE\xD3~,\xD08Y\xB8Ϭ\xFCi\xF7\xBF\xD1!\xE2v=\x88юcU\xF9\x8C3h=k\x83\xB4\xD3A\xDAf+R\xEE\x81\xF8\xB4>\xA2\xF1\xD0\xD5\xCBD7\;g$\x8E\xB3\xD3hm\xE6ac\xE0\xB2vELbl\x85u\xE8\x8A\xC5M\xEB\x8D\xD5\xFA\xC1\xFAJ\xC5د-Zg}\xB2\x9D[
+\xCB\x©\xEFf\xA4su\xD0CI[v"\xFD \xA3\xD1喕.\xB9\xC0\xA2kS\xCDJ\x85\x81\xB8S\xBE\xDF(\xA3wS2\xBC°\x90[\x89\xA4x\x9B\x8A1f\xB0\x95inyj\x94\xC6\xB2\x92\x8E\xB8(k{.\xA5\xE8\xC8\xAD'q"*\xF3$\xC2"\xFE\xEC\xF1sZ\xF8\xB16\x9F\xB0\xE3\xCC0\x83\xAE\xDAc1\xDA\xEF=9В>\xD57.\x9E\xD4_\xDC\\xDB\xE8K\xE8bbZ]D\xE4\xB6[\xA9\xFF\xA4\xA0\xE4\xD6VUl\xAA
+h\xB6D\xFB\xBB\xDF\xBF\xF9\xF1︴\xFC\x8D-\x84 y|\xCEi\xC8\xE7 <?V\x8Cg\xA2}K\xE50)\xC4\xFF\xA7\xAC}\xFF\xD6mj\xBF+9I\xC1m 1;\xDC|\xFDt\xE6\xD7o\x97~\xE4WA>\xFD\xD8\xCF}\xFB\xF4\xB3\xD83\xAA\xCC\xBF\xDCȌO\xF9_0r\xC6j\xDFS\x8Eq\xB8\xE6q\xFD\xA8.\x8E\xEA\xB7R\xBFK[\x88\xC7\\x9DÈ\xD5X\xEF\x9Ex\xAB.ީ\xDF7\xEA\xF7\xF5\xFB\xB3 k\xE3\x97\xC1\xE4ϊ\xAF&YJ(u\xEF\xEA\xF9\x93'Ҕ\xEAp\x9Cfҕ\xFA\xFE\xA6\xD8\xE9\xEA\xDE\xFA\xFB\xDD?\x96M\xEB\x90<(\x97\xC4Q\xF3\xC4Rho\xF7\xEC\xF3\x92\x9D\xFC1c0ȱ\xE8\xB7)T\xA6\xC7b\xA9\xFE\xA3\xF8+\x92\xD5=?\xAA\x80\xA7\xF2o\xF2HW}
endstream
endobj
610 0 obj <<
@@ -13634,144 +13637,166 @@
endstream
endobj
711 0 obj <<
-/Length 4897
+/Length 4902
/Filter /FlateDecode
>>
stream
-x\xDA\xED\[\x8F\xDB8\x96~\xEF_᷑\x81\x94JE]f\x9F\xFA\x92\xF4n0=\xDD۩\xC5b\xD1\xDD*[v9\x91-\xAF%\xA7`~\xFC\x9EEJvU\xB9\,\x82 e]H\xEA\xF0\\xBFsH)
-c3\x89\xFA?\xBB\xA5wB~\xFF\xF9\xBB\xE8bm\xF4\xC4\xFE\xA7\xEE\xEE\xFEp\xF3\xDD\xF5\xA5\xD3I\xE6Q\x94Mn]da\x9C\x9AIf\x920S\xE9\xE4f>\xF9#xWͺU\xB3\x99^\xC5Y\xA8P\x85ӫ4\x8E\x83_o\xBBr\xB5Ym\x96|\xA3\xDC\xCC\xF9`\xDF\xF6\xD7\xFB\xE1\x97L\xFF\xBAy{"\xB5Q'F\xC1\x9F,\xE36\x83+\xD0\xE6\xFAM^-\xC0\x95\xD77\xDF\xFD/\\xC6\xFBj\x92\xC5aR\xE4\xF0\x99an\xF2\xC9lMC\xC4a\xEE\xAA\xD3$\x99\xEC\xAA\xC9\xE2\xBB\xFF<i\xE4\xC1\xB0qQ\xF8\xC3\xFE\xF1W4\x99ý\xB7\xE8\xC5\xE1\x89\xF7\xD4r
-\xFF\xF91\xF5\xE4\xDDѧ\xBC|\xCCG\xE94a\x92g\xE3\xE9'\xA9
-\xA38} \x8CN\xC1\xFD\xEB\x8B3\xD6\xE8"\xCC"uYΞ?\xE8I\xD1\x8F\xF9?5p\xA76\x96K\x92\xD0\xE4q\x8E\xA11\xCD\xC3(\x83H\xAE\x80&shT'-\xDBE\xB8\xA9\xBA\xEB\xED\xF5\xFB\xF6v]_\xE3\xB5\xEBn\xB7\xDF|\xE0\xF6\xFF\xFAS\xE9d\xBE\xDAm\xCAu\xF5/&\xE9\{\x8B-@T\x91;'4I
-8\xAD\xF8\xD1\xC5\xF0\x85\xBE@\xA1\xCB N\x90m\xB3\xAE\xBA;\xD42(xtU\xB3l\x95\xD9jae\x9A
-h\xBA_\xB5w!(\xA7\x82\xD3\xDC\xBF\x82\xCE\xE1\xC3gJ\xF8\x80\xD2S\xCAU\x85\xD493\xA9\xA2\xFB\xA2D\xD2!\xE1D5\xDC^\xEC,-k\x8F\xB5\xD2\xFE*6ح6`\xB7)͔\xE7C\x8F\xB1\xAA\xCE$\xF4V\xAC\x90\xE7yʂ\xE8\x89Gf\x83\xA8\xA3\xC4cv\x92B\xA49\xCFʩHW\x93\xA9\xACj\xA4\xDF\xD3\xC7\xE8\x81P\xC6\xC4h\xF8g\xC55y$\xB8Y"\xCB\xE6|<#~@˪\xEC\\xF7\x92{\xBD\xFD\xFEw\xBF;6\xD9\xFD\xB4\xD6U\xD9\xCA\xF0<Y\x95gwx'\xADD/\x811\xBD\xC84\x91,\xB7\xB5\xD2l#N\xED\xE9\xDA\xD8\xE4\xEA\xF1\x8Ed9\xC3QWM\xAF\xFC+wx&LK#\x97MI\xB0\xED\xE7?\xAB\xC0\xC1Oљ\x91<\xEE\xEB$T\xB1\xA8\xFA\xB9\xBF\xACNv\xBBT\x9D\xB3\xF6\xA3\x9DDž$e\x92B\xD2d
-\xF8\xC6\xD3>\xD6&$4*
-HI1xv}L\x95\xC4jqX\xA7W9k\xB6\xABJ@\xB3\xE0ke]\xB3\xE7\xF6u\x98]
-<\xBFږ$\xBC\xF6\x99\x9B֫[`T\xF0\x8D~Ț\xDD2)\xCF\\x8C\xF7\x99,\x82\x9B\xF2\xB6*\xB0֪5\x8C\xDBrI\xDCyΰ\xD0=9\xB9\xC3i\xA2$>\xF4\xD6#\xB1\xAA\xE6v\xE2\xB7S`\xD7@T\x98'\xA0C-'\xE5|\xCEAx\xC7`\xC4\Pc=\xA4\xBF\xDD\xCD\x9F\xB4\x8E-!a\xB9\xDE^\xB7\xDB\xD5\xF5\xFD\xEA\xC3\xEA\xFA5\xF3Hbj{n\x88\xF7ٖ`\x8D-\xF1\xA5\x89\xD6\x80\xB8^\xB2k\xDD;\xAB\xF9\xC8\xD2\x8D8`+\xCF?$\x85\x8BHK@\xEAy\x9AN\x95k>\xEBXHX\xFC\xC7S,\xA6\xB8\x9C+6M\xC7\xEF\xF7\xBD\xEEK\xC7^\xED
-\xF6 \xAC\x93\x98\xF0\xBE\xE2\xCE\xFD@v1y\x8C\x8D^
-Ac8\x98\xC3\xC1\xC7i\xC1-\xB0\xB4\xF5\xA0\xC1ȣ\x95;=hN\xA2w^\xC9\xCElmb\xEAǼ\xC4ڊ\xAA\xF5\xD6&\xA3\xA4\xAE\x84q\x84\x80\xCFN} =\xF9\x8F\xCF\xC4a\x92\x98\xB5\xF1\x83\xDEP\xC8\xF9\x8Fg\xD1a\xEA\x90I\xEA\xF0\xEB5\xAD\xAC9g\xA8\xB0\xB0\xFC\xA9\xAB6X\xE1m_\xF1\xC5u3\xDFr\xDC\xEF/\xE2\xA6\xE5z\xEBnᕏ\xA7\xCBU]\xDE"\xBE\xA8\xA5\xB8\xBC\xC0\xAB\x8F\xFC\xEDH\x8F\xA6$\x98\xA1&Q\xC6\x8A\x86*\xA1
-\x82\xB1>\x92H\xE7\x95\xC0-\xE7<#@yr\xBC\xEE\xA9
-F\xE3\xD4E&Tqzxg}>\x96(\xEC$\xB6\x86NRP\x91.;\xB0\xD2\xB0b=\xBD\xC2\xF9|\xA2xC\x83!\xAC\x87\xFC:\xEA`\xB4\xAC\xC0]b\x83\xC1\xBC\xBAB\x8E\xB5x\x86\xA4\x8F@7\xC8\xE9J\xC0D\xE6s2T\xBCu\xC5>4
-ڽ\xCDF\xB7\xE2a\xB9Yo\x84\x9E\xE5\x9C|r\xB9U\x82\xA4\xE6V\xBFa\x85\xABg\xCF[V\xED\xBFI\x88 \x961P\xCD\xC0)0\xE3\xFD^\xCAԹ\xC1I
-\xC7>u֧x!W\\xE0\xA8\xFD<p\x9F\xE4y\x9A\x8E\xCCM"f1\x9A_>\xD6\xC48\xB2\xA1\xB5\x{DE2F}\x94"{]\xB2\xD2H\xD0gC\xE9\xE3,h?\xB0\xC4\xFE\xB7\xA9R\xF2\xF2@4{K{V
-礤T\x92ͷ\xD7\x86'\x98\xC8\xF0\xB9|\x9A\xB0\x8Bu\xC8\xD6"\xF6\xD8
-\x9E!V\xFD\x82\x90_,u\xE3\x8D\xF0\x96
-\xB0?\xC0\xEBlԼXi\xCCZ\xCDptr{\xC4\xC6\xF4\xDAu\xCFp\xCDQ
-\xBB3'\xCEI\xB8iݎ\xB0j\xC1\xEE\xBDKp,.\xB1ȉąI\xC8ç\xD3\xEB\x95D\xFC\xB2\x80\xA2Gq){\xA9\xAF\xF6(\xC1\xFD<\xF8q\xAAbP\xBA\xF1\x82\xF0v\x85\xE8{c\xDA\xA7\xD77m\xF0J\x8A$LM1d\x87ҧ\x97\xA7}ޚ( u>\xFC_\x92(\xD8\xED\x97\xADzڂ%\x90T\xB9\xDAp\xD9x\xDFJa\xD7W\x92\x90\xEF\xBDA\xF6\xA6\xC2\xECή\x83k\xD2~ry\xCCyZ\xF0\xA5\xE0\xE6\xF4\x90\xE7;Q`\xAAR\x8E;N;Rb\xC2l4\x90\xF3\x9B\xB82$H\xFF
-,BW\xF3\xA5\xAD\xFD\xE23\xB6\xDBl\xD3/ݰ\xFDj?\xC1\xC9\xDCz\xA8\xB5P\xEF\xB2\xF6t\x95\xD7o\xB8\x8E\xE9\x95\xF2}\xEFV\x92^\xD9˺7nOZI\xEAHD,\xD9\xCA\xC6\xE1#q[\xE13An@ӽ\xE5\x84uq\xF0\xBA\x9C\xDDqXp-\x89\xAB\xBF~T\xF7\x96y\x89@!\x9D`GQ\xB4\xCFMl\xC1)\xC5jHA5 \xFF̬\xB6\x9F#Pf\x8F\xE8\xF4\xB4\x82n\x97KmyA\xDB\xD5ﶢ\xEA8y\xE4α\xF4\xCE`\xD1\xC8AU\xF6Ev\xBFcfQ-\xC2\xF8䫕uN˒)\xF1\xDAa^\xC5)NabIv۶T\xB7-\xB7\xF0\xE1A},\xFE\xA4i\xEC\xBAv-/xpe\xAFϿEGR
-k{^h\xC4\x97\xACei\xC2\xF6\xF73\xA8[C[\xBD`\x94\xA3[\xBD\xE0\xFA\xFD]\xE5\x8A@\xA9\x97\xBA\xC3-h\xF5\x9CO\xEB\xD5i\xC4Nۀq\x953!\xC4w\xAE>\x86H\x8FW \xE8\xCEh\xCB\x9B\x8E\xBCS\xB8\x8Dq\xB2\xC1\xECH\xD5\x98f[\xB5\xFB咷"\xFE-3:\xFF\xF4 #<\xBD\xFAd\xD8\xFD\xD3\xCF\xE6ĥ^;x/E\xE5\xBCt~\xE1\xF7R\xBCa/\xF6^ʳ\xC7<ὔ\xD1\xF4/\xF8^ʥ۫\xCE%9{\xFE\xA0_\xEE\xBD-\xB5\xB1':?Y@\xFE2y\x9DQ\xD5p\xF0\x82ߣ\xFD\xD6iZ\x9ED\xB4\x9B\x81yb\x8F\xED\x9C\xF6e:\xCDք\xA3\xC2n5\xE9\xF3\xDC\xDBQzRz\xB9\x81\xE6\xB2\xF0\x83\xDB+\xE9Y\xF5\xFC\x95\x97M\xEE\xECsh\xBF_(L\xBD\x9D_'\xEC\x87NbH\xFA\xBD\x8E\xE5g\?<\x93\xAD8\x{15BACF}T\x95\xB6\xB5\xA4n/\x85\xA4\xDEF6:>\x98\x86\xE0\xCB:\x9B\xE5\xF3\x8F8 1\xD7\xFBz#\x9B#\xF0\xBC\xC8F\xBB\xDA\xCDK"\xDB\xD3#\x9C\xD9\xCE'\xA3\x8Fl\xCF\xE5ėK<TY\x94\xBEx\xE2ᆽ\\xE2\xF1\xDC1OI<\x86ӿd\xE2qa\xC6\xF6\xAAsIΞ?\xE8L<\x98W\x91^2\xF1\xB0/Ļt\xE1\xDAg~KBEIX\x98\xCB\xE7\xECn\xD8˙\xCEs\xC7<\xC5t\x86ӿ\xA4\xE9\\x98\xB1\xBD\x96_\x92\xB3\xE7\xFAM'\xCAh\x8D\xE5\x82ߒ(vYbeOF#\x91
-
-d _/q\x9E\x87F\xA0\x96\xBD(\xCF~z\x84\xD0\xC8\xF9d8~&'\xBE`\x9E\xE3\xCB\xDA:\x9E\xC0\xE2H\xF2\xECI\xF53\xEC\xA7\xF2,\xA7ҸC\xD9\xC4g\xC3\xFF\x89\xB0&\xBCy\x98\xD9?\xE3\xD3ak\xF3\xFC\xAF!\xC6\xC0\x99ɕ\xE1ݳ߾\x87\xF8mb\xDF\xF0\x8D\x91O|\xF1\xB1\x8FĎ\xBF{\x85\xB1<~\xE6*h\xF2_\xE00\xB9t\xC9\xDB2\xF0\x85\xC6+%\xC1\xCFt\xB2\xA7\xBF+\xFA;\xB7\x8Dt\xA4iC#m\xD2s=\xDE\xD2\xC9;\xFA\xFB\xFD\xFD\x85\xFE\xDA=\xAF\xE0\xFCrH\xB5\xF1;\x8BInB\xA5\xDC\xCB\xEC:ɤՀb\xA04\xCF\xFAV?ޕ\xDB\xCEc\xED\xA7l\xF6_co;\xFC\xA8C\xC9\xE0\xCA=\xEE:\xF8\xA0\xED)\xDFQx\x8C\xB3\xF8\xC0q\xF0\xDBV.%
-\xA6\xFCC\xF5V<\xBD\xECg+x\xDA\xED\[\x8F۸\x92~\x9F_\xE1\xB7#i\xB5H\x8A\xBA\x9C}\x9AK2\xBB\xC1\x993\xB3\x93>8X\xCC̃ږ\xDDNd\xCBk\xC9\xE9\xE4\xDFo\xDD(Q\xB2\xD3\xEDv\xBB\x81`i\xEBB\x96\x8Aź|U\xA4\x85\xDAN\xA2\xEE\xCFn\xE9\x9DП\xDF\xFE.\xBAX3q\xFF\xA9A
+w\xB8\xF9\xEE\xFA\x8D2\xC9$
+\xB3(J'7\x8B\x89\xC9\xD3P'v\x92\xDA8LU2\xB9\x99O\xFEޕ\xB3vUo\xA6W:\xCD\xAApz\x95h\xFCz\xDB\xAB\xCDj\xB3\xE4\xC5f\xCE\xFB\xA6\xBB\xF6\xF6\xDD\xBF\xFCc\xFA\xD7\xCD\xDB\xB9\x8D28\xB1
+\xFE\xA4)\xB7\\x816\xD7o\xB2\xF85\xBA+\xB3\xCC\x85\xF8\_\xF7\xE5)\x8B\xA3\xDB\xA7L\xEB\x98GH\x82\xE9\xD2\xACD\xF9\xA9 \xD1V\xE5T\xE5\xC1+\xBCh\x82\xDB};\x9E7\xFB
+O)+]V<\xB7\xCAM\xD9j\xE1\xE64\xF0t\xBFj\xEEBPN\xA7\x99
+~\x9DÇ\xCF\x942
+\xF0\x85\xA7\x94;4\xAA\xB962RI\xF7E1\x88\xA5CƉk\xB8\xBD\xD89^֞h\xA5\xFD;Tl\xB0[c\xC1n)\x8F\x87\xE3T\x9DY\xE8\xACX\xA1̳\x84'\xA2c\x85
+SŞ\xB0\xE3\xBD\xCC\xF3\xAC\x98\xCA\xEC2\x95U\x85<\xC0\xE3;\xFE\xE1=\xCE1 \xFEE\xBA"\x8F7ٜ\x8Fg$hYm߽\xE0^o\xBF\xFF\xDD\xEF\x8E\xCDB\xF6E\xBF\xAFUY4B\x9E),XT1I\xA6\xEE洛\xE8%\xA6\x9B2M\xE4\xAB\x8D\x8D4ۈS{\xBC48\xF9\x83z\xBC\xA3\xB9\x9C!\xD5U\xDD)\xBF\xC1\xC2%\x9E\x851\xF3R\xCB垧8\xD8v㟕\xE0\xE0\xA7\xE8\xCCh<\xE9\x9B8TZT}\x8B\xD2_\x96'\xBB]*N:\xFB1\xBDDžm\x92@\xCEhs!|\xE3ik\xB2\x95\xA4\xA4<\xBB>\xA6Jb\xB58,ӊ\xAB\x9C\xD5\xDBU)\xA0^\xD8s\xFB:̮\x82ϯ\xB6\xCD^\xFB\xCCM\xAB\xD5-*
+\xF8FG\xB2b\xB7L\xCA3\xE3}\xE2\xE6\xC1Mq[ XjV\x81ƈm\xB1$\xE9<\x85,t\x8FO\xEEp\xDAT\x92:둈X\x96s7p\x88\xDB \x88k\xA0?*\xCCb\xD0!\x80J\x89\xC6\xF0\xFFA\xBA\x89\xB42\xFB(i\xA0P\xF0\xE4\xF2rB5}˞ʢ\x80\xE9\xB7Wd{\xE8\xB1\xEC\x85#\x9D\xCD\xE9\x97˾)韧!1\xEEiנ|\xE7"
+\xD7\xF3\xD8Q\xA2(\xA9\x8Cb\xAB\x84A\x82\x9F\x85\xF4)\x8E\xA2\x9C4D\xD6,\xCD\xE0+'\xC5|\xCEAx\xE9\x981\xD4\xD8\xF9ov\xB3\x87m"+\xF58.\xD98\xA5l\x92\xEA\x90\xC5U4~R\xC4z\xA4
+\xDBF\xDC\xC4\xED~%x\x8CNQ\xA7(\xF0߽\xE2\xBC\xA4\x87`.M8V\xC0\x85\x9F\xC5 \xAC\x91jjB\xE2s߃3;\xA1֡\xB1]%\xCF'\xE0\xC7\xEA\xFDf\xE0\xE6\xE2/\xAB%Z\x81R"#>b<[ \xA4\xACs[27\x89dN8\x97*\xF1D\xAA!-MD\xA4\xFF\x9C\xF2\xC2*\xF8\x84Η\xA4z\x88 Ǜ\x92=\xB2\xEAH\x96~#T<\xFA-?\xB57\xF96G\xCA-\xDFk\xA5ό\xBB3:Bq,\x9D06\x91\xD6\xC0\xC3(\x84M\xEB\xB6\xEC\xC4W\xCD+\xEC^U5\xEA\xD6\xFD`H\xF4p\xBF?\x88\x8B
+$>+\xBA\xE0\x9Bk\x8A@\xBCQ\xE61\x94\xC4a\xAC\x84\xA17\xD3\x98*\H\x87\x94ŁD\xCD~V,\x89\xB2ظ\xBC\xD8\xABK=\xEFzs{;\xC9(s6QCn~#w\xFCK\xB1)\x96\xE5\xEEE\xC0n\xB8\xDA\xE4\xB8\xED\xF0)\xB3\xAAh\x9A\x83\x9C\x9E\xEDe\xF6\xC1\x83<\xDBfP\x83`\xE4\xD1ȝ=N\xA2w^\xC9\xCE\mb\xEAǼ\xD8ي \xCA\xF5\xD6%\xA3\xA4} \xE3\x9F\xFB\xA9\xE8\xC2+F۫\x8B\xC9m\xA8trx\xA7]>\x96(\xECĮ\x86N\xB3\xA0"5
+\\x8E\xB02\xB0\xB4R/q<\x9F(\x81\xC4\xD0`롼'u@-\xCDq\x93܀\x98WWȰ\xCF\xF0\x81\xF4\xF8\x86y\xBA0\x91\xFA\x92\x83\xCCo]\xB2M\x82f\xEF\xB2ѭxXn\xD6\xC1\x84\xA7C'\x9F\n\x95 i\xB8\xD5oX\xE1*\xC0\x99\xC0\xF3\x96e\xF3"HdTS0C
+\xCCx\xBF\x9Be\x9Ā\xE0$Eb\x9FZ\xE7S\xBC\x90+.p\xD4|8\x84O\xF2< MG\xC6&3\x8D/k\xA2\x8E\hmZ\xEE+\xE5ă\xC8^\xAC4\xF4\xD9P\xBA8\xDA"\x82i\xFF\xDBT) yY \x9A\xBD\xA5\x88=+D\x86sRR*I\x8A\xE6\xBB\xEB=\x86'\x98\xC8\xF09|\x9A
+\xB0\x8Bs(\xD6\{bϠU\xB7 \xE4W\x80K\xDDx\xDER\xF6\xB8\xE2\x9Ć\x9Aw\x84\x95\xC1\xAC\xD5\xA9\x93\xDB#1~A\xAF\xFB\xEE)\xAE9\xAAaw\xC6\xE1\xE4\xA0\xC09\x894\x9D\xDBQ-\xB8\xC0\xBD\xEF\x87Kr\xA2\xE9\xC2$\xE4\x8A\xE1S\x81\xE9\xBF\xF3J2\xFD\xB2\x80S\x8F:\xD2/\xA4쩥\xBEڡ\x84\xE8g\xC1\x8FS\xA5A\xFD\xE9\xC6O\xA2\xEF\x8Dh\x9C^\xDFt\xC1+\xCE\xE30\xB1\xF9Pʜ^\x9E\xF6ek\xA384\xD9h\xE2\xFF\x92D\xC1\x8Dh\xBFD`\xE8\xAC\xD0\xD3,\x81$\xAA\x8F\xA15\x97\x8D\xF7\x8Dv}% \xF9\xDE/`*\xCC\xEE\xDC:Ȱ&\xED'\x97ǜ\xA7/Qn\xCE\x99\xE8}'N\x98\xAA\x84\x94\xE3\x8E\xD3Q\x8Am\x98\x8E\xF5~W\x86\xE9_\x81E\x98r\xBEt\xB5_|\xC6v[\x81m\xFA\xA5\xB6_\xE3\x87"8\x99;\xB5\xF6\x8A\xE0]֞\xB6\xF4\xFA
+\xD71\xBDR\xBE/!\x92\xDDJ\xF2\xBDb\xD6){Qu\xC6\xED\xCDV\x9C\xD2^*.vq\xB6\xB2\xE9\x94\xF0\x99 7\xE0\xE9\xDEI¹\xBC.fwz\x80\x97\xF4\x9F\x88\xD4ۡH\x9CI<[o\xE9Z_nhɽ\x84\x92\x95\xC4(I\xFD\x85r%K\x88\xC8\xAC\xBDH\xE6\xE2H\xB7\x84\xF7\x9EV\x8Br\xDFǦ&\xAA|t|u\x85Ҝ.\x95s\xE5/_7u\xF9\x8B\xD4{\x9C\xD7}\xF1fV4\xA5xFK\x8B\xC3J\xCFܹ\x96OU;\x8D\x96ғ\x94U
+\xEEY{\x95\x99w\xE8o\xDC\xD2:-\xBE\xC1\x92 Պ\x97\xFD\xCEp;\xAB\xE4\xB1X\x9F\xBE\xF3h 7\x83\xAB`I6\xA0\xF5f\xBCT\xB2\xC1\xA4Xߌ+V \xD8\xFDm\xE3\xD6\xFC6o\x9D&9\xBF\x9B'c\xAAz8\xF8\xD9y\xB3\xC2l\xEE)\xCBշ\x92 \x8F|\xA0\x95$I\xA5V\xBE\xB8T\xBA.\xC9\xCA\xC4\xC6\xE3\x99\xF6m\x93\xAD\xC3l?\x8F\xFD\x95\x8A\x92C\xDEU\x85i\x86 )\xE7\x98`\x97%\xAF\xBB\x9C\xE28\xEEW\xA3\xB5
+Y\xB7\x82l`\xB8
+\x89\xAB\xBF~T\xF7\x96y\x89A!\x9F`GQ4OMl\xC1)i5\xE4\xA0\xB0fVۍ\xB8S\x83GtzZAw˥\xAE\xBC`\xDC\xEAwSRu\x9C<rۋ\xF4\xCE'\xB0\xA8\xE5\xA0,\xBA"
+\x90\xDD\xEFXXTK\x81\xF0>\xF9j\xE5܀\x83ӲdJ\xB2\xF6A\x98Wq\xD2 ,N\x8Fbۆ\xEA\xE0\x86\xA3\xE0\xA6y\xD4W
+)\x9C\x97\xAB^ei\x9E\xB9\xF2VJ\xB7E\xB3j\xC9\xEFq\x9F\x8Eu\xA9\xB6\xD3\xE5R<}\xEC\xA5o\xBD\xB7\x89Q\\x85`\xC4\xE6\xA0BRKu\xA6\xA67\x88ƺoݦ\x81\xEDӋ$\xB1\x85\xA4;\xB1\xF2z\xA6.\xF9\xB3a\xA3,\xCC\xEChJ\xBC4\xC1Ic\xE4+\xB4MC\x95\x8B\xEA\xB10\x87+\xB7ǂ
+\x99=\x98s\xFC'\xADB\xF8+'K\x9C'+V\xDE<\xF8R\xAD\\xAChe#\x95\xCD\xFB\x85\xEAc\xF1'I\xB4W\xE8\xDA5\xBC\xE0\xC1\x95\xBD.\xFFI(\xAC\xEDy\xA1\xCB^:>\\xB2\x96\xA5 \xB8\xDFϠn5m\xF5*G\xB7z\xC1\xF5\xFB\xBB\xB2/%^\xEA\xB78\xA0Us>\xADV\xA4;m\xC6Ū߹\xFA"9^\x81\xA0;\xA3-Kl:V\xF0N\xDEo\x8C\x93
+fG\xAA\xF6 \xB40uت\xD9/\x97\xBCE\xF1\xB0\xE6'\x85+\xC9+\xEE6\xFB\x99\x85u)\xC5-\xE0
+\xC5;{M˞60\xF8\x9B;\xD2L\xF1\x9B\xDB>u\xF16e\xEC`\x96!\x89\xCD\xC9\xF2+K\x84?7n\x91`P\xA4\xFDe\xBC\xFE\xA5\xFC;W\xA1\xB1#\x91\xE2@\xE7\xE1'ȟ7_֤T5<\x81\xE0\xF7h\xBFu\x83\x96\xC7\xEDf\xA0Fކ\xD8c;\xA7\xFD9\x9Df
+k\xC2Qty\xEE\xED(=\x8A)\xBD\xDC@sY\xF8\xC1\xED\x95\xF4\xACj\xFE\xCA\xCB&w\xEE9\xB4\x82\xDF-&\xDEί\xF6C\xC7҇n\xAFc\xF1\xD7\xCF\xAB F\xDD\xE6\xEA#U\xA5\x83m-I\xBF\x97BRo+\xBF\x98\x86\xE0\xCB:\x9B\xE5\xD3\x87:\xFE\x8A_\xDC\xF4</\xB2Ѯv\xFB\x9C\xC8\xF68\x85"\xDB\xF9lt\x91\x{DA52}x\xB9\xC4CŐE\x99\x8B'=\xD9\xCB%O\xA5yJ\xE21\xFE%\x8F\xB6S\x9DKJ\xF6|\xA2/\x98x(0\xAF<\xB9d\xE21\x9Bs\xD2Ч\xD7~8\xF3S*\x8A\xC3\xDC^>g\xEF\xC9^\xCEt\x9EJ\xF3\xD3\xFF\x92\xA6sa\xC1vZ~IɞO\xF4M'Ji\x8D傟\xB2(v[YbeOF#\x91
+-d _/\xE9<\x8D@\xFF4}V\x9E\xFD8\x85\xD0\xC8\xF9l\xF4*\xFCDI\xBC`\x9E\xAD\xF1em\xA3'9\x888\x92<\xFBGR\xBD\xC3\xFB\xB1<\xABWiܡl\xF5\xD9\xF0\xC4b
+\xA2I\xAFDf\xF6O\xF8r\xDA\xC5\xDA<\xFDc\x90c";\xB9\xB2\xBC{\xF6\xDB\xE7 \xBF
+\xEC\xDB|\xE4#\x9F\x83|\xE8\xB9\xE3\xE4^al\x83_\xD9\xD2M\xFE\x93K\x97\xBC-_h\xBC2Q\xFCL'{\xFA\xBB\xA2\xBFs\xD7\xC8D\x8664\xD2&\xBD\xBE\xC7[:yG\xA0\xBF\xBF\xD0_\xB7\xE7\x9C_\xA96~'b1\xC9l\xA8T\xFF2\xBB\x89Si5\xE08\xCDҮՏwŶu\xC5X\xF7%ߟ\xFD\xD7؛?\xEAG\xF2\x85\xB8r\x8F;\x87\xBE\xE7{\xCAw\x92,~A\xF0\x80~\x9B\xC2Ê\xA5D\xC1\x84\xA8ފ\xA7\x97\xFDl endstream
endobj
731 0 obj <<
-/Length 4590
+/Length 4608
/Filter /FlateDecode
>>
stream
-x\xDA\xED]s۸\xF1=\xBFBo\xA5fb\x9A--\xFD4j\xA1\xC8,\x8FDK\xFAQ\xD2β,/Q\xAC\x83\xF89\xA8(\xF6c\xD9NG\xB4\x89\xFBe\xE8\xE1ʈ\xAA\xF9\xFE\xB2(\xD6|U|!\xB2\xAEKzlI\xD6H$\x90KE\xEE\x91 b#<YN\x82\xF7\xF0K\x9C\xF4z.\xC3uc\xA8G\xC4
-d\xB8#=\x84o\x86?\xA1W\xEF\xA8'\xF1\xED%\xF26\xB2|#\xA1iT\xC0\xBF\xA1\xE1\xFC-\xDF,\xAA\xD5ƞ
--\xB0[@\xE2\xF2\xA6kDn\xB4S\xC4\xCCE;\xBE\xBF\xE5\x9Ben^O }*x\x9A\xA6\xE2֍%\xFEla\xB8 [k{"\xC3e_(\xC0$W\xD52R\xD3\xC2r\xEB\xDF暥<\xAC |d\xB4\xEB\xC2H)Do\xEA\xE07T\xBE1\xE3w\xC1K\xC9\xDA\xF3I\xEFڜ\xC3\xF8\xDB\xD7ёF\x87\xF1\xAAȹ\xC3)\xC3a\x94i\xA5\x88H\xEC=V\x9D\xCAq\x99\xBA˓\x8F ݟ\xC0\x8C:\xAD`i\x8F\xBB\x85]F
-\xEA\xC1\xD9\xE5(\xF7E\xDE\xDE4\x8C\x82N\xE6\xA5D\xBD\xD9\xCAt\xE0}\xF9̇\xCDMÌNё\x86\xD1-\xEC\xAE\xC2\xE5\xA2j\x89\x88\xB4\xDEҀ\xC5c\xED \xA5}\xDCFT\xF8l+\xA2\xB9\x8B\xDFt\xD9
-\x89ޑ\xA5І\x91\xAE\xAC\xB0\xB7\x9B\xA9\xDA>P\xEB\x98%as\xB2\xBB
-\xACVF=\xD9'>\xC9FX\xFC\xB3\xBE\-\xBF:\xF7x!\xAD\xFC^k&\xB7\xFB\xE9\x8F\xF5\xC22n]\xF3\xB6F \xE8\x8CgE\xDA\xC2#\x90
-\xF1\xA5|\xEFzu\xF1\xEC_\xCF:\xB4\xF9\xA0\xA3\xDAOd8[\xAC\xFCH\xA3W\xD4?\xA2\xDE\xB3\xABg\xB4\x8A\xC3w
-\xF2`\xAC\x9ELS\xC0\xF7\x83Yϐ\xCDCآ[깂\xFF\xEEr\xF6\xA0\xDD_\xA0-\x89\x89\xA9\xA2bD\xC7R$N\xDCKF Q\x9F\x8A#?\xD6\xC6C\xF2\xE3L\xBC.\xBE\xC5?W\xE4\xE01\xF6@{on\xF2&\xC5IK\xB6B\x8Dr:\xF7\xF4wAj^k\x98(\x85n\xE3\x94
-r3\x81QC&[\xC6\xD6\xF0\x8E\xD9+0\xE03\xE9\x98a!ZL`ك=v\xCB˂\xC7\xD5V\x92\xB2\xDB,}3a\xB5^\xB8\xA3\xB6|Q\x90\xE1}c\xBA\\xCE߹;j~xv9 \xE1!y*~\x9E\xF3c\xBA.?\x99ѭm\xA21s\x8D\xEB\xE7\xCE\xF4\xBE\xD6])\xC3hUf\x84\x9B]Z㵘\xCChs\xF7$D_j\xE4Z\xE4k4s'\xB3\xE1\x94\xF4㴵\xE1J\xEB]\xAE;\xB4\xEF\xC84\xDE\xD3uY:\xCE#n*ׇ\x83\xD05\x84\xBE"\xB2Ւ\xAC\xC2՚\xEF\xE1-\x83=\xD7\xEFi\xBA\x8BΙw'\xF3Gx\xAD\xDFC\xFF\x86\x8B| \xE1\xFAvE~\xE0q"\x9F,\xF9\xF0\x91\xFF\xF8D\xFE\xF1`\xB4",&\x9E\xCE\xF0\xD4'1\xB9\xDDM;\x9D=v\xCE!Jt\xF9S*\xD1#\xB6%\x9D)1{\xFC\xA4O\xA8D\xD8Mix֟E/*\xFE\xBDi\x9AM\xFD\xC3\xF99<\xF01\xB8\xE5\xD7W\xFE\xBAh\xCE7\xE7\xE4{<Ƕ\xF3f\xBB[:7\xCC\xF9\xBF?\x880ꎶ\xF3D\xAD\x83\x85u-~\x92ދ _û#\xDC$m4>\xF8\xFE \xD15G<*\xBB)L\xEC\xE2\xB6"E5\xA7<\xD1*H)\xBB\xE2Am\xBB\xEF\xAB\xC8qOE\xEE\x85/l\xA8\x9DUd\xEA{Y5V?O\xF5.\xF6^\xACs\xFA.M\xFC\xA6\x97&\xF4\xC4i^B\xD3۟9\x83\x84"m\xC6H~\xF1\xA5X\xB8\xBF\xFE\xEB\x8A.0\xF5d徉\xC2\xA3\x98\x91} ;\xC6.\xCEH)\x8A\xA0(\xA6\xE28E\xE8</A\xF9Lꎢ\xB4\xFF\xAAl\x9Do3'\xD0I\xAB\xD3~\xA2TzҸ}\x9Bef\xB7:\xF5\x84\xF6\x88\x94\xD05\xE9\xBF\xF9)lg\xB52}\xE8}d\x9A\xFD\x82ćW\x8B\xCAim\xE3\xA6+\xBB\xB5;\xCD\xF4;jCC8?\xB1\xA9\xC3\xC9a|g\x91\x91оH\xC5\xFFbK#\x95\xFA\x89\xD0\xFF\xD5=U4\xB5\xB7\N;-\x9Bɜq\x9C\xAA
-\xF7ッ\xF4\x9Fʦ\xEA\xB4I@\xEC\xD0\xD0<\xB3u\x97X\xCF\x92j\xD7tIm\xE6\xCE\xFF\xEE\xACi\xED$\xF6\xDC\xAB\xB1Y\x86\xDD)'`\xBB\xE5\xEC,\x84\xC3\xDD\xE8\x81sL"\xBADٻ,l\xB6\xFC\x81
-\xFBGd\xFB\xA9nc\xC9am\xCFI\x89\xD1]\`\xB9\x84\x89e7qS\xE5\xAE\xF2\xDEf\xBF}\xED?m\x98><\x88\xD6$i\xDC\xD3Od\xA7[\xB0\xCE\xEB\x9B\xD2N\xA2-\xA6\xAC\xF1\x81u\xB9\xC1q\xB5fN\x98hv\xB1\xE5\xFD3a?Kt\x81P\xB49>\xEFv\x9B
-\x92PP\xE2\xE0\xBEO\xB9\xE0\xD8*\x9B~V\xFC\xD9e\xC6Awh\xD8l\xABk\xDC\xE2-\xFE\xC9V\xF5=\xB3\xBC0\xD0\xD0\xCD/\xEF\xBA\xD0<pn<\xEB\xFE\x9D\xF5Z\xD4p\x836\xD4w\xBBp=-Ì\xF7S\x95\x8EQĿ\x8EL\xCAZ1\xDE\xFCb\xB9\xCC\xFB\xD9^#\xA1\x91\xF6u\xB2u\x98\xA4\x94\xD0v$\xD8\xFD]J\xFAZ\xC5=\xC0_0\xC2/\xCD\xE6\xD7=\xFF\xAEu\xFAff\xDFk\x87\xEAỿ\xDC]\x97\xEB\xFB6\xBD\x97$G-#rH\xC1\x88G\xB8ܼ\x8F&{\xD9\xDD\xCA3C\xE9g\xC1\xBC\x99\xD5j\x93m\x8B\xC7\xE3\xF5\9/\xCA%\xAC\xBE\xB8o}y\xD5b\x85'e\Օ\xC5\xC6e\xD1\xDC"Op\x96\\x9C\xD8s}\xAF\xE2\xC4-39\x92B4\x97\xF47H\xE1\xA7 c'\xE1\xA7i\xF6\x92i\xCD\xCDi\xFCЇ\xDB\xF2Ñ\x80\xEF\xF1\x83\xB4o\xB3\xACaW\xB1\xB2\xBC9\xAC\xA0ZV\x88\xBC
-\xB0\x99\xB75\xDF\xC3\xD9^2GpdR\xA2Yܘ\xED\x8F\xF67:r7Zٍ\x8E\xBAS
-F\xA0\xBC\xE3\xE7 ?\xF1]\x9F˼\x9D\xF0\x96e\xE9fc_\xBAXfu\xCDT\xA8<\xA0^|W.8\xBE\xE3\xEA1\xEDR#\xF8
-\xADk'\xDBQ\x9A|lһb:-\xCEۛ\x88\xDDvF\x96\xC4\xC6]]\xF4\xC6K.j\xD2`\x8E\xC1\x88\xB1\xB0\x{158485}$\xF2\xB0-z+\x93\xD1q%)\x88\xF5\xE7\xFAȠ!#e\xBC\x8C7H\xAB\xDA\xAC\xD8r+\x9D\xC4a\xEA5\xDC\x99\x9B\xFFx\x81\x80-\xB0x6k)?\xEF(\xB0*\xB2\xE6~\xD9\xA4~\xACL\xA2,\xDA%@\x94\xB4톁\xB7E\xBD[vG\xFF\xDF\xDF\xFE\xFCu\xB5:"?\xD4\xB5z8۸\xA6p`,0\xDDc_E\xC6\xCC\xF8\xC7<
-\x8CJw\xA52&.hS\xC6!]\xF1\x83M\xC3U]\x90\x96\xA9\xB1\xD6YQ\xCE\xE0\xE2K/\x93x\x9D\xB9\xE5J6\xF9Ը\x95\xE8\xB6-\x9F\xC0 \xBF\x9B\xD8∽83\x99\x88\xA3B\x94\x91G/\xAA6\xE9\xA0
-)mX\xDB \xAB\xB1K\xD7\xC5\xD8\xA8L\x8F\xF5\x8D\xDD\xD7+M\x83`{\xC3;\xFD\x9D{\xC6߫/\xD9j\xF3\xF5Ҵ\xB0\xF3n\xC6"\x9D\xC9hQ\x9A\xE4\xE7V\x86p*\x99\xC2\xC0\xEC>U\xC3T\xA6x\xB7\xC7\xD4j\x8D\xF0\xC5\xE9\xB4y\xD9m\xE1@|\xAC+#l3ہ\x81b\xD5\xC1ARw
-g\xE1\xDA\xD4-\xD5ܐ\x99\xB4\xF5b\xC3j&A\xC2f\xB3\x95^ɛIBo
-\xC1N19;ׅ ^\xD4MfM\x93\xB6\x96\xEAB\xCA\xF8Ba\x9C\x8D-^\xB0+x\xDA\xED<]s\xDB8\x92\xEF\xF9z[\xAA*\xA6 \x80+7Z\xC0\x9F$\xE1>\xBD\xE8s\xFE6\xCD+M6;\xD3\xD0S0\xBA\x80\x9E\xD0\xE6\xA1\xFD\xC83\xF3c\x89\xFD \xE4\xFFsBUE\xE7oe\xCF\xD2И$&=#B\x9D\xE8ٙ\xCC\xC24U\xACgX\xB9\x91\x9E{_-oWE\x8D\xE0IAe\xA10\xDA\xE0\xC0(\xCCR9\x8B\xE0\x9F\x98%"Lc9K\xA2(\x8CM:\xBBX[ s \x99\x8B\xDB\xDDn.\xB2\xA0\xD8@[\xB3\xBA\xE7\xD6-\xDC\xEC\xE6&\xA8\xE6J_J\x98K\xB0\x84\x97\xC1\xB34\xA8˯|\x91/\x97e\xE9q\x85\xE3\xF3_\xC3uE\x83\xE0\xE2/U!Ud\xAA\x837\xF9\xE2\x86a콨}\xC9U\x917n\xECG\xB6\xAA_4y
+>\x9Fa\x8F\xC1\x8B\xF2\xCF(\x92\xF8v\xB7\xADj\xEF\xADq\xF0z.dPnrz\xE5\xCC\xD9N\xF6\xCB\Ů. c\x9CQu&¨%\xA3\x9C\x994\x85MA1 \xAB+\xA9\x93\xA0\xB9\xC1\xF7\xE2u\xACiA~\xB8@\x82l\xF8\xFA\xD2v\xBAB\xC2ܺ\xF7,\xB9j.\x81&Qp\xE7:\xAF\xBD\xBCV\xF1mg\x87\x91\xB7\xB8\xD0\xFA\xD1r\xDFӛL\x92\xA7\xAA\x80ߴ\xFD\xF9J9\x98\x8D}\xB2)\x95\x85\xB0\xDC}X\x9F\xFE
+\xD87\xF3cz<P\xF0\x8A\xAF\xDB\xEC\xF2|s㈀\x9D\xEE\x91Qn\xF9z\xE1H[]"\xDA\xFD%\xA9^JojmE\x811\xC0\x85*6\xB8Rw̰\xA9\xB9\x81(+\xE3\xB04{k
+\x9D\x96N\x98WV\x90-8\xF1\xF7\x9A;"\xAE7_\xD7U\xC7\xDE۶\xA8\x96\xF6\x8Aq\xA6e\xAE\xB8\xE7\x99@*d1\xB3t\xFC\xE9\xE8?\x90BUS\xFC\xC4Mys\x88/I\xE9\xDA\xDE\xF4&Tz\x93\xB8\xF8iP6hK\x89\xE0\xA5\xEDM\xBC\x87\xBD\xEE\xED.\xF1\x91ـ\xFE\xB1\xAD\x94\x80*2F\xA5\xA4\x8A@\x8B\x890Ӛ\xD5WS.\xEFG\xE8ÞV\x93О\xC5+\xEE\xC8N\xE5\x9B\xE3\x8F
+\xEA[\xEAIr{\x89r\x84\x8D\xAC\xDFHiZ\xD3\xBF\xE3\x9BE\xB5\xBD\xA1Ev\xC7H]\xDEt\x8D(\x8DD\xC2Rt\xCB\xF7w|\xB3Z\xDA\xD7J\x9F\xD3Tܺu̟/\xAC4Ac+Yp\xEDvd\xB8\xEC++\x910}<\x95\xBC\xDDo\x91\xF5\xAE\xED>\x8C?\x89{mi\xB4\xAF\x8B%w\xF8SJ5\x8C3\x9D\xA2\x89\x8D\xBD\x87ú39\x8EaSzR\xE06a\xFA\xF0\xB3
+Vn\xBB[\xB8i\xD4`\x9C]s\xEFQ\xE5\x9Dὥ@\xC3$\xE8t^Fܛ\xAFm^\x97/\xBC\xC9lfm\x8A\x8E5\xACm\xE1V.U\xCBDd}\xF0\x92F\xACSh-\xE22\xA2\xC1\xE7Z\x91\xFC(]l\xA8\xB0\xFA\xA6\xCBVI\xF4\xB6$p(\x85\xB1\x82t唽[L\xFD\xD8\xF2\x81Y\xC7" +\xA0=\x9EUYk\x88\x8F@.ė\xF2\xBC\xEB\xCDŋ\xBE\xE8\xC8\x82\x8D\x990\x95j\xB6X\xFA\xB1\xC1\xA8\x98\xA1\xA6\xDE\xB3\xAB\xFF9h\x87\xEF;8\xA0X=\x99e>\x82?E\xB3%<C1W\xB0Dw\xD4s
+\xFF\xDD\xD5\xEC`\xBB?A\x96\x9A\x8F\x8D\xE7\xD1\xD1\xE1x
+{L2BlXahe\xC8n;
+
+&`\x89\xF1\x948nW\xB2GQ\x94
+\x9D%\xA1H2\xC74\x92\xB4\xC8l\xEB\x8EeƂť\xF6\xC0~{\x82\xFC;\xC1\xA7\xD9g4\xCCG\xF1d\x86؛\xBE[\xFC\xE0\xB8dj\xC2:֙\x94\xB2\xC7M\xC4k\xFEO\xBA[\xFB\x92ġN%\xE9b\x93\x82\xEEx\xE7Qb]|1f{M0^\x90q\xBC c![#\xF0\xF3\xB2\x84\xDDC\x83\xEE\xED\xED\xDA`_̤͒I\xCB<\xB9\xCCt`\xA7\x93\x99\xB10\x87\xC8L\xFAS\xCA\xCCĄm\xD9{J\xCA\xF4\xF9dFg`\xE9Ȍ\xB9]N"3\x8B\xE5\xA1\xC0\xB1Bt\x87"N\xBF_+\xC4C\xF0(+ǫ\xC7\xC7?a\x85\x80\xF0\xB4r\x8F\xA4\xC4T\xA7b\xC4\xC7R\xA4\x97\x8CS\xE2>\x9D\xC4abl\x84\xE4\xE7\xB8x\xDD\xF9\xFF\Q\x80\xC7\xFA\x{DF7D}i(\x9A\x94\xA4-\xDB
+=*\xE8ܳ\xDF\x99y\xADc\xA25\x86\x8D3vL(\xCCN
+\xB98\xEC;\xC7;\xE1\xA8,\xE0\x80Ϥ\xE7\x86)\xF4\x98\xC0\xB3쎧\x8F\xAB-\xCC$\xE3\xB0'x\xFA`\xB5Y\xF8\xA3v|Q\x90\xE3}c\xBB\\xC2\xEF\xC25?\xBC?\x82\x82\x84\xF0\x90\xA2?_\xF2c\xBA.?\xDBѭo\xA60\x8E\x98\xFB\xCE\xF5K\xBD\xAF
+WJ\xD5\xC3+{\sW\x91m\xBE\xA4\xD4
+ў͐zŃ\xDA\xD4\xEC\xBE\xEF$=\xAF\xA0wb\xE3\xB2\xD8+\xA0\xBE\x97U\xE3\\x92Գh\x93\xE0\xD5f\xE9N\xFBK{d՝\xA7t`^C\xD3\xFB_9i\x86"]\x92L\x87~\xF1\xB5X\xF8g\x9C\xFDץtTJ\xB4\xC0l\x9B\xB5\xFF&:Q\xF6D\xE5\xF0\xE066*\xB6c\xEA"D"H\xB9\xA0\xD3:\xB8\xD5|\xECOI \x9E\x97\xE0\xEF\x8C;?\xEE\x8E\xE3\xAC\xFF\xAA|\xB3\xDC!eN\xE0\x93\xF6x҄\xA9\xD6}\xF0\xE4d+\xED\xF2\xC76\xAB*_˗ܸ]y\xEDr\x8Dh\xF0\xE2s룃\xFA,]֞M\xF2\xE2/\xBA\xCDp\xC0O\x95\xCBNj\xF3\x9E8\x86c\xB2\x8B\xB9\xA8CMu\xDBty*m\xB2\xC6
+*\xFE\xBDu\xD1/\x97\xE9\xA6X\x8FM\xAC\xECv9\xCB-gg
+6wk\xFA^\xCC1o\xEAu\xEF\xAAp9\xE7\xF2'έ\xECo\x91* 3\xD3Z\x94a\xED\xF6I\x89\xDA8\xC1r\x80e\xB8\xA9\x969\xCE\xF2\xDE\xE6κ\xFB\xBA\xBC\xA0\xDA\xBD:8\xA0J\xB3\xA4g\x9F\xC8ζ`3\xDFG6d\x9D\xC4]ʦ\xAA\xBFwk\xB8l8?"\xD12\xF8\x9D\xD3%\xBF\x89f\xE9G\xC9A\xE4m\xB9G\xD1\xF1\x8B\x8EJ
+G\x97\xFD=a\xBF0+4%=\xD9\xCFt6\xC6\xFF61)Q\xC7`\xABղ\x9F\xE06k\x9BФ\xFBX\xAB4\xA3\xBE#\xD1\xD024:\xE9!\xFE\x8A ~i\xD7py\xDDi\xBB8wn\xF68\xA1\xBE\xFA\xAB\xDB\xEBr\xF3Т\xF7\xF2\xA9eD\xDA,\xF8\xCDjD\x941\xF8d\xB6\xFD\xA5<\xB3\x9C~f ̋Y\xAD\xB7\xF9\xAExZ0\xDE\xCE\xC1\xB3\xCC\xE5
+f_<4\xBFe\xD5R\x85\x812\xAD\xEA\xCAQ\xE3\xB2h\xEEP&810Iݾ\xBEWd\xE3W\xD6)
+\xDD%\xB3'
+R\x84\xE8\xD8I\xA4A\xC3n\x9A\xA9^^%9M\xFAx;y8\xF1=y\xA3\xF6mN4\xDC,\xD6N6bOt+
+q\x90\xE3\xD9
+,\xE6]\xCD\x{1F0DD7}\xCC\xC41l\x99t\xE8\xD2,n\xEC\xF2\xC7\xFB\xFB\xAD\xDDB\xC7ݮ#P\xDE\xF3sП\xF8\xAE/\xE5\xB2xǺt\xBBu/]\xAC\xF2\xBAf.\xD4p\xAF+TݩJ\xEEs\x99C\xDE
+\x94\xD2\xE8 \x89\x98\x8E\xED\xB0\xDA\xD9W\x81\x94\xEF\xAA[\x94\xEC@\xABxA\x8Bi\xD2\xE0\xEF\xA88c\xD8d\obv\xD7Eo\xEB\xA27^\xFF rQ\xB0KB \xC1\xC2\xD6c\xAA4\xD28L\xC1\xB7\xE8\xCDL\xC6\xC7Uid\xA0nL܇\xF5\x89QCA\xCAy\xEF\x90Ws\xF4/ذ\xE5VډU4\xDC\x85\x9B\xFF\xFD+\x80*[\xAF\x86\xCBc\xCB\xD3F\xC4\xE2L
+ּ쿶\xF00>6\x94\xA1\xDAd~\xA0D\xF7_p\x90Ǟ\xC1^\xB8\xB1\xA5Z57\xE46S\xBF\xD8rM\x9E\xCD q \xFCĥ\x97\xC4\xF2P\xA5
+,`6J\x9C\x80\xEE\xF9z\xDBe^0\xFC- \xBD\xC2[\x82xzXr+#\x9F\hA\xF1dǻ\xA7&>\x99\xCE+*\xA5\xF0@\xAF\xDAb\xDE֔\xB31\xDF\xF0\xC7klrSa+\xDA;\x87ե\xF9\xCEp[\xE5\xEER\xA0\xB2\x9ES\x88\xA9I\xFD\xF4\xA7s\x9F\x84\xFB\x8CΫ9~\xE10\xA9)]\xB5=\xD7\xD8r\xF7\xB2\xF6\xB2\xAE\xDA/\x8C\xA0\xAB\xF7\xD2/\x8A\xEF|\x95\xB4\xD2~\x90\xC7}\x96\xC8V!\xECO\xD0f=Q!\x86\xF3\xA8W\xE8i\xCF\xE8\xF6{V--~\xC7i\xA9CmN\xD2,OC\xA0Y\x8EG\xA3\xD5,# \xF1|\x8E\x90a2}M\xACv:[m,\xCC!\xB6Z\xFAS\xDAj\xB6\xE5\x9C)){<\xD0g\xB4Մ\x8D\xAB\x89\xFDק\xF3;\xFB\xEE\\xE6\xBB\xEB]\xBE\xBDa(\xBD\x96\xC1*\x9A\x92\xAD\xB3\xEFXGw\xA7\xA4a\xBC>\xA9\xCEv+N\xC2Ml%\xC4\xFE\xF7\xAA\xF8)6g纰\x87u\x93;פ-\x{397A043}\xA3
+:\xCA\xF8J\xC78[W\xAF2\xE0 endstream
endobj
754 0 obj <<
-/Length 5786
+/Length 5804
/Filter /FlateDecode
>>
stream
-x\xDA\xED<]\x8F\xDBƵ\xEF\xFEz\xBB\xAE\x97\xE1p\x86C2y\x8A\xDB87FS\xDC\xC6[E\xD2\xAE\xC4]\xB1+\x89\x8AHy\xBDE\xFC=_3R\xB2\xB3\xDAU\x81\xD40\xBC"\xE7{Μ9߇I\x9Cf\xB3\xC4\xFF\xD9\xDF/\xF4\xE7\xA7\xEF_%k\xA3g\xEE?5^\xA1\xF6\xCD\xF5\xAB\xAF\xDE*mgy\$I>\xBB\xBE\x9D\xE9<\x89\x8BB\xCF\xF2\xCCĹ\xB2\xB3\xEB\xE5\xEC\x97\xE8}\xBD\xE8\x9Bv;\xBFJ\xF3"Rqϯl\x9AF?\xEF\xE7W*\x8B\x9A\xBE\xD9\xDEq\xDD\xE3<M\xA2\xF6\xB0\xE7\xB7_\x93$\xDDw=\xBF\xBC{\xFF\xE6\xC7?\xF1c\xB5ۭ\x9BEEC\xFE\xFD\xFA\xDD7\x92\xF0\x92)\xF8\x93\xE7\xDCfTm\xBEz[\x94\xB0\xAD\xA1l\xE5*-\xE1]e\xD0T\xF1Vb\\xB2=\xF5\x93}\xA6\xCE\xFE'\xF6\xFB\x90/\xF0ȧ\xD2"\xA03\xC5L\xA5\xB1)\x94"B\xA3\xE2,ϐ\xDE\xE9$:T\xC7\xFB\xEAm\x9A\x98\xB0-\xB6\xFAˍ\xFE\xA7^\xAF[\xA6\x89?\xCF-P\xCE\xFDzɽ\xC6\xD82\xCEM\xE9z}=\xBF\xD2\xC6D\xFB1\xE1\xCD&\x84w\xA4\xF9\xF3ķ\x93\xB9\xCAY+\x9BY\x9C*\x89\xCB\xC2\xC0L\xC9L\xCD\xF2t\x96'*\xCEqO\x98\xF8\x87\xB9*#\xE4i\x{16BE4A}\x9A^tu\xF5\xDEp\xC8\xD7\\xF00\xB7Q\xCD
-w{\xE4 uWo{\xE9 M-*G\xA8һ\xE5\xC5mv-\xF6\xAD\xFD"]㭌\xCCm\xDF\xCDuU\xE0\xB8*FZb=\xFDcd\xCF?\xAC\xD5⇒u\xA7d\xC0\x9C\xD1\xE2\xDF]\xEF\xEB\xFA\x9Ck4\xC5<7x\x99\xC5*\xD1\xE3\xC1\xEF\xF8\xCCvx\xE6\x80\xC0\xF0\xB3\xE6=\xD0A\xDC\xC0\xFB?\xF0D\x959#H\x9EGׄ\xB0]\xC0\xD0v+\x80\xAC?\xA6qw\x90\x87\xE1z} \xB0\xF6A\xFAZ\xC0F(R|\xA3\xABޝ6\x8B1\xB4\x81,8\xD6 \x94\xCB\xD5a|\xCE`\xCD7\xB2X<\xAE\xE2Q\xC3\xEB2E\xA6\xA1\xFB{,\xE5t\xAB\xA1"@\xA8\xFE5\xC9\xBAb+7γz\xCDmePj\xF9.\x89\xAA\xBEԟXO\xBD亓\x97i\xC3YTk\x82\xEC#7e\x906G\x9B\xC8xXlu\xEB\xC1\x98`\xB4Y\*\xC1\x81ź\xEA\xBA\xF3\xB5\xD4qm4R\xC3?:\x88\xBD-\x8E9\xD3qiSݭ\x9B\xF90\xB6\x8F\xF0\xB8(sZ\xB4s\xE4:\xC4~\xE0m\xD32\xD62n\xD5\xEB\xEA\xA6u\xF7\x99\xECka!*\x9B\x8E\x816p\xEC$6IR\xD2Ac\xB7q\xC4\xC91\xF6X\xC1\xCCI\x92D?\xD5\xD5ҳ\xE0\x8A\xE8<|h\xBAC\xB5n\xFE\xD4\xF0\xC0:\x81͂\xACPZ\xD2O\xA8Z*\xB5\x8E\xADO\x91\xF2h!9 \xD7 *0\xF6>Q7\xB0W\xC5Ixǒ.\x89b\xE0\xBFmܽ-lD\xBA`i\xB2\x95\xB7-\xDF{>
-|\xF2\x97\xBEd\x88WwOg\xB3_\xA8\x9B !\xE0\xD5C\xC7\xF5\x8E\xE7\xC3\xF3\xBA\xE9'`-DbK\xE6l\xF0\xFAa\x94\x9E\xB1\xF3\x91+\xBAY΄\x80\x95,@?$_tc\x96\xFC\xFEk\x9A\xEA\xF3(\x8EI\x8Bؚ TIs\x98\xEBz&\xD5 \xCE-K@C7f<
-\xAC\xD6\xCC\xDC; -\xC6P\x8F\xFA4HP
-!\xFC\xF0K\x97\xED\x80wI#g\xA4\xDA|\xD3v\xCCa\xA51Q!\xF8\xBD\xA9\xF9\xF7\xCE]q\x82\xFF\x96\xFBz4)JF:D\xEE\xB0%\xC9Oz\xD3L<\xE0\x87\xE4\x92u\xB3\xE47/\xFF\xE10^\xC3ֲ\x96\xA6\x97\x87\xCE\xD1\xDF/\xBBGi\xB8a\xC8vD\xB9\xF54\xDB\xED\x98(\x84(\xA5\x87\xAEv\xBB\xE5\xB6'-\x99v\xEEuxUp\xEDD\x8C% \xFCe\xC9Mo=7\xDFp\x81c8ط#\xFD|\xBB\xACH&\r\xA1\xD3{\xF3s\xF5^\xADa\x9BY>\x86\xDA\xDB=r\xB0\x97i\x91\x86Q\xC3\xC1\xF9v\x89H\x9F\x9B\xE8\x879a
-\x83h\x8BPh\xEFk\x93C&|\x9E\x92].D\xA3-\x90\xE7\xA1@\x96\xC79\xC0f\x92\xBB\xBA\xFFW\xEDs?\xBC\x98Mg``L\xA5\xA3Y\xDB\xED\xE8籠\xE6Q\x93m\H3.C6\xA2m\\x9C\xE2"\xDF\xF6\xC0U\xE3\x94\xCE\xDAɖ\xAE\xE6\xCC]\xA9,\x8D
-\xDE\xCF`\xD6\xDFO\xBFU\xA4q\x81G\x8C\xFE_s\xA5FKnz;}\xB8%\xDD 2\x96"\xC22\xDB\xB9wp\x97\x80\xF9G\x91\xC6\xF3n\xB6\x8Ba(\xCFd\x94V~\xE7\xA1rQ\xC6YbG\xFBy\xFF\xA6\xEA.,\xA3,(\xAC\xF6\xD3\xE0Y\xE2\xED\x9Ch8p\xD6p1>\xCDN㩁S\xCA[\xF1\xD5
-\xEB"M/\xC4\x9FQ!\xB3Ya\x9F\x87o\xB9&\xE7\xE2hN4\x83\xFE\x8E\xEFb\
-@\xD4\xD9d\xFC\x86\x8DqD\xC5qբF\xE4 \x8D͈\xC6f#8<\xEFڮkn\x9C:$tA\xB0{w\xF39\xA2Mc5Y\xE0\x8B\xC1\xA1p^&P<{\xD9\xF0\x92\x89{yKc1\x91\xE8<Wæ\xBCY\xED\xB6%\xDAT\xE2\xD1v\x80\x92\xE7j{\xA6\xE8\xA6@\xCE4\x95a\xBDn\xA6A\x88\xDAN1\xBDBy\x90s\xF0\x87Qu[\x90d\xF1nͯ\xAC\x8E\xAE\xE7eIG\xAD\xEF\xEBڙ\xF0l\x98Ѡ\xEA\xD8-\xBAUK\x98\xD6\xD0\xFEv\x8C\xBBZ\xCA\xAA\xB6\xA0\x8F\xE3v\xA1A\xBBr3t\xD2\xE3\x96{LL\xC5P\x8Aѯ\xB9\x88]K'.}®+\x82\xD1
-\xA7 \xFA-㹝\xD9xqk\xB1\xB1\xC92\xF1\xA8\x9FC\xEF\xF3Y\xDB\xD9908c\xBD\xFFG\xF5\xA1Z̯2\xA0\xAEWd4\xDDU \x86\xD0\xFB\xBF~U\xDA\xF8\xB2M\xD8M\x8C=?\xC1\xB6~\x9F&\xD3KAbS\xF9\xC5/\xD80\xEC\xE5.عc>傍\xB7\xC9va\xC0\xFA\xBBpI\xC8>\xD0\xE3K-y5\xE9f\xA4\x97\xBB`Ϲ_On\xD2\x85\xD0\xFF\xBF\xB2\x8D_\xDF\xF3D螃\xCA\xF5\xD1\xE6\xF7Gx\x82h\xF3\xFCe\x98~ .\x95\xCDB螪"\xC8WI\xD1V\x90ؙQ\xB0o+\xF9*-\x93G,:N\x80B\xFF\xF6
-xxN\xB6\x96d<RU
-\xCDs\x8EYץu\x8FP\xF5\xD5\x9Bt\xF6\xC7h\xF7_\xFC\xD8Wn\xF0\xABat\xA6\xC8p\xDF\xC2B`vpޤ\x8Ck\x98"\xBFm\xEE{\x9829F\xD0~-\xAE#R\xFAr\xAEs'm\\xCFl\xDDH\xD4i_\xEF\xF6\x85.&um,S\xB0\x8E\xE87>,\xDA\xED[\xB5d\xAC+\\x82\x98\xB5z\xE8\x8CGe\xC4\xE1-.\x85ߞ\x8F\x98\xFF\x839\xEA={\x9D\xA0j}\xDF5\\xDB"\xF8\xC8p\xE12\x81\xC4T\xA4-\xDA\xE6\xECj\xD6\xD6F\xE8Z\xA9\xB6\xBC\xCAX\xDE\xDE>
-E\x98p\x9F\xE78\x9F
-2q\xA1\x95]\xB9E)\x98
-+\xDAU{\x81+\x9C:\x8A:j\x8C\xDC%'\xF8\x9A\x97гJ8\xCD\xA8\xFA-Ri\xF4?i\x93h\xAA-K\xBF\xCBg\xF8\xB6\xC7E14\xF5\xA6\xDF\xF82\xEC\xDAdqj\xCA\xCFG\xB0cWP\x91\x9E\x86\xD5$]\xA6`\x9DM2ظ\xBE=\xF4;\xB7\x80\x9E\x9B=\xAC(ŋ\xC1M\xF8\xC8R\xA8\x8C\xFC\xD0\xFB(?\xE1\x84\xC3Sk
-Z\x89\xACR\xAC\xB3x\xB2\x83pif'Lي\x9C#K(\xFA\xD9D\xDFU\xE4,\xAC$v\xD4C\x80#zͷSOzA\xE1\x92\xCB,\xAE\xD157\x9E-\x81,g\x8B\xFA\x91\x87s\xCB\xE8\xA2R\xED n\xAA\VC\xE7%\x95\xB8)\xD3!ut\xBD\xAEv]=n\xD3ö\xB5\xF7y\x8B\x93m\xFA\xDCBy\xF4A\xBA~\xE8\xC6\xFE\xA5\xD0S\xD5nF\xD1\xC3\xFD@)\xB5oܳ\xA5AD"ʦ"r1\xA5@\x98\xF4Li\xA0\xA5\x91\xE5\xFE<\xB7&"Q,\x9BC'\xB6\xFC\xEA\xEA\xE1\xB1Z.\x87\xB2f\xB6i\xA3\x86(@\xACq\x99:\xF8|:S\xBB\xB0F\x86\xF0\xBC\x97~\xACc\x92\x82\xD1$\x8Fs\S\xC0\xBA\x844\xCD2r\x90{BʋR\xE4\xD6*\xA0\xC6;\xC4w,A\xAA#y\xD4A\x98\xF5a*\xC8\xEA\xD4r\xE8\xDFzg,:9\x8C$\xCBJ\x84\x99&\x98A\xBB\xFB0\xD6D\x96\xD0\xFBΎ&v\x81\xDB1&N\xB4\xC9\xEE\xB0ߵ]}{r2K\xCD 3edDi\x89\xA1\xC7a\xBD>Q\xF0\xC65\x93\xD4|2a\xA8\xC6\xFD\xBApx\xAE\xAB\xAE!
-Qji\xE01\xE2\x86\xED\xA9\xA5s\x80\xC7R\xBBS\\xE4\x84~\xBD\x8D\xB0.,t\xAEu\x8F\5?3\xB3\xA6\x8Fc\x94/\xBB\xA2\xC8slh\xC8\xC1ty
-<\x8D\x9Bz/\xBDء\xB5,\x86\xEE\xCDq\xFC4пX\xA5\xA9K
-EՂ\x919\xA6\xD1\xFF\xCE5\xC7\xF3\xE5\x80|;\xA7ݏ)\xE6\xA6%\xFE\xAD$\xBB\x9D\x90@\xB3(\xC0\xBD\xE7.\x9B\xA6\xB2m\x81\xAEw;\x87V>\xE82\x91$\xDF\xB8&\xA9\xDC\xF7c\xE7u2\xC9\xC0L\x9C \xC2Q]l,)\xC8
-4\xC4]m\x97bzKyO8HNK\x95}\xA90\xA9vR=2i\xBF \x88\xA9[Ϣ=\xB8`G\xFC\x92\xAB}\xB6@-)\xCCK(\xD9\xCF\xCF\xED(\xEEpd\x8E\xEE;\xEBL\xB0
-\xEAo\xAA\xE4|v\xA2ki\xB3\xD9(eDb\xD9ׁ%\xE38\xF1-\x95\x8B\x86\x84\xC0'\x90\x8C\xB2Sۀ9E\xF7g\x89L\xE2L/1k\x8EW\x9C+a^\x9EpLU\x90E\xE4\xEC\xAA0g\xD6ev\x81\xFAG9\x9Db\xBEh\xA7Q\xFF6:\x8CB-Y\xF6\xF4e>\xD04\xB5>v\xAE\xE9\x83Q*\xC9~U\x89\x9A/{\xA5\xB1\xB1\xE5x\xF9[\xCE=\xF5\xE9\xF4\x83\x87\xC7\xEE\x90\xC1A\xED\xEE\xD3zLۮO\xF1\x95\xA7\xB1NRn\x8B\xE1r%e]Dn\xA3\xF0\xFE\xD0\xD2(;:+P\xD0T_2\xA3\x95f\xDD#\xAD\xAD'3'\xC8Ӻ\xB9\xBA\xDA\xFA\xF8?\x8C\xDF\xF0;e\xAA\xD1.\x98|g\x98\xDAA\xE2\x9B\xDB\xB1t\xEA=\xB4>3\xF1#)hK6+ƻ\x8C=\x86\xE4A\x82\x900\xDB$\xD6F\xD2Q\xAE\x83\x83\x9EZ\xB9\xEC\x91S.\xE1\x82 \xC5\\xE9\xFA\xA3\x84"\xA76\xB0mZƍ\xBE\xDE\xEC\xBC}s\x84c\x8Bj?\xE4\xF3\xA6\xD6'?\xB8(\xA8o\xBD\xE9;\xB5\xA2\xCEӍ\xBEϠL\xEBR2\xE3\xF8\xB6݈
-\xE4\xA3%\xD9&Y
-1\xAEb-\xECcl7\xBD\xBB\x99\x935v\xE1WB\xBA憃\xA8\x9A\xC0\xB4\xD7\xDEwF\xB3̘\xFFі@*?\x81\xB3\xE8T\xD7v\xAC\x9A,Z\xD6\xDE2,*\x96\x8A6
-\x82K\xC2\xC6D#\xAEɎ\x80B\xAD1b\xD5 7؉l3\xD2GrTq\xF3gj\xBE\xE5j\xD7\xFD6-nS\xB5\x84u\x83r\xE5B\xD79\xD2Z3-\xDE(\x85\xAE\xC8X\xF6\x8C\xFE\x9Ee\xC7D\x8E\xF2\xC9\xE3 UC\x95$ ʫ@5\xF4\xA6\xE6\xF1m$\xCA\xD8_\xD9 \x90\xBA\xA3\xA1w\xDDwע\x9F\x8B\xEB\xCA\xC7\xEB\xBBh\x8E,*\xF1֞\x82\x80\x97-2mq\xDFB\x9E\xE8\xBDl\x98\xAF\xD9\xE1L\xD14h]\xCEi\xF0I\xA1cn8\x81\xF2\x89\\xE1r\xD9\xC6T҅\xDD\xDAi\xD8m\x86\xDDZv\x8Bz\x8Bw\xB8\xD3\xE5\xC8[Ñ\xB7*\xFAn~Ļ\xAB\xC9k"ֲ\xC1+2QQsۀ\xCAH\xEEV6|\x83Ƈ\z\x97Q\xA0C\x91\xBF\xB2Y\xD6N\xB3=\xFA\xF2H\xE6\xA9\xE2i\xE1t\xECiᜠP\xC0\xF4n\x91\xCB}C\xF1\xECO\xCA\xC1LB\xE9\x9C_><\xF8\xE5{y_+x\xDA\xED<ێ\xDBF\x96\xEF\xFE
+\xBD\xAD\x84u3\xAC\x8Bd\xF2\x94\xCC\xC4\xD9\x93\xC1N܋`\x90\xCC[b[K\xA2"Rn\xF7~\xFD\x9E[\x8B\x94l\xB7l\xB3\xC0\x86[d\xDD\xEBԩs?L\x9D\xCD\xD2\xF0\xE7\xF0:z\xA1??\xFF\xF0,\xBDZ3\xF3\xFF\xA9\xC1\xF0
+\xB5\xDF\xDD>\xFB\xEA\x852n\x96'E\x9A\xE6\xB3\xDB\xFB\x99\xC9Ӥ(\xCC,\xCFl\x92+7\xBB]\xCD~\x9D\xBF\xAA\x97}\xD3\xEE7:/\xE6*\xD1\xC9\xE2\xC6i=\xFF尸Qټ\xE9\x9B\xDDk\xAE{\\xE8t\xDE\xFC\xF6[\x9A\xEAC\xD7\xF3\xCB\xCBW\xDF\xFD\xF4~\xAC\xF6\xFBM\xB3\xACh\xC8ܾ|\xE2F\xD2^2\xF2\x9CیJ\xA0\xCDW/\x8A\xB6bt\x81\xAD\xDC\xE8^\xA0\xD1MMo%\xC1%\xBBs?\xD9\xEAܿc\xBF/+F{\xA9\xA4\xEB7YWP\xB2\x92\xB5T\xC3\x9B\x9A\x8Bp\xBB4\xD6\xF7\x8D\x8D\xFFdٕ+\xC0 ]0\x8CW\xED\xF2\xB8eX\xA5v\x86u\xF0\xF3J6\xA5\xE6\xFBM\xF5\xE87T\x8EP\xA5wNj\xDB\xEE[\xEC[\x87E\xFA\xC6;\x99۾\\x98|^\xBD\x85\xE3\xAA\xFDiY\x88\xF5\xF4\x8F\x91=\xFCp\xCE\x88J֭\xC8\x809\xA3ſ\xBC=\xD4\xF5%\xD7h\x8Ay~\xF02KTjƃ\xBF\xE63\xDB\xE3\x99\xC3φ\xF7@q\xEF\xFF\xC4U\x8C y>\xBF%\xEC\x80\xED\x86\xB6;d\xFD0\x8D\xBB\x807\x9B#\x81\xB5\xD2\xD76B\x91Z\xE0\xCB]\xF5\xFE\xB4Y\x8C\xA1
+dѱ\xE6+T-\xA5\x9Dg\xEBS\xA4<YH\xC85H\x82
+\x8C\xBDOԍ\xECUI߱\xB4\x80K\xA2\xF8/\xAF\xC0\x8Ax4\xD0dػ\xC27']\xB0\xB4Y\x84\xCA\xFB\x96\xEF=>\x85K_2ī\xD7Og\xB3_\xA9\x9B !\xE0\xD5C\xC7\xF5\x9E\xE7\xC3\xF3\xA6\xE9'`-DbK\xE6l\xF0\xFAv\x94\x9E\xB1\xF3\x91+\xBAY΄\x80\x95,@?$_tcV\xFC\xFE\x9B\xD6\xE62\x8Acu\x918;\x81*I`3`]\x9FHu\xA2s\xCBR\xD0ЭO\xAB\xB5\xF7\x80-\xF3\xF9/\xEBZ\xAE\xDA\xE8\xC0\xA8G}$(\x85~\xF8\xA5\xCBvĻd\x903Rm>\x88i{\xE6\xB0Ҙ\xA8\xFC\xDE\xD5\xFC\xFB\xDA_q\x82\xFF\x8E\xFB4)JF:D\xEE\xB0#\xC9Oz\xD3L<\xE0\x87\xE4\x92M\xB3\xE2\xB7 \xFF\xE10A\xC3ֲ\x96\xA6\x97\x87\xCEӏ\xD0/{@i\xB8a\xC8vD\xB94\xDB\xED\x99(\xC4(\xA5Ǯ\xF6\xBB\xE5\xB6g+\xED\x9BZ\xC0\xE4\x91 \x9F\xA7d\x97\xD1\xE8@g\xBF\xEC#9\xAB\x91\xABl+b\x9C \x9Al2~\xC3\xC68\xA2⸿jY#r\x90\xC6fEcs\x83\x9E\xF7m\xD75w^\xBA\x8F X\x8A\xBD\xBB\xF7J\xD0\xE5\xD1\xE9DM\xF8Y\x86\xE0X8/S(\x8F\xBDjx\xC9Ľ\x82\xA5\xB1\x98Ht\x9E\xEBaS\xC1\xACv\xDFm+\xF1h{@\xC9s\xB5\xBBP\x88tS gګʰA73 \xC4m\x8E\xA7\x98^\xA1<eC\xC89\xF8è\x80\xBA-H\xB2x\xB77\xCE\xCCoeIG\xAD\xDFԵ7\xE1\xB922\xA3Aթ!Zt\xEB\x960\xAD\xE7\xD7pW\xA1\xFD\xFD w\xB5\x94T]9@\xC7\xEDb\x83v\xE5g\xE8\xA4\xC7=\x{1D860A}\xA1&\xA3\x9Fs\xBB\x96\xCE\\xFA\x94]W\xA35NA\xF4:e\xA0\xAAlID\xE9i\x8D\x99\x86\xABC$\xE1\xC0\xB5d\xAF\x97o\xA6\xD6Wh\xD8\xF5\x9E\xEE\xEC\x89/1h
+,\xF6[n \xD7g\xC3o\xD5>@\xAFY\xB2\x80\xC0UlqzM\x92\xFD\x82Q\xC7_\xB7Ǎ\xB76\xC1{\xB0QT4\xB0\x94V\xAFY\x92!\xF7V\xA6\xD8.\xC26Q>\xBENF\xA3]r\xFF\xD8\xD6J+g\xC1\xC8\xC1\xF3El\xF7r\x85 m\x81i\xA4 ҟ\x95{>G\xD2 :\\xF7\xBCt\xE3\x89\xDAå*f\x96\xB84?Y\xEDu\x84\xB2""\xFF \x8Cga\xE3\xB3W\xB3/\x96/\xB52\x84ɣ1wG`\x8BWX\xB066\xD1y1\$\xE6\x98\x93\xEC\xFCF\xE4\xF8\xAE\xAF\xF7\xE2\xF2\xACY2\xA3=\xBA0\x82r-\xAD\xE8\xEEoeX\xBC\x83\xC1\x95mU_oe\xC6\x8E\x99\xFF}Q*\xA2G$\xFE4\x88\xF4kq\x8EU\x9BNf\xDD\xD0\o9\x89\x85,o\xA8\xA9VSς\xCD\xF3$\xCD\xFA,6Dr\x93\xA1\xCAбK\x805w6kt\x92\xA1r\xEC6\xA0z\xD7B0Q/2\xFE\xA31\xA1\xDD5}{\x88\xDA{\x97\x83\xBF\xFF\xB8ʮ\xE3փd\x87\xF5O}@\xE3q\x82\xE13Zs\xD7n\xA7\xB3\xF85v^\x9C\xCE\xE6wh%=R\xCD=\xFE\xCFn+B\x8C\xB7\xEF\xFF3+\xCB\xC5g\xFEO
+\x86W_ \xB1IFa<\xF73W+Đ\xF3\xDC(\xA5{/\xC0;\xC4a\xD0Tژh."\x9Cs}|\xFC\x8B7cA\u\xFA=1\xC1ͽg\xAE\x8F\xB3
+\xA2\x84J\x95_\x9D\xC3^\x8F\:\xE6Sh\xC0x\xFBפWl\xB8\xAEׄ\xEC\xA7\xFA\xD2+\xF5\x95[\xE5U\x83N\xED\xD4lj&W0\x8C\x82^o
+\x97\xB8\xA2\xA1\xE9\x99p\x8D\xB44x>\x89\xF5\x85\xB2\xE5\xA0xqAuG\xDBَ\xAE\x8D\x85|\xBF\xA9\xBC\xCBŘ\xD1\xD8XS\xAF\xDB͊\xBC8RY\xBF\xEB?\x93\xE0\x9C\xF39g\xC57\xDA\xF0\x95\xC8\xCF\xFB\xEC\xEE\x85I\j\xC7S\x8E\xAD<\xE8\xF5+'\x9F\xB6;\x84,x\x93N&֡;\xC64\xB62\xD5bk\xACv2\x8F\xF5\x9E\xD4\xF4UM\xFE\xB5f\x88\x83\xB5\xE2c\xF51\xA7\x87!\x80\xB4\xABxbM
+\xFF\xA6\x92`\xB4\x9D{
+BL\xE7\xDFpYȌ\xC0\xA8'n{.\x93xG\x8E\xA0[\xC5y+6\x88\xCE8\xEAt\xA8\xF7\x8A\xE5DŽ\xB1\x8ELRXG\xF4\x96\xED\xEE\x86m\x832\xD6
+.A\x8C\x83=tƣ\xB2ⶁ_&\xFC\xF0 IFXT\x93\xAB\x9E\x82\xB9\x9F?b$\xA1.z>\x88ZUW\xA70\x8E\xBB\x80qL\x80T\xA4\xCC\xFCxɻ\xED\xAD\x83 \xEF\x83\xD1\xCA܌\xB6\xF9#+2Ia\x94\xE2E)\x98
++\xDAW\x81+\x9C:\x8A:j\x8C\xDCk'\xF8\x9C\x978> \x96p\x9AP\xF5{\xA4\xD2\xE8y\xD2&\xD1\xE0]\x96a\x97\x9F!0\xDE(\x8A\xA1:Г\xEB\xE4\xD0@\xB4-?\x9C+\xFB\xA5\x88q\x89\x88\x82Ι\x9D0e+r\x8Eϡr;\xFF\xBE"\x97j\xE1$=\xA6\xC2D1\xF6`7\x8DG((\xE8T"\xC2\xC5\xC1\xBC\xE1\xC6 \xF3\xB9\x97\xF0\x84\xCE\xEFA\x99hZ%\xC6ȹ\xB1\xC4 Ay\xB5\x87\xD0J\xBCE*\xF2b(&e\x9E+\xC2/מc\xEA\xF9\xAA\xE9(\xD3\xD0I\xDA&ّģ\xACQ\xDAs\x9F\x98Eh\xC88\xDA\xC0\xE7\x8F\xC8\xE826\x92\x8FG\x85OPLe6ht\xA6\x90*qp1pc\xE3\xD3aف\x84\xB77\x92\x98\x94\x8E+d
+8FY\xC7k\x8A\xDF\xC7&\x80\x86\x92\x98\xEB\xF9\xC0Ӹi\x88u{\xB4\x96\xC5н9\x8DB\xFA\x97(\xAD}\x82-\xAAl\x8D\xCCQ\xCF\xFF{a8*2\xE4\xDB{\xED~L1\xB7-\xF1o%\xDF $\x90\xF06J\xE8\xB9˶颜e\xA0\xEB\xDDޣU]M%U:\xAEI*\xF7\x9Bq@:\xC9cM\xBD \xC2S]m,-\xC8
+4D\xAF\xEDVbzӼ'$\xA7\xA5ʾT\x9C;\xA9\x99\xB4\xDFE\xC4ԯg\xD9}\xC8(~\xC5\xD5!碖\xC4\xE6%\x942\xE6\xF6w82O\xF7\xBDu&چ\xF5W+9\x9F\xBD\xE8\xDAQ\xF2q6J\xBC\x91\x8C\x80Md\xC98M\xD4r\xD1Ђ\x83x\xCDi8\xA3oOk\xA7\xB6{\x8E\xEE!\xCE\xDF/9%Ǜ^$\xEE؞\xA6\xFFxV\x82\xE5(\xC89☪\xB0 \x8B\xC8\xD9Uq\xE6\xB1\xCF_|\xEE\xD3N2c\xC5|\xD1Ns'\xDC\xFC8
+Xe\xD93\x94\x85p]\xEDBb\xD3?F\xA3T\x92C\xACR5 ϶A\xF6҉u\xE5x\xF9;\xCE\xE0
+%\xCC8<v\x87jp\x9F.X`\xDAvs\x8E'\xA8\'&\xD5>h\x83K\xCA]\x99\xFB\x8D\xC2\xFBCK;\xA0\xF3\xAC@AWP}ŌV\x9Au\x8F\xB4\xB6\x9E\xCC`\xFC\x99Z\xD7#WW\xBBE\x89Y[~\xA7L5\xDA\x93\xEFdH|\xF3\xFB \x96NC\xBD\x82\xD6\xC3\xC7:>`$EMV\x8Cw\x99ɣ4+`vib\xAC$\xF5\xDCF=\xB5r\xB9#\xA6*|\xDA
+\x8A\3\xF5; \xE8\xD6.\xB2m:ƍ\xBE\xDE\xEE\x83}s\x84c\xCB\xEA0dEkRH|,Y\x8C\x83\xF7\xC1\x{12D768}\xF3t㣯\([$\xA6\x94\xFCB\xBEmw\xA2\x85\x98S\xB6IVC\xA4\xB0X\xFB\xC8\xDBM\xEFn\xE6e\x8D}\xFC\xAD\x95\xAE\xB9\xE3P\xB4&2\xED\xB5\xF7\xA7\x9D\xD1,3&\xC76|\xFA&\x92\xCA\xCF\xE0,\x86&7Vm6_\xD5\xC12,*\x96\x8A6
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-08 13:10:36
|
Revision: 2440
http://sourceforge.net/p/jsbml/code/2440
Author: niko-rodrigue
Date: 2015-12-08 13:10:33 +0000 (Tue, 08 Dec 2015)
Log Message:
-----------
updated user guide with the latest extension graphs
Modified Paths:
--------------
trunk/core/doc/user_guide/User_Guide.pdf
Modified: trunk/core/doc/user_guide/User_Guide.pdf
===================================================================
--- trunk/core/doc/user_guide/User_Guide.pdf 2015-12-06 18:23:39 UTC (rev 2439)
+++ trunk/core/doc/user_guide/User_Guide.pdf 2015-12-08 13:10:33 UTC (rev 2440)
@@ -13462,7 +13462,7 @@
@\xE5u\xFB\x89\xE9IS^G\xCF\xC9\xFC7}\xE9\x9D><ՇK}x\xA9g\xFAPEYB3fUw\xDC<\xE7sX\x99N"\xF3Li\xAEeu\xEFU\x8Fv$e\xFDUu5\xAC[\xED\xFD\xC3U\x8Dؑl\xCDMMw} M\xC1q\xF4\xC6A:(,\xB8\xA6\xFEI)L\x8F\x96MzY\xE8ܭLrN|\xA7|
L\xDDLr݉\xEB\xD5O8\xD7\xC0J\xBD\xEF2\xF3\xBETĕ.'\x80g\x86FG.\xEA\xD3\xB3\xFB#\xA6q\x9E%\xF1\xD7\xCB*\\xD8\xE8y\xD3Q\xB3L\xA5(\xD5zЮڜ}߅@.\xE49L>6>\xF0\x9D\xB9\xCD\xEF\x8F|^\xAE\x8ED~/\xA4r\x88s\x9C\xD9"\xE1f\xA1\x8A\xCE,&D{\xB0\x96q\xC7z1܁bzH\xF8\xE2\xA1,\x8F\x93@+\xEEm\x99\xC4wθ'4I\xDD\xD6dknr\xB8j6\xC5n\xC2\xBA\xB9\xEA\xEC\xDF-Lٶ\xDCl{/\xDE\xC5@\xB0-\xB8A,8\xD7\xFE߉\xE9\xB9\xE9Ŧ\xF2\x91\xFF\x90\xB5\xB8Ӻ\xF9W\xC9\xFBѡ\xD5\xB6Ri\x98\x90Z\xC0\xBCY0\xD0Qm\xB5/\xD9-\xD8\xF77\xEF#\x9F_=\xF9?F\x8E\x926
+\xB8A,8\xD7\xFE߉\xE9\xB9\xE9Ŧ\xF2\x91\xFF\x90\xB5\xB8Ӻ\xF9W\xC9\xFBѡ\xD5\xB6Ri\x98\x90Z\xC0\xBCY0\xD0Qm\xB5/\xD9-\xD8\xF7W\xA0\xF7\x91\x89ϯ\x9E\xFCFߒ7
endstream
endobj
203 0 obj <<
@@ -13505,18 +13505,21 @@
endstream
endobj
627 0 obj <<
-/Length 1098
+/Length 1103
/Filter /FlateDecode
>>
stream
-x\xDA\xEDZ[S\xDB8~\xE7W\xF8ў٨\xBA_\xA1S:00\xDDBv\xF6a\xBB\xDEX!Y;\x9B\x98\xD2\xFE\xFB=\x96e\x9B\x80\xA1\xC41\x9D)\xF8\xD9º\xE9|\xFA\xCE')Q\xE0:Y_\xDDɸ\xE4\xE2\xE3\xEE\xAD\xAA?W\xA0\xC9\xC2ף\xF1\xC1\xBBc\xC2d\xA0\x90\xC6X\xE3i\xC05F\xC2\xE8@ \x8E\x91\xC18 \xFE
-/\xED$\x9Fgi4\xA2J\x87\xEF\xB34\xB7i\xBE\x89\xFE\x9F>\xD3\xAC!#$J\x95e\xB6\xFEe\xDEkV0U\xC0\x8A\xC7
-aʂ\x91\x80\xA2\xA4\xB4E#"d\xDBC<\xF1M\xBE\xC5zÄxS\xD9/mS"\x93\x88j\xA0"j\x90\x86\xA7\xE3"\x8E("й\x96,<I\xF3u\x96\xDCL\xE6\xE9Uɐ\xA9\x8D(o\xCB\xCC$[\xAE\xB2\xD4\xA6\xCB\xC7iR\xBE؈\xE1\xF0PiRW\xCC\xF2\x99]?\x9FXiD\xA4\x90\x85\x9D$\xB9 pM\x97\xDAt\xF3\xE2\xB9\xEE\xA6\xA4t\x8BFR*\xEE\x86K\xC2\xA9\xFCp\xF7G\x9C\xC2'\xAE\x82\xC1\x88KҸ\x98\x96kU\xF4k\xCA~\x90\xAA۳\xF9&\xFF4m\xECkZ\xA5
- Ϋr\x9D\xBD\xAA\xA1\xFCg\xF9\xF4\xB5\xC0\xA5kG-0c \x84\xC8\x98\xA9\x80\xF3Lrn\xF3Y\x96x\xA2\x98\xFC\x90\xAD=\x8B\xACm\x9C\xB7L\xF6Ͽ \xCF:\xE3\x8Bp\x8D\xDD\x89G9G\xED\xEBz92\xB3\xE6\xC1\xC0=\xC63[:x\xE9QAB\xD5\xD6\xD8\xFFn\xE2\xC5\xE6*bFV\xE5~ki\x89\x83\xF4VU\x81Y\xBC\x99\xBD\xCF\xDB\xD6CAM\xD3T\xD3\xB6I\xC0:R7:Y@\xEC\xDA
-\xE87\xC0\x82m\x98\xA3q\xD0}`\x8E3ĉ\xBE\x8F\xB9\x82~W\xE1\xC9r\xB5\xB0K\x90*5\xD1\xE4\x81~\xBB\xBE\xA7`n\xD7E\xC5p\x9EW_\xB6(+\xF6\xFB\xC5ˣ\xF3\xB3\xF2mO
-\x8E\xAF\xBA\x81
-\xA0\xD0שq\x9E\x80+x\xDA\xEDZ]S\xDB8}\xE7W\xF8љ٨\xFA\x96\xFC\x9Dҁ\x81\xE9\xB2\xB3\xDB}\xF0\xC6
+ɒ\xD8\xD9ؔ\xF6\xDF\xEF\x95,ۄJ\x8C\xE9L\xC1\xC8\xD6Ǖ\xEEѹGR0\xA2"\xC0u\xB2\xB9\xBA\x93q\xC9\xC5\xC7\xDC[T\xAE@\x93\x85\xAFG\x93\x83wDŽ\xC9@!\x8D\xB1
+&\xB3\x80k\x8CD\xA4%8RD\x93$\xF8+\xBC4\xD3b\x91\xA5\xA31U:|\x9F\xA5\x85I\x8B|\xF4\xF7\xE4\xF4\x896`
+A Q\xAA,\xB3\xF5(\xF3\xEEXG`cP\xACs\xAC\xA6,(JJ+\xD0hL\x84l{\x88G\xBEɷXo\x98\x90\xC1oj"\xFB\xE5\xA2mJdQ
+TD#\xA4\xE1鸈#\x8At\xAE%O\xD2b\x93%7\xD3EzU2djF\x87\xB7ef\x9A\xAD\xD6Y\xEA\xD3\xE5\xE34)_̈\xE1\xF0PiRW̊\xB9\xD9<\x9DXiF\x88H!\xAD\x9DGH\xF2(\xC05]rh\xD3=\xA2ϽpG0%\xA5[4\x92Rq7\B\x86H\xE5\x87˸\x9F\xB7\xFD<\xE6>q\x8C F\\x92\xC6Ŵ\xECX+\xDBoT\xF6\xCB\xC0\x80Tݞ-\xF2\xE2Ӭ\xB1\xAFi\x95*$8\xAF\xCAu\xF6\xAAB\x84\xF2\x9F\xE5\xD3\xD7\x97\xAE\xB5\xC0\x8C\x81"w`\xA6^+\x83@?\x89\xD9\xDCS0\xB7[1\-ʊ\xFD~\xF1\xF2\xE8\xFC\xAC|[\xC7S\xCB[\xD7\xF1Uw P\xFA:5\xCE#
+\xDE\xEBQs\xDA\xED\xD4\xA8\xC5\xEC8ں\xBF\xA3$\xD0\xC3\xCFs\xCF WZ\xE4
+C\x91\xFDC\xA5aP\xC5%V\xFE\xAC\xD6\xFF3+\xC8\x88sO4\x96f\x88\xD4\xE1a\x89\x96ԁ\xE4vi\x92\xAB\xD5^\x97[\x81m]\xE2Zp\x89\xA7\x9F\x95\x96ٺ[\x96\x82e\xD3\xF0xz\xB0ei-\xFB^B\xF90\xBF6~\xF3\xF5\xF9\xC6\xE46\x82z\x90\xC1\x8F4\x86\xEA\x87\x9F!K\xF6\x83\x9D\xA1jz\xCF1\xEC\xCC\xEE\x91ç\xB5\xF1!\xBE\x88\xF3ko\xEA\xC2\xFF\xEB\xB4Y\xB4\xC0\xEEv\x8D\x9Ae\xB6\xB6\xD3\xDF\xDD\xF2蹖_\x98و``
+\x93NM\xDE\xD9\x89\x9Fk\xC8IZNʷ\xEE6\xB0=\xAEE^\xE8W endstream
endobj
652 0 obj <<
@@ -13561,7 +13564,7 @@
'\x82\xF9oq\xC1\x89\xE2Q\xAA\xDAU\xCB\xEB\xBAOp\xC8\xEEm\xE2'\xCD7\xA3\xD2\xD8\xEA\x82\xE9\xF6\xC1\xEF'\xC1\xA2Z\x8B,\xF4rɺK\xB6\x992A~
\x89`v\xEA\xCB\xE0^\xF6\xD7sm\xEC/A\xFE\x8F\x92\xE1\xD3\xCE\xC2\xFF\x842\xC3\xCFUƅ&\x80Y@\xFA\xA7\x8DP\xD6_\xE9A\xE8賦O\x8Am.\xF9\x9E~\xDC\xD0gC\x9F\xAB\xD0 _"\xBE\xA4m\xFC\xC4\xFAqF\x9F_\xD3\xE7O\xF4^\xC1\xF0+\x80e\x94\xF4G\x85WZ\xF7\xF5\xB7߭\xCBORF\xFC\xD7(\xFA^\xFF]\xED\xF8\xAF\xCB\xE9k\xBE\xC8 \x939\xF1\xAF:\xB8\x8F\xFF\xAB\x85\xE7K\x96\xDE\xD7ȴA
-t\xE0J\xD27>2\xCB\xEC\xA6\xBBW\xFC7\x99\xB2\x9B\xF0
+t\xE0J\xD27>2\xCB\xDC\xA6\xBBW\xFC7\x9A\x9B\xF1
endstream
endobj
672 0 obj <<
@@ -13595,7 +13598,7 @@
\xBD\xCD)E\xF9\x8A\xAD\xA9\xE3o\x9C1\xA5\xF8&\x9F\xB3\x8C\xE9\xF3z\xD3\xF1l\xB4\xCA;L\x97\xACd9I9\xE80nP\xC7浚\xBF\x81/\xE0<\xB5\xC6\xE8\xB7Uc\xB2@+\x8D\xB6\xDB\xD7S\x9A\xAA\x85\xF3\xE5\xA9;\xA7|\xBCў\xEEx\xE1&4%\xC2w\xE2\xB2\xEC\x8F\xD3\o2\x98\x88\xC1\xFBi\x96j7H\xCFLx\xEEP\x86\x81hvM\xDE\xE5\xC8v\xE5y\xD4˹Roa\x88\x8E\x89\xCFiw\xEA%\xEE\x83#
\xF55\xEB\xF9H\xB5M\xD0F-\xCAn\xA4O7\xD6E\xD1P\xBB\xA9zM\xFBv2r\xEE\xD2\xD2\xDB\xD2-lۭ\xE9\xFB\x90\xC2\xDB5\x90\xB8s\xFC\xA8[&\xB0\xBA\xC1>\x88\x9Fd\x99\xFCz\xAD\x88\xC7\xE0(3BE\xAE\xAC\xF6x3҃\xC2\xF3f\xE46\xAC,\x89\x8B\xF9d4\x84%\xC1\x8F\x87yd\x83\xF9d\x83i\xF6\xF0\xC9N\x9A\xD0'-X\xA7:!%;\x9E\xE8\xE5|2\x9A\xE6jK\xFDN\xD9ž\xBF9\xC5\xA9\xF8\x8A\xCDi\xCB\xE08s\x9Ar\xA7g\x99\xD3\xE7)\xF40\xA7\xE3\xD9h\xD5w\xA0$.閁l\x81\xAF M8v5\xF8\x87}Y4\xED\xA7\x8D\x93\x85\xDB\xCE\xCA_\x91v;\xB2!n׃\x90\xED8V\x95\xCF8\x83ֳ6f;\xB3mv\xC6!\xE5^ \x88O\xEB]\xBDLt\xA3\xB7sF\xE28;
\xDE6Q6$.kW\xC4$\x86ZX\x87\xAEXܴ\xDEX\xAD\xAC\xAFT8\x88\xFD\xA3u\xF6\xD0'۹\xA5\xB0\xCCE+\x9C\xFAn6\xCEA:\xF7Q\xC7@\xB4\x81\xB5e'\xF02]nY\xE9\x92,\xBA6լTT\x88;t\xE1\xFB\x8D2z7Ř\xC3+\x8C\xB9\xB5\x81I\xFA\xBC\xB7\xA9C[\x99\xE6\x96\xF7\x91Gi\xCC +鈛\xF1aq\xB3\xB6\xE7R\x8A\xEC\xD0\xFAx6\xA2\xC22O.2\xE0Ϟֱ!\xA8\x85z\xF3;\xCE,+\xC6\xD4q/&\xC4\xD5Hn\xBB\x95\xFAO\xFA\xF1JnmU\x85\xAA\xDA\xF8fK\xB4\xBF\xFB-\xF0\x8B _\xF1\x8EK\xCBߨ\xD1B\x92\xC7\xE7\x8E|\x9E\xC0\xF3c\xC5x&\xDAwX\x93B\xFC\xFA9\xDB\xE7\xF1oݦ\xF6\xB1\x92\x93\xDC&\x90\xB3\xC3ͷk~\xFB\xB2\xE97A~\xE4ӟ\x88\xFD\xD2w\xB3O?\x9A=\xA3\xCA\xC0\xCC\xF0\xBB\x8E\xCC\xF8\x94\xFF\x80\x913V\xFB\x9E\xFA\xF4p\x8C\xC35\x8F\x93\xE8'uqT\xBF\x95\xFA]\xDAB<\xE6\xEAXF\xAC\xC6z\xF7\xC4[u\xF1N\xFD\xBEQ\xBF\xBF\xAA\xDF_L\x94;\xBF&\xA7xt|5\xC9RB\xA9{\x93\xCF\x9EHS\xAA\xC31p\x9AIWꇛb\xA7X\xA8\xEF{\xEB\xAF{\xFFT6\xADC~h\xF0\xDC\G\xCDK\xA1\xBDݳ/Kv\xF2\xFB\x8C\xC1 Ǣ\xBFM\xA12uV\xABH\xF5\xE5\xA8\xC0_\x91\xA8\xEE\xF9Q<\x95\xFFx\xDAdq
endstream
endobj
610 0 obj <<
@@ -13631,7 +13634,7 @@
endstream
endobj
711 0 obj <<
-/Length 4898
+/Length 4897
/Filter /FlateDecode
>>
stream
@@ -13676,7 +13679,7 @@
\xB5\xB1':?Y@\xFE2y\x9DQ\xD5p\xF0\x82ߣ\xFD\xD6iZ\x9ED\xB4\x9B\x81yb\x8F\xED\x9C\xF6e:\xCDք\xA3\xC2n5\xE9\xF3\xDC\xDBQzRz\xB9\x81\xE6\xB2\xF0\x83\xDB+\xE9Y\xF5\xFC\x95\x97M\xEE\xECsh\xBF_(L\xBD\x9D_'\xEC\x87NbH\xFA\xBD\x8E\xE5g\?<\x93\xAD8\x{15BACF}T\x95\xB6\xB5\xA4n/\x85\xA4\xDEF6:>\x98\x86\xE0\xCB:\x9B\xE5\xF3\x8F8 1\xD7\xFBz#\x9B#\xF0\xBC\xC8F\xBB\xDA\xCDK"\xDB\xD3#\x9C\xD9\xCE'\xA3\x8Fl\xCF\xE5ėK<TY\x94\xBEx\xE2ᆽ\\xE2\xF1\xDC1OI<\x86ӿd\xE2qa\xC6\xF6\xAAsIΞ?\xE8L<\x98W\x91^2\xF1\xB0/Ļt\xE1\xDAg~KBEIX\x98\xCB\xE7\xECn\xD8˙\xCEs\xC7<\xC5t\x86ӿ\xA4\xE9\\x98\xB1\xBD\x96_\x92\xB3\xE7\xFAM'\xCAh\x8D\xE5\x82ߒ(vYbeOF#\x91
d _/q\x9E\x87F\xA0\x96\xBD(\xCF~z\x84\xD0\xC8\xF9d8~&'\xBE`\x9E\xE3\xCB\xDA:\x9E\xC0\xE2H\xF2\xECI\xF53\xEC\xA7\xF2,\xA7ҸC\xD9\xC4g\xC3\xFF\x89\xB0&\xBCy\x98\xD9?\xE3\xD3ak\xF3\xFC\xAF!\xC6\xC0\x99ɕ\xE1ݳ߾\x87\xF8mb\xDF\xF0\x8D\x91O|\xF1\xB1\x8FĎ\xBF{\x85\xB1<~\xE6*h\xF2_\xE00\xB9t\xC9\xDB2\xF0\x85\xC6+%\xC1\xCFt\xB2\xA7\xBF+\xFA;\xB7\x8Dt\xA4iC#m\xD2s=\xDE\xD2\xC9;\xFA\xFB\xFD\xFD\x85\xFE\xDA=\xAF\xE0\xFCrH\xB5\xF1;\x8BInB\xA5\xDC\xCB\xEC:ɤՀb\xA04\xCF\xFAV?ޕ\xDB\xCEc\xED\xA7l\xF6_co;\xFC\xA8C\xC9\xE0\xCA=\xEE:\xF8\xA0\xED)\xDFQx\x8C\xB3\xF8\xC0q\xF0\xDBV.%
-\xA6\xFCC\xF5V<\xD5\xFDl+\xA6\xFCC\xF5V<\xBD\xECg endstream
endobj
731 0 obj <<
@@ -13684,43 +13687,37 @@
/Filter /FlateDecode
>>
stream
-x\xDA\xED]s۸\xF1=\xBFBo\xA5fb\x9A-\xAB+\xA9c\xAF\xB9\xC1\xF7\xE2u\xE2\xADhC~\xB8@\x84\xAC\xF9\xFA\xD2t\xBAB\xC4\xEC\xEC{rnD\x80\x9A\xC3 s\xC0I\xE0\xDD\xDA\xCEK/\xEB\x86Մ|\xD3\xD9B\xE4l.\xB4\xBE7\xD4\xF7\xF8!\x8B\xE4\xA5*\xA07\x89\xFEz\xA5L\xC6.ڔJ}\xD8\xEE\xFE\\x8Fy7\xD3Cz4P\xF0\x8A/\x9B%\x9C\xF2|sc\x91\x80\x9D\xEE\x90Pv|\xBD\xB0\xA8\xAD.
-\xED\x80\xFE\x96\xD4
-o\xA5\xB3\x8Fq\xE4kmX\x81!\xC0\x8D*ָRwİ\xAE\xB9\x810+\xC3nb\xED\xED5t\xCA-0\xAD.#E\xB4\xE1D\xDF+\xDE|]Wy/Lۢ\xCA\xCD\xC34L\xDB\q\xCF3\x81XHC&\xE9\xC0\xFB\xE8\xE0ψ\xA1\xAA)~ব9\x84\x97\xB8tenz*\x9DE\xDC\xC2\xFC\x89W6\xA8K \xEF\xB9\xE9M\xB4\x87\xBD\xEE\xCC
-x^\xA2B+\x92\xFDc])QE*!QRL\xF8\xA9\xD6,\xBE\x9A2\xBF!{RMB{4\xD3\xF3a\xEF\xFD0Uv̏\xC5r\xF9\x87\xA2.\xAF\xD7@yGBI?
-[(2\xCB\xC4#Ѣ\x94&\xED,\xCB\xF2\xC5:\x88\x9F#\x81
-c?\x96\xEDtD\x9B\xB8_\x86\x8E\xAE\x8C\xA8\x9A\xEF/\x8Bb\xCDW\xC5 뺤ǖd\x8DTA\xB2-<&\xA2\xFE\xFC-{\xBB\x99\xFA\xA1\xED\xB5\x8EY&0'\xBB\xDB\xC0jeؓ=p\xE2Ñl\x84\xC5?\xEB\xCB\xD5\xF2\xABs\x8F\xD2\xDAW\xF0Z3\xB9\xDDO\xE7x\xAC\x96q뚷5@g<\x8B(\xD2\xD6\x81T\x88/\xE5x\x8Bg\xFFz֡\xCD%\x88\xFCD\xAA\xD9bE\xE0\x87z@\xED\xF0\xF5\xB6\x98]=\xFBˠU\xBEk\x90\xEF\xE0-\xFE3\xB8\xCB\xD9;\x80v\x8145!ϣ\x83\xC3\xF1Θx\xC8aļx8\x87V\xE9m'\x80\xA1A\x8C1\xC7\xED\xC0\xE1N\xF60\x8A\xBC\xA1\xD3\xD8qj\x89F\x92T\xFE\x80cݒ\xCC\xD8iq\xAB\x9Di\xBF\xBE@~\x8DY\xE0\xE3\xE43z\xCE\xE1d\x82\xD8[\xBE\xDD\xFC`\xA9dj\xC4Zҙ\xB3\xC7O:ț\x88\xD7\xFC\x9F:t\xB7\xD6\xF7 ( }\x9DH\x92\xC5Q
-\x98G`\x9D\xB11\xF1Ř\xE35FA\xCA\xFE\x82\xD8\x85l\x95\xC0Oy \xA7\x87\xD9\xDB;\xB5l\xC0\xBE\x98%\x9EIb\xB6yr\x9E馝\x8Eg\xC6\xCE9\x84g\xFA˟\x92g&FlK\xDESb\xF6\xF8I\x9F\x8Egt
-\x9A\x8EL\x99\xDA\xE5$<\xB3\xC8f\x88\xA2\x93\xD0a\xF2\xEDj!\x80Gi!8^=<\xFE-d\xC0\x8Fk!'\x80\xD1Q\xF0HLL#:\x96"q\xE2^2L\x88\xFAt\xFAqd<$?n\xC1\xC4\xEB\xE2[\xFCsEc\xB4\xF7\xE6\xA6!oR\x9C\xB4d+\xF4(\xA7sO\xA4浆\x89\xD6\xE86N\xD90!75d\xE2\xB0el
-\xB2- ꓘ\\x89N\x89;\xE7%\xBA\xBF\xFC)\x95\xE8\x89ےΔ\x98=~\xD2'T\xA2l\x8D\xA74<\xEB\xCFk֢\xFF\xDE4ͦ\xFE\xE1\xFC\xF8\xDC\xF2\xEB+]4\xE7\x9Bs\xF2=\x9Ec\xDBy\xB3ݭ?\x9D
-\xE6\xFC\xDF\x84
-\xBB\xA3\xED\xDF<\xD1A\xEB`a\xC0\xE1\xE8\xFCv\x85u\xE0q\xC2ƫ\xF0$a\xFD\xF8\x84\xF5\xF1`\xB4\xCC1O\xA9\x9Fk\xB0vga
-\x90\x99\xA4\xB4\xFD\xEC37\xE1\xCCQ\xC1O\xD2\xC0{1 \xE1G\xF0\xEE7)2|\xFF\x84\x8A\xE8\x9A#\x95
-\x82\xDD&vq[\x91\xA2\x9AS\x83h\xA4\x94]\xF1\xA06\x8E\x8E\xDD\xF7U丧"\xF7\xC26\xD4\xCE*2\xF5\xBD\xAC\xAB\x9F'\x8Ez{/ֹ
-}\x97&~ӅK
-z\xE24/\xA1\xE9\xEDϜA\xC2\x896c\xA4\xBF\xF8R,܀_\xFFu \xC5
- \x98z\xB2r\xDFD\xE1a\xC2\x87Q\xCC0R>\x90cg$\x84\x94
-EPSs\x9C"\xF4\x9E\x97\xA0\xFC\x8F\xA6u\x87a\xDAU\xB6η\x88\x99褍\xD5E~\xA2uzҸ}\x9Bef\xB7:\xF5\x84\xF6\x88\x94\xD05\xE9\xBF\xF9)lg\xB52V\xBE\xA2}d\x9A\xFD\x82ćW\x8B\xCAim\xE3\xA6+\xBB\xB5;\xCD\xF4;jC\x9C\x9F\xD8ԃ\xE1\xE40\xBE\xB3\xC8PD\xBEH\xC5\xFFbKC\x9D\xFA\x89\x88\xFE\xAB{\xAAh*zo\xB9\x9Cv-\xDA \xDA0\xBD:\x88\xD6$i\xDC\xD3Od\xA7[\xB0\xCE\xEB\x9B\xD2N\xC2--\xFDH\xC7=\xC0_0\xC2/\xCD\xE6\xD7=\xFF\xAEu\xFAff\xDFk\x87\xEAỿ\xDC]\x97\xEB\xFB6\xBD\x97$G-#rH\xC1\x88T#\n\xDEG\x93\xBD\xECn噡\xF43\x83`\xDE\xCCj\xB5ɶ\xC5\xE3\x8C\xF1z\xAE\x81\x9C\xE5V_ܷ\xBE\xBCj\xB12\xAE\xEA\xCAb\xE3\xB2hn\x91'8K.N칾Wq▙\xC9
-ͥh\x8F\xA4\xF0S\x90\xB1\x93p\x83\x86\xD34U\xBD$CZss?\xF4\xE1\xB6\xFCp$\xE0{\xFC\xE0\xED\xDB,k\xD8U\xAC,o\x84+\xE8\x96B/\xC3@l\xE6m\xCD\xF7p\xB6\x97L\xC4!\x99\x81h7f\xFB\xC3\xFD\x8Dݍ\xD6v\xA3\xC3\xEET\x83(\xEF\xF89\xC8O|\xD7\xE72o'\xBCeY\xBA\xD9ؗ.\x96Y]3j\xA8W-@\xC7Z7T\xFB\xE2\xD7?\xF1E\xB9>\xB0J\xD1d\xB4\xCDy\xC1\xA9V\x98\xFD\xB9\xAC6\xABb\xDD\xD8\xEC\xCE!|\xD8\xD3q\xE6\xC4\xF7pP/kMhhyni\x94\xC0\xF4\x90\xE3\xC1\xE8Hx$&\x9E\xB4\xEA-\xFE涓
-չ\x94\xCFЎxC7\xEF\xE8\xEFK\xFA\xFB\x96\xFE\xFElT|\x89/\xC3TP\x9E~\x95\xB0UR>\xA80\xBEO\xA2L\x8F\xB67٦\xB1\xCE2\xFB\xC1\xFA\x9F\x8A\xA6s\xAC\xC1\xA9`2\xB5m\xB69\xF6\xEF<\x84YL\xCDVz\xBF\xCE\xE1e\x99M \x8F\x{3A6445A}4[L\x94\xFF+x\xDA\xED]s۸\xF1=\xBFBo\xA5fb\x9A+-\xFD4j\xA1\xC8,\x8FDK\xFAQ\xD2β,/Q\xAC\x83\xF89\xA8(\xF6c\xD9NG\xB4\x89\xFBe\xE8\xE1ʈ\xAA\xF9\xFE\xB2(\xD6|U|!\xB2\xAEKzlI\xD6H$\x90KE\xEE\x91 b#<YN\x82\xF7\xF0K\x9C\xF4z.\xC3uc\xA8G\xC4
+d\xB8#=\x84o\x86?\xA1W\xEF\xA8'\xF1\xED%\xF26\xB2|#\xA1iT\xC0\xBF\xA1\xE1\xFC-\xDF,\xAA\xD5ƞ
+-\xB0[@\xE2\xF2\xA6kDn\xB4S\xC4\xCCE;\xBE\xBF\xE5\x9Ben^O }*x\x9A\xA6\xE2֍%\xFEla\xB8 [k{"\xC3e_(\xC0$W\xD52R\xD3\xC2r\xEB\xDF暥<\xAC |d\xB4\xEB\xC2H)Do\xEA\xE07T\xBE1\xE3w\xC1K\xC9\xDA\xF3I\xEFڜ\xC3\xF8\xDB\xD7ёF\x87\xF1\xAAȹ\xC3)\xC3a\x94i\xA5\x88H\xEC=V\x9D\xCAq\x99\xBA˓\x8F ݟ\xC0\x8C:\xAD`i\x8F\xBB\x85]F
+\xEA\xC1\xD9\xE5(\xF7E\xDE\xDE4\x8C\x82N\xE6\xA5D\xBD\xD9\xCAt\xE0}\xF9̇\xCDMÌNё\x86\xD1-\xEC\xAE\xC2\xE5\xA2j\x89\x88\xB4\xDEҀ\xC5c\xED \xA5}\xDCFT\xF8l+\xA2\xB9\x8B\xDFt\xD9
+\x89ޑ\xA5І\x91\xAE\xAC\xB0\xB7\x9B\xA9\xDA>P\xEB\x98%as\xB2\xBB
+\xACVF=\xD9'>\xC9FX\xFC\xB3\xBE\-\xBF:\xF7x!\xAD\xFC^k&\xB7\xFB\xE9\x8F\xF5\xC22n]\xF3\xB6F \xE8\x8CgE\xDA\xC2#\x90
+\xF1\xA5|\xEFzu\xF1\xEC_\xCF:\xB4\xF9\xA0\xA3\xDAOd8[\xAC\xFCH\xA3W\xD4?\xA2\xDE\xB3\xABg\xB4\x8A\xC3w
+\xF2`\xAC\x9ELS\xC0\xF7\x83Yϐ\xCDCآ[깂\xFF\xEEr\xF6\xA0\xDD_\xA0+\x89\x89\xA9\xA2bD\xC7R$N\xDCKF Q\x9F\x8A#?\xD6\xC6C\xF2\xE3L\xBC.\xBE\xC5?W\xE4\xE01\xF6@{on\xF2&\xC5IK\xB6B\x8Dr:\xF7\xF4wAj^k\x98(\x85n\xE3\x94
+r3\x81QC&[\xC6\xD6\xF0\x8E\xD9+0\xE03\xE9\x98a!ZL`ك=v\xCB˂\xC7\xD5V\x92\xB2\xDB,}3a\xB5^\xB8\xA3\xB6|Q\x90\xE1}c\xBA\\xCE߹;j~xv9 \xE1!y*~\x9E\xF3c\xBA.?\x99ѭm\xA21s\x8D\xEB\xE7\xCE\xF4\xBE\xD6])\xC3hUf\x84\x9B]Z㵘\xCChs\xF7$D_j\xE4Z\xE4k4s'\xB3\xE1\x94\xF4㴵\xE1J\xEB]\xAE;\xB4\xEF\xC84\xDE\xD3uY:\xCE#n*ׇ\x83\xD05\x84\xBE"\xB2Ւ\xAC\xC2՚\xEF\xE1-\x83=\xD7\xEFi\xBA\x8BΙw'\xF3Gx\xAD\xDFC\xFF\x86\x8B| \xE1\xFAvE~\xE0q"\x9F,\xF9\xF0\x91\xFF\xF8D\xFE\xF1`\xB4",&\x9E\xCE\xF0\xD4'1\xB9\xDDM;\x9D=v\xCE!Jt\xF9S*\xD1#\xB6%\x9D)1{\xFC\xA4O\xA8D\xD8Mix֟E/*\xFE\xBDi\x9AM\xFD\xC3\xF99<\xF01\xB8\xE5\xD7W\xFE\xBAh\xCE7\xE7\xE4{<Ƕ\xF3f\xBB[:7\xCC\xF9\xBF?\x880ꎶ\xF3D\xAD\x83\x85u+~\x92ދ _û#\xDC$m4>\xF8\xFE \xD15G<*\xBB)L\xEC\xE2\xB6"E5\xA7<\xD1*H)\xBB\xE2Am\xBB\xEF\xAB\xC8qOE\xEE\x85/l\xA8\x9DUd\xEA{Y5V?O\xF5.\xF6^\xACs\xFA.M\xFC\xA6\x97&\xF4\xC4i^B\xD3۟9\x83\x84"m\xC6H~\xF1\xA5X\xB8\xBF\xFE\xEB\x8A.0\xF5d徉\xC2\xA3\x98\x91} ;\xC6.\xCEH)\x8A\xA0(\xA6\xE28E\xE8</A\xF9Lꎢ\xB4\xFF\xAAl\x9Do3'\xD0I\xAB\xD3~\xA2TzҸ}\x9Bef\xB7:\xF5\x84\xF6\x88\x94\xD05\xE9\xBF\xF9)lg\xB52}\xE8}d\x9A\xFD\x82ćW\x8B\xCAim\xE3\xA6+\xBB\xB5;\xCD\xF4;jCC8?\xB1\xA9\xC3\xC9a|g\x91\x91оH\xC5\xFFbK#\x95\xFA\x89\xD0\xFF\xD5=U4\xB5\xB7\N;+\x9Bɜq\x9C\xAA
+\xF7ッ\xF4\x9Fʦ\xEA\xB4I@\xEC\xD0\xD0<\xB3u\x97X\xCF\x92j\xD7tIm\xE6\xCE\xFF\xEE\xACi\xED$\xF6\xDC\xAB\xB1Y\x86\xDD)'`\xBB\xE5\xEC,\x84\xC3\xDD\xE8\x81sL"\xBADٻ,l\xB6\xFC\x81
+\xFBGd\xFB\xA9nc\xC9am\xCFI\x89\xD1]\`\xB9\x84\x89e7qS\xE5\xAE\xF2\xDEf\xBF}\xED?m\x98><\x88\xD6$i\xDC\xD3Od\xA7[\xB0\xCE\xEB\x9B\xD2N\xA2+\xA6\xAC\xF1\x81u\xB9\xC1q\xB5fN\x98hv\xB1\xE5\xFD3a?Kt\x81P\xB49>\xEFv\x9B
+\x92PP\xE2\xE0\xBEO\xB9\xE0\xD8*\x9B~V\xFC\xD9e\xC6Awh\xD8l\xABk\xDC\xE2-\xFE\xC9V\xF5=\xB3\xBC0\xD0\xD0\xCD/\xEF\xBA\xD0<pn<\xEB\xFE\x9D\xF5Z\xD4p\x836\xD4w\xBBp=-Ì\xF7S\x95\x8EQĿ\x8EL\xCAZ1\xDE\xFCb\xB9\xCC\xFB\xD9^#\xA1\x91\xF6u\xB2u\x98\xA4\x94\xD0v$\xD8\xFD]J\xFAZ\xC5=\xC0_0\xC2/\xCD\xE6\xD7=\xFF\xAEu\xFAff\xDFk\x87\xEAỿ\xDC]\x97\xEB\xFB6\xBD\x97$G-#rH\xC1\x88G\xB8ܼ\x8F&{\xD9\xDD\xCA3C\xE9g\xC1\xBC\x99\xD5j\x93m\x8B\xC7\xE3\xF5\9/\xCA%\xAC\xBE\xB8o}y\xD5b\x85'e\Օ\xC5\xC6e\xD1\xDC"Op\x96\\x9C\xD8s}\xAF\xE2\xC4-39\x92B4\x97\xF47H\xE1\xA7 c'\xE1\xA7i\xF6\x92i\xCD\xCDi\xFCЇ\xDB\xF2Ñ\x80\xEF\xF1\x83\xB4o\xB3\xACaW\xB1\xB2\xBC9\xAC\xA0ZV\x88\xBC
+\xB0\x99\xB75\xDF\xC3\xD9^2GpdR\xA2Yܘ\xED\x8F\xF67:r7Zٍ\x8E\xBAS
+F\xA0\xBC\xE3\xE7 ?\xF1]\x9F˼\x9D\xF0\x96e\xE9fc_\xBAXfu\xCDT\xA8<\xA0^|W.8\xBE\xE3\xEA1\xEDR#\xF8
+\xADk'\xDBQ\x9A|lһb:+\xCEۛ\x88\xDDvF\x96\xC4\xC6]]\xF4\xC6K.j\xD2`\x8E\xC1\x88\xB1\xB0\x{158485}$\xF2\xB0-z+\x93\xD1q%)\x88\xF5\xE7\xFAȠ!#e\xBC\x8C7H\xAB\xDA\xAC\xD8r+\x9D\xC4a\xEA5\xDC\x99\x9B\xFFx\x81\x80-\xB0x6k)?\xEF(\xB0*\xB2\xE6~\xD9\xA4~\xACL\xA2,\xDA%@\x94\xB4톁\xB7E\xBD[vG\xFF\xDF\xDF\xFE\xFCu\xB5:"?\xD4\xB5z8۸\xA6p`,0\xDDc_E\xC6\xCC\xF8\xC7<
+\x8CJw\xA52&.hS\xC6!]\xF1\x83M\xC3U]\x90\x96\xA9\xB1\xD6YQ\xCE\xE0\xE2K/\x93x\x9D\xB9\xE5J6\xF9Ը\x95\xE8\xB6-\x9F\xC0 \xBF\x9B\xD8∽83\x99\x88\xA3B\x94\x91G/\xAA6\xE9\xA0
+)mX\xDB \xAB\xB1K\xD7\xC5\xD8\xA8L\x8F\xF5\x8D\xDD\xD7+M\x83`{\xC3;\xFD\x9D{\xC6߫/\xD9j\xF3\xF5Ҵ\xB0\xF3n\xC6"\x9D\xC9hQ\x9A\xE4\xE7V\x86p*\x99\xC2\xC0\xEC>U\xC3T\xA6x\xB7\xC7\xD4j\x8D\xF0\xC5\xE9\xB4y\xD9m\xE1@|\xAC+#l3ہ\x81b\xD5\xC1ARw
+g\xE1\xDA\xD4-\xD5ܐ\x99\xB4\xF5b\xC3j&A\xC2f\xB3\x95^ɛIBo
+\xC1N19;ׅ ^\xD4MfM\x93\xB6\x96\xEAB\xCA\xF8Ba\x9C\x8D-^\xB0 endstream
endobj
754 0 obj <<
@@ -13774,7 +13771,7 @@
\x82K\xC2\xC6D#\xAEɎ\x80B\xAD1b\xD5 7؉l3\xD2GrTq\xF3gj\xBE\xE5j\xD7\xFD6 nS\xB5\x84u\x83r\xE5B\xD79\xD2Z3-\xDE(\x85\xAE\xC8X\xF6\x8C\xFE\x9Ee\xC7D\x8E\xF2\xC9\xE3 UC\x95$ ʫ@5\xF4\xA6\xE6\xF1m$\xCA\xD8_\xD9 \x90\xBA\xA3\xA1w\xDDwע\x9F\x8B\xEB\xCA\xC7\xEB\xBBh\x8E,*\xF1֞\x82\x80\x97-2mq\xDFB\x9E\xE8\xBDl\x98\xAF\xD9\xE1L\xD14h]\xCEi\xF0I\xA1cn8\x81\xF2\x89\\xE1r\xD9\xC6T҅\xDD\xDAi\xD8m\x86\xDDZv\x8Bz\x8Bw\xB8\xD3\xE5\xC8[Ñ\xB7*\xFAn~Ļ\xAB\xC9k"ֲ\xC1+2QQsۀ\xCAH\xEEV6|\x83Ƈ\z\x97Q\xA0C\x91\xBF\xB2Y\xD6N\xB3=\xFA\xF2H\xE6\xA9\xE2i\xE1t\xECiᜠP\xC0\xF4n\x91\xCB}C\xF1\xECO\xCA\xC1LB\xE9\x9C_><\xF8\xE5{y_+\xFD\xFD\x91\xFE\x8A^\xA1\x80\xF2\xE8o\xA1\xAFY\xAC\x94\x8F\xFBU\x9B\Z\x8DV\xACТ\xED[\xFDaU\xED(\xBE\x80\xBF(\xCBߓ\xFD\xBE\x9C\xAEG\x82<\xB2\xBD\xF3\xD0P\xB4\x85\xFF\x9C\xE1SG\x9F\x87,zx\x8CUh\x83\x81\xC9\xF0E4E\xC1?,\x9B\x915gL\xF7\xFB,\xE5\xBB\xEBW\xFF\xB3\xDF\xE3
endstream
endobj
749 0 obj <<
@@ -13963,48 +13960,41 @@
j\xAD Y\xE2\x99\xF4\x8A\x86A)\xB5^A(\x9C0\xFD\xB3e\xD2I~\xBE\x9A5Suo\xBA\xCB \xADk\xAAQ\xF7\x94\x92ܸd\xA5'\xC6\xEA\xB2zr\xAC)P%3p\xAE\x99\xEFlT\xBE\x883\xBB\xE1T\xED,|\xB4X\xB9D\xBB\x8C\xED˫\xA0\xBE\xB6J\xF7lW\xE7\x85\xAB2w\xB5\xE9\xD8ֶ\xA4v \xD6g\xF2[\xA72\xB7V\x99\x96\xF2\x89\xDCʑ-ӑ\xA0&٭\xAExnv\xCE\xCC\xE7c\xF3\xF9\xD2|\xBE\xB0i\xA6\xFE\xF1\xEB\x80p2]\x97\xC0#\x8CU\xBDϷB\xFA\xAET\xAB\xC6P\xD3\xC0\xAFJ=YE\xBB\xC28\xF3\xD4l6W\x90\x9E\xF5\xC03\x97\x82N\xF98d]\xAC\xEC\xD6\xF3\xC6D\xED\xF3͚\xD5\xCF\xA4b\xDC=\x95\xBBt\xCF\xDB\xC2\xF6\x936%z\xDC\xEE\xF6\x98\xF2\xF4\xFC\xC1\xFF\xF1-\xE9\xDB
+ӑ\xA0&٭\xAExnv\xCE\xCC\xE7c\xF3\xF9\xD2|\xBE\xB0i\xA6\xFE\xF1\xEB\x80p2]\x97\xC0#\x8CU\xBDϷB\xFA\xAET\xAB\xC6P\xD3\xC0\xAFJ=YE\xBB\xC28\xF3\xD4l6W\x90\x9E\xF5\xC03\x97\x82N\xF98d]\xAC\xEC\xD6\xF3\xC6D\xED\xF3͚\xD5\xCF\xA4b\xDC=\x95\xBBt\xCF\xDB\xC2\xF6\x936%{\xDC\xEE\xF6\x98\xF2\xF4\xFC\xC1\xFF\xF1~\xE9\xDC
endstream
endobj
816 0 obj <<
-/Length 5356
+/Length 5355
/Filter /FlateDecode
>>
stream
-x\xDA\xED]ks\xDB8\x96\xFD\x9E_\xA1\xDA/#\xF5\xB6a<\x82\x9C\xAD\xAD\xEA\x8E\xF3\xE8\xCD\xC6I6\xF6N\xE8%\xDAf\xB7$z)*\x8F\x99\x9A\xFF\xBE\xBCP\xA2\xC4f|\xB9Խ\xA7_\xA7|\x8F\xF7#_\xFB\xCD\xE7?V\xD1\xFB\x94hݹ,\xC9\xC5\xEF\xD1\x90\xEE\xFD~hC6\xEBxu\xB55;t^F\xEF\xA2\xC5ЅC\xE0oQ\xBA6a\xCB\xC0\xC5`\xC4\xFD\x8D\x93\xEF\x93\xC0\x93\xF0\xA8j\x8B\x8B\xAAl1\xBBDUm\xF3\x91Q\x98\xD8:-&\xB6\x92\xD9\xFE\xA0.\xD5J
-ˁ\x85Q\xAB\xD6&\x99\xCE\xE7wgˍ\xA2>+\xD9qv\xDBd)\xC6-\xB2\xC6젠[\xE6\x84&\xB6j\xECPf\xFB\x83:T\xD5\xD5-\xCA\xFD\x85\x98\xFB)\xFF2І\x85\xF0 \xB08\xD8bvQ@\xDB|\xA4\xC0\xC4֍\xC9lPw
-\x90!\xD7_U;@x\xE0\x91\x87V\xCFryؓ)"\xE5\xBEs!\xAE\xE3u\x96\xA4\xC4l\xE0\xC3\xE0\xA6\x9B\xEC:IO\x9A\xAF.\x93t9\xCD\xF6`.\xEDa\xA1kXE \x95\xF8\xA8\xAABUv\x90\x9Db\xAA\xA6\xEDА
-J\xEA6\xF8\xC1\xB1\xDA\xD3a<h\xA6\xBCj\xE8@b\xEE\xC9*\xFBʺ\xE3\xBC#\xC9we\xE5a\xD5\xEA\xC8\xFAf\xFD\xF3\xF2>$\xFB9^\x8A\xCC\xF6",̮/\xC2O\x90\x98lfcė_}Ϲs \xE6\xC9\xF0;q\xAD\x92\xC1i\x88>\x87\xE9<Q\x94x\xBE\x99I\x84\xD8bv\x89B\xDA\xE6#\xC30\xB1ùd\xB6?\xA8\xC3HD\x89\xBC\xBA\x8BH\xC4\x8D<\x9A\xAE2)\xB7\xFF\x995?\xE0\xD7$\x95\xD7d\xB0\xF2y\xFC.Z\x81\xE0\xCA y5]F
-\x9F~ߩ\xF2Rk\xE1\xD9t/>\xAAa\xE0jx\x9D^MW\xF1\xDA2%\xF2-\xF0B\x9F0\xAF\x8A\xDF\xF8\xC2\xC9;ˍכ\x8Bu\x96\xEE\xC1\x90G#\x8C\xDA!\xAF{\xF6\xF8\xF5\xEE \xA5\xE6\x93ۇq}\xD3k(o\xD2d\xBE~5\xE9\xFE5\xB6
-d\xF8Ք{02U\xDD}
-C^ \x88\xCF\xE0C
-X\\xD0g\x8B\xD9%\xE8k\x9B\x8F\xFA\xC0\xC4\xD6\xF1\x92\xD9\xFE\xA0\x83\xBE@H\xAB\x81! Mھ\x8D.\xA34Z\xCD\xCAA!n\xB42*\xDBDK3\xAD2-vs+ǓvO5xJ\x90Ї\x8F\x934`q\x9A\xB3\xC5좹\xB6\xF9H́\x89\xAD\xE5\x81d\xB6?\xA8C\xCD)\x9F~\xB9G\xADc2\xEAʷ7{\xFC\xFA<J\x97\xF9g\xA0\xDF#\x82\xC3G-_\x83\xC5)\xC0\xB3\x8B\xDA\xE6#yH\xC5\xE7ʷ\xB08\x91\xD8bvI\xDB|\xA4H\xC0\xC4\xD6\xED\xC9lP\x87"\xBA\xBAi\x99+\xF7\x98\xFB\xFBC\xA6
-\xF3\xF1\xB9\xF2-,N\xB6\x98]\xD06\xA9-«%\x9E\xB7\xEF\xA3O}F\x8DV:\x8A\xFEq>\x8F\xE6&\x91\\x85\xD5\xD5~\xC2\xF9\xC0`l\x87\x87\x94(_tހ\x85)\xDB\xB3\x83\xB2o\x99T6\x9A\xD8J\x84Pf\xFB\x83\xBAS6\xF1y\xB9\xE8\xDCC=Y⣎\x8D\x97$\xD9d\xE4&\x8DW\xD9b\x98Gp\xFE\x82\x83\xFA\xF1\xC9\xD8o (Da,ʔ'\xFC{\xD31\xEE6\xE2\xC6\xED\xE0c [T\x9CC\xB4\x84\xEC\xE2[\xB6#\xDD!\x96\xD4\xDAqY\xED\x8D\xE9\xD0B3U\xEEB\xE0\xF9\xFB0Ԧ\x83.\xE2\xE17\xE9h\xC0\xE2\xF4a\x8B\xD9E m\xF3\x91
-[7g$\xB3\xFDA\x8ADyD\x88j\xA0A9\xCFq]\xE7\x85g\x8E\xB08\xD8bvQ@\xDB|\xA4\xC0\xC4֍\xC9lP\x87
-\xF0=\xED\xEB\xAB\xCCQ\xB0O\x99#.9a\x9E9j\xC0\xE2\xC4b\x8B\xD9E,m\xF3\x91b[\xB7k$\xB3\xFDA\x8AEJ\xA2\xEFJ\xB1\x845s\xF46Z&\xEFڹ\xA3\xF2\xAB\xA7f\xF4lR\xA4e\xB0D\x92\xC7u\xBB\xC4'\x92\xB6\xB08\xA1\xDBbvz\xDB|\xA4\xD0\xC1\xC4֚D2\xDBԡ\xD0=]5\xB4\\xAC)\xE9!\x91t7\xD4\xDBӿI\x9F$\x92\xB4g$WQv\x96l\xD2Y=\x93\x90[\x9C
-\xBE\x8C\xAB\x8B]\xBCd\xDB|\xA4\x97[;4$\xB3\xFDAzI!\x89\xF2\xCBe\[\x88\xBBL1qA8\x87\xAF7j\xC0\xE2Db\x8B\xD9E$m\xF3\x91"[\xB7g$\xB3\xFDA\x8A\x84\x{31154F9}\xA5\xFB}\x909\xBA\xF05?
-X\x9C-\xF8\xFE3\xD1\xD6-\xF5I\x8Fx\x8A7\xCF\xF3\xC4\xF6\xD9e\xB7\x8B(}\xFA5dr\xF1{4\xCB\xCA\xAE\xE6ś\xF7\xE9\xE4Hso\xCBg\xEB\xE2\xCD,Yey\xDA)\xFFv\x95%-\xDB~\xA5\x94\x97\xF5`\xE3ot\xF7\xA9{р\xB1\x9C{\xEE \xA2B9:\x92\x84UЄ\xEB2QJǧIU \x{114AAAF}6*\xA0\x81\xF1\x8B\xBA\x88R\xC5\xE5Z\xDF\x973\xFD\x87\xF6Ծ\xB9%a\xE8\x8C\xF8TG
-˼\xBE\xF5\xC7W6ޘ7\xA9\xA96seݲLYƦD\xE6\x83\xD9-\xEBJcFyƨ\xA5\xFE¸\xBD\xF2m\x94\x93;-v$5\x99:4\xBFO&\x8C\x8F\xA3\xA2A<\x99(
-X\xB7l\xB3\x95\x85f\xF7/\xA6Y\x87O/\xB6\x8DF\xFF6\xDE\xC1|=[L\xD7\xEB\xFB\xBC\x96\xD9I\xE4H\xD5\xC3\xAD\xE0\xC0S-\xDF,6W\xF1\xEA\xC7Y^LqK\xB4\xBA\x97"B{\xDC\xE6%\xA6\x86\xC1\xB9M%z\xE1\xCF}=\xF4\x9C\xE30\xB4\x9E
-\xEAU\x9C+\xB4\xAA\xA2\xA2\xA4\xB9t\x8D\xFB\xB3y\xB2h\xA7c:\xFAQ\xA5\xB9ק4\xAA\ "u8\xA2\xA3\x94\xD5ALg\xE2\xDF\xF5K\xDE\xF37\xFFp\xDE\xC1\xB0\x91\x9C\xC8\xC2k\x89Q\x{153EDA}\xED\xC7\xDC\xCF0\xE17Cs\x96;V='\xE9u\xEFN\xF3\xA3\x88Ш\x89D\xF5\xC6\xCF\xF3\x9B\xFC5\xCE_\xE7\xD5A\x82\x8A\xF1e\xFE!i\x9E\xF1"\xFFp\x96\xBF>\xCE_O\xF3חE\xB4ϴ4\xDBÇy\xA8HW\x85ҿ\x8Aba\xDC\xED\xEB\x92\xAA>\xEA\xE4zz\x93\xE9^\xB7\xBC\x8D\x98\xF9\x9C\x8F\x9FG\xD96\xD6^gS\xFDg\x8F\x8E\xB3\xA8\x8A\xC7\xE3\xEC\xBAx\xF7\xA2\xF1\xF8\xE4.\xFD\xCB}̚\xE0ƣ\xBA\xDEL\xF4\xC5LXT\x94\x89\xBF\xF3P\xFF\xF6\xB4?{z\xFE\xE8\xFFZ\x9DY2
+x\xDA\xED]ks\xDBF\x96\xFD\xEE_\xC1\xDA/Cf\xA3V?\xD1\xC0lmUb\xF9\x91\xF5Z\xB6\xD7\xD2N>$\xA9)\x8A\x84$$$\xA1A?fj\xFE\xFBv\xE3E@\x96e4x\xD02\xEDER\xC0A\xDF\xD3}n_\xDC~\x80\xAEF\xB4zI\xAEj\xB2\x97\xB7\xCFQ\xD81bT\xFEdl?\x9A\xBF>>t\xFC\x8C o\xA4\x89O\xA9\x9D_\x8E\xA4\xA4\xC4\xD7#\xAD$\xD1\xCC\x9D\xCFG\xBF\x8C\xCF\xC2Yū\xC9\xD7\xFE\x98A&G\xE7\xE3\xD38 \xF3\xEF\xA0\xE3\xD3\xE5\xCD"\O~;Ѳh\xD473/Z\xE7\xC74\xBE1\xC7?\xF3S8!\xCC)\xA6pG\xC2ӄjt\xA4̡,/\x9D)
+S\xDE]\xBF\xD4=\xF3\xE7;\xF9\xC0\x89l|\xD9\xFF\xE6O\xF9\xF3\xCD\xD3\xF3G\xFFg\xBE\xA6\xE6?iN\xEC\x8Bq\x9BƉ͖\x8F\xEC\xB7ҳ\x8E\x95\x8DƧ&\xE1\xE8\xF2\xD1\xFFt\xBCV++\xB2\xA2\xD8?e\xFF\xCD7\x8D\xE2\xF1 \xA8\xF0\x97\xDF\xE8hn\xFE\xF6\xC2\xF6\x81?z\x9F\xB94?yq\xA33S\xDAO4\xDE}\xE7\xE7g\xD3O\xCFWDڞ\xE5\xCB\xD2c\x84r\xEF%<\xD3=\x88]\x8A\xA1D``\xEELt\xAB\x81Ok\xB2\xC1\xA84\x97\xD3\xCC\xF4f\x9E,
+'\x81\xE9\xF4\xE2IY5Wج\xAA\xB7\xB0\x9F70\xBFLa`\x8B\xE6\xE3\x8Ayo9\x8B\xD14\xBF\xAC\xFC\xA8Z \x98ت\xE9 \x99\xED\xDAʯ\xD9\xF7\xF9Ov\xC0\xF6c\xFEJ$Q>\xF7m\x80\xE5\xF9\x84jeʢI\xA0t_\xB1\xF6^Լ\xF3*C\xB3\xB7y\xA7G>\xF1-\xED%4\x91\x8C\x9B\xBFd\xD8\xC7\xDF\xEDn0v\x85\xD8\xE5\xE2G\x8A\xAB\xF1INS\x97\xC0\xB7\x9FbLWC\x97\xE0\x9F\xBBW\xE6\x8Bh\xF5\xC7\xD0v\x9C=>}\xF9$\x9Em\x96\xE1*\xDDݤ
+\xDF0\xE6C\xE1}\xED\x81B\xA2t\xF0"\xCC\xE2UjZ\xD5\xE0\xE5H\xE3\xC1[\xE5\xD0\xB8\x8C\xE1\xEE\xEA&C\x9B\x81\xE8A\x8F]0\xBE0ݾ-\xCAb\j\x82=q+T\\x84\xEB\xD9&\xC0m؎\x8Co\xB1\xA4V\x91(\x90\xD5Θ=\xB7\xD4'\x82\xC9<D9\xEE\xA0=J\D\xF8<W\xA2\xC2f|\xB92\xBD\xA7W\xA5|\x8F\xF7#_\xFB\xCD\xE7?V\xE1\xFB\x94hݹ,\xF1\xC5\xEF\xE1\x90\xEE\xFD~hC6\xEBhu\xB55;t^\x86\xEF\xC2\xC5ЅC\xE0oa\xB2\xB6a\xCB\xC0\xC5`\xA4\xFF'\xCF#\xBET\xF0\xA8j\x8B\x8B\xAA\1\xDBDUM\xF3\x91Q\x98\xD8*+B[6v(\xB3\xDDA{T5\xD5-\x8A\xFD\x85X\xFFS\xFE\x95o\xE0;@\xD4`q
+p\xC5l\xA3\x80\xA6\xF9H\x80\x89\xAD+\x92\xD9\xEE\xA0\xFD)@\xDC|U\xEE+\xAA\xDC [\xC5Tuۡ!\x94\xD4m\xF0\x83c\xB53f\x8F\xF1\x94o\x98\x92\xE5Ё\xC2ܓ\xFFT\xF4\x95U\xC7yG\x92\xEF*L\x8B\xC3\xCAՑ\xD5\xCD\xFA\xE7\xE5=|H\xF6s\xB4<\x99\xEDEX\x98^^\x84\x9F 1\xD9>\xCCƈ.\xBF\xFA\x9Es\xE7\xCC\xE3\xE1w\xE2ZŃ\xD3~\xB0\xB3\xF7DS")|3\x93,.q\xC5l\x854\xCDG\x86!`b\xAB\x98\xC9lw\xD0#-\xB2\xEA\xCE#4\xF2h\xBBʸ\xD8\xFEgV\xFF\x80_\x93T\k\x90\xC1\xCA\xE7ѻp\x82C(#\xE4\xD5t4|\xFA}\xAB\xC8J \xAC\x85g\xD3e\xB4\xF8x\xA8\x86\x81\xAB\xE1ur5]Ekǔ\xC80\xFC\xF4\xE3OO\xA7p>\xC1A\xCD\xE2\xE5W;\x97By\x94h>\x97\xA2\x8B\x8B\x96\1\xDBDKM\xF3\x91\xD1\x98\xD8*\xB0A2\xDB\xB4\xC7h\xC9\xC4S\xE5\
+\x8D\x89\x96l\xAAƮ
+\xADE2\xB3\xEA\xED\xAER\x8C0\x86\x9FL\xB1\x85\xC5I\xC8\xB3\x8D\x84\x9A\xE6#%&\xB6j\xEDHf\xBB\x83\xF6(!% e\xC5\xD6R\xAC\xFFU\x9CJ2"5~2\xC5\xA7+h\x9A\x8FT+\xF8z\xF5,N8\xAE\x98m\x94\xD34)0\xB1U;G2\xDB\xB4G\xF5HM^\xACW\xE7A\xFF\xD9\xA1\x8C\xA1\xF05\x885X\x9C\1\xDB(\xA0i>R`b\xABƊd\xB6;h\x8F
+>\xE1~\xB1QЇ=\xA4\xF4l\xF8\x9D\xFE.\x92\xF0]\x94>\x84\xED\x8E~~:t \x9E\xBC\xBA\xAF^\x9F]\x847O\xDF>{\xFD\xF6t\xE8b<}\xFB\xF6\xF5\xDB\xC1\x97\x87\xFD\xF4\xF4\xE4\xBF\xFF\xEB\xD5\xF3\xA0\xAE\x8B\xCD\xE0Cz\xE3\xCD\xE0\xE3\xDF\xD7\xF1f1\xFF\x93\xAB\xB3[d\xC7\xD1\x9F\xD8\xC2\xE2";W\xCC6\x91]\xD3|dd&\xB6
+\xCCv\xED1\xB23ї'\x8B\xB6`;\xB2۬\xA3\xD5\xD5a\xA8}\xBC\xD3\xEBx>\xFC.\x90\xB3?y\xAC\xFFn\x88\xD9u8\xFB\xE3$^\xAD\xA3u\xAEf\x80\xA8\xBB\xDC\xE7\xF60\xF1ȶ\xF6\xC1\x97]g|P~\xB6\xE5h\x92w\xBB\x88\xAF\xBE\x8AI>\xCC3\xDD|\x97,.Xs\xC5l\xAC5\xCDGk`b\xAB\xB8
+\xC9lw\xD0\x835\xE6\x93 (\x86L\xEF_\xD4#?S\xA1\xE2ڿ#d\x9B\xE6߰\xD9\xFA\xB1\xA4V\xED\xC8jg\xCC\x9B>
+\x88P\xC5\xA6\xFB>\xE5\xE7$:\xEC\xFA\xBF'\x9B\xBB\x94\xCDrv/~\x8E\xF8\xE0\xEB\.\xA3\x9D\xF7\xB2\xFASGx\xC4g\xF0~\xB3\xEB8\x9D1[\xF4\x9C\xB7\xCCv\x9Dhb\xCB~\xCAlw\xD0\xFEzO\x982\x95I> \x9Ajg\x9Cs\xD6Q%\xE4\xBD\xFDe\x93\xC6Y\xB3\xB6ݵc/\xF7\xC2\xFE\xB0\|S\x93\xBF\xB0\xCD"\xFC\xE0\xB8\xEF\xE00\xDC8\xB9\xAFv\xE1k\xC24|\xC2Q
+\xD7a\xB9b\xB6鰚\xE6#;,0\xB1U߂d\xB6;h\x9F%\xD4+\xB6\x87\x9D\x973\xD9|\x89Ve\x8F\xF5\xAF\xDDD\xA25Q\xBE\xD5I
+'W\xCC6"i\x9A\x8F \x98ت=#\x99\xEDڣH|J$/\xB6:^\xFF\xF75\x9E&\xBE\xDF\xEA\xA4\x8BS\x80+f4\xCDG*+\xE0\x9C(Ui\x92\xEFu\xAE|\xF7Dw\xB6\xC2m\xF0\xF4\xE6\xE5\xF0\x8BmΓ0|\xCFÓ\xEB\xE9\xEA*|\x99\xADq\x93\xB0\xF6}\xF8 \xB1I\xB8\xBE\x89\xF7`\x89\xDD\xE0D\x84\xEF+\x9E9\xAA\xC1\xE2\xC4\xE2\x8A\xD9F,M\xF3\x91b[\xB5k$\xB3\xDDA{\x8BR\xC4\xDC#b j\xE6\xE8m\xB8\x8C\xDF5sG\xC5WO\xED\xE8٤HKa\x89$\xC9M\xBB\xC4'\x92\xB6\xB08\xA1\xBBb\xB6z\xD3|\xA4\xD0\xC1\xC4V\x9AD2\xDB\xB4G\xA1KS5\xB4X\xAC\xA9\xE8!\x91t7\xD4\xDBӿI\x9F$\x92\x8Cg$Wazo\x92Y5\x93\x90[\x9C\xF8\xBE\x8C\xAB\x8Bm\xBCd\xD3|\xA4\x97[94$\xB3\xDDA{\xF4\x92B\xED˸\xB6\xEF3\xC5\xC4\xE1\xBEި\x8B\x89+f\x914\xCDG\x8ALl՞\x91\xCCv\xEDQ$\xDC#\xAC\x98̭\xFA\xDF\x993aJ+\xA25:\x8Ae0\x84\x9B2QJǧqY م\xF2\xAA/7*\xA0\xBE\xF5\x8B\xA6\x88\xD6\xF9\xE5\xDF䗳\xFD\x87\xF1Ԟ\xBD%A\xE0U\xBA\xF9\x8Cx\xD4D
+ˬ\xBE\xCD\xC7W6\xDE\xD87\x89\xAD6{eӲlYƶD\xF6\x83\xDD endstream
endobj
701 0 obj <<
@@ -14033,7 +14023,7 @@
endstream
endobj
883 0 obj <<
-/Length 820
+/Length 821
/Filter /FlateDecode
>>
stream
@@ -14041,7 +14031,7 @@
yj.
y&\xE3\xD2\x8ByF\xF0,\x85$ ?99\x99qgT4^B\xBA\xF1\x98\xE7b\xC9*\xF8\xC3\xFC\xA726\xBA\xDE\xD0\xF8\xF90NY\xD9\xBBDr\x839M_\xC7R3W_b\xCB|S\xCEq\xDAw\xCB\xD7\xD5\xE7\xE6\xC7K\x9BNs`\xA0\xD21\xFA\xA3+ \x86خ\x82<\x8C\xB5BJ\\xC0)Pq\x9B\x97\x95Ǖ\xAE\x82d\xFD\xB4\xAE\xF2US\x98\xD4;\xDD\xF5\x8C&A\xE5p-Bs\x8B\x83\x84\xED\xEB\xED\xE5߫T!\xDE\xEC\xE4U\xA7l\xEE3a\xCB\xD1s\xE1[\x82WdFѢٴƋ\xF2\x89\xBF\xBB6En\xD0lK\xA6~>:\xF8\xA8A\xF7\x8Dc\xB5\xF9O'\xF0u>\xA9<M\xA3O6\xC0\xAC\x97$\xD1.b\xB9\x93\xEE\x8FP3\xC5I\x8Fb ᳥\xF0\x85\x9A\xFA\x9BX(\xCB\xF6\xE6g\xEE]j3\xC3\xD3D\x92K \x8C\xBA\xD9\xC7)\x9E `\xFF\x8A\xB3Ϥr{F܁\xC6\xCA\xE7M\x80bX\xE3\xDF\xE99\xC3x?\xEDb\x98\xD4H<\xF5\xD0:$m\xC9\xDFņa\xEE\x83\xC3"`:\xE4 \x8Bg@\xB2Y2\xC52\xB6\x93|Ro[.±\x82\xA3\xFCHt[S_O\xDA\xFCa\xA3\xE4\xDD%\xCBwa\xFF\xA4P\x93\xDC8\xA8Ҭɸ1\xEE\\xA7\x9Dˋ\xB3!φ|\xABN{\xED\xA9\xFA\xF2\x9D\xDA\xEBR\x8C\*E\xE6;$B*\xAA\x80\xD6aZ$\xEC6\xDBЖ\xA1-vBZh6D}\xBC\xA2\x88Qh\xAFB;\xED+Bs\x8B\x83\x84\xED\xEB\xED\xE5߫T!\xDE\xEC\xE4U\xA7l\xEE3a\xCB\xD1s\xE1[\x82WdFѢٴƋ\xF2\x89\xBF\xBB6En\xD0lK\xA6~>:\xF8\xA8A\xF7\x8Dc\xB5\xF9O'\xF0u>\xA9<M\xA3O6\xC0\xAC\x97$\xD1.b\xB9\x93\xEE\x8FP3\xC5I\x8Fb ᳥\xF0\x85\x9A\xFA\x9BX(\xCB\xF6\xE6g\xEE]j3\xC3\xD3D\x92K \x8C\xBA\xD9\xC7)\x9E `\xFF\x8A\xB3Ϥr{F܁\xC6\xCA\xE7M\x80bX\xE3\xDF\xE99\xC3x?\xEDb\x98\xD4H<\xF5\xD0:$m\xC9\xDFņa\xEE\x83\xC3"`:\xE4 \x8Bg@\xB2Y2\xC52\xB6\x93|Ro[.±\x82\xA3\xFCHt[S_O\xDA\xFCa\xA3\xE4\xDD%\xCBwa\xFF\xA4P\x93\xDC8\xA8Ҭɸ1\xEE\\xA7\x9Dˋ\xB3!φ|\xABN{\xED\xA9\xFA\xF2\x9D\xDA\xEBR\x8C\*E\xE6;$B*\xAA\x80\xD6aZ$\xEC6\xDBЖ\xA1-vBZh6D}\xBC\xA2\x88Qh\xAFB;\xED endstream
endobj
903 0 obj <<
@@ -14087,7 +14077,7 @@
s%i\xCA\xC8x\xF6?\xEF\xE3\xDF~\xB7\x93ۖ\xC4Kr\xD3\xE8\xBAfZ|\xA3U\x9A\x85\x88p2}K\xDC:(\x89v`PQ\xE7_\xE6?W \xC6>\xA7\x84h;\xBB\xE1b%
GʖO\x9C\x82\xC4bQ6\x8C\xB8\xAB\x94 y\xE9\x95A[\xF8\x8F\x98\xC0\xC3WK\xF7\xB4*\x9B\xC7\xFB\x97\x8B>M#\x81\xE3c\xE1?~a\xE3\xBC\xCC\xB6\x88\xD3*s\xBE\xB3ɋs?\xF9G\x9E\xBE\xF7\xE7\xC6\xFE$\xE4\xFFsB\xB2ֲ\xFD\x9FT\xCDtKz\xC6\xD8M\x85\x9F\x97\x82\xA2\xB92\xA4`\xAEL\x9B4\xE5r\xB3bޙ\xC2"\\x9A\x9E\xA0e\xB6I\xFD\x95nN\x{1378FF}\xEDdK0>\xE1H\xDFxA7\xAF\xE8\xEF3\xFA\xFB7\xFA\xFBR@5h\xC0*N\xB3\x9A\xAAު<6˿i\xBFڬ\x94^\xC1\x8A
-\xFEj\xAE\xD7\xF3ms\xF5+\x93Q\xA4)W\xC9\xD93UrT:w\xC1\xBFG\xF6I\xB5\xFDqbc-HYTu\xF4\xF32\xFCq#\x95y&\xE5_6\xD3UT\xD8\xE6\xFB\xB4\xB9\xF9\xEF\xD7O\xFE\xED-j\xD9
+\xFEj\xAE\xD7\xF3ms\xF5+\x93Q\xA4)W\xC9\xD93UrT:w\xC1\xBFG\xF6I\xB5\xFDqbc-HYTu\xF4\xF32\xFCq#\x95y&\xE5_6\xD3UTd\xCC\xF7is\xF3߯\x9F\xFC\xED~j\xDA
endstream
endobj
914 0 obj <<
@@ -14112,7 +14102,7 @@
\xAD2b8\xDDwt?
퇊r\xBB\x9A
-\x96\xA9\xA12\xBB;'\xA7\xC8\xEFg\xF2o+\xDB{\xBF\xE4q-\xEA\xDB\xB4D\xD0\xDF\xD0&\\xD2\xDB6]\xF0\x8E\xE4-\xF6\x9BU\xFF\x83,\xEF\xC2
+\x96\xA9\xA12\xBB;'\xA7\xC8\xEFg\xF2o+\xDB{\xBF\xE4q-\xEA\xDB\xB4D\xD0\xDF\xD0&\\xD2\xDB6]\xF0\x8E\xC2[\xEC7\xAB\xFE\x83}\xEF\xC3
endstream
endobj
891 0 obj <<
@@ -14515,7 +14505,7 @@
E{\xA3\xE3\xC4\xCE\xCDI5\x86\x9B\xFAƅ(\xEEiSY\xBE\xEE?\xC0\xC8~aj\xF9-\x91teȅ\xDD\xD2#\xB3\xAA\x920}\xE7%H\xCF\xE21j\x9C\xD2h\xA5\xF2L#7\xF2\xFDT>\xE9\x840^S&\xA6\x82 \xA6\xF4]\x8A\xBAU>\x92\xF1\xEF몪\xE5\xA9\xFC\xCAz\xEDoi\xB7K\x92/ߡ2\xAE\xBAs\x82絃"rEjŕz\xC6G\xF5\xA8U\x94Z\xFE\xACX\xA3\x8CI;hi\x83OLQ\xA7u$\xA5\xF8\xAF\xEBC\xD2|\xCBV\xE2\xC4pԺB\xFD3m@Pe\xB5+\xA8\xDE\xE7.\x9DV\xB8Ϲ\xE3\xC43\xD2\xCAp\xAC/\x95\xF1ve3T\xA7\xC7#\xDCHc\xA0\xB7\xF2éί\x9E }\x95\x8C\xD3 \x9B\xC0\x9AD8<#\x8C\xBEU"\x9B\xAA\xC0\x84S\x89\xF4\xD3$\x8A\x95>\x88\x8B\x8F\\xC7@g \x86\xDFɭ\xFB2\xFF\xB4!|\xEC\xF6\xBC\xEF#W\xE3\x9E'h\xB3\x9D4/9\xA0\xB6\xDD(\x9A27`|\xF5\xA8\x9Dɵ\xFEJ*\xF8\x80JY;*ȱ^\xD8\x8B\xA1\x{1DC3BA}K\xC8G\x90\xE0\xB2\xE4-/>\x92\xB4\xBB\xCBB\xBE0\xF0\x97_\xE2\x93\xF3\xACl:\xEA\xCCv\xFC\xF1`\x91Pq\x88۽#\xA7n4.\x8E7 Nj \x81\xE1o\xBFc\xF9NM\xF5\xEE\xE5Ao
\xED\xC04f\xDEc0u\x9E\x87\x86\xF4\xDB\xEF
ѻ\xEF\xA1e\xADۡ\x81k-`ŶȚ\x8Dk\xBBn\xA1\xF3\xB0\xF0j\zڌ\xD4\xDC\xE2\x98s9\xB7\x95\x862^ĝ\x8D\xD0\xFBi\xAE\xCF\xF5\xAE\xAFo\xEB!\xE0\x9F\xEB\x8F
-N\xFE:?t\xF81\x9A\x8B1\xC6/_6_>-\xBF\xF2Ő\xFF\xE3\xFDc\xDA\xF4\xF0\xEF\x9A\x9A\xE9\xA1\xD2A I\xDB/+N\xFE:?t\xF81\x9A\x8B1\xC6/_6_>-\xBF\xF2Ő\xFF\xE3\xFDc\xDA\xF4\xF0\xEF\x9A\x9A\xE9\xA1\xD2A I\xDB/ endstream
endobj
941 0 obj <<
@@ -18089,7 +18079,7 @@
ߏ\xEAY\xCD\xF4N,Gp\xF1\\xE4\xB7w\xED,\x81\x86 ]\xA0\xC6\xBA\xF08\xED0\xA0\xE3r\xFC\xB0Ο-\xA6Β\xF4H\xBE\xAE\xA7\x93\x9B\xF0~\xF6\xDBm3\x9B\xFD
\xA6\x84\xB3\xB4U\x8Cz\xAD\x8C\x87\xD5S\xF4Ūyq\x85u\xC7.%\\xE1Z\x87i\xB7\xE2\xA9\xD2M?s\xCB\xE6\xA4\xDD\xDE\xF9\x97Ɖ\xB5\xB0\xFEԧ77t(\xAD==Q\x9E\xD5uH\x833\xA6\xDEt\xF0\xB6\xB1܆\x83L\xA6\xD7\xFBp\xE7\xA8xj\xE5"\xF23\xB3=<Ӥ\xDD\xAE}$4\x\xC0\xE4\xFE\xC4\xE6\xB6Mx\xF0*\x9E\xF8\xD7\xE6\xE1D\xD0\xE4\xA9/%\xEA<(ʭ\x9Dܬ\x8CG\xA0\xC0@X=\xCC\xE6\xF0\x8AI܋؞*\xB7tY
r^P\xE8\x96c`\xEFTV,\xE7)\xC7@q}>\x8C#u\xC2\xFA\xB1
-\x8AǪаRQj\x84N\x99OSI\xD6 \xC8\xEDo\xD7\xF8F\xCC\xDACc\xA92\xF4\xAF\xB5+\x8AǪаRQj\x84N\x99OSI\xD6 \xC8\xEDo\xD7\xF8F\xCC\xDACc\xA92\xF4\xAF\xB5 endstream
endobj
1010 0 obj <<
@@ -18131,7 +18121,8 @@
\x97F6c\x95)-hV\x8Eg\xCE\xE6A$\xC0kʘxٔg\xF03\xB5I\xCAt\xD2\xFBn\xEE1\x9B\xE8<\x8F;9c*^\xA3\xE5*&K\xDAn%No\xB3\xB8\xF2\x9F>,DH}\xA8\x9A\xCF4\xB0\x9E_\x96\xE0\x8C>\xCB7\xEC\x95\x93\xC8/\xC2\xD7vU\xBE\xF8[/
\xF0A\xCFt\xB69]<
kƳt\xE9\xB3B\xFCI<\xF3F\xA5\xCF䎿\x8E\x88\xA0\x9A\x87'_\xB9H\x8C!z\xD8\xD6G\xEA_&M\xE0\xE4\xEE3\xC1\xA2\xD7H\x802W \xE5X\x99䳃\xD7c`q8\xFB\xC0?c\xB1\xC2ug\xFC\xCC\xF9?\xA9r\xFE\x84\xBB\xB8\xA4J \xF7\xF5w#\xBF\xFE\xDC\xE1WF~e\xE4\xAF\xFDn\xE4\x97~nw\xFA[\xBB\xFE"A+\xAD\xE5"A'\xF2\xEFZp\x9E ]\xEC\xF97\xFE@7\xFA\xDB\xD2\xDF\xDA7\xC29\xB8\xA5\x9B]\xF8\x8D\xF7tsE\xDF\xD2ߟ\xE8\xEF ނ\xF2+\xB0S
-\xE7R\x80\x87\xA32\xAF\xC11\x99\x93Vьa\xA6\x85Z}_=p\xE6\x8A~xΏ\xBFS(e\x8D\xE0b\xDD\xDE\xD0ӗ\xE6/1sz./\xCAş\x97Y\x8A DD\xE5q\x92%7g\xFFy\xFD\xCD\xFF\xC7\xCBa4
+\xE7R\x80\x87\xA32\xAF\xC11\x99\x93Vьa\xA6\x85Z}_=p\xE6\x8A~xΏ\xBFS(e\x8D\xE0b\xDD\xDE\xD0ӗ\xE6/1sz./\xCAş\x97Y\x8A DD\xE5q\x92%\xCF\xCE
+\xFE\xF3\xFA\x9B\xFF\xC8a5
endstream
endobj
1017 0 obj <<
@@ -18150,7 +18141,7 @@
؉.\xE3\xEC\xB6\xC88F\xD90\xC7 \xA7\x83\xF2\xA7%\x83B\x95̾Q2\xF0\xBCys"_\x88\x90\xBB\x89\xD7}\xA5\x9B\xFF\xEF5K.\xF7\xDAxh\xF6\xD1\xD9;\xE7\xC87\xD2CB\x80\xC4F\xDB!\xCC
\x91\xC5M\xD3\xC1\xA7x\xD6\xA2\xB5k\xE6ֺ\x82H1:Ҹ\x96(v\xFF\xE4s\x99\xCA}W\xBD\xCFN\xA7P\xE4\xA4\xD8g\xF3_lg&[]\xEB\xFB\xD7p\\xC9\xF6\xF9\xFCk\xDE\xF1\xBEٻ\x95\x82Ґ\xD2R&\xD9\xF9\xE5z~p\x9D\x81<\xF9\xDC\xCB\xF5\xA9\xFC\xBE\xBCӧp\x8FW9Tp\xE1\xE5#\xCC\xB8\xF1=G\xDD\xCA\xD3\xC3;\xDF\xD8\xFA\xD2\xFA\xB2\x9E\x85\\xB9\xF5\x8D\xFEp\xC6߸\xF1\xE5\xA5/?\xFA\xF2:\xBC/ \xFA\x84g%\x97+\xC6vY\xFB\xB3\xC8ԣ\xAFx\xF4\xAA\x9D\xD4Ok\xBD\xF17\xFCa\xF2%?K\xE2\xFBYrXcW\xBE\x81|>d?
v\xF4)e
-\xEE\xB1\xE1}\xD2&SX\xFB\xF7!\xD4R\xBC`\xBF\x93~r\xF8\x88O\xD4\xF0
+\xEE\xB1\xE1}\xD2&SX\xFB\xF7!\xD42{\xC1~'\xFD\xE4\xF0/\x88\xA0\xD4\xF1
endstream
endobj
997 0 obj <<
@@ -20327,23 +20318,16 @@
endstream
endobj
1047 0 obj <<
-/Length 1066
+/Length 1065
/Filter /FlateDecode
>>
stream
-x\xDA\xEDXKs\xDB6\xBE\xEBW\xF0H΄0$\xE6;uƞ\xB8\xD3V\xEA) \x93S>T\x8A\x9D\x9FT\xA4L\xC6VR\xE7\x8DF \xB0\xBBX\xEC\xF8$%<\x8F\xE8\xAE\xEF\xF7\xBE\xF9\xEB\xBE\x98\x8C\x88\xA6\xBF\xF82\xEE\xF9bvv\xC9DI\xA2(\x95\xD1b\x89\xAC$\xA5\x94\x91\xCC3"Y-Vчx\xAE\x97\xB6\xFA$\xE5RŜp\x92\xA4\xE7\xF1\xDBf\xBDN\x8D\xF5\xA8\xFB\xA56Ⱦ\xD3\xF6!a@\xD4A\xDE\xD6;˶2A\xA8n\xF4脪q ]\x93\xFC\xB3\xB8>\xD2\xAA`\x903h\xC0H/s@\x99\xB3KU\x82CB\xC0p\xD6+HFy\x94\xE6 \xCA\xD0!p\x80\xE5ŷ\xF9\xBC\xE2W\x9Cw
-\xC8)\xBFT \x8FǢ\xE7e~[\xCC-\xEA\xD2=}\xC99\xCD\x{190F14}D
-1U-\x9D%\xD4f3\xA7\x{14CB60}f#uX\x97!\xC9\xCn\xE6\x8B\xDF\xC1\xA5\xCEh+!6A\xDB+\xB0%\xA3\xF1C\xDD,\xEB\xA4*D\xE5NcPE!\x88P\xEA \xA8K\xB8\x96\xF0/)-\x9C\xF58tȳ>\x83\x8F\xE9n\xAF@|\xEE
-\xF2\x97\xB8\xE9\x80fN\xE9\x87\xF5:\x97q\xB9A\x96K\xA2\x9BR\xE1\xF0"m\x9B\x9Dmzb\xDFR\xCAQdZ\x944\xBE\xEA\xADF\x8D}ն\x9F@+\x85p\x97V\x99\xFD\xAC\xE3\x92\xA5v\xBA
-&!c\x9C\xE20 CV\xBB\xF4\xC4+
-'-\x82쎘3\xC9\xD4ö]\xA1\xB5w\x9F\xFD\xE0\xF7\x91cۺ\xB2HT0\x89\xD5!0s\x8CN0-\xB0\xCE\xC1\xABp\xA7w\xDBxkq\x8C|9\xCAl\xC9 sw\xF4\xC3\xBA\x80+x\xDA\xEDXKs\xDB6\xBE\xEBW\xF0H\xCDD0^$\xC0\xDCb\xA7\xCE\xD8w\xDAJ=\xC5=\xD0drʇJ@\xB1\xF3\xEF\xB3\xC0\x82\x8A\x94\xC9\xD8JꜢ\xD1v\x8B}+\xA5\xB0o7}g:g\xFDX\xA5u\x87\xF4\xEB\xF9\xF9\xCD{\x82\xFD+\x87\xBC\xCD\xD0OY\x96~\xACW\xC6"\xA75\xAE\xEAWq\xE0zkˮ\xDEl\x9B\xD2\xA4\x97\xDD*v\x96P\x9B\xEDH׳\xAE\x84\x9A\x8D\xD4~}\n\x84`D\xFA\xF0\xC6\xDC\xCC\xBF\x83K?\x9C
+\xD0V@l\xA2\xB6W`\x8B\xA4\xE9CU/\xAB\xA42F\xE5\xCE`PE.\x88\xD0\xFA \xA8K\xB8\x96\xF0/)+\xD6 \xB1<F`\xEE\x80\xD1F`\xC1U\xBFS\x88\x84\xBA\xDD4\xA6\x85ÿ\xD3y\@x\x9EV\xE4\xA3\xF3\xF3\xD2\xFEx<`\xE3 \xA8;1\x8F\xB1<\xD4~#\x86^6\xC09x\xEF\xF4~o\xE2\x811\x80/G\x99\xAD8a\xFE\x8E~\xB8C\xA0\xFF\x95P\x95\xCEը\xD6\xEF18\xDD/[\xBD\xD6 S\x80\xA3q\xC6\xE0EL\xAA\xD3;\xC9\xE9*}
+\xE4)\x90Ͻ\x93<\xF5)\xE7\xEB\xEF83F2\xF7O@\xC6#\xBC\xFF
+ endstream
endobj
1004 0 obj <<
@@ -20637,7 +20621,7 @@
"\xEDj\xF7\xD4\x91quP\x99r\xEB U\xEC\xB4(P\x9E\xB1\xB0\xC9\xE8\x8C\xF2Tյ{\xC1k\xBDэS\x91۵\xB2\xDE\xDB\xD6y\x9C\xC7m\xAA v\xE40\xA5\xEAc\xF30ܚI:\x95f\xF9h\xCDK]\xAB\x87\xAB\x90Bjd\xFB\xA07\xED\x9EB\xF71j\xFD}g\xDA\xCEؗs\xC02$\xBE\x8B\x83[\xDB\xE8\xB3\xC0sm\xF7\xE0\xEBŬH\x892\xCAS+\xDAI\x91'E>\xD7\xE9>\xF5\x81\xF0\xF1\xD7\xC1\xF1:AD\xA0_\xF4\xE6w\xC88\xED\xFD\xA8\xFD\xE8\xEAy\xCC\xD37~\xB2\xF3\xA3\xF1c5 1\xCC\xD2;?i)\xAE\xFD\xE4֏\xE7~\xBC\xF1\xE3\xDB\xD0\B\xCFل\xF2\x828^r\xCD蘋>3.#\xD6\xC7\xC0i.G\xAC\x8B\xB5\xDAZ\xD7d\x85\x99\xDF\xF2\xD3\xF7\xFB\x84\xE7_j\xB3\xF2Р\xC8\xE7#\xF9\xD3\xCAN>-\x88\xCC\xF2"}?\x87\xB6Q\xDD\xC7ʇ\xE1\xE9K2xf\xFCΛ\x94\xBF\xEBt\xD5\xED
endstream
endobj
1005 0 obj <<
@@ -21019,8 +21003,7 @@
\xC8\x82\xADs\xE3b\\xAA\x8FY\xE7\xDE\xC2\xFD\xEB\xDCG\xA0\xE1ֹS\xE2\xC16 E\x9C\x90;2\xF2d\xECh\x90\x83a\xEE\xB1\xB9\xD3\xFD7 \xC7&\xACg\x9D1){8Їۀ\xE0of\xC2<\xEC!\xD7\xDB\xF3e5?>\xED\xFEC]-\x86\xA6\x81w\xFC\xAE\xD8T\xE8l\xE2vg\xE8x2\xD4\xEE\xB5?[\x83\xBE\xA2(\xE2\x8B\x95\x81\x93k\xF0\xF6FO\x8A&\xF2CA\xEE!\xF1a\xDFG\xF8\x91\x89\xEADsL\xAA\xF3\xE1\xA4=\xCF"\x91\xAAC\xCE\xD88\x84\xF135z\xE6Yu4\xC6
r\xC6\xFB>"\xE3\x8FLTǤcR\xF5`\x98\xC7\xF8̢d>\xF8\x80\x87\xB4r\xD6>\xDDa\x90.C\x93u\x9F]\xDAg\xB6\xB3w\x99<⬷\xBF\x83\xE6*P=I\x8E\xC9y\xBB\xC0\xFD3\x95Ñ\xF03\x90
\xE3&\xB3IiPRF#y\xD3,a\xFF\xA9l[\xB7\xF3\xE1wC\x9A\xDEC\x97R\xF6\x85U\x81\x9E\xEC\x88(M\xE4\xB1\xFB!\xD6\x91v|\xFEИ\xA5\x83~\xC3Hr99A.\xFA\xFA[`_\xC2\xEA+!\xBF\xF2\xBE\xDF\xFBү*\xEE\xFE\xA4\xA2\xFB0GBړ\x90\xFE
-\xFA:\xA6\xB5P>\xD0;\xA6s\xCF\xE3d\xFA\xDDl鳢υ+\xA4bE\xAB\xEB1%[\xF9\xAF\xE9\xE6\x94>\x9F\xD3\xE7\xCF\xF4i3\x91\xA8\xBE\x97i\xE9\xC9\xC0#ݖ\xFC\xEF*Im\xA9+\xFA:\xA6\xB5P>\xD0;\xA6s\xCF\xE3d\xFA\xDDl鳢υ+\xA4bE\xAB\xEB1%[\xF9\xAF\xE9\xE6\x94>\x9F\xD3\xE7\xCF\xF4i3\x91\xA8\xBE\x97i\xE9\xC9\xC0#ݖ\xFC\xEF*Im\xA9 endstream
endobj
1109 0 obj <<
@@ -21068,11 +21051,11 @@
\xC66\xDCoC\xBF\xBB\x88\xF8\x8E\xF3\xD0<\xE0\x8A\x8A\x84(\x8A\x96$6\x9B\xF0H\x8C\xE4\xFA\x82\xDD\xC0/ >\x84ҸI70\x86<,\xEE\xE8\xAC$"N\xDF}\xB08\xF0aVH\x8Cb\x99bz\xC3\xF6K\x81\xF7\xB2Z\xD0C\xF3vr\x81㞃\x8F\xCCݛ\xBF\xBEmQT\xE0z\x8B\x86\x86\x93\x88`ּ\x87m/:\xD8v\xAE5\xCEr\xBC\xBFo=8\xC7\xCE\xDDv\xB3\xAC\xE3\xEE\xEF\xC6\xEF\xFE89\x9D[S\x80\x99Tim\xFF\x8E
\xFA\xE1Mw,\x96Ӝ\xD0w\xCD|wW\xF9\xD7\x9A\xFED\xA1}\xB8\xCA \xDB \xC3\xC3$\xD3%\xEE?\xBF\xF0\xA2\xE3}*\xEFe\xF3$\xC0\x9Cἱ\xF5\xA9a\xE4\xD6f{\xA0\x83\xEE4뺍\x94\xEA\xE8\xB6s)\xA7\xFF2\xE3\x9C\xDC((\x8Fq\xD5\x95&`M\x9E4\x95\xE6վr{\xBE\x9D˞+\xF7\xEEнr;\x9Eh}\xE6\xFE\xF9\xC0\xD1m\xD2Φ\x9F\xD9,+\x99\x906P\x9DW8\xC5\xE3;J\xF7\xA2\xFF\xB78)\x85\xA4Hte\xE3\xFBb\xA72\x9Bg(a\x9B\x94\xCBxK\x9D\xE7\x81\xD8\xFD7,\xC3W#Tp\xACo1hVQ\xD8y\xC0\xFCB\xB7lp|\xFFW\xDF\xF4;;\xC3\xCAc\xDB\xC3\xD7-\x86x\xC6B\x83Ku\xA1\xBB\x8FP\xF1\x98\xFA\xC8C9\xA3_\xF0\xFB\xED\x98\xA4\xEA}C\xCB'~\xE0ȡ\xF72\xB1\xC1$\xD9C\xB9\x92+h\x9B꼀_`P4`\xE1\x9B3\xBA\xFBֱi}͛*\xE7n\x85W\xFFux9\x8FD\xF4\x9D\xC3ڄ\x97(\xD3)\xCAS\x8Eou\xE9Կ\xE1\xB0~v&k?Fr\x88r\xE4\xF3H\xE13&[\x8FСS,W\xF1\xE3q\xF5\xDC\xD1\x8F\x80W\xF7\xBFf&\xA6\xCDZO?\xF8\x8DU`\xB5n_\xAD\xDE0y\xFA\xF7ɞ\xE4f\xA00\x82W\xDAIG\xF1\xE5f_:\xF6e-\xFF\xEE \x96\xF1G<9\xE2\xDF\xFF.C!\x99I\}f\xE8u\xC7'\xBEǓ7\xF8\xF7%\xFE\xFD\xFFz\xBC\xCB\xE7+\xFF\xEE \x96\xF1G<9\xE2\xDF\xFF.C!\x99I\}f\xE8u\xC7'\xBEǓ7\xF8\xF7%\xFE\xFD\xFFz\xBC\xCB\xE7 endstream
endobj
1134 0 obj <<
-/Length 5931
+/Length 5932
/Filter /FlateDecode
>>
stream
@@ -21120,7 +21103,7 @@
VI'\x9D_[\xAFo\x90"b\xE6\xDBܧ؟\xF2&[ut\x94\x98џ\xC0d9%\x9Fb\xD2\xC6.\xFF\xD9 b\xD98\xDD7hi\xAE(dE\xAC?LmF\xCD\xDFKE\xD1\xFF\xE6ܑ0c$\xD7\xC4D\x8A]:\xA6ګ\xF9wV\x9C?8\x8El\xAF
\xF4\xCA\xE5s\xAF\xF3\x80c~7rĹ\x93Q\xEE\xE4\x83cx-\xB9\xCA,\x8Dh\\xAD|\xAA\x93\xBC66qME_\xFF1Y\xA9l\x92\xC7F\xE4\xA4}\x93\xD9"\xAB\xA7\xEC\xB4\xEBY=\xE2<\xD1\xE1s\x84\xC1\x88H\xDC%\x98z\xA1\xB1Gn\x8C\xBC\xCA*\xA5\xAEl
!sȧ\xD9ͬ\xD2U| U2E\xC2gDJ$\x87F\xAE\xF6\xAD\xEF'| \xBF\x8Cej\xB8\xA0u\xF9\xE3K\xD8|\xC0\xF9B\xFEA\xC8\xF3%\xEC\xDF\xFB7\xE6\xFF\xA0\x80\xFF6\x80
-ea\x8CG\xA6\xF9\xA47\xE9Fщ\x87P\xFEB7G\xFA\xDB\xD1ߍ\xAF\x84\xA7V\xE8\x846\xE9\xF2\xF0\xC6wt\xF3\x8A\xFE~I\xBF\xA7\xBF/\xF9 \xBB\xD9We\xDAb\xD6\xDDM\xE52\xA5\x82\xFB\xBB\xB1\xA5\xD4JF#\xAD\xCAP\xEB\xAB\xFB\xE6@\x87\x84\xF9\xDF>\xB8\xE4_>\xF8\xF7\xFF\xBC\xC1c_\xFE\xB1\xF1{eQՋ\x97\x88\xB5\xDE\xCA1\xAD\xD33\xFE\xC5u{~\xF3\xFAO\xFF\x98l3
+ea\x8CG\xA6\xF9\xA47\xE9Fщ\x87P\xFEB7G\xFA\xDB\xD1ߍ\xAF\x84\xA7V\xE8\x846\xE9\xF2\xF0\xC6wt\xF3\x8A\xFE~I\xBF\xA7\xBF/\xF9 \xBB\xD9We\xDAb\xD6\xDDM\xE52\xA5\x82\xFB\xBB\xB1\xA5\xD4JF#\xAD\xCAP\xEB\xAB\xFB\xE6@\x87\x84\xF9\xDF>\xB8\xE4_>\xF8\xF7\xFF\xBC\xC1c_\xFE\xB1\xF1{eQՋ\x97\x88\xB5\xDE\xCA1\xAD\xD33\xFE\x85\xBD\xEAa\xCFo^\xFF\xE9\xFF\xE9l4
endstream
endobj
1143 0 obj <<
@@ -21173,7 +21156,7 @@
!\x93\xA2\xEE\xA2\xD4_\xED>\xC51\xB3\xA0Y5e"\xC3\x8B\xF7r\x93\xAEp\xE2-\xF3TG\xC9M\xC5;\x87\xDF=\x9E\x80S\xB58\xEEJo\xC4\xC3=\xEE{y\x9B\x99R\xE1\x8FRC#\xF5\xF5uʙq_ T\xD4\xE0;g\xE3h\x86ΟI\xEB?W\xA6NK#\xA37\xAC\xA7ׁq4\xA9o\xB2\xE4p\xEBf"\xAF\xF0>^\xF0\x95\xCA\xDF\xE5K\x96\x8F7\xF4\x9D9긴\xDE~|\xFD
\xE0\xD7\xCF0~e\xE4WF~\xE1{\x96\xBF\xF5e\xE0\xF9g\x81݇,\xB5J4\xBE~\x8D\x91\xEF_15@\xFE\x93\x94AP\xC0\xA8\xEC\xE2\xCFtr\xA4\xBF-\xFD]\xB9FFʋQ)\xC0\xF4\xC4t\xF2\x91\xFE~K\xA4\xBF\xB8\x88O\x83,\x93\xD4Vi)3
\xC4$\x80\xFF\xBCdiQ\x94\xE2g\x85\xA4ջM\xBD\xE7
-G\xFA\x82\xF1%\xDF/\xFE\xD7)~\xCA7L~\x8B\xD9\xF8]\x94"/\xAB\xC5\xCF\xD7V\xC9'\xFA\x90L-9\xDDo\xA6|w\xFB\x87\xFFˤ
+G\xFA\x82\xF1%\xDF/\xFE\xD7)~\xCA7L~\x8B\xD9\xF8]\x94"/\xAB\xC5\xCF\xD7V\xC9'\xFA\x90L-9\xB7\xAF\xFA͔\xEFn\xFF\xF0\xFF\xA4
endstream
endobj
1153 0 obj <<
@@ -21227,7 +21210,7 @@
@\xD0:\xC3d֘7\x95;$c\xF5\xE8_\xC0e_s
\x8DV\xBAM\xA7ԃ\x95}\xEB\xA5\xFD\xAC\xB7\xF7\xAEW ".c\xC0C}\x89\xA7+:\xA9X\xBFþP3\xBB\xE4\x80\xEBA\xFA\xE3]ӵ˝R!x\x9B\xFA\xFB\xDC\xE8\xF8\xAD#\x97?Ӕ\x9E\xEEՁT6\xE4\xC9\xF3\x85{\xDC\xE8aJ{*\xB2=Ȁd`{ǎ`H7\xA8^\xF0w\x8C\xD6\xF5\xE8D\x87=\xF2}\x86鼓\xDB\xEA\xDFҌ\xC0z(\xF7\x9F\\xF3Y)\xF56\xD3\xE8\x8F\xF5c\xF0\xFDr5|\x82\xC7\xDEV\x91\xBF\x8C\x85\xC8;\xD4\x9F\xC5)\x930 \xFDG\x8BN\xF4=)xX\x82\xAF"\xF4\xF4\xD8\xE1\xC7\xF8x\xE8\xF0\xE9D\xB8\xC8\xE1\xA9\\xF8\xDD\xF27x\xB6<;w\xF6fl\xF4l\xB9\x9B[<"s\xFC\x8Cy\x9B\xF32\xD4\xC9\xCB9\xFA\xD4&\xBF\x8CM\xA1\xEA\x9C/a\xF3n\xE2c\xEF\x90\xFC\x8F\xB6\xBF\xD25\xEB\xF7h\xD5\xE2\x9Bf\xDBiL\x96R9\xBE)>O(\xF8\xFE\xF8p\xDCkj\xFBg\xA4\x82M\x93\xE5in\xBAS\xA7e\x830\xB1\x96\xEB?\xAE:\x9F\xE8{\x92:\x87\xD7\xD3\xFC9\xEA\xFC\xE3
|\\x9D?\x9D\xB7\x96N\xE5\xC2\xEF\x98R%8N-\x94_\xA7?i\xC6\xC1C5n0\xFCY+\xB5\x8AUB_E\x91Z_\xDDU c\xE0g\xA3O\xF9h\xF4ǿ}̇~c6~\xE2\xC7\xE6E\xFD8c\x83\x9Fb2Mh\xDFr}\xD64\xFBL\x92r
+\x94_\xA7?i\xC6\xC1C5n0\xFCY+\xB5\x8AUB_E\x91Z_\xDDU c\xE0g\xA3O\xF9h\xF4ǿ}̇~c6~\xE2\xC7\xE6E\xFD8c\x83\x9Fb2Mh\xDFrs\xD64\xFBL\xE3r
endstream
endobj
1164 0 obj <<
@@ -21235,33 +21218,38 @@
/Filter /FlateDecode
>>
stream
-x\xDA\xEDZ[s\xDB\xC6~ϯ\xE0#\xD8Xv\x8B˴\x93\x8E\xE5V\xA9=v\x93\xB1䴝$ \xB9\x94\x81-.ݲ+\x9Bz~\xA6\xD3,С \xE7g\x89\xD6\xC1\xDF\xCA\xF5zn\xA2\xC0\xED\\xBDt-?^\xB8\xEE\xC3\A\xA7\x93\xF1ݍ\xE3\x9B\xE7?\xBC\x941͚_]\x9E\xBFyͷE\xBD⛪\P\xEF/W\xAF\xEE\xB9\xC3(\x83\x86UpIS3\xE9\x811\xDF\d9\xEC\xD1x\xF6x\xA6\x8D
-\xAD\xCDfg\x86*\xDE#\xECI\xD9\xE4\xAE\xFB\x89g\xC9\xF1\xBD/\xF9"\x80?#\xEF\x8FE\x9FCX\x9B\xD8\xB1(
-\xF3\x9A\xA5
- \x80J\xE5aj\xF5\xECj\xB0tu3WA \x84\x88\x9D:>\x94\xB6*n\xED\xE6*\c\xF6ػ\x9B\x9Fe\xE2\xAEF܅^\x84^@蟣H\xEFڎ8\x9A\xC0m-\xAE\x98\xF8\xD3@\xC1¢\xC9\xB9
-\xF9\xEB\xFC\xCC"#\xEF\\xBDj\xB9qy^\xB4\xEEۧ\xD8I\x9C\xE4a\xA4\xB2\xE9\xCA˪h\xBD\xAC+6!)\x84\xCC\xDE\xC2\xFC\xC3\xD3v\x89\xF2\xC8L\x98e\xBD\x9E?FF\x876\x82\x84\x80\x83\xE0A\xA5\x8FU\x8C\xBF\xB8\xF5\x94\xB7\xDCsO\xD8\x88\x95%.\x9E\x90\\x80`\xA2g9XE\xE1i\xFC3\xBF81\x9C\xEFe\x87˦\xAA\x86)z\x81\xBEVwY\xDFh\xD0r\xE9Р;'\xB3-\xE6p9\xEFn\xC8$\xEF\xC7"
-\xD9V\x9E\x9A\xFF;\x8F\xC2\xAA\xF48\xE6P\xB3$IBcE\xA3~D\xE8/(\x96(\x9B}/pK \x85\x94\xB5\x8CY\xC8@\xA4]q\xABX\xCD\xC5\xFB\xA5A\xB9\xBC\x950\x90\xB9\x95H\xCCa)\xE4h-va\xA2T\xE6\xD8a\xA2L\x98?\xB0Ä\x98u\xDFv͆Gz\xFE\xCE-\xF9Bk\xE2\xE0?\xF3,#
-\xE8\xE5\xDA\xF3\xF2\xC0/\xD4\xCE\xC9"]ÿ\xC0\xEF
-\xDD\xF1\xEC\xE2\xB1O\x83Q\x93\x82.\xE5\xD3\xDD<\xF5=\x9BL\x851$ݓ\xD9\xCB\xDA\xFB\xC4Y,og\xE5\x90'\xB5\xD9lY˦\xC5\xC3\xE1\xFD\xA0Eȩ-\x99\xE7mq}\xFA\xF6Q\x8E\xB1\xE3X\xAC\xA1\xD9]\x87\xEDbS\x85\xBF\xD2uߕUȘ\xDB>&\xD2\xF4.6ʠO\x97$hF\xB3C1G\xEC#7\xD7}\x9Cv\x98\xA7l \xA4\xB1\x9Al\xBE\x90 \xBCҁ\xE7芛ʼnA\x81It\x98[;\xA5\xF8\xFB\xDD\xE3dđ8\xB2\xA15f:\xF1\x82ccCO&>\xAFWOGq\xFAg\xD3\x9E\x8Db\xE1>\x87[\xFA
-\xC3\xFB['\x92!=O\x88* H\x9C\xCB\xE6w \xD7\xEB\xFD\x86#u_\x95M\x92\x82-A\xA1\xCAX\xF8l;\xB2\x8B\xFD8\xACKZ\xA6\x83!\xEEq\xA2\xA0\xD2\x86\x86}\x9BxJ\xF3\xE5\xF9\xF7O\xC6_\x9D\xE5!\xDD\xE3\xE9{\\x86-2.\xED\x92I\xE0s\xF2?\xF0p\xDD#\x96\x8C.\xC8N\xAC\xA0\x88\xE47\x8B\xF5\xAB\xE9
-bg\xE3\xF3a\xF5O\xB2\x87\xCFGIfєfm\xEF͋\x89v\xA5Ih!\xD5O\xF5\xECeQ\x98%ٔ\xA2\xE4a\xE5\xB0D>\x95\xF7/̪R<2\xB5\xF7{\xF8\x80\xB0\xA4D\xE8\xCF\xDEs\xAA\xB1\xBE\xAB\xAC\xDEJ\xBETn\xB8\xCA\xC1\xE7\x8D-\x88go\x80\xB2\xC1(iK'\xE8~f\x80r\xD9<-z\xDE\xEC\xEBU\xB1;\xBCh\xEAU\x89\xE2~$r\x80MamQ5\xA9a\xA6Q5\xCD-\xA7\xEC\xBE|:ٴR\xCEi\xB7Tv$\x9F\x94{|\xB2\xDEl\xA75\x9D\xF3\xA5\xA4\xE3d9>q\x82m\xA1\x8ES\xDBA\xFD\xF1\xA5Q%IR<J'Y㑞\xA9Q_\xA4<\xF3\x9B\xC53>"\x8Ar:w\xF3;>\xD3I\x81;\xA1}\xE3y\xA2{RQ\xEFZ7="\\xB9\xED\xCE-ٸhΏ\x82\x84|Z=\xB7q\xEA،\xAA\xE7N2ѾJ)H\xCBħ\xBC\x94N'y(x\xB2\x96{\xA0\xD3!_D(xO\xDEl%3\xF2\xFE\xDCP\x96\xDAw\xB0\xCF[\xB0 F\xCCM\xFB\xE2-\xD1\xF0[\xF2\x97\xF8\x9E,\xB6pe}ͷh\x8E4Ʈ=g\x8E\xC2dn\xEB-<\xE3-\xA12\x9F>\xBBթU\xDF$4\x91\x9A\xEET\xF4\xEEĽ\xDDc\x95oR\xE1\x8B\xC3\xC8\xC4ӥ$q\xC5J\x82\x80d\x9E\x8A\xFA͵N\xF8\xC5\xDE\xF3VXB\x9AQ\xF6%\xFC(\xD8\xC6\xE7;y\x958\xCE-\x950\xEF\xD0?\xB8S\xEEW:\x9A\x8D\x83僧\xA7kIוd"C\xB5\x90\x88\xF2\x8A\xFE\x8DWԸ\xA4\xEB9]\xDF\xD0\xF55\x97*@_\xEA8W\xF4\x84
-\x95\x8A}\xB5\xE7g\xA72jB1P\x9A\xA5\xFD\xA87Ŗ\xB3\xFA\xF0\xFA\x94Ϯ?\xFFm\xF5\xE7\xF1\xFA\xD3̞\xFDt\xA6\xD2$˃\xE61\xC42\xD7R\xB9\xD1vZ\xC1I\xCC \xEB}\xDE\xCF\xFC\xFD\xEA\xAB\xFF{\x93\xA4
+x\xDA\xEDZ[s\xDB\xC6~ϯ\xE0#\xD8Xv\x81\xC5e\xDAI\xC7r\xAB\xD4\xBB\xC9Xr\xDAN\x92\x90\J\x88@\x80!@;\xEC\xAF\xEF\xB9-\x80\xA55\xB6(\xA9O\xF1hb\x8Bݳ\xE7\xF2\x9D\xCB"
+\xB5\x99E\xC3ew=i\xD0\xE5\xEDw_EO6&\x9E\xB906\xE1\xE9\xF9\xD5W\xDF\\xA88\x9DeaE\xD9\xECj=\x8B\xA3"Tq<\xCBLf*\x9D]\xADf?\x97v\xD9Wm3?\xD3Y\xE80\xE7g\xA9\xD6\xC1ߪ\xF5zG\x81\xDD\xD9fi;~\xBC\xB0\xFD\x87\xB9\x82N+\xE3\xFB\xCB7\xCFx)c\xDA5\xFF\xBE\xBA<\xF3\x9Ao\xCBf\xC57u\xB5\xA0\xDE_\xAE^\xDDs\x87Q
+\xA3\xE0\x92e<\xC6\xEB\x811\xDF\\xE4\xEC1\x8E\xE1\xD8㙎MhL>;30T\xF1aOʤw\xFD\x98O<K\xFF\x88\xEF}a\xC8\xFC\xA1y,\xFA\xFC\xC2"\xC0\xD8Ԥ\x88EQX\xE4\xF0\xFE\xD4,S+* $@\xEC\xD4E𡪱Usk7WE`{\xB3\xC7\xDE\xDD\xFC,w5\xE2.\xF4"\xF4B\xFFEz\xD7\xF5\xFC\xC0\xD2v+\xA9\xED\x81;2˾\xA9~\xDB\xF3V@;B\xAE\x80ғ\xB4!I\x930\x893\x9F\x8B\xEB
+4\xFEU\xFFPu\x98J\xC8\xC0\xC4Q\xA1\xFC6dw7\xEDj\xA8\x9A&\xCC\xC5#;\xD8:ё\x80LP\xAE\xB1LZ\xA9c}\xB3\xAA\x90\x91\xD7<\xA4m,\xDF|l\xB2\x86EZJ\xA3\x83F\xD9WY]7 Fz_u\x91Bu\xB4\x99\x8B\xAA\xEE\x81\xEAGpu0b\x9D\x91\x91y\xD3Z\xA8\xE0\x8A\x89?
+,\x9A\x91ˠ\xF0\x97\xBF\xCE\xCF2\xF2\xF7\xDE6\xAB\x8E\x97\xE7eg\xBF}\x8A\x9D$iF*\xF7W^\xD6e\xE7d]\xB3 \x81H!dv\xE6\x9E\xB6K\x94G\x87y>\xE8\xF9c\xE4\xEB\xD0D\x90p<\xAA\x{131281}\xF2\x8E{\xEEI8\x9B\xB1\xB2\xC4\xC5\x92L\xF4,G\xAB(m\x80_`F\xE2=\xC3)\xF1^v\xB8l\xEBz\x9Cb\x88\xE0k}\x97\xF5M-\x97
+\xBA\xB72\xDBb\x97\x83\xF0\xEE\x86L\xF2~,ҐmY\xFC\xE7Q8@\x95\x9E\xC6j\x96\xA6iѨ\xFAK\x8A%\xAAv?\xDCH!ec\xB2\x80i\xD7\xDC*Ws\xF1~YPmFo%dn\xA5s\xCA9\xC0F\xE9\xA4\xE4\ʕ\x9B\xFD\xFD\x9C\x97$WU\x97\x8BZ\xAC\xB8\xEEx>\xA6\xD8\xFA\x8B\xE0\xE5v?\x8CJ \x89QG\xDA\xEB\xA6\xAB\xE5\xA6ßg\xFCp\xB1\xEF\xF9ƽ\x86\xF7\xCBR\xE6\xB2eW\x81#V\xEA\x89]\x82\x93H̿\\xC1.\xE2(\x939v\xA8\xE6\xEC0\xA1f\xDDw}\xBBᑎ\xBFsC\xBE\xD0\xC4I\xF0\x9Fy\x9E\xF4r\xE3xy\xE0ke\x91\xBE\xE5_\xE0w\x8D\x8C\xEEyv\xF1ا\xC1h\x9C\x81.\xFEn\x8D\xFA\x8EMq\x85 $\xDD\xDE\xECU\xE3|aN\xE2,\x97\x96\xB7\xB3\xB2ȓ\xC6\x8Fl\xB6jd\xD3\xE2\xE1\xF0~\xD4"\xE4Ԗ\xCC\xF3\xB6\xBC>}\xFB(\xC7D\x87I"\xD6\xD0\xEE\xAE\xC3n\xB1\xA9\xC3_\xE9\xBA\xEF\xAB:d\xCC\xEDi:\xE5\xD0H\xFC%\xC9Ɠ\x88YM\xA1\x98\xA3\x88v\x87\x91\x82\x9D\xEB!N;\xCC3\xB6\xD2XM6_\xCA\xCE\xE9\xC0qt\xC5\xCD\xF2Ġ NuX\xE3S\xFC\xFD\xEEq
+2\xE1H\x99\xD0ı?\xF9\x82\x931<\xF1&|ެ\x9E\x8E\xE2\xF4;\xC9\xFD\x9EMb\xE1!\x87[\xBA
+\xC3\xFB[+\x92!=\x9AN\x88* HR\xC8\xE6w \xD7\xEB\xFD\x86#u_\x95{I\xC1\x96\xA0P\xE5,|\xB6\x8A\xF7H\9\x8C\xC5~\x9C\xD6%-\xD3\xC1\xBF\xF78QPك+\xF34\xF7)JFQK\xBE\xBCaVU\xE2ِ\xA9\x83\xDF\xC3\xA4\x80%Bv\x9ESM\xF5]\xE5`\xF5F\xF2\xA5j\xC3U\x8E08o@|\xC6+\xED!\xF7\x9C\xCFU\xCC)\xB2L\xF3\xB6\xBCg\x97#d\xB6\xE2\x9C\xCDP\xAEV\xE9\xC4, EԹᠸX\xE6uE\xCEm+\xE1\xF4$\x97;.\x9Es\xB93"f\xC2tv\xDDT+\xA3;}G\xA5ǟ\x8E\xD7ߎ\xB1\xE4\xC4\xA3`\xBDs \xD8\xE6Ge4\xE4!\xB1h\xA6\xCF cT\xBE\xF8n\xF6\xF01\x89;M䠢F\x8Cu\xB0e\xEA\xCEg:9\xC8)\xC7"M\xE1\xECZ\xB2\xAE\xE19E)~K\xFEߓ\xC5\xB6j\xAE\xF9͑&c\xC2ص\xCCQx\x83̭f\xE0\x91\xCE%L>2\xBB\xADd\xFE\xE5\x8E\xDC\xF5\xA0ٸ
+\xB1m\xC23\x87q&\x8A\xB6A\xDC\xF9\xE55\xC2'&imw#
+\x92NA\x85<;$Qt\xDC yW19\x81\xCB!\x91I\xA8\x8C+\xAB\xFA\xB00\x9A\xC8xJ#\xE5\xB0Mوy\xFB
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nik...@us...> - 2015-12-06 18:23:42
|
Revision: 2439
http://sourceforge.net/p/jsbml/code/2439
Author: niko-rodrigue
Date: 2015-12-06 18:23:39 +0000 (Sun, 06 Dec 2015)
Log Message:
-----------
tags release 1.1
Added Paths:
-----------
tags/jsbml-1.1/
Index: tags/jsbml-1.1
===================================================================
--- trunk 2015-12-06 18:19:00 UTC (rev 2438)
+++ tags/jsbml-1.1 2015-12-06 18:23:39 UTC (rev 2439)
Property changes on: tags/jsbml-1.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,11 ##
+.classpath
+.project
+dist
+build
+bin
+jsbml.log
+.apt_generated
+.factorypath
+.settings
+jsbmlTestResults.txt
+target
Added: LicenseHeader
## -0,0 +1,19 ##
+/*
+ * $Id$
+ * $URL$
+ * ----------------------------------------------------------------------------
+ * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML>
+ * for the latest version of JSBML and more information about SBML.
+ *
+ * Copyright (C) 2009-2011 jointly by the following organizations:
+ * 1. The University of Tuebingen, Germany
+ * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
+ * 3. The California Institute of Technology, Pasadena, CA, USA
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation. A copy of the license agreement is provided
+ * in the file named "LICENSE.txt" included with this software distribution
+ * and also available online as <http://sbml.org/Software/JSBML/License>.
+ * ----------------------------------------------------------------------------
+ */
\ No newline at end of property
Added: svn:mergeinfo
## -0,0 +1,2 ##
+/branches/astnode2-merging-alternate:2189-2376
+/tags/release-0.8-b1:588
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|