diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php index d696a94..6d0b93b 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php @@ -118,6 +118,13 @@ class SqlContentEntityStorage extends ContentEntityStorageBase implements SqlEnt protected $languageManager; /** + * Whether this storage should use the temporary table mapping. + * + * @var bool + */ + protected $isTemporary = FALSE; + + /** * {@inheritdoc} */ public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { @@ -267,6 +274,31 @@ public function setEntityType(EntityTypeInterface $entity_type) { } /** + * Sets the wrapped table mapping definition. + * + * @param \Drupal\Core\Entity\Sql\TableMappingInterface $table_mapping + * The table mapping. + * + * @internal Only to be used internally by Entity API. Expected to be removed + * by https://www.drupal.org/node/2554235. + */ + public function setTableMapping(TableMappingInterface $table_mapping) { + $this->tableMapping = $table_mapping; + } + + /** + * Changes the temporary state of the storage. + * + * @param bool $temporary + * Whether to use a temporary table mapping or not. + * + * @internal Only to be used internally by Entity API. + */ + public function setTemporary($temporary) { + $this->isTemporary = $temporary; + } + + /** * {@inheritdoc} */ public function getTableMapping(array $storage_definitions = NULL) { @@ -279,8 +311,10 @@ public function getTableMapping(array $storage_definitions = NULL) { // @todo Clean-up this in https://www.drupal.org/node/2274017 so we can // easily instantiate a new table mapping whenever needed. if (!isset($this->tableMapping) || $storage_definitions) { + $table_mapping_class = $this->isTemporary ? TemporaryTableMapping::class : DefaultTableMapping::class; $definitions = $storage_definitions ?: $this->entityManager->getFieldStorageDefinitions($this->entityTypeId); - $table_mapping = new DefaultTableMapping($this->entityType, $definitions); + /** @var \Drupal\Core\Entity\Sql\DefaultTableMapping|\Drupal\Core\Entity\Sql\TemporaryTableMapping $table_mapping */ + $table_mapping = new $table_mapping_class($this->entityType, $definitions); $shared_table_definitions = array_filter($definitions, function (FieldStorageDefinitionInterface $definition) use ($table_mapping) { return $table_mapping->allowsSharedTableStorage($definition); diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php index 85d6fbe..2889f4b 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php @@ -229,6 +229,12 @@ protected function getSchemaFromStorageDefinition(FieldStorageDefinitionInterfac * {@inheritdoc} */ public function requiresEntityDataMigration(EntityTypeInterface $entity_type, EntityTypeInterface $original) { + // Check if the entity type specifies that data migration is being handled + // elsewhere. + if (isset($entity_type->requiresDataMigration) && !$entity_type->requiresDataMigration) { + return FALSE; + } + // If the original storage has existing entities, or it is impossible to // determine if that is the case, require entity data to be migrated. $original_storage_class = $original->getStorageClass(); @@ -1204,10 +1210,14 @@ protected function deleteDedicatedTableSchema(FieldStorageDefinitionInterface $s $deleted = !$this->originalDefinitions; $table_mapping = $this->storage->getTableMapping(); $table_name = $table_mapping->getDedicatedDataTableName($storage_definition, $deleted); - $this->database->schema()->dropTable($table_name); + if ($this->database->schema()->tableExists($table_name)) { + $this->database->schema()->dropTable($table_name); + } if ($this->entityType->isRevisionable()) { - $revision_name = $table_mapping->getDedicatedRevisionTableName($storage_definition, $deleted); - $this->database->schema()->dropTable($revision_name); + $revision_table_name = $table_mapping->getDedicatedRevisionTableName($storage_definition, $deleted); + if ($this->database->schema()->tableExists($revision_table_name)) { + $this->database->schema()->dropTable($revision_table_name); + } } $this->deleteFieldSchemaData($storage_definition); } diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchemaConverter.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchemaConverter.php new file mode 100644 index 0000000..0ff9db0 --- /dev/null +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchemaConverter.php @@ -0,0 +1,453 @@ +entityTypeId = $entity_type_id; + $this->entityTypeManager = $entity_type_manager; + $this->entityDefinitionUpdateManager = $entity_definition_update_manager; + $this->lastInstalledSchemaRepository = $last_installed_schema_repository; + $this->installedStorageSchema = $installed_storage_schema; + $this->database = $database; + } + + /** + * Converts an entity type with existing data to be revisionable. + * + * This process does the following tasks: + * - creates the schema from scratch with the new revisionable entity type + * definition (i.e. the current definition of the entity type from code) + * using temporary table names; + * - loads the initial entity data by using the last installed entity and + * field storage definitions; + * - saves the entity data to the temporary tables; + * - at the end of the process: + * - deletes the original tables and replaces them with the temporary ones + * that hold the new (revisionable) entity data; + * - updates the installed entity schema data; + * - updates the entity type definition in order to trigger the + * \Drupal\Core\Entity\EntityTypeEvents::UPDATE event; + * - updates the field storage definitions in order to mark the + * revisionable ones as such. + * + * In case of an error during the entity save process, the temporary tables + * are deleted and the original entity type and field storage definitions are + * restored. + * + * @param array $sandbox + * The sandbox array from a hook_update_N() implementation. + * @param string[] $fields_to_update + * (optional) An array of field names that should be converted to be + * revisionable. Note that the 'langcode' field, if present, is updated + * automatically. Defaults to an empty array. + * + * @throws \Exception + * Re-throws any exception raised during the update process. + */ + public function convertToRevisionable(array &$sandbox, array $fields_to_update = []) { + // If 'progress' is not set, then this will be the first run of the batch. + if (!isset($sandbox['progress'])) { + // Store the original entity type and field definitions in the $sandbox + // array so we can use them later in the update process. + $this->collectOriginalDefinitions($sandbox); + + // Create a temporary environment in which the new data will be stored. + $this->createTemporaryDefinitions($sandbox, $fields_to_update); + + // Create the updated entity schema using temporary tables. + /** @var \Drupal\Core\Entity\Sql\SqlContentEntityStorage $storage */ + $storage = $this->entityTypeManager->getStorage($this->entityTypeId); + $storage->setTemporary(TRUE); + $storage->setEntityType($sandbox['temporary_entity_type']); + $storage->onEntityTypeCreate($sandbox['temporary_entity_type']); + } + + // Copy over the existing data to the new temporary tables. + $this->copyData($sandbox); + + // If the data copying has finished successfully, we can drop the temporary + // tables and call the appropriate update mechanisms. + if ($sandbox['#finished'] == 1) { + $this->entityTypeManager->useCaches(FALSE); + $actual_entity_type = $this->entityTypeManager->getDefinition($this->entityTypeId); + + // Rename the original tables so we can put them back in place in case + // anything goes wrong. + foreach ($sandbox['original_table_mapping']->getTableNames() as $table_name) { + $old_table_table = TemporaryTableMapping::getTempTableName($table_name, 'old_'); + $this->database->schema()->renameTable($table_name, $old_table_table); + } + + // Put the new tables in place and update the entity type and field + // storage definitions. + try { + $storage = $this->entityTypeManager->getStorage($this->entityTypeId); + $storage->setEntityType($actual_entity_type); + $storage->setTemporary(FALSE); + $actual_table_names = $storage->getTableMapping()->getTableNames(); + + $table_name_mapping = []; + foreach ($actual_table_names as $new_table_name) { + $temp_table_name = TemporaryTableMapping::getTempTableName($new_table_name); + $table_name_mapping[$temp_table_name] = $new_table_name; + $this->database->schema()->renameTable($temp_table_name, $new_table_name); + } + + // Rename the tables in the cached entity schema data. + $entity_schema_data = $this->installedStorageSchema->get($this->entityTypeId . '.entity_schema_data', []); + foreach ($entity_schema_data as $temp_table_name => $schema) { + if (isset($table_name_mapping[$temp_table_name])) { + $entity_schema_data[$table_name_mapping[$temp_table_name]] = $schema; + unset($entity_schema_data[$temp_table_name]); + } + } + $this->installedStorageSchema->set($this->entityTypeId . '.entity_schema_data', $entity_schema_data); + + // Rename the tables in the cached field schema data. + foreach ($sandbox['updated_storage_definitions'] as $storage_definition) { + $field_schema_data = $this->installedStorageSchema->get($this->entityTypeId . '.field_schema_data.' . $storage_definition->getName(), []); + foreach ($field_schema_data as $temp_table_name => $schema) { + if (isset($table_name_mapping[$temp_table_name])) { + $field_schema_data[$table_name_mapping[$temp_table_name]] = $schema; + unset($field_schema_data[$temp_table_name]); + } + } + $this->installedStorageSchema->set($this->entityTypeId . '.field_schema_data.' . $storage_definition->getName(), $field_schema_data); + } + + // Instruct the entity schema handler that data migration has been + // handled already and update the entity type. + $actual_entity_type->requiresDataMigration = FALSE; + $this->entityDefinitionUpdateManager->updateEntityType($actual_entity_type); + + // Update the field storage definitions. + $this->updateFieldStorageDefinitionsToRevisionable($actual_entity_type, $sandbox['original_storage_definitions'], $fields_to_update); + } + catch (\Exception $e) { + // Something went wrong, bring back the original tables. + foreach ($sandbox['original_table_mapping']->getTableNames() as $table_name) { + // We are in the 'original data recovery' phase, so we need to be sure + // that the initial tables can be recovered properly. + if ($this->database->schema()->tableExists($table_name)) { + $this->database->schema()->dropTable($table_name); + } + + $old_table_table = TemporaryTableMapping::getTempTableName($table_name, 'old_'); + $this->database->schema()->renameTable($old_table_table, $table_name); + } + + // Re-throw the original exception. + throw $e; + } + } + } + + /** + * Loads entities from the original storage and saves them to a temporary one. + * + * @param array &$sandbox + * The sandbox array from a hook_update_N() implementation. + * + * @throws \Drupal\Core\Entity\EntityStorageException + * Thrown in case of an error during the entity save process. + */ + protected function copyData(array &$sandbox) { + /** @var \Drupal\Core\Entity\Sql\TemporaryTableMapping $temporary_table_mapping */ + $temporary_table_mapping = $sandbox['temporary_table_mapping']; + $temporary_entity_type = $sandbox['temporary_entity_type']; + $original_table_mapping = $sandbox['original_table_mapping']; + $original_entity_type = $sandbox['original_entity_type']; + + $original_base_table = $original_entity_type->getBaseTable(); + + $revision_id_key = $temporary_entity_type->getKey('revision'); + + // If 'progress' is not set, then this will be the first run of the batch. + if (!isset($sandbox['progress'])) { + $sandbox['progress'] = 0; + $sandbox['current_id'] = 0; + $sandbox['max'] = $this->database->select($original_base_table) + ->countQuery() + ->execute() + ->fetchField(); + } + + $id = $original_entity_type->getKey('id'); + + // Define the step size. + $steps = Settings::get('entity_update_batch_size', 50); + + // Get the next entity IDs to migrate. + $entity_ids = $this->database->select($original_base_table) + ->fields($original_base_table, [$id]) + ->condition($id, $sandbox['current_id'], '>') + ->orderBy($id, 'ASC') + ->range(0, $steps) + ->execute() + ->fetchAllKeyed(0, 0); + + /** @var \Drupal\Core\Entity\Sql\SqlContentEntityStorage $storage */ + $storage = $this->entityTypeManager->getStorage($temporary_entity_type->id()); + $storage->setEntityType($original_entity_type); + $storage->setTableMapping($original_table_mapping); + + $entities = $storage->loadMultiple($entity_ids); + + // Now inject the temporary entity type definition and table mapping in the + // storage and re-save the entities. + $storage->setEntityType($temporary_entity_type); + $storage->setTableMapping($temporary_table_mapping); + + foreach ($entities as $entity_id => $entity) { + try { + // Set the revision ID to be same as the entity ID. + $entity->set($revision_id_key, $entity_id); + + // Treat the entity as new in order to make the storage do an INSERT + // rather than an UPDATE. + $entity->enforceIsNew(TRUE); + + // Finally, save the entity in the temporary storage. + $storage->save($entity); + } + catch (\Exception $e) { + // In case of an error during the save process, we need to roll back the + // original entity type and field storage definitions and clean up the + // temporary tables. + $this->restoreOriginalDefinitions($sandbox); + + foreach ($temporary_table_mapping->getTableNames() as $table_name) { + $this->database->schema()->dropTable($table_name); + } + + // Re-throw the original exception with a helpful message. + throw new EntityStorageException("The entity update process failed while processing the entity {$original_entity_type->id()}:$entity_id.", $e->getCode(), $e); + } + + $sandbox['progress']++; + $sandbox['current_id'] = $entity_id; + } + + // If we're not in maintenance mode, the number of entities could change at + // any time so make sure that we always use the latest record count. + $sandbox['max'] = $this->database->select($original_base_table) + ->countQuery() + ->execute() + ->fetchField(); + + $sandbox['#finished'] = empty($sandbox['max']) ? 1 : ($sandbox['progress'] / $sandbox['max']); + } + + /** + * Updates field definitions to be revisionable. + * + * @param \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type + * A content entity type definition. + * @param \Drupal\Core\Field\FieldStorageDefinitionInterface[] $storage_definitions + * An array of field storage definitions. + * @param array $fields_to_update + * (optional) An array of field names for which to enable revision support. + * Defaults to an empty array. + * @param bool $update_cached_definitions + * (optional) Whether to update the cached field storage definitions in the + * entity definition update manager. Defaults to TRUE. + * + * @return \Drupal\Core\Field\FieldStorageDefinitionInterface[] + * An array of updated field storage definitions. + */ + protected function updateFieldStorageDefinitionsToRevisionable(ContentEntityTypeInterface $entity_type, array $storage_definitions, array $fields_to_update = [], $update_cached_definitions = TRUE) { + $updated_storage_definitions = array_map(function ($storage_definition) { return clone $storage_definition; }, $storage_definitions); + + // Update the 'langcode' field manually, as it is configured in the base + // content entity field definitions. + if ($entity_type->hasKey('langcode')) { + $fields_to_update = array_merge([$entity_type->getKey('langcode')], $fields_to_update); + } + + foreach ($fields_to_update as $field_name) { + if (!$updated_storage_definitions[$field_name]->isRevisionable()) { + $updated_storage_definitions[$field_name]->setRevisionable(TRUE); + + if ($update_cached_definitions) { + $this->entityDefinitionUpdateManager->updateFieldStorageDefinition($updated_storage_definitions[$field_name]); + } + } + } + + // Add the revision ID field. + $revision_field = BaseFieldDefinition::create('integer') + ->setName($entity_type->getKey('revision')) + ->setTargetEntityTypeId($entity_type->id()) + ->setTargetBundle(NULL) + ->setLabel(new TranslatableMarkup('Revision ID')) + ->setReadOnly(TRUE) + ->setSetting('unsigned', TRUE); + + if ($update_cached_definitions) { + $this->entityDefinitionUpdateManager->installFieldStorageDefinition($revision_field->getName(), $entity_type->id(), $entity_type->getProvider(), $revision_field); + } + + $updated_storage_definitions[$entity_type->getKey('revision')] = $revision_field; + + return $updated_storage_definitions; + } + + /** + * Collects the original definitions of an entity type and its fields. + * + * @param array &$sandbox + * A sandbox array from a hook_update_N() implementation. + */ + protected function collectOriginalDefinitions(array &$sandbox) { + $original_entity_type = $this->lastInstalledSchemaRepository->getLastInstalledDefinition($this->entityTypeId); + $original_storage_definitions = $this->lastInstalledSchemaRepository->getLastInstalledFieldStorageDefinitions($this->entityTypeId); + + /** @var \Drupal\Core\Entity\Sql\SqlContentEntityStorage $storage */ + $storage = $this->entityTypeManager->getStorage($this->entityTypeId); + $storage->setEntityType($original_entity_type); + $original_table_mapping = $storage->getTableMapping($original_storage_definitions); + + $sandbox['original_entity_type'] = $original_entity_type; + $sandbox['original_storage_definitions'] = $original_storage_definitions; + $sandbox['original_table_mapping'] = $original_table_mapping; + + $sandbox['original_entity_schema_data'] = $this->installedStorageSchema->get($this->entityTypeId . '.entity_schema_data', []); + foreach ($original_storage_definitions as $storage_definition) { + $sandbox['original_field_schema_data'][$storage_definition->getName()] = $this->installedStorageSchema->get($this->entityTypeId . '.field_schema_data.' . $storage_definition->getName(), []); + } + } + + /** + * Restores the entity type, field storage definitions and their schema data. + * + * @param array $sandbox + * The sandbox array from a hook_update_N() implementation. + */ + protected function restoreOriginalDefinitions(array $sandbox) { + $original_entity_type = $sandbox['original_entity_type']; + $original_storage_definitions = $sandbox['original_storage_definitions']; + $original_entity_schema_data = $sandbox['original_entity_schema_data']; + $original_field_schema_data = $sandbox['original_field_schema_data']; + + $this->lastInstalledSchemaRepository->setLastInstalledDefinition($original_entity_type); + $this->lastInstalledSchemaRepository->setLastInstalledFieldStorageDefinitions($original_entity_type->id(), $original_storage_definitions); + + $this->installedStorageSchema->set($original_entity_type->id() . '.entity_schema_data', $original_entity_schema_data); + foreach ($original_field_schema_data as $field_name => $field_schema_data) { + $this->installedStorageSchema->set($original_entity_type->id() . '.field_schema_data.' . $field_name, $field_schema_data); + } + } + + /** + * Creates temporary entity type, field storage and table mapping objects. + * + * @param array &$sandbox + * A sandbox array from a hook_update_N() implementation. + * @param string[] $fields_to_update + * (optional) An array of field names that should be converted to be + * revisionable. Note that the 'langcode' field, if present, is updated + * automatically. Defaults to an empty array. + */ + protected function createTemporaryDefinitions(array &$sandbox, array $fields_to_update) { + // Make sure to get the latest entity type definition from code. + $this->entityTypeManager->useCaches(FALSE); + $actual_entity_type = $this->entityTypeManager->getDefinition($this->entityTypeId); + + $temporary_entity_type = clone $actual_entity_type; + $temporary_entity_type->set('base_table', TemporaryTableMapping::getTempTableName($temporary_entity_type->getBaseTable())); + $temporary_entity_type->set('revision_table', TemporaryTableMapping::getTempTableName($temporary_entity_type->getRevisionTable())); + if ($temporary_entity_type->isTranslatable()) { + $temporary_entity_type->set('data_table', TemporaryTableMapping::getTempTableName($temporary_entity_type->getDataTable())); + $temporary_entity_type->set('revision_data_table', TemporaryTableMapping::getTempTableName($temporary_entity_type->getRevisionDataTable())); + } + + /** @var \Drupal\Core\Entity\Sql\SqlContentEntityStorage $storage */ + $storage = $this->entityTypeManager->getStorage($this->entityTypeId); + $storage->setTemporary(TRUE); + $storage->setEntityType($temporary_entity_type); + + $updated_storage_definitions = $this->updateFieldStorageDefinitionsToRevisionable($temporary_entity_type, $sandbox['original_storage_definitions'], $fields_to_update, FALSE); + $temporary_table_mapping = $storage->getTableMapping($updated_storage_definitions); + + $sandbox['temporary_entity_type'] = $temporary_entity_type; + $sandbox['temporary_table_mapping'] = $temporary_table_mapping; + $sandbox['updated_storage_definitions'] = $updated_storage_definitions; + } + +} diff --git a/core/lib/Drupal/Core/Entity/Sql/TemporaryTableMapping.php b/core/lib/Drupal/Core/Entity/Sql/TemporaryTableMapping.php new file mode 100644 index 0000000..c53e660 --- /dev/null +++ b/core/lib/Drupal/Core/Entity/Sql/TemporaryTableMapping.php @@ -0,0 +1,46 @@ + 48) { + $short_table_name = substr($table_name, 0, 34); + $table_hash = substr(hash('sha256', $table_name), 0, 10); + + $tmp_table_name = $prefix . $short_table_name . $table_hash; + } + return $tmp_table_name; + } + +} diff --git a/core/modules/system/src/Tests/Entity/EntityDefinitionTestTrait.php b/core/modules/system/src/Tests/Entity/EntityDefinitionTestTrait.php index 7fcabd7..3b1e7bd 100644 --- a/core/modules/system/src/Tests/Entity/EntityDefinitionTestTrait.php +++ b/core/modules/system/src/Tests/Entity/EntityDefinitionTestTrait.php @@ -37,6 +37,7 @@ protected function updateEntityTypeToRevisionable() { $keys = $entity_type->getKeys(); $keys['revision'] = 'revision_id'; $entity_type->set('entity_keys', $keys); + $entity_type->set('revision_table', 'entity_test_update_revision'); $this->state->set('entity_test_update.entity_type', $entity_type); } @@ -50,6 +51,7 @@ protected function updateEntityTypeToNotRevisionable() { $keys = $entity_type->getKeys(); unset($keys['revision']); $entity_type->set('entity_keys', $keys); + $entity_type->set('revision_table', NULL); $this->state->set('entity_test_update.entity_type', $entity_type); } @@ -87,6 +89,24 @@ protected function updateEntityTypeToNotTranslatable() { } /** + * Updates the 'entity_test_update' entity type to revisionable and + * translatable. + */ + protected function updateEntityTypeToRevisionableAndTranslatable() { + $entity_type = clone $this->entityManager->getDefinition('entity_test_update'); + + $keys = $entity_type->getKeys(); + $keys['revision'] = 'revision_id'; + $entity_type->set('entity_keys', $keys); + $entity_type->set('translatable', TRUE); + $entity_type->set('data_table', 'entity_test_update_data'); + $entity_type->set('revision_table', 'entity_test_update_revision'); + $entity_type->set('revision_data_table', 'entity_test_update_revision_data'); + + $this->state->set('entity_test_update.entity_type', $entity_type); + } + + /** * Adds a new base field to the 'entity_test_update' entity type. * * @param string $type @@ -203,7 +223,7 @@ protected function removeBundleField() { */ protected function addEntityIndex() { $indexes = [ - 'entity_test_update__new_index' => ['name', 'user_id'], + 'entity_test_update__new_index' => ['name', 'test_single_property'], ]; $this->state->set('entity_test_update.additional_entity_indexes', $indexes); } diff --git a/core/modules/system/src/Tests/Entity/Update/SqlContentEntityStorageSchemaConverterTest.php b/core/modules/system/src/Tests/Entity/Update/SqlContentEntityStorageSchemaConverterTest.php new file mode 100644 index 0000000..ec993da --- /dev/null +++ b/core/modules/system/src/Tests/Entity/Update/SqlContentEntityStorageSchemaConverterTest.php @@ -0,0 +1,256 @@ +entityManager = \Drupal::entityManager(); + $this->entityDefinitionUpdateManager = \Drupal::entityDefinitionUpdateManager(); + $this->lastInstalledSchemaRepository = \Drupal::service('entity.last_installed_schema.repository'); + $this->installedStorageSchema = \Drupal::keyValue('entity.storage_schema.sql'); + $this->state = \Drupal::state(); + } + + /** + * {@inheritdoc} + */ + protected function setDatabaseDumpFiles() { + $this->databaseDumpFiles = [ + __DIR__ . '/../../../../tests/fixtures/update/drupal-8.0.0-rc1-filled.standard.entity_test_update_mul.php.gz', + __DIR__ . '/../../../../tests/fixtures/update/drupal-8.entity-test-schema-converter-enabled.php', + ]; + } + + /** + * Tests the conversion of an entity type to revisionable. + */ + public function testMakeRevisionable() { + // Check that entity type is not revisionable prior to running the update + // process. + $entity_test_update = $this->lastInstalledSchemaRepository->getLastInstalledDefinition('entity_test_update'); + $this->assertFalse($entity_test_update->isRevisionable()); + + // Make the entity type revisionable and translatable and run the updates. + $this->updateEntityTypeToRevisionableAndTranslatable(); + + $this->runUpdates(); + + /** @var \Drupal\Core\Entity\EntityTypeInterface $entity_test_update */ + $entity_test_update = $this->lastInstalledSchemaRepository->getLastInstalledDefinition('entity_test_update'); + $this->assertTrue($entity_test_update->isRevisionable()); + + /** @var \Drupal\Core\Entity\Sql\SqlEntityStorageInterface $storage */ + $storage = \Drupal::entityTypeManager()->getStorage('entity_test_update'); + $this->assertEqual(count($storage->loadMultiple()), 102, 'All test entities were found.'); + + // Check that each field value was copied correctly to the revision tables. + for ($i = 1; $i <= 102; $i++) { + /** @var \Drupal\Core\Entity\ContentEntityInterface $revision */ + $revision = $storage->loadRevision($i); + + $this->assertEqual($i, $revision->id()); + $this->assertEqual($i, $revision->getRevisionId()); + + $this->assertEqual($i . ' - test single property', $revision->test_single_property->value); + + $this->assertEqual($i . ' - test multiple properties - value1', $revision->test_multiple_properties->value1); + $this->assertEqual($i . ' - test multiple properties - value2', $revision->test_multiple_properties->value2); + + $this->assertEqual($i . ' - test single property multiple values 0', $revision->test_single_property_multiple_values->value); + $this->assertEqual($i . ' - test single property multiple values 1', $revision->test_single_property_multiple_values[1]->value); + + $this->assertEqual($i . ' - test multiple properties multiple values - value1 0', $revision->test_multiple_properties_multiple_values[0]->value1); + $this->assertEqual($i . ' - test multiple properties multiple values - value2 0', $revision->test_multiple_properties_multiple_values[0]->value2); + $this->assertEqual($i . ' - test multiple properties multiple values - value1 1', $revision->test_multiple_properties_multiple_values[1]->value1); + $this->assertEqual($i . ' - test multiple properties multiple values - value2 1', $revision->test_multiple_properties_multiple_values[1]->value2); + + $this->assertEqual($i . ' - field test configurable field - value1 0', $revision->field_test_configurable_field[0]->value1); + $this->assertEqual($i . ' - field test configurable field - value2 0', $revision->field_test_configurable_field[0]->value2); + $this->assertEqual($i . ' - field test configurable field - value1 1', $revision->field_test_configurable_field[1]->value1); + $this->assertEqual($i . ' - field test configurable field - value2 1', $revision->field_test_configurable_field[1]->value2); + + $this->assertEqual($i . ' - test entity base field info', $revision->test_entity_base_field_info->value); + + // Do the same checks for translated field values. + $translation = $revision->getTranslation('ro'); + + $this->assertEqual($i . ' - test single property - ro', $translation->test_single_property->value); + + $this->assertEqual($i . ' - test multiple properties - value1 - ro', $translation->test_multiple_properties->value1); + $this->assertEqual($i . ' - test multiple properties - value2 - ro', $translation->test_multiple_properties->value2); + + $this->assertEqual($i . ' - test single property multiple values 0 - ro', $translation->test_single_property_multiple_values[0]->value); + $this->assertEqual($i . ' - test single property multiple values 1 - ro', $translation->test_single_property_multiple_values[1]->value); + + $this->assertEqual($i . ' - test multiple properties multiple values - value1 0 - ro', $translation->test_multiple_properties_multiple_values[0]->value1); + $this->assertEqual($i . ' - test multiple properties multiple values - value2 0 - ro', $translation->test_multiple_properties_multiple_values[0]->value2); + $this->assertEqual($i . ' - test multiple properties multiple values - value1 1 - ro', $translation->test_multiple_properties_multiple_values[1]->value1); + $this->assertEqual($i . ' - test multiple properties multiple values - value2 1 - ro', $translation->test_multiple_properties_multiple_values[1]->value2); + + $this->assertEqual($i . ' - field test configurable field - value1 0 - ro', $translation->field_test_configurable_field[0]->value1); + $this->assertEqual($i . ' - field test configurable field - value2 0 - ro', $translation->field_test_configurable_field[0]->value2); + $this->assertEqual($i . ' - field test configurable field - value1 1 - ro', $translation->field_test_configurable_field[1]->value1); + $this->assertEqual($i . ' - field test configurable field - value2 1 - ro', $translation->field_test_configurable_field[1]->value2); + + $this->assertEqual($i . ' - test entity base field info - ro', $translation->test_entity_base_field_info->value); + } + + // Check that temporary tables have been removed at the end of the process. + $schema = \Drupal::database()->schema(); + foreach ($storage->getTableMapping()->getTableNames() as $table_name) { + $this->assertFalse($schema->tableExists(TemporaryTableMapping::getTempTableName($table_name))); + } + } + + /** + * Tests that a failed "make revisionable" update preserves the existing data. + */ + public function testMakeRevisionableErrorHandling() { + $original_entity_type = $this->lastInstalledSchemaRepository->getLastInstalledDefinition('entity_test_update'); + $original_storage_definitions = $this->lastInstalledSchemaRepository->getLastInstalledFieldStorageDefinitions('entity_test_update'); + + $original_entity_schema_data = $this->installedStorageSchema->get('entity_test_update.entity_schema_data', []); + foreach ($original_storage_definitions as $storage_definition) { + $original_field_schema_data[$storage_definition->getName()] = $this->installedStorageSchema->get('entity_test_update.field_schema_data.' . $storage_definition->getName(), []); + } + + // Check that entity type is not revisionable prior to running the update + // process. + $this->assertFalse($original_entity_type->isRevisionable()); + + // Make the update throw an exception during the entity save process. + \Drupal::state()->set('entity_test_update.throw_exception', TRUE); + + // Since the update process is interrupted by the exception thrown above, + // we can not do the full post update testing offered by UpdatePathTestBase. + $this->checkFailedUpdates = FALSE; + + // Make the entity type revisionable and run the updates. + $this->updateEntityTypeToRevisionableAndTranslatable(); + + $this->runUpdates(); + + // Check that the update failed. + $this->assertRaw('' . t('Failed:') . ''); + + // Check that the last installed entity type definition is kept as + // non-revisionable. + $new_entity_type = $this->lastInstalledSchemaRepository->getLastInstalledDefinition('entity_test_update'); + $this->assertFalse($new_entity_type->isRevisionable(), 'The entity type is kept unchanged.'); + + // Check that the last installed field storage definitions did not change by + // looking at the 'langcode' field, which is updated automatically. + $new_storage_definitions = $this->lastInstalledSchemaRepository->getLastInstalledFieldStorageDefinitions('entity_test_update'); + $langcode_key = $original_entity_type->getKey('langcode'); + $this->assertEqual($original_storage_definitions[$langcode_key]->isRevisionable(), $new_storage_definitions[$langcode_key]->isRevisionable(), "The 'langcode' field is kept unchanged."); + + /** @var \Drupal\Core\Entity\Sql\SqlEntityStorageInterface $storage */ + $storage = \Drupal::entityTypeManager()->getStorage('entity_test_update'); + + // Check that installed storage schema did not change. + $new_entity_schema_data = $this->installedStorageSchema->get('entity_test_update.entity_schema_data', []); + $this->assertEqual($original_entity_schema_data, $new_entity_schema_data); + + foreach ($new_storage_definitions as $storage_definition) { + $new_field_schema_data[$storage_definition->getName()] = $this->installedStorageSchema->get('entity_test_update.field_schema_data.' . $storage_definition->getName(), []); + } + $this->assertEqual($original_field_schema_data, $new_field_schema_data); + + // Check that temporary tables have been removed. + $schema = \Drupal::database()->schema(); + foreach ($storage->getTableMapping()->getTableNames() as $table_name) { + $this->assertFalse($schema->tableExists(TemporaryTableMapping::getTempTableName($table_name))); + } + + // Check that the original tables still exist and their data is intact. + $this->assertTrue($schema->tableExists('entity_test_update')); + $this->assertTrue($schema->tableExists('entity_test_update_data')); + + $base_table_count = \Drupal::database()->select('entity_test_update') + ->countQuery() + ->execute() + ->fetchField(); + $this->assertEqual($base_table_count, 102); + + $data_table_count = \Drupal::database()->select('entity_test_update_data') + ->countQuery() + ->execute() + ->fetchField(); + // There are two records for each entity, one for English and one for + // Romanian. + $this->assertEqual($data_table_count, 204); + + $base_table_row = \Drupal::database()->select('entity_test_update') + ->fields('entity_test_update') + ->condition('id', 1, '=') + ->condition('langcode', 'en', '=') + ->execute() + ->fetchAllAssoc('id'); + $this->assertEqual('843e9ac7-3351-4cc1-a202-2dbffffae21c', $base_table_row[1]->uuid); + + $data_table_table_row = \Drupal::database()->select('entity_test_update_data') + ->fields('entity_test_update_data') + ->condition('id', 1, '=') + ->condition('langcode', 'en', '=') + ->execute() + ->fetchAllAssoc('id'); + $this->assertEqual('1 - test single property', $data_table_table_row[1]->test_single_property); + $this->assertEqual('1 - test multiple properties - value1', $data_table_table_row[1]->test_multiple_properties__value1); + $this->assertEqual('1 - test multiple properties - value2', $data_table_table_row[1]->test_multiple_properties__value2); + $this->assertEqual('1 - test entity base field info', $data_table_table_row[1]->test_entity_base_field_info); + } + +} diff --git a/core/modules/system/tests/fixtures/update/drupal-8.0.0-rc1-filled.standard.entity_test_update.php.gz b/core/modules/system/tests/fixtures/update/drupal-8.0.0-rc1-filled.standard.entity_test_update.php.gz new file mode 100644 index 0000000..a7ecfdc --- /dev/null +++ b/core/modules/system/tests/fixtures/update/drupal-8.0.0-rc1-filled.standard.entity_test_update.php.gz @@ -0,0 +1,472 @@ +Xdrupal-8.0.0-rc1-filled.standard.entity_test_update.php]6 +@'ABIN6 Llz`P$Uִ,9ܝA}tIeU/u=>mv>Wg_0/5NsLh>N}O>E_T`oO^4go4W:Eij_8|!~;>~7qk>T,@[,:Oމi64]ӌY"盢M^w 0t;cA8֎%HC|Zf3]ni#|\.8yC[BY.u&B}[_jXn s!8fl&Ұ36 ~޹ӧj,4:Ii/=KfSk2𷽐Bz-^~KJ +iղ>fjScPN\IS>G0~9ZX?L2hGg{(E@Qq\,l]Eyiw02rIj|9}V]ȩ4JB1rL9:ITJ>}jc=@*#?yۭ6ڰy60;BD{ʄ93qvJϼ?fΞc3䢨z|mRԦR{ڀs7`<y7:sn 1BR9a\MT!c❾/.L t2x| C6E]*X +e9&-] :@GS|gL@%&Dd\Q  H^Y:WֹX'a,+\J.WCkɭSu ǯ`s^ +,[4UFzzT]4ԅ~T>)w(E(Tns(˚^TJw!+gܿZXn_=ޞw,?x4xk@SGh6G}~yTǒ}| wߢ|:/Y- dX]nt&?|A./O=ӑi]A|ɗ(**;k;yb\\< LS;'%35@>}()B1)vPaH_}l4J[W>5j.տ$Rh.\'7[-4߭)S5LnV]2ՍosaMD%XG:8}Ιȼ |5F; ;/fʔ Cb'pev*xrRߖ]C&|V *XdC [tX66*tU\{Uh/ B"rXq]Ho/r}*1UqU-WҖ)_DJ^guZU"$l +e 8. jE|SFnCaDʏWcQ)9hg*=5MA] uo8F kՀ:=܆zgaTQV5\ mNJ 0)̅ٓq)XgP|+ aU'X иHalXCbkZ:|#B(H[LnPRq6p\{x +>fU=&mD/4|"/P&жw ݷ#qm,<|r\23'-peiOhqR5"hIt"<5 pF}n!Cg m;ui!ShdzJ2 36 ɐ[yOH.E~R y#D4&uɦ!,O"hh54 +NdN O\H<5{ٛ[ +\@7`uZ+n>@Y"(H7u}K,v^0f5jZZ>rTkJt~,]o7:؇KR TDC| +E~ Wky9ƪѧeEvvGe\RzKӀVb+{%ʁ Z>-lXRl"bs['{Vn|R3y|uAIr4Ï|G>\}xEk*II(hqo 3C_:=0fc$!)S7`V4?5jsd?)jE\0ԅ{'"AaQY,SХe 5f:#Z(2u^;K><0!(|[ְh , 3 p?`yhE._cCeai/JgZ5BV,l+jAImb~ۨs/6Ah,{2r1q!ߒg"H}|,${]`U. P?\MR"ӧE r<3̔zPz(w& ϣ-q itw<7=녂Ϭ7r"ax mM`8"3A]b!<ωGoǐ+ ގ¬-:cFbm]70@ s ":--|ApU`9irB$=axzc"6Hҵ7}lcD:Vg)z$M][4:*7}xzzHZ؆ɄlA,DlbJa6qay +ic[Z>uG,؛ , )O +?<,OXmxKxزGkL:+w ^8qCy3lw֑dX5=[XzIjsv:{$L[F1.Oq<]:n|3@ mܥb}Z\P$r޲``<1JfO!{um#+\f#luN(6F- {!2Akqe:SF/5PT+t3ha4s[py{sEBSMLklyh;r{" [K+Z-=UCu_he5ˇ</BGq)  Q|ȪabjI|vNM@SwohY@SD!yC s;U 9//j<Ib(:{*fW;"j]XpB*߉4KeGUnzij|V"Xn2ԙ"9!e?ݧ꫼r)Ӵ[ְދ/w#ԉ[+}dQz,nC%u{{´r Ȩ|mFꄞ]\)[rq uC={J 11m\ԉ[h7r伂e{ux.麔Jˬ.?/ZZѪB+9%MmxR+yJ,QsAr>e&\Bk¢ +!Q>CV7?(JBҲrDy4I"!od@(þ .L3͈N\ + [ ԅI rs )o4MJ+zU6%=j09pFo_4} +U&F>ҫ:"ucK`L1$Ap{WKU,}k_i(GijtLS:XixGe`ӷ +:jT eVCYj׷UOR+ӱN=m0V63BOkXRWTS\*\^ӱ뎍)vSܳ+d4`@X:)>jH( +?1lQKMMtш +c*L’*|t!]\XTHt|,ona$`mQrLi"͈E.m£dQ!}br|yP a[r" +tmsqM>ZLcSVFF.Vphl,f68B8-?(NGrW[SwPhcJg$$f+y1bhzJ*du}.rnД +]VC#xj +61xJDރ-aPbVq uUhD>3P݉Prms2&F "fl`w +(U(oJo,ڋ4',4o?*$:SnKF ZaYgm_'wYV&2+c]}n1IrK]_ ST~V  :萧qG5}魾32O&\MyZmTQ]]e +#O^-׈niqlzeUO7͟Ukb&Nv`B*h&dD__Q9*woy4NI +ۉ,s(B|kv|cyz?Gzz9JҘG26&1`x[yyU;0Go]cCJOcsַ%krq81p1gw2_ϟ\$t5?yذ12G2uC*"T`;#[[nC?]}z4׹)o?{W6_?; ;⇾f L7&;`(*N줳@ch_X$%Qmӷ;DYU6)z`HMu}ja3\Ua6jbn8U]Qu"מI['#M8 "H)%7I4QR Ld.?<= k ƺgjoO5Zf u3ye>ƁXQ cPzтYπų7ȯcUXIs[/kod^O82Y$G1.X$|8_|_ni[)pV^-\.[~(C.y O Ԝ(!Ilk2^[_)q'w#;Y~U]|9,/" 2C,JR/̉\#_|?N,^ p R|!Rz>J<#H12FP[Mʕ;8<W;2:g<`,N8ֶWN;P`xKmN 0!0,8DT[4 qx WglL|Guċu8\mSLOXx4 ALzb'ݞs4o^=5WjӦ: $ZݸMouuImݺ/P=Ƚ)YT༣>۲ә]½F7lwrc3w;IߏkC3cN'.%iť綱Bw=6T~(ҙ\̜˸60V8ԠɭO%Ϋ u2ݡc/k 3źh@/zLP]OjZjaN:?v{Gw|o7zbNl#)R=RB2۫ƒ4~ĘN[͊%a%`"CiH<)aqxp/f)scq*T=mwiiWPN?*GjŇЃtl\x5^xැ#\7:Fw'+1^A<~jꅲ3ZNP]WP+~Vcx+ߏCBa-!xa"HVЛWj9O+]~RֵZO`:㸻V= ZݚrJ}l XJkD +_lZS$U m5ҡ:oe𢸉hж6ke"aD +YK" +K,g5eFʬٺ "\F&d&h_.]@WGT)\͚k:bg$&)ىP d~nӜuj:n뗖g}Ѵsh)y{%%SL*#sg S|{Z{;YY ½9nqu]vZ{iaW3̆+ ġ).cbŚ'2=cp4 AnO5IiRd7Lϓs ؾə:a*~dS0u8: 7PM+6/RAҦ 5tڽq3õowcklBӤW[5:y%8 "J Q"JL1@cJW;HqۜnL¬mɭS +؀U ͜:*m,ެvo?<<2ptؙzRКM1n.W{UWYUT0|b$u= {ɞm, /I{ f:U~E,Cb­qGDMup pvVM8Hm/۳ן;E3!DO0b9a,rAҫPQeIizwfnذD_[!wQp!jݸyv׬MS9d#`>s71w6j, AarOZ~ TsQLWꈄđ> eLqB"$bXYQ9gYDrF*Dg;׀u}]z">_oaSh1DURssTq b3qn0E0~BĠfiJ(S6~Z̓|nlm;94c g: }{dn{4uȱ@Q kHr*# + sutW.;P~Q4CqVo;׫۫PvJ"F <7T)thm}ԤZi&!9Da^@$GaC)m;cY@zi \dJa< QJ〧3_d:<'"W;v̥NoklזwIR@ :bqI 0G J00Tri.r8SIN4)Iy%_ŝ|0ş_S mČJrvHZo߭W.u +\2CB5wN}VOR}eu&^ҨV]o#|-Y7~;2;x{(bOw {[l̟kce82>m-0JE}u{w\B޸OV<}sIo4%f,.:v+tKzWj@][׽[}}k0=%L\D@ + FjYHB9KY9^Ap&Y?Kʧhk%lVbNI̐aWg掙9 쥲>`mՉWVD `b>JQ@0:}iu!֐&lS>`>Øe_%L?HP@C%j#HWc+ DC*n߯Z\|7Bk!R'~L$j[7fR$\;YS(˕\~_m \?F׆/y y #3k8d4r:u׷Us?X?*B iݞ1 :rd$4Y^ G$q^o:lGSۭu۶1k\|:N.ζiaZaSw9ERs%J!؋<#)M.= rk!6pǻW(NPcy"$)RETj˃!N쌜sjP E\XFHHd",S<Ǘ%[֢WJCc%PH$"b1 #BdPeKL{vF0D[,a.! +U8+3*= lU^Ɲ;x2^Ϊg,/nn4I7͢/ݩO'4"(jeF0gj0o8గQWDFkep07/.*gCƋÞ'Mڷ;Ty\7o45yy=cM$u.z?3`XNb`@k&¤b%vzvVHFrDoHY⚉M[yL>j9'Q zW\p\O5[:*m§:j%x {b,#&s#BPP63d(3B]3b@GLFU;=*6 zxOX+Q{>HR[=6dg:L3--=eC a*ٯU +>?/W3iv=YI +!QsMQR q|E=Z&\qV}|6gRF"qXdZMU~EABxƑoK=%[h4]>eG(:=*{TRҒN3ܮ E#M39WY>g3ZIIHVK&Y>/L>̾I5bY\ru;9lέh\'vHzT8ۉexX놃4hV +s6sO )}.k +`oԓA'BXQi5wZ 8SAU7?N#&& =4,S(f}a֪zHؖ ]!{16}݉Tk˿^sn.8g힡$e$kHO{!y1SG8L,dvHYz&ݞDv@ψupFL1Dgz$@ ۓr6ab˲X{2JR=M $Czw;x~j_QJ#ƒzxfgEU48LJ{&=@>1CD~h.|)6`~ʟ4(>uȍ<[L 0e%zd&)oE^`Y(O$? >)(%bv(s:aSL]m.jSX#_-kY `13:c"qy{ p/Emu']`$\˄+jC;<~:b$d{utGfn`˟e$IՌk'v >2<-pi򨔧fɣ(!ǮO]NK"p-DZзOU= QU:01@ WKݷl}V gũa/@ ;ykjGb'~\$Hϝ8FߝPM +IXG3H&c2S齠٤׮Nb=:־=H(4؏78aGa6 B/4fO>ޠu{R]t0g'd D1Ԫ͘IRĦ0ڐp)K%fż Ȋe8ae 3郲:xY"cT#`Gr횟)O.+4a,g1m{kt:ϫ,u]Fmh0k{M#8%WaϳW9gD%&Fx'OyEƲzYXyYH6OE|,JY_KTL1*IzzjJHb)[Iz<q5T+J&Vq3QJ/Q13 r)Te:b0=B?9jcIfrWN^.|ٟb) ^U(=]U=ljk8DKD_8fzh]#?D7A 2L8?_+);:u b=bm% 13í}#9["A??'{`c @l+$rMC$t`n6ã$0, B&e#?iW=8;xRJ(v\ϪOUOմ(VC~C`h7 -˃;z ̱^ځc%ة14MƒCD\$oߟȱvdV9TAC*in݀ΣJ颁:˵]gW[h%D`up]bH zOw7M ?~G ڡd HXgn5) qw ʐG}gPU6V⪹5|Y1pG&aIHh!Ԯݘ+G!QoB_N2;vu⮺I]|E wZ~Lis<_S(9r<<(%c%\ëys׳+o_Q跰@C~1yu,~|u,`"47mo^${;Vi94O;q5 +ꚗWK\t{L?b>?-Cx -ƒZ`Ԝ;;Ji&5k]|Cq+D  (j$6 ;u}=6M[w\+݉b+vc&].` $"g\ +ǩc!~qi"ï|, t`%QDXȜlr6cJ} +PUeCo65(/¼"k6yNmiYǑQlE^:pQIf؆>~MT7Y Q\ E eZ޺`uC(Ok.͋RG癴&eԓ&+ +O7)ުAl؊wqwsM >%ӅRXsۈfÛk^ز) AWXYQ!>+nb+-4EL&+3D x 5DU[bd5P,2MӲ=TPFw Z*C4c:YE^M!%3MF,6:b% *op4F!xgy~Zi<1D`6tUqOAգu&5"V 5PyCEwiû`QIt yg"Ҏ /^@ה4Xwo+V3 ^Tdqa*k !}މݡ.n'X[ቅ$.=y"72 p_aNsbBӃxC(Lcp: /oIB0~` +{?\'xTɒ+^\v{WcXr!vOY͢DS68${9k&+ k}/ &\l^ 8ɆHǣ9Lބk-d2l5/_5’kkT9_/CQ*\96 "ԦT36݆Myʭ\ni,Z1e`H 5[D?ym~n߮Y)?rQa- +'?"eojA/O?]'V"s!OY&}8]_{K:SbAʴS? 'b6ix1/vO9˦X g"" +x3SX"SvM6Ovjl{Zȿ`V۷>KuՉiO&P'sF糾1 ōx E<+z1f9H&} #7lOXL{Gg"ظţeT/6()o@)Ãݼu7(Ch<(ʊ3-@BkRqo[gև:`?:1yox&d/O6lE!3k}Q/owʱZ}>٠'<OzcS/KL:bӌID/2vT# M4g#oP1S>{?&ԋI𻟿LhMah]sp fK%=*$ʺ0@,j|YZhHϡ g}c) J궋}~ڋGQW~kP {J&VKYQ䎒 -V]'/ժvusUuwrGtdf~u:eў2S屘KJ5BV,uBP0@O+fwM%y1m.ʝ4!n $iH"Y ʺ*ɖK..VSs8l|!2O;4ۅ;Rhb.DHkM78=.ǯۯ_w =ʈH(#ǭْl +W&*ւQ 14 am(HyԱCt m7,P7˚k1=?bM|FtWjZS4Y5iٗl gT_cH#`)TLoѩL)g_cJ'XO\E^bTмQWh>|ܠvOhy㟄yx.AeOī{KܣHHZ[>c?vtw~`vۉ,~{H}@5sWbbe(f[L Sn$YM^k!yq(l +[l%Đi3\1贵X7Ne~&l=C-u B5k8T5|e¸&npD41/?Yu&2p=y$`$?Gn6B}=lě0Źx'Y=C{Ioc$[Ae%AAUh@/jo cn~[0@|A6U9gJ@hV k^woxrB +t suzwW:MdRL #,d3}3~ '{@t$ouMp b r=toL!O^?570Ϊ!9 S 3XlCh0A.T=89J1>\ӘQW8> ~vJaWyv̄.iP(<^rnĔY2lCT'Gc%tcalcmKYx1GeFc2#k`@hN[-ՕtG nH=w nÕѰ3ޚMvV3=N`9Y jGbo(ys q) gՅLL[yU_m;W@-wnvdVijS1E"g+5 w퉱C2 +˥?nZ?lmr!ZFVʽBrCK67quSbkrcyͣ57v>N/t@t8GX` گGqEP^)jaװ yfYY!y ZrbK'qls88rtY16I1n'V֫RsTj=ϼL-w\qʅ ti՛۾~ZQuze7*%=Z.- '^xʰŮU7V*[y* M3 T\aƆI]5}\p0_;Rv\ߌF5ieՋ_s{ݣxFs@{:4upHЄ`(Mxۇ݇[͡os ̷kjs}>ci&k5#ʁʁ.J"ds',L,L쭠w۔nk][˚;OL-܏;XdW39߻$[糜 Zdk@),7vBitT0oI/bts}f޳Oz~g$@d} +NOP8>za: NTq2EB+V7Zkuzoe갰G6=_zE@qQÖܶCѕ65aGn,BG!V H}}xF/6 +e#u?2v)B$pA?OGS;F4~gyzD CP/u@j;;t,yŗˑ^ W\)S4 < m4N[w{t:O* +-ݹQ$#I*}ObXCq IrBs&xtQ: r R; e)pS[ .)nm;Jh~h"Hh$wg8ewe"lqEBFw0 e@柜1TX 3F& 8֬/%^SYZ[fR-ĕ/x,W ywBcJT.[/byv{Zdq)tJ)vhg:]K]uNsi./6w!r(0(\獋>@[J>ÆE!ph4NޜfI!zr='%+Jj:sr纖W' yTB!mλlmn č~sVBMlTu..Yn v%ˡkkk Se/Kf0ɫ ZtEף?7qc+Ks[9r/F +?хpHtY@p]n\0s`Ҟũ`۷!90֘ YqiW7 M%װ'lӪ+|^\uUBҭԙ@k {]\AD& +X'Y&*I^"d/D&> Q&|ޫ!^=v](<U8 _ׯM ym4{E!zuQ7whn&{~%; 0C6@INQjοÕ?ο2!-13>.'f""(:E:߀1}bNGԪV7Pz;tjΞ*rލ/ʕ;\;8ݫy^_$7(-/u=Js۶ԉ}"s{Ē9tR>FE!j Ev i$`N+0oaN2cr@(]~P-`yGyVoj[eχsCz"h3bX?ʪꥰ*㡵3E׮!ʝp'ӱ(搠KNXUv|<-Ҽ&ΑX]1JtwT3v\118BXDs=<'#?}J oJ@϶zܜ8_NvplNa D6l"cCs$8zԶz=5d3Dږi/ko\|ʣ&GP:\~Ax>Ź,Zg\e!SR[aE|br-@*sW›tz-GqwJSnFN۞νL;ZUwo6 '[|Ssr\G1>]ϼV36xYNR8G?}SS*fI,ojN?ˁxynOtJ*+$S+}Ķ)-Ϯs.)rSUhMAUuewFy}BQfCNC@d01.ej=vЎQ5XLG\ qCFvA<3CzzP׌/i{P=8"O]\ Հn^Z_QNN,g׌.: $<*짃}+G#BrM]]SמM;&PK:%OZ|/27$ܠ}l*dWweyWlYVY^͐L:s-zGD</ q,~[F?֕^Y>[V;[&E>Чyd;ߡnd{.Ĥ;(Nucfݞ39ep=E*~vt;re\Me$23dI +i|cY8+6ngdŎHB&Bz݇**ZBߌ*[]fy&FcffIA}owKӖ}׏r_M>D+3},` 3'}Qɭ7׾gC#©I qjDV7>=^mXJ +Dfz>L z oĭS_՞NLp]ɨrSm*]pZHUSFx)Őug*'@e1_gb[]_-sVq¨;_krm7q dyEk\phM!!|wkcuw@[;j9?3=dz"/I,?O]++؊SpLG:zb0Ol  ty᫭~!/ \,67VߐSa8V*/gpnVgvkhvܣ!אkMZ{H7 g.-!hk2]YlLy_+\(/ e\] 4Ekݲ!\`vgkǃI;Q>Ÿp}?`DTx-uE%~,|8H-8O{QlB^eݨ!{6=D|a)6g`w+l:[֫=J^:~WP)'OZu4hɼףItR"eϠv\ VuRU-zCˈߡ'\|ӏ>e] :{{iZ$ijhe=DyHX$6]wҎ@W˙A)^wlZYjeˋ֙=70\ ئ'SE:D(PoCyZe)WǓ +`<YRқ_vVUh9q[VyyEnX6|{xkHvEmG]έ2*[VDyaq{Y=+XRGD^W',lz(?xy_;1:$2cX;K,.'+˳ތ4΢ǵN; ɮu?Q9sع LIgf1st}f{rvUcO Z@RĴ8K0. 8.q4"g_${ES[^a+cǒ9s2&4,hyɆQ~+K4/o֌!m༭;e\'~S(|_L%kE(VVVZrEN0S?'(gFW&vebW&X +TFmI0>a[-WxWwe|W_{s !>Lw?ڐ=y_݉CA2 TAQ|6$]}ŋzC2[:u?3;~3+?ل)\hJgZap8ď;X{ =%̖Ӏ7 +0&ۮ6T텶ؤ"Xݟl b~Ok]z:%sèĞ|N~XdYbHGo|cCNӌzeW{e'frךpϛ78f0ILA]ԧ^w2$ʇ|ʇ &rSY\G͏Y跨 +`Qۍ~K*LpO p8֜+[hgkPmp(&냱2Kk6M&;9i͌'.NSc;`Lٌ>Ai$1œ&Xtɶ Whu"y7ݖAb擒k-3DpDN1Ӈr/!)ʐ42pdyRn_j0}z[U b\x;x C 3סE:4[$#d_iUO#5LM}bncxnnn):)EWUUǡP~}=,.yp^>q<ԟ֧8.Viw8CWhpC|rx. _27K]_bCڴ˳E)Y|,e)%L'[£CHj.vF8. iRR? hlȮ,8v9ъ  r^%de/mIܩjKe3T`]^=Pj~[epR+1m[c=̈C,|^=QLo5ur iUu\ˏ^끤#po%Xǎhd]o*>E MtMΙ$i]?кvoP;va1db%9A&}D3]?~v_E>%XJ{۴k5#)" +'?É./N]GI5֥o UAyK"OẉUT/ꥴqDN|춸^(Rie +-XJ.= 1s0gv怬`il9,ahȥiWeKs|\/oxE`?WvjĨВ"lU6)I0.]9Z9lN}UUSzY+ _'vQǮe`űYazeg^QEk|uI5k c1Ef]cl&ŧ5HY#iu+2^S9|~Zht.=πFOtP!/{ |K55f] _[wDA \ +{]?_ њ)~Υa85y ~jJ5a^L߬`7bNk*1c Sv@TEggyk]^7BV^3㚯UC`M5+*SV+4{D j[lfqɦ9*a$̜Hq54LɆkUkRWUd&LXf!/Th{a^9*v4qZ'0Ϗ~i%ҸKO>=p{9ȁRAL/ +BIjzW6 lƗf)kF]!՘Pj9J͆ãAkix SYSߥR<¿FBZmv0$]4~s=I7ѴM+CH`GDY1i)oԉy16vRf!W6zԚЗ EhKpǜB,5+m~][0o~L]wfexk|8Sך?)jy||5EfEQ*̶Cײȳ|?$+L< +vˠ2"`zD/aR﬚u7iLx,'j=p,s@3U'jcߣu;)x٦`S0%+6] ܍w5}a +#mpw޽o_K.;󵈊aZRw 3n&:aAjоA263ENr0SusvR=)V"8E'peAU3  <\*`r2=nR!z:+(R"urfZ-bdEjVҊNOs!3N?a!y&p5SMmVڶ`qcӳnhc@#_:P[%q{ef>4hq䤨`8/7RX#7l6CKZ{ܺ\4x!a!kzz 0oC8*Maǖ4'~Wבiz{C-SHbBl?׺̭sA?l +&=twH=?)jIe/|/_ؗdz~W92/>_y:opSϿZ5(lB.Gh~ +ZГ=_G{A|ؗE/4{zoң$p\#AH^:ƭM瘭!k4d~?GBtv?*p-#w M:.<b"2o[!oHO& +4!CHP =LNbĊ];)?w[&, +kՅào7vNxymE0%t?> WC }#YFg4| XIQ{95VAiZ^䅕om{UQ;F M2GUFW+SH;IFhA !o"2,(s9jƨћQ5z*)R{ejѿ4I*p@m$حJFџePB"5WF_˩1w}sJ/4F2w1`j F#PcH1Pp +5fY@ncin%1䍹nQc85sS j U1TF*Rct95fvUUXY@ ]+ +<|7ēh1ePcB"5WH˩1BpB嗹g>/ x1ePcB"5WX˩1J4vʜĵAeʼJCIޘQc25&sS jLT1QFԘ(Rc_N]Yᕀ/qwJcܱ$Tcхs)R + VI)Fp1u+J2YV, $ˢӢ(ȕgq,~3sxf\3ʾU3={YVYfUN*O Ҷ4b;uJĝQ3ƙC#q,|4f:Yi ~ܼHR+-0eaW$Y:j9<5)cdqT5R_Lp$aaYeaYЇAdKƙe8FJ^Gm3@,U7MTAU2s$2ώ3?Yu8snٝ7RR}oǙzMQeYe[iB<ȖYV$Yp98^)cdqT9RՕL8in[nbJsh=O4Qg37Ǚݝ#q,:Gg:Yt N-* ++Hc\, B?"' +%rԫqfHA#K%ώNgw'43*±|8湓̴$Q3Ǚ#q,\x{y S P'KU/7cF^n9$TvdQdQY/F<^ov/1Tx^d&xyҩ)4`q(7ceIx^o/7G +Y*yy;ʍvtvQ<6t%ј,) I/?{y W P'KU/?zy^d˪0I< +Id娗ǟ呂8FJ^_3@,U</뺁UwŠch,_}F<^v/1T^d'xyv ̅y*ʜ"d햣^/?G +Y*yy|U/uTSaẀ[* =q XDYŒ^gHA#K%/N^`J6'OSL-'J2/=<[&IV[ىl{Q/O0'#qŨ'P P2 &xy40pB [w$*\OR F<^`v/1T^d &xy3<t>^e $rQ/O0'#q,;Niyv9'lBn4D{y 'R P'KU/Oƣ^x/O&0!7"Jdɨ'˓呂8FJ^D3@,U</fv]+J; }+Hzy9<^)cdIT<R˓Lā]Pt<^êXWyNdD2I${y 'Q P'KU/O2%'( ˵<0'긗UROF<^dv/1T$^dI&xy+@e 3q +? |Yɨ'˓呂8FJ^D3@,U<=P. ++cХfaaAHh&xedEr Gh28[O!L=cۀQ9T~r j<<*N"7T~se>F^!3ЧDZ'8~̉O-Nc+| +/O,Q3}aG38 S3atw/%?e~Z=7mŗ_c H8/zht ~yj( vB?gbW1Ioh~C/ӯOv,ݍOJ'/g\32㟶I>8oۙg?o]'l$\i8O ! +hGP&_s?Hwr L +6=>~+:9b3mu}<<䈱O;}8sJsyܜJB*|۬{?Րc͈'8dPٙ5=\lPb¤[sh~a#Pu84;}Du\& iN-0eD 6a0gMѲ SF4 `fڄH-0eD6aL07eh`B& ̴ QZ6aʈ6!l` L0ײ SF4 `CgڄAM2MH0$2& ;l” lcA\ڠoO6eH!TO8/TsvDcBwv+ϓ4"1?;IC +СJ!MlHvLюyEzҐ&6BJ;&tiǼ2=iH!Rc^4Ԏ 1TOFjDŽ^W' i'Ҭ>8!MlHvMh֮yzҐ&6B6~B5kWY&4k׼f=iH!Ҭ]k^4i֮ 5YOF4kׄf׬' ib#DkBvk֓4"5Y5ICf=\2{0YODXHV׬' ib#DgBk֓4"3Y{5ICaȷ'^f4kτf׬' ib#Dp;6¼f=iH!Ҭ=g^4i֞ 3YOF4kτf׬' ib#DgBk֓4+'Ҭr5ICfЬ}!MlHMh־yzҐ&6BY&4k߼f=iH!L6Q) լ}fЬ}!MlHMh־yzҐ&6BY&4k߼f=iH!Ҭ̵5ICfЬ}!M@i(5ICfЬ!MlHLhցyzҐ&6BY&4f=iH!Ҭu`^4+3R +-TDu`Bk֓4":0Y5ICfЬ!MlHLhցyzҐ&Z4k@o]K!MlHMh֡yzҐ&6BY&4мf=iH!ҬCuh^4i֡ :4YOF4Єf׬' ib#Tr լCfЬC!MlHMh֡yzҐ&6BY&4мf=iH +D5}YyzҐ&6BYG&4ȼf=iH!Ҭ#ud^4i֑ :2YOF4Ȅf׬' ib#DudBk֓4":2YG5ICa-#B5HYG&4ȼf=iH!Ҭ#ud^4s"͚>ہμf=iH!Ҭcul^4iֱ :6YOF4؄f׬' ib#DulBk֓4":6Y5ICfЬc!MlHMhֱyzҐ&6BH''heP:iֱ :6YODSqfMm+n^4i։ :1YOF4Ąf׬' ib#DubBNk֓4":1Y'5ICfЬ!MlHNLh։yzҐ&6BY'&4ļf=iH!Ҭub^4i։ :1YODcq[ZO+4"~y3+4"~y3+4Ge#&mä#hD2 {T6aYPلi'A&[؄i&MfkҾ b6aIeٙoMfdRلi6& ,8``T6a}I&S" l4&L-iaІMfXRلiv% 4+؄iF%MfSҾ ؤdB]fPRצٓoPm67?PLΎyyҐ&6B>;&gǼ=iH!R:c^4ю =1HOFTiDŽ.W' ib#DcBv+ԓ4"1S;ICZЫ!MxDkBvk֓4"5Y5ICSڈW լ]fЬ]!MlHvMh֮yzҐ&6BY&4k׼f=iH!Ҭ]k^4i֮ 5YOF4kׄf׬' ib#DkBvk֓4V)Ҭ=g^4i֞ 3YOF4kτf׬' ib#!Fb {'Ҭ=g^4i֞ 3YOF4kτf׬' ib#DgBk֓4"3Y{5ICfЬ=!Mʉ4k߄f׬' ib#DoBk֓4"7Y5ICfЬ}!Ml0HFT/TEoBk֓4"7Y5ICfЬ}!MlHMh־yzҐ&6BY&4k߼f=iHPDu`Bk֓4":0Y5ICfЬ!MlHLhցyzҐ&6BY&4f=iH!,Wf^,[f4f׬' ib#Du`Bk֓4":0Y5ICfЬ!MTi֡ :4YOF4Єf׬' ib#DuhBk֓4":4Y5ICfЬC!MlHMh֡yzҐ&6BX H5'(P:i֡ :4YOF4Єf׬' ib#DuhBk֓4Ѫ@YG&4ȼf=iH!Ҭ#ud^4i֑ :2YOF4Ȅf׬' ib#DudBk֓4":2YG5ICfЬ#!MlՖ^[Olku$Ҭ#ud^4i֑ :2YOD9fЬc!MlHMhֱyzҐ&6BY&4ؼf=iH!Ҭcul^4iֱ :6YOF4؄f׬' ib#DulBk֓4":6Y5ICa#k#B5XY&4ؼf=iHMEubBNk֓4":1Y'5ICfЬ!MlHNLh։yzҐ&6BY'&4ļf=iH!Ҭub^4i։ :1YOF4Ąf׬' ib#DubBNk֓4":1Y'5ICh,nTyzژF6C^O4oy{ژF6CbO4oy%{ژfw/%?e~zo/l/i+ٟ&42VZ5Zm]qBw"l1Io;v_~ɮ8AQV)~B~GRlgO$vk||gpMw7Þ΢}XjB ]vT@'1p$#<};sF$_s?HE3q 6=>~+:\9Lmj}X܊<0O;}8sJsyܜJB*|İLz?N?ʕ!ܸ{rkZܦ%\_,ʾjD‚`_h \W|_ok@{!l۠YXYbĺ+ bMMu!ӈXi+l FJ6XaW] 4"V +BlҰ V FJ6Xa.+ by]M4"V:bC6֩#H7\OҪ-Ispm:S n"5Ѧ9:1y&+RmSn"uѦ9:2y&+Rm:S)n"Ѧ9:3y&+RmS9n"Ѧ9:4y&< " >kЩ7\j\!B&rEZMCujhM W4X&rEZMCujhM W4X&rEZMCujhM W4X&rEZMCujhM WM_'4Ж" -֦:54y&͉44@C944_䁛@HCihN M 44_䁛@HCihN M +eiM9[44_䁛@HCihN M 44_䁛@HCihN M 44_䁛Hih6 -Щ7\hw*#'wȉh`9rzة8Xu*#'w`x9rzԩ8Xt*#'ȉA`9rzϩ8Xks*#'Ĝȉ+`9rzɩ8Xr"ȉ`9rzWũ8Xp*#'(ȉ`9rzǿ8Xޘo*#'ϛȉm`9r&bw[ +{MFr9:MFrF.3CK*ʣ p,?ɬ,=K$#(~7,+ Sp +|/HQEof IGWY dm+]<,O+/^I*-;N˷^`[*4 +op[ܦt=YIiWU༑X1Pr7$zef%&ב_IhVzai^1M2y#ʪ|p$bQE{m]& yf!܉,,kWXΛ'-"-~ 섕g8\f_Q+1 ],+j|Sޖox7] Y!'Zջ[Fft_lk.jz_+mo|Ӄ7B`-UtS+!Vz^Nw"z3ǽoަ}D݆Mz߃D+ћ{w,k}U[h+޷·H]z:= 6NNm=LDD) "Chܾ(){=ѡd`W?l ^a)3!tOzf"TO43bvWTS'ucAa?,8_zQQXI:vdN>x +S"̊\ !ڏoiqy4,fK0l$jN0lj-/sMΉaP4 +b7|' ,R'>rk{YP,C=nVzUUTΔ7ιiZk疟3eg?IKZ'^xaڱe)@V\%ye1h+uN? 2"-nΰn)U8IzYvTYA rL AS"(&B+Μr-!AVs^^&VXC7G7B wA㘼uq^XIAHCgs;+a#ziW:)qRĆbCPvWRه@Ƀ*>O}+lr(rwXʑQֵ. qbqA9 6̍A As'@V&Nޯ N.P4ul0u+-Jˠ̀6aW̴.#bBY3טE8U)3Iza ?I[ QI^x1b9vC vV|۵vY&Gf4sޕ[yV@Z*^M*g+K{pOa3BX^@E%,K(q8i*⤨ ~9W8A'Ÿqtӳc;7Wm+P -;D;;PPʿXl +aGr  *.eWbp6tLAL~H{>y߆W/|Vgqg,ӁG+>}[GNjehc_]nRIa=,,c0UM==[5 w @~iEqzSڡ7lhpC066yljB;Mˎs%ՊK(y]ģAU3-tk+ +%NnLF<,ulzVp[[l; Lc5Gut-\6cYi@G 7D"L|*0W0߷"W_`|D;m~[܄+x(Yl%+"J@E98n2Т$fn +N7,Cj?Nқ0$?tPu]Tՙ}va?`;h#C<5)N^ZxkP*rWe~aU GmC} v@6vsv0! J)J#d$Z-3fqՁoDQJ+9<·0x2~kyUTA@_]䙕TH +;O\@Fx3G|SDženn> aE\ZE~Zz@K E9 e0V4 HIڌeE `〣)u!R VI 2:o}0 VVٞ $ZzSK -c;LEL,Z"|5zA d: ERGyY qpXY-'*0AYaŅ]$q r>?[4;m=8+ *[.8^@l/OL(JI|UyX^z0HmqToبۦ;swB˳r.JJ!4uh8cHAڦ8QEXH +I"qwmZ .ǭ(S`n[@4D Qy­AZ"v+,s\虊2>EFi޷EkC3 {NjqTNi*Hyك7 AO)J K{I^څă[)Kd?#>` Yi ";*@x#)BC[ARZ +ZE @ʲ4X{h@316} !gX4 +E1 ./P- NJ(.865mQp fCL\LW 6 V^&(7N-ʴp;w %"FsJbĶ\R/tl0 ZKCJC`hAIQXn"o}eVvff w~N?FE`s\?Ir+vѱOyP RYk!/Y$ | Ν%9d#55%4_BK ++?s4Bd@r򑆑U\趗tZb$Ahy)R(V&QT*NPrDí+pe 0 {OXak|0Ġg5Ɖ0/3-KZnx@jMm\¯ij#ȳ} eJsNbN::uޠ(vTBM`x>" aq'%T]Y vO^Ii3 +;Xt(bLJ* R"nd^&p2(IdԼA:+H/"_U-rܨҪHa;Bww;2q.VyUc`YY% + 1_vxI, Vn!\Ԟe{vnpP^\GrbeC"*~kp(Y\$@-:p2=7>rjrtB:-q/(LSϋIȉ>6* 8W0&K +:3Š ۉ`9&SfIEZI~F$^h~9N$v22lyq~W\\"M`C::yɌQYK3v\pVnn d̕ Ɇ YA\FC~0 N095aE܃"`3wМP̵ιt"?*t+ C뀏c, + .'^ l91?Av("=вk[zQ2G3'1cQmnӻ_u!P"J$Zc&cM&6r2 O:zq{yV#[|~ I#7a.O^P-RI,;J蜉a+5󮤹 (H)U 8E2O" Z771^400$8*p BLJކ N yu/og@Q))č +p <"|uƦ_%Nekyg0GEQŕpq33{͆.Ȳ}hwsyz-QRcŲ?Y' 0u`@E$t2`q)`UZ1Sr2Z3h8N#N7p9k`Xe2B@:Wwfs,|Iŀ^= W0bVlO2aI,<_HUQy2 KBc Щ#s?L|؂hfxmENu2 ywffaW@Os.њSXި98?s M:9%q 'e؀}$I #va KT` YehW5 ޓ̤9։E0P!ΠAniwͱuO=QEwԉda ~; ~EUZv Q䰦nS+ae7i/?t1W9ldn@5Ea'HRALGYYYV0؃#P:,{>ܒp7 @8*s<+a~d VKng fwY$qZY~[҂+`.ot9@Chjd~`IA)vXSza/"2aI X|  sEOoaQ5OߺohM|E̋=lNק ?C``AE\ E4ǭmDkLq9ޥE5BcԻnhu8g{w{;oqORP;ͨױ2y(%^sXjdGw!P`HܡH4;B@ܞ5!L?Ő>Uy,Ru1 +} <4h?SV^ +EWEbw.ݭ֋[dq-#XW]{/^ +f=!3P@bo'ק74[oyxT +5#f\[K+9. 1∊YĢ+J仢<FJߒ692<_ KmCOm=`i% cҩnɈh!WEMr߮CH1S=Gտg_,ԴD;C|* I4﯒$YVWm_嘗#a{`.QŮ=g/F}drFs&=-21YPSZp!?>>cF%Ҝ(8ݲBWxɦrXD71P8qQ*ގ`+`2TV8ۧg&j*;ڮRyF\5lO֗*@c.d7fOhz gWe6=IO6#!ǼL8Q1vZ-Rt@: +xz>o鲁4 +m7fE cjG)(^ؽʴuXRTsr@Zz+pWq/gH(U- ^T9Nq'"-+-}ʎ۲b:T=qꩰ>'b\H+73˓wdlv?݃^:Wt'4BYT(!]o VzԌo!՝g+? =@;ڴ?ς#' +s Nq5Kf *ޡNmS֫4,z2q3\ ˩Y=83Z&8׸B]gKGb\j my:-Us ||<;+ ]} )1R\UEM繲iϻOMCTm9ڥx4T|?ޔI r좻"SrqOM>0Q%N*8py߿%*Zb1$5&?[Ymc0}]xǠX?W2c*=M+M9WmEE ىֶlbnE,VNsp&щ E*ݦ%M a6ni>c[\/p=z8o44LgҨ IOcK`ׅq>,Ữ(]xn}XO?xP"' Q+f_^*O5[K=(w0{o+N()sVQїD+ZPLQBq.ĴQzO/w3Z:KLT67y_-;DQoQ|V Zk̕g+ȑKL qj(O>W[OZ>R!션DYiêM(^L<=&L}uv=4ST#/+E6Kͮ5@2 B3eQݒqO_W%U*-(9cwxҍԆôq_:wWdN-&gWxeqP4䭇5/Xcsv¿>l)l2k[65cD8ӤPay%habs"%6OMGv.n@ZyJ+uk}^lXN?}J>ƞT&&H[nn>NYF J.3-YޞK-oFDzf6^;.tO'IsXhS,\F,A_9S(m< ;1V`KtW+Xg{BuŋV^ƒpّXe+XQn@E4`>cX^w~rB (K|},pz 3,nSpK( qhQ/σuvz9c/=Lf"K.t~"\0"3 w5Nn9mIId9YN_ELչb=^+t$F84n7!VV(v'l8_D|&5\6ͶRIO+uӋ3Gl"uԛ}WҳawV.p7&4hӝuʹgwh]3-Z=Z[b ץ1pMٔNMV"Rc뚶l%'ᮭB lb߳|' ,++-mʒ q2vp8'YF_֞c6x X74 L|W<+%>cFrNmY3k/\l;W~P"h:6S} +֥w+>^I1g1X]utv1[|^OcSIeP/?)ĕA(yCȵۦZ~=Yݺ7ӵpϸ+Q+{e#9q3$erz@Jy,- \WYrY!!Y5&KO*t].KbR`젨ցyq`F6|K|*vHFlIEC4Dh4pXKqi%i8f!c܂B22aCW%˄z2!9#b/'bm4s6i) 7y#I}ʘ@/X]&&"P&e1@1$MG8弿~n>; p2UW +$wf5Ͼ.ZI|$oat+j+zRZҟ0! +2ܮ||tk:OxKu_\a.5g'CcuBc'Czdd`F[ zVF3{ +o}XxBXDpEGIkDV ܞК`|td# .<&,;J1Z4N "!O39}S.9pD{H/ԧgo܇9u54Ks7ϵ&w>6ew4 .X]6\D} ?cFItNbO?L-xxie ?ִ纅"\&gJagU>3t«,W:i˔B|kÑ +v`ۨU׭- /,Zc0+qsLߩHonWz[\ťH(*i׻+w˹+$WgoFN0q'uv6& f^"ܢ Wb=oqW7ۢ(f ߒΕ?|;ub)G[si@C Pp + I}A^}^p9peg\R7"$Rr5)7H5}EGIQ$A[ W?PB +y 閂H<ģ1FWHlF$j +D/G r^%Xty.#)]" +w2D 15~;(7,(~}]6 +fЋDzO8L7@32?2#걺p>|&_-IgNH߳>U.f6LCoۻ:si2tS;IG1F-?`JȑG[4%&=0iacR2! %WFδlcf Q?[)-{vv?3HB@dA.@ +P$n]2OAtS f;!Tc$Cohzr4+7] +I|-۩ܽmޙ!Zz=qۦhXS3앜 6q4#0B:`$*a49 c~q?=o +@{Mgjj~||ƬKyQ] +LiVa]X|.Y&k-Ę .0YT j0@eYpA/9E(nyAkq^"RK#; שuc">{bo@:'BBBy\ñōm_I] 4yGfZv +^sl=ZZ ];]kߓSJlnZIۤP8;(J53x~qq'i{}k)1tה뇬.D1M܀ ݕG zNQTH^$4ȡ2WU„jR1` + y{F:x,YoCx{CgڝKd c2g }{xNtC]9ݔW,/|B3CG3^/[_.BuC#* #=YwcPIb0OMsyU6XC4f t2`T6xQ.=}CLW!bܳ'D贩x' ָřY +5eҊ6k˶D`g +lKHfeP]ԢYb?x ef]1 b^G! +TτiAB鑪 +D-EN6qYD@Q9peidiS++XoX2ImoQ뉵.)jGWx`8ްHŀQpN|Թ䉈`d'hjۊTK4TGhtAXamaY\YX1FpxIZu>b^*AQe+0NXW'ZNax[8Q:Dnon| w~z} &QdْY*Q PD}v\ҙpJ(\^>})X+K X+r- JdLVHbC|ƕKZYv|˓U\^^>}0^.IkѵXU62YܵXKZk !S VeeQ'QSb3-* qې^mE}3EoRھMrBXcׇ(sW\OpUXn*3+(QrJg LLe?KGZaӳExQg˗J(,ҡ9,x-&H7z)H);> Ef*x+?.X&_&pLMZE{0LQ|UUFy^2 + : V<%Y +-=xMt+A7RTDO[w1Үl>{Clޮ6n"Hл!  +4[U܅-yڡFClsNaYe\(zJ6 'FG.[BHxM.(E<1_U +ɟ[nMX֔0U\DuɲFlSӚYc? zIhYӌ5Ҳ9-k&eakuu"ezŰ&]Ru5fs\Tg~gaͥl|Fp§IM(edѠyaЉ1i/GԐ&#XYj~Lb+Twܨ&-4p6ڻ cknsM*X횰57\3#"HLl`) +Oʜ!DM1?,i_@R֌M&zi @M5c^ y9"UN|(Ff٬Irޚ򮞡6Ϗ/Z +,.Y\FSLn)}ݷfu+޲'Opfs`N>˜8^0?h>PaE>s^$ԧ"OѪ& MԎ`hlbEu Xcg9.>O*8a3ZWwAwdwQ@,}J{%ԈUd4¤;rl~Ffy^í"L!;A9!ZQEVk{YsBbI̖ɫdJK%'dF8}CKg9>=I[Kۻ 䮊Cd븝59 .3z<>01m?p_ڥtW +;nE xv<ݭձ=/ Zk!4Ȣ=nEfM\}$B[JbIrO[Zrp)t˔Oo?UE34yۘ>?5s"0ED/.BC\ܧ~.T448#+^ٖg{*{8O5¿ ˽aW{E=o, zk8Յbw_\"{aJ,!^Uӧ.z,s9sjT;<Ԟĩ}Xd7$^|*ɝ`/1১a}?3?^?=%~r3Ʌ@yELL|syT0lGZQ>i B]H#`A7gDX':驪Z$\/D6^)ϰںG`O78i}Vt;L0%>hGj-)-AѾ.wDYl?w-b{ɩ|0G>ė+DȦFCexGwhvOQ8]W%%pӬG 7$ 7O{ a`I ZD/zEKZ|ҐEK loQhђ٫Au@kWV m|F6{QH_yOj긣W("y-+hf<J_[0[&lݟnZRW6xPh[\{\KrV|K7ݒu h"}f`2sّ B0u22 o.D< *M+MАU|id|$ؤOyR?@ .A|ΕaJ@[b`Gdw(Sq>T櫀(^D%tjz{rãL/ <b;~)ulEdwIհFT-<\wۭ;BuT~ShQXBkrC[~glK=X4pZB(T)&O6OvjC`X3o u,/A];,4O,f 0y/ 3P]}Z 9Z%3پA]I4i ,bw6ǟIo G1%\5Biq~FGQ6D" ,W &5t(+ܑnZFM"&*J (%=kIM(i}lXu-cFui0'~ۓHtS%v\h< HmE $ֿјRH~+/YNem;߼V +t0xduٞhE8#7q!ۦ&(sJvdn# 0-_L*U(hsH\2{\RSLJ8p<3Sͨ`SǦ0,e*l⺆k +80Xwƍ01"8 sx *wA̝bx4{y"Mr`n!y0x_kG"-pVY%Btx/cˋj܃V؇=}$Vѱ8F(%˟ -GIz(d2Scv{qf.}`ZYK3o$:r7ۢ(D=\P=B`r oW@kZ b&Wփ]{HddS"ڌL6d!Y] ?>Wo{ Lq٩uIlnsўa&qQBbәegyfB^0Oo&O*.OMlZ1R-׻'\r,_t߬p؝^}J.=iaɬ{׫bȝC44EA5~XO=d迥Eɮw%VZ?!#A2nzO4ۯed]`G9*xleBɺ]r Y͛ёà'r~T+*l;V0cu>h]_|*#dk B^wUR*t0# +!,*1D0 >^jHJ3>d}Rs޾Tk;’45]}Ȍ(c}vhge r6VÐW骺?!1b <]w>>rus>߽}f+ʎZ/҈Tʗ9~j\|ysy9Ȟ?wFYՉĮN7]a-F}13 +OyfÓL&uj`Q\X_᳸Jo@Po.(7W?4j)RoD +z'8,ϼ#`wڜXHpgḌ&}~.a);qz-d-l9OFUXU\ +Z#B=Zͩ\  PN%̣p}7vWW.t1}8һ;p+5j-z0q5:uz$2=-3ww#(.RrY2Yu^.rA,.J L 㬥e!jB `wn̉ ˾A,G +aپ~ҔQB{Rf;D&ee^%I_% pAN1| Lkqэ9)WlۚN=D/67ڈV*G C DϜR^rvuUNvO%ܦ?kWYHd?iyhrqkQEqIu"Շ5?Ƌ;Ɗ7Eա|*x0,ϧ g@:U)ٿ:Hd^*z>ku /:/(-՝'M{ˠV̱TvpA1{JDJP9ɱ OAk ũF?6CxglgK4*̃g_q$g^iƩ1&$7\m~i+n ԍcgyv1D-Xc@s%[L.iB#' t{8ꉳ^|z"6dXImBův= ;An!KX:3|X9 +{rEpW߿@,p;贁9Mqzk_pp>0ȋdֳf1ߴሙlB8Տy,,r`d@zwbw935S i.Lltw\R3a #nZ :F˓Vgem[Uby vYs!ੂx,6wpG|szuV>n+v b?l^pzw#J(D@J)\/i/'K&j|Z?K=(w1>26v0J(li/L׏ޥ0-}ZP[jz?Dƫ99tqKq`:Jx JY{x~ׯlz/3?J\%b5DUzmܾZk>Fﹺ {w_ﺲ(*ݤ2,/HN"/ +fwG*"R>!!'wFOۧ}sѝ  +즀.gQeNgMu|ҳ [)(l9槏xr :>jt_ +9Ak#/Ԓyp3)sp+r(H핡ihWyoQ{Qo(s#/ TZc_:qyA^̥dZ]uqd#,eVAc9qZ~VہU⹎ǩse!ht5!;?.bJc@:99zijϺ-"uG&@wE `61DeuSp-ʏL.\~n"IioNcM< ȫl1Qcd6Pi'ToZu3e4/jj*=&_1WT y4{/BТƒ]`C8*P2_J/pSIDu=)׭ dH"$W~XE7{ d K Z΍4|F}sIEQ$4J`HBhBWEqM} 7 @ᾉߝD/8wl~^Skg߼U +hC!0AC2ӸN!<o8֐_RcQmnӻ;0Q.UѰ廠3,PHCfDc$,X:RGEJb 9ǂ3x1T'GkM=MUAGSScCy!/ C)g?(TE/z&Np|(M<dafT="&A|oc J%JԬl+5EAs7x7C"#Q_ 1!jƦV0aZܟ-&w=H.c n%f +]%K| \E̾C`Ʒɑz:VK̃J=f5, ˔I-Y0n&[o HZd^"  Cb^Tb<o^Ay-~=WKrC8|XhǦ#vY +R9rųw?$?^%o:z9{EXƂߏUovp D =#>Z9Na' +biK@HB +ICYFrO8j$TƜ,~̷!_h}]wjqPEV Z َVR^Hj!T=Բ6}&tVAyjEh^^}'ηpI+7'tP_c?r'K ё޴tdyJc8^"r$`ee9;}1cwQ-=L_AH/8%N"]兖 gK vV/OepNWPkҿ E*?Bo`{)5\{* +iйf<2r֬VtxlquŔ ye1 "3UL+"S>è/o[Yݥ):ͷo}([cS3gd-"r ^$F {Q yG86AlSOic䉑E셋f<~GA#Zhq;ڑ~ mnH'Gr/d/.'HP ` bp}wµfCgBl~`Ygg0rH{*O5Q+ېUmoh3OuV74n twq1qTնfw[3 +q`4Xxo'c˫ݗ3u.I`\/2))\ك~dk{2H^+~./O273ϧfD];6@SuHŨ}y) nlj -NJ ]^3{}aXLK1Q>&W*YSLX_E'2j3Wu2@5TkßhL-TkR KIu{rc+p[ i=uE\S=z.}/%R\ԕLMbCLXN\^/Pb:Mģ%/xI4`Xme$/3t/'WYzNL&3W@'GW$ ~8 mA|mLք94xz`Fy/jEH_zUsZfδGi!鶿Ij>=qį\p)C'rNq{}k=3x=#!xQ\|eA--W^$סa4k.][ NPZ-4N:xz3XiԴ_tM&^y{ |J1+@M蚽{>3f'DǸ7d5h^7 ˶Uz|(T8,WF.Ve.|,ɍÕ52 ZO`|ɏҵ-xf_ 7pme03%6/1*V\h6rS9dͨqJK lvifIn>IΛ}D˂{fTC z'V:_$ isLHp/m/B+~m>~,BbohDHSk/氄 ׋xk_lZ +pK|o)ނet%X|1υg_ipXpNxȑ/$R5VBF;ݥGDcݒ},m޷1[۵JZ. ."<'kO SFAQpΦKLd±b ޚAaM:ڶG*uHQ³KT*AD4Z-aj{ sGڥ +ROw X.:!nX‰Zu88(1b/!rĭg#e ۛds>ne;^ݏ'q3~~G +f ePņ&Ңhup5c٤)/=YL hZ_ +&x{70E$ +?,]?_[z: >Ѫ: nݛZ-Ç>:)s0cѠPyO뿼FذEB#Ƿ7x`*+#ZRU4(BH +ިQXH+S·-"K\.E6i!q +9iAX_ 0rU8x99T8 X &y}7R9=8Sߠ+ut=mh< +]hw]2TqIdzoٓzݏBypuXl1ߜow}sgv'?oǬZmlOdLRy +E(87 "LF~"E+/< 8Nz N4'WW%~'c^I;oh-l y7if׈4p+ 77>bcV\R.봄Rzɩ-}S" 'b!J{B$ Ŧ5$baM S ZXa ktF!1iR kᴦdk&l#:LU ðט봊uSmB"]Ԋuoflٚ1sIz>#80$C&Cn1!}TG0Dy,5zi`ƚq]tc~?f8-4p6ڻ̴kvnsMX횰5SS]3\#"H^l`=k9Cuus!똒+BH$Ϛ+FnBtEulF +|̋8/Bʥ!׋‰kߚXsgh_ p@$ xWonkvĚ-շGĺU?޲'Opf(s`N>˜P%%'LO1cl +GQ"9/|ShA>In܆ۦab]MdT=z,kl)M~GO NLx,͕,2f g0+`;(-ghqb KG ]9*]N6[:r;H^6GxjR\:YsOa욕<k"[%M݆)\ve*Ke*Esd*6e*S<Q*)`!_mυ|@!|f`Ela,UL  Ң8;rŨozߟӢP]]9>Xb q7Hkzm݇}"ՇjT\kC +OfTf"?VB/u"tJ_Aҭ"R!Ć(g,C5ʴu]7}] x!Hs7Z4IsRz3)fUp5ȀĈ .9H~J+/fHg,bSow[ԮVCļHQiX +![$~݂ߜz&sQեg%޶qCuYvr,}bPs`{SR"tweIɨ7ޚ:%}D2;Ϥ%㻮c]Q#Y`W/?K'`GԃRL~q{xJ5ulƓ2dƌ!IZq"&|/v<Ѿ׺w5/3r*߱,m0";Mܐ#Sػ7*ܙܥGp\$tL4`Y"2e}Mr8hu"2p!}Kڻo_(<?)OJw>߲T  [1 ^tFZѾČ UzC1w(aU +Vo?Y(jqg?Id6?2 Wmj<˴UVM.v@oWTo4ng:pe=Gc n-7kzb;@x,|άA1o!Hzg2{OcWZ|ܦg}ʞa.X"jM2i]o<懧I +u&Yqm}͠ ?fCt +xbwKâb+A&6:}Pӑ_Qt iEBő݋Nc58/\7pZHT0\P:V81BZC3q`!X0 +F& 4c]tIÎ7wۢ:Hc*עB.P +(G~:"h7lw}fdXn ڏzo@)aXx/qB)iU}.FY%xAd#gв 6=c+ꆈkCDpaWP!s`l6iN:)wk0&n_#G@kTqyeW] #8m؉aWD12KX\ql(^]6kDÚFD4%1T_HYT.VŕG;i"ݵ-0SyԼ][Lᶼφ+>Pt:JNE(sA⍁Lf[~]#ǚ <+xrNޮ0u[jW3URuUIL$A% qE9_bpl$ ;1737v}PjZ/X^fH3 İ?P]ZXu^0ȽGM]KnA:?|=kkYiP1&s`*iET֥&ġ4]Hy1ʒ $`2.>?;g'OAUjV?e,I ephϡ@ͦ0]s7L$B1SqI}4&Ѥ~13PT D^?.`m݉rk b37lH6ZKuU:J%RZfJie%x30Q~ʲc(Rq2?<]p f]gӔvC@~trB<^Vz8szk9yu5h~}>2;so P:)c24bڠyT Ot;ؽ}7}"aʝ.$pBNFNnG`Gx:gZnkg ge²Ngۍy MisNT;F$I1>CMX0TU{ޖ=O&%^[^>mͺsshp qẁ}[`x1RPG`9sUS3!b tmk˵j56hm:+I~˥ :骜k>]`K 8T1r 9ĵ㌗iMCr4z8=>1uBlLflM](\Cꄠh[/]6T#P@5չ*J.V"~~׃_;=ԼܩX99ϭ:w[uux RvmƥО#9>= }K2L@뉋`~_}==W+M}12L:![ GGQdDEFFKw)P m l\8e|);`Ov_Mŕ]F|+'5}]WRx|G&蠇&;Ĥi-NwޑŽcx{'n;^+ݻ3Q{uǠWVKc.9)#DUdEZ=ۂ:.tyWb'hK"w(jQ.;bC$ɚW9Zz7q2e"g d =aHVs2˘}'̾+Ҋ>X;9ru,e 1eRh/GshNodN}JV"^@8UmZk$Tܲ$t=F4dDM^b[lѹqocv-h qf&cSʰںƭVrb0vv#Xk ֩Ob}p7:`+FQ-(\#h]`xȞ^H~ߊ^>AYw-9 =b j{X=a?.Nu;ʓ]Jgyݺ jsv5syT>cְ#abDĀ #LiJUa:U6L̦ocYͅUSCx!@Ÿ6ƭt4g![RW7"ΰ#K/y)ۘW>]װ<&Ň݆#VB +B%'Z%kdM."B]qLmoZvi1c7rCǚMߔ~LiKmHT(5I5Y>m<='3#Sy ]7 1]L2\hV')+ +) D"jƕWe.*{x9&p: Th;"p|W knAU}0RT:p՛@c-D ^z/ ,Pws߫".9.L']4B'ߪՇ}*]..]kt ]\J1k]U/}HY_íŷӱ"VSZOL}ೞTN'P!MϬtЍ }3 AOh{d [?)˶yuOVЭu(:ts&viB+}dv" \JH8Zo T7WE3{WR}Z#ގf[j>}!κ&[}f@*﹝oQ"~QpkWi[}l9Km>)_lͺ~~Mrn~.%L!?b ,#i` X p X9n\#b׌P0?m!ꠗ<@\ NhkNRw11eX '%eC33 Y D༮lC8Rֿ{h%!XS ݆*}O7}3錟O_$m u/&Akg@(]8ɝQ.GxUie}(ϝ2!&ʃLw&er) VeN;cgHj qejoiw8NOh2y= kH+Pd Qkqfqj}`l. mbmvXxJ Szc'!3G 9Ą_WH /G)HD)R8 \!Ԁ(}_/~nB1G?.9r"amWB$^7@^qx|p[4͓>[?`l>i9JUAMwv̐0 aa> r6Ts;V .R4TM#$=eN)lB{-/I.y#P]*'2@p~=m>w7}.$E}PY/Ks.Hr<|-as\VRa/^p3(h^H>rCdp(8vK-;Ȗ3zQvluJ0vi{ʊ{n G_~ёPs9t) ܻ06)flJ:r# <.2tbߧ|^g-ޯߥ }FRD04?4(bkH?(yOt˸)XgRsiEza Ʌ/nTB6ѲтM&DJG8su@S)--6ez(C/^s|#%(P$T,U:1E a :W|+ʿ{=m X?:R] EB8UJ`R#9Bo^`5'űZuy3'U 1V"dG|><h+4jmT6Y-;#bcRM"7_6Q!;Kl-Z+FH\cbUuXHAuUHp9XVs\4sQJ~AQ zV9QTƔWPoov~kOufb)|kP"؆2 bKP:ܟ +C],TQ-3TR/eY%YKц4LxF$yCU?~ߓ4 +0ocwwFɻ +M#<+T!mL#܄0^9bilXL ;(V"3nR)dKs${%4_$.kΨis_i4 nN;yE?2Cm/A~j,oU*pQb' 곢m+)`W~J?[ 3mܭ\w\$WXѪJO <ה.CJ݊ GCVђRb%GET斯׊wUaڗPs-n** \J-'G6lЭ:=j0׹VoSV9Q'@PD_T0+ؘ]Gaht6X@h*FV1&hb43b&ʻS5P2hw @Ka:#mO(?쩬<~Wx#^~kt]y"sL(jj_l|ZȠG0u(tۋKB ?2?Q&S*=N.4^YBi_@X\pׅHٸ/ J|@=\TUSv2P=,V+'sȗh*Z xZ<聮sEC ]w|X_Wpߡ֣!!6Fqp}cY,2fe:]\)!A˴.W5}F}xX?ؑre2!Km[Q*ro$vtU*h+Ϝ|J~Asabt+XmbubKq>OV,Ј~sE(KO.H~XXTAtxB9oTn"Lv ^fIK]O\kW;M\ȗC=T+&U']EJ@֮OuLJׅj2WxA GWYݠ#E̥E +jD:ܟو yCUV!4OhԪ#eEq'wuWҘ*7sDAa[ "$=xxlPy,,e5_Ⱦ4 _u!M :\^y {ے*P&U 8"04?I`(N_( ]PbyaocNMl)_j,i奨RI%~ZIʈ096#?U+w]s?y9K:xK3 GmS"OI5q +_uXػN}8f-bZH2y + y7_h )E[T(LKA:ܟ6)_~6(lhLL|EwKH91EJUll\܎n~ZN-<ōCeN%$@(axT{v>]`fO<Ѫve6f_K7EMPM%sطΎ(,~)lV.'3/xmY0UdܢtODyL7 +abZnN88GWxBR"hx4T|( T +LL^P\%oEmϽ{"W蓦 VWT^Ѳs-{jY*ST*G颼wʒRJ},RbWH72Q;bS57V^fޤx@QK' vWmV*\|FuB,"Tגw"KRkC(Sڋ#G>IXwIguS6/.]AVD^Uъ +둋#K,E; 5LPΫ~ݧ}3ߗBG=оP?/Xx:R0I8.UC;|Mpd`Qu17 lR +#|Mn:ɢnAUTI,`3Ɨ:gۣ66SW^ .n~@u4o}"~|w.-v w_w5}hEC2/UL^SBe5ڗu?--Euh4](g2v  vE/e7==Ok7ܟ|5[`| */RK/{fh+T+~B[o{k߅4GHEr+g] *{WWZ-ܗ!zCɫ^)Jl(@NI-ie8Q]I-ie%g#eSE•bWklaگ +["<[.eᓣJF/ >TLy!Lo<bo괨>M3OLk = +:vSSh8f蕫 <A$4 ~(u~I>N^k+I?U#Y]k ?dϟ<{eU(Nՠ;t\*2K],V{LtONAN uETxkO4"CW/Iӆ*bC~5_3+I 4qZBv\j 4@/D_"l0~g}X7ޠ( S*faw3ܪ=R{Xi4zU*aj5b.^ZjѶn7>{8d7*-h_ +a;}Zxx+;܎U` d%J2D +X^+YlCPQhZYB41Vu LVM@m81;y|=񗢍'݉"ΐ*tGՎc& +#o(F{oJU%{V*3 }5+Az[޽Ͷu[.p"W8`g*Zt|\R [$'נ9hQK唕.Ja*(;mw; (l +=+\.X_ʷڧ[wfe#oF\2HIT_emY#YFs:_l%zuG*̽'1V@eb"egm\SyU:)v+rLx5<ļA̕*:-@Gio(^P,"+Xպ#Eȕ7(B."O۠ ufB]ͺp_.f]x/c~.|۳92L9e;,maVׂ": pkDGnGb4TS?ahYer:7ԴP<$֓~ʒA) (C*OlR]TOy jXIN0>#zLQa:6SZ,.0{OTkb{]'e57܍(ZwɷoY-V:@RBʢ<8Y>F`>Q֝+cɿc+Zz͞5;+*n/(^ 3YGh"-/?Y!mEpYE"Fssg7+-KGMЧ?N|Li YTGqJ2VV}@:W"ޯwX;`Gf.8Z#k=˯W{GtO?wɗe./'㏓/3C+|ci~刷GZƊP`.6n5)Οn`{L_s;_O?8?_! fWʈ7O4{W%ߑwߢx}(zKO)N>QcɵK`_z< r8.d!^:=`t_^'/~wWH12CD-Z +3eFO1HRn%|M_gIn&?f~;yؽw$E%[>[7nOinWqL~CfͿݦaZtl0>WwOn~JWXzOkI7ޛO7[/$  nN [jЛT-yMOK\fo(#}HGr{G<7j\TK|>) y딸62{3 ZMQNNղ?1&qrw7~V {KyCe'~Y?EY![h5?M1TI  @(?-ʒtc7x4b~#.[JL؅.39a?mz;2ďHKC\Oɟ')CSx L)cv9O_zn{+Rx6z^0;hgy_e'#%›f~I>" B׋;2"= +ZXz6uy@oى7Z { sS`Zqo?1% oپzs؝פVV-LDDfPUXjǷH+Jhn t4 "$OÐCu]Ƣ\bmGl[UnGFdΛOIgf,!2㡠ǧ/TǓߞ0Ag -}? Q2Eoo~cڿݲGy#Y"XT?R =LD\)%k|I;t^滇'5=>De=鰸!h,v?-(/"0a6)-urnXye3ڴML;"D{?>Z #<?H\qcIW: .g8{Q[]IX)suDR»ܦ<ߓU;;^. ~rVRMTi?FyǧJ% lW/%D>|Ij}*ׯ'l+>ۏƩДN_OwsJ lҏ񌢔 zIPM`#@Jb0h(a"e!X1/.*A Y/)e~{Vi&|뀃hD1z:u}YyjM]Oj$Z$Mâ'°r- +峲/`u|Vb5"tbGz-qqV*z >"ⰉB W5w {^E=?YeْM+/J*%ו! Ԡf gpGX$8SM} \aBԃz=&'mw^g~W/7 V[ 91]?yJ7 zmΞJ%Zo]+>lQYyf?$N'}p~=WzϸNHΗ~Av%w*w +~/Wv@)s/,~Ͻve2l=0}wr깇svX oDտ⩚L!C\!W-i~j68#ͲO=rDb=~W%v8gC\0bMM +lwِB7l{0Tv.7W?]vэ6;֗od&XBojfA$~H?_2 c ;%"UR6XqzEere,K-MG KlNU8.wzJx?-rsYώs;eCAeQ%wՏëQG]])xFGnV"Êor =՜7Yё+C g ;#L =$v9-:Y<QY`Ȍ ?cMߒeû&O$?DeءkK#O#~.yo.?4ܸELvE6lr7"kS?lO!#Wҿq?%\/5؟Br_F~ۏ ߳?(9ȕ {EE^"w _xӻ*x}άON˷q EláR9CX}D"F=nZcq6'NrtE4an9 WF'U6b<"XG@p[zC‡S +//D[nґ_t^rW\ɐNPd 3˗?,6_[e-)ܲo&dMXۯ&o_F- qc`'],E0]-Aq6Ig('ApO &vlhQ_NMWJ0:OVYqWK~R^cשt_):߿,&#;{&⻇*yI|>M~)n"0^$6)$uY'ii#rL5WrsPh5k*jH4ѿ qEiqfi:rSoFJ:S7 6tt +#i*!>R7HҞ)RRDwKy?)1JrQ*^,i9u72%4JN(%a2$MM7U'URY)H_6m>] 芟JXIm)+dE~qj5up.* ᱎ]t*{k{#q+cB/q+n]p+Ԝ$ C?L@r4ti:˥pͧnra7ДoAS:tAt[ Έn0BRV^]xH st4 MEh*)&{#{ڈi*8Mqs肦Ps& +#Xc_r,g4v: +%g%.C3dvkʦ14FhMIc4i0FX5Kߥ ɐ M! {?La(jӧ5o(5d8LQ'{ xc ,*5M!H&m8 i.<; +O$ +gEeWxyNJrio}ZOҺ0UFN5{a NjpcNZa/ ٷx/'t#DyYޞqbd?mHdU=m%#]M}w \ nY:_-(p-xJIᣯ hC?!PKT!HTa?Dn*4ziD F ?Xd<<]xK7ɜe4S-QEH<^Y<൰<ꌖ[˃g<$G%INq2/μh9KțHkrB7vcͪKT QNB9 φ<-my m) my-[򌴕NjP0B8J%jDE%'嵒cbQ#@-J[z?(҆ Ks7 0.:e%!{,s'E^0V4<$Pa x/ + s(+jxCxy?2.),8=V*[N8YT9_O7šG>VvBbx7kV_ƛVV.M{ /rڌ]ƛꉫei/| +Yp7[̗‹04g.^|$6Dh*JN*9'Q%UR8"HT澛S'\ũ,V\9RkZɔ*!*x +ZZwCt7t[in0J 5_-jEO"NW :dV8 6qպHTgt7tu7tQ$ IuU-B?@"._{&FպHTgt7tu7tvѩ뒅JVK;``U^ Naum Lj,cDFu7tAwCnvn . uw\͗|Y஼4rh/ 9 /°, ] - DuFwC[wCny>bE:0o򗱇$Ex>ɜ4rdZQitպHTgt7tu7tHvw +`Wy:Ͳ:zid^v=kETXc-oXnXn?V8Ƒv̝{I6u,40qExh$˵NqS\w;!;Ejz;%L4 `a1s˅?0XAN8q82I!HСP|H#?ZM&N 1&NFl4A|MCo Z9sǛ/t  I:Jvcwsl&hFHTg48M?AwOYM(pe$/╖bg^u1ѡ ێNvⴰi$Ї⾽{ #,$ d0&e +8Iؙ' e|:k",LVGk1q@bbf_;(CҺwHEth!k;s]A@Ϫ<'H.ʱ18ZsK#E\tk.q"Pxb,hL$JN(f!vIFAR?^<[&ݰ\iQ7\9WHZVUmO X9I6Јhd6"[֬p]ןHi8;ԉco94 DH& }o0{\p\xgܳ +mvHkIcZ5ԜљrMW˥Bs +,WrK|[B_KQ-B E5_@[(yӉ 7j$<8H;~8'b?Os3O zq7yov:c)th[]VuJt`ӳ&#@ϐԒ9iգ熎X-՘MnX~SD0=c6Y5 l"WojTmAҳ&F2@ϐ/ԒyrգZ-՘MZ~k9Zͣl>/ZLWq/*Vi䮼d9^ր(Mfn!ԒnYmÛ-`jL&K +:: Mt$i,Y=,Y:>$~4LDȆ%z֫zЉ%S)dBљz16EA"E?]Hl #[7 BTR%8Ƽ3dݒZsZг՘M-5 V.$JI-!aV*\.q: b倹81=G$Aҳ:3dZsZZг0֘Mv1G"̟wI‹x 'pVA%"ӳN#m3I +$\p2{!j(ޖD7ȏwnQ >r?8 1|~1Wbݢ/1WأydM/|*|̶/F#ߧZ@*=KIGutCFKU؞6_}EZGi{XoT+/rG./,=,klV/OI&/v +S$|_?G裗O?O.RBR3BF^]9A"+៛e@xvȎt*y _mԇ]o~ CevXOX#!=,^:Z!gNp-9?%qGo>ܪrRwHZtӐ::Ȱ>١gc<\t̚sʶ韡'$m͋f +Tl6ǙF@y!ʊkDTHbEfX63ͲZO C,C)~}տtgU +/\AemKߡ#-ZqpX2k,VwLVJ盧&=?~]dէzY!?b!1{T"0ZfLPL>y o  6K;!= !hY"\܂/'a.{o]-=y?aV8aEVwhy;pE9-ӗʗԁ43_j )&W>|7Av~=IGƟtꍏ@o^o@*ͫo۠b^lD}5F;JmtM; +Oz9?!޾@g|-*™A!Lr*2 UX}'8eI|L.~P?cg" +?%W1VoFdo8kxW1w:xH*}2yL}6a|b^N3rEp ݝӰ5/Zn~z KY!O%ROv\(&##G쀶}r o24bq :yqi?+8BT#859B"8BrAyШKPy=;m5aK=9&>fiKjf}8?_T0\۾eܹ^[5#+޼(Y +E0:5`5t xTwy܁z=Tm_^ ~@3 #of_~Gg N{|HEv8dkA <2y1fnv}윫Z +?9LYTvCz0Y,^WX8yHߡcAtBNj+N 0\3XG٫,hwW6#O]k!r}nU-5cʮ5~[A/:a1:8wX-@\_nwۏkDʂ[t"n]_/D5 +ӓ,Qυ>="ΞU0ԏtrT"ýK ]1rwdlaVp 7t폇܋ftƼ(w\ Dٴ'{bKrZe:uCFyzr8-&)z<=d_O2$Wmu;w + Kxǭa`$ {bMX#6{ sq:jqG+Bᦊ5_t Ax"Dz% 5$mu=I17yMY i +n8 Nsˡ Bk|L"(M*kudK$Βg-,"|% +%flh.EdEx/d:uMh=mҏlZ2%?%45_y..@+}|F83yholďiE+lu1n2_0kOE\:lgwop^@a_9?mǼje:^R٥%Ȼ|v%)-lѷ븫F5p+one$1\HqQfKO؜ݧۯ ]j=F~&527s7w^g3$hz:0[P{'&&L1G8;> ^qvt~r>A'LJ8ɶ?{ !s <81Qu~ ;n8m(\  S^F@S6=J lu|5t 5mؗ?2$L')MД*XmA#l `d&ޖfSv:9(g($wQ1\. lem'< 65-'R\0Yoq6LA,L \k~y |ڞ2"MiA2H@h3 rL#>e˩D50 s$ aBSϋLJl/ 9{\(Ӻ9|.*mhDk`TE;,4`6GjO%YޛppUP|]?\Gc˼[gvn@gm:p$ݬÀ /NqܯQAx`&2 d?ȥZoЖl&nvSxNP*\&ܱsk]E,bᙰ]͏0Ä~VaץC}yo1)N8}Vf+pSQ"=bXOȥG t`Gԇ#r{xEi+Ok`8P7t˸2c7y&J_oӒ$Yg%z}PkT_yZ32;vDyF\ mԟٍ\eGvXA@cɯ=eh~XD0~7Cb _9Ш8~`~x .ի?[,|9m'|)~: + _`k]x?}{|pN1vs_] tev15`yoy|o$=r䫳 +Wpԏ6ՠ53_ +mݣ-`zO%c<7.;dvR!4i $O+垝7r>{,gɫ5ײ re$}7A-w֤Wݷ hf]<} ?31EzQ(3FeW`%o+̙]1ktls +b cm蛿ƪ66KBv:v#vt~ڤ]O¦2X8דEzw{v?:S[ ꓵ[ g!2dhiBoLlHHO.Õ>|YX+[N6Ñ,4qRE<Ө}#7?nj`7:52 S3>3Äa#Nxu*,MH9q$Z>;}'z|(f[hCd3d1|%W8N^jӥx毅J@)Ʉd! {@C8DNSZݙ7s8a?.NGʹ6;5W6J]zq/<6L9k\DrX0fZZ~Nqv@(z5\ľ#Q!}s #:d[a ,ζ;]gP{^Rx1z /}6AЉTmӇ%oGhf1} 'nrLi0IX -:뀗]+rVB1a*Nf$HHWj{Rq l0:=\a{`8>zWvĆ]^fB? + p>}j9 IeAi W7JXb2 Jm:QސYoQķZɊܲ%t=(KKgN0Wsg(fOf+bn*8 S\&l.~"lCdM=1L5Qх! }}TK<쇝/n7 ~ypg|IΧ1]W/`6 Uyhԃ_#qvI_h1D){>0CE(E9JkQyuQN= JAq"iS==Ub$'-|_ެVt#Ux= +T Tdյ$>d DC͖ڵ^x ]7!~ENmH 4!ze{{SUuJd{Э/xsX뜶}W?_šńS`EWga^۬&'Kөb­sDonz+-֏$2ѕ%O?O.'NMu3n`*dUʼn3މHȭ< +d_ĤL!?5Nps>]q<kll[~v'e݅C{, ڦ]lGM?BӘtٻ5Cqq +WM /x+i9K9 8,ctl^1w&k(w QkY{Qg'o,* (=>L#@0A˵`i|zD5RW Gfr-U}=ҍH[[ ]Ya#C_CKVbz2~82yYcΆ0#v^ھ Z`+مcvkWf3OoϸL2! .d9բD/gi{o'Z/ޚ-]tSX3,]m:u=vo=ZB@$UPao1y>3Π(YY^Kq3Ʊz1n JIu ]O߉_[ qg[Y MK&}]>puqL\>U|hŪBڗk:4iu#ꪝxTCrh%gKOXP 7u.tv_?f 5^c_G>HpKHڻ3oL͸,x +E2Go[n-+;V\Ȑn1^A8Fxy$ǫ>#xgS鋽sYc?^5G(Duw7yNV1{3 h+$EI0ݼ6w`bù8jFSe>DŽcJ$tU v~׍J +EҊGkOm6cYvƄvgWQSt:c~bF7 xtle|zk o1_:Wn/epȟҘ5ً#!yqQ6R(IUynn*t٫7IWx߲d +F!_789C3Gl tzzLsdTnT4mBn/CG-CфPCt~2n3 WIo\"MɈ#il~KR@ f>'û.ѥ0{g$Rhg {{im96S;L4#֡ę/Gbhf*[oZz{V9G+]c&+: +Ф$c^Wa ^`V`ca Q닷X'ް1TnM܆Qc"b azf^>#2"bt%[.zŴS\lb,mpG=c^ɷB.K\_a2(@F[|o)ifƞql:|ZE?[1?W7Ns{?A>Lz"_莣8y\EK~ƥ(T>]bhAKl "#E5n=,mkv'.k~]P~V`i,3p9: ?Pn׸ώI :~y +火|  + >cN|W,\%Ɲ\PlXXueZ,?<L͜šЈ5a]Y6G;0č @֯~5(LI Zd43}Ēɼ%TnznB!eƙTHⷾ--|\ vB~* B>?kS= +M{L {IN*zǁ+l!n2NI0s,aʹkHo2`".~ޤ*#8#8p|ji07bݯÄ)y|٦="=fYz:0"`Yz*\Ú&:YMX-7sQ\BδɂUn?7mtJc:f&q^y=[;cK fԓHAQ;AElFt i+> +$V ڋs.˓rv}vv=4\G@ 7;\Lsm/B4/?ύ6 iqۯt3;dwEFs jr;*#"~`ph'gԳJ_{dQT gtb#ʙ2jf[S`8pq6ITWeCrq֨s{gޱgLV)nˍe1_hڐoM@*`L*5+%5˴9&+2L.A*aQ+JlI.HA⧮jpLkI:sYӥ2P\QJσc5Cs_UI=1Jr>ͽƛs:\UOhvMt:}\䪱X_5B_2/h$?ҁ=~9c0V\F0š㺴CCUmzq[tݕR]0tj?b86N!\ >׊Npqɖͻ5VӘf vrxْns(֛|V]n np6`j&l+d8`mT:w@$ +Fa@3Os A3~6яxUBl MeꂱC~5k^ORp̯Q(b).&vECB|RzrxO*lx @)/C@oE(Gie7un(iJ=h9{J~ Mq +- spa jfyD7n6C3\K 2(ICM f^N2{mvOG㦧>nOirgiH/+ +~d_\]7lvV6 Ea?e<)qUT&vy{eagŋ{& l]ђNl7K^u#;7%J~9W zÏb _L:a@C 81qRSAܜ$l \[$ <^cN|04MiداS<[g>rmN 3O6z?}@wAp=A+@khM!wz=0W@2%d}x폳vKu+:m6J[}]5.4v{2NNDO ºл@jҨs j?_f0bEŃ/[QHp?y?R[tP"#4ySŞg4Ŏxk3>imt銪O6-Vᗹkՙ*;a)eIh?mW +_"9_I.x +<Ѫ"a"YR>7&:^:.%^EJoJU@|KӭdB&T57z؁bS^F_iK76ؗsomH?:>~~4G< ~G;/ʵ𡓃_g Jv]vx<QcDQ3MT=F9Ob c!hA a12za%* 3OqDxNXo3qW%@8%9WmZ.-6ֈ|9 +W>!]YA۲(:ow|t`W~y@wַa1&˼~^f8 'Jx|y]!6%`Y0Rz:rkicvٵdh'$U c%n "s|^G̙L2yu/%N(gg0x(1Ga6O#C!F5{ HTFt/V.]7Fhltz}u[ZTV'1T'{E8]R9Zew$o#^qGPwtܽ+}Wp;NDc22m41B6I;Fw<{cݑpNjw '' bfbO10 $~';s˹d~Wr';]r6I|߽*͔.e*,W#;EqG8x_csN^ܒj +X.4ᎀgT Xqǁ]w<\xqWw2tywhXP\(2D!j)U=H[l%zպв nT/hf wwo7Y wzSbIG ~ּ@Ӛ& g'9-/Fno +5XfHZks5eٻmbͤ'YEp}}9ptKÏ5)OI<]vLכ¾qȢG]3̢9fs])"ӎyviy6g$$68g^k_X!?jJ>B- !RZVDŴAd2Oct]ЩYK-]J>G!jaF?p8脫=ӣU)Fkt+̤hPe +ʛesL€oNd<_`"}Η<'a^ T 8 f)pb?9$)%ts5zIhVQ#EV:;oNy X[RՕ Act 0ds!; +*&b '2!Ϗ $4Ɉ9# s:Sp'j  l+Al 8.+{B7mzِL2"qn |KSQh R{zZڇ ^1ž +z PϓiF`1pw+1 y0=|Hz> ō(F+pF4jxF@0b(~:5K␎땆+R!) G[X NH_|HFϥ:gbFnJB`]RpB1 {-Xs5^T"$\!H @&0Dmf;j!yo<ĆEd!׹^)r}xڤY 0^U1,l\ acV "rǡ8ԉJ=hXQnT2@NL_a2MVeX&ԀXz6 ԁ9OzӨs#>=eaݬ2rb00 +(PJ|2<i}#ֹ^`IQb`I`j0Zi,Nt;<1{Qcc5کZӟ1NĊ(V +&--֒H"vl?N3 +sd[`Tp=Rl}xbrtƷ8yF5-3:L Y+O +{BkcG74 Z7U7;1߅cëj+85>'h28 ˤ8>uoYcaW|3֓mg(doi:D] +~+CHtom^'FGzkoքh;6f}'bz% TZ#pgghқyJ".8%k7~KVVlb +k٦۬Ϝ#J䱸mMQjHI/d 0Ô0#ɫr#Mɞt3yI۫pn m1K1XitzSjP2ec +sY>q8U0,#&0pp!q r>W<d@`Ef aUA$?EFQ)Thۺ8[$(h ɣ"ߓ99}|n|AjOsE(1!?6 O['A5>)Ok n/ W-+U +0 +! )u|A],3[R~3ESl[;y˥H>P.T;7+2-HtZ6nr+ɮƭxΝҡKAx f)m@&.~! 0wX#aNr ִ A3^O{,۟֌X+TFu lʙrU+ճ2u2«1,yB)ȸh:L6} 3t2CÕY^7(Q)om v,0y8KCaPX:RwTu۠j 4_FңY OchAEa(W\5:F9k"4>{X*&9q39˞!. /AG%(1S cE(VB_tH/NT$=bދtR)=s$&e,2ctxU:%RArvRAm K" K$46FR%wH K<RR8N\ϰDqT q2t#Òޥ KՓ°}%%V=_aQ[aI KaI\ m@װ:%" Kp3a0. K"ZN';#Ǝ۩Oՙ0vPZk@f&>afB:kptkrY: fkpD4Ys-S3Bc<6`<}z6QtI7B\QLn͹h īvh@uH6v&á+e?H S839"\ +rz1؉Q.jr/?u8eQfNͭWmΫf9 ax +M`]<<# oѤ] +&U6{6kbUbuc_d=3pLޫUԖfkAj;ç.A񊽘 !}CvOj`1~úpm +mt"%yGn 3S|j^#+]# ߥni_CX PεK1WI.zE"6A=,K*7P⚹2QR5q]\dgSsԛQ)Aaۗ uIZZS/NQV YՂX [6mQQ)r?O"-i֣p"2)&\3+d{Hg~߉Hג:析 +-|A`k2S7Ҏ);Op2u\'VӻbW\$C\%8qԻLmp6,8JXy8yx \I4U\9*j,W\7d:WuSra^+etP6I,>eQ^g,$N`jƒ4Byj"HpjZpjL*gzrù-~ 1{ US +ܿݫ`(*bzW +zqb $KRF<%%vLepwnHHN_Gs JT0nH\7 ݐ.A!Q#:"xIQ)TG4 +2 3 +2/ITޑҨZ*j8/Zi$IT FUcRH'H[iO,~?Y)l *Tecuڡf Bғ"Jل+7MtbSTVO +FiAO'F9(yȬX,G gRba=Hڝ*n؁W[Ayu:P(|(|q}wBF9>fR.Zy.+715i*O |D`hj T75JN4JN/SrJ"؀Umm2TB(2\;$ gtQj,õ%N^\l@5Nh_[9]6 oM6?N}+HE*wj!M-r&UH84sLҌ>ed*h~gJrlꬨ)JbrFE]J5'7Pmň#VXمSa3?ڷCQ +ujrd WV#{KЮ +gJyVAx͒r$}%9EJG,-2WMv򐵜3V:"@ErDU,\&_%ZS\yd6=ցc6* Ϟk<4Ќn j`rB g`)\J6sa[ga*JP 9m6ley%])}(ׁ:fY0|h{Bik.I&^mjC)|A@6:SIcXLF`lI~ buc_d=3qޫU&"I>e1=ssRpޘ'u9̇Ncb@iJ +uRfW/-m=,hGr[ZW +Z,:ʺoVKWڜ \A4Mz8E R4YbUs:rUvl 1v)!@+:2 MݴC^Ӊҹ'_\N 7NJrӺ[u78Uf3Oos`.Pvj[Vgogx%%\K4J$8Jɇ-SÔa$^CrI%un:e%!qA+ׁ9Md@VA;w{4stUtB"7/N;%0h7E4͓3+<&w%5AR7Z/2$6(]BrӶ=IoxWǶN E,ɻvϨɃʵDxlfe5̵nmR/UvW/hD9.hw!??`'۵WuB) o1*4YbQű*Š-*4ZyX!ͩ[o6̿ +ZߵnCZtURgd0k ?t"5uϛZ9k0+iA٘9]xT‘;i¯X2ȃRZ!:JO M/ ̋z96)R?`zk1[IC@P> /K@0 /#tMzJurj潾Sc88`GZD "ܥOW3ni|M'f3VkIZ}&q\Jq/:F,}eMv ܨjzͯ*F!h5 Kxy&/_[CA@|ņEj0ŗrȶId`%LyJc?hAP_u*7K`Y΁wrl Lʭa~`#菠dEA_MCWZo{L,6mkYuT 3;Of' _jŕ׿p=>j`FlM! +C8h(T/k L7-'aTw|. dl=`gO}1jȆ7e7R-vl5-GB$o^rTЪHt(QQ jf? {y2KW̤[C f;4UU&_[jA퐬5XwhÄS$sjͬ6cIuMVLbhmw?'b1gFȃ͑#~x(nZ%A8g*ײKШO&ɪ5l5[R5iZ).+PNSA3~?{SF]ˤ; `W.vk'*puX*NIUk(1f :W>nr W&~Џ ^J2$IqLs<$,܊$SW2(;M7^P֮BYg+諝MשOm' +NKwp*o-88Ww*&&Ƅ#GD~ɈiώѴ DU{ Qwy=jP^<Kڜ~I{~::QԻkck& ߼avٗQ\_˧l^lclc<6;uԋ&]."GNGNfD=v<(Jw{;L0 %zr9͐ygb5aH@Y H|#2Aad2TpT3jfL8s^ `.o\ & & +S"rk<}'PTMz`&(.s{gΈqtYo5B/y_M񏨨KșlHƸƔ Qh(B +2a\q/  @]Na;bG' s\U F'b`SoTĕ +a + ^*h4? |1]Z50vp7ePT4z&.‚>]qG BU+V̧6:@Be(T-5TwXM|C/WKxNpk:<숯#W_lĶ:(UXQ@lM}xx#:^p҇n'Iɶ1R|̄?^ orȿ_gyc;` ;6k~7s~LQ¨Iq2 +w+d[&:ސ=aq&"لXTXAȠzF&m%m-ttڱ}ciTD6EQ9q).)Ruw'yMm4<)ۧq,;c دϷfzYm[Bm!6?dʎ3Li5LI-9-I8_f/А,KxJ@UʨWl OaG@C~g]CB7H]h3)Ϙ9(=(h;Bo[ ee+XJX~n _&΢9]:@xc^*Vfl J1z9qj +py8̻agڸ~?#N:ќ2n,[&A'{E&LP-v+D!M<)Jr[?*`XhH-P. RLVu1GRJ4Vg S5gqhu3;a<cME_ (wDCvAj;uPWWb[(FtzdՉL4mE@$=8]E-8` | +Qw,pP3q?h=m +q5  C2u #ag=xw?rwp>/]G:2 ?e/"qn\P9hv8="yX! xp33+hQ'Cv1hrSWiWs>sbW}m F~s.xn-܆aϠB-ڬw9hs'pF V/d>hȥ& 5b#Un8&^llKS;P1+MԤ5&@P KP-IG:-yC ]L;[n|9ԿBUuWĈ87PfdU\rfKbKШ[l^Um+C+{3;rˆ ,  9ϵtdsDMǣx|GOՌ?[a@_KMvrJ&yTQ7}+kil'o^0gv lkY@lG 3W kIEȞ3otxcE5([OOI-}rgh5H3p],![J:_)0{,c + aưBt,IVPQ+QE|ZK[ "_m,'ۢ'¿HjZBx6};ͧ'ƍЮ5OP! |gS0 +ŦY,G:jO+NoiBK# ްCˍ8\m$tVZΊc\u5{Ȃl9%=,7ƺt#CT  ,gu$.愠-W@+Gid9D?u3kv)3?vN;U) +6ݝ<U @$J,0+3=lM@y,n`j74G36ë)*kAS YF¯Bm4 #4)ov$#>6co)HD$% +M}H;>{50WiЫSf:\_lXҀp[Ro5CW@[ C[X m%* ̾]Ұ:k0ER5=0Slc*HsHYym6i=#:zaPVjls,nq:#Ncs4VZ**3o _*zxDd Mt) Tt:( rmYN(q%Pҡ߈uWM۸7 +T%b@*|p80Eμ%ij8mKĭ$ֹ$.KlO[\eic]9xorݸ4' }l=T+nrcsniZ~Kǔ@^Nݐ%r<}ǘ>[0mQcųpR +*渼-Btz&%>=C.4FyAiC h]"Ф#B#lWB۲(uşXeTX~m ^h هybgtΦ/~^o'(6)t,Z S] s+*cVx.5!fN)Q#.ٚ9nqa nT#c* Gƃ>&^ 85ϧ(xEZE~4 Q'=W^(r*"܈D72A^]0cIkc8U-Q~3ݙͬJ[\dwS-K6[d&-i5nN2/&:Qt[a1M.huV?  +ttl}gc)޻EĄ1.6f^qLi}uG6V4-ځ+]/ԨجZ*\23lZ#!bmν՗â չb[VA*8>Ηm"{qq +bA8k<^?砀 V8k7J7 =*JDFb G1=% +wgJ/ 㱲zuc%fjcnبi%6lWt$ypȆ۸T^7ҨM98MhwTfϞy9_(eȡϼ!u5 ~V}pj!x&^m(GvTV:w +ѹw?fWqb#\ML7y3]#>' iҞce,0s\չ.Qx6VJk]*A/IKG:*uƖYakeGC;ѧ*Oz" +meջ²:T1SBvZ-st-k?7_8ޠQW/ k&WDU]qsl*I?aoRW_T5[ !(İ1\^] tpg@R$kFZ![4/aiO!77hB!`fv ,E6d y )SL};!Di Cj.\';?(C{Xi"A@+@.: J1`4?כm' `J$tfo23G#l;~Tv]7P ^bQɹm@"?ɁaV9KB \~^ yF?2J.̛ "Ƌ^i3 g|8.<+MWoFS$_|7Dg$.'8n߀c&@[qs kfůf]U*I_=3f72gxu`Ձ=]C_U+>̯}bQk^ƇbϾaMAB8̮1ɻZ3 / PBflNaP&Jd"04$X6v{Op~#-~wI|59NXq8@i50P5+N^eBbydrlr$gLf P;EO73!~JL)8^gq*؀Ox߷Zb#c˳9@2AVg֩bRTgSMY`,lLb#)$^jbofć˘   f1;"mtV`:?dtjmQY C'7pwnY9qc<_(~A7m<)1m]ki3{Ұ&fԚAAi[tuW_H4rnAJ +J>/?&P4'VAq CD jw_ Zawt՚dVdZW>\E.Z_ʘWtJAlN 1}dAzXfĚh Go.ڈy_'VEE)F3"pH|hEQxY"F2pu9ōď1,ga]DV$?b!Lt*[:AN TFAeZWP;sܭҡ#RJdvoHĒǃOQ$E%xE V"ɠT1?Sn#G:0:Lջ z6A(@i,~ "dajl;x2ƃzv遇] +h{$l<1ij t4FP3 9{n~٥Klm a.o|oժD({ڡ^"=RT% +3ǝ+QSƴ w@mi@uo%GIk+&pn&A Jk_~&ˬl;Qd uY!ەU"S?e4nwd/:nM&[Iukr6b8୕ cg֘+L990p& i M@Aj0?+XN)d4m))0K5b,S&ú(g4`c> zaRSL*Ҥ)@X|S@Cbe+Rγ}8 o +W~uI E-f¤ll W#H X# !ðaVzrue:"㈌m6dA>6yu6~6L'*qdՄLnN_AAʏ)vd:"kW5av|{&K=>Tvv@>j8q{킪pn + +y=uGĄ=ED L6}teɪԅy +н=W} ~fqC jD){C'mЫSEo7rG`*L)(uz`Bj)^Xra =iKB'@i/s{+ݸuV+׹R㽆fpOO}%rK@^ϡ!7ƴAb8qld#CːC"jN;Uϡkd'aUYX65Wzz v⛽n8(wx߭p:tNP +i}~P_o_قQ>01"D4T jc6y0ЏTVꑜ/}c/KH|.&I4DS)o=M֬h꓈Yn[fm;jhW.a?ZvK%Ϧ[XX]jY`0_IAG3%/)00L33EֵVb6X11lo4.G炸-ܠQG!\jE[ +V<يkrW?' ./d}I&^$IJ#q,ܣ27Xz0GS2Q籕Jܷ;U.CK~bIQVP3eoo_5Y^u!*+0^0Ͻn3oa+}_Qd̅'CF |!JX?HK{l#AedR>(p] 3:,fACa-nkX{uju08y [Jd]͒a _kmv1/wzK$6^<,tb d0F(~9S/Pl)61Gic?yzHl/~(QwF@ÄwI`{Mh0y8ݸ< +§`9A> <^: ʱ ;!?s\n!_lwRmUˑDe$ $O{t)Ma=uheQ(k e 4D2QKw!v]!nE\Tw9p' )gU5Pc@x űvs1T%-}1O KYun5աSFK/#P̛D m~BN*,>KĮEΝЀIq&1mos]o#PPq%m\mpt=2Y>9#f_7ݼX_ +*FĢd!fpa2e (q@$$S+u>)v⿒'O֫N+LeQh]؊Zo+FP 'q>U[!*MuJgeygKv['* 9O4OSE<# '$V .b R C!#20" ¶BpGu>(d/dg2PlM9ΰʹkBN"|iBo pðW I8`$~KWo7]΁Ix酘5f/=JVX6R-7 Tƭp/HeoLcזJ8Z>["87?3QQ.Q<W3&?5^&o~8FIK\5rq[;s +0|8<s:7Jn^9L<8\%Eclir߫B106`JB4۹30ˍv5tG]s:z WM ~n#)8Jgk\0>g-Atg/4 !j4+a1gN2,o~D3GTF\$:~EwŢ2bуieAN$L텃;ƐZ nI 6Bܻ hAHQ.<8f`lD5NmHWS fwYjzp=^g'a֪p ~W Z .ֺ{CGI??2?'P'pg,%G ;QW@R#D1Y#@!p~po)+] +SܖLlH` :Y8 +cJ& ,7ټ(Ng6ns*ñ8~|T-QɡmzBW4I\8Ñ81Ce~ѻT xDS(QD~"t&9_|+>wrgsWBdm#][F1:3F2@+FtjF*%&qڝ#9]KNq3N }r:݂{f.e;S0w[(1_!by l{fx ^b['w&1IHJ12Fi>{6)lAozgao tq$׍'*N7) 8)ExA#lCà4XPs5QGvW}j5ɑO6|7PbH?`!&G. Wg0r2Ь2*IW/LDZ߁y95!%o +zwKC68)۱?[ Tzy8Qܶ N/9W3FfGaPCP(n xZ< 3hB|X8ZVx`ĉͣC襰H,mf\TB*/nԹgoXC=0(ۆ]_jV/:ǔMBg<kv佉r:. (VgO}{sv9-f.H0noj8_pK e7pWe=)ghЉ ͐roaŤDŬAD(.fWbSc:1xK{u;gݰA#{ᇷfI/$PzjyƑA2*ϴ܇0}vX^tIɺ5NG RՅN=kN4#!x$5H3Bz1dsrưt+=-s&EGr1UTijwSʕS>']n糡{݂$$VDPm7cSgf{j'Z!/j _^sZS{Ў\NC; +9O^Z 6zJKc1U|]cf +5Ip < +W̚HǏZSnoXOT}\n/ͬN5CfC޶7htt)%s푙[v}<*E,;5,B2TBOtjU4 +4ڹSjP|&Њ&,Xdıg'ܫ`ݓQRP '6Nid3jV|]`aTi7D(h\59p<<9T$'cTprm3}Qrtad{de)d mcv|m +YB$4f 2ukt1;/mߓ!ÍSǿCTsI/h]8Z/L9otaa wȢ͛7+!n9$4oYTpfZCq|ϸxfeRC+mvaCT%0­xWc<>Ikျb3A{%Kih w# +4G:3/: GЏ/h9zө8~2:cYy ++;]X$ 1R55;1p\b Nܘo{> .2)AFap+2tͫvz%gK~#\e`߁p>ܢNP窞~7zgP4#y?Ņ7_}{܍Q[aKzgH5pǵЩY;0:KK?mg`z3P?Jc t$hq4$@H59On6ڑ,_QblB$MTjyg8b>6M]XgVBRWk޽nf\VS|c p\|MD3z뿢\ K.71~A]7,;nv(,i,1]D<wK5֭ P {`%AI3Ez {l'Zϕ>أK۰N]Q%k7@aCÓ^:ۏ!s5{ 9:'`٭WjB8rc7~R3hqhCڸ q{u?<zW@lF:El+|v)b0&:_@?NKwK;|$ݢ5HUשҧ ѯA.I9Pc{٩=OEETՓ,h]_(la+6ʅ۲RaRhQze3s`r$֑tu8'AM?vJ#U13t>Zڝ_ g։ŸִU{jnBjz;\# ≶R'Wr`b&FO5 [Ǧ(l7pX+z]vpj8gu;#?yce +l}e4w^¾ii]џ-Ky|t6״/ώ8 ȢG]E4S(Mwٻ fMT}&fh4ةKDLJǠ yB1c6 @@€HIAOÄsSNLjEӂV;o%ݍƨq1k\eqa:׸j\W +ύF}..S 2'ԌohϫcI\z҃@h/Yjdfty^]dqc/~qt>gjdG0[7쐾Éq%zbD"ι8}>glP<ώ5#憀fG)˘fGq?JmtDyUqZv# +  U@;:JfyjZ$rQRƹiє?g BɯHC4Fh-mpYZYۼ`bT.I`#;4q.־bCp=r(u{$(i"Pj)Z<=dP;& +A\ݠ@5( cr6ri"J)Pb_==-cvhXc>-~G;x]IW $vlFM#7,$8.z39&R@][ߧ5G6界>F q~ԠCC(vtnnyNoUgM?3;g*T1gp? Xh yq{NĦ<_0'eLTm4tXl@T B6!]>ͲumnӳVv Ҟ+VIT.{pr\Ԉ5|_O"9`뢬+l%> mY/Ɋ ?V)]!YO%eƟ?i1+:3 n΋B$Aj}-}Jsc|45hrJ@a|[HG?*c Ӣ9yޛ" /aQ?߇sXRBgM.|vD.4a;4e6919pVB,+Y\9/' Wmu2WhWǺ'mq_|$=Uv3՟Z6^|2\) '3*m&Ghz? +.E0*NWH[4|H_iwk blx[$yrb$wj쒰r,`?#Y }2}X[p;& :lr[eydYzӺ8ݲX)g%۬j_-fJTbA x,Eq8E30S\Fog0ɓ@ӟƘA/㬤05z&`+0FTK1?_I1z:rR&B[/WDW ,Ep3~{Bjk缝[D`.89$:œxp< q#m֋vvkYUݨ.w6f۴g6hsQlZ;өMm8~J|M8 G=E%Ovu\|)^ez'!AlZ»zaE_N0s M0N"CWYOْnhHUf!mE =b'户!n1% R7"7I"4)’ 5rzf~M\)6T[adhXm^}vcLY ^tLܡBۭIVAL=^uDlMufVR /[IBɶ[IR籕T҅$b\؏R#2&E _BΪxol7Eӯۇ"`hїgh4:YQZN3^s:0PҎrM ODVm@e94K3L.L8$cR`:;z ֫y1Yg>>` % Vz=Hլh*d;zBk F5AaX%izN{Y(b\灖Uտ9DNiJea][<֔M}L[ 3LʼZ,z?(5YF"(|}]_N" +qA5ƅuVA|k|a%Lp#kj隖5vvI.3'bNMFGm<DsCOSMP@O4G@SLKAwT@T\JrPzMP>&9,Fv@>_Fzsy[IgdfJǴl0{g) G17zWy6_zKoegvyZ3qmxsr[9u9|зMy!Etk^MXxT>:s:#SQ~ޜ#o:?̙$F|ho="{dݡ#m:Ewwetvc|gS%eQd' |K3t5m2_)\'ӼDDI}}Mp$T6HLC8arOZ*)q[mθTju@Ã0LJPT\A\cS}шъV\V#:'XsW΁Bjq^ثd> XhhnPSuux";9JAUrE$.mɈ6$,w.el|{|<5e}z@ˬDuƴ:#VMN7,L-*ĹTŲU!¹L5k].>^0!?ԅbj$tFj1[ۦ{*W5 ~E HXš[h`Oຈěl91od,2g=Qje;2ҔQUTe*O,K.e-jMOرABP:77|Gd zG؍PB)1mw bgmmG$Z"R7*D3QoL-!3^0G8  3ܳP:DKt524H:62j^ۗxZlʓV;[;L <0Y[oΟ~ $j QOD-;w+H7z4\@:TFX"L7!V.b5%VF6"Vbg, G&=O@5/lQ $[# V2Zg,G5ߵ}=2ihPOV8SL|b뱤N.Nh \Cٺ7h 9!n#2 +u.}r zv3T?<5PÞI9`)>y2?V' bh`|c:u;޵0 ènm ώ100,~S0D\Fg lVeIߡ7 FPE-X1-DIo(C6piEZsPQTyhFE+Ð{(&Y+& p6Oz {Ns|Nan^XT.l%(>oq7UVst4WE%&/] =wK5/2}> ًmnDh=W:tph~mz\޸N  Bp͖mIs4G R:\:w_o1Ld/(zg =w-0%|ם /}kꪶˈrx]C=3S * {ʬ3Ԣ9  ݚy D3鯙$Q~? Fk^<_ y;`]y.:.ؿœGh'ԝN:@>n"fzt^-c:Ɖ#HLMdXH$Meڎ#nxrൃW$T+( v(ںt/jȊۨw] +~SŻZR4m[,S]}3>)Z 76@fGZ3&SbtE&mNf}S>' R^m ."chª[ToD6?VCܢ{J7vSnD PּEljY.[AŇϋ`^zhȟ_OGb2Eğ.Hm+Eqk9 7FdꍖX;|(8X=u2SQ}F&^teu}۷z};|刷%q7-%SA*<2ilOcBV•==%_kܤq_JpbbՌyaz|[Ngf4ӂbh2Lf s!2'+mz +X{< /&pNe*J}{a_}h0zU4^t#d:l4:p:[:RDc΃́4Q(US@ӜQKCq=untdT.DvEsd|K%8J5>o}tGAf([mfﹿIWg9'by {]:EICORx +uX&T^ΦGnEeoG$&]=B<:qyx2w[\;77ҡIΤC+oT?,gZV$CMpc3^vmQ,VE>H3 h8kD WBglV&FW ;&0O $z:D5Gljl8!U~6 FpJv#ekQFȺ''y!D1{[1OE)%oz!cVD:ӺzKlGJpkYI&J{E/ ? b2p%Vi,wI;SZLP\fGѓK.XRcrvRTk]SXT`cӬ͜|Ţ&: s&|2TCy:kvc"+ T|YxAUcoՊEZ2Zж +✟tq!?90^r27ˑ}3-C'ͯ׋VTȕt#gv3hNu8^v #Nw5vndeƱXyrGlo,IZ[aUW9k(L:œm{i̢$Bv!i>d*e&;AfNd]o:J^|sֿ,J1P" Pt=D'hfwsXjQqo6qfXW._T6BH g@#-`wIo5JհK*g{2<NId|PKGې鹰/._P]N3 S؋y0}2ޑQ!9@WhE +hNB|VR/6?.𧎻r/A/9r=A(OgRJRW?'˟o^O_,v߯ooR`&Q_R|W cGD4޾=蜶r[> gwFeqL5'J) (8 +nȑ +8{qMitΡ鉼]O&7tupU[>GI5dh6iK  鱴 G q \ No newline at end of file diff --git a/core/modules/system/tests/fixtures/update/drupal-8.0.0-rc1-filled.standard.entity_test_update_mul.php.gz b/core/modules/system/tests/fixtures/update/drupal-8.0.0-rc1-filled.standard.entity_test_update_mul.php.gz new file mode 100644 index 0000000..0252db8 --- /dev/null +++ b/core/modules/system/tests/fixtures/update/drupal-8.0.0-rc1-filled.standard.entity_test_update_mul.php.gz @@ -0,0 +1,751 @@ +xXdrupal-8.0.0-rc1-filled.standard.entity_test_update_mul.php]m㶵B\` %QM-z6np0ڒ#ɻԛ%Y%6 +X|;Cڮo~7oo?Z?7M)4S%i l ?Tᓱ(Ƀ* }Xk0>xi*t%wnKy` u6TW7ovIqCŻBꏷoP4BF$n%|%7w0@EroCL=M2{|0Jp^gIӟ$gQ ]$x +h:>>hW4^҄Y2|JWya߷ 6f;e[y'k#ПXTo&GA(/=?hp^~<2i..Ɇi=\f?Md8jc)HN˳GO_>eSl!z;E![GbB9n45. ~IX^fH^.OtR)nB,㮞zTSW}X>G0~;ZX.Y$MhP' ҧuc\T^yvU.sOվZ>P)#LRi\EmR/ H/#h&eSnzBek6Fzq?7[wiHlQCm>+ƌĞQ7yJ/0V8⭝lѐ.*UU>=r4LT%}5b.@OXdԟx4\\&kyLê.!|rM/qsJ5f~~E>LEUqpQ}mЙuf֙YgfNJP33L<"fΙ9g朙s9Eʹ3L;3܊vGd:3܌ukδ3L;3܊v@9* RNAI!ZdoBՄctkcMgf3zS ޱ-]z&߯좳n;Nn`8~G6R`R%.q6)'.!F_۾_ԫÌە&^7IsDވ:*Ԗ3<,CywʽvIhnp(hs6{~qTǣ]x|Bx Ϙ8p86Oۓq}t&ɸY'g׹~K/[ W#ٱSP?7r>_Ih'iɴV]EN\U0*6d:?Ps+9bwnyݛJYoP+/3r0w\q11v)ι̴[t^16!:]-U/)ŗ^v{ۺ +'mQIۑtn@V63ʷ'Cׯ{T);TAd{:l:vb\wL:%@~ˁ)ժbYި.4ax+ +ZyG<ީIIƪ#·xvCI4<[0No޽M-" %0b[E #=Jr ޲GVc!zN-ݰʙw~ vIοNWwel6 j"zUBYg(ęMM }B ]Jy.CCx1W]Tz8X՗rQTl8GZ>&>l`S}JٸԉD.U=:aU%صDat+nú.{X">UVTA|PcH_+I Ǖ#xWǾ9xj,E4n"xTLD/]i72U"ɄW,t>7s\2#grA8rړTC!r~28a:PA .6DI M5w N띒w ?sjU-L|팍'HV9(ܦ?g):Fx^v MǎL[8 ZZQv)kp=f^Xe̓u)R\eW@oV0\q`@=P|s2ŸBPc +5 s|rPJt~,]TlD\Sb<+XJCFR| ԇ&y txa]^p9]gW}a@t+BͽZ ́t<0@$ TB?g1Ķ/[EI&DBh:$kJkeXU9P} 4_$yBicLӖSE--s;:X+b)Q(8 1M$૕-"=h#昜\΍֮̔nZ/;JǝIc ѫ[ Ȗ\W +>_ω^YHvY&>)vriDZm/jۢc1ڷ {ζ-`6M52-` 8G5Ms {R+䛮#LQ@xHv(>3'upv6Rhj" 7:*6#7 D>C,G槙,0\|ґ>i}[Z>5 ohy C `AWjI*.?%0~tJd/z1PV/C?DӁ@:3>u@.ɴ+<jv`!'mK>4y$6ˁg@a +!,$ޔ1>V1NF͜X./\LE + F)}ov?07G^.-aĀmTͧ`c.6/? uMvHIx:`z[`ѹLxl3eXUE  ĠeP w|]܈{ԁ&U|} R3$?2tDd<0]~oQdIJ_ȣv#2Nibut$~>'ej`Q^bv՝<}ЛQ^rܱp$m\j=" ah]U +eL|jhVп& hg1?_f΀W.~b]g,wpLqJ'M0:(JG"\_XUP>2o"b]/=4y)dYH3 + Voa{#]+Q$%;ۃ',f~E# dP߶"IlŽ>gc5>4'+$k UK`#@|ə WvMK/*GBcfS+XT}H4gROC +E]⡚qX5iUf!⹵r6[IK崭Kc%F,mT7P~4Œ@a2]D5:#Ĵ/?~%dkۍ_H&x -v™ү6"xvq.袗nֹqv-Q+ ǘx&@":멕]l + +GyAk=sti5;6mfN֮;Wj ,Zk xkYD/x_Z۴JNᵐcTXnnEEŝ< W1B\8>}^T]UEۋl .j]]ĵm5W*43L +Nj˪+r,w&ۙ]&rD Թ=C t>1xY&*D,䡪DEۋM/^{|qW5Zb|\!8uwS·If_+J_Jɰ%ʟy=D o7qr엁ߵ{|xg7'[R]c B63 {І֊ZkpuHojgR[" }oqt +i9ĴO L5) Q֚OHӺh0h+*oߵkO/-m{BO>lFZWGy\,Z-ĺb1{xA{ZF;EZBpm +~^I 1yWZG~Wd4p^z{>A w߯N@I dMZаa23I`ۖ~i"^ Tk{򛓧O׋o{,mc叀Ɵĵ-ic`+[ʳ݃%X\z$=3&Z:CR(s+Md;UⲍNEҗ„ddopvdN 4=#T33H˱3"CkX`#OT}b;[5nwuw޲ +]A9sGԻ, +;כ +|Wwz"_"sX.}*|j$RO W\:w=h:",MԷP7WǾ͸+hwGOWӢ\DYu6;_G˜'O *%jVCVM&чU@\EsM׷Z&by7IḼ/t踿K3کc_?ф|VfW BM<a83#+]yM^thd<@u%gGōn}3#ҴNx +Y=1`d$s-ǖ9yR]KFoUՠ_mno̩G(̵M`-1V" gzܶ+FTSshSɇ@ȬO_r)~8YhdK/ͮ%2}45r>flYn$l>Hd7AV̓/ :A.ApSȰ!gYQIj"`4#;} !@Kn `QmP&HqiyR+Eأ!X,M> d8X&,Ncta"P,<3& H83iG/VG}l8:v4G/߃- 5q2`)`+tz} +&2U^B;RŻ'lPuwn~ OY}nI@U6HʩhBɋ)HkI9Nr##:AIC47wR%ˊJ[4l)xʌ'#%GaJuO5VvO ]w<`5NEIDSSCk*p^Yfi+)3<)Ȩ3T%za@Ki[-?I4Z 0s4c iysx|Ccc_ZgGʭV}>1Հ^.oav/|~LRJB%PESQ?ƻHZfg3լU9?y2__Vd1C_.FnRl3yz/Qk # ‘__ UFoy= _иY/H]1EdB +LP[Km̗_LJj}b`R0Y(v z8%7\v ֤kLTOh73btJXkH41R{}ՙ$Cˊz>@,z0@:Z-'@<g}䟿>>?9!T@ʊC% '%g*Ga@G>@8 nra  -9 Y1R8!,BIbYj^o5HYk#_`wOk7̦A׆v&HcϰZr[*2 MUKx_M|=B\dNTj-H#FGV Du0XAAS̗>x7HsZ?jb9O,V`h7*)t0(gBopBaYͪyq]GlIc8XhpM JΫTaqG0~-T glxTǣ j~x,_TY-_v 1*,?ƙfݯ +-N{1xTSl.c^}NK hl[Q&ߙMH|EO\]=﮾꾾]e;T^<ߛw.|}YntZ2/fe@M6?&kc12nd*T--"Ŝ 6{td+_""%{{rVjڋC@QR??GrBtPWϦv5 NI=h"<Փ Eph!f,0[jKnEE6 hmR g^l;Z*,K[xJͧG%6V7̈́W Y Vn֯B@OVRNS=<8xqm C8X > [sd]/{-DK<^9?"˿۬A?yޔldwY[[w~>S̷O:&ff{ o)2 +ռ}tA+WeZS7ڻ\eΖ3a\pUb \1군FjìK[!|BI!CC{h~3~c.ܦ3oz|' \&^! 52o!a\iM<19*GS2SÀtJ 0*鴓ͯsY7=e5C]y\!{&|]~B~gF#=F,Hѵ<<܉ k0MfEac~Hw͹嗗ݽѠ.B>{^vL4iޗ:~8.7Mz5>}+)߂퉷Demd_MMppmܻvzdraA#t6+`"G%]TUۿr 7\ygW&[nr1: *H4cׇ={u{<^VQAmDJ-r!,rܞE$qRKN1R!#@1)*Lq?"\\7S@bۿq'I}8 KOFg Pc`*H4K)>c[A-"t<Ǯ! ,pY\DLwu8\:1" V3ju ,AT} Q:!Cs##ީ#Lþi֑Lh?0lc/"T1!!ϣ Pdi)6X"ўr0PH{d@l؍iPI2K\@" NHa_bӦ3ۘ5"@,;Q,2[ r@'%#z|D1+I&QFW <#G*7fW|gt +Hz *g`D3+4$1$Se +M |A,O$m`̓ +j2m,$;yXaXiD<l)J:R`B'<8I bGeBǽ@*|'3Ŕ0䚏ŕSFΤ}o (:C,2ȅj'ժ<3Lm| O~=1#ec[t<EۮI(e|+a@W :* ! RֈpP\!148x$Nr/$qcQuݐ0H"):zN`ssO{1qZ 2Q`s%Y8.-_|=$z:ILH +%Bΐ#$RnF*^07olt{LDL)$*N* +h 7 M|V?Rǰqۨcy0 7H`ԊL.V+w}Ŏ:Tp8MÖ A qShAXM!IЗ3/R"_/%^o=~*v#ϴ0o;J  +J%ȹcJ#VB˥Gw +o-**׭OȥyRTKH!HKSԏwD&Tf0^y*67uI\if>>+HaOX- |ZmG)|*Y8Kw˵j6ء9 -HP`Ǻ(ߡ|mI+q^dלH8ς { 68^ Wp67x3Nse)b2<ܜ `%""137p1/h O9Yz,r:.ownS4[w5|jѹ/BE|q"U04qJ6S|@UBf7\r|l:77f=s18m|M,: b]g!Y,W8T(7_gG7}Qsgf3&~o?g9]cܧ"J~TE"c,As=^ټ.) uw)w +IW1Gwz]D'v.McO +o`EўDd'! ը\b$)mC7zOe[ d #:"wȉZ}2)xM| <ts<1j)Rx@(¼m`&|$+ݾ[ޅ]<} rtqr62eyǕ.P;?fyK4@ݩ_POeS}(~ղ.KRMrڗE|H{tr&@W`)&FZB↕MU3M" *'r"p*p[2h/:EOV.* +Ioqv!iyfA[wg65[.0}Y}=}\au_Ͼ~޻pp׳_oGfiARH]#~075 XwbG*VG~ ؒCSJ?:$`#N4ܪ̋U1 V+qj^m#Tt VE]*smctf 'Y&0e@H켅Lp8)d'WY .#<ٶ r۟aiއ݅S.S6ГT{`}: 58[olDթAЋjyS_|!4rɫIm bQ.bὍ^޽?7::s۝ۅP*)n9]V.,dUv-=ilPL:|J Dpv7|i_Θm=嗊[I+!"iD0' W^4Jj$%d:M,1{r +D2LΫ9ȬhJ<<DϤrNV vi3pC D 81 ڢ3i`t~@Aa4ԤBK&;ҝ]= Wf"cCܡn55bYN>u~N;zZQ+<}GRXr:Yqōyۉ^\cN6J8w0E`tV)'vg ;Us,]`>n>@"_0W)59ii$DD'aux}Z7Z\HcƳ +VL<?>H!7αz[X?+OGu\*=+\>vcĺIX?#u6Hƕ$'H@P6wn|wcäc8xSHV^1+C!8C6XmIҴժ.ۜ|$(Z W/N %Lmؠ(;X9!s¬b̈yI1?,K`^Ý_!9qBnL@+BNzjrZTQkgr q´{o /mN(ݍReӘAsxKاBX͹&&Cw +j /5N.V?Xj IJdp"*:g,\Ĵ{oE=Kn +Z `zJ/\4]$9#ÒZ9FSa8i1 jw׵'rXEqX cҜSx1{F;9:bK^5^8kM0*&~d&rKlA)91ݕ=C=,YhA‡H Q(ϼ)@zfb2 4 STp,R:~naus |$TTF*裦K5n7ݴ!4DA-!T)?,@BBo~B=ZmCx1eVSL)o R!# DFw[ķ=aiw\^5W%jMʱcGeuX+KaKI;;}$XZrn` oHR'1TXJ1^6/u莭};<CnfhG[F&+eHÄ-Wj쇲Xe'ɸ15ItDZ? +wz;᮲etal`t2<˫A:*:z˕%gXGT>Ǿ lNɚʴ/΁ *0yhtxltP^?+^{|ǁg@OGYTqrz0v~66hօ=)qkR?k:k~MdXpT䡠zj,f =Y/ڏ X/j$#DjMug|Έ7gY"o6ZKnwov[BeWv *pz F{ݙҚ|wqC4(it|??rPXCBc ${ʋqtȸK 7JddHJ!),Qs o- ʼnFIK{,S JT/uwTx{T.M3l9*tno4TA-u_Tٿ?uFg\D 0i,@@.trc稠gv}HI@k2P!ݎLrʷ ke|qIͿ+%ӋI)(o.A2"tq@R@,W +U$>3dx0SsaRLɉPL4eZ{"hulw 1rS_RknFՎ?w{{xmq1{ !qIM9YָC),ހ+$ѰMs_ǕQ?&BO;B(Sz9 JJ53 +)Yw>=4khK@ɱjc)IHuszS~TVQfE` Wk.%)8nvScm%4܊ސ!Gm,8-{-y&&Ld*[dgTmW^K+7 @$Nu$@(-T}qH<|,ƺ{ +Fw[m`DyBߞď+5/ZJ"Xtͫw:_iCG):>MC=Q@ 0\#_޾SR:?' w/DϻNcwܻcKY߿}.>~G6 $[j~'ob%RHVvľ&Wܮ?q*ԙH d?@ dKJ]0 v'$՛4ɚ $$m#?p#; 1'dtZqDN"Fxyu i\ uoK3UB&H_F2/Ȳ6ul]X"VjE ӮVS86Lc:+!<8+\]saL`X k%X|LBaVd +B$b?vO#Fpo oD/@4K FA8`FiI$. oo^}[>"D7.y৻SngD:Tda8@a4CjcO㹻zh׻K[5)rS_.?T (8a^{xJIAR ^sۿ=CzOp߳ǿ?/Ͽ61}|tQUh>艎QR[}v/L*~ky7;B;ȏٯ?+g-d"܎~ӹoKdܿWDx ϯ34^6}rC_Q Qkeߙec%/,j31oF<Ւm^+ qש,T]ʍxdlˉ'~jE[nJlEd.B÷EeAwv,H)t&K`ۘnY|hZا+vHi&Y:J V Jx(" ,' jK"y=m@Ă2g}{>j?K W=tm׎V/sOwyv~+w|azOgR_RwX +F@tHj5ho$dEF +[ >n]0:/-(+Cu4쒗t,GϿF~8<>e# GJ} L/W*4Wv"adXJ9!+|H:ZL|J˥/kS2[G0z&>2 vjm\J;;owdS"蜨-Z\be0{iٙQjNLK9*a * +D=~w +rT9'7m~jWbcxtjAdճzmíҒlVȋոѹ"FGxAAo!ύ5I{ &ju41:'7-qRQ@B$OרmbwVT-\_ Pc=HSDݯlP|J[+nXs\鞈Xd)E>֢Od}`[~EnLdz?(Ǧ}p+SBl&mϥљAߴZ{mmU*o2`¯1 YN%@U`qi׼~mJàV.!Us)=P|Fifӡ*4-͍c`~|M +_=ߗ 2ͺٸ-btz2^wN<_QW{ݹ% +?>(9{ njVgd|jϯ?H2ys7:VF첼y1=NlsuX5-w<})][5ʞ܌yFʦ:xM_`0)s[ WMp zYMˬ'Э ԱU/n'@)Z%Mǻr==C=cj CLf)?:\"ZE7+rd%mXd)}^}9ׯ_\E fQ4rzEA!p3eސ9c@ZhzKWI\*{i8 8E&mծ%#,,/KUnT7ޗ:6o3"3{1 AۙX. +\ˋ| + e^cYf;Z|&җ۱BA7VFHzkIIm.>a*Mu,ytw!grӐNTGS{e"I~akQ<5u/ nwl$΄<@P_\S̭$ļ)ܔwyLLԆz2KI*f\ݔ8{p;Kè?vku}9)s\V:.,#PV<Z&/ǫuio=YxYe~>6-`R4OgKn m7rАrN_S%okfN $]/j8x{o 3ռ533':~ވ./ϧu^ 8ib>D^* +<,\n*IتK 5  |㴉{ P(0P#ɧ3MT0ÊbD,0j`SڒȱVRBDd>¬PwJ[5{I]tٿ1ëmJ顴4iD 9֭Mr\P:#jPHKP3qL==\V7RdGFt즽RdC-!S~a x#2tIUC̓=KAbs5x$M陵?EKSn.򲿭m +ĤC>Q Fv+v*HB{OyЖ&JRu"k;םb2/qjB}ށ4DlTNmmx褈:G \ua]Oͨ#}A\0TfefeŽ #G\,ܻڕp"K'+rI53<Am孌 U}R3'݉vՆ[S[ѕs+9K5UD`ܹoҖ Ů@?V8j $SJ }E]ˑ6+O)鎞P./S~8z4_@S&5kB^5csP>^x9e$g7eBB 6Fbu+yI˯EXzko&r{V@ U&KOC bN=8|{c)`O‚uKff\rnRK/ @e/:XRת è[SIˁIW +_ *?6f)"@2Sɾ_ߐHFGd[:hտUGP$}3a@6p;̑:3(ե\4@F>aLNޡk pͅWMqsd'k¸߮Of)'gHEs~`9LU^^?5!Jgo}/L.bDP4Wv^ٞdZr=W{G*oKtK{O{R*#$ ˊRaZhi:R@lt?>}8>:x^UO.q{˥0)Kפ2"}Ih>y?:N[Yv8~G1׫ :֋A3LgKH7}ZI~~ VPߪZ0 ow|>iIKDpG2(_EJe*"<)zkc1qAF\F͐tRΫ炈8$&}<eTH k25|jf~s9b-у;%*>eAIk0>˝Ȏ3\<(9xrn(? v"v9nVѥ&:Go^=R\ܑt|tz A[ylˋ]rb"sC(slWH %c}q "pderCRW?9 {ø nm1$R^z>] qxwB3r\PJscuA-5x+ G}U)IK +X}ƚ(sTF\i,vMo rr0*[ UVfb=l]Mԥ(g\tҼ*=wfsmgB߳kҷ.weQR{ֈ['L +<;ra=!U!0[@o_?ךkM~6C@?cSz*V"RCñfTkGY(Eק\ +2 $aX H١(Iri6c 5qKρ9%H&q6=ivjT*!1Jo3hB Ӓ_x}5~H{ +ה KD_UdžH-'iRK9+Qk\xzFHuGOȇPj5}P-觋ΡBtF|Tm'jJ|kI$3Uᾳ""# ^;ǜsZn,ٮ/ yn9'$YTyǾ+GcWW 4d{i|MƤ&05~#A-rо\cU'j,&+< &ߐ`s-y_#}=3&Ɨm=.i7z8v{<ۜQZ ɭzj@YfXƩ(!k|sܒ_*aݵe+Q\]O4TC;$GtS*.arWO֎SU_BmN)wCRTX W)7_ثx+ug6:vhs +3QWчCb_}%gT7,k}zwG4GzV(+:sFUl\L>-=GBKO@*9J#gӠT^Їr1]|~ҌQ=ڿ]nIZqw(]qV +Li>ٗf=~)kDv>PEnZGq1φ2" + Djw0P{kU ߷Z =/jk k5GXJv/ [Y:墨ڑDje >ˮڧ<>c5Ĥ` (Ӛ"@nݏ} B/|/_5.jHר#Qq)귭02a( [}x+n2Ȉj}ukvtvKPmN$X4oD6SveU-[LdB(X- G&e1"1:bgc.hô}fSjD7ׇTa<֣'rp?Y쏘&{s1!uIھs'>EDuй7˯{Sȼlx̋Ox2Щկ)?aR;zh퇷K#*jLѵa}XM:gG@YUpT=l4 \_ n +j2nY۲Q0lg{o}F5EKG[(GG"I#@{hiN #5&?F\UasxQ׻3m(H-ly(vǎ:q%Ò2h6h =ӸGpT!O)YXۅv~w8ftSIgvڽ*,=δFWu-rs};Hc0""h6G, `?*)l,|c߻?u~pdu] lX43WN.֍:HQCNPHaŧ??-6:vH́V0Rr g(?fˇN+W +K?v+>M<vʟ2S4lEg 5W*B-;w臑 +`Q\GđNmlX)fv1ciB:1$k% IcUpt?KRߤ^6Us~t8~׹kp-Y{\@影E:x[槛go:,*[ܧ%J(|x}I]:QL57)§8Rvh~$qzIW"'t5?>/KrCN .˭ҿ8PeAd U-;}&>Ҷ=%P(ī}4ר< oic["èrŇ=샔 {q:QBzOh\]h YOͯ~uortoiEh\J"zWA,/ }:ivƻ!^,V// ]T%q Ԯ$?e^t@9R˵`j;L?ÿOwu,u|**_)liuچ6tK36\:tF[VٲʖU>նLNsN6tO3I5Ut_s |H;aԹ;3*3?_(_d{ܳ垏#,y@ӏdZm#^IWXQޫMM݉Yo3V姁o1ҿxIEq+^eg)\ .g)*2کSKAa4:;0_ +, +;AMc!;~vVCV Ս5 g +n)7u<}9 lUFoDZoG殧 e٥IRvXr_I۞z7:D4푮|ov+מr<ҘO+n6Y E=\az{pb!!&&J٭4~s9:Wd0}F ձ@2Ϗ/͂R줶cN~T.:1D-iV7G[ӳ16vf+JMݹ'tܛQO<칖(bGVgnJsߌrxrj*#(uЄ(Wؼ'W~)~GxkO+Ck 6 oh1|1rzoc[QW:ȸ^fQ}wxgCzSʯ" +u4#w-;)%l&_w]XvAήa9dX1jٝT{2C`>[8a +YC\Ю:^k [rH6F;YvZ0 ;mm? l0IK_%";RB~JjK_1u*eyU),;Գ2γ+6 +2a+PNS[p!vE8L)'m,>$J8U'@&a~(M+{§&OaЧ/+"x#|ieKFϟB22#4@%yaH/O4X3B V[Mfx׌Ҳ,_Հ|/kO3 U=Q|Uw#~OCwV-71EE!7L?{W;k>!;[ge>u[z-6KYWW,r},\Do~T*ԕ +Ng lobڊ_uY4JsfSIL[Tb=(`"~a/sSM>p& K)Dy`,{0жzeNS?}m.? ?le3٪|2sbte:,Sa4S?:fƝU$_\5[rC),."fոKa a^9n’~rj쨪 +flV2f3PyKmzIw\/Yď6r|n[KT~g`Nia)ޢVI&c7-:#l)r6VQ桍mlsmN#N&MVw4KfrtaPp7wȱ& mcXlqͽXޜͩf`iOjLhhD"|r#I7J^L 5vIU1OL6flHpV+]҆>oϟmj¬q,*ifRۦ]-,tҩsح.& +;qmu&H2(نշ.Ȼ8 5殐?X`F?Qv%A`[۸@Mpl{ =KikL3{+qFUF7zySn;+Q1ٻP;0 )Ԯ<>2#*5F(]٬V[k0F8~#]|$=cwH;1QHaA\;Ȃaf%Xvx.:pŶS}pMhvl'mvsd?DNM5ZݬXM&Q|X zebq +eǟgWl@5&_|/_p%.Zsu 0 ?DQW~|C7l@|Po\;\9wB%XX~s > }"VH:|XҠNo0!~[s\ +ZjaU0Xo/ҟ;'6 ~jrv?N]QMWJeS+w?"dV\NhdXrYyeSA& EW8e7wW7u/@Br,Ÿ.V,^ 0K\@ʨ'`9@W({=]GedWV`j޷WR'vpmW/#oD#z;ds1]OR#0Zk20g%;U_-]ឯ'-jjR%,QTtϧԟ:ݺsx=/)=fy_>M|C-FZZԶOzAݍRΚzfU5Ғd)6U,1{wG~"~4xԀAs_Ͳm*2Bܶ c XwZU4˶دOmɟE] _]7zKL-iL쏩$R-al4뢧D53lm["Gq6aU% |&aOD-mo | |aW.O +X>( ǼՆۃ~ZpmyH?iex]}["G%"l+bpX 7KF-cG5ʌA-{ܢmhE۵DQݕNn`gi*Ҿ\7>8h9Y?Ē0/^ڂ+Wqi3*|Ç-ox (4ArhDTCoU顢po|Z;Ue%# ]طpDbhG'?."~3r)?1Zzdw-kȺ h2uC~>~rG}Ԣ:c#;c y8C$Yh<w-pMx:[xE1=\!g3د&ԙb?Y=k@އYקB5TݭO׽tJ 5չJ)6S~sp4z\5Jⵇ4us{( iwz`4hvY 8/Jؒf>IewypW~x'nܖãeiIOm~F.,pYc身vWԥ/G;f'wmׁ*ljPipdyagus %MY{*٠=}u5Bc mBY_@ow]ri{,^͸_ ƫ hcOYUuͶl,tCM7tը7~*&|&u2(4¹[-xm ^ӄCbgu*ַB{8ݵoj U[*Kkǩ5]niN[tX鵳uvE"2Zv c}>Lۻ7YǑubg[D#>fo*2ٽ;Q{FwZࡉ__ípf7Ag owŊm \@)ǩc=*۱Ƙڍѫ{y T|/kO9T}eЇ7Qm@qYojw)DbZ6:^Wjx 1pv{p{ۯR(PH|qT p6طK|WYj HXSJ4g~31@a0)? ZqEڻm;p3i]_yhޝh롞& h!*:1M7_jEg<a,eH0 +TOoLnF7fGivT.?>L{UkҲ諻3]NO#Kw66 Nu9yzD{ԂMzē] nʐ +y^?Mҁq|$r9p?t8 Ol!*SA>InJ7)7u93 LI9,[V(#렧kOxgg HtgCXN2@*8 ywfDiTVSRr`,ɉn9n p<ˣȊ2/ wj:y4^{עƏaAESsay쭾 &'] <oW&B*Ƿw0b ΉQ,eaC^Wcy-bn"%Hu!>=^g1'u4މwip?d VZ1c8ۯ3uNg]@Xz={udF1LW' $9b7 ܆/zL.ypt7umGׯث%G l}Dnيrj{caBo> A2~9/;aYv"Aqȝs~Qr?C&;6F53B,f$}XG 2\HxڂĶ QAa /"Mhh#X5 +i |ApهkM%RyHu= Vď~ʥ>?Xw Tk- `eMM0:~57dֆۃ&;~}n#ٗ;F:DH'MK̒. +Ȼ] !F(4S~.==%թDߔ| '̐T[XC3MTD8he WIyΞ|w:r"]v~1<4dQ5mՎ.V[FuFtmi< Rѕ*WE(T fq|j?81Je&? cQapX@y )h0)J}[<U i?gR~d뛕RؕbzO:5tu +pp0G-Ɲ~!#Hk%S2_mⱊΚÖőS76ݵz!,w0^l.J-sDu>ռ|1-QgTD++oJ}ts+|UhM(yKX#*`o{|Íw*Q_:)ŜD"qp*r,Tx + l_jӠZJd|ߣqUЄR(T~5ëM#gm >é}w䲫5Me. eHٝLH9sHQ/e OFʁC wPŵ!nzi{\_v[C.mhN44b/3C aJCj(_AޗľFÚQA?C=~( N4h<Ԍ&uG۪ɳسCßRjϡPW<ݡ.6pitjB>v$=U%W+IXl#sZy\h7wX&ۨEOݘkH$4DvLNYiz<\ОBߌP3}HݓP>KrCv<@C @\w3D+ƨɗ50F=14OtCi׿ Xcfy;ofovz CY6k ?tV[hN[IԺ云n v_%%n˶\Ss]=)i2&8vB~;m?iMV]Zm̢oЖF\%۲m֘FQ=={h+}멑.3!f8WR{ޓ^,B^[5귱Z$HD03>ێ: ƅ|ꄉ}t2ZT}ռ&aV +[A{+hom67iGUE@z ݽ5H¡u`ӧ@R\yVO`xS$Q..90ez{ ɯ[eoe^<0&MUtrVѫׯB|~|s ~Jxt8nlQGV7CTPhu%QzsytLH΃`M#~.e-ʲJ`}>^dp Gƭ"ga\~\ЏͥNAG|u- #[ddǣT|x8Gk U]|X[=geB-0>/XbIo.O/eD%엟/\ܟ|kѨE!G I*1*CH!)zx M?ҫ/_5W.g=+3/0x{̳3*]|y|~O=!7}v| vǴr<%'ݚŭ1U=~O#EE|JO A>3NI!\)覘`|Q&Qsn:.E[~`2&XXmeN1Eז> =74\5)bv,'K +qtU˳o㈿Mx*Ԋ eV8Yd)|Wmrq!wdV ". +?Ʊxo; rcϷ +N,Or slז|,!'$Ķ-='rrm|q/q04 +(EAY{oMd㻡\#ϊr-Yɳ\mB q' A?lPZ1ÅCDoC8ɬcynZav?ɊTm-:>b +3x4 $3#3u=(2 c+]SK}$qG6pn{ '"tǶt$ⱛ_&0޴F H"Q]= VDv ܕ~YY +9|njv8 ב^Y$AqA0a`g#]u$b8!E\nǠ,dC.G7(}9Y|؎gyEؑ0H%rCcdZb߳H:8Qvb;1x zFP'aTa䲦HDe9Qh%肄ANȗG"*gd?#a0p +0.80} ɣb,/0N΃(u%9qt׏F,/2IDT^ ̉gǣ# 7yԑʅQDȰ=K=+!҉!L^:Q9iT$姐<7 NNdGDT!¸Al%$qN$CQPȎw:xV +7 '^h;)ԕʁq9Vb{`a\ Ey@hYƕBJ<`d6xVNy=!AȖ}L2"a0iqOSYr%r3N2gQ{ÊϬ8$IYAIu\p4)/1` YTd`b,:QEY:o =) s&Q VW"*>R*K ۉ)Bztq%rS/IĊl??+LBNZnI\ 0\p/ׁ .+rq@vJD(uT`#)\{'[$2E^,m4qJF0t'^d/+O"*v( #+XqLN"JPu$r>[6LC!*)IϝkȆAO"*02bq8&/˦PO"*'i:YYC#׳~eN=˜4+AØYvIDev + BFG.”NR: +MY"*~yjC> @QVH;c'~LY9A8p '^F<+#&Y@8MX97LHm uCX&*D(-O<C(&H]YQ(v-`g[ ׁX\PRHDTE2G0|LEL(:Q9N^aiF@4/qbIKǗq8LA:iDf>AlQB`AFe_"*Gnx 8MaDE,@N} 7t >s(M\Mq(k;DTwNMY1,Rqusiۑ0$`XcEvb,Y0E#IFe_:aNg@&6НN% Ҷ#̅1;0B>@iN1 Q*;%2&EdEAIEi γ|0ҁU,!BvY䮴gɬc=*`gJ01F1.2u0\)#PV-HdevȚr SH2sRir@m H"[zRHD娀 BJԂ$bS"C@"* ,҈* Vô !>)@"*8E2 fzI AۓQ& 0G[^VD3brү#ϼ"G (d/cq+[P d0a&X9N+&4OFڲU@"*9|1Y.v,Ѡl#+; L! ɆP"*EAYYJM8I-?/Pz^&:QRط"Jr>u\0%ʡL##pPG<+;Irgɡ}0HSI[ -s (t ,; $_`l5[zV%!.ONRb\$3s,! 1R/Kaud`$,G[ЕB3 r{3HfIQ@ +I ̋DBJ^$ GQى +aNEY׊+ ϻOvpID܇Q"kNCLG0jp1^Ei`I{DT"ͣ `Ɛ1;8/vKDTDf|!g #' KDT4a! 爬9u &}GHsFQA !Kd:I˃E$2x_dEV96g%ޗ;02 /%3x(a ]$NIs뭖'18[|s ]Lyވڀzz8gtoDyP#[pEŲ|/YP調gBu=2xDx}oƥUa9/x |mHV]q՛SGGw>'(o޺/`Y!];bn 6CE~žHݪ_v֎A ELjV::NupL|BH }BR K}BRF|e]YU׸Oh''$'$5a'<:%ZuL|BH }BR K}BRF|3.̫S62= !%( I%, IM 6 NqрO)AOH*aOHjˆO uA&uL|BH }BR K}BRF|"dH:B>!ӣRbTRԄ`/PȸOh''$'$5a'jֆ[LBmn'ȝ"Cw0L,}H{"Tƽ`5ڈNQжT&|CL}N6 [E&nd҄o)Bo Ն`aҍCR] 1E;ݲ0,u4*1yKui77{jÌo0WdFo.M"TƝoYm L <.ե Sj߸ . 3` $¥4bPwea7XX,2#T&|CL}N6F}p1c=1E޽w'\\Vf|NP%qq.M"TƝpqYm ^c#;{"Tƽ}wXpcwR] 1E;0,8vf*1Kui77jÌoX.ť4bPwea7XpcwR] 1E;0,8v*1Kui77jÌo؉3(<..ե Sj߸.. 3c'PT&|CL}N6˂c z;R]Sj;0,85qq.M"TƝpqYm ]T&|CL}N6#y\\K!վq'\\Vf|Ǻ&pq<..ե Sj߸.. 3c]k҄o)Bo Ն` \5Kui77jÌoX.ť4bPwea7XpkwR] 1E;0,85qq.M"TƝpqYm g~bP}ߝpqYm =T&|CL}N6 Ly\\K!վq'\\Vf|z&pq<..ե Sj߸.. 3<ȉw82|"Tƽ _3.X.ť4bPwea7XpgR] 1E;0,83{qq.M"TƝpqYm =T&|CL}N6 Ly\\K!վq'\\VF|Vqq. ""6 &pql҄o)Bo Ն`.R] 1E;0,8űy\\K!վq'\\Vf|b86Kui77jÌoXlqq.M"TƝpqYm M<..ե Sj߸.. 3c \ť4bPwea7Xp,6cT&|CL}N6 &pql҄o)Bo ՆYpl}Aoqq. ""6 My\\K!վq'\\Vf|&pq<..ե Sj߸.. 3c}o҄o)Bo Ն` \7Kui77jÌoX.ť4bPwea7XpoR] 1E;0,87qq.M"TƝpqYm }T&|CL}N6 My\\K!վq'\\VF|#`ť4PX0,860qq.M"TƝpqYm T&|CL}N6 Ly\\K!վq'\\Vf|&p<..ե Sj߸.. 3cx`҄o)Bo Ն` \<0Kui77jÌo.ť4bPwea7Xpl`R] 1E;0,860qq.M"TƝpqYmFhҀo*Bo*bojÌo.ť4bPwea7XplhR] 1E;0,864qq.M"TƝpqYm CT&|CL}N6 My\\K!վq'\\Vf|dž&p<..ե Sj߸.. 3cCxh҄o)Bo Ն` \<4Kui77jÌo.ť4bPwea7"[_y\\K!ž!! 3c#xd҄o)Bo Ն` \<2Kui77jÌo.ť4bPwea7XpldR] 1E;0,862Gqq.M"TƝpqYm #T&|CL}N6 Ly\\K!վq'\\Vf|F&p<..ե Sj߸.. 3c#xd҄o)Bo Ն@6 mhŸ{i?CE5bGXlsE4#P#wɥ5bGXlsE4#P#w˥5bGXJD%R +ёѡ=G #~q%, +9M VK!\tBJPJX0!zGO)AOH*aOHjˆOVZ;K|BnՎvRbTRԄ`]=Drkvj>!>!>! #>" >r'\Z#|6W4y\O#>" >r'\Z#=ӗk_}_Cz: +B~sIO/e&=砐o1刦,ƁI?t*8مlc_?W*>>>x/o+]%'l"AWUOϸXor8^yzz8gto78Ocrx{}~=zN0\.p/YPoh~<HKTN]||><7zmp Dꂈ!w|_DVqzK^Y˵a</وHl os_/ MN맲N +kSNȬt92?lN3u*|U `d4]FɬQYR +j@H̀_F̀Zwդ՘ԙkaAI)x1!3~1,޵pR1!3~1r#e_RWcBPg0b̓A3:33`+5p5f $uf/3+WR]")h5f $uf/C|»DC~be/3&(&ư"bkh=EEA(44WzJ2Ph +."Vu i/eVVcD\eD)3 +@1҈X6ֈSlBcXYmHs((ư#bUݐ#ZOQP +aeGĪ!G *V_жvi=HA(\ +ê9+z*2Ph +@:5}W5)(ư +ê9+z*2Ph +@:ꛣ鬧)(ư +ê9+z*2Ph +@:ꛣ鬧)(ư +ê9+z*2Ph +@:ꛣ鬧)(ư +ê9+z*2Ph +@[}A۶T ep*.j@@ +@1鲪o + + *.so@ +@1鲪o + + *.j@@ +@1鲪o + + *.j@@ +@1鲪o + + *.j@@ +@1鱪omM@ +@!i*i@z@ +@1鱪o + + *i@z@ +@119u<)(ư +Ǫy+z*2Ph +@zꛧ魧)(ư +Ǫy+z*2Ph +@zꛧ魧)(ư +Ǫy+z*2Ph +@bV,|=HA( _YoXs)(ư +$fU߰ +$^ORP +aeH̪aH + *U}Ú+x=HA(4U 1ݧͬ)(ư +$fU߰ +$^ORP +aeH̪aH + *U}Ú+x=HA(4U 15W z*2Ph +@[}A9u@ +@Qu+@ꛯ鯧)(ư +Ϫ+z*2Ph +@ꛯ鯧)(ư +Ϫ+z*2Ph +@ꛯ鯧)(ư +k@@ +@1鳪o + + *V_e z*2Pg 20c [)(ư +d+z*2Ph +@[)(ư +d+z*2Ph +@[)(ư +d+z*2Ph +@[)(ư +d+z*2Ph +@[)(ư +dȪtC +  j@@ +@1o +d + *!j@@ +@1o +d + *!j@@ +@1o +d + *!j@@ +@1o +d + *!j@@ +@1o])(u 3E+z*2Ph +@F[)(ư +dĪE+z*2Ph +@F[)(ư +dĪE+z*2Ph +@F[)(ư +dĪE+z*2Ph +@F[)(ư +dĪE+z*2Ph +@"U~k2`5 ,u!"C&*5WzJbPi+F"Uk3$Š$VVd:9 I9JJ#]F̀QAR +Π  ` Xy^|BR +ܥyf $uf/#f< ^p嵛ԙ`&f]nBPg0Cǐ/!)Bv3:3= )R.k7!3~Yʐ/!)v3:3!^AR +ewf $uf/CEVupWWd/3&(&ư"b5z2Ph ++"V] i,eVV]D\_D)0 +@1ƈX56ʈSfBcXY*mHs((ưz#bې#ZOQP +aeUGĪ!uG£ jU{Ch=GA(4U V\tSK+@:3Z}Sh @ +@10^ո + *h@:@ +@1鰪o + + *h@:@ +@1鰪o + + *h@:@ +@1鰪o + + *h@:@ +@1鲪o + + [YeUBcXORP +aeHU}s5W T eVVt{u^ORP +aeHU}s5W T eVVtY7Ws]ORP +aeHU}s5W T eVVtY7Ws]ORP +aeHU}s5W T eVVtY7Ws]ORP +aeHU}4W T eieHU}Fo +a=HA(4U =V\SBcXYcU<Ho=HA(4U =&ǡnT eVVX7Os[ORP +aeHU}4W T eVVX7Os[ORP +aeHU}4W T eVVX7Os[ORP +aeH̪aH + 򅯬Y7k@@ +@Qu+@?Z}Sh @ +@1鳪o + + *>k@@ +@1鳪o + + *>k@@ +@13|}z*2Ph +@ꛯ鯧)(ư +Ϫ+z*2Ph +@ꛯ鯧)(ư +d+z*2Pg 20c [0Z}Sh @ +@1o +d + *h@@ +@1o +d + *h@@ +@1o +d + *h@@ +@1o +d + *h@@ +@1o +d +  Vz*2Ph +@[)(ư +dȪ+z*2Ph +@[)(ư +dȪ+z*2Ph +@[)(ư +dȪ+z*2Ph +@[)(ư +dȪ+z*2Ph +@F[)(u 3E7ư + *i@F@ +@1o +d + *i@F@ +@1o +d + *i@F@ +@1o +d + *i@F@ +@1o +d + *fߚ+:X=AEIp}&RTʪf+Lb=Ia14 ɚdc\__Wxs7]WosR6N_g/'Cu`kZB߯/?W_}|N}|I*zt_M/_5WJN>E _^~U?=p9{p|߷eop/g2 e4Mz6j7ɬ:_-l՜[ˆ!_<ݽ*s4ж#ؑ!Vփm52f3y"v4.wlWH*lWDR+"]#y*hm]!]Jٮt.k] +a{mm+$X+"X)evFnۀ + VVvEkvlhm]!]Jٮt.hKmm+$X+"X)h . qv6`BUa"]Y1*&aGmm+$X+"X) 4Nxqp "•(D$lƆ8>M+Ķ*MLJlX?̶: 1tiCڐNq6,&\%6nfBHtBna1*a0 Bڐ7zo܄ W k߄$lƆY8҆!&lXLJlX; '$a36‹6$7abUb8! an!rH'$߸  I، # C:9MذpذvxNHfl#!m 7n†ńĆtB6b J/h؉o^ 1*ٍfAI6щ7n†ńĆtB6c}[vi&NPJlXt JrtNq6,&\%6fAI6щ7n†ńĆtB6c,(ц9:q:MذpذvNHfl%9p:G'N߸ ֎ I، $GN7abUbq:! ah8&lXLJlX;N'$a36̂m8o܄ W k$lĆ]T_:op0Oi$lƆYP suta1*a80 JrtNq6,&\%6f,cJa&NPJlX?p:%p:W'N߸ ֎ I، $WN7abUbq:! aj\8&lXLJlX;N'$a36̂\m8o܄ W k$lƆYP suta1*a80 JrtNq6,&\%6XPR}A :q:M!&\%lh$lƆYP tta1*a80 JtNq6,&\%6fAI6Ӊ7n†ńĆtB6cs8ȹ5tUb[N籠$ON7abUbq:! ai<8&lXLJlX;N'$a36̂!&\%p%0҇iV W V!& iC:6MذpذvMHfl !m 7n†ńĆnB6c,|iCސN荿q6,&\%6~fDHtBpa1*a00 /Bڐ8o܄ W k$lƆY҆!&lXLJlX;,'$a366d7abUb9! a!tH'D߸  I؈ ;,(ц9:q:Mq:! aT_`:q:MذpذvNHfloKߎ8[ք +W :aAI6щ7n†ńĆtB6c,(ц9:q:MذpذvNHfl%9p:G'N߸ ֎ I، $GN7abUbq:! ah8&lXLJlX;N'$a36̂m8o܄ W k$lƆYP stta1*a8ذ˂\m8op0Oi$lƆYPR}A 7abUbq:! aj\8&lXLJlX;N'$a36Y`rM8pذ~t. JrtNq6,&\%6fAI6Չ7n†ńĆtB6c,(Նӹ:q:MذpذvNHfl%p:W'N߸ ֎ I، $WN7abUbq:! aj\8&lXLJlX;N'$a#6챠$ON7qƆpfAI 6o܄ W k$lƆYP tta1*a80 JtNq6,&\%6f9Gέ p:%yp:O'N߸ ֎ I، $ON7abUbq:! ai<8&lXLJlX;N'$a36̂r+ hU?mO>>3K<ǷwcƟ{Lo}"g1~Zqߌ{oϧ|}[Ү^C~wMkTǨqc- H ulA{.dV6/u?O\p_^~6+;٤zNcبb&H9<*߁O)>}$=2 Z JaOŞP:ZZco0.PHo,_qzK~-r-§ģcp@>e4ɠ`vUxw _+S ]M7d~7Lo&2<@re,u=9%-7cOЄM7\Nʫ;AQ߹kl&~ M5 E>\o{lFa=-N ~˛vjr7? bNRoF-~V/:~֩j;a5ߪ [V|慭:3瀎lv< d;gIs:yٲ?v7I@ل g;.v3Ǒ怼nl7ꅮl9 ۹O3]܅~^oslgn˕X&7р]8>s+1N8p?7o}Ƚ|7UUgXQAce1XV6C78V1hZQƵleuȝ6)wTFfW +sŹu-e}h@sۈW 9H^azxC)ZocirGe4-h jAʙZZZR4翍ŐÍ?>׉?=-|Ǔ"ʈ[,s RA݂sp8 h!|.LzH\'-qY'r翍EQY.)gsjq.-sAK$&М6JC7H]^'кO[N>O;*#wA.H R\[2LL49m$/n$Ѽ0N׉?=/|Ǔ"_YGŹY:1рr:xry"w_Q3iQmH忥 h!|/Lz_'-Y'r翍E8/ +G9 Wsoubo1p#uO /DH2gQ(jq.-qNL49m/n$0N<?e}ȝ6)wT8*_/\-E/R։4翍ŐÍ?>׉?=/|Ǔ"_YGŹY:1рr:xry"w_Q3qp88KY'&М6C7_^'O[>O;*qf_/r"g)DbF >_oqGW;qp8E/R։?w1pazps=o 9<7yQ;qp8KY'&М6C7_^'O[>O;*qg_\/r"w)DbF >_orGe/,mDYSҶ!NL49m/n$0N<?e}ȝ6)wT*_\/\-E/R։4翍ŐÍ?>׉?=/|Ǔ"_YWŹ]:1рr:xry"w_Q;qp8KY'&М6C7_^'O[>O;*qg_\/r"w)DbF >_orGe/,U\[.eh@s_ 9HazxO;*f_</r"o)DbF >_orGe/,S\[-eh@s_ 9Hazx ?>|Ǒ朐#yߜ'noY+jq.-KY'&МT|r7<S7uOosOFMoɍ˙bܹQS9Y7mDYnTӶ!UL497OEncaxn"F= 3|ȓ3̬/s2s*|3X V7\n\7\L497OEncaxn>fF=4|ȓ3Ӭ/s2fs*<5XO VS\n\ScL497OEncaxnZFF=6|ȓ3ڬ/s2Fs*6X Vo\n\ojL497OEncaxnvK8r^r"^)DsƋsɍ|8Lύzxq'7.Y_rƍGs*gyq|8r^r"^)DsƋsɍ|8Lύzxq'7.Y_rƍGs*gyq|8m#r^ ܸc͹qŹF>^F=8|ȓ/sƋ94-R/Źܸ_ʿ1рܸFr#/s^>oɍyqܹqQxqY^_/Źܸ_ʿ1рܸFr#/s^>oɍyqܹqQxqY^_/Źܸ_ʿ1рܸFr#/s^>oɍyqܹqQxqY^_/Źܸ_ʿ1рܸFr#/s^>oɍyqܹqQxqY^_/Źܸ_ʿ1рܸFr#/s^>oɍyqܹqQxqY^_/Źܸ_ʿ1рܸFr#/s^>oɍyqܹqY2^@/Nř, oL477/]67|8L΍|(#7ι$Gn\_9r#s* Ь_ p8K7&М7^HnaxnË(y#On\΋>΍/TƋ*xq8\-E8R4ƍ.7xq>(y#On\΋>΍/TƋ*xq8\-E8R4ƍ.7xq>(y#On\΋>΍/TƋ*xq8\-E8R4ƍ.7xq>(y#On\΋>΍/TƋ*xq8\-E8R4ƍ.7xq>(y#On\΋>΍/TƋ*xq8\-E8R4ƍ.7xq>(y#On\΋>΍/r _*xqB8\-p/Nc1xq~1apnsDq%9r77yS/NfR/NŹܸ'\ʿ1рܸFr#/s^>oɍyqܹqQxqY^P/NŹܸ'\ʿ1рܸFr#/s^>oɍyqܹqQxqY^P/NۈܨmC*7.ߘh@snxq~#Q/78Kܸ(pNe8MKlT*jq.7. oL497n8wqNjAܨyrr^%wnxq82^p'T*jq.7. oL497n8wqNjAܨyrr^%wnxq82^p'T*jq.7. oL497n8wqNjAܨyrr^%wnxq82^p'T*jq.7. oL497n8wqNjAܨyrr^%wnxq82^p'T*jq.7. oL497n8wqNjAܨyrr^%wnxq82^p'T*jq.7. oL497n8wqNjAܨyrr^%wnxq;g'2R)jq&7Fxq ͍Ƌs͍/s## +F>oȍs.ɑ痼q/xq"4*xq"8\-E8R4ƍ.7xq>(y#On\΋>΍/TƋD*xq"8\-E8R4ƍ.7xq>(y#On\΋>΍/TƋD*xqFF8mRq)DsƋsɍ|8Lύzxq'7.Y_rƍGs*iZb +^H9/Wsq/Nc͹qŹF>^F=8|ȓ/sƋ9D8 +^H9/Wsq/Nc͹qŹF>^F=8|ȓ/sƋ9D8 +^H9/Wsq/Nc͹qŹF>^F=8|ȓ/sƋ9D8 +^H9/Wsq/Nc͹qŹF>^F=8|ȓ/sƋ9D8 +^H9/Wsq/Nc͹qŹF>^F=8|ȓ/sƋ9D8 +^H9/Wsq/Nc͹qŹF>^F=8|ȓ/sƋ9mpiEU~kr&Avɐ%\q9$m,u1&('9=R8Qr%GMTFMeK./UF65*r:˖ +r:e˥S-Ζ1emñlGvFl6-r5:(ܸsTx2򜶩 UAiE]T@iD.[.jAwHtcْFR[reT:ktPl?5>/?)y%}?ſo~Iq~1i]T7?ҟo=ϿCH_^9^^o+ÿWO3/_;|AJ}|IWy̏o*:'zVAs_x8^}?|@,<\o\ zb#]OԥבNMSirx˭N4^/F3MtՉ>'Oχ~]~4"w}ɍcn{Ī'wc}]5>ͯ 2hy#OT1 wkilUWnDG9NyɯZOI.ER2&=锽c@gCHOwpF/?>tw>~|<0uܾV}CnbYX^VٶO .&? ;/C{C_:8bǖ +;q,˃dK\EF#/kAW>S$ž3g6^F8+ +?<D!Y^E8鯸t5 akQo{."?z'p~r;" (=H+{Ȋw{O#!(\kb ^̷$p3^?@v/kލB+ mϷԇ`4!|z}u=0#"'HV\ds߱bbp3zQOܔ'iA"} E؆d-9)],;ʣ O8)EӇЛAA³4 oa/OxMnA$ih!)S+ϲ=! +q,[p>XN0uaĕFq Zu# C~DRalᤀc$Vl8iL|kPpn_~sEu 80܌B22n'0t'D"c~CvaBa90+A&nlAgS8 |xV0sH)*+L93ezn C` pcE4Lx_I%A +8DVE泉mb\`~Y $/o (&VE *`\Afd D0yQ,lOȶ؅?qR/,PO鉬>?_o/IFB!*C )"<ۅh5xdS'0Ǐ Iqˢp8馋'd-bw_/9 ! $3O̲QUCzot%2bF^j~(.Sj(fòCJ;Ɛ0az>Ԟ +S7 +cfhȽЊ,5aZ1 j| M#۷8 ǁ9oPO+6xGj@vP̃$bʱi#e~$dvrX9 G)cuBr"7$S+$K1J0Qg: q0vg)؅VPh>LR8Mտ.NkBt,煑c!tuWqc;.9 e;/O Q@T@@$yV"<^4?.#d❹>׋ + YLW|!dVs7]a$!22bI37 +"4#0/7`28KL[fCVNrb&?H4JRbtiJ汙p˵|J> s}?ob+ߍ׌ aE[x]>SekO<7nu[s|Ƿ6ZK;z[)\ȝ.i]rG£wM.|&[cYk|;AFx[xO]!'x¾ +fp'bKC~&Qnsdq?z:=D4}/Sn5IDO&ZB6D`zAш2;O5T;78F}ñ얮e#^շˠZ5r_b̃Q]rJv&=kqlT$(,7d6fI/)?i3r0_ QZYz0Z(qqɁ\\TR89ؤ`پ!Y(NexuXpsߏKIa1 OO[:_ǎ| LɎ 'gE6lwz3VtFedyN]"LDf0,vNW /aPV$CnaO:>\ţ\dHh}}iY푅abO IdB¿M:I';8bLL'"eyGVc0H}LJ7 R%dE*> +2dfe/*]h(2+ ,&VB'iP80.NdI[cN1Q8Ig$ 67u?KRm18h`R~Mo|Aw3ϊD})r3Lhz*ϔ]A%azVLNEq69P]k}϶aZI8d}6$n + 3o^F6 '؎H)yMnj}$<wلslyEAԞD)fO:_> `CA0Cs;s8 +Bg((T]^zRu|z?WLж;؇Ҁ~`v{C +$*uQAL`dCDthq"NmN\Pè!ke +xqL](z%6?_Su7e7f.WheV݌!ZJ^g{ +e`6 \o=DF=6'`)ʦ.)j^r&8G1Q۩!Rv\LQs]B.L_au{Jj<ߐ&d3F@&tC"/r(\-ox9*7D(~pς,ٴ4cJ\|49SYRo(|x|CdV)0MwW)QG\!7B9?lү[)s ̽f3ZIt.&.:$, QZ '-N7y|9c%(_G_TS"K(t$w:zg'ȵ-9l&뿻>=s%3dq쑽PYJbOn%FV+2;KYc=bSRϬr ҪcO|/4铁WRMIP)g 1o^JM`gKv "QU($.KR+ɚ%d4$g(IǑxR3{I j'+TjQJ_ۙ $NF%;~9iLף)5iAIIA+Iq·<0 +H@5E{I E9Y녂8B5S̀O0PHB#h',/#+N/(P˲r^'Ճi,M)PV`1cs,߷qĵYB)#Bf0V ( ›Fܱ8vlNJ$ +Ba0vęu\iHROq8I1LJRA0!K5r̊S#% \חDfS`pE |JA6ER '+`фNSdWk')xB+FN4IH uX Fe.IO)AQQ?Ұ&C,ZOX f?&AId'n$ɝ0&KS?>c1c%⌒((l?ɽ8sKs:Ƣ5.QC|s+J<1 `€uk|g5%-b9D 6C7F]$q:;A< eB̭rrGѸS\)-BBwHNXpBᝋgLGCSb?Aq݋0P7y8 x L+Pa!mr;{wI4:^aFvb9!]:ALCmtuk>sS_@ Tl)1MYRw7VG|e%.raE 4$p煓ӡ08> ^"}luIo&=(is:(aC0@ʘ2b3٭gBiI&IE`995ҵ˩Ď:d5d\BTT%wΒ@idG` Dkt8,\ s +G?Zc^Jo$+X g\Ṷ3C8†>^W}(Ͼ?au"Z.uJHqȟ;}R=s͹i\Xy3kПEP:8{4"эMn$1a?M<(×W:N{sMpRt|v"^A68w_^C)Z[̢ =0ɡN؅?C 벏J#{}ơC$D%+\[Oׯfd:nN℄ d _D$enV!5SODfߟ8yyόm^'0)eAQܬYgm_rM|z|M'T9tfMg3a#f%n"C: ;ybD饒h8)]o[Geyd[`hQE0 X^5e8pӃᤢ }z`Ek>ev̞?p(a3  +$Ҍ0CisA:":Hl/R;;",NPR68}ϧkћW%:>Nj~4˝Ȏ3\YG}?rfދ:r=еa?;/c֗NlȵlƒA$dtx.t6{9n[I?y~KQ4"~(,n\+~aFΉBOd9rʴBt1",+^ܯ.ʦG'ƸOQSfnd8ѷK Ԁ0 qThI/rjAɸ9*GX#%%\xz,7kR:|/$]=ur:|^³OooU fynyyz)@h3ȇr ^>hXƨĒuӂꆶn;4^paO2D@wlf=axj,ک]ÿrl}ƐF,%iջ=j\vcD;n1yc*ӕV ˩T&,Bl|-rl)a?͚|ڷߞ_LJ/!?|E*|!لRC(ϠÏ>+J}@Iå黗=dZ,*<JǰgOt9i >QGy2RLYFߢqDFO7BOmUtlۇp3P5#Kd.!ѿ\~{|O!VxW+[607'n&y~o4WR)wx47N)CV{bz\rf ++L/K{8ѯ۾D6JkU|Ao_ϧTSyol |S?zz~:\jW9}Tݾ{9kv)Y wkPJ̱fثhkJ^>=߮~ʡȅ2j:q*w)mp5׻o( +<Յ2CLFL'"P:X~S|~Biiۥ>W,o0PBo'z<,5޴u/ozv{,w(-aGljW}"Fee}9P:?=E40ZU+KgU7 ޴s:/ꌦ`vA>NO,y>?!LeyW`cvJdT nBf34sg94%p\_T_g⿾7A2txVU'Ur!lwSVml2e㘊]pd3ߑjgnƒdǛiX:(|\V7r!"6cJFM: e㠆@E3r8G/!ѴmU &/ +po1l|TZ?&uj Mhvd +|8A Bt(2,Qհ]7:oXٳ7ӍȨ$)R7}$g6Bv}שpBl؀^H٠3PXp8$Sl[:Th Ol8ZpF@'r*di!qp5[C>ԍd=pz`BNz|我jY\{ +@RfOwݎn[r[>`/5GAUCeuL!s=r@Mww$$Bڭop\b#o (eY; ->Cr m֫LTƋ*B]T xDmcvdC@ ^ƥYw.mp/h kÿ׃#!}l#}wT },1C<9ݻuG>\H@~BG~dҒVcWWNngl:ȰY 騣WBRM}/}TƠ%AoeCW$t|.ߥw}-ƙu:>$ىpCg;2m3d3c]e:S_!dC|Ǘp1?V2-1MwT?~qG"܋Daj|ĒPR+-Ϥdq!p]NR+2ZC3J?tWֶ ^3^^@1l}#R%ܾHA^:jKM\68_E Џd9{١?t^kuN݌+jA{2j^Kz -i \kxwȲcۆMf)\8Z0*ťA T &b*c9G0^A/zbǤ`RUAT!sT Zv(Xby}ݩؽ?Tޒp8Xaqd,BoVn*5>O6?^|Zu/ԕWT.=Q, K%kC:o$ڧ\2t¿v~P :#WjJ[ QG1fHl.w7+.oG v ztx qt +jB}8bZꕴ&? ۟hqmጌBG4WU'xUS3UGW=yOx]#=̙R;åeIn\~A ^\gPP9oڒ Éy]9iׯw,R +5}չ.=<ϻ19!gWr1jDPY"OBr:=QH: rp|S l~* +:#IDLjͫ?kSQhy-BmFVݵ.x QRsG& +Eu/ Ń1P&Fj>.n +´nag +m(0å1L|xC>3^?/25.j*7ѧF$'Ԭ ]ʄDCL6ؕ9,.m \m_|A?\Z){i7[D=WÉhi|Noݘ;feG-K>-?4uw;ʝDޚP:7C+`!*L]lMglSEJ>R9_]/\:`V/|$b?Aqr gy8uvȑxNyaёsFbKs|3q=\7(7˯vgޫ#z֩+z3j 0v^6"_X]Y1\)>Ex+K쌸GöS]Dc; 2,ֳmro?}Jt?lyH {a%lޭ5u~oczhCv_𣝽c(k 5,~>Qϩl%amG=\-6.ʉX'7}QJ\{@uӏ>R~z(IpS1^&^vP36Oo2EtMF2tRޡa"zu䎘|a='R١2˴䢩GƘ*}V#lt8)RyOV)3JϪo?dEx)"wi1xTː0('õKu|F)Qf6@*]gµ3~B$T㕮+ݓ<3㹆_i;j|BIULod@Z2Pei:N?4C]B~( ޗPqz2A; no[A!C9~xRq54Ҁ-H뚣fH_=vV*6VGP)l/uE I0XW}t xro+`1"lۚOi'qug|BӠyWL/o`̕%R熈)0hAbF uCw.*> (6P¯^=m@8۶WN/rjͫ_!2<_gGOm#42{zBU+zs򌮹vUR -Omz̝s$9D 3Uyf0M +,F8AS?\5ɬմվrV+ $Ԥ^(WBVVp6-hR:Wv#p9ŗj ^4M*yAHOJ\]WZ {BjVHe{H*e|9YiLj cEұ;&f4Eʀur%ˋQ=tT~ X8tlxj2HG ILr1  7FmQ+LjôBQ33IR >6$*K|Oо@Ki]1) D⃢?$*(S#٥v.>$(=qu9qNoS;% JB{ +s~%%!C_ Dk0'"!LG>"L}OVSj+xr!Q+]XړU~8IWRpZ +*Ӌv^Ƕ hwlwl 8p h;r 66`PeʅXח(>3P;eBiKBNt+= !K{v1;|siG'u脕2H/Xd5e"'6D?r66*^ y~3G 2*n'R/O꽯 +y"\]6a A57so4eto–1@n$*cyYm) hqU!WĄfbKҝCCuԟAgxr}),Mޗ #Y@.3v tDlKSX8yEw['}Jpd֎ou'p6a>>o=/a~&v6&;`j3h3'׻n6IM|ڃ~]fX[PMwbwlT)7}uE#+ vGz-:$ǻiPq :{Χ<$Tͭ~|}ux "lF,w#8^ +[pvlne"N>wSm'jNLiۈq`u݇#LnW9IkiƯ%wB:SwQlRh[7m"H oi@/Kk.d7==Pm&x{bblR" JFRt] +#GJea(ԏ'0X;h.;58jRdϐ.Y#^5(Q״ͫ}r:1^U{_4}'tA\Ff$W:w:>pb !UY }*1%ͳ(X}ǂpvU %^ٳRkH̭OQz97i3G9Pjthcȁ p 7Ia3_!kOe1mwx2]&nX 0TF],)6м_@ ZfX+ e\&0o:қJoS7J紑WkxL8y+qF>Y@_czh(Ì4A G=78lL ސʏ3~9 +DY[cpKoG` +z +b }Ox#v.pvJLv}cHAҩ2 &+j1st6gjtɁJUOy>m\F )% xdU~;Flԫl~PGDNZ߮4tJ{x9{T5Er9x Ù*}r27VPٯoyTxͰ$^y˄c;gzj~5@eq5/d\V[Bվ2v"= ؄۾cfzbk\8͸tp߳=skP9g )7CԇM5 m]r#.!G` Gg`.qN_ۻF1{B9I,`M"tB¨[u*n|gEEw-S( "l^0<.sC0!'`$EE#v9׎B/ Tm~"k3!npnOS +8m'p{p N +9_OV{ִ̓jhUaOV-t +PF4@y7@nxx,@7NW[wQa0bcT7ZP4Ru$jDi-miQ;p!9r1sW΅϶O+dzps/INrurok{s5u~ws&GWaLH M>,DPEKuD3+HaNvQ'O\49 tC}̔2ĖVɯ~8* + +T<;s`@9Ҋm.0g<%.L%rI0/pu\\i 4 &On-c@?Axjp=ڎ0q^|QInkĕ9$V2kd>39YG!@(ٝ@fNΧI5-]ĻD6:\L9kЇ0Jƾy(6=|Z[a$5(C w_ C(/SA#x!Q^$_֩Hgu5tæ;, z7pD89e i;$ 6z f!iQKIF I+$uHRj$,Ip$WI6irH1y㨒PT5#J2zS=_?a'J{egIhL| Q:C.31s(o8ꙇMnF1zĆ1*f/UH ţ1(]L6!͍@zfuS< JB>%D.IED#)T$(SH9BGȌ0!@Wʥ "tٚLko_+J"&&X0gk7K.CĊYs/ DŽFK-!@<ɃEy+'sW ? B~7%fSJTѶΔ}l٧hŞbjB!=L= zA}YOIib)sP#Vb2g)ek 9Ōaj;lh)Sz瞂0n4Ȝ6Sbo0d?Ml# x~ɿbt8x~+HړW )nG!,Py%=XN ZӮ1 2vfdYo6nNr)άޢA]>i|ۮO_@RN24 <I݁WcȅHUCMql~ +_U43B87qqlq|ac\XnQ4r;ONرlɮOgv;=x>Eh9; {-qJ_*KB"ˤ t>L! 05VQ#'p:c ;G +-HuA09bw_Ms^V#'HKIRdsҗ&a]`wcCe32dHsYѪXD/S<''[D:ifzj{^]@&AdՏd4t$.8r:x@_yiǷ>.vn {~k%LecuAy PXODKA}L@c__oc|݅E~6-dw~ +nظ{|E! m)k(&j%&m^XP +h<'?~㷓|J h&WM}v~%GK"BE(WOZ_:"Sb6l-_἗m'Sz^>M ;0JE;D/u%lU}zAHUMB*~';F}KOmq`,|_{rjͫw6GС6xrHw;Sݷ_Lr f|/}뾙(> s .oCG8C9wym0.Ԯ +uٷ\' /̧)]~x*xn+tO|$ M|_0az[R\CU zEe_B0mevΩ0*#ᒘBNoX;Ԧa^#p*bs;Fv)\+0=j=qvT{~I]KyIM,)>aKMӏ =ci7/ р-6 F+6(4hI^QuAcKW+0W+lvQqe|N㸣O(}cu>JRwb͓j  +m vcp2\WGl[, \@=k&sq[=[HEtVIէʄU)x`(2Z(Mv+M~(M>7inޠ,IOg4Y$UW_Td|~L2AhPWFR1Q^D#+r$e.T^f[9aNFW=#׃Psdχɻ!cFA%}HR K[NsS2l4CIGZ_;mHkXçS6az@͌F|:9kBލ2Ty.MYxXk~Yip(c`or~u|s>vˀjc 'Oi|-U&箓hvm\~Z#rO>lv 6{ y^·6zeP=S.[WjnFbVxt+}X df*Ad{!ڝ, .pg@*';,4KJ asA۔6< p"SsyERh.p?#G`#qp}M;$yBΓDp$H HfrH=¶ _/K_`{F؄M`2 +JPqRJɳAQ7o3=n*PK>/fP7M!]uUAoڋNN1Ei؆a9Z!g V)X w\ ȹ-q.GSMB&渤F)DLLqxM|AĘMpn( Y +[my?8yuW_LC:'e +4ZS"+ h+-=kګz~zC_hh!7 xcEy5-%M#Pv|$؋34GO? +<严+sɟrЅMwVͧ(g|";hcq)2X-VJ;d. L_x%a 3 +vˁ%}LN kK&ȥYZΈP<;mRB[a:La:"!Qʛ +LV$DAeMFxFw}ߚA],|FoԯHנof PzZ'P JP9d$@``$F,'z/As?ܞ /'͠/."xⲀmM-gA<`xzgP)9 +qw^/eXsm`7-ዓxo<칛'e z >OϠŢlOd |8I6; a}(ϵ$>zLǻL#GP#Cd#l>J']Nir 0z/"ۦDj}y3派ķ%xj[tl{V+j`xrtB?:x؇} nnL8I{GH/-蕍p/s$]tm:!p%e!5e ̥ad.7\8ًd)zHJ($Q8c$7yme!?Yj11j!woO%4 Qv:}i-Yzۢq`V[ +5<'D^Ó47u>{58 yXh&" :qΰHtT +'QvqZ0,ޕS^ QԏX!(ڲKuD]c*|N +ϛZOD7~Nn!mG[ŮKʂ4Mo?;)~>*?{* &8(Q֟[cym]ҟT58xL9\[܉hߺN]>{S0pa{GӘKF"v|\25cdmC~-f֚Onj8%,խҸ䵬NJz|:Ur?q}ۄpOҲ^qV OYr H=v>f{sښP۟-%Ϻ&]ݟ8ENfBE$GY~atǠ2U!Չ6DŏWeA|L1"%*;%guB;H楢 97{pmxzAl9CP}1r)RTsJckE 8>zdP(s jC. 9Ug($WA7Agmf|ZZw4;(&<YnC3K{ql9t fl6c&M"Qȷ!m3JRί-Ԏr.zRۆPi4,VxQeC>-.or[W} ŭS~8 eQQXc'ʁjmE&~3yNiY +$K*@On~^s\5_sTS|}>=j ={N1H@vMҗt X87؅yH~]z\< v 4Fw Կ[6{j%Eqۧ䴣Zݷׯނ ,J`㎚MlW 3Bn8Qd\ E^uv|^$'"D'{wZ?qBj-DCrǥuB|7fy(:NA7E\ `?yD&lDV-Zgm;% @m1p@M41s![ u0/ 4PACݩ؉y꘯䅞~g0!갃!Zv_%_r +z<&;h}!:a,|xl?:t1 Fwh/p=>Uq.V@5]9 6YϟGe15nc؉4 hhwjBݩuys/4re@'ͭWg6p}$:3l^oWF;98znVnimlFn$)ֻf]sfys?ITBCg*~GxQ,keA&`/ 7N>F!KW neb@iw<&&i:%g7V|3]gJ^Qtd?јѦGէڮ*LF:'|gj2΍axQbUi1Hk[tfVgXtdwPLy|ob:0>+`i}It F?TH_($;ظF0/K.@NH;!)'>pm="jnb`!;=Ύ&1ulvshűek{09u+Zc) +ʢQÈo{"f -k( ~1Vx#}wF&<`pp.カKdK?V qwث,vAH,FPCƨ5D~m1wtb[؋I X,87"Zor;M47Z/nRO慦N|BFSqm@_R.Օ +%bkx'y,kbN(H`zIb9BQNh䆤*9S?tY[\:IMiӻ9%zdIn(N㐟\duìYcc+rH?pIp|w$?iώ&;=eSۤÖdX,?&{ltry4bm>6^R[A S6fKdd~%4I'p}zѨ#='N%Ie^.q;2܏+i@8EYw b aYF h [)/ M*ZM .J+jCsvx^̞aQP޼h<<ǶqH9A FBODzI/r?wד;u%H +oRZJm;WUyc?T|qeir*yGbo_+^:oCE vpHm(XirXr08x#s-8vZB/ Vq`[*8W@Cv% xqPjmlF*tDlTu`mau*}aKVmK)>goRt8V|@U&gEd^\!nHkGMlusbzxg$>0iKNGQmxworu(` r +9zڿ*AM?pPN:9;slC+]Uhe8 1^3[.a""xuwvLmUWNkM;1=`).G1=:cz1=B%S$rq&^. +ԛS{\5wn?x>H.Tu-qMpkFXXnKE*hKR]<*]{ipRrbijP F!J N"A_|)S> 3P\L_mѮՉlq2~YSFNB<0 k|cUxR7YMs0G. +K++R X73e]wC/,x +e=2>'6z|%݀=}eUH%=t9VhKZzvYOXz~CCx+m + H[pJK +cq'kE2*2j0I-YD^kGP廥cO[uĖn+ԄtGr#q`¥Nv۽ߠ{\<}Q"'.>KhibO^ќF_A_mq<6G(hM;/OzN&?iC;:μDCkGo5:{w-EwjxDFЯ; +˧yrM>iͱ1$.FN䀌h.sWCQeX:wtmUrqψv4 +l=9,22:q興wf.e"![lk(PVW3C=RY6%YsوmޫmqB +) cr/>$:9&ДeZƪֶ7Qsc 1Pc(.Bq(y|Sw`'a|xrWx$Po0"}((v'G -QyV>p hfۢgj_hnk \Cm2.!s@&ЉiUB *D .ǐ8auֹ*ۆ4 %Uh<`6.F*WE}}$ι*~j=7TXv}^zOG3~-32:bC&2x-5!ݔi ='t1kƕk.pj@E3ӺD!VK/ց$`x:P/4N̹[k]:mׁ=HpƼ;R2AK,>#ehwc fCG,4›nHo?!p" _BI,|ċoe5| BX{a(,jUwƎ" +Nc|/,@iJp|9T8{ yY}{w:O1[Ӄ-Gߚo:/V=ry\:P4O`-u$s왕I`yZHG|-r5i[_`YOeZ-yAUN9"o: +6}B }@j"Ԃ'+j{ ҧ HW h`g<„p,(,tȒoi,ll "6WSUعiHqV:'쎦wq Xԣ:!yrL^d<'H*qbM4<4J$Ŧ)baJ S1Y-LQ@SLiS2Pca]8M5ٔ3'b)2}vqS SV1øM3)q2{)op6-Φ{ +T0:;##s"aL!asc 547ǘM&"K*U饆S֤{|aQ| b{ϩn!%%S`A)iC61)ԩST +D遻勺wJ|צϰz0k3))"d$I"L9FzTߔErz?-ٕ ŻpxpBO4§1VuQVx%NiKEz) WmbmeRuLT`8.bV݇xeC ~C#"C`r`b[hk EN/zvٯӏh$Eˈz.i)#$`^O6DT4o<'R[N[@аO2~AT>fp D3ݕ"|!'{H&`oM"C 8I G(; V[Z͠eOk%Gm\F k/":hoQuĥJ@Yd>:n]4VΣ.Rg~epBGj9_.}a:A^*6Ӑ;9[Z<VYZ< gJlS!¸p2I?R4h\t,8l+RXSqk2Y|7!ɭ=eRXݡKnjjQXaB g~Æ5'FI1]~N3>lvtqJ0f1nAAwg8%Uv{.- B@D|y|\DL˺8l@ahNj 9aCEAw%\F髞+_70?wgqt,qE#=;ф?uW-RE{SU+H8 ^˷< pNۣo0wMCZr:wx6I\Υ<ޒX_E_eۧ1v' +"ӯ}(o6ɂYK8[wq3C[_,%196Nv|[./+JY-`mCFyHSڱG^i r +u{g-ɁUa0d/,9`U:BAKzV2p0H#d\'q1Z Ckdy;6>`K8@GhA +''QXAbZc8txu|$'I_&fmGP*ď[ +ġcK-JM$ +8NwH2\^339X~[M֓F |j x˻-.T~-mh0Lˀ"r.|.]Xc|Fh7|^M}Kl\>C0Gt""AIfWPb%#H.4BRT+i:sVbCi Տhޣá HaXr<_g|0tEh8') X4E1:UȖHrMiS(!YsL]8Sfsrɒ9/2z5"$CvzmwKǩh+diqcE1惐$ }96_A #}"0Ѽ)aUuWIV0\[]Zy2v}.•y>9 SMd.!٠B&S!X b@ZJ?I6'm9 "{-,Kgv ݏǯRx@^g;KO)`lONO 'Йfd&,, 2W}FċUE,g $:LZ˸DYdP0 +|jY|sEv3 /< =ʵӦz40mraܪ44R+fEu\ P?:\^atA HRn2z ܨj%h46)΍2*⾒kҤ=<0a%3v9y:On0m 5$$YNM{|A 0 0uf Z&љ q Q~ Xp*)0|^:i.r>:✃cJz(b32%K pU~'|/,^p AQrAIbǻ?ֲX g$+/h?*b=re"!$'x)ba2ʈPl?,ϼ7%VZ)"Lf݄)uS*5,}i3ъHwVh}Mf3Y8i"L grO/^*K2mզ 5Ѫn[>i6Xm$#>yz'g`Pc0)ͰjN.ew[F0>#u`3>cϫ4:5`4:8irM>iP_JpNH7B O^,'}iXbaD1 &3oc e{K>ْqN;?$lS^(t6X;a7fB11jiq 6E=b@:sL{j{277ހ1f:M(R6`F\DvWFyyJҐN^WWm9-rl㒝r{6ɇlk̋g]\U1t~{XDVg)򡮗e80&ȺF5uZ/b]Sp4Whp+Ip9LkA8fx4c:I**jzh +/k:^BĵwecWXL*RäQMMLd`/Xft*mٱtAծctv +|a, FA[nJサ"p%ꋈzRCIn]9 n{FV+BP'ېB*`G=ֻKvyw~qdBI:z6]{ ?V[kCg5hD6,$eڂjX5u㼭:LbCulEl>gKyvn$l kQd P +(.[p5qXuEO@ Xx\I,^~un hJE߆`Z5!:PJF}jOzuU"7X6by6-_ж6VJ5FDd&"6tQi#%! o;IG=f&psX}l,1OX^͵hrDy KU@f|MZu%b8QD]ŰdA8Nl^?HKOa[f32cHV*m +uKC8ҝi%կcazm=(\i7e5T4ES䄦Ys]<\~ʌx+) +jFcd^ˤ3p[{C Nw0yXܼ6z5|qu56).oHu7ȽT$zIۃuyUdaMAA1CMc *iET\YPsağOLoZRZA% +Vk%oiۻոFb`{2bzdYL4dAص4by3@>۝O,Ommbq<·p<ⶺq o2 cOOjg@ 5Sp2k"l7JV*NCQ)-f-qcWf ?A߰xe:w %VGL ;8b)hy5SL +Įy*t4;Ҽ5a#TZkڋا @Ż);JVtl݆_ LHj޼?ᔥii@kSKe򶺒;j3ܡ'c~Ⅾ[t2:'}!y<$qH`1Ϫxt݂~}*I7KmBr3T %c*IXmcO$)s#rP6h-2R+/c.YZ~pyq#KI?J8Wx\+:8z?/0 ڳŢu/nXcZ@K^_b+zHX6ll7…ezƾ$f`cHPi&\Ci+ cZBu2wU0J SN7Y#yy𗰶f{ݓwzמH 3Pf4VktΜ`ؑȱ n~ɉ,@q+_rYGsڣVUb"h_Ya:Ng7|cJ{&ݞgl'hF)_ǻ;Jb]sa>j9i)fLߕV,zA9X*Pف|ܘfbrZS%ˀ7t:2o=_wHU'>فzRO)=lcӃ)px)\*/}źIw*kWVs{uvknG{Vif@ls|ƫ%t*! ~{dUP`y,^d~ 1O`:=0d;C-.x.=dl<RC)2zkGZu.n^BXdr"C18DY}GBB&@ͣ_'iOpdpHq{=PY,V}"NFlSZ$M U `"|HZ`U?E[ V a٤4'b\ +=!L3jHZy0Zު-o}&*>J?uoQTwnl. Jv)͢'jp,4È 9é᪫I詙ϠB:X]lQr^puBC[ q_y+_X]Cͽ>=C <貜̮.y }"X*=FOx +yamG˧$`=$OvHf2ؘJ2fugU2' gӑQjdT#ե_Ĩ]ȿ\yÿ.w3[9Ԩؤ9WzmXԙV +2ծ͸bsxP|i g 1J83J8U$/O;W)_I)Xt׻%xL.;ؙaQ/'xۃ݁8^aviRwށ/ȤrE#EF.2rr.r-E2M_D7~|+*u@AY +Uhɮd-nͰV e^>SjW= <:O-HUu7LrJUmitrv&wJTd2r9eS=.3)a"XG_bapȀvBGd\Its/)sG%?zVI7T떣 ջ Ix,m kp$g$m9W}X-̞2 i.Qe\\ylV}E:4scumQQQQI  wQt (a^P +S wPE0Zd2.)-eN:u:Cx +acT՛wVYV5-Fn2rpgKԞ\ΐGCsXLz14a6l|ӌ$M,n*ܷڨ`)F50n=Ltզ trDLAucGUf,c݃1`-]:u3RE*3r6)8mK yyoN`ͳdmԶ7DI4~j/ֹ+,iQ|QQ6"5©c"TTN% ~ +_O>ŹNrg3Z*?VK g v>gkV8Qqjۂ9 +,fX@s# V,LGμsd,CsaVԐyCjHh;*-2B515Ƹ@pz*E\u]#,Cq,eUnR[0=EjʏP%+)@ +&8_b}B n5Y)6OSzȚMD ]iɁH贕(/b'vSY9pHdɶ] kj;Pڜu-JEl<vԼlz.E\O%QcJǀ XiSS+$Iy +(^Z`a!;=9Ilc~3"$%ekgH0ySQ}JW\u|X$u u/&Akg@(]9ɝCqro*] S:?DwtlR&+^aYJVZ+ILpy*\A*t/麵Cyf*3lH^,IBOG4g\CH֋mWͺL)hEg[-G* +O<[қ'<&A3 ͌Rۧs-]IItEcz\Ù)S|`Pz>7G&;ᔂɀ< */ԥ(m6y{}[ FQ*klDl.:RXjHQ+EoG߲ (nfmr>sf~W!(=lIQwa;iC1GtEעn`>O=.1p>}h_aPP!.3\ l_.zB@?ۤGpR+.#9?w:zb)I-;@ڿ6䄫v2!{v9%JHK +tv>Cػdd)ELMq1VYHA +bO c];M?PQH#_\f@<14spq-BGfsCGGs1gz`xbs2yz O&[|%( aƆG6y ]w ~8'9ݝq׌C@I{\uqn{"윁I3B' u`Zx}''E$˘WE𼍻D:?R:]#X:`>|mdeR(rCX̄,7"Ϳ4ʰ-VGÇGsGCs +1Ґ<򍫩o+~*YwFAK9M0rAh;Lg=a$~E_m|aO0mx89=@!۪IQxhNpѣ*$aBr#{(ei&}=$݉҇Rx r: +^ =Aa߾(~E٬l~^D*p 8-X9 RS^s|%9($T,,V%4a +SuPysWD,(I;l͝-u Oxw4gUmyڄOB0_bOyr5xdSi2ܟf' 1OWy$j'#q;h!L3t"*Bs>wtaIW6A$)WǕt(_"6QXXJGz9+QYL/ԝ>)QF)+ʼza,10%8_( ,!k̻VX}g{Q&-~BԪڌg5J+-*GG[U95W`z!-%tI?e6֪+xfgoX'3d%}-ENWGb-])7^Dy72Q +k {d e0m2GƖQpR^FRWFD\təGS=2/ya$ˉ<9E`%/40I><͂5]i⥂TIQ +ދrOljĶd֡풩4|Y,6EJi 񅪵2G/zR4]4]7S7%>4Mw Ƣ(4L[bP"BX\^4_+VuK,oC/<*Rz>=BQBC^ʚazؤވ Mצ) 9MVLnE> $0p֑d~q+a~QJpSU£?@bAr"vG:n%xƮsP))ğ +?T^?؜Ԃj H34LFY$0 ;J[>L܀vr*n>dLm\1#E1ɑ#J{KVB4Y З] 0P797> =HF\H= +*%&XN]*[tQAtKE67r'UqXRn8rE +sŸb|qsqNfC( @j8zFI(%xmI}ilr"CLHa*'\^M x +491P_CpPRS{euBl$ e-n;aUL](u))1kppS?5Y('-r8/gFTtOn+-GLR`bO^*0=WB;p> [HiTT}bU di^j*Wi&!se5 4H`zvpA7jVj)b.Q{%A4/)@{vCo q= w'K +WjQ#eE1'375=fev(܊'%' +0yKB~8T : 2",Kl ila ͼpPq-GBAxzxO_ONtk1_FIڍ _[ STL(V Kc!R4{W٩TLn-oP -y7 +v$SxARR}`E=$/lU61&0!b"s [_h)'\cV.H_i|$j93#ذTT@{ ` d}~v!Y@ebW:Oj]i~OhZ؋/A/j^ _2N|v\EߠȲofDkry}Am rՉGYXA[Ee_t#X"*c^% eԜ؊nIa4-ӄ/ +UܔJ+}( X0YP*Bߊڞ{7C[aG1իZT^ѲS-{ղv?U$";eIAJ}LŌޯ`xeQ"C- zGV$K' r 8ڒ~Uw_<:~2BH?c+Zd vL("Qosَk\ K.,YᬖT7UVB2}CZǕVG,8-Jn0\ň9%}rH VBCfeyXKD:q)`Ú<[WZPlYGoLAd3&EVSR-N۞ripK>1M(qu$z𥉲?!mHYBiCE+S5ǷV. z@N! J`z. 8F/, @ bbOr4%}ٵjpicvY?*$4N`7>4*Mmsm7R)y. C+:ɋ)\"9y߲ԼCR3yGU6s +i})EeUYɭ, '+>R/p%b{Ir'MzoV$KMyx3W({%%ҭH4dά8CR jDCr5_.1bQr\QEPxg@YCeq,Rk& +w\vCyNvg +`ͤ[S(ו>Tّ.[t$QjhQ[t"L:`^@{TŴUHyiՇ<& yt + _H| Ϙ +yTd鏽)&[eO?hwx'S_ +r]9s\N +h ~EQ~De/Rɇp5}ZVH1Q%;8Z|ueE)~h׌W%B2v3\+CyeZ%N^=KѴrDŽhb251@3YtJh/urR bq Fwrr/E͉EI?e!ج?vzL7ԱJ[f-Pj:jrʢR dN۝^(0(Υ 0KYC=5~GUX5y.c2Z8?Ja#QXD-)p5=)G柧)f<#L;ΕD>ӧt+5uϔ/ }m!Teoj3 +rH&TВw_PP%23Y?1DZ/@_wC]RP9u鹹U}-K +D>n06&hSfS+/nI5[ҹ/C摸\])֐:MϹ>}yyr8$OdY 3x+x#rF>ALl߿û/?ηu㯿Z?}-?~;;?׫:2:ARzqH|Nh"=} [z@JG ChP}S&?2}H B &s|dE&tA썍_}ō >+0N='bEe\t˯'uި}99(,T!J&PDl+d$Zf7z:y: N%#l7dYw–ȅ>2`&dֻy~}<='/cP._∲֧4%j=`"!V3ѤNp*7и,!Ąa0g?!$t'~& m8/w)6"?ݞoN#1{x\plߥG0c +˒3&I\Λ9}W PDl>CHH2ʖ)TF# +ᇓ4 +I=d/VG-E[E&Mhw;x B&Đ)pهüFa,q;rM>g'cNuTAǣ1Mg 'xBT>[Bltۓ +ۄ +VelA>ۨ!\qw8"O?c rw]L'>lj GD0u]Nt} yPiv֞#/DG)cdsd_sЖ`\go^qǝ8V"~WrS '213m* tOϪV`ao.l&?fa"J[VIRe'hz \XV:قϘ}nz ZcM~Hv@?I|1dG8o?|pGbxj_?^$ +2|_z0x('J [BXg$%y.DB$M[rk ,jZvV,o! K)_ +6$9hlZtu7 ( O +wG5 ^-:?ݔApedH_4OӦ#}$a eYRQ3~PqbqeEN4Uz.zmrz!w_O6I!JrVr%kc +a>㨡?Q2?A"tm,'\_T~ڜ6UrZF#X9%mXNCwoDP:3OV=PjHЎEBeM:gU:LfDMܷt}@d d B-߀LiPKMX6_d;Q_N%?Zl +`7I7HI(!9NFʻ#!~|dT+::=BpF";nBXA|D\lt(~}J9qDvDeQ^R砟d;^ȩ2!]yHvԬc͊j#׀UzG>7s٥T]<1mHhMrmG+:yIcW)<֏^^l@CTAYlStvcRn)(_&3=#ܦWψ[ru諎E:Ky+wsH0.gͶeKTDAȫaⷊ5W,ZL 6u5*CGeCGIC 2͌T@V)8n*V wP\!~CɧWpWiD[B֨t +C1ұЋ |F<9'0:PζK@*m%Xa}T.kܫ$dWy8Vf]&l @Jp?-65rH*+K`D-d T[Vpʑ:x I`1s P>#l![<H0={b}^cpd@ "ɽoh$([lh_'Qb|߲>1'%z +1&x+8lablV kZ/lC#+Z0UzeRHH-{27dT+H~~cEq#׉<2$:VX /^,^ha:wJ<+^#qv\q5n +ڣT63_`z~)†~J?Lr9(NP3/ ` nxX@QJ!Rd>;9w6|_>:/Γ49;E4WrcPhk*N8tꇾ$&Qb˹,'ttjvmөQ>QC,/ӥBA^n ꂏ[*DHxKR-%EƮxn r˅UXXҶ=R%#bٝPQT@Qu4r4eٖJT$**q#R8=#+0l\o}r? +ڄ+, @Y N +*\n/b{v]prJʾ hEHhEvLVex9Zh*"wHKSvƾƩo-ŽǙv~h,;Д[Lr@, r@[hsHU@"4rt9bm]ǷU[7&}' +ДWJS֝g)F)M))r4ō єyzv\z ۾XZY~$U;N}RbPgvjnUW[VƫjeZVƫ]t3g$[,TQ|$qMR,~A"LVT3&YiP#KB:u(BL*W6],&yIWI;%wI)>ϻ$$SbHpLJ]XGn`Hvl*DQ$*[ 8-Qy\zԞ{ğ' giG "6UănLWL7 iqRHTqqo@"vpzr(I8儩k 'p,tJfr,iETUB{,he*'AccX~ =w44 +w#?E9hjEˮnbYE)vk딆~ye]US(c2 YKhp8_Frlr{NFǁՋX:.NS)()Pb rZ$vc?\&&)58?q +&^X-.M +c^*4e|bY Vr拹/S^mH*~7raVKxibi/M&DuKK `r8p [8^V/pE|DZ} ʥzR@mU;w'jqwRH[N:@Z7 HQYK; 5PX^tWVx]biK%u$TyXxK' XZqGA"[dbsj_Ϊr]bK,u⺤.x]bu{]b_xa&\,8U;܏,IE{L6sx]# +Ԭ7|8OW~>,Hw!|PTor! Re1uyk.MЍ(N^tssdkQ! 24j ٓ _B mfxS, p]KrD@wcr/nlorƺ0aVD>, L]$ havG'p "p,ȃW[m%rhLd4gVرݍ`U,Z22 iݑqY:bMȳW2m@̌,?RSgۋ#ۺP$.,Jf0(/~]j^rI ~u]k-$o7Iu,o9w}فʶBω|iŎ&`3 pZ[t!WN Z ^cf :aZVCߍ]ұl&p*VBȠWВFV@W1PmehE$[kp#?vMޟ"(Z%ȚPUG뛂Z^4Z( +HJ H@тd ndǞd4 ++`>"_lϤ|-UH֠ВΊWd/$P3ъd -HP?Cm>(2q"wZ K$ WoijDAEeHB4&L^d/0Ml$[pЏ֒, Gbue'A,-?Iℶ%gP(pLW!YjnU +H[BmxۊdױmHVֵ\DO pȊ!$J*c[N'ՁT | ://Iաa&Ppu`Ѫ:DOЇYaF +X^v^^ +Ӫ&RVkG #UsܱZ}w :]˶|t*{i-Mh`˿VK ETu r]fR-!Ն mH9^18繑/R7uJdH-h,\g I(2$_T Wԯr]fRjCkR-P6'Bͫ +0v=bq|pi +b:DzWV dлHUv2ŕ3(CT 5ơk (N^0Nj(p0rFy3(R4TAW MP%jZm׍=;˪Z+Kš$(iLWDjd"v0DӝToc}_\3{ PB ].Bo.#NJnX.$I 5]]JAzhq,X + {}IZMp4\lFdK-$\vcpn⧉X `um?0tqAt cpz| 3g(G4Fi-)ֆr jVD2ri-R\EEbYUh\;t"N/\L^O "/+SlMqLO'2 =x)S:*vyZ*;w2Hm=$H ^U"i<`"z籚yC<. eNr\Y(aNtDZ0{Q:/eݞ58|?0oVMJO[trb@NB/]83=&*V) @xZmHE8@G:C.3A3sI MYd%Ks,2dq ?pV儉KBiҶb\RiqtbH3cjQy11iNiJEf*n@ݧ *-q;uܨ}'&"Opw 5I(dzn-hל9ebtcˍ]@"I#֡84jo]-&_t`ӳ!ɣufZRMFzgUb;\dF3`NYgs{+9K۠cMVფgCd =l\ϒ=7jAZVˍ|w]=yc7rE +|WJ{DK#={ĨfN<ߎ\O}/g}vH?L>o} .x/GP)_b݂d/cI>_0dN?lnhgS=}%!ybl)?T^CQo8 zo߲7pqC6|=lӥT gvN {>9,,9.Jg gbsɠ[5:>,vh CDl6i{[69ߩԡ lp6{ϺaVzy:c=L`ώ w|ZE)6%|sKS7;U᝾)qqX.""=(:"Z^(-OA-%Ck[z7`Mك6Y7SCl$Ddf0.}]MƘ- 4޶x#wPQij4 js@y"+_' `C/~}ѿt:iA;>W.ˁ_313 +Ցm%S؁#,d3 HO̵v!|(?~yNYUJ櫓:9/ ~]Ջɪ},[oteF67wp߻7w8;cwqe-,T.AOe 9x?!v%f嚹4W;'0\޹l{L'^W\i$xNzƛ99?$z0f#&ZpɅ +xhTE""2!n&:_}o@ ɿo-&2Ml-whXANrwܧ3e et +,z +ڇƋ޼VӷC:}w:dۇ_NNpL޸ $~O矎O޼v9PYjn>K =jlm5B;I6<''=`y~ȶCؓ@g|-J`X8V?%VXCg9ğ3H ?%6wy1V1oFdpb=7>w:; M>lmN<ߵk B$p^H@~G{=X<\VHz%dU +~B:ŋp_FxZ8=C|Pjl>=. e V|QG&"x/|-"lvl5F- A0!xۏ. |vjBzrMR1;yj:;=(pGE DPaX; +V- n{Kxpzn p8xd (a)62K@ Q=Uݪ:;0|;0@<(WڃRv[؋0!w`]R+ڢRM@"ю"Nya#dlMA8h3P)"a+QMEՏyp-`_9eZm:T7a~a) Ln g9D-o_F@$Aމ*[ t ,:-6s.B߲UG?|f-OH5B/KzT s{xk U{ ݡKE+)/ǚ.OYyo#g "YӑZqM39dY"N ++ώN{ ,*=㗓y8IP_1rjId N)rs|zuFw5.Vn#:;6c=X-cdh8g VUS%EB)E C 'z6tהtؠ^M$i.}9tAH4$?w۔˓QqʒۇxtfHq[k |- WcK7 #nL (Z(<_~Ao/ +7q\:T+ n [ }KbRP0#u;["l[u w[F0 1X aB pA-$Y}r9CJVJC 8t>ms>PFS- 4? L< з[ӝ/ +'sYZ-`&pVɀ\ONin1>< .KFV"mO1zc5`sY apZYfLʞhL@#״'fK2#\A)p*hT[ d@xCv)UߎPIL=ܖzsz6Bd.} %pj`L@A/Gxs%nKPr$ +lyB P5M0\)&E @=_G,㮓BQA m%<^698g8?xj +ydqK`R76M ra nM]a@sO^QF7~[v쐘'ً#ƏSA!3 W_me[csb(Ɖ$[JO2" B۾(ko`,%oĘ=_t\쫼6P spo6V#l\6KBhOouJ> vd~^'S4q 3 :A)yxO,S;8lL/[e l[ g! L3m5he҇+K?dO$`!qrH=xQ|K O1'&]fI!X~ p 4bGTY`ml'sdމCz mgڊ + B"̠NcjقK}L?؎^jcLS|odޡ1lʃ@2:ڐw /򙧛D;L\NĤ*} X~#c.PBО-ӄNC?<ѾdFwwkfZt x`0M0WB(7 +:<&SpnX?Lyf D)}HkB$J3{:le{dr _w{8  dBR!Mr)n!<1bgy/ '4ZUg9u`,Ζ6K;Mu%< M!ϐD;$$gjR;@y(Ė:-aZKq\o$ /vqx(879%39 JeAiME7 W_3}NM'8rl +Fj:ee7<%5䙆%UjsGbG>`Λ@}LM/0  ޼wnzX/ +{ܟ=b/9,VT+:ῢ"mnitl*FYmcj%V}.a&%ùSL˰&k>-S{wnfJB(s}nF3y}-)W^`u#wr<C/ iR%Cs؆տR&Y +s{C6;A =;2+i=~߾eo?YÆ/s-Yޗt!#nwt5e{x*NȲ*sNL%|&6w> UsIc|_6iBLtms +?Ԑ' fjfU8*<ӓ{k˚N/43/R q\`UvuYljz,5 nvAм%Ob5n`vkX`WN_k.V2"K ^?$Ůش13k^gU~b];Q"dB-j#ԑuv"Τo/FFr.n^b&g }!IШ G0\p;{%J"mmaַe0Lux Ȗ˫<*YO)y8vd#^}Z:GWt ~CvŝJydW.5%pH'EvкWl.Lgcz8 .0r]Ob9 _\_y2~b(Sd?:!Z0ޟϕ> +Ee"u(^4V! +d3כJ7_hF$ތa&9W^>8fh9T#?6[D.a(tV@OIݦiYz'HbxfE#D%f&eR067}SPָ,!3d|:<Ir;30KfnrD|P/v TDŽZ3sET=84bߠlTٖk:F:T;J>( KO9q x\=ۤl@Mjsב ]ԓ +跋A&P@_0_bpr(3(\Nn~%seմ @œsѝgd12gs;H>#P@9>%XW5㵼d^<xdţLT 9=W:dtSF5.dH{ѕ]HXIS7ݼ6TW1L.a[؃rTY!X%"b]қuJF"Ҿ`ƶ30qlվ/amhڞ7s@_t (*loыB"Ӡd+[_it9@A M_J?0 ?>  zqQ6Iԕ,޾q7=mVnmA/lM_<ɛF޼HrRzDo^e;o^ `amXylwKR߾o~}'{۠vӋ";,- |9áWU'}Xqv&K&9s@VE}L 8;|C, +<9N45x$Ũˌaׁڷ(n,»n޶ƴ0UQO >i^ϦoNQA;~O$r#trjZ8iG~"-gy<6ko~ԃ3O40h3"L + +bBt%@w + P`.d{:=/ }X^] XY5цP16>v![!Q T]@hblG~AGrzs<΋ޣ8,[~ S+Gl/u27J-cp?0B q2}O +|\޼p>#%9Jl!XBݧMv6qL.,yz.[\mXy=/3r؏a*/jbduyMvܯj6XKؘ؞V8kL|g(k𛦘?L2x>."xKhfo*ƅTv H[ofxÊB>B>*ݥhWB>[)n}|mқ`oJxܻ`*A_2NIzFcVIhkr^Z_ԋ4:Y] gd8=0mp\lx[s~&۩2qx1GHN4KΧ$TBdB{SZ,g;5M^NAxm/5oIs_s4 XAN8=,|,C姌yu]- ]c"hq;poYa)"D/;Gp +n/K#j 1̭v.$7602oai tah#piR˕;݆pR*XvF<%?SeP6PoZpO/tUIJL\ݘ*f:׻;K@ {ObyU4J"Ƹ8Z (CCW.} #bד+nͅr`nVWإjF48{Ձu O +NAt/rZ jx>1v!nu^A*^D*|%UKrQ)Ȅ˵Pyt"45DKjq $~6JF#T+&ysXtDJU|+Sb|.|mJ(^7㥈P!2 t]yC}E<]r03Qd~i3trfV.lTcg\֗J\d:uYO ܑۄ@q]5ګ׼1K6JZ]]tݙ:@ 8"OSSigWo +Nm[TAmr~d~>~s-tL8,e uIs|`G7` |Kksel@Lh8@mP:w@ vف3?8M' 3~:},t3?MxKlkclKu헎DuAFĊ@p[r*THf {Ci,ƿ1]|Ň'QO=|X4W%Ȓ4w lW'!TgAy- + /+PP:Q*JMh xmaeŋ{Fa~2qfU] 9;7%J~>W /QIӯC&ڰ8fPn:~?%l͚ ӥX6߾F;wjCVEm2M#c 38֟]n%wj9 XҴT="5EĎÿ-{H&qdWLҏ4[>l׻]yuVj.pg۵=Qvulw^W ~P iQQbx_7zC4zRt}.֥/4a3XL;蝭($~U?4( 2ցلVDZNk'43(Z}HkmJWT~~BIoIWgP8IA,s,T/Hhjcρ<"D3|Mt#_z|)rJRz+3p14hͥzb3tstuk?P/pu</~?trGhK 6uSk\.ר&9=h>6+ F{6a0Hn`=\`1;?)^'5v4qW&c cy!,Nw*e!QunVwtùTGk]*2L݃SNV$uOuսpC씆m?|4ԖgM}Jr\]>k2mcY|Q]$g-|mw;5U%h+E/%b펏GZ.Řy![sNu`:~=6%H7-0\hRpmDki0ۅlWfDÇd{\7gB6C6U1U{#}_gVj1; C*6Q%nW,_<4m~9\u jْn-a2J,6EtytSG uK8(uuV*-<<<4k/W^ ]Ng'n]"F²F ]"aTT* rG F2r٩H*ނ.%KBHS?gĨْ/I`nP +O\ Y_\qJrljYD|'g%Ht^Gb[]m*! 8|щ TI78ZQy\."*_B &\JQV= qw8-&6ܿ?~dBPBVd%-Gڝs443ul6@LX_|3,lnNFMrQ`M +6+fjj$ϑ'waOd_](Pl1rb!) ]QvJ> F){ +?mGrh}x8i;*BIN~ B%L8@Pԅ~ ҷxxsasi +(A>XX:2 +|WpdAҊz44N<)UF E# ʚVLC5]랴0,)hxO +r.QȺ9!=)^6<Bߓ.'%ܓ!Kޓ䄫ܓ.5`*coz^?3aɎ,}ZZ e@D&*xŸ:5[y"ߠ륪@[KY/% /^"yq - Pa[?<ޏTLzqX 1[mzm4Q$,6bX$Hߝ 0xD-ٵZWE/.ѱ; + BAˋ0!6Q|٠4B 0JR"4BŽ4xk?%:J-ر>Ud[u8-.,@JZa FAd0J'x;(Dt"f_ߙ_$4oH?sw 9kdPFגwt.yIR$n~x.y"KrxY+P<_ inUzӄEA+z奼dG3GjWz Hst;n#]P>J/e{2dK +F'^ڐʺEٙH|™%]{*]Lљu-I/4ቼP@msT.i5Qy.ǣx#[N S8;Hj ܀.9E9s%gz.yR}Z%Z +yG%9͎bB]OܵTޝZy)/ybftWk&XaH UXC>;ZU4^(TX-na}Is>}iA nKΥ/?SR^|<R÷//ڏgv3f[&R8maDfmџ<)-; (A# n m z0FowjD2W*$O>1Wg$'/,g72th@Q}ӝ,2%Nf&aS&Qu(K%F5ϋN!v:s9_-m. ẆtUo_K/ 1DUԦNrʈNsSpSD3Uԏ))Z)WSO7O>#@H7I8%9=a)ŵ)Z).~3aiO~0;CЍ)Sԧ}J.S}c S0}*cܧݧ +Oe|"TSO)O)OyRJHccU61 *Sȟ̟2,`zp˜" +?屿-ZAnN5zT,;Ҁ1c So"J>Ieb*),[Lyv14gScL!@ )LƄ( b6y+q+t;-bo.GZthЭV w zu0#E5 y5L61*"3ݠ.w^eh˵˻t!͚ +& ^UV ,[V0Օ3c 3zT@uQ|OlNFWDt7)GC%!zZz93 +^l1b6gPsO{3;]qF XکF$ALb^lLS]b\ng[uΞ Wz3/^-4*vmsc.$MfGXb+IEl;VL?~ >~-~\rРkUؑ*aP*v*쎭F + W]ԑEW%w(d8_!98HP УBac-tLFXGU?jJEK#h#;q}h:prv"Hx/.gpٲX'l@2igi iT63&aڎw0E,[o +(ۋ#:Y"*VP 2_ۺ8߉BkJMǶW¿ЯP Nv2ɱ;5j&NMN%ބQO݉4LVf[e>U'.g+|9/ ɲAb yDfAtC2sI*l\£cY!kfJ[ARZi0Ѹ>>Ai5X? LӘN.Z1[v>\ЈZ;~x4 WP@CHN\aYx +:ZM*[V yR*3R7LBǴd V/خEVM ?ISb,Ye/enbϵv ; +x9jZh%a.J`>[Z\ԱN- ~{>mZ2sųAQ +=nJ=X3.ÆAW_~ۯwr32  g:<Rv|g;cYyc@MioMʉPMyqcRj*! 8\NHlǑڪi:cBVv0(` IsEq#'4WRjf6ddbWnP!}8s4{c;SN@T\ .:]mlfun #X|f<~OQ![S͟9Ș!9gt1sls&b[<| \e>|zPOf#'|y%Y}qA'B`yZk4 3k33nlwl{y!dvv= idacO!67$kmujbMC&7+ ( o4MI8Mz/PYH}snHBu\I":>hc@+ פxcx!<_4t1MQGֹ~o`h" !6֞b`Y;GtgLhڄojĊPhNZ:ZK\% As:uUusɖS`;YgCrxwݭd*==OT@Va@O_mknڛFL83d]n jHI/<:s.6ѝ,K@1FRȂYl&>͌Kb@yeB6~ X:t.=wO(~c%XG# %=#2O1 J> _$7A= *ěvz$Yvѫi+LJz-/p˂)g0"~kLCS' Wb \(<`W`srYHv9u&|Z*܅Ӝ)-QF3ݑ0(rB .'nref eCc/͹|ѕwdGn/bW}"37)׀H<'lrl_ki3FüފLf~5 +Bn](FL.y^P)v y䮎Cpc7X7Ũ33)઻)r6|$ؾki#Xr%g %GCp,?3KM[&~VS L5rsP4\>*Q3._+뒹G<'hm9Ad]w옕sd#+3o f^js 2f'ً0f G 9rX#sa̎ut7_xдkR,FZ44Y?k*wcc8aQJ7wzzߢ'\ +6e:$C4 ko@cV7`ѳn䂄 +d=i,bO$ f$R@_+P룶1v0Cly "J.Sx:q\d"HgbWh{f P,R{?Rn`)ki~Ku'X*Xn,uV.{Y|-3`;v:p=e5\5\Lb5Sƍ3QGavv]Iccqw-e>~2=|}l B%#bND,0hXkWavN';>7ޠ%էVC^f2ul_ItHP 9 a|Ji=plZeg컺i +Xj҅2Ko.Ra\1E,/b=ckAC%QCb&Z +:Gw<$žԑgÜ v<ꂀ[`>}lpA|n>ݢTF:t]?nC@+:E6%AsbO5ǚG^4Ci$q2^&R^MJ1Z^zO0Um^sJϬY=:s +n_[cssmpP"\_ũ7ą%6bZ݉70^FV +ӻO&gr %.}:cA j@)?}&ѣfC4=â1;>lO\PszS~/GҴ$ 9G 9?O{/Wז]v+di*=7 ÁauH,Ϭ/nFI苂ʿw.'ۑmu5 G֪cݖ6Φ +&= JI y=' Iqa5'P¥ֱеjϰ'%k .h5x[&eye67C)Ux\ԗ30ED +ٛ[%,.aU3_(I/EL%1pO)բ"־1UUZS–:jȆ* fo5/s5vxuxѽC*\.5BZ؜_7kۯ#gn9Zr{VSk= Zԃ{16\Y_}IuB_6ni_Q~z8 flZ}@!.R5(lH}Tad400s A&(|  I)0@? =. ?6.w (,P?uAnqK@YV @}u/ZStq墓0{J2A!ʃە 5VDgɬ}`~@p Z–?)/HyA R$O):"Ut֡p!7{4ߤpQu.^,t[i ~RxB仢'(|N+*fKҎ5J;/pN^_(unkH j"AV]-̭.6B yl+T/xy +YSӦj֒2u!񴄏|+L5-Œ%uW_,y$SҴZ3I$ki*ɷ݈kъ E{+V}ntb1񆲗*8K /yI*%tJ)ʴ +CX|JQ`w)$Y/uj]^c +T3ɳZVn214Ok&>05h5F򒓗<%E +B% PUףpvINZVNũX\t@4.hP5]:ϗYM)HhN}+G!rWwBe"(~\㥙+ff-MpUw`SR=$n6&+ZcDʔT)@SnPt"VH+=Wzt:;SLv,ʅP+@͕A,+%i+BO%Yމ,^lڔ$ulY1'ʕe.|'u +oꣲͲh:Z =(fT^XTb_C[h.\oXWuQ>h}V7K B ƛ @ +tK +Ɖ\'\ &^@npNCKr(M\΃*oVwv}[,D:{׷U ) Z"/ zIKca8%A؇;I|H)jr]4X?- Bi%|@w:h"}t|\*:c7:- ?)鰀A-q]L@ky8͓`R8I G@_&ONxW$SЯ/?: K@pSNz\) Ы]3#ؼו~j^ߝW#NۘHA{4qtj A-ljڷV{LV_)NM~ɻ_Xicw6S{T}-*o!P}r``yDoe,P8\zw^ݯOAlhF/yA +bD{TxRU @ZȋSm V@ځ!0aC`F<b EbhqJJWm[Qc,nX2YAћ&kr1|Jqt6C;`'}Voݳ q_z"f%})UU-iL^XiJz3!)',~ L (!qr^g<8Ybw +E{7\ŬiH_d&8Y2xPr^b F;/Fy1ɉQltbbёdMt HfNHjS0ˑ52jIZDbF{[{ 9wCؤoazigh|2Jqj^uTHIsBMwt^~"hcR˟/%e>~2=|}tgh 1/y>Ī%p]z6|ܮxZF9< [M%zOxFbZـ.6$ ŶD@& :$)",F -t .V͇~Dyϋ~BS{/Fe +rvAN69$$9 katkjca㦕.ÕB"S/(D3ozQme0~qM֕^Wק.œޔuVV1;<) UީjC&U{lE_!|5 XP5P^)MRP|+z(s6͔SZQzrT.qJ4AbiƳ!orƄҬ9Fi4˸$A+rkX߭̓'H?Y.@ijMb7 ] ⰰHjXR)u6ԭkY1jMT l)y/{/ .V>:6|p<7ئ&1<+m[t\%Juvñ%3[r^aubܰθ-m.fM8< +(5Qjb@?P؊B^>}oM:y=nL>I1-4nqSܠ^ٹh2N D2 q s!4K#GS~OՔ>S%2Q }wȖ _dϭ^Wk4o'AMtPO*6I5cnP\ۧuuꝛ,u}Rsi& SҼ1 ޘUvLz-L呶2Kgzg.M*ⵦTɬڡ .D7cˬ!kWݟj{|Kbi}Zq>)S5R,s{ +* ұYrtldQv-i5<kRhunPԠ$txw0ؼg~ĿOL|I-חez]&=q{ +uG)Ѣ)̳o-TzsI/UkXX +q;hNo0q"#ᾩ4{YV4*b *TDsQ^j/Iϋ4Q\I@g W2(;M3m4N4YD +j:+59udIASש[.ٝ3KA&QKV㔧B4fzFyU응ӥ FT{ Twy=*Q^ƍ< |;\~}SX +W9ϵe&_YOϝfS/KŽrv޹ɵn//כ^Hqcƅ1;!ݎ9B5f3)cg1[#|kb:˜@AIŬ=30c +d-;82CuB3&x&BC>`YroP[?|5?1` wea,H5&[g#뫉 5mCr&;Ң5sܤ< #z$qpTM90$v+wyґfinUzSꅑ^ew,+)3 5*0ə Uč#> OfS#}b|9Wą ObLq*. Ia@B7̓hs@U eU'UVF;up\ S6𗆡/ >KqX(PvsJQ|ʗR!t>t{Я$Wch֚bAtPɽ-s*2&ZVM8 iO5;GG@]: d's+E31A8>X.\brzoDQ=P2ŸoL̳N~sؔwcElAlyhJ^v%As|(0|Bb:=A>^E,{饡*1WN:LXH?nU#E l} 4*VL'6}] JuX)iƧdU3tS_"U:b[|H©~V yZ7bҟT7c5+Aυ!D?%Hv|J?*Y=NV;e-5\9l1KkȂq n^{ +ClNw>C[Zepni]",WdM9 lψy[Ađ*L6tWvZ9mhlk6{<:6{d0y4;7O`i\ 쌬8!^A7V7lT¾NҬs[G'4f|z9y)hsZ+V] +3VIBK,!=哖UWUk A.BCS71_2m!>N' U OWiT䶝Ka{?=pp{`({Y1M<33#X]s&*IޔYT*(Fm2#jZ>{Zf7F6.13?dӭ unr阻 UObux̎x$!Ӻxu:T"_$3*+ ++̝3ؠ\ YpI h}Ih_Vdj“EdPd#PB<+XKĻm۬.*<%/\W/\caji Ţ\m|moIOәժX蕚 +h+L&;&P.n/ 킼\,!U [ 8,%.RV; GGoq$%:3=e]_wJ"!]8)(_e'gUHK.qATRm~\lNsneh߶SCˋ{C޿! TqTH2Zs2caB+:EG '^^5+4&J@mi2.c'g\+Z ٓ=֛cjZRaH:sQ1 (2Cɕvl#Fɞk&XYK kO6M|ɝש*9xx9N9[2Y):x.)ÖyQW7oN͹Ksf&Eāxm"F~sӭ'K"Mt*Ďna}[ML8 p/}~MWDʍ/Г7nhЩ"D¨mXDʬZ]Y`jݭT=VdmC^^nS>mNtM 8kN#.Zxٵz8^vMw_*GKrDpVaR%u'E w; _xآ +w:aQE =C ɶءs5]+=z6fl~f<*n@oj]:rQ2' >j8<(as/?CNt|GGo~{ONyL]??Z](GfHbIkm Kvk|]2D%wuykwXs+lH0^mfOYqa6`ՑO$ pyDa"Ad8g->ՠђvu|xbXu0=[JZ@ZHq,-Nh%/u T_ЖƧ +m(p[6b>=UޖKEKc/ pں6Y^XfUD j_[N5x]116Ddr־A090|i+{oKfsBu*owr[<{VҎM|~U4?*gڞ/}f2fQ# 8g3InI y +S%#ENhKWXtmt,s2mwu^~>/כf~>ַ zjcTE鋪S(cn~ $}J**`cИ?14f?1>|w2$-5棢%3jkUSEޮF9Dh(hXC5\YPϻ5kjJWj)RHie_lz$Rp;?eU=`uX8W8TN_c!,C$8Sq7n)oⷺVA^+G ys>mޘ]9E +"U:(`}!z,'L@_ |b\K-i/ji#?ŧLzQޟ~=IrǬ)w;{?l$"}Is`%p&r8 sBR;NYFRZӯI*)i'4TdQ %c)6O6xܮtP%KUup8R0.c kl*K3oNe`rNR{|jϧ1Mungx en[miP6Vcwbxs9F7.g'Os͋##D)?gBnU{'6-QR[vdAlAltKܙ iLk"{Z>A†4f]89r1*'Z܍Θ(8_Ykߣ\좸sA6gbU?}K<[p.O9"Ћ6/h[L?&p%^ +,yC(.LZ nrJ F?{G%(q% +_\2]©/_⢀/ՀF} M:BbQ!WrP!`IZx*uFn [$r`4o PW#c.:+Aow&;>d6;c֋>rRw@8{,5}S⢾dk'RK2جQ Bx Տ`({RNSR>:tHo"A^*;0ˤ3˰LZ[IHR=T+ɡDĪҧ*ȥ%KK/@=v'{K^|%/&ǗԳgE>V/vŊIԆ aip,e'8\5rc>DǴnsu 4h^_fYMp/k NHPlU rijgg3ȭq/n "ȩM2[M +90_o7<$3/S $q&ϋFNCd/eyKh'M='/ q tv +o6&“1SdD0ͥY d `Q4ɹzK6::p+\KeRyU`RIPՠ.1s#()âM +j)z +VA*pdqzJIH)5ł Iܦn^*c3ص"кq8q{ڣbt`#fhkFW]3F:t/۶:Xl'9P_IccwB~pX([@c~@pϬ2B-H~ YsߑԻ.P&dsZ9'IF ދt|GwrmRxI7;s1^TOULğY&gPg\LzymȢ\x54cbBɸ`1F_)<%MZ^ qKi8V6+laΧF!7.\H<- 1\p^7Ȧ2*\-ѻq6w"qH=lfd3ʽ:+(̌QSF->ȵ_-&6PD8$EhL_Y?bN+QQh +]s䚝M{_X <ͥt=oCh-); ;3gڧĴI866v\ϩd.i88ս'gAp-{׶JKRQf֎>uE; ߶*q7Zؼ3X8gJiݲɻne&2eFACˇP&Ƽ+bgJֵεe7o|E: ,rVr3.**;}Bl^m_7[f +Q3UBZbx.V(?_K|OV=Ѹ,࿽A:cx}p8e z'Ag +07>ld#b΍[u :A.%V0,Gs# 8?9sh9=Sm9[fz.lwA+ي1OnI)Y{?Sz"K^A O~BqI;aҞw3P,lCF*&Ԁ|M7(1iR{* ~ʏdU}_!(nqy`Q{eަgК[:+Ur.\Yy^ +6̾qd,0/ 3ݼ#6B5gY*zK&Cg!\g/K}Cdۥ8M(gPܘB*~,=y\;3j=+E ,MHHh$ᐩ; 0 3Duײl2EXP47[BB*E77Ax9P,Ӹ*Qr!@k-~5HH dTY&ߟw:w'ݓ 1q=st?lݛxWs}m7]+xmy&awaPq}-a+R_m`W@q@RUŏ8sv{c0d|'W/ѣ?yԇ~a%})*_ȴT|pO_v^ꅪ- n2_f%}./P^8x6\H}Ȫ[7S%,-)|`dg .B!r:!K#I8s O\Z eVEit(-du 4Uj)W$i PNNRx4C}qr! v=)Pf=+lv%N,6p=piWUSk%*? rqJQ Z(6@4P\@Ƅq 7 ,|QDQbn"l@\K +GZ/_X7@eB Ѕ0g/*YҾŨwh{@"^!87hM&fn-s %\=pLL'KdX^]|[{ЦLzR=asYkjXK:j:$<^`Y!QXT`|(-漆/.$[ UY+5Fbc+12!KL`rmbV&/JO2)v:CN) {Y(6F@w;'s>6̡4;3XNڞX8 E6QN'18AT'/ʄyyNLH1X̠pq7' q*N)K|+Nl}B\㭩֧<̍GyI'T1;U pԔ%ֻW4yę=XA;I5%oS0&Y6Vbbzs2p5h106&nfGtg^iNT%]  AR͜#l5=مJ̌f7mOz7Pt^B oyNă@7%!tB~uhHRT5 -9s@?874_$0s^A8M<߅AöAѽМ2 QLd2 uӲD^Q{ ΘcfhzW`#0m~yˢXTqCZHtWf׋'`[@ P;PH6QƋ`k.*xOyt.A쫈jډt}@ٻwqNXv=%ޜΟvL2#R~Qt[WЄ"(úNW#h?'71DbWHԄN\']}6N}!̙ikQiAK /}9f̉dh8 1PPC5\LZ0otj͗*ub^?Xo|8E-q/%+neܖ| xON9c҃}fNzd;ndƣ6bD1 :("5lQ W`'Ng*;;,_K"1̖NdsDrF>bq#Q1"tC2Q]W, IďBz܂Ae)T +v٭P߱R]޿cKGJHE%E V"ɨTuë?ܩ?ѡ +NL$q7)@oHG4p;MちeO}! lH1|nA{#H`3=x~XZ'v$5iχ}{ZzqzyѼ.Z3P"șU`iWP\D_Ѿ;| vWy?ص)MDA{ F+Rj螇NE7;}m5MZHmd22N)r5n{Fϧ5;kR_^/DK #/dǀA 0=^-.{K$̃s>-9ɞU:2VLJR`X9Fح̏JU$Ztֻi&R EdLlpvzȐG_x5mj$C,ɩOr<&d@§%/U/mk+=56J @Sίn%씝9$[̟):3,5-Bo5̱¹sW#[Մs]hBk:(Ժ6k@Ʀ5zQaA@|"e68o2 ^.%yK2BJ6H4pqC c0#nxHf8jm8~w,H}S+iίf) ?ՑNl +uMvx xu_e%3;/Ş%73xV-y!@V'&ӄvj +ݵ><@u؈.lhGPwghD+\cys/nzbfWF;k5{Ў>I"ӍcRU]}LIÿWT2KO*v +O2JcVO^uI#BlF;@1I qROfPͽу 3򝹹B:ihu>xM%_<Z^ - pYg$Y\NWuF!;arC!JϪ%D: B*߽3ɵ)c;MWN~xiج=[a(q)iЌڱvPƯ|@<[xps{G0r udCYi@䲺l_YF ht>^Ηc6OLqg0yqwLuyaI"4~g4_f ?gҋLz 1D= La:)E~0O]3hKFA+e>qހPBTvaJYS@-e +.q2)=르){Jh")(a[-Vd]6IFyM?t_Q^WV`,('Vjm~j,fA mƤLZ92@vHoݹS0p{HdA׳fAHwz]9) zz 1Hw%i;׵0 &|רQGj^+M~ĝ}ܢHv@<Ĕ^7M;&LqGK/s8IwF)g]=ČP7k]" 䪀`c۾ wwD8:TOqКfK0A}IVМi9sܘYڑJ\Tw@#ԽuD8Ԡ([j"ۀ^CP.2Hzv1{vqT)e8.TQA\裄~[w`Q,xECQL ʯ6oНGwD9ChQ-giGv<["Đه"x1E:h;L)vm?Oxyܬ=3zf|HO%3352c0ޟv\V +L7|5e&ɼS;!(:pzHFûz|PϬY3BP:Y +hxeL).'dKL7/K +,Sn,tFeI,sK"~ۗ) ?ЭlT|E) V93Чֻ \0 9wtT<7,^?=N4 isfpFLFa{][EQ~h5q +qdS@N"E/ "VH^?0>'Iª,4vQz[X:+cWiXopUىa}Ԧ6=z1eFPft-ď?oA^(GTC~&7&|Y}:3qi1u C1󐍨.#R=Rr~nZ{I}I&QN{tm1ôic͊ }usNm b]n,:5Um[Xe{m,*iE$E I <&xmka差E6PF,;2}+NkW7:FwaK4.]jAe) +V˜ ,LGUXi%>M.ЋB~=w$YĆJnBxHen dgSJv[x]͇~[ſv :h/S\u-tV/-^E!J«FvnoeHq_d OG> +l1JyCl4d`L:yEj3tP]}R4\O{9:H ^{CŬnC0b? iıM?3Vj(_A &/-hzMd2R,~s(#+MIxb^(?׿nק&t>GIIC|78=-`{M N.B!i,X=jܟ1nRҨK@>m^ +$*Y$ yR [D@(KP`pnkHh"4A:+0\4ז ;HH9Z},("TKv>;k4]4P '0X4UԮGJ]qOc_{/NI +',_H? jGXt}qBNOHB|cFhnAjY{ n^OoힱJph뇶EϽ,=bЁow"Xa@{e>(dNTr|iF,s!fpc3mK*LHA.TǙ:&a/_QwQh +.lE-//#DC\lqU[)TUWr:%yw%GxU|ܧ{Mŷ)Ѣ8/2I +fMtֶf("f`3g MfƎ|T-JWp̶MZ:?N=$× 8jB+ƠbN#yKtEAvO x0QOgbֈ#l_gJ]*L6qAdB:MLR{}ڊ40Ώݙ*9M +nx\0'/?5V&vRP\WOw. +bkY!<2@V={LbzlrN1Frx_&`rb"PxԹ xC׮{P/stQA} +x_QS٢r|˦Ӈ_ W[ͮEG&9BԾdqݻ![/So#o| lAbZb)f5ʦҩ[lXMO$eE.\ӧyYǫ{Oﵱc`nzt9.ܵH [ Xfe$:o hVu/ :{Bs1WUM ~L Fgm^8>0pTSs;!y~=Jh(pΘ$:K/?ϣr#&G-ŀ]S3+crLHj/BHRFJ( 6Bڈ1ne xkiDž] Ԍ?fMk*\4[],kc{!]pV=9BrO (P0B=bûZkއ,>nπ!x49yEmL/.p Ĺ/K,slq.!C5AoG)S.H[–LnH7XI$)p$?0U䵑ŷ4<62{XkXx.G|"HuA ҧ9{xςs iZ(:3Y%ٌKV-1wF%y#6j(__?nml2/!B +gjHݱBqiĮ"] xSlf(Rpx?w)p.\sC#zǹs+R!v[tl.E[@k]b5Ž]:|\d8O.{t,.CţCK#-غ49 ʞ-li?¶t!ö/\$o?g_vlɓY.$&k'X3c\mfӇIpT* ldF<{c \ߝI4~!t"" +C2h@h>rd*Xn<>aÉ|=\Iz`Y :- C6- Z^!lviMT̴vp\ШH' 3Gb=om=^hdizA\vhKwrmR.LU6"Ƌlj.K>z"caJIyD X2qYF@ 0Pİt;PN]AqB2fdtכǦ +Ɂȗh]C[oءsE.>8Nf"D]"IQFtR 6/WY/xDĿr^.KL>f}WA.2Ecv'tOh37O0,9]<@hc6pd ML3Q38Zţd<+A< +Df١g!z.xkAXig[rxV[O5!+dA3}Nj!cg@`H _:Ћ.8+yt ڪIilx$uTH2Cz9eyjҴP$^ty%#N +UL/-;^ L%W/D`f6ft<[ =׫[ațpM4·6vvl#ՙّډ5Gר\}ڑyijGn2}Iժ!m,EXi7k|^knۇlJ=Mgu3ɺ)9moኻq\_k LO%Xc)/yDm&ݤ ֩&!d2?({c~>"oW-Զ؞dkH9u߂7鶾U࿋XCt !GauCP +DUGa|>c|}±I p@bڰο;| ˡosqaIՓBaf6:LqH؏mX\h\Q\%Ǻ*pa3j3db79RO:1pbIdihƛ7 {0DR,ukGXK՚vpJ^>DalɛICuK0aTT/͢%b' b{~C;1M4{m0SD6ym rnح]p&n3sڸ-| nJfg nD!Njre[Kۆ鮵O ia Nn-XŮ`a}eXi`MpSUO9I$58\B<8 vHCژw H벟LXw6T-~_5h,YW@eV;$f ⼉ZN&V>ZzG)Q$awzCm'w,`"tj?ub).8yS/> E,|尃#*}(r7̛Nqi +YbU<~;B[=[Ɛׇtfl nMܤ+?B9W+5Lceݟ]3?f;%:qQNK9n-K,Zt2zjtw$tĕNeRYʫ2q\0<JQ(^\K aLNNfmn2P iMmxYw Ѯ$8$]yDy`̼̤H _U +_c{ m;6o#!H'987Y0H[ҀDr UϸI8`5Gh81!44A3GGYY!pЋƱK8kd]t/&1nmxuc&3vAZ"2Shҍl̡v%]r.L៬kD1y>$t-ub LlxYsho˲I|o/Iy7zgPT fO ;GnܭΩYr$s`:xT,dI;~73^N;SБ)iH"h?nIi tZ;-T(ND@EծC-LX7-6F ZI!7|{cYHg^#v +1npq\akZ ?}&"j IKєIZW9'xs"lR0JJEJWFLڙDϸ/bE_sp;F#Dd1T3Cc!Pw~^E4)ϊ".@h2_Uş`G~!'W880V2`yװulJNxfbUzzė3<*׫]cYY[p=T;;/,aߴX{eYdG|zд/b>;"$=DAtI3wJ& +nR$ ̖6@6t XG.RĝyB PM:=@@#Iii i7 S^ M Zho}5.# qk\ӥqrql#Ը0խ̯J ׿)J% 3jc:Giң@(?/,cn*KZo!<O?ooه-q2|xɎ?fi^poNN=~p>#i +*jҔqiBZHa>ٹs쌙);&AHx{gHGsq[-T4 +paV_;BTFgY`E??1Z$rQRΙ7$@G=֓_`֨9RsAaw><]n,kZӢIŶL%fjwib4\y?qJ|o]a8w9 鈄^_nߠa)>E=F+]2{e,{Pc%xBi8@54N<4hx=& ?BI$hnZ[^|GQm\E\u&Y`d\i1%T?xRl@K544[b7@geb>g !ʜ>8 KCCƱD瞳1u(4|esmT@7* +Wwm#XҬQjU}>쟩Hc5>)2u3fl)9PBفZ2ou&SR`x=pWXBWJQ_8F(~!{\>VX)RoIUx-[ + +~Ж:љ$pf,ܣ< .0aPnkT45EoR/ҕeϹٗ{5 Ew`},z{Q^=^kzE^ȟtSىshQ)zKs`&9c6vZTw ͚qGTwOlx\΀YEs6>C~i{o>;/[ =D`bY{Ų155J {͝+A8IܸCys5^ x涑1Y7S%-hKut.fk'8pemchga8Ca '08@K=>Ўg1;=StpR0GOpcx"sQ. ֦0&mN[m4Q0Jn<c09xKmX@.`e7EِkoyEVt(7rxZn@o*O@\f)m:͛N?L ͝m N'i?ߋZWu׹5SPUp:n@-}O!?\ rWJ@nQ Yo.[k5(YM)_Aq ~d C(WQ9,B82b~4: P~r B9pVBEVPzˉԳ2a3i+Nn\\Bzz" ym5j`g(lm7SB<8~*eTw&{'3$ǟ`*p-/M.'۽*+j{Z)ޣC&7?»#~*i.IQ=y}y$wce(6u |ZQifc Hż5 JBc_FpڐYT ETvQ Z<׌nFmjgo!8`AGRtY ; +܅=36ʣw]R +?+F*VxCN[ 5׫AwR~MޭOH>UF[>ƺ{GЗ+?*^"$ y8J`VX'W(v-6ukXH,DzSÂHFy {p\ň-uЁ"X-zīk)@.֫YuoRUTWwga,&9τNN9C-pi6SjOH? 2-Eue{9cN88<0z % $ yE$EjCxpo.hv^֮)4plD\V\hGlL UN~f_U~^}qHt>^Ηc6%U3.# @>iLDKbuh^ rr@J>bSWM JqH6n)ow_yE(>o]O4EfeYh.HkQx3GX0|xx]r[kլ4?>=ecv61pYL`Ilh֞giLg 0 ,tLԡ܈VDkf|*!heroGO[mhkikΔ )kikJ ;SRc-eJj ܁{$^ոÓM?}r!3DGOhriVwӌ˜<`N@M/'vj&uh?\mfy) Q¡_ KrZ/۳gV아pa=Y*Bq<ȨjGуyC!dMūB)XG׸LRƙ,7i(3A\^L(jx:D\:!%%Ҩu\Dž K!Ϟ=R/[ˮ33v;wV׻z\,'7 66}m͛l-D'槗OS'N\ҌqXƨӢQE ^&o,Ad?̙$F^`u>etvEweN̶;x\nnuپ糩bI褴>& \-BGab_)B'DDI3dCql)I3i l\X=q-s +l0ڿ|&E1 ։e|W +DEQSWJ|n,<6UdVbuju돜`͌o@!"q{ p:1 6X4ח.v_NB)\cy\Qmo3 >L#y&lsiԈcw} QJŜiV,T)W:δZCueSH?O4?Q.=<Ψ%= .\SN7\JS9\v4書yeLLwA\ +ɝyx #Rϸ!2MZmtN]$g˯UM` `d>iXrIlHpfЎB o@YHe ӿDWN#ZJ@IWf'>5/<7e 6F"YFfIXHE@b@XA4Ne( 7BPXhYI@.K傹\/\?XQ\1T,idrwt4/'x9 l"cf$7Pu0DB"pL݃"CȲdv,.pM+%ק[M䂊-ĔTLڋ*^Tyn"m.C4F %z@S +4#-Iュ$֗dzB.!*k*9xYjd)vc /Ru$R\k@1Gac<إ`E@#Eu+B0 DN六'%lQ u +[yak@a-zn7u*r\ܯ9cdvD*PRT^fzn22cl&%Up⽛rlF=8#JtϺrun95Cm,mK1^ynRB BKy[s}BF Y||-_@ٛYwFߑHV !>K^¸F x U/at&a4i[ =ГF$Z䍦M |E0Hi%ӰB£iT~(Khm)L"a@xYϻg߫z;wd=W6Ozm _B%RQ:-Bt:z[%(>Mxh*7|U5xCrz=~Z8@@m* )Zυ`lm&0}nɹi9m흠 Յh!dۘ>TY. Q\|m E Ebb=|w+mz8!\ͦ:|"ӥQ C;K0ƉU#a֙9 =[xhXSbx6@s~&?ǿM.wͿӺo_j>_I_v&$Γe#?"/ֻ+鏳i{6DWɤv}\Owۭ4w L+~&p"sN:>#fv{_m}?Q}X?M~>G/U߻4;thWD\,j(?W1.Loc=c}C-}h 5mw@X =;7pk4C{w#]|{|4Hy䐆Ia=y~Zx䫨Ajo1N%CēΖTSvܲTن^dj-kG/rfWH0*b,XTWAK qk}KrBQ]͢vl[TSۇt^?< wOwtí!d!QboRJZ]!$"3::GPqFG`>;9QX6*q|{Ki{n_[Dpk(C^JDp o$ݰZ{/7$^sի(jW*"?YuL/hnss; 676f˛r,YqTy.+N%|ww˛E&7&7S+&_̵lXXU[c-O'TpU*%ڟf i[BqŝIő!> ؓگl&{M8Pq~zG}OכMEqÿO >URPn'Y`Xj:h!Zt`t@uE4 < Mjj;6%xk<1^؛Lg{Y1R̍MtnGA\t&H ź⇹ݐˠd t5a߄ŸӐk kz͎>Z^L<7Rf/>·ezl\z]k5]ǂ@}w0.א38_XE'% =uyF +v~-sj>{S-]$3Ւdas`PF̘G<}7{w3Mh6لi4.=t.5nm&6o֛f. f,o|6I6&Ɓ+"r\j@%t@;7vZj|j2dU*ap;=+<}\x= +j5:;\-] 䘒mW0+e,ZY EG˿p,FU/q,f t+נD/%2 YgҪ_ΎW_??f}YߖOZ7lgbMNo \~$j|O7ȏ8p0kG)f}Y{D\d-Dg=)ιm^{X+m$p>yVp,ٱ9ꢢ4^tҰIN`S[K@>7" \ No newline at end of file diff --git a/core/modules/system/tests/fixtures/update/drupal-8.entity-test-schema-converter-enabled.php b/core/modules/system/tests/fixtures/update/drupal-8.entity-test-schema-converter-enabled.php new file mode 100644 index 0000000..3a5bc18 --- /dev/null +++ b/core/modules/system/tests/fixtures/update/drupal-8.entity-test-schema-converter-enabled.php @@ -0,0 +1,36 @@ +merge('key_value') + ->fields([ + 'value' => 'i:8000;', + 'name' => 'entity_test_schema_converter', + 'collection' => 'system.schema', + ]) + ->condition('collection', 'system.schema') + ->condition('name', 'entity_test_schema_converter') + ->execute(); + +// Update core.extension. +$extensions = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute() + ->fetchField(); +$extensions = unserialize($extensions); +$extensions['module']['entity_test_schema_converter'] = 8000; +$connection->update('config') + ->fields([ + 'data' => serialize($extensions), + 'collection' => '', + 'name' => 'core.extension', + ]) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute(); diff --git a/core/modules/system/tests/modules/entity_test/entity_test.module b/core/modules/system/tests/modules/entity_test/entity_test.module index 3a7a51d..e5fa873 100644 --- a/core/modules/system/tests/modules/entity_test/entity_test.module +++ b/core/modules/system/tests/modules/entity_test/entity_test.module @@ -93,9 +93,6 @@ function entity_test_entity_type_alter(array &$entity_types) { } } - // Allow entity_test_update tests to override the entity type definition. - $entity_types['entity_test_update'] = $state->get('entity_test_update.entity_type', $entity_types['entity_test_update']); - // Allow entity_test_with_bundle tests to override the entity type definition. $entity_types['entity_test_with_bundle'] = $state->get('entity_test_with_bundle.entity_type', $entity_types['entity_test_with_bundle']); diff --git a/core/modules/system/tests/modules/entity_test_schema_converter/entity_test_schema_converter.info.yml b/core/modules/system/tests/modules/entity_test_schema_converter/entity_test_schema_converter.info.yml new file mode 100644 index 0000000..b77990a --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_schema_converter/entity_test_schema_converter.info.yml @@ -0,0 +1,8 @@ +name: 'Entity Schema Converter Test' +type: module +description: 'Provides testing for the entity schema converter.' +package: Testing +version: VERSION +core: 8.x +dependencies: + - entity_test_update \ No newline at end of file diff --git a/core/modules/system/tests/modules/entity_test_schema_converter/entity_test_schema_converter.post_update.php b/core/modules/system/tests/modules/entity_test_schema_converter/entity_test_schema_converter.post_update.php new file mode 100644 index 0000000..d6fd0ca --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_schema_converter/entity_test_schema_converter.post_update.php @@ -0,0 +1,39 @@ +convertToRevisionable( + $sandbox, + [ + 'test_single_property', + 'test_multiple_properties', + 'test_single_property_multiple_values', + 'test_multiple_properties_multiple_values', + 'test_entity_base_field_info', + ]); +} + +/** + * @} End of "addtogroup updates-8.4.x". + */ diff --git a/core/modules/system/tests/modules/entity_test_update/config/install/field.field.entity_test_update.entity_test_update.field_test_configurable_field.yml b/core/modules/system/tests/modules/entity_test_update/config/install/field.field.entity_test_update.entity_test_update.field_test_configurable_field.yml new file mode 100644 index 0000000..b1f7cc9 --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_update/config/install/field.field.entity_test_update.entity_test_update.field_test_configurable_field.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.entity_test_update.field_test_configurable_field + module: + - entity_test_update +id: entity_test_update.entity_test_update.field_test_configurable_field +field_name: field_test_configurable_field +entity_type: entity_test_update +bundle: entity_test_update +label: 'Test configurable field' +description: '' +required: false +translatable: true +default_value: + - + value1: { } +default_value_callback: '' +settings: { } +field_type: multi_value_test diff --git a/core/modules/system/tests/modules/entity_test_update/config/install/field.storage.entity_test_update.field_test_configurable_field.yml b/core/modules/system/tests/modules/entity_test_update/config/install/field.storage.entity_test_update.field_test_configurable_field.yml new file mode 100644 index 0000000..1501f89 --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_update/config/install/field.storage.entity_test_update.field_test_configurable_field.yml @@ -0,0 +1,17 @@ +langcode: en +status: true +dependencies: + module: + - entity_test_update +id: entity_test_update.field_test_configurable_field +field_name: field_test_configurable_field +entity_type: entity_test_update +type: multi_value_test +settings: { } +module: entity_test_update +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/core/modules/system/tests/modules/entity_test_update/config/schema/entity_test_update.schema.yml b/core/modules/system/tests/modules/entity_test_update/config/schema/entity_test_update.schema.yml new file mode 100644 index 0000000..5c60457 --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_update/config/schema/entity_test_update.schema.yml @@ -0,0 +1,9 @@ +field.value.multi_value_test: + type: mapping + label: 'Default value' + mapping: + value1: + type: sequence + sequence: + type: string + label: 'First value' diff --git a/core/modules/system/tests/modules/entity_test_update/entity_test_update.info.yml b/core/modules/system/tests/modules/entity_test_update/entity_test_update.info.yml new file mode 100644 index 0000000..330028a --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_update/entity_test_update.info.yml @@ -0,0 +1,6 @@ +name: 'Entity Update Test' +type: module +description: 'Provides an entity type for testing definition and schema updates.' +package: Testing +version: VERSION +core: 8.x diff --git a/core/modules/system/tests/modules/entity_test_update/entity_test_update.module b/core/modules/system/tests/modules/entity_test_update/entity_test_update.module new file mode 100644 index 0000000..f2447db --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_update/entity_test_update.module @@ -0,0 +1,171 @@ +id() == 'entity_test_update') { + $fields = array(); + $fields['test_entity_base_field_info'] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Field added by hook_entity_base_field_info()')) + ->setTranslatable(TRUE) + ->setRevisionable(TRUE); + + return $fields; + } +} + +/** + * Implements hook_entity_type_alter(). + */ +function entity_test_update_entity_type_alter(array &$entity_types) { + // Allow entity_test_update tests to override the entity type definition. + $entity_types['entity_test_update'] = \Drupal::state()->get('entity_test_update.entity_type', $entity_types['entity_test_update']); +} + +/** + * Implements hook_entity_presave(). + */ +function entity_test_update_entity_presave(EntityInterface $entity) { + // Simulate an error during the save process of a test entity. + if ($entity->getEntityTypeId() === 'entity_test_update' && \Drupal::state()->get('entity_test_update.throw_exception', FALSE)) { + throw new \Exception('Peekaboo!'); + } +} + +/** + * Creates a given number of 'entity_test_update' entities. + * + * The 'drupal-8.0.0-rc1-filled.standard.entity_test_update.php.gz' db dump was + * created with the following characteristics: + * - Drupal 8.0.0-rc1 installed with the Standard profile; + * - The 'entity_test_update' module enabled; + * - 102 test entities created and saved. + * + * The 'drupal-8.0.0-rc1-filled.standard.entity_test_update_mul.php.gz' db dump + * was created with the following characteristics: + * - Drupal 8.0.0-rc1 installed with the Standard profile; + * - Manually edited the annotation of the entity_test_update entity type in + * order to make it translatable; + * - The entity_test_update and Language module enabled; + * - Romanian language added; + * - 50 test entities created, translated and saved; + * - The Content Translation module enabled and configured for our test entity + * type. This was enabled after the first 50 entities were created in order + * to have NULL values for its translation metadata fields + * (e.g. content_translation_status); + * - 52 more test entities (with the IDs 51 - 102) crated, translated and saved. + * + * @param int $start + * (optional) The entity ID to start from. Defaults to 1. + * @param int $end + * (optional) The entity ID to end with. Defaults to 50. + * @param bool $add_translation + * (optional) Whether to create a translation for each entity. If the number + * of entities is greater than 50, the default translation (en) of the 51st + * entity and the 52nd translation (ro) are disabled through the + * 'content_moderation_status' field. Defaults to FALSE. + * + * @see drupal-8.0.0-rc1-filled.standard.entity_test_update.php.gz + * @see drupal-8.0.0-rc1-filled.standard.entity_test_update_mul.php.gz + */ +function _entity_test_update_create_test_entities($start = 1, $end = 50, $add_translation = FALSE) { + for ($i = $start; $i <= $end; $i++) { + $entity = EntityTestUpdate::create([ + 'id' => $i, + 'name' => $i, + 'test_single_property' => $i . ' - test single property', + 'test_multiple_properties' => [[ + 'value1' => $i . ' - test multiple properties - value1', + 'value2' => $i . ' - test multiple properties - value2', + ]], + 'test_single_property_multiple_values' => [ + ['value' => $i . ' - test single property multiple values 0'], + ['value' => $i . ' - test single property multiple values 1'] + ], + 'test_multiple_properties_multiple_values' => [ + [ + 'value1' => $i . ' - test multiple properties multiple values - value1 0', + 'value2' => $i . ' - test multiple properties multiple values - value2 0', + ], + [ + 'value1' => $i . ' - test multiple properties multiple values - value1 1', + 'value2' => $i . ' - test multiple properties multiple values - value2 1', + ] + ], + 'test_non_rev_field' => $i . ' - test non-revisionable field', + 'test_non_mul_field' => $i . ' - test non-translatable field', + 'test_non_mulrev_field' => $i . ' - test non-translatable and non-revisionable field', + 'field_test_configurable_field' => [ + [ + 'value1' => $i . ' - field test configurable field - value1 0', + 'value2' => $i . ' - field test configurable field - value2 0', + ], + [ + 'value1' => $i . ' - field test configurable field - value1 1', + 'value2' => $i . ' - field test configurable field - value2 1', + ] + ], + 'test_entity_base_field_info' => $i . ' - test entity base field info', + ]); + + if ($add_translation) { + $entity->addTranslation('ro', [ + 'name' => $i . ' - ro', + 'test_single_property' => $i . ' - test single property - ro', + 'test_multiple_properties' => [[ + 'value1' => $i . ' - test multiple properties - value1 - ro', + 'value2' => $i . ' - test multiple properties - value2 - ro', + ]], + 'test_single_property_multiple_values' => [ + ['value' => $i . ' - test single property multiple values 0 - ro'], + ['value' => $i . ' - test single property multiple values 1 - ro'] + ], + 'test_multiple_properties_multiple_values' => [ + [ + 'value1' => $i . ' - test multiple properties multiple values - value1 0 - ro', + 'value2' => $i . ' - test multiple properties multiple values - value2 0 - ro', + ], + [ + 'value1' => $i . ' - test multiple properties multiple values - value1 1 - ro', + 'value2' => $i . ' - test multiple properties multiple values - value2 1 - ro', + ] + ], + 'test_non_rev_field' => $i . ' - test non-revisionable field - ro', + 'field_test_configurable_field' => [ + [ + 'value1' => $i . ' - field test configurable field - value1 0 - ro', + 'value2' => $i . ' - field test configurable field - value2 0 - ro', + ], + [ + 'value1' => $i . ' - field test configurable field - value1 1 - ro', + 'value2' => $i . ' - field test configurable field - value2 1 - ro', + ] + ], + 'test_entity_base_field_info' => $i . ' - test entity base field info - ro', + ]); + + if ($i == 101) { + $entity->getTranslation('en')->set('content_translation_status', FALSE); + } + if ($i == 102) { + $entity->getTranslation('ro')->set('content_translation_status', FALSE); + } + } + + $entity->save(); + } +} diff --git a/core/modules/system/tests/modules/entity_test_update/src/Entity/EntityTestUpdate.php b/core/modules/system/tests/modules/entity_test_update/src/Entity/EntityTestUpdate.php new file mode 100644 index 0000000..0de2460 --- /dev/null +++ b/core/modules/system/tests/modules/entity_test_update/src/Entity/EntityTestUpdate.php @@ -0,0 +1,160 @@ +getEntityTypeId(); + } + } + + /** + * {@inheritdoc} + */ + public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { + // This entity type is used for generating database dumps from Drupal + // 8.0.0-rc1, which didn't have the entity key base fields defined in + // the parent class (ContentEntityBase), so we have to duplicate them here. + + $fields[$entity_type->getKey('id')] = BaseFieldDefinition::create('integer') + ->setLabel(new TranslatableMarkup('ID')) + ->setDescription(new TranslatableMarkup('The ID of the test entity.')) + ->setReadOnly(TRUE) + ->setSetting('unsigned', TRUE); + + $fields[$entity_type->getKey('uuid')] = BaseFieldDefinition::create('uuid') + ->setLabel(new TranslatableMarkup('UUID')) + ->setDescription(new TranslatableMarkup('The UUID of the test entity.')) + ->setReadOnly(TRUE); + + $fields[$entity_type->getKey('bundle')] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Type')) + ->setDescription(new TranslatableMarkup('The bundle of the test entity.')) + ->setRequired(TRUE); + + if ($entity_type->hasKey('revision')) { + $fields[$entity_type->getKey('revision')] = BaseFieldDefinition::create('integer') + ->setLabel(new TranslatableMarkup('Revision ID')) + ->setReadOnly(TRUE) + ->setSetting('unsigned', TRUE); + } + + $fields[$entity_type->getKey('langcode')] = BaseFieldDefinition::create('language') + ->setLabel(new TranslatableMarkup('Language')); + if ($entity_type->isRevisionable()) { + $fields[$entity_type->getKey('langcode')]->setRevisionable(TRUE); + } + if ($entity_type->isTranslatable()) { + $fields[$entity_type->getKey('langcode')]->setTranslatable(TRUE); + } + + $fields['name'] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Name')) + ->setDescription(new TranslatableMarkup('The name of the test entity.')) + ->setTranslatable(TRUE) + ->setRevisionable(TRUE) + ->setSetting('max_length', 32) + ->setDisplayOptions('view', array( + 'label' => 'hidden', + 'type' => 'string', + 'weight' => -5, + )) + ->setDisplayOptions('form', array( + 'type' => 'string_textfield', + 'weight' => -5, + )); + + $fields['test_single_property'] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Field with a single property')) + ->setTranslatable(TRUE) + ->setRevisionable(TRUE); + + $fields['test_multiple_properties'] = BaseFieldDefinition::create('multi_value_test') + ->setLabel(new TranslatableMarkup('Field with multiple properties')) + ->setTranslatable(TRUE) + ->setRevisionable(TRUE); + + $fields['test_single_property_multiple_values'] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Field with a single property and multiple values')) + ->setCardinality(2) + ->setTranslatable(TRUE) + ->setRevisionable(TRUE); + + $fields['test_multiple_properties_multiple_values'] = BaseFieldDefinition::create('multi_value_test') + ->setLabel(new TranslatableMarkup('Field with multiple properties and multiple values')) + ->setCardinality(2) + ->setTranslatable(TRUE) + ->setRevisionable(TRUE); + + $fields['test_non_rev_field'] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Non Revisionable Field')) + ->setDescription(new TranslatableMarkup('A non-revisionable test field.')) + ->setCardinality(1) + ->setRevisionable(FALSE) + ->setTranslatable(TRUE); + + $fields['test_non_mul_field'] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Non Translatable Field')) + ->setDescription(new TranslatableMarkup('A non-translatable test field.')) + ->setCardinality(1) + ->setRevisionable(TRUE) + ->setTranslatable(FALSE); + + $fields['test_non_mulrev_field'] = BaseFieldDefinition::create('string') + ->setLabel(new TranslatableMarkup('Non Revisionable and Translatable Field')) + ->setDescription(new TranslatableMarkup('A non-revisionable and non-translatable test field.')) + ->setCardinality(1) + ->setRevisionable(FALSE) + ->setTranslatable(FALSE); + + $fields += \Drupal::state()->get('entity_test_update.additional_base_field_definitions', array()); + return $fields; + } + + /** + * {@inheritdoc} + */ + public static function bundleFieldDefinitions(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) { + $fields = parent::bundleFieldDefinitions($entity_type, $bundle, $base_field_definitions); + $fields += \Drupal::state()->get('entity_test_update.additional_bundle_field_definitions.' . $bundle, array()); + return $fields; + } + +} diff --git a/core/modules/system/tests/modules/entity_test/src/EntityTestStorageSchema.php b/core/modules/system/tests/modules/entity_test_update/src/EntityTestUpdateStorageSchema.php similarity index 91% rename from core/modules/system/tests/modules/entity_test/src/EntityTestStorageSchema.php rename to core/modules/system/tests/modules/entity_test_update/src/EntityTestUpdateStorageSchema.php index bdd36db..2b75e83 100644 --- a/core/modules/system/tests/modules/entity_test/src/EntityTestStorageSchema.php +++ b/core/modules/system/tests/modules/entity_test_update/src/EntityTestUpdateStorageSchema.php @@ -1,6 +1,6 @@ setLabel(t('First value')); + + $properties['value2'] = DataDefinition::create('string') + ->setLabel(t('Second value')); + + return $properties; + } + + /** + * {@inheritdoc} + */ + public static function schema(FieldStorageDefinitionInterface $field_definition) { + return [ + 'columns' => [ + 'value1' => [ + 'type' => 'varchar', + 'length' => 64, + ], + 'value2' => [ + 'type' => 'varchar', + 'length' => 64, + ], + ], + ]; + } + + /** + * {@inheritdoc} + */ + public function isEmpty() { + $item = $this->getValue(); + return empty($item['value1']) && empty($item['value2']); + } + + /** + * {@inheritdoc} + */ + public static function mainPropertyName() { + return 'value1'; + } + +} diff --git a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php index bf98272..2319a70 100644 --- a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php +++ b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php @@ -26,7 +26,7 @@ class ViewsEntitySchemaSubscriberIntegrationTest extends ViewsKernelTestBase { /** * {@inheritdoc} */ - public static $modules = ['entity_test', 'user', 'text']; + public static $modules = ['entity_test', 'entity_test_update', 'user', 'text']; /** * Views used by this test. @@ -90,6 +90,10 @@ protected function setUp($import_test_views = TRUE) { public function testDeleteEntityType() { $entity_storage = $this->entityManager->getStorage('view'); + // Make the test entity type revisionable. + $this->updateEntityTypeToRevisionable(); + $this->entityDefinitionUpdateManager->applyUpdates(); + $views = $entity_storage->loadMultiple(); // Ensure that all test views exists. diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityDefinitionUpdateTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityDefinitionUpdateTest.php index e37a4e0..646ad2e 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityDefinitionUpdateTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityDefinitionUpdateTest.php @@ -13,7 +13,7 @@ use Drupal\Core\Field\BaseFieldDefinition; use Drupal\Core\Field\FieldStorageDefinitionEvents; use Drupal\Core\Language\LanguageInterface; -use Drupal\entity_test\Entity\EntityTestUpdate; +use Drupal\entity_test_update\Entity\EntityTestUpdate; use Drupal\system\Tests\Entity\EntityDefinitionTestTrait; /** @@ -40,6 +40,13 @@ class EntityDefinitionUpdateTest extends EntityKernelTestBase { protected $database; /** + * Modules to enable. + * + * @var array + */ + public static $modules = ['entity_test_update']; + + /** * {@inheritdoc} */ protected function setUp() { diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php index 41c5919..b430872 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php @@ -59,7 +59,7 @@ class EntityReferenceFieldTest extends EntityKernelTestBase { * * @var array */ - public static $modules = ['entity_reference_test']; + public static $modules = ['entity_reference_test', 'entity_test_update']; /** * {@inheritdoc}