From 38aabe70648e6c8d1252f753022b72f908819480 Mon Sep 17 00:00:00 2001 From: Anso Date: Thu, 11 Jun 2026 00:26:26 -0400 Subject: [PATCH] feat: health-gated updates and rollback readiness (#1354) * feat: classify stack deploy and update failures with suggested next actions Failed deploy and update responses now carry a failure classification (cause category, headline, and suggested next step) derived from the compose error output. The recovery panel and chip render the classification and include it in copied diagnostics, and gateway-style failures surface as a node-unreachable cause. * feat: add update and rollback readiness reports for stacks Before a manual update, Sencho now shows an advisory readiness verdict computed from the stored preflight result, open drift findings, live container health, the pending image change, the rollback backup slot, and node disk headroom. The Stack Dossier gains a rollback readiness section that states what a rollback can restore and explicitly discloses that volume and bind-mounted data are not covered. Toolbar and sidebar updates now share one update path, and admins can create a fleet snapshot from the readiness dialog before updating. Nodes that do not advertise the capability keep the direct update flow. * feat: observe stack health after updates with a post-deploy health gate After a deploy or update succeeds, Sencho now watches the stack for a configurable observation window and records a passed, failed, or unknown verdict: containers must stay running, healthchecks must report healthy, and restart loops or disappearing containers fail the gate. The deploy panel shows the observation live and holds off auto-closing until the verdict lands, a failed gate surfaces the existing recovery actions including rollback, and the stack timeline records update started and gate verdict events. Scheduled, webhook, bulk, and git-source updates are gated the same way; rollbacks and installs are deliberately not. The gate is observational only and can be tuned or disabled per node under host alert settings. * docs: document health-gated updates and rollback readiness New operator page covering the update readiness dialog, the post-update health gate and its settings, the rollback readiness disclosure, and classified failures, with cross-links from the atomic deployments and deploy progress pages. The API reference gains the readiness and health-gate endpoints, the healthGateId success field, and the failure classification schema on deploy and update error responses. * feat: withhold the success verdict while the health gate observes An update used to show a green Succeeded that a failed health gate then contradicted moments later. The deploy modal now reports Verifying health while the gate observes, shows success only when the gate passes, and makes a failed or unknown gate the headline result; success toasts soften to a verifying message while a gate runs. The mobile recovery card groups its actions behind one bottom-right Take action menu so it stays compact on a phone, with the classified cause still visible on the card. A successful image update now also counts as the last known-good marker in rollback readiness, and the docs gain screenshots of the readiness dialog, gate states, dossier section, and settings. * fix: harden log format strings and the env existence path check Log calls that interpolated the stack name into the console format string now use constant format strings with placeholder arguments, and envExists validates path containment inline at its filesystem access, matching the established patterns used elsewhere in the same files. * test: adapt deploy modal success specs to the post-deploy health gate The deploy feedback modal now withholds its success verdict while the health gate observes the new containers, showing "Verifying health" until the gate passes. The two success-path E2E tests waited for "Succeeded" within the gate's 90s default window and timed out. Shorten the observation window to the 15s minimum for these tests via the settings API, assert the verify-then-succeed sequence the modal actually renders, and restore the default window afterward so the test value does not leak into later runs. * fix: serialize health gate polling and harden gate observation Address race conditions in the post-update health gate found in review. Backend: the gate poller used setInterval, so a Docker observe slower than the 5s tick could overlap the next poll and corrupt the restart and missing-container accounting, and a wedged socket could leave a poll pending forever. Polling is now single-flight: each cycle self-schedules the next only after it settles, and the observe is bounded by an 8s timeout so a hung probe counts as a poll error and resolves the gate unknown after three in a row. Frontend: the gate poller could overlap requests, letting a slow earlier "observing" response overwrite an already-applied terminal verdict. It is now single-flight with a terminal latch, so a late response can never roll the UI back from passed or failed. Also reject a non-digit nodeId on the snapshot coverage route instead of letting parseInt coerce it, document that turning off the deploy progress panel opts out of the live gate UI while the gate still runs server-side, and add gate-coverage tests for the webhook, git source, and auto-update apply paths plus the new single-flight, observe-timeout, and recovery cases. --- .../src/__tests__/failure-classifier.test.ts | 154 ++++++ .../src/__tests__/git-source-service.test.ts | 23 + .../src/__tests__/health-gate-service.test.ts | 402 +++++++++++++++ .../__tests__/image-updates-routes.test.ts | 33 ++ .../src/__tests__/scheduler-service.test.ts | 26 + backend/src/__tests__/settings-routes.test.ts | 57 +++ .../stacks-failure-notifications.test.ts | 130 ++++- .../__tests__/update-guard-readiness.test.ts | 191 +++++++ .../__tests__/update-guard-rollback.test.ts | 219 ++++++++ .../src/__tests__/update-guard-routes.test.ts | 223 +++++++++ .../__tests__/update-guard-service.test.ts | 155 ++++++ .../src/__tests__/webhooks-trigger.test.ts | 46 ++ backend/src/bootstrap/shutdown.ts | 2 + backend/src/bootstrap/startup.ts | 2 + backend/src/routes/fleet.ts | 27 + backend/src/routes/imageUpdates.ts | 2 + backend/src/routes/settings.ts | 4 + backend/src/routes/stacks.ts | 75 ++- backend/src/services/CapabilityRegistry.ts | 1 + backend/src/services/DatabaseService.ts | 103 ++++ backend/src/services/FileSystemService.ts | 53 +- backend/src/services/GitSourceService.ts | 2 + backend/src/services/HealthGateService.ts | 472 ++++++++++++++++++ backend/src/services/NotificationService.ts | 5 + backend/src/services/SchedulerService.ts | 2 + backend/src/services/UpdateGuardService.ts | 175 +++++++ backend/src/services/WebhookService.ts | 3 + .../services/updateGuard/failureClassifier.ts | 125 +++++ backend/src/services/updateGuard/readiness.ts | 277 ++++++++++ backend/src/services/updateGuard/types.ts | 115 +++++ docs/docs.json | 1 + docs/features/atomic-deployments.mdx | 4 +- docs/features/deploy-progress.mdx | 2 + docs/features/health-gated-updates.mdx | 119 +++++ .../dossier-rollback-readiness.png | Bin 0 -> 183163 bytes .../modal-gate-failed.png | Bin 0 -> 155295 bytes .../health-gated-updates/modal-verifying.png | Bin 0 -> 166133 bytes .../health-gated-updates/readiness-dialog.png | Bin 0 -> 164893 bytes docs/images/health-gated-updates/settings.png | Bin 0 -> 161718 bytes docs/openapi.yaml | 235 ++++++++- e2e/deploy-log-panel.spec.ts | 38 +- .../src/components/DeployFeedbackModal.tsx | 106 +++- frontend/src/components/EditorLayout.tsx | 36 +- .../components/EditorLayout/EditorView.tsx | 14 + .../EditorLayout/RecoveryActions.tsx | 12 + .../components/EditorLayout/RecoveryChip.tsx | 5 +- .../components/EditorLayout/RecoveryPanel.tsx | 49 +- .../components/EditorLayout/ShellOverlays.tsx | 10 + .../__tests__/RecoveryPanel.test.tsx | 63 ++- .../EditorLayout/hooks/useOverlayState.ts | 9 + .../hooks/useStackActions.test.ts | 134 +++++ .../EditorLayout/hooks/useStackActions.ts | 151 +++++- .../EditorLayout/recovery-format.ts | 4 + .../__tests__/DeployFeedbackModal.test.tsx | 198 +++++++- .../components/settings/HostAlertsSection.tsx | 32 +- .../__tests__/SectionSavePayloads.test.tsx | 6 +- frontend/src/components/settings/types.ts | 4 + .../stack/RollbackReadinessSection.tsx | 107 ++++ .../stack/StackActivityTimeline.tsx | 5 +- .../stack/StackDossierPanel.test.tsx | 4 +- .../components/stack/StackDossierPanel.tsx | 3 + .../stack/UpdateReadinessDialog.tsx | 303 +++++++++++ .../RollbackReadinessSection.test.tsx | 61 +++ .../__tests__/UpdateReadinessDialog.test.tsx | 211 ++++++++ .../src/context/DeployFeedbackContext.tsx | 124 ++++- frontend/src/lib/capabilities.ts | 1 + 66 files changed, 5076 insertions(+), 79 deletions(-) create mode 100644 backend/src/__tests__/failure-classifier.test.ts create mode 100644 backend/src/__tests__/health-gate-service.test.ts create mode 100644 backend/src/__tests__/update-guard-readiness.test.ts create mode 100644 backend/src/__tests__/update-guard-rollback.test.ts create mode 100644 backend/src/__tests__/update-guard-routes.test.ts create mode 100644 backend/src/__tests__/update-guard-service.test.ts create mode 100644 backend/src/services/HealthGateService.ts create mode 100644 backend/src/services/UpdateGuardService.ts create mode 100644 backend/src/services/updateGuard/failureClassifier.ts create mode 100644 backend/src/services/updateGuard/readiness.ts create mode 100644 backend/src/services/updateGuard/types.ts create mode 100644 docs/features/health-gated-updates.mdx create mode 100644 docs/images/health-gated-updates/dossier-rollback-readiness.png create mode 100644 docs/images/health-gated-updates/modal-gate-failed.png create mode 100644 docs/images/health-gated-updates/modal-verifying.png create mode 100644 docs/images/health-gated-updates/readiness-dialog.png create mode 100644 docs/images/health-gated-updates/settings.png create mode 100644 frontend/src/components/stack/RollbackReadinessSection.tsx create mode 100644 frontend/src/components/stack/UpdateReadinessDialog.tsx create mode 100644 frontend/src/components/stack/__tests__/RollbackReadinessSection.test.tsx create mode 100644 frontend/src/components/stack/__tests__/UpdateReadinessDialog.test.tsx diff --git a/backend/src/__tests__/failure-classifier.test.ts b/backend/src/__tests__/failure-classifier.test.ts new file mode 100644 index 00000000..d771738a --- /dev/null +++ b/backend/src/__tests__/failure-classifier.test.ts @@ -0,0 +1,154 @@ +import { describe, it, expect } from 'vitest'; +import { classifyFailure } from '../services/updateGuard/failureClassifier'; +import type { FailureReason } from '../services/updateGuard/types'; + +describe('classifyFailure', () => { + const cases: Array<{ name: string; message: string; reason: FailureReason }> = [ + { + name: 'container crash sentinel', + message: 'CONTAINER_CRASHED\nExit Code: 137\nContainer exited after deployment. Check container logs for details.', + reason: 'container_exited', + }, + { + name: 'idle stall sentinel', + message: 'STACK_STALLED_OUTPUT: no output for 600s', + reason: 'unknown', + }, + { + name: 'docker daemon down (message)', + message: 'Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?', + reason: 'node_unreachable', + }, + { + name: 'docker desktop connect error', + message: 'error during connect: this error may indicate that the docker daemon is not running', + reason: 'node_unreachable', + }, + { + name: 'required variable missing', + message: 'error while interpolating services.web.environment.TOKEN: required variable REQ_TOKEN is missing a value: must be provided', + reason: 'env_missing', + }, + { + name: 'variable not set (logfmt warning escalated)', + message: 'level=warning msg="The \\"DB_HOST\\" variable is not set. Defaulting to a blank string."', + reason: 'env_missing', + }, + { + name: 'env file not found', + message: "env file /compose/app/.env not found: stat /compose/app/.env: no such file or directory", + reason: 'env_missing', + }, + { + name: 'pull access denied', + message: 'Error response from daemon: pull access denied for ghost/missing, repository does not exist or may require docker login', + reason: 'image_pull_failed', + }, + { + name: 'manifest unknown', + message: 'manifest unknown: manifest unknown', + reason: 'image_pull_failed', + }, + { + name: 'registry rate limited', + message: 'toomanyrequests: You have reached your pull rate limit.', + reason: 'image_pull_failed', + }, + { + name: 'port already allocated', + message: 'Error response from daemon: driver failed programming external connectivity: Bind for 0.0.0.0:8080 failed: port is already allocated', + reason: 'port_conflict', + }, + { + name: 'address already in use', + message: 'listen tcp4 0.0.0.0:443: bind: address already in use', + reason: 'port_conflict', + }, + { + name: 'windows ports not available', + message: 'ports are not available: exposing port TCP 0.0.0.0:5432 -> 0.0.0.0:0', + reason: 'port_conflict', + }, + { + name: 'bind source missing', + message: 'Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /srv/missing', + reason: 'bind_path_missing', + }, + { + name: 'permission denied', + message: 'open /compose/app/data: permission denied', + reason: 'permission_denied', + }, + { + name: 'unhealthy dependency', + message: 'dependency failed to start: container app-db-1 is unhealthy', + reason: 'healthcheck_failed', + }, + { + name: 'dependency exited', + message: 'dependency failed to start: container app-db-1 exited (1)', + reason: 'dependency_unavailable', + }, + { + name: 'external network missing', + message: 'network proxy_net declared as external, but could not be found', + reason: 'dependency_unavailable', + }, + { + name: 'yaml syntax error', + message: 'yaml: line 14: mapping values are not allowed in this context', + reason: 'compose_render_failed', + }, + { + name: 'undefined volume', + message: 'service "web" refers to undefined volume data: invalid compose project', + reason: 'compose_render_failed', + }, + { + name: 'unmatched output falls back to unknown', + message: 'something completely unexpected happened', + reason: 'unknown', + }, + ]; + + it.each(cases)('classifies $name as $reason', ({ message, reason }) => { + const result = classifyFailure(message); + expect(result.reason).toBe(reason); + expect(result.label.length).toBeGreaterThan(0); + expect(result.suggestion.length).toBeGreaterThan(0); + }); + + it('short-circuits to node_unreachable when the route flags a dead daemon', () => { + expect(classifyFailure('arbitrary text', { dockerUnavailable: true }).reason).toBe('node_unreachable'); + }); + + it('prefers env_missing over compose_render_failed when a render fails on a missing variable', () => { + const result = classifyFailure( + 'invalid compose project: required variable DB_PASS is missing a value', + ); + expect(result.reason).toBe('env_missing'); + }); + + it('prefers the crash sentinel over any other pattern in the same output', () => { + const result = classifyFailure( + 'CONTAINER_CRASHED\nExit Code: 1\nport is already allocated', + ); + expect(result.reason).toBe('container_exited'); + }); + + it('classifies the underlying cause of a rolled-back update from its message', () => { + // ComposeRollbackError copies the original error message, so the route can + // pass getErrorMessage(error) unchanged for wrapped failures. + const causeMessage = 'pull access denied for private/app'; + expect(classifyFailure(causeMessage).reason).toBe('image_pull_failed'); + }); + + it('always returns a classification (total over arbitrary input)', () => { + for (const message of ['', ' ', 'x'.repeat(10_000)]) { + const result = classifyFailure(message); + expect(result.reason).toBeDefined(); + expect(result.label).toBeDefined(); + expect(result.suggestion).toBeDefined(); + } + }); +}); diff --git a/backend/src/__tests__/git-source-service.test.ts b/backend/src/__tests__/git-source-service.test.ts index d832753b..c30c683a 100644 --- a/backend/src/__tests__/git-source-service.test.ts +++ b/backend/src/__tests__/git-source-service.test.ts @@ -1052,6 +1052,29 @@ describe('GitSourceService.apply', () => { .rejects.toMatchObject({ code: 'GIT_ERROR', message: expect.stringMatching(/pending commit has changed/i) }); }); + it('begins a deploy health gate after a successful apply-and-deploy', async () => { + const sha = 'eeee555eeee555eeee555eeee555eeee555eeee5'; + const svc = await seedPending('apply-deploy-gate', 'services:\n x:\n image: alpine\n', sha); + const validateSpy = vi.spyOn(svc, 'validateCompose').mockResolvedValue({ ok: true }); + const { FileSystemService } = await import('../services/FileSystemService'); + const { ComposeService } = await import('../services/ComposeService'); + const { HealthGateService } = await import('../services/HealthGateService'); + const saveSpy = vi.spyOn(FileSystemService.prototype, 'saveStackContent').mockResolvedValue(); + const deploySpy = vi.spyOn(ComposeService.prototype, 'deployStack').mockResolvedValue(); + const beginSpy = vi.spyOn(HealthGateService.getInstance(), 'begin').mockReturnValue('gate-git'); + const nodeId = DatabaseService.getInstance().getDefaultNode()!.id!; + + const result = await svc.apply('apply-deploy-gate', sha, { deploy: true }); + expect(result.deployed).toBe(true); + expect(deploySpy).toHaveBeenCalledWith('apply-deploy-gate'); + expect(beginSpy).toHaveBeenCalledWith(nodeId, 'apply-deploy-gate', 'deploy', 'system:git-source'); + + validateSpy.mockRestore(); + saveSpy.mockRestore(); + deploySpy.mockRestore(); + beginSpy.mockRestore(); + }); + it('returns deployError when the deploy step fails after writing to disk', async () => { const sha = 'cccc333cccc333cccc333cccc333cccc333cccc3'; const svc = await seedPending('apply-deploy-fail', 'services:\n x:\n image: alpine\n', sha); diff --git a/backend/src/__tests__/health-gate-service.test.ts b/backend/src/__tests__/health-gate-service.test.ts new file mode 100644 index 00000000..fdd0ac23 --- /dev/null +++ b/backend/src/__tests__/health-gate-service.test.ts @@ -0,0 +1,402 @@ +/** + * State-machine tests for HealthGateService with fake timers and an in-memory + * DatabaseService mock: verdicts, restart detection, supersede semantics, + * startup sweep, the disabled setting, the concurrency cap, and timer hygiene. + */ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; + +interface StoredRun { + id: string; + node_id: number; + stack_name: string; + trigger_action: 'update' | 'deploy'; + status: 'observing' | 'passed' | 'failed' | 'unknown'; + reason: string | null; + window_seconds: number; + containers_json: string; + started_at: number; + ended_at: number | null; + created_by: string | null; +} + +const { state } = vi.hoisted(() => ({ + state: { + runs: new Map(), + activity: [] as Array<{ category?: string; message: string; level: string }>, + settings: {} as Record, + listContainers: vi.fn(), + inspect: vi.fn(), + }, +})); + +vi.mock('../services/DatabaseService', () => ({ + DatabaseService: { + getInstance: () => ({ + getGlobalSettings: () => state.settings, + insertHealthGateRun: (run: StoredRun) => { state.runs.set(run.id, { ...run }); }, + finalizeHealthGateRun: (id: string, status: StoredRun['status'], reason: string | null, endedAt: number, containersJson: string) => { + const run = state.runs.get(id); + if (run) Object.assign(run, { status, reason, ended_at: endedAt, containers_json: containersJson }); + }, + getHealthGateRun: (nodeId: number, stackName: string, id: string) => { + const run = state.runs.get(id); + return run && run.node_id === nodeId && run.stack_name === stackName ? { ...run } : undefined; + }, + getLatestHealthGateRun: (nodeId: number, stackName: string) => { + const matches = [...state.runs.values()] + .filter(r => r.node_id === nodeId && r.stack_name === stackName) + .sort((a, b) => b.started_at - a.started_at); + return matches[0] ? { ...matches[0] } : undefined; + }, + markInterruptedHealthGateRuns: (reason: string, endedAt: number) => { + let n = 0; + for (const run of state.runs.values()) { + if (run.status === 'observing') { + Object.assign(run, { status: 'unknown', reason, ended_at: endedAt }); + n++; + } + } + return n; + }, + addNotificationHistory: (_nodeId: number, item: { category?: string; message: string; level: string }) => { + state.activity.push(item); + return { ...item, id: state.activity.length, is_read: false }; + }, + }), + }, +})); + +vi.mock('../services/DockerController', () => ({ + default: { + getInstance: () => ({ + getDocker: () => ({ + listContainers: state.listContainers, + getContainer: (id: string) => ({ inspect: () => state.inspect(id) }), + }), + }), + }, +})); + +import { HealthGateService } from '../services/HealthGateService'; + +type ContainerFixture = { + id: string; + name: string; + state?: string; + health?: string | null; + restartCount?: number; + startedAt?: string; +}; + +/** Configure the docker mocks from a simple fixture list. */ +function setContainers(fixtures: ContainerFixture[]): void { + state.listContainers.mockResolvedValue(fixtures.map(f => ({ Id: f.id, Names: [`/${f.name}`], State: f.state ?? 'running' }))); + state.inspect.mockImplementation((id: string) => { + const f = fixtures.find(c => c.id === id); + if (!f) return Promise.reject(Object.assign(new Error('no such container'), { statusCode: 404 })); + return Promise.resolve({ + State: { + Status: f.state ?? 'running', + Health: f.health !== undefined && f.health !== null ? { Status: f.health } : undefined, + StartedAt: f.startedAt ?? '2026-06-10T00:00:00Z', + }, + RestartCount: f.restartCount ?? 0, + }); + }); +} + +const svc = () => HealthGateService.getInstance(); + +const latest = (stack = 'web') => svc().getReport(0, stack); + +async function ticks(n: number): Promise { + for (let i = 0; i < n; i++) { + await vi.advanceTimersByTimeAsync(5_000); + } +} + +beforeEach(() => { + vi.useFakeTimers(); + state.runs.clear(); + state.activity.length = 0; + state.settings = { health_gate_enabled: '1', health_gate_window_seconds: '30' }; + state.listContainers.mockReset(); + state.inspect.mockReset(); + setContainers([{ id: 'aaa', name: 'web-app-1' }]); + svc().start(); +}); + +afterEach(() => { + svc().stop(); + expect(vi.getTimerCount()).toBe(0); + vi.useRealTimers(); +}); + +describe('HealthGateService verdicts', () => { + it('passes at the window end when containers stay running', async () => { + const id = svc().begin(0, 'web', 'update', 'tester'); + expect(id).toBeTruthy(); + await ticks(3); // 15s: still observing + expect(latest().status).toBe('observing'); + await ticks(4); // past the 30s window + expect(latest().status).toBe('passed'); + expect(state.activity.some(a => a.category === 'health_gate_passed')).toBe(true); + }); + + it('fails fast when a container exits', async () => { + svc().begin(0, 'web', 'update', 'tester'); + await ticks(1); // baseline + setContainers([{ id: 'aaa', name: 'web-app-1', state: 'exited' }]); + await ticks(1); + const report = latest(); + expect(report.status).toBe('failed'); + expect(report.reason).toContain('exited'); + expect(state.activity.some(a => a.category === 'health_gate_failed')).toBe(true); + }); + + it('fails fast when a healthcheck reports unhealthy', async () => { + svc().begin(0, 'web', 'update', 'tester'); + await ticks(1); + setContainers([{ id: 'aaa', name: 'web-app-1', health: 'unhealthy' }]); + await ticks(1); + expect(latest().status).toBe('failed'); + expect(latest().reason).toContain('unhealthy'); + }); + + it('detects a restart loop via container replacement (new id)', async () => { + svc().begin(0, 'web', 'update', 'tester'); + await ticks(1); + setContainers([{ id: 'bbb', name: 'web-app-1' }]); + await ticks(1); // restart 1 observed; carried as new baseline + setContainers([{ id: 'ccc', name: 'web-app-1' }]); + await ticks(1); // restart 2: loop + const report = latest(); + expect(report.status).toBe('failed'); + expect(report.reason).toContain('restart looping'); + // The persisted summary reflects the tally the verdict acted on. + expect(report.containers).toEqual([ + expect.objectContaining({ name: 'web-app-1', restarts: 2 }), + ]); + }); + + it('detects a restart loop via RestartCount and StartedAt movement', async () => { + svc().begin(0, 'web', 'update', 'tester'); + await ticks(1); + setContainers([{ id: 'aaa', name: 'web-app-1', restartCount: 1 }]); + await ticks(1); + setContainers([{ id: 'aaa', name: 'web-app-1', restartCount: 1, startedAt: '2026-06-10T00:05:00Z' }]); + await ticks(1); + const report = latest(); + expect(report.status).toBe('failed'); + expect(report.reason).toContain('restart looping'); + expect(report.containers).toEqual([ + expect.objectContaining({ name: 'web-app-1', restarts: 2 }), + ]); + }); + + it('tolerates a one-poll disappearance but fails on two consecutive misses', async () => { + svc().begin(0, 'web', 'update', 'tester'); + await ticks(1); // baseline + setContainers([]); // one missed poll: tolerated + await ticks(1); + setContainers([{ id: 'aaa', name: 'web-app-1' }]); // back before the second miss + await ticks(5); // through the 30s window + expect(latest().status).toBe('passed'); + + const second = svc().begin(0, 'web', 'update', 'tester')!; + await ticks(1); + setContainers([]); + await ticks(2); // two consecutive misses: disappeared + const report = svc().getReport(0, 'web', second); + expect(report.status).toBe('failed'); + expect(report.reason).toContain('disappeared'); + }); + + it('fails when a container is stuck restarting across consecutive polls', async () => { + svc().begin(0, 'web', 'update', 'tester'); + await ticks(1); + setContainers([{ id: 'aaa', name: 'web-app-1', state: 'restarting' }]); + await ticks(2); + expect(latest().status).toBe('failed'); + expect(latest().reason).toContain('restarting'); + }); + + it('goes unknown after three consecutive docker errors', async () => { + svc().begin(0, 'web', 'update', 'tester'); + await ticks(1); + state.listContainers.mockRejectedValue(new Error('socket gone')); + await ticks(3); + expect(latest().status).toBe('unknown'); + expect(latest().reason).toContain('unreachable'); + }); + + it('resolves unknown when every docker observe hangs', async () => { + svc().begin(0, 'web', 'update', 'tester'); + // A wedged socket never settles. The per-observe timeout turns each poll + // into an error, and three in a row finalize the gate unknown instead of + // observing forever on a pending promise. + state.listContainers.mockImplementation(() => new Promise(() => {})); + // Each cycle is the 5s interval plus the 8s observe timeout; 45s covers + // three of them. + await vi.advanceTimersByTimeAsync(45_000); + expect(latest().status).toBe('unknown'); + expect(latest().reason).toContain('unreachable'); + }); + + it('recovers from a transient observe timeout instead of finalizing', async () => { + svc().begin(0, 'web', 'update', 'tester'); + // One observe wedges and times out (a single strike), then the socket + // recovers; the gate must keep observing, not give up at one error. + state.listContainers.mockImplementationOnce(() => new Promise(() => {})); + // 14s covers the first cycle's 5s wait plus 8s timeout. + await vi.advanceTimersByTimeAsync(14_000); + expect(latest().status).toBe('observing'); + // Later polls succeed and carry the gate to a pass at the window end. + await vi.advanceTimersByTimeAsync(50_000); + expect(latest().status).toBe('passed'); + }); + + it('runs polls single-flight: no second observe until the first settles', async () => { + svc().begin(0, 'web', 'update', 'tester'); + let release: (value: Array<{ Id: string; Names: string[]; State: string }>) => void = () => {}; + state.listContainers.mockImplementationOnce(() => new Promise(resolve => { release = resolve; })); + // Advance past a second poll interval while the first observe is still + // pending. Self-scheduling means the next poll is armed only after the + // current cycle settles, so listContainers is entered exactly once. + await vi.advanceTimersByTimeAsync(7_000); + expect(state.listContainers).toHaveBeenCalledTimes(1); + // Let the first cycle finish; the next poll then runs and observes again. + release([{ Id: 'aaa', Names: ['/web-app-1'], State: 'running' }]); + await vi.advanceTimersByTimeAsync(5_000); + expect(state.listContainers.mock.calls.length).toBeGreaterThanOrEqual(2); + }); + + it('ends unknown when a healthcheck is still starting at the window end', async () => { + svc().begin(0, 'web', 'update', 'tester'); + setContainers([{ id: 'aaa', name: 'web-app-1', health: 'starting' }]); + await ticks(7); + expect(latest().status).toBe('unknown'); + expect(latest().reason).toContain('still starting'); + }); + + it('goes unknown when no containers ever appear', async () => { + setContainers([]); + svc().begin(0, 'web', 'update', 'tester'); + await ticks(4); + expect(latest().status).toBe('unknown'); + expect(latest().reason).toContain('no containers'); + }); +}); + +describe('HealthGateService lifecycle', () => { + it('never lets a poll that straddled a supersede overwrite the terminal verdict', async () => { + // A poll is mid-await on Docker when a newer update supersedes the gate; + // when the await resolves with healthy containers, the superseded run + // must keep its terminal unknown verdict. + const first = svc().begin(0, 'web', 'update', 'tester')!; + await ticks(2); // baseline established, healthy + + let releasePoll: (value: Array<{ Id: string; Names: string[]; State: string }>) => void = () => {}; + state.listContainers.mockImplementationOnce( + () => new Promise(resolve => { releasePoll = resolve; }), + ); + const straddlingPoll = vi.advanceTimersByTimeAsync(5_000); // poll now awaiting Docker + + const second = svc().begin(0, 'web', 'update', 'tester')!; + expect(svc().getReport(0, 'web', first).status).toBe('unknown'); + + releasePoll([{ Id: 'aaa', Names: ['/web-app-1'], State: 'running' }]); + await straddlingPoll; + + const superseded = svc().getReport(0, 'web', first); + expect(superseded.status).toBe('unknown'); + expect(superseded.reason).toContain('superseded'); + + await ticks(7); + expect(svc().getReport(0, 'web', second).status).toBe('passed'); + }); + + it('supersede finalizes the old run as unknown, clears its timer, and getRun still resolves it', async () => { + const first = svc().begin(0, 'web', 'update', 'tester')!; + await ticks(1); + const timersBefore = vi.getTimerCount(); + const second = svc().begin(0, 'web', 'update', 'tester')!; + expect(vi.getTimerCount()).toBe(timersBefore); // old interval cleared, new one added + + const superseded = svc().getReport(0, 'web', first); + expect(superseded.status).toBe('unknown'); + expect(superseded.reason).toContain('superseded'); + + await ticks(7); + expect(svc().getReport(0, 'web', second).status).toBe('passed'); + // The by-id read still returns the superseded run unchanged. + expect(svc().getReport(0, 'web', first).status).toBe('unknown'); + }); + + it('start() sweeps runs left observing by a previous process', () => { + state.runs.set('stale', { + id: 'stale', node_id: 0, stack_name: 'web', trigger_action: 'update', status: 'observing', + reason: null, window_seconds: 30, containers_json: '[]', started_at: 1, ended_at: null, created_by: null, + }); + svc().start(); + expect(state.runs.get('stale')!.status).toBe('unknown'); + expect(state.runs.get('stale')!.reason).toContain('restarted'); + }); + + it('no-ops when disabled but still records the update_started event', () => { + state.settings.health_gate_enabled = '0'; + const id = svc().begin(0, 'web', 'update', 'tester'); + expect(id).toBeNull(); + expect(state.runs.size).toBe(0); + expect(state.activity.some(a => a.category === 'update_started')).toBe(true); + expect(vi.getTimerCount()).toBe(0); + }); + + it('records update_started for update triggers but not deploy triggers', () => { + svc().begin(0, 'web', 'deploy', 'tester'); + expect(state.activity.some(a => a.category === 'update_started')).toBe(false); + svc().begin(0, 'web', 'update', 'tester'); + expect(state.activity.some(a => a.category === 'update_started')).toBe(true); + }); + + it('refuses to begin before start() so shutdown cannot leak timers', () => { + svc().stop(); + expect(svc().begin(0, 'web', 'update', 'tester')).toBeNull(); + expect(vi.getTimerCount()).toBe(0); + svc().start(); + }); + + it('persists an immediate unknown past the concurrency cap', () => { + for (let i = 0; i < 25; i++) { + svc().begin(0, `stack-${i}`, 'update', 'tester'); + } + const overCap = svc().begin(0, 'one-too-many', 'update', 'tester')!; + const report = svc().getReport(0, 'one-too-many', overCap); + expect(report.status).toBe('unknown'); + expect(report.reason).toContain('concurrent'); + }); + + it('clamps the configured window into its valid range and falls back on garbage', () => { + state.settings.health_gate_window_seconds = '99999'; + const a = svc().begin(0, 'web', 'update', 'tester')!; + expect(svc().getReport(0, 'web', a).windowSeconds).toBe(600); + state.settings.health_gate_window_seconds = 'banana'; + const b = svc().begin(0, 'web', 'update', 'tester')!; + expect(svc().getReport(0, 'web', b).windowSeconds).toBe(90); + }); + + it('returns the never-run sentinel for a stack with no runs', () => { + const report = svc().getReport(0, 'nothing-here'); + expect(report.status).toBe('never-run'); + expect(report.id).toBeNull(); + }); + + it('stop() finalizes in-flight gates as unknown with zero timers left', async () => { + const id = svc().begin(0, 'web', 'update', 'tester')!; + await ticks(1); + svc().stop(); + expect(vi.getTimerCount()).toBe(0); + expect(svc().getReport(0, 'web', id).status).toBe('unknown'); + svc().start(); + }); +}); diff --git a/backend/src/__tests__/image-updates-routes.test.ts b/backend/src/__tests__/image-updates-routes.test.ts index 2689c9bb..e90aa3b2 100644 --- a/backend/src/__tests__/image-updates-routes.test.ts +++ b/backend/src/__tests__/image-updates-routes.test.ts @@ -207,4 +207,37 @@ describe('POST /api/auto-update/execute', () => { expect(res.status).toBe(200); expect(typeof res.body.result).toBe('string'); }); + + it('begins an update health gate after an auto-update applies', async () => { + // Target a single stack; the route works off the running containers, so + // stub the container probe, the update check, and the compose update, then + // assert the gate begins for the applied stack. + const { TEST_USERNAME } = await import('./helpers/setupTestDb'); + const DockerController = (await import('../services/DockerController')).default; + const { ImageUpdateService } = await import('../services/ImageUpdateService'); + const { ComposeService } = await import('../services/ComposeService'); + const { HealthGateService } = await import('../services/HealthGateService'); + const nodeId = DatabaseService.getInstance().getDefaultNode()!.id!; + + const containersSpy = vi.spyOn(DockerController.prototype, 'getContainersByStack') + .mockResolvedValue([{ Id: 'c1', Image: 'nginx:latest' }] as never); + const checkSpy = vi.spyOn(ImageUpdateService.getInstance(), 'checkImage') + .mockResolvedValue({ hasUpdate: true } as never); + const updateSpy = vi.spyOn(ComposeService.prototype, 'updateStack').mockResolvedValue(); + const beginSpy = vi.spyOn(HealthGateService.getInstance(), 'begin').mockReturnValue('gate-au'); + try { + const res = await request(app) + .post('/api/auto-update/execute') + .set('Cookie', adminCookie) + .send({ target: 'auto-upd-gate' }); + expect(res.status).toBe(200); + expect(updateSpy).toHaveBeenCalledWith('auto-upd-gate', undefined, true); + expect(beginSpy).toHaveBeenCalledWith(nodeId, 'auto-upd-gate', 'update', `auto-update:${TEST_USERNAME}`); + } finally { + containersSpy.mockRestore(); + checkSpy.mockRestore(); + updateSpy.mockRestore(); + beginSpy.mockRestore(); + } + }); }); diff --git a/backend/src/__tests__/scheduler-service.test.ts b/backend/src/__tests__/scheduler-service.test.ts index 2a53093b..6713010a 100644 --- a/backend/src/__tests__/scheduler-service.test.ts +++ b/backend/src/__tests__/scheduler-service.test.ts @@ -647,6 +647,32 @@ describe('SchedulerService - executeUpdate', () => { ); }); + it('begins a health gate after a scheduled update succeeds', async () => { + const { HealthGateService } = await import('../services/HealthGateService'); + const beginSpy = vi.spyOn(HealthGateService.getInstance(), 'begin').mockReturnValue('gate-1'); + try { + mockGetScheduledTask.mockReturnValue({ + id: 83, + name: 'update-gated', + action: 'update', + cron_expression: '0 4 * * *', + enabled: true, + target_id: 'web-app', + node_id: 1, + created_by: 'admin', + last_status: null, + }); + mockGetContainersByStack.mockResolvedValue([{ Id: 'c1', Image: 'nginx:latest' }]); + mockCheckImage.mockResolvedValue({ hasUpdate: true }); + + await SchedulerService.getInstance().triggerTask(83); + + expect(beginSpy).toHaveBeenCalledWith(1, 'web-app', 'update', 'system:scheduler'); + } finally { + beginSpy.mockRestore(); + } + }); + it('skips when all images up to date', async () => { mockGetScheduledTask.mockReturnValue({ id: 81, diff --git a/backend/src/__tests__/settings-routes.test.ts b/backend/src/__tests__/settings-routes.test.ts index 5c362cb4..2bbef2e4 100644 --- a/backend/src/__tests__/settings-routes.test.ts +++ b/backend/src/__tests__/settings-routes.test.ts @@ -236,6 +236,63 @@ describe('prune_on_update (auto-prune after updates)', () => { }); }); +describe('health gate settings', () => { + it('seeds enabled with a 90 second window in a fresh database', () => { + const settings = DatabaseService.getInstance().getGlobalSettings(); + expect(settings.health_gate_enabled).toBe('1'); + expect(settings.health_gate_window_seconds).toBe('90'); + }); + + it('is exposed through the settings GET projection', async () => { + const res = await request(app).get('/api/settings').set('Cookie', adminCookie); + expect(res.status).toBe(200); + expect(res.body.health_gate_enabled).toBeDefined(); + expect(res.body.health_gate_window_seconds).toBeDefined(); + }); + + it('accepts a single-key toggle write and persists it', async () => { + const res = await request(app) + .post('/api/settings') + .set('Cookie', adminCookie) + .send({ key: 'health_gate_enabled', value: '0' }); + expect(res.status).toBe(200); + expect(DatabaseService.getInstance().getGlobalSettings().health_gate_enabled).toBe('0'); + DatabaseService.getInstance().updateGlobalSetting('health_gate_enabled', '1'); + }); + + it('accepts an in-range window via bulk PATCH alongside another key', async () => { + const res = await request(app) + .patch('/api/settings') + .set('Cookie', adminCookie) + .send({ health_gate_window_seconds: 120, health_gate_enabled: '1' }); + expect(res.status).toBe(200); + expect(DatabaseService.getInstance().getGlobalSettings().health_gate_window_seconds).toBe('120'); + DatabaseService.getInstance().updateGlobalSetting('health_gate_window_seconds', '90'); + }); + + it('rejects out-of-range windows and non-enum toggles', async () => { + const tooShort = await request(app) + .post('/api/settings') + .set('Cookie', adminCookie) + .send({ key: 'health_gate_window_seconds', value: '5' }); + expect(tooShort.status).toBe(400); + + const tooLong = await request(app) + .post('/api/settings') + .set('Cookie', adminCookie) + .send({ key: 'health_gate_window_seconds', value: '9000' }); + expect(tooLong.status).toBe(400); + + const badToggle = await request(app) + .post('/api/settings') + .set('Cookie', adminCookie) + .send({ key: 'health_gate_enabled', value: 'yes' }); + expect(badToggle.status).toBe(400); + + expect(DatabaseService.getInstance().getGlobalSettings().health_gate_window_seconds).toBe('90'); + }); +}); + describe('PATCH /api/settings (bulk update)', () => { it('rejects unauthenticated requests with 401', async () => { const res = await request(app).patch('/api/settings').send({ host_cpu_limit: 50 }); diff --git a/backend/src/__tests__/stacks-failure-notifications.test.ts b/backend/src/__tests__/stacks-failure-notifications.test.ts index 6088748f..4a225329 100644 --- a/backend/src/__tests__/stacks-failure-notifications.test.ts +++ b/backend/src/__tests__/stacks-failure-notifications.test.ts @@ -7,7 +7,7 @@ * ComposeService and DockerController are mocked so no real Docker daemon is * required. NotificationService.dispatchAlert is spied on to assert dispatch. */ -import { describe, it, expect, beforeAll, afterAll, vi, beforeEach } from 'vitest'; +import { describe, it, expect, beforeAll, afterAll, vi, beforeEach, afterEach } from 'vitest'; import request from 'supertest'; import jwt from 'jsonwebtoken'; import { setupTestDb, cleanupTestDb, loginAsTestAdmin, TEST_JWT_SECRET } from './helpers/setupTestDb'; @@ -242,6 +242,134 @@ describe('deploy_failure notification on /deploy error', () => { }); }); +describe('health gate begin call sites', () => { + let beginSpy: ReturnType; + + beforeEach(async () => { + const { HealthGateService } = await import('../services/HealthGateService'); + beginSpy = vi.spyOn(HealthGateService.getInstance(), 'begin').mockReturnValue('gate-123') as ReturnType; + }); + + afterEach(() => { + beginSpy.mockRestore(); + }); + + it('begins a gate after a manual deploy and returns its id', async () => { + mockDeployStack.mockResolvedValue(undefined); + const res = await request(app) + .post('/api/stacks/myapp/deploy') + .set('Cookie', authCookie) + .send({ skip_scan: true }); + expect(res.status).toBe(200); + expect(beginSpy).toHaveBeenCalledWith(expect.any(Number), 'myapp', 'deploy', 'testadmin'); + expect(res.body.healthGateId).toBe('gate-123'); + }); + + it('begins a gate after a manual update and returns its id', async () => { + mockUpdateStack.mockResolvedValue(undefined); + const res = await request(app) + .post('/api/stacks/myapp/update') + .set('Cookie', authCookie) + .send({ skip_scan: true }); + expect(res.status).toBe(200); + expect(beginSpy).toHaveBeenCalledWith(expect.any(Number), 'myapp', 'update', 'testadmin'); + expect(res.body.healthGateId).toBe('gate-123'); + }); + + it('begins a gate per stack in a bulk update and carries ids in the results', async () => { + mockUpdateStack.mockResolvedValue(undefined); + const res = await request(app) + .post('/api/stacks/bulk') + .set('Cookie', authCookie) + .send({ action: 'update', stackNames: ['myapp', 'webapp'] }); + expect(res.status).toBe(200); + expect(beginSpy).toHaveBeenCalledWith(expect.any(Number), 'myapp', 'update', 'testadmin'); + expect(beginSpy).toHaveBeenCalledWith(expect.any(Number), 'webapp', 'update', 'testadmin'); + const items = res.body.results as Array<{ stackName: string; ok: boolean; healthGateId?: string | null }>; + expect(items).toHaveLength(2); + for (const item of items) { + expect(item.ok).toBe(true); + expect(item.healthGateId).toBe('gate-123'); + } + }); + + it('does not begin a gate on a failed deploy', async () => { + mockDeployStack.mockRejectedValue(new Error('boom')); + await request(app).post('/api/stacks/myapp/deploy').set('Cookie', authCookie); + expect(beginSpy).not.toHaveBeenCalled(); + }); + + it('never begins a gate for the rollback recovery path', async () => { + mockDeployStack.mockResolvedValue(undefined); + const res = await request(app) + .post('/api/stacks/myapp/rollback') + .set('Cookie', authCookie); + expect(res.status).toBe(200); + expect(beginSpy).not.toHaveBeenCalled(); + }); +}); + +describe('failure classification on deploy/update error responses', () => { + it('classifies a failed deploy and includes failure in the body', async () => { + mockDeployStack.mockRejectedValue( + new Error('Bind for 0.0.0.0:8080 failed: port is already allocated'), + ); + + const res = await request(app) + .post('/api/stacks/myapp/deploy') + .set('Cookie', authCookie); + + expect(res.status).toBe(500); + expect(res.body.failure).toMatchObject({ reason: 'port_conflict' }); + expect(typeof res.body.failure.label).toBe('string'); + expect(typeof res.body.failure.suggestion).toBe('string'); + }); + + it('classifies a failed update and includes failure in the body', async () => { + mockUpdateStack.mockRejectedValue( + new Error('pull access denied for private/app, repository does not exist'), + ); + + const res = await request(app) + .post('/api/stacks/myapp/update') + .set('Cookie', authCookie); + + expect(res.status).toBe(500); + expect(res.body.failure).toMatchObject({ reason: 'image_pull_failed' }); + }); + + it('classifies the underlying cause when the update was rolled back', async () => { + mockUpdateStack.mockRejectedValue( + new ComposeRollbackError( + new Error('dependency failed to start: container app-db-1 is unhealthy'), + true, + true, + ), + ); + + const res = await request(app) + .post('/api/stacks/myapp/update') + .set('Cookie', authCookie); + + expect(res.status).toBe(500); + expect(res.body).toMatchObject({ + rolledBack: true, + failure: { reason: 'healthcheck_failed' }, + }); + }); + + it('falls back to unknown for unrecognized failures', async () => { + mockDeployStack.mockRejectedValue(new Error('weird one-off explosion')); + + const res = await request(app) + .post('/api/stacks/myapp/deploy') + .set('Cookie', authCookie); + + expect(res.status).toBe(500); + expect(res.body.failure.reason).toBe('unknown'); + }); +}); + describe('post-deploy scan opt-out', () => { it('does not trigger a post-deploy scan when skip_scan is true', async () => { mockDeployStack.mockResolvedValue(undefined); diff --git a/backend/src/__tests__/update-guard-readiness.test.ts b/backend/src/__tests__/update-guard-readiness.test.ts new file mode 100644 index 00000000..4091815e --- /dev/null +++ b/backend/src/__tests__/update-guard-readiness.test.ts @@ -0,0 +1,191 @@ +import { describe, it, expect } from 'vitest'; +import { + aggregateVerdict, + backupSlotSignal, + containersSignal, + diskSignal, + driftSignal, + healthchecksSignal, + preflightSignal, + updatePreviewSignal, +} from '../services/updateGuard/readiness'; +import type { ContainerProbe, ReadinessSignal } from '../services/updateGuard/types'; +import type { UpdatePreviewSummary } from '../services/UpdatePreviewService'; + +const NOW = 1_750_000_000_000; + +const probe = (over: Partial = {}): ContainerProbe => ({ + name: 'app-web-1', + state: 'running', + health: null, + exitCode: null, + hasHealthcheck: false, + restartPolicy: 'unless-stopped', + mounts: [], + ...over, +}); + +const summary = (over: Partial = {}): UpdatePreviewSummary => ({ + has_update: false, + primary_image: null, + current_tag: null, + next_tag: null, + semver_bump: 'none', + update_kind: 'none', + blocked: false, + blocked_reason: null, + ...over, +}); + +describe('preflightSignal', () => { + const cases = [ + { status: 'never-run', expected: 'unknown', affects: false }, + { status: 'blocker', expected: 'blocked', affects: true }, + { status: 'unrenderable', expected: 'attention', affects: true }, + { status: 'high', expected: 'attention', affects: true }, + { status: 'warning', expected: 'warning', affects: true }, + { status: 'pass', expected: 'ok', affects: true }, + { status: 'info', expected: 'ok', affects: true }, + ] as const; + + it.each(cases)('maps preflight status $status to $expected', ({ status, expected, affects }) => { + const signal = preflightSignal({ status }); + expect(signal.status).toBe(expected); + expect(signal.affectsVerdict).toBe(affects); + }); + + it('degrades a read failure to a non-verdict-affecting unknown', () => { + const signal = preflightSignal('error'); + expect(signal.status).toBe('unknown'); + expect(signal.affectsVerdict).toBe(false); + }); +}); + +describe('driftSignal', () => { + it('warns on open findings and is ok at zero', () => { + expect(driftSignal(2).status).toBe('warning'); + expect(driftSignal(0).status).toBe('ok'); + expect(driftSignal('error')).toMatchObject({ status: 'unknown', affectsVerdict: false }); + }); +}); + +describe('containersSignal', () => { + it('is ok when all containers run normally', () => { + expect(containersSignal([probe(), probe({ name: 'app-db-1' })]).status).toBe('ok'); + }); + + it('warns when the stack is not running', () => { + const signal = containersSignal([]); + expect(signal.status).toBe('warning'); + expect(signal.detail).toContain('not running'); + }); + + it('flags unhealthy, restarting, and crashed containers for review', () => { + expect(containersSignal([probe({ health: 'unhealthy' })]).status).toBe('attention'); + expect(containersSignal([probe({ state: 'restarting' })]).status).toBe('attention'); + expect(containersSignal([probe({ state: 'exited', exitCode: 1 })]).status).toBe('attention'); + }); + + it('does not flag a cleanly exited container', () => { + expect(containersSignal([probe(), probe({ state: 'exited', exitCode: 0 })]).status).toBe('ok'); + }); + + it('treats a docker error as a verdict-affecting unknown', () => { + expect(containersSignal('error')).toMatchObject({ status: 'unknown', affectsVerdict: true }); + }); +}); + +describe('healthchecksSignal', () => { + it('is informational and never affects the verdict', () => { + for (const input of [[probe()], [probe({ hasHealthcheck: true })], [], 'error'] as const) { + const signal = healthchecksSignal(input as ContainerProbe[] | 'error'); + expect(signal.status).toBe('ok'); + expect(signal.affectsVerdict).toBe(false); + } + }); + + it('states coverage and missing restart policies', () => { + const signal = healthchecksSignal([ + probe({ hasHealthcheck: true }), + probe({ name: 'app-db-1', restartPolicy: null }), + ]); + expect(signal.detail).toContain('1 of 2'); + expect(signal.detail).toContain('no restart policy'); + }); +}); + +describe('updatePreviewSignal', () => { + it('reflects a policy block as blocked', () => { + const signal = updatePreviewSignal(summary({ blocked: true, blocked_reason: 'Policy "prod" blocks critical CVEs' })); + expect(signal.status).toBe('blocked'); + expect(signal.detail).toContain('prod'); + }); + + it('flags a major bump for review', () => { + expect(updatePreviewSignal(summary({ has_update: true, semver_bump: 'major', current_tag: '1.9.0', next_tag: '2.0.0' })).status).toBe('attention'); + }); + + it('warns on an unclassifiable pending update', () => { + expect(updatePreviewSignal(summary({ has_update: true, semver_bump: 'unknown' })).status).toBe('warning'); + }); + + it('is ok for patch and digest updates and for no update', () => { + expect(updatePreviewSignal(summary({ has_update: true, semver_bump: 'patch', update_kind: 'tag' })).status).toBe('ok'); + expect(updatePreviewSignal(summary({ has_update: true, update_kind: 'digest' })).status).toBe('ok'); + expect(updatePreviewSignal(summary()).status).toBe('ok'); + }); + + it('degrades a preview failure to a non-verdict-affecting unknown', () => { + expect(updatePreviewSignal('error')).toMatchObject({ status: 'unknown', affectsVerdict: false }); + }); +}); + +describe('backupSlotSignal', () => { + it('is ok with an existing backup and warns without one', () => { + expect(backupSlotSignal({ exists: true, timestamp: NOW - 60_000 }, NOW).status).toBe('ok'); + expect(backupSlotSignal({ exists: false, timestamp: null }, NOW).status).toBe('warning'); + expect(backupSlotSignal('error', NOW)).toMatchObject({ status: 'unknown', affectsVerdict: false }); + }); +}); + +describe('diskSignal', () => { + it('grades disk pressure against the alert threshold', () => { + expect(diskSignal({ usePercent: 50, limitPercent: 90 }).status).toBe('ok'); + expect(diskSignal({ usePercent: 86, limitPercent: 90 }).status).toBe('warning'); + expect(diskSignal({ usePercent: 90, limitPercent: 90 }).status).toBe('attention'); + expect(diskSignal({ usePercent: 97, limitPercent: 90 }).status).toBe('attention'); + expect(diskSignal(null)).toMatchObject({ status: 'unknown', affectsVerdict: false }); + expect(diskSignal('error')).toMatchObject({ status: 'unknown', affectsVerdict: false }); + }); +}); + +describe('aggregateVerdict', () => { + const signal = (status: ReadinessSignal['status'], affectsVerdict = true): ReadinessSignal => ({ + id: 'drift', + status, + title: 't', + detail: 'd', + affectsVerdict, + }); + + it('orders blocked > attention > unknown > warning > ready', () => { + expect(aggregateVerdict([signal('ok'), signal('blocked'), signal('attention'), signal('unknown'), signal('warning')])).toBe('blocked'); + expect(aggregateVerdict([signal('ok'), signal('attention'), signal('unknown'), signal('warning')])).toBe('review_required'); + expect(aggregateVerdict([signal('ok'), signal('unknown'), signal('warning')])).toBe('unknown'); + expect(aggregateVerdict([signal('ok'), signal('warning')])).toBe('ready_with_warnings'); + expect(aggregateVerdict([signal('ok'), signal('ok')])).toBe('ready'); + }); + + it('ignores informational unknowns', () => { + expect(aggregateVerdict([signal('ok'), signal('unknown', false)])).toBe('ready'); + expect(aggregateVerdict([signal('warning'), signal('unknown', false)])).toBe('ready_with_warnings'); + }); + + it('reaches every verdict from realistic signal sets', () => { + expect(aggregateVerdict([preflightSignal({ status: 'blocker' }), driftSignal(0)])).toBe('blocked'); + expect(aggregateVerdict([preflightSignal({ status: 'high' }), driftSignal(0)])).toBe('review_required'); + expect(aggregateVerdict([containersSignal('error'), driftSignal(0)])).toBe('unknown'); + expect(aggregateVerdict([driftSignal(1), preflightSignal({ status: 'pass' })])).toBe('ready_with_warnings'); + expect(aggregateVerdict([driftSignal(0), preflightSignal({ status: 'pass' }), healthchecksSignal([probe()])])).toBe('ready'); + }); +}); diff --git a/backend/src/__tests__/update-guard-rollback.test.ts b/backend/src/__tests__/update-guard-rollback.test.ts new file mode 100644 index 00000000..6e14d128 --- /dev/null +++ b/backend/src/__tests__/update-guard-rollback.test.ts @@ -0,0 +1,219 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; + +// Mutable state the mocked NodeRegistry reads (same harness as +// filesystem-backup.test.ts) so FileSystemService can be constructed against +// temp directories. +const mockState = { composeDir: '' }; + +vi.mock('../services/NodeRegistry', () => ({ + NodeRegistry: { + getInstance: () => ({ + getComposeDir: () => mockState.composeDir, + getDefaultNodeId: () => 1, + }), + }, +})); + +import { + aggregateRollbackOverall, + buildRollbackItems, + type RollbackInputs, +} from '../services/updateGuard/readiness'; +import type { ContainerProbe } from '../services/updateGuard/types'; + +const NOW = 1_750_000_000_000; + +const baseInputs = (over: Partial = {}): RollbackInputs => ({ + backup: { exists: true, timestamp: NOW - 3_600_000 }, + envSummary: { exists: true, envPresent: true, keys: ['DB_HOST', 'DB_PASS'] }, + stackHasEnv: true, + rollbackTarget: { target: 'nginx:1.27.1' }, + lastDeployAt: NOW - 3_600_000, + containers: [{ + name: 'app-web-1', state: 'running', health: 'healthy', exitCode: null, + hasHealthcheck: true, restartPolicy: 'unless-stopped', mounts: ['volume app_data'], + }], + ...over, +}); + +const itemById = (inputs: RollbackInputs, id: string) => + buildRollbackItems(inputs, NOW).find(i => i.id === id)!; + +describe('buildRollbackItems', () => { + it('reports a full set of six items', () => { + const items = buildRollbackItems(baseInputs(), NOW); + expect(items.map(i => i.id)).toEqual([ + 'compose_source', 'env_keys', 'previous_images', 'last_deploy', 'healthchecks', 'volume_data', + ]); + }); + + it('marks the volume row not_covered unconditionally and names the mounts', () => { + const item = itemById(baseInputs(), 'volume_data'); + expect(item.state).toBe('not_covered'); + expect(item.detail).toContain('not included in file backups'); + expect(item.detail).toContain('volume app_data'); + + const noMounts = itemById(baseInputs({ containers: [] }), 'volume_data'); + expect(noMounts.state).toBe('not_covered'); + + const dockerDown = itemById(baseInputs({ containers: 'error' }), 'volume_data'); + expect(dockerDown.state).toBe('not_covered'); + }); + + it('exposes env coverage as names only', () => { + const item = itemById(baseInputs(), 'env_keys'); + expect(item.state).toBe('ready'); + expect(item.detail).toContain('2 variable names'); + expect(item.detail).not.toContain('DB_HOST'); + expect(item.detail).not.toContain('DB_PASS'); + }); + + it('treats a stack without an env file as covered', () => { + const item = itemById(baseInputs({ + envSummary: { exists: true, envPresent: false, keys: [] }, + stackHasEnv: false, + }), 'env_keys'); + expect(item.state).toBe('ready'); + expect(item.detail).toContain('no env file'); + }); + + it('flags an env file the backup predates', () => { + const item = itemById(baseInputs({ + envSummary: { exists: true, envPresent: false, keys: [] }, + stackHasEnv: true, + }), 'env_keys'); + expect(item.state).toBe('missing'); + }); + + it('marks the previous image unknown when no rollback target is known', () => { + expect(itemById(baseInputs({ rollbackTarget: { target: null } }), 'previous_images').state).toBe('unknown'); + expect(itemById(baseInputs({ rollbackTarget: 'error' }), 'previous_images').state).toBe('unknown'); + const known = itemById(baseInputs(), 'previous_images'); + expect(known.state).toBe('ready'); + expect(known.detail).toContain('nginx:1.27.1'); + }); + + it('does not mistake an image literally named error for a failed preview', () => { + const item = itemById(baseInputs({ rollbackTarget: { target: 'error' } }), 'previous_images'); + expect(item.state).toBe('ready'); + expect(item.detail).toContain('error'); + }); + + it('reports last deploy and healthcheck coverage', () => { + expect(itemById(baseInputs(), 'last_deploy').state).toBe('ready'); + expect(itemById(baseInputs({ lastDeployAt: null }), 'last_deploy').state).toBe('missing'); + expect(itemById(baseInputs(), 'healthchecks').state).toBe('ready'); + const none: ContainerProbe[] = [{ + name: 'a', state: 'running', health: null, exitCode: null, + hasHealthcheck: false, restartPolicy: null, mounts: [], + }]; + expect(itemById(baseInputs({ containers: none }), 'healthchecks').state).toBe('missing'); + }); +}); + +describe('aggregateRollbackOverall', () => { + it('is ready when compose, env, and previous image are all covered', () => { + expect(aggregateRollbackOverall(buildRollbackItems(baseInputs(), NOW))).toBe('ready'); + }); + + it('is not_ready without a backup slot', () => { + const items = buildRollbackItems(baseInputs({ + backup: { exists: false, timestamp: null }, + envSummary: { exists: false, envPresent: false, keys: [] }, + }), NOW); + expect(aggregateRollbackOverall(items)).toBe('not_ready'); + }); + + it('is partial when the previous image tag is unknown', () => { + const items = buildRollbackItems(baseInputs({ rollbackTarget: { target: null } }), NOW); + expect(aggregateRollbackOverall(items)).toBe('partial'); + }); + + it('is partial when env coverage is missing', () => { + const items = buildRollbackItems(baseInputs({ + envSummary: { exists: true, envPresent: false, keys: [] }, + stackHasEnv: true, + }), NOW); + expect(aggregateRollbackOverall(items)).toBe('partial'); + }); + + it('never gates on the volume or healthcheck disclosures', () => { + const items = buildRollbackItems(baseInputs({ containers: 'error' }), NOW); + expect(aggregateRollbackOverall(items)).toBe('ready'); + }); +}); + +describe('FileSystemService.getBackupEnvSummary', () => { + let tmpDir: string; + let composeDir: string; + let originalDataDir: string | undefined; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sencho-envsum-')); + composeDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sencho-envsum-compose-')); + mockState.composeDir = composeDir; + originalDataDir = process.env.DATA_DIR; + process.env.DATA_DIR = tmpDir; + }); + + afterEach(() => { + if (originalDataDir === undefined) delete process.env.DATA_DIR; + else process.env.DATA_DIR = originalDataDir; + fs.rmSync(tmpDir, { recursive: true, force: true }); + fs.rmSync(composeDir, { recursive: true, force: true }); + }); + + async function getService() { + const { FileSystemService } = await import('../services/FileSystemService'); + return FileSystemService.getInstance(); + } + + function writeBackupEnv(stackName: string, content: string | null) { + const dir = path.join(tmpDir, 'backups', '1', stackName); + fs.mkdirSync(dir, { recursive: true }); + if (content !== null) fs.writeFileSync(path.join(dir, '.env'), content, 'utf-8'); + } + + it('returns key names only, never values', async () => { + writeBackupEnv('web', 'DB_HOST=db.internal\nDB_PASS=s3cret-value\n# comment\nEMPTY=\n INDENTED=ok\nnot a var line\n'); + const svc = await getService(); + const summary = await svc.getBackupEnvSummary('web'); + expect(summary).toEqual({ + exists: true, + envPresent: true, + keys: ['DB_HOST', 'DB_PASS', 'EMPTY', 'INDENTED'], + }); + expect(JSON.stringify(summary)).not.toContain('s3cret-value'); + expect(JSON.stringify(summary)).not.toContain('db.internal'); + }); + + it('reports a backup without an env file', async () => { + writeBackupEnv('web', null); + const svc = await getService(); + expect(await svc.getBackupEnvSummary('web')).toEqual({ exists: true, envPresent: false, keys: [] }); + }); + + it('reports a missing backup slot', async () => { + const svc = await getService(); + expect(await svc.getBackupEnvSummary('web')).toEqual({ exists: false, envPresent: false, keys: [] }); + }); + + it('rejects traversal-shaped stack names without touching the filesystem', async () => { + const svc = await getService(); + expect(await svc.getBackupEnvSummary('../../etc')).toEqual({ exists: false, envPresent: false, keys: [] }); + expect(await svc.getBackupEnvSummary('..')).toEqual({ exists: false, envPresent: false, keys: [] }); + }); + + it('propagates a non-ENOENT env read failure instead of reporting "no env in backup"', async () => { + // An unreadable .env (here: a directory, EISDIR) must throw so callers + // degrade the item to unknown rather than falsely claiming the backup + // contains no env file. + const dir = path.join(tmpDir, 'backups', '1', 'web'); + fs.mkdirSync(path.join(dir, '.env'), { recursive: true }); + const svc = await getService(); + await expect(svc.getBackupEnvSummary('web')).rejects.toThrow(); + }); +}); diff --git a/backend/src/__tests__/update-guard-routes.test.ts b/backend/src/__tests__/update-guard-routes.test.ts new file mode 100644 index 00000000..d2493527 --- /dev/null +++ b/backend/src/__tests__/update-guard-routes.test.ts @@ -0,0 +1,223 @@ +/** + * Route-level tests for the update guard endpoints: the readiness GETs on the + * stacks router and the fleet snapshot coverage lookup. UpdateGuardService and + * FileSystemService are mocked; the focus is auth, validation, route + * placement, and response shape. + */ +import { describe, it, expect, beforeAll, afterAll, vi, beforeEach } from 'vitest'; +import request from 'supertest'; +import bcrypt from 'bcrypt'; +import { setupTestDb, cleanupTestDb, loginAsTestAdmin } from './helpers/setupTestDb'; + +const { + mockComputeUpdateReadiness, + mockComputeRollbackReadiness, +} = vi.hoisted(() => ({ + mockComputeUpdateReadiness: vi.fn(), + mockComputeRollbackReadiness: vi.fn(), +})); + +vi.mock('../services/UpdateGuardService', () => ({ + UpdateGuardService: { + getInstance: () => ({ + computeUpdateReadiness: mockComputeUpdateReadiness, + computeRollbackReadiness: mockComputeRollbackReadiness, + }), + }, +})); + +vi.mock('../services/FileSystemService', () => ({ + FileSystemService: { + getInstance: () => ({ + getStacks: vi.fn().mockResolvedValue([]), + getBaseDir: () => '/tmp/compose', + hasComposeFile: vi.fn().mockResolvedValue(true), + }), + }, +})); + +let tmpDir: string; +let app: import('express').Express; +let authCookie: string; +let viewerCookie: string; + +beforeAll(async () => { + tmpDir = await setupTestDb(); + ({ app } = await import('../index')); + authCookie = await loginAsTestAdmin(app); + + const { DatabaseService } = await import('../services/DatabaseService'); + const viewerHash = await bcrypt.hash('viewerpass', 1); + DatabaseService.getInstance().addUser({ username: 'guard-viewer', password_hash: viewerHash, role: 'viewer' }); + const viewerRes = await request(app).post('/api/auth/login').send({ username: 'guard-viewer', password: 'viewerpass' }); + const cookies = viewerRes.headers['set-cookie'] as string | string[]; + viewerCookie = Array.isArray(cookies) ? cookies[0] : cookies; +}); + +afterAll(() => { + vi.restoreAllMocks(); + cleanupTestDb(tmpDir); +}); + +beforeEach(() => { + mockComputeUpdateReadiness.mockReset(); + mockComputeRollbackReadiness.mockReset(); +}); + +describe('GET /api/stacks/:stackName/update-readiness', () => { + it('requires authentication', async () => { + const res = await request(app).get('/api/stacks/web/update-readiness'); + expect(res.status).toBe(401); + expect(mockComputeUpdateReadiness).not.toHaveBeenCalled(); + }); + + it('returns the computed report', async () => { + const report = { stack: 'web', computedAt: 1, verdict: 'ready', signals: [] }; + mockComputeUpdateReadiness.mockResolvedValue(report); + const res = await request(app).get('/api/stacks/web/update-readiness').set('Cookie', authCookie); + expect(res.status).toBe(200); + expect(res.body).toEqual(report); + }); + + it('returns a clean 500 when the computation fails', async () => { + mockComputeUpdateReadiness.mockRejectedValue(new Error('docker exploded')); + const res = await request(app).get('/api/stacks/web/update-readiness').set('Cookie', authCookie); + expect(res.status).toBe(500); + expect(res.body).toEqual({ error: 'Failed to compute update readiness' }); + }); +}); + +describe('GET /api/stacks/:stackName/rollback-readiness', () => { + it('requires authentication', async () => { + const res = await request(app).get('/api/stacks/web/rollback-readiness'); + expect(res.status).toBe(401); + expect(mockComputeRollbackReadiness).not.toHaveBeenCalled(); + }); + + it('returns the computed report', async () => { + const report = { stack: 'web', computedAt: 1, overall: 'partial', items: [] }; + mockComputeRollbackReadiness.mockResolvedValue(report); + const res = await request(app).get('/api/stacks/web/rollback-readiness').set('Cookie', authCookie); + expect(res.status).toBe(200); + expect(res.body).toEqual(report); + }); + + it('returns a clean 500 when the computation fails', async () => { + mockComputeRollbackReadiness.mockRejectedValue(new Error('boom')); + const res = await request(app).get('/api/stacks/web/rollback-readiness').set('Cookie', authCookie); + expect(res.status).toBe(500); + expect(res.body).toEqual({ error: 'Failed to compute rollback readiness' }); + }); +}); + +describe('GET /api/stacks/:stackName/health-gate', () => { + const seedRun = async (id: string, status: 'observing' | 'passed' | 'failed' | 'unknown', startedAt: number, reason: string | null = null) => { + const { DatabaseService } = await import('../services/DatabaseService'); + const db = DatabaseService.getInstance(); + // The route resolves req.nodeId to the seeded default node, so the rows + // must carry that id, not a literal. + const defaultNodeId = db.getNodes().find(n => n.is_default)!.id; + db.insertHealthGateRun({ + id, node_id: defaultNodeId, stack_name: 'web', trigger_action: 'update', status, reason, + window_seconds: 90, containers_json: '[]', started_at: startedAt, ended_at: status === 'observing' ? null : startedAt + 1000, created_by: 'tester', + }); + }; + + it('requires authentication', async () => { + const res = await request(app).get('/api/stacks/web/health-gate'); + expect(res.status).toBe(401); + }); + + it('returns the never-run sentinel before any run exists', async () => { + const res = await request(app).get('/api/stacks/web/health-gate').set('Cookie', authCookie); + expect(res.status).toBe(200); + expect(res.body).toMatchObject({ stack: 'web', id: null, status: 'never-run' }); + }); + + it('returns the latest run without a gateId and a specific (superseded) run with one', async () => { + await seedRun('gate-old', 'unknown', 1_000, 'superseded by a newer update'); + await seedRun('gate-new', 'passed', 2_000); + + const latest = await request(app).get('/api/stacks/web/health-gate').set('Cookie', authCookie); + expect(latest.status).toBe(200); + expect(latest.body).toMatchObject({ id: 'gate-new', status: 'passed' }); + + const byId = await request(app).get('/api/stacks/web/health-gate?gateId=gate-old').set('Cookie', authCookie); + expect(byId.status).toBe(200); + expect(byId.body).toMatchObject({ id: 'gate-old', status: 'unknown', reason: 'superseded by a newer update' }); + }); + + it('returns never-run for an unknown gateId', async () => { + const res = await request(app).get('/api/stacks/web/health-gate?gateId=no-such-id').set('Cookie', authCookie); + expect(res.status).toBe(200); + expect(res.body).toMatchObject({ status: 'never-run' }); + }); +}); + +describe('GET /api/fleet/snapshots/coverage', () => { + it('requires authentication', async () => { + const res = await request(app).get('/api/fleet/snapshots/coverage?nodeId=0&stackName=web'); + expect(res.status).toBe(401); + }); + + it('hits the coverage handler, not the /snapshots/:id route', async () => { + const res = await request(app) + .get('/api/fleet/snapshots/coverage?nodeId=0&stackName=web') + .set('Cookie', authCookie); + // The /:id handler would have rejected "coverage" as a bad snapshot ID; + // the coverage handler returns the latestAt shape instead. + expect(res.status).toBe(200); + expect(res.body).toEqual({ latestAt: null }); + }); + + it('scopes coverage to the requested node and stack', async () => { + const { DatabaseService } = await import('../services/DatabaseService'); + const db = DatabaseService.getInstance(); + const matching = db.createSnapshot('covers web on node 0', 'tester', 1, 1, '[]'); + db.insertSnapshotFiles(matching, [ + { nodeId: 0, nodeName: 'local', stackName: 'web', filename: 'compose.yaml', content: 'services: {}' }, + ]); + const decoy = db.createSnapshot('covers other things', 'tester', 2, 2, '[]'); + db.insertSnapshotFiles(decoy, [ + { nodeId: 1, nodeName: 'remote', stackName: 'web', filename: 'compose.yaml', content: 'services: {}' }, + { nodeId: 0, nodeName: 'local', stackName: 'other', filename: 'compose.yaml', content: 'services: {}' }, + ]); + const matchingCreatedAt = db.getSnapshots().find(s => s.id === matching)!.created_at; + + const res = await request(app) + .get('/api/fleet/snapshots/coverage?nodeId=0&stackName=web') + .set('Cookie', authCookie); + expect(res.status).toBe(200); + expect(res.body).toEqual({ latestAt: matchingCreatedAt }); + }); + + it('rejects non-admin users', async () => { + const res = await request(app) + .get('/api/fleet/snapshots/coverage?nodeId=0&stackName=web') + .set('Cookie', viewerCookie); + expect(res.status).toBe(403); + }); + + it('validates nodeId and stackName', async () => { + const missingNode = await request(app) + .get('/api/fleet/snapshots/coverage?stackName=web') + .set('Cookie', authCookie); + expect(missingNode.status).toBe(400); + + const badNode = await request(app) + .get('/api/fleet/snapshots/coverage?nodeId=-2&stackName=web') + .set('Cookie', authCookie); + expect(badNode.status).toBe(400); + + // A trailing-garbage nodeId must be rejected, not coerced by parseInt. + const garbageNode = await request(app) + .get('/api/fleet/snapshots/coverage?nodeId=1abc&stackName=web') + .set('Cookie', authCookie); + expect(garbageNode.status).toBe(400); + + const badStack = await request(app) + .get('/api/fleet/snapshots/coverage?nodeId=0&stackName=..%2Fetc') + .set('Cookie', authCookie); + expect(badStack.status).toBe(400); + }); +}); diff --git a/backend/src/__tests__/update-guard-service.test.ts b/backend/src/__tests__/update-guard-service.test.ts new file mode 100644 index 00000000..d70e6de5 --- /dev/null +++ b/backend/src/__tests__/update-guard-service.test.ts @@ -0,0 +1,155 @@ +/** + * Wiring tests for UpdateGuardService: container probing resilience and the + * degrade-everything-to-unknown contract when every collaborator fails. The + * grading rules themselves are covered by the pure readiness tests. + */ +import { describe, it, expect, vi, beforeEach } from 'vitest'; + +const { + mockListContainers, + mockGetContainer, + mockGetLatest, + mockGetPreview, + mockGetBackupInfo, + mockGetOpenDriftFindings, + mockGetGlobalSettings, + mockFsSize, +} = vi.hoisted(() => ({ + mockListContainers: vi.fn(), + mockGetContainer: vi.fn(), + mockGetLatest: vi.fn(), + mockGetPreview: vi.fn(), + mockGetBackupInfo: vi.fn(), + mockGetOpenDriftFindings: vi.fn(), + mockGetGlobalSettings: vi.fn(), + mockFsSize: vi.fn(), +})); + +vi.mock('../services/DockerController', () => ({ + default: { + getInstance: () => ({ + getDocker: () => ({ + listContainers: mockListContainers, + getContainer: mockGetContainer, + }), + }), + }, +})); + +vi.mock('../services/ComposeDoctorService', () => ({ + ComposeDoctorService: { getInstance: () => ({ getLatest: mockGetLatest }) }, +})); + +vi.mock('../services/UpdatePreviewService', () => ({ + UpdatePreviewService: { getInstance: () => ({ getPreview: mockGetPreview }) }, +})); + +vi.mock('../services/FileSystemService', () => ({ + FileSystemService: { + getInstance: () => ({ + getBackupInfo: mockGetBackupInfo, + getBackupEnvSummary: vi.fn().mockRejectedValue(new Error('not used here')), + envExists: vi.fn().mockRejectedValue(new Error('not used here')), + }), + }, +})); + +vi.mock('../services/DatabaseService', () => ({ + DatabaseService: { + getInstance: () => ({ + getOpenDriftFindings: mockGetOpenDriftFindings, + getGlobalSettings: mockGetGlobalSettings, + getStackActivity: vi.fn().mockReturnValue([]), + }), + }, +})); + +vi.mock('systeminformation', () => ({ + default: { fsSize: mockFsSize }, +})); + +import { UpdateGuardService } from '../services/UpdateGuardService'; + +const inspectResult = (over: Record = {}) => ({ + State: { Status: 'running', ExitCode: 0 }, + Config: { Healthcheck: { Test: ['CMD', 'true'] } }, + HostConfig: { RestartPolicy: { Name: 'unless-stopped' } }, + Mounts: [], + ...over, +}); + +beforeEach(() => { + vi.clearAllMocks(); + mockGetGlobalSettings.mockReturnValue({ host_disk_limit: '90' }); +}); + +describe('UpdateGuardService.probeContainers', () => { + it('skips a container that vanished between list and inspect (404)', async () => { + mockListContainers.mockResolvedValue([ + { Id: 'aaa', Names: ['/app-web-1'], State: 'running' }, + { Id: 'bbb', Names: ['/app-db-1'], State: 'running' }, + ]); + mockGetContainer.mockImplementation((id: string) => ({ + inspect: id === 'bbb' + ? vi.fn().mockRejectedValue(Object.assign(new Error('no such container'), { statusCode: 404 })) + : vi.fn().mockResolvedValue(inspectResult()), + })); + + const probes = await UpdateGuardService.getInstance().probeContainers(0, 'app'); + expect(probes).toHaveLength(1); + expect(probes[0].name).toBe('app-web-1'); + }); + + it('propagates non-404 inspect failures so the whole signal degrades honestly', async () => { + mockListContainers.mockResolvedValue([ + { Id: 'aaa', Names: ['/app-web-1'], State: 'running' }, + ]); + mockGetContainer.mockReturnValue({ + inspect: vi.fn().mockRejectedValue(Object.assign(new Error('daemon hiccup'), { statusCode: 500 })), + }); + + await expect(UpdateGuardService.getInstance().probeContainers(0, 'app')).rejects.toThrow('daemon hiccup'); + }); +}); + +describe('UpdateGuardService.computeUpdateReadiness wiring', () => { + it('returns a complete unknown-verdict report when every collaborator fails', async () => { + mockGetLatest.mockImplementation(() => { throw new Error('db gone'); }); + mockGetOpenDriftFindings.mockImplementation(() => { throw new Error('db gone'); }); + mockListContainers.mockRejectedValue(new Error('docker gone')); + mockGetPreview.mockRejectedValue(new Error('registry gone')); + mockGetBackupInfo.mockRejectedValue(new Error('fs gone')); + mockFsSize.mockRejectedValue(new Error('si gone')); + + const report = await UpdateGuardService.getInstance().computeUpdateReadiness(0, 'app'); + + expect(report.stack).toBe('app'); + expect(report.signals.map(s => s.id)).toEqual([ + 'preflight', 'drift', 'containers', 'healthchecks', 'update_preview', 'backup_slot', 'disk', + ]); + // The container probe failure is the verdict-affecting unknown. + expect(report.verdict).toBe('unknown'); + }); + + it('produces a ready verdict from healthy collaborator outputs', async () => { + mockGetLatest.mockReturnValue({ status: 'pass' }); + mockGetOpenDriftFindings.mockReturnValue([]); + mockListContainers.mockResolvedValue([{ Id: 'aaa', Names: ['/app-web-1'], State: 'running' }]); + mockGetContainer.mockReturnValue({ inspect: vi.fn().mockResolvedValue(inspectResult()) }); + mockGetPreview.mockResolvedValue({ + stack_name: 'app', + images: [], + summary: { + has_update: true, primary_image: 'nginx', current_tag: '1.27.0', next_tag: '1.27.1', + semver_bump: 'patch', update_kind: 'tag', blocked: false, blocked_reason: null, + }, + rollback_target: 'nginx:1.27.0', + changelog: null, + }); + mockGetBackupInfo.mockResolvedValue({ exists: true, timestamp: Date.now() }); + mockFsSize.mockResolvedValue([{ mount: '/', use: 42 }]); + + const report = await UpdateGuardService.getInstance().computeUpdateReadiness(0, 'app'); + expect(report.verdict).toBe('ready'); + }); +}); diff --git a/backend/src/__tests__/webhooks-trigger.test.ts b/backend/src/__tests__/webhooks-trigger.test.ts index 45d1a68d..a6b953cc 100644 --- a/backend/src/__tests__/webhooks-trigger.test.ts +++ b/backend/src/__tests__/webhooks-trigger.test.ts @@ -443,3 +443,49 @@ describe('webhook_executions.error redaction (M6)', () => { expect(history[0].error).toContain('/home/'); }); }); + +describe('WebhookService.execute: health gate begin call sites', () => { + // FileSystemService and ComposeService return a fresh instance per nodeId, + // so those spies attach to the prototypes (matching the redaction tests + // above); HealthGateService is a singleton spied directly. The policy gate + // is stubbed to allow so the test isolates the begin wiring, not policy. + it('begins a deploy gate after a webhook deploy succeeds', async () => { + const stack = 'hook-deploy-gate'; + const { id } = createWebhook({ action: 'deploy', stack }); + const webhook = DatabaseService.getInstance().getWebhook(id)!; + const nodeId = DatabaseService.getInstance().getDefaultNode()!.id!; + + const fs = await import('../services/FileSystemService'); + const compose = await import('../services/ComposeService'); + const policyGate = await import('../helpers/policyGate'); + const { HealthGateService } = await import('../services/HealthGateService'); + vi.spyOn(policyGate, 'assertPolicyGateAllows').mockResolvedValue(undefined); + vi.spyOn(fs.FileSystemService.prototype, 'getStacks').mockResolvedValue([stack]); + vi.spyOn(compose.ComposeService.prototype, 'deployStack').mockResolvedValue(undefined); + const beginSpy = vi.spyOn(HealthGateService.getInstance(), 'begin').mockReturnValue('gate-hook'); + + const result = await WebhookService.getInstance().execute(webhook, 'deploy', 'test', true); + expect(result.success).toBe(true); + expect(beginSpy).toHaveBeenCalledWith(nodeId, stack, 'deploy', 'system:webhook'); + }); + + it('begins an update gate after a webhook pull succeeds', async () => { + const stack = 'hook-pull-gate'; + const { id } = createWebhook({ action: 'pull', stack }); + const webhook = DatabaseService.getInstance().getWebhook(id)!; + const nodeId = DatabaseService.getInstance().getDefaultNode()!.id!; + + const fs = await import('../services/FileSystemService'); + const compose = await import('../services/ComposeService'); + const policyGate = await import('../helpers/policyGate'); + const { HealthGateService } = await import('../services/HealthGateService'); + vi.spyOn(policyGate, 'assertPolicyGateAllows').mockResolvedValue(undefined); + vi.spyOn(fs.FileSystemService.prototype, 'getStacks').mockResolvedValue([stack]); + vi.spyOn(compose.ComposeService.prototype, 'updateStack').mockResolvedValue(undefined); + const beginSpy = vi.spyOn(HealthGateService.getInstance(), 'begin').mockReturnValue('gate-hook'); + + const result = await WebhookService.getInstance().execute(webhook, 'pull', 'test', true); + expect(result.success).toBe(true); + expect(beginSpy).toHaveBeenCalledWith(nodeId, stack, 'update', 'system:webhook'); + }); +}); diff --git a/backend/src/bootstrap/shutdown.ts b/backend/src/bootstrap/shutdown.ts index d7f2ebe1..09421d45 100644 --- a/backend/src/bootstrap/shutdown.ts +++ b/backend/src/bootstrap/shutdown.ts @@ -3,6 +3,7 @@ import { DatabaseService } from '../services/DatabaseService'; import { LicenseService } from '../services/LicenseService'; import { MonitorService } from '../services/MonitorService'; import { AutoHealService } from '../services/AutoHealService'; +import { HealthGateService } from '../services/HealthGateService'; import { FleetSyncRetryService } from '../services/FleetSyncRetryService'; import { DockerEventManager } from '../services/DockerEventManager'; import { ImageUpdateService } from '../services/ImageUpdateService'; @@ -31,6 +32,7 @@ export function installShutdownHandlers(server: Server): void { console.warn('[Shutdown] MonitorService cleanup failed:', (e as Error).message); } try { AutoHealService.getInstance().stop(); } catch (e) { console.warn('[Shutdown] AutoHealService cleanup failed:', (e as Error).message); } + try { HealthGateService.getInstance().stop(); } catch (e) { console.warn('[Shutdown] HealthGateService cleanup failed:', (e as Error).message); } try { FleetSyncRetryService.getInstance().stop(); } catch (e) { console.warn('[Shutdown] FleetSyncRetryService cleanup failed:', (e as Error).message); } try { DockerEventManager.getInstance().stop(); } catch (e) { console.warn('[Shutdown] DockerEventManager cleanup failed:', (e as Error).message); diff --git a/backend/src/bootstrap/startup.ts b/backend/src/bootstrap/startup.ts index 3af518c3..a727dd40 100644 --- a/backend/src/bootstrap/startup.ts +++ b/backend/src/bootstrap/startup.ts @@ -9,6 +9,7 @@ import SelfUpdateService from '../services/SelfUpdateService'; import SelfIdentityService from '../services/SelfIdentityService'; import { MonitorService } from '../services/MonitorService'; import { AutoHealService } from '../services/AutoHealService'; +import { HealthGateService } from '../services/HealthGateService'; import { FleetSyncRetryService } from '../services/FleetSyncRetryService'; import { DockerEventManager } from '../services/DockerEventManager'; import TrivyService, { sweepStaleTrivyTempDirs } from '../services/TrivyService'; @@ -118,6 +119,7 @@ export async function startServer(server: Server): Promise { // safely run alongside the async initializers below. MonitorService.getInstance().start(); AutoHealService.getInstance().start(); + HealthGateService.getInstance().start(); FleetSyncRetryService.getInstance().start(); ImageUpdateService.getInstance().start(); SchedulerService.getInstance().start(); diff --git a/backend/src/routes/fleet.ts b/backend/src/routes/fleet.ts index f8f78f70..4cc97476 100644 --- a/backend/src/routes/fleet.ts +++ b/backend/src/routes/fleet.ts @@ -1754,6 +1754,33 @@ fleetRouter.get('/snapshots', authMiddleware, async (req: Request, res: Response } }); +// Registered before /snapshots/:id so "coverage" is never parsed as an id. +// Hub-local by design: snapshot rows exist only in the hub database, so the +// readiness UI fetches this with localOnly and merges it client-side. +fleetRouter.get('/snapshots/coverage', authMiddleware, async (req: Request, res: Response): Promise => { + if (!requireAdmin(req, res)) return; + + try { + // Strict digits only: parseInt would accept '1abc' as 1. + const nodeIdRaw = typeof req.query.nodeId === 'string' ? req.query.nodeId : ''; + const stackName = req.query.stackName as string; + if (!/^\d+$/.test(nodeIdRaw)) { + res.status(400).json({ error: 'nodeId must be a non-negative integer' }); + return; + } + const nodeId = parseInt(nodeIdRaw, 10); + if (typeof stackName !== 'string' || !isValidStackName(stackName)) { + res.status(400).json({ error: 'Invalid stack name' }); + return; + } + const latestAt = DatabaseService.getInstance().getLatestSnapshotTimestampFor(nodeId, stackName); + res.json({ latestAt }); + } catch (error) { + console.error('[Fleet Snapshot] Coverage lookup error:', error); + res.status(500).json({ error: 'Failed to look up snapshot coverage' }); + } +}); + fleetRouter.get('/snapshots/:id', authMiddleware, async (req: Request, res: Response): Promise => { if (!requireAdmin(req, res)) return; diff --git a/backend/src/routes/imageUpdates.ts b/backend/src/routes/imageUpdates.ts index 2fc0ce44..4fc6e194 100644 --- a/backend/src/routes/imageUpdates.ts +++ b/backend/src/routes/imageUpdates.ts @@ -8,6 +8,7 @@ import { FileSystemService } from '../services/FileSystemService'; import { ComposeService } from '../services/ComposeService'; import { NotificationService } from '../services/NotificationService'; import { enforcePolicyPreDeploy } from '../services/PolicyEnforcement'; +import { HealthGateService } from '../services/HealthGateService'; import { authMiddleware } from '../middleware/auth'; import { requireAdmin } from '../middleware/tierGates'; import { buildPolicyGateOptions } from '../helpers/policyGate'; @@ -297,6 +298,7 @@ autoUpdateRouter.post('/execute', authMiddleware, async (req: Request, res: Resp await compose.updateStack(stackName, undefined, atomic); db.clearStackUpdateStatus(req.nodeId, stackName); + HealthGateService.getInstance().begin(req.nodeId, stackName, 'update', `auto-update:${req.user?.username ?? 'scheduler'}`); NotificationService.getInstance().broadcastEvent({ type: 'state-invalidate', diff --git a/backend/src/routes/settings.ts b/backend/src/routes/settings.ts index e6b33dc3..3755a34a 100644 --- a/backend/src/routes/settings.ts +++ b/backend/src/routes/settings.ts @@ -27,6 +27,8 @@ const ALLOWED_SETTING_KEYS = new Set([ 'prune_on_update', 'reclaim_hero', 'snapshot_documentation', + 'health_gate_enabled', + 'health_gate_window_seconds', ]); // Keys whose write requires a paid license, not just an admin role. @@ -52,6 +54,8 @@ const SettingsPatchSchema = z.object({ prune_on_update: z.enum(['0', '1']), reclaim_hero: z.enum(['0', '1']), snapshot_documentation: z.enum(['0', '1']), + health_gate_enabled: z.enum(['0', '1']), + health_gate_window_seconds: z.coerce.number().int().min(15).max(600).transform(String), }).partial(); export const settingsRouter = Router(); diff --git a/backend/src/routes/stacks.ts b/backend/src/routes/stacks.ts index 38288c6b..1729ec24 100644 --- a/backend/src/routes/stacks.ts +++ b/backend/src/routes/stacks.ts @@ -16,6 +16,9 @@ import { enforcePolicyPreDeploy } from '../services/PolicyEnforcement'; import { buildStackDriftReport, type DriftFindingKind, type StackDriftReport } from '../services/DriftDetectionService'; import { DriftLedgerService, type DriftTemporal } from '../services/DriftLedgerService'; import { ComposeDoctorService } from '../services/ComposeDoctorService'; +import { UpdateGuardService } from '../services/UpdateGuardService'; +import { HealthGateService } from '../services/HealthGateService'; +import { classifyFailure } from '../services/updateGuard/failureClassifier'; import { requirePermission, checkPermission } from '../middleware/permissions'; import { NotificationService, type NotificationCategory } from '../services/NotificationService'; import { StackOpLockService, type StackOpAction } from '../services/StackOpLockService'; @@ -351,6 +354,8 @@ interface BulkResultItem { ok: boolean; error?: string; code?: string; + /** Health gate run started for a successful update, when gating is enabled. */ + healthGateId?: string | null; } async function runStackBulkOp( @@ -413,6 +418,8 @@ async function runStackBulkOp( triggerPostDeployScan(stackName, req.nodeId).catch(err => console.error('[Security] Post-deploy scan failed for %s:', sanitizeForLog(stackName), err), ); + const healthGateId = HealthGateService.getInstance().begin(req.nodeId, stackName, 'update', req.user?.username ?? null); + return { stackName, ok: true, healthGateId }; } else { const outcome = await containerActionForStack(req.nodeId, stackName, action); if (outcome.kind === 'no-containers') { @@ -1120,6 +1127,55 @@ stacksRouter.post('/:stackName/preflight/run', async (req: Request, res: Respons } }); +// Update guard: readiness reports computed on demand from existing stores +// (preflight runs, drift findings, backup slot, update preview, live Docker +// state). Node-scoped like preflight: a remote stack is evaluated on the node +// that owns it. Read-only, so stack:read is the correct gate. +stacksRouter.get('/:stackName/update-readiness', async (req: Request, res: Response) => { + const stackName = req.params.stackName as string; + if (!requirePermission(req, res, 'stack:read', 'stack', stackName)) return; + if (!(await requireStackExists(req.nodeId, stackName, res))) return; + try { + const report = await UpdateGuardService.getInstance().computeUpdateReadiness(req.nodeId, stackName); + res.json(report); + } catch (error) { + console.error('[Stacks] Failed to compute update readiness for %s:', sanitizeForLog(stackName), + sanitizeForLog(getErrorMessage(error, 'unknown'))); + res.status(500).json({ error: 'Failed to compute update readiness' }); + } +}); + +stacksRouter.get('/:stackName/rollback-readiness', async (req: Request, res: Response) => { + const stackName = req.params.stackName as string; + if (!requirePermission(req, res, 'stack:read', 'stack', stackName)) return; + if (!(await requireStackExists(req.nodeId, stackName, res))) return; + try { + const report = await UpdateGuardService.getInstance().computeRollbackReadiness(req.nodeId, stackName); + res.json(report); + } catch (error) { + console.error('[Stacks] Failed to compute rollback readiness for %s:', sanitizeForLog(stackName), + sanitizeForLog(getErrorMessage(error, 'unknown'))); + res.status(500).json({ error: 'Failed to compute rollback readiness' }); + } +}); + +// Post-update health gate result. `gateId` returns that specific run so a +// superseded gate still resolves to its terminal state; without it, the +// latest run (or a never-run sentinel). +stacksRouter.get('/:stackName/health-gate', async (req: Request, res: Response) => { + const stackName = req.params.stackName as string; + if (!requirePermission(req, res, 'stack:read', 'stack', stackName)) return; + if (!(await requireStackExists(req.nodeId, stackName, res))) return; + try { + const gateId = typeof req.query.gateId === 'string' && req.query.gateId.trim() ? req.query.gateId : undefined; + res.json(HealthGateService.getInstance().getReport(req.nodeId, stackName, gateId)); + } catch (error) { + console.error('[Stacks] Failed to load health gate for %s:', sanitizeForLog(stackName), + sanitizeForLog(getErrorMessage(error, 'unknown'))); + res.status(500).json({ error: 'Failed to load health gate' }); + } +}); + stacksRouter.post('/:stackName/deploy', async (req: Request, res: Response) => { const stackName = req.params.stackName as string; if (!requirePermission(req, res, 'stack:deploy', 'stack', stackName)) return; @@ -1139,7 +1195,8 @@ stacksRouter.post('/:stackName/deploy', async (req: Request, res: Response) => { dlog(`[Stacks] Deploy completed: ${sanitizeForLog(stackName)}`); if (debug) console.debug(`[Stacks:debug] Deploy finished in ${Date.now() - t0}ms`); ok = true; - res.json({ message: 'Deployed successfully' }); + const healthGateId = HealthGateService.getInstance().begin(req.nodeId, stackName, 'deploy', req.user?.username ?? null); + res.json({ message: 'Deployed successfully', healthGateId }); notifyActionSuccess('deploy_success', `${stackName} deployed`, stackName, req.user?.username ?? 'system'); if (!skipScan) { triggerPostDeployScan(stackName, req.nodeId).catch(err => @@ -1156,12 +1213,14 @@ stacksRouter.post('/:stackName/deploy', async (req: Request, res: Response) => { console.warn('[Stacks] Deploy failed, rollback did not complete: %s', sanitizeForLog(stackName)); } const message = getErrorMessage(error, 'Failed to deploy stack'); + // ComposeRollbackError already carries the cause's message; see classifyFailure. + const failure = classifyFailure(message, { dockerUnavailable: isDockerUnavailableError(error) }); notifyActionFailure('deploy', stackName, error, req.user?.username ?? 'system'); if (!res.headersSent) { if (isDockerUnavailableError(error)) { - res.status(503).json({ error: message, code: 'docker_unavailable', rolledBack }); + res.status(503).json({ error: message, code: 'docker_unavailable', rolledBack, failure }); } else { - res.status(500).json({ error: message, rolledBack }); + res.status(500).json({ error: message, rolledBack, failure }); } } } finally { @@ -1408,7 +1467,8 @@ stacksRouter.post('/:stackName/update', async (req: Request, res: Response) => { dlog(`[Stacks] Update completed: ${sanitizeForLog(stackName)}`); if (debug) console.debug(`[Stacks:debug] Update finished in ${Date.now() - t0}ms`); ok = true; - res.json({ status: 'Update completed' }); + const healthGateId = HealthGateService.getInstance().begin(req.nodeId, stackName, 'update', req.user?.username ?? null); + res.json({ status: 'Update completed', healthGateId }); notifyActionSuccess('image_update_applied', `${stackName} updated`, stackName, req.user?.username ?? 'system'); if (!skipScan) { triggerPostDeployScan(stackName, req.nodeId).catch(err => @@ -1426,10 +1486,13 @@ stacksRouter.post('/:stackName/update', async (req: Request, res: Response) => { } notifyActionFailure('update', stackName, error, req.user?.username ?? 'system'); if (!res.headersSent) { + const message = getErrorMessage(error, 'Failed to update'); + // ComposeRollbackError already carries the cause's message; see classifyFailure. + const failure = classifyFailure(message, { dockerUnavailable: isDockerUnavailableError(error) }); if (isDockerUnavailableError(error)) { - res.status(503).json({ error: getErrorMessage(error, 'Docker daemon is unreachable'), code: 'docker_unavailable', rolledBack }); + res.status(503).json({ error: message, code: 'docker_unavailable', rolledBack, failure }); } else { - res.status(500).json({ error: getErrorMessage(error, 'Failed to update'), rolledBack }); + res.status(500).json({ error: message, rolledBack, failure }); } } } finally { diff --git a/backend/src/services/CapabilityRegistry.ts b/backend/src/services/CapabilityRegistry.ts index b18bff29..29de6c97 100644 --- a/backend/src/services/CapabilityRegistry.ts +++ b/backend/src/services/CapabilityRegistry.ts @@ -36,6 +36,7 @@ export const CAPABILITIES = [ 'self-update', 'vulnerability-scanning', 'compose-doctor', + 'update-guard', ] as const; export type Capability = (typeof CAPABILITIES)[number]; diff --git a/backend/src/services/DatabaseService.ts b/backend/src/services/DatabaseService.ts index 18c397e9..41825d24 100644 --- a/backend/src/services/DatabaseService.ts +++ b/backend/src/services/DatabaseService.ts @@ -106,6 +106,23 @@ export interface PreflightRunRow { created_by: string | null; } +/** One post-update health gate observation run. */ +export interface HealthGateRunRow { + id: string; + node_id: number; + stack_name: string; + /** Named trigger_action because TRIGGER is reserved in SQLite. */ + trigger_action: 'update' | 'deploy'; + status: 'observing' | 'passed' | 'failed' | 'unknown'; + reason: string | null; + window_seconds: number; + /** JSON array of per-container end states for display. */ + containers_json: string; + started_at: number; + ended_at: number | null; + created_by: string | null; +} + /** One finding within a stored preflight run. Never carries an environment value. */ export interface PreflightFindingRow { id: string; @@ -914,6 +931,7 @@ export class DatabaseService { ); CREATE INDEX IF NOT EXISTS idx_snapshot_files_snapshot ON fleet_snapshot_files(snapshot_id); + CREATE INDEX IF NOT EXISTS idx_snapshot_files_node_stack ON fleet_snapshot_files(node_id, stack_name); CREATE TABLE IF NOT EXISTS audit_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -1272,6 +1290,22 @@ export class DatabaseService { CREATE INDEX IF NOT EXISTS idx_preflight_findings_run ON preflight_findings(run_id); + CREATE TABLE IF NOT EXISTS health_gate_runs ( + id TEXT PRIMARY KEY, + node_id INTEGER NOT NULL, + stack_name TEXT NOT NULL, + trigger_action TEXT NOT NULL CHECK (trigger_action IN ('update','deploy')), + status TEXT NOT NULL CHECK (status IN ('observing','passed','failed','unknown')), + reason TEXT, + window_seconds INTEGER NOT NULL, + containers_json TEXT NOT NULL DEFAULT '[]', + started_at INTEGER NOT NULL, + ended_at INTEGER, + created_by TEXT + ); + CREATE INDEX IF NOT EXISTS idx_health_gate_runs_node_stack + ON health_gate_runs(node_id, stack_name, started_at); + CREATE TABLE IF NOT EXISTS secrets ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL UNIQUE, @@ -1400,6 +1434,8 @@ export class DatabaseService { stmt.run('mesh_auto_recreate', '0'); stmt.run('prune_on_update', '1'); stmt.run('reclaim_hero', '1'); + stmt.run('health_gate_enabled', '1'); + stmt.run('health_gate_window_seconds', '90'); // Seed the default local node if none exists const nodeCount = (this.db.prepare('SELECT COUNT(*) as count FROM nodes').get() as any)?.count || 0; @@ -2301,6 +2337,61 @@ export class DatabaseService { ).all(runId) as PreflightFindingRow[]; } + // --- Health Gate Runs --- + + public insertHealthGateRun(run: HealthGateRunRow): void { + this.db.prepare( + `INSERT INTO health_gate_runs + (id, node_id, stack_name, trigger_action, status, reason, window_seconds, containers_json, started_at, ended_at, created_by) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + ).run( + run.id, run.node_id, run.stack_name, run.trigger_action, run.status, run.reason, + run.window_seconds, run.containers_json, run.started_at, run.ended_at, run.created_by, + ); + // Bounded history: keep only the 10 most recent runs per stack. + this.db.prepare( + `DELETE FROM health_gate_runs + WHERE node_id = ? AND stack_name = ? + AND id NOT IN ( + SELECT id FROM health_gate_runs + WHERE node_id = ? AND stack_name = ? + ORDER BY started_at DESC, id DESC LIMIT 10 + )` + ).run(run.node_id, run.stack_name, run.node_id, run.stack_name); + } + + public finalizeHealthGateRun( + id: string, + status: 'passed' | 'failed' | 'unknown', + reason: string | null, + endedAt: number, + containersJson: string, + ): void { + this.db.prepare( + 'UPDATE health_gate_runs SET status = ?, reason = ?, ended_at = ?, containers_json = ? WHERE id = ?' + ).run(status, reason, endedAt, containersJson, id); + } + + public getHealthGateRun(nodeId: number, stackName: string, id: string): HealthGateRunRow | undefined { + return this.db.prepare( + 'SELECT * FROM health_gate_runs WHERE node_id = ? AND stack_name = ? AND id = ?' + ).get(nodeId, stackName, id) as HealthGateRunRow | undefined; + } + + public getLatestHealthGateRun(nodeId: number, stackName: string): HealthGateRunRow | undefined { + return this.db.prepare( + 'SELECT * FROM health_gate_runs WHERE node_id = ? AND stack_name = ? ORDER BY started_at DESC, id DESC LIMIT 1' + ).get(nodeId, stackName) as HealthGateRunRow | undefined; + } + + /** Finalize runs left observing by a previous process (startup sweep). */ + public markInterruptedHealthGateRuns(reason: string, endedAt: number): number { + const result = this.db.prepare( + "UPDATE health_gate_runs SET status = 'unknown', reason = ?, ended_at = ? WHERE status = 'observing'" + ).run(reason, endedAt); + return result.changes; + } + // --- Notification History --- private mapNotificationRow(row: any): NotificationHistory { @@ -2641,6 +2732,7 @@ export class DatabaseService { this.db.prepare('DELETE FROM stack_drift_findings WHERE node_id = ?').run(id); this.db.prepare('DELETE FROM preflight_findings WHERE run_id IN (SELECT id FROM preflight_runs WHERE node_id = ?)').run(id); this.db.prepare('DELETE FROM preflight_runs WHERE node_id = ?').run(id); + this.db.prepare('DELETE FROM health_gate_runs WHERE node_id = ?').run(id); this.db.prepare('UPDATE blueprints SET pinned_node_id = NULL WHERE pinned_node_id = ?').run(id); this.deleteRoleAssignmentsByResource('node', String(id)); this.db.prepare('DELETE FROM fleet_sync_status WHERE node_id = ?').run(id); @@ -3267,6 +3359,17 @@ export class DatabaseService { return rows.map(row => ({ ...row, content: crypto.decrypt(row.content) })); } + /** Created-at of the most recent fleet snapshot covering a stack, or null. */ + public getLatestSnapshotTimestampFor(nodeId: number, stackName: string): number | null { + const row = this.db.prepare( + `SELECT MAX(s.created_at) AS latest + FROM fleet_snapshots s + JOIN fleet_snapshot_files f ON f.snapshot_id = s.id + WHERE f.node_id = ? AND f.stack_name = ?` + ).get(nodeId, stackName) as { latest: number | null } | undefined; + return row?.latest ?? null; + } + public deleteSnapshot(id: number): void { this.db.prepare('DELETE FROM fleet_snapshots WHERE id = ?').run(id); } diff --git a/backend/src/services/FileSystemService.ts b/backend/src/services/FileSystemService.ts index ca36dc52..68c8eb5d 100644 --- a/backend/src/services/FileSystemService.ts +++ b/backend/src/services/FileSystemService.ts @@ -361,8 +361,17 @@ export class FileSystemService { async envExists(stackName: string): Promise { const stackDir = this.resolveStackDir(stackName); + // Canonical js/path-injection barrier inline with the access sink, the + // same pattern backupStackFiles/restoreStackFiles use: stackName is + // already validated by resolveStackDir above, but static analysis only + // credits the containment check when it sits at the sink itself. + const baseResolved = path.resolve(this.baseDir); + const target = path.resolve(stackDir, '.env'); + if (!target.startsWith(baseResolved + path.sep)) { + return false; + } try { - await fsPromises.access(path.join(stackDir, '.env')); + await fsPromises.access(target); return true; } catch { return false; @@ -920,6 +929,48 @@ export class FileSystemService { }; } + /** + * Names-only summary of the backup slot's env coverage for rollback + * readiness: whether a backup exists, whether it contains a .env, and the + * variable names defined in it. Values never leave this method. + */ + async getBackupEnvSummary(stackName: string): Promise<{ exists: boolean; envPresent: boolean; keys: string[] }> { + if (!isValidStackName(stackName)) { + return { exists: false, envPresent: false, keys: [] }; + } + // Canonical js/path-injection barrier inline with the read sink, mirroring + // backupStackFiles/restoreStackFiles. + const backupRoot = path.resolve(getBackupBaseDir()); + const backupDir = path.resolve(backupRoot, String(this.nodeId), stackName); + if (!backupDir.startsWith(backupRoot + path.sep)) { + throw Object.assign(new Error('Path escapes backup directory'), { code: 'INVALID_PATH' }); + } + try { + await fsPromises.access(backupDir); + } catch (e: unknown) { + // Only a missing slot may report "no backup"; an unreadable one (EACCES + // on a root-created dir) must propagate so callers degrade to unknown + // instead of falsely promising the next update will create one. + if ((e as NodeJS.ErrnoException)?.code !== 'ENOENT') throw e; + return { exists: false, envPresent: false, keys: [] }; + } + try { + const content = await fsPromises.readFile(path.join(backupDir, '.env'), 'utf-8'); + const keys: string[] = []; + for (const line of content.split(/\r?\n/)) { + const match = /^\s*([A-Za-z_][A-Za-z0-9_]*)=/.exec(line); + if (match) keys.push(match[1]); + } + return { exists: true, envPresent: true, keys }; + } catch (e: unknown) { + // ENOENT means the backup genuinely has no env file. Anything else + // (EACCES, EISDIR) must propagate: reporting it as "no env in backup" + // would falsely claim a rollback cannot restore env changes. + if ((e as NodeJS.ErrnoException)?.code !== 'ENOENT') throw e; + return { exists: true, envPresent: false, keys: [] }; + } + } + async getBackupInfo(stackName: string): Promise<{ exists: boolean; timestamp: number | null }> { const backupDir = this.getBackupDir(stackName); try { diff --git a/backend/src/services/GitSourceService.ts b/backend/src/services/GitSourceService.ts index 85504aa8..25577ea6 100644 --- a/backend/src/services/GitSourceService.ts +++ b/backend/src/services/GitSourceService.ts @@ -8,6 +8,7 @@ import { CryptoService } from './CryptoService'; import { DatabaseService, type StackGitSource, type GitSourceAuthType } from './DatabaseService'; import { FileSystemService } from './FileSystemService'; import { ComposeService } from './ComposeService'; +import { HealthGateService } from './HealthGateService'; import { NodeRegistry } from './NodeRegistry'; import { assertPolicyGateAllows, buildSystemPolicyGateOptions } from '../helpers/policyGate'; import { isDebugEnabled } from '../utils/debug'; @@ -1062,6 +1063,7 @@ export class GitSourceService { }), ); await ComposeService.getInstance().deployStack(stackName); + HealthGateService.getInstance().begin(nodeId, stackName, 'deploy', 'system:git-source'); console.log(`[GitSource] Applied and deployed ${stackName} at ${commitSha.slice(0, 7)}`); return { applied: true, deployed: true }; } catch (e) { diff --git a/backend/src/services/HealthGateService.ts b/backend/src/services/HealthGateService.ts new file mode 100644 index 00000000..c085bcfb --- /dev/null +++ b/backend/src/services/HealthGateService.ts @@ -0,0 +1,472 @@ +import { randomUUID } from 'crypto'; +import DockerController from './DockerController'; +import { DatabaseService, type HealthGateRunRow } from './DatabaseService'; +import { sanitizeForLog } from '../utils/safeLog'; +import { getErrorMessage } from '../utils/errors'; +import { withTimeout } from '../utils/withTimeout'; +import type { HealthGateContainer, HealthGateReport } from './updateGuard/types'; + +const POLL_INTERVAL_MS = 5_000; +// Per-observe ceiling so a hung Docker socket cannot leave a poll pending +// forever. Above POLL_INTERVAL_MS so a slow-but-live probe is not cut short; a +// timeout counts as a poll error and three in a row resolve the gate unknown. +const OBSERVE_TIMEOUT_MS = 8_000; +// A stack whose containers never appear gives up after this long. +const EMPTY_GRACE_MS = 15_000; +const DEFAULT_WINDOW_SECONDS = 90; +const MIN_WINDOW_SECONDS = 15; +const MAX_WINDOW_SECONDS = 600; +// Backstop against runaway concurrency (a burst of webhook or scheduled +// updates). Gates past the cap finalize immediately as unknown. +const MAX_CONCURRENT_GATES = 25; + +interface ObservedContainer { + id: string; + name: string; + startedAt: string | null; + /** Docker's raw RestartCount at observation time. */ + restartCount: number; + /** Gate-maintained restart tally since the baseline; 0 on a fresh snapshot, + * set by poll()'s accounting pass, at most one increment per poll. */ + restarts: number; + state: string; + health: string | null; +} + +interface ActiveGate { + runId: string; + nodeId: number; + stackName: string; + windowSeconds: number; + startedAt: number; + /** Self-scheduling poll timer, armed only between settled poll cycles. */ + timer: ReturnType | null; + /** Expected container set, keyed by name; null until the first non-empty poll. */ + expected: Map | null; + consecutivePollErrors: number; + /** Names missing on the previous poll (two consecutive misses fail the gate). */ + missingLastPoll: Set; + /** Names in `restarting` state on the previous poll. */ + restartingLastPoll: Set; + /** + * Set by finalize so a poll that was mid-await when this gate was superseded + * or stopped can never overwrite the terminal verdict with a stale one. + */ + finalized: boolean; +} + +/** + * Post-update health gate: after a deploy/update succeeds, observe the + * stack's containers for a configurable window and record a passed / failed / + * unknown verdict plus an activity timeline event. Purely observational: it + * never restarts, heals, or rolls anything back. AutoHeal needs no special + * handling: the unhealthy or exited state that triggers it is seen by the + * gate's own polls and fails the gate, and repeated restarts trip the + * restart-loop check. + * + * begin() is the single shared post-success hook for every gated deploy and + * update path; excluded paths (rollback, installs, reconciler loops) simply + * never call it. + */ +export class HealthGateService { + private static instance: HealthGateService; + private readonly active = new Map(); + private started = false; + + public static getInstance(): HealthGateService { + if (!HealthGateService.instance) { + HealthGateService.instance = new HealthGateService(); + } + return HealthGateService.instance; + } + + /** Sweep runs left observing by a previous process, then accept begin() calls. */ + public start(): void { + this.started = true; + try { + const swept = DatabaseService.getInstance().markInterruptedHealthGateRuns( + 'Sencho restarted during observation', Date.now(), + ); + if (swept > 0) { + console.log(`[HealthGate] Marked ${swept} interrupted observation(s) as unknown`); + } + } catch (error) { + console.error('[HealthGate] Startup sweep failed:', getErrorMessage(error, 'unknown')); + } + } + + /** Clear every poll timer and finalize in-flight gates as unknown. */ + public stop(): void { + this.started = false; + for (const gate of [...this.active.values()]) { + this.finalize(gate, 'unknown', 'shutdown during observation', []); + } + } + + /** + * Begin observing a stack after a successful deploy/update. Returns the gate + * run id for response correlation, or null when gating is disabled, the + * service is not started, or recording fails internally. Inserts the row + * synchronously so the caller can include the id in its response; + * observation then runs on a timer. Never throws. + * + * Also records the `update_started` activity event for update triggers, so + * every gated update path gets the timeline marker even when the gate + * itself is disabled. + */ + public begin( + nodeId: number, + stackName: string, + trigger: 'update' | 'deploy', + actor: string | null, + ): string | null { + // Refuses work outside the start()/stop() lifecycle so a late call during + // shutdown cannot leave a dangling poll timer. + if (!this.started) return null; + try { + const db = DatabaseService.getInstance(); + const settings = this.readSettings(); + + if (trigger === 'update') { + this.recordActivity(nodeId, stackName, 'info', 'update_started', `${stackName} update started`, actor); + } + if (!settings.enabled) return null; + + // A newer operation supersedes an in-flight gate for the same stack. + const key = `${nodeId}:${stackName}`; + const existing = this.active.get(key); + if (existing) { + this.finalize(existing, 'unknown', 'superseded by a newer update', []); + } + + const runId = randomUUID(); + const startedAt = Date.now(); + const row: HealthGateRunRow = { + id: runId, + node_id: nodeId, + stack_name: stackName, + trigger_action: trigger, + status: 'observing', + reason: null, + window_seconds: settings.windowSeconds, + containers_json: '[]', + started_at: startedAt, + ended_at: null, + created_by: actor, + }; + + if (this.active.size >= MAX_CONCURRENT_GATES) { + db.insertHealthGateRun({ ...row, status: 'unknown', reason: 'too many concurrent observations', ended_at: startedAt }); + return runId; + } + + db.insertHealthGateRun(row); + const gate: ActiveGate = { + runId, + nodeId, + stackName, + windowSeconds: settings.windowSeconds, + startedAt, + timer: null, + expected: null, + consecutivePollErrors: 0, + missingLastPoll: new Set(), + restartingLastPoll: new Set(), + finalized: false, + }; + this.active.set(key, gate); + this.scheduleNextPoll(gate); + return runId; + } catch (error) { + // The gate is an observer; its failure must never fail the operation. + console.error( + '[HealthGate] begin (%s) failed for %s on node %d:', + trigger, sanitizeForLog(stackName), nodeId, error, + ); + return null; + } + } + + /** A specific run by id, the latest run, or the never-run sentinel. */ + public getReport(nodeId: number, stackName: string, gateId?: string): HealthGateReport { + const db = DatabaseService.getInstance(); + const row = gateId + ? db.getHealthGateRun(nodeId, stackName, gateId) + : db.getLatestHealthGateRun(nodeId, stackName); + if (!row) { + return { + stack: stackName, id: null, status: 'never-run', trigger: null, reason: null, + windowSeconds: null, startedAt: null, endedAt: null, containers: [], + }; + } + let containers: HealthGateContainer[] = []; + try { + const parsed: unknown = JSON.parse(row.containers_json); + if (Array.isArray(parsed)) containers = parsed as HealthGateContainer[]; + } catch { + // A corrupt blob only loses the per-container detail, never the verdict. + console.warn('[HealthGate] Unreadable containers_json for run %s', sanitizeForLog(row.id)); + } + return { + stack: stackName, + id: row.id, + status: row.status, + trigger: row.trigger_action, + reason: row.reason, + windowSeconds: row.window_seconds, + startedAt: row.started_at, + endedAt: row.ended_at, + containers, + }; + } + + /** + * Orchestrate one poll cycle and arm the next. Polls are single-flight: the + * next timer is scheduled only after this cycle fully settles (the finally + * below), so a slow or timed-out observe can never overlap the following poll + * or corrupt the restart/missing accounting that assumes one poll at a time. + */ + private async poll(gate: ActiveGate): Promise { + const key = `${gate.nodeId}:${gate.stackName}`; + // A late timer fire after supersede, stop, or finalize must do nothing. + if (gate.finalized || this.active.get(key) !== gate) return; + try { + await this.runPollCycle(gate, key); + } finally { + if (!gate.finalized && this.active.get(key) === gate) { + this.scheduleNextPoll(gate); + } + } + } + + /** Arm the next poll. No-op once the gate is finalized. */ + private scheduleNextPoll(gate: ActiveGate): void { + if (gate.finalized) return; + gate.timer = setTimeout(() => { void this.poll(gate); }, POLL_INTERVAL_MS); + } + + private async runPollCycle(gate: ActiveGate, key: string): Promise { + let observed: ObservedContainer[]; + try { + observed = await withTimeout( + this.observeContainers(gate), OBSERVE_TIMEOUT_MS, 'health gate observe', + ); + } catch (error) { + gate.consecutivePollErrors += 1; + console.warn( + '[HealthGate] poll error %d for %s:', + gate.consecutivePollErrors, sanitizeForLog(gate.stackName), getErrorMessage(error, 'unknown'), + ); + if (gate.consecutivePollErrors >= 3) { + this.finalize(gate, 'unknown', 'Docker became unreachable during observation', []); + } + return; + } + // The await above can straddle a supersede or stop; never act on a gate + // that was finalized mid-flight. + if (gate.finalized || this.active.get(key) !== gate) return; + gate.consecutivePollErrors = 0; + + const elapsedMs = Date.now() - gate.startedAt; + + if (gate.expected === null) { + if (observed.length > 0) { + gate.expected = new Map(observed.map(c => [c.name, c])); + } else if (elapsedMs >= EMPTY_GRACE_MS) { + this.finalize(gate, 'unknown', 'no containers found to observe', []); + } + return; + } + + const byName = new Map(observed.map(c => [c.name, c])); + + // First pass: restart accounting for every expected container still + // present, so the summary below reflects the tallies the checks act on. A + // restart counts when the container was replaced (new id), relaunched + // (StartedAt moved), or Docker bumped its RestartCount; at most one + // restart is tallied per poll regardless of how many occurred in the gap. + for (const [name, baseline] of gate.expected) { + const current = byName.get(name); + if (!current) continue; + const restarted = + current.id !== baseline.id || + current.restartCount > baseline.restartCount || + (current.startedAt !== null && baseline.startedAt !== null && current.startedAt !== baseline.startedAt); + current.restarts = baseline.restarts + (restarted ? 1 : 0); + } + const summary = this.summarize(gate.expected, byName); + + // Second pass: fail fast on a clearly bad state. + for (const [name, baseline] of gate.expected) { + const current = byName.get(name); + if (!current) { + if (gate.missingLastPoll.has(name)) { + this.finalize(gate, 'failed', `container ${name} disappeared during observation`, summary); + return; + } + gate.missingLastPoll.add(name); + continue; + } + gate.missingLastPoll.delete(name); + + if (current.state === 'exited' && baseline.restarts === current.restarts) { + // An exit with no restart attempt is terminal for the window. + this.finalize(gate, 'failed', `container ${name} exited during observation`, summary); + return; + } + if (current.health === 'unhealthy') { + this.finalize(gate, 'failed', `container ${name} reported unhealthy`, summary); + return; + } + if (current.restarts >= 2) { + this.finalize(gate, 'failed', `container ${name} is restart looping`, summary); + return; + } + if (current.state === 'restarting') { + if (gate.restartingLastPoll.has(name)) { + this.finalize(gate, 'failed', `container ${name} is stuck restarting`, summary); + return; + } + gate.restartingLastPoll.add(name); + } else { + gate.restartingLastPoll.delete(name); + } + // Carry the running restart tally forward as the new baseline. + gate.expected.set(name, current); + } + + if (elapsedMs < gate.windowSeconds * 1000) return; + + // Window complete: pass requires everything running and healthy wherever a + // healthcheck exists. A health state still 'starting' is not a pass. + const stillStarting = observed.filter(c => c.health === 'starting'); + if (stillStarting.length > 0) { + this.finalize(gate, 'unknown', 'a healthcheck was still starting when the observation window ended', summary); + return; + } + const notRunning = [...gate.expected.keys()].filter(name => byName.get(name)?.state !== 'running'); + if (notRunning.length > 0) { + this.finalize(gate, 'failed', `not running at the end of the window: ${notRunning.join(', ')}`, summary); + return; + } + this.finalize(gate, 'passed', null, summary); + } + + private async observeContainers(gate: ActiveGate): Promise { + const docker = DockerController.getInstance(gate.nodeId).getDocker(); + const listed = await docker.listContainers({ + all: true, + filters: { label: [`com.docker.compose.project=${gate.stackName}`] }, + }); + const observed = await Promise.all( + listed.map(async (info): Promise => { + try { + const inspect = await docker.getContainer(info.Id).inspect(); + return { + id: info.Id, + name: info.Names?.[0]?.replace(/^\//, '') ?? info.Id.slice(0, 12), + startedAt: inspect.State?.StartedAt ?? null, + restartCount: typeof inspect.RestartCount === 'number' ? inspect.RestartCount : 0, + restarts: 0, + state: inspect.State?.Status ?? info.State ?? 'unknown', + health: inspect.State?.Health?.Status ?? null, + }; + } catch (e: unknown) { + // Removed between list and inspect; the missing-container logic will + // see its absence on this or the next poll. + if ((e as { statusCode?: number })?.statusCode === 404) return null; + throw e; + } + }), + ); + return observed.filter((c): c is ObservedContainer => c !== null); + } + + private summarize( + expected: Map, + current: Map, + ): HealthGateContainer[] { + return [...expected.values()].map(baseline => { + const now = current.get(baseline.name); + return { + name: baseline.name, + state: now?.state ?? 'missing', + health: now?.health ?? null, + restarts: now?.restarts ?? baseline.restarts, + }; + }); + } + + private finalize( + gate: ActiveGate, + status: 'passed' | 'failed' | 'unknown', + reason: string | null, + containers: HealthGateContainer[], + ): void { + if (gate.finalized) return; + gate.finalized = true; + if (gate.timer) clearTimeout(gate.timer); + const key = `${gate.nodeId}:${gate.stackName}`; + if (this.active.get(key) === gate) this.active.delete(key); + + try { + DatabaseService.getInstance().finalizeHealthGateRun( + gate.runId, status, reason, Date.now(), JSON.stringify(containers), + ); + } catch (error) { + // The verdict is lost from the DB (the startup sweep will later rewrite + // the row as unknown), so log everything needed to reconstruct it. + console.error( + '[HealthGate] Failed to persist verdict %s (%s) for run %s, stack %s:', + status, sanitizeForLog(reason ?? 'no reason'), gate.runId, sanitizeForLog(gate.stackName), + getErrorMessage(error, 'unknown'), + ); + } + + if (status === 'passed') { + this.recordActivity(gate.nodeId, gate.stackName, 'info', 'health_gate_passed', + `${gate.stackName} health gate passed after ${gate.windowSeconds}s`, 'system'); + } else if (status === 'failed') { + this.recordActivity(gate.nodeId, gate.stackName, 'warning', 'health_gate_failed', + `${gate.stackName} health gate failed: ${reason ?? 'unknown reason'}`, 'system'); + } + } + + private recordActivity( + nodeId: number, + stackName: string, + level: 'info' | 'warning', + category: 'update_started' | 'health_gate_passed' | 'health_gate_failed', + message: string, + actor: string | null, + ): void { + try { + DatabaseService.getInstance().addNotificationHistory(nodeId, { + level, + category, + message, + timestamp: Date.now(), + stack_name: stackName, + actor_username: actor, + }); + } catch (error) { + console.warn('[HealthGate] Failed to record activity for %s:', sanitizeForLog(stackName), getErrorMessage(error, 'unknown')); + } + } + + private readSettings(): { enabled: boolean; windowSeconds: number } { + try { + const settings = DatabaseService.getInstance().getGlobalSettings(); + const windowRaw = parseInt(settings['health_gate_window_seconds'] ?? '', 10); + const windowSeconds = Number.isFinite(windowRaw) + ? Math.min(MAX_WINDOW_SECONDS, Math.max(MIN_WINDOW_SECONDS, windowRaw)) + : DEFAULT_WINDOW_SECONDS; + return { enabled: settings['health_gate_enabled'] !== '0', windowSeconds }; + } catch (error) { + // Safe default: observing is non-destructive, so a settings read + // failure keeps the gate on with the default window. + console.warn('[HealthGate] Settings read failed; using defaults:', getErrorMessage(error, 'unknown')); + return { enabled: true, windowSeconds: DEFAULT_WINDOW_SECONDS }; + } + } +} diff --git a/backend/src/services/NotificationService.ts b/backend/src/services/NotificationService.ts index 9e509020..b5771b50 100644 --- a/backend/src/services/NotificationService.ts +++ b/backend/src/services/NotificationService.ts @@ -27,6 +27,11 @@ export type NotificationCategory = // from ALL_NOTIFICATION_CATEGORIES (the routable-category whitelist) below. | 'drift_detected' | 'drift_resolved' + // Update lifecycle markers from the post-update health gate. History-only + // for the same reason as the drift pair above. + | 'update_started' + | 'health_gate_passed' + | 'health_gate_failed' | 'system'; export const ALL_NOTIFICATION_CATEGORIES: readonly NotificationCategory[] = [ diff --git a/backend/src/services/SchedulerService.ts b/backend/src/services/SchedulerService.ts index d2cf29cf..e1247b4e 100644 --- a/backend/src/services/SchedulerService.ts +++ b/backend/src/services/SchedulerService.ts @@ -6,6 +6,7 @@ import { PROXY_TIER_HEADER } from './license-headers'; import DockerController from './DockerController'; import { ComposeService } from './ComposeService'; import { FileSystemService } from './FileSystemService'; +import { HealthGateService } from './HealthGateService'; import { ImageUpdateService } from './ImageUpdateService'; import type { ImageCheckResult } from './ImageUpdateService'; import { isDebugEnabled } from '../utils/debug'; @@ -861,6 +862,7 @@ export class SchedulerService { const atomic = true; await compose.updateStack(stackName, undefined, atomic); db.clearStackUpdateStatus(nodeId, stackName); + HealthGateService.getInstance().begin(nodeId, stackName, 'update', 'system:scheduler'); this.safeDispatch( 'info', diff --git a/backend/src/services/UpdateGuardService.ts b/backend/src/services/UpdateGuardService.ts new file mode 100644 index 00000000..ee62db37 --- /dev/null +++ b/backend/src/services/UpdateGuardService.ts @@ -0,0 +1,175 @@ +import si from 'systeminformation'; +import DockerController from './DockerController'; +import { DatabaseService } from './DatabaseService'; +import { FileSystemService } from './FileSystemService'; +import { ComposeDoctorService } from './ComposeDoctorService'; +import { UpdatePreviewService } from './UpdatePreviewService'; +import { withTimeout } from '../utils/withTimeout'; +import { getErrorMessage } from '../utils/errors'; +import { sanitizeForLog } from '../utils/safeLog'; +import { + aggregateRollbackOverall, + aggregateVerdict, + backupSlotSignal, + buildRollbackItems, + containersSignal, + diskSignal, + driftSignal, + healthchecksSignal, + preflightSignal, + updatePreviewSignal, + type Errored, +} from './updateGuard/readiness'; +import type { ContainerProbe, RollbackReadinessReport, UpdateReadinessReport } from './updateGuard/types'; + +// Bound on the network-and-socket-backed inputs (container probe, update +// preview, disk stats) so a hung registry or Docker socket cannot stall the +// report past the dialog's own fetch timeout; the remaining inputs are local +// DB/file reads. A timed-out input degrades to its 'unknown' signal instead +// of failing the report. +const INPUT_TIMEOUT_MS = 3_000; + +/** + * Computes update readiness and rollback readiness for a stack, on demand, + * from existing per-feature stores (preflight runs, drift findings, the atomic + * backup slot, the update preview, live Docker state). Derived data only; + * nothing here is persisted. + */ +export class UpdateGuardService { + private static instance: UpdateGuardService; + + public static getInstance(): UpdateGuardService { + if (!UpdateGuardService.instance) { + UpdateGuardService.instance = new UpdateGuardService(); + } + return UpdateGuardService.instance; + } + + /** + * Probe the stack's containers via the compose project label, normalized for + * the pure scoring functions. Throws on Docker errors; callers map that to + * the 'error' sentinel. + */ + async probeContainers(nodeId: number, stackName: string): Promise { + const docker = DockerController.getInstance(nodeId).getDocker(); + const listed = await docker.listContainers({ + all: true, + filters: { label: [`com.docker.compose.project=${stackName}`] }, + }); + const probes = await Promise.all( + listed.map(async (info): Promise => { + const name = info.Names?.[0]?.replace(/^\//, '') ?? info.Id.slice(0, 12); + let inspect: Awaited['inspect']>>; + try { + inspect = await docker.getContainer(info.Id).inspect(); + } catch (e: unknown) { + // A container removed between list and inspect (auto-heal or update + // churn) should not collapse the whole probe; skip just that one. + if ((e as { statusCode?: number })?.statusCode === 404) return null; + throw e; + } + const mounts = (inspect.Mounts ?? []).map(m => + m.Type === 'volume' ? `volume ${m.Name ?? 'unnamed'}` : `${m.Type} ${m.Source ?? ''}`.trim(), + ); + return { + name, + state: inspect.State?.Status ?? info.State ?? 'unknown', + health: inspect.State?.Health?.Status ?? null, + exitCode: typeof inspect.State?.ExitCode === 'number' ? inspect.State.ExitCode : null, + hasHealthcheck: !!inspect.Config?.Healthcheck?.Test?.length, + restartPolicy: inspect.HostConfig?.RestartPolicy?.Name || null, + mounts, + }; + }), + ); + return probes.filter((p): p is ContainerProbe => p !== null); + } + + async computeUpdateReadiness(nodeId: number, stackName: string): Promise { + const db = DatabaseService.getInstance(); + const now = Date.now(); + + const [preflight, drift, containers, preview, backup, disk] = await Promise.all([ + this.collect('preflight', stackName, async () => ComposeDoctorService.getInstance().getLatest(nodeId, stackName)), + this.collect('drift', stackName, async () => db.getOpenDriftFindings(nodeId, stackName).length), + this.collect('containers', stackName, () => + withTimeout(this.probeContainers(nodeId, stackName), INPUT_TIMEOUT_MS, 'readiness container probe')), + this.collect('update preview', stackName, () => + withTimeout(UpdatePreviewService.getInstance().getPreview(nodeId, stackName), INPUT_TIMEOUT_MS, 'readiness update preview')), + this.collect('backup info', stackName, () => FileSystemService.getInstance(nodeId).getBackupInfo(stackName)), + this.collect('disk', stackName, () => this.readDiskUsage()), + ]); + + const settings = db.getGlobalSettings(); + const limitPercent = parseInt(settings['host_disk_limit'] ?? '90', 10) || 90; + + const signals = [ + preflightSignal(preflight), + driftSignal(drift), + containersSignal(containers), + healthchecksSignal(containers), + updatePreviewSignal(preview === 'error' ? 'error' : preview.summary), + backupSlotSignal(backup, now), + diskSignal(typeof disk === 'number' ? { usePercent: disk, limitPercent } : 'error'), + ]; + + return { stack: stackName, computedAt: now, verdict: aggregateVerdict(signals), signals }; + } + + async computeRollbackReadiness(nodeId: number, stackName: string): Promise { + const db = DatabaseService.getInstance(); + const fsSvc = FileSystemService.getInstance(nodeId); + const now = Date.now(); + + const [backup, envSummary, stackHasEnv, preview, lastDeployAt, containers] = await Promise.all([ + this.collect('backup info', stackName, () => fsSvc.getBackupInfo(stackName)), + this.collect('backup env summary', stackName, () => fsSvc.getBackupEnvSummary(stackName)), + this.collect('stack env presence', stackName, () => fsSvc.envExists(stackName)), + this.collect('update preview', stackName, () => + withTimeout(UpdatePreviewService.getInstance().getPreview(nodeId, stackName), INPUT_TIMEOUT_MS, 'rollback readiness update preview')), + this.collect('activity history', stackName, async () => { + const events = db.getStackActivity(nodeId, stackName, { limit: 50 }); + // A successful update is as good a known-good marker as a deploy. + return events.find(e => e.category === 'deploy_success' || e.category === 'image_update_applied')?.timestamp ?? null; + }), + this.collect('containers', stackName, () => + withTimeout(this.probeContainers(nodeId, stackName), INPUT_TIMEOUT_MS, 'rollback readiness container probe')), + ]); + + const items = buildRollbackItems({ + backup, + envSummary, + stackHasEnv, + rollbackTarget: preview === 'error' ? 'error' : { target: preview.rollback_target }, + lastDeployAt, + containers, + }, now); + + return { stack: stackName, computedAt: now, overall: aggregateRollbackOverall(items), items }; + } + + /** Host disk use percent for the main filesystem, or null when unavailable. */ + private async readDiskUsage(): Promise { + const fsSize = await withTimeout(si.fsSize(), INPUT_TIMEOUT_MS, 'readiness disk stats'); + const mainDisk = fsSize.find(fs => fs.mount === '/' || fs.mount === 'C:') || fsSize[0]; + if (typeof mainDisk?.use !== 'number') { + console.warn('[UpdateGuard] disk stats returned no usable mount; disk signal degrades to unknown'); + return null; + } + return mainDisk.use; + } + + /** Run one input collector; a failure degrades to the 'error' sentinel. */ + private async collect(label: string, stackName: string, fn: () => Promise): Promise { + try { + return await fn(); + } catch (error) { + console.warn( + '[UpdateGuard] %s unavailable for %s:', + label, sanitizeForLog(stackName), + sanitizeForLog(getErrorMessage(error, 'unknown')), + ); + return 'error'; + } + } +} diff --git a/backend/src/services/WebhookService.ts b/backend/src/services/WebhookService.ts index 078112cc..cc71a811 100644 --- a/backend/src/services/WebhookService.ts +++ b/backend/src/services/WebhookService.ts @@ -3,6 +3,7 @@ import { ComposeService } from './ComposeService'; import { DatabaseService, type Webhook } from './DatabaseService'; import { FileSystemService } from './FileSystemService'; import { GitSourceService } from './GitSourceService'; +import { HealthGateService } from './HealthGateService'; import { LicenseService } from './LicenseService'; import { PROXY_TIER_HEADER } from './license-headers'; import { NodeRegistry } from './NodeRegistry'; @@ -133,6 +134,7 @@ export class WebhookService { buildSystemPolicyGateOptions('webhook', { auditPath: `/api/webhooks/${webhookId}/execute` }), ); await compose.deployStack(stackName, undefined, atomic); + HealthGateService.getInstance().begin(nodeId, stackName, 'deploy', 'system:webhook'); break; case 'restart': await compose.runCommand(stackName, 'restart'); @@ -150,6 +152,7 @@ export class WebhookService { buildSystemPolicyGateOptions('webhook', { auditPath: `/api/webhooks/${webhookId}/execute` }), ); await compose.updateStack(stackName, undefined, atomic); + HealthGateService.getInstance().begin(nodeId, stackName, 'update', 'system:webhook'); break; case 'git-pull': return this.executeLocalGitPull(webhookId, stackName, action, triggerSource, startTime); diff --git a/backend/src/services/updateGuard/failureClassifier.ts b/backend/src/services/updateGuard/failureClassifier.ts new file mode 100644 index 00000000..9ccaefe9 --- /dev/null +++ b/backend/src/services/updateGuard/failureClassifier.ts @@ -0,0 +1,125 @@ +import type { FailureClassification } from './types'; + +interface ClassifierRule extends FailureClassification { + pattern: RegExp; +} + +const DOCKER_UNREACHABLE: FailureClassification = { + reason: 'node_unreachable', + label: 'Docker unreachable', + suggestion: 'Check that Docker is running and reachable on this node, then retry.', +}; + +/** + * Maps the redacted error text a failed deploy/update throws (the accumulated + * compose stdout/stderr from ComposeService.execute, or a sentinel like + * CONTAINER_CRASHED) onto an operator-facing cause and next step. + * + * First match wins, so ordering is load-bearing: + * - the CONTAINER_CRASHED and stall sentinels are exact, so they go first; + * - env_missing precedes compose_render_failed because a render failure caused + * by a missing variable should classify as the actionable cause; + * - healthcheck_failed precedes dependency_unavailable because compose phrases + * an unhealthy dependency as "dependency failed to start: ... is unhealthy". + * + * The app-store install route has its own message-prettifier (utils/ErrorParser) + * with a different output shape; installs are out of scope here. + */ +const RULES: ClassifierRule[] = [ + { + reason: 'container_exited', + label: 'Container exited after start', + suggestion: 'Check the container logs for the exit cause; roll back if the previous version was healthy.', + pattern: /CONTAINER_CRASHED/, + }, + { + // The idle-stall backstop terminated the step; the real cause is unknown. + reason: 'unknown', + label: 'Operation stalled', + suggestion: 'The operation stopped producing output and was terminated. Check Docker activity on the node, then retry.', + pattern: /STACK_STALLED_OUTPUT/, + }, + { + ...DOCKER_UNREACHABLE, + pattern: /cannot connect to the docker daemon|docker daemon is not running|error during connect|docker daemon is unreachable/i, + }, + { + reason: 'env_missing', + label: 'Missing environment variable', + suggestion: 'Define the missing variable in the stack environment file, then retry.', + pattern: /required variable\s+\S+ is missing|variable is not set|invalid interpolation format|env file .+ not found|couldn't find env file/i, + }, + { + reason: 'image_pull_failed', + label: 'Image pull failed', + suggestion: 'Check the image name and tag, registry credentials, and registry rate limits, then retry.', + pattern: /pull access denied|manifest unknown|manifest for .+ not found|toomanyrequests|failed to resolve reference|no matching manifest|error pulling image|repository does not exist|unauthorized: authentication required/i, + }, + { + reason: 'port_conflict', + label: 'Host port conflict', + suggestion: 'Free the conflicting host port or change the published port, then retry.', + pattern: /port is already allocated|bind: address already in use|ports are not available|failed to bind host port/i, + }, + { + reason: 'bind_path_missing', + label: 'Bind mount path missing', + suggestion: 'Create the missing host path or correct the bind mount source, then retry.', + pattern: /bind source path does not exist|mounts denied|invalid mount config/i, + }, + { + reason: 'permission_denied', + label: 'Permission denied', + suggestion: 'Check file and Docker socket permissions for the affected path, then retry.', + pattern: /permission denied|EACCES|operation not permitted/i, + }, + { + reason: 'healthcheck_failed', + label: 'Healthcheck failed', + suggestion: 'Check the failing service logs and its healthcheck command; roll back if the previous version was healthy.', + pattern: /is unhealthy/i, + }, + { + reason: 'dependency_unavailable', + label: 'Dependency unavailable', + suggestion: 'Start or create the missing dependency (service, external network, or volume) first, then retry.', + pattern: /dependency failed to start|depends on undefined service|declared as external, but could not be found/i, + }, + { + reason: 'compose_render_failed', + label: 'Compose file invalid', + suggestion: 'Review the compose file syntax (Compose Doctor can pinpoint the issue), then retry.', + pattern: /yaml:|mapping values are not allowed|cannot unmarshal|additional propert|undefined volume|undefined network|invalid compose/i, + }, +]; + +const UNKNOWN_FAILURE: FailureClassification = { + reason: 'unknown', + label: 'Unclassified failure', + suggestion: 'Open the deploy log and copy the troubleshooting details for the full error.', +}; + +/** + * Classify a failed deploy/update. Total: always returns a classification, + * falling back to `unknown`. `opts.dockerUnavailable` short-circuits to + * node_unreachable for errors the route already identified as a dead daemon + * (their message shape varies too much for patterns alone). + * + * Note: a ComposeRollbackError's message is already the underlying cause's + * message (its constructor copies it), so callers can pass + * getErrorMessage(error) for wrapped rollback failures unchanged. + */ +export function classifyFailure( + message: string, + opts?: { dockerUnavailable?: boolean }, +): FailureClassification { + if (opts?.dockerUnavailable) { + return { ...DOCKER_UNREACHABLE }; + } + for (const rule of RULES) { + if (rule.pattern.test(message)) { + return { reason: rule.reason, label: rule.label, suggestion: rule.suggestion }; + } + } + return { ...UNKNOWN_FAILURE }; +} diff --git a/backend/src/services/updateGuard/readiness.ts b/backend/src/services/updateGuard/readiness.ts new file mode 100644 index 00000000..d3aedb8c --- /dev/null +++ b/backend/src/services/updateGuard/readiness.ts @@ -0,0 +1,277 @@ +import type { PreflightStatus } from '../preflight/types'; +import type { UpdatePreviewSummary } from '../UpdatePreviewService'; +import type { + ContainerProbe, + ReadinessSignal, + ReadinessVerdict, + RollbackOverall, + RollbackReadinessItem, + SignalStatus, +} from './types'; + +/** + * Pure readiness scoring. UpdateGuardService gathers the inputs (each of which + * degrades independently to the 'error' sentinel) and these functions map them + * to signals and a verdict, so every grading rule is synchronously testable. + */ + +/** Sentinel for an input whose collection failed. */ +export type Errored = 'error'; + +const formatAge = (timestamp: number, now: number): string => { + const minutes = Math.max(0, Math.round((now - timestamp) / 60_000)); + if (minutes < 60) return `${minutes}m ago`; + const hours = Math.round(minutes / 60); + if (hours < 48) return `${hours}h ago`; + return `${Math.round(hours / 24)}d ago`; +}; + +export function preflightSignal( + input: { status: PreflightStatus } | Errored, +): ReadinessSignal { + const base = { id: 'preflight' as const, title: 'Compose Doctor' }; + if (input === 'error') { + return { ...base, status: 'unknown', affectsVerdict: false, detail: 'The stored preflight report could not be read.' }; + } + switch (input.status) { + case 'never-run': + return { ...base, status: 'unknown', affectsVerdict: false, detail: 'Compose Doctor has not been run for this stack yet. Run it for a deeper pre-update check.' }; + case 'blocker': + return { ...base, status: 'blocked', affectsVerdict: true, detail: 'The last preflight found a blocker. Resolve it before updating.' }; + case 'unrenderable': + return { ...base, status: 'attention', affectsVerdict: true, detail: 'The compose file did not render in the last preflight; the update is likely to fail the same way.' }; + case 'high': + return { ...base, status: 'attention', affectsVerdict: true, detail: 'The last preflight found high-risk findings. Review them before updating.' }; + case 'warning': + return { ...base, status: 'warning', affectsVerdict: true, detail: 'The last preflight found warnings.' }; + case 'pass': + case 'info': + return { ...base, status: 'ok', affectsVerdict: true, detail: 'The last preflight passed.' }; + } +} + +export function driftSignal(input: number | Errored): ReadinessSignal { + const base = { id: 'drift' as const, title: 'Drift' }; + if (input === 'error') { + return { ...base, status: 'unknown', affectsVerdict: false, detail: 'Drift findings could not be read.' }; + } + if (input > 0) { + const plural = input === 1 ? 'finding' : 'findings'; + return { + ...base, + status: 'warning', + affectsVerdict: true, + detail: `${input} open drift ${plural}: the running state has diverged from the compose file, so the rollback target may not match what is running.`, + }; + } + return { ...base, status: 'ok', affectsVerdict: true, detail: 'No open drift findings.' }; +} + +export function containersSignal(input: ContainerProbe[] | Errored): ReadinessSignal { + const base = { id: 'containers' as const, title: 'Current containers' }; + if (input === 'error') { + return { ...base, status: 'unknown', affectsVerdict: true, detail: 'Container state could not be read from Docker.' }; + } + if (input.length === 0) { + return { ...base, status: 'warning', affectsVerdict: true, detail: 'The stack is not running; updating will start it.' }; + } + const troubled = input.filter( + c => c.health === 'unhealthy' || c.state === 'restarting' || (c.state === 'exited' && (c.exitCode ?? 0) !== 0), + ); + if (troubled.length > 0) { + const names = troubled.map(c => c.name).join(', '); + return { + ...base, + status: 'attention', + affectsVerdict: true, + detail: `Already unhealthy before the update: ${names}. An update on top of a failing stack is hard to evaluate; consider fixing or stopping it first.`, + }; + } + return { ...base, status: 'ok', affectsVerdict: true, detail: `${input.length} container${input.length === 1 ? '' : 's'} running normally.` }; +} + +export function healthchecksSignal(input: ContainerProbe[] | Errored): ReadinessSignal { + const base = { id: 'healthchecks' as const, title: 'Healthcheck coverage', status: 'ok' as SignalStatus, affectsVerdict: false }; + if (input === 'error' || input.length === 0) { + return { ...base, detail: 'Coverage is unknown until the stack runs. Containers without healthchecks are verified by run state only after an update.' }; + } + const withCheck = input.filter(c => c.hasHealthcheck).length; + const withoutRestart = input.filter(c => !c.restartPolicy || c.restartPolicy === 'no').length; + const parts = [ + `${withCheck} of ${input.length} container${input.length === 1 ? '' : 's'} define a healthcheck; the rest are verified by run state only after an update.`, + ]; + if (withoutRestart > 0) { + parts.push(`${withoutRestart} ha${withoutRestart === 1 ? 's' : 've'} no restart policy.`); + } + return { ...base, detail: parts.join(' ') }; +} + +export function updatePreviewSignal(input: UpdatePreviewSummary | Errored): ReadinessSignal { + const base = { id: 'update_preview' as const, title: 'Pending update' }; + if (input === 'error') { + return { ...base, status: 'unknown', affectsVerdict: false, detail: 'The update preview is unavailable.' }; + } + if (input.blocked) { + return { + ...base, + status: 'blocked', + affectsVerdict: true, + detail: input.blocked_reason ?? 'A scan policy blocks this update.', + }; + } + if (input.has_update && input.semver_bump === 'major') { + const change = input.current_tag && input.next_tag ? ` (${input.current_tag} to ${input.next_tag})` : ''; + return { ...base, status: 'attention', affectsVerdict: true, detail: `A major version bump is pending${change}. Review the upstream changelog for breaking changes.` }; + } + if (input.has_update && input.semver_bump === 'unknown') { + return { ...base, status: 'warning', affectsVerdict: true, detail: 'An image update is pending but the version change could not be classified.' }; + } + if (input.has_update) { + const kind = input.update_kind === 'digest' ? 'a same-tag image refresh' : `a ${input.semver_bump} update`; + return { ...base, status: 'ok', affectsVerdict: true, detail: `Pending: ${kind}.` }; + } + return { ...base, status: 'ok', affectsVerdict: true, detail: 'No pending image update detected; the update re-pulls and recreates with current tags.' }; +} + +export function backupSlotSignal( + input: { exists: boolean; timestamp: number | null } | Errored, + now: number, +): ReadinessSignal { + const base = { id: 'backup_slot' as const, title: 'Rollback backup' }; + if (input === 'error') { + return { ...base, status: 'unknown', affectsVerdict: false, detail: 'The backup slot could not be read.' }; + } + if (!input.exists) { + return { ...base, status: 'warning', affectsVerdict: true, detail: 'No rollback backup exists yet; one is created automatically when the update starts.' }; + } + const age = input.timestamp ? ` (from ${formatAge(input.timestamp, now)})` : ''; + return { ...base, status: 'ok', affectsVerdict: true, detail: `A compose and env file backup exists${age} and is refreshed when the update starts.` }; +} + +export function diskSignal( + input: { usePercent: number; limitPercent: number } | null | Errored, +): ReadinessSignal { + const base = { id: 'disk' as const, title: 'Node disk' }; + if (input === 'error' || input === null) { + return { ...base, status: 'unknown', affectsVerdict: false, detail: 'Disk usage could not be read.' }; + } + const use = Math.round(input.usePercent); + if (input.usePercent >= input.limitPercent) { + return { ...base, status: 'attention', affectsVerdict: true, detail: `Disk usage is at ${use}%, at or above the ${input.limitPercent}% alert threshold. Image pulls may fail; free space first.` }; + } + if (input.usePercent >= input.limitPercent - 5) { + return { ...base, status: 'warning', affectsVerdict: true, detail: `Disk usage is at ${use}%, close to the ${input.limitPercent}% alert threshold.` }; + } + return { ...base, status: 'ok', affectsVerdict: true, detail: `Disk usage is at ${use}%.` }; +} + +/** + * Severity precedence: blocked > attention (review required) > verdict-affecting + * unknown > warning > ready. Informational unknowns never affect the verdict. + */ +export function aggregateVerdict(signals: ReadinessSignal[]): ReadinessVerdict { + const affecting = signals.filter(s => s.affectsVerdict); + if (affecting.some(s => s.status === 'blocked')) return 'blocked'; + if (affecting.some(s => s.status === 'attention')) return 'review_required'; + if (affecting.some(s => s.status === 'unknown')) return 'unknown'; + if (affecting.some(s => s.status === 'warning')) return 'ready_with_warnings'; + return 'ready'; +} + +// ── Rollback readiness ─────────────────────────────────────────────────────── + +export interface RollbackInputs { + backup: { exists: boolean; timestamp: number | null } | Errored; + envSummary: { exists: boolean; envPresent: boolean; keys: string[] } | Errored; + /** Whether the stack currently has an env file (distinguishes "no env to cover"). */ + stackHasEnv: boolean | Errored; + /** + * UpdatePreview.rollback_target wrapped in an object so the Errored sentinel + * cannot be absorbed into the string domain (an image literally named + * "error" must not read as a failed preview). + */ + rollbackTarget: { target: string | null } | Errored; + /** Timestamp of the most recent deploy_success activity event, if any. */ + lastDeployAt: number | null | Errored; + containers: ContainerProbe[] | Errored; +} + +export function buildRollbackItems(inputs: RollbackInputs, now: number): RollbackReadinessItem[] { + const items: RollbackReadinessItem[] = []; + + const backupExists = inputs.backup !== 'error' && inputs.backup.exists; + if (inputs.backup === 'error') { + items.push({ id: 'compose_source', state: 'unknown', label: 'Previous compose file', detail: 'The backup slot could not be read.' }); + } else if (backupExists) { + const age = inputs.backup.timestamp ? ` from ${formatAge(inputs.backup.timestamp, now)}` : ''; + items.push({ id: 'compose_source', state: 'ready', label: 'Previous compose file', detail: `A backup${age} is available to restore.` }); + } else { + items.push({ id: 'compose_source', state: 'missing', label: 'Previous compose file', detail: 'No backup exists yet. One is created automatically by the next update or deploy.' }); + } + + if (inputs.envSummary === 'error') { + items.push({ id: 'env_keys', state: 'unknown', label: 'Previous env file', detail: 'The backed-up env file could not be read.' }); + } else if (inputs.envSummary.envPresent) { + const n = inputs.envSummary.keys.length; + items.push({ id: 'env_keys', state: 'ready', label: 'Previous env file', detail: `${n} variable name${n === 1 ? '' : 's'} captured in the backup (values are restored with the file, never shown here).` }); + } else if (inputs.stackHasEnv === true && backupExists) { + items.push({ id: 'env_keys', state: 'missing', label: 'Previous env file', detail: 'The stack has an env file but the backup does not contain one; a rollback would not restore env changes.' }); + } else if (!backupExists) { + items.push({ id: 'env_keys', state: 'missing', label: 'Previous env file', detail: 'No backup exists yet.' }); + } else { + items.push({ id: 'env_keys', state: 'ready', label: 'Previous env file', detail: 'The stack uses no env file, so there is nothing to restore.' }); + } + + if (inputs.rollbackTarget === 'error') { + items.push({ id: 'previous_images', state: 'unknown', label: 'Previous image tag', detail: 'The update preview is unavailable.' }); + } else if (inputs.rollbackTarget.target) { + items.push({ id: 'previous_images', state: 'ready', label: 'Previous image tag', detail: `Known rollback target: ${inputs.rollbackTarget.target}. If the compose file uses a moving tag, restoring files alone does not revert the image; pin this tag to be exact.` }); + } else { + items.push({ id: 'previous_images', state: 'unknown', label: 'Previous image tag', detail: 'The previous image tag could not be determined. A rollback restores compose and env files; a moving tag may keep the newer image.' }); + } + + if (inputs.lastDeployAt === 'error') { + items.push({ id: 'last_deploy', state: 'unknown', label: 'Last successful deploy', detail: 'The activity history could not be read.' }); + } else if (inputs.lastDeployAt) { + items.push({ id: 'last_deploy', state: 'ready', label: 'Last successful deploy', detail: `Recorded ${formatAge(inputs.lastDeployAt, now)}; the backup reflects a configuration that deployed successfully.` }); + } else { + items.push({ id: 'last_deploy', state: 'missing', label: 'Last successful deploy', detail: 'No successful deploy is recorded in the recent activity history.' }); + } + + if (inputs.containers === 'error') { + items.push({ id: 'healthchecks', state: 'unknown', label: 'Healthchecks', detail: 'Container state could not be read from Docker.' }); + } else if (inputs.containers.some(c => c.hasHealthcheck)) { + items.push({ id: 'healthchecks', state: 'ready', label: 'Healthchecks', detail: 'At least one service defines a healthcheck, so a rollback can be verified beyond run state.' }); + } else { + items.push({ id: 'healthchecks', state: 'missing', label: 'Healthchecks', detail: 'No service defines a healthcheck; rollback verification relies on run state only.' }); + } + + const mounts = inputs.containers === 'error' + ? [] + : [...new Set(inputs.containers.flatMap(c => c.mounts))]; + const mountDetail = mounts.length > 0 ? ` This stack mounts: ${mounts.join(', ')}.` : ''; + items.push({ + id: 'volume_data', + state: 'not_covered', + label: 'Application data', + detail: `Named volumes and bind-mounted data are not included in file backups. Rolling back restores compose and env files only; application data keeps its current state.${mountDetail}`, + }); + + return items; +} + +/** + * compose_source gates not_ready; ready additionally requires env coverage and + * a known previous image tag. volume_data, healthchecks, and last_deploy are + * disclosures and never gate the overall state. + */ +export function aggregateRollbackOverall(items: RollbackReadinessItem[]): RollbackOverall { + const byId = new Map(items.map(i => [i.id, i.state])); + if (byId.get('compose_source') !== 'ready') { + return byId.get('compose_source') === 'unknown' ? 'partial' : 'not_ready'; + } + if (byId.get('env_keys') === 'ready' && byId.get('previous_images') === 'ready') { + return 'ready'; + } + return 'partial'; +} diff --git a/backend/src/services/updateGuard/types.ts b/backend/src/services/updateGuard/types.ts new file mode 100644 index 00000000..b3ed2ad4 --- /dev/null +++ b/backend/src/services/updateGuard/types.ts @@ -0,0 +1,115 @@ +/** Overall verdict of an update readiness check. */ +export type ReadinessVerdict = 'ready' | 'ready_with_warnings' | 'review_required' | 'blocked' | 'unknown'; + +/** Graded status of a single readiness signal. */ +export type SignalStatus = 'ok' | 'warning' | 'attention' | 'blocked' | 'unknown'; + +/** One input to the readiness verdict (preflight, drift, containers, ...). */ +export interface ReadinessSignal { + id: 'preflight' | 'drift' | 'containers' | 'healthchecks' | 'update_preview' | 'backup_slot' | 'disk'; + status: SignalStatus; + /** Short headline ("Compose Doctor", "Running containers"). */ + title: string; + /** What was observed and why it matters. Never carries an env value. */ + detail: string; + /** + * False for informational unknowns (preflight never run, preview + * unavailable) that should not drag the overall verdict to `unknown`. + */ + affectsVerdict: boolean; +} + +/** Computed on demand; not persisted (the inputs keep their own history). */ +export interface UpdateReadinessReport { + stack: string; + computedAt: number; + verdict: ReadinessVerdict; + signals: ReadinessSignal[]; +} + +/** State of one rollback readiness item. */ +export type RollbackItemState = 'ready' | 'missing' | 'unknown' | 'not_covered'; + +export interface RollbackReadinessItem { + id: 'compose_source' | 'env_keys' | 'previous_images' | 'last_deploy' | 'healthchecks' | 'volume_data'; + state: RollbackItemState; + label: string; + /** Names only for env coverage; values never appear here. */ + detail: string; +} + +export type RollbackOverall = 'ready' | 'partial' | 'not_ready'; + +export interface RollbackReadinessReport { + stack: string; + computedAt: number; + overall: RollbackOverall; + items: RollbackReadinessItem[]; +} + +/** Normalized per-container probe used by readiness and the health gate. */ +export interface ContainerProbe { + name: string; + /** Docker container state (running, exited, restarting, ...), or 'unknown'. */ + state: string; + /** Docker health status (healthy | unhealthy | starting) or null without a healthcheck. */ + health: string | null; + exitCode: number | null; + hasHealthcheck: boolean; + /** RestartPolicy.Name, or null/'no' when none is set. */ + restartPolicy: string | null; + /** Mount descriptors ("volume data", "bind /srv/app"), for coverage disclosure. */ + mounts: string[]; +} + +/** Lifecycle of a post-update health gate observation. */ +export type HealthGateStatus = 'observing' | 'passed' | 'failed' | 'unknown'; + +/** Per-container end state captured when a gate run finalizes. */ +export interface HealthGateContainer { + name: string; + /** Docker container state, or 'missing' when it vanished mid-observation. */ + state: string; + health: string | null; + restarts: number; +} + +/** Payload of GET /:stackName/health-gate ('never-run' when no run exists). */ +export interface HealthGateReport { + stack: string; + id: string | null; + status: HealthGateStatus | 'never-run'; + trigger: 'update' | 'deploy' | null; + reason: string | null; + windowSeconds: number | null; + startedAt: number | null; + endedAt: number | null; + containers: HealthGateContainer[]; +} + +/** Categories a failed stack deploy or update can be classified into. */ +export type FailureReason = + | 'image_pull_failed' + | 'compose_render_failed' + | 'env_missing' + | 'port_conflict' + | 'bind_path_missing' + | 'permission_denied' + | 'container_exited' + | 'healthcheck_failed' + | 'dependency_unavailable' + | 'node_unreachable' + | 'unknown'; + +/** + * Operator-facing classification of a failed deploy/update, attached to the + * route's error response so the recovery surfaces can show a cause and a next + * step instead of only the raw compose output. + */ +export interface FailureClassification { + reason: FailureReason; + /** Short display headline ("Host port conflict"). */ + label: string; + /** Suggested next action, one sentence. */ + suggestion: string; +} diff --git a/docs/docs.json b/docs/docs.json index c9eddd18..e509fe14 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -116,6 +116,7 @@ "pages": [ "features/deploy-progress", "features/atomic-deployments", + "features/health-gated-updates", "features/deploy-enforcement", "features/git-sources", "features/app-store", diff --git a/docs/features/atomic-deployments.mdx b/docs/features/atomic-deployments.mdx index fcd4e925..265cc072 100644 --- a/docs/features/atomic-deployments.mdx +++ b/docs/features/atomic-deployments.mdx @@ -5,7 +5,7 @@ description: Wrap every deploy and update in a backup, a 3-second health probe, Sencho wraps every protected deploy in a four-step safety net: it copies the current `compose.yaml` and `.env` to a writable backup directory, runs the requested compose action, waits 3 seconds for the new containers to settle, then checks them for a non-zero exit code. If any container has crashed, Sencho restores the backed-up files and re-deploys automatically. -The same backup also powers the **Rollback** action in the stack editor, so you can roll a stack back to its last good configuration on demand. +The same backup also powers the **Rollback** action in the stack editor, so you can roll a stack back to its last good configuration on demand. To see in advance whether that rollback would actually help, and to watch container health for longer than the 3-second probe, see [Health-Gated Updates](/features/health-gated-updates). ## How it works @@ -54,7 +54,7 @@ A restore is a faithful revert, not an overlay. Sencho replaces the compose file A user without the `stack:deploy` permission will still see the menu entry; the rejection comes from the backend with a permission error after they click. Ask an admin to grant `stack:deploy` through **Settings · Roles & Access** if that happens. - The health probe is a 3-second window after `docker compose up -d` returns. Crashes that happen after that window are out of scope for atomic rollback by design, because Sencho cannot tell whether a late exit is a real failure or a normal restart. For ongoing health, use **Auto-Heal Policies** to restart unhealthy containers automatically and **Alert Rules** to page you when a container exits unexpectedly. + The health probe is a 3-second window after `docker compose up -d` returns. Crashes that happen after that window are out of scope for atomic rollback by design, because Sencho cannot tell whether a late exit is a real failure or a normal restart. The [health gate](/features/health-gated-updates) covers exactly this period: it observes the stack for a configurable window after the update, records a verdict on the stack timeline, and offers a manual rollback when containers do not stay healthy. For ongoing health beyond that, use **Auto-Heal Policies** to restart unhealthy containers automatically and **Alert Rules** to page you when a container exits unexpectedly. This message means the auto-rollback attempted to restore the backup and re-deploy, but the restore step or the re-deploy itself errored out. The backup files are still at `/backups//`. To recover: diff --git a/docs/features/deploy-progress.mdx b/docs/features/deploy-progress.mdx index d71f00d6..e3f127f3 100644 --- a/docs/features/deploy-progress.mdx +++ b/docs/features/deploy-progress.mdx @@ -58,6 +58,8 @@ Click **Raw output** in the footer to expand a 200 px raw terminal panel beneath When an action completes successfully, the status indicator switches to `Succeeded · closes in s` and a 4-second countdown begins. Hover anywhere over the modal to pause the countdown; moving the cursor away restarts a fresh 4 seconds. Clicking **Close** dismisses the modal immediately. +When the [health gate](/features/health-gated-updates) is observing the stack after a deploy or update, the modal withholds the success verdict: the status indicator shows **Verifying health** instead of **Succeeded**, and the auto-close waits for the gate. A passed gate shows the success state and resumes the countdown; a failed or unknown verdict becomes the headline result and keeps the modal open with the reason. Closing the modal never stops the observation. + Deploy progress modal in the succeeded state with a green checkmark, the text 'Succeeded' and 'closes in 2s' in the header, and the full structured log body visible beneath diff --git a/docs/features/health-gated-updates.mdx b/docs/features/health-gated-updates.mdx new file mode 100644 index 00000000..f1228b2f --- /dev/null +++ b/docs/features/health-gated-updates.mdx @@ -0,0 +1,119 @@ +--- +title: Health-Gated Updates +description: Check update readiness before applying, watch container health after the update lands, and know exactly what a rollback can restore. +--- + +Updating a stack is the highest-anxiety operation in a homelab: a pull-and-recreate can break containers, networking, env configuration, or storage assumptions, and `docker compose` alone gives you no answer to "is it safe to update this right now?". Sencho makes updates deliberate and reversible in three layers: a readiness check before the update, a health gate after it, and an always-honest rollback readiness report on the stack. + +None of these layers blocks you. Readiness is advisory, the health gate is purely observational, and rollback is always an explicit action you confirm. The only thing that hard-blocks an update is a [deploy enforcement policy](/features/deploy-enforcement). + +## Update readiness + +When you trigger **Update** from the stack editor toolbar or the sidebar menu, Sencho first opens a readiness dialog with a single verdict and the signals behind it: + +| Verdict | Meaning | +|---------|---------| +| Ready | Nothing stands out; the update can proceed. | +| Ready with warnings | Proceed, but read the warnings first. | +| Review required | Something needs a look: a high-risk preflight finding, an already-unhealthy container, a pending major version bump, or low disk. | +| Blocked | A blocker was found, such as a Compose Doctor blocker or a scan policy that will stop the update. | +| Unknown | Readiness could not be verified, for example when the node or Docker is unreachable. | + +The verdict is computed from signals Sencho already tracks, so the check is fast and never re-runs anything heavy: + +- **Compose Doctor**: the stored result of the last [preflight run](/features/compose-doctor). A blocker finding makes the verdict Blocked; high-risk findings ask for review. If Compose Doctor has never run, the dialog says so without dragging the verdict down. +- **Drift**: open [drift findings](/features/stack-drift) warn you that the running state has diverged, so the rollback target may not match what is running. +- **Current containers**: a container that is already unhealthy, restarting, or crashed before the update makes the result hard to evaluate; the dialog asks you to look first. +- **Pending image change**: the [update preview](/features/auto-update-policies) classifies the pending change. A major version bump asks for review; patch updates and same-tag refreshes pass quietly. +- **Rollback backup**: whether a backup slot exists and how old it is. A missing backup is only a note, because the update itself creates a fresh one when it starts. +- **Node disk**: disk usage near or above the node's alert threshold warns you before a large pull fills the disk. +- **Healthcheck coverage**: how many services define healthchecks, which determines how thoroughly the post-update health gate can verify the result. + +Admins also see whether a [fleet snapshot](/features/fleet-backups) covers this stack and can tick **Create a fleet snapshot before updating** to capture one as part of proceeding. If the snapshot fails, the update does not start. + +Every verdict keeps the **Update now** button enabled. The dialog informs the decision; it does not make it for you. + + + Update readiness dialog for a stack, showing the verdict chip, the signal rows for Compose Doctor, drift, containers, pending update, rollback backup and node disk, the fleet snapshot row with the create-snapshot checkbox, and the Cancel and Update now buttons + + +## The post-update health gate + +The 3-second crash probe from [atomic deployments](/features/atomic-deployments) catches instant failures. The health gate is the longer observational layer behind it: after a deploy or update succeeds, Sencho watches the stack's containers for an observation window (90 seconds by default) and records a verdict. + +During the window, the gate checks every container that came up with the stack: + +- all expected containers stay **running**, +- Docker healthchecks report **healthy** wherever a service defines one, +- no container **exits**, **disappears**, or enters a **restart loop**. + +A clear failure ends the observation immediately. Passing requires the full window, and a healthcheck still in its start period when the window ends records the verdict as unknown rather than claiming success. + +The deploy progress modal treats the gate verdict as the real result: while the gate observes, the status reads **Verifying health** rather than claiming success, and the auto-close waits. A passed gate shows the success state; a failed or unknown gate becomes the headline result with its reason. Closing the modal never stops the observation; the gate runs server-side and its result appears on the stack timeline either way, as **health gate passed** or **health gate failed** events alongside the **update started** marker. + +The live verifying and recovery view is part of the deploy progress panel. If you have turned that panel off, the in-browser gate view does not appear, but the gate still runs on the node and records its verdict on the stack timeline. + + + Deploy progress modal after an update finished, with the status indicator showing Verifying health and the health gate banner reading observing containers + + + + Deploy progress modal with the headline status Health gate failed and the banner naming the unhealthy container, with the hint that rollback options are available on the stack + + +When the gate fails, the stack page surfaces the same [recovery actions](/features/deploy-progress#recovery-actions) as a failed update: retry, restart, roll back when a backup exists, refresh the container state, or copy diagnostics. Rolling back is always your call; the gate never rolls anything back on its own. + +The gate also runs for updates you did not click: scheduled image updates, webhook-triggered deploys and pulls, bulk updates, and Git source applies all record gate verdicts on the stack timeline. Rollbacks, App Store installs, and Sencho's own automation loops are deliberately not gated. + +### Tuning or disabling the gate + +Open **Settings > Host Alerts > Update health gate** on the node you want to configure: + +- **Observe health after updates** turns the gate on or off for that node. On by default; turning it off only stops the observation and its timeline events, never the update itself. +- **Observation window** sets how long containers are watched, from 15 to 600 seconds. The default is 90 seconds; raise it for stacks that take a while to settle, since a healthcheck still starting at the end of the window records an unknown verdict instead of a pass. + + + Host Alerts settings page with the Update health gate group, showing the Observe health after updates toggle and the Observation window field + + +## Rollback readiness + +The Stack Dossier carries a **Rollback readiness** section that answers one question honestly: if this update goes wrong, what can a rollback actually restore? It reports an overall state of Ready, Partial, or Not ready, built from: + +- **Previous compose file**: whether a backup slot exists and how old it is. +- **Previous env file**: whether the backup contains the stack's env file. Sencho lists how many variable names are covered; the values themselves are restored with the file and never displayed. +- **Previous image tag**: the known rollback target from the update preview. When the compose file uses a moving tag, restoring files alone does not revert the image, so the report names the exact tag you would pin to be precise. +- **Last successful deploy**: whether the backup reflects a configuration that actually deployed successfully. +- **Healthchecks**: whether a rollback can be verified beyond run state. +- **Application data**: always reported as not covered. Named volumes and bind-mounted data are not included in file backups; a rollback restores compose and env files only, and your application data keeps its current state. This row exists so the limit is stated where you decide, not discovered during an incident. + + + Rollback readiness section in the Stack Dossier with the overall Ready chip and the six rows: previous compose file, previous env file with variable names only, previous image tag, last successful deploy, healthchecks, and the application data non-coverage disclosure + + +## Classified failures + +When a deploy or update fails, Sencho classifies the failure from the compose output and shows the cause with a suggested next step in the recovery panel: an image pull failure, a missing environment variable, a host port conflict, a missing bind-mount path, a permission problem, a crashed container, a failed healthcheck, an unavailable dependency, an unreachable node or Docker daemon, or an invalid compose file. The classification also lands in **Copy details**, so a bug report carries the cause, not just the raw output. + +## Troubleshooting + + + + Unknown means one of the verdict-affecting signals could not be verified, most often because Docker or the node did not answer in time. The update path is never blocked by an unknown verdict; check the node's connection if it persists, and proceed when you are confident in the stack's state. + + + The gate fails on the first clear problem it observes: a container exit, an unhealthy healthcheck, a restart loop, or a container disappearing mid-window. Check the named container's logs from the stack page. If the container legitimately restarts during startup (a migration step, for example), raise the observation window under **Settings > Host Alerts > Update health gate** so the gate watches past the settle period. + + + Unknown means the observation could not finish: Sencho restarted mid-window, a newer update superseded the observation, Docker became unreachable, a healthcheck was still starting when the window ended, or no containers appeared to observe. The stack timeline records the reason. Check the containers directly; an unknown verdict makes no claim either way. + + + The modal holds its auto-close while the gate observes so the verdict is not lost. You can close it at any time; the observation continues server-side and the verdict lands on the stack timeline. If the gate result repeatedly cannot be retrieved, the modal gives up with an unknown verdict instead of waiting forever. + + + That is by design and true for every stack: file backups cover compose and env files, never named volumes or bind-mounted data. For point-in-time copies of stack files across the fleet, use [fleet snapshots](/features/fleet-backups); for application data, use a backup tool appropriate to the workload (database dumps, volume backups) before risky updates. + + + The sidebar's per-stack **Update** action runs the same path as the editor toolbar, so it shows the same readiness dialog and deploy progress. One click on **Update now** proceeds. On nodes that do not advertise the capability, updates run directly without the dialog. + + diff --git a/docs/images/health-gated-updates/dossier-rollback-readiness.png b/docs/images/health-gated-updates/dossier-rollback-readiness.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb8eee480d08fe2b4ccba194313234929cedcd8 GIT binary patch literal 183163 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

A+fKeb6&MpPq^G+c)o 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%0A|X`HdgrakbSTr4mXJ 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 I0XH!IA8qN+v;Y7A literal 0 HcmV?d00001 diff --git a/docs/images/health-gated-updates/modal-gate-failed.png b/docs/images/health-gated-updates/modal-gate-failed.png new file mode 100644 index 0000000000000000000000000000000000000000..91200de133feca464085579d01901ebcaaa42a1c GIT binary patch literal 155295 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

AR4 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 Jbbrvi*%6 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 literal 0 HcmV?d00001 diff --git a/docs/images/health-gated-updates/readiness-dialog.png b/docs/images/health-gated-updates/readiness-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..43edf1e689a1cbd2f84f4d3bb061c24f10bd3ae7 GIT binary patch literal 164893 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 z z8OVG*VMP&$n?e-jy*=#%5C?3~O@H@tgEP>KG|(slhj9?4j?2LReghedD#nL+LyS{07;M5hoSZw79%U$iN zp;o_A+d9jk?*Ojd_EW&_oLp6W3?)CKl+D1Wvc_n#QiG~%D~Yh;b+N7)Kr8wDF+jE+ zn^RmV0wdN1B`**4uyH<8+24Le%G?X6KcrB_u!P%?Vdh!{T)p(=_Aot?DLtEI<0Iao zS>YL*f0*u>PT!1Ag04=n@N`vYX`bSNX7OV2CCiL%F06j|acx zi=7#URyuUU@a8HaC*%i24;>*oFT?;-%p7@3QarhS>%}{r672$j`2_Sf@jhR8m`_%t za#8@k$5vNKE`FjCM~fBG%HT0I4^13u;&Nt|kwL^Mar7MA9kkxE zd?oAIP_KB7tx%vgA&(fPK+FH7ME6FtjS+Xp(}+~q_VhglW0>@RBSCOCp$$1g&Sv*; zb4QnDTr@z+`WhzFWWJxT_-2)WHm6^0fpqP1+4Wc@_mXH*$!M8M{e&-SB2j<8JQ)6m znu(x|qC^2KpFPvDNQf`_S>0IF<%8L4^ZXwxq;6Tr+}JmjeBbg~_Liq7l`e8)SY-(L z;5;dR{S`TbIF+ikhp4FsTtECna}5Q0a(rJ4c%s`?T7F9yU1C+JeK8Udu|L z!gAW6O5a&-6TLJa#rXOH)+gSAH7DwqgS(%ie*0?g6Y}M? z+0>qD&#SkmVNBtUih+iX6Ah(U(fJRXuZqe3)?!-=;ZR2-XZ4rwU=<$`rI>*Ix3adU zG5{s0_oCSOKg0V2Fb9lq{*c@o)Scq|QZdl--iyCTLDRqFo*A@rOOrKJ%?9{||A<6x zxST#uCpY6MH#hVWpn%tMD}P~Gfs1-6%mfw`(@7Q!H^-W>IB(lZff!{t!Vq^@pD-=r zA9A5qHs{VualTBi02NdK1(ztc+eH(RG|9b|rQ zG4(a$j)uLJr~ZZS__$QdcBir7ew@s8S%|af%evE**If8<9y(%3`9M*J)A>(IjZP=* z%D_s(9#GC(2?3Dslzhw39prwzTvI^KL&jIEo|);C`}x+pJ02!q%!1sVp#H%mBo3{q z8U;@*&7Eq`atr9;&Gzyib;VwHZ1^`mn19D(%i?Mfh-jT}(pq~EM*%~J%Hn=tJ?ZbrYA}^d`Qi!}|VfZOj^lgUa z#3NgZ#`(-9^*;m!eBrBP8!-$OTD9aH_PkoZEV~6Sur0%_c$-+>H2&!^BRkI(5S5cX zrQ^+PcfRHMLNR&3Fb@twB8JP@7cjLIDQQm|F z_J5nu6eZnApaq!_WXpboVgdnOLGD&~Incsa+5K)Uzzpw2SHptK zy-6VDnl3MQfVwjaN*}El6PbDc9$zwOBMxFg&YVFA18elhX~o`%5n0(1=dWKQA}d#l$7P5^tDh z7Qkl~crb&zVjYUpYd10cre4(OW4s|xAqm_5tH3PiJe+2}gOSLQF$OjP1Vuc5!h5AEkaQddC%rSs|`Yn-S~UbI@WA%c^IID`%Q?26jZNu@w-}>-9T%hh}Ei`x5Or6YS zGmV|Pn|i~tD@R{B+^RG0QfKf1=UVw?lQ<>#PknsPwPz~t!)U2gnOfZeNnxo7V%ha4%Dg-4IcWZE%6rI_P>yLZf;xi{P(9a{RUdy+t;E- zm01Rr%8eU+y-3mO;YkVo)W6W)dBYb3wv=4jiib><6hyb~jKhk$mLEAnLlD}37saYS zTNIDWFIoj6e(47m&oB8yr^PG44xRd4Xer-{I{{qs#fy@R z#E0>31~7nHPqe&(TrIRrHApvho|3}`~$VWEkyI=&^rg`^ej_v;xKs^K_4pdB4(wRMecZKmiTwj z5=4C~?W2q=n>VM*^Ysr_Uek*4>Qs^_hSN?}y09ru&#@@vtmeMU$pLSWxDA-j*Yb?#y&Qdcwu}Z0*KKjZYk7x0kNXcmTAAEDWSfRtl1n9&2Ch*R>;`J*2XEy!L$U z24?|F2u{A7mWBw?`6m9%sn^}?<>&(!*&x`ADm;;qN(uPhrYW5Leozll!^<2DmkTS z9i~Lb2xvuYfbbo#g_OK5(gObw$A~#amDVS5=s9Ns$Dwu;jcpZHXX#n^y}@$x9qVoP zRB&pyzx^F(9go?Cs?yqg*v%Fv0=!md7yx81w?+vyTtH(%@iUbwS)PjGG>3X&GsklA z`(lp7HF8nzNO^gweDR--abI7>-a41;+kreUmq?Tz{C;k1{2?dzLVnV(6V90@y2e<4 zURf(nK>iuoO)NFK6}+dxcVFdO?to#;Q}d@vT4@pJ4BBD|Yw;DxxmP))&b*nAUf9~_ zSGnN6q3>$FC--q6e}H+^-I8Dow>YX5N-m8qkG44-PL+`#2u@NWP}3FoJ%nTtv|&Dn z_+bOgJAg?^_}SbRkpLr@I6@I3*A!j82RbJPYr`s!2bQU<;Q&ASMRUrmc_{LRP=+@C z5?68lp`X!J{Y6iDZWM~Iz(X+|^Gr@0h>~yBPSlJmlfr&nc@K+wTDF|@QJgaZ7 z^73Rcu1$BAwHcT}O~E9*4_nYaqJOo?~h&t{_%fD$$-c3-?O_7rY}Y zCY!B5$|4jxYgg6~F6-$*di^#UpH^fv(6bM+q-efjB_LM=u5cDGEwHa)(#Vf9lVF8! zhH5gZ1f3|}(vqS_?>Yl5;TZr~_yw3jn1ms_U?H{l`bSd1RmA89=ufNM@4ltKRq(eAcvZ6v@Ak9jNPQx+58LP-?4}=tgFef zcsk30JXPE$92-I!AMr!&%tJ2r;=p6bk4;F0c!-~9Uzg=6F|HpS zlGqi9d4%|d^^^{if}A;2Jkb|sP?8#fKXZDQ7_WDy-1?)G16NvHs%#%lz+h|w@)esO z;xoQ($63<54?eY05E2<^!>L9W)ah-oX_@Tn7r7-A<=J-}T*D^b;L}#8hbRo-SQ4(kI8*!jOx#ygVCgQZ5+S zGOsut&b|u08~&kLuIcK`E`hQndP%DZ(33EGWxE`!0ZCHi$HJ^L=z*BENSPW)Y4W17 ze6CL4)w|Ds2So&-F>RN;4rgxK3ykZ{fX%fU-_Rnhlp3OR?+&dG{&> zUh&%8u03?o(p%Qz*5mvl?RWNq>y=e~11QENiUx)R(B^_ECIu|@OB+EC(OSupsBpxF z{+Xk{}lrq_nl9$on+c&XmP}_mbfw)Rxs4DmaB3u!`_P8Q5Kuk zWtuONC@JxitzaKU1E7}QRs3ueA2mG&t8xPV#CngK2$*%BTY_OR%8tTT%}wTXe$N%F zn!kHo?u@bKG?p|ch7_f~TxxQ-BmeGVBfuw<0OuP~|8YFu0#DZFe0=*OpApH6CeXX= zo&wY>uY$KH6>xO{D5l)YxgU%sT6;D`PQ`vp2Y<_&h^i3DSdXwUqx_x-2x8LCTclK_ zA&6@Pst?ec4+9;%$nh|5-31IZSd;t-wId0x3)VSmA8C&wv48n3BL_jGi2dB7G~t{# z#k!x4e)5#%@XM#=s#+-wr?E85_@6sO(yIH-BnH%PQ-p%_!NO%z*g?Yv_1Ob0DmNUD0 zk3^%S{9v&tkmAFauz6?PN&&U7d}2l^J=F!EBJiGFfBwhcs8YsW*;zvYsnEfan}*I7 zPM1S~t0<4_L#g#j;Hrl$^*@ zDeexcaU$V50lv>PsfJm+T5$%nIG zi=m6k&sUk1GJlI6U*5;JTrVf1#vSN2yC@>*e;oD* zZSF?6jDF~jc)zCy4uxrr|0NZRU$C-am3P&6c&nT-$$szVAJhT)SGOrTEu)&RLXO!c zgpjo?OqB{tC^V63GJdKzT{L8Dj8WtN@%GkHRj%FF@TQcOHVILb5U@}{NVyUK`gpNP(YM&BZ8D5_0HRKo@c!8AMf}5@%_ek2ICCQ0rtN4 zeP7qL)|zY1xjxadwDcA}EvY8V>JF9c*kauWL#VqPQk-|S! z4C(RL<=U$^eqUBuveXDJT>GCmY6XQI+%j$~ zEh}0cQ_bd7p$l%SA=2wr#oekC*YkzlX53s$`G?|)!tR(il%pFJ{b}M-5my27Y)r_f z-#v4j^7zr_t0r~YO!7OOtdYJH?i;+~|8T6eV24Sj|A9Ixkx%&;^?5$oBG+ijLFqCh z@4lo@DjWB;YYo0&$Mejsm z)3J76z4h+lKDTcuU|vMMuRO=o(py$!J6Lx-ljS*+k=xMQ?7T7?5McKP%l!WA7?!Nn z%u;vqyCU1BC#?@ynT$9dckH*;b}}kZ@QHpsQ0?t4K}mKSYfVIZq)yIHGB7mXN`RGj z7n`~llN!TE5lY!m<{oXAw>9rWxV9X+9H>sm3e=TEMIEvPty#jRK=BWKPSX2z4{uQ} zWMmFVvj}(lQSfGUDnPz5UVcs7dyzqA{=5_w7x~0NxvcjKd$@dVZ9!G33*v z`b`@J{@l3k8E^e-&GnZx+kYqm>qwy^`mafp`lKD1^j!h*@~&TkViaU|@XN3y9ozS& zg^itRh?i&l&AqL^5mRb4nGK$rT#zAe1K{d=+>16EDFfWD3dTHY8L>@-ZDPD?Gof1y~#C~2%6#14j10|&QTwb}&MF#S$fu*&y(LvDJe@fguOZ>O)@&kKEZ{>Rrb$BVZmblm1Pr__?~I~*5e zcjl0tEye3={66a8dpLzYTfF2Xm3%keTT`HKmPWNnEsRyp>-nF1rpk}S-$#kKD!NO= zGTDzj+H_Y2mlmDmSC|&wh~fzt@^)YQ96T z_VkJJ_?|q*w(g(hzxy#WWO1&0_u_)x25l_ncHYXt3R~&?jHSsPU^IP`C~= zud<6)`3XV!X~*6XBZtvJlLKw|kHB7&cNqLSakHLk_OzWF3QU9g?{CmP;{RD9-}vU4 z!C(F6L$_#BVf)$a!oJArGP2n#k%3GZp0n$}G_WLaHFD&M*h%hSGQaB9w`EZFS ze25`A1P_J0{B<;zxvTB40f0ITKw0NDvQf+=!trrSDucj}opP`zBiiP`=hjvR)*d@8 zmA<`Bqv-cH>Rjvyidocb3&6{;g3ewuXdA*l(Y&nx$UHXUTtSDwSp}W z?j)_VBbFQJ>>qt|FTEmhEy?3@*TXRXgYr?&$0KXTro>k5&T?PgG9R-nHclBR?;k8A zC{CL)>cw9b=CqSQm-*TMvTqn%jaggs@+Jm%iI6%NMOtA`v^OApt$z>g{Qfib)gSdM ze%VlqkB|%{M=p2o6{lti$xKPo}gNF|5m5&g|YR727nUt*U4t z2DHNcRXo>2TPyFHcOgnR0EbA(H3K(&F&kh=Fj%!PZ917eVCs0mW2Hq_zPc>p&FMqI z=6>aB9-#pt+mdpqH!(gvw%301dG)qAbA#$_4GBB<^5==Mh^wxRl426KW(M@|y(Bsf zf4O9V)L&Js4+L+oQF_8!T(td(g@9mY93#7SBkk0F`Wl|3%^UgZCZ3bdXsw8_RZr!= zEZjkP(Bd{V#z(E^+kApRqLq&k#3fY@MFY?2HIeQ82V57)9AB@{Touyn9Ci}F-(Yrl zrA2qN`g;6+Hok;uCSd2P^$h9MPY?R;yvX6kMi-hjXS6!=qP;~J6>MP zQDEDD?6eilzdaab3j*{H+-f#Jnel^j>$Mou$?Kw|^lxPmyZt=6MK_Q6(_Wxf4A0p< z_^o$7dgS-k#3E7zm2jq;jo!8sZ%e}1{$*+Xr=ueC%a$f=aL$@QjMqA#mKYK|o`_bbC-R-q;o(!jFhL~RV@d$wh&J-DF+}_9 zspS2Of8XKlw!&g54TF6UTrm+Xm%)=TLtYB`Xj_N)j(s}3mkS7zTr4WZb)v0x6U3&?P&We;)uA(g=gg|{@&`_K&8G_%sYN)0kqbHboxRaOjIdX(2l8fv$7hH^pVU6@tM|>LM>#3Hf`LZi2 zWPX(d^Rh4hd@SX-PW};A`UNZ|DLOPT1LgY-`dl}3zn^bV+pa4n3Nmx@j)trX zJue?fEXaq)7Qi21{6oIyT%^JFw%sSA5lhQ80YX5fo&%n~$uN;me66VrZINFd+|c@o zWePN|)$++Ih6^v1Hpo&JFgY{Huc?byQfrnsa;>A3*+$@sP&O&uCzuEb`9^SRSe}ok z_Nhe*BFRYM(CNcIwpa2q@H)6ZyCFb*3500jbG7%Hj;5@CAy8Sz$^J@KrVRsosh44R zTu;bd&3Bbx!2QK{+J9XDkapfcEx|JVie0m2{uk6d`^5wEI6bQcerdAwP*TfhUPnmz zOKm@W?X0gjS;nxiq&kvsv4KL_T{-6M)&7@{b?P-vTX0oCyLxjS6Csblx-)`d>AspS zAqVUPwJ0&B?{cs{@bbUOz2W6vint@L&0o!K?&g)M^IanZ=36(!%a~lH4G3Pv1%9mA z{X&)_j9dPO*P9UTk7r7*Zhw(T9(+BpndCb)mo@wy&yy1E40q_2jYZoMxc1ocK1B2foGL-|R zpS{UtiqF3o{x(XLxgNZM4njmI?p*x%ribF>>dOhZcR2X2|12HFcOVjpq(_=4^BN-` z!66rZk)UvdYy-Dxf#4_JJByu%E)}e8T|uGURUEe>1Cdq@C=!f97RWxjot(OmyY`K0r{ZPgc< z&;!}L@BFLkwUtRfKR+UG*Tr@>HO=6?3Gix`q+f(?3h6aNh==M=!ls$r z)$n8jk`(dsAI}I66xaw)eVXifo(>rMXNYTt)7xo4T|2sP4xVFW8T?qY9e(%$JCX{C zxo5-gBMCh}63$A(l;i3bpJ>CUD5W?Y-bV;Y_Mw@XX zG?-BkcioLGznkK9L$T(?&AT<9#2vPOlD~k`WRC4X(mlTO_X*i2B#H=MSEr57_g-4A zA~kZJohOn+e8GGWFHtfm$6qt4y0qym`z8t2(5>HCza1g_e$ZFt?We2x=Qjfn-hN26 zGw@=VWa^fIxXK}}2G*63+ks+-|9KrhzQR^PBw3Po^t0X>)Y2JshY{qZzZ*}L;5pn; zwCc@R=`SR-1poZt7XjjjE9{XTh)VvXK13Zu7st$5n4uxyehvysO__x^eqJ7>(~gAMULLv3lFSxki+m(j5`_Eup|S zZ1rYO$r*~c)9zBruh#80|4WL(wZ; zGIQ41pQL}UX6mo(QchBIHNA-Pt*-W6%0PAPZ=0Iba19M=Y=H zXLc=rGN8~(c5f7w{q^+cz%TXaPL?I(-#;d4JHI}$jIEK;9q_z3Y51!#;-?wm*EPt!^7&f? zbiWYn!ZPWl3z+^e4Ov9j2cA`TR8&w}lRxA(oTd;y4cRROn=pxY?Q=$;*)E4kZp0h0 z$`eeno%C1CShbie={B*&k1S*r#lHHMwpfvOe6N3hHtO1`@O_^6$0B=PF=vr7!~paQTT@`ElH9{-R^7T_Uz04W8fJrVgS z#~i2{DDgs z{}kF`dC2=;t;I<>;&uEb!60x&GG(5%&|SUiPmBA${|Dt>>i>K?c>+lO%GjN|yxW5M zT=p#-2cfJlG266F$u@O7o{I9b8&B zIN0X>k!5WxQpl>1dEj0K3OS6WDuy2#U#VKO_)!KaFsQXe;32-&{+^McF00kQr6~8* zp?b=TTI!elApNzSO6c<7%$)irFnjkXlDFum~E()9Sq z#-G<&9ne|87XHXyODC>dxL{P~WX*L43Dx$)A1PlM&^nATZBrcz-3dlrz|lnA%+nuz z;=Pdvhy6k={j%TlXQ?H|Y!Hrm2d&voZUtle#c4Ipt^dISh8$Oy-On6+x-p*rB62PO zx5ULyZ9u>aymihXS|gZz#J@a6jrX&0jXj^_w7SnrlT3ckM^9DOy&FLGhphhPFXonts792u-B>2Sdp24rGOeX1(`nRU!R|vQ&k~D-xLp0PPkjqc1CLAAtPmt z5=#&iwerlML9zf5 z7yLzL+SSETG#{&g&JW{yUNIg1Ok%w;JElFhVpV<*AN$*4gOih3c`F9if=YM}XM2%GKzdsF( zBRtjr`_piCVl)5urw)EVn7A&%Su@ytllG**X$^!72oC;(Bgr996pY65IN!AVo213#S~Czw9`**vFbuXL9qY!Xr#RO z&>#Aw(BXBZ|F__=QB22++PbIzv&$#Dx9%_fXzo76q^$z{S%I=2?;47*e}rDgDDc59 zuEX(!#-|H#g?!k&u%0eBuX2koP9T^}apr{%n7BCQtX+v3-X0|+7Hc#wYQ~!f{52=~ zak$AY{dm4`@yRbe#^1@=hNW-r?zm<@xWK>U{#DxR9%;|_6r~v=m(TRSO(Ncn5#^V^ z=L;e@qMk&)&}oW_unL7AY}E+&nig<)VD;f(fW=KTbrGW>#;AEo&@7Q@96R;wUoPo( zsQ$oV)x^O7m=i8!2OURFa_yC61Z@=8g=Kh{@up))&Q&Kbm{sI}V{@B#1A#Z1As(_k$0@Ww*T}VV3zMJAgHJ$4m5wO*@voPlTW$~ZseSwF z+Qa<`g@QZxhzmO6mZoXO-+-Ef^{CyMJD1nbT{Kh!N!65tu@rU?>~<2??K_v;De#;o zS`+Jl;}JGv+v-mE)(F>*_D z#N)2$6c@1ObA8ZnYA?_}_exnfUGaTVuX?Jee21@2>kB*Mi1nu0CR^CrP+qMcdH(R8)S4r~%($ed`$<5uQUV5fkhz=~ht*aJg$3ShJ!N*yf)6~-=(#la5m zs}#>CtkM8KXi>|jPKNGR2vYdo^hDNp*DEE0iWMTsLYkuBe*ir5g3>O)9~+)55Y9YX zuaqQW9k<53<@F7$M)Hc#{uH#yFcud3u>2(|6GVOJZ~V$P#Ug#*^)dLSqNC!>j_F%; z?8rs+wX|9R1cFeRgZqucKWQ(EwvAE58e)>*X_N%piR^}^%LtU$&Yu8F{KwENXQ5`C zSFBUYhX-C?n24&M+F+pMbr}CF_D$Yc|LbnMnNypJ)~UVpfp^%FehRkWeQv$r__UY* zi=ftV)!?}8I})F@ZV}wzBp&1&dmf8+^TYjLN+bo#m~OHEe6m+5p`K+Bma~E+BOd?H zu#uEJNQSDbI9Z_WiKN&TYW+x9;nbWqdKDm)0tL=nmRJ_~E%P%DfY2akEkF$uMHyTlU^O(<7eY7bpFCXk%zk z?7<3&!U{PhTZ$Gl&DRTCB`T2&#?cD}+lWWLSQccf%G!zuQ$7-F8z$u>*C=S!0ysYS za(KEG@0jI539lu=ozE2WZ^ylsQrU&<;<(o}p~T|1>L(-w_~^=5=zWg)l&-g=x7?Om zKNxmk%Mi{wrI^IVBQ!Ocz9;JMQ;Y6;P}4evc=>I1PywCwH|z2!y~++x+TWPj%E5L5 zhNgG3ULN$(-Ba4Cj3Ybn)?WmIZa>AvgE3Z=J|1s6q^L>Mo?egi>*nsuw7X|p)>`@>lX`W3FY%sT`VwXs8%D1k zsGH)pbEl#|zmi&L`&FGR@84N6&f|A(XL~Y5swoSd=I04NsC8TIb=W?|*J0bAudK-| zy?NFQk;U`ha!cDR<5zC^kk|o`XKja(aXEK$OT?j=-;NzCNYsyQ5Gr2RHF?* zU)&qm9{f=E+!GAz#ARi@O{|aj95EU>ghTA2e_1TSwudi^t@fY%Okf?mCy7U6V#l$R<-KVuWjUyJ^DI-97Sk{&{N0ef9D zsi&wTgvG`bIvJo7&%e9%aI^A}`t6SemOeHK?XP2MEPT%^Z3;NHtsg01*7K}eY1{H# z$RE3IW|@xHbh(e)+-&cLkx$;dZ44rg(A)2g+43$B%R>9C_3%Rs>~mlA%-I$9r6pVv z3rZ??$(KBM`yQsQo*z#|;{5aDZx6xp7 zTkaCbq1h#0I#kOu^Yp*JIeWDG`AQz$3dfjTrfX4bdRTtE>k%>T&r3#_eZUm!XZB6%}ub-LlI z8?`;#S^~MW?svD8XoR!~+vAS=0bW7x3 zQSz6)j&@Ckg|LWlVYaMG%LHkXJ@kaNRt-A$?RWs+>BIFZr=kl! zfTepktwWLHVNRpq@7Rvio9)7CUo1F^rKn=HF1>ut)O>GjNbp3z$9S#|H`1zL$bel?oBal>EAh{|IYV7-1mAtfwvdy zr;cUu&wRWPYW-;B3`kpS{lY3HBGPG!iL-eRGI{yyFE0sj`+0oh^_n_bDX({3Yj?G~ zOn@o-LH3wc!5;N2z1|REO7dW_qPrW;YKy|^%*WTclju~g$Llp#k`VbijAvn}V6dnZ z8GKSRpINJj)Wtk|Gp*f6_9F!;%uYM6>uS){uGdGh%mFU4EYS^CafaJgZ;WXbaMtZhcMi z%WF=l>ZN!Wce3S>BsXo$LF@Zv#!cGyp<$vjVidn~W1%SP$0yC<>Am?YfZp^A!fY7TOP( zmGXNXCl~7O-Ru4gw8P%u$QUF6Ph9)mQETca>1?>@Rs1N^CBf)5sv;zY7gSiCS#3uE zT^-cv%cVbL^Yq;VX%-cextei>&I%k8FkyJtAL0=8?4cT)P4(#qeVdB30+M5-4_-DMJ%LBsFR7mb6 zEZY~u)^5d_uLWA*K;U9OnD z=6>$0XVcOR>6aJa!)Mgq z)4=@>5S+t$O{4!{0g z9+x%FmLi7`ZSRl z=J(-z?>nCs7fSauvq{cA63I4Lw1)N@DrXV#dS}=jZp&_Hnqm4j@K!bVbbP7hQWu-^ zO?lwK^S8tbxpY>$v$MFpre3a}KjiESDCsw}4_4oRN9fiXG}O7;tqFeLUAuPtgnXaJ zju`zIk-QrVfIG+}bROF?b#^-ngY%de$7{_g;9Z%iYpYe6gFdG)%h(vXGxNZe&yw*S z*+cP9p5!S3JS}|j9G2szk_@DGyn6=>~UT5hK%6Cpx}pX_jidH#b^&@n3m6@nCle!13^S3-0gyj zMtDXfLsU(p&@Gb~$a+)>Jb>J;yY9nLp$seWT}@e(Nz7&f(k)zBXA-D%mzs(R`|>L0 z&HI(Z&oDg?H61*qemkDua%-(M0BsxV>iKy{9}Kz&mx@0GT{U&m*L#1*X_svA<|$I;iFV|Zawy1-Jhql5F*juqo!8}FSXVt1#~Jb0qgqi;mi=DVe( z^Luf&xF+Z<99kJ@mrA%gSPSU#*)tuWK>U3zl%#Z%l=Ajxt64|sNN?HHNGC)?BT4+) z8&jpJFw!AcnL9_`KMp|G@t4VPa{hBuTI<+-WlnHK1B2Y_d3 z;Xz}^P5{JqxH5xD-!_2NfeHiQtVTxwi>k=F<5QWayJakN{60vB>P^sc{rmD=Fw z(I$Oo1>0YRYJssKT?0>{762r^*M1QHIVHs*6@9!$t50{^PZ0A?$r!=o#= z>7Z2@f`ZT3Uc?8sV-!1!hPKcoTn2KgmpV-JC}0sw--UWv8XyiZl0`5&V3evW;RjlU z$X<~~(6&5=-iE(#H?qZSa^CB+;eQ&7%7Q3^ep=kbz-a9x{VQt#?o+)Pvfw!aY}4Px zxl^P|#MHJStz#7cXcw26_lh$o#}8}gX4^r6Gl50~{V1e=IN9UN{&0Q|*uZ;bQrnr{ z^1+X~MSz_xXoLXll*hzgVap7AZy?(s38e)wV_E1$CSo{+yut&K!@pyXO|?bEc#LCh^V zfKLs(4!6A2smrU;`mSZq+08mz);t5#J9v)+#n z+xH`P+k?HSe2g!?W60ZKVsbKjhQ;6XyUfWI3VWQaXV7Ec$rNI_X+b zkI9s=nN$Q*B#Q+4amCyRW81E*;ff*(T*>N!GKr+R1r;;|()T@94FD8kTf(c%*xv_m zY<*F5QaPnpnz3=ILn@^UPQ={S12mH*-Sz52~J0Q&;cMXh2^vMKv7Y?G32SgI3ZgP&T$U0=Jn08eoe9BT>=+;0!uxo*2iZ z$L)sU+BylBr3g6H4#S_N_w8qHUxvMF^L%g&)a#S2=E;iy?fu zVp~2vBC_jWMBfnxu~Qi9qji4`^#RdRz%d4KR;J}D2zIO4+4QXd9l@3vaOyaPR=_IC zXql+Hohg8uq6D?iBl!`AanjR4G;P{$7#G+9Gl{sZb(gJaHy54X0Osmu2 zY+2doiE_Gw$7N^c(|<1>aAg6dN@l#}L;DRqR!mvQTb%!3Y_BJEuJ#t)gWZ}x;p~nR z;y9T9K*>B_Y*u)pjd?hLZw-4gag2>9=~3`)oc4}5t#2lQsAQ-}$Cs&1`L;>-HeqB7 zvY`PU29Dg5U;;ul!sSyD!bbApi0Ts{@vNsMy}j32x8@N@92(SvhQ#In&jhpo%j?`) z<|6T>7xsP*BeEKP7wCS(6-fOTttn~t9yU1;eRBe{y$xWdnXQSP&LtRZl6W^ zh>jFs*c3b|H?hxvso~!S=io~~g~2KtAXthx-R34f8HmdQNzng+N%A)KZybGdE`PoP zmjSQy*j#*Daqfa%UppF=x4?UEB}xcx{CEQ(gcfO_T=k$(fY|4~EYk1W7N-0d4g>kmUNM1Xil1RZuOI?UhR75n_0c+azmFXSmqVk4HBr9hx z5?*YDHQfGK*#8~2wJW{+}6(ZBUnN5lzrHM2UNwgnKI`e0FfwVPZVab*XFQQ_0erfT(CL4(G+0 zHBXst#8v`*#0g;Qf!i4?2b6I~ZV577XtHh2gV^!%+*7>%9{HF!R{8JU3?OT{h z!Iiv-%-mT*=;uA?Zq77lM(;)Q+pP6|@n;8h+|Lhrrr938AKJ6=^bBHZ`oqoa2C6D8 z%v^ddyDk7L_95e7m>hXFnUGY}l1@1KhGf~{M* ze}*uozq<+amLl9BCzQPEd1jSma3({WpmP>HD1uO4aN)Rf8*%KR8igL%sw=DOO0?F? z|6l=d^U)Oo0vv>}$qPIT#YeV6UTYqA<=X1f$ers($IcdA#iO?`pLl_`!4diEd_V7@ z#`th~kvKoV2r0vj$9@1%EpA#?sQnhHI|wJ|CRGdY3X__enna<2ntyDDjuxMBFQrAN zpwGg>hT?f|&U6zjPEPS$WkEFZuPkUu&sAm{n3#XOQFdb|S(k8cMJ{75zS+7Db-9Q| z3m}UiquRrH^|PR_l+G8gExeHj4dyq>ne3^3_Wd$)tSoO2%raa=<5Az`^!EGLlt>Pu z9XsxG=Wn?SB(dUxt?EH_;RD_X0Bt$8>nFzqyuRht!=N+A6b}FLf4*UH`>4?2xNzb^ zM8nM^p3A;M;0O+fK0k-B?%32|o&LNCwjk+mM7aFlI~lj?ZCMPdmd2$KLO5k+~dHN2iVOcPp`N*GE0dNXE_ zX;S*^gRn`-(;F>kr1BJeDS_St`?;}*!>fHq_jNa45=d9JV0L;9~2}n+v!Wz#>?GkzaVp2pd>&1ya#mzR4CW5A^_y{fmDMoXVbAx zm3%3v0n$gcBs>XUmL=40!!rDH#?6loYaUOOyLw$>rK~qtZTI^Etd19ovY(7hW$)oA z?%Vjxea50&%qv8(GYhpY66M+}KKu{#wW+|nvC9AIeuGgof6FTz%}{-GrK)dqX3chw zwNFEkyo#`ywL#|e)*pS})xKwOgY^Pfa|vOl>6h@QY=2}bZ7xnuMhh5IAq^YF##-r5 zOj{4>mUX;#rX@&=2t~QG#!t^3UAlS~jd`0GBq1sty;b*fH6oa`*lp5d(`|nvgBgFE z{2J~wM&*yBowJxbs&d}vc`%%cmowd1h~qDBB0JmAz#ZEk@ieH)4wKyo1uN>ln|7fE)WD2yJreCb?ziotpRB;ct^P7LR>IqNrdxYVc} z+KCkw!cv5iG^G8RmUNNsFy+polyX)D?*x%uqK40gV6&y=0)yk!U2*xVuvkgIV^*XD z-oj@@c~rWf^C?`@71F4lDf%;j0cpfzzJeqAgk&bv4zH`1+Bl%)*zOMn5n#s`KGw=_t=iUh7G_&nInB2o`@Z)H~Lt zZ6$7`?%R6hX3t}dUf7c*P-n1YYg{(nD4M({i#kI&{q}d6afbo-(Z{i^Tuv!AKJ+5e z*&Z|FQ_i%~7v9g1&GosD{?hEOFI0{&=t3m51pVAFH|d3tify&clYT|vWWflVC7at1 z+dLIEY6oNn<~3wJPq$5x6^;?nvoST@a$WC?#3zDg@ipUx{aHi1Q8Zt84_%H9F`6I( zALrebfjpZRhNh|6_;BRFPQ?jT&(001K$AL!xy!l0p$yrQ!!RM^DSffXM1aJdskU9% zyhP*KOl)jyi15bPOxK9})y(>zyubLaCvwu__~z#>iTn}ViO$S(2bOR;k{gMjzgwB9 z{q|dGZ)jg6rcDgRN%^&igaBzQ2Zb3DAX&6ebWsx^L7TNtzuk_j`l1 z9QNHA%86kKa!Ep>n+GX9&c%&^m6eNg(`hIT? zO~gISTwopasld`M?x2Q;~#DphE#W!kAdCue?W6LKNXVhWBbd#sex zSnIwEugC0i6s#syqs%4`i{>;W>SWDi&Lli0pNlkbHUVl=b|`P=0<(^2x3Qv>&Nz7r zYAPvAg*81or%v=bKrPiRQfzA$+xM~aa+jPFA36kGE(edN_lZ#y+H}1ioyekTJXUy3 zLZMq_qvBTGQ_8zdHX7_E<8VD4(IsUdbt3f^co5`9f|XJ>X7kh~h3>IfBhwl!`^#NgfJ_wnl~&jLq$KV!_xFpb6232V zPjI0ppWNc=JSBYjOrnCwd-?ZNK`a&&&bx&fGd6V4_pRmRlXW`>{`5xlB*d_&aL>%{ z&&?i6-j>0m*zFP_TXv`5DW!K4o^i!1)sO}@F`Pijv2}2aGm3bkI3)5k(*lQWXgQ%pzVi~=^Ejh zLTy89s!oR*PqbD!NyYtk7!TBq)viCj(*H;Qc>3OCf6gsP%<>#=o@jf4tU>4mnM_#v zHVE>@9=@L#6Z8uc#WKXQ%km-gJy)F);j<*l+i@dwkebE%*Go(edTzx9QK* z^T}HeKkB;Ge7DE1pX{L-dtImwtK<9rf(<5Tn+C_27Ci%{pipq*@ypzi@iXBPftik8 zr5d&9vd}X}LAbetM@TO#qTiy~f5LHm@j1(l(z#sIgoEr)>>Wl^I|s9$UZNmP^AkOr zZJhy`@}DCayX39?_uu@(CZTh!c2B}sQsKF@NdAbpF6W&3lVR+`$A(=zzZ7opBn5Al z$=S(KRiIb3dF>s_UQwS;L|Z0e!ZExIWG*`+UBo^)XIrkD2^U&7{BZ~)_PQQ z-{FV9$J*+q%eGnUtX3nvUn8H_JNnA~LWR^B6*3@u2Y0{sdVPybDJ+8d=;~2j6)8iR(GzPY0+I;bRHghr)a)?F`oSKf4s%oK9K6DP8>MTI-Rc z=^6(*Iy#z+-p{AKG*U2V9r6~Ljia<{bv`Bgo#|XWzg<(6pIFvH#;1XZ)c?{FYB%ao zbzUwHOxDeBziXO8JK(&~;umx(uVJF}{KBIOR2=iEog4U)l_~i0zp_)1_@o4-1Vby) z$(B{(h~Y4e>no+FA}{}K_vH4gt6WJPAkbG86)geHQ?Maxa-US#35n?w#R$K9Y*k6M zIR7_SanGd@En#|7oN|8%5>tqBQ|I}SUEaYyXX?fL8j$tyOBqS{`< zppyQ}T^JU7AXO(GAjLJDN1$`N2Z1ghiqdpH`CXSi$j+jc{?gtF#VCc1ifz5KMq42W z)z<1)s#9KvQL|Xct%_5*i-ITX~GA`@A>g-sBL(Z5( zbodV8^%;^$FR%}<6Gd?05fP_(C#{js4MIYO|APg{b6Pd((WcL2I%eD(`xDz|I!4?sq@w)HjVq0S#bfrKhcT8FY9kZ!dJETABqebFXt5nbtcyf;C3e^%l`T;Y^!A9z0!b}C1^wPSRO z?xJRok&^brbeL;$qVgVK-5O-7JZk@RjFUaGV0Hwp-i>o+?J=Dy`(*q7WCiJ=R&~DK z)U)+~#ohbQ={JLY@w_-KhmcT=O6XO-cD!8S@dKHNg!4OqOM~0;2UBjgKT=y9pzj<0 z1qGFxSlUeH9~DqOu=8!2N0IYf;4v61eL8M=R6aWEQi)hG^FUEjzxANKL#1hvM5UwC zqEpJC{39SN+s|!yLCvzBXMJ>MXX(aMQEmr2-M4<%T-%m*Flj0|?%NN2ls+$>U5Yrd zP&)dg!$4r4Gn);kr&Zyo%a83po5M%LUD7}1Z%ftvZt_tlO&wzv49oQmU-neInwGb= z@%fs)qI|eTO8-^^tHzrozDnqy9VLUj=<^7EV!%9HEiwgps)91uI>iVkoYW(xr49*FEtk zDM+RF#?24Yd36CRzep$Glk#x4I?3=iRy&z!m5Ijj)Ay6R42~mRBWp$i&dKcdKxasw z%?ADxWxraa$8*rx9}h4s@|jAyKkW!YXGAfY6`l;GBw(9DX!e97hA@nr7 zpPL?SIh&wBQB;b)A(E_l!~K_Lsvk7hpd|^y&}9nJv%8kW-|f^#8FU?Z>KH-b-6nNj zfT~C*SMQO8DR>*I!LqZhN<-dCqem_4C`lJLm zh>RF^Up++P+y3`zc0PRg(4ws4L0kBa>{)C~eI^3*l9L;Zo?!?fM~S za3B!#dGbd-0byPqfR7YfnaPH(Xc!os$v%VE|NBNm*Wa%N4TD>N0i9DodWbF$iai;8 zX#GPOo6grak9JV-1DSq9P{HtO*t=MzmtZ5)mQxOXlxU8g%-IP}^xvi*qPs{^F#FBB z_KO!vTlB)dt}S`5X%2kA!3x9=f>NvpEBq-?f+vKD3$7Oo0#I6VN4hbF8UiGA_m$9~ zh8ILyj8QhqMo`o|p_l~_mnQ)C_WT$FQ)fN&q6yvtn%q_BuH(O+e`Pzq`aAKQJQ~*c z*w+Eo*_;8|hQ@oUDfP{lh^8l__a5laxLAxHfPQyHmqH9kNle-Uo*Xv+a# zPHy%R7$tn{%mQsF(4c@`Mioo}VjL=Nh)n^a@dTJiU62{O62-S!(fO#4%l7_1Y2EPZ zu!vi&We^u^L1XVCc3tcmoKy~>jetjvXylIWWmB!kiGYN9U4Ctq3ur(Q*Yi3Iu&e`a zAz;6l=DNEqj|JF!A0KHy(NSQ#3g_et!aJlzA;KF!cBxtN8)GC1OoJny&EOMdjuC7fkylytt>`79V&)XoQrP^F9=sm2 zrfpIV7qJ++*l$2w0pBCCH|8iy%%IW!;eJpPR*Nhm9=oPYVhlWg^0bq0+feJ@WqYz_ zha@>3&@OW#AZkEnd483C9%ygMF~9E(Rg&|)Ourig>wHp^V=4JHuoxgOuH%lBJN6C1#Y+f@I$*S)xd?4l@ZM8B0X=D3vWFRK}1D z3DF|S78=Pi_OZ=;=dIuO$M3qnzrOdcalJF%bI$vm=RD`R@B2BhWxJOF<1trrtmS)B zn!kfkRzB4ZdbkV{Sl~n%ZIEy7QwOCiO08?+xe*{K0Uw_ZFpVPx74CL@Cznxx5GY&6 z54t-Z4$}P!01g58-WSAdHjL>ib_Py;_5v?A~r17{}JV52+w4VF_$+X{k2_IE(T z1vidtImPY+r?fAEFl~vaCmuM@XGd)64L}rT@k~XKdwj~rx%O&~7R$J&0C+zTy2=BJ z7@!9q1?f1rq{-B{wFZ0!c(zzSutNYEz!3H7Fu{5F*)S7`z0C)Uz}sH|RI9X4>Y%{7 z6_DeGm)PA3Wq=u3?sWvmMF3C}prl!DzXWt^zzSgL$qSTPnPnH2g@-%(*O|RBJw*mk z7Hpc1Kos%v_)~Hq&?JM<1t`5Oei6o#4P~zAIZm9eF3t&j@Hp*eTI!d@t~2C?FxYzzG-heqvCh3+ktcIxEzZLh z@Swo!K%qZTvjifFQ(!&=W)6OfASnIP6At3~ba``wn=b)8F~w%>Zp8$8iWT6>0Vv=~ zLUOKx;?w{WtOL7oyDe}C?_}?zJ5_%`5FP--kf7%2>1t3->Nl8y;H9Sp3uTRk?Z=fW zSd~6GxCBSbadv-$Wf%zn%$h9gI%D z!9)iR4vzgF8(+WzSsCC-6{ZIM%JcwSu4OO+Rtw5z4?&cCtf$u3`Ss+;Q{WcwJNUN) zNo=uWg?+6_=f`>lfEJNKLCg>k;aoNVvIPKgg4}rm;2r~CpM4x&OUA>2y_i^WOQ^U| zz+G^_`%y57;j~?o(;x$E?wEjY^QD#r$OZBbfWy_r^PKJiz+sIRtCMYI*-{J-ptvtH zV28E}v_~cEbf5}O0R9a4m-vbI4OS~^hDATho1*EnT5H!%~`y3XAl zgEg}NApYFlcx6CcBL6Z6_nO^fz{`d4ERcm=o&ikIeh`eqh!>z5K1=)X;7AET`?+Vn zm%jQ_ldcZS6%8dr_M9(hIcIsY^P|Yu1%;X?BJh^vSBdUO!X6H+3Z@?Vywx=0GTh;vrXVd!pM)rd0V$(PQNux?Y&yuSFp#-(1 zE!k^jIUNZG>n3C*J=M;aCt}PvsvceE{z?H^9HrQxNYA_8r3vVE=T1`6vX@g7P~~3= zxu#U33Efr*$V3wkC7=*v5H^9_q$?0%@B?Ztd|~ziHOBw-;gpgv@4h)|#ghqLQ(xVH z$)spO4KXMQ4FXgMCjeODHg*=*z`+CF&&;OrBv-U>CR4- z(Y{f~0kvI00;s;*9I6^HS^-f4 z2In$kUxT1(5{v97HD14fxB?1_XiI-yp|`(gGoaH2-ppwA)Od6N;tJg`+AS5 z_RQg}yEcHr2U=Gy4~=hM-%bF7151U0dK|D~cd;(B8QH~!+JNmI<`yI31tUzRf8Nso zic3ivmfNgOG1jPrQmh{`ohA-K7{n4=yR*Tz5i#@$g+ZJ8=pZ zO8@?{2-8;$Ay@9-6KtdB9qTSfw&=)U619%s+gSK*OX}`Nj6^XKl zhS!-Zo4<0%cC_U2o+gCtZ@a!%W;@tpZzu;az=50)F3@OmKN0tA=u}eV!}h815ct<^ zdl$k!sAYEcG>I7&k=)aw4BzUL&czahDe@shL-Je$%!`ON7W~bmu<=?G2|;neG=4TS z<)&EWBx@t+X@|3n%%Ecd9~Nr9DxDtm!OE3D_dt~p zu#&qv?IkAEcS$f!--t>wBSn~F4*TM7x2};NgsW-^yBg{#K5GbdccFa{S47nLS1G{+8vX#%Ixj@SC2z2)&An%JHL=RQXj46VrhcTd?&@3qZ(|K(1aJ&l=-4`oM0M=O2_LIZ%fEh=a>D}` z{FyIrtp1iyd_fcOse`yw8aj}D=+HPz$pZ27OrM#%i-$C(cMLi-Xm_=PW$?8G0vc9u z$-g_ojTvF?OR5xiA>S3|Wb2|&Pa0uEJa8(W-PaBXy51QbMhTd6a!N{-`N=E}6beL= zEg>qA5X9u$xUB5;F6E(`WACDEX!&7pWTPVMHsQ~A-=ZmEn*BR#6lM*c0!GF|-N?3& zGrp!#3Q(ZrQvJYixr7as;~R%bgbWVz)*Nc~ZLF0UOc)849;x-&heA^6L7(b~TN*?` z5@%Z}H$WeTH>Eh)f7Z!j9_$VGukgS&sOMaRA=8aA_$8%Qm9GCwDZd!i|q z<&)A_!aefMfpX*;9v_vnRwmekZ5==eEGt2O^hauUb9S?I`B1S>EmdnY&GNK`sgAsv zVLboY5-O~e;^gEmP?y6|J6q)Gl+O3MzRAXY-@8$lEdw)R) zeh_rts#Sn!&Crs(X1ZrYFz#rxfBKjvOYimAmYcfT2{vS6zud371$)YM!*Y8F$?sGx z^Kv#=Hc~E7>Tsr7Dfh^apnVq+(+E}pt8NzQhx+c>ifRe%AgZmuTHnmEgjhn3$|tLb zZR)=+;2-MU8<3v)>%_!O(xK_7Il;DUODOMBq{w|ft=GLd726WAsmdAiX{lk?_AI`5h)o9M#U;$zYw+mJpg9e=Qt}a4Yj45+fiNl7!*Y|Pqx6GLw?`V#T-AtB) zK!M}Qc#W?x9~y!xHJp%~VqsEi_9UB#W52ai2_KjJRYveOxEKY>JnE3o_mV{{a{%Fh zloRErKSR1LxDs_$baWG` z?VCOepW=231>m{tyx86djy_6r5Ko50q^P9#j>S*M(gUtPKyb3$!leNz3&+O-oF?~Bh zm2~tYql4MOqLo>a68szUJ zHr}WM=;Hk9b-ymF6lIY=jixha4?e!q`aL)X3qO%K-XW!ch|*a<=ps|Qr4dF|xG8u|;o?(_R###W zAyI+Su548#vA!c|HBT%cfroCV6d-zh6#F8q!gP~|T_zk2%Gacj?y zhAvjIUt4%|Ew;Z>8Sae{Kh+RnlTKCHAZjDG9V?7z2}xeOxKs#zaHH!#ZQ_pcJ(51X zdkGKeeLV7MmV z--<>&#@2Ql+=uh;+dUAQ_T!aM7pmF3G03-ZY;p0zXfU!dq&I>Q&LNWN>1}G8Id9(_ z;z6$7E3%6#*u*|_aB8k6CEqkz`n%9AC(;(l0!1%9J>Kx*?B8Y+{nm77p$RCJPX)zn z8nlej#jYVHy?B+X>Gz`&MWeG-L~pj%dQ?paX03)CiMi6s5D)9y4}~pz8gMX*!}Cz3 zZ*r5`|Hh*u@)x-%ZgSTZ!-`Z07cvu66@xczw?t?hiH$!AjW}^xlz5re5KD?Ti{RhO zJsg7Z(RMl$V(k94$YwT}uThVZ_$Sv?gf7)O$4Y>@-z`W2wI;aqQ-*0ZE;dWs=e~5S z7*JNf=ySd*Hc4dFHeZHBq&P>0y5z$s;lT#WczixBHaxHF-C=IZb)FDtO$z=wetcD! zZ*KbRN~jj4og73p-1hxW^gE`@#|6d`QBZdC;-oWQ*0m~W$t%@LtVwb5>W3_WQQ7rF z;jxZIo>SbcQNEoC{@%JLw#=njshfXYu;^N$!$Dzb>DS0coyfuQuGCER&)PVzs;fe0}cAE?uPYI(}tk#AiO?h9{&d) zPZlDp4Npo$yYezItDE}m*@+R@~*p^vlw zaY6y^AH?h}{e~*cl1g~)_XBY-W7HL*Zq(jd!F#MP51zRBN0?t{iA;Xt=%Va$Zz}8WF2w3yA(T)` zLbU~GM;vlz=F{-BpZu4RxnZj!JT8~k_#rEIJuNZ~8N9OipI;=q-PlRwpRghFR8WpY(5}j4s8Apj_%gJ7fo0Qq=trN&mqF zlRzrqP8Jnc=f=E`68}@ZRVFx!RkYRl^Y1B1a_^3DQ#cvN2C&|yJtTvcdt%ncn53=k zFYE1c=?zK$`kY*3%e8xSY_=@wimqI*PvG=k#h_o*+Hlrd^{<_6B~`9FiOI2Uxg|e6&#uy_gA4l0 z-~KaN2e0Y!P+}iB(aG2d#vG58L3k&jyt$$CGp)$wa_kId#%Rzx=pM Gj&mf-FL4GA_#aM$4OEwE84 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 Sl>s!hYudV#B z+~sn)TAB^*v6Nv#w6-7@er#YQ~i6sY;H&Uhn;512^7$+W!D|G%NkK03rhK6;#?`aS1I*P9Dhq2 zl_Vj%Nv^<*dco_u!~z<#?-}Z4IG^=*!5#ADy#2@->Bq$kf)N%Srwf{)wlmIgtBjP*3PPtu>>;pCcbL|gM zV^i)Yz{kfQN$2@iQ86O&BEk{A(VfHZwy((6VaE0*cMqb$ zz{*N4Bsc$FA%wo0&mHN^E%`BvLN8rO)%>Rhid{J#N!nZB6c?k@5QALDExnyx zPK&bWeP2IX6gc-<)og@az~1{J7^ps7B$Wn6`d!ire}uya zsjaXX`HGe=*DLS~@#t1Ma}A=FuYxKKqg^-sB54f9BDUY`STIznlfT}xedFSk$JDsIjBsZ@6EBPU0?|qMt*PPa= zh#05hbGUsBQnJfrtaBbjoi(8mr*HLZcP2lpIcHevrfV5K=JJdeF(U~>&0c!RM-$Nj zrH~Rjf+5Qf`{C{O-tu08*lOoTF)g^1W@1ehVQMAm(S7gevPPLXnNP%7!Fi-y}a~FOTF7GD5*EEwL9lRcMUIY z3|CUk9!o-xJ`PoF!L&Sm+4>247&n z=0xhQHhgkY{nyZEtkWe1M#jO>(FS<*Kb6oIBpUiK@~PjyyPpefQdku`Z(o@KynVoZ z6T{j?NT4Wbg zQuV2tOrGSy!(~=(2DYR4t-%cPV$Ku=E^~5q+z{8%Q7g0N2hu=@dbaMb1Gg7@!n^nl z(#O|dcF66(h;zJOK4^yhSu#<*%fs;c<(AIhAaomg3@2e<2J_tu2VYYi!5ttCxgw!9}3=n)8g}6kqwTrZuQ? ze2xWh(VAU>aTpkaP%=aYbuFbjE0hrz7Y8Ple0Gb$FBCF(?ErBUH@to-HX3#oS7rbE z7Y4pIgIcQ6@^7=v5|F*)GL9gGYzOF9#5_C-#uYpJV&%oRJ1{oN$m>djYPgR7eMQc> zE6qhkVMM+Fqj>O5Y7C)^y2#h0X9BdBhh?^UtB#?+!(R@U1n4Rw`U(&^0ed4mXa*;# zm8Mz)z!%%`7w9vy3S!Tl3B-_CE^ubpQL!lRc%^0uz3R1vZmbT%>2K7+9885FYxWQF zokpjzkT_K=`x*hrX7L=hJPbb6sP&y5A>pninE7w8yDTeBmq=xe0VmGKUk5 zJnFqpfGI;=QCzRT7VBKCMLx~BnhEs#R?*)Q6Yz&aZ)Vh4vBVG1Yg>AZ6z0cD8(4a; zgB>LMC;wBKVuex-vE_Jd4rbj5dsR=7>i-%XA9c{k)c6pqhux+oY3FBZZnyH>7v+Ze z#S)&VSD4%7b?lnZt3b%fAr6|5@7@k zAg%Y?+uO-WNr0UV32tWR4`aZ8gyln{6q(6fl>tC9I$0i`DN~7If0Dq^)sh0 ze5#3U5Y=nlVl+!y;ab5J&21{$cXC(*4S$NtVynh9lFyxs)J0~7T3}!IquZ;z9Ce?R zdl+%$I}H>v{w&QqGLgLIioIO*x}pho^i%e2w&&!VT(IQu>o6^Tw;Sp8t3Rp3iy@Wl zhPB<_ZK&E1d&q^M62FImwR~hN(>APo)?u( zyG&d-oH~uR3k!7?6E|v$)q!G(Cd0GEf^h5q#R4i5Ve9bot>Hb{e!5QotC@apiD19B zV3}a{e4Q_B$w&k6cP4y9a*M_M0#m<8j-OL@YzCimSOD8L&I z@^cM0`gh#M4(dUC3A4$Pr?Z4;_fQAb$8*K@i-SK%XSRHt{%cY1N8BUc?oPIF{e`@W z(J{+&Q5<~9BZyT#K;#KnarK%utu3a809brrd{R=dW8!cDQ64$R-gV*U!O%Muxtg zaKi)pRIP)Xa#4!BJStgWiaxAc#FJEAkAMDCdW;LDlM&mslo6VsoIY5JZ4^le>$Z0$ zEuP69U2ar<{Z6~oF+i(uh?2)wK%RD&hRtDNTc{tJjy4Zpq?*ER7QJj7G=XE8s2lC_zL9RVd~BWlbG}Q zE@p}yVMx30807i=VqtzuEiSfJ&LCQxYankgPX(CSJUIweHdjQ&Wx%@fSt}RG*KXD) z?XHkP8iKrOR=?b;<~5QaKp{#|E7(Tu>_xF7Shkn_ zTp5fA4X#U<=0%3ss3U6>ZiyS(3(j^J@`m zr#{J(eoyO{3(A20ilp{!%6FQ={Sz*h(66LU!oW^J9jJ64{FHGEhB3a5YMz|*UU>0K z^t9(qh_;+NO#lCurn5j>t+ee9O7e262oFE8sDmop9zu8+Z2;7pecGQ21Y0jD` zl{Q>x=epTG6TAbl5zzD3;U6M!N~ta2GO%i@Xf6qj{5tfX-~Fo0(9#bQ=PWa{M2*Gx z>7d`Ppp=DH-{*i?J2ar>ysaeEocozlvL7*Cu0@RoDZf*T9~*VMf{wz$X{bA<))9_Z zeTFfP2(&V+r~|Ncs-mqe!e#=ADxocL$171u z(fKXXitbqj99A&Yb0H0+J%%zPFgB2GocMs`5u5>u;XQXSy8B0a@y0F`4fw8DMfOy~ zS@epx`Q)EwT4f^oGyEwp%8h2F^LwXwNQ-&R05B%7lkF`WIC;?*5s4S=v-SD5 z@IppAS!yVTEER1p{leFCo)JS43IHRRLDVun41X_ZzW(HTno$Mipv=w7|9 zhgmBua&&fZJ^>d{UdbbnlDdjc8HX<|@*Y2+7vHO~$ao2J)1EKfx+I(_LRL>)>1fr4 z?1+7`P9iW!_w1944dq8i0FR{3d|C%8Jj!aNhvTw_q4MC^&{NIvGN7~W8^z?aq;)F9 zj&_Ov<*7owXqTQJ5$yRoeIqk*yu8RQB&e^k;?EItL(BAYaGmIx{7zIAb3`Ja@a;W8 zVx4+oRZ;88bjz-Y1>w0fxtRAHPm=e3Peh_mJwbm$9oo++X}gq~%CFASFpsZx8ABNZ zg(k!zd;{3>lD%0^+U3_kVF+Ju3Bzd2ry5M!FCdnv^G>mxm>)Ftl@{0-FqJ3o$1tG~ z#}zRwq{EEkmWuztJcv4gCu7+{+RKSI`X#jcsFEr^wB+)e>}B0XfOn2N}z3?-5b6vdo*BnbO!49~N8ZELOL_a}_N!>Eamb*tR<$CpYs4rt-;#jmr7!pT#%8gx*$Wh+w;f5C+6m+0 zh3&17@uZWF$i%tdM*+6CJbhp{Bm z<*{5zJ3!yenwUuPJ?HxaC-ye6)+h$60!xz27bdV&W`d?9j)$CNnqpDj2x5GPQRqO2 z=@ghxED6tC1%FawU8*EZK{bLj&-3$te>EcTtA+l1>O{SWcPMxS;7Uk-qvrHA-7%PI zb-5;js&fv>6d$HYB_4QWVL~I!EmRP1{X_KlC`pwls{rAle7FH+y4$nqP#}1VD+0tWngdciI6|UdeAV(W#Ff8@> z_-@V_-s$rusHgtuW?JlRpkl^XRPuh$I?XeE2-Tc#q2-rAyC1d~KlDKciypDW~lOVxn$=!{Rsjs!md9lDbl7O6brji=Fl?hQFlLJT_ zNJO=~oDC8^EW(G(^)1WKlRhT=E^PAJ@k4xK2Ds*{kGY%}R;>Dk0q%V$KM>@+I#3vj zt~6Iyp#pK|kXv1G+19YcCO1R%>14De!;{9v7A2}%yE6bsM^yivf>_(Nv<>K0Y^avaZ>N0tyc-n$i(mYNQ``?P^Wk(5Kgp-^{D@z#gel1Y54~W;uJa^Az`Jg_X5)-LJC(~aTIk8f=wWdrjqB^z zuSBdmr(t0ftDSy=6Tjs?BOUEZc!NLTz!?V* zQJcenODOLYN)yy=Pn{Mo{N@|(l$wD)goN{sMHvK$BM#-ckllVN_Rq!ntXg952iw2xc@Tz$`rdZUscN;qg< z!-_8rb2K-T3*n4CV$ewiH+t$X#^ySQ^&}E)oJ32GQff@XgxS#r^#jaqDj_;Bh|@p_c-l?$yd{Hi9JM!jq%~;Bx{6$r{a?4%KiuW znS>#il?j*)S5aY~_CcB@-z_!(|DUG`tblpIYTR!i8XhC+zu6zr^*B>a9`NW?xaJCv z;(xI>K<;xGjEd)fbznsE)Cq_%0cVM2K&>Gu+4qCUNXYY7EK_wmz=+}Bs7ODim8>Wn zc+3CxT)Z-;>jY@WqMFHBSrh+@7RK2kgk&0g*w%q6hBK0R4i*Nz`!m$yQ1SJDMzT%j zLSkfW(vfIL!x3zJ7{!{-LiV7(R4=Y%%z=6?k= z5&=JwwEy|80lJEm>%)bMEw+F+dzLwV?f_RuxobTL{rYGLI2?DVF4-+cQh|4t`}NlJ zsyWa7c&ZoxaB_dSCned3I@P00WJwzl#+c?hrIAjyQ@FPY$=-yxL?1K6D`DL@o(Oa|6gJkAEW6b&EoT$0DHu&iy_+qXItP(3hVjn-%au;PL z0Dz#p#?VT<=lr4yJ;+`G_-6h{hqIFJBx-_6AsV;L_lu{^+4MHiv`5e4ZtT8osD4MCok6}xUi!iBISmKozjtPg*fpts46O{x&wL$ts@;(LQsTPU~IPFgZZpXm)p5_4|OEjsrrsi~)QP&kI zFE%D7dc>H`Lca<=pl|t*oRSN4-^7qVS>L|dgTxF6L&cwDU~q{7JzbngJE5PV ziFp3)iGRrZ(DLM|^(Kt@e@3geGhV35DiMsf2 zmR(E^0Fl`-3tM${HNdywRf_i|90S((Kgc=rAL#mS6G^^t`HUookbbSRoN6)zU?usP zF%(F>=%b|GnJCiRF30ye2{Cv_!zK5`Y3^F@G zM%y*~MUGyl;@_=(EQWUP=CA3!-p8Zmvmo@_TJ(ef>b{wonIyLp`;yNz<^Vccbty~X zRajelR+M6t&0z{igWJ!t4yt80u{!@g0d}XrvLux`HyZ!6zcUi-$a^c-GBR)zk2D|v zw8WHUh?$vhM2U}UgA)a_m+(Ktg_A0jO&vQ>w&Z8?i46W5#H*=)lJi&aQUQH~F-|BI z(njP=nyH*@st?L8_sM;Dqr;k{X-!ZC0h;S1nIR$S!DI?2=)|7Xs6FGL;}+FtNFF~8 zY?jev1%GC1-7cuqjw-*A!Rdfs<@OPGQz6D>8&+qaOula$hPhpcl)?&d!;-iOKA+SH z-3w-yki6!|YI`X+9pU0{YYY((oXVEt!@xCjKuiYEGf%aPQ+U;SkCgqP<=Tfi2KqtF zXi_27j&_`AMF+Fo@BJxESbHzyENq3h4hni^#EW_$IwRoOw zT4sBNDg#CXbE=vAwdLh#qT|EE-v9`7whdx2mYJ55qdFehmYR@ov@rLJScy>;s11_; z_0)6&EY_|35hba|2noQ^MCWB-8viW7k2mCmG)R z_(Xwsa&zjeqjFy5lU-!cqIz4O8N|)uj{S7m6-fWWwZIhYKNKgqmh!?Q`YZhKj}xb{ z#fd)h;%hzgOFxvcRBY`RyK;9p6BvUPZ{nqfvf@dC|I&!J45lvrnS=vqLkiHQn?>3L zY_MZF;PyJP$rlQlFws@_tDyc=jz&lS2K-%!6@K)>WM9N-*|*n8lyRB|?eyAtKJd0Q zr3Pk=wx~q?2?2EgHI6889SMyROs_R1H~)Nk6uD=sckBLB6}pJmi_aLt+haA;%7YpN zaPdw6F5a7-fBi&v%kT9kERp7;#--!dgDQBmFfSip6A%FdR~2d5O4ggL&;^Fj0owPK zP0Qcy9x-QleB?x!_!$zK>JNo7cG!i0*D=# zYHhT0bNKiu|b$*M%aN!A$*OGhWMT5`y_8FGUZTYUWV`=?y z*<%ElJ>~CQ<0X>Nhqb)5xy``!U0j%;vz5;(ws?8w^6~@jM<0@s2?+?v?+O_HDS`gy#YS19WuT$q zwEMfN!w2jA`}m4ia6X>7f7vtWdD^U}dp$Hghg_b=NuW!e5G|}|EAOsjbGr`>Z$&+8 z${QOyYu^#;t3~n`^Td}E?@dFSsoVC#iSCkLO5V2X)4873NP1(BfZohexwxZnFJU7+ zZ|S&Q(`21?*weWI=_SAm1$2u7%&lo@X#si%i>RaV%J!%svUDA84|jrKSn9|#bH0~O zGT(5Mw3U?(_KaMCofYVgLq)#;Rv)jL6T2oD{^i&-ijmun-B&EEtI((oHJ_7 z=6LwKDJ%Q=`Lz$SS4?T-^lv-uUCHXmlTF6a_d023W9D5>2L{gumhJ;r1HuC3zvOs4 zj3ozSh=PR<#U>q)`^G^VuIzFz1cRpn3k{HQlR!gP9PMB^Pq19+J#iYS(@oqqOzd<< z+zk0YH!e!e%GS2x+c!bq+f$%8Jj>HqYJ8tVC>wu9NiClUF%d8cM)^0A|;EO<*EFf#(G|6AN|xN>|@Fe(v6+R~G!> z$wqZb|CK~Hxj_)lo^fG~x)^y8$Qn86fR_k-D=DAIgec`Et`&x{6zI8!9RYsrM&$-p zZ-RX}e>d|Vtr=!iO=)E%5F?@n7{@WaW%_1gljLvurErfe;zTE8o{I)Z6moLyTeqaC z4E!V%vJniI`h~}Nsz?7JIq@*nIVde-c(+f^KPaVa(fmBS9~V`g*(Jo=GZS1p`zveEL_v z!b=4BT`H*m=cLY#{eg%W7K(W@seFi!$~G=dHdCTw9+hZ>fS(5<|6X>8y)15CO&SHB zc4hYh%e{u)E(J;yA~+yF91i_^Kh=|X5F72Y@hBfZe3Tpd8+toWMFWjRaYG?z#x~%) zfd11F0&D$cKaql7Jv*K$d7rz9+(&w(Z)+wkj?9HZtej7t>+7!`bIAIvru_F{ju;sIR22+1&y(pyi;-_X!5g|*Q>5`#z2>I>L8!qgU<>OX=vCSJf%P$5vfi6%A-LG11V_)Hvl) z`aj~nU-|wvMicGYJU5{b=jaEv4dpHu&ShOS0`o8l(-U=K8UIGvzL>;bE=CIog6_(W zH`jn=|531T`$gDnk6jq|p0W3Ew|lN!45-{)E(~;5y@LDz*k^V^U)MBq!1Z$8R7UN>-zC?LXvm&}u!? zW9s&~A2ivDT?E#jQ|%=f@<;axcb2&(D zun;&)6G#~+&(JT`&_bT`i`&QU25s&PsZWcG_#DV-CSAVOnuBrmHSWr17 zduG+WO&WAg!$0gYE2)WL?_GQNTy^U$)K_OIUk{~nkOVk?-}Tr^tu`q6lUsr{m!IL}&% zNrZClJ*R~vBodw@ji@^XAKeB_uQ@yOdq#o&IF`O}Bac*+DRqVkak3cZYr%PN7#qYz zI1f5>(-piGD4LiTmkx8RyJS3APrEU8k6kj#V=Y}2$B5yjcNS#WkHvJ4-8X(+9rJFV zGQ@y_pn(0qcO5PKN=(6zOmrJ38i*2d%XE2QuE`ua?Lqvf2o}+b11HkwI6BJ36SFQZ zi!^bn%B}6@Y9nmmRdTnm`PxaSJ5SS0_ek<4frA7~i@7Dpeu6$hQ`S1{2?Ipt?Lny;S;9qfUaDFXJKWtq*{}dX#T?X?jvYqWw zOA2&F3H}Y;#fJUUY0J2VpR{0myuBTKw?^5#!A1UFqc>T0bqFz`AP6V4w_6haOZH<9 zLJ4;&gHgNt&q6I!us$8_11BI>%4L){h;J>@+yLutQm0h;mTU%>lp~-P!8rdwW0`;V zDCy6MG)El8rX!GjKyCt07Q*&e5S9X|g`uU3RA6X-mpjE_fh5E2zhVNot$t$n|65Ca z{gaIzeMT@`r0ynkNK_-Igb&7ykxpF=e62A+#0{y_LmF5}V@MKU>OE_Y)Dofb`jqUm zXMu8AyMA6LAy^cx=;Vc(D~Sd&F$T+BO!sug?{(ULaFgS{m-@k&lybyywBBle?{-=P zBNl<4Dty}mj=n$8TdY_4bqJ^xl9%o%RWQHv$i4qM7vO+D3de46FEf*h;(z13FX@7X!F~HXE zbu%0IIwCT3vS;KKnCw3FrJM11b`Z!y3@k_DO4$y)5iIQ~sFFW4Myi+m=_WS=n!Mlr z-BZn4D2be3A^G9o=Lk+0rLL5({_k3vfv3su5eNMiO#tZFJLHpQMT2Ll)1=UU<=qJX zgl9&U83`GmP%~xuKtBe;@$hlFApgV zhm!I^=L@D`;K^cyxczmLFz$-&*zslWd8$kh5~@WQHgvv4IRlh!P8kW5c5!q6YLn94 z|86{NQMp{$JSZ?XA65c(4gZh2p9b3RO(JO?lDon6tlg1n!`y$KI^6^4ph+W~$n}~s zg>=u9N&;dN-xs+#0!P!2?zxj(Q0l`@h1t%iP8$C-A9ijP?2Ss;E*X21h{fX{#{JlM zF!dx=Jn7JC z{2rVX>m-2DQ_=8OEeZUas{|6UQ8b!R-mInJ9Dk>AS{FnkBrHkmh6 zE>k!01T2lySaSDY9L^u=neA+Cg*0^s_ti9YGi+RH@{tao}!i z+T4Gg9%!JDFz;x?p8#78-{TNzu)5cMxB${@?5$d!+S@`HRe%`rhMt6dy;+cCXYs4} zThxIxjuzv;h$Z$F_#@MC>s-mcx&1sYHn+RK8{H13N|e7b`-TMA(Odc=VLxgJtlv3xh%vkhzxxy0dH2W z64e~OfX<@Gm*|mTo=*YN(i!h737HL*c%&lXnQ0|JxIo9{Ptr=gMj@xk!iAGg^an~L zr~5&AdY9IZKL*eV*Kem(pk;a~tX?fG>sOeVOYVoB@GOsRpfC9f2W*5?;;I+^K2SJ+ z(fPRmnB#;aTvktwMQ9vAf-Xy#g4ytq_E%76?JzWS<8a_vZD*+O?m#TbhI->q8TbgI_GtG@XpyHW6( zo!U5bM&#fV5N10qT3_z!hi+2-bO*%<$=%BGJd=;bi$V^Ot!J+r8SfTywTCf@A6~j8p z%Xw%d;FjB!JwN zZ*Q6M3@a#=b5^@lbJ&tu`yw7L_pg4OZ=n;iNDw1VAQQVxZI9OMi~fCb2uAuS;C)ev zfPDS1ADfY})M+3{T&TA*wq#8l#D5S}CuFMv)@Ox3>|2;vrcxH&3U%4n#Gk8U&uCd1iI*w&gT+I`nVKDMM^?nD*0m@hT@``tTg zpWpw%q2gVqr-3hd9EUG-b%N^dfmBVo#K1q59M)58j0m+$+D#6BpACh*YqWz9urSM3 z){h3L(WM-jgog^LSQEzDPL%d0%cf?7$FYK9G-;MA$j!|GyDC`uc*mnNbLb{CDIH|D zR6jaCZdB(E^za78VkzKov`jBPQc?pX563>SWvZ^+Tp$U6A#GT@%KPqWF6kiTpj84) zHd&|aI4|zJa_W9M*@IFb+3${0gy3^Nviq+dbAr5j>5)Gn#f}>wVISUXQUYnt;pQh# zK}zx-2cDngXDAeB$-!GlO+np`vL_g8sT3ypFftFupX7Z;UlroEv$^sWkf?eWd=#q; zyU3@m5`IS6tbE@Zayt-77tMhd-Im*ws2FwZQmc*3be+%Y5rly_ps_EYp7T_VtY8(N zoa~On%g1&hC3`+z-bRPH>-mX-4KY^3M%#WRzFLY~`3oKjP-zMT+iv_G`%XaM!Tu)_>1u{ z6UP|$iAOQpZgcS^XX7Uso~jQq~@GtGiMoK&tSyLuMF&@qVD#voFv>|`wL@i$PX zwHA{yKZdx&;q~oMs7*$K8nWTu&xmm#Ym>cWZ8a><$FtDrr?ezSW`3Ly&;fX3`al#cj=R zqI`va!xDWacFM$&42>j)Uas7%d89^X@f3N{o1Jv}skH$kvk0410s>@?*&bRE-5O)D zE`RV+lhN3oSSBIE!R*l=JXPO^j+=NUbWh0lW?*N}^CI)`2oDd1V!n}3Re$#`&c==< z5DP_16Oz4R1;h#hk;%!GI)QCoi-Yt)Ve$h`SrsHDbRdl@-0Be)|MYM@Iy`)^STy{c zn&Z&wKnutI5F_2bU;e~#F_uBZb@Dq8NOJY@7$duxiSq2G_`9>cMTK$sbIAdY6h+SQ zaWR6v^ZY02Y#qDEOF@c(d9Jy3O>4YOp^&Yow@{Q}*y8!Hrdv1#3wK^bGofN(M zldv@m?@Q276>b2Of37(B-jev;lZXGIj&-%p_^?1N=S+1D9gY@q<3UZTwE)1P{SC~CMF(ij5cS306tPxSe z(~3Vs{l))c0czP5^A;bul?%M3>WN@*?@wF_o0%N(8MUs~`=pV^x1U%2THTK??*&h$ zHMRRF>PmihY$Mz$Mz}g6NeLZ^p)5a3CM6jNx-GWYc=#grJU>18+^p7E<4tl1V)}(Q zJoVH^;E5VGW7o|Jx*tm+BdpELffNDB9EnfAdET2_tnL+QDC0(;^J+X7lmXRklkvUxbFT}Y4ZR(pB<<> zMeatpkg>od+{R+SybEr_p|pp=%eN9W?sQ?lN{0Tm#=RyWn_m)8*J3-0JDU7`erg5_ z`&^1~lyaq6{D4roVnhFs!%!LfZ>SkN0*HNo1pm>LngG50Z|@ie3I{qiGCwh+7dLJR zSKY-?fcUf8sEgd6*}Ex?%d(fE5etZP$EJ~u&J^-G|5n{elG7nqm_P$&CvwhOR)q%s z)9(P$%fN$ClF}HEVfkDiic{yKR_Zm$q;6l$88vx`NRVv+w$nRPFEJ2t2Ao#VAM#Ui zyH$au3Dc8ICyiezw`J~$W|^TAdi_+fcguk|tbxw@NBvK~7&qrDDQ?nTqx>K5UUz83 zEmv4n!jPA>!Ygev+iZ|9xz4D>dzdLi2h15pl-}|Zc7i^`FV7d`O!vx@9JATl)`J#X zq02)+lQSp6f34I1g9z_n6tT8RRHsUWFNaNJ)n*bmk72kibP25eiz zY}j~MU#7vDY2hEs-U==$ZzQuKaMDjnmJ-tklV}8PDc72>hQ` z{{Cl^MO>-^TjyWdWOyW^8;|ErM$_m)?2)jfq-OhfP8>(6su{eMK27#_cZfUV=?y@A z!{?Y0f73hPYPWQ28ZB;>V`w?E*dRPK#M*Hx@dqXPiS^sgdnPQh+x2j5_g!h9n|-&k zE3#3*)m@vGeCpP9qxa2JNx)V(TfEl{2|v{PK<%m{DwF zHTR@q8S~MEALUNBUJ)7jzKr&AQz8X2?R&P)s&wm$fdUFJ5&uraX7yrgYYRB6fVIYi z$ts0D(qKDZ^D-`Xn^@o2hca%sw+YIrb8C}ZF9{2=y99RxXxV$fXFy7WY>HwH(I=VR*~+E;(F}Pjsiyp%XQy9D=+Yq}{pV+n z32LvXQ-x>M5JD?ccOokRcfmxWgrO%nNM5L1T^W-bs(pGO=i?7 zZPf-T(I2{JjQ8htW)*+d4`LNF)g|S__7_Ri72|uxPoeC|7oAmI;J15KUsQ4`IT~}H z)bu4KX~k%2VN?l`Uz&HR_OX_RUf03!^jE;LzE8b5+syH0hLY>q`P4e3#CCxK|(qtq`SKjknZkSG~dJT-S0l%9{Zd#&UW~R zgW(uX=X~P6ulov|Fkae_N^HKaR{Za;FPyEe;y06VF~6nDAHpz2ZJ;`9sFu;GN7%Q8xi1KQ_G9(@hX`~GX0(k%b zvoxJON-Mkn7^NM1Anlfg;%2#j!5$B%!*gN7sZv)K$R;r%f4`#t(x-*elkRKc!-PhE zTWC%_ovpB@HtpoMoFJHz%rWZVv-nf##rk zy06ZUpNEvwacMJ6etweO{(yKJ2d08gDB7O7-4eyu(S#(8`yTVnF44;L(}oL#*1WY z8*k3e!TIWSu@S4|L@v{bV6`+!9uS>v25H)Ju4^zSg)gmu&`11~^Wb8uD9c=WX8FTN zW*=}tH>su{24QPu+y^hW*>$Qtb}aPr3JSjSTPN2o_+6JHI6OCAolem)G)876+1FaBnLT~w)5(1TO$4`~- zy{=I1P-y>Iq<|3-M50g%1x%^@Qyur?iXTkUei9+f(98-bG|w%LLkQAa z5KbNnWtpUD3c0k5X=-0j@c6t&mzG)D)1Gaw9 zgQVg{C;g(Qd-}r$5E9sP%wV-~$zrKbR8KJx|99X$+sAcI+px`-UvtXL_p9_9?iurm zugk#mmZCRT`rHhr^ zU}CZ0r;HoR8Vu9Yo*pbVvb;ufpOFv()Eub$6KMXMcSST#*hT2_NetQWCr{WGc79~S zyS60g2Ak%f59nYn!V_kif54xUpqbi14%4`6%2C=@5I+AuO&$LWH-GsmnfyN{J#+!c z%I=Vz)wuagbIeM`mS}hRzkQ`5?9rMBl!kYv$ue}$*LW0+AtSBsspv2KN_Uw$?uXe& z>tQ{`k4Swqp*7_s+>PW9LNb1aa0NliHC-Q?OG;~0U7 z=@K+}S-mkT=@P5$#A(d^Qdod?z`c5V{wF*Nc1DdcL`xyu2{;}M_lnTXlZ7TUyG>zu zZ^-3>B(MwMP_BO_9MTY}l`k$u42xD>yQPg`Jc^k{M|PfugG~YH6o4Z&uIv6uNeOyg zX}{Kgd$lIcP)Y{8+kr%4qx2a-4L#0RVs|uA%}_=m6>)rJ{GtN%fS+x-fxSq`H1nOn zhq>S4OrTNvTSfafwro4TmY~u|%tvFy%*#6yGUFV)<(Bd8l|muJ>|?%>NyQ3gyXv++ zQd<%w5|EMO52=a6&>X?WR7aaBTE+jT+vAQY@{3ck?W+S8Eo!@J=JRUife$tYpbw3B z70b@pr26ii5NJaqfN}k^b7&rDPC@$FHMle?tml*xcnIEtSdJM$$lBmToalA{sjkgWY0Or>yEsBHiS7Gi@fr&xxLQqD?s@LHle-5LEeybve!CB$>8W1l z@o({RXC0{Y>pKvBSo;~~dDFgV=r)s3ycCRb_Jm6NF?&DB3oi8a2tTRy%9zj44A)J4 zy)Fkm{sJL^?%Y@?RG5sL{Qto4kPM`baiH;aM9e~)9DgY%bNzeS`Fn^5j3PDWXJRWu zzISyQai=$7R+dBnDMbbPb*{yDVa1%+WiWHHmX;PG954?-7kr@OJoDS_>4 zjq@Hzy2(q~1Q$-jVfWMb6=9!h@nZqKw2gnxgXh{6Q99`(e81xcTwJ$9;a<|**k`8* zRuSO;f4l@%L}ZE6&fl%VnlMpIK-FOom8iv$5e8K1ofr_zvez%XH(le*@kq}{0~joA zc7J^;PwW%kZ40QIz-k3qTT=S$$QSR4V&q4ru7NDg)Js+ux^og}xjp%)svD==iIX>4(&pwHMP4U)!Nkl1LXH2KDF}-DRUlKzFDw+hy*gr6 zOmOI7tI)P>BVpjvw(DYCOS12$4;MiT(pWhw?H9r&ZEL;JyE%*naRzq+v~=0 z8;8Hv2dCI&k=6_1jDcEhoT1jSyBCf8$LN_xDJKnFqWVQWQ~!1PoQq1K2g8epG7t$P zQq$nH96_I*unVNFXndiD!We#^p~+5zv{;}n!qTaBAm_KD>;(JKd3!=KfdZH~txs3+ z6tBv1J-Rpd`2$8P@N(kpsI{7@9uU7xGKM7Sq#(5z4_2{JnJLZsyK6Y8*r6leP2Fu4 zdh~9%a~WTXuMX#Q03N@#!2Vs|&u5{bi3`d_vE9n0KSg@s$1LiZja_?Vd89L9^P&8+ zKh~P2&%jnk4Er1dK@uMG`6_>dpnfBYLU1@a&+2%?%}L@z8!|Ku02Q=uUlS{fa9Pia zXvBjfBQ_?c_IUV}^PDHYnAh1tkoUz%$~=})bAxO+)zxGnuoUxn^ZGSL-|cBd1KYbY zgw{fowa3z%OCxUZgZj@YzY3L1e)<%&j0}i=%prE;i?}_(pTw3AfeDv` zE?wX(@R3#JW^Ud`3k&C+zX6=BAmqdwXcPY z=!sokZZ4;N*b*UygbUgN9;F14D%SWU=XKbAM-v=^+?&G>J5IE!#<7h6SBwjg#DNJ{ zc1}(ekX|tME5GVQ*y^(PMQm5Ff1e z8;^7enrD;``)c-cJ!|baB9_jM|xMC!jr28a{0$QImp0Qjaw}LjyDI)j$ zVeZK7v7h#4G3NmPY4c9o_79=vFVD9a2dRgvo`=C7#P&;Gv6F*|;kQpyi(A|PeL2a^ zE7CK`TiA*bawHpU5Z~PRNYUVItU3mzl4~Q6-fA2O6DoXF`S$G_VT?gvj4|42R!=}a zg?#YXp{Z!7#lt9plN~%IiihU>{XcPI5fpLdmg9x6VyrQn$a!J|jT7+YnJM}xP*2~| zbUnb|ZFnMCHt>A)RGaLXCE1LbFIwqE1iskWkMC&8@9P_k0AReZQ?q)S@(aZd6ecYx z-X~+4gf1-|vAS+JZ=cVjoM7BsfjbX#52n70zy!Wy5NbjeiNQP0zEtwsGgxJRkFZ@10FTRL*ovkZ4(lA$lYJk)Vr`HFb3*vT^>a0p}O*M+4WeF*H>RN;=BAhkBf~g(8ERK)VU-5CTci82+)R1GXj}~SX50y>O8}j zmS8~${nvtaI&O3_sKw|qPclj8L?6}ptHYyC$unOBz|#bdrU8gJtYxk1tsViB*+~8ec{O@;jdH3mi7E z^CE{RnH$iNj z@wvIiJv(;7DBX^8Vz6?wReHsLf+{IZx4IC&oAe`Ycj`rp7$VFx2LO0!D20EVotU}YbJlCnSVxU z@bc-;vW(>p{#lo+;*Qm|w*9Tky}SHeJs=d#CZvDJ@%Au%$_kxY)NUCBwma?3&g5xw zNb?Sc)E;h^+KZp<$FHT-Y`D*D>1qTRpFQ|q`{=!>q$DH@OZ6ZL7NpG8D9{e9lA9%=4&W|z-Ps4+o^^oqyt zNoeP%4Fb=A@l-#z}~2p1*{ry25AVTYW)(!0uZi+UO#= zzj2?PRi`?}lOIE;lwkc6A=z>II!K?3Rjj?a*jgAf`tx0!YRDgqwZ?9+si~k(JloJI zqdtGWclrBEGPr;spMPH$gI*pWU`{p*G3rVz?CiSr9)g}(==Z?kH5c0Kx$!er?68x* zP<-R^=FYC-vGP<;G6J)Y+R|>uar~$GIJuW=_#30U$|D&uJvp6Gh|;1+-4AeT29vKx zcF$VTt&jsobk5`KJREanPJOJ}C9S$yjm-kuUu!I!3D$VpWuc*LY7=FyrN8}X!hEkU zTWcjfk0#89%NA-~kCQRT zZk1WLKhF9>;n^yG^2M6?tIuEdJm;N@`n}-e0K|6LjA6M=ljYGE%jZ*<_Dme zi(j7)aMYbG_QQn5Zc=VVE+&l5&eQS55Zs(cN%qRg&rV34XD73q_fW!8=IRIvX*d;6 z#^^SNef69O|Dr+*;8RfZ;iltnzB>|;RDd%Mx{pP@8vN5C+6Nwv*rq`-j{9OX*LOsH z%C<&@Whs17Uh`oF`i1N!gQ|n}M++NQbGO$iqOLfxm%yHY!qb*Y6ic^#FjZ<{X^`*` zbaXCj-<`jGWt@Xzi30`>L;clZPln(RaE@XVv}ff|;~Kl99#xZVs@HVcAu zT8&tw^YeI*o>|URJDx_JyYE&(M!K9_0(31vRfJ#~jCsXgg)#n<$GGu_B;2a*L<8@w z{I@1vQD*bk9ayF+{Z-r{6vZ)=Q8Q=Y4*Ri%!<^((Evqh(2_n}H2~+A6P}ptZe0exo z4*r-Ape|Ya^dQ^qxjzX_2MA1#i(V5#BqUHgAg#POuCUotO(vi@J04NqF;Y2F_1Ky3 z1WLzw$F=2U8m|SRNB6ek0rSmn<>jcaQMjlR5Ucb4@R6Vo%Nh_y9oz@ka?SZ_;)d+w zaKrn~6sl#o?3F$l)Ih!K1sYZ5SNb4Kx!g(-H|_y)_bv`uVy%lg5tf#=BR}9;jTN9vKtFK?%d~ABR;M7v(ZG~JNnp3q+Vgq~cno_I*z&hb{IXp-g$aXUJ-63(WibfKODiiI{#;4x zxwbpgqmfT0=pm4FRkyOTS0_HM9@NutNb-8vn=Yf%bdD1XpJH@yqS9f~F1JOeVouC> z@P{lYN%$39J~tNy3p(Z@Nx+jC`q7DCw`u8_T1ml4l~+iOwe-0g-Rrl;FUu7Hcp z7Qa z&Kz$^Tsf%xhDTyL0nwM;%!eI){~=mKVgF%YQCCxkJMEJG{z;Mdb>&i6i^NJF|6Gy* zDh72VqG+9KpJjgC@EH|xQe0Vzh%2|L7T0460UH`Lf@88?hvpSA;LJ7Pb;{FQW|Uw9 zRsh-9$jVe78rc#3V-)_KIdGT)r(gYh)l{e>?VT{ucK$@0^oQ))*lUFCsZS?^Nqib* z85W;X`aI|@NCuEOP5$J;K}NJvvu5idKNseg&O6k60e|tGjl#Soot$hwo@Qxi)w92AL-dLDXWvt9hFa^XwcU-6$1! zbo%q&U$Io;)CJMN=95Q|RzL zF6ZC80G%%`V;o)wUzEkpF)*z*M|1YCCdu7xl2F^A#q5uLTyM-rGGSsKWa12exFMI8 zkCD9VgFj!9`ahp%0J(C%KTVy2S#ye@{oPfgs;e7@pcoc*+D7a{bgtk}0QIeCp0ky2 z(1}Kv+?|mDw@gE^e(gEPF|?7@$k##@v!1Qx6(epMAd~fQB1I+?IND#5_Wza*%g&J0 z9++_NTo$x<-YZEC|1hbgt#Ei`wBhI|7=*t@DH7*F;Wx(X>b9UTGmnbCP^}CEj`(w4 zUv9$0Y|31^q6Qky7VGt{a{)J&19Y>!;>swfO(j-3LyTn~Cl7ncdFC65pVs>{;P#7> zHe9bSg_{pH{gm39t+P$loO7Xn*vudO_9>#BU6clM>u}fTZi}{e>OnPWxHyivtaK0s_(Z?1N3t-?XyPE1=4zkeoZ6 z7oh7)YS?#b$^*8()URcD=C?hxo|H*oAOob{hk4(JGhP~w`5B&>n~Yas~jzxb7%?|aC(-8@tEYb z0SJPMe3Y8=-nx#27K^}eCj+H}D#_ci8(I& zja3MZ@~#Ss@H4y!_r6*JSQv)cK%g38f{gCVT|#dvr-M&N7y-^lTy}rXN1vIBb;S=x zL1}Zf-{K(k@?Ol$P`a#?sC2)|pu9RtB@nW26dV3gEsP&x3+IN@7BfRe` zKEA+rH|tL-HBGkN>|)ll9~-*`|Lcc;(lQLB0v{}|G1C(&!TLqF@~2qpJJv@jp7jabkX9yHau#%jAPAnUJp&T$`3+ahNYD=Z_Ynp}JEDz2BN2Uu2M zv~BLG^<=dE>bcoq?l`e^=!BgGm-L&Y^@loHjbuvwkoc+qk;+65Zv98|(bv<7PXGgZv=j zz9;$uDqtNlD& z`k+Kl!VS>Q=#E!jX4vc`3fQkIP@owXH7}auViVKox_}Y~Gz5P?HMu{WfWOGP0C1rn zHumTI>!VB73COg*Zw58Oq1+N<7|akzlC{HpFNSZh>CvyJ7VQv?(ej5dtMAP+zU%J?l(`J z>As(k{%&n?l&JVq;viu1UPMAH1-bums`>=rEfe=ivG6Gohox567lbW=O~pYi4T$ni z)9qk%3{p^*mpM*7W4Kw1&nl`}P3WojI5_4*T=NQBf08_cMcyE>1V#HjVYym(;aL-D60sj^|0(ci|i> z^!z@WRj++X6Fc+=rJCVXl|2@5gJYr%b=Jq7kper))>SKkiPopT;oG`#{qJ+!IQ)dt zx(U8j_y`GX|FD}`O+)wo@DY`eRQmrWJPgH{A89T!Ro{>FL?rIw{=y`tGSvTjck#A` zh-&MFtjY6WWNLC4AWJ{qK-*FB}wHj{tNbr)_M%^ZtoA9#ogeu`9p1%s}&MEQMap?rEueH5TgZJQUgy z4UTG1_q`Sy+1%SJd)z}Kf=ara?@x{{>D|z1(O;`xzKOXzcRgEySsXcoy2}h&N>nWiVj3vIBpXTw z=%&?{ZTH@r37prto#ulA?L7BQbhtPb+hJy3;wRXAafQW{)yAO-*yU}J-d8<(peg6K zSnbU#swHX)n5}b5jh=X~8|ET?>*b06Mxz~$_NR;E3ivir3)l>;#Ew)pKH{hyEO~)j z?S;x59KiF;5*Y9HEC&-u)~9A>e%g8_UVHMVyZec-Fn!Sdt?A+=Uv!9A7>62S3e{Im z8@D((S=0>>>tWg1jgEWn`%NhTI5;*RVXvO|V@`3Ev4RZaY23@G5y@UBu=*wjB$Vj9 z^>?aHT`aUoNxV$9mx-_kj-6P-a*mvS;~kG3BLIKtU!16PEHeAywe(N(=}mmBho6Q( zdpW0&A_jw}0a~3QcAd>aGvJ2aO-eG}-oZcTQ*$?gIg8*nKyHrZffRvgW@ReAkE5c< z=_7FCe0gj}Z0m2|F9>;<2r{aR6)L=My_^U!+5nyJLdi0;03DmU(Np-Km6$NRQRi13 zgW(ItiSS9ZynF`J=l5I2&ZB<-52IbiU=S&wG!TE{&i)~TB>P$6i+hv7yzPdRd?A%E z$7ETDH(~C5$t+m77|dT%`j(9%@BJkgyW3Hvsr6nu+jUU~Bgq1;c3Du^pM1UBjjMBP zb_Or1@dbbRXghm*0@=!=Zz;7x?x$da;&7?se6k1Fy(wa#$|+|XtUdvx%4e3-XY+N) zMITK)Z@4ai*mRfLL(cbbIa=YEnN=3Z-ER)=nj_mIJms*ZLz1TrmpivDIfK;&It@2% znoHJX7n5wD3F(cRFoo$QVXw{NVl(VG&;+}fiqL~4{w*NWPtkb`dBYq(^#5WQz#x$l z2nICvzz$@>!K1gQ2OeAFdFkYFcZLJ@Cb%MS*8b>nc}{(*Fo>eooAEg617Dqr#}tpU zmN~_PXye#t%DO>xYL=I!;|_e4gk$YY6fc2EVFn9=-e+Wnm_S=#BP04j={dk|3iKMh z043eQ0L`>^e@It9>~Tx7sJp%so_LD)jq9Z*m=;MGDk|O&sRgeS57%IVkX~j&m`}nN zoR|@o@U>)Is$rpLH@IOPz)@C-h%jr7xAgiGAqB-ofRRRoBI&-5*;=K3ZlC?dm$7cg zxTfycPCdv3J6;cm$80PcQ#Jgn=drBsO}98dH2N$qE^1Xaah`sQ9dG+~)aEDvHY-=U z44ZcCnYaC#)5dhwo9&-sGA3`v4&USrQjPKR;*kpwNM3+M`Mw0f(u@p-hiG!z$S7QP zAOioTLBQbnn1yWz;HqHHf@1%dpHkb@8tV-Qat#Z6EE zZB+)}nJj0Mz!&D>NN}q?1O;5iJ`Kn)r2}V-u?h^0w(OrVC{ANA7{;-*KL@Z#Y1W+N zexy~a{+Mi*^nqlwZn$pLICMs>&#xN%DDp?4?=0m=it~C&5I^pn4-hG z3#M8Rba2IQG2wou?O^AQ0?dfW@p!RYM9l`Yd4_Gtq&?HV5-jBZ=JCs^e%ag{9L-!| zJsvh^gGxI)0Vm27T!Z7YgW1xq$xP!Va>u>zjpoi|4HAhjJ`G?U!1E6kUXAnCvY2`o z6O;e8=5z!Tw?C2ZDX^T#sKjWvSdUgV3>VkZ?63|OKbNGHBOi`L-MG_uE+J&TJY@4S@>K*|ceUsC+?HfzXzisL2fTQbuQ@@nV3u;6Sko)s~#Q?VRMd$Cu01Z}1iSl!4Bz4LzOnop z3z!LcoQ|HhT5-EBOPcJg8w7=YzK07cf?|i2Zt@Z3^T~pWFbXcBgPG)+nwCB9y=x@6 z-j(774oWz@&yz~~|JIuH^i|B&8*gxrSZ)7m8k?Pr?Qr_rYt@4BO-f?%- z{EDjskNVm1NC56$X3+<(kd&KcW`1pN(dzdYgoB=iQ@<8kS)%vOx|C(YDT60a7ayD% zG>Cb+A%S+U#KigLiZpM$fQ^M+W_dA#SXp{8<>q4CTlC~XKd)UYb}K9N_3NvPiiXg! z7-_LoHePZuhxI?7rhe#xd0P;a%4735I(6T6sYCpF+CKdKUj0cK9GTL3HB8Yp1z663YgSYSWco@JGFf#L5D#7=|71w{H55P9RB%g51>)!!4+=}7GVb1 z0%JBlT<&v)I>KjTkNB;m8~y5UPMilfT6)+1?IzbOYwdwal`zZKku!(kRdVXL!Te$u?0~Yl$bU8pvLX_vP6(#s1V2l zb!XOx4>F92r(0|K6Y|ka3uOD?I25^9Pv8E{`AZw%@P#j^!%*}iKn-(!7~4?RLi|g- zj-Vf}W@UA?Kb{97r2nBB01OocI_-&+K(WGFlr6`u$|()3l-Ivv%l986l$5lr%1U%8 zbHf(X(l$3gUWmO3WrBP}dvdg}NukW2TKS6;o&RYe{D)*07EHR)|8$e>z2R73V(`ma zHa|t?UIp%zR?(>>?u*#3Y-cm@80V@hwGPJ(#?TluD^J>ZL4LXfQKc9Ei^9pt&1b)* z3So5WbOPT;$y9ypj<~t2Yg{XaHB5{CkGjhbh53&c$7}+hg-Cc){tXZW6A(5^3pI$+ z7CTAEx}cSA#m@;Q>&8l>e!M4elolc#r+E1eAkIhAfpg_m>pqz;z_!(}{u^@^b5pO3 z>I=s$-cK~oBuf}Z+$%PVz)LSLXFv6QRP=Cp&1~MZ%`rRg=<3-c2LjZl0KWGXQA}7< z1Z3Ae)r@dlO>LRyE#oYXy8I>W2>iB$i%_}n3|N7 zl!2r#l-(GIKrSyw(Ph-3wb`GHg5nYG(b0%!si6>}?!t0V676)1Md3t0W9|lb`z6H8 zZ979LS(~KCCOYRT^Ho(0C1>>4UbuP~2T_nrrCK9i7P|cSOW!j`^*^+X!qOR1Pr?Y? zXFC70Z^}R=RMk-#``>UOqA{fZ| zKZogku$yO}*F_0?&9jl)Zl$55^v?QQ1r)DD5`se%PV_d3Y!-Nl(+AVO1f-dw9-Cr2 zD|tL5M=wI-o`4cZWuYA8;l@bQd`R4wlUx%yt|c(Q@lX7!SOI(OfK9^iQU`L25?TaX zKGn>|&2=Jxn@bIwLSDd1nxJa`!H&)NwUuu8KnA?O^tX~6?>}&B^#`WsA=gjelxHLL zzBbw{3VuezKMIWc`}Z$pj}8NcB4mQvIko(cS#^DRA-gA7(^5J-gOdJQ^L@rlMOuZx zTVN75Vqbq?wYo4qqL{#7G5pu?IWd0URbgHsJpLI>!2~vJ1+gXHFNdEo0|Ms{^aaPx zIG92)AQ#OK>}J6mU`av|OjV@)cG({Rb#uhm*cS>g@7GaJ#{0^kO&l5jaAIkF&EM^Y zFyeG9MLm{pc!T4QExXRpBvt>pq&hPb+zJ^P8MA(~b6iF~^xw@=Q;Um*${#jbG`Bi1 zXpa8@D^}K}lu{_W4u|fM!@fUlLgcg2yNEwjBC01m6{(s8a;8?Hcw2zz_duKfyHMp) z0p0(_4ok5tEkkfaUymixk@K|)%|E3XEgJd1jB@BWr=&~Sf55XU(|q-2Xmp1NxGN>{ zPjIUqf-ZS|OM#agrEqmLNId&?we1azB?A#(N(>*g>7!3iw2{7XCp~a zgHZJ*<35QhlJoNk^8 z*ua--@m95v?ta*N5a7nx^|V7TrLv0UbAYrEJ%vP2Szou?xVsv5684 z_+=r(|GHi9g%Jzs=tX4-P}RSZg>XF`#4wcM7j$Tfwi0^U#gqAuk4~UWhKgGcT;Dq2 zjJy(ORJs~DY8di}vLZv*_J{53mV3Y3ZWVaWd!KbI9f9KK26Wr{T2MkWJc0EB_ncJa!L_T&(ySkFaurAv77V)xPCf|zxSuUdBpipj6JZNe z`wcG>6LQ$k!`&G4eY_R%@b2gT$Yv1||DjKpi|n4gcfivMiIh*4WA+uG%_-0x`~c+) zh<+yt6;x{y$y`nlc_v`R*}(&XA%MYU5+cT)S~)GTilm(`c%Zk+<1~)#Rg;6wicT(I zxMNduzj^~X-!5)}nveL(0S6r^3V?c>S&42FC_&)B`U4xbJ)Nlt8Q><6fvj9~ZrvH8 zymt6k3;*BroM49#GU7>xEk~rvK)F$-hJ;REG5q3K>s8 zTVDmqZPR4q=4?e&!(PXP=Zby&7g-ryefoC-W$eplyC{WXSGyF<=e^5fxV&zXYIF9I z>2I5k@u?nD+WFIdn~C$L4!_5s$?{8Eo`Nzw<$XK(23H4T0?C8^h)Y4ERI{w$*LMe< zq!>@U<9{A>`LL^`;SbwC(xfWiUVynQ{@~f)|MZGk)MVhk`;KYQNqsO#_?PXM+Qf+} z*S++A&X3f<`8=XCeldap)yTw0lptBjvJhCs2;@d$uQNJna1vi~{F*+V{X)xvV}LZo zrVCE2`AR>l?r}OMAFk=+7Zc~VQK5*(e zE4|#9w}xavGvs#zN-1;yO5R^^pn3ZP=f2osCuv*L66hr{6gS}ZS{(u%Y47o>}6D?;DLze#N_j6Y_kGJo(h>j$6rOp z_X-o0VEzYhV__LcuKzu;{6iWEW1swgHSEJC?7SNk4h|ADA3o1tkm|lNWRzoAVw<$Y<$d@u;|$L}d(Qeam>?xK zW3~bDJ}NnA1U;!0R>Bc zCmS7pkfk&siAN1{`8nnQju|`H)#mdUr~e%{J78`TT`2Np_;KZ`Ji)UEnK z>nk62+=lxn!8b*m9+Jvtz z*L|T*vv8P`Tq0CD7mOl?e~%Q|R%ytS;ouKQ!Qf zjF$cz3HXk`FGuJk9uRY?fjDaY*9k*mx8Fh|6*aw0kVmEQgQNb)FM{XI(@=L_fl#th z)TJXC5wy?!puD=kLK}7DY}p|Aj=uV*BP2!S1x&3(N?OR@$zOXsv={nh{1dy-eo#~l z8eOtbT&iQ|FBl>g8aW}ULaH`S>nNQ4nEH+9=s#;0fo(8H&}6q&y0hGdR8g5RYpM=( z%$~KEq!&=wlkl5lUBV5HXR20`)ETzXi~9<-+j!k?^Xf+H&vt#k*7~G5-I(u-3x|jS z1=H^^HJf&{Dc?GF3y63YFNN^GAykngs$Qtw<YV{5Uv~aW zIZBpQ5KeA{ANYtB`AtJF|6gZIQrY2@%2xq31*Y$7O{a!(FWq(nu`~qtSi~+h89MD( zeKWPj963ia;W_zIe|Pln{j7ksisM*AFu^S))xNF&*>S%N-P=hV7~{>4`to+w*?g0F zBb*Ib++b7+nzqcS*Hu=Tj@VwbcMo#^KF8o13^6vu4YH(yIj4=Q;zgbhA~(L`Qqby0 z(VHARSJ3-Sa?gKZ`(D7AtJbbi1OHk>a98!k#T86=v%5Q~%fJj*kuK@?x87;Dyl-N# z?Wgg6Tbb$*1H5sQAkdk-*_rnj+1n_A$3kB^&3h9_2YuM48BYz?h~Z@hf7zrI8kmch zAw}c=hgO;f)R^EGTnZRMQ9_=}VIkjgMzQpY;ojMcj5gti<$tU~nFm&%eoGRbBBK}o#sUoMqVI%~#|@R~-{zTWQl7`vkwl5GZ=9bP5mH1p zg)B$lwa8r&2Jyx@m|}I$SLX6&Oh*-ahr-_k)zpjg-x&L!+@}Xsk&xS~#Uvr4pN$0a z8&|HJFocRsK77d1k%mf$Y-8N_Y-4^b&c-f!`)wDV$Iy2)IKrH&WttSM}h4@|!3qo7965Xmo7V(a_1vHzN=ok)_p^`7DzQRkTv9T7EX>Ak%7 zq&}yhFt;#lZ){5wL-GvoK~QC7W#O)sY}lD5>DxU~^{!ZdO8aoju9izOa#BQu%pYZw zP}Vq%7n7DxYQDneR!;9j@x;7DcJ#cM%6ctJSdU+nXDM8o{Ptdgbq3~mQBU{ET;$*% zGOWYZz4N`+IR5NPQ5%2p)JI)MA32pQ7l5wXR6UHlw2fd3YpFywjoaF|iwd1Ijr=A+ zh;fd1Vs{F3KJ4(V>b}`T=UGRWBmfVoU}tCNtfx0O|0BWZIMD2PJJPX7ux<@ek~Mk* zl}LF(;3aLUa9G#r0&Fmtr_`wIC1Ze(s{h}V)v&Ndo-E87n$i=c?VMM0zxQp+f9keT za2mCZo=S?;|G8)kfrc2=WVSaEatUG9o|a6hNv=4kvKK!-5Sk2qhR^O)km1y?bY2#vEIq^BGks#li9C zpYbe4h95@hji=n3@~B6c;eja8FZF#c^yN`;Rj8RZ1Te5lmk5qM_nT-8Lw+ZwYZlTgg{s{yiI$esjEv~%=@`t3@E+cMgS+2LVXQq; zEiInt=qG)Bo8ts&pZA`;O6zqbrJt1UmW~&+5X=B~}!85#{OrZ>L2ml1wUcE{#5&R=PWj zRf_UYr!Z@n_+j(a*66ZkXcXD%?J^{bG&_hGmd$dR8aESv8=$`J^$?m>PEzl?4AFr0 zZiuVq@5Lzu#vI0%S}Y~r zg%-9R85zsQG6blyB{8C6G5txdMdjZFs~1-vZl*`A-pCv7`{U^-P~svx+HO1K)?5xO zcZ!LRJYDq@V?%Z8`j*u{it=4#4z1U8G`qc7kImO33e-pp+=eQU- zcAh2{ZK($@F}$xEdLJW2w%6~V_;J;wSv-(7ubqA`;yB|H+nEE|xWvLBf#9eeljI3Ky6%sHtZR%BLn zO|#LHxr?q*Xn`yG{o(@$R#C@DGntZNyLCRRR5ETWgLFyE4qtyVu5aVK?dr|X!AB#71%6-#Gzj=KG&+|DrhW*HwyrwI1(1G0U88D#eR> zldMbl+bNFLayd${zu(Rpn2LDD_9ZcYo73v+^i?R(T?(w}D1JgbYq+WX+ew#PbWUdu zQdZJmgCQ%saNJ_T8?UY&TV$J$u`;l0^jM&$`>`-fcJkM;9RC3Osqnz8oGu2kr-#}! zOw3U~E%)~O?3>onh}p$=+BWK*7pi_1C`svHsN}Q_nWpBj4*TA=^dZKsx6{r2gVzHl zxaDytceFCg&(w$uyE+A`x2+#<$UKlC#@|O1)OHlR9~~tgFqUySdUy(lWrmS5yM*^t zhL$dzix*bT>ExAU0eh4+xuu&)5C=Td-8c3ee4E#jB{83{XjlC{u$9j|z?l4VuOV2# zI2G55y~Y=U5kl5|)by#NpV z;5k@Kk&PYNoX_1+6J4r!6F*w>Cd7c%R2b(vkth~6OR0|R7(ce<_l6Fh&x?mp4aJBT zpZg=V>Vn8-zx2+H)GE%*1v#pPk;f0V;CF~hbQ|we39FCKfL9e;0l}Z)w|{s3l#epk zr}gdr?k-QHS=9onJszbiJApcOms+`O<(i*O>As9?q9scQWRjB|o(@~vW7DA)K~;;I z*+b!?it{eJTT;h0u^se$-d=8wV(y*Dtx)|ZtM2g$*O#o$fR$O!%naQL?8fA?{ z%_?5hqPkm1nGeB2LSnSrH(j&M%m)mJcjF&j9WzZE*wluo-BQXPb!a+eA^v{(5MC2! zeX?TYVVo{o7w_?s<$l0u?3T%*$t;_ZE8eGirA_LU$poUsXw|?$slCdlCAVQk3%1Mt zvj@Xru0HLqhoJ?PTQcXF#(gRW)JyY2oT@AxxbY&S2o(uryJ2`0%`9b|8ru2&7kSGy z^>R3M2dc>*bK+_Rffs?N7^_GAh_x1Nb_3_Naa`5|h|BJ^7pHH%0oPVEd1N zq0P~7H&F8d~Ko?#|`5tt|1;<x0dI-^yE(%ib+i}W=GP=D^&fW z&MaWT(E5daOw(a&{z7j3{gH-B7A5-IO9>+CcNCN7Q%avkEq3m|;+VT0Y55B!h$hMl zH!awHv-#z4N%xssSNbS&v{wM4R372xEcQr;wAHxzy0rcCX-lsd}5Q=vqEc;`bC^!x-GG z8!vA>f8n?F3DshQd+g<9hSKJx9I?}tNAj7|wA7V=o8XPQyg8|JWYvr#Pf6V7vhe+{ zb0QQ>Pmmw0H0Y+5Rg*qy?;M7HKtbz@%I>` zH%zr{qg87SM;)W*jW|0-pBA*vOs)i#jM&>XZ07j%mTh0&59*_qd~-k4^QNjM6!}%( zr7=In{nVb-ryW!4A>aWz0&e|CmNN46^sqN+dOCD#yhUq&mBS0w9^UcN(9nof<2A$6 z@03(jUMiyP>+6qkQP#(X8D9-btE&^2${8CoxbbmwH?uCjO7{3mL{b8vEG(N6xht0&@7v2cy$Y-Eap+s8K-e*NyUZ+p4ydR|e}8}RGq`wXfBy~msi)TGgG$ve zeEj_0`%Mszx?>_Lv!aF@p@FM0z3VYeJ$rnN2E7Q<`$6G7Y;6#yQ00%g1j4P zjEaW-gnJ#+|2C@46~8PMpDH$jbW1$EJommCxK+Juy!$eK*dm)Xf41X!QXCv!kBvS~ zG2+5!DebByN;ab5@toWc?JG4?{}F;~zuFu8C0yL|qU=<;uC8vaKV`1Oqz4Em|39YQ zGOEh1YXg<;?oR0j=|(n!ARyfx(hbsVQYiuH21TSnx^vT|fJiq;mvo%P^PcaFGX{fS z0`B`>G3Pa}Kt@Jh(1fP8&NemzLIM^x_8Rk23Lv`(1l*j@&FMd!k`NGt=8{_7q47W7 z6{5v38rSpj^PhaYXsoEvNr&`AYbq(B8)qgaB~8Mi3X6;U`o{d6+1txwYWjB}k29e) zUaL<&a;qD#9=B~{tTJg55m8rHw<|0r2#{`>tulZc%||Fkbe#VEyVN-l5?hitH#Idi zR#DNuWb7yxb1X!xpyl_MtSJkv#?$-cu55oN3YB!yB_bv!25~?ulJ*YuFspH~uEDjl zY5f1NfCd{d)V8vo5q$Bdf++CAA4>(~Utj89zqWp_r#HE}8Yuoq!l|!mXc*J70~F0e z?#IHqz#|cggyGTxxwilm`TOkbY}@MQW?#UwVj-ZR!SO?+e%shn_{ZMiZZkD)w-(#T!TKWXU{fW=4A|SYf2{@ut$G#S80&!(1)eb1_j-An_|d zfPExl$0s1@IEi%z)UQjRg1g?;>1ehYr=BIeS~{7ldJkL^fVG6W0dOTJ2NeHt5K6{+ zSUHOVd1~@{8&}RNUO3Jb-uQ;OnWKG8Pc?0YcW$Ya6Wol_7TTxr1Zj5J(330xt zD{qtF5)=%&J_X*joyx%tqMy5NaS>ZfS3NyX3glU0GR{uVFwil$jhh9Ebw!7iUgy@< z{X0LGmL_O@L*!vCBag)7e>@hAenP-)JgBIcpsp^wboD_8((0D)wvl&QHZlUjM=(;k zx^$n(eNZpVN}HXP#~|*k32x$BjCeJ8E|xfI-!(*BQL|EE%9yEi4S8#=gib*f(%ngf z15Lw^Ve8zF)*w;hd$Yb3hkfr{zDT|f8+*i)%6$YxD?;iX1>kjBzI?-(gOJ<;W{_oN znEFE0Tve-MITE+PzI0-Vcm9zi=!9f@EPKAmotg0Ti8LwhGx1fn!e~5=cO7tFDoRS$ zK1#e&Qi8gMu+BsRZbb2>`T<~01Lu=KKokUVUev0@;>lATDXFQ2eZVbcRkcb(Zsi)# zf2uHAA0KXa(5O>)KFr~wNCD3FM>{~*t1KkV2-ZW42<>>h?f89wOdSWf;oWL?Kp8s~ zhi@0E0*BOoJ?h;4Z^i)dydeE*^T4*MHx>iDazq(rTCO8~y}y4|RCChiezN931*OBC ztHmAMzX-xx83tn?F@1p-5?u+1YeK3I2gb)Exl$cfdCwpjbN%tW|9Z;$*nACj zB6Vo)!j{@CPu6N{1zKPCt#9t1T1gi2+0Ssa=AQg+JdQ$bU0pSmhK(o(nJg!l>Znu1 zz+;eb42%!=SmHeZwbj7hODvX%Hy@80dCY2SYYnxQjzJEk&4q(5BDJKiz!tIDBL}>5 z$SZKH2D5S-U)SzC%xaig@z{N4eS<}Gw&m&R?alyol4}dRNlRBtNOzPsv&ls~$mkKg zr2qZmWAf|QZY}NAUrDhh6V%bFtA#BFYowLcU3S;D(lavVrswCSyvXg12r)O)idjY$ zZ}0CSk>FI#7m}taS$+cVbiIy1iGA!UhSuY5jE)nEju5ZME$4@=_=lbNybT5vq206X z@t|$7<&dVXud=qMvtA%5bU2064=}j2vT3$HN=O6(eWOGNKwf*@99L}}+W1x=nzie5SuS_!!@7Fe{caV|vjn1+4KDb?e4D|KA z0seaLc{TqXI0xMVR*uibUoQllUZAdaTxun|_9=Oo@3_y@oqtl#P9Zb&0h^a=lBng| zrAyzPCb_5Go`m+#sFa_rB*>vaKWkvsc8%4R3O}nANBLWXQ}IOv0^x)!P$W)d1zm7I z7ToIS!aYf@a)CW@Xu)m^im0x?zqr5!$onZC7|3jJ0%vw_Z|_PUb_)E%5`qy`(yM{( zU5P+QfA1GY=IyPGPE6O;HF;7o9vpX2tHi}&Q_JBMq0)ELroF^3XGFTb z2FGCXE1~*cduk0Ln2@8>5U+ z5)$QZzgmt?NN_swi13Ltvf3gB20A$7#6-n5C)G)*5|a|mEiB%zj*Y$f+{N_u>sMeg z87e22mJ-6rEXnnz!Hw54^}Q*Q^r$?)^+>J|&WnX6zXszUBs=cc3r%EXWVTcqW*~%) znqo88Ato-a+qOG^YeeAXRa`E;-W4-30>@aNmOR#LL1_PXhrqhxTXxA%FyN2S%@n5r77y2K(W{7WK31 zYJNBD-`=vQOXu^`Za_pz;m~v2onnno?q!uhuUKyE>aY){o}FFD%1k98B14O%D!E#3 zZic}i#=>lD==^u@-n~mtPtVN(Wq^Rbp<$W5p|s-2c5$f`U~t3_xwWBLDA?JtDN}qK z&strj;QhBaJ-vxP#b$HkktY5oOMEZ@mu+kOa@JN=b$pXu2M{g*oy#4N_xCf>BT$#C z%TH+Mc7^#eKj~s7;Ncw>X5sgKe)i2(N$KM!GguB+_}ulQ1d`)}0eZ|6bc)*jY`!I> zu^=UZ%c80#v~CtX;#qm61LMz-^MkX)rail#>Ib{bsbE;&bhE9gKJ^a~B`V{0|pA?SCI%PA#>! z122cO@0`VJyu7@7zbpE3^S&;FHQLrDK~G=MQHhhTwiOu>Xg^;L$y;+n?-2XfZ&zP=)IRBr- zMACDTKPl+OXomGUd{9*5kpQlj|2+tqwEl;i-sP`|=^~abB%zRt4zPjYML(JrNr;Jw zfv`A(s2^26C+4#xlECE}T%x{Za2n@nJ(02%SafkxCykhE{v_yfW@n_%luD9Hr(dVi zi99Gg;coZV7FXm8t;y+Ii)z1oaWmiNi*Q=~di|a&f(M#bu(7eBIU}jfiCkkU;gX1S zYozGJmHqhNwTx>`>i4_kyV(Qmcn`h7#K;AHrzww*hbQ<$Kve3#yQpI%zY!$Iakl#|%XUzHi+p9?M{s9PJRSl)8CaGc-_Tj`lt|L>>4 zcc#fnjn?S$PD+s_z62N&G|eSTC;E6vuFF3L*&4Sn#M%Yzso4NuRl%!vcr}mWptRx)!yl#MPR03BlKTskw_g13hoT3@GCq`DC(($LQ))Fv zH|1F-JWUp+Y`>=*yf^MOr~UTCoF=*M9$=6%rPkPvea1`Qez z0{3Hr^byt1si{Cf91XT82hU3ggo%-{s*?d5L;q#V;cyxq7Z>)X35Zt-#-6f@-({K5*mcXZAKGD(aPr3Kcc=;m!^zC8Z@I z-m8Lwg0=N^et!P>xjC1a^aZ8sm;q{xK$ zegFRV?_Zgazo2ggf-{gKY-x!oWiyh-D=K<(yee0S&U+#j^l%4S1Hh=9Z*VT0J3e-C z2+zoWCl{O%a4`46n4;1Ju$@8AIB^dI1rg;wEtIxfA|fIa*Pv&J<^x8Coe^nTIWO#q zAAGmRs8Vy%_Qm5^$w6#@T=wrulm6_N*x35#}8nIHR0}wS&at64Inm9*j9IR zcjv!(+!!Q?`BwkVI1z{N0zNs9EfwL5_TkpE?^H19eCN5IQL*^f7QlV5k>8}r4T(wv z#S#$uZBffHF)@$vT>el7K*p;Tglm$Mlezqc6jfEX{Z`+KEL(X{Frb~~>e6AN`yaVj zHA!Vqi{**c3+LTwcKtzOh`u0v+9X9i8v2zS-*4-2ZT` zwBY)j@);bJpEZ|S`pYc((xvSW_&-+dmZOBdGu1mbXG*7SwNRs@ql074DVg`_1@qs8 z^bOu@+&n6vU_!{iZ(s!mdcVMh(}gJMA#0mF@kh-X)a5*79-f{u+c7eK#25b$3y6+3 z_+gEu$-%G=Pk0OTQL+-SO*BV$U~QCE8`)iN+68ZGqSlr-mk+qBkvKGvYk*wII`ZQsR?jNzwfD%vmYHDmB%rAp<8E1RI>SN3#^1k&}&ORTv^nK=NwXt#XAC5 zdyD}543YD*#Kc74RY#JJJ23;~D3cOST`$RsN4a)cnm@|))F&h)qHf&KkZ!o2+Hq98qSB>0m0N|ekZU;e zA)RMCJP^|G_uG>wS@^T)2+`>Ik!OJZ9op5e4%rkQ;(~<(51jM-x;mn41+wBD;3nZN zQfQhv+vv)$PtKJrx78DFEK}OgB?oJ&4ZQa~_p-G`ePLmvo}XFxw;G{2lE@-j1IY$k znbZg0sNMh1CLuVw!Fmub_^0G@|D)gE(E*9+?{FdvLu;hk!SMJ^5JQw=G?5Mb!7`RO zRqJW+C*>e7Y$_ar2unR$7+IFv-LPHKc8>Zp&ENieuov8&G3Nj_na)jX+46&1#BaU? za{BzLRpt>mH9p>d=$;tO1hxGyk;M7(@#Ulc%bhUbEvF+T8oah$eU>%^Qx|qwdFJtMI7KeHP}P%oi;QS;u$ zUvPw;v)nwsuhc07RPU1e^*ZBnCH%Da#eGY~=9J&FhJ+wU^h?WRhC@G^nGJoBz@`-3 zxGja(BGyJ5*^pZTAszL9L1|!y%R>~j){FKz1UXKb(p#XUoKmD21y!M{wpNqMaS@@H zkbsD-_nE9;KVJV}1Xb8OgbZ;n?StfD?THcB^J)wdF2hb$fiRT`xyk6TctHqGA*XiS zWW*>u1MJ@1)HXQwnHNgdI8RaQ{l)w&ZVQe9K5Ti%mfTaC!@@&1-7Ta8c;yH$U#+Ue z^D%(?3r19~12x(6a&`U`3;h-Um2e^f^&R7VP$ES8ts;Y8k`kom{U$nr?OHFBObmta ziOWqo$H=(7f+mt;l}q%s1HA>8^j|0!Nru|W-}yqL>`(fo)c?o z)S)W{58v~|1%CQ@v4iZ(2_4??@gO(HEY=$-eKZV=*NTc=F%5H~B#!E&D=cErZwbL($TY(r>Abp5pqV6 zaGHy*M1_+Pm|s6H&s>pqcdF+H=U9+bF>q;}DEbxI4m7J2A{Q?&a3e&7f?eMM{BV>{ z5P3@s{er7Zgz0x}dyw<}g4J^7OI$eAo@qZj{}|-ewSBC<0xayf49oyNJZvIc9f^jJ z&B4V5i{NUO(BKj+zT`@_NL3ekl!a3|0SIlZfI^3MTD(MY>R3Py%M?BhsKR3^*&;OH921&p9ei33?i5YG5B>li#Q-AXS% zjkIP|lPMb(%LI;Uw&>Rf!v-g+-|x~3GQS%ysEJ(*ZS$bh_GtzI=izfR7B{t*`QEF{ z9)g7YcBq-rL48p&m)2Xsg7!tEzNLYrI5K!jqf}okht-QdBBc$CZ-sd;L zzP@>HjOw(#YwJ2^;n<(0&d<+FM7)`Dytz7A2L-h;I4iw~{eazG?rFR)ht?tA+=zh( z&S92_yLP29R(^Ro7BS*$6M`sfY^`>m6M9QhlB(auSW->yk$Bdkrdw6`;4UG6mfc83 zR}*Eea|riqs9A=RqUUJ%WpTthL|4m$daG8Q62*aQuG?nW>zkvBg*?^^1aRMNbH&> zh47TsC0#YTKG$U+^o_)_;$}E{cnB0huWj%Eis4_4EM&SX3<>d08|G3Ml<=Y+V%~TH z{;JhzdiknFCC zzk;#Upc+{OA}L_-ySlo{u2T`#e&2;cqg%3IRjW>_#Y>PU?(vU|-+H0hGdf6(C*Z~- z^?e|zu<5PZzegw(+S)44pL}LSyr@Nc*4C*Gql3xxcdoH;>(>@nSK~z>Ec*VpjzBdP zr3kfzqzKf=U?OR-@+bD^jnhX>K)i006zd-?MvU6u=?OB3z5T^Yf(m8D=9pl~tKPUm zmEW?} z(3x5c<9T|ftgkOvlEx+`@#^}ZM4)l>AZ6w6|MSC!S8ZnmTr#-<7kcITaWcW*q4U~T zwt3^$c3UlmZ{NbNBQ0C)KZK&-d@?aMZui{Nt_^o8UB!usE4syYX^Bto8Ol;sf7-Qn zwDy*Amv-K)K|j{{o~FsMx&BCuTg@NCSoRQW`3>cvv?Flr(hvwTAwP>}An$7#Uf2fP z?uP4Dx|EACr|f{xCuYR`BT$*R{1_goJ?i0o0y~21P|h$VDN*VCPJD z!FCO(NUIc{w4uuCeeu*1C0Nye+t1R*BaLsqatEM^(haRJd(rrQZx#^^RaXAj6XgOf z!c^(t)_PE#n)l`fp1nJGGJE{;Wq+;?}4823VI0TkghPAeMH(o%FIx?dC?=|Hc z1qB5yt!c17&Dfw!L7;Zl<>J|@s`tT+9`FYKVUD|8CT+e%@YpkPRAMfc>1*CDpdP3G zt8oc#t`(r56)xma0{A|!yKedx;n%7-aGb2i^_IPvvNai4fNAh3J@2BDRpLuarH#t_ z2739^Rk_i`Ps#*v({l~DlAela2#3|ATj`^O3{X;Pn=#gkZ=c_`2WrVIxY$fzs~*Pu zm11@OUCyG6x)u8E^$%!;l>H6H|pkn7w3W;cFFw z!j;1Rp}@#(Z4WyNwo8eMOQ}tFN%e&^#p3CZ)7+|#g)gn9Nol;(gVa_EAg5GE2M3jRd5Qdq7J}PP?B12&MiKI3pFFxN)S-LJ^wZI!qTz^w85DGycxRqzk`nG)F&|HeU@q$Sy5&wSIwFZEVyS#CX>HJg6krx$jw3f+#;*2;9#S;){8&(A4nthmPwj z44NIMy=1*Cjr8u#O#DOYmOoKxPQvaLFxKv@QKtiDA4H4iM1^D&L-`<*FTm^a z&}c-8Uw-q#{3atUt5Y-b*3sYJ9}LEik9o>zl%J+Qm=QU@A;$9=I1Qc}x6Dfmg)$-9 z(X_G@gMTyWPjHZH`gRv#=D1e#eS>%XV1{6(Ck(dYBib$e258Xfm%|=qgAAsV*|B6H z$_4>c1P++r!!gh`EIx6?I9E2k{RN}fz6CCn>oLHu4LP7_h@CRvY(pQj;^{L`7m6( zGej3XdB=~3_(`Qp%+x75Ha6S{k_cTz4iR!DO}hc?_B}dzfNY}6Q7KG?mi6i3re@JnrXqYu<)!Am@;X$Z@ zr8+m)yII)(?Ol@c1N9B`a0!Xtt6mTK@UWQE(iEB`iBVOn_-Yrk z%_!{aS-XOA{Vj*E5hCOX2*X4NlZ!h!Orhb%HzEMsIL=8)Pe(K8$edOMmpVs&>^D=+ zf4Hh$Zg#eY!B%EIC-~o+Sl8yXwmT3P+G!OaaYf&7xb?_gPv9H4rQeSYk2(T?-qrzg z$1T8OFNv9{pd3v6ngYd~R5C43FDFQ9{e-Ah<^qr{%N^LPimb+Y$?sm7n-_RFx^K`f z_s*PzvwJ`PW8HFF@`kGAKtJzd!B6N%hhX7NTj+1H*ZL>d-8UAG+bgpq_#}Jv?e*{E zmqsmSMT;KRX=uvLdcV-KRr=5D*e))*Hg@i(I8tlL2!1|bWk99h2(hALvAIGa!pFz2 z3I&}ufbY9$Y}Z+J-$?Xo@FWafI4+QqK&%P7YH%ycOa;bX$;qu^VHJjk?jQ&`n(9*z zxhvRo$_>bfY?tTt-9$v3ILt97bwsx3c|SD%f4qRjmJ{2zi6dVZqHGxF*Z5eX+sFrI z*7>evL2Tho@)k)~34%7gvRhXa5BmCcX8o0t6DHt+~6uJ2WtGT<~{x zR(C3f)thuN9S5-@a=m9(xVIPc{E{M8E(~7zYOULpZEXpOvSl?+WPx68F zVZbXO2AcIPvmW*_*}zG8W7x-bz<72GlM49VI__2%Pkw(L0SXlexg#xa5$G_#CWXA#{*DHolW5@V^xWvRo zo>!`hihnMqG>%$txddjx#`$=ChSPd47$(u;EoapyZ8~-Vm`aA`tnv^Dmr)HOeC;ye za_DI9hBYe~*d4NJ0!+9jszH(+FE1S&!_3d0(8H5eSsK8fLPB-EyW8e*0n=CUwxA$=eSJ+$LZt#^ z%`0HpUb-Hf7;u08_%LkZRoh^31dgh?`8lfvFSgwC`R2;dFkS7lFhGt>QIWDY=p zv8L%*5FUaLpAqT`7y`^B$E#ih47;k(Srsr)UB!8Mgz&4H=#J8+OLGK?0fK@4-0H*< z)vUqk??Hi$3L5dpgv7)F28HgUWs1=O%7r?20SSh(J}HwtiT9_7`dl2?EnbID6{3gf zN##U^pRZq~QH!>=wqRiu?wpwNz=$Xqwo3(_sVG++E!C9*1$k*{X>04qhAC7q{a5u7TzoU z7Ka)W3ww>m0exo#AaEci&+qEktVnp={Tmvpii!#Vh#qfX6jx|xy}%Urr5_v(%0K2Z zqF*&X0Q1Aq;cHyzPRFw!NF(e3fFUKPHvZxJVgq>h#Hi5L3uBaYb;=7y^_kLhh3>$u zW{sznQnEZo01J*X!zMR?CVu$vL0JB1u?1zgdn{XQIq2~o*!pf!9dJ5MW?pm%UmZDX zN|uNIpfQU|ldOovbCpc%J13>QtY_|wS47Zj)~CqY8*5sSfu+EeyV>X9II^SrkD5%cPC ze!nZ9uDFIPT|Dj$s8I|J4gLK5WM!e=FeGg2TXhN?Y1DaDdwX`i1lb5t6nl7bB}K&# z(XpeiRQuD;t~%8~KJj`|Qj+Ih?IlmwQjd=mIf*brXlNod?LBZsaC zTr20d-*hpRf5s2z)v^zSd}!(vDWu)%tN~Nr&6&oDs}rfmsTY;2>$wj<=+BoWuPh9F z`coPL{res+hZr7p$;eU(`4|3JWqR0&|NE88N3T{~WJ@<(uOFs#Tdonwx%9jgWgu6{5q6SP}Bm_JD7wU`Ma{=QqGxK zg@>GgzxCajt+6q{@y&{$BkAz^_c@C#g#`uX>uXECdz`5qYtv+B#}n!H_V&Mi{pz7A zb?`+~CVlt!uj9eN?l#&&DUEe_eZ64usG_1`l?>yzF96zi@eW>1NSJAEuKD?P5&b}d z0|Wxf12bS_>}xw$Aafu|(dCqD)L|qU0GtW9NVG4C2A@xu}ztlyp`KJhBNS zqkV3(y`S8B*(=*WW&zUJ@9F6eoBiU{krAfd!O3s|X<~l$Ci|C27G`@MV9ZPB9`7Ed zWu0mjs*9QPc1xRh-ikmz79Impt}R^fg*SgIx!|wUIEGPCd;$^A)tkr)s z3`8);9juc+Wt!fRDe&5o9D}M5FQ}H2kw8w*`XAbE*e#@xQD`HjH0ubB*h9;fQ9i^f zXA0KZH)xvB{8N48E?drZ!tj}w1Zfw5NnvDUH0KjCaR_SendAImSm((8tP2=(+TdX;s zxSC;rhLSXxicw6=&-+1FV6>}C<}PfovsgBDoW4*c9c$+g;Ncn?IsD z;Ps>aUi6ZdAFL#)kcI@$y_r?{JFa}#)86-=>?NH%N1u1v}J1D z4zD?8B%8umgW&ct0L5+D`EhJ^JaX%sG?gHhh`71WudQRT1_r6?u=m5o92Vr_pjYyB zll5=4QwV<6w`7|Q-P+nhA|lGok&M;z9hvvO+2RGDg|^p4cr-~%ON$xy!1#EF`!@F5 zfq^c#h+t}2kz6fpri#D8)Lxh88(SMw_Qbd6uW@c~Z_NmUgJ&$v&8LoE1+=vt_|Bk{ zB7vnhJF|o>|FyLkwas^X(L15TdpxIg!B7YW;$&A3=IaCQ2ARRUt4a)OsBx)< zR_|{wm%*jJHJa%_iFcdVXPY{Tu!$vf{P6I-VXbWTY-7XnwZaUhcK=MVzl=;5h)sRs zfE~c23-g~arz(q^N!=ayfX3>^+q;PVakJwt75MBTdA}+OTf14hY`^@Gdym(>(&%M14gfsBYkSPR-u{{s$D6fYpiK{*TV&_ zW*1pJw`)ka$4OMaK^z^8jkl3fjn(kz2oes;`H+W);s%^By)3T1{hdaTD@|hJ`%djW(M%v*{%Z>hivYPEU<8%_ zX1Uq3bb0;-!-?&69Uvn@Q@Kq7fl-*r4-@bM>Vqd5`c-CIon8i435g>ZjgHC%-T zNfW7SnVY5O=4q%AgoK)`y}%87=Q6qaHC@HLOuwC(uJQdT_nZq(LoHp*w*@xd5b~&7 zNz=KR-8W5DR>Q<;9{^6?S46JSu+8QZUR+*oH6(rq25OSPajK$%OY&=%Y|dj|uugBs zb!JD`xYWbC)WeWY`{^H>Tt|@Y1*T-+>lS!5-;X*6x&vUUG|sW}`cB ze=-{#bgsUi$l2J05#XCG!CC6hyHfo(y281RZ*p@rSdwqxR#w%!VHc7g$aj3-ac|&hz$K0IXtMk$iJ^>R_Th0m_kqwoqeo7zgdp7V7E%E*Fii}pf+dsC4?@~r~6I78PbVXBJyWsCq4)x+UZsWhlbwtj@#agh`)!|XWPurpXclE@Nng>eEssJ^B8?P00>LK6dera92^3+T^yiHdFh5N zUMg*E7GA!<*IW5R$?)rsz~D67+YbzIcLbH&K%yp?Gr%}CIVun0U(+00jtmX0Ep~bw zf=%0}t;Rfp%ks?N8f?DWiXc0YT|4}Bj2%5(L!;Dn;jzG=q;c7XF;Q5V-Ti{8Ht@;V+&;vCd=4Nx|8#U>-K8^ zb_r3zc=nh(KD|%tX}ubqFZ5z8a5-3nU0uJRC}J+ZYKf;r zY}@!l_UJ@=Qk_X{V0Wdrw{_gn=5Rt@1g=N$O1}DYNuBLRiq;mqvzzA|8(ai5-7B$_ z3SRU&e`sZiSU7nCGW0A_$Q{@#xc$l?fA0TQGQLw(GgX2&>%VECe`sR@`R zLYA+#XU>T70%TAk;u6x+|NQ(3pG@S-eU2q=X!=37(S;7PNNp?MTG}yKNn2O9(eKhJ zkWAKK{pN=W8jI%t@dAAMArb=$aK*n!xk!z)s*&Yz5R@ro zcNcyAIgt4id#V=CE4f4Muv`!TmvIcZ0+|J2&mpQj=Khmbn1mOo5(;Kn__vow{ab1y zRo*NJn`A0-*`fMlsc&UlNd0ZS)qVs1_!y1*4&&C+B#rB{Y6Z}EhR7qZ31GvWOYh@} zV#4)9Q^WM5u=5^qYc0|~eF`q()h!Y0Nh;D9eyx%BvXNa97wcbf1apexGE($r8oT$moW>c@aL zfi)P=3wHQja&d=J?;c{?Edd@p3^$#W(u3&cn6Z}oI6NsGXNB=8!89JOYw{5WLW4kZ zxH;mI|CtIV)0q40KM?-)_|F~`j}T-C4JDH9FSY~8CShGbmGAvz-pHd(%Cd0c(&)PC zUWn812hO2;xl#>bth4$>y}mxr70=ywW`Ak#Bv3)0c$Z&zy%V=!_ff)*dc`d8>P7!;VZQQf_v|$Npb*tGA5;Wj{jD(@}~JM*kxK zb@g{6CQzl7g}L|oFNuGEwH*m$t!n>D8WINr`!H z0|A*pt=@u=;Q>_3*Gy{S033vpz)O<&-d(vm{SB^1$fletik^X^+5*a>zJJ(`E}+F> z!Rd?WcMXn+Z}KjDhzeNITIITgQ8+g)n3{bF7VXUpepBbXENPq5Du^8c&))_dFrlL) z2eJy`TmAqs-zcRaktUGa1Z1qvyb~qUzN?KS)r^dcs(62wyfF7s8o!Xwk))k3c|G_& z42&+);&~hh00#!9%HlJt5ra9^2aFRtn?u&4CPSf-@87W;H(LyR?)#9ZXx!x1w~5+( zPRWdLf&H8}ef)C^dvmW#B`-S#m@9;Mm zuT8g`x$gsxI0mO#UX}L}YjuzvQ_e^*eRHMd-ne!^T9J zy$3Ji7PjK z&pY>Bb$eA@a{SLH6&5(6N_#e)q;UZuGG?74?N#;~hi-KFO2(W`5@syM>NHLSI~xx# zInOPW&dri>pWIE`tG5qBd|T1Lz}Sf^?9FD9EHMv{@PxyOWl7z*Ta3Xkrt~|BbEJc% zScD6tmvuFXd<`|6$pWrqjNBHyX$ah9K3`!i-_?r+p{R($n|W2~muxk5Uoddf)WaZf z2iSH*0&iO{X*mwoiC+0q)y)9yKn~=-H_0?pa zQYD=rTiC0j^Uy3}X=r7e!ju3CACh(Wn;y;&0qBMz`#Qw;GVfpC|JA~EH|3Bv(`BC$ zmg%_LFD+GYK67G~M(gkF-hexZJEAJOOyx9)2YGX??6az7-n+urU6-ziT)R6vwplul*HVu*PHs2ff^NQn4(Iz4qRHJFiTVmSK1@JX zecmEvVL!Jt<(fKDJm;EPNe?R7HyY4flL{G{a|t&^xCvAfz5K%pn#4goOFj0zZzCEb zNZ)@D2tFo|$@dUp=;o~etVod7n=ym~!ds(FJU%qo}1R&VBFSV6vWDYK4T% zIlS;{Gr3uRNWq{YO*$A( zqe|Usa}dzc2&sxs>+&LCk@4;@9ExEn-b{a##%bb=2;~owmCV8vAe9jR?wVN4t^!z` z1jw}e9B(iwd%?D)k?=hSa$hj1ADR7KcK+-+s=1N{u8oWbRC0qTnZu=; z%Rv3qOi4>{+{b`bwoJ+u`7g!FVu7rT>JwQ}c^Bi6(vDGseO~-T(E1)s50{P0##O7q@-^*G z{mmwSJYg{FCAdS5DGei*Sl@}e4FN%;&jO`nx`P()MYYt9TYJOT{*X)THZK%EYFQH0so>G*B%7vcZWICAjR>Zd2X)tY#(c8I)NR?Mh)t7Am` z)7Yw3L2MQ*MX{zu(L5g3I-8g{HKg(OZ6mS|m<9sAA0TOT)((l83Pjk(UE>tWY<1nm zQHnq%X>CAj1cpe&_augFymQ<{cVYJ!g`*voU7v33$DX|?e8V!`YAya^LM^ue!&=4K z$CQwglncTu4zHD=N>Uw?`bupWr+Ff`76gno)>CW zDSWZ}s9#?&85nRvX`whjhT=oSg!%`%=6{tCSbS*w8K%`tL@J}Kltm)Xn@II;CHO7e zKb&SnCjNXYnIGlF#lacOB@@=cMJN`Cg1JJ@)R@FoDtT{qlAic~dc~+2mL49pCC_)e zZT@wEwAh$jaO;KcKH2!{p^L5;Nm<`K`++CmReZUl?CJT!x*kNw_E_wf=IOjn;poZ| z-whKjdGpQU6>m~JuMD7`+Jm?7^?&LFvp0-pYHlASa`GO2jcm znz)EP!rLd|5t6=K$72E3cCF!JOF*SLfhztY74Gfe#9nY0I;(eQkCp=_}SCj?%1@mK2SjF`(v>de$L$R~0 zpIRxr)jgBP8=$NT1!}#(gSk5423PoX)Rg4pRRNgZxmd@USk>G6C;e5k<`ctJv)AW2 z>K46yfP6L(zMDh@_ZiYg;dafkca=rLTU3b5`JeI0AY#>U__J-S73XEr@Z?p<{qFlB z^oR;ikf~;$Z!G(VUk~B49SfscBCpE*6LrG}_^=;~hfBWy`}6q${y>@}xaJPGr5@k! z^guNJ>`Vhf88B)-1u-7H^4Gn+H6*JJu{R7CA-7aJZud8y%K6Uo^;mXNwNA6}hFfmx zwEX-8yDX2&n9aOypW@%$jb;i30pss*m$NOEV!NkAp}YzUhZBO2yys@1b-)zPSa}^- z0PNdU4*|_K{94sE^xxQI_7$}Zr{-l;OJgChvETWa7OvgnvKvQdk}!!{z5QDNgUx{4 za-Y@#u2j3+e5e6`VQr-y{~+*%pkTLYwexcOQ!qL>IP7Q2x+ctQ09U!u6)u8jmc+%d zRgkN*-D_)vYzhP;y`_Aa_R2*cc`s4!$w1oO%?$)kI^O{?9+MZb!mi))E%lq>$A29U zI_m0pK(V(-`v|f@uMfRD>}%do;yDyQfZ#%%gf(UBC(al;aBq9#o}pqDyPv5L`g!95 zP8nB58FUnzJ(2a{1|tw-9)f6@dK7~?%83d_spS^#PBinHkknhhA}#MXipEQXqK^Qn z;z7WS4m~0#zg)eX#2D;<0IE|bX-*-1$zT#vQc{<7lo0qvIJ=I0-6l6HFE7EZ!M^tQ z`!1l@dKx-QoDP%vzHAtuc$^eS5Y%Mi52=>f9(bYX_@^4DxgwfF%!-!;d^*sKJz}3l1t-xMiK_s^37UZvWq2arisMbPMRh z;0=Z$jlc{)#aimkME~eaCZkFx8?@-0S;>7KhiYE3?y#F=XlcOKl-#EHyd1pQP)jT@ zZH%&*q!-abOITz?HK(j%$4?|uRgZPJY}U5=AflaG#hBz8LJM=bVEANY`K=KXQX}-e zEE$d7_R~R(5!<1q?=%ytdCcnSYH=|O@sugbVx_(k;2co5(9;>H$)-W-{fz7_hgpG# znp(e;8wE}!B7&acyWJF2QA$ZPAY3u$0?ZnSiHV7!A?5#X=w-P4m63!SnVlLd(Iy_5 z$%lQXh!FU7d4@@sJp5BKjVOJ!GZ2>p&J#vaQC|?S>+|mL;Gn#+l7^JjbmQhVZkT*? zOA8P*0O$*5a~*$z(n3r|_Gf8n3``U5;0TFTc?k{IS<@69PYAQL!*MOxXCFKy6p(s?ew5yQ=Ql%TFV|^slJTo~v)=%vwAV*m_ClR3pw$t;TD{UCB_*+30=wN^2Z& zOzC<1<<}rgpbDd=c5-rpVFrOYYUDBvd{QCp{{ri_N4qod+_$@h0qCpTM(-5{Q zV#|KR=NOEa#f9ExF(SAk!%Cv{F{L7ZGCxoDa^hLOvYs)1+Q}6j>^xu@b#pGzbXC;G zd?%QBdwYqwAZvDMt7i4z+n9h%?x!!N(6Xl@g3xjar{Qj>Mfs}+c)^XnisK0V3@?hGAG=S- z%~P{aA8m|-h$k>Gq~|DU1;-#R?hk~+z+~bk6%^$FG+yKz2m(3U80hGEADWl&ZFv(*0q;pdl^nXEV#y@1LNW~iz;;v&FF1U$^BiO>#vvR<`gcX1@< zNN46$Bt@0~h*I@w80JF1|!Y@Of)}>^Gj_($GBZ z4r=P0oSZo3Wk8|K`(Re!2cW&HJ#f{5%;}wWS?c2BZ_MG1)y1G{&GXsFI zcgl*2gJWYrYY%L?@!3}m>S}9`T~1g80V$SLY$6>LV72x21<8ODI|V|dpXM;G^I$LE z)d4E(5HnLlrAf!q)RX{--gDS_Yka^q1RURwM*v~M0Ttsl@P`2&3b!{mF?{LfQ8JSH zz0z9R+HrAl^!ywg%8uCAvoc>=)fb8Dj*U9E)bgv>Npk@g{7fqU6aaRZ*lew?>&RZC zBaQhyyDuxR@;tq~cB%Q|*J**{jQIblhx9$hH(470mK;XxFk`Z-JzO7-XNeHp_ZlD9 z>AUvyGXX^^07yI2L+^(M2W8&RVpMV8ad`gXia;V-TaYtzfS&ZC4L-dE+@9z4(6bU; z*%2h94BTS`-MCw&Je zBPuG&2ZRHGiMdXNAzB+Yn+ZTq!HZNz20TC(Z4HfIlamQwpJ~7kl^M0neB~M9(62>B z4hNBv1%VEAfHz(YEhdxtU8aY?i8tSzhLJDi1gI5BKS?R?!mJzpuicdQ3uhy+D29fI z&2EDw;JrR2CgSg;6ga{oBRNF-J78mxl^3FYj!eXKB!j;kkk-*D(+#O800G`4vf!V$ zJPC1Ry{Sk^JKxCUhf^Wm7L2~!ob3YjPEX!5M=yXCPo(El$i*)L+$sis0_K_rxalL) zeh#Jc1&zOV*p%@}vDz_;fz(Eh5Y{UO!Au5q3sp5Q6dr|*QWgHgoa`J;N#;-2Jsj&Ue>O?Nib(To{QxFm@B>> zmgHA|kXUm~;q!S~RC%~2(jQznQ1nPS=%h_>4HMS0#xtNRvjQL%^PB&NsH+Z(YWv#M zP$S)qbV-YVgoG%PN{2Lvl$4YpFmyLkBB7)T(k0!XV4xr&T>=tdLt)j4x^r4hEg+EW}sHCfAnfT-@?GN=}#rXTqTbLZ%0Q+=jvxjMVLk4 zu^Axqzgu>GP0p5<=ng#qbEe~oVbR1V zSPntI<{x{{%#CQra?sC*6iyZ-h2c}j@e?M#qwXbo5K37FeREqvw*0P0nRcCT*jC4@ z_HbJ9*8D!RwfKF~WHE&4kSuH35{D{SSq8V)2_I zMi4DQuTQp`B?)06d};O;qVFWYJ;CBToed!Y8Wj(i*=k&y))B7_h*9~9EF}-u76fbRdE9%m@XfloxrB9V5efoRnOkw z)avt&E#vfdEYhBs#CWT?tkbciyy7cN+;Zn>gl=1Pb70@QpOLb*xz-V!E9~+3c)J$jwu$l$)KwVmbkn6=BO$h=8$)#(nt)$22H>SkLog z5MlmAL9D~$YX-jKYK7Esu}B}2SuL+1QQ=4JWmpSXUJCo(4SC>J({ZihBaxf()Xy8< zjNNlfpD@SmEtpYq2})5nlowDg1~+ljnHbG;?|L4ZUJ-dHj)#luDlS6lLb%X_`*;<(Uqefij#h5|jays=MHReaJv9nkM1)>b4_MxwJ#kq=K3V-6Ns zsqA#2sF)v;M40Ul9?*kD)0-(Yg{; zcz356i`=Ei&Eusn9B{6ou*cMNlWottpkkgcM6>qlR3=JmWVkC&1ok3i)`jO{OBuw% zkVxb=26|jPT;Y+t)`xR(UMF?VmALP zw@)c@f0i(&+=z`urkrcxlhsx<>yS))^2poBEo+REOQMbyV(wOkdHMN6^a{RyyQjg~ zp}AsKmm?bIbT4J%IYIna&ENaX>cWC>uFRf!F0hHjvwj}2h z66)J8PY2G;?M8Rba^8(pPX6RT>NY9)7SofMf_D!oMrr;c)l zPS-1SX-9Z-h8yB7DEewc?%E7H?NuzfX*n8@mbx*iskSTQl_0lht1xCOI}v?_UpwX z_2!!~!-V5HQ#>EZ!ow4qoBHm&_UdYAkaXFv6enKqLrS__D=s{_P?GRG4%_eqh6J55nEdH+7ez-6YstFPSByE1;a>quSX$x;TRmVDWqNl$ zM#E}1h~|eaNKt0KZ!~(i{GfwWsuRZF17Q!%3k;1O>tCcgHhXSfplvy7Klzp!)| zLL%2bBwloD%wN5mNw58Ky>w?rZI{|<1j|Dow7_KNuv{u0VU}tsAQ^ZjGm|ZX8Od1W zgDfs8%GC+lAs!4jmiqF3-?&pv_$<^h=Tkv8`Rt*hbt6QFLDBBk3BAAY6VUIg4=!ND zV!;vqx`5KhM`nLd_P(*%Ems}dl;4uCj-<)d-Si^{qeT{3dL28$wTW*sYvl1UvtB_^ zOFtx22ue$g@TqJv_lYftXekGLbE^6diC?6d^Gr*oc_pxz{NI~gqF@T)dt0k-Up@Nz z2%G-%s_?eZ_g{;_Nh1%MGAxlkt|jI>yHIfhq+`8FSsbN;)1M4#ru=%*P2srwI(l zqj({mFz~fUeR9YO-L71`zrWw~O8z!_oSTU{PB}ttPb6;S&@XwkVb@myrS%m5;|#;Q9k}nx+V?0ZD0T+l5>Ye^3Oh#pwAj*(^|tTNkn$|0kS2fW(&DgC z=3TAAB%*46%VIE!#I~rpIr}Jlkz4Nnn)1 ziX&sMgz1~Q=QnD*=ni7}F%JeMyd~1lkx8E-_`iX!qJ_`Y<>JMQ^VpQNn_t^ljxR)a zl>D6Sz_ugX_zY0q?WX8q&`vGfm}(8UOi~w$C+_aL4 zlFkJF4rrz1RObeu@+#(~3&v{~9q-}cht z*fH2!ak`kcFO-6bHYn$=SZ>7kX<1h~W_TW2vl4RcMZxj#_{tV-LcLVcH+V5YdEFx|sdTdQe75Ru* z*pXzn8%Ow$Gc~9LpM)F_V6U44>mr_vtNo^#tlfnVMTsZud+ zf#KF*M1p|Pxf^?X0aCwTpgxc%D5XeHs)bFr7f*<^taJZ>4PAehn4N%t;4meD`THpn z`RJvhrHY&r;rtDprp$&1vx>dT4kT`J7H?TpsB_3y<)4%IL@J%=ZQ?gw@O$Tci2~z` z8-=%m_vmm!NahzAFTKkyjGhcqO>c~PevzVWQ}S_VYPaM{>iYDxt$88=O|s&5-D}d9 zh=t}-Dw*z*&JeJ6b6tUX&W_7c3cgDgP0qzCFyOoV<%W{oV&nPKmfSM+NOywU@|LZJWL!h?mU z%wI%j*%ri!Vju>qP;{5}=vl|mG0dMD?}xzQo!QdTlA206oadKgdtc#e!}e;DgGr)B zw;Tucd?Q61Z42g7n#L+3mw@`n5ld*KTF&!;ab%!p>im zPG;xmCvFUKWCA`mc$xjktrkWO3cbE#m%> z9R30R8D~#kCqOJ9?7(=8_X+2|vs4BN5aDY8Yv1~T)aZH^6&{XDtKG;*O^qw2Tx+F% z)z>LIJ-vvY27G2Zf zAFwthxV=YTSUppPdgid@Q~)YDjFk*zE2}TD{++jCoqZWd=z(L$$H#+%F&}-8@NM^M z^Osl0p}-ZPVfKp^o2T^P;E<0&*9iEiZ7j~^PHY{sF%{`ZBAp$|;VZdF<4&yrV1cKjRgFDph08!Stc`Z-A<%mV?D^q;LQ2K)u&7b zh%M>0y4~{)pZGia33+_!ngJaoSfY@<_%<@pVOL3R_aEe}=O3G&_mKW&QlD#7@$C8v zYfROy5*Jtx&9AQQxyZXGidSjI;<6j5`_`$+Dd12ff4~d0DjWD?kPBk0`3L6^y|FfD zCaIa%G6C7NXaA=DXb>}Hv$V_R{G`0}ok3JJQ04F^*6I2GUTo;yMS|!T7C7i!jy{ie zDRV0k+PbnN)oL~rag5{h|86OXi>D5iE0dlKo=Lt=U-6^B0LRMLnaV}}scW)qj}>dA zMJKgMhbO?*=x318>lBLM^h4<{r%Cqdk9Hf4cI#KBjrLz307;`v*$wOZVK?j?C4HoE zOivz&zJZgCL#A#RX`x;${}+3|Dxho#w(c*O?Ks2&jJE9)?P1xuvWDL#&7sP%S!OYk zc&tUL5G3#|_oK_O=f8U~T6Bvo&bw=p>Kv^@%MKv<{9>6SUuJrm?)(0EdGITEDk9D+ zmP+t}gPXezJctko#Bc=&Tw1`m2pD*O4BH}A6Be(ezL~4JNMZIlV<~mQ2907n4m7K-tyuQgQRkXtp6uDF?Yf*NbCGKf&DhM)4ft<|iMPhHh=)Y*7eUAY~j_ zyyc6VbW^ITBbwZ=TrE*Yl8g_33;&?pR^Zh&+9cCm>}$HZAHisGZ+90|hCtE#2n6t9 z5L`poW?*2jhXn=c^NNal_wHSjb7x~`zw;*RqKwS*bgi4Ko12d>-81v?Io$vD89LVP z(~XUdva&KjHo*YwAG>iEAi{+Bc=~-zN=nMS^SY7AEn@0!>Z6}Pqon^w)bnv-A}ZYT zr|tzYNl71&@D>$u>4KAP$Zo#^rg&&uLCUyMZ5p`n)^s8xyL)@B?o?M*t*@`U%(RqJ zk8XgggN6v%$(E?QBJSmBZm1u!`e6G+f z9znry!N=+8b&x90tyRg-R4E6Bb-28`zn~jPh3rHJCnx2%WqRc>Ot3HwYQ)Umn0bAf ziwifLVD-rKRYa*`Jqa{OhOhnh+uN^z4DRD0{0Dp^YHDf+$97K~V{=HwroVcRpN}tZ zlD$od)@IS^YwPQl7DlRF<^o(pS;(@-aa444{5H;7Tns=pT`!g)^(bcsiT3$nBKuVU zi|i59q!}E-#N$bKa(!{{1_sJEK?fL)#q)gf&fl%|5Opc~Q=NoFCM$So%w8XUb1SK7 zNX0L+X+H=w;EL`ZgF~7Iw=r(hP*qefr!X#WF8!>V51Gl{?08l5{D0EAF%$HG`iG-mMyN09$=>B z!uZ$e(O&*uq1`ln-ft+klTDN?b`7g+qSWdwTlxnF{eJ)Y>3i>;GtY030EN85s3UJZ zKiEEx@c~!;Ty1SFJTbdyXIo$$thR%~?Bkb8Df)nw$KEO`Di&qq_4insyrGD5eqw1J zw1fKNhbGdR5pA>-!i{otDB+)IQtE{}mkbbE)I3lc`~it95;hZ_JmgXq%V7Ysmwd<= zS*iXBRI=R$;65?b3t(hm1456znPo6GKHk44a+_pK_Toh<(dC0iuQ)5~5BM)$Km@S* z(RIu$DatdD(S19>q*649*u?l0I!P!jxcZ5dj7&sWIPZ(HHuH;SPX@gX#=L`V6jms_ zFSbMJ`O8~dTb-SXr^>a5P$CkUksrzbTGPrTA5B`h(*Dwt@#Ad#YM__b!RTmW-N@g4 zA`0W4@qsG+$SbOiDn}=TNeyn?23H+QrS5)2EO_4WRNy?Ak{+;iPp5I~SCq$RD{+l( zw2%{sdJ?=GJ8%k4NgLD6m%surKYy+;K@LUk;_gxML1qzChk4GShC}2lVvE0H>EPf1 z?7|A=808=OgHaaDx4$&qcf5D+JNSrxnVNcTf?Y3Ka)JJ$Y{6_YK?;sB)Ckv_cXoEB z6oct2k;4F?^Mcir>DISzjt&l}yv;oz3ex_4Wr+jFs`_qkGn#a$Qky~Dawo}uG`t`7 zXYoNQo9d>4(*HWx1wj4uiI6g%>-1$_UIHzbi#+VRpufl@_aGx|i+LDtHNFN* zaf}z^g4J8|dXh>Z%Ky2LG;pAcr?_9xCXc?zudEbS39gSb>}^Fw;VXGh>?x%nUV2`t^2RpV=t1MFS4pTI z^x@Qf$bPbVw(&!;=)Op8PPhmP-;#sHM#RMZ0vo{uZq-d`!KXzB)F78Z_aK)HCdf&uDgSc~wM znEHmJUfaK88>h_cvOZ`nEDX_FF3+PS9Lc^!!XV1Y(Sa0dLEEWJ%fXydz^KXwfa=ll z{NcS?TJQz&bS$Z;h*+|M?fxbqaDp zj_aJ>FT&a&Zeey2S8%RmUtC%eSqg~(B1tRQGu4much3NoGWPGw7(Z^F&!Ot`cvsZ6 zV3<+L3*0H~I8s)y6b|FPs6TbrtA>9Sjl+Y}5dzwUy%Y=W@7|ru9Hq{)>gnlGFh|XI z0JvL~XK>|11DI%jmdy*vr`3Jb)FjcUi|j<~65dyzCXrdn~cxs6G7-^HJl^tt}T?8g1sl z&H?{}4WrzI6bWwbmHp4=eJM2ijMARhza8!YS;b|#iE6CiocTa9UckqL{QCNzA4_!r z;q%+9{hYD;xCia@;X*s+3iMVp+Sg^Jr3##a8Vkm90mtI!NQEQwhJj`R@(T8uuH|Jr z(~wG`68_8E`WB+vCUb$E`X!j*vCtbAo&q%7+0}KEARH-0S`*Ow7_+P33k;f}P^4w? zwC3^2T<_6#bsl{4mGW=w(|J`Oc|4oO8>f3L%=5B}GLee&29nSx!~1&>S9`6u{SD(D zrLc-&U>sd2VHwSv3HW(iT^{@rSt*(*bdkeaovGU(v9*p)zLwp`!N+$^wS*dAm9R04 zp1ceg2r6Ffc*V-Ev}rnpEcuE???`~VKp1pf?r|MKpXq)ETg7|MgaJC++?2C z8CtOFSc3QfOrFVAv2&y@Sus&j!F0s7%HKk=j8;JEx!L*d{pe@E)r=z~0|?UBm!4I+Y2Eht(BeIdDzC6;qYKo?C>q<*9>z;zYP z7rik!I4ImUxFY7gF)m`=dybatBf%sTCZM#4cKjTbM_|Y)%oHsMkQhn5{P2_=pkmE* zD11bY67hp{Y&=hkY1Vib8T;5_Ji8p1V=Di(kZ1I!u4}%apE}r_e6@lCnoFqa`I61S`smO1LnREf`t;29L7%_<~ zrQ>`Zz+(6h3qWGUB854{B_!N?3iUA!NOe9fE|~0K_y|*!^yJF;Vl7>ZBPh1Dun3|H zt>9L~X%$YM&z_aCO~Gbg_^g4DKm-SDUz0y3`y>5iYnbgQ$6ASEwOXY;->=|k+J4HX zTL|H)sxNjE=BXS2`_w`tjk&y|{ zG#XB6=T1E(pgO?|`X7aX1LnsQPQwWPTzu&_jcFmH4H(m0?6R`b($eb51=dzo)m4cT zpJv{2-^{#=UsK*XmncSvJ8tYdM%+8el<;}+rMWJ1BSwaFw_&=FaAXCxPjbEwP>baiKCy6Moy zoWPt)UHkSe#Pw*`)@%cgKC4$i78UIY#Qa3aJi*+fJqALvY0vg0X*Lu?iX1X!&?ERy zt7&zEbt2tO+lIxOU()x|c=@HdcdX<&y zjfswq0ot!<=413;*95XmUQRii4nKlayOsSN$!09@q%)-sE%E#@# zMqFlsB=}wD9q`bUd9X@{&=Of!E$FyMWhVZj^yoNOeP_hQ!C^ifAz>%^%^89p`1vop zFXF%LdSvEDaAz5mtbkm)X6C?lTUwlJ+~Ol5$e%&Q$IqYX-W1)VjlJu=`DGt?ghV7H z&A(Y&UcPkc3MT@8Gbmc`-wT0B41f96L^zYshc;N=W~Y=KPezOrR&gibPIx5t6PR4U zY9gfE;NfKLoE;@iVECTA5aV$lSR@IFE_!;vGL% zlK@ToBnSs73MaTJO2hc3p zB};+hv|kZUY%Zt=M(VXk`L)K%8gDZA2%1%_tk^EuC{MOA{|x<>N-xpZvXv++XsxD( zj76$PS@da~gIE)&_y~4(w7WVxyROBt3v~DNT?>tX&>D4}*7R#f{gL=T5@V4I!SQ1n ziO#m?URGMzT<_r2VGuK~&sZl?AQkK{`qS{DkGIO8uA3ds=MWzEtn6$jIKR5QPUIeK z2wHms$K@k+=lDR-wi-29U=~^C3)Fgho^z;SZ`0P+4&vPb3LCtXK!0g94P(&8NRNc* zhOtMO3$qW2JUZ{WB2hN1lY_zmQW&oxv(j|@!h}S5W3ZFS&A-ip0%?&*vvDZicigX+ zE!k^iX!7=~-S?-C_Jp0UJkv7pCwe|BiGeOn*xChz#l<7N=Z9m@>N$GDR?>{ug)a7SuOJ24*u1aP&gX3yn+r&SQE zSFW_IcOG)FMR)D!1Iv=`jIc+hh`EJ9Jk1XflGJeh@q^0BO0W}n`5lIq-F-d2ObxBC zO6jPhp^kaOFJ#{8WMpSo^aUq8?SvINq zp}_~-Vw1@7ZGUF+^b*I}T)wiUW0x_aK4jI58pdbqPZAhJUj;1vYaD&@s_w^Yhkfdc zmj{x0_{VM(2&@gt5M3ZTP`JO3ijJPjVeALs9jqsyAlUo{@ZRpytHCC6i=}8PbtCfK z-Z$Ap>4F-ns&hv%)EBG<9RfkkN=rxA>bf)kEeCJo z9b;s>mE}$9ig{6-2WSO($e7UapF)WhKcT;=pxG+?DA%^QKhgTbewpUe{z05GAZG%Dp+8uTP;jx!BR(_LV1OIx3 zS#uG+0ISctL01bbb#fPND?$4-#*kSLnYSp~!j9_)T(*=W@%R!rYIP2C=}govacD;? z_{r$KxQudfLaex=8auu8T#QH~taEPX1ZmdxJw z+DXb5eA4lEZpb_zR$Tc9Zrzu8n0Z01Q@kwi)ODgbHEP%Jg{AfHu`~8zOp31d_V(FX zRwL>n9&5a}2MI$GI#0@nJ#FmR%!O=^fuqWzxzd<%kM-}iL8?!B(dUxrhvgx~))avU zk5y<7l9rPqNw1jpE0O!tY#gDU8%d!u`|E{0)JQub-qgKeDAnvZq2f^TYB%%IMc+dx(Yk|O>t59d;-R;-~oXC?$snW2$Ff4d-X^C=nlzEI?@Z1 zx-uS)B2MHd-pH$n&_|ZW3*;K#xeZd)7l6|J6yO~dgV)n`vO>vnfno|K+MT$hM(JB6Yi-~k9 zw33qqq}=^S&AYXl15BfnH;~;Qd$mMpPSf6VD&x=`-1oGZdmvN)pXocbl&}b8#?|2- zQ(+UT37W`K!r!acZwX2~7%UWZurZra^%}>{v0=FdcbRkQHVlD(e_qqO0zOfG6iOYs zeBJRsrW@LGoEWSNwu`O{#dR;L=x-phQt#S+-jy(Vel5|tz?q7`yDET+;3N!~!=Vmj zpI@bZ8~FE&d^c`{T{s9XSmKYLpf=cWSM{AP*jRKfQ{5!1Ikhq!-C#QsCDp-cUcvgQ zExfHv`T~BnZzAVNm2xXmInk<~#`Rl6mMzDB-?5t)x!%J_A$>b5PTB!NO;HNlWww)d z9tueGtp)cg1xJ|?9J{lAa6_|0|Mm8l&{Rt{QhY)Aco~X+&t;BmqJErE|Lf?~kb8S9 zG8Udq(+$y$Jo3uM+K%LM%2|g#live2Jf*AI#Kg6>xB(Z~euD$%N4mamGx)7u=jCice>zq3B!?t&-$96R4U3+f~c#A?P)dr6Gxv2(V zZ9ah!F2v_Odh~g6(nL@1qNHR=c2p;D$)P6&2{!cGV1?6yZaQIeK1W0Z-El=lMMC}i ziHXd|kEh4S@iEhEY;9qal=azef98Hll?J$|RXMO=bs^grHbGzzc2LU4pj9-i??*?2 zsOdy(6JJPjjA941KDb;RX!Z2bjo}^49M|tHQSYrT?X`zF5KRIg(IPvmiF2ea3MRXnYd^=WbiXiZs-vIE}>9j>+i;!o8$`>H`8^_xR(3h z{jyY{eu(qYqeJEg5kf@7m7T$3rMi7;@L~MWEW7q+k%19J$&N}-9v>lzpoP6L<(&isYT zz`0voS@{aINjA257<;41dU0`A^+2D){G6nLWD86`?T}9K#DF0@udk;;A90;eMxTJj z#;oljQy^%L^;A_=fhu~u4Pqf8V&YELD(6XwarRZ6_)<)e%=|f_@M)_a${;>uXZK&? zoD5VaU%+BN0Vm@~Ik7=+C7Emd{H426Nhup6o~N28Q0|N4i(%@xs6tgZ)qug-1`~TE zhV&`iUQH%g`3n>IgWARbbfG*7}12mG*zl$3yJFpLTQ8cWVZ=gzT)*@DL?5=g>B zZ{EPl?a{APU=8%~$p|DA5f{ffuc>g65lUzJH4s~kuBr*W#*tFTw51i%6DAa0%zE$q zPJZWUIO4)8!ZAI9R_mb_ zCf1K5=(5B(liBJe!Ab{k%qSC{noKZZfkYx}+hKjO!CEz8;V_#a=`R zSKM30zJc|pQwEbHYf>cz{E*r6;aDG*#m;|K^>Wt8*5n&OT=?+s@uNJ9Vgc(Zjbke=FaHL#gBiya{r|84Mlbqh>5LO;1b=M3$mnshXli7U-kJlJ5K} zmi6#uqZ8@n+G`=9yw@Zq^1ri325B4Lx@C0R*%m3H9UUw{z@lewt9AFT<@p*<39|P1 zO3$_TKfeaDsDz%Koh2oa6{>3j!3eZ?hhbRm;A#g@Wo#BK0)=%uI%L}6q0b|Pkj1;m zm>8v{sqQQ45`O@w7MS2@YHHeQ#I0o@2an9Pg>U|=g}OgteK+=Ik=d52L&@Ko`SkRs z>1@WS93(VrkPa_ATg@8Gwf!o?I^K7~+BDxwTtMP(IkFDkP_X+cB%BK3 zlZ^ExF_E{TH379h0e=1Y7?LbNZQZS8&>Za+R-@f6!QkL&O^g;!Ly z16e1`p?Hd@7p?BIuASt{v3anRyuF$1b(KKGETpLbhdq*2v7x8wVed+gko3-<^#y}( z*QiETY1_*KX1&_38kxP#!BOtleFR;nj?lR$FAQ5{_{CC=68ihE>kdT@#5qh**en~> zIXg4Tr0y|BKb0x*ZXHuDSNe-LUdps+&#R3UqzjJyn+3~Z5df-fN(qp(^`POkOE3nGos zh=e6>9{Ik(gm`rApsAtS@dVntTOZyx>?xW&IB9RkxW~pX_TgPqGSFs|Nx!x8o}rQ$ z$5XjH{}sb1;i#v$FOr>E{3hj=mRSNGWQr2#<2Db=d+ND6Raw%9<|4JHV`8GAee8Kw zT&(mu!ZyF=xqy0pON&4BMlv4zWqQ1&rR(9~oR}$Mje8~z|MN^Oy}c+;mpsM_$ZE7x znVg(4G#B_Xr91@WCA`MU^dPn>F(w-R%(QJz-#L_uoD6_wx-O7%wHHv3pwc z_oM1jvY$eR(kYf3F%S&&K422L2xA(k-0%gZrfAyvWT&UKx4PKbcK7!3PoKzo3(B3( zuP?r1<3qdOmF0TY83rkN!@SPl*4JS+-qh3t zIDGtR<+d;_85>(KF4&osmsjsK-D3VzGjMQmdBLgRhYgZEM{ueD&LaEz_2`_=hxg$T;gGYpoxm$p zTZyl%tO7;b0yNSTpZDkT zv+HJ8h6abIsIf>)!}*IB^@{f+@eOa$iYPQZr=HW}Yhor4Z5z+AXhJ-5luszQSQ|c<7e-BF^-yZz@OBWMEMm;do!{ED5{iypCX802m6SRG1OKPDn zx3;#ow;|ZqElp0qKXxwvJidC=yLQJQJ*>K@+!-_7u}?F(IjNzHOVyFvKuI@4N1DMf z2k^N5gxKgCmtF~nzStj;tFC31_$23@#mYr!^y$|}lW(L?pGKRYQZ^)(Xev+q6^h_6 zvrszmSuhCx-ddf2^yYlCMu>18yRP>*0?=g(?Vv=Q4_AC7 zNjygXNRT8UV4`J6Mfr~>s|42lF4XC%@=^$5oE=((?5r%-&!0YVac~Jja3&Pt5SO5S z{rYT}B|S{K+o)F-7q_*9Kb9Rbc$oUPjEk6ji+%-_M&~p1GyGvmZ={;3;*~8*ar6h{ z8TC7+^(A2mlYC@kAL+ zrR`lo;VWRT=xy*B<{Oq=8S;U0seu_JTT`!xE&&e$d@KxGo#;NE0T4I%;3s&qCVu@q z`QZ4+-B!w_Uk`p-*k9L6_wmub{W`CJ?b0P0cc_SN-=2miesX+r`O9SHyzI@}x8rh* zY;6yH0o1N}_O(e;K{NJp*$OImD3SF<>^==z;7G_c!X&a9$@Sm1jk=?S^Evq#P@a>? zES(%g#En8j$>h|=<3ucWQaUOGva`g>jTDko7-GIlia!lk4Z^RU+5Cpu4Zia737Y~>81a;WfxtxzHLAdwru+Qd+{INz;YRs2 zm5FZy|DNJvXjgf?G!G}l)jkq!C&c+BIpmkq*&n8^B)xvF7FT|1Rq{5RmVzVYMNV6E zYB;a*)vM4F-fr|8vzFyD{w&5ZIyK#34H$^Iz4ay6n-t9opwEqTt>#F6IsB(lV8!PL zN|S{;gNXuzQpdsZl2kZKExOd_-Ts%P-8$5MHNL#4sEq&8U|J-&A#ZQrTtXt3S!}9= z)N#ADqH=J*-oxvh4dGHfoKk)N@K~9&BZ%W=dZ*0LzeAmdR{ic5eGk$>x6P0hWLD&) z?))pn^dnu?1r#rAGT|Bm5_icaBuzdl(ve9vU?!B(AI7)9$Lw!ugLT9^1I#=yRZ`eSTYstW) z^NEqiEx`%FF#^8n2rZl!8*=VwlG#=T0u;`FF3?bMSK1H7F<3`SXqj<1SCyu_7C~7c zLQ{lqV@^wg#puz&hbc4MFazre_88n8?6A;?h`#P_P;(|^#Hi6TF)@*m&E3j1AkK%q zDVc~@Bnh$P=hH1CXoqif$^=uUfryh${``4MU|fWRgjf!) z7=kF0_J@f*xfNEs8$`!&y@#=x@K@LP##yO^=ei=S-T?MdsgVO-M7?1k zJ2m6p1-qBgQ9WBKDnq&=ttV#IZkUQzx4@(f8mBcHB-u~X%7OUoM2^dfNT~sV#M$U8 zU#6$u__M;eOj?@$(G?&p?NQUZ9Ns5vX8v2(Zqs>-&};})B5V5;hhI%-d zpMmVaf1zZFnZ1Jb=y5GeQSpx9BgnzD`$b_bJ8tLw3$%P(tLy9YSeFE^q^RDwF;Dm# z-UlElMWn7i1&+!gh0rPZT*91jw!+0BToC867&kYb-WcDuzf)R920jHgU!&(5IeU>P zoVAiB^b8C-Iy#vnw0+`9o=X^H%*?IOHEqz_N_Bb8O($C z%i+vi^5SFhFFLjE{jjx+Bmc6#Qakthij&!g)96h)9CQ&QA~dPe0}Z69i2)q~Wd^8i z6RlinfQn@Ne&C}WLq?*swF5ZAH@@Y<4pnM0S0R{=uor@IRQ*r@tBHb=uY`w_lT%pL zwC&;Jk!D5iV0Tea6&vz{6`cRcf%BOxLS!juIWs#OIfQEKjL}TaKuV^#MV~=bd{7Ip z$#U9Fui|M}=Rf4;;AlTiOiIFZezMXPc>vmgr)9Y$CKx|lX}Pp<3u^!q1daBCxi;;a zH-m?8Hs`UXY8`3HZru*8iHm*=UWceP%pzIS0B=f*Awyu#4HMcmS=JQGJo!sCq1vI; z!mRL4o^EURKZj^`lCbrHH==`Zf=1o)gg)x1i>cpu12;sHxHVYy=5S$Aaj{rWK88G) zG>g0<2tkzzTD_-|szh4U>C|FfDG#0h_~lDk7H!Rwt9j>QDTT%J_=dl}eIoxG`ufp{ zJWtEPA86OR*jUp_iw+1hf|s361Tio)WIbp^$;3o7MiX9kaNxC!?cmCKe(5XzK+_Q> z7NLx~g{hp^#(3gPQ>PW{t*utK{dK*ZkyAFS=oMm}4a(6?OQypmp}>LX6wJ)TJ>Y-n zO4kaB=?+19(<)cBnHRd*vk$StOwl_*xL<_*kSutW(Z~9Fcry z$3!Mo)>}pVYPif4tt^DJ#E|Cr(zFrF7m%RC0X@nRB}kvW2RyA_$vbbsh8xV4>L{8B z1;}8LRSHlVT&=$H9~MAEV{LLN&H60`E&>9pE)0{7<7APG3#!)?J$trOaX}l~i6}NB ztNr@o*DmhK!c58H@FPq%IXSc1!p7(6RqjiJKzf@~Y}YH)TvqyhO@#I{8luWHnQ--E zk#e^gNai#@?4)ts1ln0ketz(yzOZoh4V;(wrnWAASlEm&6{g>=N(}M}2}MYe7#Qj4 zrO{vS;cI$Owk&oG)N6PQMQokQMVlV?+SF4)JomDL*0bxtTvRZW3l+dy6F_(BM&=+( znbAkZi6y=`s;Y~PiF4Xb$-jt4!YpvR$rJ49GY&#|^BWs8d0!F%>#3roq}@iqGZ(h= zD3Q~TBWxBoX2Y@Vb4QEvqOVk=2qEf2){NPh^kXitKME9i40whkOQY6{A!;;Mr}J7p zVtLzic7`zikWk_tB6}E%$s3cfQF;y%K*<>xV#J_0^) zz?zzQbYx^ZtE()_#qOS-$1uuXNRZD32Ly1~1@pcBE~R;63TwfJHG;t(`}?Jjg9k|D zk0ifI40ha));y-YddpjjE`a(E{-Q&#O4wDN-rW-OwB2#^(Ppib4cDMLzZg6eVK_Ux z<`ib{kRTpO{8+?jf8;d#k;j!zKL})m;;<_px6#WIw-0W=yT;OS3**^U&vZHOtsIwM z+M2@NgG1%j6(xIsC1xaq*O1yR0x8M4%=;Em zLC#nKL8VsEP&Rm3+z@uq-FTWgc+{tD8qV5u)Ba~F`fG<_&N}G}8m$hf!0b|(4%yJR zCt+jmdL*Yjg6QW$y3t|L7oJaSkPP*3t$$@h7NntYa#2!egC>?W=Uq(Wte|ahKAhGi zC96x1%)`$GoPcGe2QNksgM+WTyXePzPr+(^3LBr-X0fKGX0|3`#{~>6WMyUHI1#S# zy%X5zwfP0eiRKWwGtQ+=02302R3jWJY8sl~5x=)t4s++Z#b$JJ3m;Mkdyz0nKYj4% z5Bg)3%+{DtOj4Go+_LU?sZxyf@>>~rjw6bqaB}|-Tm_p_~9}=S^ zhnGeCuO$tNro~ZDU(YC^m{l{&eae5;f(Ur#&)M)kNK?Knzj`>yuOPauotU#odY|Du zDpz&Bv3=*=^L8|%v9VzzN1^@Z$uJ?hBqQT9jH;Zyp1CNIivoJY%c_mhQebiVC~S|@ zFj|t^oHs-daM{0HD7i~;gTiAUzknvg(ryMc& z!OvLwOA^s*4&6+U3v3z$90>hpJa8F!CH=o3Y5nc10m5WT9S%2o5uJ`U9uq0DDj|#* zM#CwO&s=6X=Qt>o6IsQkfw7VFU*){lplRr?-lv^-yUacPMKS!FSZ|&lxK)lLLXdhb z8Ju7BAq9(7ap6VYQ<+W_ZBj?>$ltOMe{b9%Y@0J2r4ukrret|8hM5RH+#5XLXrB03 zkT&6~6s-@R{ic6ww;L!C6nugPh~*JRmE}X4;0*ldR|qEv;L2Le45(*+e{l^P)DAnA zRbOa0`kYDyL;@yGGLZT|6YN}~@;X_UQI`L4`Z2}gpGeQ(dC?#OUnJf6ehxn7rc{^u z;=J}N1}r*{j@zvjwggu1*}wIf3akHvN01qwryqCZNNu0!Ja_{aSwx7r6M$bSXDzFO zt$;(8-1Fx}L6a*M&*!2p8-0p;!CLwx?t=rFa^*tc2}+12A=e~nh~xQlp`k5naZ-4Q z-)^%HJ}VsH{?C^PL?VrO@UfUN>Ed{NquwL*KSO<1Cv?4Tyv(e)<@N(&9UYT4fnM~( z=%jw%P1b98TUs%Nk^s_s z!K|b@(eO;&oLT61Sbu+i8ovQl12LKKf)9<1+`*YM@T|bP^dI<1WplMKkx34}VAzKH zE6!IPlk6;QA}=(3nb_}3%+o``@d9q2lp9>Tk8O*D5YHT{z*;|QAuGe3B8TZa&^uuB#Nu4EKUDCftvLmX*-4`cGnEPFALyL8Fk3BkOZ8aR-R>7TzGt z2BUq<4J62GSeTfu27{IvFi&`9$-E1fCMf@2kH1pRhUZaCo6X$ow_7}OiN3H^LbUqW zy#$WA%Nz>JEMa?$FE)ODyac@sbP$d0&&9;WDT~?zd;9vJeeR5O1(Fab&JOX6EZysMZ@SX(An^q7^jh{lz0c%E6O>LnzAJ++4-2-DT@J65`yK(*C zTTjTw`odpiOCh66*adY$OZadjNQq+v{RoKIpB=MJCgJcGG}00+DB9R8{>fAZkaDpT z24^t)d*ZiVitZJ|!XS9u0BoToB)}4Iq4u*`$noc?DSt2!oR)@VgPiPu>8N;_E3kk+ zdYzpfX~4J;Qu;o7K}`tX$1V>2yT7lMBBoZkVx${IP94QCmeuwpXBosD-{&Rz%cZHQ zsofw~;=OR;wTa$EFOl|GVQstU|~H8mwAFJH!Mh{IWqjg1Yjy94YYr!c|@3~W0g zvaE~z^K87#8OZz_8frk^{0Ek5$}-CL?2R38{g2)E5ZHZXW#cv|2sPA>(0VD2FdQ4K z`^YL7!eTA1PHg%dJFmF7uiMM|CPR%1j_OmTyz8PPmvB3jLcgaq++1 zBFZwFc!f4DvuF2T-&~}(0Xrqz9Wm|+snoI+Ai&@kmvmamfjyn{$=^F~>GP?@50sc= zQ!7x15PM|{C|QTNBl9BAhH>cX6oc)h@xa+37qRh+`q5)r}U5HjZV2!V#A>} zJZCn$Et=S(mYF1jd*P~Ts5Dq~0nB2aZhI|W{~!k(!MHvSb!~=OreLoRf!4mhb^ist z)u*dKS%y>!@A>YiOJDsxKoWNN0o~S}f*)_7dv#-`s33>{R>6DG2n@xM!mCur;mlR- zV1-%*Q)>th|J!lvb`O02!t*7^i8l>_4wKaGD=^J1HQeehap7opSLQ*-TpQc z1R*=|-5f@swBPM%So}TisK4FW+O0*K3C64S?@XpJVn{fRR|36bobv22;rAiDtNl{I ztN;D0?RPz7Lp^(B=HTK&jnvAPAUYOPCxJD_5_r0k@bCw_TWRXo;}>5Q^#G2)*LuX| z>6CkfZg78}?g7mcLJH)M2DCIEOD`3Pjh`aT4;7(0e(>M~EQx-BMfbJ?Pz_@d^XD;N z{GR^$>#>*bqhcyiF|l{5;(m+$WUbY0XW!c7fcO0F-Oc+-HM@-?0b77Y!J#t$mdyj2 zN1tGj&!BxV0dZb~-J>|yFWQ^7HeiY0yyKx8UD)@j#uVT~CM5;ufI-)M1#~6Qv!BAP zy}I_ph!DLZ592RDCIAw|xBXmJ{5)a`fUJd%wdVY>$BX~aBgS0%Nz6({UWz+%M@eWI zH7PFq+_;u7>o;6Tqiry+TKU=06LiRyo1Pxkty+$c%fFAn)frB00FiWcb+2AUJU@r_ zusbvdr`T$X4itdGltGD4p8WpxJ@9w-*VE;S)4_^!Ko`0G3hcq`mjicb0(am!Db{mW z+MXWV`|YK!t_}niI0iiTVNX0e`~Le32r8CLK>?ONJ`MHt-T(r_G=Fn_9ffHH+zFlo zw1w;V>E*9S#LuyTv84SaaNi*CK72Xg$tS%FBBI|5fu{)oNvdjUh7*$noc(0#reVi-JXKQI3WW zZ7QoP4Z-9<}U2y>N{>2<2vVP1lZ95BTAmk~Ti;zK>o)P^4>4;zhY$Xbs`miLx_`sQv-is0 zt58OS$X-z)m6E+z*`u=Ojaya{*+NMfk-cX|C=%H-BP4rszt>mK@BP33j^lZb=Xf&i z`~H4D*ErAfIxpt!Ur^&HpC5t*(9^JE*MRSKhQ^ic71qA|$$Cs?D!>=GbWu?L_)n9V zC{QD}CKAsUGz@QxE;OoOtK&w}Ae($h*2;_iAl6+{m??^rGsN;2shC5;EkUgTS4~*t zbvF`=GBY`Utw4qyDSe2jjV|}?L$+^ubSBA395#B5?0uc#jbxoXUVYl9oG3p53wLxG zPqwr$FRSo$UVQZ1&Ks%$+4Bk&K6L@I#!r>Zok*4PG&G^uMck>j<_y_eN#w*=(o-s#2X?^l!)L*$1hUpf+ zSFP487?f$iM6)3XMeo}TjLkc*b@}RjMaLU zG&J~cFAZRh8!)>T?a_*N76$514wi4vUNWl2WlX?hAir&FPfthbz70?INSiS6p1y%W zaZ2v5kC=mxW|#ec7&F;6OZOz;U2q>%Zf%bcn?qQ5Jpm{ zzR%4?pQ4A;Y7k%#J&2_)xW!-lON2OMM*lq_?B-An)@?AdJ^=2PL#6gycMjGWsjFLm z;DqN$3LFh*9P4Rlkdk6us$B~z7Z%dh`07?wU(Z(U1tKsE(2|{aL#(DB6wZTK5s75v z)MxCmU?~^q@z|t;$p*e*y`ET3*dMH@FZ0KoK-CV2VcDAW-`e2$`n8ZtGP`4Lm+H38 zCI^pT7QnE(n`J4Akd{r#9erUk;Aqa|1DpBB8%@=;VdWgYq}AUL4|?YQBMS`0G-bbDSowofNo< z1AkXn+kVOXcvz@!vBTE?yLZCqCJ5}g+~8;)@qSSQh5-LLMTVv_m9**}~qWG-%2!(ivD-P&yd^vC$>XD6GS-+GEI{CuJsw zWzbR_uh_^dSHpiSEj@DKf0Y&@m|b43Q{gwTcb1j4z~D>{uKOA3n%h`yvGPYP@<-rm zZSe1II3?Z}IoEkVL1nn&<vJK0$ z27;xd_EZeSvCLA;U*v$oo)20#1hqE#WJx4}tMK>p+gC6}4$@HVcefNX!rlgaEB*`N zZ$1=A0_Tq>Fcv+DIYxFH?q&{v03HUS0fRalbGLix9ZY#c^noB1m_x?OrbG1OOiL>W zE!kx}8Xu@u0@?&T5;DjFOP8nz$rz*|!r^c?0}9zXVg7>san=hcWx?Bu)>mN}jvF*F z&&{Y^EE;;}U^(X^L+OE&|KTW1yj)uV<<~xh@I>BTx<^8Md>+T!Kh3HFXt{x%_5VJu zx8)B!1_M6>D_C6phMv-$Z8kWzbqGer;u8{dx2DN#Z9e|#T zD7YCGGy!(E+e~ulsLkm})xaR7+I9}?&~XwudxbO@_$cOBh#R`Hh}glBE7<^&NQzTE zbViY0rg#eb4SNv{0e^6GUa&(Ir?DO!kogNp0qZ9i#J2khi#LHfRzBO%5|VpY2*C`0 zzDo+)Or)h0{s=C7zD+zu;b77q`F90uU~jV}6^XybVZc2i8V}w!16PEhW6Zkz3Be-; zk(HYAZ4jrL-fK7*__%TB8nVVd1G5$;Z+Tiu@1eu_h+Z7}XpZ6X>e+uOuvZ^g)WoHF zWSaiR@jh*e#!Fgy3)dK`)_WF^_Gi9iE+ z;`$Qll8wN4aA%_^`Qs}l!=bixs<&7=g@jxR42<;dbySu)>?VO6K^-{_g)98Dv>O*$?=^V`!OU*~(CYR#3tw16UeZzCXd1~sf2E_jc=sRON z@fxmX*=OvP-sc{n1Pf{OWs~Wy>j{WSh?I_@uYfm~Zd6|*T=XIjrT+iTci>Tr(5E)* zU;V7T2IKb80@7SIeRp4~*k+el2RGfMIC>Q);KAMznobz!P=?;y+k;{BjcdOp|1XT> zWI30rQ%Iq88T_P0k-`Qfs)~1%e-YjCl&3j0P06+xEeX+>`^23=w0{M-+HMNhDe#}| z=;@hLUv>df^;Yo%bbzVB!4Orb?pe!sJ{t!AK*pkuA-k97Jg+D5i9SdQ|5Wkb_m~I> z5kd!C3ASw=s;tUBKRSwb!%>2-8ZcUW`MxIIJ6gVDX{Mr*!ZEXb)J{E#j*$}9|(DH ztQ8U=CIY?!$P(a7$ZYZu6>QnW6IFp#WywRIthzv-1=E?(MR)=|4#sf8K}EAP*DR0f z+)oo5M-WrzD+c1AgK2@Tn+#XkEN}7Gs3T8Q?1~NBwgu<;&<~$qwm<&S5qWjVJ-zC2 zd{Y0jv-M}Xln~q~pNSr37lEb!21tXE(J=%JLH$xbS=l;Z1X?KMePFT62S`RKPC_MxD~wILn$Z5znA^Nj(^4nbLMJry{7h41 zi&v{Az-N*=_+S7~XsZf$p5k1cx)rzHa-Zp!nn0whw!qxH?wVlb=j=5yt^TpGF&M&z(7XAU8*mwYgZ7EHYi_o-gxD)24B-I4 zmFMKlPtjHeADr4M?T@w zXdQFnRQT(tK8^#nJuYuG3ybUnJyfS=Gi~J&%#(w&$@`)rX9yiYxXV0UH8e4q45#J= zU7bfD{DH+ck4GmaCXh`xV@+ldbf8Sm4WvRnOMgevzr7X9J5sGm+4}2DLP%fJbb5_- zhWTuFN24$^LjpkesBxYy=0l;%QKwPhLz6HZ9(m= zN{RjAc!cWiJQ%}swT7p~M!RqLyPTnJxosy=@-z`%ZPwJX+?s#r=~PU_1&iu0vEeUu zA~?_@mcwj+18VsAE@xOhe&O(yG;75f_tQIj_aAw=WJ*jP_yhz1W7YwSy0PJ!j+ha^ zT!RAGAxuCAh(LEOEigSd4<lA;W!GnRkbSlT)!^37{@viQ292>euWfu1Ewxc(vi zu}PWO3c{q%app158Hn;EPk^ zhk*YTn~kFSsfJr@$xMY%6wbo>0>Fu2n7=CLVY(D(qop44tnJScF9h}%^^b3T>!~i* zqR7FX?xR|tyIR2Rhaez4*g#-SG<*}l`}X9*BN-I5%(eEAM8e~S%@MzL@VQZ(-^NgC)f#)!j zu?M?k`|aK~&F4K@BoDP=CKGjK$!4;9TbcXL&bRjKN243UoKJ#{=Ku0+g(~4PmtQ(T zZJNYCh83l!k+^@z>-*swuDHCx^H6QgaWfh0q!a0 zt(DIY`RzVs823IdE3f(V@L=JUm3+^db-Gi$f zrDbK?ySptpw?T850T2zOLFf_zyP*W9^XIS>Ie;c^0mj(dGfeG}^{`V@rr_`dbdJ0G z7HAfwrKO=B7lxiZX$O}2WFGx9^3T13dx*CI7}!U{s_)>H^C!G|8l1BFxTFG7q2zv# zbsO0hN^^`7e*H z4v+`)u^Pei7&flC`&BFAA8}K%eTjv=RaQbay=pk zgqe^ItfeC@0U6IQ=Vy33?O|gMl%)c-$M=b^=l(Pobzdv*$-f-N8+0%(xw)#$6D%eu zexF$@mV-wgN|hNcKG)j``lF-gr8Qj9s;*w9U;P)`K+FM@REW?sV?o18O0P>o{)=I~ z!e-))Zj@5zwmKo3E3b!^%Ycv_GAY1iO|aNY9z462Oe`(W+k_im78<<}UV*WEQMT_a_7h!sCs9}BU9$HuSD9L(I z^(ri1auIwAG*vAy5g{XWZQg{FbW398A=sqn*?B0o2$F0GL(DW4(sGISVHqVuyfUUe z>C7SCmB0^?8zXh9HGB=AQsdj_i=he)pmTA*ZT!dQzulY-S)^VeJ?O{jAc)9ACQRST(UMEn#Sqi^cam5$pd_4BB>k$ zc=#>RXf@n-aUQLob42DPk9Ssvaojp#_jGwPk0cT2rb{Rmwi@Nt8A23~i>N5Ul2qb@ zb6>w{>c5=a8jPQg7LmTEYpJsFjM31@6!==t$SvX!RgRdRUH`7HAj{x%*S3%{cFH!3CruSG_nvAvr$|G2>p|S6dJ#y)#GGA%p zqtF-oO$6);+#!VqhK4>Hzi!wzYuw?;G%%-Qy8K9iQNv65cL+X-c1UGDPd@X|+TQx? z?eTT$kqcr5d~u66U^$a@bEb_s^{j;T0TsI zKk7A<%fiO`o{nLaanZLo`BQo60-d0zI>-s808qToOo5a<7dO!^V<)BtdtG`@ZmqM> zY@XUP7Sf0RS#pWL3ZoHrXA~>LqPrev3G?Y>cX8pikR2f}djvql`8;l`R}zw0V*t$VOYpPRLODj&DP zBieaVGF+-Te6FU`TK$Xtr?|*>l1bsruN>Az$Bt94qtyV48k5j~2T_ekI24Bz0nN8#c)>^A>CK4~JRX}Y_vJuwkR zYCLsxbj-!p`b=Kmr55c!sgH8u??4ID5{^ImB+mGPXo8@PK)N0_DI^HSM7b#Nys`1f zcqEO@?2lW*t&$g&IjhSFXxruAtVQzIl_!(GSd1mQwns6mMfPJnsC|AVW=-$g>J!`> zwP=WIe4&&>W=~aI8TTWM1 z=u8#Ou|pu(k|OUhRTuAGqOevCu)1_Z*nRP~jmbT+oKUS$+Z9l~ zCKC}>;za+7MhhGKd7hFY4Fbk4iin4RLK<(LtA>l_hcQ(VN6C=*-lfPR@iocL?+q{xJTC)_kVLkgEScr?b74%6CtF zRQGr&m?HjNp?q%cjjxRMM4T!Wum9woQz`PbUm0LyaSi+9WF>^oZFk}cs`5CpIgeXR z&`jZt9VQ#otmH0g=DEs-t&k*5&pG?&wqN1|SW9|Ju#0W%)jO#D7m3)L5 z%k%Hwzu(DL?PIpyz+S(;PFau>SlaPhRSe2&oE>urBZpEVqSoD06CvDltNzqG6-Gg3 zgB>2=)YYRA2mnXue)J1dG7)WceO#NsAOIH97^?N{B+8}5Upb18<^66D`?%Cirj`Hh zubZAYz0-iPzkSthr|b%!-H^x!HZqm;fo11VlxYd=gPOwMG8GD&Thh{ZS-y;|fQd*D2rd%2 zKnkm53N)4^9uNNtzWMFu>y9dWV5WplDv8wKpF*ZwZ66=ycKY5c`e)2_r zuV6NjzpspdNttZ@D(D4E^)@gz6#@?_Vy2k zmYH{|TP94+oYp*g3@Pu#@YcRk!5_zGd?t=-ke!)L@F--FWv`%$@{!%+b1+Z7*m9G( z%kN$~!^9>E8wnc-@?U_a|(o zH670COERHkG7N^Cb+BTakNd#|BoZJP0WwhX{&{Ho#{iG+7X{hIMCn8A#(fMZ%AuJl zZ9Z1*UL)#T3iy3t8DP_SU$TyE0D@kZ4yQTp!=!O{9-oK{td+hQL|G6DC0lP7xLIAs# zo3Xo1kau2*rCxX#4lfvx7=vE(tJ_$rau|81;UeJ&VyD!D9qDk!I_9ONWkVy)^ zZyf5}hNqY<|GoF;QIzA@n0-9KR_`%0%r?!KnHJi)NSvN6HSR|8)Ou- zuDO=d2=7jVf?OLgW5k6-%quDpZMVjR#u6>47 z3SO(_H}7e~g{<7iYyG$wpdtW6_^X|ApbIER53CtDC@dVlX#foa1m*-GqnlPmI1EX< zj6)PdOU_@&5^@HPoywY+Y-j6rUKdg;5ps?Mz2h!FS-w!&!dZc&j@j)4`#R&NN7+R` zHz*7OTXYOsl-wz>>jb%m2G3Ht0G|KX_pi6kf+_Sf5XLNZ)3d{|oyJMTQEOMcEU3N2 zeuUOsU(gOCHc%p5-&#AM2$HK8$GPg@MOyn%#Oo*XY7lw+7emS{qMsqto=4ly>*?e9 z$5stEtGU^_X3J`O`v1sG%-i+wPMkGjBPx4+`ZLA znS&~}bAzs71!^LGW`YU)s3!5fsci~xoG@u~ewB)rN+RP2lJ2#XTvG4rjMHU4Wei+H zFQ+JlK+5#+@)$R8Dq73FkQLZWWnb4clVWms-c1pGCB-w=K{l|3Ee0OPYWpn3il;s) z31?Q);pYmbN6XZrUIuCD=SFcen-eINWMpMl3wU*hHu-oIB!l3;YTL8L=~2S&YZ|CC z2K>%@H)3DDL}qjmTfGk-ptb|4QQ{uN^IPCk*%*KY7rqt3`)KRCw{JDmq#nbW1KbUq zF~AaJ5NCi(gRP`n&?&-)r0<35@0;{(cpGO37Zb_KtjnJL-Y-z| z0eL;Qoo@R74-2?o8wgXlbmVrjA?<@YXoe&bC6w0l&*~#CQK8YiA|fuZVRi@?Ty~cx z8!%AVLU8Z|`U*tul=X1C;YF%Ovs8h}CaBQ2pv{8IX;f~{xDLLcm1iqSxm6>l`0H+J zqO>+Y5XY2b&4y5BWmd1Qrf=ThKIEK=E5Y|Nm-^`xT+ugrThG9|&d`kxQVf>X^D^3? zkQRNdOtKd$^Ffr;vt%qg<;zTDtlf=)IJ2{}VBThEZ0rYZ3}BN$%>kwg?n=-Qvr0b! zmxVRt_<;t~gBTji*;&{i)4d8AqA{33&PNhU9lf@8;Go|$M;9QS&JQT0P<$DQ|8cxaonZEM27E(f7d#^ zAn;mtR941W2RtHMHEPCSM*eW61ft!WAux53s+p{QoClj`L`D10a*@hV*^56_B;-U< za$zUG`sf-m>btydV9?ZB+1#_vh6Mkp^)>B3dL%?zk3IUk+JOPvd0(^C}TT^oawOj-zIIp1vVx%zBI{;gX}!XPmm0c|6j8ZQV{H;rift zG+qSd;eec3-rOFqn5#Fq(jeR!z%IZuC)|&<8h`-DlS|v9nh%-;DIs4^qY$AP8N~v z3z($aq`G#;#3ZIKfITop_|XqO>X@(Z3kn1;U4oDP=*^8dVH&i`zDAl{TeeOmz3&J$Dc#cKL;OLlpzs4G24wO75&agKBHIdJ>rrHBqK! zG4C|Z9_V-pD5;2R+6fKydnC8)d?G$EdwP&l^tbzUPLVnfo?p|%?6PF#Y(ew_IFrI> zlMbmF_TcRSjZ+DhZ*XKmJPTXk+(9bG!}zs1LC^peRFbnu0v?I^u6~KC%@EE8sHhuY z`vV*gF(@~7$}P}QQJ=+OL`pQr0IG!k{(fLx+Aqku{_22ZN6vgDQsKr8qMM_hzigo3 z1$y^9nEN@ylIL3|-Q60gm0*Jt7a((^`@tIlLBVTD6b!-vPCZ;aSfV1amN1C-dDT!8 zaK(4nPifJ{2gZwt|O`)Uom=_$UGnNVuu3phm_b33k5giR5yEXW{v(EHoXe{8H``d!RfY zgnpEqiv6nM=TXNClc9fkYpRG=^(Zd0gXjEtJgU2TdcQkDf#c#RMDvDvP>1`BK#T)H zUpET@_bn75ftE&h_UAjYF+#k5XGL!L5Cqz`-&Ag6b~EdE&Iy+e*nXxF@9%GJpdX>6 zOf-`&<6W!s+_e7Qogx9~FM)iJR{@}pa8M1IQZe6TcUc6L61Zz2ke>iO0IvX?oFml3 z)n~zFXXr`p0q9g+rg6J*x9jbPFI&p^skpjsfQSJ;5pNLM_#Gdt4*;Mbg8h7Vh#fwN z!cXAnkQ2wdzc4@lf_LskmA^%&<>zO#zm!ir=!SwSQQ(8q#Mq?BLG5J$x-&^~z;Ck* zK+dE5TdWq~PL#{pVsZj9rY&Gl?h*@Tx!dT`sUxu}E&R&30vBevn(k-{+c4-uOgnw z`)ZCwoP0At4Ay#X^00Ttaq-zf8+OlrtkNZso`r@**@m74HuaCBjCam*o5Y>}q;vNqPAW z=<#`yk`$&(F0m;Bp)(4H#$ZPUzxM3qS^&TS*IfV`puoM)^d@_?CW8de+Cm%2E(i$J z!e}2Tl`M$h!Demtm3jru>69Cz-d9v`>Ziezw!d}I-pnT2*|a3aF)Mocaw=~q0Pfv5ii2gHIuf3e7RSYU&gok|L~R&}I1A4zRVEKP3kNwpeCq=?~&g zcpokz!t^k1s2T2q^uJIGE1_?-#TmOb`Ikw4l+Hgrfm1t=*9PmNmD}a*g<7@G4@oEB zbTcfeJisCz6A(8av=t7w_~t1H40kga=pN6o!(SPBazwS%>a=l@|qCbDbGZ zuvx+UJIwpt8H00q<0?QIOObOTp!hE-RZ-|Zcm+2N0q`_i%o8tL5eqi66vKNU>`U^{ zP{Z{dlm7IWTFIfuf?9JrhpCcl|Yiy%^ps?dW0Rv2DBd-g1J^YE;n!cB%(14^<$VX4VaJ$SYF zwK&++ytmG600Yu=d7A$$_+<6yp2gj}ev=f>oG*wJ`1{@+c#9Gr1A00;_rE--e*rs> zYk7y^8#L2_#y1fBp73|Y_%QTqmS89AwZ+$l zN_t}U`Y}w3C&F4pq0TEQu%V$A6plH&Fu|g_-4@BHEN3l<+$$w_d^Yd6H0cS}9e-++ z^jM)m3?nZU7jfs8FH+vCsqgj&C<_bz66a}}?Ox2+oPND5o=76_eJ{UTW0$po(g+#T z-)%=eeoIT5ba|(1N@3}k$X}vM(d87F_-D|V>O9~5ASpc3@Z^vF4`?l~UQKG1+b8Hk zc@!S^{(Yhevg7O5*E-`ui#~cDaSlcEka?HQjTd97(<2#?H_*GFWJmqI6a`Zd<(;0{ zybskCiaG|{dtt!^1-;20oYk~xzw;gK?E&XQ+rH{85264dig2%b&@>4Z=NT2HWm&ZQ zSv5K5@mrG9Aktg<%%J9*qU{&ip%G%m*eZ@JCQ<5XPAs|$E+HAM<=TP|c~!ip^rzZC z=@UQI^e0oEhV5_V$c=#NisEn9%BWzBp8N&Np*k`;Ok(gM`LG$dHI=0YwTpZFCMuUxva=RL`5B z9fJ#hn-cY<*`8R;?o=PQ7&mwz4~MXi%Q%Aw@5GI)cGWqhLZ@Sx3|iWkv-+E_AD$mL zGfh5>Z``klUJc#sh&fzm#}xgmjVUL^>Gc!!rd(p?aZ@CgqGQAaAV!KCi`p&T86svW zR|-q9X5R}Y3I`;&lLXaP!a&E6MrMI~o+bLi?*lP4c5xmd= z)VAYLQFD5uS&aYCEOq%-IbmOv%dM3JLn)&(r|*(#TH1|sMw~`NNYO?@o|~iMMYIFO3!7i+_XU!R>|%5tz?H{6iL<}9wuL#(ibUvScZow zx`ENHJpO4*nN>p-8!UAC2%6hu)ug^JXativ;HTLyCBIg(Dn;3OwhfM{dA6W`CPU{KVNs%&@U6zo=vIIhET|(m zR7I~|s}!aGRd9MIR6_qIlL*!dX0`lxLYkKIz1DOqr9W0tGBZoN&1+zTCd1CwmZKMp z!(o{k@40i7^SdO1A7;e*5QW1%n=%4Z&F*rHI4Rbu)`Yr0U zwFu%^N?{SW>kN|4rm+7FVr?-#ECUj8nvj_}9F>&Txp&X7{5Pl(A>Rfm8-S?=u&=BJL`^bd>R;}-TARNXrdxsF1z3>W|KKv@#MYY zOa=$QG7XQH=|U_-pqWeRfcOVxJ0R~VxKOiyR$LoiFC+_$IU zVt^=^WEtLx9R;mYOc^I77vl>yyQ!d_=bXxW48n}G5#dD3yygH90Bb4{-Pm=hVWm5? zXl3CN-6dlUn6kKk&mI<-K#fOpFcWdfT&#%XP!6QhFXK~E)Ng)=<)!s&%_MJ{;&rQB z=YX*j>?%;!W=?EtB|i?`~}X*FK)B0E7-jl&_lwbRagRbLy{h8COpQU0J%ef3i|X`H46f8 z2ko}3H2+MDjga>5z#M-RT7CdS!<*C+p?rYmWW@h*=eb@spq#hrI~Op`_5&vR<)I zwE9@mD5P?>FfZ>A)GRGY1ylIi9Bpl#lS9;iIY3bbKD(7f?0$QkZCD}DoOjfsu$PvX zaSHczL8u4wLZv1Reu*^d2?Cs9fYj)oK2#-i`$JC$yh{i2rbGGhroS}%tBG{f^Dd$$ z0RFqvlRZp)B1$#ltph>cm+!WZv<&@pemMhnK5pT0Pl`nLwBRU-Zi%%f0s`b)yn*RD zM9~0B12BByser2kRt%wgVDtuXx6b|hu^3QhixB2Azuk1Ow_gD*$M8D*pA$w{`tAw( zojoeR_opmWRYT8b1@VfxsUblm%bRkrC+-x(Yny%e3P1s>0m+2)Bt=s$Y*bxf%c{eh z^}zB$Y7W3cK=;?CSG4jF8&GqoB@3?5L+gzcBYMJ*mwqHBCc-iduq}q|kRv~ahHR~s z1pt?YOAB>}Ua|S-P%>ucdwg4P*P$CeVVseCzBll|#Gw?HHdUznY%MR66%0vR2u$z5 zI}Q1LMr-B$`b2>(v9mWcHOo-wn^1cbe@iP#$7ZW2Sm#?=x3ofrYkHQFP5FKd4kqK# zC?UZW0u6j5y`5{UP(8xF1;IXAIPPx#(3e?)BQJuDpL74cX@b1_nH$Y@gTq-|TD=5y z8O=JPa9lQD3duN4Ij8(I^r%KX#JzX_en{L(U=&jD!FLc|->fDw{#i}*r%1d@SS;j^ z>zLW5gZ5tW=?CXAVzca3qe9}8Y-^@T@ZYKAY;NoieM~*(geIhPs%lAa8gdO|FZjiQ zPEV<%m0}y{mP8sb=-i6enf4{q#=SMP$Y6z~8 z)^y)W@R{NAE2k-12uH|cC~e}>3K6&5Q32&RQA`&e1+T!rK;2j$yMaHdzgjfMTrQLT z#B*_!jqma_gF2dTzR!+Rs$B=|_}PM9x8uJm;N|?Q{xa7te`Qq5Sn|tz}YqY)*b90{$5)JJF75JWZTvy7h8RIgkIcth&LN9RHBpY~dX} zC>a36P;yt7=^@u=Ff+pcS1`;xY^f$HEIW&hGAJ8Jh5{h`SLQj$;irIynSIFOEsvB- zv>6UX|EeJ>tUskXN&(J!<;h6p7GpP|s1CsN|NG@!iNCY?6_C@wr8Kt8U20Z>}TcBz~tJ(3RD*i=qswrRl4V%MI z9L+B~DV4`VzZ{WvpvS^%Vm4WMik5ht?G9Nfj}MJ=v$Dizre+oJ!lB;tjnST83Q znf&)_&`%5`ri;aCRsz`@oVCOKlvQrkBJpF-@SGrOoc?}Ck@vD6ze)s@500pxJ5(zU z+6Wziyc0C~iLor_FD@6&^9K%T9!MqUvb=Aq73dxGmV$8y7og8YjvP zZlc}P2V3Py2^xz2IGrz4*=;T>58CY;A&zOUoIQm#38{$wT%LU$WsrCE z^j1umeZHw1-In3M_wlQA(u-I#I8D)7q7wgR@F{Jd z6IW2xdw=>JFBm>ILcc4Wr4E#U_txSa(8WPW4KEDFkcK=r_!nAKR1OQ?QM%@|v|wbn zIP>Q(Ow^ls^CM>nu++-7d!tUHrS^GFLr{l~x7kDeDGfLQSQ|7$$0G?PA<*|kF~IRb zI))Ja{=MzamNquv z9_9+dEMQJVM4)l|rT5?gJvDVpI}kmTIpjc4EDx9P<|t(MKxu}^mId5q5d8q`bo|g{ zd~c;Amit%B0~!egUjAEZ`{m^Y*z|NIL3p3ib8pS8KMRHg0NAB^qR*6d4QfXXb#+nM zDa*5E&PAZr9h#wok>w0o@AC5U!ACfSdNT8uoqMbZX`KGWmFt9+JAo1&KFcjV6^{a2 zc61PgG_{O&K4?L|Oxct__pPrcWa+W(sVuz=^wvi2KL53FlYHlO8bAonb_I zr24Ez@h&pmW>mxmGr*mL9ZoC3z{9}c3g-%|TcES2=haV>pSFFxybfSqU*y8tWdVaa zs0GH2REoNBUch*mATpK>nG$NOWI0kV{7ru@!R;8q<~Vp>K}C~rTZ zX7*7+xAtGW=W1FWIcVQ&ukardzkLyTsHjKsC18|``=K0tec?^9mSqF$mY z3_7-d{%lt7{IVFug2^3_Nluw+_^R~U%R{)?PiG0DkH z?iTRueP=+alM)|qC3|vPK}o3@+yU3f0ewfi%eC$0l#je7LSxyWl4#Cx@C zm#37mK-dW9t~G|i5!A}2GwVDDJAYEr)4z6HQ4JQM2gx&R1gNn4DbyWtBaSDEO|}{a zMODOutk@`bxuT)2UW7?6sOM~92JgkfX)4(MGX1J+I`YGKNw+m2O9`El>G2LX_v)}Gf* z+hJG-Do3ydnS&DP>p3*ge!xSnk8Xe|-7^kN{>wIvW1oD9ZS2gUs@YEj+RGzR)7BWUzb<3sz~Sr6gu16+F+)qh&CzP;*w#dFce+SI5t3A zqB;zI9Z(N?0+Kgx5s^esPag-DETm%=P9x?%&R9q?!$L9Pf-j>^>D@bbnjVU}%&2_5 z>6M)}XxIx>6$DLm^!Xp8AqmZ9ucnD;%PZ1>L{UfQ;@iNo_M-7PJZ2NKJMj96yx*|0T-9BNv*Ndn@f@ZPg&SD?6$zAPswMu zwJ79uf*?OiGG=TOb|F3tRd{2{DJRo94&uli^s^JfC6Rw$#!xNrC+io?=SOfJ&9*$H z6Y%y5Isi07hf>jHE%(bPHaRgFKmQLBBF3&AZW7OKk{FYrZo-H- zI4!fSI{MigA|Y|)wM}zM_!PCH3%`m)v$*2)y2F3pMn$D%FB?Kvo-l~$b|eyOovyM> zYv2~ZO`~vn^R?nMV-jXO(dW;sD~DI$KD$uOc*H9A)JJT$}kHEtk?E9e4(nH>(#}Z2ZYW3%WpR79v zp>?ayz5b^aT*19dD(z;4AJ-~aTY=Aji(CT&<7S{$Kxn)Jawm-=z;|Ih$=t%?qfyNc za8Fmn#JVW%zWg5+K-mDCK4AEeYv4pudoFxs<;??k9;90b(q#^)-qb`uXyTM(*kn7F zpyNXPD4<&ginSg_Sw3ol>j7wv04WI`p!|%`SD%0vRjbyM*WI%o6eHU|WFy6kytbDB`jJd%g7H#e4$AMK^KKCkzR3WTBEnG(-tcV0=Qo2( z`NlnB6Ufzr)>3k9#*FJrkrqJ(&(qUa6G^b3NA`v3U_pa{4C$v|<@1D_0$xYhQmty- zx`hz2i?aQqK2|b#*bvDC>6nVHot9FG2|u+x+$rYerAHtAEn0nq6kZ3%r)f1#Rq)gH}Dwh>UJa)ZQld5 zg5q)ZL>3gSRGRqcvUK)F9Yj=K0AD(?^W+&_Nd=bE}TQ_dJ z|M(F!L|NY|B+2c8lC(;X6ka-jraE$znuk(q6JR3$<7E>Hh*{Tf-t_wY_Elv29aw*P z@(2(Mpi7I`{LyE$0`-lmT+d5Lykdf{|M@JHGUOmGG11nL^r9$upa8D*XSk$YL-+M% z$WP~6fj)o&8ZF!gmlrlm6T@4l}lB~8%DH9L(qU}_S3NQPg!y-hXa$1 zO|t2Kn#NJ{pL*IX=Dr&fSfC&HEAv@l3Sfh; z4~B?2U#>wK7^cT*{`6BoMG0A#Vx1HW50%=Ybtmo}$QeM5iaGj*iCkAakE}rfyY9T; zDz^plIiT{NlfNNIrB^j|0LRy3a7E;~`yGO=D!6(Ik^X!yGM94u!$0=dYPpGDVGB&L@s$jEue~~jQ zDnCEJBqW4Ynwqn@;@1CC7`It%tn?u$ra*I)ln7jSA1&z2>|Ge106I*nzB<`3d3MId zhpk-x6w_!Mwq|6XzgL|fErWqV{^79OpSfCZlPV#Ji{3>Q6Wb-)NytzMBPYok z2K%SO*rhJTi9!T~jkX{Kn3kTBOY8`QHi1>D^wX#B$89wrMTlk)$*Qlfhf!C!+6i?B z<3MggTmrN>4Q4hI<9Du!_1}P8ghZFcbg@ahvdx;MTESXct~I)=rjS%T*uD=INN3PB zpXz$L<`6AGK3QPz1#snpHmW_6aW+~5HvEFCQFyDNZoSVwRI6xsYDYjd?h*H!ft>`; z`D^(m4RV5l4xoB~AvZ47V5^UFs@Nk<3FG6pQ0QASg`#zD3)J$Wkvy!V66wplZL3r& zZSScs{Z^`@{5--fOJF_FEnA>M(K_xri~@T5Ja!9LsUaD-@>M`(<9IZyA+S(`J8_pW z=-?jN+VTkr83W@9SqC;t@BE!KfiiV?2diG$&=AC66L1cDu(v@4!NV>G!Z0@wS*&<0 z{dj*tJ7=-Uetpfn_#;D1m9st}2o90haaljnYKpwVbM)-#bzl;Fe906uRKsl8bY@*^ zklbDkIxAuFBBE5)T$_7>AP3Kqj`b^SF9_`T; z^e43IBl3Y9qd~((F;g;A%0z{Ta4HOF?~)~)()C1|KD`r#RwP9@K@r|?cGRZQAqs_C z-U@Z)r;jCk%D%p`qfi=CUNvt;gM_&=j@N&!i9nJ(0c{SF@}7)fMA8W7f=a}!u*x*& z89q@>g@d86x}6Z(w*BciP7Lo#5wCNl;ApuEoC(n@nHk~EhaKooNL8%AzyY(OgmPY5Jo+kYo9;Kar(={yDc40s~J z5@xA{R6UY02O(7(LI3q{S)!V+1_5vQ<6$I}_H*u62z@zrm_dav)65cZIpDDeX|-(S zJ{w%^BUobutuIh69P;w)>}JrbLlW}a?2&j_Dawg`XbMUfWZx5ILPA2iqzg7h7R>8G zTm}*V4A6B+btw|ij%-HMe|7~jPVa|@N_&2Kuapd!ZX{6NxuK&oINaPErbQ<%`*f?L z!_I3ZcR%TT#$(2y&lR$%;?~`uL(YG96Fz(;B_&{>r9Xk(4LAk4E zVJe+cDvf>hYT*Q#G=uh}Ig1Npv#(@dq8j73w9tV3W|da~K)~93!>=pxVzNa7!;uY_ zZefwPb)eOLTj`p+c3!hq8o?F0SggszDfVILSMS_0BQo2x?ZE@Q?DTFEO7+XeBOhF% z_?=Pz(OP1=F0%$th&U87irIBk=bS|0Se^nlpo6`cP7l>`R@xaTmwyhX`7ajPf%dhD z`Hp*-5tjamGIAkih!6lwT27R_+wCSm?iw>i%?`Stc3o}Frmp!tEDxO8;Z=o<|H@@6 zgu`RSFcRoIPa<610xWA^je#y}bgEv4?b_ZY2XooE1)P7Z=V*8_3hgL!V&IJ{p6^U> zia#b}LKx{zFQO3*0s%&2J`hmlC-!22!k0R^iu?4WoGX6jl<2ul`2YXH3fA(8e_x36?+cw1yvH&?jDcJmw9qqn0k*u28mKi8ineLs)(I-9 z2wHzt+QT5Pl~d*CHF%JY$u=aFHsmr#AEBg5BJ?sqq4jHbuCku!oJK--BY?~nb38u< z@Tv^m7&SAC0hn+ct7nu7c~@vAOCiE_%D>uV-p4Z`i{!Qw(WgK8$LWJf|5`FIRIq65 zkvu_1wfeuG2XryjxUliFTq2w0{H|Wt%7-C7lg<$aQRB~6KWA%?)JOl{HxL1*Wt>6Q zA|}~OIqc6q-gHPoqZz;L&@gddf$)Rdo8sTi_lSy|r<(yG0euPh(46)dlv&5U7F1l- z581@GLy3{IhGzA^|VA!?~m>)eIT{25YTx#c}*G-h$o^U*nv`r69k)klG>!$Az_JrwAHvLZ!`xVy9mK{&)H`5l0}46*GXCdKkojFotMS<@#9#l$`$`p9>WeATSa&l$||N00QeO?e*PAplZUi zm}0V-e(JaIwEk#A-P~_0o1MxJoU}~5|AA>vXjQR`St8o}O3mKqFO~Ef8x(eBVJ4u_;a8)LZMczTVL0 zM!Uk6z-vB#>`V+`vL6qelkjD5o5)Wa`DUbua~$)k_e=|USLRSt7U0eZv~wW9!=<;@ z049VvI0M0$nOmML$Pl42bAB3~5cj1-PKahV4Vc zawvO`Q~WobAn}43ozwJ9p9Sg3-;kog#6^r*2)A_~Bw5eLuG`v63b6>$)hl&oCuMlA zR=qOuOX^-Hx&8b95cZW(Rjymxq<}O?moy4WOLrrwh=kHDASI1-cStuVD58K$SfqqB z0@B?gQqu9whrRbZzWDK-ALr~b4tp(F>$&GW=QXc@V=Fs7JTz1gLj2y|Po9h7C-+Gc z_XPhY=JcRC} z&}yR%hAX?gh^VUKb3Y+GpOtdbW}eJ>$b);tAQBxsxh9VEp6ahrf;_B&Um}+<}sK_orO18 z{PM58=!HVUFD7m(eZM5wCB=u2OSVV9BYI@c6=vcz-78U}?_>%+#e|}maV)i9l;P(7 zlutadaw`oCUOjZ;9wWZUwi(3al+$t^rV`*qjAl5CY~}57h$(&gF&~eN$Dxv`FX4rK zVg~p>a7K4)kK-V1;6 zO>*-k|DiARejsKCXV9Z^upi-L;nS45i)cPNUtdtISFx% zA22p3OR~vA?&SxU`zD}(*U81r7S%%3V3mZ}^N}1jAx*0JHSoH1&`Jixx<6`cxUnmDbOGfqenuwq|R9(j#SSdWar!5 z=Rw!xI7=h%S~m$_K_!%_Xm+@m>BTRGgZO%~ITic7J-fryQ$39RQ4aD>a(`&HdPJ=! zs$9i-Vn0~+l7z#-W{#?jw9fCX`tz6S#(N-W|MaEZr=sVYC~z7J*J!Y*%NVPGBv-|H zs>e!Gu1|P$d!;>|KK-h1fq~g6*ra!Kg~kkkcuLAP$*V{vial=fEYzG)ijJdThLeCB zpEk*OAISSY!nh^o^2~JYP$#U?FB==}K?!V!q*KE=_RrtRFf!*Rc0Z^9c1xTs30~_S zAY!U0X$h}=Qy(01(hU9u2Qro16FxZiU?UyY!++9)L;5)qfVd1>x)Id(&anK4?{Kj; zeOdP)$}@(r$ur-R^(51j3US`kD;0>E+U$T3)^#MwCcOZ#g>xRV>=@d3Mns5gnO=ccE(TW+WMAEx02^Y6vY>uPIn0exfe0UgJk z)|#A&O*9}d`+c7TT#NJVXTGN=2LSXjM?$=P*QVsyka%vun)|D?loX3lr3M$I-XIpW z)FLh{ufBfyEM*@mbv7@h*!4qU!S=-6XSrEZoJqIZ*VhH+*Eh^KAKPDt@7K*ooN&5OpQ@@Ey{ex8`$3M{Z480r_F9>u7a zQOMM~EM68G#rwr;1Q6mMP#HSQX*zn6x9I5VGIc<`3PC^4sxzt8&Z??oH7*K%xBL8VHP~!n?9piKJlnOepq}A zvZzX&zHv_nFlarp$npn+!7o(5_O8{`)~0vWxhH(WE6I}aapTG)AF|t1XgdR2*gfR7 zEBmIam1nZ}^>8T*AOxgn-GcgVeDcj0qEJ(ZtSArL$PfGDpSGkMqXz*0h~W^c|91O+APnwh>XYzsC>TJa5cL)S$Ajt1$!*a>^CIq zM2MNtS$Niu)(ecq6KSm-vjgw>Y)JQQl8#DN)+ih_Q_{&rm+6)ttrW#0i8u%P1u8%V%b&^`8Im|(yPdP~Fu>q}-ASZ<9_r4j}5$bFB09Nc0^hsiw9u7R

{7F|Mi84N_seDwLSm;?!YWRRq>h-gBkmh{g?5@kLo$L7ux@8pmpqSH2k2Ej zc31jg!+JjMfBaYql%)VR&(U4A>E`ldAfOkI;L8(wO#ibV&i;+#%sE+e4|%>jwD@_6 ziCa?V%ja(5aV7~@_3C1pi{2dn{UrpVAuyXXrV(}H_?B4iH4=D4s!7?e5xo)xJ+A%@ zQ{Bg=EdHQfnLZk>S)qMO3VXP@yrgWAARr?9o*gb9{>83$r3L>MVc5Wa%zSF}&MMZ2 z9_u&L)CemrpLfj7Z=ch}JZ_$0Du6uC*&>!-Arxn3-sD3w~QXMeYZHouItp8>fivC{|mcLQN1 zeA*4SH5jet2-I5HbiM_zqU>c#RK(#qdNqv8A6)9YA5qsaZL-yh)-q{r+l;|xHkoYh z5V3MZ(`fSFpY-TRNZbU!#&`M6C3#Q3D<2y^{$gp@WQ5?4YWlP9(NJkC9$1JgoCM(y zcP!`mYoHaMAySzKmu^~wZ6zMnhLmnNMU6v|00?P#q>peRk~x@ntNwidd{0GXb?F0v z@;;Ope;nNoBFj^7^#0z_QIHRnWM1c^wUG(R))sR8vExZe(qa=()hndaL9bp!2uTXy z@ZY0E@v7_us-3+0y!D_qfN4$BoO;3x_e@cL4)6AbL+Az zAR>(YF38$P6n=L-^-|XhteBYNxTeHVS4_3!h-D+BmbyV-a^fFliX=x{Ga{C1@4X<3Br- zjtdUNxfg$B+iJ*C5cD?M@jepACbPP8&JxNSm&5g@VVYOS7o?DN2z5GG5~{bo7?^$` z^QBPWt}oH;{3oWGGXMkWMK~(T^HXpkqc3*<#jKwt9sGPsgNVG)Cm&Rz$T+JV1QX@o zkmFa%{M`-Q_So!P^1E9r<(%==^lumOiQaN5AU{>e$qX+qVf9(ybvc=^eJC9{)A!9w zBi`t3zf>>A-j(m|$nH$SXpMJ_t*|0l<{0)}R>JQ{=-<3DS>h51eYo`>P370cOHC=w zmlB7o%VULvuF%(7vkG+UJ3W;7?`Ot|K-oguHM06+@^b(0O?k?H(EtKK1DX^tesQ~v z0HZ71YU7`Y+y~l?2;Kg*I-Dir2rw+b*8F!F+^^6N8&v~^@nyD^SdzkV^S3{2^t&J3 zc>muEBJjdoBz&6kR|b4leVRZ4d;t_hTfr1B-v_*_DBw?Dd{UE$vJ*Z?ZMRo~6i~RQ zynmI$)bWuS8rGlXhWq7@{eG1hpW4C78{j2X)u_KMtH26*ZkX6?H0TSOq}e}w;3)Ca z$Ol4GyQ30xQ--K!4xmI!$p`6rJS_>jHE;*n>3Dj>M+xu4>-l9WqMA+(d`cjI1eO8b zutbqZ+7B=j42W#TPrbAh1Nm!4~+oIR4-v{J!#^^4pl;PjSOb{HpPs zc@^xfL4XN}DL9i`M zdXb+$18_M8IL$?Z0FVwG`GHS!TUB)e6Iv7XbRLMY{R{UejC?>U-Fc~U=gt7|ei3R3 z0IEQaM&9}eB&It zh80Do6Quf;Osla8gcq3;P+e1LC@7eQJ*dJx^-mhv!n5lN6#d%kw~J&c=n9dDcnAXt zVO;#-RKmaN&mJfey26=k0#}!Xx^jR zzMKNf;kKKSFzW;Zv8{4T_)m&AsMhyA#|b3PMP^|FhDOIIg;KNvWE($n?U*-#wV_?$ zyKv$r>GB-pSWkdol>HIt;V0!S&#pSnx8l3#!Ocv?G_M`T;;PDM1&bMkAx+A}9gat3 zcG-pGDmCXoXy{Gp_euTXn=Mrq0#q^ThT`q zDbGz4F7$2Z?@Vf}h!qZNT?6cXRn@@|ag}NUW9P?r)Q9hF`T>EBX?6b?p<4JxpMa-r)S1Qu{m*;P4qaFns%rexSVpcsrQ}!cqO-c^v+IoaNbGNUo*tCuHcB&KK zU26}YN)qA5QWmnA2rVzwg5=SkyPsb&T3=;QvCXD7px)$hmV~9qRQB!NaS&;*_+Ka5 zq%A^6=FG|H7e3`ZAy5{GA6~_&#ae7l8Mkz_>(`j*Ll%5z^JV1$Sq2u;Fqic9l}6kV zCuC>wY@Twbwc5>cHXr;67c&m?M@l_KH|K%E0e}|xi@r`UXb&obn6idR=J2w1xP}}R ziDEQ85ZKlHof=-r`6Qo%!1tg%G%P^A_RgE+uy_`@he?^p@gw6D5@9!%=V?~`c-nDP z)6VHr1t?VcXX;^BSY`S8DTr5B_CPr9@?oG5;xZXkB^nmK{)Yv?7;EdYPN%_`adN)fbD6%SW+3!?P50pv% zeolQw=`Dgbz1ZgndKZVcN?Q_kC8S?^=|mSxTrHjJfMUs)=XQ9AaNEUFNFEEWmx$6} z8U77psy4_?8N6nJUQ;)5=EBe=!4aGXsGP?Fkum#zvFrM2VWkMGtqmMNW5%crP5EDb8GI}`Kf|4zV!wM%2H4gTnv6!4U-veVPE3Id zQ{|p-Hs%lC?=JF^KfiiWvdE+JVs>d_IQ=G-V{>#x#k^fCrn$g-?1Iyq&KoR#*q@(# zxN-}ZBM3c^+gvg!tU0hph@s5kwek!_2Ye?{Oe_9v`vu#I_rqP?)IP14Rts~dp86vj;`f4$+=&M3W^W$3!0OT{|x zNMqV;LU+d$rjLnEJ^^pw&pRScew`1wYqn#G6LV?wFX_~!ebY_93*j~|cF zBDSLA3e?l?Q)gS-YeJujdEaH8-u40_3NYtuZ^IGdVtoqWNoM1?y3;Y{Y={`1&P|d; z*Iv2~B9CYd@@0PdjGYOw5{V=}`6B=i!TBJe3&!VV5gKJ=XZj8ZLb`?mA6Uze zd0{jJLbt4HzdGs9R{jZJN#n0I! z(rz{X*+swcy!SMGS7m8~oB*}s_3)fybn-JzVuBm=bm%ynZrSk%#kDv+N_atlsD~Jr zBL+E1R!>3h!MJ3HS*BKDB*@RKmY%l-AY2dWd9y{Two@KqPtE`Fv7(RB>zko5c40aS z^&3PG@&61sws*W&iATBa4Si&-jM6eU820$+a|Oetp8329Bs}ZGC^2c<&KDCKlxNv- zry|4@0nVH+tcz=Ltngxe9yrG3q)qV}tlYgU7csa8t6cB`nRp3|o*a-zyOA~-ITYBA z^Ew$7T&I$7ztn|=M;V|WhP#Be?$zM>)yfkALqrR z;=|xYvahzSC_61rs8HAQ(v!(=*yReE4ASAW3HyHThGbKq<&c_@S?Dl?8zSv{>0R+ke9_B6D41Y z9E3L{zbFO7gUJ=!7Id7kmeSE*x1YV;o+d@X z1nTV)CNH+hw#-{Vgqjv2|4Pe6Snp0zGA*fayrOn8!!FmWvgiPiP?iwBIL3l*%xy%` z|B?mMIbeeDnp67lTjTgg(tL_%-F7K>+n}r41%+KPw&HR3tILdWai4ZZ(hN+Cw^iGm`ze3Ue(pidPq%2zKU-zW*VuS7gd^3X(db{m zlx>2V<%;t-EyZeEw!szeEvkPYeS#0rkqhTN?cEEBv@z!wCI}32aKZ|@=4R=z=FI{B zntL-iF(b-Q_ttNtZu!>ZsjhN%(L8Ow4dXi8W%olUX%p|5Zuj8{W598xxhygRiSRwhJ@Ay0W+W9r@!O6WgylOP%iu$$lf86{`dP59TwEft~Tt z@&LMqw@MA}nClHZKJjzPiu#SIBiN|{vXQ$|uN%i`D)wy*fY#6eV567v+`)k-(`2Wn z-qU5u4jwI@$ceW@S75As?&bM*sN;PM(#Z}v?R+nHfO!p?dCFej*-(luy6Z)D0F;3H z40rQ0@Pb*K+J_!xL!l?a`g1>*R_{YDBlP{(6Z1*ikZ0CJhkX$72f!XbRnrK4&W*o&>*l5}>Xald3+d!nDhu#0RT^DBdEeu#&hhVGTyEgGI4^JmfYQa&wSc*Q>tBJ;O6EV~zUjz267g2)3U&_9E}H8(p6nO!IQ&LD ze25s?jdBkh76x#Q&OJM;{u47%uwMYdqS)_pWe@(LzxN9whzEQ$VdrC)3u-Qqi^4}h zw7B>uXPu6u?kx4@0RdU`*Xpd~ zua!c8JsjZsM#wDvtAK^UpM-%j`w_5<^>zC)2N-Ps0uvZo>8mksasj{pYk^au<-sbJ zf{^E^_$&Z5oIXF>hal_n_Sp!h2f3e>b}TkUe!&<7JIyoL?;}J9`4S}%b-`QYP{E>N z9Pol_;2;+%#Un;%fLh$}QT7M)8}?_f-n>!Vjbo6?#Q;+=4lb@;Px1BigoK2|#6}Y_ z+YMMqr=-YJ-C;AWwiu4F-%0T5WcUaHB+={i~C87 zwwrOrQ5!rTfWicPK)VZQ!oq#sK@N+6S|CEU?A0r^$@cKe>5d-x&9F&2d<7JYU7m;P zJ!cNQPo%Yz*)8k%3%KI2+gQ1|q9E2mT-_z02lXVm9)7XfQ&=a^<{PR9m&UvZ6+h14-6Gg>j za08F-BT!MchA?Pa^Z*dqij9q3v2L>Ifh~Jc1F&`DTjeC?xBz#VKU~gZzZ9w|X(Kzp zGpJbw%9za?Bq_=tgQ_OT8hX;jz4!)*RU%KAS^d2_FkT)4pS3Wxzc)h7PBskLEXKh~ z?k{)ZCVXw+$fMv&lq!J#2PG#XDXGe7Ru=LHuF9##L`Q#u<-2>pC#{w>K(;z!gG#T5 z7M4Z2T~|TUJL28g4LzbGkV3L$p`i~vi^hCLR57ss@`31GN>pr568K`n1yb6{tq zCSl9Q{D^@}9qpBp*?G0ry|sqGnUVg>9{zWz3|clN|ITvyGD%)q_xE1Su+C+)b}6#O zP+ph3x&8rg6@r^siMo9lS0qj6v=6Ry-`q$|%JTmqtO${2Xog40bgTZ!I6nQf)Sdd> ziw$uL0ihN>t{S(pvDE^}dqux4RwSW+QgWNP04Q>FCmuZ!K*|?Up;&YN1|k{&S16Q> z?uuL22~5KZ70sE2`ybnMPWUxX{f7m>f&`ql0(K+rS+L*$RYmCt9F&-6DILJcjrj%2 z7`V1P!ET2~dz*~ew}i=* zt(%^$BKLPB4Wo1sR%lrExF1+K9}s@sUX@!ABETFw0~)nlZ&o<-$?>#W;s{vzIVUDe z3}TG_p{3Z)6Mb@B!G7xVXjPg>gDYbexV+y^>1i z!PEf8jvCkD?=h zzCMB_$+T09KafdJdCQ)%c^(dp=V*F0iW zB98jc71)zs^~UIns6{&w2E9S%jU>E4Yc3T2y`F|`STkW?y+Rd1P;G;T-lKaQm}xoU z3vLwfb@M%wapD`;xGUd4^3n)mZ*WMlb;kp)zDncL56V! z_2*~DAygXx#f>g>BzMOg5wYHxm8W?p8jN!sePW`P&V%ZY*zDX2UIT+I%TlRqx>Zrt zi7LzJYZM}}cjxETXCz~&1=j#r2R^*%rZ3EX%3DBX!Z1_~wySx5gYhbOnoQw9;IJqwe!5<VB<$H6d<(6)`Pjts})Wjv81&y|GCbX@F*SD4XzKtv0^qCDvBKyK?1aKYfe%mDh- zyo{Pm2Jhu@c%}dsZvE_oM%P~9%E`v3g|G8GLm;rA!ls`Iqr@`aQ!IEO%!D=b9!uTC zoC8s*m7QXGXw~haSWE6B9;X>;PVrK_B$~%TzALP6enCXX5hdv^&HPTU@iB_ZpJ{>j5|d5D0$)+aVg1bt&Wa|_qN1bW9_!^U@KRC~wthH%j65fvNwA?O z(#G2V4zrKcleH@z1En4tbqEayIPP=82cP%2d~0v_w6~ks^mwUdQobiOfEdQ?f_f3x zr5GBa4Im<2_P_qvaE&>HMxz+4uR=b0VF$S;$=L5!XAJkW0eLg)`9Y#D@Y7^I^WHo? zJO0CeM;#@n4ytZY5Za}ht$E=Zkyw~K9+7iLl(NCXrA^Bd86jc#ztU#6BSS-Qz zM4^@xiz^Y}>;JKsX7Yl15B`p4E&?V6@3Cv<{{A#pD*S=tyMWcG&vzArQUGrZj3m>H z3GIB~2?LwM!v{UP{N@Mg1TP#*r{T^B^F+s9MXzRk@7xf74;D*5zwUj2?YLIBi3s8b z#%`TAO?q_U4Uf88@3mNLe$&a!sX9H?<$;Y(#fuE{ko&)Ane&2Iq$Tx8z{7+%=Lws0 z#MjHt6F^ChVDB<_MGK9%PH8-+*axCWYipXVAI>~()exNv6nbH9+vQ<$3KN*4@D%ti zTc>hZe~xp0=vYf-F@N@q5~JfGjYs;YS#aG6n|xzj-!r)hjb`@G9!A32S$8uI4=|qv zH5_lv;Dib=_7kq{w=FzwMN!wC@Zwjt*(ia9-|}F1rHtdmHA`q~E!uA`{oY`6^^FB6 zE#opXA(MB^gZH=*68lO5JXov)zkcClpEEYF&Fs$G6aMxuV1$8Q%lr2SliZF9P<5Y@ ze0Nd>ZY=w&kq5bnvSIC3d4kwYfzfGxtA%~XcZ6Q4Px`(v4^f_8s}2bpGuZQvZ6pa1 z-dOL{jOum984*ZU;p~ax=@rep?51T5>);iG_j5*NMaU%Zkq|FGBlJ7$(oG+r_)}h6 zBp8v%a0m4RCF+LZIPCX&GWfAZHBW%KNW~!coBwm{%WAsDnhGKwQ0-SY=UE8iZA@$AhWQvxvrL}+|Y20 zB$M2bdaf30LdfJ^v$)roWn0{@i?S07!%5+Bz&n#+!K*}F52T0q$(QMkcBn!uSYowT zU`j~u_yV(YCZA;#zu?bq@cJ7;FyLA|Xz4(XTc?RuW$@AM+TmT!FqLi=qj%U7FzC13 zcmjM+2)+{pl^SS#@9XHK>koTkfUeDHSRu=12l{|{F^nvfi6SM!F6;@S%T2|Q5BNm) z8{((^--Sl}aE2K=dv^ICi!5kjcDA6a1cxV7hQQV0bEv?bQh2cF?07q3to8K$op%Llq%vkiIY< zgtycr0@ixOMsWYKG}su!dD>kY>Xg7lww7>5R+%%TKU>JLTmw%SM0}05B$*ycsFp5Z z_0p9Ah9zT1SBUn`#>NW;hB$?hCoFHDz`T!8`DFcktC}30bgLPFXVW9=?p}SKxyRz9 z`-um~?ap5dyc3<8Xf=>VcEtAT*b;sh#mWd!9ENY1&5w9 z4XCtOd_uRd$kK(K3%!U>!Dy7j56*H61V9nF2HF9)YX&Snc{oe8i4Z+i(-yOnVuf;h zGBvpE(MtM`z?!z-QiXby+tkUxUNwll)%*$D=h&&R?_*=X7WbncBhw;1@b8HFG3gtD z_X2`fBwz(GZ3R+1%!JaZhI?g8(0JT6HU>N09smdtmRIQ!RN;3|8$k{OV0w01TDVXk z=m*7+85N+3b;Nx3yh()5_>1?4yEl7eA>h&8p6i;i_bTh#pV85Q>O4TS1CqrztFpJkhBadaMoPk8!ON~UyXxL6D2-Q9HKX6AuCU%}o^n^#y-(TDs^n33vn ze*~Rv>}BKE<_!Omb(3mG^r96IkTRXnu-)sDC(xX zCMxfL;-V?Yy9M9ZzRW0!{>9qz*6@(Wwil`%p7ZG)v%4f48zNvv(Q;Q7;BS!2+1bmo zZ0_Sy)6n>3V|E&Ss3h~2H0d|BT1@Wx^*4#e@JoR@;2Hv8A71(UM3YuvaM-ZsIxj_O zMQ%LI?pQZgI6_v&CSVVKx<76G2&re^S@1M`oIVY#U7q0{Oij6K3PcHc{)^`NJ=uN= z`T6P%5JeGGUcfJBvL8z-kM9)bgr%Z|aXza_&s=|T~pr?l`7}*a$Q4KpenUHkld+hHu zyhfaL_JK+d=cm7SyYI8?Q7LDO^Y8ON9sQg|zZ&;0@S>Z|`3NAUUSp&en9)am7!fTV z<&H(f$1?!00G7&N#_2HHTmkN$pWIfHlG8EpW>bMCYHbZ6%Ku^6BfJ9zz!1>=i9#(})Dy9X#od$It)5x$E$=?_aO zhjw1_kRXWXizZa&$@2U(=nbakoZYZTZhUb7B18AA>y+Q^UZ*?GDINIHjlPxyM3xU> zNdc!*;5sGhFWZkdSy{h{pictdSzJi3)EAhehrlt>y1X@$-}3u)r7sTR-v} z2J(}jggmed!f(Ri4RexJE?Ojq44`3!zZna8|6u_WOa&m$?#kZ72v|&cs1Dn+^T6K+MfOM+-4 zCA_c7B)-&1THCsjk-$iu)M(Md_zd=YOsgmbk#S*M&p(7nm?c?(sZ@C5}G7s29(O^_6ez86S_GaX1!0@7&>8zPTK-W&(tmv z(#H%xhi~sx7w9b1acCdD2}`ehg-)BpS5-#*hx>Ik)>G!uL|t)k_<0|cnT(FA_ME7# z|0UU^Y*=<|aifpR$56Jee=weOTs@SYI#u+J@QL>9s!is;-`Q60GsF5s35X`Y-Oo1A z!PD31H9^(7`3dVa`x8BoLfKw9m5xlOX8RH-C+(Q}CH0l14?aS4RMkU4pqx*4iJm*L z%{!WyXShbbwxQtt;Sf>c6Irt4CibcJQ7r&L*Hx&+u?<>`9x!KzzfXHLz(~i7%j~rq zF!pFsw`@hwRCz7MRA^f4j`3L^UR30-#J#TesG|F8f5aa=s-7;a910am4%>VA#a-yu zwXe$~jUMjVk3Jh)e~4{~nHpMF1%Swt`hR*tV6#vS{`?OgvJGihT4!w4der_fB)j($ zKXI9oJ$6w(<(yS1gF>tm!V00nXFCH9GHV!$8RZ9A|`@=>lUeBQdx@I{GW zA-EtQM2@sjmg>7ZTW^t6;)?@f$O4~b<|FxgTcRT{o<80huJ6H37;|BgWzBuvp79tG zAnZru@R<7Qhpxy|U$?STD1b(>fa<(tdqG-`O+B-vR_L%u`QG$(rHu>5;z?o&`Tx-~{_+&?8 zR&{Wfe!6QZ2(c=2*%*KCeHfx}{F|G0@5y#1a@Nt2#R7us9lRpeQGUd48KABI{^nLp zNLB}?Bc8o)dVhk>rEkjck0`Pfl@t}T zahG2F9*nwiXSnJ)vxt_;tMG2q7u|PzJ*NHAP!!b~$TRL_iw8eZPXFz)U(LT9)CEX= z2i5PRepCY zJ#cLk=B&u%6#wS55e3Om-^CKB+aln|%oNsiuPq2X`&*pUBK(Bst;b*ECrRchIXUXn z+czd}pIuR36uHw=7~{rW@)76$xZd6%o(B6ekvU2%gVa&jjMG0BacDwcrK5-TR#O8WUde>k1F!<3{2_S$aEAjgoqK1p z(oZa2dd=>LcBAQ9k$(kcmpo3V5e*tcTS&+C{Fk$?5vQc@=V*P_{-4w}uD3&a|99$I z$O_88SXch@f3U7*EuN-aUc(U1LV{W9rR#+25xk9?f-XO+l+t5`8rz);V@k6jMIZNCXIr0K@0^{{k2etARd0DrS(E==VzQFoJv_<*uPAVz}&-`zzYTy6)RH4wy6JWGse7jvf(qHxD z>&p??KdG6CIzh_F60`ZXRl9@<%h0^^U9TTe|A1s+m*49-C{>D0%Jx{P%X5miCsb$c z?%vV}x7CnF8&0MbR)7=~^`a584;T|U76NvV!dVOf~P$HDQigcFCM!6`RuX`fb8bNs9Xn`}=R>kL#ynerGuS z#_~B$hN!KGcQcVg_+aY!Uh1F4M^^C0bqFcpr8Wi1evb(^b;t7IIZ?$t7)$hJ%>1s*s5+@u-jrY=|`$SuO`yYbii@$}a(aQPT$Yiad?0sSuiv-r&68NvacI?zYm$_)ee|y68%T_kIH{$4S5KRTE9g z*HaBM#Xn&mk3MF_tE-A0=SlJe9{KERo`>flxjdo)NJJ$vAs$JWa+dlWq_XCcDx{i&LUoF3jYJR?UHd z`b*#3TtP$lIhGg$Q#WEf>~wK+%SM!-H2u9W%(rPBUx`&;>DMxR{Dim^8A%JNVAPUl z27?PQe`KkE2dKKsLmg(9JaFr1r6i;k)&l+yBJ(IOET|eLoo-%ZT9WlW&(*nrIbz5= z$(X1?;n@qU7Vv)gF(EKGzu+8oRCixF2C;8~qUV&$+;hW#pxbmec}NP=zo!-o$W zl-ZL3G;M8b13a+q^XC&dC%(_p(f~VU-3AZK&W?^cSi=IG0;CixD=Xlc0Lihd>JVx* zB$OXeFX-R7GsglNzo=f>BY5w^aL8UGxm3bxwfm;d{pZ>Q%P1Q*84@udKuUAuHzw<5 zp3seLU&b%<4Ez>f4-WuD05jw+Om+nYj4ga7!f5aTazQ!@cqu71!1h@=eg-B|$xruT z;XB#!S?79%`66aAk#98N^JV(-b<7i-^gf~zI^Jg`_?4B? z|7rFtxb>sPzOOvMG$RY1*_fL4YTqh3r?50vB&fl^Ta$C+gDCX{jK*Wrmk;ksy6OM8 z4*eCq@eEj=k6^&G2#)7-67;=50S7x4IO88d#Q@o%llA`7QrobAW@BK2G6s<$LWuRC z*wYi?CA3>DQ0O2gduuVxI5jP8o?>$d;8>2b+FDPDwr1Cq^nFA@fHq2UwGp1| zymgI-4n{*5ZILB%zmnXO$w`T2?LRoHwjKKD61?B@(#Xld0u6YmmUE8xcme9#we9# z{Xa(L^_@8nBi^rP;La2y-t862av+s)bliZy*y%F-XOjS-?|@0ShqEsk1H2#>m`~M^;gsgO}I6#gW1CT#_TG?9oiS=->5vb1JLJs9a9=K@U zhbq+SOeyZ^WM}uvnFCFc8orWmHK5K}Vy>3;^E-uRf@?e}BGT(%=gxx%YD-}M$s!KI z)6U%bnKy(uN3b9=f)vgxArb}u5pvu_5be@R)902({lNffcn5cP#N7{URKZY61TqVJ z1EFyRIPnSW8O{?-y zCUW|2Qhm$->vJ%BGXg(2gxgrZiCbR*1j^;m(ce>tiLyeXkG}U=P;2azyB9t*__^@` zfKo;#*?5q+(Yp+>Wh*llMuARay3W-aT1H(g9*gz_aI@Hh+$k<@?ix{)!6i7Hpj&(j zRGH4Ng_XG7O&q^vkFA6u4~mN4N^2bIW1_W{)e?YRsa*PIQTBBs<48-(UfNa~ssfXy(!>hHZq(jtI)J*I02(WF+L$z-r-&8I8mGWAcjo|8k6`>mQTAH<4UO zMOb16BphISg6$Kt;T5h(m`=3x^j6fcx8K$iUgae%H9l{DbeHEg? zHc!H)@2Wv#%@rAZAS?lC&vf|6GZfpzqx}2)KMBQ*x`x%S{~{|nWg$r7T6 znUD>v;O+Nh;!p~%Flgr)Hxpbr^iI&^sr}D@zZS2%z`RCWDP+=s!pudN@Iko+@T>&N zZ_0lm8wuiJWpvZAA>2Xn7oT^$ry=l#^ob*t6;G!i=<_$X)&^M1XhmAc_9g_#Jhosj zOau@F>xnmLz4?sa+YsL&EemooFrX$Gd*~k}_cHT{@V$%^NpDSrqQ&*Kv1=)IMF|M_ z_P3qkhC2F7{*H)(-zgf@mu6wxatoAJW1(yG{8o6VN2rymb%?O+@Q1HE3+TaO;o!If z`pbmhlI3JgS;3EPHRm7G*O3zaZpLWmLseChhPjfw@Ztb_igJ7+PI&8zwItHZM)-^7 z5fu1q^}s!k+PS#G1*W!QVp&znn#+AgYrU2EwQ!-j)QKVrtO0w#oGWlg}?e0%n zXEm(riu}%`U4qJ!9Eqec7;s6jq7EUqy_@qzu|Rg`a60g+s8A8i$xWC6hj~QHY{f~3 z34ILV4xifH6S(DHGI^;D(3Hf`9&_RqX$;1q7KE+MjF!~s(8O`iVhvFa*fS&eRgR>e zs6mgH5y} xyJ@|fDjT(vj}0w^?2BN69q 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

V$iNe?$sDOg?t!>i$vS&No&VJNmX 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 { }, DEPLOY_FEEDBACK_KEY); } +/** + * Shrink the post-deploy health gate observation window so success-path tests + * can watch the full deploy, verify, succeed sequence without waiting out the + * 90s default. 15 seconds is the smallest value the settings API accepts. + */ +async function setHealthGateWindow(page: Page, seconds: number): Promise { + await page.evaluate(async (windowSeconds: number) => { + const res = await fetch('/api/settings', { + method: 'PATCH', + credentials: 'include', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ health_gate_window_seconds: windowSeconds }), + }); + if (!res.ok) { + throw new Error(`Failed to set health gate window: ${res.status}`); + } + }, seconds); +} + /** * Force the React hook to re-read localStorage and update its state. Used * right before a deploy click to defeat any stale-state edge cases after @@ -185,9 +204,12 @@ test.describe('Deploy feedback modal', () => { }); test('modal opens, streams output, and auto-closes on success', async ({ page }) => { - test.setTimeout(120_000); + // Worst-case assertion budget: 90s compose run + 45s gate verdict + 15s + // auto-close, so the per-assertion timeout fires before the test timeout. + test.setTimeout(160_000); await enableDeployFeedback(page); + await setHealthGateWindow(page, 15); await setupDeployStack(page, HAPPY_STACK, HAPPY_COMPOSE); await syncDeployFeedbackState(page); @@ -209,8 +231,13 @@ test.describe('Deploy feedback modal', () => { streamingIndicator.waitFor({ state: 'visible', timeout: 10_000 }), ]); - // Wait for the operation to succeed - await expect(page.getByText('Succeeded')).toBeVisible({ timeout: 90_000 }); + // The compose run finishes first (up to 90s for a cold image pull), then + // the post-deploy health gate observes the containers before the modal + // commits to a verdict. + await expect(modal.getByText('Verifying health')).toBeVisible({ timeout: 90_000 }); + + // Gate window is 15s; allow the 4s status polling cadence plus slack. + await expect(modal.getByText('Succeeded')).toBeVisible({ timeout: 45_000 }); // Modal auto-closes AUTO_CLOSE_SECONDS (4s) after success; allow up to 15s total await expect(modal).toBeHidden({ timeout: 15_000 }); @@ -275,6 +302,7 @@ test.describe('Deploy feedback modal', () => { test.setTimeout(120_000); await enableDeployFeedback(page); + await setHealthGateWindow(page, 15); await setupDeployStack(page, HAPPY_STACK, HAPPY_COMPOSE); await syncDeployFeedbackState(page); @@ -350,5 +378,9 @@ test.describe('Deploy feedback modal', () => { await deleteStackViaApi(page, HAPPY_STACK); await deleteStackViaApi(page, FAIL_STACK); await disableDeployFeedback(page); + // Restore the default observation window so the shortened test value does + // not leak into later suites or manual sessions against the same instance. + // Best-effort: a failed test may have already lost the page session. + await setHealthGateWindow(page, 90).catch(() => {}); }); }); diff --git a/frontend/src/components/DeployFeedbackModal.tsx b/frontend/src/components/DeployFeedbackModal.tsx index 3e54d42f..572383f4 100644 --- a/frontend/src/components/DeployFeedbackModal.tsx +++ b/frontend/src/components/DeployFeedbackModal.tsx @@ -4,6 +4,8 @@ import { CheckCircle2, AlertCircle, AlertTriangle, + CircleHelp, + HeartPulse, X, Minimize2, Terminal as TerminalIcon, @@ -13,7 +15,7 @@ import { DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { StructuredLogRow } from '@/components/log-rendering/StructuredLogRow'; import TerminalComponent from '@/components/Terminal'; -import { useDeployFeedback, VERB_LABELS } from '@/context/DeployFeedbackContext'; +import { useDeployFeedback, VERB_LABELS, type HealthGateUiState } from '@/context/DeployFeedbackContext'; const AUTO_CLOSE_SECONDS = 4; @@ -37,7 +39,7 @@ function formatElapsed(seconds: number): string { } export function DeployFeedbackModal({ isMinimized, onMinimize }: DeployFeedbackModalProps) { - const { panelState, logRows, lastOutputAt, onTerminalReady, onTerminalError, onMessage, onPanelClose } = useDeployFeedback(); + const { panelState, healthGate, logRows, lastOutputAt, onTerminalReady, onTerminalError, onMessage, onPanelClose } = useDeployFeedback(); const [showRaw, setShowRaw] = useState(false); const [elapsedSeconds, setElapsedSeconds] = useState(0); @@ -110,8 +112,12 @@ export function DeployFeedbackModal({ isMinimized, onMinimize }: DeployFeedbackM }, 1000); }, [clearCountdownInterval, onPanelClose]); + // Auto-close only when there is nothing left to watch: success with no gate, + // or success whose gate passed. An observing gate suspends the countdown; a + // failed/unknown gate keeps the modal open until the user closes it. + const gateHoldsOpen = healthGate !== null && healthGate.status !== 'passed'; useEffect(() => { - if (status === 'succeeded' && isOpen) { + if (status === 'succeeded' && isOpen && !gateHoldsOpen) { // eslint-disable-next-line react-hooks/set-state-in-effect startCountdown(); } else { @@ -121,7 +127,7 @@ export function DeployFeedbackModal({ isMinimized, onMinimize }: DeployFeedbackM return () => { clearCountdownInterval(); }; - }, [status, isOpen, startCountdown, clearCountdownInterval]); + }, [status, isOpen, gateHoldsOpen, startCountdown, clearCountdownInterval]); useEffect(() => { if (!userScrolledUp && scrollRef.current) { @@ -143,10 +149,10 @@ export function DeployFeedbackModal({ isMinimized, onMinimize }: DeployFeedbackM const handleMouseLeave = useCallback(() => { autoCloseHoveredRef.current = false; - if (status === 'succeeded' && isOpen) { + if (status === 'succeeded' && isOpen && !gateHoldsOpen) { startCountdown(); } - }, [status, isOpen, startCountdown]); + }, [status, isOpen, gateHoldsOpen, startCountdown]); const handleOpenChange = useCallback( (open: boolean) => { @@ -207,6 +213,8 @@ export function DeployFeedbackModal({ isMinimized, onMinimize }: DeployFeedbackM rowCount={logRows.length} errorMessage={errorMessage} countdown={countdown} + showCountdown={!gateHoldsOpen} + gateStatus={healthGate?.status ?? null} /> + + + + + ); diff --git a/frontend/src/components/EditorLayout/ShellOverlays.tsx b/frontend/src/components/EditorLayout/ShellOverlays.tsx index f6c5fa4b..a9a4d568 100644 --- a/frontend/src/components/EditorLayout/ShellOverlays.tsx +++ b/frontend/src/components/EditorLayout/ShellOverlays.tsx @@ -2,6 +2,7 @@ import { lazy, Suspense } from 'react'; import BashExecModal from '../BashExecModal'; import LazyBoundary from '../LazyBoundary'; import { PolicyBlockDialog } from '../stack/PolicyBlockDialog'; +import { UpdateReadinessDialog } from '../stack/UpdateReadinessDialog'; import { DeleteStackDialog } from './DeleteStackDialog'; import { UnsavedChangesDialog } from './UnsavedChangesDialog'; import { StackAlertSheet } from '../StackAlertSheet'; @@ -55,6 +56,7 @@ export function ShellOverlays({ logViewerOpen, logContainer, stackMonitor, closeStackMonitor, policyBlock, setPolicyBlock, policyBypassing, + updateReadiness, setUpdateReadiness, stackMisconfigScanId, setStackMisconfigScanId, diffPreview, setDiffPreview, diffPreviewConfirming, setDiffPreviewConfirming, } = overlayState; @@ -102,6 +104,14 @@ export function ShellOverlays({ initialTab={stackMonitor?.tab ?? 'alerts'} /> + {/* Pre-update readiness check */} + setUpdateReadiness(null)} + onProceed={() => updateReadiness?.proceed()} + /> + {/* Pre-deploy policy block */} [0]> = {}) { return props; } +// The actions live behind the Take action menu so the mobile card stays small. +function openActions() { + fireEvent.click(screen.getByText('Take action')); +} + describe('RecoveryPanel', () => { beforeEach(() => vi.clearAllMocks()); - it('shows the failed action title and error message', () => { + it('shows the failed action title and error message on the card', () => { setup(); expect(screen.getByText(/Update failed/)).toBeInTheDocument(); expect(screen.getByText(/pull failed: connection reset/)).toBeInTheDocument(); }); - it('calls onRetry from the retry button', () => { + it('keeps the actions collapsed behind the Take action menu', () => { + setup(); + expect(screen.queryByText('Retry update')).not.toBeInTheDocument(); + openActions(); + expect(screen.getByText('Retry update')).toBeInTheDocument(); + }); + + it('calls onRetry from the retry action', () => { const props = setup(); + openActions(); fireEvent.click(screen.getByText('Retry update')); expect(props.onRetry).toHaveBeenCalledTimes(1); }); it('hides retry/restart/rollback without the deploy permission', () => { setup({ canDeploy: false, backupInfo: { exists: true, timestamp: 1 } }); + openActions(); expect(screen.queryByText('Retry update')).not.toBeInTheDocument(); expect(screen.queryByText('Restart')).not.toBeInTheDocument(); expect(screen.queryByText('Roll back')).not.toBeInTheDocument(); @@ -61,19 +75,23 @@ describe('RecoveryPanel', () => { it('offers rollback only when a backup exists', () => { setup({ backupInfo: { exists: false, timestamp: null } }); + openActions(); expect(screen.queryByText('Roll back')).not.toBeInTheDocument(); setup({ backupInfo: { exists: true, timestamp: 123 } }); + fireEvent.click(screen.getAllByText('Take action')[1]); expect(screen.getByText('Roll back')).toBeInTheDocument(); }); it('does not show a redundant restart button when the failed action was a restart', () => { setup({ result: { ...baseResult, action: 'restart' } }); + openActions(); expect(screen.getByText('Retry restart')).toBeInTheDocument(); - expect(screen.queryByText('Restart')).not.toBeInTheDocument(); + expect(screen.queryByText('Restart', { exact: true })).not.toBeInTheDocument(); }); it('copies session-safe diagnostics including stack and error', () => { setup({ result: { ...baseResult, lastOutputLine: 'pulling app ...' } }); + openActions(); fireEvent.click(screen.getByText('Copy details')); expect(copyToClipboard).toHaveBeenCalledTimes(1); const blob = vi.mocked(copyToClipboard).mock.calls[0][0]; @@ -82,8 +100,47 @@ describe('RecoveryPanel', () => { expect(blob).toContain('Last output: pulling app ...'); }); + it('renders the failure classification on the card without opening the menu', () => { + setup({ + result: { + ...baseResult, + failure: { + reason: 'port_conflict', + label: 'Host port conflict', + suggestion: 'Free the conflicting host port, then retry.', + }, + }, + }); + expect(screen.getByText('Host port conflict')).toBeInTheDocument(); + expect(screen.getByText('Free the conflicting host port, then retry.')).toBeInTheDocument(); + }); + + it('renders no classification block without a failure field', () => { + setup(); + expect(screen.queryByTestId('recovery-classification')).not.toBeInTheDocument(); + }); + + it('includes the classification in copied diagnostics', () => { + setup({ + result: { + ...baseResult, + failure: { + reason: 'env_missing', + label: 'Missing environment variable', + suggestion: 'Define the missing variable, then retry.', + }, + }, + }); + openActions(); + fireEvent.click(screen.getByText('Copy details')); + const blob = vi.mocked(copyToClipboard).mock.calls[0][0]; + expect(blob).toContain('Classified: Missing environment variable'); + expect(blob).toContain('Suggestion: Define the missing variable, then retry.'); + }); + it('wires refresh and dismiss callbacks', () => { const props = setup(); + openActions(); fireEvent.click(screen.getByText('Refresh')); fireEvent.click(screen.getByLabelText('Dismiss recovery panel')); expect(props.onRefreshState).toHaveBeenCalledTimes(1); diff --git a/frontend/src/components/EditorLayout/hooks/useOverlayState.ts b/frontend/src/components/EditorLayout/hooks/useOverlayState.ts index e152b295..19bebe59 100644 --- a/frontend/src/components/EditorLayout/hooks/useOverlayState.ts +++ b/frontend/src/components/EditorLayout/hooks/useOverlayState.ts @@ -88,6 +88,14 @@ export function useOverlayState() { const [policyBlock, setPolicyBlock] = useState(null); const [policyBypassing, setPolicyBypassing] = useState(false); + // Pre-update readiness dialog. `proceed` runs the actual update when the + // user confirms; opened by useStackActions.requestStackUpdate. + const [updateReadiness, setUpdateReadiness] = useState<{ + stackName: string; + stackFile: string; + proceed: () => void; + } | null>(null); + const [stackMisconfigScanId, setStackMisconfigScanId] = useState(null); const [diffPreview, setDiffPreview] = useState(null); @@ -103,6 +111,7 @@ export function useOverlayState() { logViewerOpen, logContainer, openLogViewer, closeLogViewer, stackMonitor, openAlertSheet, openAutoHeal, closeStackMonitor, policyBlock, setPolicyBlock, policyBypassing, setPolicyBypassing, + updateReadiness, setUpdateReadiness, stackMisconfigScanId, setStackMisconfigScanId, diffPreview, setDiffPreview, diffPreviewConfirming, setDiffPreviewConfirming, } as const; diff --git a/frontend/src/components/EditorLayout/hooks/useStackActions.test.ts b/frontend/src/components/EditorLayout/hooks/useStackActions.test.ts index 992ad361..14e6c5b5 100644 --- a/frontend/src/components/EditorLayout/hooks/useStackActions.test.ts +++ b/frontend/src/components/EditorLayout/hooks/useStackActions.test.ts @@ -83,6 +83,8 @@ function makeOverlay(over: Partial = {}): OverlayState { policyBlock: null, setPolicyBlock: vi.fn(), setPolicyBypassing: vi.fn(), + updateReadiness: null, + setUpdateReadiness: vi.fn(), setDiffPreview: vi.fn(), ...over, } as unknown as OverlayState; @@ -96,6 +98,7 @@ function setup(over: { overlay?: Partial; stackList?: Partial; getLastDeployOutputLine?: (stackName: string) => string | undefined; + hasUpdateGuard?: boolean; } = {}) { const editorState = makeEditorState(over.editorState); const stackListState = makeStackListState(over.stackList); @@ -114,6 +117,7 @@ function setup(over: { runWithLog, getLastDeployOutputLine: over.getLastDeployOutputLine ?? (() => undefined), diffPreviewEnabled: false, + hasUpdateGuard: over.hasUpdateGuard ?? false, }), ); return { result, editorState, stackListState, overlayState }; @@ -365,6 +369,75 @@ describe('useStackActions.attemptLeaveEditor (mobile back / nav guard)', () => { }); }); +describe('useStackActions update readiness routing', () => { + beforeEach(() => { + vi.mocked(apiFetch).mockReset(); + }); + + function routeUpdateOk() { + vi.mocked(apiFetch).mockImplementation((url: string) => { + const u = String(url); + if (u.includes('/update')) return Promise.resolve(new Response('', { status: 200 })); + return Promise.resolve(new Response('[]', { status: 200 })); + }); + } + + it('opens the readiness dialog instead of posting when the node has update-guard', async () => { + routeUpdateOk(); + const { result, overlayState } = setup({ hasUpdateGuard: true }); + await act(async () => { await result.current.updateStack(); }); + expect(overlayState.setUpdateReadiness).toHaveBeenCalledWith( + expect.objectContaining({ stackName: 'web', stackFile: 'web.yml' }), + ); + expect(apiFetch).not.toHaveBeenCalled(); + }); + + it('routes a sidebar/context-menu update through the readiness dialog too', async () => { + routeUpdateOk(); + const { result, overlayState } = setup({ hasUpdateGuard: true }); + await act(async () => { await result.current.executeStackActionByFile('web.yml', 'update', 'update'); }); + expect(overlayState.setUpdateReadiness).toHaveBeenCalledWith( + expect.objectContaining({ stackName: 'web', stackFile: 'web.yml' }), + ); + expect(apiFetch).not.toHaveBeenCalled(); + }); + + it('runs the shared update executor when the dialog proceeds', async () => { + routeUpdateOk(); + const { result, overlayState, stackListState } = setup({ hasUpdateGuard: true }); + await act(async () => { await result.current.updateStack(); }); + const pending = vi.mocked(overlayState.setUpdateReadiness).mock.calls[0][0] as + { stackName: string; stackFile: string; proceed: () => void }; + expect(pending).not.toBeNull(); + await act(async () => { pending.proceed(); }); + expect(overlayState.setUpdateReadiness).toHaveBeenLastCalledWith(null); + const urls = vi.mocked(apiFetch).mock.calls.map(c => String(c[0])); + expect(urls).toContain('/stacks/web/update'); + expect(stackListState.recordActionSuccess).toHaveBeenCalledWith('web.yml'); + }); + + it('does nothing while the stack is busy, with or without the dialog', async () => { + routeUpdateOk(); + const { result, overlayState } = setup({ + hasUpdateGuard: true, + stackList: { isStackBusy: vi.fn().mockReturnValue(true) as never }, + }); + await act(async () => { await result.current.updateStack(); }); + expect(overlayState.setUpdateReadiness).not.toHaveBeenCalled(); + expect(apiFetch).not.toHaveBeenCalled(); + }); + + it('updates directly without the capability, from both entry points', async () => { + routeUpdateOk(); + const { result, overlayState } = setup(); + await act(async () => { await result.current.updateStack(); }); + await act(async () => { await result.current.executeStackActionByFile('web.yml', 'update', 'update'); }); + expect(overlayState.setUpdateReadiness).not.toHaveBeenCalled(); + const updatePosts = vi.mocked(apiFetch).mock.calls.filter(c => String(c[0]) === '/stacks/web/update'); + expect(updatePosts).toHaveLength(2); + }); +}); + describe('useStackActions recovery records', () => { beforeEach(() => { vi.mocked(apiFetch).mockReset(); @@ -453,6 +526,67 @@ describe('useStackActions recovery records', () => { ); }); + it('carries the server failure classification into the recovery record', async () => { + const body = JSON.stringify({ + error: 'port is already allocated', + rolledBack: false, + failure: { reason: 'port_conflict', label: 'Host port conflict', suggestion: 'Free the port, then retry.' }, + }); + routeApi(500, body); + const { result, stackListState } = setup(); + await act(async () => { await result.current.updateStack(); }); + expect(stackListState.recordActionFailure).toHaveBeenCalledWith( + 'web.yml', + expect.objectContaining({ + failure: { reason: 'port_conflict', label: 'Host port conflict', suggestion: 'Free the port, then retry.' }, + }), + ); + }); + + it('ignores a malformed failure field in the response body', async () => { + routeApi(500, JSON.stringify({ error: 'boom', failure: { reason: 42 } })); + const { result, stackListState } = setup(); + await act(async () => { await result.current.updateStack(); }); + expect(stackListState.recordActionFailure).toHaveBeenCalledWith( + 'web.yml', + expect.objectContaining({ failure: undefined }), + ); + }); + + it('synthesizes a node_unreachable classification for a gateway 502 with no body', async () => { + routeApi(502, 'Bad Gateway'); + const { result, stackListState } = setup(); + await act(async () => { await result.current.updateStack(); }); + expect(stackListState.recordActionFailure).toHaveBeenCalledWith( + 'web.yml', + expect.objectContaining({ + failure: expect.objectContaining({ reason: 'node_unreachable' }), + }), + ); + }); + + it('does not mislabel an unrelated JSON 503 as node_unreachable', async () => { + routeApi(503, JSON.stringify({ error: 'maintenance window' })); + const { result, stackListState } = setup(); + await act(async () => { await result.current.updateStack(); }); + expect(stackListState.recordActionFailure).toHaveBeenCalledWith( + 'web.yml', + expect.objectContaining({ failure: undefined }), + ); + }); + + it('synthesizes node_unreachable for a docker_unavailable 503 without a classified body', async () => { + routeApi(503, JSON.stringify({ error: 'daemon gone', code: 'docker_unavailable' })); + const { result, stackListState } = setup(); + await act(async () => { await result.current.updateStack(); }); + expect(stackListState.recordActionFailure).toHaveBeenCalledWith( + 'web.yml', + expect.objectContaining({ + failure: expect.objectContaining({ reason: 'node_unreachable' }), + }), + ); + }); + it('records a rollback failure', async () => { vi.mocked(apiFetch).mockImplementation((url: string) => { const u = String(url); diff --git a/frontend/src/components/EditorLayout/hooks/useStackActions.ts b/frontend/src/components/EditorLayout/hooks/useStackActions.ts index 6bca226b..66ef7dbc 100644 --- a/frontend/src/components/EditorLayout/hooks/useStackActions.ts +++ b/frontend/src/components/EditorLayout/hooks/useStackActions.ts @@ -7,7 +7,7 @@ import type { useViewNavigationState } from './useViewNavigationState'; import type { OverlayState } from './useOverlayState'; import type { Node } from '@/context/NodeContext'; import type { ActionVerb } from '@/context/DeployFeedbackContext'; -import type { StackAction, RecoverableAction } from '../EditorView'; +import type { StackAction, RecoverableAction, FailureClassification } from '../EditorView'; import type { NotificationItem } from '../../dashboard/types'; import type { PolicyBlockPayload, PolicyBlockableAction } from '../../stack/PolicyBlockDialog'; @@ -15,15 +15,57 @@ interface RunResult { ok: boolean; errorMessage?: string; rolledBack?: boolean; + /** Health gate run id from the success body, when the backend started one. */ + healthGateId?: string | null; } +/** healthGateId from a success body, or null when absent or unreadable. */ +const parseHealthGateId = async (response: Response): Promise => { + try { + const body: unknown = await response.json(); + if (isRecord(body) && typeof body.healthGateId === 'string') return body.healthGateId; + } catch (e) { + // A success body should always parse; the warn surfaces a future + // double-read bug instead of silently disabling the gate UI. + console.warn('[HealthGate] could not read the success body:', e); + } + return null; +}; + // Sentinel stored in overlayState.pendingUnsavedLoad to mark that the pending // confirmation is a node switch (not a stack load). When the user confirms the // discard, discardAndLoadPending calls setActiveNode(targetNode) and skips the // stack-load branch. export const NODE_SWITCH_PENDING_TOKEN = '__node-switch-pending__'; -type StackActionError = Error & { rolledBack?: boolean }; +type StackActionError = Error & { rolledBack?: boolean; failure?: FailureClassification }; + +// Fallback classification when the response never reached a Sencho backend +// (proxy 502/504 for a dead remote, or a 503 with no classified body). +const NODE_UNREACHABLE_FAILURE: FailureClassification = { + reason: 'node_unreachable', + label: 'Node or Docker unreachable', + suggestion: 'Check that the node is online and Docker is running, then retry.', +}; + +const UNREACHABLE_STATUSES: ReadonlySet = new Set([502, 503, 504]); + +const parseFailureClassification = (value: unknown): FailureClassification | undefined => { + if ( + isRecord(value) && + typeof value.reason === 'string' && + typeof value.label === 'string' && value.label.trim() && + typeof value.suggestion === 'string' && value.suggestion.trim() + ) { + return { reason: value.reason, label: value.label, suggestion: value.suggestion }; + } + if (value !== undefined) { + // Likely hub/node version skew or a mangled proxy body; the raw error + // message still renders, only the classification panel is degraded. + console.warn('Unrecognized failure classification shape in error response:', value); + } + return undefined; +}; type StackOpAction = 'deploy' | 'down' | 'restart' | 'stop' | 'start' | 'update'; @@ -66,6 +108,10 @@ interface UseStackActionsOptions { // is streaming that exact stack; used to enrich failure diagnostics safely. getLastDeployOutputLine: (stackName: string) => string | undefined; diffPreviewEnabled: boolean; + // Active node advertises the update-guard capability, so manual updates show + // the pre-update readiness dialog. Defaults to false: without the + // capability, updates run directly with no dialog. + hasUpdateGuard?: boolean; } const isRecord = (value: unknown): value is Record => @@ -100,24 +146,40 @@ const stackOpInProgressMessage = (stackName: string, info: StackOpInProgressInfo return `${stackName} is already ${verb}${actor}.`; }; -const parseStackActionError = (rawBody: string, fallback: string): StackActionError => { +const parseStackActionError = (rawBody: string, fallback: string, status?: number): StackActionError => { let message = rawBody || fallback; let rolledBack = false; + let failure: FailureClassification | undefined; + let parsedCode: string | undefined; + let bodyWasJson = false; try { const parsed: unknown = JSON.parse(rawBody); + bodyWasJson = true; if (isRecord(parsed)) { if (typeof parsed.error === 'string' && parsed.error.trim()) { message = parsed.error; } rolledBack = parsed.rolledBack === true; + failure = parseFailureClassification(parsed.failure); + if (typeof parsed.code === 'string') parsedCode = parsed.code; } } catch { /* not JSON */ } + // A gateway-style status with no classified body means the request likely + // never reached the owning node's backend; surface that as the cause. A 503 + // qualifies only when it is body-less (proxy generated) or the backend's own + // docker_unavailable shape, so an unrelated future 503 is not mislabeled. + if (!failure && status !== undefined && UNREACHABLE_STATUSES.has(status)) { + const qualifies = status !== 503 || !bodyWasJson || parsedCode === 'docker_unavailable'; + if (qualifies) failure = { ...NODE_UNREACHABLE_FAILURE }; + } + const error = new Error(message) as StackActionError; error.rolledBack = rolledBack; + error.failure = failure; return error; }; @@ -133,6 +195,7 @@ export function useStackActions(options: UseStackActionsOptions) { runWithLog, getLastDeployOutputLine, diffPreviewEnabled, + hasUpdateGuard = false, } = options; const pendingStackLoadRef = useRef(null); @@ -235,6 +298,7 @@ export function useStackActions(options: UseStackActionsOptions) { startedAt: number, errorMessage: string | undefined, rolledBack: boolean, + failure?: FailureClassification, ) => { if (!isRecoverableAction(action)) return; stackListState.recordActionFailure(stackFile, { @@ -244,6 +308,7 @@ export function useStackActions(options: UseStackActionsOptions) { startedAt, endedAt: Date.now(), lastOutputLine: getLastDeployOutputLine(stackName), + failure, }); }; @@ -619,12 +684,17 @@ export function useStackActions(options: UseStackActionsOptions) { return { ok: false, errorMessage: message }; } } - throw parseStackActionError(rawBody, 'Deploy failed'); + throw parseStackActionError(rawBody, 'Deploy failed', response.status); } overlayState.setPolicyBlock(null); - toast.success( - ignorePolicy ? 'Stack deployed (policy bypassed).' : 'Stack deployed successfully!', - ); + const healthGateId = await parseHealthGateId(response); + // With a health gate observing, the operation finishing is not the + // final verdict yet; soften the toast so success is not claimed twice. + if (healthGateId) { + toast.info(ignorePolicy ? 'Stack deployed (policy bypassed). Verifying health...' : 'Stack deployed. Verifying health...'); + } else { + toast.success(ignorePolicy ? 'Stack deployed (policy bypassed).' : 'Stack deployed successfully!'); + } await refreshSelectedContainers(stackName, stackFile); try { const backupRes = await apiFetch(`/stacks/${stackName}/backup`); @@ -633,7 +703,7 @@ export function useStackActions(options: UseStackActionsOptions) { /* ignore */ } stackListState.recordActionSuccess(stackFile); - return { ok: true }; + return { ok: true, healthGateId }; } catch (error) { console.error('Failed to deploy:', error); if (previousStatus !== undefined) @@ -645,7 +715,7 @@ export function useStackActions(options: UseStackActionsOptions) { ? `${errorMessage} - automatically rolled back to previous version.` : errorMessage, ); - recordActionFailureFor(stackFile, stackName, 'deploy', startedAt, errorMessage, deployError.rolledBack === true); + recordActionFailureFor(stackFile, stackName, 'deploy', startedAt, errorMessage, deployError.rolledBack === true, deployError.failure); await refreshSelectedContainers(stackName, stackFile); return { ok: false, errorMessage, rolledBack: deployError.rolledBack }; } @@ -736,7 +806,7 @@ export function useStackActions(options: UseStackActionsOptions) { return; } } - throw parseStackActionError(rawBody, 'Rollback failed'); + throw parseStackActionError(rawBody, 'Rollback failed', res.status); } overlayState.setPolicyBlock(null); toast.success('Stack rolled back successfully.'); @@ -758,7 +828,8 @@ export function useStackActions(options: UseStackActionsOptions) { } catch (error: unknown) { const msg = error instanceof Error ? error.message : 'Rollback failed'; toast.error(msg); - recordActionFailureFor(stackFile, stackName, 'rollback', startedAt, msg, false); + recordActionFailureFor(stackFile, stackName, 'rollback', startedAt, msg, false, + error instanceof Error ? (error as StackActionError).failure : undefined); await refreshSelectedContainers(stackName, stackFile); } finally { stackListState.clearStackAction(stackFile); @@ -850,8 +921,8 @@ export function useStackActions(options: UseStackActionsOptions) { } } } - const actionError = parseStackActionError(errText, `${action} failed`); - recordActionFailureFor(stackFile, stackName, action, startedAt, actionError.message, actionError.rolledBack === true); + const actionError = parseStackActionError(errText, `${action} failed`, response.status); + recordActionFailureFor(stackFile, stackName, action, startedAt, actionError.message, actionError.rolledBack === true, actionError.failure); await refreshSelectedContainers(stackName, stackFile); return { ok: false as const, @@ -860,11 +931,18 @@ export function useStackActions(options: UseStackActionsOptions) { }; } overlayState.setPolicyBlock(null); - toast.success(successMessage); + const healthGateId = await parseHealthGateId(response); + // With a health gate observing, the operation finishing is not the + // final verdict yet; soften the toast so success is not claimed twice. + if (healthGateId && action === 'update') { + toast.info('Stack updated. Verifying health...'); + } else { + toast.success(successMessage); + } if (action === 'update') stackListState.fetchImageUpdates(); await refreshSelectedContainers(stackName, stackFile); stackListState.recordActionSuccess(stackFile); - return { ok: true as const }; + return { ok: true as const, healthGateId }; } catch (err) { const message = (err as Error).message || `${action} failed`; recordActionFailureFor(stackFile, stackName, action, startedAt, message, false); @@ -923,11 +1001,33 @@ export function useStackActions(options: UseStackActionsOptions) { } }; + // Single entry point for every manual update trigger (toolbar, sidebar + // context menu, recovery retry). With the update-guard capability it opens + // the readiness dialog first; the dialog's proceed runs the same + // runWithLog-backed executor either way, so there is exactly one update path. + const requestStackUpdate = async (stackFile: string): Promise => { + if (stackListState.isStackBusy(stackFile)) return; + const stackName = stackFile.replace(/\.(yml|yaml)$/, ''); + const run = () => runStackAction(stackFile, 'update', 'update', 'running', 'Stack updated successfully!'); + if (hasUpdateGuard) { + overlayState.setUpdateReadiness({ + stackName, + stackFile, + proceed: () => { + overlayState.setUpdateReadiness(null); + void run(); + }, + }); + return; + } + await run(); + }; + const updateStack = async (e?: React.MouseEvent) => { e?.preventDefault(); e?.stopPropagation(); if (!stackListState.selectedFile) return; - await runStackAction(stackListState.selectedFile, 'update', 'update', 'running', 'Stack updated successfully!'); + await requestStackUpdate(stackListState.selectedFile); }; const deleteStack = async (pruneVolumes: boolean) => { @@ -1016,13 +1116,20 @@ export function useStackActions(options: UseStackActionsOptions) { endpoint: string, ) => { if (stackListState.isStackBusy(stackFile)) return; + // Updates route through the shared update path so the sidebar gets the + // readiness dialog, the deploy-feedback modal, and the same failure + // handling as the toolbar. + if (action === 'update') { + await requestStackUpdate(stackFile); + return; + } const stackName = stackFile.replace(/\.(yml|yaml)$/, ''); const startedAt = Date.now(); stackListState.setStackAction(stackFile, action); if (action === 'stop') { stackListState.setOptimisticStatus(stackFile, 'exited'); - } else if (action === 'deploy' || action === 'restart' || action === 'update') { + } else if (action === 'deploy' || action === 'restart') { stackListState.setOptimisticStatus(stackFile, 'running'); } @@ -1036,19 +1143,18 @@ export function useStackActions(options: UseStackActionsOptions) { toast.error(stackOpInProgressMessage(stackName, inProgress)); return; } - if (action === 'deploy' || action === 'update') { + if (action === 'deploy') { const blockedBy = tryOpenPolicyBlock(errText, stackName, stackFile, action); if (blockedBy) { - toast.error(`${action === 'update' ? 'Update' : 'Deploy'} blocked by policy "${blockedBy}"`); + toast.error(`Deploy blocked by policy "${blockedBy}"`); return; } } } - throw parseStackActionError(errText, `${action} failed`); + throw parseStackActionError(errText, `${action} failed`, response.status); } toast.success(`Stack ${action}ed successfully!`); await refreshSelectedContainers(stackName, stackFile); - if (action === 'update') stackListState.fetchImageUpdates(); if (action === 'deploy') { try { const backupRes = await apiFetch(`/stacks/${stackName}/backup`); @@ -1067,7 +1173,7 @@ export function useStackActions(options: UseStackActionsOptions) { ? `${msg} - automatically rolled back to previous version.` : msg, ); - recordActionFailureFor(stackFile, stackName, action, startedAt, msg, actionError.rolledBack === true); + recordActionFailureFor(stackFile, stackName, action, startedAt, msg, actionError.rolledBack === true, actionError.failure); await refreshSelectedContainers(stackName, stackFile); } finally { stackListState.clearStackAction(stackFile); @@ -1154,6 +1260,7 @@ export function useStackActions(options: UseStackActionsOptions) { restartStack, serviceAction, updateStack, + requestStackUpdate, deleteStack, attemptLeaveEditor, cancelPendingUnsavedLoad, diff --git a/frontend/src/components/EditorLayout/recovery-format.ts b/frontend/src/components/EditorLayout/recovery-format.ts index 335075b3..67164f2f 100644 --- a/frontend/src/components/EditorLayout/recovery-format.ts +++ b/frontend/src/components/EditorLayout/recovery-format.ts @@ -34,6 +34,10 @@ export function buildDiagnostics( ? `available${backupInfo.timestamp ? ` (${new Date(backupInfo.timestamp).toISOString()})` : ''}` : 'none'}`, ]; + if (result.failure) { + lines.push(`Classified: ${result.failure.label}`); + lines.push(`Suggestion: ${result.failure.suggestion}`); + } if (result.lastOutputLine) lines.push(`Last output: ${result.lastOutputLine}`); return lines.join('\n'); } diff --git a/frontend/src/components/__tests__/DeployFeedbackModal.test.tsx b/frontend/src/components/__tests__/DeployFeedbackModal.test.tsx index 5e5992b8..d0ef58f3 100644 --- a/frontend/src/components/__tests__/DeployFeedbackModal.test.tsx +++ b/frontend/src/components/__tests__/DeployFeedbackModal.test.tsx @@ -4,6 +4,9 @@ import { render, screen, act } from '@testing-library/react'; import { DeployFeedbackProvider, useDeployFeedback } from '@/context/DeployFeedbackContext'; import { DeployFeedbackModal } from '../DeployFeedbackModal'; +vi.mock('@/lib/api', () => ({ apiFetch: vi.fn() })); +import { apiFetch } from '@/lib/api'; + // Lets a test simulate a mid-stream drop (onReady then onError) so the panel // reaches 'streaming' with progressUnavailable set. const ctl = vi.hoisted(() => ({ drop: false })); @@ -23,14 +26,16 @@ vi.mock('@/components/Terminal', () => { // Resolver for the in-flight operation, assigned inside the run callback (async, // after render) so the test can leave it pending or settle it on demand. -let resolveRun: ((r: { ok: boolean; errorMessage?: string }) => void) | null = null; +let resolveRun: ((r: { ok: boolean; errorMessage?: string; healthGateId?: string | null }) => void) | null = null; +// The runWithLog promise itself, so a test can await full result propagation. +let runOuter: Promise | null = null; function Driver() { const { runWithLog } = useDeployFeedback(); React.useEffect(() => { - void runWithLog({ stackName: 'web', action: 'update' }, async (started) => { + runOuter = runWithLog({ stackName: 'web', action: 'update' }, async (started) => { await started; - return new Promise<{ ok: boolean; errorMessage?: string }>((res) => { resolveRun = res; }); + return new Promise<{ ok: boolean; errorMessage?: string; healthGateId?: string | null }>((res) => { resolveRun = res; }); }); }, [runWithLog]); return null; @@ -49,6 +54,193 @@ async function renderStreaming() { }); } +type GateStatus = 'observing' | 'passed' | 'failed' | 'unknown'; + +function routeGateApi(responses: Array<{ id: string; status: GateStatus; reason?: string | null }>) { + let call = 0; + vi.mocked(apiFetch).mockImplementation((url: string) => { + if (!String(url).includes('/health-gate')) { + return Promise.resolve(new Response('{}', { status: 200 })); + } + const r = responses[Math.min(call, responses.length - 1)]; + call += 1; + return Promise.resolve(new Response(JSON.stringify({ + stack: 'web', id: r.id, status: r.status, trigger: 'update', + reason: r.reason ?? null, windowSeconds: 90, startedAt: Date.now(), endedAt: null, containers: [], + }), { status: 200 })); + }); +} + +describe('DeployFeedbackModal health gate', () => { + beforeEach(() => { + vi.useFakeTimers(); + localStorage.clear(); + resolveRun = null; + ctl.drop = false; + vi.mocked(apiFetch).mockReset(); + vi.mocked(apiFetch).mockResolvedValue(new Response('{}', { status: 200 })); + }); + afterEach(() => { + vi.useRealTimers(); + }); + + async function succeedWithGate(gateId: string | null) { + await renderStreaming(); + // The Terminal onReady effect flushes at the end of renderStreaming's act, + // scheduling the 50ms handshake timer after that act's advance already + // ran; fire it here so the run reaches its resolver. + await act(async () => { await vi.advanceTimersByTimeAsync(60); }); + expect(resolveRun).not.toBeNull(); + await act(async () => { + resolveRun?.({ ok: true, healthGateId: gateId }); + await runOuter; + }); + } + + it('shows the observing banner and suspends auto-close while the gate observes', async () => { + routeGateApi([{ id: 'gate-1', status: 'observing' }]); + await succeedWithGate('gate-1'); + await act(async () => { await vi.advanceTimersByTimeAsync(100); }); + expect(screen.getByTestId('health-gate-banner')).toHaveAttribute('data-status', 'observing'); + expect(screen.queryByText(/closes in/)).toBeNull(); + // The verdict is withheld while observing: no green Succeeded yet. + expect(screen.queryByText('Succeeded')).toBeNull(); + expect(screen.getByText('Verifying health')).toBeInTheDocument(); + // Far past the normal 4s auto-close: the modal must still be open. + await act(async () => { await vi.advanceTimersByTimeAsync(10_000); }); + expect(screen.getByTestId('deploy-feedback-modal')).toBeInTheDocument(); + }); + + it('resumes the auto-close countdown once the gate passes', async () => { + routeGateApi([{ id: 'gate-1', status: 'observing' }, { id: 'gate-1', status: 'passed' }]); + await succeedWithGate('gate-1'); + await act(async () => { await vi.advanceTimersByTimeAsync(100); }); + expect(screen.getByTestId('health-gate-banner')).toHaveAttribute('data-status', 'observing'); + // The next 4s poll returns passed; the countdown then runs to auto-close. + await act(async () => { await vi.advanceTimersByTimeAsync(4_100); }); + expect(screen.getByTestId('health-gate-banner')).toHaveAttribute('data-status', 'passed'); + expect(screen.getByText(/closes in/)).toBeInTheDocument(); + await act(async () => { await vi.advanceTimersByTimeAsync(5_000); }); + // onPanelClose resets the panel (Radix may keep the dialog DOM mounted + // briefly under fake timers, so assert on the reset, not the unmount). + expect(screen.queryByText('Succeeded')).toBeNull(); + expect(screen.queryByTestId('health-gate-banner')).toBeNull(); + }); + + it('keeps the modal open and shows the reason when the gate fails', async () => { + routeGateApi([{ id: 'gate-1', status: 'failed', reason: 'container web-app-1 exited during observation' }]); + await succeedWithGate('gate-1'); + await act(async () => { await vi.advanceTimersByTimeAsync(100); }); + expect(screen.getByTestId('health-gate-banner')).toHaveAttribute('data-status', 'failed'); + expect(screen.getByText(/exited during observation/)).toBeInTheDocument(); + // The headline indicator reports the gate verdict, never a green Succeeded. + expect(screen.queryByText('Succeeded')).toBeNull(); + expect(screen.getAllByText(/Health gate failed/).length).toBeGreaterThan(0); + await act(async () => { await vi.advanceTimersByTimeAsync(20_000); }); + expect(screen.getByTestId('deploy-feedback-modal')).toBeInTheDocument(); + }); + + it('gives up with an unknown verdict after repeated poll failures', async () => { + vi.mocked(apiFetch).mockImplementation((url: string) => { + if (String(url).includes('/health-gate')) { + return Promise.resolve(new Response('{"error":"boom"}', { status: 500 })); + } + return Promise.resolve(new Response('{}', { status: 200 })); + }); + await succeedWithGate('gate-1'); + // Four strikes at the 4s poll cadence flip the gate to a client-side + // unknown and stop the interval (gateHoldsOpen keeps the modal up). + await act(async () => { await vi.advanceTimersByTimeAsync(17_000); }); + expect(screen.getByTestId('health-gate-banner')).toHaveAttribute('data-status', 'unknown'); + expect(screen.getByText(/could not be retrieved/)).toBeInTheDocument(); + const callsAfterGiveUp = vi.mocked(apiFetch).mock.calls.length; + await act(async () => { await vi.advanceTimersByTimeAsync(20_000); }); + expect(vi.mocked(apiFetch).mock.calls.length).toBe(callsAfterGiveUp); + }); + + it('ignores a report for a different gate id', async () => { + routeGateApi([{ id: 'some-other-gate', status: 'failed', reason: 'stale' }]); + await succeedWithGate('gate-1'); + await act(async () => { await vi.advanceTimersByTimeAsync(100); }); + // The mismatched report never replaces the optimistic observing state. + expect(screen.getByTestId('health-gate-banner')).toHaveAttribute('data-status', 'observing'); + }); + + it('polls single-flight and latches the terminal verdict against a late response', async () => { + // Hold each health-gate response open so we can release it deliberately and + // count how many requests overlap. + const release: Array<(body: object) => void> = []; + let healthGateCalls = 0; + vi.mocked(apiFetch).mockImplementation((url: string) => { + if (!String(url).includes('/health-gate')) { + return Promise.resolve(new Response('{}', { status: 200 })); + } + healthGateCalls += 1; + return new Promise((resolve) => { + release.push((body) => resolve(new Response(JSON.stringify(body), { status: 200 }))); + }); + }); + + await succeedWithGate('gate-1'); + // The first poll is still pending; advancing several intervals must not + // start a second one (single-flight), so no two responses can race. + await act(async () => { await vi.advanceTimersByTimeAsync(12_000); }); + expect(healthGateCalls).toBe(1); + + // Release the first poll as a terminal passed; the latch stops the interval. + await act(async () => { + release[0]({ + stack: 'web', id: 'gate-1', status: 'passed', trigger: 'update', + reason: null, windowSeconds: 90, startedAt: Date.now(), endedAt: null, containers: [], + }); + }); + expect(screen.getByTestId('health-gate-banner')).toHaveAttribute('data-status', 'passed'); + + // No further polls after a terminal verdict: a stale observing response can + // never arrive to roll the UI back. + await act(async () => { await vi.advanceTimersByTimeAsync(12_000); }); + expect(healthGateCalls).toBe(1); + }); + + it('does not poll the gate or show the panel when deploy feedback is disabled', async () => { + // Turning off the deploy progress panel opts out of the live gate UI: there + // is no surface to render it on. The backend gate still runs and records + // timeline events; only the in-browser verifying/recovery view is skipped. + localStorage.setItem('sencho.deploy-feedback.enabled', 'false'); + await act(async () => { + render( + + + {}} /> + , + ); + }); + await act(async () => { + expect(resolveRun).not.toBeNull(); + resolveRun?.({ ok: true, healthGateId: 'gate-1' }); + await runOuter; + }); + expect(screen.queryByTestId('deploy-feedback-modal')).toBeNull(); + expect(screen.queryByTestId('health-gate-banner')).toBeNull(); + // No poll is ever issued for the gate even though the backend returned an id. + await act(async () => { await vi.advanceTimersByTimeAsync(12_000); }); + expect(apiFetch).not.toHaveBeenCalled(); + }); + + it('renders no gate banner and auto-closes normally without a healthGateId', async () => { + await succeedWithGate(null); + await act(async () => { await vi.advanceTimersByTimeAsync(100); }); + expect(screen.getByText('Succeeded')).toBeInTheDocument(); + expect(screen.getByText(/closes in/)).toBeInTheDocument(); + expect(screen.queryByTestId('health-gate-banner')).toBeNull(); + expect(apiFetch).not.toHaveBeenCalled(); + await act(async () => { await vi.advanceTimersByTimeAsync(5_000); }); + // onPanelClose resets the panel (Radix may keep the dialog DOM mounted + // briefly under fake timers, so assert on the reset, not the unmount). + expect(screen.queryByText('Succeeded')).toBeNull(); + }); +}); + describe('DeployFeedbackModal stalled-output warning', () => { beforeEach(() => { vi.useFakeTimers(); diff --git a/frontend/src/components/settings/HostAlertsSection.tsx b/frontend/src/components/settings/HostAlertsSection.tsx index ac728112..ce8dde23 100644 --- a/frontend/src/components/settings/HostAlertsSection.tsx +++ b/frontend/src/components/settings/HostAlertsSection.tsx @@ -29,7 +29,7 @@ function SectionSkeleton() { ); } -type HostAlertFields = Pick; +type HostAlertFields = Pick; const DEFAULT_HOST_ALERTS: HostAlertFields = { host_cpu_limit: DEFAULT_SETTINGS.host_cpu_limit, @@ -37,6 +37,8 @@ const DEFAULT_HOST_ALERTS: HostAlertFields = { host_disk_limit: DEFAULT_SETTINGS.host_disk_limit, host_alert_suppression_mins: DEFAULT_SETTINGS.host_alert_suppression_mins, global_crash: DEFAULT_SETTINGS.global_crash, + health_gate_enabled: DEFAULT_SETTINGS.health_gate_enabled, + health_gate_window_seconds: DEFAULT_SETTINGS.health_gate_window_seconds, }; export function HostAlertsSection({ onDirtyChange }: HostAlertsSectionProps) { @@ -56,6 +58,8 @@ export function HostAlertsSection({ onDirtyChange }: HostAlertsSectionProps) { if (settings.host_disk_limit !== baseline.host_disk_limit) n++; if (settings.host_alert_suppression_mins !== baseline.host_alert_suppression_mins) n++; if (settings.global_crash !== baseline.global_crash) n++; + if (settings.health_gate_enabled !== baseline.health_gate_enabled) n++; + if (settings.health_gate_window_seconds !== baseline.health_gate_window_seconds) n++; return n; }, [settings]); @@ -89,6 +93,8 @@ export function HostAlertsSection({ onDirtyChange }: HostAlertsSectionProps) { host_disk_limit: nodeData.host_disk_limit ?? DEFAULT_SETTINGS.host_disk_limit, host_alert_suppression_mins: nodeData.host_alert_suppression_mins ?? DEFAULT_SETTINGS.host_alert_suppression_mins, global_crash: (nodeData.global_crash as '0' | '1') ?? DEFAULT_SETTINGS.global_crash, + health_gate_enabled: (nodeData.health_gate_enabled as '0' | '1') ?? DEFAULT_SETTINGS.health_gate_enabled, + health_gate_window_seconds: nodeData.health_gate_window_seconds ?? DEFAULT_SETTINGS.health_gate_window_seconds, }; setSettings(safe); serverSettingsRef.current = { ...safe }; @@ -197,6 +203,30 @@ export function HostAlertsSection({ onDirtyChange }: HostAlertsSectionProps) { + + + onSettingChange('health_gate_enabled', next ? '1' : '0')} + /> + + + onSettingChange('health_gate_window_seconds', v)} + suffix="s" + min={15} + max={600} + /> + + + {!readOnly && ( diff --git a/frontend/src/components/settings/__tests__/SectionSavePayloads.test.tsx b/frontend/src/components/settings/__tests__/SectionSavePayloads.test.tsx index 95d06368..1853c7c1 100644 --- a/frontend/src/components/settings/__tests__/SectionSavePayloads.test.tsx +++ b/frontend/src/components/settings/__tests__/SectionSavePayloads.test.tsx @@ -60,14 +60,16 @@ beforeEach(() => { }); describe('split section save payloads', () => { - it('HostAlertsSection patches only host alert keys', async () => { + it('HostAlertsSection patches only host alert and health gate keys', async () => { render(); const save = await screen.findByRole('button', { name: /save alerts/i }); - fireEvent.click(screen.getByRole('switch')); // global_crash + fireEvent.click(screen.getAllByRole('switch')[0]); // global_crash fireEvent.click(save); await waitFor(() => expect(mockedFetch.mock.calls.some(c => c[1]?.method === 'PATCH')).toBe(true)); expect(patchedKeys()).toEqual([ 'global_crash', + 'health_gate_enabled', + 'health_gate_window_seconds', 'host_alert_suppression_mins', 'host_cpu_limit', 'host_disk_limit', diff --git a/frontend/src/components/settings/types.ts b/frontend/src/components/settings/types.ts index cf7b2d8c..d2f1b1d8 100644 --- a/frontend/src/components/settings/types.ts +++ b/frontend/src/components/settings/types.ts @@ -15,6 +15,8 @@ export interface PatchableSettings { prune_on_update?: '0' | '1'; reclaim_hero?: '0' | '1'; snapshot_documentation?: '0' | '1'; + health_gate_enabled?: '0' | '1'; + health_gate_window_seconds?: string; } export const DEFAULT_SETTINGS: PatchableSettings = { @@ -34,6 +36,8 @@ export const DEFAULT_SETTINGS: PatchableSettings = { prune_on_update: '1', reclaim_hero: '1', snapshot_documentation: '0', + health_gate_enabled: '1', + health_gate_window_seconds: '90', }; export type SectionId = diff --git a/frontend/src/components/stack/RollbackReadinessSection.tsx b/frontend/src/components/stack/RollbackReadinessSection.tsx new file mode 100644 index 00000000..d893b208 --- /dev/null +++ b/frontend/src/components/stack/RollbackReadinessSection.tsx @@ -0,0 +1,107 @@ +import { useEffect, useState } from 'react'; +import { Check, CircleHelp, Database, X, type LucideIcon } from 'lucide-react'; +import { apiFetch } from '@/lib/api'; +import { cn } from '@/lib/utils'; +import { useNodes } from '@/context/NodeContext'; + +// Mirrors the backend payload shape (the frontend never imports backend). +type RollbackItemState = 'ready' | 'missing' | 'unknown' | 'not_covered'; +type RollbackOverall = 'ready' | 'partial' | 'not_ready'; + +interface RollbackReadinessItem { + id: string; + state: RollbackItemState; + label: string; + detail: string; +} + +interface RollbackReadinessReport { + stack: string; + computedAt: number; + overall: RollbackOverall; + items: RollbackReadinessItem[]; +} + +const LABEL_CLASS = 'font-mono text-[10px] uppercase tracking-[0.18em] text-stat-subtitle'; + +const OVERALL_META: Record = { + ready: { label: 'ready', tone: 'border-success/40 bg-success/[0.06] text-success' }, + partial: { label: 'partial', tone: 'border-warning/40 bg-warning/[0.06] text-warning' }, + not_ready: { label: 'not ready', tone: 'border-destructive/40 bg-destructive/[0.06] text-destructive' }, +}; + +const STATE_META: Record = { + ready: { icon: Check, tone: 'text-success' }, + missing: { icon: X, tone: 'text-destructive' }, + unknown: { icon: CircleHelp, tone: 'text-stat-subtitle' }, + not_covered: { icon: Database, tone: 'text-warning' }, +}; + +/** + * "Would the existing rollback actually save me?" disclosure for the Stack + * Dossier. Read-only; renders nothing while loading, on error, or when the + * active node does not advertise the update-guard capability. + */ +export function RollbackReadinessSection({ stackName }: { stackName: string }) { + const { activeNode, hasCapability } = useNodes(); + const nodeId = activeNode?.id; + const enabled = hasCapability('update-guard'); + const [report, setReport] = useState(null); + + useEffect(() => { + setReport(null); + if (!enabled) return; + let cancelled = false; + const load = async () => { + try { + const res = await apiFetch(`/stacks/${stackName}/rollback-readiness`); + if (cancelled) return; + if (!res.ok) { + console.warn('[RollbackReadiness] unavailable for %s:', stackName, res.status); + return; + } + setReport(await res.json() as RollbackReadinessReport); + } catch (e) { + // Render-nothing on failure: the dossier remains fully usable without + // this section. The warn keeps the cause findable in the console. + if (!cancelled) console.warn('[RollbackReadiness] unavailable for %s:', stackName, e); + } + }; + void load(); + return () => { cancelled = true; }; + }, [stackName, nodeId, enabled]); + + if (!enabled || !report) return null; + + const overall = OVERALL_META[report.overall] ?? OVERALL_META.partial; + + return ( +

+
+ rollback readiness + + {overall.label} + +
+
+ {report.items.map(item => { + const meta = STATE_META[item.state] ?? STATE_META.unknown; + const StateIcon = meta.icon; + return ( +
+
+ + {item.label} +
+
{item.detail}
+
+ ); + })} +
+
+ ); +} diff --git a/frontend/src/components/stack/StackActivityTimeline.tsx b/frontend/src/components/stack/StackActivityTimeline.tsx index 11ffde65..fd5bf49e 100644 --- a/frontend/src/components/stack/StackActivityTimeline.tsx +++ b/frontend/src/components/stack/StackActivityTimeline.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Rocket, RefreshCcw, CircleStop, Play, ArrowUp, Activity, Loader2, AlertCircle, - TriangleAlert, CircleCheck, + TriangleAlert, CircleCheck, HeartPulse, HeartCrack, } from 'lucide-react'; import type { LucideIcon } from 'lucide-react'; import { Button } from '@/components/ui/button'; @@ -36,6 +36,9 @@ const CATEGORY_ICON: Record = { image_update_applied: ArrowUp, drift_detected: TriangleAlert, drift_resolved: CircleCheck, + update_started: ArrowUp, + health_gate_passed: HeartPulse, + health_gate_failed: HeartCrack, }; const DAY_MS = 86_400_000; diff --git a/frontend/src/components/stack/StackDossierPanel.test.tsx b/frontend/src/components/stack/StackDossierPanel.test.tsx index 43de3178..4467d0f2 100644 --- a/frontend/src/components/stack/StackDossierPanel.test.tsx +++ b/frontend/src/components/stack/StackDossierPanel.test.tsx @@ -10,7 +10,9 @@ import { render, screen, fireEvent, waitFor } from '@testing-library/react'; vi.mock('@/lib/api', () => ({ apiFetch: vi.fn() })); vi.mock('@/components/ui/toast-store', () => ({ toast: { success: vi.fn(), error: vi.fn() } })); -vi.mock('@/context/NodeContext', () => ({ useNodes: () => ({ activeNode: { id: 1 } }) })); +// hasCapability false keeps the rollback readiness section (tested in its own +// file) out of these dossier-focused tests. +vi.mock('@/context/NodeContext', () => ({ useNodes: () => ({ activeNode: { id: 1 }, hasCapability: () => false }) })); vi.mock('@/lib/clipboard', () => ({ copyToClipboard: vi.fn().mockResolvedValue(undefined) })); vi.mock('@/lib/download', () => ({ downloadTextFile: vi.fn() })); diff --git a/frontend/src/components/stack/StackDossierPanel.tsx b/frontend/src/components/stack/StackDossierPanel.tsx index c213d365..71af0b2c 100644 --- a/frontend/src/components/stack/StackDossierPanel.tsx +++ b/frontend/src/components/stack/StackDossierPanel.tsx @@ -13,6 +13,7 @@ import { } from '@/lib/dossierMarkdown'; import type { AnatomyMarkdownInput } from '@/lib/anatomyMarkdown'; import { computeDocDrift, type DocDriftFinding } from '@/lib/docDrift'; +import { RollbackReadinessSection } from './RollbackReadinessSection'; import { useNodes } from '@/context/NodeContext'; interface StackDossierPanelProps { @@ -357,6 +358,8 @@ export default function StackDossierPanel({ stackName, anatomy, canEdit }: Stack )} + + ); } diff --git a/frontend/src/components/stack/UpdateReadinessDialog.tsx b/frontend/src/components/stack/UpdateReadinessDialog.tsx new file mode 100644 index 00000000..227f84c4 --- /dev/null +++ b/frontend/src/components/stack/UpdateReadinessDialog.tsx @@ -0,0 +1,303 @@ +import { useEffect, useState } from 'react'; +import { + Check, CircleHelp, Info, ShieldAlert, TriangleAlert, Camera, type LucideIcon, +} from 'lucide-react'; +import { Modal, ModalHeader, ModalBody, ModalFooter } from '@/components/ui/modal'; +import { Button } from '@/components/ui/button'; +import { Checkbox } from '@/components/ui/checkbox'; +import { toast } from '@/components/ui/toast-store'; +import { apiFetch } from '@/lib/api'; +import { cn } from '@/lib/utils'; +import { formatTimeAgo } from '@/lib/relativeTime'; +import { useNodes } from '@/context/NodeContext'; +import { useAuth } from '@/context/AuthContext'; + +// Mirrors the backend payload shape (the frontend never imports backend). +type ReadinessVerdict = 'ready' | 'ready_with_warnings' | 'review_required' | 'blocked' | 'unknown'; +type SignalStatus = 'ok' | 'warning' | 'attention' | 'blocked' | 'unknown'; + +interface ReadinessSignal { + id: string; + status: SignalStatus; + title: string; + detail: string; + affectsVerdict: boolean; +} + +interface UpdateReadinessReport { + stack: string; + computedAt: number; + verdict: ReadinessVerdict; + signals: ReadinessSignal[]; +} + +const FETCH_TIMEOUT_MS = 4_000; + +const VERDICT_META: Record = { + ready: { + label: 'ready', + icon: Check, + tone: 'border-success/40 bg-success/[0.06] text-success', + line: 'Nothing stands out; the update can proceed.', + }, + ready_with_warnings: { + label: 'ready with warnings', + icon: Info, + tone: 'border-info/40 bg-info/[0.06] text-info', + line: 'The update can proceed; review the warnings below first.', + }, + review_required: { + label: 'review required', + icon: TriangleAlert, + tone: 'border-warning/40 bg-warning/[0.06] text-warning', + line: 'Something needs a look before this update.', + }, + blocked: { + label: 'blocked', + icon: ShieldAlert, + tone: 'border-destructive/40 bg-destructive/[0.06] text-destructive', + line: 'A blocker was found. Proceeding is likely to fail or be stopped by policy.', + }, + unknown: { + label: 'unknown', + icon: CircleHelp, + tone: 'border-muted bg-card/40 text-stat-subtitle', + line: 'Readiness could not be fully verified; proceed with care.', + }, +}; + +// The `?? unknown` fallbacks at the lookup sites are forward-compat guards: a +// newer backend may send statuses this build does not know. +const SIGNAL_META: Record = { + ok: { icon: Check, tone: 'text-success' }, + warning: { icon: Info, tone: 'text-info' }, + attention: { icon: TriangleAlert, tone: 'text-warning' }, + blocked: { icon: ShieldAlert, tone: 'text-destructive' }, + unknown: { icon: CircleHelp, tone: 'text-stat-subtitle' }, +}; + +const UNKNOWN_FALLBACK = (detail: string): UpdateReadinessReport => ({ + stack: '', + computedAt: Date.now(), + verdict: 'unknown', + signals: [{ + id: 'readiness', + status: 'unknown', + title: 'Readiness check', + detail, + affectsVerdict: true, + }], +}); + +interface UpdateReadinessDialogProps { + open: boolean; + stackName: string; + onCancel: () => void; + /** Caller closes the dialog and starts the update. */ + onProceed: () => void; +} + +/** + * Pre-update readiness check. Advisory only: every verdict, including + * blocked and unknown, keeps Proceed enabled; the scan-policy gate remains + * the single hard block. A slow or failed readiness fetch degrades to an + * unknown verdict so this dialog can never strand the update path. + */ +export function UpdateReadinessDialog({ open, stackName, onCancel, onProceed }: UpdateReadinessDialogProps) { + const { activeNode } = useNodes(); + const { isAdmin } = useAuth(); + const nodeId = activeNode?.id ?? null; + + const [report, setReport] = useState(null); + const [snapshotAt, setSnapshotAt] = useState(null); + const [snapshotKnown, setSnapshotKnown] = useState(false); + const [snapshotFirst, setSnapshotFirst] = useState(false); + const [working, setWorking] = useState(false); + + useEffect(() => { + if (!open) { + setReport(null); + setSnapshotAt(null); + setSnapshotKnown(false); + setSnapshotFirst(false); + setWorking(false); + return; + } + setReport(null); + const controller = new AbortController(); + let timedOut = false; + const timer = setTimeout(() => { + timedOut = true; + controller.abort(); + }, FETCH_TIMEOUT_MS); + + const load = async () => { + try { + const res = await apiFetch(`/stacks/${stackName}/update-readiness`, { signal: controller.signal }); + if (!res.ok) { + const unreachable = res.status === 502 || res.status === 503 || res.status === 504; + setReport(UNKNOWN_FALLBACK(unreachable + ? 'The node may be unreachable; readiness could not be verified.' + : 'The readiness check failed; readiness could not be verified.')); + return; + } + setReport(await res.json() as UpdateReadinessReport); + } catch { + // The cleanup abort (dialog closed) must not write a stale fake + // verdict; only the 4s timer earns the timed-out wording. + if (controller.signal.aborted && !timedOut) return; + setReport(UNKNOWN_FALLBACK(timedOut + ? 'The readiness check did not respond in time.' + : 'The readiness check could not be reached.')); + } + }; + void load(); + + // Snapshot coverage lives only in the hub database; merged client-side. + const loadCoverage = async () => { + if (!isAdmin || nodeId === null) return; + try { + const res = await apiFetch( + `/fleet/snapshots/coverage?nodeId=${nodeId}&stackName=${encodeURIComponent(stackName)}`, + { localOnly: true, signal: controller.signal }, + ); + if (!res.ok) { + console.warn('[UpdateReadiness] snapshot coverage unavailable:', res.status); + return; + } + const body = await res.json() as { latestAt: number | null }; + setSnapshotAt(body.latestAt); + setSnapshotKnown(true); + } catch (e) { + // Coverage is supplemental; the dialog renders without the row. + if (!controller.signal.aborted) { + console.warn('[UpdateReadiness] snapshot coverage unavailable:', e); + } + } + }; + void loadCoverage(); + + return () => { + clearTimeout(timer); + controller.abort(); + }; + }, [open, stackName, nodeId, isAdmin]); + + const proceed = async () => { + if (snapshotFirst) { + setWorking(true); + try { + const res = await apiFetch('/fleet/snapshots', { + method: 'POST', + localOnly: true, + body: JSON.stringify({ description: `Pre-update snapshot: ${stackName}` }), + }); + if (!res.ok) { + let serverError = ''; + try { + serverError = ((await res.json()) as { error?: string }).error ?? ''; + } catch { /* non-JSON body */ } + toast.error(`The pre-update snapshot failed; the update was not started.${serverError ? ` ${serverError}` : ''}`); + return; + } + toast.success('Fleet snapshot created.'); + } catch (e) { + console.error('[UpdateReadiness] pre-update snapshot failed:', e); + toast.error('The pre-update snapshot failed; the update was not started.'); + return; + } finally { + setWorking(false); + } + } + onProceed(); + }; + + const verdict = report ? VERDICT_META[report.verdict] ?? VERDICT_META.unknown : null; + const VerdictIcon = verdict?.icon; + + return ( + { if (!next && !working) onCancel(); }} size="lg"> + + + {!report || !verdict || !VerdictIcon ? ( +
Checking readiness…
+ ) : ( + <> +
+
+ + {verdict.label} +
+
{verdict.line}
+
+ +
+ {report.signals.map(signal => { + const meta = SIGNAL_META[signal.status] ?? SIGNAL_META.unknown; + const SignalIcon = meta.icon; + return ( +
+
+ + {signal.title} +
+
{signal.detail}
+
+ ); + })} + {snapshotKnown && ( +
+
+ + Fleet snapshot +
+
+ {snapshotAt + ? `The most recent fleet snapshot covering this stack was taken ${formatTimeAgo(snapshotAt)}.` + : 'No fleet snapshot covers this stack yet.'} +
+
+ )} +
+ + {isAdmin && ( + + )} + + )} +
+ + Cancel + + } + primary={ + + } + /> +
+ ); +} diff --git a/frontend/src/components/stack/__tests__/RollbackReadinessSection.test.tsx b/frontend/src/components/stack/__tests__/RollbackReadinessSection.test.tsx new file mode 100644 index 00000000..329d6201 --- /dev/null +++ b/frontend/src/components/stack/__tests__/RollbackReadinessSection.test.tsx @@ -0,0 +1,61 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { render, screen, waitFor } from '@testing-library/react'; +import { RollbackReadinessSection } from '../RollbackReadinessSection'; + +vi.mock('@/lib/api', () => ({ apiFetch: vi.fn() })); + +const nodesState = { + activeNode: { id: 1, type: 'local', name: 'local' }, + hasCapability: vi.fn().mockReturnValue(true), +}; +vi.mock('@/context/NodeContext', () => ({ + useNodes: () => nodesState, +})); + +import { apiFetch } from '@/lib/api'; + +type Overall = 'ready' | 'partial' | 'not_ready'; + +const report = (overall: Overall) => ({ + stack: 'web', + computedAt: Date.now(), + overall, + items: [ + { id: 'compose_source', state: 'ready', label: 'Previous compose file', detail: 'A backup is available to restore.' }, + { id: 'volume_data', state: 'not_covered', label: 'Application data', detail: 'Named volumes and bind-mounted data are not included in file backups.' }, + ], +}); + +describe('RollbackReadinessSection', () => { + beforeEach(() => { + vi.mocked(apiFetch).mockReset(); + nodesState.hasCapability.mockReturnValue(true); + }); + + it.each(['ready', 'partial', 'not_ready'] as const)('renders the %s overall chip', async (overall) => { + vi.mocked(apiFetch).mockResolvedValue(new Response(JSON.stringify(report(overall)), { status: 200 })); + render(); + await waitFor(() => expect(screen.getByTestId('rollback-overall')).toHaveAttribute('data-overall', overall)); + }); + + it('always shows the application-data non-coverage disclosure', async () => { + vi.mocked(apiFetch).mockResolvedValue(new Response(JSON.stringify(report('ready')), { status: 200 })); + render(); + await waitFor(() => expect(screen.getByText('Application data')).toBeInTheDocument()); + expect(screen.getByText(/not included in file backups/)).toBeInTheDocument(); + }); + + it('renders nothing without the update-guard capability and never fetches', () => { + nodesState.hasCapability.mockReturnValue(false); + const { container } = render(); + expect(container).toBeEmptyDOMElement(); + expect(apiFetch).not.toHaveBeenCalled(); + }); + + it('renders nothing when the fetch fails', async () => { + vi.mocked(apiFetch).mockRejectedValue(new Error('down')); + const { container } = render(); + await waitFor(() => expect(apiFetch).toHaveBeenCalled()); + expect(container).toBeEmptyDOMElement(); + }); +}); diff --git a/frontend/src/components/stack/__tests__/UpdateReadinessDialog.test.tsx b/frontend/src/components/stack/__tests__/UpdateReadinessDialog.test.tsx new file mode 100644 index 00000000..a0c5bf3b --- /dev/null +++ b/frontend/src/components/stack/__tests__/UpdateReadinessDialog.test.tsx @@ -0,0 +1,211 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { render, screen, fireEvent, waitFor, act } from '@testing-library/react'; +import { UpdateReadinessDialog } from '../UpdateReadinessDialog'; + +vi.mock('@/lib/api', () => ({ apiFetch: vi.fn() })); +vi.mock('@/components/ui/toast-store', () => ({ + toast: { success: vi.fn(), error: vi.fn(), info: vi.fn() }, +})); + +const nodesState = { activeNode: { id: 1, type: 'local', name: 'local' } }; +vi.mock('@/context/NodeContext', () => ({ + useNodes: () => nodesState, +})); + +const authState = { isAdmin: true }; +vi.mock('@/context/AuthContext', () => ({ + useAuth: () => authState, +})); + +import { apiFetch } from '@/lib/api'; +import { toast } from '@/components/ui/toast-store'; + +type Verdict = 'ready' | 'ready_with_warnings' | 'review_required' | 'blocked' | 'unknown'; + +const report = (verdict: Verdict) => ({ + stack: 'web', + computedAt: Date.now(), + verdict, + signals: [ + { id: 'preflight', status: 'ok', title: 'Compose Doctor', detail: 'The last preflight passed.', affectsVerdict: true }, + ], +}); + +function routeApi(over: { + readiness?: () => Promise; + coverage?: () => Promise; + snapshot?: () => Promise; +} = {}) { + vi.mocked(apiFetch).mockImplementation((url: string, options?: { method?: string }) => { + const u = String(url); + if (u.includes('/update-readiness')) { + return (over.readiness ?? (() => Promise.resolve(new Response(JSON.stringify(report('ready')), { status: 200 }))))(); + } + if (u.includes('/snapshots/coverage')) { + return (over.coverage ?? (() => Promise.resolve(new Response(JSON.stringify({ latestAt: null }), { status: 200 }))))(); + } + if (u.includes('/fleet/snapshots') && options?.method === 'POST') { + return (over.snapshot ?? (() => Promise.resolve(new Response('{}', { status: 200 }))))(); + } + return Promise.resolve(new Response('{}', { status: 200 })); + }); +} + +function setup(props: Partial[0]> = {}) { + const base = { + open: true, + stackName: 'web', + onCancel: vi.fn(), + onProceed: vi.fn(), + ...props, + }; + render(); + return base; +} + +describe('UpdateReadinessDialog', () => { + beforeEach(() => { + vi.mocked(apiFetch).mockReset(); + vi.clearAllMocks(); + authState.isAdmin = true; + }); + + const verdictCases: Array<{ verdict: Verdict; label: string }> = [ + { verdict: 'ready', label: 'ready' }, + { verdict: 'ready_with_warnings', label: 'ready with warnings' }, + { verdict: 'review_required', label: 'review required' }, + { verdict: 'blocked', label: 'blocked' }, + { verdict: 'unknown', label: 'unknown' }, + ]; + + it.each(verdictCases)('renders the $verdict verdict with Proceed enabled', async ({ verdict, label }) => { + routeApi({ readiness: () => Promise.resolve(new Response(JSON.stringify(report(verdict)), { status: 200 })) }); + setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toHaveAttribute('data-verdict', verdict)); + expect(screen.getByText(label)).toBeInTheDocument(); + expect(screen.getByTestId('readiness-proceed')).toBeEnabled(); + }); + + it('degrades to unknown on a plain network failure, and stays non-blocking', async () => { + routeApi({ readiness: () => Promise.reject(new Error('connection refused')) }); + const props = setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toHaveAttribute('data-verdict', 'unknown')); + expect(screen.getByText(/could not be reached/)).toBeInTheDocument(); + fireEvent.click(screen.getByTestId('readiness-proceed')); + await waitFor(() => expect(props.onProceed).toHaveBeenCalledTimes(1)); + }); + + it('reports a timed-out readiness check as unknown after the 4s timer aborts it', async () => { + vi.useFakeTimers(); + try { + vi.mocked(apiFetch).mockImplementation((url: string, options?: RequestInit) => { + if (String(url).includes('/update-readiness')) { + return new Promise((_, reject) => { + options?.signal?.addEventListener('abort', () => + reject(new DOMException('Aborted', 'AbortError'))); + }); + } + return Promise.resolve(new Response(JSON.stringify({ latestAt: null }), { status: 200 })); + }); + render(); + await act(async () => { await vi.advanceTimersByTimeAsync(4_100); }); + expect(screen.getByTestId('readiness-verdict')).toHaveAttribute('data-verdict', 'unknown'); + expect(screen.getByText(/did not respond in time/)).toBeInTheDocument(); + } finally { + vi.useRealTimers(); + } + }); + + it('does not paint a stale fallback verdict after closing mid-fetch and reopening', async () => { + let call = 0; + vi.mocked(apiFetch).mockImplementation((url: string, options?: RequestInit) => { + const u = String(url); + if (u.includes('/update-readiness')) { + call += 1; + if (call === 1) { + // Hangs until the cleanup abort rejects it. + return new Promise((_, reject) => { + options?.signal?.addEventListener('abort', () => + reject(new DOMException('Aborted', 'AbortError'))); + }); + } + return Promise.resolve(new Response(JSON.stringify(report('ready')), { status: 200 })); + } + return Promise.resolve(new Response(JSON.stringify({ latestAt: null }), { status: 200 })); + }); + + const props = { stackName: 'web', onCancel: vi.fn(), onProceed: vi.fn() }; + const { rerender } = render(); + rerender(); + rerender(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toHaveAttribute('data-verdict', 'ready')); + }); + + it('marks a remote 502 as unreachable and unknown', async () => { + routeApi({ readiness: () => Promise.resolve(new Response('Bad Gateway', { status: 502 })) }); + setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toHaveAttribute('data-verdict', 'unknown')); + expect(screen.getByText(/may be unreachable/)).toBeInTheDocument(); + }); + + it('invokes onProceed without a snapshot when the checkbox is unchecked', async () => { + routeApi(); + const props = setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toBeInTheDocument()); + fireEvent.click(screen.getByTestId('readiness-proceed')); + await waitFor(() => expect(props.onProceed).toHaveBeenCalledTimes(1)); + const snapshotPosts = vi.mocked(apiFetch).mock.calls.filter( + c => String(c[0]) === '/fleet/snapshots' && (c[1] as { method?: string } | undefined)?.method === 'POST', + ); + expect(snapshotPosts).toHaveLength(0); + }); + + it('creates a snapshot before proceeding when checked', async () => { + routeApi(); + const props = setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toBeInTheDocument()); + fireEvent.click(screen.getByLabelText('Create a fleet snapshot before updating')); + fireEvent.click(screen.getByTestId('readiness-proceed')); + await waitFor(() => expect(props.onProceed).toHaveBeenCalledTimes(1)); + const snapshotPosts = vi.mocked(apiFetch).mock.calls.filter( + c => String(c[0]) === '/fleet/snapshots' && (c[1] as { method?: string } | undefined)?.method === 'POST', + ); + expect(snapshotPosts).toHaveLength(1); + }); + + it('halts the update when the pre-update snapshot fails', async () => { + routeApi({ snapshot: () => Promise.resolve(new Response('{"error":"boom"}', { status: 500 })) }); + const props = setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toBeInTheDocument()); + fireEvent.click(screen.getByLabelText('Create a fleet snapshot before updating')); + fireEvent.click(screen.getByTestId('readiness-proceed')); + await waitFor(() => expect(toast.error).toHaveBeenCalled()); + expect(props.onProceed).not.toHaveBeenCalled(); + }); + + it('hides the snapshot checkbox and coverage row from non-admins', async () => { + authState.isAdmin = false; + routeApi(); + setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toBeInTheDocument()); + expect(screen.queryByLabelText('Create a fleet snapshot before updating')).not.toBeInTheDocument(); + expect(screen.queryByText('Fleet snapshot')).not.toBeInTheDocument(); + const coverageCalls = vi.mocked(apiFetch).mock.calls.filter(c => String(c[0]).includes('/snapshots/coverage')); + expect(coverageCalls).toHaveLength(0); + }); + + it('shows the hub snapshot coverage row for admins', async () => { + routeApi({ coverage: () => Promise.resolve(new Response(JSON.stringify({ latestAt: Date.now() - 60_000 }), { status: 200 })) }); + setup(); + await waitFor(() => expect(screen.getByText('Fleet snapshot')).toBeInTheDocument()); + expect(screen.getByText(/most recent fleet snapshot/)).toBeInTheDocument(); + }); + + it('wires Cancel', async () => { + routeApi(); + const props = setup(); + await waitFor(() => expect(screen.getByTestId('readiness-verdict')).toBeInTheDocument()); + fireEvent.click(screen.getByText('Cancel')); + expect(props.onCancel).toHaveBeenCalledTimes(1); + }); +}); diff --git a/frontend/src/context/DeployFeedbackContext.tsx b/frontend/src/context/DeployFeedbackContext.tsx index 605d1318..d6fb3f5f 100644 --- a/frontend/src/context/DeployFeedbackContext.tsx +++ b/frontend/src/context/DeployFeedbackContext.tsx @@ -1,4 +1,5 @@ -import React, { createContext, useContext, useState, useRef, useCallback } from 'react'; +import React, { createContext, useContext, useState, useRef, useCallback, useEffect } from 'react'; +import { apiFetch } from '../lib/api'; import { type ParsedLogRow, parseLogChunk } from '../components/log-rendering/composeLogParser'; import { useDeployFeedbackEnabled } from '../hooks/use-deploy-feedback-enabled'; @@ -44,14 +45,35 @@ export interface DeployPanelState { interface RunResult { ok: boolean; errorMessage?: string; + /** + * Health gate run id from the success response, when the backend started a + * post-update observation. Its presence is the feature signal: an older + * node never returns one, so no gate UI appears. + */ + healthGateId?: string | null; } +/** Post-update health gate state for the current deploy session. */ +export interface HealthGateUiState { + stackName: string; + gateId: string; + trigger: 'update' | 'deploy'; + status: 'observing' | 'passed' | 'failed' | 'unknown'; + reason: string | null; + windowSeconds: number | null; + startedAt: number | null; +} + +const GATE_POLL_INTERVAL_MS = 4_000; + interface DeployFeedbackContextValue { runWithLog: ( params: { stackName: string; action: ActionVerb }, run: (deployStarted: Promise, deploySessionId: string) => Promise ) => Promise; panelState: DeployPanelState; + /** Gate state for the current session, or null when no gate was started. */ + healthGate: HealthGateUiState | null; logRows: ParsedLogRow[]; /** * Epoch ms of the most recent activity for the current session: stamped when @@ -99,9 +121,24 @@ const DeployFeedbackContext = createContext(DEFAULT_PANEL_STATE); + const [healthGate, setHealthGate] = useState(null); const [logRows, setLogRows] = useState([]); const [lastOutputAt, setLastOutputAt] = useState(0); + // Poll timer for the current session's health gate; cleared on panel close + // and whenever a new session starts. + const gatePollRef = useRef | null>(null); + + const stopGatePolling = useCallback(() => { + if (gatePollRef.current !== null) { + clearInterval(gatePollRef.current); + gatePollRef.current = null; + } + }, []); + + // The provider is app-root today, but do not let the interval depend on it. + useEffect(() => stopGatePolling, [stopGatePolling]); + // Idempotent resolver for the current session's deployStarted gate. Set at the // start of each runWithLog call; called by onTerminalReady (stream connected), // onTerminalError (stream failed/dropped), or the connect-timeout fallback. @@ -163,9 +200,83 @@ export function DeployFeedbackProvider({ children }: { children: React.ReactNode sessionIdRef.current += 1; settleStartRef.current = null; streamReadyRef.current = false; + // The gate keeps observing server-side; only this session's poll stops. + stopGatePolling(); + setHealthGate(null); setPanelState(DEFAULT_PANEL_STATE); setLogRows([]); - }, []); + }, [stopGatePolling]); + + // Poll the by-id gate endpoint until a terminal status. The id-scoped read + // means a superseded gate still resolves to its terminal unknown state + // instead of this session showing a newer run's result. Mirrors the backend + // gate's own degradation: repeated failures (or an absurdly long poll) + // resolve to an honest client-side unknown rather than observing forever. + const startGatePolling = useCallback((stackName: string, gateId: string, trigger: 'update' | 'deploy', mySession: number) => { + stopGatePolling(); + setHealthGate({ stackName, gateId, trigger, status: 'observing', reason: null, windowSeconds: null, startedAt: null }); + let strikes = 0; + // Single-flight: skip a tick while one request is outstanding so two + // overlapping responses cannot land out of order. + let inFlight = false; + // Latched once a terminal verdict is applied, so a slow earlier response + // returning 'observing' can never roll the UI back from passed/failed. + let settled = false; + const pollStartedAt = Date.now(); + const giveUp = (reason: string) => { + settled = true; + stopGatePolling(); + setHealthGate(prev => (prev && prev.gateId === gateId ? { ...prev, status: 'unknown', reason } : prev)); + }; + const tick = async () => { + if (sessionIdRef.current !== mySession) { + stopGatePolling(); + return; + } + if (inFlight || settled) return; + // Backstop far beyond the largest configurable window (600s). + if (Date.now() - pollStartedAt > 660_000) { + giveUp('the observation did not report a result in time'); + return; + } + inFlight = true; + try { + const res = await apiFetch(`/stacks/${stackName}/health-gate?gateId=${encodeURIComponent(gateId)}`); + const report = res.ok + ? await res.json() as { + id: string | null; + status: 'observing' | 'passed' | 'failed' | 'unknown' | 'never-run'; + reason: string | null; + windowSeconds: number | null; + startedAt: number | null; + } + : null; + if (sessionIdRef.current !== mySession || settled) return; + // A non-ok response or a missing run (node switched, stack removed, or + // an older node answering) is a strike, not a retry-forever condition. + if (!report || report.id !== gateId || report.status === 'never-run') { + strikes += 1; + if (!res.ok) console.warn('[DeployFeedback] health gate poll returned', res.status); + if (strikes >= 4) giveUp('the gate result could not be retrieved'); + return; + } + strikes = 0; + setHealthGate({ stackName, gateId, trigger, status: report.status, reason: report.reason, windowSeconds: report.windowSeconds, startedAt: report.startedAt }); + if (report.status !== 'observing') { + settled = true; + stopGatePolling(); + } + } catch (e) { + strikes += 1; + console.warn('[DeployFeedback] health gate poll failed:', e); + if (sessionIdRef.current === mySession && strikes >= 4) giveUp('the gate result could not be retrieved'); + } finally { + inFlight = false; + } + }; + void tick(); + gatePollRef.current = setInterval(() => { void tick(); }, GATE_POLL_INTERVAL_MS); + }, [stopGatePolling]); const runWithLog = useCallback( async ( @@ -190,6 +301,8 @@ export function DeployFeedbackProvider({ children }: { children: React.ReactNode sessionIdRef.current += 1; const mySession = sessionIdRef.current; streamReadyRef.current = false; + stopGatePolling(); + setHealthGate(null); // idCounterRef is intentionally not reset; keys must remain globally unique across sessions. setLogRows([]); @@ -239,16 +352,19 @@ export function DeployFeedbackProvider({ children }: { children: React.ReactNode status: result.ok ? 'succeeded' : 'failed', errorMessage: result.ok ? undefined : result.errorMessage, })); + if (result.ok && result.healthGateId && (params.action === 'update' || params.action === 'deploy')) { + startGatePolling(params.stackName, result.healthGateId, params.action, mySession); + } } return result; }, - [isEnabled] + [isEnabled, startGatePolling, stopGatePolling] ); return ( {children} diff --git a/frontend/src/lib/capabilities.ts b/frontend/src/lib/capabilities.ts index c00b0be0..0fdcc136 100644 --- a/frontend/src/lib/capabilities.ts +++ b/frontend/src/lib/capabilities.ts @@ -24,6 +24,7 @@ export const CAPABILITIES = [ 'self-update', 'vulnerability-scanning', 'compose-doctor', + 'update-guard', ] as const; export type Capability = (typeof CAPABILITIES)[number];