diff --git a/charts/dbildungs-iam-server/config/config.json b/charts/dbildungs-iam-server/config/config.json index 11310e644..b5a1e29e9 100644 --- a/charts/dbildungs-iam-server/config/config.json +++ b/charts/dbildungs-iam-server/config/config.json @@ -81,5 +81,13 @@ "RENAME_WAITING_TIME_IN_SECONDS": 3, "STEP_UP_TIMEOUT_ENABLED": "true", "STEP_UP_TIMEOUT_IN_SECONDS": 10 + }, + "VIDIS": { + "BASE_URL": "https://service-stage.vidis.schule", + "USERNAME": "", + "PASSWORD": "", + "REGION_NAME": "test-region", + "KEYCLOAK_GROUP": "VIDIS-service", + "KEYCLOAK_ROLE": "VIDIS-user" } } diff --git a/charts/dbildungs-iam-server/templates/_dbildungs-iam-server-envs.tpl b/charts/dbildungs-iam-server/templates/_dbildungs-iam-server-envs.tpl index e22a1bd7e..c741cc95d 100644 --- a/charts/dbildungs-iam-server/templates/_dbildungs-iam-server-envs.tpl +++ b/charts/dbildungs-iam-server/templates/_dbildungs-iam-server-envs.tpl @@ -106,4 +106,34 @@ secretKeyRef: name: {{ default .Values.auth.existingSecret .Values.auth.secretName }} key: redis-password + - name: VIDIS_BASE_URL + valueFrom: + secretKeyRef: + name: {{ default .Values.auth.existingSecret .Values.auth.secretName }} + key: vidis-base-url + - name: VIDIS_USERNAME + valueFrom: + secretKeyRef: + name: {{ default .Values.auth.existingSecret .Values.auth.secretName }} + key: vidis-username + - name: VIDIS_PASSWORD + valueFrom: + secretKeyRef: + name: {{ default .Values.auth.existingSecret .Values.auth.secretName }} + key: vidis-password + - name: VIDIS_REGION_NAME + valueFrom: + secretKeyRef: + name: {{ default .Values.auth.existingSecret .Values.auth.secretName }} + key: vidis-region-name + - name: VIDIS_KEYCLOAK_GROUP + valueFrom: + secretKeyRef: + name: {{ default .Values.auth.existingSecret .Values.auth.secretName }} + key: vidis-keycloak-group + - name: VIDIS_KEYCLOAK_ROLE + valueFrom: + secretKeyRef: + name: {{ default .Values.auth.existingSecret .Values.auth.secretName }} + key: vidis-keycloak-role {{- end}} diff --git a/charts/dbildungs-iam-server/templates/secret.yaml b/charts/dbildungs-iam-server/templates/secret.yaml index d87bfe75d..4890a5bac 100644 --- a/charts/dbildungs-iam-server/templates/secret.yaml +++ b/charts/dbildungs-iam-server/templates/secret.yaml @@ -27,4 +27,10 @@ data: system-step-up-enabled: {{ .Values.auth.system_step_up_enabled }} secrets-json: {{ .Values.auth.secrets_json }} redis-password: {{ .Values.auth.redis_password }} + vidis-base-url: {{ .Values.auth.vidis_base_url }} + vidis-username: {{ .Values.auth.vidis_username }} + vidis-password: {{ .Values.auth.vidis_password }} + vidis-region-name: {{ .Values.auth.vidis_region_name }} + vidis-keycloak-group: {{ .Values.auth.vidis_keycloak_group }} + vidis-keycloak-role: {{ .Values.auth.vidis_keycloak_role }} {{- end }} diff --git a/charts/dbildungs-iam-server/values.yaml b/charts/dbildungs-iam-server/values.yaml index 9ef83effd..b2ff1515d 100644 --- a/charts/dbildungs-iam-server/values.yaml +++ b/charts/dbildungs-iam-server/values.yaml @@ -54,6 +54,12 @@ auth: system_step_up_timeout_in_seconds: '' system_step_up_timeout_enabled: '' redis_password: '' + vidis_base_url: '' + vidis_username: '' + vidis_password: '' + vidis_region_name: '' + vidis_keycloak_group: '' + vidis_keycloak_role: '' backend: replicaCount: 1 diff --git a/config/config.json b/config/config.json index 75096e5ed..95f2330ad 100644 --- a/config/config.json +++ b/config/config.json @@ -86,6 +86,14 @@ "USER_RESOLVER": "mariadb_resolver", "REALM": "defrealm" }, + "VIDIS": { + "BASE_URL": "https://service-stage.vidis.schule", + "USERNAME": "username", + "PASSWORD": "password", + "REGION_NAME": "test-region", + "KEYCLOAK_GROUP": "VIDIS-service", + "KEYCLOAK_ROLE": "VIDIS-user" + }, "IMPORT": { "IMPORT_FILE_MAXGROESSE_IN_MB": 10 }, diff --git a/migrations/.snapshot-dbildungs-iam-server.json b/migrations/.snapshot-dbildungs-iam-server.json index 0cce5b68e..89d8aa8d7 100644 --- a/migrations/.snapshot-dbildungs-iam-server.json +++ b/migrations/.snapshot-dbildungs-iam-server.json @@ -4523,6 +4523,236 @@ } } }, + { + "columns": { + "organisation_id": { + "name": "organisation_id", + "type": "uuid", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "uuid" + }, + "service_provider_id": { + "name": "service_provider_id", + "type": "uuid", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "uuid" + } + }, + "name": "organisation_service_provider", + "schema": "public", + "indexes": [ + { + "keyName": "organisation_service_provider_pkey", + "columnNames": [ + "organisation_id", + "service_provider_id" + ], + "composite": true, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "organisation_service_provider_organisation_id_foreign": { + "constraintName": "organisation_service_provider_organisation_id_foreign", + "columnNames": [ + "organisation_id" + ], + "localTableName": "public.organisation_service_provider", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.organisation", + "updateRule": "cascade" + }, + "organisation_service_provider_service_provider_id_foreign": { + "constraintName": "organisation_service_provider_service_provider_id_foreign", + "columnNames": [ + "service_provider_id" + ], + "localTableName": "public.organisation_service_provider", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.service_provider", + "updateRule": "cascade" + } + }, + "nativeEnums": { + "db_seed_status_enum": { + "name": "db_seed_status_enum", + "schema": "public", + "items": [ + "STARTED", + "DONE", + "FAILED" + ] + }, + "referenced_entity_type_enum": { + "name": "referenced_entity_type_enum", + "schema": "public", + "items": [ + "PERSON", + "ORGANISATION", + "ROLLE", + "SERVICE_PROVIDER" + ] + }, + "organisations_typ_enum": { + "name": "organisations_typ_enum", + "schema": "public", + "items": [ + "ROOT", + "LAND", + "TRAEGER", + "SCHULE", + "KLASSE", + "ANBIETER", + "SONSTIGE ORGANISATION / EINRICHTUNG", + "UNBESTAETIGT" + ] + }, + "traegerschaft_enum": { + "name": "traegerschaft_enum", + "schema": "public", + "items": [ + "01", + "02", + "03", + "04", + "05", + "06" + ] + }, + "geschlecht_enum": { + "name": "geschlecht_enum", + "schema": "public", + "items": [ + "m", + "w", + "d", + "x" + ] + }, + "vertrauensstufe_enum": { + "name": "vertrauensstufe_enum", + "schema": "public", + "items": [ + "KEIN", + "UNBE", + "TEIL", + "VOLL" + ] + }, + "email_address_status_enum": { + "name": "email_address_status_enum", + "schema": "public", + "items": [ + "ENABLED", + "DISABLED", + "REQUESTED", + "FAILED" + ] + }, + "rollen_art_enum": { + "name": "rollen_art_enum", + "schema": "public", + "items": [ + "LERN", + "LEHR", + "EXTERN", + "ORGADMIN", + "LEIT", + "SYSADMIN" + ] + }, + "personenstatus_enum": { + "name": "personenstatus_enum", + "schema": "public", + "items": [ + "AKTIV" + ] + }, + "jahrgangsstufe_enum": { + "name": "jahrgangsstufe_enum", + "schema": "public", + "items": [ + "01", + "02", + "03", + "04", + "05", + "06", + "07", + "08", + "09", + "10" + ] + }, + "rollen_merkmal_enum": { + "name": "rollen_merkmal_enum", + "schema": "public", + "items": [ + "BEFRISTUNG_PFLICHT", + "KOPERS_PFLICHT" + ] + }, + "rollen_system_recht_enum": { + "name": "rollen_system_recht_enum", + "schema": "public", + "items": [ + "ROLLEN_VERWALTEN", + "PERSONEN_SOFORT_LOESCHEN", + "PERSONEN_VERWALTEN", + "SCHULEN_VERWALTEN", + "KLASSEN_VERWALTEN", + "SCHULTRAEGER_VERWALTEN", + "MIGRATION_DURCHFUEHREN", + "PERSON_SYNCHRONISIEREN", + "CRON_DURCHFUEHREN", + "PERSONEN_ANLEGEN", + "IMPORT_DURCHFUEHREN" + ] + }, + "service_provider_target_enum": { + "name": "service_provider_target_enum", + "schema": "public", + "items": [ + "URL", + "EMAIL", + "SCHULPORTAL_ADMINISTRATION" + ] + }, + "service_provider_kategorie_enum": { + "name": "service_provider_kategorie_enum", + "schema": "public", + "items": [ + "EMAIL", + "UNTERRICHT", + "VERWALTUNG", + "HINWEISE", + "ANGEBOTE" + ] + }, + "service_provider_system_enum": { + "name": "service_provider_system_enum", + "schema": "public", + "items": [ + "NONE", + "EMAIL", + "ITSLEARNING" + ] + } + } + }, { "columns": { "id": { diff --git a/migrations/Migration20241115133701-S.ts b/migrations/Migration20241115133701-S.ts new file mode 100644 index 000000000..11fa57bee --- /dev/null +++ b/migrations/Migration20241115133701-S.ts @@ -0,0 +1,20 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20241115133701 extends Migration { + async up(): Promise { + this.addSql( + 'create table "organisation_service_provider" ("organisation_id" uuid not null, "service_provider_id" uuid not null, constraint "organisation_service_provider_pkey" primary key ("organisation_id", "service_provider_id"));', + ); + + this.addSql( + 'alter table "organisation_service_provider" add constraint "organisation_service_provider_organisation_id_foreign" foreign key ("organisation_id") references "organisation" ("id") on update cascade;', + ); + this.addSql( + 'alter table "organisation_service_provider" add constraint "organisation_service_provider_service_provider_id_foreign" foreign key ("service_provider_id") references "service_provider" ("id") on update cascade;', + ); + } + + override async down(): Promise { + this.addSql('drop table if exists "organisation_service_provider" cascade;'); + } +} diff --git a/src/modules/cron/cron.controller.spec.ts b/src/modules/cron/cron.controller.spec.ts index ab86befcd..449b03753 100644 --- a/src/modules/cron/cron.controller.spec.ts +++ b/src/modules/cron/cron.controller.spec.ts @@ -19,7 +19,10 @@ import { UserLock } from '../keycloak-administration/domain/user-lock.js'; import { UserLockRepository } from '../keycloak-administration/repository/user-lock.repository.js'; import { PersonLockOccasion } from '../person/domain/person.enums.js'; import { EntityNotFoundError } from '../../shared/error/entity-not-found.error.js'; -import { ClassLogger } from '../../core/logging/class-logger.js'; +import { ServiceProviderService } from '../service-provider/domain/service-provider.service.js'; +import { HttpException } from '@nestjs/common'; +import { LoggingTestModule } from '../../../test/utils/logging-test.module.js'; +import { DomainError } from '../../shared/error/domain.error.js'; describe('CronController', () => { let cronController: CronController; @@ -31,9 +34,11 @@ describe('CronController', () => { let permissionsMock: DeepMocked; let personenkontextWorkflowMock: DeepMocked; let userLockRepositoryMock: DeepMocked; + let serviceProviderServiceMock: DeepMocked; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ + imports: [LoggingTestModule], providers: [ { provide: KeycloakUserService, @@ -64,8 +69,8 @@ describe('CronController', () => { useValue: createMock(), }, { - provide: ClassLogger, - useValue: createMock(), + provide: ServiceProviderService, + useValue: createMock(), }, ], controllers: [CronController], @@ -80,6 +85,7 @@ describe('CronController', () => { personenkontextWorkflowMock = module.get(PersonenkontextWorkflowAggregate); userLockRepositoryMock = module.get(UserLockRepository); permissionsMock = createMock(); + serviceProviderServiceMock = module.get(ServiceProviderService); }); beforeEach(() => { @@ -600,4 +606,45 @@ describe('CronController', () => { }); }); }); + + describe('/PUT cron/vidis-angebote', () => { + describe(`when is authorized user`, () => { + it(`should update ServiceProviders for VIDIS Angebote`, async () => { + permissionsMock.hasSystemrechteAtRootOrganisation.mockResolvedValue(true); + serviceProviderServiceMock.updateServiceProvidersForVidis.mockResolvedValue(); + + await cronController.updateServiceProvidersForVidisAngebote(permissionsMock); + + expect(serviceProviderServiceMock.updateServiceProvidersForVidis).toHaveBeenCalledTimes(1); + }); + }); + describe(`when is not authorized user`, () => { + it(`should not update ServiceProviders for VIDIS Angebote and throw an error`, async () => { + permissionsMock.hasSystemrechteAtRootOrganisation.mockResolvedValue(false); + serviceProviderServiceMock.updateServiceProvidersForVidis.mockResolvedValue(); + + await expect(cronController.updateServiceProvidersForVidisAngebote(permissionsMock)).rejects.toThrow( + HttpException, + ); + expect(serviceProviderServiceMock.updateServiceProvidersForVidis).toHaveBeenCalledTimes(0); + }); + }); + describe(`when is authorized user but ServiceProvider update throws an Error`, () => { + it(`should throw the error`, async () => { + permissionsMock.hasSystemrechteAtRootOrganisation.mockResolvedValue(true); + class UnknownError extends DomainError { + public constructor(message: string) { + super(message, ''); + } + } + serviceProviderServiceMock.updateServiceProvidersForVidis.mockImplementationOnce(() => { + throw new UnknownError('Internal error when trying to update ServiceProviders for VIDIS Angebote'); + }); + + await expect(cronController.updateServiceProvidersForVidisAngebote(permissionsMock)).rejects.toThrow( + 'Internal error when trying to update ServiceProviders for VIDIS Angebote', + ); + }); + }); + }); }); diff --git a/src/modules/cron/cron.controller.ts b/src/modules/cron/cron.controller.ts index 1721456d7..91534acce 100644 --- a/src/modules/cron/cron.controller.ts +++ b/src/modules/cron/cron.controller.ts @@ -32,6 +32,7 @@ import { RollenSystemRecht } from '../rolle/domain/rolle.enums.js'; import { MissingPermissionsError } from '../../shared/error/missing-permissions.error.js'; import { SchulConnexErrorMapper } from '../../shared/error/schul-connex-error.mapper.js'; import { ClassLogger } from '../../core/logging/class-logger.js'; +import { ServiceProviderService } from '../service-provider/domain/service-provider.service.js'; @Controller({ path: 'cron' }) @ApiBearerAuth() @@ -46,6 +47,7 @@ export class CronController { private readonly personenkontextWorkflowFactory: PersonenkontextWorkflowFactory, private readonly userLockRepository: UserLockRepository, private readonly logger: ClassLogger, + private readonly serviceProviderService: ServiceProviderService, ) {} @Put('kopers-lock') @@ -372,4 +374,39 @@ export class CronController { throw new Error('Failed to unlock users due to an internal server error.'); } } + + @Put('vidis-angebote') + @HttpCode(HttpStatus.OK) + @ApiCreatedResponse({ description: 'VIDIS Angebote were successfully updated.', type: Boolean }) + @ApiBadRequestResponse({ description: 'VIDIS Angebote were not successfully updated.' }) + @ApiUnauthorizedResponse({ description: 'Not authorized to update VIDIS Angebote.' }) + @ApiForbiddenResponse({ description: 'Insufficient permissions to update VIDIS Angebote.' }) + @ApiNotFoundResponse({ description: 'Insufficient permissions to update VIDIS Angebote.' }) + @ApiInternalServerErrorResponse({ + description: 'Internal server error while trying to update VIDIS Angebote.', + }) + public async updateServiceProvidersForVidisAngebote(@Permissions() permissions: PersonPermissions): Promise { + const hasCronJobPermission: boolean = await permissions.hasSystemrechteAtRootOrganisation([ + RollenSystemRecht.CRON_DURCHFUEHREN, + ]); + if (!hasCronJobPermission) { + throw SchulConnexErrorMapper.mapSchulConnexErrorToHttpException( + SchulConnexErrorMapper.mapDomainErrorToSchulConnexError( + new MissingPermissionsError('Insufficient permissions'), + ), + ); + } + try { + await this.serviceProviderService.updateServiceProvidersForVidis(); + } catch (error) { + let errorMessage: string = 'unbekannt'; + if (error instanceof DomainError) { + errorMessage = error.message; + } + this.logger.info( + `ServiceProvider für VIDIS-Angebote konnten nicht aktualisiert werden. Fehler: ${errorMessage}`, + ); + throw error; + } + } } diff --git a/src/modules/cron/cron.module.ts b/src/modules/cron/cron.module.ts index aa172c03f..4f69c69d8 100644 --- a/src/modules/cron/cron.module.ts +++ b/src/modules/cron/cron.module.ts @@ -5,6 +5,7 @@ import { PersonModule } from '../person/person.module.js'; import { PersonDeleteModule } from '../person/person-deletion/person-delete.module.js'; import { PersonenKontextModule } from '../personenkontext/personenkontext.module.js'; import { LoggerModule } from '../../core/logging/logger.module.js'; +import { ServiceProviderModule } from '../service-provider/service-provider.module.js'; @Module({ imports: [ @@ -13,6 +14,7 @@ import { LoggerModule } from '../../core/logging/logger.module.js'; KeycloakAdministrationModule, PersonDeleteModule, LoggerModule.register(CronModule.name), + ServiceProviderModule, ], controllers: [CronController], }) diff --git a/src/modules/service-provider/domain/service-provider.service.spec.ts b/src/modules/service-provider/domain/service-provider.service.spec.ts index 725fe7b15..d87aec223 100644 --- a/src/modules/service-provider/domain/service-provider.service.spec.ts +++ b/src/modules/service-provider/domain/service-provider.service.spec.ts @@ -6,6 +6,170 @@ import { RolleRepo } from '../../rolle/repo/rolle.repo.js'; import { ServiceProviderRepo } from '../repo/service-provider.repo.js'; import { ServiceProvider } from './service-provider.js'; import { ServiceProviderService } from './service-provider.service.js'; +import { OrganisationRepository } from '../../organisation/persistence/organisation.repository.js'; +import { OrganisationServiceProviderRepo } from '../repo/organisation-service-provider.repo.js'; +import { VidisService } from '../../vidis/vidis.service.js'; +import { LoggingTestModule } from '../../../../test/utils/logging-test.module.js'; +import { ServiceProviderKategorie, ServiceProviderSystem, ServiceProviderTarget } from './service-provider.enum.js'; +import { Organisation } from '../../organisation/domain/organisation.js'; +import { OrganisationsTyp } from '../../organisation/domain/organisation.enums.js'; +import { faker } from '@faker-js/faker'; +import { ConfigTestModule } from '../../../../test/utils/config-test.module.js'; +import { VidisAngebot } from '../../vidis/domain/vidis-angebot.js'; + +const mockVidisAngebote: VidisAngebot[] = [ + { + angebotVersion: 1, + angebotDescription: + 'Effiziente Organisation Ihrer Hausaufgaben mit der neuen Hausaufgaben Listen App Verlieren Sie nie wieder den Überblick über Ihre Aufgaben und Abgabefristen. Unsere Hausaufgaben Listen App bietet Ihnen eine strukturierte und benutzerfreundliche Lösung, um Ihre schulischen Verpflichtungen optimal zu verwalten. Funktionen der App: Übersichtliche Verwaltung: Behalten Sie alle Hausaufgaben, Projekte und To-Dos an einem zentralen Ort im Blick. Erinnerungsfunktion: Automatische Benachrichtigungen helfen Ihnen, keine Fristen mehr zu verpassen. Einfache Bedienung: Intuitive Benutzeroberfläche, die eine schnelle und unkomplizierte Nutzung ermöglicht. Kollaborationsmöglichkeit: Teilen Sie Aufgaben und Projekte mit Mitschülern, um effizienter zusammenzuarbeiten. Anpassbare Listen: Erstellen Sie individuelle Kategorien und Listen nach Ihren Bedürfnissen. Fortschrittsanzeige: Verfolgen Sie Ihre erledigten Aufgaben und sehen Sie Ihren Fortschritt in Echtzeit. Unsere Hausaufgaben Listen App ist kostenlos verfügbar und bietet Ihnen eine verlässliche Unterstützung bei der Organisation Ihres Schulalltags.', + angebotLink: 'https://vidis-login-example.buergercloud.de/oauth2/authorization/vidis?vidis_idp_hint=vidis-idp', + // Mocked angebotLogo is base64 encoded string for a JPEG + angebotLogo: + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAKIBIADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDy39uX4y6t+zp+xP8YfiFoKWsmueBPBGteIdOW5QvC1zaWE9xEHUEErvjXIBGRmvIP+CHH7XXjP8Abt/4JZ/Cv4qfEK5sbzxh4mj1JNRuLS1W1ina21S8tEcRr8qkxwIW2gDcSQAOB2P/AAVi/wCUWX7S3/ZKvFH/AKaLqvAP+DXH/lBR8DP+4/8A+pBqdAH3/RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRX4nftbf8ABV3/AIKEftZfHLwz8MfgD+zT8UP2d45vEsml3njTxR4Zk1SxuLdpFijuJ5Z9Oe1tLaMCSWR4zcFht8tjjEgB+2NFfkD/AMMbf8Fkv+jsf2f/APwUW3/zPUf8Mbf8Fkv+jsf2f/8AwUW3/wAz1AH6/UV+QP8Awxt/wWS/6Ox/Z/8A/BRbf/M9XmvwW/4NIPFH7T3xO+IXxA/bS+MOpeJvHHijUIryyvPh5qyIshbzDcG5+26aFUZMKxRQRpHGqMBwVVAD9yKK/IH/AIgqf2Wf+h+/aA/8Hmkf/Kyj/iCp/ZZ/6H79oD/weaR/8rKAP1+or8gf+IKn9ln/AKH79oD/AMHmkf8Ayso/4gqf2Wf+h+/aA/8AB5pH/wArKAPvD9sj/grp+zf+wDrVvpfxa+LHh7wvrNwAw0uKK41PUY1IyHktrSOWaND2Z0VT2Jrw7/iKN/YT/wCi5f8AlmeIP/kGq/7GX/BsP+yP+xvf3V83gi4+LGqXOVS5+IhttbjtkIwUS1EEdr772hZwejDpX0P/AMOnf2Wf+jaf2f8A/wAN5pH/AMj0AeAf8RRv7Cf/AEXL/wAszxB/8g0f8RRv7Cf/AEXL/wAszxB/8g18ZfspfsT/AAY8S/8AB17+0z8N9R+EPwtvvh74f+GlnfaX4YuPCdhJo+nXDW/hpmmhtDF5MchNxOS6qGPnSc/Mc/qZ/wAOnf2Wf+jaf2f/APw3mkf/ACPQB8s/Fr/g7L/Yp+HHhJ9S0fx74n8fXiuEGlaD4T1CG7cHqwa/jtYMDvmUHngGvH9W/wCD1r9mOHSrp7H4d/Hi4vlic28U+laVDFLJg7VeRdQcopOAWCMQOdp6H9Ivhx/wTr/Z9+DvjKy8R+EfgV8G/CviHTX8yz1TR/Bem2N5at0zHNFCrocdwRXslAH4y/Dn/gpf/wAFZf2h/BWn+NvAf7JXwdi8GeJo/t2ijWb0Wt8bVifLMiXGs28nK4IYwRhwQwXawrkf2qvEn/BZX9sP4Yx+Cf8AhUPgn4PwXmoQTXHiHwN4us9K1RI13Axm4/tqeRIcsHfyUEh8sAEgsjfuRRQB+QP/ABDiftTf9JOP2gP+/Or/APy8o/4hxP2pv+knH7QH/fnV/wD5eV+v1FAH5A/8Q4n7U3/STj9oD/vzq/8A8vKP+IcT9qb/AKScftAf9+dX/wDl5X6/UUAeB/8ABN79krx5+xX+zkPBXxE+Nnir4+a8upz3sfiXxBbtDdxQOsYS1+eeeRlQo7BpJXbMrDhQqj3yiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPn/wD4Kxf8osv2lv8AslXij/00XVeAf8GuP/KCj4Gf9x//ANSDU69//wCCsX/KLL9pb/slXij/ANNF1XgH/Brj/wAoKPgZ/wBx/wD9SDU6APv+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPw3/4Lj/staD+zn/wX9/Yo+MvhTUvEWn+Lvjl8R9N0/xOq3221ki0+70KyjESqodRLbXDRyqXZHVF+Vcvu/civyB/4OO/+Upv/BMf/sqr/wDp38N1+v1ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB8//wDBWL/lFl+0t/2SrxR/6aLqvAP+DXH/AJQUfAz/ALj/AP6kGp17/wD8FYv+UWX7S3/ZKvFH/pouq8A/4Ncf+UFHwM/7j/8A6kGp0Aff9FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfkD/AMHHf/KU3/gmP/2VV/8A07+G6/X6vyB/4OO/+Upv/BMf/sqr/wDp38N1+v1ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFeD/wDBRn/gof4F/wCCYX7Ntx8UviFY+KdS0CHULfTFt9AsFvLuSabds4d440X5Gy8kiLnCglmVSAe8UV+QP/Eat+yz/wBCD+0B/wCCPSP/AJZ1zfg3/guv+3F/wUX8SeIPEv7G/wCzD4U1z4Q6NcrYQan47mS2vrybbljuOp2sG4fxRwmby8rufLAUAfpF/wAFYv8AlFl+0t/2SrxR/wCmi6rwD/g1x/5QUfAz/uP/APqQanX5zfte/slf8FKP2yvCnx8+J37QvjLWv2d/h74P+GWq6uPCvhHxGlzoHiT7JZM0mlmxtdUkKpcxLOZZ7lpcFtoR0IRIf+CM/wDwRT+Pv7W//BNn4b/ELwT+3V8YPg34Z8Qf2n9j8H6JHqJsNI8nVLy3k8sw6rBH+9kieY7Yl+aZs7jliAftd+27/wAFI/gn/wAE4/Deh6t8aPHln4KtPEk8ttpYexu76e9eIK0myG1ilkKoHTc23apdASCwz84f8RRv7Cf/AEXL/wAszxB/8g14V+y3/wAGgHwd+GnxK0fx38W/iX4++NXjPTdeGuXgv7e1tdE14rIJFivrSZbqa4VmB8zdc4lBIZcFg33p/wAOnf2Wf+jaf2f/APw3mkf/ACPQB8X/ALXn/B3T+yz8FvhA+sfCzWLz41eLmu47eLw7Bp+peH1EbBi88l1d2QRUXaBhVdyzrhdu5l90/wCCW/8AwVO+Ln7enxL8R+H/AIkfsj/FT9nq00XTBqFrrHiP7U1jqL+akf2ZWuLK1bzSHLgIHG2N9xX5Q3sem/8ABLD9mHRtRt7yz/Zx+A1rd2sizQTw+ANJjkhdSCrKwgyrAgEEcgiveaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD8gf+Djv/lKb/wAEx/8Asqr/APp38N1+v1fkD/wcd/8AKU3/AIJj/wDZVX/9O/huv1+oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPn/wD4Kxf8osv2lv8AslXij/00XVeAf8GuP/KCj4Gf9x//ANSDU69//wCCsX/KLL9pb/slXij/ANNF1XgH/Brj/wAoKPgZ/wBx/wD9SDU6APv+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPyB/4OO/+Upv/AATH/wCyqv8A+nfw3X6/V+QP/Bx3/wApTf8AgmP/ANlVf/07+G6/X6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA+f/APgrF/yiy/aW/wCyVeKP/TRdV4B/wa4/8oKPgZ/3H/8A1INTr3//AIKxf8osv2lv+yVeKP8A00XVeAf8GuP/ACgo+Bn/AHH/AP1INToA+/6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/IH/g47/5Sm/8ABMf/ALKq/wD6d/Ddfr9X5A/8HHf/AClN/wCCY/8A2VV//Tv4br9fqACiiigAooooAKKKKACiiigAoor4N/4KTf8ABxh+zz/wTC+MFn4D8YN4u8Y+KpLX7Ve2Pg+2s79tFBYhUuzNdQiKVsFhHkuF2sQquhYA+8qK/Dfw/wD8HKv7UH/BRv8Aal17wn+xD8BfCvizw1oGjx6pMvjxFtdUCboo5ZJHXVILWMedKESJZJJHVS/QOqelf8Nkf8Fkv+jTv2f/APwb23/zQ0Afr9RX5A/8Nkf8Fkv+jTv2f/8Awb23/wA0NH/DZH/BZL/o079n/wD8G9t/80NAH6/UV+QP/DZH/BZL/o079n//AMG9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a6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA+T/APgsX/wSu0v/AIK9fswaL8NdU8YX3giLRfFNp4mj1C1sFvmkMMNzbvCY2dB88V1Jht3ysFJDAFT9YUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRXmP7Zn7XXg79hD9mfxV8WPH01/B4T8Hwwy3psrf7RcOZp47eJI0yMs800aDJAG7JIAJAB6dRXM/Bf4taL8ffg74T8d+G5prjw7410az17S5ZYjFJLa3UCTwsyHlSY5FJB5B4rpqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArwn/gpl+w9af8FIv2HfHnwVvvENx4Th8aw2qrq0NoLxrGW2vILyNjCXTzF8y3QMu9SVJwwOCPdqKAPyt/4M/fjr4w+N//AASp1SHxd4i1TxEvgnxvdeGNDN9MZW03TINM0ySC0Rjz5UZmkCKSdqkKMKqgfqlX4Vf8EkvinoP/AARt/wCC7Pxu/Y2vPiAbX4P+IpbW/wDB1pq0BMk3iG+h0qW1tUlUECRrW5eAs5VZWtIfuuVQ/urQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH4m/8Hefwxb9nq8/Zv/ar8H2PhfT/ABn8OvHkVnNO+mIbvWbkImoaebiVQGmht20qdQjscfajtxls/tlXwT/wcnfsPWn7b3/BKjxwtz4huPDs3wjhu/iXavHaC5XUJdM0y+JtHUum1ZY5pF3gko21trgFT0n/AAbw/HXxh+0p/wAEc/g14y8e+ItU8V+KtUh1aG81XUZjNdXa2+sX1tEZHPLsIYY1LNlm25JJJJAPtKiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA5j42fCPRv2gPgz4u8B+I455vD3jbRbzQNUjhlMUj2t1A8EwVxyrFJGwex5r8hP8Ag1J+G8X7O/7Wf7evwl0jVtc1Dwj8MfHdloeix6lciWRY4L3XbbzmCqsfnSR20PmMiIGKDgAAD9oq/DfUP2WtB/Ym/wCDx74V2/gbUvEVvZfG3w9rnjvxLa3N9vhlvry28QtNGgVV/wBH820imWOQuVkJIbARVAP3IooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvxd/4LheOrz/AIJ5f8F6f2Xf2ufGHh/VL74N6P4dk8EajqOngSSWd7KmtKwZfVYdQEyr1kW3mC8qa/aKvyB/4PVv+UWXgH/squnf+mjWKAP1+ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvyJ/4PSNHvNT/wCCVHg2a2tbi4h074n6bcXUkcZZbaI6ZqsQdyPuqZJI0yeNzqOpFfrtWF8UPhvo/wAZPhp4i8IeIrRdQ8P+KtMudH1O1Y4Fza3ETQyxk/7SOw/GgDif2KP2wvB/7fP7L/hP4ueAjqn/AAivjCGaWzXUbYW91E0NxLbSxyIGYBkmhkU7WZTtyCQQT6nX5J/8GYvjDVPEv/BJ7xLZahfXF3a+HviTqen6bFI2VsrdrDTblok9FM1xPJj+9Kx71+tlABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfkD/AMGVP/KLLx9/2VXUf/TRo9fr9X5A/wDBlT/yiy8ff9lV1H/00aPX6/UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB+QP8AwZU/8osvH3/ZVdR/9NGj1+v1fi7/AMGxmseJf2AP2tP2gv2D/GukWc+veC72b4hQa/ZXO+G8glh0q2ClOwkglsZkH3l3yq4BAFftFQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU2SRYY2ZmVVUZZicAD1NfPf7JP8AwVb/AGe/27Pin4j8FfCX4naP408TeFIHutRsrW2uodsCSrE00TyxIk8QkdFMkLOuXTn5hkA+hqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPyB/Y3/wCVyT9rH/slVj/6TeFK/X6vyB/Y3/5XJP2sf+yVWP8A6TeFK/X6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvL/ANrv9s74afsKfBzUPHXxS8WaX4W0GxRjH9olH2nUZQpYQW0Od88zY4RAT3OACR2XxS+KPh34JfDnWvF3i3WLHw/4Z8O2cl/qWo3knlwWcEY3M7H2HYck4ABJAr8Ef2d/Bfx0/wCDrb9pX4c/FD4seEvBvg39mT4M+Ib1IbWyL+dr7F7SefTnDTGaZpI47aOS4VYYVXzfLHmBloAwtW0j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KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK4n9on9ojwb+yl8Gtf8fePte0/w34W8N2kl3eXd3KseQqlhHGCQZJXxtSNcs7EKoJIFfln/AMFWf+Do3wP4R8DL8O/2StWk+Kvxt8VakdAsbnTNHubi30O586KNGhjmt9mozTM7RwpB5iF/mYsNqSeS/Ab/AINq/jd/wUj+Olv8Zv28PidNrA17w1Y3FppHhq7XT9ZsbjbAy2V5C2npa2sccXmpLHajc0zFhJnczgDPjp/wcz/F/wD4KW/G3R/gf+wn4BvLPWfF+l3MVzrfi62t7XVdPkQSPJPalbtrWCOOBN3mz72Z32LGHCb/AKx/4JOf8EB/En7Dn7YOqftA/F7433/x0+J2veGv7Ill1XSpJJNLuH+z+ZNHfXFxNNMUig+zxtshPku42gNsH3r+zX+zX4H/AGP/AIIaD8N/hvoMPhjwX4Yjki03TYp5Z1txJK80hMkrPI7NJJI5Z2JJYkmu5oAK+Uf+C0v/AAUC8M/8E4v2APGHjLxA+pf2h4gt7jwv4bisYfMkn1e5s7lrYMSQEjXynkdyeFjbAZtqn6ur8T/+D1z9oDwbB+xj8OfhW2vWf/CwbrxpaeK49EAZrj+y47HVLVrpiBtVPPlRBuILHdtBCOVAPpT/AINSvhQPhn/wRV+Hd81vJbXXjLU9X12dJIjGxzfS2sbc9Q0NrEwPQqykcYr9HKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDnPjD8VdF+BPwk8U+OPElw9n4d8G6Rd65qs6RmRoLW1heeZwq8sRGjHA5OMV/PEPFn7Xn/AAdU+L/jR4d8B/Ezw14L/Z18I+K7Saz0TX7D+zJZbOV7sWYMlpazSXM6QQ+ZNBLciISyREcbGT+gn9pj4I2n7TP7OHxA+G+oXtxpth8QPDWo+Grm7gUNLaxXlrJbPIgPBZVkJAPGRX4B6F8Rv27/APg1w8CeJNLvvCvh/wCKH7NFp4qj03RNY1m7EkcUUklzMHs7e3vTNpv2rc7SCeKSJJwoBLPmUA/XH/gnx/wQq/Zz/wCCcfhW1tfCvgrT/F3iLT9XfWrTxb4w03T9T8R2MzJGirBeLbRtDGgjBVYwoDM7cs7E/YVeM/sF/t4/D3/go9+zjpXxQ+Gt9d3Gg6lLLbSW19EsN9ps8TlXguIlZgkg4YAMQVZWBIYGvZqACiiigCO8vYdOs5ri4ljt7e3QySyyMFSNQMlmJ4AA5JPSvwT8e/tF/CT/AIKpf8HbfwXj8M6bp/xI8C/D/wAL6j4Z1mW/06HUNHvryxttduVuYc+ZHLbpPcW3lzkAGVFZMjy3b6z/AODnD/gqvpv7HH7H+ofCHwr/AGP4m+KXxusrvwt/YvmvNd6Xpd3aywT3piiO8SkypHAGwHdmYBxE6n0v/g3k/wCCXv8Aw7P/AGCdHsvFPg2y8K/Gbxh5lx47lh1L7e128V5eGwjZ0keAeVaTouIMJuZz8zFmIB95UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTLi3jvLeSGaNJYpVKOjruV1PBBB6g+lPooA/Fv9sv/g1X1X4c/tEeEfi5+xD420/4R+MtH1mTVLqx8SapM2laeymN4DYhLS4fZvEgkguPNidHC/KqlH4/9l3/AIOPf2kP2GtL0Pw3+2/8A/iNa6ffeKG0m4+J93okmh29tC20bVtY7Fbe8aPZPLutpQZIh8qMV3P+6lcr8Yfgb4J/aG8HN4d8f+D/AAr448PtMlydM8QaTBqdmZUzsk8qZGTcuThsZGTigD4q/wCIo39hP/ouX/lmeIP/AJBr5W/aw/4OdfiJ+0Zp/j7wr+xH8AviZ8VP7Liis7b4k6foV5f2+lzyEMZf7MFlIxBjWQR/aXiJYbjEyqVb9KP+HTv7LP8A0bT+z/8A+G80j/5Hr1X4O/AjwP8As7+Ef+Ef+H/g3wp4F0Hz2uf7N8PaTb6ZZ+a2N0nlQIqbjgZbGTgUAflJ/wAEQP8Ag200f4Nw+H/j5+0pFf8AjL48X2pW/izTbS41S5MHhmYiC5he5QpG8upxz+b5vmPJCrBQqlk8xv2GoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9k=', + angebotTitle: 'Hausaufgaben-Liste', + angebotLongTitle: 'Testangebot Hausaufgaben-Liste', + educationProviderOrganizationName: 'VIDIS-Testangebot', + schoolActivations: ['DE-VIDIS-vidis_test_20202', 'DE-VIDIS-vidis_test_40404', 'DE-VIDIS-vidis_test_101010'], + }, + { + angebotVersion: 1, + angebotDescription: + 'divomath ist eine Lernumgebung für Mathematik, die insbesondere dem Prinzip der Verstehensorientierung folgt. Sie bietet Unterrichtseinheiten für die dritte bis sechste Jahrgangsstufe.', + angebotLink: 'https://login-stage.divomath.de/idp-login?idp=vidis&vidis_idp_hint=vidis-idp', + // Mocked angebotLogo is base64 encoded string for a PNG + angebotLogo: + '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', + angebotTitle: 'divomath VIDIS-Testsystem', + angebotLongTitle: 'digital und verstehensorientiert Mathematik lernen (Test)', + educationProviderOrganizationName: 'divomath VIDIS-Testsystem', + schoolActivations: ['DE-VIDIS-vidis_test_30303', 'DE-VIDIS-vidis_test_20202', 'DE-VIDIS-vidis_test_101010'], + }, + { + angebotVersion: 4, + angebotDescription: 'webtown test offer', + angebotLink: '?vidis_idp_hint=vidis-idp', + // Mocked angebotLogo is base64 encoded string for a SVG + angebotLogo: + 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBEbyBub3QgZWRpdCB0aGlzIGZpbGUgd2l0aCBlZGl0b3JzIG90aGVyIHRoYW4gZHJhdy5pbyAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI5NzhweCIgaGVpZ2h0PSI1NTBweCIgdmlld0JveD0iLTAuNSAtMC41IDk3OCA1NTAiIGNvbnRlbnQ9IiZsdDtteGZpbGUgaG9zdD0mcXVvdDtFbGVjdHJvbiZxdW90OyBtb2RpZmllZD0mcXVvdDsyMDI0LTExLTA4VDE1OjQ0OjM2Ljg2OVomcXVvdDsgYWdlbnQ9JnF1b3Q7TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgZHJhdy5pby8yNC4wLjQgQ2hyb21lLzEyMC4wLjYwOTkuMTA5IEVsZWN0cm9uLzI4LjEuMCBTYWZhcmkvNTM3LjM2JnF1b3Q7IGV0YWc9JnF1b3Q7MWJVOXZKUTAySHgwQmpwb2JyeGMmcXVvdDsgdmVyc2lvbj0mcXVvdDsyNC4wLjQmcXVvdDsgdHlwZT0mcXVvdDtkZXZpY2UmcXVvdDsgc2NhbGU9JnF1b3Q7MSZxdW90OyBib3JkZXI9JnF1b3Q7MCZxdW90OyZndDsmIzEwOyAgJmx0O2RpYWdyYW0gbmFtZT0mcXVvdDtQYWdlLTEmcXVvdDsgaWQ9JnF1b3Q7QzJZR212eTZkZFBRR2UyQjJJSUwmcXVvdDsmZ3Q7JiMxMDsgICAgJmx0O214R3JhcGhNb2RlbCBkeD0mcXVvdDsxNjg3JnF1b3Q7IGR5PSZxdW90Ozk4NCZxdW90OyBncmlkPSZxdW90OzEmcXVvdDsgZ3JpZFNpemU9JnF1b3Q7MTAmcXVvdDsgZ3VpZGVzPSZxdW90OzEmcXVvdDsgdG9vbHRpcHM9JnF1b3Q7MSZxdW90OyBjb25uZWN0PSZxdW90OzEmcXVvdDsgYXJyb3dzPSZxdW90OzEmcXVvdDsgZm9sZD0mcXVvdDsxJnF1b3Q7IHBhZ2U9JnF1b3Q7MSZxdW90OyBwYWdlU2NhbGU9JnF1b3Q7MSZxdW90OyBwYWdlV2lkdGg9JnF1b3Q7MTEwMCZxdW90OyBwYWdlSGVpZ2h0PSZxdW90Ozg1MCZxdW90OyBtYXRoPSZxdW90OzAmcXVvdDsgc2hhZG93PSZxdW90OzAmcXVvdDsmZ3Q7JiMxMDsgICAgICAmbHQ7cm9vdCZndDsmIzEwOyAgICAgICAgJmx0O214Q2VsbCBpZD0mcXVvdDswJnF1b3Q7IC8mZ3Q7JiMxMDsgICAgICAgICZsdDtteENlbGwgaWQ9JnF1b3Q7MSZxdW90OyBwYXJlbnQ9JnF1b3Q7MCZxdW90OyAvJmd0OyYjMTA7ICAgICAgICAmbHQ7bXhDZWxsIGlkPSZxdW90O0hsVl9wWWdOeGNvQnJKTmxrbThkLTImcXVvdDsgdmFsdWU9JnF1b3Q7JnF1b3Q7IHN0eWxlPSZxdW90O3NoYXBlPWltYWdlO3ZlcnRpY2FsTGFiZWxQb3NpdGlvbj1ib3R0b207bGFiZWxCYWNrZ3JvdW5kQ29sb3I9ZGVmYXVsdDt2ZXJ0aWNhbEFsaWduPXRvcDthc3BlY3Q9Zml4ZWQ7aW1hZ2VBc3BlY3Q9MDtpbWFnZT1kYXRhOmltYWdlL3BuZyxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCSUFBQUFLSUNBWUFBQUFJSzRFTkFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUM3eVNVUkJWSGhlN2QwaFdDUEoxZ2JnbFVna0Vqa1NPUktKSElsRWprU3VRMGFPUkNKWElwRWpWeUpIcmtTT1JQTC9OVW00bFU0bjZTVGQ2YXJUNy9zODlkdzdoQms2bGFaejZ0dVQ2cjgrQUFBQUFBaE5BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFqbDVlWGw0L3I2K3VQcDZXbnhGUUFBQkVBQVFDZ1hGeGNmZi8zMTE4ZloyZG5pS3dBQUNJQUFnRkJTK0xNY0FBRE1xWXdBZ0ZBRVFBQUE2MVJHQUVBb0FpQUFnSFVxSXdBZ0ZBRVFBTUE2bFJFQUVJb0FDQUJnbmNvSUFBaEZBQVFBc0U1bEJBQ0VJZ0FDQUZpbk1nSUFRaEVBQVFDc1V4a0JBS0VJZ0FBQTFxbU1BSUJRQkVBQUFPdFVSZ0JBS0FJZ0FJQjFLaU1BSUJRQkVBREFPcFVSQUJDS0FBZ0FZSjNLQ0RpcGw1ZVhqOHZMeTVVRjJwZ2pIY3ZUMDlQaTZJQUk4dDl4QUFEbVZFYkFTVjFjWEt3c3prb1laMmRuaTZNRElzaC92d0VBbUZNWkFRZExuVE1sZGZNY09yNS8vNzU0UmtBRStlODNBQUJ6S2lQZ0lBOFBEeXVMckVNR3dCQmNad0FBMXFtTWdFKy9mLy8rRSt5Y29xdEgxdzB3bFB4YUF3REFuTW9JQ25ISzhLWFBjWE56OC9IKy9yNTRGZ0RqeTY5UkFBRE1xWXhnWk12ZzUvejhmR1hSVXNPNHZiMFYvZ0RGeWE5VEFBRE1xWXdJcjdUYmpwYyszQllkcUYxK1RRTUFZRTVsUkhnbDNuWjgwemcwZkZrK1I3Y3pCeEFBQVFDMFVSbHhVcnB4MnNleFhUZjV2d1V3ZGE2SkFBRHJWRWFjMU5qZE9GRk40VGtDZE9XYUNBQ3dUbVhFb0VycStJbDgyL0g4ZVFKTW5Xc2lBTUE2bFJHRDJoYiswQi96Q3ZBL3Jva0FBT3RVUmd4cU5wdXRGT0xMRWJrYlp3ejUzQUpNbldzaUFNQTZsUkVFWUxFRDhEK3VpUUFBNjFSR0VFQysyRG4yam1JQXRjdXZpUUFBekttTUlJQ3pzN09WQlUvNk04QlU1ZGREQUFEbVZFWVFRTnRlU3dCVDVWb0lBTEJPWlFTQldQUUF1QllDQUxSUkdVRWdGajBBcm9VQUFHMVVSaENJUlErQWF5RUFRQnVWRVFSaTBRUGdXZ2dBMEVabEJJRlk5QUM0RmdJQXRGRVpRU0FXUFFDdWhRQUFiVlJHRUloRkQ0QnJJUUJBRzVVUkJHTFJBK0JhQ0FEUVJtVUVnVmowQUxnV0FnQzBVUmxCSUJZOUFLNkZBQUJ0VkVZUWlFVVBnR3NoQUVBYmxSRUVZdEVENEZvSUFOQkdaUVNCV1BRQXVCWUNBTFJSR1VFZ0ZqMEFyb1VBQUcxVVJoQ0lSUStBYXlFQVFCdVZFUVJpMFFQZ1dnZ0EwRVpsQklGWTlBQzRGZ0lBdEZFWlFTQVdQUURqWFF0ZlhsNCtMaTh2VjM1K0d1bHJUMDlQaSs4Q0FCaUhWU0lFa2k4NEFLWnFyR3ZoeGNYRnlzL094OW5aMmVLN0FBREdZWlVJZ2VTTERZQ3BPdVJhdUtsN3A2L3gvZnYzeFU4Q0FCaUhWU0lFa2k4MkFLYnFrR3ZodHU2ZFF3WUFRR2xVS0JDSXhRZEF0MnZoa0IwL3VuMEFnQkpaSlVJZytRSUVZQXFHQ0hJQUFDSlM1VUFnRmpEQTFQVDkwUzNkT3dCQVZGYUpFRWkraUFHSUlOMCszZWJNQUFESHMwcUVRUEpGRFVEdEhoNGVWcTVydThaUzI5Y0FBS1pPWlFTQldQUUFKVHZWeHN2NTF3RUFtRk1aUVNBV1BVREpEZzEvYm01dVB0N2YzeGYveW03NTN3VUFZRTVsQklGWTlBQWxtODFtSzllcEx1UDI5bmF2OENmSi96NEFBSE1xSXdqRW9nZkF0UkFBb0kzS0NBS3g2QUZ3TFFRQWFLTXlna0FzZWdCY0N3RUEycWlNSUJDTEhnRFhRZ0NBTmlvakNNU2lCOEMxRUFDZ2pjb0lBckhvQVhBdEJBQm9vektDUUN4NkFGd0xBUURhcUl3Z0VJc2VBTmRDQUlBMktpTUl4S0lId0xVUUFLQ055Z2dDc2VnQmNDMEVBR2lqTW9KQUxIb0FYQXNCQU5xb2pDQVFpeDRBMTBJQWdEWXFJd2pFb2dmQXRSQUFvSTNLQ0FLeDZBRndMUVFBYUtNeWdrQXNlZ0JjQ3dFQTJxaU1JQkNMSGdEWFFnQ0FOaW9qQ01TaUI4QzFFQUNnamNvSUFySG9BWEF0QkFCb296S0NRQ3g2QUZ3TEFRRGFxSXdnRUlzZUFOZENBSUEyS2lNSXhLSUh3TFVRQUtDTnlnZ0NzZWdCY0MwRUFHaWpNb0pBTEhvQVhBc0JBTnFvakNBUWl4NEExMElBZ0RZcUl3akVvZ2ZBdFJBQW9JM0tDQUt4NkFGd0xRUUFhS015Z2tBc2VnQmNDd0VBMnFpTUlCQ0xIZ0RYUWdDQU5pb2pDTVNpQjhDMUVBQ2dqY29JQXJIb0FYQXRCQUJvb3pLQ1FDeDZBRndMQVFEYXFJd2dFSXNlQU5kQ0FJQTJLaU1JeEtJSHdMVVFBS0NOeWdnQ3NlZ0JjQzBFQUdpak1vSkFMSG9BWEFzQkFOcW9qQ0FRaXg0QTEwSUFnRFlxSXdqRW9nZkF0UkFBb0kzS0NBS3g2QUZ3TFFRQWFLTXlna0FzZWdCY0N3RUEycWlNSUJDTEhnRFhRZ0NBTmlvakNNU2lCOEMxRUFDZ2pjb0lBckhvZ1dsNGVucjZ1THk4WFBtZDd6TFMzMGwvTjdyOE9RTUFNS2N5Z2tBc2VpQytoNGVIbGQvMWZjZloyZG5pWDRvcmY3NEFBTXlwakNBUWk1NXh2THk4SE5TTlVjSkl4LzM0K0xoNEpwUmtxUFBxKy9mdmk1OFFWLzU4QVFDWVV4bEJJQlk5NDdpNHVGaVoreHBINmlxaExMdk9xNXVibTQvMzkvZkZkNVBMNXdrQWdEbVZFUVJpMFRPY21ydDhEaGxUMlN1bUJJZWNXN2UzdDhLZkxmSzVBZ0JnVG1VRWdWajBES2RybDA5TlVvQ1F1a2phbmtjYVU5Z3JwZ1JkemkzMlkrNEFBTmFwakNBUWk1Nys3ZE9kVWVQZUtpa0V1cnU3YTMwKytkQVIxTCt1NTlZVTl1enBXejUvQUFETXFZd2dFSXVlL3JWMVowU1hPbithenprTkhVSDltdUs1ZFNybUZBQmduY29JQXJIb09kNnVyb3dwZEdQTVpyUFc1NTZHVHFEanBMbmJkSDdwOU9sUFBxOEFBTXlwakNBUWk1N2piZHVQWmFxYUhVRTZnUTZUN3JTV3oyTSs2SmU1QlFCWXB6S0NRQ3g2anBPNk0vSTV6TWVVdXpQYU9vSjBBZTFuVy9pajg2ZC8rZndDQURDbk1vSkFMSG9PMTdaQVoxWGVDYVFMcUx2bXVaWHV2T1lXN3NQSzV4c0FnRG1WRVFSaTBYT1l4OGZIbGJsTFExZkd1bVluRUxzMXp5M2h6Mm5rY3c0QXdKektDQUt4NkRsTXZ1K1BCZnAyenJGdTJqWVRkMjZkVGo3dkFBRE1xWXdnRUl1ZS9UVS9ubU9CdmwwK1Yyeld0cG00Yyt0MDhua0hBR0JPWlFTQldQVHNwL254bk52YjI4VWpiSkxQRjV2bDg1U0dqeFNlVmo3M0FBRE1xWXdnRUl1ZTd0N2UzbFkyTmZieG5HNmNZOTJZcDNHWmZ3Q0FkU29qQ01TaXA3djcrL3ZQdWJxNnVoTCtkT1FjMjY1dDd4OU96L3dEQUt4VEdVRWdGajNkTkx0L25wK2ZGNCt3aTNOc3U3YTlmemc5OHc4QXNFNWxCSUZZOUhUVDdQNmhPK2ZZZHZuOHBHSHZuM0hrcndFQUFITXFJd2pFb21lMzlGR3Z2RXREOTg5K25HUGJtWjh5ZUIwQUFOYXBqQ0FRaTU3ZC92bm5uODg1U251MXNCL24ySGJtcHd4ZUJ3Q0FkU29qQ01TaVo3ZnI2K3ZQT1pyTlpvdXYwa1hhTzhrNXRwMzVLWVBYQVFCZ25jb0lBckhvMmU3WHIxK2Y4NU0yZ1U2QkJ0M1pPMm0zNWZ5a3dYaThEZ0FBNjFSR0VJaEZ6M1o1Z1BIdDI3ZkZWOW1sN2RibTlrNXFsODhSNC9FNkFBQ3NVeGxCSUJZOTI1MmZuMy9PVHdvMTZNYXR6YnN6UjJYd09nQUFyRk1aUVNBV1BkdVpuLzIwZGY2azRkYm1tK1h6eEhpOERnQUE2MVJHRUloRnozYm1aejg2Zi9abnJzcmdkUUFBV0tjeWdrQXNlcll6UDkzby9EbGNQbCtNeCtzQUFMQk9aUVNCV1BSc1ozNjYwZmx6dUhSM3VlV2N2YjYrTHI3S3FUbDNBUURXcVl3Z0VJdWU3Y3pQZGpwL2puZDdlL3M1Yis0ME41NzgvQVVBWUU1bEJJRlk5R3huZnJiVCtYTzgxUFdUejU4dW9ISGtyd0VBQUhNcUl3akVvbWM3ODdOcVU4ZlBjdWo4T1V6cS9Gbk9vUzZnY2VUbk1RQUFjeW9qQ01TaVo3TzN0emZ6MDlEVzhiTWNIRTRYMFBqeStRY0FZRTVsQklGWTlHeDJmMy8vT1RkWFYxZUxyMDdQcnE2Zk5IVCtIRThYMExqeTh4a0FnRG1WRVFUeDhQQmcwYk5CNnY3Sjc4NzAvUHk4ZUdSNk5uWDkwQzlkUU9QSzV4NEFnRG1WRVFUdytQaTRzdUJKZHlMaWYzVC96UDMrL1h2bFBGa09IVC9EMEFVMG52ejhCZ0JnVG1VRUFlUmRIVGMzTngvdjcrK0xSMGp5K1psSzk4L1QwOVBPajNveHJHWVhVQXBxT1kxODNnRUFtRk1aUVFENVlrZjRzeTZmbnlsb2ZoeXdiYVNna09IZDNkMTl6bm42R09LLy8vNjdlSVFoNWVjNkFBQnpLaU1Jd0dKbnUranowNlhiWnpuUzk2WHY1elJTSVB2MTY5ZlArVS9kYUdsUEtvYVZuL01BQU15cGpDQUFpNTN0SXMvUHRtNGZId2NzdzMvLy9iZnlNY1FVQ0hsZGhwWC9IZ0FBTUtjeWdnQXNkcmJMNTJjcUkyMEVMbVFveDgrZlAxZnVSSmMrR3Nadzh0OEZBQURtVkVZUWdNWE9kdm44UkIyNmZjcjM0OGVQbGRjczNSa3MzWm1OL3VYekRBREFuTW9JQXJEWTJTNmZuNGhEdDA4OTBpMzM4OWZ1eTVjdkg3OSsvVm84U2wveU9RWUFZRTVsQkFGWTdHeG5maWhKYzkrbTgvUHpqK2ZuNThXajlDR2ZYd0FBNWxSR0VJREZ6bmJtaDlLa3dDY0ZQL201bVVhNlM5dmo0K1BpdXpoVVBxY0FBTXlwaktCeXpXNEMxcGtmU3BRKytwVStBcGFmbjh1UjlndmljUGxjQWdBd3B6S0NpcVZPZ1h5aGsvYUNZVjArUjFDU3RBbDAyZ3c2UDBlWHc4ZkNEcGZQSXdBQWN5b2pxTmpGeGNYbklzZGRvRGF6R0tRRzZmZjM2OWV2bitkcXVtMzg2K3ZyNGxIMjRYY2VBR0NkeWdncWxpOXloRCtiNWZNRUpYdDdlL3V6RDlEeWZFMGg3My8vL2JkNGxLNzh6Z01BckZNWlFjVXNjcm94VDlRazdRMlVieEI5ZFhYMTU2TmlkT2QzSGdCZ25jb0lLbWFSMDQxNW9qWXZMeTkvUGdLMlBHL1RSenpwenU4OEFNQTZsUkZVekNLbkcvTkVqWnFidk4vZDNTMGVZWmQ4M2dBQW1GTVpRY1VzY3JveFQ5VHE3Ny8vWGpsLzB4M0RmQnhzdDN6T0FBQ1lVeGxCeFN4eXVqRlAxT3oyOW5ibEhQN3k1Y3VmZllMWUxKOHZBQURtVkVaUU1ZdWNic3dUdFh0NGVGZzVqOU1tMGMvUHo0dEhhY3JuQ2dDQU9aVVJWTXdpcHh2elJBUXA4TW52RHBiRzkrL2ZQMzcrL0xuNERwYnlPUUlBWUU1bEJCV3p5T25HUEJGRit1aFgrZ2hZZms2bmNYRnhJUXpLNUhNREFNQ2N5Z2dxbFc0VGJaSFRqWGtpa3JRSmROb01Pait2ODVIQ29COC9maXkrZTVyeStRQUFZRTVsQkpWS2l6eUxuRzdPenM0KzUwbUhCRkc4dnI1KzNOL2ZmMXhlWHE1Y0M1WWo3UnMwVmZrOEFBQXdwektDU3VVTG5QVFJEemJMNzZLVUZzdnY3KytMUnlDR1RXSFFWRU9nZkE0QUFKaFRHVUZsMGtlL21vczh0bnQ3ZTF2WlBGZGdSbFFwM0x5NXVWbTVQa3d4Qk1xZlB3QUFjeW9qcUV6em8xOFdPTjA4UFQxOXpsZjZTQmhFMVJZQ3BRNmhLY21mT3dBQWN5b2pxRXkrc0VsRE4wdDMrYnhCWkNrRXVyNisvanpmMDZiUlUrSjNIUUJnbmNvSUttTmhjN2g4TStncGI1RExOS1N1bi94Nk1hVXVvUHg1QXdBd3B6S0N5bGpZSEM1dGtwdlBYeHBwUDZYMDhUQ0lLTDlkL0pTNmdQTGZjUUFBNWxSR1VCa0xtOE8xN1kyU2hqMkJpS3JaQlRRVlUzek9BQUM3cUl5Z01oWTJ4MGtoME4zZDNjbzhta3NpbStKNVBzWG5EQUN3aThvSUttTmgweDk3QWpFRlU3eG1UUEU1QXdEc29qS0N5bGpZOUtlNUo1QVFpSWp5YzN3cXB2aWNBUUIyVVJsQlpTeHMrdE8ySjVBUWlFanNBZVE2Q1FDd3BES0N5bGpZOUVzSVJGVHAzTDY2dXZvOHI2K3ZyeGVQeEpmL1BnTUFNS2N5Z2txOHZMejh1V1c1aFUzL050MGR6QzNpcVZuK0VjZTAzOVd2WDc4V2o4U1gveDREQURDbk1vSktYRnhjckN4cUxHejZ0U2tFY290NGFwT0NucTlmdjY2Y3g3UFpiUEhvTk9UUEhRQ0FPWlVSVkNKZjBLVHgvZnYzeFNQMEpZVkFiaEYvbkxaT3RXT0hUcXp1ZnZ6NHNYSjN1elJTc0RrMStmTUhBR0JPWlFTVnNLQTVMYmVJUDB4YnAxb2ZReWZXYnVrOGJjN1oxRHAvbHZKNUFBQmdUbVVFbGJDZ09hM21MZUx6a1RwUy92Nzc3ejhkUTFPWE9uUDY3dmhwR3pyZU52djkrL2ZhK1pvK0FqYWxQWCthOHJrQUFHQk9aUVNWc0tBNXJVMTdBdVhqeTVjdkgvLysrKy9pYjB4UHMrT2tPUmhXQ243U2EzQitmcjR5NyttOG5YbzRtYzhIQUFCektpT29oQVhONlczYUU2ZzVVdmZGMjl2YjRtL0Z0VSszajQ2ZFlhVFE1NTkvL3ZselhqYURuelNFUDNQNW5BQUFNS2N5Z2twWTBKUWpCU0hOeFhmYWJ5VnlFTFN0MjBmb01LelgxOWMvZS9rMDcreVZEeHRscjhybkJnQ0FPWlVSVk1LQ3Bpd3A2R243aUZpa0lLakxIYjF1YjIrckNuL1NjN3Erdmk0K0xQbjU4K2VmTHFwZG0yb0xmdHJsY3dRQXdKektDQ3BoUVZPbXRGQlBnVUwrK3FRUklRaHFDeDlxNy9aWlBxY1M3eXFXT24zU09iTXI5RWw3VDZYdlMyRVc3Zkw1QWdCZ1RtVUVoV3Zyd3FBOG00S2d0cEZlenhMRG9WMGRQN1YxKzdScGUxNmxqeFJXZmZ2MjdlUHg4Zkhqdi8vK1d6d1R0c25uRHdDQU9aVVJGSzZ0RzRCeVBUOC9mMXhkWGEyOVptMmp0QzZoYlowblVhUTViM3QrcFkyMHgxVGE2RG1kVCt3dm4wc0FBT1pVUmxDNGZDR1RocnNyMWFHR0lLakxIajlwUkRybjBtYktiYyt4aEpFQ3VEVFhxWnVNNCtUekNnREFuTW9JQ21jaEU4OCs0ZEJZQTJybVhBWUFXS2N5Z3NKWnlNUlZhaENreTR6YTVlY3pBQUJ6S2lNb25JVk1mR01IUVFJZm9zblBid0FBNWxSR1VEZ0xHWUQ5dUc0Q0FLeFRHVUhoTEdRQTlwTmZOOU5HNTA5UFQ0dEhBQUNteTRvU0NwY3ZaQURZclhtNy8vUm5BSUNwczZLRXd1V0xHQUIyYTd2ZHYwNGdBR0RxckNpaGNQa0NCb0R1ZEFJQkFQeVBGU1VVNnVYbDVjOS9zYzRYTHdCMHB4TUlBT0IvckNpaFVCY1hGMnNMRndEMnB4TUlBRUFBQk1YS0Z5dHBmUC8rZmZFSUFQdG82d1JLUXpjUUFEQWxBaUFvVkw1SUFlQjR6VTZnNWhBSUFRQ1JXVmxDb2ZKRkNRREgyOVFKbEE4ZkR3TUFvckt5aEVMbEN4SUErclV0REFJQWlFaVZBNFd5R0FFNG5mempZUUFBRWFseW9EQnUvdzV3ZXN1T0lCdnVBd0JSV1ZsQ1lkeitIUUFBZ0w1WldVSmhtdUdQL3hvTkFBREFzUVJBVUpnOC9BRUFBSUErV0dGQ1lRUkFBQUFBOU0wS0V3cmpUalFBQUFEMHpRb1RDdU5PTkFBQUFQUk5BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSWdKTjZlWG41dUw2Ky9uaDZlbHA4QlFBQUdKb0FDSUNUdXJpNCtQanJyNzgrenM3T0ZsOEJBQUNHSmdBQzRLUlMrTE1jQUFEQWFhaStBVGdwQVJBQUFKeWU2aHVBazhvRG9NdkxTM3NCQVFEQUNRaUFBRGlwdFBkUEhnTFpDd2dBQUlZbkFBTGdwR2F6MlVvQWxBWUFBREFzVlRjQW94QUFBUURBNmFpNkFSaUZBQWdBQUU1SDFRM0FLQVJBQUFCd09xcHVBRVloQUFJQWdOTlJkUU13Q2dFUUFBQ2NqcW9iZ0ZIa3Q0Ti9lSGhZZkJVQUFCaUNBQWlBVWR6ZjM2OTBBYVhid3dNQUFNTVFBQUV3aXZmMzk0K2JtNXZQQUNoMUJBRUFBTU1RQUFFd21oUUM1VjFBQUFEQU1GVGJBSXhLQUFRQUFNTlRiUU13cWp3QXVyeTgvSGg2ZWxvOEFnQUE5RVVBQk1DbzhydUJwV0V2SUFBQTZKOEFDSUJScGJ0LzVRRlFHZ0FBUUw5VTJRQVVRUUFFQUFERFVXVURVSVE4QUxJUEVBQUE5RXNBQkVBUjhyMkE3QU1FQUFEOUVnQUJVSVRtWGtBQUFFQi9WTmdBRkVNQUJBQUF3MUJoQTFBTUFSQUFBQXhEaFExQU1RUkFBQUF3REJVMkFNVVFBQUVBd0RCVTJBQVVJdytBTGk4djNRNGVBQUI2SWdBQ29CajVyZURUY0R0NEFBRG9od0FJZ0dJMGJ3V2ZCZ0FBY0R5Vk5RREZFUUFCQUVDL1ZOWUFGRWNBQkFBQS9WSlpBMUFjQVJBQUFQUkxaUTFBY1FSQUFBRFFMNVUxQU1YSkF5QzNnd2NBZ09NSmdBQW9qdHZCQXdCQXZ3UkFBQlRIN2VBQkFLQmZLbW9BaWlVQUFnQ0FmcWlvQVNpV0FBZ0FBUHFob2dhZ1dBSWdBQURvaDRvYWdHSUpnQUFBb0I4cWFnQ0tKUUFDQUlCK3FLZ0JLRlllQUYxZVhuNDhQVDB0SGdFQUFQWWhBQUtnV0dkblp5c2hVUG96QUFDd1B3RVFBTVdheldZckFWQWFBQURBL2xUU0FCUlBBQVFBQU1kUlNRTlFQQUVRQUFBY1J5VU5RUEVFUUFBQWNCeVZOQURGRXdBQkFNQnhWTklBRkU4QUJBQUF4MUZKQTFBOEFSQUFBQnhISlExQThRUkFBQUJ3SEpVMEFNVVRBQUVBd0hGVTBnQVVUd0FFQUFESFVVa0RVTHl6czdQUEFPamg0V0h4VlFBQW9Dc0JFQURGdTcrL1gra0NtczFtaTBjQUFJQXVCRUFBRk8vOS9mM2o1dWJtTXdCS0hVRUFBRUIzQWlBQXFwQkNvTHdMQ0FBQTZFNEZEVUExQkVBQUFIQVlGVFFBMVJBQUFRREFZVlRRQUZSREFBUUFBSWRSUVFOUURRRVFBQUFjUmdVTlFEVUVRQUFBY0JnVk5BRFZFQUFCQU1CaFZOQUFWRU1BQkFBQWgxRkJBMUFOQVJBQUFCeEdCUTFBTlFSQUFBQndHQlUwQU5VUUFBRUF3R0ZVMEFCVVF3QUVBQUNIVVVFRFVBMEJFQUFBSEVZRkRVQTFCRUFBQUhBWUZUUUExY2dEb012THk0K25wNmZGSXdBQXdEWUNJQUNxY1haMnRoSUNwVDhEQUFDN0NZQUFxTVpzTmxzSmdOSUFBQUIyVXprRFVKMjhFK2oxOVhYeFZRQUFZQk1CRUFEVnViMjkvUXlBdm4zN3R2Z3FBQUN3aVFBSWdPcWtycDlsQUpRR0FBQ3duYW9aZ0NvSmdBQUFvRHRWTXdCVkVnQUJBRUIzcW1ZQXFpUUFBZ0NBN2xUTkFGUkpBQVFBQU4ycG1nR29rZ0FJQUFDNlV6VURVQ1VCRUFBQWRLZHFCcUJLQWlBQUFPaE8xUXhBbFFSQUFBRFFuYW9aZ0NvSmdBQUFvRHRWTXdCVkVnQUJBRUIzcW1ZQXFpUUFBZ0NBN2xUTkFGUkpBQVFBQU4ycG1nR29rZ0FJQUFDNlV6VURVQ1VCRUFBQWRLZHFCcUJLQWlBQUFPaE8xUXhBbFFSQUFBRFFuYW9aZ0NvSmdBQUFvRHRWTXdCVkVnQUJBRUIzcW1ZQXFpUUFBZ0NBN2xUTkFGUkpBQVFBQU4ycG1nR29rZ0FJQUFDNlV6VURVQ1VCRUFBQWRLZHFCcUJLQWlBQUFPaE8xUXhBbFFSQUFBRFFuYW9aZ0NvSmdBQUFvRHRWTXdCVkVnQUJBRUIzcW1ZQXFpUUFBZ0NBN2xUTkFGUkpBQVFBQU4ycG1nR29rZ0FJQUFDNlV6VURVQ1VCRUFBQWRLZHFCcUJLQWlBQUFPaE8xUXhBbFFSQUFBRFFuYW9aZ0NxZG5aMTlCa0FQRHcrTHJ3SUFBRzBFUUFCVTZmNytmcVVMYURhYkxSNEJBQUNhQkVBQVZPbjkvZjNqNXVibU13QktIVUVBQUVBN0FSQUExVW9oVU40RkJLVjRmbjcrdUx5OC9ITmVwdjk5ZW5wYVBBSUFNQTdWTWdCVkV3QlJtcmUzdDVVOXF0TFFvUVlBakUyMURFRFY4a1Uyak9ubDVlV3o2K2ZRa2Y3KzQrUGo0bDlrSDZuTGFwLzUxNWtGd05Tb2xnR29XcjZnZ3pGZFhGeXNuSS9IREhlMjIwK2FyN1o1M0RWMFpnRXdKYXBsQUtxV0wrYmdsUHJvK05rMWRLbXM2M1BldjN6NTh2bHZtZXYrYmV2S010OEFwNmRhQnFCcStZSUNUbWxieDg4aG1uZTJXdzVkS3F1MnpYdWF2elNQWFRYL0xYUGRueTVkV2VZYjRMUlV5d0JVTFY5TXdLbjgvdjE3NWR6THgvZnYzeGZmdGI4VVh0emQzYTM5bTJsajZhbmIxZmx6ZTN1N1YvaVR0UDA3SE8vUWorUWRNblFTQVhUblhRNkFxdVVMQVRpRnRFbnorZm41NE9kZTZvNVkvdnZwLzg5bXM4VWowN0h0STBScEhHdUlmM1BLVWpCNmYzKy9NcCtwSzZ2UC9iRzZEc0VRd0RydmNnQlVMUy80WVdodG5RMXBnVHVFNWtJNmpTbHREcjJyaStTWVRxdWx0bitYL2FYZ0o3MWV6V0IwK1pHOEZGN21Yei9WOEJFemdGWGU1UUNvV2w3c3cxRGFQbjUwaWc2RDUrZm5qNnVycTVXZnUvelpFVHVDZG5YOHBORkg4TFBVOXUrem43YU91RFQyM1kvcEVQc0VTMUYvWndEMjRWME9nS3JsQlQ0TXBma1JsbE1zYnBmU3oway9MLy81eS9INitycjRydnB0NnZnWmNxN3pqOWt0QjkyMXZXYW5DRVozYVh0ZGx5UFM3d3pBdnJ6TEFWQzF2TENIb2VUbjJTR2JEUjhyL2J5MnphRy9mZnUyK0k2NnBTNlM1bk5MWStpNWJ1c2dzVzlNTjgzd3A0VGdaMmxiWjFDVTN4bUFRNmlXQWFoYVh0akRFSm9MM2JHbERvYjhlTkx4MVM3dnNEcGxkOVZTYzhOdHRtditUb3p4bXUwajR1OE13Q0ZVeXdCVUxTL3FvUytiYmptZU9sSkswT3dHcW5Wdms3WjVIaU5JdUw2K1hqa0dOcXN0L0ZtSzhqc0RjQXp2Y0FCVUxTL29vUzl0dDYwdWFhR2JqaU1kei9MWWF1MWFhWnZuTVpUVzVWV3FXc09mSk1ydkRNQXh2TU1CVUxWOE1RSjl5YytyTk1iWTkyZVhkRHo1TVphMEIwdFgrZkduMGVjZHZ2Yng4K2ZQbGVOZ1hYT2ZwcHJDbjZVSXZ6TUF4L0FPQjBEVjhtSWUrbEJUTjBqemJrZTFkVFhreHo2bVpqREF1dnlqZWpXR1AwdTEvODRBSE1NN0hBQlZ5d3Q1T0Zhenk2R1VQWDgyYWJ2YlVRM2E5djRaVzBuSFVwcTN0N2ZQdVRrL1A2ODIvRWxxL1owQjZJTXJIZ0JWVThUVHA3SHZSbldvMm40UFN0bjdKNWNmUy9wSUdQL3ovUHo4T1RkcHcrd0k4dGNiWUNwYzhRQ29taUtlUHVYblUwMWREdm5IV21xNHhYVSt6Mm1NdGZkUExqK2UxSjFVYzVkTDMvS1BSZDdmM3krK1dyZjg5UWFZQ2xjOEFLcW1pS2RQdFo1UGFWR2VIM3ZwdDdqT2o3VVUrVEdsVVVJb1ZZcHYzNzU5enNzLy8veXorR3JkOHRjYVlDcGM4UUNvbWlLZXZ0UjhLL0RVclZMVExhNUxuT2Y4bU5Ld09mQmMydjhuN3pENzlldlg0cEc2NWE4MXdGUzQ0Z0ZRTlVVOGZhaHQ4K2MyS1FUS24wT3AwZ2JRSlI1bmZreWxIZHVZOHU2eXE2dXJ4VmZyNTNVR3BzZ1ZENENxS2VMcFE2MmJQemZWOFB2UTNBQzZGUGt4TFVjTit5a05xZG45a3phRGppSi9uUUdtd2hVUGdLb3A0dWxEZmg3VnZQbHYvanhLbFI5alNmdnM1TWVWajlMM1V4cFMxTzZmSkgrTkFhYkNGUStBcWluaTZVT1U4NmlHNTFIcU1lYkhWZE4rU2tQS3U3VWlkZjhreStlVkJzQlV1T0lCVURWRlBIMkljaDdWOER4S1BjYjh1R3JaVDJsb2tlY2c4bk1EMk1RVkQ0Q3FLZUxwUTVUenFJYm5VZW94Tm8rcitlY3Bpam9ITmQveEQrQVlybmdBVkUwUlR4K2luRWMxUEk4U2o3SHR6bVROUDA5UnhEbUljTWMvZ0VOTjl4ME5nQkR5UWg0T0ZlVThxdUY1bEhpTWJYY21hLzU1aWlMT1FaUTcvZ0VjWXJydmFBQ0VFSEdCd3VsRk9ZOXFlQjRsSG1OK1RNczdrK1ZmdTd5OC9IaDZldnJ6OVNuSjV5Q0svRGtKZjRDcFVTMERVTFc4bUlkRFJUbVBhbmdlSlI1ajJ6R2x1My9sWDUvaTNjRHk1eDlGeE9jRTBKVXJId0JWVTh6VGh5am5VUTNQSXc5V1hsOWZGMThkVjl1OHpXYXpsYS9uajAxRnRPZHU4MmRnNmx6NUFLaWFZcDQrUkRtUGFuZ2VhZFBkNVRGKysvWnQ4ZFZ4cE0yZjA4ZTd0czNidHNlaWkvVGNiZjRNOFAvWDljWC9Ba0NWOG9JZURoWGxQS3JoZWFTdW4vdzRVMWZHV0pxYlA2ZlJ0TzJ4NkNJOWQ1cy9BL3ovZFgzeHZ3QlFwVWdMRk1aVCszblVwWk9sSkhkM2R5dkhtajV1TlliOEdOSlliZ0NkeXg4dlJmNTZEN2xCZFluUC9WRDVjeEgrQUZPbFdnYWdhbmxSRDRlcS9UenEwc2xTa3JRQVQxMFl5Mk1kYTRQbEx2UFY1WHRPcmZsNkR6Vi8rYytvWGFUbkFuQW9WMEFBcXFhb3B3KzFuMGY1OGFmUjFzbFNtaFFDNWNjOHhxM1c4NSsvU1pmdk9aVzJUcTgwaG5xOTg1OVJ1MGpQQmVCUXJvQUFWRTFSVHg5cVA0OXFQZjZ4YjdXZS8reE51bnpQcVp5NjArdFVQMmRvYjI5dllaNEx3REZjQVFHb21xS2VQdFIrSHRWNi9HMjNXajlsSjFEK2N6ZnA4ajFETzNYbnoxTCtzMnJVTm05WFYxZUxSd0dtcDg2ck9RQXM1SVU5SEtyMjg2ajI0eCtyRXlqL21admt4emJXSGN2RzJ1TXBmKzQvZi81Y2ZMVWViZlAyL1B5OGVCUmdlbFRMQUZTcHRyc2VVYmJhejZQYWo3K3RFeWg5Ykdjbysxdy83dS92Vjc3dmxIY3NHNnZ6WituMjl2YnpaNmJqcU8zdVdmbWNwWkUySGdlWU10VXlBRldxN2E1SGxLMzI4NmoyNDE5cWRnTGxJd1VReDRZdm13S1ZORFlaNDQ1bGh4em5FRklJZDM1Ky92bXphOWhjUEVrZklXek9Id0FDSUFBcWxSZjJhZFN5TUtGTStibFVvOXFQZjZuWmJkTTJYbDlmRjkrOXY3YmdPSTFkMTQvbUhjdUdkdWh4RGlHRktma3gvUGZmZjR0SHlwUStwcGNmNzNJQUlBQUNvRklLZS9wVSsvbFUrL0huMGg0dGFhUGUvRGtOTmZZSlZQSy9ON1Q4WjZVeGRzRDk5ZXZYejJNNTlhMzY5L0g0K0xneWI4dmhQeEFBekttYUFhaU9XL3JTdDlyUHA5cVBmNWZVOVpNL3h6N0d2bzc1dS9zbzhmcVdkOVhjM2QwdHZscWV2SE1xZld5dnRqMkxBSVlXczBvQUlMVDBYM09YUmI1Yit0S0g1Zm1VUmsybXRCbDYvbnQvN0Rpa0l5VC8rME5vZXkxTHViNmxPNEF0anlrZFkybmE5dndSL2dDc0V3QUJVSlhtL2c1dTZVc2Y4bk9xSmpaRFA1Mmg1N2p0dFN6bCtwYkNsSHlEN21QMlllcWJQWDhBdW5OMUJLQWF6ZjBkM05LWHZ1VG5WZW9rS0htZmsxeCszR25ZNjJRNCtUejNhZE1kdjBxN3ZuMzc5dTN6Mk5ML0g5TzJ1NlNsNGZjQW9KMEFDSUJxMk4rQm9UUnZQMzZLVzMzM0lUOW1ocFdmSTZucnBDKzFkSEUxOTJFYXN3dW9iYzY4SndEc3Bsb0FvQnA1c2EvUXAwK3oyV3psL0VxakJyVWRiODJhdDZoUDU4d3hObld4bE55OWtuY0JYVjlmLzltdytsVGE5dmxaanR2YlcrOEpBQjJvRmdDb2dqdC9jUXExbldPMUhXL05Vc0NRdWt5VzgzMXNsMWlOK3pjMXU0RFNIS1JnYk9nZ2FOTStQMmtBMEoyckpnQlZ5UC9ydXp0L01aUjhZVm5EWGtENThUSzhGQUlkTytjMWR2N2swbkUyanowRlFjZDJSRFh0MnVjbkRYdjlBT3hIdFFCQThkSi9YYzczMzNEbkw0YVNuMmRwSE52bE1hUm1Wd1NuY2V5YzE5ajUwNVN1d1NtSXo1OUQzNzhyOXZrQjZKOXFBWURpNmY3aFZHclpDNmg1Ujd5MEJ3cW5rYy83dm43Ly9yM3k5OU9vdVlzbEJVSE41NVBHb2QxemFYNVNzTm5XK1dPZkg0RGpDWUFBS0Y3K1g0SjEvM0FLK2NLenRJK0NwWS9HbkorZmZ4NmZyb2pUeXMrTnJqWjluQ21DWnRmY0VBT0FmcmlpQWxBMEgzTmhEQ1YvRkt6NTBSamh6Mm5sYzkvVnBvOHpSZERXTmRmbnNNOFBRSDlVMGdBVXF4bisrSmdMcDlLMnFFMGRISDF2ZEx1UHRpNFNpK1BUeStkL1YyZFkyMnRXV2tkWjM0NE5oS0xQRDhDWUJFQUFGS2taL3ZpWUMyTm8rM2hMdWhYMkdDSnNIaHhCZms3czZnenptZ0ZRRXU5Q0FCUmowejRad2gvR3NxbWI0UlJkQ3B0K0g1WkQ5ODg0bXVkRW0wMnZuZGNNZ0RFSmdBQW94cVo5TW9RL2pDMTEvVFRQemFIM0JXcjdmVmdPeHJYcnRkRDVBMENKdkJzQlVJem1nc2x0ZnlsSjZ0NW9ucVBOa2JvKzBpM2FEN0dyNDJjNWRKR01MMzg5Y2pwL0FDaVpBQWlBSXJ5OXZhMHNtS0JVYmZzQ05VZmF3MnBmT243cXNlbTEwZmtEUU1tOEt3RXd1dCsvZi8vcDlsa3VtSzZ1cmhhUFFIbU92Y3ZSdmtQM1NIbnkxeWZSK1FOQURRUkFBSXdtQlQrcFUrTDgvSHhsMGZUOC9MejREcWhIK3JoaTJyTXFQNWNQSFpTdCtWcnAvQUdnQnQ2ZEFCaEZDbm1hd1U4YWFRRU50VW9oME4zZDNkcDV2Yy9RTlZLKy9QVnEvamtOcnlFQUpSSUFBWEJTNmRiWmJSK1ZTRjhiK3JiYUFIMW9Yci95QVFDbDhpNEZ3TW1rajN1MUxaZ0VQMEJOMnE1anl3RUFwZkl1QmNDZ05uWDhMRWZmSDVYb2VpdnRLUTNkVmRDZmRJMXArejFMdzBlL0FDaVpBQWlBd1d6cStFbjcvS1M5VW9hdzdWYmFVeDdwMXVYQThaclhHQUNvaFhjdEFIcXh2S1BYcnU2YmRMdjN0dkJINTQ3UkhPbDhlSHg4WEp3aE1JNWQxeVlBcUlWM0xRQ09zdWxXN3ZubzB2RXpST2NPSDM4NmY5cm1wcWFSemk4WXk2NXJFd0RVd3JzV0FIdmJ0YTlQQ2NOZUhIT3oyYXgxZm1vYjZYbkFLZXpialFnQXRmQ3VCY0JlTnUzcjArZUExREdXT3NlVzUwVHFaQnBxM3lqSWJldjRXV3I3R2dDVXpyc1dBSjJsL1ZqeWhjOFFRK2NPU3lud1NYdEdwZlBpN3U1dThWVVl4dlB6ODliT24vemFsSDhkQUdyaFhRdUF6cjU4K2JLeThHa2IwTGUzdDdmRi80TmhwSE9zYmIrc1RicDhEd0NVeHJzV0FKMmwvd0tlTDN5YVEvY09VSU11Ky94c3U1N2wzd2NBdGZDdUJRREFwR3piNXlkOUZHeVgvUHNCb0JiZXRRQUFtSXpmdjMrdkJEajVTQnVQZDVIL0hRQ29oWGN0QUFCQ2UzcDYydmlScjBNYysvY0JZQXpldFFBQUNPdmg0V0Vsc01sSDE0NmZwbnpEYUFDb2hYY3RBQUJDZW54OFhBbDhsaU4xQTZXdW9FUGtIeUU3UHo5ZmZCVUF5aWNBQWdBZ3BIeXo1OVR0OC83K3ZuamtjUC8rKysvbnYvbjE2OWZGVndHZ2ZBSWdBQURDMkxUZlR4L2hUNUozRlcyN1ZUd0FsRVlBQkFCQUNOdjIrK25ML2YzOTU3LzU0OGVQeFZjQm9Id0NJQUFBcXZYeThyTHhEbC9MMFdlblR2b28yZkxmVFQ4YkFHb2hBQUlBb0ZyNVBqL0wwZGQrUDIzU3hzL0xuL1AyOXJiNEtnQ1VUd0FFQUVBMWRuWDgzTjdlRGhMK3RQMWNBS2lKZHk0QUFLclIxdkd6SEVOcSs3a0FVQlB2WEFBQUZHOVg1OC9RZCtRNjljOERnTDRKZ0FBQUtOS3UwT2VVeHZxNUFOQVg3MkFBQUJScDI4ZTlUdDJCay85c0FLaVJkekFBQUlxd3ErTW5qYkUrZXBVZkF3RFV5RHNZQUFCRkdHdUQ1eTVLT2hZQU9JUjNNQUFBUmpYMkJzOWQ1TWNEQURYeURnWUF3S2hxdU1WNnljY0dBRjE0QndNQTRLUnE2UGhaYWp0V0FLaVJkekFBQUU2cTVMMSttbXJvVGdLQUxyeURBUUF3dUpMdjhMVk5EY2NJQUYwSWdBQUFHTnltcnAvUzFYU3NBTENOZHpJQUFIcFhhOGRQVTM2OEFGQXo3MlFBQVBTdXBuMSt0cW4xdUFHZ3lUc1pBQUM5eTRPVGZOUzJoMDUrN0FCUU0rOWtBQUQwSnNwdDA5MytIWUJvdkpNQkFOQ2JLTGROZC90M0FLTHhUZ1lBUUcrYW9VbHRIL25hdEhtMTI3OERVRHNCRUFBQXZjbERreHJwL0FFZ0t1OW9BQUQwSmc5T1VpZk4wOVBUNHBFNjVNZWZoczRmQUtJUUFBRUEwSnV6czdPVkFDWDl1U2I1c1FOQUpON1pBQURveld3Mld3bFI4bEZ5UjVDN2ZnRVFuWGMyQUFCNjErd0VXbzVTTzRMcy9RTkFkTjdaQUFEbzNhNU9vUFI0S1ZMM1QvTVk3ZjBEUURRQ0lBQUFCdGZXRWZUNitycDRkRnpON2g4QWlNZzdIQUFBZzJ2ckNMcSt2djU0ZTN0YmZNZnB0ZTM3by9NSGdLZ0VRQUFBbkV6cStza0RsK1U0NVFiUmJjSFBjZ0JBVk43bEFBQTRxZFJsMHhhK25HcUQ2TFlObjlQUS9RTkFaQUlnQUFCTzd2bjUrZVBxNnFvMWlFbGppSTZnVFowL2doOEFwa0FBQkFEQXFFNTF5M2kzZWdkZ3lyenJBUUF3cW0yM2pGK08xTG16NzYzalV3ZlJwcjErMHRENUE4Q1VDSUFBQUNqS3BvNmdOTHJlT3Y3aDRhSDE3eThIQUV5TmR6OEFBSXJTcFNQb21LSHpCNEFwRWdBQkFGQzBUYmVPN3pKdWJtNCszdC9mRi84U0FFeVhBQWdBZ09KdHVuWDh0bkY3ZXl2OEFZQUZBUkFBQUFCQWNBSWdBQUFBZ09BRVFBQUFBQURCQ1lBQUFBQUFnaE1BQVFBQUFBUW5BQUlBQUFBSVRnQUVBQUFBRUp3QUNBQUFBQ0E0QVJBQUFBQkFjQUlnQUFBQWdPQUVRQUFBQUFEQkNZQUFBQUFBZ2hNQUFRQUFBQVFuQUFJQUFBQUlUZ0FFQUFBQUVKd0FDQUFBQUNBNEFSQUFBQUJBY0FJZ0FBQUFnT0FFUUFBQUFBREJDWUFBQUFBQWdoTUFBUUFBQUFRbkFBSUFBQUFJVGdBRUFBQUFFSndBQ0FBQUFDQTRBUkFBQUFCQWNBSWdBQUFBZ09BRVFBQUFBQURCQ1lBQUFBQUFnaE1BQVFBQUFBUW5BQUlBQUFBSVRnQUVBQUFBRU5ySHgvOEJsWTJsVEdIOXNab0FBQUFBU1VWT1JLNUNZSUk9OyZxdW90OyB2ZXJ0ZXg9JnF1b3Q7MSZxdW90OyBwYXJlbnQ9JnF1b3Q7MSZxdW90OyZndDsmIzEwOyAgICAgICAgICAmbHQ7bXhHZW9tZXRyeSB4PSZxdW90OzYxJnF1b3Q7IHk9JnF1b3Q7MTUwJnF1b3Q7IHdpZHRoPSZxdW90Ozk3Ny43OCZxdW90OyBoZWlnaHQ9JnF1b3Q7NTUwJnF1b3Q7IGFzPSZxdW90O2dlb21ldHJ5JnF1b3Q7IC8mZ3Q7JiMxMDsgICAgICAgICZsdDsvbXhDZWxsJmd0OyYjMTA7ICAgICAgJmx0Oy9yb290Jmd0OyYjMTA7ICAgICZsdDsvbXhHcmFwaE1vZGVsJmd0OyYjMTA7ICAmbHQ7L2RpYWdyYW0mZ3Q7JiMxMDsmbHQ7L214ZmlsZSZndDsmIzEwOyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAiQXJjaGl0ZWN0cyBEYXVnaHRlciI7IHNyYzogdXJsKCJkYXRhOmFwcGxpY2F0aW9uL3gtZm9udC10dGY7Y2hhcnNldD11dGYtODtiYXNlNjQsQUFFQUFBQU1BSUFBQXdCQVQxTXZNb1d3VjdJQUFHV0FBQUFBWUdOdFlYRFBCdWdrQUFCbDRBQUFBUnhuWVhOd0FBQUFFQUFBa3ZnQUFBQUlaMng1WnYydjdDMEFBQURNQUFCYi9HaGxZV1FDMGRrc0FBQmZxQUFBQURab2FHVmhDRU1FRmdBQVpWd0FBQUFrYUcxMGVOMnlIMWtBQUYvZ0FBQUZmR3h2WTJHS3hLTWNBQUJjNkFBQUFzQnRZWGh3QWE0QXpBQUFYTWdBQUFBZ2JtRnRaVWFyWlNvQUFHY0VBQUFsRUhCdmMzUUFOSXc1QUFDTUZBQUFCdU53Y21Wd2FBYU1oUUFBWnZ3QUFBQUhBQUlBRnYvNUFId0RoUUFLQUJNQUFEY3lGaFVHQndZaUppY21Fd1lRQnlNME54STFQeW9UQ3lVR0RoVUZDMXNHRDBNSURrTVFDU2dJQVFnS0dRTmhHdjJyTFdlYkFTMXBBQUlBTmdIcUFOY0Mrd0FMQUJjQUFCTTNKelEzRnhVWERnRWpJaWMzSnpRM0Z4VVhEZ0VqSXBJQkFTUVJFQU1aQlNSY0FRRWtFQkVFR0FVa0FsSWNLVk1SRU1jaUF3MVhIU3BURVJESElnUU5BQUFDQURnQXhnS2RBcGdBUXdCUUFBQVRORE15RmpNMUlpNEJKeVkwTno0Qk56WXpOVFEyTXpJV0hRRTNOVE1YTXhRaklpWWpGVEkyTXhVVUJ3NEJCdzRCQndZak5TWWlEZ0VlQVFZSEl5SW5KaWN1QVNRbUlnWUhCaDBCTWpjMk5UUldLaElsQXc0K0lRY09EZ2NoRWpFSkdnZ0lHV1F5SWJCSkhVTUhQSEU4b1Jvb0JnSURCdzg0RmlrakNRd0hEaDhJQndJRk9CWWlBUk1NRWgwT0l6MFNKZ0ZUSFFsWkNnVUNDQkVJQVFZREJuUU9CUVVPYlFxRmhUWUxaaEFVSHd3Q0F3SWdMZzhkWXdJS0dCNGJGQUlCWWhVSUFwY0RBd0lGQjJvSER6TWlBQU1BQ2YvOEFpc0RjQUF0QURVQVJBQUFKUmNWRkFjR0l5Y1dJeWNtSnlZbk5qYzJOelVqSWljbU5TWTBOamMyTnpVekZ6TVZEd0V6RmhRT0JEY21JeUlHQnhjMkpUYzZBVFl6SnpRbUlnWUhCaFVVQVZjU0p4VWdEZ2RPSEFRQ0JRTUpWaElHR0pzMkVRSW9KRUpOTVNISXRnSGpBUlVvTkRFb2ZRb2tHVGtOQm9mK3dTc09HQkVFRVE4WUxoVXZ4NlVMRHdnRXhoUUJBZzRZQmhJSEFnR0ZMZzhYQ2lZNUZ5b002TWNxR2I4SktEWXBHeFVUb1JBT0JsY25iUUVCbFFFREZCQWxLQ29BQlFBZkFBTUIyd0piQUEwQUd3QXBBRFlBU0FBQUpDWTBOell6TWhjV0Z4UUdJeUkzSmlNaUJ4d0JGeFlYRmpjOEFRQW1ORGMyTXpJWEZoY1VCaU1pTnlZaklnY2NBUmNlQVRjMk5BTWlQUUUwRXo0Qk16WXlGQTREQndZQlFSSU1GQ2dhRnk4RUtpZ2ZRaFliSHdZTUVoSWtDUDUvRWd3VUtCb1hMd1FxS0I5Q0Zoc2ZCZ3dTSXdzUVZRK3BaVThFQlFjZk1UdERJRWxJSGpVVUlRd1pMakloWkJjZEJCTVREd0lFSVFVUkFVTWVOUlFoREJrdU1pRmtGeDRERXhNUEJBZ01JZjRJR3draEFRcWZad01WUmx0b2JURnZBQU1BQmYvK0Fxb0RGd0EyQUVNQVVBQUFKUlFqSWljdUFTTUdCd1lqSnlvQkp5WW5KalEzRXlZbkpqVTJOell6TWhjV0ZSUUhGaGNlQVRNK0FqYzJOeklXRGdFSEJnY1dCUlF6TWo0Qk56WTNKd1lIQmhNMk56WTFOelFtSWdZSEJoUUNiaXdkTGhFakZSOGxnR0VnQVFrUkxCWUhBcllzQ3hBSVBDOHZKQk1OYmdOYkxENElPU29VREI0cUNoZ0NFQlUyWjRmOTRoRURMMGNoT1UrbUdDQlZmUzRhRkFFUkt5WU1Ga3djR3dvUkVCUkVBZ1FMRkFjTkJBRWlUQjh4UW1aRE15TVdLSFhUS0V3bEpDQXFHZzhuSnhNRkhocENTME1VRWdFTEN4TXZwaGd3ZkFFNEdsMUhTQm9TQ2lVYk1aQUFBUUFiQWJZQWdBSnJBQWtBQUJNeUZSUUhCZzhCTnpab0dDSUtDVEE0REFKckl5bERGQTRFc0FVQUFRQVBBQTRCR2dOZ0FCZ0FBRGNVSWk0Q0p5WTBQZ0kzTmpNeUZoY09BaFFlQXNjOUxDSVhCdzhRSGlzYU96d0xFUVZlUFIwZ0pTQWlGQ3REVVNkS1IxOXdjeTlxQkEyRmduVjNYVmhZQUFBQkFCb0FBQUZLQXk4QUd3QUFFeWMwTmpNeUZ4WVhGaFFPQWdjR0l5SW1OVDRETkM0Q0hBSVlGRk5CVGhzSERSa2pGekk0QkEwUk5EQWlKVUJWQXZzUUZ3MWRjN2t4TjBOTFRCOUZEQVFxU1VsUGdYaGlWZ0FBQVFBbkFIRUNEZ0s3QURjQUFEYzJOelFuSmljbU5UUTNIZ0VYRmpNeVB3RTJNeFFPQVJVeVBnRXpGQTRDQndZVkZCY1dGQVlITGdNbkRnTWpJaVkxTmxKSEJpUVBFRFVESlM0VEp4WUtDbElJTUJVS0gxb3ZHaDR1TkJjMURCZ2RGaFFRQ2hBVUVoOGpLQm9FRFFtK2dUUVdGd2tKSHlrS0RBRWFEUndDMkJVbGF6b2ZGd3NnSXhVTkNoYzBIaU5DTHc0SkNpa3ZLUW9QTFNvZURBUVNBQUVBQ2dBaUFnSUI5UUFxQUFBVE5ETXlIZ1FWTXhRSEJnY0dCd1lVRmhjV0ZBY0dJeUluTGdFbkppY2lCdzRCTlRRM1BnRTEwaU1SQ2dZR0JRWGNYaG9ZUVFzQ0JBVUtBUlFZRXdNQ0JBUUtEaHNsU3oxa1BDZ0I0aE1OSGlZcUpnY25CZ0VCQVFNT0d5b2ZQeXNNRUJBVk54NUxJd3NXQVJvYkJRUU1DZ0FBQWYvcS82c0FkQUJuQUJJQUFEYytBVElYRmhjY0FRNEVCd1lqSWljd0JoQVNDQTRHQ0JFVUZBa0hHQlVHQmxZTkJBSUVEUUlIRXg4aEhoQUhHQUlBQUFFQUhnRFlBU3NCSmdBT0FBQTNJalUwUGdJM01oY1dGUlFHQjFBeUZ6bFhNQlFPRkFrUzJCb05DZ2dRQlFjS0RnVVFCZ0FCQUJmLy93QnNBRU1BRFFBQUZ5WTFORGMyTWhjeUZoUUdCd1l1RnhrS0N3TVZEd3dKRHdFQ0VoWVRCd0VSSEE0REJRQUFBUUFWQUFBQnV3S3hBQTRBQURNaVBRRTJBVFkzRmhRT0FnY0dKeElQQVh3VEF3VVlQMWt3YnlBS0xBSTZIUVFERmthRW5VdXNBQUFDQUNiLy9nSm5BbWNBRWdBbEFBQTNMZ0UwUGdJM05qTXlGeFlWRkFjR0l5SW5GRE15TmpVME5UUW1JeW9CSXlJSEJnY0dkQ1FxR0NVMUlrdGZnRVEvWDEyYVdWZkFpb3R5WXdzUkJ6VTBNU01nTEJkRlVHNWVXQ0pKWGxWK2xWTlF1WWVPZ3dRRWMzcElRbWRlQUFFQUhBQUlBRzRDTmdBUEFBQTNORDRFTnlZMk1oWVhBdzRCSEFNREJBTUNBUUlVR1JNRUVBSTBFQk5SWm5CbVVCUVdEQVFPL2Y0U0R3QUJBQkFBQ2dJN0Fra0FMZ0FBSlRJVURnVUhCaU1pSmpjMk56WTFOQ2NtSnlJT0FpTTJOelkzTmpJWEhnRVhGQWNHQnhZeVBnSUNHaUVzTnpBTkxUNGtjVU1pRndkTFVYa0ZDeTRzT0RFekpRRWFORjhpS0Fvbk9BV0VKQ01MTDFKY1dxY3lGd29CQXcwUkNoNFZFMEpvbTFjUkR4OEpKQ3drSVI5QUhBc0JCREF5amF3dktBRVhJUjRBQUFFQUN2LytBZkVDTHdBcUFBQUJGQWNHQnhZWEZoUU9BUWNHQndZaUxnRTFQZ0UzTmpRbUl5SUhKeVExTkNjaURnRWpORGMyTnpZeUFlSmdHQkY3R0FVUE1DSkhUeHNoRkJaTGNpRW5KaDVNZ3lNQkx6azdsMUlyRnlvdm1ya0IrenhSRXc4Q09BMGNMMEFlUGhnSUFRd09FMFltTHo0V1BpMk1QUm9JS0JJdkNBb01Kd0FBQWdCSi8vRUNxQUkvQUJvQUpBQUFCU0luTnlNbkl5SW1OVFkzTmpNeUZSUUhOeFFHRHdFR0J3WVZBdzREQnpvQk5qY0JqUlVEQkVsNFNBMGFOVEtmTzBJQjNRMEZ1UTREQlU0V1B6d3dCZ2N3V2pZUERNWUJDQkZFUmRub0hpSURHaGdCRHljeFVEWUI2QjQ1T1RvZkN3WUFBUUFiQUFBQ3hRSjVBRDBBQUJNM05qOEJQZ0V5SGdFR0ZUSStBak15RmhjT0JRY1ZOamMyTWhZWEZoY1VCZ2NHSXlJbU5UUTJNeFV5UGdFMEppY21JZ1lIQmlzQkloc0hCd2tNQkJFZURnRUdSb3VLaWtZS0VRVUVGQzlRZnJWN0lDbE1VRFVpU1FsRk5HS0NIQmdnRkhab1BTUWFLR1kwR1VNakVDSUJJVVU2VW1RTkJBOFdIQTBlSkI0RkRnd1FFQkViSmh5QUF3Y05BZzBjVno5WEdqRU1GQlFrRWlFN1dDZ0tFQkFLR1FBQ0FCYi8vQUpzQXBrQUtBQTBBQUFUUEFFK0FqYzJNeklXRkJVR0J3WVZGQjRCTXo0RE56WTNNaGNXRlFZSEJpTWlKeVluSmlVMElnWUhCZ2NXTWo0Q0Zob3ZQeVZRVUE0U2VGRlJKeUVVRUNrelBDRktTeUlVRXc5alVXbEJOM0F0RlFJVVFFMGxNRUlTSzBwYVFBRWFCUzFXVTBvZFBRb1ZCQlptWlhzb1Zpa05LakV4RkN3Q0hoMGplVU00Rml4cU1nOGlNQ0FvUndNS0tFRUFBQUVBQ2dBQUFtSUNOZ0FpQUFBaEp6UTFORGMrQVRjaUJ3WWlKeTRCTlRRMk54WXlQZ0l6TWhZVUZRWUhCaFFYQVRZRFB4c3lDVFkxd2xza0N3Y0hDeE5HZUltSVJCQVFyaWdJQmpvR0JWeUJOV0FuQXdzQ0JRb0pDUW9GQVE0VkVoQVBBOEcySjBZZ0FBQURBQmIvL3dKK0FsZ0FJQUF3QUVRQUFBQVdCZ2NlQWhVVURnSWlKaWNtTlRRK0FqUW1KeVkwUGdJM05qTXlBUlFYRmpJMk56WTFKaU1pQndZSEJnRW1JeUlIQmdjVUZqTVdNajRDTnpZM05DWUNKeVVDTVRvZ0MwZHNnVjVYSmxrZ0pTQUxCeElnTlVRalJENVYvbjFFTDRSa0psVVlmMWhYVXlZVUFZOHJRSXMvRmdRbUhnVVZNRUJCR3p3S0VBSkVKMWczRnlZcEhrUmxRaUFORVNoUUdURXNKeDBUQ1JjNE9Dc2ZDaEwrU0VNYkVod2NQV2RSSnlZMUhBRlhFMFVZSWg0ZkFRa1NHUTRnR3hFY0FBSUFIZ0FBQWc4Q2FRQWlBREFBQURNdUFUVStBamNtSWdZSEJpSXVBU2NtTlRRM05qYzJNaGNXRnhZVURnSUhCZ01XTXpJM05qUW1KeVluSWdjRzl3MFRZRk1zQkFvaVBTTlFMaTA5R2c1bFVsRVVJeEIxSVF3RUlqa2pUTVV1UkdObEJBUU1IRGlUTkJNQ0doSTVWMVkzQVFrR0RRTVlHeE1QU2tnN0VBUUZKR1VsTkQ1cFlDVlNBWDRVS1JFYUlSTXJCRlVnQUFJQUh3QmxBSndCY1FBSkFCWUFBRGMwTmpJV0ZBWXFBU1luSmpVME5qY2VBUlVVQndZaVRSc2lFaE1RRFI4Z0RoNEpIeEVhQkJWK0R4d1dHUlVLendRTER4UUJCQmNIRlFZQ0FBQUMvK3IvV2dCZ0FXY0FCd0FSQUFBM01oUUdCd1lIRWljbVBnRXlGaGNXSXlKRUhBY01IRWRUSFFZQ0Zoa1VBUUVUSDNWQVNTUlJIUUVid1FRYkVoSU5IZ0FCQUZRQU93R3ZBZE1BR2dBQU56NEJOelkzTWhjV0ZBOEJIZ0VYRmhjT0FRY0dJeTRDSnlaVUlGWXNiQzhOQmdNRTZ3ODRJbEU5QVFZRUNRSWVjRVFkUk9VWlJDSlZHaFlKRWdhekNCa1JLQ2dCRGdnVkV5Y2JEaUlBQUFJQVFBQ0xBY3NCYkFBUkFCOEFBRGNpTlRRMk16WTNOamN5RlJRSElnWUhCaWNISWljM05qYytBVElXRlJRSFhoZ05CRTFCZlVjaUFUbFhLR2szRWg0Q0ZBTlBwRUVNRHhHTEl3TU5EUWNQRGlRSEJ4QUpHWU1CRWlRRENSRU1DUW9aQ3dBQkFESUFNQUdxQWIwQUZBQUFOeVluTkRVME56NEJOeVUzSGdNWERnTjJMUVZIYVVBRy92Z3lNVk5OVENrYVQxZFZNQkVUQkFNZktqMHhGMk14SXh3UkZ4OGZQMEpFQUFBQ0FBci8vQUh5QXJ3QUNRQW9BQUFGSWpRek5qSVdGQVlpQXlJMU5EYzJOelkxTkNjaURnRWpJaVluTmpNeUZ4WVZGQWNHQnhjVkJnRVdKQ1FIRVJJU0VRV2RCSVlwZ21rcmdrUWlDeHNFZm5OVE4yMXdQR0p6R0FKR0FoVWdGUUVWTWdnS1NocFNOUzhaRndzZUR5a1VKa2xEVWl3c0lSY0RBQUlBRy8vN0JCSUNxZ0JHQUZVQUFBRUdJeUluSmpRM05qYzJNekkyTWg0Q0Z4WXpNalVtSnlZbklnNENGUllYRmhjK0FUYzJOell5RmhjR0J3WUhCaUluSWljbUp5WTFORDRDTXpJWEhnRVVCd1lpSnlZaklnY0dCd1lVRnhZeU5qYzJBbEJyVFNRVUZ3NGVZVEJDQkF3WkdSQUhCdzhpVVFsYVVXQlVtblZHSUhOQmIxU1pSWlZvQnc4YkFnS1VkcXBZWFF5S1oxWW1FMUdIcjErSVlUSkFIaTZTUUFRZUlpUkRFd1lFQmhZaUlFNEJWbHNWRnprZFF5SVFBUTBhSUE0aE9sQTVOQWM5YlpaWlh5MFpEUWNURlMxdEF3c1FVVDR5R0EwRUpSNC9JUzFocllKTE9oOWhkQndzY0JRUklDVUxFUWdJQkE0a0FBQUNBQnIvOFFKK0Fyb0FMZ0E0QUFBQk16SVdGUlluTGdFR0Z4NEJGeFlYRGdFaUp3TUZCd1lIQmljbU5UUStCamMyTXg0REZ4NEJKdzRDQnpJM05qY21BaVVjRVI4SE5nOFpFQUVLRnc0a0lCRXRBd0dOL3U4S0hTUUdFeUFxS3k4cUlnNEZCUW9vS3k4aElCc0pKT3dJT0NJTVJHTVpGeThCYmdZVEtBRUJBZ0VGSFVna1dTY1ZIQUVCS1VNcWN5MEtDQXdJQW5CemZuSmJLUjhMRnhoTldGb2xEZ0xZUFlCSEhpZ0xDY2tBQUFNQUh2LzVBc1FDcUFBaEFDc0FPd0FBRXpZeUZoY1dGeFlWRkFjR0J4WVhGaFVVQndZSEJpTWlKeVluSmpRM0lpWTFOQk0rQWpVMEp5WWlCeE1qSWc4Qk1qYzJOelkwTGdJbkprRktoR2MwYmhvSFRUTmY2Vk11VEZPQmQyWk9PQUlEQ0FjTEVuMmh6bHM4UWRlT2RSbFNDZ3BhZ1ZRbkZCMHROeG9vQXBnUUNnNGZOUXNQTERNaUl3MDNIU2MyT2o0cEpoZEFSSmZQY0FVUkdQMnFDVHRGSUNvWkdoMEJQQkhKS3gwakVpWVpFQWtDQXdBQUFRQVcvLzhDd0FLWkFDWUFBQUVtSXlJSEJnY0dGQmNVRnhZek5qYzJOeklXRlFZSEJpTWlJeUluSmpVMFBnSXpNaGNXQWdwQlQwdEZWeUVNQWtNL1lvWjdJaVlPSFdORWZtWUhCbTlQVkR0bmpWRkZGUm9DSzBBNVNISXBOZzlqTlRFTFhCb1lDQk5XSmtSRlNXMVNsbk5FRXhjQUFBSUFKZ0FHQW44Q2dBQVVBQ0lBQUJNMk16SVhGaFVXRlJRSEJnY0dJeUluRVRNeUZnVW1KeVlqQndZSEVUSTNOamMyYVVwNjMxSWdBWFZybldoRUhCUU9GeHdCMUFsYVEyVVNYMFZHYWJaRUdBSm1HbTRxUVFrSlpHZGhPeWdJQW5BUDBGa3JJQUVDSFA0ak0xcDNLZ0FCQUI0QUFBSktBbjRBSWdBQUFUSVhGUTRCQndZSEJoWVhGaFV5UGdFekZRVVhNajRCTXhRSEJpY0dCQWNURmpNQllXUWhHMTQxbERZUkFnRUVSSzlnTS82QkJtUFBhendNR0JPdy91c3dCQnBHQW5zTk1RUUJBUU1NVURvUUp6VVlDemN3cEJNSkZCSWdEUk1XQkFKK0NBQUJBQ2IvK0FLN0Fub0FPUUFBTnlZMU5EWTNOQzRCTkRZeUhnSVhGak0rQVRjMk1oY2VBUlVVSndRVkZCNEJNekkrQWpNeUZBY0dNd1lIRGdFSEJnOEJCaU1uSWlOZU9DWVRKQkFWS0F3RUFRTUZHa09HUW9Sckh3RUdJZjMxRWdrR09YVjFkamtCQVFNREszRXhaaXRqRUFzTERpVUZCYVlJRWcwaUVqeVZVa1FTQ3hBU0NCTUJGUXNXQXhNY0NSRUZFenRCWFJnVUZ4UVBDUmdZRHdjTUJ3NFh4QXNEQUFBQkFCYi93QUt1QW93QU93QUFCVFVHQndZaklpY21OVFkzTmpjMk16SXpOeklIRGdNVUZqTXlOelkzTmowQklnWUhMZ0VuSmpjK0FqY1dOaGNXRHdFR0ZSY1VGUVlpQWZCZkpWWkJUamc1QlIwOGkwVmFBZ0liTGdSUWpHYzdVRDgyWUQwZUR4N2JFUVVPQVFJdUMvSkNGZ29lRFNBQ1V4TUNIamd4dDBFVkx6azdURkJTcmxFcEFTUUVRbStVbWtRdkhpWVNGSlF1QXdNSEJ3OGZCaU1LQXdJRkFRRWlJajJwbFJRUkR3QUJBQlgvK2dKS0F0c0FMQUFBRXdZVUZ3Y0RKalUwUGdVMU5qYzJGd015TnhFMk16SVhGQjRDRnhZWEZoY0dJeVluSmlJSEJwc0RFMDhrSXlFUUF3WUZCUllLR1FrRzl6SUdNZ3NIQXdNRUFnTUNCeW90Tmk0RFFqQWVQZ0VhSW4xWktBRVFCUk1PSmhrZlVGcFFFQllGRFJmK3hTQUJQQkVCRTAxaWJURm1NSGhLRW5LNUFnTUVBQUFCQUJyLy93QnBBa1lBRFFBQU54UWpJaWNtTkRZM05qVTJNaFZwR0JJWkRBUUNCaDBtRUJFUkc4eUZPSG9IRVJFQUFBRUFDUUFFQWdZQ2RnQWVBQUFCSnpRMk93RVVIZ0VVQmdjR0J3WW5KaWNtSnpRM05qTVdGeFl6TWpjMkFhMERCUXhEQmdJQ0NSVTdMV0pqUzFnTkR4c1dBUjVHbXhvWk1RRkh2UzFGRUZ4ZFFtay9rU0laRFE0c00wVVhFU0E1SlZRREdnQUJBQ3NBQUFKaEF0QUFOUUFBTnpRK0JUYzJOell6TURNVUJnYytBek15RlJRT0JCVWVBeGNXRlJRSEJpc0JJaTRDSnhVR0J3WWlLd1VGQXdNREJBUUpEd2d1RGhFQlFYbHBWaFVqUUdCeFlFQVNVMmR2TG1nUkJ3Y0tNRlJmZUZVQ0VCYzBEd1FRUWwxdmRHOHVaQk1YSnZRWElVMUJLeHNWTXpjNE5TNFJDeVV2TlJzN0p3MEZBaTVBUlJmSUJBVUhBQUVBTndBT0FyUUNyZ0FOQUFBVEp4Y0RCUllVQndZaklpY2xObEFDVUFrQ0R4QVBIU1VKQ3YzbkdRRzErUVA5dGc4RkdBMGFBZ1ZkQUFBQkFCd0FBZ01zQXFvQVBRQUFOeGNVRGdFaUp5STFOQkkrQXpjMk14WVhIZ0VYRXpZek1oNERGeDRCRkFZaUxnWW5OQzRCQmdjR0J3WW5KaWNEQmdNR0J3WjdCQUVYSVFraExBd0pCQWdJRHl0SVREWWtFY2dWQ3lBaUZ4RU5CZzRQRWlBZ0J3Y0tDZ29JQWdJT0hSbzRhZzRYR3hPNEdCUURBUVduU1FZZ0dRRWRHQUZUWWtNZ0lBb1RKS2g0UUF3QlhBODZVMlJ0TkgxQUd4a1pKVHhMVTB3N0R4UWlDQnNwVjg0WkRnOCtBWWN3L3ZJaEZ4a0FBUUFaLy9nQ1lBTE1BQ1FBQUFFUUJ5Y21KeTRCSndZUkZBY0dJaVkwUGdFM05qUW5QZ0VlQVJjV0Z4TStBVE15RlFjQ1lCbEpONEl6WlNvVUJCTXRFZ1VIQXdnQ0ZoZ2VMeXVUamhNTEZoSWpBUUZoL3RBMEJsK3NSSVpDV2Y3MVprWVNDUlV0YWp1YTMwZ1VFaE0vUHRHM0FmSVVEMEFsQUFBQ0FCWUFEZ0tPQWw4QURnQWNBQUEzSmpRMk56WXpNaGNXRlJRR0l5SURGRE15TnpZMU5DY21JeUlIQmk0WUx5bFhnNGxaWkptaTRRcnVkVWxKVjBweFdrVkVxRGFTY1NsVlAwaUdwcDRCTGV4R1JYQnBOekJCUVFBQ0FDYi8vZ0o5QW1ZQUZnQXNBQUFYSnpVK0F6YzJNeklXRnhZVURnSUhCaU1IRkJNVU16SStBemMyTlNZbkppSU9BZ2NHQndaVExRVUdFQ1FrUWE1TGFCazVPVnR5T1daZUJBTXJCaDVMVkZVaVRROW9IekZEV0R3REFRUU1BZ0xwUzNSVU9SRWdIUTBjWkZFN0pnd1U0QXdCWFRJQkJROFlFaXBCUVJJR0JSb3NIUXdRTXdBQUFnQWJBQllDdFFKNkFDQUFRd0FBTnpRK0FqTTJNeklYRmhVVUJ3WVVIZ0lVQnc0QkxnRW5KaWNHQndZbkpnVXlOelkzSnlZOUFUUTJNaDRDRnpZM05qVW1KeVluSmlJaklnY0dCd1lWRkJZYkxGWitVZ3dNZ2twRFJBRWRLeDRCQ3lZTkZnb2JGQ1pQeUg1UkFUSThHVFlWdHdFY0tURXVMUmd6QVFFRkRCaGhMMVFJUGpRcEhSbDI5RUNSY0VRQlRrZDBjbUVGRlJZU0ZCRUZDQWtERHdrVkF5UWFQMnBGUlFVTEk2WUJBZ1VTQ1NBckxnNU9YQndqSkIwOUV3bzZMMU5ET1doWkFBQUNBQzcvOUFLckFvY0FMd0JCQUFBVE5qTXlIZ0VWRkFjT0FRY0dCeFFlQWhjV0Z4NEJGQTRCS3dFaUxnRW5KaWNWRkNzQklpY21OVGMwSnpZWEZnVW5JZ2NHRkJjV0Z4WXlQZ0kzTmpVMGRqZVFXbm85Z0JPaEhEMFVDQjQ4Tlo2bkNCb1FGZ3dVRkg5ZE1IRkNJZ3NWQ2c0RERSZ2pDQUZYUWVJaUNnSUZFZ01QS1VWT0pIRUNValVrS0JnM05nazNDaGNOQlFjUkh4MVdZZ1lWR1FvRlZrQWVTUmJsRkJVZ1ZzbVVjQ2tzQ2hNQk5BNHJFQ2tTQVFnVkhoQXpJQklBQUFFQUQvLy9BbkFDWUFBekFBQStBamNXTXpJM05qYzJOQ2NsSmljbU5UUTNOamMyTng0QkZ4WUhGQWNPQWdjVUhnRVhGaGNXRlJRSEJnY0dJeUl1QVE4ZkVRTUZkbDE4V0I0S0EvNWhFaEVmWW15MUtSUUdHUTBmQllLb1V5VUJMa0F6ZkxRS1BrWjhaejB6WEM1cUhRc0RXem9vS2cwUkJWMEVEUllTUlRnOUh3Y0JBZ01EQnhNaUZCa2lKQmtGREJFT0lqUVdFelV4TnlZZkpDSUFBUUFBQUFBQ2ZnSkVBQndBQUFFbklnY0dCd1lVRndjVEp5SW1ORFl6RmhjV016YzJOeFlYRmhVR0FlcFpJeTRDQmhVQ1hoL1ZDQWtTREVsS2lXQStTVWdRQkFGQ0Flc0NCeWMrM0lNYkJ3SHVEQm9XR2dNSERBSUNEZ012Q2dZVEFBQUJBQlQvL2dJV0FtTUFNZ0FBSlJRaklpWW5Od1lIQmlNaUp5WTFORGMyTnpZek1ETTJNeklWRkFjR0ZSUVhGaGN5TXpJM05qYzJOell6TWhjV0ZRTVVBZzRmRHhrRENsd3FRa1VORHBJb0RRUURDZ3dGQkNBTktDSVdMd1lHb3pNZUJRTUNDeE1URndNS0VCSUpBNEJQRkNFQkVLdE91em93QVFFd0lUR2hQa0VsR0FXZFhJSThPeDRST2pqK2dpa0FBQUVBQy8vOEFuSUNvQUFZQUFBbEpnSW5KalUwTng0QkZ4WVhOajhCTmpjMk16SVZBUVlpQVFVYmtoZzFNeU05SGtjdEVEaFNRaE1qR0JqKzVCRTFFRWdCSFM5dEV3MFVRWUU1aXpVUWVLMk1LeW9xL1pFTEFBQUJBQTRBQUFPekF2WUFPQUFBSlRZVE1oY2VBUTRDQndZSEJpY3VBU2N1QWljbUp3WUhEZ0VISndNbU5EWTNOakllQmhjV0Z4STJOell6TWhjV0Z4WUMrekpDUHdNQkFRZ1BGZzRpSkNRVUNRNEpEVVlyRkM0ZkpGd1FHZ2srK2dJSENSRWlEd2tHRVNFbUpoRWtDWFEyQndzR0syWWNHRHVtb2dHdUp3d0tPMnFNVExON0dSRUpIeFFSa2xZbFV3NDQreXhMRndNQ1FnVUtDZ1FHRFJRWUprcFNVU0pMQ1FFZWF3d1J3RE12Y2dBQUFRQWJBQUVDVHdKM0FDRUFBQ1VPQXlJbU5EOEJMZ1FuTkRjMkh3RVRGd01lQXhVR0J3WWlKd0VxR2kwdk5EMFlBYjQwUnk0WkN3SWJGeEhBN3pyd0lsZE1Nd01TQkJRVTRSVklSRElSR3dqaFFGbzZJUThFRkFnSENlZ0JHaS8rNHk1Qk9Ub25Gd2dDRHdBQUFRQWMvKzRDRWdLWkFCMEFBQVVpSnlZM05qOEJOamNCSmpRM05qSVdGeFlYUGdNV0Z3NEJCd1lCRmhBU0l3Y01FeHNPRHY3MUJ3Z05KU2NkT1lJN05COFpFZ1FmT1I1UEVnb1ZFQlUvV2lzMEFSQUpEZ1FHREJnd202eGpIUUlFREVLbldld0FBUUFjLy8wREFnSlhBQjRBQUNVR0l5QTFORGNCSmlJR0J3WUhJaVluTmlVeUZoVUdCd1lIRmpJK0FUY0RBdmZQL3VBS0FiQW9NMEF5a3pnUEJ3TGZBUjRPR2h5bHdoODNsSmlrU2hBVEpRZ0lBZUlDQVFRTUF4SWhHQW9JRVU2d3ppa0xDUTRGQUFBQkFCLy9yQUdXQTBJQUdnQUFFejRCTnpZekZCWUhEZ0VIQmdjR0ZCNENGU1VVSGdFVUJ3VWZJVThwWnk4RkN4SkVKRmdaQVF3VUVnRC9CUVFGL3JBREN3VVNDUmNOSEFZRkRRa1VFaUJja3JDd1hTTUZGaGtVQVRVQUFBRUFBUC8rQWU0Q1dBQVFBQUFGQWdNbU5UUVhORFl6SGdNWEZBWUJ1dktzSEFvZER6cG1aMjlDSWdJQkVBRU9MUUlCRHhNSU9aU2FrVFlVR0FBQUFRQUEvNThCeXdNekFDa0FBQUVRRXc0REJ3WWpJalUyTXhjeU56WTBKaWNtSnlZaUJnY0dJeUluSmpRM05ENEJQd0VXRndZQm95Z0pPazFZSjAwY0F6SXVGRzBwR0FjSERSWUxKajBqWVRBRENCUUovRWNhSGg0RkJBS1Mvc3IrWHdFRkJ3WURCamNEQVRBYmg2ZFZyWm9CREFrWkJRNGdDd0lrQ1FRQ0FSSkNBQUVBRWdIK0FTd0Nyd0FYQUFBU0pqUTJOelkzRmhjV0Z4WVVCd1luTGdJbkJnY0dCeWtYRlJNcVBqTVJIQ1FHQkFzWkpRMFlIejBXQndZQi9nb21KQlFzSFNFT0dUZ01GUVlRRHhzTUdoNHFKQXdPQUFFQUlBQUFBcGdBZFFBTUFBQXpKelUyTnpZM01oWVZGQWNFSVFGWnd0dGJEaGtSL3FzU0ZDUUxEQlFJRHhVWENRQUFBUUF2QWU0QWx3Sm9BQW9BQUJNME16SWZBUWNtSnk0Qkx3OEpEVU1SUWd3RUJRSk1IQTVCS3kwVUNCQUFBQUlBRWdBR0FmVUJ4Z0FlQURBQUFDVUdCd1lpTGdFbkpqVW1ORDRCTnpZM05qSVhNaGNlQWhjakxnRW5KaWMwSXlZaklnY0dCd1lWRkJjMk56WTNOZ0drUzMwZEx4OG1FQ1VFRkRVbVQxd2JMUkk2RkEwRkJRbzdCQVFDQlFzNUJ3ZEpVU1liS0VSYVVpTVhJS1oySEFZQkNBa1ZKaEl0U2xZa1RCWUdBMDh5czJFb0d5b1NLcm82QVVZZ0tEa3RPd3NDVUNNcE53QUFBZ0FlQUFjQ0t3TG5BQndBTGdBQUV5YzBOaklXQnhNMk56WXpNaGNXRkE0Q0J3WUhKZ1lqSWljbU5SY1VNajRCTnpZM0ppTWlCd1lIQmhVY0FTRURGaUFhQXdjL2ExbERPeUFZSlR4T0tFeEtCaHdVTmlrS1ZpazhWU3RrTXcxQk8wcHBMUk1DUklFUUVoRVAvbEJVT1RBbUhtTkpRem9YTEIwQ0FnMWZ3dHdMRUNjZlIyQTVMRDlkSlNZS0RBQUFBUUFXQUFBQ2JRRy9BQzhBQUNRMk1oVVVEZ01IQmlJbUp5WTFQQUUrQVRjMk56WXlIZ0VYRmhVVUJ3WUhMZ0VqQmdjR0ZSUVhGQmNXTWpZQjJFNUhCVEZIVkNoVFJsRWpVUjQ4S0ZSY0lDc2NIZ3NhSWdrSEJSQWJkbFZnQVRFbGRWWjZIQllGRlIwYUZnZ1JFQklxVWdZa1EwTWNQQklIQVFNR0RTWVlGd1lGRnlBWk1qay9Cd2hBR3hRYkFBSUFDZi8vQWZRREl3QWhBRFVBQUFBT0FSUVhGQVlqSWowQkJpTWlKaWNtTkQ0Qk56WXpNaGMwTmpjK0FqYzJNd0VVTXpJM01qYzJOelUwSXlZaURnRUhCZ2NHQWZRTENRNFJGQytPWWlkUkpBVVRPeXBjYXk0cUJRTUdCQWNIRHlYK1hqa0pDeWs4Y2hrNUJ4Y3dQQjA5RndrQ3c3ZXZ4VzRYRkU0aGFpWTZHREpIVEIwK0RoSmFNb0l2SVF3Wi9YcFBBaGd0SVlVakFRb2FFeWszRlFBQ0FCUUFCZ0lKQWRNQUlRQXZBQUEzTWpjeUZoVU9BU2NtSnlZMFBnSXpNaGNlQVJVVUJ3WUhCaU1uSWdjR0J4WUFKaUlHQndZVkZqTXlOelkxTk9kWXNRc09LT0ppYnhnQ0lWQnNQVHBJSWlnQkFqa1pJWkJJSmhZSkdRRURNQ0JJSEVWUUtHOG5HRVpRRHdwRVRCa2RZQk5BYVY0MktCTXdHUWNIUFJBSEJoOFJJbHNCUlE0VkRTQWpCeE1LRHhJQUFBRUFEZ0FHQW1BRFBnQW1BQUFCTWhRWEJSY25OQ2NISWljbU5UY21ORDRCTWg0Q0ZSUUhKaWNtSXlJSEJoUVdGekkzTmdKWkJRTCtxUkpSRklJTkNSQ1lGQ1JGVGxGS05BVW9PVVE4T1JNSkNCUStUWlFCVGpZS0t0NEVXblF5RHhvVk5xelhlQ2tpTkVFZkdBbzRMRFJSS3BsL1FBc1hBQUlBRi81UkFmc0Jyd0FtQURrQUFBRW5JZ2NqSWljbU5UYzJOVHdCTlJNMEp3WWpJaWNpTlQ0Q056WXpNaGNXRkE0Q0J3WURKaUlPQVFjR0ZSUVhGakkrQWpjMk5UUUJQQTRlSWlZOEloTG1hZ1VCb3BZTkRVTUNNazh5VFVoVU5oQUdGU0lYSmdrTUswUStHMElKQnhVb1JVb2VSdjVVQVFRWERCZ0xBMjhFRXlBQlFoRUxsd0U3TG05bktUOVo3c2lBYWo0T0ZnTVNCQ1E1STFZekVBZ0VCeDB1SEVBOUpRQUFBUUFYLy8wQjhRS2NBQ1lBQUNVR0lqVTBKeVluSmlJT0FRY2pOalFtSnlZME56WXpNaFlYQnhRWE5qTXlGeFlYSGdFWEZnSHhDVXNGQ1IxSVd6c2ZCMDBDQkFNRkNBb1RGeG9CQlFsYVlCOGpTeGNMQmdFR0RoRWJkaXhoQnc0M2YzTTVZb2RRWEg4MUV5RU5wVjB1UEFVbkxCYzBJWElBQWdBWUFBWUFpd0tCQUFnQUV3QUFFeFlYQmlNaUppY1JKelF6TWhjV0ZBY0dJaVoxRFFrR0tnc1hBeDRwR3hFRENBZ2dJQUhXdS9ZZkNRZ0J2NGdqREFzVkNnb1BBQUwvanY2UkFLMEN3d0FpQUMwQUFCY1VJeUl1QVNjbUp6UTNOalVlQVRNeU56WTFOQ2NtTkRjbU56WXpCaFFlQVJjV0F4WVZGQWNxQVNjME56YXRXQWtiTlJ0QkVnVUpJVXdySFJFUURoUUNBeGtURndrQkN3Y1JQeEFTQVEwUER3Yklwd0VIQ1JZcUF3c1VBeGtzS2lRa1ladnBmeWdZREFrK1NFMlVTcUVES0FzWUdBVU5JQTRGQUFFQUh2LzdBbVFDMndBdEFBQTNGeFFIQmlJbkV6UW1OVFE3QVRJWEZoY1dGejRDTnpZek1oY0dCdzRCQng0QkZ4WVhGQWNHQnlNbUp5WitCU1lJRmc4QkV5SUlCd0lQQlFzSkVYWklJRXNURUFreWJ5MVpKVU40T0lGZEJRa2NDRDFseDdaWFVCRURCUUYyVWFOUklBRStXTU5EQ1ZRekZqRVRQMDBmUFNFU0p4QW1CUnNJRGdJUkZTa0FBUUFXLy84QWdBS3FBQkFBQUJJdUFTYytBVE15RXhZVkZDTW5OQzRCS3dRQkVBa1JFQ01UQ2tBSUJnTUJ1bFVwVUF3Vy90bXJxeTRCTktKNEFBQUJBQnIvL1FNV0Fjc0FPd0FBTndZaUppYzBQZ0UwSnpRek1oNEJGelkzTmpJZUFSVTJOell6TWdjVEZBY0dOU1kxTnpRbkRnSUhCaFVHSXlJbU56WTFOQ1luSWdjT0FSUnVLUnNLQmdVRUJpc0tDd1VDR2swcFNEY25HbHRUUWw4Q0ZSMDRBUVVXUWtjMkZTOEdJUlljQXhNVERwQXlGZ1VRRVFZTElXUnlkREFnU0NnSkx4c05FUzBsTVNjbFNQNk1CUUlFRGhRVW9YRkNCU0V4S1Z5WUZROEdhanN2VlRkek0xay9BQUFCQUNMLytnSGpBZk1BS0FBQUpUUW5OaU1pQmdjR0J4RWpKalUwTmpjMk16SVZGQVlWTmpNeUZ4WVZCeFFYQmlNdUFTY3VBVFVCb1EwSUlDSnNJbEVKUXcwTEF4b1FHUVdpV1dVT0JnRUNDZ1lERkJBS0F0dDNPQThpRVNjbC92QWluWXlFQ1JFN0Z5c0lkNk01WlU4c0tRWUJCQUVvVXlNQUFBSUFOUC8vQWpBQndRQVNBQ01BQURjME56WTNPZ0VYRmhjV0ZBY1VCd1lqSWlZM0ZCY1dNalkzTmpVMEp5WWpEZ0VIQmpSbVVYSUdMQ1ZTSGd3QlgxaUVYMkZGSVJsMldpTkxJQ001SjA4alRMNTJTRGtNRFJ4SEhDY0lmVWhDV0U4K0ZoQVNGakJsUENZcEJ4QVhNUUFDQUQ3K2dnSWhBY0FBSEFBc0FBQVROak15RnhZVkZBWUhCZ2NVSGdJWEhnRVZGQVlqSWlNRE5oNEJCU1lpQndZSEJoVVVIUUUyTnpZMU5IdUlZMzRxRXo4MGVhMEJBUUVCQXdNZ0dnVUZFQWtlRWdFb0lVc2xWQ2dTemxZeUFaRXZRaDhrTW1vcll4Z0xNVHhFSDAwV0J4a1pBeVFOQWc0MUVRY1FOeG9tQkFTdExsSXZNalVBQWdBay9wMEI5QUdRQUJnQUp3QUFBUWNqQXdZSEJpTWlMZ0kxTkQ0Q093RXlGaGNVRWhjRE5DTWlCd1lWRkJjNkFUWTNOalVCNVJzWER5ZFBTRGt1UFIwQk9HaDlPdzRkTUJBQ0MyUVVaVkZXTmc4eFJoeEMvcDRCQWJVbEdSY2FIeUlLT201WUxpb2FydjZ1cmdLQUx6dEJZVEFDRFJFbFN3QUJBQnYvOVFJaUFlSUFLUUFBQVNZaklnY0dCd1lWSEFFV0ZRNEJJaVluTGdNbkppYzBNekllQWhjMk16SVhOaklYRmhVVUFnWXFRajQxWkNVUUZCVWFFZzBJQVFZSkN3VUxCaU1WR0E0RkFvVEVGaGdHRWdrTEFXMGVGeXBDSGlJR04xMHdBUWdRRndZNFVGOHVaQzhZSXkwc0NYWUJBUXdPRkRJQUFRQVcvK01CM3dIS0FDZ0FBQUV5RlJRSEJnY2lMZ0VuTmpjMk5DSUhKaWNtTkQ0Qk56WXpNaGN5RmhVbUl5SUhCZ2NVTXpjMkFYRnVQVnVhQnhFSkFuTktNblp5TkNZaEpEd29ZbWtmSFJnSU8wcGNQRDRDS1VsZUFRSTRLamhUTWh3UEFpWTJKQzRjQWlNZlB6VXVFeThHS2pBYkpTUTZIQWdVQUFFQUVQL3hBWk1DcUFBZEFBQS9BVFFuSXljekVUWTNOaklXRnhZVkZCYzJNekF6TWpjSEp4TUdJeUt5QWdlYkFwWURDUTRURGdnUUF5QWdOQk1RQTVJRkVnMHlZS0FtRzBVQkFna0pEZ1FNUW9VaElBUUNTQVQrcHdnQUFRQU4vLzhCNlFHNUFDNEFBRGMwTGdFME56WXpIZ0VVQndZVkZCY1dNekkzTmpjMk5DNEJKell5SGdNVUZ3WWpJaWNHQndZSEJpSXVBUllGQkFZTktSd1RDU0VERUY0eExGUWVDUVVIQVEwWkd4TUdBUVFNQ3lnVERSOUNXaEVxUHppRkVEbEVSaDFCQ0JnakdsZEdGeHBERVI4cUxrVTJRU2NHR2toaGFHRWpDMUFMRUNRTUFoQTZBQUFCQUNMLy9nSUVBZVlBR3dBQUV5WTBQZ0VXRnhNK0F6YzJNeklXRkJVT0FnY0dJaVluSmlRQ0NoTVhCNmdJSXkweEZUQUpGUk00WHg4TUZTZzBJVG9CZ3dVTkZoQUJEdjdJREVGU1dTVlZIeEFEZXM0OUVoOC9OV0FBQUFFQUx2L3JBeEFCeHdBMUFBQUJEZ0VIQmlNaUp5WW5KalUwTmhjV0Z4WWZBUllYTmo4Qk5qYzJGeFlYTWo0Qk56WXpNaFlVRlE0REJ3WUhCaWN1QVNjbUFaY1dIUTRXSEE4VExsUlNGZzRpRGdjS0dTb3BGaFFmS0NBWmZUVU5DUmtURGlFckRnc01HaDBkRGlFV0VTWVJKaFV6QVJSSmZDazdEakdvcENrU0NRUUtGUW9aUG1sWElqWldjUUlRd1ZJUWVGTWtWQk1NQXlKWFcxa2tUZ1lJTHhZOElGQUFBQUVBRXYvOUFkOEI0QUF2QUFBM1BnRTNKeTRDTHdFM0hnRVhGaGMyTnpZM01oWVZCZ2NPQVFjV0Z4WVhGQWNHQnk0REp3WUhCZ2NHSnlZYU1XUUxWQkFlR0FjSE9pMHJEUllxRGlROEpCY2NHakVTSGdrOVZSTUlDeEVORXlrdU1Sc1hLVXNaRXlNSkhqRitGVndSSWhvSkNENDNPUkVjS1JRMFdTc2dEamcrRmlrWUsyY1hEQWNPR0FZSkx6ZzRFaG94V2hJRUZnVUFBUUFXL2xnQ0lBSFhBQ0FBQUJNR0l5SW1OejRCTnlZbkpqVTBQd0VXRnhZWFBnSTNOamMyTXpJWEZoUUg3aFVkRGcwR0ZsTU9JMHVhQVNaUGZ5QVRGUmdQRFNJOENRb1pDd1FDL29jdkdSRmQ3aWtqYWRnVkFRRW1TYThzSGlvOUpSOVRnQVFOQlEwR0FBRUFFLy84QWZRQnNRQXVBQUFYSWpVMFBnRTNOamNxQVFZSEJpSTFORFl5UGdJM05qY1dGUlFIRGdFSEZqTTNNaFlYRmhVVUJ5WWlCZ2NHaW1SWVFoNUhMUWtrUlNablFDY1JDUllwSTBXVE1FWStqUnduSGFRbVBnY1FCQmsyV0Q1VkJDd2NXamtiUVRjRkJBc09FUndDQXdVREJ3d0dIU1ZIUG40ZUF3Y0hBd2taQ2d3REJnVUdBQUVBTlA5MkFiTUQ4Z0F6QUFBQURnRVVGeFFPQWhVR0ZCY1dGeFl5TXdZVUhnTXlGd2NtSnk0Qkp5NEJKeVluUGdNM0ppY21ORFkzTmpNVkpnRUhGd3dLSHlZZkFnc2FNaFVKQVFZSklTOHZLUW9FcUNzV0NnVUdKaFU1Q1FVZ0pTUUtBZ1FHQ3hNcWFpa0RvRFJka25FVkd4Y1lFd1VSRWljZ0RUdE5XVXdqRFFOSUMzMC9tQzRNSEJFdUtpVXBHeGtYSmpBOFlGa21WRFlEQUFFQU5QKzZBRzhEMUFBSEFBQVhJeUlIQXpNUkZHY2FFZ1FETzBRQ0JCcjc2Z0lBQUFFQUdQOG1BYWtEamdBMUFBQVhKell5TmpjMk5UUW5PZ0UzTmpjMk5DYzBMZ0kyTkM0RUp6VXlGeFlYRmhRSEhnTVhCZ2NPQVFjT0F3Y0dIQVFLS3pBWlJRWUJDaFUxR3drQ0lTY2dBUTBmS2lvbUMyNC9NQkVKQVFvb0tpQURBajhZTEFZRkJnNGJHem5hU0FNTkVqR2dManNOSHlvUEVBVVRHQlliTmxwMFd6SWJDQVEyVWo1ME5XY1pGeUVmSWhjeU1STVpCeTFiVlVvY1BRQUFBUUFhQWVZQnNBS09BQjRBQUJNaUJ5SW1KejRCTnpZeUhnSXlQZ0kzTWg0QkZBWUhCaU1pSnk0QmxDQTJCaHNERHp3aENCUWRKQ1lyR1JVWkZ3WVhBUkFTTTBBdUd4UWNBamRSQ0Ewd1NnMERGU1lpRGhvbUdBOFBGaVVUTWg0U0YvLy9BQmYvVHdCOUFkOFFSd0FFQUFJQjJUOVkwZVFBQWdBVi83b0NiUUk2QUMwQU9RQUFCU01pQnljR0lpWW5KalVtTlRRM05qYzFNd2MyTXpJVkZBY0dCeVluSmdjUlBnRTNOaklWRkFZSEJnY1ZGQ2N5TndNR0J3WVVGeFFYRmdGYUd4TUNBUnd5VVNOUkFWRlJjVHNCSXhSWklna0hDUllOTWg4OEhVUlBPeWRNWFdRWkVnR1FLQXNCTVNWRUFrb0VFQklxVWdZSFNreE5Jb3A5QkQ4WUZ3WUZMUWNFRFA3YUNSa01HaFlaSVE0YUVGQUNnZ01CSVRoR0V4MEhRQnNVQUFILzZnQUFBaGdDVndBOUFBQTNJalUwUGdJM1BnTTNOak15SGdFVUlpY21KeVlpRGdFUEFSY3lGeFlHRHdJK0FqSVhGaGNlQVFjT0FTWW5KaUlPQVFjR0l5SWpOamNkTXhnY0xoRURCeE1pSGs4N1NGOHRJeU1aS3pnOE16SU9EMU1wREFRTUVtOGJLRHd6THhvcVZnWUdBd2dySHhNM1NSd1hDeXRKQ2dzUEJmWVpEZ29FQlFNL1hEOG1DaG91UENZakdnNFNEeThzZkFFWENSUUdBY0FIQ3dZRUJ4c0NEUWNRQmdjRkRnVUlCUkJEdHdBQUF2Ly8vL3NDV0FKRUFEUUFSUUFBSlFZaklpY09BUWNHSWlZbkppYzNKalEzSnpjV0Z6WTNPZ0VYUGdJM01oWVZCZzhCQmdjV0ZSUUhGQWNXRnhRSEJnY3VBU1VVRnhZeU5qYzJOVFFuSmlNT0FRY0dBY05WZ0MwaUNDMEtEd29WRFI4SFZ5aEFVRWcwSGtWYUJ5MGpDaWtWQngwaEJ4QVpDQVV0QVNrdktBMFdEeGN4L28waEduVmFJMHNnSXprblR5Sk5iejBKQ0NRSkN3UUZDZzlMTExwQVQwTTRJaVVKRFEwd0dRY2pEd3daSlF3SE1qc0hCMDAvTERBSkRob0hDUzk5UGhVUkV4WXdaVHNtS1FZUUZ6TUFBZi8yLys0QjlRTEdBRWdBQURjMk56VUhJZ1luSmljM05qOEJBU1kwTmpjMk14NERGeFlYTmpjK0FSWVhEZ0VIQmc4QlBnRTNOaDRCQmc4Q05qY3lGaFFIQmc4QkJnY0dKeVluTmpjR0l5STFORFo1WFM5dkJROElFd0lVQW9vQi92VUZDQXdaRFJBWkdSNFhJV1ZTTUJBWkdBVVFLQlUxR2dJWEtCSVFFUU1KQ1dVRE9qNFhEQUpTU1FnREN4b1dEQUlJQWtzN0dBMjZEZ1VyRGdFQkF3NGtBZzh0QVJFSENnMEdEd3dSRkIwWkkzandLUTBDSFF3aVRDcHJTQmtEQlFNRkNoTVdCZzR0QncwWUVnZ0NFYUlIQ0JNTkJoWVBmQThqQkEwQUFnQWNBQWdBYmdJMkFBWUFEd0FBTnhNekF3WUhCZ00yTnlZMk1oWVhCeHdJUWdnQ0dob0RBd1FDRkJrVEJBZ1FBUkwvQUJJSUJ3RTVkV1VXREFRTzZnQUFBZ0FLQUJnQjdnSy9BRFlBUlFBQUFUSVZGQWNHQng0QkZSUUdCd1lISWljbUp6WTNOalFpQnlZbkpqVTBOeTRCTlRRM05qYzJNaGN5RmhVbUl5SUhCZ2NVRmpNM05oYzBJeUlHQndZSEZETXlOelkzTmdGOWNVRWpNRDh4UURCdmlBa1RCQUtDWFVoM2JEUW1JV0loSlVKa2tRNHRIUmdJTzBxTU9oRUJHUkJKV1VRdkpsc2pUd2tvQ3d4ZFJVb0I5emNzT2g4ZEJpY1hIVUViUGdza0J3SVdMU01uRXdJakh5TkRPZzgwR2pNelRBd0JCaW93RzA0WEh4RUtDQlJhSENBVk1EWWFBUjR0THdBQUFnQkNBbFVCS1FLWUFBb0FGQUFBRXlJMU5EY3lGaFFHQndZeklqVTBOeklWRkFjR1doZ3lGUThNQ1F4ekdETWtLZ3NDVlNJTUZSSWNEUU1GSWcwVUloOEJBUUFEQUNiLy9nSm5BbWNBRWdBbEFGQUFBRGN1QVRRK0FqYzJNeklYRmhVVUJ3WWpJaWNVTXpJMk5UUTFOQ1lqS2dFaklnY0dCd1kzTkRVMFBnSXpNaDRCRkFZSExnRWpCZ2NHRlJRZUFSY1dNajRDTWhZVURnTUhCaUltSnlaMEpDb1lKVFVpUzErQVJEOWZYWnBaVjhDS2kzSmpDeEVITlRReEl5QkRLRVJKSGdjYUhSVUlBZ29RUVRNM0FROE5GRVF4TGkwZUN3TWNLVEFYTUNjdUZDOHNGMFZRYmw1WUlrbGVWWDZWVTFDNWg0NkRCQVJ6ZWtoQ1oxNFBCZ1lxV1VrbUFSRTJHQWtVSEJNdU1qY0dKaVVLRWhjZEZ3Y1BGQmtXRXdjUERnOGwvLzhBQ2dCL0FPQUJjeEJHQUVRRGZCd3NJckFBQWdCVUFEc0NtUUhxQUJvQU5BQUFOejRCTnpZM01oY1dGQThCSGdFWEZoY09BUWNHSXk0Q0p5WTNQZ0UzTmpjV0Z4WVBBUjRCRnhZWERnRUhCaU11QWljbVZDQldMR3d2RFFZREJPc1BPQ0pSUFFFR0JBa0NIbkJFSFVUWUlGVXRhVEVOQndZSDZ3ODNJbHd6QVFZRUNRTWVjRU1lUk9VWlJDSlZHaFlKRWdhekNCa1JLQ2dCRGdnVkV5Y2JEaUk3R1VValVSMENGUk1Pc3dnWkVTNGhBZzRJRkJNbkdnOGlBQUFCQUVrQWVBSkxBV0FBRXdBQUFRWWRBUlFIQmlJbkpqVTNCVGNXTWo4Qk5qSUNTd1VKRGhZSkVRUCtSd01RUFR4L1VuY0JWVGNYSVNOS0FRSUZLbWdIUVFFRkN3WUFBd0FtLy80Q1p3Sm5BQklBU3dCYkFBQTNMZ0UwUGdJM05qTXlGeFlWRkFjR0l5SW5GRE15TndZckFTSW1KeVluRlJRR0l5SW1OVGMwSnpZWE5qTXlGeFlWRkFjR0J4UVdGeDRDRnpZMU5EVTBKaU1xQVNNaUJ3WUhCaVVpQndZVUZ4WVhGakkyTno0Qk5DZDBKQ29ZSlRVaVMxK0FSRDlmWFpwWlY4Q2VSZ1lIQ2drM0pGNHZGQU1SQndJR0RSY2RTaTBsTzJCckRRc1pXWDBLQWlaeVl3c1JCelUwTVNNZ0FSVnVFd1VCQXdrQ0NpTWFQVElZTEJkRlVHNWVXQ0pKWGxWK2xWTlF1WWRmQVNJV1BCQnVDQUVwSUhFdk5Ca2pHZ29PR1I0Zkl3Y0RCZ3dzUXdjRVFHQUVCSE42U0VKblhzSVlCeFFJRXdrQkNBa1VIaEVFQUFFQUhnSVdBU3NDWXdBTkFBQVRJalUwUGdJM01oY1dGQVlIVURJWE9WY3dLZ3NCQ1JJQ0Zoa09DZ2dQQlJjRUNROEdBQUFDQUJrQkRnREZBYlVBRFFBYkFBQVNKalEzTmpNeUZ4WVhGQVlqSWpjbUl5SUhIQUVYSGdFeU56WTBLeElNRlNjMEh3NERLU29lUWhjYUh3WU1FaFFSQ2c4QkxCNDJGQ0VxRWhjeklXUVlIZ01URkE4Q0NBb2hBQUFCQUJMLyt3SUZBZlVBTWdBQUZ5STFORDRDTnk0Qkp5WW5JZ2NHQnlJbU5UYzFORE15SGdRVk54UU9BZ2NHRkJZWEZoYzJOeklYRmhRR0Izb3pGeDVLTEFJRUJBa05HeVZMSEF3TndDTVJDZ1lHQlFXN0JDSk5TUU1EQlF3QlVVWXBDd01KRWdVYURRb0ZEQWdWTkJvN0p3c1dBUjBQS0tZVERSNG1LaVlIRlJjV0RBb05EaGNmR1VRZkRnb1hCQWtRQmdELy93QUpBSzhCWlFIZUVFY0FGUUFBQUtvbitpR2ovLzhBQ3dDcUFUQUI3aEJIQUJZQUJnQ3NKa01reFFBQkFCa0I4Z0NQQW5BQUNnQUFFell6TWhZT0FRY0dCeWRlRGhBS0NnSUlDUkUwSHdKZEV4TVNFQXNUS3h3QUFRQWgvNUlCeWdHK0FEa0FBRGMwTXpJWEJnY0dGQllYRmhjV01qWTNOalUwSmpRM05qY1dGeFlVQndZSEJpSW5KalUwQndZaklpY21Kd1lWRnhRSEJpSW5OalFtSnlZaEt3OFdBUVFIQVFnWlFTOVlNQWNJRHdFREd4Y05DQUVCR2dNT0VBTUNMRDg4T1RNUUFRUVlCaFFNQVFJQ0J1TGNGQ1lmUHpnbkp5Z2JGQ1VjTGh3d2F4c0lGZ1lYV2p0bkc1TUhBUWtDRXlVQ0l4b1hHd3NLV0Q4TkJBUUZGeTR1akFBQkFCTC8vd0Z0QWVJQUhBQUFBU2NpQWhVSElnWW5KamMyTnpZM0ppY21ORGMyTWhjREp5STFFelFCT1FzR0JBRUdGQWtXQWdJQkFnRmROVTVHTVk1V0R5Z0NCZ0dvQXY2WEh5QUJBd2NkR2k5Z0N4SWdNVzRmRmh2K09BTWdBV1lnQUFFQUR3RElBR1lCR1FBTUFBQTNQZ0V5SGdFWEZBWWlKaWNtRHdVWURoSVlBaFFhRUFnUjhCZ1JBeGNRR0E4RkJRd0FBUUFyL3hjQTlRQWNBQ1VBQURjME16SVdCeFFXTXpZeUZ4WVZGQWNHSXlJbklqUStBU2NXTWo0Qk56WW5KaUlISWpVbUx3d01FZ1FDRWhZekd5Z3ZLVFViSHdNQkFRSUxJRFF3REJvNERDb2dJZ0VJRkJzREd5b0NDaEFsS0NBZENnb09EUUlCQ1JNTEdBZ0NBMndKLy84QUdnQ1NBRnNCdFJCSEFCUUFCUUNPTWJRaFRmLy9BQmNBa3dFQUFZSVFSd0JTQUFBQWxCMHVJZWdBQWdBeUFEQUNqZ0haQUJRQUp3QUFOeVluTkRVME56NEJOeVUzSGdNWERnTVhKamMrQVRjMk55VTNIZ01YRGdOMkxRVkhhVUFHL3ZneU1WTk5UQ2thVDFkVnhGaEJJVjhaT3dqKzl6SXhVMDVMS2hwUFYxVXdFUk1FQXg4cVBURVhZekVqSEJFWEh4OC9Ra1FISWpNYU5oRW1IV014SXh3UkZ4OGZQMEpFQVAvL0FBMy8rQUlZQXFrUVp3QVVBQ3NBbFMxYkhoSVFKZ0FTK1BnUVJnQVhlaGNtM3lSRi8vOEFGd0FBQWg4Q3NSQm5BQlFBQlFDTk1SWWVQeEFtQUJJQ0FCQkhBQlVBdHdBSktGVWw0di8vQUFuLzdBTExBcDBRWndBV0FBSUFrQzBOSjI4UUp3QVNBTFgvN0JCSEFCY0JDd0FZS2lncEhQLy8vK0lBRFFGOUF0b1FSd0FpQVlVQzFjbzd2djMvL3dBVi8rd0NlUU5qRWlZQUpQdjdFQWNBUXdET0FQdi8vd0FhLy9FQ2ZnTnZFaVlBSkFBQUVBY0FkQUMxQVAvLy93QWEvL0VDZmdOVkVpWUFKQUFBRUFjQk9nQ01BS2IvL3dBYS8vRUNmZ04xRWlZQUpBQUFFQWNCUUFCcUFPZi8vd0FhLy9FQ2ZnTXZFaVlBSkFBQUVBY0FhUUNNQUpmLy93QWEvL0VDZmdOREVpWUFKQUFBRUFjQlBnQ3NBUGdBQWdBZUFBQURkQUtvQUR3QVJ3QUFBU2NpQndZV0Z4WVZNamMyTXhVRkZ6STNOak1XRkFjR0J3NEJCelVtTHdFSERnRUhCZ2NHTGdFMFBnSTNOamMyTnpZek1oY2VBVE15RnhVR0JUYzBKd1lITWpjMk55WUMyNHRGTGhNRUFRTklQWGhBL3NzRmMwZUJWZ1FIRXlGdjNHRWdBaG13QkEwSkZoc0dKQThVSkMwWE5oc1ZHQjBYTGhjZ2FEaVJLaGIrWkFRSWZSZ3NIRFVmQXdJdkF3cFlNaEF5S2dnUU5pYWtCZ3NDRGdrWkJ3d09DQU1GQXZJYUR6VWRSeUlJRFFvYVRXZHpObjhxTGhjY0tnZ0NFRElEekg4NE1MZGxCZ3dCRHYvL0FCYi9IZ0xBQXBrU0pnQW1BQUFRQndCNEFOMEFCLy8vQUI0QUFBSktBeHdTSmdBb0FBQVFCd0JEQUl3QXRQLy9BQjRBQUFKS0F5Y1NKZ0FvQUFBUUJ3QjBBTHNBdC8vL0FCNEFBQUpLQTFVU0pnQW9BQUFRQndFNkFIMEFwdi8vQUI0QUFBSktBdVFTSmdBb0FBQVFCZ0JwWkV6Ly93QUkvLzhBY0FMNUVpWUFMQUFBRUFjQVEvL1pBSkgvL3dBTS8vOEFnZ0xhRWlZQUxBQUFFQVlBZFBOcS8vLy94Ly8vQU9FREV4SW1BQ3dBQUJBR0FUcTFaUC8vLzlILy93QzRBcmNTSmdBc0FBQVFCZ0Jwang4QUFnQUtBQWNDb2dLQUFCNEFNd0FBTnlJMU5ENENOeEV6TWhZWE5qTXlGeFlWRmhRT0F3Y0dJeUluTlJNUk5qY3lGeFlHRHdFVk1qYzJOelkxSmljbUlqd3lGeE1OQ0EwWUd3SktldUJUSHdFaFExeG1OSHBYR3hOVUlTTXFDd1FNRWw5R2FiWkVHQXRaUTlEQ0dRNEtBd0VDQVlVUENScHVLa0VJTEU1UVJ6d1dOUWUwQVdMKzRnWURGd2tUQmd1RU0xcDNLaXBhS2lBQS8vOEFHZi80QW1BRGloSW1BREVBQUJBSEFVQUFZQUQ4Ly84QUZnQU9BbzREQmhJbUFESUFBQkFIQUVNQTZ3Q2UvLzhBRmdBT0FvNERCUkltQURJQUFCQUhBSFFCQ1FDVi8vOEFGZ0FPQW80REdSSW1BRElBQUJBSEFUb0F1Z0JxLy84QUZnQU9BbzRESHhJbUFESUFBQkFIQVVBQWtnQ1IvLzhBRmdBT0FvNEN5UkltQURJQUFCQUhBR2tBb2dBeEFBRUFUQUJKQVpvQnFRQXBBQUEzQmdjaUppYytBVGN1QWpVM0hnRVhGaGMrQVRjMk56SVdGUTRDQnhZWEZoY1VCZ2N1QVNjbStXQVhGUmdESzBFSUl6RW1LaUVmQ2hFZENoZ09IeHNSRXhNd0ZRWXVPZzRHR1FRT0hoRXIwWE1URWdVclV3OG1PQ2tCTGlncURSY2JEU1VVTGlFWEN5azlIUkloU1JFSkNoa0NCeUlVTmdELy93QVcvOThDamdLUUVpWUFNZ0FBRUFZQUVscmYvLzhBRlAvK0FoWUMweEltQURnQUFCQUhBRU1BdEFCci8vOEFGUC8rQWhZQy9oSW1BRGdBQUJBSEFIUUEzd0NPLy84QUZQLytBaFlETGhJbUFEZ0FBQkFIQVRvQWtBQi8vLzhBRlAvK0FoWUN6eEltQURnQUFCQUdBR2wwTi8vL0FCei83Z0lTQXhJU0pnQThBQUFRQndCMEFPTUFvZ0FDQUNFQUFRSDRBczhBSFFBdUFBQTNGQ01uSmljREpqUTJNaFlIRnpZM05qTXlGeFlVRGdFSEJnY0dJaWMzRkRNeU5qYzJOeVlqSWdjR0J3WWNBV29kRVFvRkN3RVhIeG9EQlQ5ZVFqVStIeFFtUHlsVVdCd25EUWdkSWxvbFdESU9ReTh4WVNjUEdSZ0VCUXNDa0FRVUVoRVArVk14SXpFZ1kwMUdIVHNVQmdKUUR5Y2JQMTgvSFRsWUl5OE9BQUFCQUVuL2J3S2tBcU1BTWdBQUV5SUhFeU0yTkM0QlBRRTBOejRCTWg0Q0ZSUUdCeFlYRmhVVUJ3WUhCZ2NuUGdJMU5DY21JeUlISnpZMU5DY21JOTlTQ2c5RUN3Y0pJQkpYU2w5eU8zZDM1MVV1U2xOL1BqOEhjNUU5TUVSMk8wb0U4VlU1UVFKbkVmMFpSc085eGlrekhCVU1Ed2NtT0Iwc1dTa05OaDBvTmpjK0toVUtUaEE0T2hvbEZ5RUphVEpETHhZUEFQLy9BQklBQmdIMUFtZ1NKZ0JFQUFBUUJ3QkRBS01BQVAvL0FCSUFCZ0gxQW5BU0pnQkVBQUFRQndCMEFMQUFBUC8vQUJJQUJnSDFBcThTSmdCRUFBQVFCZ0U2WUFELy93QVNBQVlCOVFLT0VpWUFSQUFBRUFZQlFCMEEvLzhBRWdBR0FmVUNtQkltQUVRQUFCQUdBR2xPQVAvL0FCSUFCZ0gxQWlJU0pnQkVBQUFRQndFK0FKci8xLy8vQUJMLzlnT3JBY1lRSmdCRUFBQVFCd0JJQWFMLzhQLy9BQmIvRndKdEFiOFNKZ0JHQUFBUUJnQjRmd0QvL3dBVUFBWUNDUUpvRWlZQVNBQUFFQWNBUXdDekFBRC8vd0FVQUFZQ0NRSndFaVlBU0FBQUVBY0FkQURBQUFELy93QVVBQVlDQ1FLdkVpWUFTQUFBRUFZQk9uRUEvLzhBRkFBR0Fna0NtQkltQUVnQUFCQUdBR2xmQUFBQ0FCd0FCZ0NMQXB3QUNRQVVBQUEzRGdJaUppY1JNeFlETkRNeUh3RUhKaWN1QVlzREdoQU9Gd00vRFdZUENRMURFVUlMQlFVbEVBNEJDUWdCdjdzQlpSd09RU3N0RkFnUUFBSUFJUUFHQUpjQ2tnQUlBQk1BQUJNV0Z3WWpJaVluRVRjMk16SVdEZ0VIQmdjbmRRMEpCaW9MRndNd0RoQUtDZ0lJQ1JFMEh3SFd1L1lmQ1FnQnY2a1RFeElRQ3hNckhBQUFBdis4QUFZQTFnS3ZBQWdBSUFBQUV4WVhCaU1pSmljUkxnRTBOamMyTnhZWEZoY1dGQWNHSnk0Q0p3WUhCZ2QxRFFrR0tnc1hBMk1YRlJNcVBqTVJIQ1FHQkFzWkpRMFlIejBXQndZQjFydjJId2tJQWI4b0NpWWtGQ3dkSVE0Wk9Bd1ZCaEFQR3d3YUhpb2tEQTRBQUFQLzJnQUdBTUVDbUFBSUFCTUFIUUFBRXhZWEJpTWlKaWNSSnlJMU5EY3lGaFFHQndZeklqVTBOeklWRkFjR2RRMEpCaW9MRndORUdESVZEd3dKREhNWU15UXFDd0hXdS9ZZkNRZ0J2MzhpREJVU0hBMERCU0lORkNJZkFRRUFBQUlBTXdBR0Fpa0NiZ0FtQURJQUFBRVdGUlFIQmdjR0lpNEJKeVluSmpRM1BnRXlIZ0VYSmljSEp6Y21KelEyTnhZWEZoYzNGd0VVRnhZek5qYzJOQ2NtSWdIak9rY2dNUkFrUEZVblZCQUNEaWRVTWpodlBRZ3dUeWxFSzAwZERUNFRKeVpKS3Y1cFJUaGZPaG9SQkdhb0FkSnpjWGRCSFE0RkRDWWNPenNKSFJNb0dnSVpERWxGTFVJaVJCMFNGUU1nRFJrbU5ESCs0MVFxSVFRcEdqTVJLQUQvL3dBaS8vb0I0d0xJRWlZQVVRQUFFQVlCUUNJNi8vOEFOUC8vQWpBQ2FCSW1BRklBQUJBSEFFTUF2Z0FBLy84QU5QLy9BakFDY0JJbUFGSUFBQkFIQUhRQXl3QUEvLzhBTlAvL0FqQUNyeEltQUZJQUFCQUdBVHA4QVAvL0FEVC8vd0l3QW80U0pnQlNBQUFRQmdGQU9BRC8vd0EwLy84Q01BS1lFaVlBVWdBQUVBWUFhV29BLy84QU9nQnZBVWNCZXhBbUFCMWVDaEFHQVZzY0FQLy9BRFQvMmdJd0FnWVNKZ0JTQUFBUVJnQVNYTm80SWpPVi8vOEFEZi8vQWVrQ2FCSW1BRmdBQUJBSEFFTUFvZ0FBLy84QURmLy9BZWtDY0JJbUFGZ0FBQkFIQUhRQXJ3QUEvLzhBRGYvL0Fla0NyeEltQUZnQUFCQUdBVHBnQVAvL0FBMy8vd0hwQXBnU0pnQllBQUFRQmdCcFRnRC8vd0FXL2xnQ0lBSndFaVlBWEFBQUVBY0FkQURFQUFBQUFnQVkvM0VCL2dKUEFCc0FLd0FBTndjVUZ4WVZGQVlpSndNMk1oY1dGell6TWhjV0ZSUUdCd1lIRmdFbUlnY0dCd1lWRkJVWE5qYzJOVFJ5QVFRQkh4NEhHaGNYQnc0RWhHQitLaE04TTNXcEFRRVNJa3NsVkNnU0JjeFhNQjB2SFI4SUJob1pBUUxVQ1E4YWdpZzhHeUV0V3laVkVSSUJWdzBIRURjYUpnUUVlUzVGSnljci8vOEFGdjVZQWlBQ21CSW1BRndBQUJBR0FHbGpBUC8vQUJyLzhRSitBeDBTSmdBa0FBQVFCd0J2QUlnQXV2Ly9BQklBQmdIMUFtTVNKZ0JFQUFBUUJnQnZWUUQvL3dBaC8vRUNoUU5QRWlZQUpBY0FFQWNCUEFDS0FSSC8vd0FTQUFZQjlRSStFaVlBUkFBQUVBY0JQQUNBQUFELy93QWEvMG9DbUFLNkVpWUFKQUFBRUFjQlB3RytBQVAvL3dBUy8xRUNHQUhHRWlZQVJBQUFFQWNCUHdFK0FBci8vd0FXLy84Q3dBTTFFaVlBSmdBQUVBY0FkQUR0QU1YLy93QVdBQUFDYlFKd0VpWUFSZ0FBRUFjQWRBRHZBQUQvL3dBVy8vOEN3QU9KRWlZQUpnQUFFQWNCT2dDckFOci8vd0FXQUFBQ2JRS3ZFaVlBUmdBQUVBY0JPZ0NnQUFELy93QVcvLzhDd0FNYUVpWUFKZ0FBRUFjQlBRRUlBUEwvL3dBV0FBQUNiUUlvRWlZQVJnQUFFQWNCUFFEMkFBRC8vd0FXLy84Q3dBTkJFaVlBSmdBQUVBY0JPd0N6QVFQLy93QVdBQUFDYlFKVEVpWUFSZ0FBRUFjQk93Q1JBQlgvL3dBbUFBWUNmd01wRWlZQUp3QUFFQWNCT3dDU0FPdi8vd0FlQUFBQ1NnTGpFaVlBS0FBQUVBY0Fid0J1QUlELy93QVVBQVlDQ1FKakVpWUFTQUFBRUFZQWIyWUEvLzhBSGdBQUFrb0RCaEltQUNnQUFCQUhBVHdBcmdESS8vOEFGQUFHQWdrQ1doSW1BRWdBQUJBSEFUd0FqZ0FjLy84QUhnQUFBa29DOUJJbUFDZ0FBQkFIQVQwQXdnRE0vLzhBRkFBR0Fna0NUaEltQUVnQUFCQUhBVDBBeHdBbS8vOEFIdjl3QWtvQ2ZoSW1BQ2dBQUJBSEFUOEJZQUFwLy84QUZQOUtBZ2tCMHhJbUFFZ0FBQkFIQVQ4QW5nQUQvLzhBSGdBQUFrb0RJUkltQUNnQUFCQUhBVHNBa0FEai8vOEFGQUFHQWdrQ2NSSW1BRWdBQUJBR0FUdHZNLy8vQUJiL3dBS3VBM1FTSmdBcUFBQVFCd0U2QU1rQXhmLy9BQmYrVVFIN0FxOFNKZ0JLQUFBUUJnRTZaQUQvL3dBVy84QUNyZ01RRWlZQUtnQUFFQWNCUEFEWUFOTC8vd0FYL2xFQit3SStFaVlBU2dBQUVBY0JQQUNFQUFELy93QVcvOEFDcmdNRkVpWUFLZ0FBRUFjQlBRRG5BTjMvL3dBWC9sRUIrd0lvRWlZQVNnQUFFQWNCUFFDNkFBRC8vd0FXL3dVQ3JnS01FaVlBS2dBQUVBY0JYZ0NlQUFELy93QVgvbEVCK3dKckVpWUFTZ0FBRUFjQlRBQ21BQUQvL3dBVi8vb0NTZ1BORWlZQUt3QUFFQWNCT2dCdkFSNy8vd0FYLy8wQjhRTWRFaVlBU3dBQUVBWUJPbmx1Ly84QUZmLzZBa29DMnhJbUFDc0FBQkJHQUcvc3IzOGZSMEgvLy8veC8vMEI4UUtjRWlZQVN3QUFFQVlBYjlPZC8vLy9rLy8vQVI4RENoSW1BQ3dBQUJBSEFVRC9lUUI4QUFML2hBQUdBUkFDc0FBSUFDY0FBQk1XRndZaklpWW5FU2NpQnlJbUp6NEJOell5SGdJeVBnSTNNaDRCRkFZSEJpTWlKeTRCZFEwSkJpb0xGd000SURZR0d3TVBQQ0VJRkIwa0ppc1pGUmtYQmcwQkR4RXNQaTRjRkJ3QjFydjJId2tJQWIrRFVRZ05NRW9OQXhVbUlnNGFKaGdWRHhZa0VpOGZFaGNBQUFML3ZBQUdBTWtDWXdBSUFCWUFBQk1XRndZaklpWW5FU2NpTlRRK0FqY3lGeFlVQmdkMURRa0dLZ3NYQTBneUZ6bFhNQ29MQVFrU0FkYTc5aDhKQ0FHL1FCa09DZ2dQQlJjRUNROEcvLy8vMy8vL0FLQUMwaEltQUN3QUFCQUhBVHovd0FDVS8vLy8xZjlOQUlrQ1JoSW1BQ3dBQUJBR0FUK3ZCdi8vLy9UL1ZRQ29Bb0VTSmdCTUFBQVFCZ0Uvemc3Ly93QWEvLzhBZVFMRUVpWUFMQUFBRUFjQlBRQUFBSndBQVFBMkFBWUFpd0hXQUFnQUFCTVdGd1lqSWlZbkVYVU5DUVlxQ3hjREFkYTc5aDhKQ0FHLy8vOEFDUUFFQWdZRGpCSW1BQzBBQUJBSEFUb0FmQURkQUFML2hQNlJBTmtDcndBaUFEb0FBQmNVSXlJdUFTY21KelEyTlI0Qk16STNOalUwSmljbU5EY21Oell6QmhRZUFSY1dBaVkwTmpjMk54WVhGaGNXRkFjR0p5NENKd1lIQmdlaldBa2JOUnRCRWc0aFRDc2NFZzhOQmc0Q0F4a1RGd2tCQ3djUnpSY1ZFeW8rTXhFY0pBWUZDaGtsRFJnZlBSVUlCc2luQVFjSkZpb0ZId0VaTENva0pGV2hVS1Y1S0JnTUNUNUlUWlJLb1FKakNpWWtGQ3dkSVE0Wk9Bd1ZCaEFQR3d3YUhpb2tEQTRBLy84QUsvOEZBbUVDMEJJbUFDNEFBQkFHQVY1eUFQLy9BQjcvQlFKa0F0c1NKZ0JPQUFBUUJnRmVkZ0QvL3dBM0FBNEN0QU5ZRWlZQUx3QUFFQWNBZEFFSEFPai8vd0FRLy84QWhnTThFaVlBVHdBQUVBY0FkUC8zQU16Ly93QTMvd1VDdEFLdUVpWUFMd0FBRUFjQlhnQ2VBQUQvL3dBSS93VUFrd0txRWlZQVR3QUFFQVlCWG8wQS8vOEFOd0FPQXJRQ3JoSW1BQzhBQUJBSEFVMEJBQUFBLy84QU53QU9BclFDcmhJbUFDOEFBQkFIQUhjQktBQUEvLzhBRnYvL0FRY0NxaEFtQUU4QUFCQUhBSGNBb1FBQS8vOEFDUUFPQXJRQ3JoSW1BQzhBQUJBR0FVcnJIUC8vLzhILy93RE9BcW9TSmdCUEFBQVFCZ0ZLb3dELy93QVovL2dDWUFObEVpWUFNUUFBRUFjQWRBRHdBUFgvL3dBaS8vb0I0d0p3RWlZQVVRQUFFQWNBZEFDckFBRC8vd0FaL3dVQ1lBTE1FaVlBTVFBQUVBWUJYbjBBLy84QUl2OEZBZU1COHhJbUFGRUFBQkFHQVY0N0FQLy9BQm4vK0FKZ0EzRVNKZ0F4QUFBUUJ3RTdBS2tCTS8vL0FDTC8rZ0hqQW9BU0pnQlJBQUFRQmdFN2FFTC8vd0FpLy9vQjR3TU5FaVlBVVFBQUVBY0JYdit3QTB2Ly93QVdBQTRDamdMWkVpWUFNZ0FBRUFjQWJ3Q29BSGIvL3dBMC8vOENNQUpqRWlZQVVnQUFFQVlBYjNFQS8vOEFGZ0FPQW80QzlSSW1BRElBQUJBSEFUd0F6QUMzLy84QU5QLy9BakFDUGhJbUFGSUFBQkFIQVR3QW5BQUEvLzhBRmdBT0FvNERGUkltQURJQUFCQUhBVUVBdmdDRC8vOEFOUC8vQWpBQ2toSW1BRklBQUJBSEFVRUFrUUFBQUFJQUZ2L3lCRFFDZXdBd0FFQUFBQUV5RnhVR0J3WUhCaFlYRmhVeVBnRXpGUVVYTWpjMk14UU9BU2NHQlRVR0J3WWlKaWNtTlRRK0FqTXlGemNXTXdRR0ZCWVhGakkzTmo4QkppY21JZ1lEVjFVa0hHUzVQeEVDQVFROXRtQXkvb0lGZFYrdlZ4b1RDbjcraVMxTkhXZHlLbGd4VlhGQmRFa0JHMUwrRmljZEhUem1NQTRIQVJ0WEgxUlVBbTROTWdRQkFnNU9QQkFuTkJjTE5qQ2tDUklVSWdvSERoOVlPUk1JSnlkVGxFVjZXelp0WXdpbFcybGdJa2hlSEI3RWRTTU1MQUFEQUJqLzZnT1dBZDRBTVFCRUFFc0FBRGMwTnpZM01qTXlGaGMyTnpZNkFSY1dGeFlVQnc0Q0J3WUhCaFFYRmpNeU56WTNNaFlWQmdjR0l5SW1Kd1lqSWlZa1BnRTNOVFFuSmlNT0FRY0dCeFFYRmpJMkFTWWpJZ2NHRlJobVVYSUdCekpDRGp4dElTWVZJRXdsRHdJaFZWa3FYUjROQWhsbk9UdElUUW9QSkdKTVRFZGdHRHlsWDJFQmFCMERBaHdQSGlkUEkwd1hJUmx6UlFHNkZ6VW1IRG1wZGtnNURDNHBZaDRKQ0JFdEV4NEpHQkVIQXdjdUV5c05XeFFhSXc4TFBpVWRMeVJ3V0JBMk5neEJQeHdQQnhBV01vVStGUkVKQVVna0N4WWovLzhBTHYvMEFxc0RMaEltQURVQUFCQUhBSFFBMEFDKy8vOEFHLy8xQWlJQ2NCSW1BRlVBQUJBSEFIUUF4Z0FBLy84QUx2OEZBcXNDaHhJbUFEVUFBQkFIQVY0QXFRQUEvLzhBRy84RkFpSUI0aEltQUZVQUFCQUdBVjVXQVAvL0FDNy85QUtyQXlrU0pnQTFBQUFRQndFN0FJMEE2Ly8vQUJ2LzlRSWlBbmtTSmdCVkFBQVFCd0U3QUlJQU8vLy9BQS8vL3dKd0F0c1NKZ0EyQUFBUUJ3QjBBUFVBYS8vL0FCYi80d0hmQW5BU0pnQldBQUFRQndCMEFLMEFBUC8vQUEvLy93SndBejBTSmdBMkFBQVFCd0U2QUpvQWp2Ly9BQmIvNHdIZkFxOFNKZ0JXQUFBUUJnRTZYUUQvL3dBUC94Y0NjQUpnRWlZQU5nQUFFQWNBZUFER0FBRC8vd0FXL3hvQjN3SEtFaVlBVmdBQUVBY0FlQUMyQUFQLy93QVAvLzhDY0FMWkVpWUFOZ0FBRUFjQk93Q1dBSnYvL3dBVy8rTUIzd0pURWlZQVZnQUFFQVlCTzJZVi8vOEFBUDhlQW40Q1JCSW1BRGNBQUJBR0FWNGFHZi8vQUJEL0JRR1RBcWdTSmdCWEFBQVFCZ0ZlQ2dELy93QUFBQUFDZmdMbkVpWUFOd0FBRUFjQk93Q0tBS24vL3dBQUFBQUNmZ0pFRWlZQU53QUFFQWNBYndCcC96Yi8vLy8xLy9FQmt3S29FaVlBVndBQUVFY0FiLy9JL2VoaE8wM2EvLzhBRlAvK0FoWURJeEltQURnQUFCQUhBVUFBUWdDVi8vOEFEZi8vQWVrQ2poSW1BRmdBQUJBR0FVQWNBUC8vQUJULy9nSVdBcmtTSmdBNEFBQVFCZ0J2ZDFiLy93QU4vLzhCNlFKakVpWUFXQUFBRUFZQWIxVUEvLzhBRlAvK0FoWUN2aEltQURnQUFCQUhBVHdBbHdDQS8vOEFEZi8vQWVrQ1BoSW1BRmdBQUJBSEFUd0FnQUFBLy84QUZQLytBaFlDL2hJbUFEZ0FBQkFIQVQ0QXBnQ3ovLzhBRGYvL0Fla0NTeEltQUZnQUFCQUhBVDRBamdBQS8vOEFGUC8rQWhZREVSSW1BRGdBQUJBSEFVRUFxUUIvLy84QURmLy9BZWtDa2hJbUFGZ0FBQkFHQVVGMUFQLy9BQlQvWUFJa0FtTVNKZ0E0QUFBUUJ3RS9BVW9BR2YvL0FBMy9Zd0lOQWJrU0pnQllBQUFRQndFL0FUTUFIUC8vQUE0QUFBT3pBM0FTSmdBNkFBQVFCd0U2QVQ0QXdmLy9BQzcvNndNUUFxOFNKZ0JhQUFBUUJ3RTZBUG9BQVAvL0FCei83Z0lTQTFVU0pnQThBQUFRQndFNkFHNEFwdi8vQUJiK1dBSWdBcThTSmdCY0FBQVFCZ0U2ZFFELy93QWMvKzRDRWdLK0VpWUFQQUFBRUFZQWFWZ20vLzhBSFAvOUF3SURDeEltQUQwQUFCQUhBSFFCSWdDYi8vOEFFLy84QWZRQ2NCSW1BRjBBQUJBSEFIUUFxUUFBLy84QUhQLzlBd0lDMnhJbUFEMEFBQkFIQVQwQTlRQ3ovLzhBRS8vOEFmUUNLQkltQUYwQUFCQUhBVDBBc0FBQS8vOEFIUC85QXdJREZCSW1BRDBBQUJBSEFUc0F1UURXLy84QUUvLzhBZlFDUGhJbUFGMEFBQkFHQVR0aUFBQUJBQTcrWGdKZ0F6NEFLd0FBQVRJVUZ3VVRCejhCTkNZbkppY0hJaWNtTlRjbU5ENEJNaDRDRlJRSEppY21JeUlIQmhRV0Z6STNOZ0paQlFMK3FSWGNBcEFPQXdjR2dnMEpFSmdVSkVWT1VVbzBCU2c1UkR3NUV3a0lGRDVObEFGT05nb3EvWThWVlFOWjlqZDRKRElQR2hVMnJOZDRLU0kwUVI4WUNqZ3NORkVxbVg5QUN4Zi8vd0FkLy9vRGN3TFhFaVlBaHYvNkVFY0FkQUUvQU9rMkhqS2YvLzhBRXYvMkE2c0NjQkFtQUVRQUFCQW5BRWdCb3Yvd0VBY0FkQUdFQUFELy93QVdBQUFDamdNTEVpWUFNZ0FBRUNZQUVsMEFFQWNBZEFEdUFKdi8vd0EwLzlJQ01BSndFaVlBVWdBQUVHWUFFbDdTTnJJelhCQUhBSFFBeXdBQS8vOEFELzhGQW5BQ1lCSW1BRFlBQUJBSEFWNEFxUUFBLy84QUZ2OEZBZDhCeWhJbUFGWUFBQkFHQVY0OUFBQUJBQklCL2dFc0FxOEFGd0FBRWlZME5qYzJOeFlYRmhjV0ZBY0dKeTRDSndZSEJnY3BGeFVUS2o0ekVSd2tCZ1FMR1NVTkdCODlGZ2NHQWY0S0ppUVVMQjBoRGhrNERCVUdFQThiREJvZUtpUU1EZ0FCQUI4Qnh3RU9BajRBRmdBQUVpWTBOak1lQVJjK0F6YzJGeFlVQndZSEJnY21NUklVRHdzaEpSc1VDdzBURlFnRUJSMFNGeWt6QWdZWUdnWVRIaFFVRVFnSEN3b0tCUTBKSlF3UUZSTUFBQUVBSHdIYUFPQUNQZ0FTQUFBU05EWXpIZ0V5UGdFM05qSVdGQWNPQVNNaUh4UVBCQ0FUR0NVSUNnOEpCaHcyRHl3Q0RTc0dJQlFER1JBRkNnMEpLeFlBQUFFQUlnSFhBSGtDS0FBTUFBQVRQZ0V5SGdFWEZBWWlKaWNtSWdVWURoSVlBaFFhRUFjU0FmOFlFUU1YRUJnUEJRWU1BQUFDQUI4QnBRRExBa3NBRFFBYkFBQVNKalEzTmpNeUZ4WVhGQVlqSWpjbUl5SUhIQUVYRmpNeU56d0JNUklNRkNnYUZ5OEVLaWdmUWhZYkh3WU1GUkVqQndIREhqVVVJUXdaTGpJaFpCY2VBeE1URVI0RkVBQUFBUUFtLzBjQTJnQWlBQlVBQUJjR0l5SW5KalUwTmpjWElpTWlCd1lWRkJjV01qZlBHUkF1R3pjaEpFY0NBeUFVSGhVYk5ScXREQmd0UEI0eEN4a05GQjhnRWhjTEFBRUFHZ0htQWFZQ2pnQWVBQUFUSWdjaUppYytBVGMyTWg0Q01qNENOekllQVJRR0J3WWpJaWN1QVpRZ05nWWJBdzg4SVFnVUhTUW1LeGtWR1JjR0RRRVBFU3crTGh3VUhBSTNVUWdOTUVvTkF4VW1JZzRhSmhnVkR4WWtFaThmRWhjQUFnQXNBZjRBOGdLU0FBb0FFd0FBRXpZek1oWVhGQWNHQnljM0ZBY0dCeWMzTmpKaERCRUlEQUlLRUNrbHhnb05MU1EwRENNQ2VSa09DUklSR3pVV1VoRVJGam9XV2huLy93QU9BQUFEc3dOSUVpWUFPZ0FBRUFjQVF3R1ZBT0QvL3dBdS8rc0RFQUpvRWlZQVdnQUFFQWNBUXdFOUFBRC8vd0FPQUFBRHN3TlhFaVlBT2dBQUVBY0FkQUdRQU9mLy93QXUvK3NERUFKd0VpWUFXZ0FBRUFjQWRBRktBQUQvL3dBT0FBQURzd05qRWlZQU9nQUFFQWNBYVFFbEFNdi8vd0F1LytzREVBS1lFaVlBV2dBQUVBY0FhUURvQUFELy93QWMvKzRDRWdNd0VpWUFQQUFBRUFjQVF3REZBTWovL3dBVy9sZ0NJQUpvRWlZQVhBQUFFQWNBUXdDM0FBQUFBUUFlQU5nQkt3RW1BQTRBQURjaU5UUStBamN5RnhZVkZBWUhVRElYT1Zjd0ZBNFVDUkxZR2cwS0NCQUZCd29PQlJBR0FBRUFIZ0RZQVlJQkpRQVFBQUEzSWpVMFBnUTNNaGNXRlJRR0IxQXlGeUpJVFVrWEZBNFVDUkxZR2cwS0JRY0hCZ01IQ2c0RkVBWUFBUUFiQWJZQWdBSnJBQWtBQUJNeUZSUUhCZzhCTnpab0dDSUtDVEE0REFKckl5bERGQTRFc0FVQUFRQWJBYllBZ0FKckFBa0FBQk15RlJRSEJnOEJOelpvR0NJS0NUQTREQUpySXlsREZBNEVzQVVBQVFBakFBb0FpQUMvQUFrQUFEY3lGUlFIQmc4Qk56WndHQ0lLQ1RBNERMOGpLVU1VRGdTd0JRQUFBZ0EyQWVvQTF3TDdBQXNBRndBQUV6Y25ORGNYRlJjT0FTTWlKemNuTkRjWEZSY09BU01pa2dFQkpCRVFBeGtGSkZ3QkFTUVFFUVFZQlNRQ1Vod3BVeEVReHlJRERWY2RLbE1SRU1jaUJBMEFBQUlBTmdIcUFOY0Mrd0FMQUJjQUFCTTNKelEzRnhVWERnRWpJaWMzSnpRM0Z4VVhEZ0VqSXBJQkFTUVJFQU1aQlNSY0FRRWtFQkVFR0FVa0FsSWNLVk1SRU1jaUF3MVhIU3BURVJESElnUU5BQUFDQUZVQUh3RCtBUzBBQ3dBWEFBQS9BU2MwTnhjVkZ3NEJJeUluTnljME54Y1ZGdzRCSXlLNUFRRWtFUkFER1FVa1pBRUJKQkVRQXhrRkpIOGNLRklVRWNjaUJBeGtIQ3BSRXhISElRVU1BQUVBRi8vOUFZSURXQUFjQUFBekZDc0JJZ2NEQnlJbkpqVTBOejRCTndNekV6WTNNaGNXRkFZUEFlVVpKQXdDQkRzcUV3Y3ZGU2NVQ2xBSkNFczVEZ01OR0hnQ0FRSUhCZzRGQ3hRR0FnVUNBUm4rOGdFSEdBUUtFUWNLQUFBQkFCZi8vUUdFQTFnQUxRQUFNeFFyQVNJSEF3Y3VBVFkzTmpjMUJ5SW5KalUwTno0Qk53TXpFelkzTWhjV0JnOEJGVDRCTnpZV0ZSUVBBZVVaSkF3Q0EwZ2dGUU1WQkdBN0toTUhMeFVuRkFwUUNRaExPUTRHRUJoNElVRWFFQk1TalFJQkFaa0pCQTBURVFRSk5RWU9CUXNVQmdJRkFnRVovdklCQnhnS0ZRY0tNZ1FIQlFVTENoY05Fd0FBQVFBaEFNSUFwUUZCQUF3QUFCTStBVE15RmhjVUJpSW1KeVloQ0NVTElTZ0RIaWdaQ3hvQkFTVWJLQm9sR0FnSUZRQURBQmIvL3dHTkFFSUFDZ0FWQUI0QUFEYzBOamN5RmhRR0J3WWlOelEyTnpJV0ZBWUhCaUl6SWpVMFB3RXlGUlFXSkE0VkR3d0pEektRSkE0VkR3d0pEektvR0JrYUpDSUlFUWNSSEE0REJTTUlFUWNSSEE0REJTTUlEQXdoSWdBQkFGUUFPd0d2QWRNQUdnQUFOejRCTnpZM01oY1dGQThCSGdFWEZoY09BUWNHSXk0Q0p5WlVJRllzYkM4TkJnTUU2dzg0SWxFOUFRWUVDUUllY0VRZFJPVVpSQ0pWR2hZSkVnYXpDQmtSS0NnQkRnZ1ZFeWNiRGlJQUFBRUFNZ0F3QWFvQnZRQVVBQUEzSmljME5UUTNQZ0UzSlRjZUF4Y09BM1l0QlVkcFFBYisrREl4VTAxTUtScFBWMVV3RVJNRUF4OHFQVEVYWXpFakhCRVhIeDgvUWtRQUFBRUFGUUFBQWNVQ3RRQVNBQUF6SWowQk5CTTJOell6TmpJVURnTUhCaWNTeDNOT0ZBVUdDU1U2Ums4bVR5QUtKQUUxc1dRWkJCaFJhbmg5T1hjQUFRQWQvLzREQ1FLWkFFOEFBRGNpTlRRMk16WTNOVFEzQnlJR0p5WW5OejRCTnpZM05qTXlGeFlWSmlJT0FRYytBVGMySGdFR0R3RUdGQmNWUGdFM05qY3lGUlFISWdjR0J4NEJNelkzTmpjeUZoVU9BU01pTGdFbkppY0dPeGdOQkNrU0JDVUZEd2dUQWhRQ0xDRWxZMmFCUlJZWlJZVnVUdzhtVFNBUUVRTUpDYkFDQWhZcUZ6STdJZ0pRV0JnWUYzVk1paVZDUnc0ZFVMUmxEenRVSkVvYUhxOGpBdzBIQXc0ZUhnUUJBUU1PSkFJRkJJQlNWUk1YUkNjNFl6MEZDUVVGQ2hNV0JoZ09IQTBVQXdRREJ3d2lDQWdXQmdWQlBnd0pFQzBIRTBjMEFSa1lNVkVEQUFFQUFQKzhCTW9DWlFCVUFBQUJKeUlIQmdjR0ZCY0hFeWNpSmpRMk14WVhGakkzUGdFeUhnUVhFell6TWhjV0Z4NEJGQVlpTGdRdkFTWW5OQzRCQmdjR0J3WW5KaWNEQmlNR0J3WUhCaFVYRkE0QklpNEJQZ1VCK0Y4cE1BSUdGUUplSDlVSUNSSU1QRHpCZlM0R0hrWTRMaVlpSGhESUdCTTdIUWtNRlEwU0lDQUhCd2tMQlFrRUFnSU9IQm8xYlE0WUhCS3ZEQVVRRWdRQ0JBUUNGeUVhRWdVS0N3d01DZ0hyQWdjblB0eURHd2NCN2d3YUZob0RCUTRFR3hneFRWNVpTUklCWEJhNE8ycS9PaHNhR1NVOFRGTWxSQjRPRlNFSUd5aFIxUmtPRUQ0QmN3TTYxekFmR0JkSENDSVpBUklyVUZ4alhFOEFBUUFlQU5nQkt3RW1BQTRBQURjaU5UUStBamN5RnhZVkZBWUhVRElYT1Zjd0ZBNFVDUkxZR2cwS0NCQUZCd29PQlJBRy8vOEFEdi9wQXBVRFBoQW1BRWtBQUJBSEFFd0NDdi9qLy84QURnQUdBcDREUGhBbUFFa0FBQkFIQUU4Q0hnQU9BQUVBZS84RkFRYi93Z0FQQUFBWFBnRXlGeFlWRkFjT0FRY0dJeUlud2dZUEVnY1dOd29KQnhjWEJnWlBEUVFDQmhFUVZSQVBCeGtDQUFBQkFBQUJYd0JjQUFVQWJBQUZBQUlBQUFBQkFBRUFBQUJBQUFBQUF3QUJBQUFBQUFBQUFBQUFBQUFrQUUwQXZRRWhBWXdDQlFJYUFrSUNiZ0srQXY0REhnTTRBMUlEYmdPbEE4SUVDQVJMQklRRTNBVXJCV0FGeHdZU0JqZ0dXUWFIQnJrRzNRY2FCNWNIN3doS0NJVUl2UWoyQ1VvSm9Rbm1DZjhLTVFwNkNwY0s4d3N3QzEwTG9Rd0ZER1lNdFF6bURTOE5XdzIwRGVvT0hRNVJEbjhPbmc3ZkR3a1BJZzg1RDRVUHpSQVVFR1FRclJEcEVUNFJlaEdkRWVJU0tCSkhFcDRTMnhNVEUxY1RsQlBTRkJBVVBoU0VGTElWQmhWU0ZZY1Z6QllhRml3V2V4YXNGcmNYRFJkb0Y5RVlRQmhoR01jWTZSbFpHV01adUJuYkdsc2FkUnFpR3V3YTl4c0NHeGtiYmh1Zkc3Z2I4QnY3SEFZY1JoeFpIRzBjZ2h5TkhKa2NwUnl4SEwwY3lSelZIVUlkVGgxYUhXWWRjaDE5SFlrZGxCMmZIYW9kOXg0REhnOGVHeDRuSGpNZVB4NkNIbzBlbVI2bEhyRWV2QjdJSHhBZld4OW5IM01mZmgrSkg1UWZvQitzSDdjZnd4L1BIOW9mNVNBS0lDOGdaeUNYSU9rZzlDRUFJUXdoRnlFaUlTMGhPQ0ZGSVZFaFhTRm9JWE1oZnlIREljNGgyaUhsSWZFaC9TSUpJaFVpSVNJdElqa2lSU0pSSWwwaWFTSjFJb0VpalNLWUlxUWlzQ0s4SXNnaTFDTGdJdXdpOXlNREl3NGpHaU1tSXpJalBpTktJMVlqWWlOdEkzb2poU09SSTlBajl5UURKQTRrR1NRbEpEa2tSU1NmSktva3RTVEJKTTBrMlNUa0pQQWsvQ1VJSlJNbEhpVXFKVFlsUVNWTUpWZ2xZeVZ2SlhzbGhpV1NKWjRscWlXMkpoZ21pQ2FVSnFBbXJDYTNKc01tenliYkp1Y204eWIrSndvbkZpY2lKeTBuT0NkREowOG5XeWRwSjNVbmdDZUxKNVlub2lldUo3b254aWZTSjkwbjZTZjFLQUVvRFNnWktDUW9MeWc3S0Vjb1V5aGZLR3NvZGlpNktNZ28yQ2puS1BncEJDa1BLVGtwWVNtQ0tad3B5Q25yS2h3cVFDcE1LbGdxWkNwd0tud3FpQ3FVS3FBcXVpcldLdXNyQUNzVkt6NHJaeXVQSzc0c0JTd2VMRTRzZkN5Z0xMOHRNeTJ2TGNrdDFTM2hMZjRBQVFBQUFBRUF4ZUN2RlROZkR6ejFBQXNFQUFBQUFBREtNNHVwQUFBQUFOVXhDWDcvaFA1UkJNb0Q4Z0FBQUFnQUFnQUFBQUFBQUFLMEFBQUFBQUFBQXJRQUFBR2FBQUFBaWdBV0FQSUFOZ0tOQURnQ09nQUpBaE1BSHdLdUFBVUFwZ0FiQVRFQUR3Rm9BQm9DQ0FBbkFoa0FDZ0MyLytvQlBnQWVBSkFBRndIU0FCVUNoZ0FtQUlNQUhBSktBQkFDQ1FBS0Fya0FTUUxWQUJzQ2dnQVdBbllBQ2dLWUFCWUNSd0FlQUtzQUh3Qi8vK29CNXdCVUFmZ0FRQUhqQURJQ0JnQUtCQ3dBR3dLUUFCb0MyQUFlQXRVQUZnS1lBQ1lDWGdBZUFzVUFKZ0xGQUJZQ2JBQVZBSnNBR2dJZUFBa0NiQUFyQXNVQU53TlBBQndDZ2dBWkFxNEFGZ0tOQUNZQzJnQWJBdG9BTGdLU0FBOENmZ0FBQWo4QUZBS0NBQXNEd3dBT0FtWUFHd0lqQUJ3REl3QWNBYk1BSHdJQ0FBQUNLZ0FBQVRvQUVnSy9BQ0FBc0FBdkFna0FFZ0kvQUI0Q2lBQVdBZzBBQ1FJcUFCUUNZQUFPQWhBQUZ3SDdBQmNBbXdBWUFMYi9qZ0oxQUI0QW9RQVdBeDBBR2dJQUFDSUNRQUEwQWpvQVBnSU9BQ1FDTlFBYkFnSUFGZ0dlQUJBQ0NBQU5BaE1BSWdNOEFDNEI0Z0FTQWpJQUZnSDdBQk1CYVFBMEFKVUFOQUhxQUJnQnh3QWFBSW9BRndLSUFCVUNLUC9xQWtELy93SWovL1lBZ3dBY0FnSUFDZ0Y4QUVJQ2hnQW1BUDhBQ2dMT0FGUUNaZ0JKQW9ZQUpnRStBQjRBNFFBWkFoa0FFZ0dBQUFrQlVBQUxBTEFBR1FIMkFDRUJoQUFTQUpBQUR3RVJBQ3NBY3dBYUFSWUFGd0tlQURJQ2V3QU5BcGdBRndOekFBa0I4UC9qQXBBQUZRS1FBQm9Da0FBYUFwQUFHZ0tRQUJvQ2tBQWFBNElBSGdMVkFCWUNYZ0FlQWw0QUhnSmVBQjRDWGdBZUFKc0FDQUNiQUF3QW0vL0hBSnYvMFFLNkFBb0NnZ0FaQXE0QUZnS3VBQllDcmdBV0FxNEFGZ0t1QUJZQjRnQk1BcTRBRmdJL0FCUUNQd0FVQWo4QUZBSS9BQlFDSXdBY0FnWUFJUUxZQUVrQ0NRQVNBZ2tBRWdJSkFCSUNDUUFTQWdrQUVnSUpBQklEc2dBU0FvZ0FGZ0lxQUJRQ0tnQVVBaW9BRkFJcUFCUUFtd0FjQUpzQUlRQ2IvN3dBbS8vYUFsSUFNd0lBQUNJQ1FBQTBBa0FBTkFKQUFEUUNRQUEwQWtBQU5BRmdBRG9DUUFBMEFnZ0FEUUlJQUEwQ0NBQU5BZ2dBRFFJeUFCWUNFd0FZQWpJQUZnS1FBQm9DQ1FBU0FwQUFJUUlKQUJJQ2tBQWFBZ2tBRWdMVkFCWUNpQUFXQXRVQUZnS0lBQllDMVFBV0FvZ0FGZ0xWQUJZQ2lBQVdBcGdBSmdKZUFCNENLZ0FVQWw0QUhnSXFBQlFDWGdBZUFpb0FGQUplQUI0Q0tnQVVBbDRBSGdJcUFCUUN4UUFXQWhBQUZ3TEZBQllDRUFBWEFzVUFGZ0lRQUJjQ3hRQVdBaEFBRndKc0FCVUIrd0FYQW13QUZRSDcvL0VBbS8rVEFKdi9oQUNiLzd3QW0vL2ZBSnYvMVFDYi8vUUFtd0FhQUpzQU5nSWVBQWtBclArRUFtd0FLd0oxQUI0Q3hRQTNBS0VBRUFMRkFEY0FvUUFJQXNVQU53TEZBRGNCTVFBV0FzVUFDUUNoLzhFQ2dnQVpBZ0FBSWdLQ0FCa0NBQUFpQW9JQUdRSUFBQ0lDQUFBaUFxNEFGZ0pBQURRQ3JnQVdBa0FBTkFLdUFCWUNRQUEwQkR3QUZnT25BQmdDMmdBdUFqVUFHd0xhQUM0Q05RQWJBdG9BTGdJMUFCc0NrZ0FQQWdJQUZnS1NBQThDQWdBV0FwSUFEd0lDQUJZQ2tnQVBBZ0lBRmdKK0FBQUJuZ0FRQW40QUFBSitBQUFCbnYvMkFqOEFGQUlJQUEwQ1B3QVVBZ2dBRFFJL0FCUUNDQUFOQWo4QUZBSUlBQTBDUHdBVUFnZ0FEUUkvQUJRQ0NBQU5BOE1BRGdNOEFDNENJd0FjQWpJQUZnSWpBQndESXdBY0Fmc0FFd01qQUJ3Qit3QVRBeU1BSEFIN0FCTUNZQUFPQTRJQUhRT3lBQklDcmdBV0FrQUFOQUtTQUE4Q0FnQVdBVG9BRWdFNkFCOEEvQUFmQUpBQUlnRGhBQjhBL0FBbUFjY0FHZ0VYQUN3RHd3QU9BendBTGdQREFBNERQQUF1QThNQURnTThBQzRDSXdBY0FqSUFGZ0UrQUI0QnBRQWVBS1lBR3dDbUFCc0FwZ0FqQVBJQU5nRHlBRFlCSHdCVkFab0FGd0dhQUJjQXhRQWhBYkVBRmdIbkFGUUI0d0F5QWRJQUZRTXVBQjBFMXdBQUFUNEFIZ0s5QUE0Q3pnQU9BWm9BZXdBQkFBQUQ4djVqQUFBRTEvK0UvM3dFeWdBQkFBQUFBQUFBQUFBQUFBQUFBQUFCWHdBREFoZ0JrQUFGQUFBQ3pRS2FBQUFBandMTkFwb0FBQUhvQURNQkFBQUFBQUFBQUFBQUFBQUFBS0FBQUM5QUFBQktBQUFBQUFBQUFBQndlWEp6QUVBQUlQc0NBL0wrWXdBQUEvSUJuUUFBQUJFQUFBQUFBYmNDb3dBQUFDQUFBUUFBQUFJQUFBQURBQUFBRkFBREFBRUFBQUFVQUFRQkNBQUFBRDRBSUFBRUFCNEFmZ0NnQUt3QkRnRXBBU3dCTVFFM0FUMEJTUUZrQVg0QmtnSC9BaGtDeHdMZEhvVWU4eUFVSUJvZ0hpQWlJQ1lnT2lCRUlLd2hJaUlTK3dMLy93QUFBQ0FBb0FDaEFLNEJFZ0VyQVM0Qk5BRTVBVDhCVEFGbUFaSUIvQUlZQXNZQzJCNkFIdklnRXlBWUlCd2dJQ0FtSURrZ1JDQ3NJU0lpRXZzQi8vLy80LzlqLzhIL3dQKzkvN3ovdS8rNS83ai90LysxLzdUL29mODQveUQrZFA1azRzTGlWdUUzNFRUaE0rRXk0Uy9oSGVFVTRLM2dPTjlKQmxzQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXVBSC9oYkFFalFBQUFBQU1BSllBQXdBQkJBa0FBQUIwQUFBQUF3QUJCQWtBQVFBbUFIUUFBd0FCQkFrQUFnQU9BSm9BQXdBQkJBa0FBd0JLQUtnQUF3QUJCQWtBQkFBMkFQSUFBd0FCQkFrQUJRQWtBU2dBQXdBQkJBa0FCZ0EwQVV3QUF3QUJCQWtBQ0FBZ0FZQUFBd0FCQkFrQUNRQWdBWUFBQXdBQkJBa0FEQUEwQWFBQUF3QUJCQWtBRFNKd0FkUUFBd0FCQkFrQURnQTJKRVFBUXdCdkFIQUFlUUJ5QUdrQVp3Qm9BSFFBSUFBb0FHTUFLUUFnQURJQU1BQXhBREFBTEFBZ0FFc0FhUUJ0QUdJQVpRQnlBR3dBZVFBZ0FFY0FaUUJ6QUhjQVpRQnBBRzRBSUFBb0FHc0FhUUJ0QUdJQVpRQnlBR3dBZVFCbkFHVUFjd0IzQUdVQWFRQnVBQzRBWXdCdkFHMEFLUUJCQUhJQVl3Qm9BR2tBZEFCbEFHTUFkQUJ6QUNBQVJBQmhBSFVBWndCb0FIUUFaUUJ5QUZJQVpRQm5BSFVBYkFCaEFISUFNUUF1QURBQU1BQXpBRHNBVlFCTEFGY0FUZ0E3QUVFQWNnQmpBR2dBYVFCMEFHVUFZd0IwQUhNQVJBQmhBSFVBWndCb0FIUUFaUUJ5QUMwQVVnQmxBR2NBZFFCc0FHRUFjZ0JCQUhJQVl3Qm9BR2tBZEFCbEFHTUFkQUJ6QUNBQVJBQmhBSFVBWndCb0FIUUFaUUJ5QUNBQVVnQmxBR2NBZFFCc0FHRUFjZ0JXQUdVQWNnQnpBR2tBYndCdUFDQUFNUUF1QURBQU1BQXpBQ0FBTWdBd0FERUFNQUJCQUhJQVl3Qm9BR2tBZEFCbEFHTUFkQUJ6QUVRQVlRQjFBR2NBYUFCMEFHVUFjZ0F0QUZJQVpRQm5BSFVBYkFCaEFISUFTd0JwQUcwQVlnQmxBSElBYkFCNUFDQUFSd0JsQUhNQWR3QmxBR2tBYmdCb0FIUUFkQUJ3QURvQUx3QXZBR3NBYVFCdEFHSUFaUUJ5QUd3QWVRQm5BR1VBY3dCM0FHVUFhUUJ1QUM0QVl3QnZBRzBBUXdCdkFIQUFlUUJ5QUdrQVp3Qm9BSFFBSUFBb0FHTUFLUUFnQURJQU1BQXhBREFBTEFBZ0FFc0FhUUJ0QUdJQVpRQnlBR3dBZVFBZ0FFY0FaUUJ6QUhjQVpRQnBBRzRBSUFBb0FHc0FhUUJ0QUdJQVpRQnlBR3dBZVFCbkFHVUFjd0IzQUdVQWFRQnVBQzRBWXdCdkFHMEFLUUFOQUFvQURRQUtBRlFBYUFCcEFITUFJQUJHQUc4QWJnQjBBQ0FBVXdCdkFHWUFkQUIzQUdFQWNnQmxBQ0FBYVFCekFDQUFiQUJwQUdNQVpRQnVBSE1BWlFCa0FDQUFkUUJ1QUdRQVpRQnlBQ0FBZEFCb0FHVUFJQUJUQUVrQVRBQWdBRThBY0FCbEFHNEFJQUJHQUc4QWJnQjBBQ0FBVEFCcEFHTUFaUUJ1QUhNQVpRQXNBQ0FBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBeEFDNEFJQUFnQUZRQWFBQnBBSE1BSUFCc0FHa0FZd0JsQUc0QWN3QmxBQ0FBYVFCekFDQUFZd0J2QUhBQWFRQmxBR1FBSUFCaUFHVUFiQUJ2QUhjQUxBQWdBR0VBYmdCa0FDQUFhUUJ6QUNBQVlRQnNBSE1BYndBZ0FHRUFkZ0JoQUdrQWJBQmhBR0lBYkFCbEFDQUFkd0JwQUhRQWFBQWdBR0VBSUFCR0FFRUFVUUFnQUdFQWRBQTZBQ0FBSUFCb0FIUUFkQUJ3QURvQUx3QXZBSE1BWXdCeUFHa0FjQUIwQUhNQUxnQnpBR2tBYkFBdUFHOEFjZ0JuQUM4QVR3QkdBRXdBRFFBS0FBMEFDZ0FOQUFvQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFBMEFDZ0JUQUVrQVRBQWdBRThBVUFCRkFFNEFJQUJHQUU4QVRnQlVBQ0FBVEFCSkFFTUFSUUJPQUZNQVJRQWdBRllBWlFCeUFITUFhUUJ2QUc0QUlBQXhBQzRBTVFBZ0FDMEFJQUF5QURZQUlBQkdBR1VBWWdCeUFIVUFZUUJ5QUhrQUlBQXlBREFBTUFBM0FBMEFDZ0F0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBTFFBdEFDMEFMUUF0QUMwQUxRQXRBQzBBRFFBS0FBMEFDZ0JRQUZJQVJRQkJBRTBBUWdCTUFFVUFEUUFLQUZRQWFBQmxBQ0FBWndCdkFHRUFiQUJ6QUNBQWJ3Qm1BQ0FBZEFCb0FHVUFJQUJQQUhBQVpRQnVBQ0FBUmdCdkFHNEFkQUFnQUV3QWFRQmpBR1VBYmdCekFHVUFJQUFvQUU4QVJnQk1BQ2tBSUFCaEFISUFaUUFnQUhRQWJ3QWdBSE1BZEFCcEFHMEFkUUJzQUdFQWRBQmxBQ0FBZHdCdkFISUFiQUJrQUhjQWFRQmtBR1VBSUFCa0FHVUFkZ0JsQUd3QWJ3QndBRzBBWlFCdUFIUUFJQUJ2QUdZQUlBQmpBRzhBYkFCc0FHRUFZZ0J2QUhJQVlRQjBBR2tBZGdCbEFDQUFaZ0J2QUc0QWRBQWdBSEFBY2dCdkFHb0FaUUJqQUhRQWN3QXNBQ0FBZEFCdkFDQUFjd0IxQUhBQWNBQnZBSElBZEFBZ0FIUUFhQUJsQUNBQVpnQnZBRzRBZEFBZ0FHTUFjZ0JsQUdFQWRBQnBBRzhBYmdBZ0FHVUFaZ0JtQUc4QWNnQjBBSE1BSUFCdkFHWUFJQUJoQUdNQVlRQmtBR1VBYlFCcEFHTUFJQUJoQUc0QVpBQWdBR3dBYVFCdUFHY0FkUUJwQUhNQWRBQnBBR01BSUFCakFHOEFiUUJ0QUhVQWJnQnBBSFFBYVFCbEFITUFMQUFnQUdFQWJnQmtBQ0FBZEFCdkFDQUFjQUJ5QUc4QWRnQnBBR1FBWlFBZ0FHRUFJQUJtQUhJQVpRQmxBQ0FBWVFCdUFHUUFJQUJ2QUhBQVpRQnVBQ0FBWmdCeUFHRUFiUUJsQUhjQWJ3QnlBR3NBSUFCcEFHNEFJQUIzQUdnQWFRQmpBR2dBSUFCbUFHOEFiZ0IwQUhNQUlBQnRBR0VBZVFBZ0FHSUFaUUFnQUhNQWFBQmhBSElBWlFCa0FDQUFZUUJ1QUdRQUlBQnBBRzBBY0FCeUFHOEFkZ0JsQUdRQUlBQnBBRzRBSUFCd0FHRUFjZ0IwQUc0QVpRQnlBSE1BYUFCcEFIQUFEUUFLQUhjQWFRQjBBR2dBSUFCdkFIUUFhQUJsQUhJQWN3QXVBQTBBQ2dBTkFBb0FWQUJvQUdVQUlBQlBBRVlBVEFBZ0FHRUFiQUJzQUc4QWR3QnpBQ0FBZEFCb0FHVUFJQUJzQUdrQVl3QmxBRzRBY3dCbEFHUUFJQUJtQUc4QWJnQjBBSE1BSUFCMEFHOEFJQUJpQUdVQUlBQjFBSE1BWlFCa0FDd0FJQUJ6QUhRQWRRQmtBR2tBWlFCa0FDd0FJQUJ0QUc4QVpBQnBBR1lBYVFCbEFHUUFJQUJoQUc0QVpBQWdBSElBWlFCa0FHa0Fjd0IwQUhJQWFRQmlBSFVBZEFCbEFHUUFJQUJtQUhJQVpRQmxBR3dBZVFBZ0FHRUFjd0FnQUd3QWJ3QnVBR2NBSUFCaEFITUFJQUIwQUdnQVpRQjVBQ0FBWVFCeUFHVUFJQUJ1QUc4QWRBQWdBSE1BYndCc0FHUUFJQUJpQUhrQUlBQjBBR2dBWlFCdEFITUFaUUJzQUhZQVpRQnpBQzRBSUFCVUFHZ0FaUUFnQUdZQWJ3QnVBSFFBY3dBc0FDQUFhUUJ1QUdNQWJBQjFBR1FBYVFCdUFHY0FJQUJoQUc0QWVRQWdBR1FBWlFCeUFHa0FkZ0JoQUhRQWFRQjJBR1VBSUFCM0FHOEFjZ0JyQUhNQUxBQWdBR01BWVFCdUFDQUFZZ0JsQUNBQVlnQjFBRzRBWkFCc0FHVUFaQUFzQUNBQVpRQnRBR0lBWlFCa0FHUUFaUUJrQUN3QUlBQnlBR1VBWkFCcEFITUFkQUJ5QUdrQVlnQjFBSFFBWlFCa0FDQUFZUUJ1QUdRQUx3QnZBSElBSUFCekFHOEFiQUJrQUNBQWR3QnBBSFFBYUFBZ0FHRUFiZ0I1QUNBQWN3QnZBR1lBZEFCM0FHRUFjZ0JsQUNBQWNBQnlBRzhBZGdCcEFHUUFaUUJrQUNBQWRBQm9BR0VBZEFBZ0FHRUFiZ0I1QUNBQWNnQmxBSE1BWlFCeUFIWUFaUUJrQUNBQWJnQmhBRzBBWlFCekFDQUFZUUJ5QUdVQUlBQnVBRzhBZEFBZ0FIVUFjd0JsQUdRQUlBQmlBSGtBSUFCa0FHVUFjZ0JwQUhZQVlRQjBBR2tBZGdCbEFDQUFkd0J2QUhJQWF3QnpBQzRBSUFCVUFHZ0FaUUFnQUdZQWJ3QnVBSFFBY3dBZ0FHRUFiZ0JrQUNBQVpBQmxBSElBYVFCMkFHRUFkQUJwQUhZQVpRQnpBQ3dBSUFCb0FHOEFkd0JsQUhZQVpRQnlBQ3dBSUFCakFHRUFiZ0J1QUc4QWRBQWdBR0lBWlFBZ0FISUFaUUJzQUdVQVlRQnpBR1VBWkFBZ0FIVUFiZ0JrQUdVQWNnQWdBR0VBYmdCNUFDQUFid0IwQUdnQVpRQnlBQ0FBZEFCNUFIQUFaUUFnQUc4QVpnQWdBR3dBYVFCakFHVUFiZ0J6QUdVQUxnQWdBRlFBYUFCbEFDQUFjZ0JsQUhFQWRRQnBBSElBWlFCdEFHVUFiZ0IwQUNBQVpnQnZBSElBSUFCbUFHOEFiZ0IwQUhNQUlBQjBBRzhBSUFCeUFHVUFiUUJoQUdrQWJnQWdBSFVBYmdCa0FHVUFjZ0FnQUhRQWFBQnBBSE1BSUFCc0FHa0FZd0JsQUc0QWN3QmxBQ0FBWkFCdkFHVUFjd0FnQUc0QWJ3QjBBQ0FBWVFCd0FIQUFiQUI1QUNBQWRBQnZBQ0FBWVFCdUFIa0FJQUJrQUc4QVl3QjFBRzBBWlFCdUFIUUFJQUJqQUhJQVpRQmhBSFFBWlFCa0FDQUFkUUJ6QUdrQWJnQm5BQ0FBZEFCb0FHVUFJQUJtQUc4QWJnQjBBSE1BSUFCdkFISUFJQUIwQUdnQVpRQnBBSElBSUFCa0FHVUFjZ0JwQUhZQVlRQjBBR2tBZGdCbEFITUFMZ0FOQUFvQURRQUtBRVFBUlFCR0FFa0FUZ0JKQUZRQVNRQlBBRTRBVXdBTkFBb0FJZ0JHQUc4QWJnQjBBQ0FBVXdCdkFHWUFkQUIzQUdFQWNnQmxBQ0lBSUFCeUFHVUFaZ0JsQUhJQWN3QWdBSFFBYndBZ0FIUUFhQUJsQUNBQWN3QmxBSFFBSUFCdkFHWUFJQUJtQUdrQWJBQmxBSE1BSUFCeUFHVUFiQUJsQUdFQWN3QmxBR1FBSUFCaUFIa0FJQUIwQUdnQVpRQWdBRU1BYndCd0FIa0FjZ0JwQUdjQWFBQjBBQ0FBU0FCdkFHd0FaQUJsQUhJQUtBQnpBQ2tBSUFCMUFHNEFaQUJsQUhJQUlBQjBBR2dBYVFCekFDQUFiQUJwQUdNQVpRQnVBSE1BWlFBZ0FHRUFiZ0JrQUNBQVl3QnNBR1VBWVFCeUFHd0FlUUFnQUcwQVlRQnlBR3NBWlFCa0FDQUFZUUJ6QUNBQWN3QjFBR01BYUFBdUFDQUFWQUJvQUdrQWN3QWdBRzBBWVFCNUFDQUFhUUJ1QUdNQWJBQjFBR1FBWlFBZ0FITUFid0IxQUhJQVl3QmxBQ0FBWmdCcEFHd0FaUUJ6QUN3QUlBQmlBSFVBYVFCc0FHUUFJQUJ6QUdNQWNnQnBBSEFBZEFCekFDQUFZUUJ1QUdRQUlBQmtBRzhBWXdCMUFHMEFaUUJ1QUhRQVlRQjBBR2tBYndCdUFDNEFEUUFLQUEwQUNnQWlBRklBWlFCekFHVUFjZ0IyQUdVQVpBQWdBRVlBYndCdUFIUUFJQUJPQUdFQWJRQmxBQ0lBSUFCeUFHVUFaZ0JsQUhJQWN3QWdBSFFBYndBZ0FHRUFiZ0I1QUNBQWJnQmhBRzBBWlFCekFDQUFjd0J3QUdVQVl3QnBBR1lBYVFCbEFHUUFJQUJoQUhNQUlBQnpBSFVBWXdCb0FDQUFZUUJtQUhRQVpRQnlBQ0FBZEFCb0FHVUFJQUJqQUc4QWNBQjVBSElBYVFCbkFHZ0FkQUFnQUhNQWRBQmhBSFFBWlFCdEFHVUFiZ0IwQUNnQWN3QXBBQzRBRFFBS0FBMEFDZ0FpQUU4QWNnQnBBR2NBYVFCdUFHRUFiQUFnQUZZQVpRQnlBSE1BYVFCdkFHNEFJZ0FnQUhJQVpRQm1BR1VBY2dCekFDQUFkQUJ2QUNBQWRBQm9BR1VBSUFCakFHOEFiQUJzQUdVQVl3QjBBR2tBYndCdUFDQUFid0JtQUNBQVJnQnZBRzRBZEFBZ0FGTUFid0JtQUhRQWR3QmhBSElBWlFBZ0FHTUFid0J0QUhBQWJ3QnVBR1VBYmdCMEFITUFJQUJoQUhNQUlBQmtBR2tBY3dCMEFISUFhUUJpQUhVQWRBQmxBR1FBSUFCaUFIa0FJQUIwQUdnQVpRQWdBRU1BYndCd0FIa0FjZ0JwQUdjQWFBQjBBQ0FBU0FCdkFHd0FaQUJsQUhJQUtBQnpBQ2tBTGdBTkFBb0FEUUFLQUNJQVRRQnZBR1FBYVFCbUFHa0FaUUJrQUNBQVZnQmxBSElBY3dCcEFHOEFiZ0FpQUNBQWNnQmxBR1lBWlFCeUFITUFJQUIwQUc4QUlBQmhBRzRBZVFBZ0FHUUFaUUJ5QUdrQWRnQmhBSFFBYVFCMkFHVUFJQUJ0QUdFQVpBQmxBQ0FBWWdCNUFDQUFZUUJrQUdRQWFRQnVBR2NBSUFCMEFHOEFMQUFnQUdRQVpRQnNBR1VBZEFCcEFHNEFad0FzQUNBQWJ3QnlBQ0FBY3dCMUFHSUFjd0IwQUdrQWRBQjFBSFFBYVFCdUFHY0FJQUF0QUMwQUlBQnBBRzRBSUFCd0FHRUFjZ0IwQUNBQWJ3QnlBQ0FBYVFCdUFDQUFkd0JvQUc4QWJBQmxBQ0FBTFFBdEFDQUFZUUJ1QUhrQUlBQnZBR1lBSUFCMEFHZ0FaUUFnQUdNQWJ3QnRBSEFBYndCdUFHVUFiZ0IwQUhNQUlBQnZBR1lBSUFCMEFHZ0FaUUFnQUU4QWNnQnBBR2NBYVFCdUFHRUFiQUFnQUZZQVpRQnlBSE1BYVFCdkFHNEFMQUFnQUdJQWVRQWdBR01BYUFCaEFHNEFad0JwQUc0QVp3QWdBR1lBYndCeUFHMEFZUUIwQUhNQUlBQnZBSElBSUFCaUFIa0FJQUJ3QUc4QWNnQjBBR2tBYmdCbkFDQUFkQUJvQUdVQUlBQkdBRzhBYmdCMEFDQUFVd0J2QUdZQWRBQjNBR0VBY2dCbEFDQUFkQUJ2QUNBQVlRQWdBRzRBWlFCM0FDQUFaUUJ1QUhZQWFRQnlBRzhBYmdCdEFHVUFiZ0IwQUM0QURRQUtBQTBBQ2dBaUFFRUFkUUIwQUdnQWJ3QnlBQ0lBSUFCeUFHVUFaZ0JsQUhJQWN3QWdBSFFBYndBZ0FHRUFiZ0I1QUNBQVpBQmxBSE1BYVFCbkFHNEFaUUJ5QUN3QUlBQmxBRzRBWndCcEFHNEFaUUJsQUhJQUxBQWdBSEFBY2dCdkFHY0FjZ0JoQUcwQWJRQmxBSElBTEFBZ0FIUUFaUUJqQUdnQWJnQnBBR01BWVFCc0FDQUFkd0J5QUdrQWRBQmxBSElBSUFCdkFISUFJQUJ2QUhRQWFBQmxBSElBSUFCd0FHVUFjZ0J6QUc4QWJnQWdBSGNBYUFCdkFDQUFZd0J2QUc0QWRBQnlBR2tBWWdCMUFIUUFaUUJrQUNBQWRBQnZBQ0FBZEFCb0FHVUFJQUJHQUc4QWJnQjBBQ0FBVXdCdkFHWUFkQUIzQUdFQWNnQmxBQzRBRFFBS0FBMEFDZ0JRQUVVQVVnQk5BRWtBVXdCVEFFa0FUd0JPQUNBQUpnQWdBRU1BVHdCT0FFUUFTUUJVQUVrQVR3Qk9BRk1BRFFBS0FGQUFaUUJ5QUcwQWFRQnpBSE1BYVFCdkFHNEFJQUJwQUhNQUlBQm9BR1VBY2dCbEFHSUFlUUFnQUdjQWNnQmhBRzRBZEFCbEFHUUFMQUFnQUdZQWNnQmxBR1VBSUFCdkFHWUFJQUJqQUdnQVlRQnlBR2NBWlFBc0FDQUFkQUJ2QUNBQVlRQnVBSGtBSUFCd0FHVUFjZ0J6QUc4QWJnQWdBRzhBWWdCMEFHRUFhUUJ1QUdrQWJnQm5BQ0FBWVFBZ0FHTUFid0J3QUhrQUlBQnZBR1lBSUFCMEFHZ0FaUUFnQUVZQWJ3QnVBSFFBSUFCVEFHOEFaZ0IwQUhjQVlRQnlBR1VBTEFBZ0FIUUFid0FnQUhVQWN3QmxBQ3dBSUFCekFIUUFkUUJrQUhrQUxBQWdBR01BYndCd0FIa0FMQUFnQUcwQVpRQnlBR2NBWlFBc0FDQUFaUUJ0QUdJQVpRQmtBQ3dBSUFCdEFHOEFaQUJwQUdZQWVRQXNBQ0FBY2dCbEFHUUFhUUJ6QUhRQWNnQnBBR0lBZFFCMEFHVUFMQUFnQUdFQWJnQmtBQ0FBY3dCbEFHd0FiQUFnQUcwQWJ3QmtBR2tBWmdCcEFHVUFaQUFnQUdFQWJnQmtBQ0FBZFFCdUFHMEFid0JrQUdrQVpnQnBBR1VBWkFBZ0FHTUFid0J3QUdrQVpRQnpBQ0FBYndCbUFDQUFkQUJvQUdVQUlBQkdBRzhBYmdCMEFDQUFVd0J2QUdZQWRBQjNBR0VBY2dCbEFDd0FJQUJ6QUhVQVlnQnFBR1VBWXdCMEFDQUFkQUJ2QUNBQWRBQm9BR1VBSUFCbUFHOEFiQUJzQUc4QWR3QnBBRzRBWndBZ0FHTUFid0J1QUdRQWFRQjBBR2tBYndCdUFITUFPZ0FOQUFvQURRQUtBREVBS1FBZ0FFNEFaUUJwQUhRQWFBQmxBSElBSUFCMEFHZ0FaUUFnQUVZQWJ3QnVBSFFBSUFCVEFHOEFaZ0IwQUhjQVlRQnlBR1VBSUFCdUFHOEFjZ0FnQUdFQWJnQjVBQ0FBYndCbUFDQUFhUUIwQUhNQUlBQnBBRzRBWkFCcEFIWUFhUUJrQUhVQVlRQnNBQ0FBWXdCdkFHMEFjQUJ2QUc0QVpRQnVBSFFBY3dBc0FDQUFhUUJ1QUNBQVR3QnlBR2tBWndCcEFHNEFZUUJzQUNBQWJ3QnlBQ0FBVFFCdkFHUUFhUUJtQUdrQVpRQmtBQ0FBVmdCbEFISUFjd0JwQUc4QWJnQnpBQ3dBSUFCdEFHRUFlUUFnQUdJQVpRQWdBSE1BYndCc0FHUUFJQUJpQUhrQUlBQnBBSFFBY3dCbEFHd0FaZ0F1QUEwQUNnQU5BQW9BTWdBcEFDQUFUd0J5QUdrQVp3QnBBRzRBWVFCc0FDQUFid0J5QUNBQVRRQnZBR1FBYVFCbUFHa0FaUUJrQUNBQVZnQmxBSElBY3dCcEFHOEFiZ0J6QUNBQWJ3Qm1BQ0FBZEFCb0FHVUFJQUJHQUc4QWJnQjBBQ0FBVXdCdkFHWUFkQUIzQUdFQWNnQmxBQ0FBYlFCaEFIa0FJQUJpQUdVQUlBQmlBSFVBYmdCa0FHd0FaUUJrQUN3QUlBQnlBR1VBWkFCcEFITUFkQUJ5QUdrQVlnQjFBSFFBWlFCa0FDQUFZUUJ1QUdRQUx3QnZBSElBSUFCekFHOEFiQUJrQUNBQWR3QnBBSFFBYUFBZ0FHRUFiZ0I1QUNBQWN3QnZBR1lBZEFCM0FHRUFjZ0JsQUN3QUlBQndBSElBYndCMkFHa0FaQUJsQUdRQUlBQjBBR2dBWVFCMEFDQUFaUUJoQUdNQWFBQWdBR01BYndCd0FIa0FJQUJqQUc4QWJnQjBBR0VBYVFCdUFITUFJQUIwQUdnQVpRQWdBR0VBWWdCdkFIWUFaUUFnQUdNQWJ3QndBSGtBY2dCcEFHY0FhQUIwQUNBQWJnQnZBSFFBYVFCakFHVUFJQUJoQUc0QVpBQWdBSFFBYUFCcEFITUFJQUJzQUdrQVl3QmxBRzRBY3dCbEFDNEFJQUJVQUdnQVpRQnpBR1VBSUFCakFHRUFiZ0FnQUdJQVpRQWdBR2tBYmdCakFHd0FkUUJrQUdVQVpBQWdBR1VBYVFCMEFHZ0FaUUJ5QUNBQVlRQnpBQ0FBY3dCMEFHRUFiZ0JrQUMwQVlRQnNBRzhBYmdCbEFDQUFkQUJsQUhnQWRBQWdBR1lBYVFCc0FHVUFjd0FzQUNBQWFBQjFBRzBBWVFCdUFDMEFjZ0JsQUdFQVpBQmhBR0lBYkFCbEFDQUFhQUJsQUdFQVpBQmxBSElBY3dBZ0FHOEFjZ0FnQUdrQWJnQWdBSFFBYUFCbEFDQUFZUUJ3QUhBQWNnQnZBSEFBY2dCcEFHRUFkQUJsQUNBQWJRQmhBR01BYUFCcEFHNEFaUUF0QUhJQVpRQmhBR1FBWVFCaUFHd0FaUUFnQUcwQVpRQjBBR0VBWkFCaEFIUUFZUUFnQUdZQWFRQmxBR3dBWkFCekFDQUFkd0JwQUhRQWFBQnBBRzRBSUFCMEFHVUFlQUIwQUNBQWJ3QnlBQ0FBWWdCcEFHNEFZUUJ5QUhrQUlBQm1BR2tBYkFCbEFITUFJQUJoQUhNQUlBQnNBRzhBYmdCbkFDQUFZUUJ6QUNBQWRBQm9BRzhBY3dCbEFDQUFaZ0JwQUdVQWJBQmtBSE1BSUFCakFHRUFiZ0FnQUdJQVpRQWdBR1VBWVFCekFHa0FiQUI1QUNBQWRnQnBBR1VBZHdCbEFHUUFJQUJpQUhrQUlBQjBBR2dBWlFBZ0FIVUFjd0JsQUhJQUxnQU5BQW9BRFFBS0FETUFLUUFnQUU0QWJ3QWdBRTBBYndCa0FHa0FaZ0JwQUdVQVpBQWdBRllBWlFCeUFITUFhUUJ2QUc0QUlBQnZBR1lBSUFCMEFHZ0FaUUFnQUVZQWJ3QnVBSFFBSUFCVEFHOEFaZ0IwQUhjQVlRQnlBR1VBSUFCdEFHRUFlUUFnQUhVQWN3QmxBQ0FBZEFCb0FHVUFJQUJTQUdVQWN3QmxBSElBZGdCbEFHUUFJQUJHQUc4QWJnQjBBQ0FBVGdCaEFHMEFaUUFvQUhNQUtRQWdBSFVBYmdCc0FHVUFjd0J6QUNBQVpRQjRBSEFBYkFCcEFHTUFhUUIwQUNBQWR3QnlBR2tBZEFCMEFHVUFiZ0FnQUhBQVpRQnlBRzBBYVFCekFITUFhUUJ2QUc0QUlBQnBBSE1BSUFCbkFISUFZUUJ1QUhRQVpRQmtBQ0FBWWdCNUFDQUFkQUJvQUdVQUlBQmpBRzhBY2dCeUFHVUFjd0J3QUc4QWJnQmtBR2tBYmdCbkFDQUFRd0J2QUhBQWVRQnlBR2tBWndCb0FIUUFJQUJJQUc4QWJBQmtBR1VBY2dBdUFDQUFWQUJvQUdrQWN3QWdBSElBWlFCekFIUUFjZ0JwQUdNQWRBQnBBRzhBYmdBZ0FHOEFiZ0JzQUhrQUlBQmhBSEFBY0FCc0FHa0FaUUJ6QUNBQWRBQnZBQ0FBZEFCb0FHVUFJQUJ3QUhJQWFRQnRBR0VBY2dCNUFDQUFaZ0J2QUc0QWRBQWdBRzRBWVFCdEFHVUFJQUJoQUhNQURRQUtBSEFBY2dCbEFITUFaUUJ1QUhRQVpRQmtBQ0FBZEFCdkFDQUFkQUJvQUdVQUlBQjFBSE1BWlFCeUFITUFMZ0FOQUFvQURRQUtBRFFBS1FBZ0FGUUFhQUJsQUNBQWJnQmhBRzBBWlFBb0FITUFLUUFnQUc4QVpnQWdBSFFBYUFCbEFDQUFRd0J2QUhBQWVRQnlBR2tBWndCb0FIUUFJQUJJQUc4QWJBQmtBR1VBY2dBb0FITUFLUUFnQUc4QWNnQWdBSFFBYUFCbEFDQUFRUUIxQUhRQWFBQnZBSElBS0FCekFDa0FJQUJ2QUdZQUlBQjBBR2dBWlFBZ0FFWUFid0J1QUhRQUlBQlRBRzhBWmdCMEFIY0FZUUJ5QUdVQUlBQnpBR2dBWVFCc0FHd0FJQUJ1QUc4QWRBQWdBR0lBWlFBZ0FIVUFjd0JsQUdRQUlBQjBBRzhBSUFCd0FISUFid0J0QUc4QWRBQmxBQ3dBSUFCbEFHNEFaQUJ2QUhJQWN3QmxBQ0FBYndCeUFDQUFZUUJrQUhZQVpRQnlBSFFBYVFCekFHVUFJQUJoQUc0QWVRQWdBRTBBYndCa0FHa0FaZ0JwQUdVQVpBQWdBRllBWlFCeUFITUFhUUJ2QUc0QUxBQWdBR1VBZUFCakFHVUFjQUIwQUNBQWRBQnZBQ0FBWVFCakFHc0FiZ0J2QUhjQWJBQmxBR1FBWndCbEFDQUFkQUJvQUdVQUlBQmpBRzhBYmdCMEFISUFhUUJpQUhVQWRBQnBBRzhBYmdBb0FITUFLUUFnQUc4QVpnQWdBSFFBYUFCbEFDQUFRd0J2QUhBQWVRQnlBR2tBWndCb0FIUUFJQUJJQUc4QWJBQmtBR1VBY2dBb0FITUFLUUFnQUdFQWJnQmtBQ0FBZEFCb0FHVUFJQUJCQUhVQWRBQm9BRzhBY2dBb0FITUFLUUFnQUc4QWNnQWdBSGNBYVFCMEFHZ0FJQUIwQUdnQVpRQnBBSElBSUFCbEFIZ0FjQUJzQUdrQVl3QnBBSFFBSUFCM0FISUFhUUIwQUhRQVpRQnVBQTBBQ2dCd0FHVUFjZ0J0QUdrQWN3QnpBR2tBYndCdUFDNEFEUUFLQUEwQUNnQTFBQ2tBSUFCVUFHZ0FaUUFnQUVZQWJ3QnVBSFFBSUFCVEFHOEFaZ0IwQUhjQVlRQnlBR1VBTEFBZ0FHMEFid0JrQUdrQVpnQnBBR1VBWkFBZ0FHOEFjZ0FnQUhVQWJnQnRBRzhBWkFCcEFHWUFhUUJsQUdRQUxBQWdBR2tBYmdBZ0FIQUFZUUJ5QUhRQUlBQnZBSElBSUFCcEFHNEFJQUIzQUdnQWJ3QnNBR1VBTEFBZ0FHMEFkUUJ6QUhRQUlBQmlBR1VBSUFCa0FHa0Fjd0IwQUhJQWFRQmlBSFVBZEFCbEFHUUFJQUJsQUc0QWRBQnBBSElBWlFCc0FIa0FJQUIxQUc0QVpBQmxBSElBSUFCMEFHZ0FhUUJ6QUNBQWJBQnBBR01BWlFCdUFITUFaUUFzQUNBQVlRQnVBR1FBSUFCdEFIVUFjd0IwQUNBQWJnQnZBSFFBSUFCaUFHVUFJQUJrQUdrQWN3QjBBSElBYVFCaUFIVUFkQUJsQUdRQUlBQjFBRzRBWkFCbEFISUFJQUJoQUc0QWVRQWdBRzhBZEFCb0FHVUFjZ0FnQUd3QWFRQmpBR1VBYmdCekFHVUFMZ0FnQUZRQWFBQmxBQ0FBY2dCbEFIRUFkUUJwQUhJQVpRQnRBR1VBYmdCMEFDQUFaZ0J2QUhJQUlBQm1BRzhBYmdCMEFITUFJQUIwQUc4QUlBQnlBR1VBYlFCaEFHa0FiZ0FnQUhVQWJnQmtBR1VBY2dBZ0FIUUFhQUJwQUhNQUlBQnNBR2tBWXdCbEFHNEFjd0JsQUNBQVpBQnZBR1VBY3dBZ0FHNEFid0IwQUNBQVlRQndBSEFBYkFCNUFDQUFkQUJ2QUNBQVlRQnVBSGtBSUFCa0FHOEFZd0IxQUcwQVpRQnVBSFFBSUFCakFISUFaUUJoQUhRQVpRQmtBQ0FBZFFCekFHa0FiZ0JuQUNBQWRBQm9BR1VBSUFCR0FHOEFiZ0IwQUNBQVV3QnZBR1lBZEFCM0FHRUFjZ0JsQUM0QURRQUtBQTBBQ2dCVUFFVUFVZ0JOQUVrQVRnQkJBRlFBU1FCUEFFNEFEUUFLQUZRQWFBQnBBSE1BSUFCc0FHa0FZd0JsQUc0QWN3QmxBQ0FBWWdCbEFHTUFid0J0QUdVQWN3QWdBRzRBZFFCc0FHd0FJQUJoQUc0QVpBQWdBSFlBYndCcEFHUUFJQUJwQUdZQUlBQmhBRzRBZVFBZ0FHOEFaZ0FnQUhRQWFBQmxBQ0FBWVFCaUFHOEFkZ0JsQUNBQVl3QnZBRzRBWkFCcEFIUUFhUUJ2QUc0QWN3QWdBR0VBY2dCbEFDQUFiZ0J2QUhRQUlBQnRBR1VBZEFBdUFBMEFDZ0FOQUFvQVJBQkpBRk1BUXdCTUFFRUFTUUJOQUVVQVVnQU5BQW9BVkFCSUFFVUFJQUJHQUU4QVRnQlVBQ0FBVXdCUEFFWUFWQUJYQUVFQVVnQkZBQ0FBU1FCVEFDQUFVQUJTQUU4QVZnQkpBRVFBUlFCRUFDQUFJZ0JCQUZNQUlBQkpBRk1BSWdBc0FDQUFWd0JKQUZRQVNBQlBBRlVBVkFBZ0FGY0FRUUJTQUZJQVFRQk9BRlFBV1FBZ0FFOEFSZ0FnQUVFQVRnQlpBQ0FBU3dCSkFFNEFSQUFzQUNBQVJRQllBRkFBVWdCRkFGTUFVd0FnQUU4QVVnQWdBRWtBVFFCUUFFd0FTUUJGQUVRQUxBQWdBRWtBVGdCREFFd0FWUUJFQUVrQVRnQkhBQ0FBUWdCVkFGUUFJQUJPQUU4QVZBQWdBRXdBU1FCTkFFa0FWQUJGQUVRQUlBQlVBRThBSUFCQkFFNEFXUUFnQUZjQVFRQlNBRklBUVFCT0FGUUFTUUJGQUZNQUlBQlBBRVlBSUFCTkFFVUFVZ0JEQUVnQVFRQk9BRlFBUVFCQ0FFa0FUQUJKQUZRQVdRQXNBQ0FBUmdCSkFGUUFUZ0JGQUZNQVV3QWdBRVlBVHdCU0FDQUFRUUFnQUZBQVFRQlNBRlFBU1FCREFGVUFUQUJCQUZJQUlBQlFBRlVBVWdCUUFFOEFVd0JGQUNBQVFRQk9BRVFBSUFCT0FFOEFUZ0JKQUU0QVJnQlNBRWtBVGdCSEFFVUFUUUJGQUU0QVZBQWdBRThBUmdBZ0FFTUFUd0JRQUZrQVVnQkpBRWNBU0FCVUFDd0FJQUJRQUVFQVZBQkZBRTRBVkFBc0FDQUFWQUJTQUVFQVJBQkZBRTBBUVFCU0FFc0FMQUFnQUU4QVVnQWdBRThBVkFCSUFFVUFVZ0FnQUZJQVNRQkhBRWdBVkFBdUFDQUFTUUJPQUNBQVRnQlBBQ0FBUlFCV0FFVUFUZ0JVQUNBQVV3QklBRUVBVEFCTUFDQUFWQUJJQUVVQURRQUtBRU1BVHdCUUFGa0FVZ0JKQUVjQVNBQlVBQ0FBU0FCUEFFd0FSQUJGQUZJQUlBQkNBRVVBSUFCTUFFa0FRUUJDQUV3QVJRQWdBRVlBVHdCU0FDQUFRUUJPQUZrQUlBQkRBRXdBUVFCSkFFMEFMQUFnQUVRQVFRQk5BRUVBUndCRkFGTUFJQUJQQUZJQUlBQlBBRlFBU0FCRkFGSUFJQUJNQUVrQVFRQkNBRWtBVEFCSkFGUUFXUUFzQUNBQVNRQk9BRU1BVEFCVkFFUUFTUUJPQUVjQUlBQkJBRTRBV1FBZ0FFY0FSUUJPQUVVQVVnQkJBRXdBTEFBZ0FGTUFVQUJGQUVNQVNRQkJBRXdBTEFBZ0FFa0FUZ0JFQUVrQVVnQkZBRU1BVkFBc0FDQUFTUUJPQUVNQVNRQkVBRVVBVGdCVUFFRUFUQUFzQUNBQVR3QlNBQ0FBUXdCUEFFNEFVd0JGQUZFQVZRQkZBRTRBVkFCSkFFRUFUQUFnQUVRQVFRQk5BRUVBUndCRkFGTUFMQUFnQUZjQVNBQkZBRlFBU0FCRkFGSUFJQUJKQUU0QUlBQkJBRTRBSUFCQkFFTUFWQUJKQUU4QVRnQWdBRThBUmdBZ0FFTUFUd0JPQUZRQVVnQkJBRU1BVkFBc0FDQUFWQUJQQUZJQVZBQWdBRThBVWdBZ0FFOEFWQUJJQUVVQVVnQlhBRWtBVXdCRkFDd0FJQUJCQUZJQVNRQlRBRWtBVGdCSEFDQUFSZ0JTQUU4QVRRQXNBQ0FBVHdCVkFGUUFJQUJQQUVZQUlBQlVBRWdBUlFBZ0FGVUFVd0JGQUNBQVR3QlNBQ0FBU1FCT0FFRUFRZ0JKQUV3QVNRQlVBRmtBSUFCVUFFOEFJQUJWQUZNQVJRQWdBRlFBU0FCRkFDQUFSZ0JQQUU0QVZBQWdBRk1BVHdCR0FGUUFWd0JCQUZJQVJRQWdBRThBVWdBZ0FFWUFVZ0JQQUUwQUlBQlBBRlFBU0FCRkFGSUFJQUJFQUVVQVFRQk1BRWtBVGdCSEFGTUFJQUJKQUU0QUlBQlVBRWdBUlFBZ0FFWUFUd0JPQUZRQUlBQlRBRThBUmdCVUFGY0FRUUJTQUVVQUxnQWdBR2dBZEFCMEFIQUFPZ0F2QUM4QWN3QmpBSElBYVFCd0FIUUFjd0F1QUhNQWFRQnNBQzRBYndCeUFHY0FMd0JQQUVZQVRBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVY4QUFBQUJBQUlBQXdBRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFEc0FQQUE5QUQ0QVB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUtNQWhBQ0ZBTDBBbGdEb0FJWUFqZ0NMQUowQXFRQ2tBSW9BMmdDREFKTUE4Z0R6QUkwQWx3Q0lBTU1BM2dEeEFKNEFxZ0QxQVBRQTlnQ2lBSzBBeVFESEFLNEFZZ0JqQUpBQVpBRExBR1VBeUFES0FNOEF6QUROQU00QTZRQm1BTk1BMEFEUkFLOEFad0R3QUpFQTFnRFVBTlVBYUFEckFPMEFpUUJxQUdrQWF3QnRBR3dBYmdDZ0FHOEFjUUJ3QUhJQWN3QjFBSFFBZGdCM0FPb0FlQUI2QUhrQWV3QjlBSHdBdUFDaEFIOEFmZ0NBQUlFQTdBRHVBTG9CQWdFREFRUUJCUUVHQVFjQS9RRCtBUWdCQ1FFS0FRc0Evd0VBQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdBK0FENUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJJd0VrQVNVQkpnRDZBTmNCSndFb0FTa0JLZ0VyQVN3QkxRRXVBUzhCTUFFeEFPSUE0d0V5QVRNQk5BRTFBVFlCTndFNEFUa0JPZ0U3QVR3QlBRRStBTEFBc1FFL0FVQUJRUUZDQVVNQlJBRkZBVVlCUndGSUFQc0EvQURrQU9VQlNRRktBVXNCVEFGTkFVNEJUd0ZRQVZFQlVnRlRBVlFCVlFGV0FWY0JXQUZaQVZvQld3RmNBVjBBdXdGZUFWOEJZQUZoQU9ZQTV3Q21BV0lCWXdGa0FXVUJaZ0ZuQU5nQTRRRGJBTndBM1FEZ0FOa0Ezd0ZvQVdrQmFnRnJBV3dCYlFGdUFXOEFzZ0N6QUxZQXR3REVBTFFBdFFERkFJSUF3Z0NIQUtzQXZnQy9BTHdCY0FDTUFPOEF3QURCQVhFSFFXMWhZM0p2YmdkaGJXRmpjbTl1QmtGaWNtVjJaUVpoWW5KbGRtVUhRVzluYjI1bGF3ZGhiMmR2Ym1WckMwTmphWEpqZFcxbWJHVjRDMk5qYVhKamRXMW1iR1Y0Q2tOa2IzUmhZMk5sYm5RS1kyUnZkR0ZqWTJWdWRBWkVZMkZ5YjI0SFJXMWhZM0p2YmdkbGJXRmpjbTl1QmtWaWNtVjJaUVpsWW5KbGRtVUtSV1J2ZEdGalkyVnVkQXBsWkc5MFlXTmpaVzUwQjBWdloyOXVaV3NIWlc5bmIyNWxhd1pGWTJGeWIyNEdaV05oY205dUMwZGphWEpqZFcxbWJHVjRDMmRqYVhKamRXMW1iR1Y0Q2tka2IzUmhZMk5sYm5RS1oyUnZkR0ZqWTJWdWRBeEhZMjl0YldGaFkyTmxiblFNWjJOdmJXMWhZV05qWlc1MEMwaGphWEpqZFcxbWJHVjRDMmhqYVhKamRXMW1iR1Y0QkVoaVlYSUVhR0poY2daSmRHbHNaR1VHYVhScGJHUmxCMmx0WVdOeWIyNEdTV0p5WlhabEIwbHZaMjl1WldzSGFXOW5iMjVsYXd0S1kybHlZM1Z0Wm14bGVBdHFZMmx5WTNWdFpteGxlQXhMWTI5dGJXRmhZMk5sYm5RTWEyTnZiVzFoWVdOalpXNTBCa3hoWTNWMFpRWnNZV04xZEdVTVRHTnZiVzFoWVdOalpXNTBER3hqYjIxdFlXRmpZMlZ1ZEFaTVkyRnliMjRFVEdSdmRBUnNaRzkwQms1aFkzVjBaUVp1WVdOMWRHVU1UbU52YlcxaFlXTmpaVzUwREc1amIyMXRZV0ZqWTJWdWRBWk9ZMkZ5YjI0R2JtTmhjbTl1QzI1aGNHOXpkSEp2Y0dobEIwOXRZV055YjI0SGIyMWhZM0p2YmdaUFluSmxkbVVHYjJKeVpYWmxEVTlvZFc1bllYSjFiV3hoZFhRTmIyaDFibWRoY25WdGJHRjFkQVpTWVdOMWRHVUdjbUZqZFhSbERGSmpiMjF0WVdGalkyVnVkQXh5WTI5dGJXRmhZMk5sYm5RR1VtTmhjbTl1Qm5KallYSnZiZ1pUWVdOMWRHVUdjMkZqZFhSbEMxTmphWEpqZFcxbWJHVjRDM05qYVhKamRXMW1iR1Y0REZSamIyMXRZV0ZqWTJWdWRBeDBZMjl0YldGaFkyTmxiblFHVkdOaGNtOXVCRlJpWVhJRWRHSmhjZ1pWZEdsc1pHVUdkWFJwYkdSbEIxVnRZV055YjI0SGRXMWhZM0p2YmdaVlluSmxkbVVHZFdKeVpYWmxCVlZ5YVc1bkJYVnlhVzVuRFZWb2RXNW5ZWEoxYld4aGRYUU5kV2gxYm1kaGNuVnRiR0YxZEFkVmIyZHZibVZyQjNWdloyOXVaV3NMVjJOcGNtTjFiV1pzWlhnTGQyTnBjbU4xYldac1pYZ0xXV05wY21OMWJXWnNaWGdMZVdOcGNtTjFiV1pzWlhnR1dtRmpkWFJsQm5waFkzVjBaUXBhWkc5MFlXTmpaVzUwQ25wa2IzUmhZMk5sYm5RSFFVVmhZM1YwWlFkaFpXRmpkWFJsQzA5emJHRnphR0ZqZFhSbEMyOXpiR0Z6YUdGamRYUmxERk5qYjIxdFlXRmpZMlZ1ZEF4elkyOXRiV0ZoWTJObGJuUUdWMmR5WVhabEJuZG5jbUYyWlFaWFlXTjFkR1VHZDJGamRYUmxDVmRrYVdWeVpYTnBjd2wzWkdsbGNtVnphWE1HV1dkeVlYWmxCbmxuY21GMlpRUkZkWEp2QzJOdmJXMWhZV05qWlc1MEFBQUJBQUgvL3dBUCIpIGZvcm1hdCgidHJ1ZXR5cGUiKTsgfSYjeGE7PC9zdHlsZT48L2RlZnM+PHJlY3QgZmlsbD0iI2ZmZmZmZiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgeD0iMCIgeT0iMCIvPjxnPjxnPjxpbWFnZSB4PSItMC41IiB5PSItMC41IiB3aWR0aD0iOTc3Ljc4IiBoZWlnaHQ9IjU1MCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUJJQUFBQUtJQ0FZQUFBQUlLNEVOQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQzd5U1VSQlZIaGU3ZDBoV0NQSjFnYmdsVWdrRWprU09SS0pISWxFamtTdVEwYU9SQ0pYSXBFalZ5Skhya1NPUlBML05VbTRsVTRuNlNUZDZhclQ3L3M4OWR3N2hCazZsYVp6NnR1VDZyOCtBQUFBQUFoTkFBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQWpsNWVYbDQvcjYrdVBwNldueEZRQUFCRUFBUUNnWEZ4Y2ZmLzMxMThmWjJkbmlLd0FBQ0lBQWdGQlMrTE1jQUFETXFZd0FnRkFFUUFBQTYxUkdBRUFvQWlBQWdIVXFJd0FnRkFFUUFNQTZsUkVBRUlvQUNBQmduY29JQUFoRkFBUUFzRTVsQkFDRUlnQUNBRmluTWdJQVFoRUFBUUNzVXhrQkFLRUlnQUFBMXFtTUFJQlFCRUFBQU90VVJnQkFLQUlnQUlCMUtpTUFJQlFCRUFEQU9wVVJBQkNLQUFnQVlKM0tDRGlwbDVlWGo4dkx5NVVGMnBnakhjdlQwOVBpNklBSTh0OXhBQURtVkViQVNWMWNYS3dzemtvWVoyZG5pNk1ESXNoL3Z3RUFtRk1aQVFkTG5UTWxkZk1jT3I1Ly83NTRSa0FFK2U4M0FBQnpLaVBnSUE4UER5dUxyRU1Hd0JCY1p3QUExcW1NZ0UrL2YvLytFK3ljb3F0SDF3MHdsUHhhQXdEQW5Nb0lDbkhLOEtYUGNYTno4L0grL3I1NEZnRGp5NjlSQUFETXFZeGdaTXZnNS96OGZHWFJVc080dmIwVi9nREZ5YTlUQUFETXFZd0lyN1RianBjKzNCWWRxRjErVFFNQVlFNWxSSGdsM25aODB6ZzBmRmsrUjdjekJ4QUFBUUMwVVJseFVycHgyc2V4WFRmNXZ3VXdkYTZKQUFEclZFYWMxTmpkT0ZGTjRUa0NkT1dhQ0FDd1RtWEVvRXJxK0lsODIvSDhlUUpNbldzaUFNQTZsUkdEMmhiKzBCL3pDdkEvcm9rQUFPdFVSZ3hxTnB1dEZPTExFYmtiWnd6NTNBSk1uV3NpQU1BNmxSRUVZTEVEOEQrdWlRQUE2MVJHRUVDKzJEbjJqbUlBdGN1dmlRQUF6S21NSUlDenM3T1ZCVS82TThCVTVkZERBQURtVkVZUVFOdGVTd0JUNVZvSUFMQk9aUVNCV1BRQXVCWUNBTFJSR1VFZ0ZqMEFyb1VBQUcxVVJoQ0lSUStBYXlFQVFCdVZFUVJpMFFQZ1dnZ0EwRVpsQklGWTlBQzRGZ0lBdEZFWlFTQVdQUUN1aFFBQWJWUkdFSWhGRDRCcklRQkFHNVVSQkdMUkErQmFDQURRUm1VRWdWajBBTGdXQWdDMFVSbEJJQlk5QUs2RkFBQnRWRVlRaUVVUGdHc2hBRUFibFJFRVl0RUQ0Rm9JQU5CR1pRU0JXUFFBdUJZQ0FMUlJHVUVnRmowQXJvVUFBRzFVUmhDSVJRK0FheUVBUUJ1VkVRUmkwUVBnV2dnQTBFWmxCSUZZOUFDNEZnSUF0RkVaUVNBV1BRRGpYUXRmWGw0K0xpOHZWMzUrR3VsclQwOVBpKzhDQUJpSFZTSUVraTg0QUtacXJHdmh4Y1hGeXMvT3g5bloyZUs3QUFER1laVUlnZVNMRFlDcE91UmF1S2w3cDYveC9mdjN4VThDQUJpSFZTSUVraTgyQUticWtHdmh0dTZkUXdZQVFHbFVLQkNJeFFkQXQydmhrQjAvdW4wQWdCSlpKVUlnK1FJRVlBcUdDSElBQUNKUzVVQWdGakRBMVBUOTBTM2RPd0JBVkZhSkVFaStpQUdJSU4wKzNlYk1BQURIczBxRVFQSkZEVUR0SGg0ZVZxNXJ1OFpTMjljQUFLWk9aUVNCV1BRQUpUdlZ4c3Y1MXdFQW1GTVpRU0FXUFVESkRnMS9ibTV1UHQ3ZjN4Zi95bTc1M3dVQVlFNWxCSUZZOUFBbG04MW1LOWVwTHVQMjluYXY4Q2ZKL3o0QUFITXFJd2pFb2dmQXRSQUFvSTNLQ0FLeDZBRndMUVFBYUtNeWdrQXNlZ0JjQ3dFQTJxaU1JQkNMSGdEWFFnQ0FOaW9qQ01TaUI4QzFFQUNnamNvSUFySG9BWEF0QkFCb296S0NRQ3g2QUZ3TEFRRGFxSXdnRUlzZUFOZENBSUEyS2lNSXhLSUh3TFVRQUtDTnlnZ0NzZWdCY0MwRUFHaWpNb0pBTEhvQVhBc0JBTnFvakNBUWl4NEExMElBZ0RZcUl3akVvZ2ZBdFJBQW9JM0tDQUt4NkFGd0xRUUFhS015Z2tBc2VnQmNDd0VBMnFpTUlCQ0xIZ0RYUWdDQU5pb2pDTVNpQjhDMUVBQ2dqY29JQXJIb0FYQXRCQUJvb3pLQ1FDeDZBRndMQVFEYXFJd2dFSXNlQU5kQ0FJQTJLaU1JeEtJSHdMVVFBS0NOeWdnQ3NlZ0JjQzBFQUdpak1vSkFMSG9BWEFzQkFOcW9qQ0FRaXg0QTEwSUFnRFlxSXdqRW9nZkF0UkFBb0kzS0NBS3g2QUZ3TFFRQWFLTXlna0FzZWdCY0N3RUEycWlNSUJDTEhnRFhRZ0NBTmlvakNNU2lCOEMxRUFDZ2pjb0lBckhvQVhBdEJBQm9vektDUUN4NkFGd0xBUURhcUl3Z0VJc2VBTmRDQUlBMktpTUl4S0lId0xVUUFLQ055Z2dDc2VnQmNDMEVBR2lqTW9KQUxIb0FYQXNCQU5xb2pDQVFpeDRBMTBJQWdEWXFJd2pFb2dmQXRSQUFvSTNLQ0FLeDZBRndMUVFBYUtNeWdrQXNlZ0JjQ3dFQTJxaU1JQkNMSGdEWFFnQ0FOaW9qQ01TaUI4QzFFQUNnamNvSUFySG9nV2w0ZW5yNnVMeThYUG1kN3pMUzMwbC9ON3I4T1FNQU1LY3lna0FzZWlDK2g0ZUhsZC8xZmNmWjJkbmlYNG9yZjc0QUFNeXBqQ0FRaTU1eHZMeThITlNOVWNKSXgvMzQrTGg0SnBSa3FQUHErL2Z2aTU4UVYvNThBUUNZVXhsQklCWTk0N2k0dUZpWit4cEg2aXFoTEx2T3E1dWJtNC8zOS9mRmQ1UEw1d2tBZ0RtVkVRUmkwVE9jbXJ0OERobFQyU3VtQkllY1c3ZTN0OEtmTGZLNUFnQmdUbVVFZ1ZqMERLZHJsMDlOVW9DUXVramFua2NhVTlncnBnUmR6aTMyWSs0QUFOYXBqQ0FRaTU3KzdkT2RVZVBlS2lrRXVydTdhMzArK2RBUjFMK3U1OVlVOXV6cFd6NS9BQURNcVl3Z0VJdWUvclYxWjBTWE9uK2F6emtOSFVIOW11SzVkU3JtRkFCZ25jb0lBckhvT2Q2dXJvd3BkR1BNWnJQVzU1NkdUcURqcExuYmRIN3A5T2xQUHE4QUFNeXBqQ0FRaTU3amJkdVBaYXFhSFVFNmdRNlQ3clNXejJNKzZKZTVCUUJZcHpLQ1FDeDZqcE82TS9JNXpNZVV1elBhT29KMEFlMW5XL2lqODZkLytmd0NBRENuTW9KQUxIb08xN1pBWjFYZUNhUUxxTHZtdVpYdXZPWVc3c1BLNXhzQWdEbVZFUVJpMFhPWXg4ZkhsYmxMUTFmR3VtWW5FTHMxenkzaHoybmtjdzRBd0p6S0NBS3g2RGxNdnUrUEJmcDJ6ckZ1MmpZVGQyNmRUajd2QUFETXFZd2dFSXVlL1RVL25tT0J2bDArVjJ6V3RwbTRjK3QwOG5rSEFHQk9aUVNCV1BUc3AvbnhuTnZiMjhVamJKTFBGNXZsODVTR2p4U2VWajczQUFETXFZd2dFSXVlN3Q3ZTNsWTJOZmJ4bkc2Y1k5MllwM0daZndDQWRTb2pDTVNpcDd2NysvdlB1YnE2dWhMK2RPUWMyNjV0N3g5T3ovd0RBS3hUR1VFZ0ZqM2ROTHQvbnArZkY0K3dpM05zdTdhOWZ6Zzk4dzhBc0U1bEJJRlk5SFRUN1A2aE8rZllkdm44cEdIdm4zSGtyd0VBQUhNcUl3akVvbWUzOUZHdnZFdEQ5ODkrbkdQYm1aOHllQjBBQU5hcGpDQVFpNTdkL3Zubm44ODVTbnUxc0IvbjJIYm1wd3hlQndDQWRTb2pDTVNpWjdmcjYrdlBPWnJOWm91djBrWGFPOGs1dHAzNUtZUFhBUUJnbmNvSUFySG8yZTdYcjErZjg1TTJnVTZCQnQzWk8ybTM1Znlrd1hpOERnQUE2MVJHRUloRnozWjVnUEh0MjdmRlY5bWw3ZGJtOWs1cWw4OFI0L0U2QUFDc1V4bEJJQlk5MjUyZm4zL09Ud28xNk1hdHpic3pSMlh3T2dBQXJGTVpRU0FXUGR1Wm4vMjBkZjZrNGRibW0rWHp4SGk4RGdBQTYxUkdFSWhGejNibVp6ODZmL1pucnNyZ2RRQUFXS2N5Z2tBc2VyWXpQOTNvL0RsY1BsK014K3NBQUxCT1pRU0JXUFJzWjM2NjBmbHp1SFIzdWVXY3ZiNitMcjdLcVRsM0FRRFdxWXdnRUl1ZTdjelBkanAvam5kN2UvczViKzQwTjU3OC9BVUFZRTVsQklGWTlHeG5mcmJUK1hPODFQV1R6NTh1b0hIa3J3RUFBSE1xSXdqRW9tYzc4N05xVThmUGN1ajhPVXpxL0ZuT29TNmdjZVRuTVFBQWN5b2pDTVNpWjdPM3R6ZnowOURXOGJNY0hFNFgwUGp5K1FjQVlFNWxCSUZZOUd4MmYzLy9PVGRYVjFlTHIwN1BycTZmTkhUK0hFOFgwTGp5OHhrQWdEbVZFUVR4OFBCZzBiTkI2djdKNzg3MC9QeThlR1I2Tm5YOTBDOWRRT1BLNXg0QWdEbVZFUVR3K1BpNHN1QkpkeUxpZjNUL3pQMysvWHZsUEZrT0hUL0QwQVUwbnZ6OEJnQmdUbVVFQWVSZEhUYzNOeC92NysrTFIwankrWmxLOTgvVDA5UE9qM294ckdZWFVBcHFPWTE4M2dFQW1GTVpRUUQ1WWtmNHN5NmZueWxvZmh5d2JhU2drT0hkM2QxOXpubjZHT0svLy82N2VJUWg1ZWM2QUFCektpTUl3R0pudStqejA2WGJaem5TOTZYdjV6UlNJUHYxNjlmUCtVL2RhR2xQS29hVm4vTUFBTXlwakNBQWk1M3RJcy9QdG00Zkh3Y3N3My8vL2JmeU1jUVVDSGxkaHBYL0hnQUFNS2N5Z2dBc2RyYkw1MmNxSTIwRUxtUW94OCtmUDFmdVJKYytHc1p3OHQ4RkFBRG1WRVlRZ01YT2R2bjhSQjI2ZmNyMzQ4ZVBsZGNzM1JrczNabU4vdVh6REFEQW5Nb0lBckRZMlM2Zm40aER0MDg5MGkzMzg5ZnV5NWN2SDc5Ky9WbzhTbC95T1FZQVlFNWxCQUZZN0d4bmZpaEpjOSttOC9QemorZm41OFdqOUNHZlh3QUE1bFJHRUlERnpuYm1oOUtrd0NjRlAvbTVtVWE2Uzl2ajQrUGl1emhVUHFjQUFNeXBqS0J5elc0QzFwa2ZTcFErK3BVK0FwYWZuOHVSOWd2aWNQbGNBZ0F3cHpLQ2lxVk9nWHloay9hQ1lWMCtSMUNTdEFsMDJndzZQMGVYdzhmQ0RwZlBJd0FBY3lvanFOakZ4Y1huSXNkZG9EYXpHS1FHNmZmMzY5ZXZuK2RxdW0zODYrdnI0bEgyNFhjZUFHQ2R5Z2dxbGk5eWhEK2I1Zk1FSlh0N2UvdXpEOUR5ZkUwaDczLy8vYmQ0bEs3OHpnTUFyRk1aUWNVc2Nyb3hUOVFrN1EyVWJ4QjlkWFgxNTZOaWRPZDNIZ0JnbmNvSUttYVIwNDE1b2pZdkx5OS9QZ0syUEcvVFJ6enB6dTg4QU1BNmxSRlV6Q0tuRy9ORWpacWJ2Ti9kM1MwZVlaZDgzZ0FBbUZNWlFjVXNjcm94VDlUcTc3Ly9YamwvMHgzRGZCeHN0M3pPQUFDWVV4bEJ4U3h5dWpGUDFPejI5bmJsSFA3eTVjdWZmWUxZTEo4dkFBRG1WRVpRTVl1Y2Jzd1R0WHQ0ZUZnNWo5TW0wYy9QejR0SGFjcm5DZ0NBT1pVUlZNd2lweHZ6UkFRcDhNbnZEcGJHOSsvZlAzNysvTG40RHBieU9RSUFZRTVsQkJXenlPbkdQQkZGK3VoWCtnaFlmazZuY1hGeElReks1SE1EQU1DY3lnZ3FsVzRUYlpIVGpYa2lrclFKZE5vTU9qK3Y4NUhDb0I4L2ZpeStlNXJ5K1FBQVlFNWxCSlZLaXp5TG5HN096czQrNTBtSEJGRzh2cjUrM04vZmYxeGVYcTVjQzVZajdSczBWZms4QUFBd3B6S0NTdVVMblBUUkR6Ykw3NktVRnN2djcrK0xSeUNHVFdIUVZFT2dmQTRBQUpoVEdVRmwwa2UvbW9zOHRudDdlMXZaUEZkZ1JsUXAzTHk1dVZtNVBrd3hCTXFmUHdBQWN5b2pxRXp6bzE4V09OMDhQVDE5emxmNlNCaEUxUllDcFE2aEtjbWZPd0FBY3lvanFFeStzRWxETjB0MytieEJaQ2tFdXI2Ky9qemYwNmJSVStKM0hRQmduY29JS21OaGM3aDhNK2dwYjVETE5LU3VuL3g2TWFVdW9QeDVBd0F3cHpLQ3lsallIQzV0a3B2UFh4cHBQNlgwOFRDSUtMOWQvSlM2Z1BMZmNRQUE1bFJHVUJrTG04TzE3WTJTaGoyQmlLclpCVFFWVTN6T0FBQzdxSXlnTWhZMngwa2gwTjNkM2NvOG1rc2ltK0o1UHNYbkRBQ3dpOG9JS21OaDB4OTdBakVGVTd4bVRQRTVBd0Rzb2pLQ3lsalk5S2U1SjVBUWlJanljM3dxcHZpY0FRQjJVUmxCWlN4cyt0TzJKNUFRaUVqc0FlUTZDUUN3cERLQ3lsalk5RXNJUkZUcDNMNjZ1dm84cjYrdnJ4ZVB4SmYvUGdNQU1LY3lna3E4dkx6OHVXVzVoVTMvTnQwZHpDM2lxVm4rRWNlMDM5V3ZYNzhXajhTWC94NERBRENuTW9KS1hGeGNyQ3hxTEd6NnRTa0Vjb3Q0YXBPQ25xOWZ2NjZjeDdQWmJQSG9OT1RQSFFDQU9aVVJWQ0pmMEtUeC9mdjN4U1AwSllWQWJoRi9uTFpPdFdPSFRxenVmdno0c1hKM3V6UlNzRGsxK2ZNSEFHQk9aUVNWc0tBNUxiZUlQMHhicDFvZlF5ZldidWs4YmM3WjFEcC9sdko1QUFCZ1RtVUVsYkNnT2EzbUxlTHprVHBTL3Y3Nzd6OGRRMU9YT25QNjd2aHBHenJlTnZ2OSsvZmErWm8rQWphbFBYK2E4cmtBQUdCT1pRU1ZzS0E1clUxN0F1WGp5NWN2SC8vKysrL2liMHhQcytPa09SaFdDbjdTYTNCK2ZyNHk3K204blhvNG1jOEhBQUJ6S2lPb2hBWE42VzNhRTZnNVV2ZkYyOXZiNG0vRnRVKzNqNDZkWWFUUTU1OS8vdmx6WGphRG56U0VQM1A1bkFBQU1LY3lna3BZMEpRakJTSE54WGZhYnlWeUVMU3QyMGZvTUt6WDE5Yy9lL2swNyt5VkR4dGxyOHJuQmdDQU9aVVJWTUtDcGl3cDZHbjdpRmlrSUtqTEhiMXViMityQ24vU2M3cSt2aTQrTFBuNTgrZWZMcXBkbTJvTGZ0cmxjd1FBd0p6S0NDcGhRVk9tdEZCUGdVTCsrcVFSSVFocUN4OXE3L1paUHFjUzd5cVdPbjNTT2JNcjlFbDdUNlh2UzJFVzdmTDVBZ0JnVG1VRWhXdnJ3cUE4bTRLZ3RwRmV6eExEb1YwZFA3VjErN1JwZTE2bGp4UldmZnYyN2VQeDhmSGp2Ly8rV3p3VHRzbm5Ed0NBT1pVUkZLNnRHNEJ5UFQ4L2YxeGRYYTI5Wm0yanRDNmhiWjBuVWFRNWIzdCtwWTIweDFUYTZEbWRUK3d2bjBzQUFPWlVSbEM0ZkNHVGhyc3IxYUdHSUtqTEhqOXBSRHJuMG1iS2JjK3hoSkVDdURUWHFadU00K1R6Q2dEQW5Nb0lDbWNoRTg4KzRkQllBMnJtWEFZQVdLY3lnc0paeU1SVmFoQ2t5NHphNWVjekFBQnpLaU1vbklWTWZHTUhRUUlmb3NuUGJ3QUE1bFJHVURnTEdZRDl1RzRDQUt4VEdVSGhMR1FBOXBOZk45Tkc1MDlQVDR0SEFBQ215NG9TQ3BjdlpBRFlyWG03Ly9SbkFJQ3BzNktFd3VXTEdBQjJhN3ZkdjA0Z0FHRHFyQ2loY1BrQ0JvRHVkQUlCQVB5UEZTVVU2dVhsNWM5L3NjNFhMd0IwcHhNSUFPQi9yQ2loVUJjWEYyc0xGd0QycHhNSUFFQUFCTVhLRnl0cGZQLytmZkVJQVB0bzZ3UktRemNRQURBbEFpQW9WTDVJQWVCNHpVNmc1aEFJQVFDUldWbENvZkpGQ1FESDI5UUpsQThmRHdNQW9yS3loRUxsQ3hJQStyVXREQUlBaUVpVkE0V3lHQUU0bmZ6allRQUFFYWx5b0RCdS93NXdlc3VPSUJ2dUF3QlJXVmxDWWR6K0hRQUFnTDVaV1VKaG11R1AveG9OQUFEQXNRUkFVSmc4L0FFQUFJQStXR0ZDWVFSQUFBQUE5TTBLRXdyalRqUUFBQUQwelFvVEN1Tk9OQUFBQVBSTkFBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJQUFBQUlEZ0JFQUFBQUVCd0FpQUFBQUNBNEFSQUFBQUFBTUVKZ0FBQUFBQ0NFd0FCQUFBQUJDY0FBZ0FBQUFoT0FBUUFBQUFRbkFBSUFBQUFJRGdCRUFBQUFFQndBaUFBQUFDQTRBUkFBQUFBQU1FSmdBQUFBQUNDRXdBQkFBQUFCQ2NBQWdBQUFBaE9BQVFBQUFBUW5BQUlBQUFBSURnQkVBQUFBRUJ3QWlBQUFBQ0E0QVJBQUFBQUFNRUpnQUFBQUFDQ0V3QUJBQUFBQkNjQUFnQUFBQWhPQUFRQUFBQVFuQUFJZ0pONmVYbjV1TDYrL25oNmVscDhCUUFBR0pvQUNJQ1R1cmk0K1BqcnI3OCt6czdPRmw4QkFBQ0dKZ0FDNEtSUytMTWNBQURBYWFpK0FUZ3BBUkFBQUp5ZTZodUFrOG9Eb012TFMzc0JBUURBQ1FpQUFEaXB0UGRQSGdMWkN3Z0FBSVluQUFMZ3BHYXoyVW9BbEFZQUFEQXNWVGNBb3hBQUFRREE2YWk2QVJpRkFBZ0FBRTVIMVEzQUtBUkFBQUJ3T3FwdUFFWWhBQUlBZ05OUmRRTXdDZ0VRQUFDY2pxb2JnRkhrdDROL2VIaFlmQlVBQUJpQ0FBaUFVZHpmMzY5MEFhWGJ3d01BQU1NUUFBRXdpdmYzOTQrYm01dlBBQ2gxQkFFQUFNTVFBQUV3bWhRQzVWMUFBQURBTUZUYkFJeEtBQVFBQU1OVGJRTXdxandBdXJ5OC9IaDZlbG84QWdBQTlFVUFCTUNvOHJ1QnBXRXZJQUFBNko4QUNJQlJwYnQvNVFGUUdnQUFRTDlVMlFBVVFRQUVBQUREVVdVRFVJUThBTElQRUFBQTlFc0FCRUFSOHIyQTdBTUVBQUQ5RWdBQlVJVG1Ya0FBQUVCL1ZOZ0FGRU1BQkFBQXcxQmhBMUFNQVJBQUFBeERoUTFBTVFSQUFBQXdEQlUyQU1VUUFBRUF3REJVMkFBVUl3K0FMaTh2M1E0ZUFBQjZJZ0FDb0JqNXJlRFRjRHQ0QUFEb2h3QUlnR0kwYndXZkJnQUFjRHlWTlFERkVRQUJBRUMvVk5ZQUZFY0FCQUFBL1ZKWkExQWNBUkFBQVBSTFpRMUFjUVJBQUFEUUw1VTFBTVhKQXlDM2d3Y0FnT01KZ0FBb2p0dkJBd0JBdndSQUFCVEg3ZUFCQUtCZkttb0FpaVVBQWdDQWZxaW9BU2lXQUFnQUFQcWhvZ2FnV0FJZ0FBRG9oNG9hZ0dJSmdBQUFvQjhxYWdDS0pRQUNBSUIrcUtnQktGWWVBRjFlWG40OFBUMHRIZ0VBQVBZaEFBS2dXR2RuWnlzaFVQb3pBQUN3UHdFUUFNV2F6V1lyQVZBYUFBREEvbFRTQUJSUEFBUUFBTWRSU1FOUVBBRVFBQUFjUnlVTlFQRUVRQUFBY0J5Vk5BREZFd0FCQU1CeFZOSUFGRThBQkFBQXgxRkpBMUE4QVJBQUFCeEhKUTFBOFFSQUFBQndISlUwQU1VVEFBRUF3SEZVMGdBVVR3QUVBQURIVVVrRFVMeXpzN1BQQU9qaDRXSHhWUUFBb0NzQkVBREZ1NysvWCtrQ21zMW1pMGNBQUlBdUJFQUFGTy85L2YzajV1Ym1Nd0JLSFVFQUFFQjNBaUFBcXBCQ29Md0xDQUFBNkU0RkRVQTFCRUFBQUhBWUZUUUExUkFBQVFEQVlWVFFBRlJEQUFRQUFJZFJRUU5RRFFFUUFBQWNSZ1VOUURVRVFBQUFjQmdWTkFEVkVBQUJBTUJoVk5BQVZFTUFCQUFBaDFGQkExQU5BUkFBQUJ4R0JRMUFOUVJBQUFCd0dCVTBBTlVRQUFFQXdHRlUwQUJVUXdBRUFBQ0hVVUVEVUEwQkVBQUFIRVlGRFVBMUJFQUFBSEFZRlRRQTFjZ0RvTXZMeTQrbnA2ZkZJd0FBd0RZQ0lBQ3FjWFoydGhJQ3BUOERBQUM3Q1lBQXFNWnNObHNKZ05JQUFBQjJVemtEVUoyOEUrajE5WFh4VlFBQVlCTUJFQURWdWIyOS9ReUF2bjM3dHZncUFBQ3dpUUFJZ09xa3JwOWxBSlFHQUFDd25hb1pnQ29KZ0FBQW9EdFZNd0JWRWdBQkFFQjNxbVlBcWlRQUFnQ0E3bFROQUZSSkFBUUFBTjJwbWdHb2tnQUlBQUM2VXpVRFVDVUJFQUFBZEtkcUJxQktBaUFBQU9oTzFReEFsUVJBQUFEUW5hb1pnQ29KZ0FBQW9EdFZNd0JWRWdBQkFFQjNxbVlBcWlRQUFnQ0E3bFROQUZSSkFBUUFBTjJwbWdHb2tnQUlBQUM2VXpVRFVDVUJFQUFBZEtkcUJxQktBaUFBQU9oTzFReEFsUVJBQUFEUW5hb1pnQ29KZ0FBQW9EdFZNd0JWRWdBQkFFQjNxbVlBcWlRQUFnQ0E3bFROQUZSSkFBUUFBTjJwbWdHb2tnQUlBQUM2VXpVRFVDVUJFQUFBZEtkcUJxQktBaUFBQU9oTzFReEFsUVJBQUFEUW5hb1pnQ29KZ0FBQW9EdFZNd0JWRWdBQkFFQjNxbVlBcWlRQUFnQ0E3bFROQUZSSkFBUUFBTjJwbWdHb2tnQUlBQUM2VXpVRFVDVUJFQUFBZEtkcUJxQktBaUFBQU9oTzFReEFsUVJBQUFEUW5hb1pnQ3FkbloxOUJrQVBEdytMcndJQUFHMEVRQUJVNmY3K2ZxVUxhRGFiTFI0QkFBQ2FCRUFBVk9uOS9mM2o1dWJtTXdCS0hVRUFBRUE3QVJBQTFVb2hVTjRGQktWNGZuNyt1THk4L0hOZXB2OTllbnBhUEFJQU1BN1ZNZ0JWRXdCUm1yZTN0NVU5cXRMUW9RWUFqRTIxREVEVjhrVTJqT25sNWVXejYrZlFrZjcrNCtQajRsOWtINm5MYXAvNTE1a0Z3TlNvbGdHb1dyNmdnekZkWEZ5c25JL0hESGUyMjArYXI3WjUzRFYwWmdFd0phcGxBS3FXTCtiZ2xQcm8rTmsxZEttczYzUGV2M3o1OHZsdm1lditiZXZLTXQ4QXA2ZGFCcUJxK1lJQ1RtbGJ4ODhobW5lMld3NWRLcXUyelh1YXZ6U1BYVFgvTFhQZG55NWRXZVliNExSVXl3QlVMVjlNd0tuOC92MTc1ZHpMeC9mdjN4ZmZ0YjhVWHR6ZDNhMzltMmxqNmFuYjFmbHplM3U3Vi9pVHRQMDdITy9RaitRZE1uUVNBWFRuWFE2QXF1VUxBVGlGdEVueitmbjU0T2RlNm81WS92dnAvODltczhVajA3SHRJMFJwSEd1SWYzUEtVakI2ZjMrL01wK3BLNnZQL2JHNkRzRVF3RHJ2Y2dCVUxTLzRZV2h0blExcGdUdUU1a0k2alNsdERyMnJpK1NZVHF1bHRuK1gvYVhnSjcxZXpXQjArWkc4RkY3bVh6L1Y4QkV6Z0ZYZTVRQ29XbDdzdzFEYVBuNTBpZzZENStmbmo2dXJxNVdmdS96WkVUdUNkblg4cE5GSDhMUFU5dSt6bjdhT3VEVDIzWS9wRVBzRVMxRi9ad0QyNFYwT2dLcmxCVDRNcGZrUmxsTXNicGZTejBrL0wvLzV5L0g2K3JyNHJ2cHQ2dmdaY3E3emo5a3RCOTIxdldhbkNFWjNhWHRkbHlQUzd3ekF2cnpMQVZDMXZMQ0hvZVRuMlNHYkRSOHIvYnkyemFHL2ZmdTIrSTY2cFM2UzVuTkxZK2k1YnVzZ3NXOU1OODN3cDRUZ1oybGJaMUNVM3htQVE2aVdBYWhhWHRqREVKb0wzYkdsRG9iOGVOTHgxUzd2c0RwbGQ5VlNjOE50dG12K1RvenhtdTBqNHU4TXdDRlV5d0JVTFMvcW9TK2Jiam1lT2xKSzBPd0dxblZ2azdaNUhpTkl1TDYrWGprR05xc3QvRm1LOGpzRGNBenZjQUJVTFMvb29TOXR0NjB1YWFHYmppTWR6L0xZYXUxYWFadm5NWlRXNVZXcVdzT2ZKTXJ2RE1BeHZNTUJVTFY4TVFKOXljK3JOTWJZOTJlWGREejVNWmEwQjB0WCtmR24wZWNkdnZieDgrZlBsZU5nWFhPZnBwckNuNlVJdnpNQXgvQU9CMERWOG1JZStsQlROMGp6YmtlMWRUWGt4ejZtWmpEQXV2eWplaldHUDB1MS84NEFITU03SEFCVnl3dDVPRmF6eTZHVVBYODJhYnZiVVEzYTl2NFpXMG5IVXBxM3Q3ZlB1VGsvUDY4Mi9FbHEvWjBCNklNckhnQlZVOFRUcDdIdlJuV28ybjRQU3RuN0o1Y2ZTL3BJR1Avei9QejhPVGRwdyt3STh0Y2JZQ3BjOFFDb21pS2VQdVhuVTAxZER2bkhXbXE0eFhVK3oybU10ZmRQTGorZTFKMVVjNWRMMy9LUFJkN2YzeSsrV3JmODlRYVlDbGM4QUtxbWlLZFB0WjVQYVZHZUgzdnB0N2pPajdVVStUR2xVVUlvVllwdjM3NTl6c3MvLy95eitHcmQ4dGNhWUNwYzhRQ29taUtldnRSOEsvRFVyVkxUTGE1TG5PZjhtTkt3T2ZCYzJ2OG43ekQ3OWV2WDRwRzY1YTgxd0ZTNDRnRlFOVVU4ZmFodDgrYzJLUVRLbjBPcDBnYlFKUjVuZmt5bEhkdVk4dTZ5cTZ1cnhWZnI1M1VHcHNnVkQ0Q3FLZUxwUTYyYlB6ZlY4UHZRM0FDNkZQa3hMVWNOK3lrTnFkbjlremFEamlKL25RR213aFVQZ0tvcDR1bERmaDdWdlBsdi9qeEtsUjlqU2Z2czVNZVZqOUwzVXhwUzFPNmZKSCtOQWFiQ0ZRK0FxaW5pNlVPVTg2aUc1MUhxTWViSFZkTitTa1BLdTdVaWRmOGt5K2VWQnNCVXVPSUJVRFZGUEgySWNoN1Y4RHhLUGNiOHVHclpUMmxva2VjZzhuTUQyTVFWRDRDcUtlTHBRNVR6cUliblVlb3hObytyK2VjcGlqb0hOZC94RCtBWXJuZ0FWRTBSVHgraW5FYzFQSThTajdIdHptVE5QMDlSeERtSWNNYy9nRU5OOXgwTmdCRHlRaDRPRmVVOHF1RjVsSGlNYlhjbWEvNTVpaUxPUVpRNy9nRWNZcnJ2YUFDRUVIR0J3dWxGT1k5cWVCNGxIbU4rVE1zN2srVmZ1N3k4L0hoNmV2cno5U25KNXlDSy9Ea0pmNENwVVMwRFVMVzhtSWREUlRtUGFuZ2VKUjVqMnpHbHUzL2xYNS9pM2NEeTV4OUZ4T2NFMEpVckh3QlZVOHpUaHlqblVRM1BJdzlXWGw5ZkYxOGRWOXU4eldhemxhL25qMDFGdE9kdTgyZGc2bHo1QUtpYVlwNCtSRG1QYW5nZWFkUGQ1VEYrKy9adDhkVnhwTTJmMDhlN3RzM2J0c2VpaS9UY2JmNE04UC9YOWNYL0FrQ1Y4b0llRGhYbFBLcmhlYVN1bi93NFUxZkdXSnFiUDZmUnRPMng2Q0k5ZDVzL0Evei9kWDN4dndCUXBVZ0xGTVpUKzNuVXBaT2xKSGQzZHl2SG1qNXVOWWI4R05KWWJnQ2R5eDh2UmY1NkQ3bEJkWW5QL1ZENWN4SCtBRk9sV2dhZ2FubFJENGVxL1R6cTBzbFNrclFBVDEwWXkyTWRhNFBsTHZQVjVYdE9yZmw2RHpWLytjK29YYVRuQW5Bb1YwQUFxcWFvcHcrMW4wZjU4YWZSMXNsU21oUUM1Y2M4eHEzVzg1Ky9TWmZ2T1pXMlRxODBobnE5ODU5UnUwalBCZUJRcm9BQVZFMVJUeDlxUDQ5cVBmNnhiN1dlLyt4TnVuelBxWnk2MCt0VVAyZG9iMjl2WVo0THdERmNBUUdvbXFLZVB0UitIdFY2L0cyM1dqOWxKMUQrY3pmcDhqMURPM1huejFMK3MyclVObTlYVjFlTFJ3R21wODZyT1FBczVJVTlIS3IyODZqMjR4K3JFeWovbVp2a3h6YldIY3ZHMnVNcGYrNC9mLzVjZkxVZWJmUDIvUHk4ZUJSZ2VsVExBRlNwdHJzZVViYmF6NlBhajcrdEV5aDliR2NvKzF3Lzd1L3ZWNzd2bEhjc0c2dnpaK24yOXZielo2YmpxTzN1V2ZtY3BaRTJIZ2VZTXRVeUFGV3E3YTVIbEszMjg2ajI0MTlxZGdMbEl3VVF4NFl2bXdLVk5EWVo0NDVsaHh6bkVGSUlkMzUrL3ZtemE5aGNQRWtmSVd6T0h3QUNJQUFxbFJmMmFkU3lNS0ZNK2JsVW85cVBmNm5aYmRNMlhsOWZGOSs5djdiZ09JMWQxNC9tSGN1R2R1aHhEaUdGS2ZreC9QZmZmNHRIeXBRK3BwY2Y3M0lBSUFBQ29GSUtlL3BVKy9sVSsvSG4waDR0YWFQZS9Ea05OZllKVlBLL043VDhaNlV4ZHNEOTlldlh6Mk01OWEzNjkvSDQrTGd5Yjh2aFB4QUF6S21hQWFpT1cvclN0OXJQcDlxUGY1ZlU5Wk0veHo3R3ZvNzV1L3NvOGZxV2Q5WGMzZDB0dmxxZXZITXFmV3l2dGoyTEFJWVdzMG9BSUxUMFgzT1hSYjViK3RLSDVmbVVSazJtdEJsNi9udC83RGlrSXlULyswTm9leTFMdWI2bE80QXRqeWtkWTJuYTl2d1IvZ0NzRXdBQlVKWG0vZzV1NlVzZjhuT3FKalpEUDUyaDU3anR0U3psK3BiQ2xIeUQ3bVAyWWVxYlBYOEF1bk4xQktBYXpmMGQzTktYdnVUblZlb2tLSG1mazF4KzNHblk2MlE0K1R6M2FkTWR2MHE3dm4zNzl1M3oyTkwvSDlPMnU2U2w0ZmNBb0owQUNJQnEyTitCb1RSdlAzNktXMzMzSVQ5bWhwV2ZJNm5ycEMrMWRIRTE5MkVhc3d1b2JjNjhKd0RzcGxvQW9CcDVzYS9RcDArejJXemwvRXFqQnJVZGI4MmF0NmhQNTh3eE5uV3hsTnk5a25jQlhWOWYvOW13K2xUYTl2bFpqdHZiVys4SkFCMm9GZ0NvZ2p0L2NRcTFuV08xSFcvTlVzQ1F1a3lXODMxc2wxaU4remMxdTREU0hLUmdiT2dnYU5NK1Aya0EwSjJySmdCVnlQL3J1enQvTVpSOFlWbkRYa0Q1OFRLOEZBSWRPK2MxZHY3azBuRTJqejBGUWNkMlJEWHQydWNuRFh2OUFPeEh0UUJBOGRKL1hjNzMzM0RuTDRhU24yZHBITnZsTWFSbVZ3U25jZXljMTlqNTA1U3V3U21JejU5RDM3OHI5dmtCNko5cUFZRGk2ZjdoVkdyWkM2aDVSN3kwQndxbmtjLzd2bjcvL3IzeTk5T291WXNsQlVITjU1UEdvZDF6YVg1U3NOblcrV09mSDREakNZQUFLRjcrWDRKMS8zQUsrY0t6dEkrQ3BZL0duSitmZng2ZnJvalR5cytOcmpaOW5DbUNadGZjRUFPQWZyaWlBbEEwSDNOaERDVi9GS3o1MFJqaHoybmxjOS9WcG84elJkRFdOZGZuc004UFFIOVUwZ0FVcXhuKytKZ0xwOUsycUUwZEhIMXZkTHVQdGk0U2krUFR5K2QvVjJkWTIydFdXa2RaMzQ0TmhLTFBEOENZQkVBQUZLa1ovdmlZQzJObyszaEx1aFgyR0NKc0hoeEJmazdzNmd6em1nRlFFdTlDQUJSajB6NFp3aC9Hc3FtYjRSUmRDcHQrSDVaRDk4ODRtdWRFbTAydm5kY01nREVKZ0FBb3hxWjlNb1EvakMxMS9UVFB6YUgzQldyN2ZWZ094clhydGRENUEwQ0p2QnNCVUl6bWdzbHRmeWxKNnQ1b25xUE5rYm8rMGkzYUQ3R3I0MmM1ZEpHTUwzODljanAvQUNpWkFBaUFJcnk5dmEwc21LQlViZnNDTlVmYXcycGZPbjdxc2VtMTBma0RRTW04S3dFd3V0Ky9mLy9wOWxrdW1LNnVyaGFQUUhtT3ZjdlJ2a1AzU0hueTF5ZlIrUU5BRFFSQUFJd21CVCtwVStMOC9IeGwwZlQ4L0x6NERxaEgrcmhpMnJNcVA1Y1BIWlN0K1ZycC9BR2dCdDZkQUJoRkNubWF3VThhYVFFTnRVb2gwTjNkM2RwNXZjL1FOVksrL1BWcS9qa05yeUVBSlJJQUFYQlM2ZGJaYlIrVlNGOGIrcmJhQUgxb1hyL3lBUUNsOGk0RndNbWtqM3UxTFpnRVAwQk4ycTVqeXdFQXBmSXVCY0NnTm5YOExFZmZINVhvZWl2dEtRM2RWZENmZEkxcCt6MUx3MGUvQUNpWkFBaUF3V3pxK0VuNy9LUzlVb2F3N1ZiYVV4N3AxdVhBOFpyWEdBQ29oWGN0QUhxeHZLUFhydTZiZEx2M3R2Qkg1NDdSSE9sOGVIeDhYSndoTUk1ZDF5WUFxSVYzTFFDT3N1bFc3dm5vMHZFelJPY09IMzg2ZjlybXBxYVJ6aThZeTY1ckV3RFV3cnNXQUh2YnRhOVBDY05lSEhPejJheDFmbW9iNlhuQUtlemJqUWdBdGZDdUJjQmVOdTNyMCtlQTFER1dPc2VXNTBUcVpCcHEzeWpJYmV2NFdXcjdHZ0NVenJzV0FKMmwvVmp5aGM4UVErY09TeW53U1h0R3BmUGk3dTV1OFZVWXh2UHo4OWJPbi96YWxIOGRBR3JoWFF1QXpyNTgrYkt5OEdrYjBMZTN0N2ZGLzROaHBIT3NiYitzVGJwOER3Q1V4cnNXQUoybC93S2VMM3lhUS9jT1VJTXUrL3hzdTU3bDN3Y0F0ZkN1QlFEQXBHemI1eWQ5Rkd5WC9Qc0JvQmJldFFBQW1JemZ2Myt2QkRqNVNCdVBkNUgvSFFDb2hYY3RBQUJDZTNwNjJ2aVJyME1jKy9jQllBemV0UUFBQ092aDRXRWxzTWxIMTQ2ZnBuekRhQUNvaFhjdEFBQkNlbng4WEFsOGxpTjFBNld1b0VQa0h5RTdQejlmZkJVQXlpY0FBZ0FncEh5ejU5VHQ4Lzcrdm5qa2NQLysrKy9udi9uMTY5ZkZWd0dnZkFJZ0FBREMyTFRmVHgvaFQ1SjNGVzI3VlR3QWxFWUFCQUJBQ052MisrbkwvZjM5NTcvNTQ4ZVB4VmNCb0h3Q0lBQUFxdlh5OHJMeERsL0wwV2VuVHZvbzJmTGZUVDhiQUdvaEFBSUFvRnI1UGovTDBkZCtQMjNTeHMvTG4vUDI5cmI0S2dDVVR3QUVBRUExZG5YODNON2VEaEwrdFAxY0FLaUpkeTRBQUtyUjF2R3pIRU5xKzdrQVVCUHZYQUFBRkc5WDU4L1FkK1E2OWM4RGdMNEpnQUFBS05LdTBPZVV4dnE1QU5BWDcyQUFBQlJwMjhlOVR0MkJrLzlzQUtpUmR6QUFBSXF3cStNbmpiRStlcFVmQXdEVXlEc1lBQUJGR0d1RDV5NUtPaFlBT0lSM01BQUFSalgyQnM5ZDVNY0RBRFh5RGdZQXdLaHF1TVY2eWNjR0FGMTRCd01BNEtScTZQaFphanRXQUtpUmR6QUFBRTZxNUwxK21tcm9UZ0tBTHJ5REFRQXd1Skx2OExWTkRjY0lBRjBJZ0FBQUdOeW1ycC9TMVhTc0FMQ05keklBQUhwWGE4ZFBVMzY4QUZBejcyUUFBUFN1cG4xK3RxbjF1QUdneVRzWkFBQzl5NE9UZk5TMmgwNSs3QUJRTSs5a0FBRDBKc3B0MDkzK0hZQm92Sk1CQU5DYktMZE5kL3QzQUtMeFRnWUFRRythb1VsdEgvbmF0SG0xMjc4RFVEc0JFQUFBdmNsRGt4cnAvQUVnS3U5b0FBRDBKZzlPVWlmTjA5UFQ0cEU2NU1lZmhzNGZBS0lRQUFFQTBKdXpzN09WQUNYOXVTYjVzUU5BSk43WkFBRG96V3cyV3dsUjhsRnlSNUM3ZmdFUW5YYzJBQUI2MSt3RVdvNVNPNExzL1FOQWRON1pBQURvM2E1T29QUjRLVkwzVC9NWTdmMERRRFFDSUFBQUJ0ZldFZlQ2K3JwNGRGek43aDhBaU1nN0hBQUFnMnZyQ0xxK3Z2NTRlM3RiZk1mcHRlMzdvL01IZ0tnRVFBQUFuRXpxK3NrRGwrVTQ1UWJSYmNIUGNnQkFWTjdsQUFBNHFkUmwweGErbkdxRDZMWU5uOVBRL1FOQVpBSWdBQUJPN3ZuNStlUHE2cW8xaUVsamlJNmdUWjAvZ2g4QXBrQUFCQURBcUU1MXkzaTNlZ2RneXJ6ckFRQXdxbTIzakYrTzFMbXo3NjNqVXdmUnByMSswdEQ1QThDVUNJQUFBQ2pLcG82Z05McmVPdjdoNGFIMTd5OEhBRXlOZHo4QUFJclNwU1BvbUtIekI0QXBFZ0FCQUZDMFRiZU83ekp1Ym00KzN0L2ZGLzhTQUV5WEFBZ0FnT0p0dW5YOHRuRjdleXY4QVlBRkFSQUFBQUJBY0FJZ0FBQUFnT0FFUUFBQUFBREJDWUFBQUFBQWdoTUFBUUFBQUFRbkFBSUFBQUFJVGdBRUFBQUFFSndBQ0FBQUFDQTRBUkFBQUFCQWNBSWdBQUFBZ09BRVFBQUFBQURCQ1lBQUFBQUFnaE1BQVFBQUFBUW5BQUlBQUFBSVRnQUVBQUFBRUp3QUNBQUFBQ0E0QVJBQUFBQkFjQUlnQUFBQWdPQUVRQUFBQUFEQkNZQUFBQUFBZ2hNQUFRQUFBQVFuQUFJQUFBQUlUZ0FFQUFBQUVKd0FDQUFBQUNBNEFSQUFBQUJBY0FJZ0FBQUFnT0FFUUFBQUFBREJDWUFBQUFBQWdoTUFBUUFBQUFRbkFBSUFBQUFJVGdBRUFBQUFFTnJIeC84QmxZMmxUR0g5c1pvQUFBQUFTVVZPUks1Q1lJST0iIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiLz48L2c+PC9nPjwvc3ZnPg==', + angebotTitle: 'webtown test offer', + angebotLongTitle: 'webtown test offer', + educationProviderOrganizationName: 'VIDIS-Testangebot', + schoolActivations: ['DE-VIDIS-vidis_test_30303', 'DE-VIDIS-vidis_test_20202'], + }, +]; + +const mockAllSchoolActivationsInVidisAngebote: string[] = mockVidisAngebote.reduce( + (acc: string[], angebot: VidisAngebot) => { + return acc.concat(angebot.schoolActivations); + }, + [] as string[], +); + +const mockExistingVidisServiceProviderContainedInVidisAngebote: ServiceProvider = { + id: 'divomath VIDIS-Testsystem-dummy-UUID', + createdAt: new Date('2024-11-04 08:46:54.147+00'), + updatedAt: new Date('2024-11-04 08:46:54.147+00'), + name: 'divomath VIDIS-Testsystem', + target: ServiceProviderTarget.URL, + url: 'https://login-stage.divomath.de/idp-login?idp=vidis&vidis_idp_hint=vidis-idp', + kategorie: ServiceProviderKategorie.ANGEBOTE, + providedOnSchulstrukturknoten: 'dummy-UUID', + logo: Buffer.from('dummy-logo-string', 'base64'), + logoMimeType: 'image/svg+xml', + keycloakGroup: 'VIDIS-service', + keycloakRole: 'VIDIS-user', + externalSystem: ServiceProviderSystem.NONE, + requires2fa: false, +}; + +const mockExistingVidisServiceProviderNotInVidisAngebote: ServiceProvider = { + id: 'dummy-VIDIS-ServiceProvider-2', + createdAt: new Date('2024-11-04 08:46:54.147+00'), + updatedAt: new Date('2024-11-04 08:46:54.147+00'), + name: 'existing-dummy-VIDIS-ServiceProvider-2', + target: ServiceProviderTarget.URL, + url: 'https://dummy-url-for-VIDIS-ServiceProvider.vidis.dummy.org', + kategorie: ServiceProviderKategorie.ANGEBOTE, + providedOnSchulstrukturknoten: 'dummy-UUID', + logo: Buffer.from('dummy-logo-string', 'base64'), + logoMimeType: 'image/svg+xml', + keycloakGroup: 'VIDIS-service', + keycloakRole: 'VIDIS-user', + externalSystem: ServiceProviderSystem.NONE, + requires2fa: false, +}; + +const mockExistingServiceProviders: ServiceProvider[] = [ + mockExistingVidisServiceProviderContainedInVidisAngebote, + mockExistingVidisServiceProviderNotInVidisAngebote, +]; + +const mockExistingSchulen: Organisation[] = [ + Organisation.construct( + faker.string.uuid(), + faker.date.past(), + faker.date.recent(), + faker.number.int(), + faker.string.uuid(), + faker.string.uuid(), + 'DE-VIDIS-vidis_test_20202', + 'vidis_test_20202', + 'Keine', + 'vidis_test_20202_kuerzel', + OrganisationsTyp.SCHULE, + undefined, + 'DE-VIDIS-vidis_test_20202.vidis-example.org', + 'dummy-school-vidis-test-20202@DE-VIDIS-vidis_test_20202.vidis-example.org', + ), + Organisation.construct( + faker.string.uuid(), + faker.date.past(), + faker.date.recent(), + faker.number.int(), + faker.string.uuid(), + faker.string.uuid(), + 'DE-VIDIS-vidis_test_30303', + 'vidis_test_30303', + 'Keine', + 'vidis_test_30303_kuerzel', + OrganisationsTyp.SCHULE, + undefined, + 'DE-VIDIS-vidis_test_30303.vidis-example.org', + 'dummy-school-vidis-test-30303@DE-VIDIS-vidis_test_30303.vidis-example.org', + ), + Organisation.construct( + faker.string.uuid(), + faker.date.past(), + faker.date.recent(), + faker.number.int(), + faker.string.uuid(), + faker.string.uuid(), + 'DE-VIDIS-vidis_test_40404', + 'vidis_test_40404', + 'Keine', + 'vidis_test_40404_kuerzel', + OrganisationsTyp.SCHULE, + undefined, + 'DE-VIDIS-vidis_test_40404.vidis-example.org', + 'dummy-school-vidis-test-40404@DE-VIDIS-vidis_test_40404.vidis-example.org', + ), + Organisation.construct( + faker.string.uuid(), + faker.date.past(), + faker.date.recent(), + faker.number.int(), + faker.string.uuid(), + faker.string.uuid(), + 'DE-VIDIS-vidis_test_101010', + 'vidis_test_101010', + 'Keine', + 'vidis_test_101010_kuerzel', + OrganisationsTyp.SCHULE, + undefined, + 'DE-VIDIS-vidis_test_101010.vidis-example.org', + 'dummy-school-vidis-test-101010@DE-VIDIS-vidis_test_101010.vidis-example.org', + ), +]; // helper to mock output of some repos function getIdMap(arr: Array): Map { @@ -20,18 +184,30 @@ describe('ServiceProviderService', () => { let service: ServiceProviderService; let rolleRepo: DeepMocked; let serviceProviderRepo: DeepMocked; + let organisationRepo: DeepMocked; + let vidisService: DeepMocked; + let organisationServiceProviderRepo: DeepMocked; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ + imports: [LoggingTestModule, ConfigTestModule], providers: [ ServiceProviderService, { provide: RolleRepo, useValue: createMock() }, { provide: ServiceProviderRepo, useValue: createMock() }, + { provide: OrganisationRepository, useValue: createMock() }, + { provide: VidisService, useValue: createMock() }, + { provide: OrganisationServiceProviderRepo, useValue: createMock() }, ], }).compile(); service = module.get(ServiceProviderService); rolleRepo = module.get>(RolleRepo); serviceProviderRepo = module.get>(ServiceProviderRepo); + organisationRepo = module.get>(OrganisationRepository); + vidisService = module.get>(VidisService); + organisationServiceProviderRepo = module.get>( + OrganisationServiceProviderRepo, + ); }); describe('getServiceProvidersByRolleIds', () => { @@ -93,4 +269,79 @@ describe('ServiceProviderService', () => { }, ); }); + + describe('updateServiceProvidersForVidis', () => { + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('should update ServiceProvider for VIDIS Angebote if ServiceProvider in VIDIS Angebot response already exists in SPSH.', async () => { + vidisService.getActivatedAngeboteByRegion.mockResolvedValue(mockVidisAngebote); + organisationServiceProviderRepo.deleteAll.mockResolvedValue(true); + serviceProviderRepo.findByName.mockResolvedValue(mockExistingVidisServiceProviderContainedInVidisAngebote); + serviceProviderRepo.save.mockResolvedValue(mockExistingVidisServiceProviderContainedInVidisAngebote); + if (mockExistingSchulen[0]) organisationRepo.findByNameOrKennung.mockResolvedValue(mockExistingSchulen); + organisationServiceProviderRepo.save.mockResolvedValue(); + + await service.updateServiceProvidersForVidis(); + + expect(vidisService.getActivatedAngeboteByRegion).toHaveBeenCalledTimes(1); + expect(organisationServiceProviderRepo.deleteAll).toHaveBeenCalledTimes(1); + expect(serviceProviderRepo.findByName).toHaveBeenCalledTimes(mockVidisAngebote.length); + expect(serviceProviderRepo.save).toHaveBeenCalledTimes(mockVidisAngebote.length); + expect(organisationRepo.findByNameOrKennung).toHaveBeenCalledTimes( + mockAllSchoolActivationsInVidisAngebote.length, + ); + expect(organisationServiceProviderRepo.save).toHaveBeenCalledTimes( + mockAllSchoolActivationsInVidisAngebote.length, + ); + }); + + it('should update ServiceProvider for VIDIS Angebote if ServiceProvider in VIDIS Angebot response does not exist in SPSH yet.', async () => { + vidisService.getActivatedAngeboteByRegion.mockResolvedValue(mockVidisAngebote); + organisationServiceProviderRepo.deleteAll.mockResolvedValue(true); + serviceProviderRepo.findByName.mockResolvedValue(null); + serviceProviderRepo.save.mockResolvedValue(mockExistingVidisServiceProviderContainedInVidisAngebote); + if (mockExistingSchulen[0]) organisationRepo.findByNameOrKennung.mockResolvedValue(mockExistingSchulen); + organisationServiceProviderRepo.save.mockResolvedValue(); + + await service.updateServiceProvidersForVidis(); + + expect(vidisService.getActivatedAngeboteByRegion).toHaveBeenCalledTimes(1); + expect(organisationServiceProviderRepo.deleteAll).toHaveBeenCalledTimes(1); + expect(serviceProviderRepo.findByName).toHaveBeenCalledTimes(mockVidisAngebote.length); + expect(serviceProviderRepo.save).toHaveBeenCalledTimes(mockVidisAngebote.length); + expect(organisationRepo.findByNameOrKennung).toHaveBeenCalledTimes( + mockAllSchoolActivationsInVidisAngebote.length, + ); + expect(organisationServiceProviderRepo.save).toHaveBeenCalledTimes( + mockAllSchoolActivationsInVidisAngebote.length, + ); + }); + + it('should delete ServiceProvider for VIDIS Angebote in SPSH if ServiceProvider is not in VIDIS Angebot response.', async () => { + vidisService.getActivatedAngeboteByRegion.mockResolvedValue(mockVidisAngebote); + organisationServiceProviderRepo.deleteAll.mockResolvedValue(true); + serviceProviderRepo.findByName.mockResolvedValue(null); + serviceProviderRepo.save.mockResolvedValue(mockExistingVidisServiceProviderContainedInVidisAngebote); + if (mockExistingSchulen[0]) organisationRepo.findByNameOrKennung.mockResolvedValue(mockExistingSchulen); + organisationServiceProviderRepo.save.mockResolvedValue(); + serviceProviderRepo.findByKeycloakGroup.mockResolvedValue(mockExistingServiceProviders); + serviceProviderRepo.deleteById.mockResolvedValue(true); + + await service.updateServiceProvidersForVidis(); + + expect(vidisService.getActivatedAngeboteByRegion).toHaveBeenCalledTimes(1); + expect(organisationServiceProviderRepo.deleteAll).toHaveBeenCalledTimes(1); + expect(serviceProviderRepo.findByName).toHaveBeenCalledTimes(mockVidisAngebote.length); + expect(serviceProviderRepo.save).toHaveBeenCalledTimes(mockVidisAngebote.length); + expect(organisationRepo.findByNameOrKennung).toHaveBeenCalledTimes( + mockAllSchoolActivationsInVidisAngebote.length, + ); + expect(organisationServiceProviderRepo.save).toHaveBeenCalledTimes( + mockAllSchoolActivationsInVidisAngebote.length, + ); + expect(serviceProviderRepo.deleteById).toHaveBeenCalledTimes(1); + }); + }); }); diff --git a/src/modules/service-provider/domain/service-provider.service.ts b/src/modules/service-provider/domain/service-provider.service.ts index d78c602f5..c4777c254 100644 --- a/src/modules/service-provider/domain/service-provider.service.ts +++ b/src/modules/service-provider/domain/service-provider.service.ts @@ -4,13 +4,32 @@ import { Rolle } from '../../rolle/domain/rolle.js'; import { RolleRepo } from '../../rolle/repo/rolle.repo.js'; import { ServiceProviderRepo } from '../repo/service-provider.repo.js'; import { ServiceProvider } from './service-provider.js'; +import { ClassLogger } from '../../../core/logging/class-logger.js'; +import { VidisService } from '../../vidis/vidis.service.js'; +import { ServiceProviderTarget, ServiceProviderKategorie, ServiceProviderSystem } from './service-provider.enum.js'; +import { OrganisationRepository } from '../../organisation/persistence/organisation.repository.js'; +import { Organisation } from '../../organisation/domain/organisation.js'; +import { OrganisationServiceProviderRepo } from '../repo/organisation-service-provider.repo.js'; +import { ConfigService } from '@nestjs/config'; +import { ServerConfig } from '../../../shared/config/server.config.js'; +import { VidisConfig } from '../../../shared/config/vidis.config.js'; +import { VidisAngebot } from '../../vidis/domain/vidis-angebot.js'; @Injectable() export class ServiceProviderService { + private readonly vidisConfig: VidisConfig; + public constructor( + private readonly logger: ClassLogger, private readonly rolleRepo: RolleRepo, private readonly serviceProviderRepo: ServiceProviderRepo, - ) {} + private readonly organisationRepo: OrganisationRepository, + private readonly vidisService: VidisService, + private readonly organisationServiceProviderRepo: OrganisationServiceProviderRepo, + configService: ConfigService, + ) { + this.vidisConfig = configService.getOrThrow('VIDIS'); + } public async getServiceProvidersByRolleIds(rolleIds: string[]): Promise[]> { const rollen: Map> = await this.rolleRepo.findByIds(rolleIds); @@ -23,4 +42,117 @@ export class ServiceProviderService { return Array.from(serviceProviders.values()); } + + public async updateServiceProvidersForVidis(): Promise { + this.logger.info('Aktualisierung der ServiceProvider für VIDIS-Angebote wurde gestartet.'); + + const vidisKeycloakGroup: string = this.vidisConfig.KEYCLOAK_GROUP; + const vidisKeycloakRole: string = this.vidisConfig.KEYCLOAK_ROLE; + const vidisRegionName: string = this.vidisConfig.REGION_NAME; + const schulstrukturknoten: string = this.organisationRepo.ROOT_ORGANISATION_ID; + + const vidisAngebote: VidisAngebot[] = await this.vidisService.getActivatedAngeboteByRegion(vidisRegionName); + + const allMappingsBeenDeleted: boolean = await this.organisationServiceProviderRepo.deleteAll(); + if (allMappingsBeenDeleted) + this.logger.info('All mappings between Organisation and ServiceProvider were deleted.'); + + await Promise.allSettled( + vidisAngebote.map(async (angebot: VidisAngebot) => { + const existingServiceProvider: Option> = + await this.serviceProviderRepo.findByName(angebot.angebotTitle); + + const angebotLogoMediaType: string = this.determineMediaTypeFor(angebot.angebotLogo); + + let serviceProvider: ServiceProvider; + if (existingServiceProvider) { + serviceProvider = ServiceProvider.construct( + existingServiceProvider.id, + existingServiceProvider.createdAt, + existingServiceProvider.updatedAt, + angebot.angebotTitle, + ServiceProviderTarget.URL, + angebot.angebotLink, + ServiceProviderKategorie.ANGEBOTE, + schulstrukturknoten, + Buffer.from(angebot.angebotLogo, 'base64'), + angebotLogoMediaType, + vidisKeycloakGroup, + vidisKeycloakRole, + ServiceProviderSystem.NONE, + false, + ); + this.logger.info(`ServiceProvider for VIDIS Angebot '${serviceProvider.name}' already exists.`); + } else { + serviceProvider = ServiceProvider.createNew( + angebot.angebotTitle, + ServiceProviderTarget.URL, + angebot.angebotLink, + ServiceProviderKategorie.ANGEBOTE, + schulstrukturknoten, + Buffer.from(angebot.angebotLogo, 'base64'), + angebotLogoMediaType, + vidisKeycloakGroup, + vidisKeycloakRole, + ServiceProviderSystem.NONE, + false, + ); + this.logger.info(`ServiceProvider for VIDIS Angebot '${serviceProvider.name}' was created.`); + } + const persistedServiceProvider: ServiceProvider = + await this.serviceProviderRepo.save(serviceProvider); + await Promise.allSettled( + angebot.schoolActivations.map(async (schoolActivation: string) => { + const orga: Organisation | undefined = ( + await this.organisationRepo.findByNameOrKennung(schoolActivation) + ).at(0); // Assumption: kennung is unique for an Organisation and is not contained in name or kennung of any other Organisation + if (orga) { + await this.organisationServiceProviderRepo.save(orga, persistedServiceProvider); + this.logger.info(`Mapping of '${serviceProvider.name}' to '${orga.name}' was saved.`); + } + }), + ); + }), + ); + + const vidisServiceProviders: ServiceProvider[] = + await this.serviceProviderRepo.findByKeycloakGroup(vidisKeycloakGroup); + const angeboteNamesInResponse: string[] = vidisAngebote.map((angebot: VidisAngebot) => angebot.angebotTitle); + await Promise.allSettled( + vidisServiceProviders.map(async (vsp: ServiceProvider) => { + if (!angeboteNamesInResponse.includes(vsp.name)) { + await this.serviceProviderRepo.deleteById(vsp.id); + this.logger.info( + `ServiceProvider '${vsp.name}' was deleted as it was not in VIDIS Angebote API response.`, + ); + } + }), + ); + + this.logger.info(`ServiceProvider für VIDIS-Angebote erfolgreich aktualisiert.`); + } + + /** + * Determines the correct media type of the given Angebot logo. + * Assumption: Expected media type is always one of the three: 'image/jpeg', 'image/png' or 'image/svg+xml'. + * @param {base64EncodedLogo} base64EncodedLogo Base64 encoded logo + */ + private determineMediaTypeFor(base64EncodedLogo: string): string { + const MEDIA_SIGNATURES: { JPG: Buffer; PNG: Buffer } = { + // JPG/JPEG file signature in hexadeciaml begins with: ff d8 ff + JPG: Buffer.from([0xff, 0xd8, 0xff]), + // PNG file signature in hexadeciaml begins with: 89 50 4e 47 0d 0a 1a 0a + PNG: Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]), + }; + + const logoBuffer: Buffer = Buffer.from(base64EncodedLogo, 'base64'); + + const first8Bytes: Buffer = logoBuffer.subarray(0, 8); + if (first8Bytes.equals(MEDIA_SIGNATURES.PNG)) return 'image/png'; + + const first3Bytes: Buffer = logoBuffer.subarray(0, 3); + if (first3Bytes.equals(MEDIA_SIGNATURES.JPG)) return 'image/jpeg'; + + return 'image/svg+xml'; + } } diff --git a/src/modules/service-provider/repo/organisation-service-provider.entity.ts b/src/modules/service-provider/repo/organisation-service-provider.entity.ts new file mode 100644 index 000000000..833f730c2 --- /dev/null +++ b/src/modules/service-provider/repo/organisation-service-provider.entity.ts @@ -0,0 +1,14 @@ +import { BaseEntity, Entity, ManyToOne, PrimaryKeyProp, Rel } from '@mikro-orm/core'; +import { ServiceProviderEntity } from './service-provider.entity.js'; +import { OrganisationEntity } from '../../organisation/persistence/organisation.entity.js'; + +@Entity({ tableName: 'organisation_service_provider' }) +export class OrganisationServiceProviderEntity extends BaseEntity { + @ManyToOne({ primary: true, entity: () => OrganisationEntity }) + public organisation!: Rel; + + @ManyToOne({ primary: true, entity: () => ServiceProviderEntity }) + public serviceProvider!: Rel; + + public [PrimaryKeyProp]?: ['organisation', 'serviceProvider']; +} diff --git a/src/modules/service-provider/repo/organisation-service-provider.repo.integration-spec.ts b/src/modules/service-provider/repo/organisation-service-provider.repo.integration-spec.ts new file mode 100644 index 000000000..d87a2c611 --- /dev/null +++ b/src/modules/service-provider/repo/organisation-service-provider.repo.integration-spec.ts @@ -0,0 +1,99 @@ +import { MikroORM, EntityManager } from '@mikro-orm/core'; +import { TestingModule, Test } from '@nestjs/testing'; +import { + ConfigTestModule, + DatabaseTestModule, + LoggingTestModule, + DEFAULT_TIMEOUT_FOR_TESTCONTAINERS, + DoFactory, +} from '../../../../test/utils/index.js'; +import { OrganisationServiceProviderRepo } from './organisation-service-provider.repo.js'; +import { Organisation } from '../../organisation/domain/organisation.js'; +import { ServiceProvider } from '../domain/service-provider.js'; +import { OrganisationRepository } from '../../organisation/persistence/organisation.repository.js'; +import { ServiceProviderRepo } from './service-provider.repo.js'; +import { EventService } from '../../../core/eventbus/services/event.service.js'; +import { createMock } from '@golevelup/ts-jest'; + +describe('OrganisationServiceProviderRepo', () => { + let module: TestingModule; + let sut: OrganisationServiceProviderRepo; + let organisationRepo: OrganisationRepository; + let serviceProviderRepo: ServiceProviderRepo; + + let orm: MikroORM; + let em: EntityManager; + + beforeAll(async () => { + module = await Test.createTestingModule({ + imports: [ConfigTestModule, DatabaseTestModule.forRoot({ isDatabaseRequired: true }), LoggingTestModule], + providers: [ + OrganisationServiceProviderRepo, + OrganisationRepository, + ServiceProviderRepo, + { + provide: EventService, + useValue: createMock(), + }, + ], + }).compile(); + + sut = module.get(OrganisationServiceProviderRepo); + organisationRepo = module.get(OrganisationRepository); + serviceProviderRepo = module.get(ServiceProviderRepo); + orm = module.get(MikroORM); + em = module.get(EntityManager); + + await DatabaseTestModule.setupDatabase(orm); + }, DEFAULT_TIMEOUT_FOR_TESTCONTAINERS); + + afterAll(async () => { + await orm.close(); + await module.close(); + }); + + beforeEach(async () => { + await DatabaseTestModule.clearDatabase(orm); + }); + + it('should be defined', () => { + expect(sut).toBeDefined(); + expect(organisationRepo).toBeDefined(); + expect(serviceProviderRepo).toBeDefined(); + expect(em).toBeDefined(); + }); + + describe('save', () => { + it('should save a new OrganisationServiceProvider mapping', async () => { + const organisation: Organisation = DoFactory.createOrganisation(false); + const serviceProvider: ServiceProvider = DoFactory.createServiceProvider(false); + const persistedOrganisation: Organisation = await organisationRepo.save(organisation); + const persistedServiceProvider: ServiceProvider = await serviceProviderRepo.save(serviceProvider); + + await expect(sut.save(persistedOrganisation, persistedServiceProvider)).resolves.not.toThrow(); + }); + }); + + describe('deleteAll', () => { + it('should delete all existing OrganisationServiceProvider mappings', async () => { + const organisation: Organisation = DoFactory.createOrganisation(false); + const persistedOrganisation: Organisation = await organisationRepo.save(organisation); + const organisation2: Organisation = DoFactory.createOrganisation(false); + const persistedOrganisation2: Organisation = await organisationRepo.save(organisation2); + const serviceProvider: ServiceProvider = DoFactory.createServiceProvider(false); + const persistedServiceProvider: ServiceProvider = await serviceProviderRepo.save(serviceProvider); + const serviceProvider2: ServiceProvider = DoFactory.createServiceProvider(false); + const persistedServiceProvider2: ServiceProvider = await serviceProviderRepo.save(serviceProvider2); + const serviceProvider3: ServiceProvider = DoFactory.createServiceProvider(false); + const persistedServiceProvider3: ServiceProvider = await serviceProviderRepo.save(serviceProvider3); + await sut.save(persistedOrganisation, persistedServiceProvider); + await sut.save(persistedOrganisation, persistedServiceProvider2); + await sut.save(persistedOrganisation2, persistedServiceProvider2); + await sut.save(persistedOrganisation2, persistedServiceProvider3); + + const result: boolean = await sut.deleteAll(); + + expect(result).toBeTruthy(); + }); + }); +}); diff --git a/src/modules/service-provider/repo/organisation-service-provider.repo.ts b/src/modules/service-provider/repo/organisation-service-provider.repo.ts new file mode 100644 index 000000000..f964bd806 --- /dev/null +++ b/src/modules/service-provider/repo/organisation-service-provider.repo.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@nestjs/common'; +import { Organisation } from '../../organisation/domain/organisation.js'; +import { ServiceProvider } from '../domain/service-provider.js'; +import { EntityManager, RequiredEntityData } from '@mikro-orm/postgresql'; +import { OrganisationServiceProviderEntity } from './organisation-service-provider.entity.js'; + +@Injectable() +export class OrganisationServiceProviderRepo { + public constructor(private readonly em: EntityManager) {} + + public async save(organisation: Organisation, serviceProvider: ServiceProvider): Promise { + await this.create(organisation, serviceProvider); + } + + private async create(organisation: Organisation, serviceProvider: ServiceProvider): Promise { + const entityData: RequiredEntityData = { + organisation: organisation.id, + serviceProvider: serviceProvider.id, + }; + + const organisationServiceProviderEntity: OrganisationServiceProviderEntity = this.em.create( + OrganisationServiceProviderEntity, + entityData, + ); + + await this.em.persistAndFlush(organisationServiceProviderEntity); + } + + public async deleteAll(): Promise { + const deletedMappings: number = await this.em.nativeDelete(OrganisationServiceProviderEntity, {}); + return deletedMappings > 0; + } +} diff --git a/src/modules/service-provider/repo/service-provider.repo.spec.ts b/src/modules/service-provider/repo/service-provider.repo.integration-spec.ts similarity index 76% rename from src/modules/service-provider/repo/service-provider.repo.spec.ts rename to src/modules/service-provider/repo/service-provider.repo.integration-spec.ts index 935abbbf6..7134bdbe8 100644 --- a/src/modules/service-provider/repo/service-provider.repo.spec.ts +++ b/src/modules/service-provider/repo/service-provider.repo.integration-spec.ts @@ -180,6 +180,47 @@ describe('ServiceProviderRepo', () => { expect(serviceProviderMap).toBeDefined(); }); }); + + describe('findByName', () => { + it('should find a ServiceProvider by its name if a ServiceProvider with the given name exists', async () => { + const expectedServiceProvider: ServiceProvider = await sut.save( + DoFactory.createServiceProvider(false), + ); + + const actualServiceProvider: Option> = await sut.findByName( + expectedServiceProvider.name, + ); + + expect(actualServiceProvider).toEqual(expectedServiceProvider); + }); + + it('should throw an error if there are no existing ServiceProviders for the given name', async () => { + await sut.save(DoFactory.createServiceProvider(false)); + + const result: Option> = await sut.findByName('this-service-provider-does-not-exist'); + + expect(result).toBeFalsy(); + }); + }); + + describe('findByKeycloakGroup', () => { + it('should find a ServiceProvider by its Keycloak groupname', async () => { + const expectedServiceProvider: ServiceProvider = DoFactory.createServiceProvider(false); + expectedServiceProvider.keycloakGroup = 'keycloak-group-1'; + const expectedPersistedServiceProvider: ServiceProvider = await sut.save(expectedServiceProvider); + const anotherServiceProvider: ServiceProvider = DoFactory.createServiceProvider(false); + anotherServiceProvider.keycloakGroup = 'keycloak-group-2'; + await sut.save(anotherServiceProvider); + + let result: ServiceProvider[] = []; + if (expectedServiceProvider.keycloakGroup) { + result = await sut.findByKeycloakGroup(expectedServiceProvider.keycloakGroup); + } + + expect(result).toEqual([expectedPersistedServiceProvider]); + }); + }); + describe('fetchRolleServiceProvidersWithoutPerson', () => { it('should define serviceProviderResult', async () => { const role: RolleID = faker.string.uuid(); @@ -218,4 +259,26 @@ describe('ServiceProviderRepo', () => { ); }); }); + + describe('deleteById', () => { + it('should delete an existing ServiceProvider by its id', async () => { + const serviceProvider: ServiceProvider = DoFactory.createServiceProvider(false); + const persistedPersistedServiceProvider: ServiceProvider = await sut.save(serviceProvider); + + const result: boolean = await sut.deleteById(persistedPersistedServiceProvider.id); + + expect(result).toBeTruthy(); + }); + }); + + describe('deleteByName', () => { + it('should delete an existing ServiceProvider by its name', async () => { + const serviceProvider: ServiceProvider = DoFactory.createServiceProvider(false); + const persistedPersistedServiceProvider: ServiceProvider = await sut.save(serviceProvider); + + const result: boolean = await sut.deleteByName(persistedPersistedServiceProvider.name); + + expect(result).toBeTruthy(); + }); + }); }); diff --git a/src/modules/service-provider/repo/service-provider.repo.ts b/src/modules/service-provider/repo/service-provider.repo.ts index bff91e3e4..90e84dfd1 100644 --- a/src/modules/service-provider/repo/service-provider.repo.ts +++ b/src/modules/service-provider/repo/service-provider.repo.ts @@ -74,6 +74,24 @@ export class ServiceProviderRepo { return serviceProvider && mapEntityToAggregate(serviceProvider); } + public async findByName(name: string): Promise>> { + const serviceProvider: Option = await this.em.findOne(ServiceProviderEntity, { + name: name, + }); + if (serviceProvider) { + return mapEntityToAggregate(serviceProvider); + } + + return null; + } + + public async findByKeycloakGroup(groupname: string): Promise[]> { + const serviceProviders: ServiceProviderEntity[] = await this.em.find(ServiceProviderEntity, { + keycloakGroup: groupname, + }); + return serviceProviders.map(mapEntityToAggregate); + } + public async find(options?: ServiceProviderFindOptions): Promise[]> { const exclude: readonly ['logo'] | undefined = options?.withLogo ? undefined : ['logo']; @@ -160,4 +178,14 @@ export class ServiceProviderRepo { return serviceProviders; } + + public async deleteById(id: string): Promise { + const deletedPersons: number = await this.em.nativeDelete(ServiceProviderEntity, { id }); + return deletedPersons > 0; + } + + public async deleteByName(name: string): Promise { + const deletedPersons: number = await this.em.nativeDelete(ServiceProviderEntity, { name: name }); + return deletedPersons > 0; + } } diff --git a/src/modules/service-provider/service-provider.module.ts b/src/modules/service-provider/service-provider.module.ts index 908368306..fe0947396 100644 --- a/src/modules/service-provider/service-provider.module.ts +++ b/src/modules/service-provider/service-provider.module.ts @@ -7,6 +7,9 @@ import { ServiceProviderFactory } from './domain/service-provider.factory.js'; import { ServiceProviderService } from './domain/service-provider.service.js'; import { CreateGroupAndRoleHandler } from './repo/service-provider-event-handler.js'; import { ServiceProviderRepo } from './repo/service-provider.repo.js'; +import { VidisModule } from '../vidis/vidis.module.js'; +import { OrganisationModule } from '../organisation/organisation.module.js'; +import { OrganisationServiceProviderRepo } from './repo/organisation-service-provider.repo.js'; @Module({ imports: [ @@ -14,8 +17,16 @@ import { ServiceProviderRepo } from './repo/service-provider.repo.js'; KeycloakAdministrationModule, EventModule, forwardRef(() => RolleModule), + VidisModule, + OrganisationModule, + ], + providers: [ + ServiceProviderRepo, + ServiceProviderFactory, + ServiceProviderService, + CreateGroupAndRoleHandler, + OrganisationServiceProviderRepo, ], - providers: [ServiceProviderRepo, ServiceProviderFactory, ServiceProviderService, CreateGroupAndRoleHandler], exports: [ServiceProviderRepo, ServiceProviderFactory, ServiceProviderService], }) export class ServiceProviderModule {} diff --git a/src/modules/vidis/api/vidis-angebote-api.types.ts b/src/modules/vidis/api/vidis-angebote-api.types.ts new file mode 100644 index 000000000..e3f8cd2ad --- /dev/null +++ b/src/modules/vidis/api/vidis-angebote-api.types.ts @@ -0,0 +1,49 @@ +export type VidisOfferCategoriesResponse = { + category: string[]; + competency: string[]; + gradeLevel: string[]; + schoolType: string[]; +}; + +export type VidisOfferResponse = { + offerId?: number; + offerVersion: number; + offerDescription: string; + offerLink: string; + offerLogo: string; + offerTitle: string; + offerLongTitle: string; + offerResourcePk?: number; + offerStatus?: string; + offerKategorien?: VidisOfferCategoriesResponse; + educationProviderOrganizationId?: number; + educationProviderOrganizationName: string; + educationProviderUserEmail?: string; + educationProviderUserId?: number; + educationProviderUserName?: string; + schoolActivations: string[]; +}; + +type ActionProperty = { + [key: string]: string; +}; + +type Actions = { + [key: string]: ActionProperty; +}; + +export type VidisResponse = { + facets: { + facetCriteria: string; + facetValues: { + numberOfOccurrences: number; + term: string; + }[]; + }[]; + lastPage: number; + totalCount: number; + pageSize: number; + actions: Actions; + page: number; + items: T[]; +}; diff --git a/src/modules/vidis/domain/vidis-angebot.ts b/src/modules/vidis/domain/vidis-angebot.ts new file mode 100644 index 000000000..4c0fe69b6 --- /dev/null +++ b/src/modules/vidis/domain/vidis-angebot.ts @@ -0,0 +1,25 @@ +export type VidisAngebotKategorie = { + category: string[]; + competency: string[]; + gradeLevel: string[]; + schoolType: string[]; +}; + +export type VidisAngebot = { + angebotId?: number; + angebotVersion: number; + angebotDescription: string; + angebotLink: string; + angebotLogo: string; + angebotTitle: string; + angebotLongTitle: string; + angebotResourcePk?: number; + angebotStatus?: string; + angebotKategorien?: VidisAngebotKategorie; + educationProviderOrganizationId?: number; + educationProviderOrganizationName: string; + educationProviderUserEmail?: string; + educationProviderUserId?: number; + educationProviderUserName?: string; + schoolActivations: string[]; +}; diff --git a/src/modules/vidis/vidis.module.ts b/src/modules/vidis/vidis.module.ts new file mode 100644 index 000000000..55dd5d4ae --- /dev/null +++ b/src/modules/vidis/vidis.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { VidisService } from './vidis.service.js'; +import { HttpModule } from '@nestjs/axios'; +import { LoggerModule } from '../../core/logging/logger.module.js'; + +@Module({ + imports: [LoggerModule.register(VidisModule.name), HttpModule], + providers: [VidisService], + exports: [VidisService], +}) +export class VidisModule {} diff --git a/src/modules/vidis/vidis.service.spec.ts b/src/modules/vidis/vidis.service.spec.ts new file mode 100644 index 000000000..c39910458 --- /dev/null +++ b/src/modules/vidis/vidis.service.spec.ts @@ -0,0 +1,131 @@ +import { DeepMocked, createMock } from '@golevelup/ts-jest'; +import { HttpService } from '@nestjs/axios'; +import { TestingModule, Test } from '@nestjs/testing'; +import { VidisService } from './vidis.service.js'; +import { VidisOfferResponse, VidisResponse } from './api/vidis-angebote-api.types.js'; +import { Observable, of } from 'rxjs'; +import { AxiosResponse } from 'axios'; +import { ConfigTestModule } from '../../../test/utils/config-test.module.js'; +import { VidisAngebot } from './domain/vidis-angebot.js'; +import { LoggingTestModule } from '../../../test/utils/logging-test.module.js'; + +const mockVidisRegionName: string = 'test-region'; + +const mockVidisAngebotResponses: VidisOfferResponse[] = [ + { + offerVersion: 1, + offerDescription: + 'Effiziente Organisation Ihrer Hausaufgaben mit der neuen Hausaufgaben Listen App Verlieren Sie nie wieder den Überblick über Ihre Aufgaben und Abgabefristen. Unsere Hausaufgaben Listen App bietet Ihnen eine strukturierte und benutzerfreundliche Lösung, um Ihre schulischen Verpflichtungen optimal zu verwalten. Funktionen der App: Übersichtliche Verwaltung: Behalten Sie alle Hausaufgaben, Projekte und To-Dos an einem zentralen Ort im Blick. Erinnerungsfunktion: Automatische Benachrichtigungen helfen Ihnen, keine Fristen mehr zu verpassen. Einfache Bedienung: Intuitive Benutzeroberfläche, die eine schnelle und unkomplizierte Nutzung ermöglicht. Kollaborationsmöglichkeit: Teilen Sie Aufgaben und Projekte mit Mitschülern, um effizienter zusammenzuarbeiten. Anpassbare Listen: Erstellen Sie individuelle Kategorien und Listen nach Ihren Bedürfnissen. Fortschrittsanzeige: Verfolgen Sie Ihre erledigten Aufgaben und sehen Sie Ihren Fortschritt in Echtzeit. Unsere Hausaufgaben Listen App ist kostenlos verfügbar und bietet Ihnen eine verlässliche Unterstützung bei der Organisation Ihres Schulalltags.', + offerLink: 'https://vidis-login-example.buergercloud.de/oauth2/authorization/vidis?vidis_idp_hint=vidis-idp', + offerLogo: 'dummy-string', + offerTitle: 'Hausaufgaben-Liste', + offerLongTitle: 'Testangebot Hausaufgaben-Liste', + educationProviderOrganizationName: 'VIDIS-Testangebot', + schoolActivations: ['DE-VIDIS-vidis_test_20202', 'DE-VIDIS-vidis_test_40404', 'DE-VIDIS-vidis_test_101010'], + }, + { + offerVersion: 1, + offerDescription: + 'divomath ist eine Lernumgebung für Mathematik, die insbesondere dem Prinzip der Verstehensorientierung folgt. Sie bietet Unterrichtseinheiten für die dritte bis sechste Jahrgangsstufe.', + offerLink: 'https://login-stage.divomath.de/idp-login?idp=vidis&vidis_idp_hint=vidis-idp', + offerLogo: 'dummy-string', + offerTitle: 'divomath VIDIS-Testsystem', + offerLongTitle: 'digital und verstehensorientiert Mathematik lernen (Test)', + educationProviderOrganizationName: 'divomath VIDIS-Testsystem', + schoolActivations: ['DE-VIDIS-vidis_test_30303', 'DE-VIDIS-vidis_test_20202', 'DE-VIDIS-vidis_test_101010'], + }, + { + offerVersion: 4, + offerDescription: 'webtown test offer', + offerLink: '?vidis_idp_hint=vidis-idp', + offerLogo: 'dummy-string', + offerTitle: 'webtown test offer', + offerLongTitle: 'webtown test offer', + educationProviderOrganizationName: 'VIDIS-Testangebot', + schoolActivations: ['DE-VIDIS-vidis_test_30303', 'DE-VIDIS-vidis_test_20202'], + }, +]; + +const mockVidisResponse: VidisResponse = { + facets: [ + { + facetCriteria: '', + facetValues: [ + { + numberOfOccurrences: 0, + term: '', + }, + ], + }, + ], + lastPage: 1, + totalCount: 3, + pageSize: 20, + actions: {}, + page: 1, + items: mockVidisAngebotResponses, +}; + +const mockVidisAxiosResponse = (): Observable => + of({ data: mockVidisResponse } as AxiosResponse>); + +describe(`VidisService`, () => { + let sut: VidisService; + let httpServiceMock: DeepMocked; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [ConfigTestModule, LoggingTestModule], + providers: [VidisService, { provide: HttpService, useValue: createMock() }], + }).compile(); + + sut = module.get(VidisService); + httpServiceMock = module.get(HttpService); + }); + + describe(`getActivatedAngeboteByRegion`, () => { + it(`should get the activated VIDIS Angebote by region from the VIDIS Angebot API if no errors occur`, async () => { + httpServiceMock.get.mockReturnValueOnce(mockVidisAxiosResponse()); + const expectedVidisOfferResponse: VidisOfferResponse[] = mockVidisAngebotResponses; + const expectedVidisAngebote: VidisAngebot[] = expectedVidisOfferResponse.map( + (offer: VidisOfferResponse) => { + return { + angebotVersion: offer.offerVersion, + angebotDescription: offer.offerDescription, + angebotLink: offer.offerLink, + angebotLogo: offer.offerLogo, + angebotTitle: offer.offerTitle, + angebotLongTitle: offer.offerLongTitle, + educationProviderOrganizationName: offer.educationProviderOrganizationName, + schoolActivations: offer.schoolActivations, + }; + }, + ); + + const actualVidisAngebote: VidisAngebot[] = await sut.getActivatedAngeboteByRegion(mockVidisRegionName); + + expect(actualVidisAngebote).toEqual(expectedVidisAngebote); + }); + + it(`should throw an error if getActivatedAngeboteByRegion throws an Error object`, async () => { + httpServiceMock.get.mockImplementation(() => { + throw new Error('Error when getting VIDIS Angebote.'); + }); + + await expect(sut.getActivatedAngeboteByRegion(mockVidisRegionName)).rejects.toThrow( + `Error getting all VIDIS Angebote: Error when getting VIDIS Angebote.`, + ); + }); + + it(`should throw an error if getActivatedAngeboteByRegion throws a non-Error object`, async () => { + httpServiceMock.get.mockImplementation(() => { + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw 'This is a non-Error throw'; + }); + + await expect(sut.getActivatedAngeboteByRegion(mockVidisRegionName)).rejects.toThrow( + `Error getting all VIDIS Angebote: Unknown error occurred`, + ); + }); + }); +}); diff --git a/src/modules/vidis/vidis.service.ts b/src/modules/vidis/vidis.service.ts new file mode 100644 index 000000000..59c22a076 --- /dev/null +++ b/src/modules/vidis/vidis.service.ts @@ -0,0 +1,58 @@ +import { HttpService } from '@nestjs/axios'; +import { AxiosResponse } from 'axios'; +import { Injectable } from '@nestjs/common'; +import { VidisConfig } from '../../shared/config/vidis.config.js'; +import { firstValueFrom } from 'rxjs'; +import { VidisOfferResponse, VidisResponse } from './api/vidis-angebote-api.types.js'; +import { VidisAngebot } from './domain/vidis-angebot.js'; +import { ServerConfig } from '../../shared/config/server.config.js'; +import { ConfigService } from '@nestjs/config'; +import { ClassLogger } from '../../core/logging/class-logger.js'; + +@Injectable() +export class VidisService { + private readonly vidisConfig: VidisConfig; + + public constructor( + private readonly httpService: HttpService, + configService: ConfigService, + private readonly logger: ClassLogger, + ) { + this.vidisConfig = configService.getOrThrow('VIDIS'); + } + + public async getActivatedAngeboteByRegion(regionName: string): Promise { + const url: string = this.vidisConfig.BASE_URL + `/o/vidis-rest/v1.0/offers/activated/by-region/${regionName}`; + this.logger.info(`Fetching activated Angebote for region: ${regionName}`); + try { + const response: AxiosResponse> = await firstValueFrom( + this.httpService.get(url, { + auth: { + username: this.vidisConfig.USERNAME, + password: this.vidisConfig.PASSWORD, + }, + }), + ); + const vidisOfferResponses: VidisOfferResponse[] = response.data.items; + const vidisAngebote: VidisAngebot[] = vidisOfferResponses.map((offer: VidisOfferResponse) => { + return { + angebotVersion: offer.offerVersion, + angebotDescription: offer.offerDescription, + angebotLink: offer.offerLink, + angebotLogo: offer.offerLogo, + angebotTitle: offer.offerTitle, + angebotLongTitle: offer.offerLongTitle, + educationProviderOrganizationName: offer.educationProviderOrganizationName, + schoolActivations: offer.schoolActivations, + }; + }); + return vidisAngebote; + } catch (error) { + if (error instanceof Error) { + throw new Error(`Error getting all VIDIS Angebote: ${error.message}`); + } else { + throw new Error(`Error getting all VIDIS Angebote: Unknown error occurred`); + } + } + } +} diff --git a/src/server/server.module.spec.ts b/src/server/server.module.spec.ts index d1c0c46e8..ac62426db 100644 --- a/src/server/server.module.spec.ts +++ b/src/server/server.module.spec.ts @@ -5,7 +5,7 @@ import { OIDC_CLIENT } from '../modules/authentication/services/oidc-client.serv import { MiddlewareConsumer } from '@nestjs/common'; import { createMock } from '@golevelup/ts-jest'; import { RedisClientType } from 'redis'; -import { ConfigTestModule } from '../../test/utils/index.js'; +import { ConfigTestModule, LoggingTestModule } from '../../test/utils/index.js'; jest.mock('redis', () => ({ createClient: (): RedisClientType => createMock(), @@ -16,7 +16,7 @@ describe('ServerModule', () => { beforeAll(async () => { module = await Test.createTestingModule({ - imports: [ServerModule, ConfigTestModule], + imports: [ServerModule, ConfigTestModule, LoggingTestModule], }) .overrideProvider(OIDC_CLIENT) .useValue( diff --git a/src/server/server.module.ts b/src/server/server.module.ts index 9b38a9683..45bf7ec8b 100644 --- a/src/server/server.module.ts +++ b/src/server/server.module.ts @@ -38,6 +38,7 @@ import { KeycloakHandlerModule } from '../modules/keycloak-handler/keycloak-hand import { CronModule } from '../modules/cron/cron.module.js'; import { ImportApiModule } from '../modules/import/import-api.module.js'; import { StatusModule } from '../modules/status/status.module.js'; +import { VidisModule } from '../modules/vidis/vidis.module.js'; @Module({ imports: [ @@ -98,6 +99,7 @@ import { StatusModule } from '../modules/status/status.module.js'; CronModule, ImportApiModule, StatusModule, + VidisModule, ], providers: [ { diff --git a/src/shared/config/config.env.ts b/src/shared/config/config.env.ts index 074f295f4..28f89be36 100644 --- a/src/shared/config/config.env.ts +++ b/src/shared/config/config.env.ts @@ -8,6 +8,7 @@ import { PrivacyIdeaConfig } from './privacyidea.config.js'; import { SystemConfig } from './system.config.js'; import { OxConfig } from './ox.config.js'; import { RedisConfig } from './redis.config.js'; +import { VidisConfig } from './vidis.config.js'; export type Config = { DB: Partial; @@ -20,6 +21,7 @@ export type Config = { PRIVACYIDEA: Partial; OX: Partial; SYSTEM: Partial; + VIDIS: Partial; }; export default (): Config => ({ @@ -83,4 +85,12 @@ export default (): Config => ({ : undefined, STEP_UP_TIMEOUT_ENABLED: process.env['SYSTEM_STEP_UP_TIMEOUT_ENABLED']?.toLowerCase() as 'true' | 'false', }, + VIDIS: { + BASE_URL: process.env['VIDIS_BASE_URL'], + USERNAME: process.env['VIDIS_USERNAME'], + PASSWORD: process.env['VIDIS_PASSWORD'], + REGION_NAME: process.env['VIDIS_REGION_NAME'], + KEYCLOAK_GROUP: process.env['VIDIS_KEYCLOAK_GROUP'], + KEYCLOAK_ROLE: process.env['VIDIS_KEYCLOAK_ROLE'], + }, }); diff --git a/src/shared/config/config.loader.spec.ts b/src/shared/config/config.loader.spec.ts index 9fa1dcd1a..68bee3352 100644 --- a/src/shared/config/config.loader.spec.ts +++ b/src/shared/config/config.loader.spec.ts @@ -69,6 +69,14 @@ describe('configloader', () => { USER_RESOLVER: 'mariadb_resolver', REALM: 'defrealm', }, + VIDIS: { + BASE_URL: 'dummy-url', + USERNAME: 'dummy-username', + PASSWORD: 'dummy-password', + REGION_NAME: 'dummy-region', + KEYCLOAK_GROUP: 'VIDIS-service', + KEYCLOAK_ROLE: 'VIDIS-user', + }, OX: { ENABLED: 'true', ENDPOINT: 'https://ox_ip:ox_port/webservices/OXUserService', @@ -190,6 +198,14 @@ describe('configloader', () => { USER_RESOLVER: 'mariadb_resolver', REALM: 'defrealm', }, + VIDIS: { + BASE_URL: 'dummy-url', + USERNAME: 'dummy-username', + PASSWORD: 'dummy-password', + REGION_NAME: 'dummy-region', + KEYCLOAK_GROUP: 'VIDIS-service', + KEYCLOAK_ROLE: 'VIDIS-user', + }, OX: { ENABLED: 'true', ENDPOINT: 'https://ox_ip:ox_port/webservices/OXUserService', diff --git a/src/shared/config/index.ts b/src/shared/config/index.ts index f92064ab8..4242b501a 100644 --- a/src/shared/config/index.ts +++ b/src/shared/config/index.ts @@ -10,3 +10,4 @@ export * from './server.config.js'; export * from './itslearning.config.js'; export * from './privacyidea.config.js'; export * from './system.config.js'; +export * from './vidis.config.js'; diff --git a/src/shared/config/json.config.ts b/src/shared/config/json.config.ts index 611d825fe..7d68ec139 100644 --- a/src/shared/config/json.config.ts +++ b/src/shared/config/json.config.ts @@ -13,6 +13,7 @@ import { PrivacyIdeaConfig } from './privacyidea.config.js'; import { SystemConfig } from './system.config.js'; import { OxConfig } from './ox.config.js'; import { ImportConfig } from './import.config.js'; +import { VidisConfig } from './vidis.config.js'; export class JsonConfig { @ValidateNested() @@ -66,4 +67,8 @@ export class JsonConfig { @ValidateNested() @Type(() => SystemConfig) public readonly SYSTEM!: SystemConfig; + + @ValidateNested() + @Type(() => VidisConfig) + public readonly VIDIS!: VidisConfig; } diff --git a/src/shared/config/vidis.config.ts b/src/shared/config/vidis.config.ts new file mode 100644 index 000000000..b11342377 --- /dev/null +++ b/src/shared/config/vidis.config.ts @@ -0,0 +1,21 @@ +import { IsString } from 'class-validator'; + +export class VidisConfig { + @IsString() + public readonly BASE_URL!: string; + + @IsString() + public readonly USERNAME!: string; + + @IsString() + public readonly PASSWORD!: string; + + @IsString() + public readonly REGION_NAME!: string; + + @IsString() + public readonly KEYCLOAK_GROUP!: string; + + @IsString() + public readonly KEYCLOAK_ROLE!: string; +} diff --git a/test/config.test.json b/test/config.test.json index 5c86ca289..8d2becd54 100644 --- a/test/config.test.json +++ b/test/config.test.json @@ -64,6 +64,14 @@ "USER_RESOLVER": "mariadb_resolver", "REALM": "defrealm" }, + "VIDIS": { + "BASE_URL": "", + "USERNAME": "", + "PASSWORD": "", + "REGION_NAME": "test-region", + "KEYCLOAK_GROUP": "VIDIS-service", + "KEYCLOAK_ROLE": "VIDIS-user" + }, "OX": { "ENABLED": "false", "ENDPOINT": "https://ox_ip:ox_port/webservices/",