From 6d67ae6d8147349c163404d5933ee036139e6d02 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 18 Nov 2025 12:58:45 -0700 Subject: [PATCH 1/4] Logging overhaul --- .../ascently/data/health/HealthConnectStub.kt | 193 ++++---- .../data/repository/ClimbRepository.kt | 123 ++--- .../ascently/data/state/DataStateManager.kt | 10 +- .../atridad/ascently/data/sync/SyncService.kt | 430 +++++++++--------- .../service/SessionTrackingService.kt | 223 ++++----- .../com/atridad/ascently/ui/AscentlyApp.kt | 321 +++++++------ .../ascently/ui/viewmodel/ClimbViewModel.kt | 222 +++++---- .../com/atridad/ascently/utils/AppLogger.kt | 51 +++ .../com/atridad/ascently/utils/ImageUtils.kt | 78 ++-- .../ascently/utils/MigrationManager.kt | 47 +- .../ascently/utils/ZipExportImportUtils.kt | 169 ++++--- .../LiveActivityManager.swift | 2 +- .../UserInterfaceState.xcuserstate | Bin 254970 -> 263252 bytes ios/Ascently/ContentView.swift | 14 +- ios/Ascently/Services/HealthKitService.swift | 39 +- ios/Ascently/Services/SyncService.swift | 91 ++-- ios/Ascently/Utils/AppLogger.swift | 46 ++ ios/Ascently/Utils/DataStateManager.swift | 22 +- ios/Ascently/Utils/ImageManager.swift | 164 ++++--- ios/Ascently/Utils/ZipUtils.swift | 52 ++- .../ViewModels/ClimbingDataManager.swift | 210 ++++++--- .../ViewModels/LiveActivityManager.swift | 74 +-- .../Views/LiveActivityDebugView.swift | 2 +- ios/Ascently/Views/ProblemsView.swift | 1 - ios/Ascently/Views/SettingsView.swift | 49 +- 25 files changed, 1428 insertions(+), 1205 deletions(-) create mode 100644 android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt create mode 100644 ios/Ascently/Utils/AppLogger.swift diff --git a/android/app/src/main/java/com/atridad/ascently/data/health/HealthConnectStub.kt b/android/app/src/main/java/com/atridad/ascently/data/health/HealthConnectStub.kt index 305b1dd..c6e54b5 100644 --- a/android/app/src/main/java/com/atridad/ascently/data/health/HealthConnectStub.kt +++ b/android/app/src/main/java/com/atridad/ascently/data/health/HealthConnectStub.kt @@ -3,7 +3,7 @@ package com.atridad.ascently.data.health import android.annotation.SuppressLint import android.content.Context import android.content.SharedPreferences -import android.util.Log +import com.atridad.ascently.utils.AppLogger import androidx.activity.result.contract.ActivityResultContract import androidx.health.connect.client.HealthConnectClient import androidx.health.connect.client.PermissionController @@ -31,7 +31,7 @@ import kotlinx.coroutines.flow.flow class HealthConnectManager(private val context: Context) { private val preferences: SharedPreferences = - context.getSharedPreferences("health_connect_prefs", Context.MODE_PRIVATE) + context.getSharedPreferences("health_connect_prefs", Context.MODE_PRIVATE) private val _isEnabled = MutableStateFlow(preferences.getBoolean("enabled", false)) private val _hasPermissions = MutableStateFlow(preferences.getBoolean("permissions", false)) @@ -46,21 +46,21 @@ class HealthConnectManager(private val context: Context) { private const val TAG = "HealthConnectManager" val REQUIRED_PERMISSIONS = - setOf( - HealthPermission.getReadPermission(ExerciseSessionRecord::class), - HealthPermission.getWritePermission(ExerciseSessionRecord::class), - HealthPermission.getReadPermission(HeartRateRecord::class), - HealthPermission.getWritePermission(HeartRateRecord::class), - HealthPermission.getReadPermission(TotalCaloriesBurnedRecord::class), - HealthPermission.getWritePermission(TotalCaloriesBurnedRecord::class) - ) + setOf( + HealthPermission.getReadPermission(ExerciseSessionRecord::class), + HealthPermission.getWritePermission(ExerciseSessionRecord::class), + HealthPermission.getReadPermission(HeartRateRecord::class), + HealthPermission.getWritePermission(HeartRateRecord::class), + HealthPermission.getReadPermission(TotalCaloriesBurnedRecord::class), + HealthPermission.getWritePermission(TotalCaloriesBurnedRecord::class) + ) } private val healthConnectClient by lazy { try { HealthConnectClient.getOrCreate(context) } catch (e: Exception) { - Log.e(TAG, "Failed to create Health Connect client", e) + AppLogger.e(TAG, e) { "Failed to create Health Connect client" } _isCompatible.value = false null } @@ -75,7 +75,7 @@ class HealthConnectManager(private val context: Context) { val status = HealthConnectClient.getSdkStatus(context) emit(status == HealthConnectClient.SDK_AVAILABLE) } catch (e: Exception) { - Log.e(TAG, "Error checking Health Connect availability", e) + AppLogger.e(TAG, e) { "Error checking Health Connect availability" } _isCompatible.value = false emit(false) } @@ -90,10 +90,10 @@ class HealthConnectManager(private val context: Context) { try { val alreadyHasPermissions = hasAllPermissions() if (!alreadyHasPermissions) { - Log.d(TAG, "Health Connect enabled - permissions will be requested by UI") + AppLogger.d(TAG) { "Health Connect enabled - permissions will be requested by UI" } } } catch (e: Exception) { - Log.w(TAG, "Error checking permissions when enabling Health Connect", e) + AppLogger.w(TAG, e) { "Error checking permissions when enabling Health Connect" } } } else if (!enabled) { setPermissionsGranted(false) @@ -111,15 +111,15 @@ class HealthConnectManager(private val context: Context) { return false } val grantedPermissions = - healthConnectClient!!.permissionController.getGrantedPermissions() + healthConnectClient!!.permissionController.getGrantedPermissions() val hasAll = - REQUIRED_PERMISSIONS.all { permission -> - grantedPermissions.contains(permission) - } + REQUIRED_PERMISSIONS.all { permission -> + grantedPermissions.contains(permission) + } setPermissionsGranted(hasAll) hasAll } catch (e: Exception) { - Log.e(TAG, "Error checking permissions", e) + AppLogger.e(TAG, e) { "Error checking permissions" } setPermissionsGranted(false) false } @@ -128,14 +128,14 @@ class HealthConnectManager(private val context: Context) { suspend fun isReady(): Boolean { return try { if (!_isEnabled.value || !_isCompatible.value || healthConnectClient == null) - return false + return false val isAvailable = - HealthConnectClient.getSdkStatus(context) == HealthConnectClient.SDK_AVAILABLE + HealthConnectClient.getSdkStatus(context) == HealthConnectClient.SDK_AVAILABLE val hasPerms = if (isAvailable) hasAllPermissions() else false isAvailable && hasPerms } catch (e: Exception) { - Log.e(TAG, "Error checking Health Connect readiness", e) + AppLogger.e(TAG, e) { "Error checking Health Connect readiness" } false } } @@ -148,27 +148,27 @@ class HealthConnectManager(private val context: Context) { return try { REQUIRED_PERMISSIONS.map { it }.toSet() } catch (e: Exception) { - Log.e(TAG, "Error getting required permissions", e) + AppLogger.e(TAG, e) { "Error getting required permissions" } emptySet() } } @SuppressLint("RestrictedApi") suspend fun syncCompletedSession( - session: ClimbSession, - gymName: String, - attemptCount: Int = 0 + session: ClimbSession, + gymName: String, + attemptCount: Int = 0 ): Result { return try { if (!isReady() || !_autoSync.value) { return Result.failure( - IllegalStateException("Health Connect not ready or auto-sync disabled") + IllegalStateException("Health Connect not ready or auto-sync disabled") ) } if (session.status != SessionStatus.COMPLETED) { return Result.failure( - IllegalArgumentException("Only completed sessions can be synced") + IllegalArgumentException("Only completed sessions can be synced") ) } @@ -177,29 +177,29 @@ class HealthConnectManager(private val context: Context) { if (startTime == null || endTime == null) { return Result.failure( - IllegalArgumentException("Session must have valid start and end times") + IllegalArgumentException("Session must have valid start and end times") ) } - Log.d(TAG, "Attempting to sync session '${session.id}' to Health Connect...") + AppLogger.d(TAG) { "Attempting to sync session '${session.id}' to Health Connect..." } val records = mutableListOf() try { val exerciseSession = - ExerciseSessionRecord( - startTime = startTime, - startZoneOffset = - ZoneOffset.systemDefault().rules.getOffset(startTime), - endTime = endTime, - endZoneOffset = ZoneOffset.systemDefault().rules.getOffset(endTime), - exerciseType = - ExerciseSessionRecord.EXERCISE_TYPE_STRENGTH_TRAINING, - title = "Rock Climbing at $gymName" - ) + ExerciseSessionRecord( + startTime = startTime, + startZoneOffset = + ZoneOffset.systemDefault().rules.getOffset(startTime), + endTime = endTime, + endZoneOffset = ZoneOffset.systemDefault().rules.getOffset(endTime), + exerciseType = + ExerciseSessionRecord.EXERCISE_TYPE_STRENGTH_TRAINING, + title = "Rock Climbing at $gymName" + ) records.add(exerciseSession) } catch (e: Exception) { - Log.w(TAG, "Failed to create exercise session record", e) + AppLogger.w(TAG, e) { "Failed to create exercise session record" } } try { @@ -208,75 +208,74 @@ class HealthConnectManager(private val context: Context) { if (estimatedCalories > 0) { val caloriesRecord = - TotalCaloriesBurnedRecord( - startTime = startTime, - startZoneOffset = - ZoneOffset.systemDefault().rules.getOffset(startTime), - endTime = endTime, - endZoneOffset = - ZoneOffset.systemDefault().rules.getOffset(endTime), - energy = Energy.calories(estimatedCalories) - ) + TotalCaloriesBurnedRecord( + startTime = startTime, + startZoneOffset = + ZoneOffset.systemDefault().rules.getOffset(startTime), + endTime = endTime, + endZoneOffset = + ZoneOffset.systemDefault().rules.getOffset(endTime), + energy = Energy.calories(estimatedCalories) + ) records.add(caloriesRecord) } } catch (e: Exception) { - Log.w(TAG, "Failed to create calories record", e) + AppLogger.w(TAG, e) { "Failed to create calories record" } } try { val heartRateRecord = createHeartRateRecord(startTime, endTime, attemptCount) heartRateRecord?.let { records.add(it) } } catch (e: Exception) { - Log.w(TAG, "Failed to create heart rate record", e) + AppLogger.w(TAG, e) { "Failed to create heart rate record" } } if (records.isNotEmpty() && healthConnectClient != null) { - Log.d(TAG, "Writing ${records.size} records to Health Connect...") + AppLogger.d(TAG) { "Writing ${records.size} records to Health Connect..." } healthConnectClient!!.insertRecords(records) - Log.i( - TAG, - "Successfully synced ${records.size} records for session '${session.id}' to Health Connect" - ) + AppLogger.i(TAG) { + "Successfully synced ${records.size} records for session '${session.id}' to Health Connect" + } preferences - .edit() - .putString("last_sync_success", DateFormatUtils.nowISO8601()) - .apply() + .edit() + .putString("last_sync_success", DateFormatUtils.nowISO8601()) + .apply() } else { val reason = - when { - records.isEmpty() -> "No records created" - healthConnectClient == null -> "Health Connect client unavailable" - else -> "Unknown reason" - } - Log.w(TAG, "Sync failed for session '${session.id}': $reason") + when { + records.isEmpty() -> "No records created" + healthConnectClient == null -> "Health Connect client unavailable" + else -> "Unknown reason" + } + AppLogger.w(TAG) { "Sync failed for session '${session.id}': $reason" } return Result.failure(Exception("Sync failed: $reason")) } Result.success(Unit) } catch (e: Exception) { - Log.e(TAG, "Error syncing climbing session to Health Connect", e) + AppLogger.e(TAG, e) { "Error syncing climbing session to Health Connect" } Result.failure(e) } } suspend fun autoSyncCompletedSession( - session: ClimbSession, - gymName: String, - attemptCount: Int = 0 + session: ClimbSession, + gymName: String, + attemptCount: Int = 0 ): Result { return if (_autoSync.value && isReady() && session.status == SessionStatus.COMPLETED) { - Log.d(TAG, "Auto-syncing completed session '${session.id}' to Health Connect...") + AppLogger.d(TAG) { "Auto-syncing completed session '${session.id}' to Health Connect..." } syncCompletedSession(session, gymName, attemptCount) } else { val reason = - when { - session.status != SessionStatus.COMPLETED -> "session not completed" - !_autoSync.value -> "auto-sync disabled" - !isReady() -> "Health Connect not ready" - else -> "unknown reason" - } - Log.d(TAG, "Auto-sync skipped for session '${session.id}': $reason") + when { + session.status != SessionStatus.COMPLETED -> "session not completed" + !_autoSync.value -> "auto-sync disabled" + !isReady() -> "Health Connect not ready" + else -> "unknown reason" + } + AppLogger.d(TAG) { "Auto-sync skipped for session '${session.id}': $reason" } Result.success(Unit) } } @@ -284,30 +283,30 @@ class HealthConnectManager(private val context: Context) { private fun estimateCaloriesForClimbing(durationMinutes: Long, attemptCount: Int): Double { val baseCaloriesPerMinute = 8.0 val intensityMultiplier = - when { - attemptCount >= 20 -> 1.3 - attemptCount >= 10 -> 1.1 - else -> 0.9 - } + when { + attemptCount >= 20 -> 1.3 + attemptCount >= 10 -> 1.1 + else -> 0.9 + } return durationMinutes * baseCaloriesPerMinute * intensityMultiplier } @SuppressLint("RestrictedApi") private fun createHeartRateRecord( - startTime: Instant, - endTime: Instant, - attemptCount: Int + startTime: Instant, + endTime: Instant, + attemptCount: Int ): HeartRateRecord? { return try { val samples = mutableListOf() val intervalMinutes = 5L val baseHeartRate = - when { - attemptCount >= 20 -> 155L - attemptCount >= 10 -> 145L - else -> 135L - } + when { + attemptCount >= 20 -> 155L + attemptCount >= 10 -> 145L + else -> 135L + } var currentTime = startTime while (currentTime.isBefore(endTime)) { @@ -321,14 +320,14 @@ class HealthConnectManager(private val context: Context) { if (samples.isEmpty()) return null HeartRateRecord( - startTime = startTime, - startZoneOffset = ZoneOffset.systemDefault().rules.getOffset(startTime), - endTime = endTime, - endZoneOffset = ZoneOffset.systemDefault().rules.getOffset(endTime), - samples = samples + startTime = startTime, + startZoneOffset = ZoneOffset.systemDefault().rules.getOffset(startTime), + endTime = endTime, + endZoneOffset = ZoneOffset.systemDefault().rules.getOffset(endTime), + samples = samples ) } catch (e: Exception) { - Log.e(TAG, "Error creating heart rate record", e) + AppLogger.e(TAG, e) { "Error creating heart rate record" } null } } diff --git a/android/app/src/main/java/com/atridad/ascently/data/repository/ClimbRepository.kt b/android/app/src/main/java/com/atridad/ascently/data/repository/ClimbRepository.kt index 7668c36..5d40f92 100644 --- a/android/app/src/main/java/com/atridad/ascently/data/repository/ClimbRepository.kt +++ b/android/app/src/main/java/com/atridad/ascently/data/repository/ClimbRepository.kt @@ -13,6 +13,7 @@ import com.atridad.ascently.data.format.DeletedItem import com.atridad.ascently.data.model.* import com.atridad.ascently.data.state.DataStateManager import com.atridad.ascently.utils.DateFormatUtils +import com.atridad.ascently.utils.AppLogger import com.atridad.ascently.utils.ZipExportImportUtils import java.io.File import kotlinx.coroutines.flow.Flow @@ -26,7 +27,7 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) private val attemptDao = database.attemptDao() private val dataStateManager = DataStateManager(context) private val deletionPreferences: SharedPreferences = - context.getSharedPreferences("deleted_items", Context.MODE_PRIVATE) + context.getSharedPreferences("deleted_items", Context.MODE_PRIVATE) private var autoSyncCallback: (() -> Unit)? = null @@ -43,11 +44,13 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) dataStateManager.updateDataState() triggerAutoSync() } + suspend fun updateGym(gym: Gym) { gymDao.updateGym(gym) dataStateManager.updateDataState() triggerAutoSync() } + suspend fun deleteGym(gym: Gym) { gymDao.deleteGym(gym) trackDeletion(gym.id, "gym") @@ -63,10 +66,12 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) problemDao.insertProblem(problem) dataStateManager.updateDataState() } + suspend fun updateProblem(problem: Problem) { problemDao.updateProblem(problem) dataStateManager.updateDataState() } + suspend fun deleteProblem(problem: Problem) { problemDao.deleteProblem(problem) trackDeletion(problem.id, "problem") @@ -77,7 +82,8 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) fun getAllSessions(): Flow> = sessionDao.getAllSessions() suspend fun getSessionById(id: String): ClimbSession? = sessionDao.getSessionById(id) fun getSessionsByGym(gymId: String): Flow> = - sessionDao.getSessionsByGym(gymId) + sessionDao.getSessionsByGym(gymId) + suspend fun getActiveSession(): ClimbSession? = sessionDao.getActiveSession() fun getActiveSessionFlow(): Flow = sessionDao.getActiveSessionFlow() suspend fun insertSession(session: ClimbSession) { @@ -88,6 +94,7 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) triggerAutoSync() } } + suspend fun updateSession(session: ClimbSession) { sessionDao.updateSession(session) dataStateManager.updateDataState() @@ -96,12 +103,14 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) triggerAutoSync() } } + suspend fun deleteSession(session: ClimbSession) { sessionDao.deleteSession(session) trackDeletion(session.id, "session") dataStateManager.updateDataState() triggerAutoSync() } + suspend fun getLastUsedGym(): Gym? { val recentSessions = sessionDao.getRecentSessions(1).first() return if (recentSessions.isNotEmpty()) { @@ -114,17 +123,21 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) // Attempt operations fun getAllAttempts(): Flow> = attemptDao.getAllAttempts() fun getAttemptsBySession(sessionId: String): Flow> = - attemptDao.getAttemptsBySession(sessionId) + attemptDao.getAttemptsBySession(sessionId) + fun getAttemptsByProblem(problemId: String): Flow> = - attemptDao.getAttemptsByProblem(problemId) + attemptDao.getAttemptsByProblem(problemId) + suspend fun insertAttempt(attempt: Attempt) { attemptDao.insertAttempt(attempt) dataStateManager.updateDataState() } + suspend fun updateAttempt(attempt: Attempt) { attemptDao.updateAttempt(attempt) dataStateManager.updateDataState() } + suspend fun deleteAttempt(attempt: Attempt) { attemptDao.deleteAttempt(attempt) trackDeletion(attempt.id, "attempt") @@ -141,38 +154,38 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) validateDataIntegrity(allGyms, allProblems, allSessions, allAttempts) val backupData = - ClimbDataBackup( - exportedAt = DateFormatUtils.nowISO8601(), - version = "2.0", - formatVersion = "2.0", - gyms = allGyms.map { BackupGym.fromGym(it) }, - problems = allProblems.map { BackupProblem.fromProblem(it) }, - sessions = allSessions.map { BackupClimbSession.fromClimbSession(it) }, - attempts = allAttempts.map { BackupAttempt.fromAttempt(it) } - ) + ClimbDataBackup( + exportedAt = DateFormatUtils.nowISO8601(), + version = "2.0", + formatVersion = "2.0", + gyms = allGyms.map { BackupGym.fromGym(it) }, + problems = allProblems.map { BackupProblem.fromProblem(it) }, + sessions = allSessions.map { BackupClimbSession.fromClimbSession(it) }, + attempts = allAttempts.map { BackupAttempt.fromAttempt(it) } + ) val referencedImagePaths = allProblems.flatMap { it.imagePaths }.toSet() val validImagePaths = - referencedImagePaths - .filter { imagePath -> - try { - val imageFile = - com.atridad.ascently.utils.ImageUtils.getImageFile( - context, - imagePath - ) - imageFile.exists() && imageFile.length() > 0 - } catch (_: Exception) { - false - } - } - .toSet() + referencedImagePaths + .filter { imagePath -> + try { + val imageFile = + com.atridad.ascently.utils.ImageUtils.getImageFile( + context, + imagePath + ) + imageFile.exists() && imageFile.length() > 0 + } catch (_: Exception) { + false + } + } + .toSet() ZipExportImportUtils.createExportZipToUri( - context = context, - uri = uri, - exportData = backupData, - referencedImagePaths = validImagePaths + context = context, + uri = uri, + exportData = backupData, + referencedImagePaths = validImagePaths ) } catch (e: Exception) { throw Exception("Export failed: ${e.message}") @@ -192,11 +205,11 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) } val importData = - try { - json.decodeFromString(importResult.jsonContent) - } catch (e: Exception) { - throw Exception("Invalid data format: ${e.message}") - } + try { + json.decodeFromString(importResult.jsonContent) + } catch (e: Exception) { + throw Exception("Invalid data format: ${e.message}") + } validateImportData(importData) @@ -214,17 +227,17 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) } val updatedBackupProblems = - ZipExportImportUtils.updateProblemImagePaths( - importData.problems, - importResult.importedImagePaths - ) + ZipExportImportUtils.updateProblemImagePaths( + importData.problems, + importResult.importedImagePaths + ) updatedBackupProblems.forEach { backupProblem -> try { problemDao.insertProblem(backupProblem.toProblem()) } catch (e: Exception) { throw Exception( - "Failed to import problem '${backupProblem.name}': ${e.message}" + "Failed to import problem '${backupProblem.name}': ${e.message}" ) } } @@ -262,7 +275,7 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) fun trackDeletion(itemId: String, itemType: String) { val currentDeletions = getDeletedItems().toMutableList() val newDeletion = - DeletedItem(id = itemId, type = itemType, deletedAt = DateFormatUtils.nowISO8601()) + DeletedItem(id = itemId, type = itemType, deletedAt = DateFormatUtils.nowISO8601()) currentDeletions.add(newDeletion) val json = json.encodeToString(newDeletion) @@ -292,23 +305,23 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) } private fun validateDataIntegrity( - gyms: List, - problems: List, - sessions: List, - attempts: List + gyms: List, + problems: List, + sessions: List, + attempts: List ) { val gymIds = gyms.map { it.id }.toSet() val invalidProblems = problems.filter { it.gymId !in gymIds } if (invalidProblems.isNotEmpty()) { throw Exception( - "Data integrity error: ${invalidProblems.size} problems reference non-existent gyms" + "Data integrity error: ${invalidProblems.size} problems reference non-existent gyms" ) } val invalidSessions = sessions.filter { it.gymId !in gymIds } if (invalidSessions.isNotEmpty()) { throw Exception( - "Data integrity error: ${invalidSessions.size} sessions reference non-existent gyms" + "Data integrity error: ${invalidSessions.size} sessions reference non-existent gyms" ) } @@ -316,10 +329,10 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) val sessionIds = sessions.map { it.id }.toSet() val invalidAttempts = - attempts.filter { it.problemId !in problemIds || it.sessionId !in sessionIds } + attempts.filter { it.problemId !in problemIds || it.sessionId !in sessionIds } if (invalidAttempts.isNotEmpty()) { throw Exception( - "Data integrity error: ${invalidAttempts.size} attempts reference non-existent problems or sessions" + "Data integrity error: ${invalidAttempts.size} attempts reference non-existent problems or sessions" ) } } @@ -334,9 +347,9 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) } if (importData.gyms.size > 1000 || - importData.problems.size > 10000 || - importData.sessions.size > 10000 || - importData.attempts.size > 100000 + importData.problems.size > 10000 || + importData.sessions.size > 10000 || + importData.attempts.size > 100000 ) { throw Exception("Import data is too large: possible corruption or malicious file") } @@ -386,10 +399,10 @@ class ClimbRepository(database: AscentlyDatabase, private val context: Context) if (imagesDir.exists() && imagesDir.isDirectory) { val deletedCount = imagesDir.listFiles()?.size ?: 0 imagesDir.deleteRecursively() - android.util.Log.i("ClimbRepository", "Cleared $deletedCount image files") + AppLogger.i("ClimbRepository") { "Cleared $deletedCount image files" } } } catch (e: Exception) { - android.util.Log.w("ClimbRepository", "Failed to clear some images: ${e.message}") + AppLogger.w("ClimbRepository", e) { "Failed to clear some images: ${e.message}" } } } } diff --git a/android/app/src/main/java/com/atridad/ascently/data/state/DataStateManager.kt b/android/app/src/main/java/com/atridad/ascently/data/state/DataStateManager.kt index 32ae8fb..bb573a1 100644 --- a/android/app/src/main/java/com/atridad/ascently/data/state/DataStateManager.kt +++ b/android/app/src/main/java/com/atridad/ascently/data/state/DataStateManager.kt @@ -2,8 +2,8 @@ package com.atridad.ascently.data.state import android.content.Context import android.content.SharedPreferences -import android.util.Log import androidx.core.content.edit +import com.atridad.ascently.utils.AppLogger import com.atridad.ascently.utils.DateFormatUtils /** @@ -20,13 +20,13 @@ class DataStateManager(context: Context) { } private val prefs: SharedPreferences = - context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) + context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) init { if (!isInitialized()) { updateDataState() markAsInitialized() - Log.d(TAG, "DataStateManager initialized with timestamp: ${getLastModified()}") + AppLogger.d(TAG) { "DataStateManager initialized with timestamp: ${getLastModified()}" } } } @@ -37,7 +37,7 @@ class DataStateManager(context: Context) { fun updateDataState() { val now = DateFormatUtils.nowISO8601() prefs.edit { putString(KEY_LAST_MODIFIED, now) } - Log.d(TAG, "Data state updated to: $now") + AppLogger.d(TAG) { "Data state updated to: $now" } } /** @@ -46,7 +46,7 @@ class DataStateManager(context: Context) { */ fun getLastModified(): String { return prefs.getString(KEY_LAST_MODIFIED, DateFormatUtils.nowISO8601()) - ?: DateFormatUtils.nowISO8601() + ?: DateFormatUtils.nowISO8601() } /** Checks if the data state has been initialized. */ diff --git a/android/app/src/main/java/com/atridad/ascently/data/sync/SyncService.kt b/android/app/src/main/java/com/atridad/ascently/data/sync/SyncService.kt index 21121af..c4be4f0 100644 --- a/android/app/src/main/java/com/atridad/ascently/data/sync/SyncService.kt +++ b/android/app/src/main/java/com/atridad/ascently/data/sync/SyncService.kt @@ -4,10 +4,10 @@ import android.content.Context import android.content.SharedPreferences import android.net.ConnectivityManager import android.net.NetworkCapabilities -import android.util.Log import androidx.annotation.RequiresPermission import androidx.core.content.edit import com.atridad.ascently.data.format.BackupAttempt +import com.atridad.ascently.utils.AppLogger import com.atridad.ascently.data.format.BackupClimbSession import com.atridad.ascently.data.format.BackupGym import com.atridad.ascently.data.format.BackupProblem @@ -53,14 +53,14 @@ class SyncService(private val context: Context, private val repository: ClimbRep } private val sharedPreferences: SharedPreferences = - context.getSharedPreferences("sync_preferences", Context.MODE_PRIVATE) + context.getSharedPreferences("sync_preferences", Context.MODE_PRIVATE) private val httpClient = - OkHttpClient.Builder() - .connectTimeout(45, TimeUnit.SECONDS) - .readTimeout(90, TimeUnit.SECONDS) - .writeTimeout(90, TimeUnit.SECONDS) - .build() + OkHttpClient.Builder() + .connectTimeout(45, TimeUnit.SECONDS) + .readTimeout(90, TimeUnit.SECONDS) + .writeTimeout(90, TimeUnit.SECONDS) + .build() private val json = Json { prettyPrint = true @@ -151,7 +151,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) private fun isNetworkAvailable(): Boolean { val connectivityManager = - context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val network = connectivityManager.activeNetwork ?: return false val activeNetwork = connectivityManager.getNetworkCapabilities(network) ?: return false return when { @@ -164,12 +164,12 @@ class SyncService(private val context: Context, private val repository: ClimbRep @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) suspend fun syncWithServer() { if (isOfflineMode) { - Log.d(TAG, "Sync skipped: Offline mode is enabled.") + AppLogger.d(TAG) { "Sync skipped: Offline mode is enabled." } return } if (!isNetworkAvailable()) { _syncError.value = "No internet connection." - Log.d(TAG, "Sync skipped: No internet connection.") + AppLogger.d(TAG) { "Sync skipped: No internet connection." } return } if (!_isConfigured.value) { @@ -188,43 +188,46 @@ class SyncService(private val context: Context, private val repository: ClimbRep val serverBackup = downloadData() val hasLocalData = - localBackup.gyms.isNotEmpty() || - localBackup.problems.isNotEmpty() || - localBackup.sessions.isNotEmpty() || - localBackup.attempts.isNotEmpty() + localBackup.gyms.isNotEmpty() || + localBackup.problems.isNotEmpty() || + localBackup.sessions.isNotEmpty() || + localBackup.attempts.isNotEmpty() val hasServerData = - serverBackup.gyms.isNotEmpty() || - serverBackup.problems.isNotEmpty() || - serverBackup.sessions.isNotEmpty() || - serverBackup.attempts.isNotEmpty() + serverBackup.gyms.isNotEmpty() || + serverBackup.problems.isNotEmpty() || + serverBackup.sessions.isNotEmpty() || + serverBackup.attempts.isNotEmpty() // If both client and server have been synced before, use delta sync val lastSyncTimeStr = sharedPreferences.getString(Keys.LAST_SYNC_TIME, null) if (hasLocalData && hasServerData && lastSyncTimeStr != null) { - Log.d(TAG, "Using delta sync for incremental updates") + AppLogger.d(TAG) { "Using delta sync for incremental updates" } performDeltaSync(lastSyncTimeStr) } else { when { !hasLocalData && hasServerData -> { - Log.d(TAG, "No local data found, performing full restore from server") + AppLogger.d(TAG) { "No local data found, performing full restore from server" } val imagePathMapping = syncImagesFromServer(serverBackup) importBackupToRepository(serverBackup, imagePathMapping) - Log.d(TAG, "Full restore completed") + AppLogger.d(TAG) { "Full restore completed" } } + hasLocalData && !hasServerData -> { - Log.d(TAG, "No server data found, uploading local data to server") + AppLogger.d(TAG) { "No server data found, uploading local data to server" } uploadData(localBackup) syncImagesForBackup(localBackup) - Log.d(TAG, "Initial upload completed") + AppLogger.d(TAG) { "Initial upload completed" } } + hasLocalData && hasServerData -> { - Log.d(TAG, "Both local and server data exist, merging (server wins)") + AppLogger.d(TAG) { "Both local and server data exist, merging (server wins)" } mergeDataSafely(serverBackup) - Log.d(TAG, "Merge completed") + AppLogger.d(TAG) { "Merge completed" } } + else -> { - Log.d(TAG, "No data to sync") + AppLogger.d(TAG) { "No data to sync" } } } } @@ -242,7 +245,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep } private suspend fun performDeltaSync(lastSyncTimeStr: String) { - Log.d(TAG, "Starting delta sync with lastSyncTime=$lastSyncTimeStr") + AppLogger.d(TAG) { "Starting delta sync with lastSyncTime=$lastSyncTimeStr" } // Parse last sync time to filter modified items val lastSyncDate = parseISO8601(lastSyncTimeStr) ?: Date(0) @@ -250,102 +253,100 @@ class SyncService(private val context: Context, private val repository: ClimbRep // Collect items modified since last sync val allGyms = repository.getAllGyms().first() val modifiedGyms = - allGyms - .filter { gym -> parseISO8601(gym.updatedAt)?.after(lastSyncDate) == true } - .map { BackupGym.fromGym(it) } + allGyms + .filter { gym -> parseISO8601(gym.updatedAt)?.after(lastSyncDate) == true } + .map { BackupGym.fromGym(it) } val allProblems = repository.getAllProblems().first() val modifiedProblems = - allProblems - .filter { problem -> - parseISO8601(problem.updatedAt)?.after(lastSyncDate) == true - } - .map { problem -> - val backupProblem = BackupProblem.fromProblem(problem) - val normalizedImagePaths = - problem.imagePaths.mapIndexed { index, _ -> - ImageNamingUtils.generateImageFilename(problem.id, index) - } - if (normalizedImagePaths.isNotEmpty()) { - backupProblem.copy(imagePaths = normalizedImagePaths) - } else { - backupProblem - } - } - - val allSessions = repository.getAllSessions().first() - val modifiedSessions = - allSessions - .filter { session -> - parseISO8601(session.updatedAt)?.after(lastSyncDate) == true - } - .map { BackupClimbSession.fromClimbSession(it) } - - val allAttempts = repository.getAllAttempts().first() - val modifiedAttempts = - allAttempts - .filter { attempt -> - parseISO8601(attempt.createdAt)?.after(lastSyncDate) == true - } - .map { BackupAttempt.fromAttempt(it) } - - val allDeletions = repository.getDeletedItems() - val modifiedDeletions = - allDeletions.filter { item -> - parseISO8601(item.deletedAt)?.after(lastSyncDate) == true + allProblems + .filter { problem -> + parseISO8601(problem.updatedAt)?.after(lastSyncDate) == true } - - Log.d( - TAG, - "Delta sync sending: gyms=${modifiedGyms.size}, problems=${modifiedProblems.size}, sessions=${modifiedSessions.size}, attempts=${modifiedAttempts.size}, deletions=${modifiedDeletions.size}" - ) - - // Create delta request - val deltaRequest = - DeltaSyncRequest( - lastSyncTime = lastSyncTimeStr, - gyms = modifiedGyms, - problems = modifiedProblems, - sessions = modifiedSessions, - attempts = modifiedAttempts, - deletedItems = modifiedDeletions - ) - - val requestBody = - json.encodeToString(DeltaSyncRequest.serializer(), deltaRequest) - .toRequestBody("application/json".toMediaType()) - - val request = - Request.Builder() - .url("$serverUrl/sync/delta") - .header("Authorization", "Bearer $authToken") - .post(requestBody) - .build() - - val deltaResponse = - withContext(Dispatchers.IO) { - try { - httpClient.newCall(request).execute().use { response -> - if (response.isSuccessful) { - val body = response.body?.string() - if (!body.isNullOrEmpty()) { - json.decodeFromString(DeltaSyncResponse.serializer(), body) - } else { - throw SyncException.InvalidResponse("Empty response body") - } - } else { - handleHttpError(response.code) - } + .map { problem -> + val backupProblem = BackupProblem.fromProblem(problem) + val normalizedImagePaths = + problem.imagePaths.mapIndexed { index, _ -> + ImageNamingUtils.generateImageFilename(problem.id, index) } - } catch (e: IOException) { - throw SyncException.NetworkError(e.message ?: "Network error") + if (normalizedImagePaths.isNotEmpty()) { + backupProblem.copy(imagePaths = normalizedImagePaths) + } else { + backupProblem } } - Log.d( - TAG, - "Delta sync received: gyms=${deltaResponse.gyms.size}, problems=${deltaResponse.problems.size}, sessions=${deltaResponse.sessions.size}, attempts=${deltaResponse.attempts.size}, deletions=${deltaResponse.deletedItems.size}" - ) + val allSessions = repository.getAllSessions().first() + val modifiedSessions = + allSessions + .filter { session -> + parseISO8601(session.updatedAt)?.after(lastSyncDate) == true + } + .map { BackupClimbSession.fromClimbSession(it) } + + val allAttempts = repository.getAllAttempts().first() + val modifiedAttempts = + allAttempts + .filter { attempt -> + parseISO8601(attempt.createdAt)?.after(lastSyncDate) == true + } + .map { BackupAttempt.fromAttempt(it) } + + val allDeletions = repository.getDeletedItems() + val modifiedDeletions = + allDeletions.filter { item -> + parseISO8601(item.deletedAt)?.after(lastSyncDate) == true + } + + AppLogger.d(TAG) { + "Delta sync sending: gyms=${modifiedGyms.size}, problems=${modifiedProblems.size}, sessions=${modifiedSessions.size}, attempts=${modifiedAttempts.size}, deletions=${modifiedDeletions.size}" + } + + // Create delta request + val deltaRequest = + DeltaSyncRequest( + lastSyncTime = lastSyncTimeStr, + gyms = modifiedGyms, + problems = modifiedProblems, + sessions = modifiedSessions, + attempts = modifiedAttempts, + deletedItems = modifiedDeletions + ) + + val requestBody = + json.encodeToString(DeltaSyncRequest.serializer(), deltaRequest) + .toRequestBody("application/json".toMediaType()) + + val request = + Request.Builder() + .url("$serverUrl/sync/delta") + .header("Authorization", "Bearer $authToken") + .post(requestBody) + .build() + + val deltaResponse = + withContext(Dispatchers.IO) { + try { + httpClient.newCall(request).execute().use { response -> + if (response.isSuccessful) { + val body = response.body?.string() + if (!body.isNullOrEmpty()) { + json.decodeFromString(DeltaSyncResponse.serializer(), body) + } else { + throw SyncException.InvalidResponse("Empty response body") + } + } else { + handleHttpError(response.code) + } + } + } catch (e: IOException) { + throw SyncException.NetworkError(e.message ?: "Network error") + } + } + + AppLogger.d(TAG) { + "Delta sync received: gyms=${deltaResponse.gyms.size}, problems=${deltaResponse.problems.size}, sessions=${deltaResponse.sessions.size}, attempts=${deltaResponse.attempts.size}, deletions=${deltaResponse.deletedItems.size}" + } // Apply server changes to local data applyDeltaResponse(deltaResponse) @@ -372,7 +373,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep val allDeletions = repository.getDeletedItems() + response.deletedItems val uniqueDeletions = allDeletions.distinctBy { "${it.type}:${it.id}" } - Log.d(TAG, "Applying ${uniqueDeletions.size} deletion records before merging data") + AppLogger.d(TAG) { "Applying ${uniqueDeletions.size} deletion records before merging data" } applyDeletions(uniqueDeletions) // Build deleted item lookup set @@ -392,7 +393,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep imagePathMapping[imagePath] = localImagePath } } catch (e: Exception) { - Log.w(TAG, "Failed to download image $imagePath: ${e.message}") + AppLogger.w(TAG) { "Failed to download image $imagePath: ${e.message}" } } } } @@ -421,9 +422,9 @@ class SyncService(private val context: Context, private val repository: ClimbRep continue } val updatedImagePaths = - backupProblem.imagePaths?.map { oldPath -> - imagePathMapping[oldPath] ?: oldPath - } + backupProblem.imagePaths?.map { oldPath -> + imagePathMapping[oldPath] ?: oldPath + } val problemToMerge = backupProblem.copy(imagePaths = updatedImagePaths) val problem = problemToMerge.toProblem() @@ -484,7 +485,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep } private suspend fun applyDeletions( - deletions: List + deletions: List ) { val existingGyms = repository.getAllGyms().first() val existingProblems = repository.getAllProblems().first() @@ -496,12 +497,15 @@ class SyncService(private val context: Context, private val repository: ClimbRep "gym" -> { existingGyms.find { it.id == item.id }?.let { repository.deleteGym(it) } } + "problem" -> { existingProblems.find { it.id == item.id }?.let { repository.deleteProblem(it) } } + "session" -> { existingSessions.find { it.id == item.id }?.let { repository.deleteSession(it) } } + "attempt" -> { existingAttempts.find { it.id == item.id }?.let { repository.deleteAttempt(it) } } @@ -512,7 +516,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep private suspend fun syncModifiedImages(modifiedProblems: List) { if (modifiedProblems.isEmpty()) return - Log.d(TAG, "Syncing images for ${modifiedProblems.size} modified problems") + AppLogger.d(TAG) { "Syncing images for ${modifiedProblems.size} modified problems" } for (backupProblem in modifiedProblems) { backupProblem.imagePaths?.forEach { imagePath -> @@ -524,11 +528,11 @@ class SyncService(private val context: Context, private val repository: ClimbRep private suspend fun downloadData(): ClimbDataBackup { val request = - Request.Builder() - .url("$serverUrl/sync") - .header("Authorization", "Bearer $authToken") - .get() - .build() + Request.Builder() + .url("$serverUrl/sync") + .header("Authorization", "Bearer $authToken") + .get() + .build() return withContext(Dispatchers.IO) { try { @@ -539,11 +543,11 @@ class SyncService(private val context: Context, private val repository: ClimbRep json.decodeFromString(body) } else { ClimbDataBackup( - exportedAt = DateFormatUtils.nowISO8601(), - gyms = emptyList(), - problems = emptyList(), - sessions = emptyList(), - attempts = emptyList() + exportedAt = DateFormatUtils.nowISO8601(), + gyms = emptyList(), + problems = emptyList(), + sessions = emptyList(), + attempts = emptyList() ) } } else { @@ -558,14 +562,14 @@ class SyncService(private val context: Context, private val repository: ClimbRep private suspend fun uploadData(backup: ClimbDataBackup) { val requestBody = - json.encodeToString(backup).toRequestBody("application/json".toMediaType()) + json.encodeToString(backup).toRequestBody("application/json".toMediaType()) val request = - Request.Builder() - .url("$serverUrl/sync") - .header("Authorization", "Bearer $authToken") - .put(requestBody) - .build() + Request.Builder() + .url("$serverUrl/sync") + .header("Authorization", "Bearer $authToken") + .put(requestBody) + .build() withContext(Dispatchers.IO) { try { @@ -583,7 +587,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep private suspend fun syncImagesFromServer(backup: ClimbDataBackup): Map { val imagePathMapping = mutableMapOf() val totalImages = backup.problems.sumOf { it.imagePaths?.size ?: 0 } - Log.d(TAG, "Starting image download from server for $totalImages images") + AppLogger.d(TAG) { "Starting image download from server for $totalImages images" } withContext(Dispatchers.IO) { backup.problems.forEach { problem -> @@ -595,9 +599,9 @@ class SyncService(private val context: Context, private val repository: ClimbRep imagePathMapping[imagePath] = localImagePath } } catch (_: SyncException.ImageNotFound) { - Log.w(TAG, "Image not found on server: $imagePath") + AppLogger.w(TAG) { "Image not found on server: $imagePath" } } catch (e: Exception) { - Log.w(TAG, "Failed to download image $imagePath: ${e.message}") + AppLogger.w(TAG) { "Failed to download image $imagePath: ${e.message}" } } } } @@ -607,10 +611,10 @@ class SyncService(private val context: Context, private val repository: ClimbRep private suspend fun downloadImage(serverFilename: String): String? { val request = - Request.Builder() - .url("$serverUrl/images/download?filename=$serverFilename") - .header("Authorization", "Bearer $authToken") - .build() + Request.Builder() + .url("$serverUrl/images/download?filename=$serverFilename") + .header("Authorization", "Bearer $authToken") + .build() return withContext(Dispatchers.IO) { try { @@ -625,14 +629,14 @@ class SyncService(private val context: Context, private val repository: ClimbRep } } } catch (e: IOException) { - Log.e(TAG, "Network error downloading image $serverFilename", e) + AppLogger.e(TAG, e) { "Network error downloading image $serverFilename" } null } } } private suspend fun syncImagesForBackup(backup: ClimbDataBackup) { - Log.d(TAG, "Starting image sync for backup with ${backup.problems.size} problems") + AppLogger.d(TAG) { "Starting image sync for backup with ${backup.problems.size} problems" } withContext(Dispatchers.IO) { backup.problems.forEach { problem -> problem.imagePaths?.forEach { localPath -> @@ -646,33 +650,32 @@ class SyncService(private val context: Context, private val repository: ClimbRep private suspend fun uploadImage(localPath: String, filename: String) { val file = ImageUtils.getImageFile(context, localPath) if (!file.exists()) { - Log.w(TAG, "Local image file not found, cannot upload: $localPath") + AppLogger.w(TAG) { "Local image file not found, cannot upload: $localPath" } return } val requestBody = file.readBytes().toRequestBody("application/octet-stream".toMediaType()) val request = - Request.Builder() - .url("$serverUrl/images/upload?filename=$filename") - .header("Authorization", "Bearer $authToken") - .post(requestBody) - .build() + Request.Builder() + .url("$serverUrl/images/upload?filename=$filename") + .header("Authorization", "Bearer $authToken") + .post(requestBody) + .build() withContext(Dispatchers.IO) { try { httpClient.newCall(request).execute().use { response -> if (response.isSuccessful) { - Log.d(TAG, "Successfully uploaded image: $filename") + AppLogger.d(TAG) { "Successfully uploaded image: $filename" } } else { - Log.w( - TAG, - "Failed to upload image $filename. Server responded with ${response.code}" - ) + AppLogger.w(TAG) { + "Failed to upload image $filename. Server responded with ${response.code}" + } } } } catch (e: IOException) { - Log.e(TAG, "Network error uploading image $filename", e) + AppLogger.e(TAG, e) { "Network error uploading image $filename" } } } } @@ -680,49 +683,49 @@ class SyncService(private val context: Context, private val repository: ClimbRep private suspend fun createBackupFromRepository(): ClimbDataBackup { return withContext(Dispatchers.Default) { ClimbDataBackup( - exportedAt = dataStateManager.getLastModified(), - gyms = repository.getAllGyms().first().map { BackupGym.fromGym(it) }, - problems = - repository.getAllProblems().first().map { problem -> - val backupProblem = BackupProblem.fromProblem(problem) - val normalizedImagePaths = - problem.imagePaths.mapIndexed { index, _ -> - ImageNamingUtils.generateImageFilename( - problem.id, - index - ) - } - if (normalizedImagePaths.isNotEmpty()) { - backupProblem.copy(imagePaths = normalizedImagePaths) - } else { - backupProblem - } - }, - sessions = - repository.getAllSessions().first().map { - BackupClimbSession.fromClimbSession(it) - }, - attempts = - repository.getAllAttempts().first().map { - BackupAttempt.fromAttempt(it) - }, - deletedItems = repository.getDeletedItems() + exportedAt = dataStateManager.getLastModified(), + gyms = repository.getAllGyms().first().map { BackupGym.fromGym(it) }, + problems = + repository.getAllProblems().first().map { problem -> + val backupProblem = BackupProblem.fromProblem(problem) + val normalizedImagePaths = + problem.imagePaths.mapIndexed { index, _ -> + ImageNamingUtils.generateImageFilename( + problem.id, + index + ) + } + if (normalizedImagePaths.isNotEmpty()) { + backupProblem.copy(imagePaths = normalizedImagePaths) + } else { + backupProblem + } + }, + sessions = + repository.getAllSessions().first().map { + BackupClimbSession.fromClimbSession(it) + }, + attempts = + repository.getAllAttempts().first().map { + BackupAttempt.fromAttempt(it) + }, + deletedItems = repository.getDeletedItems() ) } } private suspend fun importBackupToRepository( - backup: ClimbDataBackup, - imagePathMapping: Map + backup: ClimbDataBackup, + imagePathMapping: Map ) { val gyms = backup.gyms.map { it.toGym() } val problems = - backup.problems.map { backupProblem -> - val imagePaths = backupProblem.imagePaths - val updatedImagePaths = - imagePaths?.map { oldPath -> imagePathMapping[oldPath] ?: oldPath } - backupProblem.copy(imagePaths = updatedImagePaths).toProblem() - } + backup.problems.map { backupProblem -> + val imagePaths = backupProblem.imagePaths + val updatedImagePaths = + imagePaths?.map { oldPath -> imagePathMapping[oldPath] ?: oldPath } + backupProblem.copy(imagePaths = updatedImagePaths).toProblem() + } val sessions = backup.sessions.map { it.toClimbSession() } val attempts = backup.attempts.map { it.toAttempt() } @@ -737,7 +740,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep } private suspend fun mergeDataSafely(serverBackup: ClimbDataBackup) { - Log.d(TAG, "Server data will overwrite local data. Performing full restore.") + AppLogger.d(TAG) { "Server data will overwrite local data. Performing full restore." } val imagePathMapping = syncImagesFromServer(serverBackup) importBackupToRepository(serverBackup, imagePathMapping) } @@ -760,11 +763,11 @@ class SyncService(private val context: Context, private val repository: ClimbRep _syncError.value = null val request = - Request.Builder() - .url("$serverUrl/sync") - .header("Authorization", "Bearer $authToken") - .head() - .build() + Request.Builder() + .url("$serverUrl/sync") + .header("Authorization", "Bearer $authToken") + .head() + .build() try { withContext(Dispatchers.IO) { httpClient.newCall(request).execute().use { response -> @@ -793,18 +796,18 @@ class SyncService(private val context: Context, private val repository: ClimbRep } syncJob?.cancel() syncJob = - serviceScope.launch { - delay(syncDebounceDelay) - try { - syncWithServer() - } catch (e: Exception) { - Log.e(TAG, "Auto-sync failed", e) - } - if (pendingChanges) { - pendingChanges = false - triggerAutoSync() - } + serviceScope.launch { + delay(syncDebounceDelay) + try { + syncWithServer() + } catch (e: Exception) { + AppLogger.e(TAG, e) { "Auto-sync failed" } } + if (pendingChanges) { + pendingChanges = false + triggerAutoSync() + } + } } fun clearConfiguration() { @@ -822,7 +825,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep sealed class SyncException(message: String) : IOException(message), Serializable { object NotConfigured : - SyncException("Sync is not configured. Please set server URL and auth token.") + SyncException("Sync is not configured. Please set server URL and auth token.") object NotConnected : SyncException("Not connected to server. Please test connection first.") @@ -832,6 +835,7 @@ sealed class SyncException(message: String) : IOException(message), Serializable data class ServerError(val code: Int) : SyncException("Server error: HTTP $code") data class InvalidResponse(val details: String) : - SyncException("Invalid server response: $details") + SyncException("Invalid server response: $details") + data class NetworkError(val details: String) : SyncException("Network error: $details") } diff --git a/android/app/src/main/java/com/atridad/ascently/service/SessionTrackingService.kt b/android/app/src/main/java/com/atridad/ascently/service/SessionTrackingService.kt index 6af2e5e..77e27e3 100644 --- a/android/app/src/main/java/com/atridad/ascently/service/SessionTrackingService.kt +++ b/android/app/src/main/java/com/atridad/ascently/service/SessionTrackingService.kt @@ -12,6 +12,7 @@ import com.atridad.ascently.MainActivity import com.atridad.ascently.R import com.atridad.ascently.data.database.AscentlyDatabase import com.atridad.ascently.data.repository.ClimbRepository +import com.atridad.ascently.utils.AppLogger import com.atridad.ascently.widget.ClimbStatsWidgetProvider import java.time.LocalDateTime import java.time.temporal.ChronoUnit @@ -29,6 +30,7 @@ class SessionTrackingService : Service() { private lateinit var notificationManager: NotificationManager companion object { + private const val LOG_TAG = "SessionTrackingService" const val NOTIFICATION_ID = 1001 const val CHANNEL_ID = "session_tracking_channel" const val ACTION_START_SESSION = "start_session" @@ -68,23 +70,24 @@ class SessionTrackingService : Service() { startSessionTracking(sessionId) } } + ACTION_STOP_SESSION -> { val sessionId = intent.getStringExtra(EXTRA_SESSION_ID) serviceScope.launch { try { val targetSession = - when { - sessionId != null -> repository.getSessionById(sessionId) - else -> repository.getActiveSession() - } + when { + sessionId != null -> repository.getSessionById(sessionId) + else -> repository.getActiveSession() + } if (targetSession != null && - targetSession.status == - com.atridad.ascently.data.model.SessionStatus.ACTIVE + targetSession.status == + com.atridad.ascently.data.model.SessionStatus.ACTIVE ) { val completed = - with(com.atridad.ascently.data.model.ClimbSession) { - targetSession.complete() - } + with(com.atridad.ascently.data.model.ClimbSession) { + targetSession.complete() + } repository.updateSession(completed) } } finally { @@ -108,50 +111,50 @@ class SessionTrackingService : Service() { // Update widget when session tracking starts ClimbStatsWidgetProvider.updateAllWidgets(this) } catch (e: Exception) { - e.printStackTrace() + AppLogger.e(LOG_TAG, e) { "Failed to initialize session tracking notification" } } notificationJob = - serviceScope.launch { - try { - if (!isNotificationActive()) { - delay(1000L) - createAndShowNotification(sessionId) - } - - while (isActive) { - delay(5000L) - updateNotification(sessionId) - } - } catch (e: Exception) { - e.printStackTrace() + serviceScope.launch { + try { + if (!isNotificationActive()) { + delay(1000L) + createAndShowNotification(sessionId) } + + while (isActive) { + delay(5000L) + updateNotification(sessionId) + } + } catch (e: Exception) { + AppLogger.e(LOG_TAG, e) { "Notification updater loop crashed" } } + } monitoringJob = - serviceScope.launch { - try { - while (isActive) { - delay(10000L) + serviceScope.launch { + try { + while (isActive) { + delay(10000L) - if (!isNotificationActive()) { - updateNotification(sessionId) - } - - val session = repository.getSessionById(sessionId) - if (session == null || - session.status != - com.atridad.ascently.data.model.SessionStatus - .ACTIVE - ) { - stopSessionTracking() - break - } + if (!isNotificationActive()) { + updateNotification(sessionId) + } + + val session = repository.getSessionById(sessionId) + if (session == null || + session.status != + com.atridad.ascently.data.model.SessionStatus + .ACTIVE + ) { + stopSessionTracking() + break } - } catch (e: Exception) { - e.printStackTrace() } + } catch (e: Exception) { + AppLogger.e(LOG_TAG, e) { "Session monitoring loop crashed" } } + } } private fun stopSessionTracking() { @@ -178,13 +181,13 @@ class SessionTrackingService : Service() { // Update widget when notification updates ClimbStatsWidgetProvider.updateAllWidgets(this) } catch (e: Exception) { - e.printStackTrace() + AppLogger.e(LOG_TAG, e) { "Failed to update notification; retrying in 10s" } try { delay(10000L) createAndShowNotification(sessionId) } catch (retryException: Exception) { - retryException.printStackTrace() + AppLogger.e(LOG_TAG, retryException) { "Retrying notification update failed" } stopSessionTracking() } } @@ -194,7 +197,7 @@ class SessionTrackingService : Service() { try { val session = runBlocking { repository.getSessionById(sessionId) } if (session == null || - session.status != com.atridad.ascently.data.model.SessionStatus.ACTIVE + session.status != com.atridad.ascently.data.model.SessionStatus.ACTIVE ) { stopSessionTracking() return @@ -207,99 +210,99 @@ class SessionTrackingService : Service() { } val duration = - session.startTime?.let { startTime -> - try { - val start = LocalDateTime.parse(startTime) - val now = LocalDateTime.now() - val totalSeconds = ChronoUnit.SECONDS.between(start, now) - val hours = totalSeconds / 3600 - val minutes = (totalSeconds % 3600) / 60 - val seconds = totalSeconds % 60 + session.startTime?.let { startTime -> + try { + val start = LocalDateTime.parse(startTime) + val now = LocalDateTime.now() + val totalSeconds = ChronoUnit.SECONDS.between(start, now) + val hours = totalSeconds / 3600 + val minutes = (totalSeconds % 3600) / 60 + val seconds = totalSeconds % 60 - when { - hours > 0 -> "${hours}h ${minutes}m ${seconds}s" - minutes > 0 -> "${minutes}m ${seconds}s" - else -> "${totalSeconds}s" - } - } catch (_: Exception) { - "Active" + when { + hours > 0 -> "${hours}h ${minutes}m ${seconds}s" + minutes > 0 -> "${minutes}m ${seconds}s" + else -> "${totalSeconds}s" } + } catch (_: Exception) { + "Active" } - ?: "Active" + } + ?: "Active" val notification = - NotificationCompat.Builder(this, CHANNEL_ID) - .setContentTitle("Climbing Session Active") - .setContentText( - "${gym?.name ?: "Gym"} • $duration • ${attempts.size} attempts" - ) - .setSmallIcon(R.drawable.ic_mountains) - .setOngoing(true) - .setAutoCancel(false) - .setPriority(NotificationCompat.PRIORITY_DEFAULT) - .setCategory(NotificationCompat.CATEGORY_SERVICE) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setContentIntent(createOpenAppIntent()) - .addAction( - R.drawable.ic_mountains, - "Open Session", - createOpenAppIntent() - ) - .addAction( - android.R.drawable.ic_menu_close_clear_cancel, - "End Session", - createStopPendingIntent(sessionId) - ) - .build() + NotificationCompat.Builder(this, CHANNEL_ID) + .setContentTitle("Climbing Session Active") + .setContentText( + "${gym?.name ?: "Gym"} • $duration • ${attempts.size} attempts" + ) + .setSmallIcon(R.drawable.ic_mountains) + .setOngoing(true) + .setAutoCancel(false) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setCategory(NotificationCompat.CATEGORY_SERVICE) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setContentIntent(createOpenAppIntent()) + .addAction( + R.drawable.ic_mountains, + "Open Session", + createOpenAppIntent() + ) + .addAction( + android.R.drawable.ic_menu_close_clear_cancel, + "End Session", + createStopPendingIntent(sessionId) + ) + .build() startForeground(NOTIFICATION_ID, notification) notificationManager.notify(NOTIFICATION_ID, notification) } catch (e: Exception) { - e.printStackTrace() + AppLogger.e(LOG_TAG, e) { "Failed to build session tracking notification" } throw e } } private fun createOpenAppIntent(): PendingIntent { val intent = - Intent(this, MainActivity::class.java).apply { - flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP - action = "OPEN_SESSION" - } + Intent(this, MainActivity::class.java).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP + action = "OPEN_SESSION" + } return PendingIntent.getActivity( - this, - 0, - intent, - PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + this, + 0, + intent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) } private fun createStopPendingIntent(sessionId: String): PendingIntent { val intent = createStopIntent(this, sessionId) return PendingIntent.getService( - this, - 1, - intent, - PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + this, + 1, + intent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) } private fun createNotificationChannel() { val channel = - NotificationChannel( - CHANNEL_ID, - "Session Tracking", - NotificationManager.IMPORTANCE_DEFAULT - ) - .apply { - description = "Shows active climbing session information" - setShowBadge(false) - lockscreenVisibility = NotificationCompat.VISIBILITY_PUBLIC - enableLights(false) - enableVibration(false) - setSound(null, null) - } + NotificationChannel( + CHANNEL_ID, + "Session Tracking", + NotificationManager.IMPORTANCE_DEFAULT + ) + .apply { + description = "Shows active climbing session information" + setShowBadge(false) + lockscreenVisibility = NotificationCompat.VISIBILITY_PUBLIC + enableLights(false) + enableVibration(false) + setSound(null, null) + } notificationManager.createNotificationChannel(channel) } diff --git a/android/app/src/main/java/com/atridad/ascently/ui/AscentlyApp.kt b/android/app/src/main/java/com/atridad/ascently/ui/AscentlyApp.kt index a26a88e..4b05778 100644 --- a/android/app/src/main/java/com/atridad/ascently/ui/AscentlyApp.kt +++ b/android/app/src/main/java/com/atridad/ascently/ui/AscentlyApp.kt @@ -26,15 +26,16 @@ import com.atridad.ascently.ui.components.NotificationPermissionDialog import com.atridad.ascently.ui.screens.* import com.atridad.ascently.ui.viewmodel.ClimbViewModel import com.atridad.ascently.ui.viewmodel.ClimbViewModelFactory +import com.atridad.ascently.utils.AppLogger import com.atridad.ascently.utils.AppShortcutManager import com.atridad.ascently.utils.NotificationPermissionUtils @OptIn(ExperimentalMaterial3Api::class) @Composable fun AscentlyApp( - shortcutAction: String? = null, - lastUsedGymId: String? = null, - onShortcutActionProcessed: () -> Unit = {} + shortcutAction: String? = null, + lastUsedGymId: String? = null, + onShortcutActionProcessed: () -> Unit = {} ) { val navController = rememberNavController() val context = LocalContext.current @@ -45,26 +46,26 @@ fun AscentlyApp( val repository = remember { ClimbRepository(database, context) } val syncService = remember { SyncService(context, repository) } val viewModel: ClimbViewModel = - viewModel(factory = ClimbViewModelFactory(repository, syncService, context)) + viewModel(factory = ClimbViewModelFactory(repository, syncService, context)) var showNotificationPermissionDialog by remember { mutableStateOf(false) } var hasCheckedNotificationPermission by remember { mutableStateOf(false) } val permissionLauncher = - rememberLauncherForActivityResult( - contract = ActivityResultContracts.RequestPermission() - ) { isGranted: Boolean -> - if (!isGranted) { - showNotificationPermissionDialog = false - } + rememberLauncherForActivityResult( + contract = ActivityResultContracts.RequestPermission() + ) { isGranted: Boolean -> + if (!isGranted) { + showNotificationPermissionDialog = false } + } LaunchedEffect(Unit) { if (!hasCheckedNotificationPermission) { hasCheckedNotificationPermission = true if (NotificationPermissionUtils.shouldRequestNotificationPermission() && - !NotificationPermissionUtils.isNotificationPermissionGranted(context) + !NotificationPermissionUtils.isNotificationPermissionGranted(context) ) { showNotificationPermissionDialog = true } @@ -86,10 +87,10 @@ fun AscentlyApp( LaunchedEffect(activeSession, gyms, lastUsedGym) { AppShortcutManager.updateShortcuts( - context = context, - hasActiveSession = activeSession != null, - hasGyms = gyms.isNotEmpty(), - lastUsedGym = if (activeSession == null && gyms.size > 1) lastUsedGym else null + context = context, + hasActiveSession = activeSession != null, + hasGyms = gyms.isNotEmpty(), + lastUsedGym = if (activeSession == null && gyms.size > 1) lastUsedGym else null ) } @@ -101,6 +102,7 @@ fun AscentlyApp( launchSingleTop = true } } + AppShortcutManager.ACTION_END_SESSION -> { navController.navigate(Screen.Sessions) { popUpTo(0) { inclusive = true } @@ -114,51 +116,36 @@ fun AscentlyApp( LaunchedEffect(shortcutAction, activeSession, gyms, lastUsedGym) { if (shortcutAction == AppShortcutManager.ACTION_START_SESSION && gyms.isNotEmpty()) { - android.util.Log.d( - "AscentlyApp", - "Processing shortcut action: activeSession=$activeSession, gyms.size=${gyms.size}, lastUsedGymId=$lastUsedGymId, lastUsedGym=${lastUsedGym?.name}" - ) + AppLogger.d("AscentlyApp") { "Processing shortcut action: activeSession=$activeSession, gyms.size=${gyms.size}, lastUsedGymId=$lastUsedGymId, lastUsedGym=${lastUsedGym?.name}" } if (activeSession == null) { if (NotificationPermissionUtils.shouldRequestNotificationPermission() && - !NotificationPermissionUtils.isNotificationPermissionGranted( - context - ) + !NotificationPermissionUtils.isNotificationPermissionGranted( + context + ) ) { - android.util.Log.d("AscentlyApp", "Showing notification permission dialog") + AppLogger.d("AscentlyApp") { "Showing notification permission dialog" } showNotificationPermissionDialog = true } else { if (gyms.size == 1) { - android.util.Log.d( - "AscentlyApp", - "Starting session with single gym: ${gyms.first().name}" - ) + AppLogger.d("AscentlyApp") { "Starting session with single gym: ${gyms.first().name}" } viewModel.startSession(context, gyms.first().id) } else { val targetGym = - lastUsedGymId?.let { gymId -> gyms.find { it.id == gymId } } - ?: lastUsedGym + lastUsedGymId?.let { gymId -> gyms.find { it.id == gymId } } + ?: lastUsedGym if (targetGym != null) { - android.util.Log.d( - "AscentlyApp", - "Starting session with target gym: ${targetGym.name}" - ) + AppLogger.d("AscentlyApp") { "Starting session with target gym: ${targetGym.name}" } viewModel.startSession(context, targetGym.id) } else { - android.util.Log.d( - "AscentlyApp", - "No target gym found, navigating to selection" - ) + AppLogger.d("AscentlyApp") { "No target gym found, navigating to selection" } navController.navigate(Screen.AddEditSession()) } } } } else { - android.util.Log.d( - "AscentlyApp", - "Active session already exists: ${activeSession?.id}" - ) + AppLogger.d("AscentlyApp") { "Active session already exists: ${activeSession?.id}" } } onShortcutActionProcessed() @@ -168,79 +155,79 @@ fun AscentlyApp( var fabConfig by remember { mutableStateOf(null) } Scaffold( - bottomBar = { AscentlyBottomNavigation(navController = navController) }, - floatingActionButton = { - fabConfig?.let { config -> - FloatingActionButton( - onClick = config.onClick, - containerColor = MaterialTheme.colorScheme.primary - ) { - Icon( - imageVector = config.icon, - contentDescription = config.contentDescription - ) - } + bottomBar = { AscentlyBottomNavigation(navController = navController) }, + floatingActionButton = { + fabConfig?.let { config -> + FloatingActionButton( + onClick = config.onClick, + containerColor = MaterialTheme.colorScheme.primary + ) { + Icon( + imageVector = config.icon, + contentDescription = config.contentDescription + ) } } + } ) { innerPadding -> NavHost( - navController = navController, - startDestination = Screen.Sessions, - modifier = Modifier.padding(innerPadding) + navController = navController, + startDestination = Screen.Sessions, + modifier = Modifier.padding(innerPadding) ) { composable { LaunchedEffect(gyms, activeSession) { fabConfig = - if (gyms.isNotEmpty() && activeSession == null) { - FabConfig( - icon = Icons.Default.PlayArrow, - contentDescription = "Start Session", - onClick = { - if (NotificationPermissionUtils - .shouldRequestNotificationPermission() && - !NotificationPermissionUtils - .isNotificationPermissionGranted( - context - ) - ) { - showNotificationPermissionDialog = true - } else { - navController.navigate(Screen.AddEditSession()) - } - } - ) - } else { - null - } + if (gyms.isNotEmpty() && activeSession == null) { + FabConfig( + icon = Icons.Default.PlayArrow, + contentDescription = "Start Session", + onClick = { + if (NotificationPermissionUtils + .shouldRequestNotificationPermission() && + !NotificationPermissionUtils + .isNotificationPermissionGranted( + context + ) + ) { + showNotificationPermissionDialog = true + } else { + navController.navigate(Screen.AddEditSession()) + } + } + ) + } else { + null + } } SessionsScreen( - viewModel = viewModel, - onNavigateToSessionDetail = { sessionId -> - navController.navigate(Screen.SessionDetail(sessionId)) - } + viewModel = viewModel, + onNavigateToSessionDetail = { sessionId -> + navController.navigate(Screen.SessionDetail(sessionId)) + } ) } composable { LaunchedEffect(gyms) { fabConfig = - if (gyms.isNotEmpty()) { - FabConfig( - icon = Icons.Default.Add, - contentDescription = "Add Problem", - onClick = { - navController.navigate(Screen.AddEditProblem()) - } - ) - } else { - null - } + if (gyms.isNotEmpty()) { + FabConfig( + icon = Icons.Default.Add, + contentDescription = "Add Problem", + onClick = { + navController.navigate(Screen.AddEditProblem()) + } + ) + } else { + null + } } ProblemsScreen( - viewModel = viewModel, - onNavigateToProblemDetail = { problemId -> - navController.navigate(Screen.ProblemDetail(problemId)) - } + viewModel = viewModel, + onNavigateToProblemDetail = { problemId -> + navController.navigate(Screen.ProblemDetail(problemId)) + } ) } @@ -252,17 +239,17 @@ fun AscentlyApp( composable { LaunchedEffect(Unit) { fabConfig = - FabConfig( - icon = Icons.Default.Add, - contentDescription = "Add Gym", - onClick = { navController.navigate(Screen.AddEditGym()) } - ) + FabConfig( + icon = Icons.Default.Add, + contentDescription = "Add Gym", + onClick = { navController.navigate(Screen.AddEditGym()) } + ) } GymsScreen( - viewModel = viewModel, - onNavigateToGymDetail = { gymId -> - navController.navigate(Screen.GymDetail(gymId)) - } + viewModel = viewModel, + onNavigateToGymDetail = { gymId -> + navController.navigate(Screen.GymDetail(gymId)) + } ) } @@ -275,12 +262,12 @@ fun AscentlyApp( val args = backStackEntry.toRoute() LaunchedEffect(Unit) { fabConfig = null } SessionDetailScreen( - sessionId = args.sessionId, - viewModel = viewModel, - onNavigateBack = { navController.popBackStack() }, - onNavigateToProblemDetail = { problemId -> - navController.navigate(Screen.ProblemDetail(problemId)) - } + sessionId = args.sessionId, + viewModel = viewModel, + onNavigateBack = { navController.popBackStack() }, + onNavigateToProblemDetail = { problemId -> + navController.navigate(Screen.ProblemDetail(problemId)) + } ) } @@ -288,12 +275,12 @@ fun AscentlyApp( val args = backStackEntry.toRoute() LaunchedEffect(Unit) { fabConfig = null } ProblemDetailScreen( - problemId = args.problemId, - viewModel = viewModel, - onNavigateBack = { navController.popBackStack() }, - onNavigateToEdit = { problemId -> - navController.navigate(Screen.AddEditProblem(problemId = problemId)) - } + problemId = args.problemId, + viewModel = viewModel, + onNavigateBack = { navController.popBackStack() }, + onNavigateToEdit = { problemId -> + navController.navigate(Screen.AddEditProblem(problemId = problemId)) + } ) } @@ -301,18 +288,18 @@ fun AscentlyApp( val args = backStackEntry.toRoute() LaunchedEffect(Unit) { fabConfig = null } GymDetailScreen( - gymId = args.gymId, - viewModel = viewModel, - onNavigateBack = { navController.popBackStack() }, - onNavigateToEdit = { gymId -> - navController.navigate(Screen.AddEditGym(gymId = gymId)) - }, - onNavigateToSessionDetail = { sessionId -> - navController.navigate(Screen.SessionDetail(sessionId)) - }, - onNavigateToProblemDetail = { problemId -> - navController.navigate(Screen.ProblemDetail(problemId)) - } + gymId = args.gymId, + viewModel = viewModel, + onNavigateBack = { navController.popBackStack() }, + onNavigateToEdit = { gymId -> + navController.navigate(Screen.AddEditGym(gymId = gymId)) + }, + onNavigateToSessionDetail = { sessionId -> + navController.navigate(Screen.SessionDetail(sessionId)) + }, + onNavigateToProblemDetail = { problemId -> + navController.navigate(Screen.ProblemDetail(problemId)) + } ) } @@ -320,9 +307,9 @@ fun AscentlyApp( val args = backStackEntry.toRoute() LaunchedEffect(Unit) { fabConfig = null } AddEditGymScreen( - gymId = args.gymId, - viewModel = viewModel, - onNavigateBack = { navController.popBackStack() } + gymId = args.gymId, + viewModel = viewModel, + onNavigateBack = { navController.popBackStack() } ) } @@ -330,10 +317,10 @@ fun AscentlyApp( val args = backStackEntry.toRoute() LaunchedEffect(Unit) { fabConfig = null } AddEditProblemScreen( - problemId = args.problemId, - gymId = args.gymId, - viewModel = viewModel, - onNavigateBack = { navController.popBackStack() } + problemId = args.problemId, + gymId = args.gymId, + viewModel = viewModel, + onNavigateBack = { navController.popBackStack() } ) } @@ -341,22 +328,22 @@ fun AscentlyApp( val args = backStackEntry.toRoute() LaunchedEffect(Unit) { fabConfig = null } AddEditSessionScreen( - sessionId = args.sessionId, - gymId = args.gymId, - viewModel = viewModel, - onNavigateBack = { navController.popBackStack() } + sessionId = args.sessionId, + gymId = args.gymId, + viewModel = viewModel, + onNavigateBack = { navController.popBackStack() } ) } } if (showNotificationPermissionDialog) { NotificationPermissionDialog( - onDismiss = { showNotificationPermissionDialog = false }, - onRequestPermission = { - permissionLauncher.launch( - NotificationPermissionUtils.getNotificationPermissionString() - ) - } + onDismiss = { showNotificationPermissionDialog = false }, + onRequestPermission = { + permissionLauncher.launch( + NotificationPermissionUtils.getNotificationPermissionString() + ) + } ) } } @@ -370,34 +357,34 @@ fun AscentlyBottomNavigation(navController: NavHostController) { NavigationBar { bottomNavigationItems.forEach { item -> val isSelected = - when (item.screen) { - is Screen.Sessions -> currentRoute?.contains("Session") == true - is Screen.Problems -> currentRoute?.contains("Problem") == true - is Screen.Gyms -> currentRoute?.contains("Gym") == true - is Screen.Analytics -> currentRoute?.contains("Analytics") == true - is Screen.Settings -> currentRoute?.contains("Settings") == true - else -> currentRoute?.contains(item.screen::class.simpleName ?: "") == true - } + when (item.screen) { + is Screen.Sessions -> currentRoute?.contains("Session") == true + is Screen.Problems -> currentRoute?.contains("Problem") == true + is Screen.Gyms -> currentRoute?.contains("Gym") == true + is Screen.Analytics -> currentRoute?.contains("Analytics") == true + is Screen.Settings -> currentRoute?.contains("Settings") == true + else -> currentRoute?.contains(item.screen::class.simpleName ?: "") == true + } NavigationBarItem( - icon = { Icon(item.icon, contentDescription = item.label) }, - label = { Text(item.label) }, - selected = isSelected, - onClick = { - navController.navigate(item.screen) { - popUpTo(0) { inclusive = true } - launchSingleTop = true - // Don't restore state - always start fresh when switching tabs - restoreState = false - } + icon = { Icon(item.icon, contentDescription = item.label) }, + label = { Text(item.label) }, + selected = isSelected, + onClick = { + navController.navigate(item.screen) { + popUpTo(0) { inclusive = true } + launchSingleTop = true + // Don't restore state - always start fresh when switching tabs + restoreState = false } + } ) } } } data class FabConfig( - val icon: androidx.compose.ui.graphics.vector.ImageVector, - val contentDescription: String, - val onClick: () -> Unit + val icon: androidx.compose.ui.graphics.vector.ImageVector, + val contentDescription: String, + val onClick: () -> Unit ) diff --git a/android/app/src/main/java/com/atridad/ascently/ui/viewmodel/ClimbViewModel.kt b/android/app/src/main/java/com/atridad/ascently/ui/viewmodel/ClimbViewModel.kt index ea18c13..c88b01f 100644 --- a/android/app/src/main/java/com/atridad/ascently/ui/viewmodel/ClimbViewModel.kt +++ b/android/app/src/main/java/com/atridad/ascently/ui/viewmodel/ClimbViewModel.kt @@ -8,6 +8,7 @@ import com.atridad.ascently.data.model.* import com.atridad.ascently.data.repository.ClimbRepository import com.atridad.ascently.data.sync.SyncService import com.atridad.ascently.service.SessionTrackingService +import com.atridad.ascently.utils.AppLogger import com.atridad.ascently.utils.ImageUtils import com.atridad.ascently.widget.ClimbStatsWidgetProvider import java.io.File @@ -15,9 +16,9 @@ import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch class ClimbViewModel( - private val repository: ClimbRepository, - val syncService: SyncService, - private val context: Context + private val repository: ClimbRepository, + val syncService: SyncService, + private val context: Context ) : ViewModel() { // Health Connect manager @@ -29,49 +30,49 @@ class ClimbViewModel( // Data flows val gyms = - repository - .getAllGyms() - .stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(), - initialValue = emptyList() - ) + repository + .getAllGyms() + .stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(), + initialValue = emptyList() + ) val problems = - repository - .getAllProblems() - .stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(), - initialValue = emptyList() - ) + repository + .getAllProblems() + .stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(), + initialValue = emptyList() + ) val sessions = - repository - .getAllSessions() - .stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(), - initialValue = emptyList() - ) + repository + .getAllSessions() + .stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(), + initialValue = emptyList() + ) val activeSession = - repository - .getActiveSessionFlow() - .stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(), - initialValue = null - ) + repository + .getActiveSessionFlow() + .stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(), + initialValue = null + ) val attempts = - repository - .getAllAttempts() - .stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(), - initialValue = emptyList() - ) + repository + .getAllAttempts() + .stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(), + initialValue = emptyList() + ) // Gym operations fun addGym(gym: Gym, updateWidgets: Boolean = true) { @@ -124,7 +125,7 @@ class ClimbViewModel( problem.imagePaths.forEachIndexed { index, tempPath -> if (tempPath.startsWith("temp_")) { val finalPath = - ImageUtils.renameTemporaryImage(context, tempPath, problem.id, index) + ImageUtils.renameTemporaryImage(context, tempPath, problem.id, index) finalImagePaths.add(finalPath ?: tempPath) } else { finalImagePaths.add(tempPath) @@ -176,23 +177,23 @@ class ClimbViewModel( val allProblems = repository.getAllProblems().first() val updatedProblems = - allProblems.map { problem -> - if (problem.imagePaths.isNotEmpty()) { - problem.copy(imagePaths = emptyList()) - } else { - problem - } + allProblems.map { problem -> + if (problem.imagePaths.isNotEmpty()) { + problem.copy(imagePaths = emptyList()) + } else { + problem } + } for (updatedProblem in updatedProblems) { if (updatedProblem.imagePaths != - allProblems.find { it.id == updatedProblem.id }?.imagePaths + allProblems.find { it.id == updatedProblem.id }?.imagePaths ) { repository.insertProblemWithoutSync(updatedProblem) } } - println("Deleted $deletedCount image files and cleared image references") + AppLogger.i("ClimbViewModel") { "Deleted $deletedCount image files and cleared image references" } } } @@ -225,7 +226,7 @@ class ClimbViewModel( } fun getSessionsByGym(gymId: String): Flow> = - repository.getSessionsByGym(gymId) + repository.getSessionsByGym(gymId) // Get last used gym for shortcut functionality suspend fun getLastUsedGym(): Gym? = repository.getLastUsedGym() @@ -233,41 +234,35 @@ class ClimbViewModel( // Active session management fun startSession(context: Context, gymId: String, notes: String? = null) { viewModelScope.launch { - android.util.Log.d("ClimbViewModel", "startSession called with gymId: $gymId") + AppLogger.d("ClimbViewModel") { "startSession called with gymId: $gymId" } if (!com.atridad.ascently.utils.NotificationPermissionUtils - .isNotificationPermissionGranted(context) + .isNotificationPermissionGranted(context) ) { - android.util.Log.d("ClimbViewModel", "Notification permission not granted") + AppLogger.d("ClimbViewModel") { "Notification permission not granted" } _uiState.value = - _uiState.value.copy( - error = - "Notification permission is required to track your climbing session. Please enable notifications in settings." - ) + _uiState.value.copy( + error = + "Notification permission is required to track your climbing session. Please enable notifications in settings." + ) return@launch } val existingActive = repository.getActiveSession() if (existingActive != null) { - android.util.Log.d( - "ClimbViewModel", - "Active session already exists: ${existingActive.id}" - ) + AppLogger.d("ClimbViewModel") { "Active session already exists: ${existingActive.id}" } _uiState.value = - _uiState.value.copy( - error = "There's already an active session. Please end it first." - ) + _uiState.value.copy( + error = "There's already an active session. Please end it first." + ) return@launch } - android.util.Log.d("ClimbViewModel", "Creating new session") + AppLogger.d("ClimbViewModel") { "Creating new session" } val newSession = ClimbSession.create(gymId = gymId, notes = notes) repository.insertSession(newSession) - android.util.Log.d( - "ClimbViewModel", - "Starting tracking service for session: ${newSession.id}" - ) + AppLogger.d("ClimbViewModel") { "Starting tracking service for session: ${newSession.id}" } // Start the tracking service val serviceIntent = SessionTrackingService.createStartIntent(context, newSession.id) context.startForegroundService(serviceIntent) @@ -281,13 +276,13 @@ class ClimbViewModel( fun endSession(context: Context, sessionId: String) { viewModelScope.launch { if (!com.atridad.ascently.utils.NotificationPermissionUtils - .isNotificationPermissionGranted(context) + .isNotificationPermissionGranted(context) ) { _uiState.value = - _uiState.value.copy( - error = - "Notification permission is required to manage your climbing session. Please enable notifications in settings." - ) + _uiState.value.copy( + error = + "Notification permission is required to manage your climbing session. Please enable notifications in settings." + ) return@launch } @@ -313,7 +308,7 @@ class ClimbViewModel( val activeSession = repository.getActiveSession() if (activeSession != null && activeSession.status == SessionStatus.ACTIVE) { val serviceIntent = - SessionTrackingService.createStartIntent(context, activeSession.id) + SessionTrackingService.createStartIntent(context, activeSession.id) context.startForegroundService(serviceIntent) } } @@ -348,32 +343,32 @@ class ClimbViewModel( } fun getAttemptsBySession(sessionId: String): Flow> = - repository.getAttemptsBySession(sessionId) + repository.getAttemptsBySession(sessionId) fun getAttemptsByProblem(problemId: String): Flow> = - repository.getAttemptsByProblem(problemId) + repository.getAttemptsByProblem(problemId) fun exportDataToZipUri(context: Context, uri: android.net.Uri) { viewModelScope.launch { try { _uiState.value = - _uiState.value.copy( - isLoading = true, - message = "Creating ZIP file with images..." - ) + _uiState.value.copy( + isLoading = true, + message = "Creating ZIP file with images..." + ) repository.exportAllDataToZipUri(context, uri) _uiState.value = - _uiState.value.copy( - isLoading = false, - message = - "Export complete! Your climbing data and images have been saved." - ) + _uiState.value.copy( + isLoading = false, + message = + "Export complete! Your climbing data and images have been saved." + ) } catch (e: Exception) { _uiState.value = - _uiState.value.copy( - isLoading = false, - error = "Export failed: ${e.message}" - ) + _uiState.value.copy( + isLoading = false, + error = "Export failed: ${e.message}" + ) } } } @@ -385,23 +380,23 @@ class ClimbViewModel( if (!file.name.lowercase().endsWith(".zip")) { throw Exception( - "Only ZIP files are supported for import. Please use a ZIP file exported from Ascently." + "Only ZIP files are supported for import. Please use a ZIP file exported from Ascently." ) } repository.importDataFromZip(file) _uiState.value = - _uiState.value.copy( - isLoading = false, - message = "Data imported successfully from ${file.name}" - ) + _uiState.value.copy( + isLoading = false, + message = "Data imported successfully from ${file.name}" + ) } catch (e: Exception) { _uiState.value = - _uiState.value.copy( - isLoading = false, - error = "Import failed: ${e.message}" - ) + _uiState.value.copy( + isLoading = false, + error = "Import failed: ${e.message}" + ) } } } @@ -448,13 +443,13 @@ class ClimbViewModel( repository.resetAllData() _uiState.value = - _uiState.value.copy( - isLoading = false, - message = "All data has been reset successfully" - ) + _uiState.value.copy( + isLoading = false, + message = "All data has been reset successfully" + ) } catch (e: Exception) { _uiState.value = - _uiState.value.copy(isLoading = false, error = "Reset failed: ${e.message}") + _uiState.value.copy(isLoading = false, error = "Reset failed: ${e.message}") } } } @@ -469,23 +464,20 @@ class ClimbViewModel( val attemptCount = attempts.size val result = - healthConnectManager.autoSyncCompletedSession( - session, - gymName, - attemptCount - ) + healthConnectManager.autoSyncCompletedSession( + session, + gymName, + attemptCount + ) result.onFailure { error -> if (healthConnectManager.isReadySync()) { - android.util.Log.w( - "ClimbViewModel", - "Health Connect sync failed: ${error.message}" - ) + AppLogger.w("ClimbViewModel") { "Health Connect sync failed: ${error.message}" } } } } catch (e: Exception) { if (healthConnectManager.isReadySync()) { - android.util.Log.w("ClimbViewModel", "Health Connect sync error: ${e.message}") + AppLogger.w("ClimbViewModel") { "Health Connect sync error: ${e.message}" } } } } @@ -493,7 +485,7 @@ class ClimbViewModel( } data class ClimbUiState( - val isLoading: Boolean = false, - val message: String? = null, - val error: String? = null + val isLoading: Boolean = false, + val message: String? = null, + val error: String? = null ) diff --git a/android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt b/android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt new file mode 100644 index 0000000..d2a1964 --- /dev/null +++ b/android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt @@ -0,0 +1,51 @@ +package com.atridad.ascently.utils + +import android.util.Log +import com.atridad.ascently.BuildConfig + +/** + * Centralized logging utility to ensure all mobile logging happens only in debug builds. + */ +object AppLogger { + + enum class Level(val androidLevel: Int) { + DEBUG(Log.DEBUG), + INFO(Log.INFO), + WARN(Log.WARN), + ERROR(Log.ERROR) + } + + fun d(tag: String = DEFAULT_TAG, messageProvider: () -> String) { + log(Level.DEBUG, tag, messageProvider) + } + + fun i(tag: String = DEFAULT_TAG, messageProvider: () -> String) { + log(Level.INFO, tag, messageProvider) + } + + fun w(tag: String = DEFAULT_TAG, throwable: Throwable? = null, messageProvider: () -> String) { + log(Level.WARN, tag, messageProvider, throwable) + } + + fun e(tag: String = DEFAULT_TAG, throwable: Throwable? = null, messageProvider: () -> String) { + log(Level.ERROR, tag, messageProvider, throwable) + } + + private fun log( + level: Level, + tag: String, + messageProvider: () -> String, + throwable: Throwable? = null + ) { + if (!BuildConfig.DEBUG) return + + val message = messageProvider() + if (throwable != null) { + Log.println(level.androidLevel, tag, "$message\n${Log.getStackTraceString(throwable)}") + } else { + Log.println(level.androidLevel, tag, message) + } + } + + private const val DEFAULT_TAG = "Ascently" +} diff --git a/android/app/src/main/java/com/atridad/ascently/utils/ImageUtils.kt b/android/app/src/main/java/com/atridad/ascently/utils/ImageUtils.kt index 57ec226..10c3b91 100644 --- a/android/app/src/main/java/com/atridad/ascently/utils/ImageUtils.kt +++ b/android/app/src/main/java/com/atridad/ascently/utils/ImageUtils.kt @@ -6,7 +6,6 @@ import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.ImageDecoder import android.net.Uri -import android.util.Log import androidx.core.graphics.scale import androidx.exifinterface.media.ExifInterface import java.io.File @@ -30,17 +29,17 @@ object ImageUtils { /** Saves an image from a URI while preserving EXIF orientation data */ private fun saveImageWithExif( - context: Context, - imageUri: Uri, - originalBitmap: Bitmap, - outputFile: File + context: Context, + imageUri: Uri, + originalBitmap: Bitmap, + outputFile: File ): Boolean { return try { // Get EXIF data from original image val originalExif = - context.contentResolver.openInputStream(imageUri)?.use { input -> - ExifInterface(input) - } + context.contentResolver.openInputStream(imageUri)?.use { input -> + ExifInterface(input) + } // Compress and save the bitmap val compressedBitmap = compressImage(originalBitmap) @@ -73,7 +72,7 @@ object ImageUtils { compressedBitmap.recycle() true } catch (e: Exception) { - e.printStackTrace() + AppLogger.e("ImageUtils", e) { "Error saving image with EXIF data" } false } } @@ -86,11 +85,11 @@ object ImageUtils { // Calculate the scaling factor val scaleFactor = - if (width > height) { - if (width > MAX_IMAGE_SIZE) MAX_IMAGE_SIZE.toFloat() / width else 1f - } else { - if (height > MAX_IMAGE_SIZE) MAX_IMAGE_SIZE.toFloat() / height else 1f - } + if (width > height) { + if (width > MAX_IMAGE_SIZE) MAX_IMAGE_SIZE.toFloat() / width else 1f + } else { + if (height > MAX_IMAGE_SIZE) MAX_IMAGE_SIZE.toFloat() / height else 1f + } return if (scaleFactor < 1f) { val newWidth = (width * scaleFactor).toInt() @@ -119,7 +118,7 @@ object ImageUtils { val file = getImageFile(context, relativePath) file.delete() } catch (e: Exception) { - e.printStackTrace() + AppLogger.e("ImageUtils", e) { "Failed to delete image: $relativePath" } false } } @@ -137,7 +136,7 @@ object ImageUtils { sourceFile.copyTo(destFile, overwrite = true) "$IMAGES_DIR/$filename" } catch (e: Exception) { - e.printStackTrace() + AppLogger.e("ImageUtils", e) { "Failed to import image from source: ${sourceFile.name}" } null } } @@ -148,16 +147,16 @@ object ImageUtils { val imagesDir = getImagesDirectory(context) imagesDir.listFiles()?.mapNotNull { file -> if (file.isFile && - (file.extension == "jpg" || - file.extension == "jpeg" || - file.extension == "png") + (file.extension == "jpg" || + file.extension == "jpeg" || + file.extension == "png") ) { "$IMAGES_DIR/${file.name}" } else null } - ?: emptyList() + ?: emptyList() } catch (e: Exception) { - e.printStackTrace() + AppLogger.e("ImageUtils", e) { "Failed to enumerate images directory" } emptyList() } } @@ -178,50 +177,47 @@ object ImageUtils { tempFilename } catch (e: Exception) { - Log.e("ImageUtils", "Error saving temporary image from URI", e) + AppLogger.e("ImageUtils", e) { "Error saving temporary image from URI" } null } } /** Renames a temporary image */ fun renameTemporaryImage( - context: Context, - tempFilename: String, - problemId: String, - imageIndex: Int + context: Context, + tempFilename: String, + problemId: String, + imageIndex: Int ): String? { return try { val tempFile = File(getImagesDirectory(context), tempFilename) if (!tempFile.exists()) { - Log.e("ImageUtils", "Temporary file does not exist: $tempFilename") + AppLogger.e("ImageUtils") { "Temporary file does not exist: $tempFilename" } return null } val deterministicFilename = - ImageNamingUtils.generateImageFilename(problemId, imageIndex) + ImageNamingUtils.generateImageFilename(problemId, imageIndex) val finalFile = File(getImagesDirectory(context), deterministicFilename) if (tempFile.renameTo(finalFile)) { - Log.d( - "ImageUtils", - "Renamed temporary image: $tempFilename -> $deterministicFilename" - ) + AppLogger.d("ImageUtils") { "Renamed temporary image: $tempFilename -> $deterministicFilename" } deterministicFilename } else { - Log.e("ImageUtils", "Failed to rename temporary image: $tempFilename") + AppLogger.e("ImageUtils") { "Failed to rename temporary image: $tempFilename" } null } } catch (e: Exception) { - Log.e("ImageUtils", "Error renaming temporary image", e) + AppLogger.e("ImageUtils", e) { "Error renaming temporary image" } null } } /** Saves image data with a specific filename */ fun saveImageFromBytesWithFilename( - context: Context, - imageData: ByteArray, - filename: String + context: Context, + imageData: ByteArray, + filename: String ): String? { return try { val imageFile = File(getImagesDirectory(context), filename) @@ -230,7 +226,7 @@ object ImageUtils { if (imageData.size > 5 * 1024 * 1024) { // 5MB threshold // For large images, decode, compress, and try to preserve EXIF val bitmap = - BitmapFactory.decodeByteArray(imageData, 0, imageData.size) ?: return null + BitmapFactory.decodeByteArray(imageData, 0, imageData.size) ?: return null val compressedBitmap = compressImage(bitmap) // Save compressed image @@ -249,7 +245,7 @@ object ImageUtils { destExif.saveAttributes() } catch (e: Exception) { // If EXIF preservation fails, continue without it - Log.w("ImageUtils", "Failed to preserve EXIF data: ${e.message}") + AppLogger.w("ImageUtils") { "Failed to preserve EXIF data: ${e.message}" } } bitmap.recycle() @@ -262,7 +258,7 @@ object ImageUtils { // Return relative path "$IMAGES_DIR/$filename" } catch (e: Exception) { - e.printStackTrace() + AppLogger.e("ImageUtils", e) { "Failed to save image from bytes: $filename" } null } } @@ -275,7 +271,7 @@ object ImageUtils { orphanedImages.forEach { path -> deleteImage(context, path) } } catch (e: Exception) { - e.printStackTrace() + AppLogger.e("ImageUtils", e) { "Failed to clean up orphaned images" } } } } diff --git a/android/app/src/main/java/com/atridad/ascently/utils/MigrationManager.kt b/android/app/src/main/java/com/atridad/ascently/utils/MigrationManager.kt index 6532668..5bc3496 100644 --- a/android/app/src/main/java/com/atridad/ascently/utils/MigrationManager.kt +++ b/android/app/src/main/java/com/atridad/ascently/utils/MigrationManager.kt @@ -2,7 +2,6 @@ package com.atridad.ascently.utils import android.content.Context import android.content.SharedPreferences -import android.util.Log import androidx.core.content.edit class MigrationManager(private val context: Context) { @@ -14,7 +13,7 @@ class MigrationManager(private val context: Context) { } private val migrationPrefs: SharedPreferences = - context.getSharedPreferences(MIGRATION_PREFS, Context.MODE_PRIVATE) + context.getSharedPreferences(MIGRATION_PREFS, Context.MODE_PRIVATE) /** * Perform migration from OpenClimb to Ascently if needed This should be called early in app @@ -22,11 +21,11 @@ class MigrationManager(private val context: Context) { */ fun migrateIfNeeded() { if (migrationPrefs.getBoolean(MIGRATION_COMPLETED_KEY, false)) { - Log.d(TAG, "Migration already completed, skipping") + AppLogger.d(TAG) { "Migration already completed, skipping" } return } - Log.i(TAG, "🔄 Starting migration from OpenClimb to Ascently...") + AppLogger.i(TAG) { "🔄 Starting migration from OpenClimb to Ascently..." } var migrationCount = 0 // Migrate SharedPreferences @@ -36,12 +35,9 @@ class MigrationManager(private val context: Context) { migrationPrefs.edit { putBoolean(MIGRATION_COMPLETED_KEY, true) } if (migrationCount > 0) { - Log.i( - TAG, - "🎉 Migration completed! Migrated $migrationCount items from OpenClimb to Ascently" - ) + AppLogger.i(TAG) { "🎉 Migration completed! Migrated $migrationCount items from OpenClimb to Ascently" } } else { - Log.i(TAG, "ℹ️ No OpenClimb data found to migrate") + AppLogger.i(TAG) { "ℹ️ No OpenClimb data found to migrate" } } } @@ -51,12 +47,12 @@ class MigrationManager(private val context: Context) { // Define preference file migrations val preferenceFileMigrations = - listOf( - "openclimb_data_state" to "ascently_data_state", - "health_connect_prefs" to "health_connect_prefs", // Keep same name - "deleted_items" to "deleted_items", // Keep same name - "sync_preferences" to "sync_preferences" // Keep same name - ) + listOf( + "openclimb_data_state" to "ascently_data_state", + "health_connect_prefs" to "health_connect_prefs", // Keep same name + "deleted_items" to "deleted_items", // Keep same name + "sync_preferences" to "sync_preferences" // Keep same name + ) for ((oldFileName, newFileName) in preferenceFileMigrations) { if (oldFileName != newFileName) { @@ -95,10 +91,7 @@ class MigrationManager(private val context: Context) { // Clear old preferences oldPrefs.edit { clear() } - Log.d( - TAG, - "✅ Migrated preference file: $oldFileName → $newFileName (${oldPrefs.all.size} keys)" - ) + AppLogger.d(TAG) { "Migrated preference file: $oldFileName → $newFileName (${oldPrefs.all.size} keys)" } return oldPrefs.all.size } @@ -111,12 +104,12 @@ class MigrationManager(private val context: Context) { // Check for any openclimb-prefixed keys across all preference files val preferencesToCheck = - listOf( - "ascently_data_state", - "health_connect_prefs", - "deleted_items", - "sync_preferences" - ) + listOf( + "ascently_data_state", + "health_connect_prefs", + "deleted_items", + "sync_preferences" + ) for (prefFileName in preferencesToCheck) { val prefs = context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE) @@ -150,7 +143,7 @@ class MigrationManager(private val context: Context) { } } - Log.d(TAG, "✅ Migrated ${keysToMigrate.size} keys in $prefFileName") + AppLogger.d(TAG) { "Migrated ${keysToMigrate.size} keys in $prefFileName" } count += keysToMigrate.size } } @@ -166,6 +159,6 @@ class MigrationManager(private val context: Context) { /** Reset migration state (for testing purposes) */ fun resetMigrationState() { migrationPrefs.edit { putBoolean(MIGRATION_COMPLETED_KEY, false) } - Log.d(TAG, "Migration state reset") + AppLogger.d(TAG) { "Migration state reset" } } } diff --git a/android/app/src/main/java/com/atridad/ascently/utils/ZipExportImportUtils.kt b/android/app/src/main/java/com/atridad/ascently/utils/ZipExportImportUtils.kt index 9db6c8b..3a4d7a6 100644 --- a/android/app/src/main/java/com/atridad/ascently/utils/ZipExportImportUtils.kt +++ b/android/app/src/main/java/com/atridad/ascently/utils/ZipExportImportUtils.kt @@ -22,19 +22,19 @@ object ZipExportImportUtils { /** Creates a ZIP file containing the JSON data and all referenced images */ fun createExportZip( - context: Context, - exportData: ClimbDataBackup, - referencedImagePaths: Set, - directory: File? = null + context: Context, + exportData: ClimbDataBackup, + referencedImagePaths: Set, + directory: File? = null ): File { val exportDir = - directory - ?: File( - context.getExternalFilesDir( - android.os.Environment.DIRECTORY_DOCUMENTS - ), - "Ascently" - ) + directory + ?: File( + context.getExternalFilesDir( + android.os.Environment.DIRECTORY_DOCUMENTS + ), + "Ascently" + ) if (!exportDir.exists()) { exportDir.mkdirs() } @@ -52,10 +52,11 @@ object ZipExportImportUtils { zipOut.closeEntry() // Add JSON data file - val json = Json { - prettyPrint = true - ignoreUnknownKeys = true - } + val json = + Json { + prettyPrint = true + ignoreUnknownKeys = true + } val jsonString = json.encodeToString(exportData) val jsonEntry = ZipEntry(DATA_JSON_FILENAME) @@ -78,24 +79,21 @@ object ZipExportImportUtils { zipOut.closeEntry() successfulImages++ } else { - android.util.Log.w( - "ZipExportImportUtils", - "Image file not found or empty: $imagePath" - ) + AppLogger.w("ZipExportImportUtils") { + "Image file not found or empty: $imagePath" + } } } catch (e: Exception) { - android.util.Log.e( - "ZipExportImportUtils", - "Failed to add image $imagePath: ${e.message}" - ) + AppLogger.e("ZipExportImportUtils", e) { + "Failed to add image $imagePath: ${e.message}" + } } } // Log export summary - android.util.Log.i( - "ZipExportImportUtils", - "Export completed: ${successfulImages}/${referencedImagePaths.size} images included" - ) + AppLogger.i("ZipExportImportUtils") { + "Export completed: ${successfulImages}/${referencedImagePaths.size} images included" + } } // Validate the created ZIP file @@ -115,10 +113,10 @@ object ZipExportImportUtils { /** Creates a ZIP file and writes it to a provided URI */ fun createExportZipToUri( - context: Context, - uri: android.net.Uri, - exportData: ClimbDataBackup, - referencedImagePaths: Set + context: Context, + uri: android.net.Uri, + exportData: ClimbDataBackup, + referencedImagePaths: Set ) { try { context.contentResolver.openOutputStream(uri)?.use { outputStream -> @@ -131,10 +129,11 @@ object ZipExportImportUtils { zipOut.closeEntry() // Add JSON data file - val json = Json { - prettyPrint = true - ignoreUnknownKeys = true - } + val json = + Json { + prettyPrint = true + ignoreUnknownKeys = true + } val jsonString = json.encodeToString(exportData) val jsonEntry = ZipEntry(DATA_JSON_FILENAME) @@ -158,28 +157,26 @@ object ZipExportImportUtils { successfulImages++ } } catch (e: Exception) { - android.util.Log.e( - "ZipExportImportUtils", - "Failed to add image $imagePath: ${e.message}" - ) + AppLogger.e("ZipExportImportUtils", e) { + "Failed to add image $imagePath: ${e.message}" + } } } - android.util.Log.i( - "ZipExportImportUtils", - "Export to URI completed: ${successfulImages}/${referencedImagePaths.size} images included" - ) + AppLogger.i("ZipExportImportUtils") { + "Export to URI completed: ${successfulImages}/${referencedImagePaths.size} images included" + } } } - ?: throw IOException("Could not open output stream") + ?: throw IOException("Could not open output stream") } catch (e: Exception) { throw IOException("Failed to create export ZIP to URI: ${e.message}") } } private fun createMetadata( - exportData: ClimbDataBackup, - referencedImagePaths: Set + exportData: ClimbDataBackup, + referencedImagePaths: Set ): String { return buildString { appendLine("Ascently Export Metadata") @@ -197,8 +194,8 @@ object ZipExportImportUtils { /** Data class to hold extraction results */ data class ImportResult( - val jsonContent: String, - val importedImagePaths: Map // original filename -> new relative path + val jsonContent: String, + val importedImagePaths: Map // original filename -> new relative path ) /** Extracts a ZIP file and returns the JSON content and imported image paths */ @@ -217,16 +214,17 @@ object ZipExportImportUtils { // Read metadata for validation val metadataContent = zipIn.readBytes().toString(Charsets.UTF_8) foundRequiredFiles.add("metadata") - android.util.Log.i( - "ZipExportImportUtils", - "Found metadata: ${metadataContent.lines().take(3).joinToString()}" - ) + AppLogger.i("ZipExportImportUtils") { + "Found metadata: ${metadataContent.lines().take(3).joinToString()}" + } } + entry.name == DATA_JSON_FILENAME -> { // Read JSON data jsonContent = zipIn.readBytes().toString(Charsets.UTF_8) foundRequiredFiles.add("data") } + entry.name.startsWith("$IMAGES_DIR_NAME/") && !entry.isDirectory -> { // Extract image file val originalFilename = entry.name.substringAfter("$IMAGES_DIR_NAME/") @@ -234,11 +232,11 @@ object ZipExportImportUtils { try { // Create temporary file to hold the extracted image val tempFile = - File.createTempFile( - "import_image_", - "_$originalFilename", - context.cacheDir - ) + File.createTempFile( + "import_image_", + "_$originalFilename", + context.cacheDir + ) FileOutputStream(tempFile).use { output -> zipIn.copyTo(output) } @@ -248,37 +246,33 @@ object ZipExportImportUtils { val newPath = ImageUtils.importImageFile(context, tempFile) if (newPath != null) { importedImagePaths[originalFilename] = newPath - android.util.Log.d( - "ZipExportImportUtils", - "Successfully imported image: $originalFilename -> $newPath" - ) + AppLogger.d("ZipExportImportUtils") { + "Successfully imported image: $originalFilename -> $newPath" + } } else { - android.util.Log.w( - "ZipExportImportUtils", - "Failed to import image: $originalFilename" - ) + AppLogger.w("ZipExportImportUtils") { + "Failed to import image: $originalFilename" + } } } else { - android.util.Log.w( - "ZipExportImportUtils", - "Extracted image is empty: $originalFilename" - ) + AppLogger.w("ZipExportImportUtils") { + "Extracted image is empty: $originalFilename" + } } // Clean up temp file tempFile.delete() } catch (e: Exception) { - android.util.Log.e( - "ZipExportImportUtils", - "Failed to process image $originalFilename: ${e.message}" - ) + AppLogger.e("ZipExportImportUtils", e) { + "Failed to process image $originalFilename: ${e.message}" + } } } + else -> { - android.util.Log.d( - "ZipExportImportUtils", - "Skipping ZIP entry: ${entry.name}" - ) + AppLogger.d("ZipExportImportUtils") { + "Skipping ZIP entry: ${entry.name}" + } } } @@ -296,10 +290,9 @@ object ZipExportImportUtils { throw IOException("Invalid ZIP file: data.json is empty") } - android.util.Log.i( - "ZipExportImportUtils", - "Import extraction completed: ${importedImagePaths.size} images processed" - ) + AppLogger.i("ZipExportImportUtils") { + "Import extraction completed: ${importedImagePaths.size} images processed" + } return ImportResult(jsonContent, importedImagePaths) } catch (e: Exception) { @@ -312,16 +305,16 @@ object ZipExportImportUtils { * the new ones after import */ fun updateProblemImagePaths( - problems: List, - imagePathMapping: Map + problems: List, + imagePathMapping: Map ): List { return problems.map { problem -> val updatedImagePaths = - (problem.imagePaths ?: emptyList()).mapNotNull { oldPath -> - // Extract filename from the old path - val filename = oldPath.substringAfterLast("/") - imagePathMapping[filename] - } + (problem.imagePaths ?: emptyList()).mapNotNull { oldPath -> + // Extract filename from the old path + val filename = oldPath.substringAfterLast("/") + imagePathMapping[filename] + } problem.withUpdatedImagePaths(updatedImagePaths) } } diff --git a/ios/Ascently.xcodeproj/LiveActivityManager.swift b/ios/Ascently.xcodeproj/LiveActivityManager.swift index d148bc8..da23ee2 100644 --- a/ios/Ascently.xcodeproj/LiveActivityManager.swift +++ b/ios/Ascently.xcodeproj/LiveActivityManager.swift @@ -25,7 +25,7 @@ final class LiveActivityManager { pushType: nil ) } catch { - print("Failed to start live activity: \(error)") + AppLogger.error("Failed to start live activity: \(error)", tag: "LegacyLiveActivityManager") } } diff --git a/ios/Ascently.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/Ascently.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index 9d0efa40c7b5c2b6c91271d55d4e2706822bdba5..f9a425f744c15b886f05caf5fc1834651396aafe 100644 GIT binary patch literal 263252 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 z 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%0DPX@V{sTV(@o;4Ts-Xr# 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 Bool { diff --git a/ios/Ascently/Services/SyncService.swift b/ios/Ascently/Services/SyncService.swift index 07e416c..1f71a01 100644 --- a/ios/Ascently/Services/SyncService.swift +++ b/ios/Ascently/Services/SyncService.swift @@ -12,10 +12,27 @@ class SyncService: ObservableObject { @Published var isOfflineMode = false private let userDefaults = UserDefaults.standard + private let logTag = "SyncService" private var syncTask: Task? private var pendingChanges = false private let syncDebounceDelay: TimeInterval = 2.0 + private func logDebug(_ message: @autoclosure () -> String) { + AppLogger.debug(message(), tag: logTag) + } + + private func logInfo(_ message: @autoclosure () -> String) { + AppLogger.info(message(), tag: logTag) + } + + private func logWarning(_ message: @autoclosure () -> String) { + AppLogger.warning(message(), tag: logTag) + } + + private func logError(_ message: @autoclosure () -> String) { + AppLogger.error(message(), tag: logTag) + } + private enum Keys { static let serverURL = "sync_server_url" static let authToken = "sync_auth_token" @@ -201,7 +218,7 @@ class SyncService: ObservableObject { return false } - print( + logInfo( "iOS DELTA SYNC: Sending gyms=\(modifiedGyms.count), problems=\(modifiedProblems.count), sessions=\(modifiedSessions.count), attempts=\(modifiedAttempts.count), deletions=\(modifiedDeletions.count)" ) @@ -244,7 +261,7 @@ class SyncService: ObservableObject { let decoder = JSONDecoder() let deltaResponse = try decoder.decode(DeltaSyncResponse.self, from: data) - print( + logInfo( "iOS DELTA SYNC: Received gyms=\(deltaResponse.gyms.count), problems=\(deltaResponse.problems.count), sessions=\(deltaResponse.sessions.count), attempts=\(deltaResponse.attempts.count), deletions=\(deltaResponse.deletedItems.count)" ) @@ -270,7 +287,7 @@ class SyncService: ObservableObject { let allDeletions = dataManager.getDeletedItems() + response.deletedItems let uniqueDeletions = Array(Set(allDeletions)) - print( + logInfo( "iOS DELTA SYNC: Applying \(uniqueDeletions.count) deletion records before merging data" ) applyDeletionsToDataManager(deletions: uniqueDeletions, dataManager: dataManager) @@ -298,10 +315,10 @@ class SyncService: ObservableObject { _ = try imageManager.saveImportedImage(imageData, filename: consistentFilename) imagePathMapping[serverFilename] = consistentFilename } catch SyncError.imageNotFound { - print("Image not found on server: \(serverFilename)") + logInfo("Image not found on server: \(serverFilename)") continue } catch { - print("Failed to download image \(serverFilename): \(error)") + logInfo("Failed to download image \(serverFilename): \(error)") continue } } @@ -436,7 +453,7 @@ class SyncService: ObservableObject { ) async throws { guard !modifiedProblems.isEmpty else { return } - print("iOS DELTA SYNC: Syncing images for \(modifiedProblems.count) modified problems") + logInfo("iOS DELTA SYNC: Syncing images for \(modifiedProblems.count) modified problems") for backupProblem in modifiedProblems { guard @@ -465,9 +482,9 @@ class SyncService: ObservableObject { } try await uploadImage(filename: consistentFilename, imageData: imageData) - print("Uploaded modified problem image: \(consistentFilename)") + logInfo("Uploaded modified problem image: \(consistentFilename)") } catch { - print("Failed to upload image \(consistentFilename): \(error)") + logInfo("Failed to upload image \(consistentFilename): \(error)") } } } @@ -549,7 +566,7 @@ class SyncService: ObservableObject { func syncWithServer(dataManager: ClimbingDataManager) async throws { if isOfflineMode { - print("Sync skipped: Offline mode is enabled.") + logInfo("Sync skipped: Offline mode is enabled.") return } @@ -586,7 +603,7 @@ class SyncService: ObservableObject { // If both client and server have been synced before, use delta sync if hasLocalData && hasServerData && lastSyncTime != nil { - print("iOS SYNC: Using delta sync for incremental updates") + logInfo("iOS SYNC: Using delta sync for incremental updates") try await performDeltaSync(dataManager: dataManager) // Update last sync time @@ -597,32 +614,32 @@ class SyncService: ObservableObject { if !hasLocalData && hasServerData { // Case 1: No local data - do full restore from server - print("iOS SYNC: Case 1 - No local data, performing full restore from server") - print("Syncing images from server first...") + logInfo("iOS SYNC: Case 1 - No local data, performing full restore from server") + logInfo("Syncing images from server first...") let imagePathMapping = try await syncImagesFromServer( backup: serverBackup, dataManager: dataManager) - print("Importing data after images...") + logInfo("Importing data after images...") try importBackupToDataManager( serverBackup, dataManager: dataManager, imagePathMapping: imagePathMapping) - print("Full restore completed") + logInfo("Full restore completed") } else if hasLocalData && !hasServerData { // Case 2: No server data - upload local data to server - print("iOS SYNC: Case 2 - No server data, uploading local data to server") + logInfo("iOS SYNC: Case 2 - No server data, uploading local data to server") let currentBackup = createBackupFromDataManager(dataManager) _ = try await uploadData(currentBackup) - print("Uploading local images to server...") + logInfo("Uploading local images to server...") try await syncImagesToServer(dataManager: dataManager) - print("Initial upload completed") + logInfo("Initial upload completed") } else if hasLocalData && hasServerData { // Case 3: Both have data - use safe merge strategy - print("iOS SYNC: Case 3 - Merging local and server data safely") + logInfo("iOS SYNC: Case 3 - Merging local and server data safely") try await mergeDataSafely( localBackup: localBackup, serverBackup: serverBackup, dataManager: dataManager) - print("Safe merge completed") + logInfo("Safe merge completed") } else { - print("No data to sync") + logInfo("No data to sync") } // Update last sync time @@ -640,7 +657,7 @@ class SyncService: ObservableObject { if let date = formatter.date(from: timestamp) { return Int64(date.timeIntervalSince1970 * 1000) } - print("Failed to parse timestamp: \(timestamp), using 0") + logInfo("Failed to parse timestamp: \(timestamp), using 0") return 0 } @@ -666,12 +683,12 @@ class SyncService: ObservableObject { imageData, filename: consistentFilename) imagePathMapping[serverFilename] = consistentFilename - print("Downloaded and mapped image: \(serverFilename) -> \(consistentFilename)") + logInfo("Downloaded and mapped image: \(serverFilename) -> \(consistentFilename)") } catch SyncError.imageNotFound { - print("Image not found on server: \(serverFilename)") + logInfo("Image not found on server: \(serverFilename)") continue } catch { - print("Failed to download image \(serverFilename): \(error)") + logInfo("Failed to download image \(serverFilename): \(error)") continue } } @@ -704,18 +721,18 @@ class SyncService: ObservableObject { ).path do { try FileManager.default.moveItem(atPath: fullPath, toPath: newPath) - print("Renamed local image: \(filename) -> \(consistentFilename)") + logInfo("Renamed local image: \(filename) -> \(consistentFilename)") // Update problem's image path in memory for consistency } catch { - print("Failed to rename local image, using original: \(error)") + logInfo("Failed to rename local image, using original: \(error)") } } try await uploadImage(filename: consistentFilename, imageData: imageData) - print("Successfully uploaded image: \(consistentFilename)") + logInfo("Successfully uploaded image: \(consistentFilename)") } catch { - print("Failed to upload image \(consistentFilename): \(error)") + logInfo("Failed to upload image \(consistentFilename): \(error)") // Continue with other images even if one fails } } @@ -733,7 +750,7 @@ class SyncService: ObservableObject { !activeSessionIds.contains($0.sessionId) } - print( + logInfo( "iOS SYNC: Excluding \(dataManager.sessions.count - completedSessions.count) active sessions and \(dataManager.attempts.count - completedAttempts.count) active session attempts from sync" ) @@ -808,26 +825,26 @@ class SyncService: ObservableObject { let allDeletions = localDeletions + serverBackup.deletedItems let uniqueDeletions = Array(Set(allDeletions)) - print("Merging gyms...") + logInfo("Merging gyms...") let mergedGyms = mergeGyms( local: dataManager.gyms, server: serverBackup.gyms, deletedItems: uniqueDeletions) - print("Merging problems...") + logInfo("Merging problems...") let mergedProblems = try mergeProblems( local: dataManager.problems, server: serverBackup.problems, imagePathMapping: imagePathMapping, deletedItems: uniqueDeletions) - print("Merging sessions...") + logInfo("Merging sessions...") let mergedSessions = try mergeSessions( local: dataManager.sessions, server: serverBackup.sessions, deletedItems: uniqueDeletions) - print("Merging attempts...") + logInfo("Merging attempts...") let mergedAttempts = try mergeAttempts( local: dataManager.attempts, server: serverBackup.attempts, @@ -887,7 +904,7 @@ class SyncService: ObservableObject { && !allDeletedAttemptIds.contains($0.id.uuidString) } - print( + logInfo( "iOS IMPORT: Preserving \(activeSessions.count) active sessions and \(activeAttempts.count) active attempts during import" ) @@ -977,7 +994,7 @@ class SyncService: ObservableObject { // Restore active sessions and their attempts after import for session in activeSessions { - print("iOS IMPORT: Restoring active session: \(session.id)") + logInfo("iOS IMPORT: Restoring active session: \(session.id)") dataManager.sessions.append(session) if session.id == dataManager.activeSession?.id { dataManager.activeSession = session @@ -997,12 +1014,12 @@ class SyncService: ObservableObject { dataManager.clearDeletedItems() if let data = try? JSONEncoder().encode(backup.deletedItems) { UserDefaults.standard.set(data, forKey: "ascently_deleted_items") - print("iOS IMPORT: Imported \(backup.deletedItems.count) deletion records") + logInfo("iOS IMPORT: Imported \(backup.deletedItems.count) deletion records") } // Update local data state to match imported data timestamp DataStateManager.shared.setLastModified(backup.exportedAt) - print("Data state synchronized to imported timestamp: \(backup.exportedAt)") + logInfo("Data state synchronized to imported timestamp: \(backup.exportedAt)") } catch { throw SyncError.importFailed(error) diff --git a/ios/Ascently/Utils/AppLogger.swift b/ios/Ascently/Utils/AppLogger.swift new file mode 100644 index 0000000..1ac791c --- /dev/null +++ b/ios/Ascently/Utils/AppLogger.swift @@ -0,0 +1,46 @@ +import Foundation + +/// Centralized logging utility for the iOS app. +/// +/// All log output is automatically compiled out in non-debug builds to avoid leaking +/// sensitive information. Use this instead of calling `print` directly. +enum AppLogger { + + enum LogLevel: String { + case debug = "DEBUG" + case info = "INFO" + case warning = "WARN" + case error = "ERROR" + } + + static func debug(_ message: @autoclosure () -> String, tag: String = #fileID) { + log(level: .debug, tag: tag, message: message()) + } + + static func info(_ message: @autoclosure () -> String, tag: String = #fileID) { + log(level: .info, tag: tag, message: message()) + } + + static func warning(_ message: @autoclosure () -> String, tag: String = #fileID) { + log(level: .warning, tag: tag, message: message()) + } + + static func error(_ message: @autoclosure () -> String, tag: String = #fileID) { + log(level: .error, tag: tag, message: message()) + } + + static func log(level: LogLevel, tag: String, message: @autoclosure () -> String) { + #if DEBUG + let lastPath = (tag as NSString).lastPathComponent + let resolvedTag = lastPath.isEmpty ? tag : lastPath + Swift.print("[\(level.rawValue)][\(resolvedTag)] \(message())") + #endif + } +} + +enum LogTag { + static let climbingData = "ClimbingData" + static let dataManagement = "DataManagementSection" + static let exportData = "ExportDataView" + static let syncSection = "SyncSection" +} diff --git a/ios/Ascently/Utils/DataStateManager.swift b/ios/Ascently/Utils/DataStateManager.swift index 307d33d..53c84be 100644 --- a/ios/Ascently/Utils/DataStateManager.swift +++ b/ios/Ascently/Utils/DataStateManager.swift @@ -18,14 +18,17 @@ class DataStateManager { private init() { // Initialize with current timestamp if this is the first time if !isInitialized() { - print("DataStateManager: First time initialization") + AppLogger.info("DataStateManager: First time initialization", tag: "DataState") // Set initial timestamp to a very old date so server data will be considered newer let epochTime = "1970-01-01T00:00:00.000Z" userDefaults.set(epochTime, forKey: Keys.lastModified) markAsInitialized() - print("DataStateManager initialized with epoch timestamp: \(epochTime)") + AppLogger.info( + "DataStateManager initialized with epoch timestamp: \(epochTime)", tag: "DataState") } else { - print("DataStateManager: Already initialized, current timestamp: \(getLastModified())") + AppLogger.info( + "DataStateManager: Already initialized, current timestamp: \(getLastModified())", + tag: "DataState") } } @@ -34,29 +37,32 @@ class DataStateManager { func updateDataState() { let now = ISO8601DateFormatter().string(from: Date()) userDefaults.set(now, forKey: Keys.lastModified) - print("iOS Data state updated to: \(now)") + AppLogger.info("iOS Data state updated to: \(now)", tag: "DataState") } func getLastModified() -> String { if let storedTimestamp = userDefaults.string(forKey: Keys.lastModified) { - print("iOS DataStateManager returning stored timestamp: \(storedTimestamp)") + AppLogger.debug( + "iOS DataStateManager returning stored timestamp: \(storedTimestamp)", + tag: "DataState") return storedTimestamp } let epochTime = "1970-01-01T00:00:00.000Z" - print("No data state timestamp found - returning epoch time: \(epochTime)") + AppLogger.warning( + "No data state timestamp found - returning epoch time: \(epochTime)", tag: "DataState") return epochTime } func setLastModified(_ timestamp: String) { userDefaults.set(timestamp, forKey: Keys.lastModified) - print("Data state set to: \(timestamp)") + AppLogger.info("Data state set to: \(timestamp)", tag: "DataState") } func reset() { userDefaults.removeObject(forKey: Keys.lastModified) userDefaults.removeObject(forKey: Keys.initialized) - print("Data state reset") + AppLogger.info("Data state reset", tag: "DataState") } private func isInitialized() -> Bool { diff --git a/ios/Ascently/Utils/ImageManager.swift b/ios/Ascently/Utils/ImageManager.swift index 22fde9e..5e20ee7 100644 --- a/ios/Ascently/Utils/ImageManager.swift +++ b/ios/Ascently/Utils/ImageManager.swift @@ -5,6 +5,7 @@ import UIKit class ImageManager { static let shared = ImageManager() + private let logTag = "ImageManager" private let thumbnailCache = NSCache() private let fileManager = FileManager.default @@ -30,7 +31,7 @@ class ImageManager { // Final integrity check if !validateStorageIntegrity() { - print("CRITICAL: Storage integrity compromised - attempting emergency recovery") + logError("CRITICAL: Storage integrity compromised - attempting emergency recovery") emergencyImageRestore() } @@ -83,7 +84,7 @@ class ImageManager { return } - print("🔄 Migrating images from OpenClimb to Ascently directory...") + logInfo("🔄 Migrating images from OpenClimb to Ascently directory...") do { // Create parent directory if needed @@ -94,16 +95,16 @@ class ImageManager { // Move the entire directory try fileManager.moveItem(at: legacyDir, to: appSupportDirectory) - print("Successfully migrated image directory from OpenClimb to Ascently") + logInfo("Successfully migrated image directory from OpenClimb to Ascently") } catch { - print("❌ Failed to migrate image directory: \(error)") + logError("Failed to migrate image directory: \(error)") // If move fails, try to copy instead do { try fileManager.copyItem(at: legacyDir, to: appSupportDirectory) - print("Successfully copied image directory from OpenClimb to Ascently") + logInfo("Successfully copied image directory from OpenClimb to Ascently") // Don't remove the old directory in case of issues } catch { - print("❌ Failed to copy image directory: \(error)") + logError("Failed to copy image directory: \(error)") } } } @@ -122,9 +123,9 @@ class ImageManager { attributes: [ .protectionKey: FileProtectionType.completeUntilFirstUserAuthentication ]) - print("Created directory: \(directory.path)") + logInfo("Created directory: \(directory.path)") } catch { - print("ERROR: Failed to create directory \(directory.path): \(error)") + logError("ERROR: Failed to create directory \(directory.path): \(error)") } } } @@ -141,9 +142,9 @@ class ImageManager { var backupURL = backupDirectory try imagesURL.setResourceValues(resourceValues) try backupURL.setResourceValues(resourceValues) - print("Excluded image directories from iCloud backup") + logInfo("Excluded image directories from iCloud backup") } catch { - print("WARNING: Failed to exclude from iCloud backup: \(error)") + logWarning("WARNING: Failed to exclude from iCloud backup: \(error)") } } @@ -167,11 +168,11 @@ class ImageManager { } private func performRobustMigration() { - print("Starting robust image migration system...") + logInfo("Starting robust image migration system...") // Check for interrupted migration if let incompleteState = loadMigrationState() { - print("Detected interrupted migration, resuming...") + logInfo("Detected interrupted migration, resuming...") resumeMigration(from: incompleteState) } else { // Start fresh migration @@ -188,7 +189,7 @@ class ImageManager { private func startNewMigration() { // First check for images in previous Application Support directories if let previousAppSupportImages = findPreviousAppSupportImages() { - print("Found images in previous Application Support directory") + logInfo("Found images in previous Application Support directory") migratePreviousAppSupportImages(from: previousAppSupportImages) return } @@ -198,7 +199,7 @@ class ImageManager { let hasLegacyImportImages = fileManager.fileExists(atPath: legacyImportImagesDirectory.path) guard hasLegacyImages || hasLegacyImportImages else { - print("No legacy images to migrate") + logInfo("No legacy images to migrate") return } @@ -213,7 +214,7 @@ class ImageManager { let legacyFiles = try fileManager.contentsOfDirectory( atPath: legacyImagesDirectory.path) allLegacyFiles.append(contentsOf: legacyFiles) - print("Found \(legacyFiles.count) images in OpenClimbImages") + logInfo("Found \(legacyFiles.count) images in OpenClimbImages") } // Collect files from Documents/images directory @@ -221,10 +222,10 @@ class ImageManager { let importFiles = try fileManager.contentsOfDirectory( atPath: legacyImportImagesDirectory.path) allLegacyFiles.append(contentsOf: importFiles) - print("Found \(importFiles.count) images in Documents/images") + logInfo("Found \(importFiles.count) images in Documents/images") } - print("Total legacy images to migrate: \(allLegacyFiles.count)") + logInfo("Total legacy images to migrate: \(allLegacyFiles.count)") let initialState = MigrationState( version: MigrationState.currentVersion, @@ -239,24 +240,24 @@ class ImageManager { performMigrationWithCheckpoints(files: allLegacyFiles, currentState: initialState) } catch { - print("ERROR: Failed to start migration: \(error)") + logError("ERROR: Failed to start migration: \(error)") } } private func resumeMigration(from state: MigrationState) { - print("Resuming migration from checkpoint...") - print("Progress: \(state.completedFiles.count)/\(state.totalFiles)") + logInfo("Resuming migration from checkpoint...") + logInfo("Progress: \(state.completedFiles.count)/\(state.totalFiles)") do { let legacyFiles = try fileManager.contentsOfDirectory( atPath: legacyImagesDirectory.path) let remainingFiles = legacyFiles.filter { !state.completedFiles.contains($0) } - print("Resuming with \(remainingFiles.count) remaining files") + logInfo("Resuming with \(remainingFiles.count) remaining files") performMigrationWithCheckpoints(files: remainingFiles, currentState: state) } catch { - print("ERROR: Failed to resume migration: \(error)") + logError("ERROR: Failed to resume migration: \(error)") // Fallback: start fresh removeMigrationState() startNewMigration() @@ -323,11 +324,11 @@ class ImageManager { completedFiles.append(fileName) migratedCount += 1 - print("Migrated: \(fileName) (\(migratedCount)/\(currentState.totalFiles))") + logInfo("Migrated: \(fileName) (\(migratedCount)/\(currentState.totalFiles))") } catch { failedCount += 1 - print("ERROR: Failed to migrate \(fileName): \(error)") + logError("ERROR: Failed to migrate \(fileName): \(error)") } // Save checkpoint every 5 files or if interrupted @@ -341,7 +342,7 @@ class ImageManager { lastCheckpoint: Date() ) saveMigrationState(checkpointState) - print("Checkpoint saved: \(completedFiles.count)/\(currentState.totalFiles)") + logInfo("Checkpoint saved: \(completedFiles.count)/\(currentState.totalFiles)") } } } @@ -357,7 +358,7 @@ class ImageManager { ) saveMigrationState(finalState) - print("Migration complete: \(migratedCount) migrated, \(failedCount) failed") + logInfo("Migration complete: \(migratedCount) migrated, \(failedCount) failed") // Clean up legacy directory if no failures if failedCount == 0 { @@ -366,7 +367,7 @@ class ImageManager { } private func verifyMigrationIntegrity() { - print("Verifying migration integrity...") + logInfo("Verifying migration integrity...") var allLegacyFiles = Set() @@ -384,12 +385,12 @@ class ImageManager { allLegacyFiles.formUnion(importFiles) } } catch { - print("ERROR: Failed to read legacy directories: \(error)") + logError("ERROR: Failed to read legacy directories: \(error)") return } guard !allLegacyFiles.isEmpty else { - print("No legacy directories to verify against") + logInfo("No legacy directories to verify against") return } @@ -400,10 +401,10 @@ class ImageManager { let missingFiles = allLegacyFiles.subtracting(migratedFiles) if missingFiles.isEmpty { - print("Migration integrity verified - all files present") + logInfo("Migration integrity verified - all files present") cleanupLegacyDirectory() } else { - print("WARNING: Missing \(missingFiles.count) files, re-triggering migration") + logWarning("WARNING: Missing \(missingFiles.count) files, re-triggering migration") // Re-trigger migration for missing files performMigrationWithCheckpoints( files: Array(missingFiles), @@ -417,16 +418,16 @@ class ImageManager { )) } } catch { - print("ERROR: Failed to verify migration integrity: \(error)") + logError("ERROR: Failed to verify migration integrity: \(error)") } } private func cleanupLegacyDirectory() { do { try fileManager.removeItem(at: legacyImagesDirectory) - print("Cleaned up legacy directory") + logInfo("Cleaned up legacy directory") } catch { - print("WARNING: Failed to clean up legacy directory: \(error)") + logWarning("WARNING: Failed to clean up legacy directory: \(error)") } } @@ -446,16 +447,16 @@ class ImageManager { let data = try Data(contentsOf: migrationStateURL) let state = try JSONDecoder().decode(MigrationState.self, from: data) - // Check if state is too old (more than 1 hour) + // Check if state is too old if Date().timeIntervalSince(state.lastCheckpoint) > 3600 { - print("WARNING: Migration state is stale, starting fresh") + logWarning("WARNING: Migration state is stale, starting fresh") removeMigrationState() return nil } return state.isComplete ? nil : state } catch { - print("ERROR: Failed to load migration state: \(error)") + logError("ERROR: Failed to load migration state: \(error)") removeMigrationState() return nil } @@ -466,7 +467,7 @@ class ImageManager { let data = try JSONEncoder().encode(state) try data.write(to: migrationStateURL) } catch { - print("ERROR: Failed to save migration state: \(error)") + logError("ERROR: Failed to save migration state: \(error)") } } @@ -482,7 +483,7 @@ class ImageManager { private func cleanupMigrationState() { try? fileManager.removeItem(at: migrationStateURL) try? fileManager.removeItem(at: migrationLockURL) - print("Cleaned up migration state files") + logInfo("Cleaned up migration state files") } func saveImageData(_ data: Data, withName name: String? = nil) -> String? { @@ -497,10 +498,10 @@ class ImageManager { // Create backup copy try data.write(to: backupPath) - print("Saved image with backup: \(fileName)") + logInfo("Saved image with backup: \(fileName)") return fileName } catch { - print("ERROR: Failed to save image \(fileName): \(error)") + logError("ERROR: Failed to save image \(fileName): \(error)") return nil } } @@ -520,7 +521,7 @@ class ImageManager { if fileManager.fileExists(atPath: backupPath.path), let data = try? Data(contentsOf: backupPath) { - print("Restored image from backup: \(path)") + logInfo("Restored image from backup: \(path)") // Restore to primary location try? data.write(to: URL(fileURLWithPath: primaryPath)) @@ -595,7 +596,7 @@ class ImageManager { do { try fileManager.removeItem(atPath: primaryPath) } catch { - print("ERROR: Failed to delete primary image at \(primaryPath): \(error)") + logError("ERROR: Failed to delete primary image at \(primaryPath): \(error)") success = false } } @@ -605,7 +606,7 @@ class ImageManager { do { try fileManager.removeItem(at: backupPath) } catch { - print("ERROR: Failed to delete backup image at \(backupPath.path): \(error)") + logError("ERROR: Failed to delete backup image at \(backupPath.path): \(error)") success = false } } @@ -642,7 +643,7 @@ class ImageManager { } func performMaintenance() { - print("Starting image maintenance...") + logInfo("Starting image maintenance...") syncBackups() validateImageIntegrity() @@ -660,11 +661,11 @@ class ImageManager { let backupPath = backupDirectory.appendingPathComponent(fileName) try? fileManager.copyItem(at: primaryPath, to: backupPath) - print("Created missing backup for: \(fileName)") + logInfo("Created missing backup for: \(fileName)") } } } catch { - print("ERROR: Failed to sync backups: \(error)") + logError("ERROR: Failed to sync backups: \(error)") } } @@ -683,14 +684,14 @@ class ImageManager { } } - print("Validated \(validFiles) of \(files.count) image files") + logInfo("Validated \(validFiles) of \(files.count) image files") } catch { - print("ERROR: Failed to validate images: \(error)") + logError("ERROR: Failed to validate images: \(error)") } } private func cleanupOrphanedFiles() { - print("Cleanup would require coordination with data manager") + logInfo("Cleanup would require coordination with data manager") } func getStorageInfo() -> (primaryCount: Int, backupCount: Int, totalSize: Int64) { @@ -718,7 +719,7 @@ class ImageManager { private func logDirectoryInfo() { let info = getStorageInfo() let previousDir = findPreviousAppSupportImages() - print( + logInfo( """ Ascently Image Storage: - App Support: \(appSupportDirectory.path) @@ -732,7 +733,7 @@ class ImageManager { } func forceRecoveryMigration() { - print("FORCE RECOVERY: Starting manual migration recovery...") + logInfo("FORCE RECOVERY: Starting manual migration recovery...") // Remove any stale state removeMigrationState() @@ -741,7 +742,7 @@ class ImageManager { // Force fresh migration startNewMigration() - print("FORCE RECOVERY: Migration recovery completed") + logInfo("FORCE RECOVERY: Migration recovery completed") } func saveImportedImage(_ imageData: Data, filename: String) throws -> String { @@ -754,12 +755,12 @@ class ImageManager { // Create backup try? imageData.write(to: backupPath) - print("Imported image: \(filename)") + logInfo("Imported image: \(filename)") return filename } func emergencyImageRestore() { - print("EMERGENCY: Attempting image restoration...") + logError("EMERGENCY: Attempting image restoration...") // Try to restore from backup directory do { @@ -777,14 +778,14 @@ class ImageManager { } } - print("EMERGENCY: Restored \(restoredCount) images from backup") + logError("EMERGENCY: Restored \(restoredCount) images from backup") } catch { - print("EMERGENCY: Failed to restore from backup: \(error)") + logError("EMERGENCY: Failed to restore from backup: \(error)") } // Try previous Application Support directories first if let previousAppSupportImages = findPreviousAppSupportImages() { - print("EMERGENCY: Found previous Application Support images, migrating...") + logError("EMERGENCY: Found previous Application Support images, migrating...") migratePreviousAppSupportImages(from: previousAppSupportImages) return } @@ -793,23 +794,21 @@ class ImageManager { if fileManager.fileExists(atPath: legacyImagesDirectory.path) || fileManager.fileExists(atPath: legacyImportImagesDirectory.path) { - print("EMERGENCY: Attempting legacy migration as fallback...") + logError("EMERGENCY: Attempting legacy migration as fallback...") forceRecoveryMigration() } } func debugSafeInitialization() -> Bool { - print("DEBUG SAFE: Performing debug-safe initialization check...") + logDebug("DEBUG SAFE: Performing debug-safe initialization check...") // Check if we're in a debug environment #if DEBUG - print("DEBUG SAFE: Debug environment detected") + logDebug("DEBUG SAFE: Debug environment detected") - // Check for interrupted migration more aggressively if fileManager.fileExists(atPath: migrationLockURL.path) { - print("DEBUG SAFE: Found migration lock - likely debug interruption") + logDebug("DEBUG SAFE: Found migration lock - likely debug interruption") - // Give extra time for file system to stabilize Thread.sleep(forTimeInterval: 1.0) // Try emergency recovery @@ -829,14 +828,14 @@ class ImageManager { ((try? fileManager.contentsOfDirectory(atPath: backupDirectory.path)) ?? []).count > 0 if primaryEmpty && backupHasFiles { - print("DEBUG SAFE: Primary empty but backup exists - restoring") + logDebug("DEBUG SAFE: Primary empty but backup exists - restoring") emergencyImageRestore() return true } // Check if primary storage is empty but previous Application Support images exist if primaryEmpty, let previousAppSupportImages = findPreviousAppSupportImages() { - print("DEBUG SAFE: Primary empty but found previous Application Support images") + logDebug("DEBUG SAFE: Primary empty but found previous Application Support images") migratePreviousAppSupportImages(from: previousAppSupportImages) return true } @@ -852,7 +851,7 @@ class ImageManager { // Check if we have more backups than primary files (sign of corruption) if backupFiles.count > primaryFiles.count + 5 { - print( + logInfo( "WARNING INTEGRITY: Backup count significantly exceeds primary - potential corruption" ) return false @@ -860,7 +859,7 @@ class ImageManager { // Check if primary is completely empty but we have data elsewhere if primaryFiles.isEmpty && !backupFiles.isEmpty { - print("WARNING INTEGRITY: Primary storage empty but backups exist") + logWarning("WARNING INTEGRITY: Primary storage empty but backups exist") return false } @@ -874,7 +873,7 @@ class ImageManager { for: .applicationSupportDirectory, in: .userDomainMask ).first else { - print("ERROR: Could not access Application Support directory") + logError("ERROR: Could not access Application Support directory") return nil } @@ -908,13 +907,13 @@ class ImageManager { } } } catch { - print("ERROR: Error scanning for previous Application Support directories: \(error)") + logError("ERROR: Error scanning for previous Application Support directories: \(error)") } return nil } private func migratePreviousAppSupportImages(from sourceDirectory: URL) { - print("Migrating images from previous Application Support directory") + logInfo("Migrating images from previous Application Support directory") do { let imageFiles = try fileManager.contentsOfDirectory(atPath: sourceDirectory.path) @@ -937,18 +936,33 @@ class ImageManager { // Create backup try? fileManager.copyItem(at: sourcePath, to: backupPath) - print("Migrated: \(fileName)") + logInfo("Migrated: \(fileName)") } catch { - print("ERROR: Failed to migrate \(fileName): \(error)") + logError("ERROR: Failed to migrate \(fileName): \(error)") } } } - print("Completed migration from previous Application Support directory") + logInfo("Completed migration from previous Application Support directory") } catch { - print("ERROR: Failed to migrate from previous Application Support: \(error)") + logError("ERROR: Failed to migrate from previous Application Support: \(error)") } } + private func logInfo(_ message: String) { + AppLogger.info(message, tag: logTag) + } + + private func logWarning(_ message: String) { + AppLogger.warning(message, tag: logTag) + } + + private func logError(_ message: String) { + AppLogger.error(message, tag: logTag) + } + + private func logDebug(_ message: String) { + AppLogger.debug(message, tag: logTag) + } } diff --git a/ios/Ascently/Utils/ZipUtils.swift b/ios/Ascently/Utils/ZipUtils.swift index d47b1bf..9ca275f 100644 --- a/ios/Ascently/Utils/ZipUtils.swift +++ b/ios/Ascently/Utils/ZipUtils.swift @@ -4,6 +4,8 @@ import zlib struct ZipUtils { + private static let logTag = "ZipUtils" + private static let DATA_JSON_FILENAME = "data.json" private static let IMAGES_DIR_NAME = "images" private static let METADATA_FILENAME = "metadata.txt" @@ -49,7 +51,7 @@ struct ZipUtils { ) // Process images in batches for better performance - print("Processing \(referencedImagePaths.count) images for export") + logInfo("Processing \(referencedImagePaths.count) images for export") var successfulImages = 0 let batchSize = 10 let sortedPaths = Array(referencedImagePaths).sorted() @@ -59,7 +61,7 @@ struct ZipUtils { for (index, imagePath) in sortedPaths.enumerated() { if index % batchSize == 0 { - print("Processing images \(index)/\(sortedPaths.count)") + logInfo("Processing images \(index)/\(sortedPaths.count)") } let imageURL = URL(fileURLWithPath: imagePath) @@ -83,11 +85,11 @@ struct ZipUtils { successfulImages += 1 } } catch { - print("Failed to read image: \(imageName)") + logWarning("Failed to read image: \(imageName)") } } - print("Export: included \(successfulImages)/\(referencedImagePaths.count) images") + logInfo("Export: included \(successfulImages)/\(referencedImagePaths.count) images") // Build central directory centralDirectory.reserveCapacity(fileEntries.count * 100) // Estimate 100 bytes per entry @@ -114,7 +116,7 @@ struct ZipUtils { } static func extractImportZip(data: Data) throws -> ImportResult { - print("Starting ZIP extraction - data size: \(data.count) bytes") + logInfo("Starting ZIP extraction - data size: \(data.count) bytes") return try extractUsingCustomParser(data: data) } @@ -127,10 +129,10 @@ struct ZipUtils { let zipEntries: [ZipEntry] do { zipEntries = try parseZipFile(data: data) - print("Successfully parsed ZIP file with \(zipEntries.count) entries") + logInfo("Successfully parsed ZIP file with \(zipEntries.count) entries") } catch { - print("Failed to parse ZIP file: \(error)") - print( + logError("Failed to parse ZIP file: \(error)") + logError( "ZIP data header: \(data.prefix(20).map { String(format: "%02X", $0) }.joined(separator: " "))" ) throw NSError( @@ -142,24 +144,24 @@ struct ZipUtils { ) } - print("Found \(zipEntries.count) entries in ZIP file:") + logInfo("Found \(zipEntries.count) entries in ZIP file:") for entry in zipEntries { - print(" - \(entry.filename) (size: \(entry.data.count) bytes)") + logInfo(" - \(entry.filename) (size: \(entry.data.count) bytes)") } for entry in zipEntries { switch entry.filename { case METADATA_FILENAME: metadataContent = String(data: entry.data, encoding: .utf8) ?? "" - print("Found metadata: \(metadataContent.prefix(100))...") + logInfo("Found metadata: \(metadataContent.prefix(100))...") case DATA_JSON_FILENAME: jsonContent = String(data: entry.data, encoding: .utf8) ?? "" - print("Found data.json with \(jsonContent.count) characters") + logInfo("Found data.json with \(jsonContent.count) characters") if jsonContent.isEmpty { - print("WARNING: data.json is empty!") + logWarning("WARNING: data.json is empty!") } else { - print("data.json preview: \(jsonContent.prefix(200))...") + logInfo("data.json preview: \(jsonContent.prefix(200))...") } default: @@ -173,17 +175,17 @@ struct ZipUtils { entry.data, filename: originalFilename) importedImagePaths[originalFilename] = filename } catch { - print("Failed to import image \(originalFilename): \(error)") + logError("Failed to import image \(originalFilename): \(error)") } } } } guard !jsonContent.isEmpty else { - print("ERROR: data.json not found or empty") - print("Available files in ZIP:") + logError("ERROR: data.json not found or empty") + logInfo("Available files in ZIP:") for entry in zipEntries { - print(" - \(entry.filename)") + logInfo(" - \(entry.filename)") } throw NSError( domain: "ImportError", code: 1, @@ -194,13 +196,25 @@ struct ZipUtils { ) } - print("Import extraction completed: \(importedImagePaths.count) images processed") + logInfo("Import extraction completed: \(importedImagePaths.count) images processed") return ImportResult( jsonData: jsonContent.data(using: .utf8) ?? Data(), imagePathMapping: importedImagePaths ) } + private static func logInfo(_ message: String) { + AppLogger.info(message, tag: logTag) + } + + private static func logWarning(_ message: String) { + AppLogger.warning(message, tag: logTag) + } + + private static func logError(_ message: String) { + AppLogger.error(message, tag: logTag) + } + private static func createMetadata( exportData: ClimbDataBackup, referencedImagePaths: Set diff --git a/ios/Ascently/ViewModels/ClimbingDataManager.swift b/ios/Ascently/ViewModels/ClimbingDataManager.swift index 67d3f96..1779540 100644 --- a/ios/Ascently/ViewModels/ClimbingDataManager.swift +++ b/ios/Ascently/ViewModels/ClimbingDataManager.swift @@ -38,7 +38,6 @@ class ClimbingDataManager: ObservableObject { let healthKitService = HealthKitService.shared @Published var isSyncing = false - private enum Keys { static let gyms = "ascently_gyms" static let problems = "ascently_problems" @@ -115,7 +114,8 @@ class ClimbingDataManager: ObservableObject { return } - print("Starting migration from OpenClimb to Ascently keys...") + AppLogger.info( + "Starting migration from OpenClimb to Ascently keys...", tag: LogTag.climbingData) var migrationCount = 0 // Migrate each data type if it exists in old format but not in new format @@ -135,7 +135,7 @@ class ClimbingDataManager: ObservableObject { userDefaults.set(oldData, forKey: newKey) userDefaults.removeObject(forKey: oldKey) migrationCount += 1 - print("✅ Migrated: \(oldKey) → \(newKey)") + AppLogger.info("Migrated: \(oldKey) → \(newKey)", tag: LogTag.climbingData) } } @@ -147,7 +147,8 @@ class ClimbingDataManager: ObservableObject { { sharedDefaults.set(oldData, forKey: newKey) sharedDefaults.removeObject(forKey: oldKey) - print("✅ Migrated shared: \(oldKey) → \(newKey)") + AppLogger.info( + "Migrated shared: \(oldKey) → \(newKey)", tag: LogTag.climbingData) } } } @@ -161,18 +162,19 @@ class ClimbingDataManager: ObservableObject { userDefaults.set(lastModified, forKey: newDataStateKey) userDefaults.removeObject(forKey: legacyDataStateKey) migrationCount += 1 - print("✅ Migrated data state timestamp") + AppLogger.info("Migrated data state timestamp", tag: LogTag.climbingData) } // Mark migration as completed userDefaults.set(true, forKey: migrationKey) if migrationCount > 0 { - print( - "Migration completed! Migrated \(migrationCount) data items from OpenClimb to Ascently" + AppLogger.info( + "Migration completed! Migrated \(migrationCount) data items from OpenClimb to Ascently", + tag: LogTag.climbingData ) } else { - print("No OpenClimb data found to migrate") + AppLogger.info("No OpenClimb data found to migrate", tag: LogTag.climbingData) } } @@ -441,7 +443,9 @@ class ClimbingDataManager: ObservableObject { startDate: newSession.startTime ?? Date(), sessionId: newSession.id) } catch { - print("Failed to start HealthKit workout: \(error.localizedDescription)") + AppLogger.error( + "Failed to start HealthKit workout: \(error.localizedDescription)", + tag: LogTag.climbingData) } } } @@ -477,7 +481,9 @@ class ClimbingDataManager: ObservableObject { try await healthKitService.endWorkout( endDate: completedSession.endTime ?? Date()) } catch { - print("Failed to end HealthKit workout: \(error.localizedDescription)") + AppLogger.error( + "Failed to end HealthKit workout: \(error.localizedDescription)", + tag: LogTag.climbingData) } } } @@ -667,7 +673,9 @@ class ClimbingDataManager: ObservableObject { } if !orphanedAttempts.isEmpty { - print("🧹 Cleaning up \(orphanedAttempts.count) orphaned attempts") + AppLogger.info( + "🧹 Cleaning up \(orphanedAttempts.count) orphaned attempts", + tag: LogTag.climbingData) // Track these as deleted to prevent sync from re-introducing them for attempt in orphanedAttempts { @@ -693,14 +701,15 @@ class ClimbingDataManager: ObservableObject { if seenAttempts.contains(key) { duplicateIds.append(attempt.id) - print("🧹 Found duplicate attempt: \(attempt.id)") + AppLogger.info("🧹 Found duplicate attempt: \(attempt.id)", tag: LogTag.climbingData) } else { seenAttempts.insert(key) } } if !duplicateIds.isEmpty { - print("🧹 Removing \(duplicateIds.count) duplicate attempts") + AppLogger.info( + "🧹 Removing \(duplicateIds.count) duplicate attempts", tag: LogTag.climbingData) // Track duplicates as deleted for attemptId in duplicateIds { @@ -714,8 +723,9 @@ class ClimbingDataManager: ObservableObject { if initialAttemptCount != attempts.count { saveAttempts() let removedCount = initialAttemptCount - attempts.count - print( - "Cleanup complete. Removed \(removedCount) attempts. Remaining: \(attempts.count)" + AppLogger.info( + "Cleanup complete. Removed \(removedCount) attempts. Remaining: \(attempts.count)", + tag: LogTag.climbingData ) } @@ -725,7 +735,9 @@ class ClimbingDataManager: ObservableObject { } if !orphanedProblems.isEmpty { - print("🧹 Cleaning up \(orphanedProblems.count) orphaned problems") + AppLogger.info( + "🧹 Cleaning up \(orphanedProblems.count) orphaned problems", + tag: LogTag.climbingData) for problem in orphanedProblems { trackDeletion(itemId: problem.id.uuidString, itemType: "problem") @@ -744,7 +756,9 @@ class ClimbingDataManager: ObservableObject { } if !orphanedSessions.isEmpty { - print("🧹 Cleaning up \(orphanedSessions.count) orphaned sessions") + AppLogger.info( + "🧹 Cleaning up \(orphanedSessions.count) orphaned sessions", + tag: LogTag.climbingData) for session in orphanedSessions { trackDeletion(itemId: session.id.uuidString, itemType: "session") @@ -844,19 +858,29 @@ class ClimbingDataManager: ObservableObject { let problemsForImages = problems // Move heavy I/O operations to background thread + let logTag = LogTag.climbingData let zipData = try await Task.detached(priority: .userInitiated) { // Collect actual image paths from disk for the ZIP - let referencedImagePaths = await Self.collectReferencedImagePathsStatic( + let imageSummary = Self.collectReferencedImagePathsStatic( problems: problemsForImages, imagesDirectory: imagesDirectory) - print("Starting export with \(referencedImagePaths.count) images") + let referencedImagePaths = imageSummary.paths + + await MainActor.run { + AppLogger.info( + "Starting export with \(referencedImagePaths.count) images (\(imageSummary.missingCount) missing)", + tag: logTag) + } let zipData = try await ZipUtils.createExportZip( exportData: exportData, referencedImagePaths: referencedImagePaths ) - print("Export completed successfully") + await MainActor.run { + AppLogger.info("Export completed successfully", tag: logTag) + } + return (zipData, referencedImagePaths.count) }.value @@ -865,7 +889,7 @@ class ClimbingDataManager: ObservableObject { return zipData.0 } catch { let errorMessage = "Export failed: \(error.localizedDescription)" - print("ERROR: \(errorMessage)") + AppLogger.error("ERROR: \(errorMessage)", tag: LogTag.climbingData) setError(errorMessage) return nil } @@ -894,16 +918,24 @@ class ClimbingDataManager: ObservableObject { return Date() } - print("Raw JSON content preview:") - print(String(decoding: importResult.jsonData.prefix(500), as: UTF8.self) + "...") + AppLogger.debug("Raw JSON content preview:", tag: LogTag.climbingData) + AppLogger.debug( + String(decoding: importResult.jsonData.prefix(500), as: UTF8.self) + "...", + tag: LogTag.climbingData + ) let importData = try decoder.decode(ClimbDataBackup.self, from: importResult.jsonData) - print("Successfully decoded import data:") - print("- Gyms: \(importData.gyms.count)") - print("- Problems: \(importData.problems.count)") - print("- Sessions: \(importData.sessions.count)") - print("- Attempts: \(importData.attempts.count)") + AppLogger.info( + """ + Successfully decoded import data: + - Gyms: \(importData.gyms.count) + - Problems: \(importData.problems.count) + - Sessions: \(importData.sessions.count) + - Attempts: \(importData.attempts.count) + """, + tag: LogTag.climbingData + ) try validateImportData(importData) @@ -960,14 +992,20 @@ class ClimbingDataManager: ObservableObject { extension ClimbingDataManager { private func collectReferencedImagePaths() -> Set { let imagesDirectory = ImageManager.shared.imagesDirectory.path - return Self.collectReferencedImagePathsStatic( + let result = Self.collectReferencedImagePathsStatic( problems: problems, imagesDirectory: imagesDirectory) + + AppLogger.info( + "Export: Collected \(result.paths.count) images (\(result.missingCount) missing)", + tag: LogTag.climbingData) + + return result.paths } - private static func collectReferencedImagePathsStatic( + nonisolated private static func collectReferencedImagePathsStatic( problems: [Problem], imagesDirectory: String - ) -> Set { + ) -> (paths: Set, missingCount: Int) { var imagePaths = Set() var missingCount = 0 @@ -988,8 +1026,7 @@ extension ClimbingDataManager { } } - print("Export: Collected \(imagePaths.count) images (\(missingCount) missing)") - return imagePaths + return (imagePaths, missingCount) } private func updateProblemImagePaths( @@ -1030,11 +1067,14 @@ extension ClimbingDataManager { } deterministicImagePaths.append(deterministicName) - print("Renamed imported image: \(tempFileName) → \(deterministicName)") + AppLogger.debug( + "Renamed imported image: \(tempFileName) → \(deterministicName)", + tag: LogTag.climbingData) } } catch { - print( - "Failed to rename imported image \(tempFileName) to \(deterministicName): \(error)" + AppLogger.error( + "Failed to rename imported image \(tempFileName) to \(deterministicName): \(error)", + tag: LogTag.climbingData ) deterministicImagePaths.append(tempFileName) } @@ -1078,7 +1118,8 @@ extension ClimbingDataManager { if needsUpdate { problems = updatedProblems saveProblems() - print("Migrated image paths for \(problems.count) problems") + AppLogger.info( + "Migrated image paths for \(problems.count) problems", tag: LogTag.climbingData) } } @@ -1089,8 +1130,9 @@ extension ClimbingDataManager { // Log storage information for debugging let info = await ImageManager.shared.getStorageInfo() - print( - "Image Storage: \(info.primaryCount) primary, \(info.backupCount) backup, \(info.totalSize / 1024)KB total" + await AppLogger.debug( + "Image Storage: \(info.primaryCount) primary, \(info.backupCount) backup, \(info.totalSize / 1024)KB total", + tag: LogTag.climbingData ) }.value } @@ -1128,7 +1170,9 @@ extension ClimbingDataManager { } if !orphanedFiles.isEmpty { - print("Cleaned up \(orphanedFiles.count) orphaned image files") + AppLogger.info( + "Cleaned up \(orphanedFiles.count) orphaned image files", + tag: LogTag.climbingData) } } } @@ -1145,7 +1189,7 @@ extension ClimbingDataManager { } func forceImageRecovery() { - print("User initiated force image recovery") + AppLogger.info("User initiated force image recovery", tag: LogTag.climbingData) ImageManager.shared.forceRecoveryMigration() // Refresh the UI after recovery @@ -1153,7 +1197,7 @@ extension ClimbingDataManager { } func emergencyImageRestore() { - print("User initiated emergency image restore") + AppLogger.info("User initiated emergency image restore", tag: LogTag.climbingData) ImageManager.shared.emergencyImageRestore() // Refresh the UI after restore @@ -1179,15 +1223,15 @@ extension ClimbingDataManager { } func testLiveActivity() { - print("🧪 Testing Live Activity functionality...") + AppLogger.info("Testing Live Activity functionality...", tag: LogTag.climbingData) // Check Live Activity availability let status = LiveActivityManager.shared.checkLiveActivityAvailability() - print(status) + AppLogger.info(status, tag: LogTag.climbingData) // Test with dummy data if we have a gym guard let testGym = gyms.first else { - print("ERROR: No gyms available for testing") + AppLogger.error("No gyms available for testing", tag: LogTag.climbingData) return } @@ -1218,15 +1262,18 @@ extension ClimbingDataManager { // Only restart if session is actually active guard activeSession.status == .active else { - print( - "WARNING: Session exists but is not active (status: \(activeSession.status)), ending Live Activity" + AppLogger.warning( + "Session exists but is not active (status: \(activeSession.status)), ending Live Activity", + tag: LogTag.climbingData ) await LiveActivityManager.shared.endLiveActivity() return } if let gym = gym(withId: activeSession.gymId) { - print("Checking Live Activity for active session at \(gym.name)") + AppLogger.info( + "Checking Live Activity for active session at \(gym.name)", tag: LogTag.climbingData + ) // First cleanup any dismissed activities await LiveActivityManager.shared.cleanupDismissedActivities() @@ -1241,7 +1288,9 @@ extension ClimbingDataManager { /// Call this when app becomes active to check for Live Activity restart func onAppBecomeActive() { - print("App became active - checking Live Activity status") + let logTag = "ClimbingData" + AppLogger.info( + "App became active - checking Live Activity status", tag: logTag) Task { await checkAndRestartLiveActivity() } @@ -1249,35 +1298,46 @@ extension ClimbingDataManager { /// Call this when app enters background to update Live Activity func onAppEnterBackground() { - print("App entering background - updating Live Activity if needed") + let logTag = "ClimbingData" + AppLogger.info( + "App entering background - updating Live Activity if needed", tag: logTag) Task { await updateLiveActivityData() } } /// Setup notifications for Live Activity events - private func setupLiveActivityNotifications() { + nonisolated private func setupLiveActivityNotifications() { + let notificationName = Notification.Name("liveActivityDismissed") + let logTag = "ClimbingData" + liveActivityObserver = NotificationCenter.default.addObserver( - forName: .liveActivityDismissed, + forName: notificationName, object: nil, queue: .main ) { [weak self] _ in - print("🔔 Received Live Activity dismissed notification - attempting restart") Task { @MainActor in + AppLogger.info( + "Received Live Activity dismissed notification - attempting restart", + tag: logTag) await self?.handleLiveActivityDismissed() } } } - private func setupMigrationNotifications() { + nonisolated private func setupMigrationNotifications() { + let logTag = "ClimbingData" + migrationObserver = NotificationCenter.default.addObserver( forName: NSNotification.Name("ImageMigrationCompleted"), object: nil, queue: .main ) { [weak self] notification in if let updateCount = notification.userInfo?["updateCount"] as? Int { - print("🔔 Image migration completed with \(updateCount) updates - reloading data") Task { @MainActor in + AppLogger.info( + "Image migration completed with \(updateCount) updates - reloading data", + tag: logTag) self?.loadProblems() } } @@ -1293,7 +1353,9 @@ extension ClimbingDataManager { return } - print("Attempting to restart dismissed Live Activity for \(gym.name)") + AppLogger.info( + "Attempting to restart dismissed Live Activity for \(gym.name)", + tag: LogTag.climbingData) // Wait a bit before restarting to avoid frequency limits try? await Task.sleep(nanoseconds: 2_000_000_000) // 2 seconds @@ -1333,11 +1395,20 @@ extension ClimbingDataManager { activeSession.status == .active, let gym = gym(withId: activeSession.gymId) else { - print("WARNING: Live Activity update skipped - no active session or gym") + AppLogger.warning( + "Live Activity update skipped - no active session or gym", + tag: LogTag.climbingData + ) if let session = activeSession { - print(" Session ID: \(session.id)") - print(" Session Status: \(session.status)") - print(" Gym ID: \(session.gymId)") + AppLogger.debug( + """ + Skipped session details: + Session ID: \(session.id) + Session Status: \(session.status) + Gym ID: \(session.gymId) + """, + tag: LogTag.climbingData + ) } return } @@ -1357,14 +1428,17 @@ extension ClimbingDataManager { elapsedInterval = 0 } - print("Live Activity Update Debug:") - print(" Session ID: \(activeSession.id)") - print(" Gym: \(gym.name)") - print(" Total attempts in session: \(totalAttempts)") - print(" Completed problems: \(completedProblems)") - print(" Elapsed time: \(elapsedInterval) seconds") - print( - " All attempts for session: \(attemptsForSession.map { "\($0.result) - Problem: \($0.problemId)" })" + AppLogger.debug( + """ + Live Activity Update Debug: + Session ID: \(activeSession.id) + Gym: \(gym.name) + Total attempts in session: \(totalAttempts) + Completed problems: \(completedProblems) + Elapsed time: \(elapsedInterval) seconds + All attempts for session: \(attemptsForSession.map { "\($0.result) - Problem: \($0.problemId)" }) + """, + tag: LogTag.climbingData ) Task { diff --git a/ios/Ascently/ViewModels/LiveActivityManager.swift b/ios/Ascently/ViewModels/LiveActivityManager.swift index 60ad654..3bce362 100644 --- a/ios/Ascently/ViewModels/LiveActivityManager.swift +++ b/ios/Ascently/ViewModels/LiveActivityManager.swift @@ -8,6 +8,7 @@ extension Notification.Name { @MainActor final class LiveActivityManager { static let shared = LiveActivityManager() + private static let logTag = "LiveActivity" private init() {} nonisolated(unsafe) private var currentActivity: Activity? @@ -30,11 +31,12 @@ final class LiveActivityManager { let isStillActive = activities.contains { $0.id == currentActivity.id } if isStillActive { - print("Live Activity still running: \(currentActivity.id)") + AppLogger.debug("Live Activity still running: \(currentActivity.id)", tag: Self.logTag) return } else { - print( - "WARNING: Tracked Live Activity \(currentActivity.id) was dismissed, clearing reference" + AppLogger.warning( + "Tracked Live Activity \(currentActivity.id) was dismissed, clearing reference", + tag: Self.logTag ) self.currentActivity = nil } @@ -43,18 +45,18 @@ final class LiveActivityManager { // Check if there are ANY active Live Activities for this session let existingActivities = Activity.activities if let existingActivity = existingActivities.first { - print("Found existing Live Activity: \(existingActivity.id), using it") + AppLogger.info("Found existing Live Activity: \(existingActivity.id), using it", tag: Self.logTag) self.currentActivity = existingActivity return } - print("No Live Activity found, restarting for existing session") + AppLogger.info("No Live Activity found, restarting for existing session", tag: Self.logTag) await startLiveActivity(for: activeSession, gymName: gymName) } /// Call this when a ClimbSession starts to begin a Live Activity func startLiveActivity(for session: ClimbSession, gymName: String) async { - print("Starting Live Activity for gym: \(gymName)") + AppLogger.info("Starting Live Activity for gym: \(gymName)", tag: Self.logTag) await endLiveActivity() @@ -80,18 +82,26 @@ final class LiveActivityManager { pushType: nil ) self.currentActivity = activity - print("Live Activity started successfully: \(activity.id)") + AppLogger.info("Live Activity started successfully: \(activity.id)", tag: Self.logTag) } catch { - print("ERROR: Failed to start live activity: \(error)") - print("Error details: \(error.localizedDescription)") + AppLogger.error( + """ + Failed to start live activity: \(error) + Details: \(error.localizedDescription) + """, + tag: Self.logTag + ) // Check specific error types if error.localizedDescription.contains("authorization") { - print("Authorization error - check Live Activity permissions in Settings") + AppLogger.warning( + "Authorization error - check Live Activity permissions in Settings", + tag: Self.logTag + ) } else if error.localizedDescription.contains("content") { - print("Content error - check ActivityAttributes structure") + AppLogger.warning("Content error - check ActivityAttributes structure", tag: Self.logTag) } else if error.localizedDescription.contains("frequencyLimited") { - print("Frequency limited - too many Live Activities started recently") + AppLogger.warning("Frequency limited - too many Live Activities started recently", tag: Self.logTag) } } } @@ -100,7 +110,7 @@ final class LiveActivityManager { func updateLiveActivity(elapsed: TimeInterval, totalAttempts: Int, completedProblems: Int) async { guard let currentActivity = currentActivity else { - print("WARNING: No current activity to update") + AppLogger.warning("No current activity to update", tag: Self.logTag) return } @@ -109,15 +119,17 @@ final class LiveActivityManager { let isStillActive = activities.contains { $0.id == currentActivity.id } if !isStillActive { - print( - "WARNING: Tracked Live Activity \(currentActivity.id) is no longer active, clearing reference" + AppLogger.warning( + "Tracked Live Activity \(currentActivity.id) is no longer active, clearing reference", + tag: Self.logTag ) self.currentActivity = nil return } - print( - "Updating Live Activity - Attempts: \(totalAttempts), Completed: \(completedProblems)" + AppLogger.debug( + "Updating Live Activity - Attempts: \(totalAttempts), Completed: \(completedProblems)", + tag: Self.logTag ) let updatedContentState = SessionActivityAttributes.ContentState( @@ -137,26 +149,26 @@ final class LiveActivityManager { // First end the tracked activity if it exists if let currentActivity { - print("Ending tracked Live Activity: \(currentActivity.id)") + AppLogger.info("Ending tracked Live Activity: \(currentActivity.id)", tag: Self.logTag) nonisolated(unsafe) let activity = currentActivity await activity.end(nil, dismissalPolicy: .immediate) self.currentActivity = nil - print("Tracked Live Activity ended successfully") + AppLogger.info("Tracked Live Activity ended successfully", tag: Self.logTag) } // Force end ALL active activities of our type to ensure cleanup - print("Checking for any remaining active activities...") + AppLogger.debug("Checking for any remaining active activities...", tag: Self.logTag) let activities = Activity.activities if activities.isEmpty { - print("No additional activities found") + AppLogger.debug("No additional activities found", tag: Self.logTag) } else { - print("Found \(activities.count) additional active activities, ending them...") + AppLogger.info("Found \(activities.count) additional active activities, ending them...", tag: Self.logTag) for activity in activities { - print("Force ending activity: \(activity.id)") + AppLogger.debug("Force ending activity: \(activity.id)", tag: Self.logTag) await activity.end(nil, dismissalPolicy: .immediate) } - print("All Live Activities ended successfully") + AppLogger.info("All Live Activities ended successfully", tag: Self.logTag) } } @@ -174,7 +186,7 @@ final class LiveActivityManager { • All Active Activities: \(allActivities.count) """ - print(message) + AppLogger.info(message, tag: Self.logTag) return message } @@ -185,7 +197,7 @@ final class LiveActivityManager { if let currentActivity = currentActivity { let isStillActive = activities.contains { $0.id == currentActivity.id } if !isStillActive { - print("Cleaning up dismissed Live Activity: \(currentActivity.id)") + AppLogger.info("Cleaning up dismissed Live Activity: \(currentActivity.id)", tag: Self.logTag) self.currentActivity = nil } } @@ -195,7 +207,7 @@ final class LiveActivityManager { func startHealthChecks() { stopHealthChecks() // Stop any existing timer - print("🩺 Starting Live Activity health checks") + AppLogger.debug("🩺 Starting Live Activity health checks", tag: Self.logTag) healthCheckTimer = Timer.scheduledTimer(withTimeInterval: 30.0, repeats: true) { [weak self] _ in Task { @MainActor [weak self] in @@ -208,7 +220,7 @@ final class LiveActivityManager { func stopHealthChecks() { healthCheckTimer?.invalidate() healthCheckTimer = nil - print("Stopped Live Activity health checks") + AppLogger.debug("Stopped Live Activity health checks", tag: Self.logTag) } /// Perform a health check on the current Live Activity @@ -221,14 +233,14 @@ final class LiveActivityManager { // Only perform health check if it's been at least 25 seconds guard timeSinceLastCheck >= 25 else { return } - print("🩺 Performing Live Activity health check") + AppLogger.debug("🩺 Performing Live Activity health check", tag: Self.logTag) lastHealthCheck = now let activities = Activity.activities let isStillActive = activities.contains { $0.id == currentActivity.id } if !isStillActive { - print("Health check failed - Live Activity was dismissed") + AppLogger.warning("Health check failed - Live Activity was dismissed", tag: Self.logTag) self.currentActivity = nil // Notify that we need to restart @@ -237,7 +249,7 @@ final class LiveActivityManager { object: nil ) } else { - print("Live Activity health check passed") + AppLogger.debug("Live Activity health check passed", tag: Self.logTag) } } diff --git a/ios/Ascently/Views/LiveActivityDebugView.swift b/ios/Ascently/Views/LiveActivityDebugView.swift index cd7c8fd..86e79e1 100644 --- a/ios/Ascently/Views/LiveActivityDebugView.swift +++ b/ios/Ascently/Views/LiveActivityDebugView.swift @@ -196,7 +196,7 @@ struct LiveActivityDebugView: View { } isTestRunning = true - appendDebugOutput("🧪 Starting Live Activity test...") + appendDebugOutput("Starting Live Activity test...") Task { defer { diff --git a/ios/Ascently/Views/ProblemsView.swift b/ios/Ascently/Views/ProblemsView.swift index 5d59bde..a36e3c7 100644 --- a/ios/Ascently/Views/ProblemsView.swift +++ b/ios/Ascently/Views/ProblemsView.swift @@ -317,7 +317,6 @@ struct ProblemsList: View { } Button { - // Use a spring animation for more natural movement withAnimation(.spring(response: 0.5, dampingFraction: 0.8, blendDuration: 0.1)) { let updatedProblem = problem.updated(isActive: !problem.isActive) diff --git a/ios/Ascently/Views/SettingsView.swift b/ios/Ascently/Views/SettingsView.swift index e7ee043..6ec5e76 100644 --- a/ios/Ascently/Views/SettingsView.swift +++ b/ios/Ascently/Views/SettingsView.swift @@ -84,6 +84,8 @@ struct DataManagementSection: View { @State private var isDeletingImages = false @State private var showingDeleteImagesAlert = false + private static let logTag = "DataManagementSection" + var body: some View { Section("Data Management") { // Export Data @@ -217,13 +219,14 @@ struct DataManagementSection: View { try fileManager.removeItem(at: imageFile) deletedCount += 1 } catch { - print("Failed to delete image: \(imageFile.lastPathComponent)") + AppLogger.error( + "Failed to delete image: \(imageFile.lastPathComponent)", tag: Self.logTag) } } - print("Deleted \(deletedCount) image files") + AppLogger.info("Deleted \(deletedCount) image files", tag: Self.logTag) } catch { - print("Failed to access images directory: \(error)") + AppLogger.error("Failed to access images directory: \(error)", tag: Self.logTag) } // Delete all images from backup directory @@ -235,7 +238,7 @@ struct DataManagementSection: View { try? fileManager.removeItem(at: backupFile) } } catch { - print("Failed to access backup directory: \(error)") + AppLogger.error("Failed to access backup directory: \(error)", tag: Self.logTag) } // Clear image paths from all problems @@ -260,20 +263,6 @@ struct AppInfoSection: View { var body: some View { Section("App Information") { - HStack { - Image("AppLogo") - .resizable() - .frame(width: 24, height: 24) - VStack(alignment: .leading) { - Text("Ascently") - .font(.headline) - Text("Track your climbing progress") - .font(.caption) - .foregroundColor(.secondary) - } - Spacer() - } - HStack { Image(systemName: "info.circle") .foregroundColor(.blue) @@ -292,11 +281,13 @@ struct ExportDataView: View { @State private var tempFileURL: URL? @State private var isCreatingFile = true + private static let logTag = "ExportDataView" + var body: some View { NavigationStack { VStack(spacing: 30) { if isCreatingFile { - // Loading state - more prominent + // Loading state VStack(spacing: 20) { ProgressView() .scaleEffect(1.5) @@ -380,6 +371,7 @@ struct ExportDataView: View { } private func createTempFile() { + let logTag = Self.logTag // Capture before entering background queue DispatchQueue.global(qos: .userInitiated).async { do { let formatter = ISO8601DateFormatter() @@ -394,7 +386,9 @@ struct ExportDataView: View { for: .documentDirectory, in: .userDomainMask ).first else { - print("Could not access Documents directory") + Task { @MainActor in + AppLogger.error("Could not access Documents directory", tag: logTag) + } DispatchQueue.main.async { self.isCreatingFile = false } @@ -410,7 +404,9 @@ struct ExportDataView: View { self.isCreatingFile = false } } catch { - print("Failed to create export file: \(error)") + Task { @MainActor in + AppLogger.error("Failed to create export file: \(error)", tag: logTag) + } DispatchQueue.main.async { self.isCreatingFile = false } @@ -420,10 +416,12 @@ struct ExportDataView: View { private func cleanupTempFile() { if let fileURL = tempFileURL { + let logTag = Self.logTag // Capture before entering async closure // Clean up after a delay to ensure sharing is complete DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) { try? FileManager.default.removeItem(at: fileURL) - print("Cleaned up export file: \(fileURL.lastPathComponent)") + AppLogger.debug( + "Cleaned up export file: \(fileURL.lastPathComponent)", tag: logTag) } } } @@ -435,6 +433,8 @@ struct SyncSection: View { @State private var showingSyncSettings = false @State private var showingDisconnectAlert = false + private static let logTag = "SyncSection" + var body: some View { Section("Sync") { // Sync Status @@ -579,11 +579,14 @@ struct SyncSection: View { } private func performSync() { + let logTag = Self.logTag // Capture before entering async context Task { do { try await syncService.syncWithServer(dataManager: dataManager) } catch { - print("Sync failed: \(error)") + await MainActor.run { + AppLogger.error("Sync failed: \(error)", tag: logTag) + } } } } From 93fb7a41fba13d4fe50866fd352bad00316789b7 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 18 Nov 2025 12:59:26 -0700 Subject: [PATCH 2/4] iOS 2.2.1 --- ios/Ascently.xcodeproj/project.pbxproj | 16 ++++++++-------- .../UserInterfaceState.xcuserstate | Bin 263252 -> 263437 bytes 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ios/Ascently.xcodeproj/project.pbxproj b/ios/Ascently.xcodeproj/project.pbxproj index b0bb1cd..1eaa810 100644 --- a/ios/Ascently.xcodeproj/project.pbxproj +++ b/ios/Ascently.xcodeproj/project.pbxproj @@ -465,7 +465,7 @@ CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 30; + CURRENT_PROJECT_VERSION = 31; DEVELOPMENT_TEAM = 4BC9Y2LL4B; DRIVERKIT_DEPLOYMENT_TARGET = 24.6; ENABLE_PREVIEWS = YES; @@ -487,7 +487,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -513,7 +513,7 @@ CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 30; + CURRENT_PROJECT_VERSION = 31; DEVELOPMENT_TEAM = 4BC9Y2LL4B; DRIVERKIT_DEPLOYMENT_TARGET = 24.6; ENABLE_PREVIEWS = YES; @@ -535,7 +535,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -602,7 +602,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 30; + CURRENT_PROJECT_VERSION = 31; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; @@ -613,7 +613,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -632,7 +632,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 30; + CURRENT_PROJECT_VERSION = 31; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; @@ -643,7 +643,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/ios/Ascently.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/Ascently.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index f9a425f744c15b886f05caf5fc1834651396aafe..927ebb70af862c3f51c40b7e6a8b7a86564405d7 100644 GIT binary patch literal 263437 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

Z)*6xoTWvT@zf-xG2{Y*L2q`*Id^E*9)$f zT#H?=xt6->Tq|6wUF%#MT$^2Qxwg4>x^}zvxZZbt==#`o*mcx(+;z(Jnd_|UOV=gW z71uS_4cE7>yRLh#A6-AYes%rfM%{#)<>t6!-9mS~JHegoPIF7$S?+AN(yejp-6pry z?QpktyWKu_uDh+fgS)f4n>*j#%iY&Kz+K=T;tslpyGOdq-J{&q?lJE1?ul;FJ=s0Y zJ<~nMJ>UJjd!c)g`&IYr?ppV9_bT^V_j>mx_ZIh7_YU_i_j~Sr?)~nM+=twsxR1F{ zy3e@3aG!TybYFIV?Y{25<-X(o-u;97f%_Nt?;ha6JxmYV!}AC{aUO{$$&>2I@ML;g zdK4bDN9QqmEFQb3mB;1rdIFw2PkT=%PghTOPft%DPk+xKPobySGt4u>Q|77kggm1? z<2+A$CV8IqO!dt0%=XOlJm-1Q^Rnj^&l1lvPrYZQXN~6#&qmLip0_>QJ@0tl_3ZV0 z;5pzq=sDu~)N{gf+Vi>Roach)E6-KWH=diG+n(<{_dP#(9(sQBB3{hP@Wyz#UcOi4 z6?+rCDc*Fi%-g~%_o}>Fufc2f+Ppblr`O~4d)s*1c{_T$c%Sn2@b>oh^A7Y5_7-`E zdP}^e-U@G(x5hixJHh*mm-0^WPWR68&h;+vzTkbyyV(1hcd56|yTZHLyUx48yV?7e zcbj*ocei(s_kHh&-jBV9y+^&ry{EjNdCz*k^j`8_@m}-Z@P6yP>%Hgw(fhOaSMMJ_ z)JOPOK8`QeC-lYp5`4+NG@sO$<;(UdeHx$MXYyHn4qt1Z+voG;`r7(B_&WQ#`SN|e ze0_ZbdH_BJ-8{-@Ao9H8blYP^CGktS>^L@|z7Wx+XUiH21tMx7S zt@5q)t@my6ZSigO?eOjLz31EK+wc3xcgXjN@0jnT?~LyY-+A9f-(}y|zU#hQzB|6} zeLwgf_v zxA%AQclCGo_w@Ji_xBI-7y66+!~LcH(f%?1vHo%XiT-E(ll@ctbNqAt^Zd{IU-vKd zFZ0*>>-_cp<^I+F_5Kb1t^RHP?fxD9-TnjqL;l15PyNUIr~Ie=H~csKxBTDwZ~O1~ z@A|*`fs(>z_510d%fHja4 z@C3Yp+(4T^UZ6u@P@o_%I8YcE5-1832ZDi;z=%M3pdwHis1A$|ObAR0kbx<%0Vd=&UNa4>Kr@M+*g;CkRj;AY@f;M>6M zz@5O|z;}V~1NQ>=13v_Q4E&Uf<>I+SE+dzj%gT+(W#BN z7KTD~h!7ExD2de}@ranjDX@>!76@ASb8J>)ZcdKY;V}8N7Q5M@g=gl_<~pox@(e~} zp2_4d5X867ZPUA=YGkOguqc>YQB+eFEU%8voQz~4n$<`Ol8U4u=|~15MPx`ONstVZ zNwUZol1*|*?rNk3(h|vrp9%;9f0H~imgK`v0R*9cTM7hXdY+Q<;)*ftLwRs>`9)R1 zVELfNw|P~CWx)c07QSd#80uUytO{lm756GEtqF$msw&F5K(VM~F)O#?>v3Eu=N%B!m?N=t)P z1vU%37|%>X@|5&Iv^e4;dDm2 zz{5x(>&fNhT5=r)q$H05nG|SApN{}8Fn@T(m@b8*ONJFfL`PmVKKiPH5Zyuu)w8;! zw4}Nu80uY8Ts=Gj*1kMc2@}LBs+zzWdp-izrnn>uW3&(GRT3PN8yr$IY#2O*#sxGE zUm%F<94xD-8rQa}uyS}5a3EYk(=buo^hbsvnsvwkWFRsKDL@7zg~$-32q{K_$WSts zOe53D3{pzU$V@VeY(cgpv)3WRkrHGCG7>38%8+uT0;xnsAyuTDw32=@Kz1PqkweK! zk|bx6uhR%p^(m?-4(ez$Rn$}!1sg6<&-S{;o$3O^3(JQELj?l;zX0wYtgHyp_<*Q{ zn9UECLJS6r8%HY;WHye{v84KuX?j3P&~=8ZsVaxbcx|gHYAPeWVd@?nO5ND4eR*}T zw6tVcupF*;c;TaCz-`wUJT^ z1gU=k5>3x#0%Vqp`PB9WT<~9`b7Q=h6Z%W&nDdwQUdIga(C*Xr9`QzSnR_v+uyrXH`#aE?vpw3F5?w$5}CKZjZ{s z>fwFiwF!=GS5jVG%jw&-GFTocEh!r!K#qf0K6g-XY-M3NorfBpB0Nfbzs3DwcOkb{ z)W;Vpf{QL42Z7_ck=Ek3e}t_PZk;FrvW=eQMHOXbCDo9cqzxnqVUwb;TQAk7Ka^6@&|`jR0SiP0QRH@jxO*$ zWG_vcd&t(c$Uf3ZlO~@YIIPO}LXU!ehD6cgb5Q28mZPX zQ6rsTHs|Q98flKvGI3&bqNB*M#)*!TK2jTPI0Y}21~MSX@cxlANBew%T%gf<7CDEU zN4_L;$u?vj*>*W{5xInXg)cgv>oIo68Ntkv{+e06@vEWH<6DvOAei_8@zby;cJp5XcC?1S}8( z*nmU!Ci_6$s4v-%>`x9L2hw*z)+o1|=>=h(MAsnO|KbitU?K`c%fA~25@$_Obxjo{ z-JC|af3GI!!V~?aHWgV$`%nlP8h=SI5g_`c3Ix{1HT7>%E0x!wstJbb(7)-6;^X{EHT7nLeV!6bM9NI9dg2UtU>L z-6J>_UV;`d8sN(@_#9dogK=mrj(|_=^ZV@DfWr{THRt4++vM0!05!q~8Ys$jK;Iu4 z?v)i#;~8C8N*nRC!BkRMN*0qr0q8|@dc(x9Bm^d4hSq*qUep0oqvQit(CSHgE@+Kh z0xsYthd~xyLY9%1D0+M#5LFUEE;*dkb`_$zk2Adgebo;urbkspMKuXlbGQj9vKDex z#BXtm7t0q2MRD{n2Z_*t?BvXJu-v>@IjwkYxk{|JoEF-bwscGpMPtv_1 zdVN(@h2!edrHx8A?4Oynj3i*Emf3?E^^h=JeamzyY*#e2t2J<41yCW1EC(tEP>*iZ zSHqiGuGQ(K{|HqeNNO6U2aS}lhSY$L$J@dP3%9{~DRed;ln99@9Y{e-Sl{HJuMezp zY6B~pMuItDbwqG9DxMLU(Reb}2>leg z(3p~;)lti1I7j|sUWa9M3CVSdNly^nDXCfBnnhv6JubTY4k{|E7(0H_yq8~F`p%w@ z4<7mS^RKSnj^Maaf~Pg&Jo3j+QN-tio{f~4=&Ga8w zabe_^En8L>!>wa;p0H6~>?4-YV>(K&z5{~gqsBkBHU48;n;hNRKrk55)PX^ufE-0u z)qz6D%|j7ho;0c^ST(L&A?+%JY#`L+!y7m>%orN9`RGu?z(`s=3EZtYs>e`>(&$kx1g}8Z2VMd%gGFF5Ns-TzlgTMz z^8_quFi)ob-!o6Z3b2aid@IRmwO}AD zW5z%I4EgNjsncf6oIPjWg6Cg+`AOWfj`MH4G>}V-dbl~vKWjOVMaIz%m+;FS@THi$ zoWqeM^rZa~q29jYV%m#KLnR3SY)(n7hs^>MzDaNFw+}W*Q|mage&O)I7}|dy27vEd zB-L|TN}9~5-ZT|P8x=|PWXfK-!Ro@2Qu=KY?4r@takNc6B8C?RTMdmf9)w^f2xf+6 zXQPD{9$Fgt^i@`dJ3u&FQk~u2C|2OxoQ7elhZ$gVYq)S{*s)n&!VxkW{={^$p)Vp!Yvk;~)#3-jpA3O)zj4H3D*Eyk~L-h#y#!Q5JrSUVVahUt?EmcEL z8h#C*ra+jM(TC~u>gX*@qER&q&S#E3%!Qk$;pQhr@A7XD zJ+R3ABvk0Wf?mVx$oI%k$gco}<~bjhvrAwBdurHwsE1aB3;1E#dPmR?6u@%z5?HKW z17*=fsNl_mCF-xi0`=vvDE$NQF*pp%(7yneVd?ozSZt1?F(?m>Lla@Kc{VIBx1&y2 zTAquxN4vn1@`30ObQn4kt%T*|W6_D|v*%@52J{gV+h|Gg$t84VHc1#_nN1U=Ofg za2)5sqVJ@Lg3+kN)-_i+@XV-a*#x#Bnw4NPcoS>^Z-KYLR&o|Oo18<=CFhazS0XLI z4zLr+2D`v+7|L8gz6zsguaQe=?I8`yIXY<8wY+p3eH)<}P#w1T!#5KepRhgb1nE&l zJG9}Y2JODm|XMB)+j(nbcfqZc}JnkcKKS#-h^SQ6FAuGcPCf z2Eg}$nyMHU$2B*Piwcrf-68UlypQVE;;4C-?11M1~Csa z8TwrXXcV#6!7W-xy#a2LOUY$*;9GE;tR?II-rw+KKY}A*wb@{{ht{8$3;hTI=uz+) z@^WBOKwhAY(Pzyu8%^}_lvS1n>Cn8idU#L@JrZ=BG0R)&4d3eMx_$&d)9d;PJRnz) zE9<~R@C&($Ttlx*P6sr)Rnf-=nRjEnHtc6=GZtPy+J0@H3$LcE8Ds!z#KT|^_EDHH zR#5~6%gEIctX@U2IvR=SxVE`Ltqa2hA8B8q7M+K-56`^tD8{~R& z1G$mhL~bVEB)5=nk#Da>#b76z0J%^SnvABPsc0ISPHu(dw~u_E{D3@0{y~9M3ZzjW zgWjMpa?xOL4+gNRX?X}^wh=cyO&^6-C83J)Fp2eqm}qeGMU)Rb12KxBu9 z=~h)z2BU7B3ddE{RQG!nI;%3$6nWS1O(@09Lu&BcqRqj=@OV-3j|-FA&_Xy@c-fJ# zximKze$|cs7M2jr5}J<(4@VlMmd6HePsh`s`7?Y_=fbfiWhLXGjX_7RqPSP1S{P|S zHRQHhR7Y-)Agou9MqD+~9BKlW>QFOkA$O4Pk*`Dtu%oRJNj>U7bI?}gPVyacS3T-P zvQam=8}g8MN$o)B4{37D44|Ky(jNryF|48#4ue)!O>wXBlo9=*h99txcb zkImE(&eWOQ183SBji*G9n?_xhw<5ybp~V(CtAb9!q18Pqx|a+aUM)aQqdm}`XfK41 z_D1`lebIhse{=wpWKgXUL~~v`RYdH&K~0;W@d?kcF^b(Cdb^;@hYlLS_poPKVM%!t zIP@5VkD=?(=$K7ye;bjyGZmdyAW*=AX?6pePN_NN*P+wtP5x{6$c32+F4dy5$m2~^ zJQsZt>N@B=bUwNOeGYvdeSthdo+M9^r^z$qXHeHcUqWAoKZ_AMiR*Ln3;1(3lE9S) zm6Dp$Vp=un2J^SN2ch>OR1H}xEtNw3X$I1##q1X!ZHAurzwh0@X$OYzubSo(@4;D9j8;T(BO`6)akQd3-pQBsR zZRmD%2f7npsCUp^=x%TZeGlD(?uApo5C7heeh7&_N)F9VlnydOnMxA_?M9?MISqcB z<|hny4aukak+^q(Af-HxSs!}#N68e98C_+QKyQr1L&kBP zyh&bysQeB7{WW=`Iph2Y{kVZ~9wD!iUp4TvD-nDhrSbJCdHFH!6k$eBW*`w(aRNOD z(RvI6{s#k-c^TQrim+|sG>|) zSP4acg!kxZ<`Yf>uty?y;ZJk7$lLsy%F2qWYF*@pMwybX8BFxneuI9CNS345(HrPZ z^cH!G{Fb~;-dT>`hKA8y^gHq{`5pN^`3o)Cw9N*H3=Xxn(Ipi%p@x|wF9Q(=rRHzo zdlXg;3s(Olc$74vdx$btsBL6FVf2E?yGI9yxN8R3zI*nlUEE zB7Y(u)M0FBaQqCft)*9F54|E={fn(YV+0doFj|n-3#6cA6g5e^}fDgMU4KdUqnBPsNA&G*{FgxD#Fp}OqiXX&Wu^0i@-(!f&vT* zFe$)V4vq4i;31L?MboR$!r{}5KcyGc@#$D0R6B!XXgL+?UN|Of5W}mS+`P3RYc1@D zhgx;B#&CB?+qprQ&Q?+h#R%*#X$BG=o#y4ywfeD+Fr@-IF>{;!6H%#qGdqy=8{9)G#^M$7h*twxV?5C(%#wO9cK z;%l)&3W)#4V8VjXV8VuC!zdu3KvJW!g^j?MU zY6W4VvGITEJOOr|NP%R!a|)?#A}SbMoYSoLv)JSar#OL4!=^(^K@TVlMuvo4@*5QY z>fxP&<-@{u%p>o@)Ix#u2GD44G zBB5Pl4T>F2SCM#sD2nHou*Ed*eHmLsfh-ENsH4dtOahPq#Ek=V3Kl{QI^qU{nfQIW zH?}mm&gcq(Mzbk8_%iGbm=uoHVs+4QxEx!7t;AMA2jUuREe5mSA^(z7KtTZ|1ymG( zoJ&IiEd_KG&{M#$4ow3)v5k<;?8M&0wqS2Tr{h*^8}v7juTsDW*$(_=qQF85yhef5 z6j(!nz4R^lM+^Ob=$7C|)JZzrm|s1vH28>i{g|!)*Y1XY=d5^=2jw4~B2Z#Ml5B8X zG_r7rhJW&9^rPbm?aOIxJtAv9gw_gnfCA<0??DbSSy zPf@^4fvMzg6qrJR&J^g@Oy|dbf-d!+(E->mU?&CIQ@~5XOb>Vr9uh_^o5~!T**t&m z$H4wT!EzkI0gmDr1$-39r9fK>v}?2+uy1iDS`uDifcyw5UJXv?uwaj5U^rJw33Jh3>+anqj-Wqq}E*PX~fqN0i z*9S%vDGETzT}gpa@c1E9pdw-^xoH)VRq7h84d?~?b0gFvJC~G0H*h61xu2|`dhJrSmT`RGVl8l>z$k5U@;FE?7`5GL!-qlD8E!`hy%V(8FNusY%oifkfm zBSu2NzM8SHK#Nuo!~TH={qWC|Mrt)81JVTpf3}JHgq~y=KAZwU3Jis@6MQ7iPlu7({xo*NT2L@FsJOxB8PT4E(sR)fM&UJ3 zVZ*EN5ME6I$dN`+U}QZ$8Xtp?r9deK$|+DmFF5;8c&dDCk@?W%fXAW#8^9hF<8n(v zbjPM7C>T@wQ;$$daS&D_>c-HuddKl+Al4`0Bn+MDYHCV~hm5NZhPny_{oeZOiepK; ztxGbtUwLbB!e$DTg*8C@S$uLY=p*UbKDQ2k7KV55sc?X4e;z=8?QHik@8vCBzo~ym z@!ggW-~d_P;$>l-H0!;HW*c?l;j{7Qp;X7`;B)bL_PS zCyUWzXL+tp?bCB=pI*_MQirdg?^->+oC4!1Frf}#iNl-rGzBJ-+Fr2A3wmt^6qnG( zXBix)yt*fh{}z_^D22YT=olODO)&om-$;Q;wKzO4lGHZq(zmdt8ipreL0`1TR(uCN z>o$Bl1)inA8+PD^ufUS++ZibbyCc8;%f!{Wv^|uMwVMTGC z-DJ%*(qGFFxh?zf_n{67ML+}*4cbXqiK@dtpj{15Zj3JRL;N80?&1gVkMNHvFoOa! zDKM)ZKSV3x6qrrx+~KpQb;id%yn?73i}r`o!7!+Z<&J~Nb|pp8HxZ_Dg62XeDKO`W zj$K+&0^{&6@Uu`+`nE|?BB8HiE(Kns^(3e`{Yg*4FX3M`=}9k8U|y4+6q)xMn%P~) zZ{RoaTNId2fdv$R7ytRc(0ZPz-aJu<35SB3YdTL-Yg*(Q9Co|a9?;tTMxWMV3mCL8 zyljKv=77U*%C#8sj5*D8KLRI+raeJ(=cUK?L~!7q2rj`RVhKJ4UZwyf)x{Ke<^Rr} z8mx8NysU%q?S-p;Pt;T)(I^%)(IV%P3Gw zfx3DEY8XTg1?p*&d-;D7pf2?W1vb-0>`v11@11hQ0HP2M zO$;Ok5d{R4*Xt>;fdU&Tuxa`K*PL=hDNzHRazq(XPE-(;#3-VQ2oX@myh(vA6nKjQ zZ&P3^1-4ND^28ngzf&%fG7$L^h9~;({$F*<5i^KcG@V1C@J=l;n*zK3j?U-PbiROq z9CkMan(`Qk7l}nrAUrG!(mA9Bgr;+t%#h`+TGotSmlE|)>ed3%>q}I!=MBlyESGZVa13!Xmg{VKF5fN(o0(!l{&SDcuzI+9kruR~XQZNbslu z2ZLm^{?y>oiL`|chfrQc72P->^353eMZ;l|67;e}9;2bMV0BZ>HJmTj0w%USq9ui+ z-qkSF25bDnzC!v7CZOuk64uxj1^qQJZw$`kD=mE#Fw}l%mte3s2)}-SA6;kU3r65l z<03xb9>bx#ytr*4{WTwOyyQqbUD5;7r|7tK*kMJ7tDtKXt|{zI91F8v!k{gTB)}y`)sx00COnQK+I1bqPP`wk zdStj(EEEQUVd3Ji5*UuII6;9^6gWeH&na-0 z0_Q1kfdZE(5RS+;hFFQ)5huaP0s$;(_)ju4^i3(adUzSCV1i(%y6w2K2ERunJ2&Db zc*IFT+>6YAxdKR8t-L^Sr-B z=KZ2TFlMZFENvibp(+oHNrGiVO2@%`m=Nt#EEr1Huy{%zOR0245*G^{hU_p{9t{P* z4rjP4$KfzoOcwaHJvnBx&15$iERTS|Y)shIFw|r-78xEvHUo{U=3Ieb(0>mL%?|j_ zC}1!nlYUts82Z1Pv|$38!$dOXqrSAJHw{+rpYYG%Mkc=q|GydkyU81~ksi6;ZOV(A zZTipC3M12g1-~%izc(%1ZdLU^Oe~2^eC5Bo-w5r7%iiDxE{&dXM20bv7%gBPCnK4W z!boMLG13_s3@Jm#$Yj6>4&+1EDDVvhu2bL!1#VIR8av-o;5G&BtYx%hWHaOp1w+YD zG1LqVL(9-n;4X!xP-rEEZlTa^6iZ04j#9i`RP1s}m`+Q0dDztdE6*bRMJ5q}R3K>e zw~!GZWS4LeX)r$=TWoTd6bQOPyOrMequ-a)3ckxPFRTm=uc&UY@*{KUDobl%PBR_) z)YE@zOUnBj2kM~{Kaxn>-#qZqV)ZAuM4P784u!$1=6N6gQ+FzKCI8*lqjQD7@rn+U zg>%#^#|0v3#8K&4AZRL4f5M6zlDi`aXzJ5c4*!HcVc#5`BNoZX4OTVv``;$jK(FWD z?bQc4Z8Z$-7M4~FYcPixtr=cuvoM?t7vul1_a5+3R9*jgGJUgsH(Ro4yAX;<2)#%P zgaDy;=`oNH0tpF8Xe!7-igXkd>9V0{K$Ic~C@P8yDk1^`f{LOdiekYA$p4&~og^|L z0?$5wp5OcNeLpjgz@5D__j|tQoO|!N=d=)7LgLv91l>Jh9n6o3c-H56%|^tPA_i^Xw+HB0%a|9GqMVm!0v*wopw<={Uz0M?@gtr;`7=VQ)Q^-hNHB&^gN62->`jFYK%I`FpCR<4yNj@+H^pw~zyej6_YKB0fM! z#g!yspfE_lRpUP)^fH8ADH84z(u5%pdKH)uU|3QvbOtfCTc?zsy;76gr1a|ABeiF8 zr{ttwDP6myc1-S9UW4Sm-CE%$xZ1$0`Gr0yJux3*au56&`VHB06NWRPej!W1Md807 z^xEX7DgQu8yjej8ZuX(eD~F#2&Y8y3vUOfTcjXL&kc;yfAx{_$Oeio6oo2ulbfGZx z%xWPEe^dR7@p9-ry1Gj4m^yXpQTCWR^&2*#V+@V!G%iUWBRnWfrZJi*OcEXfh6hFf zMl1^bQ-3CHfq$sglX4DJl`{{Z zvw%~AacINiDW<)k`E^^!f!MGzVfON`;-B+z_kfbOrIqd?$ERhC8ZbcFdB}F4jK9Xn*b?6b%7UEL@|D7 z8m`;OuX{Vbs|E;82DFZqpNvZeon*s@hBtN8Sxn7Kn>zc zB&up5W>OtG9FN%)G%q!m>4mjQ{$7c=4y;V68vUs78O>0R2_Ff^g%iR_;bY;Ha9a38 z_!Jl)FqMF*3``s_Re-4qOf_Jt19KNJHHw8ZN<@M1rSKIkrU~ER@)>h?AfAAU2d0U< zf`(_HJKl*a?GW#+fR75?y<&eN zOJA`cFzta!@rwh*fxvVCrgQKZnI@)_KxK+UDOQK+NCGvC1PU`hUdKpVNa#-Wpoch8 z%q3E0i#g&bV7dU)6_{>CVxBmfNZB12+$p`&5jx^{B-#Wm(dzZh_5C_6dB@I?4PVM@ zS_RkGkdzN%+lkt?hYrSXTDZNldu_Vz{Oa8UBy6kVGg*9C;UY$WAQyX8Fm&o8GetZy zSS-#GXNz;hx#B!=zPLbqRD4Wa2uvSf?ggeVFbH>lUE(vgP z1=-U3R5A`JA>*ij$rw~J%JW2V1KLt?BQR+JTPi+Rp)K7mQh1QKLwpgKp}?g3#a$v! z%#dGlTDN};q?5M?Zxo29%F?Ui8^plZ#J%F{zzhQhZR+qMaUVBcdNcYuonhUi0zF)f4Bx zVz{rz%;|f3mto*h@wlSAaH9?fH`~u_6i-h63z!^@^0IVP$L&+`bA`6Jorko|t>7W` zk#pjC+$A zMM_b?05B_vJd^6yZ`-6!BdlQ2xCw@P)oJf-`HuiLmm!@70r)`@S_s4)il)laS)-x`sPZ&a^!$R#~FX`qQ)xOg& zP)8jmpA<*KR7t|g9ago_rdsHS z{XLGn!l`9&g3Pr6-9d5(WeX&=K?@`$12Z>Zfu!~oSs|lDrZhlSzmK59taiK>2S|v51x-?YEM7t%WOBoUxt;d0R z0+_``(r_t@JjW-2!Jx-G?Kw&q^eK(j+M=e5Mm%^qv19bqv%9AJ`9-yfWVfV3Y&%BV zHf-#^sMor5{1S>QF$>!F`=QisN#mslXyA587_p3GT2{fp1$!^G@gS9iQ>1AmA`cUz zSIUf@PK;i414gTl&6XD4Ja->Q-Y&*#iNf8dh_-&ZZ6NL{lD&c?8((0xD%q1*WGk&xtfO@bX**fI_2sNnSi=^pL-UgK zYI&0VnzWZB`x#&`XcQ&;u=FNM%v)NC`Sa|Os_XA+pY?M1J$cJVxBf$xt^?Ti9c|k! z>pG7ge!laN4d;IRWaNyi{mMw!K?zG4kaS@{8%ozklCJGUOYI_yg1|?FfE&%9ionOE ze}PV!^eHgU%R%YV8R>I8!q5d%miVPJfecmBS!(?yFk2=+T{$uCZ|fD(H`2H0jY#K# z*|u8x4w&tK^PHp~70>B~R7;2dbmOwjDJ~_nLi$BQ*NG}OsQCP@!!z*DSz1Vc@MomU z(iQ2d^p|u^7orQ*F*;Vq>3E%>6LpeKrwh~Rbq1YLXVRJZZ}`u3HvTJJxXz(->RdXv zE<)$wztBbLqIEI4Se;kr(^b+{*2U?n=&I_f>8k7Q($&!2t*fbv*VW>`*45V4(bd(} z)78h|G8`rhkNpssUBJ8q%pPD~1!gZWZvgWqFt`tM0GM}yIS9-lU=9Ow1ejyM90%qk zFsFd|1eni&`5fcWC_arjOOa{JSHPSD28S5O_j_P20`n7vt}*B{qQm$*FetfKfcXp9 z5MUW#Iba1~C1AsVH2`Y@)&i^z*l=K-z`7~ajr9N<1#AqkUSKN$MZSHE1E*`OYofbH z*HqU`*Id^^*HV|LYo%+gOVYK`CF|Pi+UeTsQgj`39d(^_opoJwU3J}b-E}>5J$1cw zy>)$b_v-rU`sw=X2IvOr2I&UtQg!#~(sV;~Lv`u84BaqYrf#?{OE*F{QkSjE(T&pO z>hg4>b@{piU7>CauyMfF1-2Ei1A%=2*rmX32X-H@M}a*DoCsVM;2Hqe1Gqfk<^s10 zxOad%1$ab&y8?W5z~FPf7w|)X9}WC`;8y^@5%^uee+2wbAXq@S8-%7HbOd1l2;)JR z2Et+xwu0~m2uDHq3WVQ4{pvxGi?QN#g+bh91 z!zpK$O-RYX&Bec^FE6u0shg+t_u8$*kKJg1>9kWeB1^>2}|(jBfc@_6%gnP3Spc)X=~mwEeA6 z`g<$YGV(tbUy_%=2$v(bSY;27jcMP&ue<>!oy!R38{9B8ep%UCuk`)St&H}KWJ}== z?muIKmz**O!OQlyQR(l!RLg+>_*-ud-_1&o@26UN-gJ-U%abC;{j>7q|Ip&NUFqqA zR7?Mx?y2IjY=yb^Cg1_V8w}=drNa+XExrHa4*%)nURC-!nrcbC>AuPzMnz1NwBHFB zjIR7w`KorG((6aT5KrX`Q-~m1SM;s#D}8^QY8iUd zBYY$Ap_30vhHJECv`{E3+iqEytJUq*T zCzG`uUQjy3On?8q^c7_#^CzXhZ*C>*wPeWt9)c>@21rmuq(b<9Q~Lb&RwS|_O^4M4 z@oanfqH;y)>q4q!#DB{9(wVBNY|8q~H}E~eLX{Wz;Z~H+jXyRZLpS4jgkfkaWi$|qkwzF`)nw@bm~OGW)Tl>UB8 zwIu(OJe7`R>3>zki!hJ!+kf23x0Ej`Wu};@tdl9geu75VgvBcTUA}z*(Zsx~%qTsi zr0q6N>Go=>rSCrtVM%)A(h>Yy3ZR4lA2g?QO3yBY-KBJQEm-ncq5BQx*w5z9d%>L(}8F1q&nlXnpR(j)8Et$88;Z2ARkp;^TY9*+-(z|#o zM7hBrD|K8Fl>bqrN!wp*r9WM&rN?c4ZE5c+Vaszj!rCbv>2IHrr5%+_-r8rRWfu;| zgGo1HqTlq#+L}d4>U%X&VOwD=Y( z9pWjE+jVVKH&R`!RD9SH>H7O$YhQrs^_>GY_V(AMZ^8(aMP2&}layER1!2%>&7w?p zLHUo`4j)!JtQ-XAC183=q)+*Ct>J-fudwN1m{0b0f)2wTQ-Th|o=}1g!5JVDIvWJsY+O z*c!mb({651BIUxihV7t8xxE-G_qrS=hj9nPi@5P&JHs#)RxV(sZMG)v%Z9xiVh-D* z-D^GfN%e{6hozj^df=zl2bw)FiuPs0Uc43js6YsPUp< z`@-I)ec8;gwX5a{<7=Bf#safHy1wyk#li7YXnmfvv9s{tE&gc8RS)7qAT|eYt$cM1(ceH@p&d zjbOhThF{+Z*v5W+h#r$FHvzU;&|udK`ml0g*BkVhVFqEp2iT?vyWSFF)?2kueqE6C z#*+G-!k((%=g&f>7p4KpIjj%IwhnFE_803x#=MS0=GaZUpI;7@OJUc$^^r2{dXEfy za|BQyO|ZAn!p`>#jF7&PzKRUHK2C-`v4W@6NAA{R{?B54O?|w+mOepWTVF?CS6@$G zU*7=O*1#qK+XmQVVA}%Q4%qggZb%?44BDyI|r^`JfKl zpJ2!6q0(b@ffM}y9@H6%SxeJ10>eR>N^Uxpr@k{XNZ$q6&H)DLyH}(#^?mgNP%`xW z^!}6|?{t{SbYIBDCqU(DuL>5`8Adkgz?qLK`(xmB4I$9x_g! zqaUS5di4gj53u(Z=|}7HF#v|`3oM4I-09FR{RCw2{aOYmjDCBg`L4vxi>h6&^vPG% z2g+=ph;1in+x}YnP|T5Ki7~U*rss6t{0C-1P?fwM^ivhyJ}mQgKm`M*j@m5!K6fvzzzmXozLC}m^z;w0_;#=(}6|%F|1hsgrctXOZCh2 z%aOM$iMN?5Z$|<<4p_?e$xir}xWPXapx;QueHPf^Dsi7j;_5f+x6lP_7O*3fJDR=- zi&4dUr~V}(@GkvsV6%bE@#|mK?*Vocu!X@hey{7_A}YS2-=}{QSY%@!u%nCgZ|nCH z74v~D_#dF+A*9y_T6%REWIDB^f4g~4EFYZraPtz$9+$Z zdAV`e^ajn#Q1Q6_V?~FZly%q`qT*@NVPmyAtd^m2q7u0lVi8rK&g#EbxcrsO<@+o6 z0rim!`rnDm-|K(SU)2Ao|4IL|{uliv{jd7pfPE0K-~>Af*oT0f3@iYP{@laBP6c*a zvHp($m#^yo(q9XSGlUYCr>k6^1?&^RE+#HhnbCiZa4znS2Ish)JZ~|Wk;?{*gPRfH zvcZmAHiR1-bYZydqpC_^lYh#}e#1MF;I=lBg?gAdrbz+wz^kmfIj zs)icKWkWSXb;Di2&I5KnunUR|cN=OFmmdZ8u{+OYL%k5Qp}v-%4;`*^`oV6U)2FXL z)iT=O!9ZL#G{UxxwQV=O_3i!Xb=p^&@=VM(Y?F76mvY(A)X+lavH=N>wr>$q(U3@7 zeq77tA<>l+t14u+v{r#?XTU<37!+$rk-5C2f*(*H>1G&!TsCw!^f2@^^fL4|^fBCP z=xgX_K*wttu*-p60qja(akl#uu&aUf16u^_nqtF1h0BKflxdV9ow&SKZ?6wc!J2k(6GqxIIzzF`#i9l ziwuhmPZIgj&A{xtciN{mtU^LRr6qKgm_LW?`>WIT;sv{FHTFCp`_zUaY`aF=wr>8G zj4_sWO`cEc`q|8nyI?{w)u%SBHxw(}eMaW)3&h3&U9w9dtQgkwxdQ;T%HpjTVy8 z8+;uGt?O`T%_Vz!jUDfV%DVeIY6CQu+drVJI0^dc$&-AT7 zlH9*0%l$7T_j}8ed)q~Ig#I*KRY1QYgZ>7A{tJP=_eP)_S)=LpKsTBd(2aKeGNU6T z&gdf0-&8?IXmKKSn4GTn|{WV%RCmrs{;du_d-m)VA%=?x7XqKTUpWY46kf_rLl@hf>^)NyfH> zV5Tuyw%LaeL1TMD@BPqTAo3##`4cMgr+~#18+8f! zuL$`Ym31j8YIAd?X39CTSf(HiRY*}JiY%ECE!jy`#K@9~CynFj!c)$`eyrS4#B}Od zOfr%!Gd^TQTXq`QPyEIyMzm$00{eOJMC=jc92BwZ5Ahl28t0LSeFp5AfQUVYVzW>y zHa}haq1Z5@%S)Ti4|ScdlUH9Bu_v(YVr|=tJ2MAAy`z)3{foL)Iz2dfNEs1ZYFwd+ z*m7CKz93OqMIv@qD`H{mD!2T5@f71)k1xMM|YEPCrX;}Ipg!j&BiUp zt;TJ}7mVADJB%*^`wg(?f&CWP?|{7k?DxR_0PICzadrHsV&krWr0p>dH@=FJM#;q4 zpH)fwog|IpP|`SFk+gqTS%W#jGae!?eE{q)DwmFsx;|<=hSzbx8gA^b^8L5TPg_In z7ReH>LjH;I3=!&6BZ~DO!2anses25%*vr8F6*TA2c+U8(BFUKO7biGZNE9!SBwy7^ z@(wi_tMMn}uSi4V&&FSj_yN~|3jr>)$oQM_ccdZ50M&%M)6SvsT8P;cqNR1gpqOWN z{?PuFDVuW-4L&k%AE^Kni*1nw*Vk0q(_y=Q)5o2*J~nL1nv8ilG>f!`ngRfsB$HmI zu_=sb%n22Yo%)E?6ooW4*-Um*xXEF1np`HgDZ=D2MFJ-QrvokwI6ZI%;E<6f;LN~T zfU_2xq7@pOe5OjK${}&4DoA6_7N9Zb0L}+oC8BZVe`y^2$(^Yl(%4iVID3G`rbb9( zQ)9LUUBHFYcB6bplek4iyQQf$3WzDu)CxE!a4x?o$GMMvd8Qfu+`f5E*_acK$y-dALeSnJsE*iL)B2!;eKVon!aNax5VAFlb z$}}x2PuDq+acOv$+!yrSed~XUpDZ&t9ouGT+rH7d(&P>Ablf!U!83Q?pFX@jwym64 zJ+Ml%N*#?6rW}RI*)o&kDi}lckpk1C+hp=X0VY3;OrC~Jo9@43}MJp?r24XVd^_BHZ3Ljd(yN7I26*m{ibE6 z<-pYhE+J?xnQ66YZF!Qk&a|E+DIPeSlc6m*Y}$YbZPX%^Jb@XyEv@~6XS}tVz4`I_ z{xX`+VcX}mZGW~7|6<>aq@6P^|2Aa$?97JPR{hqkrtS2t+i)fPC+Ru`mI6Vo*_i##%8oo_QbQ0;(g4_r!-nKSdmqYl8Ke!tT`mDvztHXF6P z>@t1+U#4?y-+XCbpGnVd*!CrH*o@&V=5oSYM*ckczUB8P<*Ye=CTU~67L)}qFwW+1 zvx|tBX?Dt{tTPhP96?0vq9LMnK!`=HKyHpTSCR>A_Q?e9Ucqx}SJln+kih1<%r(q+ zn`@fm&9%%4=Gx{u=DNW31QLbbz@cTl7r4H_^#iUya07rFSZuDZ5ZK(EOi$zUoK9xfR{x>C_8l@A&4Ks5GB(S+7aB2Zsa~CAAxvRMwUBDrG?^Etb;14Zv zD&F^+DXFEouNk2n0^Cr)d4PE!aOuEdao8ZaV&*h6CABmUAsduIHprYoHVE@tYUQ`> zG4<6(nkl8FIoq6L9tGTR;LwzhC^F}nDWxSh5;$~9?l|!=rKP!?l$O)PnTw*6+Bw&! zG|ZVh_=`-L_?XhtTuw^MgOOjaT7RnT#m5_8oomY-wgTH)_N#*cW+i^bEXS{KxkTX% zqW&<=(5a8iGE@ADdA50ud9Hb$dA@mp`BC#@=7r`(z>NkjAGiX*GQQjx;Kl-nW)(+s z0&w>in*;GH=A}sCb;n_n`&3>*MAHF)&hYu-nlyiW9;BGdOx zqAwQG(8!>*f2#Uw@0t%0ecv-5G`|nrG~lKKH>1e>f%z~A+#|rv{2!q238dsnt=(?) zLqB)DKT?FEp6xpg(%fsf=*!B}`+x(5k`n(s@_LC=?F8<~55I@d%b1Z7Ku=#WI zmpF9X4)a;r0?#4(zDe|bSTl6$xP5E>_4Zt7^KStQeA#@(d==??jp#d1rSD_Fq5Lc- z`mP}Q%1hc77G=)D0XIJ&a~2V04p-ZB7Rhu1xCMX(tm)nrrS6<1H}H~J!rYGEWwBat zcE1p~MSe@T1=m_02kyzBd43j;C8iwD&k}3#k_0^g++t-0Wr+(hTdHW0`R%9dB}vbB zd~Wr!O7EsjYZ5^yTB>8)yR>Z^4(^=s=(5g{+a@f$u;X+CLR|gUnie_7ccuj=Y`Bm> zp$Zn9J^{B>gQ2y-rjS4iz_4?MkGY#x=|(J2qNJ~OSWYs20L+R5;oDDorxsOw#2GJ zQeYWNBrLR`C4U~c&3?-`3ld`sa4!T+`CBI9No?$75-EQSZOHIjsOA*6tvuy_-w*1m z&9Go>MUmwZ%S_8G;I;#|1GpE9EORV#iMl(1+jZxazhx1sg2%P0;Im#^>kha-@rT7d z){Om~eXNzNHlD<`OSEmpwz&(Y%{DwL+Iq|p0=o)E|z^3 z`5ey<3!dYd0^9*ouR!{Fn?^sYKYq}10&VPVgoRp81~ls@s98Tl>^>*G`mU;156OD< z1i^Tcl&V7SuZZ4X1NWXv@AE|OZ!O=^1>8a4&_SX*ZFP;asJW&sKU;7&$#40^atSzG zKRfKV{AT$bxDSCl7Ca++)f$RSy*`-H%2-)q>Ji|MDn`~ShM29AmI3b1E>v)Q2P)1cG0OPEFr&(*$UFEz4Ov(<**YPFD>q3q#)tDV%$ z@$%G6yJObSkpU>J9&0o{$nCI3$>@KK=v(cC{_z{3Z>?;tMIP3zZ#G#I6!fk2lwc$) z9@GKuw2J;2H5iFIUjn|hDS~gsh0ad`;9FZF_|`;gE4qOD6u8fnJL-0urJDL#?X4YY zJW{NQ7(QU7SZDDu=BjuW09Nvrf4^+FKtE06)Vx+&VKP z&N`cbzn}t-F$L&O{Xw++q4ko3>&lJp1(S-efFIdo8OEtJY5FD9oAj+tuK=N{U*!b zZj!&>%agwj-&jM>sDrfEN;6U<{Tnj&mkImbg#GU~#Qq)YN9a*o-?hGHJ!pO3ddT{L z^|19r>k;cw>oMT20{0hi*MJWJJ`{KccoujLcpi8GcyWXEct8M7am}os(4jo*8599t z3WxxYTitoUJ8^by1fDjn{&lEJ&)=cV$Bh57zg>%>ss7szwe=!V??>QuD)s0P>Refnue>2~=lwR63Ss7?WMt6RQ~F z&?i*TuvhMcHdzJqU?4|JHkEVuhdLyOZBZd+TeOz>QwQ5tj~mkQ@ue4P>QAQb!DBx; zhizVL>(jPv{#oMO`}=kYSyYo<@b+^*m)ZTW#o6vgN7`1!R@GL`R^4`&tp@Ne;N8GS z0Pg`l68NZfwwfVvwpzA?km(`YfsZB@#sKd_H@d}t#gYC`T;+=0@X9T}oYuGZw7z{* z5ol_ovlg~yw&uXc0`I*^k6L{^+18#OZ)LGX%1+DA%&3(0Ng4Ci zP#N2FsEkpxuP<4pKGNToaeHfAwqc4MwvDijv}GgYqeu(irE1}tz&8NCA)()>#1Pvk zY|~Z%e2suMuu<5iZJd4!UBKT>=K|$Bx?qLsD^9Wj4ckMu$-u`0U(0WsVtW|)1mLl> zTaY$JY>(J*n(VjH5d>b|oVU>t1irk@d8@0J`f88aor zhixk-S^_IvW7IcVXG4F2MBr&z1R9eF(1`&2k{gM@bGBV50=DOEn{8WcTW#BHFW9!* zcGzCD?F9ZF;F|*940x3I7QnXzJ`wm4>VxHZj(AFNK(AHjwXxm$*Etc9-4)X9+ zL{C{bu~$V|vsVMYPe9h}H7b%ddmVdy{2Y5-JF39G!1wdp8`v8H-yirvL6bFmQ+rF4 zHSu*!UW0Wah697iYch-MiS||`YXg8Es3>21a){a9R*PZFh_~vG7}Ozk+m#iGX{mpF zPI%i>ux$rz+cz9NUwi+H#0A9%Pk(yi%3wUCrs8eyZ0|lDDTS()E^#iXTZAMaG?MeG`5|!6bSWr~(gHc*g zR94tmlBnbWKPn(9euTeB3;(L;9tr!+l;m8uvd`vuRR=7RMP(hfU9WAM-{jjX_jx*x z-(#p$wOf4iK4nCu*#4{nI?4}%o>#%kt8c#5z6U|KZ?nH(-)`Swf6>0vzRSMb{*wJ= z;PZh;U#bxJF~E-nejM=lF^Jjyz&}uIe(ZC@eIar7w+QqHRnRA6RT|)_WEek} zQ2)QR>2&9^~?h`d((yR5UmCAIaQI)3T_ETb0FM?SCSR?7!K6xBmhB z4B#IDerA#Vvi%CNXcq9Z@4Rsj$8!?l<(!jvII$6PXh`ymB}ZTVHT%htHHpFDxR4%R z&O&;@vG}jer&8uTUuRRJ8Yf5KmIt1xNC=EVxFOsulQ-2vZHtFD3BL#Ug}^WJhc^pHhyQWlgBL>(-Z~r)J!*7tc)RfSBt1_6zgW@1;hhkb z&RV_t=hQK4|6Jc;!rF*mW}NzJO%)lzZrHZFw(T>v^J6MM)A=||d3s8-?aj`W>frER z;drb74M;dDW;7s6PzQ(iBLh-S41u7YN)8_!o~D3)pA7o)3Z7C2H8VUPLBEZ?jqrj1 z=;QQ%(fVfi0|fd?6?9Ce@Px9sSzHSGLj*d`k5{RnKa8LokB3jA3)tU)e@eNd!M3Vz zI6HhE!9FK^F7STfi~Qm9!xsR*26zl73ev!=FI`DAo$Vuk&_)(eR1HSDp`fpxUw#OFXi$ zJd15NY1_70=Vs;|O*#A6TaE7iX81gsSgRwnIeeP}JMOn5*Edw~^6DeI!uKKUw-L4* z{$>F70|BldB-o!-VaJlP0Wa;vQrHg@>>mQZNrn9w!hXZm)$r5dpAq1ngntVB^T2QR zho1@m9C&mDPx(!vSo_cw zQ_br>F!m-_`*8RrZ2POW?SYon2Q6Egd~NcWMw3FTY(a9CK=()Z75dgc$t~ZGqUR64 zO4BerHBpY-Z3v*}U>$-CxPzAg-${U9C28HEc}ji6;BX<}4x_{5Fgq*`tHb87JHj0f zhZFeSz`q1Mx@voXe+BqgfqxD7y}-W?{2Rp%w*t5$N&(#ACBXNofbTB>{3rqbuY(rc zyhe^%$Q=hRBEA{mj-xJe$5GEwpDy6v0{(5~jw+M0@G9I*9kd4QXy!lzc>wr#{En6m zToZd2`1gaRG#$wfS}At4CEDmdR(=PjfFj-|^=s#wJec_wL2D#Civwu5+Ym+cwXs zbY}WjUG+=r^qR=$grOg%vfh#Iz!JJRt#%BP`Fjlc>qsH~9=suca~$J|zoQ(vjy%U` zN4}%LQRo=s80*0K)N$ZX0DlsA^w>`Ue;W8tfJf!|8SrO{9TNilov0)SbpY}AbCtgs zXR0IzVX=317$2tef+&SQJ5%heK;~7UWG4Na9zxy9x;AUji7A>oeSNq{L|Hb6S z&rNLIH1pyEgJcH2fNi&H+tzfR-hW|!;-@pOo%#6NcRFCw;1UMzbWjdQF4M7F_V>Og z2JRsS{-9x?HLRYhx?Xp@sql86%-bI;cuIZbT?d8{6g%E?9CW1x}fpb$vJTuzR1Zt1*ZrC2Lca*P~_A(!;rrM{*`p+`RlZXn4LB)CqH{3 zal$(vw?8%ayI=dYaaK+x{yH7l)~Rj#!SuwZH$K|t>|-Z{P3yR+1*QCTMmVEn{yHOx zzd{%?(HVpM74%yEzE@N^F9$&I|xw$Dm!~sWP_apoP$v^oCBSMK!^b$*6&Pp-Uosg zgvvqlot+uZ;nc}6^qmDfZJXhDW})vaR4UJR=2Z3K%ykwJ^Yfgeo%tZdflvj6szuI1 z=NMvsH4v)*4>12hWOF&k7Qe8JdLX54=ha(x%!u6j;1!I-L*`G$wxDJHxya=!|N6GW z$So7}nNzm4$7!x=xt&v;w130xa88$bTZ4F;Ma-|HVZO@Sxy~n%x3`gGz_}#A+ZE20 zmTyDioU4hqHC5gwfY2BNvB?HEA>zu>+s?HlZRiC^6IJbjP7la1E6T02bJ=DodBy{y;p?igdu6}t!H(!m{ zaqe^ON1?kue8hRc`3?zPLl7FtLU-8tK7x5j3ubIWMEE0x?LU1gZSh;433^)oIE>qI zX6F%Y+l?C=&8^OL{mviRcz>JNl^tzw1wsoD zS}J#(vWHnJ1wP9qxO51POLR#fv;v{E-xcQ4gOCJ5+n~7)E{iK1vAlja+U0OL3ClJh zBr90DJRxRRq!ypU-3ETsaeU&=t>cEj;GMR*K4IyK!M3s5wgZ~&_;#7t<;7Wd854Sr zXoDfbDv4c{Tvdp~nXWk5e7D1eYF9N}-WJ+xAhdF7Ai1liOFme)!-ecY;5$_Clsc#l zT!}>eTMylLwNik0CA->+Cqv>~DFl2c75J_o^aX~}6A1lEkatlf2v-*n)JhPp?ufjr zN9ZoPK!1Hmor-jA zBKAE8f?CeOwWT6A&$ZJHO1*F0Ot z|8bow4G2$n4QzY2w(YVZVTVTD-+tfIX9}v%Sor`3TBy3;UCUjE;LCJV*fI!H5WX8N zxCP*IH*()2Bkpb@BR=&e9!Yd}M8yAgXs3cBJEiA!irt+Q#NFN8-Q7Jx;@rIm@#!k! zvp`q~!Xh&FkC#H;mmu#4f?9LJJrE&x4{{Ht3xr2Nn5o>+;CHgzrG8h2o2Gv5VQw^o zvq6~ScW1d#0nG(rLC_SBJJ+30o#c_NokzCTT|l;WetEX`uDj>{VY&YFhb-J8CS_y&(yqOi=swvTArhPND?ySjJl zdYe1X8n^M_i%(+P%84}sk>dBLZ#37vKoNrZvJgChLf|eS1v+1&K-EW{aIZ!oa4&X0 z>0aVq>R#qv?q10af23WO&?SOUUQ5SD?k9E24htOQ{d2>4H{i{1W!5UkVx<$fB4 zpqPZfuL{8$3~2!2c@l!nBn1DrZ2g@NMsvSNeA)>@k*Y#pLO$6ivNhukJV8`#@L=!aBeEE%)0XpnPC$fgtUdxZiV=Id&g(zwbtK{4@y9fKXiIKJ1pw z@dglZ_h0rI?%J8`_jiP1RADpB8`yXCwznQq)KMD@LiX!teJ@Hq_)t!*}2JSrD2xGyU7{XwSh zmI|IzANe&Rl%{OAo)R*GQRo{XM2HbmNL)l1(U)qp$lD}4KzJ2|*NDD*OLTaI31u$A z48jWmnTxQY%thGQ8gv2G|FkK0T&-dBfp?7XM9?Afh{%X25MBgfr#~VlA{GRk%Qk{O zqAs?rr)`^l>V-91`g9n#Eo=B|_qpPml|moUFro=Tm>JPnhJFu17}1oVe?<#@hn|%a z?+z@rhh9}jt93-OECdm4WFdIHf?rS{=@`-H_6&K%y#XN@;O-tV2!$Y(gg^~f5%$Z5 zoJv6mrKKPuhLRBAtWOQHh{z-%7#@*D7YJ{GfI5ZlXvn8nqScqoi@?=bf5hmBd=L(R z@Qy#CFk%b{?}G4t@TB1Wh)Ly`y+{bBUq+m|OeEQb8&_=2!MTdDxa=tQ8=`AAg&WOO244&6l;2*+v725(4zRt>I=cq8I18jO7rZ-Q_V zgpd6ZZ%3eHodV(0-~oRy0t*Lg>HlHG5d!`+2%iLiKaOCY(1N)wHotS97Ri|}>V?-H z`oK%h_~D3C*!HxxZ4cpO&nxZQxaZ8soBI9qD)utKe-`lted`$l{xcc)vjqH^@_?T^ zy>enyfc~tSb|~Vz2sw;< zQ(Ft|v>^ri??07jnYt@QY+{BB+r#2lg5|HPULCi zktbuB9-NG!1Mo9~=xIhE{-OcVDydmXJgq!!WcGWKWaxjb;3;)bJ9v8ECiHy*(Dx5O zKbWBZU4{Nn6?%~^g?{HlES4aYnZ8yuV)CM!PnCRbyw`u8}fx&tlszwQZxn zzH7@Dk92BbOruB<^k0*NhYu;zsHf;zpW@xIUG*aV5l!FVWPIc9gcra1bj6q%G2g(iZ6s z-9;COl~LO0h9-Jo;Qbn%u~8Om6QBl~?iuTASv*5NRFz)9>=~YGfm9TTXq|%PE$QU&khX z;TN8&G5v+`he|PzY#P~uzO@;8Y2w}FrA4+xFHNjjo|k4Br;bo^WP2I($aXU5wGi~k zmLw@PHIkw}(j~GVf_@uu$dUa6pbs_W6>Xhg*a-`)uxaaP2@KPkl&(2phs>eig0>6uZ-wmQ#ULq2$ z&6>zpB44Eo#MU4tDR%^3Z*i&b_*Ucrg8uEu{U9cT*w!EUPUO2Fwga&PLGNjkkzJUk zq`B;rHX(ORVeVKSqt$nJ0-9Ji?IG;Z4911q;LFmzGzQMl`+ z3A~7^8&!`$?+0Rk1@tJ?_)+C({3eyQ-{YIrZs(JoYkKcHbLxEpJ*p|TEvM?Im_D_B z|7xATTUT%3^HXPb!e3TFk7^l3^|QDgQLSXQ53Jzj)i-Y+)f3r%8+)fwxN{Z~7ZMlM zHvsxT0)4Ow`h6v!XO)6}AAz0*B9>Z}W9XvN5p?&{j(T+AmJ6M5lJBLUkBk~cpl3(r zfQU~H@kixG<$*X9#9_e$eM}SutVB`3ikMDJkD`DT5$h>v$YQk(P>1fJD2!9l?6^iv zjhaTF<4+9_fIbs}oTX)N$Gi6%Ufb8<^To&ZuIjjCMQa)Kx!87|wr#ht_co-BYrXi% zM}Di3H>DM61@$!^jasCDzEB2z1c6TBGWhz}=b%s@SsJw#LBEY?si<`U(2E_Xqc$S= zsPaL~Rzb(`ex1-*nq05XqAd|g-hVDHYxne7bVL zn}58WwB)6FRU-RNK80IjIhN+?i+mY%PC@=_8TtDwczyMe@1y=eG_lJq^(O%;F)bjXVU9C;x{j8^Uqvu|zEAD&#`KQ$pW6TA162w4==#{U zfwt|XIp_H%*2IC!A4q*NHZ>dl_8d!Zb&Q%sHZz4KO}>FyWqRJWdyg z^8ix-$agwZGf92NVbNKHN@nzM5Ep>>s6To{^hgjN1MzW!J}B!3(RtB@2;%jXSfj^8 zk0lTng19IE;{6EB16p7%oV=&Uw$rVX)?_z2wX91+y$s?cZ2M3-ZCBKfJn!qoJf0po zJ8i`NGIRInDbdpi!p!KYvgV<1hv*pu;bIMh);FeF`622c&5c&#B%7-&`hL5jUnbmlN52H(Qy{MPNAHQo^(H@vYlDaT8_{ng?&4k%vn~OX2@IuOD&odR zABcVj5eKmd#5FjNi#~{0zOThH%$?h)^12S}tXUcPb1r>`YqLn+!`SviZQHHgdkE=? z9oNk;)f?HTTgo16tA6XT=o9pDwo9JI|&%{S#Dacj`@e2gacjvic#xhT3p^#Dk?E`V;aby$KZ4b z&EJj+UOpfvF->FIBIviVXcN;;0X?RpGIfvXN}%slLEl|6b$_E2^qvHIFA#SHm>zR4 zg6^>ykI_XNX^6OdF9m&Y4CSqfNsYM=L?rvm{+J;#=*jN^@wMQAK0Icm0{RFU^jB!y zatQQSwV+p4Q|iRz$BaeLuRkjtGcIO4fxZ_|Ysl+7F?i}JW}=q!3o`~S`eAQk|M|ZU z9#MPt7W66*^vT#3v~8blbK;5KG40lFS-ii};f>WI%78vKMmhBqGhGIKUj;9(f<8Bf zPCZHS#(q*wsg{&r9Aq3U)t2f=b%DX!A;*B32Fwg#9s%|vV2=Yc6PQ`R%r1^u5&(UL zsZz|UkhqxD1o~Sl=m%ue{vnz6Bc-U*si&BAAYzDwJcWy)Q%^C)j(T)~xSytQ@*Oq& ztLiImj@d@IZ;8QK0B#Dr>yLRMW;=-Qfp{o*xbKdkLr+Ndmu1`!($Kw1xMPsUbzYG* zuBG~F`(pMZ?ozsxA)!Th9GEA7SzHuzAchV-i64M?IDk7IdWtFM(9@F#ey!FoqI0c9 zZH6y&rA>QH#vKnm#gudC>EW-MJ!4HxX*}hTO-GlXh`ArzT3%9L2vPu_ginYqH$693APvf}7Qk@U+6D{ms)s2dE$KqO2 zk(e#!;LMZh0!&w6x)sGn$HoxspMiKrfjzcTh&i^hmcp0cdC+$E=vFmnoLKcn?dHx} z1bb{%Y+Fub^|ia552e1{p?^{8U5m~h(WCWH-GSH|vAC;%hCQ~X4Eh%pynF!k*m|)o zknXn;G7;NS0X;TJG3>FZ^FjPl1^rwJ=s%W#9@`N?kL?8FR{_vtyAtTjW4qG@EDqJz z${pG6Q{V93*!~22-&kDt`Ub@F{@4Mr13~;2#P5UV&&8(2W*~sqhfBl`i_IhezXS0? z0Kkz5O12ij2Y-I9qw84Wy63*{Xi3reX@Ye)HW%CGY1@9aC%eb0Rb2{pwyYd??xVE4 zG5{9DqS^4r7Lq@QE3Fy+*l{$Iyjb2$GW1(@geJz~rUJo^TRUjleuc_S8^{)B!RTO%Ycb}7OBiwgU%z~XX+jkNr=QruS(?yEq&q~h*J+zsPG zchQB%8_d3tuiz`V*?+H$NVWXJc*)^RofW&l!iuo=42TL(C;6fVsre9-L%C%q4Rv=2ROa_D7Id6?3YM zVeS_DD_!KlOPq2?uB(|+Vz0zrBiygX{soc%lIZt_ctb&wK*9tKL7KCB1#cK3xEB$8 zO`f|^c4eHqc@197^^yyc4x})gyLl}kW^XwawAU6qaH;W+9f$2YSU=r&;MHV8&>N0z z9a;p9{y&o*ek`%-(%2KPeUNvcM=63{w>J{M)f<6amkh*pZxqhmBx8AVx2jDnYNAqa zWv{%Yu)|wLM&5$Rd!tZn@yY8QlK}GGn%;zvntpG*w-!h?kiz}m+TJ=KIYH`$C#4u% zSY%FzPGCOuHk=$X`5Z|0R7;=n@#BYLX_febp*itGho_Co%qWP@Ov}bf9TVukxKq_?=10Fa+w|rRS#&D@@AG$;m40oKaAamYJarcYAM# zkeaK#DIj@Pdpm*@Nnu3Rzx6A?ZqCtuQDHbFz zNWOL6d%bdP^`?8mRFFGUgo#e0m$&;N?j3tTc&ro{7G>j zRVnh0@Q(CmgM_N4AxN!>|5Xqkl;W)1f>Mb}pb|3pee^Z83dUs(!|$nAUOTERm|c+2 zYG`5B*sQ_{tqM_Ghm0xAC{Uk@FXyRRG70kXb4Mi54F{=K-jMP1pX$r!dns(dTi`7O zsTxSt{ob+OaUk6VlAM9TTtMYN+hk#{$b|d}sTO;Nx_MkW6zY#X=*2SJ>kU0|MZK4y zx1q10pP@gnD}Y4Td-RhOC`wlN!cQlao&?)l1h)$8DP4{4Rp$=-( zm(*P?OoK80_)Vc9ZuN5{gE$Q0yh4XnX^q zP#=5C`#!7x?}vCDC1cz~KCB`&CHN^sA^`shg8w8)_o(on zM))aEl|34|3mq;D<7ivP@A97YenrTmId8Vw`!z_-ZwdKty%@2rMgF4qM?$^@NG$`% zUqUp?NqGAH`WF*Ma-EB}#y*eKaojmv?|*Ti=ZL58*~5MJVI5n}eW)WX2!C7ta1aq@&0 z-a69n`6xXT*^4UbSYdjm)!zPSK-9mWgSNhYAoZO5bmdo*C(9=c)DIuz zyAPcL-(X)VNN8{S_Q6x{pYateHzzASVKeE7nBSNleQ)UQIPz&FY_2Au+5t}o9w z+L!Mu@S$Ylw+#SkAV`Bi8VpkEI^S3y&JX#$zWd23K$m(5jv4bDNVw}vKmX5`|HfX! z9r6hjY^M@((?Cj_{51MvrFL0$?GkzyW}z+bnxBQ1KaEUlt8r=h87VpFg(>D-#d)R= zBi+{fX8C6O=J@9N=K1FP7JxJqq;!xn02k?`Opp+ito6Rfd<%Vxe2@E{@GbT|2@+z2 zqWB0%b3s}Q(pHdg#rHPfCe?you6LQkBMkVBD6eOT)JT7fWc1A+h&{Qh(S1`QR_?+xi zOBoMK9fX9Q8TnN0tstT2gi%8Se^5QL+W*kc*tG01_+;Vmj2v|1unQG+zYl#7zpu!* z2BeW7W&3^We5g%wK$24=+>%q~+vvmP=Jmd3eVcsG`JVS}_HFT@FpL5Tr;2$XjRq+n zqymr%(JAw7$LmGBb}3qZ3@P|=bbE-je7R-dv9NX$x*kcnSmPSy_a9Ci#FjcAfr&@~ z{y@s8u~`LKIOOQCYma1Op~bR6i`XWr++PV+rFq{z;_sUvja60g{(v2$ZClyzP{F6t-Hu~+;_rD^t+=~}kla8ZBuo-qH|~SG1$TFMAKcyDVQ_};ckY3C>kQ00srCK;>s#M?Uqa^4 z_dZ>9&e>=0XFq$NSvMR!K;PrD@Bj7yec{H9X20i)zbt?HyJv5)#8V&qm^nZ{S_;<- zpJ%C01`p7^l+W{(@_Fw3%>nv<*416=>!rR^TkRXQ)%F?OYTqyQgY@hxJqM^s{P(T) z>x}>0I}2H$`Lwfo*Xmtc8KKjq=ZydFjZp7KL+0w;__u~-=na=|JjWBw zt*_kS<2SDT?s$CuZJ+4fjL(k#?PuTIX5Ay!Tyw=suAk$;hfbJG8{vO>@x5F0l0?A> z^&)!3bvhFx)Vrnf;?Mex5t^s6;{RDY)Vpo3DzfaIr1sUhgZt{Qy`0OSqt5ux`)Y?? z>g3NuuzXnQ@Y3H(N0p8)9V4@BDzl81Sx}jbky*ycECVvj`15-A9NbrXv#<75`|5nX zuP#*k>au@@aJ>hrRfny);MY}m=r5~Ih284t8~ndtZzt+Ky7ySM=-9j$P47KUdM?hj z=uYZAjYaqGU7C7N?>$2;x=W-71;}KA%ign@%yWJ_ndiQ9=l3@!E4_H+PFG!Y%9L3U zt1LuO|NL!HK^~`Fhv<2Vd{kqv7^m6kO-w(_NDF>Tv0B>`bq&_kqEQ zf0&7XL{0p)dg5zn-~2f9{ii{R*%2zNY5> zRq45LdhhGfb5pLlf4len-|>2SKj{5X&Hc^NgK%MR?muNdKl|-`F1pio|GY0+J~;IL zTMnIe-AAp#x&M;Se)ZeWetW?~L$14IrTK1pV}U8bDJQI-nfq^gzt?mB-Qe6SeT=<= z@;v@yrv_(;GYdcB%%o=Q4mD%WtZJ*?`M+;fr{Iv9pP{Yl%&TV1S%7~QQZsg!p0Rt> zj6L|T8FLn8#+=2Z=k8x-%vs`>8Jl&EUuJBkmYT6&=F2HN!X`T0zMXH5R@?d3h4%Pqg*CRG^gr|EEa&K=4yQ3VUk@=~PFwBOhkv_QXL@5W9Cub! zFKQ*}c|;K@6JN^`Db8x{r$a_vHqT6FIIBBrIBPmt_+1bU})!EJ2-Pyz0)7i@rXK!a8XJ2POXMg7a=RoHm=V0d$=TPS`=Wyq5&JoU$ z&QZ?M&N0rh&T-E1&I!(m&PmS6&MD5R&S}o+&Kb^h=S=4;=WOR3=UnGJ=X~b^=R)Tq z=VIp)=The~=W^!?=St@)=W6E~=UV4F=X&P`=SJry=Vs>?=T_%7=XU1~=T7G?=Wgd7 z=U(SN=YHn_=RxNo=V9mX&LhsF&STEw&J)g)&Qs3Q&NI%l&U4Q5&I`_q&P&eA&MVHV z&TG!=&Ku5~&Rfpg&O6S#&U?=L&Iiti&PUG2&L_^N&S%c&&KJ&?&R5PqoUfg4oNt}) zobR0ieD3`2 z0`7wDLhc{jh22HmMcu{RKe~&%OSntAOS!$S1b$4lZ8TU`_pWS8M<=nrx4Y%pG+_u|syYBMt3hs*TO76<;D(9zuKS+*zWagu zq5F~hvHOYiJSII)NY7K!^NjR7Cq2ZnFGG@WApa6fAo_|VVh!kd)!mLu5T?#!?C`!SS!kki=TMF|^VSXtrD1|>r zVG$`TCWXbNu%r}vrQk}TEQMiG7$JpGQs|R{FNIJFu@q7%)TFSq6#gWIWu@>JDKw?f zmO@twD@b7_DXb!e)ugb76xNc$I#O6q3L8jaBPnbmh0Ua}xfHgL!Z<06m%>(3*jfq` zr7%ef+eu-H6sAdG2Py0%gCqZIxr#UWChS&Fktads*8NUW@!imOR+4JocA#dV~(o)kBb;zm;3M2ee9 zadRndA;oc0952PKq`0*dCrWXW6t|P&6e&)V;to>WNs7BjaW^UMA;rCXA}WN|u!7l+xT%npaBmOKCwV{Xt5LNNF)CEiR=crPM1WS4w3m z4U^IcDUFg+pOkzlg;I*8luD^4rKP3xCn+r}rN2n2DW$fQx>8y}N-Ife6)CMIr8T6q zmXy|!(t1+bKuQ})X%i`JCbX_EZ6T#`QW`I%t)#TIlqO1Pl9aZS(iAC8lhO`S+DS^g zNNG1I?IESTq_nq`_Lb89QaVsd2TSQtDIG4QBcybc5T2BdlhO%NI!Q{WNa-{wogt+& zrF6EG&Xv;nQo2w|7fb03%6a zD5Zy`^oW!mlhPAXdP+*qNa;B#y&$ERr1XlEUX#)rQhG~D??~xADSaTNkEHa8ls=Qv z7gG94N?%LqTPb}nr5~mAPqBuGHM3Z=iZ#1fJz^Ebvc#HG`3UZ3?&t0o?w9UY?myhG z-EZ7)-S6D*-5=Z^-Jjflx<7kEyqUb2y;;0jz1h6ky*a!duizEEl4p6gH>Wq3H@7#B zH?KFJH@~-lx1hI>_XlrbZxL@%Z!zzW-s0X8-jd!@Ua#kPuIG7WZ>TrS8}5zpMtY;X zir44$d%hQVp%;0vmw2gH^=e+-TiRR3`;+%)Z&`0S?=N1%YkDoO?RC7ax4gH4x1zU_ zx3ag2x2m_Ax4O56x2Ct2x3;&Ax30IIx4yT5x1qO@x3Ra0x2d<8H`?3W8{=)^jrGQP z1KxOVOK&T0g15D|jW^NT)|=!__O|o>>P_*cdegk^y&b$Ay`8+By;6ZuD;QZuV~RZuM^SZujo+?)2{R?)L8S?)C2T?)M(>9`qja9`^q3 zJ>os;J?1^`J>fm+J>@;^J>xy=J?A~|z2Lp*z2v>@z2d# zz308}ec*lQedK-Yed2xUedc}cec^rSedYbb``Y`)`_}u;``-J(`_cQ!`=|GFc}RJt z^33H~%CnYdE6-k@quf(2l#At3*(%%RIm>gE=Pu7vp0_+-dH(VOupE`+a#Bvq z)pD&|FE3qQru?V!pUcaZmn;9J+$cB8t#Z5EDR;}umscpSSYD~Ta(R{Vs^!(ntC!a( zuUTHJymon=^19{q%IlXmC~sKasJwA`lk%qJ&B~+8o0rFwwN)%`MhEV$Cbod}7Tn)&gQJDAqz^{XwjS z#acwHMa5c7tUrpixL8YwwWL@}iPbBXBbFNyRwz~^RxDN`Rw`Cith!iBi?xhce->+5v6d6-FJd*sYKqkst0UI(Vyz(7iejxK z*2-e7BGzhRtuEFYVy!9GT4Jp&);eOXE7p2qtuNLFVr?kaMq+I&)+S|tWU)HRIJa$`dq9p#QIXKuf+O?SYM0v zjac7`^_^Hhi1njbKZ*5Ev3?eNh}biUJ+s)eh&`*=vxz;s*mH>8BX&XTqSz&|EwOE} z=M;M`vF8?h9Ydp@z}7kdG*7ZiITvHu|U!eTEX_M&1hCiWl2UR>-Y#9mVDrNr(P z+Y#Fp+Y`Gi_E52hi9KBG5n_)Ndz9D}vHQgC7uy#*6gv_-7CRBUDt1lmy4XvLy^Pp@ z68q0$FDv$PV*f?#hS*K9TVl7x?ugwLdwH=}5PL5?<4lUV(%yR{$d{>_JLv_B=*5#A0qalVjm{<;bQ+y>?6cJ zQtYF|K3eQ!#6DK+=VR3QS6h%K3VKj#6DH*)5Jbq>@&okF7}yXpC$I$VxJ@S zxniFu_W5F8Aohh~UnKU$VqYTmrD9(u_T^$h)@)(r$J9IPnudZiE>bYWYNs0xg*brPB#C|iZG?JiO>DJ;T zh}+FtqtVQwoTgEp&WBR1*IV6Aw^ph7ezg)ey6sA{)oE2aNv+<98qG%3s%BBn(kRd7 zL+Q4fLDNstN}7aeC2m!DmS(`;I-PdX^ut!OX}q!XHOlk(P|{|nSl%|=iQgCzSbmuQq1^Pz-E8v30ytW+B*PY@-c!b>adYBj0Ftwt?vx3VZ# zYLu7rp(L$#8dU48O44Bo#C4w;3WKl`HhpHL+6m%LltsBtqr93AC9ZXwwPw3hNz(>z zENnCT-DXmWyR}wS>$Gc~sxdD&Yn0dXp+s@ih?~`_T3PIuMwnC@bwA*>HL77NZKYw* z&OXZ>8s*J=D83(5qgK$Ugla>^)wo-!wVItuElJunznfI!x-l>JYLvJ0p){&~)$ewj zm898iRN|yruQcOks}lH0(ya&8W?b!LpXDKq@@_tqZc^_AwK%BM0=8zHsK2!%CZ}2r z8&TX$(@r;w@|Z?>KOai99yA(_4)YQvptMt7R<{welB0T5kE2#I4zeguYm^W3p)}(# zO=?M`=Db;n(?)}N3EGt)3ZgiyH!%Tz7Uczv@^LuDIpjcU*`X8%=<@@YPlMkDD4Rllv?liDS5SgAKUEP-w-@LL$>u4%{K(kP$jLuodn zM!j8aRnnl%v#3L+p7K;dJM{fpQfqZOh8=rfqkNeUrB$n^jb?{MRS#ojEo+r#m{cpF zUj@HYZ-t>T`=4l(f8<1otL>1tQfYLW%znrW)w}Ju5^;j2)wGsWlX`acztkw-2~e$?pGJNXwbEMld>J~2M)^4(O1;tQ*19Q9ODkz{?$;u< z#&~VbBx!VGztyN4&teUt6lThYQuSLQ+fvO-%ja2|X{FH!*`&3EZCR@ZQQJV7N2AP= z4<(F)mXCW;N#YjIQs*$P1?);c38Sc9ZQ>SWE1iaNg(#Iyh1v3kn5+jo)YB-Xd?-mRZMOV+jH&Mi z${Xk0=fq@kns|U!Y)>n@_lJ(qD0V)SW;<;8G4?)eDZe$qjx{*=aRXYdR@zk_M)njN z+OJXO%7@|yQJt;N>^BlDf1}l|)N73pCop1Sf^OnBjCqMQ$~-wy*f58dcvsRoY-6~5UY-P`vp>>TiUp|x=&#u)8F~V`E;ulO;l- zR-;fTlP5}QH`;z2c01UW8oM%L@8h*#09rwSn}H+iXV3kiEse5JK9n$OVtx7DL5u;2 zJ4{KV)(-JuumuS_2XmI)FDq!2h4Z1L&AOk)xRqT$!j376)(q=WrPXM5tDSbtqZoUC zRgJP}J`@&ejWec+PZ6*yV}iYU#MTU2^{CYflZIb6=4CC7^2dBAI730bQ}ZjSPoRu* zk$}e%Xk#g{$bL7hrP(*OzD8MM^xP}|Z;?3C^C{CR+aY4^Zzi<{?+I_Rlj6U$(^{n- z*1MHzJ!wQq!dVa)_IMMGuvEV1NVyK)wbKadal2YKP`1-3 z!}FoE>zyd-bQIyzVg+{~E{KQ{yzpwvZxS`vL&FwtuTe(kLutf8fE$GG67m?adRdJ+ zJEq$7*@%rGNn3`8w2MYT2{@xGxYHm6YGH?KbsVv{!PFDucL`xS?PgFT0t~XT=hHJ64|Tw)=(T0yiYr5bX!$pZ5^#qs`*e_Nwd-DVn&iCbXAVgAlWWfyu71^EAqG`A|9>S^)=brPT~MwYnU`jds0(5rc}wTMAp|Ub$GKG-iCS zV7h9JR>C%c3{!k7W-B26?pC{l%`A}-44Qffic@@Cp#;u4*GGua60*bhWZK<{lEBU-eSvwz!?-TDpLs!~w z&xry#iC>H}-&NLygSS$TamSizH%P0H$!XI#iQm&G8|Fia$fJZQbOGls3>7>T`vvAD ztOnhBt<7#~8J_pY8fD{rD6Mt`or>kcf587@$q}XEf8nVn^;+boXgt%J@`hWjLwIGU1_zT@|YKun}`(Gns!q5OB1s| zE(H28`z$|dlrcF`SW%q0D(gk)7;lLX_PJVp`<~V->;l{f@@{@>naagtFXAkHvFz)5wg!Rw?>(e52amgRv`&EU(%RU zEFmB!=^9jsRoIeinu1&+QA_rXxfR? zTq8`KafEtUBQmKrv0sX1gQQ|Dlh0`c4dq>u(2ujWcvzoC*goHz!rs@qRboh3Zermi z#MrX{h`3{1F!oKWk&Rb|MH*$td?<0+ttPxFb_W4bOuz@j&cPf(u=UQD2yAiB3 z-yhea)oJ+b{$?$EdJSu8l-={8gw+NL4YHm!lB~>2qe&vVoj~lykd(~?V$VQXUZd=p z4<*JDCq&p4*a&uGm0*$}C1EjyieL?)+OiD$uvIjQ?}i z3>#$kLP-AX?60X&_Q{9Rjbc#RL8V<&yrjx|ao%^xM-qGExh6r|SYzvHl>PFd;Az*Q zl=oB(R2)ehLHZ7c3eSQZ0+b#sO!iqe)+h($Lm|L!M`@^xZv)@OC-QFA>g`Ghg8&m3 z;XxTE@#Y%kpnNDkBwL+qRE2Ce=e-gKv0aEI+wE#V$~)EUw#P=TL z^g4LTtTCvndK?FhdW$4}Hd`=kYmIVPP83L-YS>XBD%LAz^T6)Fh_H~GxUC@*Wz7C$ zjqvj(K9tmtf<_01wduo360E2* z5*L%)0l_kfeR%5Z8rxZ;9Gwp(N_~8KxHi@jCsaDiByZDBv+eshwpo-tG|I6v zeu8ybs)=F_;o0!Pk}lQ^RSJT%T3YSmIl;(f5%$pt$LD(vMX$5O)H_mnq6mplGa$oa~@XGD)CUv?&oa5Rp!Kj3?Wz4HR7*fhiR0PXZ&sX z7(=C(gZosm7se5`jRlSW)kc((q)C+J@P{3x5l)?P1f|8}m$gW7C?!pmO^>>Tz%@YI zM6xYSeZzJguMtkq_oiCadZ*fI5kp3G6{{e1sF4?9Pm+Top%yhmV<(=XQKsiZL0Ja> zsS*&eI_m>SHslVh-Za7U2ft=yJcdozC}-tEX#}lyH-In-VyHv1!YVC{^BQubbUXD% z4gE%T1)r-?&dG;DI2tBV(8;)j}*XH zZ!986ZL&AuDbP0{3am$|5vyFTQ7*`b0&@sQjH^u+1&dX~s??es{eD7P)vx0+B?ihh z8s(yVDEL_o6o=Icu_9|M!Gj?-g|2L)ZUKn6-&n~vYLrXzp^#O9m#*WrHexKKkF<@X zN3+uEkW&jAFbGDTd)RFn<+6Mz%`gqCew|1aX#jpcD!PVGt`JRVr_oT!gxIiOcWaa@ z@}aalQPP2kWLM&T!G8Hl-U6+QcLW;}sh}mhk{{40SLH)N$AUA28l>7qa>(D%w?VvD z+HfN9I#oP&S8*z?7R;1OCr~(cV3!Qyq&uNq!@}aaF1jH@!1W{{HtEX0S4N{-1XR{4U zLEvxfmzOolP5Dre=;8q3vY-f5mYDd9><3gbG<=Yt2@2bW5B7#exg{S8f*iIUehYgL z54@QWvHCn!yV3NU$T&l|s_YwkSEJmP4~6XzL)&9ll*ExRn0e{Ki})y;2qik;8h*=1 z8s(0BC_cJ&VqcZ)0swXg? zC7_C35r}r1sOXFs|7(qMPd=2S(@~5ETt(Vez6;r-rkWB^og*@7 zu}kppI4kjuPzXR-D#Hvh(#F%wa$&>g(kPGSLt*_U^#qopqs}grG%A*aOv3PYRjv&w za@LLwpI@Uqo)aZf4l*8o3~|ItCTvAYtCH;z+aLDYH`v4B3u}}o^Px0j1p1tlm7t;a zB7`Ay7|uqLK*^|gS&fa^UtFU+oe!lNscb#IULBf(c_9T_?~-oA9utHIakU<1cja(L zqdc1r1s5+0l^y}soq363yuOg=2poDw?MPL>rJK1`!LpAQ8B-%mKNDq-3N1w|zp zP@m=8LY?2J)~Y!D*_B+;C@97SmkQS)+P^cXp}eep|HNl zOe;BK8&4laCFj0R!3LgKP;EptlE&Gya(GvxyqymPxnUcPlaGQ{onqKw)QzzFY#CduU{-P?>=4M*IOVdlKTe~3o(}~A40i>iA65sWS9R{!v1n|fF7ri-*NBpaPtYh| z=0oY=Rn*&aC@AHFG-68l?)YOVCry)DAQEssGI0t5Ye6<^IQ#&O@^d~EqLxNg z2`GJ)XNxIb#3r+In!LdjpP);nZg%z$9YiV4loKTgAdh&022KXv1<4AIPt*@6p2H-p zA{R5>*pV7#mV78p|vE>X~0-jp=g?rf!Q~9vPPLB9|~ntEi`G(3iHm^HA(;(|w0M>V zcuka6&?69;K9$CXrgHd&8pY0s(jlRm;&bu4RV^#YFs1~33eG-@xEtfF8=lf-8fC70 zDEJmFJfoCEo;oY}?!=WaWi6Qa5bqyyG|P|-zgnZrlMjWWNah(vyvAg!HKr0&-4up| z>?L{Fgak=;joqM8=F5kIk4i*I(O0ca(F{Bc+(ipJrZn`Z!trDb-R|&PHOc}r&hgh! zWmAGp7J=8s+fuqpwbGKHk-%P|wdfjia+gL}DBp8XfP>%=o-ZX-!h2P<(uva2qercF z5(G9zUEc8fHOj*IP@2@P^P9-%rlhIZ_MDSGi;Prq8`T&NhQW>u|GP$6G#?68WC_bF zg|md2kI?ln*t^(0nN9e@TP|$h8n@vWltw zC)20mq!z*yDv+qx%%XgzQHJM3A-&><9VMo%t4tNHHwqi3pK=`zJFEe6LX|GrqpUD%+033qD*iZwY0LWO|gJ zPn(fWL_xce*%|(`M(EG?9GoY9(nS(pZy`RVWRA05`Qi=SST3}CCG{p2~QZIW4+ZBJp(%NaL7_XIp3-wDO?}9mGgVa_wCuCYr%|f;Q2c6#ydh2( zfQqPCd^ob@EUxDsO?R(lh)VgriU3hSM@FeYS z(|BWl)F{j3LqQo3lgOhM1iJ_d=8LV#|LmZBZ&IF(sx$k>dNs>EopN+%x*iU(p8dn>Yjj(FI=OC+tmrWM5 z(^h*$C39<-6e2!0W05ro&{Zy2g6P*ee@ql(qAr)KXX$YHsPfrD87x z1f0fnlL%@lo@A>|6kwoircu_-hr*VitO$|{9-lYHiA6NQqDCgzMOH=X&`=GG7^_j% z&xbqEWWYhk~s~9Kw4-UCFbkzFTz_?JG5}Pj5eze1`vWghrW=4+VKpf`qc8+DC92 zBcdk;BOTJIwW$Uo4#S#e*VwTdWt)5`U3dc)D{ToeG@O%2(`ssyrm9VykGu2QE89yg6zExOC#H}@!@?d`i zxHnvJ(rrlM@bzM2-=D1!{+jPOs4O9q4@wen$`AT3tYS_u+EcP6YaE=$D!xFYOwEUq zl1wEFjR>hlksjwH(LRDY{(y65Q6NjsGHxR-)hOG~_}ik?yG2tHNN=+C*e{jFqmYr3 zW2#$P?If+4XXI5HVaI&WfjES+EGC@I!5K-ZmgPFdP)A6`A`^jL9uGX= z6owJ0lgXi|qK#gk+(`CWUeqWDw@XJJaHW+VaDY@|xei5@x2wT^gOqa2bCh4KP|FG}+$1mfgMDQv^q zR|)tiV5e}3M=@fr4>ZbQ`B3P0RHqRVmA|y3B3i`)G*DSmJ4J;yH7(>?4DaYujqK|AGg7bCw7-dpiGa32E?jqh{u{e<44Y-5suII96nqDaa@NoOjY*-<*h<`;$do} zyXY+F0+L-@BYQN;iTO}cwh6`XG}NQ#0s%`)H6o4ppLASBW=AtOqbJHpTcezu4}~NO zUOWk$I$S%?LMy+zY8L8KVuS~PmltO(%gA{(%BlHKBK883s)Q~KYJI6#h3>t`MCo)5 z@eV&}a7QB-(kQ3rL!k{U9SUeZOBEg{*k#x@`j^lF3mqlyGQC+c`()%|8fAJulsd8r z@|^fXA(>&`7|)`5e!yB*5pa{xsb!JF&*r>KpkM(&H)D2uY1M!6;*3a=hUf|X1#!LtN3U83BaMzB#tL_-|nV^W84wYF3VdNGX<(7OX zYzUMfc;P;(BlbR-Puv%D6)DZm5hajnGv3&i8s)ZpC=`5ASBPw$rh4p35-n(5pmzYp zNUNSXhUYqRqDHwRABrknCruB@5~%(=RF*0)TuHXuM3|~^WYe%?f7K{=qWA=B@DEH(;q4`x)H6pCEBBj@ju*pzw9LtJ2B3(#_ z90O%njdEW;l&)%|Orr#(0i-13raHigFnBalM)atw(zhhLlK0Xm59C7`Z06EtjRlw! z#kesqY(#pBsNP=)dPwkOQTEd)59LEq^e|qe60{@UKo!gzL#)ryiQtK@9Mpar*79JD z^7niwZ6uBq0-&cJBRrQMMQKUQztV<1Uk|NqRHyl92nZ5K!o~RL? z%=a9K$|=Oeam9aOPLQ&*zTiV4#X4vps5UaPxFb)~C{O1@;bftQ7j#a?A4K7AQjI2&_vzD9XI9}2;* z>J$bI5~?ZyEUL|mODlS*y%t3l#R5XsfS);t34<*FiZ&6IlR#BW7hLN*OHCaaQ03}1< zYGm0)-l0+6%!fj6qAp1y2z=xr@Ox-0kf)#s#*wAP6Qb0}h{NvHC~xOO0VGxTF;yri z<~=Ftc_X0&0nUvkm<=ulF*u8n4{4Nl^P%vKafgT`ak)8-$rUSo7(6(=!@?SFCVJuQ z>_4Va-p_|Z|0D8jkRl{=Fqa4d;awpt30a6VX&oIIDxr~2Ym^W3p~UC}(3{g#V36IV zPZ9H?60Hs3nww6V_&*f!c|H_UQLrNjL+Yg3Rh0(wLT424 z>YQKnuVe*eQQp@mU*1Rme3K7FU6qqmQM%9-nq5h?KgEo&RwVOj zCqyX-CBoS^_N_+wE*}cNiX1UPE4GDmzot?xgLTHl0W^$P4QC9?|C2`fAs-6MhVd|Qs-lUS zFQu!(>Z@+3^fZF1B+*B8TNb5Xqs)~Lg)1_+2u!uWLw~^RtG*AE>auI7WJ7349a`3V z9TjVod1iclr6fM-M$XYY*bj{)KD$w|mQ@722&zd<8VGfbFkjB+;KBqd8&m;4Arg9B z&U^Z!Fh!wCgi{A%^hX-CtVUTN9|~z38if*b$I;*)&|!!k=)b zKuL&}McG87ER_$1MqBi%<5^N-I(0@WJtbLocD%Z3idm}~^D;)GIQdYTev1}?0H_PB zi1b)(HPtn|mT)B`YLO1v%Ivd@*C<{-6zW<~vSUtYEH${22fY~RK6Vu)SeopKZn&%(YmD2dh~E)uaNu1&M56M zvQ(~Wq4%26Cw$bt8X?H{9JE@XS`F$LDH1k}!WIHN<^&fXy)LDaG~Lgx;)66wln;dh z4QL~L7pi5IKdG36F1|Pgpxv%2&W2dbq8zSKl6)wzM^rSa0^F{u1)&BM=1ukAq6Psq zEnJDw?PJu@8l{>Kg(lr>J7Nfe2jw9_j1fnut20&poy%ph{MlzYL8H|3p>#-hscyIE zXVnRokTS+vatKhu8g*#9OK_G&IaQ-9lMkhVSejBZB3ACO;#sg^q+ba6+f5oT`bfh= zV@IB;QU06{1=p1Hq$2WRzOl!=u|WkFyM`c-NbKLDiSsnda`{k@?jf^)MO0Tfu#%xg zDLa1AU0`g$A!B#6-$@I~oBIKxsR8xjjA7$s|3XRgr zhtjUof0};5X!TWo60IrK*f8!CQPDZN1Bq-XAVyuQQ9AihnDiF9C)TfOORH}f#1Fvj zgZ8Tvk0Bw*KFduSW%(JmVQ}|cf{hfM2Elk0#QNm&@xZy4tD|mDqFIU&d)=-PR?PPt z-1eK2BEZidtjzBW5HtI+BmNN29DfiJNx_Z(7G z%;DOxg1IMMRWd@l(t8b>jQ;AzZLg!A(kN@@Ly1)TPQ~jDHi+kt1b~*fWOJZHP+0}A z{Mohjyhd3&9}006wQML6$V~9YU|v+&XM`S!j`XThmV90oSSDz3>YWz zdm3fKd?+XYp;$1GDON=DN2I**Do~=(SCVFr=3e<&qimcH1vj$AOhZ4}oiS#4#M%9`YeFcF87g?*D zhqxiLh4d}Wa!8e#G|Jd~C^f3d2DKYL3SCgB1K}VY7ivxH^_s;_`imscrige~(u2Q4YuxDY5emDT|V5|4sTqQsG5 zK%G{r#zST1q%yZgnUD{Kw-O}k-Uf~l{up$>+W1LT$QMMAJ|#L?@2IkXM%gAG3cW$e z<#CHF4VdsecXoy?sE&`?8A`zbTTPllalx_2&Kor+}ng?)#sdz;x63Kpcabu`9 zq7NSzxfpM335_y29|~5AA}km%u8w7WQRkpID^xV?pHldX>d2gt7G6p!uI7gh3R5g&VB4ymndaRYEM%g_d3hMljT18qbQewu; zs|xuL1&5FNG^EoX&uQ%Yd_9d|7o+Wj&3uUp^FkB65LHlL?{#;$hN6Xa?x>Kp`;Kq*6T7GVIsJ8s&g| zD6KX<<7%p(da61_tIpI-)dee{CO<&)zzJrY!kcT9gYuyaHU>lOfTySCg%^mY2S3@W zlJ|mruQv>pV`V_29Fh-(8-rD1g2b>oga>;eQCo~@uF>!%Ry;+T^^PiAYm~$Cp-{Kp z;kH^zshLF=s1^Zkm&aGY9l{{Ia{4E~}elXcc4tQ=Z_9eGiOzW->NHv7XoMhKvu|tU$p>-aA06*B9c1~(1TbUifY znBzu*OtvfNCSCYz^CpOLh4F>`J~|qg;>=Mcp<* zJr3nRm||w1!?=O-O@TnOLFqgqd(*qPMx$Jm4+Tz|%(m*^9;%B1+DaTmItsH!y*VBL zjSI7!Smj2Ia!EdvI^7mf&l0!LjgV(iDl{~Es@k9G2}s_W!Rl6S(95d|HI2fIiib*1e(-FLI|a<@jgA|FbZTWV2(LE_UyOxZE~%E9)Iimc+w0OD4| z*MC5xT$K-n1)D}K#GqW3N;xl4A0lNx=3k(aDIqEW7yaqpEIzA4I3O@ma* zo0X;z6unQUYwjJT;>7e{p414}<$DhFA<#JJcGTTWD(|g&9;@C?)XZ}G0VI}jA8X|~ zjdDXi6g2Y`_7glpyKuHB(JtGb)NzxWbm)Xd1&uNDFKd*W@}c0>arX}>RA})mYAFwv z?6g!TEUpWocfVmN-_R(xpLB$eWHmvI1_+VbBp~IR%jz);-X}#JcKFjWvk2K01`A`Ut=;5Wht8%|LJCa5TO(aRo zOPjl*0_fwK!HRsYQSQozLX!#Qb& zSHO_JrB(tPMuRnCd`bZ^E3_~Gx>GY|{|Ak7UrrRt@DZM?mIaVWG^4~)Qb~)Kq|_)W z-NTHY$9+RI$^$u3m}+zfkl(6z6#E7LrHZ9g7Xad0l6p6)nfqqbC=caBA)ced68=j= zwZmiYBSWfEriFB;<S^mrE7F|OZ+MmGB zPqiHWl4`)iRXVgt;h3o#C<|+pC-b3DTM~ro-noz#p*#z%*GTFhL=R~j7jdCE3}bd) z7S||G=R-+UZUS$t(oI=eobjw=RvNYJa5H?I!fJ4uMt%zz%5kSw^h+7 zFXls`Sei>-A&+3c@FX#npwNedIyZWfQkKhspG65Z%FFpsXyZpCWlk{G6PyLPD&l;l zMj(xU84J{8s*h|DBQ$~{+r)Ta)oV45uM(Vs_`w_4#YzSo6z?sjq-Xv6ev{; zvg)*m5{x&dwh7G_vHErFG%XC$ma)DX8s*J=D5?vGufkM{Q-yg$$Ay#8P%>@hTNv7~ zzI8Rqhco`R;O@{&;SJNG3h!GLmQt3%g~`yD6#Y|RY;=(7+ejmPobNd(_v6kHUKIV# zu#m8ls%i$?Mc-@s&(l=GH%_k68s*b`D6|vd+CUM2FdrT~R=NsYJqp3NVcbw| z^o`RfpXWnS-9YIzT~%j_(zvObDRi|wOGqg`U3ZD{vX*6nM)@)yit5)%^K44wxaNR; zQp5d9DQfY#aE|WEw9GN|RDF{)%0Kdt>kC?n9s;DjIK5QdMb5iMr8nMp!rjPFB~2qL>f1>pe3$PzAg3`a1QDoCu)~8~ zHO~fBMUz@zxwA$ce&6mI<%fJIyd$obQUTGRwv~HFP*SV#MeRch+uI~VvopW9M)@fp zN{8p*P76F%)%KQO$hTHGMWHl}=fd12oFd`B0jw$qr1ox;&mUh5Mzj_V9?P zfiZ0%z3Ey8%AtcO)=c?OQiKT9DZ{d&mdB%DeNq0Q))&`lp?g9|nazUq9jQ@fnep}2 zq%?!quk@Kpd8Xv->cUr+v7*OFQjt^2zOCal!fg4T11_DrQE*oRZX96xv1F)Hkc*%c zgk|U21EU(V?_`ZKM?MrXt5D#Se5tFjmFJCe1C0>vI6~w!wDh95HTx`QXp}-e6#7xY z6{(O*U7AOaOU_3{SaC@!`2xy~s9(;aoTE`n`B2dNR;j+n*pnZ`e&MLn(6OVscGFG> zMx?|fgAg7 zG6!z$yUiT9v+pi*;NHIb%z+2{9x?|W>3h^1c%tt~bKsf2XU%~Z`d%~#Ug>+)9C)Me zO>^L#zIV-m5Bfed2R`Zh)ExMt?@M#w>%MQyf$#f%FbDqG_p>q3KXd;q=D_UzbC?6g z{*pN`Xa8L0z`XtQnF9;z|Sgrs5RiuA!^QZUgKS2HT{$h3i z`%fR*f0+5xNAw?Q4jj{etT}K(|B2?nDgCFK184M~slLH-{8Fd^Ua^WsQ(i6 z)0v6*^+jFLf2H}+Yx=J>2X5%U(Hyv?|5kJ0j{ZB%fqVMzH3uH(f6yHGd;cTmz~lW- zm;+DuKVuF&-~WO+@N)kv=D_RyZ*V>CKj*)F_?Nlz=k-nFrpAH;t3O zxNjOKzt=a7lVA2trXO&?_YgPQs!XyxA%822X^*%F$Z?{_b>;<-`gD6&)?r1ILJTP95~EB+#ER4Kgt|9 z)<4c1IMF}J95~fK%^aBSpJ@)94Yv4u%*5!7Rb7=D-|5k2z2ZEOTJ4U~Y3@ zzF>ZHV4>g-=D?!CV&=dS!II{H6S(HU&|sK3Fftfr4)h1UIY42BIY0@5Ij~IdCv#xA z;4kJtD`=Yo%Lgl%11krsm;jxW{0~-g}lIg)FV%_*(O-HarFxLF( z@xhknz}CSw=D?(2vND%Laqed3=EO#dZ#J}~{4 z;N`&dUxL?zH%!2{1Ji#A-VaRwCHOe_#Qc%ZgD=d1e*~ug5_}h!{!8#vVEQlNOySJN z?+9lLXEz55VbL70!#T}?dBSXGpCNu-2@PyC|kit{KQ_U}SMmXIZ zI6FMY95_F`z#O*l~);oIiGdm+Z;ch~(V;iu+DzX-oH z2fhx!F$ca6e=rCB8UAbxL^DUTm;!5%p1*T4lEcgWDYD6VO277 z8Z90zVGi_0jyX_{hMEH-qLJo6U(|07pqw-ZD9|wnmX0tg+3&Gzw46DB!jIPmH6)j8-y#devw(b70MAEpuSqXnpnj*AqMa@4tVOXjAj2H;=}c1LL9rb6~4zf;liT z+SVM{E}HWD3oP0p+R^;zF43;$z#h?_=D^<3KIXvw(E;Yb!Ok#qs@Wi zqT|hhlcJN&fzzVX&4Dwcv&?~Wqw~yx3!{t7flH&yc@Np}{}+23T^*VBCAvN`?MrlX zWZIYL_Q%L10#}A z{{i1m0`sG^%{B*W$|4aXP3$|wzU%Ddh~&uRsN`s|?~yr|k~!CtIj4{T zp82IAbIttnOgqo~YNFd6*|(0Kd!L;uJB^(@ZlE%C?6#G$legV=!nDc`69#r1n6h+# zfB(8u2c}HzA2V&rgmGiW^|uFh7??PDyMZbF{4;g(q%jlwSKn@6QfuObZMRr%%D@g2 zrcRhVX~l7*?k0?%FfirMwCACr!y-kM$%^lnSyG2uWsFs3@5|4~n}!n{PcRkH8= zzx&O`(?=wY#*E)$?AR>^_%>UF^(~^Y{`h!cd@^>RK7QQzkRH|knCv^#t(fe)|L=aY zG2?30FxsLveqey6S7A8DA5)9Q@KuBAKs-JU#?zg`kH(Js<#R%_nCbi3?o95U>3gvs zlQ|dP>pYqHGMRJ9z0Om=exZTEZ?g8ZG1CT`JO9tx9X;J}v(r`+wwN$& z>WY)pSJ-aylxd^qUS#UP#DTHuY4m^mpP!yOdTwXn-v`&9Fm0>ugeg;}tu-)pyUCNr z4NMt5_hLJ*K7RbvfocB%Vg9j`Cr%u*-PD0`ncw~E^FNY2Ib^}JlSh-slE;%L#C}|C z{(MsGr_N5EN}f)hNuCw^X|X>N`+J#lzP&1==ME=Kp87vqwqHHUs_gxVQ~L+^@PtWQ zw#Q5xv+9^hW40Wa(l>R-3FCQ8*ZiS>?f5>m&!i=EV8N6+mWpB(%aQ~Mj^1{a0;cVpVLfo->&roNs24!=I}E6M9a7CbX~HF-_! zXT*N?%;b&aO|hR7`$P3~b4^vV*q$(U8fIwBl$}{^13MukFs;(BzwEu_vmpzfm%N{R zkbIbYlzg0gl6)%m^J2ds_KRY_B=*Z`b(%635R+Fdv?tfN>zdL#2I41u09%9ESW42pm z!lZ$zzr3?_rgWAe3r8xVEp&ow8HTWi5PMN&@q;ah5?I%u~x{CSDe*Nj5 z)EctjS!p3HrX{hNxVOZ9`>fPX=bUvXvELE%$qAjzj3|K+iqoqTr(kJDacpTM z+lpn$k>r+wa2zEuactuPF$D0Y_ujh`2%-1hd%M7;_g*gLUdjb79p1NRG-Fj;PVT?n z``2TwFA4TJ-`QvHefmCUmNj(z!73@`% z4-X!GXVE@nJ(5OzvEKS?(O9Gy@nvtpe#_gMy16m=W34N@R@u%O6O|U$vx#Q-JYHSy zq|Pwj?aZi-t!(V(fmd`uX=yo;j~-zw_tKU30*u9X{90zZhwkq^EuO+CA>>JU;McU+m?=gYS7}N`m>L zMa$UyD~lS*8lw^aVe>C%^Z%4?erutjq2{6%-Dy^9PV>tExr{6wMcu5_PPXoEnspB< zI+#ZMPQp&C)YP8R$aZMaQLt{&x}w914lg>QsJDoU;H7`ih(Bq>UnE#au#%8R!mz7~ zj^;kG=s4g6%R~}}Yn`I74a_Tu|9^CfFL8in(b;*{zM^wT*s6Dv{)6-LtXC9WV7-Sy z!q&YPX@B%?k|rBkzPxBX_o96yY};3~frRaH@^d5iRYljbD{m^gy674bwkKf+5_a5B zbY0Q)aAg7N7ycjUMQ?*R(zWA5I0-psddKKfU!8Qq1ncc-V_YUZ@) zc75vF%jVQxU-;z*c?r$vzM=>92Jrwl2tnco@i3Z^U`uaC_0RuL_M%S~J;UwnDYP?T z7p$e$o*j!b-biZYX3Kuz!<6hE!Fw(9~PkUME0mHtS8r<)i->fajU67 zyGdv@XfkLxDXm6ZL)b4utGT3q^z(76S(q^T+57BQupsO0m`yDpp>n!IBT^g+^oJ4|{V=S%e4GJsVq>ceFJxpV`>nK66=jbIbA> zD?1vOx5Q?w?&{Rjzmh(ZzF|icTA%$*66*TwZgv!q>UuB#YfTu z|JRSCzuPfa>a+hr!m>U))@DuY=(&!camR2Bb8HRAa13{BMZ$6tV(T5-IJPBW1qrQ8 zm%2X?aO{d^Elv}sh||Rau~3{P&ZgltG(1ehYiW2L4PQjV7t`=1S7GUhtpUd< zV03@8Udhe6C81e6_Hm3s9Ub{3tm<=MrqrBMV>T)`(J>Y6RcsO0h^;hy6%B8u;RkGR zOmj@<_IdybSWaWR=_N;@MRd$cZ-a0C5MDZWtZ(fdUkp2CkH7xfm)omjF4FFso_5!X zZ|(iw3!e4I{v14FwDnvJLdKR49%OK8jnAQIjc?5WiaSanAm_Knx{@1YO9bLerbV<`@CK;1;bk?S3YIUvnZ zB%C|+&fzG>N$4CLM>~#j9P2pFalGRM$B85yO~NrG981D+Bpgq|2_&3obPlJXb2y{F zb2y1RhqLsVa{5+yXWEAPfIIU4J9gV07dtNH?(Y&3PVRGDM#3pW>i#x3u0r?cxWaLz z15=?>NjQy!(>FLaIj-jJ?+g;o{J%d_cHD&S^yc*LbXMc!(o=tPzj*PEPUlCbOmS#k zFZPri8TOQ3y6L3qvc25Wd6)n5hcDi}?Y@Mr_b$i1de?i8*7cr^uGeut&y>$eoA=mi zaTfkRw%hJ_)bRwjrN_7}ov*c}C%G+MkfkjdL)hOOuMDl#yn$BpR)4FxkXy}Vi9_mp zjt|(U-Y4OrKF5b7Ts$P7`qc47CZGD!@fG_N9QD%pkopa5^=-Occd~plZr^p4Zywor z*1urakfb-Vte+4XYRHQNeE z8~$Vq#xU7R!ulZ(e=_ecC2tbR+sPv=(>HAUrMyGl(Pye}U+(+cy<-IM_uarm0d&r~Z zJ>|Vf*hIqBBwRznwIp13rM!=vFOQMO%Hv45o`f4nxRGpDvgPp@T%esV&B18FN3{A8 zN;OAvv~_nT{ZMUb?8Fh`^a0XG8ar0T;v54c562J9J;rHQTT>$+*n&NiG*P`oH?KRw zv92y0Rd(uf;+!ypH1YI_!bGJ}1CZ>b|1L3u?lcALG&4xJsdv*Wd4J{|nAdI*@m}t1 zdCssr5^g2o77}jm{WU5r*i4)DpQNwlQ@(Z>VVvv9z_U01^75^QbsaM9qHU1nVcW<~ z5^n4LiG>HE+R!WR<%*Y)aF@9+D*I$y zF4-tAkSk@sTqOtOAPIMqa1ROhl5igh_ml9z#$i+Cko6wxJ#r0BKCC;D@L=yneEjhc z{(`S1$_9ZELe$k0z-C?il$HY#U@5~r@->U+#}hX55%~D5l}n-+mypaTr?#=BJGr27 zsu5a|TvAWIiXeiOZ5>*XdnIrsdmoFdt1D{#@bcaZ^?xt3et4rTuT*Z5m&*v&kypyA z*T}a!{sC7UYX=0<)h@I zTbzWoua&Qpua|F-Z6K%YVp!%6};q#j4~f!<6C5R?61O zHp;fjcFOk34$6+o2t`mtMN(|aPRh>8F3PUTNM$!=cV(2ahca5(Q`t+|TiHj+SH>t~ zm2t{=Wr8wMnWRisrYKXDY07k^K$)S;R0@?@%4}thGFRDGDN^i;Ly;9laVqnaVr9Nk zqLeBw#jU7{NAW6UO1V;@_>=`orQ%nrlzXdq=L0P0MR+cDB zmHm{cvcJ-(EK{14!?Dkmu?E2k)@DyJ!@D`zNYDrYHY zE9WTZD(5NZD;FpiDiR(?@_Ren=` zSN>4`RQ_^WoK|O^bC`3ub1Uc8&TX9AI=6Ff@7%$;qjQ8)aEeaJX>;!6+}XK{b64j` z=Wfp3ouiz4I7d78bnfNc+qsW3-#NxP);Z2O-Z{ZJ(K*RE**V2I)j7>M-C5wA;hgC# zbk1_lcFu9mb?)mda@w5^r|eXmPUk#lv2(tbWeIo(dx>2Z3UWzKSEh12I;;H-4| zomI|&Gw7^#E_8;RVQ0iykn>>YT4#^*5a*%Jb$2yO59`8KCd7|?q=gH1foToZZbDr)z!+ECjEa%zIbDZZo&vTydyuf*( z^CIWP&P$w^Ixllx?(B1}C*ffd9wFgT5*{M~L7-2N@FWROk?=GL&yese34bHuITD^H z;RO<~)Au3?FOl#v39pdwDhaQV@Hz=^kbwQWw@7%Kgm*}ImxT97z|;|YbeKARM8d}; zd_n?_8$ToAA0&KE!WSfbNy1koU_0(#Bz#T6Hza&Z!gnP6n}qL4_<@8UN%#*57|DJn z;TICHdjE|CgeLq!!k;AkMWTg7D~Wj|4kK|miCdAlHHq7hxGjm>k+?mHJCL{|i6cl9 zNEAtwNVJi-6Nx*MxC@E9k~osY-ALS>#8D*fLE>l<_at#I689!?9}@FP97Ez*633A^ zp2P_xP9$*>iIYj3LgG{sr;#|F!~zm$kT{dXLK0^YHnYSzB+eyqUlNN*w3Fx{Q6^C# z(MjSw5{pTkPhts)r6jsYbd#u(=poTdVi}3$Bvz2R5*LxUn8YO{E+uh45~C#UPhum9%Sdb@aXE=G5?7G8lEhUc zHj{V&iK|I$A#n|1<4bHKv7N*NN$eo8lf*6(yGcBV#Dhs(OJWa+hmd$EiR(x_jKsr9 zJc7ht5{bkkNj!?gqe(o5#A8W3j>O|hJb}a$Nj!<#8XK;jl|PQJcGnDNj!_h zvq?OM#B)hJkHqsyynw_DNxX=}i%GnM#7jxMjKs@H>?3hKi5p0~g2XFH+(_b8ByJ+{ zY7(y@@mdnEBk_6?Zy@nT5^o~$W)g29@m3OVBk^_;?;!C`67M4MZW8Yy@m><|Bk_I` zA0Y8T5+5S*VGtVm7fF1H z#Ft5Yg~V4$e2v7{NqmFEH%WYp#J5R&hs1YDe2>KUN&JAs4@vxp#E(h*gv3ut{EWnZ zkoY-?Uy%4EiC>ZUPZIw{;@2d8L*ln2en;ZJN&KF~A4vR>#Q%`^6Nx{Q_zQ`@lK2~m zzmxa}iGPy#7fBY9tR&@;G>oL-ByB~~)+B91(zYaRN7D8r?Lg9wB#j_RAW0-iBFRS5 zP9*J2(k>+JO43M@b|Yzbl17oV2T7wz+LNTcNZOmEeMrhDX$(nYNg7Aec#z{5t3?1 zswJt8qVNLoSCN|IKQ)J)O=B&{Z? zg`_nkwUX3EQaecplGH&`CrMo-b(3@uNe7d(mZTn%4k77KlGc%Q7)ghdbOcGgBoRqR zl5`YFN0W36Nyn0O97)HMbOK2yl5`SDCzEsvNvD!@8cC;P%_QAI(yb)jM$+vh-9gfwB;7^Q-6Y*Z(!C_zN7DTyJwVcfBt1mZ z!z4XI(xW6jM$+RXJweiwBt1pa(eACmMDNgtE+2}z%l^chM2An9|Gz98vK zlD;D8pCtW@q_0W(hNN#v`i`W3lk`1FKalhzN&g|~Cz5_9=@*iICFwVkekbVdSfX}!#5&ilb9p?zh%Xp$`J-V^W!Ol3H7DLR zEpbS#Fq2%zNp?$30+LWL7%_Nm5hSkm zyCP-5P?agc?VMqf)z!&i->6DB?2SaLU20{t$`$aHdBc%tO~@au4tdLb^@c=uai-~J zCT|r!85Zr&8jkt`$Px6^sFA3Z~n6pnCFgsVx8&NBw!H~xrG6a2$Gmf(A z%RY0px^7*#p(@cfPi9FLbT3Fu_6#SRkb$kj6=JJ|ylSwjIvn-*OaY$bEOX;og6-O# z1nlGY2kTJ7P&u0^Zp>)7+N(kXzC|u}L!%0RXNG;#8R}dO;izu2aGkF#5{23V9#_Z{ z_50i*SIF0|{g;_yMkr1kUJa+`P?;$#lOaR_s*QR7NxiX5z|a>a@x_U zY0FhLTI&sk6YBI1C!CU+(BpO2l*9h)*_sMcv%SyR_Dap>b(MQVsC1yx7brKh_7Nu? zpO#d2R5j@FM%5sMLRKTkr<`MKmK?fho(8DaNdGyfpO%`Q9l+;@JidU(TMwHAL*A&~ zK8%cCWy~0FLlHDpR3jSpa)*E>9O>_7zUGW+o?!MM-ui04PxVC%zw&siy$~XxCV0Yk zOffZ8Xp=&3wb3%vAR2I0^?T3{oNrQUzH)B>DvWr!mp~qtn^kL6^rwu4`Ksb#n({S7 zJ;5rM&-D0TGuG1=i1(Da)bo$bMH>{^>N(HC`ASpkX*TS*4ABZNUUmB zAFWvLC=(n1ykX3i*6v)@tN`7?z4Z}qfLlh?RqaCu>TifEZ{F6NcXFyEWi?^1R-h*u zRztpOlw08nn|7MF9p{>znk%fjPyqVWgnC1GwD@?1j21j^N6tSlHGd@Jbw#38zHnG` z&4hxZ!J0^QO(cwABkB!>f+3ShWTt{trnr}*79pboVf0$=V10kvowpNbby+$5uDM0q z#>Ms-hU(Up>(=S*OIM!iQY(zcg}%#G9tfiGs2F{!Tp@D+pSLU16%CP&xf4X%ojG>1 zdSdM@Z9ROQ0z(M8%IY$I|0p$YG$-0KDUr(`@rDB2M9M?Knrg$idk>T{Scg_+q#VO3 zM`z)z>ThiG#&g2SSrS%zLz?x10hk?)+qBXo&NV727wgU&!JyPXe9xQ8$)+SFGiv6m z^(KuQ(K@fuMb0bWZ23vq(CGcahAM9$67>i5MqpI6kW)|0mbx0YMH_=q?1V<1Ih<#F zN}gJ;KUl35VN7QFJJESXoFiFJo)9V#szlG3Ae}xq8|BEHYmcOIjCo3uVdrH}mt@uw zPPcbPJ~nEU{mLlY&1rW@O6!61^-nG5c{xS06%FZl05OOvI9WjwkvUO|4;q-oc)Ybf z6%x3reEq#qWqJwWN?)}xSu;uqaI(FUN>GE<4SFYq!4NIRNV<@dCRTbowS)6di@CTn_23PQi(b$S(KUaIZAwqYKguY1F z+uGF8qfODhYxy!R)3r1=w(55<4Z^idSTeYTAcPpW>&|!RyleULX@3C**`Z8UFgRIV zWnE)e)2d)=OOKKDaL!sZc-BC;s6=WTEUn?y%5QTgCRHNFI*FixLixEI{K0uOXY%ke)Q+GuY`cU+Fj@rP@CUj53jk@ZB* zI(u+={9$)v(`x;mX`*sZ;r#m!o?k6<rCx(uFknI{K>V@liD-P*J& z+|&_^wPvu*1x(}^Tp*Lk^uI(MUCb;q2WQcJIMBQ-(RnZ9%sJSoD%J&UHn#INkGGZ8 zvfNO|dZx(1O# z9NgHGmGEXJ%%Sf{Agqo-X{*p(v}BX=wxN^Ot%8kwuuCi(>76-~s*NoemKr-c%eq@y zbUS4uy@yGQbFsHcnvLpyrt%Mos;&b&pxpBfEaXGXoKyd!-;~NG;iJqmFDD6czrL|4 zyBj{iOgS|Z6;;I0)l!AV(ztSfX7V&sx^fW?&31KHTRXpU5bMZR*S|4cP7TF~TIw8_ z@P#1|9^Bf}*0_8S!k3sZ2df6d`Y4yJrmyD669|_zHpP6NY&>r;Pfi9X!y_-A81LO< zwwI0WZKkWp#h!`1Ga}VGW0>=0V|_1oA)8wa@CHqri(b4@F7o2PTIQRqvii{v64))y^ZtMGbEE4N$y z|3a~*wvOeU;Z=iHMNWbJrkS5=8+>(8Jd;UtS{<0A+2oteRGwVgKB(Fb;)U`cmfbgJ z;lg+@t*ryY8rIPVH8%BBw_!J_2O$YYU*{M)RknIMnJR~^i9k5q+|itkWj?dy)Ud+s zu~^e8o}a92#Y!XVe6-lblsU~u_2;%+%i$)NpXs||*#z}4Yfh~~XEon;%SKqvgbQ-< zlUnR%w1vBu@gByqSO=Dnc&{zn%%yk%^XAmr_<_(tW|PHL%$AdtYukL)+3H%IvrKhu z9eh^=@BU@oXDJRdTMnaZjV}~Cu)DbT#B@ zY%I>Zh zpPra%JdBxhnzCkKPUtjxnJ0&_z;9ZauZy9<8D4`EH9Wl8WcuGxOqf$Il=YCQ_}H8| zOpoBEo79nXS7{EGcnuN{Vs^!}Q<;P# zjN;RnYqYg8*3lYk$%h+ux5U=1!y$f6Jci0B^h{2;XO@Iv92gssqQ&P7M2Uzp;|#s{ zd``G`7Ruz1yW)#D?HDUwUgeX5{DOS_ysc&3Iz6-#;TRm#WJr4{Cm)+BIbsG?zmEer zI6}-w-^b}^W=gLG%^@zV3ZV!-H=@KM4JmPb#aD3VDFbA#35B@8lqy}t*(PPohWIQk z6itsgsP2y#DZYj?&B~OCBM1?egdj)+zaX{}k*wu@!~rA*!WCc7*=JpBPP6{37Sc*kFTt9#2y8S2%gbnkPhQdNnN|s@aQ> zZVm)94DveX&ZuR?K5CiZ*`_1E#i=J}s!pZXTa8diUoD5cad2ZOVCH(4bGb6*f_p8j z2_i?l2_i1Kh8_UOi~lDMwskKmkh2FeK!D&z2H4y@}J z#S~j&0(g3+qIp2jbD>KO1(O=r{GB-?CJ_T?)NVV}_@eRaFoxJ8IWtDDq|Exw2yYce z3e-Jbv?=H)&N9VXjpzyOVAxQu9wduML?hx1vyc9{&ip;~k`l6UNOuDoF(PY`3o{SI zJSN83&fkZ#%t$Or<(O)3LK)o7I1n89bq6#mHkR}5k(d_|b{O+8L(yiLM!E@{ZgNt( zASO*_lj^TdLeD>cGUv)q%;l~3sx=X<6`A4bMj6vM^w^mNQ9W&oF;(nn?Yfe)5EIzMYef%gEd>TcUCl z&XA<~%;}0bU6OhG)9Ir%bQ6zWM$~;`&pW>~O{j#tT68@}>f=I;VFPu5!jg*7+(f(5 zX6m+VfWmb1#qTy4h50x`k_L3AOX;8I`#D{b8}-+sUnqk$$f+kL8iJb)_a#V+y8*Ru z?us%*)S{C!@`O0gq{KYNJi`b;Eerawg3<2G7@2A~)7ZpJ{o)(h6AfOUR!F9%9WT%* zWHD!&kXT6kGD!T^Tohkg2t<5kK680Be?QK$Po^yCE64eboOt(4i4%LJ<(z7KQYtN4 zma7-Prjg=ED>+A!6{>68xSG;`y(L|t2XLOGPDby}<6WkH9RwGia1W?|(KUY!=Su1} z>OxQ~jFr~Iv~$u))-X=OnpWjkH+HSU80+$Dx81_}r6}$8NaEaTekW&|kdmpt8;Ivi z%5o5A8Jm(tH*BU^*!&(&KQ1M`F-6Q&z&g&bPfCW6cTq<6BRKKAl*Hz>EZi%s!TmYh zv`8oj{|&GCM`mI&?@kSc=@@33o+4AYAsq2m;o_4quTGH2>}8JUoKrIA z96-eo)WQNw;3+U&y&w z%PCSB!e~1uXu=_FmYFzCUcxzNrsq_v{WaLas0k;EiLR)O=WIsZF6Yeo)^Ibx2ev=Pf}nBl*3Y936;}T%Sm2 zcULt-CCwrp;KXn~BQZvxS|495)CX0*o(cQ%1>?kF=wZ&a)X0TRL7c$nhY`%RtZi-n z#QX|e7eG}0@_gL2=xSbreNC)WBfctL+N<7bZMv#oWyVevwut(-l%m?zVAS1oxW~At zvj0L+3(Pg{{3rig;@7}XQebC96A+`FNie*E@2ve^LM7M+;VESzs8GQDf9l={Fnbr#8`vk zVzR5hGkT4QE4Ex>6@ya9oG`x0tPB1NtXM_4)PB>wGgLLCHyZ6aIhHczQQr154EH`0 zM~5JA24Y`0zHl?waMifu&bN~z`ufr+>?1C$?!Qu)F$=22-U4Rq{rCLmf69dv5228_ zmt$^-!Bx8#Y{>gLQw4@jrFDGq#^S*pOg`q|eMMd>7~Eem_fQ&lTueOsfSEnIjkqBU zzOR{YGg@GxtX1g0u?k8S^gAZr43|zKt_fp`pUnFM^ZK_;xz#>3QiI11l9_*EX7A9M zwaFYtTsSTC%krCD=dVn;8J>ViaIlKoT)-RAwuCVk2`Z$oxCBv9IICK@K%8YBQkzjoD(irzjw*D_E1dDCV9L$T`CEGFYX81*_&^2M> zwt2~pOj!UubTnhd$UR5}POPw%g{KMhcR$Mf-g=&p;b;#RT@$1cIqS~W2<{5mJi_cc#-kJ0H0$f}3oX1=Yn&pk*d5}R%9+|mQL>-?~){M2B#96cH$0#*v zha=u$mrUiH)3V8n^+Gmj3v$SqQPx7vm~N4{hO`nhN;-%0jY*SKUmIw-6PE=gMVx$c zTJreTIXkQAYVaaM9Wv+IJ1v(+uf6bub8#c>JWe|)b6P)6&}(@5f$#?HX(A(2$p8fy znT)h~d%u_vZYmWGN@F)S~?J5g?<5mmusK7pXdVHHiSSLt-6x zEr3lM#WQQ@7Fw^WoWa2lkcw-dD?3fh05}qt6Y3BUJ zIpjBc=l<0~@)=)A3saR0g-RQojF+#Hrd1_vOg1YAGEW1xoiT;f;xtr4!5z6)OCLNi zRAR1ZY{By`aL9Q7siZsCYU$?DUV1^>F2|lEj#lun8lKKF&9#=v26G`cS9}CT2vET5 z=T}gSZ6%|IhceToK@{Zo*H%USk)V<3aL!aXNG2{mhEJ9CE`JnA}$3 z_|T21r}_3#$-2b!8dD2NBM{J~(gDZ^Qu zd9aqNE0b-RNuh==&tp{en!|7%;oBC!9oc zG1H{FS7sUxao}-6O(M7~LpA*9|GV+D0cN-G1r=-Ls4t9%Vd6V%`~yP^>pA<3WNRd6 zk2gwJxQbtW!K%$;8Sni@n>ax;^pG{58u$CZU)2VG&c`EFpzZJaZu z6X?&WJ8V3!sztrv6;Q-5;+z6QU~-g2$(_uVGUW7gCG?}{h|z%IG1~Emv8+Vcir;*F zspOtP$*^WekATL6nNK_p%o9Hj!t&0=;U|Ve+|Oil2U2oB2h(9{lzi4*@(?o&=oJ~W zJvwN?apm%?2`Y(};UpqyO7R3Ur1Sr1@O_Zu|c^IcyadArXm?V%~uM`s2GX@Y$ zt@-2*Lu*2O78X-@p_?N>wKuo*cccyOt(ZGyWb2O?NYWBIHN5$aMKzxZng^w&+cHCK zvUD}LfxM!bPj}t1RgL&KS4a9<9Z?Qis3Ai2ycMomAI}HOWjpU#;^k#S${o0jMgQe8 z0yTcWOTRQ?lp}CCDb5&=r_I-{6>E{etZXeT*B7Y3trK2``%@z*N^MM)(nk+Kg>DtE zUHgnBZ|N?aJ;enxXOC#x#qsV8OW%~oa!Yq(rWEfnVuaDN;T3@VmiV;V?3uONX{$X< zs;af47w%aQu8#>*{}@}k2Xj{>+a)`!ee;<)Wiu%|vnj6&F*(`;u9zr7SezN9%(6yj9h>3gr%ZjKh}FDMOObta=&V z+Se9ZIHlIN(_pXuScB5(OqDi!XVrvvfA| zrHp#ng-YPlB6v`}44nIJu8cf0&cNqjzLZ%^PBNNroR^{7!KOyArrg*JDRnZbx*3Yp zR#X|JoX>%25En&`-{ga#;7@i;3BPwf*u*A|R zb8SvzHP%G>D#8$L*_LS02u#&?=5Ty%YB9#N^|{(Up`G?G2#qzrA-DFa1U8uasqx);|k5HjG6R0J^(P8hCR znLOu_-}JS37l!-LA=AYUWU8E-Z-T<(OOo`4(8Y`?Ytx*ZmghG{3|;BL%#w2_kSG^I zknu5+Afk}XzB|3!K7{Evr)5>+%Pmznl}E2?nEEj0+AmjAvo-WtIlL%-Hywc?Mw8$^ z#au3=&)0jotdzA*cI76NWqkX@n4D@S#e9d8PZ-n7If~0!FqArJb8MDgpTBF{tq3y2 z!V}9iBYe5^Smw>S^Gz^o4Ik(u=neZzwFq%ZS(=@|v^jgR*&y%`JRb$~%|s@~BF5~9 zPG-iGeT;z>ttp@;P#Hk1A8O5RVzQmaY@0Ln!fB8fH^B8v{r$lPrDtxgc-m6ma00`F z&tbNq_b2hIqcDbf++BJ;Q{_C&Bv?WdjBgdAzw2MyU$jM%AuhDW?CCDuB9$3o<%Y`o zm@VaGF~L6)Hjp*Hs73r2A4wqg*c9lBfdxvX@L+w7=^{^d@qj|429sS6R^5g`S20`4 z9_0W6Ve1Zi6Iw`p`bKo=HB6S>AvDoU+a*b4ZfYBHU7v$oCRK&cgSb|+eukf#?dT>Z z%e?WyOWstKg%I|EThTa5jk@r4y@s&QWV)4^vX4@!OxPzdMis=znkKx1S+ck5WIgE< zR9`@gR*nYC%5eWQScdazTt_yvbvF}c?{-qf!a*4aM3@6z*t;;Qn!$sm_c2?_DaQal zfuoMXdN@Y>%TT7S9%P#AQ`-!?u$s^7cf_LFrX}{*vCG*1(X-M=m^1t4P&Uql%kJ@c zkrq*DsPA!R&AxQX#;S{G43TlAVrGMTf|33kZlzCcp3EA%u|7?oiafgoGAArYSk?yZ z*cgkcem{SH2r`?^P(ORo=Od}|BC}>+^$x6OzLQplk32>3SciEPqx2P~ z%sy~rqck)S2zqfsS#7q=*EdhA_>zvXjb}QAw*RP4l#Ken#q8PV8%e^NT8+<`_1JQ3 zXeW8@yUdt-%E!@=abl$P1R5(M6!otJYTu&@SKuQ~JY6)3_>7APWu0;6RD{_NVxIzWeXJC7 z=J~~cfgfim{C0we4@}U3nA<1}~3=fQxbau^dvRjAR>&Ns}S zG$8ATj`;{4ZRQuoF#4Gv`Aj-96Ba{UgduZlyM6Rz63tjwwmkyW>0V)&G6 zIP=UOoX0r1#OEP#?=Qj^!Hs(mh8kVlFxR}CxiG5WGl@9I;Q1>)s^#+=ql#;LW(o|> zl-VF=)T;JtbJP8q*Ba%CR6V_b1BuEU5Y>G zh6VV3nzkA5$AFaRX(O3Ew7KlY1{t4y8qGtijw$^p=C9jQ{{E*vIBLvzV8|?FPcCG$ zTewjP{9Q0`LZo@cy58~^67_Wj@FITfOb z@UiHW<9KZ*U|3LPCV6lsu$VFb99)Aq@|6vj zZ*zF{HIPB8my*KkXI@8+^773_-Urj(;^0?t4CMuxr8Gwt>`-X6Hg_sg2m27S%^sXh zpBZTeNtzzjaQ^bD#wLAU*n^LOCVMZgaPwRU4yMfu@iYyZv-Zu{tS>LQ>X~%r0Ho&K zxCB~5KZ`l@tYFv`57LJ`?(XK6<^7X>y)K+WpP?pIXg|(AXTa=cMoeh<3O^P&{T~H) zH8R0GeyqK@Dc{xF*wWM4tOc1E|J1*$puN+7$tbSmxjVkp7a+1br6Kk8x{wbbJe;2!)=p%;() z7<6lxu4Kq`9$zhnjHtUo3#~KA+L_EfWHS9>5qNC?>k6KN8+@J2r{>BR@p%weP*V<% z=MmG0W8iI8gYY0GbmU6duRPp~N7RDB(!(qjxw0gS#j{O*HJG*M#REjDS=n{WTA9wO z8x##o--E!d)O70x!{`yg73E8I`1Z55R5!#uf{8twNz4(ofv^g%!ME%U#v_?=;pQwkn2rNAJ6<{o5!z>JeXzhI}8bzAYCUhr@VQb z<*GTQIF)IM~NsfH&z&ibEU?txz1+p1)Il>`#gNL5DRy0 zPfW%9&9u;YTcCz2A1-CFq=-!IzoqKBkSVJM5H;ZpBe}`)!3s}buy)`l{2*{jA9@K> zXXxF{mYYCr_9?to=PKjy#Ds$z*X2x=p$9do680O@`gqMZT@hT-GWO?O8<;Oc51Kol z$IH9!CgDaV%rH#mPN;9+8{s2~u}ZG1nS7w0YS7win=SpfBwg1rV}`CecX8u~$%$tI zt{a(kpjJAloV){^7?AF|Ws3#P)Q)av)`6TpHEP~;PxG}sEy$9`P_2RX&zJ6EYV9*Q z$ulogvx8IP0wY2Qupi$4(t_(=rmY{KnGQ~iOVAv;=;c>H_=!7&ZF_OUo+AW}0qg-T z1)tbSoi+|Z_{37M2(7NeyTay^Sgwb;fa?ER0aca!$fP-qd5qb&%&dvx<2c$JfSzRP zf!g=b^pCS8wYtGj`!h^F&`>lq@>+DtMzoXbIp!W{D5`1g=4WR3wS=^u6P=t#dqRT*YZzX^&ax!WkFg^an-}+mA+VZsNV4xsq9^yx2Af;gnZR)qids=SulR0{p__2(6q8h*8 zXH?@mCQ$|>(PlB)^H17geEj{|#NFc`m}kylJp2|0@AGSXNkOo#pO|1qt^`Q|#;#vE zZ@L~+G!d`47Q2^lwbAtl=bk%Q$(qR8p)1cflVo>Wm|^;047{nEa!BVM#yJO7KgSv9 zJ2i;W$Np-%1Y0wYJeUNSCCArDJk@jY!{yP$2WZ^eF-^%}H2M~M{DLUU!X`~SbaL;= zWa&*U#VToJ=|o~qN=hS2eVo9(6Z6bYtDSKn)96C_ogJ}Ya2jJ@#=R@&Pginkext?l z_Z-mZvEQe~78+fndv~VUcTh3n-9~&PCg~Mt_h_b=JSau-Z6^2Lnd_hYin-ov80T4u zuaUdQWUhav{Q65xX7GCw&3LA9r3qit-qeOqiLT5qi{b0>c$UeqM_iw7ev2oJNRtYT z;N@Q9y$kmwrmM=Gt_HJa?S;iM#AonZklZo*u=2wRI=?yD|AK&fDpS{P0kzg;BASq+ z?(obX9=mS9DT6ky#5-Vj0hdv;1!b6FNPK#Vs2OdPLS=l$q{dyyMJ(EqBH~xxae0v! z+*yW1_Z%)Kv?b-lA8pD!HAX*_*k!ge_|$*t+T06+AACG&4dKNa__^m(K^z|`R_&<_R~-cyVlo8M$l_SA)3z?K*pTgp)S zBKA_g#p=ueSd~2JQ%#v2Y72fl&dgtoWOxx-t4!UG6%jU$6!A3C#;9O2&f1 zy@+|2YymG+V|ot$%}&Z)Q~F4;luJsVPnkj5{qG9sV>q7?^77VPIT}OG{!HXf6FDo< zAP)n$o0xBO4Zf6H;L%@ez(>v^m=YRKti5a*VG%5%JLXpEpG`kN-{=pje zftKkT+^z05cRSgJlWi-qZN0(W;qG*Ik!>5YjUb!QI~TL<`X+1|%&G2ZPw;X%jxIY#iqDSGKf|DrZiPmoM<3M0aPT5g%!bQ)pjK#rI}1ut)WuC8mB!tJNWS z);{;4WZSlP(<^y@<{g;Vj;bE+KEmBQERSqEkZpUiZP)uNcIH+zx5Sj0GiS1@I%hWG zBfHBRm(RrKwPP)9?XixTKxZ3HNoVp0Z`GFOHOpo;w{^~RbvEIn#w|TF)^eTkr$hH&NcD}-Wf%`)DMed8qwhP&ICEG}{?ZsslWKf`? z?*r|BsI*&>*uK^kZMtV=)R%7kE7|%R$+laf^{;kclh?u4 zA4Rs^d!Oz76$V>1qHFxNiwz~;=)MI8bKm5?nQVKIZS;Egt!%PA*<`hPp|yI&GnQ@8 z+~dAC*;Ws@AK?b{p!*^B!(`isY-7kaZiD+#_hatI$u@y(GTExo0Q26lh6yDnz>*|E>HfsM!Ecpe!%()n&%_TL!v_j(j+UxEQEYml+-*CU_e#`x~`yKbY?)Tj9lWii|CXsD2 z*`|U6e5%d;rn2Q8+|G~(A|4pRN7?*zpLkKYHOX**xufZztK!}-4=2>c%mn3y1`6ssJckCC#zaf z=dp#M(~3S7I`w6@uuI*hPj!=R0nEH`#(uh&vKO;Q8U>WA70Crusu8xOAGXAmX|-Bi zsN$VnvIR6-2FX@UwuNL1kqtkLY*K5~TD1K!JT){S4Nw(UoHqvdmn$xwAtv+kITy1%v+L5g4ZuMZcWPqt;f1xq<3wsB1?jG0sGN<_`;^CG>br(htq*n0DN zHyO@xhI$qRg8&m zx}IzYkZldw+IkD{-aI70cc!>g!&eeQF&3aR+_WmTCe~RQ>%qQWrUZU;rO(4~AehD< zNVbj*>Z9soDyATvWW!9pn|)>8@`JjTV-DUFD?qocM*vs1G&aRnwY4nAV#1(T+WUXl zUuN!t;l0#c>k!k`_^f&p)VJcGTR(Uf8fnpg_`LQ**6HI|g~WgOqMq_#Wz%A`vKB+9 zuc+@?MqaJHs=lVauD+qZslKJYt-hnaOSXf_hPKi}wnNB9Y(gp$#%rmmWk>I z4E1C66ZKQ|Gt0zYk!-!%A7mr49Z9yM$aZwE*juouxzpRyys{aemPS|JrLADFj({qm zz%B$-uZc<{6MyXMtZVMTRHBn-3;Hj@p32(Bj^@VJt`rJm-GrH^p3;S{TsC)MZG~;w z1~YS1+BLBRT(pW|2C^IirId`;($o>_iq#ti<$&ATh}zZ>(`7DjduPpd!Kn&7MMd6% zeO0$y;NEw3QGwlFW}jVF=C;pr+iNr@TVim`E}AiGk?u3I9Mk6*ivL;t18Wua7xh>5 zH}!Y2q5C+FZ0J5txI+C?{mWzVSjl!G*-j$c$z(f)-EbtDo{Jx^#P=3MvG%r(u1Iqi z>vi|EU&KGZkm*1nXwsH-3A2r&^Z|y9*dsbng z^rhBEd3LaVxWTidXM{%}+o@zbi)`oh8r_x0=Ghf3%(IhcXAhQLr;+V+vYoMEhl@PB zsejTic-Wb!BUg=kmE@`=6F%Ivi_n>}bR?8_j9p)Os1(%xhtO z+%TSfJmWIRJYtn+f@dNP`;=_xq0i}^+hoa~kY~w%$urd=dZu}%b8ogB7w&?#;X5pA z=Q(O&;Vag>VZ*oDdYkR*$77PoU(je6&mUsN^P?S+@m+20_2b*L_eeW;vRIG398<_Z z7=0(tW%WcaZo6Hiqphv0*LtHgYKI+n-eu3drc5nVob$#NyL<~O{Z-+*`X$kt@vYr0 zEiaD{M9H>OeE^{;JnGbrZ^G=jb4eiV>cS6}b$7)&G3e~xJFFqx-P9C|VW#@>t|Nur zMvZ3KSI2rf7vb-?Kz+OS4)5EecdOo=(G!L9Fmcjk{49*GP@t?8 z+Tkw>!FbWs(cBKTgQcPotr$~yq~l?5T?!M31eh z@o^b$bf+&1)20{9n2802UT#0H>9~8O{wASv8 z?y#ZA?&#gIcSP^5y*uOUL^=gm!pw|sg&&lsE6(~Ld=yD=R->#IXBi5@?O9Fdy+0^zFeu10je zu8xkzo(+-O5Nxge8_uTJm6fhl1vwfPq0>#(?)t@{3_nHcrTfKwWBt+){&#<@(RNDk zw&l7Xu3v`i8Gdfr)?%~lVHt0kVwr8RTYMJ3WuYZ(X|r@&)>)3RoNT$ka*^c{%Vn0U zEjL;2vOH>e-14O5Y0I;g=Pa*SKD2yp`OfmEbvvtM9cA6qy0>*7>lo`e>pZJ!U1~kV zy3R_N7@TN5)q1-1OzYX!^Q{+JFScH4z1(_-^-b#!)?ci@S^u#9mA7@?c6mGGjmVSo zcFNl&Z)D!wyg*)cUMR0FZ&}{zytR3U<{h1PLf-j#7w27(cSqj6dC%v)nD6F(PPf_?CaUZWA`|;e)D{?U4X8WY!{O4qKzJ9*i_FvPw}v+!?0Svn5@|1x`b?( z@;|IQaeq2?;EssO>x2&A z6yQ|g2H-~EKHx>*W#Codb>L0lZ2kv1U?2n1%3s72mZ8Jxa*ym2MhglP=lc2*%X8|aC(%*phESAYT0{H!8 z=y-A`a3%ozO@=-u^Y1?ZJ_2B~$)5p`b28+d3^^x5&dHE-GUS|sHai6}OeqHH0oZBE z3IMj60$WXi{-+!U91B2(Ddz)y0BkVjX#ny}c^-g0ro0TG{3+i8;GQ}X*d5rzVwr}t z(_R9gm+8>|^l8B9zy$zoI{gmdQ2>0?!8iTy0Mbu?1$Y;LO{c@A(_z!;u<7)F0I+Al zC;+-Er~{S*kh=hK7qkGaKs#_Ga2fy|6~KlC=K(0U;3D8kU?cDl@Em}03s7zW>QV4I z@FoEL6`;I=&w(#3mKh@e)M>^zU;;1+m;#_qGhnY7MSufPfO)`tpay_kGa$>1OMq*D zYk}*48vy8M#%ln|n*l$b0UOSM4QIfHGybqxW^N5^3v3VkVzCtB{|k2mMggONy?}jy zF#zN$gj|J?s}OP&LXJYnQ3yE-O940F0m^_1U;zMK6`ldy4ZuHUp?_>nX0LVW34d5-{9RPNk4Li+--e!LRd}XoB*$OBCkbh1ya1d}L za0&qX%t85c;A3+x1U3NB&zzfp`++9_$S~&_06sDYJ~9XPnFD>zfxhOv3&2O_z(?kM z4Zzpuz}M&e2lyHI)nX|^xkW)B1Vn&3paED6K$fB-00NG(SnT%#D9`>Z0Kc%qFYNFO z`zrv-vZE|J%5t0wKvu^l05)~No{pP=TY=kwI{~x{2d9Nx4(QhL6YvZ0o5dpM0mA{< zQ{EPUedQ?tY$d}k@-mlfM)>IOL-M|9e5LX z8-Q+f#&&!0((szz+m~g+Lgn0nj#`J;0#=>gU=9*abj7*Ej$^?1F4A=)*M) zfbX~z0Gux9#|2+@xdHgHs|=_BRslx>7Xxfqwzt0I;X}y~X0$ z3vdAofJ&eWs0G01Sq{X2l>l_^fv!Dg0%rr~0_Ou40??V~Qs8o6J#YoE5x5t)A9xUW z7{<2@fI5`Ho@L(x|F&4lcK~3!a+F_=GRy0MF5n1#SVLuX6B}gRlG%0J1km9m`?A3IW&|m<>3A3IO$}*bmqr zSO%az6_B|C@>V<#ybOE+K)#AU0Qj*F`tw0PAN1i{1T+F`fFpq80r;&C`F$S)(7g|3 z``|l1_zqmgvS0)t0yY5hEP(wM>;}LV3nl`S0knw)(}5X4Apn^d%mpCt0?4{xHP8c` z0$c__#|u#If`67{J3&0_IGPXB0NFJK>F3@{Fu0Kkv@;PX!dJU|%$J^N8{zaN0k{O}=v z1F!^u?)|8bANupR0Vvns3Bb<&6M&Nd)X{$$a4`Vi^4|o&_Ws*|J1mwe*rRHDKmwr4 zs+mAD0Kch%O{xeu3OEKh4mce+6F3_<7dRid5O@ao#bOCS|AB=7bR6gfAV=V2;8Xy4 z1AV}?!1ch5z|8=3ANbQ^32p=I0zgMW=qLys1;+y80oXPO?jYm~76Fw&1n2?|1ug=> z6@)(r9|T~_;3L2n0Q|3dJ3s)S=W5uh8a&mrfcZc<03BCX0o6blfPSl^0Q|Z-2CM=O z0HELM!+_&~%K_A*8hWh08@LZZ+0`hw`dQ#P;054C;AP-d;Cn1@pzDQm0N8XPY`GA; z3)cYc0QeU|_X~Rf*l{6ju<%IWEC4>W5PihL3jox2;U&Oj0Cc)=18^nqvc(b_1{4C2 zKXf8+5AaWmB@CU0p~LVr06GYx{^7X*^chC|!(pHvSPa0o!tkvy;sGi;5Rk%fD*t3cz`mX0)R|40bn5z0qTH7 zz!KmH;5q>1);tZo0ep+)Ey}2!3RD4*zZSZzJp({ns)ZhFA$Kk0u0!`k-%)T#Dk;4=XFtc5OXzXpD_SnBow3W51R2v`cV0c(Lnfy04b0Oi*~ zPjx7(?ls^|0Q_~}uLFPmR=~Ev4uAmIfL#F8r5^gKhra6f0UUr6Kza4hRlN#8SM|_U z{UHGCRDUvX8i2l}9`>q-z3Nf-`l|r=Q2q4)>R$gC@C5KO0Ga9`Q$1v={}4cZ>!Hhf zwD0;Kfd5!54Z{G)*#NsXYzIKL2FTVh8rTcy0geQY295)s1KtAO0Z`8d@GgR{EeZpW zbJ6JlWLgB77D1*(HvzW-cK~+-u+1XqYY}X-2)0=S+bnt?_z3s}fISv{4txc`9*e#M zz6X8;eg=L8ez#Z_L&n9>+u|hv?6G(~0ItPIy9DFgk|Ll6=l~7{kY))1kZ}ogxdb{~ z0v#^72)GpJ12zCx0+4^nZ2;t50(qA}-X+lMk|%*@fWHConWZ}dkYnlIz!+dWFa?+f z%m503c|au)02TwwfEcg}SPekFrQN_<0CFxp4A=;~0sMmPoIF4T#sdF`qq`3Cs$kaz zyoM5x?(QL^bLg(2J0yo0S_uh*5EYPy5tNV;5F`bpyBiTfx=Xr|hJAngkNetx>|w3v zecpHdu6@q6&-p^}+_uFjO%)mtNhjQBThD1b40qDjjBU->){Je<*w&0~=dl9wwY8JB zW^B8W&1_=_C;2Z3+9jtTzPWau-OjVyd3L)|jK!|oc}F|%Xy+a6X5jhlJindav39y^ zw;z4AJHp@mgXg!qhW)mC9R%$IViJcBNk|fsk%nC4qcQf~zAs-Ajk((Y%5N-Y8LL^x z24rZzg=4s__Ai1UB7|6cfSZrdX+&X);cg;IVQ&%TsYF$3AZUcHBXk|n75j_mK`-Qq z_!j*{j9@h5&{2e5B4#reStC{=V}y(mGDf(o2t7p{I@o82Q=CQK4wt#g^WgvguZbgL`>%2N5POYGM^ONBUk!1+S z43T<{?889hjMQi3M1Eo_dX3a;q+TQ4K&0QD$W81L6lrkaz)7% zC0A4u+*?#eilfV@+SH>VO=ylAh|*=0E~7fpg>H;MhNyk$AnHEvgP>y!ysM*kb@Z-| ziAYKcQj;4UbadYx3s8t6=%b@PI+nzaJ9c3T=IZz~2s&k^KHspM&1_>QcGGD;2f4^i z+)yVybkakoXF3`8O7`j1{b6EgO)(v;3Xq?<{|3`8yxN??z|2JImeK{yN)VXZ!2?E(lZ- zbcu<6yTnDmUG&>Uzg<$G-!5kA;(O_$%P#VEY0nTA;MrX+^E?Q;`uncAsetTVhcc7Z zY~dLH;MTjk^{yB2Z@XT@jdi_^j=Rd*^)YteEd=?x#lbVXea$y~$8b(_gPZvG-TeFR z4QY#<-Q8LDj@V)MyWGd~yX)eUCPWa4zxkvKN0IB3OI+c45PVt_JNmRaEosem{^T$I z##}wzS&wSiV~;j?e-F>@(TT2nLQl-mqaR-|mI+McC#Eu;S=f1xU-=C?@3EAVLC{mr zJw3Ch|9(&J?v;i*=)0Gmd)>mGd+D!t3}O=(yY21Y_O{dB>F}NQ&O$Z{QkbIHbMMK_ zV?N&B+xtKBoX?Ws8K0%XU3~T>!x_OS%=4Mues+@wJmwiMkf)D4eLSa+JbmJm7uoyh zrH?-P3}OiO+h-VN?(;kAaNm8lv6J2CzmI+OInD{}xX&f7;9Y$akQ`b2%G%d=**80( z7Jj(&F8?=HIRr^|jXdCj{Z=pRB%a!`XV z3}YP8OyVbIF`GH)vcLKIuV)im*@JiYH)DS@_Sb2D-#~v|_Lrgm^&t4X9iPyHUi1lq zug>7R{Yn>Ky$^x`G0@2XeGG7G0}_#x6u7woZf-z9ilC1H`WR4>GL)wxm8ph#287cI zGYweCLG&AGw{BO?VdEc1VI)ZOwW3F#MBnin#iRXTslcIR$x3#H9Lz>W>k7}bfgR2=|OM$V7B3A8t&c0%{1Ih!{?ye;qGtvZvN&U zPH`6B|M1IPL)XKf@*JHHe;WkG3%-v*EHY6Mckumpc=q?}*~3B1^1c0je}dDv>F+&% zgw96T>j?9Wc#QpzFxv>v7daSdwFIjnD)p!#tn|y#a<3@gun5QF(i!q7PM6~jqt9`tkaOGx zWF2>%n>^wL?tZ*G86OXKGCmP{9iM|-e1x5j*X#Hq*z5R8RG~T(k!Sob_y)(%V?_{5 z@b?qUG@%5gFxv$Gc7mIjU>6f=Qk!}-#H~$e&d2zsC$z_2CUl}JpU{)f(8+`^u%iif zG~pYD@;##%%LHVb@Do#+&Mah{@GH8Tu$X21FR$C4u$B#MW*a-%!+s8-&k62xg8Q7H z*9m%^pw|hPxyHZT4uWWTqveg3H(K6kd86fxmN#17XnCXMjg~iB-e`HF<&Bm%THa`R zqveg3H(K6kd86fxmN#17XnCXMjg~iB-e`HF<&Bm%THa`Rqveg3H(K6kd86fxmN#17 zXnCXMjg~k1e|himkSF}dOWyE42!4n`Y~u1E?&F7~`2K!KO*%4?h3te=7^&Pho~MoM%!X&CyOG?FnqK;}vB zg5bx1n6$$le(XUn`e61S?_=H{AM-2-esXU=b;IBO#&Q-b}>aKQ*x1qycA$K6A^C8WTqkS)OhH1YC_C7Rfefw;#Q^(VhA^pbLw;K zW~zTTtpo0Bnyk~zHLX8#PP>DBPSeLU^Zi_l=Cq_0ZLx!&x3G;J><)tI>B-GUF;Ohcb2TP{QWFDoMqNoo7m4m4)a$K%$9R@Daufeii|+VvvoXM_Sw^U z5d^=)<^yE^B>}qoWgvsm@h{(@zhAun7kPit-!J-`Q-_wwGe@2|?a|kqzd6ncP6xr< zqImz@%2cHWdY-H2x!ch5T>oxfR@}q9LKLAmqmXx=yz_KDZ)Onu8bTtHkc^bL`(KCQ z?tdN07@h>d{D2t5!i@7<)0OUgN-y+0U(fUPJYUcA&AFffW?G=*1rbDX2=gpB%XuyZ z!Ee=ROjDZkF>Bey9`<1`3rkWBvo8!scMCV-zrXMRp1tr$5G=|^Dav4Piz;I7MZd9` zZS2Ie7wyNtTlBwwr}IVsa0>YrJ;eNrp7ETQyy1NiEY{y*zX6Nm5SREQClzT)PY&`^ zkirzDIAK)942$bfpC*`nvDp{vcd=VvJe`Fs=MVf2EMAZNi{)P||6=(U>t?ZAS$vtN z$hssTAz8>yA-sEu4wvXr&a5%Dz95nM})4lMe4+=H1Keb(wE$Ss0}#OL^+jfHriXBVG8Eo_t1MzGDKv@*9iM>oUDA z)9W(XmdUnEwq>#{)9W(1mYwB17t!r9-7fo=Tgbdj=4HBFrrX~WQ-DTz=kHVSoALXV zAXpwk7RsTw<>Az!9?fZw{L7>0gc+81<8ub$Mwfrf_l#mJ<5|KH&LQ7&`IgJK{4TOB zf5ej@SP_HRBqJ>u$V@i!pyL$-2ch}*wspRwDLzLGnMJgVh;0I zz(VYDeXZ8Z>Z-`P zI*QKpVi2CU+Wf0$^DDn$&eh9V$!a`zwY{v~&)*!!4XnPwE!@Cr`(OP8v#)*;1Z&K^ zCIx0&V>fH;d`%IGW6m`)t?^y0sf286YS5Z?L|}JoI?{#i^g!k{I#^?WYjnP55`S=# zmqD;LBYInFzO}%L?N-yy@gk&I>)`dY7-^+}L*eIbfcmT)|8z4_O>)%CsU zi#gX1WH8_0x$A%6M`mJg>+OHNU9DfuI_!VF{jWFs`dyfL{Uyw{-fq^v=3NkM2*I2i zWZDp)gvhobIl0M;8{c4e8wyj5FiK&68_H9W%E-N8Fmv$E4Z7W!2s_`{5FKqC%TG*Y zIx|_oa{fU6jq-1F!y7lT1-sk$7iQRag0o!UGFOAZp9Pz;Q;6b}M7B+GZK^^wYS4_9 zbmCLw+0+L++vGdgGz8slva?MiSb^tn*3V|WY_|8!y4dVJo6WzuI-a+=HEv+D``m12 zo9%4#mkeMqp1XNG=H2X>o87_YwU}|UJ#F5`PWG^$Lmc56|8fgAy7?Xtd4fG|e$Ff2 z@Gc0p*x?pC+#>51_qrtwS;;|8@?f7^%&^5ix0Iz4RngCuI@G5TO>lQxCh-fuv6y9; zVT&DY*~k{QBmWk;x18oK4|ov-TVo@~*7Ufit=_#=e_M-Ek}{OTx3sk$4QWdxozUx6 zy>7Lut#-AwA47>|J_}jG@3{Z1?q{oPTV>lS+g91O?n17u=eWQnuHgIM>PENfcB^i; z>UQg6p7J&btR>hM6Ekc}L~7i?wv1#UJE7#F7^TqZHnVKg={B8itA$>-^<)fFnay0} z-zNXI<@~`K)+75inYSI~8vi2OHkr03AvxZ^-MhEzbi18yFNE)GyZhfBMs>oeO$*x4 z9=&ewLN`7|uI+;vja=L1+Ai02xwh+dyI!~Jb-P}->vg+q+x5Er7{0~rr#ORdw_ilB z+pi<@_S@X$eh}iWZ8L~lbq%z&w^lAd~~qO{&vZ&f0<30X)uqPw(?x{;7nj+VpHngJyQRsJ%e)s5i&nU(+0sZdL z>z*0RM%F#Q@@EjJHrSh$j|ig{-m};2dn56@yzYTl!v3DvzGZW9xW!!_1i`*od_X)tBq4UV&kpycA`R)$!9IK3SC&?M%`fcc zP7v%*OaWxy-wj>tmwmtN`v))-eeBoAetqo!3HkTSzh5u=7a{+CyW8*X_HSS_+t|Uy zAUF^M?>Ufy)TBeE1Nu9VgPatnB-Lbe{|B#Lj z+1;U!C`b{CQ<`#Aq%!g!`j+w7%^|xvG@V(@XCX`YofT|gFK3YP&<&mh!QnW#rNgO6 zPbTc=a8B}&m;AV+!sDb8{MogTLH!#X{z(?4U8of>q-t^R30f7-*J{{_JjeIC)>kusD= z_9IoOLsQ(tkyf-t{v+}q(dm)TkpIY63_{08hB1OsxP>DJ@SY=b9l6XkWIA%6M?B>@ zFN5H(Y&4-CgBi_Ceqj-7@w~qdV>f?Yo#|Jfaj_vI2x1KxS6A=Nr!tm>ODtu zkPCY|T9RsfOdHx`#-nz0R9{Cwp(o}&D%;U7(BVJxhYO*%HigZ zndMkbYEzeP$a`!WvK^bluPkCI?*7;cwy~4HILR5#a|t^;rsHGxc*x@*IPM!b?)k@i z@Hs=7jQ1R$i{F9co_Bl?`}haXJnostJ@fc=JomWg9=E&WuY=$p{rr=WEM&)w|Jcz# z`6x&c%=?d>{o`K$X+UF|(wvsGrX3xKqBHjRPj^PJfP=9RHVUeoX$j6 z?D4ccp3coj6h+q4rLe=(RdGkB?eer;o|gZ#{HN{YbQ{{Cqtm_V%jXQ_Ys_|fC=1xd zQBH9ddpd1Tr)57a`)S!v%YOO^Z-U@VJTj0O+0MADGc~DA3%vVGdm`yVH$FwDX9n{P zqZoru&&=c(bb3agXY_ey8OzzqA>7QF8{Fb95AZFWdBzJ~^DYR^h7gPNWWx7wHXAv} zg&xn^`PoAFCeF%!)*YYK=~?}q?T1WfH*zru&c(*xo@+uMe&Bc3;cw1uVH^ATn}5*b zxwBm05^mw#HFS9HKVG88^Rk|o_526u^t@f44@Zvkt!PUGo#;w;^myJ5&)ea7{hgo4 zPsn_JI&+!NLYAP%^CyGgg6Cf_`-P%Zq%q!ep&g&#c^BNoh4FaKg;~tuSAN4zE_l`j zGhZfJ0mkf{Ouui!PSIEnNJP;f!V+(a3yJ=8N8SaVDOBQKuKT^C#}{ z;&EiZc!qP_;tnr(8w9EiF2y7+@kvNxGLe^xRG~WI)S*6&Xi5w8d`Zuj?DkTBzThhc zqLWKHxipOL8O0dPaA`8rn1QY?>FCl5R%kp2Yi|_ohym8IbKtc`8wr8q}gLvR#qwifmU}(wg4%r9XPT zqSq^f7=m7}$b3bwS4J|LN$B;88Lmvn?Oj=hUa#o&ie9hi^~xr;unjX^G0zp>-IY_E z=MrYSayUH;2yV)DGamltW@2Q#nU3s)l8Zd(^JaeB!OaR(rW*3zl=r5*H{HNZ zd%yVu_IPt1a@<_R@96TTUEW-S4sY(`AMEbtMXqq2yFB1A&v2i&vf%l*+|w;{-x|qu zyyw<$tj6t-X0oBjJDz(-hj$86gbK8#J6|w}A=u>| z@4YjMv5aRXi`m9b?Do!n4snFP(d8Za?zqQ0?(vR0yz?I~c*Psu2f^JK#6|~qWxcC| zyNQtbuHE0wh}?H`Q+`;h_w{){5lP5T9eUxN_t#+72j+U9;|Jwwh0Y#yrW^7<=*M8>fAB3sF~b9Q@!&_M zF@xFs%5S)j2TS>jd)WEI5Mm+QL%V+H&L8UUpxUVr#^+2yCl7V5&;9jbset z(b*&OK9cRxQkJulRp|23dN$#%9&N)eAMIu@dU$k<6WHS;`+IboyWGb-j~??h2p;R{ zaUAULaRT)8*gTK*^f)bLX-OwOr5AnZkNl72e=PrF`5)WS<7j5G0$Cq#<^bopggzg8 z_v2^0;B62%`{0RgpV-%vcY4s9zS!pz-9C}+iEK|~ zdm`Ht-9C})i9J7=%dae85&C`dJ2F3!`Nf8Y+D%J=jf7rBXkpT*@v(vXoXWJj;hJ|aH_DNk)=dM48|nVxm!6M7=k zvwnQR00uLWpOEj_G^R6)Iq3G8ZlCG)*%D-Zc97da@Sh(3D?}6Q=|6M*w;9?0^ZWAL z9XyYX?9b!l9-e2wZ^rX%gd+cQ`Jc=GT>j@}sf6$Bc@64NpGJ7kbGPw)68d{SpM}Wv zTz}8?_uRgpufv|7AK)YxxXd-|_xXJu@s#Jt`a+%;p8rBOFLd%^H0F8XJueoq7SDTe zn7=sB72M2=o8038kMZ1>F-d|MUz+h{UJ6i{Vua!LUzVdHRcL{GdfA3{L=Z)1?C@oG zdf>KR+T%<6dnxP7Z}^Te{D?ii{2BRQ%KvgM%UO+XUT$O?JK4iN?gYWBxTM66UfIzr zoxGC&RX*(IRS}9K`zx7W)y18?isTc%M21)6nT~hAn#Tf`unc>8Wlyhmu$#X*$r*I| zN~f>v>6Jaby2XnicpaN`WF!mO$w?k$do9~**8(s}WqO+qy}s4!TbbVK^{rmt>h-N&-&Umt^1ZE%Zr|$mZDX3!oR5+9 zt#04y^KCa|ecKa#zSZa3?-<7SjAS(Wd^>~L%;h&0<4)c#=NJ!p8wBrS@d5Eki2U#5 ze<%Mt`QN$McfPZC`g~UtS>H7wg1&stP`vxy7{)V+$>{N&@8#Vhma+kReCI~rxzTqA zIK&Zj`%ahd?ghd77`V;%zMJi5dR6@V+t0VJ! zncvr?KA$j}-|^1(&w`L3Jr!unAf_>w`7C5HtJusocCv^49ON)ZILBqK@h^9Iz+;{U zAt6aAMkT5fP8}N3gl4p$Gu`-{!FUY#3BxH`H+Mp zCLguwiFd|a%~{?DA+h9-RgRB|q!V4~PG9UNmi)24;XBL_OE0nX5la`brZbCqEMO5! zIKo|C1|d!>Bz8<>iye<7BqtSVaSySp(jOhi)=6xg#NLM8$3DbqJTLYG%pAwOam*X% z0}_ykqVIKvsq7{>DhKQaZm;w)z+ zt60N&HnElM>|zgg8RvQs@`0Qm4$&;#9lunv3u;J+XwuFP>WkQv$I<{&>MC`DN+ zAb(u>reQY;pA%SC4UJio2h`IK~N1;}+t{7|;9SHK#qF zqK|m`h^L2mQ}Mibzhl;T=8U(Cy&S^5#&fUnJU8AI%pLDOk8q#yV`BgD?LWR<#dibo z%^lx26h8-rsgAwGuS0zr(G+`%--@e%&mU}HGuzn70S@yQ$M^?*CiMJ-4e{M3wD*K= zIHC6>9FBPtdS1eXtYITtFk`|!?BgJwoA4aB@XSQ!Oymv{nK4m(5|V`Eq#`XDu&YGH za4(5UQkrs9qzcujNiFO$ksT(o!$fwNs12Ry$!GNA3kD#6BD+kapG3Mz^dnQ4!EE%D z=vQ`doyR=q6>o!(#4(7C{E6)-aT?NNFNq6MgyNLM_msFYvL==_v8;(3)1E%`=WE4n@$9)8yyjgHlGHsUbq`5D#5bEXDJe)rX7V9tQaO{#mb3-k>4AMF_3otKF`UuZ zYtjkWZPH(u#|qZ4o=v#Xq^WInWJ@MnGTD;JmMk@L zCA05j?lhThli7JP-6ktTc`8x`yH8ew1~f*m$;^-}f^K|DPd=kBx=r>4!x)8ml9?x& zJ54r)pK+_nwsD@@JVK|*+-Wj*np~&Jb(;JG;^QuoyNBf2kTbcQ$tzJ0Ig&@w8}CkT zugUE-`8NzjugOPXr^)R!`COK>nssbMmgGCw&0bD$mH%b&&G;YjLQ=#e4(>FCJSp61 z3U``9t`uoVPZ8ux5k@I=nL?K-WKB_(>eR#?q;R7t>hlTqp5k|o@+=5R=~*fLZA$&7 z9LaCUmhw;hP0HiQnDQbw(P7HF+~*;WaRaGzm`aDKbeKxsRPv^hH*sK8ACLa zn9Nl4k>)fvxQE@Od4l|D+*Mk4mDXLQjf3oIWlo!k!W5$%wU8lgd-RvqyVLgL3kLBu z-!hbm%;s0zOxndPXC} z%Rw$aB0mKwg3RekpwD!bsYVSN(2~})qXQl3j9$}q$2{rGlWqv#F@n*IV**S0i}PIJ zI%Y_x*K`kgj2Y6)oL=Vi$w@~>$dw@!eP(d08Qf|H zeP+;S27P7-qZEEiGPFRp3_r6O-$KR@$V)ABnQ=Jd`GFsq%xo62gx^_-{2ArXxQqQ9 z;t0n%$r;Weccu);mPv1!^p?qvGs%>xB2}nPIC{*~m-+1FFYGImJ~HVelO8h1!}Bs{ z#;lp$dS-KG4x=pgk=eJH*>f{DqAAVs`;oaTpU@NU$=shW@jI2-zA{h7jG4`t*^HUZ zn0Xx=*}`_rn_0HZ2e^n^%6yF*xTnl_@J(d)O=OlivmIuBf$t(qOyXdMEcTZr1@0@0 zJ!Y}TEIG-8ePr=_lf}-m=qQU>vQ$SuS?bY{#>k&#BKDJI0q!e{`^vJMwYaS;_MBxK zJ2;3N%W?-9vpf$%vc@7c>BxmnvlgTXVc1hvy=K*G*19yHC9TnC)*kdmpILR8RhL-@ zGlcO>X9cT}DXUCbWy-pZo$O&hhd6>Rv;NC1ROxcRzKCz-PmwKqd@_=S{CIcv;*_Ku6{$>B>@s^ZTF{Yhd`d6+@i|{1SN73NL9Xm_ zWtS_vT-n#NiLKam_T9*q{UDdP%5`*`UANiq@_@(4oc%d3(QOVlk>dl*kRt&p$wXGN zlM~(M_z1J*C`|>-lcO57s7nJHVTK$(FbkdLSjZB7NA?`D=a4;z>^Xd6ISz1=+uY;7 zAS5&yuzkPkEEEJP8C;Z}22CmeI-bgMa=(43aIiJViJ&r-~g(+oMykaIKJ z*vTH`&*@fky49R+HK&|8Wy=+xjL4HKKi-|ot>!98IVxbcx!h{5#xx@mz2@pp5A>SL zo^$Comu_>7p&t=VRp0D}UYyBI$*D$m<^R4qyo1 zF`N;|o_8PraE^<}l~=C3zNNhOo%b=%cpil0%R(dES-ydcL?`)ll1~@;< zeCIK1zN_5C9p!UJ`8+q@yC5WgKths{k~FxR{F%u{4(uv_MViurR9VrjPKNc9#TmDnasv6^XnnM9p<;g{C}{C-Iyi+0Sh7m&NaASN&oofcS# z90j&=2=6Z7mI|EY92dEaZVT8^foDNT!5Dl%eDqpSuLV<(nzZDmIJKxt0~*r|_g_%9 zg0dBqt)OfLyC7G=A$-eF+)hDzFE|F>7SwG)-4^_bDfng!&SL>)D7cc1Y+*aQ*vo$0 zNx@UNlY%-eXqJLHEvVCi_t9&iYbe7xP;{k7ikisFvLa&7rkcgznRX7_3k*ly=h2<(N zS7E&t)@xzC7S?NFy%v_OuwDy)j^C5Q0~w5N3;QMu>$R}Vg-0iJ%8M zE%F5ekh{n*Xkpd($7ulOg}dGX%#r9WRV09lLcwzxiv+kJ6ai%&qG#ocG|U-^y2$X|Rp zn{l7TccatdIxYSeIxYSW<|vVpY~>zp#Ge^mUq$4vrEg6dZCG$~`!c?RR4QP(sCFL&Jp3ZdRQ+lD- zl6GHm1ag&>tKx%yu*DS@;(SDm4K||K(D3bDy7#_dM%~b zQhF_=*HU^drPoqTkgrrrS|MX88B6K4lwM2OeW~uqTB;{@UrN?edM!1Ck^I1qOlBI> zF+-`@EM+BnEwv84mfFTnbX)355K=le?x1vP^jbP2dM&M2|Cw?jrSnjdGSs9#jc7^> z+(PLNbVT0Lx-D)0rR6IOCv!QymTQk2DCbto`3)#%hH`xv$S_8r z*K%VSPc##m&9CUSoO#OWwcH=9VI60A5rmYFjc==bV%%zZGn97|<=sSiH&H$m`OC{) zz8no`Ol!I#NBOTAgLjwLYx&7cN3Z37VJ<6K%?|c*0KJyiYx(1x#J!fk$+IA&LVOaE zgyf{cy;hK|f@~FJs~}s2+{jg-B9*C1b;5D873v{#1(_=}MZXnvTEVSW@H9M{6?Iy1KZp2}^V~+JN-|ZFsZv}% zBoQ)INC_{NFQH5&MMAk~Wt)$ONEs(WR8}wPJC!f)eFOa{|AV%Rn zEB$~@E9tb-40Kv)4(6zIg$F$4IXbN*f8`Kj5r>qdA(VU+MDEJPDN6+^BWq>7R@P@_ z*(&#<4+9y=bY`)H6|6$1m33Nq3)|Vr-&{nd$}&}!sq)((q)I?cWU3O61SBRIx%deA zsuaM^s}!XKdaa_@DtfJA_f=%AQX6+#r6KOLN^3e||5duvgWkwrMXy!9<$H8mWh^?a zqSGo<&}$WQR5`=H+(oBV9wUF1m%QO!5K=WENyv!bsj6~UmAh(wiV;R>%Awb)c3-tA za#fY9YG1x#5|f$Ad=|3|y;k*mQ*|91*~}qMbDu}(wW?fI^;%W0)%03TuhsNgO|RAT zS}iN`Rm(|kWUMA*HN93Vf~?hKt)|;*x~=9npjr)TQ3si;wIzZmI@66$_>#exquNm1 zMzt}FCmM59JIV#Fa)VpQU+p1Jcou|IkHrV1AU&CoyLt}tQh>t9THPH~*JpLvs<)#9 z`mFAIsXm%<{ETm-`doBcU8mKTvYeG{=TBs+E>m@xs^7(~{pWIqRR3S57rf?O5Ks#jS>$AzbEgnZw@)A+_QVj|3z} z-dgh3lDC$;wdAekyQ(E$Eqkt27kjQ{ueJK~CH7d$ebyRBG(RzgpV4crC9FrLS~As= zsn$vKT1&6BWU8gtT6(Re*IIh59YQSRs~wm4=(e_QYbPfqX-J2xwcToMeb&xPeo9aQ zeb%l)2_X7PO)b?dU;o+-IF33}Xa(tuuii_z}74 z%;yi*v5_t8WDj;mZdF$go&`;Os^WDMglTfIdb!tU$quD)m2 zm$iN)T4GoAbyU9tUHJsNs&7~I?W+EC{tiMK#K6CAkb=~>jRu*Ky@Biva#4!bGGSr71^6DpMQx)37`8H!`1n=tF3h%&yAL{9Jv~~-A21`YmM~PNMDU)YjlKjTtr`u^wmgTjcx}ajT4fNtjOM2 zUyb$ExG=Iemc6m;jb(3KjYf2&3%wbPoQ>_Yu}qEUvk-kXUcn#u9vZJ>FUL8JJdNdP ze2stkUzWSP3qqQFh)hi~Vuww#lM}r*(Q6aEHYtz&HK~GJO=?n$y40s3AJc~RbijU_ z^hMWAzF+`@(07w>8P5;syNSM=xXmW|Zn6zMHj%x_NzQN{*_+7TMD`~4c)*Jwq-ku@ zkRF{jElgEv(1ez>rX5jq!gttIzNTLxQ`6y$WDIVh>13uMPt#fa#$uLX|4rRv(>)yI zPmXc|T{k_8yiK13AM*i5cwvNUs#&2-f4O9rB!X8LJ14E;3I zPc!{Alc$+H&1N%)dC1W05^sZ$=JwXSGM?MK108WU&AZ`Nn#;A!cd*ANp=l5E)vSyTzLzq-8Pm+EQmNWoo&QCH&4R*0O<3_%|&* zzvZJK!x>rzz5E?T$7F8pWBhP3v))+4af)-t!Afi7GB$^sVQxve(_A#Gydd2LdVnsj8w zTx~+hh4-}ao;Kmsp+1c;Pn!tbcpI79cxIaw$l1m|+H7JgJJ^NWZF7|y+~O_|u%|YD zBia_B0#(sh+gf;6TkmSy6y3G$iaTy=#8agPe#gISx1F8rW*-MQgy*z7$3?DioqvOn_VLka z`%GlTt+m%@dpFj;FvSQ%zwN!dz5MNEY`+EHeESPr<~GlRkOx5tp!^2>Xe!p9uSjc);Tzq(ca? zh(laHM3xRoNJa`Wl7;NZ)xn${%-6wu9m-IS3RI#V4QWDiKBhHaGlq%$#8l+(Fqiq* zYlkH)V=eBg!%5B{dxwWXNMuapj7&}%(qjjaaz)A&nH!x&$`x6b@0ft^C2|Ts<9msm zi+4u;hMS4piyMwS%{eY|1^bS?$sJzdrXt@5AyGPu(pi)&QSs1Ol+L13k(La|73C(P z3gP~v+(eYlqGXHGS(MJAYEhR4G^QCX7{Ca|^8@ln$saWfyN>!5*`w?`%Kb-e;}~X$ zl0C|PqvY%ugT&Zj$JC@FGg)!79dlBg%G5xfj`DPDL{ntx_%WaGB{Fp!%{Y9Q9VaoF zY0SX>I=a1%E0C+>8rHFq&1_{K2lg3isxq(gxIKokmqt8xm zpwmqr@s#Jh3_?2VwsYbjq?^5Uv$t+7X-zvi(2*{5rw6_1%jbN>Aci1UH@UivWDN3k zv-56t-faqQw%bg8VIB*x_ijsBj-I>ex!Za+VV-U~*v&q4-A&is%+$?H-A;0b^IYO8 zdhe$9ZtkYr10M5?7rf?O5YpYvcaOyf#3vz1NKPu!;_ka=CL5vT#;&>-pfJSqBGt26npL7hyHxYK)&W%hB1QCj3b&!OlBH0n9W?~ zvk>>&{de3&_tmV!?RMY7cHBvKchcRRbU(~r9ODG1Imbn=aGjgn;XaRe%5z@vHVEIb!k9j-r+qyAdhiu}8Nfh>Fr4og%{V49h3U*< zE(=)9GFGyhpIFC6w(tu(*u`GF@c<`^eA%{eY|i7Q;^ zCU>~U10DyF))A7EinOFB6VLKIFOh|8M3aj=Na7$X?PSSB!;Y0P8}^I61FR$!;v*{ODRs-2x`XQ$fPsdjd%ot{ODSO0rW) zb}GqECE2MYJC$UolI&DcQA$vf(v+nFm8nJzYEzGfG~r#|r#UV8lvcDQ2|JZ!r;_Yc zlATJjQ%QCz$xbENsU$m{ODSO0rW)b}GqECE2N@yZpzaAksb{87WCaIx_MMnR$^{h$06$ ziRD!aP>^_vP@Fe-lQNX25>=^AE$Y&M#=OIOe8@+9!soQ19beLkuJqt5`Z9ol3}HCm zF`98qWD3)n#atG!m}RVFH9xVAjcnl;cCd@R?B@_iIL;rO;XHrxH&?mAE&k;`4|x(q zz6?o0YMvqkPxBlv@G@D+P7JxpOMYIXFo_i7bxQFT<)}y%-lisXs81uB(u@yi!N+_? zYrdd89qB@MdeMjee8XUdF@jNyWdf6##!TigpG7QX1*`axwQOKBTiMR9?BO>Ka+qVB z3XwojN>Gy0l%)cd zsYVTIQ;&u;;a%RRIW75=RRkA*B@Ip6aG zYgo@Fer6jx+08x<@H^_vP@Fe-lQNX25>=^AE$Y&MMtsD_xXX_2vf~DJu?M|6>ea~%I~B&bXykN})5Wa1*vl>tk<(R9SNGP{j&%J1IbG#+{RH#sx*a)P<#gQ}M7p`VZgI%z zCZ}5>0~m>%ZgRR!;3{U*O-?sC-6PcDJ>+zk)7}1c|B+vi(_Kz?yU-&W`H|B@P7ibG z(T@?x=^>}bIP61@d&ub_r^k~Z($j2uzKfima(cF4H9sS#r<|U@29aJ_c@;UmxWvE6=_RL^UHhsAO_B4JoUcB_j(@coIbX^7YDW<1ZQpw5K~8TuyKTQqC zH>pN-YEp+;EN3OF_%VnKOvQ6N&x@GPz*cmj8$B?ef%bgh3I58B&pP%tp=- zIYSmvmf6TM$UI~zAMfk#vC3L3HH;^+<&bYflWPD}nBWJvv@$ayNwa6JSXZ)5RG9fe3 z$eAE#LSDM^HF74%nJ|nqTtm(TITP*#k%{(vVqN4+lrzzuO|<6|e?rbgITP*Kq-V*F zoJn#f*|SNV>5rUAawgfcNvF7ioJn#f*|W*zsg0b;awgle$#YoADt^FxrljX(vJi#& zOi7{_z3IyU4sn+AT;x&^nQA|#mZJidFrTURW9obsvKaH3WeFAflGhNPf^O+GL19E1_nPEONTGAdlGvv%L zpBcM3hMXC4W|+^+cuFH@rkt4-8OLno%#<_Jd}clgBD2yVXO^5<<}<4W?T|A|&Mfnp z^(#k^GfU1a^O;?UQplMtXSVsw9>YxJ%$75I0gr;noV3W9BWKRjd`Mg5%#kyvBRlvV zIdkO9IT=LezQ!BKnJZ^*Sw=A(IdkRAoyUV9GA}i9=E<3tk@snhoOyEQeaSWsB4?hQ zdB=mu`~s9f&U`uZ-{L!_B4@sw`E$4*L>8n(&H_0L?AZeE>w?dbvp~)Qd$z#)x?n$Y z7RXs}G>9zpzAh|=oP}~0zKQpB;bi12l(TRacZ0~H7nuBxlhVY+)aA z7Rgz3IEXCHOA+KOmb17d!!!pF#2B4-ZIV)1ofab_qA!o&BtYar~R>)cLTM$_pLqX)M zl(VuZ-!K|EE9I=5#C0Ab=X*KdC!-!8Am@8I-+#gywj<|zIp6OMBCB!`hn!V%RwXik zk;qvkXVnC*@*i?m$yptt4(}mnwVc&0`H^3cvs%vT-9hAsSIEPwy*@-46v2>#ot`PeAc~1b!t)@^I12Cm8{|i z)&!CD>3NwfM3I9edeNJ{4B#jik+WXT`l~@?gZFhqHRNoNv%!2ecwaXxN6rR08_Z{; z_jTio$k`}oV>Z068+#yUqnwTX@V;(5kDQHiHeL=Qo4l`^svu{RoK3axzHVBIoK12z ztqvlay|0^}N6uzBo3qk}ZphgzXLBFy`Q|@3%~>u4kuCOoOF1e~iK^K1E%RB(VwMGw zpY8e2nRtfhcmaF~?Mb0l>+08NJ{37RY;+ zd$zL~pVOMQ*t4Bm+0Q|K=V%c5HI@X5P>k0Z!gwY!nQ7b#BD(@Yl9P%?e8k6mN-OO7 zuI=n(7v{6up6`yMAcZlX-2)iOXvShbyRY&e4|yC!_L$F}I=sgRG^Zs$@(XhI$l0?y zi0rlJd-Ee_ubjQ{^kW2a_R85i4tu`$9&+}|*=s)g?D@WTk+V z(ib_0n zhvgjphU5H&oWpVsUk@Tj-l95kj>tJuk2$PF&Jj6B)&!BG>3JDBN9Fi$vPF(2(F-|8 zL7A54bLOzq@0sk`HW6`Ap>&G$T^dlmb6FC898UVvYTVbIV0!HnILjDp3=xU zE9Y!Q#xWZ?XXTt-#FHR$E*)~t$vO8dEog_Fb8^mg=2wm&=bW5#r-I1&LX<+zc{%6H zGlrSSIWOn@0v-jC3u%#aLC%Gz`H;5Axgh64M|SW#axTcZa59Koe2q7db5YL4vW#Ln zaxTibIFAQGT|`BToH8F`=9$oW&wpI@?teeCBThl9vpc_~6MN>GwvOk^@snZcbP zaw#M^DM>>UKIT(CrwyCfgPcopE*%OYf5%Xe!X!|XZy3#3#xsfQJmhf@xg3y;dVD~0 zKH?MBu$`UkVs8++l7l$pT#<7n5%24jk;u6s=gI`UuUGy<&J{UVBY0o0zK5Kva<1C5 ztKQeEzaZzToU8Win)mfue&k$}bIqPz^S)jift+h{uGzC|m$`?WYjUpHv+K2Z7dhAE zT(@V}SMxJ+uFJV@&u+X#Zu0Od1?b6OhBBP*xWG+r^Dp;<$UjwSNMoAP4Dahd>)FU= zwg!=#FOU;CH|5;SM|TDy=cb&S-*S!{$hj%!=G`E2t1|VGb4$*xcUZz&Ik)B99>z)j<_g#NCy3lBOHFE1mj=vYIV)L(`TYA7FY+>3FrR>+fQV_ZSI+c)fU(Wp+Ok*)}?#sFVeGvIC70)5(KRN%sLMyr;=RZ0BeZ^i* z@CT{V=JU{=KRkw< zhjJdC2_lc|`J>Xvc_imiMeO;b*~ob$=g}hU`QvoRc`WDgv$UWcavsZh+?j10I(8x_xt!#`1!0O93L+bgaCxaQvaK7ULH@VHf+z-NZRcT0Ln$nDAtVd2dIq9|r zVfq)yiJbIu(&wW)1Cf(nPWo>-#|`A9my`Z(5N4=MedJ`2li?kfuogKPr|o&)u_QV7PFM)d>@3FQ}GC<<*0!9JU@ZC%x57>g7Ae18OX#lWTqwUk@JF_7rL^8-#NlDP6pwNuki+@C{0;L zF`b#rW*!fM@TJtGB^?=gpVqXc9bdAIgUESF&P&IG@a4P|p%^77$uK4|nW@a+P7uBl zlAM&Jp$Q-JDWB7ZP3&PG`#BVZSz<{*P8K^4&u6)fm3}i6l&^fElStl_co&BzH zm~}C0&^fElSvRl?owMqk)qQ3?iOyMd&U%Jx=$uvOtT%ZQgi$(2=^T}eOz0e?bJTO> zK<6l(qjFIgouhP)GMlKf=p3bUR7L8dbCk|e4QYYSQ94I`LI-q?(mARN1JF52=cqx9 zMdv7;qs%yJ9y&+q9A(B)KcRD!&QWF@^(#6@=^SOoQ76zjO6Mpuj=GA@Q94JNanxgU z&ZcuVGtQO~owMnj&5W~UN9SxhXEWn$h0xV+HHX=eWovE~8tv|9HSdbj$t}8F(7=%lp8qko&w8VRt;}brk6P@WoH@?Apmtzp-lw&*-&@abi7O)Wg za+q5V-Ew&Ea_Hx`p~D=z(J_bF<j+sU48*LAx zGZT%@(K<)xCLW!mb&j@=(dE!NTIc9Wc<-Whj@CK45g(y*w9e6=VxG}DN9!Ej74wYN zHF_xD@*Sg?%lG_%8Aj_DtzWdgjMgpMUPkK|eE{8}&!AuQd31}u$t~^#VT^7u$F`0P*-D1o$M!%RmBx0U1`o$DSw;1z`sYDfYi!sj_{bHK%G3FVgU(Dy|7Gs_< z`o(m|JY#f>8H}DW6EM%1Nld{!W6U#VF-tMe7=2^Bi!qxp&lsI!bdK4NdB*4(bAiA3 zn=9PsKOXQX2y>?8DbkUFSBS#jmYh2KJ?hZ!QHMESN4K0+sZK5GP>&Dzkmh_u67BgC zv&`9-e)Q*SMlqT(jAJ%)n9F=tW2QNOWDVQd!A^E@lw%y{B)a9ijD9(<@qmZ?uiuj( z%%xkd^yrr>6IszQS2py_6~}87q%dz%nztxRP4vxGo4UM@&bf5X)q-~DoJ;3i9q5D3 zxpdAofRX5$%X^w@5>uGQVwSL!?dKq8FwzjKrQ?b9fbesoLlGI zcY-iBMCVwYV^i`hI>+i9`vN)9IacS`JS3uXtj@8;sesP0I>%O_0XoO(9NUDC(K%M< z*w5*V&apbjc4r_u$LbtAlnLk@t8=Uw$1X(YSe;|dICdR6$Lbtw#<6?QIacRbGmbrl z&apbjnsMw6bdJ?I){OH+&^eFJdCWM^Gw7U0=R9VdCkCDK=$yxl^CX~i9-Z@;ah~$% zoJZ$8W}K%!y5=$4Jk5BY59vT3`qGa9jARs}8OtnYGlzMsVl_YT6WiF%4u0hb$N2;O z@|@!Wy5%v?Jpb$WZxH59hI!^qK`M01Yo2+Z=S6a1o_S-*OA*X7Z!t}u8ET;GtMzC|W6br{ zHgvI*f0b%oL_Foh8`USC_GZjcj5wKl2;=Ilv*#VxF&_=OX6$>TT|D zHwg2YXTB7qBsH0No)>rt^UN1Z9$v*f^A)2wuTzQ2m}|aj*x7vgVzWMdduWx>R^Xr>m-~9UK z*Eheu`Ss0zo{QWM!U8Etg?&j7w=AY&NII3_TcdFWSQAwTjH`W0A*ZUwxb1@tShhvVp2;3Rq$ zxWZMg;qPyOM?B_95XMEwKt?k04B5~(E(b9bMCUl2;}S5>IGy8kjw_FO#_1fVb6kDQ zGfw9?o#R?!o^d+I=^WPy^NiCuPUpC9FwZ!h<8+Q2&m462yYgY&0?ac`=Qy3?)?%J< zI>+f8x0_?=9H(>KA6!P~IGy9J^AMfmbbc)$JvzUp^J`BNg|4re?Q5~*B_G8oP6^(i zGF7O`+cc&LO?j8k_?%X>p&Q-lK`(|dlwo|!WTr5c=`3L>%UHoiHnEwX`HlS?;1Fjy z$9XPti`(4cZV(nsP6|?zn#?@U3%o>b^evc&S1F3l1$8d?I+f75pw0!W(FmOj>Rj+0 zK1Jt(Iu~qBS9C6@bHSbrM(2V$7aYzcbS*f8*_d&``K)6nzp{%x9OnclImH#Oa*Z22 z3c^AG$6}e&W!j&>NKGO{(!W)v3ulm|vl0yiaS)uTWdsp-Z9O*xN#1 zGmycIV>}a>#C#U8kj1QFE$i68E_SnreVpVEPH~27Tt~k`H+d3-g>@_(LC?aOu&;%m z;W=^;O$@mxOgsq`p)BPnPetldkNPyE1s~CpPv}5LI?;sz=vvqe3lC=mBbml@W-yE8 z*w?}bTcU5gzVZ6T>l?3c`~dWg*Ee3@czxsb zjn_9`-*|oF^^MmzUf+0q~w;i zPI!-2v?U3h6ZB2cH$mS7`<(C%gBXjQP8iQb<}sfIEaE5Zbi!KJ^DA~bVK;j@ft^nH zgVS8aPAAyugnxL9oldmVi6I%W(}{LE@maDHLvD0V%trzAP1HB>4N6fJeG}hC-^8Yv zZ=(4onr~uDK0((+^G(z@QQt&;6ZK8hH*pa9ChD80Z{kGsP1HAW0gKQ#QQyS1=$rT} z`X=s1-^3H>o2YN1zKK`SH&Ne2eG~Of)VGMfMf5GAZxMZq=vzeJBKj8b4i||gCxs|X zJc*Q{EZ*TF6{tg9yu(Er&>Ve>e8k6miOxlIF4CF)=v+kSBKEq-7<4Y8bCC(mMduoM=v+kSq7gEnb5Wg(K0`Ki zE~;};b1qsCU5gf>IImNZDpaK!)oDUg-k}+v(~8!#r8_<7$yW?z7{l=n7oEaXrZI!1 zEW>+T)H_^s6PwwBcev<&4&Xg5`a9=1kN3FfpWNmS|8g$~i=`kXsYt`~yugdROe}fG zOFoLBZ?O`*L1lCQ6Mc*6TTI_#_kysvzQy$|o{BW+Tl^)m zV8;HN31RUV%(u9mE?$@f-oj27FH3o9W2gOh6T;&4(Y3gpF5ZHc=v!Rh;vLYpct7lN z@j;kzaq}%c0`o0yzQxVA_zcXqxcL@e&PvR;xcL^}!dCWUzQqsnJLfRp;up}j_-*d; zACGtvge4+mz&@AA#53qxB0D*VLEjSkmMBaDZ=r9AvXrMb`j)7Rz9l|H-x4j*w?upF za*1B_!E8&IYl#tz!dy#CU^4oaSi}-^EwM5PUoSyLDr1*kug*cva1Q-m|0@XJXiZmS zz0s52L0B?1nR$^{h(fQDG1%3T74Y1W-pP_R(50jvB|pZDO8)N|{V<=B=2Oyq{C5Gu zk|UYMOy)3;g*bOf=l0(R2us?%lGlT{FgVIeg!_v-GdOgSa3*Rk$jeoe!zd`tx_vWqK6u|zx6;BaLQkt^3 z`?o6b1vB^=clOpXoaHTNc}sqolz3hl?_rs|#8HR@it{?9C`}D&GaEA~^8;&e-ZJi@ z%rCf$GQV}$NiTa=?B)o_-w&Qi86 zW>j`0=2>xkmSGdl-AS~xx6O&fS)Cx8;gq zMt)yDEcYhWsl~f|$VYraYub{8JuGMc%6-dd#xW6REH@K7RBj&5R&G0oF`IJkt=wtO zagj?nXSoMF4#M&Q?y+8rxI1EPA%$Uc9mMtl27=Y*0{e)`c*Q+O1}5ZPILuZ4<53V+u|rjok&@J8Aur}qr8sZk?y9)ED(aer0ZUlr%6G6Q!~#oks;f#+8B+^TWdrK)zRs^?er{HmT`^({VQGP+b< zihHfP3hzbL^=x7bdQ`oPd#siUJ5?<`nRu4xc?p@-@=<`-kXub|HQlPo_S@%SwURWZ z2UGc(b3yoaNH+50yKfgJkz$zB+j_tKDfZ*-_H?8Ry1#8t-yXm~2J=0C24QvgTm5OG zaF*)MQeA%aDtKOX_gLM0tGDAzI?)|7u5S0Ldv5jb7|q|@d{;pARv=8ZG&h&uN2xHInE>KkR;uK@7)PYB)=cv6xYf zBV6DL*SX0ZoUw*8)^x_2cA=(o)-*^RQ+&+(S+G zTeA-%n8HlvFrOtXVAiv{0H6I6Itq94n_qCqodF)KBEM&vo`F-=SRyitC zg}14RJFE2(?xmJ{spUMi`tuEg8HV%Ka=u#AnT0dfa>iPVaL!uJS?gD>24U^AxQE&` z@Z8#-Te}0D(Yv5-Dh2Mt$U1t5$3 z=3Li3)P2CCAgpJ`^|GUXJ^kzHUr$awIrTihp1ZHtlxBQ@j`cp~Gg{LXec++%(BSl{#OdwzY-uiui%m|^`x=u%&o`nuG= zz+YU(j?{k=gbgwijeBX3Kv7CilG2pL>>AWVUV}z7;a%S2L*zD)+rYUS%w;Fng0NwF z+(*O8)W>%lx{rp=+t7I%HfI1MnSgUQoW@KRuoyeta3!la6@-nRrZBHl31?~KEREzh zYLDkN8ps&zQKKnLXAbjNi03w1$HpLR{2cbAvH3O5i}N;i7mX8e7mbTkm4?V@{3)$y zi+8HAcdBt`x}kq#b89?|ZyAXlYdjA98c$+Ai&)AE^lJPA$1$76cCE2pYi!pV+qK4K z)FdPYsY#2yYm%LKitr}YXoh=j(gt_Yq$6GEi5+Xw7dzHu6z;l-yKdsHo6N?0-sC7J zIK>&vu!(atagHVrcoc+9lamVPXllMqGm?cUoT;gIp{e|)?xU$$G#!XLX*!(ma34+O zHkI4dOq#lnrtYJu`)KO@ZhAHd-!bENO4Am1_s;k1G>ki)ihui$``TyY_ zng!_JEEDF@EHf|gGVY_9`|vyDVKXyn=FXcf#B-ZDYcqG*>>-bX@I80g+}<=Fik)e0 zXPS>;JocseRAyjC&Fyb<&uPAd<+zvTcBlCo*0YJ9*@pXSzMFlxx90AxxqEAV0`qO| zo}2r7(A>^7zl@&E^=z(Zb3L2u*<8;SdbUVLO45*yj68$REnegm^lg!YoW$}f1t>^7 z_OwND-r!BjP#*7a3-4Ep>eQkx4QR|eyvK)_VGA?#yVPNeHnhVWTbN^uuJqt5`Z9ol z3}HCmVeeYlr4|#J!gOXamjx_l87o=MPpo4jTlj???81(;*v}!3aGXCl!+HMXZ?1BK zTl~v?%)P~vAp9uAJN=P&`lF}Fz|%a(3%pELvJ*pY@{*s|C`=;7c%4$bML8-`g}13m z9qQAFrZnRNTJSNS(V8!4Pe;1YonG{zKi@EzVT@oDW0}BYrZJN_%x4ixS-~oPWGx%m z%vQGZD|`5jgB<1)0T<0ctxW@w?2Vu(y$w@_8(vyj2d7hWZLN=nwMIQ1I zM(u%eu(Sgo%qbI%T$JY#EDBm)YF^p#t zQ<=eR=CP0^Ea!WEU=8cp#LsMFC%f6l0e;}3Q&-Eicp+4c#|@erxI1EPA%%vfX2MTdwj@8e8T6np&eh+ ziLUhEEBZ2kfec|d-!YnTOk@hvnZ;Zdu$X16WHmprj*V>L7k03Vz3k@@M>x(OoZ&ow z@;6tx!7cvfJ`Z^kgr9_@AT>{sfv0(n7kHVhWG9B) z9EC`rC?zOKY06T8%2cBUwW&u#n(!{~)0~!kN-NruLr1 zLpn0@44HY6SBN49If>;}3Q&-Eicp+4c#|@erxI0poBFuV&$`eD_w$)M_)PcD=CYYz z(aZ1aho3p;XZM5fbMyQ>4>JAUefar1G{c>K?k+zc#|F0JUOu-gt?WoEeOeX8j9WQR zD>H0mcC9`^b}Qd+H5_-`%H6iwf_rK0K3b=sB=(}U4y`-Wo4(9qF-zIQVU7l28{cV@ zflRoUHpO|J5BQ8$j9>zKx6!rDLCmgga?<1O+g79|cCc+vzGfgRS%u7GJaw$p6|E4!*-sZ zq(f3U+(nY}Bsou#^CZn=5%x97JtVn@B=?YXF9_R5aF2eEI&5!l?eo)s_i!KWdoX}+ zaL)G5+1@$ZpF?*0YeD$s3uGsn%D9g&&Hqbh_|h4^bcQeIu$1NO~6PHoC(72&ys~GoS}O&oT2+@rZA1a(W$%L>QRyk zR6?&FdiBt&$8pYcF$jAWME{9-%c_9dU| z)9?(>QHQ2DUw?Pne?AMbFa7`HVGs_m<9?Gi9MBN|K0wa_-(v>`JmN_Zer={-*ThV} zcJ{9)GMQ8S#os~rO+NJerU*%NqX%o*iaYjuv*ExT#NhATKs^U`U=2U>OAronw}ag6 zAa^^+-41g0LGE_Y44i$?V(tau;0VbmOEs$FP6s>J;HjME5|@K;h_elGwjs_o}h#Yp!u(kw=r z{ixKW#h#3Eu2J@6ly`cR%uzGh%&)k|QCE;Z%6Ug;CW`F5MHS3xbXz)OcSk$>XdOrE zIQk?Pu}@>3BP-d^b&S0m<6g#m&9~UWG0r$f<`}aZ;||9r#~qGMpd@e7oL02KU5%AD z*15-;<=De`|Hj@A!f_$KKQ0#U*0{p7pf%1rZUhsU#Cq)VxEju}pR9E6j7Z?de(vL?%# zEMszeIiwJQ{-(y^ zE~b8f8BQI*aLi%qa@OFyQ!jIye}iz^%lQ5@@9(toxYKDhan@;iPV?SPo6H>Mag1{~ z`*im*{W+eeBEC1hHl6Uj>3x`r?@eF89_-I_`!mDt%<%mg=_yKS%FvRww8K1R%tH1I z`#R$Y@@G5@!kH;Zg?pQs5BD~+F7MC`^O$_av6*1%|4p}QaYlW;8=Dp%;2I843JadI- zu1rpPoNuN6D=Si&4*1SW87u9_%GLbHC2n#%2)}oh?+fr6vc8w~y{zxYFqP>z+xO1) zy|b-KjXPLnzgBq%SCys=t&q1$r&Z(dy;U>W!(n`X)qg>_IvL)>)p_wQtTxxxO=ymL zUp;`~jNm8S>*}ps#0*#e6NEpw;~%n;4cR|b+ zjWwIlVU07aafY?du-3h;b&j>Zv)1R=`utj-U%QT9FxPbfX|Pl4%yV5$YSWh?3}Y`x zI2MHKGw=d0Q4h0R{~n{6g0rvJZT%md4#Ev)xZ!28P@M)eq94w(!3;Jy&j#n&;5-{c zoMmHryk{HB<6IlR=3Ct3M$g~q`5QfdQ#AP~Ky%#RrZ!AqCT6qgBp3NB2sb;&=3K;5 zi^h0QH#^JbF^uDPPH`p(w`3(ZdH9?!>Butd&6c&?;64w6@aHPj!QK441he_s=e8zC zr>z;0yH)O1xm!munW@{r)_q7oBrEA!n3x` zV*w9?aC-_;Q3`jt-Ck~=j(^|2Cjced*dJY$zL?fQy=*wJ13?K;MZ zAl#jcI12J5J?OgZA@~ zj6=?Q$o?N1${5V!kiP?mo&@3V5vtRGM$BR{OSv0_hXX>);jqsgu8DW~u(KSVhJ8GI zmFq!x#7-WulSiECh&de5`^Y!!U_bgDeF5E%I@i(0d`JuCvWykjkE4%+@R;mlrKwC+ zh9LXcSPpZVvq5+~D`tD#-5+mFN8IP}wQOZu5S~azIx^6J_xJ$&ePR{f!;??(9MAJU zcIBjZ`s4=8@8r%P{3A0_WanePz&`!4nvHA@!c#tT%4bgb%&C^N#lD>KnNvP<%4bfe zz*$ab!gEf0&S}p%E$8%a*poAPC`3H{8OFEx_cQkGjD0(s13P;*KfM`*dphgi&z|E# z5S}YaY0BW=&bh;L?(p0p{@`>Fp7)&do^#%F&VNRGI^gck@5B5qIL8IMcA*q@=)!bn zayJMs281-=JwCwwUv&Q$J>$=ph{k*Pr|19a`G0!;pX=}*{;Bt05z=B#e^sCcwV1_X zmImP^bG+o=FS)x*?)H+qz2t5$dB&x^xSPM-+uwz7-oN`Wn4x$l{{D-W^R8#y{RWwL4|AHcL3pnuI^C

MA>W4<7X&HT#lAbjAQ51jLXb3SNK zcY3ms9r)bCr+AL%G4qFV9yVtN3t7w+?r=8||GvEXcqMyhH=u z;{&EJm-(FHFa8daMRM~Rh4_Saw8!ToJ|FSyCo0Ssm+!x_a`#-rO)%WyYO9pE5`IE;IE>MA$5#lPGSlBLrtT?$h36m}_H zCiF??tm!7RjWhU8I(L=cchdV#dgo35BCimI^QMm`AH{I*={+ZXS=@d4s=SRmO7D)+ zzk}UN-;-XLU3#-iuUC3IlwPOwlbFgJ=Cg>Um`(Z(Y+?&KXUI=+UPpEY*%`k3zZUL2 z^sh0F1NfPv{W1K`InQ~{dCvEk^HoIDa%(~|mrDc`?6w{l0&l=ks~qpU?UJ`Ni`SD_DthCS+ddzi1gT zoiTbZWL?;$!W{~8E@p8$XW|ZpI~3<|9v5;kW?kHfdldG!&|~oqpR%3Z*rVd#x_@SQ znPcANR1V`PPDanAeJb@`%Beh;3y@W*MtK>FxP@D>52d`y2Y89sc%3(RllL+I@(Z@` z4dz(dg>omm_=Uf-yqbcZDl@I7aRBz9s*zLGaV&DE=Cc^{s+RFQW>c-kY$~&u@)E2r>vu(MMQ` z83+9Y{RI64xr8;m#mB5?1Dn{)muzJlJCIM1Nv+q~PSqzd$vhSz|N3_BU zNjrn1IS#wh-h{ig&S`zuwfb%K+y2NNen-|x#%US}=OpJO=OpK(<2eyor&)N{lO0d? zF3CE{I?dxMu141BI_!VC9=n+C9-m|0>5nY$CNR@Zz0UKUXS>_Dm!&+38FlW_ zt>8soL0+AAxig>cZQkWGe$DdHew@N=&SsK}(CcVE3s{I=M>k_Wqq{Jl(fvGx-55Q_ za-Klnqup8F%e|k@5$L&>Q7@xjM*XRr!CA~f?f!hcpS_xcEC%(4C8#kh<0Se7qt1?{D9I Q_I}Qu-23_e|9rghA8M`4y#N3J literal 263437 zcmeEucYIS-`}jR~Bu(1vr0Gtf*?U5EQd&l3)3Qe?Z3>0bmZoKodqqH$y#xfMEg(Zw zP_`hT0^($fED;p}1r=Q2`kk9JEk*G4{l4$-`}zIxqaWJbbDn#~bDs0;C&Q}B%fdBg z^C<)%D1sq4LLdx;iLm?0$A+rIWtA2EDuiO3{mGBO33icCYEM&=-M zk$K2`WHGV=S&6Jc>X3EFdSo;560!%`i@c8PL-r$YA#Wq^BJUyZBOf5Akh91q$d|}f za-aZ8pa%wE z242t(<;{0If$iqFd0d=r(i* z`Z~G~J%AoW51}8S$I%n$N%RzY8a;!4jGjk7L$9EpqhF)npf}N5=(p$(=r8DR=d=y@dPr#?(6g~r= zjnBnjz&GF<@lE(<{6%~V{u2H&{tCVo--hqN_u>2TH}E6)QT!eJIDP^@iJ!tR;h*A{ z@z3xt@oV@u_)Yv4{s;aife?T|35>uAg5VHbf=BQP0U;%lh-9J_(VEC2HnT(VrMVloG><5kwg=lBgoa5Mv3Fpopi5Im8;Gj;JRZh_%EzVm1fW!M;YhJ(?D(U#$4xESpjd5p&x-5A{&`HTWa zKSqB>F{6YLVw5sQG0GXE85N8$V;o~5;|azL#!SX6#vH~1#zMvt#!|-fj5UlpMm=La zVc8SgNTF+O4(XMD^!%ecn4&bYz&n(+9FPnbVlFm`^fiGZ!)!F&8seGwYb^m|K`HF}E>yFn2NcGT&exU>;?@$9$i8 zoOyzIgZVY{8|F>sE#|k(@0i~+Z!_;Oe_;N?{4%s6?R zI!+U3iL=H%7S}nhOI+8uZgJh?dc^gN>lK$DR}eQSZgAX?xYD@caU?|kC z#qzQItahv%R!3GRRu@)RR!>$hRv%Vh) zRMs@sbk-BBCt0&ub6N9Pi&%?U&#;!WRR9!x^{f|In^`ZiUSVxzZD;LZ?P2X@ zy}>%bdW-co>mAlH)(5N)StnViSZ7(Eur9JLv97Q_XMM%G#`=bJll498HtQ$W&#Yfr zzp)WEU=wTxo6U}A^Vod0m@Q!&*haRAZDw28R<@08XFJ$!*lpP!c02ZC?9S{i>;iUg zb|3aob`g6RyO=$kJ&GM>*RbcX=d$Oq=d%~E7qS^tlq*gvv=V*kwkg?*R( zdpsUb#53Z#@w|9`d`f(3d|G^Ze5-gxydmBgZ;Cg^TjE{u?)YBu`SAtuz2p1D_l@rt z-#>mp{J{7@@k8T>$B&4wiXRhS9X~OCQvBrjnensYpNyX!KR141{EGOM@!R5e#P5sW zAAdOhNc_?G6Y*!_&&6Mf|2+PS_;2EGCJ+g%1b%`bAvqx>AvHmfph++!I1<_xX7??09VQ9kegb@j431bqf6T%5o5~ze333C(XCCpD)kgz;qMZ(sEZ3(X? zyq2&%VMoHwgk1@{6ZRzRO?V^WaKe#~5pyJ*M2?h`#7X9)a8fyGoODhGr!_~z(Q>RD8^_M^a(o;=rxPcS^BAWy zr#mN~Q^4uX8O#~N8Oxc-p*W9op5i>snZsGeS;={hv!3$;X9H&=XDeqL=NRW*&U>8q zIUjI7TpQQUb#PtWAUB)aj{6w5Gq(%3fZLnfhdY#8#2v;h<__nM;+Au3 zxV7B5+UUyy(UQb?c-XPv!-Vk0XZ#ZuRuZlN@SIwKuo5GvQo5q{Yo5g#Ex16_v zx03fPZxwGfZyj$v?*-ll-b=ifd9Uzx@pki$^G@?F@GkN$@vic|;$7q2=KaLG$4B`X zALkQ%4xh_c^0j;m-^#b~J$x_U$8XQ?!0*WK$?whY&oAN+<4@#I<H;I=P%$d zxouH2)0$WBytGC;W5#^ZX0^%lxnS-}1lX zf6u?mzsLVoKnNHDrXWs`Am9r!1+4_F1z7^QKp{{HR05O0EU*Y%0=K{;@Ctl__JR(A zA%bCoGQmhewID305lj|L5lj_4DVQTzAXq3^Bv>hUR`9CeHNkel4#7^rF2QcW9>HG0 z>wUp-?CiiiHwkqEISK5+(~% zgsH+bVWvEu!pdpu)lDOuv!=v)(C5bV};{{ML2lB8^BZ(uwpUgUBc{iOeFq$RqNKe4_TE4x)~t z?xG%|o}z)GL88H;A);ZTQc;DdQZ!5Sv}loNrRZ7FD$#n;Cecfx9ipA0U7`b`gQ8DF z=S1g47ep6Dmqee6E{i@BT@igQ`bu<5^pogk(Jx|DjEQkEA!dm=Vu?6WEEUVdnPR8d zC3cHFVz1aI_KO4Jpg3FHPTWD6iJup*5!Z?9#SP-M;&tMU;#b7G#Jk0N#D~Ohir*4{ApTJNk@&dy zwD=S8XW}d3d*VMNgoGjCN_Y~!BuSDiNs-7UYKdNAkT@i5B;6#vB>g2tl3|i!$!N(K zNv&jxWU6GEWR~Pf$r{O8$!5umlGh~LB|9VsByUNMNHNSIKXZ-z9%Y{!By?K_ZcukSI=+Bqk-xadzTUiHi~!CvHxBIdMng&ct1b2NDk^9!flx_-^8RiDwee zC0X7=R zerZ4&ly;KlNsFW*X}NT?v{pJ+I!;PSXGmvD7fKgN7fY8&mr7SlpOfy8?vWmp9+JK( zeOLOP^nK~a((}?!rC&*}Nv}(9NN-E;B*iE3k`j}oNwTEOq*h6~BvX1fhB zNym~-C7n&Wkn}~;mq}NXZY6!2%uJ3;W+k(e`eA1=O(vL?wZ^!xiooX@|fi6; z-krQJ`K{!)liyGNAo;`OPm(Vtf0leb`9|{B$=@XZko;o`Cq-I}^9b$9B))I+InroNwg zJoR+y#nelwpQc_;y_R}C4Wtoi32EXqNm^oBMw%=wGfkUjOtYrB(>!VUX?@d%q?M)( zPaBa|l{O}=I&E?qnf655oV2-V>(Vx+y^^*yZFkz9w7qF>roEN+cG`z&C(}MoJDYYn z?X$GIX}_oA=?UqabZ&ZLx->m0y>+@WU7K!Ax21PZ@1EW#y>EJ9`q1>E^ik=R>EZNA z>66o^q|Zp7nLaOlQTpQaXVRCauSu^942nOW&XVM*2JH$I{DSV~Nxzf+L;Ah+Uo(gdRt6_Sl98Ap%}C0~%xINi%V?Y7&&bVapV2)d zKcjC(VaCvm5gBC}lQO1d%*>dTF*jpg#`26+8EY~&WNggXl<`u=wu~JaJ2T$MIFNBL z<4DHQjI$Y^WSq-5pK&4MV#cM6D;b|>{Fw1m#?KkQWZccTm+@=HZ!%m)$QZIDS+Xoe zmMTk=rOPs8GFg^PE7Qp=GONrh^U3_OfGkJWQPy47L)KH)Up7ECR8}M#CM%YWl9kJ< zWno#3Y_e>MY`$!PY@uwCY_V*KY^iLSY^AJD_JVAKY@6&=*=w@xvfZ+MvbSZ2Wk+O3 zWgp3o%RZNVCA%g2LH48U&rB?nnaRuKX9_ZfnJJm6nTAYDrZdx(8ORJ~K9<=nvsdPT z%z>H3nI)NHGbd(JnX@vV%v_YYEOTXMeP%=E+RP1^8?)ZbI+ArX>%FY^vyNw-$U2kt zan|{)3t5-5KFj(t>uT1Gtgo}a&H66uhpZp7?q=P~`XlR4IVQ*DadMWNBj?J6a*sF&O0JXZ?vS^UyX78vKpvFm%G=BH9go;FkRFSGkQ)DVy zDHIB&LaWdzObWBYu5c(^3b(?q2q;t9nJ#cah>ig}9pip7d0isgzGiq(qe6!nS*#S4lJ ziWe1I6k8SB6gw0<6?+x0D-I|QD&AHcRvc5jtN2jyk>Zr%wBi%RImIQ#r;5)NUns6A zt}AXTZYgdn?kIj%{G#|x@w*ZzQ6)pkRK_b4lzgQ?DN!aWQ(zpq!|js+^{ru6#oIq;j@$u5zAok#e!}8Rc^2D&=Zrow8oJUipG@v+_mdE6T0P z?aCd>J<7exH`YQ1WcYP0HP)hnvkRNGa%ReMzX zRd1-?RK2A-s(MHDzUl+j3Drr}$Evfc3#yB%&s0}bS5;rBzE*vs`cCz|>POX2s(Y$m zRe!1xHLfPqEHzurRrAy$wOE~`PFAO@Gt{lsS!$J9t=6jzYKz*cZli9i_Ncw;pgLRK zUfn_cn7XsNySj(EK;2v2Up+uQL|v#ZR+p$psLRx&)fMV$byz)4JzhOoJw;8aA6L&* z&r(0Fo}*r%UZ`HGUZ!5DepdawdX0LmdYyWsdXxGk^~>s4)vu{{sduaQsrRc7sozu| zQ6E*mr+#03Tzx`)M*Xq+y!wLrvidXim+GtP8|tss->Sb;|DgU+eOG-?{fGKb4W_|0 zaT=C}qv2|V8j(h-Nz$Zg(lxC#tu;!GN~6>0HD--P>Vz zX}W9jH3gb}n*N%>njxBDnqtjx%?M4oX0&FErdl&rGfp!}Gg(7wD9sGbOwCi8r#166 z3p7hKOEoJrD>ct)p4T*J)@n9rHfpwLUeavSysFu$*`;}1vrltSb4YVob42s5<~_|v zn&X<&nlqYnn)8}ZHJ3GCXui~3*WA$D(tNAAqxnJei{`H8cg-JKREueu+Bj{3mZKGD zh1x`|RGX?z(`IU0X%$+fR;$%%O+U436 z+SS_UwDsBs?F-rs+84E3v|F{?v^%srwR^R%YY%7-YTwo#)*jQotNl>>k@l4KwDuG2 zIqfCwr`pf8UudssuWN5=Z)tC9?`VJ4{-XU&`@0V4P#r_Z)Wz!(bbOsaC($M9Qgo?0 znJ!Z&*C})womOYmnRGUtUFX!fbUvM5*G`wC>!|Cb>!Rzb>#6Id>!a(d8>kzk8>%bP zg>i^o^FwDnQo=-IbFSOy>654CEYgN4&5Hz ze%&G6Vcjv^2f7owGrDuSOS&t%tGXMyTe{o2pLF+hf9O#?L(kT8^+J83K24vlZ>3l0 zb$Y$tthei(dcQtb-(H`m@2>BmFVOeX57H0Sm+FV>N9o7tYxNWKQ}mR6hJLnwu706@ zseXliwZ2ZjPQOvVMZZC;dJB z9|qLGFt80=gV>N{NHb&_z-7&4X_M;pV&8sm85WFu*O!uX_dj&Xr;iE+7cm2r)6t#O0#MdK^R z*NnT2`;CW;hmG$UKQf*&o;6-FUNK%Z-Z0)W-ZuVZyk|m8z(knhO+1sxBsHa)WTq^W z%A_-yOg2+nlgAV=<(N8}I-9zi@=bkB15JgdV$*QbC{v{=Y#L{pWTH$nOtVdMO$$v+ zO)E^RO?9Sqrj4d8rmd#!rroA}rh}%pP4AfAHyt;9Y&vVYV7hGj!gRy*wdq^a9n;UI zUrm3S2{X&gF$>HRbFw+z+{&ylYs?0-#q2P<%mH(bxudzWxw|>v+}AwNTxc#f4>yl8 zk1^MpCz+?2r<-S)pEl1oFE&48e%AcFxxu{Ayv4lLyxqLpyw7~l{I>ZW^M~e>=8w%6 z&7YaSG+#I0G=FdY(R|nZy9HPX3(LZ>2rLpyvL)Tp%A&AnEC!3k;;^_ZK1+_JqouQ@ zyCvV!*D}yjXeqV~w~Vq>TEdobmPwXrmg$z+mbsRNmZg>zmerO9%L|sxmaUfUmfe

=Bw4AhjY&mcF)bgd}y5*+jd&`fOyH>)=va+pQE6*yjimgf3WUI`YX;oTP z*0xrs)n#>CJyx&PXU(%dX6mw2rctTSr?ftd-U(>saeJD`kD$ zI^Ft&^-1d->k{iy>oV&z*5|EjtlO-6tb47mTMt{0SwFCzv3_hlYrSm!%zE8=!}^=` zck3V4KW&H&*iaj0W7@bjo=sv)v}M{_*;?DOY$}`1X0zFC4qF?W-xjd-wDq<1vkkMA z+D6){ZDCuDZM#`UyWifH;r0>sGW$sTDEkgx)HwA{lhf*SIGs+9)9=i7<~ln%A9Hqf z_HgDq`#AeM2RRF!!<-@K2#Iv#yQS8(K*FQI;T5lI%hlQIOjVTIhQ(@JD+tv z=d5$Cb-v)-|z-L(aFIN1g9FKX4v*o^pQdJmzd%2?3(6!+%?1Xr0Z$d zJl8_k64x`Xm9EvUHLeENde=tRi>{Yl+g#gSyIgx+`&|cJZ@G@Rj=A1x%13*EQGIu3N6}T|c;fcHMLR?nd00o8e};6Wlzv&@FK%xl`R4?pAKOTjkce z4Q{jB=5FJ5xxMayyPdneyOX=KyPLbGyTIMoJ-|KKJ=9(7E_Ii=%iWdkYIm)BynB*+ zs+)2@;hyDw%01V;z`fYL%)P?B%Kf~%-o4Jf!M)l2l6$NBHTO>U9``=?0r#8k!|r$7 z@3}v8pKzacpLL&iUvhuu{=)s0`-c0b`#bj?_fPJ-?%&*hdQcDHiSxvJxE_H=?2&p> zJn5cHPnJjN(RlP8lgH|Dc$^-O$M4DZ7418}#OQJ9zWFUA*1By}Z4>{k#Lc zL%c=a67O*DNbhKGl{f4i>z&}8?49O)+&jbjr1xp>Jnus967MtKmEP6fHQomAdhbT> zi{6*L+q~PoyS#h7`@ILfZ+VY+k9ptse&jvrJ>&hvd%^pu_loyR?=|n&-do=9y+3$= z_TKaU?n8W-kKtqa5_~+L&?oUF`BHruzE(cDPvz743_i2Z=4<0~`Mkb>ubr>GuamE{ zubZ!@ufW&WH^4X8H`G_`EA^H6%6*l-YG18yyl;|ks*mzL;hW`q$~V`yz_-}9%(ud~ z%J;ml-nY)T!MEA>l5eZ;HQ!F(9^XFS0pFXx!@hTX@A*FTo$#IZo%NmfUGjbA`@;8? z?}qQD?>pZe-%q}~zTbR*`cXgOkMqa-xqg9P?3eme{OSHof0keA*ZB2*li%uh_?>=_ z-|x@%=lVPPAM&R5g@25{#y`$K(Lcpc`ltJ6`e*y+ z_~-i<`Iq{a`=9kc=dbgx^}pcX3zwN){|H1#8|9Af%0W`o52m-=@C?F0<0*L`>AT^K~Xcf=|v;kc} zA20+g0Y@MZ$O+^IItB6qT?5?$!ve*Dl0Ya>8WEF0elELSRGS#lV)p*1)#FtAU+?eS!UfLxDE~M*`;q z7XlXpmja&#E(bmfTnT&`xE8n`xEZ(;_#yCf;FrK}K{SX3@nBq#8x#i9g6YAGpe(2e zYJ&QpHRuQig27;RuwAfyuv4&euqZezSR5<~hJvNR;lUBXvf#+zs9e<44#Guv2paii$(I zmBqEALlrf#nNyG~M85$^MbeOTBmRl1avqERs#elL;FTIif(6@V6R* zz`rDiB?Q=SGa6*l|t;=q(n{%uN zSGL7rXy>rBv)G*3ZEQJ~LcR8@lXf043_rPfEtQq!!-}f&VrwbnCpGs)*4fk* zSIAE{XST6rTH3lCnHF=KHkoGlV{w|{FN@Wc$%-9@3&}`uYm3)qTo?K79K!Hq> zLxI*5P|)YYhYQRfQ8}(#(b%%#MG(=^rl!a2>JUV?07CVyDJw6lDGP=BmX*|uh=S!+ zgsWfzQ)P8CSks&LfweCwi@{jh4(d}D8kZXyRy%w+JcOnNG!0+K7j+GduB@KWvAU>g zL=12+TtV|NG29G9h9mmT$RK1eG6X3^h9X7CFr*kMK|)9=nMS6Q8KjKNBwLZK$t+S% zDoEvKWCT)%j6_Bu<;ZBH0;xo*kTFO#sUjU@J2HptN)9GNWEDx0PmwEW1Zn#fSC)i~ zG@2@FtBXU81k^jv*tAn)&WNIl;h}IL-}DcFdxfeh!!$l1Dj{a`L*)>Ip^~Q23i+*@ zM(JEubKf)t@Fp0$!qrq)z+|zG)s?kX(YIl085~O2^jcm;O{l!QYwu6IPy{bRs= z&@F}htS0Dgl{IC>p>Slb$jAGZlG+5-aw#3)l`iCGKBBkjrWEqi9sv?L*FwInsrzr% zoKsl>FLZV|4Abk1nz6BYA*PcF|%z z`IYd_LBQA?&myal#5!aZX|6+_BP}$;r&-KH-#GzgNIlYktS#iHKpLhwXb(C=5fWf^ zC=A(s5xol1Mq0ZIz~*7G>_vcLIKfDf!K(?yOigw%q>XT>1oGWb|FW9U=*Z>=ha1T@ z54MDdgo|mO+JmNRIHWE6Na^F+o?FY;Gr0nBV$z8?7MoL0Ra7&gKO~#b_)cXNHTCfc z{j$Twa24h7AVj?@iYrHtE~|kTA+zx|@sSgN$L9o6|BH;uF#f`5C>#p=z4y zs!O2=j0|oZUt9|t!*s?aKcPM|tG-q1ETr*Y)`86Er+T>}D;WMI@{kpr(<9m%2gR`* zCS`gd(=9*-LS7Vt%%vJ8TP}pjmCKPAkXMlH$WG)Sav1p#rcs_j&LdyIG|I1$Z(*{e z5T;2cfmT2ZQzP3%2Sh>iFJ$N~{((T0zFt5!Ksnfcd{uc=I(DzEDKD!C(cCqfKuRBY zBdsW&A=?eSg7uqb% za1rF@LkUwcJg)>Ed0A;0Wc|@?yohXp=ie>AYi$j^;O4v0fV@cGju_>?jJ!tQ_E(Ut z$Ts9vvJKgmbds*M5T`pJR(FwZ(oY7+VC1&bvVx|Xl2A#6J`14E5xpqz4u`tI>)4|R zl3Fz+scN_;S{rH99(qAuT*%kof2CTC)Gkz7SsjXU0{A99aBP8Zz@vp%^8o3oLk^K% z`fBp%fg`F+cKCkK!^lxYUxyqaeRaqVxNdth756CQOD9b->oX0`Df-MwHk-@n&}X_V z_9;_h6McvrZ<^=?nN1pE9j75t=^+Dx4DVlZ=GZ&ukWXo}o<}Yq7m-V3F4>;!Kz5{= z=x4~42ovo@=KU`)(ZAtiv88^E+@$yY4f$9da*OQzk9gl5$lkhi=YR76cVqJYBkq=W zsAAgZf;DwtVExf~gq@FLT7YHB1RK$|3V68K9)3btet0Eub z1ahOdb3yOEgNjB~jGr}o&iv(dYqvzX0f@1O#1`BEL3YIO^%L?Zt;PS0{DRy??jgS- zzahUPe~{hC?qmU~jgTG@fDAg8h_qR?5I-us)iL%tBv%Np1GFO;OeSHk`$D%3w! z|NfCC`fq8-|BjN{NXQ@=q$BzUkOERc8aae4B!@PD3?PH7vxpoMJREsg6hi38WL=XPmrdzlB={)H^pfVm&X?fMPf-}qeo&;WmO28 z@0HcGG5}5gn#xh3iVkI=@{*{28`&$=x~oI9-WL_35%~<2u}}pq{Y%=_*3?wOcW74W7z0we`$l^R&&(-s=^U0`ufKD2g+LDRJc8a^wKEwCi#BjiLxpF9gC zI9-zSH7v>b6>{?gSca1X(&1Ifgk?8&NIpK`2SLytl!8&PoMuB*a5U+e=9Yp4y!EeT zG90TTq&?7q99aiCk)!^JOa@({OfH8ehy4K>l_dU0Lb-JMe)pN1YoW;@`qu_Wa>QhS zY@2o`buFqWg1!i2cwAX&&7;kZ>HFL#98t4_wkyODyMk`)v!-5}QlFIk5UHM;cAu#* zH;Um#sosA`@#v}vOP^V_`L*4954>~i{f|Dm^5w1Q88iv^^p$db}PH{e|-SCe8GQ?+#l2jXf?e;UPxblznOIdakJ# zO6o=8haf6Z`bb34+Rx~*CF?F&qs5gAsi_7zhTDW60`y zFa%1Ba8zC-kEsn+Pv}uZdmkaI2{*e12bV^ePosel8>$41phZv!UY+4&4OvT$Z2)Cp zBp5}GBgd1|Xc3e~%Z~O%;Rywmc@@wOhBjnRdXgO24pk0eWX6129F&$7M}*VBNE7W` ztb`67+Ed!DsHS)Xtt-*uC-U|wPz}PM1`3#3Fcyph#*BuaP zjLbw%AQ5s3IrSubWg?gaCW9$pYC#PguOHm#Xqq*XlgWwjpdbJVDDZfHT1-U@A#zdy zbi9S4^63dMBT|ysXqZJ!r3UZ>m>F?dM4zLePlDMGtUt1LdXe?uDcbIAvAL$s2ilu9 z9UXNpmL%#f$PK+dWI8_6gC5l?*y-ul_y1w`=! z*M7+}|KYVibZ(CEWqvM`D@;sEP0wtlP{HgTlhx*E>-PBk?Q%PIdaQHT?mc@!Bc=bq zK|>0Qic3d~DzB&H8Xif}MK7TKKM^ zZ+1xu?Wv}l=^@Q2a7fDldPv&C7@12cfE{)Lbb>*sHceBEgRM@uT37Q75wkG@1pB=3 z4GsN3j~mFYj}Jy1$W2N~ZMX}JQ}9s;lG8LO31QoF>f<{=ao&X9$ig$Dzq6~V=ojcQ z^CWQ0*h3dM8!hO%H4XJ71nD7&c-6YmJIIG??GS;04}EBKTHsT^Cin%gc|dlonVw)U zoPgdzKl=5df;ut$JggBu*x-bXB@!Bop+32xnxe9D*gaelJxpI{1?(=PXBpWqKU6)I zc3RW@^iZQYusJLCR7KAzi#>(mob*0wo7Pna-xx>3&~Mbz?@y!;iGE{p6VN8uJQd=2 z+JH!mY8)LziU7d&#|034`XCzHk=RgK&4gIjOnM}G+{yH~v*}qz!l$R3#@z;+=hE-b z>(fLJPt&jq>BdC^awe z&%(;?b;!%eHdxV3D~zY1>+vS?Ev(!A8JhnnU_uup?SM=HGHA#cpbgR%)@Nr!^{zAM z3VJ~iIuw*ZIW!&$lgGhRU_NA?%RvL!0JgyT>+N7atiC=BE3VIhPr(&fXZ;QM7R68k zWuqckU!97!K|N>?%|Sb%U11${Z*&N(pbnuU(Mq%$)=^JJNpuD}4_%BtgRVmB(6z97 z`X%%gbUV5qeG@&3eh4e3FTzUctC0%nyRbeQ#h6$;tdN#qNmx3jgjLZd%#OKWO>{e0 z3*7_D$A-X4=n+^sHUZW@Pse7#+UJGXQfwvGfNj8D#9oEf&--A#^LyBF>?C#;);eFr zF2gG4+t`oTA5nFpNiBY^rFwxgV|;om*oElVgKgkd@EXLy4zQDanw&$9<(+Ughi^eP>!@(e4_loify=p5epkCXqys~&y_%EK#bb8`O$cXP7`Z^-c zi^ynvG`6>+;9XjEdIuaM7n4is!F%9+aw+)?Efi@{9$8=u$0+nD!1kQl>T0;EE=9E! z#Ut{g)>5xfX$UqJ(;=4=bYL5D=u;8rC%G&t=+A(UVN@ihXM}1Rz!`8BS>C%_etxK? ze^DEU-5eU`G(X@OwM0Fmc59Po6kGt%nOP4mf=lGHZCK{z!eegL0x}1xk;7py^nREq7H@+) zYsiKu27d%UH5t3$M`U>v;ummt4Y@7~@hkZ4L2DQMN`p4>j@TytMA?{LgT?+l!J0n9?C}rs1V+GF}V#A`)lNO zatHYq`6C4+6iB3ijK)J|EZ*51%*}_9C+Kv6fgz}L!@#mO>SU*{Mp1QHxUwQbaMO)zfa@%)f_V(| zhI>R;(xqrZWo^w#v=!PK-V7a>ie|wvy5%?Fqf4k_cqH6@Ut5G#kgrBg7FD21=yYm= zuSZqL^7|Va&lT06+GuoukDNh`s0lSAJk)|(Q5$MU9gs!0MV(MtjOBuKsf-#aLz>+% z(c_UcMR$8aw-EG=(7_ZsA0W4KbWvGFGdOg6L{`fq5(7rcasfCF=s&YEWIQ1lY1aF?rqW# zqgd;Jc7!GyJkaJ?S=6FwL}XcYJ=%#jE&dipH0{smzmsTZIDZ!?-nxOY14|n7X?pkS z(!Zu`G~}^GqpQgMdbEIE|HHbV>4)|~`=b2@RKcT* z?wdSB9xUW%|Cd%Z5FIoy>N$&0M*}(-9RkVnz9y*b_kaR0R6g_fhE(F*b~ zd4xPlzC#`(-(8Q$(J@d}sYYv{Ea#B#k?+Hw52CU>9m><%@)BCA_J9day+Y6y57$8M zMQ2on2hxPxxvZiDO27M9(cosTWU=YsjgLOV1SOcv)W}JAdEw}DBip0niH(C5M#1?= zZ2ctq1oTg!6#6(io&1peh&@1`!j8TSv=5HjdDit-*K&3qzp^0v`fSLC;?N3=D+ zwyLVKy2co#&=^xPwt$II?VIR3Na8y5E%a^lFnR<%N`6XSCO;#uke{zZkD>3P@1gIb zACO;=Uy@hJ@5t|IPl%z#K+#E{S~a$;vNqhff@ot-)a|DK8~B2v>fxc9e+eGDBC);1 z7%bG)qS36_)}td8wwN)mqO`KHov&=s(*pYbr9h0g0K9()VYKId@FL@%MAqL=$eb9JD8N!}o@lh?>^|BED(MLSv!otxJ&cBWsTUqKxh{Sv)O zeocN;k6uHslQ+p*q`gmc!+oM_hy3WTTY-s6jYb2_0;ArHrt26L58t8R!_3JR_<8VL z8qnM59hz|e9_-UG5*~pV3^~=;rTZzV#SFuaVBf{YziuNHH{`;5W{X5g1g<*J2E4 z`Nm-^@+b0V@)z>%T4)9*U>uA~-Xs5{Ks*H!NPE97q0*YD=1CiCO^Rrf(mEijbQ6G^ZXdZI*33XSVz@>lXV@^|u&wTK+-1>Yb_DD;*?qlQO|l+->@L8s$( zFyS>cj+TJoUPa>~+9|voDJ^>&6UHL`YN!&o=#0D$xkhdXW|EavK>-EdPiz4a8J(6A zv2`ji6-=VRloUYfFf|1Ly&?hBFq-xok#SL6>cQQ5%zzmwfKni?N$z77%z-2}U{=hA z*(rcg0H*-afVDxCn3Dnwl1IUW2*Y4FYO{14L_amB`10W+z5cF6!=c;1wj|Vq{;c4% z1^3&BSP;v7*lg|LY#k{8bEYZ4CJoI;k`Gq$TJhmz`fbEIa|4jiXz_n;tbZ6ftxj6`b9Y zE-7rr!v>fM2Y8YK>GS{@wD6_#*<$7`O(I#r$_RNvt40`QDTOraDX5GvmDoj{hb^G@ zIG+No>LCA!a*oJ#ru|io$}N3^qFDmr*n3N{si)CLMwbyZ*^sfppT{=C%yDcDR)^I?r{G#_9kw2O0XhdaVw)%c znTm=6kf~@WprwG00(uG2DRcu^Ia4jAUwOehcCXHonEFT@ZC^Z&ScphaI7S?eA{KyY%gN4||^i zkdwQcZ^uX2DVn&CV<)ha6mU?W4F%dZV5cE*e@p=#2R_M#~_wB=nIbRaU&06IvMS3z5A54~1Vfp!y`u-GjMCj2z9f$y}LvOQ=lCMaww2Xf%X*WupYaM-NSx`|9?m16o68vHwB6!zw6-DqG>dG zMsWI=CE9|>L@ksRC>5ZWxur3Czr_o6FnAjuZ5=lrG|t51q4|o(;Vhg@fld_2qrhVg zcmh;8;H~NmHIC)<+JrPx9yDS3G2)^PKH7^2`Bd%%7#lAujIOI4zD3DKqJ{0KNWJ1CPT2XkaaDlzZ zy$~^tYI8&nYs_O|G-UkVH(*PTLm z_yBw$J_sKSzQGH@H_$O#5gK1}pXCABN>Xt&P}AZv)9NxbNMJlFVol%w1_joTP?i;w z^$+p+&^HG!!9#c{yg4J9Zw>`UQJ{nZ&(l}uISTys>XhT7o39SkfkMq!C%UmPeGzK# zT6`=%jsm3=7*2r^6exSdMR+L1Ka{K^{^FLz|5r+nai@9sN~kN~^YI1vLVOXv7+-=f z#h2mF;LGt96o6XWXbMzNpppVr6c|GRsGx-@P(y)Q3XI*1KO0rR@#pb1cpZ!g%JH=b zR4~Rx^>7MIqQFxWcp6?oC>x%Q>PIQfln^~5W0MgNUDAK;gr-;5vI-d6sDeJVhjzmv zDpu`V@e;vT|)%jlI z-stfBmRAOLmVBr91rCrEELjuLy0YH*F7h|#QOCcf&mo`mk|8WhG>=(PaOo zM%r4T#bG=8_~D&OY3gaD&zz!)v9K~45;45C4|YO_35?%IvI(OQ$qzzwhgTj(nCPm9 zXdOWlK-9(G_?Q*=az?-2Gy3&uq!fZdupq4wOd^f~ODM3ko?sKuy|j!1&ya>bH4)e8 zppr7$Uo#r6prWQX%s412FDQqO>DU-TLJTw62oVKV)DckgT1gsOywbm@wgv_bVfkt7 zjT9oCo;8(7qrfT(tiGSZdzZpX{2*-?467`G1%z^EPMh}a+S*_pH~iWggWUx~_3hf{ zw1xHW9okwQxt6x(ww4IB5K2N7O=5`Rw^7VN4pTg;o>0?1IofIV*UrC&Us~vagpSZR z3$qOrXm~)F5mv}Z2peH197G!mtfjy@3aqDKo?k3}*;1?fzaz|uu0*ehACc%z^q~ES z6xc+8&CrubBym>5J1CWa7&6xc$6mniTu z1zuVE|C;ZR7)6YRh9v<-_qI9$itbnc#;_!+pJUX z3jMP@3T!70S;6WkgNdQ(abo7f-eMtgVm5h~<{&#GZ&gLuQS7a`#4_mkBjyqFi3P+$ zViB>JSVAnN0F+33DBAFNodWwPu%7~NP~gD-cl^b&G5#NO{KbxQBeAJPbb;7H>_hY~ z^LfNe#LL7h#8zS(@hb5ev7OjK>?C#(yNNx-UIL!+n-qA90#LCyOabT+IZA6>?m7|nJq9zNK33n2T-&xqN;^E zR94fSgCg0Hq5R?zAv)Td9({~O3PUx`PW4DVz8og6-6zo^LH`;UX@o_A5jP?I1r(6k zD_{+7aj0EwS$PSZC%e4-e!y^EX}3_QBm}>nfEQb5^b1JfQbkdxZNUiWfhy@(M1Ktk z94{r>PuBp!uW_Km_7TSn9e0EN5V)p@BXK;;ETT~WhY?5j(Q>tgd~+9A0YIlMmBX5X zlID!0==R&e=xs^lMYstVvxeagxWt(AqG^fJ2XRFEnj_c|w}Y!56)7$YM}S~dydJ^6;mV_0@aoBu<4OiHuukbJ38~3LVn->!pyW=p@zu3=o~^!hepw z=uCN|p@rC@BF&NR=E*0_%|HFMneL&GPZ&Sw!qobc5icLm*bk@uN`5vRQLJkC@ zmZKj|A`E_Xwkw7F-v5<7!qR`J+CO|}lIUDt{I_^a848Ay zp<<{R8itmkW9S(M3VcVQsT4YdLYGtMDvG(9iW@|6SQO`bieEu%Q>sXe{!#8O`g=&C z@}iL69je<8)=Il!TYg1RRd_@t%#?%{RzEru#R#>4vKq)gXl>yBNxMcT z{o&ua%q=Hvero#k$k}>DXZxv;PuDE|4^m412RrN=o%5GMe&>HYXVXp|2m;Xh6}--n z6U0t@0AmOY12G0N1~CRx;2s5jrND0uj6%jx28>btPN4{eM$$a!dcVRRUGnk^3ft%A z6?E@anBTrj`<#Nj?%fJIx9<;KYJUOflb4^@u1ot~5Go4t*D>1n>yZsJsiR{=6f4GX zaHpOzf>B0+KPd1g*+74vKvOncI0W73P??J)$2Hb;8fZUWRk$atR!E6{kBh}(qrb_; zVsF!y{wf!z#W@9j0|4|aGAf~A$*5wCp-`B(iP4$*bZZTC<}*gX31bc8BWe6G98F?O zqj5BuF@-UeLJ10GP$;tje8Zp^k3&}=8b_fp1t?k)`L`(g7yJJQIE=3MNqQHv8Bb9t zi$ddLi=IpGVjhLE$#wq}XVKvnMRp5A6c1p}48JJ6bP+ET3kKkQuxd=BP zgx(Yhgx&=~sxc%10tvw+l+X{-iw#tenj4BzrFRez5D>&jktSU!QWQj`erI;?CXo#h zG4Jzz-_IwzFS(h$GdutDKj+NMnKQ9T;e92mkAd=4>Q<>y9ib1eTBTt$PVF_sslA33 z8irS@RKG&isx|91s9&SH+>iU&1ElINLFLV44}!`^I?d8E1w(wqO_?dFfl;6QKsI}r zJn#*ugiQ7bsKUqtfi>_zQQ}I;#gDURaaNc;!JcGKv8UPZ*fXFi2CCwqDgmmJpehBb z(hJyg?0NPAvz@(!Zj`DFs5*eEBaWm&)deHx@cSJJ;zEEpRIZniI|#-JUYw~7D z)xE*Mo{8NO)6<&tA#IRGj3LrO5WbG|$K0oJU|KBU$qz|7%!Y}W(hOG?a9bhf4#XMg zj8@{(%u{Nx#$jRTm_@TjOI=n`u3iWGNtx&mI)e6z!xTyytm=of|$yTRuOj2E~ zQl&~2!>d=Xfm63t8dM6ehscIkuUxN2h58LD*R4=F`q>Jh(*0)}P*Lut-`NMGo9?mq zK@|?F2tWIfeFUmVP&E<*snVVdX}9Efu(_Qc_%e>-G(q--9L+Ht%W)jf73I{RssO5r zpsEC_%Al$Os;Z!>wlJtTr^CyDmkC3y&@HM?ZZ*lR0Z!x~LisGQ;R?hbR|l1gWO-H} z3uoz2xlD(y{(!<-#p6P86_0a+szzWHkMrT=JBcPC|KVhp^k0_T!=<>g2p3nHL$cNa z)eC;E9ET$PBB<(+J}Z>fJFX&E1uLQVbCt>JovJpjZE)3ya(`(=_>(JkyqwgHdx693 zK3Uw0Ty5?pP(^{NE~x5daZy}dT(QHr4psese#MS!9Aw~{C>PvbnA&T|{itT{Q5QFk zymz70P_kmjHOI0olx5ZZcZF_m+3XT53RAt)xZ_PME2GnzYl|JnxVScCQApLWfQ~Ed z(PWLTaw9r%U5SWvCX8-E7|p##7~S+KjFumZ<9a_kcaxE~DR{jhakm+vZ3}X1Pq-`k zM_fN5+5JIhR@=0E^QfWn~0N$UxwOud(`dpz16xHF6ucjkqw~5_g69xeb9`x!h&~;1*DI z9g$Tms`wukow@DY=NR(J?cmUBiUC!upWDUl22~uWFvU!sktVla@}XXjF%FP@C|rxh zL^BD=-I6lUX+i@N*E^;=$!}99>51*wwQE+ZT%kg@Dm5yU6pM-Z4KVw5&)QWgR;p0F zQk81>zv|VhSFKo~Qq4R?a3^=|npLaUOh~{i)p=WUNNP>D7!wsIHzzqIzMnWK?GR0J zSYRXi^yr5(i?yX`0C{pFKB0Nw4-sui`lXU$5+4L>IT3pg)+uC-+|)jh2u9 zn!`{iT8jWq%S$Xj_QT5#UR+j$4527qcHs4}wnU_OLc@Ij!$(8hl{ znv55M41Ac&(`QjfbsWcWrOYWkL_)J@6&4Y)NI=nKj+18`)NMry9O0essh2 zAy_si8@SvTW%+Q?jo{0RZp1KjBX~V=Bl;=a2>Fr9{7cARz6xKJuf|vBYw$JsTKo(A zi+pWRjQ|zkZf;P$393<`LYHj}sK$b79H_=G3R)}imyeeC%Qr%Y@g2J2*N*Q%$kLvF6;u;JHObF+d(5*J5^ zT>P+ru9F`b%a6x-KpyEeJ(EWU&G>`A&A%;qxF5wBoBrK(k32gQq?K9zJ$}j`qJj7i z_=6-Gs5<{4KaHQxf5gw=XY#Z7+58-SE}zN!`7C}OKc8Q~FXTVwKj9bgi}@w|Qhph~ zod1+x!JOq+@vHeY{91k;zn1*8NZ$1!SCch=XdeD`91s>{9b+^ zzn}k-KLDy(pqc}!Oi*QkYCfnIg6b1cEe6$6P%Q`53Q(;A)f!OY00(D=H-QRAG21|e z^Sn4**#)XSpxO&6G$8m@UxDgt5__V;e>kmr3{=NKbrMwQnw$aEIZ#~y)g@5<0IDmX zx(2H2pt=dFpFnjRRKI}gS5W;9DjaG*1l41piU36c#Q?>TUipeY#DC3a^WX4?`6K*M z{uuu)f1E$TpX5*Rr}^*rGyGZp9Dkm_z+dDq@!#`5@R#{3{8j!M|092$zro++Z}C6z zKl8WwJNz&FUH(`8H~x429)F*Iz(3?4@sEoJ6)jR!Rg@}97sWb@0#zKSXrQ_QH4Lc9 zK+OVb1yF|oH(*hZfOY|06X^Cp_XK(>(DQ*_1N3g7e+GsE#sf@EU|t2LJ1}no^DZz; zfY}es_rTl*mIl@eY(>BYPPR3$Nx%*TTsL9o0Q)JhTY)_e>}6no1C9sI4qS2IssL9X zxL1Jd23%j@MgR_1^9~M+swH8a9b-)TyTTfoH^rS4&J$QQ%=-sLP)bpQ)P%WzWhM0K z(L@+Xqzr4wja@2gm1^@B#aJqFbVTfly)yAdtAv1)e zgOyZlC%q*mi7Ol`lBqe8SXSPAT0qoc(N0p`TmMQ(?9oX>FzSShY)QcYj{{TGrgXuj19l&aZR7>X@m9_!(HLBGBjPmlYtl6sm|;eW3Rt!nR3UIvQEqEnm^6Oc~@${;lJWbKINrx)gwo@)lEasPE>9AtMd<} zYX5g){fo|!YQtFn*k|tL{G|w4NJ5k`-ZLi=XItEFoF3ONJs(GXu2e4u|3ACO{It%M z*;2rshNAPO`fv+CgFk!E+-h=vDo|1vN#BhD|Ihv|f7*v=5gL#f+6<+pSuWLwq5jW1 zwo-((%Df=)R#H+qWwooNYBA=&!=H6wPJY(h9{fYxZG%(Mb5gZ;VvO;Bw_EdA=4YzPkO7O2y&Nfluf|FgfNEFypOt{P&ZiL{2|iAgz|{qlUKWXUb5>U)KuiX>E@aTecdv!Wc+O`ZsXKOeFq4&KM>n_kGIn`LS3t6;v1l1*Io4Oo6YO zmMT;|zhf)UlF2iok_Ve3U4Q&o*?^)_1L)_U{C)-_kQa4j6ZBFO*h1)ZGBJ`TtCjex zvOXF4=6QI8lbd5 z>44G$WdO)YxM>W=D8K)HeP0Oie6cTso6^=%5p zQ26K9x7G1M26cjR%{uapFP0d}M6H-w>VDXF-Otzk>LKc(>S1c^ z_!2-N6-xnTQKrfORTijnK$Qn79H@vzY6$Rlw0ewsEb?|d;ccYM+sZ)I0V)cEl&QM^ z68Aqq+z$zHrvX(#ChiO*u6m|=7P)|`2vjBMj`_%fjXD|cdFq9P!1L7$05e-tRsHIZ z)t>-W4Ja}D=%1z>D{#|;T*)%^NQB|U9$p=&8bH;|Qm<04CRD5i)C>OwRNRF0 z+N`8k%dYxU(>pbK>w}rE^?kGUOJ_wYZo{&lDa(%BdE{z?dd+rC>$jzbdQ8>Yd8oKk zy<5^@yF?vEHg%}KAUZ6cO&t;1Vo_4OcaV{j`|vAuw!~!&mq0GpE8q*{N4`~GAY4AK zKA}FTKBYdb{!V>HeO7%=eIBU#K%vTR2vj4WP+>O#swq&-fNBm@i$&^-0WM!wUr}F0 zE@M7-pjygYZUfY7K*bO)zy2?m{{vjUN4R_+s8%wU9}zA;)&!9YsMbKeEZvdIt&HUZ zcxyO~8bw6IYcLX}El{uEafTZ7vf2UFnHb|j;j+f0u_2c=W{pK-1*$zzuL9K}OJmnK z2$wqo)#;z-vc?l+(0G;n9G+eA^pMsq;>RpJRmbgbswG_3gkjlY%CgJ$TpJW$v2obQ zPdrzsn)@*eq8v7+DXA$Va#>Sa6JqNW_-a#y84(#>5gs-#3_V?7zDN*X*(05>XW zs)$^UE#M2}M_$l0L@sMy)YR6zq^YBc($v+|(?o0PYmmipK*a-<091FNdH~fEs6?Q8 z0o5C*q(vHx`3x!^R9w?ciUHNMB3w?ExttTjO%3^%%7ss5O;@C{2DN3M0F^bdNM%j8 zBAdtsR0`(LBR3?nMTR<2lSF9TON02m0aU7AldS0jR2oo)7ssth)AT2mq+=X6CB|`U z24EaFm0ujUsmNWqX+t#_Fqx$prWvjo0n`AX1_G6lr5UMtlaPN9Q2zyi+?okU=!r@~ zm+;){w(C*zwTs@_6j38&u;^23-omnPE6Y|&U766&*r?{G(XGyoKiLv0rrAMc;WN#4pxy*(lwY$`^EsaN0F-#Bbm7>I zy_y60_<)*&ny-lHi~(w_Xg9Jocp$mvuo99t77Imp z?91W%njHPLN#eHR9&7li8xeWnJE{4Oyz40<_v2B0`!#2X+)v17|ANVUOYWgdn#&UC z7-@{o*CYb^83OtQg~pd3xuN;}IYGY{0R54Aj5a8!xK>3#e@h1aU2!1w5pll69MB@_ zS{6~)azMQuKwYaw)U_IVJ-L9wB(xdQ9dVx zB==EG?TaGvS{$Mv@_1P6Q=gL`si$p$$a9RgK5oUwjriKe+9vX5{E9%$7PsV!`|+tc zK+VnBmA^>aQbJzaM%$LxBl7JD@|iO7^MS&gAN>gO%L(6~mf|{ROVzWb-Tw29PLhZb zOQuCj=9fi`STb!lZ5+9P$^vShbVm_uW-KcAMlUUHGw^GBYmhK zTzEp3t{sR%_T=VwZH9Ib5i%UlV(wbp%aE-dhJrI(DL6krzPU)-tL5fpSK}O4EA~aV z425hYmVHxM_SS|TuYJ6(Ik)ygr4r4DjOdm}$i`^LOF}kI6tX2mSSAu7TdEW?^@3t` z{+LQy`>uAXBx_SdS^Knr$K~GrNIM^8O*=z7Q#(sLTRTTPSDUHzYqPY7#Y&)70fnYu z4Nz-=S_c$rf(<}z1ZvYF?Sg=;Ez-8tEY9J%u*qsy(bdCQ0&9QIdBNQ9Mp0dACxM*Y%K__MP@T(olOwdscf6s4sxp z3)H?W?FH>cLPNB;Uy3yRN3+IjuOY2}RMI-FtLKvqHydvoxgzDzYljEmG!3eNn^^Xi zvh3ETYcvTH34%4~lFr5of zCuJIc2h>%dt`Qpl_%DqMe|V?!B8_#pmT)RSV_h+%v936!BNtGZL{}r-(I~DApsg#X zi$DRbq1)jeqE%l0#Hbqi-pEuT~%ETk-@s^B7@JP6zXab247GzxakbJX?1kb z$Y5QRuCA^gP?rGDqN0At($&{BAPl|?6ej-sr#A)aFf)uUpUg0)EAC79rDw~OHJX=& zg+GVmp1!f!y4G0sWhH|@uNO9A@&0DZMh`hxZcu#B##pvkRO!Gx%^bNm+Uq)sOxAS} znS8x~K9nDc(e-*xCif07IR%;g1~NH~F!`p;W*JGRyPi)Ux50p&|EUzWZk>@ zNz!||DMXU)0y%YzxMaEy5us^Hgc@Y1;#S8te&-Wk#EZL6F2q?yL~{m~ovAE)+tl;I zuCdV@#@_$6+n9+xs$p6AUFYchR(L$Rrn^aa z^rP;&?gr3CpiMxVvvjv~KOv833((g80*(9|^73~jFI$dz`;q=~!`+*AwI8;0@#;$= zhaX_shsv_OZ;yC==Ah{0dEcIkUQ+obvZXt~Dt(ZiB(|XU>s7>*(RL)Fo!JvALUM~_@uOkGeN!-BGo|CJx>b*!{y-jb|JM>O{us%fZ(ueBZdJoW{K)Zp) zAH0Bv{?P)^VL%rHx;W4!7U_Kwf%V0;ZS^?et}jgpTv8@5u9YtXx*8#H^?wOm_ypEh zLjvoo16?XWV0|qlu>J-8i{t{jG|*+FI}-RCV{sYpXg!Hv(bv~E0Jpz12ALWjm7Dgep2V-{JLo&=I{{r0=t@9W z&eC_$llT?73eZ*mdE)Caenp>8{K{x<{8V>zBm2T8)siQ_cA*C$z8>RO^!dcE9CZCK zXW^-ax8ASuaI!h2`z$PL+$(oNvc9iG;S`a=H3)@YCe)8qP+xweza9vM2j~atGxUS> zgY`r7L-oV-!}TM8t_Ac9K%+d=2KptS(WXWLT^HzjKu0gqj|@$MsC`A{boYn4f>6GY^^1L z)FnsTAMiB%?t>RTyz_pLAH9*W#*=a<9Mpd;(H9RInhA6}LSK@n8awaF$UXUyWBT*Y z=R)f*1nB#N{<8iG()Svn@2fI>I|CgLbONDocS2ur0Hwc4WbPKw9b}oiO=Rwl{ulin z-7cUz0*$&C?@pAu%f=MBkq`8biAX%uV^)tYKzH>Uf(+={zXo({p?Q7=)_~z03eV4= zF=&Yd#Q^=fC_&ipxKW(-=b4J*gO-9!YCMX)LSk|U2TkW+L3GdEm z;aZ(B<@&nQRSDvOcQrT-E__#dzad2QzPcfX1~X~9u5rI+kdHD;98%l{n zV8D~4PzZVy@CEWC;f9)clByxX5NW7jsA#BUsBEZWsA{NYsBWkMbRy8bfbI=+641#& z_W?Qu=)OR|0dy+RX^RcDBuOy5q-|@6GSm$!ZiptbkS@ytj+jxEj{^E#A`b8U|I_BB z@mK@tB#*$MC}bDHf9p}IhBin-LtCKx1xRRUk0dm_YUp5i6~mqA{(y)2;+=XKNtk5x z%0d!jAc?OGuNz{4#?jdzzah?m6dw%qutHP*hC~Ai#xV3E${+K&4fh+8iSi$spYnhG zrrfkN!vLhNA>Gi=fUU@^2gLW1{|s?j!!-N%Bo782Swfd zu+6;wzftei71hQlEIV3RmTQ>u&dBjiFK=8wXxQR5%ku`n$3^d2%Pty}q`uyR9(+-J!r1M+l@A<^A7>`6XECTwSe2+vm z_K-`iFszo;>nc&bP9f?wnds-C3jHiUveB>$ZR~Rdh8lJUH0wUptY0E_2Z>&NU)HPB zMZM}LFlG^@D%w~>Hlg=7Kz|_9`zWFJF~hgy0{TOs(Xk_UveY%eD4)?_IAg%oB){RT z;T+H(0X@TSxL~*lG@6h(g=b{17_K8zpA2U-+%ViEOq~Vv?0}KIjSRS>WPtPR{r4-} zubZ^(%cK2k*1%akVq|~CvcDCw>q+H_U*DVHn!V##AoW2p`tu0-j|uvjPeb2mFoq!d&#~BKbV=wNy;3-m zu^2&rfsFnlIUI>zl>@%96oPLo4K$u!D@ud09D;8wZwx0F&>sVh{yMp%ZZ{iC$*)z# zSRMPrSk+h!=*2)U@f&LxYXZF#=uZnxw;NwF)+LqHA)UUAbh@z~>Gb9Kbvi5WY%(@B zHYaY`6H6q<7RHuDVpagXQj!>Bn;?U+tx^igmTlSd)2L4Jf0$OU9pb%S&# zwEx9eR)&6@aUwxwym121IC9$TH%>B626_w7pA{PIjqe#h$cOgE4~^3Zh+Bci<8jIA zgmESUGfN4K9;Tf?)VRg?DHVQSup=&8%qef2i)AyFWs|%2n^o&kv-wN+&swoNJRR2r zW#8I3&q&6v#`#17w~G?^F_FL>`AJ~YE2bjn{#2pm`{S_kmWPRTFF+qRFQ_){< z#GLVqjT?*`jhl>{ja!UcjoXZ$8MhmE71o|tW4*~u4 zV&krW2<)Zj8uycpc}7w9XUjrx7&qnteHO>(CNgH8~o|lK#LHgiJL)G(Ivu2Kporex62+VN#Kw@D=ft z+JAZ;#Z)xNU{WiYKk7Ae=74U^-v8)&dCiHKttW`8H|emfURk#G*{I2bIYtFBni!ve54!&Ny{!}b^ucqErGvWg?5Zc9%yX18`R-zME{*QcZghwC0TD2j zHkCucF_kfu1^NomSD(?RmLIQVBD*b2l}$Kjj`DWhZ>nah4)hJ6Z;l9WlNkR8M;zZ; z%F!Q@6r0*3AtFAbPi%5xTw)rYOA-HCJf1KbhspiZ6MCeiX2=!1WFme9<1$5w%J?Uu zjPDX2;v*1hj!E4z+BVDKBU`{Ovyn13iNM&Q;G>ES$+rl zL80jcQ$G_1Zu(9AiB7mjbb={^=!EV#M1-WzVh!)g>WW2RB2(L^Ua1R4)vB-YzB z9=SF_$+f5>l`nN)9R2&|#@iR~?Og^V5s;UYvFuyQvOl*D={Ra*#_Ts8FdYQO0!(nBxwEEk zOc<`2Wjbs+VmbZ`1`k}<46d`0gUs%z(}4&f}K+mtlQzN$7gFcDLwYPTX&(s z@EIZ*FJjqC%Ccd%7iXroZq#PZfay)G#T=Wltjxg6CgQ@FuAnAi$V|20^do8##+8pI zF}^K7^s|Y$BuLvkB5mD-wm%|m@v*0@PnhnTSwh0#OH%}r2o?xB`OcP+5`puKgZvoQ`n3jd+ zzM7|)iQ9+Li*6rEZ*wAu(}?t9_`#EzX=*xUS)66YHG(YjZ1WuRTwq!O(;AqUv&?>T z7NLC`U{I|8aoR6JDlb-2`OT>6szcoxjGcbuv%5*tdY2bzzYNPRSC&mX8vcXfRFg@c zR$NxS?1^4DRfXFmBIRCKWnL?hc#TNn_678v{K#hW9whN|%v_tl2$1+o^%XLAWj;hm z+(9OBXG~}zPFykZgu~)QwfQg+yd%JL4ETBGZ&C2HpPNsR3#iY4=_K88&}5QZc-DM@ zNZmQ}d0@H#)75XjXubr@Yru$s0fllvtof=L*DQ$C{U}OZ4C%R>MCx8wN?i$gx2O4z z`8P6XdSc$%{JZ%ck-Bcc#EDXuZGMDkK31Z6_pMDAs(lc(?bD#arDpV+jy~4dY>O($ zV4;*{>o0Js-a69c;(L3lm%GyQEiz~d^pJ(MNDCGgalwK~D4_B3BL)juu&@{{CX3l( zu~;oOi{0X|I4!}z^Z=$OFp0qQ0;V@GNx&on(+8LoVEQhy1QskTfdvZ-S+HQYJfqOs>mQqHA{7J0h0zyx^zbd(MCpw`y~sRPO;RnpcU>9 z%mBZoo+TQXfxrwdG|g>kY-vU+X+nkz8DzL%X-2oo7TqC9yw%bYk9@e z4wxappkW%8WqH-ofp7>d0J=8+wC1+NASYi}a`NKB(asrHo8A7Pf7Gy!U*4K8@;464 z#w*L#P7XUa=KEHfk1D=0lu1_W^YFKar5AP_gA~d~?zO&_!N}j| z2&%RWk<_+jgfwKbj3WFUCG!_gx|8xBFmLCmZOb?!bmM^;EeqYGg8Y2T6brH7mZ_Ha zff)uVo>^@v#z)Itx3WD0Q@P zky)b*3%=I1!~H0zdKY8aCCak<>Xhy}&rV@)~^fp*9kdXksNd){I0{ALoZQfEmB|oyma)2o8otDonyDYmcdn{jA z_FDE?_FKLL<~?Ah05cUB?C=kO`4AZF?&-jM1k8*@7F<&z$!aXwQu0U3Q3Ci(8E{;S zmy$m+i~d#E{{e-4k#Gmym02=(E*Hq1o0gx6Jl(SV1k4;@=K3wSEq8#)1ZH93ap!l- zL!xr;S?*gN0E1$e1 z26rXAwW_hKMp?GJ{q)}JZ%3UO|M=X=Yx|qxmKE7$vg)lS>}Ptv)hPOVA0q>;7Q(CgZZAr#2Iq#RWViKO$JmBX6x?)?(J;))Ll|)>78e)-u+z)^fls z1!fsA%Ype6m=(aR1ZEX5tASYq%-TiPaEZ6piq=Zj%0b1gRS9p`$-LbJ%pPFAAcN$+ z{}Q+GiEE8U;#%tivpzsvYa=ACwXwAcxq#UK%tq;sgJhlo`; z>p1Ip>jdjW>m=)BD^7!;AwB@iL14ZD<`6Jn1CtHRH^3YQ=Ex%JI{`LNmE11tG{WYi zGMm56al0=5OXmLonHLZ;F9hb8Oy)%eSz+r6D~bQKuC$^)J`T(YzjcjuEifm6`HqmP zP^KKLo2*+&C7X%sc#61=)@{UfJe{BGNSBl)aF=y2Vg7FG9_tstoB`%6Fz2$Y`>gwk z?LH68h5rKEosDe%M#<(2#y*3aRBDmAYTa1Zsv!?P7ny$)%N|pfz3iGf`_Z+gy;o*v zdW>A%n90NZ6V}rbZ?V_V3SS~tcpI_Zrxmta?zIcn8_3(|*hFr<8Q|@0>m9=}w8Fm< z-u@u-_9`&9G0>J+;X8!5;xw1_K9RNuz+9H4?J-K5Er{MgE?_XvnCrmYDm0<9nQT^4iJ1u94I*?l8xcC3>QeNb>1{b0!{)Mi zQRtrBFm3bM1R`|ks{SkuwrnMW47Pj@arZ_BTgRn0J~KD=!#yDx8Zv;&ww1xMWtG4$ zSyFv+X}Z;qepijX^}Vx?VcB9)6(r>?cU6R~q9_42%shq?@C!76rgk zUAu!^WQqne5sCK^S#tY2*+}fEt+TBQF!zAD@3*~Xivb3u=y9RB4Yqh&PsH)bq|vrS zTQ7p+Ltp|y9=1M+O^OnmJ4JS`ACk~y<>J9*HvBZ^i{c`VsaQ5mS+>mS>AO1jYY_FR zZQzaS_nL&~64=(?mOewDuMtwe^ z{emK!$OSBin=Q!=XXaj$QD18Nl=Q?h+j3xw0;~4hR@hbos{vMDc&M+lZ6fS_VwT#r z*|r5yXSKlMzzAp9vTfTD$sI~0FE@yKC#`PN=*8<+Rx~XhifRMdi`yJ+`D}Ase06O9 z@oS^{E=ehN%v3w+NFLPp+DO!fZ6871AfkSNpl-|$b#;2NDCZwJf7pic7zBPypM~&S z2>b^K{Klukf7*5h!*gxl+0NL`+RoX|+b-BH+Ai6?xBXzlbG>cA+JSWd>jX9!*brb{ zz=i_r2G#?tcd_kiKn8Bmb8WZC5{K& zR}wk)Eg>Q)u@6Q!<{z9~STRI)6|&Dx0V@R9XUF`VPY=(v>+D7pC%fKm0Ja#g#r<}Z z-3)9AU`rR8wY59!Ay^5$-;NtahXY#@W!4@_WVVz-W=%yV29$zbu$Mr-+QaO{?8SjC z18iAf%VpV1+Dj3>mIoGf=|4RqZjT5u*dvv?V#MY#jnuKNe%KJ*^4^{P$8qj{Y_`1; zmaVKTdqn-!&{{Q{e)fLdV>8o?quS@{3VSts^`P=|=Z>f%_em{#ZIS)<7e)40D4-|h zN22X5pU>jkTS>&Xx0Niu{Z&HyN;2)M)1FVp&l%m+hx!a^yzAq0X{E=`9*h(4 z@^qVhqX3T%`N`KJiEeT97`xqz(;Y(43Y z2EVznjQn03>}2lWzR`{@L49Bw`0ZQlTY+r|Y?H!MJUi{=Xbk)3#MU+4#z5si+{Tm`IO@YN!4a8BfA437iCr5NKzWECuoo*Tb&i!)Beh9u2 zDhkU<>@~9uXnvEDJ$bazY22NQ9sl5rY3;w*H?F0(NMTPY&$e zE&)C{jL0Wz6G}%eGTVxIAH{o)3UxRf#J)P54)os;oEX2u

4#bzr*}nhJFY4q}cS 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"%%zbO>-7L3t;UFDwc>{@1Er}^PR)iAM1Ir5 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

4#bzr*}nhJFY4q}cS zVUA)BG{>>Pb^|sp%TdxHn&Wt26aIN~>_Btu$j2PJ%a7<*cUYqnZ}sImN6*Q|9e882 z9cYdn`IzIauO7boR>daMmli+%ZPVj#MC7V(M>R)H>}PtvqlT!yNxBKg3xtL}6*M%} zUttUhaM4lMQD3C5BU+?y?*g8aA8G1nhxC1pnHooXiN20bj?RuQLB$=f5&9;}^z935 z2C#z&eFx|0a7Q;Hb8*1RM@cxkqs%#aP&#q}iy4wM(j8}NRG3Cz7o^9|>*IKXh+T>U zzw`}YQ~i!qM;fsBPdrVcP?GyQ20DhI*gZMt;uz`}MwD?nu>B-u>==nH$|tAxZ#!$Z z{%TT-wNtuNUpE}ra7CoOKcPtJF!E*b2 z#|jjJRYVAe$wDwvG~^SB5KPJy0zAzj)3F}d;j-e{M1)|oV+*-}9RVyzcQoW9jc&P- zpF8#tDcI%M4eXo1j`BOcaO?$kG_Zwt#Dn9YBRe0H?D)oUm`K4GV8;fe;9ErYxDwg> zRd(5Swu{~|zV!T^{d>)8C`!R8EPGm6_Ez@l(tF-(60_;i0OLgZBrYW7NWobLiNSN6 zBmTsA;!ij(5`QA!BOXeBZcLT?=$hk(g#C39`^g0Ri$r>!ddP$0j^pw3DFB==5GU%K zw3BhNLB*Xs!JdS%kbIx)d%(^Bb|(38Ru1+~VsxDN(K`X`oy6!kO+_}53)pwboDJTP z{*)YL>2x~DDzG!yiBkqsfSu}hhB|T5;C*1H6`Iv?hB-^-Lw{!}XK4cb2f%(P0q-my zWN?Nn!CdW4ZPEUv20hkm*zLo=_7P`1+gSn2R#cX4!=7mSpmBZYq_KTR-568Ck_)`E zijyP_a8@P2Pba`TYY^Z+%FmIUJf>JwXn_8doKnUa<%||Zz*$cef!Qbm&Kg7nK2j)< zfYdmfIA1{#c#hyEXS;w1bd*MJ&aOlR=E@>4KWF5&ELQ?zi3D^5HdB^>1R??5ojveM z1Qr{bCEn*D`?ba@#)fh$Q=DW0(%ILECSU=u3;oVCC#vO-fi1jK7@Qf-p(qAVhB-Nh zIfoN5_ypL%DGbgx5!z8oXh(NT+dJq~lyTIu)cfJPjbt`G+c_4?j#HM6edXZdMPYUA z3!_6G93D3C+dN`0(Mbkl^nND}#&9BooWkIIhk%&RDGYomxrg3&PLrTVSw+piynv_V zM`k-ec~0mT1)yIRfPN)`euWJEsvPJy=R&`hK)(*yl``}j5&Ea@=yq;*eog@2;oJ%A zYGBv+ox7a7fn5vihQj0he&<*D0e;B&H31wOyFS4CBM9PAC5UhM;*NfMyUFEcEiO)2 z`b%9h0h{eSj%80M%l1E>e(1#NW}2}}O^MYn^XR0>3g3C!c~$}(w}K-3IJu zz-|Y22e8=Zp98xKSnTmVz<#mF`9K0ZI7k9Km?nUeSQt^=f0+aLF#`C%qqWqC!aQsv z*o@o>wg9^?z@1<_awphPWD~i7-A@cB-cV_(15gKhf(4Y0U~jMw*aN^G^aqCp7X$Vy zV2>0Ue}YQ~mq-2tmkBN#Tn^Ynz&e>?a+@~-a?FYO}n(t@WDFYQu(UYc=$ z+(XlYXG);s{$SMBKOpGAQ;3egq|ov5BmUr}2>NqGAqOuDfWA`OHh6VV@!+)t^eZyx zcznPzV1FUb`Q2R9(Hv(6BfM8-)N!Bqyx?tyZ^;GhHIn5_yd&=GyVCXGlx!d|$!$-7w zFniRd*$Y9eh6c622?FKbU|H z>}`VJ4+OzG3It6R)*0u?eRMtemW2FG5&2&Wcus!gZb*^mLq0?$As@m@@#i6Gg8c6? z@|b^1ia+Pr9N_@zHLeKZT1Xk>8mG#SYur`2X^|n7^AVVk zDj`)-U^p5$3~(Y->mjJ_L-JAgx5vz{z}2pQZt@3FzZmw{o<#&Eq&Aj)NhvV;69+4v zexXSxxaIe@N-A1CS71WwhDZ}~A>xD_$06_`Wl&(S`A>|As5m~ z((@r?LXImM0G`vxdY-f90#D}SLgIjv&x{Bm^KsNYOLcNV5safvm+m=pz#+*YB%OIk zpO6&bw7}{7A#a4F0;dPgRCu5d2pNQx(ECG>eZzq>kbWCN`b`;pV4`=)phF0*dMN@g zLdJxQC7_#uL*9#^qs9-(N8{HFTU$$*&}hT77Ug}fpF8!H2>RPt_8leYT>Pjiol3R% zaY5xSpN<;eyi*>~r-YFGIE*XgeZqFmRzTzBmd^|!iBz5=S}Nq@0NVqJR6;%_pgUyH zgL6O+%LRQk0euZ{PMPiN5p??lOEq!wST>g-qA)f;m z3Y@p_K;Iie0#-suzzXLUnN9*$I8S~|H+Po1?wb&jH{{6}tB`L)NZt?*)sYYY{WJpk zof61q<@Rc~?`nGf!=pRqG@CvPXHAgl=dkQ~W!cv11B+t^)cbJSxL?cm9a)!X1-TiQ zLZstWLon+Vf?kY(PQqod`A=i|jSzCY>hm!DUI6q*)=I9RpyDo6`M{NsK`%|VDsUCi zxN~F?T?&$PVR%NSivzA?0Cg8RUe%>h&m*+q_5by-|i;K~43 z*6*^r9Ke+WE~3zIcZIqz+7Zd_@`z+Fk6q^yNY{lcy3S;l^X9usy2|E5c2_x9d4hW+ za2Tsd$nL^PI9EQCa1ZU@?#i0o@buEd%i5e+(DER`-Bkt4R#oDDW_IV@zkd-ueRJg! zt_~wk;R4iHV{N&QYPw#;<})tW3nKEB3uwOlNIe%hUiCSAc~?sbc~={q-t`J1k2)W? zsxtC5$O&6qU4neQT;w|uWuIy&>@hPWrn4eahBu@bHxuAacv z1g@6f)yvfzxEFwXsqk>`>q;Y)yg~SmOCZDju5`lp+WGOlw0!cMYmf_f5h#WLuHmi` z1ot|?MFnuje9x|Y@;!eatZIKFrs?NnnpK&*ciLb~=#IFL!?NR*xc@TgDpS)G)n(@3 zm}%aaBwX1aYiuX?(PY;<67Fw{xJMJ*(}~#DR*0?q$Oo=W!uY>_)TzrKzEC2r8Rg zn}KTrTvNYmt7{u@&43e=P87;wo9lDe7YO2$r);|Ry7mzen*-M(0OCOe<|`#I*H6@H zv-)(s=y^%iPt9mqO(TMsjb*>dr|hgMuB$?G)%)?TiLt%*<{7!Wj=GNHyQ1d7xmR>E zNVtRRB!RHC0z%X0qfAUUxs%Shq&NxJ1rhtU1w1G}a@9rRB%VXtyY2?CzbE;1u15rW zlBtDEym7DQnE2OopbsU%d7%_=?E}zIjtr^g@Hh4)2Wp7D@v2xGu^L?<^-z3>892M8J~)wV@?L zNkjnm8gMa^w1k!mGK7{_O2EnH1MY=tK*a8|aKk{N|BLw|9#_yqxCD22gOQX2Z z)&%r88FaKjfl*waT+m-3ptl1qUIx7bg6{0D-9aw0rh>SO_gv6pLdp39p|6L=0@oe5 z9{$j{(0Jfb>-R1^&=W(GM3#l(1RJs}k@Q<10(vhc=*3FNU6&R*06~9p$R9c|l$<}n zB>|Tl0DUL|IZO%Ul!UHRZ|;cd^!9JB^{Oy&<(netfMrK2%Py^d{DXF$M)OyGxHl|& zNhuW09MDIHj*~#ggz_t4Fu+a%n#intFXUALX!o}t9OcpbTEyF>RO?oXbB9=bpD zOM?4g;D!WnKZIC*t;BNLzPqJ52DgZqTEFKMN9^eBBJPK=>=9+zH@|=J6H`o+8Y9Oo zJ2LaQXAqV(Zk8KzJoJ=={7Dh{;RQ5be&l@Ubwr-8!dK<1@zwbnd`-R<{{sIaUmH{- zKn0*0392_iH40RtL4~;=#)4`bsKze}y%9kEXGzD0qRt17q;wH=JU$|Adf{@zC_?WM z;O_%BQl|SO1YSLh*OLnqp@OQPbkCu?n{o5_N^aJTjb_8|?ned{(@_BZ?tx@bk#7J+ zk!x}f4RhnV0*>L_7(kC&ekOr^Ad%Up22Hrfx+esc_q)fr#{)MTxVe7!ME4}%@R_q1 zMz2~IWKgXy(qFaF{qBgM5hsD06Ju;YFnnMfW`_<>i%SlV>lxdpM?zY7kJu#K=ABV1 zGBPG+KuT)w#6CUZQu<~@wo6M$O^b|8$9&YW@saft`X?l%^i4>O#49bOPi#_TtG)?+ zqLUJnyXCFy1F5pi7-PFat*mZZTtc7pBzcFTd%AljdHavtGl0tiZl2#gD`+in^GCcy z)_yJIkeGycX=_R&=>=nqRq#Zo`Uy$tu@SFI?-`Bn87*}~U>8e#YHauP=#=E-#Pk*k zX=$-N5@dw3-1CFVXS(MBw;0aet?Ox+vOGIQDa44v!fx{uwcQ^*c?{_4Kd!xl&HT5!@ z#A6pEc26Xm^1X>UzofP5-e6$Q#BPb{X-)c&HuOzNO-CClofCk)ApJ4-Y0NHOEaAxy zUrkK!*)TCRExk=bTHlmD@uZT_j8@&drzNC6r3Pyp?)ZuAo0brt=ey+&_{@#L6Iu9f zJKQ_PSHcchk>%dy-tET8p_Rbx0PY~M^(7D)9}~au8_a% znEOnSeWB(hoNlS3iPA)C>T4PRl>ij(6X_0A51@Jh)f=d!g+ayL=kU6K*QKD6#Lrqw zZX3vLE9&5Ial5hm3emyniOHvexUZuQcHb}pxquT-1rhJ4gLCZLFYaIQFeLX~;5KHu ze*+HVI-X%sRDOpC9&&=flk1+IA|7&r0Jj;qEs}Eeut5e-K3QDUqsBMgajTVc$|%k6 zqsxxTCd$==SzJ8%WN|r=S^TTT3H5^CKG5@Ev9%b+pW_UB^d6GMg>iW>iwmmBZKx(a zB#R4&$C^B8+8wqSWBm?9-9;eprK}f!plg5^5v>z?#HRI2%gu`s9{5W@aRmCn6YL4a z$~_@OC{UzV`#o+V6gZQSuTaR3g?VtEa3O;KQeOBGdz64b!tW_Z_8og7@Tx#8@h-{v z+C$*~G6#N76@=eY6}a62zspkt;U`f{)II533S2QEvuSbz>UioR@*XtJUu1gf0k`+B zAn$4DX__DM%{A3(k}qWQAYRDQK^ePnOC#iCW-caxh%?z}G|{|c6Er!4#8 z`_73a_cVQZ=Gk7iKUh8EP#)wvc!&#u$m2o>B7Xpp*9<`9seTIN<@b*D#1p)_5xnpp z;*~(~I`k)a_3~ht-!szHla5&R$7`TO*RKgwhso`DE?y-2s%I#0*)m=v`zpc9^JV}q z?i+%asmLL@>Ek>T2xMs4k7Rl#0(bN;LH4$1N`8<{^}J6YI|dxiHW5$AGaX_0NC^Yo zH~K_}lMOP~>^a-IG(#s9%3@L7NA%OwT+CvMdp@ z6NIb_2w6`mAT#xTM^tT|#YD9sxmL)1wVZr_dUv_}!79?5IBGmIBCFVE4MvFJr*gNg z_iRF^z_Y=#5x8@}o%ee-6Q|(9f66KF?C{`uK$#wF@Wo8eF5oT|=oEPNdJdse;MwQd z@A=Ymz;n=pV);FAKLB?bxGTV+PQSLm^R*|t$dAl+&k^Dj;J+K#XR1!XcanU9Kezl( z_Zt2opFqO)3_!7(x$3zF+)dza0rwMdKLd9gxI4i8ve0wgbHj7fbIbFS=VuRo zco%pB@HXH>fUg966!799$IsQ87$bVYvg;zhL_WU7z&PSor}d4EONbm8*ALz5_}KJV z*|Ww6_}J9E9@EoHw?*F; zeU-GlrK?KcjYqVkrX@8k(jwbt^oa}nB70;N{-mD%u}S^#$@HEH$>_#m6*B4%z37AZ zJ&!z(f%_G>-~8SpUKMb^125)I_)AWim-8A>guJ}Bs8{XPc(q=g7b6Jn0f!SB4}g0J z+#}!~10RG=nb(Au1uvVZ<@qA0;CY(dv_#9t81vaohiUht(e;Ql z1O_4`cC$&J{)uUc*yZT3E33dPT`B$28_0eqmif4eG=0XW0U^)sa#9Ew+Crl0%@FGY+O%oBJd92 z#q(gE*0^ME3Ta#);GOw4?(a0IpO+lMaStmF+>dw_m1#_ zcck}C?!ud=--kXIPbHc*|R9;6G}6gjXcrhcxHnC24)Vmw=aJSiA+M_4VHL{zQcC7VtGP zy*~qA^DhbAUGF^C_zV63p z5&KqHwzabCZ=dWBTDP>RWz%_EYQ>q;Ud@AjTVHz#`*tGsx8PU3Z|+r!I%7uRQ2@{5qkp>OCyN2mJn-05PLNju>l0Jfxy2kBQ`jI z7+p!8A8V6me#|%0H;Ul(Ch%=DeQ14O`Ac|>_u+nd1y_A<`Q9dYwF4g09Eo^MK@6rU zF$ixwHuU6)X5X%yAN$&&T0_c01DNXEK$NbT;o)if>U^wV?9LF-etgv2TfQ zsc)HYx$jfo3g1fKD&K0~8sA#qI^TNV2H!^CCf{b?7T;FiHs5Ey?Ymhgh`qEK6SNvI=433Y{fLbOm{XdpBc8VQYsCPGu8nb2HlA+!`)39W^f zg*HN4;T55s&|Y{|=pb|yItiVHE<#t~H6ccLU5FLB32{QakRWsydI&v*M4^|^TSyX; zg+4-x&{udvNEOnAbfKTnUlO3>QWSAdD2=6h;Z7g)zcdVVp2t zm>^6PCJB>;w}iKacZ7F^_k=0JRN;N$1K~qqnlN4XNSGna6lMvtg*n1pAye=RS;9PF zzOX=8D10n@A}kUX3rmEh!ZKmG@TssuSShR$Rtsx{wZb}Ky|6*pC~Oio3tNP(!ZzVE zVY{$H*eQH2>=JehdxS59y}~|Wzwo7SKsYFTB^(mI7P5tJgu}uS;izy-_*OVBoDfb5 zr-akOcfuLrtZ+^^FI*5V3YUcMg&%~=!WH4Fa83A8xGvlfZVI=ApM;-<+rk~;7vZk( ztMHrfyKqmqFFX()3Xg=xVL@RoA67I>9i|D>hUvoeVTLecm?_L0 zW(l)~*~08$jxc9fa9Bu~D=ak39p(x1hWWyTu&}UVVa3Brgp~{{6;?W|Ojy~la$)7e z!owoMBEu?#RSc^XRynLnSXJP=0v`i>Ebwu_Cjj3AcpQQB20j`16yVD zz%K;;6W|vEzZCf8z^?#)74U0-UkCgK;5Pxk1^8{iZwG!S@VkKD1N>g#_XB?b_^*Kf z8u)L3KLY$Q;Ew};68O`=p8@_H@E3r;1pE)cUjhCa@YjLA3H(q0L*9Ep%TZiw+maAr zrhA0QIdvWb=BUr_q#*MVxP!j|B%H#m&Lx6#lDus{wa%n zE4luXTS#&XOKwrgED7jcDR>{>Qx0dAAk=%Nct4ppaxwhmsklaR++eC7kNp1_tZ6&#F zB)6U9c97golG{acyGd@e@DUv%)a%V{HEXkcCxt~k!e98Snau-Q%w&dnY z?o!EJF1cSy?kdS$Bf0A&_bbWWD7jxt?iR`2Cb>H#cbDYuk=$=2cfaI*C%FeC_eaS+ zB)LCH?or7-F1aTq_q61mk=%2VdqHx4k=)CY`>W($lic4V_on3DmfX9NdtY)NO78EH z`$Tg8klg2z`%-dWOYWbN`&RP(CBKm57nb~@lFv!rl6*n(i%Wh9$uA}OWhB3xDgF3A@qUzWTt`B3t)OBwv?&Q}S)e zZy@=NB)^H|Ho{2wL%kmUa)`9~%Hxa6Od{L_+uM)J=|{sqbZMe;98{;!gMP4a(} z{F{=0Tk`Kp{(Z@RDEYrj{u9anL-L+{#&v7i?xtg3yZa=SUIsQu?k`> zF4huaEhW}6Vl5}u3SzA!)+%DHCe|8axnd0!Yq(e=#p)8PC{|f4U#w89SgeXzHL=zb zYaOxH6RR#(QwR@R8;G@$SeuBonOIwhwUt=gh_#(qJBYQDSi6X|n^>d8>Je+KSiNHH zDb@tB_7Q7eu_lYPpE|moic@uJ&YI3z&f3m8&brQe&iYQ>X*f-%<+PoSvw^drvyrp0 zvx&2*vzfEGvxT#zvz4>8vyHQ@vz@cOvxBpvvy-#4vx~E2bz5W1VqM zuQT4+)7i_J;Oy<}<4kn+btXBJohiM-8sWK(>cpI+d0QM*ZH|~ zo^!r)f%6OJLgymqVrRB9$C>L~;#}%n=3MSv;r!CM(z(jH+PTKL*168P-uabtgL9*E zlk;omX6F{?R_8Y7cIOV~PUkM?Zs#87UgtN?ea`*PZ=K&czjq#R{^0!4dC+;tdD!`r z^N91P^O*Cv^Mv!H^OW` zI&V2|JMTE}I`28}J0Cb7Iv+WIcRqGLaXxka;e6(N?tI~V>3rpU?R?|>)A^V4t=rG- z?+$PmatFE#yNkGsx{J9vH}6`m?H1fY?&9uXcL{e%cPV#icNuqCcR6=?cLjGvcO`da zcNKS4cQto)cMaEZU3Z8()E(vycSpD*-BE6r+wB(Jl3R8?*LMRqbR#!*6Sv}4-I}|m zyOz7QyN00ZtQO2Zt8C4Ztia3Zs~62ZtZU4ZtHI6 zZtw2k?&$91?(FX3?&|L5?(U9u_i%gMG45D*oZIV;clUJnawoWZyZg8k-F@9j?qqk0 zyPrGNo#sw=XSn;j2e>oc1Koq%gWW^ipSg#+hq<#{aSwNoaF2A4a*uY8agTM6bB}jV za8Gnka!+e))8VIDb`V9 z9WB-|VjU~iabg`W)(K*rDAq}0oh;TVVx211X=0r&))``*Db`tHoh{ZmVx242&&4`V ztP8~Yg;*Dgb+K5p#hN45T(K?@>oTz}7weZ|T`AU8VqGoPHDX;S*7aijN~{~ix>2l~ zgfv0xX0dJ&>sGOD6YF-d?hxxvvF;Mt3;#-F;%+FV=6x`kh!0i1i1t{wUUi zVm&0*!(#nOtVhIpRIJCudR(k0#ClS!r^I?%tUrtOj9AZ#^_*DGi}iw7FN*aSv0f7E zWwBln>#t(HD%NXay)M?@#Ck)lH^q8OthdE_N33_ndQYtP#ri<355@XOtiOx(u~?so z^{H6@5bHCsJ{Ri?vAz`RE3v*7>l?BDDb~Nl`c~|IV)qw&fY=L(Jy7h0#a=}0Ma5oB z?3~znu`RJ}u?u1k5_@s62aCOg*h`ANl-Ns)y{y>FiM_noD~P?K*ei*>ve>JLy{g!& ziM_hmYl!WL?TS4_?4e>06MMMWBg7sl_9(Ht#O@ZmD0WF~Pi$Z8K>jblh&@*9 zabow1JznfR#okNo31aUp_C8`y6nkH>Cy6~->?vaJC-zjar-?mX>=|P3FZKaq&lLMW zu@4gaV6hJo`)6VwD)wPw&k|e2K3wc0#6D8&qr^T&>|@0~PVD2wK2hwG#6DTbHqMZ?4OH$p4jJ$eSz4&5c@*0FB1D=v1f}tN9?&`Un2IU zVqYfqS#J*PS>%_iZ>|cp}gV;BUeUsR~7W-zgZxQ=ev2PRm zcCqge`%ba%68mnk?-Bc6v411f71;L+)kOC1#Qwe54~YE-vHvLcgJM4<_QPWTN$f|& zepKwo#C}}tC&YeI?5D(jTI@fI{fyYpiv66}&x`$n*e{Cx7qMRw`(?3T5&N%Vzbf`? zV!tl--^6}H>^H@JOYFDBen;$g#ePrh_r?A|><`8MNbJ9h{ju1ei2bS9{}B5#u|F64 z3$ecx`zx`(7W*5q|0(vr#Qs(a{iM)e3In9DkQ4?=VPPpOB85ezu$Ym(>HfYip>na^ zM-Sd&W^sa!iWGbM(gKU)zKfQSyE$fJ&!m0+XP{h9qNvhnHi|(Ig~h1aN{Y2wrCw|` z+g=oVu@}{YRNAKdkVe@f8%n$3$2G5BEBbA}U5va&P^`y(r`V}Ru^+V>)q1^=MtMx5 zjLC*lsnwdDcBfjbdS0a%)jO?XquFj2+i|s459^J3*sP>cp4KSivY~XE4Zq>VNim6o zq!=|T%%$P;r*^v)H@u+PXc%wod5tnY8%ok>H@&d!6&rp~Ek=B~d>Qs}U)u{W` zz>m{&d0C@yZ&Q}l58@>7+DTBX)Dvb9#(~01imgf|u13vzHEA`|D6eajy|baj%~s-9 zYRzKYW(!0$j};31pcphfR;AMRqjs1^d0V59GLU61QMJ>kHd^gslGJ%)L5tPzG~!~^ zsW!uEyH#yhjCJ`yqfE+%5=LP?YE&v}XCW{3ATHKxp3iHmSAu5JOai}^p35g1WlA;_ z&+{u`)2|l;C6G}i>J+QZM!Q&z<5tz{#FeOKtjiY~g-qNmZ>(PNDqg44D8`LWy%@!f zTCou|nnmA><4(=5G@?p7J(quK6jE%npmgF|+pk7`vFan5QLO&d3R#>=C8&o{BT3qw z6v~hR8fE`%D3zLDuh-kGOBjRFN_bhFdc;l+Yhf)4n~lg%qb#aXW@bZaL_rc)<4~=6 zqZlRiI_u)Mihk&aQBZ530=zVetx*ojh7wl8xZViDBDxHDN!n4d-fDJ=ajljFVN|d9 z&GhOISwf>6k`1L^k2`+FYpM67q$CQ8wR)Q^&}sT!6UE#y^w^MPHOiscP#TS}UTamF z#l&wh7j?+g5@zMM0?(_))n>b$)?-6f(kQdCp){+tq~2(=scJ!_v}Lu}2;xdH@G9W9 zYt0}qR)2Mka(G6RsL~2}E5&-d!RiOBP_5I7iXkUxQc0?DC9b7cf2c+|G9!vti2}dI zkFQ0Xm0`19Y{Y)8*lzmOj$iYubw91ghK$lEM`uGx+O=veVqIb{LH0ZCMiB*;6sz^P z5mwqkwH>GR*pRYDIW`+g)J{4L4^atgouC-`D3=K;HC?{q^snwgEYA3;HX~s>?{c5Q87_Y4n z$MsI+HS0BFF6(NPle3{zyk>w{s"%%zbO>-7L3t;UFDwc>{@1Er}^PR)iAM1Ir5 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 z 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 Date: Wed, 19 Nov 2025 15:04:47 -0700 Subject: [PATCH 3/4] Deps for docs --- docs/package.json | 10 +- docs/pnpm-lock.yaml | 1016 ++++++++++++++++++++++--------------------- 2 files changed, 521 insertions(+), 505 deletions(-) diff --git a/docs/package.json b/docs/package.json index 8355da2..85bc4bf 100644 --- a/docs/package.json +++ b/docs/package.json @@ -25,13 +25,13 @@ "astro": "astro" }, "dependencies": { - "@astrojs/node": "^9.5.0", - "@astrojs/starlight": "^0.36.1", - "astro": "^5.14.6", + "@astrojs/node": "^9.5.1", + "@astrojs/starlight": "^0.36.2", + "astro": "^5.15.9", "qrcode": "^1.5.4", - "sharp": "^0.34.4" + "sharp": "^0.34.5" }, "devDependencies": { - "@types/qrcode": "^1.5.5" + "@types/qrcode": "^1.5.6" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 89d41ff..eb2b905 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -9,44 +9,44 @@ importers: .: dependencies: '@astrojs/node': - specifier: ^9.5.0 - version: 9.5.0(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3)) + specifier: ^9.5.1 + version: 9.5.1(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) '@astrojs/starlight': - specifier: ^0.36.1 - version: 0.36.1(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3)) + specifier: ^0.36.2 + version: 0.36.2(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) astro: - specifier: ^5.14.6 - version: 5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3) + specifier: ^5.15.9 + version: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) qrcode: specifier: ^1.5.4 version: 1.5.4 sharp: - specifier: ^0.34.4 - version: 0.34.4 + specifier: ^0.34.5 + version: 0.34.5 devDependencies: '@types/qrcode': - specifier: ^1.5.5 - version: 1.5.5 + specifier: ^1.5.6 + version: 1.5.6 packages: '@astrojs/compiler@2.13.0': resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==} - '@astrojs/internal-helpers@0.7.4': - resolution: {integrity: sha512-lDA9MqE8WGi7T/t2BMi+EAXhs4Vcvr94Gqx3q15cFEz8oFZMO4/SFBqYr/UcmNlvW+35alowkVj+w9VhLvs5Cw==} + '@astrojs/internal-helpers@0.7.5': + resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==} - '@astrojs/markdown-remark@6.3.8': - resolution: {integrity: sha512-uFNyFWadnULWK2cOw4n0hLKeu+xaVWeuECdP10cQ3K2fkybtTlhb7J7TcScdjmS8Yps7oje9S/ehYMfZrhrgCg==} + '@astrojs/markdown-remark@6.3.9': + resolution: {integrity: sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==} - '@astrojs/mdx@4.3.7': - resolution: {integrity: sha512-5SRmvMyT/UMWaU2eoD+htnXtE2mUZZEH2K/nEzhuEy+iCsOSuS/DUry59WuKUJRQETi1mgJFdNR4dZLJHYVuRA==} + '@astrojs/mdx@4.3.11': + resolution: {integrity: sha512-ca18jxAiYDbPE1eAsNoiGnZoMYZGtfQpCmAJMXCB1WpyzTOHH7+KP1+gnKK8SFEA6XjHvjwI5Xzu8695c0Gabw==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 - '@astrojs/node@9.5.0': - resolution: {integrity: sha512-x1whLIatmCefaqJA8FjfI+P6FStF+bqmmrib0OUGM1M3cZhAXKLgPx6UF2AzQ3JgpXgCWYM24MHtraPvZhhyLQ==} + '@astrojs/node@9.5.1': + resolution: {integrity: sha512-7k+SU877OUQylPr0mFcWrGvNuC78Lp9w+GInY8Rwc+LkHyDP9xls+nZAioK0WDWd+fyeQnlHbpDGURO3ZHuDVg==} peerDependencies: astro: ^5.14.3 @@ -57,8 +57,8 @@ packages: '@astrojs/sitemap@3.6.0': resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==} - '@astrojs/starlight@0.36.1': - resolution: {integrity: sha512-Fmt8mIsAIZN18Y4YQDI6p521GsYGe4hYxh9jWmz0pHBXnS5J7Na3TSXNya4eyIymCcKkuiKFbs7b/knsdGVYPg==} + '@astrojs/starlight@0.36.2': + resolution: {integrity: sha512-QR8NfO7+7DR13kBikhQwAj3IAoptLLNs9DkyKko2M2l3PrqpcpVUnw1JBJ0msGDIwE6tBbua2UeBND48mkh03w==} peerDependencies: astro: ^5.5.0 @@ -70,12 +70,12 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -83,173 +83,173 @@ packages: resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} - '@capsizecss/unpack@3.0.0': - resolution: {integrity: sha512-+ntATQe1AlL7nTOYjwjj6w3299CgRot48wL761TUGYpYgAou3AaONZazp0PKZyCyWhudWsjhq1nvRHOvbMzhTA==} + '@capsizecss/unpack@3.0.1': + resolution: {integrity: sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==} engines: {node: '>=18'} '@ctrl/tinycolor@4.2.0': resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} engines: {node: '>=14'} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -270,124 +270,135 @@ packages: resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.4': - resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.4': - resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.3': - resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.3': - resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.3': - resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.2.3': - resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.2.3': - resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.2.3': - resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.2.3': - resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': - resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.2.3': - resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.34.4': - resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.34.4': - resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-ppc64@0.34.4': - resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] - '@img/sharp-linux-s390x@0.34.4': - resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.34.4': - resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.4': - resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.4': - resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.34.4': - resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.4': - resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.4': - resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.4': - resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -443,133 +454,133 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] - '@shikijs/core@3.13.0': - resolution: {integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==} + '@shikijs/core@3.15.0': + resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} - '@shikijs/engine-javascript@3.13.0': - resolution: {integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==} + '@shikijs/engine-javascript@3.15.0': + resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} - '@shikijs/engine-oniguruma@3.13.0': - resolution: {integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==} + '@shikijs/engine-oniguruma@3.15.0': + resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} - '@shikijs/langs@3.13.0': - resolution: {integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==} + '@shikijs/langs@3.15.0': + resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} - '@shikijs/themes@3.13.0': - resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==} + '@shikijs/themes@3.15.0': + resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} - '@shikijs/types@3.13.0': - resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==} + '@shikijs/types@3.15.0': + resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -610,11 +621,11 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@24.8.1': - resolution: {integrity: sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==} + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} - '@types/qrcode@1.5.5': - resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} + '@types/qrcode@1.5.6': + resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -683,8 +694,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.14.6: - resolution: {integrity: sha512-MSdjKt2W2a56x868DqDWgbfw4D689/8EGhHG4465h7eivTI237u1aBx4iJvgI6WfgdUE61+coAvMjUkEvOWbpA==} + astro@5.15.9: + resolution: {integrity: sha512-XLDXxu0282cC/oYHswWZm3johGlRvk9rLRS7pWVWSne+HsZe9JgrpHI+vewAJSSNHBGd1aCyaQOElT5RNGe7IQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -793,8 +804,8 @@ packages: crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} - css-selector-parser@3.1.3: - resolution: {integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==} + css-selector-parser@3.2.0: + resolution: {integrity: sha512-L1bdkNKUP5WYxiW5dW6vA2hd3sL8BdRNLy2FCX0rLVise4eNw9nBdeBuJHxlELieSE2H1f6bYQFfwVUwWCV9rQ==} css-tree@3.1.0: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} @@ -843,8 +854,8 @@ packages: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} - devalue@5.4.1: - resolution: {integrity: sha512-YtoaOfsqjbZQKGIMRYDWKjUmSB4VJ/RElB+bXZawQAQYAo4xu08GKTMVlsZDTF6R2MbAgjcAQRPI5eIyRAT2OQ==} + devalue@5.5.0: + resolution: {integrity: sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -896,8 +907,8 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true @@ -1079,8 +1090,8 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -1119,18 +1130,14 @@ packages: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -1145,11 +1152,11 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.1: + resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -1363,8 +1370,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -1573,13 +1580,13 @@ packages: retext@9.0.0: resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} - rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} @@ -1599,23 +1606,23 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - sharp@0.34.4: - resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shiki@3.13.0: - resolution: {integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==} + shiki@3.15.0: + resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sitemap@8.0.1: - resolution: {integrity: sha512-4Y8ynSMFAy/DadeAeio8Kx4zfC8/0VcKi7TH0I1SazvBcrU2fpJaGoeWsX1FMRaHoe3VGMA53DqVoLErZrtG9Q==} + sitemap@8.0.2: + resolution: {integrity: sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==} engines: {node: '>=14.0.0', npm: '>=6.0.0'} hasBin: true - smol-toml@1.4.2: - resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} + smol-toml@1.5.2: + resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -1659,17 +1666,18 @@ packages: resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} - style-to-js@1.1.18: - resolution: {integrity: sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - style-to-object@1.0.11: - resolution: {integrity: sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==} + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} @@ -1716,8 +1724,8 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@7.14.0: - resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} unicode-properties@1.4.1: resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} @@ -1761,8 +1769,8 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - unstorage@1.17.1: - resolution: {integrity: sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==} + unstorage@1.17.2: + resolution: {integrity: sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -1835,8 +1843,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@6.4.0: - resolution: {integrity: sha512-oLnWs9Hak/LOlKjeSpOwD6JMks8BeICEdYMJBf6P4Lac/pO9tKiv/XhXnAM7nNfSkZahjlCZu9sS50zL8fSnsw==} + vite@6.4.1: + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -1923,8 +1931,8 @@ packages: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} yocto-spinner@0.2.3: @@ -1935,10 +1943,10 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - zod-to-json-schema@3.24.6: - resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + zod-to-json-schema@3.25.0: + resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==} peerDependencies: - zod: ^3.24.1 + zod: ^3.25 || ^4 zod-to-ts@1.2.0: resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} @@ -1956,17 +1964,17 @@ snapshots: '@astrojs/compiler@2.13.0': {} - '@astrojs/internal-helpers@0.7.4': {} + '@astrojs/internal-helpers@0.7.5': {} - '@astrojs/markdown-remark@6.3.8': + '@astrojs/markdown-remark@6.3.9': dependencies: - '@astrojs/internal-helpers': 0.7.4 + '@astrojs/internal-helpers': 0.7.5 '@astrojs/prism': 3.3.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 import-meta-resolve: 4.2.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 @@ -1974,8 +1982,8 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.13.0 - smol-toml: 1.4.2 + shiki: 3.15.0 + smol-toml: 1.5.2 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -1984,16 +1992,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.7(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3))': + '@astrojs/mdx@4.3.11(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': dependencies: - '@astrojs/markdown-remark': 6.3.8 + '@astrojs/markdown-remark': 6.3.9 '@mdx-js/mdx': 3.1.1 acorn: 8.15.0 - astro: 5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3) + astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 - kleur: 4.1.5 + picocolors: 1.1.1 rehype-raw: 7.0.0 remark-gfm: 4.0.1 remark-smartypants: 3.0.2 @@ -2003,10 +2011,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@9.5.0(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3))': + '@astrojs/node@9.5.1(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': dependencies: - '@astrojs/internal-helpers': 0.7.4 - astro: 5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3) + '@astrojs/internal-helpers': 0.7.5 + astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) send: 1.2.0 server-destroy: 1.0.1 transitivePeerDependencies: @@ -2018,28 +2026,28 @@ snapshots: '@astrojs/sitemap@3.6.0': dependencies: - sitemap: 8.0.1 + sitemap: 8.0.2 stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight@0.36.1(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3))': + '@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': dependencies: - '@astrojs/markdown-remark': 6.3.8 - '@astrojs/mdx': 4.3.7(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3)) + '@astrojs/markdown-remark': 6.3.9 + '@astrojs/mdx': 4.3.11(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) '@astrojs/sitemap': 3.6.0 '@pagefind/default-ui': 1.4.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3) - astro-expressive-code: 0.41.3(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3)) + astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) + astro-expressive-code: 0.41.3(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 hast-util-to-string: 3.0.1 hastscript: 9.0.1 i18next: 23.16.8 - js-yaml: 4.1.0 + js-yaml: 4.1.1 klona: 2.0.6 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 @@ -2069,106 +2077,106 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.4': + '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/runtime@7.28.4': {} - '@babel/types@7.28.4': + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - '@capsizecss/unpack@3.0.0': + '@capsizecss/unpack@3.0.1': dependencies: fontkit: 2.0.4 '@ctrl/tinycolor@4.2.0': {} - '@emnapi/runtime@1.5.0': + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.11': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.11': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.25.11': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.25.11': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.11': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.11': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.11': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.11': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.11': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.11': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.11': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.11': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.11': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.11': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.11': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.11': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.25.11': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.11': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.11': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.11': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.11': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.11': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.25.11': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.11': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.25.11': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.25.11': + '@esbuild/win32-x64@0.25.12': optional: true '@expressive-code/core@0.41.3': @@ -2190,7 +2198,7 @@ snapshots: '@expressive-code/plugin-shiki@0.41.3': dependencies: '@expressive-code/core': 0.41.3 - shiki: 3.13.0 + shiki: 3.15.0 '@expressive-code/plugin-text-markers@0.41.3': dependencies: @@ -2198,90 +2206,98 @@ snapshots: '@img/colour@1.0.0': {} - '@img/sharp-darwin-arm64@0.34.4': + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true - '@img/sharp-darwin-x64@0.34.4': + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.3': + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true - '@img/sharp-libvips-darwin-x64@1.2.3': + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm64@1.2.3': + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm@1.2.3': + '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.3': + '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.2.3': + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.2.3': + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + '@img/sharp-libvips-linux-x64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.3': + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true - '@img/sharp-linux-arm64@0.34.4': + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true - '@img/sharp-linux-arm@0.34.4': + '@img/sharp-linux-arm@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-ppc64@0.34.4': + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.34.4': + '@img/sharp-linux-riscv64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true - '@img/sharp-linux-x64@0.34.4': + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.4': + '@img/sharp-linux-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.4': + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true - '@img/sharp-wasm32@0.34.4': + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.5.0 + '@emnapi/runtime': 1.7.1 optional: true - '@img/sharp-win32-arm64@0.34.4': + '@img/sharp-win32-arm64@0.34.5': optional: true - '@img/sharp-win32-ia32@0.34.4': + '@img/sharp-win32-ia32@0.34.5': optional: true - '@img/sharp-win32-x64@0.34.4': + '@img/sharp-win32-x64@0.34.5': optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -2338,107 +2354,107 @@ snapshots: '@pagefind/windows-x64@1.4.0': optional: true - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': + '@rollup/pluginutils@5.3.0(rollup@4.53.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.3 - '@rollup/rollup-android-arm-eabi@4.52.5': + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-android-arm64@4.52.5': + '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.52.5': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.52.5': + '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.52.5': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.52.5': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.5': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.5': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.5': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.5': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.5': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.5': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.5': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.5': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.5': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.52.5': + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true - '@rollup/rollup-openharmony-arm64@4.52.5': + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.5': + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.5': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.5': + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.5': + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true - '@shikijs/core@3.13.0': + '@shikijs/core@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.13.0': + '@shikijs/engine-javascript@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.13.0': + '@shikijs/engine-oniguruma@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.13.0': + '@shikijs/langs@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 - '@shikijs/themes@3.13.0': + '@shikijs/themes@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 - '@shikijs/types@3.13.0': + '@shikijs/types@3.15.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -2461,7 +2477,7 @@ snapshots: '@types/fontkit@2.0.8': dependencies: - '@types/node': 24.8.1 + '@types/node': 24.10.1 '@types/hast@3.0.4': dependencies: @@ -2483,13 +2499,13 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@24.8.1': + '@types/node@24.10.1': dependencies: - undici-types: 7.14.0 + undici-types: 7.16.0 - '@types/qrcode@1.5.5': + '@types/qrcode@1.5.6': dependencies: - '@types/node': 24.8.1 + '@types/node': 24.10.1 '@types/sax@1.2.7': dependencies: @@ -2536,20 +2552,20 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.3(astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3)): + astro-expressive-code@0.41.3(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)): dependencies: - astro: 5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3) + astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) rehype-expressive-code: 0.41.3 - astro@5.14.6(@types/node@24.8.1)(rollup@4.52.5)(typescript@5.9.3): + astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3): dependencies: '@astrojs/compiler': 2.13.0 - '@astrojs/internal-helpers': 0.7.4 - '@astrojs/markdown-remark': 6.3.8 + '@astrojs/internal-helpers': 0.7.5 + '@astrojs/markdown-remark': 6.3.9 '@astrojs/telemetry': 3.3.0 - '@capsizecss/unpack': 3.0.0 + '@capsizecss/unpack': 3.0.1 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -2561,12 +2577,12 @@ snapshots: cssesc: 3.0.0 debug: 4.4.3 deterministic-object-hash: 2.0.2 - devalue: 5.4.1 + devalue: 5.5.0 diff: 5.2.0 dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 1.7.0 - esbuild: 0.25.11 + esbuild: 0.25.12 estree-walker: 3.0.3 flattie: 1.1.1 fontace: 0.3.1 @@ -2574,39 +2590,39 @@ snapshots: html-escaper: 3.0.3 http-cache-semantics: 4.2.0 import-meta-resolve: 4.2.0 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.19 - magicast: 0.3.5 + js-yaml: 4.1.1 + magic-string: 0.30.21 + magicast: 0.5.1 mrmime: 2.0.1 neotraverse: 0.6.18 p-limit: 6.2.0 p-queue: 8.1.1 package-manager-detector: 1.5.0 + picocolors: 1.1.1 picomatch: 4.0.3 prompts: 2.4.2 rehype: 13.0.2 semver: 7.7.3 - shiki: 3.13.0 - smol-toml: 1.4.2 - tinyexec: 1.0.1 + shiki: 3.15.0 + smol-toml: 1.5.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tsconfck: 3.1.6(typescript@5.9.3) ultrahtml: 1.6.0 unifont: 0.6.0 unist-util-visit: 5.0.0 - unstorage: 1.17.1 + unstorage: 1.17.2 vfile: 6.0.3 - vite: 6.4.0(@types/node@24.8.1) - vitefu: 1.1.1(vite@6.4.0(@types/node@24.8.1)) + vite: 6.4.1(@types/node@24.10.1) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 zod: 3.25.76 - zod-to-json-schema: 3.24.6(zod@3.25.76) + zod-to-json-schema: 3.25.0(zod@3.25.76) zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) optionalDependencies: - sharp: 0.34.4 + sharp: 0.34.5 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -2729,7 +2745,7 @@ snapshots: dependencies: uncrypto: 0.1.3 - css-selector-parser@3.1.3: {} + css-selector-parser@3.2.0: {} css-tree@3.1.0: dependencies: @@ -2762,7 +2778,7 @@ snapshots: dependencies: base-64: 1.0.0 - devalue@5.4.1: {} + devalue@5.5.0: {} devlop@1.1.0: dependencies: @@ -2806,34 +2822,34 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.25.11: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 escape-html@1.0.3: {} @@ -3029,7 +3045,7 @@ snapshots: '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.1.3 + css-selector-parser: 3.2.0 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -3056,7 +3072,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.18 + style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -3090,7 +3106,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.18 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: @@ -3153,7 +3169,7 @@ snapshots: inherits@2.0.4: {} - inline-style-parser@0.2.4: {} + inline-style-parser@0.2.7: {} iron-webcrypto@1.2.1: {} @@ -3182,14 +3198,12 @@ snapshots: dependencies: is-inside-container: 1.0.0 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 kleur@3.0.3: {} - kleur@4.1.5: {} - klona@2.0.6: {} locate-path@5.0.0: @@ -3200,14 +3214,14 @@ snapshots: lru-cache@10.4.3: {} - magic-string@0.30.19: + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: + magicast@0.5.1: dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -3701,7 +3715,7 @@ snapshots: dependencies: boolbase: 1.0.0 - ofetch@1.4.1: + ofetch@1.5.1: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 @@ -3727,7 +3741,7 @@ snapshots: p-limit@6.2.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 p-locate@4.1.0: dependencies: @@ -3996,35 +4010,35 @@ snapshots: retext-stringify: 4.0.0 unified: 11.0.5 - rollup@4.52.5: + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.5 - '@rollup/rollup-android-arm64': 4.52.5 - '@rollup/rollup-darwin-arm64': 4.52.5 - '@rollup/rollup-darwin-x64': 4.52.5 - '@rollup/rollup-freebsd-arm64': 4.52.5 - '@rollup/rollup-freebsd-x64': 4.52.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 - '@rollup/rollup-linux-arm-musleabihf': 4.52.5 - '@rollup/rollup-linux-arm64-gnu': 4.52.5 - '@rollup/rollup-linux-arm64-musl': 4.52.5 - '@rollup/rollup-linux-loong64-gnu': 4.52.5 - '@rollup/rollup-linux-ppc64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-musl': 4.52.5 - '@rollup/rollup-linux-s390x-gnu': 4.52.5 - '@rollup/rollup-linux-x64-gnu': 4.52.5 - '@rollup/rollup-linux-x64-musl': 4.52.5 - '@rollup/rollup-openharmony-arm64': 4.52.5 - '@rollup/rollup-win32-arm64-msvc': 4.52.5 - '@rollup/rollup-win32-ia32-msvc': 4.52.5 - '@rollup/rollup-win32-x64-gnu': 4.52.5 - '@rollup/rollup-win32-x64-msvc': 4.52.5 + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 - sax@1.4.1: {} + sax@1.4.3: {} semver@7.7.3: {} @@ -4050,56 +4064,58 @@ snapshots: setprototypeof@1.2.0: {} - sharp@0.34.4: + sharp@0.34.5: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 semver: 7.7.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.4 - '@img/sharp-darwin-x64': 0.34.4 - '@img/sharp-libvips-darwin-arm64': 1.2.3 - '@img/sharp-libvips-darwin-x64': 1.2.3 - '@img/sharp-libvips-linux-arm': 1.2.3 - '@img/sharp-libvips-linux-arm64': 1.2.3 - '@img/sharp-libvips-linux-ppc64': 1.2.3 - '@img/sharp-libvips-linux-s390x': 1.2.3 - '@img/sharp-libvips-linux-x64': 1.2.3 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 - '@img/sharp-linux-arm': 0.34.4 - '@img/sharp-linux-arm64': 0.34.4 - '@img/sharp-linux-ppc64': 0.34.4 - '@img/sharp-linux-s390x': 0.34.4 - '@img/sharp-linux-x64': 0.34.4 - '@img/sharp-linuxmusl-arm64': 0.34.4 - '@img/sharp-linuxmusl-x64': 0.34.4 - '@img/sharp-wasm32': 0.34.4 - '@img/sharp-win32-arm64': 0.34.4 - '@img/sharp-win32-ia32': 0.34.4 - '@img/sharp-win32-x64': 0.34.4 + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 - shiki@3.13.0: + shiki@3.15.0: dependencies: - '@shikijs/core': 3.13.0 - '@shikijs/engine-javascript': 3.13.0 - '@shikijs/engine-oniguruma': 3.13.0 - '@shikijs/langs': 3.13.0 - '@shikijs/themes': 3.13.0 - '@shikijs/types': 3.13.0 + '@shikijs/core': 3.15.0 + '@shikijs/engine-javascript': 3.15.0 + '@shikijs/engine-oniguruma': 3.15.0 + '@shikijs/langs': 3.15.0 + '@shikijs/themes': 3.15.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 sisteransi@1.0.5: {} - sitemap@8.0.1: + sitemap@8.0.2: dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.1 + sax: 1.4.3 - smol-toml@1.4.2: {} + smol-toml@1.5.2: {} source-map-js@1.2.1: {} @@ -4138,17 +4154,17 @@ snapshots: dependencies: ansi-regex: 6.2.2 - style-to-js@1.1.18: + style-to-js@1.1.21: dependencies: - style-to-object: 1.0.11 + style-to-object: 1.0.14 - style-to-object@1.0.11: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.4 + inline-style-parser: 0.2.7 tiny-inflate@1.0.3: {} - tinyexec@1.0.1: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -4177,7 +4193,7 @@ snapshots: uncrypto@0.1.3: {} - undici-types@7.14.0: {} + undici-types@7.16.0: {} unicode-properties@1.4.1: dependencies: @@ -4202,7 +4218,7 @@ snapshots: unifont@0.6.0: dependencies: css-tree: 3.1.0 - ofetch: 1.4.1 + ofetch: 1.5.1 ohash: 2.0.11 unist-util-find-after@5.0.0: @@ -4251,7 +4267,7 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unstorage@1.17.1: + unstorage@1.17.2: dependencies: anymatch: 3.1.3 chokidar: 4.0.3 @@ -4259,7 +4275,7 @@ snapshots: h3: 1.15.4 lru-cache: 10.4.3 node-fetch-native: 1.6.7 - ofetch: 1.4.1 + ofetch: 1.5.1 ufo: 1.6.1 util-deprecate@1.0.2: {} @@ -4279,21 +4295,21 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@6.4.0(@types/node@24.8.1): + vite@6.4.1(@types/node@24.10.1): dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.5 + rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.8.1 + '@types/node': 24.10.1 fsevents: 2.3.3 - vitefu@1.1.1(vite@6.4.0(@types/node@24.8.1)): + vitefu@1.1.1(vite@6.4.1(@types/node@24.10.1)): optionalDependencies: - vite: 6.4.0(@types/node@24.8.1) + vite: 6.4.1(@types/node@24.10.1) web-namespaces@2.0.1: {} @@ -4342,7 +4358,7 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} yocto-spinner@0.2.3: dependencies: @@ -4350,7 +4366,7 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.24.6(zod@3.25.76): + zod-to-json-schema@3.25.0(zod@3.25.76): dependencies: zod: 3.25.76 From a212f3f3b5263a1ed830c8763190c49b9fd64e6b Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Thu, 20 Nov 2025 21:00:00 -0700 Subject: [PATCH 4/4] 2.3.0 - Unified logging and app intents --- android/app/build.gradle.kts | 9 +- .../com/atridad/ascently/utils/AppLogger.kt | 7 +- docs/package.json | 2 +- docs/pnpm-lock.yaml | 179 ++++++++++++++---- ios/Ascently.xcodeproj/project.pbxproj | 16 +- .../UserInterfaceState.xcuserstate | Bin 263437 -> 274726 bytes .../AppIntents/AscentlyShortcuts.swift | 33 ++++ .../AppIntents/EndActiveSessionIntent.swift | 40 ++++ .../AppIntents/SessionIntentSupport.swift | 95 ++++++++++ .../StartLastGymSessionIntent.swift | 43 +++++ ios/Ascently/AscentlyApp.swift | 12 ++ ios/Ascently/ContentView.swift | 2 +- ios/Ascently/Info.plist | 1 + .../ViewModels/ClimbingDataManager.swift | 103 +++++----- .../SessionStatusLiveBundle.swift | 1 - .../SessionStatusLiveControl.swift | 74 -------- sync/main.go | 2 +- 17 files changed, 440 insertions(+), 179 deletions(-) create mode 100644 ios/Ascently/AppIntents/AscentlyShortcuts.swift create mode 100644 ios/Ascently/AppIntents/EndActiveSessionIntent.swift create mode 100644 ios/Ascently/AppIntents/SessionIntentSupport.swift create mode 100644 ios/Ascently/AppIntents/StartLastGymSessionIntent.swift delete mode 100644 ios/SessionStatusLive/SessionStatusLiveControl.swift diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 0e6b1e5..c928a22 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.atridad.ascently" minSdk = 31 targetSdk = 36 - versionCode = 46 - versionName = "2.2.1" + versionCode = 4 + versionName = "2.3.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -38,7 +38,10 @@ android { java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } } - buildFeatures { compose = true } + buildFeatures { + compose = true + buildConfig = true + } } kotlin { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } } diff --git a/android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt b/android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt index d2a1964..ebcec39 100644 --- a/android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt +++ b/android/app/src/main/java/com/atridad/ascently/utils/AppLogger.kt @@ -3,11 +3,10 @@ package com.atridad.ascently.utils import android.util.Log import com.atridad.ascently.BuildConfig -/** - * Centralized logging utility to ensure all mobile logging happens only in debug builds. - */ object AppLogger { + private const val DEFAULT_TAG = "Ascently" + enum class Level(val androidLevel: Int) { DEBUG(Log.DEBUG), INFO(Log.INFO), @@ -46,6 +45,4 @@ object AppLogger { Log.println(level.androidLevel, tag, message) } } - - private const val DEFAULT_TAG = "Ascently" } diff --git a/docs/package.json b/docs/package.json index 85bc4bf..a948604 100644 --- a/docs/package.json +++ b/docs/package.json @@ -27,7 +27,7 @@ "dependencies": { "@astrojs/node": "^9.5.1", "@astrojs/starlight": "^0.36.2", - "astro": "^5.15.9", + "astro": "^5.16.0", "qrcode": "^1.5.4", "sharp": "^0.34.5" }, diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index eb2b905..9fd4330 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@astrojs/node': specifier: ^9.5.1 - version: 9.5.1(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) + version: 9.5.1(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) '@astrojs/starlight': specifier: ^0.36.2 - version: 0.36.2(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) + version: 0.36.2(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) astro: - specifier: ^5.15.9 - version: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) + specifier: ^5.16.0 + version: 5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) qrcode: specifier: ^1.5.4 version: 1.5.4 @@ -39,8 +39,8 @@ packages: '@astrojs/markdown-remark@6.3.9': resolution: {integrity: sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==} - '@astrojs/mdx@4.3.11': - resolution: {integrity: sha512-ca18jxAiYDbPE1eAsNoiGnZoMYZGtfQpCmAJMXCB1WpyzTOHH7+KP1+gnKK8SFEA6XjHvjwI5Xzu8695c0Gabw==} + '@astrojs/mdx@4.3.12': + resolution: {integrity: sha512-pL3CVPtuQrPnDhWjy7zqbOibNyPaxP4VpQS8T8spwKqKzauJ4yoKyNkVTD8jrP7EAJHmBhZ7PTmUGZqOpKKp8g==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -694,8 +694,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.15.9: - resolution: {integrity: sha512-XLDXxu0282cC/oYHswWZm3johGlRvk9rLRS7pWVWSne+HsZe9JgrpHI+vewAJSSNHBGd1aCyaQOElT5RNGe7IQ==} + astro@5.16.0: + resolution: {integrity: sha512-GaDRs2Mngpw3dr2vc085GnORh98NiXxwIjg/EoQQQl/icZt3Z7s0BRsYHDZ8swkZbOA6wZsqWJdrNirl+iKcDg==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -791,6 +791,10 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} @@ -804,18 +808,33 @@ packages: crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-selector-parser@3.2.0: resolution: {integrity: sha512-L1bdkNKUP5WYxiW5dW6vA2hd3sL8BdRNLy2FCX0rLVise4eNw9nBdeBuJHxlELieSE2H1f6bYQFfwVUwWCV9rQ==} + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + css-tree@3.1.0: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -877,6 +896,19 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -894,6 +926,10 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} @@ -1077,8 +1113,8 @@ packages: http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} i18next@23.16.8: @@ -1219,6 +1255,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} @@ -1334,9 +1373,9 @@ packages: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} - mime-types@3.0.1: - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} - engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} @@ -1433,6 +1472,9 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + piccolore@0.1.3: + resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1636,10 +1678,6 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -1672,6 +1710,11 @@ packages: style-to-object@1.0.14: resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + svgo@4.0.0: + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} + engines: {node: '>=16'} + hasBin: true + tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -1769,8 +1812,8 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - unstorage@1.17.2: - resolution: {integrity: sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==} + unstorage@1.17.3: + resolution: {integrity: sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -1992,16 +2035,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.11(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': + '@astrojs/mdx@4.3.12(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': dependencies: '@astrojs/markdown-remark': 6.3.9 '@mdx-js/mdx': 3.1.1 acorn: 8.15.0 - astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) + astro: 5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 - picocolors: 1.1.1 + piccolore: 0.1.3 rehype-raw: 7.0.0 remark-gfm: 4.0.1 remark-smartypants: 3.0.2 @@ -2011,10 +2054,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@9.5.1(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': + '@astrojs/node@9.5.1(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': dependencies: '@astrojs/internal-helpers': 0.7.5 - astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) + astro: 5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) send: 1.2.0 server-destroy: 1.0.1 transitivePeerDependencies: @@ -2030,17 +2073,17 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight@0.36.2(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': + '@astrojs/starlight@0.36.2(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3))': dependencies: '@astrojs/markdown-remark': 6.3.9 - '@astrojs/mdx': 4.3.11(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/mdx': 4.3.12(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) '@astrojs/sitemap': 3.6.0 '@pagefind/default-ui': 1.4.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) - astro-expressive-code: 0.41.3(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) + astro: 5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) + astro-expressive-code: 0.41.3(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -2552,12 +2595,12 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.3(astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)): + astro-expressive-code@0.41.3(astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3)): dependencies: - astro: 5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) + astro: 5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3) rehype-expressive-code: 0.41.3 - astro@5.15.9(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3): + astro@5.16.0(@types/node@24.10.1)(rollup@4.53.3)(typescript@5.9.3): dependencies: '@astrojs/compiler': 2.13.0 '@astrojs/internal-helpers': 0.7.5 @@ -2598,20 +2641,21 @@ snapshots: p-limit: 6.2.0 p-queue: 8.1.1 package-manager-detector: 1.5.0 - picocolors: 1.1.1 + piccolore: 0.1.3 picomatch: 4.0.3 prompts: 2.4.2 rehype: 13.0.2 semver: 7.7.3 shiki: 3.15.0 smol-toml: 1.5.2 + svgo: 4.0.0 tinyexec: 1.0.2 tinyglobby: 0.2.15 tsconfck: 3.1.6(typescript@5.9.3) ultrahtml: 1.6.0 unifont: 0.6.0 unist-util-visit: 5.0.0 - unstorage: 1.17.2 + unstorage: 1.17.3 vfile: 6.0.3 vite: 6.4.1(@types/node@24.10.1) vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.1)) @@ -2735,6 +2779,8 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@11.1.0: {} + common-ancestor-path@1.0.1: {} cookie-es@1.2.2: {} @@ -2745,15 +2791,34 @@ snapshots: dependencies: uncrypto: 0.1.3 + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + css-selector-parser@3.2.0: {} + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + css-tree@3.1.0: dependencies: mdn-data: 2.12.2 source-map-js: 1.2.1 + css-what@6.2.2: {} + cssesc@3.0.0: {} + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + debug@4.4.3: dependencies: ms: 2.1.3 @@ -2794,6 +2859,24 @@ snapshots: dlv@1.1.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dset@3.1.4: {} ee-first@1.1.1: {} @@ -2804,6 +2887,8 @@ snapshots: encodeurl@2.0.0: {} + entities@4.5.0: {} + entities@6.0.1: {} es-module-lexer@1.7.0: {} @@ -3153,12 +3238,12 @@ snapshots: http-cache-semantics@4.2.0: {} - http-errors@2.0.0: + http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 toidentifier: 1.0.1 i18next@23.16.8: @@ -3411,6 +3496,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.0.28: {} + mdn-data@2.12.2: {} micromark-core-commonmark@2.0.3: @@ -3689,7 +3776,7 @@ snapshots: mime-db@1.54.0: {} - mime-types@3.0.1: + mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -3794,6 +3881,8 @@ snapshots: path-exists@4.0.0: {} + piccolore@0.1.3: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -4049,8 +4138,8 @@ snapshots: escape-html: 1.0.3 etag: 1.8.1 fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 + http-errors: 2.0.1 + mime-types: 3.0.2 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 @@ -4123,8 +4212,6 @@ snapshots: space-separated-tokens@2.0.2: {} - statuses@2.0.1: {} - statuses@2.0.2: {} stream-replace-string@2.0.0: {} @@ -4162,6 +4249,16 @@ snapshots: dependencies: inline-style-parser: 0.2.7 + svgo@4.0.0: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.4.3 + tiny-inflate@1.0.3: {} tinyexec@1.0.2: {} @@ -4267,7 +4364,7 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unstorage@1.17.2: + unstorage@1.17.3: dependencies: anymatch: 3.1.3 chokidar: 4.0.3 diff --git a/ios/Ascently.xcodeproj/project.pbxproj b/ios/Ascently.xcodeproj/project.pbxproj index 1eaa810..658b5f3 100644 --- a/ios/Ascently.xcodeproj/project.pbxproj +++ b/ios/Ascently.xcodeproj/project.pbxproj @@ -465,7 +465,7 @@ CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 31; + CURRENT_PROJECT_VERSION = 32; DEVELOPMENT_TEAM = 4BC9Y2LL4B; DRIVERKIT_DEPLOYMENT_TARGET = 24.6; ENABLE_PREVIEWS = YES; @@ -487,7 +487,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.1; + MARKETING_VERSION = 2.3.0; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -513,7 +513,7 @@ CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 31; + CURRENT_PROJECT_VERSION = 32; DEVELOPMENT_TEAM = 4BC9Y2LL4B; DRIVERKIT_DEPLOYMENT_TARGET = 24.6; ENABLE_PREVIEWS = YES; @@ -535,7 +535,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.1; + MARKETING_VERSION = 2.3.0; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -602,7 +602,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 31; + CURRENT_PROJECT_VERSION = 32; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; @@ -613,7 +613,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.2.1; + MARKETING_VERSION = 2.3.0; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -632,7 +632,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 31; + CURRENT_PROJECT_VERSION = 32; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; @@ -643,7 +643,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.2.1; + MARKETING_VERSION = 2.3.0; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/ios/Ascently.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/Ascently.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index 927ebb70af862c3f51c40b7e6a8b7a86564405d7..af9392db36c90349e60cc60d82389ee10779a70d 100644 GIT binary patch literal 274726 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