diff --git a/build.gradle.kts b/build.gradle.kts index 270fadcf..c9686429 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. @Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed plugins { - id("dev.testify") version "3.0.0" apply false alias(libs.plugins.androidApplication) apply false alias(libs.plugins.kotlinAndroid) apply false alias(libs.plugins.serialization) apply false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f642979f..bd96736a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -35,6 +35,7 @@ serialization_version = "1.6.0" dropshot_version = "0.5.0" ksp = "2.0.21-1.0.27" install_referrer = "2.2" +webkit = "1.14.0" [libraries] # SQL @@ -53,7 +54,7 @@ revenue_cat = { module = "com.revenuecat.purchases:purchases", version.ref = "re # Browser browser = { module = "androidx.browser:browser", version.ref = "browser_version" } - +webkit = { module = "androidx.webkit:webkit", version.ref = "webkit" } # Compose compose_bom = { module = "androidx.compose:compose-bom", version.ref = "compose_version" } activity_compose = { module = "androidx.activity:activity-compose", version.ref = "activity_compose_version" } diff --git a/superwall/build.gradle.kts b/superwall/build.gradle.kts index 69214676..ed422f29 100644 --- a/superwall/build.gradle.kts +++ b/superwall/build.gradle.kts @@ -198,6 +198,7 @@ dependencies { // Browser implementation(libs.browser) + implementation(libs.webkit) // Core implementation(libs.core) diff --git a/superwall/src/main/java/com/superwall/sdk/config/ConfigManager.kt b/superwall/src/main/java/com/superwall/sdk/config/ConfigManager.kt index 690dd983..a3c143c1 100644 --- a/superwall/src/main/java/com/superwall/sdk/config/ConfigManager.kt +++ b/superwall/src/main/java/com/superwall/sdk/config/ConfigManager.kt @@ -28,6 +28,7 @@ import com.superwall.sdk.models.triggers.Trigger import com.superwall.sdk.network.SuperwallAPI import com.superwall.sdk.network.awaitUntilNetworkExists import com.superwall.sdk.network.device.DeviceHelper +import com.superwall.sdk.paywall.archive.WebArchiveLibrary import com.superwall.sdk.paywall.manager.PaywallManager import com.superwall.sdk.storage.DisableVerboseEvents import com.superwall.sdk.storage.LatestConfig @@ -67,6 +68,7 @@ open class ConfigManager( private val awaitUtilNetwork: suspend () -> Unit = { context.awaitUntilNetworkExists() }, + private val webArchiveLibrary: WebArchiveLibrary, ) { private val CACHE_LIMIT = 1.seconds @@ -151,6 +153,7 @@ open class ConfigManager( } } } catch (e: Throwable) { + e.printStackTrace() // If fetching config fails, default to the cached version // Note: Only a timeout exception is possible here oldConfig?.let { @@ -198,11 +201,20 @@ open class ConfigManager( } else { // If there's no cached enrichment and config refresh is disabled, // try to fetch with 1 sec timeout or fail. - deviceHelper.getEnrichment(0, 1.seconds) + try { + withTimeout(1.seconds) { + return@withTimeout deviceHelper.getEnrichment(0, 1.seconds) + } + } catch (e: Throwable) { + return@async Either.Failure(e) + } } } - val attributesDeferred = ioScope.async { factory.makeSessionDeviceAttributes() } + val attributesDeferred = + ioScope.async { + factory.makeSessionDeviceAttributes() + } // Await results from both operations val (result, enriched, attributes) = @@ -215,6 +227,7 @@ open class ConfigManager( @Suppress("UNCHECKED_CAST") track(InternalSuperwallEvent.DeviceAttributes(attributes as HashMap)) } + val configResult = result as Either val enrichmentResult = enriched as Either configResult @@ -256,7 +269,9 @@ open class ConfigManager( }.fold( onSuccess = { - ioScope.launch { preloadPaywalls() } + ioScope.launch { + preloadPaywalls() + } }, onFailure = { e -> @@ -333,7 +348,7 @@ open class ConfigManager( // Preloads paywalls. private suspend fun preloadPaywalls() { - if (!options.paywalls.shouldPreload) return + if (!options.paywalls.shouldPreload || !options.paywalls.shouldArchive) return preloadAllPaywalls() } diff --git a/superwall/src/main/java/com/superwall/sdk/config/PaywallPreload.kt b/superwall/src/main/java/com/superwall/sdk/config/PaywallPreload.kt index 49b6cde2..47d943b6 100644 --- a/superwall/src/main/java/com/superwall/sdk/config/PaywallPreload.kt +++ b/superwall/src/main/java/com/superwall/sdk/config/PaywallPreload.kt @@ -1,14 +1,17 @@ package com.superwall.sdk.config import android.content.Context +import com.superwall.sdk.dependencies.OptionsFactory import com.superwall.sdk.dependencies.RequestFactory import com.superwall.sdk.dependencies.RuleAttributesFactory import com.superwall.sdk.misc.IOScope import com.superwall.sdk.misc.launchWithTracking import com.superwall.sdk.models.config.Config import com.superwall.sdk.models.paywall.CacheKey +import com.superwall.sdk.models.paywall.Paywall import com.superwall.sdk.models.paywall.PaywallIdentifier import com.superwall.sdk.models.triggers.Trigger +import com.superwall.sdk.paywall.archive.WebArchiveLibrary import com.superwall.sdk.paywall.manager.PaywallManager import com.superwall.sdk.paywall.presentation.rule_logic.javascript.RuleEvaluator import com.superwall.sdk.paywall.request.ResponseIdentifiers @@ -25,8 +28,20 @@ class PaywallPreload( val storage: LocalStorage, val assignments: Assignments, val paywallManager: PaywallManager, + val webArchiveLibrary: WebArchiveLibrary, ) { + val ignoredArchiveUrls = + listOf( + "webflow.com", + "webflow.io", + "builder-templates", + "apple.com", + "templates.superwall.com", + "interceptor.superwallapp.com", + ) + interface Factory : + OptionsFactory, RequestFactory, RuleAttributesFactory, RuleEvaluator.Factory @@ -57,7 +72,10 @@ class PaywallPreload( unconfirmedAssignments = assignments.unconfirmedAssignments, expressionEvaluator = expressionEvaluator, ) - preloadPaywalls(paywallIdentifiers = paywallIds) + preloadPaywalls( + paywallIdentifiers = paywallIds, + paywalls = config.paywalls.filter { it.identifier in paywallIds }, + ) currentPreloadingTask = null } @@ -74,49 +92,77 @@ class PaywallPreload( config, triggersToPreload.toSet(), ) - preloadPaywalls(triggerPaywallIdentifiers) + preloadPaywalls( + triggerPaywallIdentifiers, + config.paywalls.filter { it.identifier in triggerPaywallIdentifiers }, + ) } // Preloads paywalls referenced by triggers. - private suspend fun preloadPaywalls(paywallIdentifiers: Set) { + private suspend fun preloadPaywalls( + paywallIdentifiers: Set, + paywalls: List, + ) { val webviewExists = webViewExists() + val paywalls = + paywalls + .filter { it.identifier in paywallIdentifiers } + .distinctBy { it.identifier } + .filter { + !ignoredArchiveUrls.any { url -> it.url.value.contains(url) } + } + + val shouldArchive = factory.makeSuperwallOptions().paywalls.shouldArchive + val shouldPreload = factory.makeSuperwallOptions().paywalls.shouldPreload + + val identifiersToDownload = + if (shouldArchive) paywalls.map { it.identifier } else emptyList() + if (webviewExists) { scope.launchWithTracking { - // List to hold all the Deferred objects - val tasks = mutableListOf>() - - for (identifier in paywallIdentifiers) { - val task = - async { - // Your asynchronous operation - val request = - factory.makePaywallRequest( - eventData = null, - responseIdentifiers = - ResponseIdentifiers( - paywallId = identifier, - experiment = null, - ), - overrides = null, - isDebuggerLaunched = false, - presentationSourceType = null, - ) - try { - paywallManager.getPaywallView( - request = request, - isForPresentation = true, - isPreloading = true, - delegate = null, - ) - } catch (e: Exception) { - // Handle exception + // If archiving is enable, cache the available paywalls first + if (shouldArchive) { + async { + cachePaywallsFromManifest(paywalls.toSet()) + }.await() + } + // If preloading is enabled, preload the paywalls after archiving them + if (shouldPreload) { + val tasks = mutableListOf>() + for (identifier in paywallIdentifiers.filter { it !in identifiersToDownload }) { + val task = + async { + // Your asynchronous operation + val request = + factory.makePaywallRequest( + eventData = null, + responseIdentifiers = + ResponseIdentifiers( + paywallId = identifier, + experiment = null, + ), + overrides = null, + isDebuggerLaunched = false, + presentationSourceType = null, + ) + + try { + paywallManager.getPaywallView( + request = request, + isForPresentation = true, + isPreloading = true, + delegate = null, + ) + } catch (e: Exception) { + // Handle exception + } } - } - tasks.add(task) + tasks.add(task) + } + // Await all tasks + tasks.awaitAll() } - // Await all tasks - tasks.awaitAll() } } } @@ -166,4 +212,16 @@ class PaywallPreload( paywallManager.removePaywallView(it) } } + + private suspend fun cachePaywallsFromManifest(paywalls: Set) { + paywalls + .distinctBy { it.identifier } + .filter { + !ignoredArchiveUrls.any { url -> it.url.value.contains(url) } + }.map { + scope.async { + webArchiveLibrary.downloadManifest(it.identifier, it.url.value, it.manifest) + } + }.awaitAll() + } } diff --git a/superwall/src/main/java/com/superwall/sdk/config/options/PaywallOptions.kt b/superwall/src/main/java/com/superwall/sdk/config/options/PaywallOptions.kt index 37e9f6fc..77654da4 100644 --- a/superwall/src/main/java/com/superwall/sdk/config/options/PaywallOptions.kt +++ b/superwall/src/main/java/com/superwall/sdk/config/options/PaywallOptions.kt @@ -40,6 +40,8 @@ class PaywallOptions { // or ``Superwall/preloadPaywalls(forEvents:)`` var shouldPreload: Boolean = true + var shouldArchive: Boolean = false + // Loads paywall template websites from disk, if available. Defaults to `true`. // // When you save a change to your paywall in the Superwall dashboard, a key is diff --git a/superwall/src/main/java/com/superwall/sdk/dependencies/DependencyContainer.kt b/superwall/src/main/java/com/superwall/sdk/dependencies/DependencyContainer.kt index b92a73e8..cd4d2887 100644 --- a/superwall/src/main/java/com/superwall/sdk/dependencies/DependencyContainer.kt +++ b/superwall/src/main/java/com/superwall/sdk/dependencies/DependencyContainer.kt @@ -42,6 +42,7 @@ import com.superwall.sdk.models.events.EventData import com.superwall.sdk.models.paywall.Paywall import com.superwall.sdk.models.product.ProductVariable import com.superwall.sdk.network.Api +import com.superwall.sdk.network.ArchiveService import com.superwall.sdk.network.BaseHostService import com.superwall.sdk.network.CollectorService import com.superwall.sdk.network.EnrichmentService @@ -52,6 +53,11 @@ import com.superwall.sdk.network.SubscriptionService import com.superwall.sdk.network.device.DeviceHelper import com.superwall.sdk.network.device.DeviceInfo import com.superwall.sdk.network.session.CustomHttpUrlConnection +import com.superwall.sdk.paywall.archive.Base64ArchiveEncoder +import com.superwall.sdk.paywall.archive.CachedArchiveLibrary +import com.superwall.sdk.paywall.archive.ManifestDownloader +import com.superwall.sdk.paywall.archive.StreamArchiveCompressor +import com.superwall.sdk.paywall.archive.WebArchiveLibrary import com.superwall.sdk.paywall.manager.PaywallManager import com.superwall.sdk.paywall.manager.PaywallViewCache import com.superwall.sdk.paywall.presentation.PaywallInfo @@ -154,7 +160,7 @@ class DependencyContainer( var storeManager: StoreManager val transactionManager: TransactionManager val googleBillingWrapper: GoogleBillingWrapper - + var archive: WebArchiveLibrary var entitlements: Entitlements lateinit var reedemer: WebPaywallRedeemer private val uiScope @@ -274,6 +280,7 @@ class DependencyContainer( factory = this, customHttpUrlConnection = httpConnection, ), + archiveService = ArchiveService(httpConnection), factory = this, ) errorTracker = ErrorTracker(scope = ioScope, cache = storage) @@ -306,6 +313,13 @@ class DependencyContainer( ioScope, ) + archive = + CachedArchiveLibrary( + storage, + ManifestDownloader(IOScope(), network), + StreamArchiveCompressor(encoder = Base64ArchiveEncoder()), + ) + paywallPreload = PaywallPreload( factory = this, @@ -313,6 +327,7 @@ class DependencyContainer( assignments = assignments, paywallManager = paywallManager, scope = ioScope, + webArchiveLibrary = archive, ) configManager = @@ -333,6 +348,7 @@ class DependencyContainer( }, entitlements = entitlements, webPaywallRedeemer = { reedemer }, + webArchiveLibrary = archive, ) reedemer = @@ -753,6 +769,8 @@ class DependencyContainer( override fun makeSuperwallOptions(): SuperwallOptions = configManager.options + override fun webArchive(): WebArchiveLibrary = archive + override suspend fun makeTriggers(): Set = configManager.triggersByEventName.keys override suspend fun provideRuleEvaluator(context: Context): ExpressionEvaluating = evaluator diff --git a/superwall/src/main/java/com/superwall/sdk/dependencies/FactoryProtocols.kt b/superwall/src/main/java/com/superwall/sdk/dependencies/FactoryProtocols.kt index 7f940663..a18e98d2 100644 --- a/superwall/src/main/java/com/superwall/sdk/dependencies/FactoryProtocols.kt +++ b/superwall/src/main/java/com/superwall/sdk/dependencies/FactoryProtocols.kt @@ -25,6 +25,7 @@ import com.superwall.sdk.network.Api import com.superwall.sdk.network.JsonFactory import com.superwall.sdk.network.device.DeviceHelper import com.superwall.sdk.network.device.DeviceInfo +import com.superwall.sdk.paywall.archive.WebArchiveLibrary import com.superwall.sdk.paywall.manager.PaywallViewCache import com.superwall.sdk.paywall.presentation.internal.PresentationRequest import com.superwall.sdk.paywall.presentation.internal.PresentationRequestType @@ -189,6 +190,8 @@ interface StoreTransactionFactory { interface OptionsFactory { fun makeSuperwallOptions(): SuperwallOptions + + fun webArchive(): WebArchiveLibrary } interface TriggerFactory { diff --git a/superwall/src/main/java/com/superwall/sdk/logger/LogScope.kt b/superwall/src/main/java/com/superwall/sdk/logger/LogScope.kt index 129d03e2..1a39fa3b 100644 --- a/superwall/src/main/java/com/superwall/sdk/logger/LogScope.kt +++ b/superwall/src/main/java/com/superwall/sdk/logger/LogScope.kt @@ -26,6 +26,7 @@ enum class LogScope { paywallView, nativePurchaseController, cache, + webarchive, all, ; diff --git a/superwall/src/main/java/com/superwall/sdk/misc/Either.kt b/superwall/src/main/java/com/superwall/sdk/misc/Either.kt index 28e327b4..4de93345 100644 --- a/superwall/src/main/java/com/superwall/sdk/misc/Either.kt +++ b/superwall/src/main/java/com/superwall/sdk/misc/Either.kt @@ -77,7 +77,7 @@ suspend fun Either.onErrorAsync(onError: suspend (E) -> suspend fun eitherWithTimeout( duration: Duration, - error: () -> E, + error: (Throwable) -> E, run: suspend () -> Either, ): Either { return try { @@ -85,7 +85,8 @@ suspend fun eitherWithTimeout( return@withTimeout run() } } catch (e: Throwable) { - Either.Failure(error()) + e.printStackTrace() + Either.Failure(error(e)) } } diff --git a/superwall/src/main/java/com/superwall/sdk/models/paywall/Paywall.kt b/superwall/src/main/java/com/superwall/sdk/models/paywall/Paywall.kt index 06efac26..527a2f74 100644 --- a/superwall/src/main/java/com/superwall/sdk/models/paywall/Paywall.kt +++ b/superwall/src/main/java/com/superwall/sdk/models/paywall/Paywall.kt @@ -64,7 +64,7 @@ data class Paywall( "Unknown or unsupported presentation style: $presentationStyle", ) }, - delay = presentationDelay, + delay = 0, ), @SerialName("background_color_hex") val backgroundColorHex: String, @@ -122,6 +122,8 @@ data class Paywall( var surveys: List = emptyList(), @SerialName("is_scroll_enabled") val isScrollEnabled: Boolean? = true, + @SerialName("manifest") + val manifest: WebArchiveManifest? = null, ) : SerializableEntity { // Public getter for productItems var productItems: List @@ -266,6 +268,12 @@ data class Paywall( cacheKey = "123", buildId = "test", isScrollEnabled = true, + manifest = + WebArchiveManifest( + WebArchiveManifest.Usage.NEVER, + WebArchiveManifest.Document("", ""), + emptyList(), + ), ) } } diff --git a/superwall/src/main/java/com/superwall/sdk/models/paywall/WebArchiveManifest.kt b/superwall/src/main/java/com/superwall/sdk/models/paywall/WebArchiveManifest.kt new file mode 100644 index 00000000..ea0b6272 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/models/paywall/WebArchiveManifest.kt @@ -0,0 +1,44 @@ +package com.superwall.sdk.models.paywall + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class WebArchiveManifest( + @SerialName("use") val use: Usage, + @SerialName("document") val document: Document, + @SerialName("resources") val resources: List, +) { + sealed interface ManifestPart { + val url: String + val mimeType: String + } + + @Serializable + enum class Usage { + @SerialName("IF_AVAILABLE_ON_PAYWALL_OPEN") + IF_AVAILABLE_ON_PAYWALL_OPEN, + + @SerialName("NEVER") + NEVER, + + @SerialName("ALWAYS") + ALWAYS, + } + + @Serializable + data class Document( + @SerialName("url") + override val url: String, + @SerialName("mime_type") + override val mimeType: String, + ) : ManifestPart + + @Serializable + data class Resource( + @SerialName("url") + override val url: String, + @SerialName("mime_type") + override val mimeType: String, + ) : ManifestPart +} diff --git a/superwall/src/main/java/com/superwall/sdk/network/ArchiveService.kt b/superwall/src/main/java/com/superwall/sdk/network/ArchiveService.kt new file mode 100644 index 00000000..68c0cf7a --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/network/ArchiveService.kt @@ -0,0 +1,33 @@ +package com.superwall.sdk.network + +import android.net.Uri +import com.superwall.sdk.logger.LogLevel +import com.superwall.sdk.logger.LogScope +import com.superwall.sdk.logger.Logger +import com.superwall.sdk.misc.Either +import com.superwall.sdk.misc.onError +import com.superwall.sdk.network.session.CustomHttpUrlConnection +import java.net.URL + +class ArchiveService( + private val customHttpUrlConnection: CustomHttpUrlConnection, +) { + init { + System.setProperty("http.maxConnections", "256") + } + + suspend fun fetchRemoteFile(url: Uri): Either = + customHttpUrlConnection + .downloadFileAt( + url.toString().let { + URL(it) + }, + ).onError { + Logger.debug( + logLevel = LogLevel.error, + scope = LogScope.network, + message = "Request Failed while fetching file at: $url", + error = it, + ) + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/network/FileResponse.kt b/superwall/src/main/java/com/superwall/sdk/network/FileResponse.kt new file mode 100644 index 00000000..4f6494b2 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/network/FileResponse.kt @@ -0,0 +1,27 @@ +package com.superwall.sdk.network + +data class FileResponse( + val content: ByteArray, + val type: String?, + val extras: Map, +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as FileResponse + + if (!content.contentEquals(other.content)) return false + if (type != other.type) return false + if (extras != other.extras) return false + + return true + } + + override fun hashCode(): Int { + var result = content.contentHashCode() + result = 31 * result + type.hashCode() + result = 31 * result + extras.hashCode() + return result + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/network/Network.kt b/superwall/src/main/java/com/superwall/sdk/network/Network.kt index e73cb0ae..53333faf 100644 --- a/superwall/src/main/java/com/superwall/sdk/network/Network.kt +++ b/superwall/src/main/java/com/superwall/sdk/network/Network.kt @@ -1,5 +1,6 @@ package com.superwall.sdk.network +import android.net.Uri import com.superwall.sdk.analytics.internal.trackable.InternalSuperwallEvent import com.superwall.sdk.dependencies.ApiFactory import com.superwall.sdk.logger.LogLevel @@ -35,6 +36,7 @@ open class Network( private val enrichmentService: EnrichmentService, private val factory: ApiFactory, private val subscriptionService: SubscriptionService, + private val archiveService: ArchiveService, ) : SuperwallAPI { override suspend fun sendEvents(events: EventsRequest): Either = collectorService @@ -136,6 +138,14 @@ open class Network( .redeemToken(codes, userId, aliasId, vendorId, receipts) .logError("/redeem") + override suspend fun fetchRemoteFile( + url: Uri, + id: String, + ): Either = + archiveService + .fetchRemoteFile(url) + .logError("$url") + override suspend fun webEntitlementsByUserId( userId: UserId, deviceId: DeviceVendorId, diff --git a/superwall/src/main/java/com/superwall/sdk/network/RequestExecutor.kt b/superwall/src/main/java/com/superwall/sdk/network/RequestExecutor.kt index 93e69b3a..c52d4a6f 100644 --- a/superwall/src/main/java/com/superwall/sdk/network/RequestExecutor.kt +++ b/superwall/src/main/java/com/superwall/sdk/network/RequestExecutor.kt @@ -25,7 +25,6 @@ class RequestExecutor( val auth = request?.getRequestProperty("Authorization") ?: return Either.Failure(NetworkError.NotAuthenticated()) - Logger.debug( LogLevel.debug, LogScope.network, @@ -45,10 +44,11 @@ class RequestExecutor( } var responseMessage: String? = null - + var bytes: ByteArray? = null when (responseCode) { in 200..299 -> { - responseMessage = request.inputStream.bufferedReader().use { it.readText() } + bytes = request.inputStream.use { it.readBytes() } + responseMessage = bytes.toString(Charsets.UTF_8) request.disconnect() } HttpURLConnection.HTTP_MOVED_PERM, HttpURLConnection.HTTP_MOVED_TEMP, HttpURLConnection.HTTP_SEE_OTHER -> { @@ -107,6 +107,7 @@ class RequestExecutor( responseMessage, requestDuration, headers, + bytes, ), ) } catch (e: Throwable) { diff --git a/superwall/src/main/java/com/superwall/sdk/network/RequestResult.kt b/superwall/src/main/java/com/superwall/sdk/network/RequestResult.kt index 1c922068..592e8220 100644 --- a/superwall/src/main/java/com/superwall/sdk/network/RequestResult.kt +++ b/superwall/src/main/java/com/superwall/sdk/network/RequestResult.kt @@ -6,6 +6,7 @@ class RequestResult( val responseMessage: String, val duration: Double, val headers: Map, + val buffer: ByteArray?, ) fun RequestResult.authHeader(): String = headers["Authorization"] ?: "" diff --git a/superwall/src/main/java/com/superwall/sdk/network/ResponseType.kt b/superwall/src/main/java/com/superwall/sdk/network/ResponseType.kt new file mode 100644 index 00000000..8daeb8f0 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/network/ResponseType.kt @@ -0,0 +1,11 @@ +package com.superwall.sdk.network + +sealed class ResponseType { + data class Text( + val string: ByteArray, + ) : ResponseType() + + data class Binary( + val bytes: ByteArray, + ) : ResponseType() +} diff --git a/superwall/src/main/java/com/superwall/sdk/network/SuperwallAPI.kt b/superwall/src/main/java/com/superwall/sdk/network/SuperwallAPI.kt index eed697c6..1bb520ca 100644 --- a/superwall/src/main/java/com/superwall/sdk/network/SuperwallAPI.kt +++ b/superwall/src/main/java/com/superwall/sdk/network/SuperwallAPI.kt @@ -1,5 +1,6 @@ package com.superwall.sdk.network +import android.net.Uri import com.superwall.sdk.misc.Either import com.superwall.sdk.models.assignment.Assignment import com.superwall.sdk.models.assignment.AssignmentPostback @@ -53,4 +54,9 @@ interface SuperwallAPI { vendorId: DeviceVendorId, receipts: List, ): Either + + suspend fun fetchRemoteFile( + url: Uri, + id: String, + ): Either } diff --git a/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt b/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt index 723b0f05..8ff6db42 100644 --- a/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt +++ b/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt @@ -46,8 +46,6 @@ import com.superwall.sdk.utilities.DateUtils import com.superwall.sdk.utilities.dateFormat import com.superwall.sdk.utilities.withErrorTracking import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.withTimeout import kotlinx.serialization.json.Json import org.threeten.bp.Instant import java.text.SimpleDateFormat @@ -56,7 +54,6 @@ import java.util.Date import java.util.Locale import java.util.TimeZone import kotlin.time.Duration -import kotlin.time.Duration.Companion.minutes enum class InterfaceStyle( val rawValue: String, @@ -452,21 +449,7 @@ class DeviceHelper( return withErrorTracking { val identityInfo = factory.makeIdentityInfo() val aliases = listOf(identityInfo.aliasId) - val geo = - try { - withTimeout(1.minutes) { - lastEnrichment.first { it != null } - } - } catch (e: Throwable) { - Logger.debug( - logLevel = LogLevel.error, - scope = LogScope.device, - message = "Failed to get geo info - timeout", - info = emptyMap(), - error = e, - ) - null - } + val enriched = lastEnrichment.value val capabilities: List = listOf( Capability.PaywallEventReceiver(), diff --git a/superwall/src/main/java/com/superwall/sdk/network/session/CustomURLSession.kt b/superwall/src/main/java/com/superwall/sdk/network/session/CustomURLSession.kt index 775b82c8..1ca19fc1 100644 --- a/superwall/src/main/java/com/superwall/sdk/network/session/CustomURLSession.kt +++ b/superwall/src/main/java/com/superwall/sdk/network/session/CustomURLSession.kt @@ -7,6 +7,7 @@ import com.superwall.sdk.misc.Either import com.superwall.sdk.misc.flatMap import com.superwall.sdk.misc.map import com.superwall.sdk.misc.retrying +import com.superwall.sdk.network.FileResponse import com.superwall.sdk.network.NetworkError import com.superwall.sdk.network.NetworkRequestData import com.superwall.sdk.network.RequestExecutor @@ -14,6 +15,7 @@ import com.superwall.sdk.network.RequestResult import com.superwall.sdk.network.authHeader import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json +import java.net.URL class CustomHttpUrlConnection( val json: Json, @@ -64,4 +66,19 @@ class CustomHttpUrlConnection( } } } + + suspend fun downloadFileAt(url: URL): Either { + val result = + requestExecutor.execute( + NetworkRequestData( + url = url.toURI(), + factory = { _, it -> emptyMap() }, + ), + ) + + return result.map { + val contentType = it.headers.get("Content-Type") + FileResponse(it.buffer!!, contentType, it.headers) + } + } } diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/ArchiveEncoder.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/ArchiveEncoder.kt new file mode 100644 index 00000000..711d3640 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/ArchiveEncoder.kt @@ -0,0 +1,9 @@ +package com.superwall.sdk.paywall.archive + +interface ArchiveEncoder { + fun encode(content: ByteArray): String + + fun decode(content: ByteArray): ByteArray + + fun decodeDefault(string: String): ByteArray +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/ArchiveWebClient.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/ArchiveWebClient.kt new file mode 100644 index 00000000..e7cd2986 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/ArchiveWebClient.kt @@ -0,0 +1,124 @@ +package com.superwall.sdk.paywall.archive + +import android.webkit.WebResourceRequest +import android.webkit.WebResourceResponse +import android.webkit.WebView +import androidx.core.net.toUri +import androidx.webkit.WebResourceErrorCompat +import androidx.webkit.WebViewAssetLoader +import com.superwall.sdk.logger.LogLevel +import com.superwall.sdk.logger.LogScope +import com.superwall.sdk.logger.Logger +import com.superwall.sdk.misc.IOScope +import com.superwall.sdk.paywall.archive.models.ArchivePart +import com.superwall.sdk.paywall.archive.models.DecompressedWebArchive +import com.superwall.sdk.paywall.archive.models.MimeType +import com.superwall.sdk.paywall.view.webview.DefaultWebviewClient + +/* +* Routes requests coming to specific URLs to WebArchive files. +* */ +internal class ArchiveWebClient( + private val archive: DecompressedWebArchive, + private val encoder: ArchiveEncoder = Base64ArchiveEncoder(), + onError: (WebResourceErrorCompat) -> Unit, +) : DefaultWebviewClient(ioScope = IOScope()) { + companion object { + const val OVERRIDE_PATH = "https://appassets.androidplatform.net/assets/index.html" + } + + val assetLoader = + WebViewAssetLoader + .Builder() + // Requests coming towards these paths will be intercepted + .addPathHandler("/assets/") { uri -> + val url = resolveUrlFromArchive(archive, uri) + url + }.addPathHandler("/runtime/") { uri -> + val url = resolveUrlFromArchive(archive, uri) + url + }.addPathHandler("/") { uri -> + val url = resolveUrlFromArchive(archive, uri) + url + }.build() + + override fun shouldInterceptRequest( + view: WebView, + request: WebResourceRequest, + ): WebResourceResponse? { + val res = assetLoader.shouldInterceptRequest(request.url.toString().toUri()) + return res + } + + override fun shouldInterceptRequest( + view: WebView?, + url: String, + ): WebResourceResponse? { + val res = assetLoader.shouldInterceptRequest(url.toUri()) + return res + } + + /* + Given an URL and an archive, resolves the URL by looking it up in the archive. + A special case is when the URL is the index.html, in which case we look for the + content type text/html and contentId=index. + * */ + private fun resolveUrlFromArchive( + archiveFile: DecompressedWebArchive, + url: String, + ): WebResourceResponse { + // Find the part that matches the requested url or the main document + // Since they can be relative paths, it checks via .contains + val part = + archiveFile.content.find { part -> + if (url.contains("index.html")) { + part is ArchivePart.Document + } else { + part.url.contains(url) + } + } + if (part == null) { + Logger.debug( + logLevel = LogLevel.debug, + scope = LogScope.webarchive, + message = "No part found for $url", + ) + return WebResourceResponse( + MimeType.HTML.toString(), + "UTF-8", + 404, + "Not found", + mutableMapOf(), + "".toByteArray().inputStream(), + ) + } + val mimeType = part.mimeType + return when (MimeType.fromString(mimeType).type) { + "text" -> { + // Respond with the content as text + val response = + WebResourceResponse( + mimeType.toString(), + "UTF-8", + 200, + "OK", + mutableMapOf(), + part.content.inputStream(), + ) + response + } + + else -> { + // Decode content as base64 + return try { + WebResourceResponse(mimeType.toString(), "UTF-8", encoder.decode(part.content).inputStream()) + } catch ( + e: Throwable, + ) { + e.printStackTrace() + WebResourceResponse(mimeType.toString(), "UTF-8", ByteArray(0).inputStream()) + } + } + } + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/Base64ArchiveEncoder.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/Base64ArchiveEncoder.kt new file mode 100644 index 00000000..70ff2d22 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/Base64ArchiveEncoder.kt @@ -0,0 +1,57 @@ +package com.superwall.sdk.paywall.archive + +import android.util.Base64 +import android.util.Base64OutputStream +import java.io.OutputStream + +/** + * Base64 implementation of archive encoder + * with specific encoding width for compatibility with + * chrome's export format and email clients + */ + +class StreamingBase64ArchiveEncoder { + fun streamEncode( + input: ByteArray, + out: OutputStream, + ) { + // CRLF line-folds *and* keep underlying stream open + val FLAGS = Base64.CRLF or Base64.NO_CLOSE + + // The flag prevents FileOutputStream from being closed prematurely + Base64OutputStream(out, FLAGS).use { enc -> + enc.write(input) // enc.flush() happens inside use{} automatically + } + } + + fun decodeDefault(encoded: String): ByteArray = + try { + Base64.decode(encoded, Base64.DEFAULT) + } catch (t: Throwable) { + ByteArray(0) + } +} + +class Base64ArchiveEncoder : ArchiveEncoder { + override fun encode(content: ByteArray): String { + return if (content.size > 1) { + return try { + return Base64.encodeToString(content, Base64.CRLF) + } catch (e: Throwable) { + e.printStackTrace() + "ICAgIA==" + } + } else { + "ICAgIA==" + } + } + + // Decodes default B64 + override fun decodeDefault(string: String): ByteArray = Base64.decode(string, Base64.DEFAULT) + + override fun decode(content: ByteArray): ByteArray = + Base64.decode( + content, + Base64.CRLF, + ) +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/CachedArchiveLibrary.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/CachedArchiveLibrary.kt new file mode 100644 index 00000000..ca6b8f69 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/CachedArchiveLibrary.kt @@ -0,0 +1,88 @@ +package com.superwall.sdk.paywall.archive + +import com.superwall.sdk.models.paywall.WebArchiveManifest +import com.superwall.sdk.paywall.archive.models.DecompressedWebArchive +import com.superwall.sdk.storage.Storage +import com.superwall.sdk.storage.StoredWebArchive +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.update + +/** + * Manages WebArchives, downloading and saving them to file cache. + */ +class CachedArchiveLibrary( + private val storage: Storage, + private val manifestDownloader: ManifestDownloader, + private val streamArchiveCompressor: StreamArchiveCompressor, +) : WebArchiveLibrary { + // Queue of paywallIds that are currently being downloaded + private val archiveQueue = MutableStateFlow(listOf()) + + override suspend fun downloadManifest( + paywallId: String, + paywallUrl: String, + manifest: WebArchiveManifest?, + ) { + // Return if the paywall is already archived or waiting to be archived + if ( // checkIfArchived(paywallId) || + archiveQueue.value.contains(paywallId) + ) { + return + } + + archiveQueue.update { + it + paywallId + } + + val archive = + manifestDownloader.downloadArchiveForManifest( + paywallId, + manifest ?: WebArchiveManifest( + WebArchiveManifest.Usage.ALWAYS, + WebArchiveManifest.Document(paywallUrl, "text/html"), + emptyList(), + ), + ) + val storable = StoredWebArchive(paywallId) + + storage + .getFileStream( + storable = storable, + ).use { + streamArchiveCompressor.compressToStream(paywallUrl, archive, it) + } + archiveQueue.update { + it.minus(paywallId) + } + } + + // Check if the paywall is archived already + override fun checkIfArchived(paywallId: String): Boolean { + val archive = StoredWebArchive(paywallId) + return storage.readFile(archive) != null + } + + // Load the archive from cache, if it does not exist, throw an exception + override suspend fun loadArchive(paywallId: String): Result { + // If doesn't exist, await until it's downloaded + if (!checkIfArchived(paywallId)) { + awaitUntilQueueResolved(paywallId) + } + val storeable = StoredWebArchive(paywallId) + val fromCache = storage.readFileStream(storeable) + return if (fromCache != null) { + val decompressed = streamArchiveCompressor.decompressArchiveStream(fromCache) + Result.success(decompressed) + } else { + Result.failure(NoSuchElementException("Paywall $paywallId does not exist in cache")) + } + } + + // Checks and awaits if the paywall is in queue, otherwise returns immediately + override suspend fun awaitUntilQueueResolved(paywallId: String) { + archiveQueue.first { + !it.contains(paywallId) + } + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/ManifestDownloader.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/ManifestDownloader.kt new file mode 100644 index 00000000..b2e30eaa --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/ManifestDownloader.kt @@ -0,0 +1,222 @@ +package com.superwall.sdk.paywall.archive + +import androidx.core.net.toUri +import com.superwall.sdk.logger.LogLevel +import com.superwall.sdk.logger.LogScope +import com.superwall.sdk.logger.Logger +import com.superwall.sdk.misc.IOScope +import com.superwall.sdk.misc.map +import com.superwall.sdk.misc.onError +import com.superwall.sdk.models.paywall.WebArchiveManifest +import com.superwall.sdk.network.Network +import com.superwall.sdk.paywall.archive.models.ArchivePart +import com.superwall.sdk.paywall.archive.models.MimeType +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.asCoroutineDispatcher +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import java.net.URL +import java.util.concurrent.Executors + +/* + Downloads WebArchive parts from a WebArchiveManifest. + Careful, performs a lot of requests in parallel. +*/ +class ManifestDownloader( + private val coroutineScope: CoroutineScope, + private val network: Network, +) { + val dispatcher = + Executors.newFixedThreadPool(64).asCoroutineDispatcher() + + /* + Downloads the archive parts for a given manifest, + starting with the main document, then it's relative dependencies + and all other resources in parallel. + */ + suspend fun downloadArchiveForManifest( + id: String, + manifest: WebArchiveManifest, + ): List { + // Download the main document + val mainDocumentUrl = manifest.document.url + val mainDocument = + network + .fetchRemoteFile(mainDocumentUrl.toUri(), id) + .onError { + Logger.debug( + logLevel = LogLevel.debug, + scope = LogScope.webarchive, + "Failed to download main document: $mainDocumentUrl", + error = it, + info = mapOf("url" to mainDocumentUrl.toString()), + ) + throw it + }.getSuccess()!! + + val mainDocumentString = mainDocument.content.toString(Charsets.UTF_8) + val relativeUrls = discoverRelativeResources(mainDocumentString) + val host = URL(mainDocumentUrl) + val favicoUrl = + WebArchiveManifest.Resource( + "https://${host.host}/favicon.ico", + MimeType.FAVICON.toString(), + ) + val relativeParts = + relativeUrls.map { + WebArchiveManifest.Resource( + url = "https://${host.host}${if (it.key.startsWith("/")) it.key else "/${it.key}"}", + mimeType = it.value, + ) + } + val absoluteParts = + discoverAbsoluteResources(mainDocumentString).map { + WebArchiveManifest.Resource( + it.key, + it.value, + ) + } + + val documentPart = + ArchivePart.Document( + url = mainDocumentUrl.toString(), + content = mainDocument.content, + mimeType = "text/html", + ) + + val foundParts = (absoluteParts + relativeParts + manifest.resources + favicoUrl).toSet() + + val xope = IOScope(dispatcher) + // Combine all resources into a list of deferred jobs + val jobs = + (foundParts).distinctBy { it.url }.map { resource -> + // Creates download tasks + xope.async { + with(resource) { + network + .fetchRemoteFile(resource.url.toUri(), id) + .map { + ArchivePart.Resource( + url = url.toString(), + mimeType = mimeType, + content = it.content, + ) + }.onError { + Logger.debug( + logLevel = LogLevel.debug, + scope = LogScope.webarchive, + "Failed to download resource: $url", + error = it, + info = mapOf("url" to url.toString()), + ) + } + } + } + } + val relativeUrlsOnly = (relativeParts + favicoUrl).map { it.url } + val parts = + jobs + .chunked(16) + .flatMap { it.awaitAll() } + .filter { it.getSuccess() != null } + .map { it.getSuccess()!! } + .map { + if (relativeUrlsOnly.contains(it.url)) { + if (it.url.contains("favicon.ico")) { + "favicon.ico" + } + it.copy(url = it.url.removePrefix("https://${host.host}")) + } else { + it + } + } + + return parts + documentPart + } + + /* + Uses regex to match any absolute resources in the main document that need + to be downloaded for the core runtime. This matches all ="http://" and ="https://" resources + and returns a map of the absolute URL to the mime type judging by the extension + (with a special case for javascript files). + */ + fun discoverAbsoluteResources(mainDocument: String): Map = + Regex("(?:=\"|\":\"|\bsrc\\s*=\\s*\")https?://[^\"]+\"") + .findAll(mainDocument) + .map { + // Extract just the URL part by finding the https:// portion + val match = it.value + val urlStart = + match.indexOf("https://").takeIf { it != -1 } + ?: match.indexOf("http://") + match.substring(urlStart, match.length - 1) // Remove trailing quote + }.filter { + it.removePrefix("https://").contains("/") && !it.contains("w3.org") + }.map { + val type = + when (val extension = it.takeLastWhile { it != '.' }) { + "js" -> "javascript" + else -> extension + } + val mimeType = "text/$type" + it to mimeType + }.toMap() + + /* + Uses regex to match any relative resources in the main document that need + to be downloaded for the core runtime. This matches all ="/runtime/" resources + and returns a map of the relative path to the mime type judging by the extension + (with a special case for javascript files). + */ + fun discoverRelativeResources(mainDocument: String): Map { + val allMatches = mutableListOf() + + // Pattern 1: Attribute assignments with double quotes: attr="/runtime/..." or attr="../..." + val attrDoubleQuotePattern = + Regex("""(?:=|href\s*=\s*)"(/runtime/[^"]+|\.\./[^"]+|build/[^"]+)"""") + allMatches.addAll( + attrDoubleQuotePattern + .findAll(mainDocument) + .map { it.groupValues[1] } + .toList(), + ) + + // Pattern 2: Attribute assignments with single quotes: attr='/runtime/...' or attr='../..' + val attrSingleQuotePattern = + Regex("""(?:=|href\s*=\s*)'(/runtime/[^']+|\.\./[^']+|build/[^']+)'""") + allMatches.addAll( + attrSingleQuotePattern + .findAll(mainDocument) + .map { it.groupValues[1] } + .toList(), + ) + + // Pattern 3: JSON properties with double quotes: "key":"/runtime/..." or "key":"../..." + val jsonPattern = Regex(""""[^"]*":\s*"(/runtime/[^"]+|\.\./[^"]+|build/[^"]+)"""") + allMatches.addAll( + jsonPattern + .findAll(mainDocument) + .map { it.groupValues[1] } + .toList(), + ) + + return allMatches + .map { url -> + val extension = url.substringAfterLast('.', "") + val type = + when (extension) { + "js" -> "javascript" + "" -> "plain" // fallback for URLs without extension + else -> extension + } + val mimeType = "text/$type" + val url = + if (url.startsWith("../")) { + url.drop(3) + } else { + url + } + url to mimeType + }.toMap() + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/StreamArchiveCompressor.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/StreamArchiveCompressor.kt new file mode 100644 index 00000000..998d3249 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/StreamArchiveCompressor.kt @@ -0,0 +1,370 @@ +package com.superwall.sdk.paywall.archive + +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_ID +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_LOCATION +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_TRANSFER_ENCODING +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_TYPE +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.ContentId +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.TransferEncoding +import com.superwall.sdk.paywall.archive.models.ArchivePart +import com.superwall.sdk.paywall.archive.models.DecompressedWebArchive +import com.superwall.sdk.storage.toMD5 +import java.io.BufferedReader +import java.io.InputStream +import java.io.InputStreamReader +import java.io.OutputStream +import java.nio.charset.StandardCharsets +import java.security.MessageDigest +import kotlin.text.drop +import kotlin.text.trim + +class StreamArchiveCompressor( + val encoder: ArchiveEncoder, +) { + val se = StreamingBase64ArchiveEncoder() + + private val UTF8 = StandardCharsets.UTF_8 + private val CRLF = "\r\n".toByteArray(UTF8) + private val DOUBLE_CRLF = "\r\n\r\n".toByteArray(UTF8) + private val LF = "\n".toByteArray(UTF8) + private val DASH_DASH = "--".toByteArray(UTF8) + private val BOUNDARY_PREFIX = "--" + private val md5 = + MessageDigest + .getInstance("MD5") + + // ---------- helpers ---------- + private fun md5Hex(bytes: ByteArray): String = + md5 + .digest(bytes) + .joinToString("") { "%02x".format(it) } + + /** build a unique multipart boundary from URLs only (no allocations apart from MD5) */ + private fun buildBoundary(parts: List): String { + val md = md5 + parts.forEach { md.update(it.url.toByteArray(UTF8)) } + return md5Hex(md.digest()) + } + + /* ==================================================== + * PUBLIC API + * ==================================================== */ + + /** stream the complete archive to **any** `OutputStream` – no buffering */ + fun compressToStream( + url: String, + parts: List, + out: OutputStream, + ) { + val boundary = buildBoundary(parts) + val boundaryBytes = (BOUNDARY_PREFIX + boundary).toByteArray(UTF8) + + writeHeaders(out, url, boundary) + + // 1️⃣ document (if any) + parts.firstOrNull { it is ArchivePart.Document }?.let { part -> + out.write(CRLF) + out.write(boundaryBytes) + out.write(CRLF) + writeMimeHeaders(out, part) + se.streamEncode(part.content, out) + out.write(CRLF) + } + + // 2️⃣ all remaining resources + for (part in parts) { + if (part !is ArchivePart.Document) { + out.write(CRLF) + out.write(boundaryBytes) + out.write(CRLF) + writeMimeHeaders(out, part) + se.streamEncode(part.content, out) + out.write(CRLF) + } + } + + // closing boundary + out.write(CRLF) + out.write(boundaryBytes) + out.write(DASH_DASH) + out.write(CRLF) + out.flush() + } + + fun decompressArchiveStream(input: InputStream): DecompressedWebArchive { + val reader = BufferedReader(InputStreamReader(input, Charsets.UTF_8)) + val headers = mutableMapOf() + + // --- Read top-level headers --- + while (true) { + val line = reader.readLine() ?: break + if (line.isBlank()) break + val colonIndex = line.indexOf(":") + if (colonIndex > 0) { + val key = line.substring(0, colonIndex).trim() + val value = line.substring(colonIndex + 1).trim().trimEnd(';', ' ') + headers[key] = value + } + } + + val rawBoundary = + headers["Content-Type"] + ?.substringAfter("boundary=\"") + ?.substringBefore("\"") + ?: return DecompressedWebArchive(headers, emptyList()) + val boundaryLine = "--$rawBoundary" + val boundaryEndLine = "--$rawBoundary--" + + val parts = mutableListOf() + var line = reader.readLine() + + while (line != null) { + // Look for next boundary + while (line != null && line != boundaryLine && line != boundaryEndLine) { + line = reader.readLine() + } + if (line == boundaryEndLine || line == null) break + + // --- Parse part headers --- + val partHeaders = mutableMapOf() + while (true) { + line = reader.readLine() ?: break + if (line.isBlank()) break + val colon = line.indexOf(":") + if (colon > 0) { + val key = line.substring(0, colon).trim() + val value = line.substring(colon + 1).trim() + partHeaders[key] = value + } + } + + val url = partHeaders["Content-Location"] ?: continue + val mimeType = partHeaders["Content-Type"] ?: "application/octet-stream" + val cid = partHeaders["Content-Id"] ?: "" + val encoding = partHeaders["Content-Transfer-Encoding"]?.lowercase() ?: "" + + // --- Collect content until next boundary --- + val contentBuffer = StringBuilder() + while (true) { + val nextLine = reader.readLine() ?: break + if (nextLine == boundaryLine || nextLine == boundaryEndLine) { + line = nextLine + break + } + contentBuffer.appendLine(nextLine) + } + + val raw = contentBuffer.toString() + val content: ByteArray = + try { + encoder.decodeDefault(raw.trim()) + } catch (e: Throwable) { + raw.toByteArray(Charsets.UTF_8) // might be binary-ish but works for text/html + } + + val part = + if (cid.contains(ContentId.MAIN_DOCUMENT.key)) { + ArchivePart.Document(url, mimeType, content) + } else { + ArchivePart.Resource(url, mimeType, content) + } + parts.add(part) + } + + return DecompressedWebArchive(headers, parts) + } + + /* ==================================================== + * INTERNAL HELPERS + * ==================================================== */ + + // ---------- write-side helpers ---------- + private fun writeHeaders( + out: OutputStream, + url: String, + boundary: String, + ) { + out.write("From: ".toByteArray(UTF8)) + out.write(CRLF) + out.write("MIME-Version: 1.0".toByteArray(UTF8)) + out.write(CRLF) + out.write("Subject: Superwall Web Archive".toByteArray(UTF8)) + out.write(CRLF) + out.write("Snapshot-Content-Location: ".toByteArray(UTF8)) + out.write(url.toByteArray(UTF8)) + out.write(CRLF) + out.write( + "Content-Type: multipart/related; type=\"text/html\"; boundary=\"".toByteArray( + UTF8, + ), + ) + out.write(boundary.toByteArray(UTF8)) + out.write("\"".toByteArray(UTF8)) + out.write(CRLF) + } + + private fun writeMimeHeaders( + out: OutputStream, + part: ArchivePart, + ) { + out.write("${CONTENT_TYPE.key}: ${part.mimeType}".toByteArray(UTF8)) + out.write(CRLF) + val enc = + if (part.mimeType.contains("text")) { + TransferEncoding.QUOTED_PRINTABLE.key + } else { + TransferEncoding.BASE64.key + } + out.write("${CONTENT_TRANSFER_ENCODING.key}: $enc".toByteArray(UTF8)) + out.write(CRLF) + out.write("${CONTENT_LOCATION.key}: ${part.url}".toByteArray(UTF8)) + out.write(CRLF) + out.write("${CONTENT_ID.key}: ${part.contentId}".toByteArray(UTF8)) + out.write(DOUBLE_CRLF) + } + + // ---------- header parsing ---------- + private fun parseHeaders( + bytes: ByteArray, + from: Int, + to: Int, + ): Map { + val map = mutableMapOf() + val sep = ": ".toByteArray(UTF8) + + var i = from + while (i < to) { + val lineEnd = findSequence(bytes, LF, i).let { if (it < 0 || it > to) to else it } + val slice = bytes.sliceArray(i until lineEnd) + val colon = findSequence(slice, sep, 0) + if (colon >= 0) { + val key = String(slice, 0, colon, UTF8).trimEnd('\r') + val value = + String( + slice, + colon + sep.size, + slice.size - colon - sep.size, + UTF8, + ).trimEnd('\r', ';', ' ') + map[key] = value + } + i = lineEnd + 1 + } + return map + } + + // ---------- part extraction ---------- + private fun findSequence( + hay: ByteArray, + needle: ByteArray, + start: Int, + fail: IntArray = IntArray(0), + ): Int { + if (needle.isEmpty() || start >= hay.size) return -1 + + // simple scan if no failure table + if (fail.isEmpty()) { + outer@ for (i in start..hay.size - needle.size) { + for (j in needle.indices) if (hay[i + j] != needle[j]) continue@outer + return i + } + return -1 + } + + var j = 0 + for (i in start until hay.size) { + while (j > 0 && hay[i] != needle[j]) j = fail[j - 1] + if (hay[i] == needle[j]) j++ + if (j == needle.size) return i - j + 1 + } + return -1 + } + + // Creates multipart from a list of ArchiveParts and a base URL + fun List.createMultipartHTML( + url: String, + encoder: ArchiveEncoder, + ): String { + val archiveHash = joinToString(separator = "") { it.url }.toMD5() + + // Generated boundary - a separator for different parts in a MHTML file + val boundary = "----MultipartBoundary--$archiveHash----" + // Header for the MHTML file, mostly unimportant except + // for the boundary and the content location + val header = + listOf( + "From" to "", + "MIME-Version" to "1.0", + "Subject" to "Superwall Web Archive", + "Snapshot-Content-Location" to url, + "Content-Type" to "multipart/related;type=\"text/html\";boundary=\"$boundary\"", + ).joinToString("\n") { "${it.first}: ${it.second}" } + + // Ensure document is first in the list + val document = find { it is ArchivePart.Document } + val resources = filter { it !is ArchivePart.Document } + // Join document and resources as parts separated by boundary + val combinedParts = + (listOf(document) + resources) + .filterNotNull() + .map { it?.toMimePart(encoder) } + // Return file as a combination of header and parts separated by boundary + val mhtml = + (listOf(header).plus(combinedParts)).joinToString( + "\n\n--$boundary\n", + postfix = "\n--$boundary", + ) + + return mhtml + } + + // Extracts header parts of a mhtml and parses it into a map + fun String.extractHeader(): Pair, String> { + val trimmed = lines().drop(lines().takeWhile { it.isBlank() }.size) + val header = + trimmed + .takeWhile { it.isNotEmpty() } + + val headerParts = + header + .flatMap { + it + .split(": ", ";", "=") + .chunked(2) + .map { it.first().trim() to it.last() } + }.toMap() + + val remaining = trimmed.drop(header.size).joinToString("\n") + return headerParts to remaining + } + + fun ArchivePart.toMimePart(encoder: ArchiveEncoder): String { + val content = + when (this) { + is ArchivePart.Document -> + encoder.encode(content) + + is ArchivePart.Resource -> { + if (mimeType.contains("text")) { + encoder.encode(content) + } else { + encoder.encode(content) + } + } + } + + val header = + listOf( + CONTENT_TYPE to mimeType, + CONTENT_TRANSFER_ENCODING to + if (mimeType.contains("text")) { + TransferEncoding.QUOTED_PRINTABLE.key + } else { + TransferEncoding.BASE64.key + }, + CONTENT_LOCATION to url, + CONTENT_ID to contentId, + ).joinToString("") { "${it.first.key}: ${it.second}\n" } + return "$header\n\n$content" + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/StringArchiveCompressor.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/StringArchiveCompressor.kt new file mode 100644 index 00000000..d63aa02a --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/StringArchiveCompressor.kt @@ -0,0 +1,207 @@ +package com.superwall.sdk.paywall.archive + +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_ID +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_LOCATION +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_TRANSFER_ENCODING +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.CONTENT_TYPE +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.ContentId +import com.superwall.sdk.paywall.archive.models.ArchiveKeys.TransferEncoding +import com.superwall.sdk.paywall.archive.models.ArchivePart +import com.superwall.sdk.paywall.archive.models.DecompressedWebArchive +import com.superwall.sdk.storage.toMD5 +import java.nio.charset.StandardCharsets +import java.security.MessageDigest + +typealias CompressedWebArchive = String + +interface ArchiveCompressor { + fun compressToArchive( + url: String, + parts: List, + ): Output + + fun decompressFromArchive(archiveType: ArchiveType): Output +} + +/* + Creates a multipart HTML file from a list of ArchiveParts and vice-versa +*/ +class StringArchiveCompressor( + val encoder: ArchiveEncoder, +) { + val se = StreamingBase64ArchiveEncoder() + + fun compressToArchive( + url: String, + parts: List, + ): CompressedWebArchive = parts.createMultipartHTML(url, encoder) + + fun decompressArchive(archive: CompressedWebArchive): DecompressedWebArchive { + // Extract the header and the remaining content + val (headerParts, remaining) = archive.extractHeader() + + // Find the boundary delimiter + val boundary = headerParts["boundary"]?.drop(1)?.dropLast(1) + + // Split using the delimiter to get embedded documents + // Note: the first two dashes are used to indicate the start of the boundary + val parts = remaining.split("--$boundary") + + val archiveParts = + parts + // Filter out empty parts + .filter { !it.isBlank() } + .map { + // Extract map of content headers + val (headerParts, remaining) = it.extractHeader() + // Since some content can be text that is b64 encoded but not declared such + // we check if the content is base64 encoded by trying to decode it + val content = + try { + encoder.decodeDefault(remaining.trimEmptyLines().trim()) + } catch (e: Throwable) { + e.printStackTrace() + remaining.trimEmptyLines().toByteArray(Charsets.UTF_8) + } + headerParts to content + }.map { + val headers = it.first + val url = headers[CONTENT_LOCATION.key]?.trim() ?: "" + val mimeType = headers[CONTENT_TYPE.key]?.trim() ?: "" + val contentId = headers[CONTENT_ID.key]?.trim() ?: "" + if (contentId.contains(ContentId.MAIN_DOCUMENT.key)) { + ArchivePart.Document( + url = url, + mimeType = mimeType, + content = it.second, + ) + } else { + ArchivePart.Resource( + url = url, + mimeType = mimeType, + content = it.second, + ) + } + } + return DecompressedWebArchive(headerParts, archiveParts) + } + + private val UTF8 = StandardCharsets.UTF_8 + private val CRLF = "\r\n".toByteArray(UTF8) + private val DOUBLE_CRLF = "\r\n\r\n".toByteArray(UTF8) + private val LF = "\n".toByteArray(UTF8) + private val DASH_DASH = "--".toByteArray(UTF8) + private val BOUNDARY_PREFIX = "--" + + // ---------- helpers ---------- + private fun md5Hex(bytes: ByteArray): String = + MessageDigest + .getInstance("MD5") + .digest(bytes) + .joinToString("") { "%02x".format(it) } + + /** build a unique multipart boundary from URLs only (no allocations apart from MD5) */ + private fun buildBoundary(parts: List): String { + val md = MessageDigest.getInstance("MD5") + parts.forEach { md.update(it.url.toByteArray(UTF8)) } + return md5Hex(md.digest()) + } + + /* ==================================================== + * PUBLIC API + * ==================================================== */ +} + +private fun String.trimEmptyLines() = + lines() + .dropWhile { it.isEmpty() } + .joinToString("\n") + .trim() + +// Creates multipart from a list of ArchiveParts and a base URL +fun List.createMultipartHTML( + url: String, + encoder: ArchiveEncoder, +): String { + val archiveHash = joinToString(separator = "") { it.url }.toMD5() + + // Generated boundary - a separator for different parts in a MHTML file + val boundary = "----MultipartBoundary--$archiveHash----" + // Header for the MHTML file, mostly unimportant except + // for the boundary and the content location + val header = + listOf( + "From" to "", + "MIME-Version" to "1.0", + "Subject" to "Superwall Web Archive", + "Snapshot-Content-Location" to url, + "Content-Type" to "multipart/related;type=\"text/html\";boundary=\"$boundary\"", + ).joinToString("\n") { "${it.first}: ${it.second}" } + + // Ensure document is first in the list + val document = find { it is ArchivePart.Document } + val resources = filter { it !is ArchivePart.Document } + // Join document and resources as parts separated by boundary + val combinedParts = + (listOf(document) + resources) + .filterNotNull() + .map { it?.toMimePart(encoder) } + // Return file as a combination of header and parts separated by boundary + val mhtml = + (listOf(header).plus(combinedParts)).joinToString( + "\n\n--$boundary\n", + postfix = "\n--$boundary", + ) + + return mhtml +} + +// Extracts header parts of a mhtml and parses it into a map +fun String.extractHeader(): Pair, String> { + val trimmed = lines().drop(lines().takeWhile { it.isBlank() }.size) + val header = + trimmed + .takeWhile { it.isNotEmpty() } + + val headerParts = + header + .flatMap { + it + .split(": ", ";", "=") + .chunked(2) + .map { it.first().trim() to it.last() } + }.toMap() + + val remaining = trimmed.drop(header.size).joinToString("\n") + return headerParts to remaining +} + +fun ArchivePart.toMimePart(encoder: ArchiveEncoder): String { + val content = + when (this) { + is ArchivePart.Document -> + encoder.encode(content) + + is ArchivePart.Resource -> { + if (mimeType.contains("text")) { + encoder.encode(content) + } else { + encoder.encode(content) + } + } + } + + val header = + listOf( + CONTENT_TYPE to mimeType, + CONTENT_TRANSFER_ENCODING to + if (mimeType.contains("text")) { + TransferEncoding.QUOTED_PRINTABLE.key + } else { + TransferEncoding.BASE64.key + }, + CONTENT_LOCATION to url, + CONTENT_ID to contentId, + ).joinToString("") { "${it.first.key}: ${it.second}\n" } + return "$header\n\n$content" +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/WebArchiveLibrary.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/WebArchiveLibrary.kt new file mode 100644 index 00000000..2eef9ea2 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/WebArchiveLibrary.kt @@ -0,0 +1,18 @@ +package com.superwall.sdk.paywall.archive + +import com.superwall.sdk.models.paywall.WebArchiveManifest +import com.superwall.sdk.paywall.archive.models.DecompressedWebArchive + +interface WebArchiveLibrary { + suspend fun downloadManifest( + paywallId: String, + paywallUrl: String, + manifest: WebArchiveManifest?, + ) + + fun checkIfArchived(paywallId: String): Boolean + + suspend fun loadArchive(paywallId: String): Result + + suspend fun awaitUntilQueueResolved(identifier: String) +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/ArchiveKeys.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/ArchiveKeys.kt new file mode 100644 index 00000000..f9dcacf7 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/ArchiveKeys.kt @@ -0,0 +1,32 @@ +package com.superwall.sdk.paywall.archive.models + +enum class ArchiveKeys( + val key: String, +) { + CONTENT_TYPE("Content-Type"), + CONTENT_ID("Content-Id"), + CONTENT_LOCATION("Content-Location"), + CONTENT_TRANSFER_ENCODING("Content-Transfer-Encoding"), + ; + + override fun toString() = key + + enum class TransferEncoding( + val key: String, + ) { + QUOTED_PRINTABLE("quoted-printable"), + BASE64("base64"), + ; + + override fun toString() = key + } + + enum class ContentId( + val key: String, + ) { + MAIN_DOCUMENT(""), + ; + + override fun toString() = key + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/ArchivePart.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/ArchivePart.kt new file mode 100644 index 00000000..5b4fd7ae --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/ArchivePart.kt @@ -0,0 +1,33 @@ +package com.superwall.sdk.paywall.archive.models + +import com.superwall.sdk.storage.toMD5 + +sealed interface ArchivePart { + val url: String + val mimeType: String + val content: ByteArray + val contentId: String + + fun getSizeInMB(): String { + val sizeInMB = content.size.toDouble() / (1024 * 1024) + return String.format("%.2f MB", sizeInMB) + } + + fun getSizeInMbDouble(): Double = content.size.toDouble() / (1024 * 1024) + + data class Resource( + override val url: String, + override val mimeType: String, + override val content: ByteArray, + ) : ArchivePart { + override val contentId: String = "${url.toMD5()}" + } + + data class Document( + override val url: String, + override val mimeType: String, + override val content: ByteArray, + ) : ArchivePart { + override val contentId: String = ArchiveKeys.ContentId.MAIN_DOCUMENT.key + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/DecompressedWebArchive.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/DecompressedWebArchive.kt new file mode 100644 index 00000000..4a33d15a --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/DecompressedWebArchive.kt @@ -0,0 +1,6 @@ +package com.superwall.sdk.paywall.archive.models + +data class DecompressedWebArchive( + val header: Map, + val content: List, +) diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/MimeType.kt b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/MimeType.kt new file mode 100644 index 00000000..3b566687 --- /dev/null +++ b/superwall/src/main/java/com/superwall/sdk/paywall/archive/models/MimeType.kt @@ -0,0 +1,26 @@ +package com.superwall.sdk.paywall.archive.models + +data class MimeType( + val type: String, + val subtype: String, +) { + companion object { + fun fromString(mimeType: String): MimeType { + val parts = mimeType.split("/") + return MimeType(parts[0], parts[1]) + } + + val HTML = MimeType("text", "html") + val FAVICON = MimeType("image", "x-icon") + } + + override fun toString(): String = "$type/$subtype" + + override fun equals(other: Any?): Boolean { + when (other) { + is MimeType -> return type == other.type && subtype == other.subtype + is String -> return toString() == other + else -> return super.equals(other) + } + } +} diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/view/PaywallView.kt b/superwall/src/main/java/com/superwall/sdk/paywall/view/PaywallView.kt index fdd6f0d1..dd616224 100644 --- a/superwall/src/main/java/com/superwall/sdk/paywall/view/PaywallView.kt +++ b/superwall/src/main/java/com/superwall/sdk/paywall/view/PaywallView.kt @@ -35,6 +35,7 @@ import com.superwall.sdk.models.paywall.Paywall import com.superwall.sdk.models.paywall.PaywallPresentationStyle import com.superwall.sdk.models.triggers.TriggerRuleOccurrence import com.superwall.sdk.network.device.DeviceHelper +import com.superwall.sdk.paywall.archive.models.DecompressedWebArchive import com.superwall.sdk.paywall.manager.PaywallCacheLogic import com.superwall.sdk.paywall.manager.PaywallViewCache import com.superwall.sdk.paywall.presentation.PaywallCloseReason @@ -765,16 +766,41 @@ class PaywallView( } else { webView.settings.cacheMode = WebSettings.LOAD_DEFAULT } - if (useMultipleUrls) { - webView.loadPaywallWithFallbackUrl(paywall) - } else { - webView.loadUrl(url.value) + + when { + factory.webArchive().checkIfArchived(paywall.identifier) -> { + loadFromArchive(factory.webArchive().loadArchive(paywall.identifier)) + } + + useMultipleUrls -> { + webView.loadPaywallWithFallbackUrl(paywall) + } + + else -> { + webView.loadUrl(url.value) + } } } loadingState = PaywallLoadingState.LoadingURL() } } + fun loadFromArchive(archive: Result) { + archive.fold(onSuccess = { + mainScope.launch { + webView.loadFromArchive(it) + } + }, onFailure = { + webView.loadUrl(paywall.url.value) + Logger.debug( + logLevel = LogLevel.error, + scope = LogScope.paywallView, + message = "Failed to load archive: ${it.localizedMessage}", + error = it, + ) + }) + } + private fun recreateWebview() { removeView(webView) _webView = diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/DefaultWebviewClient.kt b/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/DefaultWebviewClient.kt index a2a61116..994e8eb0 100644 --- a/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/DefaultWebviewClient.kt +++ b/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/DefaultWebviewClient.kt @@ -81,6 +81,9 @@ internal open class DefaultWebviewClient( request: WebResourceRequest?, error: WebResourceError, ) { + if (request?.url?.toString()?.contains("favicon.ico") == true) { + return + } ioScope.launch { if (request?.url?.toString()?.contains("runtime") == true) { val (code, desc) = diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/SWWebView.kt b/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/SWWebView.kt index 1b2ff0ef..4240341c 100644 --- a/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/SWWebView.kt +++ b/superwall/src/main/java/com/superwall/sdk/paywall/view/webview/SWWebView.kt @@ -28,6 +28,8 @@ import com.superwall.sdk.logger.Logger import com.superwall.sdk.misc.IOScope import com.superwall.sdk.misc.MainScope import com.superwall.sdk.models.paywall.Paywall +import com.superwall.sdk.paywall.archive.ArchiveWebClient +import com.superwall.sdk.paywall.archive.models.DecompressedWebArchive import com.superwall.sdk.paywall.presentation.PaywallInfo import com.superwall.sdk.paywall.view.delegate.PaywallLoadingState import com.superwall.sdk.paywall.view.webview.messaging.PaywallMessageHandler @@ -92,8 +94,10 @@ class SWWebView( webSettings.setSupportZoom(false) webSettings.builtInZoomControls = false webSettings.displayZoomControls = false - webSettings.allowFileAccess = false - webSettings.allowContentAccess = false + webSettings.allowFileAccess = true + webSettings.allowFileAccessFromFileURLs = true + webSettings.allowUniversalAccessFromFileURLs = true + webSettings.allowContentAccess = true webSettings.textZoom = 100 // Enable inline media playback, requires API level 17 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { @@ -104,6 +108,23 @@ class SWWebView( this.webChromeClient = ChromeClient } + internal fun loadFromArchive(archiveFile: DecompressedWebArchive) { + val client = + ArchiveWebClient(archiveFile, onError = { + it.let { + throw IllegalStateException(it.description.toString() ?: "") + } + }) + this.webViewClient = client + lastLoadedUrl = url + prepareWebview() + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + lastWebViewClient = client + } + listenToWebviewClientEvents(client) + super.loadUrl(transformUri(ArchiveWebClient.OVERRIDE_PATH)) + } + internal fun loadPaywallWithFallbackUrl(paywall: Paywall) { prepareWebview() val client = diff --git a/superwall/src/main/java/com/superwall/sdk/storage/Cache.kt b/superwall/src/main/java/com/superwall/sdk/storage/Cache.kt index 0033b99f..1fd24aec 100644 --- a/superwall/src/main/java/com/superwall/sdk/storage/Cache.kt +++ b/superwall/src/main/java/com/superwall/sdk/storage/Cache.kt @@ -11,6 +11,8 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.serialization.json.Json +import java.io.FileInputStream +import java.io.FileOutputStream import kotlin.coroutines.CoroutineContext class Cache( @@ -103,6 +105,37 @@ class Cache( } } + fun readFile(storable: Storable): String? { + val file = storable.file(context = context) + return if (file.exists()) { + file.readText(Charsets.UTF_8) + } else { + null + } + } + + fun writeFile( + storable: Storable, + contents: String, + ): Boolean? { + val file = storable.file(context = context) + return try { + file.writeText(contents, Charsets.UTF_8) + true + } catch (e: Throwable) { + Logger.debug( + logLevel = LogLevel.info, + scope = LogScope.cache, + "Cannot write file ${file.path}", + ) + false + } + } + + fun getFileStream(storable: Storable): FileOutputStream = storable.file(context).outputStream() + + fun readFileStream(storable: Storable): FileInputStream = storable.file(context).inputStream() + //region Clean fun clean() { diff --git a/superwall/src/main/java/com/superwall/sdk/storage/CacheKeys.kt b/superwall/src/main/java/com/superwall/sdk/storage/CacheKeys.kt index 1b15d219..deddbaa5 100644 --- a/superwall/src/main/java/com/superwall/sdk/storage/CacheKeys.kt +++ b/superwall/src/main/java/com/superwall/sdk/storage/CacheKeys.kt @@ -310,6 +310,13 @@ internal object LatestRedemptionResponse : Storable { get() = WebRedemptionResponse.serializer() } +internal data class StoredWebArchive( + val payWallId: String, +) : Storable { + override val key: String = "store.webarchive.$payWallId" + override val directory: SearchPathDirectory = SearchPathDirectory.CACHE + override val serializer: KSerializer = String.serializer() +} //endregion // region Serializers diff --git a/superwall/src/main/java/com/superwall/sdk/storage/LocalStorage.kt b/superwall/src/main/java/com/superwall/sdk/storage/LocalStorage.kt index 0ff54715..a7d13444 100644 --- a/superwall/src/main/java/com/superwall/sdk/storage/LocalStorage.kt +++ b/superwall/src/main/java/com/superwall/sdk/storage/LocalStorage.kt @@ -18,6 +18,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json +import java.io.FileInputStream import java.util.Date import kotlin.coroutines.CoroutineContext @@ -222,5 +223,18 @@ open class LocalStorage( cache.write(storable, data = data) } + override fun writeFile( + storable: Storable, + data: String, + ) { + cache.writeFile(storable, data) + } + + override fun getFileStream(storable: Storable) = cache.getFileStream(storable) + + override fun readFile(storable: Storable): String? = cache.readFile(storable) + + override fun readFileStream(storable: Storable): FileInputStream = cache.readFileStream(storable) + //endregion } diff --git a/superwall/src/main/java/com/superwall/sdk/storage/Storage.kt b/superwall/src/main/java/com/superwall/sdk/storage/Storage.kt index cc3c8d42..6b954800 100644 --- a/superwall/src/main/java/com/superwall/sdk/storage/Storage.kt +++ b/superwall/src/main/java/com/superwall/sdk/storage/Storage.kt @@ -1,5 +1,8 @@ package com.superwall.sdk.storage +import java.io.FileInputStream +import java.io.FileOutputStream + interface Storage { fun read(storable: Storable): T? @@ -8,8 +11,19 @@ interface Storage { data: T, ) + fun writeFile( + storable: Storable, + data: String, + ) + + fun getFileStream(storable: Storable): FileOutputStream + + fun readFile(storable: Storable): String? + fun delete(storable: Storable) { } + fun readFileStream(storable: Storable): FileInputStream = throw NotImplementedError("") + fun clean() } diff --git a/superwall/src/main/java/com/superwall/sdk/store/Entitlements.kt b/superwall/src/main/java/com/superwall/sdk/store/Entitlements.kt index af1126a6..00459743 100644 --- a/superwall/src/main/java/com/superwall/sdk/store/Entitlements.kt +++ b/superwall/src/main/java/com/superwall/sdk/store/Entitlements.kt @@ -112,7 +112,9 @@ class Entitlements( } is SubscriptionStatus.Inactive -> { + val withoutActive = backingActive.subtract(_activeDeviceEntitlements) _activeDeviceEntitlements.clear() + backingActive = withoutActive _inactive.clear() _status.value = value } diff --git a/superwall/src/main/java/com/superwall/sdk/utilities/ErrorTracking.kt b/superwall/src/main/java/com/superwall/sdk/utilities/ErrorTracking.kt index 30a74709..687c40ce 100644 --- a/superwall/src/main/java/com/superwall/sdk/utilities/ErrorTracking.kt +++ b/superwall/src/main/java/com/superwall/sdk/utilities/ErrorTracking.kt @@ -123,6 +123,7 @@ internal fun Superwall.trackError(e: Throwable) { try { dependencyContainer.errorTracker.trackError(e) } catch (e: Exception) { + e.printStackTrace() Logger.debug( com.superwall.sdk.logger.LogLevel.error, com.superwall.sdk.logger.LogScope.all, @@ -135,6 +136,7 @@ internal inline fun withErrorTracking(block: () -> T): Either try { Either.Success(block()) } catch (e: Throwable) { + e.printStackTrace() if (e.shouldLog()) { if (Superwall.initialized) { Superwall.instance.trackError(e) diff --git a/superwall/src/test/java/com/superwall/sdk/paywall/archive/CompressedWebArchiveTest.kt b/superwall/src/test/java/com/superwall/sdk/paywall/archive/CompressedWebArchiveTest.kt new file mode 100644 index 00000000..625b702a --- /dev/null +++ b/superwall/src/test/java/com/superwall/sdk/paywall/archive/CompressedWebArchiveTest.kt @@ -0,0 +1,408 @@ +package com.superwall.sdk.paywall.archive + +import com.superwall.sdk.Given +import com.superwall.sdk.Then +import com.superwall.sdk.When +import com.superwall.sdk.paywall.archive.models.ArchivePart +import io.mockk.every +import io.mockk.mockk +import org.junit.Before +import org.junit.Test + +class CompressedWebArchiveTest { + private lateinit var encoder: ArchiveEncoder + private lateinit var compressor: StringArchiveCompressor + + @Before + fun setup() { + encoder = mockk() + compressor = StringArchiveCompressor(encoder) + } + + @Test + fun test_compress_to_archive_valid() { + Given("a document and resources") { + val documentContent = "Hello".toByteArray() + val resourceContent = "body { color: red; }".toByteArray() + val document = + ArchivePart.Document( + url = "https://example.com/index.html", + mimeType = "text/html", + content = documentContent, + ) + val resource = + ArchivePart.Resource( + url = "https://example.com/style.css", + mimeType = "text/css", + content = resourceContent, + ) + every { encoder.encode(documentContent) } returns "ENCODED_HTML" + every { encoder.encode(resourceContent) } returns "ENCODED_CSS" + + val parts = listOf(document, resource) + val url = "https://example.com/index.html" + + When("compressing") { + val archive = compressor.compressToArchive(url, parts) + + Then("output is valid multipart HTML") { + // Check boundary + val boundaryRegex = Regex("----MultipartBoundary--[a-f0-9]+----") + assert(boundaryRegex.containsMatchIn(archive)) + // Check headers + assert(archive.contains("MIME-Version: 1.0")) + assert(archive.contains("Content-Type: multipart/related")) + // Check encoded content + assert(archive.contains("ENCODED_HTML")) + assert(archive.contains("ENCODED_CSS")) + // Document should come before resource + val docIndex = archive.indexOf("ENCODED_HTML") + val resIndex = archive.indexOf("ENCODED_CSS") + assert(docIndex in 0 until resIndex) + } + } + } + } + + @Test + fun test_compress_to_archive_empty() { + Given("an empty list") { + val parts = emptyList() + val url = "https://example.com/index.html" + + When("compressing") { + val archive = compressor.compressToArchive(url, parts) + + Then("output is a valid (empty) archive") { + // Check boundary + val boundaryRegex = Regex("----MultipartBoundary--[a-f0-9]+----") + assert(boundaryRegex.containsMatchIn(archive)) + // Check headers + assert(archive.contains("MIME-Version: 1.0")) + assert(archive.contains("Content-Type: multipart/related")) + // Should not contain any encoded content + assert(!archive.contains("ENCODED_HTML")) + assert(!archive.contains("ENCODED_CSS")) + } + } + } + } + + @Test + fun test_decompress_archive_valid() { + Given("a valid archive (doc + resources)") { + val documentContent = "Hello".toByteArray() + val resourceContent = "body { color: red; }".toByteArray() + val document = + ArchivePart.Document( + url = "https://example.com/index.html", + mimeType = "text/html", + content = documentContent, + ) + val resource = + ArchivePart.Resource( + url = "https://example.com/style.css", + mimeType = "text/css", + content = resourceContent, + ) + every { encoder.encode(documentContent) } returns "ENCODED_HTML" + every { encoder.encode(resourceContent) } returns "ENCODED_CSS" + every { encoder.decodeDefault("ENCODED_HTML") } returns documentContent + every { encoder.decodeDefault("ENCODED_CSS") } returns resourceContent + + val parts = listOf(document, resource) + val url = "https://example.com/index.html" + val archive = compressor.compressToArchive(url, parts) + + When("decompressing") { + val decompressed = compressor.decompressArchive(archive) + + Then("output matches original parts") { + assert(decompressed.content.size == 2) + val doc = decompressed.content.find { it is ArchivePart.Document } as ArchivePart.Document + val res = decompressed.content.find { it is ArchivePart.Resource } as ArchivePart.Resource + assert(doc != null) + assert(res != null) + assert(doc.url == document.url) + assert(doc.mimeType == document.mimeType) + assert(doc.content.contentEquals(document.content)) + assert(res.url == resource.url) + assert(res.mimeType == resource.mimeType) + assert(res.content.contentEquals(resource.content)) + } + } + } + } + + @Test + fun test_decompress_archive_only_document() { + Given("an archive with only a document") { + val documentContent = "Only Doc".toByteArray() + val document = + ArchivePart.Document( + url = "https://example.com/index.html", + mimeType = "text/html", + content = documentContent, + ) + every { encoder.encode(documentContent) } returns "ENCODED_ONLY_DOC" + every { encoder.decodeDefault("ENCODED_ONLY_DOC") } returns documentContent + + val parts = listOf(document) + val url = "https://example.com/index.html" + val archive = compressor.compressToArchive(url, parts) + + When("decompressing") { + val decompressed = compressor.decompressArchive(archive) + + Then("output contains only the document") { + assert(decompressed.content.size == 1) + val doc = decompressed.content.first() as ArchivePart.Document + assert(doc != null) + assert(doc.url == document.url) + assert(doc.mimeType == document.mimeType) + assert(doc.content.contentEquals(document.content)) + } + } + } + } + + @Test + fun test_decompress_archive_various_encodings() { + Given("archive with base64 and quoted-printable") { + val textContent = "Text".toByteArray() + val binaryContent = byteArrayOf(0x01, 0x02, 0x03, 0x04) + val document = + ArchivePart.Document( + url = "https://example.com/index.html", + mimeType = "text/html", + content = textContent, + ) + val resource = + ArchivePart.Resource( + url = "https://example.com/image.png", + mimeType = "image/png", + content = binaryContent, + ) + every { encoder.encode(textContent) } returns "QUOTED_PRINTABLE_TEXT" + every { encoder.encode(binaryContent) } returns "BASE64_BINARY" + every { encoder.decodeDefault("QUOTED_PRINTABLE_TEXT") } returns textContent + every { encoder.decodeDefault("BASE64_BINARY") } returns binaryContent + + val parts = listOf(document, resource) + val url = "https://example.com/index.html" + val archive = compressor.compressToArchive(url, parts) + + When("decompressing") { + val decompressed = compressor.decompressArchive(archive) + + Then("content is decoded") { + assert(decompressed.content.size == 2) + val doc = decompressed.content.find { it is ArchivePart.Document } as ArchivePart.Document + val res = decompressed.content.find { it is ArchivePart.Resource } as ArchivePart.Resource + assert(doc != null) + assert(res != null) + assert(doc.content.contentEquals(textContent)) + assert(res.content.contentEquals(binaryContent)) + } + } + } + } + + @Test + fun test_decompress_archive_malformed() { + Given("malformed archive") { + val malformedArchive = + """ + From: + MIME-Version: 1.0 + Subject: Superwall Web Archive + Snapshot-Content-Location: https://example.com/index.html + Content-Type: multipart/related;type=\"text/html\" + + --MISSING-BOUNDARY + Content-Type: text/html + Content-Location: https://example.com/index.html + Content-Id:
+ + Malformed + """.trimIndent() + + When("decompressing") { + val decompressed = compressor.decompressArchive(malformedArchive) + + Then("throws or handles gracefully") { + // Should not throw, should return empty parts + assert(decompressed.content.isEmpty()) + } + } + } + } + + @Test + fun test_create_multipart_html_order_and_boundary() { + Given("parts") { + val documentContent = "Order".toByteArray() + val resourceContent = "body { color: blue; }".toByteArray() + val document = + ArchivePart.Document( + url = "https://example.com/index.html", + mimeType = "text/html", + content = documentContent, + ) + val resource = + ArchivePart.Resource( + url = "https://example.com/style.css", + mimeType = "text/css", + content = resourceContent, + ) + every { encoder.encode(documentContent) } returns "DOC_CONTENT" + every { encoder.encode(resourceContent) } returns "RES_CONTENT" + + val parts = listOf(resource, document) // Intentionally out of order + val url = "https://example.com/index.html" + + When("creating multipart HTML") { + val archive = parts.createMultipartHTML(url, encoder) + + Then("doc is first and boundary is correct") { + // Check boundary + val boundaryRegex = Regex("----MultipartBoundary--[a-f0-9]+----") + assert(boundaryRegex.containsMatchIn(archive)) + // Document should come before resource + val docIndex = archive.indexOf("DOC_CONTENT") + val resIndex = archive.indexOf("RES_CONTENT") + assert(docIndex in 0 until resIndex) + } + } + } + } + + @Test + fun test_extract_header_correctness() { + Given("string with headers and content") { + val headerString = + """ + Content-Type: text/html + Content-Location: https://example.com/index.html + Content-Id:
+ + HeaderTest + """.trimIndent() + + When("extracting") { + val (headers, content) = headerString.extractHeader() + + Then("correct map and content") { + assert(headers["Content-Type"] == "text/html") + assert(headers["Content-Location"] == "https://example.com/index.html") + assert(headers["Content-Id"] == "
") + assert(content.trim() == "HeaderTest") + } + } + } + } + + @Test + fun test_extract_header_with_whitespace() { + Given("string with whitespace") { + val headerString = + """ + Content-Type: text/html + Content-Location: https://example.com/index.html + Content-Id:
+ + + WhitespaceTest + """.trimIndent() + + When("extracting") { + val (headers, content) = headerString.extractHeader() + + Then("parses correctly") { + println("$headers") + assert(headers["Content-Type"] == "text/html") + assert(headers["Content-Location"] == "https://example.com/index.html") + assert(headers["Content-Id"] == "
") + assert(content.trim() == "WhitespaceTest") + } + } + } + } + + @Test + fun test_to_mime_part_document() { + Given("document part") { + val documentContent = "MimeDoc".toByteArray() + val document = + ArchivePart.Document( + url = "https://example.com/index.html", + mimeType = "text/html", + content = documentContent, + ) + every { encoder.encode(documentContent) } returns "ENCODED_DOC" + + When("converting") { + val mimePart = document.toMimePart(encoder) + + Then("correct headers/content") { + assert(mimePart.contains("Content-Type: text/html")) + assert(mimePart.contains("Content-Location: https://example.com/index.html")) + assert(mimePart.contains("Content-Id: ${document.contentId}")) + assert(mimePart.contains("ENCODED_DOC")) + } + } + } + } + + @Test + fun test_to_mime_part_resource_text() { + Given("resource part (text)") { + val resourceContent = "body { color: green; }".toByteArray() + val resource = + ArchivePart.Resource( + url = "https://example.com/style.css", + mimeType = "text/css", + content = resourceContent, + ) + every { encoder.encode(resourceContent) } returns "ENCODED_TEXT_RES" + + When("converting") { + val mimePart = resource.toMimePart(encoder) + + Then("quoted-printable encoding") { + assert(mimePart.contains("Content-Type: text/css")) + assert(mimePart.contains("Content-Location: https://example.com/style.css")) + assert(mimePart.contains("Content-Id: ${resource.contentId}")) + assert(mimePart.contains("ENCODED_TEXT_RES")) + assert(mimePart.contains("Content-Transfer-Encoding: quoted-printable")) + } + } + } + } + + @Test + fun test_to_mime_part_resource_binary() { + Given("resource part (binary)") { + val resourceContent = byteArrayOf(0x10, 0x20, 0x30, 0x40) + val resource = + ArchivePart.Resource( + url = "https://example.com/image.png", + mimeType = "image/png", + content = resourceContent, + ) + every { encoder.encode(resourceContent) } returns "ENCODED_BINARY_RES" + + When("converting") { + val mimePart = resource.toMimePart(encoder) + + Then("base64 encoding") { + assert(mimePart.contains("Content-Type: image/png")) + assert(mimePart.contains("Content-Location: https://example.com/image.png")) + assert(mimePart.contains("Content-Id: ${resource.contentId}")) + assert(mimePart.contains("ENCODED_BINARY_RES")) + assert(mimePart.contains("Content-Transfer-Encoding: base64")) + } + } + } + } +} diff --git a/superwall/src/test/java/com/superwall/sdk/paywall/archive/ManifestDownloaderTest.kt b/superwall/src/test/java/com/superwall/sdk/paywall/archive/ManifestDownloaderTest.kt new file mode 100644 index 00000000..b74a0a2c --- /dev/null +++ b/superwall/src/test/java/com/superwall/sdk/paywall/archive/ManifestDownloaderTest.kt @@ -0,0 +1,37 @@ +package com.superwall.sdk.paywall.archive + +import android.util.Base64 +import io.mockk.mockk +import org.junit.Test +import kotlin.io.encoding.ExperimentalEncodingApi + +class ManifestDownloaderTest { + val downloader = ManifestDownloader(mockk(), mockk()) + + @OptIn(ExperimentalEncodingApi::class) + @Test + fun extractAbsoluteUrls() { + val content = + kotlin.io.encoding.Base64 + .decode(testDoc) + .toString(Charsets.UTF_8) + val abs = downloader.discoverAbsoluteResources(content) + val rel = downloader.discoverRelativeResources(content) + println(abs.size) + assert(abs.size > 1) + abs.forEach { + println("Abs resource ${it.key}") + } + + println(rel.size) + rel.forEach { + println("Rel resource ${it.key}") + } + assert(rel.size > 1) + } +} + +val testDoc = + """ + PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCjxoZWFkPgogIDxtZXRhIGNoYXJzZXQ9J3V0Zi04Jz4KICA8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSc+CiAgPHRpdGxlPlN1cGVyd2FsbCBQYXl3YWxsIFRlbXBsYXRlPC90aXRsZT4KICA8bGluayByZWw9J2ljb24nIHR5cGU9J2ltYWdlL3BuZycgaHJlZj0nLi4vcHVibGljL2Fzc2V0cy9mYXZpY29uLnBuZyc+CiAgPGxpbmsgaHJlZj0iLi4vcHVibGljL2Fzc2V0cy9mYXZpY29uXzI1Ni5wbmciIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiI+CiAgPGxpbmsgaHJlZj0iLi4vcHVibGljL2Fzc2V0cy9mYXZpY29uLnBuZyIgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS94LWljb24iPgoKICA8c2NyaXB0PgogICAgaWYgKG5ldyBVUkwoZG9jdW1lbnQubG9jYXRpb24pLnNlYXJjaFBhcmFtcy5oYXMoJ2xvZ3JvY2tldCcpKSB7CiAgCiAgICAgIHRyeSB7CiAgICAgICAgLy8gRW5hYmxlIGRlYnVnIGxvZ2dpbmcKICAgICAgICBsb2NhbFN0b3JhZ2UuZGVidWcgPSAnKicKICAgICAgfSBjYXRjaCAoZSkgewoKICAgICAgfQoKICAgICAgLy8gQ3JlYXRlIHRoZSBMb2dSb2NrZXQgc2NyaXB0IGVsZW1lbnQKICAgICAgdmFyIHNjcmlwdDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgc2NyaXB0MS5zcmMgPSAiaHR0cHM6Ly9jZG4uaW5nZXN0LWxyLmNvbS9Mb2dSb2NrZXQubWluLmpzIjsKICAgICAgc2NyaXB0MS5zZXRBdHRyaWJ1dGUoImNyb3Nzb3JpZ2luIiwgImFub255bW91cyIpOwogICAgICBzY3JpcHQxLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgLy8gSW5pdGlhbGl6ZSBMb2dSb2NrZXQgb25jZSB0aGUgc2NyaXB0IGhhcyBsb2FkZWQKICAgICAgICAgIGlmICh3aW5kb3cuTG9nUm9ja2V0KSB7CiAgICAgICAgICAgIHdpbmRvdy5Mb2dSb2NrZXQuaW5pdCgnNzdvcnhtL3BheXdhbGxzJyk7CiAgICAgICAgICB9CiAgICAgIH07CgogICAgICAvLyBBcHBlbmQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudCdzIGhlYWQKICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQxKTsKCiAgICB9CiAgPC9zY3JpcHQ+CgogIDxzY3JpcHQ+CiAgICB2YXIgZXhwb3J0cyA9IHt9OwogIDwvc2NyaXB0PgogIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vcHVibGljL2Nzcy9nbG9iYWwuY3NzJz4KICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J2J1aWxkL2J1bmRsZS5jc3MnPgogIDxzY3JpcHQgZGVmZXIgc3JjPSdidWlsZC9idW5kbGUuanMnPjwvc2NyaXB0PgoKICA8c2NyaXB0PgogICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5pbmNsdWRlcygnc3VwZXJ3YWxsJykgJiYgIShuZXcgVVJMKGRvY3VtZW50LmxvY2F0aW9uKSkuc2VhcmNoUGFyYW1zLmhhcygnZGVidWcnKSkgewogICAgICB3aW5kb3cuY29uc29sZS5sb2cgPSAoKSA9PiB7IH0KICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKCJcblxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblBBWVdBTExVSTogREVCVUdHRVIgRU5BQkxFRFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuIikKICAgIH0KICA8L3NjcmlwdD4KCjwvaGVhZD4KCjxib2R5PgogIDxkaXYgaWQ9InN3V2lkZ2V0Q29udGFpbmVyIiBjbGFzcz0ic3ctd2lkZ2V0LWNvbnRhaW5lciI+CgogICAgICA8c2NyaXB0PgogICAgICAgIHdpbmRvdy5TdXBlcndhbGwgPSB7fQogICAgICAgIHdpbmRvdy5TdXBlcndhbGwuZGlkQ29uZmlndXJlID0gZmFsc2UKICAgICAgICB3aW5kb3cuU3VwZXJ3YWxsLm9ic2VydmVySGFuZGxlciA9IG51bGwKICAgICAgICB3aW5kb3cuU3VwZXJ3YWxsLm9ic2VydmVyID0gbnVsbAogICAgICAgIHdpbmRvdy5TdXBlcndhbGwudXBkYXRlUGF5d2FsbENvbnRhaW5lclBhZGRpbmcgPSBudWxsCgogICAgICAgIHdpbmRvdy5TdXBlcndhbGwuY29uZmlndXJlID0gKG9wdGlvbnMsIGRhcmtPcHRpb25zKSA9PiB7CiAgICAgICAgICBpZiAod2luZG93LlN1cGVyd2FsbC5kaWRDb25maWd1cmUpIHsKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICB9CgogICAgICAgICAgY29uZmlndXJlKG9wdGlvbnMsIGRhcmtPcHRpb25zKQogICAgICAgICAgLy8gc2V0dXBQanNBbmREb20oKQogICAgICAgICAgd2luZG93LlN1cGVyd2FsbC5kaWRDb25maWd1cmUgPSB0cnVlCiAgICAgICAgfQoKICAgICAgICB3aW5kb3cuU3VwZXJ3YWxsLnJlY29uZmlndXJlID0gKG9wdGlvbiwgZGFya09wdGlvbnMpID0+IHsKICAgICAgICAgIGNvbmZpZ3VyZShvcHRpb24sIGRhcmtPcHRpb25zKQogICAgICAgIH0KCiAgICAgICAgLyogX19TVVBFUldBTExfUkVQTEFDRV9TVEFSVF9fICovCndpbmRvdy5fcGF5d2FsbF9qc19wYXl3YWxsID0gJ2V5SnpkV0p6ZEdsMGRYUnBiMjV6SWpwYmV5SnJaWGtpT2lKamJHOXpaUzB4SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pYVcxbklpd2ljM1ZpVkhsd1pTSTZJbWx0WnlJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaVkyeHBZMnN0WW1Wb1lYWnBiM0lpTENKamJHbGphMEpsYUdGMmFXOXlJanA3SW5SNWNHVWlPaUpqYkc5elpTSjlmWDBzZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTnlZeUlzSW5OeVl5STZJaTR1TDNCMVlteHBZeTloYzNObGRITXZibUYyTFdKMWRIUnZiaTV6ZG1jaUxDSnpjbU5UWlhRaU9sc2lJbDE5ZlYxOUxIc2lhMlY1SWpvaVkyeHZjMlV0TWlJc0luWmhiSFZsSWpvaWJHVm1kQ0lzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pWTJ4cFkyc3RZbVZvWVhacGIzSWlMQ0pqYkdsamEwSmxhR0YyYVc5eUlqcDdJblI1Y0dVaU9pSmpiRzl6WlNKOWZYMWRmU3g3SW10bGVTSTZJbU5zYjNObExUTWlMQ0oyWVd4MVpTSTZJbkpwWjJoMElpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSmpiR2xqYXkxaVpXaGhkbWx2Y2lJc0ltTnNhV05yUW1Wb1lYWnBiM0lpT25zaWRIbHdaU0k2SW1Oc2IzTmxJbjE5ZlYxOUxIc2lhMlY1SWpvaVkyeHZjMlV0TkNJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1sdFp5SXNJbk4xWWxSNWNHVWlPaUpwYldjaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkltTnNhV05yTFdKbGFHRjJhVzl5SWl3aVkyeHBZMnRDWldoaGRtbHZjaUk2ZXlKMGVYQmxJam9pWTJ4dmMyVWlmWDE5TEhzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpjbU1pTENKemNtTWlPaUpvZEhSd2N6b3ZMM04wWVhScFl5NXpkWEJsY25kaGJHeGhjM05sZEhNdVkyOXRMMUJ3VmxGc1pUZGxPVEp3YVZBdExUZHRWbmt4V0NJc0luTnlZMU5sZENJNlcxMTlmU3g3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbTl3WVdOcGRIa2lMQ0oyWVd4MVpTSTZJakVpZlYxOWZWMHNJbkpsZG1semFXOXVJam94TnpBMU5URTJOREk1T0RremZTeDdJbXRsZVNJNkltNWhkbUpoY2lJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFN3aWNtVjJhWE5wYjI0aU9qRTNNRFUxTVRnMk9EVXlNakI5TEhzaWEyVjVJam9pVG1GMklFeGxablFnU1c1dVpYSWdTV052YmlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1sdFp5SXNJbk4xWWxSNWNHVWlPaUpwYldjaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTnlZeUlzSW5OeVl5STZJaTR1TDNCMVlteHBZeTloYzNObGRITXZibUYyTFdKMWRIUnZiaTV6ZG1jaUxDSnpjbU5UWlhRaU9sc2lJbDE5ZlYxOUxIc2lhMlY1SWpvaVRtRjJJRXhsWm5RZ1NXNXVaWElpTENKMllXeDFaU0k2SW1WNGRISmhJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lURzluYnlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1sdFp5SXNJbk4xWWxSNWNHVWlPaUpwYldjaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTnlZeUlzSW5OeVl5STZJaTR1TDNCMVlteHBZeTloYzNObGRITXZiRzluYnk1emRtY2lMQ0p6Y21OVFpYUWlPbHNpSWwxOWZWMTlMSHNpYTJWNUlqb2lUbUYySUUxcFpHUnNaU0lzSW5aaGJIVmxJam9pVkdsMGJHVWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSk9ZWFlnVW1sbmFIUWdTVzV1WlhJaUxDSjJZV3gxWlNJNkltVjRkSEpoSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVG1GMklGSnBaMmgwSUVsdWJtVnlJRWxqYjI0aUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKcGJXY2lMQ0p6ZFdKVWVYQmxJam9pYVcxbklpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpjbU1pTENKemNtTWlPaUl1TGk5d2RXSnNhV012WVhOelpYUnpMMjVoZGkxaWRYUjBiMjR1YzNabklpd2ljM0pqVTJWMElqcGJJaUpkZlgxZGZTeDdJbXRsZVNJNkluQjFjbU5vWVhObExYQnlhVzFoY25raUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSmpiR2xqYXkxaVpXaGhkbWx2Y2lJc0ltTnNhV05yUW1Wb1lYWnBiM0lpT25zaWRIbHdaU0k2SW5CMWNtTm9ZWE5sSWl3aWNISnZaSFZqZENJNkluQnlhVzFoY25raWZYMTlMSHNpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSTBPSEI0SW4xZGZYMWRmU3g3SW10bGVTSTZJbkIxY21Ob1lYTmxMWE5sWTI5dVpHRnllU0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW1Oc2FXTnJMV0psYUdGMmFXOXlJaXdpWTJ4cFkydENaV2hoZG1sdmNpSTZleUowZVhCbElqb2ljSFZ5WTJoaGMyVWlMQ0p3Y205a2RXTjBJam9pYzJWamIyNWtZWEo1SW4xOWZTeDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU5EaHdlQ0o5WFgxOVhYMHNleUpyWlhraU9pSndkWEpqYUdGelpTMTBaWEowYVdGeWVTSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbU5zYVdOckxXSmxhR0YyYVc5eUlpd2lZMnhwWTJ0Q1pXaGhkbWx2Y2lJNmV5SjBlWEJsSWpvaWNIVnlZMmhoYzJVaUxDSndjbTlrZFdOMElqb2lkR1Z5ZEdsaGNua2lmWDE5TEhzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUkwT0hCNEluMWRmWDFkZlN4N0ltdGxlU0k2SWxObFkzUnBiMjRnWDE5emR5MWtORE10YldSbE1IaDVjbk5vYzNCbmMzQTNYMmNpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MTBiM0FpTENKMllXeDFaU0k2SWpJMGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpRNGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1Wnkxc1pXWjBJaXdpZG1Gc2RXVWlPaUl4Tm5CNEluMHNleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0Y21sbmFIUWlMQ0oyWVd4MVpTSTZJakUyY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWkdsemNHeGhlU0lzSW5aaGJIVmxJam9pYm05dVpTSjlYWDE5WFN3aWNtVjJhWE5wYjI0aU9qRTNNRFUxTVRjek1ERXdORGg5TEhzaWEyVjVJam9pUkdsMklGOWZjM2N0WW5Wek1IUTBMVzh0Wm1vMWNHOHhabXc1ZG10cUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2lZbUZqYTJkeWIzVnVaRWx0WVdkbElpd2lZbUZqYTJkeWIzVnVaRWx0WVdkbElqb2libTl1WlNJc0ltSmhZMnRuY205MWJtUlRhWHBsSWpvaVkyOTJaWElpTENKaVlXTnJaM0p2ZFc1a1VtVndaV0YwSWpvaWJtOHRjbVZ3WldGMElpd2lZbUZqYTJkeWIzVnVaRkJ2YzJsMGFXOXVJam9pWTJWdWRHVnlJbjE5TEhzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pY0c5emFYUnBiMjRpTENKMllXeDFaU0k2SW5KbGJHRjBhWFpsSW4wc2V5SndjbTl3WlhKMGVTSTZJbmRwWkhSb0lpd2lkbUZzZFdVaU9pSXhNREFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RkRzl3SWl3aWRtRnNkV1VpT2lJMU5uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkluQmhaR1JwYm1jdGJHVm1kQ0lzSW5aaGJIVmxJam9pTVRad2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKd1lXUmthVzVuTFhKcFoyaDBJaXdpZG1Gc2RXVWlPaUl4Tm5CNEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3ZlN3aWNtVjJhWE5wYjI0aU9qRTNNRFUxTVRnek5UZ3pOVEI5TEhzaWEyVjVJam9pU1cxaFoyVkNZWE5sSUY5ZmMzY3RhbTkzYUhWMVlXMXJaV0Y2TWpKdGNuaHZiSEpySWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pYVcxbklpd2ljM1ZpVkhsd1pTSTZJbWx0WnlJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzSmpJaXdpYzNKaklqb2lhSFIwY0hNNkx5OXpkR0YwYVdNdWMzVndaWEozWVd4c1lYTnpaWFJ6TG1OdmJTOU1heTFVU1VwRVJVVXpkMnhUWm5BME4zWnRRME1pTENKemNtTlRaWFFpT2x0ZGZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaU1UQXdKU0o5TEhzaWNISnZjR1Z5ZEhraU9pSm9aV2xuYUhRaUxDSjJZV3gxWlNJNkltRjFkRzhpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxYUnZjQ0lzSW5aaGJIVmxJam9pTWpCd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0YkdWbWRDSXNJblpoYkhWbElqb2lZWFYwYnlKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRjbWxuYUhRaUxDSjJZV3gxWlNJNkltRjFkRzhpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9uc2lkMmxrZEdnaU9pSXhNREFsSWl3aWFHVnBaMmgwSWpvaVlYVjBieUo5TENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4T0RBeU1UazNNWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0Y0daeVkzZzBORFJ3Y1RsMmQycDZhSFYwYUdGb0lpd2lkbUZzZFdVaU9pSkRiMjF3WVhKbElGQnNZVzV6SUdGdVpDQkdaV0YwZFhKbGN5SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpGeVpXMGlmU3g3SW5CeWIzQmxjblI1SWpvaVptOXVkQzEzWldsbmFIUWlMQ0oyWVd4MVpTSTZJall3TUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1UUXdKU0o5TEhzaWNISnZjR1Z5ZEhraU9pSjBaWGgwTFdGc2FXZHVJaXdpZG1Gc2RXVWlPaUpqWlc1MFpYSWlmU3g3SW5CeWIzQmxjblI1SWpvaWJXRnlaMmx1TFdKdmRIUnZiU0lzSW5aaGJIVmxJam9pTVRad2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMwc0luSmxkbWx6YVc5dUlqb3hOekExTlRFM01qa3dOREF5ZlN4N0ltdGxlU0k2SWtScGRpQmZYM04zTFRSbVpIUnBlblJ1Ykhwc2NITndlRzl1Wm0xdllpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKbWJHVjRJbjBzZXlKd2NtOXdaWEowZVNJNkltRnNhV2R1TFdsMFpXMXpJaXdpZG1Gc2RXVWlPaUp6ZEhKbGRHTm9JbjBzZXlKd2NtOXdaWEowZVNJNkltcDFjM1JwWm5rdFkyOXVkR1Z1ZENJc0luWmhiSFZsSWpvaVkyVnVkR1Z5SW4wc2V5SndjbTl3WlhKMGVTSTZJbWRoY0NJc0luWmhiSFZsSWpvaU9IQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MXhlR1I0Y0hWbmFHNW5kVzlwWWpCNmQzVnJOMllpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2laR2x6Y0d4aGVTSXNJblpoYkhWbElqb2labXhsZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYkdWNExXUnBjbVZqZEdsdmJpSXNJblpoYkhWbElqb2lZMjlzZFcxdUluMHNleUp3Y205d1pYSjBlU0k2SW1kaGNDSXNJblpoYkhWbElqb2lPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJblJsZUhRdFlXeHBaMjRpTENKMllXeDFaU0k2SW1ObGJuUmxjaUo5TEhzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaU1UQXdKU0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMVE5xZVdwaFpHbHRjWGx4WjJSaGFHaDZlVzl6WVNJc0luWmhiSFZsSWpvaVUzUmhjblJsY2lJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakl3Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMTNaV2xuYUhRaUxDSjJZV3gxWlNJNklqY3dNQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRFd0pTSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVJHbDJJRjlmYzNjdFpXVnRaR3R4ZUc1cmEyeHVieTF4YlhkbE9XSnFJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pWTJ4cFkyc3RZbVZvWVhacGIzSWlMQ0pqYkdsamEwSmxhR0YyYVc5eUlqcDdJblI1Y0dVaU9pSndkWEpqYUdGelpTSXNJbkJ5YjJSMVkzUWlPaUowWlhKMGFXRnllU0o5Zlgwc2V5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRnlaVzBpZlN4N0luQnliM0JsY25SNUlqb2lZbUZqYTJkeWIzVnVaQzFqYjJ4dmNpSXNJblpoYkhWbElqb2lhSE5zS0RJeE5pd2dOVFFsTENBNU5TVXBJbjBzZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJeE1EQWxJbjBzZXlKd2NtOXdaWEowZVNJNkluQmhaR1JwYm1jdGRHOXdJaXdpZG1Gc2RXVWlPaUk0Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJakV6Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMWFJ2Y0Mxc1pXWjBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lNakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRkRzl3TFhKcFoyaDBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lNakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRZbTkwZEc5dExXeGxablF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUl5TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTFpYjNSMGIyMHRjbWxuYUhRdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJeU1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxM2FXUjBhQ0lzSW5aaGJIVmxJam9pTW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTFqYjJ4dmNpSXNJblpoYkhWbElqb2lhSE5zS0RJeE5pd2dOVFFsTENBNU5TVXBJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxemRIbHNaU0lzSW5aaGJIVmxJam9pYzI5c2FXUWlmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklsUmxlSFFnWDE5emR5MTBaM1o2ZHpGbGFYQmtZMk10WVhFMmRYbGtZUzBpTENKMllXeDFaU0k2SW50N2RHVnlkR2xoY25rdWNHVnlhVzlrVFc5dWRHaHpmWDBpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhjbVZ0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGQyVnBaMmgwSWl3aWRtRnNkV1VpT2lJM01EQWlmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakV4TUNVaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkxMmRuSnJhV2RzYjJONU0zSnhjR2RtWWpKa2QzTWlMQ0oyWVd4MVpTSTZJbTF2Ym5Sb0lpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVRGd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWGRsYVdkb2RDSXNJblpoYkhWbElqb2lOekF3SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE1UQWxJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpKd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXSmZhM04xTkhGM1puaHVaSHB1YVhWMmN6TmpNU0lzSW5aaGJIVmxJam9pWW1sc2JHVmtJRzV2ZHlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJamh3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYZGxhV2RvZENJc0luWmhiSFZsSWpvaU5EQXdJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TVRBbEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJamR3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pVkdWNGRDQmZYM04zTFRSc2VHTm9ZV1kyWnpGM09IVnRjMlpsZFhkbWNDSXNJblpoYkhWbElqb2llM3QwWlhKMGFXRnllUzV3Y21salpYMTlJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1UaHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTnpBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhNVEFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbTFoY21kcGJpMWliM1IwYjIwaUxDSjJZV3gxWlNJNklqSndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMUzF3WjJSMGVUVnhlVFJqZEc1MmNqbG9aekZ4YXlJc0luWmhiSFZsSWpvaU15MWtZWGtnZEhKcFlXd2lMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJeE1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnZiblF0ZDJWcFoyaDBJaXdpZG1Gc2RXVWlPaUkzTURBaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRXhNQ1VpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxXSnZkSFJ2YlNJc0luWmhiSFZsSWpvaU1UTndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMHNJbkpsZG1semFXOXVJam94TnpBeE5ESXdPRGN5TlRFeWZTeDdJbXRsZVNJNklrUnBkaUJmWDNOM0xYbzVjSFYzYjI5NWQyNTRhV3h6ZW1vMWFuUnliU0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmlZV05yWjNKdmRXNWtMV052Ykc5eUlpd2lkbUZzZFdVaU9pSm9jMnhoS0RJeU1Dd2dNallsTENBMU9TVXNJREF1TmlraWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lPSEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0YlhONGF6RjFlblZoWW05NGIxODNObWN0Wlhsa0lpd2lkbUZzZFdVaU9pSjdlM1JsY25ScFlYSjVMbTF2Ym5Sb2JIbFFjbWxqWlgxOUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVRad2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWGRsYVdkb2RDSXNJblpoYkhWbElqb2lOekF3SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE1UQWxJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpKd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xYTmxibkZ2TFhScE5XdGpNalYyYnpCck5XOXFkQ0lzSW5aaGJIVmxJam9pY0dWeUlHMXZiblJvSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE5EQWxJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RjbU5qWm5Kc1kzWm9lV3QyZFdOZmVURTNaMnh0SWl3aWRtRnNkV1VpT2lJbWJtSnpjRHNpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhNWEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE5EQWxJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MW5hR2R1YUY5cmJtbGZiV2RqY25oeU4zZHpaM1FpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2laR2x6Y0d4aGVTSXNJblpoYkhWbElqb2labXhsZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYkdWNExXUnBjbVZqZEdsdmJpSXNJblpoYkhWbElqb2lZMjlzZFcxdUluMHNleUp3Y205d1pYSjBlU0k2SW1kaGNDSXNJblpoYkhWbElqb2lPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJblJsZUhRdFlXeHBaMjRpTENKMllXeDFaU0k2SW1ObGJuUmxjaUo5TEhzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaU1UQXdKU0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMUzAwWkhjeGNHMWpNbkZpZURrMmFtdDJhR3hrYkNJc0luWmhiSFZsSWpvaVUzUmhjblJsY2lJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakl3Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMTNaV2xuYUhRaUxDSjJZV3gxWlNJNklqY3dNQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRFd0pTSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVJHbDJJRjlmYzNjdE0yRmxjR3g2YURCNGVIWjFhekJ0WTNWcU1tMTJJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pWTJ4cFkyc3RZbVZvWVhacGIzSWlMQ0pqYkdsamEwSmxhR0YyYVc5eUlqcDdJblI1Y0dVaU9pSndkWEpqYUdGelpTSXNJbkJ5YjJSMVkzUWlPaUp6WldOdmJtUmhjbmtpZlgxOUxIc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhjbVZ0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSWlMQ0oyWVd4MVpTSTZJbkpuWW1Fb01USXpMQ0F4TkRFc0lERTNOeXdnTUM0d09Da2lmU3g3SW5CeWIzQmxjblI1SWpvaWQybGtkR2dpTENKMllXeDFaU0k2SWpFd01DVWlmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxMGIzQWlMQ0oyWVd4MVpTSTZJamh3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNVE53ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRkRzl3TFd4bFpuUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSXlNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMTBiM0F0Y21sbmFIUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSXlNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMWliM1IwYjIwdGJHVm1kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJakl3Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMV0p2ZEhSdmJTMXlhV2RvZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWpJd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFhkcFpIUm9JaXdpZG1Gc2RXVWlPaUl5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMV052Ykc5eUlpd2lkbUZzZFdVaU9pSm9jMnhoS0RJeU1Dd2dPVGdsTENBMk15VXNJREVwSW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMXpkSGxzWlNJc0luWmhiSFZsSWpvaWMyOXNhV1FpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJbFJsZUhRZ1gxOXpkeTEyTVdGbmVEVXljM0ZvWm1oZmJHVmhjR3hvTlRVaUxDSjJZV3gxWlNJNkludDdjMlZqYjI1a1lYSjVMbkJsY21sdlpFMXZiblJvYzMxOUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVhKbGJTSjlMSHNpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWGRsYVdkb2RDSXNJblpoYkhWbElqb2lOekF3SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE1UQWxJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RkakpyZUY5M2FuWjNZM04zTW5CeGVuQTBjV2xpSWl3aWRtRnNkV1VpT2lKdGIyNTBhSE1pTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhNWEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGQyVnBaMmgwSWl3aWRtRnNkV1VpT2lJM01EQWlmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakV4TUNVaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNbkI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0YUMxb1pIcG9iV0ZsYTJ0ME9XdzJkakJvZVc5bklpd2lkbUZzZFdVaU9pSmlhV3hzWldRZ2JtOTNJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU9IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnZiblF0ZDJWcFoyaDBJaXdpZG1Gc2RXVWlPaUkwTURBaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRXhNQ1VpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxXSnZkSFJ2YlNJc0luWmhiSFZsSWpvaU4zQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RjV3B0Wm5Gd05UbGlaSEZwTVcxaU5HaHRZbTUxSWl3aWRtRnNkV1VpT2lKN2UzTmxZMjl1WkdGeWVTNXdjbWxqWlgxOUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVRod2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKamIyeHZjaUlzSW5aaGJIVmxJam9pYUhOc1lTZ3lNakFzSURrNEpTd2dOak1sTENBeEtTSjlMSHNpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWGRsYVdkb2RDSXNJblpoYkhWbElqb2lOekF3SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE1UQWxJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpKd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXNTZkVE53ZUhGaWQyaDFjM1pmT1d0b2FXbHROeUlzSW5aaGJIVmxJam9pTXkxa1lYa2dkSEpwWVd3aUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2labTl1ZEMxemFYcGxJaXdpZG1Gc2RXVWlPaUl4TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW1admJuUXRkMlZwWjJoMElpd2lkbUZzZFdVaU9pSTNNREFpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFeE1DVWlmU3g3SW5CeWIzQmxjblI1SWpvaWJXRnlaMmx1TFdKdmRIUnZiU0lzSW5aaGJIVmxJam9pTVROd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMwc0luSmxkbWx6YVc5dUlqb3hOekF4TkRJd09EY3hNRFkxZlN4N0ltdGxlU0k2SWtScGRpQmZYM04zTFhwcmEzVnJkMkZyYUhrNWRHMWlhSFJxTjNOdk1DSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5SWl3aWRtRnNkV1VpT2lKb2MyeGhLREl5TUN3Z09UZ2xMQ0EyTXlVc0lERXBJbjBzZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpod2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xUZGhaWE4yZFdVMmVteGpiR1E1YXkxcmEzSm1OeUlzSW5aaGJIVmxJam9pZTN0elpXTnZibVJoY25rdWJXOXVkR2hzZVZCeWFXTmxmWDBpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhOM0I0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGQyVnBaMmgwSWl3aWRtRnNkV1VpT2lJM01EQWlmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakV4TUNVaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNbkI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0WjNSdlkyWmZkV2xpY25GcGEyTXllWGx2Y21nMElpd2lkbUZzZFdVaU9pSndaWElnYlc5dWRHZ2lMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJNGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUwTUNVaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkweVpUZHRZV0YwY1hjMWEyMXNZbmxpTUdWdU1HVWlMQ0oyWVd4MVpTSTZJbnNsSUdGemMybG5iaUIwWlhKMGFXRnllVjkzWldWcmJIbGZjSEpwWTJVZ1BTQjBaWEowYVdGeWVTNXlZWGRRY21salpTQjhJR1JwZG1sa1pXUmZZbms2SUhSbGNuUnBZWEo1TG5CbGNtbHZaRmRsWld0eklDVjlYRzU3SlNCaGMzTnBaMjRnYzJWamIyNWtZWEo1WDNkbFpXdHNlVjl3Y21salpTQTlJSE5sWTI5dVpHRnllUzV5WVhkUWNtbGpaU0I4SUdScGRtbGtaV1JmWW5rNklITmxZMjl1WkdGeWVTNXdaWEpwYjJSWFpXVnJjeUFsZlZ4dWV5VWdZWE56YVdkdUlHUnBabVpsY21WdVkyVWdQU0IwWlhKMGFXRnllVjkzWldWcmJIbGZjSEpwWTJVZ2ZDQnRhVzUxY3pvZ2MyVmpiMjVrWVhKNVgzZGxaV3RzZVY5d2NtbGpaU0FsZlZ4dWV5VWdZWE56YVdkdUlIQmxjbU5sYm5SZmIyWm1JRDBnWkdsbVptVnlaVzVqWlNCOElIUnBiV1Z6T2lBeE1EQWdmQ0JrYVhacFpHVmtYMko1T2lCMFpYSjBhV0Z5ZVY5M1pXVnJiSGxmY0hKcFkyVWdKWDFjYm5zbElHRnpjMmxuYmlCeWIzVnVaR1ZrWDNCbGNtTmxiblJmYjJabUlEMGdjR1Z5WTJWdWRGOXZabVlnZkNCeWIzVnVaRG9nTUNWOVhHNVRRVlpGSUh0N0lISnZkVzVrWldSZmNHVnlZMlZ1ZEY5dlptWWdmWDBsSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVEZ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1UUXdKU0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMHNJbkpsZG1semFXOXVJam94TnpBeE5ESXdPVEEwTURBd2ZTeDdJbXRsZVNJNklrUnBkaUJmWDNOM0xXaG1NV2x4WXpOemVWOXdabVpvY0hnd1lqUjJkaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSm1iR1Y0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVpzWlhndFpHbHlaV04wYVc5dUlpd2lkbUZzZFdVaU9pSmpiMngxYlc0aWZTeDdJbkJ5YjNCbGNuUjVJam9pWjJGd0lpd2lkbUZzZFdVaU9pSTRjSGdpZlN4N0luQnliM0JsY25SNUlqb2lkR1Y0ZEMxaGJHbG5iaUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJeE1EQWxJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RabUpmTFhGZmVEVjFObnBrWHpSbWF5MW9kbTlqSWl3aWRtRnNkV1VpT2lKQlNTQlFjbThpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXlNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGQyVnBaMmgwSWl3aWRtRnNkV1VpT2lJM01EQWlmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakV4TUNVaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWtScGRpQmZYM04zTFhwcFp5MDFiRGx6WldJNGEzQm5ZV1IzTjJKcGFpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbU5zYVdOckxXSmxhR0YyYVc5eUlpd2lZMnhwWTJ0Q1pXaGhkbWx2Y2lJNmV5SjBlWEJsSWpvaWNIVnlZMmhoYzJVaUxDSndjbTlrZFdOMElqb2ljSEpwYldGeWVTSjlmWDBzZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpGeVpXMGlmU3g3SW5CeWIzQmxjblI1SWpvaVltRmphMmR5YjNWdVpDMWpiMnh2Y2lJc0luWmhiSFZsSWpvaWNtZGlZU2d4TWpNc0lERTBNU3dnTVRjM0xDQXdMakE0S1NKOUxIc2ljSEp2Y0dWeWRIa2lPaUozYVdSMGFDSXNJblpoYkhWbElqb2lNVEF3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MWFJ2Y0NJc0luWmhiSFZsSWpvaU9IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkluQmhaR1JwYm1jdFltOTBkRzl0SWl3aWRtRnNkV1VpT2lJeE0zQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxMGIzQXRiR1ZtZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWpJd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFhSdmNDMXlhV2RvZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWpJd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFdKdmRIUnZiUzFzWldaMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU1qQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdFltOTBkRzl0TFhKcFoyaDBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lNakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRkMmxrZEdnaUxDSjJZV3gxWlNJNklqSndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdFkyOXNiM0lpTENKMllXeDFaU0k2SW1oemJDZ3pNakFzSURZM0pTd2dOVGNsS1NKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRjM1I1YkdVaUxDSjJZV3gxWlNJNkluTnZiR2xrSW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0Wm5ONVltdHhZM3BoWVRCcGFXODRiSEI2WXpKNUlpd2lkbUZzZFdVaU9pSjdleUJ3Y21sdFlYSjVMbkJsY21sdlpFMXZiblJvY3lCOWZTSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpGeVpXMGlmU3g3SW5CeWIzQmxjblI1SWpvaVptOXVkQzEzWldsbmFIUWlMQ0oyWVd4MVpTSTZJamN3TUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1URXdKU0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMWGhpWDNJeWNuTjVMVGhuTVRoaGNtRmxOSFk0Y3lJc0luWmhiSFZsSWpvaWJXOXVkR2h6SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVEZ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYZGxhV2RvZENJc0luWmhiSFZsSWpvaU56QXdJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TVRBbEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJakp3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pVkdWNGRDQmZYM04zTFd4c2QzWjRPVzB4TFdJeGFHbzFZM0Z1YUhremFpSXNJblpoYkhWbElqb2lZbWxzYkdWa0lHNXZkeUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqaHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTkRBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhNVEFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbTFoY21kcGJpMWliM1IwYjIwaUxDSjJZV3gxWlNJNklqZHdlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMVzU1ZG5rNWVXTjZhM2g1Y0dwaGVITTRaV2QyY1NJc0luWmhiSFZsSWpvaWUzdHdjbWx0WVhKNUxuQnlhV05sZlgwaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2labTl1ZEMxemFYcGxJaXdpZG1Gc2RXVWlPaUl4T0hCNEluMHNleUp3Y205d1pYSjBlU0k2SW1OdmJHOXlJaXdpZG1Gc2RXVWlPaUpvYzJ3b016SXdMQ0EyTnlVc0lEVTNKU2tpZlN4N0luQnliM0JsY25SNUlqb2labTl1ZEMxM1pXbG5hSFFpTENKMllXeDFaU0k2SWpjd01DSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVEV3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRZbTkwZEc5dElpd2lkbUZzZFdVaU9pSXljSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJbFJsZUhRZ1gxOXpkeTFuZG1kbmF6QTVPSFU0Y0hadE9ETm9abTl1YUd3aUxDSjJZV3gxWlNJNklqTXRaR0Y1SUhSeWFXRnNJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1UQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTnpBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhNVEFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbTFoY21kcGJpMWliM1IwYjIwaUxDSjJZV3gxWlNJNklqRXpjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlMQ0p5WlhacGMybHZiaUk2TVRjd01UUXlNRGczTXpRME9IMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MXZaM3AzWlhwNGNISXlkMlJsWTNCdmJUUmhjVGtpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lZbUZqYTJkeWIzVnVaQzFqYjJ4dmNpSXNJblpoYkhWbElqb2lhSE5zS0RNeU1Dd2dOamNsTENBMU55VXBJbjBzZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpod2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXUmpZWFpvWVhrNGNYRnVPREY0WlhGdFltbHhhU0lzSW5aaGJIVmxJam9pZTN0d2NtbHRZWEo1TG0xdmJuUm9iSGxRY21salpYMTlJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1UaHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTnpBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhNVEFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbTFoY21kcGJpMWliM1IwYjIwaUxDSjJZV3gxWlNJNklqSndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMWEYzYzNSbGQydHpNMk5sWldKc016bHJPSFo0YkNJc0luWmhiSFZsSWpvaWNHVnlJRzF2Ym5Sb0lpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pT0hCNEluMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0ZVhsbmMzSTRlblZuT0c5dWJYZGZlWFIwY1hWeklpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJeE1YQjRJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TkRBbEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3Zlgwc2V5SnJaWGtpT2lKVFpXTjBhVzl1SUY5ZmMzY3RkR3QyTlMwMGFpMXpObkI2ZW1KMWJUSjRjR290SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RZbTkwZEc5dElpd2lkbUZzZFdVaU9pSTBPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RiR1ZtZENJc0luWmhiSFZsSWpvaU1UWndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxYSnBaMmgwSWl3aWRtRnNkV1VpT2lJeE5uQjRJbjFkZlgxZExDSnlaWFpwYzJsdmJpSTZNVGN3TlRVeE9EY3hOVGN6TTMwc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdGNuUXRMV3N0YW5OcGEzVjBkWFJ2ZVhkdFppMWlJaXdpZG1Gc2RXVWlPaUpEY21WaGRHVWdWbWxrWlc5eklERXdlQ0JHWVhOMFpYSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJeGNtVnRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnZiblF0ZDJWcFoyaDBJaXdpZG1Gc2RXVWlPaUkyTURBaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRTBNQ1VpZlN4N0luQnliM0JsY25SNUlqb2lkR1Y0ZEMxaGJHbG5iaUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpFMmNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrUnBkaUJmWDNOM0xYVnhaR0p0Y201b2JYcHZkV2MzZEhwNWRIcG5aeUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSm1iR1Y0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUZzYVdkdUxXbDBaVzF6SWl3aWRtRnNkV1VpT2lKemRISmxkR05vSW4wc2V5SndjbTl3WlhKMGVTSTZJbXAxYzNScFpua3RZMjl1ZEdWdWRDSXNJblpoYkhWbElqb2lZMlZ1ZEdWeUluMHNleUp3Y205d1pYSjBlU0k2SW1kaGNDSXNJblpoYkhWbElqb2lPSEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpFYVhZZ1gxOXpkeTFmWm1sNmJITjFkMnhrZG5nME5HSnlaWE40YVRVaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZEdWNGRDMWhiR2xuYmlJc0luWmhiSFZsSWpvaVkyVnVkR1Z5SW4wc2V5SndjbTl3WlhKMGVTSTZJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSWlMQ0oyWVd4MVpTSTZJbkpuWW1Fb01qVTFMQ0F5TlRVc0lESTFOU3dnTVNraWZTeDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJakV3TUNVaWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTEwYjNBaUxDSjJZV3gxWlNJNklqRTJjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MWliM1IwYjIwaUxDSjJZV3gxWlNJNklqSXpjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MXNaV1owSWl3aWRtRnNkV1VpT2lJNGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxeWFXZG9kQ0lzSW5aaGJIVmxJam9pT0hCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTEwYjNBdGJHVm1kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJakl3Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMWFJ2Y0MxeWFXZG9kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJakl3Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMV0p2ZEhSdmJTMXNaV1owTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pTWpCd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0WW05MGRHOXRMWEpwWjJoMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU1qQndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMV1Y0YW1Kek1tUjJORzU0ZFdwMk1XMXBYMmt4ZWlJc0luWmhiSFZsSWpvaVJuSmxaU0lzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2labTl1ZEMxM1pXbG5hSFFpTENKMllXeDFaU0k2SWpjd01DSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVFZ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppWVdOclozSnZkVzVrTFdOdmJHOXlJaXdpZG1Gc2RXVWlPaUp5WjJKaEtEWTRMQ0F4TWprc0lESTFNeXdnTUM0d09Da2lmU3g3SW5CeWIzQmxjblI1SWpvaWJXRnlaMmx1TFdKdmRIUnZiU0lzSW5aaGJIVmxJam9pTW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0ZEc5d0lpd2lkbUZzZFdVaU9pSTBjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MWliM1IwYjIwaUxDSjJZV3gxWlNJNklqUndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxXeGxablFpTENKMllXeDFaU0k2SWpFd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxeWFXZG9kQ0lzSW5aaGJIVmxJam9pTVRCd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0ZEc5d0xXeGxablF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUl5TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTEwYjNBdGNtbG5hSFF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUl5TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTFpYjNSMGIyMHRiR1ZtZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWpJd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFdKdmRIUnZiUzF5YVdkb2RDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqSXdjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa1JwZGlCZlgzTjNMVzF2WDNKb2JIRm9kRE5zZVdabGRTMHhaV3R2YmlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUptYkdWNEluMHNleUp3Y205d1pYSjBlU0k2SW1ac1pYZ3RaR2x5WldOMGFXOXVJaXdpZG1Gc2RXVWlPaUpqYjJ4MWJXNGlmU3g3SW5CeWIzQmxjblI1SWpvaVlXeHBaMjR0YVhSbGJYTWlMQ0oyWVd4MVpTSTZJbU5sYm5SbGNpSjlMSHNpY0hKdmNHVnlkSGtpT2lKcWRYTjBhV1o1TFdOdmJuUmxiblFpTENKMllXeDFaU0k2SW1ac1pYZ3RjM1JoY25RaWZTeDdJbkJ5YjNCbGNuUjVJam9pWjJGd0lpd2lkbUZzZFdVaU9pSTRjSGdpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxXSnZkSFJ2YlNJc0luWmhiSFZsSWpvaU1USndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lSR2wySUY5ZmMzY3RNMkZ2YWpaNVpTMXVZWGhtWlcxcllqa3RiaTFxSWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVJwYzNCc1lYa2lMQ0oyWVd4MVpTSTZJbVpzWlhnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWm14bGVDMWthWEpsWTNScGIyNGlMQ0oyWVd4MVpTSTZJbU52YkhWdGJpSjlMSHNpY0hKdmNHVnlkSGtpT2lKaGJHbG5iaTFwZEdWdGN5SXNJblpoYkhWbElqb2lZMlZ1ZEdWeUluMHNleUp3Y205d1pYSjBlU0k2SW1wMWMzUnBabmt0WTI5dWRHVnVkQ0lzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltSmhZMnRuY205MWJtUXRZMjlzYjNJaUxDSjJZV3gxWlNJNkluSm5ZbUVvTmpnc0lERXlPU3dnTWpVekxDQXdMakE0S1NKOUxIc2ljSEp2Y0dWeWRIa2lPaUozYVdSMGFDSXNJblpoYkhWbElqb2lPVE53ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpvWldsbmFIUWlMQ0oyWVd4MVpTSTZJamt6Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMWFJ2Y0Mxc1pXWjBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lPVGs1Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMWFJ2Y0MxeWFXZG9kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJams1T1hCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTFpYjNSMGIyMHRiR1ZtZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWprNU9YQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxaWIzUjBiMjB0Y21sbmFIUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSTVPVGx3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pU1cxaFoyVkNZWE5sSUY5ZmMzY3RkR042ZUc5eGFuaHRaSFowYVRaNWVIZ3pOelZtSWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pYVcxbklpd2ljM1ZpVkhsd1pTSTZJbWx0WnlJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzSmpJaXdpYzNKaklqb2lhSFIwY0hNNkx5OXpkR0YwYVdNdWMzVndaWEozWVd4c1lYTnpaWFJ6TG1OdmJTOU1UV0pEU2sxTk5HdG5URUl4V25rM2VWZDZTVWdpTENKemNtTlRaWFFpT2x0ZGZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaU5UaHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm9aV2xuYUhRaUxDSjJZV3gxWlNJNklqTTNjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9uc2lkMmxrZEdnaU9pSXhNREFsSWl3aWFHVnBaMmgwSWpvaVlYVjBieUo5ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkxbFlqaHhiR2N3WVdKeWJtVnJiMjVmYkd4ckxYRWlMQ0oyWVd4MVpTSTZJbGRoZEdWeWJXRnlheUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqbHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRJd0pTSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0ZEc5d0lpd2lkbUZzZFdVaU9pSTFjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa1JwZGlCZlgzTjNMV3h4TlY5MllXZGxkV1JoYm0xMGMyWTFkakYyWnlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUptYkdWNEluMHNleUp3Y205d1pYSjBlU0k2SW1ac1pYZ3RaR2x5WldOMGFXOXVJaXdpZG1Gc2RXVWlPaUpqYjJ4MWJXNGlmU3g3SW5CeWIzQmxjblI1SWpvaVlXeHBaMjR0YVhSbGJYTWlMQ0oyWVd4MVpTSTZJbU5sYm5SbGNpSjlMSHNpY0hKdmNHVnlkSGtpT2lKcWRYTjBhV1o1TFdOdmJuUmxiblFpTENKMllXeDFaU0k2SW1ObGJuUmxjaUo5TEhzaWNISnZjR1Z5ZEhraU9pSmlZV05yWjNKdmRXNWtMV052Ykc5eUlpd2lkbUZzZFdVaU9pSnlaMkpoS0RFM01Dd2dPRGdzSURJek9Dd2dNQzR3T0NraWZTeDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJamt6Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUk1TTNCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTEwYjNBdGJHVm1kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJams1T1hCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTEwYjNBdGNtbG5hSFF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUk1T1Rsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0WW05MGRHOXRMV3hsWm5RdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJNU9UbHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdFltOTBkRzl0TFhKcFoyaDBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lPVGs1Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWtsdFlXZGxRbUZ6WlNCZlgzTjNMVEZ5YlhBMGEzUnhhbVZpT1dWbVluVnZZbWd4YVNJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1sdFp5SXNJbk4xWWxSNWNHVWlPaUpwYldjaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTnlZeUlzSW5OeVl5STZJbWgwZEhCek9pOHZjM1JoZEdsakxuTjFjR1Z5ZDJGc2JHRnpjMlYwY3k1amIyMHZVWGd4ZDNWNGQyRnViRWM1TW1rd1JIVkJZbUZhSWl3aWMzSmpVMlYwSWpwYlhYMTlMSHNpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqUTRjSGdpZlN4N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSTBPSEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdJbmRwWkhSb0lqb2lNVEF3SlNJc0ltaGxhV2RvZENJNkltRjFkRzhpZlgwc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdFpXZzVjSHBzYlRGa2RYbDJaRzQzTFhnelluUnFJaXdpZG1Gc2RXVWlPaUp0WVhnZ2JHVnVaM1JvUEdKeVBuQmxjaUIyYVdSbGJ5SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVEl3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRkRzl3SWl3aWRtRnNkV1VpT2lJMWNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrUnBkaUJmWDNOM0xXRnBlbk01Y0RGMWVucDJNWEo0WDNGa2IyYzNPQ0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSm1iR1Y0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVpzWlhndFpHbHlaV04wYVc5dUlpd2lkbUZzZFdVaU9pSmpiMngxYlc0aWZTeDdJbkJ5YjNCbGNuUjVJam9pWVd4cFoyNHRhWFJsYlhNaUxDSjJZV3gxWlNJNkltTmxiblJsY2lKOUxIc2ljSEp2Y0dWeWRIa2lPaUpxZFhOMGFXWjVMV052Ym5SbGJuUWlMQ0oyWVd4MVpTSTZJbU5sYm5SbGNpSjlMSHNpY0hKdmNHVnlkSGtpT2lKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5SWl3aWRtRnNkV1VpT2lKeVoySmhLRFk0TENBeE1qa3NJREkxTXl3Z01DNHdPQ2tpZlN4N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqa3pjSGdpZlN4N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSTVNM0I0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMTBiM0F0YkdWbWRDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqazVPWEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMTBiM0F0Y21sbmFIUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSTVPVGx3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRZbTkwZEc5dExXeGxablF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUk1T1Rsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0WW05MGRHOXRMWEpwWjJoMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU9UazVjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa2x0WVdkbFFtRnpaU0JmWDNOM0xXdzVabTV5ZW1Sc09XWjRZM0JvZDJsMmFHc3hZaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbWx0WnlJc0luTjFZbFI1Y0dVaU9pSnBiV2NpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OeVl5SXNJbk55WXlJNkltaDBkSEJ6T2k4dmMzUmhkR2xqTG5OMWNHVnlkMkZzYkdGemMyVjBjeTVqYjIwdmIyVmhNMWxCZVdaWlNtRXdORmR2Y0RCQmRYTndJaXdpYzNKalUyVjBJanBiWFgxOUxIc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaWQybGtkR2dpTENKMllXeDFaU0k2SWpRNGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJME9IQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN0luZHBaSFJvSWpvaU1UQXdKU0lzSW1obGFXZG9kQ0k2SW1GMWRHOGlmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0Y0Y4MVpXaHJiMlJxYzJGM05YTjZabmRxYUdGNUlpd2lkbUZzZFdVaU9pSk1hVzFwZEdWa1BHSnlQak1nVTJOeWFYQjBjeUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqbHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0ZEc5d0lpd2lkbUZzZFdVaU9pSTFjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa1JwZGlCZlgzTjNMWGQ2WmpkMmREQjROWEYzYlY4NGMzVnJNbWQ0YnlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUptYkdWNEluMHNleUp3Y205d1pYSjBlU0k2SW1ac1pYZ3RaR2x5WldOMGFXOXVJaXdpZG1Gc2RXVWlPaUpqYjJ4MWJXNGlmU3g3SW5CeWIzQmxjblI1SWpvaVoyRndJaXdpZG1Gc2RXVWlPaUl4TW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW5SbGVIUXRZV3hwWjI0aUxDSjJZV3gxWlNJNklteGxablFpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa1JwZGlCZlgzTjNMV1ZtZG5Wb1lqZDVlR2x5YlMxdWNYZHVhMmgxY1NJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUptYkdWNEluMHNleUp3Y205d1pYSjBlU0k2SW1Gc2FXZHVMV2wwWlcxeklpd2lkbUZzZFdVaU9pSnpkR0Z5ZENKOUxIc2ljSEp2Y0dWeWRIa2lPaUpxZFhOMGFXWjVMV052Ym5SbGJuUWlMQ0oyWVd4MVpTSTZJbVpzWlhndGMzUmhjblFpZlN4N0luQnliM0JsY25SNUlqb2laMkZ3SWl3aWRtRnNkV1VpT2lJMGNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrbHRZV2RsUW1GelpTQmZYM04zTFdNemVtcGxPWEpyYjJWcUxXczVaV1F6YTJWNWRTSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltbHRaeUlzSW5OMVlsUjVjR1VpT2lKcGJXY2lMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk55WXlJc0luTnlZeUk2SW1oMGRIQnpPaTh2YzNSaGRHbGpMbk4xY0dWeWQyRnNiR0Z6YzJWMGN5NWpiMjB2Y2xOUVlqSkZjVGxTVTBkWFFuZFRiQzAzTkRsdElpd2ljM0pqVTJWMElqcGJYWDE5TEhzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJakV5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTEwYjNBaUxDSjJZV3gxWlNJNklqSndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmV5SjNhV1IwYUNJNklqRXdNQ1VpTENKb1pXbG5hSFFpT2lKaGRYUnZJbjE5TEhzaWEyVjVJam9pVkdWNGRDQmZYM04zTFdsMWVqZGhhRzUzZFdwMWJXUndaelZrY1c1dmVTSXNJblpoYkhWbElqb2lWR1ZzWlhCeWIyMXdkR1Z5SUZkbFlpQW1JRTF2WW1sc1pTSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHVjBkR1Z5TFhOd1lXTnBibWNpTENKMllXeDFaU0k2SWkwd0xqVndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVJHbDJJRjlmYzNjdGRUQmxMV1J4YTJ0dE5HazJlSGR1WDNZeFgyRjNJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltUnBjM0JzWVhraUxDSjJZV3gxWlNJNkltWnNaWGdpZlN4N0luQnliM0JsY25SNUlqb2lZV3hwWjI0dGFYUmxiWE1pTENKMllXeDFaU0k2SW5OMFlYSjBJbjBzZXlKd2NtOXdaWEowZVNJNkltcDFjM1JwWm5rdFkyOXVkR1Z1ZENJc0luWmhiSFZsSWpvaVpteGxlQzF6ZEdGeWRDSjlMSHNpY0hKdmNHVnlkSGtpT2lKbllYQWlMQ0oyWVd4MVpTSTZJalJ3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pU1cxaFoyVkNZWE5sSUY5ZmMzY3RhWE5yTXpGMlpEWmhiek0wYTNwc1ltRTJZVFJpSWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pYVcxbklpd2ljM1ZpVkhsd1pTSTZJbWx0WnlJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzSmpJaXdpYzNKaklqb2lhSFIwY0hNNkx5OXpkR0YwYVdNdWMzVndaWEozWVd4c1lYTnpaWFJ6TG1OdmJTOXlVMUJpTWtWeE9WSlRSMWRDZDFOc0xUYzBPVzBpTENKemNtTlRaWFFpT2x0ZGZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxYUnZjQ0lzSW5aaGJIVmxJam9pTW5CNEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3SW5kcFpIUm9Jam9pTVRBd0pTSXNJbWhsYVdkb2RDSTZJbUYxZEc4aWZYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RkV3QyTlhrd2JUSjZlV3hoZEhSeGNXdHFjbVo0SWl3aWRtRnNkV1VpT2lKWGIzSmtWSEpwYlNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakV5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdWMGRHVnlMWE53WVdOcGJtY2lMQ0oyWVd4MVpTSTZJaTB3TGpWd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVFF3SlNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pUkdsMklGOWZjM2N0WlhGbWMzTjFZMlpsWm5weGVITTNlbkJwY0dGd0lpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1ScGMzQnNZWGtpTENKMllXeDFaU0k2SW1ac1pYZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVlXeHBaMjR0YVhSbGJYTWlMQ0oyWVd4MVpTSTZJbk4wWVhKMEluMHNleUp3Y205d1pYSjBlU0k2SW1wMWMzUnBabmt0WTI5dWRHVnVkQ0lzSW5aaGJIVmxJam9pWm14bGVDMXpkR0Z5ZENKOUxIc2ljSEp2Y0dWeWRIa2lPaUpuWVhBaUxDSjJZV3gxWlNJNklqUndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lTVzFoWjJWQ1lYTmxJRjlmYzNjdFpXeDNhbWgxZEhabk5XbDVhWEZrZDJNMGRucGlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2lhVzFuSWl3aWMzVmlWSGx3WlNJNkltbHRaeUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNKaklpd2ljM0pqSWpvaWFIUjBjSE02THk5emRHRjBhV011YzNWd1pYSjNZV3hzWVhOelpYUnpMbU52YlM5eVUxQmlNa1Z4T1ZKVFIxZENkMU5zTFRjME9XMGlMQ0p6Y21OVFpYUWlPbHRkZlgwc2V5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKM2FXUjBhQ0lzSW5aaGJIVmxJam9pTVRKd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJXRnlaMmx1TFhSdmNDSXNJblpoYkhWbElqb2lNbkI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdJbmRwWkhSb0lqb2lNVEF3SlNJc0ltaGxhV2RvZENJNkltRjFkRzhpZlgwc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdGFIcDVPSFJ1Y0d4M1kycHhkREV3ZVhWd2EyUjVJaXdpZG1Gc2RXVWlPaUpUYUdGeVpTQnZianhpY2o1VGIyTnBZV3dpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhNbkI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhsZEhSbGNpMXpjR0ZqYVc1bklpd2lkbUZzZFdVaU9pSXRNQzQxY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRTBNQ1VpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa1JwZGlCZlgzTjNMV3QyYlRaZmFIaGlMWHB2T0d4ZmVsOWpiR3h5T0NJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUptYkdWNEluMHNleUp3Y205d1pYSjBlU0k2SW1Gc2FXZHVMV2wwWlcxeklpd2lkbUZzZFdVaU9pSnpkR0Z5ZENKOUxIc2ljSEp2Y0dWeWRIa2lPaUpxZFhOMGFXWjVMV052Ym5SbGJuUWlMQ0oyWVd4MVpTSTZJbVpzWlhndGMzUmhjblFpZlN4N0luQnliM0JsY25SNUlqb2laMkZ3SWl3aWRtRnNkV1VpT2lJMGNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrbHRZV2RsUW1GelpTQmZYM04zTFdFd2R6azVjSHB6YTJZeWVYUnlabUo0ZDNkeGNTSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltbHRaeUlzSW5OMVlsUjVjR1VpT2lKcGJXY2lMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk55WXlJc0luTnlZeUk2SW1oMGRIQnpPaTh2YzNSaGRHbGpMbk4xY0dWeWQyRnNiR0Z6YzJWMGN5NWpiMjB2Y2xOUVlqSkZjVGxTVTBkWFFuZFRiQzAzTkRsdElpd2ljM0pqVTJWMElqcGJYWDE5TEhzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJakV5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTEwYjNBaUxDSjJZV3gxWlNJNklqSndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmV5SjNhV1IwYUNJNklqRXdNQ1VpTENKb1pXbG5hSFFpT2lKaGRYUnZJbjE5TEhzaWEyVjVJam9pVkdWNGRDQmZYM04zTFdac2N6aDFhWFJ2TjI4MWJIQnBibkZ2WVhSMWFTSXNJblpoYkhWbElqb2lUWGtnVm1sa1pXODhZbkkrVUdGblpTSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHVjBkR1Z5TFhOd1lXTnBibWNpTENKMllXeDFaU0k2SWkwd0xqVndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVJHbDJJRjlmYzNjdFlXVnRkWFZsWldjemVITnljV2hmYjNabFoyUjBJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltUnBjM0JzWVhraUxDSjJZV3gxWlNJNkltWnNaWGdpZlN4N0luQnliM0JsY25SNUlqb2lZV3hwWjI0dGFYUmxiWE1pTENKMllXeDFaU0k2SW5OMFlYSjBJbjBzZXlKd2NtOXdaWEowZVNJNkltcDFjM1JwWm5rdFkyOXVkR1Z1ZENJc0luWmhiSFZsSWpvaVpteGxlQzF6ZEdGeWRDSjlMSHNpY0hKdmNHVnlkSGtpT2lKbllYQWlMQ0oyWVd4MVpTSTZJalJ3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pU1cxaFoyVkNZWE5sSUY5ZmMzY3RhVEIxZUhwMExXZzFNSFo2ZWpRMkxUUjFZMlV3SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pYVcxbklpd2ljM1ZpVkhsd1pTSTZJbWx0WnlJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzSmpJaXdpYzNKaklqb2lhSFIwY0hNNkx5OXpkR0YwYVdNdWMzVndaWEozWVd4c1lYTnpaWFJ6TG1OdmJTOTFkREZMY3psRlYyVXRaa05UTjAxaWVIaGhUV1VpTENKemNtTlRaWFFpT2x0ZGZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxYUnZjQ0lzSW5aaGJIVmxJam9pTW5CNEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3SW5kcFpIUm9Jam9pTVRBd0pTSXNJbWhsYVdkb2RDSTZJbUYxZEc4aWZYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RlVzA1TUhwc2RXNWplVE4yZDNsMmFYUXdhekZxSWl3aWRtRnNkV1VpT2lKV2FXUmxienhpY2o1QmJtRnNlWFJwWTNNOFluSStSR0Z6YUdKdllYSmtJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNaWFIwWlhJdGMzQmhZMmx1WnlJc0luWmhiSFZsSWpvaUxUQXVOWEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE5EQWxJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MXNlR05pZFdSa1oydDRNblUwZEdGcGIzZHRlSFlpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lkR1Y0ZEMxaGJHbG5iaUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltSmhZMnRuY205MWJtUXRZMjlzYjNJaUxDSjJZV3gxWlNJNkluSm5ZbUVvTWpVMUxDQXlOVFVzSURJMU5Td2dNU2tpZlN4N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqRXdNQ1VpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MTBiM0FpTENKMllXeDFaU0k2SWpFMmNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpJemNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1Wnkxc1pXWjBJaXdpZG1Gc2RXVWlPaUk0Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTF5YVdkb2RDSXNJblpoYkhWbElqb2lPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMTBiM0F0YkdWbWRDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxYUnZjQzF5YVdkb2RDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxXSnZkSFJ2YlMxc1pXWjBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lNakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRZbTkwZEc5dExYSnBaMmgwTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pTWpCd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xYZG5OR0l3T1hCaWJXRjNjMjl5ZG5SaWQyNWxjaUlzSW5aaGJIVmxJam9pUVVrZ1VISnZJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmpiMnh2Y2lJc0luWmhiSFZsSWpvaWFITnNLRE15TUN3Z05qY2xMQ0ExTnlVcEluMHNleUp3Y205d1pYSjBlU0k2SW1admJuUXRkMlZwWjJoMElpd2lkbUZzZFdVaU9pSTNNREFpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFMWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltRmphMmR5YjNWdVpDMWpiMnh2Y2lJc0luWmhiSFZsSWpvaWNtZGlZU2d5TlRVc0lEYzNMQ0E1TVN3Z01DNHdPQ2tpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxXSnZkSFJ2YlNJc0luWmhiSFZsSWpvaU1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkluQmhaR1JwYm1jdGRHOXdJaXdpZG1Gc2RXVWlPaUkwY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJalJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MV3hsWm5RaUxDSjJZV3gxWlNJNklqRXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MXlhV2RvZENJc0luWmhiSFZsSWpvaU1UQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdGRHOXdMV3hsWm5RdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJeU1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxMGIzQXRjbWxuYUhRdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJeU1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxaWIzUjBiMjB0YkdWbWRDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxXSnZkSFJ2YlMxeWFXZG9kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJakl3Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWtScGRpQmZYM04zTFdsamJqRjNZbTlqYzNaaE5UZGhabVl6WjNkM2FDSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKbWJHVjRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnNaWGd0WkdseVpXTjBhVzl1SWl3aWRtRnNkV1VpT2lKamIyeDFiVzRpZlN4N0luQnliM0JsY25SNUlqb2lZV3hwWjI0dGFYUmxiWE1pTENKMllXeDFaU0k2SW1ObGJuUmxjaUo5TEhzaWNISnZjR1Z5ZEhraU9pSnFkWE4wYVdaNUxXTnZiblJsYm5RaUxDSjJZV3gxWlNJNkltWnNaWGd0YzNSaGNuUWlmU3g3SW5CeWIzQmxjblI1SWpvaVoyRndJaXdpZG1Gc2RXVWlPaUk0Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNVEp3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pUkdsMklGOWZjM2N0YjJKMWFuaGlhV280WmpSNkxYcG1kR0poWVdvdElpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1ScGMzQnNZWGtpTENKMllXeDFaU0k2SW1ac1pYZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVpteGxlQzFrYVhKbFkzUnBiMjRpTENKMllXeDFaU0k2SW1OdmJIVnRiaUo5TEhzaWNISnZjR1Z5ZEhraU9pSmhiR2xuYmkxcGRHVnRjeUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltcDFjM1JwWm5rdFkyOXVkR1Z1ZENJc0luWmhiSFZsSWpvaVkyVnVkR1Z5SW4wc2V5SndjbTl3WlhKMGVTSTZJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSWlMQ0oyWVd4MVpTSTZJbkpuWW1Fb01qVTFMQ0EzTnl3Z09URXNJREF1TURncEluMHNleUp3Y205d1pYSjBlU0k2SW5kcFpIUm9JaXdpZG1Gc2RXVWlPaUk1TTNCNEluMHNleUp3Y205d1pYSjBlU0k2SW1obGFXZG9kQ0lzSW5aaGJIVmxJam9pT1ROd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0ZEc5d0xXeGxablF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUk1T1Rsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0ZEc5d0xYSnBaMmgwTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pT1RrNWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFdKdmRIUnZiUzFzWldaMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU9UazVjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxXSnZkSFJ2YlMxeWFXZG9kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJams1T1hCNEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3Zlgwc2V5SnJaWGtpT2lKSmJXRm5aVUpoYzJVZ1gxOXpkeTAxYm10NVltZG9hSFJ3YUdaM2RXVnBabXA0Y2pVaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKcGJXY2lMQ0p6ZFdKVWVYQmxJam9pYVcxbklpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpjbU1pTENKemNtTWlPaUpvZEhSd2N6b3ZMM04wWVhScFl5NXpkWEJsY25kaGJHeGhjM05sZEhNdVkyOXRMMlExTXpOeFpGUndWa3c1VnpoVVpqWllWM0Y2ZGlJc0luTnlZMU5sZENJNlcxMTlmU3g3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbmRwWkhSb0lpd2lkbUZzZFdVaU9pSTJOSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbWhsYVdkb2RDSXNJblpoYkhWbElqb2lOalJ3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZleUozYVdSMGFDSTZJakV3TUNVaUxDSm9aV2xuYUhRaU9pSmhkWFJ2SW4xOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXVjRhbkpwWXpKa2JYbHhjWGR0YjJ3emFISm5jaUlzSW5aaGJIVmxJam9pVjJGMFpYSnRZWEpySWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lPWEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE1qQWxJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxMGIzQWlMQ0oyWVd4MVpTSTZJalZ3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pUkdsMklGOWZjM2N0ZG0xdVpYbHlkV0pxYlhKbFlXWnJjM2hvWlRKb0lpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1ScGMzQnNZWGtpTENKMllXeDFaU0k2SW1ac1pYZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVpteGxlQzFrYVhKbFkzUnBiMjRpTENKMllXeDFaU0k2SW1OdmJIVnRiaUo5TEhzaWNISnZjR1Z5ZEhraU9pSmhiR2xuYmkxcGRHVnRjeUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltcDFjM1JwWm5rdFkyOXVkR1Z1ZENJc0luWmhiSFZsSWpvaVkyVnVkR1Z5SW4wc2V5SndjbTl3WlhKMGVTSTZJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSWlMQ0oyWVd4MVpTSTZJbkpuWW1Fb01UY3dMQ0E0T0N3Z01qTTRMQ0F3TGpBNEtTSjlMSHNpY0hKdmNHVnlkSGtpT2lKM2FXUjBhQ0lzSW5aaGJIVmxJam9pT1ROd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKb1pXbG5hSFFpTENKMllXeDFaU0k2SWpremNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFhSdmNDMXNaV1owTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pT1RrNWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFhSdmNDMXlhV2RvZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWprNU9YQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxaWIzUjBiMjB0YkdWbWRDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqazVPWEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMWliM1IwYjIwdGNtbG5hSFF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUk1T1Rsd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVNXMWhaMlZDWVhObElGOWZjM2N0YjJGMGMzVTJORzVtZEdWNFlXeDBZWE51Ylc1cklpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaWFXMW5JaXdpYzNWaVZIbHdaU0k2SW1sdFp5SXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM0pqSWl3aWMzSmpJam9pYUhSMGNITTZMeTl6ZEdGMGFXTXVjM1Z3WlhKM1lXeHNZWE56WlhSekxtTnZiUzl0ZWsweU5GcEZWVXhWWXpoU1kxbzRiM0ZGTUZvaUxDSnpjbU5UWlhRaU9sdGRmWDBzZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUozYVdSMGFDSXNJblpoYkhWbElqb2lORGh3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpvWldsbmFIUWlMQ0oyWVd4MVpTSTZJalE0Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnNpZDJsa2RHZ2lPaUl4TURBbElpd2lhR1ZwWjJoMElqb2lZWFYwYnlKOUxDSnlaWFpwYzJsdmJpSTZNVGN3TlRVeE56UTBOVGN3Tm4wc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdGFtSnJZVEJ1Y25Cb1puQnVaV3MyTm5Kb2VYSjBJaXdpZG1Gc2RXVWlPaUp0WVhnZ2JHVnVaM1JvUEdKeVBuQmxjaUIyYVdSbGJ5SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVEl3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRkRzl3SWl3aWRtRnNkV1VpT2lJMWNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrUnBkaUJmWDNOM0xUQnVkV1oxYzJSa2FsOTZlbnAyZDJadE1qWnFiQ0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSm1iR1Y0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVpzWlhndFpHbHlaV04wYVc5dUlpd2lkbUZzZFdVaU9pSmpiMngxYlc0aWZTeDdJbkJ5YjNCbGNuUjVJam9pWVd4cFoyNHRhWFJsYlhNaUxDSjJZV3gxWlNJNkltTmxiblJsY2lKOUxIc2ljSEp2Y0dWeWRIa2lPaUpxZFhOMGFXWjVMV052Ym5SbGJuUWlMQ0oyWVd4MVpTSTZJbU5sYm5SbGNpSjlMSHNpY0hKdmNHVnlkSGtpT2lKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5SWl3aWRtRnNkV1VpT2lKeVoySmhLRFk0TENBeE1qa3NJREkxTXl3Z01DNHdPQ2tpZlN4N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqa3pjSGdpZlN4N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSTVNM0I0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMTBiM0F0YkdWbWRDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqazVPWEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMTBiM0F0Y21sbmFIUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSTVPVGx3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRZbTkwZEc5dExXeGxablF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUk1T1Rsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0WW05MGRHOXRMWEpwWjJoMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU9UazVjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa2x0WVdkbFFtRnpaU0JmWDNOM0xXcHRlVGRyWjJVNWVtMXdPV3QzTURKc2NETm5MU0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbWx0WnlJc0luTjFZbFI1Y0dVaU9pSnBiV2NpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaU5EaHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm9aV2xuYUhRaUxDSjJZV3gxWlNJNklqUTRjSGdpZlYxOWZTeDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNKaklpd2ljM0pqSWpvaWFIUjBjSE02THk5emRHRjBhV011YzNWd1pYSjNZV3hzWVhOelpYUnpMbU52YlM5cVRHWnJja2MzZVZOZlZWcEZURU0wTlZCdlIzY2lMQ0p6Y21OVFpYUWlPbHRkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN0luZHBaSFJvSWpvaU1UQXdKU0lzSW1obGFXZG9kQ0k2SW1GMWRHOGlmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0WTJwNWJIazBlVEF3YTNCcGRXWm9lVEp5TFhkNklpd2lkbUZzZFdVaU9pSlZibXhwYldsMFpXUWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJNWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUwTUNVaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMWFJ2Y0NJc0luWmhiSFZsSWpvaU5YQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MXRZVGR3WW01NmVISndibmxuTTNodVluZHBZaTBpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2laR2x6Y0d4aGVTSXNJblpoYkhWbElqb2labXhsZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYkdWNExXUnBjbVZqZEdsdmJpSXNJblpoYkhWbElqb2lZMjlzZFcxdUluMHNleUp3Y205d1pYSjBlU0k2SW1kaGNDSXNJblpoYkhWbElqb2lNVEp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUowWlhoMExXRnNhV2R1SWl3aWRtRnNkV1VpT2lKc1pXWjBJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MTFaRFZ3YjNkcFltaGhZalJzTjJGb2VHSm5hV3dpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2laR2x6Y0d4aGVTSXNJblpoYkhWbElqb2labXhsZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpoYkdsbmJpMXBkR1Z0Y3lJc0luWmhiSFZsSWpvaWMzUmhjblFpZlN4N0luQnliM0JsY25SNUlqb2lhblZ6ZEdsbWVTMWpiMjUwWlc1MElpd2lkbUZzZFdVaU9pSm1iR1Y0TFhOMFlYSjBJbjBzZXlKd2NtOXdaWEowZVNJNkltZGhjQ0lzSW5aaGJIVmxJam9pTkhCNEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3Zlgwc2V5SnJaWGtpT2lKSmJXRm5aVUpoYzJVZ1gxOXpkeTF6Y0d4eWVXRnhNblJvYlhsbGRHeGxhM2xpWmpnaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKcGJXY2lMQ0p6ZFdKVWVYQmxJam9pYVcxbklpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpjbU1pTENKemNtTWlPaUpvZEhSd2N6b3ZMM04wWVhScFl5NXpkWEJsY25kaGJHeGhjM05sZEhNdVkyOXRMM1YwTVV0ek9VVlhaUzFtUTFNM1RXSjRlR0ZOWlNJc0luTnlZMU5sZENJNlcxMTlmU3g3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbmRwWkhSb0lpd2lkbUZzZFdVaU9pSXhNbkI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbWhsYVdkb2RDSXNJblpoYkhWbElqb2lNVEp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRkRzl3SWl3aWRtRnNkV1VpT2lJeWNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT25zaWQybGtkR2dpT2lJeE1EQWxJaXdpYUdWcFoyaDBJam9pWVhWMGJ5SjlmU3g3SW10bGVTSTZJbFJsZUhRZ1gxOXpkeTE0YUdsa00yeDVkR1JzWlhKMGRYYzNkSEF3ZVdRaUxDSjJZV3gxWlNJNklrRnNiQ0JHWldGMGRYSmxjeUJwYmlCVGRHRnlkR1Z5SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVEp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzWlhSMFpYSXRjM0JoWTJsdVp5SXNJblpoYkhWbElqb2lMVEF1TlhCNEluMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGQyVnBaMmgwSWl3aWRtRnNkV1VpT2lJM01EQWlmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrUnBkaUJmWDNOM0xUUnBjSEV5Y21zd2IzTnhkbVJuYkdGZlgzbHJlaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSm1iR1Y0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUZzYVdkdUxXbDBaVzF6SWl3aWRtRnNkV1VpT2lKemRHRnlkQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnFkWE4wYVdaNUxXTnZiblJsYm5RaUxDSjJZV3gxWlNJNkltWnNaWGd0YzNSaGNuUWlmU3g3SW5CeWIzQmxjblI1SWpvaVoyRndJaXdpZG1Gc2RXVWlPaUkwY0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWtsdFlXZGxRbUZ6WlNCZlgzTjNMWHAzY0hGM2VHRTJNSGh3TWkwMmJtZG5kV3AzYlNJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1sdFp5SXNJbk4xWWxSNWNHVWlPaUpwYldjaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTnlZeUlzSW5OeVl5STZJbWgwZEhCek9pOHZjM1JoZEdsakxuTjFjR1Z5ZDJGc2JHRnpjMlYwY3k1amIyMHZkWFF4UzNNNVJWZGxMV1pEVXpkTlluaDRZVTFsSWl3aWMzSmpVMlYwSWpwYlhYMTlMSHNpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhNbkI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbTFoY21kcGJpMTBiM0FpTENKMllXeDFaU0k2SWpKd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZXlKM2FXUjBhQ0k2SWpFd01DVWlMQ0pvWldsbmFIUWlPaUpoZFhSdkluMTlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMUzFuYlhodU9XMWhORFJyYVhWNmJ6VjNlSEZ4WVNJc0luWmhiSFZsSWpvaU5Ua2diV2x1SUhacFpHVnZYRzV0WVhnZ2JHVnVaM1JvSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVEp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzWlhSMFpYSXRjM0JoWTJsdVp5SXNJblpoYkhWbElqb2lMVEF1TlhCNEluMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpFYVhZZ1gxOXpkeTEwYW14cU0yRmpkbDkxTm5ZdGEzTjNlakZsZEhRaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWkdsemNHeGhlU0lzSW5aaGJIVmxJam9pWm14bGVDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaGJHbG5iaTFwZEdWdGN5SXNJblpoYkhWbElqb2ljM1JoY25RaWZTeDdJbkJ5YjNCbGNuUjVJam9pYW5WemRHbG1lUzFqYjI1MFpXNTBJaXdpZG1Gc2RXVWlPaUptYkdWNExYTjBZWEowSW4wc2V5SndjbTl3WlhKMGVTSTZJbWRoY0NJc0luWmhiSFZsSWpvaU5IQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkpiV0ZuWlVKaGMyVWdYMTl6ZHkxaWNUUmhkMmx4WVdwaGJuTnJObk50WW5nemFXc2lMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSnBiV2NpTENKemRXSlVlWEJsSWpvaWFXMW5JaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6Y21NaUxDSnpjbU1pT2lKb2RIUndjem92TDNOMFlYUnBZeTV6ZFhCbGNuZGhiR3hoYzNObGRITXVZMjl0TDNWME1VdHpPVVZYWlMxbVExTTNUV0o0ZUdGTlpTSXNJbk55WTFObGRDSTZXMTE5ZlN4N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW5kcFpIUm9JaXdpZG1Gc2RXVWlPaUl4TW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW1obGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRKd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0ZEc5d0lpd2lkbUZzZFdVaU9pSXljSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9uc2lkMmxrZEdnaU9pSXhNREFsSWl3aWFHVnBaMmgwSWpvaVlYVjBieUo5ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkwd2VHcGhaRFJuYTJ0NVpXdHpObkZ2YjJaaWQyTWlMQ0oyWVd4MVpTSTZJazV2SUhkaGRHVnliV0Z5YXlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakV5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdWMGRHVnlMWE53WVdOcGJtY2lMQ0oyWVd4MVpTSTZJaTB3TGpWd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVFF3SlNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pUkdsMklGOWZjM2N0ZG1ka2R6VmhZWFpyWldsdll6ZHJiM0kwZVdsbElpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1ScGMzQnNZWGtpTENKMllXeDFaU0k2SW1ac1pYZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVlXeHBaMjR0YVhSbGJYTWlMQ0oyWVd4MVpTSTZJbk4wWVhKMEluMHNleUp3Y205d1pYSjBlU0k2SW1wMWMzUnBabmt0WTI5dWRHVnVkQ0lzSW5aaGJIVmxJam9pWm14bGVDMXpkR0Z5ZENKOUxIc2ljSEp2Y0dWeWRIa2lPaUpuWVhBaUxDSjJZV3gxWlNJNklqUndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lTVzFoWjJWQ1lYTmxJRjlmYzNjdGRtTTVZbTFsZFhSMVlYTXhiMlpwYTNBNWRubHNJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2lhVzFuSWl3aWMzVmlWSGx3WlNJNkltbHRaeUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNKaklpd2ljM0pqSWpvaWFIUjBjSE02THk5emRHRjBhV011YzNWd1pYSjNZV3hzWVhOelpYUnpMbU52YlM5MWRERkxjemxGVjJVdFprTlROMDFpZUhoaFRXVWlMQ0p6Y21OVFpYUWlPbHRkZlgwc2V5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKM2FXUjBhQ0lzSW5aaGJIVmxJam9pTVRKd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJXRnlaMmx1TFhSdmNDSXNJblpoYkhWbElqb2lNbkI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdJbmRwWkhSb0lqb2lNVEF3SlNJc0ltaGxhV2RvZENJNkltRjFkRzhpZlgwc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdGVIY3RhV3QzWVhKallXZzJhM2gyWVY4elltcHlJaXdpZG1Gc2RXVWlPaUpXYVdSbGJ6eGljajVCYm1Gc2VYUnBZM004WW5JK1JHRnphR0p2WVhKa0lpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVRKd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc1pYUjBaWEl0YzNCaFkybHVaeUlzSW5aaGJIVmxJam9pTFRBdU5YQjRJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TkRBbEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3Zlgwc2V5SnJaWGtpT2lKRWFYWWdYMTl6ZHkxcGNHSm1aMmw0TW14Nk1XTjFlWFZ3YUc1NmVIb2lMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaVpteGxlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmhiR2xuYmkxcGRHVnRjeUlzSW5aaGJIVmxJam9pYzNSaGNuUWlmU3g3SW5CeWIzQmxjblI1SWpvaWFuVnpkR2xtZVMxamIyNTBaVzUwSWl3aWRtRnNkV1VpT2lKbWJHVjRMWE4wWVhKMEluMHNleUp3Y205d1pYSjBlU0k2SW1kaGNDSXNJblpoYkhWbElqb2lOSEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpKYldGblpVSmhjMlVnWDE5emR5MXZhekp4YnpaM2FXRjJkalZtYm5OaGJtZDNlWGNpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUpwYldjaUxDSnpkV0pVZVhCbElqb2lhVzFuSWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemNtTWlMQ0p6Y21NaU9pSm9kSFJ3Y3pvdkwzTjBZWFJwWXk1emRYQmxjbmRoYkd4aGMzTmxkSE11WTI5dEwzVjBNVXR6T1VWWFpTMW1RMU0zVFdKNGVHRk5aU0lzSW5OeVkxTmxkQ0k2VzExOWZTeDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJeE1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dGRHOXdJaXdpZG1Gc2RXVWlPaUl5Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnNpZDJsa2RHZ2lPaUl4TURBbElpd2lhR1ZwWjJoMElqb2lZWFYwYnlKOWZTeDdJbXRsZVNJNklsUmxlSFFnWDE5emR5MW1ZMk5wYW5JMGIzZHBjV1Y2YzJ4cGRYZ3plRE1pTENKMllXeDFaU0k2SWxOb1lYSmxaQ0JYYjNKcmMzQmhZMlZ6SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVEp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzWlhSMFpYSXRjM0JoWTJsdVp5SXNJblpoYkhWbElqb2lMVEF1TlhCNEluMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpFYVhZZ1gxOXpkeTF2WTJaa1pucGplRzE2ZFdOeVozaDBjaTF2ZURJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZEdWNGRDMWhiR2xuYmlJc0luWmhiSFZsSWpvaVkyVnVkR1Z5SW4wc2V5SndjbTl3WlhKMGVTSTZJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSWlMQ0oyWVd4MVpTSTZJbWh6YkNneU1UWXNJREV3TUNVc0lEazFKU2tpZlN4N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqRXdNQ1VpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MTBiM0FpTENKMllXeDFaU0k2SWpFMmNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpJemNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1Wnkxc1pXWjBJaXdpZG1Gc2RXVWlPaUk0Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTF5YVdkb2RDSXNJblpoYkhWbElqb2lPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMTBiM0F0YkdWbWRDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxYUnZjQzF5YVdkb2RDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxXSnZkSFJ2YlMxc1pXWjBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lNakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRZbTkwZEc5dExYSnBaMmgwTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pTWpCd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXRTBlVGxyYm5WcWIzQTVjbVpvWjNwaE5uUnBOU0lzSW5aaGJIVmxJam9pVTNSaGNuUmxjaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2lZMjlzYjNJaUxDSjJZV3gxWlNJNkltaHpiQ2d5TURBc0lERXdNQ1VzSURVd0pTa2lmU3g3SW5CeWIzQmxjblI1SWpvaVptOXVkQzEzWldsbmFIUWlMQ0oyWVd4MVpTSTZJamN3TUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1UVndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmlZV05yWjNKdmRXNWtMV052Ykc5eUlpd2lkbUZzZFdVaU9pSnlaMkpoS0RJMU5Td2dNalUxTENBeU5UVXNJREVwSW4wc2V5SndjbTl3WlhKMGVTSTZJbTFoY21kcGJpMWliM1IwYjIwaUxDSjJZV3gxWlNJNklqSndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxYUnZjQ0lzSW5aaGJIVmxJam9pTkhCNEluMHNleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0WW05MGRHOXRJaXdpZG1Gc2RXVWlPaUkwY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTFzWldaMElpd2lkbUZzZFdVaU9pSXhNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RjbWxuYUhRaUxDSjJZV3gxWlNJNklqRXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxYUnZjQzFzWldaMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU1qQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdGRHOXdMWEpwWjJoMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU1qQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdFltOTBkRzl0TFd4bFpuUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSXlNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2Y21SbGNpMWliM1IwYjIwdGNtbG5hSFF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUl5TUhCNEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3Zlgwc2V5SnJaWGtpT2lKRWFYWWdYMTl6ZHkxbFpIbzBhWGhzY0hwbGJsODBjWFpzY1dJeWFIZ2lMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaVpteGxlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iR1Y0TFdScGNtVmpkR2x2YmlJc0luWmhiSFZsSWpvaVkyOXNkVzF1SW4wc2V5SndjbTl3WlhKMGVTSTZJbUZzYVdkdUxXbDBaVzF6SWl3aWRtRnNkV1VpT2lKalpXNTBaWElpZlN4N0luQnliM0JsY25SNUlqb2lhblZ6ZEdsbWVTMWpiMjUwWlc1MElpd2lkbUZzZFdVaU9pSm1iR1Y0TFhOMFlYSjBJbjBzZXlKd2NtOXdaWEowZVNJNkltZGhjQ0lzSW5aaGJIVmxJam9pT0hCNEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJakV5Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWtScGRpQmZYM04zTFhSc2FYVnJZblZ6WkRkME1HVndkWE5yTWprMmRTSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKbWJHVjRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnNaWGd0WkdseVpXTjBhVzl1SWl3aWRtRnNkV1VpT2lKamIyeDFiVzRpZlN4N0luQnliM0JsY25SNUlqb2lZV3hwWjI0dGFYUmxiWE1pTENKMllXeDFaU0k2SW1ObGJuUmxjaUo5TEhzaWNISnZjR1Z5ZEhraU9pSnFkWE4wYVdaNUxXTnZiblJsYm5RaUxDSjJZV3gxWlNJNkltTmxiblJsY2lKOUxIc2ljSEp2Y0dWeWRIa2lPaUppWVdOclozSnZkVzVrTFdOdmJHOXlJaXdpZG1Gc2RXVWlPaUlqUmtaR1JrWkdJbjBzZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJNU0zQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU9UTndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdGRHOXdMV3hsWm5RdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJNU9UbHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdGRHOXdMWEpwWjJoMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU9UazVjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxXSnZkSFJ2YlMxc1pXWjBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lPVGs1Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMV0p2ZEhSdmJTMXlhV2RvZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWprNU9YQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkpiV0ZuWlVKaGMyVWdYMTl6ZHkxNGRuQnRiRzQxYldobmJuSXlhMjk1ZVhCb2VtUWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSnBiV2NpTENKemRXSlVlWEJsSWpvaWFXMW5JaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6Y21NaUxDSnpjbU1pT2lKb2RIUndjem92TDNOMFlYUnBZeTV6ZFhCbGNuZGhiR3hoYzNObGRITXVZMjl0TDIxYVFXaHBTMFV6Y0dSd04yVjJUSFZyTW5kaE9DSXNJbk55WTFObGRDSTZXMTE5ZlN4N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW5kcFpIUm9JaXdpZG1Gc2RXVWlPaUkxT0hCNEluMHNleUp3Y205d1pYSjBlU0k2SW1obGFXZG9kQ0lzSW5aaGJIVmxJam9pTlRCd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZXlKM2FXUjBhQ0k2SWpFd01DVWlMQ0pvWldsbmFIUWlPaUpoZFhSdkluMHNJbkpsZG1semFXOXVJam94TnpBMU5URTNORFF5T1RJMWZTeDdJbXRsZVNJNklsUmxlSFFnWDE5emR5MWtObmgyT1hKNmVuZHFiREp1WDJsemVuZHdlR1lpTENKMllXeDFaU0k2SWtWc1pXZGhiblFnUEdKeVBseHVjM1ZpZEdsMGJHVnpJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU9YQjRJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TWpBbEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTEwYjNBaUxDSjJZV3gxWlNJNklqVndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lSR2wySUY5ZmMzY3RaWFZ1WkhobmVtb3RiVjlqZG1Ob1lqRnViR0ZoSWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVJwYzNCc1lYa2lMQ0oyWVd4MVpTSTZJbVpzWlhnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWm14bGVDMWthWEpsWTNScGIyNGlMQ0oyWVd4MVpTSTZJbU52YkhWdGJpSjlMSHNpY0hKdmNHVnlkSGtpT2lKaGJHbG5iaTFwZEdWdGN5SXNJblpoYkhWbElqb2lZMlZ1ZEdWeUluMHNleUp3Y205d1pYSjBlU0k2SW1wMWMzUnBabmt0WTI5dWRHVnVkQ0lzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltSmhZMnRuY205MWJtUXRZMjlzYjNJaUxDSjJZV3gxWlNJNklpTkdSa1pHUmtZaWZTeDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJamt6Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUk1TTNCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTEwYjNBdGJHVm1kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJams1T1hCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTEwYjNBdGNtbG5hSFF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUk1T1Rsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0WW05MGRHOXRMV3hsWm5RdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJNU9UbHdlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdFltOTBkRzl0TFhKcFoyaDBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lPVGs1Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWtsdFlXZGxRbUZ6WlNCZlgzTjNMWFJzZG1SaGVEaHlZMkUyYjNGNmQyaDZibTVvTnlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1sdFp5SXNJbk4xWWxSNWNHVWlPaUpwYldjaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTnlZeUlzSW5OeVl5STZJbWgwZEhCek9pOHZjM1JoZEdsakxuTjFjR1Z5ZDJGc2JHRnpjMlYwY3k1amIyMHZVWGd4ZDNWNGQyRnViRWM1TW1rd1JIVkJZbUZhSWl3aWMzSmpVMlYwSWpwYlhYMTlMSHNpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqUTRjSGdpZlN4N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSTBPSEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdJbmRwWkhSb0lqb2lNVEF3SlNJc0ltaGxhV2RvZENJNkltRjFkRzhpZlgwc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdExYZGpMV3AyZGpobWRUUnpNRGgyZDNOaWRIaDVJaXdpZG1Gc2RXVWlPaUp0WVhnZ2JHVnVaM1JvUEdKeVBuQmxjaUIyYVdSbGJ5SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpsd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVEl3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRkRzl3SWl3aWRtRnNkV1VpT2lJMWNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrUnBkaUJmWDNOM0xYSnFkREJmZUdRMmFXRnVhbXcwWW5obWVHUm1lQ0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSm1iR1Y0SW4wc2V5SndjbTl3WlhKMGVTSTZJbVpzWlhndFpHbHlaV04wYVc5dUlpd2lkbUZzZFdVaU9pSmpiMngxYlc0aWZTeDdJbkJ5YjNCbGNuUjVJam9pWVd4cFoyNHRhWFJsYlhNaUxDSjJZV3gxWlNJNkltTmxiblJsY2lKOUxIc2ljSEp2Y0dWeWRIa2lPaUpxZFhOMGFXWjVMV052Ym5SbGJuUWlMQ0oyWVd4MVpTSTZJbU5sYm5SbGNpSjlMSHNpY0hKdmNHVnlkSGtpT2lKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5SWl3aWRtRnNkV1VpT2lJalJrWkdSa1pHSW4wc2V5SndjbTl3WlhKMGVTSTZJbmRwWkhSb0lpd2lkbUZzZFdVaU9pSTVNM0I0SW4wc2V5SndjbTl3WlhKMGVTSTZJbWhsYVdkb2RDSXNJblpoYkhWbElqb2lPVE53ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRkRzl3TFd4bFpuUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSTVPVGx3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRkRzl3TFhKcFoyaDBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lPVGs1Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMV0p2ZEhSdmJTMXNaV1owTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pT1RrNWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFdKdmRIUnZiUzF5YVdkb2RDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqazVPWEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpKYldGblpVSmhjMlVnWDE5emR5MXJibm81ZVRseWJIaHFNR3h3YjNwcVluTjBabVlpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUpwYldjaUxDSnpkV0pVZVhCbElqb2lhVzFuSWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqUTRjSGdpZlN4N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSTBPSEI0SW4xZGZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OeVl5SXNJbk55WXlJNkltaDBkSEJ6T2k4dmMzUmhkR2xqTG5OMWNHVnlkMkZzYkdGemMyVjBjeTVqYjIwdmJHSnRTMEkwWm14TmJHWlFNRTlXY1c5dmMxWmpJaXdpYzNKalUyVjBJanBiWFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmV5SjNhV1IwYUNJNklqRXdNQ1VpTENKb1pXbG5hSFFpT2lKaGRYUnZJbjE5TEhzaWEyVjVJam9pVkdWNGRDQmZYM04zTFhjMGJuQTJabDlwYTIweGJtSmphWEZ2TldWb05TSXNJblpoYkhWbElqb2lUR2x0YVhSbFpDQThZbkkrTVRBZ1UyTnlhWEIwY3lCd1pYSWdiVzl1ZEdnaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2labTl1ZEMxemFYcGxJaXdpZG1Gc2RXVWlPaUk1Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRTBNQ1VpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxYUnZjQ0lzSW5aaGJIVmxJam9pTlhCNEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3Zlgwc2V5SnJaWGtpT2lKRWFYWWdYMTl6ZHkxNE0zSnRlVGMzYkcxdU1XRnFaRzUzTkhOaWJUSWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaVpteGxlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iR1Y0TFdScGNtVmpkR2x2YmlJc0luWmhiSFZsSWpvaVkyOXNkVzF1SW4wc2V5SndjbTl3WlhKMGVTSTZJbWRoY0NJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSjBaWGgwTFdGc2FXZHVJaXdpZG1Gc2RXVWlPaUpzWldaMEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3Zlgwc2V5SnJaWGtpT2lKRWFYWWdYMTl6ZHkxMVh6ZHRNR1JoTTNCZmVEbHRhV2M1Wm1kNGExOGlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaVpteGxlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmhiR2xuYmkxcGRHVnRjeUlzSW5aaGJIVmxJam9pYzNSaGNuUWlmU3g3SW5CeWIzQmxjblI1SWpvaWFuVnpkR2xtZVMxamIyNTBaVzUwSWl3aWRtRnNkV1VpT2lKbWJHVjRMWE4wWVhKMEluMHNleUp3Y205d1pYSjBlU0k2SW1kaGNDSXNJblpoYkhWbElqb2lOSEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpKYldGblpVSmhjMlVnWDE5emR5MXlZVzkwZFdsek5uZGxibkpoYjNWNWRXcDBaWGtpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUpwYldjaUxDSnpkV0pVZVhCbElqb2lhVzFuSWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemNtTWlMQ0p6Y21NaU9pSm9kSFJ3Y3pvdkwzTjBZWFJwWXk1emRYQmxjbmRoYkd4aGMzTmxkSE11WTI5dEx6UXdOVFZITFUxT2RVaHNhelo1UVVKUFMzZENRaUlzSW5OeVkxTmxkQ0k2VzExOWZTeDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJeE1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dGRHOXdJaXdpZG1Gc2RXVWlPaUl5Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnNpZDJsa2RHZ2lPaUl4TURBbElpd2lhR1ZwWjJoMElqb2lZWFYwYnlKOWZTeDdJbXRsZVNJNklsUmxlSFFnWDE5emR5MXhlWEZuWVhGNWFYcDViV04zTW5VeFpXaHZhbVlpTENKMllXeDFaU0k2SWtGc2JDQkdaV0YwZFhKbGN5QmNibWx1SUVaU1JVVWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJeE1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnZiblF0ZDJWcFoyaDBJaXdpZG1Gc2RXVWlPaUkzTURBaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdWMGRHVnlMWE53WVdOcGJtY2lMQ0oyWVd4MVpTSTZJaTB3TGpWd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVFF3SlNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzE5TEhzaWEyVjVJam9pUkdsMklGOWZjM2N0YVhFMVlucDJkM1F5TW5jMVlYa3plbXMxYkhWdUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1ScGMzQnNZWGtpTENKMllXeDFaU0k2SW1ac1pYZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVlXeHBaMjR0YVhSbGJYTWlMQ0oyWVd4MVpTSTZJbk4wWVhKMEluMHNleUp3Y205d1pYSjBlU0k2SW1wMWMzUnBabmt0WTI5dWRHVnVkQ0lzSW5aaGJIVmxJam9pWm14bGVDMXpkR0Z5ZENKOUxIc2ljSEp2Y0dWeWRIa2lPaUpuWVhBaUxDSjJZV3gxWlNJNklqUndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMHNJbkpsZG1semFXOXVJam94TmprMU9EZ3pNREl6TWpNNWZTeDdJbXRsZVNJNklrbHRZV2RsUW1GelpTQmZYM04zTFdNNU1tdGpZbloyYkhCeU5tMXVNbk5yYW5SNGFpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltbHRaeUlzSW5OMVlsUjVjR1VpT2lKcGJXY2lMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk55WXlJc0luTnlZeUk2SW1oMGRIQnpPaTh2YzNSaGRHbGpMbk4xY0dWeWQyRnNiR0Z6YzJWMGN5NWpiMjB2TkRBMU5VY3RUVTUxU0d4ck5ubEJRazlMZDBKQ0lpd2ljM0pqVTJWMElqcGJYWDE5TEhzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJakV5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTEwYjNBaUxDSjJZV3gxWlNJNklqSndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmV5SjNhV1IwYUNJNklqRXdNQ1VpTENKb1pXbG5hSFFpT2lKaGRYUnZJbjE5TEhzaWEyVjVJam9pVkdWNGRDQmZYM04zTFdwcGVXRnFkR2d5WVhGc2RUaHpibkpwYm1vd2JTSXNJblpoYkhWbElqb2lPU0J0YVc0Z2RtbGtaVzljYm0xaGVDQnNaVzVuZEdnZ0lpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVRKd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc1pYUjBaWEl0YzNCaFkybHVaeUlzSW5aaGJIVmxJam9pTFRBdU5YQjRJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TkRBbEluMWRmWDFkTENKcGJtbDBhV0ZzVTNSNWJHVnpJanA3ZlN3aWNtVjJhWE5wYjI0aU9qRTJPVFU0T0RNd05URTFNamg5TEhzaWEyVjVJam9pUkdsMklGOWZjM2N0TVc1M1lXSmpaSE54WXkxaWRYQjNORFJ0YUhWaklpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1ScGMzQnNZWGtpTENKMllXeDFaU0k2SW1ac1pYZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVlXeHBaMjR0YVhSbGJYTWlMQ0oyWVd4MVpTSTZJbk4wWVhKMEluMHNleUp3Y205d1pYSjBlU0k2SW1wMWMzUnBabmt0WTI5dWRHVnVkQ0lzSW5aaGJIVmxJam9pWm14bGVDMXpkR0Z5ZENKOUxIc2ljSEp2Y0dWeWRIa2lPaUpuWVhBaUxDSjJZV3gxWlNJNklqUndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lTVzFoWjJWQ1lYTmxJRjlmYzNjdGMyeHFhMmMwYTNVMWRtRXlOVzgzWDJsdll6aDZJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2lhVzFuSWl3aWMzVmlWSGx3WlNJNkltbHRaeUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNKaklpd2ljM0pqSWpvaWFIUjBjSE02THk5emRHRjBhV011YzNWd1pYSjNZV3hzWVhOelpYUnpMbU52YlM4ME1EVTFSeTFOVG5WSWJHczJlVUZDVDB0M1FrSWlMQ0p6Y21OVFpYUWlPbHRkZlgwc2V5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKM2FXUjBhQ0lzSW5aaGJIVmxJam9pTVRKd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJXRnlaMmx1TFhSdmNDSXNJblpoYkhWbElqb2lNbkI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdJbmRwWkhSb0lqb2lNVEF3SlNJc0ltaGxhV2RvZENJNkltRjFkRzhpZlgwc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdFkzbDZjbTVuTUdGdk5HcHBjSEZtWm5aaWFISTJJaXdpZG1Gc2RXVWlPaUpPYnlCM1lYUmxjbTFoY21zaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2labTl1ZEMxemFYcGxJaXdpZG1Gc2RXVWlPaUl4TW5CNEluMHNleUp3Y205d1pYSjBlU0k2SW14bGRIUmxjaTF6Y0dGamFXNW5JaXdpZG1Gc2RXVWlPaUl0TUM0MWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUwTUNVaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWtScGRpQmZYM04zTFd4eE4yZHliblJ1YUhWeFpYTTNlV1J4WDJVNFppSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKbWJHVjRJbjBzZXlKd2NtOXdaWEowZVNJNkltRnNhV2R1TFdsMFpXMXpJaXdpZG1Gc2RXVWlPaUp6ZEdGeWRDSjlMSHNpY0hKdmNHVnlkSGtpT2lKcWRYTjBhV1o1TFdOdmJuUmxiblFpTENKMllXeDFaU0k2SW1ac1pYZ3RjM1JoY25RaWZTeDdJbkJ5YjNCbGNuUjVJam9pWjJGd0lpd2lkbUZzZFdVaU9pSTBjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlmU3g3SW10bGVTSTZJa2x0WVdkbFFtRnpaU0JmWDNOM0xXUTVaV0ZzZVhSbWQyUnFjbkl3WjJScmRESXdOaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbWx0WnlJc0luTjFZbFI1Y0dVaU9pSnBiV2NpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OeVl5SXNJbk55WXlJNkltaDBkSEJ6T2k4dmMzUmhkR2xqTG5OMWNHVnlkMkZzYkdGemMyVjBjeTVqYjIwdk5EQTFOVWN0VFU1MVNHeHJObmxCUWs5TGQwSkNJaXdpYzNKalUyVjBJanBiWFgxOUxIc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaWQybGtkR2dpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxMGIzQWlMQ0oyWVd4MVpTSTZJakp3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZleUozYVdSMGFDSTZJakV3TUNVaUxDSm9aV2xuYUhRaU9pSmhkWFJ2SW4xOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXOTBhbVp5ZHpKaE5tWnNOMjgyWTJObWVUTmxlQ0lzSW5aaGJIVmxJam9pVFhrZ1ZtbGtaVzhnVUdGblpVRjFkRzl0WVhScFl5QlRkV0owYVhSc1pYTWdkMmwwYUNCRmJHVm5ZVzUwSUZSb1pXMWxjMXh1V1c5MWNpQk1iMmR2TENCTmRYTnBZeUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2liR1YwZEdWeUxYTndZV05wYm1jaUxDSjJZV3gxWlNJNklpMHdMalZ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1UUXdKU0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lSR2wySUY5ZmMzY3RNV3BrY25oa1oydHFiR2RwZVhCeVluaHFhRzB3SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVJwYzNCc1lYa2lMQ0oyWVd4MVpTSTZJbVpzWlhnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWVd4cFoyNHRhWFJsYlhNaUxDSjJZV3gxWlNJNkluTjBZWEowSW4wc2V5SndjbTl3WlhKMGVTSTZJbXAxYzNScFpua3RZMjl1ZEdWdWRDSXNJblpoYkhWbElqb2labXhsZUMxemRHRnlkQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSm5ZWEFpTENKMllXeDFaU0k2SWpSd2VDSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVNXMWhaMlZDWVhObElGOWZjM2N0YjJFdFozUXpabTF6ZDJFdFpGOTJhM2wzYldScklpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaWFXMW5JaXdpYzNWaVZIbHdaU0k2SW1sdFp5SXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM0pqSWl3aWMzSmpJam9pYUhSMGNITTZMeTl6ZEdGMGFXTXVjM1Z3WlhKM1lXeHNZWE56WlhSekxtTnZiUzkxZERGTGN6bEZWMlV0WmtOVE4wMWllSGhoVFdVaUxDSnpjbU5UWlhRaU9sdGRmWDBzZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUozYVdSMGFDSXNJblpoYkhWbElqb2lNVEp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakV5Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMWFJ2Y0NJc0luWmhiSFZsSWpvaU1uQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN0luZHBaSFJvSWpvaU1UQXdKU0lzSW1obGFXZG9kQ0k2SW1GMWRHOGlmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0Wm1vNWVIZHFhV2huZWw5bWJUZDFjMnRsY1Rkeklpd2lkbUZzZFdVaU9pSldhV1JsYnlCQmJtRnNlWFJwWTNOY2JrUmhjMmhpYjJGeVpDSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHVjBkR1Z5TFhOd1lXTnBibWNpTENKMllXeDFaU0k2SWkwd0xqVndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlYWDE5WFN3aWFXNXBkR2xoYkZOMGVXeGxjeUk2ZTMxOUxIc2lhMlY1SWpvaVUyVmpkR2x2YmlCZlgzTjNMV3gzTVdneGNXMWpORzU0T1Mxa2EydGhiak0yWWlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lORGh3ZUNKOVhYMTlYU3dpY21WMmFYTnBiMjRpT2pFM01EVTFNVGczTVRNNU1ETjlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMWFZpZDJ4eVoyUnhibUprYTIxcGFtZDBNV2syTmlJc0luWmhiSFZsSWpvaU1UQWdUV2xzYkdsdmJpQklZWEJ3ZVNCV2FXUmxieUJOWVd0bGNuTWc4SitPaVNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakZ5WlcwaWZTeDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMTNaV2xuYUhRaUxDSjJZV3gxWlNJNklqWXdNQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlMSHNpY0hKdmNHVnlkSGtpT2lKMFpYaDBMV0ZzYVdkdUlpd2lkbUZzZFdVaU9pSmpaVzUwWlhJaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNVFp3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzBzSW5KbGRtbHphVzl1SWpveE56QTFOVEUzTXpFMU9UZ3dmU3g3SW10bGVTSTZJa3hwYzNRZ1gxOXpkeTFwZFdFeVpITnpkVFo1ZW5ONGFtdHJPR3R0TjJJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWkdsemNHeGhlU0lzSW5aaGJIVmxJam9pWm14bGVDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaGJHbG5iaTFwZEdWdGN5SXNJblpoYkhWbElqb2ljM1J5WlhSamFDSjlMSHNpY0hKdmNHVnlkSGtpT2lKd1lXUmthVzVuTFhSdmNDSXNJblpoYkhWbElqb2lNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RZbTkwZEc5dElpd2lkbUZzZFdVaU9pSXdjSGdpZlYxOWZWMTlMSHNpYTJWNUlqb2lUR2x6ZEMxcGJtUnBZMkYwYjNKeklGOWZjM2N0YVhWaE1tUnpjM1UyZVhwemVHcHJhemhyYlRkaUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW5CdmMybDBhVzl1SWl3aWRtRnNkV1VpT2lKaFluTnZiSFYwWlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNSMGIyMGlMQ0oyWVd4MVpTSTZJakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUp1YjI1bEluMWRmWDFkZlN4N0ltdGxlU0k2SWxKbGRtbGxkeUJmWDNOM0xXRjFlbWRvY1dKcWFHVmlabk5xZGpOb01WOW5iaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmlZV05yWjNKdmRXNWtMV052Ykc5eUlpd2lkbUZzZFdVaU9pSnlaMkpoS0RJMU5Td2dNalUxTENBeU5UVXNJREVwSW4wc2V5SndjbTl3WlhKMGVTSTZJbmRwWkhSb0lpd2lkbUZzZFdVaU9pSTRNQ1VpZlYxOWZWMHNJbkpsZG1semFXOXVJam94TnpBMU5URTROekV6TkRReWZTeDdJbXRsZVNJNklsSmxkbWxsZHlCZlgzTjNMV0YxZW1kb2NXSnFhR1ZpWm5OcWRqTm9NVjluYmlBK0lFTnZiblJoYVc1bGNpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlNaWFpwWlhjZ1gxOXpkeTFoZFhwbmFIRmlhbWhsWW1aemFuWXphREZmWjI0Z1BpQklaV0ZrWlhJZ1EyOXVkR0ZwYm1WeUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1ScGMzQnNZWGtpTENKMllXeDFaU0k2SW1ac1pYZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVpteGxlQzFrYVhKbFkzUnBiMjRpTENKMllXeDFaU0k2SW1OdmJIVnRiaTF5WlhabGNuTmxJbjFkZlgxZGZTeDdJbXRsZVNJNklsSmxkbWxsZHlCZlgzTjNMV0YxZW1kb2NXSnFhR1ZpWm5OcWRqTm9NVjluYmlBK0lGUnBkR3hsSUVOdmJuUmhhVzVsY2lJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFMGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakV4TUNVaWZWMTlmVjE5TEhzaWEyVjVJam9pVW1WMmFXVjNJRjlmYzNjdFlYVjZaMmh4WW1wb1pXSm1jMnAyTTJneFgyZHVJRDRnVkdsMGJHVWlMQ0oyWVd4MVpTSTZJa0pKUjFaVklHbHpJRVZoYzNrdUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVRSd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0ZEc5d0lpd2lkbUZzZFdVaU9pSTRjSGdpZlYxOWZWMTlMSHNpYTJWNUlqb2lVbVYyYVdWM0lGOWZjM2N0WVhWNloyaHhZbXBvWldKbWMycDJNMmd4WDJkdUlENGdSR0YwWlNJc0luWmhiSFZsSWpvaVJHVmpJREUxSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltUnBjM0JzWVhraUxDSjJZV3gxWlNJNkltNXZibVVpZlYxOWZWMTlMSHNpYTJWNUlqb2lVbVYyYVdWM0lGOWZjM2N0WVhWNloyaHhZbXBvWldKbWMycDJNMmd4WDJkdUlENGdTVzVtYnlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKU1pYWnBaWGNnWDE5emR5MWhkWHBuYUhGaWFtaGxZbVp6YW5ZemFERmZaMjRnUGlCVGRHRnlJRU52Ym5SaGFXNWxjaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSjNhV1IwYUNJc0luWmhiSFZsSWpvaVlYVjBieUo5TEhzaWNISnZjR1Z5ZEhraU9pSm9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRTJjSGdpZlYxOWZWMTlMSHNpYTJWNUlqb2lVbVYyYVdWM0lGOWZjM2N0WVhWNloyaHhZbXBvWldKbWMycDJNMmd4WDJkdUlENGdRWFYwYUc5eUlpd2lkbUZzZFdVaU9pSktZVzVsSUVSdlpTSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUp1YjI1bEluMWRmWDFkZlN4N0ltdGxlU0k2SWxKbGRtbGxkeUJmWDNOM0xXRjFlbWRvY1dKcWFHVmlabk5xZGpOb01WOW5iaUErSUVKdlpIa2lMQ0oyWVd4MVpTSTZJazFoYTJsdVp5QjJhV1JsYjNNZ2FYTWdaV0Z6ZVN3Z1FrbEhWbFVnYzJGMlpYTWdiV1VnYzI4Z2JYVmphQ0IwYVcxbExpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUwTUNVaWZWMTlmVjE5TEhzaWEyVjVJam9pVW1WMmFXVjNJRjlmYzNjdE0yczJlVzAyWDJkaFlUbHBiM2x1ZVhveGFtSnZJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltSmhZMnRuY205MWJtUXRZMjlzYjNJaUxDSjJZV3gxWlNJNkluSm5ZbUVvTWpVMUxDQXlOVFVzSURJMU5Td2dNU2tpZlN4N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqZ3dKU0o5WFgxOVhYMHNleUpyWlhraU9pSlNaWFpwWlhjZ1gxOXpkeTB6YXpaNWJUWmZaMkZoT1dsdmVXNTVlakZxWW04Z1BpQkRiMjUwWVdsdVpYSWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVbVYyYVdWM0lGOWZjM2N0TTJzMmVXMDJYMmRoWVRscGIzbHVlWG94YW1KdklENGdTR1ZoWkdWeUlFTnZiblJoYVc1bGNpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKbWJHVjRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnNaWGd0WkdseVpXTjBhVzl1SWl3aWRtRnNkV1VpT2lKamIyeDFiVzR0Y21WMlpYSnpaU0o5WFgxOVhYMHNleUpyWlhraU9pSlNaWFpwWlhjZ1gxOXpkeTB6YXpaNWJUWmZaMkZoT1dsdmVXNTVlakZxWW04Z1BpQlVhWFJzWlNCRGIyNTBZV2x1WlhJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJeE5IQjRJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TVRBbEluMWRmWDFkZlN4N0ltdGxlU0k2SWxKbGRtbGxkeUJmWDNOM0xUTnJObmx0Tmw5bllXRTVhVzk1Ym5sNk1XcGlieUErSUZScGRHeGxJaXdpZG1Gc2RXVWlPaUpDWlhOMElHRndjQ0JsZG1WeUxpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFMGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJXRnlaMmx1TFhSdmNDSXNJblpoYkhWbElqb2lPSEI0SW4xZGZYMWRmU3g3SW10bGVTSTZJbEpsZG1sbGR5QmZYM04zTFROck5ubHRObDluWVdFNWFXOTVibmw2TVdwaWJ5QStJRVJoZEdVaUxDSjJZV3gxWlNJNklrUmxZeUF4TlNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSnViMjVsSW4xZGZYMWRmU3g3SW10bGVTSTZJbEpsZG1sbGR5QmZYM04zTFROck5ubHRObDluWVdFNWFXOTVibmw2TVdwaWJ5QStJRWx1Wm04aUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVVtVjJhV1YzSUY5ZmMzY3RNMnMyZVcwMlgyZGhZVGxwYjNsdWVYb3hhbUp2SUQ0Z1UzUmhjaUJEYjI1MFlXbHVaWElpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNkltRjFkRzhpZlN4N0luQnliM0JsY25SNUlqb2lhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhObkI0SW4xZGZYMWRmU3g3SW10bGVTSTZJbEpsZG1sbGR5QmZYM04zTFROck5ubHRObDluWVdFNWFXOTVibmw2TVdwaWJ5QStJRUYxZEdodmNpSXNJblpoYkhWbElqb2lTbUZ1WlNCRWIyVWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWkdsemNHeGhlU0lzSW5aaGJIVmxJam9pYm05dVpTSjlYWDE5WFgwc2V5SnJaWGtpT2lKU1pYWnBaWGNnWDE5emR5MHphelo1YlRaZloyRmhPV2x2ZVc1NWVqRnFZbThnUGlCQ2IyUjVJaXdpZG1Gc2RXVWlPaUpVYUdVZ2RHVnNaWEJ5YjIxd2RHVnlJR1psWVhSMWNtVWdhWE1nWVNCbllXMWxJR05vWVc1blpYSWhJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlYWDE5WFgwc2V5SnJaWGtpT2lKU1pYWnBaWGNnWDE5emR5MTJlVGg1WW5jd2IzbHZZV0o2WVRCd00yTjBabTRpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lZbUZqYTJkeWIzVnVaQzFqYjJ4dmNpSXNJblpoYkhWbElqb2ljbWRpWVNneU5UVXNJREkxTlN3Z01qVTFMQ0F4S1NKOUxIc2ljSEp2Y0dWeWRIa2lPaUozYVdSMGFDSXNJblpoYkhWbElqb2lPREFsSW4xZGZYMWRmU3g3SW10bGVTSTZJbEpsZG1sbGR5QmZYM04zTFhaNU9IbGlkekJ2ZVc5aFlucGhNSEF6WTNSbWJpQStJRU52Ym5SaGFXNWxjaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpTWlhacFpYY2dYMTl6ZHkxMmVUaDVZbmN3YjNsdllXSjZZVEJ3TTJOMFptNGdQaUJJWldGa1pYSWdRMjl1ZEdGcGJtVnlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltUnBjM0JzWVhraUxDSjJZV3gxWlNJNkltWnNaWGdpZlN4N0luQnliM0JsY25SNUlqb2labXhsZUMxa2FYSmxZM1JwYjI0aUxDSjJZV3gxWlNJNkltTnZiSFZ0YmkxeVpYWmxjbk5sSW4xZGZYMWRmU3g3SW10bGVTSTZJbEpsZG1sbGR5QmZYM04zTFhaNU9IbGlkekJ2ZVc5aFlucGhNSEF6WTNSbWJpQStJRlJwZEd4bElFTnZiblJoYVc1bGNpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRTBjSGdpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFeE1DVWlmVjE5ZlYxOUxIc2lhMlY1SWpvaVVtVjJhV1YzSUY5ZmMzY3Rkbms0ZVdKM01HOTViMkZpZW1Fd2NETmpkR1p1SUQ0Z1ZHbDBiR1VpTENKMllXeDFaU0k2SWtaaGJuUmhjM1JwWXlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dGRHOXdJaXdpZG1Gc2RXVWlPaUk0Y0hnaWZWMTlmVjE5TEhzaWEyVjVJam9pVW1WMmFXVjNJRjlmYzNjdGRuazRlV0ozTUc5NWIyRmllbUV3Y0ROamRHWnVJRDRnUkdGMFpTSXNJblpoYkhWbElqb2lSR1ZqSURFMUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVJwYzNCc1lYa2lMQ0oyWVd4MVpTSTZJbTV2Ym1VaWZWMTlmVjE5TEhzaWEyVjVJam9pVW1WMmFXVjNJRjlmYzNjdGRuazRlV0ozTUc5NWIyRmllbUV3Y0ROamRHWnVJRDRnU1c1bWJ5SXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlNaWFpwWlhjZ1gxOXpkeTEyZVRoNVluY3diM2x2WVdKNllUQndNMk4wWm00Z1BpQlRkR0Z5SUVOdmJuUmhhVzVsY2lJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUozYVdSMGFDSXNJblpoYkhWbElqb2lZWFYwYnlKOUxIc2ljSEp2Y0dWeWRIa2lPaUpvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUyY0hnaWZWMTlmVjE5TEhzaWEyVjVJam9pVW1WMmFXVjNJRjlmYzNjdGRuazRlV0ozTUc5NWIyRmllbUV3Y0ROamRHWnVJRDRnUVhWMGFHOXlJaXdpZG1Gc2RXVWlPaUpLWVc1bElFUnZaU0lzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKdWIyNWxJbjFkZlgxZGZTeDdJbXRsZVNJNklsSmxkbWxsZHlCZlgzTjNMWFo1T0hsaWR6QnZlVzloWW5waE1IQXpZM1JtYmlBK0lFSnZaSGtpTENKMllXeDFaU0k2SWtrZ1kzSmxZWFJsSUhCdmJHbHphR1ZrSUhacFpHVnZjeUIwYnlCcGJYQnlaWE56SUcxNUlHRjFaR2xsYm1ObExpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUwTUNVaWZWMTlmVjE5TEhzaWEyVjVJam9pVW1WMmFXVjNJRjlmYzNjdGJ6TnVjV3R6WXkxNU1tSnBhM2w1ZUhwbWIzaDNJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltSmhZMnRuY205MWJtUXRZMjlzYjNJaUxDSjJZV3gxWlNJNkluSm5ZbUVvTWpVMUxDQXlOVFVzSURJMU5Td2dNU2tpZlN4N0luQnliM0JsY25SNUlqb2lkMmxrZEdnaUxDSjJZV3gxWlNJNklqZ3dKU0o5WFgxOVhYMHNleUpyWlhraU9pSlNaWFpwWlhjZ1gxOXpkeTF2TTI1eGEzTmpMWGt5WW1scmVYbDRlbVp2ZUhjZ1BpQkRiMjUwWVdsdVpYSWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVbVYyYVdWM0lGOWZjM2N0YnpOdWNXdHpZeTE1TW1KcGEzbDVlSHBtYjNoM0lENGdTR1ZoWkdWeUlFTnZiblJoYVc1bGNpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKbWJHVjRJbjBzZXlKd2NtOXdaWEowZVNJNkltWnNaWGd0WkdseVpXTjBhVzl1SWl3aWRtRnNkV1VpT2lKamIyeDFiVzR0Y21WMlpYSnpaU0o5WFgxOVhYMHNleUpyWlhraU9pSlNaWFpwWlhjZ1gxOXpkeTF2TTI1eGEzTmpMWGt5WW1scmVYbDRlbVp2ZUhjZ1BpQlVhWFJzWlNCRGIyNTBZV2x1WlhJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJeE5IQjRJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TVRBbEluMWRmWDFkZlN4N0ltdGxlU0k2SWxKbGRtbGxkeUJmWDNOM0xXOHpibkZyYzJNdGVUSmlhV3Q1ZVhoNlptOTRkeUErSUZScGRHeGxJaXdpZG1Gc2RXVWlPaUpKSUd4dmRtVWdRa2xIVmxVaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxYUnZjQ0lzSW5aaGJIVmxJam9pT0hCNEluMWRmWDFkZlN4N0ltdGxlU0k2SWxKbGRtbGxkeUJmWDNOM0xXOHpibkZyYzJNdGVUSmlhV3Q1ZVhoNlptOTRkeUErSUVSaGRHVWlMQ0oyWVd4MVpTSTZJa1JsWXlBeE5TSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUp1YjI1bEluMWRmWDFkZlN4N0ltdGxlU0k2SWxKbGRtbGxkeUJmWDNOM0xXOHpibkZyYzJNdGVUSmlhV3Q1ZVhoNlptOTRkeUErSUVsdVptOGlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVbVYyYVdWM0lGOWZjM2N0YnpOdWNXdHpZeTE1TW1KcGEzbDVlSHBtYjNoM0lENGdVM1JoY2lCRGIyNTBZV2x1WlhJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJbUYxZEc4aWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4Tm5CNEluMWRmWDFkZlN4N0ltdGxlU0k2SWxKbGRtbGxkeUJmWDNOM0xXOHpibkZyYzJNdGVUSmlhV3Q1ZVhoNlptOTRkeUErSUVGMWRHaHZjaUlzSW5aaGJIVmxJam9pU21GdVpTQkViMlVpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaWJtOXVaU0o5WFgxOVhYMHNleUpyWlhraU9pSlNaWFpwWlhjZ1gxOXpkeTF2TTI1eGEzTmpMWGt5WW1scmVYbDRlbVp2ZUhjZ1BpQkNiMlI1SWl3aWRtRnNkV1VpT2lKV2FXUmxieUJ3Y205a2RXTjBhVzl1SUhOcGJYQnNhV1pwWldRc0lHMWhhMmx1WnlCcGRDQmhZMk5sYzNOcFlteGxJR1p2Y2lCaGJubHZibVVnZEc4Z2RYTmxMaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFME1DVWlmVjE5ZlYxOUxIc2lhMlY1SWpvaVUyVmpkR2x2YmlCZlgzTjNMVEIzYVdock5YRjZkbmxsZFdSMVpXaGpiakZuWHlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lORGh3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MV3hsWm5RaUxDSjJZV3gxWlNJNklqRTJjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MXlhV2RvZENJc0luWmhiSFZsSWpvaU1UWndlQ0o5WFgxOVhTd2ljbVYyYVhOcGIyNGlPakUzTURVMU1UZzNNVEU1TmpGOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xYZHZhRGx4YTJRMllWOXJibVpxYjJJemVubG1NeUlzSW5aaGJIVmxJam9pVG1WbFpDQm9aV3h3UHlCSFpYUWdZU0JtY21WbElHTnZZV05vYVc1bklITmxjM05wYjI0aUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2labTl1ZEMxemFYcGxJaXdpZG1Gc2RXVWlPaUl4Y21WdEluMHNleUp3Y205d1pYSjBlU0k2SW1admJuUXRkMlZwWjJoMElpd2lkbUZzZFdVaU9pSTJNREFpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFME1DVWlmU3g3SW5CeWIzQmxjblI1SWpvaWRHVjRkQzFoYkdsbmJpSXNJblpoYkhWbElqb2lZMlZ1ZEdWeUluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJakUyY0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5TENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4TnpZd09UazJOMzBzZXlKclpYa2lPaUpFYVhZZ1gxOXpkeTFxTTI5cWFubHFNSGh5TjJvNGFHWmxOVGRzYzJJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZEdWNGRDMWhiR2xuYmlJc0luWmhiSFZsSWpvaVkyVnVkR1Z5SW4wc2V5SndjbTl3WlhKMGVTSTZJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSWlMQ0oyWVd4MVpTSTZJbkpuWW1Fb01qVTFMQ0F5TlRVc0lESTFOU3dnTVNraWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTEwYjNBaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MWliM1IwYjIwaUxDSjJZV3gxWlNJNklqRXljSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MXNaV1owSWl3aWRtRnNkV1VpT2lJeE1uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkluQmhaR1JwYm1jdGNtbG5hSFFpTENKMllXeDFaU0k2SWpFeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFhSdmNDMXNaV1owTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pTWpCd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0ZEc5d0xYSnBaMmgwTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pTWpCd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0WW05MGRHOXRMV3hsWm5RdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJeU1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxaWIzUjBiMjB0Y21sbmFIUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSXlNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2ZUMxemFHRmtiM2NpTENKMllXeDFaU0k2SWpCd2VDQXdjSGdnTkRCd2VDQnlaMkpoS0RBc0lEQXNJREFzSURBdU1Ta2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrbHRZV2RsUW1GelpTQmZYM04zTFhoZmFHSnZiV2xyY1hab2NHRjVjemw1WjNnNWVDSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltbHRaeUlzSW5OMVlsUjVjR1VpT2lKcGJXY2lMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk55WXlJc0luTnlZeUk2SW1oMGRIQnpPaTh2YzNSaGRHbGpMbk4xY0dWeWQyRnNiR0Z6YzJWMGN5NWpiMjB2V0d0VVVFSlJTbGQzUTNGTmFEazVPR1ZFY1ZOcElpd2ljM0pqVTJWMElqcGJYWDE5TEhzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJamd3Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUk0TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJamh3ZUNKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZleUozYVdSMGFDSTZJakV3TUNVaUxDSm9aV2xuYUhRaU9pSmhkWFJ2SW4xOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXZDJkRzFuY1hab2IzVTRibWR5ZG1wcU1GOTBPQ0lzSW5aaGJIVmxJam9pSm01aWMzQTdJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1UQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0WW05MGRHOXRJaXdpZG1Gc2RXVWlPaUk0Y0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkxeVlXMTFNbmh3WDJ0eU5XbG1jelZ1TldkcUxXVWlMQ0oyWVd4MVpTSTZJak10WkdGNUlIUnlhV0ZzSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVEJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1UUXdKU0o5TEhzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dFltOTBkRzl0SWl3aWRtRnNkV1VpT2lJNGNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklsUmxlSFFnWDE5emR5MWtkWEp1YURnM2EyRTBhRGR2WldOMk9YSnFMV1lpTENKMllXeDFaU0k2SWpNdFpHRjVJSFJ5YVdGc0lpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVRCd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVFF3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRZbTkwZEc5dElpd2lkbUZzZFdVaU9pSTRjSGdpZlYxOWZWMHNJbWx1YVhScFlXeFRkSGxzWlhNaU9udDlMQ0p5WlhacGMybHZiaUk2TVRjd01UUXlNRGc0T1RnME5YMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RZMTlqYzNsdWEyWTJaUzAxWmpGc01tUmlaaTE2SWl3aWRtRnNkV1VpT2lKVFlYSmhhQ0JUZEdGdVptbGxiR1FpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhjbVZ0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE5EQWxJbjBzZXlKd2NtOXdaWEowZVNJNkltWnZiblF0ZDJWcFoyaDBJaXdpZG1Gc2RXVWlPaUkyTURBaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lOSEI0SW4xZGZYMWRMQ0pwYm1sMGFXRnNVM1I1YkdWeklqcDdmWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0Tm1oME9HcDNlV3R3ZUc5cGVucDRPWEkxZW1GbElpd2lkbUZzZFdVaU9pSkNTVWRXVlNCRmVIQmxjblFpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhOSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeU1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpFMmNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT250OWZTeDdJbXRsZVNJNklrSjFkSFJ2YmtKaGMyVWdYMTl6ZHkxaGRIcHFjemQzZW04emN6RnNaV1kyWW5wcmNGOGlMQ0oyWVd4MVpTSTZJbE5qYUdWa2RXeGxJR0VnZW05dmJTQmpZV3hzSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUppZFhSMGIyNGlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSmpiR2xqYXkxaVpXaGhkbWx2Y2lJc0ltTnNhV05yUW1Wb1lYWnBiM0lpT25zaWRIbHdaU0k2SW05d1pXNHRkWEpzTFdWNGRHVnlibUZzSWl3aWRYSnNJam9pYUhSMGNITTZMeTlqWVd4bGJtUnNlUzVqYjIwdlltbG5kblV0YzNWalkyVnpjeTEwWldGdEluMTlmU3g3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVp2Ym5RdGMybDZaU0lzSW5aaGJIVmxJam9pTVhKbGJTSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVFF3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppWVdOclozSnZkVzVrTFdOdmJHOXlJaXdpZG1Gc2RXVWlPaUlqTURCQlFrWkZJbjBzZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJeE1EQWxJbjBzZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU5EUndlQ0o5WFgxOVhYMHNleUpyWlhraU9pSlRaV04wYVc5dUlGOWZjM2N0WTNOM05HSXdaM2RyWDNOM00zTjJabXcyYjJrNElpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0ZEc5d0lpd2lkbUZzZFdVaU9pSXlNSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RZbTkwZEc5dElpd2lkbUZzZFdVaU9pSTBPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RiR1ZtZENJc0luWmhiSFZsSWpvaU1UWndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxYSnBaMmgwSWl3aWRtRnNkV1VpT2lJeE5uQjRJbjFkZlgxZExDSnlaWFpwYzJsdmJpSTZNVGN3TlRVeE9EY3hPRFkxTTMwc2V5SnJaWGtpT2lKVVpYaDBJRjlmYzNjdGRIWmxjblJ3YkdKaWMyTnpjMnd3ZDNRelpuUjNJaXdpZG1Gc2RXVWlPaUpJYjNjZ1dXOTFjaUJHY21WbElGUnlhV0ZzSUZkdmNtdHpJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1YSmxiU0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTmpBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4wc2V5SndjbTl3WlhKMGVTSTZJblJsZUhRdFlXeHBaMjRpTENKMllXeDFaU0k2SW1ObGJuUmxjaUo5TEhzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dFltOTBkRzl0SWl3aWRtRnNkV1VpT2lJeE5uQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MDFOV2RwZGpsMFkyNTBkbmhrWkRrMExUWjRhR3NpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2lkR1Y0ZEMxaGJHbG5iaUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltSmhZMnRuY205MWJtUXRZMjlzYjNJaUxDSjJZV3gxWlNJNkluSm5ZbUVvTWpVMUxDQXlOVFVzSURJMU5Td2dNU2tpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MTBiM0FpTENKMllXeDFaU0k2SWpFMmNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxaWIzUjBiMjBpTENKMllXeDFaU0k2SWpFMmNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1Wnkxc1pXWjBJaXdpZG1Gc2RXVWlPaUl4Tm5CNEluMHNleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0Y21sbmFIUWlMQ0oyWVd4MVpTSTZJakUyY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW05eVpHVnlMWFJ2Y0Mxc1pXWjBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lNakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRkRzl3TFhKcFoyaDBMWEpoWkdsMWN5SXNJblpoYkhWbElqb2lNakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUppYjNKa1pYSXRZbTkwZEc5dExXeGxablF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUl5TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTFpYjNSMGIyMHRjbWxuYUhRdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJeU1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZlQzF6YUdGa2IzY2lMQ0oyWVd4MVpTSTZJakJ3ZUNBd2NIZ2dOREJ3ZUNCeVoySmhLREFzSURBc0lEQXNJREF1TVNraWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5TENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4T0RjeE9ERXlOMzBzZXlKclpYa2lPaUpKYldGblpVSmhjMlVnWDE5emR5MXNjbVF5YTJ0c2NtOWxkWEp6TTI5dk9XcGhjR01pTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUpwYldjaUxDSnpkV0pVZVhCbElqb2lhVzFuSWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemNtTWlMQ0p6Y21NaU9pSm9kSFJ3Y3pvdkwzTjBZWFJwWXk1emRYQmxjbmRoYkd4aGMzTmxkSE11WTI5dEwxaHJWRkJDVVVwWGQwTnhUV2c1T1RobFJIRlRhU0lzSW5OeVkxTmxkQ0k2VzExOWZTeDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJNE1IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltaGxhV2RvZENJc0luWmhiSFZsSWpvaU9EQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dFltOTBkRzl0SWl3aWRtRnNkV1VpT2lJNGNIZ2lmVjE5ZlYwc0ltbHVhWFJwWVd4VGRIbHNaWE1pT25zaWQybGtkR2dpT2lJeE1EQWxJaXdpYUdWcFoyaDBJam9pWVhWMGJ5SjlmU3g3SW10bGVTSTZJbFJsZUhRZ1gxOXpkeTEwYjNsbmNESjVkbmR3WldScmJYbzJMWFZ2TlhNaUxDSjJZV3gxWlNJNklsTmhjbUZvSUZOMFlXNW1hV1ZzWkNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakZ5WlcwaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRTBNQ1VpZlN4N0luQnliM0JsY25SNUlqb2labTl1ZEMxM1pXbG5hSFFpTENKMllXeDFaU0k2SWpZd01DSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0WW05MGRHOXRJaXdpZG1Gc2RXVWlPaUkwY0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkxNmJYTXhOM1IzWVhKZmRHZzJjbTV5Y0c1NFozSWlMQ0oyWVd4MVpTSTZJa0pKUjFaVklFVjRjR1Z5ZENJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakUwY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxXSnZkSFJ2YlNJc0luWmhiSFZsSWpvaU1UWndlQ0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lRblYwZEc5dVFtRnpaU0JmWDNOM0xXTndkMlJ4WW5kdVlYSnBjbUptZFdjemFIWmZjaUlzSW5aaGJIVmxJam9pVTJOb1pXUjFiR1VnWVNCNmIyOXRJR05oYkd3aUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW1KMWRIUnZiaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRnlaVzBpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFME1DVWlmU3g3SW5CeWIzQmxjblI1SWpvaVltRmphMmR5YjNWdVpDMWpiMnh2Y2lJc0luWmhiSFZsSWpvaUl6QXdRVUpHUlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpvWldsbmFIUWlMQ0oyWVd4MVpTSTZJalEwY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pZDJsa2RHZ2lMQ0oyWVd4MVpTSTZJakV3TUNVaWZWMTlmVjE5TEhzaWEyVjVJam9pVkdsdFpXeHBibVVnWDE5emR5MWlkREJpTm10c2VIcHZjWE5wYkdWM2Myc3RZbUlpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTBzSW5KbGRtbHphVzl1SWpveE56QTFOVEUzTWpNeE5UY3hmU3g3SW10bGVTSTZJbFJwYldWc2FXNWxJRjlmYzNjdFluUXdZalpyYkhoNmIzRnphV3hsZDNOckxXSmlJRDRnVkdsdFpXeHBiaTFwZEdWdElGOWZjM2N0TFdGNFpHUjBiR1U0ZG5sZlkyMWhkR0oyTVdObklpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsUnBiV1ZzYVc1bElGOWZjM2N0WW5Rd1lqWnJiSGg2YjNGemFXeGxkM05yTFdKaUlENGdWR2x0Wld4cGJpMXBkR1Z0SUY5ZmMzY3RMV0Y0WkdSMGJHVTRkbmxmWTIxaGRHSjJNV05uSUQ0Z1NXTnZiaUJEYjI1MFlXbHVaWElpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lhVzFuSWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemNtTWlMQ0p6Y21NaU9pSXVMaTl3ZFdKc2FXTXZZWE56WlhSekwzUXRZMmhsWTJzdWMzWm5JaXdpYzNKalUyVjBJanBiSWlKZGZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmlZV05yWjNKdmRXNWtMV052Ykc5eUlpd2lkbUZzZFdVaU9pSnlaMkpoS0RJMU5Td2dNalUxTENBeU5UVXNJREVwSW4wc2V5SndjbTl3WlhKMGVTSTZJbUp2ZUMxemFHRmtiM2NpTENKMllXeDFaU0k2SWpCd2VDQXdjSGdnTkRCd2VDQnlaMkpoS0RBc0lEQXNJREFzSURBdU1Ta2lmVjE5ZlYxOUxIc2lhMlY1SWpvaVZHbHRaV3hwYm1VZ1gxOXpkeTFpZERCaU5tdHNlSHB2Y1hOcGJHVjNjMnN0WW1JZ1BpQlVhVzFsYkdsdUxXbDBaVzBnWDE5emR5MHRZWGhrWkhSc1pUaDJlVjlqYldGMFluWXhZMmNnUGlCSlkyOXVJRmR5WVhCd1pYSWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWFXMW5JaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6Y21NaUxDSnpjbU1pT2lJdUxpOXdkV0pzYVdNdllYTnpaWFJ6TDNRdFkyaGxZMnN1YzNabklpd2ljM0pqVTJWMElqcGJJaUpkZlgxZGZTeDdJbXRsZVNJNklsUnBiV1ZzYVc1bElGOWZjM2N0WW5Rd1lqWnJiSGg2YjNGemFXeGxkM05yTFdKaUlENGdWR2x0Wld4cGJpMXBkR1Z0SUY5ZmMzY3RMV0Y0WkdSMGJHVTRkbmxmWTIxaGRHSjJNV05uSUQ0Z1NXTnZiaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbWx0WnlJc0luTjFZbFI1Y0dVaU9pSnBiV2NpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OeVl5SXNJbk55WXlJNkltaDBkSEJ6T2k4dmMzUmhkR2xqTG5OMWNHVnlkMkZzYkdGemMyVjBjeTVqYjIwdldtMTJhVjlKZUVwU09VTllUR293VjJ0M01VMUJJaXdpYzNKalUyVjBJanBiWFgxOVhYMHNleUpyWlhraU9pSlVhVzFsYkdsdVpTQmZYM04zTFdKME1HSTJhMng0ZW05eGMybHNaWGR6YXkxaVlpQStJRlJwYldWc2FXNHRhWFJsYlNCZlgzTjNMUzFoZUdSa2RHeGxPSFo1WDJOdFlYUmlkakZqWnlBK0lGUnlZV2xzSUV4cGJtVWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkluZHBaSFJvSWl3aWRtRnNkV1VpT2lJeWNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltRmphMmR5YjNWdVpDMWpiMnh2Y2lJc0luWmhiSFZsSWpvaWNtZGlZU2cyT0N3Z01USTVMQ0F5TlRNc0lEQXVNekFwSW4xZGZYMWRMQ0p5WlhacGMybHZiaUk2TVRjd05UVXhOekkxTkRnNU1IMHNleUpyWlhraU9pSlVhVzFsYkdsdVpTQmZYM04zTFdKME1HSTJhMng0ZW05eGMybHNaWGR6YXkxaVlpQStJRlJwYldWc2FXNHRhWFJsYlNCZlgzTjNMUzFoZUdSa2RHeGxPSFo1WDJOdFlYUmlkakZqWnlBK0lFTnZiblJsYm5RaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVZHbHRaV3hwYm1VZ1gxOXpkeTFpZERCaU5tdHNlSHB2Y1hOcGJHVjNjMnN0WW1JZ1BpQlVhVzFsYkdsdUxXbDBaVzBnWDE5emR5MHRZWGhrWkhSc1pUaDJlVjlqYldGMFluWXhZMmNnUGlCU2IzY2dWR2wwYkdVaUxDSjJZV3gxWlNJNklsUnZaR0Y1SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUpvTXlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpVYVcxbGJHbHVaU0JmWDNOM0xXSjBNR0kyYTJ4NGVtOXhjMmxzWlhkemF5MWlZaUErSUZScGJXVnNhVzR0YVhSbGJTQmZYM04zTFMxaGVHUmtkR3hsT0haNVgyTnRZWFJpZGpGalp5QStJRUp2WkhrZ1ZHVjRkQ0lzSW5aaGJIVmxJam9pVlc1c2IyTnJJR1oxYkd3Z1lXTmpaWE56SUhSdklIbHZkWElnWEc1d2NtVnRhWFZ0SUhOMVluTmpjbWx3ZEdsdmJpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRkRzl3SWl3aWRtRnNkV1VpT2lJNGNIZ2lmVjE5ZlYwc0luSmxkbWx6YVc5dUlqb3hOekExTlRFM01qQTFOVFEzZlN4N0ltdGxlU0k2SWxScGJXVnNhVzVsSUY5ZmMzY3RZblF3WWpacmJIaDZiM0Z6YVd4bGQzTnJMV0ppSUQ0Z1ZHbHRaV3hwYmkxcGRHVnRJRjlmYzNjdGVuTjJkbTk2WW5kbVlYaDZhWFIyZFdaeGEzazVJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbFJwYldWc2FXNWxJRjlmYzNjdFluUXdZalpyYkhoNmIzRnphV3hsZDNOckxXSmlJRDRnVkdsdFpXeHBiaTFwZEdWdElGOWZjM2N0ZW5OMmRtOTZZbmRtWVhoNmFYUjJkV1p4YTNrNUlENGdTV052YmlCRGIyNTBZV2x1WlhJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pYVcxbklpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpjbU1pTENKemNtTWlPaUl1TGk5d2RXSnNhV012WVhOelpYUnpMM1F0WTJobFkyc3VjM1puSWl3aWMzSmpVMlYwSWpwYklpSmRmWDBzZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUppYjNndGMyaGhaRzkzSWl3aWRtRnNkV1VpT2lJd2NIZ2dNSEI0SURRd2NIZ2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqRXBJbjBzZXlKd2NtOXdaWEowZVNJNkltSmhZMnRuY205MWJtUXRZMjlzYjNJaUxDSjJZV3gxWlNJNkluSm5ZbUVvTWpVMUxDQXlOVFVzSURJMU5Td2dNU2tpZlYxOWZWMTlMSHNpYTJWNUlqb2lWR2x0Wld4cGJtVWdYMTl6ZHkxaWREQmlObXRzZUhwdmNYTnBiR1YzYzJzdFltSWdQaUJVYVcxbGJHbHVMV2wwWlcwZ1gxOXpkeTE2YzNaMmIzcGlkMlpoZUhwcGRIWjFabkZyZVRrZ1BpQkpZMjl1SUZkeVlYQndaWElpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lhVzFuSWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemNtTWlMQ0p6Y21NaU9pSXVMaTl3ZFdKc2FXTXZZWE56WlhSekwzUXRZMmhsWTJzdWMzWm5JaXdpYzNKalUyVjBJanBiSWlKZGZYMWRmU3g3SW10bGVTSTZJbFJwYldWc2FXNWxJRjlmYzNjdFluUXdZalpyYkhoNmIzRnphV3hsZDNOckxXSmlJRDRnVkdsdFpXeHBiaTFwZEdWdElGOWZjM2N0ZW5OMmRtOTZZbmRtWVhoNmFYUjJkV1p4YTNrNUlENGdTV052YmlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1sdFp5SXNJbk4xWWxSNWNHVWlPaUpwYldjaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTnlZeUlzSW5OeVl5STZJbWgwZEhCek9pOHZjM1JoZEdsakxuTjFjR1Z5ZDJGc2JHRnpjMlYwY3k1amIyMHZhbk42VDJ4b1FqWm9WMGRIWkVaeWIxb3hTbkpvSWl3aWMzSmpVMlYwSWpwYlhYMTlYWDBzZXlKclpYa2lPaUpVYVcxbGJHbHVaU0JmWDNOM0xXSjBNR0kyYTJ4NGVtOXhjMmxzWlhkemF5MWlZaUErSUZScGJXVnNhVzR0YVhSbGJTQmZYM04zTFhwemRuWnZlbUozWm1GNGVtbDBkblZtY1d0NU9TQStJRlJ5WVdsc0lFeHBibVVpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbmRwWkhSb0lpd2lkbUZzZFdVaU9pSXljSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbUZqYTJkeWIzVnVaQzFqYjJ4dmNpSXNJblpoYkhWbElqb2ljbWRpWVNnMk9Dd2dNVEk1TENBeU5UTXNJREF1TXpBcEluMWRmWDFkTENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4TnpJMU9EY3hOSDBzZXlKclpYa2lPaUpVYVcxbGJHbHVaU0JmWDNOM0xXSjBNR0kyYTJ4NGVtOXhjMmxzWlhkemF5MWlZaUErSUZScGJXVnNhVzR0YVhSbGJTQmZYM04zTFhwemRuWnZlbUozWm1GNGVtbDBkblZtY1d0NU9TQStJRU52Ym5SbGJuUWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lWR2x0Wld4cGJtVWdYMTl6ZHkxaWREQmlObXRzZUhwdmNYTnBiR1YzYzJzdFltSWdQaUJVYVcxbGJHbHVMV2wwWlcwZ1gxOXpkeTE2YzNaMmIzcGlkMlpoZUhwcGRIWjFabkZyZVRrZ1BpQlNiM2NnVkdsMGJHVWlMQ0oyWVd4MVpTSTZJbFJvWlNCRVlYa2dRbVZtYjNKbElGUnlhV0ZzSUVWdVpITWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltZ3pJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsUnBiV1ZzYVc1bElGOWZjM2N0WW5Rd1lqWnJiSGg2YjNGemFXeGxkM05yTFdKaUlENGdWR2x0Wld4cGJpMXBkR1Z0SUY5ZmMzY3Rlbk4yZG05NlluZG1ZWGg2YVhSMmRXWnhhM2s1SUQ0Z1FtOWtlU0JVWlhoMElpd2lkbUZzZFdVaU9pSkhaWFFnY21WdGFXNWtaV1FnZDJobGJpQjViM1Z5SUhSeWFXRnNJRnh1YVhNZ1lXSnZkWFFnZEc4Z1pXNWtJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTEwYjNBaUxDSjJZV3gxWlNJNklqaHdlQ0o5WFgxOVhTd2ljbVYyYVhOcGIyNGlPakUzTURVMU1UY3lNRGMwTnpSOUxIc2lhMlY1SWpvaVZHbHRaV3hwYm1VZ1gxOXpkeTFpZERCaU5tdHNlSHB2Y1hOcGJHVjNjMnN0WW1JZ1BpQlVhVzFsYkdsdUxXbDBaVzBnWDE5emR5MHpjWGR6Wm5scGFYSnJibDl6YW5neVptczJNM2NpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTBzSW5KbGRtbHphVzl1SWpveE56QTFOVEUzTWpJME9URTVmU3g3SW10bGVTSTZJbFJwYldWc2FXNWxJRjlmYzNjdFluUXdZalpyYkhoNmIzRnphV3hsZDNOckxXSmlJRDRnVkdsdFpXeHBiaTFwZEdWdElGOWZjM2N0TTNGM2MyWjVhV2x5YTI1ZmMycDRNbVpyTmpOM0lENGdTV052YmlCRGIyNTBZV2x1WlhJaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pYVcxbklpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpjbU1pTENKemNtTWlPaUl1TGk5d2RXSnNhV012WVhOelpYUnpMM1F0WTJobFkyc3VjM1puSWl3aWMzSmpVMlYwSWpwYklpSmRmWDBzZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUppWVdOclozSnZkVzVrTFdOdmJHOXlJaXdpZG1Gc2RXVWlPaUp5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURFcEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmVDMXphR0ZrYjNjaUxDSjJZV3gxWlNJNklqQndlQ0F3Y0hnZ05EQndlQ0J5WjJKaEtEQXNJREFzSURBc0lEQXVNU2tpZlYxOWZWMHNJbkpsZG1semFXOXVJam94TnpBMU5URTNNVFkxTlRRNGZTeDdJbXRsZVNJNklsUnBiV1ZzYVc1bElGOWZjM2N0WW5Rd1lqWnJiSGg2YjNGemFXeGxkM05yTFdKaUlENGdWR2x0Wld4cGJpMXBkR1Z0SUY5ZmMzY3RNM0YzYzJaNWFXbHlhMjVmYzJwNE1tWnJOak4zSUQ0Z1NXTnZiaUJYY21Gd2NHVnlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkltbHRaeUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNKaklpd2ljM0pqSWpvaUxpNHZjSFZpYkdsakwyRnpjMlYwY3k5MExXTm9aV05yTG5OMlp5SXNJbk55WTFObGRDSTZXeUlpWFgxOVhYMHNleUpyWlhraU9pSlVhVzFsYkdsdVpTQmZYM04zTFdKME1HSTJhMng0ZW05eGMybHNaWGR6YXkxaVlpQStJRlJwYldWc2FXNHRhWFJsYlNCZlgzTjNMVE54ZDNObWVXbHBjbXR1WDNOcWVESm1hell6ZHlBK0lFbGpiMjRpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUpwYldjaUxDSnpkV0pVZVhCbElqb2lhVzFuSWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemNtTWlMQ0p6Y21NaU9pSm9kSFJ3Y3pvdkwzTjBZWFJwWXk1emRYQmxjbmRoYkd4aGMzTmxkSE11WTI5dEwxOHlVR013U0ZOZlNsQnNhRk5uVTFKM1YzQlZOQ0lzSW5OeVkxTmxkQ0k2VzExOWZWMHNJbkpsZG1semFXOXVJam94TnpBMU5URTNNVFkwTmpjMmZTeDdJbXRsZVNJNklsUnBiV1ZzYVc1bElGOWZjM2N0WW5Rd1lqWnJiSGg2YjNGemFXeGxkM05yTFdKaUlENGdWR2x0Wld4cGJpMXBkR1Z0SUY5ZmMzY3RNM0YzYzJaNWFXbHlhMjVmYzJwNE1tWnJOak4zSUQ0Z1ZISmhhV3dnVEdsdVpTSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaWQybGtkR2dpTENKMllXeDFaU0k2SWpKd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKdWIyNWxJbjFkZlgxZExDSnlaWFpwYzJsdmJpSTZNVGN3TlRVeE56SXpORFk0Tm4wc2V5SnJaWGtpT2lKVWFXMWxiR2x1WlNCZlgzTjNMV0owTUdJMmEyeDRlbTl4YzJsc1pYZHpheTFpWWlBK0lGUnBiV1ZzYVc0dGFYUmxiU0JmWDNOM0xUTnhkM05tZVdscGNtdHVYM05xZURKbWF6WXpkeUErSUVOdmJuUmxiblFpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVkdsdFpXeHBibVVnWDE5emR5MWlkREJpTm10c2VIcHZjWE5wYkdWM2Myc3RZbUlnUGlCVWFXMWxiR2x1TFdsMFpXMGdYMTl6ZHkwemNYZHpabmxwYVhKcmJsOXphbmd5Wm1zMk0zY2dQaUJTYjNjZ1ZHbDBiR1VpTENKMllXeDFaU0k2SWxSeWFXRnNJRVZ1WkhNaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW1neklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxScGJXVnNhVzVsSUY5ZmMzY3RZblF3WWpacmJIaDZiM0Z6YVd4bGQzTnJMV0ppSUQ0Z1ZHbHRaV3hwYmkxcGRHVnRJRjlmYzNjdE0zRjNjMlo1YVdseWEyNWZjMnA0TW1ack5qTjNJRDRnUW05a2VTQlVaWGgwSWl3aWRtRnNkV1VpT2lKWmIzVnlJR0ZqWTI5MWJuUWdhWE1nWTJoaGNtZGxaQ3dnWTJGdVkyVnNJR0Z1ZVhScGJXVWdNalFnYUc5MWNuTWdZbVZtYjNKbExpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRkRzl3SWl3aWRtRnNkV1VpT2lJNGNIZ2lmVjE5ZlYwc0luSmxkbWx6YVc5dUlqb3hOekExTlRFM01qQTVPRGd3ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkxNmNEZGpaM2t6YnpaNFp6aDJaMmMyZDNSaWJuUWlMQ0oyWVd4MVpTSTZJa0ZzY21WaFpIa2dVM1ZpYzJOeWFXSmxaQ0lzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbU5zYVdOckxXSmxhR0YyYVc5eUlpd2lZMnhwWTJ0Q1pXaGhkbWx2Y2lJNmV5SjBlWEJsSWpvaWNtVnpkRzl5WlNKOWZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakUwY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRTBNQ1VpZlN4N0luQnliM0JsY25SNUlqb2lkR1Y0ZEMxaGJHbG5iaUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxMGIzQWlMQ0oyWVd4MVpTSTZJakUyY0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5TENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4TnpRNU5URTBNMzBzZXlKclpYa2lPaUpFYVhZZ1gxOXpkeTE2Y0dwc1pHRnlaV3A2WTI0dE9XMW5kV2QzWW1vaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJakkwY0hnaWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5TENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4TnpVMk56STJNbjBzZXlKclpYa2lPaUpFYVhZZ1gxOXpkeTFrT0hSalkzSnZabkYwZDNoaVlXaGxiREp1ZVhZaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWW1GamEyZHliM1Z1WkMxamIyeHZjaUlzSW5aaGJIVmxJam9pY21kaVlTZ3lOVFVzSURJMU5Td2dNalUxTENBeEtTSjlMSHNpY0hKdmNHVnlkSGtpT2lKd2IzTnBkR2x2YmlJc0luWmhiSFZsSWpvaVptbDRaV1FpZlN4N0luQnliM0JsY25SNUlqb2lZbTkwZEc5dElpd2lkbUZzZFdVaU9pSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2liR1ZtZENJc0luWmhiSFZsSWpvaU1DVWlmU3g3SW5CeWIzQmxjblI1SWpvaWNtbG5hSFFpTENKMllXeDFaU0k2SWpBbEluMHNleUp3Y205d1pYSjBlU0k2SW5vdGFXNWtaWGdpTENKMllXeDFaU0k2SWpFd01DSjlMSHNpY0hKdmNHVnlkSGtpT2lKM2FXUjBhQ0lzSW5aaGJIVmxJam9pTVRBd0pTSjlMSHNpY0hKdmNHVnlkSGtpT2lKdFlYZ3RkMmxrZEdnaUxDSjJZV3gxWlNJNklqUTJPSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbTFoY21kcGJpMXNaV1owSWl3aWRtRnNkV1VpT2lKaGRYUnZJbjBzZXlKd2NtOXdaWEowZVNJNkltMWhjbWRwYmkxeWFXZG9kQ0lzSW5aaGJIVmxJam9pWVhWMGJ5SjlMSHNpY0hKdmNHVnlkSGtpT2lKd1lXUmthVzVuTFhSdmNDSXNJblpoYkhWbElqb2lNVFp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNelJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MV3hsWm5RaUxDSjJZV3gxWlNJNklqRTJjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MXlhV2RvZENJc0luWmhiSFZsSWpvaU1UWndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdGRHOXdMV3hsWm5RdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJeU5IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZjbVJsY2kxMGIzQXRjbWxuYUhRdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJeU5IQjRJbjBzZXlKd2NtOXdaWEowZVNJNkltSnZlQzF6YUdGa2IzY2lMQ0oyWVd4MVpTSTZJakJ3ZUNBd2NIZ2dOREJ3ZUNCeVoySmhLREFzSURBc0lEQXNJREF1TVNraWZWMTlmVjBzSW1sdWFYUnBZV3hUZEhsc1pYTWlPbnQ5TENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4TnpVd09UVTROWDBzZXlKclpYa2lPaUpVWlhoMElGOWZjM2N0YVhKdGVtUm1kbkJtWTNaaWNqUnhiekpwYjNnM0lpd2lkbUZzZFdVaU9pSkJTU0JRVWs4Z05pMXRiMjUwYUNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakZ5WlcwaWZTeDdJbkJ5YjNCbGNuUjVJam9pWTI5c2IzSWlMQ0oyWVd4MVpTSTZJbkpuWW1Fb016Y3NJRFUwTENBNE9Dd2dNU2tpZlN4N0luQnliM0JsY25SNUlqb2labTl1ZEMxM1pXbG5hSFFpTENKMllXeDFaU0k2SWpZd01DSjlMSHNpY0hKdmNHVnlkSGtpT2lKc2FXNWxMV2hsYVdkb2RDSXNJblpoYkhWbElqb2lNVFF3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUowWlhoMExXRnNhV2R1SWl3aWRtRnNkV1VpT2lKalpXNTBaWElpZlN4N0luQnliM0JsY25SNUlqb2liV0Z5WjJsdUxXSnZkSFJ2YlNJc0luWmhiSFZsSWpvaU9IQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RkM0I0ZERCdWVXUmtiM0U1WW1GeVlua3Rhakl6SWl3aWRtRnNkV1VpT2lKR2NtVmxJRE10WkdGNUlIUnlhV0ZzTENCN2UzQnlhVzFoY25rdWNISnBZMlY5ZlNCaFpuUmxjaUIwY21saGJDQmxibVJ6SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVE53ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpqYjJ4dmNpSXNJblpoYkhWbElqb2ljbWRpWVNnek55d2dOVFFzSURnNExDQXhLU0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTkRBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4wc2V5SndjbTl3WlhKMGVTSTZJblJsZUhRdFlXeHBaMjRpTENKMllXeDFaU0k2SW1ObGJuUmxjaUo5TEhzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dFltOTBkRzl0SWl3aWRtRnNkV1VpT2lJeE5uQjRJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZTd2ljbVYyYVhOcGIyNGlPakUzTURFME1qQTRPVGd6TVROOUxIc2lhMlY1SWpvaVFuVjBkRzl1UW1GelpTQmZYM04zTFdscWVHUTBkRzh5T0hJeWNuWmxiWHBpTmpGcmNpSXNJblpoYkhWbElqb2lVM1JoY25RZ1dXOTFjaUJHY21WbElETXRSR0Y1SUZSeWFXRnNJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSmlkWFIwYjI0aUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKamJHbGpheTFpWldoaGRtbHZjaUlzSW1Oc2FXTnJRbVZvWVhacGIzSWlPbnNpZEhsd1pTSTZJbkIxY21Ob1lYTmxJaXdpY0hKdlpIVmpkQ0k2SW5CeWFXMWhjbmtpZlgxOUxIc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJalE0Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pWW1GamEyZHliM1Z1WkMxamIyeHZjaUlzSW5aaGJIVmxJam9pY21kaVlTZ3dMQ0F5TURnc0lERTFNQ3dnTVNraWZTeDdJbkJ5YjNCbGNuUjVJam9pYjNCaFkybDBlU0lzSW5aaGJIVmxJam9pTVNKOUxIc2ljSEp2Y0dWeWRIa2lPaUozYVdSMGFDSXNJblpoYkhWbElqb2lNVEF3SlNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpvWldsbmFIUWlMQ0oyWVd4MVpTSTZJalE0Y0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNVFp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp3WVdSa2FXNW5MWFJ2Y0NJc0luWmhiSFZsSWpvaU1UQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxXSnZkSFJ2YlNJc0luWmhiSFZsSWpvaU1UQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxXeGxablFpTENKMllXeDFaU0k2SWpFd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxeWFXZG9kQ0lzSW5aaGJIVmxJam9pTVRCd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0ZEc5d0xXeGxablF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUl4TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTEwYjNBdGNtbG5hSFF0Y21Ga2FYVnpJaXdpZG1Gc2RXVWlPaUl4TUhCNEluMHNleUp3Y205d1pYSjBlU0k2SW1KdmNtUmxjaTFpYjNSMGIyMHRiR1ZtZEMxeVlXUnBkWE1pTENKMllXeDFaU0k2SWpFd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFdKdmRIUnZiUzF5YVdkb2RDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqRXdjSGdpZlYxOWZWMHNJbkpsZG1semFXOXVJam94TnpBeE5ESXdPVFF6TnpJemZTeDdJbXRsZVNJNklsUmxlSFFnWDE5emR5MXpjR2s1T1dZdGFtVjROemx2YkdOMFkyUjBiR1FpTENKMllXeDFaU0k2SWxObFpTQkJiR3dnVUd4aGJuTWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWm05dWRDMXphWHBsSWl3aWRtRnNkV1VpT2lJeGNtVnRJbjBzZXlKd2NtOXdaWEowZVNJNkltTnZiRzl5SWl3aWRtRnNkV1VpT2lKeVoySmhLRFk0TENBeE1qa3NJREkxTXl3Z01Ta2lmU3g3SW5CeWIzQmxjblI1SWpvaVptOXVkQzEzWldsbmFIUWlMQ0oyWVd4MVpTSTZJall3TUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1UUXdKU0o5TEhzaWNISnZjR1Z5ZEhraU9pSjBaWGgwTFdGc2FXZHVJaXdpZG1Gc2RXVWlPaUpqWlc1MFpYSWlmU3g3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaWJtOXVaU0o5WFgxOVhTd2lhVzVwZEdsaGJGTjBlV3hsY3lJNmUzMTlMSHNpYTJWNUlqb2lTR1ZoWkdsdVp5QmZYM04zTFhSaE5uQnFZMnRuTldkb2VXTnFibWR5WVRSdWF5SXNJblpoYkhWbElqb2lQR1JwZGlCamJHRnpjejFjSW0xaGFXNHRhR1ZoWkdsdVoxd2lQbHh1WEc1SFpYUWdiVzl5WlNCaGRIUmxiblJwYjI0OFluSStYRzUzYVhSb0lEeHpjR0Z1SUdOc1lYTnpQVndpWVdOalpXNTBMV2hsWVdScGJtZGNJajVEWVhCMGFXOXVjend2YzNCaGJqNWNibHh1UEM5a2FYWStJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSm9NU0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKd1lXUmthVzVuTFd4bFpuUWlMQ0oyWVd4MVpTSTZJakkwY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pY0dGa1pHbHVaeTF5YVdkb2RDSXNJblpoYkhWbElqb2lNalJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUowWlhoMExXRnNhV2R1SWl3aWRtRnNkV1VpT2lKc1pXWjBJbjFkZlgxZExDSnBibWwwYVdGc1UzUjViR1Z6SWpwN2ZTd2ljbVYyYVhOcGIyNGlPakUzTURVMU1UZzNNREl5TlRKOUxIc2lhMlY1SWpvaVJHbDJJRjlmYzNjdE5XYzVkM1F4TW1OcVlXSnJiRE13ZG1aMWFHUnhJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltUnBjM0JzWVhraUxDSjJZV3gxWlNJNkltWnNaWGdpZlN4N0luQnliM0JsY25SNUlqb2labXhsZUMxa2FYSmxZM1JwYjI0aUxDSjJZV3gxWlNJNkluSnZkeUo5TEhzaWNISnZjR1Z5ZEhraU9pSmhiR2xuYmkxcGRHVnRjeUlzSW5aaGJIVmxJam9pWTJWdWRHVnlJbjBzZXlKd2NtOXdaWEowZVNJNkltcDFjM1JwWm5rdFkyOXVkR1Z1ZENJc0luWmhiSFZsSWpvaVkyVnVkR1Z5SW4wc2V5SndjbTl3WlhKMGVTSTZJbWRoY0NJc0luWmhiSFZsSWpvaU1USndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dGRHOXdJaXdpZG1Gc2RXVWlPaUpqWVd4aktIWmhjaWd0TFhOM0xXTnZiblJoYVc1bGNpMXdZV1JrYVc1bktTOHlLU0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxYUnZjQ0lzSW5aaGJIVmxJam9pWTJGc1l5aDJZWElvTFMxemR5MWpiMjUwWVdsdVpYSXRjR0ZrWkdsdVp5a2dLaUF3TGpZcEluMHNleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0WW05MGRHOXRJaXdpZG1Gc2RXVWlPaUpqWVd4aktIWmhjaWd0TFhOM0xXTnZiblJoYVc1bGNpMXdZV1JrYVc1bktTQXFJREF1TmlraWZWMTlmVjBzSW5KbGRtbHphVzl1SWpveE56QTFOVEUzTkRrMk56VXpmU3g3SW10bGVTSTZJbFJsZUhRZ1gxOXpkeTB3YURkc2NqWXhZM2xpZW5kbk56aHJZMmx0YzI4aUxDSjJZV3gxWlNJNklrUmxkR0ZwYkhNaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXM3NpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2labTl1ZEMxemFYcGxJaXdpZG1Gc2RXVWlPaUl4TkhCNEluMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RiR1ZtZENJc0luWmhiSFZsSWpvaVkyRnNZeWgyWVhJb0xTMXpkeTFtYjI1MExYTnBlbVVwSUNvZ01DNHhNalVwSW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RjbWxuYUhRaUxDSjJZV3gxWlNJNkltTmhiR01vZG1GeUtDMHRjM2N0Wm05dWRDMXphWHBsS1NBcUlEQXVNVEkxS1NKOVhYMTlYU3dpY21WMmFYTnBiMjRpT2pFM01EVTFNVGN6T1RNek56WjlMSHNpYTJWNUlqb2lWR1Y0ZENCZlgzTjNMVE5yT1hObE1qbGxZMjF3Wm1rNE5uaGxlbWx6Y0NJc0luWmhiSFZsSWpvaTRvQ2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1UUndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlMSHNpY0hKdmNHVnlkSGtpT2lKd1lXUmthVzVuTFd4bFpuUWlMQ0oyWVd4MVpTSTZJbU5oYkdNb2RtRnlLQzB0YzNjdFptOXVkQzF6YVhwbEtTQXFJREF1TVRJMUtTSjlMSHNpY0hKdmNHVnlkSGtpT2lKd1lXUmthVzVuTFhKcFoyaDBJaXdpZG1Gc2RXVWlPaUpqWVd4aktIWmhjaWd0TFhOM0xXWnZiblF0YzJsNlpTa2dLaUF3TGpFeU5Ta2lmVjE5ZlYwc0luSmxkbWx6YVc5dUlqb3hOekExTlRFM016azJNekl5ZlN4N0ltdGxlU0k2SWxSbGVIUWdYMTl6ZHkxalkybG5hblowYW1RNVpXdDRiWEkzYVdabGRERWlMQ0oyWVd4MVpTSTZJbFJsY20xeklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaVkyeHBZMnN0WW1Wb1lYWnBiM0lpTENKamJHbGphMEpsYUdGMmFXOXlJanA3SW5SNWNHVWlPaUp2Y0dWdUxYVnliQzFsZUhSbGNtNWhiQ0lzSW5WeWJDSTZJbWgwZEhCek9pOHZZbWxuZG5VdWRIWXZkR1Z5YlhNaWZYMTlMSHNpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2laR2x6Y0d4aGVTSXNJblpoYkhWbElqb2lhVzVzYVc1bExXSnNiMk5ySW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RkRzl3SWl3aWRtRnNkV1VpT2lJd0luMHNleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0WW05MGRHOXRJaXdpZG1Gc2RXVWlPaUl3SW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RiR1ZtZENJc0luWmhiSFZsSWpvaVkyRnNZeWgyWVhJb0xTMXpkeTFtYjI1MExYTnBlbVVwSUNvZ01DNHhNalVwSW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RjbWxuYUhRaUxDSjJZV3gxWlNJNkltTmhiR01vZG1GeUtDMHRjM2N0Wm05dWRDMXphWHBsS1NBcUlEQXVNVEkxS1NKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFMGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUwTUNVaWZWMTlmVjBzSW5KbGRtbHphVzl1SWpveE56QTFOVEUzTXpJNE5qQTJmU3g3SW10bGVTSTZJbFJsZUhRZ1gxOXpkeTFzY205amIyVjBkbmx2WldwNGNEa3pkbTUzTUdzaUxDSjJZV3gxWlNJNkl1S0FvaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKcGJteHBibVV0WW14dlkyc2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxMGIzQWlMQ0oyWVd4MVpTSTZJakFpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MWliM1IwYjIwaUxDSjJZV3gxWlNJNklqQWlmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1Wnkxc1pXWjBJaXdpZG1Gc2RXVWlPaUpqWVd4aktIWmhjaWd0TFhOM0xXWnZiblF0YzJsNlpTa2dLaUF3TGpFeU5Ta2lmU3g3SW5CeWIzQmxjblI1SWpvaWNHRmtaR2x1WnkxeWFXZG9kQ0lzSW5aaGJIVmxJam9pWTJGc1l5aDJZWElvTFMxemR5MW1iMjUwTFhOcGVtVXBJQ29nTUM0eE1qVXBJbjBzZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVFJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUpzYVc1bExXaGxhV2RvZENJc0luWmhiSFZsSWpvaU1UUXdKU0o5WFgxOVhYMHNleUpyWlhraU9pSlVaWGgwSUY5ZmMzY3RPR3AzWTJsM2FXWTVaVEpxT0dwa2QyOXZZekEzSWl3aWRtRnNkV1VpT2lKUWNtbDJZV041SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pWTJ4cFkyc3RZbVZvWVhacGIzSWlMQ0pqYkdsamEwSmxhR0YyYVc5eUlqcDdJblI1Y0dVaU9pSnZjR1Z1TFhWeWJDMWxlSFJsY201aGJDSXNJblZ5YkNJNkltaDBkSEJ6T2k4dlltbG5kblV1ZEhZdmNIUXZjSEpwZG1GamVTMXdiMnhwWTNraWZYMTlMSHNpY0hKbFptbDRJam9pWkdWbVlYVnNkQ0lzSW5CeWIzQmxjblI1SWpwN0luUjVjR1VpT2lKemRIbHNaWE1pTENKemRIbHNaWE1pT2x0N0luQnliM0JsY25SNUlqb2laR2x6Y0d4aGVTSXNJblpoYkhWbElqb2lhVzVzYVc1bExXSnNiMk5ySW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RkRzl3SWl3aWRtRnNkV1VpT2lJd0luMHNleUp3Y205d1pYSjBlU0k2SW5CaFpHUnBibWN0WW05MGRHOXRJaXdpZG1Gc2RXVWlPaUl3SW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RiR1ZtZENJc0luWmhiSFZsSWpvaVkyRnNZeWgyWVhJb0xTMXpkeTFtYjI1MExYTnBlbVVwSUNvZ01DNHhNalVwSW4wc2V5SndjbTl3WlhKMGVTSTZJbkJoWkdScGJtY3RjbWxuYUhRaUxDSjJZV3gxWlNJNkltTmhiR01vZG1GeUtDMHRjM2N0Wm05dWRDMXphWHBsS1NBcUlEQXVNVEkxS1NKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYTnBlbVVpTENKMllXeDFaU0k2SWpFMGNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaWJHbHVaUzFvWldsbmFIUWlMQ0oyWVd4MVpTSTZJakUwTUNVaWZWMTlmVjE5TEhzaWEyVjVJam9pUkdsMmFXUmxjaUJmWDNOM0xUUnFORzV4TWpsbFkyMXdabXd5TTNobGVubHZPU0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSnRZWEpuYVc0dFltOTBkRzl0SWl3aWRtRnNkV1VpT2lKallXeGpLSFpoY2lndExYTjNMV052Ym5SaGFXNWxjaTF3WVdSa2FXNW5LUzh5S1NKOVhYMTlYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0lzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYU3dpY21WMmFYTnBiMjRpT2pFM01EVTFNVGMxTnprd05EZDlMSHNpYTJWNUlqb2lSSEpoZDJWeUlGOWZjM2N0TUdVNGFtVXlPV1ZqYlhCbWFUZzJlR1Y2ZEhKM0lpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1KaFkydG5jbTkxYm1RdFkyOXNiM0lpTENKMllXeDFaU0k2SW5KblltRW9NalUxTENBeU5UVXNJREkxTlN3Z01Ta2lmU3g3SW5CeWIzQmxjblI1SWpvaWJXRjRMWGRwWkhSb0lpd2lkbUZzZFdVaU9pSTBOREJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRZbTkwZEc5dElpd2lkbUZzZFdVaU9pSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MWliM1IwYjIwaUxDSjJZV3gxWlNJNklqTTBjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MXNaV1owSWl3aWRtRnNkV1VpT2lJeE5uQjRJbjBzZXlKd2NtOXdaWEowZVNJNkluQmhaR1JwYm1jdGNtbG5hSFFpTENKMllXeDFaU0k2SWpFMmNIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFhSdmNDMXNaV1owTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pTWpSd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0ZEc5d0xYSnBaMmgwTFhKaFpHbDFjeUlzSW5aaGJIVmxJam9pTWpSd2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKaWIzSmtaWEl0WW05MGRHOXRMV3hsWm5RdGNtRmthWFZ6SWl3aWRtRnNkV1VpT2lJd2NIZ2lmU3g3SW5CeWIzQmxjblI1SWpvaVltOXlaR1Z5TFdKdmRIUnZiUzF5YVdkb2RDMXlZV1JwZFhNaUxDSjJZV3gxWlNJNklqQndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSndZV1JrYVc1bkxYUnZjQ0lzSW5aaGJIVmxJam9pTVRad2VDSjlMSHNpY0hKdmNHVnlkSGtpT2lKamIyeHZjaUlzSW5aaGJIVmxJam9pSTBaR09EWkNReUo5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTmpBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4xZGZYMWRMQ0p5WlhacGMybHZiaUk2TVRjd05UVXhPREE1TmpRNU5uMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRkJ5YjJSMVkzUnpJRTl3ZEdsdmJuTWdRMnh2YzJVZ1FuVjBkRzl1SUVOdmJuUmhhVzVsY2lJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUppWVdOclozSnZkVzVrTFdOdmJHOXlJaXdpZG1Gc2RXVWlPaUp5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURFcEluMWRmWDFkZlN4N0ltdGxlU0k2SWtScGRpQmZYM04zTFRkek0ydGxPRFJtZG14eWIzRTBOSGhsWVhkb2JpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSkVhWFlnWDE5emR5MHdaVGhxWlRJNVpXTnRjR1pwTXpCa1pYcGliMmtpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWNtOWtkV04wY3lCVFpXTjBhVzl1SUVsdWJtVnlJRU52Ym5SaGFXNWxjaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUZCeWIyUjFZM1FnVDNCMGFXOXVjeUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUZCeWIyUjFZM1FpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWNtOWtkV04wSUVKbklpd2lkbUZzZFdVaU9pSXVJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSEp2WkhWamRITWdYMTl6ZHkxbWVHOWthbTUwYTJodmNXcDRiV2czYVc1eFpqVWdQaUJRY205a2RXTjBJRUpuSURJaUxDSjJZV3gxWlNJNklpNGlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRkJ5YjJSMVkzUWdRbUZrWjJVaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVVISnZaSFZqZEhNZ1gxOXpkeTFtZUc5a2FtNTBhMmh2Y1dwNGJXZzNhVzV4WmpVZ1BpQlFjbTlrZFdOMElFSmhaR2RsSUVsdWJtVnlJaXdpZG1Gc2RXVWlPaUpHY21WbElGUnlhV0ZzSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp6Y0dGdUlpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCeWIyUjFZM1J6SUY5ZmMzY3Rabmh2WkdwdWRHdG9iM0ZxZUcxb04ybHVjV1kxSUQ0Z1VISnZaSFZqZENCSmJtNWxjaUJEYjI1MFlXbHVaWElpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCRGFHVmpheUJOWVhKcklFTnZiblJoYVc1bGNpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRkJ5YjJSMVkzUWdRMjl1ZEdWdWRDQkRiMjUwWVdsdVpYSWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSEp2WkhWamRITWdYMTl6ZHkxbWVHOWthbTUwYTJodmNXcDRiV2czYVc1eFpqVWdQaUJRY21sdFlYSjVJRXhwYm1VZ01TSXNJblpoYkhWbElqb2lKREF1T1RraUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWNtbHRZWEo1SUV4cGJtVWdNaUlzSW5aaGJIVmxJam9pVEdsdVpTQXlJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQnliMlIxWTNSeklGOWZjM2N0Wm5odlpHcHVkR3RvYjNGcWVHMW9OMmx1Y1dZMUlENGdVSEp2WkhWamRDQkRiMjUwWlc1MElFTnZiblJoYVc1bGNpQXlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEJ5YjJSMVkzUnpJRjlmYzNjdFpuaHZaR3B1ZEd0b2IzRnFlRzFvTjJsdWNXWTFJRDRnVUhKcGJXRnllU0JNYVc1bElETWlMQ0oyWVd4MVpTSTZJa3hwYm1VZ015SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lGQnlhVzFoY25rZ1RHbHVaU0EwSWl3aWRtRnNkV1VpT2lKTWFXNWxJRFFpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSEp2WkhWamRITWdYMTl6ZHkxbWVHOWthbTUwYTJodmNXcDRiV2czYVc1eFpqVWdQaUJRY205a2RXTjBJRElpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWNtOWtkV04wSUVKbklETWlMQ0oyWVd4MVpTSTZJaTRpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUZCeWIyUjFZM1FnUW1jZ05DSXNJblpoYkhWbElqb2lMaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEJ5YjJSMVkzUnpJRjlmYzNjdFpuaHZaR3B1ZEd0b2IzRnFlRzFvTjJsdWNXWTFJRDRnVUhKdlpIVmpkQ0JDWVdSblpTQXlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEJ5YjJSMVkzUnpJRjlmYzNjdFpuaHZaR3B1ZEd0b2IzRnFlRzFvTjJsdWNXWTFJRDRnVUhKdlpIVmpkQ0JDWVdSblpTQkpibTVsY2lBeUlpd2lkbUZzZFdVaU9pSkdjbVZsSUZSeWFXRnNJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSnpjR0Z1SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEJ5YjJSMVkzUnpJRjlmYzNjdFpuaHZaR3B1ZEd0b2IzRnFlRzFvTjJsdWNXWTFJRDRnVUhKdlpIVmpkQ0JKYm01bGNpQkRiMjUwWVdsdVpYSWdNaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUVOb1pXTnJJRTFoY21zZ1EyOXVkR0ZwYm1WeUlESWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSEp2WkhWamRITWdYMTl6ZHkxbWVHOWthbTUwYTJodmNXcDRiV2czYVc1eFpqVWdQaUJRY205a2RXTjBJRU52Ym5SbGJuUWdRMjl1ZEdGcGJtVnlJRE1pTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCVFpXTnZibVJoY25rZ1RHbHVaU0F4SWl3aWRtRnNkV1VpT2lJa01DNDVPU0lzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRk5sWTI5dVpHRnllU0JNYVc1bElESWlMQ0oyWVd4MVpTSTZJa3hwYm1VZ01pSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lGQnliMlIxWTNRZ1EyOXVkR1Z1ZENCRGIyNTBZV2x1WlhJZ05DSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRk5sWTI5dVpHRnllU0JNYVc1bElETWlMQ0oyWVd4MVpTSTZJa3hwYm1VZ015SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lGTmxZMjl1WkdGeWVTQk1hVzVsSURRaUxDSjJZV3gxWlNJNklreHBibVVnTkNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUZCeWIyUjFZM1FnTXlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lGQnliMlIxWTNRZ1FtY2dOU0lzSW5aaGJIVmxJam9pTGlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCeWIyUjFZM1J6SUY5ZmMzY3Rabmh2WkdwdWRHdG9iM0ZxZUcxb04ybHVjV1kxSUQ0Z1VISnZaSFZqZENCQ1p5QTJJaXdpZG1Gc2RXVWlPaUl1SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWNtOWtkV04wSUVKaFpHZGxJRE1pTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWNtOWtkV04wSUVKaFpHZGxJRWx1Ym1WeUlETWlMQ0oyWVd4MVpTSTZJa1p5WldVZ1ZISnBZV3dpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbk53WVc0aUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWNtOWtkV04wSUVsdWJtVnlJRU52Ym5SaGFXNWxjaUF6SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCeWIyUjFZM1J6SUY5ZmMzY3Rabmh2WkdwdWRHdG9iM0ZxZUcxb04ybHVjV1kxSUQ0Z1EyaGxZMnNnVFdGeWF5QkRiMjUwWVdsdVpYSWdNeUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUZCeWIyUjFZM1FnUTI5dWRHVnVkQ0JEYjI1MFlXbHVaWElnTlNJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lGUmxjblJwWVhKNUlFeHBibVVnTVNJc0luWmhiSFZsSWpvaUpEQXVPVGtpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSEp2WkhWamRITWdYMTl6ZHkxbWVHOWthbTUwYTJodmNXcDRiV2czYVc1eFpqVWdQaUJVWlhKMGFXRnllU0JNYVc1bElESWlMQ0oyWVd4MVpTSTZJa3hwYm1VZ01pSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lGQnliMlIxWTNRZ1EyOXVkR1Z1ZENCRGIyNTBZV2x1WlhJZ05pSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRlJsY25ScFlYSjVJRXhwYm1VZ015SXNJblpoYkhWbElqb2lUR2x1WlNBeklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCeWIyUjFZM1J6SUY5ZmMzY3Rabmh2WkdwdWRHdG9iM0ZxZUcxb04ybHVjV1kxSUQ0Z1ZHVnlkR2xoY25rZ1RHbHVaU0EwSWl3aWRtRnNkV1VpT2lKTWFXNWxJRFFpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSEp2WkhWamRITWdYMTl6ZHkxbWVHOWthbTUwYTJodmNXcDRiV2czYVc1eFpqVWdQaUJRZFhKamFHRnpaU0JDZFhSMGIyNGdRMjl1ZEdGcGJtVnlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEJ5YjJSMVkzUnpJRjlmYzNjdFpuaHZaR3B1ZEd0b2IzRnFlRzFvTjJsdWNXWTFJRDRnVUhWeVkyaGhjMlVnVEdsdVpTQlBibVVpTENKMllXeDFaU0k2SWxOMVluTmpjbWxpWlNCdWIzY2lMQ0ptY21WbFZISnBZV3hXWVd4MVpTSTZJbE4wWVhKMElFWnlaV1VnVkhKcFlXd2lMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhTd2ljbVYyYVhOcGIyNGlPakUzTURVMU1UZ3hNalkwTmpKOUxIc2lhMlY1SWpvaVVISnZaSFZqZEhNZ1gxOXpkeTFtZUc5a2FtNTBhMmh2Y1dwNGJXZzNhVzV4WmpVZ1BpQlFkWEpqYUdGelpTQk1hVzVsSUZSM2J5SXNJblpoYkhWbElqb2lUR2x1WlNCVWQyOGlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKdWIyNWxJbjFkZlgxZGZTeDdJbXRsZVNJNklsQnliMlIxWTNSeklGOWZjM2N0Wm5odlpHcHVkR3RvYjNGcWVHMW9OMmx1Y1dZMUlENGdVSFZ5WTJoaGMyVWdVM1ZpZEdsMGJHVWlMQ0oyWVd4MVpTSTZJazV2SUdOdmJXMXBkRzFsYm5Rc0lHTmhibU5sYkNCaGJubDBhVzFsTGlJc0ltWnlaV1ZVY21saGJGWmhiSFZsSWpvaWUzc2djSEpwYldGeWVTNTBjbWxoYkZCbGNtbHZaRVJoZVhNZ2ZYMHRaR0Y1SUdaeVpXVWdkSEpwWVd3c0lIUm9aVzRnZTNzZ2NISnBiV0Z5ZVM1d2NtbGpaU0I5ZlNCaFpuUmxjaUIwY21saGJDQmxibVJ6SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pYzNSNWJHVnpJaXdpYzNSNWJHVnpJanBiZXlKd2NtOXdaWEowZVNJNkltWnZiblF0YzJsNlpTSXNJblpoYkhWbElqb2lNVEp3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUptYjI1MExYZGxhV2RvZENJc0luWmhiSFZsSWpvaU5EQXdJbjBzZXlKd2NtOXdaWEowZVNJNklteHBibVV0YUdWcFoyaDBJaXdpZG1Gc2RXVWlPaUl4TkRBbEluMHNleUp3Y205d1pYSjBlU0k2SW05d1lXTnBkSGtpTENKMllXeDFaU0k2SWpFaWZTeDdJbkJ5YjNCbGNuUjVJam9pYldGeVoybHVMV0p2ZEhSdmJTSXNJblpoYkhWbElqb2lNSEI0SW4xZGZYMWRMQ0p5WlhacGMybHZiaUk2TVRjd05UVXhPREk0TXpJME1YMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRkIxY21Ob1lYTmxJRUoxZEhSdmJpQkRiMjUwWVdsdVpYSWdNaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUZCMWNtTm9ZWE5sSUV4cGJtVWdUMjVsSURJaUxDSjJZV3gxWlNJNklsQjFjbU5vWVhObElGTmxZMjl1WkdGeWVTSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQnliMlIxWTNSeklGOWZjM2N0Wm5odlpHcHVkR3RvYjNGcWVHMW9OMmx1Y1dZMUlENGdVSFZ5WTJoaGMyVWdUR2x1WlNCVWQyOGdNaUlzSW5aaGJIVmxJam9pVEdsdVpTQlVkMjhpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSmthWE53YkdGNUlpd2lkbUZzZFdVaU9pSnViMjVsSW4xZGZYMWRmU3g3SW10bGVTSTZJbEJ5YjJSMVkzUnpJRjlmYzNjdFpuaHZaR3B1ZEd0b2IzRnFlRzFvTjJsdWNXWTFJRDRnVUhWeVkyaGhjMlVnVTNWaWRHbDBiR1VnTWlJc0luWmhiSFZsSWpvaWMyVmpiMjVrWVhKNUlITmxiR1ZqZEdWa0lHUmxjMk55YVhCMGFXOXVJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW0xaGNtZHBiaTFpYjNSMGIyMGlMQ0oyWVd4MVpTSTZJakJ3ZUNKOVhYMTlYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUZCMWNtTm9ZWE5sSUVKMWRIUnZiaUJEYjI1MFlXbHVaWElnTXlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lGQjFjbU5vWVhObElFeHBibVVnVDI1bElETWlMQ0oyWVd4MVpTSTZJbEIxY21Ob1lYTmxJRlJsY25ScFlYSjVJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSEp2WkhWamRITWdYMTl6ZHkxbWVHOWthbTUwYTJodmNXcDRiV2czYVc1eFpqVWdQaUJRZFhKamFHRnpaU0JNYVc1bElGUjNieUF6SWl3aWRtRnNkV1VpT2lKTWFXNWxJRlIzYnlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbVJwYzNCc1lYa2lMQ0oyWVd4MVpTSTZJbTV2Ym1VaWZWMTlmVjE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWRYSmphR0Z6WlNCVGRXSjBhWFJzWlNBeklpd2lkbUZzZFdVaU9pSjBaWEowYVdGeWVTQnpaV3hsWTNSbFpDQmtaWE5qY21sd2RHbHZiaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKdFlYSm5hVzR0WW05MGRHOXRJaXdpZG1Gc2RXVWlPaUl3Y0hnaWZWMTlmVjE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUGNIUnBiMjV6SUVKMWRIUnZiaUJEYjI1MFlXbHVaWElpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCUWIybHVkR1Z5SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkTENKeVpYWnBjMmx2YmlJNk1UY3dOVFV4TnpVM016UXlPWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUU5d2RHbHZibk1nUW5WMGRHOXVJaXdpZG1Gc2RXVWlPaUpUWldVZ1FXeHNJRkJzWVc1eklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbU52Ykc5eUlpd2lkbUZzZFdVaU9pSm9jMnhoS0RJeU1Dd2dPVGdsTENBMk15VXNJREVwSW4xZGZYMWRMQ0p5WlhacGMybHZiaUk2TVRjd05UVXhOelUzTWprMk1YMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRWhwWkdSbGJpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRlJsZUhRaUxDSjJZV3gxWlNJNkludDdjSEpwYldGeWVTNXdjbWxqWlgxOUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCeWIyUjFZM1J6SUY5ZmMzY3Rabmh2WkdwdWRHdG9iM0ZxZUcxb04ybHVjV1kxSUQ0Z1ZHVjRkQ0F5SWl3aWRtRnNkV1VpT2lKN2UzTmxZMjl1WkdGeWVTNXdjbWxqWlgxOUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCeWIyUjFZM1J6SUY5ZmMzY3Rabmh2WkdwdWRHdG9iM0ZxZUcxb04ybHVjV1kxSUQ0Z1ZHVjRkQ0F6SWl3aWRtRnNkV1VpT2lKN2UzUmxjblJwWVhKNUxuQnlhV05sZlgwaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhKdlpIVmpkSE1nWDE5emR5MW1lRzlrYW01MGEyaHZjV3A0YldnM2FXNXhaalVnUGlCRGIyNTBZV2x1WlhJZ01pSXNJblpoYkhWbElqb2lRVWtnVUZKUElEWXRiVzl1ZEdnaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWNtOWtkV04wY3lCZlgzTjNMV1o0YjJScWJuUnJhRzl4YW5odGFEZHBibkZtTlNBK0lFTnZiblJoYVc1bGNpQXpJaXdpZG1Gc2RXVWlPaUpHY21WbElETXRaR0Y1SUhSeWFXRnNMQ0FrTlRrdU9Ua2dZV1owWlhJZ2RISnBZV3dnWlc1a2N5SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQnliMlIxWTNSeklGOWZjM2N0Wm5odlpHcHVkR3RvYjNGcWVHMW9OMmx1Y1dZMUlENGdTQ0JFYVhacFpHVnlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRY205a2RXTjBjeUJmWDNOM0xXWjRiMlJxYm5ScmFHOXhhbmh0YURkcGJuRm1OU0ErSUVnZ1JHbDJhV1JsY2lBeUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFjbTlrZFdOMGN5QmZYM04zTFdaNGIyUnFiblJyYUc5eGFuaHRhRGRwYm5GbU5TQStJRWdnUkdsMmFXUmxjaUF6SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKeVpYTjBiM0psTFRFaUxDSjJZV3gxWlNJNklsUmxjbTF6SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pWTJ4cFkyc3RZbVZvWVhacGIzSWlMQ0pqYkdsamEwSmxhR0YyYVc5eUlqcDdJblI1Y0dVaU9pSnlaWE4wYjNKbEluMTlmVjE5TEhzaWEyVjVJam9pWm05dmRHVnlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJa1p2YjNSbGNpQk5hVzVwYldGc0lFWnBjbk4wSWl3aWRtRnNkV1VpT2lKVVpYSnRjeUJ2WmlCVmMyVWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVJtOXZkR1Z5SUUxcGJtbHRZV3dnVEdGemRDSXNJblpoYkhWbElqb2lVSEpwZG1GamVTQlFiMnhwWTNraUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5BaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pUm05dmRHVnlJRVpwY25OMElpd2lkbUZzZFdVaU9pSkVaWFJoYVd4eklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWtadmIzUmxjaUJNWVhOMElpd2lkbUZzZFdVaU9pSlFjbWwyWVdONUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWtadmIzUmxjaUJEYjJ4MWJXNGdNU0lzSW5aaGJIVmxJam9pUkdWMFlXbHNjeUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRTBjSGdpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFME1DVWlmU3g3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaWJtOXVaU0o5WFgxOVhYMHNleUpyWlhraU9pSkdiMjkwWlhJZ1EyOXNkVzF1SURJaUxDSjJZV3gxWlNJNkl1S0FvaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKbWIyNTBMWE5wZW1VaUxDSjJZV3gxWlNJNklqRTBjSGdpZlN4N0luQnliM0JsY25SNUlqb2liR2x1WlMxb1pXbG5hSFFpTENKMllXeDFaU0k2SWpFME1DVWlmU3g3SW5CeWIzQmxjblI1SWpvaVpHbHpjR3hoZVNJc0luWmhiSFZsSWpvaWJtOXVaU0o5WFgxOVhYMHNleUpyWlhraU9pSkdiMjkwWlhJZ1EyOXNkVzF1SURNaUxDSjJZV3gxWlNJNklsUmxjbTF6SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdDdJbkJ5WldacGVDSTZJbVJsWm1GMWJIUWlMQ0p3Y205d1pYSjBlU0k2ZXlKMGVYQmxJam9pWTJ4cFkyc3RZbVZvWVhacGIzSWlMQ0pqYkdsamEwSmxhR0YyYVc5eUlqcDdJblI1Y0dVaU9pSnZjR1Z1TFhWeWJDMWxlSFJsY201aGJDSXNJblZ5YkNJNkltaDBkSEJ6T2k4dlltbG5kblV1ZEhZdmRHVnliWE1pZlgxOUxIc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUp6ZEhsc1pYTWlMQ0p6ZEhsc1pYTWlPbHQ3SW5CeWIzQmxjblI1SWpvaVptOXVkQzF6YVhwbElpd2lkbUZzZFdVaU9pSXhOSEI0SW4wc2V5SndjbTl3WlhKMGVTSTZJbXhwYm1VdGFHVnBaMmgwSWl3aWRtRnNkV1VpT2lJeE5EQWxJbjFkZlgxZGZTeDdJbXRsZVNJNklrWnZiM1JsY2lCRGIyeDFiVzRnTkNJc0luWmhiSFZsSWpvaTRvQ2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1UUndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSnNhVzVsTFdobGFXZG9kQ0lzSW5aaGJIVmxJam9pTVRRd0pTSjlYWDE5WFgwc2V5SnJaWGtpT2lKR2IyOTBaWElnUTI5c2RXMXVJRFVpTENKMllXeDFaU0k2SWxCeWFYWmhZM2tpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlczc2ljSEpsWm1sNElqb2laR1ZtWVhWc2RDSXNJbkJ5YjNCbGNuUjVJanA3SW5SNWNHVWlPaUpqYkdsamF5MWlaV2hoZG1sdmNpSXNJbU5zYVdOclFtVm9ZWFpwYjNJaU9uc2lkSGx3WlNJNkltOXdaVzR0ZFhKc0xXVjRkR1Z5Ym1Gc0lpd2lkWEpzSWpvaWFIUjBjSE02THk5aWFXZDJkUzUwZGk5d2RDOXdjbWwyWVdONUxYQnZiR2xqZVNKOWZYMHNleUp3Y21WbWFYZ2lPaUprWldaaGRXeDBJaXdpY0hKdmNHVnlkSGtpT25zaWRIbHdaU0k2SW5OMGVXeGxjeUlzSW5OMGVXeGxjeUk2VzNzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhOcGVtVWlMQ0oyWVd4MVpTSTZJakUwY0hnaWZTeDdJbkJ5YjNCbGNuUjVJam9pYkdsdVpTMW9aV2xuYUhRaUxDSjJZV3gxWlNJNklqRTBNQ1VpZlYxOWZWMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1KaFkydG5jbTkxYm1RdFkyOXNiM0lpTENKMllXeDFaU0k2SW5KblltRW9NalUxTENBeU5UVXNJREkxTlN3Z01Ta2lmU3g3SW5CeWIzQmxjblI1SWpvaWJXRjRMWGRwWkhSb0lpd2lkbUZzZFdVaU9pSTBOREJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUp0WVhKbmFXNHRZbTkwZEc5dElpd2lkbUZzZFdVaU9pSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2ljR0ZrWkdsdVp5MWliM1IwYjIwaUxDSjJZV3gxWlNJNklqTTBjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxYUnZjQzFzWldaMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU1qUndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdGRHOXdMWEpwWjJoMExYSmhaR2wxY3lJc0luWmhiSFZsSWpvaU1qUndlQ0o5TEhzaWNISnZjR1Z5ZEhraU9pSmliM0prWlhJdFltOTBkRzl0TFd4bFpuUXRjbUZrYVhWeklpd2lkbUZzZFdVaU9pSXdjSGdpZlN4N0luQnliM0JsY25SNUlqb2lZbTl5WkdWeUxXSnZkSFJ2YlMxeWFXZG9kQzF5WVdScGRYTWlMQ0oyWVd4MVpTSTZJakJ3ZUNKOUxIc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUp1YjI1bEluMWRmWDFkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUZCeWIyUjFZM1J6SUU5d2RHbHZibk1nUTJ4dmMyVWdRblYwZEc5dUlFTnZiblJoYVc1bGNpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5SWl3aWRtRnNkV1VpT2lKeVoySmhLREkxTlN3Z01qVTFMQ0F5TlRVc0lERXBJbjFkZlgxZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lFTmhjbVFnUTI5dWRHVnVkQ0JEYjI1MFlXbHVaWElpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhWeVkyaGhjMlVnUkhKaGQyVnlJRDRnUTI5dWRHRnBibVZ5SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUVSeVlYZGxjaUJKYm01bGNpQkRiMjUwWVdsdVpYSWlMQ0oyWVd4MVpTSTZJaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPblJ5ZFdVc0luUmhaMDVoYldVaU9pSmthWFlpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlENGdVSEp2WkhWamRDQlBjSFJwYjI1eklpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGQnliMlIxWTNRaUxDSjJZV3gxWlNJNklpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9uUnlkV1VzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVVIVnlZMmhoYzJVZ1JISmhkMlZ5SUQ0Z1VISnZaSFZqZENCQ1p5SXNJblpoYkhWbElqb2lMaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkJ5YjJSMVkzUWdRbWNnTWlJc0luWmhiSFZsSWpvaUxpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGQnliMlIxWTNRZ1FtRmtaMlVpTENKMllXeDFaU0k2SWlJc0luTnJhWEJKYm01bGNraFVUVXdpT25SeWRXVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhWeVkyaGhjMlVnUkhKaGQyVnlJRDRnVUhKdlpIVmpkQ0JDWVdSblpTQkpibTVsY2lJc0luWmhiSFZsSWpvaVJuSmxaU0JVY21saGJDSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWMzQmhiaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQlFjbTlrZFdOMElFbHVibVZ5SUVOdmJuUmhhVzVsY2lJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCRGFHVmpheUJOWVhKcklFTnZiblJoYVc1bGNpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQlFjbTlrZFdOMElFTnZiblJsYm5RZ1EyOXVkR0ZwYm1WeUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGQnlhVzFoY25rZ1RHbHVaU0F4SWl3aWRtRnNkV1VpT2lJa01DNDVPU0lzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQlFjbWx0WVhKNUlFeHBibVVnTWlJc0luWmhiSFZsSWpvaVRHbHVaU0F5SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkJ5YjJSMVkzUWdRMjl1ZEdWdWRDQkRiMjUwWVdsdVpYSWdNaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRZFhKamFHRnpaU0JFY21GM1pYSWdQaUJRY21sdFlYSjVJRXhwYm1VZ015SXNJblpoYkhWbElqb2lUR2x1WlNBeklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUZCeWFXMWhjbmtnVEdsdVpTQTBJaXdpZG1Gc2RXVWlPaUpNYVc1bElEUWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVVIVnlZMmhoYzJVZ1JISmhkMlZ5SUQ0Z1VISnZaSFZqZENBeUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGQnliMlIxWTNRZ1FtY2dNeUlzSW5aaGJIVmxJam9pTGlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUZCeWIyUjFZM1FnUW1jZ05DSXNJblpoYkhWbElqb2lMaUlzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkJ5YjJSMVkzUWdRbUZrWjJVZ01pSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQlFjbTlrZFdOMElFSmhaR2RsSUVsdWJtVnlJRElpTENKMllXeDFaU0k2SWtaeVpXVWdWSEpwWVd3aUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW5Od1lXNGlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVVIVnlZMmhoYzJVZ1JISmhkMlZ5SUQ0Z1VISnZaSFZqZENCSmJtNWxjaUJEYjI1MFlXbHVaWElnTWlJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCRGFHVmpheUJOWVhKcklFTnZiblJoYVc1bGNpQXlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkJ5YjJSMVkzUWdRMjl1ZEdWdWRDQkRiMjUwWVdsdVpYSWdNeUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRZFhKamFHRnpaU0JFY21GM1pYSWdQaUJUWldOdmJtUmhjbmtnVEdsdVpTQXhJaXdpZG1Gc2RXVWlPaUlrTUM0NU9TSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCVFpXTnZibVJoY25rZ1RHbHVaU0F5SWl3aWRtRnNkV1VpT2lKTWFXNWxJRElpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlENGdVSEp2WkhWamRDQkRiMjUwWlc1MElFTnZiblJoYVc1bGNpQTBJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRk5sWTI5dVpHRnllU0JNYVc1bElETWlMQ0oyWVd4MVpTSTZJa3hwYm1VZ015SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCVFpXTnZibVJoY25rZ1RHbHVaU0EwSWl3aWRtRnNkV1VpT2lKTWFXNWxJRFFpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlENGdVSEp2WkhWamRDQXpJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkJ5YjJSMVkzUWdRbWNnTlNJc0luWmhiSFZsSWpvaUxpSXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGQnliMlIxWTNRZ1FtY2dOaUlzSW5aaGJIVmxJam9pTGlJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUZCeWIyUjFZM1FnUW1Ga1oyVWdNeUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRZFhKamFHRnpaU0JFY21GM1pYSWdQaUJRY205a2RXTjBJRUpoWkdkbElFbHVibVZ5SURNaUxDSjJZV3gxWlNJNklrWnlaV1VnVkhKcFlXd2lMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluTndZVzRpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlENGdVSEp2WkhWamRDQkpibTVsY2lCRGIyNTBZV2x1WlhJZ015SXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQkRhR1ZqYXlCTllYSnJJRU52Ym5SaGFXNWxjaUF6SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUZCeWIyUjFZM1FnUTI5dWRHVnVkQ0JEYjI1MFlXbHVaWElnTlNJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCVVpYSjBhV0Z5ZVNCTWFXNWxJREVpTENKMllXeDFaU0k2SWlRd0xqazVJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGUmxjblJwWVhKNUlFeHBibVVnTWlJc0luWmhiSFZsSWpvaVRHbHVaU0F5SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUp3SWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkJ5YjJSMVkzUWdRMjl1ZEdWdWRDQkRiMjUwWVdsdVpYSWdOaUlzSW5aaGJIVmxJam9pSWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2ZEhKMVpTd2lkR0ZuVG1GdFpTSTZJbVJwZGlJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRZFhKamFHRnpaU0JFY21GM1pYSWdQaUJVWlhKMGFXRnllU0JNYVc1bElETWlMQ0oyWVd4MVpTSTZJa3hwYm1VZ015SXNJbk5yYVhCSmJtNWxja2hVVFV3aU9tWmhiSE5sTENKMFlXZE9ZVzFsSWpvaWNDSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCVVpYSjBhV0Z5ZVNCTWFXNWxJRFFpTENKMllXeDFaU0k2SWt4cGJtVWdOQ0lzSW5OcmFYQkpibTVsY2toVVRVd2lPbVpoYkhObExDSjBZV2RPWVcxbElqb2ljQ0lzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQlFkWEpqYUdGelpTQkNkWFIwYjI0Z1EyOXVkR0ZwYm1WeUlpd2lkbUZzZFdVaU9pSWlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcDBjblZsTENKMFlXZE9ZVzFsSWpvaVpHbDJJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGQjFjbU5vWVhObElFeHBibVVnVDI1bElpd2lkbUZzZFdVaU9pSlRkR0Z5ZENCWmIzVnlJRVp5WldVZ055MUVZWGtnVkhKcFlXd2lMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQlFkWEpqYUdGelpTQk1hVzVsSUZSM2J5SXNJblpoYkhWbElqb2lUR2x1WlNCVWQyOGlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYmV5SndjbVZtYVhnaU9pSmtaV1poZFd4MElpd2ljSEp2Y0dWeWRIa2lPbnNpZEhsd1pTSTZJbk4wZVd4bGN5SXNJbk4wZVd4bGN5STZXM3NpY0hKdmNHVnlkSGtpT2lKa2FYTndiR0Y1SWl3aWRtRnNkV1VpT2lKdWIyNWxJbjFkZlgxZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lGQjFjbU5vWVhObElGTjFZblJwZEd4bElpd2lkbUZzZFdVaU9pSThaR2wySUhOMGVXeGxQVndpYldGeVoybHVMV0p2ZEhSdmJUb2dPSEI0TzF3aVBrRkpJRkJTVHlBMkxXMXZiblJvUEM5a2FYWStYRzQ4WkdsMklITjBlV3hsUFZ3aVptOXVkQzF6YVhwbE9pQXhNM0I0T3lCbWIyNTBMWGRsYVdkb2REb2dOREF3TzF3aVBrWnlaV1VnTXkxa1lYa2dkSEpwWVd3c0lDUTFPUzQ1T1NCaFpuUmxjaUIwY21saGJDQmxibVJ6UEM5a2FYWStJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW1admJuUXRjMmw2WlNJc0luWmhiSFZsSWpvaU1YSmxiU0o5TEhzaWNISnZjR1Z5ZEhraU9pSm1iMjUwTFhkbGFXZG9kQ0lzSW5aaGJIVmxJam9pTmpBd0luMHNleUp3Y205d1pYSjBlU0k2SW14cGJtVXRhR1ZwWjJoMElpd2lkbUZzZFdVaU9pSXhOREFsSW4wc2V5SndjbTl3WlhKMGVTSTZJbTl3WVdOcGRIa2lMQ0oyWVd4MVpTSTZJakVpZlYxOWZWMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlENGdVSFZ5WTJoaGMyVWdRblYwZEc5dUlFTnZiblJoYVc1bGNpQXlJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkIxY21Ob1lYTmxJRXhwYm1VZ1QyNWxJRElpTENKMllXeDFaU0k2SWxCMWNtTm9ZWE5sSUZObFkyOXVaR0Z5ZVNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUZCMWNtTm9ZWE5sSUV4cGJtVWdWSGR2SURJaUxDSjJZV3gxWlNJNklreHBibVVnVkhkdklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzNzaWNISmxabWw0SWpvaVpHVm1ZWFZzZENJc0luQnliM0JsY25SNUlqcDdJblI1Y0dVaU9pSnpkSGxzWlhNaUxDSnpkSGxzWlhNaU9sdDdJbkJ5YjNCbGNuUjVJam9pWkdsemNHeGhlU0lzSW5aaGJIVmxJam9pYm05dVpTSjlYWDE5WFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCUWRYSmphR0Z6WlNCVGRXSjBhWFJzWlNBeUlpd2lkbUZzZFdVaU9pSnpaV052Ym1SaGNua2djMlZzWldOMFpXUWdaR1Z6WTNKcGNIUnBiMjRpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlENGdVSFZ5WTJoaGMyVWdRblYwZEc5dUlFTnZiblJoYVc1bGNpQXpJaXdpZG1Gc2RXVWlPaUlpTENKemEybHdTVzV1WlhKSVZFMU1JanAwY25WbExDSjBZV2RPWVcxbElqb2laR2wySWl3aWMzVmlWSGx3WlNJNkluWmhjaUlzSW5CeWIzQmxjblJwWlhNaU9sdGRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRkIxY21Ob1lYTmxJRXhwYm1VZ1QyNWxJRE1pTENKMllXeDFaU0k2SWxCMWNtTm9ZWE5sSUZSbGNuUnBZWEo1SWl3aWMydHBjRWx1Ym1WeVNGUk5UQ0k2Wm1Gc2MyVXNJblJoWjA1aGJXVWlPaUprYVhZaUxDSnpkV0pVZVhCbElqb2lkbUZ5SWl3aWNISnZjR1Z5ZEdsbGN5STZXMTE5TEhzaWEyVjVJam9pVUhWeVkyaGhjMlVnUkhKaGQyVnlJRDRnVUhWeVkyaGhjMlVnVEdsdVpTQlVkMjhnTXlJc0luWmhiSFZsSWpvaVRHbHVaU0JVZDI4aUxDSnphMmx3U1c1dVpYSklWRTFNSWpwbVlXeHpaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiZXlKd2NtVm1hWGdpT2lKa1pXWmhkV3gwSWl3aWNISnZjR1Z5ZEhraU9uc2lkSGx3WlNJNkluTjBlV3hsY3lJc0luTjBlV3hsY3lJNlczc2ljSEp2Y0dWeWRIa2lPaUprYVhOd2JHRjVJaXdpZG1Gc2RXVWlPaUp1YjI1bEluMWRmWDFkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUZCMWNtTm9ZWE5sSUZOMVluUnBkR3hsSURNaUxDSjJZV3gxWlNJNkluUmxjblJwWVhKNUlITmxiR1ZqZEdWa0lHUmxjMk55YVhCMGFXOXVJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0ZGZTeDdJbXRsZVNJNklsQjFjbU5vWVhObElFUnlZWGRsY2lBK0lFOXdkR2x2Ym5NZ1FuVjBkRzl1SUVOdmJuUmhhVzVsY2lJc0luWmhiSFZsSWpvaUlpd2ljMnRwY0VsdWJtVnlTRlJOVENJNmRISjFaU3dpZEdGblRtRnRaU0k2SW1ScGRpSXNJbk4xWWxSNWNHVWlPaUoyWVhJaUxDSndjbTl3WlhKMGFXVnpJanBiWFgwc2V5SnJaWGtpT2lKUWRYSmphR0Z6WlNCRWNtRjNaWElnUGlCUWIybHVkR1Z5SWl3aWRtRnNkV1VpT2lJaUxDSnphMmx3U1c1dVpYSklWRTFNSWpwMGNuVmxMQ0owWVdkT1lXMWxJam9pWkdsMklpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHRkZlN4N0ltdGxlU0k2SWxCMWNtTm9ZWE5sSUVSeVlYZGxjaUErSUU5d2RHbHZibk1nUW5WMGRHOXVJaXdpZG1Gc2RXVWlPaUpUWldVZ1FXeHNJRkJzWVc1eklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKd0lpd2ljM1ZpVkhsd1pTSTZJblpoY2lJc0luQnliM0JsY25ScFpYTWlPbHQ3SW5CeVpXWnBlQ0k2SW1SbFptRjFiSFFpTENKd2NtOXdaWEowZVNJNmV5SjBlWEJsSWpvaWMzUjViR1Z6SWl3aWMzUjViR1Z6SWpwYmV5SndjbTl3WlhKMGVTSTZJbU52Ykc5eUlpd2lkbUZzZFdVaU9pSm9jMnhoS0RJeU1Dd2dPVGdsTENBMk15VXNJREVwSW4xZGZYMWRmU3g3SW10bGVTSTZJbEIxY21Ob1lYTmxJRVJ5WVhkbGNpQStJRWhwWkdSbGJpSXNJblpoYkhWbElqb2lJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZkSEoxWlN3aWRHRm5UbUZ0WlNJNkltUnBkaUlzSW5OMVlsUjVjR1VpT2lKMllYSWlMQ0p3Y205d1pYSjBhV1Z6SWpwYlhYMHNleUpyWlhraU9pSlFkWEpqYUdGelpTQkVjbUYzWlhJZ1BpQlVaWGgwSWl3aWRtRnNkV1VpT2lKN2UzQnlhVzFoY25rdWNISnBZMlY5ZlNJc0luTnJhWEJKYm01bGNraFVUVXdpT21aaGJITmxMQ0owWVdkT1lXMWxJam9pY0NJc0luTjFZbFI1Y0dVaU9pSjJZWElpTENKd2NtOXdaWEowYVdWeklqcGJYWDBzZXlKclpYa2lPaUpRZFhKamFHRnpaU0JFY21GM1pYSWdQaUJVWlhoMElESWlMQ0oyWVd4MVpTSTZJbnQ3YzJWamIyNWtZWEo1TG5CeWFXTmxmWDBpTENKemEybHdTVzV1WlhKSVZFMU1JanBtWVd4elpTd2lkR0ZuVG1GdFpTSTZJbkFpTENKemRXSlVlWEJsSWpvaWRtRnlJaXdpY0hKdmNHVnlkR2xsY3lJNlcxMTlMSHNpYTJWNUlqb2lVSFZ5WTJoaGMyVWdSSEpoZDJWeUlENGdWR1Y0ZENBeklpd2lkbUZzZFdVaU9pSjdlM1JsY25ScFlYSjVMbkJ5YVdObGZYMGlMQ0p6YTJsd1NXNXVaWEpJVkUxTUlqcG1ZV3h6WlN3aWRHRm5UbUZ0WlNJNkluQWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVVIVnlZMmhoYzJVZ1JISmhkMlZ5SUQ0Z1EyOXVkR0ZwYm1WeUlESWlMQ0oyWVd4MVpTSTZJa0ZKSUZCU1R5QTJMVzF2Ym5Sb0lpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVVIVnlZMmhoYzJVZ1JISmhkMlZ5SUQ0Z1EyOXVkR0ZwYm1WeUlETWlMQ0oyWVd4MVpTSTZJa1p5WldVZ015MWtZWGtnZEhKcFlXd3NJQ1ExT1M0NU9TQmhablJsY2lCMGNtbGhiQ0JsYm1Seklpd2ljMnRwY0VsdWJtVnlTRlJOVENJNlptRnNjMlVzSW5SaFowNWhiV1VpT2lKa2FYWWlMQ0p6ZFdKVWVYQmxJam9pZG1GeUlpd2ljSEp2Y0dWeWRHbGxjeUk2VzExOUxIc2lhMlY1SWpvaVZHVjRkQ0JmWDNOM0xXVmhjR0UwYkhwMVpIcGhiRGhqWm5NeGIyaHVieUlzSW5aaGJIVmxJam9pVkc5MFlXd2dSSFZsSUZSdlpHRjVPaUI3ZXlCd2NtbHRZWEo1TG5CeWFXTmxJSDE5SWl3aVpuSmxaVlJ5YVdGc1ZtRnNkV1VpT2lKVWIzUmhiQ0JFZFdVZ1ZHOWtZWGs2SUNRd0xqQXdJaXdpYzJ0cGNFbHVibVZ5U0ZSTlRDSTZabUZzYzJVc0luUmhaMDVoYldVaU9pSndJaXdpYzNWaVZIbHdaU0k2SW5aaGNpSXNJbkJ5YjNCbGNuUnBaWE1pT2x0N0luQnlaV1pwZUNJNkltUmxabUYxYkhRaUxDSndjbTl3WlhKMGVTSTZleUowZVhCbElqb2ljM1I1YkdWeklpd2ljM1I1YkdWeklqcGJleUp3Y205d1pYSjBlU0k2SW5SbGVIUXRZV3hwWjI0aUxDSjJZV3gxWlNJNkltTmxiblJsY2lKOVhYMTlYU3dpYVc1cGRHbGhiRk4wZVd4bGN5STZlMzBzSW5KbGRtbHphVzl1SWpveE56QTFOVEU0TXpFMk16Y3pmVjE5JwogICAgICAgIHdpbmRvdy5TdXBlcndhbGwuYWZ0ZXJCdWlsZGVyTG9hZGVkID0gKCkgPT4geyAKICAgICAgICAgd2luZG93LlN1cGVyd2FsbC5jb25maWd1cmUoSlNPTi5wYXJzZShgeyJuYXYiOiJzaG93IiwicGpzIjoiaHR0cHM6Ly9jZG4uc3VwZXJ3YWxsLm1lL3J1bnRpbWUvZW50cnlwb2ludC5qcyIsImZvbnQiOiIiLCJmb290ZXIiOiJjb21wYWN0IiwibG9nb1VSTCI6Ii4uL3B1YmxpYy9hc3NldHMvbG9nby5zdmciLCJuYXZMZWZ0IjoiaGlkZSIsInNwYWNpbmciOiIxMHB4IiwiY3VzdG9tSlMiOiJsZXQgcmVzdG9yZUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXB3LXZhcj1cXFwiRGl2IF9fc3ctenBqbGRhcmVqemNuLTltZ3Vnd2JqXFxcIl0nKTtcXG5sZXQgc3dGb290ZXJPdXRlckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzd0Zvb3Rlck91dGVyQ29udGFpbmVyJyk7XFxuc3dGb290ZXJPdXRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChyZXN0b3JlQnV0dG9uKTtcXG5cXG5jb25zdCBwcmltYXJ5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcHctdmFyPVxcXCJEaXYgX19zdy16aWctNWw5c2ViOGtwZ2FkdzdiaWpcXFwiXScpO1xcbmNvbnN0IHNlY29uZGFyeUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXB3LXZhcj1cXFwiRGl2IF9fc3ctM2FlcGx6aDB4eHZ1azBtY3VqMm12XFxcIl0nKTtcXG5jb25zdCB0ZXJ0aWFyeUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXB3LXZhcj1cXFwiRGl2IF9fc3ctZWVtZGtxeG5ra2xuby1xbXdlOWJqXFxcIl0nKTtcXG5cXG4vLyBXaGVuIGVpdGhlciBvZiB0aGUgYWJvdmUgYnV0dG9ucyBhcmUgY2xpY2tlZCwgdGVtcG9yYXJpbHkgcmVkdWNlIHRoZWlyIHNpemUgYnkgLjEgcG9pbnRzXFxuXFxucHJpbWFyeUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcXG4gICAgcHJpbWFyeUJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAnc2NhbGUoMC45KSc7XFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgICAgcHJpbWFyeUJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAnc2NhbGUoMSknO1xcbiAgICB9LCAxMDApO1xcbn0pO1xcblxcbnNlY29uZGFyeUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcXG4gICAgc2Vjb25kYXJ5QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICdzY2FsZSgwLjkpJztcXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICBzZWNvbmRhcnlCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3NjYWxlKDEpJztcXG4gICAgfSwgMTAwKTtcXG59KTtcXG5cXG50ZXJ0aWFyeUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcXG4gICAgdGVydGlhcnlCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3NjYWxlKDAuOSknO1xcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgIHRlcnRpYXJ5QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICdzY2FsZSgxKSc7XFxuICAgIH0sIDEwMCk7XFxufSk7XFxuXFxuY29uc3QgYW5jaG9yU2Nyb2xsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcHctdmFyPVxcXCJEaXYgX19zdy1idXMwdDQtby1majVwbzFmbDl2a2pcXFwiXScpO1xcbmNvbnN0IGFsbFBsYW5zQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcHctdmFyPVxcXCJUZXh0IF9fc3ctc3BpOTlmLWpleDc5b2xjdGNkdGxkXFxcIl0nKTtcXG5cXG4vLyBXaGVuIHlvdSBjbGljayBvbiB0aGUgYWxsUGxhbnNCdXR0b24sIHNjcm9sbCB0byB0aGUgYW5jaG9yU2Nyb2xsXFxuYWxsUGxhbnNCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XFxuICAgIGFuY2hvclNjcm9sbC5zY3JvbGxJbnRvVmlldygpO1xcbiAgICB9XFxuKTsiLCJmb250U2l6ZSI6ImNhbGMobWluKDQuNXZ3LCAxcmVtKSkiLCJuYXZSaWdodCI6Imljb24iLCJjdXN0b21DU1MiOiIuc3ctaC1kaXZpZGVyIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbi5zdy1wdXJjaGFzZS1idXR0b24ge1xcbiAgICBiYWNrZ3JvdW5kOiAjMDBEMDk2ICFpbXBvcnRhbnQ7XFxufVxcbi5zdy1wcm9kdWN0LWlubmVyLWNvbnRhaW5lciB7XFxuICAgIGJhY2tncm91bmQ6IHdoaXRlICFpbXBvcnRhbnQ7XFxufVxcbi5zdy1kYXJrLW92ZXJsYXkge1xcbiAgICB3aWR0aDogMjAwdnc7XFxuICAgIGxlZnQ6IC01MHZ3O1xcbn1cXG5cXG5bZGF0YS1wdy12YXI9XFxcIkRpdiBfX3N3LXppZy01bDlzZWI4a3BnYWR3N2JpalxcXCJdIHtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMXM7XFxufVxcblxcbltkYXRhLXB3LXZhcj1cXFwiRGl2IF9fc3ctM2FlcGx6aDB4eHZ1azBtY3VqMm12XFxcIl0ge1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xcztcXG59XFxuXFxuW2RhdGEtcHctdmFyPVxcXCJEaXYgX19zdy1lZW1ka3F4bmtrbG5vLXFtd2U5YmpcXFwiXSB7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjFzO1xcbn1cXG5cXG5bZGF0YS1wdy12YXI9XFxcIkltYWdlQmFzZSBfX3N3LWpvd2h1dWFta2VhejIybXJ4b2xya1xcXCJdIHtcXG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XFxufVxcblxcbi5tYWluLWhlYWRpbmcge1xcbiAgY29sb3I6ICMwMDA7XFxuICBmb250LWZhbWlseTogSW50ZXI7XFxuICBmb250LXNpemU6IDI1cHg7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGluZS1oZWlnaHQ6IDEwMCU7IC8qIDI1cHggKi9cXG4gIGxldHRlci1zcGFjaW5nOiAtMC41cHg7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuXFxuLmFjY2VudC1oZWFkaW5nIHtcXG4gIGNvbG9yOiAjNDQ4MUZEO1xcbiAgZm9udC1mYW1pbHk6IEludGVyO1xcbiAgZm9udC1zaXplOiAzMHB4O1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxMDAlO1xcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjZweDtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xcbn0iLCJkaXJlY3Rpb24iOiJ2ZXJ0aWNhbCIsIm5hdkNlbnRlciI6ImhpZGUiLCJicmFuZENvbG9yIjoiaHNsYSgyMjAsIDk4JSwgNjMlLCAxKSIsImxvZ29IZWlnaHQiOiIzNXB4IiwiYmFkZ2VSYWRpdXMiOiI4cHgiLCJib3JkZXJDb2xvciI6InJnYmEoMjU1LCAyNTUsIDI1NSwgMSkiLCJib3JkZXJXaWR0aCI6IjBweCIsImNhcmRQYWRkaW5nIjoiY2FsYyh2YXIoLS1zdy1zcGFjaW5nKSAqIDEuNikiLCJnb29nbGVGb250cyI6IiIsImhlYWRpbmdGb250IjoiIiwibmF2UG9zaXRpb24iOiJmaXhlZCIsImhpZGVQcm9kdWN0cyI6InRydWUiLCJwcm9kdWN0Q291bnQiOiJvbmUiLCJmb290ZXJEaXZpZGVyIjoiaGlkZSIsImZvcmNlRGFya01vZGUiOiJmYWxzZSIsInByb2R1Y3RSYWRpdXMiOiIxMnB4IiwiYnJhbmRUZXh0Q29sb3IiOiIjRkZGRkZGIiwiY29udGVudFBhZGRpbmciOiJjYWxjKHZhcigtLXN3LXNwYWNpbmcpICogMS42KSIsImZvb3RlclBvc2l0aW9uIjoiaW5saW5lIiwibmF2TGVmdEljb25VUkwiOiIuLi9wdWJsaWMvYXNzZXRzL25hdi1idXR0b24uc3ZnIiwicHJvZHVjdERpdmlkZXIiOiJzaG93IiwicHJvZHVjdFBhZGRpbmciOiIxNXB4IiwicHVyY2hhc2VSYWRpdXMiOiIxNXB4IiwidXNlQ3VzdG9tRm9udHMiOiJmYWxzZSIsImJhY2tncm91bmRDb2xvciI6InJnYmEoMTksIDIwLCAyMywgMC43KSIsImNoZWNrTWFya01hcmdpbiI6IjAgMTJweCAwIDRweCIsImNvbnRhaW5lclJhZGl1cyI6IjI0cHgiLCJmb290ZXJBbGlnbm1lbnQiOiJjZW50ZXIiLCJmb3JlZ3JvdW5kQ29sb3IiOiJoc2xhKDIyMCwgNDElLCAyNSUsIDEpIiwibWluTmF2YmFySGVpZ2h0IjoiNjRweCIsIm5hdlJpZ2h0SWNvblVSTCI6Ii4uL3B1YmxpYy9hc3NldHMvbmF2LWJ1dHRvbi5zdmciLCJwYXl3YWxsTWF4V2lkdGgiOiI1MDBweCIsInByZXZpZXdEYXJrTW9kZSI6ImZhbHNlIiwic2VjdGlvblBhZGRpbmdYIjoiMHB4Iiwic2VjdGlvblBhZGRpbmdZIjoiMHB4IiwiY29udGVudEFsaWdubWVudCI6InRvcCIsImluc2V0c1RvcENvbnRlbnQiOiJmYWxzZSIsInJldmVyc2VEaXJlY3Rpb24iOiJmYWxzZSIsInN0YXR1c0JhclBhZGRpbmciOiIzNHB4IiwibmF2QmFja2dyb3VuZEJsdXIiOiJmYWxzZSIsImNhcmRCYWNrZ3JvdW5kQmx1ciI6InRydWUiLCJuYXZCYWNrZ3JvdW5kQ29sb3IiOiJhdXRvIiwibmF2QnV0dG9uSWNvbnNTaXplIjoiNDJweCIsInByb2R1Y3REZXNjcmlwdGlvbiI6InNob3ciLCJicmFuZFNlY29uZGFyeUNvbG9yIjoiIiwibmF2TGVmdElubmVySWNvblVSTCI6Ii4uL3B1YmxpYy9hc3NldHMvbmF2LWJ1dHRvbi5zdmciLCJwcmltYXJ5UHJvZHVjdEJhZGdlIjoiaGlkZSIsInNlbGVjdGVkQm9yZGVyV2lkdGgiOiIycHgiLCJuYXZSaWdodElubmVySWNvblVSTCI6Ii4uL3B1YmxpYy9hc3NldHMvbmF2LWJ1dHRvbi5zdmciLCJzaG93UHJvZHVjdENoZWNrTWFyayI6ImhpZGUiLCJ0ZXJ0aWFyeVByb2R1Y3RCYWRnZSI6ImhpZGUiLCJidXR0b25CYWNrZ3JvdW5kQ29sb3IiOiIiLCJwdXJjaGFzZUJ1dHRvbkxpbmVUd28iOiJzaG93Iiwic2Vjb25kYXJ5UHJvZHVjdEJhZGdlIjoiaGlkZSIsInNlbGVjdGVkQ2hlY2tCb3hJbWFnZSI6Imh0dHBzOi8vc3RhdGljLnN1cGVyd2FsbGFzc2V0cy5jb20vdW9Rc0R3bXJuYW1pcWtma3pSS3ZDIiwicGF5d2FsbEJhY2tncm91bmRDb2xvciI6ImhzbGEoMjEwLCAxMDAlLCA5OCUsIDEpIiwicHJvZHVjdEJhY2tncm91bmRDb2xvciI6InJnYmEoMCwwLDAsMC44NSkiLCJoaWRlRml4ZWRQdXJjaGFzZURyYXdlciI6InRydWUiLCJ1bnNlbGVjdGVkQ2hlY2tCb3hJbWFnZSI6Imh0dHBzOi8vc3RhdGljLnN1cGVyd2FsbGFzc2V0cy5jb20vRWxSR2JIa2lSUVR2RlEzR29qYmZ1IiwiYmFja2dyb3VuZENvbnRlbnRNYXhXaWR0aCI6InBheXdhbGxNYXhXaWR0aCIsImF1dG9BZGp1c3RDb250ZW50QWxpZ25tZW50IjoidHJ1ZSJ9YCkpCiAgICAgICAgICB3aW5kb3cuU3VwZXJ3YWxsLnNldERvbShKU09OLnBhcnNlKGB7InZlcnNpb24iOjExLCJjYXJkQ29udGVudCI6W10sIm1haW5Db250ZW50IjpbeyJpZCI6Il9fc3ctQnVzMHQ0LW8tRko1UE8xZkw5VktKIiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctdEE2UGpDa2c1Z2hZQ0pOZ3JhNE5rIiwibmFtZSI6ImhlYWRpbmciLCJzZXR0aW5ncyI6eyJ0eXBlIjoiaDEiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LUpPd2h1VWFta0VhWjIybXJYT2xSayIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tL0xrLVRJSkRFRTN3bFNmcDQ3dm1DQyIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX1dLCJzZXR0aW5ncyI6eyJzdHlsZSI6IiIsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctQ1N3NGIwZ1dLX1NXM3NWRkw2T0k4IiwibmFtZSI6InNlY3Rpb24iLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXRWZXJUUGxiQnNDc3NMMHd0M0ZUVyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy01NUdJVjl0Y050VnhkRDk0LTZ4aGsiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1idDBCNmtseHpvcVNJTGVXU2stQkIiLCJuYW1lIjoidGltZWxpbmUiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LS1heEREdExFOHZZX0NtYXRiVjFjZyIsIm5hbWUiOiJ0aW1lbGluZUl0ZW0iLCJzZXR0aW5ncyI6eyJzdHlsZSI6IiIsImlzTGFzdCI6ZmFsc2UsImljb25VcmwiOiIuLi9wdWJsaWMvYXNzZXRzL3QtY2hlY2suc3ZnIiwiaGlkZUljb25zIjpmYWxzZSwiaWNvbldpZHRoIjoyNCwic2hvd0NoZWNrIjpmYWxzZSwidHJhaWxTdHlsZSI6IiIsImd1dHRlcldpZHRoIjoiMTZweCIsImJ1bGxldFJhZGl1cyI6OTk5LCJjb250ZW50U3R5bGUiOiIiLCJwcmltYXJ5Q29sb3IiOiJ2YXIoLS1zdy1icmFuZC1jb2xvcikiLCJjaGVja21hcmtJY29uIjoibW9qby9jaGVjay5zdmciLCJzdWJ0aXRsZVN0eWxlIjoiIiwic2Vjb25kYXJ5Q29sb3IiOiJ2YXIoLS1zdy1icmFuZC1jb2xvcikiLCJpc1N0ZXBDb21wbGV0ZWQiOmZhbHNlLCJpY29uQ29udGFpbmVyV2lkdGgiOjQwLCJpY29uQ29udGFpbmVyU2hhZG93IjoiMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wKSJ9LCJjb250YWluZXIiOnsiYmx1ciI6ZmFsc2UsImNhcmQiOmZhbHNlLCJiYWRnZSI6ZmFsc2UsImJsZWVkIjpmYWxzZSwiY292ZXIiOmZhbHNlLCJpbnNldCI6ZmFsc2UsImxpZ2h0IjpmYWxzZSwic3R5bGUiOiIiLCJ3aWR0aCI6IjEwMCUiLCJoZWlnaHQiOiJhdXRvIiwibm9NYXJnaW4iOmZhbHNlLCJmdWxsV2lkdGgiOmZhbHNlLCJub1BhZGRpbmciOmZhbHNlLCJ0ZXh0QWxpZ24iOiJsZWZ0IiwidGV4dENvbG9yIjoiIiwiY2FyZFJhZGl1cyI6IjE2cHgiLCJmdWxsSGVpZ2h0IjpmYWxzZSwibGlnaHRCbGVlZCI6ZmFsc2UsImJsZWVkQm90dG9tIjpmYWxzZSwibGlnaHRNYXJnaW4iOmZhbHNlLCJzaG93RGl2aWRlciI6ZmFsc2UsImhlYXZ5UGFkZGluZyI6ZmFsc2UsImxpZ2h0UGFkZGluZyI6ZmFsc2UsIm5vQmFja2dyb3VuZCI6ZmFsc2UsIm5vVG9wUGFkZGluZyI6ZmFsc2UsImJhY2tncm91bmRDb2xvciI6IiIsImJhY2tncm91bmRJbWFnZSI6IiIsImJsZWVkQmFja2dyb3VuZCI6ZmFsc2UsImV4dHJhTGlnaHRCbGVlZCI6ZmFsc2UsImJhY2tncm91bmRPcGFjaXR5IjoxfX0seyJpZCI6Il9fc3ctenNWVm9aQldmYVhaaXR2dUZRS3k5IiwibmFtZSI6InRpbWVsaW5lSXRlbSIsInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaXNMYXN0IjpmYWxzZSwiaWNvblVybCI6Ii4uL3B1YmxpYy9hc3NldHMvdC1jaGVjay5zdmciLCJoaWRlSWNvbnMiOmZhbHNlLCJpY29uV2lkdGgiOjI0LCJzaG93Q2hlY2siOmZhbHNlLCJ0cmFpbFN0eWxlIjoiIiwiZ3V0dGVyV2lkdGgiOiJ2YXIoLS1zdy1jb250YWluZXItcGFkZGluZykiLCJidWxsZXRSYWRpdXMiOjk5OSwiY29udGVudFN0eWxlIjoiIiwicHJpbWFyeUNvbG9yIjoidmFyKC0tc3ctYnJhbmQtY29sb3IpIiwiY2hlY2ttYXJrSWNvbiI6Im1vam8vY2hlY2suc3ZnIiwic3VidGl0bGVTdHlsZSI6IiIsInNlY29uZGFyeUNvbG9yIjoidmFyKC0tc3ctYnJhbmQtY29sb3IpIiwiaXNTdGVwQ29tcGxldGVkIjpmYWxzZSwiaWNvbkNvbnRhaW5lcldpZHRoIjo0MCwiaWNvbkNvbnRhaW5lclNoYWRvdyI6IjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMCkifSwiY29udGFpbmVyIjp7ImJsdXIiOmZhbHNlLCJjYXJkIjpmYWxzZSwiYmFkZ2UiOmZhbHNlLCJibGVlZCI6ZmFsc2UsImNvdmVyIjpmYWxzZSwiaW5zZXQiOmZhbHNlLCJsaWdodCI6ZmFsc2UsInN0eWxlIjoiIiwid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byIsIm5vTWFyZ2luIjpmYWxzZSwiZnVsbFdpZHRoIjpmYWxzZSwibm9QYWRkaW5nIjpmYWxzZSwidGV4dEFsaWduIjoibGVmdCIsInRleHRDb2xvciI6IiIsImNhcmRSYWRpdXMiOiIxNnB4IiwiZnVsbEhlaWdodCI6ZmFsc2UsImxpZ2h0QmxlZWQiOmZhbHNlLCJibGVlZEJvdHRvbSI6ZmFsc2UsImxpZ2h0TWFyZ2luIjpmYWxzZSwic2hvd0RpdmlkZXIiOmZhbHNlLCJoZWF2eVBhZGRpbmciOmZhbHNlLCJsaWdodFBhZGRpbmciOmZhbHNlLCJub0JhY2tncm91bmQiOmZhbHNlLCJub1RvcFBhZGRpbmciOmZhbHNlLCJiYWNrZ3JvdW5kQ29sb3IiOiIiLCJiYWNrZ3JvdW5kSW1hZ2UiOiIiLCJibGVlZEJhY2tncm91bmQiOmZhbHNlLCJleHRyYUxpZ2h0QmxlZWQiOmZhbHNlLCJiYWNrZ3JvdW5kT3BhY2l0eSI6MX19LHsiaWQiOiJfX3N3LTNRd1NmWWlJcmtOX3NKWDJGazYzdyIsIm5hbWUiOiJ0aW1lbGluZUl0ZW0iLCJzZXR0aW5ncyI6eyJzdHlsZSI6IiIsImlzTGFzdCI6dHJ1ZSwiaWNvblVybCI6Ii4uL3B1YmxpYy9hc3NldHMvdC1jaGVjay5zdmciLCJoaWRlSWNvbnMiOmZhbHNlLCJpY29uV2lkdGgiOjI0LCJzaG93Q2hlY2siOmZhbHNlLCJ0cmFpbFN0eWxlIjoiIiwiZ3V0dGVyV2lkdGgiOiIxNnB4IiwiYnVsbGV0UmFkaXVzIjo5OTksImNvbnRlbnRTdHlsZSI6IiIsInByaW1hcnlDb2xvciI6InZhcigtLXN3LWJyYW5kLWNvbG9yKSIsImNoZWNrbWFya0ljb24iOiJtb2pvL2NoZWNrLnN2ZyIsInN1YnRpdGxlU3R5bGUiOiIiLCJzZWNvbmRhcnlDb2xvciI6InZhcigtLXN3LWJyYW5kLWNvbG9yKSIsImlzU3RlcENvbXBsZXRlZCI6ZmFsc2UsImljb25Db250YWluZXJXaWR0aCI6NDAsImljb25Db250YWluZXJTaGFkb3ciOiIwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjApIn0sImNvbnRhaW5lciI6eyJibHVyIjpmYWxzZSwiY2FyZCI6ZmFsc2UsImJhZGdlIjpmYWxzZSwiYmxlZWQiOmZhbHNlLCJjb3ZlciI6ZmFsc2UsImluc2V0IjpmYWxzZSwibGlnaHQiOmZhbHNlLCJzdHlsZSI6IiIsIndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8iLCJub01hcmdpbiI6ZmFsc2UsImZ1bGxXaWR0aCI6ZmFsc2UsIm5vUGFkZGluZyI6ZmFsc2UsInRleHRBbGlnbiI6ImxlZnQiLCJ0ZXh0Q29sb3IiOiIiLCJjYXJkUmFkaXVzIjoiMTZweCIsImZ1bGxIZWlnaHQiOmZhbHNlLCJsaWdodEJsZWVkIjpmYWxzZSwiYmxlZWRCb3R0b20iOmZhbHNlLCJsaWdodE1hcmdpbiI6ZmFsc2UsInNob3dEaXZpZGVyIjpmYWxzZSwiaGVhdnlQYWRkaW5nIjpmYWxzZSwibGlnaHRQYWRkaW5nIjpmYWxzZSwibm9CYWNrZ3JvdW5kIjpmYWxzZSwibm9Ub3BQYWRkaW5nIjpmYWxzZSwiYmFja2dyb3VuZENvbG9yIjoiIiwiYmFja2dyb3VuZEltYWdlIjoiIiwiYmxlZWRCYWNrZ3JvdW5kIjpmYWxzZSwiZXh0cmFMaWdodEJsZWVkIjpmYWxzZSwiYmFja2dyb3VuZE9wYWNpdHkiOjF9fV0sImNvbnRhaW5lciI6eyJibHVyIjpmYWxzZSwiY2FyZCI6ZmFsc2UsImJhZGdlIjpmYWxzZSwiYmxlZWQiOmZhbHNlLCJjb3ZlciI6ZmFsc2UsImluc2V0IjpmYWxzZSwibGlnaHQiOmZhbHNlLCJzdHlsZSI6IiIsIndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8iLCJub01hcmdpbiI6dHJ1ZSwiZnVsbFdpZHRoIjpmYWxzZSwibm9QYWRkaW5nIjpmYWxzZSwidGV4dEFsaWduIjoibGVmdCIsInRleHRDb2xvciI6IiIsImNhcmRSYWRpdXMiOiIxNnB4IiwiZnVsbEhlaWdodCI6ZmFsc2UsImxpZ2h0QmxlZWQiOmZhbHNlLCJibGVlZEJvdHRvbSI6ZmFsc2UsImxpZ2h0TWFyZ2luIjpmYWxzZSwic2hvd0RpdmlkZXIiOmZhbHNlLCJoZWF2eVBhZGRpbmciOmZhbHNlLCJsaWdodFBhZGRpbmciOmZhbHNlLCJub0JhY2tncm91bmQiOmZhbHNlLCJub1RvcFBhZGRpbmciOmZhbHNlLCJiYWNrZ3JvdW5kQ29sb3IiOiIiLCJiYWNrZ3JvdW5kSW1hZ2UiOiIiLCJibGVlZEJhY2tncm91bmQiOmZhbHNlLCJleHRyYUxpZ2h0QmxlZWQiOmZhbHNlLCJiYWNrZ3JvdW5kT3BhY2l0eSI6MX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19XX0seyJpZCI6Il9fc3ctZDQzLU1EZTBYWXJzaHNQZ3NwN19nIiwibmFtZSI6InNlY3Rpb24iLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXJULS1LLWpTaWt1VHV0T3l3bWYtQiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy00RmR0SVp0bmxabFBzcFhPbkZtT2IiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1xWGRYUFVnaE5nVU9pQjBad1VrN0YiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy0zanlqQURpbXFZcUdEQWhIWllvc2EiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctZWVtRGtReG5LS2xOTy1xbXdlOUJKIiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctVGdWencxZWlQRGNjLWFRNnVZREEtIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LVZWcktpR0xPQ1kzUnFwR2ZiMkRXUyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1iX0tTdTRRd0Z4bmRaTklVdlMzYzEiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctNEx4Q0hhRjZnMVc4VU1zRkV1d0ZwIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LS1wZ0R0WTVRWTRjVE5WUjlIRzFRayIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1aOXBVV29veVduWGlsU3pqNUpUck0iLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOltdLCJzZXR0aW5ncyI6eyJzdHlsZSI6IiIsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctTVNYazF1WnVBYm94b183NkctZVlkIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LVNlTnFPLVRpNUtDMjVWTzBrNU9KVCIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1yY0NmUkxDVmhZa3Z1Y19ZMTdHTE0iLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX1dLCJzZXR0aW5ncyI6eyJzdHlsZSI6IiIsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctR2hnTmhfa25pX01HY3J4UjdXc2d0IiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctLTRkdzFwbWMycWJYOTZqa1ZIbGRMIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LTNhRXBsWkgwWHh2VWswbUNVSjJNViIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LVYxQWdYNTJzUWhGaF9MZUFwbGg1NSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy12Mmt4X1dKVndjU1cyUFFaUDRRSWIiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctSC1IRHpITUFFa0tUOUw2djBIWW9nIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LXFKbUZxUDU5QkRxaTFNYjRoTUJudSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1OWnUzUHhRYndoVVNWXzlLSElJbTciLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctemtLdUt3QWtIeTlUbUJoVGo3U28wIiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbXSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LTdhZVNWdWU2emxjTGQ5Sy1LS1JmNyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1ndE9jRl91aUJScWlrQzJ5WW9yaDQiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX1dLCJzZXR0aW5ncyI6eyJzdHlsZSI6IiIsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctMmU3TUFhdHF3NWtNbEJ5QjBlTjBlIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LWhGMUlRYzNTWV9QRmZIUHgwQjR2diIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LUZCXy1RX1g1dTZaRF80ZkstSHZPYyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy16aWctNWw5c2ViOGtQZ2FEdzdCaUoiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1Gc3liS1FDWmFhMGlJbzhsUHpjMlkiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctWGJfUjJyc3ktOEcxOEFSQUU0VjhTIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LWxsd1ZYOW0xLWIxSEo1Q1FOaHkzaiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1OeXZ5OVlDemtYeXBKYXhzOGVndnEiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctZ3ZHZ0swOTh1OHB2bTgzSEZPbmhsIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LW9neldFelhwUjJ3ZEVjUE9tNGFxOSIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W10sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1EQ0F2aGFZOHFRbjgxWEVxbUJJUUkiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctUVdTdEVXS1MzQ2VFYkwzOUs4VnhMIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LXlZR1NyOFp1ZzhPbk13X1lUVHFVUyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV19LHsiaWQiOiJfX3N3LXRrVjUtNEotUzZwelpCVU0yeFBKLSIsIm5hbWUiOiJzZWN0aW9uIiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1QRlJDWDQ0NHBxOXZ3SlpoVXRoYUgiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctdXFkYm1STmhtem91RzdUWnlUemdnIiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctX0ZpWkxTdVdMZHZYNDRCckVzeGk1IiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctRVhKQnMyRHY0TnhVSnYxbUlfSTFaIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LUdWdE1nUXZob1U4bkdyVkpqMF90OCIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1tb19SSExRaHQzbFlmZVUtMWVLb04iLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy0zQW9qNnlFLU5hWGZlTWtiOS1OLUoiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1UY1p4T1FqeG1EdnRpNnlYeDM3NUYiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9MTWJDSk1NNGtnTEIxWnk3eVd6SUgiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LUVCOHFMZzBBQlJORWtPbl9MbGstcSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1McTVfVkFHZXVkYU5tdFNmNXYxdkciLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy0xcm1QNEt0UWplYjlFRmJVb2JIMUkiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9ReDF3dXh3YW5sRzkyaTBEdUFiYVoiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LWVIOXB6TG0xZFV5dmRONy14M0JUaiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1hSVpzOVAxdXp6VjFyWF9RRG9HNzgiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1sOWZuUnpETDlGeENwSFdJdkhrMUIiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9vZWEzWUF5ZllKYTA0V29wMEF1c3AiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LVBfNWVIa29kanNhdzVTWkZXakhheSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy13WmY3VlQweDVxV01fOHNVazJHeG8iLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1FRnZVSGI3WVhJck0tbnFXTmtodXEiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1jM3pqRTlSS29lSi1LOWVkM0tlWVUiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9yU1BiMkVxOVJTR1dCd1NsLTc0OW0iLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LUlVWjdhaG53dUp1TWRwZzVEUW5PWSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1VMGUtZFFrS200aTZ4V05fVjFfYVciLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1pc2szMXZENmFvMzRrWmxiQTZhNGIiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9yU1BiMkVxOVJTR1dCd1NsLTc0OW0iLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LXVLVjV5ME0yWllsQXR0cVFLSnJmWCIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1lUUZzc1VjRmVGelF4UzdacElQYVAiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1lbFdqSHV0Vmc1aXlpUURXYzR2emIiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9yU1BiMkVxOVJTR1dCd1NsLTc0OW0iLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LWh6WThUTnBMV0NqUVQxMFlVUEtkWSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1Ldm02X2h4Qi1aTzhMX1pfY0xMcjgiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1hMHc5OXB6c0tmMllUUkZieFdXcXEiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9yU1BiMkVxOVJTR1dCd1NsLTc0OW0iLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LWZsczh1SXRPN081TFBpTlFPQXRVaSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1hZW11dUVlZzNYc3JxaF9PdkVHRHQiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1pMFV4enQtSDUwdnpaNDYtNFVjRTAiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91dDFLczlFV2UtZkNTN01ieHhhTWUiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LXlNOTBaTFVuQ3kzVldZVmlUMGsxSiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1vY2ZEZlpjWG16dWNSR1h0ci1vWDIiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1BNHk5a251Sm9QOXJmaEd6YTZ0aTUiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctckFtdTJYUF9rcjVpRnM1TjVnai1lIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LWVEejRJeGxQWmVOXzRxdkxxYjJoWCIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LVRsSXVrQnVzRDd0MEVQdVNrMjk2dSIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXh2UE1sbjVNSEdOUjJLT1l5UGh6RCIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tL21aQWhpS0UzcGRwN2V2THVrMndhOCIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX0seyJpZCI6Il9fc3ctZDZYVjlSelp3amwybl9pc3p3UFhGIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LWV1bmRYZ1pqLU1fY1ZDaEIxbkxhQSIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXRsdkRhWDhSQ0E2b3FaV0h6bk5INyIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tL1F4MXd1eHdhbmxHOTJpMER1QWJhWiIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX0seyJpZCI6Il9fc3ctLVdjLWpWdjhmVTRTMDhWd1NCdFhZIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LXJqdDBfeGQ2SWFOSkw0YlhGeGRGeCIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LWtOejlZOVJMWEowbHBvWkpiU1RmRiIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tL2xibUtCNGZsTWxmUDBPVnFvb3NWYyIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX0seyJpZCI6Il9fc3ctdzRuUDZmX2lrTTFOYkNpUU81ZUg1IiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LVgzUk15NzdMbW4xQUpkbnc0U0JtMiIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXVfN00wZEEzcF94OU1JZzlmZ3hLXyIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXJBT3R1SXM2d0VOckFvdXlVanRleSIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tLzQwNTVHLU1OdUhsazZ5QUJPS3dCQiIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX0seyJpZCI6Il9fc3ctcXlRR0FRWWlaWU1DVzJVMUVIb2pGIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LWlxNWJ6Vnd0MjJXNWFZM3prNUxVTiIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LUM5MktjYnZWTHByNk1OMnNralR4SiIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tLzQwNTVHLU1OdUhsazZ5QUJPS3dCQiIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX0seyJpZCI6Il9fc3ctaml5YWpUaDJhUUxVOHNuUmluSjBNIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LTFOV0FiQ0RTcWMtYnVQdzQ0TWh1QyIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LVNsamtnNGt1NXZhMjVvN19Jb0M4WiIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tLzQwNTVHLU1OdUhsazZ5QUJPS3dCQiIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX0seyJpZCI6Il9fc3ctQ1l6ck5HMGFPNGppUHFGZnZiSFI2IiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LWxRN0dSblRuaFVRZXM3eURRX2U4RiIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LUQ5RUFseVRmV2RKUlIwR0RrdDIwNiIsIm5hbWUiOiJpbWFnZUJhc2UiLCJzZXR0aW5ncyI6eyJzcmMiOiJodHRwczovL3N0YXRpYy5zdXBlcndhbGxhc3NldHMuY29tLzQwNTVHLU1OdUhsazZ5QUJPS3dCQiIsImFsdFRleHQiOiJJbWFnZSIsImluaXRpYWxTdHlsZXMiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byJ9fX0seyJpZCI6Il9fc3ctT3RKRnJXMkE2Zmw3TzZjQ2ZZM0VYIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiIiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LUx4Q0JVZERHa3gydTRUQUlPd214diIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXdHNEIwOVBCbUF3U09yVnRCV05FUiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1EVXJOSDg3S0E0aDdPRWNWOXJqLWYiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctaUNOMXdCb0NzVmE1N2FmRjNnd3dIIiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctb2JVSlhiSWo4RjRaLVpmdEJBYUotIiwibmFtZSI6ImRpdiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctNW5reUJnSGhUUEhGd1VFSUZqWHI1IiwibmFtZSI6ImltYWdlQmFzZSIsInNldHRpbmdzIjp7InNyYyI6Imh0dHBzOi8vc3RhdGljLnN1cGVyd2FsbGFzc2V0cy5jb20vZDUzM3FkVHBWTDlXOFRmNlhXcXp2IiwiYWx0VGV4dCI6IkltYWdlIiwiaW5pdGlhbFN0eWxlcyI6eyJ3aWR0aCI6IjEwMCUiLCJoZWlnaHQiOiJhdXRvIn19fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1WTW5FeXJVYmpNcmVhZktTeEhlMmgiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1PQXRzVTY0TmZ0ZVhhbFRBU05NTksiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9tek0yNFpFVUxVYzhSY1o4b3FFMFoiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LUpCS0EwblJQaGZQbkVLNjZyaFlSdCIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy0wTnVmdXNkZEpfenp6dndGTTI2akwiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1qbVk3S0dFOVpNcDlrdzAybFAzZy0iLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9qTGZrckc3eVNfVVpFTEM0NVBvR3ciLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LUNqeUxZNFkwMEtQSXVGSFkyUi1XWiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1tQTdwQm56WHJwbllnM1hOYndpYi0iLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1VZDVwT1dpQkhhQjRMN2FoeEJHaUwiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1TUGxyeWFxMnRITXlFVGxla3lCRjgiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91dDFLczlFV2UtZkNTN01ieHhhTWUiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LXhoaWQzTFl0RExlUlR1Vzd0UDB5ZCIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy00aXBRMlJrME9TUXZEZ0xBX195a3oiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy16V1Bxd1hhNjB4cDItNk5nR1VKd20iLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91dDFLczlFV2UtZkNTN01ieHhhTWUiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LS1nbVhuOW1BNDRraVVabzVXeHFxQSIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1USkxqM2FjVl9VNnYtS1NXejFlVHQiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1icTRhd2lRQUphTnNLNlNNYlgzSWsiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91dDFLczlFV2UtZkNTN01ieHhhTWUiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LTBYamFkNEdLa3llS1M2UU9PZkJ3QyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy12Z2RXNWFhVmtFaU9jN2tPUjRZaWUiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy12YzliTUVVdFVBUzFvZklLUDlWWUwiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91dDFLczlFV2UtZkNTN01ieHhhTWUiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LVhXLUlLV0FyQ0FoNmt4dmFfM2JKUiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1pcEJmR0l4MkxaMWN1eXVQaE5aeHoiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1PSzJxTzZ3aWF2VjVmTnNhTkd3WVciLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91dDFLczlFV2UtZkNTN01ieHhhTWUiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LWZjY2lKcjRvV0lxRXpzTEl1eDN4MyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV19LHsiaWQiOiJfX3N3LUxXMUgxcU1DNE54OS1kS2tBTjM2QiIsIm5hbWUiOiJzZWN0aW9uIiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy1VQndMckdEcU5iREttSWpHdDFpNjYiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctaXVBMkRzc3U2WXpzeEpLazhrTTdiIiwibmFtZSI6Imxpc3RWMiIsImNoaWxkcmVuIjpbeyJpZCI6Il9fc3ctYVVaZ0hRYkpoZWJmU2pWM2gxX0duIiwibmFtZSI6InJldmlldyIsInNldHRpbmdzIjp7InN0YXJzIjo1LCJzdHlsZSI6IiIsIm1pbmltYWwiOmZhbHNlLCJib3R0b21BdXRob3IiOmZhbHNlfSwiY29udGFpbmVyIjp7ImJsdXIiOmZhbHNlLCJjYXJkIjp0cnVlLCJiYWRnZSI6ZmFsc2UsImJsZWVkIjpmYWxzZSwiY292ZXIiOmZhbHNlLCJpbnNldCI6ZmFsc2UsImxpZ2h0IjpmYWxzZSwic3R5bGUiOiIiLCJ3aWR0aCI6IjEwMCUiLCJoZWlnaHQiOiJhdXRvIiwibm9NYXJnaW4iOnRydWUsImZ1bGxXaWR0aCI6ZmFsc2UsIm5vUGFkZGluZyI6ZmFsc2UsInRleHRBbGlnbiI6ImxlZnQiLCJ0ZXh0Q29sb3IiOiIiLCJjYXJkUmFkaXVzIjoiMTZweCIsImZ1bGxIZWlnaHQiOmZhbHNlLCJsaWdodEJsZWVkIjpmYWxzZSwiYmxlZWRCb3R0b20iOmZhbHNlLCJsaWdodE1hcmdpbiI6ZmFsc2UsInNob3dEaXZpZGVyIjpmYWxzZSwiaGVhdnlQYWRkaW5nIjpmYWxzZSwibGlnaHRQYWRkaW5nIjpmYWxzZSwibm9CYWNrZ3JvdW5kIjpmYWxzZSwibm9Ub3BQYWRkaW5nIjpmYWxzZSwiYmFja2dyb3VuZENvbG9yIjoiIiwiYmFja2dyb3VuZEltYWdlIjoiIiwiYmxlZWRCYWNrZ3JvdW5kIjpmYWxzZSwiZXh0cmFMaWdodEJsZWVkIjpmYWxzZSwiYmFja2dyb3VuZE9wYWNpdHkiOjF9fSx7ImlkIjoiX19zdy0zSzZ5TTZfR2FhOWlveW5ZejFqYk8iLCJuYW1lIjoicmV2aWV3Iiwic2V0dGluZ3MiOnsic3RhcnMiOjUsInN0eWxlIjoiIiwibWluaW1hbCI6ZmFsc2UsImJvdHRvbUF1dGhvciI6ZmFsc2V9LCJjb250YWluZXIiOnsiYmx1ciI6ZmFsc2UsImNhcmQiOnRydWUsImJhZGdlIjpmYWxzZSwiYmxlZWQiOmZhbHNlLCJjb3ZlciI6ZmFsc2UsImluc2V0IjpmYWxzZSwibGlnaHQiOmZhbHNlLCJzdHlsZSI6IiIsIndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8iLCJub01hcmdpbiI6dHJ1ZSwiZnVsbFdpZHRoIjpmYWxzZSwibm9QYWRkaW5nIjpmYWxzZSwidGV4dEFsaWduIjoibGVmdCIsInRleHRDb2xvciI6IiIsImNhcmRSYWRpdXMiOiIxNnB4IiwiZnVsbEhlaWdodCI6ZmFsc2UsImxpZ2h0QmxlZWQiOmZhbHNlLCJibGVlZEJvdHRvbSI6ZmFsc2UsImxpZ2h0TWFyZ2luIjpmYWxzZSwic2hvd0RpdmlkZXIiOmZhbHNlLCJoZWF2eVBhZGRpbmciOmZhbHNlLCJsaWdodFBhZGRpbmciOmZhbHNlLCJub0JhY2tncm91bmQiOmZhbHNlLCJub1RvcFBhZGRpbmciOmZhbHNlLCJiYWNrZ3JvdW5kQ29sb3IiOiIiLCJiYWNrZ3JvdW5kSW1hZ2UiOiIiLCJibGVlZEJhY2tncm91bmQiOmZhbHNlLCJleHRyYUxpZ2h0QmxlZWQiOmZhbHNlLCJiYWNrZ3JvdW5kT3BhY2l0eSI6MX19LHsiaWQiOiJfX3N3LW8zblFLU2MtWTJiaWtZWVhaRm9YdyIsIm5hbWUiOiJyZXZpZXciLCJzZXR0aW5ncyI6eyJzdGFycyI6NSwic3R5bGUiOiIiLCJtaW5pbWFsIjpmYWxzZSwiYm90dG9tQXV0aG9yIjpmYWxzZX0sImNvbnRhaW5lciI6eyJibHVyIjpmYWxzZSwiY2FyZCI6dHJ1ZSwiYmFkZ2UiOmZhbHNlLCJibGVlZCI6ZmFsc2UsImNvdmVyIjpmYWxzZSwiaW5zZXQiOmZhbHNlLCJsaWdodCI6ZmFsc2UsInN0eWxlIjoiIiwid2lkdGgiOiIxMDAlIiwiaGVpZ2h0IjoiYXV0byIsIm5vTWFyZ2luIjp0cnVlLCJmdWxsV2lkdGgiOmZhbHNlLCJub1BhZGRpbmciOmZhbHNlLCJ0ZXh0QWxpZ24iOiJsZWZ0IiwidGV4dENvbG9yIjoiIiwiY2FyZFJhZGl1cyI6IjE2cHgiLCJmdWxsSGVpZ2h0IjpmYWxzZSwibGlnaHRCbGVlZCI6ZmFsc2UsImJsZWVkQm90dG9tIjpmYWxzZSwibGlnaHRNYXJnaW4iOmZhbHNlLCJzaG93RGl2aWRlciI6ZmFsc2UsImhlYXZ5UGFkZGluZyI6ZmFsc2UsImxpZ2h0UGFkZGluZyI6ZmFsc2UsIm5vQmFja2dyb3VuZCI6ZmFsc2UsIm5vVG9wUGFkZGluZyI6ZmFsc2UsImJhY2tncm91bmRDb2xvciI6IiIsImJhY2tncm91bmRJbWFnZSI6IiIsImJsZWVkQmFja2dyb3VuZCI6ZmFsc2UsImV4dHJhTGlnaHRCbGVlZCI6ZmFsc2UsImJhY2tncm91bmRPcGFjaXR5IjoxfX0seyJpZCI6Il9fc3ctdlk4WWJ3ME9Zb0FCWkEwUDNDdGZOIiwibmFtZSI6InJldmlldyIsInNldHRpbmdzIjp7InN0YXJzIjo1LCJzdHlsZSI6IiIsIm1pbmltYWwiOmZhbHNlLCJib3R0b21BdXRob3IiOmZhbHNlfSwiY29udGFpbmVyIjp7ImJsdXIiOmZhbHNlLCJjYXJkIjp0cnVlLCJiYWRnZSI6ZmFsc2UsImJsZWVkIjpmYWxzZSwiY292ZXIiOmZhbHNlLCJpbnNldCI6ZmFsc2UsImxpZ2h0IjpmYWxzZSwic3R5bGUiOiIiLCJ3aWR0aCI6IjEwMCUiLCJoZWlnaHQiOiJhdXRvIiwibm9NYXJnaW4iOnRydWUsImZ1bGxXaWR0aCI6ZmFsc2UsIm5vUGFkZGluZyI6ZmFsc2UsInRleHRBbGlnbiI6ImxlZnQiLCJ0ZXh0Q29sb3IiOiIiLCJjYXJkUmFkaXVzIjoiMTZweCIsImZ1bGxIZWlnaHQiOmZhbHNlLCJsaWdodEJsZWVkIjpmYWxzZSwiYmxlZWRCb3R0b20iOmZhbHNlLCJsaWdodE1hcmdpbiI6ZmFsc2UsInNob3dEaXZpZGVyIjpmYWxzZSwiaGVhdnlQYWRkaW5nIjpmYWxzZSwibGlnaHRQYWRkaW5nIjpmYWxzZSwibm9CYWNrZ3JvdW5kIjpmYWxzZSwibm9Ub3BQYWRkaW5nIjpmYWxzZSwiYmFja2dyb3VuZENvbG9yIjoiIiwiYmFja2dyb3VuZEltYWdlIjoiIiwiYmxlZWRCYWNrZ3JvdW5kIjpmYWxzZSwiZXh0cmFMaWdodEJsZWVkIjpmYWxzZSwiYmFja2dyb3VuZE9wYWNpdHkiOjF9fV0sInNldHRpbmdzIjp7InNuYXAiOnRydWUsInN0eWxlIjoiIiwiaGVpZ2h0IjoiYXV0byIsImZ1bGxIZWlnaHQiOmZhbHNlLCJob3Jpem9udGFsIjp0cnVlLCJoYXNJdGVtUGFkZGluZyI6dHJ1ZSwiaW5kaWNhdG9yQ29sb3IiOiIjZmZmZmZmIiwiaW5kaWNhdG9yVG9wUGFkZGluZyI6dHJ1ZSwiaW5kaWNhdG9yQm90dG9tUGFkZGluZyI6dHJ1ZX0sImNvbnRhaW5lciI6eyJibHVyIjpmYWxzZSwiY2FyZCI6ZmFsc2UsImJhZGdlIjpmYWxzZSwiYmxlZWQiOmZhbHNlLCJjb3ZlciI6ZmFsc2UsImluc2V0IjpmYWxzZSwibGlnaHQiOmZhbHNlLCJzdHlsZSI6IiIsIndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8iLCJub01hcmdpbiI6dHJ1ZSwiZnVsbFdpZHRoIjpmYWxzZSwibm9QYWRkaW5nIjpmYWxzZSwidGV4dEFsaWduIjoibGVmdCIsInRleHRDb2xvciI6IiIsImNhcmRSYWRpdXMiOiIxNnB4IiwiZnVsbEhlaWdodCI6ZmFsc2UsImxpZ2h0QmxlZWQiOmZhbHNlLCJibGVlZEJvdHRvbSI6ZmFsc2UsImxpZ2h0TWFyZ2luIjpmYWxzZSwic2hvd0RpdmlkZXIiOmZhbHNlLCJoZWF2eVBhZGRpbmciOmZhbHNlLCJsaWdodFBhZGRpbmciOmZhbHNlLCJub0JhY2tncm91bmQiOmZhbHNlLCJub1RvcFBhZGRpbmciOmZhbHNlLCJiYWNrZ3JvdW5kQ29sb3IiOiIiLCJiYWNrZ3JvdW5kSW1hZ2UiOiIiLCJibGVlZEJhY2tncm91bmQiOmZhbHNlLCJleHRyYUxpZ2h0QmxlZWQiOmZhbHNlLCJiYWNrZ3JvdW5kT3BhY2l0eSI6MX0sImNoaWxkcmVuQ29udGFpbmVyIjp7ImNvdmVyIjpmYWxzZSwic3R5bGUiOiIiLCJ3aWR0aCI6IjEwMCUiLCJoZWlnaHQiOiJhdXRvIiwibm9NYXJnaW4iOmZhbHNlLCJmdWxsV2lkdGgiOmZhbHNlLCJmdWxsSGVpZ2h0IjpmYWxzZSwibm9CYWNrZ3JvdW5kIjpmYWxzZX19XX0seyJpZCI6Il9fc3ctMHdJaGs1UXpWWUV1ZFVFSGNuMUdfIiwibmFtZSI6InNlY3Rpb24iLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LXdPSDlxS2Q2QV9rbmZKT2IzWllmMyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1qM29qallKMFhSN0o4SGZFNTdMc0IiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy14X2hCb01Ja3F2aHBBeVM5WUd4OVgiLCJuYW1lIjoiaW1hZ2VCYXNlIiwic2V0dGluZ3MiOnsic3JjIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9Ya1RQQlFKV3dDcU1oOTk4ZURxU2kiLCJhbHRUZXh0IjoiSW1hZ2UiLCJpbml0aWFsU3R5bGVzIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6ImF1dG8ifX19LHsiaWQiOiJfX3N3LWNfQ3NZbktGNmUtNUYxTDJkQkYtWiIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy02aFQ4Snd5a3BYT2l6Wng5cjVaQWUiLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiIiLCJpc1BhcmFncmFwaCI6ZmFsc2UsImluaXRpYWxTdHlsZXMiOnt9fX0seyJpZCI6Il9fc3ctYVR6alM3d3pPM1MxbEVGNmJaa1BfIiwibmFtZSI6ImJ1dHRvbkJhc2UifV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6e319fV19LHsiaWQiOiJfX3N3LVpwakxEQVJFSlpjTi05TWdVZ3dCSiIsIm5hbWUiOiJkaXYiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LVpwN0NneTNvNlhnOHZnZzZ3dGJudCIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy01RzlXVDEyY0pBYmtMMzBWRnVIRHEiLCJuYW1lIjoiZGl2IiwiY2hpbGRyZW4iOlt7ImlkIjoiX19zdy0wSDdMUjYxY1lCendHNzhLQ2lNc28iLCJuYW1lIjoidGV4dCIsInNldHRpbmdzIjp7InRleHQiOiJUZXJtcyIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6eyJkaXNwbGF5IjoiaW5saW5lLWJsb2NrIiwicGFkZGluZyI6IjBweCBjYWxjKHZhcigtLXN3LWZvbnQtc2l6ZSkgKiAwLjEyNSkiLCJmb250U2l6ZSI6ImNhbGModmFyKC0tc3ctZm9udC1zaXplKSAqIDAuNzUpOyJ9fX0seyJpZCI6Il9fc3ctM0s5U0UyOWVDTXBmSTg2WEV6SXNwIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiJiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6eyJkaXNwbGF5IjoiaW5saW5lLWJsb2NrIiwicGFkZGluZyI6IjBweCBjYWxjKHZhcigtLXN3LWZvbnQtc2l6ZSkgKiAwLjEyNSkiLCJmb250U2l6ZSI6ImNhbGModmFyKC0tc3ctZm9udC1zaXplKSAqIDAuNzUpOyJ9fX0seyJpZCI6Il9fc3ctQ2NpR0pWdEpkOUVreE1yN0lGZVQxIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiUHJpdmFjeSIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6eyJkaXNwbGF5IjoiaW5saW5lLWJsb2NrIiwicGFkZGluZyI6IjBweCBjYWxjKHZhcigtLXN3LWZvbnQtc2l6ZSkgKiAwLjEyNSkiLCJmb250U2l6ZSI6ImNhbGModmFyKC0tc3ctZm9udC1zaXplKSAqIDAuNzUpOyJ9fX0seyJpZCI6Il9fc3ctTHJvQ09FdFZ5T0VqeFA5M1ZOdzBLIiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoifCIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6eyJkaXNwbGF5IjoiaW5saW5lLWJsb2NrIiwicGFkZGluZyI6IjBweCBjYWxjKHZhcigtLXN3LWZvbnQtc2l6ZSkgKiAwLjEyNSkiLCJmb250U2l6ZSI6ImNhbGModmFyKC0tc3ctZm9udC1zaXplKSAqIDAuNzUpOyJ9fX0seyJpZCI6Il9fc3ctOEp3Q2lXSWY5RTJqOEpkd09PYzA3IiwibmFtZSI6InRleHQiLCJzZXR0aW5ncyI6eyJ0ZXh0IjoiUmVuZXdzIGZvciAkMC4wMCBwZXIgZGF5IiwiaXNQYXJhZ3JhcGgiOmZhbHNlLCJpbml0aWFsU3R5bGVzIjp7ImRpc3BsYXkiOiJpbmxpbmUtYmxvY2siLCJwYWRkaW5nIjoiMHB4IGNhbGModmFyKC0tc3ctZm9udC1zaXplKSAqIDAuMTI1KSIsImZvbnRTaXplIjoiY2FsYyh2YXIoLS1zdy1mb250LXNpemUpICogMC43NSk7In19fV0sInNldHRpbmdzIjp7InN0eWxlIjoiIiwiaW5pdGlhbFN0eWxlcyI6eyJkaXNwbGF5IjoiZmxleCIsImFsaWduSXRlbXMiOiJjZW50ZXIiLCJwYWRkaW5nVG9wIjoiY2FsYyh2YXIoLS1zdy1jb250YWluZXItcGFkZGluZykgKiAwLjYpIiwiZmxleERpcmVjdGlvbiI6InJvdyIsInBhZGRpbmdCb3R0b20iOiJjYWxjKHZhcigtLXN3LWNvbnRhaW5lci1wYWRkaW5nKSAqIDAuNikiLCJqdXN0aWZ5Q29udGVudCI6ImNlbnRlciJ9fSwiY3VzdG9tTmFtZSI6IkZvb3RlciJ9XSwic2V0dGluZ3MiOnsic3R5bGUiOiIiLCJpbml0aWFsU3R5bGVzIjp7fX19LHsiaWQiOiJfX3N3LTBFOEpFMjllQ01wZkk4NlhFelRydyIsIm5hbWUiOiJkcmF3ZXIiLCJjaGlsZHJlbiI6W3siaWQiOiJfX3N3LWVhUEE0bHp1RHpBbDhjRnMxb2huTyIsIm5hbWUiOiJ0ZXh0Iiwic2V0dGluZ3MiOnsidGV4dCI6IiIsImlzUGFyYWdyYXBoIjpmYWxzZSwiaW5pdGlhbFN0eWxlcyI6e319fSx7ImlkIjoiX19zdy1GeG9ESk50S2hPUWp4TWg3SU5xRjUiLCJuYW1lIjoicHJvZHVjdHMiLCJzZXR0aW5ncyI6eyJkaXJlY3Rpb24iOiJ2ZXJ0aWNhbCIsImJvcmRlckNvbG9yIjoicmdiYSgyNTUsIDI1NSwgMjU1LCAxKSIsImJvcmRlcldpZHRoIjoiMHB4IiwiaGlkZVByb2R1Y3RzIjoidHJ1ZSIsInByb2R1Y3RDb3VudCI6Im9uZSIsImNoZWNrTWFya01hcmdpbiI6IjAgMTJweCAwIDRweCIsInJldmVyc2VEaXJlY3Rpb24iOmZhbHNlLCJwcmltYXJ5UHJvZHVjdEJhZGdlIjoiaGlkZSIsInNlbGVjdGVkQm9yZGVyV2lkdGgiOiIycHgiLCJzaG93UHJvZHVjdENoZWNrTWFyayI6ImhpZGUiLCJ0ZXJ0aWFyeVByb2R1Y3RCYWRnZSI6ImhpZGUiLCJzZWNvbmRhcnlQcm9kdWN0QmFkZ2UiOiJoaWRlIiwic2VsZWN0ZWRDaGVja0JveEltYWdlIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91b1FzRHdtcm5hbWlxa2ZrelJLdkMiLCJ1bnNlbGVjdGVkQ2hlY2tCb3hJbWFnZSI6Imh0dHBzOi8vc3RhdGljLnN1cGVyd2FsbGFzc2V0cy5jb20vRWxSR2JIa2lSUVR2RlEzR29qYmZ1In19XSwic2V0dGluZ3MiOnsiY29udGFpbmVyUmFkaXVzIjoiMjRweCIsImNhcmRCYWNrZ3JvdW5kQmx1ciI6dHJ1ZX19XSwicGFnZVNldHRpbmdzIjp7Im5hdiI6InNob3ciLCJwanMiOiJodHRwczovL2Nkbi5zdXBlcndhbGwubWUvcnVudGltZS9lbnRyeXBvaW50LmpzIiwiZm9udCI6IiIsImZvb3RlciI6ImNvbXBhY3QiLCJsb2dvVVJMIjoiLi4vcHVibGljL2Fzc2V0cy9sb2dvLnN2ZyIsIm5hdkxlZnQiOiJoaWRlIiwic3BhY2luZyI6IjEwcHgiLCJjdXN0b21KUyI6ImxldCByZXN0b3JlQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcHctdmFyPVxcXCJEaXYgX19zdy16cGpsZGFyZWp6Y24tOW1ndWd3YmpcXFwiXScpO1xcbmxldCBzd0Zvb3Rlck91dGVyQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3N3Rm9vdGVyT3V0ZXJDb250YWluZXInKTtcXG5zd0Zvb3Rlck91dGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHJlc3RvcmVCdXR0b24pO1xcblxcbmNvbnN0IHByaW1hcnlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1wdy12YXI9XFxcIkRpdiBfX3N3LXppZy01bDlzZWI4a3BnYWR3N2JpalxcXCJdJyk7XFxuY29uc3Qgc2Vjb25kYXJ5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcHctdmFyPVxcXCJEaXYgX19zdy0zYWVwbHpoMHh4dnVrMG1jdWoybXZcXFwiXScpO1xcbmNvbnN0IHRlcnRpYXJ5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcHctdmFyPVxcXCJEaXYgX19zdy1lZW1ka3F4bmtrbG5vLXFtd2U5YmpcXFwiXScpO1xcblxcbi8vIFdoZW4gZWl0aGVyIG9mIHRoZSBhYm92ZSBidXR0b25zIGFyZSBjbGlja2VkLCB0ZW1wb3JhcmlseSByZWR1Y2UgdGhlaXIgc2l6ZSBieSAuMSBwb2ludHNcXG5cXG5wcmltYXJ5QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xcbiAgICBwcmltYXJ5QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICdzY2FsZSgwLjkpJztcXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICBwcmltYXJ5QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICdzY2FsZSgxKSc7XFxuICAgIH0sIDEwMCk7XFxufSk7XFxuXFxuc2Vjb25kYXJ5QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xcbiAgICBzZWNvbmRhcnlCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3NjYWxlKDAuOSknO1xcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgIHNlY29uZGFyeUJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAnc2NhbGUoMSknO1xcbiAgICB9LCAxMDApO1xcbn0pO1xcblxcbnRlcnRpYXJ5QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xcbiAgICB0ZXJ0aWFyeUJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAnc2NhbGUoMC45KSc7XFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgICAgdGVydGlhcnlCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3NjYWxlKDEpJztcXG4gICAgfSwgMTAwKTtcXG59KTtcXG5cXG5jb25zdCBhbmNob3JTY3JvbGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1wdy12YXI9XFxcIkRpdiBfX3N3LWJ1czB0NC1vLWZqNXBvMWZsOXZralxcXCJdJyk7XFxuY29uc3QgYWxsUGxhbnNCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1wdy12YXI9XFxcIlRleHQgX19zdy1zcGk5OWYtamV4NzlvbGN0Y2R0bGRcXFwiXScpO1xcblxcbi8vIFdoZW4geW91IGNsaWNrIG9uIHRoZSBhbGxQbGFuc0J1dHRvbiwgc2Nyb2xsIHRvIHRoZSBhbmNob3JTY3JvbGxcXG5hbGxQbGFuc0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcXG4gICAgYW5jaG9yU2Nyb2xsLnNjcm9sbEludG9WaWV3KCk7XFxuICAgIH1cXG4pOyIsImZvbnRTaXplIjoiY2FsYyhtaW4oNC41dncsIDFyZW0pKSIsIm5hdlJpZ2h0IjoiaWNvbiIsImN1c3RvbUNTUyI6Ii5zdy1oLWRpdmlkZXIge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLnN3LXB1cmNoYXNlLWJ1dHRvbiB7XFxuICAgIGJhY2tncm91bmQ6ICMwMEQwOTYgIWltcG9ydGFudDtcXG59XFxuLnN3LXByb2R1Y3QtaW5uZXItY29udGFpbmVyIHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGUgIWltcG9ydGFudDtcXG59XFxuLnN3LWRhcmstb3ZlcmxheSB7XFxuICAgIHdpZHRoOiAyMDB2dztcXG4gICAgbGVmdDogLTUwdnc7XFxufVxcblxcbltkYXRhLXB3LXZhcj1cXFwiRGl2IF9fc3ctemlnLTVsOXNlYjhrcGdhZHc3YmlqXFxcIl0ge1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xcztcXG59XFxuXFxuW2RhdGEtcHctdmFyPVxcXCJEaXYgX19zdy0zYWVwbHpoMHh4dnVrMG1jdWoybXZcXFwiXSB7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjFzO1xcbn1cXG5cXG5bZGF0YS1wdy12YXI9XFxcIkRpdiBfX3N3LWVlbWRrcXhua2tsbm8tcW13ZTlialxcXCJdIHtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMXM7XFxufVxcblxcbltkYXRhLXB3LXZhcj1cXFwiSW1hZ2VCYXNlIF9fc3ctam93aHV1YW1rZWF6MjJtcnhvbHJrXFxcIl0ge1xcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcXG59XFxuXFxuLm1haW4taGVhZGluZyB7XFxuICBjb2xvcjogIzAwMDtcXG4gIGZvbnQtZmFtaWx5OiBJbnRlcjtcXG4gIGZvbnQtc2l6ZTogMjVweDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBsaW5lLWhlaWdodDogMTAwJTsgLyogMjVweCAqL1xcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xcbn1cXG5cXG4uYWNjZW50LWhlYWRpbmcge1xcbiAgY29sb3I6ICM0NDgxRkQ7XFxuICBmb250LWZhbWlseTogSW50ZXI7XFxuICBmb250LXNpemU6IDMwcHg7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgbGluZS1oZWlnaHQ6IDEwMCU7XFxuICBsZXR0ZXItc3BhY2luZzogLTAuNnB4O1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufSIsImRpcmVjdGlvbiI6InZlcnRpY2FsIiwibmF2Q2VudGVyIjoiaGlkZSIsImJyYW5kQ29sb3IiOiJoc2xhKDIyMCwgOTglLCA2MyUsIDEpIiwibG9nb0hlaWdodCI6IjM1cHgiLCJiYWRnZVJhZGl1cyI6IjhweCIsImJvcmRlckNvbG9yIjoicmdiYSgyNTUsIDI1NSwgMjU1LCAxKSIsImJvcmRlcldpZHRoIjoiMHB4IiwiY2FyZFBhZGRpbmciOiJjYWxjKHZhcigtLXN3LXNwYWNpbmcpICogMS42KSIsImdvb2dsZUZvbnRzIjoiIiwiaGVhZGluZ0ZvbnQiOiIiLCJuYXZQb3NpdGlvbiI6ImZpeGVkIiwiaGlkZVByb2R1Y3RzIjoidHJ1ZSIsInByb2R1Y3RDb3VudCI6Im9uZSIsImZvb3RlckRpdmlkZXIiOiJoaWRlIiwiZm9yY2VEYXJrTW9kZSI6ImZhbHNlIiwicHJvZHVjdFJhZGl1cyI6IjEycHgiLCJicmFuZFRleHRDb2xvciI6IiNGRkZGRkYiLCJjb250ZW50UGFkZGluZyI6ImNhbGModmFyKC0tc3ctc3BhY2luZykgKiAxLjYpIiwiZm9vdGVyUG9zaXRpb24iOiJpbmxpbmUiLCJuYXZMZWZ0SWNvblVSTCI6Ii4uL3B1YmxpYy9hc3NldHMvbmF2LWJ1dHRvbi5zdmciLCJwcm9kdWN0RGl2aWRlciI6InNob3ciLCJwcm9kdWN0UGFkZGluZyI6IjE1cHgiLCJwdXJjaGFzZVJhZGl1cyI6IjE1cHgiLCJ1c2VDdXN0b21Gb250cyI6ImZhbHNlIiwiYmFja2dyb3VuZENvbG9yIjoicmdiYSgxOSwgMjAsIDIzLCAwLjcpIiwiY2hlY2tNYXJrTWFyZ2luIjoiMCAxMnB4IDAgNHB4IiwiY29udGFpbmVyUmFkaXVzIjoiMjRweCIsImZvb3RlckFsaWdubWVudCI6ImNlbnRlciIsImZvcmVncm91bmRDb2xvciI6ImhzbGEoMjIwLCA0MSUsIDI1JSwgMSkiLCJtaW5OYXZiYXJIZWlnaHQiOiI2NHB4IiwibmF2UmlnaHRJY29uVVJMIjoiLi4vcHVibGljL2Fzc2V0cy9uYXYtYnV0dG9uLnN2ZyIsInBheXdhbGxNYXhXaWR0aCI6IjUwMHB4IiwicHJldmlld0RhcmtNb2RlIjoiZmFsc2UiLCJzZWN0aW9uUGFkZGluZ1giOiIwcHgiLCJzZWN0aW9uUGFkZGluZ1kiOiIwcHgiLCJjb250ZW50QWxpZ25tZW50IjoidG9wIiwiaW5zZXRzVG9wQ29udGVudCI6ImZhbHNlIiwicmV2ZXJzZURpcmVjdGlvbiI6ImZhbHNlIiwic3RhdHVzQmFyUGFkZGluZyI6IjM0cHgiLCJuYXZCYWNrZ3JvdW5kQmx1ciI6ImZhbHNlIiwiY2FyZEJhY2tncm91bmRCbHVyIjoidHJ1ZSIsIm5hdkJhY2tncm91bmRDb2xvciI6ImF1dG8iLCJuYXZCdXR0b25JY29uc1NpemUiOiI0MnB4IiwicHJvZHVjdERlc2NyaXB0aW9uIjoic2hvdyIsImJyYW5kU2Vjb25kYXJ5Q29sb3IiOiIiLCJuYXZMZWZ0SW5uZXJJY29uVVJMIjoiLi4vcHVibGljL2Fzc2V0cy9uYXYtYnV0dG9uLnN2ZyIsInByaW1hcnlQcm9kdWN0QmFkZ2UiOiJoaWRlIiwic2VsZWN0ZWRCb3JkZXJXaWR0aCI6IjJweCIsIm5hdlJpZ2h0SW5uZXJJY29uVVJMIjoiLi4vcHVibGljL2Fzc2V0cy9uYXYtYnV0dG9uLnN2ZyIsInNob3dQcm9kdWN0Q2hlY2tNYXJrIjoiaGlkZSIsInRlcnRpYXJ5UHJvZHVjdEJhZGdlIjoiaGlkZSIsImJ1dHRvbkJhY2tncm91bmRDb2xvciI6IiIsInB1cmNoYXNlQnV0dG9uTGluZVR3byI6InNob3ciLCJzZWNvbmRhcnlQcm9kdWN0QmFkZ2UiOiJoaWRlIiwic2VsZWN0ZWRDaGVja0JveEltYWdlIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS91b1FzRHdtcm5hbWlxa2ZrelJLdkMiLCJwYXl3YWxsQmFja2dyb3VuZENvbG9yIjoiaHNsYSgyMTAsIDEwMCUsIDk4JSwgMSkiLCJwcm9kdWN0QmFja2dyb3VuZENvbG9yIjoicmdiYSgwLDAsMCwwLjg1KSIsImhpZGVGaXhlZFB1cmNoYXNlRHJhd2VyIjoidHJ1ZSIsInVuc2VsZWN0ZWRDaGVja0JveEltYWdlIjoiaHR0cHM6Ly9zdGF0aWMuc3VwZXJ3YWxsYXNzZXRzLmNvbS9FbFJHYkhraVJRVHZGUTNHb2piZnUiLCJiYWNrZ3JvdW5kQ29udGVudE1heFdpZHRoIjoicGF5d2FsbE1heFdpZHRoIiwiYXV0b0FkanVzdENvbnRlbnRBbGlnbm1lbnQiOiJ0cnVlIn0sImJhY2tncm91bmRDb250ZW50IjpbXX1gKSkKICAgICAgICB9CiAgICAgICAgLyogX19TVVBFUldBTExfUkVQTEFDRV9FTkRfX18gKi8KCiAgICAgICAgY29uc3QgY29uZmlndXJlID0gKG9wdGlvbnMsIGRhcmtPcHRpb25zKSA9PiB7CiAgICAgICAgICAvLyBjb25zdGFudHMgYW5kIHZhcmlhYmxlcwogICAgICAgICAgY29uc3QgaXNFZGl0b3IgPSB3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcAogICAgICAgICAgbGV0IGRvY3VtZW50Um9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgIGxldCBwdXJjaGFzZUdyb3VwQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N3UHVyY2hhc2VHcm91cENvbnRhaW5lcicpCiAgICAgICAgICBsZXQgcGF5d2FsbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50Q29udGFpbmVyJykKCiAgICAgICAgICB2YXIgZFNldHRpbmdzID0ge30KCiAgICAgICAgICBpZiAob3B0aW9ucykgewogICAgICAgICAgICBkU2V0dGluZ3MgPSBvcHRpb25zCiAgICAgICAgICB9CgogICAgICAgICAgLy8gZGVmYXVsdCBpbnB1dHMKICAgICAgICAgIHZhciBzZXR0aW5ncyA9IHsKICAgICAgICAgICAgYXV0b0FkanVzdENvbnRlbnRBbGlnbm1lbnQ6ICJ0cnVlIiwgLy8gdHJ1ZSwgZmFsc2UKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAicmdiYSgxOSwgMjAsIDIzLCAwLjcpIiwKICAgICAgICAgICAgYmFkZ2VSYWRpdXM6ICI4cHgiLAogICAgICAgICAgICBib3JkZXJDb2xvcjogInJnYig3MCw3MCw3MCkiLAogICAgICAgICAgICBib3JkZXJXaWR0aDogIjFweCIsCiAgICAgICAgICAgIGJyYW5kQ29sb3I6ICIjNEU3MUZGIiwKICAgICAgICAgICAgYnJhbmRTZWNvbmRhcnlDb2xvcjogIiIsCiAgICAgICAgICAgIGJyYW5kVGV4dENvbG9yOiAiI0ZGRkZGRiIsCiAgICAgICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcjogIiIsCiAgICAgICAgICAgIGNhcmRCYWNrZ3JvdW5kQmx1cjogInRydWUiLCAvLyB0cnVlLCBmYWxzZQogICAgICAgICAgICBjYXJkUGFkZGluZzogImNhbGModmFyKC0tc3ctc3BhY2luZykgKiAxLjYpIiwKICAgICAgICAgICAgY29udGFpbmVyUmFkaXVzOiAiMjVweCIsCiAgICAgICAgICAgIGNvbnRlbnRBbGlnbm1lbnQ6ICJ0b3AiLCAvLyB0b3AsIGJvdHRvbSwgY2VudGVyCiAgICAgICAgICAgIGNvbnRlbnRQYWRkaW5nOiAiY2FsYyh2YXIoLS1zdy1zcGFjaW5nKSAqIDEuNikiLAogICAgICAgICAgICBkaXJlY3Rpb246ICJ2ZXJ0aWNhbCIsIC8vIHZlcnRpY2FsLCBob3Jpem9udGFsCiAgICAgICAgICAgIGZvbnQ6ICIiLAogICAgICAgICAgICBmb250U2l6ZTogImNhbGMobWluKDQuNXZ3LCAxcmVtKSkiLAogICAgICAgICAgICBmb290ZXI6ICJub3JtYWwiLCAvLyBzaG93LCBoaWRlLCBjb21wYWN0CiAgICAgICAgICAgIGZvb3RlckFsaWdubWVudDogInNwcmVhZCIsIC8vIHNwcmVhZCwgY2VudGVyCiAgICAgICAgICAgIGZvb3RlckRpdmlkZXI6ICJoaWRlIiwgLy8gc2hvdywgaGlkZQogICAgICAgICAgICBmb290ZXJQb3NpdGlvbjogImZpeGVkIiwgLy8gdHJ1ZSwgZmFsc2UKICAgICAgICAgICAgZm9yY2VEYXJrTW9kZTogImZhbHNlIiwKICAgICAgICAgICAgZm9yZWdyb3VuZENvbG9yOiAiI0ZGRkZGRiIsCiAgICAgICAgICAgIGdvb2dsZUZvbnRzOiAiIiwKICAgICAgICAgICAgaGVhZGluZ0ZvbnQ6ICIiLAogICAgICAgICAgICBoaWRlUHJvZHVjdHM6ICJhdXRvIiwgLy8gdHJ1ZSwgZmFsc2UsIGF1dG8KICAgICAgICAgICAgaW5zZXRzVG9wQ29udGVudDogInRydWUiLCAvLyB0cnVlLCBmYWxzZSAoQURERUQpCiAgICAgICAgICAgIGxvZ29IZWlnaHQ6ICIzNXB4IiwKICAgICAgICAgICAgbG9nb1VSTDogIi4uL3B1YmxpYy9hc3NldHMvbG9nby5zdmciLAogICAgICAgICAgICBtaW5OYXZiYXJIZWlnaHQ6ICI2NHB4IiwKICAgICAgICAgICAgbmF2OiAic2hvdyIsIC8vIGhpZGUsIHNob3cKICAgICAgICAgICAgbmF2QmFja2dyb3VuZEJsdXI6ICJ0cnVlIiwgLy8gdHJ1ZSwgZmFsc2UKICAgICAgICAgICAgbmF2QmFja2dyb3VuZENvbG9yOiAiYXV0byIsIC8vIGF1dG8gb3IgYSBjb2xvcgogICAgICAgICAgICBuYXZCdXR0b25JY29uc1NpemU6ICI0MnB4IiwKICAgICAgICAgICAgbmF2Q2VudGVyOiAic2hvdyIsIC8vIGhpZGUsIG1peGVkLCB0ZXh0LCBpbWFnZQogICAgICAgICAgICBuYXZMZWZ0OiAibWl4ZWQiLCAvLyBoaWRlLCBtaXhlZCwgdGV4dCwgaWNvbiwgZG91YmxlSWNvbiwgZG91YmxlVGV4dCwgYWxsCiAgICAgICAgICAgIG5hdkxlZnRJY29uVVJMOiAiLi4vcHVibGljL2Fzc2V0cy9uYXYtYnV0dG9uLnN2ZyIsCiAgICAgICAgICAgIG5hdkxlZnRJbm5lckljb25VUkw6ICIuLi9wdWJsaWMvYXNzZXRzL25hdi1idXR0b24uc3ZnIiwKICAgICAgICAgICAgbmF2UG9zaXRpb246ICJmaXhlZCIsIC8vIHRydWUsIGZhbHNlCiAgICAgICAgICAgIG5hdlJpZ2h0OiAibWl4ZWQiLCAvLyBoaWRlLCBtaXhlZCwgdGV4dCwgaWNvbiwgZG91YmxlSWNvbiwgZG91YmxlVGV4dCwgYWxsCiAgICAgICAgICAgIG5hdlJpZ2h0SWNvblVSTDogIi4uL3B1YmxpYy9hc3NldHMvbmF2LWJ1dHRvbi5zdmciLAogICAgICAgICAgICBuYXZSaWdodElubmVySWNvblVSTDogIi4uL3B1YmxpYy9hc3NldHMvbmF2LWJ1dHRvbi5zdmciLAogICAgICAgICAgICBwYXl3YWxsQmFja2dyb3VuZENvbG9yOiAiIzI5MjkyOSIsCiAgICAgICAgICAgIHBheXdhbGxNYXhXaWR0aDogIjQ4MHB4IiwKICAgICAgICAgICAgcGpzOiAiaHR0cHM6Ly9jZG4uc3VwZXJ3YWxsLm1lL3J1bnRpbWUvZW50cnlwb2ludC5qcyIsCiAgICAgICAgICAgIHByZXZpZXdEYXJrTW9kZTogImZhbHNlIiwKICAgICAgICAgICAgcHJpbWFyeVByb2R1Y3RCYWRnZTogInNob3ciLCAvLyBzaG93LCBoaWRlCiAgICAgICAgICAgIHByb2R1Y3RCYWNrZ3JvdW5kQ29sb3I6ICJyZ2JhKDAsMCwwLDAuODUpIiwKICAgICAgICAgICAgcHJvZHVjdENvdW50OiAiYXV0byIsIC8vIGF1dG8sIG9uZSwgdHdvLCB0aHJlZQogICAgICAgICAgICBwcm9kdWN0RGVzY3JpcHRpb246ICJzaG93IiwgLy8gc2hvdywgaGlkZQogICAgICAgICAgICBwcm9kdWN0RGl2aWRlcjogImhpZGUiLCAvLyBzaG93LCBoaWRlCiAgICAgICAgICAgIHByb2R1Y3RQYWRkaW5nOiAiMTVweCIsCiAgICAgICAgICAgIHByb2R1Y3RSYWRpdXM6ICIxMnB4IiwKICAgICAgICAgICAgcHVyY2hhc2VSYWRpdXM6ICIxNXB4IiwKICAgICAgICAgICAgcmV2ZXJzZURpcmVjdGlvbjogImZhbHNlIiwgLy8gdHJ1ZSwgZmFsc2UKICAgICAgICAgICAgc2Vjb25kYXJ5UHJvZHVjdEJhZGdlOiAiaGlkZSIsIC8vIHNob3csIGhpZGUKICAgICAgICAgICAgc2VsZWN0ZWRCb3JkZXJXaWR0aDogIjJweCIsCiAgICAgICAgICAgIHNwYWNpbmc6ICIxMHB4IiwKICAgICAgICAgICAgc3RhdHVzQmFyUGFkZGluZzogIjM0cHgiLAogICAgICAgICAgICB0ZXJ0aWFyeVByb2R1Y3RCYWRnZTogImhpZGUiLCAvLyBzaG93LCBoaWRlCiAgICAgICAgICAgIC4uLmRTZXR0aW5ncwogICAgICAgICAgfQoKICAgICAgICAgIGNvbnN0IGRlZmF1bHRCb2R5Rm9udCA9IHNldHRpbmdzLnVzZUN1c3RvbUZvbnRzID09PSAidHJ1ZSIgPyBzZXR0aW5ncy5jdXN0b21Cb2R5Rm9udCA6IHNldHRpbmdzLmZvbnQKICAgICAgICAgIGNvbnN0IGRlZmF1bHRIZWFkaW5nRm9udCA9IHNldHRpbmdzLnVzZUN1c3RvbUZvbnRzID09PSAidHJ1ZSIgPyBzZXR0aW5ncy5jdXN0b21IZWFkaW5nRm9udCA6IHNldHRpbmdzCiAgICAgICAgICAgIC5oZWFkaW5nRm9udAoKICAgICAgICAgIC8vIHNldCBmYWxsYmFjayBmb250cwogICAgICAgICAgc2V0dGluZ3MuZm9udCA9CiAgICAgICAgICAgIGAke2RlZmF1bHRCb2R5Rm9udCA/IGAke2RlZmF1bHRCb2R5Rm9udH0sIGAgOiAiIn0gc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWZgCiAgICAgICAgICBzZXR0aW5ncy5oZWFkaW5nRm9udCA9CiAgICAgICAgICAgIGAke2RlZmF1bHRIZWFkaW5nRm9udCA/IGAke2RlZmF1bHRIZWFkaW5nRm9udH0sIGAgOiAiIn0gc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWZgCgogICAgICAgICAgbGV0IGlzSU9TID0gKC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSkgfHwgKG5hdmlnYXRvci5wbGF0Zm9ybSA9PT0gJ01hY0ludGVsJyAmJiBuYXZpZ2F0b3IKICAgICAgICAgICAgLm1heFRvdWNoUG9pbnRzID4gMSkpICYmICF3aW5kb3cuTVNTdHJlYW0KCiAgICAgICAgICBpZiAoaXNJT1MpIHsKICAgICAgICAgICAgaWYgKCh3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHx8IHNldHRpbmdzCiAgICAgICAgICAgICAgLmZvcmNlRGFya01vZGUgPT0gInRydWUiKSB7CiAgICAgICAgICAgICAgc2V0dGluZ3MgPSB7CiAgICAgICAgICAgICAgICAuLi5zZXR0aW5ncywKICAgICAgICAgICAgICAgIC4uLmRhcmtPcHRpb25zCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoc2V0dGluZ3MuZm9yY2VEYXJrTW9kZSA9PSAidHJ1ZSIgfHwgc2V0dGluZ3MucHJldmlld0RhcmtNb2RlID09ICJ0cnVlIikgewogICAgICAgICAgICAgIHNldHRpbmdzID0gewogICAgICAgICAgICAgICAgLi4uc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAuLi5kYXJrT3B0aW9ucwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICghc2V0dGluZ3MuYnV0dG9uQmFja2dyb3VuZENvbG9yKSB7CiAgICAgICAgICAgIHNldHRpbmdzLmJ1dHRvbkJhY2tncm91bmRDb2xvciA9IHNldHRpbmdzLmJhY2tncm91bmRDb2xvcgogICAgICAgICAgfQoKICAgICAgICAgIGNvbnNvbGUubG9nKCJbU1cgc2V0dGluZ3NdIiwgc2V0dGluZ3MpCgogICAgICAgICAgaWYgKHNldHRpbmdzLmdvb2dsZUZvbnRzICE9ICcnICYmIHNldHRpbmdzLnVzZUN1c3RvbUZvbnRzICE9PSAidHJ1ZSIpIHsKICAgICAgICAgICAgY29uc3QgYWxsRm9udHMgPSBzZXR0aW5ncy5nb29nbGVGb250cy5zcGxpdCgnLCcpLm1hcChlbCA9PiBlbC50cmltKCkpLmZpbHRlcihlbCA9PiBlbCAhPSAnJykKICAgICAgICAgICAgLy8gdW5pcXVlIGZvbnRzLCB3aXRob3V0IHVzaW5nIGEgU2V0CiAgICAgICAgICAgIGNvbnN0IGZvbnRzID0gYWxsRm9udHMuZmlsdGVyKChlbCwgaSkgPT4gYWxsRm9udHMuaW5kZXhPZihlbCkgPT09IGkpCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJbc3cgZm9udF0gZ29vZ2xlIGZvbnRzLi4uIiwgZm9udHMpCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJbc3cgZm9udF0gZ29vZ2xlIGZvbnRzLi4uIiwgc2V0dGluZ3MuZm9udCkKICAgICAgICAgICAgY29uc29sZS5sb2coIltzdyBmb250XSBnb29nbGUgZm9udHMuLi4iLCBzZXR0aW5ncy5oZWFkaW5nRm9udCkKICAgICAgICAgICAgV2ViRm9udENvbmZpZyA9IHsKICAgICAgICAgICAgICBnb29nbGU6IHsKICAgICAgICAgICAgICAgIGZhbWlsaWVzOiBmb250cwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBkID0gZG9jdW1lbnQKICAgICAgICAgICAgdmFyIHdmID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcyA9IGQuc2NyaXB0c1swXTsKICAgICAgICAgICAgd2Yuc3JjID0gJ2h0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvd2ViZm9udC8xLjYuMjYvd2ViZm9udC5qcyc7CiAgICAgICAgICAgIHdmLmFzeW5jID0gdHJ1ZTsKICAgICAgICAgICAgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3Ziwgcyk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gZGVmaW5lIGNzcyB2YXJpYWJsZXMKICAgICAgICAgIGNvbnN0IGNzc1ZhcnMgPSB7CiAgICAgICAgICAgIHByb2R1Y3RSYWRpdXM6ICItLXN3LXByb2R1Y3QtcmFkaXVzIiwKICAgICAgICAgICAgcHVyY2hhc2VSYWRpdXM6ICItLXN3LXB1cmNoYXNlLXJhZGl1cyIsCiAgICAgICAgICAgIGJvcmRlcldpZHRoOiAiLS1zdy1ib3JkZXItd2lkdGgiLAogICAgICAgICAgICBzZWxlY3RlZEJvcmRlcldpZHRoOiAiLS1zdy1zZWxlY3RlZC1ib3JkZXItd2lkdGgiLAogICAgICAgICAgICBzcGFjaW5nOiAiLS1zdy1zcGFjaW5nIiwKICAgICAgICAgICAgcHJvZHVjdFBhZGRpbmc6ICItLXN3LXByb2R1Y3QtcGFkZGluZyIsCiAgICAgICAgICAgIGZvbnRTaXplOiAiLS1zdy1mb250LXNpemUiLAogICAgICAgICAgICBjb250YWluZXJSYWRpdXM6ICItLXN3LWNvbnRhaW5lci1yYWRpdXMiLAogICAgICAgICAgICBiYWRnZVJhZGl1czogIi0tc3ctYmFkZ2UtcmFkaXVzIiwKICAgICAgICAgICAgZm9udDogIi0tc3ctZm9udCIsCiAgICAgICAgICAgIGhlYWRpbmdGb250OiAiLS1zdy1oZWFkaW5nLWZvbnQiLAogICAgICAgICAgICBmb3JlZ3JvdW5kQ29sb3I6ICItLXN3LWZvcmVncm91bmQtY29sb3IiLAogICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICItLXN3LWJhY2tncm91bmQtY29sb3IiLAogICAgICAgICAgICBicmFuZENvbG9yOiAiLS1zdy1icmFuZC1jb2xvciIsCiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAiLS1zdy1ib3JkZXItY29sb3IiLAogICAgICAgICAgICBicmFuZFRleHRDb2xvcjogIi0tc3ctYnJhbmQtdGV4dC1jb2xvciIsCiAgICAgICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcjogIi0tc3ctYnV0dG9uLWJnLWNvbG9yIiwKICAgICAgICAgICAgYnV0dG9uRm9yZWdyb3VuZENvbG9yOiAiLS1zdy1idXR0b24tZmctY29sb3IiLAogICAgICAgICAgICBwcm9kdWN0QmFja2dyb3VuZENvbG9yOiAiLS1zdy1wcm9kdWN0LWJhY2tncm91bmQtY29sb3IiLAogICAgICAgICAgICBwYXl3YWxsQmFja2dyb3VuZENvbG9yOiAiLS1zdy1wYXl3YWxsLWJhY2tncm91bmQtY29sb3IiLAogICAgICAgICAgICBzdGF0dXNCYXJQYWRkaW5nOiAiLS1zdy1zdGF0dXMtYmFyLXBhZGRpbmciLAogICAgICAgICAgICBwYXl3YWxsTWF4V2lkdGg6ICItLXN3LXBheXdhbGwtbWF4LXdpZHRoIiwKICAgICAgICAgICAgbWluTmF2YmFySGVpZ2h0OiAiLS1zdy1taW4tbmF2LWhlaWdodCIsCiAgICAgICAgICAgIGxvZ29IZWlnaHQ6ICItLXN3LWxvZ28taGVpZ2h0IiwKICAgICAgICAgICAgbmF2QnV0dG9uSWNvbnNTaXplOiAiLS1zdy1uYXYtYnV0dG9ucy1pY29ucy1zaXplIiwKICAgICAgICAgICAgY29udGVudFBhZGRpbmc6ICItLXN3LWNvbnRlbnQtcGFkZGluZyIsCiAgICAgICAgICAgIGNhcmRQYWRkaW5nOiAiLS1zdy1jYXJkLXBhZGRpbmciLAogICAgICAgICAgICBuYXZCYWNrZ3JvdW5kQ29sb3I6ICItLXN3LW5hdi1iYWNrZ3JvdW5kLWNvbG9yIiwKICAgICAgICAgICAgYnJhbmRTZWNvbmRhcnlDb2xvcjogIi0tc3ctYnJhbmQtc2Vjb25kYXJ5LWNvbG9yIgogICAgICAgICAgfQoKICAgICAgICAgIC8vIHNldCBzdHlsaW5nCgogICAgICAgICAgT2JqZWN0LmVudHJpZXMoY3NzVmFycykuZm9yRWFjaCgoZSkgPT4gewogICAgICAgICAgICBjb25zdCBrZXkgPSBlWzBdCiAgICAgICAgICAgIGNvbnN0IGNzc05hbWUgPSBlWzFdCiAgICAgICAgICAgIGRvY3VtZW50Um9vdC5zdHlsZS5zZXRQcm9wZXJ0eShjc3NOYW1lLCBzZXR0aW5nc1trZXldKTsKCiAgICAgICAgICAgIGlmIChjc3NOYW1lLmVuZHNXaXRoKCctY29sb3InKSkgewogICAgICAgICAgICAgIGNvbnN0IG5ld0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgIG5ld0Rpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCBzZXR0aW5nc1trZXldKQogICAgICAgICAgICAgIGRvY3VtZW50Um9vdC5hcHBlbmRDaGlsZChuZXdEaXYpCiAgICAgICAgICAgICAgdmFyIHJnYmEgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuZXdEaXYpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykucmVwbGFjZSgncmdiYSgnLCAnJykucmVwbGFjZSgKICAgICAgICAgICAgICAgICdyZ2IoJywgJycpLnJlcGxhY2UoJyknLCAnJykuc3BsaXQoJywgJykubWFwKGVsID0+IHBhcnNlRmxvYXQoZWwpKQogICAgICAgICAgICAgIGlmIChyZ2JhLmxlbmd0aCA9PSAzKSB7CiAgICAgICAgICAgICAgICByZ2JhLnB1c2goMS4wKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBuZXdEaXYucmVtb3ZlKCkKICAgICAgICAgICAgICBsZXQgYWxwaGFzID0gWzcsIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMF0KICAgICAgICAgICAgICBhbHBoYXMuZm9yRWFjaCgoZWwpID0+IHsKICAgICAgICAgICAgICAgIGxldCBuZXdBbHBoYSA9IE1hdGgucm91bmQoKHJnYmFbM10gKiBlbCAvIDEwMCkgKiAxMDApIC8gMTAwCiAgICAgICAgICAgICAgICBsZXQgbmV3Q3NzTmFtZSA9IGAke2Nzc05hbWV9LSR7ZWx9YAogICAgICAgICAgICAgICAgbGV0IG5ld0NvbG9yID0gYHJnYmEoJHtyZ2JhWzBdfSwke3JnYmFbMV19LCR7cmdiYVsyXX0sJHtuZXdBbHBoYX0pYAogICAgICAgICAgICAgICAgZG9jdW1lbnRSb290LnN0eWxlLnNldFByb3BlcnR5KG5ld0Nzc05hbWUsIG5ld0NvbG9yKTsKICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgIGlmIChrZXkgPT0gJ3BheXdhbGxCYWNrZ3JvdW5kQ29sb3InICYmIHJnYmEubGVuZ3RoID49IDMpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgIHdpbmRvdy5TdXBlcndhbGwucGF5d2FsbEJhY2tncm91bmRDb2xvciA9ICIjIiArICgoMSA8PCAyNCkgKyAocmdiYVswXSA8PCAxNikgKyAocmdiYVsxXSA8PCA4KSArCiAgICAgICAgICAgICAgICAgICAgcmdiYVsyXSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAgICAgIHdpbmRvdy5TdXBlcndhbGwucGF5d2FsbEJhY2tncm91bmRDb2xvciA9ICIjMDAwMDAwIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSkKCgogICAgICAgICAgLy8gcHJpbnQgc2V0dGluZ3MKCiAgICAgICAgICAvLyBsb2dpYyB0byBoYW5kbGUgc3dpdGNoaW5nIHByb2R1Y3RzCiAgICAgICAgICB3aW5kb3cuU3VwZXJ3YWxsLnNlbGVjdFByb2R1Y3QgPSAocHJvZHVjdCkgPT4gewogICAgICAgICAgICBjb25zdCBwcmltYXJ5UHJvZHVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3dfaW5wdXRfMScpCiAgICAgICAgICAgIGNvbnN0IHNlY29uZGFyeVByb2R1Y3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N3X2lucHV0XzInKQogICAgICAgICAgICBjb25zdCB0ZXJ0aWFyeVByb2R1Y3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N3X2lucHV0XzMnKQoKICAgICAgICAgICAgaWYgKHByb2R1Y3QgPT0gInByaW1hcnkiKSB7CiAgICAgICAgICAgICAgcHJpbWFyeVByb2R1Y3RFbGVtZW50LmNoZWNrZWQgPSB0cnVlCiAgICAgICAgICAgICAgc2Vjb25kYXJ5UHJvZHVjdEVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlCiAgICAgICAgICAgICAgdGVydGlhcnlQcm9kdWN0RWxlbWVudC5jaGVja2VkID0gZmFsc2UKICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9kdWN0ID09ICJzZWNvbmRhcnkiKSB7CiAgICAgICAgICAgICAgcHJpbWFyeVByb2R1Y3RFbGVtZW50LmNoZWNrZWQgPSBmYWxzZQogICAgICAgICAgICAgIHNlY29uZGFyeVByb2R1Y3RFbGVtZW50LmNoZWNrZWQgPSB0cnVlCiAgICAgICAgICAgICAgdGVydGlhcnlQcm9kdWN0RWxlbWVudC5jaGVja2VkID0gZmFsc2UKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBwcmltYXJ5UHJvZHVjdEVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlCiAgICAgICAgICAgICAgc2Vjb25kYXJ5UHJvZHVjdEVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlCiAgICAgICAgICAgICAgdGVydGlhcnlQcm9kdWN0RWxlbWVudC5jaGVja2VkID0gdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgLy8gbG9naWMgdG8gdXBkYXRlIGJvdHRvbSBwYWRkaW5nIG9mIHBheXdhbGwgY29udGFpbmVyCiAgICAgICAgICBpZiAod2luZG93LlN1cGVyd2FsbC51cGRhdGVQYXl3YWxsQ29udGFpbmVyUGFkZGluZyA9PT0gbnVsbCkgewogICAgICAgICAgICAvLyBsb2dpYyB0byB1cGRhdGUgYm90dG9tIHBhZGRpbmcgb2YgcGF5d2FsbCBjb250YWluZXIKICAgICAgICAgICAgd2luZG93LlN1cGVyd2FsbC51cGRhdGVQYXl3YWxsQ29udGFpbmVyUGFkZGluZyA9ICgpID0+IHsKCiAgICAgICAgICAgICAgZG9jdW1lbnRSb290LnN0eWxlLnNldFByb3BlcnR5KCctLXN3LWNvbnRhaW5lci1wYWRkaW5nJywgJyBjYWxjKHZhcigtLXN3LXNwYWNpbmcpICogMS42KScpCiAgICAgICAgICAgICAgZG9jdW1lbnRSb290LnN0eWxlLnNldFByb3BlcnR5KCctLXN3LWNvbnRlbnQtcGFkZGluZycsICcgY2FsYyh2YXIoLS1zdy1zcGFjaW5nKSAqIDEuNiknKQogICAgICAgICAgICAgIGRvY3VtZW50Um9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zdy1jYXJkLXBhZGRpbmcnLCAnIGNhbGModmFyKC0tc3ctc3BhY2luZykgKiAxLjYpJykKCiAgICAgICAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSBkb2N1bWVudFJvb3QuY2xpZW50V2lkdGgKICAgICAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSBkb2N1bWVudFJvb3QuY2xpZW50SGVpZ2h0CiAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gd2luZG93V2lkdGggPiA1NDQgPyAyNSA6IDAKICAgICAgICAgICAgICBkb2N1bWVudFJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tc3ctY29udGFpbmVyLXdpZHRoJywgYCR7cGF5d2FsbENvbnRhaW5lci5jbGllbnRXaWR0aH1weGApCgogICAgICAgICAgICAgIC8vIGFkanVzdCBmb3Igbm90Y2ggb24gbGFyZ2UgZGV2aWNlcwogICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5zdGF0dXNCYXJQYWRkaW5nID09ICJhdXRvIikgewogICAgICAgICAgICAgICAgaWYgKCFpc0VkaXRvcikgewogICAgICAgICAgICAgICAgICBpZiAod2luZG93SGVpZ2h0ID4gNzcwKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRSb290LnN0eWxlLnNldFByb3BlcnR5KCctLXN3LXN0YXR1cy1iYXItcGFkZGluZycsICIzNHB4Iik7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRSb290LnN0eWxlLnNldFByb3BlcnR5KCctLXN3LXN0YXR1cy1iYXItcGFkZGluZycsICIwcHgiKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoKHNjcmVlbi5oZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQgPiAxMCAmJiBpc0lPUykgfHwgc2NyZWVuLmhlaWdodCA+IDk1MCkgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Um9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zdy1zdGF0dXMtYmFyLXBhZGRpbmcnLCAiMHB4Iik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGRvY3VtZW50Um9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zdy1zdGF0dXMtYmFyLXBhZGRpbmcnLCAiMzRweCIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLmF1dG9BZGp1c3RDb250ZW50QWxpZ25tZW50ID09ICJ0cnVlIikgewogICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLmNvbnRlbnRBbGlnbm1lbnQgPT0gImJvdHRvbSIgfHwgc2V0dGluZ3MuY29udGVudEFsaWdubWVudCA9PSAiY2VudGVyIikgewogICAgICAgICAgICAgICAgICBjb25zdCBwYWRkaW5nID0gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHBheXdhbGxDb250YWluZXIpLnBhZGRpbmdMZWZ0KQogICAgICAgICAgICAgICAgICB2YXIgcGF5d2FsbENvbnRlbnRIZWlnaHQgPSAwCiAgICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHBheXdhbGxDb250YWluZXIuY2hpbGRyZW47CiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZWxjcyA9IGdldENvbXB1dGVkU3R5bGUoY2hpbGRyZW5baV0pOwogICAgICAgICAgICAgICAgICAgIHBheXdhbGxDb250ZW50SGVpZ2h0ICs9IHBhcnNlRmxvYXQoY2hpbGRyZW5baV0uY2xpZW50SGVpZ2h0KSArIHBhcnNlRmxvYXQoZWxjcy5wYWRkaW5nQm90dG9tKSArCiAgICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGVsY3MucGFkZGluZ1RvcCkgKyBwYXJzZUZsb2F0KGVsY3MubWFyZ2luQm90dG9tKSArIHBhcnNlRmxvYXQoZWxjcy5tYXJnaW5Ub3ApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHdpbmRvdy5TdXBlcndhbGwudXBkYXRlUGF5d2FsbENvbnRhaW5lclBhZGRpbmcoKQogICAgICAgICAgd2luZG93LlN1cGVyd2FsbC5zZXR0aW5ncyA9IHNldHRpbmdzCiAgICAgICAgfTsKICAgICAgPC9zY3JpcHQ+CiAgPC9kaXY+CgogIDxzY3JpcHQ+CiAgICB3aW5kb3cuU3VwZXJ3YWxsLmFkZEhvdEtleSA9IChob3RrZXlzLCBmbikgPT4gewogICAgICBob3RrZXlzID0gaG90a2V5cy5zcGxpdCgnICcpOwoKICAgICAgZnVuY3Rpb24gdGVzdCh0ZXN0T2JqLCBlKSB7CiAgICAgICAgaWYgKHRlc3RPYmoua2V5ICE9PSBlLmtleS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgZm9yICh2YXIga2V5IGluIHRlc3RPYmopCiAgICAgICAgICBpZiAoa2V5ICE9PSAna2V5JyAmJiB0ZXN0T2JqW2tleV0gIT09IGVba2V5XSkgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHZhciB0ZXN0cyA9IGhvdGtleXMubWFwKGZ1bmN0aW9uIChob3RrZXkpIHsKICAgICAgICB2YXIgdGVzdE9iaiA9IHsKICAgICAgICAgIHNoaWZ0S2V5OiBmYWxzZSwKICAgICAgICAgIGN0cmxLZXk6IGZhbHNlLAogICAgICAgICAgYWx0S2V5OiBmYWxzZSwKICAgICAgICAgIG1ldGFLZXk6IGZhbHNlLAogICAgICAgICAgaXNDb21wb3Npbmc6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAgIGtleXMgPSBob3RrZXkudG9Mb3dlckNhc2UoKS5zcGxpdCgnKycpOwogICAgICAgIGZvciAodmFyIGkgaW4ga2V5cykgewogICAgICAgICAgc3dpdGNoIChrZXlzW2ldKSB7CiAgICAgICAgICAgIGNhc2UgJ3NoaWZ0JzoKICAgICAgICAgICAgY2FzZSAndW1zY2hhbHQnOgogICAgICAgICAgICAgIHRlc3RPYmouc2hpZnRLZXkgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdjdHJsJzoKICAgICAgICAgICAgY2FzZSAnc3RyZyc6CiAgICAgICAgICAgICAgdGVzdE9iai5jdHJsS2V5ID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYWx0JzoKICAgICAgICAgICAgY2FzZSAnb3B0aW9uJzoKICAgICAgICAgICAgICB0ZXN0T2JqLmFsdEtleSA9IHRydWU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ21ldGEnOgogICAgICAgICAgICBjYXNlICd3aW4nOgogICAgICAgICAgICBjYXNlICdzdXBlcic6CiAgICAgICAgICAgIGNhc2UgJ21vZDQnOgogICAgICAgICAgICBjYXNlICdjb21tYW5kJzoKICAgICAgICAgICAgY2FzZSAncHJvcGVsbGVyJzoKICAgICAgICAgICAgICB0ZXN0T2JqLm1ldGFLZXkgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdjb21wb3NlJzoKICAgICAgICAgICAgICB0ZXN0T2JqLmlzQ29tcG9zaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBpZiAoa2V5c1tpXS5sZW5ndGggIT09IDEpIHRocm93IG5ldyBFcnJvcignVW5rbm93biBrZXk6ICcgKyBrZXlzW2ldLnRvVXBwZXJDYXNlKCkpOwogICAgICAgICAgICAgIHRlc3RPYmoua2V5ID0ga2V5c1tpXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRlc3QuYmluZChudWxsLCB0ZXN0T2JqKTsKICAgICAgfSk7CgogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgZm9yICh2YXIgaSBpbiB0ZXN0cykKICAgICAgICAgIGlmICh0ZXN0c1tpXShlKSkgewogICAgICAgICAgICBlLmhvdGtleSA9IGhvdGtleXNbaV07CiAgICAgICAgICAgIGZuLmNhbGwodGhpcywgZSk7CiAgICAgICAgICB9CiAgICAgIH0sIHRydWUpOwoKICAgIH0KCiAgICB3aW5kb3cuU3VwZXJ3YWxsLnRlbXBsYXRlRWRpdG9yID0gKCkgPT4gewogICAgICBjb25zdCBsb2NhdGlvbiA9IGJ0b2Eod2luZG93LmxvY2F0aW9uLmhyZWYpCiAgICAgIGNvbnN0IHVybCA9IGAuLi9zaW11bGF0b3IvP2lwYWQ9ZmFsc2UmbWluaW1hbD10cnVlJnViNjQ9JHtsb2NhdGlvbn1gCiAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpCiAgICB9CgogICAgd2luZG93LlN1cGVyd2FsbC5zaW11bGF0b3IgPSAoKSA9PiB7CiAgICAgIGNvbnN0IGxvY2F0aW9uID0gYnRvYSh3aW5kb3cubG9jYXRpb24uaHJlZikKICAgICAgY29uc3QgdXJsID0gYC4uL3NpbXVsYXRvci8/aXBhZD1mYWxzZSZtaW5pbWFsPWZhbHNlJmVtYmVkPXRydWUmdWI2ND0ke2xvY2F0aW9ufWAKICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJykKICAgIH0KCiAgICBsZXQgaXNJT1MgPSAoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSB8fCAobmF2aWdhdG9yLnBsYXRmb3JtID09PSAnTWFjSW50ZWwnICYmIG5hdmlnYXRvcgogICAgICAubWF4VG91Y2hQb2ludHMgPiAxKSkgJiYgIXdpbmRvdy5NU1N0cmVhbQogICAgaWYgKCFpc0lPUyAmJiAhKHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wKSkgewogICAgICB3aW5kb3cuU3VwZXJ3YWxsLmFkZEhvdEtleSgiY29tbWFuZCtrIGN0cmwrayBtZXRhK2siLCB3aW5kb3cuU3VwZXJ3YWxsLnRlbXBsYXRlRWRpdG9yKQogICAgICB3aW5kb3cuU3VwZXJ3YWxsLmFkZEhvdEtleSgiY29tbWFuZCtpIGN0cmwraSBtZXRhK2kiLCB3aW5kb3cuU3VwZXJ3YWxsLnNpbXVsYXRvcikKICAgIH0KICA8L3NjcmlwdD4KCiAgPGRpdiBpZD0ic3dIb3ZlckluZGljYXRvciIgY2xhc3M9InN3LWVkaXRvci1zZWxlY3Rvci1pbmRpY2F0b3IiPgogICAgPHAgaWQ9InN3SG92ZXJWYXJpYWJsZU5hbWUiPjwvcD4KICA8L2Rpdj4KICA8ZGl2IGlkPSJzd1NlbGVjdGVkSW5kaWNhdG9yIiBjbGFzcz0ic3ctZWRpdG9yLXNlbGVjdG9yLWluZGljYXRvciI+CiAgICA8cCBpZD0ic3dTZWxlY3RlZFZhcmlhYmxlTmFtZSI+PC9wPgogIDwvZGl2PgogIDxkaXYgaWQ9InN3SG92ZXJFZGl0b3JJbmRpY2F0b3IiIGNsYXNzPSJzdy1lZGl0b3Itc2VsZWN0b3ItaW5kaWNhdG9yIj4KICA8L2Rpdj4KCjwvYm9keT4KCjwvaHRtbD4K + """.trimIndent() diff --git a/superwall/src/test/java/com/superwall/sdk/web/WebPaywallRedeemerTest.kt b/superwall/src/test/java/com/superwall/sdk/web/WebPaywallRedeemerTest.kt index 29b33ebd..fb72e3b5 100644 --- a/superwall/src/test/java/com/superwall/sdk/web/WebPaywallRedeemerTest.kt +++ b/superwall/src/test/java/com/superwall/sdk/web/WebPaywallRedeemerTest.kt @@ -39,6 +39,8 @@ import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test +import java.io.FileInputStream +import java.io.FileOutputStream class WebPaywallRedeemerTest { private val context: Context = mockk() @@ -617,8 +619,25 @@ class WebPaywallRedeemerTest { saved = data as Any? } + override fun writeFile( + storable: Storable, + data: String, + ) { + TODO("Not yet implemented") + } + + override fun readFile(storable: Storable): String? { + TODO("Not yet implemented") + } + override fun clean() { } + + override fun getFileStream(storable: Storable): FileOutputStream { + TODO("Not yet implemented") + } + + override fun readFileStream(storable: Storable): FileInputStream = super.readFileStream(storable) } redeemer = WebPaywallRedeemer(