From 90a3a65d5ebd991326c041d64a815ffa5ea079e0 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 18 Sep 2025 11:13:05 -0400 Subject: [PATCH 1/7] Add design document Signed-off-by: Joseph --- design/backup_cancellation.md | 150 ++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 design/backup_cancellation.md diff --git a/design/backup_cancellation.md b/design/backup_cancellation.md new file mode 100644 index 0000000000..37f5927be1 --- /dev/null +++ b/design/backup_cancellation.md @@ -0,0 +1,150 @@ + +# Backup Cancellation Design + +## Abstract +This proposal introduces user-initiated backup cancellation functionality to Velero, allowing users to abort running backups through a new `cancel` field in the backup specification. +The design addresses GitHub issues [#9189](https://github.com/vmware-tanzu/velero/issues/9189 +) and [#2098](https://github.com/vmware-tanzu/velero/issues/2098) by providing a mechanism to cleanly cancel async operations and prevent resource leaks when backups need to be terminated. + +## Background +Currently, Velero lacks the ability to cancel running backups, leading to several critical issues. +When users accidentally submit broad backup jobs (e.g., forgot to narrow resource selectors), the system becomes blocked and scheduled jobs accumulate. +Additionally, the backup deletion controller prevents running backups from being deleted. + + +## Goals +- Enable users to cancel running backups through a `cancel` field in the backup specification +- Cleanly cancel all associated async operations (BackupItemAction operations, DataUploads, PodVolumeBackups) +- Provide clear backup phase transitions (InProgress → Cancelling → Cancelled) + +## Non Goals +- Cancelling backups that have already completed or failed +- Rolling back partially completed backup operations +- Implementing cancellation for restore operations (future work) + + +## High-Level Design +The solution introduces a new `cancel` boolean field to the backup specification that users can set to `true` to request cancellation. +Existing controllers (backup_controller, backup_operations_controller, backup_finalizer_controller) will check for this field and transition the backup to a `Cancelling` phase before returning early from their reconcile loops. + +A new dedicated backup cancellation controller will watch for backups in the `Cancelling` phase and coordinate the actual cancellation work. +This controller will call `Cancel()` methods on all in-progress BackupItemAction operations (which automatically handles DataUpload cancellation), directly cancel PodVolumeBackups by setting their cancel flags, and finally transition the backup to `Cancelled` phase. +The design uses a 5-second ticker to prevent API overload and ensures clean separation between cancellation detection and execution. + +## Detailed Design + +### API Changes +Add a new field to `BackupSpec`: +```go +type BackupSpec struct { + // ... existing fields ... + + // Cancel indicates whether the backup should be cancelled. + // When set to true, Velero will attempt to cancel all ongoing operations + // and transition the backup to Cancelled phase. + // +optional + Cancel *bool `json:"cancel,omitempty"` +} +``` + +Add new backup phases to `BackupPhase`: +```go +const ( + // ... existing phases ... + BackupPhaseCancelling BackupPhase = "Cancelling" + BackupPhaseCancelled BackupPhase = "Cancelled" +) +``` + +### Controller Changes + +#### Existing Controllers +Modify `backup_controller.go`, `backup_operations_controller.go`, and `backup_finalizer_controller.go` to check for cancellation: +```go +// Early in each Reconcile method +if backup.Spec.Cancel != nil && *backup.Spec.Cancel { + if backup.Status.Phase != BackupPhaseCancelling && backup.Status.Phase != BackupPhaseCancelled { + backup.Status.Phase = BackupPhaseCancelling + // Update backup and return + return ctrl.Result{}, c.Client.Patch(ctx, backup, client.MergeFrom(original)) + } + return ctrl.Result{}, nil // Skip processing for cancelling/cancelled backups +} +``` +In addition, the `backup_operations_controller.go` will have a periodic check around backup progress updates, rather than running every time progress is updated to reduce API load. + +#### New Backup Cancellation Controller +Create `backup_cancellation_controller.go`: +```go +type backupCancellationReconciler struct { + client.Client + logger logrus.FieldLogger + itemOperationsMap *itemoperationmap.BackupItemOperationsMap + newPluginManager func(logger logrus.FieldLogger) clientmgmt.Manager + backupStoreGetter persistence.ObjectBackupStoreGetter +} +``` + +The controller will: +1. Watch for backups in `BackupPhaseCancelling` +2. Get operations from `itemOperationsMap.GetOperationsForBackup()` +3. Call `bia.Cancel(operationID, backup)` on all in-progress BackupItemAction operations +4. Find and cancel PodVolumeBackups by setting `pvb.Spec.Cancel = true` +5. Wait for all cancellations to complete +6. Set backup phase to `BackupPhaseCancelled` +7. Update backup metadata in object storage + +### Cancellation Flow + +#### BackupItemAction Operations +For operations with BackupItemAction v2 implementations (e.g., CSI PVC actions): +1. Controller calls `bia.Cancel(operationID, backup)` +2. CSI PVC action finds associated DataUpload and sets `du.Spec.Cancel = true` +3. Node-agent DataUpload controller handles actual cancellation +4. Operation marked as `OperationPhaseCanceled` + +#### PodVolumeBackup Operations +For PodVolumeBackups (which lack BackupItemAction implementations): +1. Controller directly finds PVBs by backup UID label +2. Sets `pvb.Spec.Cancel = true` on in-progress PVBs +3. Node-agent PodVolumeBackup controller handles actual cancellation + + +## Alternatives Considered + + +### Alternative 1: Deletion-Based Cancellation +Using backup deletion as the cancellation mechanism instead of a cancel field. +This was rejected because it doesn't allow users to preserve the backup object for inspection after cancellation, and deletion has different semantic meaning. + +### Alternative 2: Timeout-Based Automatic Cancellation +Automatically cancelling backups after a configurable timeout. +This was considered out of scope for the initial implementation as it addresses a different use case than user-initiated cancellation. + +## Security Considerations +The cancel field requires the same RBAC permissions as updating other backup specification fields. +No additional security considerations are introduced as the cancellation mechanism reuses existing operation cancellation pathways that are already secured. + +## Compatibility +The new `cancel` field is optional and defaults to nil/false, ensuring backward compatibility with existing backup specifications. +Existing backups will continue to work without modification. +The new backup phases (`Cancelling`, `Cancelled`) are additive and don't affect existing phase transitions. + +## Implementation +Implementation will be done incrementally in the following phases: + +**Phase 1**: API changes and basic cancellation detection +- Add `cancel` field to BackupSpec +- Add new backup phases +- Update existing controllers to detect cancellation and transition to `Cancelling` phase + +**Phase 2**: Cancellation controller implementation +- Implement backup cancellation controller +- Add BackupItemAction operation cancellation +- Add PodVolumeBackup direct cancellation + +**Phase 3**: Testing and refinement +- Comprehensive end-to-end testing +- Testing if slowdowns occur due to the frequency of checking `backup.Cancel` spec field +- Documentation and user guide updates + From c759147bfcb7197a9af0fd854fc4a9d34e3a30a1 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 18 Sep 2025 11:15:48 -0400 Subject: [PATCH 2/7] Add future work Signed-off-by: Joseph --- design/backup_cancellation.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/design/backup_cancellation.md b/design/backup_cancellation.md index 37f5927be1..192ecded20 100644 --- a/design/backup_cancellation.md +++ b/design/backup_cancellation.md @@ -148,3 +148,7 @@ Implementation will be done incrementally in the following phases: - Testing if slowdowns occur due to the frequency of checking `backup.Cancel` spec field - Documentation and user guide updates +**Future Work**: + +- Replacing logic that blocks deletion of in-progress backups with the cancellation flow, followed by usual deletion for a terminal phase (Cancelled) + From 857a7f813ff6bc52769bc15f8896fc0c84b29637 Mon Sep 17 00:00:00 2001 From: Joseph Date: Wed, 1 Oct 2025 09:54:11 -0700 Subject: [PATCH 3/7] Setup doc Signed-off-by: Joseph --- design/backup_cancellation.md | 102 +++++++++++++--------------------- 1 file changed, 40 insertions(+), 62 deletions(-) diff --git a/design/backup_cancellation.md b/design/backup_cancellation.md index 192ecded20..5606247571 100644 --- a/design/backup_cancellation.md +++ b/design/backup_cancellation.md @@ -2,34 +2,49 @@ # Backup Cancellation Design ## Abstract -This proposal introduces user-initiated backup cancellation functionality to Velero, allowing users to abort running backups through a new `cancel` field in the backup specification. -The design addresses GitHub issues [#9189](https://github.com/vmware-tanzu/velero/issues/9189 -) and [#2098](https://github.com/vmware-tanzu/velero/issues/2098) by providing a mechanism to cleanly cancel async operations and prevent resource leaks when backups need to be terminated. +- This proposal introduces user-initiated backup cancellation functionality to Velero, allowing users to abort running backups through a new `cancel` field in the backup specification + > backup.Spec.Cancel + +- The design addresses GitHub issues [#9189](https://github.com/vmware-tanzu/velero/issues/9189 +) and [#2098](https://github.com/vmware-tanzu/velero/issues/2098) + - It is currently not possible to delete an in-progress backup: the deletion controller blocks it + - Cancellation flow would allow this to happen ## Background -Currently, Velero lacks the ability to cancel running backups, leading to several critical issues. -When users accidentally submit broad backup jobs (e.g., forgot to narrow resource selectors), the system becomes blocked and scheduled jobs accumulate. -Additionally, the backup deletion controller prevents running backups from being deleted. +- Currently, Velero lacks the ability to cancel running backups, leading to several critical issues + +- When users accidentally submit broad backup jobs (e.g., forgot to narrow resource selectors), the system becomes blocked and scheduled jobs accumulate + +- Additionally, the backup deletion controller prevents running backups from being deleted ## Goals - Enable users to cancel running backups through a `cancel` field in the backup specification -- Cleanly cancel all associated async operations (BackupItemAction operations, DataUploads, PodVolumeBackups) + +- Cleanly cancel all associated async operations (BackupItemAction operations, DataUploads) + +- Delete backup data on + - object storage, + - csi native snapshots, + - backup tarball etc + + while keeping backup logs and backup associated data for inspection + - Provide clear backup phase transitions (InProgress → Cancelling → Cancelled) ## Non Goals - Cancelling backups that have already completed or failed -- Rolling back partially completed backup operations + - Implementing cancellation for restore operations (future work) ## High-Level Design -The solution introduces a new `cancel` boolean field to the backup specification that users can set to `true` to request cancellation. -Existing controllers (backup_controller, backup_operations_controller, backup_finalizer_controller) will check for this field and transition the backup to a `Cancelling` phase before returning early from their reconcile loops. +- The solution introduces a new `cancel` boolean field to the backup specification that users can set to `true` to request cancellation + +- Existing controllers `(backup_controller, backup_operations_controller, backup_finalizer_controller)` will check for this field, attempt to cancel async ops and then transition to the `Cancelling` phase + +- A new dedicated backup cancellation controller will watch for backups in the `Cancelling` phase, trying to cleanup backup data -A new dedicated backup cancellation controller will watch for backups in the `Cancelling` phase and coordinate the actual cancellation work. -This controller will call `Cancel()` methods on all in-progress BackupItemAction operations (which automatically handles DataUpload cancellation), directly cancel PodVolumeBackups by setting their cancel flags, and finally transition the backup to `Cancelled` phase. -The design uses a 5-second ticker to prevent API overload and ensures clean separation between cancellation detection and execution. ## Detailed Design @@ -59,40 +74,21 @@ const ( ### Controller Changes #### Existing Controllers -Modify `backup_controller.go`, `backup_operations_controller.go`, and `backup_finalizer_controller.go` to check for cancellation: -```go -// Early in each Reconcile method -if backup.Spec.Cancel != nil && *backup.Spec.Cancel { - if backup.Status.Phase != BackupPhaseCancelling && backup.Status.Phase != BackupPhaseCancelled { - backup.Status.Phase = BackupPhaseCancelling - // Update backup and return - return ctrl.Result{}, c.Client.Patch(ctx, backup, client.MergeFrom(original)) - } - return ctrl.Result{}, nil // Skip processing for cancelling/cancelled backups -} -``` -In addition, the `backup_operations_controller.go` will have a periodic check around backup progress updates, rather than running every time progress is updated to reduce API load. +`backup_controller` + +`backup_operations_controller` + +`backup_finalizer_controller` + #### New Backup Cancellation Controller -Create `backup_cancellation_controller.go`: -```go -type backupCancellationReconciler struct { - client.Client - logger logrus.FieldLogger - itemOperationsMap *itemoperationmap.BackupItemOperationsMap - newPluginManager func(logger logrus.FieldLogger) clientmgmt.Manager - backupStoreGetter persistence.ObjectBackupStoreGetter -} + ``` The controller will: 1. Watch for backups in `BackupPhaseCancelling` -2. Get operations from `itemOperationsMap.GetOperationsForBackup()` -3. Call `bia.Cancel(operationID, backup)` on all in-progress BackupItemAction operations -4. Find and cancel PodVolumeBackups by setting `pvb.Spec.Cancel = true` -5. Wait for all cancellations to complete -6. Set backup phase to `BackupPhaseCancelled` -7. Update backup metadata in object storage +2. Attempt to delete backup data +3. Set phase to `BackupPhaseCancelled` ### Cancellation Flow @@ -104,10 +100,9 @@ For operations with BackupItemAction v2 implementations (e.g., CSI PVC actions): 4. Operation marked as `OperationPhaseCanceled` #### PodVolumeBackup Operations -For PodVolumeBackups (which lack BackupItemAction implementations): -1. Controller directly finds PVBs by backup UID label -2. Sets `pvb.Spec.Cancel = true` on in-progress PVBs -3. Node-agent PodVolumeBackup controller handles actual cancellation +BackupWithResolvers is atomic +If cancellation happens before the call, nothing happens, ItemBlocks or PodVolumeBackups +If after, PostHooks ensure that PodVolumeBackups are completed, so there is no cancellation here ## Alternatives Considered @@ -130,23 +125,6 @@ The new `cancel` field is optional and defaults to nil/false, ensuring backward Existing backups will continue to work without modification. The new backup phases (`Cancelling`, `Cancelled`) are additive and don't affect existing phase transitions. -## Implementation -Implementation will be done incrementally in the following phases: - -**Phase 1**: API changes and basic cancellation detection -- Add `cancel` field to BackupSpec -- Add new backup phases -- Update existing controllers to detect cancellation and transition to `Cancelling` phase - -**Phase 2**: Cancellation controller implementation -- Implement backup cancellation controller -- Add BackupItemAction operation cancellation -- Add PodVolumeBackup direct cancellation - -**Phase 3**: Testing and refinement -- Comprehensive end-to-end testing -- Testing if slowdowns occur due to the frequency of checking `backup.Cancel` spec field -- Documentation and user guide updates **Future Work**: From 359b293aa6a39be166bfb11ec937772f16439934 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 2 Oct 2025 14:03:53 -0700 Subject: [PATCH 4/7] Focus on async ops Signed-off-by: Joseph --- design/backup_cancellation.md | 82 ++++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/design/backup_cancellation.md b/design/backup_cancellation.md index 5606247571..7f70abf959 100644 --- a/design/backup_cancellation.md +++ b/design/backup_cancellation.md @@ -30,7 +30,7 @@ while keeping backup logs and backup associated data for inspection -- Provide clear backup phase transitions (InProgress → Cancelling → Cancelled) +- Provide clear backup phase transitions (WaitingForPluginOperations → FinalizingCancelled → Failed) ## Non Goals - Cancelling backups that have already completed or failed @@ -41,9 +41,9 @@ ## High-Level Design - The solution introduces a new `cancel` boolean field to the backup specification that users can set to `true` to request cancellation -- Existing controllers `(backup_controller, backup_operations_controller, backup_finalizer_controller)` will check for this field, attempt to cancel async ops and then transition to the `Cancelling` phase +- The `backup_operations_controller` will detect cancellation requests, cancel ongoing async operations, and transition to `BackupPhaseFinalizingCancelled` -- A new dedicated backup cancellation controller will watch for backups in the `Cancelling` phase, trying to cleanup backup data +- The existing `backup_finalizer_controller` will handle cancelled backups by cleaning up backup data while preserving logs, then transitioning to `BackupPhaseFailed` ## Detailed Design @@ -56,39 +56,87 @@ type BackupSpec struct { // Cancel indicates whether the backup should be cancelled. // When set to true, Velero will attempt to cancel all ongoing operations - // and transition the backup to Cancelled phase. + // and transition the backup to a cancelled state. // +optional - Cancel *bool `json:"cancel,omitempty"` + Cancel bool `json:"cancel,omitempty"` } ``` -Add new backup phases to `BackupPhase`: +Add new backup phase to `BackupPhase`: ```go const ( // ... existing phases ... - BackupPhaseCancelling BackupPhase = "Cancelling" - BackupPhaseCancelled BackupPhase = "Cancelled" + BackupPhaseFinalizingCancelled BackupPhase = "FinalizingCancelled" ) ``` ### Controller Changes #### Existing Controllers -`backup_controller` -`backup_operations_controller` +**backup_operations_controller** -`backup_finalizer_controller` +The backup operations controller will be modified to detect cancellation requests and cancel ongoing async operations: +1. **Cancellation Detection**: In `getBackupItemOperationProgress()`, check `backup.Spec.Cancel` alongside existing timeout logic +2. **Operation Cancellation**: When cancellation is requested, call `bia.Cancel(operationID, backup)` for all in-progress operations +3. **Phase Transition**: When all operations complete (either successfully, failed, or cancelled), transition to appropriate finalizing phase: + - If `backup.Spec.Cancel == true` → `BackupPhaseFinalizingCancelled` + - Otherwise → `BackupPhaseFinalizing` or `BackupPhaseFinalizingPartiallyFailed` -#### New Backup Cancellation Controller +```go +// In getBackupItemOperationProgress() +if backup.Spec.Cancel { + _ = bia.Cancel(operation.Spec.OperationID, backup) + operation.Status.Phase = itemoperation.OperationPhaseFailed + operation.Status.Error = "Backup cancelled by user" + // ... mark as failed and continue +} + +// In Reconcile() phase transition logic +if !stillInProgress { + if backup.Spec.Cancel { + backup.Status.Phase = velerov1api.BackupPhaseFinalizingCancelled + } else if backup.Status.Phase == velerov1api.BackupPhaseWaitingForPluginOperations { + backup.Status.Phase = velerov1api.BackupPhaseFinalizing + } else { + backup.Status.Phase = velerov1api.BackupPhaseFinalizingPartiallyFailed + } +} +``` + +**backup_finalizer_controller** + +The backup finalizer controller will handle cancelled backups differently from normal finalization: +1. **Detect Cancelled Finalization**: Check for `BackupPhaseFinalizingCancelled` phase +2. **Cleanup Backup Data**: Remove backup content, metadata, and snapshots from object storage +3. **Preserve Logs**: Keep backup logs for debugging and inspection +4. **Final Phase**: Transition to `BackupPhaseFailed` with appropriate failure reason + +```go +switch backup.Status.Phase { +case velerov1api.BackupPhaseFinalizing: + // Normal finalization - preserve everything + backup.Status.Phase = velerov1api.BackupPhaseCompleted + +case velerov1api.BackupPhaseFinalizingPartiallyFailed: + // Partial failure finalization - preserve data + backup.Status.Phase = velerov1api.BackupPhasePartiallyFailed + +case velerov1api.BackupPhaseFinalizingCancelled: + // Cancelled finalization - clean up data but preserve logs + if err := cleanupCancelledBackupData(backupStore, backup.Name); err != nil { + log.WithError(err).Error("Failed to cleanup cancelled backup data") + } + backup.Status.Phase = velerov1api.BackupPhaseFailed + backup.Status.FailureReason = "Backup cancelled by user" +} ``` -The controller will: -1. Watch for backups in `BackupPhaseCancelling` -2. Attempt to delete backup data -3. Set phase to `BackupPhaseCancelled` +**backup_controller** + +No changes required for the first implementation. Cancellation during the initial backup phase (before async operations) is out of scope. ### Cancellation Flow @@ -104,6 +152,8 @@ BackupWithResolvers is atomic If cancellation happens before the call, nothing happens, ItemBlocks or PodVolumeBackups If after, PostHooks ensure that PodVolumeBackups are completed, so there is no cancellation here +We focus on async ops for this first pass + ## Alternatives Considered From 4afa1ae6d2853ee25ddcc5dc55ae70a45b345191 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 2 Oct 2025 23:12:07 -0700 Subject: [PATCH 5/7] Cancel value in request Signed-off-by: Joseph --- design/backup_cancellation.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/design/backup_cancellation.md b/design/backup_cancellation.md index 7f70abf959..60a9b639d1 100644 --- a/design/backup_cancellation.md +++ b/design/backup_cancellation.md @@ -46,6 +46,23 @@ - The existing `backup_finalizer_controller` will handle cancelled backups by cleaning up backup data while preserving logs, then transitioning to `BackupPhaseFailed` +- Extend the backup request struct to include: + - `Cancel` (bool): reflects whether cancellation has been requested. + - `LastCancelCheck` (timestamp): records the last time cancellation status was checked. + +- Cancellation check logic: + 1. If `LastCancelCheck` is zero, set it to the current time and continue as usual. + 2. If more than a configured interval (e.g., 1–3 seconds) has passed since `LastCancelCheck`: + - Update `LastCancelCheck` to now. + - Retrieve the latest backup object from the API. + - Set `request.Cancel` to the current value of `backup.Spec.Cancel`. + 3. Always use the current value of `request.Cancel` to determine if cancellation is requested. + +- If backup processing is concurrent (multi-threaded), protect access to `request.Cancel` and `LastCancelCheck` with read/write mutexes to avoid race conditions. + + + + ## Detailed Design ### API Changes From ca2deea0612bbe993291727151f074bc2ece6e41 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 6 Oct 2025 17:02:33 -0700 Subject: [PATCH 6/7] Add design files Signed-off-by: Joseph --- .../backup_cancellation.md | 167 ++++++++++++++++++ .../backup_cancellation_controller.png | Bin 0 -> 222353 bytes 2 files changed, 167 insertions(+) create mode 100644 design/backup_cancellation/backup_cancellation.md create mode 100644 design/backup_cancellation/backup_cancellation_controller.png diff --git a/design/backup_cancellation/backup_cancellation.md b/design/backup_cancellation/backup_cancellation.md new file mode 100644 index 0000000000..6ba2919ef9 --- /dev/null +++ b/design/backup_cancellation/backup_cancellation.md @@ -0,0 +1,167 @@ + +# Backup Cancellation Design + +## Abstract +- This proposal introduces user-initiated backup cancellation functionality to Velero, allowing users to abort running backups through a new `cancel` field in the backup specification + > backup.Spec.Cancel + +- The design addresses GitHub issues [#9189](https://github.com/vmware-tanzu/velero/issues/9189 +) and [#2098](https://github.com/vmware-tanzu/velero/issues/2098) + - It is currently not possible to delete an in-progress backup: the deletion controller blocks it + - Cancellation flow would allow this to happen + +## Background +- Currently, Velero lacks the ability to cancel running backups, leading to several critical issues + +- When users accidentally submit broad backup jobs (e.g., forgot to narrow resource selectors), the system becomes blocked and scheduled jobs accumulate + +- Additionally, the backup deletion controller prevents running backups from being deleted + + +## Goals +- Enable users to cancel running backups through a `cancel` field in the backup specification + +- Cleanly cancel all associated async operations (BackupItemAction operations, DataUploads) + +- Delete backup data on + - object storage, + - csi native snapshots, + - backup tarball etc + + while keeping backup logs and backup associated data for inspection + +- Provide clear backup phase transitions (WaitingForPluginOperations → Cancelling → Cancelled) + +## Non Goals +- Cancelling backups that have already completed or failed + +- Implementing cancellation for restore operations (future work) + + +## High-Level Design +- The solution introduces a new `cancel` boolean field to the backup specification that users can set to `true` to request cancellation +- The backup request will also have a `cancel` and `LastCancelCheck` fields + +- Extend the backup request struct to include: + - `Cancel` (bool): reflects whether cancellation has been requested. + - `LastCancelCheck` (timestamp): records the last time cancellation status was checked. + +- Cancellation check logic: + 1. If `LastCancelCheck` is zero, set it to the current time and continue as usual. + 2. If more than a configured interval (e.g., 1–3 seconds) has passed since `LastCancelCheck`: + - Update `LastCancelCheck` to now. + - Retrieve the latest backup object from the API. + - Set `request.Cancel` to the current value of `backup.Spec.Cancel`. + 3. Always use the current value of `request.Cancel` to determine if cancellation is requested. + +If backup processing is concurrent (multi-threaded), protect access to `request.Cancel` and `LastCancelCheck` with read/write mutexes to avoid race conditions. + +- The points of detection for cancellation are + - `backup_controller` -> `BackupWithResolver` + - When each item is processed we run the cancel check logic + - If true, exit processing + - Find and cancel Pod Volume Backups associated with the backup using their cancel spec field + - Transition to `PhaseBackupCancelling` + + - `backup_operations_controller` + - Transition to `PhaseBackupCancelling` + + - `backup_finalizer_controller` + - Transition to `PhaseBackupCancelling` + + - `backup_cancellation_controller` + - Call cancel func on BIAv2 operations + - Delete backup data (subset of ops done in `backup_deletion_controller`) + - We keep the backup resource and logs for inspection + + +## Detailed Design + +ItemBlocks (Items) - No cancelling, just skip once we see cancel +PodVolumeBackups - Get and set spec to cancel, BackupWithResolvers waits for them to resolve before returning +Volume Snapshots + - Native: Synchronous, cannot do anything specific + - CSI: async op, can call cancel on BIAv2 in backup_cancellation_controller +Async Ops - Call BIA.Cancel and a timeout + + +Working backwards from most progressed to least progressed backups, + + +**backup_finalizer_controller** + +At this point backup is almost done +Transition to `PhaseBackupCancelling` +- Finalizing does some metrics calls, could duplicate these in `backup_cancellation_controller` + +**backup_operations_controller** + +This is polling every 10 seconds to check progress of async BIA ops +Transition to `PhaseBackupCancelling` +- We will need to duplicate the way `backup_operations_controller` gets async ops in `backup_cancellation_controller` + +**backup_controller** + +Handles new backups, and so multiple points where detection could occur +- If before `BackupWithResolvers` is called + - Nothing has happened, Transition to `PhaseBackupCancelling` + - Nothing to cancel or delete +- Within `BackupWithResolvers` + - Every `Item` processed for `ItemBlocks` will have a check as mentioned before + - If true, we break out of the loop + - Find Pod Volume Backup resources and cancel them (should this be moved to backup cancellation controller) + - Native snapshots cannot be cancelled, synchronous + - CSI snapshots are BIAv2, will be part of async ops +- After `BackupWithResolvers` + - Transition to `PhaseBackupCancelling` + +**backup_cancellation_controller** + +Handles backups in `BackupPhaseCancelling` + +- Find async ops associated with backup, call cancel on them +- Wait for some time, then proceed +- Delete backup data + +When done, sets to `BackupPhaseCancelled` + +**backup_deletion_controller** + +Will now handle backups in Phase `BackupPhaseCancelled` when a `BackupDeleteRequest` is created for it + +Delete as usual (Conflicts with deletions caused by `backup_cancellation_controller`?) + +How will a `BackupDeleteRequest` start cancellation flow and come back (backoff and retry) + + + +### Cancellation Flow + +![Cancellation Controller Flow](backup_cancellation_controller.png "Optional title for the image") + + +## Alternatives Considered + + +### Alternative 1: Deletion-Based Cancellation +Using backup deletion as the cancellation mechanism instead of a cancel field. +This was rejected because it doesn't allow users to preserve the backup object for inspection after cancellation, and deletion has different semantic meaning. + +### Alternative 2: Timeout-Based Automatic Cancellation +Automatically cancelling backups after a configurable timeout. +This was considered out of scope for the initial implementation as it addresses a different use case than user-initiated cancellation. + +## Security Considerations +The cancel field requires the same RBAC permissions as updating other backup specification fields. +No additional security considerations are introduced as the cancellation mechanism reuses existing operation cancellation pathways that are already secured. + +## Compatibility +The new `cancel` field is optional and defaults to nil/false, ensuring backward compatibility with existing backup specifications. +Existing backups will continue to work without modification. +The new backup phases (`Cancelling`, `Cancelled`) are additive and don't affect existing phase transitions. + + +**Future Work**: + +- Replacing logic that blocks deletion of in-progress backups with the cancellation flow, followed by usual deletion for a terminal phase (Cancelled) + diff --git a/design/backup_cancellation/backup_cancellation_controller.png b/design/backup_cancellation/backup_cancellation_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..9280e5e6bd36d6f60284a0135f5c284c6da9ab5c GIT binary patch literal 222353 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 z z?C)OKn-s?%{4-U}wniP3Ap_rJ_di}JlLQS<&YlB>ATKz7BlaNssSo|4`e~;@Tgz{~ zg=}X-_Fn6q7vQU^rc&IE+<0xg{(f-cu~YlrGJK{ymzOm$Gdp>}$QQ9b(y{lEKWe5kLhQluLjV)7Jxbg&bb>_lUxr=(H*D>;hta#2&8}E- zFG*XafyK^dI@6zjb&ED1PjS`C+*3FIZp{cfS6nlPEK}zI6{Em(0A}_e73%}RM zf3-RQN%F&~p$xF9hVc0}NP!!lVU8jEY~5FOc923*t>_F;y^uq_a{j{$@JW=_uJQ2< zG5ah4SC5_E!!bJ^2KzJ&J%0C){m-?>|CxgMkFtQN95tORIIP4|yQriDUbivK13-A#DQ7cP^au12HV@~$z`-LF5~`z9 z!pFTb8&5Yd0S%DRCafUXePskrcQ1W3J12;xTK{UUMhl-1R4Fg&3sf9iwec9Pa%`O+ zP8;4B9?HscCwx(f3FzzSYRT!a4yf}S5!aO3ofrq|uWfou*5YEw10yTw!mP;0t0&mr zooB7dj^2cPc5=hE@eNEdgq{4OG|NqW;Bfmu3)7Y!XjKnS-Pu@e*6t6kg%dPi z8-X3qk<>2rjT3^N`sp=STQV4}3B<%?q)MlHz`Z1=lQIFLt8e6H841K!=j!c0J@K&3Oni5P_FQGiL^4S~@|R2Ek^+RckGyP1dl z#trGQ7%*~KaPB)nM-iZ(G{@CAvVy#~%*NreluN%zZE*Fpc1n!9MwSlof z2it@MkLaBpBBOBx)>wbFNFg+ENu{IcJ4;+&cuS~&9V1OfFGyw{xmSQVf9p;LW$?7sx%yei#5>!T@FKVGde`M~8x zv2h^(kc@c;#D_zne@(H3T=cT7&8gObz`BF%W?$#<0>*B)Zb7qPXeoK2rx5!1VfVgW z&$W4iWH=W#^dJ;Fq2Gh4GR8SH?rsfl%#YdL%@;%tzf#(*0=+}8uz{1AL5A-3;1DVg zv4XZGtWl*fMv$t_brL%e7$oI|U~TMoqH<#ER|0s(LCE;_Puk)&h=w_z3#2^P*U3jjW7-FHNUU7@&lK^rC|>b`iQ33 zBs?t4Hf{ASqipXYzwd!IV|X%M1s9ztp}3GIX;E^`3_E%nJR7DSxmY(@>NlH`-ZKBE zddR8fuMo5-QtU}r;_Tvm?z_c*+a zckg!T!c%$HT3sX7JG|r{l2-A{+oFPgO#JbpU8sOj2>(0*7RxC}Y$N_2Fy3hGatSLsJr3RjwX*$0HWQ(ioL%GfiLs;v2O;{}mLH1i~w^l~exEwl&F@}KV zNLQ(dE`}U+Xk-LyKYW-vcX;1BtG%JceSX^8HIk+PeRw8xc@#goO?1z*5{1NRTg`w?B1NB!kkXsRAOI;~AxiD&N>%?>3vAea3 znvJ*8ytnqPjKI*R0h{liBn{4uQr+G184e~zm)bXPm4_TYHp6XhyE}VY`J-LTl;zu7 z?B*?k0S(8Q!G1n1(;kE@?Fc1W0)ss4+j0{WQYUO1X#;gtjM(IfP2SN+FqGG9WmcJXTFLYXCi;b_l>CWsb!Q(itzpS=XzegjqXeN!|__c;_6_@ zIa+9E146~T_UK|H7~V)xrqnLIrq$ugGiCXsz}_@aICL^#gkhByHpSu15YBiBU zcV!$v`Y{BG!0wVTwt2d%QEYOF%KG$^XwOLZFse(oZ_splw)Z$MEJk~mW|lrx12}h^ z00!B6I5$inV0hC9hn&jRC47xhR2L9UTO(D`8zSMsQ~na>#VF=h=NQ>{dh|3(Qw9g5 zsEI5*9#$_e9k!7bLN-S4Lhhxl?MkVup0~#r%r!a`2xc7`Gp1!XXq2)2o|^YMf^+n+ zmQ~6R?dO70o9GOeNhkWEpgny=bukYdT96A#y_+*V@T;!lIlK9y(N#+;t5amp;7i4f zj>dVl7SU$lhLEW67)mlyWt4NjP9@bL;laMEbuV790#&Rqb8Yvs*pOL=Ah)cu6zh4h zFJ26mySm$~Wm~)Z?Rr>RTH35+Z5!>!rwrCrUtqm(Z;)##7H}(L*2-jEpeiR8{rAw4 zWOS)BQ-+n%X}sno4?ee5EoWL!tgG4<^p)*Pshwgpb^}lt0_RY4?yySnF>?l4#Q}}b z7$qV;?IMhdg_*>Kyw0_I<5S&W5t^s7;2){N5jX8Vx}KbDR8j2|HwE2NCF_U$uIfGH-RJT|`vU}OMOPS=? zR6K9LGJ*H*N%o9sjy5+B)_eGHeg+uo{1)B>@%V#F?QEqWn;Bdmgd@9626sCkHO>EIu!}e4RT*8+^ zV@wQT<@{97Ace(-kiT>oij9aXoT`ts)@J*%iPNn7!&O|RsCXu zrD=kxJP*I720V3h-}ch$)!<(*`U$?%QYgpvftz5ti3|Ep{pff43rLhkW>3wgSaYQN zeRJtpL%oP*<7&$VuzlRnV(`-Km^t38+q7sfCdYZhR+27@iH&%7JUilR&)DkdX+X@s zbSMXh*HapGTVrPhM=^cby4TZ?o^HOWAbsQIDN zEyTQ^(Dfnb5Z9=Bm~Y2WPeAT6ta3!P1sx9gQxq{3Q2H*8@(Y}N5Nl_PxP8WV?PveW zA&QXTQQ}tvZ1C0W2A7@!a3@8pOJD(zdYH?(xxI6Z)l-E^v&P$|!DF7aJk3bvuksnl zuyPpnf3f!-Kv8G!+8~Z;98pwqRumNw5s{p9P>?JjISEKkl5=AuL#v?VoHI>oG9sY` z36gWS(BuZ1CNC%oZ#pZ7VF3SL7aqSXQ%Fh-@#?SN3W^ zIvVO55lOdZgK&L?yW^3?JTR*hTu{RJTB$lG*NY!h0(e-(Cw}}msoB~sy}QI>Tt}BR zRAA6p>)l@fC?;A;j;R5@@-WyA?()I*@|Eifs~V1fKJN!%U}Utq(uF|C2XD^pSFtQc zzW~t_;YahWT)+dgV^rV}yr(Q=mvB+~C4LXLW~z2h1PN5M!!6*u|n_Hz9fN#rQ%@Q}Ew~9dJw&kb} zi!Riy?J^G9F{T7Q^(TL}D3CsrVMzR5<1=--KV2>{=3uZ-1>PR6GyGzK>M@kIr;RK+ z^~NE@xZQ30xkN3nsh7`gtNIuZ*Cq~H=LF}=1!sA=mO2NsCp1ZTbPfnJmmIz%5i^}p z9T)P=M)Gsnp5eajMLS^3+Fi&Vi}Juy@-^mIbMr-0+*|ki153M*28)1FwLX1*a3wo? zSoDl9A$xlbXIk_7mmPj`d`w6_rvcqin>DeZ0FpNqlEOz0X^A!@1-Hi{i&TJT)NCAX zYe)4p-mB=apnBkS>}whyz4KJY1xW{3&Cgi1_b$qvAx^lI%=hv-sRr&;b?JiV`NT8j zuqU)!=b=gyGg49vtD3si(@38V(Jttg^qY$Se0{gs1xa63osvUohdFky$A|`Y$ zC+N)gh%V+dtoLWib$rRz9uM?BIJD|9Nto$^H}34dt(>ryk#3MLEcSwOgF(B}X2DV& zFfi+X1_myQ$@Wk;sd=HDZD`IHlz4U(BZ~F7uCS}@LvAUr6146;%UqhgujczvGtugA z5AA0kVbxZu)mYf)ZV)To)cvzSK4R?p!EVo#Mt$wdSHQ(kO(N|J?np&H=hJZloM4b@ z*-6XipeG!Iw{cKgRLA zx&vrZilwVSxF&ku3nO{0 z*t5gBcw$Ol+pxb-tEWG@J`3Xkxc?}x8J*K=UZQeUo?)o-#AL}S4F3}b9CX-m?I@P$l%8@LIgaecSpQjpk@7C@_1u1G2->qa?D_$AI zCyKB0`&(*%sIpS_XXmXoR=EOwZ5D!tP_p6C;op%dJBmWi=*`M9-;K0s^WQS{mbUT_ zxY@()0zGe0MXE#li~_B3%&Us5tOpC-`&YqD+sv1tFilb1Sx8n^V7D|&>!4RYa+MJ- zv%4ELN_(?6)J=v+s7nF3-j3-1J!`n^5zgQbBHQSZ?~=T^7@P8R+EhAd}9D{%{cS!z}YCJ z=>!=U%@wxu;Cj4%7 z&Kfd6_QIppCyTH|DrIecZD zDOI0mQD13boMH@$JwIb}(YktZ5zWDo`|+pqj%B}&j-xKe52hoSZRx-=7g%7R!Oul-On}n%FM~l#LI(!B5;&0~XRjt2hgQT-^ z0%XmsbNXJG==4v&mal{Vd{Cs8Jek{&vURk1o6ml4!C)GA#9`i&u9DDDT8z5=nUP$t zMTx$`91%y}@p(a(Eur(zm?0SJPyw8DYL-erCC8CfxQ^Yf$fS4&=yBPZI1}Fl-)ygT z%mxk_O&aWjO?&C}G#ge=LWsb$K}BB|luId_);Esy<>etjUZV}+h2PYIE~;G+jlHvP zGr5PO*LlhQ>Klh-UEb*9_L3Fn!(0C2P0|7NFhBQD&ozT#o9?hemFrv#cZ$Xf@&R*U zZ-1Dk9VFdd8z!DQZVL+w9lz4^Th|FUFB=_RLL z(=x7`s=l%*elRPg#+*eE&uy=MLTivgV*0$E+pFa*J)vCy!vJnGCop478(wNhEYn>Glhyg&y zL2BogKm#qv_Y*ZGcjH=^6I(x0KVhG2Z)ap@Xr{DA^X&MoCo@Hxq_QrixIJTY8~VKj zAQmhcaL~;+=S~Zn4Uh;Mt+TGvC`le~Kmc^Zs<4RKkLQr(JeE z?2QWosDf}A-%K$(JX{IJF6zp%L2i;``h2D_Y2;IEEN!A_Y+Jz>R&&Br7FrE-6W1#_x;rIE+ru^_6F2j8? ztd~K3`qk6ol<{A^5^nDPGvBw@n(FO<3nF|E&$o`)9$y$_h78MGk?5-gddhZ@+SL$1X2P^g68J?>B8Ao znh|XlhXoMi+rxxKqNL1U^l-3nlCd4J0x}sLqt0Ht`kB}+&J-gYsbJt4@RtdYO!LFj ztp(yl*X_Kz4`!M2yWvT^Kr_#8Cq$=slP^FvdUm##K*9vbSbWou7qr+7n{?VYr=zcm z3<;^|Wus4(UVCjIjZ6=q)Tf5wU|wq5tMRZB8{=u>H=OO_rzrAj9&g~y8xVN9M>1`` z66?Q{XCO@KnrovC8eZXKk%yy&)|*M?Ofn6-#=R6-KQ9hzOXFRd!-QlrCbn04r{p#C z=}ryZYdMXaQY{`ba#Q3(Rz9fm_h0Gna#bAcs{C=sOSMPy0ezK<(bW^DpFgBKHO|cB zX|+$DQJ;Nv#wt}vv;kA98<>QfA`+W|;>Al3yS};QqN0*_n^%AA%?P8AKl=QY4}1R@3bq7MW7#J%5zlxXe`H-`VoWl-(aPc-_sd#I zX#&-9c8x_K0-Dnc`k$N98-dPn%HB^THYicP{e0#vXV;q(-`+@LSA~e-nNe(?uQP4*g(kD@ifh>4tgTLkD$L=L4lbA^dEhZnIS`eTN67iG2W`Zw-39#M2 zYT~~-t~0<)f0A2t{SeTj+O*l z?bY0Z$lZvZUO;r8a#x~eE)O`|?d?an+a3__NRkEzM+KxPzn4bw&2Jpd%wTkMb0t8J zMf|}c{?5Yy%VDu5YN{9EUYGzls%jLiiStWF+HzW$)aHDV%*cNJyeQ0tvVU)(*O);$ zwj?5B_jG@iA!;mOV|NGr(^+}Diw}?T!PH4+d;VxSIjf6I{*)eN!w;}j;4x%E#Z&Ku zTK?2QZO#{7=gLSkHgV^*<&>`G3zZ3|6IQONOBc2uX@7sN!n`+$8-|)R<|3>Im+A(9BojfBWcQ zd(QwP>D^YgH?FEH>fOD%x_TS%Uk(osbE?mVT0lHqheu)I=ds^Tt~5JiMrQjXt$>41 z^8RkZy!3u#q$%K$|GHZv)~&x@JJs;nN5)i&KaM>vIyM&I=sTfitp}A8LMJBv@Pk+< zhLzdMx*bc57}b0aT(#;d(iubTaf<2zBNXSAJ@H#vK46!vE6#CSdSN^23QM(9T zGFPn!_($OYzIjQ;6%~bCk77z{iTdB)+8Rs@ooQY4JVWzuT!3UC%5TW~^FK>C{g0Rr z{~=@bfB6SwO{s_i4ufOoDx49u7b;{ilQEC5^00JY)nfvX73%k+#th}ysCXwDn-jro zyIXNWxl+Y2!js^R(-;Y{lk6v+nL^k_wJ*51PH-hYlrSl28j(M^Fzl-eZaQJ}m`kf! z4$?BHmAtCOz+dpg{XEqWq-^(1$FV2D!)2bx8D&i&^jeh`=I4jzrlc^*l9m-eB_<9k zO*_`w+1brTi_Z)CfyArHT=k{p6JW!`O{68;Jtx1stdj;T8Hn-aFbvy}4a^rB%kp`y zqtouzrygdV5+Hd*UK!Fun5!0#daRD!-JQ-g1+eKy5I-1mNlt2-Ne$fpne@(0lDdw|dEc94<#&dPAG#dvo6hn( zngvvrVuhAnqt}>-6J>r`fC^~f4-mOaTK`nM4er== zOoqz$#RHYLTLX4}FsEQ@_j1bvlpDTHOFb8F?K?8M8?G!Meuw{Y@6Yhtce>&0)5^22 zFW0vr1!NwSkO|QQWOMTu*XbYi6#8J88Inn=rsxR}i2mH-3jm~QCFR&`{OD+vG75a| ze11s@F!q}c2IS43Q4xHlVs$1J7Lx8ZjG~9DSz_eM8J?YlgoK)%-EG8)*TvEQjI2XB zSa6t?sJiuOUq_dk5p!S)@kjV>#IaNbbt{k<3EU;5P5cERGYe z`5|e%*TtG19=<(_OFh`y#ar3Kccm!jBUwOy?X9Mro_7N)eejg2JOb5g{%~msP5tm( zR~JRX_l1Ka)bafTJ;KvbJ0_+Qu9h5Tj(pRYp#cA^vz(cea})IS(Bd1mTw-ENBMuLf zmPV0&)U4HRprP*pY0D(Q(Vz=AFfhwB@Lu|U^Q#}Pp=r}D94RRU1LW_eEVM*&xXD3I z7)^2mzI+_=A;6dOtTELCwSfbmS`}5#>NN8`47lzhy_z(xuGo^W)uf`Osr=iX=vsSf zwqHW7Ziy5>&BV>kFNBUn&bC!?W%HdCkNzrUmsOz#X9uJ)8FqKH#F%kVR__vLV1w8~ zpCJREZfRse*NTnl^Gj>zw=z+l-2J7dM8E@Znkmh4=|V2HBspRVn% z)za8r>gVy~)MW7SDJG`Q|NL4UhQM02-E!-)Xz!{*^oV=_N(n@!`&oC&D-xa82gB&? z%{ODj1^sqE>zN=VK_#!PZ*)#|BFxdoj*xsRWKGzJhx-`9wh*mFf5v=bgA*3s7*d zzx6eH2v{ZcmzKgX9S6W+pk^83LwjT2?Nr$g4${1z7#m-ViWn97(?A(SY;n3J`V`;! zFku&Bs!3=thmSNvcWItSgp8zD_gnzUia@NWRc{))(0PJ)S$?6RriD$$N%VwTn(h7ZG&9r&UX2AqQ32%={TR~M817y z>IH{s$nZZ4ZdcYB!qs(k71UsnnOIM(m-#(6j^ZA?nvxxx9rf$4fJ1nkKQ0Qs&y^d&*gNy4&{ptKg_| z%R=B^+QWniV_58LXmb;NZc4eAk;}e@YRWkBWoKaXdac_}Y|_?IS?6mHaNacZ^^NUo z_M>sB5q@~q!QYF3HX#PvNo1TwlTd9G@`kd@SbDv%cSJ`)K|$0e_i}LXFe;-x@u;Q?XXW6-af}u0lsy(pi1zdy%YKcxUeK@M^+{sEo3cf+1mFSauF9qrP)CdbHWO* zf3KOVWPip&aDH0crDqr=yyRm)QWOp?O+*7J6=9`n`EH%O(fYxK7+l&WMDdoCm-W(q zw|;sr;@HeF7wI8x_L3K-35l4f65X=ebTDHm4_Tl4cS-1X7n;1ZQVu5#6EBDuDm{7P z`+Bt2E%+wf&?tt(d}O!ifQdXiw|C%k9Y-x9x(${ZTfiwb@!NX()!-mu`X^@|^m!{Q zD}bLM=+f&G_*6d%Lk9)c&c@z-R@PBYy`Y4buzd&&m&>vj9?n?(o2;1%q5zjJTdyI$ zv8gd!sXAOB)!R=g1Vaaw6C{oM0m&^3LF<9PtGs7JU3Qva!naZQHs_TwK5Ni;cWqpe}$=yfZ zE{97Kw-Th(EI`Bk-C`XhBg*)f#DNlHlYbJ`TI*A&1c0<}m02;*J+) ztF(p$rxfgfD*|W7yf84AZH;$W=$N#;^Bb0sb6Xu_c4^n95w01XnA#54AfWyDy}JCJ zoIL3m7Myp1gG;E{B+;PCd%9Vix){#vd>Z}RFX0Ghif^~X_`Qn0W(s1r7~s-(EhptQ zG#(X?LT+YDpy?Lc4yU>bqX8}_x}28fFj^(e7526AZpP**>N~i zK{3g*Yh!P=zg{7>gne{07B~T5^~g0_UIIBERMii6WT6BG+eXWRBu+<)!ozM+j&zhZ zMy(f1z?Kcj@FPa`o4sTHSifFpoSA|U*VgvHx5RZ?8*jA^ZR~wJd4SSTxEOlv9TMJ~ z9Bw`zRwcMUJx0pP{ zT{K9^u%8q#A(OBj|049&8?d7fozTLBSv1!u1T=Tk9S3fuJ`Xtj4x5EGCy;&cM%iXJ z>ai*XD2WqiJ&agfa5}Qbp#u_`5P{81HTHc=gSm#=>&7hY?Q0{!6~Htiy!(Oc?L`sx zXt4uUb|v7rtTzU#7;O|!(7cz}iU=_O{SCo9@?iaq1jt{X@teHo<$?}eh8w+4F%?UO?9mga4dX2F)*xiUm;sj5ZuLoo> zXUVo(vw*a4?Px0%uDMQ`i_R8wnhFN1kw`%XER2T|N_Eldg|Yt@Al5Ek?Dq>ESo)Q2 z3=(Sj`MLtYw^zNRr+0Z!HjZ;Jw+}8@s&3!^jeSf4DvXTru9nH!cHx==>T*9Mf(F{~ zw{N$Z-zEZ*z0cvy`u4cbS@s(H!@~nwd+FPGa>1T1bC=&?&j(Y7;7!RkQaju4V~Ea_ z9yda}g=eWpwRwO)1H)?hPfr4wFDkSzu*v1@7l%$?e3|3n>Or*mkKaQd5#U3hR9$T2 zwJ{*iqT1kr2QRxw71jcwqb7+Qpb+O(fyHe8v>tq065U+qb%>|1Av@zk0dF_FqL1aW z+!<$1>y)kfm{wn4h8MAbLm_(LPU?Hxla#b7M#Np8#Q|}IjcYoXgM~+gWaW$DM`TgX zu*JE#$6(Kc_UW@gqk|?yc8c6r%X=gz&hM#-C~7wnrze7Wup(~6uG^&SfV@{h3MOmaoMfCK4_KPEPRwH z(b{vNb+eDnYn8)g4c-LW*sB6Pzqs>;nOG)Uz@k*^?P$Czyx>|(v?$ZlnAcP6APKh7OYKoHdgnMr^ZJkc6g6tU~ zHdsLIyof09*sb=`+~i@wLA%<6=C7cEps)F(gdqY1Xf8X%X1!AGQNQ(ZNi|uI)R>7P z{qRAnG2!QmxfwNnbG0tZNE+u?fc1tTeOv>+!rrZS{CbA2{z|&0R*wIGgI}nXfzN)I z_hBd{Ygm*KSn@t;Ka_xz6nF7at}LZqF@W83$%%lxbvN|-Mb3uK)OwI0is9^+PprKC zK<^PHOIXwADFwH%u#J*2x+2UDPD;de?#PSzC%B*hcRa#O3-8v}20WsEqUvorj|$h5uvgWzUKg?%z&jAa*tH0{Cxucud*wob)=&cxqV zX@XM>0=XLB_Vh(C^~*Yjl2^x-%_p{fB3G8D+~nJeo5iY3uI=_pdZ-o_8+>WXIfX#tgdpBYeT{Sh0Gnw zQL{fpzi&R6UxrfT$foA}I?v@eoyn>6zZLJp%n#C~P4_o{oq@ZxrN0}n!*&FW#eJPE z$8+f8`(95}H;;)WVf0K))F$xlMQ}#vS-aO?!Ii;<9qnq%osuPUgPcI>g>bNKwXSxQnuO=r zV`Myn42;vaW+N|tT^>WskPLyi&>gi4r$nV*kcIyR=%!QGU9t;S;aX(4$5gt5O{VH}`zg_*5g#Dt#S5|#bQoF*;?wG^@BS2HU; z*_rz3VsZNPGG)|1nfY00rJbeSpS8dP~B~!5`N82AO!69V2Uvno)-0mr8$Tqnsb26d3 z958OL#gR6DHUHoPGRDz<=C83Yje3!(8sjO~RMIqiuS)@_n_ z|D;`^3dED}uc&>-Bc77lgE7EEo+%y@EXzLbD(T6oCZCDbeh{GE(H|5@*R=WB7|RL#>cUD*>S@1?d96vdy2p9PCBzrIyXBe9S%2M z=Q0POsi4p1YTN@$wFdHT(O#b+XZzdJ%eTInQns2=Y16*#X^$+6r|*}YKCYx(pI^wq zZ&v#5)X7I`YkY!T@w8Ag>a83YxM*7ioV1B{1kJC9tL*K z(nn5&nV}CYZL6Z%*8tbr5a{pGLpU+%XuD@=yh5wX52S5Zw6!~rE=A*plBeI+X8*T|-(s&PLUNupXhI6)m9* zT3nFM+uj!d+&H1vAO<7@YgA{f@XJ%;!rLVPsba1=^GlLRetvWGp#%qHcD!(Tm?e%)>I?q27q0x_C7RKUAM zwF1c_zm{L=uh4P_=)2NdkEnH9FsJaH9|t5Y?BLf58s;I18DnL!xsPvbt5}^lhVu{% zcZ)(mT|E`jC489Kkth;iGR^4tdp@u!Q3U5Y*}JTa7k%*R;X!^sD_%eTMwO~WaY+G1 zWoWo?w7nFz^>?)Im{a}d$_duUJ-NS?$1I5K19pJMWA&~>4_R_Q<&b1(yK_zMGfDhe z>~{leY>so^iD$>vfCnunt{-GKK(ml)M0q)((yAH{ux9{Mj8`7a1h0+UAzOY&pjI!h zP3E3qv_SQSNUpO@r@4#(#3?oa|0XX_?~A4YAC8R#2%{Q}$!_Q$aT3L_6V?#$Fas~m z8a{hrrD~i6K`;huXp%|f{?mD^%+HVzea=zmk(VGk5F<@}s%jejn0;{4bM5l} ze*PqT!@+yfuaMwAT?VCcyf@6KU5PyoXi@ry_dBsg@ZG~UP_0kGCmqnxeQr2SRWe!-5|-|svfcTEhH6%|QhTM^`e73B1h5$JlT*qP9EZh33zf<_)OIXA@1NaEi* zvtJPxk2EZAegS)u(5{`LFqv^zLUh zprwJa?m(wvc(Qf0v}iF++vrMub_2svCw468fXN+#0Q}E*G$X#DVxOuEpq5UQVK$*JT?shy$s zHN+!9+jQs0Z6~gKhGOB96^f0;MhKA-QfD-w{*wR-VLEkvmwDut=LABTj-I}4ww-S_ zxswysNQCEmEKCC<3%ZFHtbq=&(NXesY-Q2UpEH=8)ZE3 zmJp&&VF$P|t8;_k^&`TeB#!8^HkfOVZTfwaMeJTcJXt#Mz{`Ezh|W|pAQdo93{6cz zEwzELa285l+nP;$WVvLFVM)=^?10(DLFK+^EbwHpmmP=(eFmMjx0US2TRr6#ld32O zg0fKV709&YYRcY^Yy*uOyjBLISe|z?c|-wCGwKzTYN`dvTTr0Alt>hP7I8DQUaEq2Fy@ z9NpQdG46w%>AMHJ%Ydox9<|+wNl4w5x;U9kZMiATsPg{n*!=l7i1;#6$2sz$O>oi1`+=;1o&XeR1` zrJd0OJ5|u3+-K}-b41EAN>}6PKCEqJfSP)Da{Ys~BfN>LH=FO$H?fV6so6u;y#{ok zuTcH*<0QY{kebzc1*d8_sI9g^a7M0z>Qg^wfZ_|-$@L{RoTtrRM|JzTP!to}W*Yd0{*0DA^V%OR~#2`bHoWal7CH zELZ|4ATbCXRAWa+u%9rbg=(T{p%aYsZO(xKR@-ZX#Un&;Z<+Pa4^Bz3B zydjt=n0#`@DSNjLTT`}=Oa17QA-Y`-c)TqJ*YO1!Xc=eEF1YF7{R|9+6V z%t^)*Kn}Idy?#MMFOD;iZGWd`>8)HwfX2Zig?P{1coOPIeQ(ry)vA_3tlUM8OK=%) zvu%8{@p<==2B*V)U5g*T%WuNnmKe`;w9*(cSz0C@o&58m@g1n6A!N)d@%xV+#|g~Q z`SV*KdWLcL%Ggu($UkC14{J`_K=v|89%dE1ri}e*dSsO3KY)%*_yiQ=e#LkissbE* zHW2p8A<3ts3F64MRrEE|R^Y@O>!BomTSIQPjdnMzm;cq zm@G_EIiP|Sfb($;$gHdYHuv8pE?v6Bs7LP-I6nUIa@b)-ivd&=I|7K(9HS!5q3ej9VQ8Uw>67eBBc$v7_D zc7n_g;jj8~@udPte>Fx5-L~-}90V&l0 z1Ljsa4*(h9q0W5~`{#LqCawptR%S6fD|GevCOPxJi6fd#FP}uDit#br$qU)c=F7;r znUQ5-wpyt*3X(i)I)>^-=DbM2M6y&#ZMtgZUvm|tgqHy|E!5+S_NUlHTBz=5NQ^>k zsTqsk2>3*+Mq1F=oh2=O9^;2oIf;P3?wAxTL|prgVi8~Ah2=WWnEC_glK3hMb# z;q%Nzn+eS+ehvNcYDX&`J0~YKY7QfYcZp{4jsdC2pLZwQ@77n6=TV6R0MOoE()heA zawR=WOM}h(;U>+wLS+*Zr`f=gH!sT<0qce8|E?(A7?;QT^O$7@Dg#hDQ_V4a9r2^b z9a8Y(pIKm4k4kiw5+8H~|M#OC1e#z^|JNk;{##oDnza8H)V8{g7wx4Es8mG2TwHS| z0cGI(RP9f|xNy*buoA=CY)~892bB}>Z$PT4;tl|F{wqU^(bm$^ie3hL%|;*KPM}~o z{+k3sbMu}ApkmpRz_9d}O$ey(JqG`969f7{{IF%M7wy}lUN3x2PG$$P{E>A6Kou99 z2ZJ;|n@N@<){|5ZXZ?3Mr7wVwt~d&OXr-;I>%2<_oviZYl#>rX>;FHli03La4JN_S z5FAO6gjm*H7+V3EgCjHsqvpc0FF<`IY}H|FbW8&3%^AxAs1XR8;eghrg8ajHk!g^1reu|NQ~~Ei?$W-2YtP^#5lYDJF6G448}R=Wv+= zn})4k$)5Wp+2M~WdfKn zOcL%kIff@*pE*XZ)4tF#GNJ%D{B>DG)5yL5$y=bx_Y?B_uXQ{R2`H2)U0-4ul(%xMRtLT;B z%ao>isC8`HKb`=5kI-v!L2V!zA6@C|1(G(3(Knw^j>v}OajIWQ$It!aH6&8DGh!&T zxf*`A?rGV%ZwxKR!=koZYyALhwD~}m;_k$$7vV3CXZZ{?lwy_#XwOMU@C?;V$16<@ zUGZXH+E}ff;;}aqj3S^oF}!_$ydHU>59t~P0mI+^?afKU?N`V8Yxm6FHj11W%ZP(C zfIpgnmUR~tyI19s5D*vRZMjKh$OefPP)z_@hXmhx?P7`*Co+(7Bxv^iJzzfD>>^HF zjfNaAm17&&4;G`wUXdTpGm7A9GUX$~u1ASw=%Y@(uKsqszeGUw=mAisCAX~Lal+uB;`GB?}c;tk1Au1ccfA)o(jHJLT}Cyc_j5l3Vas-4kvN`?Kz!^xM&Pt5vUL*ugKTBTMd4I_)RuRELj zuSY#o^i-AnRuId&@)4x%hm8~!SwRc+Noj#;*ZF7KMOJ^mqlscP^+%vbW50gwh~d!! z4^Vl!{*Twy|9VAHdhmH;uW1ixFf9KJrU=Z=j*O8FG$ypqV$~}Js$ZVR1>RpB+RvW@ z80jRW@0Zwc^WW`GKF>2$@s`J{%BpK*#D<*qoU|&f1xFEVeg}`^=YI+q*u2aQ$nPC)vY;WLP{fF^Ie(>oD)@P!VSo$B|!2$P?P)^!&^;_)Nx5qY*>Aux4W z#Kz*-E>KbZpR3YAi}vs1{eQmjYqcDFoj_J@N&(h|Dz6o*4v(@n<%nJud3p)3&;e8D z*_h153H;Xah$JEs?}-ocf4m2=c)-tp?5EU@#q!d6AR;%|s;F-q97xo-Ok5`PU z(r0*B80hqbox#L{nhMZP?gy$L3`=1uwEF+a@AyAH*|A{ce?}Pke>u(m{{#Bt|0E*6 z5_C$8=!sH?FO?iAjl_s)&$Yz#sI)a!QJ8BItc9p$N7J7tKuf(@a;1`_cfoG86JrlJm!H;%4V{QGlbWIUr~fu%iA69GaFA z155|y;)VXEvU`A*o#~bvC76ck6|@;`a@l)C0yhOsK5&cuRi3cv_YrJ0_OJ;B)NIDm z^Kw<{rDm;FnX`1`_YhX?aKRfPi50&23$aiAxq@_5A(we|Js z=jVR{SXRF~iL4mGF3ZEk6*j@x5eq;1J1Jm=fG|eRkx}@sdEgb#wY5R3vRaOzV#Jq1 zo%Swpu}aJLb^>~c2202_3Bd*Klf({wU3Qs&Vy&R4h*ClR$zKABBA`1bBy66~eD~HC zHkn5YJ9F!Z(~ro`Fg#p*;xL=~{&tDEz>7y^M0BLFMX0phgHVLMc_|`x%mVZtd}XTd zK>O)FM!Y`#_|mE6d*AN0l3VSWdzo{do!KBu_XVU#+V_rIbF%d^jubVHD#pddrTJt| zFb&lU@%qIGZ9fp==Hi|BrFAvK;k)JXWAKv|`~ETW5pwZQi5=EZt;JGiUx~;1@^{tS zTPzlTAuzY4cKytjmM<|!{GI+Se{1xY{nDwTsWRHXK79YB#l>~yg==(3NXQc3i}$OB zIc$unuQjw7%om$1#yu}&L_EDQUU8NGFyID^jU@T~`}J~5|BRxT}<2OuhUGj z7Cgk;H#3Zae-4C#k7@eD?G_D+^n*rubKwq2dE+Q9^`J%5?yhf%QTjty*T1;9G6`H) z|0MdSToo68@@lGKo>ikfj&EhS;B!^C)Z^@DlVXEOWoSB z*L^bREBv@mJB#Pj=g(nzaeAlDeE6NxNBj5*>aQqCmv!E*m^(o;vfEt~owS!N|AlcN2zjTKkm+Q!Vb$yiF(OF(biHH1*zV z2Ct1aM0(Ij1P)R^38(8$2nB<_5}QqX`SRsYYIp8rGfAYe9uXIf^z`y>K0b+g|9fwo z?@R)-#)6*SQ^czSrWh~2>?^vr>1tdS)8AMj#?9U8y^Q+O^tpl2286VDn&opAL5tFnU-mXwJ&!DF9CvS+{Vbc(Fd6vcd z!qGAGbGy;Z{LC5U^XKK%1+_Lw+pwVKjdiSewlafU;Y|;h?d`=imMfO`_hkH{ zx;W-5ITZ4r&+a55y~#J}oG~A+Uwahv(&w-4p1-~g{QZ~0S;?AMo;MjKr_ExLr$3cH zf;EX|G`#Lqh30r5F*NiX%W!c}AWiZCopMa)Z_52k^i#^X2VaS;xnrAs*NmE6I79Ep zPhfd#zR1ISiwTaTg^y2f`1VN`225o-q0pHdux;wUK6qU5gPxL!VkUu3)6JrzO66r6Usj|7mADcV-eR#6Qd+nkVhS-k# zjWjSWRmyfpwSw5#q}9R1 z%5A#8R1O19A4z&>Y@j#Ao6|ii4($4j>n%lfoW}N-tH8LT@CJp0De&StN}gr_PNRf+ z*Xc+O>vK{;4HYR#Bhy%2QPr`7os?}Lm&h-QZrk)ALF-GfX_+ZGl zsaAFHOx5$xiB!MIOZgphRxh6Ysg}|lRETUKEOl;Cr>=31Pw1tqR-9QHo@b45e4Wk9N(hr=UE94Tu84FQ<`eP_5!~A{nx2ntRTeWYA z)kpzYGJ?*GrODmXE7-pArcsR8%VKs}6fqKW;1nuSO5wRs|mmi97_ zic^i4z1lA;Pg6At;~OS1yE+r>k9pUKl)699>o^>L-cp>{V_f{k&!AM3o)(0a9$)w;-bi#$+X&!^VHj^3G z>~x85tG;CauGt8AdU((3=IpFc$z!3%j_PV?Qzuu{r0%6c;~t?wY(ji|OLzC3Rtv67 z^Lw^Y>*vZaR{XT8S6MWH9h4-zj{u^U_=6`Rb^q*~tJ#Or zo4~(x%+NBH!!*ZL4#iVzF}4;K7J5&!S@;-5@e*0(!Vi7r%&aF}X+=Y(E=n}B(sW1~T81U&e_^nfhN7512M<;j}F##J) zUJU^nnPI^?qol=e=aR&{v@anmKV}3JcGyf;awstf{Bi57B$aJQxO!XRw--_y0YO@f zB{OfFM*_t!vBtjUMD@HSW?H```UXxiXrV6lRQz>VtWzYjKr0FYv3KtpFI=IG z-WbDkA4$6_Rq_VRn@av_(!S2bx|nQm9dVgVL7$=-pPP$}d>unLJqk+x&?q&9u-sugyl-~* zu2JI_&k^s&g{Y*4*LT+vtVd%`dvc0hd)n)(dQ^g4*a*@0oOETU` zN`Gv8L%1iTm7mG`DBNeUNBFcQEJEU16iT3fb2D_?XJRhCNe4N z){($z{DswN=H?5WaonSVl^`5Iyg0CVq{YsstPJ9Y3`KIn7=n0v;Slj?p8Ok$e}#>r zfx^q^!5)_$*5RPsV95gSn0JpeWOiP>e0hr1UU{fsA=F@4s=v-w+F#bSK*@5o*pKFN z>c^{~9}q-!2gIekD}LK;rXQzPF_|aNY_G<2)*oEWU5^Z@jP`2cgi0F=zyo?(S}+ySq~sNas55Lce|Xx!85ix%_jX z56@!#;;lKym}AcAW&E&Yd(~^;ZOO%#k`l%ZN&Hu;3y_1U8rsAZwp(61@%0KJy^wW# z&rxcDH682F9R0xD_9*d;m&@j27u&Z!i;aRdVsT5b`#$fNR(Au_vKVwbTUob;tjXLP zv-Qf0KkK!TFw3UKtVRS(SGHQm>$bI&IJ0P)A0EA()Fr?e@u272XN$Uaw-#~*-9_NuK4q6?qo>Nc z<11W>a#LlQ-6JBRy`g$ty6E*bXJVcJ$(V;ZV?4bZInt^w53jW!=C-S|<~*5vKSNQO zFjjwp8^~-c06k7Di8GGNQD|w{JwE1y<^Ts8p8%V&3}G|7ZbVDn4hOs07|5mrnhM zoQ8p1tknAbKHZeEFIR6A_;)7Lcq5W(@-ZQ|)Rf$rG1e@(8mLbql9YlQJhJAYLRPUU z(C}Zfsx=?rUMwdy6ZPXF-^JW^Go`$Ad;KqF$=HfoG|}SqC}Rz2RebwbJlO3!6UQT_ zD6e0?Ry6P$(q3m8BuH?X%_6FeD?{&m$;2~YT#)X_(cINjX*g>#>_wJz?mQfL}Z^QLQnBG;6H?mo+~U;WUt zSPWpEdM99L6a!iUX1SzYg^8XuO_DL`hu>8`y^_r|Ur@@bRf%AmxHS1Q7wrNTKDm*F zMOe)@(H}BZPMmxxdj`hFX`_b#kHHrEwwcxJLK4yt5%LRYA2O&i0d=U8PPWt}+Vhb>PPa;wRp`(Mn^#D@oGzXcgHW^UwjAiGK zS44@E4}7fuG>U7z^a;vb9~mZ)N(;fP)q_b#Jd3wRN)J8vdq}H#QT39q+8NhurJ-#XjPdscI8G4T8w0%eR{k^wl`Iyy=xl(5)% zOi%^wN=bAMZNvp1Yrp9e{VJBhw(bR>)T$9}%Odx)wYoL!JJ1sneTTE7sO)M!qB9S) z?36HoT|lr_t0qkPrMdOJ8F=NydONR%+RBdH@H)j)VIHq_oX4m8v~Hjw15&57cG#MO zl-^uV)VoBZ6S-g07@3)Pux(b|)6zbfx#r9Wq7Z#!`c;7Q5lE=jfMe`WUe-zAVicv8 zI_UcPbwwAH&jmA!;iF3M2QtiZ>+z@2J+c1L88-Y23>Qr(?VZ1`P7*EHdI!%$qEs0F zuB3QO462Ejzr?c`H>B`_;Z}4!3T35l0hMwkcQ!f7^@C?q69WJpEgjwWenLt4I<6o1 zj1haSjS1JIhRO!B7OFhR+mP`QN}W&nXw0zK4&315#NtoW0F6P{ndOEXQ2P4&`N-Mt zEp2W0+AwHh3O;dQUP7TN6G}N^+etYBKEINyCD?;fG)6x~u+a(%H({h_ZxD{)uB*~N zq#geUzWvJvfB4AjQRnYO^(vG(NKZ@YQDd~P<#2kTiI7Gsh#PLie%Oe)VkV=J7)Kga z{o+B+Uu$y`@sbVF`nCWo@$zdzBBCDWeE33l3-PS-ps?^66N0yO0;~5o--aH>UUrKv z|GX-D2d$d$soQMV?yFyv0(}b;BF9s3&r2Hx;a$};x^n4T!$+_6b#q_SaE)ySKwgu+ zdh^#>C|J#Vkp*Ep*eXKm3&P(X;@$EwNo+>VTL@Ffv@RmU&Ihexa9W=o9U{idSgnJ{ zOdnGmC$kj^{^C8^LS2N+#ogMWb_0EV^I?9p-z zVnwbJCNG;vde8KLNPUk&Qh9lwQf&x70W%Em7wVaa(EGpO<;%i^^*oIUi(HWr_VD@$ z2{!!}nOL%By(cb{ntWv+BX3E~_GMS5=tZf|RIt6uN%FTwBwPoa_I7Gh$7qfHL0RH+ zKEYJUiu)4_(jNB(<1^LAa}>8KuTKD};geA~L%Fr**ZL?)QEyQD(RMWDcwpYIO|HR#u7Byo$EuwkVbz;VmLf3nP8a;z3r{J%VbKWci$SsKn&zPQeu^)D%V@RZ>#2WK5XyImqi7@uV9HW6d%kD}w&f zM%}&MFR!_d&?J-V( zrfc|YvpWdgbmBh3E9*Aaff~^)WuG{Js$MW#VyvuGXxs;zA0I}@@$=+xCReWG0hY+K z=k4sjIlNy}FqrU0s79}L5?zgZQvC!t^1S_#!xl5C20os@sL)E?&n8{KPs>t{u^-4& zN2`{bArtfAD34^qd?>1d!$Mki!s~{vx`Kluf)!jr;he`0AkOj-t4lMzrM6NhsqV`k zOR^}$yja|4L|7jDWP3?C%rH34^qCsrhXo3D4emCu@KntaVC3{HoO;0hzbJ}59vec; zU>9HH3{q6!#XJmbY-{WCbip_fIp)wHppnEo@&yWNl{}=KiTto#?Y+tPn3w?5qsgVI zcp5klHCC_Z{ygOZbn-h=Mx`9$)5DWC5X*S$IfW3NdjMz>9`|cP zz@@i+QNZP=BPi0GM`nj!W`{wp_mn`fc|`2_-ey3A>j@(nx-{`}S9R9X!AM^n9^qiY zc^5D32qiD*d&eRq%C)_R_BruAuB_CMA4W=tH$wKk4H#dj(^&S6B*2orXf74rE#8MF zr9xe!sKRe%W7ZGC?20xtz21psZ-l(nd`_to&`;wjs>HC&Wa{{Sp|Q+OS4Jt>Nc;L-DGwbclZpjQO~Kab*+2O1_(9B5X_ahX~FMBx%sM zaEE939;O>(Oje~Ic`snPxK)BgLuULASw4jJ57y0;dY@(jA5_YforS)V>| z%PpF@Hkmsn=WyC6eQ5c&uE#z@&Hl>6TiTU%SI^A5W_0P0J zSqJpbTCn13ObR+z8;@7L_g~!TYga%wV<5eQG5OOzO-{t<9z}W`rBkKCXRu6WCMKWw zc)Y%Te+^{Wg|5GWz$mKqd2!vrMF~f7i~HW@y14loT&!)K_<(vl0L$=X7R~0U5Y65F z20h=1zbz~meROxC1RKfhi|lYZK%sHWrW|CLhmYjI`B9JZ)Cc(Y)lR(xRr~y{`c1fI zv9ES*kW*CE)K>Iy%sSc;Zcon)QXCE#|*2 zsTcz|IrMhoUY$FyVpc~hFItel20L)+*Qt_EMqMovD{ISBI_h71r6rZ^3Bn5Hxi3c3 zCF(ZL&x*(?p~}<>tMG`*RWi{DSCwLLDo3>==S+pgQ~lNa8=31l8?OM_axsDYIPQC^ z0jNVe=ZhjJLgqw#UEnaKjbpnUO^$zr6sNmhA6(q~g9akP(-Yg#QqVh`ZROZ7P*wc7 zwNpK=xSP5o9mU9>Q-8*3L}qGU0EsYCjDQ zNvA4}o{8sezo5^wK05_*M%l_fin^&8Rb87DdX7>LY;~5xv=dkOHA8B!94;>=^OPPX zs`LdU6|j1v_4ag}8c&Q{w>{Cj_`WD~);lI@Rm)C#>HU}G_b?!pXYR_1672k*VU^^D3W9nNQ`(oQuEM4SH!UH%1nvFT**J0t|a*Y;LEas|M zi%uq=-qY7AHMmC6_@;5I=nnoIt+x6747iEmQ`P4(SAB3K)h<*gr0aSnKhESuU@c1SUk&{M4N{%idAb8rtT54TAfs ze9rezZ=CT7U{%_`+3w-UQ*l*UhO~IpB2lyQf+GF!64zbYNr=N#zaXMXdFlpvA{dDIZ{G52cO*Ud%u>ri?$UR+Low1qXi!Ky_fr z(XPYK48!x`pSVQ}E*-pjNzCg3k3%kX-J56TX|j$yrPL~ai<3W-?)0HLHjvvBe~3tm zU`#%kdulqHR$>q-L;QKiZNJwNH0epP{UT$1_4JOZ%vy?BU=e<6SeFQ)RaW-3jx z|1?pFh={~-8$JYV-KY6L>DIIDBN+$+_trW2yIrG`;Z$3q?@e|DlU9(n%@Y3Bg$7Xz zcOMZN@zpqq*?jyP zscu$)sQ{Pq3dT8|W|r~ChHmd`hJ8=y$_kbZ@DThOA(3%Y9IE0OHnvXhqQ%!s(|r~` z140T9>1>Wnv*b=>5oAa71fs!`{q5{D<4PWcOa3@^%>t4zUI}mj)U~mUTZCa@VF1!r zFU*RpDTC3kS=qcI2bsDquGMY5g7#-;MPDkS$-#V>0-7ZBj*AsuxD1JalQeffTd;qm z1>A2Ha>e``Cb;`0isJv{M`W!n1D!y5LQ0A%iOPEqPJ9FEd(LEg?@*NsQvWkcKu8Er zXZ;RH!@)Gh`iH;J^zIkAqesXO5k@c4&ZB0dPl-Rmf=`*G?mx{BkXB$#TiR!X5si=Uyr<$1)FmKVkqYSF#|d9@gR&_FWj=w`cHDeN zn#l3tV&X@DpjqpYiU1yQY*bX(s&UcVnu}<0$*5%|pzlc2e<>mUNl_i))QOE!DgSA@ z{EL}z#j{^0eU+&BYKpxq=g+3alz{ViYb5*{3g}eDZ@#UA8 zYwgC)#@AW4tI25B+VuhQInQ|q0F8>>8!e(V_y-;j1kt?SWx(;tDeK=23nht0tyQ9l z-YEF94DssL>0x5IVcP=;20{(bI07@7pbPFTaj3F&O9^xAmzbE$!*dXoIt0hagyp<% zA#jKG1|R4cnFLc^ z%L*?1?jil$XaK};zX>M{0}(^V+WkzTC&e!PF)~Hr;o&95qnL^g3~8er0FJu;-B#-g za>FH4khQRveCdl-=eFFKT5+l3e)s8}zw#hFT=8+nX=dR!SOwl2|9d;s#8tXb(FQfDm)1RxU64L|BbqBC)O>Ud(A0WG*b zs>azNo|sUS=zp$1?{T1tPB4~NcF*X2O$##&0kBO%EG5&xTXG-G=i{NSZmIZ;g%pSV z&fWb!P^#HNm$3*r9q*laBoX8u#BmsNe*LCI;~I)hzo%&Hkgx}OJ}q8 z5f|$b6;zok)L2AFD4_M z7ilW(hV&l;ufv;(JT$kRezBUuL`yh|=>4MbQ$5sOMdoHn5N@nmO8y%>Fih27vDsY^ zd>9z;nu-$7(jSX|z zOD;`ZI4(Zku$#41{ePi&o2^LGUpW|qk>6je7X|?+c?E@6(Kvv5f6x;}iB!eZp{u9& z)pBz1gY99kPuw@(q=8kjeq@6V2fL5*@=V11kYLvm3ldKvx6SR}RY3>}sRH~Z0{lD8f!8&D%R#&i!*9HrwV2gO^nbe8{tUxQko#kwr^bzqHV%x;L zsLkG4*2kITmx=5YX zh#P7t2R>>b4SN%TA9h)hi?nd$b%768sbuUrKZ0Tdej_<)MyF54LpS*WV$3FkHnJY7 zxpCo0fzh~l>ux<#kAvMP)D>aEVj-Lv*E-0_vFfw9P^ie2gf^qPW~#kXGnM+-0uv_W-zktLQVgsKKdTG>Uuf{I!Mcz8c;Ud_{(HYt{x=q@`h)c23Y z!EI3K39R>Ekx%YTTSNnFc`9B)waNt_KqqF${>ap{RTh#c>Hmo~Fi#4>bakg65?5nD z1f*1^j_&U7NkP;i6cEe$qakY9n)4D+bMx1v;y1CF@k-5-aRKwTZmghIbcHHS+=pwu-@5IPCVdNHEI9;N{NX7vXE;zu>$ZQ^a#ON{qs=__ zeW7=BL;t1d@w&dbb=aa`p*4?t{WYA zJEgQ!k7~4Qp-0b~0}b9U>V9LEwD5$lkL}P~A)8-;WTV5Qv5dN>b_J&?#~zo2$jY|` zXYLizeA7DS=1JS+J$lilJ74iVd-VJ8>d4-jT=Zb|Hlas6Qf2#nwlHe{YT=jk(M$VZ$#jvDhs!ZsQJOPKa&Q%yEa)PX&Nn)qAemX~H$F2$I;tN+ zmlaD+zRfz(2$R-dJ-y*dq4-7)$|MN;SfV#Z5pkagi*)Gxs#Z&dSpn_E0i`w$&@+kD z#e@$5AL#k>X+asF`LD*4I6NrXAV1Qcse!)0DVqLjC{f1G#MCo$SgP>oY{X}3M+z21 z|7CzWVCsmGjD^rwr2ieDcW3kgQ6ZO_oi`(W2%`4LDpswxumJ-%KA;k5X{3E2O7u@l z=rxh(OeC+ymVyDiG$1@%8oMx8V-&uZhmxET;4Y2s5&l;+KuH1^bt({ReV|Ro%XLbS zV;81q7BNqN6P#>qS)kD>@kXLGswS@(wzbLcM3*ieBL~&kueHb=`j~6#K5f7Xq2BC{=K0zeHxY=6)a&*P1zss?)e4y zuY&V;s`jc_2W?`r$j9c-wNknHw3x%S_T!V*G~-*J^G|7;fRfBTa=!=qPD}aZegNv5 zCX}6E;v|ih9(mRA9ia6hH?Lf(tb%66eWdU5TU1#(fGL|*u&)3ocUW8-D2mEWK0dKb zWPjITXSlRyg2v2@xPoQy6gAX)5X%cNFkrG46g2Q=)3u}|@p)CrO)s~)kz4q_fz>I3 z`n$lkFq$T2)FrGDe9bjKI1_^cnd_!?u!!D+KwXqi6|%EUtX&J z!xLz62?@<~^CZ#WOF=T{^@>vk4z|Naq?ea*Q!Kz*qIuNm0m_t%{S*-qwJS5}$-~1; zR5RV>Xv@2Ljdvz(4du#ZCY-z=Ake=qzW3rlQ#6|2 zO#;jSE&iPs$bp%TYzloc1xDsj`V9yEBZn>#p*ZXMiyUj zxvW(Atf~fF3GQGzi{dLHg-a{E=&|HCvu4y*J3drgSnN7d0BLk1XHWU7|9p5f3m1O| zzh*#lwov1J(j*xdimU>44{1Vj_XQ!Jc z)oYLwpTBtsTny0+B&)5VS`2mefY{G(N;b8BUebT_Knhk9Q)wdMie{J?z2JhNb|2>Pk{m!IO13pxvr@| zdVTJ>rWieV`%lZ6@bX$LM=?a%?`-E1^-b6dzx$8+#*)neSs5W{GVhFT$0=%v~keF@D6D;I& zp&a-W z#Vo)B8mq*NZajjMt^9^$K*97?ccmH7$-NubZ_cM7SC_9i)sBd>)O3q}mCgZ)=|nE+ z0Pyzg--LU|$D7HoFO}Hi51x3OzAv`)1*s%p$kH9{Ujm~9G%*C@)G8qKFt@k)iFf=B z1_|$B*Y&zr+J~%`EhZh7n4-mJ&_J1=V`-&RvLLyEGROm_DSFMMYR^oBYbdPk`+DJLyd;|(W*dDL2NRG zb+LV<^3((OC#Jb-7JgBTU; z;Xr(B5a&**oc`lw=AhmFwZVpUTe((@cBTQNfV>2K?5gWKStm)Ur9UTiKuJ`?0TM*q z)Kj2aI)NLg<~i;AJTCdA?dp9Wz63AxR18;mAU6#3BhgE@8gZADAmSxs;igaqVKc~!W$lWS zWfqr4<+c~j{~0(SyxV0)|1?ZmX2E3f4j3=U=FCf#$Hm>km8j-DUA_!6y3q*|F{;{^ zJ$Gc<`7W{Y_-s4%h*M9~Utbs#PfdyzBU8pVrq%!Zqmp8WaMKY9ZT}4&>%<%eoIl?> zPt0@{WB7{=$Dvy@g~9<+T72+vn4zm1&h3(!s^683aZVWoiiKA`ss(1X{J4O6A$55p zTpu}NF3pd+l{x9E)-fY~ZV^qst<_;rK)TC9B7MQf{FT#Xz%fVxt@1{e(bj z7dFx(Al}X!`#7RRJsL>fZl4v_91W{nhOUl&;o%g__#HCGY$Wh< zc2GY%@t~i{g3ya}wC}J+WQI5h4n;-cT$NHu3hFU6RG&X=@5sB|Hx>6IfUm9!{VE4I zXU`Ngrnubb9D^hOnN(MHXy8a1i zzDd%P*9l@|nb~lS%XqF2*l*1+;gxr=aF?B{|>bQ(&Qaedd{lRX8Jh}F?lpME~5ef5&^ zp$3f852Sk`W14wEdAu9vXIkhrD_$F-0?vnq&7v#D>zT0x6LSNSRmPI~FEvB$%{B`9 zABu;h@O+1`aAvJ`x9u5CT8%1A^rC$wxy_ojb~qUL7hng}D>RyRBLuJMHjHR@1389{ z0;snC^g|vesNH4)$(vOt=5@pBy9hG2d(Gg4=11Fm6;w1;{NVRhSTkUA4-QI50CV+2 zmJ&|916>`^2rvcQu;KDYq=ctCD8&JyPH5GQ)z08nD4jt0F0~3{UEc_Eocu~}_TCn? zoB@=bnW&C))Yz$VA|Sa{C8Jc7Gwh~@--tmi3lpwcBT{E)>`VVs0#1jOWB*-hMqrpu z3-Eu+UzFk}mi$w=IyUZC{nl8SDR^?1WOJ>wL~tkhDgpbx*k6>2w_f$B;~1d;o4XT`PIT%d2dn@>UCtXEdEfSfc%rH1D! zQTao^e}Ac6s(I;`U&($o8EG!cHg@Q20Uw%BIA2en95J$DM4d&r*3wZq+ZA_#T#5EWuUjFYno>{Fzq3^l ze-+H&IVJX57e#kil~vCn0+OThT}A#HIV(O>MAq8nX6iCf#-h3UqH)JkLB+6QGez2; zpT{jMOZSg*k%NWq0~7#azKHz?LD?2fg&B%d^PGGF=j89T3=PO6N%8UUOg%iEZrt}Q z{87WfO@0FACaF`7@_A5Dm~!y6s+y6R)#cNFYS#60o?N%+u9VPBy^U1TD(klh7j@u4m;v&#BBan+GDy@ayPNQNs>6)Kc)xdZisKu3pb$y!j z(nvq)<^#bK2)DrAMcxmKCi;V)m#2;gn`=fuG6f>Q%`IB09&t(*`2`P4CavF>{dVJ| zd&4G;PNVZC|ErSd9&;=fj}NcXm*a`qdH))ee{S1jklg#|Q4*1oUKN!8J>WW| zSFfEfzv^(Bu7|8M@itwjCa63Th~5L7q3!CxgN9C!B3h)gI3SKaCp$F#VY38qE**(W zZ<7W%oi8$9Zcu)e{blBl%!T+h7`JHAUos}@_hjJ;)invq}Q2Cav-w$&*(7(O!FXzM>ljx*worU(#z;gcO5K1;T|iy_*TKsC(ldio@8BH6K1kNkIbn zr|RLhTj#DQDJe(DnX%Bn+a=CWi(F^!s35zXa^k_-(aVf|pe#_V$ zPxtiyslCky<{Dm@As{R%=Wt3{Y6mgb8gTq?4fbg3QHHF#LEAMXkTH#M%i!PtW6V@F zE8%73@gQt@=QT*EQ9Xc1<3tuNXf>fn%wFi_ck58Q{KZ{9z0es=X znVielQQ%3PDP{Z_h0{_Y09R62vlCVi~_3beOm2dbI9uXNA< zdy)>lQh`ps-1Gz1JY{kIk1hJ(*R~Y_`Mi!)(`k#z-`^7$BsXo{%>i}NE#_6*D%nqdD5c7FP_;w90|H=tXseA|L zGX4ij)|@24RI&T+3xC45W*dlT`#`!4Nj#umhFi2Yc|B0!w9J1y$yg1K(GE@^5%7eP zL-5ZFUPlZ`DXFD39W*Qjta@axqCcW`ZoZce0>Doyb?tOj00ihAcDGW|R89u(lH8V6 zvUy+%eAVKzl26gmkATQGRdcI}<)}(GTmHjTv6#k_s>0^v*IC8-P&ot=d~3MxvwH+b zSZ%efJFR;x#w#}N><&IZ9{d5CNj`GskZK&iv<5m_x^!9UQ6Ob#z4~S1=NGW6d3b)~ zoMdwnQ}wd@b!@Ng!4xN9UjQ#hK>_XI?g5k$&|fVO01%%lm(`yGRaY5#4b?;q7aRRO zpgq4*TsAf{yAR>kP!;djwb1hchsA}T&GXAGZB2wT zx-Ud>f>4&iM!|gqpc8;=RL2K?R*S71H7Vd8F6M-)&-(%eYOY(1Xy8QnP^GJ2i&nYb zUyjXIjSDXF!He?Gc)p7xqog4flaTvvtL`aC88(cY+M8|Q?L;H^tU20;3s2G1e(aHT z>H$3TW$5ce>I12OU@73W!V?Z5T`_Kh9iYI-zM+IpYmk76VpZ)1)<{WZY5U5y{v#!~ z>HdmhnICwLEIi9((`4NtN1uqu55q|L*J{!51MhF}zZV-#$8e?6*PMcQ4xf%N6UvV=00cPKgo2{HOi};n6RXK`5m7;LK(3 z?7l$DPoK>?$n@7Z-epkR=B&X_;-q4{#&RR!2|R5NJga0<6~5+^h;cJ*B|%;|>+}x~ zw_pQ4VZRAyb@r6b;r8_a$Ywy!ifoBu6g+?O11A7BgiH`SDAc_oe9YAZic;*|nq$;f z;_lOAh0cug=mPOyH>|{Y@z6Eq;aGn8#UBXszFhL`}Af{=-@aPvKm2+AKE z&rX|L(kMfIh#CfoD!#)|^YQk%fB$_vUD`X`4Bwbahe#Hw1f%QQgC}44J|x_%SuH{* zL-~_;Yl?Pn-!vSRyW55Da53|ko8Wcy(O zPc^6v$V`8JjVIOE2&pOr_0o%i><7LttQ6p0HW=gCC}=v|avqjJwH2Ya!9-M`sIyi5 z2IR2+Xdr@^x3M5R^zY*A)o8+&7yBZF096v`6zU(;kEplwNjl21B^fKN$U!D_O$R? z((&^%G=dHTwgd5_tCLl8M3MdOe3cgS6H6z8kAGujd7j5{+`Oh>gUFNzd3i|Djh8{> zET*b!rf<}-Qp+=_0;R*QtZUv7Uu-hlPHGbeZ)&?23{PA7Kf17OUkkRKDaTql5Tq#I zN}dlvddc5Xs;>-`c8lJ?0#gs!lDCoc6t;`x=$STC9d)mk1a*wNzZFhz>_$o9HstwS*5>%fj-QR$G#WOs{W=xmnS zS^vO5Naz4R1s~|syn5z5hwBA7&QWbJy0N+%-UAt7m7#|;hSR>;}Ho$Yz?y{Gob~vOj z(-m4oE2efk``JVESvVSzy^#Cf+A4mM(&Sviz||a{?ZkFg`vbJWuxa~^j(UIV_JDp3 z{n^S=uE0qHBO|t5dz~e|o0SReTS_CoE4?{~D-Xuqj2fy%s59Uw+do}}M=;CqGD`Do z{KEO|uc2CeMLtQ#c(L?gWw7Z=?W1eI)L|q=iuHl{3w|Sm@AjSL=R+l;6BmX`fQ7vq z)3GSQl~V|e*dDhYBe5z9$Y6>@eD)s|F@*EqUbOt`?GLv!oSj`WrveMONYhPe?y4>Y zdWvhdefizHK}w{cpAf;Dw^^p>+VJ`hd)36%!Z}9U>i%LzGO@%ay!XlxE?szrbt86S zr3L&-ulX4mPPZp1I>YdBe4n6-IR`_+{`?71EjCf3Rcj<=v!2G`rlx`aRS3i}a#>J9 z?>OjZ0Ut{?r*e@R2}4um%ZdD1bZ#d_k-`0Wy@MaOwg;b9XV!GW?Hm96c5ymwLc7{h zS4A%)zSYm`ny)sM=+mg?n6RFDuF>0*Y5{RIaOwtKsply7$C)3WLJ86W(5yz1J^Bw% zXB-)wTfR+EbL|+v_iv$~zt-;v1%&q@Y^>!jx_2#s8 zs?<_LQBhIEQA%oUeN70gKfNXIMn<=_V(BB~fS8$*G^UL{%@=vfMd4B!;%Ro916%5! zNqnFD##-$P6YCA$>Q|~Qpw)_FW?0Yyi^+m6y!HBeYc@+oa?08vaUa#KAGNCUgnj;S zp9zYUNlYB;xf&|y0z;ksxwnJAt2HoyIT7W>pslD2f z6V5MW{EhpW)yor*9S`fd>MypVQvEP?O)&kSBe#&&>p-zDAK~RCho~I4N60%Pi7{41 zBgLGlAobVR^>HrEaX55dmS_(yvAeuIMayT;xv8DUT<4WrEQ^xoLF-1YQ}47OFU#HH zs=>X>N#<`0hDSuN*x4zb@tVLKVuz`PHIY}dslLse5I0@UYaWIYSbLqFtofn^!EP43 zCLokbf_C=ydgnu5s}Dj`LiY0es!!Rg#$91QyHZT$s^bd>5vRUQ!^@UV<>jkuI;)wO zS5hKy#a2xgN+6OB^6u*QBe6LvEq)TQE>Is`IrOfC_t`@@#b+3ZPqD*vkF?sJZ^AMG zWtaXa_7JyXotn?*AGiAWM3EouvRRmo$Gw}qYjbwD2szdjaN8Z5F7#L3fcFpf<`uD& zvZPfnfb$%U6gSG9TayVi+5xkyc@npgw;B5td;;9yAO=WqdL{%=%AI2(&yUtr%OPF%E zhgom2z)N2?6TjxB;C4ISs+`>|EoIX0RN*HexjC>UlEog9dzQlTD&u#j28=NF_F%@v z@-~%nwy_~uE2pQIW@UX6r(K2NLT=6uG&g1emO+~9^cPzWt_d#$Ugs4Owzrq>auC@R z1i8J8jJvp&C~?^inJUj<0Tq!`v&{ui_7)kQB|5zO&Un-Qf~8oyw)fG@R8%*X{#ekf z5)<2bU;q7D*mCvmZQ$%0F|PZ5*p|W^NFutgE(5Q6x+mx6zz_n=De>laPTu(p1R`3% zyA{^0tZ>}$(}#p7R+e9!r`)WGx>vrV(1#bMMJVo~#GB&3bw3(h@fDRZEo1EZ%}wfg z@(mUYm1_O3 z`lA2qdbje*waB1OwY3uKc!||brbFyKgk~!Xh9WU%M6xhY;(BV8?&GBqA>;2o_(urk zjPOQ6pfI%%CVUD1?^Kq>s{lXS^!E{dR46yqa48oo4()leva*)gZw_SV=9&fOBFsn| z8XA7L>!Ctzgv~=e+26<{&wawa=a65hd8FSS^s0Y978K_Lm7qb>smW(bU#!%&=|Sad zI+PboFCU}e{k@(Xyr{DCzQx`3goTBpVy&$XZd!b=IzBy#*lrF%czN@GTzmKbcm>@( z*vllKxg`bOnVGrys3y|8w9-<1*kTpn)91Aw6tnmI`V~a4*$16fxJX0;N4BAXfsnMc zG$^E!RrlOm1pLZ!>1kzU1-ef;%d#SLm(~r+ew6@QdhY~W_u3bC>)45X_g5bo!l}sZ z#$D~*|NUyh|Hp6iUqyRAi~ZLa{MQ)#4;%f=bf>_sH-G*5W%3OMI@S?1Om$ZTR2}0oGl-{Zceu8)8ufq zTz zsxRQtLUHIqzzaFV-bbMO+oj=2Pha02OCWN89HSt-lR^Al3xLPQDIQL9?nnKmbuiG% zO@H7!C-{0|B|fkyceTk)i#=~HUvN8Fy&%DEqSE?%Fz(Kcl<9Z7%2`!PE^n{s0y$-GDk;q>X9laoGtGO0}hz$%eb zQ!jm;Bq+mAEC_e3K8pkr+KGMly1gKBDnh2O{vo*k2!W{OuAu-64IN$h;c8b`2sX{k z3168}e~92S&U8(X5Kh#6*E)fPhMGErrl`JD6KXr5W{e109jxB9IvDyu=y5!JIHez1 zaZwFA05E#pUQ^Q3TOEOh21$42^tZ?gn{F?E_4ivI*%tk6h5)&%bN!Bj5%{OoV8P8g z^nv@44e(v;$Y9e|zH%iSVtiJ*@=`N44BUF7I^bp*Pvz z)%&e(CpRy_fn#V~MVoHwp-vIJUoOJdnz*?5N@*{>`Ei2jXlBRp_9%BYDY)6)o)Pl~ zT^u>~ire%~_ok_!pj$@={9V)2$xx&3y}SI|g8~680#ssphr=&==3#r3D7?UxS0v|87Z=k`jZN1^r6R62Jf+7sJQmr9en%=xT0WVMq|Xk%a_U zU0VHjBm0mG^gmyX;NA~fSy_Q^4pVpockqLG*AoSN_5Z(CV1^lW2nafZ2N?_>pIbLH z(9au!Lhp4ohyNFQ?-|u(8vTpvILfG$u>jJ?1_}ZyRa(YDL_k1#2NkIy^w2`F3`JT* zK%_=MdWqD~QE5u=fdq&UX$cT&0tAx##JT_b@vd_|oNwnt)^aTu$@@OLSy>OwH?U&>@B71i}z8l1_vtKJ9VnA@lfVXS?3SB9pzgG9TXdxI? z4F1}YCIhWH-0lBgWVip98vGxi2EW1**aUr;(Ea9sz%M0~mbLMkYikGJJ%-KC99cemk;~aB%t* zh~4j%CK7WL8IiaY-WHx7)AFb^Tv`yir@#Ak!mG%Rx-<071U3;K`^Y%b5ACBz-fFS( zJ0}XWd<<%NlO+Qn;^FQbB6Kp$feIk6G@ECpnUN-cfZRs_9r^(k=-Nqjy z1_t%SX{?c`Fh4o~SIlUF#+hr_qzrNvv|bf3N)uku%mOA0?a{ z5&OU=e1$_EHvM+(?2)q_E?_{);Qh6rB}N@}+zul?5v-{T)16}cK;b`#Tav>Aedb<@ z*a~78J8P_@wDOgetelT+&6rv*MDHf;7vNOvY+XF zFdL=R8Y4Pm-lFK(vK`zTVt+TY1ZSvz_} z7R5po+~+Y2LkS2eay17Dqu;xGVD@zM$Lw`1@3RHXySAa*Ym*Y36aH=)K`W6&8RpKs zd6id)W^$9J60N#w?jucv_skhc{c^*Ev8DfOii_C8m}68SI}d_TvT{zfo7D}gnoEw& zRKrs1My2_*bV{=%=QQ)fg$8{sJTKP~*>u(=ST2KPWWU_4K(5{a6L}c4oSqy6)?HWF zDd79fSx1Q-={5S=(Z3^C6fO#fE}-BukY@+~Dth`J&MqKAmd`nL*$)iFqL{O02DSzp z?g$e&eCqI<9g&Q>gMpo9J7U?M#foNaX~_V&ywzB)OkC;X#C|7Iwq`pPa+sGy6|)Nv z1@r!fADub!NrIKks)rkN1q^Ybai}*D+Rji-;b8M^I#cE@p`tlQtob;Q^RC^v7JD~@t$pdq<=nrd zTXiWIF_uWJXuIE$wgXnawfPB*U7BxLlr~XOb(`mg#rYo7vZ%^ceC|yMWS_Ro%eJO0 zwduWu`zcITfJI@(OXKChc^obl7RIJ)QNL#Q^&oRze!Vai_9%&cLaef?68|%_5ock- z-D4_=vk zY1@%9sKL|*(awMW&pfLq2HIAW)JjuiW9Udk-Rc*_T*6{jVHJ8&+1tnaDQ@%}F;Og} zdh+7pI4tkhR^H-M>QsvTjKFClPSaw2KT}h|212{ylkQu$_MYcM&T(8v7e(~ji#=+<`fJTOj{y}P2~)J&dIRf=Le6o%Mxt&?QkO?sEoeuUevPPd z&dXRCopiU-)=3w7F#l}v9xAItvfO?n+QF*>9VXmEa96Aj&;+5{o24w~IFNbnT-TZi zZ)Qm7HfgA;gXaDks zf*9XQ5J0!6Nrwi^<|Ux8)r&5D5%7(Uo)!a-$GG>IU|{@cPt{yeic?3@$;3G*YR~XI zw;yc$0wrL(UTiL+k@=^9f`_YVt8SjvT!IrSN;50ulKVcR=GF&&!nFTB^DXrNGoBCH z8cGRdR23?o?9o`Eb(fYuEV=PHkr~z67kop__vft*k%CO_`pG+zlH4C`e!1nAMF{L@ zY6!YX4WkYX*z8!GD}gk9)cVq2Zkxt*&7igMZH%Xltv=#w+@D`n=-_hSwaERlfatSp zxEAV#_efV^yc;g-Q!XR?@` z)9VFRb8HF+rCQ)y#zx26?Xm(CrJCm6nm2ldD4VbiD*YF{XRfLn;oSFnG7T(i%hcB( zw7BCNxdiKT$|Xil=N1+hI*#Uc0-O@!(bP>l%N9Q)eQN8pQ8~UY(8xM?XTAca&{HOp z<0E~MvQkbbdJwZTMF8oE%nDR7t^TVH`oLCi&E2WD->T`RJK{%{V;rK3K#7B3evqMY z@xctM%QkrFsQ`)yu{?4Ox_(&N+q*<))ZZqX2u@n;4D?%Xj;DJq*O-kqw%+`^;ny^| zGT(2zClgW<1-O%yXJ80KTf;7iJEi?N>L56V%IQ`N9H7@#=g5< z{jyKWpCt_qN?BPl%I zQ~659%U`#uZ9G!h?j>G76hVYK1}`M(%kG6*q^8~qZGZp%reo`cN_{Q%$pY|3KIP0_ zeIVroj9Xd!X$QXKY5z;?Tz@1brZ3Nm9P35Nxy^6ZEsPV|V+U+L;pxBm{*s2(hS-;1cbB|G z;vok+`f!|Cxs8wvU{w?TOHp8&(dD^suQ+4ovKqOrq!C|;3CCmn?|esW4<>B9Lff9T zIc?}vsBsUJSV6eyf<~{nIP}5e`O|FUl?BSVqcZbTfl*N>jcm{P*}k}c2MM<8QEo9XQorngfj zZ9y`yS&POuhzSd3zKpS-iVDfS+4^A!y5+s~bo9;aE!S`BitgP8USH zPLMJjy48%q?sa^tJCh483Nl5akByGDORv@4%4`0}RNGkfY2|yx#;zSGtt`Rf7uJHG zD0OwTAvPi}2D{3f*wXLpif4Mp-ryT2?H|EuFEZt>gE4cTQ^i7VaPlMmZl*N1xOp9H z#-|e#Wm?YLF&G+N#OAQrz!={9pj)SeLjT+wHVP_a$=oRiU08m0znKycxx1UosIn1L zBdc>rHTts>GR|mpe7v)%qbU0+Wv$s#c4ja{dkzmvFcp?Sfogpwl=+)8Stsk^>^pfzp~OXuvx$gOGOh2{>Hgj zN!yAWtn{&qOHSz&YuO9m-O$B$Y@u6{ZWGI{k9*+$>@k%>kH|aBJsCp#qePJa@LuJb z(HaWw4P?>1tDuucs%qq-iMl-ZLi0B%B5mYJC%C_8{4^wVzl@@A-JE3k=zZl%0Cv82 z^~rGPIV0S-yDRSQ?Z&K`>D)pqc9OyeT~aY}vDHhzW!Fs`?*#F7tZIQcWo-{7eFzwb zN^1a0SwcSMEb;5=FM}<*5m(hJn34&(eE%IgVRgrd-Dab7=@H3bRI;*)v}QX#s_y5<@ue0f9W(5w@}X;sP`9T;>i>9%ohdL%le-V7 z>qCA>wjQ1ZQ{!nSW#wES%KiYw(GPLDGt3WlYpv)gk&soq*VkF2^y+(lKFi~EJ1-y| zcT#Ns^jAGd5j}2^j&av>5de9sioDv`GZQh-&5f8Z`UYyx?P(n3xzsyVbCInrN-cYd zly++LW)fMC`9srEHq_nkP|Uzzey<*WY(hv`JZ;ni%U5JFHs&=JhixCX;k@oD0l=!v z){OQ8edcOgTC>UBd+mkUmyK{~TRIn>Qy2ce2q>1=xy}_{)`vHE^E7KS&P|%xMLF38 zX7|6I1g}*UMhUF#+uR89@d_qa@!m_huXm2nBq=9L!o6J2X<4sn%4yQL`@qS6h#878 zIfMjFMcM~^eVF=*5B_}7Yq0Ln{$PCwsHf*i zhxe?$ZV^5KHd|O;gqRCPWl7@2YBg0OonX_ZxSWb3xL3afgawOr$*w(Dbe=l8F|VI- z4g@9=T<68C;MvzsSKI%m7oa}CzT<5WT?Ittg;9^cgZF=q@C#ycvQ#gif@dckSBrSh zRQQf`NI~UOjY6t>-*yj*P}=@{y0w6Kv$+2)#9B{9063Qs^qDG`_}AhOBU0F3 zBZU!$2g?bq<1W$!gEPp1G(Ohn4AYXN;=2Cn!kuRUvHU73o$Ppp6Wh!96?z~;z|vU#m!mu4FVIG;VWDTTQ7ouY3ajwo2OiFw-lDTMg#m1q}TOepL9 z;qA+p)ndM6TG^_FTXIugCqLHVKcW+A(;n zz%3=lq7IYKsumWPve3%!!_&fZIz=*G!K}>L_d5;9>$<%b{L{(ed9Mv#DL1%~WQ7=n zc?5BZrO|xPCek3+{Nj>9K^!`MLBTE*wk_?>V1y%L)I0T~j%gM|q$8r08Pvt3)VGTd zA(!z!Dx9+5(;-+2$Gnq{!xF3ox8B`|jBv%no`ahAKlcA#T2vJO zt#@VJlIjR5v$x1KDdg(pZGxDd@)OH6aqZ;9%yYSsaj`>f_wToRojJ3yKuX?dq`SwY zN~@VI;*>=iAo;qgw{8mr#4Gh|5iI#^NQ{Hg@zLs_-cqR|LX}W5N7y@AM=Mo&t)s*1 zv(Ni;byy|lBaEw;FYllh<5rc;jUT-quJs}>$d?seKSi?m+Sr_v(?*`a!z3kiQ@!rE zev4Wf&hue<5Z)X;MjVz7y$nQ7wI01wGW{vzEmmL!Ymvnq?;a>aL^L=1o zLZ*p7YC_jazQ(zfBi)D&m%QdYWPW5d+lMI$4kAV*3|Ed`UAkjYR5da))SQ)?A6F5mh0A)ttB>q=C=9oUn>vQLGR#OkrP+Y3s2$HYEXmrd7|e<3Tg?$u_Cd?Fkw zUmiocPrV8&o|z_xhVk66I-eZZ`@6?Cozu2jE&>z&f5(u2bB6xHo$yQ(W&7369oX&h zDFvR7z(5$v{X*8{;L94O{#3v*|Hbs%sNx>+RY$hw3KMA)CGDy!Oxxg}i1_S8{zr zxtLwBRMwQkK<`4(+8D1PE{G?uzdu;>*X6dLP|6HHkCLv;CT4q5EihPA_?LpTglS#NJMsK^bxxCpST?!b&G5Hn+KSkQd4 z^(Loq*yG#~B;=qlsTMWmYtsvThW;Ayi;lyw6k-Hqdbl(cgm6^O*YfN3A&b0b9TB<$ z={9VVBPCV?-=^mOO0D;}F|msJ!uo2~nv}RV$QP3=IGg>{+jQCp8&eWhL^_j}xZBMo z9lvNBc+pRO>oH2q5pvG|@UTS*#$pEUyDf24GCR=ay8IB(1jNEy=2~6-(6J6bC!lX~ zJ?#113^{i7heG0+ndlb!iHaPa2{?~~R&wr-&Kch(10~WiM!3%G<=AMUib^SQ{DhGP^uJ*29XQUo% zd+{*Qe+22~* z5^Lwe_l^S*#|@kz0|SdQWO?@}mYdnjoAug^r%#`cJa{OU-`hK7;uOHJf^L6G*a;<2 z7+rS6Y$svlF-;`$XvjXxC~TrN&J>t=3DR1)WEI`@{PZ&5-F#kSy4Z0S6wpzMv_?Xd zeukpzOxU;Cp+|oP^0tiq-vq{xTr2eF;=+A6+$1U4tUW?ffXrcHHD}+2 z64dVvRhq%g|CJ4PQGgdiVq@-LR9)-RB|Z9&?Qh+^r8LzvO8aGGoJLq3V3;hgcrRrj z${j$T{=nRXLH%WUx5@XFasRa1c5F0nF(pFbiKm%ELSFmUgN(D1*9g2^)!&5_Jm;iKzjvS2uL5Og;sgaO5R$c!G z3vFAdsXhWtEyWE=rlq!gTPZhUc^6yHvbc;#srm5ZPa|(%C$ZK&6Q~%Lx(>Uwx==?8 z`Kyy%z=DFX!X$UjaqAEPr80ck_qFL|-S(8nJr++--~W=tSKBy}mx@&oRhAHw+WU&N zUw?jAx1mKwg;^%&y1u?U?j#+xQrf9bd{_6QcR-;*e<8mt-F_Z77Iz|@j^r00s8Xyr z`kx>7L)ZGz=)5Dh|AU8>(v`Y7C?S3zY};rE(6o}y?!ND@^+R^;z2>n@F$b=m={t<| z+_^=W&_6G0N7NQafTuVIWVEXR;Vt7Bai7UBc$g`hH^Wy}-I}qIQMVmKh{~oX$<`03 zh3t1BTS8r8`EP@_ydyaH&)V&c@}_ZnhA#X>c8zKoSvGfkUcak8SHNq-lgOo5XmP02 z1~5)jQ1(uFmRDe`(D?err;-UkqB0LV&|SO`M(Vd7E!BjUTR;kW?XyA7LYmfxuZdrC z8)-O#i)Kw&AJk3-Dsh9T&q^i1D)jEtx3)SKpRUb?S9ta0i|&ZXdp-#M@rKsH2F#2g zKj^OS(lnpJZQ1h1pPCz+z(RN-Ch|Ikr-?t$0q=*G7E>1ML<$NSiR#7Mi?z1S7-7u)b^RPm*B9puH#rKUJ`yv&PvI*-HTmNwmR zaCAWCxcBkXffXUxB}iq|(M7`Iy0XH=$4l+-KWe5McskfP@2KdhQa?@<=regjB##JP z%^hzt2Z$NGJ~6^7&hE6(>Rp`Lm&HOqzLI#kZ3R5VQcJpDDZWlk8{-ipl$>l}WF=5< zF*#ILXthnA76S=EuOetV%^bLT6*Z-@-L)P_A!Uin!1dVN+RXK*WmV{-LJfw) z9zVm;yphIWC!!_OL_9pq1%Ui~U0S-bWHBmvpOf#5`U!S7EbvoD+etgnr=Vi?l=!aC zz_dlx&(uWY{13NUu6lwh^k>@%4tLCae-<;M%=TARNLJnh&yVk})$nsP-Ci2M z9KkMl9(ejNuW#&HwEfBsuNiLU*bh35utQ!_sM}+Mf(o?8-McT;w{b66T^xgY`&9Ax zmgeXY%QldpGu)eadw{4oX;0PZX>RmgK6{ML8TBHB?c+S-43M_FGe;1oTBBKgj7R=& z=iL9_8vJT!Jd!py-paV{4%DQ-o&WcxvsjzW+zYn1uf&-Q2_IM->)Tl<#sL353qgZ} zj`@t6^Gi!(&6<{-T9rEJ=1W;&J01RZyxe|q%3+)7pik<7y~*HB7JR-o21ZvN9+TI| zuJjy2Zq^56-h6xE?Sys1)!KLNahu&j38+MYy}jeNKGb=z3*Wrf0GHJEPxZZ|GZR$R zFRgLulJ-7V>}AfhjCWqtDS0xzi}{tN@07TcDf=V-A?Y|(S+;5 zbFo}Pii(_g=8xUMgs%GlXM~KeY8hHt;fp$t;v#`-@PXsuf5q6`$wSa{ne&$d)$0y1MlN;rT z?YW{tBIBKj;*%qwyc3NVX%YkK7j0l#(fs`olmdr=F%@w{}$)dYfq( zS7a1=omv(%E(v{8`}kAHO3wca@)Xy}kzE6#@8tW9hsR!BH=b}4zb0;c*C2aXhU&W9 zz#T**BgYo1O&fw&!ue-BJ{3g%A)S<&o-0NO))O!?at-0I%F~4~?&wR%myhKdt(nkw zYj+gE=?xfg>Im3&(n)6T(X@ro;zmcc(u16T^tspyYpRltQTxn8SPO?7e-LX^5ZI|tWWdPJ1#S0z4l5LEe~=`=9f-`prD zOb_~k{5Rd%GyBU$5hf@np+5{e;?Xypb&QX56~){v>*VCq z*jcz<3RV|&sDd4wp;nIvQP*5fad3JqD?Rygk$)KRoMGME)Dro}k(*~0Yxa?W%AL^vBir=PXLjBMkD4WG9XeF7;j*z?wKv)Kk;1P*GR)KIhj z45C|<1+6#WZ8*W#C`PmVz0W=E_cThv6uL-?jnn0ak+IN`qcb<;mF_!j^F4DWG_@%@ z2o=Ped>3Gc<(|mM-d!jNd@Ot9NR_=Mc;n$YZ?wnE*THvY=0B+LN=}jCtV2E=D&!GZ zQ}AkH@|dg1qsMQ)zEmGA4%F%Bs(FJNL#su=9%Jyywf-1ChZO_AwI|6*!po2=*UbBJ z(~E3^tu!LS6&?@@(uOy0=dC<230hE_=UwO-AQdbO^^M-iewB9bexRFm=Gn75J;ULg zuv9j(bRh=6imOEw)aFr)-9xiVO(7bZ_lq>U%A-#q3scm(yL+mYebBeLgdh3o)kgPd zJ5-s7U%UDDi=!{1VP|vY3u+7#qrL?#Q||dS+90@|iNh%FU_FZp>&)}G=QrsTXpz>v zkCyH2MGkHmH+XcKw=JGjx!}t)afrt#@6(&chL-t1KKw1`fqVG6?Chv)u~r$nIg~7_ zjxT(nPQE>*w6)zloO&3^>AFRgR7y&}oL=@%!t5DR#$fi0`VVlQFn#@ztlp4riEm~W zfvE?F2i(H^`6Fp^W{tb@r`Z1}^?`I;y{bK#T6`?BD#`4Pbb4R@n;(DHxbYOk!|)P{ zHw%SZ1bn{r_YJ+PHWupdGq8Q~A~+<3`wUOHsh4E(g!tX@pdcX;6GO|K9jn9|2>rvU zQ>V|Lz3_2j$&oZwp8NHmf5 zX)`0c0BaY7zjC#eBu_KsaLo1CXL?qcHPnb<2IJusDhY$^z3mARQOU@AZRFwY+_>B8 z1E0QXHXg7xAs|{fY#X>jzSzvRG)tx^QQ@6mj_q$3pkp$cou;CpV@D_I$i=vh+X6}O2u7$;&$P8hbkF+B;{u{~Baq(XC{d5d$Xbvt> zEgzUWOkKV0wmtvQ+PCyRmtekETYss~pbG|H^OR`WXUB+q=V4x!^LCDZ;N+=4jIr%k zI4H{IPTR`Ors#q`JZ7nf(1PvOg_>Af8qRyI&f#6B28Wao>z#@t7-;=kAk z#a3ChJu{_W$3VTZojMJ9DHNR$92pDb_cImSlzV0G5!n@l$I4r)>!SAWvC%(i==s6 zQd&*{C19fL&5tpC!kEHVm@mSb&w{?g@JB7DABQa0zQ(#dpd59#Q-5pd=QbjNYAGvo z!A~op>#FYo*d2F|zP`5LKmU9($I?x1CR*Adm zqMwkB68b~kw?92QWL?C=AWZT8!kN$RA-;O)H zjlNkWXrtu^dFw-JL091;&4~p8)pJcPEI@P&+08!{eF~~lTlmo&B5m=(E`?FPbw8sF zDxGCs!X^F=ZCAGJp@x22IV_GWsx~7bO>}B}r^Tl|m#<_ZI#b>QxZchdgyWOme(+p($tc z6p>AE?V7az;el!@-FILMDXzTu34gev{Jsc*LKqt{z0!4_xW7o8mm{71GwY6XUB960 zRGE)T2-;T^j`dSL*p$(u9QIF$!-CeDu}Oat#>=7`<*o~C??MNPKGiL}=}RSvb0RU$ zJKm~W<2O?53c9Qko9-$=UJy=s-PS6a5 zV*w#8Pf{5(HepwkC|=oV-8F2&0Z02ff(^KaV4O^O)t3tpcYA||Y79Pjmx-5MP3EiN zl((sIvC>XPk9>IkH(dYW@ZiibxhBHnouvtri+3+Z5G#E+$uBJQ8;qBi`qY@8=k9KH6g1uIl zhouZ9pTV0Pq#?U9t7>Cs&nWM$t?G+%7IuAfTV?8sw<2cBw4AGz4swEAo58 zNogmbc6L}{ZMWnP~n_2S1whwpJJPc^6)Vnki=385@??pAPj7 z4Bd*Zz8RZlL}i=>Ii+@aWTQMv@SIo0>v_hPZB4)OuUhJ2L1F&D3wLq!5{; zh`HB@`PXW@Yd#?xcz@31kIjh%LHx^^6x)`uzD zJw2|a!je+ghm1U$mwcnW4e|HlF5EO$RfZcSuKy8!BC-%9?>l?-xU^ausF6Gg5SV1j z*L*)v+fUnA>xtMABIek`cf!N4KWq;<(rqW*d9L5n?H9IN0LMn0aFGFtqXGotHMOw2YhCoqVD*B5#xVA13kz930gXX%s* z0($Xq$+wIwnqUClS(MXFzb|JJ7+CM;v@%o)mjIlVfDE6JVIEd06GVS-|3|sL?U$v? z5rw)Gcwm<8fXtj+!II^d$6lT1Jy&w(Fmh=! zthG2?g5eu*K;zbto8N?Ma1%FAlo~eSwJ!g6cYI9Pslt5p%57~{ z()o~exV<;vv$K#Qq9|D9JAEqUYaa+E_T+)ti%<3!s;WMy z1!=pFRZ|(FGZQLsbZPg{W0~vOuiUddlh0ZyyB~0$JzvUmt8c8)N8d(am2+MgW9w00 zW{vk-eUw7YEM6t{1QH}J_juJGhm@FLtyK(&n*7X`-`P%FSG@T^@@X10p!G|G*H@GM zz>VLI@0y9^FxI=!5ucju)2V5p_*bVmK?| z_nCA4nS>1a`3MuRL)W(PzWrIGo!shJ>aQmzE;R?V@wSzSuM5u6+%pOYSqozN&N&Tm zXcM!)wRf;3kj|6R&s^apCN;j8rjz=$6dJ1UzeggGC#Xv$B~ndOc?{RLAY0_Otk)$z z99X;gIzFifT_iuD(v8KM`5zGC zHmj5(Y+5C4mNv~*JB(=E#k;$^OWj-2BOr#rt5ir{KA!TS0@M@df&Q{kB}AY`cuN-T zRrX==X|yN5o6@--i|DOLlnqhT1ah!^A%5?d+*U4T|L-r;MXgr{O#w?daEK{ZY(vcR z{Nxj_$5%&T>i<89Qb}ItVj#!zZz#~g9Wgyj(^c+p%?FK4AT49 zcd{T3EWtD*42#82OnE)yofTt;b|2qobH?@2ip>h#h55`v(r>Q)qucWMrB2sAeGj@a zIK(omgmC^89W$nTCjk-C-K+HBDwKJ<+MhgFZ;C}QX1d12%NKs=zP0SAF($2La>A}& z&5JI?FO18Puz3Y7hlgRwM#)rdhsF6(^T2nR9_)om*hg_@W)ceJUb{-7;+Adu?7n*k zh3kKCkS4L&-UxNqXl-qsDcnK(Lsta4v|k-Ny*%vr@NI?~6MAX@3!5x#`lsu2Nl5TZ zDeouupDP3J!4Nky%?W#j;PAcf3~~LNrsjI~Oy0^Av+QUii-oCBJa**!J3qMskNfO7 z-dI8M_*)M9h}dD?))2~ItvAsUj$UBY%fTA6S7TdVafmb+I{+zHX<|y6N6vT$W;|E; z;Qh-lk@euuMWRB~v9>A|1}}A&A9Tc`#x{IB%;dcvOeVNa9DLMY%wky&*p2#2sy^to zu%QcX5x<`x7vY7KTwdyGr3JS@zbqK2D#7Kd@0=bXjeKdd*k3G>VIM#O*Z_I{2X$vH z%{Q^6W>Q-v{&Q)^5w z5T38o7|&^EhLcEMa}bCbE5OZ2lnhtsB2r%IYMom5p*EGzM8G=5R}+p!jw8ZnfJ?>! zYknI`%OZg|zjpoNP`0GxZemA9qb!7M5AHH--o~K@pDg z&#6XyRA$@bRt`!T(J`;# zbfsImf+<4Zm4fS{FC(vAlRvTAmp0zSSbH7hyEI3=^IYtfBzP<2bB|#6_i0>6$z%*vuF@zKv^7s4>-ilhP>6+os2c4d|Zn@732Ab234qcG!8kP zE1cO-7>2ba;ncKXR<+(P95ZQ(h}DKlsT_&L^Nkf&^zWaO323qTj87+WugJwkxjhff zP$`(Q#u^vz-eeXc(N4B zdY7`=f`aSP5WD%>%^-Sc{9@_8bY()pM~{cPu~^guYd9*4>P-@2YV*!z2hb z;fvJM{amq?arm*OJiTHqrg_c77w!>@Ks{f;iMu7c+q4<+Z`m$uT@{-uIJ^;BbE*=$ z()HcP6&MfTa6`(JQ|WHG=UH4})j8~4)r^$fz#fJtT}dqTk0(_o#$M0HfuY-|`j4}1Rf;Mn24J)4Qz&-j}8m>u5W1S#jtJ@V}VLKK11jZXH0mTmtfDuYzyOU`u z4DUVq9ya(TFU!h1Ez*=fPc~CZQL zaF9z-GO`TcpoI?EF9-TQ?Y`idkCz)q#A@{(5u{Y*9KT%y{w*TtfmF};fe{-Sky~!H zBj)$1BE?cCGq?9V2+JuQTQ-(x88L`{>kXSiyLVEf>!GjUWNvH_<-DyJcYd5|8Qr+a z?6=R~S*NFfoyG#-gELOb|E9mK4sI(JZ|kcDL*|KFG>+Af#_dPwkHXP^a3p$gjF|S> znmpa8SxOLC8y@i(P%_=2u2NbHVLjtYP7|rZ!qeZgfeV)wu$HGMQe`Q5isO`lvu9zN zoC}Fsj-Q!JMiS(IPY0{XFSpL#(N+7V)oy2mv?z6;bsdOZ7xs#wTMdCHIJmu!4ENknaS^wINE7f|$!m@SOeYpH;^QWT)bW{`~Z*SM) z;QaXuOUq9J!q*?sumivA9sl+Ay=|dxjA=wI$xoLtpl>Hoj4J03s~3%J9-LRRqYntq zbMq@?-FyWyWm+it)hR9x7B`ml*vqj;Ht&B|2L8L@wDOfe&ws@tTWo^lyVv@&DrtX5 zFwAR4v&$?J^Mjs{d{Y#<#czn0`qTv)KS#Ch`>qwKWg-uHB_t$joS14be6xB{qo3&oXyJWq#$=k`h^qUJKlWp~@A!w=o!iu6#nVok0=K4A#wf{gu>M487T40} zY9l^PzejE^u-)0d3A|&XWG$;SoN}Cv&mSXoP24-E6d0VqO%uY+rDF#3oa_ewvRBTk z5--iUKXbiahprd25U&{@E=tsl_X%kF>Ns)^4JkRaU=x5_&$QdR#BmKS=49m`03 zvGZ@-NVjh7#j}s)|9eQ^OrHc_eunmCEL=n1Bs|hcnrO%j4iR9Wg8K8D9T$b%*F%w; zI~!wwCVQIOeFDh|l=Y(8fHK$%+OA2B5OUM!?tgi?L^`of@2A@$1vvMJ$5+Z@*iU0k zh|F>_(=Ttfq67NQEYQ~cQ^m{M$_fRxU8c$7UY*_BNkT;&GiWhNa@Kia*Cu@t_vZxo z`$VCMsxAJ-JM%ET1N{5M6#QQ=HeY8*7Ckbw+-hhR6Iaz>ntpB4TWeGV^iWHvyHCD4 z)BL2jap>I_*^(;lhwyq=nZ8P`d;ey`wy0(9b_KPg)8j_6p5JP1QZA$7|kMt z^Sc8hlu>CeSmG6IXHTXHyj4atashX^ogCUZU zh)sY$TB~O{U>s*eL5jRtEooUl`aOZ8ZBp%#SUDPJj&-4|I8_wShVh)y`??RelCOuy ziSYK7p#Q&H?)eGIF!=D+3pjkW^YV6pQ{y+sXRH48t%P@sY%xMW|DbJA8lktNqg|Z( zZ{HB0KxqnbDOz_ zeuyPETzIcs6|@zUY^Inc!hObKenU-7jWkx2u5P7eQKYutvNjv03*=%E(9l9S@zvxs z#==$&rz*?qeB|n+!vWdFRRr+IHTs1J~9(0Kh!L1bd#_zzc z-96e_+>v2fI&Ue0T_#@n%yeWRm3$`@C34kjV3W8(DiPIM-^4>j>+p~|xCn)d21hxN zzd|NvWk9JgtVKzkjZ2^)k-9wGwtPqTYc6~GYd73GLt=Vi&fBNWn;Xh$dz2K8MoFFF zqhdy>nS2V*lCoE0>{`bn31PF|CdRlH-@{#}L$jEN7ZBMeXe7#@BL=^-jjyVfut)b` zU$e_Z-17+ANpLeU-r?rqT|V?+=3dvIL4!=X#(_IdHcEt(x9K&mTMe$r9%=DW08qD^ zDmYG_GN6yc$RXB_*c-(~*{lA%#buy$K3b-)`T=wjWT=Jy)ks>NeOv7_;LghS4g1;n z?L(2);?I54ZD1AWeZPnIpA;%qrIg;i%noDj&8J&7^Tg>Wu=E zX%mZ@z)Vy3VzojQ=%A-MzLjyPU6%iaRjOl|WFDa#FLb(4=C5yPwMrf~chh~ zct}(IUXJRvPg;b-4(+=8y~1orps=#jt1RupulfVXmFIl;Dmwfn6?4cj};A zMWTFuzM?hlZ|cS7oenns@kL+2y^7#50d2A#S`Cle%~_sgw}hv4l>BCe2vLGl4Cg*r^Am&ej^O%gFP;O zUBU#E?(=}FX(uqggf!`Sru?L>B5Lqv=1i_f4Z(xbKRqT*1|{WhKV(z4!NOL)J7l?GuPg)_P+med50d|5m9qkn-9a*jJRVz zsTDvy(ML%W`I$LiFFRD28(UZuz5M!{(6>7uf|+B6Z#SFJ&Dv#%(-W7rMPj zawz^ZIa*M)#YNQ{U8oMQ2$tkThfBKPeThVxGw}aTo#seH29I93WC)B+=sMZjXNbGO zXW=p@?7OlN{LtPXI>nbOSIm6Wp#bSy_L={-@_gE|6pbdRWUuYM;_!Fi{h zk-`^k+ifDPcdDgrF#jm12BM_+;qeXrOF5!v62QShLu_aZfqw6VC_lkSz; zZJ{8){*tjQ1S6`VVS8mu){CTD!xW7lQN5+5VCz@oj@tO3-P6qi)fzH;)-_-T^2R9@ z*minXE`!FJoXhFr5{qF1p2j$d9cqdQ3GCQni^L1ZPyBuj{o%6fQbDQc+O)n>AnJ6PSKz0IDIU*bN=>Z1Nngc7N{~W2}@~ngv?i;L&Yf@S9dSR8zld z1+2jZNxPq)GXD7x_MBC>SQ&6FV@Q^>XdJ7LMM}g!VMHzx$+W?mfLh5~3&~Lz;SkYA z_5ikHHrMpWQIt2s-q+y0eBxi<( zA!dku4a57cy?=ab?ftFwt+ju=^XIvJxbG{^K9B3X&I9DvnQs&|VyvtOT?DR*x{{c` zP32_@%GhNkyWLXq8Xn-a4d=*`9aS`Mx!WVxZ?To^cCR_@6q6$k;&XzMWH`?`b z6@4*XX~F<-m2$WdEdsdx!i9^>>;f8h#hbUFn7sOQJ&;}$_~!F#U1yrKBzFi*vO-*J~CsEVKThChe$lN)zvp^Xm_a~yCQr4PwE13&;!U4pE z6PKXN2?wYVYcGt#>R40XhMDmF$691F4zVDUfQxDdF(niuhiY={nzlSkiZ0qvz*XE7 zYsdN8?`4DhmWVYhyl0GQhw`V(L|Xtcx2k{7he+3xI^(t{@y)wi!eB@;EmqnMf~zi z<-U;MODQ@fl!hUD3v$OhnKDa;Fouy$M(X~esb7x$fFdfVVV`FsnVhehQz7IS(W5{BO4sqN|jO1j*nkKOi#JPbLH9{&e?0 ziwVVQgdO1ivFuBlb;242ZRuVmwa-CXsLqG|k0ss}$=5ZGFq;yc`firV35-(DeN5e? zr|RIn>>7~WFnUmF$B6hPMOdX!UkQ#8_t9}l^vz%cf#;Pwa?lGCEL42vN!AbYE>Fw* z0BFQ_e-2LF*JShCodo4nE9;}pMyc<#DLLiXRzboe>;mu+p8G+9AP@3)aMM?#U=7>B z25=!_?>;ZReu6{Pcy&hGUAP0-QQA$u7BRYxiD4;rVfrozGfxSq1rxvQSeEux@Sa2~ z7n;6GVCqGI0KiD?V9NbQ4r+`lw44_X{G3pUqszC1-DXT`0rZE&`a*4nba1aHA^<_n zpNdg}-&u=J{yR69F>$i)ImPMmv3oD{MvZ5R2rx++_*`no+p6-^MWx>d2O-i2iZ$ci z6qZv3OX`~!7Oqia1c0)tUHypK>34BsZh8MeDSwE)F*FGMX7ybpKqw(AS@itEq=Md~ zN}2XH_Xx7vaCNZ!Jt?ozr5$nGFgOZQs5rD41?h!6iLi?_L`~nT>$%8V^^!fd17E-gbOlP|kG! zk)#II^nDy|(*AIpA0VeBKokiaN476|Q`8ASS=5{snd~&&#p81=&q5P~s!?6r>>~ls zh|t)s2c&o2)o*nQT8$lYxvclsbUFF>_@IAOR28U75cwRoQgv~#KBk+SD-dtMSpMaY zWaiO68KEt5hxKgOv6h-i{K!GRZomk+RXLvBqc>F-%$ zEZo`wVw75v?_m1e;UV|I+e=_Kx63USuCq;if7vOhQs7OJg2O>k5BP=j(s2zU!u}M8 z5R<@L;WJslTVKXLZ?YO2r(mDz0E#QRzbsT?eL&ir>~`9>T#G6!>BctPB~~x5yZtkK z@`9-40Y-g1xv`+#<-{1^2K{1_1pqn}ENSn;F-YWHEnHY%be~PDxbh&J7qeqTJz3D? zt0M$rPTILiUT$zLiU|-EPZIV1EJZ?tbQA@+t>tK<6r5>^F&ePfi7abI_-so8?m`YW zW?bB(P8~QORCAOl;?(cpBEM2-?+5f~m5rJdi~v~sv{^H zJI48HKQ-(Wtg6}BV-UJ8*AP)_35)>%9|-rJ%H5*lU6FIKn~`y9Jdo^$m+%yJv(Rd5 zn1O^tEnvl9uSmxA6EWNU(Xq?m=;!deCmD5!F^8o^^v9S@SwxAE?N3x$= zx3zIumv0Wof{45AWK8;wkC&Q~USWSKLz@(@>e6n~O-jAJjahdS`)_~9x10fD<98iB z0D$PJr1uC`TG%f(nwWgFyIy2RD*(rSQ+R+w{s6Ft^CMo}EK^eeURBqV`y6pyfEmCO z#jzq$URrg#*{C10tQ0pX^9$?cTxAF}MBfL$$3>7TKG~}-1c|yt1Nez;o!hd5UD)N1 zSJd@X?im^y;4We+wiQ8#}*4?_wrJ6l`cGg zUp8j5RfS=?e_!&6vi!)?%J=co@V=Q2U~Jot)@o~yX*07jX;{3-)#<2EQ;{%^P7qA$ z!Wp$aiZg}_b2GljF~+)WwLba)n{(k}8!q5gK$G3VFmGx-p5#1#!%g zwa-&uB;LLScKEEJ;puwx{~-s68os8b>TgJJDeUW zwQ#ub;5qXnrmdaFxW6U7KE*iT9{-={WD3-27i*|KUSx?*(EYQEiz6^|lzf@8v-ejf z_|ch>o-RQqdgu@xt{BfHlLTs${=7!;Bae}fd2s02k4xSw^^u@QIyGhGw7-9i0Vu=M z^AY6F2&knxT<@{XOn)*TsmNva`x{80Kz^u$a~RFd&08SNw44T8{PjOe zxMz!O3v8z?G&&mKIC6r|K@56~ONaN}wUDIUK5Uz<3EV{L>7oj;$WCicU!}{3rAx z1hOtB&x)Tkx_ML0)^I7w&7c9z?R&T{g}FokQQ{SGt(#gyh@bY~`O6Gy`R7M~PK{$$ zPVnC{e}70;b~dw!$n?-NP@Y3d4F|A*h@CIhVvQH}s>}(VjRA$|uiKo1$h|woEJG|_ zMKUVF68W8kgg;Zetc)t7U`488V*WT0>@SPA$5I2p0bV91CK+vQ?PR)_6^nf-CD;Cu za`(IifmDCSRied#`qDEpxSbZ|6v;AlV)b2bH$Q~@a6Ucv2jF6ZC5ECUlX{O>S>+OV zY>kWLA^r#@yxAA}8kF)b(_#hIXR}GTu+;ZU|F#e;?)zYON1~Wig@msX;U3wlCjTOg zAP^-Myw38Mib_c-0i~lK2@6jRJ^OmUNUKx=ya*D*z|5my#vK8Kq+Waf{=H@U=i8u% z`=ENf3?VT2R5NhkDxgkY&HwtU^Zivo2PQl$OvBN!3`|3q2WSZ7NBjb9_>V!&S%Ahd zIqFN~k9>6l^2!r$hW;U-6?7d2b<>3h-DVnnxIMOBhwqR;#C(i#XVpN+>V>6c-t`+d z?zlMJ{nVCj+8t90dkFcHd1`gz{tTActS5dX*GD1l>3h(y!{9083yjLwBz$XP)x84p4KQ9PFn8^Vy(`fL8bX6F@{=9uD@% zq9yPW$vDvOp`rMF`g7r>tn5gJG@0#KS=Mw3Ejf9r3ksHJ(h-LCwFN!nq3n>2a|8qg zfMi_X>3M*`UM|oIh0@ zzmr*m9fs2y#`;zsxEP=C)L;L?+q<65Yo*k)26ll;FBO#Dhj&*%ARAI=MhJ%qbd1a4 zk64jjO&JVMeC5hewtT`(dV0g~f6haG)Sc0cK|8PwJe<;q=-mBJ*X?XK>xbt%Be~6c zX{!2AqooPn`+(yuw0Oa8Cjg3rly=_8Ap(_2+{A>HgI}1ubn+9H)7$ zOK+x3Bq(MN$+?OrqaWR96ud91=Y2~{OSwr0>2qmm-WJ@aLjU@EPqMHs<)^InIWWN| zxLGs3Kby54jyz1eqNu}b7GiX%EhWM36P<=NA^w-Zy)gx{vFtAu6?uisO0~*u#-5^A zC*bFC6L!Kg5ab4KB|hKgOcZhL;f9~?x6Ij6fA~zpuX2Twm2cO@*||I-GE&xa186a-C4|sYyef+-@ZU1d~sVyvw<0nXN!P~djDJT}0 zc&o%bJf3&;uqi1kCvRT9VX)^&Yo%?BGDmz?+a<5SRH z=ufMP{O8bYt7~wHH$}!H`OmLZSWpyz>nSR%=nBl(5;~1b-95hn5%<>w91BgR!?g^d zv7e|+(gBwPYOrc&o!GB8&Sm6porE`WK8U*+LH=_2xhJ=?5;@_`Qid3cx>0y7N(Z*9 zuirL3F)pT|tTtTn&*ewNFTYL;5=xML35<%9!ye6YypUToi})>!}V+pw2$ z#bj&IsaLz)Ju8fcEf*C*e%HpVz!Qy33wY<5HCwg*EI4e0QR7l1=nMduN0-^)}r)t?RL6olGNkpP$ZgaV6M#FOP zcTN1!k=`o*7hTX%d)DZ6m#&RSF3%k$61qu485tQD{p*m_c)X?|9Dx-Ha+!9SV~!_M zoU8pCIIksxIR%l@raJY~XALRb(Sa{OAcuHgoZ-=8---NsJvzWwyPWm)x}1!Rig*2U zje_SI3C}e?sc*_?#K~oU8Sx+AeBn5jpr|ldt<VhE>cz-^urF z^(+gdGP1=6>0@@^(O1|^Th-)y*rz`*fb09^6=P9ZAUr3Y2j~ZXWga9YjD~5Lwn`-T zf^3XBcDhhp-x*e|I>LksWKg?E*cTui%r!Sx6MwR5Usjjz_SdscgKg)pb$Gr>hpTu# zDa1ht&#%!srN*JhuG>xdBSn^_-?;a8d<9TtMqM`3k3&WXnl+uvC816G&pAbtN)8Vt zn%1FlMYShsP1cjuPH(knA!7L0nbL<3C4Q+?21)m0yHDC`d=!z{-N(Mk)LaT=#-?J+ z{3}_QttL^6cIoZ;h>3Nqf~e28Wbdt%mkJ7`#x4-@3H+|nIL*IETWg#%>e2l^y6*Lq zbI4^R$xnIjIO(m{ZKb{4RiRXwKA-$hmZ}3EvhHC5hHCtGFCt*YQ>h6hO*8AJ%aotA z%?%y%+x7TWC<`9^8X=f9nO#}HELU*2?0@%@9kDelpmX0R)ps5k6ED6BF($*SZlCQQ zvf91rjs<7W!}uAtf~4Z3B|dJO_-pfB{u}d;*hg}1XEMk4iFc+v2^Df<3``Y>X zvXw1_9B;(>-`ZQWUPm0nGGe&l#!paP6MaM9pPYZEM?rqOvT!U-^8}qtO3%Jwef+)o z2t8{} z8`JQvwgfP|3~A{GH0(;(uUxA6E(inW6y^+hl3QJ^ym&`}yr1(YEsu+Rfq!Q>5No zq5Zq|Fl^hUOZ&Wp(rxmC%A$!ZIGv{^5!s?Tf0b{8n*8B9Cvv($_OuDS!2J0|zi!w1 zaDkV_e5RRsDLX4`x!1f{Ga;EWV$OIn zGL|$jNMo;Cma^?E7I5eUYtX?kK)0 zZVDmSKcxfzTc8kw%fUjGB^nv3-fIg_t6B42lgi3`_#S-j3D#HM7jvU0X;U}aiBm1cXBe@Z_{K^IhIVRSS** zeK*A~t+QV`<}TsZk^gLPqpZj) z>X|ir3F%s;x;KrD0=G7sR!xwc+&d33zH};i$Y;%Z6ANxbmu~lVB4@P!=@sOcq#(#G zW^Wj`{=Kgp6*QQ@X<| z?3^_?=)L|4uKGM+5(CWtZJat~%A9|*B&0lP} zKOu=EsE3keas@vz>4Z`#kn&1H4yuH*=Wm`hjX zZTl2gyF+iCs;II;@4DAo%!S0PtgJ0}p|nTWAT8(ci(_Qg_bsQwnioS;rS-dZez){) zA+gxwt0EaC<1SVRr%A-l^1{*#-!5wIyg~{5&d2Knsl9mFd+q0{E9zjb<#X5P8k=gI z-UFk3i$Ks$QOxyrS@joy;P zEa%AOipF{28%`Igd*g%-h8&yNukh)!&k%(Xh?O&(dKdS8{roU=wS%K(RZqJxhFtwT z!%g;T*YerfSE9#!hQXw?%x*n%o4;lqzMnkw&y~jSVu+!yc6#WYs(l*!fyxh<%kNld9rXqvsHbJfoqjX!_&@ zr}|$;a4N&!g$`45o4MuXQAfN4l5BWYc&>i4{buVXCkHKi@D3cE9er`01>)Sm32dc&)%n#N(*Vg%xVIPbJW>6Ef&*MC0<7X=snx{-Tb>c;a+^U(5 zN`+`4_fGH32Cw-Z)@(f!zu##F&6i!@y<2!ujPHZu_k1{$uy%0K0*Q$d|SQU?7f8OigapQHhgOVLEvk5 zFkEHRFCX6En)AI#s|zuH29wc$4b}Du$W;R=9Q~ z81$VQGW*N8G}qdGCgp-`Y;oS!ZBww+VwrgH+0vi>ys@>X_(%XGeFAYW=c|VEh;;DS zjG9%iXWs|bIuM>fG(j{kLeiQwL0APM_Kk_P+IZNd~2AO=`83J3o*`}p(% zE$LV{H~ya?Tps6Yn|WE(z&nJRgoHT5A>nX`PJVg+ulFunsSqz;9VI^ zETQar&6BtH#}4O-RG_+=oC0%rl5~EVJ?UP{KOEjx?}pt9N*JUk$bq94QlCPu1>-7m zg7IsceZN0-FHgUU=WfA+7>`LhwzxW-8+N|xCkb57?A#V+uPMc{QbNaFw`m)(&~-EI z>dy5ykgsQq!)Xn--QV6c$F-V$iIB1s^zR zqFPV9v+CbnSZHsIf2zwEj?9tjd3sKTmz)>~VNRNvMsxe<+3cN;PJ~7Qw~`jy{^-B3 z09gcL{ij!1LWutXcTMxq*n3C}k*i;?`)vljc(rfvpBpD>i?&a@L%}NhY&Wk64)_|MoUTh(qe5wY&~GuY zLg9G87e}4T5?AEo$1`s;gMxF08OD=BzP`n8?5#1Y{+hU$i2I+SIcA^bX`|%O!dbzT zy~lHeUS1!bjU_k^7hCsK5^uN*b&b_3@(b?f|LIrePqNF(e8BX8P1{zmO0D%bCV+W{ zqXrvp(H&1K5TVNuK2bEhbF*R{CM8eOQWoz}Gubs=u8VadMOyfNrFoF`Qcgjs_2F%+ zq0;wA-j`RFvBvUd(4ekq9gmPWs9?wX(&^UBvit)`fZ_AXBtkIIVw9^qjmkIH#j(n9 zHv7JLw&KW3oB=kF{i&K8zH*4dvT<9#)=2 z)wv$5ns9HuZSL@0MSE6Q>|XZS8_+YgFFxGUOHg2Q?qo9=M*O^yuiv_f^SstY53~!Y zY@-@}&N>;Oc6+#;e~TqKnu$srQdBimY>j z-VGid{ty#Q1B>um&Yjt-)3ftAnwIksL^IYTs&kmn)NT8V_$_($?7J7U*ZY=BCAv9Q zAdBRTn(1?z=*LrXs#5lq?!?%0*PC~=(+InC+^L-nkmYiaEU{|Z1`GI5m|vd7S04pG zTw$w2Pj9DKws$zWv>s6v`0VkF_?okJ+YIzCjjl}{2PY)PlQIl`U&2M2$)$E_yU_fw z?;qBCSqT-T9&~42x$^O-wkmV9cxla7*RWBryW|ygvf;U_yvL?f!}0oFflmpCAkW(1 zKYl)WU9X^@J5~oW8AV}hD@P-qeT_*(Xg|2nlG}HW`tx;8==m8#ctnb(CU#m2Hk#@* z1dN+M&F7j@)F~a#iQUH=AT1#ozt)_7TZ}QiWfV#KyEPe+9>Kis#6RVUIPTPGvia1< zf2q=)+iqG3L85BjG_0{w0iN-ZKWi{0mFO|EH) zYMugFsFZNju8rEZsiI1@|e5PUBY?vHFN`DXB_)>QgV&=`2(}D&P4G~1dUc8f< z`tx-HkUlCYcc-{FKZI8}>~1;E8Oj|Syp!4mrL6gWZe_8K+RPMHu%Aq5RUn4TTCki6 zylOxO@BE1FTedi+7q9C^42FgB13SNHR?yXMI^zOoY)oB@9*6Q?lV?GERp*X}VO?>N zbKfVwk!~_M*hfP+eO;s55&>Icjodrwy=`m?r-nKjoBk`6<*=`-MSgdRko=Mst~v)K z@KW8B-6)&-kkXYjUKI3zVz<*~A}iX?XQzu2_+S$izmCfGcc zg@!LS>dtm_!a7<-O9KsnxzEh9zst&Vz4@ZSBE*KWi-q|PtF_qngNFKXV{TOXoxXer zpM@55^zYq1ws5^XrxJmlrRn4jYgn!EEySZd&%XANPdrgr7pV+qv|vTf40rZONsht0 zy6Cz}%Mn))>k?TLyKP;sPI+*Aw7^#5w7SWc#FwfXI&DaMA(~a!e!5boB4vnyv!SKpAEIq*HPylo ziaS1qQbuVfUUoQm+&%pLx#SO5cJpJhoaij>KVmPe_OA2I_!y8RsxlPWeKZa%`syFm ztyRS|Jq6V{ChFKv8rfxDFAue@lXaS*kEj@WBaj@cdw^X%8!DJCLEeUygaN|ve+-Tq zUhNojd;Cp&n9c<>(ajn2+?0xe6Kwhdxpb5x8StTrnFRr~pyvT=V>TvU|W z>e4{XC5G##7cfJJZ)|RM2F*F!oqKG|!Me*IqxNpi=#*^FOzp464uhrl`Ds=JwW#!> zS<#`Kn?-7m9^_~=p&rAk6WI?8qS&+UtNER%%78|Qy;x6SPc4#;juc4=tg>c?KY@$zHn$<{w2HD=v|h)F{7wSAP-sRp{=fnA$+9z{$R zUb!G0rcoUeu_zeAlfdGeppMMdeyl&%i87OQr&}{F)hH||E7l|o&iHs^!Mc_;saGB{ z8+K+p4UjR!^XgNGAVJB6=gi#1C* zzh|FJ=8Duc8%ab&CCXJj@n6RKbAeyyZ_YHU9~-?*ul+v1G(u7AvNqDYbhvX7&8#<3 z?Py&wW6j}eF;SbeP|R%=b6578s~xN$MP+szs2CR|8Jn(>doL7Z@(z*{obAsMo1Zy5 zofeZnmPP}nYVH;iMwD9(T(mt>{h`&Q93NlRyW^nfR!mIXUqCG0;cLZM^p*1-!5| zC!3kIXP_fNo`vP2OR6k-^qv|g%R>Uj!%s>saIa3r<(??`c2)>$6FbuL+wu!TA_1P5G#D1fcT$PUF_O#!7tC2 z%pTnY{Q9YL234wSpl&4orlvHi{BrhSe%YxL||z1+;# z;ZV26tiLT0j_`zXn_L4%H}rN&y4_Ve{U`fL$Fqv@*wu6^(Qbpk{lEJb5jAx)q>`4( z_9@Lv&$=nuo@rfz1jb|)QukMpsGH6$o8uDn!@Vz~?r*5Dv&+ z&EBBItR`?Iq9zvdoYyG)?iBpY%s)A*vY3#3*SB2YF>|D`h5=576{^-IwB|1t`c}V8 z<qjkvn{tz zqH)t`c~PLjcC}+~wO4&2tlddzVA4K+hJW8Yc2YpZih418W8hY##cJ~lruc-sn8_M5Cv7d1Zf8bWPqN2b9*qMQX_$%FwvegST#uL1%2TO|r6V&r#*Xm5ZKLt$jQm&E-^b14^BCxn< zIL%AfWgV`3sd8Tj9{K7MocpByMFu-v{(AOt=0a1ky0Z9(zJoY6YO7yyN6yG^kx_aa zrI>Z>3DzAZ^-@QrC`FkA6t5F;jCNfgElFwANu}6^GrOI9WnSlulLHCSIM1X>^_;{J zLohXKecAGfYR|g9C(to)!^&@Rjq{K+iY3$SQ{%l*2tCZ=34+qhw9prxb6CckDX&Ou zm5FbG0M`neSGoNX0mUL!9x(Xab>C8(Wfz!Y%|OcQd$H`*__y^EruO4ShtDoBvon8f z7`+=gmPx2vuY!WB;{2R95|RFaU8VB_2?hg;=;)I+>7`!UooTN=AaBf|+8;iAF!K9G z;XnEuZ>XDH-09uAZC88WR=@6WVdAqsvq;x%xSVNn35GKKp@)T(08G_^Q|Ce+zp~ zH1a{d)6xy^Fnb+P@cxfmg2wt|nsrxWxK7i%HJ}tui;zHwpB-WMcKIt!4>UX`lflw4 z=-KMj^eky%cWu?1d>xBsK#rFo5g*z#vJhKmO)+`zS_fmBplPv!1ZJoNtD<5LNO`dr zU&#nGKlFFNhZh6W432z)L0uE)<9OUK_1KcC#@(BGL@EU3a<39F`a9qwiGgVsNmNFl z=H@AL-AhGgmICB+lt!d_flP-=oL_S$s3T#*L1JG$ul^(L5^|%*GHA977AV zatPsBc*SZY|3g`=8=C)kA~Bj(p2&FE-sy8}CfV)l-yDWs-{XOhPwz+Jux%})x6M--F!l^ zYAqr2tl5a2YZ*a=^TMYi@P3IyjTsdxXGkGO3KIG@+n}0=7k0iN?5hONZaT^6dr~lx z8L243#IO#KB;=RQ1~PfueBU5`Ekak+TYw{Q1d=OTKxIFiELycOKKOhL6E6XXeHC4eRV;*+<+Lyil3Y@Dea{-Jbu;%ygt4UsK z2$7B}tFAo_fMytiCh1BKSwkTE%=V7hWYR2oflj7c`{aQ zz5Vx%3CN$G+hVWf0dA2<5qQy`_=)rUs|w43;U)Lo-3Fb*p)PU_LWY~9tAgom&{zyj zcsMWW?WaDHQS7NNb@tIUDykfo{829_B#U9!g7f>_dyuq^0hD3qvLc#)>9dL_D5^5u zVFb+gvwV#>d;NwSx9#wcrTy8~3mDI?LR>fBU>q~)&z&@}G`w+g)P9`@1YY!5+jAjY z-a5G5z6Jo|h_E{Q$BEnM;S^_!ldt6JgbZ4G>{ZhqX7RI$&_252-x_fQUX1#{#6FAI z8ubdhl?yoYH7@}N7ZzONeH(;H30pstEm@o-w~BN`-ms}fWLuxZC`5MN|I~K9-~61| z#J|gw?ywY$xtvt-M?2h^U(jrS!N(tDs&JHpJ>0+d$4sh zrc>qYWO4bNl68$2ne|^2`a8Y1`vqkgNml8>SNB0!@2@J(qzQQiP&75;~4OP@(OG{KJQL-iukhDqv z2+;ai4&UOHA}^99J@4jQ+_vM7QrFo~ea3@hBhWY6+F$# z0ncwan8Wu;Vr2A)I`5>T%#RuUO87%iW<&CxNDYn(A3dJUBO1xq&Yn%=n2t-cMY-Zg z>R2Emp#)B!WW~qG&7>VJ;+X<)o98iWWySI_ndd{!g1$F%H93?yPL|%ZbzluNkP$mA zK9M+D>8H5(<4eQOG;(it4sW|ms?A|-KJoyAl@w~J`>&SP3 z5J>^NhkF^I8J~eAHILr*O{!1>fesNu3W6`0F5NuVf9Kj6Gh_$Zcn$KdnO`M+Nn*;F zIRxmJ`fR$$mMeV&w!EPrA$~HQlxLrFeDm%a6C)bB{ zSShan?o5|Rgrm?f7hFsm@^&eJD0wg^#aDNs{;P>13};7IS67p(UHBPex(!EydMlCL z3p|Ou-xU=bHjw{_3(n`*@YnX3%`x1CD4!*s9YI3CuVKxu=V+mdd5M%dISaMkBuRNC zjfnh_sG=e8z!eJ|4eDHNxhw}&!HJv8I&2RkWdIEK<%<`@Q*@Nr8kP7tJ&-I-JEVLjI{-~kxVbjS+YF>paI&8p-1K8-7a&no^ z?uZTJBYUSXjP}qvWkJ`Kd`G(pS9zDcZ9nywI*tGeksb~r4!Yq!xrXK(C60Cx+y?7% z9^#CN{mi-CaXn@a?%#L#Lhhg25+DJVN9^+pMa6+ACJs=x%uKy^s?nw7;pEOo5F)!G zZYs9pu^G_mdm$lWXXgsp1>sTF32Oj<7AsG4!a=7)o)D4J421Gd7rCH#)cJYY*q+0u z1r-1QArQbhwpJ%R#7d65K9+$Cy&UZte%^1uv=h1@2Jhx_zX>7tx4@ekKU34w?@c+j zp4a*QI?ixgI+<51cG|lVAiz#BF*yGQ*=^Xh=BUA6W!ZYQ0ke3+3L(wtV*9_h@hE2~ z55OPnd%mHehTFOTmM}rzpdzosO?nE=VP_ur* *VF<@?H>np;dahP5M#aU^&3E~( zkC*Ed0pJ$RJwgU%yvTg=8-+%eb{N2-m{Jb7XUv|U1}8eKM!$&zG*Zab1PxnwLbz}0 zJEEhBluB#(uIIsm9}Bqa@K^NF8v#H!k)1!k-hrg!F)NUUV~m&QX4?nfzV(<91!)u71pbv17K_*!A`?Ze zdC|cKB8;0Bbzj2}R3tEuIccW5Od>e^R5J=~wFbX}9@Cv+YU*ziWdX#;tLIbNZYawB znl@?$dWk^;&rW=1*xjjGRI#6BPkfK>Oyt+E`EPiWio|o!qyPpsHBtIRIx_iqv?Q{> zo9kssNk>YJA!G6=e@Jw6he*P|01^IEvonpuMiBm{LTqLgT)CVStX&l_lv!JWL7eM~2o2`F`%x^H!o~p~v4dasn zREj*@u$ZN|ks&iF60pkCgdV_iU)qc>jd>BIvg3C&_XkMMm6xk|?X8Un?+K+vv%od6 zxAhfla-bZ->cSTT?fBWriLtJ9{hI4Nuoi8W`G`85Ju@?|{u_PM1#45!u-N4Dfsmif zr{W9}4T55hd^EWFCqLmiR)bzc`4w`YbV{YX%VJiJ)sGFJ^ooeDhD&=jaOwKtg;BUvl7pl;UyX{)#}*oMK2+Q83#XRw|iOMfvAI{QDVod0v{KH(JL21+8 z(ZO;zKvWuHjHh~k=9(!xTu)PWAVCWre7F{5<&%Zv9~2K#ivsLj!Copm_2cx|G6m#A zYoXv&2EKZO5?}^pzlUmAAnK#L`Z$U=p&$UmWi^~vJGZ!*Ka=STDJY~nRfqY3fq`G> z^avrdfu|8Pe?tHaqap1mB~_3SC|eIP@IKP-`L<~ix;rP741lFMYmB+NO{7RzU4xFB z)!oPs!UD=pSVzYS-!ZeIBil$G_L=;{mUyCg(^_ZC9PC=1dXiujnb>=7RamJEIE;c{ zz5KK?f7J-r_30cY)#IG?#(4b#h2FWW%=>vxeU(U%Y^dEqPBE@%I(XS#O%aotfAV`WA$lI6S$RH%}7QvJ@;$HwP0OV~?N6}Cblfa;Gftq4j zrX1E$Il$H}1xm=c$-tt%23i*3r>z!vlAbfsn`G zr$-nFa@>}dmRUq3x8H!)ntT&9*!43Ox?xreUEIvfE`+5jKd*x`LA^;6`I;qm$SG)@ z=MFM`czC#$y}N%CYwhSj4!MQ9wjCrBACG8fuYCe2koM4ta_@uqne%-MsL_HOzOs+O zWsU_<%+5;jT0<=}O92#Et*Bborf3&yog$5xwDbP-X9G$cLKMQDqVrd#lM3|f9HWww zGLi(Hq8c7ZkByCu`|)u=M($nDdibEg1x0B!Rs3G3$}Y{dNVmYHZqW+H%6Tu=0eY1d zVugori75>`$9cNkq>Qmz>a|&*6-s{_agXBW&4PK0(#s#i^HWn_NQYAvWd6y0Df@2Q zmoRzEMx|l+{sWk-ij}c&R`x@tC*0b3d7Uri^K*tjt8rTnO2)+@T=cDee8+WykBp1; z6B@?}kQa5;a`%{VcJ~vc2A$1CUz;jtV)fy?}nY>476BrXA>kZ;2U)TCmPhW@_VZoLwGvY3$!V19AA+`2uV)^*!}_w zo9gF{9>Ehb%mQUke^CX1R-jd9{1PQ>0Ul>@U*fcq=@bkM9f6XqGg|ZHpYq7G5 z68STn?Xw0DgOhe{HNyOeMM*xED_r4Z-29J-ArkLS1)bO^4vA8uM*$84Oxzl-n5*OJ zRuJV)=y?hzuTKs6c@sa*YXPY@Tvq!6%*K4lJ~qoEzNgl&|S#(zGe9%I0YxEqEZdf37m64IRBZ z9lhh=>?OpW-S0B`lf$ODcXBOq5Mn>PuuLCMspAhnDgC`ULwSJVzxPbr0fAcT2>up* zL<|XG#lK`cxT&A$x3}VZ@^48Y_%H4!c^^MU@ObUt ul^?_;@h~CqKgqx1Y2!by{?{vj@$*hi)|(%Z@B{BaWS%QX7E8Q(`@aBRR}S3( literal 0 HcmV?d00001 From e95a63681f498c67926a956f4d2231c12379bae4 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 6 Oct 2025 17:03:32 -0700 Subject: [PATCH 7/7] Remove standalone design file Signed-off-by: Joseph --- design/backup_cancellation.md | 199 ---------------------------------- 1 file changed, 199 deletions(-) delete mode 100644 design/backup_cancellation.md diff --git a/design/backup_cancellation.md b/design/backup_cancellation.md deleted file mode 100644 index 60a9b639d1..0000000000 --- a/design/backup_cancellation.md +++ /dev/null @@ -1,199 +0,0 @@ - -# Backup Cancellation Design - -## Abstract -- This proposal introduces user-initiated backup cancellation functionality to Velero, allowing users to abort running backups through a new `cancel` field in the backup specification - > backup.Spec.Cancel - -- The design addresses GitHub issues [#9189](https://github.com/vmware-tanzu/velero/issues/9189 -) and [#2098](https://github.com/vmware-tanzu/velero/issues/2098) - - It is currently not possible to delete an in-progress backup: the deletion controller blocks it - - Cancellation flow would allow this to happen - -## Background -- Currently, Velero lacks the ability to cancel running backups, leading to several critical issues - -- When users accidentally submit broad backup jobs (e.g., forgot to narrow resource selectors), the system becomes blocked and scheduled jobs accumulate - -- Additionally, the backup deletion controller prevents running backups from being deleted - - -## Goals -- Enable users to cancel running backups through a `cancel` field in the backup specification - -- Cleanly cancel all associated async operations (BackupItemAction operations, DataUploads) - -- Delete backup data on - - object storage, - - csi native snapshots, - - backup tarball etc - - while keeping backup logs and backup associated data for inspection - -- Provide clear backup phase transitions (WaitingForPluginOperations → FinalizingCancelled → Failed) - -## Non Goals -- Cancelling backups that have already completed or failed - -- Implementing cancellation for restore operations (future work) - - -## High-Level Design -- The solution introduces a new `cancel` boolean field to the backup specification that users can set to `true` to request cancellation - -- The `backup_operations_controller` will detect cancellation requests, cancel ongoing async operations, and transition to `BackupPhaseFinalizingCancelled` - -- The existing `backup_finalizer_controller` will handle cancelled backups by cleaning up backup data while preserving logs, then transitioning to `BackupPhaseFailed` - - -- Extend the backup request struct to include: - - `Cancel` (bool): reflects whether cancellation has been requested. - - `LastCancelCheck` (timestamp): records the last time cancellation status was checked. - -- Cancellation check logic: - 1. If `LastCancelCheck` is zero, set it to the current time and continue as usual. - 2. If more than a configured interval (e.g., 1–3 seconds) has passed since `LastCancelCheck`: - - Update `LastCancelCheck` to now. - - Retrieve the latest backup object from the API. - - Set `request.Cancel` to the current value of `backup.Spec.Cancel`. - 3. Always use the current value of `request.Cancel` to determine if cancellation is requested. - -- If backup processing is concurrent (multi-threaded), protect access to `request.Cancel` and `LastCancelCheck` with read/write mutexes to avoid race conditions. - - - - -## Detailed Design - -### API Changes -Add a new field to `BackupSpec`: -```go -type BackupSpec struct { - // ... existing fields ... - - // Cancel indicates whether the backup should be cancelled. - // When set to true, Velero will attempt to cancel all ongoing operations - // and transition the backup to a cancelled state. - // +optional - Cancel bool `json:"cancel,omitempty"` -} -``` - -Add new backup phase to `BackupPhase`: -```go -const ( - // ... existing phases ... - BackupPhaseFinalizingCancelled BackupPhase = "FinalizingCancelled" -) -``` - -### Controller Changes - -#### Existing Controllers - -**backup_operations_controller** - -The backup operations controller will be modified to detect cancellation requests and cancel ongoing async operations: - -1. **Cancellation Detection**: In `getBackupItemOperationProgress()`, check `backup.Spec.Cancel` alongside existing timeout logic -2. **Operation Cancellation**: When cancellation is requested, call `bia.Cancel(operationID, backup)` for all in-progress operations -3. **Phase Transition**: When all operations complete (either successfully, failed, or cancelled), transition to appropriate finalizing phase: - - If `backup.Spec.Cancel == true` → `BackupPhaseFinalizingCancelled` - - Otherwise → `BackupPhaseFinalizing` or `BackupPhaseFinalizingPartiallyFailed` - -```go -// In getBackupItemOperationProgress() -if backup.Spec.Cancel { - _ = bia.Cancel(operation.Spec.OperationID, backup) - operation.Status.Phase = itemoperation.OperationPhaseFailed - operation.Status.Error = "Backup cancelled by user" - // ... mark as failed and continue -} - -// In Reconcile() phase transition logic -if !stillInProgress { - if backup.Spec.Cancel { - backup.Status.Phase = velerov1api.BackupPhaseFinalizingCancelled - } else if backup.Status.Phase == velerov1api.BackupPhaseWaitingForPluginOperations { - backup.Status.Phase = velerov1api.BackupPhaseFinalizing - } else { - backup.Status.Phase = velerov1api.BackupPhaseFinalizingPartiallyFailed - } -} -``` - -**backup_finalizer_controller** - -The backup finalizer controller will handle cancelled backups differently from normal finalization: - -1. **Detect Cancelled Finalization**: Check for `BackupPhaseFinalizingCancelled` phase -2. **Cleanup Backup Data**: Remove backup content, metadata, and snapshots from object storage -3. **Preserve Logs**: Keep backup logs for debugging and inspection -4. **Final Phase**: Transition to `BackupPhaseFailed` with appropriate failure reason - -```go -switch backup.Status.Phase { -case velerov1api.BackupPhaseFinalizing: - // Normal finalization - preserve everything - backup.Status.Phase = velerov1api.BackupPhaseCompleted - -case velerov1api.BackupPhaseFinalizingPartiallyFailed: - // Partial failure finalization - preserve data - backup.Status.Phase = velerov1api.BackupPhasePartiallyFailed - -case velerov1api.BackupPhaseFinalizingCancelled: - // Cancelled finalization - clean up data but preserve logs - if err := cleanupCancelledBackupData(backupStore, backup.Name); err != nil { - log.WithError(err).Error("Failed to cleanup cancelled backup data") - } - backup.Status.Phase = velerov1api.BackupPhaseFailed - backup.Status.FailureReason = "Backup cancelled by user" -} -``` - -**backup_controller** - -No changes required for the first implementation. Cancellation during the initial backup phase (before async operations) is out of scope. - -### Cancellation Flow - -#### BackupItemAction Operations -For operations with BackupItemAction v2 implementations (e.g., CSI PVC actions): -1. Controller calls `bia.Cancel(operationID, backup)` -2. CSI PVC action finds associated DataUpload and sets `du.Spec.Cancel = true` -3. Node-agent DataUpload controller handles actual cancellation -4. Operation marked as `OperationPhaseCanceled` - -#### PodVolumeBackup Operations -BackupWithResolvers is atomic -If cancellation happens before the call, nothing happens, ItemBlocks or PodVolumeBackups -If after, PostHooks ensure that PodVolumeBackups are completed, so there is no cancellation here - -We focus on async ops for this first pass - - -## Alternatives Considered - - -### Alternative 1: Deletion-Based Cancellation -Using backup deletion as the cancellation mechanism instead of a cancel field. -This was rejected because it doesn't allow users to preserve the backup object for inspection after cancellation, and deletion has different semantic meaning. - -### Alternative 2: Timeout-Based Automatic Cancellation -Automatically cancelling backups after a configurable timeout. -This was considered out of scope for the initial implementation as it addresses a different use case than user-initiated cancellation. - -## Security Considerations -The cancel field requires the same RBAC permissions as updating other backup specification fields. -No additional security considerations are introduced as the cancellation mechanism reuses existing operation cancellation pathways that are already secured. - -## Compatibility -The new `cancel` field is optional and defaults to nil/false, ensuring backward compatibility with existing backup specifications. -Existing backups will continue to work without modification. -The new backup phases (`Cancelling`, `Cancelled`) are additive and don't affect existing phase transitions. - - -**Future Work**: - -- Replacing logic that blocks deletion of in-progress backups with the cancellation flow, followed by usual deletion for a terminal phase (Cancelled) -