From 9e48386d63c4fed4a975a09ac525c6bd31dfe993 Mon Sep 17 00:00:00 2001 From: yuanxy <7258569+yuanxiaoyu@users.noreply.github.com> Date: Thu, 12 Nov 2026 10:22:34 +0800 Subject: [PATCH 1/3] feat(stackchan): add agent tasks dashboard and gateway --- .gitignore | 17 +- AGENTS.md | 19 + README.md | 16 + docs/178-daemon-setup.md | 151 + docs/agent-tasks-setup.zh-CN.md | 135 + docs/agent-tasks-source.zh-CN.md | 9 + docs/agent-tasks-validation.zh-CN.md | 24 + docs/design/agent-tasks-animation-preview.gif | Bin 0 -> 145561 bytes docs/design/agent-tasks-official-preview.png | Bin 0 -> 101853 bytes docs/remote-access.md | 204 + ...1-11-official-stackchan-agent-dashboard.md | 26 + ...1-agent-tasks-official-stackchan-design.md | 68 + .../app_agent_tasks/agent_tasks_config.cpp | 67 + .../apps/app_agent_tasks/agent_tasks_config.h | 8 + .../apps/app_agent_tasks/agent_tasks_model.h | 95 + .../app_agent_tasks/agent_tasks_poller.cpp | 162 + .../apps/app_agent_tasks/agent_tasks_poller.h | 25 + .../agent_tasks_setup_worker.cpp | 122 + .../agent_tasks_setup_worker.h | 26 + .../apps/app_agent_tasks/app_agent_tasks.cpp | 38 + .../apps/app_agent_tasks/app_agent_tasks.h | 17 + .../main/apps/app_agent_tasks/view/OFL.txt | 92 + .../app_agent_tasks/view/agent_tasks_cjk_14.c | 70524 ++++++++++++++++ .../app_agent_tasks/view/dashboard_view.cpp | 125 + .../app_agent_tasks/view/dashboard_view.h | 23 + .../app_agent_tasks/view/generate_font.py | 18 + ...27\344\275\223\350\257\264\346\230\216.md" | 11 + firmware/main/apps/app_setup/app_setup.cpp | 8 +- firmware/main/apps/apps.h | 1 + firmware/main/main.cpp | 1 + firmware/sdkconfig.defaults | 5 +- firmware/tests/CMakeLists.txt | 5 + firmware/tests/agent_tasks_model_test.cpp | 28 + gateway/.env.example | 37 + gateway/.gitignore | 41 + gateway/AGENTS.md | 78 + gateway/LICENSE | 39 + gateway/LICENSE-THIRD-PARTY | 65 + gateway/README.md | 332 + gateway/pyproject.toml | 159 + gateway/stackchan_mcp/__init__.py | 81 + gateway/stackchan_mcp/__main__.py | 12 + gateway/stackchan_mcp/_libs/SOURCES.md | 130 + .../stackchan_mcp/agent_adapters/__init__.py | 136 + .../agent_adapters/claude_transcript.py | 102 + .../agent_adapters/codex_plan.py | 66 + .../stackchan_mcp/agent_adapters/runner.py | 254 + gateway/stackchan_mcp/agent_status.py | 162 + gateway/stackchan_mcp/audio_input_hook.py | 432 + gateway/stackchan_mcp/audio_stream.py | 220 + gateway/stackchan_mcp/beat/__init__.py | 21 + gateway/stackchan_mcp/beat/mode.py | 890 + gateway/stackchan_mcp/beat/tracker.py | 196 + gateway/stackchan_mcp/capture_server.py | 551 + gateway/stackchan_mcp/cli.py | 998 + gateway/stackchan_mcp/esp32_client.py | 1465 + gateway/stackchan_mcp/event_log.py | 189 + gateway/stackchan_mcp/firmware_image.py | 113 + gateway/stackchan_mcp/follow_led_stream.py | 547 + gateway/stackchan_mcp/follow_pose_stream.py | 582 + gateway/stackchan_mcp/gateway.py | 559 + gateway/stackchan_mcp/handlers/__init__.py | 7 + gateway/stackchan_mcp/handlers/audio.py | 21 + gateway/stackchan_mcp/handlers/camera.py | 25 + gateway/stackchan_mcp/handlers/robot.py | 52 + gateway/stackchan_mcp/http_server.py | 422 + gateway/stackchan_mcp/mcp_router.py | 126 + gateway/stackchan_mcp/mdns_advertiser.py | 560 + gateway/stackchan_mcp/notify.example.yml | 21 + gateway/stackchan_mcp/notify_config.py | 235 + gateway/stackchan_mcp/ownership.py | 397 + gateway/stackchan_mcp/protocol.py | 95 + gateway/stackchan_mcp/queue.py | 191 + gateway/stackchan_mcp/server.py | 28 + gateway/stackchan_mcp/stdio_server.py | 3328 + gateway/stackchan_mcp/stt/__init__.py | 62 + gateway/stackchan_mcp/stt/audio_utils.py | 125 + gateway/stackchan_mcp/stt/base.py | 94 + gateway/stackchan_mcp/stt/faster_whisper.py | 217 + gateway/stackchan_mcp/stt/openai_whisper.py | 177 + gateway/stackchan_mcp/stt/orchestrator.py | 684 + gateway/stackchan_mcp/tools.py | 82 + gateway/stackchan_mcp/tts/__init__.py | 90 + gateway/stackchan_mcp/tts/audio_utils.py | 206 + gateway/stackchan_mcp/tts/base.py | 91 + gateway/stackchan_mcp/tts/edge_tts.py | 158 + gateway/stackchan_mcp/tts/elevenlabs.py | 174 + gateway/stackchan_mcp/tts/emoji_expression.py | 80 + gateway/stackchan_mcp/tts/fish_audio.py | 488 + gateway/stackchan_mcp/tts/irodori.py | 329 + gateway/stackchan_mcp/tts/orchestrator.py | 990 + gateway/stackchan_mcp/tts/voicevox.py | 184 + gateway/stackchan_mcp/user_defaults.py | 281 + gateway/stackchan_mcp/wifi_power_save.py | 189 + gateway/tests/_audio_fixtures.py | 46 + gateway/tests/conftest.py | 17 + .../codex_app_server_schema_shape.json | 8 + gateway/tests/test_agent_adapters.py | 196 + gateway/tests/test_agent_dashboard_tools.py | 199 + gateway/tests/test_agent_status.py | 132 + gateway/tests/test_audio_input_hook.py | 315 + gateway/tests/test_audio_stream.py | 167 + gateway/tests/test_audio_utils.py | 223 + gateway/tests/test_beat_mode.py | 467 + gateway/tests/test_beat_tracker.py | 73 + gateway/tests/test_capture_server.py | 270 + gateway/tests/test_claude_transcript.py | 83 + gateway/tests/test_claude_watcher.py | 80 + gateway/tests/test_cli.py | 1248 + gateway/tests/test_codex_plan.py | 75 + gateway/tests/test_elevenlabs.py | 260 + gateway/tests/test_emoji_expression.py | 44 + gateway/tests/test_esp32_client.py | 1452 + gateway/tests/test_event_dispatch.py | 335 + gateway/tests/test_event_log.py | 369 + gateway/tests/test_firmware_upgrade.py | 265 + gateway/tests/test_fish_audio.py | 462 + gateway/tests/test_follow_led_stream.py | 721 + gateway/tests/test_follow_pose_stream.py | 1131 + gateway/tests/test_gateway.py | 410 + gateway/tests/test_http_server.py | 591 + gateway/tests/test_irodori.py | 438 + gateway/tests/test_mcp_router.py | 124 + gateway/tests/test_mdns_advertiser.py | 1093 + gateway/tests/test_multidevice_routing.py | 359 + .../tests/test_multidevice_voice_routing.py | 706 + gateway/tests/test_notify_config.py | 231 + gateway/tests/test_orchestrator.py | 969 + gateway/tests/test_ownership.py | 434 + gateway/tests/test_protocol.py | 94 + gateway/tests/test_send_pcm_audio.py | 440 + gateway/tests/test_send_pcm_stream.py | 572 + gateway/tests/test_stackchan_event.py | 274 + gateway/tests/test_stdio_server.py | 2299 + gateway/tests/test_stt_audio_utils.py | 107 + gateway/tests/test_stt_framework.py | 195 + gateway/tests/test_stt_orchestrator.py | 1202 + gateway/tests/test_take_photo_inline.py | 187 + gateway/tests/test_tts_framework.py | 250 + gateway/tests/test_user_defaults.py | 143 + gateway/tests/test_voicevox.py | 193 + gateway/uv.lock | 2905 + scripts/configure-agent-dashboard-firmware.py | 53 + scripts/install-agent-dashboard-macos.py | 115 + 144 files changed, 113754 insertions(+), 4 deletions(-) create mode 100644 AGENTS.md create mode 100644 docs/178-daemon-setup.md create mode 100644 docs/agent-tasks-setup.zh-CN.md create mode 100644 docs/agent-tasks-source.zh-CN.md create mode 100644 docs/agent-tasks-validation.zh-CN.md create mode 100644 docs/design/agent-tasks-animation-preview.gif create mode 100644 docs/design/agent-tasks-official-preview.png create mode 100644 docs/remote-access.md create mode 100644 docs/superpowers/plans/2026-11-11-official-stackchan-agent-dashboard.md create mode 100644 docs/superpowers/specs/2026-11-11-agent-tasks-official-stackchan-design.md create mode 100644 firmware/main/apps/app_agent_tasks/agent_tasks_config.cpp create mode 100644 firmware/main/apps/app_agent_tasks/agent_tasks_config.h create mode 100644 firmware/main/apps/app_agent_tasks/agent_tasks_model.h create mode 100644 firmware/main/apps/app_agent_tasks/agent_tasks_poller.cpp create mode 100644 firmware/main/apps/app_agent_tasks/agent_tasks_poller.h create mode 100644 firmware/main/apps/app_agent_tasks/agent_tasks_setup_worker.cpp create mode 100644 firmware/main/apps/app_agent_tasks/agent_tasks_setup_worker.h create mode 100644 firmware/main/apps/app_agent_tasks/app_agent_tasks.cpp create mode 100644 firmware/main/apps/app_agent_tasks/app_agent_tasks.h create mode 100644 firmware/main/apps/app_agent_tasks/view/OFL.txt create mode 100644 firmware/main/apps/app_agent_tasks/view/agent_tasks_cjk_14.c create mode 100644 firmware/main/apps/app_agent_tasks/view/dashboard_view.cpp create mode 100644 firmware/main/apps/app_agent_tasks/view/dashboard_view.h create mode 100644 firmware/main/apps/app_agent_tasks/view/generate_font.py create mode 100644 "firmware/main/apps/app_agent_tasks/view/\345\255\227\344\275\223\350\257\264\346\230\216.md" create mode 100644 firmware/tests/agent_tasks_model_test.cpp create mode 100644 gateway/.env.example create mode 100644 gateway/.gitignore create mode 100644 gateway/AGENTS.md create mode 100644 gateway/LICENSE create mode 100644 gateway/LICENSE-THIRD-PARTY create mode 100644 gateway/README.md create mode 100644 gateway/pyproject.toml create mode 100644 gateway/stackchan_mcp/__init__.py create mode 100644 gateway/stackchan_mcp/__main__.py create mode 100644 gateway/stackchan_mcp/_libs/SOURCES.md create mode 100644 gateway/stackchan_mcp/agent_adapters/__init__.py create mode 100644 gateway/stackchan_mcp/agent_adapters/claude_transcript.py create mode 100644 gateway/stackchan_mcp/agent_adapters/codex_plan.py create mode 100644 gateway/stackchan_mcp/agent_adapters/runner.py create mode 100644 gateway/stackchan_mcp/agent_status.py create mode 100644 gateway/stackchan_mcp/audio_input_hook.py create mode 100644 gateway/stackchan_mcp/audio_stream.py create mode 100644 gateway/stackchan_mcp/beat/__init__.py create mode 100644 gateway/stackchan_mcp/beat/mode.py create mode 100644 gateway/stackchan_mcp/beat/tracker.py create mode 100644 gateway/stackchan_mcp/capture_server.py create mode 100644 gateway/stackchan_mcp/cli.py create mode 100644 gateway/stackchan_mcp/esp32_client.py create mode 100644 gateway/stackchan_mcp/event_log.py create mode 100644 gateway/stackchan_mcp/firmware_image.py create mode 100644 gateway/stackchan_mcp/follow_led_stream.py create mode 100644 gateway/stackchan_mcp/follow_pose_stream.py create mode 100644 gateway/stackchan_mcp/gateway.py create mode 100644 gateway/stackchan_mcp/handlers/__init__.py create mode 100644 gateway/stackchan_mcp/handlers/audio.py create mode 100644 gateway/stackchan_mcp/handlers/camera.py create mode 100644 gateway/stackchan_mcp/handlers/robot.py create mode 100644 gateway/stackchan_mcp/http_server.py create mode 100644 gateway/stackchan_mcp/mcp_router.py create mode 100644 gateway/stackchan_mcp/mdns_advertiser.py create mode 100644 gateway/stackchan_mcp/notify.example.yml create mode 100644 gateway/stackchan_mcp/notify_config.py create mode 100644 gateway/stackchan_mcp/ownership.py create mode 100644 gateway/stackchan_mcp/protocol.py create mode 100644 gateway/stackchan_mcp/queue.py create mode 100644 gateway/stackchan_mcp/server.py create mode 100644 gateway/stackchan_mcp/stdio_server.py create mode 100644 gateway/stackchan_mcp/stt/__init__.py create mode 100644 gateway/stackchan_mcp/stt/audio_utils.py create mode 100644 gateway/stackchan_mcp/stt/base.py create mode 100644 gateway/stackchan_mcp/stt/faster_whisper.py create mode 100644 gateway/stackchan_mcp/stt/openai_whisper.py create mode 100644 gateway/stackchan_mcp/stt/orchestrator.py create mode 100644 gateway/stackchan_mcp/tools.py create mode 100644 gateway/stackchan_mcp/tts/__init__.py create mode 100644 gateway/stackchan_mcp/tts/audio_utils.py create mode 100644 gateway/stackchan_mcp/tts/base.py create mode 100644 gateway/stackchan_mcp/tts/edge_tts.py create mode 100644 gateway/stackchan_mcp/tts/elevenlabs.py create mode 100644 gateway/stackchan_mcp/tts/emoji_expression.py create mode 100644 gateway/stackchan_mcp/tts/fish_audio.py create mode 100644 gateway/stackchan_mcp/tts/irodori.py create mode 100644 gateway/stackchan_mcp/tts/orchestrator.py create mode 100644 gateway/stackchan_mcp/tts/voicevox.py create mode 100644 gateway/stackchan_mcp/user_defaults.py create mode 100644 gateway/stackchan_mcp/wifi_power_save.py create mode 100644 gateway/tests/_audio_fixtures.py create mode 100644 gateway/tests/conftest.py create mode 100644 gateway/tests/fixtures/agent_events/codex_app_server_schema_shape.json create mode 100644 gateway/tests/test_agent_adapters.py create mode 100644 gateway/tests/test_agent_dashboard_tools.py create mode 100644 gateway/tests/test_agent_status.py create mode 100644 gateway/tests/test_audio_input_hook.py create mode 100644 gateway/tests/test_audio_stream.py create mode 100644 gateway/tests/test_audio_utils.py create mode 100644 gateway/tests/test_beat_mode.py create mode 100644 gateway/tests/test_beat_tracker.py create mode 100644 gateway/tests/test_capture_server.py create mode 100644 gateway/tests/test_claude_transcript.py create mode 100644 gateway/tests/test_claude_watcher.py create mode 100644 gateway/tests/test_cli.py create mode 100644 gateway/tests/test_codex_plan.py create mode 100644 gateway/tests/test_elevenlabs.py create mode 100644 gateway/tests/test_emoji_expression.py create mode 100644 gateway/tests/test_esp32_client.py create mode 100644 gateway/tests/test_event_dispatch.py create mode 100644 gateway/tests/test_event_log.py create mode 100644 gateway/tests/test_firmware_upgrade.py create mode 100644 gateway/tests/test_fish_audio.py create mode 100644 gateway/tests/test_follow_led_stream.py create mode 100644 gateway/tests/test_follow_pose_stream.py create mode 100644 gateway/tests/test_gateway.py create mode 100644 gateway/tests/test_http_server.py create mode 100644 gateway/tests/test_irodori.py create mode 100644 gateway/tests/test_mcp_router.py create mode 100644 gateway/tests/test_mdns_advertiser.py create mode 100644 gateway/tests/test_multidevice_routing.py create mode 100644 gateway/tests/test_multidevice_voice_routing.py create mode 100644 gateway/tests/test_notify_config.py create mode 100644 gateway/tests/test_orchestrator.py create mode 100644 gateway/tests/test_ownership.py create mode 100644 gateway/tests/test_protocol.py create mode 100644 gateway/tests/test_send_pcm_audio.py create mode 100644 gateway/tests/test_send_pcm_stream.py create mode 100644 gateway/tests/test_stackchan_event.py create mode 100644 gateway/tests/test_stdio_server.py create mode 100644 gateway/tests/test_stt_audio_utils.py create mode 100644 gateway/tests/test_stt_framework.py create mode 100644 gateway/tests/test_stt_orchestrator.py create mode 100644 gateway/tests/test_take_photo_inline.py create mode 100644 gateway/tests/test_tts_framework.py create mode 100644 gateway/tests/test_user_defaults.py create mode 100644 gateway/tests/test_voicevox.py create mode 100644 gateway/uv.lock create mode 100755 scripts/configure-agent-dashboard-firmware.py create mode 100755 scripts/install-agent-dashboard-macos.py diff --git a/.gitignore b/.gitignore index 00741cb06..5faf2630e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,17 @@ .DS_Store -.idea/ \ No newline at end of file +.idea/ +firmware/main/apps/app_agent_tasks/agent_tasks_local_defaults.h +firmware/build-host-tests/ + +# 本机网关环境、运行记录和构建缓存 +.env +.env.* +!.env.example +__pycache__/ +*.pyc +.venv/ +.pytest_cache/ +.ruff_cache/ +*.egg-info/ +captures/ +/user-defaults.toml diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..db1569158 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,19 @@ +# StackChan 官方固件与 Agent 看板 + +本项目以 `m5stack/StackChan` 为固件基础。`firmware/` 保持官方 ESP-IDF 6.1、Mooncake、HAL 与 Setup 架构;`gateway/` 是来自 `kisaragi-mochi/stackchan-mcp` 的独立 Python 进程,保留上游许可证。 + +## 架构与检查 + +- Codex/Claude 适配器经 MCP 写入网关快照;设备每秒通过 Wi-Fi HTTP 读取 `/agent-dashboard`。 +- 网关其它 WebSocket 设备控制功能依赖其上游替代固件,不代表本项目官方固件支持这些功能。 +- 网关检查:`cd gateway && uv run --locked pytest && uv run --locked ruff check .`。 +- 固件宿主检查:`cmake -S firmware/tests -B firmware/build-host-tests && cmake --build firmware/build-host-tests && ctest --test-dir firmware/build-host-tests --output-on-failure`。 +- 固件构建、设备配置及已验收范围见 `docs/agent-tasks-setup.zh-CN.md`、`docs/agent-tasks-validation.zh-CN.md`。 +- 面向单用户家庭局域网,优先验证实机主要路径;审查建议应友好,样式问题标为非阻断。 +- 不提交 `.env`、令牌、本机默认头文件、会话数据、设备备份或构建产物;日志不输出令牌或聊天正文。 + +## StackChan 待办同步 + +本机已安装 Agent 看板时,Codex 主会话在制定、调整、完成工作计划时同步短标题与状态。使用 `~/.local/share/stackchan-agent-dashboard/.venv/bin/python -m stackchan_mcp.agent_adapters.runner codex-plan`,通过 stdin 提交 JSON:`{"stage":"实现","plan":[{"step":"短任务标题","status":"in_progress"}]}`。会话 ID 使用 `CODEX_THREAD_ID`,最多 12 项,状态为 `pending`、`in_progress`、`completed`;缺少命令或会话 ID 时继续工作,不伪造 ID。 + +监视器负责合并计划与生命周期后经 MCP 上报;不要同时用完整快照覆盖同栏。子 Agent 不提交主栏计划。只提交短标题和状态,不上传提示词、正文、路径、工具参数或推理内容。 diff --git a/README.md b/README.md index 9cf3f7f8a..06ef3aee0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,19 @@ +# StackChan · Agent 待办看板 + +基于 M5Stack 官方固件扩展:在独立 `AGENT TASKS` 菜单中,左侧显示 Codex、右侧显示 Claude 的状态、阶段与待办,支持进行中优先排序、转圈图标和动态省略号。 + +- [中文安装与使用说明](docs/agent-tasks-setup.zh-CN.md) +- [验证记录与已知限制](docs/agent-tasks-validation.zh-CN.md) +- `firmware/`:官方 ESP-IDF / Mooncake 固件及看板 App。 +- `gateway/`:独立 Python MCP 网关与 Agent 适配器,读取本机会话状态,经 MCP 更新快照。 +- `scripts/`:macOS 常驻服务安装与本机固件默认配置脚本。 + +设备通过 Wi-Fi HTTP 拉取快照;网关的其它 WebSocket 设备控制功能面向其上游替代固件,本项目官方固件不提供那些设备控制功能。公开源码不含个人令牌。网关源码及第三方许可见 [gateway/LICENSE](gateway/LICENSE) 与 [gateway/LICENSE-THIRD-PARTY](gateway/LICENSE-THIRD-PARTY)。 + +![双栏看板预览(设计示意)](docs/design/agent-tasks-official-preview.png) + +以下保留官方项目介绍。 + # StackChan Open-Source diff --git a/docs/178-daemon-setup.md b/docs/178-daemon-setup.md new file mode 100644 index 000000000..2a8209430 --- /dev/null +++ b/docs/178-daemon-setup.md @@ -0,0 +1,151 @@ +# Issue #178 Daemon Setup + +The gateway now has two supported MCP server modes: + +- **stdio mode**: `stackchan-mcp` with no subcommand. This is the original + single-client mode used by existing MCP client configs. +- **daemon mode**: `stackchan-mcp serve --transport streamable-http`. This + starts one long-lived gateway process, keeps one ESP32 WebSocket connection, + and accepts multiple MCP clients over Streamable HTTP. + +Use daemon mode when more than one MCP client or automation needs to share the +same StackChan device. Keep stdio mode for simple local setups, compatibility +testing, and existing clients that do not yet support Streamable HTTP. + +## Start the daemon + +```bash +cd gateway +uv run stackchan-mcp serve --transport streamable-http +``` + +The daemon starts the same ESP32 WebSocket listener and capture server as stdio +mode, then exposes the MCP endpoint at: + +```text +http://127.0.0.1:8767/mcp +``` + +The zero-subcommand stdio entry point remains supported and unchanged: + +```bash +stackchan-mcp +``` + +`stackchan-mcp serve --transport stdio` is equivalent to the zero-subcommand +stdio path. + +## Environment variables + +| Variable | Default | Purpose | +|---|---:|---| +| `STACKCHAN_TOKEN` | unset | Bearer token shared with the ESP32 firmware and, when set, required by HTTP MCP clients. | +| `BEARER_TOKEN` | unset | Legacy alias used only when `STACKCHAN_TOKEN` is unset. | +| `MCP_HTTP_HOST` | `127.0.0.1` | Bind host for the Streamable HTTP MCP endpoint. | +| `MCP_HTTP_PORT` | `8767` | Bind port for the Streamable HTTP MCP endpoint. | +| `MCP_HTTP_ALLOWED_HOSTS` | unset | Comma-separated Host / Origin allowlist for non-loopback clients, for example `192.168.1.10,stackchan.local:8767`. | +| `STACKCHAN_COMMAND_QUEUE_SIZE` | `32` | Maximum queued ESP32-bound tool calls before the daemon returns backpressure. | + +The existing gateway variables (`HOST`, `WS_PORT`, `CAPTURE_PORT`, +`VISION_HOST`, `VISION_URL`, `VISION_TOKEN`, and audio hook settings) keep the +same meaning in daemon mode. + +## Bind safety + +Loopback binds (`127.0.0.1`, `::1`, or `localhost`) may run without an HTTP +bearer token for local development. + +Non-loopback binds, such as `0.0.0.0` or a LAN IP address, require +`STACKCHAN_TOKEN` or `BEARER_TOKEN`. Startup is refused otherwise: + +```text +stackchan-mcp: refusing non-loopback MCP_HTTP_HOST without STACKCHAN_TOKEN or BEARER_TOKEN +``` + +When a token is configured, every request to `/mcp` and `/status` must include: + +```text +Authorization: Bearer +``` + +`/healthz` is intentionally unauthenticated so local process monitors can check +whether the daemon is alive. Host and Origin headers are still validated on all +daemon endpoints. + +For wildcard binds such as `MCP_HTTP_HOST=0.0.0.0`, loopback Host values +(`127.0.0.1`, `localhost`, `::1`) are accepted by default. LAN clients usually +send the machine's LAN IP or DNS name in the `Host` header, so add those values +to `MCP_HTTP_ALLOWED_HOSTS`: + +```bash +STACKCHAN_TOKEN=your-secret-token-here \ +MCP_HTTP_HOST=0.0.0.0 \ +MCP_HTTP_ALLOWED_HOSTS=192.168.1.10,stackchan.local:8767 \ +stackchan-mcp serve --transport streamable-http +``` + +## MCP client configuration + +Use a Streamable HTTP MCP client pointed at `/mcp`. Example +`mcp.config.json`: + +```json +{ + "mcpServers": { + "stackchan-mcp": { + "type": "streamable-http", + "url": "http://127.0.0.1:8767/mcp", + "headers": { + "Authorization": "Bearer your-secret-token-here" + } + } + } +} +``` + +If no `STACKCHAN_TOKEN` or `BEARER_TOKEN` is configured and the daemon is bound +to loopback, omit the `headers` block. + +## Operational endpoints + +`GET /healthz` returns daemon-local health: + +```json +{ + "ok": true, + "esp32_connected": true, + "queue_depth": 0, + "queue_capacity": 32, + "owner_id": "stackchan-mcp-1234abcd" +} +``` + +`GET /status` returns the same gateway status as the `get_status` MCP tool, +plus `queue_depth`, `queue_capacity`, and `connected_clients`. + +## Migration notes + +Existing stdio configs do not need to change. The following remains valid: + +```json +{ + "mcpServers": { + "stackchan-mcp": { + "type": "stdio", + "command": "stackchan-mcp" + } + } +} +``` + +To migrate, start the daemon as an independent process first, then point each +Streamable HTTP-capable MCP client at `http://127.0.0.1:8767/mcp`. Once a +client uses the daemon, it should not also spawn `stackchan-mcp` in stdio mode +for the same device, because the daemon is the process that owns the ESP32 +WebSocket. + +The daemon keeps a single bounded FIFO command queue for ESP32-bound tool +calls. `get_status` bypasses the queue because it reads gateway-local state. +When the queue is full, the daemon returns a JSON-RPC error with code `-32000` +and message `stackchan command queue is full`; it does not buffer commands +without a limit. diff --git a/docs/agent-tasks-setup.zh-CN.md b/docs/agent-tasks-setup.zh-CN.md new file mode 100644 index 000000000..99f3e5b18 --- /dev/null +++ b/docs/agent-tasks-setup.zh-CN.md @@ -0,0 +1,135 @@ +# Agent 待办看板配置说明 + +看板左栏显示 Codex,右栏显示 Claude。StackChan 通过 HTTP 读取 `stackchan-mcp` 网关的状态快照;网关地址和 Bearer 令牌在设备设置页配置。界面显示状态、阶段和任务标题,不显示提示词、对话正文、文件路径或工具参数。 + +## 启动共享网关 + +本仓库 `gateway/` 包含已扩展的独立 Python MCP 网关、Codex/Claude 适配器与测试。上游为 [kisaragi-mochi/stackchan-mcp](https://github.com/kisaragi-mochi/stackchan-mcp);请从本仓库安装,PyPI 的上游版本未必包含看板接口。 + +### macOS 自动启动 + +先安装 Python 3.12 与 `uv`,在本仓库根目录执行(替换为电脑实际局域网 IPv4): + +```bash +python3 scripts/install-agent-dashboard-macos.py --host-ip 192.168.1.20 +``` + +安装器依据 `gateway/uv.lock` 安装到 `~/.local/share/stackchan-agent-dashboard/.venv`,注册网关、Codex、Claude 三个 LaunchAgent。随机令牌保存在 `~/.config/stackchan-agent-dashboard/设备连接信息.txt`(仅本人可读写);重新安装保留令牌。日志在 `~/Library/Logs/StackChanAgentDashboard/`。修改源码或电脑 IP 后重新运行安装器,更新设备配置。 + +安装器不修改 Codex 或 Claude 的全局配置,也不发起模型请求。停止服务: + +```bash +launchctl bootout gui/$(id -u)/io.stackchan.agent-dashboard.codex +launchctl bootout gui/$(id -u)/io.stackchan.agent-dashboard.claude +launchctl bootout gui/$(id -u)/io.stackchan.agent-dashboard.gateway +``` + +如需永久取消登录启动,再移除对应的 `~/Library/LaunchAgents/io.stackchan.agent-dashboard.*.plist`。 + +### 手动启动 + +在仓库 `gateway/` 中执行以下命令(适用于 zsh;令牌需提前生成并在设备与客户端保持一致): + +```bash +cd gateway +export MCP_HTTP_HOST=0.0.0.0 MCP_HTTP_PORT=8767 +export MCP_HTTP_ALLOWED_HOSTS='192.168.1.20' +export HOST=127.0.0.1 WS_PORT=18765 CAPTURE_PORT=18766 +read -s 'STACKCHAN_TOKEN?输入网关令牌:' +export STACKCHAN_TOKEN +uv run --locked stackchan-mcp serve --transport streamable-http --no-mdns +``` + +Codex 和 Claude Code 应连接同一个网关的 `http://<电脑局域网地址>:8767/mcp`,并使用相同 Bearer 令牌。StackChan 使用 `http://<电脑局域网地址>:8767` 作为基础地址,读取受令牌保护的 `GET /agent-dashboard`。不要把网关暴露到公网,也不要将令牌提交到仓库。 + +## 配置 StackChan + +公开源码不包含个人网关地址或令牌。设备连上 Wi-Fi 后,在 Launcher 的 `SETUP` → `Apps` → `Agent 看板` 中分别设置地址和访问令牌,点“测试”确认连接,再点“保存”。地址只填写基础 URL,例如 `http://192.168.1.20:8767`,不要附加 `/mcp` 或 `/agent-dashboard`。令牌必须与网关的 `STACKCHAN_TOKEN` 相同。已有个人定制固件也可能预置本机默认值;默认值不会随本仓库发布。 + + +设备应与网关处于可互相访问的网络。`localhost` 指设备本身,不能用来连接电脑。网关快照端点为 `GET /agent-dashboard`,须带相同 Bearer 令牌。 + +### 可选:生成本机固件默认值 + +macOS 安装器执行后,可在本仓库根目录运行: + +```bash +python3 scripts/configure-agent-dashboard-firmware.py +``` + +脚本读取本机配置,生成权限为 `0600` 的 `firmware/main/apps/app_agent_tasks/agent_tasks_local_defaults.h`,不打印令牌。该文件被 Git 忽略;随后重新构建的个人固件会回填空配置,保留 NVS 中已有非空值。没有此文件也可正常构建,通过设备设置页配置即可。含默认令牌的个人固件也应仅供本人使用。 + +## 状态和待办数据 + +每栏按“进行中 → 待办 → 已完成”稳定排序,同状态保持来源顺序。Claude 的任务超过 12 项时,先排序再选择可见任务,避免正在执行的任务被截掉。工作且在线时显示转圈、动态省略号与进行中标记轻微闪动;等待输入时显示动态省略号;完成、离线或过期后停止动画。 + + +Agent 通过 MCP 工具 `agent_update_snapshot` 更新自己的状态。任务按 pending、in_progress、completed 显示;Agent 状态包括 idle、working、waiting、completed、failed。网关在 45 秒未收到心跳后将来源标记为过期,仍保留最后任务。 + +Codex Desktop rollout 监视器是可选的本机实验适配器。它仅处理 `originator` 明确为 `Codex Desktop` 的 rollout,读取回合开始、完成、中断事件,不读消息正文。启动方式: + +```bash +cd /path/to/StackChan/gateway +export STACKCHAN_MCP_URL=http://127.0.0.1:8767/mcp +read -s 'STACKCHAN_TOKEN?输入与网关相同的令牌:' +export STACKCHAN_TOKEN +uv run python -m stackchan_mcp.agent_adapters.runner codex-watch +``` + +已检查的真实 Codex Desktop rollout 含 `task_started`、`task_complete`、`turn_aborted` 事件,但未包含计划清单。适配器自动汇报工作状态;待办使用下面的显式计划入口。`CODEX_SESSIONS_DIR` 可指定其他本机会话目录。使用 macOS 安装器后无需重复启动该监视器。 + +### Codex 计划同步 + +本仓库 AGENTS.md 已要求 Codex 主会话在计划变化时同步待办。其他项目可把同一段“StackChan 待办同步”说明加入自己的 AGENTS.md。以下命令应从需要展示的 Codex 主会话执行,自动采用该会话的 `CODEX_THREAD_ID`: + +```bash +~/.local/share/stackchan-agent-dashboard/.venv/bin/python \ + -m stackchan_mcp.agent_adapters.runner codex-plan <<'JSON' +{"stage":"设备验证","plan":[{"step":"完成固件构建","status":"completed"},{"step":"验证实机显示","status":"in_progress"},{"step":"验证蓝牙连接","status":"pending"}]} +JSON +``` + +每次提交替换此会话的完整待办,最多 12 项;空列表清空。也可显式传 `session_id`,必须是需要展示的真实 Codex 主会话 ID。计划在本机以仅用户可读写的文件原子保存,监视器约 0.5 秒内读取并经 MCP 推送;设备再按 1 秒周期拉取。计划与自动生命周期使用同一个上报来源,心跳不会清空任务;其他会话不继承此清单。已结束回合显示“已完成”,未完成的任务仍按原状态保留。 + +这依赖 Codex 按项目说明主动同步计划,不是从聊天正文猜测任务,也不是已验证的桌面原生计划事件订阅。 + +Claude Code 使用本地 transcript 增量监视器,无需安装 Hook: + +```bash +cd /path/to/StackChan/gateway +export STACKCHAN_MCP_URL=http://127.0.0.1:8767/mcp +# STACKCHAN_TOKEN 与网关一致 +uv run python -m stackchan_mcp.agent_adapters.runner claude-watch +``` + +默认读取 `~/.claude/projects/*/*.jsonl`,可用 `CLAUDE_PROJECTS_DIR` 改目录。只展示最近活动的主会话,排除子 Agent;成功的 TaskCreate、TaskUpdate、TodoWrite 结果更新任务,结束回合保留清单。仅读取任务标题、状态和生命周期,不上传聊天正文、任务描述或工具参数。没有创建任务的会话显示“暂无待办任务”。`online` 表示监视器心跳正常,回放的已结束会话仍显示“已完成”,不代表模型正在执行。 + +Claude 的既有会话回放已通过监视器 → MCP → HTTP 验证,包括 12 项任务。请使用自己已安装的 Claude Code 正常工作;新会话需实际调用任务工具后才会有待办。新 Claude 会话实时任务生成仍待单独验收。使用 macOS 安装器后无需重复启动 transcript 监视器。 + +每栏采用完整快照;请为一个 Agent 只选择一个上报来源。若会话需手动调用 `agent_update_snapshot`,先停止对应监视器,以免监视器的下一次心跳覆盖手动待办。`claude-hook` 是保留的实验入口,当前推荐 transcript 方案。 + +## 验证与限制 + +- 网关需保持运行;Agent 和设备须能访问同一个服务。 +- Codex 状态自动采集;待办由 Codex 显式计划同步入口提供,桌面原生计划事件仍未观察到。 +- Claude 没有任务工具记录时,右栏清单为空;不会用旧会话任务填充新会话。 +- StackChan 蓝牙广播不用于此功能;设备使用 Wi-Fi HTTP 读取看板。 +- 网关或 Wi-Fi 暂时不可用时,设备保留最近一次成功取得的快照。 + +## 官方固件构建 + +使用本仓库 `firmware/` 的官方固件,目标为 ESP-IDF 6.1、BOARD_TYPE_M5STACK_STACK_CHAN、Quad PSRAM。先加载 ESP-IDF 6.1 环境,再执行: + +```bash +cd firmware +python3 fetch_repos.py +idf.py build +``` + +生成 `firmware/build/stack-chan.bin`。不要使用 stackchan-mcp 上游仓库中的替代固件。 + +应用镜像写入 `0x20000`,大小必须小于 `0x4f0000`;常规刷写保留 NVS、分区表和 otadata。设备配置使用独立 NVS 命名空间 agent_tasks。若复位日志仍显示 DOWNLOAD(USB/UART0),须松开下载按键并通过实体电源键关机再开机;镜像校验成功不代表已启动。 + +看板使用 SIL OFL 思源黑体衍生的 14 px 常用中文字库,支持 GB2312 常用字符。罕见汉字和 Emoji 建议改写为常用中英文。 + +界面布局预览(示例任务,非设备实拍):![官方 App 看板预览](design/agent-tasks-official-preview.png) diff --git a/docs/agent-tasks-source.zh-CN.md b/docs/agent-tasks-source.zh-CN.md new file mode 100644 index 000000000..ebf0eb848 --- /dev/null +++ b/docs/agent-tasks-source.zh-CN.md @@ -0,0 +1,9 @@ +# 来源与整合说明 + +此项目以 [M5Stack/StackChan](https://github.com/m5stack/StackChan) 的 `28b9f0c8bd6acd81cb3c70f1a93c3e373b39d400` 为基础,增加官方 Mooncake Agent Tasks 应用。 + +`gateway/` 来自 [kisaragi-mochi/stackchan-mcp](https://github.com/kisaragi-mochi/stackchan-mcp),附带本项目的 Agent 快照 HTTP 接口、Codex/Claude 适配器及回归测试。网关保持独立 Python 进程,不与固件静态链接。上游许可证完整保留在 `gateway/LICENSE` 与 `gateway/LICENSE-THIRD-PARTY`。 + +本次整合不包含上游替代固件的 SCServo_lib 文件,也不以替代固件覆盖官方固件。早期替代固件实验与原网关工作区保存在本机整合前备份中;当前发布只保留官方固件实施路径。 + +`scripts/install-agent-dashboard-macos.py` 将当前源码安装到独立运行目录;`scripts/configure-agent-dashboard-firmware.py` 可从本机服务配置生成被 Git 忽略的个人默认头文件。仓库不包含个人令牌、会话记录、设备备份、编译产物或平台虚拟环境。 diff --git a/docs/agent-tasks-validation.zh-CN.md b/docs/agent-tasks-validation.zh-CN.md new file mode 100644 index 000000000..c0545972b --- /dev/null +++ b/docs/agent-tasks-validation.zh-CN.md @@ -0,0 +1,24 @@ +# Agent 待办看板验证记录 + +## 已完成验证 + +- 基于官方 m5stack/StackChan 1.6.2 新增 Mooncake Agent Tasks App,目标板为 M5STACK_STACK_CHAN、Quad PSRAM。 +- 官方 ESP-IDF 6.1 构建成功,应用镜像小于 0x4f0000 分区限制。 +- 网关测试 914 passed、5 skipped,Ruff 通过;官方固件宿主 CTest 2/2 通过。 +- MCP ClientSession、Codex Desktop 监视器和 Claude transcript 监视器均已验证能经 MCP 更新快照,并由 HTTP 接口按 Codex、Claude 顺序返回。 +- Codex 显式计划、Claude 最多 12 项任务、心跳续期和过期行为均已通过网关侧验证。 +- StackChan 已刷入新固件并正常启动。用户确认 AGENT TASKS 双栏任务和动画正常,默认连接配置已在本机固件完成实机验收。 +- 中文字体支持 ASCII 与 GB2312 常用字符;字体及许可随源码附带。 + +## 实机剩余项 + +用户已确认设备正常进入头像或菜单,之后在 AGENT TASKS 中看到双栏任务与动画。该确认覆盖基本实机路径;滚动、返回头像和网关断线恢复尚未单独验收。 + +## 2026-11-12 默认配置、排序与动画更新 + +- 最终本机镜像为 4,292,768 字节,应用分区余量 17%;刷写与独立校验通过,未改写 NVS、otadata 或分区表。 +- 默认配置通过 NVS 替身验证:缺少配置时使用本机默认值并持久化,已有非空值保留。本机默认配置文件由 Git 忽略,不包含在公开源码中。 +- 双栏快照稳定排序回归测试与任务更新后重新排序通过;Claude 第十三项任务变为进行中时能进入可见清单。生产快照确认两栏状态顺序正确。 +- 网关完整测试:914 passed、5 skipped;Ruff 通过。官方宿主 CTest 2/2 通过。 +- 用户在新固件打开 AGENT TASKS 后明确确认“双栏任务和动画正常”,默认连接与动画实机验收通过。动画预览 GIF 为设计示意,不是实机录像。 +- 实机验收通过双栏、任务排序、默认连接和动画;滚动、返回头像与网关断线恢复仍待单独检查。 diff --git a/docs/design/agent-tasks-animation-preview.gif b/docs/design/agent-tasks-animation-preview.gif new file mode 100644 index 0000000000000000000000000000000000000000..e495ac9e855817e5e45f57a74153021c0358a6c3 GIT binary patch literal 145561 zcmV)QK(xO{Nk%w1VZZ~>0*3$qO_>Fwg^>+7?7=C66-=j!0*>fq+--{$Jy<>=n! z>D}Y!+~Vfj;^o@m0nT(Q`ik+N_nVpH7n}?d2hnbs(nV5!{nTMC0gqN0rm6U~)mw}U$hLM+t zj+2Frl7fnkf02@XkB@$hl5CZaPmzXqi;I4Uj(UiVcZi8?hlPxTczS||cY%g>euH>? zfOCb1a)X3&f{1i}g>!p=aDjqve}!&;fNg$&ZG3-fdwhy`WN>(WZFYNTczR}ccxH8Y zb#iWLa(8BNcV}*MWo~nFV^mUjbYF0CUT$z=YjI&}a9nI|TWW1gYiV9+ZCPk*U1e)q zWNKMrXjf-yRb*#RV`NufWm8~dQD9?GUSU&PVNqLOP*`3~TwhIBTufD4N?Bb>SX)Y0 zSwdJ@Qc_Y$QdmY)S42`)LQqshPE-AMoc$GNIFAFH$+G-Lqs@0Mm9b~Gd@HzK0_@%KsPu#GCM*rIzTTtJ}fysEH^zX zHajmgIVv5M} zF&->0ASy5$D=Z=@FB&N;8YwCnDJ~``EhQ%{B_}K%C@&o-E*&Q>949RuCM+8zEE**& z8YC+jBq|vrDHtOu7$PYcA}ALkC>J3p79b}TASM(bCKVqh6dxrN9wihVBoiJa6CETH z9U~GPBM=uJA^!_bMO0HmK~P09E-(WD0000X`2+w40000i00000zyr_%00{p8{|OvO zu%N+%2oow?$grWqhY%x5oJg^v#fum-YTU@NqsNaRLy8 zoJq5$&6_xL>fFh*r_Y~2g9;r=w5ZXeNRujE%CxD|r%fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R z$B-jSo=my2<;$2eYu?Pcv**vCLyI0wy0q!js8bIG$GWxa*RW&Do=v;9?c2C>>)y?~ zx9{J;g9{%{ytwh*Gs!7m&b+zv=g^}|pH98H_3PNPYv0bjyZ7(l!;AkPPd@w3p)+<(X)v zspg3!k?H1}aK@S5MQhe+=bd=oCz70e_UY%JvQ?DlpoA7`D0CqKs_3GOhAHTwkVY!$ znIJW4>7|&`IMJk>cIs)59%U-(sHAEb(Wj`Usw#;cmFnuNu(tnq>Z-KXYO8)6#j5MB zy#Dskt-uB=Yjy0246E+Ch-Q@ODMJ7u@4WO15lOVTL4!sR^!5vc5U1qUi@);<(JUH~^nx#L0~72p zz0kB~3%zLEwv7<;4#91y4SgE!03e4fauJE73tcTD!!q75A`ei@b+Cv$%yp=QOh9xf zw`{YxB-diHbvf%Sbjvfd%cZ-P_7d;I^bR4+ZINKibjI4+*6`Hw3Zcj~3}fwZ#I2!0 zZ`HI#GWN!#cFbulMGUQT5idU%^Z+W0mq^Qgz$`P(Hsk;7w$213;tbG#|6R1vS|ZJ; zE&Te+EWtw9LfbcDL*975K}cTP)n5Or$ilO6-nqPBvnI^t8q;=-)Id~>_NZ!03JU>3 zlUsY-&COkRcx{VJz|Ygg9P;7R)eQ2@Cl?NQ$<)oQ{N9Ksj!~nhTny*B{>hfknj-YloNNFnuORsE zb(e}Aq!K~9oh4!z>3RmZdIz#1$Sq~!VcGFQw!7d#uR6vX0P-#vvLg85gnkfL16x*v zXG~{qJd2?WV>r0zWodegv)&NM_L^-df?q=5;cNfQMltloMrrjr;A=Q1z}9rb7K#90 z_>|}xCjMr18Ji6>E~f|trcEJ}s>KQi05|A7!w4b2E z&S_(F!~w1`lCg%#r037hf>!H8bW)Iucn3^jIs4DzmmIOS{IBWpv&)-VzXU9`a%uZy9ASm6EIjCjw z#+eX(7;)H{HTwZ)Vp(Ju>c}}SNyY}F1+3;beFIV;xYIS|OXoY`3C8dYAW6ztApro{ z9b|gvZvUKP96cCN>)cVH!gS6YMM%?H=98g!a;R?TMIfdMhk&CTPBcAAo2h=XoVAH& zHob|}-w%Hbc1!`0}e&Qw;RrRa*18tB4ue$CA}j@$^p1cqEP$ zTClCQ^iI%Do6Dm{XQ*|Q&QF24Q0o6YL#Fj4hg<)eroi5&um=L}Z%Vq^-<(36ykVpe zt~%D+Se2{I4NmzCXu8G)L5QDaRA{*)v>gqVui)9Oc5u4a<&bx$ukEEBf7#dCQb(^r z6)$hQRb@*>t1}&u zcL1^Fj(o90!NV!TW-c_SdS%PrJf`-A2yJgr=X*4ZJXBr?%5QQDMjYk#rlj4pY-DHi z4F?}My1@};5QK4z#t8wy5%$w|yVG49Q4o*c*)ZX7$s7u;b!yg=QG3c?cSuGZ2~>y~rvT1dCJA}ADi`%T_DL0Ac2Hx-j z8#`*{cR#_LUS9ihptS#e_n}AZJmrbJ-z)m}Y-Fr#fR{Np1BWENa!k^l`)1*EZuk(- z2I|pG95y9woy9MXko#!dLL49T$FE~$S?U@(@$NOsA6=ab<2v8^emTrjBy-v1d_8Ap zuDlZdn}SPw#_~$+w&RSOhbs|({NrDz$McU@bWhH)PxUq(XwfrA)@RtPGd zhjRlsA6)+k4#YJaW(arxqITV98`1Q43rK^bRyr4xXKolLa2SWV7a`wugnwuqLxn=D z*ou0!dE{_zhM0V0lz-EqS0Q+ZiAZ*fC|HenX1}N#+ptl>@riM_8zt3ko9G&gC3oB> zbhhyg)HZaX7K)C7e)=JY{n2<-=5d4=Y)=>+C-@vIBzDe0L1I^eF%^y^hD7)?Ca8_(r^MCX8*XmI>!T%A~b=u}zOSS6!qAKJ(t@a2Ap=w&Mei_T$r&oPeF z;fGgNg02LSy7-PJ5|6DhkA@VCy5V+N^Lo62KLjZoCFP9IXdA~>FeV9m)hLXt(`hfc zb_M?#gxI(r38^1`*h1dekh@k_6^U*u_l@Rde_+>q7e)ZfcZjLTk^a_;za^6I0g};l zbgm%`Xb_WHbsG(qhRX;Jkw8ftMR&ddRYIU`Fjz2bnUhj-kWN>M0pd#L$Q;7}lu#Iz zx5$p-=$Ai99nO$}lqVg=J*8<|yc<{2gEnVumNAr~e>=Tbuw^f5NGd6<`ZGZaT^C5Y5Pk<9^|MF0zcGz{-4 zLLo?RCUinP<45}@pnK_~K5Cl<>K_N%FNC$AWa%)E<2V-D8Vy=7BbqfH%6(pAFSj8& zM%R{cSE4ADhA%oJF)E{I1tB$RGg2x-@ui2j#Es>Zgha`BuEeK(ilxfYa)tkcpUnfP zRG6g_vZWDKsSa}-wjf0hGX&5G4yT~04&yX!Iyze8okfR8p0u1}%8ZC5r*#@5cZ#QZ z8X&N6sBUwlwAFzYG*nHhP!M@W`sS$gsXT#0rMcRHcPXj3Qk-RGsm_|9#Nk7rYCf*2 znH(Cbt9q)Kb1(_hSPIGxN|>z5iXR7xpwH^8>!F<@dM(dVt+FvK)v_$jG6dOTt`_SXv1);I z`5)r&pDM(!=aO4U(y=K-F67d$bvUrKQm_Vlun={zFl&1iXdykRvNr!qC@kBuE_+BZ z+p~d(t`SnRH#@X-lCwIyvsmM^N-K&$8?@?4v`~8}M!U3B8(|sCA2S-YT8p#HTD4v~ zfme&QTRXPO)U{uGwiXw*WV^ODG_`2^w%ek%Y&*B>;(3}T=PDQOC(S{zV-0x0kYQ=CeWdk8G>2D3mN;!pxSPzZeJ9h6WB zBFh|_Fa~2_3HZSTCvXCHV8zLV#pwYC0000e02`$M01N*R179p0C{V~?P{v*axg$`> zVL%;}P{<1q$K0_C3jhEbpb6741%=E6_;CV-JOzL}NP>JE(f|R4OvbOl1BI*u?(xU~ z5XqAKI(iEVg&Y9BKpiho$Vu=W&tL+DYyl~&9Ha~YrhFf$3;?RU%F)xx#sLV090Ahs z8qA;og=`A949UC9%RBrWEKtZZKpmq{$N-QE-XRXO3;+S(3DnWd&ukyjJk8W>G}cTU z-QWS13>$Y)$RqF`xU9?L{J7=Z9F@S%4*k%DtOjii(G<t2VZhEy zU>zL|%^wZY>>|=Vz0@ad8{3f6Pyic^P{0(C*PdduxKIkpz1+;r z+!#>EFVNi5z1*%)8`5wAg)9cJ0SUOx*suR_*4)xUC|j}+?`^? zsSN-Wkvh(F&DZ0QAfpBM<;A5X{Rl1M-~Xb`0Iq;Rpcm0FuBQ z%8&sxU;2faf=FC9@J9n!wv(f3F4(h%r>Z4BP;=$_DOdguB z(y=hgxsDyXJ{`Uu9l-AC!hYy~y&Dr=?7qPZu3gKn!3s1E03Oa7&%PU&uIV#f?O%@V zj40+~zSZ3!-(Jqnye=KXkO74(=g|@9)p739k?zp3?uFj&g!JyZ5%0ip4Y!T#tsxB^ zP{0S%zZLx1## z&>R-u>#hDA8qe`k>+!h(^1p!u?40k(ZUpQM39qs8xzX~oLG3U<@G=i@27jJ5zZ_Gr z18m>+ZqN454FDYQ_H@tozd#*JAnxSg2@C%RN?*u3?;IHK^uZ4G9e={;O;! zP+;%iPzdad1F+%sxB>REA@;Em^JQ=LTuLNE?CtvO9dE$SC7>L9@8y2a97_)!gYO(q zZ}?n`_~@bdyI~6X9sr-f2KFuu>J0!BfY_A2)OP?Im>(OOFV$q<`7C($XwU88A^PB9 z-|TDx+;IdEJsqw89IyZ19I-F^u1gW`Vf(sq48K1H;K2Kh&KjW>p}{``9hz7eG2xMcY9ty|FmTpIawi5B zym)9}29707oa6#)(l2`9t zzIS)xq={4xK-T9$mU~$T@l>fntLztWu7_F-IMbDPbTeb_BAa-5MmaNF$GAYe688U;5Ew%6^x#URs ztqbMj{7q?$6JCZnW|?Pxc}@UIpjjM=2v*3MF+91bL&!7|FGS1EYdC48m;UTw(gv;7 z-CO^Yx@tlJJQfS&+e9AHWUs$&Q02MA7LH|XI<7k&Z{y5}s-FN3bp}=t(+}6S?*7djlE=NB31T%Mw zc?U-e?3WV?ISF8aO)C8$P!b!1?$%?Xy?61)C;y<|Zwg-O;c+eAx8s$EKYrpC=xN>pf&SS02T3PIpYW@tk$cF|8boJ$Bohb9ORg<|Xz z4iJa9MmGNBh;n&j=aNVhaad>|PCTKe0w}GBFkvLCBS#ipvPCZz(vT$rqg=!|MhTU1 zC}*r-uF@E?HdeBdaco`@eG@{L$iX2TP)0cWgXv603IM=BD~yg`Pp%w|Fr+LCROOqc1DCWKsQPIZc|2Y&6LLh<1RCt6XWT27-!HBOQ0 zNfYfvCkZQ=qCz|goePBWrU>0>R<%lwhT>}yI?%x#*usPv%)k`FVM3JnP*k=e52;5z z(o$#g3jqkg01l|Y2WS9@m9q3CyQnJy9*}_(Ou?TpSwfWLuvNxpwX6Sag=}Ph`PO1K zNUnSm$1^nBSk89VJ&%=aXhpk0$|e;_m-TFFRa-;Qj@GrWb?aLrh1%8D*0#KBEo^nW zTa&>PShT%uaD|(+-164A$3?DCfID2~HWyaKO>T6h3)|&7*Sgo$6LhD$UGB2Ay4VG8 zc-N!d?v~fQmHe)F)w|wU_4K^&g)cDE%U=4{*CphQZ+`U)w)xuEzyIY3e)l_I0t>6Z z07h_vx$52mH`u}WI#&RsDTxBln_sUrYb0N3fWip@l%V9<{Yn5DPHedM6X@+z8#$1 zJn$&ipozmSL>y)S1Sp&llUB3>kPDdwB`BfKl{mu=jxbUWWEZSnLrOHk z>L<(^CcCioiPub^Z>-t}oq$W@8pI4U)L{^;DG(`GU5B7-qY12L1*+rQ-(0Zz2PTwA z9av4hmxx0RtgeEwBeH8B^m-+!;5ABU@ogVSLMEX2fh7M9o$MShn=QJiL&6ol@PtE~ zD65Dyw%hWECaj`CuYmV~wCw|K0|gkY_5m~G@(PBR+~g-`crwJDy#B6%)pjUJxmo?h zl#JsK=7yF;=xuM6RD#u?I0-ST0P-pj117cJc3%muS{-8?&;-PCVTS$7oA5=st;{&^_{J$HZFlz-rDL zXyYCK$skzW2eNNzy^FYelr6Gj6WZ6 z0ta-!N>B)K_&Zk113+TG+zUK|c!tjd8ibgI;&TFIdj{w`Kvi;yVW_=)!@ktgKA+gQ zR}hMAs5&1Aglm|}LPWHkXCK$H2dSO7UoAcy~FV7}{dh8+Zh7a|6J%Q=Z~1|swUJ5ah0 ze7z7{LlQiQai|0)JV0m>2Nv`JK#(_;a0a>)g&Fj$8te&7V6`s{ia=nsEw~1706$h^ z1h?ph(R07H5I-LXg-oMDw6nsYz{0TG!k&P*11!I|@INv10WvH@lBur2V>LBc8{SJq zgm8u!bOL`Gwp(jFgxG}%OvHh+122HaXoN--l*Ve5zENN`7hDKufCG?of;tojLjbua z0EKaA31t|%1C%~U%&94x1Tv_DQ}YQ%V6`m#iL(2F{@6IlbBiG)JyK+~QQU#6Lp31fX~X zbDO-jxCS#QJ+>%Cfs6}LoCHwA%BT^9@ti^~N!-@2o4Pbd&|*NJtxeMP8sn zvniLav;orvbDQI2&6MN zLX5mED83)~l$8*N>@?2G)G~u>3zu^Opm4b=_z6`Y#5It(pV)>um`u&=i>Z_gW&pXN z435|AiTv}4MKHG}0MGyhQ0oj(+N{mAyG`5-mNzp9;S7vfXu|J&&XVv2Ruhv#SOYjX z2;B1lGw=n)t2;wbhCld$k`$q*Qv-7Z&vq0~wx~TX0E((x#cp^6LL>wH%t1B)xiz@I z(xA_{h{dsU&978Q)Vqe_Q$L}Qg^VMLvU7qtfYKTOPzVKJ0E$U{3ulW$;K)?| zq&krMfo=_oJs8C%_0+ZK243KVJ=oSCn1moyRbAXtm1qP$5ZHkwSbF*(+360#}GR-ZTqR+BnNU^PBq z4QfR@^rTS=#L;biI(JPyR!hpCAlJ6=HdgBobR|;Q3`_2Ny0Z$32@Kkx=v0UdifF)v zPB4Tu0MRB~15U8Ve$`S|?F z5CxEH1r~e)V;$Kp5;9>>*`Lq_R-3$TSc7wQ3sW#nZACkr^$FGUft~eP0HQ)0^-vISKgdE!a^g74&fmet>C(zzf7(b-|)j0r%Xs}MS zn}b`ZT-jaAf5i;jZ3zwqIck!$=QT;flg{8BUbGXFUqIWq)ytJo214Y6Uu{0dj9xAh zGF4zT?DdIFU^QGg4(<(#?;TgTW7eS1QHce)R1J!B-8NiUPjH||A85^=AWa`gT%wo+ z4(tgcbOJNrgGo>YU}(sw6kz@$;J`58m9PXtBt!*9iQScm2u?c#8s3%qH6NJZ3MPl- zT?zl(Wi($PM1T8WWbMO)|HoKY> z2ZxQdW5nW<(Bg=AgUIt@Rs&-TB?k)j0Y)?9ln{prtb)-IMOkZOLlUw|4FpC|W=4oX zLs*1G_(Ew=g+UO&Rny-+o`XxsM)Cuwjnd1|5ycs%ruq zrCth@&!E`huSkkbZq{H}g-PIpQw6z79_31@u2V+kr>n^beoL8qWs`_y(uuWO<+uM^ z)u%63MqJiqUcTUzz&8dyh+iN?L?~u4dt;)&R=5kdat2@D<=1AlwIA4KbnfOA*4Y+T z%>=oHCS2*CNM~+~hCP_YA@+f&bllKPiXZ+&qF@G5+=49-txxAp{j8{=KJ;JH-^XKMn6 zB?mreLcI>@1`;wpG`mRt0v{j)g%m)iyVRu6xCHJAD{*1R>-*wC6&`+)V|Fc;13_eeAV>WN?UQ%QJ&OaJC@6@2&ld5|M3IqwS0EZi$R=|WnI6_87^tgiUh`70eHoHpC-GrD0!g~T$=k$wEh8^U$iMHj6 zZt{z+>yvl}y6erJVZJ7S$ye7M?c0W1m~U_xIw9?evZLWj-NgTt4b`=1?B_o7@C`_| zfZqcxc5t``kh8>~DCf{cyJrUnx^n_~R0^kig0&dlMbL#(c!WIg0)p<)a5s|gDtB{# zI&{a$o|(WkxW0E+Nnh}UKVZhE1DfIW1W;glP;dl`9&QG|2v%M^6_p530J)wN`0?4Y zZU6>MU;};&1U;{LpIBrckh-2QVISzUN)_cY?}=lO<8QWj6(@>}ug#60Zfnm$JbXGb z-~>=5c~bznX;+F#e)dle1;K_oCrItpwt1x*_mfbDHRyN!CUTXqbc3J;LNw8Y5PEV@ z1~s60GjN2p7GAh3^?WZ0tdF%KPl)C1P`%xHrHQd_2!{Vo$b;4Wfk6P>#qNo2_%_s2 zg(mOAC(Lm z6z3!%L@*DVFf;`5B1BE(ekE*05R8vH3`de1^&{aAk0eJbdzjFUxRo+z(yVFoCeEBX zck=A%^C!@tH2)DTYV;^lqTrS?ZR)hCMT}4Qn2H9DSHeL~zdTvQblbM2q!N;PY8G6R zgwY1&=9qae(B8+_Yc5`_PT%NWVF@j-4 zO4qf$nm2Rq?D;e3(4t3^F3mZqQK1BfflR1I8BJ#phw04adZjou3C+Z0h)|(Sz+MWa zf^EhJMT1eF8QhgnBS#-9L5iH2O0uM!qb?d!?fpCW@Z!glFK-hydZeILK{WG7SGT6@ zeavl|EWX*gPYCaAdpsc+$G{~QU3QuFS!9G@ z^nnR0dnBZwUd#YzqFH+;Bnw{nJ(y60Pjvzj8{LSQ5GQ#V=EYK- zm=OpjuNF5KGH~9#pOv*F?MlMArbmad{!74W_l*f{!>`1=+m(U&1=JZUB5IvC!w>|s( zGtl69`>l%IJb@g4q>i}RH-IJN1fos78|a{{cC!Veq3z3*G~v=J;8Mp_0ns2yFU3q- ztZ0^)4~*=^NJ5!RJU88SKU{HmmOyle#<%A5F-@@$YtXMasq7@n1sRJhLogTQj3JWw zAW4@#iPP*wRR+B|=bd{_(9r0u_)1_)89W*4e98&Y7hnT3r4w2<0sE9~%}zV*rHB^I zHSIdJO>$~YR)7BJZC za}InU1kDpV)RYDjkHADINP&r?`Ct>KOC1Oyl7~XMq)$x2N(fU3k*a-$VNH0#7Q8?P zGkn1%KJWsl^p&+^c+CfEh|^PqQNSiV!cW`apjI@Ku6xDM3r>8Z7q-wACzuU zpCZ0k8A3_o@WPay@B|w+VQ@A9oK3)RyCz6x6!U8mL7t?)i>SmClPLs4eu2C-5aTrPBqJ$FNj~B%xM;#6K!rjTrjUi6`9=Xz=LBAe z214DKnGZ6F7il=Hd|?0E1WKT%nWk}aU|GB+F0r`9@>~pcfY=EdYtl=MR3T%AqujH7KKYI*6#C1wZDWDMd5i{Z>QIAMm^rS1n?SOcnZsnCVeZI|Q`SrcaW1Tfg) z6Ai3MFlkbZh|X>cYG}mzYyt>1tbrk*;KQ>B@`*-Jq7~gFMTT<aI<*Z-4eIB#yu=zgR9)-GB;wwJuY;k zD_wCWx4G86E_OS++Uat)yWTZOZ?h}j@sc+$&;2fX)BD-*mbbm`&F*>CE8qFvmA&u1 zFMfX;U;6U5zoV^gegiDv)b7{620rj0?K|KFGkCEDMlggUyg3CoxWX20>w_h%;SFPp z!WaH9h;#p$VGfhH#O3jDh*PZM$8OieE`D)`0leZF)3~86hB1zFd}0~bxW_(b)rfU0 zR&Si=tY;9{`ObdsZl3on=mz)s&xVF>pa-q!02lhu zj^1se_2Q37Q@YZYzBHyYt?5m3y3?NiG^j%@>QR%r)TTZ)s#C4%RkNDZsp@m9V=e1h z)4JBSzBR6Mt!rD4Dbi-yHL!y%>|qnT*v39~s9jWMWHY@3XVL?W0z5 z)oJ4Pxzl~q$W?o1>aO>_dz&=-flfyIK>x1WM;c?9mTYUdL zAB|6W;!#6(TP6rI56n&VR2Q3ss*U`AdAl_|?WAKC1(FjH` zPH*(gCuQ@u_QL=YQR`w*feM}IG$h(zig8n;{Z~N7sNEq8T#%X{dT4(cu*0h10vB|G zJA_&qv|sg|8b5?W7f=EJeOez-0U2OIJ@_2(9g^_Xnj!#!2O3|jy+Zrpfv4$${bhrw z@d6%j1GLRS`}IMt?LzxeK`^viGPEBVsKcf)Li@ensd2*`1Og;npu>?LQkef=t)brl z41gcd8vD5)r|kn7v>yw$+92ow7G|LqZs8W1!l%U_6{JD;d0Ib6gDM2V6;Oc{0K=%M z!VL1lsue>TQo$Ff0_=5K0#d;Oo*Ec(!8CZzMDL#It36>vcn_FN%`&LPH{ zEhr)*%9=XpBNZqlr@0{&WWfP`S~;xZBV1Z3h@(qN;}xL8sma3wQUNFAT1&Pc8z9&UZwRzHt<3zFajOSAvIdT9+(0Oei}BcVh(~D zKfvXtH3J^Z;1#TbKXheUPGbai8Z*q{^KDvBwjVkYq9Jh|Uex~@GzftQcBHJCA{7Jz zs1arRu|lW;!wlYnrR8K}&LCJ?8XIH*ZPuo3-X=XNC2sC!7R}N_8_Va0(3syF{Vby(V8<5z!Gkysucq(d?$Fa0w%OyAcQA)lA=EZ zB2ZcZrJ3bVq9uD;+9kA~Ncux^Qo&konmZ8W^OZv|r~)M5K~cVB8a%=+tb?ebLmn0< z6?6e>a#}x_!W<4FV>0Mtc3M=bA$nrkJv1aM`W|NfM4-`HI}Cv$Qr@h&AQkw+rB$d` zGJ>W(Li=@rIbhl}q~RA-ay*ryTVc+ZXcn}o zMP?@6aR#jsp9e;Q6Skiiwy2Q8Xr{HpDjGtjWoRFa;iY9L6^P!N4(gtwTK$z|F7PA( zGO3epnk=-R7St%ENu=&knp2*dd&+A2Ij6Z*XHg_0t0`gn#Tq@B1GQGG2^M6vR;!`j z!VDV1B77^j)?^@jtERE(rM>B;$!UGoDW_S3WcvTZwMt_b;K3q8s9Kqn4VWX00^Ft;${G&}9E)s$GL;0>Kd21FdmG8g_vIiYgWCWT!Fb z$zobR9Oe~VXr(>j6*#ItNJC8qV7a!RmabaOTG}*Fu21f+(dH_rO{tk;+R|>CXkI}% zR2p-pfu$8IR06NEmK)c~$aS`wIB4ep6ahWR8ri0$Db#~l&LA5+Y=#~$kRIu|s$sg; zZKbiRrV*$5UK-(g?5EK~K2GBz^h2k~1IJQ<7n<56$g1#O+T;Q+6OLnlF^WhGLqWa={+H;*3T^!pB+N`%UJ@4yp=sn%;IoJq-Ub5f`x$AMp?`?y_>J=4CIdg=sT7!>om`@=aQq zQrZ)i0>@qf$3A91VCgS%nz>rqDsF-qpRtNU!Wo;fMB;6w(SwI(0by?1{f-(iENB_9 zLQO8h_i9=)W4J>?)?g$O^(EvaiiKFq^C$t6?kk(eS1jZ>Qlfrg6dy z_T{AU!@d^h4=Zi^u_#rJ#^1FX*bcy$f^Yj(u|Hg~6}Mj~?7>*h!xZAKKcuX1u5jFf z<7>Jxr4ce6ep(%a8URZpAJqRSGSnm<0CT0m11HR37YysEF@sX=Ge55)DeyBuQ!S=V zZUoFvBx1ee-6bgstM8lF%Z2RrB zKj`fwr~_@+HpgN@ZRa*^r*)>`0`VrZXe{%pDIo!nL#>6cS9&2kz}`Kms4M7gC3>1x zyQ%xq?VQH%-C|lfpzS$(S~?5n9_WEIT-r3ab{eRjD(vf7zikdr?jr~_9;)o9?RBR0 zb*BCG0y8wG5*{U|8Z-of2V(N9N#yQ&a}P5pX77W7FZhCY+CE&OG@|CHf%c$^cBo+~ z)T-KP%c^Scs->a!Ya=B{#$)u_aHtt+_E8*BJ29$d=Mp}%Qj71UMFTy~VHqr{7y~wS z!|9}{tKH(~rQ!brnuhgQ7p|zWga2Y$K7;~Ds-ZM4f;<3CK(fDc8VbARDkS+00xub4 z8hvA$ePbGaGjPcXw&?VC1ZS+Rkz^XYLMT8&AUvQIkoaPbYNg@#G>WyR;e#s#=?wOP z27{WBuB50vvW0`%9A2~G!wm;0{H12dow_=G~>8O<~DOB8w zFWzu3VG#gZKIpCcb%HA31E<|*`}KKz=QkNwccu9_b_01_1~8V|d8d81s?kF*JTm{* zXQ!D%08>F9$mEq%Zk7*pErU79i8%$4xvBm4B2w_Dx}=@TC=H$(olB#xTN*vA!Z6Q4 zDFi7V@IsP*cKZSUdZ-Dysj9cCjm&YuH{3qt7sbBYNp*oMVBNpXIim`qlC}xtivy*$uFgWHW@JIx6?6M zqgp;3Ln!b8UW#KHK!PhUgQ|NPFzjm?a05E10?+rn&;LBo1HHT-aU_K z8mEFFt>FV#+p{SLqi2I!x6k0o`vWpyf;i8CF8FUgu);8x!6V>8>1x`akD9xenl;QI z#m_qxENKmE`VD)yKkx&ZLO2x=A;*@15(9jxJs}mG{gx`TRm#MtvA3luVN&CoI!I)X z7Gx*P;UK{OcQdG{G+Lm>`(($x*AV2aibR_RLCpZ^K=AW7kRZWeRH&3GxR78cgq;{NEQ8QhK~o5+;Ms?<-oQ>-sJx2k zkI}=CCkckan1y9amoH(y6p4~%O`A6(g44N^XHTCy{{p^G=a^-#l`;}sZ=L<&92(|Q4RjwevV3*i@R!xNr zx{;;In7cZgARUCjP6jeLvL421w1Ec~KAfRa1qUHqG>Lq9^XDf)dNl9kG{pm%Y4Lnz5U%g#c=0+$u-z*`XT##=Buo%`WH#NX zu!}ZbR%=kT-$ptpp_&|`0wS8UQqZ4fte~O`zc?bunnm^*sU!=51Ixh`9ppv37q5E% zPR5>?6AC%xYVt#>L{8Fi03KmHX&p!qvf>thxd%1^)p%{3~QlW zO37AR75mWE+d&D+aG^=4h%-c+PJGm=dbsFNS{AQNRo;O*?Q~O2m8vNbsR(fYCZedO zif3Mb*4bn(4}BRZNp+7Y1|LJ*&Fd0+3Mz(7gwnv~OGy{H_}w!JdIS=J5~E@n*nD>P+BM^cpNg&aL8QYyq8*y*S7y>!#5 z>+Pu~d4!k_jfk$x?rDM$#F?SO5=xoch}<)opnGt6XQW=K(Bq_hXfifs&z`kvk-Mq5 z0woC*DoBubn-;eqZb%{M+?vw;dL(Kva?SA|tCsQJsF$KCo+6|wA|lRzbebLn@yLdt zg(GqWtw);XFO*mf+?Z*G7U{$G+ieGl3N~=ZU6qB_DUnUJQRW+?K#{cnhHjcFq+{Sh zLs3Qg>8Yo_(4!eLI=9^*^=jdF4JU;H8BKhF5HkGDT7n~7K@2yNbIqe29rWM_ z+p#w)YyyNO9GHZz;3e=8$9&GYocNd`l>yXZAVlsLP4yzTtYx7 zDOehI6%jDa?k0s|U`BlddXOfxx#8cQvvmvOvfjC^#VtQlW?^AzR@nf|7Hs(Rhoi z)GI3JM&Z!WCoja@O+Z(KQAzm6e;pFkV0{> zCSJteLKIcY&oJ|tq>-l3c@t+4Kq|0U8%+uDjL9A2qz$qrN|xFGK$2bsnl_Q zN>%DiXwnrtaC4hC@g^91>KSsfl&b_mr&83(9CqGhk3%3x`hc*tuiXQptMN<87C}&d z?C+onU8p1rLdl2TO`>%J<@Zj6%A0ILJRIFCD`_Iqa1AvgChci9E43CXRJ5x%aVbxH z88w{jYXF`b2rN4HJ)UOuGe12^P@BkDoD_A62$?2M5JcJp*~AbC0h%`X_RXs#t+Ktn z%2$&T*5!=VCRm$}Fa~lR_C4($;rvV*9w7^O_=6V+*@Rr_>PUn_60Zc&YfTOq9EyIA zA7sknO(c8XYN^tr2mxtC6g!X%HWnd}MM>k_xCey)gu=I$y{t|$i!YqSgQf!*#y~)4 z)5%Rk5Dj+lgCDGwG(ecb4i@5R**K6}uz|xJ?l6GJ;9(JO6*0DIZ50nBTZCL#Rqo0K zL4@`$-CBjW{k8EqftxAe4u!Zj+2hv2@lGM+(P{d{NE#qZZ}ExQFXJYaXH|PO$41$4b6RMXZM-x82;n%zbgJXHEDeGcrW*-@ieZ~HXlo*i z$W~zjk*zg$cOc)bvahau(k{$~sht*TNDRA5OBW=*{$TS$+-#y$(?rhV1lc<4xVaB946RkzyJujW*&t+kUWFK-IuybF+q1=H!|Fz z;~IBxmiQTJG*h)VA^1rQuAMnqVJtNNkx&|HBEKt0ZsI3D$;B5kh%W4%?|t`s7u4m9;%+h`YV-fVo211;-@;9|yukslCNn(!Fzh0%f9J_r3T1?}6|8VajiUhcC#~tA3-a0E_@M z_3YM7T#!PSX=Eqqhc$R%idbR93W0b%p~`NPvyUY0!zqTlHenN0*tRBxQg}h~=?eMJ zpZ@eWbwpI8;^!J4e2HItPgiC@C7)AhwLB z_(o#9W~20KE~79a{cs{ltl%F1vQ746h4y6W=+Ncs97oRbhyVNm`SuKkt^#zV;?H!6 z>!^$%rjJFck0FqO5j+MX^k5a}?j)RPHpVX^$}c#8;b7Q+VroK!aBd+=j|$uZ{&EZd z^iMV54h9{^|NbukZ33;PqZiz0AADgDB8CcB!C0)R0qcsprc4%e=cF(&A~cZnunZ@n z0YJI{er#f)zR=8aNjtu+Aa0K#a&K}9r3y7p25Tgyu7cjAf`)Q1`gjl_M5B7DXXgk4 zZaiZSNWs@^A_<8~6VcAKw8ItLoXrkJ@Y$0MyT2AdIG7b#8N(>i|3~OQ^ zBEc4fAspJs8ahEM(1H>F+(Ik-LJpyf4o4yxypWSPNh`7d8!>6624wWCf&*{D9E66H zkdFOI5D~*qaa53TSnz4MjtUY63?-2{DA6kNArW9<7;q>PyH5Jvu_jtCEH**lQmg1v z@gED06@^0`?4}Ef;U=sBBkZmqfZ=$+kK(NAHi)AaeUYVr(c^^C#^Avfj0_{nAQZT0 zv;s#OAMmbD!jwE?5Rxb&LhmZ}FdX}E;ll3ytU@a!ZoN869TAegsKCD7EFcF)qpV=M z=&{{q@Rxj12P5L%f&&jGp%_%?Dp1iXmXINu5GT;VU{JE{Y$93&>m;fz4U)+ps;Y}P z662KeBikq>Uu`7+`>SLy0uOEh9|~elIH90kFuPtd0=ckAg7R&kP3FK6C&ZB^up#X5 zfIVyuBO)>#i6ar&@hH#H&?W~TmZ%RtvL2V?9$}Cw8Nw-05)M0 z1P9KBkA&(>~hEO(zp7d-xwho z7(yKmrtMsEyC9IEB0?rT1Qcy@F-1?>P@*4LVf)xX5DTIoNRT1cq1wKH$Y8GvF{1YT zVG$Ri5n)6f+F>gPf*#7v&iIcsmBTbuZE5fmBUW!AMChb`a3NSLH}7UQv0)V!VF=TJ z7DqxB`d|_NAORCLp%YjWA-EurB7z?Zr3~T|7q`eJ@nV%O)aJoF=p&D)gjw zlN$VqEo8wyfk#VJ1F9mT9aQACv``}-H7>f~3+_-FI`T$wGz>ZJ|NenT4-XeQBT%}t z6e5%hj*|-dfJqH#O0B|Jx_}#L6_d2WO5c-~sDKfWav?-P3K@cdi>%=o%Hg8& zA~FBsMPD^;#H%rH;xQv4AHstSj-)2gp+U+35}>XoVvi`%v>j<;Of@2kMHleO!8a81Qj8jnm zNC+qHK^?Gx8IS=Pn!!Dz>I=TW@LpsN1lK^3CJ+MQXla5IENKoCfU6is=#m@eAP^uSX2 zIE@PG)*twxGVmFn8R8LQf+emX4Q5P)t^k#vsT0BuA+o?j{Xu?O#E5N~$Da7kN{IJ-(PAsCWdVf6aG#@gZLBnn?-u%Cviy;HobzzVJ)3%KA- z*?hy>~`&vai>VkVQp6K&hoi{-VQIL4cOIb=SOFNCVPwrWsq^I{S^1=@d?c=1A`k**@p1anAajWW z%&i*E^BN&UA{UB;YzuI zg2}v2&Wo7D;h3dxp%1AZCR?VPLR$B@B;IsHN9frI7Y1{C4O?oI^e z@pI1W$UNe1AT3d{HaraZ=iFHR>Z}Ji8#wflL;G%)>(u7pytg$*7w?bp8A%=zts806=krPQHAQe7V8gA9mF?`ebYSBxHH0jmDK zA>1PHBO>NWi|}i{3-PKL=63q2pGL`A z-$kSs0vN0SV#Slfzr6Gp8XXHlJo}(6-9Ic`eIe4`K>(tZzk%$mP`N^Hpu$O1sPIw< zF`~qY6f0W1h%uwajT}2hBnL92$dM%fL;gF7GNsCuC&9UV2{YzPk2Gsy?9-4N#9Iw9 zMa0u^T1TJ_iyH0X4_Cur&8%q2Hc%-Qa|44lOvb1oRf$;|M!Tq|;iii`sg%Jut*FqA zWvLvq=`Wi>D!AY(#Ka|U-lAIcaw%4?Xg#}x3mZP{Pp0Cz&iEK`mmtD;?sQIuyicv0B?c2nsi zk)cD(%$qwe969<($JAFcX8hcFsD`;9;-q5jXV9U-k0xE}4-yqaQMC@lN!s<+h+V0C zwHTJlSc_#ZUkudHBpmJ0&>VLEZPE}K_fTd{QOQIUSVMzh)K5a$U3lSj8a7s)bR}Wf z93~A7a-n8aaAuJ~R!GE2LyU054}er?5ngKz2?R_-d_dHXXbpX_7DcbjMa3ncMFd;XSUHK*zRmV`lMQ-v`?KED16Y_P)m8j))P z4I-98^B7VT7Y~v}WE#HzL6jsF`&@KMLtV5Z5h)GPK}sp4Y~s_Z=AKJYs?mY@rKvEX zyU{y?%sU8BTm(Wd9ZJ$Wh)+bh*-klpg*zAJ>S@R#7u88cGByMZMD&bYo)z%G3o}LTGKQ+UAjRwvJ+@JSXLcr{NRc@W zr9o?e8_7}>X$P|$vZwrXH{zcLUXyiJP{FqU?~43b4%Taj^8G#pVfT#*zMH+j($KJAC6nycl$aZ^g*TMvWSk(}xv3Q~NbV{P?IEKf19Y zIu%xwfe-HPGskvGZc|75`w-FH{M~u8ythJq|E-X~#ikF~=+hvqundJfj6M;=&%_i} zv5e3Ic16Mn^RA%1itGXs9PD5RDVPNhig1J^gv3K8(x`^m=2rf|9~FAkkP}K|assm7 zxo9U7+o{Wj6xmKgvH-*&3UP=;93s^$@-vHAg$jYN(wQ*AjMPwJZ_I06QJx32fvn;- z31LMbxHS*|*0EtCb0|X@pyCgH^lu>50-HqWVWK(kj)!yvQT#|UKgZOsjuR8A$0Amca!=q)?7a6h#)L5#v~a8WzFE&T3ebWXwflm@!d9 z)WfrZl%pYB5S)uBBBLYnaZ5Oii4IdWOND&Lik*@nMUps>1-+vWw-^Z0r~pcZFwc?{ ziK0;qwUI4SK@S(nqCfgUAS#g3eEvw%iX`%dhGcLeZL|m^0x`#2s&g`ToK7CC1GjZ5 z#E(<}Bt`xe5mTHJBZ~ywje-Htfcgj*0S)MP<}=9#9_oRYj9^CgA)DhM@rTdr2t6X2 zh6zpo#vNU;)G=U}hJ<7zLDz&`7up9Q(T!7{&Z#9#ZrLSu)`JT~;$?8UHqjHcLl%QL z3$m!N2WEKdH4$7OV66FcADg!D%qnv>1of25M`YDv=u)G#z>nYR3Vgf;Nu_|xsB|iC{UWn68}n* zD;=j3jBTuAANyEjT;vs0NW*uMVVsgRsImh=Wy&JbCcT#n^2=D=(vc9 z(y%k|gUdYI$l`uBh7;2GQEoj#jPz zYh^1++`3M%;V($4_ebSi{WC`AxO7Kgrxl`C}z1<6oVnoxGU4VjchtcHop z;sbVBkjFA&=Z{7ub0EyprgU3cT5!PBLkITA60g7-ij;#D7!wXM`oRj`QbDp2Q4T35 zvI-(?A~n9v2ymY&T!kD{X>2quIFV}+<#vj>oa4fR8q8Aag2cKh!LB;BOOc31S0Qy} zVMW5*oW3p;u@k}MM!1n0JR}Yxk0^>RYyym$+SIyJ!TsZma)M@Pr%k9F)! z8aT#Gf)(5$wzYX9^Ysrzm=TKo6@?6!C`N?MVM;0tVy_;ih+;2AVx~64sTG0$sy`w{ z1<|%xea8h)a>G{vSt{@SOgBPz70UqbjX!4T_C*>J22L-Lb z3vOKgdmR}PD+ddxV~BqAq%ZyG_4VwEFfTkkSBTRK>koP;^@O$hf`#s0ssx8SI=Gie zHoHC$oqYik!N>PmzbJ4*i>Q1_irhZ2xtCxN|Mif4y+(ZQR z#p^xZbqw);?0uF%mI%K&>s`App5u*g9^@G(`QT7KBg{};79yJedO4$5U2qI8v}F`w z4Ysi+t@j>{G!Q<52mZhf^#Oe5#}P?)T5?85s6=1MRCN=v3~qFM5djZ7gAMBNQw?zm zwNil+%Y}b9(k`cyHehP6|ZD)ZvlXs}Le)ba#vLGtj zwGXcFZjfef5TSUp#(3(W3K0f8Q&Np!5z!kw_IWf)D|ElEw-?!;R<9>2FsR8LWq6a2V)gcP73i3$#4suun0qT53u9^J<1YMEY^pzbA&vWgzuv- zTEH#Zr5RlSb2&liTr)qWdC-SFVO9V>926V9|e^w|Q+jfi>k&F`o36Jmy92pVlWf9iE3anst8vzVT zHE-pJ5%};On}AX+#B3eWjS}Gt_sD=tBxwqv4!p(x21nVE8NrS#;f^+x5B1=cUkR3B zDVAV4WyPU=In|Sgg;NTF4&fn93E3Iu1%uO6eF8C&WxxiD;7bExB4fyX6Tu9tfC+-Y zGKUB~RKN!BAU1Jzm1z@;)-{W`VOWH@03IE6}ZScMaz4y>SO$MGz{!v?rOnx$!) zq-iN%NE0~89QzQBM$rdDrV;2s2b_nLl+$eWMG<{K2V=#6J~UthK~G-RnCqx}O1DEr zh)N9UTK5PM*|a7TAr&~75dwJ;1St`YMiCWOObyvXA#(+J849{!4eTZl5v2z^(+5IX zoapkHY!#VuGYz)EXh5cef;JEpW|34VYbta93xW_^39<Zc!0SL?Zsc45~nl z5MiAbft|&oZxoRx4Z&vKi9*6L2%Ufn(O{Jn(G2x5G52&|o{?L9u z)ePKlmMRI1s#H@}&W)05lPh=2TXZ28Jo4ayf}~DTC=q5iLRm zWWb((DG}W8qx0p19N`)<)TbUvUFp~Vq&VXvj3%Xjq!9CnOl9GUSV|GuR0g3ireLZg z$k-6Mx)Ehs7`Q-@i0LNWfO1{7NqdVr+hDy}C%u1ALt6&9V% zDX-ULO3!Bz5%nn26rl<+qZLvAqY$B;w^bCT!GiCdSD8MixK#91(3zQk3~V%8WBBb zA`Hn7tgviz0D0?>H&+n<3Sau6Kl=|sn_5a?1zk`EX}~0GAVq0VmJ;E)^gtBFq_#!D z1|??^@rsQY(*@ugsbMHS>p%}~1P>-sv;`Tv1JMkr(FM6`yX1ts3Q-QKpl4|irTkzD zMtTr~a0}l`yv<>}ZiBpOGs26o2oyB7d7?U@E4>^+y(4428G*eQ5e4{K-zHI=0{I)f2$3{qrU6w$&G5sDFk3|jUD zrXa^)`o@UKEj?WSya_9d3(H3-2q<4jPh}9w3b~Rs0X%7-3b%~QxqQn?Rmhc86Y{Wz z1#%1Q`B1lTta=*D_j7V$tV>t14<$PX{BS&@v!)ZV51~LLt5~W4EWoMdbi&aEgRr05 z6&!q!ILaXi@4ykckj;EN5v@B^!f^%9Qi+zT5V}A?CYrVWy0sF4N>&gExuC2Qfeo85 zB{X8n7xKgG62xiKh+I$xivX$q5Mtdy5lg%gcDtQ;YZp;`5hM8pmq5>UF%6+08(i?j zh--6-E3;&r52PR`(~>DyzzGIx5yw!nu-B*DY{z#j59VME%zzBXkPL4+5t!fr_g36Go$_?huQ8x*b5V{*-4t?Fc6VVBMJ-i(O34S-&98n6oFwlq5 z3|=e|?LY@~z=a!A+0~2@n7{{oP$SHcDE)v54r#Nm5S(*dTDun+b*&Isj2OuvdOXb9 zvuzg(4JHju+qtdV=EBpOyW77F+%aR@?UL8QZQRG5CB2=T$j#i%ZP%v?k`m|K(@oun zq1?Ds-Px_(9x>c+Q{3AP-r*gtbli?TE#Bu1-rY?<-;Lhw?cCQLQ|>L_)vexo#NP9b z-@6U}-wc-D{cYU!%@Vln-vgec`z>w+j^MKm;P52f3GU!MY~Z~2;1f=^3*J`uP2m~- ziV?or8t&o6Y2iJF;U7-oN5|oiQQ|3Hgdv`44X)xZZsO#vmF5lOHI8E}9&zqs<2ycQ zC;lNk4&>5>TEvhsx9HI4(h4y>7Op^nm+2JUfy?f>zbbGs-DWV)a#F)>$*PU z?KJF;{_DVw*DjUpg?1aAT%>Lx1Rqc5m?b2@N)V}R=e(l&!<_Q+=ZQkwP zKCY&A?rc8p7$lPpK zFAwuEFY_}`^EGet@iX!)uk$<4^F8nLKM(XdH1Ic1^hIyw6#MBLDWR4)_$F?tcH{g|F}9p7)5Z_$1!#h+pN8zxd1E z_&QGcQ6BA*pXr%j`LsUxrsDZhUhJGt4x=CCmLK{Xg8HQY>O;TWt$*ade)$?A`>v1a zoqzkY@Aj+i_`9#+uP^BM4*WI_`o53(#SiegfBMSL`)~gBzwi7L4(NzK{RV&Nlz#m+ zUj4Ao-`jup*)RIw59GN|{y;ANVsidGZvN|U{Ll}?((nHM-Tw3c;_1)-`W(>a^KbW=Mk#<<51Oa+Cl8NJ7%%fHzlCT4eCVq@;K79tCoUY8UA%fj-oZQ8rK19B^3|q3ItO0=0l%tm=e~QlWbi(5 z3$+Xch>%nL7R##9-u?UbpgU^9JHZ{vF$*+t=TG{yfYdr#O@P(}`b7o@v}>sZyzc0a zy76uU&pVnP6zQ(KL`tUuyhLfq7zpsX;XVr^GNu6(aVT-5>+n)=MHs1~(6R8qi!iA2 z%mZSGUKH~LJ0OEpqoaF1z-~X03c>3D`C@d^rT+rNXutyf2?H+?)M1Gq2k`Rb$;EC= zYr+|00y82Em0J!k5~f>elrEdok}+cLh(Ux2A|L?=M7Zh580=~|6QdTh8}v|>%51Af z$;A9AM;(Dc5~33>HT6{g04=QZ&OG<*le;KYV{IUJ zNWg0emXg6vG(^dA^ei&V?A4z%BeDQhWbx8~Bw8@Q?ge@j%Vh;r84x2Ki2%h*&|w8C z^u=z&?MP9Z7>(>#NFxm*5_wA71TRT2+Jyl&@j@Zmkj`lVJ1|I1Hd!e_+83_`uo1}} z39$1Zq-m?Y7NdbLU7!LEXb@u*d`+4MqF4o-bs%5p6~K`<3C>vDq<$SL*cpc{7NTSS zJ#|@B$^TSLz*w*(?sc0*f544a)In zUcAN_i5?uV3)mxD1vrEyxm6IUPyrV1h<4j?*PVB~e2>WQWKqy&r0xZ{!A*Y>mxxM; z@Ph^0iU<;9c0g2>fOs7NT~I{l9nxh8Bk4E<6v7q}elXz=z*tE$GJux`JY_2RfB}$T zAVPxBB6b@v7(s+av|$ZzfhaTHOpup6F)fe(d6EjpS4eOJY7j&Wcrivqlq7%xq+%de z!%L<_5|0_++!>2{7U`MS=J)A^?QQFSsaxPe85U_6N6TwM3Fyv;BFk5tZPPJoD@I;&~`|I9PtQy#0v-F(UNA<4Xo9fElFZh2r|_MaOz3jgo_-IhmzMY6(*29VIFIq5wovAOM;Pq!KMn0f`_o zj~HM_3S4!GGp~pjL=02_sFcY6GJ0kKdZrH}e+_I(BBs=igiio{^$0iOD1aSM^?MKz z1zzC#lH%fpBgMpQO%MCIeV)}Z5meI``*HwY2_zr9+k{JE0i+ddlO@gg;{u8ySc+l< z8Y|TO0}w6H00T7efoUVu}}b!gb9ioKE=y2;q&Pn&;UCaP@;D8 zacWebnj|T;%(wwnlXNlk$ zFM7tvGB%7V2v7^a5^+cVP!)z~FIuAx{)eMM0_jLIk4Gxu$J%Z%V%c!xgLpXsH~M_4 z48)^Qvk}O|FO`k|h_vDmhhVKgSdEf_fgvBx5y9)6J9r#P zF%}SobP(IvmqNBkV)16z3FI8VeE_rrPLOHqMp4!lh|Y%&qy(Jg9DfXz0FcR&c!(?k z;x@^-i3_9=sKFAgpu`lSDF6&uFCxl@cSPhZ0D4D+8-2l!2>>AqO}yd4K@v1SYKNBy zz+o57*hL%+UFW9{hS7^P_(u?)@W>+NB-)ToDg~guS_|L^?4T;DGT@JV6cYkW_J_xV z1agS%l;;9D`AG&g8!&WUBFxoZOl1p^uoH~zCb{iLhWMGX=Mgon1s}m-1%;=c?qponDFAA>z{#xEy2}z)qqELidi` zJ@0}PKiyF8h=j2yiO8lA$S#4{1^N?!3b>!_laYaIG>@Vs%#$$8cn6aJhU_7T^~;oe zP=TTv2}+nL*8>vRBM8}ph}t8*dGiNZK)m7Ohu?aN{1K}4TeG2&7fFaUfv^+-fU>!JxBSa9iKxMm!3bbTKtq9uW%wfvNWTNDzXo)`S0cE| z^N7p;n?OlBg_2N(CL#z+z>7){2*H7hH!Hz`I6+yvsT<4zf%qB$kh6hk1-uvmf#^b^ zB15jZK>@%mi8zO7N&rtXi5?_~Z*vZnXau&Jn?|SrFqo5pI6eVbfHx?@fMdd*a6&}+ zK95+22Pgq3IH{zthL)Nue`t{kkh_&=oX=~&^csnKn79gXH^{p)IgE&4!;8-82v!mZ zU=%Bi2rU6Pu0T|Z$>XR(?1)1|M1|`Sk*EZ`FtdR;LIH3(si?$=z{G*jEmMIZff12r z!wXJ~y@c`yP7^9^)SjDLMUVJFeBwcN>Ijcp06!cFWH?78x`Uk(01l8pf0#M!_yCsw zTrgwg31mE!V!;MUh{=KYFOE|RZEQDQ(3{yy30wn0bL+;D&_Mz4#ruOpa$G@(;D(l3 zHjh}xc?dxB=?F_HfOD9~sHn$Sx<`!2M}3rsE5&m|haf38lCTCf z5E+8nkH!R&DVRimxPz$_fF*Ft!*=R!@k=)OV8hgi5cyhysb?8&6C8>93Ey@5@lgibTm z%Z^9~RR9Djh=I3@$>WT-awG^Hn<M<#ScO$k1c}&L02TEI-(vteMTv{#MmF<^T~LD(7)>ByHiCFkyNl9+@V!s` zh;{V60~kqyh?xcL(v-MPyBQJyCcNOFf$%W_&{2u7Q%S

`5%2^Op@8r+Cy`)R0e}J%`6C|xJ&E!oO<+AkjNk`P z=sHwE)}|asD1}Ob5H-BOzUJJwf#^a)YE*1B32kK>ZiNVMO}K@NivKz)T+6Nw-7$ht zHvwoj`@{>0^#_Ecy^Y;97&=EMvYY+;*MW#xToG8TtAGy30XVo=ln_WDY19O)1W@`w zjNpc2DS#F*1k%F@cQ^!k$cH6(12ZKEUWft?ao2q6*njxg60utf7?|oZ*^~9UC-TGv zXjp>CJtQhvl3+yRnpq?D2W>b!?2v#OfCEne2GONTh)`CD(7&3)3*Lf=bsSd&^1r0b z)-SckFnzQ!?M_9U3aF~jtCbRVSeu;jhji$Y41mTu_1c5~lvlCU(|RQcOF4l*#fv~1 z2(=Xm(~U<}WW}T?N)|ZB4GlvivIbN-TYHkMle zcg7E970zIuv6ixcTowove#2kpEnN@HK#wmxKNV?5F_ijbVoN zhh@Ny5m?;6rpJih)``Z)grhK}$cJ43gdJGby@~>A$Wem02QDI-N=N_@$OU#V*>epE zgY*OnaKp|n=+ExwqGVH={yo!4vm4V$+Z>=A0L>m0Y5{;u_5LFmmWcntquf4j>`-WA z&Oj^MJlOjqoK;ZM_s40g&#(#Bhj6a_k^bjA(MC;_#Os1|~Rf zJyHk0b3=k?a}2BFmr6kCS#g5+j{^Xjd>19`a>^b^?s0!<0pg;i)PJsBC@((p~|i=?823 z^y#Zbx`ZzVwY`_=*Bru|^bHqo_R3#krn|K-Sb#h8NUKa*$?)c<`($LU$)gN@Tccw< z^5;KgmVIjq<+i!Oi_HY0)zi86Q)5QhPi=h{DA;l84v07$X4=msX`>1}4l}9IF(kt0 zJh;KU^Oxl##u|Cgb^jh4a49glB-1(Q+^>)e4F9ir@Ke)bjT-5+U-gPkt~{EcfS(yY zbJIa+_r4L}ixfN%pK@M0swXq3vHELAm!!)8dy8MXh+nF0f;lL2h+*EQTAF#jr$}U9 zGV!flR#Pgs4v0?L&uii(eEgNUAF~CI&0v@A-xfRV*Sv6GvK4HWLz_#Q+fM@60-i?m z`U`XF1UUu~0^V^tqqELOr||JU4Edmag72ZkPj~`(ir?9X!D8F*NAY1G)MD`U-II5-1rX%4e+2Io&K>8ECf z<2|=VK$e8`04B@=NWpXfHj;ljwWCx_qEw432;>yex?Dcl-aMuPUFSm(p+6a>i7=O0 zAqyu!Yf16m4C4VKHf68AIdRY29MOLd%{Nyi?%|N!ofydGDLl6{zu#n2`@+)-EtHxC zK7*jiiI5;Y$A2}ZviGW;4`ZnCQbZA;H+va0fID#kPs$O9kbm9grksqDk5riN^g67y zzWGC}_ui$q0}+2Blw7aY!<`TI0QzdcN$I7D6RWp#<{Vj$=FLi9mmej@<;chP zEZ!ZydRz0ROP~{xTw^2_$`So0o)=0Aj#76VYWiy{)8NrdFb3gJwmcsBKTSa*57K#5 zb|u!A5c1xE%5)w1Cx-b^pMaG46*KNNI2vY*HKNLEL?h6-S(K1d0DGGO9G&86x)k zs}CjDRY%!6)zv)7ojdeBL#&t)4kyDsQ8i~T7mOnzPdu*q>iVpEP$lr{G$kI7`(!Go z$AW(jSGb^DW1jKMa-7Q(ZFg(4nnqILuNUE)iFzAhsZ@tsEf}a1Zh8!Y=L@d|R4 zG5D`Tva7%@&0gRIVZn>mbnvGSH6a#%77c#sq?%JL@#`;@i>*AVS5Xwt7vyU_JZ{8a zJmGnzU>zoJ(BB-Jqi_+{A6~=G%ziLCmpyraGktyEMqb%|8$c`w*yjnV`T!t=Rl{VE z{TE<28HNg0Ng?e-pR;}{sKD$;rT0B6*2-O9p+GtP#*+oj&Q;!dDd2kZ#x+Ab%MvCT zibWXcafcs1#Yf?j&4rJsd`WRl7w99rsBIDwC>$ffD zIEu7L+M;@qx2`te1FabnZr6PJCl1C6uLD0CFZ+!X&Me+>NsDsG^a;QeJ!AWQqOo7- zIezG>^heo+PQ%B9d8+F4^?{_=ocfykpKcyD>Vz2niO~sj(ajjv%7LhzW(WU*9Nlb( zi1lp`T+PpyL(ywH3|+tdCotD)baf&zV4OJ)uSpz2gs(er)lSXPoabJ5?ol zGW76Gu*d5gKa%R@{WeWL#jlpKt&m-1S_+|-`;~`%M0c=E61*Fi@n{UV1OqV*=R7kd z8a$w)b3}C9eiFBeXSmcJhVA+8@h6-i1jP|DyCcBXzj^Cu^q@@p&-_4zRW=PPasCIJ zPX=sgI())dw#PDrqazYOvR^5%nAvsOLXvG`|AhP*4-@UiwoLI)cK985mEvzzMzXMv z^#Hz9Rs2RystZX%=;KK5W{85>*1Uwg|ET5hNk%YbJ%lG~^i;B1kwwn>>3wsGO`TeC zi+#1!+X0Jr(V@kiRg#MHW+#HJcF){hl2nfSRqVL?u{bf{n(`I@F>l;@Nsor)-$Ta7 zG2dsnvWwWpGhT=n7rgEiJR94n>HPR2NXfQho%vqn9Q(_#x~ZH+A1U0_$Cpv2w5oOE zE1IkRuj2SFRZD!5IR5A3sp`?Nn(u$5DX8DIXG85yvAN0^UFN2Ra&^_>s+-LAvV;?C zHR=U5M~s>UCUTRHSkMMsrbYp_>5=wjVg|C7|LNMkE9$zg_R#l)d+%iV+H|F|tEE-g zr>UUXqC)L|vNpNBc6ax>noby;r(t#NmBA@a$?H$C(ZTGeX*VuuO$_7DB$eIY1|!Vr z&#d?Ja~u_TCCnrzWOooFUAV4h@AwwPn~7}g91o(&Zmz=1LanC;FrChAK)8;2h!CLc z$jf=zSZ{hB1FdkhK~Bq`DG)Tbnf5>?(wG_cpma{35u+gHkZ_nIhm^1vzx#jVLMLd+ zrtw4kx+DEOw7qmFX$7`lbQAVb&@lEdl{>%>^~yHO!KG2FfAK! zW6k$=)hWXWRc4OgK+6hRa#7})mn8L0r*;+=Od5E0Op=B=W0mS+VUhVUh=?cOZb9DY^Tt%vm;2cZgTe*!d!eRt`kzd;U z&VS#wt^$sL4zu>IYQcXOwT)m%+5YX=FW29gz<7#MstjLV3`%R#lh9DgeDIhvsOs5+ za--It6P_twlSZiaXZRg*xZ1zpGMbn8fcLoAoR1`viLlG*FWAdyS%=TQLd=53%-+{( zRV!4mpgSfZ77qNr9oQNa+d}(d&u)^&B6i1F{~f<_c50vS0y2Ndy~7N$t!^3Q`d16bAD&;SE*##drj5OkDL83)pSgf@I$AR-1maa7s%`GHfV! zw_+hk{Xzsp^JSAwNn;S^+K#|mPFg7>e%VB$k`Fty&uKi&3pHe1jdK}FWqMpHqN{Vd zZB4)Bf8(CyGJk+w5ev-k4tY&ps0{#95cuKNlJyfytPVW#wt!O`{W`5R)c&hk+IM#2o_}A_*fZ$Zb~8zB}49- ziG@CqZmk9~>2Hc>%1EhiJ)tVJQg?w`LxLyeFE#CQGDT;VyT+79e2T}7#v41qizFWi zKub)PoivPcs>*@C_TQ{E zv`^{KWvTE%k$|NQXPr{HO^kgt)GKxOpLmeMnpsma72|5{v*y$@h_AW=kdm@_Q;*G^ zn2t~F)~H7|uF2J01**u0H)Ea<|E?wuvC49*+RF=tK8kA>hz;$eH{_5_eHH^ep_1XQ z_~{pFGD7FJ*bJ6H5ePb>K`dfq;D)~h--5B+_UU^Y}u>$ySoW6^|gB7(t^iXYNHpQ=Zw05r%?VvLVRrpf4+06r`t<1B8>ld_(?qzDb1 z9|~}$-zWLBeT3Ujns^=&W@t`=jfIK@SfxlC)AK~L$uwCmxfVrCP+oIY`D@v+GK+Phf7w$ID)VQkTfL~+w%5J2Z+TNQDGKf9FWi5B;a(#? z*w|WUgWN?u^lc^k;f8V@s18z43Aa=p8RMf>I+>=CYlcuVf{Khvq)L@xLyDk%8MH_$ zJF5oRq8m1>y}L!r2)+R@i`)Ik%Uc_NV~X65j}OLhBK9E%u=D!wjpCo(h<7tqbGZS> zY>?@!lxgyj0}HV&L}82g}8pul4=g^kKUFM%?5X@iWkE_lpM z#^RhG?qZWuw4XI8MX-tDi5-&eS;S6rZs>SWbUsyi8LKx{cr2ub9P>wYvDk4?)#*$i z9`FYZMC5G>W%}56)S5VIF{Fi8T#A1_!c`3am4t+zBwv5ju5*ei+%4LM6yJji;RZ zVSNQjm#QnvelvJccBoglKP-C@Y)m;e-f}C{L_t4m?8)Cwfp9i&@vw8Tu-l2fC7qIy@8>uK&a;6==sxx*ycO4so7gwY;ux4O zxdO1Kezu^qgt{(LXemS%JTSAIQuOrO7F80Ta%`MY6AHWLH8fKM@btB$A%nhHRP##) zyc>IO-D8B>0#bINlrd9kPP_H`r-LT2vb}Pv{gzWOM3FWiv_xO2G9KWi%4dSA7T}2K zqZvTr^Z_Mj2${=RZrCj1yQzdvCBQ?Kum=wDTMN|VZ-v%x@VvZjJrneIDFx>(4eSI_ z_Se?I?UW+cpUWbUG9YS$3if`A?4w|oq1y2S_y+nrDPxW%XIK!7J;)^5Glk^xiCh*$ zADHo%<9QtFXRpv=y*(IU4CJ{D+1s-cLQV#3wtKwvm3#gH7g{U#$~Sd;P(&pO8UMvX zhs*(hIX)Q4Sy4{Zu(6T9zEP|+Yx)3Y+;AcowQ9W+X_sJ^AuLD@u^V^(bs+t7ZQvJp zv*2l6-0AXSV26tvy79jGVZ>F6{j1Cx03QwhI-YiHXn;tkaQLxGJyXTaU=n6&*>w6x zB%sY-)<~i+JF3m?7R^;Kb`pdRccqAgo^>QEc#<^K8Ec}nXHs0#SyfFy9#j}+*7@j@ zQGFEoB2|iWiWD6*XfXz0>q=(D$bu}gK+5*!Y2=1?Rt5YCMOp1%HX_;DHG zWI+`WhmWsyCOG27mdSc6wTs|1GJwmuV8k~h)w77?XqVA=gM5?pbhqGC>C|d`e$kWu z)-5pk+X-7Sq7K^l&`z(t(SwXPlQ~#`IvCbEEJ7U@Qyqg^NCb+a5$g!HjNbbY`qMY9 z90)Vg4o|GLIIU*8D^JjHi@c!y&Z7Lxl~-c%*~=#sYL2H5Pk(oHsy@-3tUBFJG0#TO zGNgn(d=lqQ6}>gv+V%bQM0#o*B%8`ka?}cs;CcjH;xF`{;-=j>d4ywv_(6m%PQ&2X zz?*e}Q>()6LjmL6l=hVBf;zKpE%x^1+;glHMBl6^iH3x|z;e@FU85w+(U$ zVE-pY!8rYpiod5!>?xPs|Fm+(@WO{*rfl#rY}(Tuv++pE7L`gPtDuKCuh27hew3n9 zB?`JJt?5CpQw=`QMeKmSgg0aNm0?|Gtxuw7Ug%gl{Cvds)vhP>`g7l?L=&Yh`T^IF zEQ(w-^@Nf5={xvouK&7A&uyy8FS3far1=6g4ysMI26fSi!LdEUV1xBRTwnh_A5_`6 zKO$aJvl};>8}n&|>JF@xqr)^gFvT6cX^&$l96sLeP!*onmhQ$izR+vFL)Yq~J%6Wk zE50>&4~7zwq{mX&(W!d+vl&016$-PA*n=K%DF>YVy&Ln>(R_YtC%x&NMDyEJd}ctu zP~TzGCt)?wzXSaG8!^!84svT-Y?XGsCc#LQDxZmw5jGKAmeSDhp!5>IQ2P?t? z$^2vAfHt$OV^XJ#!tMTrs(ZuiFV8?aDZpPdo?q5Ww-ltHXCtNb?$JkTzM2&2D$c^6 zhlWzxjdY73GWWm{6Rgu*sj5qq2&!FKsqj0vC0puFYcplJ@2_pfoiX>+B2~Km8>3cJ zI@ve%r91SM?|#Kp^A`y@un1gSz_gS)H@xchjYerQQzZc^m6z{yX%y z3VZ$hB09=s?#jRGor6XEI(O7{4LC3pyn!>UPn_n-)wkH1bEzRuShrq9CW_n>=oGv(TV=!c?4bcH&U>1Ko#frw0Cn zQS7Nyee&MBo1z~-PeD=*lOPB_jcAM~H4TNJVhK!)QA(QVEDitF(==B|H*!yg;6Qal zE1K`UULz6;lcKKuRO*)M1B`DGPuT&}9!%ygASwnsmh0o}T9hLn-TUI&Wr zzd9G)le(%_`jbQSS@hr=*5f3^d!e1+?_^nYSlQpb@l@801=N`WB?2OW1GhnBZ>4bc zL!IRED0foh#uZoScH2F8(H6Sk<9Mo{3J9sUsqz_jc1+C69K!^>ke$OCp9@Cd>^B|P ztN{E#5B8~$9!vSDus_sVe8OD4`3buBgyQk!B~{OQB+LAnSghk=v^nIGOdsyK0&fB1 z`3fNrqo^3h{o;=ygy4MSgEaO&~Y zOwVL}PLRBLHJ_7;Uv|bZ^HaoxSswC)MXlQAZAd6qMhx`taAKVZ?^G>ahm9)cP1_7s z-}GrK>w&y8;{4P;b_|Pbu>q<1!D>}C3dk=##02j#y>v}v=F`4R*h!FLO<6#dd|bKq_N{d|8>o{RsLt#Q}H3Q3JPrm<=T!nc(iRl`LecX z9J4~i5ZvGh3+vcorixmC!@Y+?&Y64#yZNPtDN9&lvMHO|`_xnKM}5se_XI2V+OsSL zsJGvVyAtKSk2|+JUp#J}n|o$toaxxOw3(#+az4;6HRneuvw_=|Jv~p02KzMCP*PHR ze!1PFULwa+Dzyr-xHKTV5Agtxlb0X)DoxeG zBG3zN?2^en!wK^vm@fsFkgvUX)AHv@Hq&&!0S!X?Yswj$ zZZ_e5ZnfXpdS8O&Gx{3{zvhM-m7tka)%66_#B0~~+MWz^k6aE_Q_~hAdG4XV7j|2m zveqHX9=JuA_duG9mKmnetpKj+VK)s=)5D<4+X_UUmvHMC3^!kck*S<{=6N$l4Bi^R z%1BaLlHdY?B*g3rySN+^%b8irTWAN*JvI*ZJw8?bWSXE+D{Fm@cU@FtWCUB3#fcid zipa#LDYxe5MXyVUZLP3rGAKE&rSnz zY%BvGNW9vpkSH~|jqp-Lb|h1Q(~AS?(&PoJZ3d35s3!891TGb3zJdaG>W}-daq)7? zi8MTeH=k@tk0mKo`(n;W9YO^np-I`$P7ZPx`3m|p#hk4mSEga+nAP^s3X&=j5wl(a zZFaT(SaDU`Wv@->be`dt3DrcxnqK}d6Uj!8c7{8#A5-Y0a$Gt#o z^GG^-K`~sjN&0@}B^j}hxJ(HDT2>C3ehcD1Y*{UbX>3{H|Dw`DnFM9Kg-nVyThO&M zEQu{8PgS( zMNGd*Q+Owt$2S#P)UHSkC8k|-o&-Cc4%1Qr^DMEN=Jr*K0|q);ebxbKT8f;C-jb1q6EgP*&h&2Wv`V=epM3P; z7AO8SZV?xF=d8GKS)a+kZ_s z7ve|Ye!|?11|$xfen(N*btQJ@X^sF)cW3^$%?{%;lg=*!CCXS(+r$>$fc><)CPY}I z5Q$5BLB>fxBtuU@g_z5T8k+6R@xs*Ohn?9pdusED{0%UHO%{@+VqsR~fk?!gJmxRR zm0a@J;4qZA)4#gKR<3qm;1^j~pR*)B+AG6s?hbiO0$>{><5C`7k(6VB>VkT^Q_rm~ z%r8gsKC>Z&FeeMG20Tiu2>p5SgLqpP@J0oRYx37jFy{c5kuVV^vCUdL6nMLjuA(Ds z9e)=KpXAECeQvVw_22hj3&LL}=6^itOOyZDpQ=4#uU(UwQUVJ_Yi4>$-}h(xg!Rhd z?^~fi4Phr}y)2Gzf(VU9_o}WOET#C1vweSe)X@q4@hYl)w^Vs1{+j#c&+c!B$M`OX zw7v#1fDjEVJzk5U>4fKi)oGBkA3^Wr!P*$8QTsWC zZABFt^b`hWFtXb4RqVJ5%pJp)p8|a|0QDYc3kudg(llH!>~Z7l0*78~i*;;?4EPll zVmPfhdK_Nb&Ylvi!^1$-kHhm-Qj2KF+uP9UV8wI{>cKXw857Yuj(SQ1-=!(`FgT`E zApI)mhG?8`+YiUK#l|sQpBcbB!+vR;>nG;lI)m#M2J;q;b}(H7PhdX3Lf39%__6=k zR3ni2SPAT3T>c?x0{7q*)&!1I&gV9~ihJI~ZIu5_Eu>h>hUZks{GKvM9?N^y=8pMM zV%G?-uT4u?+s7YQdHrqpA2;nP1pVC$=1laALEw?h@)*(!Y~Q2IQn^cAP<)UNQRK>5$4 z@*z$IVyE&HuJmnE1ZKuj#sOlNY&d#kSVW%d2Sg0ni?n3HRRku^uE>zc>QWsH2 zDB5Y56>3;cY1HD>4ed0Y3Xc*^HGhQ&=yl3ecF5Y<3HqwzyVbNVVzuws$X*N+kDHRY z8mg^nt8=$QDydK>&rT?+Q|Dd2ZvGvK;%^FdcXZ8mbvq`GoeDXI`gZ4@x==@$ax+^0 z@;61NU7_c91eDeEoJPui;R3#jr@a;8}aZObRj9z z#;!Zuf5J@CuzVZO4czVVXZQ5{yNtf8$?kBQsUF(%68B8w!uh3~I{y+vt} zMP<0f1k3KAX;}Z1`Nh3?Tqw|KZ`oaB`C!_zcN)Dd&Sp=B6)6*UYk3DeU=8+G(X4X6 z+wzzs#2VpiTPmWFiH$_nHjvpakxy~1y@!JF%po94V{OEam^W>~Uu<)2PYII*HK$MD z2KdDRL`$yr8t|A5va~0@yf3dk?13m*Idx_7M2a18WYyBC*x`YO)z`HV$4DS6@!`JKivnwBOC2Q`k&P8_-$Z*OiLT;kNAcw}Wtybl!#ZBI z-@26{%MEsUJj~AgN4s+M{kJzg|k@~_^D?TTA|acI>SFsWUm@F zp|tHIUD>@ZJ||rgSi5Mr6~XIuNyrJ= z!QV@a!#aY*sE(DdpGSKVo>5#^_6W|=l3Hm7ZR>2JYsoSsF*Rzq??>Xcjsks-kh4al z-PR?ffF3)M&!%Ugk_DyG+4N17g-@rm4`g@aUD&BtTy-VxI};!E5C--MBhI-m_K951 z;*-uf-NR{{vjwFmucieXz1SRKvCe@&3_~jhESWKNj)ei|!|IOt=t>kRYj({S@`x9R zc@-eUjk6Db$*as07%M;laMcTLB7P5`=*IV&Le}`>M1X|b2%&_Fkb{$Qa$Z%GJS+AJ zCi}6-Bt;nVOs#`Q)IVa$g^x<@r6t@0B{9u8C~9fSFT%@xdAe>K^XK5$d{L~n)mW3K z{$LWj_>mROYDYX*e&uwm0I_qvvUk2xz0Q_Tyb4BO!s@De#Y+q%+>%yPZt%q(7s!&g z&w6Y&t)Hw4J$eKs;Ml7KjiXPD5a?7VoO~BrUo+qd+ zToj{nASrDhD%w8ZZ!14hf7UcAuI#phU$I4I!_BFN=cMcZC_)XR%aJKKxp}ei(GIc0 z#g2E<<-&_ierGB#{%&;0B}U%A@o)8pllW1yTJ*kBdn13C*e!$Jp`wcW5;gY)IxjN! z>An~V(ot_ywbipA_ex8f$o7u!?u>^e(ra*~J+`$RA)`}3nrRQ}^xq`4%Q7WW; z+cG^%r8w&9FT}6?xFG=iNC@on8N@okp;$Z1$7j9$b!Ctd8C=^LAVhVUsBI zMdARLxK9* z2lR{G_g|RkizeqiRBnI%q?T$7_!K)|e+R%F2y2vpUN1v6Sk|;jqWVX}6E2PNN|6au+!a#s&f(p*I;gUcKyIqO(dVP$uu}rO>(9 zrxEc)odtRQiU_g=tGl(`&`uhsAC8fXQ~RdhtQ^VyOpz*~l@U!#{*CNnb^i zAx#zGQN#qb`a6riU#OiU9Ix$#uE5zoJk6dZxcqp+S(iV>mlG480~00E9?IMQBTUx{ z^3|*gEw74+u1UCUaSbp+l^;mXkzqo$wx418w{@L=m+*4V>&i*g^%2@)h(9Fe+t+Qm zR{FQ8^A}6!1!N@nSfjND&4%_17I5`_NGZvKCwV~q%w>T<5wM#ZA+moK#)NSM5a#%W z0!krrNprl(f*RI<55ZuGC=nPZIoUtx=tM9#xQ|GvKX3Zm%xmm9LLgKG=m1ypRc}p8rush1wf$>ebKGlalz#OPS;=WpwL#?Gq;j4fo!V zc2~PkdPs}A1Ha$MBNZh0{*@ry?t6A`quu_SPq^~tfUs0+6MP8VjYAcdr#{n`zyl|* ztiJZ3Pj&R;)tZ0?_c*()`JdTraCe~ZfZ$>dJ~-2%p1c$`xP$WI7af3biKoz_dLSRB zbijn6eIfI9W`7EtTh3*qy>>7IBUVsp-ck4D3eTbc(nv?WS?&roTiC+ZXQ)u-)NdTC zbAu}}F}lH07h~U>vh>B=&%YKoAgq8Q2EyvD)A>u*4i&31f;ln*AWofKrgv6w_1c>v zfy14k0Urf!eNsPewCs-GREtBL1AQ(vBaXk817lI~5+N zl3b2#ulYLJ=Myl44rm80$A$xp>}q+@*Bh3eU4K^J>W%m6z^gldt}O1}qucxn_>;ZH z^1}rpzOIiD;HpnjbzfQW12p#OKYBn}HiBK09LZcN-0P|@0T^V|E zB5y&H4Xa;<#fG{+b+|s*cH!+$yM^2~Hk~3R0~XT?WGx+OeVRmWR{_Tn)%sf(AULg! z(Mp5gq#e8Z?>(B!j&G<9kXEo{bYXVB^*<8ixHx@}`7cr@ZOBA)Pt}Mz=jvk<^ zf1`?q14kcuw|hz4Z$X_Jw|c`YrKN%+%rm-Tj6*0)Hp`6hJD?X|s*Dia2DtT?RZsaE zUexf&+-;L)oO9hHeDQ!-RiRK zqP$W5S@o&{GKF)fH{$v2aYDKJz~~2ZC2M-%;L~a9$og*?71-T-WUfu4%wv~^3RF2{ zET9(bp-|v@@;GOLBFJ=^{!}~79u-Zu8(Co+xQgiV0T0WJDCKm5_Aowf2>;=lX(ssD zF9{9>$`E;%GAOvPovs;wjf;I!Hzz*t*yqJn>TZ68Nbm=Y3YMIQA<-8&N#}Xw%q5(~ zVHtmwIO<30__{})*o?DcFr!b!pc`}ypRql-$K4^40I*kipYLMLK_2}?Ec;!Ra=5a_ zaTbg}-A6g(3l)O@LMC(6R>|=yoF;!wZDM>cZnzA1H&Fdxps4XzVx1!t!k;^2cAq@L z1B^WeHXd z0<)C$l&kE$MmvH7)>s8wMx=tdR;0>}_<}4?F#U!ucFnwiT;L$D2v>Hldtv!IuyF1?se)m0{YKjY`InJjNxgm`Jq|UylFVGG$2jr?u7Zm=N<%6nL5z95 zve3dF^#@IU6s2bcDdbathI1pe=2?NZun*&rHv&55+}J(A)(-XmXzrFRwN5<=l;4r1 zw)78Euo2h5!9zxLA`Rp>L#Xr^g}CT48r2%^ivbuHXX;FmhmkpK-1u!;RR?IRU~WN~Su;|pI0cJ-vvZc1 z1tg0$)9Pi^Fb{B_k!*nZr?WfU8{Jaa>mPAY%4(W2V(ogJ6vtri zg$sHetU@ZEeD4Xrpi3Il#Cl9g871b#5W2|qRVO8GS0@nYoc--K&UB?@mv+c)VOyh3 zRdw!o9%Ah9md)LdR}F(S`;)nL$UiJB6YV9y{$o$a){43QJv5%o{PG`J<(B_?Xsme6 z!JfN!#TDI)1pNl7%tz1_pTsSn7iB)9JcQi`k4F~>I~b`Oq+zQbZ0cNRc1bG>zaJ>b=?n6duf$RZ(=H!hUjuE!_2L^@c^2_W;jNh3<};3$mr%Z z3+3U;4@UR<{pnOFaB{~u#n5nP2<_%O9vp`Y?PLx!OlE{Eq*0QMf(olUBhl^A(j6=P zAvVyL{%}^A{e&h3H}yAW+NS!_%p@qDejXt=7t1d z#=uONVd|J{&0T?U1Atf9<#dM#yf?`E2Id#dnwQD>_GbhP#HL6*&SsO47#8Uu0j%Fm zI5V4&4RSVb2U%$++IeHH^TNJ&JE#2stVb}v2y{GyYm}gg9gl*pqHbtwN0eaxvaGqr zBRE&-T=|@;g}~lSa1+FjchiBGt_o&G!&Jj?nDm1cu809}9#t7igo(Cikh+uQpTsKd zqucr8c70QRVZ=`8VC)$BhXZSBH{hwP*BB!>eolqL6U;qLV9VRbNJVGC`r{8U(qLvJ zR5cA^W5!DhgC(5-)16%Wd?212PQ?+NJ6d1>jszt@`Z>XO!SE3D!>+4;Gc7-zyQuFF z8t9vm1#*5wCwrMDvUi+j&*wrt!Qp|kSNO9JR%Gr>V-U_5BK{J(HjB%XLxdcjZSPIgvBfN5ufjn{-gXW`H-~Z5m7aa;`kqwHXA__4KuoZ-ndA0 zsvGlIf~|SH=;W^=S~;@zdzf@T+Q7_<7zOCJ>vJYScgu3E{4lmQKuEv#<`7q^`^LTeV+3+S8XpFdIMj2ZzS3tYn z9Vqf+xp3Hf6;%lU1q3d%Uvu{_FZ9DO2{JfZF890}9b3VrS|Ob!^vDB*Vx`-J0*8XM zlHD~O6t=Rn*Ql#J^qzoS&nTw01N85_NymHsVFDdY0Dmv#jG_lBbbu0R)##+~rC^8R z`S2I-(K2^4*ljo}$MqJ{ob_9<$T$DyTrQ1G;h=^JPUlF&L9e1J=$n!BLn8?Q{h5dih*A8d+55UjVCB>hQ3I*}!pG zlA?j#PWc#$qJ;db_0-e!_N(v7s)4vb9{BI*D zw6jKXKjIS{`%y(#As@o2dL44~_H8m>5aSTr0cX!-qrRvcdf;ARm#NzoYQc(d$A85bq+&6+qW={lG$oe7iuOE=O9KdTUIG$akcuNXbN zgE|obKJH&L(Tw@i1+35E_n3xi%vi{;oB2GgKTn`bfa@1|*!?TG+YBf5fF{H^`w6Iy7GfAtLJ-I=xz&xAiNIDP(YEp$E)?_;Y7fbGxT zb&R{~TzU8O^P8}Ku9|kJ?6;VZ_A2FHnhGGu5O0g;Y0Jxv8HXqvF2xSP4=TEzj`?~* z5(xrmk8K_<%FXRrz>dX~N#fj4x%>qv1CtSi=hrhP&XN9PdbMAR>xcMXzI+W?)}azOJ&XEBf= z4lor^s&)cjZ(sOoDWtzun1pP>pt=~SE&`I89ER%Xkev`m&_IIQAQBBML4PPpz8AyW z>56QvIBz$~h%b!0j|@R)m4G(N(N#A=#fz9jCXJti^$68*|Hc| zWFNWX&n<;B{5B()?h*7qoxwhyzJbN$W4)o}_dJ8i;NyP>$-+a_zk@a=m}gfWDc05x z(;q6V0#@URDU0Xjn=y#H9N_OX&K;M~)w~Z^hD>W875ec1O&0%4AVq*cY4;;@{$TSe zSstIzcnHX5g~dTZYpj4qXqYE-VcC^lR0!I3>Zoy!mT?(L4;)di#9$UMxZgJvmN2eM zIF!eo_U2?Qj*~hrmB%@? z+@lJrpbZNtv@Aal147d;dlbt$l(^}yvkg{eTpSC7*Dql{wRbePLvL|lNyPw~4w7U* zJ^G9S+C}T>xb$uI#FaR#bQ6~i7lH<`lhs7V!Cu?X`FPkona!oGx`Tg=o;)|t3kFNm zhO}eQ0R$v33jc!q6tN0l(T|)a^vIWSveRFZzJXMjY}PFzf0XIIZz-k}NW1B{E}sYs$<(rBZ*!xq3$OziAQd^qGG%9+%r3 zIFC7r%$~nITRuFK37R?ddoz1U(ZZY4_}stQaM#z?^|L~&Gm#Hp$N!TGu|660=5?~c z+*s0U!P?iU)pObZ@hASnT0ER%h|G_EpK^UMTX1>4%oUUC>Ip5JulYBB;4ybdpJTc% zq&%D#*_ms6xZtU{(C}iR{lD3!TcIlW#e3GT+b+&`KU{P-SiH?Y*C(=MTfGQZSQ<8% zdGs&2`ts74$jp$z*b9+2M%7Dw@FfM;mYD0v3MOLu5C2Cd;yDMLjzNJG-?Z&6shoS= z>c1Rs{ifxX?tUEZ7lWfdnB9yC5@wFSHzqfK=ARt~oM$V-Y=P`2%LmEJFB~Rc^+9)k z3g!kwdFi#7S!BRA_;BaqidOX~Dd3IXI+r&KShKg;h ztI2ZgKty0@Lyi69_xxI_r=)I!6K|7)d4_ud__g+o&6A|ccsLVF?`wdxyHol z(ODh)aQ4_oA40a-KR?_^N?Q3;;#9DrD9mh@c>)^A!JJ$c=H~%Ta9}%_cZ=LU7Jacp zH&F}=@kU;OO|31=v~`Z!%P1M`^%<<9Bw!eYxYxC5$MRGY=L15p~Gu1sA0@) zcA~X9nS(8H8-8sY`FMM&>@(bx!xM8)6$qq!&yuy_vYV~^JKl*F-`L{9k9|p?e@B78 zgI6c`@bqWUiOm;8I%^)Y{PO)|EC%=$iXbBNJ?cY=U=Ic|@nDB*V&g8SbHp>80E^kS z{DMyWpS|~dit_KeJ;~jK#)}4#BodkoN)D2mAQ=fNNkDQEkepO#LO0#SCT9dhK$0ZM zIVS}~$s!;bBu5E7{OB>haY?QPK58J7^5f3=erC*E8jl$8#@e3>+)Y6sJM*>vkbIeW74 zO8c^+jHP0jWbEX#`>mTJjA^0MXZU1lqt|L~L_7Cz(t?D0zpmHyv>P(7f?1D-${eM1 z3Gfz&ezga~h`@A@bQcv-kS?a>G2JC)qyVKxt|S$1md2MzjOi#*=)D*S^n>E)`$7&< zQNWBg-ea`mUCMoVOn2Iowa3}AZ?B0MYFH)n9z`=hGCBICU!aYP3uSn=`MpT7j6}=_ zUI33nQcf(WFD@8W*?!3uE4lCRK9r%lJ_E#Ku~=6I1g$YM@tz&)~L)W9^_k-hcu&gwwd|t z@~d~l=ya?{>(;$qh~$g-N>17Xbe7BurOJVTIsPUR%S-l}p`5>*MDeRaRkC%F6xGMb^4yKbQ7$5wim}Zw2>%0FRsos8zE%|rJv{Y;apzn;CVuGq|!{2#8# z<6~2~B0>v{;CKK7uL6RKZfS*&eJ!6_kj=Xb=r7((?9XEFC0NW6q#<)ByiF;a7#hk6 zKhlNWYShcMLg&`#Yd+`^9oIZhbLhE+#S{CktAka4`XsJm_z}iRvWOnZE2S2N^q7m& zdH(8;=15nV*6!Cnx0R2CwA2eI^=DW9Rk%iOzNJsO{!CP~qhWM;cKn8Kg+2LUBn+X@ zprayQ?^-z8wRS?{Sngq}Wh9EO)haf_FP%%8NiL z6Z~Wj2aSkz9wNf395wfx7rj<}T$+QtDJ*XE48K`47ZOEm3ZpOSc>In{@1)^qi@NUx zmeU~agq-}Ta||J%WzmmFue5>3t;dC>`1`Q=<%LowJ1lbY9KZ}husm?Y9lE?@$By8i z^%XI%FZ|q4yprphnAP)<=hj&=U|cxnJALG8u=CgTOdfM;iwLBN6dM1Xjh;H9wa;|j z0hz2f5K{N$_H*~yuE=zWBeEAM@AB`ZPTb?Be7L+7diJdUm)A{M-8O26^hh|9z#QI` zxg=gM5V0*c@y^QwPadStTF?51ni9%-$z%h$^f?XUe^cCbN7MADA49u*&}AG~5ez?> z9z6*QL5JE{_)zH4uMk;CVJvo7(hosv%JGr6zzc*xX=HjpJVh4i0-gnn;a2?7r_-bg z@dlB>?+C9-iBUFxkY&g|(akb7_bm%+cXK7(9Er?QHN3Ni?40ESS)@?Z&E{uZl!x+N zmh@3f5a!+GYD(%~d_HD}b6lw6pir_`y)`MZA7LS_$E`=CER@vhIg0T;?I=k%JAEhG z$KN`_UI;2fKn)5y3|@ew16vrG`rXLnQ)NXHVx-3O&t9TCk)erjl;}}7s!XTAD=;U!H@#v44Z8a_#SE*smm~8N`-KG>gurbI~ zEj;Q}&A}*i>7dztPq(9}XQIXxS+MtT;r{S@#)ViFrq1+m?rsuFHhj40c*eZ4HgC^) zf)ex*k{+5VWN^@55$EPC*^S}uRfNRtb%_%6v zR+dP2aZ#=k867^{kHbOi;sQ%GQ$HuAB0-t)H|+ryu%LeU*ucliREP{`bv#evx^XO* z(;2)n-&hp&RLKg|5US)olj0HbJ9Cw4j+tCgx}s$?i!e7|?OPloR4su^WNc4ml zfq$p>y|&XPj3B&0#aa$Xd&QUy#kNE6UtGIIM z=$}0i@q-jE|C*au0e1d4c+n=D0Ig`)OEAqshDf7Gn>|6P$5krov*ttbTtFcPBeW?j zE*yQ&xi)cpgQmvTIVe&bYdliBlu0#T_7*}Wc-$v8ySZCP37CEx5dH`1XBpt zT~xySfHTgJ=0zC7+Nsh+pQ+?tp#!ACmvCcG|!UTx+yE}`q6d^eYiS>ne7H;hjY0)-Jlwm(wDcKYO z&QUQl*MG#OjsNtw9k7u5m|++QLYBBT9j~P@F1^4vvSwu{uQHL|wgjp*y9xJujG{UK zYn&f~pEIXQkW1z!|LCkq*nC50eM}+#y1Uuw=8>ZVhyy5Lw;c+$;2xDBl}0&KR>Rdv z3X!(Ow!<$d(X@b4cOH{?zR9ik;0?+=G7@sVhtY{{@(rsjUsbl4eC5aVL(;HInDtRHPf%&);8w- zOiK_{rl!DZk8)R;sVHq!DCDO6Di^kS5yht8?x(QgVN5G-(42c>PSH9oMurXlin~_| z#T)2`6Xe~=S~m?vj3qI6Owc0Z^b@R}ckOarhR( zvTE}6k5dC!lk#HQ?Ph^h0t@a(28=W>gjp7^=_VDbdK2{E9Y=+#EgQ#wL%!F|AN35W zBN_9eL%k5Jey(p=zszgY{N5b7ImP>x;XWQ($Hr`uby82<Gg9fY7QOkX}VBw-bp9GQhhcC?OVwF#S;U zA;`5}2H$}ws6L$UBf`18UD2tn+pq2Ud01sT!UX?*pQT7;E>Z6}W42oOB$gM64R)Eu zyveD)Yk_u7!@Ju}s_%~A{#YSztms0G;HYo0d8w%Qt^Irv{+voE#}jYDEnG#grm`NN z6NdIrRiLy`2ys)$MRa7QN{#W5=rcy%M7CxNKG0aFK=x_|c#px}yXi=vfpK z6b0iFh=vAfix?Gqc@R&mRA!}m3e+AwUkvAw6bPv=Y)n9ZDG3gRD`lTi;~NE|rlhS% zBM6`4Q6GjAQX{U&BLrsUry08l7sz@P!=y9o-#Yi!9#jO~BpRys>%K?b*+by(voh

4&_5=uAPU_l@Q`&o1 z>4%UPWc*BpL6G-lXI5g0NCf+9s1Tn}ImE|#xKGlf3cHMG4+P=RP4K2<`+X|B$s^DU zZUA2r-)7-);o{(jGgTj{J6hkG@kPSQ(zP@9h^gs9pMpz6F?cswcTV6QH*)42K}lL& z^u{nUGAAswo-e++hq#AsmkAo7ePfAv|ASV#&(WjkobvAJXBm3n8h>|*pa zetx0Z()A2}q1rbwt=u5rdQf0LD8LOD?p1-Z!9$s<5o^Q4qya*hU+_bZ?)?x5>=@)b zO2p7U4w3wtiA4$%V24ZecX@~wOi1B?V#w5cjl*#H^$aqWFUl*_!f!{tD`CIV!)?&S z+IV3?Y7J94;vo(s)_9X{waHj#E`yZokl{R%Sw5ad*C*L9`B07>PyhnV=NwgW)s0l2cDICBx6F zIKKY<;m@r|=0~{k66Mtoaz%&!pvpn+g@LE^5k0pZ#Kt4{wF&n@N{A3fZhUfX0T63i zFy2G7Y-ICxf=)laj2J#sJMIa74uX!3P+NC2OK=)l!T2jAG_+ps55Ib93tjM|n{~U} zuA`h3bZSU6l7nsprao?HE2rkHW8z>a#zVw)g-QH;Q{n(V>_kz(@zvoYs&^wlT0_c- zY16(`MM;4|GY~OFUpI3Q(0=@znt4Xk*>}_?H7q6}3m_|pu)7xDLW>ZJMwA@KBUKIv zN{3)}AXMIsNE<*JOd+k>XK$i_*(=PT)&0Q^B)S=JI*vKSBXv2#=g)JIpwT{LD#-XO zG*ciL(vKiRt zV?eRj{afzZtjp!I_ZauBPCRPe(2ma$j5j%ew_}CeZVux^4J55l6(lAVVbWLvSbgwq zI(!HMhgc^glX68r#S-wi@ycgY%ldGvDy|s#*uu?O(_6yTTT}hjL=DY#pV>v-?p-k_ zF)~u&x>;oI{9#+av|_1ZS4L!)qp@oDb!EZ3*4k&)@oS4Mt$eb&>_u2-RYe7fOH7|n_Hxf#3pS25N`y}Nx-vWECr&dpGmI5a1e}>vcWvsm=aR_X- z4;o%Wh&#+;?B(Rvkp_2s#3@iWCve+q)fa2%+I5&5?8<2^a&^5t%VEA`J%-ki%zeF+ zZX-cuF?PNktFn(?BB>{jt#SOd`Ih)JLUM1Zu5OP z4w7SMn{Vfo#k^iFGgpwjS)#k?n!Q=VxmoBl8q&L2UVtvNDJRtKkH+tZ{!4;?&5zSvRpBJ@K-p_GO0MR@+y{)|f3L&h2VS=jN|l z-N_qusF(eb27M|{O|4rF%+7;yj{Q3?+a{bp);f2@q>p4f^~Y?_M&0{H@@Ld;d)UAQ zCH`l;_ZN4-pZB%Sbxtlf+!PVxGHt%}Z01jPtIJ%kGY#2J+RhCSvA@~4Nn>_hI$85@ za!q{fy280$o4%6}=(=98UiWn;vfS14q4UD^4tjnE9pO5De-}ZyOT+ML+kE$}9PSkl z@6Ji>?nUqJ<;3pQ>hAT)E^cS{YxXWa*B*hy9--MV({T@l%_7TY*IAxEtaF48R zkG#)qoYoDrwnurocMG%++_`BfVjBCpN3FU~W4M3YexEid<&<-uE@hv-aG#-WpHX#p z$7lcU+CKB?{yoqEd9XVZ*8!Wv0lVq}tdNZQ)&ZyQ0ay3|ci%3=@PN1OfUoa>-~P|v z<`6#4=L_>il!V&6&^mc-%CtflbAe|T|1Q9 zbuq6zgx@(*;5s_&J(M{;R5m<%WbdUMai|!6q?Y3KQ2t1z?ntxmNDy?SzJ@z`eCnmq zcc^veSdYt_`PY$->hV*3BTU<@= zoLF+5{Fyj5!yVfgp4d)ib@80oho3l1CRnTb*wvl9j6LRwKXF;}aVN|0}?O&e$Czf)MwXoMe)=xKKAX<*%9K;7w^J7>YT{lufw zP}MVjke@5(8Oqm>M*b))mc1aWgACi#he9syj2AIE&*tzbH6~RXtBM z+{6C*9q)UdGU*g*c%D{xE?|HD40WD4=`Uk^mVSEvZZavu{(BbJ->f^hfE?Ao`6KSR zxS2fPzj5{fMFxLAs-72tHVXUxzOD-xDEM2xc3K9ysJL@c$#s(edQq)o$NsX{_p&ei zvOnc=pzw0=CYrzRa(MFc%i87F)5{Ui)##n8F|Mm`5?AA@SKkeF)%SWW{CYj*dZX}q zv+jDU?|OUk`p??+&gu0o2)B0!x6g$;kiZ?P;*Jb)$M(1rU)<>(+#41w?z|B9w+?sF zhr67_U9I7+PjNU9n1uiY<#*U)QDni<3Oldwv38@OT>7OB`)s{Y3=$sO>-+5eST@yo ze#ZmYU?Q(!mGi~{$8apE{kKxbL(Z?64}A~#=?=L@a}>j&0!~NV-|{t5gk2b_xxN?a z7wVU79`R0;n$&sx**xZ(sxT>u7kGJ6`n1w%vdU%aL}0GoV>Yksp2lV3En&&e+vFfJVrb^yzu3%-QOF3me#kns$Z{u@?TurTv)xC zjbE#qzgE`gS2lkBUYlE5on2a)SzMm}wKO%qG&#RG`Ey}n?$?jm`SF>b-==2ArsqZ{ zX1@NI9v+_<7#;8b`mN{7XwT3{*Wj0q{^9n4;f}tc_TItPp8lrJ-p2Os`qs|REghem z+iRNIsvBFY>su=8n>#DB%Re`iR@aqO)s|F#{#a2{R9;nBUR_vLSx{D)U-BvMV_9}l zNlsx&)`yQ7ABvJblqG#A^_b{z`_|&vQ*BY5SDu&D5`R;{T9}bnn4VXV{w_ZyuP`P1 zePTvVd|om3U14lSE;cnQHaR0YDJ?2KB_b;`A}tG(krAGr7M_-YN=rqhriG_uhNUEj zBqbsfQ-Tu`P;n{YF$u`%_>hR0pt$(Av9W>C@yT|GUlpX&R0y>Rm|cXhLR>2B%dX6o$v+{s1j zrK7oni?PE?GuxNXZJdm)91QK9p4r&zSlbxBuzg}-t!H7aYi{}ExuxFo7rI8~+NLkG z4NbM4J=ZWc(=d9jVQ8#qWUQ~RudZ*T^2AVC-#}6Ksq*8e3Xk>SkM(smRTVY$lHdS950UxbxUn3Y$Eng0O`uOK5IKO4^j1|B{J9$tE$`<&bY99%cU&&>VcF8BSr zH_c~U0(Uw289DeFZU)9j596h0=b^h9wwvL;b2F^mv@Be=SvYA}IB(zMq`AjI!^}Z* z7e>ttqrMA+-erd}u>*IQ!76wyq(p50+CV2KFs>KO?Fyq{l*^P9Wb28feeig=Xg{|* zhDGUS1HCGLAc6ZyvFSk7hoOW8t3gp7PrHG1A;%?UV-c2rODp3>TC{j~|0AvcNbA43 zv{dne!8Ge-{~UKfD2d`LSUZuF>;a+Nm8?Axw?J0^9C!4^{;$&d##*1k`eKl1&7E^N zM%*zlkq2rA|F^bsZnSj^kM%#=`j58$n`=wuMq5WJ6*&qa1k}tjscs9MA&_91up&3M z&Inp6yZ^Jcj!4Sc>r(_oI^W!UwuUhxQk`Dvg8$QJ>pea*o-Y2y|G%X5DKD`(-r+xv z@IQ|5f5Q>tZX6-gf4NCy*EllBN4G~%i#YvH(mKdfB;a^b>})i)G?*f2J@|b+-ttSD zr03?`Ky{%GRw9V(u0{>_XsARe!_Ty*AJx$U?=_+uYl@$RJpSZlmg-$H`AMy%v1aP_ zc6*iGc;KUw+OpX?x8MJqB;MC<@;fB6y{P7V(Sjf(XV$70Tx>&8^A)6ub6ZtLvdh2W zZ-A`~rbe589d4*z8_AJ=MXB9*^S7_)Ny&Z5&&QjS%vYV++D)}CU+UxsznY!aJo{zp zPaXt$Q}5p16U+5jE`Hbbr(hc2JJ&Bd{>?84~)h zn?#@W#c&oB_YxYG?68F4E+|@x;ICa@iWKbS{v9Pc;qW_Ja<%ApjLgaU?^rkq&oWk- z)^Rybjq~Gjyq5UJa)Pc3&r0G`1ILvlBfF0)$)-LVD=8Kzp4C*FWXILCO#I+gA9zi} zs+UXS`Kp`ypcL0D?_z&@SN|RL!t6j2-u0X?TBr3~G-vU8UX=Le`g^Pj??!&2fz!r^ zRJ-Dhf=r)Hp4f#qCUlbdDBew#M-(~5K97<#Hb07f{QVHGM7iNFZz=Rc<4uOyQhG^g z&4fwuCq$aYc4a?j$#&JS_||sys0!bon(qcL|9qaZEBRA9=d<;vZUM#jubaf3hV_Dy zoyP6jt(~U5UcTMtqluThEoZAGyRDZeTf1#|ApX5}qC3ue9bm4~y-o^=?Y%BQm4CmR z#?X1cht9rqzn95(d%uq*od2L7mg0Ocz+G5+FvwrGeJ~{0$A361I_Z4)MRM(5J;#|s zC^?V-_vkiM;Al*Zt0j9(LjuAv{#dna#mG{LJ7_H4UeqjNgeBL?*?mmdf?xd zDi8nF&0;;A`&LET{NEC_#MJ*woQ6zEMJ8p0CMDevHB@}+4N*hH$A`xzgv2I=MPh>^ zY|d~0VQen`Zyo#t?EU<20NWdH7Z>jU zXD@$84?hPtZ(DCaYfm35H%~8DM>|(9YZnjOm#*&C&s2kbrGh+PxVkC(yfXV2Z!@=d zF|~EN;cfbM4kp$P23B@YtZZ)_m4Ug<4QA87!EFD7u^E|a7@10%8LJo=KYyZi!`p5E zo4THX%2T5o#-^nER83p&2Cdy-HhC>wJq=|wl}GYwkHvI!9%^VkRMV7sq$&L`w8pKZ zD5a<-1%D(auOb3}bVJv8<>87ll48;d{{S{=1p#TJRoe`Va%#SRTHWAK&ipiQ;vWseow8{ ziTd47v1C@Dl#C1MO(A7zi zI<0SX+Sv9P5`R{Sb<{$}UQ@T~1}ZL4ynN983)^~r)7KMjO8>#3jvO}cZ?Ee&^i~uQ zWjKeA-ulK$WK2(I)jy^{VWOg|d}F7qlxIlu=?%%U*1z21Ao#~lrQ5%gP|oa}6cO!M zi;f|ztcwqtA2xX5`nF63`}h^iky=stjCS(1vhqK6>LI;#RFj(Is5Pm=5{)ORF_&&Q zv5>fBq%HL6qJudt5mEZPj~IPlQU#H;2*cHnYuR=mB}RcuSPPNu80SagkGP`Df|?1Z zEwz#LA_qkoQhLS$zR%v&v5`>vcX5R08lxhK-_C5R>g;AL3&9-?912#+4}nt0T80Jp z>E4Yp^=KY$Y}TyGKX!_&rsOq+nCHC;9x9)Vyg}yfBG-$tNbILC*JLhDf_Z$Sr5w*3 z%5979^8+?70|E+=McGd+>nU!6KYN)nRNsBzd=wBL*g{$JQt^VeVYZ#@oXjKk+DD5y zdoKMus}Hd^-G0~YLbO27@0n&(g^r@e>R~l57lse9@vtg&nFta6!M<{S-Byx641&2r zd}Rz-y!6}Az3@)~K(__tt>CGy$-fu1_M1nK zm7m97pBr0|R70~TR8+8ku%JJSvo9~cPG{M@Wr>>nuKeW!5pGZxX!BrD%e%|V!dF!?_Kl!Q+zV|h;PAzO7{A!#K ze-2BuCV^bOWjE6FPPe@aN)n&1?8gB4D}F5LUipb5x&zpw>F=Q2DdYJ0`X@a7!@C4} zWds?1PJ7iPmayDDi1|{T=#@PbR6fG^M+6=5)K-D1mdL<_?KuT5d`gNs8x{r$j(t}z z4s4PVA-TuR@yV^aZ&Svg<#_adGoOj+MtF{UVsh_>+-7kDHx$ z5cwmLxvj#t2POC*mUa3)JLv{QG=@mHz_kAi*iceB!P>Lw!Delw22JdoFmYbYwA&i8=T52-G~xB9kn)ml}+u@|?a3vaT+f3fG;psWl1(vl_E0 z=F_%wJL%hA5pXGTuiWdRSj^gs;*#+k&=x4~&Nk;~rc?63eR*58{B~ry0DcZ*3OINb zPxjG9@yzb=4;K&fO_~03b5wWm0X6594H|Ma4eZ4Ur?ZlhBRLZ^BGZrL`(+%I>Dl^F z0igj0j`O5{xD_8i-p}6{U(0NzgMtG^VI|G1YK(b#pZduP)sR%2`?cSala##_;~f{M=Y9V zd6KvD-Zcrir{szw&PX&>zpkGt!}zX(#mX~CY?vR3B@;rGpW63fT)Va`8f#$RQ>Is312%XS@kglz z%;jxDN7}pp@Mr?$-_5?M5VT2u-`U$HSYQi#6;6pce+_!MHHPD@6t9*w>mi`e7s-wlbFN!Tl#oGma6PH zyI8C~r`IbjJ$`H%J_Tz?fX+h@AEj|>g*vj8;_Ze(9;A4Gv4pagMxoTlw4`?d_TEeL zf)WpIzfsI+Ta_U5=b|DJiOMBB{+n!KXu1WoVvI0o*VosFIk#HYRdxP;%eX!&(rMW= z9QixZbbVYA+p=x1b1^e}eNsQtvg12)F@JG=+J38bFI?wxi4k|!uhV*vGIF^pjXNKW zZ9OW~x!Qb=`#Uw#dQvxXweuQxv2d#mch;wKeUO2>T-Ry)J2`TF(uBL(i*37H)4~0n z#a*9`v|XQ$;I1!lI6OK8@jkg}1sPa@%w``%&@U9u0@MIdWQ8%8J8AkTkc~%Tp&Klx z09r{QCKV#HT?{6l5;AQEQUn305wt-N$gTjiS!fE_m~?Mx3XR5K=*U(NW%Ap@fwo1o$xz!~l0eAO;Jd9DwAI@Og`9 za0mL@mz>N!3abW0EJUA%MnClfmeqi*bx2`9u(1vy-q4-j!+=<0U(|<@Dv)wnlGCxG ziN?TxC7GAniIEmS?p`c$Zn!xjnrw_{NfP)1j$luN4o(3S1K{zSvS0i-PS!YxLL8xG z++SRul13MnT?ot8faS$d3Glpa%K^#+fj%`r*cd800EqJdl9(X5oP_zqC^8`mLMkjt zM*?|eynPXHzv1n~C_Z^*B5W*?d_Qp>NIH>7dh!u&K>BhhFO+W#0a{GDUk_M*d@J1! z*hxVhJ_1ey$%kvnC`Ue1o|~-iBsNy$)fBZ~TD%46Thmm)bv=bjDvn$s^}s&WRZ0TW z0KBvSVtJ_J(g3B6H(*KNonShlP}ICzEC+r9m@1W2C{_PF&5Jsnlq#CXJ>JAWMe$?G z2v^371xUFgz~Tq3@ds)#Ks`@VR#%1`ekPrJ`o3D`NJ`=WCYGl%?(@eqGF(U6od&M& z)6^5wz!Yg>0_j_&sVvt06t?|L5LMR7hS&#(=ruHSV*uD{NScv)yN97Vpobng0w@0O z)TvVl6jCmEfDT6hcOHk&`<8G9AdaAVZ$ZH{lgrGTQF)$wFCdI8LUf@&f^>u0$REfR zq`3b#Pp~nMfa<;IW(KVZl-?vSI*g7PLo4hQbSEP1VWYOp<~!;^sJuy#f=RNHM!vKf z?bSe#CNDL}1R$Ns$57=ujZv8Erjt;8Aal{(ev#EtviYEIFi%N_@CQO5=o^F6{0IUGTTpnSoL= zWClk-*UsNWL;zAV(CE#gkF4>^6892jpgr6G_htd`7n-*DCL;jI8ic+hD=v&9kE9QK zG()}T_mOL?_{(WA2~`Q7P)Usw!_nCL-jGtB{RHBU63)evVNfYCYbmcnY0pEZL5#X!xk!e^x~}>%Q-FIb6*5%XFMGl{cL>knYi+^g>8cC7s6#N;he+3lJ+DW- zu19CoM>N$(&DO_U)MFVN;-woBpEo4GZYV4y$!M=6wj>Dx$n;BqVnij>i8LABNWM?u zJqrFf0|bqN*JoZ=EmIaSz~7Cpcx2T zUWLyeCYw0$^K2?9tSvxjIBm%^iON82z1!oP-+#+IqM6H*gu6b?1r0?H0>AixeAMC>&>`PuV!k~i&VTiC-w5(2$6va#09bf{{7 z4vBj+M{clrI-ow-K*##to2B{vL>svtX$UEMDhuF~(?Y=7O2kS=px0brS$G)UNbDZ6 z$_S-2?I6rWtxLCZ;Af9YH-kDl*mFr(Ozqi9flL6}kDwZ3X#u-;amJB$@3#@hfs0wY z_PHpl14!wc0VyruV5OAlKS-e^nxdV@a+pVGU?)8KwgU(AG=<*%Dz?T>Q0cjC7IgnuBSe;~)sqmQ{xR?Q@sl~1CAkpUJ4Qc4mYha*a((un$z-8PHC?s<;;KCo3>zLr#pAZ(B+_WcUizdI;OIvm%^=wX7=fyaf0lKo#g3CfM{xILz zjE~*uurtCi3*e9H5$u>|%WZFJg67Bq-TctJyVUtvLB)Td=8m7Me*z0rA*dV@{<&D| zoY{Gt8+afGp(OwXwjskZo}Z&;d&qkaoS;D@-WuS34c+Q6|4 zU}ph&Apm`p4eSa4N9z!Len6}hkjVW0u55|usx!e4c+CPBWCQLkeQyCo^d87AaMi(e zl`xLjaemeAy0CvJ)L0w(f?}3mfxH~(rnBVGy37y&jzegdzxr0WI(rV$zhALqjLlv zLxyqDdAv=uI13Nnjxh&@V}QYOXu#ZX;@6hWvZ2#AKneXUQOC&K^FM(C8w7MaoQogU zegdo6z~iO%t#Ux1J}-}Z7glLpv(escZrtj!-M_spzqmW-x>SeDUJ(%bP0}%;J<#4Z z^o!ea+FEe6WRG0aJeyVrdYZjYQMnK9*g;(VBv|xbqB|fEI!KyNAnb@(E?S@rPwv** zBy>;gHHQk`+FR75(R1A+s%#;BkytysPJ+Kpp|{>+LGBR02d<=ms_*x6zh8bGq1Fay z-1uuVq4hu8*Dl=J$ieY~=kW_87#7lQXGj48%;MDQk_C1_koIM* zlZ>qkeFBu^W@d}VLA#J%{t(MQ2ju%r;emk9tre0fP?71nQ)Au(P4Yh%r^npD8Z%Vi z=!}T!7`+R5Dt`zO8eHx##P}u(U#{1^0^ZA?5K-;P;&M-O?n2DUf#~vSvaydd`$Xio zvJUM@wtrpk;I8*}uXSZe_Fs{_!Efn!wJiTlxyFL$-UBQiz6MK?%6zl`f%tF^U#M~O zXCXShC1s2?n|Q_ljXQ}-X5!Fcu$=WKqFIAq}DudQAT3?6pG_9n^64KoAvzEb>3_&p!&ky=vS>L z`~3OeChIM9fc$~k)LyQ-dqt?K4NaWEtDT>BPKCfWiJ-$g< zuQl_{RZfz4#t~4U_sU`$Y=8~GUx~Ga5UeO7lvpJbWu!0p1mh`0z`tSxzr{Dh4YW27DYUgwn9?*2Jza?eZi-;v#-Gg=F~Rs z@dW&xz~s?lTtdrtxVOx7*!c4ouuta9TrLDTxDLeMZcJm=TccnOycq7bda=GgLYdO> zn$b0J>C^0!5VCk!lftG|ZL)@a>-j8dW0nHLp)r&Hfh%6qbC`?m3t5+7RfR#Q>#?aN z_G#R@W1^&QppJT9kcKe5ePuNA#gU57QI|sK(@(I;3~<+hZ6}$x@|$^<7plXmarWIqjLzz$8x--VjbL{j znm0@8CPGw)qhQR0a56Q!zFMAh!7CO$jb3qWBh&03@T{?g8k~?7SD|Ft%E7?WgC(<{ZK{=$B ze)+XRr8D2a^x~bY_NoXN`Q}C#4~3L!gz*!Fh{oB6Dkk^8H;m?B^unksnds#Y)Z=6b zRldOnc-*-Q=v83ORY&V>?fSrm;CFatPFSC^&}huYA>Xyu7ctj=; z5&!H1Ggv&LU*F`@(Ku$=-p>yCRQK_Cx~&h4fl@j`gw=Ye>f|^wEnkgQS5Yql&xb9; zCR##IJ??%Oq!Ksp=Rp4jKJh8BIyP|SOHH@FCXsqP8`?j{aof3v z7IJfOn;ICVqRo3q&R!5!6w6blXH^pEpg!5W_6IHbJ<|N7cCuv``RdJz^ozd}ldY#c zuL6&oUR<9{w&94~5X3ST1b3#|K`L$`x0@|UB&IrUq1?haWGu-Hr#kQSx}n6HEh&Ac zy6%yxm4UEo;6$1)=l+1K)FZR%2+c@PW>z4!MoX-`E;sJp2P!-l(AvE zGu^MMg7b(^YPR8&m>$qUc_e<2vE?kP@b79GWHKAr@#94dS)Lt+smC!j|7o;Zijq5Gt<}s8)788^KO4qS(5N29eAG@+VH5*HbZgT$3z1ek zFMYq;K@tm0m20nCe#*s=a2nY0KQX-n%V0HkJV2`^ z=Ze@Z-Blprp$J4K2(tfXT8l7m=^!yk30sB-Q!!{M9?zNn{muGdbXV9M8d5Db)53b; za-VQZ&z5PHne;DK%;ji)-TSk(W24o?eJbAsMJV^F+C8;J*Lc&eRib<3Uwb@!v68>T zIXdjEbM`~4Q;5?pNl2$1nGHite=r`2VkX$xe0o@}Rh)*9NhR*} z{A)6~mbEKy+pk_@bjxdI15~j`f@d+A!BDc>n1Lq*Z^xCx;<<8V)KMd{p=xrXa5Q>) zAjIRtO@H}(j+sNg4sG~{<*foIc~*JUGOM!9?pJ2@u7;{WO#Ah#K2_3|PSjxnSWLIY zcZ=-$5Nrb`B+f@icrqJ{fMeMs-@CzcSl}5=t?@VcgO?F!(ile(^!7M)c6HLZ65!`4 zh~R7NG0HyWlihj}MxU=xMM(5WvW@(x?HUiBvrhW;0L529h*hsI6d@go1Yeaj#@Ca; z@+IAScr^^j!GI;#E<{jj?U+fEO?{H!YqriyB6d2`=QvQ ze}uk!M4@0B^@s*T=-ktUK?{gt4YjC9FN1gfMi9<*C!{L90Ea3!%e*QI;Y_>rM}P`N#Nq|5U*NBa0rkmcU;dUCW4hm=i z4e2DgV%8yAvKf*nG93OpA|MJJTq^qte#;g{s!JnOCJOK>H$zMZo)an8@kdr=g7;W% z+QqvxgucYUrRu0P8=L9Fx4_Na5Qn|suhilre@XfYExnHdg}#~zDMs}%eNzg2o?@`}BArt&an>;1sw(9-0Z0$(&jie| z7Nv3;Wx`$x4;ut1YmLF0A9Wk8I8vArH2{>LU+9G2=!DgU4BF=tM&D*Qex*FKNnS(r z$j#~p%+`yxU=x)`32-4h`N5ybzzGzHz7XjAvu}G3RLBalvW=72nv?uKC-rA;l~so# z4IXMn2g?Fp7@SZQm^^PWjyLdBRUGQH^z4-`!ShQP##)&WOHB3)I2Q^=d9w(LU!?DE zJYSwwMH~W2(6XG%g&FTmT8Xf@0*Ky%O2%ZqQjE%Q5uxbWjVLouxH8i^#D&?#n_(=> z4V2Y&UR&}S6JeD4&+{Jn&>1c!*gAHAC;L5O##HpV=8e2ljg;7(JNPx1C;tT zrY#hS4;OAG!YwloyICp;jwKc!N_s^PXUD=>(ZFW@0ZL4bRRRnuk9lkhj;pP-sVG^h z^P@wg5US{D!aADSPfUDxX$`IVj_)eE5)%y&CC;9`a>ma$f@+-p^DlyS&l-qikd^__{8T5Q+fG*|r zPsPu+l*TJ-N(W9&uq|f=f*9j=Ap6cOJ~N5+M8ECCn~IvAY%OKeqx9}Y6~7a|No=RW zoDz4p2{0Qs5{J#<&V4G+2U;qXq?hBXYA;X|e+TFho^b~$gfke`MXm}(g9W}eO9`H9 z1Jz21Isk4w_GX&lKn`p(Cgj{JBa_^+UDi2~nkyMFyi+}|vuSdJOZtQl= zp4*vcH$mt=KumwIJ6&oO@DX29HXA4&kXV2Fb1l7BbN8pFGfVPmE9x=z9TWJB#K*^v zy;?op9-Tc~P2OC7oiHx#6#(zMzN+>|f|2N?79sGtY1R9;)rwisb`xw#JoD|A?6^(?#->Z19}e1YZ;$FzS~az=CMUh zH_a67m%Hi4`4(C~?UfwTjjl8!G|Wp)sB|AJ6_jf;8TvM#QC_?eOo09&)D7mit)$pl z>U111+_K8EgjHaVeEm8VtAvc^PB&Uw3~eiNUw6K{L|2FIr7vyGJ(?I~zwP-5w%0S` zcW`ASVTcPL;e%V5eGiMXxw5n}i_yJupy&W53-eDuyG7~HL(p-&uyh9duPn(}Jsb1~ zsLWlt3$R{2*j~e@chD>wCfs$e5HtSV6{SG*3@8dKdg{}==HqXo<)H%*B}#jri+vfF zR%w(7QXlru416p8t%L4r!m-1BUFWn(#=Z@AAt zIXaop?ruqHJx-rsQhF)-v1ms;li+FwkY_W+GHn?QZCqOmid|ioF7ip24l#X)_Z#m~ zxF3Z1xaWI7Q^7zpnRML9Ga=_lajPvBeJAHemyf2Miaepu?v1R*4;sm@1_`U)inHG& zg%U8C`azY1UJXmVDGlr$Ueh1*`o$p^r(e^CvOn>es!F|ezjNwwC#+5SwpRaFbnI;f z@fVC)K+X;doPQi`=JQ_$BhBF_rA}gsRQ}G)dDvUQ%EbpI#tYJn>uD3mrg^7?MKkp3 zZFFC};r#AKgTI}RY0DM79QYOn?w3B~0<^659H6}TVF;3`CK$T>ASl0fKqm;9$9rE* zm?-&1g!kwG@M%g37Yr#rj#O@ND!*s#*_Vljhv&ID|4KaMcbykJyG%Ts7w()FT_zr= zf0l6kEEWD)ru4J?vhZ;8XQju_syjccuSXg>Qj~R4#6As;yqRX)3=pLTdBMZ4WF%Ts zCAm396w1XVY7(8LuL^y{X6ypeFWRDgl0AYJql;btBm=XuC&=~AQl+V|xm${YDH_ka z2d{%hf6!P`(>niDlefBI@PjJ*YJx2gz_atD#t_td6@;TbBf_IHl^5k|P&coGEH^aI zW4z9pPg50D-h3k{x~W664;yGxrgMXy^Uz!vE&}vx02m-%!!cG482eg@aPk*8$pL!) zR&M5L3K;Sy(-V_@>x_R5@Yly=b-7u_{7l1fLZW3^u_LPOEULu#@1wIbd5hQ|V9N6B z-&2RV$1k7U|3S0Ok>FDeEcFiEeHxVB^6S-hk>M4f`wA8F$(uUx2%d)HKMN1sQJi{A zD1`z(_E;USl6-tF+!Q}i3&jT11Jkj(hnqv97X5K5<>RS*IA7H?+!p;ig&bgxi2j1` z=BPCCvheWvMC4zE2MyA$ME0m0MIlICnMnUSCY`ENyxXnhCVmlE^!?4Vt-2DrfiN1M zAO5;#f^WCQ!z*73*)ZR@(8#1El*-mhA4T?!bc5g2qD3rUwTT>W{9EE-f6nlAOfHvC z$Bj3(?_#>H32}2$*}l&*`xM!vZXtyk1W=YkeGAsspWBwj@fzHIG9t#W+4=MPuYVOD z3Y93o%+>|P&*f$-8dy37;s#rrI;XL!kvWNP+5(;7SAvhOlWx;eUTJl}BQ#`%MYisW! z{+o~_iQaBT$m1Dkb^>i-_N=UMBum+yngO&6GKMje6H$5l$HKk812B6V(AX~h?Qb#) z5X70Fs~}S8Z`HUG0I$0MJR8!a97WR;MlW}z{U(Ec$=tuGV1|#H*%G9)ZGem z-L!HX5q1a4TS&`s+`If0XjP>j&fQX9I1MZ6WqZRQQlu(P6yT1E{&_A^Q+j#KdHJ|y z^Ks5irUh5C5X;S(45A8arPBMJ%(@z`C0XNeHSFeI7N~K{pln5abQei_^^P$h?29U+ zERtT&*X;2`s2}33rIUWshsa;%t>zN2%mUT{!JRuRC1euF8O4Q)>Z_IGpSxbh*)p~; zZs|dgRYI!lPiRDb8Ha;`usE8h8nWvWp5!m!;MXmmv`SzVYxEcP%N5AKT1A z1Vz?0xdjszSKcO5H~m+0=#L6J8N+#>4cM5(PWIs*q`lco!Cig|9!5M46Smg-!U(x7 zKyJepv-qKeJ4_%reTM0K!j_JV&AFvDLO?zg6?`}35T$J>?}DPg`{oGV{$fC7XFZWB zZF5C=g&(1$A(2@RNV)bz$%Ex&dep8o({h?J;e*xAofvjy+UNaf_-5anAMH_ST;S($3(YfToKd=cosfE=QkeFgIpGh4Y}tKdn=jfqJ{$p@Tb}qp$yFjaSsyQX(ur?-X2du@mO6}@?sRT z7GqM%3m$T>;-5t$8s~xyktg$$@T#qWI4jIu)(Wh3{zKxRr=HNe-Z$r`H(~L3p9d5o z;PA|w>FtZ&{0yO!Uk2~UxsZwQUwg7jTYgqs&$MaHzWj1mLkIq-(g%E0KEY&Ph7iFD z#?wva0B&@kt~a(q;rbI~Cb&!)_el{QkiEHK=-?dP9y%2w09GhhtoBTcD^42A(0@(s z(UOuvm#o8oe*&ZJPAlkSN8pyN)ir=f6AfiHkfdi%hTBa<1JF9x^vDqjp+tW6i*HoC z0!V25S;dWMxQ*9oc@M68He)c#kO{RxKS}0eKpQn7k|R4JoV|J3_gRwSBFAP(KvU?} zKANYW3%E;cMbJcWVoP956>OUlNr)HvLi5vjxLp2$xQW%N z$cy$QrH|G`FQH95pmiH*3CxO0G$e=&XPk*5811`Vb42)e;2OI;WepW!CwY_CshRa- z(lcd@Hxpr_4?uq+Mh(8;C&YMqF?Gp|agL#h7_MVeqj>q?*U&BZ7eZ4lBv#EonG>>9 z3F#qD?Ul;uAK{`W(8M>BJbU6ImS2uB@s5)G<4nTH388jfOZvx5=N=bWavLa}R$H|Q zq6W$OSwdCPMa#c1%QPpEJzjr0jNRJGlA=B@#jioDE?s9N^%G-!Sw$6v%pUyMhOymr z(;9O(+eV!Ws2nI{KA8KQ2$K;R($|xP-5ZnC+qsb@{JSYZA?S z<>6z?dgfARgmMK?vT@uwMZacfg4=Q^5+&(hDULbpmLBWPD4_xIdff(Q&GQks5zNGUU(Hmk=J9QL}Ia&4m)dO_3qJ^f5%OJUQAmSGw6<)wo(3gjpgexbHT@ah?6(39>)krdrE} z|B1`Q1CDAtT#Zw;WddIm2ZWfbxJlx%y=mhLo1KrE?JZsrL!K_vIAZANyUr9^V*l*1 zAe05&J5wsZ+ic+prlUaJG*20cF9!4#Gc*xji{p0aFOVp}3~P`t5-ae=yc|!@S?Z0b zp3!<2b*Nj(CGwb8*8gqb`V5VTA~rSJ@=ct_d@{d>45__r@XTZSv&Pvk2>CLs(276s zxTGON;WIZ2U?n4qu-0#{IBY|$IUgnBx}nYlAJT`MNhS=6jM!+zhEx|Yea*T)A_^1e zpC%46*j~Sp##mUoCY4Ro{qz%~$2jbjV*aVT$7Dgdd(Lg)A7!z{8flr|82PCTjM?b; z(!`|8_Z%)%7Y7{Pf2(Wq1I0wlR1WOWhUJI9Xew5!p|MQSgYJTy6neN~Ki_##Lj=4Y zwKa@w-|sAYMl*Rje*HIV-QCx5-(UBdUsGq=w7S^o?uQUe?TSwIesPSI*D`L>b2Ig7 zlMcRR5eE3zD|bqN6~0i8%{l%}?9c`rjncJ0*AS`Ecx=jjR6inQTFg8ta2tHfl8{PX z5#JTSSMMkrInH-LKf^&19UF^A>0D)+&uNl2>KTW1ll<&xEl=HV0>2paomDO(2LUpw z2D4JX-=!7KgM8wa7H4nfD}BtcR2`ixiCGF=p`#}?Nu%ySd7eI?BI7g4&*Hl$2q?0P zS(v$wY#=XrjM%GWf;@jO)%vj0!nB&#+)syBtP(B1Z%!eKR?ADavuAymLXen!X_&&a z^!@rr-eL+NybNplUtPR4*NVOj{=Nu%ch<$tNrktjyN<7u({|6(Phw`g5Dq^vFGTJ5 z+1=OJnDHRRJUtx-p70X%B6-PSafCsUg~3EZBQrzryEA$K#OfNdoA^ZqkiEP5QiPPP z!qeTcVvWFnhn_2h;-03xLOjPq&g>rlW;I`2Nw-MS+hi1yE=D)#v4yT3rrkm_Vyqdd zV$}h%Fh`!qIR)uhSulkl1AYu2(|nER9&{~F1@OUXf6epem5^j?d@I@J zhliYX9DESKZxu8f4W&@v8{uq#$dGdY8qd3k;FT@lZQ*})f|yW71zIi2q(YPx$7K60 zm9xuLiUd@v%2k^LZgiI47!*(&zbIFGA)x-ITzy4AW4m1AKtS`fT=TC0oT>uO07bA@ zAo!q2p$eoV6s1^!(tx71D$s^djAaGJ0jlL*q2&+N4y(|<2i1wM&`E{rW>@GIL9ta8 z*e0l6XNBG%RDZle{{__GO@+Y<)Ns4P@BnIbT4D4TYD`sW%phpOUTMN7Xev}`Dk*5D zSZSsqXs%UhZYXGBS!v-QXz5;Q=`VOQtn%hPL96&mt5iYj>`Ln*L7S>dn>I9wWPw!GfegYy?A3uqNcZP4=E^vwiWt?E<(O3=|G#jNKq@Pz zDzQocXYxxpk~>t9l25I2>$XRNPIV|b!quG$rbY@I$wWI=D;>JSgUKu!c1%Tgx>h|9 z(#V4-kC@!*i0qh18cKdJ9Q9fJOj z7pA-XBsObiwHsiyiZX_wh%n4VRpL^-cO*p!x4U|)dt?c0!EyJ2C+t!Hy&XyA9f^X$ z@xC;eB$^9Mco{xQ1F)hJmr{m~F~xJB$1)-rUE)1GT7>vqV}^C;Q>z}Pdczn2v3@!= zN-a*AvhlH!plt8jS32(I6<(+-qox2BFYFjCD~WcYwlB9PDO4mfsy3Ad=3tCMJg!AT zy%4`^^kAOoA+MNa5ya-FY-Yd%GL&RHPGA;>ov1Zmwj(AAMnUk=qNT<}k#H;^T2W-| ztTyyYU25>IJv^suoDA76jFt8-$5J+`;>#6DX-ITkFS_RMXB6ynwc=RbAnY<6Ysp-% zXZ6Y36eGooZxbc8zo4(zdRTu?gmD4q2j4>i$q>rb_9vo|c6)GhA7qISmgE_#fAQ%t zGhT?XGV0(8iq6Y?!E4D)EYw%5B+}jE`5xNyvw5x$wxYI<9nUUPAG0fFo-AyR-*({g zHd)_8M(w8eJ7Vod1)%`GLoeM!@-az3y(vY1Bn97ulhv76$P>}R7`+k1y?{+$-BnR^Nn@y5o9mgeM1I495>#;CnT1XhU%lNa+A9_%pnF5ANu>EV}3Nyy@wPw{D>5*GO@! z74AJU?yD*ORghGST0nwh`LC+_hE*sjEPj**^UPgKQvVB_B!w~#&~*$z1bUwekv+*thm!6umzox#mjB+LxZS|CH2 zASxXrFN1>1tXAOzJSDL@L2Fuogh(}*wIq$$o;w& z^g;kq{?n>qE)pgtQ1Au5AjQ`rV?JmKVFC2IKS4(Yxz~{MXZoXNkC2?7&lO2`vY#kf z9ie<%%??|iV#gw#Ys5J4$GvDuDIXN@5Lt6b()2FZs}uDOkamM z%K-v(4b zL#%d#%6>{%>`L}+KUUh8(_WHs@NF}Pw@JxiRBvEb#}CzfJgq`S;tU&+Qk2L(yqp{! zbp!K!d>D-y6I}J+7A75uqAA+~EFGk?gh(6Y@`%+Zek3y36$(-66Vqj>J=wVLh8Rr2 zj{Rcd2bv)F&`@+shz1I8kVB9a04Vb9B0Z7(bZtC00HUEsTBf^N93&znq){zS{*K-tzB;!dMC@r%Cl|^aPbWVKF#IqL^C#CV-Y0l3q|1D)wR(GBa*WwMmj6d zTgekk^jy$D=g7)?Ja4lPC;L9N(@HM2T?TNdXGbjVZIpz?Gb*Bo4rdtfMp9_$;d*!B zUBjQ>_-{%gLWh38qqd-pLrH~U1thRh!d^a9*NrG8pU2oq;k}nWr`c>9PTMuH1H)J* zu(Xu!QY6LVeZbQ;!Rd;7gG0Bv_DGAtDDl&I_a{bex5>nOWEbhLoHs^*|wd;RGgt&l;d4H7{z*!*PeUajjg*Es(*~5p}su^>_jgI zCROix{`w5BQAVqs$s6HeV)zHz0NkDNeZw*OSh9NHeqK%w0Zt0gj8F7GO2esy5_j(< zRiS#$!~{syvMNUYDoCqybYK`3*kx{Z4dtp_t_0B69LwRom9Lb;u^VB25@aQhyUg>V ziIIY}AL0iCu`p@rg^WJ6bA21T3Nun;A3o@6Au=2h!~W^Mo(i=* z&aDnV#JH5`|GuQ)8I+f-Ig8qx#6^dldr08m%Yk)BZozr+jW@Z}Ca-Dkgr%!XN& z+(lpM@o-hk+r0eG4P{~yd&~Ysf4f1-4w+`;2pvY4TkFgAd!sYz_A&dovV2O+puLv;8| z!eTFCp0SYTvk$_+s%AQBXy)$$k2^6w^bhHNO5B{Cc5rNd5His^$^L)1&K}$HGsKr8K`OJ^iMsd7}OF#7Oh|&8OdQ zU66F{buEhVMG2UP4?D2ny%h(MoW(m9Km4nz zeETcm_wf!Fk!GUIUh6m&UhQnPyyKUt#&K!@o3~ElPifCB>1^|8SEs7Q?wy`GuT4*f z%bDRlr3Jj-cLnYIo#fixOK+o9GH1u$MyZ*pLj=MNx^y>Z^t_+2CiN_$80^3Lia!}0 zI^gS|+5Ft782WAJmC}yiJ8&b3H?65UJi+yQwoxhb={8K=|1ZttPaOpk4fo5cJmB1; z(pjzgiKG~Jnuez!k%mKY(EZ+~xa*kS?u3Z^A$(=c{DrXpGJy>bPNHlRfo*7ntxRd+bMh|U!I(4oIpIWAouG#qy* zx2qXrERrCY#l0jc%1xWzLK1oBD_19FBxYJ6&un8>A~fvtNkN(RI8AtPGxS@%sF7I{ znDF~#reFuKln(VqrCd^UC)GE(UQPy~tBwPPMhuiHPflBo? zxQa^DsKHo!sY%a+UNlVj`YnY|Pc7LbcHb0PnGqICnzFK&?;b_J6^OOba-XKnBp{U31r7;t&Mb@cqsT3ZQ0mJl36+q{d*`B!?5Qvr zXf+4ZQ8)m%)94g;bz(eub({h=zrEo>ePh*G#Q~G+oTFqM2=CLvBnfW08f=8vn!Aya zRx#;=UY}3~2i#^^n&h_1(nAy0o~F7svHNk)#cQ|Ye%lcSyMDP$fBdV=F0$t*LjH3< zK7Zo9KrvT(`KLH}KEktt8m-rR&-giLO-t7O5)KN&be092O#0rx8=zf^5R5$uA>|cZP{h0};H{&y z8yc7Ya%>|8&YrpB_UOSUCR+@{V)}W+3uv9r^%{L-QUg~R+nm@0Hz!jfmCCqn{KUiz zuuR}HNc5ihWV#Yso2cMRgp{^`G5I^hEBTw;(_*XiVwv#acBle3-nO_|^ z*YEcmjVs)n1XjpnxVY6w+Tu(8aRD9n#hc7p%i{7azb5Dg9x7i;Z4C=R6=`>miOvU- zAavprLU2!__&6YnE@J5_wIxyRuc!HWhI57f9426vJlZS433V}aSvrwSmqp+~zj`;~ zE=pSj&Ut{Q48vJd3ZzInrb0HZVC4YVF8PYA*iHMh>jY9EtJCg=2TsGCGg zzh_>-wF%pKN(Qa{;<%wZO8ffv#NF#R7#S~U=3w?qT%o+jB0RP3JybG6-rbcS5a-fT zYQuX5otbY}OvCv5rGh`Hb5 z99$53^&8^x6lqT%o7H9h%5u5Cb^Ugvl`u^c@TOR>n84lg;#gN;cN9Ax%ljAJPhG(2 z=h`m0zUgNA-~Ej5LrKIW zU77>hL@k|qZ&Q?#%L}zC&dQa+)m|ihlpSVlmdIL7Vf1Hh>yRhINB$kG%B~%L<--=- zjFf{ES~I*CKC#I7g4XXlgE>imPWA zlFuP+u*Z5O4YUrco`yq>WUOFVIk&_`ulE45*e{9^lcy|r{87<~LwSb*sfQ}z zX!E46?FOo;lWi>!;il|hOgf{dQ|*-OX=eLRq?&=&BcGd+`0I*cK!bO z%i_P^yDt7572p5!wfN%CB_Kd1eT6dc3aI4@{oxfRX)?AzGOiXf-a|5eX>!3pa*-Bt zi9>Q3X$plv3Y8WL^+O7TGyoF_xX^6@7#spjq$w=|DXm*5?GGuPq^aBjsk~aK{0^yt zq^WNQQb)8nfe9_ZltW;eG$<<&l-B|(JOq_W(^Ll1)V9zx9@4Z*({=>X zwlXqzAO2Wb6|;$%FDd)(SuLJF^wrSeF2(YcXqO$t?|*g2x17smo&AoOY|SfZ zQxHc4&Gc`heX2A`t$neQRN0}R4oE6^K~f!#rN3KtZO=p^+(hEBiEOF~*~bH+&LgRV zG|>abGVZcTs$)fFtkduH`9;#|-&QazU6?#rCG&8A_z6tAlcN|cCF_r+sXJt#w-ir@ z$_5K-$x2u@U%03GvhEE$f5z|oMD|2qSkV-?`$}Vl zFh>ebmknbUeK2gqkZho@OVl^u7K1qCUhW(pLQ;?S=}N_Cj>TUwOPDZ8EVTX}oC7a1 zm1A)+Wx=vlbHW!e6YxYJl9Mo^;eLaT40iE_kHz3XD}{fY*^+(k_Z!(q56UENuZ!Mw z*8AKbYkK^7E)mJ#Wi6d#40t7wTFE1F`C?+8hc2Y^8bsy;UhE=3-U`T~Nxp?cN(*R* z9;Z9Qp!UE@dD^l=I*3pKm0RMbJT=aZNWDDtPzxR6REJX>8)5tM^6Gm*VF$3}Cka?X zh=eG5!pa0oVDbXQ^LO{8u5O z@VTuLq{1$X!YqqfK3=KNLxamX7EkSq#Z%C=D?LSOP($DbBN`p^SKe2ZOS@0WuPORX z`J4oSFQnaJdhss3yNDpU_TTeD!4HL>ppkhQqT=RN42Q&Cpt53uilm36c;!A_ndSh$ zQ0a(Rwiz@^s|!iFTn5mLL30=&El#Q1n0Nh+&B2`>;ODdA# zm)CmtWI@P(?50+_0c9ChuT17{3YgUNFy0geevLd!gA`Rz5WX3|Fy~(|xW)mADRMWV zX43&P2qC}!RAj4f83P+@W&SkNd>JPiMJ4+M2hDc>xa9hP6LFM0%Cr88XMHuHe?;oy z(P!DvspMpceTAPzvj@Dg**xEU%_hd=Iq7B-*=SRGB$&-gBzAEY`y^j$&XAI$XhT*? z5Xz9C0ij_t=zzGN2v3cQDZA#?bg=dlVACb7{t_I`+Xyt{={JJi{Ue)%;&vDA!0 z+FiKndhCHfuRpjV$-p*Cn7s`m6b1%nk9v!0o#8~nEV1MyvHnls7+G{V(p2V@gu{Z( zy~V9-+ys_CSfLr!-|8bx<`^BQWEJ&r8%6!(@o+n61W!902v{VBYzCfU}n%V=EA2%V5FpnBk{Qu6lbUGf^OvS6JO^gO?hoa=?Bo5x=W-sy(M| z80KzZgHc!mXx-h9;9A%7?7C=AWLKOt)mh+q@v5gL#rG~bdt(YI`&^JfS_no6WMym^ukdZ91PJR6KcK<|^OB!1yakWP zrkHetjSh4eWfL5shmc{gimouDYJ@Xq=W~UHOQE5YCT}qi6`P^H`7W zhv=D{i;bv;P$IdB>qL|Xc*+LrOx@TgC}Eh&f9-uw_&WiHhgrN-qC7X4^k8(3_wd5y9b*Y!#qb_T1 zQyp8pDr5IP;DNv+3{qCWrEv@Jv4dncenC#=MITqfBfgW^pHSe zpXiCTzwUA5!~DsjT*mSGz=3aBG3f76BLvEI%}x|I4Yz{Bkair71N*+SEohjlf0+08 zFu&S}VAP06|A@rz5gD~ng{V=L{?QBd-=hdM5+;hI+fOq1O)^m%yD#-tjla#}Ec0W&WCa`{d;Qo0;II-;J$|EoNG<^faW6J~w<# zbStWblTtmdM4o$%|LVXZ40p>W?iB~FP;j|JPxkJDbc$3Lv>m;DByO)-v{1Io9? z`R3=8=H?h33qXI~^DGy}h9L_b$n%~CEb|nCbICEI_WZdn^IUe_0iHq6K^gCj*6+_m zn6yCvr>g?L&6)p(9entmt-ZNpU1yjCvHV;3CYcuTh%RPf%ytt4b~w{g6>|LB@Lp+` zZGB2u!K-`kS=?+U4Pt2%_3$1y46eK4rr{9oaBla7FYE49jb8h4;R{Pa(*b|lKk=qz z(9axYZk1~YiM4^cBH;^i0Zcx_uZgMn_@b2Ok9R@1M|UFluOxqpJ&e=Q{<3BRV~ywD za1g&Ycyb86$){6)JQ)7cjz2lyMCdy09j#uvTXouHM|#moOf5lGzQ=i{#G!u3`cSt@ z|F`>hp{5@JJow=6^Cx#8QCwp=+%Zhy#Y{t0jFFmWu@~!&v)|uaK`pO-D%g-a-uue+ z6>qhzBD-{Ydt_+``&6VXSiWdD<+_Kqb3hdS`lS2s$&a5VE`ICb&U?PfInUTSX8wHT ztcXtvblzh&<^%C!TzYSTtM0YS$3m~*lDc95AVpDvbm>SO#StBpM09K=u!`CA6J*NA zQ?A{JJn5XI)rz@(A)+Xf@T5dIzJ!s_H9Tc?DpTHPsXsxk`bD9d&oL6%T2dOzm07)2(@N{cC}1Y}_bW^Mzu3@vJm1L^NsncSz)oo7cJMnB6S zT-zEUGvlKtqoW~ zbjbpKP-48Z(!D)n1iDRhME)wRaMr40BE@7zNrc+nrgd|7dmJ3LeGTOxyIHPuk(F7B zGg?ycC;^Ra(m!SkVsuBiWShIAwTk4KuxYg-Oo%BkAUhl9KlRC6K`7g}B3#Qn(=anK za|fQ{fOqx5Gc7FY<%fwD*R&1h7Z}!yxPQ7lRH(Pf7OI@0Pln`E7H~?}}@wNiE<*JP#_!6}<&NdO|1P&8U6iTg>z4gu`8l{vpd# z`n5=FmWw|;?e4l#mARu#BJ)*GIltHuCqeW;{kNs|u1oOSmNTbSUNPsN!g%uH;G%-F6?11%X8j@XV2SWbJ{zxsiyLm zJBsZW{aH0!UtT4|u^BOO7W}qj{xqs&bhAy$$AEDK5MgKLisvhMwX)oNt9bs}tNy%F z!1u}9=qI3IO1{)^99FDnHI>K<wz!=eIj9+IYV*^aq%;Ce7lDR~IxXYJ&ha2n;q`>%<5-O`V zfimngX)0Zi%#h=^JZTb82gH8DwzMhT+h|t@q*aNM>;j43J1EJH&faydWRN>OoIk>n zN!PaGrkug^Qq6;D0vqidpmtK^zvwIZWOpt#KA!)c3jaU3@PBgQ|DVZ)|I6dM)K?r4 z*Man+@`RSPk%ueXs`wh?b#x-N)c+kC_KxYXULfSw2tXuc`&mAJ&|D^$?0*@ptV`I) z;lB$u`hRP*+Wsl=|5M`spQSGUhZ28F>F7g70c?~G-f=A9e*`WjGpMD?{*AgMigJuc z>9$qP6kNhaP?eB>EAbcYi?n;{myxH5LPy$b=c_U0*g|Ya-RpX*Hg8N#=p}5VJDkX? z_wObCI{WEM*r-^vZ}1W}YWi>q8-4yT{kFia?tUxPf!?CCQ-17KF^A{ftsBpX0u^wB0WYW@fj=$T*5|Qi<){>JNDkTxUl$3^eH|Y3i8`?&@b3I_&5}s zRPmu;o%FOiiS|*$Z?|t-*~K@r83uYkt`*nX-fxKhboy0#IO*c$(jUc%*(s}BI|o~toHp_*0P+A7B;@e(%jtg7A4_wD?&T@W}fvJ*E!?-L)ZPe1Q94^fHjw~*L<{+nSVnb-q^ zf5AqhH-r8iHgaIF;<@JEPv=v5jne`DFPtcq41Y!73h=rV zv|l-m5*UR|8$6Gk(E&WDu#;UEN1Z?cGu(2Gso=A0_Ww$KC6nPU{XE)#rsF>fdd;e(bU2PtKvkTxwQMATRl=KfH?UkAcU4pJWDT{cl@2wqL{FLu zqO(QpQ_&*d+@4>q_RaxhR99B6i2t|pc@r<@#%5;!*95(WwyytKL@#h|z-z3{v8}A7 zG`%nFAC1`MAC35bT_c`#l)|9mfgp%0klU7?sR${M=8VP+$R=LXeNr)*0W+)nw@v%M zG~y_0F_Sb1dBD#Yh5wV!Q$1c_j6*_F@bN;xIWq_f!fMK70IfAKLh=xT!1>8Ys{iEk zF1PhWI3%tEcXFm5 zaj+@x;QE`m+^eFzoHnih;`8byliQq_Mkzo$_UG9p*VEdV@G zu^YKU8!gpPc)$DS1y>=YPzg~IguQb$Wyc_#DodE?ZiQ%j^bIzP$>cy(|81hyE^TONjYiAd@-%y3Wra7RQ$- z+Afa9T3l9vGL{L;58sQdXEMG|d9#K{W`d%VD6O+0iHU*AfV>i>&~2R!868IXxk9V0 z!tiacY^P@aljnZq=i>r?6kC*+u;cMoj@^wHxhz>g`nsKp>&%;AC@ za6ah1e-e8ySe4l^PMG>&vP2 zetzbO&iyftkCTT#35*K|_7{GP^M?7qPrYA%@@4L1zM-X<>pZ{QJtCI%wnfR4y7j|q zuE&cxUyJE4KXiV_X)rbcRibZA_A26i210xsvJ0QJxK_7UFaxYR5qFh|Ys7lMO!#cp zv(7ydhtynhWX?jQ))9YpEBrx@#*?yv=)rxsg;ao=amqlX=?@_b>X5}AkJHK;_qI(p z#*u3o%en8LNnId=>MNpGhgJr@o{W~Ib|LqBKmK+m@6Xop2&WNYT8ymjj#-n87WdMR zpHdj2u`$+`U~)t@5R&uTD0kS29SyF;@ zA&xY6IGZdt+O7GXi}HB(@^^3>y(@r4FT*^+c;sE)Bd@bpX#fROQY!q-RS zAT|n)vbx#Opm=&+CJ07%T32OGkXw!LH(8ko*-mlQ-Grjt0X#Ph8?)(K>8@*+X$OeU z+dLqZf#u3XW$iuD0!z-r%n8r^m(szHpt_O|cZCDDy}`NS1fjUx@jv~osaomjnIrFJ zVE!pK!V#tXZQU0{i6&VK3bIE^)Y#gch}a?sSGAv34r5=TnbeTl+64_x?3QR|Nowq* zcwPwR_{fYu-DR2HM3(EbPIV@yL2VKeG#QqPPYEwz;*HBQ454aENzbgo8k8wypJYN$ z@uhUb-QCfKA%em`6JLf+nR8m3K2FPY&{b99abX9PawlKqQA(Jvx>r{tN>(hQD>C;; zX!C)ax;Ivo<3^L$e0^YCfxcvGK_v>vIZ~Eg2skV`cl=85Hg${HoT) zclAA(lWZbN&^CE5@i|eA{U7Ar_cz?p|0nQZjM3jliJIuWcY>Iv6P*ardlyMW5XP8{ z(MF5jd#_0l-RQjr5kd4cghZrRpR?z?XMf$Z`^)bB0r!V{&gRi8#Oz{|*x00TD%3m*kwGbrKK4lmSqAso;nETNo6}xW6SbY}{z8?8Oy_|CKtbT@_ zSorvhq%9X_4x#u}W$m=mX4BiI#KwxJ7A-Ldk9q%Z$mQW{i*GRCP&Zn+m8YZc-Cv)@ z_MYIjLrV%T{ecHqo5_i2gkOT?+?=+O0N+ZQP#=p%0ak{FzCIeRt=PJ6I@Irh3q;~ z>D~KGfs8$2a_Z$8jjxr6{{C0e-z56lm zEM~Z*25F|M686ez=9(7zL}OO6q0m@WPvRtHQw(}TX*+qfSOjU&a@V59(b{Hes!)US z3Ki~T3lGTUsXcakuk4KeGpeJi&LXbCy2HD|`esp-Ako1`g9G>>!gVYdFfWh6o9ejh zV+1VLctHM>WcqUat32LUKr4^R!t#_(&m(vlM^o8i=v1uQ4yCYY5^-!@0V>X|5Rddx zSgT(5P9c@M%4vDH_ED=+siuu{r}Zs|ST5wj{a<5fet|6YcjYk$VIO?l?|rZuuaS&} z_`wjT{_naD4PPdx8sjbJ*x1ky?-Xs*E40kfUe40E>zUs0`I|F&`(fKeblP!OzQGpQ zk8djO_g3`6;WWpGq^{d{Q`E>TM@4VDwA?-o@-(UtwL19d6xR`OcoDd3{ZmDqQRXyn zV0De(u|%Nfy>Tu_>NO=c8goOZ;Pm^dys)DYlyP%%qPYu%d$ePHPwA7umoptn%R3(i z@0WCO{5$%;gU=IWpm8dsf;j%i&b#LEA3Lvw8yXXNR}e;-J_BS+gPk2HZwFF*qySTz zP`UO+QHIDk_5x|r0H6bXBMoFX0%qJy608w((f}lrm75j4M@mJuNzI!K5@k?7I7Mrc zU_MYl$QYtQeKcf_k#Lh}#Y&Z`4QPHZ0N-acgGBII1MKHfh8~iP%YfGr)KnU9o&hYB z8C@&GQwsr3?kl;N$)GJJ?S#gAKSnYzhA$8+6ZL#q={dzL#Qhi>uq^vX7;5hUs0lOP zX@iD(gd>H4m`frwK^d5pj{Ogxrvtpmj7?|79YjUdD*|-^uIvMmqRYV8HL`+zXsk6b zHiQ2UpQi&fD#tY_hqf70wPnV2RK|gt;<_{AXdE%?++Zn&*xY?ZS`WY~1f-o7Ps&3< zCSyh!2tquD7U7=7?9sKhU5hw&kHKpi*<(=?p5rn2ee_8K#w$3V>C&f zBm>NoG5IrvqA1xu78;TTgpOu}v++Hv0(PwdtO_IUAQ>?lrY8&(^nyV=@$1G({C%0^ z3|SDFtn@0Oj96f%4LY$;yV3^a=>qunuq0({=@X!s0Ik*qYM%i0zp_K1IqD`kud9Ie zUx@{yVMFIRd3=m3_TyS9S$X$Uk6~>7yhUrTY;LT{*6_&W50(~R`UA+set>j%x zy-N3{5M{`xmC0W>&Y#Z6=WWVoo6QFu=O4vNdXByjaV(&TD!4cZ`;*1+Zv`j|pn<9u zG1(+BhZe~x7ap7>)QqIc%4AZITzMD8{5HiMj>W>Nxsz`TX^#upLt(htWDkAWGM>UYrBY;vx@9c;lr%WU6VN%# zy~~z2Q&B40S4z5BI!jRo&whx_Qo9Q7q8cmvt;-@Llto=c9eEA1^sCgk`mqqMjC3}a zA`qmlS#moI*xY|Hu~!D!ES4zBP_AZ=zC6gJb}W@}EHqOEJgcD}?p8`uGT}QaE1K{^ zRRCcXdhMVpt)oIZuxi}Bk|L^7ys0X;n)S^_dKP)L%06Sad6h_1^;ktUxUX7lv$`Rh zHB+GE5299dGj-mhTB@jKbhw6mvqqGpwlAA~=#aLEov95Eoxq1p=>ap@&^gsQFPWUk ztctg*P;RfnGOwJ9i}3f=Y1xO*G&dBpbZfSh8MBR@RzjigsJP#qHIM;~->{Osh1B4u z|HbEtB|(ns$=MqIP=J`?RCsiObCOEU&BXRlnaeQ%1vHXLH-gBU){p9h8R|c2H;KPf zG$buv9BGn+RpR%XxG$-jdG(vgT$_cTLPcvL#P2m_AqprQQ`BMgwafJ^-WETS>xm!eGDc>?*ibb_3Z5kP7{@gb%1WRf%*DUN5!D`Z-o+bv_1N0+>9xrHCak8 zxq*icX@NP^E!DusPqc}l&=u>hsT}BZ4nym;2C=AUbq=o%V~UG6J%4I?hHT=x<9>t-w{rPy4D>iXdJtLW<%L7a=+b!+MQFf!Dz^N`qf3d zZR31NJArGt!2N4{8Qk3))C1(O-ifE|{$mjhPXWfvE;h$Lh)IROawjQ65C1IgZ5-gB zf0wNZEJWiaa^>i8Lo2g@+1>#P$3cN8${|=USPl44!>&{tF}+cp9#BTJInbpFe98g1 zCIDv|aDW6e}JS#cE^Cw*WWpF$LScQnfKVYalt3A}b7f zU#!KdIz{B1#-p}gK!!#^he*)wy<-bVe5PH_8sl^9#j621xr5Y>*&=--Kq^Vw$-lNy zSLLRWIa1sQ=6Jd0Kr(ZJb;Ik0;+BsfFW8p6WE|0=zR7Re+&xufXgT zFgPQ8+)p_P(Af2o&rZ`DLUqHTD+Uomn!sQ{cjU*SCQjmxJTP<%>MIUi66xS+C*Q6G zyn0K>VJY{Fr;C=R-zfuseE>Cy1+u1ofub2O$-=(Lf`%P5uXADbT|_sb3#QxYUC5z9 zGfkfSmOL4k&(8UXFkpN@+ucc|l%etXOzTbPBs#qH)?A`sSc!YSZ2A-kzsB?^d`2_s z?XozNpS{-TyWPSpUKK~E9lS!wAI(0K70}+4Ct#FXj(UG#tW*a^Ck(1-Bb)w0r*Lx}lfZ{Ibj)QVSX=`5;{ooYT^Wmvv`j#Q`YPmx zqXyIfiHU(AL-2Gsu+R>Eu?C&+h4!d3&e{RRQ+`OiTKCM%Fp;|N-@8EvQRr_8C`rVs z+}aE%c>y#DgyjL5nw@>N&*<|3hOZBp3_4jk8Pg5lA_6B3J6&+^m$2fr#_NDt1TgiP zwv8Kr7yvT)3@bSw|Ji-ik^sJap|$!-dj;w_L;$xmt_p4U-&;tS^j`4&y$9>1kMj2( zB);*ot;x*;+^&|thqla6Y3DK!F8c?}zXWJOc4GM7u4}#|<}!%cet-n-*wehlOhBdT zp|f10qztR1CIb%H3$uhBEMdXBm(uLdv$tJPO3G!4rmWGBg!nb86vC&D?oZFBqHynl zU!Q5~B8LnU?Ou}|&~XgD=-Q>>In3|_vhD+RQvls9rrE#m0wOS|N+2sTpEU50F!|Q4 zaKt@7vLPROV{Dyv7KgP1j>qNWYuCz@X)ZVtyCa~RhRBc0UzcC(tQUSJH(Aq+Iv_1N zSeO1n?RX@{FhUu%YX6zGVdeuV!$|O#krCem3K@#Lug~@(pjOpiUy1>LjGUQ$#`5X_ zF-Y;-kZ%IVYAK0B9<)w_ml8+ojg+LD-^l2{kV}2puK@&WfZKjRNW%BIxOuXADA)&V zUPIMuymP*MERakfBRQe&`%2044Rnn8W&~_zo{%=3I2%FLo+Nw>>G>P;{mmyXn!vOv z4JhavE%^4A9u3B82|&o-BZ%4vy*;ql4WvlYv=KfaI)Mownd2sI`*S6!?%8+Y6H1c? z%AzxVDZuU%=*wE>B~;;#pnAAlo+l80j<+D~p}C!UeY{I;zB9x(mgbM~N;i*_Xuuvc4Ui<*Zx zj^5)wKH_@jT?qbnHONz>wV{b7r^r5jF%u7q8i0P)W0kRjD=@r85;ILcYPmAxO@?9_ zinI`v3Qyn%Rmr;kJnV?SS}q~TaC}o`oJsPO?fdsbzPY)4``ZWVl*gfDf;B;gJjU=pB4Ptd2Cd9On^@2=;1F2 zS3Nm;B>Sm8kVg+fSF0B0DQwC zCk?_a#mCr$l&{(Gl^(%&<8&0>x}>V=Ek(*1sqB?98s$z@ey?Db3(`ut8{w5aT%;B1 z#-ewLJJ!;Q_v)O@`6+kCoqD@>& z#Q9PLN>G>!`ARc6D3;lP^q_9R;2F81biOruk;;0{Na!u zMG9u*>++n*p(iu)V2q#fjT2r?+&t1*FhyN^|K@E>k}%4MoR0Zb^VWvQfLtWf>C)@1ta$fOb)sQd}hzqPX}g7%s<1$c4<& z`dUtpQZ*dV%zxRac5OYv-d=H^uqHfKAC z^SJXp43+)*CB!RC&o@h+hK;GRl?#Xd*=as+%^8F<~c*(miP(6|%|iMpi3OdChz z8-h%hF8pybjLd0Nfo%5WqO%bi?X2NUpq{(u;Um)>!R*k8{pZp(-_=1_n!U*c`gA_1KA70LXEcf zO!7A~gGgobHHnbs_>n2hpF~HNPvd&BjB|kF76TbCip6&~A@amEPGA*%eZ&D=Vf|Gs z&HE$!E8+Mcm83Yt?5=fZqeZw804zpk1_P`znLMQ|+_TCBk*mSg^`!tT`b47V^MY za$G0`3MpqJA$x3-g@~_|Xb69T<*~VY_ph+I^f2cv1aZEw;qX9wY;Dq7dI+AQiL zYrlsxRzT9s|ywXnk0B!8DW1!y;D^+=v=^1{k z-Dhe5Epb35r&epCXHv+-b{iKVOHFHs_1+ZCPSYKJ=ZVSa3^YUV`REM;lcOSs0WlY) z5Qn3`sdrS~2)bRTk;feU%q7#xVZ79x$eOxr#)UB*Yb8HLp3<=v-adKHP7;pfzf4d3 z(01>>wu)Hk?QlC8+{OH5!kk=B@?!8ksn?#&Hxzr4<<+)IxGBber9YDFu8k00r8k4; z8|CpJiQkAqBK9wCG7L})Zll?{OWNKzP-@1vmHsVh=EXtA7?q0l$-2&OCxjG!jeCO| z0k@4q6d~OuI^7L8%@5qs^tF^P#0s4BAvx6Xo{X?Y&ECN(zDAsazja@?aBs1u(((C= zsvMRbzGOP4rnrx)b3g&fDY!-kgVOBhH}BNc?9Z=>r8IziBcra5?3C<{zDudHT*4gR z+a)31)p2#Qp2mG7qmlr{|Ca0P)x3Twk=s+C+{SVWmd1CS-|9@j@zdn?bw(zzi&Lov zs2fnK@OE}|d8m~h!2svpxcS5+eOwhELTC*ldd5aZ6*nyO5ej zX1muuOWnV+XUElvh|ekdaidWMn)M#Ndv##)}n$VT=oZlD8Ol-}~*zGnb& z;xD|dMipc$e3NYGDKD+7ce|%pOgZejb!&%HaAEceCgSsO@yT!mCsptovg8`}QjE;f zxYO+v>oPKMBdsSq4VJUtf7#vE^P4*U*ty3?p6Wgm)dH*9-kf%C+n_mb7cK-@;xL?` ztTERi19s8uBWT}^!^x)Huoj_m=4WsX9^%u3xEQOcDeLC!qhk>GpC|Yo9{l#bL40kZ zslh-mt0*QVfqr2q;Yg>%csR(MyIXj)Bw#E$aP*;%EQ%>!haH~K230Ri`O-cnouYqy;}1SVJs-Fy_OOkjLO+p4jwhgi9~V8jRR3b#aD75Z(^rydAUB4yrNPhfCwz=HDxI06k#8@xp32tD zUJ7nvj2(4YQ>2d{kH;AvR!%ioV~Rj{C!N7bvsXve%s=r4gt~(6-?+w)jLgSHn~ky6v^_4R3sJdq`V_t#4=?t} zPUFYZ3d|%}gIt)XvY$?OhH!gwGHjhn)Tw6!4^H3DI}i zxfHI~iYK!gNL%;LO!v|~%^65Ts#yf&t6ZCi4*^MXTXm14gM0-Ogr^IHtHnmmU-DB; zM=!-2x9e*TQ;EiyFw^{6gSbiH6<<;^BKrjvc#7kNtx>CEZ8u=PUdOvg6{mC&*9Ir6^^NXX%pYL zTDwS#On_AW#XqKPar>&2Y zY{=UX;;_9u>j4y{q1gXY4sy(>VczuBz$9AVG0Ecc5BNdg5&?;&S))`$EF+ovj@kW}v% z=~&OOX1%x-F{4k?P_yM2!$#fsWwL8V5Rx0>q~)*nf;T>Gyelwf&Yh&D(xRfKW8l@0 z{zhc^1X*g}cBGeFYcRwg5{D|}w&Hs?taEPzTDCvlCq>j)^t`zP{7Sk+^=`I5&F7j* zN^gC0^Hrk%*j7Ai^|&Ek1k{-A=^ou{4i$g)|_IAm0~po=dp4y4Zv8 ztb4tCVN34ebiz7dDkn+&mbej%qT**(kmd3^&V%4|txLYmro3wP(u4|AjoK>w{Pn2#<87exAKl8E!7_8AX*|JcM7-4 zh~6@A8$Scjk*U{DQCBAJ8UFxl+~4VRaBx&P>?~ZcoWg0|;PSw*O(c6U?8XJ=tS8$E zc16%J4t+}4cmG1z!Ohq!P12h>sL*ZV-8I%#4TKd5p4YbzUK*|9&Oc=z9XP~#H-@y2 z(@E3#n%Ba>S`M7iw0Oiy?v_9uO zzON_)iR@tdiQ6@Y1?QiR!Bik|tp2q_Gj>|;%bm*;N6;*-q-T1s){;;`+hANcMfh3Ls|u^)f-|Z zBKD46Q3fqSY;3o+gKqO*v40{DOB_zXf)*rJ8%dl*0g8{s!f!n?et1?q3Qj-!yMey= zDlhrC(&*$vp@VOHA(@U_j2d#d(9>V1=Ru(T_X|bpnyg@FEALktTNRM4qH8OnZxcwk zKsMjxy?g8N8dMe`UtRSfhL?B^9kRRkLA&Jm%cA~=ETIo%q9UkWQdaEvC`w`SRs=WTpc2>-M7rNO+fZ_K70-W$P86*M`xy#%Q)}$_tY% z-NAid$BhY5O}e*sW=tl4Xzn8;{44(=2SE%j(H{^8By!N#84(&YI_rMWerRnOo#~IWd7x@#^^*e?oOAU-N_RY zDrN2{hQDuTEdE$9FWFTvn`de{Fb6X~A-AanB%e#1nz8hZDlvtFS03{qJOY>O+=r6e zuJ}Azd5HU6gMC6QrHM{jtg6f|H!L_g-I$wPz|z=r6_#FrmW2OYgiD9=*@YR#SkK^C z6;GZ06}+&;m)5`3<;zkW@dvhSpkH$<+!l&4O9>#ADmODVjaF6>O5J&suE{9HZss&s zh$Z}HH_<)4`A^y^Jl0V+=S3EC3uS4t7M_J8#U|9Vl={g5P!Jw^AyP?O=9!X8Eo0>l z&y@Malw_YywSq7Xjef6hiw!OElVRo;Ms-Sp_H5RBb&X}?Wck;0=?^U5HV@M<*ESkC z_LIL{U^kbzp10m1@mi2p%o1(zQaAaY>2YRS3s^!d1GcJxS*?Drs&oU{t>@w&PQ`|< zgtM`|0h)pEikS|8+;i>*ln!N8Vp=6EMPx8zny=ZgQCjGspm_(?AkfWV@wD#cEIWURwuR~^>mf>VwTkAfL2sxH*)5A3{L;7n z%1?rdysX+pL?jyR=v05b>jniLAHhGBZ`LDzZB_x*!30w(k(_<1hp6Zgb%?z!NLJ~g z&xATeTY-9rkj>v`?b`o}+;?V%&MxmBO3QRRbF0<&5C2;Fy$GvC8AMG%O+gWc^HvtOP;F%OgiD>} zc*sXt@?S>45l!G%!#>^;o~6}*+-2O<&ClL@K;ru%J09u_iVk_fo_nu1Jkt~X^>UOSk~N+-57spUtLsp z?h57dGYVnW#bde8(@K^7L_Kt^Jkc>P_F|fn@@4YP8keO$jr8jpt&+(Z50=piA_+e6 zjE@sNpi-(B+83SM0#Em~E8}InsAc#ne3a9*Lx&TXbT^Q-`+(hG6EEV@YvfLAYJAC) z5_!WCPK0sWsGTYWuBghjFhU_Eg8+3-md9bsmjON5a;HvP9ii*Rn8&^ddFS6 zj)SQe049c_zSHj9T(feBh&Fo{!?eK0iQ;b0Ue6o_usiD7)bD`jS z17%uS;A!$E^t3%$j_2gnhiy3lE^}7YHLsL74NTrNXVtF8uh)}pE?Lk4s^|i5^ znff{(=^&cZhe5&A(4bt=D$;Yd_Sys^%nfY*vYbC3L;JzMWR#$qt;iD`qvJ(Qq#1T0 z2{W-PgSqXe43Uo@z9#4;+|kUiwShw87`foxe<27;pLI6H zitw)Bl|4iR|K%efYXldNTNPLrf0Zj%D3hqKIus-w0)dv+gqZa63hIO~J2^g&KNHZh zgLKuuOY5-=s)mjxJ(|O9$?#!$2hOk@-1cM6Gaq7209_$j>@j>npCws(wD3!(p4Gqj!4mRp<{zP~905F^9U1Q}d&D;D z3BS+n?L<=SA=dq&JuM*XhFUlcs*_w zGZIaZVhr8v^n(x6!CoyA(Ft?mds8iJ?lQflyj&tW6N?(>9Rj2%;VNq$BPVQKS?=L; zNK@(Vi;<1~_m=gh6g9KKZUdxt1dYny0_Tdc%@$iWCyT-(@hS}&e9#6lzTAn-dZTg+ zK?cH7^Cmne1UXY}##(01t1Ry$Z(qg1_bB6?kd!Ya^^PMp6yF72%JMbuX5#T`_d^WZi@S$g~b7~T}v@ct-=;FUim zq2Ww%D1!y<$!%8s8R$e}$lC+_e zq$p~R+x+g$Ds5O=t~3AWXH?9EE@mBtFi_cm_om95+(Rwg)OICwa3ATy20P_`pmOz@q!3}u z^6AM8WPn`cd{l5OfM}iU zyQvD2%q?;}E`n=jBQv+mHT&IlKfa+UHZ!N^njyI%OH}ONL^zP%45N|z1Fn_G7cFF`d zvu|?%NIqpyxnY!bXSx2PD@rf&3`H(6QVLvy0mA(iOmLn4V(kl(Ai;_tNudXddqMqh zx3#|iPM3VneC?XUd6MVnSOJh5f1^38L z2%w2_bHfU0VjgM{pJ*XNLIF$ zN<8|qH_v}1VpZN`tFZa8>$6b|!$s}L??ow-0$J86Q%U0FKw4?fzvaRzba*^LV5;^(*SY45OU^3XJ(3IYkYJwBF~3o zN==Y*teAK`avD|;&B%UkXmkRcCMW-SPPZpU7AqC*3AgopE*s-(L@Zz#DPlnuixP_! ztE)c4#gzLA<;X(W!O#fOdyhQfOu{9ygT+gzbVX2t-@z-j>L!Ds_ySbnrEJq#cgw$OaKKC~E1*fxB=s>>h(W#?J^+)wLg-l+x>fav11jCvwqv zTYN^BNrK*(B6|Pz6?zQ~zpwr>~yRA#%g_L2&ha$4GgKn^{Wb*c^7z6g36M)GC5jt1+31$N@!Sqy~0v$~S!d zQs{MSKMyBq>|vd5X_XH4YZ*sbAW#_;xh3A0>r z4?O$@J8`=oM*4F1ljY!!Q@v8IphenV#0_y&T5W+|%)TTh?}htHwsw-!VN9_1>@m!(k7Um|Xm67(aOIBpE=pXT$(H6-91Hf&|X%%p(2tG)t6PzdgWx zi-|0`R#24<-uXNQzE*)*ULTZn@U1l>{=5)Fj8NgVB(DnRm(k$weyR7C7#KsXlJV!r zBY(X=pTC77KEaV>Z{|O;zSXtpo(lgW_1Z_HiEGlz+7675X7j=uo_+|B#-u>$2nX~v!;s%5M5F4fhnv_`^x&-EETsAJc|Eado#*yB#C|5}c0K9rgi#7K!*BYT_7k+RcT zr0Ukq=G*Q)q0ur@#4WuT$_mhaxjzCT=X`X8+&_kEK0uBH{TjM_Ct2enSNWY`tx2y? z4oQ4>rWnKMJ|rnDhvb$;*fyw(A)|L&kgT%iIxVHeeTwF?7HUB-rkYw~U%Rje?w`Lq zYqo;uV>o+|bU($OS)b~@XtpzMwX1BgCY;LL2J_8h;fTs`)nE&k?|z|VoHeKVIC(Rg zU{!amw0;u9cPN2Y_nRD;w}KdychlXgNL&eIwpXycDg|cc;fC?yM1{Sp-I=ia3en@#u6iN4Xz}I;YMJDgM)SEsErtr{dhUp#96%F z#6flo+~Lg3=L}vOxE67S7e%XCKd_*wLr5$5OdStaUpjLLfy{G=ZbC$^?fd!{ElPwI z-C%z>?g#SoOEY1JV~&*B`O9rZki#@qzNAk9_cC(hp-~*_Aiv_SKE~?}#LM0n&Mj{S z*EMDY>1l(+ZX<(kBfSwQC2hap>mVDlmL{)a*qrUiWa!OpI9MO+}A@{Zwm+P z_Y0}N_i>)LFu--Fdqih8nkrjR+;Ne%g@|Ax6Lp$I-)s4$XW}neKJ+EPe#(E88K+^eB%H!f6A@Bw1 zwHw0ArVS=&l5hm*+0%jhh$o2JMoPYZ|69lm_`_HZWWenfEBN5O(H^bGji_1{PUEInc9$dR{_UJ$as7AF0#xY`+ zScrKgZ65_ei-H}dP8V>U4kXQE)OJ83MKWTfsaXlrNS|Cz(xB%sz{>j6{9Lqg3z4gh z;+y!9tWSLUL#9n1Q>zVv-X3gWyhOhE2`(j#$@nBQocm%LA(lxDH9xu4JDxk`S^TU37K&y7%heDeROeK48wlZW#%CiXDL^Gdx$H( zkBgO5%vs$W>9=S`oWBzzZryD{A0C(Xxt;^_A&0pAfWMsgH;431-Ahulg4eK8wBP!_ z+y4X+AOG5=NtrpT?TCT&4g9~9{Cw&g0mu2d?FqfQ6B=9HSN)9f&C{&n zPLWo+YWk&@MU7RH+hRw$w^f6EAC~#ni~r8&S-g4Sd+)XX=1}^r3_rU!kB@g3-(>jP z_dFw^U{T8qa2$BfAY|E@8R$Hm#Pc6MFUWN~L&klnGwXr-bOG!+i+Xmj=X`}pg=JUv zL+`f@E2L&(M~ULa&W{qe6#xR!rQMO@`c%gv2fEmJRl^47;Ggb-FD=-vv7^y_}JqErLHX zyYy6lF6uL;8C!XL2eDYXFG7h1f;^E}7e^VMKfE2r)zWT3$FeMr)|LG?GA@pbxM{uo zhb1J~O$9`y`en=5nDxL+d~6rdea~HZA%d@#Y{#LxE>9SRN!YSa_(?@bXE|>3@O!`| z+QsF0rOZfExp&eICAEHV_JAkK_@;<%NE;mqT>`)Wa}+pQe>XU{;C4O-669y zYMg#(iR;ZtFT4rEm>2sNz&y!|d)wyk-gz`Q?~XSTz; zi$8c3PQSn92;{i{m7I4{wsCvkF*R|VoJ+5sL<7y1CjMJtkBd14I;L{)QSk2{Qn^+w zc`QJA5Jy|atwo+FUO0w3T|4E)8m>|zep^Og&uS$qUZPS>KF)}41daUH&QIcLspFFN z{QI`6zhV@`J+=PIma6JHSmDTG9!ungM<1&461rj^OH~+ln0$_teV^qRgEbP-tD->X z@HaA#Wgikt^D2+?gtcv`@GY)rP(jstn(BK>`<_2HMo+Nlx-sAA z?DEle9$L1}CO00m9k0n-!;yP2uWsx=id~R|bViMocD9Stb|`P=@R43FRt$WnQs-$A zf!;5gMnTiL>1wTFL;Xz~C@-RI?-=~J&ZnnEt5D46u@%LewEyQb#oW*0bw;#x(ZT*t zuOVWWXgKd4?MYV*>oiBZ*a*{~>kO?5{B(2PBm4bsP+1Y_uzKely&t=^`J5zZtA47> zUD94O#F(e9C05Enk)Z5Q!p0~L;Vyg$K&I+KneRG~-+3kTi$UPoW7s13W-}t10f}Lv z9Q|gT0!Ir^a~K#vSbekzrED&K6FE5Qo6Rbm`93se?^ci}ZoSV>19+NoWJvir$ODr> z^Vcb(aP$SBK z4W=HbYjlFIM?#EiO+>Dm@TUYF!hoZUeqtCXxgdOi9Q`6M3)TcT-h!mtE`Lt#!+JFNfRpzSTRMQb>(}C8lMyaeYi6C7 z&_dCxfh}H2rZ_=l(XZw*r9_A6*zMG!Kptm<51E&QuD)hoI`z?-^>)3CBY7UB@DXkL za)7(sT!Ig3rk}JWjfJEM%Awwi%fP4eCEYS8MZ~lO@eCz5ss%q2b>sx#BdN%QLds(= z^R%;xn9LMjae)!GCQ7-qwTHDIF{L`@zjWGdTs$jfn?B$UhPpB=#v1``4R@w^( zdcthavq#`KNW-JmDc#;{11+)Xo@BF!bkuLMhb56MbUY>ZWwy*sC5h&sFq{DP7f>&Y zWQrT4a$pX+HDiRdAMdL5G(_9rdZk{{uK4;;FOIFAG^Yv`xz!k@n4{OCO7HP_RYJFH z*V~CTdtDGOZ<`d3@W9yR$??0?X#3(zpX=qGMPHF=O84ry!2LWr(IfI2 z{roJ;-|MIzvZ_Yo^EUv=fIc32{6+s+4iNs!g6D(->Yd(^PO#kWW#I{oc8#@2(X8ra z?DoIv&43Nt3|=yPkVpTbDUGdOOSGiJ83h z{vn3@>tE4K?Ja8S-OP#HCUM=RT$e8@iUPI?cSx^q^;RlkFbefluI~K~{zplnp1Zq+ z5~LP5Vup~P@9Ev*C1Vl*i&l5xxME{A=!ei5WlV>Pg^;cD8>PK$L61=|Bf%( zX=P3k@;1N=70jY=l!TFe-gT4fNG6+yl$9JopEi?0^$f5kgk>(F-}h-eHOWvm=kjh{ z$i25cUn_mdK7CGA9^pQCWoKfL=iB1p)K(%m!Z0-n@I7>BiYzZ^dx9AMc4cjqTb99` zls`W|YF%&#Mw%l+H ztWQ2xXUGjKTmn9vqADre^O;PR$&c-g*;2#;N(S4z1+v>@zY;Jt#9iTJt|`isIK4KT zaJMhN(9k)OP$x1|*UR^z@BkLydqSXn0h6;;b4iBK!*QMS)m^yG_=~fn2DStb%!hxJ z9_@^!2b>&Z7L3jD9r_^s#!nZbI~PA%yiql%iI|VQ+*S_TDm(=Gi#AXF$2Jm}su8Mz zU+^bivcu?>>(zCK&zwBQs;NdNAH|~U!Bm3GoV@>T zH;89E@&qoA=2Ii(&z+X!rD#X?>q5oRhjIL0M|k4t{tWr3<$T_84H0VPO6*K95HR zDi8=2X@W`|LuF(b6#^Mmni&5Zd-wg-WZ3nIURnqxcoT|rlMo>EDjg&==}o$bfb=3& zL5h+PAcPirM|uZA>Ag$uT|lY=f`Vc%9G>--dDhIFAKqDO)>(7rS?l@-^25%(_kCac z`%(H2K2N)WQU8q5Se(hsm&vMu>Fybmy*RUzFSA<%v)383ulTixm-ZbgB*<6t_Z5`2 z{SFpOevS0lx^}%@^_RK_>4kUyHE{$%p6;f4eSXl6LO(Z;fDuE4F$#Z-#3u@LdQAuE zBFxM*xw?mUp0%)SR$sd16RK{T>o=+okRk5LC+lS!0v|N zP#WU1JQWa0fIZUwT!O9Naf18C@fiR-r)Nm&?J(IF+)AIg7sFQxq==_PuhWk(g$Nch zSG$=V_AkE317Adt28B3+`zgHukPNq(;h}wjGWEl0ViD!4TpkEs{^z`&$>QoJ;I3(2 zKa&B_4!CMT9R%4U+|SMD(#j3_CwTvj>Vs!q-SiSO-Kk#^8(nMYhyJuMwgVUZNOM z@w9$n4}f;lWdLE+3Of~Ac_9i%Q0);UUKPEZxJ>7`Ed;@e>SCqh`^CJ7$7_>3HYp+U z^FqogeBpi8A|HiBz<<~FdEgG-j`Jv3$|M)|hDIfj`BEpZG?xPn8owR>}Z(21Ly;{0byc>Hq^8kO-;!%63Z$t13_B1v4-a;CKn^ zzAe-~YKWY0Ety7U-sj^~?IdOVu$BT(eJPCd2d53%948^Prg^6r#KF!r7A@)d*FToRR#hwxV6ZCGVsVgOxAeL6?aL z4=2HTQ(&h1d8d(NTUQNpjV-34&xy2T>^ot+sy75(B&v(FqU&oy8M(ppuuR|K3NqpB zRACs;O$ATA@dg-enK>$wOl1MCZpu?*svoAR+4g`cup(C_^}7&Stz1tuRlLhFQe21c z&P*dr_8e~aN}gLa+6Y_n^`&0@IVyOb(pTh8{pG!6?33I9N0BeVBBaXNq*k`32xfdK z02-QbGM?^d5$q42K^i!{x({81wWGwdiqMn}w4q-tFgGkC9`gTvZ|d)JEmLpW*#&-~ za-uu$fC&(`ctJTNGHN+MD(!-`Nw&lPEuOYPogaWZA1#Usq$0Cl5O>Ja?3xfnl$+MP z)maLkjTw^pz{dX8XL98JWBlVela!!IL={AwWq=mtCnjJkL&qD?29UJ}5GmFtNW{ ztT%AWS!(js+FpN;&#fNa^Y?xG)|dNvMf~GlO03@bTv$&(44QYbCo0a!%+0oITZ)s^ z&<$(k?s$hK#`#Vu(?luL;3JV4Xvc$hoy0!FF=oW6)9VLd+vR5D-lQv!s@VlpC@B(68 z_CM9XAXu1rw3^@t>98^Bq(L1kQ>23IHz5gfD?mrU!`}#lFqqVaXHUr`r`@eCUf7CaIZw$l_lQ8>SAJLtT_OK;Kbn?4->B8H39tDWi|G)_%w+SBu!a9tp5=_p#n zA;=KXFc*N-(+E-@cCIL~v1ddGX@rMfQ-s6Xa$(7GOVlZ>yhh?KqTExN2F zAX0mZw*T4{H-`f^B^92ap8oT8eqRT$*WUsE+V|I_f+FNvBSe#t7b4OU5E1yNLy13D*`d+h$S;*dS$Ai^AYs<)AwKf zxF%p)SK-Ag$Qe)-v<*IDVbygRKwEAjm?iZ0P_-f*i+6Z+A?9Eg>7^<*c?r8!+_POk)~pQzN@+`a

M_BhWi3M3b2!^ob>Z^Fi&(gSjZ_7s-|tN}lJ;@Gfr}=L z8L@UhBWm3Ar}a#LW!z`O48Xtk%MQC_Nv-biAsd~Xa6bnBHOyEPQI!oeX_eh_Xr*>Z zEOm%xs7Dk;r*tjr@jD!#OoC5?g9-i4e387QceYsKs-NxnwDdO)P&W;Thz>gYjA!#3 zNPak%lPmn1>$V3kHgYwR@)lp3A*tOswo}8w&f-M{ zReu_hcLERX6-H3GXYBzBUb-B@cq^wDf3U_^PJQgX!haVkh$Fiws|cd6byT1T96<_9e z__R_v{e7|4`Fo*41DVb`yTbdjm;cxYd%zb@ZA*xJr`b~q^e5${?J>roe zSGY65%>;Rl%^vxKQ8TSAbZhUW8?jM zzxgCKVWyfo#m@6h5xsq=J$_R5^`l+BJ+p$B0AuM9dkcfM(Lr?40TXsZz;Wp%%u&y(Wt{;s)sVuF>kv^82d98qCT?k z#5Wi+GU(~{n9fW(_|~(Vd;Wow_Q1oZ=wZ$4JPx$Khq-t-=|#bS#GLMM`Aaudo-XBH z&fsS!x}9~PgD($1J)+uTcX-zYw_rK`44Dm@8>`T|IWJJe%4iLZqx*8b>hb-e*`-A{ zfoJf>j}PLsbH22|4)nf3&N|xiN=M8=pLUap z^MKfRyHRY1eqq&R@{0E;$%Pt=Z7B3o%`AGYv^p z&Xwxr$cMQb^P&qWH8j=biEIlcfgqhBlt=YS1DgyhQrqaAirrP;vc}6ref1mUk0o&E zdcoDM&|g3QbbP6nX``q$DOn(%sPqGivQK`u!uCc3_>P!pWnaD}JOy#VS1Rh&TTt5x z!qPJj`e#6Qc}vLMUmmYEdgOST8J)}|!YxcRl#&|JOMId-mAnh^;BmE=mXE0)4`M=wj@`qHke^zPy=ehaPkr zaflV+RX3wF%sbG>k#9>A1(+VAif%WIes>_!AC?m1zbytN@$l&1f>4rGqPbPiA-Hs+ zxvjRHCmBiR{o5+o2BR1@_ZX)vdxYa&k^lz9{FH;aWJN_ROWP&yRNoj#U|1V7%GfwE1JBq$Rgh zWSb*PG&=&WRB59{%#X2frx z?D1nWqFaqwsJPci!!e|sjy05i6x!7|>Viw}-Ex`~%m>-Lz2vmS~+PAH5!akXn;SuI*(K(ogEv z{5oX6%cy~dKL(g&UezPkhcc8r8+Mi6tJqAqx!I5nkbIb&qA-4t^jv$@tZ9*Wals@Q zd{2_xS^X;1YERWiU0rzXSb*x)i!f-jAni?3W+u{q}dX;qSSWmR@a0o_}1RcxY>M@H+NOr;N9! z!;4S7LKReqz}#=K%N}JB4^Fs(JXXyQ*F3_ zYT2G#Qn(X-o6rpHGgH5LojuN^?6YWr1~N>u24QE%n>6=_$L==k$R}n*aV0l?`)a}r z4rSdy!x;P)tery#Ds|O}mom0u>PtaiZY2U?L~b3E`|(^R1G3aF6s&DV=!cEKMp8!7 zoGe#4Sm&A|8NCuCgs7laJ27Io?IcDL9Iw}&OzEj=N-mCTh}3G-G$GRIVh+mkw*WcL zL+(}KI7R|DiG$c818%t@w5H0(?5O=S&t~b+3o06McoKJgIF)S>ir(6ChYm)#C&h}O z*joH&%`cWD_|o!Y`QIY~{42dYC^XzZGTJW!=ZD1yJc;xV3HQNZy`M%tcpC2YB-|_X zse4E$A;{4uD9r0oh-*-=b6}A3!=Q(L58V6$oqYpc9{4*w@b|lKY7!K1&&SX9fsccS zuf4mEjpu_q?p}HxZnmyoR<0g*ojmS1x?4H8TDZ8IIl36$ceJ?YbldJ<>E)>ZLVCI8 zl|Cx+ceMq5mm&Z&hpbWI0FIVIIk!~|F%&~jWxGDoQ2g(3&A+FY>rs(wjiw9V>krWO zE7Qxo;gt|)CH7C6UmVH9D@<27|5aL9c`-RT(b-wiSvgTznNgWp(HXh8jC5>TYGi5# zCM6{*DI+=|B{Du4OGtQ{lpL0r_#{5rGcD0DDJn2F_6a^A7#|;qkMW9*jEe{g#zqHX zq8>eo_*ZEO$tVd*D~L+T2}miRq~uT%vVvka_yxtdrKOP)(n#?eNHJ+%QE48L8%U8$ z6;}cwBncOkfD4Fo35mi4#MlLe5d5NS{DN%!0<8QZyeMHFzRM%Tg%agNiE#3XaPSFp z@(Qu@2(eurq#!F&fR&q{n}@-vX5VVWTv1$nv5NRYc+CEymM+HI!sKhKaR?eS3gl2v(VV)@2v9Q(2WEV-%D)`{;%5lS8bV?s~VZA8KfnFHB!~mSH7jMc2h~x$Usp?UrtL;QBzMwQ%hb=TSi?=L`_{*MN?W? zT~b+HLRn2%Nkv9hUP3`tOkPD)R#`|+>HnD8x|aC8(Yr#x=O z=rUh{K~!_$f2gfaFuB&NbYZLh1@L_7L?)xhTFK!*BeY4E2(82aE`;{~tB$a)D6K2m zExV*Vr>H!;s4V+gNk&n5Mt*T>PC;@}74cblVoo73GcPecCq6AJE;)mcmrM9pY5iYb zS{MH*u3Z{YHY5Lz(B@i};Cl%SlJ5W15lR#f;rMi`Y})D_bkZ+9n_SkDka{8%(x0c|@4r@5!Hpik-Y}^?#qx5!`aJ5g#JSw8_-!yET|7 zc(uFpNADhD{_kJ#pR&*IRmxq4AGFDT`{<((a$)$>sN-mEYyKLgg00erubsO6fzywC zkALmKv+rGnifJZ(+rIV2gVug<=7%1| za6Wtd^D$?^L+T@rf+)J|gQ7U;ql03irodrIs=51NX{Pi41fg}%o~o)w47yiSc3tQs zXsIk@yKBE_|5;U6GiNObv?Qc@)O0{!3u^VOv3Y6@uq}9^r~Oie>c@H0J)7eG5Kfxc zAH6?m*@_bU(7KoY56`Bo`a}D1^ZO4Sr^A9DJI|LqK6ZV7Tm7;7_t*Cyd#+Flo%WJn z^E~YX^VOX8)5;v54gj}=&ITDR{(;cC)SUerLJNx)`ZR*f@ccB2DzEu8Ce(8LXPbq#o{yeQhDSSSoe$DHAR*SFpd`?g1)F-ynWeR<#np-VrO}!Be?1faHOl-S({8E#6!3vZwXY%`{xkj87km@&rzQ;-E0wI5cz)_ zWB#|=fv+ZK|JUHa|Ee1JV5;5jWpPPy!DVOFogMfh*75(fxk}CapLSM}|MEEhFZVeA zyIyN%t4>=b{P%bI2EE!Sux?t6tT>|NE{od#Xa}}4e#MUf7&Uxn63>6wfdVfWF993g z7@YZA$~hA_8c_l+nYgqA^;Ow}eC=4{3@HB74(wKZD7j6%MIA}MH!5M(X9YK;Z;Uk- zRcm|TuT093e5%!bX$NlHNQVP8)O?W-Y31ylB5%T+gxeMc`^G_ObmXcJJhfTamJRq@#02bGh{Y|q1)(*>K3hs=-?Y-_m2xI)@U2nQr8w5 zc;92+8h4Y>-p&)$~uwQr@B*E=2N$hq~blvg7-`AHXDqlfA*=C;?p)IX^G z68}EZtC1cq4?=dyrtpCu|NUX*0D1|{U((bho)9TdwqJYvnp(|s4&nZGJi>P!TKfAiOm=|`&TF&% zls)I?%es~ilS?lIZ!$)JGfW@!lP~K1*t;#aT&r>`#c|_mA7hx$hs|a09+lIn)D|t= z8Q6QCjAWfi{!S)x@2c~3$1|he0VpWBL_LTN@>BYYtZ&0}p7=iClyRhw?n5olM#zRr zcImSeR`qadl7ikB%S5s|m#196waL9*pp?e|Vf~galqnX^?8gYmAB6>xRAs>l@ zU=p9TN&`n!F4uR-v&!eua&e0fHT@JLGRH$L^|NnRPC%|DHV_@RP!|a2--Wyyex)feDOSY3!OmKQ z;uaW-T#V)FsSg~A5)(~?uNHGt9YUlM$R)~bM!o}wYHDAJE(l}fYe%^;YiIYEqyR1& zUD9WvRHHEgj+`VP@hXDS>Z#4C1=o#9wfyeJrr96wv{}j(xlf6~-|pB*wERG5wTolm zRtVJ+=3bP$iPIlaK2_BI^#R)Lywf;7MgLKK;kv3 zpS+W)D;-t8I~y!|`Pm*Rj?~#k4Prhq@cwbcL;kD+r%4joa4MQe-V~kK?DLx=imvLc zh*wd;5y79_HmOcfss;vUC5Q9xa=Tfe;3rbZ>Q1;8dr{Hz5$bZSNP6D0=DGAV^#Ijm zH#F^0JmK$QRl%{N3Hw~;X;Miw4<_x0z%nsj;3biNJ3%GXPNBgmpxVc5+~j?v5w7GM zrhB(YmZ|7jhq!M>p%jPRE&)(H6X9v))^;e2p&t@A=kfi_{Tr-nH5BT{WB!neohEtp z#NMpl`k_1f%i!Dn^3puz6z(dKgruB5j7{Tm$Alp3)wK&KPk_*2O;7UR>&>s}usbgq z%{IQEagL8HBC7=L`^unirPE=4+#Zi|$7fR<>tPOTRbDOQP~9J98HKf#FIoC$BG;Mt zDkLA=joh`^c#!5SrDuV-_jt)%q(sd%^?_wZL|K8~w;tuyG-{gSb(~RJUeKRoRUDa0 z^;^S$5BgP}k$CzMqaYi$`HyJ3eKSZRE(m1L5q?XEAy7W4S6>NFGf`9+xzeYd05R)qGzL{rSI z7l*3Zi(90x%se*_#P@R%GGdf|O-{5gWHOT_%?rO=U{a_YBL_S8Gv`DzjcYvf01+i3*GiO)gg!XXji`S}1V}=w;OD zL`m-*DicbxXD;Jhb*jwsl7FuK7|j;SMJ8}CIck1LEpOeHLurIvgP)$gA9Z)+@z!-; zlG^b~UC=kc?>Mf1|LQN%0_KbecZdHu4nz~f4qxQAbvLX_akG-%^HflLeVfcn%bI&V z3HA-P)A|WbE3gB_;2QJ`A}0J@N0M^x!l+ zt(qsZv3$17PWHE&&(KqkXkjjqY4v!jQ(iigJ5-gaZHzxsdZbE5T~DW6t}-j_S+L8) zolP+rQKnGUoSwHb)Q|b-L6XV2x~UyaDn#`Pholr&9Ji@2ap~KGn|DOrZpri4KK`Bm zp{XP9C@TA8NerOQWI@Pc-$SX%W@+H|ZTWA*~^0Toi0vYa_0a%mTN z6$JmLEM4+R=)nBuOOqP24;s&>AOh!jkCrA>~29 zpYM^nnLw%!v^ktUQVWPTBEE&w*%*OA^whLgK-dArP6eR9bqNZ_SAbLa(eaRrq@*~p zupl2OryKP8Dgc)QxV4jKlashfl0;*YWMb&$`NMh&fLbwNS_`;o1x1enYW#qPTdGb< zJheD2*)|b`Nu|N0xKscNZDC87rl4;cGAWIwA#HOe%{E5Lj>==aC_->HoD!2R(h7J~ zhAH#{K5|gMN+7^3BaolVnIFKgq$A*w)T<2PZYl0mVK$k-1J_J0s$`nJ%=k9G#5Tag z4oKr?$jAZ=4@1GSz%!q0vWB=#7?Ec-1)P*g)sR`NEm)cbyv~G5X{SFuOvU~PZT>;A z3CjVIVEHgPl!ZCqzMQTs{+>gIff)Mg(Zp9jLd`~V$+DoRi>#c2N}$LpPuwq0DJc)q zkf)cGH6w%DVueQYL+2g?3o-c;^MozgL{wis?RLJ?YTmreGZy1#aNlR3q-Q@z#UJwn zp+BCHqH{s;0wL{!IhO(mrhrA9dib;u##Yp9m4gr{y0uckK9JDpnxqU*r=+JI0E#8# zi$w$gso>(itU{i?LKHy*-;jK{+WfV=Fn_hU_`I0Jy-)~V^5s^Ew_C}r_6SFkg5U2- zBnk^C`U;GKnHj5?C$}gn-2l@nKt~>^wJLDLl#&;g-dU5QA1fgjFQYOpBlRtl*I^to z%BL!%!Kr}Xt(NI9;7H-+4g%ypV|mou2~ViP%rC~0RL~jW1U5z4{6OAPVfw;B?Fv+3 z{`7JMxUX24r1H%xwXdI()n%@yuR$kKfFN5r!%t}LQD}ZJP%s898VgeG~$C*G;y+n(Ww{9Tb`!?=(AyG`r?ByLU8u z{x8{qVnv`FpBEJNpr-(}aWzmS_JYZsD!sRj=8X2?47hd;csc_I*cS1Rh*G%_^U)?8y3<@+1^*+q= z9zb1(GY<*P>Fb`qzj{tPl0KJ%NE@=Kjk~{QLvMXA0G)O46k_bN0X>~I7USZF1s%oa zJv7Et1S;-K81M+zMOxTJ4yPua?I=qs|4i9V;fvj5hl197$qJ*kI=Xno^G7;5DA9e~ zg&-Ci7q&|#5P*(^)6W)kg3tPSlc)xLdnl5?RfYX$d~_|rRP>#IxE^riF#y@_g`kJ5 zfMGIw3VWMj8f~DV&`2f=j8zXpwufu(w4wS2X)yghvKKwNG%BSBq-GCoh7Tgen-F$1bUymWGKM95^0c}2`X4*iY z9R*Zr7OD?0hRvE)k9Am5lAjf<=S)?{4aa@!@4FtE7+(45VD4NANG3F2RvF3t}YA(A43K&6#Z*yUw6e0 zTF8N{!T_Y=h-lwy>CJt`r}>T)%rNNVJgrDnq$=Q zGW02zE!04mPSmDj;{=NPGg?Z&GCUrbpbwlV0?u|23t^~IKJZQ$xHy3P5Cnv~0a1>H z4B?&Mq5WAwz@-jokPo;iy$S=u<4-AV|L)s;*e6S(u(y3{D^k%r9$~BxwTN32Leta{ z2UzTRv_kjk_$JUI04Y_*oez-5e@ixv_9)>8v+p5yYxe{%`Yy|8pX~$WsSrTC3!rKa zWFe4?Ot5S%DA#EHB4b^EK1#InEq7A3Y$c)cggQUxsOkZg-v>o*W`8Cs)X4v7?uNJqJg;=>F*|iPvJhZcV)>w|}idavWs~3?=~mbx=Q> zi8zCHWeJ0SFum3D8-h3*^F_R9VG{pwR1warXAL+D4YGg|R8 zF#1DK*aqqL!w;Efqzz~B`Ke^+*i+ON9bZQ0#39)wziA6aC4OAhWz_!gkzBls5P)*#VC5d?wb6$s^(G>+aZbIwt_P+V$ z(?SDIuK%8Vxz7)y>hy$^g@d_|x}5UBUg1Iwr z>1_MBdvi{`(T@Mx1+jp5QDBs+WB42U=KRXG{y*%%SG1nyr_;TT6r9R97ULat0+X=q zU?%-8n$S-E=nUis<-Ay_{6bz3OGWepsI=li@5- zrM)+~B$1_`ryR*=|zY6k&7Pm#mAT3XZ;|p!R3=Y>g zJ|2nFLKh*7ND=w9PJFS8YulbMB|LRTn7T{uL(y8O;7BrNT~Wf|@M{RTts(OTN&{n# z#48d&A=Fyl`GD4N%*7LNsX@F0zg80Av_@+N8|N08qB53jYM?K(A5awOQ2nAnsLMX3 zKzI=u-!D!{n8~5)5})cP3~CE9#^l2*G7JKn#?t3OIu8qmJADISUqt5S*_B@nfQ`x} z(p*RIt{h3Q>wIkKMIRVvBN=sO;to`7U-2xD7~0dM6}W(#^mH+;aTV8${({Y6MxFF@ zsYYKR6jK)WOPdQi$t8>tcXkDvY$CaTI;FJFFuX7Hrr5#3w8`5=4KYNF;p)gwPiXKMe3r%BaZljA2CzW6DqirxNF05E>}{-ckKwE3DjL||0j?^v_TmD9e%j? z6M7r=v!y@$g7VXPklzF|=gg$Yt&vY*qn zyZVrOLd;i2_bB~&8%XhVDS+wVYAuB$>VSihT= zo(wRiy+~m!aiDPz5sxjX+*3+CvsGyCv&ql0Yw*`$Et;ojpDk+PIogp*ROIXaz8KZ; zIu1ug%Enzt!=~#u!r4AS=!6#en_;Y*6!l|F;Uli`C>h%+^;Z>+-|KI3flZ(piWBtL~ zoxaa6UUdoDPK@TO$TxOLY?nRw69T5BDW^Z9cfegm&PjY#A@o2>BwC8W#YW~yY}n|q zhKR|gfXt*ejXjCbdac*VlwgD29m^RkICPCD%wj%E*z_?7MWKjq@9sS&_0Pbv>;Wf_ zBSNm8<*ViUig*X`@a8dSv84xU$cfM3S=}_y&BaC6*Agu>I7YZUKCyIYBT+yKn2|yI zmS%swu%Da_y4^KN6j}nef~~2PQD%c;hw*$AxGSQ zc|WsGOdC?^h(q0L1MUgw`Xj{+3vfxH&ZXEWBJiM4= z7ga1)n?n&@h=!pO_S_PQ3z-cIQ0|?q>yL_x+EdlZjbacx!d_@L!PaT^Bk_R-33!V5 z9uzTdxBPKX&M4Q(ID*1=otfK2o1i$LKGvuOey&Xvs`P+Wm3=SkDdB^LbICg&00 zC4`wAryDoCi_RxTio{_Q*_-gr2~JU5Y}{rH5qcWotj~nb7s{0)4{t?Q)vM+5RLlth zQrspZWm@OxV)+z}GZUhH=rApB9JR0~VzKaNv=kx8#4-mrkL`5{v{f>_Eya*+uZ(1) z=qT5wK&ZqV*H#A#zv1RI0mq9iz=MUgkaF6ZhTZBO*e}EAHdj!cW@*la|Dd2}vIdj+ zU&TcxWdd!mxO>V>v2S{yni&(FQ1dOJYpZVFiG0K;nHo2zj=k}VN*9~!obtGJGZu#))La zGpN#kH*I*YotvyLO4Ie*b?HXl#r^(yX5P7_^7`!;+|tb|pS+kZgZwrv&c0||tZ37F z-BV|)h84(5Vh1WKqPH3NgLWwmcZ`3WYj~oMF*ED}l6>MXC=s+PEc5K$TX|;TbeYjN$yrOl ztul2)dS_FPT?29XQNu8L;`pGtYwyUy9frgBz}%ZH)!#M#>YF>i(mbxVny9*AcIKuw z_)e+peCGcB^I3DJ!zbDb=sA6A?Nkm#7)+yG*e^coqC?AF9=dF|_xvmeUk(21$PS=E8}U{S^2@2za@!?r5+ zq9QRqz14PEd`K`u95{od7k(tez$)tv%c^DoLnef<7;1(38~XgR7tBK7E1lprZWW50 zp0L<>zKJ$o4lp~TGG?SNmL;z7Wkd-+@;w6{)`@T2?R8=R(|7jpOn`-u(8HLm*hUT>|dVCmJJ0Lz?5iopiQK1T_#K)+AA77 zKWVfI1#@AM^Zd-fv0C(un)eni!1UI@?NZVnh0}1LB<9oA%tFz#Xp@_ znJy-v7{Qq1*gbaq%l^UWnW3A7tyfG`jim-OO*%2X0~ay9ngmAt>96`9IX&H{n)>Yc z*`ErUQm^n8TFb;&(JOiE#-N7zh?qFMU{FiuO1l*!-k3<0ff+!=L9{PpTExnRTxoyn zYDHU)#0=m+>uO_Swc@w5^JYgfTeX;q2fATdOab^^G8nD~?|+_HDg^dW2Q^e<%gE%F zP`9F6K`P3Z#S@rYU{O; zEf0T%`L410IqCySGj>azu6pcmkm^83Z!!*Sy{C3(0e^I5NN_?;lSCJfl52iH*3t>i zi^I1$LR?QVm;gxfAb2Ph{76EBAgh?>J6??UgrQ8*vx9ED#mf_--8NN{Iu%`^5zA7Rg2RJK z4I^u&@U8M67r>`N(A9I0{dw$10{#aMA`OfD%xx62!p)F||G9wQh+}}{j_COtGUh-A zf5vX`w@Fs$1#sX6@H)}J0OktsbcsPMfP6I%rg;dqJyO{BkI62StN?fYkN%Hj zhOsoZA6387p#N3=G7lHOenjJT*wS-5&#aeU+I1XTfD_nSYJ9)csAi(c1RhACH)z7! zhJwB2%&}lqJr=#3Tq^1`!fEPwHFzHHqXM>p*ddHmdD7#2W}~(GF#zr;q|FI(*~x-g zYQgf0j5<8%NY93gP+fF%!O9|V^`Jm7sw1jKEdm1>jm9mP_cGisGJ!@?d(>c$PUr9R z;!t1Yv$V8=AA+Oesp1)oqrp)Y592GVNqxW2sG)HuKWFb4k>h#rN{HLNZ4@RxYvq$M z<&kT>TemSPYh_{<-*wQOkxNxuxJH_rPHItwM8+!uQKbqIjpt+KsGAts)oNI`q+QY5 z+n@}h@$pEp_nGN&ij{ucc=id6j+7y0#9~?H>g`aAo(jF_ef`6gJKSfBgo?FF7X9Du zmx=CRidxGat=5d=+p%EF27hA+;{ZWd{c-5)>eJhEzhkl6CL;P>S$|$*>sK>Rl|K$7 z0S_T|*vX5hlB~ZZvl6rkBazg@dEhP2jX3bl$4bc##*3HpvK6>yxt`1%1wIMD>(mcp z56C5OhDW}Hno=-d9v=646LS1InI5d9g8TaL-nTEWzNOuJx(KH9G{dmSh{q?S%169; zsOJrA&gojEOLhvt?4*HZyLh_Y#lpcnYRZHz;8>L6p*aROo+`m(kM)j!{jB^^h zqW4B9HDRK75;N1e>Iq>GkF?n$&upT<*nf3}*S0s@fZ_qEwgw51d%2k-V;4oOzvrgm`RBD*7s_p8Nhnax&~zPEf{TvD#0mdPiKrV-%7 z&)06xygdhanXQbCBdnX9?v#z(S#pYj?FBI|QE=fkc=4Jd_j+e!DRcEZa^q&_qz~>; z=!5Je>+H+FJK8l_-yMGI*}X3sUnG&byJ+N8b!Gc2R9?QuZU;VA0lcwI0AGEAcjp58 z3J+roBZHgYg>=75=6-t(LOVIHh*@~E2;j_nH!&)S4q{o7nbsOUYmdmt%S-QH#D~9& zR@tl;lX?3kYJuG)Ud8E*47gb*%B|cC5@_vM#6SFC*CRMn-8*W>wOuB=S2kinDW!15 zSMdQTE=JmPMa7CBrj65tg5O|t z9t^_c>ty1@IX%(nNj#)8+XF@_9~YU zI0HUYlfRKUa$JUrv|d?VLEX~s^^)K!xM=c>-Fic&*#;Z(mS%C_0L5W3?_##y+x{lP zH=f@jQoI-8GPtr@{QU#3#uTO%n=gWI9ajGgQmfGVc=xcQl&pLA?VcMKeu{eMl0!85 zOOv#Fn?8f#a0wic_rj+5G^W?5CH^Gy`&wN(*#EW)?HjK%Bo}cpqJ;zoT(>PK12Y&} zPJNB_0NNf#CQT2qUYiCFH@~RjtwmqvIg5exz@4v3sjn}ef{Ms5jCGZ{KRU*&9JoFq z5S~znaNrX}z^Loj1bV<{mj3)Ny()4)DxGx{J~es(LD0C|_H zpZPXh&7V2(bF29$c?#N*;?Iv>VCRA!QnmgXs!2=P9;Y<=kxRrV-ik%H$IZpfnC~muc!GFel0l%es%GFB>gr~ z0RIsk^3Z#Uj*bV<)D)rlfCA#F_mii;!someUM)WCWjn^Awr&Uh#=hZ^THsHRQDe_k`%EQi4H3Xx-Eo_54hxI$q<@22lPr@E{rxenKVn)VRWf}Ax!vOne#Lxm z34aD2SjLAdk;!^KB*@+%GrgYT{M=4PFG*JkuQk6=ybF5OK59wJ(xRBXg}c!2#pxK~ zR1V0bWh2Cl{$PNQczh_K^|##k@5SE2*>C;?*T-=^;QL$TWa_h6l|Sd7R3kr?1?UvwUXWtyJ|9XIARz_5P!=5E3n-1$=uV=7io`TdL23f@k_TO46cBk zH$l+zr7BqeKih$9p)9)eYBzGYm?N~@3bJvTDkiv*N~Df=H8@#E`*g2Yz^pS;u6Q`% zGAKa zFH5iXs|skl9#MOId!T)rXZfvAQ0X+UHB{k3Ih6)qC{ZbP7TnR_3R|jF=Qp2y`5$)R z@tnaTCX>~pNnz>EDyD^lmyHE<=XKic!{9n4Gf|Cha*AT4XU_J{#GRr@PW^{3`UT-P zn}2@!C3k)>mnTDUGE?OnHJ6z#t#5AcgY9mpYaZ8;56&Pgz4Y!;rZ4zP_KW&Ue0}J< zZf;4MF|Ng`hsmWfFboA7*f^Zl{u_&BP+oer4QrSN(JXNE5iE*g!!J|S(u|%XOk}m( zJ_^FWXyu*{x45(e+gkxd?j$ljh9)n4MuIPxp(wDTOZ~no21sQ=mp=Tq@Z@h7>aI1_ z&;jJ(XYm^d^miUd9#xsYWxE&7{A*3m)J#R>c(Z2m4s>1cc5MqWOi(1=-B`&LsteZM z&6Lqna>~ne(#)_!+kBASS2Z8Tu4Zo{%Syel&gOc2Njd^^sejF@~}4BxX0p&Ln%*v1BK^YR1?lJ5lz1izt%a5ZY{&Bo|T?2~jEKc75L8_vik6 z@89po{lokEBVLc=JkIktkEi}FR(xo3zFR3?BRk9Osqxzf@Ix$59eaC-+VLd3M3X0w z$v#eb)Lc=>4gJf2rijw<(B<#4#h>*UWaHYh9QsVgE8_wLpUy=y=1Zv0S@C;Hwpx3c zPS0Tf(p=9Sy7|dWkQcGPh4iLxPF;zDXiOp_vi2fm?M*)OKrTxI90V!zZ_C9Zq(gI_ z@*bqVC#X6c+S;R}HNr8Wv0*zHBXbQ83|H*SU1aC8KHc@zH0JEJC7mTOO4~p&uL*cv z;;yzg|Ni3Yo`g*b%ME3+f#|WR)4bIGnb+c zMPE2x{GCc)@Bbatdi?zmb0Q?}eq_g;o$7&N@_V9Ma@RyRS?^WW9ba0sx%Ug(FAda3 zZ@MI0%*gW4r-FjOnU19xb5cL`S}K`i0$1DQl$1ANPVmJS;n z$~4F9&rTp~-}fcj;bH}oc9BBhfjR& zk5us*PFBg!OkP80&q-ou<}X@??B z#~G}sd8*_IIRcwA$vnJ&hI12}36TbAR%zAwWG9xTkLH@bVDWCdew{Oe0KPhoGa_@y zxH+YWsWljzK~%ELRo|iMkM0h2TFD1t2@)m%RBCt@Sm^jGv!pZ{n)IXk>|>;Z@3*Q4 z)b6R={y1}9%sZ|LhD&A~apQ7@YQwSxYdMjJ3(BGZVy+_eI_Jt?q?|)(vf}$__Gl4e zIh?mza7{5C^~@AD`ftN z|A4k-&5uhnPmvqS{UMLyaqjjklmo9L4K~Cpo2w)CZ%&+H;WMS= zX)hM42P18?VB z7p4g%nLdsXvbVEkY`S?ppc&toLm1Bd$dgoAUCXGtiQIGG>9k(6$Hf*noD*d|7ks}1 zyyx$2U(D0}M@c?De%cvKy@_bP%RU~Z=9Y*IaYsze`-L86D;=oxJrd$KFK? zILK~4)|y$I#r#pHm`%;Yupyxtm|#h;4OzD31+0$Zq4}08x6#cSq{KehKQWyB_1$gzKEB^=@^x zsZw#mkgOuDHM+Rt1qV;~)NI^TPuUUz{cVxm701cd^+U5Q;rAv#N=Jr#|9Z`V!+Tna z^$4qRwvVdfXEUzqr|i*R$`aSPj?oz4Q-KhFG*S8`sfxxWQsIZHdy0P@w_{u*DtAj# zE$~(F>Qi<(En;T8?aM^(*$l9^D!sF^|A+VEPX<4JK>&;J+jijKz4GQ<%}-+dz@^;$ zl$Bm*tsw^%!`V1F&v)l|k%Oj?A4;kHa>EV=31M|5ykGLq49ml%dmm@@b32|no6U2( zVnw-ty?fvzkM|gSTC4b*hWA8C6}j-T?DxuqGK1{AuRLI8GfP2EsceKw)rlRbH{a*- z=4)eX02?LxX-(fcM?`Vdv(_^0dUo6ECeRHwH_Zp437;aL)n@@;j5wMnbZ*_Re8fKS zZS2gEKx6ES#Df<-B#CppYj(%$-Mx?$Yp2q0CclJ7s~ULLxWssSjOg26^Hci3t2OHt zzivO%NhsVq%DQI++#TWUd}1J1Z*a?6Y`19`W?jZNA$=Ki(KaO$P@U8jB-P}q7BeQb z&Gl56EA@RC(7K@Gw5bO`7P9D z4KL)$8|C)o`{%9eBuN1TNkk1+V~fNnkJZ1K;p8mv`g)4u)N}LeybA|s{*o+Xgwa$5 za{d_8>_wMMRcTk{gu3&OFHC5@vfglgk&(S|n6poL>WgyuiF+pR1QsH%2=dX`v~HRZ zxW%K&vGaiPow8`N((`8HsV#imp|5{%0U>r0=y(N1T4m9{g zGn_h*J&k%ogZyy1btFKVU&=Y3ZnDM$Qz^qXn+S%l>||fW^5E=wm=n$c)!?q;F*BMf z32Gol8E)DrjdDjq{0emCrY;tI9wpMoAk%w$RO5yC%W0TWLQ*@!+S_E2Mqw!k@JJUc z$j$@{ekof3lpAyp!qOz?QIcvUl5ODWebl%PCfIIXH4~zvHLBKYt5Z;=TPm$rTcy`3 zefB@m4s2Xg(ud*uDJDC^$dfmA_z2gBV^3%vgT@aw`6xzVR}aJ1A*2QxV^^!KfwC(i z8(W`vfrH3p0LgOR2oDHE1L{Qpc%gTm{S3j(b-~=SAwqS*rD*aK%HLjKHAQb}k+KX6 z{DYJWX0~&yMbrRAGM*#RV&Pg$Qu;OTFMFpF>cRmiPck!HpB^!shjp#f-XSAH8O}Ga zTg$I^EqkL>(A#m|l%l%m0!j=!6BtB;e7LRMO`hA3MeTTl4q^5SADpMin5p#-KV&JV z>ZAV*LXVPUIcYNbQ#N)RL3Ya+OE@MAjvKE{TS)SYVGI)^pKB+_l*8v-H?H}>uK`e( zW0?J7FmNQzpBi-~K7CEGn()a@SLAr+r~$}LG%Ev2r_Om_KE`PiNxFnCzeJ?_ zgqt3Jyv0X@@zlg^pTcnZlIDCDyb$63i1HY+_mfSm&nHsRC1Q0$qYzCh?n;?5JzsT1@P=US$HtV8DSf24FU9z14rEr&0SFTp6zv=O$bzs=fI9UEm zi~`Y)`sSpAwx&&oC{y%F}}&4YY|pVrtXp|T_#_D@0Hdoh3?;0w}H;m!6Mg9Xzrnkg>x z4&~Gi=|^3K`A(2Z+q_gDmUWA{su|YLlc0oUe>j`Ui}-{`n7bS^9;=PzEv%p95r0Q}lEyzcSNC;WM15;xdK;nMEB5Pu|co#zt2@t|6ccQl% z+pu#%XpN7{=0#{YLb~KLa!y&QO_kJd4dDm&kndvSLQY&ja9$v0Y8Nf?=}?OvS#Vd| zZWrUe_Ij{P%9k*#JLvj7XUkBmLIZju6mx9{Nw^~`e$kYO;r%iw zQU#PY!D_~iu<@Tjqb<%m!wM!q1q5w7LLC!#?5$&nt>;rxX8h!T^aaVIlC_Fc4I0bK z3A5V>sr;#UenaWuhg;fP>P8EyF8&=PWQVdkPVX#kd2C1jl8;@uT%vgkTA2y`kfyFq z!<@xE85_c4MrD@0#boKb@>r&hAX^ued>H*5Km)aWH-OFnKgB4|vTwbpys4IWV2;C; ztUJ%Ay=4y}hlgX^!VEApv%(ZLX`q(W2HFP==IjtZ3zQGv#anOSh3Q$4uonG9jYyNF zpJ8ZhxJ}+ZTK}Hq>3h!e{+ROZ8~A&caLrUMC9{rl>@tJR<2BvbU7NVCXkdhK+<}e4 zX$K2sn-t9nKcgnw@W}j2c0P@xz~iqN(6=Iy`&gb934R%dhv6t%=Q$%R%7X50h*QZA z_S5zuX8Ft+U<=hWyq|P9M==~suD1h}KU4x;nuJjEoA1gal6bVRgF8>TX%@;@m7ylG z?1uTzuiy(xsPMs~*DU8b5;4jVL}^80oUHF9<}(&dN>3H~86Z<){=Edf2+aI(qhrTDrTPb^O()6o9uMLHTH=X!Y(nFeaML|1JIm!!*8AAS z;Pko;pI@Jl^*UJn9~u@kID&S~2uO__+cF>JN?>SW-MU%$AO%SeGE7Pf+|8!yhG%VD zNw38`_<@k7*Qx1R1nQ#g4za-zMAj~njReM1r%D@WYB*Xbd9hf#P#%pLEVFB zV>D*CFD%Zi6h-LcRTEtn z4XRfo+FqG{vu;R6gt|SWH?1|)yBD;~uApc)+-{`$+2E0t^61qw(Mh!IJHK?%;Saq@ z9q^!E$ZpM+)5ky?lS6a#Mv695z2O$AO|`-ZOR8ha1c)>$2j5ptbw&U;`XgKSqr>-O zb4_~C;oom&>Y0xzz0n$yF>bA_q7Rw?;ifUybb*-DhiIQTvtJ6g)oE2OKgm;H!=@ta z%44yo9(a4|-&{MXx#7ILh*v_NO+Pd%JE7BUwiBvaADUn<8DSN$4Wm*3hasm?LwepM zIZBv5;TKabjTLLtC&e{*FEfZN4}t9hBW36ezySa%<|LJ}&Dlp7~%# zcH^&zhsw*Bg1YYc6XQ`1;Q=YSrWYSRxqnalTHAcCe(Go+y1qWGwXUcTYZ`(QTMi>g zSw$oqQy%ftXA8C?KzcR=eJtNW(5?Hp)}blGQSkUlM^)`l9x5E&c*Rl^PE2<4?85ZK z*FN|du-d=<#o){L{x8P{J1he`rww<72X@aG?#T}9DI0#(9{6f#xNkJDZ((?FVc_86 zF`aOwYaSsLCryePa^a`>Y4xLhVBf;L5b%vrW!#DlQ(WuW>DYv1bvpCoXdBLk7qebI zVlg)LfcSm`WE8*7i5(bpNkQ~)J8*BrS`P#Y;L)rNYeV6=}aWT_Nj# zCPX(jb2>P*NkYWS7=4>_5a}qhu9FE^6TiCx=?~^H+|FP874D7IyncZ3!mFjs=U{S&M?F0N=;2-vhp9D=hyV&#Eo2)Z8DyHyF@pydXfqRYx==>aU8jhED zXdXR7sm_pjqf-s%2x?P<+LUyyYx2bB<5(a4JGcVZx~W6=yI?9)f<&95Z2Wid=56{u%SyIHFY@lvSs_%!oN1jTiCRMQjYeYmaGF8a-e=# z>SJ;AXpi-jiRx1gOKPydxJueib&4q!9bQjLo_sS0Jzcd=7%?@eoU79bL@VGacF+yn zIP=Ml^Y1{wGjU_D7ZW^`2v>r&-OT_kHOncwTGLyCnAhtRX1y1nT4s5RW=o@mRugY7 z`3TuF7d1Z)*a|9cyeze|NtrKi%`aGt-Hm@G9ghn=&Z`I!wSG|&VFDR zwXQ#PmA%6%D4gB}3JY@2tBeU?EGm!IewbSxuBdeLwTBV=m`x@Tc@kQRO8FM0{Rr9{;fcl1N8eG9LV4?6 zH?Do;b;NPc=Nv{qgEkV*)SIHyn?)-HXAt9JBD`tLx?_$>_Xe6Y2oebu*Qk7rr4-8PEtS3OIUca7t_~MF4UO zsbDvpJ^vg$CQT5UzrcrIRM2SqHO|?WtRs=x9ub5oHR>LfpADu%I2FcWNS`c)F<=~L z^ulQt+bs1zKBU83_iED_T+kFC-Z#|^b391E*i z=`ozVw*^H*b%NjcjIhm?xb^hoqdqun;Zj} z$DqN!OtpM;!KS?yn}J@}WR$|FA~jg`{#4RGuqakH6zW!)rdcmBf~Jkh@)CimhTw zKG~vYe=ZRuSRl1K9|3Tvr5A_CeBiBFqVv6(_4(!(|DNrR3&?(oy9-*am=bdCu1v>k zdM89Z-H*wAB4^MB+?ZogNJ^Xhx{*gD*%uIv_5ey5g}v|2Sw%m7!?#53kahA=3R(Fj zeAak`uJ9cgfHhEho50SEh)i>&^J8Xz>bv!@u~=z``hy93C?U6td)Ka%jTLqlc+Cd zSwTQFSG2QKWw#*0(k4xyj?v=x%KIJh+)Em-;k8bk$Ww3MBW>t~XxNJRm8kJ~o@X2Z z2izpO>5Rf(UypMpSC|w@D{OyMv`Q~368MReK10kx!Tv(2w{%=TmGM20v3M7Bo(T62 zx;5S+wVPF}o@iaY%5KpbmQtNCe5nlDR^HzYyv%rD>87j^BAKAs%qsor zqOB6*fOhIcaO?x|6gKp(9Uo5GRN^~&*+E9>8kj3&Ezo=2lvksW{!S>tH@&ZYNbg$| z)I!w`PE_|woA-SKWJu@|+-pp~dQ=$S--OaJX%+L|&!m3%sz?-5{bx&;{FQoD9Ou3C@XHD8C zX_nQXLYVUHKIe$@-Q|u|&8T5*UD}#>W$4(A(tVezduH?p%&EI;`wu(LVp=OWr@N}x znL;jq3@M9!`=#`I-}m2NC}-kUPM7@{)&8@aT^9FVx$N+1L0s_2;0y zEdFy)*{`?X|9l@hb7l8N+0lFLf!UUKL=gMzjw>7{{B*S z{QLXyF@wq}rr=X-ZKt?)PVuTR2nI8VwlPTVFo0D6GQj}3Hh|&|KvjiNGni4gjq%(L zBT5B`3kDt=w*k#|fL1C@=YyH-+nAhpnA}vDy@Hv2+n57(m_t-pE(fzjx3R?UuuxQ3 z6N6b(+gPvfux6{Uwm130>%zIjVM7N{W*?Ic%pLP&D zM-~vOo43=K^%2CeUZ@qStQJUQZ`|SLvQ@}|s)fqp)f8>-9FsHs1vdMhJOcaQRogd} z)v{*Y_$VU_otK(H+lE3Na%6+v?S8nyWxp+ZZH6A2qZYv@e{INuJHyP>ILp*b3;}T| zI_VsfA(?wyoD~XB_Y|i26s>p_=h~0@XF&73RYWSKGE}X0M)nwP1sV@Vi=+%2kk4{5 zz>hym@tbYquYqMG&Hxby-KW9F;qq5LgMbSK68e3)L%& zWpOYWj}3Ecq-u>03x0ln`i+dN3rOjsBD^_FQ64*PXGLVUQab*<_5p!6u(U|P5ZXDfv9@|jm4ix zW901A9zYwgK#*p`2KQ!9y{WBIAx~K;!UTXr{$Vpdke-Y=%DnjirNc zBhZory6+7-fy4lF9NnEJefuT@`^t88gwM*ti~Mv0>MNnsgc`axO~9;=eX%;(R1Pbb zfXju}%W(WFu}_Bx2(nw(^f z0lh%~$cB_wGp2mCd`1G#nMnvkD5Yd87C{1t8-_mksU_IdHVU%D=l!%Xe4Z#D$E^05 z3N0Z2wcvS81htznBEC8;zPg;+JFI+sGjLMGF#L5$+^dYB1=$ThQvrlLKjiy!)B{az&;f{eAsUG7+or6ZVJerT{Eu zf*4N~>V+sIk9LPonEBlq#VckZ${jyrVcn%TrOnzB@99|oYO+F0qmfOMoJhhM?OPr z@+GrMOBqb)9c8U4TW9@Y3yJL#_&c!z8RKQ4V8zJ+_DbPKsJ^uYi09p<=a~206JdIz zjt1}4*&y6;D-j{uk(XZ?U+02f8x3=6mpMTMC1k?{Bw47s+d>!9XdC!%Ml(j{5o9w5oaPD;AG;MTx@zLnb=;XIq%~npm=k|C z{hy4QW;k5FqSA)^HIH0rVT$rYhRx59^}{vw#20Q#9fJY=}4TA;@3 z%%0Lyk)s%JP(E`75Mq2qDCW06C|D3yPskRmCXe7%=H-+Dxd|gazN!VjT%{f!uid z+EeQ#xIjYfnHNF>OVs(fZ)(c}oi)F25VZ1?;4n%jBmWMKm=9yrL zHxHs-OLHgZOESw31_%Vxgn}tT%{XY=0=P2fw}$N9$kp?5&~^_%rXad#SM_=Tx-|h( z#Ra*?F?=r0i_~rl24K3*RbFAKywjm~Vza6`y$QM|eFKM9llG{Y?FnFdb*XqkwfIpz zTjdojAoReis>=PI;;-Lp=Jn;p@u^hd8MztRVHoR0;wR}`F=V0qz~u>-Q#aUF~_l3g=4Y%U%i5DU)5)z4N6 zDpihAEM%f`#o{Ui^-&?1=b*fYknkJsmT$0Oe8u1P*T0v<peUo!W zM(>3@Q0q}kJ5QSp9-fnpb}$t~uE@WSYZGBQmsqYLwgNugHxH*?bV!^QrrwrWyl0{o zJEziyk8cyhKB{qo*S5M_nzx)!f$G0uD}-_Ncv7!mU%3tUcO&l{CpY!sATNzgp*qtK z-$a5k4~oT|#vISV1(*j+sPm3!kF49%)<30-oWWB+ZK0zbEqF9U&%?;+sT^Rzi2CM@ z-kt~qn|15Eo%3QqAGDR?n%AduaZGAEhZokan zK;7V^%#Av(;Xp1w@Om)UKh1BnHw0HFWi@@fHyVDx##0WOdv_RdA&O8@>2^nw(jX|F%(xf3{}*a~)rBNE@kd9l%` za@Qn2owqHd)_?D&b=F`nWOcAxxA*JSSg7@1Kyg~=!R&q{Bu;d+P>jMGRmMA5%M)Yx zBjI?pW$NIK9n|*p$C7vIdz)WGztHSH=&CJzyF9$GP8^V{4Am$dx_-vn$UP{Ic4mTn zH1XHR@#7;C>fwVg>h4b+UGsiUyKB+XgWWgzETz~aaUMMvLA6&pH4>nwsOcwmAe)x_ zf7yYIyPQyZmTP;;f7^i)XJhv7PjKKVXO88x$>AL0tqUA=uS#64^nTC3axA9Jocyf) zvDfzD>8-QkN}Jac9Q}apYW_IO^N&V>XB@fSw&Xr2hTGF}b#q_>wie?`W4!MD@fSO%r z!|7yYNi>8SQ^mRG2oAvfWRHB-x7s|BOWhxyTCiQtaz+2DsCLIU^3o}Jaf;zimpQ!1 zUbjLcK1g6()YhuBkMr{?s1^&F-sNngYh1SkLwLw2j{*`Ii!asSC1y9s@uDU{z=8s5 z;N(Y=Cal1+Itow9GtZ03TSs1Zp?O}S@y^Yg6i3LH)pzt4mzX!ndqUCbLU}&8>~lq) zsJfXn|GVcjL*$Gau5@CsvBw4Bb9Pq+zw?&67}!tUwv;z1%RFOdGF5rzb7Qu&GK^-# zzs^g0k5qy{MY_K&nY`$bI`}Duy0%1Dyw7O-U8#RU&?!5I!x>Ia6N%pB8ZLqW<#8%P zp5;SgLH_yu#=i96HYU}r>~8(*qX8(vu#ClCo12@wJxiVyRt>xu4MiJu9X;j{^Q@`on&L>nxYY2x!KwQkW7Ea-oFbBY z_@79oK6=uTP}q5&m}#wX(ouYP)|+21`guAvQP6@{q~yqn@8gKJ#f1*#OJ+Pvz-T8M zPnuN8^wQ#;i)FJC)4ewqn4~hJs6@nr<;*NeRVeo(RId=>BMg0?HyR-2=P z{X){6IGsIb%KOD~qQKF%yvB~z7u3z3R2XhQP7&mo0X9th|FOPHCsd#K|D84b|Evp- zyq0+4ibcj=y?iw(gqj$3g%%of^@QdNx<>gI+2r!Bd$9W@4r0&(Qi-Ez|h#=?xvin@T z1Dw44PV7EwvX6s@kF7h|#@)-x)x*}s)6&Jw+R@F*&c)2>qM4l&(auT7*&c6e?`UIc zdfw64+RoU@7XKfWkC-L;@W{8A9a7jYSTBh~?C)W43D0ZXJ z06lz5E{trNrG*=o5as#bi}=$|fD28A|4W|OKgs$hSqeJm)U@;vTKe)@XXP~X6xDV9 z=K2&>p_R<)6|2J0O^uN&~%HN*Yf1^i)_R7(8k-yQSX~*Fk z%X(86oxFE~9=VRBNt)bme%;|Sdx9R_Z~6bwqgM?#9!70`s!7-WvNRC%Yl+FU zsKxb6B7c=+b9ei@M_JM)rKS(=zJFY#erf5+gMXn%Nd(VpzJMy5M+)%{_b%l(vy@*k zd+6y8_@9hTIz!-z8F>1i`uPvH@gH74|BJC9{4H`W4@x?XPq_{!b4f$uiYzN}K>`Su zyrPhIxD=^>aT~@IgScBxMR(s%QWQP<_l4Bon-*&Z{ZGaw<3!_>KE?J=uKvl@e|WC+ z|6M&37>6jB@isS9BD*9}pH;OIdBy;y*UUOCK6XP))K=mLuO}fvQn`R0W$kf-NUIO~ zi~Nt{=naP86K##-pFsT+sQ>Ulp-y<)uPd1UQrYG830cd-$vjM2{vz#=;Zy-dKl(|d mN2f{&Q^liItB13pW(L>^>-WThWv4Wn+*eQ2gp=dn+5ZKZjsu|p literal 0 HcmV?d00001 diff --git a/docs/design/agent-tasks-official-preview.png b/docs/design/agent-tasks-official-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..799bffdbac0a209c08eeba1fd1e94f9b29bc015f GIT binary patch literal 101853 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%0D(r1ePC<~6cpFDu~902zQq=~oz*IQPZgQp|UJ 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 literal 0 HcmV?d00001 diff --git a/docs/remote-access.md b/docs/remote-access.md new file mode 100644 index 000000000..655fd5f78 --- /dev/null +++ b/docs/remote-access.md @@ -0,0 +1,204 @@ +# Remote Access with Tailscale Funnel + +This guide explains how to make a `stackchan-mcp` gateway reachable when the +StackChan device and gateway host are on different networks. + +The recommended first path is Tailscale Funnel: + +- no firmware feature work is required +- the ESP32 connects to a public `wss://...ts.net` gateway URL +- the gateway still verifies the ESP32 bearer token with `STACKCHAN_TOKEN` +- photo uploads can use a second Funnel URL through `VISION_URL` and are + protected with `VISION_TOKEN` or, by default, `STACKCHAN_TOKEN` + +Tailscale Funnel publishes local services on a device in your tailnet to the +public internet over HTTPS. It requires Tailscale CLI support, MagicDNS, HTTPS +certificates, and a Funnel node attribute in the tailnet policy. Funnel can +listen only on `443`, `8443`, or `10000`, so this guide uses `443` for the +WebSocket gateway and `8443` for the photo capture endpoint. + +Reference: + +- [Tailscale Funnel](https://tailscale.com/docs/features/tailscale-funnel) +- [tailscale funnel command](https://tailscale.com/docs/reference/tailscale-cli/funnel) +- [Tailscale Funnel examples](https://tailscale.com/docs/reference/examples/funnel) + +## Network Shape + +``` +ESP32 StackChan + │ + │ wss://..ts.net/ + ▼ +Tailscale Funnel :443 + │ + │ forwards to local TCP + ▼ +stackchan-mcp gateway WebSocket :8765 + +ESP32 camera upload + │ + │ https://..ts.net:8443/capture + ▼ +Tailscale Funnel :8443 + │ + │ forwards to local HTTP + ▼ +stackchan-mcp capture server :8766 +``` + +## Security Notes + +Funnel makes the selected service public. Keep `STACKCHAN_TOKEN` set and use a +strong token for the WebSocket gateway. + +The `/capture` endpoint is a separate HTTP upload endpoint. Keep +`STACKCHAN_TOKEN` set so the gateway can pass a bearer token to the ESP32 for +photo uploads, or set `VISION_TOKEN` if you want a separate capture token. If +you expose capture with Funnel, still treat the URL as public while the Funnel +listener is enabled, turn it off when it is not needed, and do not expose +captured photos or other user data in git. + +Do not publish personal tokens, LAN IP addresses, WiFi credentials, `.env` +files, captures, or local firmware override files. + +If you only need access from devices that already run Tailscale, use Tailscale +Serve or a normal tailnet address instead of Funnel. The ESP32 firmware does +not currently run a Tailscale client, so the StackChan device itself needs a +public Funnel URL unless a separate network layer routes it into the tailnet. + +## Gateway Configuration + +In `gateway/.env`, keep the gateway listening locally and set both the ESP32 +auth token and the public capture URL: + +```bash +STACKCHAN_TOKEN= + +HOST=0.0.0.0 +WS_PORT=8765 +CAPTURE_PORT=8766 + +VISION_URL=https://..ts.net:8443/capture +# Optional: leave empty to reuse STACKCHAN_TOKEN. +VISION_TOKEN= +``` + +`VISION_URL` is the full URL sent to the ESP32 for `take_photo` uploads. Use it +for remote tunnel setups. `VISION_TOKEN` is sent to the ESP32 as the capture +upload bearer token; if it is empty, the gateway reuses `STACKCHAN_TOKEN`. +`VISION_HOST` remains useful for LAN-only setups where the capture URL is +`http://:8766/capture`. + +Start the gateway: + +```bash +cd gateway +uv run python -m stackchan_mcp +``` + +## Funnel Setup + +On the same host as the gateway, enable two Funnel listeners. + +Use port `443` for the WebSocket gateway: + +```bash +tailscale funnel --bg --https=443 http://localhost:8765 +``` + +Use port `8443` for the HTTP capture server: + +```bash +tailscale funnel --bg --https=8443 http://localhost:8766 +``` + +Check the published URLs: + +```bash +tailscale funnel status +``` + +The expected public endpoints are: + +- WebSocket: `wss://..ts.net/` +- Capture: `https://..ts.net:8443/capture` + +To stop the listeners: + +```bash +tailscale funnel --https=443 off +tailscale funnel --https=8443 http://localhost:8766 off +``` + +## Device Configuration + +Configure the firmware's WebSocket URL and bearer token: + +```text +websocket.url = wss://..ts.net/ +websocket.token = +``` + +For developer builds, these can be provided through the existing Kconfig +fallbacks: + +```text +CONFIG_DEFAULT_WEBSOCKET_URL="wss://..ts.net/" +CONFIG_DEFAULT_WEBSOCKET_TOKEN="" +``` + +To prefer a LAN gateway when the StackChan and gateway host are on the same +network, while still keeping a remote Funnel path for travel, configure the +local URL as primary and the Funnel URL as fallback: + +```text +CONFIG_DEFAULT_WEBSOCKET_URL="ws://:8765/" +CONFIG_DEFAULT_WEBSOCKET_FALLBACK_URL="wss://..ts.net/" +CONFIG_DEFAULT_WEBSOCKET_TOKEN="" +``` + +At runtime the firmware tries the primary URL first. If the TCP/WebSocket +connection fails, or if the stackchan-mcp server hello does not complete, it +tries the fallback URL next. Leave the fallback empty for local-only or +Tailscale-only setups. + +For existing devices with stale NVS values, use the documented +`CONFIG_FORCE_DEFAULT_WEBSOCKET_URL=y` flow from the top-level README. + +## Validation + +After the gateway, Funnel, and device settings are in place: + +1. Start the gateway. +2. Start both Funnel listeners. +3. Reboot or reset the StackChan device. +4. Press the StackChan main button to start a chat session. The firmware opens + the WebSocket connection when a session starts; an idle device may not appear + in `get_status` immediately after boot. +5. Call `get_status` from the MCP client and confirm `connected=true`. +6. Call `get_device_info`. +7. Call `take_photo` and confirm the capture reaches the gateway. + +If the device and gateway are on the same physical LAN during validation, this +still verifies that the firmware uses the public Funnel `wss://` URL, bearer +auth, MCP initialization, and the authenticated capture callback. It does not +prove behavior across every remote network path. For a stronger end-to-end +remote proof, place the StackChan device on a different network, such as a phone +hotspot, while keeping the gateway host behind Funnel. + +If `get_status` works but `take_photo` fails, the WebSocket path is working but +the capture callback URL is wrong. Re-check `VISION_URL`, the `8443` Funnel +listener, and whether the capture URL ends with `/capture`. + +If `take_photo` is not needed for a remote session, leave the `8443` Funnel +listener off and use only the WebSocket listener. + +## Limitations + +- Funnel bandwidth limits are managed by Tailscale and are not configurable. +- Latency depends on the device WiFi, the gateway network, and Funnel relay path. +- The future Opus audio stream may need lower and more stable latency than + simple control and photo capture. +- A firmware-native WireGuard or Tailscale-style client would be a separate + follow-up feature, not part of this guide. diff --git a/docs/superpowers/plans/2026-11-11-official-stackchan-agent-dashboard.md b/docs/superpowers/plans/2026-11-11-official-stackchan-agent-dashboard.md new file mode 100644 index 000000000..3a813e5b4 --- /dev/null +++ b/docs/superpowers/plans/2026-11-11-official-stackchan-agent-dashboard.md @@ -0,0 +1,26 @@ +# 官方 StackChan Agent 看板实施清单 + +本清单记录最终实施范围。架构详见同目录设计规范,实测证据见 `docs/agent-tasks-validation.zh-CN.md`。 + +- [x] 网关提供受 Bearer 令牌保护的 `/agent-dashboard`,复用 MCP 状态存储。 +- [x] 新增官方 Mooncake App,在 Launcher 提供 AGENT TASKS 独立入口。 +- [x] 320×240 双栏:Codex 左、Claude 右,图形标识、中文状态、阶段和任务。 +- [x] 每栏独立滚动,任务按进行中、待办、已完成稳定排序。 +- [x] 工作转圈、动态省略号与进行中标记动画,完成和离线停止。 +- [x] Setup 配置地址和隐藏令牌,软键盘编辑、连接测试、保存与取消。 +- [x] 独立 NVS 命名空间与可选本机默认配置,保留已有非空字段。 +- [x] 后台 HTTP 轮询,超时与响应大小限制,失败保留最近有效快照。 +- [x] Codex Desktop 生命周期监视与显式计划同步;Claude transcript 任务监视。 +- [x] macOS 安装器、中文使用说明、字体许可与界面预览。 +- [x] 网关完整测试与 Ruff;固件宿主 CTest;官方 ESP-IDF 6.1 构建。 +- [x] USB 刷写、独立校验与正常启动,蓝牙只读连接验证。 +- [x] 用户确认实机双栏任务与动画正常。 +- [ ] 实机单独验收长清单滚动、返回头像与网关断线恢复。 +- [ ] 验收新 Claude 模型会话产生任务事件的实时更新。 + +## 本次仓库整合 + +- [x] 官方固件作为主项目,网关保持 `gateway/` 独立进程。 +- [x] 同仓保留网关测试、依赖锁、安装脚本及上游许可证。 +- [x] 排除个人凭据、会话、备份及构建产物。 +- [ ] 在整合目录重新运行检查并推送 `codex/agent-tasks-dashboard`。 diff --git a/docs/superpowers/specs/2026-11-11-agent-tasks-official-stackchan-design.md b/docs/superpowers/specs/2026-11-11-agent-tasks-official-stackchan-design.md new file mode 100644 index 000000000..68ac06601 --- /dev/null +++ b/docs/superpowers/specs/2026-11-11-agent-tasks-official-stackchan-design.md @@ -0,0 +1,68 @@ +# StackChan Agent 待办看板设计 + +## 目标 + +在 M5Stack 官方 StackChan 固件中新增一个 Mooncake 应用,在 320×240 屏幕上查看 Codex 和 Claude 的状态、阶段及待办。左栏固定为 Codex,右栏固定为 Claude。Agent 通过 `stackchan-mcp` 的 MCP 服务提交状态;设备离线时保留最近任务并显示离线状态。头像和原语音交互不变。 + +固件以 [M5Stack/StackChan](https://github.com/m5stack/StackChan) 为基线。`stackchan-mcp` 继续作为独立网关和 MCP 状态服务,不把其 fork 固件作为设备固件。 + +## 架构 + +```text +Codex / Claude adapters + │ MCP Streamable HTTP + ▼ +stackchan-mcp gateway ── AgentStatusStore + ▲ │ + │ HTTP GET └── latest two-agent snapshot + │ (1 second polling) +M5Stack official StackChan + Mooncake Agent Tasks app +``` + +固件通过新增的独立 Mooncake App 显示看板,并由官方 Launcher 展示其应用图标。Agent 不连接设备。设备读取状态使用网关的只读 HTTP 接口;MCP 仍是状态写入入口。该边界适配官方固件当前的应用及联网结构,也避免依赖 `stackchan-mcp` fork 内的设备 WebSocket MCP 协议。 + +## 网关接口 + +- `agent_update_snapshot` 接受单个 Agent 的完整快照,沿用 `AgentStatusStore` 的会话隔离、序号拒绝、文本长度限制及 45 秒租约。 +- `agent_get_dashboard` 返回两个 Agent 的最新完整视图,顺序固定为 Codex、Claude。 +- 新增受现有 Bearer token 保护的 `GET /agent-dashboard`,供固件轮询同一只读视图。响应不包含 prompt、文件路径、工具参数、消息正文或模型推理内容。 +- 不新增设备 WebSocket 推送、设备队列 publisher 或 MCP 导航工具。设备网络中断时保留缓存视图;恢复后下一次轮询自动取得最新快照。 +- JSON 响应字段为 `agents[]`,每项包含 `agent`、`online`、`stale`、`status`、`stage`、`tasks[]`。状态值为 `idle`、`working`、`waiting`、`completed`、`failed`;任务状态值为 `pending`、`in_progress`、`completed`。 + +## 官方固件应用 + +- 在 `firmware/main/apps` 新增 Agent Tasks Mooncake App,并在 `apps.h`、`main.cpp` 注册;Launcher 提供独立入口和 Agent 图标。 +- UI 采用深色、高对比、细分隔线的双栏布局。每栏显示图形 Agent 标识、名称、中文状态、短阶段和任务。每栏同时最多显示三条任务,任务较多时在本栏独立滚动。阶段和任务文字进行长度限制。 +- 页面提供返回 Launcher 的官方 HomeIndicator;不在头像 App 上拦截触摸,也不更改音频、头部触摸或现有页面手势。 +- LVGL 创建、更新和销毁遵循官方 `LvglLockGuard`。HTTP 请求运行在独立 worker,不在 UI 更新或持锁区间执行阻塞网络操作。网络恢复后由 worker 将最新完整快照交给 App,随后在 UI 生命周期中更新 LVGL。 +- 空清单显示“暂无待办任务”。来源离线或租约过期时保留最后任务,并标示“离线”或“已过期”。设备暂时无法连接网关时显示上一次数据,不伪造进度。 + +## 设备配置 + +在官方 Setup App 中增加 Agent 看板设置页,包含网关只读接口地址和 Bearer token。配置保存到设备 NVS;token 输入默认隐藏,日志不打印 token。设置页提供软键盘、连接测试和保存/取消操作。通用源码默认地址为空;可用本机脚本生成被 Git 忽略的默认地址和令牌,首次加载时回填空字段并持久化,已有非空值优先。未配置地址时看板显示配置提示,不发起外部请求。 + +设备以约 1 秒间隔轮询 `GET /agent-dashboard`,单次 HTTP 操作超时为 5 秒,响应体上限为 8 KiB,并不跟随 HTTP 重定向,避免 Bearer token 被转发到其他地址。网关返回带 `Content-Length` 的 JSON 响应。地址支持家庭 LAN 的 HTTP 和 HTTPS。一次失败不清空缓存;重复失败显示连接异常状态。 + +## 事件适配器边界 + +- Codex Desktop 使用本机实验 rollout 监视器,仅接收 `originator` 明确为 `Codex Desktop` 的主会话,读取回合开始、完成和中断事件。已观察真实事件,但它不是稳定的官方桌面事件订阅 API。 +- Codex 待办使用主会话显式 `codex-plan` 入口,同会话计划与生命周期由同一个监视器合并。未观察到桌面原生计划事件时,不从消息正文猜测任务。 +- Claude Code 使用本地 transcript 增量监视器,成功的 TaskCreate、TaskUpdate、TodoWrite 更新清单,结束回合保留任务;不依赖全局 Hook。既有会话回放已验证,新模型会话实时验收待完成。 +- 只展示最近活动的主会话,不混入子 Agent、其它会话或聊天正文。一个 Agent 栏只使用一个上报来源。 +- 每栏稳定排序为“进行中 → 待办 → 已完成”;在线工作时显示转圈、省略号和任务指示动画,完成或离线时停止。 + +## 验证和验收 + +- 网关测试覆盖 MCP 更新、旧序号拒绝、双 Agent 输出顺序、45 秒过期、HTTP Bearer 授权、错误输入和不泄露额外字段。 +- 固件 host tests 覆盖两列映射、状态标签、UTF-8 截断、空清单、离线保留任务及非法快照拒绝。 +- 用官方仓库文档所列 ESP-IDF v6.1 流程构建;确认新增 App、Setup 配置和依赖不破坏官方 Launcher 与现有应用。 +- 在设备上检查 320×240 双栏排版、滚动、返回、网络断开/恢复、状态更新,以及 Avatar、语音触摸和头部手势未受影响。 +- 刷写只使用官方固件仓库的标准 CoreS3/StackChan 指引。先确认生成镜像和目标板型;下载模式由 USB 完成刷写,BLE 用于启动后广播发现,不作为刷写通道。 + +## 实施顺序 + +1. 在 `stackchan-mcp` 中完成并验证 MCP 状态工具及只读 HTTP 快照接口。 +2. 在官方固件中新增 App、纯数据模型、设置页配置持久化及异步轮询。 +3. 完成网关/固件契约测试、官方 ESP-IDF 构建和实体设备验收。 +4. 按真实生命周期与任务事件证据启用本机实验适配器,明确记录其限制与尚未验收的实机行为。 diff --git a/firmware/main/apps/app_agent_tasks/agent_tasks_config.cpp b/firmware/main/apps/app_agent_tasks/agent_tasks_config.cpp new file mode 100644 index 000000000..11f7e6cde --- /dev/null +++ b/firmware/main/apps/app_agent_tasks/agent_tasks_config.cpp @@ -0,0 +1,67 @@ +#include "agent_tasks_config.h" +#include +#if __has_include("agent_tasks_local_defaults.h") +#include "agent_tasks_local_defaults.h" +#else +#define AGENT_TASKS_DEFAULT_URL "" +#define AGENT_TASKS_DEFAULT_TOKEN "" +#endif + +namespace agent_tasks { +namespace { +constexpr char kNamespace[] = "agent_tasks"; +constexpr size_t kUrlMax = 255; +constexpr size_t kTokenMax = 256; + +bool read_string(nvs_handle_t handle, const char* key, size_t max, std::string& value) { + size_t size = 0; + esp_err_t err = nvs_get_str(handle, key, nullptr, &size); + if (err == ESP_ERR_NVS_NOT_FOUND) return true; + if (err != ESP_OK || size == 0 || size > max + 1) return false; + value.resize(size); + if (nvs_get_str(handle, key, value.data(), &size) != ESP_OK) return false; + value.pop_back(); + return true; +} +} + +bool load_config(Config& config) { + nvs_handle_t handle; + auto err = nvs_open(kNamespace, NVS_READONLY, &handle); + if (err == ESP_ERR_NVS_NOT_FOUND) { + config = {AGENT_TASKS_DEFAULT_URL, AGENT_TASKS_DEFAULT_TOKEN}; + return config.url.empty() || save_config(config); + } + if (err != ESP_OK) return false; + Config loaded; + const bool ok = read_string(handle, "url", kUrlMax, loaded.url) && + read_string(handle, "token", kTokenMax, loaded.token); + nvs_close(handle); + if (!ok) return false; + bool use_defaults = false; + if (loaded.url.empty() && AGENT_TASKS_DEFAULT_URL[0]) { + loaded.url = AGENT_TASKS_DEFAULT_URL; + use_defaults = true; + } + if (loaded.token.empty() && AGENT_TASKS_DEFAULT_TOKEN[0]) { + loaded.token = AGENT_TASKS_DEFAULT_TOKEN; + use_defaults = true; + } + config = std::move(loaded); + return !use_defaults || save_config(config); +} + +bool save_config(const Config& config) { + if (config.url.size() > kUrlMax || config.token.size() > kTokenMax || + config.url.find_first_of("\r\n") != std::string::npos || + config.token.find_first_of("\r\n") != std::string::npos) return false; + nvs_handle_t handle; + auto err = nvs_open(kNamespace, NVS_READWRITE, &handle); + if (err != ESP_OK) return false; + err = nvs_set_str(handle, "url", config.url.c_str()); + if (err == ESP_OK) err = nvs_set_str(handle, "token", config.token.c_str()); + if (err == ESP_OK) err = nvs_commit(handle); + nvs_close(handle); + return err == ESP_OK; +} +} diff --git a/firmware/main/apps/app_agent_tasks/agent_tasks_config.h b/firmware/main/apps/app_agent_tasks/agent_tasks_config.h new file mode 100644 index 000000000..bbb82fdb7 --- /dev/null +++ b/firmware/main/apps/app_agent_tasks/agent_tasks_config.h @@ -0,0 +1,8 @@ +#pragma once +#include + +namespace agent_tasks { +struct Config { std::string url; std::string token; }; +bool load_config(Config& config); +bool save_config(const Config& config); +} diff --git a/firmware/main/apps/app_agent_tasks/agent_tasks_model.h b/firmware/main/apps/app_agent_tasks/agent_tasks_model.h new file mode 100644 index 000000000..95c6ef41c --- /dev/null +++ b/firmware/main/apps/app_agent_tasks/agent_tasks_model.h @@ -0,0 +1,95 @@ +#pragma once + +#include +#include +#include +#include + +namespace agent_tasks { + +enum class AgentStatus { Idle, Working, Waiting, Completed, Failed }; +enum class TaskStatus { Pending, InProgress, Completed }; +constexpr size_t kMaxTasks = 12; +constexpr size_t kMaxStageCodepoints = 24; +constexpr size_t kMaxTaskCodepoints = 64; + +struct Task { + std::string id; + std::string text; + TaskStatus status = TaskStatus::Pending; +}; + +struct AgentView { + AgentStatus status = AgentStatus::Idle; + std::string stage; + std::vector tasks; + bool online = false; + bool stale = false; +}; + +struct Snapshot { + AgentView codex; + AgentView claude; +}; + +inline bool valid_utf8(const std::string& value) { + for (size_t i = 0; i < value.size();) { + const auto a = static_cast(value[i]); + const size_t n = a < 0x80 ? 1 : a >= 0xC2 && a <= 0xDF ? 2 : + a >= 0xE0 && a <= 0xEF ? 3 : a >= 0xF0 && a <= 0xF4 ? 4 : 0; + if (!n || i + n > value.size()) return false; + for (size_t j = 1; j < n; ++j) { + const auto b = static_cast(value[i + j]); + if ((b & 0xC0) != 0x80) return false; + if (j == 1 && ((a == 0xE0 && b < 0xA0) || (a == 0xED && b >= 0xA0) || + (a == 0xF0 && b < 0x90) || (a == 0xF4 && b >= 0x90))) return false; + } + i += n; + } + return true; +} + +inline size_t codepoints(const std::string& value) { + size_t result = 0; + for (unsigned char c : value) if ((c & 0xC0) != 0x80) ++result; + return result; +} + +inline const char* status_label(const AgentView& view) { + if (view.stale) return "已过期"; + if (!view.online) return "离线"; + switch (view.status) { + case AgentStatus::Idle: return "空闲"; + case AgentStatus::Working: return "工作中"; + case AgentStatus::Waiting: return "等待中"; + case AgentStatus::Completed: return "已完成"; + case AgentStatus::Failed: return "失败"; + } + return "未知"; +} + +class Model { +public: + bool replace(const Snapshot& next) { + if (!valid(next.codex) || !valid(next.claude)) return false; + snapshot_ = next; + return true; + } + const Snapshot& snapshot() const { return snapshot_; } + +private: + static bool valid(const AgentView& view) { + if (static_cast(view.status) < 0 || static_cast(view.status) > 4 || + view.tasks.size() > kMaxTasks || !valid_utf8(view.stage) || + codepoints(view.stage) > kMaxStageCodepoints) return false; + for (const auto& task : view.tasks) { + if (task.id.empty() || task.id.size() > 128 || !valid_utf8(task.text) || + codepoints(task.text) > kMaxTaskCodepoints || + static_cast(task.status) < 0 || static_cast(task.status) > 2) return false; + } + return true; + } + Snapshot snapshot_; +}; + +} // namespace agent_tasks diff --git a/firmware/main/apps/app_agent_tasks/agent_tasks_poller.cpp b/firmware/main/apps/app_agent_tasks/agent_tasks_poller.cpp new file mode 100644 index 000000000..822ea9a20 --- /dev/null +++ b/firmware/main/apps/app_agent_tasks/agent_tasks_poller.cpp @@ -0,0 +1,162 @@ +#include "agent_tasks_poller.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace agent_tasks { +namespace { +constexpr int kTimeoutMs = 5000; +constexpr size_t kMaxResponse = 8192; + +bool parse_agent(cJSON* object, const char* expected, AgentView& view) { + auto* agent = cJSON_GetObjectItemCaseSensitive(object, "agent"); + auto* status = cJSON_GetObjectItemCaseSensitive(object, "status"); + auto* stage = cJSON_GetObjectItemCaseSensitive(object, "stage"); + auto* online = cJSON_GetObjectItemCaseSensitive(object, "online"); + auto* stale = cJSON_GetObjectItemCaseSensitive(object, "stale"); + auto* tasks = cJSON_GetObjectItemCaseSensitive(object, "tasks"); + if (!cJSON_IsString(agent) || strcmp(agent->valuestring, expected) || !cJSON_IsString(status) || + !cJSON_IsString(stage) || !cJSON_IsBool(online) || !cJSON_IsBool(stale) || !cJSON_IsArray(tasks) || + cJSON_GetArraySize(tasks) > static_cast(kMaxTasks)) return false; + const char* statuses[] = {"idle", "working", "waiting", "completed", "failed"}; + bool found = false; + for (int i = 0; i < 5; ++i) if (!strcmp(status->valuestring, statuses[i])) { + view.status = static_cast(i); found = true; break; + } + if (!found) return false; + view.stage = stage->valuestring; + view.online = cJSON_IsTrue(online); + view.stale = cJSON_IsTrue(stale); + for (auto* item = tasks->child; item; item = item->next) { + auto* id = cJSON_GetObjectItemCaseSensitive(item, "id"); + auto* text = cJSON_GetObjectItemCaseSensitive(item, "text"); + auto* task_status = cJSON_GetObjectItemCaseSensitive(item, "status"); + if (!cJSON_IsString(id) || !cJSON_IsString(text) || !cJSON_IsString(task_status)) return false; + Task task; + task.id = id->valuestring; + task.text = text->valuestring; + if (!strcmp(task_status->valuestring, "pending")) task.status = TaskStatus::Pending; + else if (!strcmp(task_status->valuestring, "in_progress")) task.status = TaskStatus::InProgress; + else if (!strcmp(task_status->valuestring, "completed")) task.status = TaskStatus::Completed; + else return false; + view.tasks.push_back(std::move(task)); + } + return true; +} + +bool fetch(const Config& config, Snapshot& result, const std::atomic_bool& stop) { + if (config.url.compare(0, 7, "http://") && config.url.compare(0, 8, "https://")) return false; + // Mooncake does not start Wi-Fi at boot. Reuse the official network + // manager and saved credentials before making the first HTTP request. + auto& wifi = WifiManager::GetInstance(); + if (!wifi.IsConnected()) { + if (SsidManager::GetInstance().GetSsidList().empty() || wifi.IsConfigMode()) return false; + if (!wifi.IsInitialized()) Board::GetInstance().StartNetwork(); + else wifi.StartStation(); + const int64_t deadline = esp_timer_get_time() + int64_t(kTimeoutMs) * 1000; + while (!wifi.IsConnected() && !stop && esp_timer_get_time() < deadline) + vTaskDelay(pdMS_TO_TICKS(100)); + if (!wifi.IsConnected() || stop) return false; + } + std::string url = config.url; + while (!url.empty() && url.back() == '/') url.pop_back(); + url += "/agent-dashboard"; + auto network = Board::GetInstance().GetNetwork(); + if (!network) return false; + esp_log_level_set("HttpClient", ESP_LOG_WARN); + auto client = network->CreateHttp(0); + if (!client) return false; + const int64_t started = esp_timer_get_time(); + auto set_remaining_timeout = [&]() { + const int remaining = kTimeoutMs - static_cast((esp_timer_get_time() - started) / 1000); + if (remaining <= 0 || stop) return false; + client->SetTimeout(remaining); + return true; + }; + if (!set_remaining_timeout()) return false; + client->SetKeepAlive(false); + client->SetHeader("Authorization", "Bearer " + config.token); + client->SetHeader("Accept", "application/json"); + client->SetHeader("Connection", "close"); + bool ok = client->Open("GET", url) && set_remaining_timeout() && client->GetStatusCode() == 200; + std::string body; + char buffer[512]; + const size_t content_length = ok ? client->GetBodyLength() : 0; + if (content_length == 0 || content_length > kMaxResponse) ok = false; + while (ok && !stop && body.size() < content_length) { + if (!set_remaining_timeout()) { ok = false; break; } + const size_t remaining = std::min(sizeof(buffer), content_length - body.size()); + const auto read = client->Read(buffer, remaining); + if (!read) { ok = false; break; } + const int n = *read; + if (n < 0 || body.size() + static_cast(n) > kMaxResponse) { ok = false; break; } + if (n == 0) { ok = false; break; } + body.append(buffer, n); + } + client->Close(); + if (body.size() != content_length || esp_timer_get_time() - started >= int64_t(kTimeoutMs) * 1000) ok = false; + if (!ok || stop) return false; + auto* root = cJSON_ParseWithLength(body.c_str(), body.size()); + if (!root) return false; + auto* agents = cJSON_GetObjectItemCaseSensitive(root, "agents"); + ok = cJSON_IsArray(agents) && cJSON_GetArraySize(agents) == 2; + if (ok) ok = parse_agent(cJSON_GetArrayItem(agents, 0), "codex", result.codex) && + parse_agent(cJSON_GetArrayItem(agents, 1), "claude", result.claude); + cJSON_Delete(root); + Model model; + return ok && model.replace(result); +} +} + +bool Poller::start(const Config& config) { + stop_ = false; configured_ = !config.url.empty(); connected_ = false; + if (!configured_) return true; + struct StartArgs { Poller* self; Config config; }; + auto* args = new StartArgs{this, config}; + task_running_ = true; + const auto created = xTaskCreate([](void* opaque) { + std::unique_ptr args(static_cast(opaque)); + auto* self = args->self; + self->run(std::move(args->config)); + args.reset(); + self->task_running_ = false; + vTaskDelete(nullptr); + }, "agent_tasks", 6144, args, 2, nullptr); + if (created != pdPASS) { delete args; task_running_ = false; return false; } + return true; +} + +void Poller::test_once(const Config& config) { + Snapshot next; + const bool ok = fetch(config, next, stop_); + if (ok) { + std::lock_guard lock(mutex_); + snapshot_ = std::move(next); + connected_ = true; + } else connected_ = false; +} + +void Poller::run(Config config) { + while (!stop_) { + Snapshot next; + if (fetch(config, next, stop_)) { + std::lock_guard lock(mutex_); snapshot_ = std::move(next); connected_ = true; + } else connected_ = false; + for (int i = 0; i < 10 && !stop_; ++i) vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +void Poller::stop() { + stop_ = true; + while (task_running_) vTaskDelay(pdMS_TO_TICKS(10)); +} +Snapshot Poller::latest() const { std::lock_guard lock(mutex_); return snapshot_; } +} diff --git a/firmware/main/apps/app_agent_tasks/agent_tasks_poller.h b/firmware/main/apps/app_agent_tasks/agent_tasks_poller.h new file mode 100644 index 000000000..d44fb48ab --- /dev/null +++ b/firmware/main/apps/app_agent_tasks/agent_tasks_poller.h @@ -0,0 +1,25 @@ +#pragma once +#include "agent_tasks_model.h" +#include "agent_tasks_config.h" +#include +#include + +namespace agent_tasks { +class Poller { +public: + bool start(const Config& config); + void stop(); + void test_once(const Config& config); + Snapshot latest() const; + bool configured() const { return configured_; } + bool connected() const { return connected_; } +private: + mutable std::mutex mutex_; + Snapshot snapshot_; + std::atomic_bool stop_{false}; + std::atomic_bool connected_{false}; + std::atomic_bool task_running_{false}; + bool configured_ = false; + void run(Config config); +}; +} diff --git a/firmware/main/apps/app_agent_tasks/agent_tasks_setup_worker.cpp b/firmware/main/apps/app_agent_tasks/agent_tasks_setup_worker.cpp new file mode 100644 index 000000000..e127b7d86 --- /dev/null +++ b/firmware/main/apps/app_agent_tasks/agent_tasks_setup_worker.cpp @@ -0,0 +1,122 @@ +#include "agent_tasks_setup_worker.h" +#include "agent_tasks_poller.h" +#include +#include +#include + +using namespace smooth_ui_toolkit::lvgl_cpp; +LV_FONT_DECLARE(agent_tasks_cjk_14); + +namespace agent_tasks { +void SetupWorker::edit(bool token) +{ + if (editor_) return; + editing_token_ = token; + editor_ = lv_obj_create(lv_screen_active()); + lv_obj_set_size(editor_, 320, 240); + lv_obj_set_style_pad_all(editor_, 0, 0); + lv_obj_set_style_border_width(editor_, 0, 0); + lv_obj_set_style_radius(editor_, 0, 0); + lv_obj_remove_flag(editor_, LV_OBJ_FLAG_SCROLLABLE); + auto* heading = lv_label_create(editor_); + lv_obj_set_style_text_font(heading, &agent_tasks_cjk_14, 0); + lv_label_set_text(heading, token ? "访问令牌" : "网关地址"); + lv_obj_set_pos(heading, 10, 4); + input_ = lv_textarea_create(editor_); + lv_obj_set_size(input_, 300, 40); + lv_obj_set_pos(input_, 10, 29); + lv_textarea_set_one_line(input_, true); + lv_textarea_set_max_length(input_, token ? 256 : 255); + lv_textarea_set_password_mode(input_, token); + lv_textarea_set_text(input_, (token ? config_.token : config_.url).c_str()); + auto* keyboard = lv_keyboard_create(editor_); + lv_obj_set_size(keyboard, 320, 165); + lv_obj_align(keyboard, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_TEXT_LOWER); + lv_keyboard_set_textarea(keyboard, input_); + lv_obj_add_event_cb(keyboard, [](lv_event_t* event) { + auto* self = static_cast(lv_event_get_user_data(event)); + const auto code = lv_event_get_code(event); + if (code != LV_EVENT_READY && code != LV_EVENT_CANCEL) return; + if (code == LV_EVENT_READY) { + (self->editing_token_ ? self->config_.token : self->config_.url) = + lv_textarea_get_text(self->input_); + self->test_result_->result = 0; + self->save_failed_ = false; + } + lv_obj_delete_async(self->editor_); + self->editor_ = nullptr; + self->input_ = nullptr; + }, LV_EVENT_ALL, this); +} + +SetupWorker::SetupWorker() +{ + save_failed_ = !load_config(config_); + title_ = std::make_unique