Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-03-09 02:36:14 -0500
committerEike Stepper2013-03-09 02:36:14 -0500
commit1d478ffc4f555c0159d17443913728c2e328d354 (patch)
treef17390d6c12af415c6ec4f2a8241528c4cd4b50b
parentc359069dd7114dd2ab4038bae89c5f42350cb885 (diff)
downloadcdo-1d478ffc4f555c0159d17443913728c2e328d354.tar.gz
cdo-1d478ffc4f555c0159d17443913728c2e328d354.tar.xz
cdo-1d478ffc4f555c0159d17443913728c2e328d354.zip
[401763] Make CDO Server more robust against data dictionary changes
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401763
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/package-info.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/package-info.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java59
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DurableLockingManager.java76
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java28
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractBasicListTableMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BasicAbstractListTableMapping.java)9
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractFeatureMapTableMapping.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java100
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractListTableMapping.java23
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMapping.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMappingWithRanges.java85
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMapping.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMappingWithRanges.java85
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMapping.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMappingWithRanges.java97
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMapping.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMappingWithRanges.java97
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditClassMapping.java79
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategy.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategyWithRanges.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java122
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategy.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategyWithRanges.java67
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditClassMapping.java57
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditMappingStrategy.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/IMappingConstants.java79
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditFeatureMapTableMapping.java39
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditListTableMapping.java39
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/ObjectTypeTable.java48
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/verifier/DBStoreVerifier.java36
34 files changed, 698 insertions, 699 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/package-info.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/package-info.java
index e1b3d052c5..27b0151253 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/package-info.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/package-info.java
@@ -13,3 +13,4 @@
* Server concepts for dealing with mapping strategies and mappings for classes, lists and types.
*/
package org.eclipse.emf.cdo.server.db.mapping;
+
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/package-info.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/package-info.java
index 7ef9ed90d4..4eafb7bfd0 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/package-info.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/package-info.java
@@ -13,3 +13,4 @@
* Server concepts for dealing with DB stores and accessors.
*/
package org.eclipse.emf.cdo.server.db;
+
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java
index 6445d04ab9..9b9dfd7e54 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java
@@ -198,65 +198,6 @@ public class CDODBSchema extends DBSchema
*/
public static final String CDO_OBJECTS = "cdo_objects"; //$NON-NLS-1$
- /**
- * Field names of attribute tables
- */
- public static final String ATTRIBUTES_ID = "cdo_id"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_BRANCH = "cdo_branch"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_VERSION = "cdo_version"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_CLASS = "cdo_class"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_CREATED = "cdo_created"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_REVISED = "cdo_revised"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_RESOURCE = "cdo_resource"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_CONTAINER = "cdo_container"; //$NON-NLS-1$
-
- public static final String ATTRIBUTES_FEATURE = "cdo_feature"; //$NON-NLS-1$
-
- /**
- * Field names of list tables
- */
- public static final String LIST_FEATURE = "cdo_feature"; //$NON-NLS-1$
-
- public static final String LIST_REVISION_ID = "cdo_source"; //$NON-NLS-1$
-
- public static final String LIST_REVISION_VERSION = "cdo_version"; //$NON-NLS-1$
-
- public static final String LIST_REVISION_VERSION_ADDED = "cdo_version_added"; //$NON-NLS-1$
-
- public static final String LIST_REVISION_VERSION_REMOVED = "cdo_version_removed"; //$NON-NLS-1$
-
- public static final String LIST_REVISION_BRANCH = "cdo_branch"; //$NON-NLS-1$
-
- public static final String LIST_IDX = "cdo_idx"; //$NON-NLS-1$
-
- public static final String LIST_VALUE = "cdo_value"; //$NON-NLS-1$
-
- /**
- * Field names of featuremap tables
- */
- public static final String FEATUREMAP_REVISION_ID = LIST_REVISION_ID;
-
- public static final String FEATUREMAP_VERSION = LIST_REVISION_VERSION;
-
- public static final String FEATUREMAP_VERSION_ADDED = LIST_REVISION_VERSION_ADDED;
-
- public static final String FEATUREMAP_VERSION_REMOVED = LIST_REVISION_VERSION_REMOVED;
-
- public static final String FEATUREMAP_BRANCH = LIST_REVISION_BRANCH;
-
- public static final String FEATUREMAP_IDX = LIST_IDX;
-
- public static final String FEATUREMAP_TAG = LIST_FEATURE;
-
- public static final String FEATUREMAP_VALUE = LIST_VALUE;
-
private CDODBSchema()
{
super("CDO"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java
index f1350f017e..105f82b8ac 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java
@@ -31,6 +31,7 @@ import org.eclipse.emf.cdo.server.db.IIDHandler;
import org.eclipse.emf.cdo.server.db.IMetaDataManager;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
+import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.IMappingConstants;
import org.eclipse.emf.cdo.server.internal.db.messages.Messages;
import org.eclipse.emf.cdo.spi.server.InternalRepository;
import org.eclipse.emf.cdo.spi.server.InternalSession;
@@ -71,7 +72,7 @@ import java.util.Timer;
/**
* @author Eike Stepper
*/
-public class DBStore extends Store implements IDBStore, CDOAllRevisionsProvider
+public class DBStore extends Store implements IDBStore, IMappingConstants, CDOAllRevisionsProvider
{
public static final String TYPE = "db"; //$NON-NLS-1$
@@ -919,11 +920,10 @@ public class DBStore extends Store implements IDBStore, CDOAllRevisionsProvider
{
statement = connection.createStatement();
- String from = " FROM " + name + " WHERE " + CDODBSchema.ATTRIBUTES_VERSION + "<"
- + CDOBranchVersion.FIRST_VERSION;
+ String from = " FROM " + name + " WHERE " + ATTRIBUTES_VERSION + "<" + CDOBranchVersion.FIRST_VERSION;
- statement.executeUpdate("DELETE FROM " + CDODBSchema.CDO_OBJECTS + " WHERE " + CDODBSchema.ATTRIBUTES_ID
- + " IN (SELECT " + CDODBSchema.ATTRIBUTES_ID + from + ")");
+ statement.executeUpdate("DELETE FROM " + CDODBSchema.CDO_OBJECTS + " WHERE " + ATTRIBUTES_ID
+ + " IN (SELECT " + ATTRIBUTES_ID + from + ")");
statement.executeUpdate("DELETE" + from);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java
index 4f9b61d18b..4382a69339 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java
@@ -18,6 +18,7 @@ import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping2;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
+import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.IMappingConstants;
import org.eclipse.emf.cdo.spi.server.StoreChunkReader;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -27,7 +28,7 @@ import java.util.List;
/**
* @author Eike Stepper
*/
-public class DBStoreChunkReader extends StoreChunkReader implements IDBStoreChunkReader
+public class DBStoreChunkReader extends StoreChunkReader implements IDBStoreChunkReader, IMappingConstants
{
private IListMapping referenceMapping;
@@ -59,7 +60,7 @@ public class DBStoreChunkReader extends StoreChunkReader implements IDBStoreChun
}
else
{
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append('=');
builder.append(index);
}
@@ -78,7 +79,7 @@ public class DBStoreChunkReader extends StoreChunkReader implements IDBStoreChun
}
else
{
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(" BETWEEN "); //$NON-NLS-1$
builder.append(fromIndex);
builder.append(" AND "); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DurableLockingManager.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DurableLockingManager.java
index 1bc6582675..e7e8145a3d 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DurableLockingManager.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DurableLockingManager.java
@@ -21,7 +21,6 @@ import org.eclipse.emf.cdo.common.lock.IDurableLockingManager.LockAreaNotFoundEx
import org.eclipse.emf.cdo.common.lock.IDurableLockingManager.LockGrade;
import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
-import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IIDHandler;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
@@ -31,9 +30,10 @@ import org.eclipse.emf.cdo.spi.server.InternalLockManager;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBDatabase;
+import org.eclipse.net4j.db.IDBDatabase.RunnableWithTable;
import org.eclipse.net4j.db.ddl.IDBField;
import org.eclipse.net4j.db.ddl.IDBIndex;
-import org.eclipse.net4j.db.ddl.IDBSchema;
import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
@@ -44,7 +44,6 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Statement;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
@@ -384,50 +383,45 @@ public class DurableLockingManager extends Lifecycle
branchManager = store.getRepository().getBranchManager();
idHandler = store.getIDHandler();
-
- IDBSchema schema = store.getDBSchema();
+ IDBDatabase database = store.getDatabase();
// Lock areas
- lockAreas = schema.addTable("cdo_lock_areas");
- lockAreasID = lockAreas.addField("id", DBType.VARCHAR, true);
- lockAreasUser = lockAreas.addField("user_id", DBType.VARCHAR);
- lockAreasBranch = lockAreas.addField("view_branch", DBType.INTEGER);
- lockAreasTime = lockAreas.addField("view_time", DBType.BIGINT);
- lockAreasReadOnly = lockAreas.addField("read_only", DBType.BOOLEAN);
+ lockAreas = database.ensureTable("cdo_lock_areas", new RunnableWithTable()
+ {
+ public void run(IDBTable table)
+ {
+ IDBField lockAreasID = table.addField("id", DBType.VARCHAR, true);
+ IDBField lockAreasUser = table.addField("user_id", DBType.VARCHAR);
+ table.addField("view_branch", DBType.INTEGER);
+ table.addField("view_time", DBType.BIGINT);
+ table.addField("read_only", DBType.BOOLEAN);
+ table.addIndex(IDBIndex.Type.PRIMARY_KEY, lockAreasID);
+ table.addIndex(IDBIndex.Type.NON_UNIQUE, lockAreasUser);
+ }
+ });
- lockAreas.addIndex(IDBIndex.Type.PRIMARY_KEY, lockAreasID);
- lockAreas.addIndex(IDBIndex.Type.NON_UNIQUE, lockAreasUser);
+ lockAreasID = lockAreas.getField(0);
+ lockAreasUser = lockAreas.getField(1);
+ lockAreasBranch = lockAreas.getField(2);
+ lockAreasTime = lockAreas.getField(3);
+ lockAreasReadOnly = lockAreas.getField(4);
// Locks
- locks = schema.addTable("cdo_locks");
- locksArea = locks.addField("area_id", DBType.VARCHAR, true);
- locksObject = locks.addField("object_id", idHandler.getDBType(), store.getIDColumnLength(), true);
- locksGrade = locks.addField("lock_grade", DBType.INTEGER);
-
- locks.addIndex(IDBIndex.Type.PRIMARY_KEY, locksArea, locksObject);
- locks.addIndex(IDBIndex.Type.NON_UNIQUE, locksArea);
-
- IDBStoreAccessor writer = store.getWriter(null);
- Connection connection = writer.getConnection();
- Statement statement = null;
-
- try
+ locks = database.ensureTable("cdo_locks", new RunnableWithTable()
{
- statement = connection.createStatement();
- store.getDBAdapter().createTable(lockAreas, statement);
- store.getDBAdapter().createTable(locks, statement);
- connection.commit();
- }
- catch (SQLException ex)
- {
- connection.rollback();
- throw new DBException(ex);
- }
- finally
- {
- DBUtil.close(statement);
- writer.release();
- }
+ public void run(IDBTable table)
+ {
+ IDBField locksArea = table.addField("area_id", DBType.VARCHAR, true);
+ IDBField locksObject = table.addField("object_id", idHandler.getDBType(), store.getIDColumnLength(), true);
+ table.addField("lock_grade", DBType.INTEGER);
+ table.addIndex(IDBIndex.Type.PRIMARY_KEY, locksArea, locksObject);
+ table.addIndex(IDBIndex.Type.NON_UNIQUE, locksArea);
+ }
+ });
+
+ locksArea = locks.getField(0);
+ locksObject = locks.getField(1);
+ locksGrade = locks.getField(2);
StringBuilder builder = new StringBuilder();
builder.append("INSERT INTO "); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java
index c8034bfbf3..d5dd79771f 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java
@@ -28,6 +28,8 @@ import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBDatabase;
+import org.eclipse.net4j.db.IDBDatabase.RunnableWithTable;
import org.eclipse.net4j.db.ddl.IDBField;
import org.eclipse.net4j.db.ddl.IDBIndex;
import org.eclipse.net4j.db.ddl.IDBTable;
@@ -186,14 +188,24 @@ public class ExternalReferenceManager extends Lifecycle
{
super.doActivate();
- IDBStore store = idHandler.getStore();
- table = store.getDBSchema().addTable("cdo_external_refs"); //$NON-NLS-1$
- idField = table.addField("id", idHandler.getDBType(), store.getIDColumnLength(), true); //$NON-NLS-1$
- uriField = table.addField("uri", DBType.VARCHAR, 1024); //$NON-NLS-1$
- timestampField = table.addField("committime", DBType.BIGINT); //$NON-NLS-1$
+ final IDBStore store = idHandler.getStore();
+ IDBDatabase database = store.getDatabase();
- table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField);
- table.addIndex(IDBIndex.Type.NON_UNIQUE, uriField);
+ table = database.ensureTable("cdo_external_refs", new RunnableWithTable()
+ {
+ public void run(IDBTable table)
+ {
+ IDBField idField = table.addField("id", idHandler.getDBType(), store.getIDColumnLength(), true); //$NON-NLS-1$
+ IDBField uriField = table.addField("uri", DBType.VARCHAR, 1024); //$NON-NLS-1$
+ table.addField("committime", DBType.BIGINT); //$NON-NLS-1$
+ table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField);
+ table.addIndex(IDBIndex.Type.NON_UNIQUE, uriField);
+ }
+ });
+
+ idField = table.getField(0);
+ uriField = table.getField(1);
+ timestampField = table.getField(2);
IDBStoreAccessor writer = store.getWriter(null);
Connection connection = writer.getConnection();
@@ -203,8 +215,6 @@ public class ExternalReferenceManager extends Lifecycle
try
{
statement = connection.createStatement();
- store.getDBAdapter().createTable(table, statement);
- connection.commit();
String sql = "SELECT MIN(" + idField + ") FROM " + table;
resultSet = statement.executeQuery(sql);
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java
index d25b90ec8f..d0e992479d 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AbstractMappingStrategy.java
@@ -489,7 +489,7 @@ public abstract class AbstractMappingStrategy extends Lifecycle implements IMapp
if (!unmap)
{
// TODO Bug 296087: Before we go ahead with creation, we should check if it's already there
- IClassMapping mapping = createClassMapping(eClass);
+ IClassMapping mapping = createClassMapping(eClass, true);
getStore().getDBAdapter().createTables(mapping.getDBTables(), connection);
}
else
@@ -501,9 +501,9 @@ public abstract class AbstractMappingStrategy extends Lifecycle implements IMapp
}
}
- private IClassMapping createClassMapping(EClass eClass)
+ private IClassMapping createClassMapping(EClass eClass, boolean create)
{
- IClassMapping mapping = doCreateClassMapping(eClass);
+ IClassMapping mapping = doCreateClassMapping(eClass, create);
if (mapping != null)
{
classMappings.put(eClass, mapping);
@@ -522,12 +522,13 @@ public abstract class AbstractMappingStrategy extends Lifecycle implements IMapp
{
schema.removeTable(table.getName());
}
+
classMappings.remove(eClass);
}
return mapping;
}
- protected abstract IClassMapping doCreateClassMapping(EClass eClass);
+ protected abstract IClassMapping doCreateClassMapping(EClass eClass, boolean create);
public final IClassMapping getClassMapping(EClass eClass)
{
@@ -550,7 +551,7 @@ public abstract class AbstractMappingStrategy extends Lifecycle implements IMapp
result = classMappings.get(eClass);
if (result == null)
{
- result = createClassMapping(eClass);
+ result = createClassMapping(eClass, false);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BasicAbstractListTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractBasicListTableMapping.java
index f0e8b34e0f..b184f32172 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BasicAbstractListTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractBasicListTableMapping.java
@@ -15,7 +15,6 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping2;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -23,7 +22,7 @@ import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Stefan Winkler
*/
-public abstract class BasicAbstractListTableMapping implements IListMapping2
+public abstract class AbstractBasicListTableMapping implements IListMapping2, IMappingConstants
{
private IMappingStrategy mappingStrategy;
@@ -31,7 +30,7 @@ public abstract class BasicAbstractListTableMapping implements IListMapping2
private EStructuralFeature feature;
- public BasicAbstractListTableMapping(IMappingStrategy mappingStrategy, EClass containingClass,
+ public AbstractBasicListTableMapping(IMappingStrategy mappingStrategy, EClass containingClass,
EStructuralFeature feature)
{
this.mappingStrategy = mappingStrategy;
@@ -56,7 +55,7 @@ public abstract class BasicAbstractListTableMapping implements IListMapping2
public void addSimpleChunkWhere(IDBStoreAccessor accessor, CDOID cdoid, StringBuilder builder, int index)
{
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append('=');
builder.append(index);
}
@@ -64,7 +63,7 @@ public abstract class BasicAbstractListTableMapping implements IListMapping2
public void addRangedChunkWhere(IDBStoreAccessor accessor, CDOID cdoid, StringBuilder builder, int fromIndex,
int toIndex)
{
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(" BETWEEN "); //$NON-NLS-1$
builder.append(fromIndex);
builder.append(" AND "); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractFeatureMapTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractFeatureMapTableMapping.java
index 7781f72e2e..2567e35824 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractFeatureMapTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractFeatureMapTableMapping.java
@@ -31,7 +31,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -65,7 +64,7 @@ import java.util.Map;
* @author Eike Stepper
* @since 3.0
*/
-public abstract class AbstractFeatureMapTableMapping extends BasicAbstractListTableMapping
+public abstract class AbstractFeatureMapTableMapping extends AbstractBasicListTableMapping
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, AbstractFeatureMapTableMapping.class);
@@ -137,10 +136,10 @@ public abstract class AbstractFeatureMapTableMapping extends BasicAbstractListTa
}
// add field for list index
- IDBField idxField = table.addField(CDODBSchema.FEATUREMAP_IDX, DBType.INTEGER);
+ IDBField idxField = table.addField(FEATUREMAP_IDX, DBType.INTEGER);
// add field for FeatureMap tag (MetaID for Feature in CDO registry)
- IDBField tagField = table.addField(CDODBSchema.FEATUREMAP_TAG, idType, idLength);
+ IDBField tagField = table.addField(FEATUREMAP_TAG, idType, idLength);
tagMap = CDOIDUtil.createMap();
typeMappings = CDOIDUtil.createMap();
@@ -149,7 +148,7 @@ public abstract class AbstractFeatureMapTableMapping extends BasicAbstractListTa
// create columns for all DBTypes
for (DBType type : getDBTypes())
{
- String column = CDODBSchema.FEATUREMAP_VALUE + "_" + type.name();
+ String column = FEATUREMAP_VALUE + "_" + type.name();
table.addField(column, type);
columnNames.add(column);
}
@@ -177,7 +176,7 @@ public abstract class AbstractFeatureMapTableMapping extends BasicAbstractListTa
StringBuilder builder = new StringBuilder();
builder.append("SELECT ");
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
builder.append(", ");
Iterator<String> iter = columnNames.iterator();
@@ -211,7 +210,7 @@ public abstract class AbstractFeatureMapTableMapping extends BasicAbstractListTa
sqlSelectChunksPrefix = builder.toString();
- sqlOrderByIndex = " ORDER BY " + CDODBSchema.FEATUREMAP_IDX; //$NON-NLS-1$
+ sqlOrderByIndex = " ORDER BY " + FEATUREMAP_IDX; //$NON-NLS-1$
// INSERT with dynamic field name
// TODO: Better: universal INSERT-Statement, because of stmt caching!
@@ -232,9 +231,9 @@ public abstract class AbstractFeatureMapTableMapping extends BasicAbstractListTa
builder.append(", "); //$NON-NLS-1$
}
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
builder.append(") VALUES ("); //$NON-NLS-1$
for (int i = 0; i < fields.length + columnNames.size(); i++)
{
@@ -339,7 +338,7 @@ public abstract class AbstractFeatureMapTableMapping extends BasicAbstractListTa
EStructuralFeature modelFeature = getFeatureByTag(tag);
ITypeMapping typeMapping = getMappingStrategy().createValueMapping(modelFeature);
- String column = CDODBSchema.FEATUREMAP_VALUE + "_" + typeMapping.getDBType();
+ String column = FEATUREMAP_VALUE + "_" + typeMapping.getDBType();
tagMap.put(tag, column);
typeMapping.setDBField(table, column);
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
index 64e219c194..1310e933b1 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
@@ -36,7 +36,6 @@ import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
@@ -45,6 +44,8 @@ import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBDatabase;
+import org.eclipse.net4j.db.IDBDatabase.RunnableWithTable;
import org.eclipse.net4j.db.ddl.IDBField;
import org.eclipse.net4j.db.ddl.IDBIndex;
import org.eclipse.net4j.db.ddl.IDBTable;
@@ -76,7 +77,7 @@ import java.util.Set;
* @author Eike Stepper
* @since 2.0
*/
-public abstract class AbstractHorizontalClassMapping implements IClassMapping
+public abstract class AbstractHorizontalClassMapping implements IClassMapping, IMappingConstants
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, AbstractHorizontalClassMapping.class);
@@ -98,7 +99,7 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
private String sqlSelectForChangeSet;
- public AbstractHorizontalClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass)
+ public AbstractHorizontalClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass, boolean create)
{
this.mappingStrategy = mappingStrategy;
this.eClass = eClass;
@@ -113,34 +114,39 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
private void initTable()
{
- IDBStore store = getMappingStrategy().getStore();
- DBType idType = store.getIDHandler().getDBType();
- int idLength = store.getIDColumnLength();
+ final IDBStore store = getMappingStrategy().getStore();
+ final DBType idType = store.getIDHandler().getDBType();
+ final int idLength = store.getIDColumnLength();
+ final String name = getMappingStrategy().getTableName(eClass);
- String name = getMappingStrategy().getTableName(eClass);
- table = store.getDBSchema().addTable(name);
-
- IDBField idField = table.addField(CDODBSchema.ATTRIBUTES_ID, idType, idLength, true);
- IDBField versionField = table.addField(CDODBSchema.ATTRIBUTES_VERSION, DBType.INTEGER, true);
+ IDBDatabase database = store.getDatabase();
+ table = database.ensureTable(name, new RunnableWithTable()
+ {
+ public void run(IDBTable table)
+ {
+ IDBField idField = table.addField(ATTRIBUTES_ID, idType, idLength, true);
+ IDBField versionField = table.addField(ATTRIBUTES_VERSION, DBType.INTEGER, true);
- IDBField branchField = addBranchingField(table);
+ IDBField branchField = addBranchingField(table);
- table.addField(CDODBSchema.ATTRIBUTES_CREATED, DBType.BIGINT, true);
- IDBField revisedField = table.addField(CDODBSchema.ATTRIBUTES_REVISED, DBType.BIGINT, true);
- table.addField(CDODBSchema.ATTRIBUTES_RESOURCE, idType, idLength, true);
- table.addField(CDODBSchema.ATTRIBUTES_CONTAINER, idType, idLength, true);
- table.addField(CDODBSchema.ATTRIBUTES_FEATURE, DBType.INTEGER, true);
+ table.addField(ATTRIBUTES_CREATED, DBType.BIGINT, true);
+ IDBField revisedField = table.addField(ATTRIBUTES_REVISED, DBType.BIGINT, true);
+ table.addField(ATTRIBUTES_RESOURCE, idType, idLength, true);
+ table.addField(ATTRIBUTES_CONTAINER, idType, idLength, true);
+ table.addField(ATTRIBUTES_FEATURE, DBType.INTEGER, true);
- if (branchField != null)
- {
- table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField, versionField, branchField);
- }
- else
- {
- table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField, versionField);
- }
+ if (branchField != null)
+ {
+ table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField, versionField, branchField);
+ }
+ else
+ {
+ table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField, versionField);
+ }
- table.addIndex(IDBIndex.Type.NON_UNIQUE, idField, revisedField);
+ table.addIndex(IDBIndex.Type.NON_UNIQUE, idField, revisedField);
+ }
+ });
}
protected IDBField addBranchingField(IDBTable table)
@@ -166,16 +172,16 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
{
// ----------- Select all revisions (for handleRevisions) ---
StringBuilder builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
sqlSelectForHandle = builder.toString();
// ----------- Select all revisions (for readChangeSet) ---
builder = new StringBuilder("SELECT DISTINCT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
@@ -292,18 +298,18 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
return false;
}
- revision.setVersion(resultSet.getInt(CDODBSchema.ATTRIBUTES_VERSION));
+ revision.setVersion(resultSet.getInt(ATTRIBUTES_VERSION));
- long timeStamp = resultSet.getLong(CDODBSchema.ATTRIBUTES_CREATED);
+ long timeStamp = resultSet.getLong(ATTRIBUTES_CREATED);
IIDHandler idHandler = getMappingStrategy().getStore().getIDHandler();
CDOBranchPoint branchPoint = revision.getBranch().getPoint(timeStamp);
revision.setBranchPoint(branchPoint);
- revision.setRevised(resultSet.getLong(CDODBSchema.ATTRIBUTES_REVISED));
- revision.setResourceID(idHandler.getCDOID(resultSet, CDODBSchema.ATTRIBUTES_RESOURCE));
- revision.setContainerID(idHandler.getCDOID(resultSet, CDODBSchema.ATTRIBUTES_CONTAINER));
- revision.setContainingFeatureID(resultSet.getInt(CDODBSchema.ATTRIBUTES_FEATURE));
+ revision.setRevised(resultSet.getLong(ATTRIBUTES_REVISED));
+ revision.setResourceID(idHandler.getCDOID(resultSet, ATTRIBUTES_RESOURCE));
+ revision.setContainerID(idHandler.getCDOID(resultSet, ATTRIBUTES_CONTAINER));
+ revision.setContainingFeatureID(resultSet.getInt(ATTRIBUTES_FEATURE));
for (ITypeMapping mapping : valueMappings)
{
@@ -585,7 +591,7 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
if (timeStamp != CDOBranchPoint.UNSPECIFIED_DATE)
{
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("=?"); //$NON-NLS-1$
timeParameters = 1;
}
@@ -595,12 +601,12 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
builder.append(" WHERE "); //$NON-NLS-1$
if (timeStamp != CDOBranchPoint.UNSPECIFIED_DATE)
{
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(">=?"); //$NON-NLS-1$
builder.append(" AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("<=? OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("="); //$NON-NLS-1$
builder.append(CDOBranchPoint.UNSPECIFIED_DATE);
builder.append(")"); //$NON-NLS-1$
@@ -608,7 +614,7 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
}
else
{
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("="); //$NON-NLS-1$
builder.append(CDOBranchPoint.UNSPECIFIED_DATE);
}
@@ -668,12 +674,12 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
builder.append(" OR "); //$NON-NLS-1$
}
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(">=?"); //$NON-NLS-1$
builder.append(" AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("<=? OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("="); //$NON-NLS-1$
builder.append(CDOBranchPoint.UNSPECIFIED_DATE);
builder.append(")"); //$NON-NLS-1$
@@ -766,13 +772,13 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
// notify list mappings so they can clean up
for (IListMapping mapping : getListMappings())
{
- if (mapping instanceof BasicAbstractListTableMapping)
+ if (mapping instanceof AbstractBasicListTableMapping)
{
try
{
async = monitor.forkAsync();
- BasicAbstractListTableMapping m = (BasicAbstractListTableMapping)mapping;
+ AbstractBasicListTableMapping m = (AbstractBasicListTableMapping)mapping;
m.rawDeleted(accessor, id, branch, version);
}
finally
@@ -848,13 +854,13 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
StringBuilder builder = new StringBuilder();
builder.append("SELECT ");
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(", ");
builder.append(valueField);
builder.append(" FROM ");
builder.append(tableName);
builder.append(" WHERE ");
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(">0 AND ");
builder.append(where);
builder.append(" AND ");
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java
index 5c9c15705d..ab385a3fa7 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java
@@ -63,7 +63,7 @@ import java.util.List;
* @author Eike Stepper
* @since 2.0
*/
-public abstract class AbstractHorizontalMappingStrategy extends AbstractMappingStrategy
+public abstract class AbstractHorizontalMappingStrategy extends AbstractMappingStrategy implements IMappingConstants
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, AbstractHorizontalMappingStrategy.class);
@@ -171,7 +171,7 @@ public abstract class AbstractHorizontalMappingStrategy extends AbstractMappingS
{
StringBuilder builder = new StringBuilder();
builder.append(" WHERE a_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(" BETWEEN "); //$NON-NLS-1$
builder.append(fromCommitTime);
builder.append(" AND "); //$NON-NLS-1$
@@ -323,7 +323,7 @@ public abstract class AbstractHorizontalMappingStrategy extends AbstractMappingS
public String getListJoin(String attrTable, String listTable)
{
- return " AND " + attrTable + "." + CDODBSchema.ATTRIBUTES_ID + "=" + listTable + "." + CDODBSchema.LIST_REVISION_ID;
+ return " AND " + attrTable + "." + ATTRIBUTES_ID + "=" + listTable + "." + LIST_REVISION_ID;
}
@Override
@@ -456,11 +456,10 @@ public abstract class AbstractHorizontalMappingStrategy extends AbstractMappingS
final IIDHandler idHandler = getStore().getIDHandler();
final CDOID[] min = { idHandler.getMaxCDOID() };
- final String prefix = "SELECT MIN(t." + CDODBSchema.ATTRIBUTES_ID + ") FROM " + CDODBSchema.CDO_OBJECTS + " o, ";
+ final String prefix = "SELECT MIN(t." + ATTRIBUTES_ID + ") FROM " + CDODBSchema.CDO_OBJECTS + " o, ";
- final String suffix = " t WHERE t." + CDODBSchema.ATTRIBUTES_BRANCH + "<0 AND t." + CDODBSchema.ATTRIBUTES_ID
- + "=o." + CDODBSchema.ATTRIBUTES_ID + " AND t." + CDODBSchema.ATTRIBUTES_CREATED + "=o."
- + CDODBSchema.ATTRIBUTES_CREATED;
+ final String suffix = " t WHERE t." + ATTRIBUTES_BRANCH + "<0 AND t." + ATTRIBUTES_ID + "=o." + ATTRIBUTES_ID
+ + " AND t." + ATTRIBUTES_CREATED + "=o." + ATTRIBUTES_CREATED;
getStore().visitAllTables(connection, new IDBStore.TableVisitor()
{
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractListTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractListTableMapping.java
index 6c7d2e3760..e2bb08b818 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractListTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractListTableMapping.java
@@ -25,7 +25,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -56,7 +55,7 @@ import java.util.List;
* @author Eike Stepper
* @since 2.0
*/
-public abstract class AbstractListTableMapping extends BasicAbstractListTableMapping
+public abstract class AbstractListTableMapping extends AbstractBasicListTableMapping
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, AbstractListTableMapping.class);
@@ -100,11 +99,11 @@ public abstract class AbstractListTableMapping extends BasicAbstractListTableMap
}
// add field for list index
- dbFields[dbFields.length - 1] = table.addField(CDODBSchema.LIST_IDX, DBType.INTEGER, true);
+ dbFields[dbFields.length - 1] = table.addField(LIST_IDX, DBType.INTEGER, true);
// add field for value
typeMapping = mappingStrategy.createValueMapping(getFeature());
- typeMapping.createDBField(table, CDODBSchema.LIST_VALUE);
+ typeMapping.createDBField(table, LIST_VALUE);
// add table indexes
table.addIndex(Type.PRIMARY_KEY, dbFields);
@@ -127,7 +126,7 @@ public abstract class AbstractListTableMapping extends BasicAbstractListTableMap
// ---------------- SELECT to read chunks ----------------------------
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
@@ -149,7 +148,7 @@ public abstract class AbstractListTableMapping extends BasicAbstractListTableMap
sqlSelectChunksPrefix = builder.toString();
- sqlOrderByIndex = " ORDER BY " + CDODBSchema.LIST_IDX; //$NON-NLS-1$
+ sqlOrderByIndex = " ORDER BY " + LIST_IDX; //$NON-NLS-1$
// ----------------- INSERT - reference entry -----------------
builder = new StringBuilder("INSERT INTO "); //$NON-NLS-1$
@@ -162,9 +161,9 @@ public abstract class AbstractListTableMapping extends BasicAbstractListTableMap
builder.append(", "); //$NON-NLS-1$
}
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(") VALUES ("); //$NON-NLS-1$
for (int i = 0; i < fields.length; i++)
{
@@ -388,11 +387,11 @@ public abstract class AbstractListTableMapping extends BasicAbstractListTableMap
StringBuilder builder = new StringBuilder();
builder.append("SELECT l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append(", l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(", l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" l_t, ");//$NON-NLS-1$
@@ -401,7 +400,7 @@ public abstract class AbstractListTableMapping extends BasicAbstractListTableMap
builder.append("a_t." + mainTableWhere);//$NON-NLS-1$
builder.append(listJoin);
builder.append(" AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" IN "); //$NON-NLS-1$
builder.append(idString);
String sql = builder.toString();
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMapping.java
index da39e25e8a..67f98079f7 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMapping.java
@@ -20,7 +20,6 @@ import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
@@ -57,9 +56,9 @@ public class AuditFeatureMapTableMapping extends AbstractFeatureMapTableMapping
builder.append("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION);
+ builder.append(LIST_REVISION_VERSION);
builder.append("=? "); //$NON-NLS-1$
sqlClear = builder.toString();
}
@@ -72,8 +71,8 @@ public class AuditFeatureMapTableMapping extends AbstractFeatureMapTableMapping
IDBStore store = getMappingStrategy().getStore();
keyFields = new FieldInfo[] {
- new FieldInfo(CDODBSchema.FEATUREMAP_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
- new FieldInfo(CDODBSchema.FEATUREMAP_VERSION, DBType.INTEGER) };
+ new FieldInfo(FEATUREMAP_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
+ new FieldInfo(FEATUREMAP_VERSION, DBType.INTEGER) };
}
return keyFields;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMappingWithRanges.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMappingWithRanges.java
index 1dd309920e..f6993c7396 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMappingWithRanges.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditFeatureMapTableMappingWithRanges.java
@@ -45,7 +45,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -76,8 +75,8 @@ import java.util.Map;
/**
* This is a featuremap-table mapping for audit mode. It is optimized for frequent insert operations at the list's end,
* which causes just 1 DB row to be changed. This is achieved by introducing a version range (columns
- * {@link CDODBSchema#LIST_REVISION_VERSION_ADDED cdo_version_added} and
- * {@link CDODBSchema#LIST_REVISION_VERSION_REMOVED cdo_version_removed}) which records for which revisions a particular
+ * {@link IMappingConstants#LIST_REVISION_VERSION_ADDED cdo_version_added} and
+ * {@link IMappingConstants#LIST_REVISION_VERSION_REMOVED cdo_version_removed}) which records for which revisions a particular
* entry existed. Also, this mapping is mainly optimized for potentially very large lists: the need for having the
* complete list stored in memory to do in-the-middle-moved and inserts is traded in for a few more DB access
* operations.
@@ -87,7 +86,7 @@ import java.util.Map;
* @author Lothar Werzinger
* @since 3.0
*/
-public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTableMapping implements
+public class AuditFeatureMapTableMappingWithRanges extends AbstractBasicListTableMapping implements
IListMappingDeltaSupport
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, AuditFeatureMapTableMappingWithRanges.class);
@@ -165,17 +164,17 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
table = store.getDBSchema().addTable(tableName);
// add fields for CDOID
- IDBField idField = table.addField(CDODBSchema.FEATUREMAP_REVISION_ID, idType, idLength);
+ IDBField idField = table.addField(FEATUREMAP_REVISION_ID, idType, idLength);
// add fields for version range
- IDBField versionAddedField = table.addField(CDODBSchema.FEATUREMAP_VERSION_ADDED, DBType.INTEGER);
- IDBField versionRemovedField = table.addField(CDODBSchema.FEATUREMAP_VERSION_REMOVED, DBType.INTEGER);
+ IDBField versionAddedField = table.addField(FEATUREMAP_VERSION_ADDED, DBType.INTEGER);
+ IDBField versionRemovedField = table.addField(FEATUREMAP_VERSION_REMOVED, DBType.INTEGER);
// add field for list index
- IDBField idxField = table.addField(CDODBSchema.FEATUREMAP_IDX, DBType.INTEGER);
+ IDBField idxField = table.addField(FEATUREMAP_IDX, DBType.INTEGER);
// add field for FeatureMap tag (MetaID for Feature in CDO registry)
- IDBField tagField = table.addField(CDODBSchema.FEATUREMAP_TAG, idType, idLength);
+ IDBField tagField = table.addField(FEATUREMAP_TAG, idType, idLength);
tagMap = CDOIDUtil.createMap();
typeMappings = CDOIDUtil.createMap();
@@ -184,7 +183,7 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
// create columns for all DBTypes
for (DBType type : getDBTypes())
{
- String column = CDODBSchema.FEATUREMAP_VALUE + "_" + type.name();
+ String column = FEATUREMAP_VALUE + "_" + type.name();
table.addField(column, type);
columnNames.add(column);
}
@@ -205,7 +204,7 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
builder.append(", "); //$NON-NLS-1$
Iterator<String> iter = columnNames.iterator();
@@ -221,31 +220,31 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(">?)"); //$NON-NLS-1$
sqlSelectChunksPrefix = builder.toString();
- sqlOrderByIndex = " ORDER BY " + CDODBSchema.FEATUREMAP_IDX; //$NON-NLS-1$
+ sqlOrderByIndex = " ORDER BY " + FEATUREMAP_IDX; //$NON-NLS-1$
// ----------------- INSERT - prefix -----------------
builder = new StringBuilder("INSERT INTO "); //$NON-NLS-1$
builder.append(tableName);
builder.append("("); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
for (int i = 0; i < columnNames.size(); i++)
{
@@ -266,14 +265,14 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlRemoveEntry = builder.toString();
@@ -281,11 +280,11 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append("=?"); //$NON-NLS-1$
sqlDeleteEntry = builder.toString();
@@ -293,19 +292,19 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=?"); //$NON-NLS-1$
sqlUpdateIndex = builder.toString();
// ----------------- get current value -----------------
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
builder.append(", "); //$NON-NLS-1$
iter = columnNames.iterator();
@@ -321,11 +320,11 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlGetValue = builder.toString();
@@ -333,12 +332,12 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlClearList = builder.toString();
@@ -346,11 +345,11 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlDeleteList = builder.toString();
}
@@ -459,7 +458,7 @@ public class AuditFeatureMapTableMappingWithRanges extends BasicAbstractListTabl
EStructuralFeature modelFeature = getFeatureByTag(tag);
ITypeMapping typeMapping = getMappingStrategy().createValueMapping(modelFeature);
- String column = CDODBSchema.FEATUREMAP_VALUE + "_" + typeMapping.getDBType(); //$NON-NLS-1$
+ String column = FEATUREMAP_VALUE + "_" + typeMapping.getDBType(); //$NON-NLS-1$
tagMap.put(tag, column);
typeMapping.setDBField(table, column);
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMapping.java
index 3d79d3e722..85b0e3d319 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMapping.java
@@ -19,7 +19,6 @@ import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
@@ -56,9 +55,9 @@ public class AuditListTableMapping extends AbstractListTableMapping
builder.append("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION);
+ builder.append(LIST_REVISION_VERSION);
builder.append("=? "); //$NON-NLS-1$
sqlClear = builder.toString();
}
@@ -71,8 +70,8 @@ public class AuditListTableMapping extends AbstractListTableMapping
IDBStore store = getMappingStrategy().getStore();
keyFields = new FieldInfo[] {
- new FieldInfo(CDODBSchema.LIST_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
- new FieldInfo(CDODBSchema.LIST_REVISION_VERSION, DBType.INTEGER) };
+ new FieldInfo(LIST_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
+ new FieldInfo(LIST_REVISION_VERSION, DBType.INTEGER) };
}
return keyFields;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMappingWithRanges.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMappingWithRanges.java
index adaca4aac6..5054ed3ebf 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMappingWithRanges.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AuditListTableMappingWithRanges.java
@@ -41,7 +41,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -78,7 +77,7 @@ import java.util.List;
* @author Stefan Winkler
* @author Lothar Werzinger
*/
-public class AuditListTableMappingWithRanges extends BasicAbstractListTableMapping implements IListMappingDeltaSupport
+public class AuditListTableMappingWithRanges extends AbstractBasicListTableMapping implements IListMappingDeltaSupport
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, AuditListTableMappingWithRanges.class);
@@ -133,14 +132,14 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
table = store.getDBSchema().addTable(tableName);
IDBField[] dbFields = new IDBField[4];
- dbFields[0] = table.addField(CDODBSchema.LIST_REVISION_ID, idType, idLength, true);
- dbFields[1] = table.addField(CDODBSchema.LIST_REVISION_VERSION_ADDED, DBType.INTEGER);
- dbFields[2] = table.addField(CDODBSchema.LIST_REVISION_VERSION_REMOVED, DBType.INTEGER);
- dbFields[3] = table.addField(CDODBSchema.LIST_IDX, DBType.INTEGER, true);
+ dbFields[0] = table.addField(LIST_REVISION_ID, idType, idLength, true);
+ dbFields[1] = table.addField(LIST_REVISION_VERSION_ADDED, DBType.INTEGER);
+ dbFields[2] = table.addField(LIST_REVISION_VERSION_REMOVED, DBType.INTEGER);
+ dbFields[3] = table.addField(LIST_IDX, DBType.INTEGER, true);
// add field for value
typeMapping = getMappingStrategy().createValueMapping(getFeature());
- typeMapping.createDBField(table, CDODBSchema.LIST_VALUE);
+ typeMapping.createDBField(table, LIST_VALUE);
// TODO think about indexes
// add table indexes
@@ -159,35 +158,35 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
// ---------------- read chunks ----------------------------
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(">?)"); //$NON-NLS-1$
sqlSelectChunksPrefix = builder.toString();
- sqlOrderByIndex = " ORDER BY " + CDODBSchema.LIST_IDX; //$NON-NLS-1$
+ sqlOrderByIndex = " ORDER BY " + LIST_IDX; //$NON-NLS-1$
// ----------------- insert entry -----------------
builder = new StringBuilder("INSERT INTO "); //$NON-NLS-1$
builder.append(tableName);
builder.append("("); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(") VALUES (?, ?, NULL, ?, ?)"); //$NON-NLS-1$
sqlInsertEntry = builder.toString();
@@ -195,14 +194,14 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlRemoveEntry = builder.toString();
@@ -210,11 +209,11 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("=?"); //$NON-NLS-1$
sqlDeleteEntry = builder.toString();
@@ -222,27 +221,27 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=?"); //$NON-NLS-1$
sqlUpdateIndex = builder.toString();
// ----------------- get current value -----------------
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlGetValue = builder.toString();
@@ -250,12 +249,12 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlClearList = builder.toString();
@@ -263,11 +262,11 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlDeleteList = builder.toString();
}
@@ -1064,11 +1063,11 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
StringBuilder builder = new StringBuilder();
builder.append("SELECT l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append(", l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(", l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" l_t, ");//$NON-NLS-1$
@@ -1078,7 +1077,7 @@ public class AuditListTableMappingWithRanges extends BasicAbstractListTableMappi
builder.append(mainTableWhere);
builder.append(listJoin);
builder.append(" AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" IN "); //$NON-NLS-1$
builder.append(idString);
String sql = builder.toString();
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMapping.java
index ec1b5e1859..837750670e 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMapping.java
@@ -21,7 +21,6 @@ import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
@@ -59,11 +58,11 @@ public class BranchingFeatureMapTableMapping extends AbstractFeatureMapTableMapp
builder.append("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION);
+ builder.append(LIST_REVISION_VERSION);
builder.append("=?"); //$NON-NLS-1$
sqlClear = builder.toString();
}
@@ -76,9 +75,8 @@ public class BranchingFeatureMapTableMapping extends AbstractFeatureMapTableMapp
IDBStore store = getMappingStrategy().getStore();
keyFields = new FieldInfo[] {
- new FieldInfo(CDODBSchema.FEATUREMAP_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
- new FieldInfo(CDODBSchema.FEATUREMAP_BRANCH, DBType.INTEGER),
- new FieldInfo(CDODBSchema.FEATUREMAP_VERSION, DBType.INTEGER) };
+ new FieldInfo(FEATUREMAP_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
+ new FieldInfo(FEATUREMAP_BRANCH, DBType.INTEGER), new FieldInfo(FEATUREMAP_VERSION, DBType.INTEGER) };
}
return keyFields;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMappingWithRanges.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMappingWithRanges.java
index a458aa8160..2e88827b88 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMappingWithRanges.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingFeatureMapTableMappingWithRanges.java
@@ -41,7 +41,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager;
@@ -74,8 +73,8 @@ import java.util.Map;
/**
* This is a featuremap-table mapping for audit mode. It is optimized for frequent insert operations at the list's end,
* which causes just 1 DB row to be changed. This is achieved by introducing a version range (columns
- * {@link CDODBSchema#LIST_REVISION_VERSION_ADDED cdo_version_added} and
- * {@link CDODBSchema#LIST_REVISION_VERSION_REMOVED cdo_version_removed}) which records for which revisions a particular
+ * {@link IMappingConstants#LIST_REVISION_VERSION_ADDED cdo_version_added} and
+ * {@link IMappingConstants#LIST_REVISION_VERSION_REMOVED cdo_version_removed}) which records for which revisions a particular
* entry existed. Also, this mapping is mainly optimized for potentially very large lists: the need for having the
* complete list stored in memory to do in-the-middle-moved and inserts is traded in for a few more DB access
* operations.
@@ -85,7 +84,7 @@ import java.util.Map;
* @author Lothar Werzinger
* @since 3.0
*/
-public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractListTableMapping implements
+public class BranchingFeatureMapTableMappingWithRanges extends AbstractBasicListTableMapping implements
IListMappingDeltaSupport
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG,
@@ -161,19 +160,19 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
table = store.getDBSchema().addTable(tableName);
// add fields for CDOID
- IDBField idField = table.addField(CDODBSchema.FEATUREMAP_REVISION_ID, idType, idLength);
+ IDBField idField = table.addField(FEATUREMAP_REVISION_ID, idType, idLength);
- IDBField branchField = table.addField(CDODBSchema.LIST_REVISION_BRANCH, DBType.INTEGER);
+ IDBField branchField = table.addField(LIST_REVISION_BRANCH, DBType.INTEGER);
// add fields for version range
- IDBField versionAddedField = table.addField(CDODBSchema.FEATUREMAP_VERSION_ADDED, DBType.INTEGER);
- IDBField versionRemovedField = table.addField(CDODBSchema.FEATUREMAP_VERSION_REMOVED, DBType.INTEGER);
+ IDBField versionAddedField = table.addField(FEATUREMAP_VERSION_ADDED, DBType.INTEGER);
+ IDBField versionRemovedField = table.addField(FEATUREMAP_VERSION_REMOVED, DBType.INTEGER);
// add field for list index
- IDBField idxField = table.addField(CDODBSchema.FEATUREMAP_IDX, DBType.INTEGER);
+ IDBField idxField = table.addField(FEATUREMAP_IDX, DBType.INTEGER);
// add field for FeatureMap tag (MetaID for Feature in CDO registry)
- IDBField tagField = table.addField(CDODBSchema.FEATUREMAP_TAG, idType, idLength);
+ IDBField tagField = table.addField(FEATUREMAP_TAG, idType, idLength);
tagMap = CDOIDUtil.createMap();
typeMappings = CDOIDUtil.createMap();
@@ -182,7 +181,7 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
// create columns for all DBTypes
for (DBType type : getDBTypes())
{
- String column = CDODBSchema.FEATUREMAP_VALUE + "_" + type.name();
+ String column = FEATUREMAP_VALUE + "_" + type.name();
table.addField(column, type);
columnNames.add(column);
}
@@ -208,9 +207,9 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
builder.append(", "); //$NON-NLS-1$
Iterator<String> iter = columnNames.iterator();
@@ -226,35 +225,35 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_BRANCH);
+ builder.append(FEATUREMAP_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(">?)"); //$NON-NLS-1$
sqlSelectChunksPrefix = builder.toString();
- sqlOrderByIndex = " ORDER BY " + CDODBSchema.FEATUREMAP_IDX; //$NON-NLS-1$
+ sqlOrderByIndex = " ORDER BY " + FEATUREMAP_IDX; //$NON-NLS-1$
// ----------------- INSERT - prefix -----------------
builder = new StringBuilder("INSERT INTO "); //$NON-NLS-1$
builder.append(tableName);
builder.append("("); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_BRANCH);
+ builder.append(FEATUREMAP_BRANCH);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
for (int i = 0; i < columnNames.size(); i++)
{
@@ -275,16 +274,16 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_BRANCH);
+ builder.append(FEATUREMAP_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlRemoveEntry = builder.toString();
@@ -292,13 +291,13 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_BRANCH);
+ builder.append(FEATUREMAP_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append("=?"); //$NON-NLS-1$
sqlDeleteEntry = builder.toString();
@@ -306,21 +305,21 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_BRANCH);
+ builder.append(FEATUREMAP_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_ADDED);
+ builder.append(FEATUREMAP_VERSION_ADDED);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=?"); //$NON-NLS-1$
sqlUpdateIndex = builder.toString();
// ----------------- get current value -----------------
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
builder.append(", "); //$NON-NLS-1$
iter = columnNames.iterator();
@@ -336,13 +335,13 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_BRANCH);
+ builder.append(FEATUREMAP_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlGetValue = builder.toString();
@@ -350,14 +349,14 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_BRANCH);
+ builder.append(FEATUREMAP_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_VERSION_REMOVED);
+ builder.append(FEATUREMAP_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlClearList = builder.toString();
}
@@ -517,7 +516,7 @@ public class BranchingFeatureMapTableMappingWithRanges extends BasicAbstractList
EStructuralFeature modelFeature = getFeatureByTag(tag);
ITypeMapping typeMapping = getMappingStrategy().createValueMapping(modelFeature);
- String column = CDODBSchema.FEATUREMAP_VALUE + "_" + typeMapping.getDBType(); //$NON-NLS-1$
+ String column = FEATUREMAP_VALUE + "_" + typeMapping.getDBType(); //$NON-NLS-1$
tagMap.put(tag, column);
typeMapping.setDBField(table, column);
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMapping.java
index c224f3671b..99302d1841 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMapping.java
@@ -20,7 +20,6 @@ import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
@@ -58,11 +57,11 @@ public class BranchingListTableMapping extends AbstractListTableMapping
builder.append("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION);
+ builder.append(LIST_REVISION_VERSION);
builder.append("=?"); //$NON-NLS-1$
sqlClear = builder.toString();
}
@@ -75,9 +74,8 @@ public class BranchingListTableMapping extends AbstractListTableMapping
IDBStore store = getMappingStrategy().getStore();
keyFields = new FieldInfo[] {
- new FieldInfo(CDODBSchema.LIST_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
- new FieldInfo(CDODBSchema.LIST_REVISION_BRANCH, DBType.INTEGER),
- new FieldInfo(CDODBSchema.LIST_REVISION_VERSION, DBType.INTEGER) };
+ new FieldInfo(LIST_REVISION_ID, store.getIDHandler().getDBType(), store.getIDColumnLength()),
+ new FieldInfo(LIST_REVISION_BRANCH, DBType.INTEGER), new FieldInfo(LIST_REVISION_VERSION, DBType.INTEGER) };
}
return keyFields;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMappingWithRanges.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMappingWithRanges.java
index 3e7f4a3ec6..a165c0a120 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMappingWithRanges.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/BranchingListTableMappingWithRanges.java
@@ -42,7 +42,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager;
@@ -84,7 +83,7 @@ import java.util.List;
* @author Stefan Winkler
* @author Lothar Werzinger
*/
-public class BranchingListTableMappingWithRanges extends BasicAbstractListTableMapping implements
+public class BranchingListTableMappingWithRanges extends AbstractBasicListTableMapping implements
IListMappingDeltaSupport
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, BranchingListTableMappingWithRanges.class);
@@ -138,15 +137,15 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
table = store.getDBSchema().addTable(tableName);
IDBField[] dbFields = new IDBField[5];
- dbFields[0] = table.addField(CDODBSchema.LIST_REVISION_ID, idType, idLength, true);
- dbFields[1] = table.addField(CDODBSchema.LIST_REVISION_BRANCH, DBType.INTEGER, true);
- dbFields[2] = table.addField(CDODBSchema.LIST_REVISION_VERSION_ADDED, DBType.INTEGER);
- dbFields[3] = table.addField(CDODBSchema.LIST_REVISION_VERSION_REMOVED, DBType.INTEGER);
- dbFields[4] = table.addField(CDODBSchema.LIST_IDX, DBType.INTEGER, true);
+ dbFields[0] = table.addField(LIST_REVISION_ID, idType, idLength, true);
+ dbFields[1] = table.addField(LIST_REVISION_BRANCH, DBType.INTEGER, true);
+ dbFields[2] = table.addField(LIST_REVISION_VERSION_ADDED, DBType.INTEGER);
+ dbFields[3] = table.addField(LIST_REVISION_VERSION_REMOVED, DBType.INTEGER);
+ dbFields[4] = table.addField(LIST_IDX, DBType.INTEGER, true);
// add field for value
typeMapping = getMappingStrategy().createValueMapping(getFeature());
- typeMapping.createDBField(table, CDODBSchema.LIST_VALUE);
+ typeMapping.createDBField(table, LIST_VALUE);
// add table indexes
for (IDBField dbField : dbFields)
@@ -167,41 +166,41 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
// ---------------- read chunks ----------------------------
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(">?)"); //$NON-NLS-1$
sqlSelectChunksPrefix = builder.toString();
- sqlOrderByIndex = " ORDER BY " + CDODBSchema.LIST_IDX; //$NON-NLS-1$
+ sqlOrderByIndex = " ORDER BY " + LIST_IDX; //$NON-NLS-1$
// ----------------- insert entry -----------------
builder = new StringBuilder("INSERT INTO "); //$NON-NLS-1$
builder.append(tableName);
builder.append("("); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(","); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(") VALUES (?, ?, ?, ?, ?, ?)"); //$NON-NLS-1$
sqlInsertEntry = builder.toString();
@@ -209,16 +208,16 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlRemoveEntry = builder.toString();
@@ -226,13 +225,13 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("=?"); //$NON-NLS-1$
sqlDeleteEntry = builder.toString();
@@ -240,31 +239,31 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=?"); //$NON-NLS-1$
sqlUpdateIndex = builder.toString();
// ----------------- get current value -----------------
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlGetValue = builder.toString();
@@ -272,14 +271,14 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NULL"); //$NON-NLS-1$
sqlClearList = builder.toString();
}
@@ -1408,11 +1407,11 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
StringBuilder builder = new StringBuilder();
builder.append("SELECT l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append(", l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(", l_t."); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(tableName);
builder.append(" l_t, ");//$NON-NLS-1$
@@ -1421,7 +1420,7 @@ public class BranchingListTableMappingWithRanges extends BasicAbstractListTableM
builder.append("a_t." + mainTableWhere);//$NON-NLS-1$
builder.append(listJoin);
builder.append(" AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(" IN "); //$NON-NLS-1$
builder.append(idString);
String sql = builder.toString();
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditClassMapping.java
index b2b9ecafd9..e67c9b6e84 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditClassMapping.java
@@ -39,7 +39,6 @@ import org.eclipse.emf.cdo.server.db.mapping.IClassMappingAuditSupport;
import org.eclipse.emf.cdo.server.db.mapping.IClassMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
@@ -90,9 +89,9 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
}
};
- public HorizontalAuditClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass)
+ public HorizontalAuditClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass, boolean create)
{
- super(mappingStrategy, eClass);
+ super(mappingStrategy, eClass, create);
initSQLStrings();
}
@@ -106,17 +105,17 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(ATTRIBUTES_RESOURCE);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(ATTRIBUTES_FEATURE);
for (ITypeMapping singleMapping : getValueMappings())
{
@@ -145,23 +144,23 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? AND ("); //$NON-NLS-1$
String sqlSelectAttributesPrefix = builder.toString();
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0)"); //$NON-NLS-1$
sqlSelectCurrentAttributes = builder.toString();
builder = new StringBuilder(sqlSelectAttributesPrefix);
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(">=?))"); //$NON-NLS-1$
sqlSelectAttributesByTime = builder.toString();
@@ -169,7 +168,7 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
builder = new StringBuilder(sqlSelectAttributesPrefix);
builder.append("ABS(");
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(")=?)"); //$NON-NLS-1$
sqlSelectAttributesByVersion = builder.toString();
@@ -180,19 +179,19 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
builder.append(getTable());
builder.append("("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(ATTRIBUTES_RESOURCE);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(ATTRIBUTES_FEATURE);
for (ITypeMapping singleMapping : getValueMappings())
{
@@ -248,21 +247,21 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0"); //$NON-NLS-1$
sqlReviseAttributes = builder.toString();
// ----------- Select all unrevised Object IDs ------
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0"); //$NON-NLS-1$
sqlSelectAllObjectIDs = builder.toString();
@@ -270,9 +269,9 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append("=?"); //$NON-NLS-1$
sqlRawDeleteAttributes = builder.toString();
}
@@ -367,13 +366,13 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(">0 AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append("=? AND "); //$NON-NLS-1$
builder.append(nameValueMapping.getField());
if (name == null)
@@ -389,16 +388,16 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
if (timeStamp == CDORevision.UNSPECIFIED_DATE)
{
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0)"); //$NON-NLS-1$
}
else
{
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(">=?))"); //$NON-NLS-1$
}
@@ -665,18 +664,18 @@ public class HorizontalAuditClassMapping extends AbstractHorizontalClassMapping
long timeStamp = context.getTimeStamp();
if (timeStamp == CDORevision.UNSPECIFIED_DATE)
{
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0"); //$NON-NLS-1$
}
else
{
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("<=");
builder.append(timeStamp);
builder.append(" AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(">=");
builder.append(timeStamp);
builder.append(")"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategy.java
index d8f1bf8bb5..dac8e1d441 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategy.java
@@ -13,7 +13,6 @@ package org.eclipse.emf.cdo.server.internal.db.mapping.horizontal;
import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -44,9 +43,9 @@ public class HorizontalAuditMappingStrategy extends AbstractHorizontalMappingStr
}
@Override
- public IClassMapping doCreateClassMapping(EClass eClass)
+ protected IClassMapping doCreateClassMapping(EClass eClass, boolean create)
{
- return new HorizontalAuditClassMapping(this, eClass);
+ return new HorizontalAuditClassMapping(this, eClass, create);
}
@Override
@@ -70,8 +69,8 @@ public class HorizontalAuditMappingStrategy extends AbstractHorizontalMappingStr
protected String modifyListJoin(String attrTable, String listTable, String join)
{
- join += " AND " + attrTable + "." + CDODBSchema.ATTRIBUTES_VERSION;
- join += "=" + listTable + "." + CDODBSchema.LIST_REVISION_VERSION;
+ join += " AND " + attrTable + "." + ATTRIBUTES_VERSION;
+ join += "=" + listTable + "." + LIST_REVISION_VERSION;
return join;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategyWithRanges.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategyWithRanges.java
index f57512ef66..06e7c375c3 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategyWithRanges.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalAuditMappingStrategyWithRanges.java
@@ -14,7 +14,6 @@ package org.eclipse.emf.cdo.server.internal.db.mapping.horizontal;
import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -36,9 +35,9 @@ public class HorizontalAuditMappingStrategyWithRanges extends HorizontalAuditMap
}
@Override
- public IClassMapping doCreateClassMapping(EClass eClass)
+ protected IClassMapping doCreateClassMapping(EClass eClass, boolean create)
{
- return new HorizontalAuditClassMapping(this, eClass);
+ return new HorizontalAuditClassMapping(this, eClass, create);
}
@Override
@@ -56,11 +55,11 @@ public class HorizontalAuditMappingStrategyWithRanges extends HorizontalAuditMap
@Override
protected String modifyListJoin(String attrTable, String listTable, String join)
{
- join += " AND " + listTable + "." + CDODBSchema.LIST_REVISION_VERSION_ADDED;
- join += "<=" + attrTable + "." + CDODBSchema.ATTRIBUTES_VERSION;
- join += " AND (" + listTable + "." + CDODBSchema.LIST_REVISION_VERSION_REMOVED;
- join += " IS NULL OR " + listTable + "." + CDODBSchema.LIST_REVISION_VERSION_REMOVED;
- join += ">" + attrTable + "." + CDODBSchema.ATTRIBUTES_VERSION + ")";
+ join += " AND " + listTable + "." + LIST_REVISION_VERSION_ADDED;
+ join += "<=" + attrTable + "." + ATTRIBUTES_VERSION;
+ join += " AND (" + listTable + "." + LIST_REVISION_VERSION_REMOVED;
+ join += " IS NULL OR " + listTable + "." + LIST_REVISION_VERSION_REMOVED;
+ join += ">" + attrTable + "." + ATTRIBUTES_VERSION + ")";
return join;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
index 944943728a..0a2794b640 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
@@ -44,7 +44,6 @@ import org.eclipse.emf.cdo.server.db.mapping.IClassMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
import org.eclipse.emf.cdo.spi.common.revision.DetachedCDORevision;
@@ -201,9 +200,10 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
}
};
- public HorizontalBranchingClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass)
+ public HorizontalBranchingClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass,
+ boolean create)
{
- super(mappingStrategy, eClass);
+ super(mappingStrategy, eClass, create);
initSQLStrings();
}
@@ -211,7 +211,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
@Override
protected IDBField addBranchingField(IDBTable table)
{
- return table.addField(CDODBSchema.ATTRIBUTES_BRANCH, DBType.INTEGER, true);
+ return table.addField(ATTRIBUTES_BRANCH, DBType.INTEGER, true);
}
private void initSQLStrings()
@@ -223,17 +223,17 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(ATTRIBUTES_RESOURCE);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(ATTRIBUTES_FEATURE);
for (ITypeMapping singleMapping : getValueMappings())
{
@@ -262,24 +262,24 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append("=? AND ("); //$NON-NLS-1$
String sqlSelectAttributesPrefix = builder.toString();
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0)"); //$NON-NLS-1$
sqlSelectCurrentAttributes = builder.toString();
builder = new StringBuilder(sqlSelectAttributesPrefix);
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(">=?))"); //$NON-NLS-1$
sqlSelectAttributesByTime = builder.toString();
@@ -287,7 +287,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
builder = new StringBuilder(sqlSelectAttributesPrefix);
builder.append("ABS("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(")=?)"); //$NON-NLS-1$
sqlSelectAttributesByVersion = builder.toString();
@@ -298,21 +298,21 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
builder.append(getTable());
builder.append("("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(ATTRIBUTES_RESOURCE);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(ATTRIBUTES_FEATURE);
for (ITypeMapping singleMapping : getValueMappings())
{
@@ -368,40 +368,40 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0"); //$NON-NLS-1$
sqlReviseAttributes = builder.toString();
// ----------- Select all unrevised Object IDs ------
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0"); //$NON-NLS-1$
sqlSelectAllObjectIDs = builder.toString();
// ----------- Select all revisions (for handleRevision) ---
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
sqlSelectForHandle = builder.toString();
// ----------- Select all revisions (for handleRevision) ---
builder = new StringBuilder("SELECT DISTINCT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
@@ -411,11 +411,11 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append("=?"); //$NON-NLS-1$
sqlRawDeleteAttributes = builder.toString();
}
@@ -519,15 +519,15 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(">0 AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append("=? AND "); //$NON-NLS-1$
builder.append(nameValueMapping.getField());
if (name == null)
@@ -543,16 +543,16 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
if (timeStamp == CDORevision.UNSPECIFIED_DATE)
{
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0)"); //$NON-NLS-1$
}
else
{
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(">=?))"); //$NON-NLS-1$
}
@@ -885,7 +885,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
{
// TODO: Prepare this string literal
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append("=?"); //$NON-NLS-1$
whereAppend = true;
@@ -899,7 +899,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
if (timeStamp != CDOBranchPoint.UNSPECIFIED_DATE)
{
builder.append(whereAppend ? " AND " : " WHERE "); //$NON-NLS-1$ //$NON-NLS-2$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("=?"); //$NON-NLS-1$
timeParameters = 1;
}
@@ -909,17 +909,17 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
builder.append(whereAppend ? " AND " : " WHERE "); //$NON-NLS-1$ //$NON-NLS-2$
if (timeStamp != CDOBranchPoint.UNSPECIFIED_DATE)
{
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(">=?)"); //$NON-NLS-1$
timeParameters = 2;
}
else
{
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("="); //$NON-NLS-1$
builder.append(CDOBranchPoint.UNSPECIFIED_DATE);
}
@@ -1004,15 +1004,15 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
builder.append(" OR "); //$NON-NLS-1$
}
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(">=?"); //$NON-NLS-1$
builder.append(" AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("<=? OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("="); //$NON-NLS-1$
builder.append(CDOBranchPoint.UNSPECIFIED_DATE);
builder.append(")"); //$NON-NLS-1$
@@ -1060,7 +1060,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
protected String getListXRefsWhere(QueryXRefsContext context)
{
StringBuilder builder = new StringBuilder();
- builder.append(CDODBSchema.ATTRIBUTES_BRANCH);
+ builder.append(ATTRIBUTES_BRANCH);
builder.append("=");
builder.append(context.getBranch().getID());
builder.append(" AND (");
@@ -1068,18 +1068,18 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
long timeStamp = context.getTimeStamp();
if (timeStamp == CDORevision.UNSPECIFIED_DATE)
{
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0)"); //$NON-NLS-1$
}
else
{
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("<=");
builder.append(timeStamp);
builder.append(" AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(">=");
builder.append(timeStamp);
builder.append("))"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategy.java
index 91944e92e3..987ba07229 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategy.java
@@ -15,7 +15,6 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.server.db.IIDHandler;
import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBUtil;
@@ -57,9 +56,9 @@ public class HorizontalBranchingMappingStrategy extends AbstractHorizontalMappin
}
@Override
- public IClassMapping doCreateClassMapping(EClass eClass)
+ protected IClassMapping doCreateClassMapping(EClass eClass, boolean create)
{
- return new HorizontalBranchingClassMapping(this, eClass);
+ return new HorizontalBranchingClassMapping(this, eClass, create);
}
@Override
@@ -95,28 +94,25 @@ public class HorizontalBranchingMappingStrategy extends AbstractHorizontalMappin
protected String modifyListJoin(String attrTable, String listTable, String join, boolean forRawExport)
{
- join += " AND " + attrTable + "." + CDODBSchema.ATTRIBUTES_VERSION;
- join += "=" + listTable + "." + CDODBSchema.LIST_REVISION_VERSION;
- join += " AND " + attrTable + "." + CDODBSchema.ATTRIBUTES_BRANCH;
- join += "=" + listTable + "." + CDODBSchema.LIST_REVISION_BRANCH;
+ join += " AND " + attrTable + "." + ATTRIBUTES_VERSION;
+ join += "=" + listTable + "." + LIST_REVISION_VERSION;
+ join += " AND " + attrTable + "." + ATTRIBUTES_BRANCH;
+ join += "=" + listTable + "." + LIST_REVISION_BRANCH;
return join;
}
@Override
protected void rawImportReviseOldRevisions(Connection connection, IDBTable table, OMMonitor monitor)
{
- String sqlUpdate = "UPDATE " + table + " SET " + CDODBSchema.ATTRIBUTES_REVISED + "=? WHERE "
- + CDODBSchema.ATTRIBUTES_ID + "=? AND " + CDODBSchema.ATTRIBUTES_BRANCH + "=? AND "
- + CDODBSchema.ATTRIBUTES_VERSION + "=?";
-
- String sqlQuery = "SELECT cdo1." + CDODBSchema.ATTRIBUTES_ID + ", cdo1." + CDODBSchema.ATTRIBUTES_BRANCH
- + ", cdo1." + CDODBSchema.ATTRIBUTES_VERSION + ", cdo2." + CDODBSchema.ATTRIBUTES_CREATED + " FROM " + table
- + " cdo1, " + table + " cdo2 WHERE cdo1." + CDODBSchema.ATTRIBUTES_ID + "=cdo2." + CDODBSchema.ATTRIBUTES_ID
- + " AND cdo1." + CDODBSchema.ATTRIBUTES_BRANCH + "=cdo2." + CDODBSchema.ATTRIBUTES_BRANCH + " AND (cdo1."
- + CDODBSchema.ATTRIBUTES_VERSION + "=cdo2." + CDODBSchema.ATTRIBUTES_VERSION + "-1 OR (cdo1."
- + CDODBSchema.ATTRIBUTES_VERSION + "+cdo2." + CDODBSchema.ATTRIBUTES_VERSION + "=-1 AND cdo1."
- + CDODBSchema.ATTRIBUTES_VERSION + ">cdo2." + CDODBSchema.ATTRIBUTES_VERSION + ")) AND cdo1."
- + CDODBSchema.ATTRIBUTES_REVISED + "=0";
+ String sqlUpdate = "UPDATE " + table + " SET " + ATTRIBUTES_REVISED + "=? WHERE " + ATTRIBUTES_ID + "=? AND "
+ + ATTRIBUTES_BRANCH + "=? AND " + ATTRIBUTES_VERSION + "=?";
+
+ String sqlQuery = "SELECT cdo1." + ATTRIBUTES_ID + ", cdo1." + ATTRIBUTES_BRANCH + ", cdo1." + ATTRIBUTES_VERSION
+ + ", cdo2." + ATTRIBUTES_CREATED + " FROM " + table + " cdo1, " + table + " cdo2 WHERE cdo1." + ATTRIBUTES_ID
+ + "=cdo2." + ATTRIBUTES_ID + " AND cdo1." + ATTRIBUTES_BRANCH + "=cdo2." + ATTRIBUTES_BRANCH + " AND (cdo1."
+ + ATTRIBUTES_VERSION + "=cdo2." + ATTRIBUTES_VERSION + "-1 OR (cdo1." + ATTRIBUTES_VERSION + "+cdo2."
+ + ATTRIBUTES_VERSION + "=-1 AND cdo1." + ATTRIBUTES_VERSION + ">cdo2." + ATTRIBUTES_VERSION + ")) AND cdo1."
+ + ATTRIBUTES_REVISED + "=0";
IIDHandler idHandler = getStore().getIDHandler();
PreparedStatement stmtUpdate = null;
@@ -178,9 +174,9 @@ public class HorizontalBranchingMappingStrategy extends AbstractHorizontalMappin
protected void rawImportUnreviseNewRevisions(Connection connection, IDBTable table, long fromCommitTime,
long toCommitTime, OMMonitor monitor)
{
- String sqlUpdate = "UPDATE " + table + " SET " + CDODBSchema.ATTRIBUTES_REVISED + "=0 WHERE "
- + CDODBSchema.ATTRIBUTES_BRANCH + ">=0 AND " + CDODBSchema.ATTRIBUTES_CREATED + "<=" + toCommitTime + " AND "
- + CDODBSchema.ATTRIBUTES_REVISED + ">" + toCommitTime + " AND " + CDODBSchema.ATTRIBUTES_VERSION + ">0";
+ String sqlUpdate = "UPDATE " + table + " SET " + ATTRIBUTES_REVISED + "=0 WHERE " + ATTRIBUTES_BRANCH + ">=0 AND "
+ + ATTRIBUTES_CREATED + "<=" + toCommitTime + " AND " + ATTRIBUTES_REVISED + ">" + toCommitTime + " AND "
+ + ATTRIBUTES_VERSION + ">0";
PreparedStatement stmtUpdate = null;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategyWithRanges.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategyWithRanges.java
index ab527f2dbd..92864344c0 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategyWithRanges.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingMappingStrategyWithRanges.java
@@ -20,7 +20,6 @@ import org.eclipse.emf.cdo.server.db.CDODBUtil;
import org.eclipse.emf.cdo.server.db.IIDHandler;
import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBUtil;
@@ -65,9 +64,9 @@ public class HorizontalBranchingMappingStrategyWithRanges extends HorizontalBran
}
@Override
- public IClassMapping doCreateClassMapping(EClass eClass)
+ protected IClassMapping doCreateClassMapping(EClass eClass, boolean create)
{
- return new HorizontalBranchingClassMapping(this, eClass);
+ return new HorizontalBranchingClassMapping(this, eClass, create);
}
@Override
@@ -99,15 +98,15 @@ public class HorizontalBranchingMappingStrategyWithRanges extends HorizontalBran
{
StringBuilder builder = new StringBuilder();
builder.append("SELECT l_t.");
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append(", l_t.");
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append(", l_t.");
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append(", l_t.");
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(", l_t.");
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(" FROM ");
builder.append(table);
builder.append(" l_t, ");
@@ -116,7 +115,7 @@ public class HorizontalBranchingMappingStrategyWithRanges extends HorizontalBran
builder.append(attrSuffix);
builder.append(getListJoinForPostProcess("a_t", "l_t"));
builder.append(" AND l_t.");
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append(" IS NOT NULL");
String sql = DBUtil.trace(builder.toString());
@@ -204,15 +203,15 @@ public class HorizontalBranchingMappingStrategyWithRanges extends HorizontalBran
builder.append("UPDATE "); //$NON-NLS-1$
builder.append(table);
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_REMOVED);
+ builder.append(LIST_REVISION_VERSION_REMOVED);
builder.append("=? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_BRANCH);
+ builder.append(LIST_REVISION_BRANCH);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_VERSION_ADDED);
+ builder.append(LIST_REVISION_VERSION_ADDED);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=?"); //$NON-NLS-1$
String sql = DBUtil.trace(builder.toString());
@@ -287,33 +286,33 @@ public class HorizontalBranchingMappingStrategyWithRanges extends HorizontalBran
{
if (forPostProcess)
{
- join += CDODBSchema.LIST_REVISION_VERSION_REMOVED;
+ join += LIST_REVISION_VERSION_REMOVED;
}
else
{
- join += CDODBSchema.LIST_REVISION_VERSION_ADDED;
+ join += LIST_REVISION_VERSION_ADDED;
}
- join += "=" + attrTable + "." + CDODBSchema.ATTRIBUTES_VERSION;
+ join += "=" + attrTable + "." + ATTRIBUTES_VERSION;
}
else
{
- join += CDODBSchema.LIST_REVISION_VERSION_ADDED;
- join += "<=" + attrTable + "." + CDODBSchema.ATTRIBUTES_VERSION;
- join += " AND (" + listTable + "." + CDODBSchema.LIST_REVISION_VERSION_REMOVED;
- join += " IS NULL OR " + listTable + "." + CDODBSchema.LIST_REVISION_VERSION_REMOVED;
- join += ">" + attrTable + "." + CDODBSchema.ATTRIBUTES_VERSION + ")";
+ join += LIST_REVISION_VERSION_ADDED;
+ join += "<=" + attrTable + "." + ATTRIBUTES_VERSION;
+ join += " AND (" + listTable + "." + LIST_REVISION_VERSION_REMOVED;
+ join += " IS NULL OR " + listTable + "." + LIST_REVISION_VERSION_REMOVED;
+ join += ">" + attrTable + "." + ATTRIBUTES_VERSION + ")";
}
- join += " AND " + attrTable + "." + CDODBSchema.ATTRIBUTES_BRANCH;
- join += "=" + listTable + "." + CDODBSchema.LIST_REVISION_BRANCH;
+ join += " AND " + attrTable + "." + ATTRIBUTES_BRANCH;
+ join += "=" + listTable + "." + LIST_REVISION_BRANCH;
if (forRawExport && !forPostProcess)
{
- join += " ORDER BY " + listTable + "." + CDODBSchema.LIST_REVISION_ID;
- join += ", " + listTable + "." + CDODBSchema.LIST_REVISION_BRANCH;
- join += ", " + listTable + "." + CDODBSchema.LIST_REVISION_VERSION_ADDED;
- join += ", " + listTable + "." + CDODBSchema.LIST_IDX;
+ join += " ORDER BY " + listTable + "." + LIST_REVISION_ID;
+ join += ", " + listTable + "." + LIST_REVISION_BRANCH;
+ join += ", " + listTable + "." + LIST_REVISION_VERSION_ADDED;
+ join += ", " + listTable + "." + LIST_IDX;
}
return join;
@@ -355,12 +354,12 @@ public class HorizontalBranchingMappingStrategyWithRanges extends HorizontalBran
if (stmt == null)
{
String sql = "UPDATE " + fields[0].getTable() //
- + " SET " + CDODBSchema.LIST_REVISION_VERSION_REMOVED + "=?" //
- + " WHERE " + CDODBSchema.LIST_REVISION_ID + "=?" //
- + " AND " + CDODBSchema.LIST_REVISION_BRANCH + "=?" //
- + " AND " + CDODBSchema.LIST_IDX + "=?" //
- + " AND " + CDODBSchema.LIST_REVISION_VERSION_ADDED + "<?" //
- + " AND " + CDODBSchema.LIST_REVISION_VERSION_REMOVED + " IS NULL";
+ + " SET " + LIST_REVISION_VERSION_REMOVED + "=?" //
+ + " WHERE " + LIST_REVISION_ID + "=?" //
+ + " AND " + LIST_REVISION_BRANCH + "=?" //
+ + " AND " + LIST_IDX + "=?" //
+ + " AND " + LIST_REVISION_VERSION_ADDED + "<?" //
+ + " AND " + LIST_REVISION_VERSION_REMOVED + " IS NULL";
stmt = connection.prepareStatement(sql);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditClassMapping.java
index 4222481aa3..23c7e359ea 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditClassMapping.java
@@ -37,7 +37,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IClassMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
@@ -90,9 +89,9 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
}
};
- public HorizontalNonAuditClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass)
+ public HorizontalNonAuditClassMapping(AbstractHorizontalMappingStrategy mappingStrategy, EClass eClass, boolean create)
{
- super(mappingStrategy, eClass);
+ super(mappingStrategy, eClass, create);
initSQLStrings();
}
@@ -106,17 +105,17 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(ATTRIBUTES_RESOURCE);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(ATTRIBUTES_FEATURE);
for (ITypeMapping singleMapping : getValueMappings())
{
@@ -145,7 +144,7 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=?"); //$NON-NLS-1$
sqlSelectCurrentAttributes = builder.toString();
@@ -156,19 +155,19 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
builder.append(getTable());
builder.append("("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append(ATTRIBUTES_REVISED);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(ATTRIBUTES_RESOURCE);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(ATTRIBUTES_FEATURE);
for (ITypeMapping singleMapping : getValueMappings())
{
@@ -221,7 +220,7 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
// ----------- Select all unrevised Object IDs ------
builder = new StringBuilder("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
sqlSelectAllObjectIDs = builder.toString();
@@ -230,30 +229,30 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
builder = new StringBuilder("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append("=? ,"); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(ATTRIBUTES_CREATED);
builder.append("=? "); //$NON-NLS-1$
sqlUpdatePrefix = builder.toString();
builder = new StringBuilder(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(ATTRIBUTES_RESOURCE);
builder.append("=? ,"); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append("=? ,"); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(ATTRIBUTES_FEATURE);
builder.append("=? "); //$NON-NLS-1$
sqlUpdateContainerPart = builder.toString();
builder = new StringBuilder(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? "); //$NON-NLS-1$
sqlUpdateAffix = builder.toString();
builder = new StringBuilder("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append("=? "); //$NON-NLS-1$
sqlDelete = builder.toString();
}
@@ -354,13 +353,13 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
StringBuilder builder = new StringBuilder();
builder.append("SELECT "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(ATTRIBUTES_ID);
builder.append(" FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(ATTRIBUTES_VERSION);
builder.append(">0 AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(ATTRIBUTES_CONTAINER);
builder.append("=? AND "); //$NON-NLS-1$
builder.append(nameValueMapping.getField());
if (name == null)
@@ -776,6 +775,6 @@ public class HorizontalNonAuditClassMapping extends AbstractHorizontalClassMappi
throw new IllegalArgumentException("Non-audit mode does not support branch specification");
}
- return CDODBSchema.ATTRIBUTES_REVISED + "=0";
+ return ATTRIBUTES_REVISED + "=0";
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditMappingStrategy.java
index 7f6d87b1e3..d266958f27 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalNonAuditMappingStrategy.java
@@ -63,9 +63,9 @@ public class HorizontalNonAuditMappingStrategy extends AbstractHorizontalMapping
}
@Override
- protected IClassMapping doCreateClassMapping(EClass eClass)
+ protected IClassMapping doCreateClassMapping(EClass eClass, boolean create)
{
- return new HorizontalNonAuditClassMapping(this, eClass);
+ return new HorizontalNonAuditClassMapping(this, eClass, create);
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/IMappingConstants.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/IMappingConstants.java
new file mode 100644
index 0000000000..015ff5b9ff
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/IMappingConstants.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.db.mapping.horizontal;
+
+/**
+ * @author Eike Stepper
+ */
+public interface IMappingConstants
+{
+ /*
+ * Field names of attribute tables
+ */
+
+ public static final String ATTRIBUTES_ID = "cdo_id"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_BRANCH = "cdo_branch"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_VERSION = "cdo_version"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_CLASS = "cdo_class"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_CREATED = "cdo_created"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_REVISED = "cdo_revised"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_RESOURCE = "cdo_resource"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_CONTAINER = "cdo_container"; //$NON-NLS-1$
+
+ public static final String ATTRIBUTES_FEATURE = "cdo_feature"; //$NON-NLS-1$
+
+ /*
+ * Field names of list tables
+ */
+
+ public static final String LIST_FEATURE = "cdo_feature"; //$NON-NLS-1$
+
+ public static final String LIST_REVISION_ID = "cdo_source"; //$NON-NLS-1$
+
+ public static final String LIST_REVISION_VERSION = "cdo_version"; //$NON-NLS-1$
+
+ public static final String LIST_REVISION_VERSION_ADDED = "cdo_version_added"; //$NON-NLS-1$
+
+ public static final String LIST_REVISION_VERSION_REMOVED = "cdo_version_removed"; //$NON-NLS-1$
+
+ public static final String LIST_REVISION_BRANCH = "cdo_branch"; //$NON-NLS-1$
+
+ public static final String LIST_IDX = "cdo_idx"; //$NON-NLS-1$
+
+ public static final String LIST_VALUE = "cdo_value"; //$NON-NLS-1$
+
+ /*
+ * Field names of featuremap tables
+ */
+
+ public static final String FEATUREMAP_REVISION_ID = LIST_REVISION_ID;
+
+ public static final String FEATUREMAP_VERSION = LIST_REVISION_VERSION;
+
+ public static final String FEATUREMAP_VERSION_ADDED = LIST_REVISION_VERSION_ADDED;
+
+ public static final String FEATUREMAP_VERSION_REMOVED = LIST_REVISION_VERSION_REMOVED;
+
+ public static final String FEATUREMAP_BRANCH = LIST_REVISION_BRANCH;
+
+ public static final String FEATUREMAP_IDX = LIST_IDX;
+
+ public static final String FEATUREMAP_TAG = LIST_FEATURE;
+
+ public static final String FEATUREMAP_VALUE = LIST_VALUE;
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditFeatureMapTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditFeatureMapTableMapping.java
index de4d069fd0..c6db29b53b 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditFeatureMapTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditFeatureMapTableMapping.java
@@ -34,7 +34,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.mapping.ITypeMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBUtil;
@@ -96,13 +95,13 @@ public class NonAuditFeatureMapTableMapping extends AbstractFeatureMapTableMappi
builder.append("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? "); //$NON-NLS-1$
sqlClear = builder.toString();
builder.append(" AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? "); //$NON-NLS-1$
sqlDeleteItem = builder.toString();
@@ -112,12 +111,12 @@ public class NonAuditFeatureMapTableMapping extends AbstractFeatureMapTableMappi
builder.append("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? "); //$NON-NLS-1$
sqlUpdateIndex = builder.toString();
@@ -127,7 +126,7 @@ public class NonAuditFeatureMapTableMapping extends AbstractFeatureMapTableMappi
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_TAG);
+ builder.append(FEATUREMAP_TAG);
builder.append("=?,"); //$NON-NLS-1$
Iterator<String> iter = getColumnNames().iterator();
@@ -144,9 +143,9 @@ public class NonAuditFeatureMapTableMapping extends AbstractFeatureMapTableMappi
}
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("=? "); //$NON-NLS-1$
sqlUpdateValue = builder.toString();
@@ -155,18 +154,18 @@ public class NonAuditFeatureMapTableMapping extends AbstractFeatureMapTableMappi
builder.append("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("="); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("-1 WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append(">? "); //$NON-NLS-1$
sqlMoveDown = builder.toString();
builder.append(" AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("<=?"); //$NON-NLS-1$
sqlMoveDownWithLimit = builder.toString();
@@ -175,18 +174,18 @@ public class NonAuditFeatureMapTableMapping extends AbstractFeatureMapTableMappi
builder.append("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("="); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("+1 WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_REVISION_ID);
+ builder.append(FEATUREMAP_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append(">=? "); //$NON-NLS-1$
sqlMoveUp = builder.toString();
builder.append(" AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.FEATUREMAP_IDX);
+ builder.append(FEATUREMAP_IDX);
builder.append("<?"); //$NON-NLS-1$
sqlMoveUpWithLimit = builder.toString();
}
@@ -198,7 +197,7 @@ public class NonAuditFeatureMapTableMapping extends AbstractFeatureMapTableMappi
{
IDBStore store = getMappingStrategy().getStore();
- keyFields = new FieldInfo[] { new FieldInfo(CDODBSchema.FEATUREMAP_REVISION_ID, store.getIDHandler().getDBType(),
+ keyFields = new FieldInfo[] { new FieldInfo(FEATUREMAP_REVISION_ID, store.getIDHandler().getDBType(),
store.getIDColumnLength()) };
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditListTableMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditListTableMapping.java
index 96f7389be6..19ae5f747d 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditListTableMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/NonAuditListTableMapping.java
@@ -33,7 +33,6 @@ import org.eclipse.emf.cdo.server.db.IPreparedStatementCache;
import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability;
import org.eclipse.emf.cdo.server.db.mapping.IListMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -98,13 +97,13 @@ public class NonAuditListTableMapping extends AbstractListTableMapping implement
builder.append("DELETE FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? "); //$NON-NLS-1$
sqlClear = builder.toString();
builder.append(" AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? "); //$NON-NLS-1$
sqlDeleteItem = builder.toString();
@@ -114,12 +113,12 @@ public class NonAuditListTableMapping extends AbstractListTableMapping implement
builder.append("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? "); //$NON-NLS-1$
sqlUpdateValue = builder.toString();
@@ -128,11 +127,11 @@ public class NonAuditListTableMapping extends AbstractListTableMapping implement
builder.append("INSERT INTO "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" ("); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(", "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_VALUE);
+ builder.append(LIST_VALUE);
builder.append(") VALUES(?, ?, ?) "); //$NON-NLS-1$
sqlInsertValue = builder.toString();
@@ -141,12 +140,12 @@ public class NonAuditListTableMapping extends AbstractListTableMapping implement
builder.append("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? "); //$NON-NLS-1$
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("=? "); //$NON-NLS-1$
sqlUpdateIndex = builder.toString();
@@ -155,19 +154,19 @@ public class NonAuditListTableMapping extends AbstractListTableMapping implement
builder.append("UPDATE "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" SET "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("="); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append("+? WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=? AND "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(" BETWEEN ? AND ?"); //$NON-NLS-1$
// getMappingStrategy().getStore().getDBAdapter()
// needed because of MySQL:
builder.append("/*! ORDER BY "); //$NON-NLS-1$ /
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
sqlShiftDownIndex = builder.toString() + " */"; //$NON-NLS-1$
builder.append(" DESC"); //$NON-NLS-1$
sqlShiftUpIndex = builder.toString() + " */"; //$NON-NLS-1$
@@ -175,11 +174,11 @@ public class NonAuditListTableMapping extends AbstractListTableMapping implement
// ----------- read current index offset --------------
builder = new StringBuilder();
builder.append("SELECT MIN("); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_IDX);
+ builder.append(LIST_IDX);
builder.append(") FROM "); //$NON-NLS-1$
builder.append(getTable());
builder.append(" WHERE "); //$NON-NLS-1$
- builder.append(CDODBSchema.LIST_REVISION_ID);
+ builder.append(LIST_REVISION_ID);
builder.append("=?"); //$NON-NLS-1$
sqlReadCurrentIndexOffset = builder.toString();
}
@@ -206,7 +205,7 @@ public class NonAuditListTableMapping extends AbstractListTableMapping implement
{
IDBStore store = getMappingStrategy().getStore();
- keyFields = new FieldInfo[] { new FieldInfo(CDODBSchema.LIST_REVISION_ID, store.getIDHandler().getDBType(),
+ keyFields = new FieldInfo[] { new FieldInfo(LIST_REVISION_ID, store.getIDHandler().getDBType(),
store.getIDColumnLength()) };
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/ObjectTypeTable.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/ObjectTypeTable.java
index 4cd4cb37b5..471e0a550a 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/ObjectTypeTable.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/ObjectTypeTable.java
@@ -27,7 +27,8 @@ import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
import org.eclipse.net4j.db.DBUtil;
-import org.eclipse.net4j.db.IDBAdapter;
+import org.eclipse.net4j.db.IDBDatabase;
+import org.eclipse.net4j.db.IDBDatabase.RunnableWithTable;
import org.eclipse.net4j.db.ddl.IDBField;
import org.eclipse.net4j.db.ddl.IDBIndex;
import org.eclipse.net4j.db.ddl.IDBTable;
@@ -46,7 +47,7 @@ import java.sql.Statement;
* @author Eike Stepper
* @since 4.0
*/
-public class ObjectTypeTable extends AbstractObjectTypeMapper
+public class ObjectTypeTable extends AbstractObjectTypeMapper implements IMappingConstants
{
private IDBTable table;
@@ -226,36 +227,25 @@ public class ObjectTypeTable extends AbstractObjectTypeMapper
super.doActivate();
IDBStore store = getMappingStrategy().getStore();
- DBType idType = store.getIDHandler().getDBType();
- int idLength = store.getIDColumnLength();
+ final DBType idType = store.getIDHandler().getDBType();
+ final int idLength = store.getIDColumnLength();
- table = store.getDBSchema().addTable(CDODBSchema.CDO_OBJECTS);
- idField = table.addField(CDODBSchema.ATTRIBUTES_ID, idType, idLength, true);
- typeField = table.addField(CDODBSchema.ATTRIBUTES_CLASS, idType, idLength);
- timeField = table.addField(CDODBSchema.ATTRIBUTES_CREATED, DBType.BIGINT);
- table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField);
+ IDBDatabase database = store.getDatabase();
- IDBAdapter dbAdapter = store.getDBAdapter();
- IDBStoreAccessor writer = store.getWriter(null);
- Connection connection = writer.getConnection();
- Statement statement = null;
-
- try
+ table = database.ensureTable(CDODBSchema.CDO_OBJECTS, new RunnableWithTable()
{
- statement = connection.createStatement();
- dbAdapter.createTable(table, statement);
- connection.commit();
- }
- catch (SQLException ex)
- {
- connection.rollback();
- throw new DBException(ex);
- }
- finally
- {
- DBUtil.close(statement);
- writer.release();
- }
+ public void run(IDBTable table)
+ {
+ IDBField idField = table.addField(ATTRIBUTES_ID, idType, idLength, true);
+ table.addField(ATTRIBUTES_CLASS, idType, idLength);
+ table.addField(ATTRIBUTES_CREATED, DBType.BIGINT);
+ table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField);
+ }
+ });
+
+ idField = table.getField(0);
+ typeField = table.getField(1);
+ timeField = table.getField(2);
sqlSelect = "SELECT " + typeField + " FROM " + table + " WHERE " + idField + "=?"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
sqlInsert = "INSERT INTO " + table + "(" + idField + "," + typeField + "," + timeField + ") VALUES (?, ?, ?)";
diff --git a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/verifier/DBStoreVerifier.java b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/verifier/DBStoreVerifier.java
index 95e34ef7e9..585e9a2dae 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/verifier/DBStoreVerifier.java
+++ b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/verifier/DBStoreVerifier.java
@@ -19,11 +19,11 @@ import org.eclipse.emf.cdo.server.db.IDBStore;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
-import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalAuditClassMapping;
import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalAuditMappingStrategy;
import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalNonAuditClassMapping;
import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalNonAuditMappingStrategy;
+import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.IMappingConstants;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.cdo.tests.db.bundle.OM;
@@ -281,8 +281,8 @@ public abstract class DBStoreVerifier
String tableName = mapping.getDBTables().iterator().next().getName();
TRACER.format("verifyAtMostOneUnrevised: {0} ...", tableName);
- String sql = "SELECT " + CDODBSchema.ATTRIBUTES_ID + ", count(1) FROM " + tableName + " WHERE "
- + CDODBSchema.ATTRIBUTES_REVISED + "= 0 GROUP BY " + CDODBSchema.ATTRIBUTES_ID;
+ String sql = "SELECT " + IMappingConstants.ATTRIBUTES_ID + ", count(1) FROM " + tableName + " WHERE "
+ + IMappingConstants.ATTRIBUTES_REVISED + "= 0 GROUP BY " + IMappingConstants.ATTRIBUTES_ID;
TRACER.format(" Executing SQL: {0} ", sql);
ResultSet resultSet = getStatement().executeQuery(sql);
@@ -307,8 +307,8 @@ public abstract class DBStoreVerifier
String tableName = mapping.getDBTables().iterator().next().getName();
TRACER.format("verifyUniqueIdVersion: {0} ...", tableName);
- String sql = "SELECT " + CDODBSchema.ATTRIBUTES_ID + "," + CDODBSchema.ATTRIBUTES_VERSION + ", count(1) FROM "
- + tableName + " GROUP BY " + CDODBSchema.ATTRIBUTES_ID + "," + CDODBSchema.ATTRIBUTES_VERSION;
+ String sql = "SELECT " + IMappingConstants.ATTRIBUTES_ID + "," + IMappingConstants.ATTRIBUTES_VERSION + ", count(1) FROM "
+ + tableName + " GROUP BY " + IMappingConstants.ATTRIBUTES_ID + "," + IMappingConstants.ATTRIBUTES_VERSION;
TRACER.format(" Executing SQL: {0} ", sql);
@@ -324,7 +324,7 @@ public abstract class DBStoreVerifier
catch (AssertionFailedError e)
{
TRACER.trace(e.getMessage());
- sqlDump("SELECT * FROM " + tableName + " WHERE " + CDODBSchema.ATTRIBUTES_REVISED + "=0");
+ sqlDump("SELECT * FROM " + tableName + " WHERE " + IMappingConstants.ATTRIBUTES_REVISED + "=0");
throw e;
}
finally
@@ -342,7 +342,7 @@ public abstract class DBStoreVerifier
}
String tableName = mapping.getDBTables().iterator().next().getName();
- String sql = "SELECT " + CDODBSchema.ATTRIBUTES_ID + ", " + CDODBSchema.ATTRIBUTES_VERSION + " FROM " + tableName;
+ String sql = "SELECT " + IMappingConstants.ATTRIBUTES_ID + ", " + IMappingConstants.ATTRIBUTES_VERSION + " FROM " + tableName;
ArrayList<Pair<Long, Integer>> idVersions = new ArrayList<Pair<Long, Integer>>();
@@ -374,9 +374,9 @@ public abstract class DBStoreVerifier
TRACER.format("verifyUniqueIdVersion: {0} for ID{1}v{2} ...", tableName, id, version);
- String sql = "SELECT " + CDODBSchema.LIST_IDX + " FROM " + tableName + " WHERE " + CDODBSchema.LIST_REVISION_ID
- + "=" + id + " AND " + CDODBSchema.LIST_REVISION_VERSION + "=" + version + " ORDER BY "
- + CDODBSchema.LIST_IDX;
+ String sql = "SELECT " + IMappingConstants.LIST_IDX + " FROM " + tableName + " WHERE " + IMappingConstants.LIST_REVISION_ID
+ + "=" + id + " AND " + IMappingConstants.LIST_REVISION_VERSION + "=" + version + " ORDER BY "
+ + IMappingConstants.LIST_IDX;
TRACER.format(" Executing SQL: {0} ", sql);
@@ -393,8 +393,8 @@ public abstract class DBStoreVerifier
}
catch (AssertionFailedError e)
{
- sqlDump("SELECT * FROM " + tableName + " WHERE " + CDODBSchema.LIST_REVISION_ID + "=" + id + " AND "
- + CDODBSchema.LIST_REVISION_VERSION + "=" + version + " ORDER BY " + CDODBSchema.LIST_IDX);
+ sqlDump("SELECT * FROM " + tableName + " WHERE " + IMappingConstants.LIST_REVISION_ID + "=" + id + " AND "
+ + IMappingConstants.LIST_REVISION_VERSION + "=" + version + " ORDER BY " + IMappingConstants.LIST_IDX);
throw e;
}
finally
@@ -444,7 +444,7 @@ public abstract class DBStoreVerifier
private void verifyNoUnrevisedRevisions(IClassMapping mapping) throws Exception
{
String tableName = mapping.getDBTables().iterator().next().getName();
- String sql = "SELECT count(1) FROM " + tableName + " WHERE " + CDODBSchema.ATTRIBUTES_REVISED + " <> 0";
+ String sql = "SELECT count(1) FROM " + tableName + " WHERE " + IMappingConstants.ATTRIBUTES_REVISED + " <> 0";
ResultSet resultSet = getStatement().executeQuery(sql);
try
{
@@ -463,8 +463,8 @@ public abstract class DBStoreVerifier
private void verifyUniqueId(IClassMapping mapping) throws Exception
{
String tableName = mapping.getDBTables().iterator().next().getName();
- String sql = "SELECT " + CDODBSchema.ATTRIBUTES_ID + ", count(1) FROM " + tableName + " GROUP BY "
- + CDODBSchema.ATTRIBUTES_ID;
+ String sql = "SELECT " + IMappingConstants.ATTRIBUTES_ID + ", count(1) FROM " + tableName + " GROUP BY "
+ + IMappingConstants.ATTRIBUTES_ID;
ResultSet resultSet = getStatement().executeQuery(sql);
@@ -490,7 +490,7 @@ public abstract class DBStoreVerifier
}
String tableName = mapping.getDBTables().iterator().next().getName();
- String sql = "SELECT " + CDODBSchema.ATTRIBUTES_ID + ", " + CDODBSchema.ATTRIBUTES_VERSION + " FROM " + tableName;
+ String sql = "SELECT " + IMappingConstants.ATTRIBUTES_ID + ", " + IMappingConstants.ATTRIBUTES_VERSION + " FROM " + tableName;
ArrayList<Pair<Long, Integer>> idVersions = new ArrayList<Pair<Long, Integer>>();
@@ -519,8 +519,8 @@ public abstract class DBStoreVerifier
private void verifyCorrectIndices(IListMapping refMapping, long id) throws Exception
{
String tableName = refMapping.getDBTables().iterator().next().getName();
- String sql = "SELECT " + CDODBSchema.LIST_IDX + " FROM " + tableName + " WHERE " + CDODBSchema.LIST_REVISION_ID
- + "=" + id + " ORDER BY " + CDODBSchema.LIST_IDX;
+ String sql = "SELECT " + IMappingConstants.LIST_IDX + " FROM " + tableName + " WHERE " + IMappingConstants.LIST_REVISION_ID
+ + "=" + id + " ORDER BY " + IMappingConstants.LIST_IDX;
ResultSet resultSet = getStatement().executeQuery(sql);
int indexShouldBe = 0;

Back to the top

&>gЩTYn- Ç㹥}>Lbt6Pޱxc1*E6-ou)Hi@,xȱ{:g`xAB=H Phu31|aC|q#L*c//Y,[̍ nk˘=^d n6`u/Sv&y XN'$Jd?t{g,M]1@P`0P "&0%s4 b,_B܏jโ4Y^@ePlkj`3`Vbj >ƮF)y^ 똣ɱ8Pvmth= J!:IC,s~"J4G k/V9XXձ-m*S}tY?j0}j8*G+(VW/u)ɑcsFЖf0I7:;\>EQdv9:753|X2VSYGUXI& |x,XIh|c]19h3EJ䂻J%uu)HD5]SGXH׻z{̩Np%K0brN6Oame\$)?^3!=Awx/qE r%wxcU-wlt_71Qg50sgDU({Ÿ#/ _%Bx[8xm=7? syMÁ~I[8tfT|XW6+U/*!acJ[%u]բ{"ZVx!ph4USp,93X3TꜛQfƒox2>,we@L$ dcKck Üh'YLx @[8c.7Жt~0R(sf3!^]e*܊}{uɰ c!v+mպ~ʊ*eORdbnZˋxvD :iԴ2qgo6TQI*\k9{RSֿ_^+0qjnb"z_&S5 įWٺn-]x\W-/Lafj$mzaCTaukC- Y2˪EȚ?Ƞ{ғV R?S7铯CZHgmɅ`nsWWWs!;@rKqgHN>Rh\ceztd?PO&iEz"qFIpjc'?zO A|ilqlfӉ/5=J,D Oд[W3mǎ˞ c{gaBøQ2\iiظчAnVl> 滴lP3q\`p*|[(H 9M2͎=>bdlw)VMwa>$~v( v!bf~pRAq|e@9S;p0!P (fB®NuZ{Y'^@p]aJdB^} cmץx oR\&zWzk,^/zyyQnuu'حts H^–0U!bbz혭 踭^AO tAbު`!THchQZ=~_n, 8l [YCMx*?H~J>T b$XC_P+PJ{PT*zU\sIujWig@DXc\_Z ljJ@C=DЈ)8x(_bOVB1uF|E)?|b1Nm9l61N w?B{7AFյ̿3_3]{I!v ~ɵ7F09Ws% I .hҙO֯)HT?ivw$ \$Z`'o# ij$+!aϵ-Xua4) *3d <(zF4:\ =geg*lja]"16yn^l>3fUg2AI XAF}#>#)Ā ˶R,ݽm;'Bڟp[3l] P[$,҃;9MuƈcƲ jKab.AL4@0OK=@0I$[SU~S3EVMvsOR^Ԣ[Ys;%x*[e5yyz`l/অA];>3dcyUso\UD4*(?xC.£PfܮIhaCExyb܎:#Fl}_FHKr}L8N4DuѢ{ݵy t0;anfZ\Wju/Ǣ-Mߩ`yo7&_* [I!k5.|1lRwa&_SoqZryaQh~i_.*ZmEUٮ.8異ֶ@) 6؍V x = ϐrfNm'XV+$yA*"D -Z8uMYX}=[v|UyC̲U# TKޤo&].7'.P!,<.~Bri|u9e /t3/Qۤ#5S~?jyorwNfjՈbl K;P=yq Y*XBkb?2EoC>p/c=M^I,3іч` )$dىD=Ё?c6:/7WSK3L>TW5tpݝ6" bV%,…ﯗ^v K՗%'`Yu.+KemTwb2t?=Vh9#`+R)Vg~jr$_,r-fiba&q6(`^.Jx4o8ڑ^PX\3|Kt6u3@3}bq,"²[ESUJ>Tt6G gTDB}HGuT9vNB54xPB6.}OY>nMGH,0ԂRi'xrpH?~?vo/R!2jOKßW'BZݱ1A"UmNRGͯը4Ma;+0_36PY %1X t )C3Q;h̸OHp9=oiL7 ^ +\ él-0ab/8#\QVl'؊J?6LMjntUK1k/6h_<)CVm!q1$:Q<Óu\612um6Ne*+{TB+r}~"*-@biL gEǜ$gnE=dz{n:}@q 姫JM%(7j>׸oD!GJF*!ˣrR{4fbXċQrUQ;t_Y:i)i4۫Zv@^a l򍑦T/AH86 /LE˔4S ^~ >R<԰!PFD sI"󭎝Oy1I6 | V}i:52\$)h} k^;:: )VɳR]{>6 <:`tO?JqˉN"}% )(V廼/q75/ .́`nTh|mtW,|fpTgwk(0Wj~)֕ek󔣵;9 oBLB PCa'Ә?#»4Tc|LI nSw=8aP?b |;ڌ_PpHKr}=~[2YwЭW„`FZ'm%6Κå2&1\WYպ{vĂo y}eovf,%.B+Ixf [WF%Z^YڲO0Y2˭?bCY+Q參>$ncY+ FiN.3nC['@^wLL]VE&GdPLP1z,דz؀}5P}Ӻeȱwe3f9_̓TSq;gpp!NQ/ee1wi WOo$Je[x%uCW1Js=lNZ43Dg)T\E1Zļh._s G%$EFQiO }ERjV&b%"]?/phv>sO΅HȺ@$⚭u]T׽ 3~~)eRn^3dd}*Z]/v I}pؿ=w5j/$KN;L8aOR&K粽|/}'MhqC.V'4S6;~hsMtS=ך=HQCZ6 orS`cT'Dz{x &KRo^}_2bc=2#lN_h4,w9$7qpMC 1tUA)ckƄk HO92KJQ+ZHXٷ7O//6}X9}e?Z[uj(YqLۃH'|͹Obh8NI;anwi5bS/eŘ~yZX^@ϛ+<2F jPI(]>wmsL^?p)b̦wGa= a&FkZnYHŬ ]LAo']Ɛ곫1ВI~H7>ɷ L _.Δ(t0h )4\ 0_35E<݂Qss=l|XNA͢[Hq:bON# nE 4rBvWG*>t&":9S>iRb3,z[mka ;҃kNK?,/ȹqֻ};~tƍIF΍4ez/tSE.G9KsU>;pB3w9 V4>{Vp,~TS]m8arΨNwZ2 tT;D fdu "LR7Gqy2]$W]bK~y'YlP^080rԯ//m[ol.T@,5녋I#2E!,A ˚"X ViCu$3棍= \1wZR>4fd')s,9˛Br3OvJ>6s11efS@@],|znYs8'.H]I  S[fV͎moTWM\.CaBU{5T?+0H "[B3jKpJ,F ' !_/Z2ƏzHpFK.[~kt4X(5'nD Z:WH3(bSEq@h,1nJ?y/_U{nZA5y$lmK-kIYG-YJ;}χX&!3l\j2A-&m J6zg>sk~4=!oo2~;()Ya;\v,H0`sVX]zțJ5lqҼ/+Ij?ơʽ%Vf,y_+N!I@=LO?b]J(-SqKscjh8/ mz Q@gC&9H04qg & P\ڍ|>#]躯DYAh}"?8w[IxKNlV ϻPpc*Ȋ|1;kQݨ(" 8G|3[cBp.vu `pGV2ĚimJ57Lj69o4v^+҂ €d{e0\g΁ӞV)ȪS2so$uMY/!g%N $+6uBNP?l/YJO8^,&gƍZuIm=Oc]dxM4M +,sz HۻܭFAya:4Aʔ()ht!$om,0=j44y~cpIf0w@Z%MAb/e8/O"zdM莈͍K7Ē!zK9mfo|*PV~{quwv dǀY|hBd_Wa;Q#7o8 VVV<HLEGmĬma2DFڝL04$eBƔ@>aU `,pՓ߄o"„lebR ܬBE;ŝ 13+|\`&6^y7XtW&%KP0ɗ3Ep?aȮ!n&gҎk}`!x4Bto egq9҂?rCkq%1=8pH'vKp8LWQ>PfkLԆGQ_5o̒qs soy[RC!C9lnG=UPܘpd+6n0aάP ފ"߫dbl*y}<1btԌcվc^7d\ˢ.6%W;lw;ij=͢*Wʟ D΅O}|G:/Fgk;>(qSR)N٭L 4<X1@G~dBE("_]KbkV3БmL1 va0Dڄ-']A|}/jǼe^#LHE)Hh&D"9DZetLNbZ/O|,ly?4 'z(Sbk02Mqip=2Wbв -s+ZѬk m1:zm%ԫG1F#V"2Cahumn(fDm\{yaovLDM2b`#Ⴐ~nq G*oҪel*sWk Sa-VV3, d,dBmʒ ¹XTz }83}dP""j"iOi 7`J$!l !6 +tG#pmN//-K&3êE窩DM}/28wz Jxtz05J c݅ѹt`G#PAf| P*1[aKSmv)fHP9AmiTz P]EO@o1lk](~Bbva)E.j%`}oUԓrAןQ arnw *sL@/W}_A`l_c.]iO.x-4,tu!}^_8zhkX2d4C8ZLkΉg!wCJMs]Ӥ= ]cyk YX1D~9Y o}1,A9K6(Rzz{Y{igh8)[?+ʧ!7ohơ*+#9FN8Hm`=8G6S+5[Gn'%6݆rm*St8VTW_s螊5(!t;cwKfȓ3g;a7bMf#K.˫7V4$bwuʩ \j 2<'LQy 6C\IUiNyO~`NQ8gAH̰QsW~ׯSV3*zYM"Gѫ麟ʌ(pn7j{* 5G} _ݛH_J`=f=kn 3~4(Pu!eRLHń7cIrms4|1\n#ӽnr;Ej ` @b@)r4ʸoZ.k1)Uq(~?B|Ϳlˆ|rTZz &_C~>^ּ;v†.UƠo&*_x*5 [] \|:Oe2쎓%x޿>Kq(t|*>5o(櫰6{)n˳ǑD 9DfO>_0ȃDYB:LrsTnkPtqe4,";yzK1EN'P$VkY=Gf3bID (33]nA/:22[TLRDtK0+;Y^M'T/ Jf LS~a`(^I+ڔ#b]Vtd ľ)Te}jrH3X!6ĎsA[;K")n"}-)[ M<p,]GHDu$!&nqy9f7>rUwcskԪD}0ulydX=5S`,p\ JR.#G Ǚ F[@e$tLq`'O;@;(fĢUbwECOuMҘ)(q-vC W $HƛcTu!Y$ @:65Mܦ&x__aaR!lz𶱋4W{-5ߖ?ky8R(mA߾b.u}jdsFM7 ˌ\hYW!Z&ͣԴL8c۴2pvdbz2>Y]J MhSu˗RB>O2>Au?8xn2o!#-2СFLk%ԉp2{_!+ձxU^O7m`bv(v8~ J{cwx` ܼ N%Lc6/toƉ@TlA9@8tx5'.IERY&W q+J]SzCL/ wz%{-cIG44C4[)cGGʲU8+gXPܠ$3nYF,6)O V"` ] d!\5:N L\P쮐 >Nz䵬b7vt`܄crr.G~--j'Ɔ(BGoVTTw"5:[z.RϦ^MԜ>K SQ Cv8G[MV]Io׵,y(*)PV R1N-dd%Ylr TƜ1$\Cp8K_ށ7 9PW}\_6<`6}2GN^,䬾J.M{([f`Eisq+e`Ɵo֗P;͖ '/(J<$.s4pL)"#ky w)dҾ@ "7>,w)|xnx8p?7eTh7$LjŇVdzG ,X-m|ioՁ;n}4-9 4 b] P;J 1Vy'`|H[sF Ae#v5'eAcJ1ZQ8cd--blk4w;T熏 P3B}scvf'5(QzjK&#? G:7id R"psւk6s6_BT㮓/ P<M.S`g jbQc[oU#ZD`ʡ:a H\qk:D1ЕeQԇu^V|.1zl5X* awW.Rz卒n7?x7wNK99]@kr0#gt?"$8(`~4R?w9KUiUƎSu=~%J_4MhP }5AYbs3l-ŬDh0VFrGH"4`S]$ㆃTU|6GHT ?KphZ"K}9X3š80%R [C(5٢*9{ֆ!}±rUXd@w6M.qL#Hxoºefkճq~ߖ'ýlЭU >t_֟oY1tÎ=ЕbP2YWDAelÁi]5Mo_ƌa4 *( CmsӫK}"^Q)ISA ]Lp\G J$2{ ?w%%yӷwO WG8/2ex-gL" qu`"aIp;b9A =Ppy4jLVQ+nɈ!#o}z_)raXa,ʅfpߢ /bJBS C`QKg(Զ>s&|D Px6"m:&Hn=T^Y@~9'` `+;9I;cf$ޥQz :^1|ťJB9(tmq7:(kHm,< C:H6TI<^^{^Zj~y&x&,7'c S 0u.DS[Q8޵aѣ:+ZAR?ʐYPut1v/ˀn!32饍C&½g+ Jβ3&XZskW]"Ew|2V@rC '(lv u"R&En :WwRJP9pN?wQ&Ur@jg](8ٟ Oչ9b3D159u>yvRM΢5IAKzeVTFCf+|6V[c m8gYT/iAsv#I q+o_n-5&/`' .@ h(лL~;Q7 j\Kv>'mLjn&;elx "Y].TӏɅmʴQA{VJ#p[Oأ*&R f? nJ]]2`wԸ'8Qޝ6j[`cT"R%@"+Ru7IqKvV8ќN#SYܤ.5R=82DJsHSd2BDd< #̋4!]xCB'2.{p8}>C !h*|1,IЃCZqښ 0כ$>CCW?%SxJўAgs{0ڂ/0@jb_mK{ lrۙ~kMO?vYO[/xC=TC /VÀӾd}gbc i&M?,j9O~ӌYGvꆺM&"ty!L7@JZR.1VCf ͧ+!kYؕoX;9x o;}U/_0mHm;=;?Nqf&xLÃ,ByPE(*y}\Ev |J 97KHӐ.7Dg>~^ -[=؊nv^; ="܁.ػc4t} e:"kg1#L:NIhZꑸAZ\H('j"_"8|s",fϭ +j d#/ԁd,Ι*znYywj I;1 rh_8*A{{ #iVN$:SQBJjH.Њ=> @|aT9qU%k4^$.CVY`Al@i^[ӀUe@Q"񫺴P %-G`-Mj' {B{;VS̯(Oţ{Q$6 Kh[LuWdrEo Ȱoe~Cmݤ7)Q/9Øjkґ2'KNR~RRΩ$o%~\pB=i۬*l+*@AKl/PT&Ѓ(<Ӯݪn &B `r]YZC6v"9SҦ>g䧸m㠠YoQMΞ/C۔2,rJ1)%bs`Cm؊vaJU 6m> [ܲj, ?\>%džs^qȜUY8O10iUU91?sމi6<4{Y>8Lxk\PES ߭RCЂ*#\t-vnykoBsLu'J'`JW$=rql׏Fl|_ ؚ+n7+swîmؚ4VS ?d=£S5X֙=#K*j8zuy^r)\ҹ[PxªP~+*P$"cwP8D>{!p+M[ˆj(cLdZZ8CU=@Bdͩc@ ZkdXm"8'wٸΘY{.4tPW է=oyY djSve;z2 uFgld*9aize Z1Gr QsOSAx"~~wRi E|J{p!_LJ~;)#bOkfX_o5xܗk#N2K\d>_s(xa&z&DQl]AacwJp2+c$Y =չ*ןy}ɶDqOjF| K:F›vi*HUb6NH{Aǣӡ' &BԌ*SBĖ7\{Ɨq$xM#6I[|-Zs`y$n7%FztTHy!)MkKpk>!/7r{ F ބ e JiFʭ|_cZ<"Dg%טMB*cd/6zidK1%Qoɪ')+L=h)! L&vF>J|[qhl$ |lƄ,c:+]q)E܉kO27,gv M?Y;lzMs$_gl2p?P!0kd[ %E8vM=:#c#VӢ+fE_H}q`Q<'K{̞*w@;*X ~/'璑D0ݺRQ8y-1Azwٔ~ |o{T|uO7/O:׵`& q/_OJ֦.<3_L3+ BilWͮX0۱H_{eh &r^X\9tх&mܫ&3 tŅ&6&d*];k4Ǯ0,D.ټO|N~[-UHCN552%u!f;M'sV3&/9ݱP{cEEk&|qن#BD+Stڸ? Q[v{]`2gfѭx?'pWXo4ِ@x>1BIDug>U 40 Hm%oVZl4:f6,,`BITjzA ˉQeIИ~BŢ~NL|͉!0VGk8o{#E4#tS=h4IiC,FpAP'^*EkOpF\YbGYDfŦ[˪ꧼ˗8 )FlQ :Tw/_]nI_xs8qw-B$K^? ɧ9O:Ri6 #4BA~kEjZ`KVKKRKxVo|Ϟ k##ZLAǸ^=ojk6UF gu o;{gaBHkbB`{2(jg-Kj>m)Xs}mPջ!;R#f8cl%bVQ`^ِ. ]+ސl?q| 9ì˻EIGRsW.p23Ka%tH#A "oѼo@ﲹڋe$jjP;l+Ctޘ{%*e혁LK oQdV3.v%cܾ~kڟ7e 7T Â,`eYP76`<nͦ:hɛL#oaz4sä>uX/$(!N|DVRb,[8ҡ%7Y KpA0n`݉juPLOddխQI bIH9`<6AZ!o \m8Y<>o֫~[Agȷђk0w}nJj2ӠB+\$J;-9Ys2npg$33 [fuv Z (ԃb977,0\|JS5GW>PNceaiFN DUC. qv"GZS8aT:5A )Oa<.r|cEg8 ̦HF2oҲZ)T/3OX@m#Suq)急=?.`ǡ@]MN*9"5)ָҊRfTÿ%t&9-'5/JVssBD,F--fH=J 3餡*#;& 1Ѷ4rَT~ . E zBw*t=hu}*pb$:P;`h5?}]. DȍIgyFN|YK[R*+~sA/*)\8a~4QTוyU/>RlBpd(bp'\ƴ^/%E"gds*yLNܒ~E2H3 <:82-\,cQ=kO0trba{GJ^9: I\:(Fݟ},%x$@J҄9h?ku&ԙp(F$X>1Z2: {^]s4YkpR!̓ɝ؏uaK6% Лԃ y2LP޷ز 3+mJh0}.OUZٗ>Ju1nG\B~A1ASR)#ZPӌHޝUXjo5Rr)W/RVNⶖKz=BjEǴWaf}-7-kݐUUJnjؖqoc3Fؚ!WCM1)|s:e3]m|ѵ+}@WT^}{l5JIG44]s ,郻 sAh|[V !X4Ewv\RXFeH=`2N>r7w4wD"Rj_XȡUlV 2\w0$Yiv|uvfv ?֝JnΜդqm1]W2?1~ +~NȽ*K Ԛ\%=r$a+~@sWn]]ɑ)ޓT{=z,gUc|"4 J4 xMmP;]/꜍gЫJ ?ZO6e{Z4y3 u nOQ8E^)t`PuFW7pTn{ijTp9CTׄտgFw+("5rmp})AIydTV11EA?h@Ǻ 6V](Br*gli;csSADgmjdd?6y|2s"4<3*Rxh4E#NTX璷|%e17!ؐK:ZXl8M4>b5OA8bȀ13س0ZF:!wrIo9C.`=2"mL幥+?J1 Gڍe &5l NyfTT&!:8']u4ߓRW&;:/b)n#!Fy"C~cp(!g[s$kjFls^ NKFb6SoZټC {Ŭ]W2cV] t~G^z=Aq >w@/8asY1hMkCߞMK;x.q.*bM {-WGyU3W#e?va]Yqի 41iSrb} 2p"%YLt]s~sm*~"eT܂嶗qqBI6:k÷|\V BB3#tZKhH^'#ؙխ*f4c(+/gK$KtRؗ笸6n*J Uhwhu'AE8܎>5w{믾:̵sih31gjN=D, NfQf*ayvN.e Xס\V꿛{(; rNw .'/bl[=Dg~pM[hq1O '\X@wۑ#^ڷUa}3_kvHDjCc2׺._v%GFGt?*<3_Q@==jK΍WT`ĵbm"i3'{&vR>'8_10PFj,+͂ Oޱ}I ܑr/yvj (G B,'.Nmۜ)2l-`S9(>V=&wR=+_&- L J8 q`< mr!<\b=%T 'U Imn7)Q fą0j\!K/ɻhXOvD&xv%kAu'qܻ(A}FoTgh܎.5~< Pq)4C "Tk Γ) < CZxx.aQǻx#~ I;ta^D4ҷOy)5ʖu(>EWY{͜ H` :X&K2턵@u{[D`"&L`8akMm#f! ~,eaoot"%)fVsԼdh*@)ۻ—ڷ`lAupjd‹SHscX*}$6[\SUiA[e7J HԍJSu^ZLhms ?n&8Xٜ9Ci Eo柎vA0YNZd@+po _71<+U 3lw}?m*{)nP] YKL*D^ c\p1mp"1Z!3mR0_C4X:C41[9ϗ7&TC>D.JݩS2MiG.[ [vuZ3$aHTr԰gÿ*Қ.38Ґ"$4q39WwP?(=tU-_/;jfRFRl@$ I5>Q;Eb&O7Tu .2@@ GYv9H]9^$W*+6FqhP*0G]ߐU/䌑&5Qlj[6, m-B<8{VQ.<@I,)'z'lP K͚׾S1<>i}yZ1KzhR3\/ YC["X(*Μ;jZYQĜA<t_NXl $W(LA PtESq{^3Y T:9MAӔl2Ԑ÷ҘD'ty"&<Mđ1Ϳ#h#+ukΈ4bҷD8. *r$*2\v+*YXl}+Gi"^G-tҬ9J D1"PVk12rٲrL3f w PqSa=ҩiļ9!BPԐP,V+ن!ES.Ny6 Q ^FI IV6vPނps ܁M~Xr6/c N+6}i6l7X>ۧ֒>gv92`X{ lIӶ,uz27!'`KMh_ 2\䅁 uf3w jUIψ;u7?Z f e{IP+>&mzvSſ*{v{9$4}֣Q]Ѭz>P (x豆MSXpp\ӕQkױXO[%=e[pFZHER%&`n0GKHC+@esH8~ʿ7$ΨdAO8Ӑ.;i=m}zud  TϣLؓW"]Yފ""\rH s:JOjKI;N]lDuY}Ie UL ǻf'C]2q׳7TGZQ4ܼP=4ViC.=RpiOf9qgJ3]XIDc]Q`ֱe|f53T!Gl.s"*U64.~RE.ƶ%ӨCF-_MHAQ( fAT]" nv;x@m;,=?h)MX\ $̇/Λ3]?|d3vJ&cV.t4 ] ^kJ!VF:hTyKM(c lAwwYE4!RQ$l|k*p\f̯gH\6p:R ` CN=:fê(;${d6tHy \3GDyiF!gKڦ< CnU ;%}"-eT& |/ߴ :m{"}0&'qs묶lzB-DܮOJ^j:bt_Jx'~<([Ő i/tk5$Uv'oN./n51bW3Nӎe/E Xtʇ3(vTv6~pqQ0L̂ߦUوe1iӥ+TPN6~bR09hY0'9z1g$2(#6 xd;@o$$fˈ5?3|O\F s"; V:!mt_bpRg.LB[p18:Xa2% V)MZ/=4v')˜йVt%Ifǫ`ן[Ằ%k{(xVr&n)d$uO^5Ύ " f7!&W/o[E8Jj@I[\ iGҏw|Kn u ^j4})K&;LIKӣE{oߘҋɞf23p` ՛?$6AZZDmL F+aH@v~* xJ^_V^* /tT'-kf(Du)C-d5AǫW|)ʴ 캿Klex5F1w>n#[ .Dae V¥df;fYB茡H17iK W;ةMqƋo,DQ,!W.&̗ʐh 4sx׏Wς̿C6!hXC M*81$& f,3eQ @W`|F ry|$յJT62:t!{ŪU ]evԬ(?A#4ɫo{gG E_=۲Pq~@ܙ0{]'~O=[a ?;orR-OA]]Ӈ- uIU ^@SH]6te03GS<~m:<ۋ=w*)?U9rRA%z<_smM4xʿLI$$IdM xi*J#<}{(4JB w& Z<%nR&JbF-Ork d"L9կ'4?f6­0 k<D؉"Gwl*<,R]*JrX_tţy76"FBNuˆ1bg?g;P 0> ey^_% ( ޲2qs( áUbpS۰eK/y׫b:΃T Uk]8Q)ʥ‰tEH]LjQ3w˫M dI!;O+'uN#\Do}UFU2uwɐ[{jŁփ 2␫@Wgb2oж\EVm,,KtՓ[iF+0{&#a6 q'>u'j9iKɛskYj_YZ-p8hlfGYHɩ3ĥ< 'ԙ!&;Tf'Yŵg"hZ uN]ކN}j]q36\O[/N:Yv ޙ%/P@uNwXrmD"نkky_(T}Ct:J܄eqa3SFV+I_ 2f^-d]&Lbvah(3_zީd-{} J!C3cVMOT)p5x\?X MP\J9>dUpJ!2Vj`.q"ȃSg1!+zR&/ہ:QGERB4 쁋lSW{o]3${:|VTg <}JFJYu qPM•=G8aēޫN^mR<="iO*Y14 ~Q_ Cgɫ8uJ !vJ-{}ꀥ"v'լq40^Y< vF"q\v  cK YE0ɬHQF*tLJ^ |Ɍ]-#\dflL#>fœ‚ĺNļR"evl4m:?,ݯu>Ҧ$R #͎̲At5^OgC@"."l1ݮkPh"M 3:E@H%F}FIH(6!/@(R )Ba-,QWaR,E_еFX^/Ϣc] -? +]A'XiIdV.~Mn/sYB?A4 ~gFXp+ Ƽlc^R[}.i+l2n;TTpQrlCDB4.Ǩ+H bI{adTLj0sIh'<#8Z+DT2< T-ZhhXʤIjbΡ2ϓsH4k JrY{)4rRǼn} =z]ˌW Tl- dY"!9۸^RU$Ȉs JHGN^֚:B!fNPT`VLOx; d],K Dn)q $G1DVBz8#d16hs 'cbJ]&BAԗgP`;&Uf}l1`xW^b,0 ?~?<'2ďYV0ːx^z$˚™-/н, W{_'Mjzc1|o˛1 X?a;<-,Xq+DZJMzcK])8+)hGr*`!Pԝa:10@?ݿ\`0IZ<؋7vO'>PhzUқES7mYa:pX0j:i[h(shfkޥ|cP]۵0"0U, pC0AK3룪frvkNMMJ٤!o Ӗ,t$;_5s\:<Ǵj1E*0Ysj8iF5 ~ axSg2G;9Hk0Jm4ŋ:DsBGB#06S#]f^$?L'/}:c*O7-uW=|첇Ҫ"C¢T[rTOnWJk4vFvj)%lĹ=b$;#quT]Yi ]uCn#.V\MM|]SR^6lTm k-jj\1!w,Zih_{ZzGSpDҚQLHp%&M*y-ŮUv?rX{1gO4|i< IѬS}Y |r)̦3\g<<C3)5/A&#"d"ib{> GYmUs\Iz_uv-C|73dݘ_Ҏ{8vab{(xy:,$-g¬vf~,d0Sې컲; КVۂs&h@@/16"Зlw/v~ƛmQ0-y}5EU5+],u4UD [IWumB=>s,hK3/j.[]q"覃ki˪(u I9 aPAKs_T.B^覑`J?K.O1<Ǒ q3 NQӵƤH94Jkj#e 4hegԴn6[BM-m["ݛ:`|TVz%-Onr~4~S<ĊtAtZ[ƀ5BmOsZ2?,j*RQפkCMg}Gp&A?,)2&ny)SSIπ {W!j-K$Mx\nԤPgOf_W5jd _~)) !IDRzdO0|S`rGI2$^dm8_^!uRۇ-?ӿ3㮡3-ږ{P._=^ai./det.f$vo h8Wᄶ>XTWJk@\쌦+zloe[{l0ac‡O!(hݏ+aiXq4Νme Vi;qZ^N1)R#kgOs :&XڑI>!g<#:'g̽7qZOCw"k>̵ThgDJgh),fF(?{"[t{T֝*9>#뿽 7ȕ779eϠփ,jdqïDbqn_V\T#fmPOWU TG꾴_RP^ey0gN4(I>:ԟ[4בZHq;x_^\+鄮e.7X)&C a`u 3^d;yvAԾxG%.R>R]*[cMkTW-ۜk˲r靈"ZcP]-ƫӖk%J0xI&1ۘx$drhmN9 "dtҖ$ ,lbLFk: ߃~;O*e[ ~I\@m*A#!g֙;W@͑ L$^TP ou Q|zّvzf WDE( DOF$n"|/As5oMeјnkbͅye #杺c eZx+;aM?Z1P-#Mdh*G!vݞ/{t-XϚT r .RrA>3]\QU'?4Obt91nDYVlp R,"P!`FOII^ʒ%J=` MS!.F#!N'-@OÝ"1-.on9kɋγ(Mk|P8faPWv;㴈~O"Do񐣶JӰgitt?/áu@;R2 ؓVroIx( FyrͶP-R*\܀塩A"n,8 `¦v;srd2m ;6 "ne/c k찭įn5\Q)J4+f3*3^oʥ7ȓK|s|Pl ŀ1(KNM$ÖW`歑pL_{%Sl!%mX=)&g dkF)/8n֢Z*"D<2oʧs֖6U39M"[T4\l 2c+@ rv8o(U-fAYV=t+)Pu GxNbؚxqPעPD;4.-ᘏ-%9H>Faqr}@ Q'Wb}Gl=0&H%v%XVeNZ+eZY2FNR)]|11DD$J:йg܉nL56a"- ܅GZS8GSbDςo^X ՞oWHY{yi,ya 42H;D f]k. o8Vn^68ՙ,Fhݶn!-=![ bin7)|h7S% +XӐ=0fCt)L(H\oЮԀV>sU\H(Â9?P?HbEDp_ZG|F5@6:#Gvwzu'I8ա:n2nn-ߋf;#TO\<`keS^"eБM`V%KwjW8GPR}Ůy֝u-^V7+bIc!8ʒ?//LJ }kP69,p(NnșC-Y,*CH=\yق6j4V2"lF C#Y$Ҏe)%5(W$62uV'$"Vu\ouZ8P!v#k(ӳ.>0{bCεk$) tw[Ǡ|-92B>y K`lޜu\ 4 82Eoxފpu`ڢy!yeuz ؟z g6e;XeL.܈ =\Kے :sapW3hyH,||aX*^0Rjp7YZ 6qF%Ǝ8jt'ϭulh!}t/@Ԩ{a:^V@4!1ީ`$z+少 +XI]Cy *.6T{/fDܓL8̸ӣqv++0lGdod=/h𑋡2,fS&G0< HUo'ᥧUδt? DV!5,9Z d3Pi'}Dܱ1p35:6<>hjjOa8}wVlm2kւؙ7.4`OE_#M3Kel !O$"8$e*UC1犒3\Te ]DZ[ Ԅ>$m&V YzϸًZS7R~r@[9qQǖ1СG4@]W@g6.=[VH}ǘdgji7++@EB!yh[gM_'UvwPQub|l5k.k!-xsǵ8ÓTk@1x8ºss#,7 ZZ_ÕZ [8BlcqX erhJFY- 3忑崪fl╽֒虿ů2bڏ =¤fuo!K 85z'!1lT'uyҷ5n804~ݖ_MCrg? י 9&>i(h ET*` O ]o"%;9#~Q0(FV}>++>3 ^3ݖ/Oڰ.Lsff%{‘mC$&mX wW+Pّ#oBLf~Hë e{c:(WR6(tޕE4Ÿ{OA?!#Ke'C)@A,ǜ$61$/>Iri{l$*ѳl18#;0oxdѳRaY!rJw  3FvYe;Tߎg?6ݕ=\Ruat5gfxU* g >Knhd=VO6O/E@g]6y?ބ{%.5.69rUW#8FP/fpJ RG)SSH6aKXRkpի)O M1kѲ{}{yw'0l2ADĺ#*bPi=ڌ);_<5$kM1WkiP}_Gpg.7Hh؟JK.-B*R*eg瞃}杩> ͻct[xcG[49[{BEŷ>;p0V-?)uYt\>NvG/(ʠwӔ_o@¿xj#,zʿӤA3k$+{SFT~ɲ$'tr[~Nww uTk%[".1UST>-V&.8=Zj48li㱄PnT^N5[N4KS1֭ Fu~?{leItrM1]쵍ؠ=|ѐn!K}yq hPl"JCLp ^EfܗPF;P2N3*gupxJCpMO ncCCJ"ne+a2TwQKr>҅9ވn+j*^]UEI:T X\vK%|u m '[+F|bJ]6D":N\ e<>ai<}(w7.TҷJ!)wxTE ,L=u@ac?74:'.$94ᩡ̨ȩU7;h\&C]=فz?^ ;g<í%ZJ9pHRtǷLH;j!x_SFވWCyq_גcӘ<븊ڼiϘJ.ۀ"ޛ .Z(|uoiD42tN3.wZyL7 8a'|յWpxQ+.p\7`cDӎ>1eOb8M *)[Gfsmo$Ж4kw[aa%[閔W,=}tcl-䳚brLjZdc?#%[eU라g$W}]>۟#>\/f~c߽O֕3gvxhDPgkQ};[%1EeK!SM,edոV qI|2r)2^"5pkVLKY'#m rH4B>Lk*yf^)o)D=hwh^}ǩ5қ}$Ҹ&zHz wl雕߬/%_eȐ]ïB K` \wu^sqY2'JL CVނ4-ݫU!·egXRV#aڟVxjW#hKHOU]F)L,$H/Rc[)}c1mj(d" (!$m7v;?d~EJ7=m>Zff. ]^>Vr"A!ciJ9 z"vKB(*#z=.7-4Dl:5Wf%R[;F}\/do%T4L!a]K%mb6%#f<@ZTE[w1 .ik܁@,$G0/Bxb2A<2\5U ; Y>.cK'*~[b5stxNcY~!EB!XgПgk$^YmVY@NCT?AwypZ,r[ Ǐ.%zK-8n8(0H#0L!xu1.1'v'3sHڛP#cQG Jo}6#g.۟t}{^@bJgqiy0CӦ>Iۢ ͽ ,K5m g0 fHQ9'{"^+DYj>U$^qy+lL7 ҥY jm7PnN=zB˼ږ5IKBo$D5.p~EG>azUӀmph^AThߜ};px\D1SYͽ)'s 03\ȘmV) E^u2esˇh}vq}V {rVÔ*v(gSz7z&Kd+Ms-2̧+? #.YvY&v!JfUܮ,y-Ѣz0 kXr!K<3v-mJI_FyP.5q^bf3su[U)ޓ/)QZl?GSYx V$}qLF#HU9驪@UmF]~Pa{"wԶ> S/!42Sd}RA/AFK\_O7] pq0Dr++̓Q!sv>d{N% c a!RawKni"ӫtF)gpx`0ɎóU#5"JiZЕVl-r];_Oi߃ lLpJ)]1frDg*hT{uR^u+iQԭHyrWgD;sSUɨȠtYq?G9lS73LIT"8v?It Dtҋ(RRyƕǒc%xdܓ@+KkTWmنBԞU+Q@ɀ?i?Ebf@u6#`O--x<:M!z[Î~%C†p˭1`ǝm4Moɳ폐tN HEyaғam0::cx95y @cae2`if8"Gna$f$ٛM&<F;I{: c6 vS[4»Nhډdfn݁Rc׮s(KZ{s U^[,1h{x΢2̳T" n-mITF50ummG+IE4v7x] lm/w"KkΝ^wW' AY=;4 r\Ku= <odZfbn@3AoӾ][c&z`/ῈVUQr{NRY%4;'ֲ]ޱ7cJW VTաA KF0l"gjM_ȘZp bHVĽz99we&$Ewm7OʧT=E=?5/*ڨ+d T(,+8GE~x,SP %#$8D+3EER%,lRuwQxyrC8=ݸ d̖qO4T?! ?-L72X lFdEXx6B)WGCT݇b;z%$kO^,a]R$EPoRٯ YRەKW%R>=BETz-N/ ޑ"+:67A]d"y5sW v!p [za V 4G|5@Я3F=Y 7\d?(BU AOF]yTo[fpEGHH0fLn8%?x t}_?p'}Ч˩6&utP[*cnZ\z48ǹ],d~_h B~6rU ]\]4O9@ߏ1bVi{Ip $s]G_jٵ3O3i?eۅForYzz6_ZaUإxWO3[ɦ[ p]gӶF~u}) f O;Q<ۛhwd^RX 'Fj._:.)9e Ct |9>x Y7{XHOt, J^&;,9E_ )NyH&x6<#*^hk5PߵnW"jU rWAjkS$mMJkOF^*.YƂS{Ů89'P 0T_mI^pw&q(Wu9S0baY轜=΢QmGm[<i7gje~*A,hDZȁIfۭ`V6(`i+i"qm j;R@I9[\HD|ٟE- s KkUvkf/VxpeKcDꜞc4bg:i"j`pۘ*9](=tqRqP'?6ǀId!>xXfź=d@6Q L熢!I.,Fȍ?䞺R~JՋ m;:z1"LAnkH(~GCCzM8p%O>5vI"1eӜ! j |YFd>.DQASU2<\Ѹcn &As>F79)S oCIyS?'KwJoҍyra$R_ſ|ȭۯ=OVN7J)@])Q89RD@=#B Gf3f0tv'Ck2Ģ1t'{l}EZocZaY1:c)QrY0#q<HK 61 9Ä4T%YØL8 qU+V!'#J̺Oi+39U75CmbG3_=o}wjѕT!}7 '92 &A̟4V$crH{;H>y i3W \_fh&8_{(}Z4+Gne.e}Dx>ELHNH:]eq-G-Gxf˽[VA݃U5l{NK0>=23a7] = }ӷ'+߶ˇe8߇^yKTWܺxk8)DfyXJ &C?'LLf!9efnoFwG'0DΖ;DШRJB)gW+lUFFI>xsr@SpT:܏aDnoެyaFJ}#ːnUO/'ǁl*!Ri!bj/֩"u1 ̇9&Q8ft'ֱ' =IA]q,1]-n%J]dn"wP60Zm"Qԫ KBRzb}%{5 m>o R@I{8{8P0 G %FN xƩ^md),619sUZ0~%_@:sy7_C:R<\L[~C73!b E$e8O[oP2{xRuOKiGM5<VOqLQתIN <_BzTrbe!nI>Ռ-ZY6<1M "+owYS~j43p@gdx%/n6~y LAshs䊨|Nm9\#AXBVSe<@` ~ (q$A[vŐ :ԯ*|Q UV1hԧKK8ʹ#կN߈_#Mܾ Bӧn!EKϓƘ]gS= ꬙:b ?nI!K]1!bXFQNp¾gx)ZEu߂0 ]%J}&VXT-?[c7r7lg-j='.䡟y\̠ +{/qtxg`4ܱX8CU:>)kOh5ynDjC*,vGĤSPqBL |yMN(țpa< e9iDDNl/tw۪e}؂/eiA4?ځSGKYy80[rX'uΣ Ez^ X1T~|ɛH4vǎ}|uϏd̠HEq"KMrM<^7DDᘑ5g 6(?{t.$+irẄTnq+ց~O$}4ިk1ezP#3C@BζU9ddf!,*/cΙd*RI9^[U[ g;2:O{-ZUJ._uҎ/cdDό Qx ;p|7+uHoyd宱%уXDH^/C.m!-?e*MV p>Çޟ'[}S0t.{?TU[yȒ^¶^Ek?tQܫ{; T"ځ&M]ߛɝ@ivY/wܥK|ʔqjp CI!}sU)I䛍q箦s<к)xVbrPn USz6e>9=wsjfyL[ʟ!3]qj'Jǽ[xSt^ N$:;0WZV(/jw;omtxEvU 0$Y}DKl[GHTݡ$ڙQ &|ڿS3$"?à@]7 'sm'+xw¹O_J iitȘqH ϱ`Jӧ" nW-?^=mvY{kEe _ @(Odb :aAq{y<72h|0 ĈA֪^s3 (>d1 sL0A9;K0uJ,^ `coJ.,b *)ޔ:}H|< ͯʠAPkS-\x+P|D#ǑZjf1QO -g#ZwDN̒AL.q0L3CD1[7x4K ~Gl{c~}u}L$t}AJv|3j=6K&'vIQ62VNʻKD=cE4MT;/Pei7w5~N9k+ń5#6*xa jhl X[dlW,`nCl_q%C^6N/N޴^7l$:c[?Fu){ c Ӑ.8T]i1GAYW tf1c-=q`@jvQ"h=WQu(;.o>'J [ jYz@K{돺L&W *Nū1#"*N_\z/H{O9ߺ&$_WczQDU{Bvӱψn46Uk4@鞡9vT2]DXe*dE!4.DjOL-s2 [燄[mZgTN)5m`: M8Qa&(_noqi'qn4m7S^}m 0J'5c+yc0`e-Qu DQn.\%e89! {0y )fS?=|wY2<{׊ o[L=6x?`{|KAW+ⶑ"{m!ӫF>a̷! *ukA&ޔ*2~,F1dg\C 6l%6*@rq͒1#,hG %`nSɚD+q73C%l~iNuGrRxHɉ ZUo3 ⢖i }H+ O\tX|²S{|Oᙃ¥e-y(W eִ֩ (5&(E'i%V飠cI>?^ ʟ.f\BEyX*o)T 6A8; m(I<;7;o``UIjazАV':B@[:Bng> c o^f}Kwy򗨜afO#7F#i\y ㅽ`e-OLMb6El1>?HM~Ы+gy~IH3'a/z#EVfA lExyZ"iGIPS]ؔ)F1x$eU?~EdOh=B9`(uHWK>v &3ipU# )I99vl5`$L .V+*hL L2_&jK|W2N:ǧ3sc+u1EsY~co, Yfc3ż:ʮg};E 1]@Ώ50Ad~㸝؁v2n8JOz!X.e2 /#6k: xDDWፎkcroKeUy˪]Vb-9fiST_ᶴo^$ή-(-sx?RH}5BnWDA?r^Ɵ3+9p}Bļ Yi0)vo&P%gB2Vm8[6b:w=M&"RԆNGqܮg u&53"~Qdl[$rVn-ڋ^b4&q ӹ:8~Y1XU ;MA38.(Gy;c\:~iw&6LГ&>u73"]_.ˑU:(_.E?lmRRRdRKa" h  q2(X v1p8sjի/A4'`?1 Ln(ʊԬt^ܵB1dǁ-Nyzp)$)պ g9L]޻luQztӝ$ݜuL+R2hڽxf$6TNT0g7Q3m(I=i3 |a'ayםcx. 19DIX;4$3з3Dzx<'Kŗ:Rp_=+ f;rQ~m _ 8]eCqk2[|>Mz5pP5f!spjWq@6LZ؍ZR+X억(gW+ j*.K|n"9,x.5ًlz\7%q2J^L$(ׂW F#X& >ze uQ@TD-v48צYns'1N8kBj_o/ds|=3:j̈ G(e%>uA @({5ϡz4Zse|L;5fsnX-Uҩ]XiGE o>xdrLg Jp::`uO Rns.$oPE,VNs$AUOƹHP,M>>b-#;D(HphƤg$['ob"cjb=~ Xrz$1ux|Q<˪vsקQ!.*%`t&~ L|!iG+P쫛 ^kXD{gL7st)= ۙ_ <%9Ɠ}OaF'cU8sJ3* @r&1(&0CrG*5mbl֖d/E-\-1L)zDДNE9eo~3|pOB:sx~Nb,}\gѪ^ Fy4GPѦ %_b[LWׂ K'IVlMZA?|t`F< `;'/a{g35hOaf  891aA],(J9ׄ8x+8 )+[6%QfTرKQݝaQ~y:ZǙvﵴH*bs-%{nv+&5Y04s"fjp/ob])vޝsSj썣zn1.B;z9A%HKM;Ƹ&jT{:o Gbz[ؽizyAeCNn@)k voZm:K!0wLsmr_0hcLj4f<6kb,+ fBJ|+'ay]VȳS0$sYuV+bkbZczsD_ZKKdb膠o? ![ɛs\O;xW.*Ռ<9׬5)w̲MXe HjJ?*a5jKQrqW TS g{LhC'7D]pkB$IJ3A1_,*<vF!;кdG0isK*\JYtTi+֍z^2UGֲ xCZ)oX{RŠ6Jks-@R8nbİUЛf8ŹSwz-vjFJY47R&*q6'Z'Gx( Q fmҌb=8uy:^5ש7S{ CE֘.bۍ-)izop!j1U(~H\9G @޷y1E%^&ţ&+1G{y8MwPG)\Qj)&3ͬ2iL[J6xjRhKJmJm\r] rr#w@ؗC)W"b4aPbuc݂cuV:>[]l@VxMຮ2D^CAO6Ht 0',8G-Cy򽦀,4QAV1p9n} J$u1EYyfZw}|[QUQJ}AW|,>@%ͤ=MxUiXkаrALi=yc 8Nk !oqp%דc a1:&K#MB=cʕclӝ+-`-ި 74퐽.5@Awc#RdPmYqMQYs^R-O4@VTM/({ 1+⺸KnG:vLRm"Jd3DH}}zphy|Su$ MwEp+sn.s S8  ǣ9T$ `u1KD]@'ߺi7 1<`)6I_zǂ{vRs$Kp k9WU\`'CJox]7CHĦdcO6j%fj))tjHLmzK#Q ʫ {.(z;b^&D{`?(euH&-.6!B;,+y{J1y94PWBg]aO7xV$UHWB]L LH X#R*!Xla煾˥z9T4k}!\tl.\^[vcx$heӧ|cJe!M})j^ pw5 j5<m6߲UyD3~H^e V!-Q/?F,6Q&-f3cS@MäGha&'`r !fIiMUO4O {6x=^' &G k* hA,sN ^Lgl![wJI#hz:d5xI7W40iObB] 3U3h޾4ys/}[F+en?"Ζsr|m{,=86a+8u?? @jqǗR|3s45v W"6$Zv\'j$74& ʁ |o^Fl(NgÚOL6Gt=<03t<瑤fbŧ_S#vbJ0NWIGHa f5Yi:$DU?Mu۽~.m@3=8s+5WFD\kzs-j,A_4 8= 4SG M/gïy~m'neV`B~B\) =+aR)t„pfM ?>`f=SPϲ 7dnuT[ข[r0B^MoD-Vܿ[99m z2s>andM!v .>G*+wb zD%"; D՚:CPh߫Hl<}j:: $ \GMy,F}lྛ?i%c.G'V g>%,cϻH =">mN_+%gy^z.,1~kȜ^YQ6}(ѩeꗞ*^˃rEOK3<[s;IqD]Mq l>f2 TJu. :^-a:9Eye:(ɸȵ"5nhJ3!RVs=r"X e= g[.3xayMF}:ƚ+!$™%*ڬz(NCt*A׬ۮ՚.Uqohc5H(&cߣév 67+,T /Bspj`뛺 gZSUe٬^@E6{6ԩ2GT*Y i;W+1.7qTA@8EI )/%{V1ø>Gӧ,&A$~U ƹRT|W[&FØSK8Y1j'/Љņ"I7^]!/ν72wMbZ 5^rjX1tۖJE$q}hVɯBg^UAwWv24oeSȁm|i@(#6F>}UBHD!v^F&0>wC@x&.z[/PDϝ@jA)H1xqR#%clP&y1^mâYy:3&>x $ &2))0IVVHnu˙ ܳ}|i:FZO&K[<۩^[`-d}y%8PftF\#?QWV/f#|iK©o14HU9D YĂ);H&K*㶀 K<Ӈa&Qx#^<>Dn/yX^ Q}B:&űxeX7B*Z_ %^0n0}ږbZLMdOP b0D.Bg\O D>U#x"WdFb!8Xl8z:A evcu^yg Hń]]6@,t 'r0qǾ\ bCܵ1wâ!u3)zP0? NiFf.#܁|-=c/0k&s&ل:'YX$GK7X?$slc4I`ӛjRIFڊqK70W{/VKƃo4ۦE3{*7l5o踭h]z.\.8r.H|IAaH<$ .-+mꩦn;#SbrojL2^ aD}%1@L*ö.ԢԌj c6V&fŤz9Aqž}#9{]7pgUڔ gc&XΑ3c}h/ibF*Jө8|X:'|ZD'{E dږmTNe-NS8ȅQag.; "5k/JFFSEV4Zۣ "ȇ$8 HAJEٶsWy+$P2N] FcLDƬVݸY< 4(8ArYK9Mebġ'DruK,kY=_=w):PS~@gy( d8Z#84J@}7º~Rq#u YiG k%-Ќ"Cd"cF&,H{ieWX+a:nEv@;u>j9&ݒ~m^V wlRXݻ9zJF'5>@B xq$DcDguۦ,t;X:ܝhДU ; P(;@֢?:pBH;}:Э`רYꩈ)$jgo~k̹ F#E6`ITw2Pd1LRrŞ:wz֗jxdEZ}]} $CqfMAC,Rqmb9la.Jy{=wf"}XeGzJQZD͋E h#7Ài` {b7v-xzL!mmc0^M8m 3cfwbjVT}=rt8 cҤ2<u?/94g_wY:W I }wjʂ7sލ $.79Iv>JV=3R!ukEtSoӣ>U 4/+H aG*09;sjYK"[(KWi[$gvL3]A|a^B*ea7š(\,j O9LrdJ.I65 NJ;*{XP>uoWe:{yMp 2?h,4>͎T e>BA_6s8T`<FEw$,Z}-mT#5@aG o5l`7_/%m](S%h;jGylZ 2Ln>bJg%AldXv˽0:'-/KM{t\8AKjO3ӂ>X2)lQ qzgxKnesVux4~v' e?Z; Fd'hJ3 IeI5*0.D?Q"\;O3[ Vmǚ!Xm ϖ),a^,^sGM{׋Z;YrU!9!.%|;S.oHqVבgRإy 7̖"/U-k{e_XN OgṖWz,bS7|jF{zM^m=)k*ν㼐Wq7չGzx 4*RU \A.;Px}brP]hȕ=M2@Q 1;؛Aoi [jKJl0YN;M'i`=n}iĺyf1l @d]^p0!|cFz„%ۃF~哱2bw(_e ȫ:7meV=gpjg^Q<Ѣć Js\lI*?TZرC2 FB$/KdnǞ6&nc $ ~N*=ǐ/6\``~#M7\rԖ1Kîmbڳsm@~Tz@B"'ٙ8 :zL A!'ڙuĻlݐPn*FT ڥU lx8aׅ@ǩTe]yC\v*LÁ Te Z^?oD% .Reoh=,R+Zaڠ߮#FǶ7I,:O X_Z .ҵ~{hA;ᶝ;S`Tk1%,,Z* В~:D V Lw6tHW^b)u֙'kWY9%W룘Or)IPu)WZMJ`?O`]Y_DkvUXNfqc5k|܌jbk/wcumoFU3.Xt2$\#uC`;lKvh6qHHh$CʗH%Lwޝ:KűLuQѝf(9( | E)DWI1l_<(DUg9ta%X3? $y`0Di6e,d8I=8d B Y3>#]XsQտWmH81>'Y}I,0! .rs$=gppc,cڸOcXT9OD-apE]b:UB&l*RK vd)>y ^ۍ3Ʋ> CV,~ɍQ+my6Ve^᠒wIjx㉆H&kiIt [@Uypk¬pk' ;&&y-11 $MYp6[ l,U/U_rҧ?C[X,<f|_|4Tǂ\wZktV ,TrTQDIJz]#ZexMOFzz&u|S5jp&JZZ}٣Ǵ&V*_o>:x\U|p(֔3EMO $BZLg[MĜ D␲ Bb{n|$L{0˸Wu }{ܟ5/uVBy3[w;`hQ TsQ3Pdی2 !}}HRȡy!~ QbNb|6]%Í)&=L)>ñ)b:,bn{' z(D#4jkܩ?σ4allpK֍^ CBpNH\!h4> @!!f-]e}2?C1kC/ 5%'tJ f<7F_.M/j+qgB-V\X.{<$Ԙ﵀ayJ Կko&< :R.¥+jx)ɿ6<$Yo,K*XE$O!UԂݣCrQ.ctAug6އk ؜ae9K@f6`fQ%Lu4MuHAUJ8]$*O&]¡PZN9ޯ 5bx>Ui V#SO^=ul%LH;D ۺ{,~P7$F/~\ 2DćxT;29偝vu\9h +w#}k؛_NNuc{d CD3"ʂÓCSP#!oS+dS,KZW /<%dךp| NV%d7BԱyp*\{=ʝP)'=M 2eG LR8F]1)H!s(?BPuo=fuCvA:qCC`:eeY 4gfqf 8biסrwyh1n}zѣf})J`f4옻i:Mҡ~8Fe5Z-KV`3+VmvRgv,Ki0S&+@8:RfL-&!=ӥ2#C`D-ΐ"&[+7(3dNZ>S$ 8Hݽ +=CmU8l+]J8%ʞ)D,ɖT}ںk (I` (0)'S9OX1: #X9n'd>4$cgA}6'@8ё ػx >qO;,B6òȊE{Ll'LHET8ק%@,ėuǑ~.0iiΌ!YoN+$i]ՠwA9*X̑CKeq~w";GaZQ@Uylk7#ߦso,i*X+2 <m2}c^B@N%x''U i+t5$ES&X6cԋM3} ڡ%+c){}4%Et 7_G訹,;h#3[KsE+ jƔj_ח v#C92)x>e5sǤ&Ds2wz5rfqqlA:fwHz(g^)9`v.ǘ0?ŏ*^J,ZǾ dAܼ.]6$ YD3^S1a0:]P4hAUKv*QW FVgvҊ T ?WƼ)ѧtVЙA{6li& :\o @e+ZX'00k2l-j b!v(zG)R;!moU+Sc:VFQɠWuBeN"J/.ՉĤ)D`'uՄ_;D2B-X\)&org~X =*'w:[؉@-GAJ ݁ .L-l~O3M2MMov='/CIݘI):RBFRH(=ob ]?E! h_s\Va鱝' sx|b^s`7x>f~PJ.'0@vnBL -q4&܇+&xU\l䋃> (x*xQk줡KDqe8wgN| UeZ)+\6S"Wa&{'y6" g>I^q|uv?w}'xU Z YW+ , H_ \HegOv?:Pʓ\`iaw+%/*$xϓm۹` $ݸXE1}6Mٝ n2 pn`(~gXwvsY:ճ_ǎ|6#Z߾r@nJ< ;9ՐmHCI3o=C3$]su.6+v(|nC&Y }D)Ff2'@!&ȡ$/>Tmsƌ8So'})F܄\C j|% I!x@r2 M~5viH4ϾIx8ĭ> v6'aWU3S4Qq7=cF෌ؑGzRwwh!i7N8lXx+~ yF)VF-T )`ײ{)$ )8vih8 X$/fL{["׶Z8k}kyE/YSC]P{5Ġ/iq r oi!WvVNҦR8=S2TZ 7HԾU̅@<+ʾWͪn+|$GӃdݱGS/.?(zhmF*p]ӫ:Of<`c1IYaWLGr(\垲$jvfժI1`w%ޥ mSb}ːJn7z5Osk5^ʑ\h[P%]+6Z[-с2X@>mL*&yqFDʳz1 څ?`(6%>7`^/ZTQ?|MUqqFJFڷ"[UgJLqt}eˤv' QX_g #[H1!K# =ad`o|qPqcW.>kcSW&_2 dݞ^o2UvqͭM kIUZìpw\5s<ii8G\ ƻ!LwqU@:&A!\܉_*y$f+Vv8 3ꜞz]|ϋQrjg90ms_~K |`MܯTi*Ǧppyưo Q"1Ɵ_]fBژ؞;OȔR`$< n LC8"Kj:GV,#4XxωكBuH;̕#+BOÒIM{<z˴>Vb6T!*VDƉ7]^6=./ C ƇS^FPNY92~3-[-"dO;PWf39{R'oLJme>êؿf *acv /'+JҴ8Nc]؆ţݸh[=}ֈTE@" G2%HV͗npN4p`w!_^WXcM&$ W+wAfXR̨:@xi ?|vIN>H u1৮76Q:{JMac$03Y,<ډY*,COHxbO%Ģk >D on ĮEߠ4@qިO,P5KnЌz 줍l5e"q8W / Q/R2mJ#TsI@\IܱJt9*niT\N gljb)-1e,=s=-N&=CxiLF]= 1CuI Aw;yup؎ :bQ,'u?$̥Or)86F\\)Qp:Qh¤<19@H.?zL΂YCPy\AX"WE T-}fUXuy/HD=sZ]22:u%!k]rKv6`ћ(E`9:TFhV+k{!S{O*?A!|ɫ5\|5ӨՈD^?ô:``;s2Cef.9=."հ\W@1Gl6ȅ_gs5nP8Ɗ09YAxm:p^0PVD!o@I\$ŭFeJ=1 H2q4U&,d@߯ja3`.+aV~HPk*'%EaJaǯm2<\+CbZlH*Vb*׻ Ҥ3V%982,A5dyG쓪8eʐO9@ +q5h_D2Bxda"A>3[)bJ8$X=\3wτ/ k$T`Pő2{) J "\]NrT3IX<8^xQ9 I!UBRYp3](dkHK8X; eyk;0g#:60S(61 Qb-QD}c$ŒUU|ulV<3e_2wAhX T YBÕ {BJNCA7}YxV*^V @sĠ}foivvX}駉'~9&H߇9$A/.Dw:IfRHu,)*!e_^ׄH3V-5ݭدup5e Tk5Ҕېоb muI9r- jcP abz1E햼Mʁ@Mr׭U m$&t,2 Owh;[ (V>^3DW'w'F^󁬹|"IraJpըX[o:3ٻɯ 5ZRɅܜmQ RS~^ 9uIcN:QC=PӡEZ6 S`E|76+K6dĄtc4yodۆd[X:Gc_l`~5WqAC6^vkUS@KZ1&IN&1GG0$a0K *(rA 3wKj&hc3zUI2; ΈT__(DA!kaHb%cyIŗhʪpdE_#RdAr&iݧ̻+unB{j.3PQf++NQҫ$Q㯰:Np!eJ22q7ۛ?޻_߃'˕ Eh#HgS4-;F |:^hKM-˥㖙cÎ$!ۋc 鼈DLvN1hD)^FJTYv-p 8n2zNC`p2;zK)/ߌ j"&66櫢1DU T9DŽ/".4W_kuʇ܁6Rt&$Sعk!hJ`YPvOs.H@Ɂ}i&T羘G?{ 4_,)ՕwZLGX49hItSy!jkpG\VN(=_L GRLo} = 5I8PچE6Y CΈf6!x؇Mr '۟y:̰.DFyL\B^- zK-ȵVrbfnHy(ڨ97IؤQT[D{&H(J01.'a먒l&LU H4 ٔy\Z%䝝3c҂(| Kpu8KgL@f+Nɀh,S_RY!%n S❌On5$@t3rrT JÕۨujmW7}sVS~R UOPd>n[2<-k!TӃ]2Ǘw1q MUy 6lbS8:3]Pu,S['1 Vſ}6߃/P^^lEhf6m Zy̍\b"3O-A^vS0RʹG$ 7f7 ޤwgW9͵s@rL`1Z%?<6q6jH\t/;nyJ *͝E#Wº?|q.>f:=^˞>5zֱhİrp?[!s_Y&8R5k'TG÷IsgɶaO*ϞBٍhm,qR֯:F/]$X['Mhan*h|r{Zm,-ѭdw#<զ Vo ~*mW%%$B$Ilu қ$L Ohy:h"PiejKVS3_8;\!ϔ8B|k7*h} 7cPmUA!YSRJ$NfXܑl JFG0Lsxik46`Tl8'v~J`Vh 2!@gX. >A@`yڕ7U d7X!"?;B<_c.=MTli|i@]` ':lN`kVU/9Y$q-V^Cm#t*AP+KlIJ;Q3Q!`4.ӑtX)% d*Lj^P&J8.1nׇCVf6 @uK sׅA }XvsyGIMBۧzMdr+&9D<+&Nn?<|jO +pbcU kRyYpx F+ci,Yxe)cuNLץe<:x|H/k&~(qӃEm@,LrN u< >ڼSʰ7 K3Ƙ\+$6ɝb*ʫo$]da}:4xCTS$XxHN8E&B Gu4AP%k00aqE/1Ŷ~t0?+\I$ wB7n>ˎc[*{=(t-YJ%r-bvE`yv~FyQdTg.<P&ǫk0Un=$w;9}ݮݤ~?3g,2&B9(ktl ` ˒P$!*t.쯧;>RJ#b(hݙpR̡qHQB⎵;9qS:,b;stKA?Y~7?8^+?{d2az}c&Aѳ" !C3%i\(%ť4Vks8btIv|%#3xT;9HC_sۛʖqk(Lf36:0Xn _$6?x ihp"R*:p2@;SdV^a} Qt :^x8 za:5@;39;ˢ/]b8w K!Sm'Cz9ޥCvw[ۻHBP[/ yM 9X2͝\qR8EqT8s_,TpMf>R0Q " 0ךd釞}Ck0 R2[C6dkvEF'݊[zx? lc 3 q"Mw^0\ljH};(/ ;s=}CE6P| ]3㚴7q oꮠjyc98ϊ,L2% E!Z[Kfzl$(|SԘo /X[ax~-[KA߶Yq4qy}5^bJPg|7VtF+2~gLWJ%h31٘|s9x<' SK_/\T­I]?Ў\=2|(_cQF"/hŨbr+F /RyHN5;: O( ׎a[C ]^Gq[_cy7T.jt,}KrC;hN>wIK%#\CWJ$OwK3 #lT|OFB@c8g^X6F`gVzWAI(y~Z뵾m!Ҏr~8V=Hh|\ /eI[`.$踢B~w5 Ys d&N*lЎ~٭;fRXNs*A|5r[e/g$N\3R񯞅R1*;ؠWҐ1X1jpr "1Bp^(VzdDMIi6ؓ,iQ3MޮBVE%4m6yؕ~َbs+2rH[h&pf+:=Scp'̦Pw`C&{w&MU{ 8>)93ؾ%6H(Tgv 7f8CHHQY૲;6li2+ ls oúNj@k_>*-5&(Rk^f(⎉,Pl++z>~X͸T@йvA_G\=Jv^o+x;IP촎z4:Ar'uR^Qmy8ĭ/6kT}z{̘KXU.&ZO`iv~"ǤxuEҲޝ)8Qlz $xĭאI)i<\S7ǠUgۘI !)~q7LNמw'^tZJhP;TZ,-^Extriy 8d QLoGcK((\o$O$$ޫ/OhTW~Z{ZMLM}Yog$] KyvMTB1fH&61"0:la$W=nR.~(RiXpK\kmzGl2LjҞZ4~߮Wn,dz.,zӄ]y(:ai[x5T]Iip(YI YZkG[zZHJ ?0cƁa `?&-kCfiTM ^= H !:`g{u,bKj-ܲ?zk;ȲO:,p \Btjh4N@<g ePסRi^|c8"he YВɄ]U6OȄ׭01ro%:uO`^'XoE&k<Yasa@4)ʹ]$[z2Mcsg)Zr#,O,\Dl$u.-RH^5U͐MwPNL0/Xǧ+0Su}wRlߩ=6&3Ę&FyU3&\gy)$[.?$ Rh#{4, ? ll ։uD9n2lUOgo;)zJ^Fw8=&=X ZFq)h4MMb]E}# KԱ'4bggJ1PWzr8!Ú* SОdkIJ]fG{ L2~,3Z,ׯG(FlcԞ|և ^%olfSJZ(V5دl~+S|iz)B;9',$!j#q0ʚY/ҦV2\4^:4-$RM`$v JmcH,m~6)*+p;6_A=|Ȝ(RT5cAbZn*\[;Aj_WV #VuzlDp[!c?72$^ 8~92 Ⱦ TpE.*3P2c9*Q}&/lﳉf :=KXUw4Ox~ЛNPsƗ)0;~۔("Lkц_$!.ADZ&|j!`[bxrmIm'< GgpL>&TQ c,}W6kY/N$ܳ<>K>!]tRJtuFrdǐV?>Y }lKh [Whl'K#N@%I?v#_:>?V$UPL3ik9cvKma$]dj̼hqTE=C~mׯyLy5 v+ZC HWL2XG6+˄|? hq0aW6ܡQv~%7",`ljN 7m'urS3Δ['r~d+Z(h(|9HQA7/"r#!V{'Ze\=2K'L̞ f W0ZN9 )ߪOW오h,l[.t.zh{ jn@hp&S-Xl0Rӵ* =(]HR RniWG:a(/UN#u}/sfԢuW >o{c] Xń=fY;-̠PzcfPNOAA3QRi*Ԏ€d#"w&0m_>K \M.cS,^Ί;d G; #& ]Wh&qY.^ IsWqB^N?-npHu،%=]HbRod"o PCZ}BʞN {BS)# Zvsqfwb$thm1 `w|4yP.x>rbfMՐ(Ǧ3`YKxE<nٵ7BDJv`e<Ϩ`YMOG5yĻ"̤g.Myٴ5Iȿ⾊j2yNNf3:86ʂמBg.jz\!==OVԍ->ZX"%ic%:z3gȮO\uX'`tqUVMUAůyS7R2`@>/c]oVZ6I:|o^8nTr`)Ɏ1GcJn3%{p 58q+ ^\_ F9B&uPS*P`y*']OŸ+5Pբ :ޤ47a\7."pc {D?]8.ʓ$H-> kY;~;OצջFv_ * N]`JEz^ݛ ^Ef-9:|$4z<]XL.i\( /v]^\?Mn@# ̒kډԣ-5g $MYyt1zXItD؝ͺlKWmB&잇@?-gܜ\78bAOI_ H.$#bj9wmLG*,#0,x\|[o^]82/[iPe"qt}a6cECm?)ec&oH;yc{K!|VrCieEɸO|x6u*oꦲ+xN =%RLr}ѨDl"҈sW?v@H+NRy=:;r{ٶ I+[\;'%aRh%4ɏ?_e1AY\J~| |gң\. #:(N_ 3[֌)jzmtS$w:wIgi#Egl-.Tp};kl2`x6 h+PHQVo 4vp v--؈w1RO:gk%WB)#IS^ȯ͢ڻ1Qo}lСB[~ҏ^nOlm6t!U׺eb]ۑF*Xd&`][x38|TqLMOxY߇;8هυqJ9DM9ZleffhN2%iFkq"RnG5#b/3,̀@;wt ӃA  Ǒ ŋ֑~rbXym:0w Q#f)ri[PVrw;҃E i[! ;R*Ngb=mc{˂< wV#UӅGhE8rYiU>.kd:ҋ@Q W{JF:[: 4^a qfU^?"6zN5*xw=3˼8Ԡˇ,չ!ԍqi.e/S'nTPkr勇\ɹNC9隠8|Ma,cþdAzP:N:S[613K 3_?XŷV*vaj M[V+R K73VDR;4%m}KUvMMXJ܈w^їpH\hM<醪n|p[[}> 2쑭~o"(೪l )pOlo{KkaօLXޓeFT`ʛ,|hY.ej? `ZlGo{XP- R0JU*3-ARRFiS!zSfZҠ&/#9Զjxqc9KK/Hү@nX34äLYpe,q1M:5'?H-ܾY/噚k"j΢ut/B@JZbfYu2s{6Vg6jq@Bֳ425~˕5y}ȞZ-exVW&ɌKZ\-74_kysS.#/Qj՝ ѓmQnORơsm5?J}zq6l@_;i1~d W bt߳leU^Yu|givTjWB:k}d#cИLb}ӄB~qgY4*A,9;l 0eR+)sd;N}^h^Y< LL "~Gj>]~R`EⶉEPo`_̑pl9pz=+5ژ2Mb]H}3F",,n*G͉t:D3jpf6)`X]"4:g"Ih,J_ YfcL((6쨯NP"f G-iJ1C+Kd.|PQ-Z;ȱޑ;:7gY;ObHY^2VROzU$|>X`kD^aS2'<[]E6ws!,_q2MY8pet.N ޸~RT?6F79(:&v(g`ulW|(=}74pZS# hϪ B9K^s&~<q$>;[7o9_y%#1pKw#jM+iBs}G- ؽ,_P %0rSXUq,1р Ƕ8Zk %jVaa 1~_r3.M]3i?69B/K]pLFZ?m6γ Dg<ΒKc‹S/z|2dٶEq2$iqu)R.M3H$np蚌فgZK=(wȳaI&CAmS?؞xt[kk:k$]Φnx uZ1;gNEk(T脲rt늜k)}u ԛѠ7~}8 Ie^m9͐d 07ء}N?4t.D{ӣ#LᆲduN̹Zk@ %Ib j}C@ p:?ĠR.*lwe9\ %?4(M}/Աm!:?N/nA-X{(u%_8n`OY"*O Z [~JXH@kc~avU*[ 5aZƒBJXaL#ad;\;ܴ;l%S-̂ƥBW;LEώgEg'قjzy:ϾM-K+3Owĉ,Xw%uϞJD>tdpx1waB#N 2pG`" bᾼ2(6?!Bu-4Q")A$`^YT\8mux{&o4Ѧ V!_f^~3d#Vjyt¸@1p+k>/ R _=eSCX߭o])>E"@|ֿ$% L{zOsfJIM3T=Y4hPf*etbFF\ (_'<ʒG`i-5 HlICX#+m!^Tb]dC9uE|1__w!2Zd:#?>M;ABJ?@EޙKKEˆg+[ ɇrEx8T -q,yȨRbX>7,AZieo"ҰOX4lJ'eU2ط܅mqU+1ٷVmq, ǿ~d\>ˠ>JVI Z[vCO\%XAsBĆp2}^" !һǩ*3l#t\pzG h{LT3ܸC 1k.GFҸ%wf!RâDE.ߦB>G!T}Pʱ*ey<K=xdo߆bÄ(RHQᛲʵR?%z \Q*Q>/+S5 Z>4_pa]HL3fopoLx#8L5_3XY: wGjZȋeA1^-!-+\ |3W$8WFɦUeyRCAvjOlm}[DY-(![k*fN4gjvoɃ~mW|̢1ߑ J(SA]!ݴB;sC:y>/Zqg 3{@A<_5t3a-^pmH˘H gi U:t,ݻfRE`pQP,Zlq]NXvC.#c5VZ"g"F(~FvT"6Aqt[7MᩂT!'(1lLbKmwTWS#T 1|u~ӮX"'#!0v|G͢vXsߢKѣȵNa)}[vT֮KE$74J}m>ğs֯,-8a<-K]Ҕ${$Lߴu3F>{=H&$i0c v0va3ĻΨrT*!7o*V6f-qwW&o`8l .C5eTopH_8>_(*[_o&soPFAisBX:&09rxL<}xk  I~ڣ9y:s g5M`0:tu?APXXֳ bu.em" vHYXnZ!@ѹ0VRaWMWO%N7<ļD;ppKM,#M5YSUENyH|P$XZ7a?|e:_h'-<7'hڧ3{[=3u(>kev<  pf[``ݶAYĮc.w z H)JNS@J Ph_%a&hDe{6,Gƽ#m}aėQfӬ80 Ù}[bݿFU6Wˍ#Ve\eplqu0~DC8O FKП5Vּ w7v܏k( g[;m7IP S~^ZwJˈmk؞&ݚ,'Qt+t9]L6pXݓ}3Vy-Nf7K1|r5 =Q:(cJ5/ze1ҴDKm80~ Y@>r2MGi7ǟ.bG9ktckUؕ1G Tɹ5T GQFIȰYi%xS`ek/Q[i2` څMxIeɧ.D-'uȷ"<抱e1tQo҉mpM;(oN\՝ 2&+8Bei8iG2L9Pv̋&hU'4p 5 dɉFtEjD:k!!l8x,ޢAsG_mSmW͘ 9D 3u`H$\#^%tCһ|/_ۍ b*#pżPbM[PlYE?RQ| ՛LَnG ړrV8<{s_V4w!i,D\(#{+Ç/TU9P8ED>!+n%UL棆 n@AISK{6,hu'2Fz Z-7 ũkκnI_ ?5sTU ` `N|Ӱ6\|BxU|\X׼ vuC4W3=dԼ|GOl~a`$ff3L9XzG3-齌4pU/EԚ6xL't%8tfjEE?0 LPQP#Kޱ4*j0lI,951*CqJ*bvw"l.pQ޵UoM|P=vT ]C2ݳYy PY\:2!.ъcĕn?fR٫Ê, HQm e42- IYI[qW66ߜ/ ìz5]*gΪz̢hi=!UHJ|e^a *n ߨP{D E0 \=jė#O;KAK.ڇ0htOTndl ϋ# J[@ʿ4U) 2j@||Ƣ?g)$}hL@ bth1 X@]-Y"R?#+لyib̜g.Yfoms=g 'VTk3y!%zͩ3=˛!3}ٷL?MGOx]B.`VD'ep/j-LSGr-$;$@Z}GD;c3 28IXjG0 .瘹Hkc<tJfdpU=q5BP a30Lg~jyD>-/f؉bJpR5ϻhccQDΊNn E;?Tpqp2h_p&dթTPс5U|b w`w \AsYC/zRvVʹ{5!T1`{ą؆!TVs|̈aeI8c wn.ŀ'cG QVeDɽdpzcsXFVGù &S1DsQmJv]2`Eǽ7.чoq,k2(% OVs2w5cpEx)hXHHY+鬎 .ՓՊz!rePkkG X:xth+x/f~IpOem=D62N;4 shbޠ҆j"@|ŨF2H~89y$jo;>`6QI ǹȄsG!2XL՜ht; Hi1qR~j* a\;x-mA? `"sL&kF5B+r\O`]@DFxRͰ7wVmѶsGRLpW-,tUʮWujCS8DVo,4\(ɧ}|iV;7ci70I<ԓN[~o{b" ndWP,:sFAY̘tX`CO=sLx *ǻA[ \'p17bZ-BqKȓ,r7kD."uGԓklddwS)Dx{1PÑ}cv[2Sעa'/<20rei`E!˫nt<YU=zu鵟X^DK%tyjҾ|O98Fz3Q/xQQoҙ&sNÙl*kS-PF~vmhGO}1&'ytkUm(s?Z6f`v6Dޥ̤gϽ[V48}%Uee>ФѴ{S6ͧ_b""X#%V85_Ƈ'aBߔ}W dݜ7 ەT=+Cw+cPZs``UK^9Tbbx' %9LbDIchSLv.{Q=ovn_z=E*>^k-l=$oD(c;dl6*7y"&{Fxp9N6M 7aXG :~dHU֢dK.8՟EV |rLcj1nCj *Rk5֏CF+Wn2Z["Uf; 8P u%a.vfZՃRh|:IX'3;dJ+ûaMKuf+Ef]a6nvL?ЄF|*=4ϭ2*AuPV1J@*@l oPPQu$ Q xNY(w5-RXקPsy":PԘ99ٝ0QLMɌZVռw|/l > uyJҫ➷/ T{n,10c!EXF9.ok{HdXFT}u~v T\I7@w6V*ZGv/5@M~C圃X4s\8g:~h\z+3X'ꘙJz"@(kuN@QI췢S;j j%U17j4W& *h群Rl2lBI_nݛ>tlGTxr?.ҕ8qѱ< *+Zoyd4޷~<(woC/#SLѰ*دU/]<^FuwX8|hol;:!O L'c2X2l>ɌՊYأy mͻIG?@ϒLPI doJN;|סt 0a ȊCO-Gg n#N, li;r(D^(.RCg8'.CPT_PU+=^=oAD6 u*x^w+->B{3[߼5!֭ӌPv+}.űK{]]z LGѰD|3y!wt?2FeXTk;3u٧l>FqHzBؕ5&]{YSbP`KҿRSM'zP66 F;֛ Θq3ւ?~M8դG~ t B${_9aO1 x|L_!Qv Q[1YBs-e;i20 ";A L`ÅU׉\f?t8[h@4/xejPW!,;rjV+Viɵ|+|5R5(u۬pzVfeN\`x ? e>ZYQUzv!,J.Y4$f%ql׊޼ z{^}TBfvPvoF]p?"{afԲUGJI'H}MQۮjUbRUĜ8Gm%=C BoYMk2UjN#b2FPj&f0V~Tna (f@_SBd38v$G=US'+{xw|pIɨQO?-QXl45l+8VmfחVl ށd/:㲺'ĻۮQpd?b@5ڽR0 6vp~vp}y<+ S_W=}btq!IYr(1=|84p3W{bg>|Gy?jc,|PcGp Xn G+j#ͱM8ԩt|j,XeK δVW O>@Du8``Fe1+ aeP;NN,bCB$[嵗fCb'Mv3ۨYPbcdӘ{\AVg$NB|S!6MӜt/_ΡM&}%$h-y2Dt*ҡsSKC̥>2;d#s&fV?+8wL 2w`].@v(}̒eã<,)UUq-)tP&핇jH3fQzj|іr::HOU9]Iٸt"'5S>>AuZ/:70y'a>o |^[] 60Korwe0dm 4`k;C|WAEigRE &n GZ}E| 9 /ɭI?Z+5xDiB<,ʉ'f9w=)Fo{eӲ_ڕQ %@Z$~Pq] Kdڽj2LTxnjΘ&r*C֯uC8c [aX#TB9k ߧU]b J-, `K56ױ=pΌztyA|Pz %$l~c]5îArAr\L%"'a-u*Xd8,02#1 \t0G}SGC e BA )iOÉ>Ɛ>$2IQ~6^PZXE' >.rU:nrEUcT-Ł_^wߟJ$"%5>Kg@BHyAځQw眠ќږ뮩4~!f&-W-CJ2eK Wh[EZG$w1H#\RTJ!Ysi紆ʡbDȎ(EζVxA&v^z+Ev#gQ؞(I"GIu92/wm-$ VJmNVlF`U~ǖ3'rSm*DtǷc$Y ?b\RQ~2fcaB?GE:&-xSe2䠆Ѻ?tw^<? eL}5=goi>FCP؃"ڔ d"fTQIQ:W)%*M] F˲t4ۂl蜕~SdxʲlapumƋWwd+Lf#,:㾺pڗlQΏҦsO5_8|p>v^hU79mVtB16gTg;Ŕ$r#\!\"'^Hɞr`YCw50.uZoϹDO1t1o;sb\Ź/GXjt-i DYJBzݾȉɡ1x1m>d^c ]b\ !ȜU|P>La TEy^fpZ$Wξ'ewy?X^ܓk.p\Bpk?WkJ/># ;40PB}w.f-KE%2<Jnbg)n`ۑc/BEoPNcu"hdǧ<9Jkg#F:'p( ko21kZc|( !MޝgzP\{*;0Dud KYց@_aw AYIۏޝ FM`CSe..Q sIӾEOh&!䲲H0"Kˑas'}yf?XP8j1)x:VҚ Qfn{Tg&ơct`<&gw LҔ\%b_,֙ȏOjBe Y1UN+ჵw2P3<,o(@HR5 ĦXP}}\R`8: n_a=2\vsq @gzp&ځzP*BΠ/cX.KlOֹQh^vtZ24]Z#׈2Grj4 {lii?-ubSpAuH3h|[ʷo NGJS5<)SPQQ 4Ni(X ƘgM*Sb=3QG+jIZn{>40R< .yiNϊd.pWE)^tț+^J7ҵ_;V~%TE5lFG?=+z4[r3@43V Q!wI!vT+GDE-[OmWb|nvצI#dxO{ҺrNP84]} zVĿ ? ׬>_^OGa*}Ul2w{Pe6wAF {k6-]dj݅:a*bNÃJ :TG#O,U*С!6*JCW CWX֐A] 2,>6eB>َhM)~]IHEPձVŪ203Vw̛73oخ̺򪵉Ŕͳ> D` =|N+}eYy +2]u-`a+sX\-h]&˟Kv 8T[@hG#k9=$On6o2儐x >TfH|7#UFw7ӱ^d}Ȍuo |``%/Pus۞TX̽G2;ӊ a?MkPln Ki*!Ӑ "1*8Vyu%I5~%IAd:VqNW HvH!" m t,6n}BjV+-H\.,g# Wo+m.R9^/pC:ttqݔ!+λH9Zs@Sr d wo8Ӵ7 v̪hwN)N+<1avU~KaKMȾ3gLW9=) Yqt-$9Шeud [nb|D E ) dm&hX ؊).0)ymf,&zJ]KNvѪ0e2eHf{2[FHgUS53Nx| :CnF8ǃ?2I]cOͶp)I騤%ĂM UNǩ)G{'Џl*ڏc,V\k E5>qq|R"Q1_Khv8H0γQ"S2@w$5(p:ОB0  c;-TE"%*Z#N=YZ-]'6#27"w)U< RMp}Jչ"il~g;-ŚtEYM)J?ҭ%{O--" o&Rr?0y`KŅU?quhȪޙ"݃:+fDͱ7hS<>/g*3z_(v!֚u{7yM6چ[//>gjrtap@7;u [\,rDPGaKt1/0Au8NݕTJ+cS^"^K< 7mRN-XgFdj(=0XzЎZUW 1} <Ĺ8(y%`na<ڔ?ad֔tK<ϘJYUOYϜ$JVl jWʧ** / )7 V =DQuO\J:*rIK/h=:*m`8Pe0&U0y-CIW!g5 9iʥ#t{V9z<~j>DPZR ]^ sE}?,Ve K4!`p7@Z/]jn\Ċ9Hf+b. Uߠbš wZ];Ȩڸ<ICXJ: ̺J2Ρ c-xaY<އs.uh7>EEWץ1h]H 5lWDOҠj6b;9I5GJJǚ#~| WiRo*l96A7EH~5?۲B*>(ӭ$P(5t%&%EL^*Y!qKw~ks@f,k& tM{QI'd\홾=]c毖ޫeZBaVUq('-!=m8%52 cKL Jz;9%xu+CYI %,=#F ꍾz_y^0ӕ+? 7Cb{xjVApLe°NDGZ\WTqX.ĐFt *PiDbʞߞEӔ326I y%Ue&/7KA1v"r֨g{8-tIgQo5$H'‹LѡfgqNpRT2St4@Z„B> R7&Vw(C>?Z"uE$K\[HȮFN0 QO5_"-kuspdQ.U T )dӐċ ؀}/Oor xcaWqO6-_0ACIеnn5h7"#CP>-=dĔ|n[]P.d xؽpw v&|HfJ:d-t  ͚c>{`bUˣ6d-⒭Օ:޹aL5ăBkMjb}p{-o 7Ϩ \BA8/=Rq9{ChBeaj,ߏTw.TA|˾2l靏!ǝ $/&I+0Fh)pFY ASM7Zñr;Kd(9ژL݊ZIanolc T<o(<l F$>~prZbQzUGIܿ?$KLYGYW6pۆA6uiw3%u~)`\]h ^m ݭʨ B`?RGqhΦe,e0$h AfOaĈY1_,;R+_v*JQjTPDzf#8a}; @ aL&SQ"x]u%`-VCu*DZBZ!Mδ-Jkݸ=0/ (pi yE ճU#GdZx?c? ͱU_hg*nif_YԾ58H6b`4b9)`Mr*sN9(0Ju_tv % 80(% 1{H'ئ1ڂN/(L+ bo%λme7λE摟Ea.Hr4m89DCᐷpk&"f)|&tn/';sbyO>I%‰`bP::C_$D{ B[/u1sK|A >dr%Kz"Ef{WD~4䱥VpJ:ܲSDZDҥ9oCc*>krCpH/8l L+wM~)A:r# HKmieE wB/JV RF9^k|X?穆 d%?4#M]#6zq龅'{nN Yekנ. WX~:]iӺk,ӿvNkop.%m ܧOBBRG/ytY1HVRa|%a]kk* glÓB+OY ǷO^u8l@ l)ȝr= #3PHԧapsC:sAĆ#ܲe#gSQjLM k ICy1H_52}FcjtkEԊD&@Zo{1u؁LZe9FadmxYFR!!PgΦK'fv9rC odUVv ]"vTRK-ɍ)0eaVwFqR1*]yyMwoa#&g3/! cAʢ l̑Ftq:2`܂G60I44AOlc1plF~:1{"1)3Ma HL@R!<;iE0N'u~vDQI"ǗjnntmDhyER2ϡnZ xT+1g#gZvS6B|Ib8I.zzd,k\, ˀ*4L+]WHZds&8+iJZ0~L"$FvoK:1|لxA^,J?Sm;8xZ'PDU H%zHb{6>UzCL ̐F% v~#2oxX[69l%Z.dTjfE|†a9"XZa-Fj!"OzF:)dT}sFbaSϊ=>cܥmhf/F| umJZEsqrkce%rjO{IS4l/PHaOJBhE~ 9Odj+.W%Xe(::MI zxk@v*ѹ%v\7C>ҠQD8Iv*ohFj&F-4k2C6_QEkk f<ӼD3'lx$~AݰI>Ω:Ӏ:>FhA4Iܚz۹E &puS׿ @x[f4nTkRRK9ܯYHe v)n _=DPP?C+x }ƽsho4 R3 [7'4Tru{ģyW)_C94Wce;)tPI˥8O 0w6)AFpR~c2?Oȹ[ath~U+o5ʹBDaUą mf)^ &VY hE75̎K>a%Rf42}ޖ2qwY /vN(Ȁ0f -ъH[M1]`mc',RlE1IcogғG% e%4ň1I= vJLK8hژOejw@E:BQ(x/Y!nd8u PI]v /C K\b.([CmA`LΟ!S0 i5)Lw 7><[MBɧ7b|*?s HQ%֘NyC7C>'D|._(AɂncYI_^9Rr ߥѾ3-ehh0Hm :~ғ{wsG2NypA iK@Kl}84UD`46(!pC[a[+;HWI%רv?B=bqC-ibd>H"n:b҉ ݷŇnh>CئiFWAQD<"4|_Q1iKmyMbK6H =_sOgғ2uj0q}<&1UU& :rqML]1GM@~9&2`OMpExjdQ< Xn}M=H'͗[fiE2>BLsy01n1v&G;)ibvGkqڵuDa%m5rZ\r4bZ:5dl8_`S#rmPח4 h?5ZY㫄0j#G$lx͑~Wfe,H|} uWڦلPoAn +# [p]X)Sug&)G%~9GsD?61\pdq6uzρS_pEQk $Őc.{W,3R6>^7k4{QiMBܖ`qg<ä$!}= So'&Wp .#GlY /ڢ=;xz}@D-ߺ~֫"*,[W O$bl{5sJnt{1hź' g\/|B8|әrd TZW%y:= ʚcdDw@\z˴ 9}6([p Zttv!WO4ȣ)KT0mSkd"z7c谑j˂3c)dL(_S#iPO+˿YU ya7!j] eIrh1Ыs΢L6fd |n/'5G}kSБs&q\,fIm%Ii Y0=T1-;￾Pnc9hxFvWj: i0/ÙQ!~3Fʳg!|{qi$5;)j?AŰ]5&9b.E[D}kU¢ZjLqڕ7+/!٩7P€Q"͇9q>RJ5ttRMJ#u@0 PNnǨ 5UM 9y^? pT$w+u7ڶSg~T:C)WoKX]=f|~Ōjʰujz i!7s!99 6)[QWODezA7۞ɈFu,  1;]gL1f-aPdXW*R͢]0"$ndu;]80z_I81zPi*pP e#ÞF<2Nk''9svynjlhN{\nXo+URsN/A"- 8 K9 旲>G @d5 eGI5=GS bN81@Bo|%C qAjDT40:iC}B$EvUVK8EݸcNvE u,+z;-TW'f&bװGm?4MUr᝿^jh˜J@>I M%2"/TzgQU$!Nk,e'p f= FfD͞ 5=s\X/R_[҄I1*TKH' ]-CE\>M٨D* ^Aaw%Xh4/m ˣr)7Jݐi3K6 C99!.^_srRWElgug!0C7tC@΋0,lG,7sl1;xaIn{f$wV3věeGɖv+fv#8zX µ}ooĕV֒WT/ck&oj̝,#Qq+ L *ue2*?ad]T 32O vCq2yr|^ǣ1'?cFZ0duF3CJSyCz(uO~)no&&x~wp?90<|ZC#gmZ@jV0J)\ g8j[9K; d:J k1Uui-ETp;32HWu)et=(T kOMNHB ?…%5Ys8Vt^3ϑ4xb> gLz\$Y%8n<)Ӽ0%?*tކaͦa|Ehcg{RXLyihr{rÐj\4r܃ljtR߫;PZ4I?U߾ixĚ2vaIl$/q%^h1:AjWbZ\GuoZ3],/ *e@Y"2E4q!-3nz"e'A*:,@lb[Za;OղK3V ~{Dk<9ĎqHJ"!_CJ+x5ˍ"қlF |=R fg %K߿e {(3.6>(S {k߂ۻIdqyǯp>R#a9(7N!]䳱ds$XwO „LA|Yٮx<ޠ\I0S(n#S3Hœ?xpzױ-mv­"QyZJTdp!E2a~R_R@GPյ!ȧC,J6s)4ޔThEfr0L) &_.' p1gbW{6{ Ã6ҕ+<ӌQTnZ&CuTV %;gZ윍B)bwAau ҪgRTp m/e{~BQP`Q+N*HMm_f?Cԕn qDh<9>- t#X|'~:}tKF`8,m'0#W^VzLlα/hŖ4j] )SGcxԵ({Te}&nohpE%-w}eƤ,qÌs3!r%oY? qssǧHsr+jprUy{%{[gDjĩoj雨v& Y`snZ& 7|wWG` <0U,ZBZqw p80/NuHj+!h~6m3Ž= "!jr*6N'u}hb7c K~eɹ=dR#0ZPep/8;HeQzEZT(2k"Hy|oHix¸XPι`l0W}uo*޸$tE+:u~sZ3:e>J#2&C[ h3\'U,TAX6_e|{ -c};BŝvUP_ډ۝ JE5$@wFLj2iwVz&usتM-!:U9cۊ}M[{6 LK,]1q5au[X Ѳ-]ފ?pryˁظq?1_}rl/k2X;u_Lao?ɣc';G 9%ɳBExޞ%;F5;4 &LUOV'WXe()cY%Ua$,T$ЖpuSm11%3q<<'Met)C'OČ `-\YӼIB=1rhϱw7g[pW{ FQal"^5[<]Y`UmJvm+RP; [|jdfvCHԑHd;Ԑ tgB'{Aͩ:o,@,aO /[bh>nW %:X_4Aw ?|> 9K9n\qDxZ:ʆtx}=bmX)lC~d376Io;Վ$]_pc"aA2-B2˼&>-yNpfL5y𬅽:G0t7wWk?g`λhZR8/}ʦtHPCUaHt*&OI1ao1^ht]rw[(SjhDcT]Kl %"_x1!lЀ`8F'c,-huK9)m1q2L/r8%C 9BЏx^m1֖L5 ]m?$v!iN!Sx+,/rZqP?![y{D 8~oͿ:l F:Oy<R<6u/-uKPsJy}hϘܠ fhL'o(Ћ ,;A4kARعK]Jox s%IFV#LfY7(^r}!U%k\ <@u#\g  p$+A}{qߙ~F sVSkfyA}Eh(6vv!W3D1s[ )vsX0/<:ױV8EB]pꍞE+q<9ӱ'47`/ڌ o.za&;Cy~އ_w\wXEq1.h/)["QlۉDK8)[ yxT ڈyxw#AC㼣 mR50 r[jBez[Qޓ?alL^i/Qy>IΟ]Nw7ؓGnŎx7oSyZó:72c'f6恇-. nF5O&%P2M|FvN!X|x3rݦۛFۮh .2Xz5u*9aH'5lg}XDHXKNM8 ܞ4S}P}$FrxI,T]8~[Kq։QS]MqtnU|#pbU+D ﶚ,7)>)e<ưA)%UXh\ϮU |+,D\; /3-[7sPpKm١yx[ZiF'HIhTZjqrǒ7y`]b&''ǀErM@JNFQl%.0f! |i6B BLA2؊{&dG>ر2cV*Dr-MD3WxrVB$ls\A@ zMF>H"XmJF3ٴpW[ ~%~Lm;rQ"5=גNjw;س6Ox+ C-}5-aN! ߉{KӃDIPUt̲;oLfQ|?0<3z6;Ѹ3JJГTυd1IU,{#]_}Ȳ}<ձ̒y %mG 5 (3b0&8@VGHnj@_ݕf;=;h =(՚Z&:ïY|ˤ3Cm@sǘPֱ-?ʾVlv?h\g%="KKl=Z>ȩT]W<?KB5#iqw8EU`}/p43;ir 篕[~h2n#rZ`Α)^ 'c:p9`*_̠ N_kk ËĬtpȋnҹQ93&>`zCœ8콜YR ] `pڴI=;fGjFG9}:7%o+=@0 #'zdU$_Ȩ}mWFeчǠu(niYUPE FH V>SM&O&^rqr!M9-Nj^-%\~谖B8!;I_Vw'E(wwWy}aȘ*BbTdB1Ue!8+k R"2؟+Vҭ>xD(RnٚmwXM,3A=Kw.0_A̟Sf{f-4EKJ>4jJ~fDGi[H򘒢rAtt8VԿWDKQ|8:nvP8:кcXq3[xZ/HG02eA\qg𩜈iHpNhjom̊>_⤪Tho`?+*x}R^;صyi:wCRCStY_<k 6Hi#0%ڔ@:ۼ _>(+j_TnQLISˇF; z^lKbaNT4?\ [LLOoh 4~ /o?Ep4bl_E3չ>F+?A3'&۪PjP8yc/=/4ŏhtQWVӫ^ɱnGin;952w_#ܸ\66dߖͶ="]R{k7_'c6gB_r]C`%y{6]OL:Y9A }XQP]oYװ۟!_vxɩj, Z!s>.ȼ!ʤDp E =b Ww|ӌH4HSFrdfVY,,SU갣n%mس!B9"h/NEq @P=M/U{j-J59#l{:CCf(Oأ3g;d9;mWnm ֓QPTڻ*t#G~(ܥ4 -2 ~&O1XwxA~X4' \BMMtМK,\@j2(r'OD%[S:m5M. ͍3KP_>oNk$"{zmQƂ:i-.©嗶'iWñ N5.oY~[8@ - m<Vb!a䉊؏q;Ag3 | "t}pp~+n5?:ѕ]m$LqTn2\f_c%l_ SuwѤNXLPvxAfR[G9QYaxAJum&':=H0( sڔfnދ]7_[ޕUGWv~cԱ}yTL|ڠQL-#'UXWB 2q3]^ybx壞iB3*Wz#cFi+e_FvM]tlhܽ&LU1 otpZ!<7̐+-X-)Їڣh2t,:Ddh I[aw-z7y> 7Xi!&Ï{क़_<v <'̏XzLXavvѭKL-/XSO$?BĊq#|qp2%MYJxH6i1a6W}`u8UomSB6h.ۛ^ 0K&6ap郠C(ً4YdUOI*xTas6tzA$mDB]y|*{ "7Kz1?Z\^$i2ɏmi>ox? >O;kdL:X~Xv::?; y@fh+]rP3$,S+Rp˫>2ݼVv?5TJ.8/Q8b&q{HTiC<b]Wɼn |#lcJi\2۞){RΠ xq꙼OL';k4а=r]5,3|G~< ;>c6nyc#k=ۆk3s`11]"';ȐR:>?)Ézd=2_B  |uw Z~N3-~ӃI U8lAwI"%챃fuK SIǜvUTVg#v: -eV`c`MFn͙, h?&3ЎZ2[a6^:Et@5]VФoh_cf7Ҫ+0!˨r M˰ixEe,d4cv_f-Cp?BհB@“|$iK^(pmxQ{"*BvaD` d #e* ڲ[ώ_k:+% {u0%{8o*U,# 'ii (vfCaIhXw򚵲0fF@_R h Tb^n~zW#yQE/J%ɸ1%='UB'ZS~b5(N[Ǵ S,G;a/ǒ%/-9bKZ]~H|11?̒[JB QT@2{ >183ڦʛ_Pu͜7;ۯʝI'5APoAV17uM..I"ڌ߽k<1fN7Rk2UBUvþ A뙤6v*ꋍM, ]YJF 5cllpSF6W H& PEM05 *P#4exy3~\łFiΚ$\3@k=q VyS `[>I%lrT/FS.[Dy1R,n#ܟc5AhFFia+ Q:{4kІ =b.&"4JK#: XqSn{!4,`PF-]}2vfBAsl(9Lq" }RՍfw]O}Y=뽷>r%TֺDDܧI&mhAl."5\N#؟H&#U2mVZ/;嫀r8X*c0bq|fš_; ԵH;Y9Jg3P(&.նLxSf$ш@\e%*eg$HlsbWN҄.= `R,~ͼZ;spPBgCgkaӖs#QxuةX;xbrRt­uT!5 FoGwFGD ,O߅ >YLҨP6J`lT'u+E@Bg ;a/DhkI82ꐹE^N:De‘ *|9tOخ.T.]<6؜gDJ '&-eh l[Dʱ(wM(0u5o39הn2d;!g7AM]Y]m 6 ąDXQe UjLe/L{'2C C/o<"`'HdL(P$7B+"}c)zcV8=u<-4xW.it?G;NCT1Ҟ A ɖZp&U:zڭxNn _c {*IҼiQ9̶k Z qGceoI%H`أMm+EK倃uQ0<8vF V.<]Z8vymA {+}?1ҽ+d.tvo?I`T p栕]Xc[Isy" gM`idߒ&7xU9B98ozWz![ThsF7 ܇zTPi;HPi#uxvIm~T1p^knnMk"11907w 9,-/ٓw7t|ZۮOd ʮ?qTwigOj}?[ӧg".H5,F''SwC-]<MV.[) ak7 4%^J&nnψ秸]Bqw83CLQhPYaZ`f @gxe\R~"1Qzϭe dd8~QVo4V'pmL->.eS!,+!v;CH\_ǾX=P yT"tUv0UGSi (=͇(A9Rt.ĖZAKfg:5XVoA#R!wbWHA|VmCܰAZ.UjTXl^s[ozs#Oq1NB5E@> `6EmP`5:Q>466a?]d4;iZR*Bt{tU,FY*y)gq%Y,>Lx T_̩_P_ aC+Dk97&R+ G^R|] L"T;fn7/wգaײPX«xAoD+F<Y`\ƒrwm:]fU%%& yʛ A,ȯyz8Q@FTۜQhOܡ-6^ľ_U ͆߫B d>sxB+0:N^8$(F;b E4ӛ@QNQ>1~,d—aj`C_p|8!#BɬJA!n`Vzl ;kKp9ڼ_4=:lvO*^Yq׍p+3'}9j#`*M;(ݕ[cWY:c-ƌm?NrĢҁ2Ul"b2O&f=X (&8ZBQ˂sVSRcɺ&n&TAiGu;\AXaXz2]E9mZ*E KQ"yX D2X3|lŕcAK{UD(०!x'$mvT _@HJNW8Z{hKRidD! ;w",_cZV)nSo]i8KP9::OY {z}vK(L9CEQ{mq#8oIɼXq^1hcf٥s_ryv;:C_S篑VL]]یa !zeVJN,Y!("Ie@9R>Rc_ʲ.Sbx. az;6Ȯ"ČÜ\U>fn]1!71"?f exY'TT091*JO_krn_(Y>@XM6q/#PA~=Svc>i<|v.\~VR ut])!Jf)4" kHeQƜq[87}\@L:q A{9h~`F$)x[&9yG)1ipV\{?ДۛG׊izajuЄbxSxy(s'w6\0t R: 59NTDsvRG+笌e2iS 6c3˲&aEͮ5i8g.ďI4''\[E_h~% Ajw@,$F^VF}9iDb_mH5!W=aKY5PB&N$P. y`¯$`Է]؜`99lY !Ado&˰>rrl6?]7R!sL,e/'Z&d?1'1Jԍx9lћzdhE#Fgx7Cqm1Y 8G2UJ+95 :$vm D{I- `_F ̨ov]B38* #9^〗hIc3qIr'%KD\8Ϳu-Yxb pr7fC{֟<7Sƒ=Bqp%Nh3֮`;>*Wל2esUK9K7'hVI T/ wSV&ݻ!hnU)5O~,@+ļ -4IHBe\O4*0v cƩuVzYzDHՊuyԆTM*cn9Q_\QJb EV`-l!$g;tǜ, 1g32rA`4dC[Ȕ\ʸ*i,׸#ځۆ(V'ZRId00. d~`hˀIBltpAؖOFx?9FYwKaX1t ;M|YL 0,~of0'rXT1LbWǫ%m#> HVP|xS_1_ȅ *5d ŏߏa ] #b3xcӱOu!c2@G @҅fg ㌹)]<G߀+缟DO4$U/2+宖WOriѰ=E%?G͝kyŊ04LYr O?ϒ#vKZEȮߨ6Aj.4EIu~(Ã}r6 l. :A#u߲>n-< Hu11~OIt} 2S .ېcr k\IrXnGjOUDx`Q7<ɋqcL*i!3#8$I~Aݝ4kD$:iuB6`#l*=YzÎdS93:h*n ;} q6!)8Z|~IBU\SN#e.ޖںC"`N* 7zVI' 6vtD,!+U Vm (a1+3jMa8 T/ hѣd{]p4 ,<G4˩yl>N}q2ZL MnZQ4_ψCnK/T̢%}0aW| cpavLz:?4h$?Y8!LIhE?= ǘTQZ%Y(dȣYݍI4:^@!G -~ ]i5Q'۵8eOu96zOt+X]o}LJ3Ӳf,7)_ e誆rņ$nO Gv6ɳk2ܑ. - +onUW{x ^ xj9WsF|cў[ء›wN]:`νDUbtatigܐ C\:!V\ sE!v+^^:$ ʁ(62ɰۛ!d_/>Dev¨n&0ˀudIJ#HNmQ@QU0uAhYgõK{\l[ Y48=(u&1C74)SzY]ʟʖlT- uB \aI< )>c#WO.nw| ɽc\7a)F ĉ`E$ۼ$+LXz'"ۢ1gQ4mrx ձubևJW.4ݩ R,L |S2#6$ y @c3#7X`=] (Nf}* X{I5ymrԕ]<ڃ7̦'Zv/}bMdik3.NaK$5FKb''+e~[+$? y/PgbBOB*&Cd]כ[amT9#kɡ1슁sȮiE=Kfw RS"e}5Y;Qw2NyEqccRrdHPVTD2-\Q^ ߪT >ėBG k:8.ѹ G>'j a{ޝx|pf Y+4]0[GnLe۔LչcsfqZoWG@[) zɎ:rZKZ+"-j~L?$'KX-r >iK1 (X~աl&?A2ГR:%g,!S씿 9kOU;fK0 ؿ? ?SkӨKuF _rH  #xc&%Ljൠ ؒICFcNCL[NȚL&]NǏI*#>T'ޕo;X0Z]pqA?i )k95gNI^~3kua͞5q}@2R }}eVFg6J#iᤢۣn .@ b25l(Xަ`8I .}ؤ_aF(p*h/=h8匄P,'+SQJtQ|shϜbcA QnmlLHP6C-SLA^N'6a"~ :ƴ5I7Tq-Vh (P[ \(\@nl^#@Ɇ"2,O"2pׇ c4i&DuXHj+W2{"s>")nVd~q*ԥE?M'B)~"?/4wrI܈-FlT{eh{`u5yA\S;"\?',t4{"R8:_ZXq0B\\|Wmy襟ðod# i2 =T00ARd#V}0APČF+ w;hid)NߔJO_RsVv@nrh0iӃvBEjn{Q/Md՞~ck~VJl1{Db>8%k#^;#q< >M2bܢ 37I(szqj@qwdJPQkr/MI:5Jp8{^)Qï)NbGz1HZ3VGOy KUJOGHdњ}M^֠y:2X8c/-Eaz#'!A@psYr(DU=>mMֻ_z;bE`J* $ e%򕛰J}L)>@?s  V8GK4PZmSزS|h"w؝f:S0kM :4X\<+۴pjk2R;cܹUPF#SgĚjF}Zh0S CTBW4N|ű0R v꛼P*\ݘ~[o k.;ħqw)sx7^xNF@gI vS]RH?BPtE!ß[,!MVW2{UM0tnRG ^J2`Ggd,OA 쇿tbFj;{>pqLa Mɺ-P ].6r`G8 _m"#wH ׷? G6C` -.ו6wV$"O<4c#h PɯK$珄؄ ssj (һ {߯XL.y5,T~_nyWCF>:QQ v{ahSB 3RjC"/&!yHR7F۟!Ճ4@ pKNnvwq/W0xj)Sխ`lHYsp2rXz^ow̅mcŊ[pw\sKbD; L-'.<~kGNS^y$L,"]Ls`"ӡFADpx LIzk[YGXN'A/E|FL.'P3[!V0is{ _v4oQߡP3v<%MBRs neqŊ1r#%>۲ǝHDDV琛dBC "sC}W*m O!I *qWhխHyhdlq̐C0^M[P +7> )l ԯOC\:kAxR?qOZZs1ƕl62<. Ĝ:|1 >7!ڜ ~,s?L6;@)ֈ=-|#m.jǙݯĠWZzPIsL8%S@1nKC-e-!/P$5(9Z0aO~-{}]7᳥OGEO+ȺfIOM]! V<'V~"txddY^B~W7 >|zJ |5 λ/zA?3sȦCh:;? 9Mzk0Ȱ'sX6B ?$AqJ)1x&aeQGkGe'MpY@YGgzM_b伧b$`VDx.IϮ}V<PiDɻ\%^j`ST`ϰ: aԗ'uY\DZejQ䩔 ܘ.j]6**# dvn3,R]4>9j%uA?k+(t #+>Gd]ܼێ氌^o38s(0KS{zοlgl8%xT`bys0<׾WZ}P9wωm$ZFҴ*7G@>MG1+-x1 sbqR6׎d:咭h]ncr*#fXOL32>RµHT@^("xv.~upN4Ys]> +YE+C\8*|5/!\:YEpo?U$<\Ԑ 9Tǹ/ԎdT,y^8EvY`/krY,)uVXòIW% Kvu_}WzN(Y}-3J*˻&83=R Vk|졀!Sey_PqãcfB|@e#\%>G%auh9;I17:Gf_YB&hC%ׇ']d|9#2aZ=GUp@@jBAXRg{x-z)/|4~PC^ʾM0l9*f7f|3,ӋŃۼt(آje1]}4C%CKJk 4nx- =2‘C/b+n$̌&[_*}>vXՑɯZ[2~?}8Ҝaiб=]7 l> '  .ʷehzE@X - 6*3[\zh*<Z;BA'36vIۺ=is Δ|.t-$(2-yj;Զv +R]] ' X<͛f+5unݽ"yƝDix_. nɻJe9PKbIO+RFRެ0բ5Ik fjI;br9AS۸v;oKčwYYIFM1`SazrŅng;'1&>!_U`L+}U%@ k,kMT.OL . fe81#CꀨБ'UGT[7fjЀ8x!_ճ}~0wk2Zes9bJ]cxSV[\^/c:؍9߼QvuC[odjUDB2e>Fz /TpS1ZuMB`%mKR3:JlƲ O *RwKT8M1xonj<,7L"jH[]N'øh3L_.8)ͥ&6\PIT)`dTgTJo;&:Ht Q7_חu~-Њp=gO0]3H5]EʱUK1j&ި=U;#q 6U,(wTߪbv QF#Xt\}`R0d+8b( ڈRт_P2DlsCʈueG?P |QA|=nbOs]me766 m|R.LGRhjD^\~qhX]\'k<4'=6'^Ot3<_DǸN䱢]s:x{_ trEf*cB[$#aH#UbL/s]SP-!R]55?V 뵋3b vQ Jz,LY9g3|>r^j˜M[E!hDՃ||zfkMvSnyX vM b|FtyP&$rɳv.{o RHwIz~" @Ʋ>.$CR2rץl۽+hz>#fp"]mBGG;y%- #dFNVqH/W5Txv&KJSJlif3hz8vESP܂N =/qbR\ZѺ~ K_IQXCfATf:yylJ= l@!VH?bH HtYiXPzjxC 5EK̗d/R*w[;}Z=nB26{DRRv)9V7Uԩd-5(sJ@RfyQ6j.F!Дy0L?1qwdS~`XBН-( oV6a\&hKF|](e ҽ4RZ~exX=\sŭ~?_!G¿FE!DfCz36h v~- E![!>|# +9OLH 2Ů5񳠼W}]S)^8_̟hO:t7o:|U!bBf1z9dѓN52e2\r/3kp<$2WW$(JC`:0<<^;cNqzK*]m@"’)aNax8s {q@IhcJ͕ss~D=@L+(NH1ʚU]hAx3n0ׄgFm}vAB:;c7d2'SStS<%O@'Xs˺5NT$;}e Cg{M7@5}/(-/8Q=nkTWRGIi=m"ϙ㊬|AGjѣp$(b?3g)=@ˮuE8]ł8ȩwrzIN=s ``u=(H x_\.ddI(&nf@얪|G Zjd2b1 SqP @5Ds HnTA\.=P֚`xc܍Ғ}'F.ϝTLѲ!^GCLZYIEca^jW4OҰt<>G$dmL9 }F-Eods 9&pdM+.=1M]76Ǹ!'5Qr!yêr0TfSb p-JiSԊm8/03r×SEyX$ȱ/۾&%k&BX)=6-L;5n)lDg51yľYI,s҇AU[bf+tzVY} <څ2^6X?a~f82us޴#HAH=M·E Qwq@5GU؆jO1}#x/u[-GM]jLSQ@Xƕ WHC($0thbBYϲ`+} "=b)R}A BΗa9$яM rx 'vwJ"\;4-@`L/{EC/ce ըݥnBx;C_~.=;=8~䶉֫ECn %n2++5[b4]ppar4u~!)1`%D95(C#|&(W%0EUC}٥ʽ{fe&..XۼՀu}!H\v l17=!ҟ؁*Wޣoz-x ?T4L As;LVTz>39Q[ŢI͖u鯻}gd:mdʵ1e"X+f !TLoT)E@tqjQΧ|T!_[;{R‡r~\!f|E?.`A Ii!5KS#vi1ZpûjQ˂{H*C'J'IRV_o޾}-c9}[]faZ\҇X;f:DYq&v1nspU($ϣX51 2 ].u)8ŃG#L@FVRqf㴂V">W{VQ}'ƂD']TstrqT@x\2uQNiu2mW`H٪U+x}.2۶;a!.aMA%1"Uc2h-aα2Pb0zbKʹ0㫩{'{`Xq1YxH0#~'KWe6|-9ר7CMs?C֥G}+qrq"=>OƒDUVx70]Z۬JzLQz$ 1LJ j$k5&eδKn[c-?jU\lq8eXbb$"sÀײ" vώ%Y+H$#=D*XH=~o1++;tDOI_bI] @^qP+/}OO8?ʿLyc2yst55IGՠykM2l].dICzO\ T(,[Ly,V!kJa܊a|&099TDOs;v:D,cmSǪڕ@"{1k_Ě; 1 Br8c/dBw7&? 9CiV{e$Q BL0PߊMT q 0$]TϠCGoglv:5<zԐMW9?aNd̚ݿ+*!̔m9 T֤+$C6v6ojeU a=.cPnQKJ_*~E|^u4DG uht;urss(ӧsϺЄq'T ,+s.".vGnuQ2+VS ֠$ M="пVl(d0d7'\Yd. $nZ upx7ʔWZɂwG-S `t"=Y}t(jȍG/UټkG/ޟd@p"QשȷUHVr).R?d)-㋌Zf1l1Z_?,5X]HZ;@tV=w7[qAJ8K]~t&y y{ڌG<+U=u Ɏf7dq:hm!E##L^ӾrGb x҆^$ug=7@A|י|NAS ( oz13/aWs-.Ghc4rED6tkF<߻bݱGrbzB.h~٥Zߏgtb:1"gTwm bڤ%(3%p$;>ۆ׻$f,Rմ1 I)qkjtM <6tPc{m*@kO;IYxd.K Q 3I-AäLw9-Z~CAVIVĒVJ`q2rڲہ"o$!ҘhIېد.z4wIzs$-wJ?WMV`m]qIeL$>V4CT1=l#񟿯sm9*xee[_XQfBJ=w!oj8Z48WC _A mL*GL~'㿧n(K[EL4mX;uz<;ћ--HHQMlh JZrn Ѱt_:?Q;cTLQ쁐Kr ?N|<:#G* Nt=RˠKijQ\RFaRUy lBBiL~aegn/~K:UANOh+ju jWt"UlL}!3 ( MM1G&r4x#ZN}!?fGJt%z+OuGB"Oxꑰdϯa"tOL߅)r.O̲93dlK}, =#FǀpK+)N%̫E#i%JbNE r1vJ$kFkIܴz8*J 3@ƳDrTJĞVoZ$ 3!*,۽)rܧ;R'V "aD̨6oS76A1yhoj>t J9bJ̊O>a(֏3FqW#- cll6;Ȫ%;TD%Z+u֢jg$ʰhd܌ܩ1\œ>Vϭi6Z Ŷ[s8WK1i]3Y>ZМ |Ƕ0DAנ`?uFoB $$hDp:vY=vNeGmN}ETolyz#3]յT Oare=T ?kx9$;&e=y˂x޵@ <LGZ(m-=“7!ɥ \۔o?wt&7i=I,$?!*%gz޻Yx%W8YQ$zR-)NBK(\ e1zJMcT'`2Gxa^o,d-iX3 ܢ/x?:O筏S7e|)=s.BpI|uar'Ap02։_ f2Ἇ‚^jxb$Rڕh.n~.qoTrqRFVVK}{޷苮gZIZd1ܱ"7c7 ?#ب ޳\遢 #Q;_IrTWl>ҳƔ[M!kT8 Ŏ~/~8mľ :G=MJ;3-Aiyb T4 J4g!G]%D@ViT/,dй ~)#X2$tR42[ٚ">rL|1Z7}̘딜ZpP"b;NU-EG 1x5K[Q: mgYXʱzpEt( Pቫȏ]*X+prW7V ;{pB N1+N_zDs͈"7_ðlU\j+?z!ʐ޶Z1/ L @uqC%u p79tf%JuI3$]GBkĢX5'@Lkl/ *)y_0 N;=É͗uJj#^s 3 `sj.g5GAo?C̊}j{ar4*6S(XWKR%n2L~:s#$sLcQ]!e`[TSB>G6 t0-OCDά_s,SoɻST}mvȬ>/DTܼP7yfi%E8HTg''_ƳyUbi`{P;/]W|l-䧡ro4֞6WKGslI;-L;C(zGr)*lXxqqhw̎8 5W\)Z![=pr%<cl |{ySXы@q{|%.ФC[|8,'jj M/)ufuؾ|:p(?ɺqz6԰! ~mJ[kRZS&5Xcgas./I=*Í$܍kepm5je%- C,*C7) > [#H+؈i밫:b..mvIoBU"c^ ؏( p^Ll )z2̏yPKb{2glDF4nm<㗒C0CKn R3]b>Q}-OsݞݑX 8qئk`=y{X+/t;̪@; 1Ұ)+ŃU#)eT۫$6Er ?Nt"0"GN "̺d @ yLw3YI 9U!1rJ20H`m3w@XAyV:qoÀ!8Kq#Poh{봋EcgD>$l%=a$D#DH EiGp%nG,)Z oF&r?EّIJm 6Õ4hحcTacӭNVvLShR녏|Up|13-/f@z6#" iFNeR/CBtnV3c[5V$Zv%ttTBVOhcf 8>ǟ=  V يJqn%g1>F fߍPFJ2*TWRW)6=eojLbp+*viU3VbF›ey[Y[H1;\ByZBE଼&Ujz!k/Jlq#~r{D@ntaU.ڴh(E֧ +6HH9$/kQ|=T  pc<l1Z!R4 ;xW1ɬa;~6`;y| ,ݏ M :̬K3*H,e Aۘ7N$D;p_xG=h.K'G {yoX*ʝpN9oO<15<9}f.wk9Cҩ^qXP#9 9$%Mc%lj Sy=yl\;bcv7f1$bZP0f6Q "'a$%/6K$dQ˦i$E";k?Vۺd޺~G k_EE"(PGu ,38\#n;bJxiP0)dgH%룰hCUd-CRmy@ K7ppwd!$͑'J'DcH ÖP(WrhuoVI>;Xv,|NXAeUg9⇧DgԽV"#EP SoX1J0T@>D$B[1q]zx7a#6y-V^GGR:pڒz6xp:d$bhXB&>bE܃6u*1կ93}",5=ogg1N :OhD?2zkJBŕdVPT7^0~hOq!GS"3W~|wǀFJNL=ﳦΊ 8N/$-xnz,c1? 3͟M5t@fFZC?dN.-ųsg4`E*QM?4=ױjm(ǿI@bixbϿoOPdzw(d~}_horq˦dI87f՗sCK>j@xZgVyAįr;WG$Q9@+47XnhF~)f zs {+j˸mV=:BN|=zT &1N8.}(lde uh^5?̜8 U~x.9WċoFU)Dy4yE(CS?c±pOZLleBYH$^7^":ODj+f%զpM$x"'UzO`d ɹ?y^9Par.[+ɷxc8ޞXzIgD\K-`^LKk0.$|w61Ng5uik- Ku GxU"^-$i2u~]e hSA'@WBh-mּ-iLTE`b᫧8@ K=eKa雈f]oxvRKe)9Uf#+ SRLu5Җ$|4!FN!P6$rinTi';R)l^\] y# *)ʰ0,t q $J&)o]}44'ŐjܼW|L8??O)X1S 'J0$ }8[7ż:R2c^TB1oA䅚58;ke564+y|G1XzGHI( Faq$So1 w:׽^e_7f^?,X"Ѹq7c j87봓D5vBvfESk@" rgf}`Rgqy(#7)(GA^9Y#&:a7 Y`R٠]jKKb `ω?)oX7o0ef>Cg ) uSdW 稀 ֗T.N9,yқ. * <5A3U ߍWeGDv#OI"%=]/1iTriDǝ#m1K {'@5~7'¦OX> ݦ$1S X uߚǸƐˆ딏"cPٺ-DJn4"9lC9Z)L[0/\vqۺfql05Y?]PAqXaOY@v!Jf)")ݴRY;Ӛ,I-ʣCJ]U ;ɜke8n_!moVǰSc'M';fh}$44 ~遖_߮E_W"m:M$P#`jE/{c0RKoWgFYUn̝ #bED5=T\*ZEB 򝂘R~>idŜ"fA^NA ݊,lXM]Ǟc[7xSt|O<eil8IB$qO'Z)MRTl R;}EIᢂoN #\ UbFIN x%ue%0 KF:uH{py&1eP |}.{"0rzbA pQX9o.)a衜Ft*|3eS*\-" b,yr@, qu-|::q>WpExpq@q-9?Å6 +n@'8UU#=T@S1,e΍ydZ~C(LJA8\5e[#x!ʄIɻ{ЕOD"@ݍ'\ idx-jVArMu z%JLCw" G.bb@;@-]DdaVGC ̻ ֬3n2}aUj,-"B@%Jn-&f+K(~"'0Q|.FG̱q-&Zji<1ژ$vRq݌sT53ИޝZ t ߫fsZN(=@ bƬWjɗxJqJhVZ}jYC" oܘ1%$yDԸ&./HÎO03>)y^q3?НtDCVG7ܗUmm .oK&)돍_JފvI0@W !Çr3.aC}\aj1JKt_)yL(k{hlG\G;ߑqkB}G!d){l4:m %a1`r $%}lmR)#>\bv5PKb( 0OtہYCd}F̋ 'K 'a?#2 k\|rM_o]CAMJu*6)Pյ,"N*޹e#O +(-b>Ng GgڝfS.D0$֢|Sb MM#nSY,9$0ݲKuܕ`)q~4wQVTV8)$Fs> ؄ЫUmk7\Y#L_S0#вK'_{#M=ѩSð2E  #.-bp=5(= >DQ&U%mV&鴦~(.PβoNRk>JHYȊ+8 `.c= a*2(aw/<_ܭM>Ɨ GVi.ߝa/m 8zxQQ vE.zS XᢪF/[ ´;@%OD1|str+SlѭAyVtZCI ]}&tu*<7,D^hrpbJ)D.e]ݘ%^,kل0Nt9ͧE|5Phq='#kt; 6 砫\\|?s?Aw5i;ct. +$sl8d!]a)dSr\v|c|i:4P@b?ա|dAZv>Rt<֐|?c=t.@K|}n6騭RyӪ,\',a {k ܻ7'o1IJNFz!ܔ>GVsh;9ػ9ᇟfrFysg%z<'mУ6r]tEzԃ * iu 7-, eW%i<73Rk"p%$&볧o):;XOSME#Ήf16q9Dl6*y/$#7C1(rGG7G<ϟ*{fFqD:|C悎 ÃoCpļIFɭdVLґ]le`m(l΂@/9Sjc0su??*U'wiw:T wjܙ^̠S{ ]꓏:YoYUZ֔cի\BN;嘆uU1a~Q7 . \-8q]`]zzb= t":Ww4-bkS:@m9 t$1y<P.~ ^NGڮH<6-ʘ^RNuL,˜컏q>|kI(ɉĥрyLbxEwx\KRj{FEyMՊm }G^fFIKX2>zSΗ8uC wN<޹\%M+n9L-Sb=kAMcBMiX=!o94_S0{:-+"IBuAIzc4oPo5D,ai@Qc7t9oskZM(ELM#>–L(1/&p_!Er>4r~16Z4s 7WpP:[ ўiPQ >3LO eg#~#t\싚$=r0,-· 6:;C>mÛt)2m*"o <|e kOe g7B-w~0<•7nl& tu q25 Ng>Oaρh^L4{28ֻ KCM}4Iay3%G:S.#FضƦL}ϭ%؞sΨP\<,i^-'hOLYynJP bSK}`Fv2TVlBuY=ڀrtTIfblpT Hf 6udO/-ivnZÛp-s|ʻ@-x U{ _A9K >IVjb9=iRGn |$9]guYڠ%xMnaX4s B,ZڎeZ=/BgULg+43PQ~a^Eh~M6U\'z&]ܜɬLIL.Jo0._hd Op#>Cn;H8}դU!^WvRUp{R-u%.7ˀab)+j11@%=keEt#`R0km2À %U;]9kF_JXVzGwSfj~|C*}rTdK*`=p'%HrGr4zRJf`ұg[L\I)|ƁA͑T3ҏcNzjZ>U&Ԭsz9!.v. GĿ}& ,_Z;\Je3vTSʃLEMРqO%e|ʢlN)xx4-n2׃|oTZh966?+7ZsP~asK<Ҡ}z0ۛ8L+sã׷fb8Hq@7t[}te`xtO/{!܈ϺͦV ۏTqPfM$tdY!ĎV͔}ю" IQuY}}y~?xZ`mTǤ{ǎHǙm)wmV%A/ rH3V"a o :v[4p.`ejp%lDn4@[Ms4]VZaI9==S倻b7џ/# jVn~ V `yoQ;CLs󚧡1hy$a{C4k:?!IeZfz)yR0YP3ٮzؔ?/Ӓ(oCتfSژUAڹF+3_M?#X 3fY ;lAS9& aPc6F_e).0dHSUNRN?e'A&/T'i9[ȤL-ކǯVWpm)E"lU>5(1"Le ǫ2ɨEsP#ڷhAuZx:O;ϫ{<M|7 ;r>z 'a3f8U eKSgz O'^b=u ޥ,]50T$׳L:~t?TrI7P!Oly̲$iG0AY4ךNl^eGFvWr&I\V !fɵѵ)aVi/0F\U55և4IRoH-|//Ds [vX&OlE ӨvJw-B̏"(7Levm5j_|@߆_KcCj‰G΃T5 No%h¶5>] Xwn/=3n !BXz1V6b̰&#S d$zu)fSԐY6Of+^$9 UG}i{G_B?5<}IINwf]t杚VU/= ]xe֮19 &ijN̎":wRE%7HKBU5 |Bڒ/ܩ=fk6~+Ks@*CcFbB'(]R>*iH@ 1!sRl~7 O$eNMU28g\2}"G E Bt(XyEPzRM uiv]8|"xnܖ!Zh2T$A ~ȄܴTp̀^zƙ:PWdjt\U܊#q\F5qi9$RyJisPcQwr C:FGWL)/^zⰞ:lNԮX ))15H$0I-]I]m+,qkd_NzeI0&Sr^$ S&Ěg -(_PUWk.-O EIa͝ZD4ö4=K0Zz{=UVM4n Iƹb1qE_@"?`*%dܡZy-(JoSJvnu^؏R,v^:rq+~d-{I??b}y.UD'[t`@ZI>ʭUۼV[qz{Mx8aJ8 ~6YCi:vMغ\fN2Arf ¬i[/%\דce^EWĴj9i|zɼ[j W #ګP(PZ1~dÝuҮ.֠Toko`^Gl ܈i*]}}mf^iT'74Yz5*&d P~xh!p-$I`ݒL%OHDWci#W耎3P,ٔӎ|A./Cw-tj2"U!)-:K5`~B o Z;ߟʗͮgg\QhQᕜujP=Ynt`f"~nAjM9^b 8VNndw:`L DA[*EGv.I*4PP?,UQ\je,"9VAb05X͕ ݜ\&ZW %YBbH,ޗY/uaܝ.gҥ] ?4Fs7R r6!cW9%WJdϦ4?Ʒ/th_5E qQLzױ `Qa5WF@-)@oh*vT r| w!+!di$< f?6QyzV$yM~rCovP5~WkYIaVb}z}V,D; 3/IQk YHq"+IJaiDs-s NL6 o~.Ghs"Q;gOK9I58>ރUEeqVj?|Vv߼憝ʒލ;WdUi=3:+9~Q.s/Z1;͔;2w^nNy^Zdl/=<)2 6sI(`!n`k2W.@~FCY qүֿWw̎?cܜ CR )XX5⻔])3$)/z2;^ I!+ uv{lǩZ<:*փn|.7pO9Ћ }tQ6$^ǰ*># V %=re_AE֬KoJ܋f'㷩mӑ [f |nj.#\RupU"%c R Ig'@@r pJxஂĐ#ϥPo+o(BIZg䑧Wfniw512A9=WGG>Ac \;SZPǯ5 TbC3=CW]QHψ"\^;ȾAat|򎸒,;ZKָ )v#z\ _Oy;4"7N u@Ic,(͎9ўZS-ԠL_.Ю͓hXLKWŰN"ك 4oE] )busbp\㗊O9]QK_U]Y9GjY䠺YFHL⡦S9fyd@U`ųk Y!GѤq57.8wzyѸ1 e}aÎ>;a?9n%DDglypOGQOf>'DBX7$Ysmϐ%@ÄM7=#q -9 q`2[#"RGhK%n3늆*'Eɳ-[X}6 Yq#W* $*3<-d%E#\\|aYdAaoGKe=KmɶՒv+?9_"b #y"4>Wɷ%ji) |hD/ࢪ$ZWjq0TYoȕP; !*jLFS̒:_/پ- |uEE`OnxJz[€ӑ v^RwLu-k) 1^֙1 Z{'m#}G[N"+šskwkJ*IbS]^ۢ淽ٷ/b0FN?K@"H˂+zEAmxB;㉟4V/:כϷ7ni+Y28ħ} w4ӼXx NǬbR(D߷4 {ӕrh7 kxӥb<;NOd,FK.B6y, a.ht_ y/~b4$5`7:jHc}OqmuQv%"wT rWij+ b[ғQHx>3]' M{'l }5DG;)^bCE3q/ۂJGTOR6חV>eh RG&YB$N3s.jHH{ёFp|'wMN=-1~%_8S߁)XdpSdScXܴ`r \**Wq!If? ÷~sE}Ԋ$=?*Zt[:kg獅$:cJw~jrvYG <yd0\L7 >̯ \X!C /W9{L;NK؈PGV"@R,rdM.q_i#WF4Tl%@yI?λ^BY_Ubc!O-lK|0pЍ VB:$gD>,"G:orau?Q \RTOIE~;s~ENjVc6"A #JpJL sP7y@&V" Tezc_xjDMizKnA,a5c[CLYb[Q Ib !bmc+'J#B?盭$+(5|+;ѰkdYlErϹoZmx4HR%l;,A}VA|9t+)Sq[$^Ew&9v5r4ږY_"=0>"Crǃ@`|E4.Vrgbڨ+zyA77dlv${< bA_~BѵvJ?Ge<((] 6.Yև7z` #1^.Owm/dz3:R/,1 ԲޙThxU, NaK;}ިvۜ?81ҹ]1'cWB:؏+K| nLZF+%sԊ'/#U_[B? fNw6^6$ xPe2PsD!ِl41y\ȒMq~*VH`CneY,S^9!=gfS*y  []7@!|l,fRAR''dg@* 0sv*S!rdᱣĒ8O ՓT`Tr/iy>$*5*zy]O@IyUy#\'R;2?=wYCXn&zCьKЕ 2~$Av%Y pH39(tJC`f.:9s~otK:ckegJiix"EFc6rR,kM$..P[9]4=p4iA7IL6dBr13J}0'Q %z+N S8ҏ)x/Z#k0P;;-X++OWgemRa_RL hPhyMb}`A61^d.iĖAV@IH烞&w#;`0[x35mizj[ pC͠+3˽8qiw$ ~d|#xz~q<4>4psĠu6oy+}/[|3eӈ"WĎ~QK+x?F)V;TQ<r0/ǨٺӪQ쏇SҩS!V&%h@ JSGHAnsl< V ~)x5BMXlB@Y,5'+A,g$@5݊'VNn*jʰQB4 t\YN*{ڍ}L@=g-Ḣp$6BT: R&T2%̷Z7/ء9]=? V532]Oק18v%o3A/\xxhR5@A9sga_1o0<Ғbk)񅗘=3M0UvL£cFN<=v%"$ e$u@ۑ|wVcC 1', {/Zd@E/=+!yv8Uj ?$*Z̩q!CH Bxry~npqͭE4YG,眦vT:^$4g9pzd5w(pZ3'SP4\[A2eDǯ;C$Jao:uGVm '#Z+1k3U?.c4=3o{T 8AiORLK+Ѫ#}hZD~Jrl-x8^Yu z:Ӗu6b.E4l\?0!ͥ_- vs@ #^IXo5}^'X%p뵐BC w/8@A + "f!M }0#I3b"K8X Y%FUz^#=P}(dƐ`&a4y>ga)TUb)Ac=*QS\vi3pn;-Lcg(#X-%qRlmy'Hc[ZgE M 9V"$ zvV s36ByG+H& LŽ+eT ;)qqWn '( W/;[x#f]4+/B\lpj&B_sۤ$5Al;bMG)wpHy]Bbɇ$V^ܹX-` * 9]\l)]"U~I1N3=`S zg}ޖJ1JMw im:)+¶ɓc%5$pa)Ɖρ%~n( +~;Z I1>K0٫$v>TsJU0ӑ';KcTbxD_Kd.W*jiJ[KdZH8sϡJaL:m?ac"ɪ(+9kM2&ֆVدOߎSzhH!t)|WX Oߊ[:BtygR؉O>PVYas0k}CÐk 6ka6:9\qBx\KGôrS>mOPăjg8~Be>$f;pJY l5#R?%kH|LX=-aGHlḓIiЪ7Ra^ޝ-vK &q%~ԔAB'J,PtСI>[L}_̍% "7d%8wk%ge؏<+ý*59W9´l:RVP*ym2% ΢0fQ uURhpAN,y%"JI6hC/$ Ne3>8ma~vX"ĞAEHf,K=}*ih=f]ЌEz{] cv܊j,h{[wBH1(."''5 dqc3s"aܢҕr:Q~)|[d`-\Wb2&&5oೱa&7:N޲N" |Ik0: GQ\},^&36'pHNm~Aࢉh@&ܮY u|X?\ )ԏ>92r[e.P7g(LblI];|*8~[ 0>΀x\`q z[:>F8N`x0{Z풚 ``xҊ4ĉf¼YDJLƓׇ_:RQ%?jj~-̓;7".kiVŞX$.$͕?_/}a2/@ܵl@jHrZ,0_,/#If|׊І3.##0$?膩fUtgSu|:djD(ܙ.Ƥ!P{ D*Br@AC˒05Tg^. >4Аb S/uKH/N`>epJ<+?u,.s~DCy)s?1{AԝJ#&/TgL D09 $[$F$? N!'VWz5R)Ε -7C¿^z@+jy.#C ugI1;}iA. USN=?v8`)۸w2N,@QX< Hx}[nZuK=UÒRaWoY=('!H7[}7UpZ[lG~$\Z !篹 6<b- ِLJ^+KE)F?sNL44Lf*fR n&v! 0\wJ {+iXՅžj/Pȷ:g 9Dֽa\;*bGt P+VT52c< _G?-Wɀl,#fi]]sb8fVl| /yd v W?Ht:K3^/N%@PJCL.z㿘pݬ7 )AcMhoM?S 0FXs Tľ!S馔\O݋Z\$嘣[\LCNAƳQWg"kv}CpPݔh@ 3M`:bQ F}NTUr w #<hߘ2^L^\mXpCO4(PBL 3_qνYiN~1ٳX +ū pzP+ bbD|e' 0}l\v[Nvv$VWDAY:7` +;y-16.#=ղǵ7qߕbzM݈0JtI\au+k'eg)S݊H+ $ JYն+'R f]K6RaVAEDOMI]SfyבeF@LB4t`ڼR8Q=\ 6QU]Y3*ˬSwW>I}A$O ~ 2 `3/``0E 襻?2F);o[ohvSNp {N]p'xuqRF D-,H9]NC}`D{*Ût#_Lj`X93 ޹(ӿ_&PIj(a.g?t=1LÉWI_`gcG&q](pBLt]V$;Jin4$VN =i|DZ'v~Y6 H5Q ?pqP~ۘeWhcGO/[`+ϝ{-ۦ&6Z+Ruh;i:6Ĭ c|\Ի9MA*$N!Dm]p֑/]"謘Z+YT<)}pb bd#L )8ELFWGk"nn[~t^=th_evm}*bR )ր[m@Aieˆ0vt̊>J07[ 띛"1.:Yz%*c }0oސ6DxN#H<@?O]XtOtOP6yp_;'ݓշ1,u)^$)6c /fX' fzڼCm&kzAB^ٝXENLRhIK]Yw]Pڒk0*OQl{hytm ^ZS̐SRUÆ14܁މu)|= &~Fz(9(%+8uznʼn8c :}!IQ&S}]v-5VҌE vDGCkˆ5J m>T#YK2irrZ`h~J F~2U(Va"3[;6{ -,#@ﻟ$/PMhSF*K[1ȗ?,p3qUO#YϪKRg ?ROȡ{ 9~;"ޛ)\0ɳsLj{m@- DE4~GyQ'XlPV/ ʪ@d|u+ҽ$M[~T*`"D:~}qdI8f"nP7Ѥf"PP~*_e!d 1y:i-tv; :Τ |+9*Rk8v6cS޼;y|q;ڀA*,`Zt 'kos }Wa0^X.";=t{ZdM{+f:^smvI׿ hIWXR R̘2OPP !YdM#Ll]= sY{8&! !Ǘ5_1KuC"A/埌պL:^CKXkϯPpZv:lED #5;jRKMO W4.٥sW8f#`9CbkKwNrP3D_u^Ǡ3JBM[ F^A,K^<%jhGGVgrf|?l_ o[k!cP=ldń9G1v*G}#ɍ{;ﬤf~Z.87%Z57ajV6J5 az|^a}0<vP5˱B]jJ|M"o]jGnx@}JA>nԛ}\f L`(ŵB ٖ(]^` D6hIO!FBB!leY ə}|~^fn) |byYblu*7dmX {) `p 4)ŦxO a[ȷKAؗuGp,a*+\[C`t1 GбaEs{3C$_ѥ86Tb;;˧cm"Zɘ`5 ?ԃqx 4kjo$"/Lɥ (}E"7 Q ZjB!p̨#㸕H5md3KvOR`@\a /FFZFx0y^Qm]@vC :K( Xͮ'N'k4=1)}L(g;1Y/ЭHي)dv;7a4DiLf:+^di/>AL<6{UfX롮bvI\ዌ"X-bۍu#F dV(KEѩa@O gi\9C貜QpT(u5 *|=OJ{O*-s_H gyS| GX894#|]c:m ~|<*nٰ_*w>0C4|=<Կ-U~N%]I3O6֓˧ cU=6 =aֺ|g!q5oT[aAGeUPoruPiZ/=WD_ 1J Q{ ii-$kMs=+5,jo^LsK;XYvSr"PA(#>Z4$eOVω8HC`uVݦp#mBҰOؿb]O0;"M$ߜ!Z@8\qO Qˡ̈1#ZǥBViw3&.!7[U>ܹ+{%sNJ! ٟxsEug>x+kgfnImU04gtH^N޳w8t8px$"0%5]6=|~^{@W͌iǐQ !pE?*҄.d+u\f1ń,+5w`&<|p5]NSBcDeB|ZZ ȳ/5{OB`eʸ} Ae98lķ '%\Hk=,ڙ/`șg_,\kN]tɳ*MW[QY0̩8=օN' R„; #bK*JhmJU? m4|M)ieˆ263סL?ʫ?OwiF;%`,VP; Vea*(bŸ2öf\ad^{ M׭<7W`pW9mv7L_=5:5b'P]ug%`PЙ~oik)@oO,؝u=rukď9uo¨y|&эM&Ds)e>:^fݗ-OEz BײǗ##]#Dk+v&7>Ѣ6b!,":2⻎iǖYywgV˩j4<p` Ʃ~LbٓLmjɏ @T +ZaHTԡ]3URxk@Ű8s ;gCo5xck-2H!@77C9^\w7OƵL0 9r,)acz\1uaTڜc0M1Lm#ա ݌Őn_>C %U0/o~EQ򸅞a,+IdtB}-hۂ1b?7%"¤x1B*& )JgÙ FP1VUokTX:i bܢa|/ ܾQբ{QGpT0J/zC.2ICdefcsZE^c8(p$_aq zGh@@0dJ!PYs(@15W_G;NZ-8uch{@u8*vc:t'絻@l~P\oZjWuj[$$C3l܀{ b,Ց m+fIfUOQH?ǣGF>:-z%G;UiDz})]/eK_(gfHpVa:Bz#n;_Pg6 zf2*@*kEjr~Թ}H/l)>ILF\[>i1<-ƅ!9fƛ OkG@D ^;pk++g]O]C Ҽ+~vKqq*+;g*>$(CoLj;>x1Yv,Yy.F$rNDtVRjf MɋK!uhvĹV AVFT lea ӦLzZ`"'.IWSZ3LOm6 B m鬀k],r|[Z/Kѯ>UVv(οQ"#Qjs.;Sv2ep k3Q)Nf3K.YCAid!ɑ`OD]K}ЅZRRVGAn# >FMLntynԣ}}ϖTAe{nӃgz˾pP i)+58` ZSxU-_:gBvO=TXu'g * Ŕ -Nӣ1iٰLڎm R|4ǔFNpS {':1sbᄙ&nr;xuy,J)8D 1\~@}b+s*" )T<ȥY85}4 RU=$)ve1_Z/'aqݗ< @!Sw\X.$7k0)S`Z#OPNtuA ҹ^mcU1lW Y~Bǡ-ݳH7ȬJ3I8c&rXj81HĻV;ɽ5!nY o+zJPSUg&\("+Yuq $ IஃP4k롆5~g%+z//=偸T5 mWsw}zİ E.'+mFܧz̠zN/iQ3n$Z)v < 䙚-SiKܣ35ћ2n#DZC#ީ頽<\;tFePB!'%OngGu}N_!1YrEBC&HRFd*uORr) bvٙz:>@dG9L*@F/Mܨ7ڷHX[!h);/]vGLl%V:ty[EP-2l1_P d7H:Lv$\ybj ip@MXqߘs^u\.s\T٧Pm'%GE4zyd` .۪L^u⇐+1&{F^>$ =R2AӭAhᓪžq*UɻL agcK*T2uu_&#Y+´@mR3AAGq_F?>CNEUQ}#)O# c^{LMb|Qp mLzC7n-k]6\H!f.4(/_X1ϑ+ty! Ik?co"0K7[-8ŗ+-FJ3d`FV!7 ɪ׶hB\yyu`GjYco\S]sz+F!v"N񃍜m7ubT5TW(ȅVw>ʣ^xjf}†yjW| 厺Y\Nh;gaD.VẊ]+8K<' zt=M4^?h!jt'?5S몉gѐ\f*_*?.3% l#?^ >=(ȌȈ#3e&*y>0! zÛ&QV/1ܚ nq%~X 3JGMJ0RaTI!4X+!&5j#8 #RMS$Zϩ5 ft"#8i'3X>=A>DTϲ ~.,A1H e?~e"n$h6UN`"gr:E%%VsqMC}o^ P^̍?cq0Olu'Vly't~BT_;YYd2G/r7H1WÀaF _My+ɕ-fEt|[a?ثVCSubq81uټr۽ļnjƅ)˂wa`cÒ%B21myPQ{FEF 2;[q0 P8@(= n)Py e e2J@>|D"۪1a읟qp ,6SO뢀}c}+kq+Y쵰;۶*i@-VаZJ̊N:GUaQ.q] pZȁ%v"+,`2Ϝ{I7KCg\7ae2/Iy#%%z)H }N1itm/oSr 6)ÎN 2(%BPv-Dh#tdbXŪp0:CBLL ]vfh W%E6d}ٺAc0cL@h $1)A<&lWgPաSeVh^$3 cmKzD='ks!dwk0C1~ULj, ts 7z"bS!-҃l-Zh*܃h'u&BОmg3 -C3u8rgxWN)|H 2[95#ׯ 43 ${,}CF,a;އUxL6 m9<{"9շ,Lv?=HnT"а}5;:`:~PPR]T𚄂9+Sn hشm!M-Ǩ]V9[o_׆GњcXm _:!ถqO=u"lv4S +i8XL0yD[nCB+} ֎dh̯8i(V<=І79'%#FǦPB8ML^# e0#+޴kIS8_$ɌPD>-Z$T"TÊ?nB< Ŧi羈n.(c-c0N 8Yvr +䭀~'M,ܠ=Ms'!O,[ia" ]jU+oR"BAR[#j)Pt:դ,λSck R Hы}l DrO 0ozu^ H k3NHt0LhODd'{,iŝ6${#_jVMr bd׹ȕx?2* Z#Aodwtz6 *Qeŕ1C]ET!ʥ ЀVtn{J8f2y'ii07Ufnbz$(#B71edd4jtZ,>Jt+P_6!vH# >ӷc$+UkjWs(g@vJڠI+m'έd05_=4(YĤsb&fK W= y\q4Q n  Xњ+ZhtCh;5|I%v LD-ױlCZw)Tq۸҇ubE29wBѨ.,$X2DrCΩNNE;m |5rrt4vD(:8TY22 >#oaJ zKp2I fy/ 3z7Po"liZx6 WNUqh)+*U]:vl-B z:f8)fG<;TNE{4AErjB' ?BIVh^St>7}/ rHd" ˗Isb>3jpk93~I&9LnN"on'OrLӦˍQ{oϠTو 8TZQuPX% U*Z N3[iƌ'ϛe=*~TR'm(K0 DBW]TLpb5'W,,"ޔ˄u`TX:><{$dR#=%4hC~r*rWYupx/gW6tRBc2mqLݚ1P>k sCݎ<$~/ EI҉5κSl菟-П| .n1ȂNzݤQC%qKKGfC;_ ۀ@ݺjC$Hڟp(پғx 7Xb3î64 _XQg[X^7{&?o~M7xwr~cu,(k/?[a>Sؑ\; 5 ~+B5=k~gxߦ2@0Bfe8ԝO:LvBֻ}T ҴAar$Zͼݦ5^~L-s۝K'M9[?>h+L `M"kxF ewuלE9i }xOwR*)Ryz\bsЛE427uk0ݪ7x2ޙ ,oF T9oGfSeу&]"'34{48S k#[Wukg@9$ [f>1Xo{^Gۂ@ѝPpQg2|va^u}"ټ us%W״g~Rm{(g bئ-Ǧ2bxd)kzN"> `< Adkg%y<5#m- Y|VvP,>9s;.fWz1TUDnA>=/[*-Cl+lY;oo!&`ߊWb@xR" T#+ K,e_?_n:T !w_T)hoE4I|Mc|ēfo!LPfZHVM|Ң46eT '1Mmd9vW%t} p!4iRKRm۰q~mɐӳOL)(-ԧG"J9X ԞYsκEtш/!U )3]Njۧox+26hR3,Ÿq rt/}57ӐDwrVa[ k4͡wCL}-8,1*Y%碫ZEWAu5_y3%=wWWQXДwW Þ h|(Q3B̝Fk8~T׏DW:ol:6oϋ$v-Qjo0pCHmo%$M٠)=hJձjDzNm._[Aȼeɪ`sjJ oe$-9po7:3?&] q8 @rwMɘf#z)A \O1D6۔) OH Ww9)`Gz"y,x|B w:/\|Ј &K]W ?VX[M9PZ1\`%o}GL Ԫԏ>R1Lz~m/.F Jtifh5Y5[^uYDڣ|k/̰Pyϣ\1)tS |K$hh%i}X2N\ "+x2Z=}Vmpղ^>}qL8$ Yć/|Bf0@UT>{ݙۃ&8D0c+c%^է) lz4:*CDOOkV@eRJXJ"YR_Rqز<% )4cSϾXedžCwQ2rp[Un >v7N<kdRؘswjIZ97Ԓ0s9el$z!QH …$$A_䴲2G*fCeMJ"] 곕\qR:N "h@*V *faѿ1x=8nwoA~a{ڨARLv.V' MceRZ8 Z\[-)ʼ]r$JZ7TI{7%a3ˌO}1xК3~ dK`N;++t ,iZON>;`r'֑߄uM srwJB=cEki?=Q$<n$O Jig"J0@+3:Wg{i5NAFgl%ݟ<Ů3/}Kc FnE:zĵh.OU53+9k\&#;w vn}$TB*ؐ6 fFεė ,5mݽEz倚:ur6QGI/EVªWGk=śj7*ᅄ/NN̴i5CE2uڔK*0S $DMM{3Ԗ޽yA-72\2TՓM p ZprY<ݛ'%LJ8ߢuE;Hdl]M(}6Oiݒȱs.yU'Awnk%j>d0\!2"YAXx}gPhi'<WYÇwhU`%-b8(%: z(&o9j̉[hŔx@]3v;q ,8qY]+; ?vůR/+A- ~|bMGà1zQmʼrI;L {9:`pw}'ct{ɀ!Q,\@'_lWvWHo8v7Z-pC%+nR}UL#H@PnDhd,{͞d{mR:Jjj3luBJh[@\Ni9$x6E`idxwLnFTdn"0<*-IwͭR]YW .&wwp2=.Z$bҟ^o4qP.%*&Q)Fh1:#s\(/J9\^E]ׁOtV?FLg½P#~&{nv]=BrHLАQiɒꭸlZ%JgږU!}71+;L8Y]`9wjTyNg*QB*:D=q`n 㥋&c qGAcwn\ٗņx׵Jٳ"Jaĵ؍ \ &'+<>RlA6AgVH)Wc2%/8~wGw (^4c]<|$=*PU@^ *q3nA+!P)VUF"kb6>S2lA3 hx  ;_>F-nEVucZS9 [ }9obu 8bUqtvNM]3OX5 ;C  t VaM5wi2îdw@C?m)ZA`~z"Խrm@C6V,*7;d!M3Ӊsiyd'SRp RaFD*`5~#j*s!)i"LRvs Ѭ)tRIn@[j!|Xl\:٤/qgŖ̪?%#O8sQC;wid|+°ڧ7Ќw~^lb"eJ&)X-nyTћM?y6 Cԛ9%~؛N8ԫgJPS;7xP;UKBDϼV+ W&0~$Nm >4eHmѬ@_(dz' Rϭ!9Loţ%hm? x.Ƴs^r Z!~v)6"R#Oî&z)R];4Dш3w1G$Ĉp^"aހM6TYaTƦV3N_ɇxI9`T,~&a-3O@<7zwt^9is$ N&1EMO \elq(Ί#b$@ca$;D +ZV8ȑBLG- h;ԝ"5t a~>P_}\C4'I 5Փt p/7Zx?$O~]R&g n)ȠOPKoj+o?EMJCұJkf"Z!@Gv b>1prӺ6! 8a]2Z}__C`Q%:RMeA~leO0 D,[ox 0Wi{4=6:pou~O/o*s<{港j{up9cWg}Ot)DJq=] .IWֳE1yɵ]kVu8<4+AѨ쪰6bMp)~``HQ$C>ffE(f$ŜzqŜUND|*÷OQWx4~0빋өlY[;͔R3KbbE{8 "8 )d.`y.IR41HNa}-vmX?ON!Y,5mϒ+w:Q›-65|RX뺃43ѩGvGC(WvP~RA:!z֑mzFb'ㄆGV87uvH\O[%ԂY&;et.skVmvN*ߣ YpA }lWu&CJ~S RkiLgr3Mߨ<+0&V/-BQ/kFoE:p2J7**N<;Nh=ȶ~W"3yCEͷ-S.W zplä獼L=.Wc@Nz{_6y's /7R)Sn_0F*ɘo65N]X^|>0[54*B`~i<ڜ?˾mD.;r[YUȜ<O5-O 0&z7b"l,!@(">ojSo{3Z90d LWeo"vƬoFԡi3;Õ'O ppQ|uBS H΃T g.s!kK/,Fs.^j k fҍV{ eQPn$f*>> `L}>Ze-Հ p0@E6u!Q8bFU;՞W:EM)8ކFZgJU?P(3O%JjPTi.g9iC#* z+*DGbQM R K"4B?` XF<&E/58F+DjS1ږ~vn0\eq!L୫KL`sByB*k4=$$"r4  2>-rJsLK|u/G:P|e_bIO)&o3AAF CCnB 䯆-k{ce> Zjj.!]gX2(Y=vl\y< 5.4$if!htN=r\{t`CHkuԊ9H`d EvG e\;\b&MK>Yyc>! Qp?wXI uc> 3M{8) mG&$-yv=荱F Yރő4$؄({z90z?g)_9u:k ENzI T.& Ku]NpnN>Aϥ~ 찛oh~IEd"tWRtIJWcNVd| *z7p}lIt,eZ/-Mȸ|!8r.vc gʹ=ŘзśtH^cRoᆣ,;搲z5.Jwdw|ihMU@^pПQGVl W q̌sȸ6QW 3旎Y//аGJ:9 n`i/UfYd3:Sk0Mvl,Y&1Ux-F[,PL,c` wy"(DP~3j?Td-5W.+.rg7QC A:ǘeT{sp^5vZ͇8/Gmtݍ2z2ZA9"Q:+Ďpf)~__$[DrquAӂO)e[ʃxH$B4Mo>P"07JGOv ̑@$*p>6$=S.D೿t(CNz+U1s0(ХBK7mPk EV'3+~_\R^_fsБB? oac?lXGݵɣgv8`H[0T[,ҋcLJ Q_\sJOx_|"W6">pos˒Hsn@)? ִfޢѾQƼDGB19IfV5J;=pJ6/ͳ\$S|+klUx8Ez7E_q<(t?S24p tVg{**UKgb6dS¼Rτq󟤝tD] PևvdUᡊs>5>.K*yʽ!3<]4 4e-qI[2ےF, %?l5%U07jCǥ+] "Jl}w'⑬(VƑa"x"XZj4Vs@4Td-X $HnU<ff+ Ukq x(  ^ p7<(;.vx\ kH{(_5{ÚΏ$пC~(:Xy-Ǡ:&GiVۢ1A>ۙ;Ֆ1 8dP{?Dii~0ƽ=I"UX\t\]ٻ²cΏ-RB`S36BA?UQd1*)SjdpyB6 Қ#ɟjEƑG$[KeSDP*4_?ㄡ -FAq[!bsȈ.\bN.ܳjevKέQ!I YꬰSVrN|[pAY$ޏw=3,XUW=Hz}*I,$+ݧiW6 o4OwAyِ[h2H8yfᘇXX/˭ |);\1sr9.в+3o2qv;2v1({s"aecBI2huMHi?hx0rx~jQ\9ʵRW=!N#=~ďwxA2q ݸ~dv֡c-UPCX]~:U]>hJGU[{0"]raV:܆yt P }7 E=MgfkLz@pZ u+|l{rbOJeBQȿO:ːdew@izS1  gT=!hNz"+~} ]_%{l;r=;c5$ o; G+۝E=0=HWzC kh ?m H: Ct&a1Rڎ~C.a^dwxbN&y/hN\% cnnG2KY˷!iElI*= شE^+ʉgApTR[2* ]i7ňKsycwLmFǶgN\WNn Ŋ?ǶF$Sw-N_-fr2@M {K7h™\.Il))I~UX#^o*rk^ n:j?,3B'Fs?n$M[|I8غm Zh@udV+Nf7q)ᦘJWR){rf%DD~Z`"!Tk-G&b==_\ΊW@@ gShq{y)&I{V[L(&BhPД pG_Rv0~sD[>ԑH_ӕ*٣a%n IJIʠ| j,gzS8lEpaC+&F{iAWU Nd| S=C?< (ra,DcJz8C%!tv3F'-64Xu=N3j)=cW:$&ZXCߎb'`^3&1: uImAi~ɅG[?6Ďf%ryˁl|Qsl$cJ13@թ7ҁQA)bo/G`iR&WS7ߏmXxt&;<4Î\` P.*lqP#te* 1\q1tB2|C8Vx;D@-?ۏF6J3vĜ)VA8ߐI1Ddaمm+q =e?U(Ux@آ1Q~Y`/ՙmVW΁r{LOD5dD.7Qwr.{9R20%Tf}?>m2UaJf@ fEP!&A~zJw,7~)`RQ= r޽}z{y-bjV֚ԴΥOdEjr};>v'ć_ņ(fiyG&`ICCFӐdp<&by5S}>֙);#f r KmCdh3Cuwby|4&-دZ:iMlA7< F<%;ІxǢOq0#?U>ԏ97O}q /ys=#[ 3EdF}T#^"Srfcb~$"UХV7Tq/|Wt8 tV|,gjo$'nF?\؍&u hJNtw;fȘ`®8~@KE19A(u'zC1r“9Ptw~`펰%oˣ,*Vb^Qk t\jh/c;[p-P/dmxXP9dۑ]IB6߰{ E&m N%L|z䱀墕 [sߣЀz G_ :Vʝz֑:xdHPN|pvUm>Fq zZ75GAΓ4fQQ02@Q%3Ϡ|ڰ Y,K3kM"3t&KN`Ws ?}pzƒllr 3kλ3qtٹ25լ+rv1=2.͊ bw]L_[,u +Kd?F!مŰgTW=Lo$@mO;;Yȿ?ХlhAUP]4cSH+$U-n6CDÍ`(葧%ǻxpT-RpjN W{"W;ow]G!^on%.D/>KbK}1w5"2N΋Q05fVa u(%U`f||&uy q~S1RW*B#QļAb߯6AUIQ/*cWqqǒjA@J˥:FUq6JdW P: o>UW`HZ=]zauU)-ҕmQ75Umd'ƅcP/~ E pqĘc§$][ޙYu|QdtRTJbj澝`j*WD9#X#52f K୯gγCV`rXh>^/o >/or1t XW#r .C΄ۨ(xWRTԽlA,ghԯd}GO׷cfR{1MB76F@sT#`ԗ@+iť}:Φ E=?!ԛSxAPlʊd҃iҮHoq<8 GݛT1#Nc0Gw v\aR`,;Ŷ~L 6¿.,OZK2f>T*(GeEpj(|,A4fL$3{:^ !j.}K '`qQjQR \SiP/Dž3 -gKTQƑ|-o$+.~@wI6,V6MDpi'K-"bW4B t>xH FxUT,S Z9ԃ(.. vbp؜W2й#z8IE#*3QϔPR^7_OIĀFVWW`qp;t @J!*n,=1xnc$G:siEfU<%ήW.:)S|dj튣$%m@j̚ A!ü&Z2v3p\j]XKO"OD+*$BWtr<_t7|6pd}$>Zrڳ Jmgϥi 7a0sKϡ3~3e^׹.#nyrNɰFVc.>!@74`B3hsϣyk7ZY]fcԳ?LrR[(:" O30U'VkyF;oo$<(p]"ir(RqHf`~@^>/`\$*CbC.RDխ7c"t@)kMP:Q0[jZgL$w!#n'+AL7XP<2ik"AJZ:0DST-V`,%QGR%hiיZUd“8 Iwm75dm\^/յpw8F5kd9S@ N:&_7ߋ-c\C@ŤB*܄bmC8];8gVAJP;QsyD'L靥6ㅳt"yǯ% fwZ+~}_nfN.,@η5 !-`<]6`XMwSz8qF@(Q&=+q@_~v : i7x[{BSj'{A7gJ@%XMܥl顊,>f7m:, @r񼃥=V/H.=L[29M1o{ efV8hζ]/Py#.Č`I԰]"Me=Bd#zi="뻰.^V3v=i;oMD ?VlۺQڸth,A,&q6N@'Ҵb24Jv?ΰIv-~nG3 |O:n<=Fi!)$nߓOӣU2o;?¬`??VyU"(MUi|K8n=JY3y \w1\jICd2hb@ѐ~IC1N<vA永OBUzOh{lI޲ WhsKaɦc y=n8bT m(͢(%e~+~P+NGgJS̀dz{_nP"b̪X=)$Px$ȋ;^NxS^"6 [4 `l?`ut[z{1LdBSfu%I,9/8oSmx Ϧ%"7ؓ 3IBU>]_P v/1)4G2kK 0.48È LNXbޕk/31Ooq"665q >I.* &:0C10p~e`8ݴl GB M2 Sߓ5MQCȘu}oɊ q!~rdX6x CK9:gO0/BCohWԔkN~fuzoRj,'k#Xmw~襪^48摔xɛϺEhzGm$q֦2"洇6 vaģ" 3=k&f/tr ok (d @yFW08e*n4o3 PA|W.vpmᥣ8M:ξ+Zi +B` #Bv;3!6U:05 &eAΑ#w^*ETBd' Ij:qkm~㒂4vﺄ!Tdz~7: upAo E} ɬk_@ U ~fF6VR 6ǛOG~{lrNot>\T6$T"W|"FrQ| K٨ .ﶙ2U`Á*,2ڕ0RY3.= ew z>d5` Yԥ$7LwOH8(A&s<] pT ~0^TXG.@AP!E})] lӷ#Eu#+>s]*=Q gRB箊whoDhۃdRס4o6JԪR! ̚%%Sʩ >ۤS5>={_莣R<@>'im?[ijvI 7g-2w0zHT]o[~@KXc/Kgjqp챶TS~7ڦǻ%T{k"] p"2/ a/> q4k>{*"y@˻ѵU%Hvp]r Ypjt[iغ 4(-^bj<5q]Q'f@W6<-ƴtA7*Fã&4KƊNȅ1 KBMGsJ|.f=d`t#m*ݖwry[ΊfX .]̭(b]N Jqbl6p#Z%-=0,l[f1bɄ v;pg~ zj|; u`ޱ|I 4Y:IxEr֮Y5 (%˞1Df'HhgW9 vbR}uW*2ҋ[¾AbrfaY(SII95Kn$;0$tX7qƝ_LP%T*_{Y4Nlޒj\Ku<=3Cߐ`aF˯i'9jr2# g| N:Fo[DE'p$h^dixNȋJ)pyW~#7d8@Nud.4T?O I;OXj}hgqQMfee{B݊c^7Np~2uCb;m@I% +k-fR[{2յ),!ZJrNޠp0>4pHFD._1{7h[2D~lc[ Օ=myV;\: [1cE%ѿbp?|b*%ͧBU^ ( cAX9ĹjILj#{]R8Ԏ}:aU];SG4ѭ֫KF_f6 ]TN1QE)Fj y;R1i@j yD"Mu|r"eUOӴdmx 4t$WłZpDyR%CK:>Wc =aBU~kV2<[ɕŒsO^ڵ 3Is!RRߍ >+)%iY4nv}Gq^Fj:OѢm ;;T3R+ L% xT= 2~+LU2C +%^0LyiQA}h돡 LR:Vɠ  *NV4^:% "!­V}gW O4vNZDkuʇX|H;ק? cm3!a׺ :EPR qN(liXA˚AٷmR}u-t R$@9t*GL:\Ʃ2[%mMlX^hfW tWY5_ 0Sq سp']:iEִ+gz\q,=茅)M\@Pmz9:]I OwxT** .;ZIҗJ撓KzYX-I 8tu.\Ldc$A'*d۲MhG+,'vP^yf ϻ2qs }v 13EM6\_ RƗf6K8$]}:9{HSfa]d)=Lt3'hJL6<>lR` y-virg6y#mOkd: 9!gӿpWuphc1`*H FPtF7{|gAE_>TFr R.ka`psӬ m=5IR)XTG7azq`kzP'fA|CQs01j:eq{ZK.pgY#m07BlHAxgW΢dY񏨂JX 株Nlj{&6hG8q0  jG7wנ:X .K"g"0亦UŇ pHEAjuE~u5o6^Ed\D%MQj%{;!;ل.\(;\Tߓ?BBb1HNZr~2Hj~>Z8!t^{ˌB嘋y}`ӂ®wLd8&2W=c(\Њ8eW;(Re=OR߭jD+/Tk8Qd{(⤒t߫RO&RaΥ+0qRc"{cd;yc%-.ӗ)ǗCS=̤wr2'>Dnj葯u-ߊKW}ָP] %P V8<7+%3z0܊ P!p#[6Pv_|6Z0 2HU5Y>x[WeԠ`&_&;ať!-.޴rj~Hmc{ h#LJ}-?7(usHWo72>K*VsHmRx3f aBx?3]U)\ߕs&XE$<D//kJ4i>I,5̼v+Ցfa'COkfΒta ќ+|c{ EO{'}Feig2k-rE/ xj}2tJ e˚aL2bfZzEc$m]k/2h] dh/iM8OfI)=Zo:[ MЇUŠCskf"ZAi1=.df²Ƀtc{3HMX֝.2Kbnͱs]k\XwC UNR{|<B u1ps}a7 }аlh0oKTVePLD+|ܥu܃zr?lP&NR2<Ä>8$IGH* b\IN `wX+jr~mMUO#.VŵA 1ol`I`֓8f{f •g[ƺ `oܤά9'CFq"Z [>|ܷZ-/jCU?;uDQ`"j~LPC;NM)P6Ets.$N4$6{4Y{`x2HD!0q?i^X A]7/w ǚ67c#ܗ*k (>wce8Rv$*X?KƩgȠ3r(2?F%|*?լxkH,ܟ$oM,KQ[̽i)P.'l5eey /6b@R ~./] 1K__y.!CEjY5SG-MDZt`ևyq#5#,3R}"冯)`d~v?e\'lr\B$T6/ڲ\ҤʓВg>+=biJ(2N!ܱ*>_F)ߖGST}դ3%F⚀^Y⁻1R2 :_{R::}ASl e!쇟?yWI }[4 <7N&P!JpW݊+VHsP9~W땏3 z'1oTC)pE6DެRd]WBi>̔JhruSWE1Ad"7,:㤋k1Y*O 7dٟb>E,7וܪz2kb(Z>t#,wAO@9.}}^\U6¶7m!f![v#! O}*Pag>k!~m7Tf=Mgи@vϴ3͙rN#A(OFɝ\go'擑X< Yxt/cic_ 6U 𫝒c?݋\OjY8 Hmn'mFnRJ ǘ釦[-E̳ `ooP5œ,|…?%KQr}˕پHIiӹȗsT S4C/57hS \xa0S4,zEtEn5N qG}S\қ7+3?4,IKzEW∹p T.LZZ[݀5m<\ ;o0$*k{?6-5t7'yؾ(z]R:67zdYAd7Z׻}/" 7@ZS:}- BiIiO:JG|Q(SMxSqXE;熃pOSn黓5(k#-@"8`λ,Ea Y0(#h5ÊcoCVv=D%U>]53/rO;{mzTz`Jr/w$|J}L[:&h6}PHM+tES;i[xqħ܏qitbBz)㇓DsA9F5~C^_SZ?% %#=vV s@;ego\)8QC4YPÝoaFU5)M7-f|g5!̅֗/MLj|3W5]`Yɶ) l屃Foּ. uq,)BтA͈mBd3#/Xݔ+ M JM[7 MZ`rGB9{>!2c]'vqtmO8i+3DIxF\2z9 X1XlRA}7B42_n_tatFg(?WKsχ¤oQ’TԤ"D 吃0[a(0tG[ J g0Y(5jiy~E 1_Z<^vKЉ9ĉWlHk ^|YTayA |,_PRz'I[區ѻ$T"l¡LUTkg^+ YocridQO}Vz5%WKCãᑔ,"?pX VJO~kR(#ug/x =].::`@E4~/&|5OXJxzYiqWGG0$.5?Bk`n0 VX3B U_fFv݋"7pov,=4KP#=Q\^Y@%rNpM'\9BI~m`ݞ+#ЯMrֺ"#!p;|8,ˑ*aKw,]kA4L_ٳHs)J{dXfff(uK7ۄ&ؕAD0T: m}ɽ9q 5y[n]îƳ[ x%(> JJIK./Y0{ Ly<Oԗ팒3AQVz0F^|z9 !"=h\]] 2 u0KoV#]L:V2%'2gyEk|3b9Hʁ2x>sYh));#bP;n&2u7-FWzo4)mL1q{/s<(S[0f2|u.'y1K() l #9%-KD,LsύzA 3j8CWkN9 ucsEZjzVMMr:+W*'xi<61Kp4ҩ|F .09R|;<Ô~XY8rVMT(M۸t]I(lu9MT?6@t`.nƛn;&/)f͹hN>{Bj3?6߉S$@g$\lܮ,S Sa51i.fɖVg&w̲!Ԉ .b#ӟC$6W( R/6ᕝQT8U {V`ruڪJ1hr ]⻞_6_[7&#rHBJ7 jCEB"՞|'*z')[*w22)aw)4GP"iqq@=xOmCpT~h#+t6îR_j6{z+2#g`*dS{>e#"%lA<`,R*4LA%tuSf ' MZ*X{%3p֖R2:x8fJSX|{CN?ee"n,K|?3lWq ^v.XYm5d]u-G$U0+yݽy,)*:~=EKo6e*F0_TZTʃzW2]elN$DO <([s 8~? IlM#`idBHH)b94 ~6D-<ܝLN!7:\\cĵAP]y]tzp0[[ʝu_El@<ԯ(;V\dZNJ~dlC1dHHdu//(r g" ya~4|.#G Ҭϐi ֚其ZV£ ĈF(S$\JL{x &+Nb8:#Meʀx+-3E?6< 5#IT[nd5&( b٩ya<΃!zZ'{zVx`5P.ast7'Pꙩn<3f@:jާcVG@6xHiPy+7/䇞cVu wIbi*zC0#Ktu=[/ˉP|r#ϯŮzt]ٱTPNLwڿ]S04}ű{ef?"D\]ENFqwsEgyeۺ6!!II P##R,/뿶tt] 4ec~8;?( P5YD65& ⥺t>8_ VB;:VlQgb WNGah~ECVt ;w{Š1ҘP$u8M#5XJBof@a*bdnMqp m,~|8-r-M9 #Ͼg>PQI!eEe5VʎüFJ@|ᖫt(a\Pmc܌f%#+I3˰ZFs좦.F,Qq+jB,͗+T[Dh̨>ֵT#-?#U|, q!MNambJ0f ׻5z=4ON #H,p%[897dUmڥYsl&~p -z7 (َv;%wm# ʳDf?*`1mJd X`jqp  aSeyG(+JE+y3읲ْ$7ț3igwt.X k0x.4_KNcr'@ɋJ{uVN}K)K.Ո(躀r=A~@`lOA%B9JG^*P|key\Ȇbe!72pfբb̘Tǘ XQ;'/ a<ƪ7r΀gt;8,tj;Mlf(Ŋ"ٸ~V`pDC%"i$,H(7݉p &+DIs0#?D,>NZCT4eؐFʓl2=+ڤ+ "$8ݹ0ZQP EHI&wp{+Ԏl( tK77gw QN]cO)[F`5H93hZ.v]:lФy uArTp snAaUBcӣ_PMXkJ7;ȵ"bŌ|DK!χm]:v`ŕ C~)8;L+܂Dp/9@Ձ/lPjb)FnJ=D(suVւa{9%# rF!y鲬)k4\ j;y1rl;Ɯ)sʚmC?4-"qT|3?UTs4=_́{V14eWɗ ST‘75gN뷭="ք[(#<7GǨS;,AS &_+VB0zO{ m5,n+=anDiGD=#mqhn&՝HUvKclN%HOrўXM|a7r,?6<8Y~~*qD3zM@yH SׅKDxxt H>Z8 ^Ϋm KG8:Ag@Aat3%K[@3iY OLbs ]֍IET˺统w`4)  s-ĢxD6"W8T6_24tr p,QE^έ;VHV16DdZ?ͯs<arQɄawOu>H] p'aƫ)OE `C\ >Eq؟?g յ/$ϥ-K:xNn z1SЌ_f> n/pvQ󒀼I#tv:s}u"@:sOS"Otҧ W|gB8LY?yG0 \5GI`j*lii- Ov $ Q$Km*g&XA͓V+]!gxTAOX 7ДSQ_DrY_fH&K=ɓ(HGEM15Yρz!{ R&}jee.=Ja'3K 9{D*\uZ1pԫFd7W5wG܁ # vNA7y0"MR5$4̼oA۝Onل:(m*U1 4 ne206/nf/ug;wLWԖt)78}&- SZ^@V8Aߚ;K80H͈",PS)i/DDq !m;"@̽Ï_7kGϓ2>aB'jYD9Erv{I9k(|h~i\%`R0S"4F09^\ҍvx\NiD]Ƥ"UNO9#\sWC%U& U8Q+_BQj0 qED~"hKPKZVD6vD_\.p'Ϛ=>nU'Xۑ%X ),+2WY):S9t1rXtN@v5?DؿꕔAD_i^bC.br,얯8ov"+ASZñj8xohXS~K. h6reZg`yhSև8K٥jhdl߷{D$9vxWG(58FߡyCg[s̋ALAScaBLis¥ȇA kޒ )ҞA)@ԫL<ܽDV/{ /LL#%:H̬`WkԳr;6.n(7x Iaܷa/%r\C&o^o4c6%,3{gxI(pE-~dZ{\:|B͎CY  oaU+3sB3T# \P\vNuNL; !OzJ$ >lT(۾ >P,qRKpI#8,po4?ۄgLeJ|&:i= D }}u@zz3|n\T9 `?d@m_\ek7?ɂ1 :ZXs4p$@%=gb0mИ-tW@\2^;?ľ7E)N7㢪:d86KTtWa`7shGF!Y0I{^mQc&lHjC]=U&UaGgYp4MS UgmɨFΌd .${Ӥi-zWNi/9bw|Y9=V+K\vlt!8_m 5oPGϩtA.3Z%11CО?MbtӌwQ-1('1iM|p:?!eˤ|3o#yqkq(7MnJ^#BY񀈠؁Ij6~y X~m@D$q&b] H+-e6_A eҼ}h.$f.0PYcs Fb0gG0%F2S+Pߤ/*f_9#aNߞ RA56reUA!=s{ҘJ{awUzbJD7 +~ke,]w8N9O7@\%~KR >ac0SӸ7MʼPpҎtyMGBZ!y<&eou~g9]=To ʥ0u^B+Ԃd`Jȍ}-|S) _ܫV|V!iD\M52/u4qut'=6@ ʬq9S@#gٜVaS X c8 !'B y~(@)u(ۖdžbsL~`3eGLՆpF΀eSX: ˲5‰ƺ4Ȧ.!rb3jk ~%@5eʏPKG:6M.5n! b[ P"dž.LHzQrᝅ)"h%?$w0 hT*,*AۚDһy:?֜Ƀ7nQnM?;xf34Gx7߬W@aJuBW/_q:miLHN dJ=A1 ^BaX#EMخY}dž- p+-Dϸ#ۆJCTJ Sߐ1;Kq@7, d2̧+*JHԿ?CB"d"H9DS4KSlgP1Y$#)ߓY޻SjP!э~+V|Q' DM>*7{X):wm]lVkz93߱ $}), 22Δ :a3E$2Pƒ73 7̽_͠1 .ֹxD۝mX61@VЂGG;*V/^ݤM D"D@+!Ͷ=tӊg#CkLM@u{A0 LP7[~aY4d'U%ӒVofM(~zi C˧ +b౧4BfA@ĘHeK}R `̴ab{UiCBޟ|4EEyF̔t,N29("B>_r ٪7d\}]2,x,#"c- W љÎ=?%$~vfhKȋ룄$7jP (2v+YWN'CɯbC'[Eb̐@-jwivZ|7H|PEEH}1ΒzSL2]b2s1'ה$m8pR9)cg3e,)kY nW1~V:xe|Q>@#Y>P5#*9 X76uSffs kMn1; -ơ_YP/V- 9JM bxԸC/DM.W9w#xFQòBt*IZad='&㓨̍)w}QV^ԉm5?t2ꦊ4/Q*DVoh}H<޳77`sh]ogt:gYvBOāpggj0V ~5W,)u sn4B0Nbp@]ݮ۱Ax/h' m+!;G7ɍyG;rX46`)^IT|z)/Ĩi)ND` D n\aw<tP36*&rLs[w#3أ\1n{&RIRR} e+Z*)ns[+V%ޚ4 V'5Dz/"',i6zT3=! ?HiJ<['M͖4:qqtϬDqPQnq[:)tSxoM)v~7FPZ^v8q ]L5-064_ U:X3vLw:3G"(#!BmӨg80)T6s6THm*鳑1֦ _yU93 W2v#]:(|O/0*d7=3ԥZZ \q|I}~ɚGX ۂ 7ޣU0bBzA_W _ |m0]s̑ߖ8(]g{v6M~ AGԨs H\@UUƀ5s%಼T܄\8fw5u PZ9k;DI OZ2C7H]=G9sEQm0Vk_ {\}ΞBF>ٮK; )Vڰ jOK$'C3UVԦP "[1}rh";mߛ%:ܳe4k^TzЯҕ6}o}})xIqKW W t+ =?Ѹ gv!M^<ɞ*_P,ǀm7{繞DvY v%cz rʨ-VKfüσP~\5dXS TxKE}l+׽-\ P%z24\&{)3Th^ -CbyjNi */KtT{'K\c  T &VQ#8y}3 ~U=XE+>ÍO7ɉ qi0>,;m`6~Lim#$/٪nl*߳xJ.Q8}z4'ڊ~ SJYf5AbpLJVB+ R Uʌ0X'AO̮!igGuy`?M? 0CKeK 'Î_eǴPżC ɧҥԶ͵ ٙd+]f8Yl {ծ lEߌGeБOrTU_i)uv58CE.p@EXjzuz Е þڨ/y%&,u|ͺ~)wDu,ueW")!u?.`UyN/m<_f$#QYB1C8^ [ 1$^@ v0Ysi>U"Ӫ"zS`4o쉓d@T#U>oX?F՘lidVs{PkMmCܮa[8I(%-GbcjSn$CpE0:58퀠gT=!9g72`dfcpu{HĝYZ S{*#)$@ ?yi Rn^rˍd= {0,xı29)Ws"!FA+#rY{a4bK-Z9Ϲ*t>mUo&0+ИJoly|XzGx|^ͻ Թ"@C 1#'*M\sVsCꟴmӺa~UoBM^94ȁi\Q BCEnm`zE:} +#NP[vO凌V 8rIpEo,RD6.WAks\NK=l϶z /[= ]b$hX˪!1oF'b( Dn._BYr==Y z%c7+q"3| qprBIZ{W1U2/ss5 Y=W1D#3)^j0Yjm|BEtaAT-+$_A.:W898 xtg ΘQ)v^HL{XHpQ%M̅oEI<"f4 '8 ߓ4}(vJ5ʅ+"m߼R2>KϚxGh_LE!Zgڙ4+}Wy8=!BN?^+z6:\Q |ig;i24QT.Ef=<  K/E'Jon rH։.Ou7&.V2ګ؄5Z pn/^LNrjOPWv܉#+Y?(  ! ,F7jn7!h'9>>XQڈMURDi /,ǜI0ؖJl>:MP$@hw&eΎ 1F̶U'&m ZQ۝k A{aFn.w1І<3=zܬGSng`F&4ޫy=r?$`^—M5i;{1m9bJ[V ̘ gӬX̨w_FNt*kKexv%g\1c2a}d>2n6jP2\|M>&~ڬ {Ÿ|?QkV"q{Nn^E_>k KCV:ܡ;Ɩ9O5D > wz8W h8MXw6ճx\.)\=͂"KW4mN!B(x=3Y7j4gQź(kD 'AQ:os?'RrӚ0_>gWвGfeq+Ahbƕ,c_0uhtFfuI\^kdS}zB/*a]gs˱E.俉 ڷ@IVN_/_,: Dss4 iඊxAH&ѕ-KwnZ5v/l!c*K i|^U.dm@hR2f%x付1 _J>Jxl5y`[$V5XHJ3=*@mwA~Iܱ; )+1ϋ0*srΞesPB<c}->R\5`ݘm?ʑmVG#Zl>uuyjJ{( ۍ"H`$mGap!$ԥS1V}6;4L+T:+Hцѽ@:UyVv9-|8ᠹ+*ZwXH]j:){a#3:9Tt k>}a=dwт`Tx7_AA2![2Qn'7Rq^\DۻT[Kq*hs-!gbg220!SM9߃EϹ}#C&.eHMI" V#yIC1 Z 0rpWpLu>~u8-91'׫ϔؑsoIٲqȹ MEՋfU*کkEwG!ÎDۍ+rdsq,u4i5p3K GhԻ-Mlګ/U2-{sU6|r# ݘn7)+3r{<2$UizYs\ gJOqp UQ2jO;ku?~ ~h3u 8=8qY{`Xz*^<R]yUk.[~Yd412& qH@ݮ}B1eoPMVЩ٪SL64Su? GIkg3 ~+A5,@͚e|읍uoO$YSb^|uk16q3CX p QrJ_m4 ^6RvO>jmZ,J.<'F`dY&Xm_GrpZ";n3Q( d\,*\')N@jmoмU0_U:[UjD/F9BN(B9D xWą׫#%ʡ+sp տ"^}b =k™saFvq~ S!O A~x"%Rr2LVˢV&xX,zHm>Qj1Ow/XRV_/1_;tTʈ lε>2jNc5QYO9"gZ4٬NL Z}zrco/6a+7,r٥Ra*vk{ MOe9K-7tXWBЌ^r{lM$P )УOj&@mR/@WR̮,=2YGDdmylzNmuզf .IpVDJ7~%r 14mZc bA5" ҝY p* %wbk.'o!HśdkE`5剴I2ȡ*!Ψv̡}{D9mTx''4w$(WƾQ);]ݸMj#} ɜ%_t=YJ ?LULup4odEհ&a%q+ظXGy)ܓZ=0&RHIJ RoO]N` ^j1y 8niXeܗҽ-{V)4t]5vb= ,{ċf 4ׅՂewRΏFWVl f*6pȣvr{Ta&e߼?XY FӨ\ (-eT9R3nS> dތl_ %ʞ4z|1~@MG&e0lIʤìUDa3*yOw$>\niFA0pK;f$@yH[/N(۝f'aUP؇&1m$YyC006+)Y博 ZA|L '@QVzDbt Z蓄\aNrUI6әFqz2ϣbRJJ FcTh~̟G'awcm\>9vK O@;<+( Ac&,!#$ b}ZKq{s u8M])!U6vb4z;Bxq}ܘm'SAY;ڬ-aЈ@<F#ߗFޯ\w/ /-T6ƥt;7-e*XV"Ajq!1iPz/Z쏗`)p*͉-v#]!fNJjL4N01e -HH@߁&]%6^ӫA62/pZ`l䔍C .E8!ep>?KfT("DM5) vy2m 2WA6` @}qJ`M)LV3 N*(kBޖ^uujk[LdT9qMpCfSɅ>$izy*]ʑu9[=[*a,o쓺y?b2GH fvA }<&=QmI= [Bj;WRQ[}',?;H$д7aqrz +U2uLrmE}0mP+WcsўM0be;Y3^!LKγa ex#.VR^qx `n>?ZM`CU" ®š!Ju+o|bcuw:F}ˮ3$ ]cJs"nGAfFDO_L뚓rA/*(nƕrmf8s zΉ+xfX.db 1HB8 )g#\bY.^(2_߳0~Vq ~b<آgyRZެTaXE>DpI=ix"L;i!pHWF!yELJqGǴFMuzH?4u#Y"#phcW6qtnAYÄtĮ&kgՁp>i'E1P{I"S'|^ '9%)eE:j6Enpd &c8Kws |ǥZ[qȅn,S.{[q nގ%tkiB0߻r3#ECkФk*fA0qyvy星[Z5ӒQa@&!ak5=z-؁ ufoM#:~e,~|&R~] kkAGQЙ/[&㣸+\cG?c.ɉ adXi!<B刂2KwX~h 3GWBsVVFMs/ H- b@U U^7=!4_Y12A_Q^+K(qES)UȲe6 N R6'UU}{*g˫XH}H$<G$: 泌S"o{BwVG^%gk`=v]U7R(6l ΃7֏Q>mP؃j~)yFHN0VGz9'\nOn9ϛj+oa8(DTHgI1^1|>??WTb^Q&nb{#hkTF]2"ªeLZY/|r*z1y)yEģK.S@ja |.@ f>Fl%K9v|von;n5|*,[P9߳wT x :Aan3-zB̼w*嫅n}'xoc %u_Vϲ~ 3B.!T?׽;5ܪ(gqYl{H2n},*Q}Y;>J2%.Ӄ>17gLSLFflo~ ǵZ,nG;">](4`hX3bIj{C,VX!p6۫U}Z1v#?OJJX2;-nd(9Q}%F]ߴ[>>{Ulۋ59}zBPJ_:ii?x`~Lޡ.P[ꓗnQF$Ops0Pgp[1HPO6}ᗭ<@PJu GqR!ˎ6tIY鐍tɁ')nZ5l>mJcKcwrM{ qᚢCxs#W#<`3GTi tʺyi 38= QlkBݾKɌGBU(鬬FkLKyb)1! 5=M2#nHvLj9DB1ZTU+LMdY`pRc,U=f{#CcFԩwDopj%R [)m l,V*9w-6qn,,s}}T&"gkrؼnæW)LN8;PNa %fV}f+"M +x_6-|JA\ - жM|0B%">wb(a1ePKK.4ȁ.nYJZp.q[1=d,,-v8]Lߓq五Vg}evX ZW \' b(.Z}-K*p[rԢQoOB+<\ף nQd6Jt\'m}H/V>D> *T"^u (n)Y 5Ϡ*1XC怆 Jfg ԘYMcGO>aޭ@Um,nJ~Ax5Ks-+iTxV4,#b&kWE|U9unMPi[fk7euv>.okK#d-Nm颈ndEطa53]ZGgAڱS ٵ^~Z 7e ^OPD -t1ηD,cok_%DJ|Hyol?dM)2+pPy}Fr Gfz#m(>kI^BXDW4b>`C+!)OX_[ݒGo'Hf6[`Wu7< YpT,Ij!gD6c[G fA%mYڇ"@[[i#[r ݧ)]!³1(R!.OFmh^K\Qg%CCIU){#z2r9.sHم^= cXY'uKĶӛ ϘΩo@=o^ih2!қLh5l;"2b0ϲg"(EcQxh2X#=Rf'5lv*ү,sv'KY}Sc]4 0gmDŽ\f1fzSDyT3v'M2c&䁧p*,Ķٰ7Jn3sDz{A =*-T G2دȻ{it7FRlyAX>Pܳ*qp;e 7+jA?EQ־%t1sm*)׌?f猹iz3#'X8xߺ*(pVe*2]Γe7LĽJ#CZt'#:[b܊%s HPnyd>J3 R~l^!%GR[ەP@/~MxLw1XPo ?xjcevĕ)-NǃI2;L՘`Rp̃8s* (ĎϻvW2Ci̖&L_-5E= j,t";H#zh"u݋ZC9]&^ =^mE5n[DBn,%Ѧ܉ *o{AL۽le &PajDoM(q)dXWAW)<^,8O#BL!V+-Զ{ϧoX9nC1S*V#|7n]N*P ,O4NnT2*(6 Ql%Jcнv<Ζ6U} ucBD[u;BSE 9Dݓ؊DPvD%vDk=0?}R^pHȵ 4_ފ轺RZ2S/1j}O"gԦǽ1 iеG+l+8hv@7U195,:SHQMډǶsv&TO2q D$,p.yf_fkwNLjp/=l6@O Z $mw$]@)5wFqo2=$ƾmW=QLYޑ!j-:QhMF1 J)ZMhbpO/;f}0d.F}9@@/?̅Myd%? {F*Za=qN𧡮ڬS;7up^)ʐ= Ks9jyN|7(`rQQ |Bɑ\VH&PN夋`ۗHC`/|--D(5UkïvaP,}() HA΄ʟlTKeĄ>Piivrc$y܀˕BʊyYeN<_'[ 9"t%ߊҝ GB)H\qFr)&$ƿ3&ޯ{~Qbvc "Pρ^{| فո g#I4tDu0O"@OU^fp]ɹPnVYДqѱ溕>dUhHfO[򨳲u!Uk^2Uz`z; ?ݻ67M8CKXi&#Tu[Lğėɽ]mz_j/%DmE򔫼lnn4FS>CvCZ(< ;SsV6GGG绪I %?g<'m-`O|/ڃ˹ u6_%<_3[RaSd6fSe}G8xLuB7/llW@W>X[:|gv̿Gg3.+/CJSJ*f(1J,"N˺x 7w'\_2|-hBFH2`MO+EVq(\J Kڌ MWtP2`fE-!TXzo|˘Ծ.oh'0/K50w2/!!lu6ZxK8PNgD>:T2Oj4%e]oC68.۹1:9rF s&p:Uk^9OJ 1'86]iPx:5PUCo2W]iag+aƕE!D A! rGL(pݒyQ`‹?a,o5l1=7Uh#'z/6K$goc/ ˴ª2#6߹%0_U䧒o\e<}7sDi7W:PXЌ)"AާHIx/cmC׍JN2&CuYE@v8SV`;Ca4'U۽ a >)ݑZ1C3B9~xiz\d0'sφú5IV(e/ J߯{'ƟsAR4w2 VڪxpNHdQU} ״cD0(w^[3V6X0ŞuFwrHcG}s=haԪ%>>lplKĀ> (8VSO2Ly- B], "14oƋx'0N"w֎f L/:σi(ަN:WMxzlIa&*D2?me4 RI$@CS*d^px崙-]6F"Ӯ2]^@Z%_ϧv??#''[$SpKNytљS"/yVq:{>Gϩi`9c^vFd ԍJQn̸M},Wd8LW~'F.{{-w(l=l |51p.hqzݿVWF;rvo1B9[9@3{.cVOuEשvg:W8_nU9|ΖKm Ԟ@#i6CGI}žqXr"E-*cf=%EJn0Ƞ,+L=~2) @Rȷ& 覀{ e-4)vr d }3J]6:5_FϻO5 ~79ɣgXw;7nC@(K|gSB#naaE4KgRuP،,p,>\w#!R/ ɷ_!7q]Y7,f x܁/VR7ܵ=!4x,I]/y(FfPPd+@Jǝ҅w>,Cҗ?_/ {VJUL _s8TeT)Alhojex/_!Mc; v } %lBҐCy]HLD \qM5 a$6@ӹg(M5 ҙ!zϰAEs\B!8Y 1Ӗ1Na,i8a j2pX3FUE_eCwi;/U =Wu8>L5? at{JhVsYweg;b9 sLx`'l)YSb#UmWp\ii` U7{FR)OeYQ[+|q{.Ă|w KAk>bб?@ٍAg{}LßKQq;4uFIl~Mч8 goG D0 JoˋiI5kԱ pf2!7mPV#ۯRM'+Q87:Yin Y0{gs4DR|DWOPb »8} N ^Ov>"ʦyib]EH{ ;I^.0E]٭ rLj4~g"򴮴ΓMjxG~[5Rh$Ymj% `jV>pBX2۪1 ,Y_]F*Jg4G.0TL:f;M*FjIpqڶjw~|pm#V}=l<$ׁn ~jvb_40 Z̤;gL51GumH@,#d` 6LM $+<EKQܹX6 $>,UѳǦ7{۟K/lH' ] j RoAg$ g[ʢ;~9uz N_ˢ}#m>qcl5 i}>BǍ`{\ʶZa~*?wBrߧ;1c,vM$F:ܻZeM(K肽^V2m ֥ D1MP+C?c .|b[*OMݳ6rvV/17GQ,09|1X)i(<:DIJvmT{753U }#&[ ;.-2J 2 d &a ?qA " czU{ٴ*rnkKiWŦv? /s,!}Ii|/iuj-`g1jDm"0_^Nޑ̤ f2Fg`Q޹ml 7Œ0pUݲ<5F,"[z[s1磶 e wR ͔+ZPl&$=vbg}wT4fYjLU*H~hu`pD p4[.Z$`Ex>ˣw5$p0W,bt3QCJŜ2Pw +'5S}M9ĶQ㚃kΎ|:]ͮ7*y{P_jg$*^ qptVRM6E6t*µgO؛(#Z=+DJ#}o޳,b#{$ 0Yt3kb+Wl]P BIsQh +7jNfk`2 C rzg\(Ki-2Oc3f2ncJu^~ u隆pg8dZXdwN"zbsyl1Y^k_xq(` N^yS%=}4h#Q1(ɞ6HW^%qg*ELE? ,0_ mXS~5S'(ب|UKcEk %`•k44KznڙC[*IG~XxDhG"+S}D?ck5ѓ^u6;qՙ-444``|Z@]e{wSkcN@,*̇@2?~J,TXB;OT]86|7;:hZJIa$^Zz:|Rè/ƗV X>\ ?@*~l 3U'@zĺL< D'5efKN9jS~WS|~MܹV=6 \]pФ)hv>*my_] aQո ^WW”a9 zŖeZ*2%? - L]{1Ϫjȴ/,@Ӊټ”+ҷxE#HL&ľ;!DsDV9ݝa6@y=Ž ږR FK'f~M-dh?dM!+J9z@4yb zj`&6ŹRHbԄ.T K`)!JSvU84ZM«vQc k$k3DIxȘz0)!V`Ix| $4!b>\?E};Or!Y9X=Fcc^a PMADUQj:/4b[)n {7?{ u O}1AoI #z"l5ѽ!zf͟Gl}cC3]~jsw6,\e00WHD"0XA0K4LL{ES<0/,sJXHL@ Q/nBjg98~"a=: SɾGKxSbn_=!ҜI.f) t%? S_ޞ ;j:|5F(r5!ojPr54 yFpȴ5 С$|X$p"EgbR"e >8"¢:$NZ\q)in&Q'i}{zfҠ0گt@gT.8eZ`$_:. F1z܃3χE9xkmUލ* y#>vCsKutneg|/e9oř>3A|ÔYqfM{ U k'/E߀k+T;Jf j!>H ,,uzxGNjd/-U5PM)U D1 \+6epKAb:5*oY#\2I] P9=:D×j<Ϙ"X6`ۏ=mؒB5 Љl I}v>z3v1.Ɇdǡ[9in .TsƫCy \B}}Ӛme1NLMI1hN(dgɱ{]oxC,ĥ^OÝ mߢ_" E|& f6HZ?0q ~[;+@"Ft36ci;cNGME lhȃU+ wiOV#dTC]E-:U:'9%5 |7Mx:~=# l;5`wxWQ`k_=dh Q {FF2^n(]r7+;pbjzID<6L*_-I FFӁH62hU'O:K)a]{hJ1 A&[Է[z mim@ &LgQ.MjEKڃns'/mw(p0\hJn^K[52tYEai#8'UA'C-E6|O@R `L7bEZ; LD$"a_apA$bww07KŎ*ok/+s+ʖmWN)pgRB=\f}=0>!0DPβ_'v.?_$EŬT:FAh*; Qh^CڌjZ}rYz>bϩK*7p+N.+^9e} Jjx?KPP63G 宥u1MiJ3aN\zDIXN/FkՈ.VoЂP@#!\s5/DYj0 W"1%U`Uo/ 8%Zp+-7jrt(C 4i?;k}r$Wawy_[B r0n۠=̏A?'(aD,N`zP7cq\TM<3m !%y}~)~DXZD Y4_vPgF[JV.7*n jM:XC !ra= AKvӣ$ u 3HuA֗5|-n=K|4b wǫu]!aոH}d޸ 9thgS眈udc5$ sS+|TuW6 %@B#HTR@I;;$6"ɻ[]pC_)]෗Y%mܶ{}KsnM7d(YG-KMKn&~0&[s& =rFXu|j7+!w;gnQ_O*^&;9$_lJP(U#8C=_/]Q™;."ؚZ_Ov+ $I9 pYԵF++!ҷ+?5~4;J*hT)]sֶ ^0B]rs?Bf9f"x@mЊw{:Nz`n{Y~v,Q(wG$lmsbΚ`$g_ɣZ2[y{v?ZBV:^N d@T}5E~k4}1nzV%Gp5<ᑒ2guaL';PSL];ii-S+)-8=*e ׀Zbf!l4+ffH]'H9ϜVފ<b[1yWDL夿4SDq= ,1-PkS* 0/6mbxg܇QIx>L.]&"ج{ʥFB[2a6 *HUDSwJ&F60rl$cTqgj3J BϯM^ש- II֮'tE\̍yN 4=<2v$7{'[?!07HuwQfjqn8GsQflzi)d%2iC;0|Ib[8Xڋ@wC/?T~ǭ6cb {3JKlEfcXn\?C9J;_!#)L_,V[c4Lj69cZ ?;%V&R7`/9rEAجQQ|Mvds0+R] ֧\ LτٶܲL juԊבA?b4~_/EWk]Z>Us+M4l6);EO9hۨs} $Qs(`oHMl ÞBRe?>YX }8c+]T (ղ%" 64 v}YYyKD1RwncIul` R2x `B8sa~鹊M_65e^!3GgztlsM~FF a@FbU>@@ ֊ڔaJpk/he`IogŸ| Cuք$5 j}C\5$ ѽiMUԪ.2,-!,0ОRCmVՇ7 \eكkk.]5,P?,W[0<Xjo?BZT Nw3,W K6%~4כקJ&z%5 `y9lƽ,[NK~n3Ǚ."tbH*IWb3r-#M./sܻm(B@Gz%[X%ȼ2- wQ?,+cd''k=p$KB?1'd_OfQ+Qigڠ2$lG;By)1k퉩$P'T>.}"wK_fDZ6ZS-6pPvwL,nu O 28)S,{F1n0[^/#|~J/>e[i)0n6JaEp24 A"4mlIJ%3S> ?z6R^=:iFL<7Eo?%/ؓN>zi}hNd!u*9&)o|$[2߇+4߾e^|Gϲf[= C>Z.<q`e12 t 4Nd)>8ZyJ3 ucy7NJ9/_, ̅l^TOKndخ+FeF JY BzbBY&ֈ".^pX]jE+wr0KʸWQ:WPtlFЫ腾:ѷ)hiZY3&j0K"DեSjZx'XÕ=LjQio%>cEz6Mts\{]OMƜDo zLeMwk#dsr5VTpt|.YJ->^ʿdW&K&KO-o,X%u5E:Ar4 3]&bl4J֔ 7Eum$)Lm8H(VrQZy^`+2@Q0I(mMU)cG3yJZ<WX"1K/G!q wR2x-4Qܪk7 6w D+p=)i_K%Kh{1KC#wzt$PPdsЫ-/|4bsdﶁ?Pͼ\G!qL|uezڳ-MDIz݀07tdb&[qD{-w}̑ 7 "d*Y)8# ]J^RGُGl;kWj+KGTh\Ʈfi߬d,#iCh4q%L-vHRI nܤ h6O]G VDAur7e? fu.-eٲg%1,4IAajF_k;j59 *K'^ʧ}NP0j@iYr;Ґ%^#)뵛b ;! knɳOνmr3~WHAY鿏cㆣ&[Ho;3%Oq,aMR-JdzsYZ8hOIOM}(On,#X 쨘Ow3fzQ`記H U]{4c#gG0W7ooa%Jy]M46$%KX$ ͔A]wIMbhUQBJ1<^CJy2`Ey{Q5rKތ|%[r@C-f0K+cQNo|ql~y)_mA~96f}M,-8U> 2@ 0rb"*_9u>t)p-c۲ySWu>d5]o@_{W-ir~i">kPQOnf?ɳ+jZenKfS2B}zFR-2Y㜎õ~L&L {w=s!wVFh{M˥DoҮĈ٫t04JΧUNgť8H>x DJ >slPQwS&! v*n6>SK4)xPZ r r.B`l-;F&`ݦڋ Po7>xi '٢8,<$Mz9B/9)uj<%p;G`1̢Co+PI{o1~yT,DI/#nQIYUW(rIP0`w:m!]e>Fq1NŸ;tqH,\!$& [ԙYA|GV2z0&TI HEa9ךg` ^m׫]>sylfو#Ng]x[ :ĊJ\1Cbl;*\k@6od=vc}fIR (1qS*ЇŹ2gъ pE>*Dhqe AEW; PƾY~ =?jjRp^ii`bwo`q["#mM O”E5Wߐ7[ R*p[v]pM2Ue`to }TlrSJ4[9=ېAjg| (q,;ܮKl)އ)RnU82X {=s|׍Zȏ=7`T2sY"P)ObώLJ jb= ?M8)p}^%Cǩwa|2*7&;m)ID%c܄ ͦnC>8gҜkPRm7I.B6J7Gd ͊~Cb6G͛{E+k*r\@:%o9JBI W^?8ۖ~MgZYJ8r} *^E ;AY9Gs`O2~#ݝųxsDh-gPJ(i#.M~w(G|XarJul%2$8<2;m@ :HU˃ifK>S<;3P3x󜥽5$-RsZIQ\]5k:6yq3Vށ`6p@DWH]xY!Je_mt#e9WQ!u}"W/Ζfy!UI 0'2^vOjlJ%1͹>>I~mjs/s| lSxi*`먮v+?^x'ïj|f8> yyGJ.WXǤp\0". *OGcW)~^27c0KLq ,4r. /K'";#X~!,O7cZmTd*>.m:/Ɛ% bDyʫfl9S佭&]΅̱k+NF(M@KA] Dd&ߥpU."O}_.YNb@tX NGi< Z[ْ5T&R0\:0D ɰ87 \]4V~oS[9X"/ۅgv@m60:]5pPՔ(\էkWEy($?2dU&@G_a:a|N]<.3av 'o:dw^ @2XUfϼlsPq6>>vG˒Ӵ,=F| ʬX_FbCWIVmM)PPbμy8ϓ{䖖ęofz-}0L4ƾQ ceUsf=7NX+ZA|VBs?)~Hf}RN򤫷IȲm€V~m Yh8]& (ZRBT]?3]65E5|U(wjƊE@̶!|A)֦250iU㯛3m!] \@oxʭŕ "Һ`㴧IZ=^ \W5+`;ԒHާ!ME?Cr.F}3m(KoƖ]G1FlB vbZE-/"4p >sRݬLt$8/9Zg1ݱͺ; i~4{=Lh ጯ"nlb<%  7g47Zz0iԩ(R(MA,lF#l&fl#>`~^qiYʪ\&Pd`ʪ wl| Y..;ߩ|5WU% 1F10d?yk.WD"bFuG"+j*>Dp((3 #-nN$v,UDmShxt!\퐞jiVÆV0~e<8ϦlpBl%U_N; ݪUS> E>SRn, CVykUyVt"yaaO,Mz'^΁aAX|9 N*#LpY2HhdJ Iޞ/C4H+B?pdc,CXshm|F-tIfqO!6C@I-IhAq TlQ { 菺"҈/D'r@cuK\Љ CybG=3J/SAH)1-Z3}A$ܖu2frf'^5vQB~yBӑa i-|m83["LgR7wO8v }hmOޕCv! 0$=$ةvU?Tr-\ޢqP@T6QsV\_&@D2|88N2(bqm${v(SDeDj)ѸwऀO ڧ=ƪO6d}c^k2=R84xhd,|Ea-qP*wUڿ 'vC#QVB B-C_T & ;` ӲDƱOYq7;f$ml4 % h\0A'9E7JKK>3.vRjO?[V#lI*ŕI^#)ef/K3-# ]HepuB=#oCHe!nO-ocĦ_6Y<> q;lXhc0~:˺o]s>.m,_U|#=Isa.Ŗ'eP#88@4I )pz~Cdi(<8~\k.zb%L,bӠ#쯨&dS;P4s^~k}PFD$ G#FP$FV?ŧu[K`eJtQ%%.dF6LHK9SvT$O؄| bP5քX6vB,,='=]9#[)D-L~?5P {6+={h1DY&0eQjNܟ($ _z'iyꦟ5jim IكצJv:0SC'3lSYR 6Kq *!hw@_dJhO?A˯/E:e<az4-lRef 8OuU,7si*+3Iu:ŒiqdNj@0%9m =`Br١4XꝗF5"X @JkOŜ>RW@s|^c<ϒi~ߘhsZBV<驉֨E-VysZh&xl8BFD@CѬ`Dp>^'ON`GAsV4+7elbf'zS`Q2#lSd{<pVu}RO=o9C=2?|.=WmImEτ Ȟv8(|s /I`wU2F.*Ff4<dž@]kP@a9jeD~ݗ}h M@fɁgLYi69yfbU,jwт9#8.,3fGjlVHt_=e;Y[~*TMؗ/(@EozGZ?ɓ P' [ɞaE쓷-n?c)pcϋAwt{v(z\.1xrL DMzfnDze^^ 8V)s dZV7:'Π4 cZ JúcYUD) +ÄP9fCAN0Q[6C%nzitM_+ϏNh\Cjto60DEX =g-+W>]& [~lkU9yVE]/JۀӭOSVuU0(gOz&s4>1^U#ǵZp5$&$MKq'{Pa{P5zcnjiSͯ'gmW,Wdq"" hَWL_Sނ"[z:.ޒGtD팫#S) .7yu;p <6Pl-n+Ùц99B*-[&,M "a"!ct+ߜE9"h4]o# fFkb=znd9>gtUU) fb}~Am^mR 6F SDٝBtl6hNGӆdx2so+BG- e-fe Ηkdid(lI~ . 4>`i)̃H!&Ja~^b2W_.h)'51*YzleC5;(CM&M@i5Rih(#h5eU, | ڳaY:)gEDl ^oQ!-p0;)IzP>$⬛ .y>\_x6;%GTB?S~/c U&bT )_ܰUmHG| n&h"!y;xaE8!fVdR϶wQC J-$uL Ml\җ~Jk.:O%u"cLCNmdpUmjY ^0mŕd~~*ԲDly%}E'oymN\WR Z/G)@x+8r̀x]N|To8TixqqKҤ|S[ •c:ݓ"F60y?XA;ez,1ˬ`n&x0F Ŋ UqaP?BJg~%fj6i֠.$ټ:<a VY-upg) \ꂢK $hޢzQ]בK럴?'J\X.4mF/]1.@od/G@tBn0yrpx_F Fl@C:VLw1&)UG±YN^㨬NM9/f8ZIr yhJ$ɲnr?zWKO[a̱Nbo MKaB7ny0/D}; \] D ]M=W'RQ̝EN?ӽPD: cEݻ<>о6g{#>ۍFu8(HODLՅx$X7(B GwޑGV>d.`0ضp9l$ MXF]>M?Cp4pol[dl8Lr鲠t3k>f$VMȊQ7tib%&3y0OM]/յ n23S՗1@/8xĮ[jYI2S},R AsrpK0(d-I[*@"%TA9Z@B;S+,dKy'>In+Kr}cQk5iU7۾?hswv9H j4t _,;m&7M?N_;g-| 3+^͛~ !u$#K/T# ڠM0 ,fpUHzHv7$[JnU?0+k8ZO-lV=~2|m; 0_E{I0t) M˼EUYSy6\6z8p18W"?]a6NU?<2{=g_砖YO=]YKNSd 7ZBǽgB8"T ),--"›{n4H餚iV1n`_LF iB({4|k)q$(d(&LD>;E /_oSuɷribuKPJ?5KEcdSmBzƼ'dvXݏ/MB(bO㨇oc,J.VnӝuHpݜ߻\b(J)mQ5}a ' |yJ `R1'MQ۝kuu (L/c6DTY o}I,01Q/$s[sw\ AB@$5 #om^#3ᛸۏqdу r50B`1 IbhɎR2 oh /!^\B*%VaB4R+ 4)ׯF,m6-kv j1eyzuڙI rƔ{`q iAYGC9%a{: GȶfFK!FaZ̀.F ð5雌UB,"ʕd/s+߭)@s5ɀտuM(pF$1\8pP|XJia='b# 58e1xS޳I0o vG(Q!Z5傤^c5HJCU)MZmn&0[m= v;? ey1,GԳ{^ ̲|ծ- Q|.qj^Dz(a0j/2/9N`||Zu3C3Sɵ$L?j_nKzvMs 9Zd7% 0%_`ߛAXW>H=KϴG^RMW}P(%$_I TvħO~@:/:nx t#=li´EvHZCXP_f *ASbRxՔLp[ݾ =u0QF29+,zHRɟ43ZtS "D|Y\-eT9[`׿yyx>mSu*H 1Z.ߴ&01N=&vQѷ$p\ q#5kPeςF6<9lD%͕P=/ys"d p/l{wKbZr0J)?@]?(93iX),'M+XD6{o滯Oô 2$.6Ona"rfIY/}!iԶo\vN^ QCG,S+be,"UDG$ƅj?usT ^I:ux6[$2+U1.=l^mfI$}5QPjQxL*6Z!$ڿ=WF͖e=9[-]1=|A嫑x]TC[h7TwWSXswId[3ere>H\O<ٶ ^)#*N/~: ` 8?%hW:bv* hGL#,qsTmn_lT{ہ晒Uّs##̽ț~&#SstRlLj:c%Pkp9ؠ3}L۶@GD5P1V6IJS5ϫ6UT|/- Kޣisuj8 iu1C.Ï|y.'i|wـ @/zn%?GX}U, Sy' &{,DT<#&sFdqG}w{Ѿs L1|, -Z/cCA##K|+ӯȬ Gv; *Ĥfֺ&OZo2xl6!+(c9/ej87|jDs𘧊ɂڣjt"`_K,\2YRe_˜*Ȕp{ELN+)f`b8 E/{_$FЧuh6[uߟ3)_Zqx5/NA'#ف`RΜKtdd7NhcRx8@"XfVaGyKKQxf#'+z쩯\s8ģ }Z5Todzt]q߫ԏ.9`2\{$t bgG| Wp辣!$9nx~pq0h}W|qq<G߬dtx@6ma_ jpuz/*@>dUm.88"BWɫcI u/E(x2T4vw!n}*KMCdmd&G>H]v޼{6\vhbrwj!mܠ-įlI@,0 |jTVN>AnpuYAҳBAML9J~D5BCd5 P4P%w*>l0ޯ6z*3uq޿ݨ{"XWLRroYT:D IXh)BHNOHō/U1 Yɖ&?;ڵ\>>{9Ccw0X0캢I"QxpҲ&7/+IRMq="-0@tt U)G&~To` ~Z`ř[ Ti€KK [0I(=;i'|j잆EǪ&8D4]K9quE"]8{ g_S0mppHD/A 6g0z.[Hdڦ:`-톸|f5)$acu(3ޟOWb-J2Z8nUuQ\?GQ =)2UۑN_:la ^Pm[*9)`)< ڿ/e\ I):GQ Hȶ6τqoKpa'`>6B%ë7t<􇷃zOt.!F}M!ІQm_nQKgs-'DskKXSvy8%Ҋ"Jqϊs;q*k拉*I~>f \[6?:y{hP-7ɬD])KYqҒ]^9Q O+4-Gq(̮֯IPkTjp!p!,XKQelmhnST2@=\BX|H&ϤОYh9ERE=c}1-+XYEA+Dǫ\RnJ;1g ('ROaP}Q'p rS"39shW!QA5JDk$&5=U9-!WzZaN]$rt*]x"EElR^w6YN9Sӟ{ѹuQ\FPj#>on5 &9 Ag!7h& B`UG70:bEft{C,ҪI 4#f?.i7Q웱r{=,<ٜ\_z1#ڼ]8`bbc76մ>޻.&! C:P ƬK^hshZ{8RNrpG165/NiV3~$,FXa> V>,KS6Z0k>٥(C';O$ y Ր>mg^LaƁhȞsq[h́!ZXR5%|]opi[TwPW,n673Fq¬?V"e7Y෈SҔJD+BxlPN*S(.C`3v<5BU0!'?gT:](|]`MH7~Σ_ZՄh.|s$vվ9ec8(hx A~p)AX{N-`9Vu5݄"{QUf^b s$o֜u=04$.PR}#;8'Ss/qDN'1cƳ;l Sn?61y2e}PĻuBq%4-i&>hFv$-5vb'6vIkpf\Z#An9\P~2f8lվgwOd+K1iT`a~Od g?zʩ+G( dxESg 63>턫r.bǽ-XadUBuH ?tD-րHw\O$ Hw w@$)]? цGf iAbԂYܣlXft1o;#*IHYEj. C1A! G]١n]L`jm|L4nZ/+j`WvF ֛7ɮ"i" +&o≊Z kl]]^51rL=DeIPXCgꖣ6.9PMeS9 d5(xCvY>U VA2̞*J@eCm7q#AS'YPý.+OsBJ^H d˛k&~h*9 =ϗcq0})zjcczK'!Ĉ$ը,H,2a_}iRqQ{V%сhLReD}׉j`gJ (Ȣ!v> { a K|- L[&B`d#6Ա˯ːwYԮUFZn$Ue {6J ❔41̡$u-w[tCX&pdFKɼTț>7V@fAS,E&1hT^4 0+uUqI!&CfG53\| N枽;1AYJ{[˸e!kE:gBA4 nߞ: ghʯŠxe 5Mwkr2/_)шSb0 Xo^L2Sb:cAvDTKk&dԉA94M"?.wRj^~rȫL`"yڸPM>Z|zM.`!F/bS5['Ge7 {pW-.=p bi,c6&ƺ_J)8y%@ }Y|sqC j5׊?GBU3h|:FY( WOTQվlǞTbB ž0Ϧ*5dE-"i-2e?,tF6a߶eY!_~j  Ҍj{čB=eM1 $(uTY*h @ǔ۟veJ }i]$<Ubӻ}zT{(O5ilz2j_S(n :X?F+xuSb[P' ge4x^Z E>0NX9_Z.n<#Qz"G’lIeIGoNͻG;xQF+BklMm _~(4^ UR a~!g}P#eEEf-& /4&ץ!(̎ŷ2B9\GP0}>(m:Zq 75 PbQX}|(Nysą 3`CH1q? NwcoȮ֪+}\(˴ĈlA8 \*9XUF$+4՝M7N|[eu^K>n@UHHJvRDRM3xppF`:6-a*T7K`4%qT1/Œ!ȋ !V&Em7jJ|x),{fȐ+jl/g;bVƂg+u!#KPgtHLwWI:U Ls$iCAj\Jgi/ ĢpVA*"9S6g^f.c ~%DWko |ϯ I1S73^c;\{Ǩ]!mH'N߽S?-WJg6IxWja d0 `<[Ϛ 'u/eT~g|@{_ʿO¥Б+J{Bܝ lpί[ADw-2U.fRbaQ#v'?AL;v= `Uk@|k7  :nlL$ER2]!UfUF( uŜϬZ"4(!YCJL`ӯ$ZQo W*YFerX pCsU WH\O׍q񪡌$g߬.Ba _)wH_8cq]Yn w;;%+O O!;(**Lrl6P'4 &U,V 0PeԤvyDK˲PK^̮u<&֘{Soq;Cn H6Vo<0bfRq-c%yh]!V\ԆU[o!|3Vhm-::ڟE|e{B!LH)O?Zcy?}Q&/];X1o&ǑOgCEjȃ)Rx,ZH-Ur16"*j7F(\^%`iC* W+Bk:[Lρ*on)p_6Xu@2 .oz|o (uy?X`$4G#p| AWr#nZP 2qvopN-5L?|]x$#k#Q_㐔( b85b7wkKƩRC|Ptꢌ:؃tKB]^1fV4&5@DiU`Q>VV`'KMzrԽW ;2k^'s&]E{[ؑ /[6ӐCԠKL@dQsrxN>PI&_/l?PVM'AtQq%ZʱLش llj9ˎYi4N73k`_tYi! lU 9/PK90'3wT4 +`PżrAM"ʡjifKݖm}_9}Ԯ4_  ([lFp6h?/3'V7E+-i!#b}QP휔ϟ)Fwop wt3=7cZy{^N? &j^y؉^WgLHa{NV0}Jd dǙlRC J<7 6YAw\HqM1n@.DDk~ .ipbNu^^C=Ap!>}0BX<"y`_b )ُg|k#w+4@9YRU/Ɛ?QX69 _@u&=ż(QE4/FE.TobI8dɂ!q.K9 GJB0 ]O"f1$奒ƽuF-EAD"?d0EKM ([)QWf_qf=c7 SlcCڿ\h/CM y5`yGVXNM{GQ oڜ&Q})mZϕF=Xu7m=oS/'X{\J){2-zŬN+[P3n1Q9R ^0&=+zԘpѰ /%7IJ_ $`tÒC:id# ds Ri$Yy'!ufiꔴn,K`1 S*Qa u:-t%bnZ 2@i=ղLr-+V]@ )=G"=r!TYlΰ @3bT^PDi఩DaIL{5\C +},#dƙMZo ϸٸcuFX?P/g8vyA L޹ΝdSP A4/-m!Lъ/ lnw.UdMQ墘'H$s:K_ƼFE> ]fy5[ac&!hc58$!q :8hPF`JX2e8ܔD~=POE^Js6m;c Jd8 E`~_tچNa3k&xtI_$M/gQAmԐ'*HApEWO+ o;2 '͓8?a&HlAwL_U_7>`=̞ H6fB%ALME5pH)2q/ҡHD0HryІ.Vt ls,It p^*nw*a`Yңr HY 9(QMo" m嬠}Mh;gd2W^$cTYWt.W8~3t,A>mjYS=0RlJHo?P{=pDك앯85Ƶ<,o p[*4 zo Jbg͂?H`@,;IU2(SLǂR8`~*ڲJ^ J 8&ZB.i ktm鋆/P"J{ l}Еpv)uWPq+90w`z#RT ?y척Wъ< ϭGmzLL @f}9WydJ"CZN,ݭ(KW{m2H鳀I'=6фhFBX7/);dS؍uTϚ#k:VVT_QwIh͊'g?7 bjbaX7˫9}ϛJϷ^F%t4|>N5=6&K6RVA‰FG&\d-+9Zi!2FϞ XjkUK~ٻHPgRIzcj +d @¼ +`SARǥ\ U2EWr4 =,gޫI8 2qצh܇6K}vB`i'yS8R(ഀyP뒴8@9K"zMʲ6H142U$҆#A1ut21uJgGzɋ?˝XN?J曤r!]u_\U;`j# +sHnO3S >ֻRI̥Ϡ4m`٤<}yR?cGE #rUdF"Sޱhيyƛb{EGzTFӋ>dcL! hx!5x\)w;0_W~,_'=s|'[9=`9{,&Go ә1fj:(R6TH|l4W W,8 Y-OT;SVa6 %K_>´.({fͬo?V 7pN%T_a Sd+m'iYXj +^ɇr\d:xeU'"DN!RU'E%kVXaN{ lǯ<r[vk8+nPgkM~wrʋ bQ<ku.B, ;!7A齈ZD>J͙/d6ҕכ!hٕ# C=kBn @HcN`(ƒP%Q"|еʰczZ A?"@t_kY@ 87+z.58oņG0q9%=%w;o) `=GO(,i|%N2o7>ӥI>Qk?vtq[8-gɡWOkG;̮oJR(+FaMDH +MϏ.TLS S ȎxV4fBތdJ!^84ŦO2e`q4x_`stH z뫿Q8^öx/ˌ$:az:ꔾNuJ?ayINX \y%3 ۣh? բIoRg:ϷzPY9R|naFCn}) cp@ [:¬T@*a5}QiUYhӒL0^Y_ ZT?۩fv#}sqOh_DbN@*%9";>n2-أU6m /BH䆗6 xw~d"ݏ1PADI_}jKϑ6EfXw]>GpVt59St)D֘A,ZoOFG|HC\MVrCp|a7bC. ;~J1_^o Gb>^ZXgh?ш W.Z}a ^^KQ5HiL]ܹr#G#; Rw 92ޥQu|qbKڻt[<$!n. ck^"uâ7*S}3V04{}>Z(5Uj0uLZ $w* k,L)<߈=qMV<{nl(z~ <[>k5нCg`BN%A-]i$K$.isQ R{-uWT_DPoAƦH$X9$Y)xP'/ӯmB>.V\(D4RTڅjs\OO\~X.>(=\8b؊UAԙQ [  c '/h< ?6B0tletz |:{ yXPLI35Pl~b}CW^)ۘ⍱}F×ԟxj, I1y4[%Pv1D7Kbd`霖Bi"w#ĵ LuAL#1Y jTmzdXQ+t0U?Śl޿z |]>}X^.L4F;9:!j=Y|Hw"4bG`d yFL}ݯhz %ih pwg~ E3/]w78,a4:$sX= u; {<)N*!Y=XEeb>G٩Nߵ4}%Wye+ 8na)%dyO&w`g˯1GHV?7\rl?S(sV"9"D 3xumQ9:m1>{g) Xg"]4'BPxJ8 lyrZKatv6XϪwF#TF5OGX$ 9ѧ˕TU/4clbr19йPSԈZ,VRmMjܷCadh 9: ۿmZU?̣nܳptBiA0.ꐢЯ5 +x/$Y1smRvzNLiiD̢~Qq[{A\G8+&?>.W{ ?luHtpX@sznMغb9T8 =̒3_]X"Z?C/k:*y PѼ;wR#ETǖӰٚkT`Sq/MlwDɵ#\Bf?77]q^Z ϔ 3>1s>J3$!{+6{o);dyqگE+nP@S{pёib'|eÇ̑~17 ]Z+3ǦF1Ak d ?j%|z; ёBF0?~K9DM#0e1A=JNzSW0xD *mM G%Ujwjb!8Ĭzߵv4D!"]B1@YxI~?1onNO9J֎@I!ݗ!d Ce8ςʶ t!ZPm tEB4=g=UȳKNë"@<)sZ>quEJikriSL1^u 7a{x1W=C؝ĥ1k`Bs,Mbra^hN̎-Sz)-`e,6=߲n.'vp2d%OyLY>k]{Andg*ځtB%3C9u+XlcW0ak{3QTSi%oWWQ*ԟb\gvx^ zw~H@Z:Ziq9=S}ePzv$%P}{ 85QqC'dҞOZ:u WN̷A  vqԚv~2K&ܬ~]9yձuBԋ ޸q=#+3Wp Ta~"{9<%r*a,^XN?uZA=TI,vw+֒9u1$7[A fM ME|PeeSoxxz⧥N"6- vpȯn$,C[0Ȭ)kUa{=Lv}gxl]l U%/t$C&qu'Glj?gy cz #WXau<+pn|03ʡF%,ON䡈$=ob[=Kb|k9FuVXCCUԂvVe~Tw2l)f ?#ۆԀt;n-['Q"e%+44 sdܧA)(*ڌ0 _ dd2ѳ>RFL4t?Up*=;`"lGDjb&>[d`u78gXwtR:Io<6 i}ՠb4;* HB*Tg\x\U98M-}!865¶CضcCaH: ͐J255Ry&RRvChT7'SH#-m*S0 Р񛭙/K#^ gf:ݛvX9Ŷͯ3ۿ"- [ d߄i8?Ozv^z퉀vଷs 7QLPN&6Eeț:4|G>0^7 1\9q ;F_!Fm[f-ax%Zpn[.djٻIF}|0Y$8$YHz5*&={$[%1BvOKq1K Z0TDuv*jW*k=&NEх pv$Jr!w'Toè ~Dm^<3{@w:GY<_7S5] m6 "{hCNe1rtim{ ~wݽ;47E]S ІT ྕ'躬kv%r>dԽxj_YEQОQo<uoϒWFސ)`fkgy64l4T9U3`q%c4&@ꌘЙNZBp,AZzy\$?>س﹉{=25_!dd`Z{|\;'Egb" o!4!X9_=EyY8{IRWwI>BdN3ipܶj/g!`E,'mkn}+$Ȃ*+\/% ^6[ pZ72WD&=)xI޾r* dv?,cR HcP"F>2h0;C3'ms8W)`?e5hK &w.*D Rq; X'3:v[*Lƃ:=SÊ` [CKC!tPHLm„RjOajUx1hab Eu1UO0;3h$.cd,; YRHisXf]O톗 v  2 l.?4cz~1G"Dݔ;NDc6S&ID;QP"yG\Fha!;mܱG[pbfйLȹA$I4%blwi/ŕ3iKw¢Mc.{xW*е젹p貐t'3ˊ>3[vCG|׼h8*q0="58LVX|}Jk'r=ˆg"/y] )Trkv1Jѝ_y 74xfLzI E*M\Hq6 Xy[9|l9]zGp`wxdRmtZp5WS@f v%-6s]Uw]֬Kbt{Q`

.^1ԶxDI@ QQpzHYեzO \8gqϋ [VdpK3B84 {{߷t.qq<2< H ِÒOV *{Q%OեF ҂4AɷbTaob } {kc;ZN vDgNJD ̚iMgKF8٤'w I|e&MGyWdT o {0uP&sAcӦxTäjZo@m#ҾDJM::R':4ѱ]'= uf$!*R?m0Ο2"_#>!{UP O%1l1]{0QVcDu' *@oEۺKpvK3KyrǺuEqWhAsZ5} =aK=̈/M=B /X-P.Aq̋ঢ়K.lqI|wjo-Lڇ{3$Nsce+T/XyUU$xEY$DСSJ!!(b9{[{bH.=++UWzH5qOkPs''b Z,VrZP5аkd~ݜB#Yw>PF ,\PJFd"pմ:%y_ݫ)w;y?Θ1k[>fKӥߒJ!gGc;qD~V3[WC(cAb)ڷ,/M,ʣڜ_粎;0P*FʧFa^9d9$1K\IE3H ݭ,Wh#Hg'~I;Fץhu4p8cQlgFЩ뷭`-ԫHn mξ-L9lW3oZ1 4' F?>),i.T#7t]ꨑ H'5ELR#Jfy֙ +qfжPg7Ů`,3ʊW^+/jp˳hD cc[m* {l )DlPP%Jy:d^YR8M?! I6 W]zOHj*p ].A74ƴsv9FW[5k|ltwj ;v>]{uF/AiI;n[7H޶o=E/G.=K}VEEN5yIQO3bwG; wi#]BD~̓ԍĥ+96a>ZGF6BDf>gF:^m4/`?pB4f)Krd+hfP!J# pN/GJs30x'[4k1{.a& 4 JxȁF極-i Q>Жt(aIe]߸  }4 >dilc+ -,evH:0 {_WQv#"vC'ImN&_D|I"HT] `+'wllIXXB<E!JQUNHomSAxJh]d"biNϒlN- 3gPP?)2ڗÛnz%0$Se}ϫcMN,qdњGGr\w\cT-#ex^Jd1|ylHOkBt2rDʎt6C,!Pܗ+ +H@h-6^ &,3c3L ^ ěq@@6 *LTr.AE]tPt Kޓ }\ý")xn2;QO*(SÌrDq'*af@r$X 1lIjZNv0S= e+s7&+_n=X[}?x!p,:t=%R7rVN}B#K2n !]}b:wꪨ@Xg'Դˤa>Wws {{ /g,ERO_ZiaޓI3Ѳ>Dߥj` LY^WD;1~W};،f:ҩ=89*4w=3FNNClB3ScT=:Idb[YaLQ E#S%XzZh5XԸH<_%0U9ܟn&?EetUM\\^?uDk^v}tmjٳ=\mĀHܺ ,ls$OwLe@#|̑{;0n1dثp$wկg,dz$;ċ-/C[BG K)R~K"䘊,4WYG릃g~Tl_&;V7ƻLyQ%l`En~9rO0}X"PT?ٕx@a@=lr*.s +&H ߺ'@,:9Q6?OTZbSKb_o[3<[ GR ;by/4)8вT#ZĮKHՕynqY2̲ tK+r7j$7)yջ*^ܭD)8:5l@<$ ^eylYO Sߡ+ޯK4<(bDPde$t׻uam9N5| Ư9?A#]rө-))R|&oj?4Ǩ_ǵ3wͿNpXC5J-ma{^+EbK[z9.xY[DɼO6pk!ɱmn_ܴiZA5FVe_glYVRݟ?H^=A;}0`_G%AI$~j7.K*{ fB'XJ W%5KCnnUboVHnkJ'S.SnV.XR,MhU32ڇcWTwVz3Ts&k|nK\zd[3Ƭ)A$,T\o荼UsX0sSї`, EC Ep`}1J{CW9" {. Ԏ`ء{0l_b݉1BQpoq:t*eSTMåa]K}}&M|JJ" bJ>VS@ccFCAOuڒF7lhkG|T2H "8.>-t?F^f u޹f$BE~OcJ.jC"sh"/#={:ȹT}#G{w0h˲Ij;~|繟4Ž<T;oKɬHgHxǻJ{ܒ6I9~48ZaܜA/eAyu\'5C \P)Y_53q@̀PPDU8\>7YL2QowN2u]Ңx5N<"@=g\>r纉2` ERjY9?@SS/Wpw\>tAѷcI|S!xe<~Hlzo^IX餐}pC qC`[9&@9Մjz/k2CFkRf^Κn԰m1ko}WnA}s$Xj%TĹ*t]R5UJ*)+}ȧZ]2(p1g^؅Tvf8sJ5^vr{9XjZ̸\܎84Viu\dZ,:@d."顧kY>ƫK2mTCT]tZ6=[ۄTl2py[X|bɟ7)Ivk G)E G8.ntpkxaG3CK+ VSQHJz:b5 }z9l~٫mJFGt¸3C=?LZ~9bi3esnm N^vbCѻ%$i H^ƫ J8h05yToLw sǾEڬz/ LB%InH5\+. s ٟ>`_4eX׎[!'0n&{,W ܁ Bh \V(>!=&Ao(ue K=8 FqN3Qc5QZ,1u{#\=qhu̅` ]; 6¼$`+Fwe 3'>O^0'T;PU|p/ =,>6V(uG(Z׆Ͼ1{&'qI;B2c*nj0]Fu }En8û@V7; qՍ; P=x,+ڳr=s`/_Oh4u+/r3,:S+J߀] ӱU~^{=Dp"L˾T*.E7&9 AgU4ɪU!DrD O",r@a";6Ϩ#pr]c[D1.;CaB7|˟969BcrTW>i9Ҹ}@[j+D.-ϰ/AJQYWFeM&6JThH\Gc+Ĥ/0(x:+_>O78:3dnb aĮwS0_Q*.!A֋#(vLSF cC7ە\)=6L7  1X`ɻE2-;ۘ5ӕ[=lnUl\E;pR[öc\?FM9j-ZPMo g,zl]X">x!GUG ߙ9<_v? f;/J c;+@T) ;z1s WM]F ϙ;y5b$ip"P>0k`j-{]OTOEpX){<|(xx +|q1ĉ. v P3v/8>$yTۡDNM s̄cɕ R\nJ?5 dz|e CKU/řn7 $ѽC f[@R~ .6bF<)k9^vaY!*}N[HaQxyZc6𓹙n {#4x) 1<%b$ĀOYƼuKC^Iʛ4 ҃\iGU/ 49 VEso4*XcGJI [Eݥ(0|;PKwzL6%J%)0Xܢ5ZMOLWjP$hyo{1$N-oyU`lG}]S0WF;3 ,zM_/fᯮMk{W&C(icH4D%'chV-MJ}KbM OjV? Wa62fqb:'a8*3<d6&vR}K xѧԴѲ5nUp]+j"PZ.Cb%6n*Z x?A[Q|$_\e͈fڇ坆rp(jM-k;,ǴŐ⻱zqZ3X Si#͵[T$3c܈,.J3% 2ď0X|åT_ F.rUk7O#u>jU,&e`2.};*Y&GؗX)a(٦EMXY#qΪk{}ܳg# ,9y!`%{Q.&/ݏ#tbp3i$Xc?O/ A&uOJ._$d:ݤMIUH&FD5SEd51p4a^{ @5,Wl+R#Gx܂ahuW8{"+p4+JG]`jx%XdFYyVq Aˉ+.ȗMcƯ^ptBs}"[ӳh F?^C *)Ӽt!/j׮u]ũ+t:6'9ې;Iej4"~v䊛cd,'5sZ`wiVb15ò2W忆H\P-DM ۈ:N37|zs஀I?dz.;0/4`I;izSTs(3k~z =r rh頗+j,\yD!'zXٽV%oJ9`/zsRi8Rv@J0O ' ٣|1f˖U"c9Kg?e##LNYF7еu;C^[j.b^W]^xq430V'x?&Dw!u@krqHr4X*rCԎѼV2JY^XZ6]p*8c} {;K=y9LR[e 8Dl6Nϡ.j_h[J/?%76 . $ wW{*jaL'T]hb 0O Azp,;SWGw߰VirwcO(,jnLk"ۊu* &Ny^6y™&뭏אk{͢=Kbo:>ƕa&,m+:Phƥ!?*bVwBs_qoֱ$\΃M5ARļ:D\VeIX7@J! V)bydFXnt*0m!q/]%b "ΰUef5i[}6ЂxV]".PϥM(a Asj4hM1p% "wWs^J Bmn=1@5ɷt%gW` P[bn-&ʇyj >0t/޽_l0K #+q6T6M[y!bHo Hl*h +(9wᑀbOoQ,Ew cRI"A-?yZL(L8cO!_l,rX `tSĞoRx?:I/9F` ̓gaS޲R@adiCGد$FKEQ+U<Z(c}$&߈2Åʳ10tޣgtS˷cD85zLP{Nks(l)cy5Ҩ\8p%8C@iaU80{GxC[BMvO`AAĩ:C̺rXw6EQ\s=XXBԸ+w> ѕo3oۘvw~ip;Ɩ6zQʚJ-arVs;@,01<ӳm#SfZQB+PAYpD$x0-m%۲d(%f3/DoskԎ#љHM3h^U*r? TN$/%yvy EҾT5Sk ^\wP /|*v?2~~B搻*Vɡ ?ϾFBenD*/}-3i2z1:CB6;{JFL6U0ǵ /VQI  D*hUpx)^oгNf5u y¨UgŮ׎)eDj;\ζ݄6*_ܸgG`sJ_V`)I<k]P=mu|| Ti2\|ϣ(e؝\ }ӹ1wHqㄣ7c dNO_vEy[ ⹧Ols;a3c%'yd7Vuc' A "KcޔWdvƪ{s5r7d0/Z(%dJAL+֌"n/'9 5R%=ً_ICW=_9-m3%v"d.uGt&Kl :@q>P^0<>V`9.#RSXxPUH8E+PC- UDvwrN\.@r.8f3#_^. ef!d>֔W|+`8HQ+0={knNȇ1CFx 6͹Dbjz?_!&[Tew6'4yr8R<{HLNsB- xHzi1"mo}NRWq97OS\m!ORb60a'-3(h_(1 夃Y?F{ 5{tgrϜip`e)NyS{:|GM?{ TO a> FNROe͎?{`}-OxF YGbLV)dh[ fx9w ((qRn jN-B }nq#g$w(A@j*3e9D? D8ԭ(oJAy6=f[G"*b#}hrN=rFt $I!t"􁓿[$ͱ`pyuRSE ŚqQ&FJxgTVT^O|GAf u5Au4dhƯWKՋ`JHS &8슕.yŬ!XPߌ`Ij},a%dpm9]=̒:^fґg<rEF:ߊHĈjxX!RyQ("]13<:n58q:]daboig>&!^t_bjpF \U  qi=t̾^~}W łIO>N7zvʨ2HQ-EF*q AwI6W8It>If=>DH˛/LŞ͂FSU5dr%[bn 9A`oeZVXηIȟjv\rp {!yi$xRQz¯ན;4J^ 8+?u7KTGa~YG+0j'>(#b =& *jaXI,511u>e͹v<<;(<,g酯r3jj'Bue<籜xV<6x(UJk$siS+;yhO0 ˋW'WNc}ٝ)I!hLzmLgF ǡg X}4_~@VAIYI=&!%ub&I~$ Hpo!+C?v-]=2h+MXi&?d,q$[k'*e}QX v<[Вi(/"^V9@2X :>|zx[1MWOPN8_ѣJ4<"ff8<|/˭p \@3umNݑ5B_ I;?_e!~&Z7ljY=RPu~pL(ꌃw /v-Ri^-АyU e;\[Z zzFLw Vg2kQS D?3v}VzL]ӹs8_UGÞSU%۳E6Wjg&) %솗?ՙ iٞ5zrM̊%NbX˨";PkV_L2JZOzԶI}2/"e2k3Nӡ"<,|cf(+dތ(8_illn!`L!>JL&:pKE 8F˪\uw{u&Ao\ f'X=s98 9HVZHZt):B cqS*_կh'+ ?e|7'+rP)*XqۛxžЕ{e5 D?BΖ{(7ѳ"}!Pg縡nP4ڴpHa{?S  R%/ E+-MGݐn'90t1nBԈ)!WMF ɗ~XbO ~J/o-,ի(zds'Er3Ō ;_(0@>ui @gn%i}J M*VW,^qݧ, HSYlQV*xWwxgQn O<5<^}*ox\ʡ{Av!Wqeѵ<..l&ܒ˶>F;Ŷ KcƝ(XSNͮt[ķrD!VV$@fqlA}AƷtN/+}1(ge# ;t ybʟo}!nKE{GX( ,D'ZQTϫ.%t{)7cqCoduWw+QK"vռF /f+edvpj& E>4.SjGNX'WSSg3›CRq#-S&_HN=R^A*V5]N! Ѵ)lʆEsl8}8bv7ߏ0:זڌCT>1;Ba([8`tjyds"4tlN|%F [Ű|DW]†BLy~K)vnk|(߹s0k[dr$ k ȴ 1la,KQⲓCKS;i>Jyʮ~?3I}k#]iT4΋UǢN[4Fl0jJ@dJ lh".= @ӧtԛ5`M6qg?<>&1%Oڠ Ԗ0^{WU֑V곝)ngH"\PUAU[c_OQ{?pf#nv]U$eK$8 d ӄPsn_CcAOpC[Oz) j Fn="c8_@T/A8@eh G)Gfȷ_s:SttrީzIA)1bG"; R_ncLBAC:Xp(_ HibJF pLJ\*b(,:ZC\m;r}wumqߓUލHwXF2mIz+_$tОHK6ؽ_}Z&3Uv(Ap)]fZ|\jY=}ݭac?DZhd$KB.S[L5!yaPZH1%^>b gkPr*0k$nK-wk]CeEde+PIMAu@H= 1]@Fo T52@sfqfM<'yFu`< $1Px Y3O2 6Ih[Їv @=wZpGvY*zrkʗc@Hq -}o Rrlu4%[/'*ILt^6~d c,=j*B ?X7b J^2%r`/[c ?d\ue/(:4Sd2h!+ǰˆ>kۡW9}= o\7T*,<.h񲼅f/OV; 6ۛKcdm$<ŰY=MǢM/:')BOrjv8 oݱ?v1Db>xoy.P de6er6ʞԕnG2Pэ*"XN*)CV^qE PoJ3"YUbz"_39w#ow:N?1toV~GR ( T(2f`h=:^] \*˳ q?9@e^oWRiSY:05$dlLpcEiWSy|*yv Ew-,}N92:ZX<ȼf% n~]$wa*lss}e&UqLCeXr5-< _/G-tR]]`1 3ۏ4 Giu\)L蟑t?dxѝ\#.l7'?m0}\~)P4\kexىxC%%^y,0+!PF| ӑJK2mtqY]%"nJ@Dtg:' l;1ggx(pdNH8dd{XLveգ\Y=>f'$u4+شeF&)?yNpo"$n) 9R1MLA<^ԈfTK:8*X oh7vN `#[yzNp/ev㖏rU5lҋm߽u:Zeb>ЗW{Dra}W@wliL~M3xQEn ē‚b~rw__JijrR.Uqv,w:cg*>\ܶC;]hoD/.[9`>]nc%*uKTbODVo>0觅TR mBtĒ6!*mv */3lo!ߺezn; uh a뮶vQq]Ȍꥈͪl9GcT0K<S"%X~ɶ0wtB)fxɛ\e/X"|}[<Zh u|69%<|OΩ 9A";m,LVvfH9Ѝ!Ja<%d_H,pd}/f1|Ȱp-K꞉âͬl%qnI)?igrw\Ԑ=6HgM7Z.-⭬FK<):hw*?Y,lOYT,&80%d]KSy$| viIR9^az6p@*-W Yޛ=QEs@>'/ecZUCO]f`%je0M9OHu5P ]FkO [,=HyǼ-fRXL2kJC'Э!4p`(W l .7 2rk#G̅q}W0Zo`)pתUȾ%"CbV{cPZ^G ҚUXݼ5^<缮=5-Op_K<rf0)cAb%B|`x rUiH]ȣN#Nƾw/rXщh]PFaځI ;n ZNٮ+0ɝfs9=}ķ=4l7O+\-B5j,_zO7 a^G@*HXmݽ~ILb1G9$*+~{8k Ԙ}@yL~ 3e4t]BH&D2i9ҟ8+]9G)HT\? [V'o ZB3K v~hͿ:_x0>Jl4|ƉV|;#i_I%VAy{jHsx}N2B/P)60Nj snӶWEVTk-9ɧ/Ea fg9f`!@Sy*aC|͕FU(.i&-&' 3ө@"\#BdL?cN*΍YI-Lge1De- Ybl> Z&&hB]s'qan+$8A^҈>I! #*;T"Ξ;q)]#oN&,MOB @Y5ƪ˝4B3N]6kX 3>(:u)(C_H(P-:|DӰ {';#JG ]0BmgUp6P;8 $SN74?|,=}0[ MA%YѐkHrC;JN!0[#7\eZ鶾?t75fY* '%! 9w+DF ěS൙vĔ| (E TWLzec3Ͽ t"ck  BvA@p#t y4uEXl&R U#Ikl.JPWkm^:8JOãAd+"8~DZ;纚c.$T式$ǾaXk@yj;M](E.q9T;qUxOlin~N},M )H#~EBpjֱ;鸁hHTnT;{M1] ?S^(6rWLiX!pKuP©~0$%98<]Vǖkk,lAQQBBBBCi6&aָX2(DZfS8[Mbc;KtE=ko.Wb!I[7x.u`i ChM7F_ р0݈'95Z_5>7E/+e¾l֞ϛ$. QG$4oMCB -챭ߍz޷R^v8-sܫ)cZrԹ~@-MU%foWnVoCTtZꊷIw 90{ĖU$N3jD'OS-}{L=f ^1r‚vK3^^fL’}̮% HIE?&.x}t~Sm2ī:3X#V\+cfk>c mqT4m}Ik'|*px◁:7JNP9T *jyb9:?pPp؍`gfY l@xՑaݍ̺; U qAЙ? ~;-)@|PuV;匦 0ldrꭇc|̥ Ec"0QR5tE'"CLΦE?B5C-XztzRbWTgȹg\{C$ [L  v '?d1p(w&܈WQzs*!OR?y-tT HQU4{瞆& @܇ We5~o1A ?hZg2亝|ΝmY0/b}KHA##xϦ6,Ay\$paMr Qea]Lz]AA0wPTΐqvE Eʧ  Z[PWm  _t1)d{|{rq |[.tɬCZ {t,G.^2 )2600_f ģVsCDW?6UQj'7tGn"FcN(R(?$-V'2F]mܚ?kU''%)^0',#\7x(%״bQk3( Q2@.iW*^xJ'y7t2 Y\Է o?6zihh`ن£xq#+{GF6.}4k7W_57ω`"ْIĊ%zi^/ }Yv=9;~<P,&6h+~Tj7Po+YgAı"H(l],CЃAKJy5Lb 4y}OaM6wh\A`0ln{uXn PPŭ߃w-"'ޟT3B@2{ B-[ Ԉ-5 K:6v -nfvdumv"enew CI#$bM8j $9SYhb\5~t]x~qUwcLW$^j4MYŨnDU/t*q@&%cS[("q]f7+4EPA;p\2Vr w/dאhY3Fķ!chs$?pnu=# kkr¡e9 jۮcya]YzwA!4=G6Dц3qgV,&E1\}=/& D`a|>}E}Kv#h;^`5REs%<.5(&Q^ 桇 \IJA2&}[ }>{ŴVD{42QP9K{Hs RMi0 '_I8 JB2K""y0톰+]$\F<1Hx:7@/e=Ϳ/`LIYg+5EWJNtq#ha*Rz~xQI6ѓ/ WKc[\^h3~8h])zM{?ɢ7fo=^1(3%E9;@gVm/(yXֈ'#QAɒٌжYfA9WkkZn㰏6v2u?NneCP#[ ͜ qތ"rvxe ;,1L(U$Z$(uA~Fˀ UFRғ;!s`]$DFލ1 i֗a֟/j…Ar;~hv=/߹_3fqv1hV;Yj#vf<{;g ;PM%&x] }0 Ӵ' S.'R* 5b:4rǔA[Vv߸ƄT^0D{y"ob%לxRHf1}#b+hk ?WK0\n Y%臨bLk&уY'O *jVwŔmZ?JV1$aV[ƫĘeoW8?Gl'R1JV<*u5ܮJ3#Jl'_ b.6F0?SXeQF/D4hº[>̓@>ƁZmlϰvb"Jֹ̝Gs.$pa$6Fh/$(7K&!f%8s#SFC4KuS@iVЦ$h\yV^ 0 |R0__Ie?TnĥlTj.*HqUA oF縋?\QrM)6- ak80gqt}~w5#=O9?WkFih(aYkML7g^jVP֛#I\/6'7"ZtBDj|iğـG}@z5[~R*C?i4Y<~!KdAɑ7V\0ϩG(WȄGӗ}E%K 36{4NsKWűA>Bd+ NcXg=n.J~]X rXp z݁X](J -vNufo9E^e*iCK^(Ҡ'jRhAe~y-gد~_ J~")Op7IRJeM41,"_XЧ FBzhѩǠc4fJT#5+3f:E #(ɧ4n_Z4 Y~UE =[] !=٢-3Q0uaԡ] kG>߆VX;]MZȆ}ГWpÑnjpʫ^&d)JE\ jJ'a>$^01Ƨ=$|lMأ,H]v0J.M|$oH9M$ZQb9@}XBqGVrdEGigUGu{a}a{", u:A^^<%Ӈrr%zY3J.kxe }3Pn$(-r]gB>:/ӳ򡧹e&Xdv~`fgcO'D *Ԁ~ :n`7I V|q%9yҷ.T L)9 lLOWnrB:*y+QD$4܃!l5_4^|.Qx5жX'P|T@ѓD^_u#Cbr1̌` >a=C+`< *]Zʦ&w :^Y4xR C|.Y[]|_6` N_:0e'@9"@PA8 l#jF$e8w.KʼqT]rwۋtޓ5qW(bbƩbxvPMl4v^v?$h ezsVam?`<|[~/L}& T}Nn)AK4;$s',:5 ډ6@^`gĮm .ċ5;XJu=Z|'%kAiDBپ x|j_MMz-fUya{_Q2DOKW1=UTv};Bd~Bx{j*@'}h&a2`[(CB+KXSlZ8z@&x]G!5)}EXpďeϙU~`$6"ѽʚńUBR][y ͠HH*,uHև BS FaLY7Kez1`i5@y0h EB+F4qſy(5AӮ,,iS)/ZQ]$4{҂hb {b/V4`P.48{ojb+ trNG *xEvYx6Z4sdV37M녦f# o:ÑYkĖ'Dp@(KY(1G싘IĚS5 AU#e,n~}v娯08"ZRא F2-n)7%bojЈ Hc^$vr) /n <|8ql_vog-*@jNqVٔfԐt( "y(eSn!7{bvd w|4kKt`ĂuT*Ypǔq?X[\{AYƼP1*YC 4h)h^-i]Z~@o%t<0~ʿKň?.6"c{suڮP|eX^/l pQ-\G<RN8N>/{=PC^\OteЃPc|zF;[ZC!}$`\tbo KNElnU:1BS5üXףqD(ӷ]ʟwA0򔥤M -%„=@v4-VK{ B2:D fFG UKYhy $ϸểuaBZA1;(,aQh_G`R1{j MG(iXLK{`8J/WRUqPtjY\_3HW[Q蟼@TW:PNmLet`=\Lu2Ro²w1 WbJ-h'~=y _͈Cyw*z ()sĞzE-)'U7f8^S;+SFNuIشعx 4姐ii RK[ \ cjIj?Z7͇e=tRMy[U(AT}Ć76>֠q8[["=Pߍ>};uQ%<Ƶ w݂Lߥr^ E " m3[釷'2ŶZ5~yyouqr *J/fmF N-X[JBڵ + pK/`0WN7G?w/eiX_2TME b⡖~6+〲+Uq=:zuI!V?d>f33  郵!Vp1@79L>VZ.G0׸;V^$ yt>˴{_R19Jyj~t#c#@VTkG<5*φ}q]ӹ"k ?tMs% 䥗rʓܪ`3l•֌1Z@=į-h%sj0cfN," ` %hGSTk&t.EgyWMMB D'[oPqaIg8p'ZȩDUAbp߯r*;nAR@+ľVF ĂW.7(pr'aǖSo ͷzfc.1V^)&Bb',Ѡ) ^A?EʍPt~/ [պgݮ(z+䤪P}-||v3y6rB4u%hDЀw#v0x_$).tb!Uk6#+S>Q<^HC:M<ٞ;? VRWϷ`j.W栨7o""E(,9GOONG pYdnl h)|cC~H>{_p9-X'<5]ʇ jTCopG@c &0B6%"zG, fUnjEE&fjv. s,vpcCtL{-ߍF?"N8' ;>ıϡB!Q8T%A@eF_(#?ep(!i'j~LԦUGV3N6̔һKVnIb_D5YSïR&3HRv5;eq3bD{wss{Vq.*_ 3˲IS`-ϔ,GlɱP¿7 `$))KM|.e~Eۏ}@Do c4֜QZPyC44v>H'2?L~0#dIW]Ht8<=%Nf6.Pk2k,Ԗf},%nZzڢB~3u$nbI`oڄh_$=ityo PmAY Ҕhu1瞘NXm|'*+xC |v=_KXptDχBگɊ թ XZi y˝vsL4m_Q\GQk51Dp۩bg7C4Rot.T9ݣ c{W%؉0<[O`T1aT,J%jek5?U8ĭi==DK\q)q/%Y㩶0Փ r 88ÁgagSJ%VfVo-Oa+M}VȀPOviކ>yghPۨ|! Y[d4|Y9tp Nwq :*jL؋U?NFFI6#`ʼ͆]wSt /?\LѶ,R63XE:&|99'0-i*Bl!nLP},lz* |6sAͲۡWW[I\9_A7W" qci8’D8jwTtطH`x6*X_,]WY]B6C4GV 2'$ZG3͸/ޡjRfso4 a͵tGryp Q(swӼ3M_]lȔ*Inxbu k!MW]zGUolc tEV5}qzm'nf4IdI^A |sSR&`kU'zA%x?φ c ϔi 58K |PN]y 5"_ G6pL j1,I69^ Js7ޢdWN i廿k iq?0 N@0  4dO9.8 ~"Q!$c2.LGIb?tt|$e=.] 10@]+tyߠsMuúΏyY]T'6@?N<'R^pH," :\H5G+"A+,5 cok[pإc'V~]GRN\`R3p/dA~e&&ZCaG@0ڪwxBsRu Ẇw} Vp,._B6>14DHzSE4%IrV*(iqTD!6 &!-Ķ>2ۥ}Kc=_6lpUv;c?%ֿ$jJ9в.{RIac %)yƬh/0 cT|qsFFJ8UFR_2y!Aebpu3 ra͂܌hCt:UQlF/DPqe^"a8k"5"¬t}~xfaQo@kx2J kqauCѬp`0 58 @s\72Gqsֳ\U-|Bw]%ŭo\ߨDR4zNϪMͭC j3*=p 4-p@V<e$ds9" q! ??Lk{}F#ߵkĒUr ?3%Q`VIY<,Y\cjB.Yt:Tw{0"ᄼa ^_8h{ }ܕ&EbERO\T8&kTES:_3jX79qFs_s%D+C_c(\Aʘ+r?B8:UH}^#+k^ ? uk 5WpDFk"Mn#1T^j{h?nSU_וG*AF_0c@i6[1Y}|3!h37?!#@ HvLcpy?rƞYm^0?3^Y=51]l%l)p}pU^Gw@f:cB>`]њ֣Ix`玍+^`ywbv,T$:Ana\9\z N7KpLGd=wGǸ\Iz34h=Sn:aӢрZ}GZTɁ-И/ yWbKb <:lbc0Nl)3DkɓsTE7[b CHR֓OiBkis A5-7A|RB;<4.+@`gU!6 {xw'U8y[SIf9|{y ~YsCkǶD*pir[ &)Hk~$pXi"vq.yPC+$0Tq"a d *@i0V@_N4(r`;z<7riQD{e%ŷ;FfߔP us@Ɩu3[+zt'-snǎAl7W/bk蹜 I)bp7RX`i㑹Q$bI6'F>_ KϔQT(OaYL-7H>͚Eԧ+e}_j@EaZM 8#7k| D#>[pU<.>W_&ŠGo~t2mR{il'0At*1Y= ~6ǏST8>jXkcعhLۇ#,3$dGmX[ohgxg=-Ў$C"6cQ Y8d,#I'O9pC%FA{f:q$)S6榨EUI5Y,oG JR+0˝B?ĘC/-Ĝ$U# _N=]Z k!FGXΕT!Ŗ#f]jdb8VHAҞKdoXʬGټ'WIu+p^V#N;5@VCf\yL$$U{_pm 4~n?>/6O563V45&eugMvoJLzuzb24ѬIzRcGhˎR.J%"6hF}a~HeyT`_.lO1f 2*|ziz-W4V֦[.% p-F\4VLJTʭ%t-weл8w>ٲ1U6WBxDX+ p2QLդ-f*|i7Gޔcyٌ܋$P" U*,\Jm0&"J,EܟOK8=/\A9Vg1F`RiPSaBG]*L%8 ZW8 &@WYV}%.Ym EDd?UU hO@%<ӵZ I!+dqOEaԖz7Px;%!R‡y۝F?_~-'O繶h`AKVm I ;b?L62j ir2I[GjcreZrV{Kmwx2Jˀ1b\jZC_܃)J%bOPin7ڻMݼFěkq9xjYw$e,xY˔D,aaFWZv+L(w])T&Qhd:@on,I [\\AM][6ݩE 1e)qN\G<٢A(UvTYiyl0wI`Y9r;-yMؤFȄ%O`OE>z.`WNUͱ1?xxHSUϹKIYGaR/xESl}8YPK+  ̱_i⇥И<^̺B3%3QT 6" ?:GmYxޘPzN8y$Ew%"}AjTm-2qyş#7VBdrN)zbv;e(=$ZXs|Y++[3$Df,| XI6\~iI\n [.72<=Y3VfcNy͕^K맖EמHz6ۄ\hrׯƌыvTVge'5bF%Yuq7a8sPt{ ^:QPَ/;NnYJb{sncaCmS]ޖ |g@RB"{ x$K"0Rd2Þ`i^]Ne<8,B$>Qu'9T~8Q-_tw5BXA=Ia7as "5r>`:jkZܡkYժXeBnБgC`gH>pd\r٨uk4s^ /(qsAdS-o&EpŜTqE쌌=Y;bRy4ausפ1)9wGP6Yڹ eƩ9j4⌓Y\^vIz2@,fyh^=%ﹾY(vdtYuct૮Ƅ0z^L@ I򴌵49B1"s04ߘAR3R.@-vG'3F!R5ߪDo*sB[|C(dB;M+4ڦD.#4RV [mm؋%p:cX3mq ѥװ##Ӵc}4l<MiP}E-':]qIK$ ͇tۣGϓ:$Y Nr.̈́G+DM8Æ>+Gm.Oh#NCC?$DAlִh=x'c`xhKc1d`szџeA93Gryx0YN5wˌ Jrd]DOpGX`5O&+%s5C9\hp3"c0woA~e ;G QT:pcQ+(e01Vos@8Nq]l  *vP k:̷#?2ww|ȥEp\*i4" ;mwhZhY7 &%Ú珛 ;h֥4򋟕'i]z"^d=ޙo9T/" 6șH!>yړ`:j'7t ڈniJd>V٩~NLE,_歝Zq>>r9A.4&tRdqң˙KHqx|>,=%/`~e83F諸i!T+M%ʭ cLI.ٌo eJ [9]8i(|B_*5 L0Ѓwpڼ+cMO9הW+Aa∰M:FTc>ZD`?Ib Ktt-Nw^]Ғ4|KhBT,Zyw xnO 4Rs.ve}MNDFnXBzOGWEZr©΁)Tfϋn/w.Wzms0jњ+j dܠgx^CLQ_}@ ,&H Ep{4dwJ]0EItfYw}6Ra 8(Ip,uh1!O|eW\(eؒ,Us lcFHiKFڭHPDdxС}䧞Pӏ#{D־ B e#JFY-h(C~ ?tDD=cD ,LKU<}|K>}Ez'=%i1ܜwog#iL=Xl[jaN*6$k4Lt}b96RܱI*.ue]D"j\߽p-D\"4͖G?Gy*yJʇE׳>MH~FM1EI:QBBdFﷱ)^7wj<项̖5B[G`{)12 yLὪ?(7H`4D}NqWЀIDQ9.Le\Ƚ LwL׹bB)V7+A|m[~y|?+R"BGDy\Je`vJ6# O_IגÐ09EQ)ZZV qݔiLQfsn MEw-w%s; eztԊz4  ;J" Ic1p+|W;3(*ݷoul1cw90T } /sqX) p{ ^aNDn޽'9WWfP)_̖/D'[ӂ5ފu4峻Pv&{/adT8j bG@_~z|oaD[{- z:!ENUAd~$+2"gNX2ג C͝dC蓺c z&9n1LgRAs & ֏@/  D$%0i棕I=4[r,6fgT"3֣3"\(^<$K+c)rǍdSvK1 UV`ޗ <ˠ0sN`MEOXu$i68jb^Mc<ٿbk$%EYR6"YzK$r`Tv9a0JOD4  ^)s'sVGsDyaw{=@3rLiTZ+71 ˋ33)nTžr?S='̵w J&[?}yǝ|!UqqrL0gfl_BAZ0 9<-[o'*N * s0[Íq~̎,(  )~j축Uq53i@1ҾǣLww]^qW!UtPG%ۧ\,ÈVX5+iV5_ *\|i$\\%op6` `Ah ̏)҄/ϟ'ess`I-VCZؼuFiEFӷgiFruLtDXPSG(vN/=ܖ1y{h(!mRoh!&i!{ۡW0Z-e&|(&1yBqOdhf;r$Wr!>00fSLv~̓M60RԟOSeV/xj7{mj1CE5Ih&B :RPm@,u^T9 ȍbWxOn7C@ ;gciqE >a Y?p,^Zr:~E#9MZHc3^5*JI,Pi7a[IWOT|,"Gz+0;ϵR^X8SAR&Μ/,S F}?rd E &>uc{7oWWB~s4uh p:+me[Dq~+FOԍ^z[v49ߚcҚ'Y B2X~\}-) ##sӨEF= @y´g&NS…αA2_SKiú<~(p&̌Js6 M+!͍,) ,}ul9iOL4ݦ< eLD <ܔ<_mPƭSPsH:qWS'֨|Cz!V˷/wPQ ׌bFHJBx0a-P hlt_>5׾ S8#/Nx\ad<0%91bQTgJ֞3'HprMJR!?)CQ+Z1꯮_?IO^`$HL ?R6%.>#Q?he\< 9t ڊ%ʭVLJ?iRA+M d+]އ _{:w(`ܳ)^QKNXUdeRٿ u?\"84K,3FMA?'O9::[EC಻|bbЃ [uWUMqp0%@ޚtM}A*+(މl;#% 4qyO@7^Cq3eִn)%٘Yh)VRl#rAⴖusgfg*+f tAW©otM|x TGx6 7/=JO]Sm㕯 R}^M8Q?S% ѐ4Lſ/336=gԞߞ7 E߅}P95iʮUTe?3,QZY~Nat IɁ=YIS/8RފV9'4I/?vts/ *e)N K~hmV#C 9 MAQtvS"-a8찐D~9: U)~dl8( :V^ȖX0Vn}c u㳬݌6_*Aplj=?d;rd(ib!p<~e;Νe|L\RLwa]3WL8Rܘ]C[yۍ)A_[R1_mW}樥g"ls3a!9.D1UHYvk>5 9~}P 5?oy&P+I9=,q"?!M` )!MyFؐ"Pa1)YXh6kmcM7'gCCv)U}0]@!Rz;* qNB|61C%w߰ ZHMBSRmyCL0NTºy5@ZMGk6M]*mCð]X0R6` {iw]_lj'y|b)u)ɨ`?47Ib ӹl-ܥ %%7!s6Z)3 %B Ј~Hni@JSCʍl 45%_$iLB{a <ő"N*JVWZtɥ!m2dMcR.< ؑz1ե) R|ZiI[I&^$i*䖍:e\F偂,._EPy\RH ެ2` %^xBOv>w]*/&!Dm۬M=OCկ-O&V6{@;/]N>cEΜt!kZOXD}Cbg( 2-#k,ݐF$/~{˹j;*grRdg_ - &)[|a57e[G,윝.漴^q+* 7D_N;j.iDz좕>+ <Ԡ5A !m>V5?@HpC̀WeAh @a,7׊6n'9ZNkRӹ@x m3%`B ûlT 'd^Sr̍3psk唊;M5|qEv`#LT .-G2Rt-D=I-Rgۍ%e*!cꄎQOlйAXuƩqyam}qF5j*!drVG*̇jLu{Si*#y[+i"],||, 1F~ï&-}{PUKѼp1e55@%eLt=̹:l)5$ a1\e/'P2~ukks蚊 N# F-a7 O{MyjfieTM]>YILBA^\KZz"1 ickٜctcxֶ:`3!v{41ph{V,jnm [߰<)mDY!E;'5ڥS qqj䷊5kvy  S&_aֻLjOlp!y{5=I#{تq{ TG[ sZI1c Ӷ|;4Eg7/L:?KdKZ3ؐx %Q` SB%2S)_ z8A%x`q391^h $DNSNKoD9_ZcZwڋ@z9^ V0*+gj&Nc;719"-\^"?tTTn|x~5VՌY;<ڎ#Hh4Cyv;ir)Ukvb@'. bqy^˖+ f 0AX,8DPy0QFb .k?dEhiȅʾ2uu5;=:(ҏҢ"ќ[D'fݔ/yO7`6yFzuYѧrG2ZZ݆MQJ|$I!' +gJ/]pAkU-!l~ߛY>od#J؍x=" d5z;c'G1[D.iYqP(Ǹ%JJB]btipD$`A!npBQ)(\Dqcux`\ҫx7C#s1!*5E8~N|^CIc:9;%韴a3;/RGKUk9&vI$K]x _:C|T Hjژ=f^Ql5JUhxNK<Xýbw׶ix,5qG3͕a+ϸg^o}J_μҩ7dZd?61H)*}gI @ ^Kg?^Ciy3=Ow.|lsM!&+,,B7#օwg.C,B # ~&S3Yc؟wIB]Rc>.=v-CX>#ǚ d֊[v*&"/!M0NpY u岁%hc yL$\( jy]wz|>dS1=]Cʼn)EaM /i$.e(!4ֆ.lg8}"a'q3Ml{ȍ80d5pT?"l>VSo1e2Mʔw& عۮw(w7xW1,qTzz[G}:wb۞DiQm^0+l(Nڧ+pȑϺg9-);pވ]f|?z}I곂遞O!ڙchU1KL>2mFUs>ti5&jh7/sq# }}}߳EG3`nr< Jd摛l 6.V1vyk64+e3 ;|BUv&l f)ebR,4Jkuʻ*Z^>~ua*ek ̢q3gSͭ5aW⢈bhEc3n @`Lp &]%¥H91 ;UuOVpL,"@f&l܂5Zԁv^yC8#]4٤_hs88PN;L}"$_뎦S[ \1yH{?մU5tԙ eؤmI)9Z ATs e/B&{ ݶWr Q:0綠P-i-/ s_`R'|mbu: 0uK]X$:A= [V{$E}Zru-xƽO1|[x|Bl1e.FݔtB^0yY2*utoED `[ȥm؍&vd|V*A\H hxd9vYLp~|աGoAvGr5I_V̭=Gղyڪ%|RLԼDN|y#!2 B,4eL첓P A|ZHmVe:tHF=Kq90\f~\-P㝣i_r ,%?y-wP80S~8 Jr'ss|E<,HDoGmzʎyk2#bCHhqXl(6~.km>2n^P"Dq!Y&͔ƵWȯr^&ƥ@Qŋ[4&U-f(*}OӘۓ"=^Xutw7YF7⾲o<)zc9N-|1)G{QO2q>}lc-P@ HV+0}qx.ery4BE3.NF3[! (Q]oSW3QTh&g,XK4 m%n0=PQt.k -9>I~YlO݆֜xsbA?@H3Ak\k<]e2@rgecʁ$ݔ75ǒ& c *4{;Xbo􋆂l{9΍nnb9јEBc3l4q(P-N$fs831€G,\pq=:<"K;YfvrYxX3J\Jꄧy716bY9TU c17cӛ9)? JKI5m#NE6Zg*Ho@]n`Fs&o+ii5w߹~SRM^ITP!39f ]H ~2 >C?+ &%̙0~ݞMX%))puK ~yNwF]g"dRbcN1Q╄6&B>-V<V\9# p{PFGܫ nĂU$;{I*<һSNI@i)ͦ>Vanhh5Ԅ]hRs՚ظuIʎ;3oKWnޙ!.bDS=WT)yDkQFŠ"C>*|.yBI2yK5BO]P5yf9ʲcA0Q|bRi-$H mT=ݿWE#`kxҨ ? lB쒰u\rV7 ub.t4&ݧ=l3e ZV".C7bdyy^d"ϪEXG!S-&^ DV5XcT ]DbfŠ VO`T۾^;$'tz 荽 )Kƅ[i!Q mw?rsl+ t6  [%E cYjkw]nzzq?3Eֻꢃ ^`,#. ]O‰m/l/J/ÁW.?U: qp"gMQ8ӠUS~ kG\a(qIB M.!&Ze12@ݛkHVI?0Q<&&3-P>%4.h􀙚<%yriT#Gn%B x] .:@ŗiq`i蹓U|gSo%v:di^t-ʸڋBCYmzNn/+T9%jXBQA}L ìY*r_)Ga d]k]W,ek #`([I8,?n_ҝ 2ϳEm h@vHeKZ)is,)pق2J1!;JfH6"D}):2\Dn.;*= d$ByL֬OSG7х܂y&E(GAM{qZJb3d$v[xQ^@JrU>/Ľi3.>z}waw!oU@E` 7ԏzQ51Yx 9iGyDGd-'u.wupCUHfeSǚѠi+ G<>X c,dR((2Lk)Sx*#I{[h3 j^`dD:ңt@īrc3y*@@†r?wAďDMIt,]WͫcuU]?2 oW  mQ>はI6-G"Fa_C]:r9faZiMVS"1N4 JcҐm{<:3HV&5+gs=oBȿZ)5A\鉉Wu V)j8 ԂEWrΖ Y+򡽞&^{c[x4!JҐR:&RF[fh_^W)gjwnL/m+z@b.%=9~9Dl!{7r~pK$ǂ:3W.?l[ƶ Kdbc]8b۷Ā̹ZqCu-~*iwGĞiD&_9oq^0C qC@0HGl)%v_j`s-IFp(Q}X}L]K37ւFfa-u2(Ǥt: ʁ(M! rm$&H&J 'BgI3; i]* "'`>ũj3ۿܧ>x_qc])_2A*!ҋɖdy@Bw+qh{C Qd0:, g}x-isҟ55T/l%O6&ϸVS}CLB-4Hb1$rr/!.<fYihq6(3&'JDOFޫRJb$ O0rqMo<:‹f;7k,]GSzue~wcx̹ع&JIY+Vp7vD$MFȺJZ 2qLc2jڂ1ʷly(Jo46*."s G(0-DθlKT,uo~X VuUӈD}mCspE-W6!kEzP%0Ƒ)q& jtWNBDJAJxYsW}i1uܸ5P&Usb &i@$\Pz`t6XއdND2ా.. Y~XcrX(`-Y_a6a]R,֡??9CX0*'_mKt^邨\SiP|MH{:{r٫yH5DwlkW>:h=&nbG^$zg\y+T%.lEbř3ÆK.n3aT7N@G51b $a?DZg:IJG.`҂ krbC6 ލSDQm^ٍ0x4i%`$ 3. % %j 7'fXX$lz;Xz-eT28:jRaW*703ƿ*8/| aj$Zķ<ҩ :z^MRmս,p!{a*-P`T|@O̜1g8*^ǻ G]{sE4WeˉZ: cf钖Z\-)2?LchIr3t(CZ—vǡSïoYy bDPĄJ~vq`wşf6o\ZQ!:|pjD2ก8RaJ;~'T/.U:>#v70Z3dMoo7 S'^/ (2zUݖ>tO[gEGzhamŇ!x^by ௏9_3J@YC%Tt̀Oc } ՐbQcƬG!<:|R"dnjmvY8^ 71#ɚ/#&{_Gؔ t_?RN$e+ 2y`{RSWai/f%,`a|Uv* $)Լ:qAG-O)T\T_EpwM+;!J"x Dweq+`f"{}n.Ӷ{}7o~Bg0ҿZe,p Z[Isj~bzJýfV*, ^4\@Eo<3W˩O,TOS bCdv#n1iW2A9D[OA 0NOOhUڥ$vXht bw3SZՇX"g^QiakI* [qO1;iP?xq%/ =K.˃?%Qa<$;v%~k8ib8w#p9Y"^ɍ:)Ĝ M`F6 y7vDe,{%GJe-9򟓢3߿}?KցKǼE~2?.__aZ6 7NoHb-)L-Ҏ S&:i*%Kc,m@u_տS8],e03GXCƟ *::7KÕzszKT cAw{ ( [>QM+N}[@̭bBe!\hm,'K4hYOHD&9:? Aϫt< g<SR_'仗@~Atj[~?@E0'rhKalSO.WQ/-B$]]6hؔ4֮s}oN\+LDVh 5rͶ]$1 "._)rxZ]@9O[Y @$. 20@UbGf`^xN` #|,֚ Ū7_6:`ym%_aK۴*s ų=[0Ⱥ4y;٣k%8t1(_}ד@hǩX$~ "z-.n`s Ny|NNkE49(>F"HA}.P`g-&EPhCVTG[9izO"e˓͐ɵhYC9~_ǩNϴyJtWa4!oCūPf7WĶгTbNF,"كCy+"U HPUWitp߈(^Ħd(%MڀK7]/=OXGzo\ (4bT$"JF:aiJ MP\F[ߕX\͟ ,dpFĶJ|N80g 5pezīVcd_W ^u>4t }O <}#$$A^"#U}=ynG=-M^.ߝb熰"+\]{g O;ab>Dx9F•i5t/n6]YJ~@hwŧ u R O0}75x!Ψ˻&gӮ(VK<Iq3#K%CablE m c@⫶F.ݽsS&鑗;HޭmXZϜT U2^BQfW$7.Pִ *`"Ϡ{m (M!DXh,RB9߽ .)}1$AےYǾ0mxD^=QKDN~GBVj}F+ {#6ܠOŘs- 'ʑ(=At>phv$d=@ZpH jkM@„Hĵ}Rs/}wolۙm#Bz3Y [nV\"@-\2o2|b7&٠gjIzl Ye#OەFCo2(["୰CG..ɐ%\-aٷ?THX6Ο+PtEmt@T?:R%P҃7 2+W%<E{BP[i2XȹRڜ} rS;~#TK=Ǻ%jLTzTiORv:#yT3ߵx0'f_@ĎxCɘ\3Y*Њ~;rMcf#e+"iCp4;v#wF5Lg/Utr#6!*G~rpq "Im-N &-7:k-aHa=OndIBS]- Gن1iR`Ow΄"cXreq xO h>RO/)WR-i?3mrn]eTg&ޗ0/7ф)q4lX@.tj_W7c)C:U;CsJφ@("½&?FXC#ǀuǵy8q xwGQGyI' IwBƂ>rV`CYцLG7Z]m ζ{TSB0[AOaQfBOՒ,̑yrQհ󗇊vXct??j5Mw--Vi2<2*RS*dg4Pn'n6ɫeZuʛT+eB'o-tvi/|Yꊧe䋉N8+N-^-sح;9|g53"4oeHK.,tM+^E`Q[ۄR5@i] P@PQ8$nή̻΂t1CF>t\o)` ]%>G=c v1t!B=ƹY-4I\\BNfA@LBYk;?a?$Vσ^^KQT&=7ĜaiL%0|1S~R7NN1%k$k j-!@P,bW<=1/jHu$ ǍL``0žu6*q"5@AJ GhK51jf~6'ȷg 8X>Ul-KJ<`Zҫrk],R= j; wg:`[8$ɇHsL<'9:e ]LgCBӷF_E-wuq:U OB0d4Q<{Y!֨zmjΎ%˖[Ǖ]8BX,|5cfDߓ#yVk|}o}Muy|sS"`Kܫd.O5TozKP#>۸CA0p"Z.)[<ɽu.:sֿ.n6rUey`د4tՏ+)hT؂fp*#gIFꖻk328I7Mݚa{]+^ljon'>Va=o2}ƚ҃#"-=䖄Zs&S1CTy$-&=;hn#56}\MSW84Ȕl Bc!f’Q|Q_T² j`ߨMZ1X ݁%<{Oހܜ6.ӳVJ  _̢^J-UA1չp_vN~# ?3R*Q}BhkBQ ?sb~`Rs lCWaʰ@4-wCU_<{o͙岖k=j?z:M VȺX7xA-ZV=r7S-䢑Sn\mN,a[! L&ؓRH[L1j$>MtzsQ^>w1F1V`U EY9g~iF՚иxʧ5`A%B,cBVP~/vGc;i/6<:lj,A  .Va2Lo\Z8oB5&,:Y9B'R<ڨ0=Vq( %w J'02ʉ7P)˛-6JFeq015ZVo*.俱zfЃh0}(Q)nC#G>x5^_M粛L)\欃?քfRHOsv׳2ukc%Tn^ak)%42 ;sQb{M8?0ɋ1̾ DC|Z;On w'Hdܲ3C2=Zu l~P5ȼb)m,~1?"l!#D.EwtW>߀<.c–s`%vUQ2~ *ՆgĠ o9Ы%yە iHxi̹3s jhR [H0 j>ijX}A }; Xx|0K6΂ULfNs?QS&׼\˗PuMS?Hf y$^vgLe'hd VC l ;Sd>@GLɺ xuSmkO"?qlަ7A)mB 聡 \9Fi : H/ځKPfsxŻs~A7ӣ,b8S eXc,{z?<h\bb|F; ,y1Q#hoR=zncA*E+凱S3BjDnӵML3m\ g":.?B'a`yxm#'1N wf[p< s"/2|R{֥Wxup CTܮ)u?mHh(~#/@coq!'`-# -fEaF,+*bɵc޹3.jz^foўԒ).ճ9islvyu1_h\Όh%S;yD8b'g8VjQv9fg ܩn}{ ɚڞrhPGVWYM:Vo&Աfϑ~Em\g 0)}Z1+@{WơgAqyah #j^jj%pX*^C'}YI#ޅ#zv+mwscMoRm|nQ#+<"wGm.=7&pVS%H6p-8_ L.D*!e!}t't('<ѷRq?GH)ZdQU4t뀢kq5G DA"clZM;ϼ/p>rwq̃4C q-OMNKfHP{t@|OVߣ*!p pR= F#/e2cBxV .7dӜGwƧ |-7p`k Md]/S%0sl\ :ENTn]E0E0ӥ5 $x%(|^ɒS>mTJiCT1Eᱵ?v 3,Icgd{9yIӊd(cg^b2 Ks~Z{##ɔUudfzbίBy$$'px,߂@|LI(˲]?VӉouZ,[0ř7?փSEBGrCHtzB1N}eU'M-@ 3VҊra鋂b$A&G ou猒*p3صt*,cRx@Z掆~Ń{#y˺/.gnmzapT_ ~ybKoP''x,w-(\3CeGv9 \)`KQ`6=fG`{9k=r沚A.T,F?Ý3¼D!iV̾ 2X%lmK FIFπ%r68W\ ~)oRי-~[/jh ץ=gʝ0'kb Hq( ꖭC{3hqsz}[nGIEذdُQ,tƳbQ sDTq$$몰idV.!:<ɻxݳo,Ҍ"㘕XS{ īiwK:-U[R ioۘgM7S;6]sbtua#IU;S̀]$ߓ }B tH'.>Qa}Fk.4͜1Wo2j߄Y`̬>=\cc{u !Ş9:-q~jH S\(t]}*ˇ nBI$eat|YRuY{>Ɨ|‚|*fi3,0z^-].WOWKT,`ۦP&F+GR_'ϲ}9߁qvh`K >2E""Dc|nu.q6sv 'Ivp(ӈ-oV`X o~$YR-.kx,'gD I`N2zr B"BDTuSG5M@Fִ>]!m|z:z=t@p>c\OHpSxT' 'u]͚+bh,LG#S`pwdih@ *j4bJ YMhJfCp@Qm 0f'ݧ|6/E9 'd?XCG%{;M$,:qpڟ{CX{F#7]07i*7G_D -mݰ|G `-E  ڌ(g6bOoW4=e1ƒ2Ȑ.xzPTirlAPJL$KS,˦ch;b@poo>4s &_< e[%MpJ4$:5r`G/ {Ж+f_& )UN: !`ڡ~mGC 'Qp&`4ɫS}JGvk?6 tԆ擄)0t6Mt E7|Kۇw|v*lT{D_t 9qs%#hcp8KMӗ*9~3M@[MU_ \2{R7ƴwVu9x2V2hJ8xs%v6GCF*?dm7xtj(/?iOlalRӧ 5̸VFWq>N¼b-`P@_NT6v3؟qa69OOΖx!FiBlņ]nMO׀킑M^w]^V;<5wKD={aE@|pꂞ!E$dH_2ס> ? AbV|uQ~xܖG)h@&zO[(G @#)A*GL:2"oh6&[c`ԩwc+!I.M#pPD2jH#Z uF:mK#Ʋ1-$eK 5%U$LζV>!PJ_D7B$' n"@a;xe[Y)4>8Zˀ֑s#oVo}WO^%ƴV(O;[N#D ]8Y돤7vm~P׫}]8WyR% *r/M`.`*ŷ-v>ݟ$Fȹ;\ #y-RL_Y;t[כɤon6j=pC kvY|[J1Y||yf|S[]xX"zk7;N##^NN+i.s!h= x(2_ [\RRHL_S"K/ K</bDLaKzsI^[[ni&!_itǃ >7R@ݗg3G?kg(_ /c_@6"\.D%Zei ֭2'/L}\нoʩdJa|i R4 *BYQ.G COc+> ;AwXD 05jBz.o0f|ݘ}Ʃ~ʼn=B@,|ұLyv#щX#m^o`bI\{0wfxӓuHJdp֣#5ف+[vļ>~J97xHܺKr](Q̋?o 8}qYE-g¦V,#},Pv!.#.{I>F:W2C8ӯ))* bd1$o6_e8%{ɸCB}>a ̫u1)jfv% ƊBZ>] ;d+HUL }_~鲻-6ŬlFvZA1n`IYcɸMėJ흋-lޣ)}L~Q^,STΎ\uņPlkP׿0̖6% ':ݼzn0Mƀ-#/|mǫb( 0HS)xfմ : ܈+ %p:?!ht噈<yU,w ga / ))2:y뒦B}GȪi EA"߮,2:Vuy2E|g7Bi>uc=mU:d )p.*!Bo[/sعNsg0R,FGG3JmY܂ڶ]({Ug?,o446 mW(/⣌.oZ䝸Φ6l(:PLypp9J MGpGv@h DLh.@.CRB>3.R4o>w iqrt_,A.vYLz@DN~qX='𕊽Rwg DQ/ɼ IjU acK:c0T,:b zMjsVcA Hot,]4^Yo#ۺ;@stsC1T TP*i6ׇs5faG>Qڵ ]z|$ y ڬ3MέDQpȖbu25]OXv y ;W0Oߞ'$J Kb:ȇCjH"g$ -P˶Fav!kX,Ei$z\S{|)zg \v0屃hdZ?J)/w{0(3D^;`4D&ćB lws~QP)b 1WY#k5piSF)`j.yQ3yc;U=a%FeK^Z.l0"fldZishr4]uW5NU AMWXt]Ao]ަC7DYdcTm=v 7X2>8=\$PHwA vˮPJX}2rr짾x{M=]>릣橇-OcKd-p/JԱ4&aʹ\ԃiװFf R-"~kKkop7 RU_xQ.\N` &i]ٯԦ ǬXy^P(mE<\>勌?1VV't;Uv vq~X1]dS4IΥ Vz>MĘVd bIvsRuM(b9-,Hr=~v(Ȣtޅ{N?/aj^-Ϋ Co(t]7w/V?_T1jguj 4^^=u_*p[gSaex6U͠ZQ1 HvGJ7Ňzy#qt&Y 2::T㢰'ςXI߉׾M>!aYC$o1WxXE6IQs H.- Z5ΖOA^$̀ux0˫eRɜj̫c Xku`l8 /|ot;grlʀ/UߕQ|߮[+u *DŽf_J23C7ek8a1 UH4&i> "FM%1Z^mCIHfSE,*IvKK?F&PeoڅFtC QO$@y ;j?ՏGI%?,>c> 1?RaXv=l__ICuo<)9S.c6; muDsxIp3DlaP]|xvmGc+txv@k<'WO-EDDdA͚Twpn^`y[ =H0I W*bAGT !xK>= 9mhmuկpUoң6j,xD#02HG)DR@1I\YE"T3ćN;!/r!(4 *5MFJN dyfj˿gن?=)1.u &.B0gWGʶ̓U/pI/qAF1۷̥VQCgN-btT-Pя 1 R"6$cTj@(=WwJmV?u7)畉sě7gd xЍ:"RͅU[ m "Fx?F^Dm˭%fm<,P>$tIG!it=^W.޺c9ಀ74egqfT)۞u1Kyx;$+Ӝ_O:;t:,WLK `B  U}|Sg\b( lTZEM4而AU<[%R2~`3;!u~>:E} o#_ɅP Jpt<)?aeKtJk)Xcxw*8?(k>wyJ~3 :94N$,l.V$݃ЗHCp`6m0Gi*A m2#Kk)MLGC "sqG Z}Z >jd W`c)e+.Y:;AR ]Vh6 1uJN+iM3\ +?%יHˠX([,(dOa EB)$983\Ysu~hL"lI e$lpj2Zy Aavd ~%U򥹽Ncb&ްJZOSP3(<ޛװo ]Ƅʩkm[N}%pqSőU>\ ՗ݾyuqDڣ6fk|woǎ |h5PÝvi3{X  D(QWʟ[rM ;ݹ#غ*DUޖVBxTҋ7#WLeAfg^&G5Ƙ2qKb;E:zy|mG28^_g}[)Ye;f+ocABS48|:Fʣzs5^c%RI Ֆ5+YwHOꅖϻn?^KCS-"R |5rYj x7Uw).[q[p^|qw8ݩj[*tW:WIդTO֚]֜SifMnL<ދ ⊴ u|íZ@ENɚۿ2^4[BaT3i~{@eQ!0n"y3 _Lt!FZ ?D-u[Y3VBY?{V+~9J+0;8Nty*._Xג(+jb9fgJ>r23.?GSkXA|NQ͕uG"4$k3Hr g ;~&٦cN>2E˖ZUMؼj@KQ^FSO˕WC@; {&osFSȻuA'& ){ VQj#lW߶AkhCO`buK9Ps#]wCٿI1Qw߿K6,cӽGa{C. "-Q?cفy̼U5XB_BJPhDvyBifY ڐ- WN,9TЧ}vDm`G$wzN ލ̈'RqMLlnYcDt 7EQ~UE񕏐sU3 h)1?%T%9xe|wу)!,?f֢,VD䆻4W$Jfʛ } _@xl䒝%Rt9EH@/" `C=+k.P1 ^}\9 39R FrDQ?r~9TvĆS+7%JwZ&4+mpϩ{1^3?bfJj <0+mvtѽ1*jK>~CƫW~8Ẓm4 kH˶)2NZq|+$._ODE"spI!>ppPId@ȸ犌^?Bt]c`="3a9>B߰belµT\ek,yk9cyѽKE=5>?co/ >k)?;hk͛bvt% ! dr,F^dxyͫ;>yӉTIJxR?k/sֆ?svMu^NS|\^hjLݼhLրDO<*{ڹGi ^K56=b&>&zAz)K C3f5M9(.ppe@ baqX4wX<-g+QѡNG iKp`*@g9 e p ~JD{dcɔDȱj )9'nN{-/L:}R)9zqZtci"=: wGq߀ +vSݜxP . 9%dAcӤqo۾os mD14:H6ۭKSHװ^d q[gj`u; ֮Ό» 0}hC*ٽ%G-[ Vp۟Fh6bꅳ9c! A_+bq--szqzXvB g2lnTR q1wy_F2Lp|V*)X"2CJڱ a^ " )5} Y6*>7_='dDwheA*?tHy_F^w}f|n/Bd}D.A %}sLDCe䪐drˆ!:Le)6#Jմ@h"{e9{_us"Nt=E@dΙ9Y 'ݲ9 o=|u*Mߚġ|FLX`/p46YזE:D{@· k*B fVK4|P+I0h_j⚠&9E)1ZZ-6~,%6>ڶm`$sIJCBfO v8q?l39ف${Ee?0[9S׃ ԋ \ ~jIKU`l ޿vͤM0]>{5['j٣T3PZkÜԈw%zy߈_.vE{rخ4|؀Yπ VE bt`9ē{hE(Mne`]Mw h忭l9JJחƔbjFqmc Mn_d)W 79u5<8U ljF6s\gsq/%uʻR{<_6ͣ^ӸKĎKݮdBr@%4kHBNkQ I=~" L[gnî19=|Q:_<2 6Xβl)[v*L;>ǂF~ybP_SO6cHsqBDI7jnGCgh!L(4iKn$tz8o& |K^ AG+Ε8{6߳F1lO/$/wD@bAӭǘ]ә$6žY5c2ՄծZ{U܇KNņ27+|Q XCtLђ h Y#4 u췶> >a;tLM5[bXC|էdۂ_v̐ɛT4vhw)p͋X>=Q0/?ܓ@+)Ģ=}"%vv6.5QVٴ[+hǏAat}; nL\Y^FH1LpHfjDcESIn>1^e|wFm o=_OA9SX@j* i B"7H޺EMތ-RYgkR)Ҳ1)|ru n \92\m_bӅ8R%G-5 #0G{ұ'O~FϹѼB@ERF7Jt}-Z"^ 8XX&hR5rf?Fm)0fLs]SS;'U*W|I łqZuIs8\߬Z;R.*(8P ]@/dױtxwM'8$cYmJl,Rjn>e+ʌLs$ 6}w3oTd&mx`Cd.rh"_(3m*OBHp)`fA\IkdmJQ)D~Bq.Ջ.JK#0< ċ]N"aܦL玑ܔ qtGR8cp^|5XLk< $/R&z|^B뻽]@(M#UvtFS?0HJ?AX趉gA% oF8J0 n4L@64#}JEkx]wn{) K W?jQXވXJ #z">fP~R"+Z 6 NʡMVw hWA@# 8vbġ5^Ⱦ- j9l=x~$\߈9(2I]Gq;7Om+NZts7/uin#!Um_8<"sC{nC"Fy1_6so#i/ƻ`k'Jlu !5cV#Q)Fn<( Yc@R"`R? qJڋ:/{]Oa<5^p {[ːnE0 n=@knˣW-xfan0T:ҔTDn%l'D24A4?^${/dJz [$AUI1 Wl2@Ǝ _?ٻ]Jۥ>qADW0<&Yxn2{#[F%eIO@)R'2ey\^X["v /KJ.j#Z^(h#ݚ)x6ڹѨ|\2O$UCٍc–`g'6!e,?j-vQ] 65]Ì֓ᵜ5=>ea֭w֜Y,~ʊda]|fh9F.ɪH/k ht Ue&CZW zo xKwcn6'Ɨg[ϔ9J:=ç-0#q3 (WhXxM6=:us ~wz*7ȯUVk4p}}l~Z>8׹9IM[C(=\waUSWNY͐ 9a@Ϥgy1 &&jZ X[I ௡H29YCYTRzģ۲cYv9J. *`7ߘy.Wo|kt=BCK(l_תI;ӂQI #PK5K]P={lA}2CM4J2=oc*Uf|k.tTjx"rr!0Ho2!gAZk.Pn싣56ǙO!lWj9pώ$? [:P ?YպI7V{UCyTÖ^sOA_kWyۯJ,`Vf,^0$]>zntFEIZٍ4!ԇ3rY F tgJDSSQt0co^zn|B lS23oW2.W@ p姩8m0A#q0-[y.5 .U<-Hkb;J{T'2 =hGbɯz{ϢxVQex˫׆ ̻k%AQ^?qE#aaވk_vWzӪS'3{€d~qvVfa#<_Tۏ \`h G@!vHQ{ ʒzݷf?sa^yF9ԸS$ӚO)C¡Z|{N(=S{,^˭ ${EuX;󳦤(`ۈ7p8> )R*Z']Og b4,WZ3 җ!JM3_[K*l5@WznbS%wfZf#KʡJv/80JV'l(ҝ`+") ~Q" Jz5iiSD& uVvk3,ے]$ۓJ!%/ӷڪ LA*T\jC~.73vb)I*9]ׯ@W d@fMhWY.q8R &F3%Ud@@s\\~ 8o4ew/dA\8a&{Qe: -z";ӆm.\8+jb\Lp=UO6+'N)>c\Y5i3'w 3"%E< eɺ(Ƚy[Rl2}S+"4+m ؚpQ!̱c5{ mZWw޵3$ XgsμX'_O+4[Ț:_ЂN$I2}4]6%߰unNp|a+f}um4{,+LGC/џY#4ܔJ]bh ںāvKEEc7bsNjєոcM1W} <}^sZuG6![a~4u{3m5u׊>Kjk1q4-v+u~s6C_bNC}2lv6nя{A1DIIMSnF7:BH[oYkaa%ncbSwI/D}EP+WLmbSO˿!M:J-p?v%?i}5qVsoɵ=$Ds8_ Ji'u3jBv- eZģˠۃ Dmt/~Ϊ6BD`{%0sx]Q bn M9 ewM.'u5`(EzMlLY$t`2oGg)?Re#fJxwd"@ydc8$'E!>+-YVA+5tNN 2/P@}beovh %ŧuj\p8iٯ)yj'-}MJ~]ZgG- Vۄìلdv 7xpcGS6`cJ䈛$oRs6⎂6ds)Nw2#%#- FT|vDJ۵9(}(6 -})b\AXM'g&/9CzJLQ*-op50 OTQ5J; ;"/_~5u Qh" ܄`fh(7lJٯ򢛨L[F^[(SOӥAVJh=dW$M`Gu6ߥD)r!k;c5E$eb7Z;Y8%(whĵ)rzPȶC5J;He\FHawr)Yg{ܠZHG^YTmtؒY@U$n5m RVI'2lb t^c%>qEj][ߝ w)Rƺ/x\EX`C}hr^97d2͉&a>4֬L=ql˪BGSeaEr F Ga@,(q<@;}B 9B?*)/{Ԓ;!7I/db #Dn%Ę`oH%ݶ{۷)6;7_Ek~d ,GH:4K NOfi r)0E)g$yJȰ(%b/T:lcSq`1בC\?ԩu%4$$(=s\3-f?'; y+AȇݫT̓=24_˗mXxNϩA=)ͮ8Dib7 nDy03ê'vif"0oF#;]"J=䂶y4j#tAVD1&{ʔ,zjp# 9O@nfä۹7%~K:1k&$2H ;ѥ"ʲkA MؑĐગ 7*Ma6eOte"6Čew`4gng^\}m+Ѭ $d+Eu+ASq<ʱh)\TAȱ ?]Mfvw$nدr_Y ^i9U4NtKc;(s}$h`nLy= q]<jԳA,|TgIyj ~Ac"BO3]{aJdzSh$&1Iؼ)5}4Y bt#ڇk~FM:3 *7 Yp^cG=k}B$yދ [rz5]Gel@nlP;fP9s :Њ W\2d5\I)5Rh ӇjL2wv#8 i0 4^t9 RךRA2\Z ŢfA\sHɁNMuKIaK{9hGV8!s+ 7uAp5+j;p3wb ϢᚙDL P v~c"QᳮejA^JŗX"=U Kr eHD\ _ _: duC$LC> }k1[<Vb {'yCXA)$E/4 g6ܛnXCܧ]-[I/uU@4JV݌h1$g[)R|?|Hq&WvtU\f}SU?v7?nU1%c]C؊D㓜mt$`Xe72TvV‰)3+,MJ$9묏('(7z2oW=I.?E6 mň@*1+cP(2h)Ϟ;=3AX!>U|(WjVR.B$f 1,6:xf~%GsЊ y=K@6r>kl,Ev- _1z'P2IAL.^;֓)+/ZU*^ORpQZPǁs!^>Pn%wL μdF\ùU߿ .9^]e3skcr!!,r:ToG`X$-]mc̰/9T(C z@Q *I]=+tir9Ѥds˅mܥЗO,:'tCzC!e6K:M)r|Ҥ\@k 2""]&~w* pm |.GlgEBգY&sG? }$~ )r <@Kr}]Հ)'!y:]z[3󶄅Ye @Z$_gۊWJBϮ`g" Fx,*Ho ib{5 +H+CFo/ Q\ B 5e8/>:P[2ԗG:wNNk,{,iؠ65Vh^5dQCœa=9_,hH&oTɺ/HpYz@]ʭPS\$1[[6dOSq#H_3mNf3홳lfnP{.PG`CnF?T3tK H}~Y@ M!R.f!Mǣϩ ZNFD?tĚf@`g軌*7h)c>\?,kF'i"p7i)|Lfa;?7Y "? Lp_}1:Qi x N&c03V,0+k}1?P&0 l<9Fa,9Xj#,eʞp; DmuW ,Bu\a/럟8`?f9%8諐@sU`3,)eǏ P}<#<)~uGRQ`O}`Y4e`*޲uF Ӆ4Ӕ^Jv^.4,q0QXi(k!sFȞGak'ۏD,{Z.tg].%Efۥ(B$nȬ)*Ƒw{MU:DVXJ փ[طiuEiUJPϙ{ke1G\ s@:<(G"?}c6EeGwTj.RNKƔ #?J %삀.) +:h&7Fkd0/HnˈdШ/bVyvx_Vޛc(߫䍵)su-roVSuVDzƣRjFT8͗^P7x`6%^"JTaLm]rr+񿂬Jډkn[czg+ xw)[kypZ IKp l/, 1@𫽰CO?PINra).x" '`T!rU؛6o^H =j)JfB]LVOS^U >v5qF$I˩4ے!-5Ul}H_BT4Jqxv&tgh2ժmUs7nTckEAP%x?YHև -0If,jdO*X$H{+vlo8 t ͦ(6OA֪AY|9H^ƧlKf iܳ=sl@;7wHؾ,@jxd/xlmNM' ~RC){;d]nuyB#Vvg0k~ɐg=)Rd-ܷoJ Gj`h+I[Ja pĂClX9j)V ٻ UnQ*bVrUߦR)!y76ZitoIZ:)$|$V:g^|GZ Qf>W"M75r*n원&;2kzZhCNbՇx9ZMznmG ȕk"E@{rD}o.yXIR)"Ds[NmݮBO TPxd׉bb(g`qx]#Nw]D$[^fO2C Cb iGEmxwWXgƍ!{ cͱ) a&h]2?ɂAoAѦnT0uE y[~t:ABDOHܰK_2Ed79wnathe2:`!XzM ڑyܧM#4wyX-c*",<#i/;WN@* ʬa!_2>jm!]>tP':zdN~aTo<0Yj^eユJU:r?,ueFV?m:8/MkyN^{̒OJD 0Sp"˔`LM-H gM^1 ܈!v[c7-2b;rʨ"'I#bg)̞/ w(@Zy]3lwF &΋$!&Zbz%5Y~0Tu ln NvzMf\ W_Ex?uTLZgA OHRnj9\vxd)pmMi?1_8dR˹ rb+AV| GAκk@?pbIEug/:X<)ʏAL YE+{O"4ڑ2k Dnf$?l84G&+NB[mD]x>iL$M|s=\`W:U7XzlT4%Ljpzv'U- ~2Yƛ'x=._z0>kCK5^1Hr^Ȥ>4/JZ=֗JB}iGFLtIVkC^"oKƄ >zҶ.O=3[r;ayz&$5Qol(Ǖ=U_ĘĢ6O )-B)yP4#l}A> 1,S RYAYmOiI3 0,eAby&"AFdܨxZI !IL4VIbzkfamC42^'g6 3g7B+64Migo=ƈ$ԥZ<Ͱ%b ,!S|$xa+e n?Tgr+ 'Zq0hN H!Wf)+^w8y OOف2,dRVL1wqc`߅#LD@K?$hE%<;2n兩\yP`8$:4 <=5,F- N73ϫ䅎 ^ ՟2)D SW.K4J RC9j~3S*o7h24l[/ ";t(W=.̡l&p֠~00 2`6N[π\( \5ꀎ8qbhV 2Q==*;2s5j3Ywi'刬wUPSjr;-ߣI#Z<8}&̞T%L !)u (t5PAQ\/8Ou4q,'K/S(¹b$8t 4᪫~5ߺu|r  WD=&ꊨA9|Go܈m6D7aPƠHDw持lj 襧~ tX tz0ea 1!ʫ%]+WT=h4V(0r~$?)&{"b $h F$nHĖUt2]ʌǤ wLQ% EQ~x%t uV$f.bm枰ow^G3«۝/T~4QBϷˉ1ı$C*>&CgXe#뜡Ģ6tuLO_/ (9iw3⼐O3 a$2&֛B7%@D˓K| b>'fւz[Xa |Lj.m R ..q.>$Jryr= 2|p. u% /(/Xm,.dN bBaaV+B7R7GtBauiC[Tz`+a̚-e>=+5_6KKxE41)*h< ^o1n\s#蹈􈉎-˜dDkT/>Su<[Uo&S5sG*PP%X X7 鯝)|٠PQ 2HVfJ4!QYCh:VjN7$$Zb9Ͷ;gm?ȅP,]"ݑ& kx=1_Zk 1vI^V _&0p̜8$ 3h9=q-Lmw۹<]=Sgm{dJᔪ&UAm .+#$3b.ZN=~{q;FS+MPZ-Um5y!P=ZI5=8w%?TNT1O.+B \\|`͝ݥ4'UzB jL,;md-k++iN>omr0AΩUx[w^sC-)?Jʋ$,C#4ZUT E{<Jf@}6Z{!M:&Z[&\\_?%B6$;SDt'S1F$b0BR*V)maKa{ ]97{T~( fܤ,r5Ack4Ԗ\Il;/ϾĮ^{.yܫ.ާSO<ĩL>`4ӆF+U*x#tk g͢M[GA ]a1)e[HY/-8.<[T S;'x>&X^{`x.\U40v6هoY |DuB%H}Фq{ܚ:CHK0R?uYҙplJ eg#},ĄeP@a>CβǦhܙ6lmkZ*?7!vnđ_% ćǼ ilQ):@w֠P<#1S*Rhw[ dI 7 UّƏ`:[%G(Кwq&h&BC[V7y|Yq5Osɾwխ{ *ՏF*ś2] hȅN|]_~!{D!oCQ:jлm17џL2xpr."LoCǟrn)E; in1r8?"dYP>"W6(ZS (n1}\rcz`|Dx%!a0 VS*zPluKǑW @ZC+' dG~S§a˰.E;55('Ft ;~'kO[umt߲?E;M*rծbZ(7Aȱ.o͚8=֞Uð%qS,,$;|ybzE#JhBh"ڵT3sӇ`ρpZ9|U{quWi2HT?̟86@;e߽EHwW.J?ӛxb1x$!TIbr633upR?ֈ7ވ@ܰ3{~1t2lu3;3DRk@U~0Zpw'\v(rPԬ U=6-wiv V$rfCµsWiaj1JO>SvT6yr{ݗTE %/-*! A6|/Fjgm6d'X/ӒvN~{Ը{b6U(⳨hDOFXH:pv҇/')UCB죻lpn/TXr}d/H\S:DrI%=)X9+GZpJGw^;gv]'q9r!FMhMf1D4}T^B"//?1>[]io5]O_}l$K 9:DM:sVv< G!- ku8`BN0vҟ=k?4to}$n L-"OsC =#o?}h1>"JN~puw!KQ)%*wHvcp381g1+i[땋8Iow_s>/- =»rr954=S6F̪13O_rk@d_j@뙻@3'?T̔b?{Se1 שEplԺ $iDxT/8RKu-Z`D2R2߅=^d1X:Ye[TrHڌHԸ^2ecod7cA3S=%"#U|5?14yא~2^}f_K/S^ h?7yv\ V<)[>x ""LR,K ;a 0wry\^! Gq_x-ccs+[~ G\=OT_"fB,&*PHqi頭Apy( <@'_7 8ou,:(oӚd0e&Y. VC$bJeܟD 2(`k[gRo7 35۱ 6A}mx?$Rd9Be\bN#V;E՚`NnJ*ya# Өh3l7.sŷ#^.3xa3 jC܉*CXqˇ>,ArQ{kiO:5-l7ϗOt~DD^?Q@@P.6{:@@\T]@8ҊJ6;6ZԈpTXBy -F>V2Yl$'y~a4S{kww IyufU{viQrvG}tikq5 0'mIX2*?hi.U|c7wCDԒe톛=䑟eBC.%gsA \)RkDZajL=GT$ ? ,hd3[ $KPmy\y9*v}Rj|.y09c̔j"7rH)3Q<ι@ Ea_sDrf^.]u_m89ؓ3Z @[!h^RЙ4g_4"WX6G_KvF@u}W(_BRń+Ƌ@b*\rw6fʱ/HQʍn|ϙ*P- edRnɸ=\D?b\['aGMk׵*:̑!KRГM>Q<5TEW`*BuatlAFdH#F3gDFu xOcGVJ8T`0?JX|ٽ X2*(obהbc_զ+׾=/Bڃ|=N>M)K0.RKa8^^xT;iIv*: Ư3za^9u6ol+z;<2/]ϖN -HCU2wE/"#S_PH:M'bT\Y5xk',l#af [x|?K8N E=00m C_4Y1@Al|Wh*Wb&,9܍dgʸIH5kƈ\B_ksˮCAT}?(Ӛb&Fl^& 1N2I7|cu(*Ϡ~$!4W@ i}='#i%O-Oy Jj8xz;+GG#eޚTXd0;}=ѱPqhEfui/Ϲnt,榻M8Nu˶s;w^xC$fUF\R&X3=ݠV8X>>bxk)@0Zwr5 {j((M?49B?Y㌠-._0ij[!Тcꢵ7GON),TWF HoT[7=pg-ː' :e\;+ ªܮpvT'#ұ*4!+\9ˈ*̓˜xv:/d}.}1}QxKsrW"f#䥦*Y4F*lRuzEL|e?DA[i8Fا 2 ql{t5V %Ԣ{ T&Ãg|KBUHSi5YxGC)0WGt tSzBv12q^'ų(_IX +\cya9YARi4cQ}v/6[lՂ0+Ol{20e.bp9" e)2,c[iTũL8N~gB?O Wx⾽7qP4npolW&^PtnxT]xT2^z8XS%YRq; 8M|?{}IrG[~aح#yۀ42jue#45^YZ$[ii]uٳL>H"7p<>^% >oхZdoJ;eJU  3CKgBٸ17t4B;2 є _0( \ӑ ;XS4&e=\`$WO hgd1ǘZP<6E"F ['S:al<;V5(4RS[Ѕ׾jO1 74]P"ȕ%ڷ@;텠qO@W?D(eLw!ܸPsW0eƁrs3q7#X]F@iWRN/* Cpp5;!qIO |a7 "d9`ezlPKq%+?:~'IJV!qOv[,D*]) bX~M!i\rUWzBVPh99--hzNq6l 0c6wo[]j:9xIkeK>,xwD1nٻg.G=1F L8б=GR.@cq`59軹M[:_8x^A; q:ULX{ES ĚSU;,;ϠC3:3,{ Y;}sm+}JNŬ YERn#\sf2RfKP=n|A T/}/>(!-tgotԳ.c-fMrj3[WP;0Bi_bgMIo*KTX]R$.ߺ)D|m e^>Z,ڌ\3wQ"}4#!G:>)[>tEtK`v*4.f?أ'}17Μ̤V~yі4$X;lbk1^ Ux`{ڻ ZoYC˩txdX'pR?/`@ʦKǥ Ccj~1')eePߡtI9n!=h^8 3KyϬ*& fUɲ*6N`B9LpZoT:v ❿cB ]  $RjBw!w@04dq/utb]}ҔCuq}#c5umIե,$ +"Zd\ϭa' 9qx5nd^u@ RnL& v>?+ZV4z}r2!XpӔArD/~g0sh+`$g`Bb[Gr3RQ<ͼ_Y%svX'೥OK[_4ו c4Gš 069RP$ 2tXfU/ B.~ݚRς.h֠_g+({nVn2Ly&  Nʾ.&}ӈ/=],Æ;c^Ф+M@,rIʲ> |)l1#D7vg>3zZ%n.i3"ѳ<og]{&D_I*bWz/74Ή ɯ4|B֛u-r9=+-fp$zd}ax- WDCN!ɅhgSx*Jyͬtyk8_q7#cX;,oȺҙט$Nܧi|ߕ0esy&x%)WѶ3T~ûȮ@QRJU%?@-87_l@T`^2I 2`uֺ:qu}O>ft\2<ވc3ȃ(|<nd=É!Hץ%X-'WmMBӃu8Z Vyga oAz?jx̉ac6(M Cg5V~ZkӼͷlOBm uGFR9lUPq7]HF#r${I:2bzǭ>01TJfhI>MK@$Uz |鼳Z?@:! hQY?. ύ3y6Qav2`Io;b#~yKimb$DYR{9G|ږB.?7?OG9fʹ y<ЗFyVNv" RLF*ih@l$_:MiJi۷Si(X+n F_~GiH$=4 Jrq[< Pc6#4H\M*/y{}j`^}^P"CQGY^U㤊HĒrʂު=55XwcD{З=BFF;~(xtg\9/F$L傌 '-"V LPl(&HGŻ /Ɛ:tعD_;*Mkm@aSZ双 ƕ4,JHzm^yPA{gJux*o#똺Q Oq=\FWT}s]^H2SQO]pۓ$|9^ÒW2Ehfx #bC1ItD Rs.:@90Tkg㦩~Z^J/=Ҏsf5P4`K,*7 XAn,S}Y8 %D~7$8}$Ym:fגɛ,mJ&LKՂCcF1Y]cR%HUiVeV'hL ̴Șr UlNۄ'/#ċKb9#;Ueci&zB#=cA1dfO\ 'R5a\FdE5,BxFflRnWB |+H³=6բW"źkEO[|h|.$E+Tf@\nՐJ V~H5Dbd$daKllp㌆$\w|܈,cnq@]`ܥ5V K8U ^HY;3+rHs\@* Oh3SBZn0t&vSFv|5ԕ42H *t!j y-G104'Ez-6N"H:sn1CA;%6[ܽG赖o5Y2Q.;4yP\{o$Q-דQqmc~i˜GHݸfwYʹ!ikZR<⯆[ VDJo57Do=UD%.lSCG7pcsQǩ-Xҫj8neo*h B\O/u*+vCMKx:bɶߜ !%?[c{4#쐴$Jq:RV $gpD#nH6M-(_͹G/ 5m)̜"E]]MT(ǝM7.D#6 :=,K1EZI5޼2B{U'Hy5;`L$USx+u0va$x8zhksn *A ḢrO}9)7pzij-mޯ+ //>3q{dD)=lQjk2+N*¸诜|AE6]aLhZ^hT&(k|[aq g@p3CO CGiQ8 @eB)u K$af.S:?9=r؀C4zF܂ݷHo<6FC[X~R/Ⱥ Q-5|RyO:% u+ eٓ`MU>pkɕm%^&Ȳwn3v)2?U_U5>Dx*yi9occso_Q74cFn||wӉ~ =O3wπ&\qTk/6[8WAwB Lދwv~ qI Kj7Qj`bd4,| f·Y$;t(S'`yrW84&M+{RLQ&.R`kHx|^[n(t;F/JNT=`B^J*LThpT);/)d:AtY[('MS>XL8d0fWW}M VRV+R`~'l>#?(xeג3jޯQ2ÚsPǏ.Jڀ#zi " UqYNnM|Yh$%'D$(Oh=g`qE_3N(PsWRAq[h>KLZt<|PQ BKH G}Dy[evoI^u-n 1JF\ #$}nThn'Xg}Z/Q}+@j3aP=}&}.;G}w^RI/! 2/}o tL߉ho>Yd9kq!uC%=JԜn{%cXV2MccA Vp_ZQQL{D_(Ex{cx,Vg*טDg7z"@ϬnO{5P31 hsDڨK@eBב.y Y!,g/.r}^ZqET^,F? ed (?'pf\ٗ_iNHϵ i$BzDAPJENefٵױ+Unu]4+']yT/%oPG|V;߹N2^ :. Ǿ|{_NqEWFC 9]9;ΤRMe \X@*}RpoX.A$bǷ}j趋NXB4`WS`29 ݃\IbCO '>c\+:95cA]^5]v6As%{7c Xnv ̚n 5=aYMc}HN活qMݥJзI^%ZH 8hN L;q1 ȵrn_{G!? H 8`UH&*\Bhk$[ g9 K _U`qdv$a^m`sزp((Z H.a¾ d]7)ֿn!Us7N:IXՔO RpzDH8K$ v?W'۫Nuջ.ȍGΆ3-lbJ;G2h\E9 +kj53!F3 ]UV@g+֫F.+h¶˩ @fg=`&W0FV kӾz,gB¡!܊_~v@CCPg\hx@_ R޴{OIKOk˴i؋17Fi|!U3aZ Oμj~ڍ|8ѢiЪ_F01c1Z]-a[ATV#靫ߜl蒆AjO S8eB%>$߻ںJ/Y}C*nƅk%-A&"PᑴX6U/NdaiCWUU[@N~p\/+0+ϦkE)8BebnM\㐭q>f%|?zEw"pŭcJm4'U\.@́G;D,=>xd(TװCtᓏKȦ̼Bv@eܠ%NzwXϴA-6#wp`_~T8m^͌(D>`dnb2вUgS 1Χk q`(+0CQ/*c{2ɛJBC݃Ep>~wB I|-A䀋97ÿ~ 0ʿSFf;o]'4#۔b/۷^BrC˖g\qv>r-IK)TSmk -v)A3K/L|7Fh{A/6!lOf|2b4='MHN \^nY9hwE񧋘Mԍ%98C *u҅d'h.-p82^'SջKVs I1.Tn$J;ዋ Ca}/3z@rR@<*6.iQHѣ/VQv-r zSn]>ߡA<126LV xiPW.ʨjL %Nq~:a'ʫ5ܾ4/g ®NPx\ZrdI35T5vm 8%rkmJ7 1kIAWo#IJ`/GM7f|C!J?'PTw`اÚ ðz ~=+*tAhԭR9,d-/=86 !K'(<E01<)Gi&lЂ5WW|Jz1afT%R -ͤɑõ-E,NjO71O7Gu;B'\M;C_ pe[ 4, *ȿ]xU$7Jbq^S0S*<-+;&6ɩuh;2(Փ,c3ߝ#՚3+f2$ =IqcS)&FZIKˆ.T{+20/ϨoLfev tZgv KZFw0k.DL}63tm]k_*^2='ExxХyT%ALK(t5;ƻID.s u][7w(K]e0m.@-z#%O t1aiܨu\ri9 /m׷nRrF+g_2A~ u]mTݮZ+'D4lK8$fwE9X\==Rh(q+ { 8?KVNM[v!gAA# \HvZx߈xVl`cM('`)/~GXLb$,vNzb}n<b;3=,' dOLMa18|P6m*ho  p<]WE}[fF fC/cjl#y֫WUbCzxgB B3UᩊVͧ;19m^LdDEBSH , ] ӦG"/qޏ|k쩶<[߾~ò5CfֈQzx:YS#jj<'*pjî%#^*)}Ϊ5ڊdW @p4u}5K ^/ ZO3U?zAt7-bOkHCޠsx Kͱ")GP%%מJ5cx'~=֡ Zw“V>& 1/B`+CAE:=3ˑ^n7m+ks=^U>7<4/,zmTPBvE@.15ob3>'Kf7.dqdN`(EKT0^J'BuX90RU9S" !uY7u'/wϠ6:Z5 E_ ukL 0E|ڢ_+W_}aqig2$> I4[d2)S4vPv80ʘWeN G,ͨ6L:&x#| 7MiK%nj,\Ygv Lߨs(J9vP~?<@ʯg+t< he#nV:3躯mq%bhhc̬\jMt;w2g 2̉rjMR_ 88|m>t}Vy>1`ikd~Wok&䣫q؅A1S6~"% `|,+14!q1d\O9G;ۼdo0MaMoLmeE+ڐyy5#9oʏn*V7yDZU] %Z8^/.Uܹ pGws C9p)j7a~VA".7:/&=ۈVE#0XExmI4V,)to8 iöUWzK~i|> / ˡ{)xBU S<7H/p⿹BfIwASSfG $BXܵ) (YD8Ue*i*tE11 O,YC kbOh)zVg2G I 'C'B 0z :#\6<-,lϑzjj]GM#,ȁ$(!xFaEl<#)BY[V~CQ>Q G`7ˤiEm~>, ~\RFh]^W{dfa&ݾN,L 4\2ߵ+MOI%&.s.#1ALN4~˻!Z6T-AoWer3L`wl0K"-PXJM DKmY9]\^=-#B!>o qķLIU{, w2$R\ 6#YâoK\ێ\&N<^@SR hby%A `|6C?H㬯׿eo xaǤ$Y'N^Hvg @ڧ=-E{ͤFW2uf"&Ң^]矖*SI&#0>/WB:\toKdz_nܛڼ)ֲ `.\kb?L |B*ۆvz()@@}"Ӎv2J8N-SF\s"֜yUWs^EGF2qGR9H67Nx4͝<{n_Zyh݌f)VsDѷ*[p̾Dq# ro ,l <–N$ʣ <#f_P~0fh!%1ћ)9=Z5p2v g=m1׋b 1<ܿ3Zlpm"Dka)3&O#sIEUagN5eNB)d{zM,v` 4a䨋d"ZN藄YJh^%X_kNWK?"v~JzH%9A3+co˗"$ۍ[x|/ce͕ZSChSƞ/IMǡ;m;>rU|9c[OkM7qxPɎ:ֹ]zm{;kH{O)\0>*\M?kno4n2o/LX8I,5T) | I Oؓڸ/7Xl*̱Ћvl=!nc>T V?-i؜1^V=<6z{饽y {ULc̄ YR\m?bO9/yS,|'=YYvSY MgP ($|isp嘏SJfUQ>Oq B\ &鍳b|1ꫫ WȬgHCŧBrteb_l^gS0<<M7 }B T8T,>PXR-- CLҢhUXXAQCo6N ͐H8)v160AeJ  E v {'*tD\BS)4,F[BD#7໫}"Gz)tCrë҃ ,:Q\p@84i°p{M4fݎɠ5 ?^8$,ntv\ M }YՁ|AC-3,A$>Եo5WtE?͝ |?<p>o!ܛ*D XhA\,'jwDcMNHSBQe֓Lv_8CL$Kiʝv @ Mk$ch:5E>@`oB6jf-jX%EFyXn+AvoT-'ѐk)G=l8otJ:A`="XtL bRw~6a2B/z0^l0BGb YuވTZ)TC"&z:7"c2Hf7( 29W[fz _b@B;@oŦIHEyq b;/S2m1018Q%D{m,@r&qzO;k1o948L& %XT%8{1"FK!tJ%zQ4m8@%P`9܎F^<ڑ0m|$4UmW~ ق 6Bɥצ#2%K 24j"V7|K; Rw ؍zE$ToJ27̏f%<鬬P 1ͷ_Eeѳ^Rړ; P 7v~Y½Av^5}}p/ZMK`UD~D7ZpwK@7we) l?P[5s^vk'\UkiDIşjE.nj,E'Q4y0Y̝?SrַX1+J@oUͦW6ф\1)LϪ_=@Ot&J8p4)DUi: %􀽳 *x )*8X7)AmJ LHhV{T 5ZE97zoE/+OטZ>VvqhͭΎfDh/0G@]O_󂒰|% mG59yW9KyT:u Gџ1*I\h͹K_o{֯ $g6 Mw1,@3.c36mAA9)}%&`(1P@[BUN4DqX2|,恕ߠs2_hwɬ5(4_X֕$ݮ (FϦ6>{03C0u'-sqEjv0vA[V@jk@y+GqԘ*|W/Epa^Y;'i< z |u4$P0֫Z|/R@\!(aLIYt@60>?uyfà m9 4AnZR+m:G 6az1RT5(%$7a&I`sN:E%߀UT$"I:U+ 8D7.EiFT\#aƑ22;,^&^(Igpڊa >>ܰ|bıTۖƁsrFAV,^r1XiU͵3gb]+ ]qԭџ viD{W69ir}sRUJΉW} D=LHMr&9W6s&nD7F t|vN ѭG{?) F/iyvHH$2NpٺOH+o'w$.T \y{?\@䬤pW9KV҈+{9{oqj7ž[ 9P^565Y&KXQȗcT;TpuABsYlN[`?sKGOYE1I*`-Rc3bsre7D'`Eqf@%~MuH&\I~NzˡyP9Yz,?qdK?wάNϵЕ^%~a4ǚn@H0/Mcovvl^gOg𵽚ߑ"?EcggAIj_&\)W%F;o`*d}ǹk H1恓ѮAoMY i TOh̗ć}HC`XK D- ~Jʳ8<˔MaNM0sk0:ƭ^PA-6,%Oy'̖F!3ӛ0}u4yR>?+ݑA(Z! i3l&DM yxt_D$ F)Ïȑ`ČƗPTџ#QR^t)UŽO tl[BoOH˷3^6F[eJ=Y7 *Eov(j%>fPCLޞEC;<"0@o(+%m$%1 xΰw(gm(\rZeN"QD{69>̊\.؆።xﰹ3%b s1l89 _E ܊ep"b*th"FfnWil=fp\Yuc)7O7@*a_:d&? nLfGcZai(eod UlK.hŲs[fҴDہ!= f'{1?_VEyIǬ_KWj5Hkz? ّ*֗BZgWnr}U!V9Hy*aԙgMӳ cmbzZ$ǷI{g L4KgZGHY%@= X4?m 7 -[:% U}9Ls1RsjJP[ݵ_׹N+1ӥWDyt d&  ũdٝ6swTp:#7' @,deGڪ|6WpdŸȐ~F3{'dB7g+=u]d8\BvlO=e`n7Dk:Oz9S7لƪk@wZr{ ,RHR- *[JaU=kv:8խ'$ϖM*}ORƮ(EA(0D/1Bq~vlFƦ!O*^L0^QNOl0UsG.СpdA>)S|+zr Du.$э{I.f;)0vmPkz(ۛh |kKxx:d'A^f.\Bo"_MvkCDmH J:6+@eMw*9:>j1|K)Mi0x+Óm 5eslyq;UtW'k&(R5oRֿݦi:'Ya[ҰLnyK\)>@B!N^HTƯ4JPɍ*Zw_ׂ1S𽵱G )L^ ʓUu@_W -- K1[E)HVh|R<k\*dJ:%]kY6 lڭ_:BEnPP8.Zב}{= GHǂ"ãex=!{Y,mnEB$ p*]1{ pzP׽w%Qt݋OSJWw8' Qm@P$@9,S<.iĠ EXܚ{ӳZq5'KJmвm jF";bo4"6pCh:{^(P~  h3J,+TIfJ#Ԍ'V3dFèlb*q}σ;p!ɝʹ3в<l <.b>@L. /a9(3avfe+ዯL@&6%V3ciCzYq UB5T"A;a\D *vAm,8Q,Q0"RT4lih1KTڿE!xnxI$7wsYq%@ )o:1ʝ'wwpQ|sr/YrUF  0Np6ఫDmV<K=ln?B {>Z٘0J Z%&MR7|c>5bҪ$jq­ђ?E?Yon^E*.v9 r­;|20&N;툙tʁ]#М^ 3:,K Kh)]͆irtV1z|#` % (CX&>qs-6 >ߎȝRʉ-iag tRgz_-QD@pZ[Tp[[ (.UDFI͍Չ0Ƴp/N{Er O!#2鉰Y+_=_.?Q6ݣ-bHo]ϡpd !ъ]XRb罡qyA "`VfgEۚBx?Ox8 3XFss´K~U]# 'ㄸ/ɶg#d&N0M _ʡ~{^u[(q>j 3_dQw|@(;^7!|l`#۔5 Eo*+s rO~{$n#*˦1` ?JlnL\ qiD7٩6Z'dbEh(\ di_ { "(`d y8;P6@r;1+C X`}MO6#RՅ6 g束\@yI_3Cc^4;!"2._Em ¦DxxE˺R d A윉rSP R1l zI$`{o*ؠnuia\>儏0.Dz\FЋ{]h{  ; gvK|0YHӦ_ҍS݂lщ>GjfИ`+ GX|5b:( Zà0l嘥XI6cߺdSl!F#qkY6K+ )ؐ)K~3ևpkTtvW9R}Љָd m+l qh}|q>1;K򖜦feGqI;H0@/wFynnXR ~.4vq2}fGSKȥ%9,k4}ktA+~htff%YY :ݗ-98qF1hX[/^DKj,z^ CI4kC1E#ȿhHH|K٪_8؂T@ݕMC/ vvv*5Op;%QEW2ș3[׆ #r92ǔ7wZe:kZxfϮAݚSk\ =IB[6#/49^Q׈ȗI4mdAF *D$(gOCh"f=Uԅ.`*Du4l,eMp&@kҢMa Rhaќ>ܵnQMvz.WY#SV6-?3^c(nxª@q|=U[&+- ਇ*S(OcuѠɱVe2/ga{ g3ĮS < vn#7)5t7qk'i bڰ8 ԅ2cLغŇb>j`I9C5H$XOr^+C5݊VTVĥN+|baϸXRZ6[(k~h`nUZHͩzasapbhCbR9[]9B!JpS9NO9t?f,$Ztm8^շMS6~V*"B$rUT)˲ڈSn) ~U=hR-rJ{fֱZ~|t$/a#殭#Gؖt,o 21ڟjABxDШynǞ %|#2\%jͧul_+Sv p$K׺Fw4nu4v&u &5!ewN-$xli9 /f6]lm3wrUU2?~3I6(ù$/pz! fN25JlOf} 3^QLsJu"%(tȥ*6Z'amo!q!k#{'A$J3h^VbޠpuUZNJjh>uu| ,Sf8Y[_%taubLxk1j (^3f@aVK%ǩ^&猇 d%62T\O+@/:f:4usvXᕋ6)z nj?q&@@f""x*Z%Ab?(bb;w]&Bx2?T+OwRD#+٬dsKqx?ZsFRF hGZv?Pk59ku S.)ab6wT;.YdMe賥!/Q8շ0#j"?ߣ fa o-%uv$e(elDsyypnLY=ǡI^iz/nFQfjz8PYrcB2p,. _ ]J oʒWKĕWvfN/_ sAaFf\,L.ƀ*fָlr"FPx4JK&]ډ(X!>"l2[.kc2"p)T-!|D֖@(.X ڑgQˍfTs}-Hhq^ ;86mjO>`O-SUvک[k3;lnڬl@#SdmlԂo{+r+(6Āfh吅Gfll\[Fjh`q'aû[j0Uqz`31V{4ɑd.+.e͗rWSBv|}8*p|67<4m0c?x'%|LuL~^<ץh8Sm-RLIո^ꮲ"[E: mq˕Jx7|iHj0k)[ϰX_x"܋MA@FxjOU=puڜ~5IA5_x룂JbB&*0;qs͌T4o>~[׸u]\07I-?jUF<|%\޼=:z9UU?4+>Du/J[ >5?R/Ud] ;F EnsV2uTY`lTP!bΨgU#|LNF8Ul=-1h #I3*jo˱)N,T~y2E卭uWO>Vtӽ7~#:(^Ɠbpwh爤ha$ӗ5ҡ**6@؝!u*HC5N1 Z>}rpD{W {P>\{Sм`op8Zz JmatuMu~BZnٶNΧ~Y&^!ʰmCfYHc*hZxVUdb0e/$~́4:Ѹ XaS0w!0.m8ysT)4\6˼o٧tF\ٛ[<ȱYΥE ؠ TYdxd;,>bbvȋpoՋ3'N 9⭂,3|쓍zP55:Udlzg&T2"5a?6ъM%OZ'ys T\ޅcRn'[I|/!ެm,R4 E*Tn^ BrHuK2E:mh7tm\eeTC6 jbU*nL֩iވߨCvJc1OoQr=AF8.vq;R;q{K:5W0dvL7hHP /(\8  NGW;M !.m.V#OLwi^,##A Q)gy@lɵ &[Su~ɺ1JoE[u{#nQ'_T$B"NAڜOAօ4OU$`5ĨyZ>KT1m(%H=Ģ":43VHiUzx: FF@xϷM`qLlҝ'B"qc jE=Ğ 䭛i (tRPn>aEGӂ;ZuC?ՂA)\' {7miY' B`Y:-sfoI= `Wb9yM(\hv28QU5ڱ)lJ~֡!Y/)blX0DI:A,I3\boVmsbP]JgX|`8XC ./}s@)~֮}םyΎ<]ؒeNuj;40 )OS&5e*mczՃJnYOF& FC|$c~Y< @ô?Xe~J^Tvw]\7vlveJȗaX"]f pX0CTo7p9Au]D7vT3$VuJ[5N̝^FTTK&jDa x 'JAkkzBH4ʸJheC\*Ȕ{m>`НsLG`&xV+-(! ]߲]BM$ dO~aR",cy\Mz&ܶ@}~Mf,+NfWy΋dT$R&q@eg$%Sމ@nmCY/m. |RbM3v醚CSgbQV'1Jm>s ƯHݲSD[`(0\cՔ4\ D2C>Jil$gSX5/C'm[ALM ӕՃ^ʑrneԓzTzJM"' F&V|awW u|9,bqw.6CWZThUXU6٠8p5n1WXA9h4)gIEڼi%Z3OචQm#Ϫ&8NP: xJ@ *μVEW]E 13E "arjP-%b"m $Jh#I* &}F6?I0Lݺr}T8&@[XowyYChwpYo4\$/晞wGXM;U6DyjiQM6>?U'^? ~M_ds@=ٙ%Ry#`AR ɲiE!fCJLc׆|ʜR;û5NIbg3@ 7ganvOXyT5n -w+9sTmNNC&|l24A3ĿII C=V/V C*N>syPr$dDL4:sn}9#:i޶D)NK3";M7t00!-ҽޭF@nU9mA eW#e99NC~X[w=ཋh* !qDM9&Lkxv> ǻ~ZQsRr W긝e^wus<[ǝ}D@ySwkaC%$tl35s`3%/J?N&g;ixPtZri9$ !D'0n{,0zM*XLblS~WRth.YSc}K}bKh%:`I\ ULo@7wm5>>u᱾J GaoO*Ex: n:2 j"oJ<3W\@KBU1$pB=LJ^k$MgUmhly*ҰKr:)W%MSktK$?Zä4r!]% ԛȼB9RJ 3@#yS^Z m R'L$G=]-׆SInL4!q[-V˙(WNq97W@jXki%fҕ6 -clNlϣw y~LZ!aF2kR~9G5HZВ 5@G4z³\Qˬ-F̠`\&5g@0cKgEy..rz3?1Syn꥝L8Ȑ `nTᛒ*6tLłGbvFN< h0)zE=-GWDsbިN\u8y(gri~U[Sořg|)<.om>4mQ+4 [m1,B6 :)Qn8o` z~I86c 5OF$PP/@TG+:QS.tU8vU=XMʳ{OH` ?p1}8w]/진b&d[39^~"2I@LJ=aǩ2Y/Kv]?grȾ.IA•*0 TOPҦ/)k$+RQeGۄ ͷC]X[QMѳDGH$)fH 1TX˷WlPzz$}FPpnG|=.Rp6d`#,IATeoփKSN5jG[''mDKgx%jNbcOx 19p(1'%J|qXҷ\*[BjRxIyhyF [|$$T,ˇ"eG5뀯̼CȉVçQK.]ai]$vm6\l39ZG<1fNdF'*n5x۳_t[uK]L#%}[?"FR,[ݩjI7LBJ;0G'c|XKϛaG.l"i@v;|uS0S<@D|DJaw E)\vyY>p>wa$Q\IpVp^0CELh-56)nW%7ڵ0Z9)~ O2`=E'0w#k&! fH [yP3Sr@- TV\gj*ՖKXDD18~MaSYun[_jo>F-?rJ& @SR3?&!ڛ%.d`&g>xcPGd\c@ 譻̦>)5L]}|[ixK8xsjqc7Ts*~8]9, Y)S& r}ɝpKefjYM$Y^(*t5̗xȒiB0+rNm%ȭq~ccam/ԏ6 =zqPy\MsYrbt\z$To̜9=O%F6XAޡCˏiknfs71p:9w~ȥQ`v+ɿ'EpFiL[j̨$\CkذCNQ{z6\׎٨],uq2)˂m܃g >/Ѫ7|![51ʔ.b q5EM+Wve {&Nb̀}|06|.JE"Twh[,2"3tܵuKP'j-?B{ZgV"P6̙HTƈ.lWb{z;+BNIG&FڷJU E*H:6PZ+]^qefRڮq 17JyJ֚;.Ϯ*>5QLXǖbt!(܍A)n|.otK91f8U9$T0koѲYv Lqzca'ZjԉU/>n *>{ߒ%F-d޽eQ@& ! *phJ}N+C6dfO֙w^"7unp’b,ҙШ};e0-dʚG Eߘ;?Mz; nYBϯ!j!Mp ײfP@i 00@];~G?ݒ=.6(Y5e$!NEk2̗o$ G@̮z%5io5Tt1lum m?pHy"1;+-gpIF]t8a,D_ڮ>;v Zܤ<C dRr,xe!bؿ'*sx?rDP*GwQ I5Zgs~a0 ܚZUFb ~rle$E&|5\GS}|fˮV=׈ O ^&f/8Azg( s~po<(v DI|p_oXH24!zwAt+jח`u,~OB|0n4mWǝ #:΁:Br^@vG|OdIZE=@SZ(%=oPkf6w>do.teO 1/ N$FA @Y!WID|@[b ^xn:p:ŘG<|Ӻ<&O%Uaܦ:;~ .LY@|)yO;:rB<@I-)eCb-E 9OW~ٍN~P}V!_<>D|W^׍f Rc:ln"3uKRn K1]؟kL)nJP nYf@"w@*bjzC+d[/ɱݢέ%uCثq(F u2èewz1u]NY-ķs\8t/i\f֪;fm?͙+pdJ[ϸz9*9I1]oZqNۻaPG|!'>aaf%ckXY n7)GECQZ͋΅/[^G|>o,M6QŮR{7r `l,9 OEm uA/BLJk6) u޵VB.1ݯ+9G OBiaj(>f I;T2/ veC;o8)[6`dpn"?6ZgK'>lh p [}gvxgQ4imc\<틴 _rLr{xdrh$D/ d9/#jK/2>MznN7͈NA`_kRTaX5-q1,KJq}'2_n^[\7U@MԺ|Kh1 L$nYd۲"ڱH5ѷ%&J!kɌWvc?Rbn}(+\P:o=sxS K/9ݖV-0*8 vDnCW9<_/Rj32Q~l"[e*DHkQ6N\jKrJ⌘V-ЏmmΟ`pNN$!H=D2\2ũV`ߏn i:=hDQmn9?Yt F;,Yp1 {w2xm-A;]# 3KFBhmegP .H,QΖsg2 T-"Fڏ[/ZPIpEěh؞)jBﯽv7x)ȿGTTO liZJ=𭽊Y aA죮ѲKǍT#)@ia[]6ŘI[1B=|wetͷFxzu8vQ&4o֬ n_VC&kxн"x8)w0]MS`p#XK؅1O}<^_IM@nR#m^nN~[HR}s_F}PPOΆ뿂ׅ&lu7'SqG:+GgK#'?taӱ1^ S7GnhCEPPiwB=<3#IZ@M=GM득JGO,M#OvojQcNR"07$><KwG^"zo!Cp'欑]XrnME^]򀨆~2Һv장v<^vS$5!:,4*F#H- \ibzDt'飛[(Q1txכ6- # 38R6^ze,^3>i uT.`~50}~Fv'Y4XEMxS[r"&?;>z'izG~*x0L4l,]\;YZM@D= h]?p~Bj@Hs"[k bi~ː @ vG־f947~nec2:ߴɞgT.Z~- cW aI @aNGrd3%sR;?rjl9C*ZeXCU]0V[C]^#6+|Q\߯<]<\R d%%0j*_RC/Qy΅ ~׳@&gHyFt. 9>؎:T[T!@i@ eݗbX6 m_-;!H?3 17}7:M/=xU;?Fܚ UwPᚫG_^SOiE ѹ%)?;#_4¬|YM!8 USmCDiAHռ9ǀ$….oF}Oc-H@jC^ ̩]JU^[JUwp7{Ywc(K Ia3Mñ7%q>@Ct!GGC)4wZɗkEKnG% aJSgbL#!>! [kǓ;!CM [F(1*`^# 2+ՔڵJ` y2nG"RcET"R^$;cV@=൮v'@seL&t4ƖLPv+u-vaH -W< Ry)m:lamMPh"{XVVyT=fm ts-T̵nNt-m <"y~X7@wU\_-@Gyݲ 8K) ́iѿСw4/#^;UAT~.MЊOLMNAs3YyWq[rUZ^E19İMZ앇]GgA+F&$%HfM&0772;ˮ y@K imd˧?'k5_%qQ0l ө\wuAY`D&Ь(s.[  ͞b &&BSn(ľ>+$Q{g.)q[7bAvr `ۊ_raII6&og,QͬIJj;-2EcK=Bz-L5,Ez|aIN_!')4Ђ58,(bY.%Y[- 9;7]tS%R7 llt_ucW킖NĖpKm(>&{ U&c   6* xNml7#ζOQoSVx!hO0=xGVld΄f!| Q">c  AVR+7Ȭʪʓ cG= k!`]:ø;u[F,o>9vparzfG$5@1LsShcU.őXᨰx%Eɘv4_7"u_E|QEu*9M(l5ˢ2i>VF9T[+G +{UJ = ~m\ҧ`%qs"94+.9uE#EŦgf'^SogH37eLz'dshҢ|)wFp3 E>L XF= rA;0iz\T|-Q BB"sryxt]͗/ت>#Q?|仒} jXN{aAQO&͘h !r+&=X?Y]Û&J"0sjCebɀG$S\)HW#LS!2-)ON1( XЀ >TnA{&T"Bcw#=4@_ Hփ&#J8I !u6!N@Z'T&j2yeNnRayAGLe?[w{f9 1^wa_j'/&?ﻕ]~;m\vc>Tyٺp ◓aKB`|OHČvjӁ+`x.8Qf@wO!t`h(!`({%((+X3ƒ{-H~2 AeG K]ekwӖ WZh&+Ucfg;cټf`N\*xw[͑ڽVo1:3!7=:x0Z0 .iP]a!qK6fOoA@BߍB<.9`~Yaj % L .&A >A~΢TIG/> zzOB,6~pŨEHh RncA?O Ky]إ5IA0stɗ9pXrafzj;QW̑jdQ|@2`a(3`mn,W.&Ѭ u[󬻞("\wc(z9"8,v]6xjg }0$H ѱI3M,9E[0?$I~xY]gߝxG*؅ؔ E_OSM]| af탐WjY`p #M?Q,7vxZUzS~268ݿiUqgɏ5Y.xSgC %y,EaQNdO]K|%Hg@0;O&gg_m,%Dy7DGr{:+-.r]у2U&J*M}kIP1pFf6֗@Pbȼ@a1Րݬk^P V6cJ흫ipxIG/IinN:u8%y[& J? -WZ}sGdMwAeψhr /~n54u'!!f!c]]RrmvyMkpB囂3(NɈKf,pGi"bu4I43<` 2~rBPk(1D Cz&&w7U,Kϐasg=l \`~]KꃷLK6pi`2/ f̥̓_m}U[VH3 s(-`^#OSkl'!bQ٭O"\GpF ;Qz.g1VT(Om:nI|]|@E=K<Z?I-@#pcW"NfCn"sb9d@}ɲ06)%z2Gڋܾ_@ɬ>,P`]rf>^oGF6B2k+ΑTZ.I.Q`Lx6.ґH|;5wΊHBzNB}xZFaZ{m̹T :9WY`,3`";Z=?ZzJ{ipE#TF7F*&B^H̋4NW\='YJEcT6C?G jg4XG_4i4^;ג iW#ޛ6ؖ/^E ߩAT{ݵT  *`nٳʾo&c5(sP'Sȼkx~W8^eOz_` RrSiG0ƈtܵY,gp{;+{G'nKxﺶMOkF0PܓŜm˶K!L|H8rpX$PCh8Ψlf, aIʮY 7#Ҏh Dx;@> _>CڠFt024Ǣ%ÚT ,Ixpxww(qk s4U Lj周K ~^}>젶o߉! ҉#$#jZ3xe=*Ԉוg:5؀iR'*8rI?~'g2=P*." eY]q;TU iGo 7[`t"v=(BnxӾnjC 6&ݣZi@ڈ-SfJ j<_w g;yglEK=V'IqEub.~m&+4ķn2↯{ U⠱Rߺ'/pIm-T;i<[i ,'amȂlPuJå9`1rDm;r:_ @@鶬T@7&VdG9j&J94#_y>'T6 @O+5hif nrNvbb{q^|4@a30O[ޢR~۩c$?UF pQr``ӕ4бq,+ tXQ"\~dXpv6QQ"io@ # J9}[u!$:#M⾔ öz#O!i R0'* E8ea8* 4^4<5u>-w/PAܕ#As>1:C$|r@O},LaDr"c{fGlU$iY]=D^GwevSڨZUo.蜾ϢcM)B38Τ( s&{ʒ6GIғF;%uՑESSq*2#Ǽk;#k5 U4Ńg g"&FW>tYGwӛX a=9/#ȧ%UVNI:!? ~F^sos iI 0`*(gs)FUB7c̕Ndlo'[6>Adtx?aeM1nVw/W ݽz8a3 cn,f3B PW'xVw @< "1W_\H,죣?HQ\ /j]ݸ KKfOirM._)4zV>u?+rX&W B æ"QZo,%'<-WMz)e^tx^;+scޣvEtbهhE_pbz&VEP y R:)h4RpJb:eo'oBIB dR'L/rj؊ݡq7ۚ" V@akbEf:{DDu[\vC1Z0?X؅w'H\s'$f:qE $8 |ݜҌ$1kS)- clޠW%(H@%PEI# ͱ"=r4/# ՞ȡ+(% ϳ |An -wnc}k'J?a}WZac\YeH-ii.B ?pRx\^bU`΋ o݅x7|j ԓƳ7"1f6piJ?2|ۼ s aAJ1΁Fu3f|W<%BV&{kNވ0ldE'*s b3Ng0XwpikZ]qeiSw eb^U,皐JlS}eX^W+˅ğ.ͣxRIG\jN%kN>UP~u[Z,˞0[/"סܲRYge;vRO{|9Y%)H~@ !Oc||M])%\@LJD*N5U5'}py|w"}A IdOz 7'x+qNjĕhW垡؎.} o[({!SF=q>6]~"|;6:B4j)|m.!fq}\|( <;D.kCvsi=f2Mfzisa/H7hd~If%7|1k {﵄\Ǯq˴6go5dFR?*((/J|R}$ :c΅#ʶB@_]!hWx{2n\O)Jֱk#b 峎/0ΐ߇n dJ,8xapn{񎜡P 6>eDGO\}5IFȜqը7VI]ώFESŝZϏGtb,׳?|d_8y9(LT(&[Q W1%FlZ1~sXUЉy^w i`wܶM=xڡ&-cN\hlWɟie5H:A*v<{ 7JR%n9i˻hzA~xU| WӾ>;\j}GFmcsv;FGf<{Yoy`KEdu}"x]z$_XfS[%m)mIA+yHa`#<ܦx#'}VPy ֆ2@`$+`o Ԗl!ka' A!}Rq]n3G3C';N4㽚({AK{j7} ERT:!̱b*_?4M*#U;$ֺO[)x^;峱Zx.zdžGJ ,˳Ǭ*Upܣ94$7h};֢{mZP 8 guҝHnE2:|mm8iTPSN01~ "/T_߇ǫu=5NH5nP40$dQa' bO&#^Nd ;[o, -dC2މa`ί+צWIv(0QzJEop$U[-Ii =7\"6շ$Wi96YO7ZV~jc|܏USEd؊XCM77mMGŇ %tCoN"ӰN%XۣPlѤHH"\T=rB_K{O^(-'a⛗F#)%It-1|T`Lc5lf诸s!yKf:*֓$M_(3u79N|GBh˞_9~fG$A.a5:ލ{/mR9 @1k *۴ɷ"׫d<'>˨Y][sC3`a"ufsfa|VM;҆0r҄˺< xb*SrN=dmv>T{g+zAUdgxG)JmC핚6w* x=' TfϘF77*r4"Dw}":M7_vL"ZJg(4gl,VpJ\XT,Ӄ˻̮7N4L%2w:4W_ ۙr U ֣LÜQ7-S\MGWpx:z!y4 G3/?]myzewSXԼլ2ȸP+~t~ 艿EŒ$=uTLBL}فi' PaP]]۳p0̯G܀:~SCY&~!MQ)ܸMX*߷_^'s.,r=(EMDMJ& ӭ΢JE!$uo.+WTf-~>U_㜹__w{oV]ȕ'jV{F !ϖmъWBx9U=|&K))8`{-I 6 &4l<#8=_a'vfԕpZ@@ ŌJэ (zd;>t7{)9Eۭ g`a Xv_$ Q2*w/._I0?Ff}ѼEQ-rZn0?L-ƄH_SW /d`(_زggibCW6:N"sЯOeV[M=RG;A:ݺqyhK|3yy}e"qf!\% T8LwFǿ :X7#U"4m*j m ;_H6_ 6ua{E *p\2>b0kKPek%:6- ~eap?/C{v?N3烎:DQAi!Aꍎx9KgphLV\2eਞ(Vd;+Q?Jl²s4m8y~ɸڼ>-HH3Qpw9V#~C:|JaTKxЗ[E'o(*y煑E8N˥Qu^`JK-[[Q29xmKrYbgBkWɆXxF3z<ߝplK#h ij{b# Mr}#-ԑ-\>? @m0c,@ s< ?и9;vQضŃ5}dsy#>#ФæsvQ k~U +I{2M[QYP(eqjzI9(2/~7Wkcon csטG&b ~cA e 2$nQ Bp#J"1&@;{Szn2`tgV"H$_R'U"r=eW \۔ڲFV`Ͷ MpTVg0!OA-dVn\(}4\nMn:l;X r)Y o۝^6uC/T@f5f>{8yL1$YBQJ̸N\HNsAV> `Dt[*YyHgzlŸZz,.-􈹧9q.'1vDUrge>HBƠ#N}# !e5/Pke}}O r?oJ2sigdEvݟ_S} Z2$N·&1Cyqkw# DM\{P>e DE3O >m-BGyRe*[8_qV B,zwC^:^}/XBlc|J}_rQ{2j o4ݴIJ\c Ī:5ElN)Qc#kJdyb ܊X6u =6v?G&WIZ׬0>i}FJiY1˸8q& ";8/bD>eFsS-< 5j;I_HP,%}Q/eO,uPsz\ N٧5箤:;WXP <#5-.$ͣ(㻙L(ʰZ'  9l0=(.j uX9d!Rpa27sk)6\:5+$|a.ӒU#2Ă,kbbU71!h>lEVX*r^g(mHC!/,Wf}& ũrf֗X@W#Ht3Z*!% r+aZI%z͔h-lc@e%CRRl%uGrݫ<5&('蛿XWzAƨV7MԽ}_<<|;'CBȿ}#䍭vuZ/y,Zi&#+؃1o^kuq/7RftNWeXC"_q0k0>%jZ`#6Myq| C2"[K-yD-;TJϏ:):RU71eIܾ8AvI[3" cѻM0Ux*"+I;ڷ :5F]5X 7^1akzv T?L'hΌH S):х|L:a5h)?`lBȮm3$1obuG <̓w! #eCN\zTi^+`?&4.`%5fI̴cNɩXoL;Ĕ4atVk=N> S_T+C6N# iҨj=-^ UWh4җ N'Q(%]f6M]e؇ij5ƌP+2HodTӎB1+?jMpV$"B%*Wٷɱ0eNf0ۺo^U?4V.T ylV5)!S>/\B ]۷K啃a"a4*W jf}DN9c?g}eȦu:$Uՠ0~}}}%o+qrmtG}xs$ab|p;݌ -U>0h9NMX`_V$g%B|ApRz!xByc[n'ok1rh ʠU+5ȩ8ZٶBF)0B/%̐9J߶Nd zU[28}yOR)s,D= h5`:CYwd%5—ȼt-ʯ\Ar3vVz5ES=t f^86pJf?SG˶K }%J-3HBVG3 h{PCzG6).JBul-peޯyW7Pyr3ڃ,^GI-fA#gMdf#T70qX*@dx|ucal>\ZFwwX;E xG?qP1Q AWw` hk (j3~-(aᙥ?Qj ?NuBdq%wYAuRi7dׁƿ]<-̜~6F6* NԌ}}(&rXwM$*WLn@. o*@246CwNb8(eBBk G\pI0-RE΋kN`" x>V vʓX$F S9EI7iX؞URY5b:L ]0V=H'`c ,@>c;_]V G犢7Gtغkl'v[rj_W|o1i&gMb6a<:ul *_pr8 6X1ƤP'60TToֆmxʨ Tn^l BY ңfʅqjDes-kh*]/Yl3 Ov">E-Te 1KDXz{eNB4hZW5.#c(6OG;&@HG,`X!t\n 0:؉Z=_sWYo t`d(|N|N~ϙmPEld5wX(M: t:NL {f boᘏU)+JJPRgf:51p>h"u8k3o>m!|_Ӷ/ \h<w_Wi- ߛ^kY)n0ݲSMAȲ 9S.+ $f]J|0B i1u4 ,dg`'NEr""K,k|p+d71'I/hP4$Ax{+^tjCvT׬AD&@f z'M#Cc mK" u8ބȗܽ#dC߂*j֞.`<LnФ @ D D؁ԚW[k~߹]P ȔeBQ xy/+b {}>>J[+ML9c 8\ׅr>$hvn@$o{lz̵qoҾ2u&噂Rͬ=JM"!~xcBSg>`|BWO]N|U%" $>#;XouiDy `4q.,oG=l7W-6S}|QC>tN_zObN_g'x.Tdd {Ls.31\c p,ߐl]}c2H*Оŀ CuSBƾ){T z+".6"Ste3[f*DЭϹs䯳)U"6Ev>e'Gأ xKa 4| {y*wa̔WD|0>.YRLjk'蘑Q"^{s(j!]EIv+(c4#Z=N˅robnoA90$ze mߥHZݵD x?3]TFUuF3ɕn#NuZ#\\U ]FXuoO# =j|'좻U#[Q 8B0dMbqiPwԯegsU?.;~*AS &҉R PeĊ.@qdX1RǍ1:n#9mVUc UCo}הuTNx*h(@:+i2M!+F l35=FXM\Q˚{g" M p?VaI N[?=iBڗfѕE]5.;+ C Q}`u 7_1*3˘ylby:H+|M 5 uS<8UJ8:h6ۛ7^{5:ZS(GdFN^׆%ŭ 9KlRV!Pu%g]r5Q 8=}ǿѶ^n֍o4Vںُ[G%wI"NnD(ʜkDꮳBkB̧H1-?S@l "+YpRM;Si )3P-:`豳x}ƋOC6{`ZT;HW&w"m nl 5cjqR5Ո)@&E/ד 55mdObR'.&fC3챣b.QRƇw0P<7PP5Ә`TY?Z@W?ț>c+:EB%ߙ#9oi,-Z1ar+=E14 9 #afMчu3"?}ÎBdr0֖+~ץV]R/w_㉦nտȣX&/**Qn%VwZԲ2i_ gq+J[5ui9R[ zQv;\X8eBaøB?بn+V:ߨAI"QCϲ&qJb.Ew:c*co/Ly{!}M!S)dO\O~>=HYi%Clj-I/F-Sb {,La_՛q<0A"urZFv螴fiq50]z,q YQЍl<[cި"ׯShjkaH6%K἖b`p)^3dJM nӬɄM~Pa{~5!1Y\q9vy#rVKg$SƤ@U{h^H^>tffw/GAɭA9ňs3Pyf(L{AOv/"s+W;$_d/ZtM ^LLMj?y. aΈ9&c9Ot*A$"l -cj6U@Ӏxd.$Jy? e}.uf@K$uEkq@7L.2CN;a> KU@msJ<Y̻x*,pq8 RNI OYC{LK ^%OC9jW8H*[P1xl3KC8dz#Y 4Omv3PW0WX9`!M:w߹Z8[^2g*a8k5'B EW|GC۫kFEdS{Y.Z99m51IJJk|IoV;ɢ" KձR#ASݪ3*1ںYbē1EV]ϳ zڍGЮ8wdwk 6.~7;p;fsI͐5V˕? 0Z&1f$߰'-mĩ~⢜_x;v46,OzPv& [P#yo8HFm9+2O.{T9pJvrkʊ[VP6S$}A岩Nٍlya mgjVZL'"v>pF4DJ\v] b~li.- C% ˣwX+MlW0f!7M`Q)673ji?>7Jx5A`py"Rsu}?m@v1+T ٓ\zԑ f QE͢x՗Ne6,H}xߓ]bDض3 V6y.5tx/za *T¿ݎEjH2+<ֵO`߲ SN ol,fG(#^a;I\hQ&٬ WH$ΏaN^4yDtT+p1 &P01zRY( ɔHX[8@,\qQ%qA"􂬄f=K=#mKwNw6AMאַ@~ K*hblw?Я?ŧO#P-mXeS\-F?YЕ v+Mb;hC#L<Z6",4Iԋ(&HpR$D{5{E&kD6#}*9){-YE͇V摨1%c G9&qu)ApAq)h#!iZq6snM7DC -5t56Fa"\I8Tԥ\pye;~䗞.kv7ߺOoIXHAlo51"D>3Dߗ4 o!Th=Je4 <Х$5~щ:ek:u5 +@iRijsY'1Ouf1!pHq?y(~:dlܗˇq2P8KI DC=.k_!cX?N3U J ݖc  #`si>7o'Qk̝@ܧۆ$y8"T|˱h_(*TRj1 ?h2:_S8q4vfy H}shHjW%PTMu<,6YZz*DRq% :3%gw'[ߧ XġAud,PNDž~4P ڦ:Ȃ*9$i+Gk$l{?#o=YS (ҕJ |a/p3^ P6RV_.K%*/;5=U0,T˙ x*BHpS{ך09pk( 0 K464;_O7r%ԡ8?*(h)_.o]]iŘ%sPZFhvt5 h"M ]Eag]܇y֮$Qo /b_lpMA;<.漭H4iBl V1+ecOݧOuΊxT);7 F^iԒ@Ls]<|8D&ИX(rtu.^NTq nEj+(K ZEZTexŀڴ}SЦ' uYkj A9.0P,{'bE0T P=~ ڄs@;֑(>!%n=?-!vWl!uؽ?^hVvIAqN p c2W ؉p?{Of`<]/ RH_VPc.(u]i=u;HgH0 LkS90`mZ<:ż[ZRmbF^@wLEEiu!ހPʨϚ-E I* Hn bQi92.ë:jRw9 Qe6߭+VE"۬$$zݠ0 Ͱ15D,_ap'+SH }{N#% m<|86*R\''c9tl+E7KT+4nYk?J]K0؅+DP?hrVH @ПFܕ+ wlrfj.ށ'Vt[u_j<%,|Njl/w#7QEJ5//W*KZґ)vZVQV_RE&0#>6]r+!f=a('=%5R8|׏۵ h [~FtTCfB!ʲtu }^k;~JǩmYy<<"reOk%RO1v(aoYn_E,qI>"M-AQ&~NO_/DO;d^fZ}Twk(X{V\GUqCF˿h{2ϡPO-CMjv`)۟Q~dOT?>`) H5"jΑ5 WMwoHoNA1x eQӴ׵q^j曬LƚCӱo}yaoc}ڂY,G2mNrzGBNt]`G)9lJlʼn&E]RM6SVXz"2=NS|*PGH6r__W̻8!r|MMƣY Ek(Lf.gR|`|Gqjq8" $Sl\xqb z=+< ]j| q2ְm[`נކ0⺚+n!4 `z%/NZ?I淂H} -(fßF 6 ^SÛpǭ6MfAY.< xl)gSBG%N!3ȗ"i>`ܤ-IJ≙`R 6OlPȀo=k%QX ;+UHJ"9D2E0sRf Rthӊ dT=,ݴh6xB{6W:S=$y\1ŅG/ Cy'& ^&k`YP!Sw$&u/o}0|69ecD/3hs͡5cazMבa,X_)/pL9Ǒf3ɀ拎}A^&+me73l: o CR}'>^g<%4|^5&D=:vJv@Ht0{u" meݻBo{im A 5*D„&ZeG p2/6>vnT.dfI0(e7^ֻxNJ~k%ܭE2p>kvys3WM ĵ,l "49f E*swxcI.e0n]݄*[#qEK&LN5NziY"LJa_;8i,f`ã-}||Z5fdFfu8˵8ڬOƚϋ2E}>t''q, /gm &ApN˗w9C;ƺM5\LVgV/ Ƹ"`իstQQ 2!+H *'m~g h2]H>yj=*ѵΞ )ͣ>'8si ,W7T =^AmgO=Q&EOhǠJ_.a=]7KV#A7Xv{ W+T'bjԦsqJM~lކ+Ի~~ ƈ8ݷ3 %dsL\cPteM8lxO0w7ҶJ3>5$RW uXfuwXH )"`u~6y!tV'zx}G~u$r"D6>4 ^ݳ;]^LXhzf1d17wd3[2ϧōtFo&H,uK{x1T*듷4Q \LM;)nmyǑigxe?g)r^L2:spb~1E ;Q K`{Xi0g'9\U5F8G_ra =|ˣqR ^E(;-f3?/@s{R[T̈8N5a vύISMukE@Yx6I#¢? ZڛRwX-'Ʃ-uɌ41e'x/Y gVMy 5-EF Dbٯ7 Fn=ͬe>3u^ TP0ӗ%@R, Վk̅͢ƫϟoާr.Mr8yp85=#B4gwuX@&`>v+Wn,tH-aV#OFz<)>{xỌڿ2rBZE"-δ LW~"(LtHNbO;e4i/0\ԃ?&8m<*yIRT K3#v Z)o f-4'=41wz  y՜er L|>) xNg2dIk1б#xq|rG")N U,Mw_{ 9r3yzMg2O$;/ZT;`&oϤ| 9q.5%Y׺PYK|H3F4`I'llT5x3vq1#&wl;~ S)}S"Ԓs MsX荄 Ga"y@ K= F iV~O.GQ)/'?YNyY -֔ h7pJq]eiS1613aX\w8zMܛ*\X T( ~nD!Y:iJJDeS6>%c;ėB.kgONl}|7|bN k`q"@4Dn!C>Taz@ݸXFXEfJK:pxD~Ϲg0; "+|"N{0Ym O9L%ø)#g/"Ovq5Yw:E~\ݶu8 vG U԰@?BFMSG$^+XZǝ鞞qɐae 럪75E=c/¡Y&# !9|ѢrQ5ȤB,q#: ;@wƷYa~9KH7ՂZsy( JK QVT!O`gjQOjJ|Ƣ)>j;B;mqk/'/Fh{M FNvmPfz27 J7N 9m=opʯ5 QU1ZiI!+ Ty@ P E/sfѠ\H6&a1.ZDLkǗ^@x Ob]xBL=]>c=G~z@.إC@àhXT8ץ0f:hУ `lg}yV"3$A40 q$>aVa c.LB6?t&k/DtE&D֛IKQ"yab937} )$fs I#ʸ,?̝I5dv}<}si4oQCgæ_&#=kZK%1 @y#dF͟rG>Qu)4UrӻBD돴ԖJZcҺnEyJJA͒{s=}<ǵ." ?hZ4HIk'VB81?]eAp66@h32) ;E*?Dxp“/!QVu`?:NtK_ #k%(am6#D4.2Ϟ]fCL[opI(``4n"ׯV8xöD 'mR y2N_!˰^Jb@~yĭ?d9|p> 0NLNQ~ŁSz7yLr=P:B E줣tFA݃;)s2!}S HO)L,aSBe<t[qKN=tG,f3h 7Thcf^"sypl 2N$Mr~ B_^e޾|s{val2?ڎx[Z6j9lj2lt@|sM.~ƭpխs-].r>,J(NͰP=*{Cd ciy/{*\BVJDVbq<~D;rRD7%>'nERBP4K.;ۅn5EA"TcC\`B􁄅]&Gk|ɥo7qmXkMGl+I37S2V@]5,v_M=! oJDF9п?gS8 fIff`P'BfRw3[O;JZ2;*23Gmuȡ|(r4ҦU"SH* bN̫޳|pv(U!F8뼭cD| ӻ*@=8hMI+rA,4ⷴA I[;5T=0%I皲 @-ѯޙZtG0](\~IS.tٶ>Y9`/.ǼH͜3/sЬhJd)U;ZP=@>D/Wm@[m͞!M4,5DNKvtu=8b쪒i? j< ;Dia#'HF<F}PT %uVMϙO.{4|@FrE(g*ٞ(8ӷƜ੥bR C#1amG&k ӄz yΊ#_, ^:?v9]u:z,|T[w XJ>]M3fmwDg.ifRD!_f_݉b8""4U"jhՊ50s0^i׾'/̈́ {B-M} SST{Eͧ{YɏX+kd]h;H"tC. :2zxti@UWXEc(޸!@ŎߝjwFߛ aʘ%PuVQ%M>H* MUTO #L@.EQŵڈ#k"GO!Kzwy:^C\UPح`OФ^ Ǡ3^5aZDhЍSPI{og8VUGG_kjm (-5Bʩ/M^Jg arWګ+Mg7<Fy9! PQ @ژ0J¶u(§Sh&`[/w ]ND̨O.\CcS8{*Xd(۬ޒзE&+l] &w:oJTڦ Zj+_Z@atJ-4/Nup*\Z-S lڌbo`m!pC!i*Ij4KA|ӛ?-FRG:yWT3n]$u倚iQ \tg_;zwq0@,C۳A', _)X2+N(h.-b,7t'OF5enxoNQ+|#ktoSQcH,yw t. xd*]5Θ{YGpߓ8X:~>906}c(uuo2y+]w t8YUC={hw88H~i%P@cb}xx3V,='B=PS*F?6|ϭ\\pθzL#{h&X[/+Zl$d/;+Ol_6W SHzgv'PāTW |YrF¼5j+m6⹬t7e(pchF}'q|<pIRi?rV&/vM$ 5% cN@qt0ڜ%VRi>fZy/BFDEq /hn} <rֈ'`=(q@Ҏ8P$]:0KUaFf \7)ksy+0יvꮊ舀_`#QٛSDFPkEJӲ0)Gb]X=B2xgˁPL%%{1o^Ovೱ)ȶY$}KrC 627w" ?5&?׶ ?4ipYpxGB5|C/(Uͤt;{qQ9{ЩmCݏo85¢ uCثه qCV HVy6Dn /u0ľJby\7JV^}vi?.q6i ܡ'uO{$$1MmGi>'H5<9`c1~=,hd}y) =DT /`b^5չo[ YyksE'ҹIJawT;V C9, x,#uX'ܔoͶ Nvrt>+}Ĉ'Ff 6(XdpR=|w/!X[;Gz!FE<'"DZ zkNLK^EoF)'h:#i46ev[5̕ފ 6r  A玏!h R͌4%kƢԭ|"腁'C3fAi+}IWs٫0y: P}-/x%y+GxiukPK$yA#ȦJo |+4]{ R~wan!] L og}8 ̫{m9C03?:@c-aS V/R̤4%w!%1y`ͰDYE\Ij^,05 6p2M- @)TEM6ƞmP43WЂVWYKJzICN(⢄ m+jeh}˄ :;aZ=·Z3]H~UyC\6 Y>sT_sp-i2R`0p1"=4ZrVSlG݁Wk*cPoP@kH4^C޾40gr ֐n~.o`IYx;$&Wi$#"$ovZ@pg97):`0JCX܄߫yS;%9Hu :OjW(>vj俇߲E(9U>wZ9nVɻWM>ZS*oϒq%dL𩕮nqٳ5ww^f=9LUfb Qi/SlD֗=$I->{1 qdhY#7LY+P+Rf`D K J,U::7e(>7NjL16q7rl1!ec GG0e*GTiEs!cN{ֹ$yj=e3dߨ;5dD 3q\u[cL Lꉌ!l]jYN sC7&O@FRicX04֑cZA $ٟ)HW $ i) qsz{gl-X췁0sq|q6oti͇ÉFћlu܃?B f. 13̸W =2=+&w;ks +}>~\o"[*_=p I({q#u*nfMBxlp" ]NELiXvx |4]Teng`yρ,0ѕD飵nJUd ziۗ:kQ uGI?_ibH2!p Yoi^F*+.0R"qvD/Y;rs&mYԯ℠H+ԨkOA KpJ@:Hb5Y'[1A5Ay Jj[oHrj *Oш) "+bn(*厦^tde}[f":$Ey֫f"I7\whDxr7R\YrEW53rt iIVu~}h3B eGEZ8͸@} `AqF EAhM:_˅i=+69Q<@ iu03-Zo%|is ʦ=Y Ɓ,~+"sĨ reQ6hqhϦc/ On97hZe; 5>'tRvM(%j*Zˁ gd,5$>a*ݫ&b9ԗM&#ӯ`'x z[k!0` :hy|-#[%%b iPgPch,`\UT:7UfxzsCDcĶЌI쬡_̓Є%na:l e0r[IBi$/~=vBw:7`F:[o1NȬQ(ECC"HC9-1BR`&P fS.X[?~獋Cks:P#e!bfhsEgA2cm8g ~%ᯞ ߜe\zpFMp?!k$ ΏlWR&-Rv h0c( ZxٳrlT4썶<\[JَԽނB^ ӧr^*ҁ;2RCMZ.ϗGGƃ#N]i #"}a#_J" P7W,Ej$ p%H6ru5SfUg|1iD?sA;#7BO1>R>c^rB %Ӛs({B­j9υFfKU__cnN{Ғȵ /|-I,0D0gMUO W:-]'i F\"[`2XSDƮX̀mmїa$$Z$bɦ~uXҽ-_>5*V<XH@)6{Ots<ボ?޺SCx:Fhhem&֠sckVHak>N0~I%`U-oBXڼRG߶3Qܢq@>z߾~V;$柞ƴ*'g}G2/=䘽8|&Rgݵan;mW"Ť=C.K6vam<͕J8SJ pZuYzL ox-9.pSpK(J.3@e08ZB @c\T-tþj6yt8ÖWxU}rAr.,9uDWNfWy98?猓oyJ VRfùb֜zv@>jر"c"(7tk(xTKRQJ͜_Jg2/):h;pX GF0pdЯ>T#qeu9z#>NٟqݱJ$#|/Fqrx!.h L+1PIc0E m(m,L{ w-@K4eZi{ڶUV&1z/qhRR ۔'<+>C3$f Ueme.9Ίd3.Ju&~~}LkaHu ߇:w1jxB5wdgOW:6^1OJAM>9Nc2֪e~(ԆE7D(nR: R:?fI=xV fHCvRnF.4@'僔O EZ~$[`еFv-z% |hAȝ4(1à/㓉kp2 f0 kq Ĥ_r P Lz:5x#XAx?yM]cƯW!9v} 07[j,f8-K\PLWߐ<uK.J4vv!ғB#jߧ93%/X 8~sQV 1n]@3x_soR bWFc.sz-3;O2L[59/7-n6 vJxЀ11g: +v=n!6w@*Y[R_%-ăhN4&; \ d(1ܠ:1\MݙGG$r!-3cJc8P9|H3DqJF_8q_ Sž$ (Ӫlj|{`=ƻ~hh` dw3sY:dlʁpy)hxd%[RjIeKcB4,ׅYa R<)^{6zQv;fKRϣe#.?JΔ焢Rp?ks#:!bI}6? ЯV/$;=ˆ`ă=نP25dݸY=|t{iykd`+BK'dq"IkN"L (2&X,>II>{ǪHlư?YQf.oĜ]8 @ҳ^ӄ-*VH_{Yep/|"+UY6k}zG̝&ԿgEaI71RB3TeK=vd>H/v**ZH[Z Ǔ7"&o0unefuԊT`% 4h$ٹK0V` =ƒdbmR hbkɥUxp3"3KA.UډBbDA% '-_EOL/a/i{w o2*Jæ"` mV F[t&dOÇc{7̾QpWdW,d"ٗRSJV a\j%ἅjgv?P;K ̯ceIRa! 0jĐMٓ0"LJC/ĝSN;%pM/\F;TO+ՖkW0m_5 8wfzamBBR&H,O1>ǹޫtV-McɷK5o7\q=uJnRZ3j̑][e 'N860W?>GIūpՙK8q!}gY`\1+.L@_u s_NUQĔ5~Y.}tN1it!Nkl@keۄ4Lk7`AH)գ#Y\FڽY/Z^3b3QDc5/ӪZ*`ښMж>>Ï9N!G7'Gyߵ`qj%Hl@OGO2)D*8 (6N9.3\%!w4/-Kq2MPئ-A؏ou&(]WahdPP)}j%*D6\=]8+G *(h|y@N{r"&&. ذQ P 'iFa2js?a?fҵ1D,fJ# /LLuU^#+?igmEA#U[#~aNV̶kWsd92X*)>Y7]%+VGy7{(i<0GQoBHcT*D>4-uJrPu؏!b8!l'P~)n )9 }W&M+ \[m>IS"YdYYE,!ڡ{41+X|qz#1|T&|Y g K~K' ^DL/ݍs>Y4Q!pӛ=ѩkl@|{Т'_>°$$vȄ(G7FĎ.b:T<("XCe>8) DlQscvr X|':%'ÒYC(sٖ~,FjA1a`eIӥ%%| feՇN;cswa\u~?i1kCn|=s}zx̻7?pOv}Nd3%jli;鵾eێ\ n6f&"O^N^fAש@mq,g"6.MNj Ӝ@)2e``S pƦEXy(U4)(TN[iSD?n!{-yf2:Hȑ x["PFր2$ G2sS"l *+ ?KeAvq[&J|(;tF8fkq~I1 .8G wu 3x ]o9P.bPKhLF\Ñ/ϐO8{ؑhq/}̄}ru;;q8iV>q na>Y%N X&Ijh|9<,wziv2lfjfWf}ؓ{<Ť g4'S+D4T7 5LE&tɔo9w8kOhqjotbl׼~pF4F _IVQ`_^; Ouj7S,hdu#F N''"KJ1S̸y_ {RxK) (*qB_s ..!-?Ӂ3TT,ӶU 177il.rv/xN%!V޶ w :DRǏD>|K"mն)Ie<;YjwJ9]R`i*sHm?W_~Y ǍW.X8=ogT%mE= nX4v+c {W,Ů-ƾѱ|/JY^hŤ"L >)PrZ&M!6+HWS}ńHTg7k3)#p_u{!q c&{w8xHaӍ5 X9`o!lCg"Ev˲yF J;@L|D-1OC[ʭCslIL TxciGp✓3]ᰰxg|5/"dIهxHBr%,l>>^0p(zN _pDrmxsdL-z<5x=rW+ߔL8!I<'F Ͻ6I&z@c;[aݦ["Њ'0 3ظޓJL[PGYMVcV7 %7{|Xs£G opdGj\iJjp8Jѹk@XX/fA޾G'|G?{!w(\FץO2ݴR #mͨ?(J>> Q5rb󍙂0:&a.*PT+z+lq;@Ooldc`ave VU!]~/ ;xmXjRިC.gBwHw,UcUu~!'ˮ7!ǚ21=FFS*{O!}Re P1HD;T(9eE^)Z*`1!BU᝱t&x&5H6?]iOяVNg~WƂ4!sa2:MmjQ0* km3NOVgO3?}.n^V䯸fum'e.\1h܈Ѫͦ}UVϸcC AHz rR=W)"Sp UF'w3SG;~\L;Lh rh:)d߹ʮr[ Qmaa=`s>k޹'}7 f ' =FsnO1Uqל;R̦|R`Zo2x~&7%ѝ4'M*AO, 9E6Uw):v?,:ó#1$"ﺛ OP;%㐑5~EL8)0Gs h0L`'فp}.E|W)ȷ-SE\1A&)8c=t48Nގ,+Q :Z-z~ݺ`\=QIFe.hCwKg&R} }I@] #Tr0-zQSs-I^gmR?=+_"L]VP ih7|~Sĝ9!7zV - ݻI`ďЊaWF@jTg@nOݤm VbQ]7LP+@TfR;B<85~;U5btT lzQQ]yGB#ϞVnA.x@\RuR]ٍ-*|)B)Y3+}Ї|LM1NqNiD"$2It A!pL j:Gk׃RP۟9_`  kP&CmPɅ/ԅ}-YP +cؓ燷責GbHEݭHO*rY{%x0GI5>{zuDfhhHպR8W'Z8֎dsŔ@#^3N.p5V Q¹}V -pCpI%N9 Sm#? nB"/Q3 0z$n5Z^r:j5YF|f373Wj~{cIPbtP9}UX['%L]Sql]%e/0AhGc7pF6ܞ;dhʩB)K֘P#Kyď~E61nx*3$ߐv! QQ/R?ܿ,u ~&0NȺXf^UAL!~8ڴ坛}P|ۺ \%S&+TlLtئZOgEU4,:feDu OK : F~M:o`r5*όv:gP=i:1))5H]nUbsfߍޗDg>dH7l^_G G5ʠYYΐt-96~'!\|.+I$mo˴BkDNJ_|82Z1{Ӈ6cܼ`#tSpbߔRzM7t .ijc(׹!H UtqVjcVuyy&bM.TDɨљc//{,$a{0 Zes.鄱s#~w7U]~3hr8xdvu #i<s]jU36SޢZ3"df, z܊juJ{mC`nʫ-'Zʲ}^rUf} !!X! _̪Ycэ ~pӏv:;c\?hYaslj>1mC '[ 3<8b[ y<XylU*ȍ aH:+:aqE\|@]O /q O.S74ݷ}`]d:S|H, 6BLXL/U0Eĉ<5gB5FEֹ\YIy6J>qrTu)WeslKy=F5 :$Ď9uIjҵut *v8[nLC!Y g[ސje0Pz% c^xPR9_hUL9qB^eDGijuM|%', j%)=Ķ8pB"v]p閶B_i0Wԉs`UUO?xv20P15'WZv ;pGrȍ{d/ИM}0#OT9H_)OB|#M |Dh;oܧiߐsgZc#DQ t2]o@狰 :f&|2d^)[.b)Pw6R.*%ț Eje =W2@cVIX[-FD ş֢zF5ҵǾ{Bsg(CdUOzˈ.>^1)uSgcOߋ|>#z/r(b](6bueEеߥa`(N*׼}B^\p3jF` P;~COiB-ԩ=@՜PoBg41dQDBZ(JdS6˽!o֘A I1kJ2"*JF/s vnԖ)(^psuS @%O ȁF# ) OK|C$i{Of k-poWToDWѩ6eH6Y5H`̸-"LeN V\1-|ьD;Údu:P&Ϝ#QAS3 (TbХhހ( r?^hAR}}CX9ؚ ^Uӫ4ԄxOyQBQ9i&vYe n0n3urvgkԟ7`&V-{{&%'qpۃDq~D%6i 0f6l"kdi] RN*=0~ _o/sAXP}[HgmPfN ƶAԧS>p#_.E˻ W:"/_ rÏ>)!K`V'o5=~t|| RqFj G_ 1l&TWjEZ)d/UX^!qUùov|?9]<f3LY &J*\P.!Hjon!T=RHxs=<$(8pC&dV9L.g\i4Y]? '/4`00q,47 q`K_KJ$4p/^7x6_(64!hsh[E-:b* &'v We|9j]k.xzaCTӌ{4y RCV9BedfV#Cۦ?(Qh`r6Zj<ڌybAݽS1X}m0fn$7,Ξ]5UZ1[ ?(OJ2}} ^XhzU<\[8lتUTx?B$" gv~f/Ӧq_ϱMlLB#HhWj5J>1)\.y_ vk#QQ`V&es2%,, ג0s] Xl1 JlQ_^#H94t]TlPo0 @}A·ȳǺ +b%2M:Z^_L[.5W5Id0JB0 րmC",x"66L7)b4Ç^ \@'Փ5]Uxahdd$o:CdrwiiSc LzTeQ{_u֩}[͐|-s%:RH><cϜ V"x{ ϝ:R.r2bM?0J®Bܝf LeTzz>Z)nV*b,J+ 1FӴYa/a c8ĿޞyEc̘aDc(|P0_IMA99"k k@#ї 6INqKoo7ŀUABxlF܇PdxJn7Xk7jl 4v$?}Vúwf59Ĺ"Lq Y|ாGFYa@`ٟԻUZHƯyӲڷVY "ٲkrD' )3DZ hVA|}) 95Va"tK5e XoɏŚo#l8P 8 &`b7cb[!?c{׌}P2|otp=fVF>wK-as/I'2S Ç%(꼽epWdf-̽yfAhF_6}iQ)=Ov숻t)QcPiAS2eVՒTQyX0񟿼 15R_T~a{APd=]/, k .MUc竾SW^.f(MW A6bDFŒAX׿+[GTGzeC Ws} uydgqo*ҡQXkWt[-DM azA*X;4Ȟ={w@OpSk@ةލ\RR%9s@Kl}ϪR!O<zgA{X Q~14(|@5g;!0ۦdI G &9Cspǒ4bjoMHcl'"OJfFk>"M_|Jl])!]6G]t <۞ͣiv•6Sv?U@}֋X01>|2UoqNN)*Uh"rr&Mܯœ&ħ1@+IjHӚOM&6VwG}QBuȨm2q=q& g_@4uђMrB}aN'!w[a˽7n+mX8IYujڴNZzr$b]Ov-2m^_ΡNǼ ;GkEO_<M9Z=+wM%< l76ʧe*)*+b#Q|6κkTp+7bh5t`\I,!1NQU, 884'Cx6߂aqB%,нv-^wgd^w\! J,Ez=RH"y10M8 4Z&As;mb[݆=A^>m җx RKH>}()-PP)Q WZxQZf}=пJ,Vzjgn/ 9G*Ajy$mHpB}w1Fܜ Ϋ̦8#A{=Dr-LחUaMxpauGO B橝yUiمpԦoL&Wgz, /Ңy|hI,9O0NSf'3]@‚Y6f`p|R!:+MmܣdCW ԇ7Mo9EzqLծWU 2\OU |6Ã48ušC= Sa{{Xz:FґLd#aQAQMSN k ߉3_X"*h5?KE_+/GWà )(N*!t=HfL×0z)Htwր4h(Dũq.=+0FfR1jeBD^Y-k +"ںXD))bLRD9xhb \Dx}jv&9y5]WcmF4yҁK4_&[" K"ي@ Qw(}ɟbh%ho/sqqE/5}`@u6l:߽av]emӈdXr{KŜAp7xo??;~}iv+{`l"{y0+OKf#xۣunMDTԜ0X Y ٙZrl+7͔ʡږ_Cw !8hnwaaK2.ƁE8zi^mfRzȯA&mAsYwsJ @"! ܱ ~> `7]ӄ'0jEXrOiJ\#%IyM|86!sX/K"*+V]nנQj7M5^MH.)ۏO /؟Z|+}ǸZqL^T&gVTB6Uszwۄ[0t>W faq3Nm~tuE|ܵ37J @5ba~^=K*lQ +Q[_ Ctj2t`T1}O* x&B+|<*)(x@n bi_WyI H{SK$7?Xp,ʸG̛;[G.Hϭ`&leC|V:jlH wL? 1+:jF]R({/М~hj G,v 18BPl%ev>~nԳ0Zрjjbj \Bƿƾ"Kk51RA_nK!2JŽ7!mӋw8vѦ6Th_tiZgopR+D$J۴69 {[`>EK.;'?Î~25*?kHWM% Q\̘PFvyb_D!IXr_ u #E㼞W-4\ݍ5bfnD2 Ge}yS"@蛪(=ePLF퍮 rj0{3wxjM(O1\nL[Ag#"佱5|rфe׈ Ef1Ӈ7 zco<3l"-R5 k>zbU)#|Dxk8x<>*Bz%~-7Qg&5aU! g 9ȐI>i/jͶTJ+v<(YNyƴ^!<(Bu<I+`UQprEiQvnu5w_:_|!5g:st(qc~#I@̢PlF4\\iGGs< K _>KZfPjsaFX~mS1 j+c)<\U ?*E/G%}|8'`NhUbQ./dSL(*!ѠYi!9SOΆĉJ-4L)#b+f,ti`T!l%CS*uRej:6GGt2F2A,OwoU Ѣi-F9>eg/Z^߁B, Yz ;櫝k㊴,]\w0L!k[}:v&kym:aej$ RꥱgG+9v$jӈ[Ks~'[Zb} }4U# )8NJ\O|'KlH e&_n0R!9upeqj2Yʧ{f\J( F׶6$q@`-oc}Q8, y}1庋& iiӰͺμii`)gT"y{-bZ_XW EQɓ[RE5)umFbqfIyJաThz Cf ӟdUܮ(!` 9،>9ɦUhoe>20v,-Y% a%Ӣ-{\u$QM+`?~&n)!Xk1*VNȬCl0TXrUPcbXrS]ޗ*bbSX_2\7quYtY(M rTTg8ڊq(&RȮ,Md4IN-܍Q Y&#FmJuJyo6y3rh^1e5%XtO~(i5'Ƞn nZbTLeIH8}svA◐q''~>MEdYOw%|*T#]v;\vVj ;߲ߣִ6spWȪ..!QPcݟ^džY<)9·%jjAY^/7ΐ4"/IVk#oUr1{~?ٶf"bd:OO 248Ϸ \DSw)+WkUFx s-'f j̀'bh}{_X^ek{0z+1b+oNg0,~S, ۝ڨ'*s L"q+l6aE֘g ^bST^6]'<$֔HsQ~ Lhu>18zl*'iQ%CY}mR[Ν`dОvAy?:lBr)In5$>pXAseE!˛v1nSTnLԵ8@G ҫs8&eņ _NCv0t 2I )&}e vLͮ2#YMLѣ=ֺ83^zkKg2*Z4wO:s=4^!XE!loh;@tElPBw1^^Pӵ'PY/LGG$q#q$+SM1\*X=lLI*f2Lݯ#HڔarGs'y9@?g ϰ۶u֏m l$6GNu m#l'"ZKB ?ٞlBPa@j3*dU}nqT+bawrx[ 83l Ի`UbNǠ9NMq_+"1;Ɠ޽@UpGNC)&VH-ۨܳ1 !˕}5ɍg pwh!Uj .SRŒc.)Av xEj,RK=Wh#Bu YMC:׬Njz+x L/G X+kPȓO%D-E0Ws< ^jk8C'EwbɱF۩L{µ6`+Vis>]$GZS P+-\)L*p[oRߏx%{1u%ϒt#L#6x'8=0he)bJ(ra%ddblzw #z2tHZQ@?E0WmM~&b_Iua2~v $(-ju燷8Jbq]?Ҵפ'Kl1:0 Myw^Q#RkѲ>|~^vQs\I*k.DĢ>/?F0Q ~`lV֤_?b<=Lْ'f_ nA2I3Vu9Hh E" Vg# bQ6'UPDKNCUs_ &;rѰp1bIsߔ,HWe:ZКJ' L3iskJO< VLD~`ot %! 9y̼>F,̯uWBDV8Xr_>m&7@fN'e8>,CHbDs+L2 ,;8+VPd\F> Bnv)eE&?7c\{y< 'T](-~>P*X$7cAbnd&m!`"vkE")G 1Նq샮g\+:p{d''bRrԣWdkiHZ,>!0J]b2vcL=uސo!}C4vCD⚴dVQ:ՁS% )ЛfXxpy]Krq6F cHQeˀ$m!aڷz,fMn@YˠX̍Rw&*ΪCS}*XdR ,ϘbOa )0^7[i\s@%<VUNxu#[>:1j0ׇqr|L>Tg_*lx _`[̞rJ0@YGhVhSM-BNZIb]=&'koHw;,Y)j?&UNj}]8++" 14'nG͛<%c[Q2aOKVФMYyݕE8&6]v'BC~?;VkZ+$= [/eXH(@"1GP;`H|`9yI?M $3 1Bzk 8h\bl9zb2Ψ,=,*TdT"oR=JVY;ȻIlųkRIcBA.&u#02(˵z1rپrĈ2hEpeĴ$Q]@z } Q^kf;kF-{~}3۫2\ ?һ kz8B*7g 5v|Y0|D֖]LYt)sl@g`N/I^9h͐x>0o6F)M>iZa7_?2^v&Y``^L?> @;yvi5i>z`%X@u4PMXpAJEg|7{`޿}:?aKnΈ$ye>v!"F\p6Rg}(]>NE`lg(A2Fl7-&ĖipC=^ďDJoyɻ|yYkֵ6R7#[Nm!JZhcf#~KdM͡*.NП{sm`1+K,MDX0NT@(CP~O78$ywsTsڦg({ckWޑ]dұ9c0 YI*fmϕq娒bbFeA+BLjr֦,M Ǖc}(ޥ7:]>,k0ȖB]@N,5;Ssȝr%G!G Kq>*k+Ocׁ+t80`xgH?nBW?'>q r$ȋ95 ݠ0):p`X :Pmr_>#WlrF+W_ ͘Δۖ8ڐ}TMeXk&qE%;o5CBܾŻZZ{МAA_D*s#5h e--/SpA! Z](\/|FŠeq>!@_)6ZB^e;@P뿄XC{ )M%@#N(uh4#CWrS,Gtk'̷=ظ}K~Z RLB4=nEH?/tr i,#"*$ZTT1+†r zOG.®A8qXndhě?Œ Tz,q\\Šn80p-"_[3a݂Xi=aT@'(.Bs5o Ib9C?7"ѤP)D(1;ElEu_r"w3z0 ӉjhS=9o2GoU졑ӎ>37><8MB@MzFϫJm'% O@٫KV@6[a,+5zn%FTM=Z6Pvlf~wnlb(bo\ k˔9EWrYY)LD:_wZ006I#mhH" LrӼN1ݬD SmX6~DJD6>WJνJJXN+ a/t@ZǍ\D1-T Ƞ럶EK@{oG.ָ1?Eq,Q9G.*Z n\+9`Uၧe SD̳1mY"P>.C;@?q=D,[#d2]m6'] X>6~l2HՓ_$=PrRwDa8ëV6b@1 [) Ͻ4S'ϧ 4 osJ؀5"+-IRDִ1&KE?0W'S5k`lAFG QyV6=/B/#rN]Gi?,/@>m0ڿhqSGM,ϓ.ST3|LnI;ƴ]DreB=:Hh?9Y {;txMv\ $eqoWPkr$]Ưa0$u_ [XH~V5HG $׹=z Ct/ c.9V(=pSN]\.~\EI?(^!CJ@Z^',I}*>"vp wSEx*mihBZ?Vj`ƞ0X"E_?Sݝ_ʘ 7?e]^41"X8rӆT&iO䇨:}k )=v3CI/m"T TGSzɳAQ Pm ߣ-#LV5t6%-+Ny%ƽȥCKizɃ&4#Lwsbx' ;g[`ꖕ`.PP3'WDu$d=(<O;5g:5ln(WRt2@Mõ* q&6,@Scor].*ڡc32}xU9 XҜQ˻_'D4OՒ Wܶb;R4YӰD3NAvCj) Nq'b<фQhB3@pPd]90A]ؓ=W4j&}-AJh`lߟpQDO C ^_]LKDčmVgZd"Vuw֐5mYpCCk1ߣMM7xlAj:?R'K*.e!fȤ .ig]G A-;h~ Cϣ-kc*¯cul&J}3{YPAHGLJȄ "P caBVRԱ+SB߾0D$@y<~]optp~YZqk! 9ŗy܊G̕0z9sY UX6Ylvwbc\Sw}¾6D u8=G֍Q [|,߁oDU4E`vIa# kp^:#5K Z$A;iDWmĎ{`&޶9 OrZJEv1dGz#dcsacJ2\"0_}KH%>VZ=i,mhlR%.J qH՘s衏kďTR[ucL Rt )@sȔUm&k5&x LIo/ ^G]Q학NFxee7BkGpJ 3^w,VwʯhjT2l;٢N$-}R8JGJ퀋sl.Ko눿 'aR7'UfÖo!%_inHF 8~[.ŧ3]>f%^|s~ζkA]$ؿ-n3hr pƚ\w.][SNLYLL Tf:EWr?q CDpL*ZF}*`};r)ݡ[ )]Ȑ%2~ OEG?]>P?JN򝐹j1hp:9ph#ē0x5߷oiBD.l9X.TY0솒kgY9A GQdOMbfؗqjDalXAIq1 ) l֣g#82ZzԸO0n$M98oLÅCY=jum.rt<|v |CdECONdпvvP#B7VqDʏR)g3{,xÆӾ{+9]K꣫{7Xxδ6ӎeP\P>xu?E Z5n6Oo[V;^ҬG5ZuQW Z%I<ůQ|q@NhWMvtKa-|ggmh-<:NTȩ-PgmI fUbse[H/b34~1tR]T;naαˠFTx(m$.:lsN?Wټ?hSSK*A ,\`RI˼ ]AI`K,e7ۖXbp%!1^J2\,4TY(:A$Sޠܔsge65cK~),⌯c +'dL|}xc!~4Œeo3&ʑXe9Ң'Θu '`W2䥆?\3ԡ-|'*h9$UWy*USwV[Eڈ3zX)yQ>Mvu(>Ė9;x"J(3v(m8lή֏ G=EP8r$tlCN#SmjX .6DjDw gLg 3ܲʁ)ywrH6js/tOA)0~ߌ&[\^Kq?&^L&r|LvqGD{_`/N7NFQ84 Sj$&YLRNʎIzst):֪wԣ4XP^ X[g\1;|՝ I=@dWm% uE(#fmԢ\?y8+x'"P{^^>_g!X7wË, 6d>\y?۵71ޖI)qڳw9|w~þMd "WIT#B}DBD= rlY遻ޜK#ѝ=j3-jMeWԏRTE-rZcn1w WpIK i4:4 0+1K=n"ljH~6j&x|ZR-KuXF pr}/}3k ;&N9,/a rn4v`ud=J1>BqWh$zl[hHpR "!>gH}s?VlsE,POm+żhXb0]$nPO9! ݯ,I"h`9FYxL{BFqam޺g;۪D XфQ7ZQ>iBZʥY@f_Rj¤PZkɌ}|%w{d9)6O"OwN6{i.%a+0lwwA=4YycD5Ga;w`N D2R(.P6h)Ȣ>80ŨJtaD[j̺@77uɟ nKqһlh3h؀|hU7ߩ8Њu!xI;,fw0qO1_8fUR9 >ZBq[zz޿nvCjiG}J\b- F[:i="c:]‹{Cr H? E~`-f%}щ観$j{H;!Do#ApW=FLҹҷ1x1sb ln5az {50²|+(fjAvfk;~ ׬b/DuI靈PNp]s$X$[~KbVko/-c3%s}tuiIiR4[~N`s[FϰװGטL҇rP`LE{d٤娴m &z?m&goF%Ñϻ2\s@6iɚ˹ϝ&J7($՝g;7k]2v>ܪDv矛TŦ]=җXMSX(`aHDM_7[(\.vjF.+͟҂2"Hׂ -Uu\Bz1`+&7V6uX* Օ`z~LS0x}} ?H7]Om? f6lEZ2r)>؝n*aqA ""*tB5;%ެ3?bQU.V`/o;sg8~8 =h$Xzb02 I+"O \I^4o_mM4v#B1d܃pΡpLLcآxv뀜sg/,g-z˥q՜oNi9m<Wq #|0"f;/eDgwwD%GAz_P%*]$ȝ:5P`/hSc+G%١T-*A'BimUq:qR$ޑaBЅgU&r"cU]tn닥^bpk3nug'(H'7gMUW D(gt=&.b B&`?'fSohQûZ(4Kxux%) jzGv!4PHg3E]5 SAM}k~P<Z dsi >":l6\v5Sm{B ,\J(^>E[9O5deg}iS|/kq6nETBs3Dv}ҢϏ+X[ύe7SAVrjyp- Mg&ٜ8Р+‡ܸ8K|#mWR0E/",%wȂG[h_.5d1аpxłMG@>.[a{/IA`H!&* =ވEtp6ӤW *F.Ӄҡ_#AiXaßW{DZ{0 {#nyn[G_@A*3+&,Aܵ3 G/Gx'kRq9cDD6'v \J~욼C;3ի>'dIp?Bbuts4⨘z$XdUXs -7SѪ8b> eP)H)-B!o_zCP;z7O.Sl{ MK[1 FY<Rmg ӇjUUy@?Ca@W_ *Q^$rv= bÔ u!d~@b'WnBA1V{E [!'x{{d!JϭB]<-/:R׻.K0x+Waw\ n6GjPٍuݝ ()%};)bdt/9=.5T},0dž&wR;' _ Jh"-c{Jh|%+m%7yĎe {˘:r^{ޓP16<1Dc 1g24J_iZ71i2"{㐝0oZR Bm;999 1=R@ < ;1|Uj~|I5kk(S:Kµ8biw(n(PCr$8zYs¤i"`}p{c6Dupf'q\-KjnmsC:<)/@g> ShH w+>G/T9G?@HVpn՚: I0h eB)cҧk9i2N%QC%qS;SwI}}aŦmdLldmўz#oo1I^.`egIalXJop.AFDdma:R@j؍>C6*OE@:Nk Ju[Yt۠(?o3p"?R/Uk_7}#4Tȩ\kV=$Ҁs}M#AdK%WuO'U2} l`(_0,AIG Pw80S=K\pE3DiΌP7ZjD!gqwc*G[B~Ƀ<`Z-k G8$^K:UK'cX$Q%>~@"PXu[/ïMmЅA~ru|fv3й7d2DzqIsec0JɁALަvon3`%O) Ф"_ɀLŶ.kBT-*YK)-, :˛bо=Wעȕo<":??2kjB*I !Yӿ6hgM#hJVZ3C2m . &I'"75Du[fI~}13.<srjALg=s{^+-.=?Z%r|EckY 2wvT)}w=$8ؠ"%;z0%l9?sh; ]'Q [;gnX/F`ԃ|DM8W0€@Mdq3;AFa~\.߂k5f|9` 8lќߙk+b#b,Rέ\S;s!C Iafcezd[6Fnt')-(]-7Z'1r@͞6q> f%CiMUgVH2JT)}nS]hr)4Wir5/_ ޲zOI!IkVPS؍a~U݈#.`ຜ+*p媎-~ W?zb>4V}"F~),Os vg(> ="Wе Â(%\ Y>,e6l.NͺxVm0bxHjb\k,wRc?c- 22<$Bk%C : A{YTײ.IWCP4sfþ#ow"%v8,+VŇvx* U"˂7ح;2 u>Ln?()պ Z"M7}m |iNs4)niG틸ap,Kf Ѥ$ǩFb ^ _Pl/QY몮 s=6:S'/':#tpm6- ys|Y[t)%'lt'Wv@6 2&86썞r.!la7-zF2:mO7NjUkC,ʱ]mfKގ*T%MYH yGV=ZْB] ;[5ﭕ878n~9waJ հs`Utdܠ?Ƌ[REJDeP2[JFYf .>pwL4*7n|7u 0h DL4Q1JX;" nyOaZPtFŽ9.ִv08[?l40:6`dhe6ai}]L2uQƥ=PM65{ , la?N$Tm-d"YWCGY-D)y%p;AlGT"tnde9 /3@+\Qg_9K;/@|buKWCşqv!. mQH_Y7!ڰeJ_BÐz<:.哳5UԠAPLjM!>?}Z^YZb;5p ]dҷaq&Z3`r2'uY}q8@HBJu6.nk 7;M=5>پN Hr[Kɽƪ@R"Z척8+Bmٞnѩr nwCl@cìvfI9_9f߅퟿%|fAo~f0bENQbD0yͦI0ܻTXm\btG&YR/[i뺱{w)^vgp@騩@Mgum&W-ENR GHfX\:3m#kB5=2!NYd0ksiu,1W\0.3wnܐ*oTZP%ttZ9cy6KN[(2%!$AAx2s[U &qy'通hzJ6[c{Ƕ&mD>I@UF^dv3Қ}g%pbf _$'/ $X4O6\Ex#;A 3c5,'lD+8~n(Z>P_ȞubW,t9 iڜ=z-rk(9Q׺!p{*zc:p dlÇVY8{|444FkI+"_#Y^ճ3gQT-7ȝ2W;0ؚ+R`cb Ԛ[rQFʟ ?<â ƀhFwsjl0|cI=}&?wlMA:pĈ+Le3(vCn.YwQEToթW>vGGsHn}F2Xc=J9d/ex_ \ުDEt<<1s|zIiueϝ[`:s>\ mVNby>w5G8f>n|=T95켽42xE~;9cqX{BBDSIXӅpr諳4{a RE;l s_Đ|DNyxp}鄽s5މ$&OhQJ9R,Pn$kWjtE!y5(JCI3`Ǩhu*;-V+-8җGt@Y7xU[9;}J0æ遣I%GݎDq##8Va}K5SH+ X؛s-|D$@h*gL HHUi^Pr&:3&MkH ƣeÂs  tH2}$cj,h '1e=46>JTEH\3_'48_&qZ,hL9z):VW@6gyi=kЭW=[jyْ{OiŦҔ UO!Ydj䃬#zAx C­0뫐qDnȫ?ґ]ߨ`msACAT^!ه_{y)]9/O5F-KАظ6r  򯕎_ ICA`VN4鏍Fze b <: zKI ZG5Şk[*Y ukMobLtFOndWZsD}jPyza*MT? _/B Aa_觐Bӗ\cvk=&"s4>Equ aI~%~[ =uk5b 4MS''K1eL 4E5Rxh@,:!%FGT%d4€IdDfK1 9w]]2O4wwCU|׏_Yf):Mqx;'[dt|ޫZ8a:zy">u9e["CmNhGp7n2q+V"vz55۾P(s{W-"Hj!jG;9^L2Mçbw[BXۋXQlI\< xklPj^lq5_$oϒWMCiT!OjguvՋQ,!#flhZA xK76f*< yLwr{g"5œ陖Fe'uhإv^f :|bvn3J<[؞>s8Q!d$zE+YNl=jv䴙s&D-YG)؃Wn^)Ǟub/ӋZ+/Z#{vEK<P]!)]ʷRHh0$y>۩w˸")6 E24!Ŗ 'v;at{6CTRzBޫTq~s!Ʀ;;M O9yN -Bc"|3ӷ4klĚK{y ߹@@ ڶ&G֣L |e 5`s /E& 7`g8H =]J~, cL -?{ggmI2[ |0ѹuf|Qa@ɖbJw mu8i2d3|^QIs<&g Kضѽ_¶C+؇u<ޥ X/98CT2YVA06r&apx0j$ɰxOñjn}嘲Ü"U)|CXE>~)P#Rw"sN*:kEt xJ W210;CLj^W aZ;6U~qK `1UV1ɞ<+,~Z{oXse#<;4+cr"37h:)H!-UIA XVJks)LZ* ܃ L) 'dvhlzpq)ΫWM9&7 E_\)It4S<*iꉻ;i;_N4ǭ^ByzQ`'n.uOxyϙ YsGؘkyp\URZ<Y:ld΁#چRML\v14Zf.&oȪ72)4DHU#Ci_D,I{KscBAZ"4(p ӆ%ƥ @&˯V*cʋwGWPQh$-td |^)6>SxMqawΥ$Uڟ.iؽ>M:q,l>mfdHo'%W>ʽ-^+s=DNoby9-ZQo&N~[Vi :vSuJ;Jx`Q&KÊ{fT925vEu ÷5Aip%\h 0 xԃxL tXbDdn/ͳY5__ \a'^1ʀPmG&{jn3yeэWE(aZr⌬Jlﻱu@GH";_ Ÿ(`IbɊ1$K񶍤4a\4̆ΏI4T]_mOsZ8"w E?~q]̑ͅ~P:\fM^γd:4)Vsd{%|TJNsTvJ0"$ƚ(Wоk QU4eCZ_AAPd1.IcQ/ku~B(SVGK T;#IZ{GZF}5wY ZP|2$ޜxhFTt*&2 |nb^Ym'S j$Ȋ 5V?xXӶڔZn*k{.WySQBiIrH02|* ΄C\g8g>}dh%k}2 gdV3AfY[.C#J]qGMyeD+^[C1$Ҁ*QAݍc2Gӂ b5Ѱ?d+j4٠-a)ijj=\ ^ǵKItP߃uBDyDvSJϋЍ8Hhk-ʫۭEC&Pb " Ҫ H޵LnFXi W9,^kgfE?E[cO($pz97"oHKRzD͜PE:" ~OY,+D ơ2 vi[^Lx Ds$ $tv/ 8jL9ijH2 /2I'L>/ُ>>Y|VذN:!rNS42R1MBʇ\*8KsK懙!;~$m{/{c$b5sʇbtF^p7l ҐM۷PbuJB3F!324,ءG AE+ygWd ;=nd7wM0| hW/;,C+f̗}ͪ D- F9?ܠe BY=iBqtV{%>*·xh_Ә!,$]5Y[(SGxR*:mxEȚ$ęغ; e38}9U 42a CX/=T[ e_UӜ5XPI$Dy'">W1^qס=SAQ9Yxh0`Lyn Oǂ~6GP̲i5(Vm]?5<-8F<8VCtL__"t \U_aаy D+6m&M O%G*⃱@q9Jb߫ Ԅߒ*L{N!j`Aaz]x!tr;M $dɚ؛߻D[u&%c6X-.&DZևM`ސbdA0F'OGIB-q<8걅vEkjkE٪ܧ]x~Rv?[LFf0GG1RfQjf] h v'M(N1 ܲpe`6&+j 1 V'7D+o % B%4$9&ix18neV@HP8,.6E_{ 4Wڂ"6N2X*2%#h~J+DΚ&NGtg>"nnʗмI:(Z !iّ0)D ;Aconk59=3fQ@0xyŻ-Ud6HQqQd592=X. #佗5*qi)6dSn=-q_`A& U`u}T6> T6 kZŃgvh5wu}L zq!b[7t7Ϙ1b:_!(ɟ:M)c ;%VT9ڸYl=/RUr?ʼ\?B!ҧm`N;&;;#J¦wΙ58;=+֧wz"=@<6ҍ% \)Wl8??(@ysz۾yt!$qqw%?ᙕ.̟ o@0#I*=UHb,-b&TFq[q3^ExP{ )sN]HK>{aD# eGhq̊CII>_Tyto#n+o]-#k,!_ԩF1.qoBHղhuܧK@n'dY1)(1z;q Lkv=97. 7\Yw p 0E]\.Q˸8V=皣,]SS_6,څw;h~B)^]"+߹DVrB`C0',BJ6Y *bˤ n+!/76C'fqg-Nl>N+N峄Qq'IQYhc5o]@Cu`So-mu ,ψPbBB4)Uk&H &Jctt`1i^ ~U ^11vAj T h6vj+>j[gŀ+d\JQ@dQK U0zTW1~E}N4^'V{vo~)L;Lkk Fs `OrY3X$9 8~4ң8J+Kmh -u^mlUnK5L"X j,SAMZ7OP#v zqL,jE9daI;?12٠.N4_h)H i&3#p7BW7'YǙf3Ŋ}6ƥerςXV]-.!FbHySt?V$ /|ߎ\$fv9^0_ }{S/a} x!cntxٔS"9;϶۠57zVmRY/XRAf7Z{!UGlr˿A澫9uCo D2W&>LR GzO)ʛzzx4'%%>?࿯W`5PDpCi&tNnW5~m !u@UKK(vo0N=7x 1 kn_mH  %Jx\մ͒4 2As}UNz 4OV6^,;81-XbDxIK7!16;0u6wXy'n-Pwȭ}V a)afi,B}UaYhE=OqrS?l2ڎGzҕ.g-+(=Ecwz5{Q8>9V}؇o" PI}§8CH>KX^(J@*Ğev  I3ʁa#dq &`t2X@whv7OĩSUt_ 1zonG0o86rYi]DZ;}Y!N{53Ta;5|[#EC:(?;;S!>z:SKfQOH*N#g͈[qq[BPf >Ha,^m}Wۚ^X3[c(c:K,-@RTr=K[@V9Wi|1eVFX u|jfPefP< _[k/ԼAw74} 󇿓 EaAgq(wH ZԜIS_X\TȢ~W{Z!m9_b[jI.3Kj@;wЏ-M.wM5^"O䘎$48Շπb%G(7js㒋=8%4]{-ܛrOC+ ~{T<D2 VS/܇.AUg[6/#LjYWۻoi_J=V9flvPl%|2I5D@@4dI%ϡ,5aR_`oNb1w1֝V"U/%ٕCB? bZ DESFl rҿ#!<ÑL`[p |~M`ה`JżJ>y]ٰ*:wla4FJLG0 +7j:p%.c:ݤj~)"q]li 1rx\ JIצHf3fuO§<俫k֭X9RS+/;ίu&+/dzR5=jBD7 n-gZ7L%qۂMe6Q VlP} k^#LTLwzh%Zk<.ffZ"Un^݉D ":6eo1G@|Bwf?IyՋΗ+BjBEO'j Ƙՙ)8Ru;2Fg/|M[{SAH2fo4~`Z=:) PʽuRhzJ>gI)` *&* j[o}N4&U0~]t8}@ô&R[T <lBB7Ŵ_/L-8(ЈKHh9OgGEgJۄBxCu;m؋y%FQisݮ5*&ZK;b.z8uMhwwO]bkO3am;;Y(j4B@vw}"A.28 H0I kA|CS=`,YِBf;^-{wEbk:La%]6Eg9|Mg0s&"ځ'D7eu\\I|>P;61:_v3dv'6Hvi<5uC9'D?'dSuLd,cu[#-3c n0+yWr&׌0M }G2V/T ܘ#oT nUv+G@׭ nX<]\k4;ay"5D]/tXm:)7{V n mkģ9> vp4dtXYzkILUR%ykz9t'lDJ2sM+ Mhɋx*4M5-bT>nUxÜ,f2`- dg9؋``#Ύ]GI^D7/=c6- ٯ4KVA\4|IAjӊ 2k(}ř, 2WGeqsDoHUɫVE`?oڎ6+@G{鬏M|kMDpg \*WuXQуVl|?>cTUV,: , dYbd4;0Р]<;!Eez<8H$xJhV~c%.y3BQ}DДGu/ͻ0kbg{Ck11d\ilFAba_M^k o+F`~,~繰1|ze` =͐] omVMǺO|[9Xɉ#&yo tJ|c"bG5Cy^lvf B:묶mPlAf=xRkҔCv|VTg]OkeOQJ{+v{3@[N}]g2EAxfx$kS?~052le;Z|Xe;0*':K}uYs*>M&1DD,,`SgrGsh ?p v*{tQsZ(OBmd4#y-uO5!\=@} CZtv~x^#UDIEJ'*pݪJqunțw/} b-D6d^_\7]_ fI[9.119jΦpOupIṈr8HfªD+ Aê?nÊqTJt,,T.{9 o2>~DD@ǘΆ3^KhvuHA+@QlntKJ`]ue>JM.k靖$}z<` pss-9Z"crڥLNJ xUߋKO.72Y r2pb=q2J9pelMQ}b۰};c ' )X\J(e U'ٲaJ|t04A3";9%G6ߟ$ը+Q q!_(LێYsՏ_Ǝ?9hr .Q٥a')vN<$/~FoV㵎 R ( \|ұHeFZQ %vExR*lު|4%ERD|p..5enڊP.Yxwg5}<3ypNhHmO:fF:?mYJh9^c~ p%P LAIY+, x6FO8SUӂGB= NbZ^&lxźyIm" ؛ U )}B1~VVh$JUc"+sU=H7^Շ] IC=7Wu-@YV+~0f!PL3({' b$75d±lY{nq Z%bEԸT_squ`%w7B@>)vL VOD!: K{vϻ?/DÞ:k$d)rp pMp18QENgwUWor!{PZ;lT?gY7t0ٞT z7јuF҄o𰅲!oDTaK 6|5֮r*rOT SOSIYf TǾ1DnZM}0G '%QtMAݛ4 k7DG&NܖxE FYQ(Uȓ|nf"*Fl{FМlIO2 KTk>+c&~=Q ol1u!P+L%ݦ~2T+({D~)/ܜ58<.-&x@s,MI 3rDt0:{LGJpd4]t҃"oyc %0M̗۴ek d`*J[$F,Nz D:)_bp4{x S9ZA*euؾ;OXK^6os_*~Z[>G|P%" tq0B H%g::+?* _:] m $sm~Qqo=wl#-UsZ4=KꭄZīuϰ83]%(U 6\j10m3cbrsﯳqg#.km y ssrԼ& #PY|-?}eSw[}]Tz6PJ-0B0%zծc 9Zzݖ~:ejФ‰4Fns\}o\mOx2\I k_qE׀RQS5 s3t ,bs} dde:]B0Gqaթ;lϖΣFH%ڦLh4PJ_yDx!>){b/!Z9q{ji獹4HNWnW Yˑ@iPd(ޛä}E$HC؆qF 9>Iрmc+ $hxDǍAH8E54'vMb#49gRaFqcSPxH1F|4:fFíNJlp0,7*76rz[lwGM?o"tz;/őD){tAj X'~|*{_? pᅭ@:G=AdGdZNl^HUз:bIH1ڥ>=.KeZg3Ǚpr~YLN0>{+Ի6<>5(X~0YB}hi^34a@toeT,|[ukֿBѧ%:әT`=r[{VLC.UzQD>l 3׫Ifpⶓ Owf>Ɏ_gH\6 .[ԯ;<84 Raf.{2hl Wk%% M r=і^NmyFPSׂd>&WI@ Ql%օ>8ǴHRͮU<,g ؊GJ E՘PK,d%AF'AңW.Ro8a|VUkn9,B)]}ڵY7SzW[Q%]-qjm7 خk^ЊSON_Xn]SMeBʂ;zfyo:?ݡ/$. 0F*a((3,ØOF%(<<= XNw h6>W[F >)_f#Zwڊ@OAq7DݳCA4+%0 JÉ-sf?b1b.R҆e9YGC I8K=CX(KFZ@a`-l|7>Yp~Mrq{+=Y05P[[|y&sɧ gw6`|E!h Ox;<".+;1vfDD'4}%e)I]Jf&DgIߗqTeiBNԨ-Twi BZK~-!y7onM$CV %0}]Q^T5c҅բa,oTb!3i@Bŷn:T?`J,av+*!:"{Q;$H7Ǐ@;N|9MdX`RN@vl7Q3'.z5T楊͎)XX Rr3!rAƇ/CxH * Q-zݮ/nJBN29UTΪݣ CoLڱVzB3q@ T}6zOC%=MKnla8㑥C=\\X%.DSw=L8$E_m#- 2]@!`OYDcѵǟ,6ҬDVL(6,A9Q܇iF r^X&?P8Pŗ Bo8%"&E,^,͙ i @_kX8uz\E}>Lb(}sw"44땞w嶝i hC-J[o;}M}ujW|6xW49:YE*~yD+6^M Vf,(,!=` I5}wR'|LB{A_D JOHѐDKo5FrZ" Zu=!k1ʹ$eELH͠;(M9TA+Ղ'e)LyeeކI@89Q5K-Τ9,aL𪦱 xCh1L au9E][~Xܑ|xXO|c%c&jN{"7gEVn>ߞ2&!?0? ȞSuVF15/zcc/JA"QUB ν:p5JG#8t"49们~8S8nO{rCA 8 XoazJF@ ,) -OÚh_N΅|y-l45u, ?/*/3ϫ@|;g jS/9!4V*_{&<#m0,Crl@  nNpY ;qn +eD䤷 o߻ d.3xFui=b?Έ@Xc &S8$]IlqNo9"r7̧,iYWgPM-'k!Qp='{JZ9YErBwxzDQGV5{Ֆ}T=w3?E4hCq*&If#K^co2{B@ aE=Bs(܀7֤RG$~](V[察I#6SZGH$D]JXx1Ό'AkTX~ I܎LL) !ijn~iK!Vl ` HA X`7w\z98\9~Y,t[oRSW+DZOj*b\~D ԈR<[h9ar7RinBOAiu$0oU7YUt.ÿ1l1/|`Sy+pw@ըubrU2@K ~\jCOYD K7eS[3E/}a*!kNJgG626Hl]bt[eCT,|Sfz(X54qR63l.ѝpu)QÜO+߷#`9 zuɾE](I%~q(zgQISvpH-WdnAIut|EPHJv2ZhȄz3i@hB ͦrSQѨ>[+K@n"ԾX ֵ3Ph> O<ǓB*( Gw T>^+9dĐH%$LK$,aHL 5a Fqj+ͯJ~ }$n"e8Yro, d8X"x82Sa@;x gi9yѷx| -͵}xqZKYW7d۷j54 |WN^q+2`R@'WG,;STR(Gߐg5`spGY sπS0rٟj8.Qʹʽr*4JIxTW\Ds 2)?gpY Ued.xMZ(% Z7Btɗ-nKX!`Gگ5*5[_j53mت,U,*/*pcp"QȨ}uҸ,;! 9@ŮҌblP/-[kALf\7\@ɩenpg GtcuI# B#:zPv/K/ ozi=`4da:cU1 =QسĤ@zƃZ؞hG.扌L]u6\;ubd!ܫv7* l; @GK)&B a> ٹҲOiK$1Iڈiل{1cx=\VJMwqodb! }7b˷ Ѻ`Ī>+!@~)gZoVi81~PmscVD8x+[T 8<\-oo<A.dig,ϕA](pg@WŚ'xHzPlw2|<@\Tڶ7|ysRa5?yq¨GҤ se ; 0ROcBm ?z\§R l6J3U6)= 5DaVęiP}%Z%?oѶjI9   l#0 H'9qLZ LMQmK?8'Ip=h#>p:uϡz<2LrգR"+Ev*d$%tvR1!^.V)QBx#]652?1@t9,sZT,yӞu4fFuªRaJ;\ome|!C/dfSb*"k<  =WjmIiDT׊YӚ^9=`!)[+|@937yIgwZEz..zXdts%0aǹ`W,H ,e\p0j~M?K";fR+tdd~dŊ*$ CSDz8DTAcl9_µɺZuI}oڳqAX ŭGQ{/G"'X005 5$\qUNܘ*ሠaCPܼ&mz8 ;tA3J+Hx.~.5?lZ)/\ Ndz?L=柊Qb8-5_^^LYoӌs(Q< ѓST?*78'HRI&[˿G/S^rO8,;+4Ʊx\h=f< F$Z?UaTFMdέ!,` H=wqm[|hPq*h=58*%$o :xwJ#RU~»3[$AA=="́> 4<91p1PqɱR]Ӱ-A;3￁ t9}G;&.Yge Z?Ԑ=e%~E<Ơ])nqF,Jk{!k0\ fSmkhac weR3j ƾ߻=wÖgX6,ĹϻSp5ڛ|b>zgCDHW[PlN84zw pD~4g:^@WӃlW>vh#_F6n?GQr.qBQ-:آЫ"2xdpx}T!8LC蝒1'|9ZDw!3 ,\e0ZB<$k!ɢ7Vf]FGsHK>@~2,y) I#J ^j(jqҌRw?[xdQ8}d}:KI2ns \1HRV~DkKCBI:Vzw ux3pĜtJ ^31uLUX>S }+h1?B\[a%SY,KOՏOIݖ>wV^G@?HjXϭ4CW< ؇"_CSGR:2Uw;aKYɓ9~p7ѝi7fт`ܹ| CzqjDK$U1퍕Jޖyr|B#`dzyB2c?fTpd75_C25`%.+4J5f0EP9ތ -G4eUvaK/w%শ|&H$);啴(#ӝa>) \>4qߙ4cVsw*U9PęS<7k4"l+V}ϩ;G(>nJK%VgWk!~Z|{jyTj;15eqEF.d@N!mJ~~5On#F*^2p]͍e"I/)m-^h`Q*pf/+hS=h4dt`IKTLzDunJ!K:7J ?3[|3q}Bn_G5LnJ@|::; aԵJm21'!}S:n5F>7yH 7phŒJ Mߦ"a>i`o_ݰebm;輒%*p@MGRo(28wF!F*uDAv8wUy+1 åVmuiXQ^mRٍ~h=A5c:?˜rG9*#}WmgadZ.\՝rwLA5 2p'f@!P/Kad2KzAim-l,Vy0;TG̓1{i~ Ս7Z]?/)5H~Af˸7kn]_oWϚ$m Ihq q d$+(m1lݮ#y0Eܹlc*,sA@a],޼Ҕwk_frE,WӭPzD/`W];VѺ#YOp zt< x%MpT+TrK:Er O{3t9ejC~OXr7P'vL 4S;Xl%dŮ^:RM츲7!2akWVGCϛx߇e @( c/=7B~Y.ȃsv {eIhf@~Po"ቯZ<5|T1TT_VhaT4 LGw[#mu~5[?7$N]L$PH|VsJ ,ԁ#+M<2>!+]kYl Gd_3`gܼn7oK;Pӗv} NݚD ~GxL*3>I$Zӡ%t=4PYl?8K+xC%#D4#C'n(QGLӑdx $yQ Ĥw3s#W]' 8ζKE"-궸SйOQ1zn;x ;%6R)aph@1~ ʔ Ĝ 䆫IWxXEK؂,"TP^e"^mX(8w< TK8 .'oϾz] \1uJzJ5`PZNy%uENSsK 97~ܽV5~2e*IS7B#9,"@E$]Zt?kt-YWn)>[]=(gZ/3Tc7%ys˂irN ZLM)mi0b]#6fkgF48m)Iw -9!'&z?t'&D^%{6~=)Ņ9An->z ʪ(V7K=7"l(Z ~.pOOF^M:04d%S<@|V Yٕ!hK:sdFP:ԕ7QJTYʋ:5m@; M/,`oD⺕>ZD^ ]ݞRASUG8>twH`E8[YE|K -7Kz +Ӈ^w^X@:5Sxh/ߝQ89;zڸe7׌T}Nzſ_Ǣ8U[B5,[rL T/7fn:SwSeE`~մ3{_e5)YB@te9 fE lvyc`S<>pdoײw#3TDQ@n/j:O/j$#㍰k=s϶!̬py1ž  ,!:2$U4t(fo "LdPOgV i9G6H~ ~Ɩs Zoqfu@قJ(^ _~F6PМnh yfJ+Q>_0N}L륓_7hp]dE@T)0cFGC"2#FiUT[; s,4o,C+Twf/lďnSqe7ϧf꼰>ow ҽQԻ' tq9ab6Ukz=K.٤AtXKYi]Kj w=;jb3 ٲrE-7lIE"w=1y i9a][W63ek?Th@'d =jƍAߤSӻ2Ď5^_#`'-ąPh2`jHkFm+ e-q _O78n.8"ߪgZr%RHxL_.:+V$ّ>}A93-'|z)ПB{R?ր/ØL1_\D[z&gd޷)7_if+=C3BYUhtn29H5Dl%#h`?oi.R{Xa(K]7BFj:[1 C$*qzUAF*~ڛ!@UPn[[Ltu$Z;` Ͱnz\ʷrLx}$NȩKl'l1+}[b4VO }7$T؋!'%}'tP\t9mQAGI,6hyQ$s?ԽY' Ɖ$Z /@&nNF'&j.N;$3_Vu/ Rg0;ֈ$ 17*+4CbTfUuBks>!&=R ֘tA=_XɕMbC1ଌ'qҙp "uOɬ~@`MU GFe*ìۀ@ԨA&Ԩ%rkH3lX 1$Vi!,m8eiSYo/S 9'tJhG Hv=ȗ%hoƸ?j?N${/VwzV9읳ө)z ;@4Wlnu0#Z$ 5&EG4{WtUDQfbTBIV])W0u} nA|K-+ި*婷n %7Y)4}Q7 @H׌"ٹT?J;҉Շ[i~ h;@BW p0mL~l;06t>(HbÆ|[Bu-}xU0~08* 5w@ݗ NhNWQR N7WGbM]J̅1<{>I×0HS{?Cl+oE Ȣ|kAG;4yVW݅c(fտagA;c]^8A#T>0!!|{g5*0] B=&s] ӓdu-֔IRM[я9ãw ZߺTUm:ۣi?zf%<4, G޾$V$"ـP7D]F2]~k<:l=UlGZۢۮ(NȇH{q-L>YtvcNwEW7da~0۪ HD)OrK@U}c^fymn.i1-cg<;wrwg㣗R5PTWe빻g) 0"@WO"5)f`ӁARנD銂ͺ.J= 5;:4$_'RE0;kbs7C.lW-fsX]krtH4')ȷ`d *ʘ(̶*R$%{"=*H9? =Q{R0 07|R~Ý>YW >.SOӽm ~GE}nǖl<4w_2̻A29&MBD}J۴gYB?(K?n j6D]QFL=xBb4Ӓćߧ>ec*xw;j` sx3'h6vi**77猘#x۰+JĻĴ䮵 σ'>&–r^.oH_m|]᫖;! qt jmǢ~,ȍ%p_g |˪/Qqy "UE )K.&MzZ.ߘx辧Wɮ=Nlߢh*LY{tJBvo2CAp]dȭ[(8cԞz_{ASi d 8KRYp)EX+$\(hNg->DZ1ԧ60C⣡@Htn_s,홃ߞ}-0JM`- =&6̧D pNfY:#%ڥnht+;JSg:D<ďߕ#٬5UjeExpE0@! ip5O&W5؜:YMG*MW#%;v٫5xVżKU"x%w"㰫 N5Y(뇽Vj;u<<}l? ԳU5!\?cu&)5o'8?d''~fKi0> ǸܬXy, Ivu1DRU *BXgn:BTc6 I=XM!M!,un'XMQPӎ&-&*n;5As5xC*I_nv4hS΍HUӣ@4 cI[s+ˆJG'*-A'@Bgu%AKƐ^2 "-@0x^щ<@5ﬥ;_Ah &i%nq,m~Mi)Eäm0yS2p3aRvM) vЈXކoD }/PݕH_(>r#̟5=Jq;^4Wq^Bjɾi2['Uv'Cǻlw27.FzƓ^w`f`@kOл'cDJzLvEp?Q hؓ_&< C~фY@v_ſ*VCU`prqFQ3a@oUd(A5_yrxJ؜FDPNtO':cTepո94Bɶuw(@E@9vxL2OG^TJI .C!Ua("WPMdNH#4Zm9VO +YhjM?b"[%ߢ_dO~e{WXsPztZvR6u)_3b>4׬U @ArnBP|NXbԭfuo✥RVIc˿'[BqޗfWIs058d3G˩v%v߼ qV?FoL!Kj e_o̷X+ӹaH*r~iқP/6wQVv =6M7t~^Ƒ2kX] z|PXn*d0nU..B[o{[LK>Z AOt_0`l8d0UFr+2/~ٸ3g$pɿ̹KSOܻ5k^ ("9 *$͞O ⰙP=-mkoME tOC^}w*ʂ2lBs{񏖑{IiConwT͢v-uu1i\n #vV']gU;q" gGk")2"ӕ1i鎋iK:505+9+ ڮA d5 [W{8+%^Z,Zjƕwqcoeg` ^{AR# `{ٓR9J vQ*"XQmMȶG`KZWdiRDC3gzaNB!~<{XxIvj~=f+!` c\n-|.$x G#+o)d2}m-mmx TH4/5tbHUe0}[E_ ԡMg] t6 MI) 1{i/Ⱥy&oF4?-#ڡ(4Ŵ VnߚKܗ]+sx.ɍs&ZI?֓Ap>5WC5dC7t)Չwo<?LV p5Jɢs=Xfr?л}' ?ZDk<ϋͩ3-B(&ggqTTR^ʓ(fdjq^)D F߻eMK6koܺszyD/bQZ~X"&.Ͳ;M]I<%—v q{.gDI4"6&vc?SW;"c| # v,& / hK&ұ8XZ;o Յ.!_a+:])\z!vI/8"S܎r1u [/nx6$Yщf/]7 PHCT,^?6|Q22x9 ;dz#tݎ܅%B*3&)?|U^|ގ "D8Qbo{5 af+4.F/o@i\,I#uj v>``E}h[w MdRg;+xbՅ5_N6J&/(Չ8^9]&# AҀLOTAgN6 OA<svI9In= U%x3ߵ*pL՟}Mؼ@u *hrϐ6a8KS'/v쿼"󂄞ַ~x32?RZuE R=YBk';<杳6X=n*Nօׅ*ZŎ?_0~kN{_F"9 !TͽWM@g ?6-jl{>") Wė~ѱ]-_rxuL-{e TNq˗-1 ቚBA e.ַtQ"xɐue ĩ\eR AXVѝIqrP-܂fw߮3b[2afﮐGIfƂo>l+ƾJ YgxZkfS4M=ME[{4Ѫb5L\=;KI$7hgz8Α>9UaP-$ >"4n:m_C%. (qJ\#)do&$>i3ѯc'pHXeS%o +D.aVhthKy`2)+_ ̷͌PA ] "Q#(E|^,og5;x]!| !ew^ 2f7/}!Ι׉;ڃN8SA~m @O`9zv:yY0$ǧe ZS9#f`ˊgCkAyM"tb4+ h{̹K IT${"9uVS1bC( _OzI,7Fݶ(Ӗ@?/3,r^wke_-tjv4W:(tE}yt+BrqmۖeRmH#3,}D ġi3sy19R$p'1i2{ax,J0ﳁ+ |ܮՐ~FiH>ϴymg~e' eV1C99o PjY?'AÎqU?t1G>@ZڃK(?;dD'Jv I83vw]V4_a΂gvN!#R$UɶZ§F=U bv;Ҏ[kZo(5Ui.!~ȭm6Ma\w_O0QޕhےFs>|cC/M GNhxD" FoMwWd0(mmyZ" ^Βd{(I@Ou|;#jSm. C(E^Ac2aչfFF|ȧlAg -]hAO &['6oDX}ţEL/ 6m%L̷%H0B=$' S],:H3w\CR26"V؀d=dF:V2Uw rH #^ vQZX,{R Q<_=Ǝ۪ Y"lhՇQ(`oL h7Pr'{aG #h! /jg[V3D:!wҾ_6(8xC<'e]/[5JzθvJ >-PR>ŴUp۳sca0RpW{AiWQ3pQ u͒Q7zj{lvMɕp@ Es0JZy5FR  +XV(i{aUXD3:yQf+y׌7Kς-/R.w2 TcebcPu;ZNWO#@ ᄲG rLe9؝6”"τL&H^t7\5g%Hia"FX7|tp+NA?θ~ kr0]*Nh[_Cji"[ەs8g9;̅-EWŏ7t^dP5$,t#-2}ͻ狇NKaVh[aJ ek]RoJ6Ntbn 񐭗GJVC_W/P8-PPIf>lۣn`SGx.hT:WL;ofU*1㋛1#كZb`cD[ bN,)YnSat8ǭk99O>㝫_k#Xf۱;EQ= d .RCI.RNnVދf !o P܌4yo!JHw0LI@Q@%Nӑ/t#:~Ow=2[N`jTsIeah;3@?::xGpkzUoR^o[x|x RrI=2#)G3>K M qz-T7^`QɃL1C 6TQS2 1>&YXZ"zEMS@4h!eh‚]zI.=jUoC\";'`;.1둇F+_:^QAiZkМ9UߊugtQ:UȖdOP*W?k2E˭; o%[Z} dH.LHTQ:+O(e u2M1RQsVdz׼6T/UpsP{wIHr4Q }&e7{S{s5]Mp?\~.ԝBzFfS5vKHniLFNǁx6ٸ~\GQz^HOd'-c#ZEP(EPvo{;c׼\Ij[Vr]Gh}Ȥ}ti_H"|JU%|nV:ޠGpH*T-@d).a86,L"cZ%Q@@t_^l|Zz={R D̉qB U[&"U_&w:܂nZ )jBzKEf_E3,nF˨+÷.pzVEû1p!LAb@9HD3u.82n=KL8+UGum]I?( \x"!|PEӋH/6NH{޸[f6=@PG^"QX,6hENٜA^7m(N|czVwMS >9< V pu/UT#JјE x5v\&,oQ#8F=}vg1b%v+ڐ =6ԯc['X;Ys* [i\i֠s|Z^x!a1r),Nc|`=DlWbV?cۄweG~iͿXEnI9x[8Me`9>L9z0ΒRc?!&yX-ob^i]DBJn)g Aڲ޷!<ǐd:щq#V]IgIO1>.. Udɋg1NZl}2V2{aZڍ?A{Bq+d 6*V:Q@O)Q{B۳ [u 1+iwa?1L8gw{ꮒ/snxeM%EP.:Q\B!'mo?=֏ ľ'cHus{}]C0}w/! !ł G%(t==P9oEywPh^yܜ}(VĦA"VXմeHho6)R,T8"UNԍzQ5)/}]gZrE)c9,X"xYM55 G6/)By_@hJf'n 'g+u^sOaDX@}d-cESϜ)Ħ\ ?vGTtt= [K[^qϳ}@vN5F+2Бtʔ=")5!`Ne'QłA M[ߝ6xi[U^uN+| P{YHvC5U"U#oI԰dcß݀(V&dn7h3Ǔ'uiv ֳ<7Z~OJÐ|>U^Cʝ؂m"@tA$Qχ}= zeO3VR|k^:9`-jE>q~E/aKӤIR7gdW9hngQc,[(cY`i4%P82%|BcYV:trKzvgNIMTAc(Xh ް?QqvG_\/Lz,O>Ch>(5ُx{c%dQ4\0»Tn1.22#}'F'$NJknY;hqUR{qK@ET0,wGPqnܖ"T~vm}Z}uESYc>;/-.JϯL'):39!oY\p"G8/br{/Plg]P:jG٦;fSɗڣ6cWѿyXִ]h+eDv..uaXý RB pQlmNF%ңQ+5邀o 45l9p ޙ8!ȇ{F "{$HfI3 s*tS?0 |bEy 'zCoT`8tX/ XRڭD F<.2.{xmCQe{Ջg+`qz 4 r,RfF r48N-Cgi{yVq S-5*y0|`q *~ٴmDI>eԧ=Ob~^wbx~" vl%P5FoLO?SW0dbh= $'e;PnFj~}X*I?_& .ֵoر4?O"ԤZTd!;% f&RNߤ88JٕXΝb4!b!q4ntߵ(QHr`y9DQr/1Yv5uJ>saa 1DCĺZp"6=\ѕ vpa2τ9F`wuN0QmRAS6PA$dx66t=UZ ﹞+ ?8a5b_7̿}PRCc8A?E Js7<@e}i=Fe/ZM̲D/&4$Qb)UZwYYz'QLRs=wB:!{FV]RT>bTUm:{{#FNzk)wl4syw kmYs]6_ `1U+Y:,$ CV;ϤS/.1[ushG)|{Ug7?,Jܠe+蹡勳ĩ#",["|fQ0##iDHe,G~zEsB9Ky\Mꊧ(gvxkkTY~=_$?8Ήk/.kvwH߷$ ;g om),%CbeC,X-.CaZvlEF.-4}"͎-$uKg,۸`8 ٷk _@r8]₠QaL=w>*']ns =z7n,I,Ԧ=qS% >5?W0*ulR+&|}g>O5@DMGu9} zvvPz^r$_nA][NaM]N/coM^ hc?=`ګ1ilH,g[H]gQcz)kn밫ttf PSdR<7 ӷ> 8#W)_=_7o0*i}="S_Loiz$ `'8g6չq"@ --;_v|SJAVKD}wM] E(qɇ<գKm`M=B˜6"/xk: |e$[C#*"Lŭ&i֤NHFx l|,}8_ޗ-7`! hr,q1=2 ^ѧn#IpW8z-R,^\~)9 Oף!ِW=dl.-ٲ 46腳ԇd)T1X[;xV;"l9-]q?(Y50X=\3SV0a1ǬAmmp\zU5{lǓF)sUNGZ?Nٷ5Drbث`댫]Jm4DUJ`rWj޿5%כó+^JJa>fqGmZֈfF'fY0TuJلOm#_,uk夥FiSR>GB/rN\S('Ǻgg:]?1lqiY v TG%ꄫQN8 vODM*`JT3@^DШVna I#؞Y%L=YktPdv-$ {͋7GCa~mjfJA*Х*Q6.4JWyx0m L`s(Vvv~#⿊€a/V%"-5Ê`*iъ'|w2I7|Q-A56t3yZì3mYy)퉏oscd~eA!ueeVN+kG+>҄ƥ螓VVY*winR y(/:TY%x"T5?WFLcA(cO(r#;*_H|y] $7)uTN&@,e֛(ʣ)_F0w݃( _ߏAc Q\iPl;SN厷T ߗc'-[$|'g]@:4䥙.6N"{DLr ͷLF)^}`<;Hcr ;AnzJjy]\p Pq3axﻊşW E޸*i󨔬r[r>ISu}+\0U M̼:@؋-죇Y nMeqB,fZBVVLDn7*,L~` mBX9nNYg`'u:A|eZ*' N24 髙.nSgO/gô 1~*,3Ps`wI4?'S5:-t$~9AD"fpޔg% vGi*m 'F0j^Og(nNek Bչ9[oUfEb#%԰>^ϙ?@+3e`CgL >-ፎ'HS*z NbɒV'3Z|K)Gs+'q+ti®RG8@#T[y.B88>b!̚{w8  kc 4tP-p?qa#fH#9|d`hH ؇2$9‰ fȼLqBK& reGF <zlׇǾ u]@\r?%-I> <ི9[ qq+ŽTw Cpzc]sVC<ǵ·-H+/*i;eJJD_B]}GZ%cDTPfaw P'M`u cH)I]5+p[ BQ,ܟW= _ɋa(p5?iS.GPCؑO V a էev~l^LOܫ38W'N5M)BbvI4=b"| T&jktHmWUw겔*rVΝfr0<Qwy(?fY&Ȗyڏ=IhB!kt&2a!XR%뤷i׊(/^uf$-&ńf-Ƀ Rk&gKꟐCP_VGu %(]$v-|.w DHfU*zF;!T<C!0t` 뱷aqY/l&֥E-zLF Pw*}d0$ +KW_AG/"R:M+p> }t5˞vA?EMqWazB eCU !![Q cU!vˡbWDuF\ӢN%Z|_{ e)/Xu @0̴꧒,P B$T\i<&K@u-J6,al}j-ͨ+\Y0UeWU+m7 v_klg_v+V鑚R}R;o>'OnTH'~r I#392|P^_] RS߰7]Hޣ]ky|^oaĸm*Lhɕ:h< MWs2}\}%?.$8ܸ,?g8Sݹ2ebͬULJت'ah+׶j3/Ev<њ]8ڃ/n3#tLzS-dNS"7?HŤpb I5ȩ'``XD:e̼kg $Q:ՙQsJ$P򞫪lE 1KZqb+7 JbM`K] z[~d KB} f-aZtyR]$jF_bG:^Uu++<~E?~f靶.N}!;nDs*'5!P?Fid%%:j2ԳK q@Q d)&DP<ȟ=9 7DSU(5C3SޟjDiVZ*X\t60 J[!S4nY永^ܳ ^Ǣ9 'zS>-t|FQ3qAkUD0B*yv#Gx-ޠ FX7klƄDOH-$/(ߪOfeB"THb1N?_[D2CRYd 7k-Nfb:q&mΈ-r7?*-&ԢJ8fGm՝KpSRXG`0 IѰ|`GٚBz/7"%49K%dTC+dKlWS w1ג*ߕ!HD$;ο0{m,3 ǃ3"&w+S8O4**dPG\X΀uKGr/|*ti7 2̬h2+%kF4/,WH^싁YxB<\dWo\[CI-}l҄o mf fVX{i P9۶ʬۥ+1:1kصn356؞cڷ<"rx {O"2eDp u|*҅ Տ?O"/=Pэ޴yi-<#vK۪æ\L j"bV8bq<4-#Oj"݁ZT6vf+OCTqԗ,2PU:rOE~B!hA ~$^-[Ufp>~ XSן3G)|(NRP?$XE kDB"8hz3BI,cMނ !l% kPIxF!.!k67mp)'(|(gr Hru[&>/?@1ܽʯ)f~哃jx ^0Ƹ*86Ƿx"R ,ī$_gI=<]f4M[z9}!pBJ,l2u8]a`&fm@@eA\_`߆;Vl} `}J@~NE7FfPb 8bwXZˆQNj4Ue lm!T Q&v5e7;֩zoD^e\7̵5lӬݸ,S G_r!"\B kv 4n(H6ͮ+6l㐟Ooڦvt};LI_vlfCBq.bXښlFL oy($sm2 lƫ \~ \1A$WX[qv:Ywl^n%u[uӍm):5~}EJK;5H8)3ݑdijv7&`kpI¤,HتFr[ڧSDg->pC p|W {D )Nd!s YzM('{s(vM;vsj4߁\RU[0Ow*=$nak )Xq;*j) m8MP& 9oA}Hm/LR0A(&+`&0^Se3e~:<0p2p5q5ns`d$1EFP,D{o-֠n(ۙ)-k⬺zLl__=Z]2y9C}{n@2VXԇ]wnWey薩p$Dޔ`jQ֌Aq9ɃH rK ~KDOӑK,,V0FFO:.%bƛv1zG-jwd#πdcU%vQ\TEY8]G۩Tk={?F-H`T |@i>NXc. >Ӽ[eo_ %i@e ) dVm Zh ǭ2Eְh"<͍lPl,ci4䎊ǗrEϻ (`!/P@͡F* .,~Y񥒨g A@5t6VMA3 AZ=ϑ'YkwFuЂc IvӕQ^%N]!)rR!nH|O8!e/k.&23a'0I+t\ڿ+kE5 \{-?܂U1'K8.l:;.bbmI#>s\ejOR?<> @w'6=&-0F  cyݖ&;V8 !yN;-6b:Uնm0xD9$Q2^ Od!Iŵ"={Y>^K~}p12ab=iB&2$Ί_cء 5#AX#LT˂ğ(.zͼɓ'3R AOy3&#3=D8D! EJ)ߌTu6H>8"@s }e(oہ9XknNu`-XF3,?1Qcd7[/h͎}/M&?gkD hH:hϻ"3A3s~ހ.+k`@nm5ZU-2Z, X(~''i 4a[+Nj>\cru }VX#kW*+ly<ԛ@+ϏgLJ 쩼qry(=,7V-&| "ymO1x 9g;URVW!AzK`ck~:dߐM򮸅^H ^K(yVuvP h=M@wT8@7@FAAL_.WI<%:X>|_ɱLXg獵s{^e B{`=qt Pq>ys%<. eFQWdpl{ZMRu7 7 8 A9`n|vc8K28Q*5+zN)Sc=_jb`7±UXᥙ#ՖfjJu2Kr]+f"WT7Fͬu ~7Q}sM"_o811d_ak=¡=J &dnw!LGBp@c* !k}̜w䕐AtU XM5"e #wB 1> 6?#w"HZQ s A`R>HnI od }N㵫T s3܋`W ButoR0i\'I ά'V Ta?K󫲳MI7Ph\%҅=xtWXmQ/ޙ>lTIIAchGj<$.L J3 .j-tA]C,7挧V]IxL2%^f{TcK4LnMALI۟vv]?AvD9)W{l ; q K4\$ŶC kG޻ bnut0_џwM!~>!֦ 5 SOn|Y$ }v?r>]6eEk.jVgMWPhTSH8޺ |NLXt%ybD$h+%6ަ}ƸtO{&X? B[oL4ӵ03S(B|+uQ>j*N哻 oh,$ۋQ9Lu&4ݛZ=/#,`-+o*zX/i RFa ;YR:xCg[s+tDn d60R m@3Y+3͉{-m` znh֚ BMiJ[:=O_tjz(#;/<E'm ^aM _^:Ԃ;wV2]ĭ}O)նuZF/iH9XaФR3p&4UEPM vCGmu"^}vW0aϵL5ȑ5N:@Uq/w G~I2NJ ^%3`ԵWts?ﴮ4W@xJ9+SיуyAv;>1C&D]D<; >*(+8Lv;V _i5Ʌ<(<_ UQ iRA~qr ~$BEer%[d^6A -LIzu9,v6ݤRE$)A%ͽl$k$9'U|$L7SO zRg:Q+>acs"7s7[tm$jI9K g9h%zIe 5o?D >y[]!rH ,PE==h#M@.;iÑo*W,Tɂz4H#J8Dgt05Z[OlwY4# c3L9wfxȄeE꜡H>,>K|uX~֎+'t%"l#An8CKqekKMyVݱKTP6 MON_WM?c'{ь1P }^]pGU4Nz1=+PFxn,pse2oی}bBy?p=$:iB8:3bܿ$W5B`b:+/Nׯ+ʜ.(1z>|C۳1*Pܛy$D$_F a 'Bj2v6pP4.>- Fm]Wg|V]XڧQ/>k`ʃ:mUبlG#ߘ&//BtЭjfLku=Y K- Fx]*pdEYr8Q/|YxhvݗQJ/>.L1yq4UD8 a# !ySϟ +c' *}t_@0ǖ0S :˃҂vT#7g }WqLO*]B%+'):m~5Xads[)+˙Zf Dd*Z:KC8D𿟐(;퐠hpOOCY i߲e\} l :w&7K +<栿jKcSM<æf9I61Wnk3-yG &~xd'O(:T]p@!\Si@[LiVzt-  _Җ1Hά2le9ϵmSilXД> eR]x1O]#A!vx6 #+~C o>s. &ڦ@׷N\^hҁi}IQ<k.?!&oNUgEXqx28vuJ&, \HZ)ҾDI$׾XbG.ë<\"[3PNB?sQH)d^ VCX&aHPkX8W؂mvG#ö r#9,ji`ΣO!H _"Đ?׶4Dam'z`akV/rB[+g1y-.^z7ͬH`4D3+؇ H}7u$6{DZS 2RizM[8hINyc-k\kkH̍Ww{;Somzۧ{8n?7#"dk39Q͈(Ou" 62KYPQӉ 'qZ]i(ĔlRcmIyw̪VnFЬ3nx/ŹT"`rYI|u?.Ć7 +ϋL:QwLXK o CB;?d_bMXοȿ釜ELw:j禵[%&%|9oga$ã|J5yD|h@ ~G{eF!/KI WvR-Yvkٗ:-QgzOyMS9 K^vuCk#/:Fnbu쫩yR+x# OXI-u&lJ@LDŽ?))PagJ -?wZV<m"5rH/l8QCv6ҎŅqčlڶrpSYМD^YR RY:L':|txU-kuOmUO[3\S$+cdžJ\#,3TnU3*c@ALb:zcR[ן+_X˙=_ieΉuf߅ d(E k#SgHJ"1"\U0b@2ƃ03֛7R<,a,<;y8>A\2%cNF=ȣSePx#W8RQR6uA) 䒌v0{4+-/&.C/ht>pG ^(1̹$ٜ  :e yt`|p ANxaj(E/E ;tb\xbRd6TCӵ荂)yyo^&wR^FUef}m rj2ٙ`|tS,N=(ǡJ],\FZ3;* l:JUHZOыʺ"Q/1V[< &g\9Ug6D(S7od w%eם7gGGe>J@^H,6JZ,!-A)'$S:scCZt鈍ǼOׂ鋜WY䁯wxkO=aY8PԗҸ>D.PMw)mMO䈀zoFZZۮF bpm9!վ]pVn^= I0I}2ޕyo.JPzo'iT+hu&X 6'iCHb<9$/w&]쎶xZy'A- &e80S.p:NomF[GfZ_ ^u}Gii3[q k8&^=Hb!8ja~gu9䲉X pGҐOf'ȧ2ދڰ, K1ssV`;+lt\Y]sb8wGjY{*^mg\ԱFXEV+us#t:',wλ8en>;dTo?^VE =0Ѳ2-795i;=?FNc%5PWŦz+`;ؾ@ ;upj݊.ׅS1wdӾzJ{7"'LҥII]rEÄb{j5.yg5*ĀmAw:ss0^^F>-Y?Rm1%Gb}_O)o1rj(Ēb_f, zpˬ4<~@۫O-!1?fblOIGC^!i(4!e3YY3,|ńp hw!:=[v{4e ɑps:_RԬ@th -V,$<)J1L˅c|OlZYWjGʸbPh`ù翐$uǒ$[ &чݡQYl4[n*Cg6ZpOq%rzԝ 5Mɬ=gF?կQ4͟b.#QI!JVB`ȣq)wJaj:DlhfEX1wc$BϝJ9WhnwEĪX9tΗƯCL@|]3EEn;#!~G铜P 7?ب:~ۍ:]u$& _l&nmJ:eǕzDI4Vɔ k0Tj%U(`&E`4}QVFUD`8w^bU\oY3u: (^buیpPkk [hMH~6or&;竉lC]"EIhHK;9;ʳab|xpyGg]+}-@ueY;+ h*[o& էT̞s}N i'oc,ݶ[HKdn <mjw~JnP/---tw_U8UNq\Xg*mfA'cTs}뾮,!Z;2A#01]+w32\{g[wNb5o`Dz-s! NXAEqK&עZ~ù?g$(La!Up:3^nXR<zNc(jWr۹㼬9Jظh ƴx#PNjlGAG3>O3u5<?><]}ǾIkWp+V Բ3aEs0`XDm@ n]9!㵎"%qsg%NAI(q-{ON$xg[sL,T&ipZUMGqH.cj(G@~fMPpYdۀ|m&T!8:dYIȢonJ30^+|&VOH0S7&4;Q UYirGJrӜN6wHj=Z^椷@dWnO^}*Ȱy$jCR'KLtgjcl='r:-G%Cڭ,@tǺ^joD߮໪WÆ(Je0jlXi=S(j$#\[t,S_Z&.<rM#0.h i޴ࡸ= *Ő6ƓHqBr){=0Y㏙n/y 1fK0c A-z~JӇڎjZ*_~lB2QK5=/ 4Zj"(u8NSCN*%fS_B|g]X|$B~,jJAEqn97^F"?^$W-z98"P_&-$Ƴ!C .DuLdߗddx~:h2abfXAvR{] κW Y*x/]psfmeDoAV }gd@Q*Ms0r^/8M]?>FԶh)( j +i6^2|8tVl53J-Ϊ~%p薄R!4pF[yY؞1L]CuHJ(}7EYvfwj]tdwxot络\FT_m@wHG!N4\uA/yp%bzὢ @Uc4)L@pV?8zd<:6j0ǻ&,;e&:) SHK jє8aOG=/PI0 E“k9 6?*W,,дAU}40H9yJ.qm1pچ;XuDUvr!`qr5KUqKk,Aa| EF-+:vಅ vGBHkesֹVITVR7/ 2T'`z@M0Gی.ɸp!OAX)lnkxhd'A1?P"$ΘGf" ƫ]gt2i$ {=Etn"5AH`(mWAtqFјp?E I͐c`(3Łz?6Z| inf&ϗ5rVauwkMfI#qR,KD` pVn9P {K}O9WWc^^pGzu4RH.UD3` ·]a- \+{ Hrg&ү %fhũ҇F2P96j@Kqm.eP`p.ze;H-N\ȏ^,j} '-peܡh$(>nCr+v91 ,ˊ)kAG-"Hm LBoB ;&DcOfPQ';EҘ("g^)*/-hxΰKr n׉Ya\lXݕ+5y &? = פs^#983jn[;Ɛ)V~ xNaUڃ75֖wƃ~u(>^RG*VGggKg>&QV1 MB%piR4,6~5ʿоmu$ͻh^U9yPpN2 8Nrt^Y ;\7Jsr̉cTrHWj7g8)J_x rǡ$2M廋8=Q0;?(0#' W\2l6 #bc;W%yqu$پ愀AU{鵝7KubN` E@ʉKP9(HU8?s9Bʩм9^'|7@PgVҿt/)ř.8`uO^yJ;.Yl"D[d߯PA _"efyjcWXп hݢmojy')tޭ2sDBS3h4 o&ekWռ:1J @m pw $J턔${]>߂J&Bn^9JdM.:LSzzz;vg\jx@Ѳ>:%Y4⥶ g9.eɵ:d޹k0UBˉ_A_l'Xmit%VwhM8$-jn6u_Efr"(JCv25" 5uMNkp&=$J%L W8W7,3[0[:#l?5#Ms5P2ƮN r0:AXK @YI k|8MN()!m4Z}/`x4Qi͐_[[fdݐY&eſ Nå)!SwNl-tHf؎9fWhBFB#f/hÜ*V!Hj~E4ڷ;PTmo 5\kηlic¹WIS IfeblIZsgd j9K.9p (uD<K pU4~Qt{6 L?sݰb؟I yR?S pţb#-x_(ٶ2MӃOgjmܘl*j66JwRyف3!>\R Tɲ7|eB 5 ۢ v_v}1g0kIbݲ!o˝\V'7jfAnA͕1K7@#LhǸn9tov {f GB)YDr9(, .aCFm$pBYCUr1r@zŜMX8Ȫ+X42fHC^[qwRO11[Q 4_oEL,ϡ9L/E$tJ,gYx}CI妙ٸO*i[&& SP62EGqk6tR@cJ}_Tґ8{s-aQa@nW]or<M7 ̖DS Ԟ,Gn*`Y;3OWHMp1rR) T)<Zx3!;o?Ma_Ѿ =qknk<-R_`l4hqpmvؼ+ *Nq@`zKO,UI yV%Pک;i2sjT:>f(kM]YP'(<Hd 1N*3Nm۽kKF`yR<.fp+3l.?f~r"- <ꛙ3"+-=Te}'/k7H|)aXΥނ >&R#ecBh;T滩DZs~Kra7 NG$q_Ubd,BJo,dPw@a>bJloo/e^8x~FyKiqГ1kdd9 \N,DBz2PJ7 4 lpdCך ?յ ^x䀱D^vm (d@οi͌"t#w[0D Қ5ԗuf /|Z#h^Vy~ļ^87YNZD]֖Ak҅2ܛ o;τy:⧳V:N( 8 FYFsŏHU#ʖ߭`ƨNT'jh#Q $U6c'iaFwe '1^(G%uL O'q!\^tܼ0A6n>r G%[&i>)~r]3,<76!4z8P$JDhc9EZO3Ppbx͋~UI*A?3ÌTis5isģժ H6}u&onBf d#ළcDzV0lt8U|ڨ[Zd#TZZTe1,q` +A._&V͔Ck2Ga q>07ALsΔK웿 d2YwԀ#%;M l{iR0U8rX 6o ߭Ō&nT}.&֧V;)߆duCh:[uȊ9# u#;= 6}B.{Ox ,?|@f4{N5s9moX )KFۼ<˖DeBd ֌ސ*]i)-z2kXRۑxÆKp0p Y#%^l^[ =-_Ǧ1oh;l>3&qӼs5#C/gGrY}7%+w^,S^r.Ւ 3y|sZdzxr5!FĴ_ah6 , ֠f]z7}OXH0;H6~:$̥.V}$b~w~x2F%%-lWߍcEЈ'16(3!VJD'3ܑ~R^0AE psD$S -77BQBg aqSV.C#31R^7 ȒAd/;~A 5hX+Mv/X#.V9T8=fY֙DPJcgs'hs %.pJ&>R!)PtX_"Cu۬IP wwy]!eSȳ, n yd}֖Elput^!BȆr(=Tӣשo߿* qGkmۓڡR`dJcH~rZ:*c<߼:S|4$/e*YT3{rWcDt2^dn-j?O%}ypOoI8AS(j%LT6w3 Ái/l),E)gHw !nqwNPK̚ޝUQZAjeO)gPgԸA@It6 ?c!0֟LExs#.?VnH(e ",]1Qg۬ h[j4U2Q?#haO]fk;|5#FwWݘgm_] L!S?:wUupܗ,.I7B] _DK! b:7:[s< wVІݽbIBL{9HR=zc)})@a\_wV -\ԫQE{S B:v] 6lsI(lMXUK\ب sN[~t̰dYbI7~LnnPّ 20OS1eNIwJF_1T}I71[AGJ3]^aK{6;[ 6]^QXpҦR@!7]N g5;h>&,Xƪpظ$ 4޸V5)˜fvmu)Ԗq%;sҎ _#z)SC̓W?X1I^6 OXH&.yT$o/ڀ7˳?` jeӨ uJIFU2*{ e;kȰwx-;}XwB YnK`YG/")ldh>5̐VF5"UjVe\K*GjY <ق>޶"R\ˎ0M:TK#hP+4`H/D 2.?&6ľΏ^.ƱuN _k*eO:$68: mjvFuCm=$QAH¹_H#2]Xp2lRdfy4 gy}o LBc2RM[AiB =849'kXJP+2Q/sP5*Gn|Gm()$@UOѲ-}1&@g|Lacr%`f2 B_'ޏq#CEW52 _=3ip5􋧫Aj,n۫Yeiߦgɶ(>,*\Gѩ}>lD(DZӴSOY32a(p8E<:Pqxw)WdQG1D^DzGbxr}j]֎#Z,bNveP5 ,HjZ[Vqwx*,,g%jbwyC㲔!+v̄3n"2SIROv]{㮠qux/WPg/29-dX+Is2(3Iz%)vBYT:!>p1cOw)jȳsD$ίȄV4g]!eWʣ] ? n4+jQ'L$M9~/LM7,f^e=Jη^K>i=-/Si6\SµoMs -D9x|c(u3IcD@Vsډ3fCۣm't9W27K:{™Meڊdx}cH/4ftOݻbY6RB=Xa1O m9zJ 㞯ŭm;ڣGpWf'ŧbOS=*c-88C22πlJj(¸A G)V>VQC| *0czH {r]Ma=̅`X4u! ߦLȧ (%}[FQCwem[ Ldq\Ie[3=n, Vw%.DžS0D38}V@W [)"pzb,H o D&R*Ƽb(Fxȥ > j< _w.'hP$>pHE~`]:&1a;qM 6|8>d<ϙ+n92"BvwKs9Ѝ_|W⮼T d+Ob@o7WN#@@DŽ'^͌qF0U (r#K&9#(VP5u`pY(=ɑ~ӧ(\B7;o?;b.%ke]˼6h#̨&\nNA4& . q)a](o|pT>o!xp3/+&SNN퇜 :#QvOIY#h֮Ov;eʴRQ_Jeyk8FkY-=" Wykb\+ꃌ@qZ\8drx(qSlعP!C0q_r٢ՇU mv&3M9-K:ubɧ`SIcZݹT4΁sf>](ٲ˯' ikAa*WFW dub6e ]<-TWEpA2 ^d}' ٰBC|[2᪇W|dQJp εyi`Lt431%èH}c;TRN|6+`q8^;}NHdZ`4f P>tᘷD\lSd9X)\ڢioFhJlʂOˊ|1$;v|]:f[wF3IA*?X;VűdW*1ږG;$!]fR _證m Z?@;J6"za>?3/PqrNA8ucCb,b_}??f5EbXNmNʼ&0 l;mzwO@5xeuMn%3>"'FyV2`aS*ǩS =./S1#ZtozBdrtkmcE lu6:q-f!XY'yxAq8Q6ubLvB |NZ0 ѥฑhiXEU!W)$)9WUA v^1tݺ3رre_wT_9NCK^PJHbJqZ`&m1T>'N﩯A>;jʱj]|n[Zqc0+xߔŽ*V; .u6[BH+`痾~]dqpigz;20OD::a{E[$ȴwD;RŰ8zJKp?$rmsbI ޭ)ַa?]NQ/~ i+nP)7<f" ,D"XU9oaFD'C0EWDEdońtouj}\I 2&RiF85qr~'d!~?a-tQ,(?K7d}rb:h b貐0YE! B-V8-EױAhlQ>*!$*Qnbſo%rGR7DGJ~쉟 >  :#~N!U%TW]*0`{凨C܋WSv߬+?6;xV&hNz['Z ٍCgBӊq'7}5GB.{_p?XܜBjppyH1  "A\͝@LEK Xs2|DǡeJ`38*Ѱ!>q8O @bhuKŏ_[a\m#i8~`jjPœOwL2KUTT͸F: dv&A+ E/[c߲p +y٨XlTl_rcׯ N@yBNA_Mp獙 ["IEOC/ OF˅?캰)ZySxSp:VfF~Zj9ҡSٝu(yo]^]m#Bd#SƜ x[~օ% P\.E*ȆtOӱ*RSmB|?iJVce%f5sODI&حgNkΪX`/x$w t- DW ȏ ]WzÂ3=8ѤJ8 VBu~FiC6L plZUOVt.|V[\7du?#eԋz=b^C%OE_RF 1&7Rx,BNȇ;Qk=\Wia ( =mzd+oZ%s\ՐH Q"m-o%-{ I8\κ#Mv%od%CrFo(d֨en<42% v$&% /â fa7.5%I8˭O"w3WΘLaiXDzQZ˓y%p Ო,7Hߦz[$!jI%FQCiM6aWp\2vߟFus::y<E&kx=TNվt{Gen߅F*NS |an Ϟ!B4`u/Pv},'$G[ɻTI? tb3fS_R[1D@/_l(zVoE6qw/2#uS.@mUDx KC_?e.@u;6{`I$}GEJ6&>]ȍJSLc|WkERis-}j^FVԇvJ'1RZ_ hqϛmY}At뉢uQ !b w`嫀Y3JSC ,@he=t'[!4D0I[ag=4l^ᝌ-aE€A0>W$'ͷ 0"g wZA"1(1rVS2.FyN#L\\KnΘr̄cGgpwr*So}sRMCl sDR}ϾnC`4]a+{d, E?:F|TLDVDh%1'r mĵua}GŘͅ e lmz||QR9}`@d m{@?]0,JC]N·]c-KzU<.!hv^={H"mhAsrɿ櫁 6_/0}rUqm @ *S) b rgŒjAC/׳5tnEmC|-֑d 4V$bʼn˥{ڄogW%#P&c\%w.f]Y|C Kr !]9"FLSI g JD7wzWS7YWz9w 4o;8M* p-PX-d4P_/Z_|߅++}#Wz% c¦$[ވ*Urc="heY.1WS`y{QmBR2 &VPUݳ!75%T #:9ἂDf/A?/DHTsA5%:ch _ [r.x XYIoTr!ZTlxKp;iʁ)5@V$%)CdZ߁ϯ'[/JIi[,“lA%uKn #7kķdH3+MXx[#XyuMjԎvI3ht(kP3-sPEЇvEu,C3OlWd/F[ d7D 7W$ʟeʈOFH/' y}ϯ۪,uڎ#j F? 'qCzD4B:yێ +zC7̶6Ûl,͎s֜*Rx_dm=%Ck  $HCıQ}o$̐Vo&ilBle`Р"eGmKМ3~s4OϏuNZ0Y;&dsk+b3qm`!u) ga0W]@[[rڴf w(zYg`#p7ˍNZxDv.0b@o"7 *J՛t?7!>VlNJJz'YVx]Th|ɖEO+&Kww?3ӌLfd/|3E;323[uh਑y%u0ˋ s[P!SiII, 3{8Ǟ`_EHGdd/4M a<?!W / Ӈ.MCr+R mFfaRuڍmѾ XJ;]R5IYpӴB) jIP#~5и0.*`-=箈wȿ9zLa*:)@SOegfw+Y% y=o(͌\u ~zܛT5 و/:rc#gQjT'I?L` 9'9c`Dft+!tǭ< `">\6T2? ?bfb`^ Z쟿' hkBv5 HSbƦcIvD koV&S`$h&EZFS# #񊃸$/*#m-z i#[Y&V_J׬F:dNJo ,(BD)[o4A" Ā^R,v|dZөY$"Q-w酪;җ|1N|%`m M#X#g>t uqH\RK!sZsY\]tT5IDъ< +=|hs/а}y"y!fmeIf(bd"}B%V,6_D713D#Sebv`1Q%;/UPC7քkjRMCڵD {mҦUةuT;mUg2Q gd…`wxQE[P-*Z?[ؾl S,GDD}\^" vy@ bvt"񄌯?oKLf&U08W("|Fl|}HMǪM$&R7lO!Kx䠦 ѱK+!lڣc8&PGgU4t{nLA@R VQzK9= SWOٜ :m6 PX&y-^#IT2Sr4GZ D=g.͆҉:br*Lmd+SK\:a@K)z6{h\:?v]>ScbWɨ`ǡkKh,8,ND[)v;!}yb|Cdgd KMJSbLLN0N `G6v$- ~AJz r=y9 *nyï_p7% rK xmsPb|X[,ʸlˀ8wI=- խ)oGXbGw0MMZh áXi1/y_ dڬh 85XԽTK"?Y,ǿOB[КQZ|Fhv/26:0.`> OY8s ~*c4 r6-36{:bGcmaߔa]t}X.2,ueb3^}4GRx@'d6c-h658qtQMw/K¡ש)0 tps!Wញ@5uqbU< T"<QĒM<TU?ozj7':o=~_^a2FG;m4&v7g2/BUx8n_^cL8B`.p^;*]Mx=>v#3S? <+&I/ۂz[jE+ >Z\hПibu`}- |P]CޒRꁮ8|7#1r_KحxŮb#TS#|*>X $^*c~1EuO*ѦaT[A@~ .Ϳ8q}wϩ٤5t7ߵ|Rrw21cM&qc.(5݂B4 P8`ٌĩz?su8mu㌑OsNy^kVM%X/=g  ]wJ8{7و:(.;lχßlujO(lK)ĂOLX5ؙ)4]ę#P[1>{KGNY2`xIGX_#q6Vsd"I]1 ;Dָ fk˕ +On<}:Yчz!./hN7{<3v`;&>'($w!S@tåI:{jZWT[ߠ sEM_=5osnh*,3pı<&_1aPND$J՚q1e^D@ϝPcsV9xA ?6>)7tNME+{“AEA0H>aW-7~s">>\6Ĕ ;ϕc"^<`pXɅAO Elh?! teڗ"}cdЄkkjͦ% IeH⥚({{Y6c880[y>JVa]բݝ| CY޵ݒL[蹀j #2Ir5Wj\;AT"߆Yy)-P^MXn׽B`H&'!-?{nxN}7܃lؽD {28j?t w);+cr-(_l0_w8^ f5\ʑ H8h_XmҕBnNĂc3-inZNR9qtIYxw=֮X׋ 4McXp:UF$UiS̽6!yg2d$OqqBL 9ǟN1c4k*ƄU2 Шʹq#śՄ+[wP >AZ|7JGU"$I.I3X-7ѻ6CA]jTdU0W;z~Sͼ+ +*!SuY]$lh½pU%_I<ŏae+w$)a㥍ޟōpinDqx:m~IrMBx!ψ̘l1|G6LrYAώv] $K]婒$~% }M4<.k7p3GQ $,p)%In~5v:bzx<׍}4J`G;!aEW u )mlA"5?QqU}dj}[h:B/?Y-ݮ+w ~U`SZ]1*,"A50뻐*ևHŨ mSho+.+?lFbFgp/0Lr+O]ݰ&TCF`m$`mB =Rb屚r^mz: lt!^f//˹ ,JlK[ź57D1^;xE? |`W4]0ԫ*&FO}̜^Lz597;vcKڏ4wTUOae\տsng0B9Ĭ* `'g! ԈUUWh!Ͽ*L1V@*v0ྡ:)#AU{{F{At$Z; JJVP6Qn\H&pB;i<|}ƍpZZ ;lx'_:o7Pc}z\HnҷvT9RD8ٙ,SKBޥ:BnKr276!,#sMqor/yOck 'OoA7 ,(Cg579Jc֡Aʑ,;XTZ{ <`חwqXZBO X((e7U:F2Xj~1;&c0?W؜J/4ΕR {C16;Y T[pjLsm`Yl~&íFLEWCx$҈˕3_9F]CUF0eOZYb ?ޭK= ~Ȍ,kL{0.4Y}C|dwFZ{{+ ;tKX5l꽀,:!PQny8BBn/8Y˺4sOX_,[Lr;1~Xtם7ܷwڹJ#4!榌{98B̫B63>uGivMXV>/྽%lZVA/_-WgBzb,Лhxa矉'z6B.;)XEf}t A7D=iY,Iw z|I8`.iLONt%r^GgpV{f{ȬG]m SӸF HRfM1--q)Vy1X #,C%$NA@v8 J^KM9?x< Zӷn\TTЂ6?dRMl.:}ڗ2PFkd#\50m-9 B(;+7o9vݰ'(Ҭ 潍5;E=Nfnr8R+eIiML"@@1쨇/ ݏ/yRg|j/ ,? ~||W;O@QqFs?N'JbseRP\Ӽquz:ܾa0Xza d۲:]6tgn^jn[EUqO$+@ĉZu7FO&<x֏CW (Rvn#4SWS5Z-LR6#Y[(DB9H*+}NIM9|qZq5H:{vpyMcp&]=dR{`:@ڗUSed֟y-9 `LF'%ghl KTث24DЩeXsY8w`Knĩ`zmm2wK9&? %)Wqog"J2>M%\W 0c;2GUƾ?F_u܁DDA\u:W<=51ϲC|B+L Jrl}>7".I+:PB1T7 熸},5Yc?8LĩΏ}nC?{VI凅$LD7(U(4.qӯ#yWH4jx NuJɐܷ#RǷ-WAc?Ʋua}%]A'@X'J<:ڊ-SW~N$ *k/b (yٺK)2%ė[ЁBxiG#~rK•pn˚L~oX_{V礛´LJG@U9S6'A0n6gB:Ы56@py8LrqN.PW- *䎉TwA~x(BR:v%B\ǔ! 7GRg;*%wB];(%F^!&#ϲwW=٢ KmIJw[(h:YB>Zӊ.=у7LK 5Q;Xa=L8 уOúG;^G w+p2[Bwc92!𓲏v+@ ) ޑ@2&m۰zb>Z8c|(H'I=wa&.RkXvjRP1!&]}«{FZM^\c,'A]$ {*jiKhu I\]C|$v=>ma=y>J9:Όۨx;"5e.ۤVZiܧ(=WXiޟpT^jc(^K L>x8\q[b-u=h,]$^'@\ `cޱN}R-؊ticT=:ښn2r_^rXo[o3ି~9,q\cksԟwi=3[FkD icES=)5 l{Z:h: 1SvLHOZ$MhΈF8!ZMPVGҳw޸kju!;~Hi\Ss[N@X<;Wz?ÙEЇ:{%dQ })AwkUbK2_G $ Fbg~2)gard.[$k>s0Un Y΋<;S ֵ4x=Qb/CeVSFȨn&GÀ hmjSe* u <ǕHwdKТ;OL ^bDq.'U n0^J9ym0AJZW|'zWVCB'yTi7pȌk2%_aE.G.Rr^tVS'Ƚ'?H:h蝁-b~=ryo^H!Fbz<k&n#:e P%LfQ2(d;9p_6Q?؝{3PwJ:g3C٤))`ܴ~Spc8a9Bپп?2#򄣥^&O]-ϚY(uU|[2=- .S"5a&=(X? θ.CUlI +XjWEs_K7SPEԜ6[*o9=^(?MOu[rj*K`1Q(#5u4*L~WDYˁwD 2d UdnlgS~){+{x1&d!dz˲ipcZ4 D|Lhhr't)HvMSSkn2\>hd8 (D!:S{e01_TՕ/^2L ]jNV<0gA]X$K>7bᲁRћ 2' d6VAr? 29z;ˈ[Wٙ+iDt>{I%[pu\ 1^{Gv/шӟY=x 3׏"WI48L󷇝mhgƟ)JіȫhHPrVkM9c\XRaCv`qMɖI@O.:͐bJ!N\?[JC# ̴Jx'}Y NGӨSjF!I(򆅩X;6.#G8,d N kdW4mxg㌋v*XčċVǮh%Nͳ)Jm3R(`sFQQ+2FkJ?ʱMcGDں֐%An/ŃAΞ.J r]@i|%3zL[8.|q_;[1Mt1 MqxC?֊ѦLQoAwLs4>b 3Vnv#Ђ@(ޡ zDt%Ht':g|w/+2DVw`כb쵡xxHdhlr5lqEYo{ {;?MelalE %[O]Man' G8^ތyf>`iɛ:P׽b0db(٘@C}MeC&\F-ڪ.7gc櫨CrI.U]4w ^ݤuv[Y*V3Ұ@jaOu6GD*|ʮ~/# *MJt8Wi$/bm p BЊv䦫Lk١t5łWGJmY& xEvb9V߳m[fF7Q;z݊]a9IX`%%r~ڜE@b(ID<8Ƞ+S  3FۭWZIف6tmԗvGepV-jYP}#U|y$w}glvqIҿ|-%ʉë'5yAJ7![ξ zv(v gfoȶaOKX;(6/1 N}f=&Fc(uҴiw[+ 'Su  pP M BF\bY@9]h? ŝޒ>'AJ?]_SsV2{ Fd@)c/X`VkւZZF*·_FKv!Ñ[6"jn8Z@A[߄lПvHݭ $%I.&9G9#/e?"Ҙp+ <۸wa7?@Ix#GcOJq^zcᰟAbI t0%Ch㬱$mQu tvR59Vʤ_?Ɲ)tfңvj]4>0Ǫ} f(s|K'IR *Prtvڪ2K|FEHxo <1HaS9"+ zծé B<aFF</5q)|ap3 o&@'GCY2Obh ߂ I5+U~y ?ɓcŽȶƗ1U1A4ZM\q734Jԅ.P#1N AEDlW]Qm RC&N[Vf0.Wt.p&+TEٍíq3 <{ V{ 17xA1`Jb9&`h:쑧OdzQH98kTۺȓ{n,7u/^,B%05VCs'? `*_-S6¤/ETÍ86qGGB^6,ae`PT]DzQ]e^up }Y*Nt,ח_}&͜wexMk/us`~m>;Fäq*_ uS%|\Ȁ sH—؜A@)MҘ`uR. .Y'(m{ jRj cZG u@܅߃\~C~nc CD.RX2T|]=1=+@CKȖn*AO/w'Ċzex7r9"&0pqtݩO=Oz~Ur(4!pԾs_ 珚KJQɐpѻGPˤdIrbt_ Ă\򒬼1k_rUiHѥ{>9-{t5X[ F4(\wLp*Sg@$xf z>Q%xkv_KОmctvjV=M [P C4Us A}KXUos:7UN%[,VM酨r$xYq%^Ɇ)ͤd{YϒXxv=_?Hy={;L,Oq:P&W-N_ X zw`pV>0 -un⃀tUkyI`Xa>cLM7};V9Z ɩ`Elj(' 6}zLy>1$.cjdqήg5i'QtѾWzHx2N.%̬|+JK¼=] -ōCKqvcEѸִ-]X&-C8$*ML(XɣPRy,'yD(Au?̵R1ѨdAgP=}!= jۜ+{Y R]4d-F@,Կ=?V%Lk:8zsj}W{.<Ϊ^yo6i]㱇0^aǣ@Eo!P5]2wZXYTa̾z;~r` ץ[akM@UOFi:ur 0wI0g] 3[&iĀ?y'xx$s±dv)5W@z Kq^ؙlpq`| O$4†04~3:9:8قѲ5s¹-Akj!79# n֚K[5LܔaZI=BR=#-utL#Hk2¨Jz}jy5xN%-Yŗ~2{W>3nF9@Cc W!,`1ƈ0װާDknݗPzSQK4{o"uK3(C\!8/NY OT/Jm3\uU oJ9&ݟd.2Mxbm3EnHI'c_q}ۧZiyx+yh (-d"#'nzB+ A $aUOd_?oq `F /<T˱sUɹM줢, mbB.#aмuP_^g9Pr܆C6<3F #@6rL`rt^'r{leB G ,➬4%^ mZ/%/:+~/Q\yh{ 0X6W 2?ſ6?QAFkk*rO!ec/Hoˉ| G[ _KqW&8g&XZcHoЃtIԵ42~0=G7* ̟ٽwK$=ab)%)^Ӏr_8j-@»\qUbѨQ)NJ3s?5^z?@UoluEP>@#i˵8{Y5+SO)a #~L̲8YzNv8b 4N4Ui5w͍U-eDRnG)LgxÓ 2Aݵ|psMKty *1!@r)S9[ 4_R=UeRdGXI`&jЕۡɒ:vnW352jO0~sO'/mȫ}tPLD=8 K.Iw 7 %lVCQ&`\m" ㆣSj d6O<% ֊3wUVb0`oԐP+?M&ޓa:`ɽALnwCӚ)Xɺ5枛5`RByQ՗,olDkr%{ ̲R?b/ɳ!.ngQB5t8q va1W2ۅ+McEW՝Qpx/ǧ[[Zс[zi r!' N Eh`*{ڛ݌wV=2o?ʻ#/! `#".&LZ,n̪zxT^%A矷"䬭ú+Ss$kLP:1tDJMhͮFDQ$XqU(OX K$YD _X;_`kn_l(|'Q]vw]TUY߅sX4k:ONwk^ MXX~6_U{~ ZG!.o2a@(%XE6k3RIjjGL1J5#d2BǙ^b6fUXp{p>MJO'j ԷYC :YL}'@'9[}^R N>8 :8y\;GYXeV߾;M2ReN!+eLJb\\+O[`5[0͐3Qx̘TtTY0mkBD7ws=aKzO~p o/OԒ'ޙRPe@_Ik#!][|; saCKQ^Wdj H2{aD#g٨@%mYS(&&5,jET%V_F>gB0RUkQ-_ƭ2pSeh˿8SMXhv_3zoI4@BE>?ϭ"Z^b/RIm ogs׍F_ZDŽT g-fB4N'rk"dAlUR̛lN>+f[bnKȥzQl_XYڷtnY<>qmu_'R=@woCHĵ)A!vhj8/+X- N׏_x1u6[B.L!fADj;@d\==Li惢/?K^Z#UCQ7GwN`EY^>e].\, 5#bto%4]of\6?O,䜳.X2M>C{rܩ5`sdK{A6ąq0!7HByVO?N+RU5@QZ $'ᠡ;oǏ_ڳ 9*p΂AⷜNoTSpRs_Dˇp!B廄fip[K0;?k;BY{XBޱ]:wz|C"rXfHXS3VL43(c_pYXG@q&{nqt_8=ˆe8$[Jr${p&HcRoWӿ{G1ꊦXf%Ȩ;Jqlv JrygVxO[D]dAIhO;E! >)-\)VNbwl}Gתg}+ ^_u !_HٚG;3xRsyK2nV5'!@~%HsT➺d7717*?`ѱ.漞{.Rt {KT s(zbbM54Tw  xN;+\A4sK}_PxJHs,OL+q̎+H_9\Uh s𥣀rHuʱ-oPX* uTi)\:+μN!D&/\p4{e:UV9721QeՄ5G ,ig_#Vr.*+}{!B^ `VOn_"NbxDf(K}˱7"J̒eh)I X^ v&-Wz_Ϛ 9ݰM%1P* ]*a2Nqq 3^Ub`i q~`ZlrOw E9Uϳ /;h mȈƣ(/1*%JqEl<,w;y Z|g y-APnf"tPnQPDn^8tR hb޳F 'HUsK2 ;I!qhDxwaGrR_jQ{5>k[޵CDazW]haLBeT:(NZ`͙$OX'_OʜSt9Ǯx83M{*6Ov1p93SyoϳBE6eG8ћ T *~gP$^i)F bh|l D6m1~}XeYOaʺ}0Y ;n~s*]GAFEM"ت0&i&Rb~$1,ȁ%Y)( >Vu\<=N,Z}GyWUsB̖ ܪn6oL* lk45Q]l7ŗ.>FJݖ[+ nhq$O>81LI}#/= ܱdغG=/m9Ogripаf[/>g;a콗2]udåJ0h|J:ƙoBJ(Y^1?Ȥ} z.3{45?DiuU,?{}߯`|ōX0QvMoDӓiFo^_kѯH 5/nN5S+ml _ХDi@(*͹KE {U<2 3GGY]%DoД>dG^\}6ڼϽ8gXj f-=M|8epsFWPٲ%7G wDT:Ťh{P,chBtʞſ* 0y(L>%IpTaY.F 87lW?zigdp2_-qqqe0k6F|A+i9p22ȿ*ʮiju"/j}bN cĻ0cKk@]l4eu3ewk 'iIi`{mLGlR-:z,Oбs0 jzӨX#0*q9v 5xgjUKG%%ſ@!0u/m '~U8Qf"J#*zh3ՙ`=jM;X:tr^Gh`#4SpJC:,'U+S6}ދXej?GԺv[,p{݆PbvpK'T_Na7X7+SBW@vķKV=J.$#&P| #"z-l oBՏ>GV>a JagcS=5A`Af)E>  YFg; yqgVABs@释 4Md$tݗ f"{->z8Mq^Lx$ xE)ک ⬍UBvgqÆ%"mj=BU9'` hݤ,M~K {`(nr"|ʂHm%Rߧ}"hOo0g xGT3R-wZB9 \F0R3Jf Q_$_rd~zg̒ػ=u狺ٰj2/Yk%a]ŧs~:]X"l{!_1Kfĥ}= S-{*a P=CR)ai¨oK}8uh]ۡ 55ne-@ɦ|+朢lseae.,@|adTeP஭#2H;(@-1ߌ^ޕ_=9j-$ =WN0DT7 q [+R\9 ؝Sl}2۟s4<2wY,_Ǔ|H-vv1X #U؄e(_ Bj7 NLHeH`dJҩho? X鵅%Gn'Dv%V3a5vG1Y{+ @^Kt% /eyBS 2;6qH+bC8yAκc!)Vsfȸ-wc*1) ٥G3ċZ!KYPiv_W!;';`ɢm0#5J[cc%}uAFRQ]\ Ӿ3AU: JMA|&:1uMU)^'ÿ0:TqH ~"~. A(,= ښ Fo9pyApq7'[+ `sySGяclćUa"^c͌:& ^B7y(K&%"4\gB oƁ]Se]_mn,)r[*:KMZx%gJj+v爯'%H*F6$gU(_L K&Se;gN'R@ O\B$d|T[|GIqQAP^~8JYLڊmDhSh\sؼZ1tEz&TaŖ~.rgfȔA1p}j4Й~%R};t,Rqq͵\k*|C$BKYilr9FK;˘tߐhdG0mL1µVf(ٯ9}!wc/klu|,La)-VJvH=dBv3n+mU? =10" phlК #4(vt%Ms©{僧7}䏳۹YM׏_Ί7pVbj ìFCE/ʏ@yi_-asىBCΰ}d'#Km*U9W[EEhOm-#U~-y0Tr;)}Z(K4UXryu\[W#4U.r| OGa?y - 8$BعlL̏-HWٲhJx7 G7aek#a>aɦEFqks?@&?&|TijH q7{vʪy z {O2]^)z}x [ <>`?_[l'4X:>SG!-XI?bZ Qٵg $S=eu ]rl9(`H 4nn /8?nCfN+!EF4QT IȀto~#Ph 5##R% AJQGq"&9 Tƶyo#YBW_& r/4ž'hlV6忪Vnҵn"ݟ]$n~c]ƣ"MN=@~1g.3@,XN`3u h< };wBN̂r_ka`u 4 VFm ץ9fH/ )4jʿո! o"iWmgNOibיJ4){g~g"wbŒdV6D;im馸d T"*H^$)'hƁ|]LY͚B#պ2m +!z<65]VѢue`sIr#-y׵ɡhLH&klZܾD֛8UXfaڠ!-"xo;\i[kb ήpmyU> qae7Jl^dV˓Czۃݘz>93}fPӅReʹ]т H IfڗQA_9x9hvo] M,XRXPvs߉Р_aVB:_`LĸE#ݰy Bpd|٤:{o:31Ny$D `Q+2ݭWZ|= S. ոMKV~&8 Z 6 3FXߔMCʦ+`'Nc!ea8xkcW.u,d##yARe-h1 c `@{X#7 \~<)g3v`>♼subڵ#O%cdв{m_;ȈQ21V`++L?$ A:>?`"+:ގvܑ;&[sŶkԧZIςgsOgd+/= yPX3)Z⽏GZ*&i0ORkA&HgO喅 `Uޮ g ƵTV(( Є8JLm=M*eGzBB9Z'-2&BJV蹐Ղ 3Fł"|?Ml;~LJR@a[̺\a2 Oc ^s33 S›Ao-0};'н^"rp$MYrt2GcZƟ՜g \˂+f}t7=m~/(/Xtd=H*9Qcب>: bcpn'Rrza[H6k"!ҳ1,I_T:z$MSJD_T +6M"M 0K"2HQK3'yMJzg~5rqۖfJz5 ȋoD)lռ뀭alV`ᔍI=satKs^!c+]WMh8:YM bp:X\_9Ŷ0q?r[0~Nu}1x44쐒y(hwT޺A_Nk)cta&e¹wEs3a!@-ˎў3\ %ƆsOF&}wBu-)ٿ3cHAB! I:w+V]q+nm~^^8Y+Fʊn3UP 4!uY !V䍁ВzAyU}b00H}}p` ;`M{0ɜ5?ћ?o)9,n GO!F2H0 +mĴXcH,A&*-_r:,'ƥxm]a kL F}ꌊs$=xF]8ƂFR_ 07hHoCI9۟HVtpSJ3k*T]?uREWa:T>˼J ^`A_kMĮ!Wl31߯V6]T>Yxp~J{7Á? 8ggɡKfFiu5cKK:FO=Aip x2zjIϯH8] =;jNƵ52i鈺qdV| &]Af9 HN=]QGrR v`7cgRHs3k?{QZuaJ ׏ީfրW\M\ƹjZ3 ԬѦh} C<-㊻a]5^xxE7p0:ɁJ_YK)SO}|Ci@P](wFg|m$\` :R}/5QyJʻaztl•\vkD"U}|z[e.\gv}ryF IdF!ħPvC7]0Los{\D tM_n1*{5?B<+a+|M6T_k摂@H?̊-92CwB 9f$}yӨV-s+X+F$ gCHE-(U4լhT=&/ї;翠?KvGIOHᑪ?&.*;ٞJVAAUHzY|hJx"h#9Pp1L$ϒϡ`xT-Ƿ)$2oTM|llhh܋8l$ePk,\d>b.R.3W TylcqY)ii u]4ؑ}03PFD:*EF}~nne{*91!`!_I$EՖEdtub;9P=Rig~BE9_$h-]'y\uM B4+:^ S#&^҉ {'T)iWO,il!n(gueϏPj\==UcgʙPMbE0~Hk,qHk-i\-R t9Uܬ(.0)I^u + "Sq۫Ybּ}m:IBDWkR,3xDYh.ŋ% Z'bQy>OҶ`x|V$:WiAS؁etMQF:Uɰ,!#I: kMrkF xgS./7q$jp2BsI0z[oD z~=Žk@LDpz>~2O5Vgt +qԒA-gSc-7–DkSFv%meޭƀ%׀哼a]YKL#L%t,L[BUS6r 6" 6K~zӶ~aʂIyf:\XypNM^~Z{ɋ7r3M +! ;/g5ޱհ=!Ac&SO|qZɋ>T\9 NZaOUkTqIa6[JO苦:?!qab+ci45v]Hշl-LIy|C^r7qJLI Er[ME8Ä}DqZσ@=]]??Q8fw J'ٿw>G>0X.(M; +g`l`=amTI@(.mnzIg?;o@gw^3>i#?&^(qbc< [\WzBwAp{J)} g0; [!ikyaB2Vb$$,8&7C, 4ћgʶi_xR:Q7.Oo34jLjsB!eĤgFt6%C/IW%if48w4? c BSwps*7M4*Z+1%[R^'?8`tbُoCgs}$O 1mI0E:?*"-$1_pu:Ͳcu7$K #"/ϖ'2ʡ2 k}aa/u h񯦐*m![=ZHh]~KEF\L`E|߁g+3tfꯂ[?|G'^d?`q0^|H;k@?s=즷c}JBF[xJ .'韧Yd&2U<-{5ш$z5Ya/6`NwʹNjJ\س[nKb Hraau5NGsҵ|ӥA~DChʰ 2=lM30Jk@r蝛 -T.^E"_5 N֓*+Ig`ZmlGX|s ,`ӭwO:BQRf+(ybLH~$ĸ h+ϼ4:AG.He X28AސGl. NVTˮ1=|ſUpڅM=)z n:Q}fX p6KVa9nZd^!ar!PF$JiwX?w^݆{x O!1a!m ;7R-'iA(x_3ak-l S8? U#TTàtx]ԣ1~LkM|1|f2 9 ۷Omw>o#9J RA&{\1<;'dnG멁Ȥ 5r2ӟ@1ZSv4 b9Bol|Mm8˯k X ,;gUǐ_V>IG%~HstOEq҇,DmIp{DJcF9"D˝Ǩ)$'2Eap5fnv%^K/][_br>2TB/@~1RC=m6BPzׂw%|Rhv0KK1 !:u9m#M%SNXIG -@.#|o"'1B"m&UH@QPTp@w?9*u@fURtOb A2bY!gv.]T0W**ɇEѪ ܻ^h.$S!OU5.GP/%2͙Z! pnOm5 *:4G%\oD{yڧD羇Krp2ZT\3B@x9*qcc>L434Snf'&R1]$nz;9Q˲1L[r9,Ģ˹>bՏ,9۰+?!F!}V!uitz /'nc !)oY.97AuFp]NR5>VY|eЉ ^%D@žp9ix8 Y9=iB&(k"H+ږaa?] |I!^00 >w tM ‚V?` É2H pP_roB%o7J;$72NjR]v2}{Q4V|[<2MPY,nu!0Ofi\ﶥ{! 7/T5oc.IFw1T?p@A%8{ඌo]Bݧ=~6z6?6yCOܸ|bLO-g&Ƌ%i<\QVO~ޞ/p`CwqW8$G (IAdE-1I-8ĠP'iȇkE]_l!+IWW 2oÒߋl:ޥn{]$^("?{b)]e`W=ර-pYd;Z}ePw2%kohQ5imP.; gqݹǾݑ^8m8z?PE_[ZtBm3.ǖ=I5<"G6əoUtJmI靱յZP74q4V"{^6qqfn9Ǩk tBT9|ނ%ӕ8O?߀y7wc<*(ڝ}=0cl05Ch^?|>>x~Z7W)`N\w}*b҉I,P2&g+`Ёb59NT!S뚠*<\-aȁ+w5k4y<_So$EW]H]u߇4A z7%ˍ!?̬>:a_B7U9mHpEzD b\bIUA$04vcW:>f -Q.]Y"odw̻$/ [v Q-@$ms-W+rضK sAmGכ&z&2$U9"g@)'gdxo#qao|; y 9?uv^5 @f c5˧.$:E魯cMu+0h\L3<ݛǦo$R:{zl(n'-_ JB.XѩԤh-ЭTy'7rQKd[l^+CnIOI#+m$)AD>wmE r%v^0rK0EmʖfEi[KHb$`_C#_dmG[]~f7xMZ*kv؏G U<'!)>I4i+2tS%AۣHhmzXve QxyߝG6`Gϼm ,%CPbiT硥U!!"Fyd#t'˨L}T5 w8MIHOY;P*zFǝwqFC^5qtj:bcWvp0L"8EQ!6Η(moF2$)WzhL uJjc\ t4nu4ÉRcJ=r3~䃐_zjdÚG4nHʭ͚>9D1%lLsL =\Ę7%c?p'h@[5?40X -a4="g$Ef?NNuۗz% DF:dL<ÜUBG*^d*h1nFt:h;ΔTSYUȽVx$0JO(IE*_y1<’1ͪTN2:@8ʐ\HU xi^3Ƽ ػɫGw"ŏ# GDxJJ]̳}irrmLD*%=MVO}} B8Ege@#×sGJK&'g˓Ef {YOPd,H~9WsBНUi,8$zJTC"!HԷnDZKү'0x߃[?*Z0A&d^[PDB[[(*)iMnՍgC.}&Ĩ[1B ǶkB>|^K|P!s@#\HR|d~Q@Mi].?6# KMRV]z|b)E'dlu#C])(2>N\NFڃRMcMr{e:ā9tn%n&7:1Bߧ0L)^ĥTbuǹ{AKfy,~bҴ-., ]FEth9v\P3qج3haY2ՠ4'b&ⷳ-MJ/ `>>B2vi(9n?ゐӢ64>RI3NUIНNl_eop2ndZ(> !Z'I)\.E.(ɉ=c=>R_lغ!CGN* Nt.W*;FNfI~;[e]/MPmjz_?Po9 !<%#ڷC渫5V-`prɘ)L>ꎍj[mӦ~Qgy!u+Rr[#l"Ge\ȿqڂU@Az]E12_U_2ɹ_Ȭ>KgM'9Љi6طGj!yFy\DGCߕ55VҶB2 LfTBN>ǣaD6LmCm2J QWMqXcA8n$Z!_xȡJP9ZڊM"̲Ԟ2˟us_&9XᙣFi{%;C chcˣ._F5g*+*ptZGHJ)p L*M%׶ M֕ҝw%M:"Rї#Ϋn*« k@'Rl@K+2ynU(L,wYfIi Y5oq/6xj'R?W^ X# ZM1ޘ-Gp9"ż]pmA_:תS>nG(A\ |\ >*B"CV*+fS]|6 pk2LO67--]҇A d8ˊ#mN$KfReLEӱdoA}kH-Q-^%[ ,Z}eUܳ9⛉;7bnۀ3:+ {L%M2MK~P⑼k4xS&,6dc`A /;\Ւ(HA v^ uuqy55A0+cNQ\{`cm3"ָZؚt BvfCz#:x[eQ:2#̓Z/"ʱVJsE>P+;M]'뤸eoRKJ/V]Ɉ X-u<;aO@Fa\4_ :5\״u9Uի:cpkRqm9řC0 iUIn4gP̻bA>-5F_.f@RYA5cA\@5u )jN?V3nR*8`]E`m^& ."puPk߫g@`U<0SeO9G6k$ʧjvF4߿jurǝB5ioے=n_A.~^\A/J\Mr䴜 *m/1" ^tgyčL6 FЛ5<⫽fGv秲NzW>&0PtLt;AsE¦3k3Nևf2gz4ƌ|c&/8`-``:ă"u-lm7$`qdBd`ΈdNpϙ&(HsnO"e_l);F};=787?cط3I@q1L4HJppnZ\sNVn^P! ;z*/UeA sG ч/^r)28^Lp/=)ɚ A@-?T7xb1>l 5p*My J f>NIem<395;^\xyeOTOyQ+٘{/~ 떜yGPot~m?7ǫimC&U\?yo$x'XpLˣ/g=z0)#;l4`HhН76q%"iRs?0q"5le7t>kA֩zP&([&/ <"0'jd[{sѧ1q0%5 !FB`[R7|ksGf4 q<2(~֎AE] ؗͮSSS)x Y ڸ!sEgY:+NDHh®F/*&yG,7ޗ{c$8{MG,lpi͚p:)_Ou ;-hmya$(󺲁U+=0-sBa(W/GxGmeſ45z/m3wכIx=ݺg#>2V!o՞0!hP^N$oX|qb09l+7Ϳtm uQ*Dzj݆ I:-LR~Bl_(& [xF zY\㟠^3&] 3\wI}lbMqWH{- \6'wn<[nrй(dӿ֮}!YըX,Kmi%7Smn~kAh)\:ۯh0E$45gԨܣfS3_\&\`沮¸\jDyPǢFLYʅG^ksxld(Zɂ!b[) ?XÞ+6ΣPŋ18N}ER D)[oo$Ŭ6|J-i *9"RCxK!'cIKmc<-̎_5=K|&6<~g/F@6%Q}a)x0Us;E$S23-ѱ1j(]e)g!p?eFbgN?Wfn$nlX5LAJ8,hMbAhobDV!"яKm1Ɔ+XѲDRyڄ[J&Q5~DkQr?@a?]xrPÿ ԲV7eoѫ:'P(@' GM,'}Q|+ͻ d2ݖ4܀\_F[=_~U ! ʮ;a%f=GGoƛE`Vꢰ@+Eht_&hXr'6bWQÇncyxD+]9j^,DAOVVgL)j}2+_OJl+ܫ zeQ\"ҥPMt]n)QW?h<UշR 9 s1[aB.%c"MSQönc [ٚY> L wqS1|ٵܤI,Ɩ^N"V )&8yL.~D Uh  ˻5x;bR%F#w6>Ԉd"|G"7nqԀXya{H0*闌+ì(a&Y>kGTȵB9RhmF,Jy8/dSFR! vzosQAyVB?eFcۜDEjDs'& }|MKRI`ɽ}gTcvO? #jgO,54'*;z3K-p6&agL6'5T1PgB*b:az 67AN÷K|^0m\2/@CmjBBXxKkjL(2!Lr/:v`۔ş՟7W(0)⛧AKuQ "DhHrN7+ۗ?X`g  jQG3[sf{'Aߚ*2AJ>sʨ` unkMh>qNL1Swc<7_)8~ʪo{OG-tY; R&+4BL>a2!ݵPB3ĂTA G9h tn<,q$D!P?$G ;)˽đ'#pLaJɊ=ZaCJ8w?GRq)(V5@xnM-ŝ1'^\?Ӝ\B֔s5v v+ᖳUP8s8 8%7lJ0* 6`5A U%d֔\ۺ$ 8=!E.4exe 0 k1e6,;L% `f=z'́ߓC-ֿG Psz( 9)fDcxʋUq䐪1hdrxAIǻb0XȕtZܦaA502 Գ)eO\fr#a]],9+iqIP2}AIz]PSǚEҔ49OèD'};ADZƧjtrjkdq$DfVB1|'*J[|vOGL@_l1>?qDx:j4C 37bSZ[͋O/==85""I<C#'rdpݔ!cʌ#jݜ!I9dNzMYG Oֽ (pCTT2ήY/#X\m}$TlڋW_<3'Y؝ӂ#t̀CTdCfC| p{f ꛽p16|uhӾ6-(T[T:[=`3tA#@>ujlkGcXȾU.b[;hg/e2*,3$c ;^V'|4L%F%99{qcS:X'lTShk4EuɚMj;1 ^<@P':V&Bë6ى[J/LS膊z9ʂy+V՟zKjRtؠG@cjS,{)Xj"SPF@"GdK7+*Cq"*d|YA!Hc'g*)k~=:έT@7I^>1sD&[8ތr=E:#r  }Rh L5}Kڊ3Jq^8.-*Ad m]%H$L NT$HmJ[ceħiH5 Ԓdz]*.J9Oΰ^T|$qN 4b1& dwfyOn #mu{lH&t3hBH "h./t&}6cg.|/hL2"u>#䅴Ƈ@X5C1xM+KoOkA~9=wud,ω NBczi1B?m gRn3Vy=I9g>?(gAp,`~u #LdAW?tGU6D8F3[DvM_ x{9`F(no?H3_J[Md< >ڌ3/aыQ ԰m ϫvPrfM1I'Ho$)cf 妨慙G00p ѹ!PCgS| g+~+_DVB[) =^ڟGhܷ|ohT*h>vIE:9YI8:`|T.{R% R[ =1kȂ>{t*4ĝd ;voQa|HciθkZ'T>a̡FYZ%Ϥ7哪Y$jgiR ıxUߌkxq?j{7lYφ^Тׯ`r_lxw`:D8EyyؕAJq{B I-f9 wvFk-a+]9K >>ps;WL)ƨ!aOyܺ]KQëX#oGk :ՙizq$*8ۼ犀b L5E.;`ۋ|A55 Ƕ?py%WZ`DvnQL=ݴ<^3McYs[Wt'M}K=6AW# ʎgbA8&;^QeN  !t2Ռ|a_7e^CcOLe,KtR!ԅOSױӲi~zCjaaZQ'ECZ|7# VgCD ްY6Q-])V&ǎ; }6Bĩr0pwտt+YfZ&_K+]l_  h{gWp a~3.>Sl{ϛ"r)L!a]1G} k9~4~~=jsΠc=6n/[إIPE*Na fX}B˔H8ˎNM_."6jdŬtaz}(^\~edl6śy0߈ *P4%, y_qnU}?UwyM*(abP}lEZNcFȼĩvρvz W ]fB 0 OO$. !t%]-n]VHUjp- rW)_c%|VAܿϫ%ȱ.3轾j8ԭBxX`H3۬ݩwYXVԐWP;@_ӳ]^/e @7?} +w+c~F*ꯧo27"(ZAdhd0{i$Juux, 7$†kf(意8-u蹅 ,}4^:[.;`܆q7N@k e O4$w&л5뭶x8< ]j95O* 9( ͼXY- $(ɵ1 i,-!HyCYa5S\nY"eP/O2:(;͂P&N ~A^tg ~Np]-Y袈骆%\ݻU0NcTC`&^>M-Νf;c o?1e^ty:~+9`sFp8V=B4Vq0+eT.ͺ&a#0Ӧ{ :=pio^@dĸAWt'M~8#௲-',~~=gEKF6%*Ė?jI 5 JG&Ogr-wa3Nco36:KkI1ܹP6GR?ၳh#K)s\abM- N)z:sTgu89uD<&#w׊ vK:/spް9 EÑ7ถ9%]p-C=0+mw֗Tfp~"M&JqP׳ zsk?{}L@bn .|o143+]=E5SC ;ࣅv4E1ׅ6MmF=,okUw*5/;jG}x8$ĕnqq#p&ӹZu q;/fa} ,!*qWf-VxnB:gNNRt=y54?-%ƑJj!Hd*@D.B@oetB~W}:ˋ=6DvERD[`Lgc|um,q:P\o,׺PFdbt֭362)5 ;+v3ЈlNV*qj0R&xd'C,ya>j2E Y*1jh_6 L@l #CSsrB$EV~0Ct?{V@}8:9l[l.Χk=!CԿp`:p˝s;PD]ۣx-QA2 ij@VòȻP*ZK:~-07 Wz-j\ "(xC9.+:Vy#ҥTk]xB/ ՍҳTrZ}@EZ%/WMA:em{Yoj/0!H/A(9~&"KfA"eZ7]hSe/Հ7܅dicQyB Sl[#udQAH?I Kb7+#$xiT̷cܚԐ7m;}Gg!ɟlԈơi4ԛu?L%M#%E|o WCHw'&+Uz7d6kYmdoz/F[Q^f#pīCۤ?vnN*sܞj983T=g?nϒ4gt6K  KA1\|+#ѥxx z?&EMY,VِڪyؾVμ/)"5U#lsWBO>J;&x5S҄>2N[mQ<.3QxZ;=ݾ,}}džݦ^{ J ї(U`rTtk~V]t8M;n<QDYdp.- 6FWL=3M?FMf4մlЏZUu|8dlC&˧n;&?vh `"5,WtOyh}nl=1A&ڋB՟m8ȕƲߋ_%XD&ˣBޟfAquJ˞Cr*z+ᡎF'?fm۟R:R!EmBcT]I5E.,3łr7n3K(gu?|Ӊ$hx 2QwnCmY'clUy8i|}S}1?6w/APSdYAO}pXG#r)ŋc>]&֚F^nA>Sޡ ٯ-f!!_*CV)# ٵj)Їv( [VJC{Fݙ> G~ՑݽGYf6uZAid>_^\FZq26M va*58F´_\cHƄI *NK˦K19sBC"eUxgRe10(/Ǫ.^%Lz H%k3܄@7;ܗYxGl3*aoBxJ*!"3p27b1-⁋HQ},aX  lL ^{;7l cQ6 {xpJaPEp;-2K9F[ Έ0L@諄XxHz.lX_l$M9ÒDcǗAGA kKs/B -ÃERӊ&,1KQo) ] Ȅnp[Ȓ.I q$=uTy,Wl?d,4l{k378I)[fd8sr/9%g9t qr2! }u r<K]u}sO [v({A^}sFh|t)ދ-ijHW@P%` Oa4 zߕ4no;p(F\3+`X&Hix"WOgch"4 ,m|.V;Tf`O>^&Hа|FRtSZS(DKzO쩃,8c6\bbYn,(%G6m0ͬY}(hA^E0z``1#@ k6d[^J|5 \fCCy8;h,N<$D!MntW(V= :ՕuMɛZ:Ue+vn>{l,efX&0{7"x(хƊ l\K6U#`3URڝH`[O\Î,73ޫ @?%SG!kyvk" i)of@$<,Piy{)o A7$|/8MVG`;@bt\ 7̬6t,.d:Tm4-τsnkQ J!ԼZ߬z!dERgמr8BGji2IрWR%4ls{n& 3uzGu )_ZIz7͋bFtpy!!vƌ'PÿͿiJ~*1L}isKDϨ:#Бzy ix:+)FDTYaC;i_6zyС7G xY2#qz굽3&cZsSO0Y KňHѼc= MXJG'dmeC RS1Y— שS.{sjYA' &;ҏ6=ik»y,N][B4Wg'jvoU #DƇ73E(ނ$eWOu%ncZU 4=? "u@!'qGIʝ9^OL&=EOoS\.?T:x7du|udq@P-d4@W-e"R [WEVgŔ/ؒPz؇y*jfF j&+c\ & Us¢|)&4L P p/Kf*RGg  }oĭLT6x'[`~{(6FÔ>{砮L|-%h-ɋ]P|1|氿[V5QFf{FX/k^EQDG< T#sm|b"=*A ͌&SsU 7LԄ G*u[ϧ2EB)@~(1f &yJ掏\R}7_zǨwz]3b]/Xr[i8֛,r6=> -f|6jŴQ9.s%JQiQBv J U?|?s&71?X '4E"-av_W<maP=CH[wWXI(^S󃓅Bґ VرL,ӷEO>˯3q !gH_”pV$:>ͥa w4{b c? +S(?ƃ(OT~iNY'{m͐&0 Eoԯs85=wဨf|>e^y1H7-4$FB[H$6N +D,%AsS׊jeS7)+X >gOʅ;w9'%iʲDCitW?]D5+ \=zC?wtBZL"O˦fFㄯ5fڎH iHK!:'&ѽlQRgckhPi␲:ݒ[ylB'% @%\LWϖ;UwZ4F S:BP#@׳d( WXiHSJ'p@ᮣe%tFHVSʸ ;:m[LNWjuGHd/W}+`DL\I)n+3&W8Fot&/ "z܍~K/! /CwYbq1S`hKVG}}Fi̼Ei&f|:O1PFgq>&jH!AgNXP>tήSn'iz@%*e_;<ۭLli-"(p.75=Z9r!fZDDJ. >Ԫ{yUٓ14R?q\d7 \ @ B1[\ijm5; z/KcL) (rxR ;D9%7 (vK"rPh")!9"ϫW!uf^@q Y Si*Ai | I?R%a; آ&\?QuLJhy2b} z qst%MhAMԉLƁ+%8޴i%4XcP=ub 5addŌ:V_Y{,1 00-|Hද)L#Ǚ}Z㶈q$i Ia3)Qْ&6{-͖,£͕_KjIXXrhj݁1(XNt'&T$aOnj(CwF="5s2Nm:*kYǺM []L4N@42?aќ[hƂr:FCutd3+B+<YO͞e[iCI 7[UW7)Կ 3mVQV /GҐ(-(F(K04QX=Ri?APD'W,XJ{~?q{rh>ŀI+o c7,eBonUlBXj6%#;,1j![8XAH֮$/¡d[/7c`⑨=9.۾^o^u,Qwr+v,o혇reexs;I](UlϡEAqI0c[IBȋǨo YC@`_zSJmC9;p"l^7_GhSHgB%Sʸύ>l`8KeF@?C VX:3i}+H}mxT,@spգݧI7+ܤ߿tܒj̋r~Z3{)+(zu" lq˻sДk4y/F!xVAb;KmFXyi>)#"nYi*l+ŕEUJ/kEm~Ejh 3eQN݃*OvQ ʮY*<5X$ S {f3TʾRzs۪[4~] ep)XqcnE8C*V̢ld])&}fF=æɟ\I-,g#p&` Du Ioק ǹ6v0'/g3%,Mp#v$o#t6^Kr_;K,Yg v5+PjY* śLkQ\vϜq-u{*G2t~NZc"럞 rХU{E?{w\UPey bJ\eJd!4xԸ/O,2N7 :6u]'i !DC ?D|ί5ZgN;~<8 rltKϹT|t|%9dr2=|"Z9^+ȅo6/([5C7Pg%ϟӭ7n:jQDu梭p/UIM;N&ീK)5R)-C7L"|,USo pgϺL뷽-! dQ5{)Ki Q| Ȯn ޸:}wi2\yɁgЍqC<}6hػ#:C›|TP=%@+φ$VV*cm!a$q_6-6z=;hcx[JXj:-vH&7NKDDJdZmИaX٢+͸R'imAv[$d*dղ0}ևRԘ@R2oC2Y|OFÏ~EjxJq9ғbLF+ispǙ]+XC6 o8hzVqSɵqA2vVȥwctMOǔޞBTm nZ[EK4(8+`h]ͲJ7 t,:u5 Ln7D 6lkfF|R_H /-DP(OSǘ'y&!{([0-]^JF3%jLf,fG!ޣ̸G #ݼBxj_LI{hMHW<^ߥHz/EWq8l{ (+&l@stWdOiCM *;V4vߒtړ뗡:d"5BlF O ]xv0~ϋGqҺ(4γޏ8HVR8|" I#]B)2:V8.9^i! & Rsk*=A]3#ʗ?4"R ;^FdR#'q-p‹/DWw zh] >ULr:F5~*"C9֫l0ŷGyӏ"iLN綷Q3zݣ$K]tvJi*a>`(9E%x/ F)P kca_$p'pc1v\~p]~jM%<@2`ä)v Fl BLE3N55a]tӌ9@͔HJ_xp[Kcz/J+ya,A0JUsq$x@T32 Wa%杊dݡbOy<2.JvPڙqjIy.Ql&tfcCWYpoR5`պh(Q}ki3N|tq9TjA-}g2nk*A}+b 7)V2WEdRu esd$В K;a.+lZEM:ȍJX u Kb&Iv2__W5-}* ~8|bşoZ\r ޡJg>}AJ\ˇSˈA-"FU&dXho\mX( 9/9 pK7SfeFĤpcEAC;iZ& \]7 F0JBDԝɾnKcm|ڈ6߈4@ʻ>v!1]DT 1ѐfP[\C9N;]]%Cf^Ob=Ԁ1WWn;pjqoY  }v?e}r |8QSF҇|!{'g~M E(3ݡAIs)9_e)FhF4l>EJj*{<U"+`ǢpxpAlP,!# %̖>ej(=m稵&w65Zu_ASleAt!g|G~Dgq4_U k2T˹r0ߌV:?.41IĻ*y+I7 |(7 O2fκTyTq(,y/ߜ m,ZZ |'|wHmcTM|6Fb%x^1w5 @%Sb%V'Xe0b#:6ϏCþ8-gK 5O*ߙ.r?gO3n̠*3|,h8U>S8y$%^R-mBM(˅:IF-PB %.D)}.u #WmTӭ$n&%tK' ك0wGlz2/p*_^՚ טΣ^)c ˝xiWk=vUO]z>N η {N'.'XB2K[[+ΊiEޙl=TIOJ2Ynv.Õnq`okw7_e$?ҡؑ&͞ضg>cUBuWgm[Pvqv(7&t0_Oz8r [XW^ -uhr¼*l2㉗vJo GgHo%E¹Y ~ Ӆ hoSI=ɗS!9Lv(v\s,_@9yVpF@El(WJ2nE[oϏrJ󠒺9c_;/-g})̬EeP"|{Xjd& r@{ع-^`՚Kׯ .BeYjήRlIK$%Qy۫3$v5׻ ptJlMX} 욅fOR/X:}JFTP~6 m:s*HՖe~+X$wpO@tO!q,3=06†D<xk 1GyRN]{4, +oћ>3E(g@ i{*>E\nteUFԜރθ]tTyǐ畅I j A0!=-9-篟oxx=4䧟2QfrpSwzw<.:iJ3_QsgMdH֨dSV)ete8Vb6u{MP"[$Yڗkf9@J9kjEqrXi( \ZYU`:#[gG1b@x'_eiK'88ou2Gьp {/ uEOvw?nxA.AU"+|r*…STh({5Cȴu$Q !MO8k -h\N8b3y!7U2RM,P|`m/و*O->(:jE5D՛ez4 ea(a4nBThǪ uW;yv4_L6v7D@NIξ dp)/ϱfMtxwCQ'u1jom"\:_A 9Bݧ?-D< si>"m3E>l`W`¯VL!Άԣo0Sh A ,GUws5zϬUeΘkfJK`pUlgUZ}pdDN bIYW4*PO:Di!I&di-U&A#!gSo望 N]%D|gET~K6*H4e.UiLo-?aiPmt0j,.fF#dt8Њl0}z<ŊM6rS^h^J!ki+jpb׵`DCHب*2?[b gWZIif(=]1羳C<:]Q ɴ9d?2[̉I)zd\yYCm/]?mAq6|"le*3}XnNtkM+ɵ%&fT+l[?Is/>gku1Ehk䀉)^L:Vފo9tq?>v kAsJٶ BvO~ב@3qJZxUY3uOcak,ߺЀڭpO*9ݥ]?R+'.JXW`t0bImHx2fƇ[.]jʀ0)ɍ;Q8f)9+!QmѨBmjT\Okvr%mIIF!H d4`v`fDyPęG{in:cRe3`vMo|FZX.D" %1ӉHHz;6 aAaIJqm ǃuUyZ]y(aoB쫭DbiĄ1ysحk)Vu$!|w}*opMJy?.Ri?RA/1qà427wkfpgݪg%{m3MjJY_G\7m]Dd#}EH07U "_A3@Bj +LhWC(VN/F{:6ʻ6$AOK{Gs^.{EZXρsBtk U<8Aklp3ݑzhU3IKm&7slp*ǐU8s @Nyگ1MyMrr=ݖ$<̓T-!&m\V 5W7o򰿋}"e_{};Lnl=jKD` txyG߻wcp%=M_}cM@*,˿R}0E5C)+m2WKٿuGFn tv=z[A2FQ̵DuO3l!ψWPo~:?ʇR`O?ulDVp\gB"G0˟*f>'na޾M/bh6%@M˵Iz,ޯ ҩ]t!zj  &0z-U5yv4mD(,UhDah5 x㏌"FEyP)5ZKoy YT* Ԉ*'4>be16G9>Le *fs 4"˹d^.ᕲۂc+bVMB j鹨eZ끠p4yu6GXrggy).SC --eLhE=K&"C &IQ(-: D@OY)!"(+t t0v%  ft 8#5 `:ړPs,㚪U#w8&bL72Ϋ <98S0~ h4# iy$y96nZy !0O!;b |f xn.o^r3m(yhyp# aXg 70w`JL3DE[9* t~#$M:(HwU5O2^G Vz 6EKN\w1>mw*x&g!Ӫ U'}]1?׋B(@6dN}R>hɳ[& ?&s$'/U+YlmB;N6KAI8SqteJ?j5MJHj9d`u =\ZFuә- ]hXfUƛ2Bi& Gz'Z yسϓei7_qjզ)u\UC0C9Zq{ q!b>Wh5&v!}[#هH|!^㊂-m6U;QNv;Lp/ XUG߬nQq¥ R2.KIяpW2jA(WȎ6g~o2Ej%*4ztY8!e3E Ot燇Zc@!Q68!u،d:>FPz7H?9^aAn]Bf-,v7_ً!;0TfwKØlpƓծ(nŐ4uˀ&untՃx暓xL"Cyȉ =jzaG8'CÕ4:RlqQpM2ϥkk!;? a9Up0TtJgkI80, (a_1"Ɩxa2;Lf\"tl#SZ K!YkXaN]z\=rqfU|5Sn&USPɜю2 Vbʍɗ?JϿw-<`ZxQRS^ZE$3L(T|=aM?fBWM5T-;dT+g%{:IK\;jޙ)5 EczLK=QnF{`|9ndbWSQAfھMc//"ݓB:զPzpP@$Ӥ#]U[WZ} цZdͤ<qv TjJ (ődvmQK!٫ҁ#.=`FC c탒՟B[w *O"}-E.g7.ZiDSCZ O؋YU>G%~`AKܢ VINC;qfl&8tS_xb;_֠9@{RZxt]>2[L XRY?!p:Zj}(cDş(h+5ecెXhL#Ԗs[\-{ %#|MbTGl|Id%xRt;I;M]͊1Pv嘪ϝʗ9(MC&{ XhvE~}~p/Y>~ϖݲ çKH~aQON'tB{oZ,%F:E,U"Wp|a'6Y-$g[4vVaiehCtaf,sg[&pF7 ?rgG"m//SR1Hl:Sc{ig 0 p.Dϔ6B4f  dgIէ^j1"G(k'e 'wRCH jƤݲ2'T!܎Q$l TZT]Bg=b e9eDS|gR_vW k \D'F8hLR)>%mŞXc\|/FH۞+niIٛ$w;H[SERt_ T!:2}Uu%*'s<2m~s$b빠yhft`-Wu}Ny2xtM}R<ŵ:=9 Hu(KQ 4ǔ|`>}9Q3Lĥ𓑢GXQϔWc_A l[z2&0v+C8KZbD0pc Ar=`P~>M]`<!J\*LEܳ0( ^Q: BaV!egnj% $t?c5Ӡ88bŜ~.B dp.iMU/ѓZ;Ծ& 'k<7r؜DT"s?:H[%i$PT,68~  e'IU$t;,f,&O.g TNF cn/7e/JP" U;TϠׄgaS m 'Rօ+d﷗#}a±ޓҸtNbζ[P_&3l*.!tL{WctpRM7~&#X)#J!xV~K=@wӗvw5 iy֓phÑ]2vCam(AnS9!,9b.#crUt ޴4~͏ZO&2:ΝO?3|t @G*)D9j)!tJy&z br56 PʹފʁS:Fd:(˗J,w0++D?N& `~uϴ#Jᠰ:f,x݊S[dSmdU),$ew Xw{:{=h^GMuLR NjTǻ_xr лs+_pwNPkSd{^!^.bz乇s4g';ᆵAj) \P)PN %틮yJb g:_ȊUíʫڴ1ΨΙCZyY~̴`ǕOu=6fF&HUq  FKbWq,zM3)w3`!w+ 31кT? `6g#=ʆJW0*B#~{2zs%%8,z NuVheZz rhdw٬oISc6M1.oȞG++A vUTeL~>o)uVJʵpγ` `jbTP焘(oL(ʓG Xq`sܤ9'c9IE>?62TN=BB`O?-.S, YLߡi޶~n`x2Z ȳr<ˡ.ޓ퍘g"ԦS=E.{2݃*[I_̂ՃAGa9@%*7meT % *+%Od{֮GMں sZ&pMhCZl1rzސkg\46}|/HlF!Y.y /3Mtm5j]kc6.bAYDOHR?EIXzc1b%oKV"w >D7e-zx26j @cgԼ51C۵pl}T }~!TkύNip4/ŊWnKDaZHr!X1+(QeWseӅ)Y0X7G rIZSfzK /3R*8e@kv;VE:d*q pq1YmCTՉq8N#O+.\E @Cthiti⑲Q~Yً@+ {HtD~`Maas_ @S≦< rb!B 9 =}u$jZha.s-{I*3x qg6 <,#]| , idc{ʢ1#j h\|6KB3dC藬%dMA1o'+Ȳ; Lvi:H)Jb>&{[}m\ѯ\>tJ<3=#%%)/ɺğ߬|i4;j^,'͢ -AT 2چ?.ҢZ5]^gH26aKR "D1.u'2¼r3$~f>(/hY޵7G /gnhe9Tm `%(굪v̦ #?m#ifA cjůѠ@ÄTlujaaR8HϿ7SH| ) ۖ`XU~;TP XvGӍ$&%_'O#Kđ'hE4V8Yn1M _,jɽ֧ }ܕW"^qbs&@΃}ʁ,1olotAkd 0 z89HeyJ0[*䃏f4s愋ːQ HLKv[B8Zdr\Nd ,HѾּ1N 3^ !!Cχ96FdӀ15s^nߞutgymxt~PNB1ƄH]Ŷd=A ґoBoj<,=}a $#J~fxst2VZY!pƏAxX.:'Wޅ0MН14 k;UdE CrbU= 3T2C*< <3`,94W-]GO>+<[yu^cs$ n?8#a0}Tv-X#_Ї l𢝑km7VB~}oVg^%" Uѯ/7ႽZqGƪL-ܘ6Yڔdp k/)}ZEΞZu,|72BnxOzŷ`蹄(=$Z{7< SW )<*WI{}wtʁMGfY+'skᮻ>Mi3 FfkyM!; k+*oHM5.&ZK!(fQ x͌+0ZtSYn>:!Њ- v,u)_r( _řQ>#Gf6)ώ 3L\/LXpV7OB_Lϲ 5zy>wZ-f RA6KR#%91rBڇ)>ƥ* xFyWYڬJ?*抧;ź,D8ㇽi%@S͝lb麃fGP|ei 2׀fq@?ХT2$TN!J5,Gh~!2>$MM)% ehmKڲ 0UkffUzݪ\v,(1gb#]Wm zS"U9zn P&PtmG'lEM.{k BAOѪSz Cl>̭tyh`jNvnOh\.8fCiF{=lPVAT5_`C/g:PtRn&3h!rY!ٕ|̎b [Ͼ:(7~QҎrU'ŦPumihh4z} qcc'+~mNՌwq*(]Vz^ MdKv4җYrh!ЁGmyu5fQsW@ (yxP]`fO~u>?Zx~Jƺ `<"GgU<ݿ0A`7Huȍ|H_ [V W9i}Ұ^,T hFJmbY2vI#i@e$[ WW/R$@5QBl+1J&P^![Qk5{S 5@hH62fS)%X4_:6M{ǕHKxֵJhůeHnEE;|%),.Y吸'Y=ׇnm .4U\ހn8dbxuZkSj_F|>N'#wa0gҦCqRI:q!־wmͽ T ѐoaƩ)V8M_9XRl@U}-G;G8Pmj\O&6I%yB3` -n5+,M}g_'<yA] YueH2K運X@jH$YwlTVucra]d\+1cnV"Ӯ#%R<G~c0bIɌ)2NJ0 '.QO&C8_7_qv#Ί0KxNߊѳVg w=]Kj GJM:K%™J@G\.b4c)zF:8|*xE .^#ZNS "v1{Fw6ŵ !IeKR2gF4)FcyI 4Xίp4op iFuu$yT!InQ"6C~i%so`)XLjIZxFg| cho NflF '"xcz㘹`|'Y|+@`TfT72W]dZ8`6W7CN|(S)CDI)rFic?LJe\93[ۡ Z&W[2ש[\u1ę蛩YNG=%ցSZ_&$bfޢ +85/nA''{N1.Nh ۍ|҅Xw!ثzG|{72`%#r[০ I8f; |4cj0Rv9Q3=ms{Rۏ'0vt4~ 1_6/nSfkߙfPBWdǞykŠx4Áb p% ZCs/ C >= w$*O<c7~:@*!Z6XnB%q@][;enP7?c80!?WrdZrrto.?:-qDPqm"_=]q 5ָE<&W,of=Auw\hK`|j;pϛKhBFHE}EA 5T@: $XY1^lwv&*NJHgFd5XD;!t:I?RTT㡥$n"l7St@<-d93{esЈ2Մ+⧿rrd-h4 J/dDA!L峋J A7 `R W}x/*`6VՄm:ЕqشYz)'uh!$s햼􇐠@̒ a vi:En +)5(S/W;iǠ4<@x0vFs]vq¥ c?Çϟ+cv"7|Z//~V\y+lM ThΙ_1D0B;lռaHΤ/CmƙX |01.-gCSSf8Z;8u7bQo{DOZ4WA/BYR&nWR>瓇<wQeְ4s9n0=8XPL=t+&C O} 4l+r]#`q(ma#ӻ%TPo:,}Zj`m9]} ,dH_*U.D: l 6KIٮ#N Gor8=›^'@۶.LtBYjѽFx)渏wlO \& cA&;F(?.P+}XDSϷMc?8WSvǞ:ذ쭝CBXX1IEX`Y°Mcn"?c{Fd(9޷Uf rnNO 2ˆA6YE="Ԟ'c膐x},˓%|2oΪS3bbDyՔ QO~9P!laBA'4@Pm{+R9ECnD8['8t _!H0L={%ީ<F=kwuϼxRnf(Ϊep=a^GB?[XP7 $z2 Z S캿+AnsC !$YOJ7B[EOAKGM ,34oR%ԦBCi)bOQ!ƏSo.C$:#`e>E: hQ.Ggͷ30:%1@-|֬ͭ3˺:_d޴qlؓͩcNs)[BZj r}m~Iwdž Jo1jŞRC cJcM`xْ;*D8l0I 5ぐAn?w+EM>sEoMTH/Rvh8DF 4[`geghɠVniwg41gKt3Ql)"Ӷ MRk\?U1ǣfշsЯ~.g |] rDY<: 9%/(o6f% "E.z I'A_e4+7w|LX ӛ$ 3c[ &?˜jxUX02܍*M3(Eq?+#J`]om$cݙ%Q5@ Cu^k -"nf3hE.1$pYzj:-}[@(u@L뎈fq.烖+Ym EX:U"$H=.)jy󊕲diH~qA'I*L蔽.B#K&oUgI-L+oJ-pVj1xW#jO`*CC%F9^Ql[m8"@N!b؄|_(*EH=5bkD8Dp\Lx/ K U\[8WP0t6B;3j\310!t$pһ]`!Ur^Xݬl3QȁE7Q8/W×} CKwip1hwd5YK+A3,4ٖ WۭvB"]<媄l[bz IV||BqȮRE{(KmMq}Nu+}ZцP/o[ld򠙂if65j`Xn',U<Ѧ@SLb=T/[Vr:f',UǚE@a[Ng<Á@!up_7Ev'/@Mrb\Ò챀 [e#^b9v\#,}Dg( !6:`iU81We)O؝aZi"9G+jfE) z-޲|E')F$&Gۗ%# 龆+Ք>Q Zc?S@E;%ZmghN^CbYzx9Jqpf!FF6E#3;{D'8.D˺`,}4L&k%СT'hW<؇朠e%(O:$Fft봓ɗͭҔ d? Vu0\S MR,UZPڗP2<wW9]veuáDWDt@p3wӑ/NӻR3^B9(Ã/̵6 XmOqw1P? "o^)XH՛GȢ + )+F"-N:D6kbji4L鿸D$7P49 1c!``kw#h^^`@DoV8/Pk!d8i0^՚C ,ƯŲ= [$HY`)q%u8xKj) p 5<rs,`ꩨ m/Z}[G*O jP30tG{"~Ll,YI,UmPrFkC9~}dA>d; ~ӌ i[b)>)-yEߪ8, $Kc+qؑl/DKT5h.OYMGf=/+6 5V}R}]I÷ E yw2(!wY !STU h2m&Nn)uzb*D XHrbMQ^knLu M·Ah(s?0$6_6E6 ~ 4cWa-_K-8i) p jv*9eU#66Å(y Jf.eǣֵ>[ڣ=mhOw6)qJxN͇k_d7QwU*-N%ae1#%f1> 3YZ9ѧh4 .aO뚞zoט4 ;X^л'A#Ch.s#҃nhu*tJ` qR"A|d]Gٕe~qbNW2.l.])}bd1y8R{~,ωYƽu8њB+4gZT!>~MUY瘐|POT+4w&_y(y$SAapfI-uՒ:nb٫weUnWrE d 2Dzt iQ{ңĢp̱Sͺ&eA<ι/z7$o[?1 ,%F1}$Fݮ闏HFg ΩNVPӕ t!")24XVsey U–Ÿ"{]FYD=$&/u*cꖤ">G w 1!@B'CLs_~*\\m[]=y`[:9?rzPƚ}J?*?Ω,vTk*+kTe1-_=HZMtLyZu$LOLiB]⵻fk m!t?t \תhtLHπJCoL7ڊx WOJ-Acʼ`B[󆼉CvP*C.zןh $oa@=m-h/N 3$G^bs>i^[T3Q-ƌq.nƗS/ 83(8 ^=wչ}\>evKcN Y@>;8) h}- Bʒ?rb2˨0,ϓEfReJggUeDW.ĉ%(cBS5k׾$u|Y3 0f+F(X]^gbC<8qƜ:?zUkrohj[̓ :WOY i+.GoZcN[[s Gz[<dg`uoK~ ZBYu}R)6V}*k !c1 SbvF&yՙXd$̠ݚTNzeK\ݴ ")˕9.O+O<4b'9pC}u9ݐbU}ӘU'3b$s@J\)$^L BS9⭉]&]4U"3Ʈ8I)>5fvmpYػ`ofB@amKGpZS8ɾ6ޟÀ }$J~F{a5Kn?͞/iV@p$#T^n-a4],v ŝc:̳U(G1ALR ;IvlV+d E:sjy:洃׽\-=fUNUlӹG]u\nr534`đ %B̏D8e,17a*X:ݗΎu|__^H j½C :rxudGۭ# GŴ<*5UPТj 11 d\ȹ򉯩uxF4xEXs =Ё I)t3 m#cZ>">Q>|AD *MKr$m%yWڨ+}JӃ lokTwN$d8R 2\FXwڰB]ʌO랜ͺV"Sr> ֆRQ2ָ;~{&;0xci0 KTGr+H.6wNz; 맴 0,UU f6=܌-+4]"NyiފTL1cdT>% '4ӗ4zKb#1>ܔ1Z818`w ?j:U6?RZosų[P~=%|2 "es8a!R}›DZIK*SQڿ\b _K6شdFөmtX\< AA "};(*J8hI-dߋgEgN1~}ʣ'6m:&U@fʳkEm)ҷ AaC.z,RbL`F>oॱ"3E&' i:LwKdd9|͞*fL2*3 kVpy r4M>}/Hs 2 ~f3 $D^*+ ֪0֭/Í<+0~h؂Ci hvԌM&?g_x -PhWx*podw#nCsi}W79ōD;^ιd{0\ݬUQGGt !3\d<[sU3j[$uSD(ׂ\L֐O_t?H/-u8XʒM.LAFN Y00٣7޾KBeYYb;bD R#[`gF劶4inq]tjWS@A:c|g QYZodB"4O";?N /7} &3C!1 W4r8O CVz>@`WQp5 )'ݢW77-Z*5wŻ(Gd3;6+Ϛ~TbS"JJ'ޚtr̬+GHkx+ #ɩO<73;*._w6L؇򜩶j|RԾ2 @=̄*hb*{):mᝰpFdRdiUxH*03تhAr6ćd + Ħa/,^M / +5p'UߌмRSEf = _q}L; i縼G"z}1m@7Dd4d1ұI\HKΏ2ߛ8*Yߦ;7LWs"^ڣӸ&4f}W~h< oÛٱvw*@{4L7|L6o׹fZNeb崚3:Z`JnI!ڎIn_"3ILK|N8 H~&X'Fl+zAe ՘23,Q!o3u/UfF4,T~n.9}SnKS93% sbp`v̸ ~<I=kA )!~qEDHkj3m,xS˩ݏl2( RFE#9?p&ػ9)}j:BITã~lݤLDK^lZI+^`6ӻ*(NHu=sHWV`ktv.]f/3T FZguu ʴh@#v+r3'Ч{͠YQhY .fK!5;!$,Yt70IHt <4'#MK֍ZOKzq#u.vwBjc#g}?6/ux_v%$H5]r €,:9ca$*3񀤈Kx/T$표63{Gt0941k329跏+}>6Pm^q;*!g ϯC2p'#ys+zMp Mm1\n~M?+K~; m_&Q}0z75qY tx?`4Ihc^4HsGED3!(zs">X ! G4r`͔+Fv H$i?U.3ȑZj >b%u/ڊpBi9Ѯ`!&z3N[1n"u^8p=U1rcY|(.!\<:$5 lU_M#<$VpTšx݉}#/!-* Tk9i҈bz[I#RiL{ nP |L2*Ζf^켙LOtgMWQEY vN{@<ӲL=LE1ym%^Gˀ=!&@1!Zd/lm>Qq`b+XP@gR]VZ׮T7^FrvgX,(9OFߢ4TH }B+P5;n;w;X'-? ]Ҥ YfeN7wV#H ޣ٦ euZuw?*&y>pQ'~\x9m*-wVѯu][/ ;C; / _6r^ z1$et6RCӴ/0:Tfw{Yd[bNj m(I V+ |`&G6:PNɚ LESCOn!'wސb?K|ڕ޿W&p#Icnz‡v\j$R%QևAg#X9W͋ KCY#Eu~.zm"46~ڶ^UǗ 9#83^N{ r͠,ڃ.`4v:`5WD_9 ١YGrv7 r%6vq FoN:Q|unfsp]efi{X5QI <Z M> cϕsfcAEmlw oEƙ5O¬,\64:GgRⳑ 6Bz,]RAn@ '-G4G$M]k^kMENMC_gb"Yid#vp }䓒P3"yaXNvf F =%}&*Ye]D?~薂ۆSk[uvt-+IwZEr\i(W8M2ew2\Уx0Z Wz*/vw4^=JfW \xaB!8L|x?~k5Ors BW@ J^t(R5.xR.M}6AH!# 4/`2 LzaRr1uy`^b^4.h[77KzCjuhUĘ$b] :oo9>NbD%'’֬"ד?Ionyb?٦Y };(@8)#p( ^`v&d uJOɗܫfR>h575qz_(^:Y~&%!<St6{쳂 |)ajd*Kƅm͚fI D*6ugJE266pl#+=hKz{cɠO4Σ;l7'\9N60]h+~2T3۹ 4d ~p3 `OKB1bA4Z!I7i,(LQII5#32-s}Q^H2tX ha:t>&'> :t|>^+QylTx꫉.Kuo2?4(l%bhr69FrͿ*Z΂ ݣ>xų 0O߰u+%q'uHu+ҫ|9|#ﯞcηw1{u^$ մ Fu;ʄ$,yqE0hoeR ʔ<K$ t`l'ĩ%2׶g zeE.Z, 4!#S-RC{}Ӑ >|9u5I)d5NŐ#uJ98zv194fiPz=tK/ l[A:2iw[-fqsݥՊxW 9pOo/p4C&9qN&c6Ebp~3Y'#,nJP115 ɘkh=#_3]tD6YiweT_YtrpdONq^PdNA j(ϗ6%[SMGwe3gd\b _x7TIJXn-M447"2EˋJˆS4B3P'lƋ9SxƩ 0ڙ<{1Zֺ\dAT[0cU)n@8YP92pEތ'eH8*}Bf*$޵cV0|b1y9@e˕e@BwfHڸpn=wZ읓 'v*ʠu@ȼąX=rVFNAHGRx4-ֹ " ˷{. ՑU'590֑ZP*mm#s{, ig1]L)b_h6F講,/]!U5B+/xȋv;7bpSbdk؉T%K}5-Ə@|AdF}JA[Zt ` 48!͞w-=xiQB9~֌fcO5N,f8g-)8?e< =z[d[Сo󂷸!݌! DD_tX͌ڹ8~Vlg&ޠϦv=p&qLv l2M3=knF1J:1'@), ;2WsMoO)Ml٪7)G?t% i9U.G=@0M 2^֘5#\Cgd%-D ȡl!; dp_k3`2rB 9`@pGLqA*ۛ(~8tOpէ ^꼓{X!9]%9~9 g.Jåu>oD,Nu UT,owmy:QXKGV^M1~`X"7 Oj(qKo ;@އUuȶ 3QѼJq7H{Ej v2w>4 K0M#$#?~]ibl>rJp]"/Q_i56$&Y!` q7&)K k5ː/OIW4*m跨L^cݻI#i wXW):nQg] Q-=^\Adp@xC^⚧ r4QS4C|N]AV0TkĻb?Iˈ1>%_iKMZ;cWv`Ӛ=B|m8}{C_-1Z@x|k+_ɔ0T1`*^ "NҢ)}7)1|gbU#@Q~s8Mcr= t cPNɝp#p,z>P. X/w!Ejn_Aw09>( ޾9ҭ tcs^ڭ*#8(D,Ԏn.6% K !V_-^5u1 8cK5/\`t3wf] X1v2Vt}օxmtZfamK:+%Xl2'qoTh t_rUw:bz{8ND:֮+w'L{ux-sfÛxA;8&Böw"sYVgߤҊL;Iy4u&#&WCY&ٓh֜-[N /-gul1ant[Eh1HSR1a*p1hyUS*PA<}(F0Y= $f $),R3(!W/RJsoC@|( 1|}^LdTǁ,Whs+DXDkJ |۾#CJNIX+-*\mEqɁLy 2p%FY,X&6.onYiGs[.f?]"2 뙚%_B>sPh:<,vެ:w>qT-iNZ&knWţt:^/F}d-m?N@t 4͝N]q&Q?t%Z[YP43q/M QSbQSF1[<0_sᅭYn} `Ù՞}hT?W{ /FOV4;J jkL6Q8LoPݙml|̜%ySICn:+hŅq'ps`Dp[9&f50jTvA8i wdF,$8cGiBTy$z6Eb"c-ըUR3iOrWv'sA!oUԄ02Ny yId` 'Zx~J50R|u 2s0'ޯx[!N{qY1 RYv KdoA)# >F xT娶 l^ ?=oPt*$esO8[0/ӈb= E"87C 1% HQGKxmð C\H5Ld4U }m>S1#7$ӚƏqq.Egtc?G3+|!;e6M7]^\yyd4;miv;VJaE0~)l-`(@G北n{NȤ7 7l ';7tNmi qE >Cse(<K8z>଒7 GMtoa_${52q67΅U׍)﷮DI֨Rƪϑ._%~Y~VE)xHCj{)ڡ-L?"7s& 89x7<iCF!ngA?5L=r{ֱVlu}g/G&OIiS&^٨;Num-Pi%Jf/U/sis:!OQxblss4zVPͯ"7L Y*:rU=uv߅R5lKoSIl[cTPBA~\/u!kw.$U1c݀g_VtÛ[sF4>nOS)&ȨҪK݌6;~}+S7[֯,mE:s4NosRKّɑ-vg8%!apޟ~fas)h Vq|o :7!Vx-qM"#_t]bZHI~xzZj)XJprA/q!UIZ{ &ӖhY?r lh3Ķ{Ńht M !\,f[fn\9<^vin3FB{ZB<]'+xa?-bhx@g=:RAba$_fمr}[&Wxy%nӕÆMu^t_Maa ƹͅ2hCj^s祙u\Ʃ~'cPעK+&_LkτφFk5?Aګ,[MV=dZ-~4'sST_h"PH@-(Qm 0YʔԪ BO!R%29hJP))U`ZC42+D)^mu'0o=V[ZuG&Z8Ői#Dj BљV5NE9r:-J_%jSUOE΃hRlM)Z:oˀ.3i0pqz-fɡM+IIa]m>PH.d$M,X9|Q+Խ{-0.o1N?έB.4СCh`DiM,_M_?NVeo8dq1ƈdx[bUAed5b;D>0J|B~.5犔Q,}Ӫe:mySO|I>BIf8TyFGZ $yZs)H*h0sr^N>d>;"'%1Z(p㺬טw,<{p)+\B"KN.=ϊnv1us~HrŃd&?@֧AEjZ%EtR%sxsuh{88_XwV!'kҧ@TA rͳ8]J7'NWԖ $tӗGDI먇R%?,xN$P[?l߮)Ȋ¦WsH$IXTΓHH*G ;;3{Rڽ]!gC<.4ޞu &lDHҘN[ {K~BmFߑ~IqM*> e>\(byynΠ :?!KWoÐn"Z}ꉌQy{z0}-/15?{Z/n9[T^Ff7YgkT] N͛e.d[+b` lṙAm /_ qk,ab[0@]X4Ys/La1OZzAɁ jF+o6ЂRT' -dP Mۡޣw1V"#z-wUPa\I^*=X=רh([ps^XZ7vY B]G9/.#ZYT߉7j,\4Hd Tr=/mv@8_M i_$=⃀e?԰Zeg;JrQcC(g!tYEiLJg#l}.|/tx@N:DUpNX&EoL.ݾA- \D^Z嫐 ̅s!jem顣2,`I4 fG{6/(DEwL(RutݴU'ɝ&)wnJQHS2R?xossJz~]vgUu+ >!a>[%7\O$eY_yX@sHXF9ԁ$T&oX]0;x~ƒڝ]Y]cF aqhF hЙ"P5bi1oo>73ӚcnLJ&2N{ @rP)K AKMhо(R{'xew{c J[H句hv3])SGqݜҲ'R7= m*U;+(cK&ѳ6~-6d ѶŔ Ӗ}.dTn+352Q $ǎu3¦)LTM/7uϬaT6Kڞ!E<5KaҲeAͳ FB/p\BcжeH"> b"w썠tgQLν6:GfmKCƜ# ĶKO'OA mu#x_FI$(Rmk\ &ds̠z<$t <ӧz#J(~C԰xklD}M~W7: ;#ե`lm/5;|ҽL3wK3)LTlݍ[& L&.d6Cc*a-C{5-s0h)>һ84r|+cqGC4P|S d흼7YNij7ͦj |!‘!f9{leNw$)L߯ 5!"[uD)_Y3ęHr ;pR(j~ãv k1rRFѢs8?Dn @hi(v"zy"$ĵrUQL.Һ=ĝdu/[F"b!sqӕBČsbqRHE 9)z)kb4ꛠQi 6]‰Y"q2?ygJDPK6c3|c}?C^aZ>v D&+1Y/ژs4׏;nl rհb#j׉ $0%zr1,;SLs,'jd0jοvzplS ɥ "7E `yj5\Q_H8\OA H1?SF֨Z-Ht޳ddžgbUQijjzTEmw8 NnuU,Ÿ)|2܄fV]k>rY>,?ْu[]:#X8ֺzJJFRČޡHIzm祥oL@'yC*PFGL Y/hTvJxpB׭]C9 Ad. 3kɕ:בxDnE=jſ_@=i n!l| u~kt _l42&MOscŝǟO"~YE9 44X!Id.x@cgBrollDt|e 6Cj(0k[}"9[ 'tNPN?$jaΫrK&ўis6ko?yԢ)Sanv~ݨ쐈[c mc~C+#K5NSlރ$Hi>o-jf䮹$L *d!-űaJ-qc55=<"4]L!+c<'zJ0)vTجL1'I{Cctgޘ2ʑ lՙz%ѱd5 #qM5>Gs^F%)M!UxF&h_h5Gv 6}z| ,·wL@f:|^U<$uW8ٹ +LaLTlK!@Dq \A%4w`B_j̙FA.T+ѲevY*B4y6jL='/UYcpc=wZ[yC4rň9/!d!l2S>ڈȅ\aLOe[6U 2DžG~f2rę0Y;.5aJĔ*͍}_sq+~[\v[$vy挕^4osFKTE1\$NX/X-Nl~m?@}g smB>;!ר;˷#/FUF2_P2|XW9dSݿe4Ap}6S-vƢ X vW|Sk.qVu*۵KG>69A,r.܎e\sJ~dnq0eD}[-SΠqo|~ NuES3V'}GmY7g_Jy8$)Wß!P/ق%}FxV_"&8)`bjaFfi.x ^=)5\ѡ=~솜[RO p{$Qk8TW{iAfvC@TBux+ n81%{%r-' Z3Ӆ_b?M~4h e$Ih #-]o͑.`wOd`3uG7GŵDQcЙdNQ3K;Xvf5рy{[aZhs-V eS-><k,p8%;DX:ύB|_^_ƲͲB_䙪0i\aȱaghWTDZi/|.pĺnfz#"&%t0 !/Գm tCi/|r  S7Rg&CRw͍!iO)hi ˃($znѣ|%T Rqh`)n-Ђtv'hiF BǠaOvA3DB~vזGT|NAN`4XHt,CTDkf#HXdؽ6- x}ɥ9cmd8Z2/F؎jȮ7ew򓕾`a,G µ{V~La4{Y$5ثiiXqhzѳ2=+܇5BfEυo܍,đaVHA/gY\gcQTM&mF07RS!AQڀ ;00IЛMv^jm;0HKh29e|{rb=K܍D\V}VrAF ?miF.1$tsP@|~lST~15 g"2f/W=rj6w~vB1MbO.0I?b 4V:@]H\O8;8?L5>mC/8Ab @yX#I_z͢}A CRa"Z>]*,ݬ902H,0RM 82Mw2ӷf?B6_='I{{8Ɠj'uVQ.};h[ qxݯ;2wQ*j{:fWQ,udlaKNJI k3Iz]ԞGóGw!e;}8Ƌӌi\`T,#p`v&*28}D$FsNB*vfu՜{KqFAS#= _+XbESJH(> L5bv o-CVx^(MSd_^x @W]?[3A)J+QIkD zalnKjT+8RI)d8bYۅ"7>#="R5 Ű^\ VF~47(:hn1Зm52q<(/,Q~ka}RD'g=5%,OU<3|+'UI}#|ڬes(jN,w̝~QxA,[wIS<7}CFg}jr<>T!DK>bm@nF<޶v qfDiˎ1=\AHNZ̎5.@ q“;ay~!r=1D1<#z;ٴ8Y`#y_sZ*\| U1l]>71}FJP9#)c,{YܹƫǬGڙ<416YjoyIP|1hR}ި˭8 9%Wao;Ϻ}7;A"HAspEJs (}qo娴 ~Fr.>xJ_ul&,Wqۡ {t{/V5qTGa %>(]33dbyMa%{FXQnKWDN!&iHe:b{B9=be8O3q"_#m7OQ.7XH=l{E3HBFA`CO SjϟsN/w,2 YĮZ[؏i5'3NLb2Ez{-pk}WHe;Pghw;O> aV'7p&$BDWHnQf \8 # )!Tz]̔B&jƥYǦLck: 2C* L֕sm$|AB)g(Q1EÜWWT>ܓ'+h]Zu.A9d SD '9Z`5Hɍ䛵%bQx  -E/ٽC.a ]rc͌^; TVD=6T$QW1Աwثɸ韭-1qLWA^`XMPntsP[h 9whOG`Atca[k=b?7'ϥ+R 5֏3.G"5#&%LIv3 (15Uz̡c E\t8o/6Z$ZGE*; #pC~pԮ60+ b:S1Tghq'm=m x^iwA Xcye*:s AiUkyj;(BA4[݃} OIWǔ[0-Gy5=U%SɊ?*o?O~19%0wV?<QUd hyߗEBLtuJOY6‘˶AkedNSff|R+r\ΉK><4toOuk6_wKq T^xAպ! jw[{t]٥1 E$LQ&8io~UeId"ލl2O G5ib,7Ƅ^0:SfBCǹƬ f4| ަHFB,J5zm U%A|Pf-6];ZGm`ծr7},:Fy8u >6gF#4 BuEJbX Ĝk4K^|yH^Woר> pf:0ϧ79J>w8:@aPƀeweS^,iVι!7bOR3dm:DR~w\&W ;TM1/S# ?!C CX RZLù=x+Ё5lSNU@Wy4z\_jFϊy3 ^" M5YhEF& TH@l;Cw%+!fACF-ZtvEu7)*ʅk*L+E!^ؾ+6:"0 8 <ZHR5D%29iWXÆZ?ƽhw'd-k55R\XXaFDe>z4& L%)Di5d"_1tf*ECSkSn{Kˀ1QkPq0TM mIw*h>Mǎ2'[>1ICא$!-L"6ݻ.J1Ӏz'ϕQTU HǪAPRU)R!&b}6Hyts67,m9Տ{WCp#,4?g-iGwPls4ս>&;qJDMO !͛V bw+0AsvVH@ۡ']'G c=k.Q1TR?˱U@AkӲJXdWwSm_:j"e͘i\{冧VC=3j\Q_'@X*kwJL]|a( i=xF"~Qה@?U26Rr{7A<˞C5L,_tB\?|HjȾ@85VD~u5,d1BD(,̽"yNа(qo04xXp, z:@tI7Rcn82T ##%#L{BxPR0n:LڞhM rq%nx0H9^l&hP]C+VveD/8nCsN//KGX]I`7C8^96UEl/։ [XjSKyA;E%JXu f/Zi`d|eFa/k2XtzfsyBo=w-nLPMp>cee܏aU9؄>3 E:%1/wV 529)zVRUplǩ'Ol` sַg Prިt`]x^Ov4!/->x7r' HO0!ABWt6mZס2sn,4N|}xY8kT2D}psL'<ɐb+k`0.X8UKm9ڸ-(S i?Cܷ^?˃sTsl˄ʼEB~F|( dp{ajjkyT50ۯq!;hꪸخ#etx*&L.C=3+a dbA}lkUm-z5ws)(m նHjB%LvT/6S|+ ׬jvK"]W _%K6i^W!t .,)Bܦ !õ|sU}"ٍP?-݋>*pB/  rEJ0&XB>}wChi" 2N$<.B'R>Iiק*z9՞͚W3]N,Z :-}Uא>ݐ!Z4mQRdYd1Q1zG*o"T^M|(q.^ E6 n,F{Leՠ>0 }GJQ8c Z:7i82MځR'6P3,-bC ! k|3I8khNCQshS}{Ʊy;vLJ0.^ukj_Rz7ե*Ew*]zD},\EhJHzi:d& /8H#?ˎ/ zL%RꨧSOkaoΊD Sr3/BGr 5Et*um>RRku ^g"[[bcc9ڨ͌~1?ugrx<>35_Ws]Q9;j.tBQvHڧƙo#K ?our f@Dže1wQm\tvٽk5jaml$"">5h*z87&BnX[R^*igbwH6Dة₯'|v~y"_C@!тD8qbDR{kTȀYeѥf9F7@k?|V,ih|?z zO|`7ʌ{uu%IЋ򔼇 hۣP QM1}^ wױyfزCg*Ɠz~/Ƶ׀f`J3Q_ D?)1zW# {؈ {v== <[@=Gۺl{ oϧIσ> ʕRcaeuUub5٦$kxQ\LJ 3ghu{8NIUVhOέSW9x2@FS샟 ϲHsRޖDLa-tcuVgD j:`ZfIi81q&ZY#4{XQstEtZ 2}mNZ*^I?VBne1}Ep_L?E C!H -&11~@qzr>~0a\q9-Iř-I+jNc~abQ!6D?j`Yr5tx^)IAK8?Qu]LPKd_>gS,nb8>6ݕ8u`aj0WF˟?-.fB)JO9?n~38=G'N;Dk0 &Xe,R 25wK׽||hϗ0?EIgv_=.h?ɽefH:+Czv͑\nM>DXӬ}Z9ͣOz יa].ʲQ N4oപ⿺;7h:$ ^;[0LY.E+?;|<{ 5 0Q0'nod9{BRұ_z_[:dCUnSZ%κ*@L\ה.ӼS AY9-3fɑ6^5 2= Edr{؜ @4r3B}Q)%)^ C @g" <~ǩ.m7/hd:΃nyҊN$BW~ۏ1/h`~Mi؁'\$ͯG>5]K'ÆFM_wdKfwI_0y}!aJa4MI,`Nvq/2,>BdIwMn9KJhjE?ދ%^ TNMM}<ʉ'[f\L4]0[m:vHδKg|f|M̱xCw{{HwBUg[obaiH5k g íK:iE΍]dÉbQ<@3.xGf%c>Nޘb#x_c4 >|䮬Br^=mIr?&(5iGDjUCZS 7uH 4s3I~pe3yK?%sw1&F46bsgqA;Ym^F0I>JL'r<,8[^@k`q*Y2бS5VAl3C#JP;>Xk秵wER6wwA[%nN◔pg;+^ܴqE*(*'Ѣ Ugo|[kY0f{?n͕[_6I%::K>t*>hV) zl^-G{~7Gjxqk}܃<6L-FvDLK 7lə/ep^,&j ݀WڻVuoөya/IN;3->7jϛ+*2\(> `yzv^R{„)4Ҧk` (c[&(Rpb>Aa3Wkw^{ݯp4h&Ҟ_F(/~ <1(ą絅}g L͔GnUDbjZر)㋬1 #,x ?*T$cPx1N^Ʒ54ç MF`I;}֚ jo. yFv,tth1 0u<yԹʿ ۝ /gd&?{?49ګ^",oեSmxP\nDުZWZ7s^%d 7ͳȘhV#bWnvRuMO0^;3Pm F2sWytjSޙ]) PurFyG(u{$4\( a#:]4'1P=8x?od Fv%3e1dɢEs 葜XSKĠ3WCڄ/8s!Kl%e=o狲7[9x N!`(9;I-9{1 CbRp])x8Y>"}ޗO*a~Ek'uρdQ^DnT])ϱ.)O2je.^LJ/Z?kVVS3cwB$kXp`\`}"$b٥92!B KZ6É<;Y#T/Mc0k 0|pO  ykHt$K" mܒJRTFp3Iv[چ@c}ciLr>v3NkCBt愿;akMxhNCqMOԄOfL JU&fD!iZY/*X泐"18H _Ԑ=}E2@"=ꓯU܎N*u Ԝ)(k" A.7';N,p/n:Q(.Ik"Ef >[4 #+OO4uKded0'Rm,,UZ ד.oVD)gk#@!5tUMo/s^FIlF r(|E%`|QN%h;Fh<7LjwA$s¬ΣaUH{ߡEM D 5$Zs6;Bb>Y\ۣtY|:Y/]= u"$Vuf+TTϦ :ws&g3%L,L: yz#lL*Yݸ7̍5,ҽA:]܆ZOG9)Eu1nX珼f-*apj\!$3aCbg.sAKэjN?KIf~{¬D{5װaXPo_z,/0 Ü(\`eX-RQ4]Y ojO8KHx!Ã7R(ft3Ԑ*Tj\tO*/]!|%[Su<84 :hۃy []EOy(vҡze_g[i [kgt|zF2usHn3s [Rħ<h GOzSso+_[y$@p" 'bʩ 9VOh1s76^1K]{Ow{3'+\O+Pu9`+k"til1Mx*o^, ]lZ G(򧀹͐}_'jȜQ*7<6b4%: ] \d̡9UKHqQW5 WZ w(K2L9 * aY`/򂨬yKV<:?4C"Aev& HƜPY,t+PZ`_]]xswCH <>1I!G=mQMuBTXC?ϕ.-.gݛz+8r u(7C6XZk [%r[Xȃ$ts 9B486:j_C3YYrfc֊TΞ$/YPY19"{%tڿXrzQ" s Y}4!DW MZt<ܪPtŽ8X֑2Iq} @_kJS i]| H('/,6?FKoI'Mkllt>[o,6lw:sv{R_nZ7@\Bϕ$<ِsd&_o*!A) }ܺqtcrmfEPNc5=!_){B449 /j&q^XAACV^jOѦ8#`0U ŽpC،kCӏ cآՖHjntO,͂kX1j"wArgGT\,w8񚈕( [JX5/c[Dtqѯ? I֨f@'8f_Fҕc&",+&YE|,$@m 1 tT?TC>k.\Ga-5(o]˦$^XAraD=zR$#VmF/ɶzR rCuG쵺1/ؾbxD6|f@jQ% i9 !u~Ugdg'-Qfosü;?qy2/)e{ >.1`R%0t8#iQ[x_"xӉyrE)+9C&];gj>LF]uX`/1(fuK놯 ٲ0"5ć{\$]㿲8P WD2 Ys~B`S 7- C|HiϦ< U38_u^K;`eXI3ILM[z:C;NJzLn,A MC(GQB syOKrogM~$}Y84\QOrvw(|vŦ`jczXJYJ+H;|c}щ!L97%kmnf\a&q)rx@!hu`4 k9R4T}~ p rL’5݌ 0.Ӽ/g-vҩ^?=ir⎇mʺ^@V0~8U1!8%^S͑{@M^]b:.36q+<0(8q^sYr*RŶz7A\ d$&o1.l2fy <@%13OgqW.>incs!~(W4d]NRrfd`iޮ>7Sbk O~1w8e_jӳ v8SS$}y>TbF:= _K}}8.m;(e`T: 93 j{pcQf.-d}(pȦ*r^B(YIY?VObgTMI? ]2?Aah𢱭Z~J i݅¯L_Kob#FE@-36OW(c–2u0gzGOsBl!c'ƨ_*,cO#x!@1#ȟkSrpQ=i'6 &9 \(F:WEb+R/g,T`6mfk ~vgVNﻌrs ?rD1RMԅӰ(JgUI=Mٴ&XmۋA Fu Gmg;EdW ,YQ2ĆٳXp|fhP..1T<-CDP|vu;W-EFA<4Li8iw'0oh#e9# 0Q\cS #SDF9_lQ0EXQLMqbcpSB1YJw+Fc5z܅^b+/MI5O܂f,$l{d3GZ-`]$eŒAMˡ%!}UCIy]lӧKA:aT.Yo7w▚NZa1f0@>U/(bz>3}+h-wb_5zovd@wWCban *c!4(A\ѡHrVkZڣ*L3Z~W+YJ~>OI#w6Z./TTkЃu䛔_ʸY ED- w{nb 3KĄǎ9z{=S\K)~dʠQAn o^h;_i-8bxkCIwD⻗>B~iAeP,tMD ΒEu*aicG WXL$lIgɈ4@x-䐯$Шf_5[R{Q\Pj,vhK|&#K,(6)ز &4 o=^ɕIdT^>BAAT Pup)p9ťzk!"U1|lr䚃2657<"̩V`l61%&j3q#NPW5)y#moW]6UhYC?HYpJIpݧێnyoybo? Ik3&WO?9r &MtXgUs FB4*^KI4R.U5'Fk~SKa0`o - ,0k̤@"HЬ?ċfqY1W--8W.wU&dcw S<=˫FсĚ*]߈P㈙>|m's)<) o7rW%EP48nQy529ƚG "=1ۉ%WՃ$ 0 r̺ckKffvsn.Iwn,K_ɢ9bC̸Ѩq Skrܭv߭<>ekX)",Peޔ]/V#V0~˙IxTH Vϭv\M,<8D/ٔnðeZ I2 dKCS;o Z1R5~;fm82ՖҎN*!^ͺ6 #|\^X:K4W`3J5p2 n%|y PY{? Z7Z PهmƋEF1e떞{e1F/{.Q.e@w68|8Oug@(z6qivC.O %ij=pK{ {mo-K#V-W)nDxJF`UUpv;WF{fԢiVJܧZk݈-? ԫ lN+*6)s1 O J?2I ?K6cyc1jT*. N+3"1هKW}&8=r!gM8y%l3~8cu:"zK 8]?r /1󣍐w(VVSk6ޫt]mA1R?MOZUeˋz{@Ȱ^CY”UzNQ3b= ٽp 5G e~nWOfOY[ʌ="?)R q"u"Ec[UrwR-YU*(p[*][99kķ fe?* l\=)Fh9= ttvm Y_F oC@g)$ߡjE5>%)Ю=h qd< iIi9#fY 4(3S$] >_{364j^X0Vʾ%@]Z>ݸ~1K¹;T+gBA'x_G'('?"McXMW3j+@¹]p`U.CS85eQrH$5|KƂDZHpv$֗ވiYGN7(1Aˢb<#k7LdثZfWEn%K!#0Ҳ>5"KjYS_आObu3jZI)MTDTi7%H1t7,D Zu;~̶3GcC63Q Q_{SR*F+f߉ ˎI\© 8k6B}"&Ag\;4WeE9/XasTs`<~F34Yers^y7el}y20;A>*hF\NrWе/tK2tFYҏhEHO_cJm`(kgsݑG1\p X#PAQ@>\ VDp:,X^b4ꆗf(֬' A[ cwI{,daR?7#iaQҤ>9ZqC9,9z n gP ؒIZ G%YoqdOҕ^5WjjT=T"r}Rȶ+[ʬ< S gJ)pzD䍘5usڻ_N!Š=;kh5m(_1ٙs_ E n- ejئd ȅI3%.̄ULPl ҫz/ԮBv:v4Oj.&$ 18qnLK#+i2. ʳ,P+;q l׌mo6CjoZ+k4_ "zL;(߄4p8ġ[Cj-p8-ѫiӻh`fHOSTJ*B?hVC3%Mֻds'k{o 1Z>s"R^R)QXBqt-*0KYzVxf*aH>WC  PX|DςSqh%E~}88=N?ClvEEN(`.A6_ۦH!-'euAX=`;^ESz@N5fjk*F@42a`6nqxs; vk xڔ'm,w9Y s(cXnC ^ ,&Q?%|= DuKUٌP߁/I*!B\y%MZ ߷l?`0"`~js!6 Wg)!FI\*6JFW k$L$BXz Lq?Z%|p@,kMU4^iXjcQ~4"#KiȄڪ{i|jmcD8辇iU]Pv&5}T^~9\@o^gIz9] hvAgc&&:y}ךN;e}Ձ!Hv^e=ٿN 2qB[Ӟ]@;(PI3 iU5V5CCI'1mౕ"yS}G[WfnpHf4F~PۜP`ċPw$lWҺ2f,QQ4vZ:V-4("1IdW_HL6׻ [M͛( sP.] 3qF_]Lk&Z%.6錝#8{kst_Z8d;ힼwSo&4*xA7j%ؘ z1b^;R8ؖǧiÇPmA>ߵJcD+IB5.{G䕏 kS2/ 񬖱.qͅ( {o, Y?3|LN+E@#s0 lb LR;Y'w2y$6(AeYڒI@E/%#:s&`t_@#!V= W5CTJ1<#,4~beV,^Aǀ+ 7M }8^7`j/ 飻5+߆mw/iCa~\.eQ1TZ#[.vԸdO5L뷋C}W4 ;+w5=]|-$u[WyeQ.[և5QmQűJ &&E )43+ '8 RAڊtX6T½ii~ֈN r-o{鵚hd*y'90{ y 22@3h3G=S`}CɔNMmTvZP"s*g9I#`w{\Ck+D`uC^0k!XaԄ 8,oB]nO~烬+:7B"6Lv%K6V28Y<]Ɗ|i^ %(6+d4VX*vBl:Jt;Ow_Q~P)(K?=odF[=pi /lmPwNb?Qj7H٤Go[oI )v@' 8~+'뷟;:dLrI%m>B%{l^0™oyvKWHʭպ@i?k;ZJ+S0eA-6ֿM :ـpk>9VL Zd\7|k1Cqki RxxSԕR #01n<MyZ9nEe/$<lw0up֍OB5G7~Ҩ7kq[+g?KG՜:M=. #.W6hSЈOE'miKr*Ӱ#oU.ΉF7F-hXJ{;DbE݇+8jw}=UHvulT=ZՖRmhOY^~| !ءAv} Yx"~_ ,/*-?'cWkdAMmU!sTKUajiW2K8tW}g]iW%%:{,KըՂ3~D&y=@soG~>ayJ7OLF.D+SH_r,pwŃ6n 4OkZX{-ds1t c+lH6{~IFs}3,}P&fȮw׸x /~tvvޥS[ o`'d]e*+ӇMAoBwp)twD#%Md{S$i F^y.1V7&AXcobrޟRĵr01O T8kזbOlm2B<$~Bd0Y ?wFNԍyOseTΡW@Ot1U_:Mm1zR:H yXoM:2(RZDPi&GY?%JXc6)IO}n/ 3GcXdL_㒞ˢb"sWUPi˸ T[[nuWK_k=B!:vS,J(<-#ǩ2NwM1r(@*hH۫ק6 ;Jh"v< ;KĤ|3.FZ-s `owbek=V 3e"D?]A$P6 d٪e;6dk@DW'BM)Z۩JBS0((*icTG*yQn.XJ{-<ܟ:iqW CA2~";ؿ5-jPOui /VxSу&)`mo)M. A}$r,W>yaBfot@, ۏɮ-oyM^aN6 uy)}h5S3 8x75UJ#3dhhA=\tA=2ʮ_(~04=aq~Pl5g㨔rzO!OZUkZ|ǁR,U]=:C6CP² Ze16Posz3k[&4#?77% { /_{VV"씇tM`)^_VmOUXJkPT#K?R{ӡ͓"!SG}pl:g `+0.vj˹sEFJlу&}4  CR{cZ-maF.vͬ)V$ۃ#n *no oG-LɪK͂;p3üiEd{Jح[,g SY=asfJmxf| +Dɝ"LzM冞nM|ɟ:O16ꇰNĴN (lnSj*qjDbcXف=[4hvӛRp7qY_^4Te -L$eIgHM-@b* 0?jGFT'CGԑvϒ/s")7~x3FܔxXَ,{XӍ:w}8 Bt;8X@%q3£Ym*<ƶvV"5F;| ̏Jx 0 BS$tΆ'l y*o/fm|@mFMܑ wpԡl1b J)6F$FG@pMa3j8|oFN=f+l- p6>N Iz=WadzjTc1,ʵil9g(؊Oyrr<.^n ]lDRg)wv;*1?H0D3ӊ~]`\ܐ/%K7}|W(6~2 mA]Zlza0_?KhN6#j\ҋ}%~v쑴>h㮵?97ўid4svH!Zxz)O붲LBRK\21^X Jq%5YNMTHȫ|PXq<0}D$&,7li;f&EԨy|pI-8pY*B\'x--ΌONS̟S>(4 sbU#qs1Qx[3r^z`S6G[m0_{nyiY·$ifY> {h)A^z?83ȾMTojMx7U.Ih79#AuUY$):ň$}tqf(,tp.7WYYSˎEOSi 7`Lyiз/a=6"wb2[l$NGeYph0ܨ4id F$ԓ|V̋hMk4-k%=ѽFP*<cazV[˶xH}B3Y"dD/bl_ż18Idn9QUÎY* Wt5b:g>[zяk:#N~Pc}"X'VdT,2ZCJrXmqt&u Ҋӂ(1)$=o)SwoZw2:!ƓX96LN'VG?ڡ@0@Ơ0o.K$#4x)(1NҎ؊^AKP] @#M̔LƂpwو Q~1D̃B)vD_R@Ҋx`d(k<$w,}ѷ8@QS]\G k.@s6ۦlUԜj׮䛼FQ[`~&=h\Hڣmr^S(|]?6I*o=iIN-^`~c8o *bXӊi6&VKH.!!wԆWI#V.{~dH3b4e2*9\,,ほ=ʝJO FjdN1Cdۃ)@K{ 4>K%G)8{Fm%m,ʂӸlǷ璉' ̌;%u3V-$`nL/. ׄZ^Y`uW.B%\m4jLU2,(t!U,pt'm;i 'K~G=Gj$ky]w2N͠N'oN,ߐÉP+FX#6)xbnO:*<io:CǪήӛ.RVoq'U)z7ʼ3w]֭-cbKgt?cw[Ϊ^YD"heCV`|Jfkoϊϖ@A6υLMyW7Zw89mNWqy/EMl:b=\?`,Zg; \G簼gtJ8Wb-KEzAx! _“HZ#RGK:mcd2m1~`( :2;7/Y9C^ta&jwQSXڲ K}]:bDPoʸRLnAg%)VsjQ {fݜWi\v|Fp~8N(~?b<̳fRyi=ŦHxt2cKg/؃=R%/[ jЦܗWFQZ>Kc(yY&);rK9K3qBRݎ)L]$:8URxT;YGJ[GEV.\ :*[wtq?kFH4MU?CaZf7q8Cvk`Zb6>@җ_?[J=_dWgM8Ĝ<OO&z)n@]7?37db.~G_ P͉$F;yAY<2&3n"XRnm*M{vd.r UeԷ%^` z{ T#\4?XPƾ0.60] 3HOC \厒Rq^L* dӏ"Euᗆ1Oo ɫ60G_di^y@~8 z3ŌIמoIZ_%gyi1ƂjpY˓E'WKEy0[dKX<- ̑I8u '@-+톱ͤQ+H86b4KGXwli+cVMWZ #hl%Й͊aIN46/qu݊d*$sJ o`DRb/2l $壕)I (ۚt!bzF{u#@(bఁF_1S[/8|^jſf؏+أƻʋzibf*+'th/eVʄbNJH.hLJ0{poF%[h4Ll>& E{Ʋg2<5O*κ+U].GtOꣴ ,(CXFD!Jڡ.9xH8lvkF}6LՊ2 8^B z0@𷡽,9!U8^dj<PJ1g~($AZ22_p/\fiVS2?ga6/3Ě:kiicG/7 z= ֩RpJBSEBLA 1[iD$JzϣHE "V 0Ĩ+-n#NKq+s2޽th7U&]F1=B%O+Jig|4xGF %h^$w@dhUűDA 8 tK!ܤ<ߪ.<m0M7JvcưAh<p1IXY#}"a|ZuniT&v+$P-Dzb dfs$ܡD=/A>$_-#ޡm/{!3. -UVbZUp`kj8yH!;Zp9>O# 'ߔ OB}O m҈Rc%+4Aء4\/ގ|ܜ\Oh0q!:G)e'E e5&3uX zC7>WRr3 eORG&ǖ7'8w|0_AP$xXQ\WO0Ai+x#&uNW~]Ke KHd@Pr6M#Cq2DwYjĈo怛2^ozF(WiA՚u ܝbI Mߘ̦-_*,j跃_\7bZC$4t]}Q7 kDt-LrA0iNз5| @nHoPx$jl {+Z>aѽa)+ [FZǪ-Jkj ?\i@:`X)&%wLK'|s,e?\'UGgL{-~| J8&b'{pCPgy4! OV#'x]U&NmJLfsJ-:UL ~ip>DRae7SD8K*U͔g֔,Ԇd8Ϛiz5gsA` bXUEB5.6'ZzEaѓտ8يhv*vK!o.21ea3&^M&dl{K?xj8xhߣ~_U633FY!YPy?.cjL!Ӈp0@KfD *ۤ)pm,St߇&$t\UEPOgH0T Rmƭ-QW43AM .A1%qܥ" F\cNXT7$q'ӆ0`NRO{USS9gRGF7{(ͶEڧ`/.(-f[ TSz80h$%ѳuAF N<i#/ljwɁl)k \d3dd_O{.kC%3YLl" Ǽ(i4o(R[SD({ V,1#alBqWpCFIv )^>#,~Dك\hU7n!ݫ6?\bc> [/uhvݝjh6 %S vMQ61XBEFB} E(i/=>45ɵF+9z,g