From b0fad5d15b9f6adb3ae624095f78e5c533ac3164 Mon Sep 17 00:00:00 2001 From: James Lee Date: Mon, 5 Oct 2026 07:46:53 +0900 Subject: [PATCH 01/45] feat: route LLM endpoints to local OpenAI-compatible providers Wire api_base/max_tokens/coordinate_format through the LLM config schema and endpoint resolver so per-role nodes can target local gateways (e.g. ondevice-agent-platform serving Qwen models) while Gemini defaults stay byte-identical. - LLM schema gains api_base, max_tokens, coordinate_format (yx/xy x 1000/px/norm); _resolve_endpoint forwards all three to ModelEndpoint - Object detector honors the declared point convention instead of hardcoding Gemini ER's [y,x] swap; batch-level rescale guards responses that clearly arrive in 0-1 or raw pixels, including the Qwen smart-resize grid for pixel-space output - get_llm(object_detector) now resolves the utils scope, so the configured detector endpoint is actually used (was silently falling back to the operator model) - strip_json_comments preserves // and /* */ inside string literals, which made URL api_base values unparseable - Empty exported OPENAI_API_KEY falls back to the "EMPTY" placeholder instead of reaching ChatOpenAI as a blank credential - resources config: document the ondevice-qwen preset and the coordinate_format contract for local vision models Verified live against ondevice-agent-platform (:8080): qwen3.8-9b serves the planner/text route and qwen-vl grounds UI elements on a real iOS screenshot within ~3% of the 0-1000 grid. --- .../agents/object_detector/object_detector.py | 135 +++++++++++- artemis/llm/router.py | 12 +- artemis/resources/config/artemis.jsonc | 18 ++ artemis/services/llm.py | 3 + .../test_object_detector_coordinates.py | 200 ++++++++++++++++++ tests/unit/test_llm_local_endpoint.py | 188 ++++++++++++++++ third_party/mobile_use/config/llm.py | 5 + third_party/mobile_use/utils/file.py | 45 +++- 8 files changed, 590 insertions(+), 16 deletions(-) create mode 100644 tests/unit/agents/test_object_detector_coordinates.py create mode 100644 tests/unit/test_llm_local_endpoint.py diff --git a/artemis/agents/object_detector/object_detector.py b/artemis/agents/object_detector/object_detector.py index b2acb4f5f..48050e8d3 100644 --- a/artemis/agents/object_detector/object_detector.py +++ b/artemis/agents/object_detector/object_detector.py @@ -16,7 +16,9 @@ import asyncio import base64 +import io import json +import math import os from pathlib import Path import re @@ -31,6 +33,119 @@ _DETECTOR_SEMAPHORE = asyncio.Semaphore(6) +# The detector's output contract: points are [x, y] on a normalized 0-1000 +# grid over the image that was sent (consumers divide by 1000 to get pixels). +# Models differ in what they natively emit; ``coordinate_format`` on the +# resolved endpoint declares the convention so results can be normalized: +# axis order — ``yx`` (Gemini ER style) or ``xy`` (most vision models) +# scale — ``1000`` grid, ``px`` absolute pixels, ``norm`` 0-1 floats +_DEFAULT_COORDINATE_FORMAT = "yx_1000" +_PIXEL_GRID = 1000.0 + +# Qwen-family processors smart-resize inputs to a multiple of the patch-merge +# factor within min/max pixel bounds; pixel-space coordinates land on that +# resized grid, not the raw image grid. +_QWEN_RESIZE_FACTOR = 32 +_QWEN_MIN_PIXELS = 65536 +_QWEN_MAX_PIXELS = 16777216 # size.longest_edge in the shipped preprocessor config + + +def _image_dimensions(image_data: bytes) -> tuple[int, int] | None: + """Return (width, height) of encoded image bytes, or None when undecodable.""" + try: + from PIL import Image + + with Image.open(io.BytesIO(image_data)) as img: + return img.width, img.height + except Exception: + return None + + +def _qwen_resized_dimensions(width: int, height: int) -> tuple[int, int]: + """Grid a Qwen-family processor sees after its smart resize.""" + factor = _QWEN_RESIZE_FACTOR + w_bar = round(width / factor) * factor + h_bar = round(height / factor) * factor + if w_bar * h_bar > _QWEN_MAX_PIXELS: + beta = math.sqrt((width * height) / _QWEN_MAX_PIXELS) + w_bar = math.floor(width / beta / factor) * factor + h_bar = math.floor(height / beta / factor) * factor + elif w_bar * h_bar < _QWEN_MIN_PIXELS: + beta = math.sqrt(_QWEN_MIN_PIXELS / (width * height)) + w_bar = math.ceil(width * beta / factor) * factor + h_bar = math.ceil(height * beta / factor) * factor + return w_bar, h_bar + + +def _endpoint_coordinate_format(llm) -> str: + fmt = getattr(getattr(llm, "endpoint", None), "coordinate_format", None) + if isinstance(fmt, str) and fmt in _COORDINATE_FORMATS: + return fmt + return _DEFAULT_COORDINATE_FORMAT + + +_COORDINATE_FORMATS = frozenset({"yx_1000", "xy_1000", "yx_px", "xy_px", "yx_norm", "xy_norm"}) + + +def _detected_batch_scale(items: list) -> str | None: + """Infer the actual scale a model used across a whole response. + + The contract is 0-1000, but when a model ignores it the whole batch + shares one convention: every coordinate fitting in 0-1 means ``norm``; + any coordinate above 1000 means ``px``. Mixed magnitudes stay on the + declared grid so sub-1000 corner points are not rescaled twice. + """ + coords = [ + abs(float(c)) + for item in items + if isinstance(item, dict) + and isinstance(item.get("point"), (list, tuple)) + and len(item["point"]) == 2 + for c in item["point"] + if isinstance(c, (int, float)) and not isinstance(c, bool) + ] + if not coords: + return None + max_coord = max(coords) + if max_coord <= 1.0 and any(c != 0.0 for c in coords): + return "norm" + if max_coord > _PIXEL_GRID: + return "px" + return None + + +def _normalize_detected_point( + item: dict, + coordinate_format: str, + image_size: tuple[int, int] | None, + batch_scale: str | None, +) -> None: + """Rewrite ``item['point']`` to the [x, y] 0-1000 contract in place. + + Axis order and scale come from the endpoint's declared coordinate + format; ``batch_scale`` (``norm``/``px``) overrides the declared scale + only when the whole response clearly violated the contract. + """ + point = item.get("point") + if not (isinstance(point, (list, tuple)) and len(point) == 2): + return + try: + first, second = float(point[0]), float(point[1]) + except (TypeError, ValueError): + return + + x, y = (second, first) if coordinate_format.startswith("yx") else (first, second) + + scale = batch_scale or coordinate_format.rsplit("_", 1)[-1] + if scale == "px": + if image_size: + grid_w, grid_h = _qwen_resized_dimensions(*image_size) + x, y = x * _PIXEL_GRID / grid_w, y * _PIXEL_GRID / grid_h + elif scale == "norm": + x, y = x * _PIXEL_GRID, y * _PIXEL_GRID + + item["point"] = [x, y] + async def _detect_single_label( llm, @@ -124,7 +239,7 @@ async def _run_object_detection( queries = queries or [] templates = templates or ["Point to the following objects: {labels_str}"] try: - llm = get_llm(ctx, name="object_detector") + llm = get_llm(ctx, name="object_detector", is_utils=True) except Exception: llm = get_llm(ctx, name="operator") @@ -165,16 +280,16 @@ async def _run_object_detection( except Exception as e: logger.error(f"Task raised exception: {e}") - # Swap coordinates from [y, x] normalized to [x, y] normalized if needed + # Normalize model points to the [x, y] 0-1000 contract. Axis order and + # scale follow the endpoint's declared coordinate_format (Gemini ER's + # [y, x] stays the default); a batch that clearly arrived in 0-1 or raw + # pixels is rescaled instead. + coordinate_format = _endpoint_coordinate_format(llm) + image_size = _image_dimensions(image_data) + batch_scale = _detected_batch_scale(fused_results) for item in fused_results: - if ( - isinstance(item, dict) - and "point" in item - and isinstance(item["point"], list) - and len(item["point"]) == 2 - ): - y_norm, x_norm = item["point"] - item["point"] = [x_norm, y_norm] + if isinstance(item, dict): + _normalize_detected_point(item, coordinate_format, image_size, batch_scale) detected_labels = set( item["label"] for item in fused_results if isinstance(item, dict) and "label" in item diff --git a/artemis/llm/router.py b/artemis/llm/router.py index f2e6b42b6..4e94a7151 100644 --- a/artemis/llm/router.py +++ b/artemis/llm/router.py @@ -111,6 +111,13 @@ class ModelEndpoint(BaseModel): default=False, description="Whether to enable Google Search grounding for Gemini endpoints", ) + coordinate_format: str | None = Field( + default=None, + description=( + "Vision detector point convention, e.g. 'yx_1000' (Gemini default)," + " 'xy_1000', 'yx_px', 'xy_px', 'yx_norm', 'xy_norm'" + ), + ) def cache_key(self) -> tuple: """Key the client cache by endpoint settings, hashing the API key.""" @@ -286,7 +293,8 @@ def create_model(cls, endpoint: ModelEndpoint) -> BaseChatModel: api_key = ( endpoint.api_key or (settings.OPENAI_API_KEY.get_secret_value() if settings.OPENAI_API_KEY else None) - or os.environ.get("OPENAI_API_KEY", "EMPTY") + or os.environ.get("OPENAI_API_KEY") + or "EMPTY" ) base_url = endpoint.api_base or ( str(settings.OPENAI_BASE_URL) if settings.OPENAI_BASE_URL else None @@ -369,7 +377,7 @@ def create_model(cls, endpoint: ModelEndpoint) -> BaseChatModel: elif provider in (ModelProvider.OLLAMA, ModelProvider.VLLM, ModelProvider.CUSTOM): from langchain_openai import ChatOpenAI - api_key = endpoint.api_key or os.environ.get("OPENAI_API_KEY", "EMPTY") + api_key = endpoint.api_key or os.environ.get("OPENAI_API_KEY") or "EMPTY" base_url = endpoint.api_base or os.environ.get( "OPENAI_BASE_URL", "http://localhost:8000/v1" ) diff --git a/artemis/resources/config/artemis.jsonc b/artemis/resources/config/artemis.jsonc index 517d73840..3265fb327 100644 --- a/artemis/resources/config/artemis.jsonc +++ b/artemis/resources/config/artemis.jsonc @@ -45,6 +45,19 @@ "provider": "openai", "model": "llama3.2-vision", "fallback": { "provider": "openai", "model": "llama3.2-vision" } + }, + // Fully local route via ondevice-agent-platform (OpenAI-compatible). + // Copy the provider/model/api_base keys into "default" or a node below; + // "custom" skips cloud credential checks and needs no API key. + "ondevice-qwen": { + "provider": "custom", + "model": "qwen3.8-9b", + "api_base": "http://127.0.0.1:8080/v1", + "fallback": { + "provider": "custom", + "model": "qwen3.8-9b", + "api_base": "http://127.0.0.1:8080/v1" + } } }, @@ -74,6 +87,11 @@ // CRITICAL REQUIREMENT: Standard LLMs (including standard Gemini Flash, GPT-4o, Claude 3.7) lack sub-pixel spatial coordinate fine-tuning. // To achieve accurate [x, y] point and bounding box localization, this node MUST use specialized Gemini ER (Embodied Reasoning / Robotics) models: // e.g., "gemini-robotics-er-2-preview". Non-ER models will fail spatial coordinate detection. + // For a local vision model (e.g. qwen-vl via ondevice-agent-platform) also set + // "coordinate_format" — detector points are normalized to [x, y] 0-1000: + // "yx_1000" (default, Gemini ER) | "xy_1000" (Qwen-VL verified) | + // "xy_px"/"yx_px" (absolute pixels of the processed image grid) | + // "xy_norm"/"yx_norm" (0-1 floats) "object_detector": { "model": "gemini-robotics-er-2-preview", "fallback": { diff --git a/artemis/services/llm.py b/artemis/services/llm.py index ec91e6fa0..8a1c7132c 100644 --- a/artemis/services/llm.py +++ b/artemis/services/llm.py @@ -929,6 +929,9 @@ def _get_val(obj, attr, expected_type): return ModelEndpoint( provider=ModelProvider.from_string(provider_val), model_name=str(model_val), + api_base=_get_val(cfg, "api_base", str), + max_tokens=_get_val(cfg, "max_tokens", int), + coordinate_format=_get_val(cfg, "coordinate_format", str), temperature=_get_val(cfg, "temperature", (int, float)) or 0.0, timeout_seconds=_get_val(cfg, "timeout", (int, float)) or 60.0, thinking_budget=_get_val(cfg, "thinking_budget", int), diff --git a/tests/unit/agents/test_object_detector_coordinates.py b/tests/unit/agents/test_object_detector_coordinates.py new file mode 100644 index 000000000..ebbca5700 --- /dev/null +++ b/tests/unit/agents/test_object_detector_coordinates.py @@ -0,0 +1,200 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Coordinate normalization for multi-provider object detection. + +The detector contract is ``[x, y]`` on a 0-1000 grid over the sent image. +Each endpoint declares the convention its model actually emits via +``coordinate_format``; clearly off-contract batches are rescaled. +""" + +from types import SimpleNamespace + +import pytest + +from artemis.agents.object_detector.object_detector import ( + _detected_batch_scale, + _endpoint_coordinate_format, + _image_dimensions, + _normalize_detected_point, + _qwen_resized_dimensions, +) + + +def _item(a, b): + return {"point": [a, b], "label": "x"} + + +# --------------------------------------------------------------------------- +# Declared formats +# --------------------------------------------------------------------------- + + +def test_yx_1000_swaps_axes_and_keeps_scale(): + item = _item(800, 200) + _normalize_detected_point(item, "yx_1000", (1000, 2000), None) + assert item["point"] == [200.0, 800.0] + + +def test_xy_1000_keeps_axes_and_scale(): + item = _item(200, 800) + _normalize_detected_point(item, "xy_1000", (1000, 2000), None) + assert item["point"] == [200.0, 800.0] + + +def test_xy_norm_scales_zero_to_one(): + item = _item(0.2, 0.8) + _normalize_detected_point(item, "xy_norm", (1000, 2000), None) + assert item["point"] == [200.0, 800.0] + + +def test_yx_norm_swaps_and_scales(): + item = _item(0.8, 0.2) + _normalize_detected_point(item, "yx_norm", (1000, 2000), None) + assert item["point"] == [200.0, 800.0] + + +def test_xy_px_scales_by_qwen_resize_grid(): + # 1000x2000 snaps to 992x1984 under the factor-32 smart resize. + item = _item(496, 992) # center of the resized grid + _normalize_detected_point(item, "xy_px", (1000, 2000), None) + assert item["point"] == [500.0, 500.0] + + +def test_yx_px_swaps_axes_and_scales(): + item = _item(992, 496) + _normalize_detected_point(item, "yx_px", (1000, 2000), None) + assert item["point"] == [500.0, 500.0] + + +def test_px_without_image_size_leaves_point_unchanged(): + item = _item(1500, 700) + _normalize_detected_point(item, "xy_px", None, None) + assert item["point"] == [1500.0, 700.0] + + +# --------------------------------------------------------------------------- +# Batch-level scale detection +# --------------------------------------------------------------------------- + + +def test_batch_scale_detects_norm_when_all_below_one(): + items = [_item(0.5, 0.2), _item(0.9, 0.1)] + assert _detected_batch_scale(items) == "norm" + + +def test_batch_scale_detects_px_when_any_above_1000(): + items = [_item(500, 200), _item(1500, 300)] + assert _detected_batch_scale(items) == "px" + + +def test_batch_scale_mixed_grid_stays_undeclared(): + # A legit 0-1000 corner point coexisting with mid-grid values must not + # trip the norm heuristic — the batch still reads as the declared grid. + items = [_item(0.5, 0.3), _item(500, 400)] + assert _detected_batch_scale(items) is None + + +def test_batch_scale_all_zero_is_undeclared(): + assert _detected_batch_scale([_item(0, 0)]) is None + + +def test_batch_scale_override_fixes_norm_batch_under_1000_contract(): + item = _item(0.5, 0.2) + _normalize_detected_point(item, "yx_1000", (1000, 2000), "norm") + # yx order + norm scale: x=0.2*1000, y=0.5*1000 + assert item["point"] == [200.0, 500.0] + + +def test_batch_scale_override_fixes_px_batch_under_1000_contract(): + item = _item(992, 496) # [y_px, x_px] on a 992x1984 grid + _normalize_detected_point(item, "yx_1000", (1000, 2000), "px") + assert item["point"] == [500.0, 500.0] + + +# --------------------------------------------------------------------------- +# Endpoint format resolution + image dims +# --------------------------------------------------------------------------- + + +def test_endpoint_coordinate_format_defaults_to_gemini(): + assert _endpoint_coordinate_format(SimpleNamespace(endpoint=None)) == "yx_1000" + wrapper = SimpleNamespace(endpoint=SimpleNamespace(coordinate_format="xy_px")) + assert _endpoint_coordinate_format(wrapper) == "xy_px" + bogus = SimpleNamespace(endpoint=SimpleNamespace(coordinate_format="bogus")) + assert _endpoint_coordinate_format(bogus) == "yx_1000" + + +def test_qwen_resize_snaps_to_factor_32(): + assert _qwen_resized_dimensions(1000, 2000) == (992, 1984) + assert _qwen_resized_dimensions(2940, 1912) == (2944, 1920) + + +def test_image_dimensions_reads_png_header(): + import io + + from PIL import Image + + buf = io.BytesIO() + Image.new("RGB", (640, 480)).save(buf, format="PNG") + assert _image_dimensions(buf.getvalue()) == (640, 480) + assert _image_dimensions(b"not an image") is None + + +def test_invalid_points_are_untouched(): + for bad in ({}, {"point": "x"}, {"point": [1]}, {"point": ["a", "b"]}): + item = dict(bad) + _normalize_detected_point(item, "yx_1000", (100, 100), None) + assert item == bad + + +@pytest.mark.asyncio +async def test_run_object_detection_uses_endpoint_coordinate_format(): + """End-to-end: an xy_px endpoint turns pixel output into the 0-1000 contract.""" + import io + from unittest.mock import AsyncMock, patch + + from PIL import Image + + from artemis.agents.object_detector.object_detector import _run_object_detection + + buf = io.BytesIO() + Image.new("RGB", (1000, 2000)).save(buf, format="PNG") + image_bytes = buf.getvalue() + + fake_llm = SimpleNamespace(endpoint=SimpleNamespace(coordinate_format="xy_px")) + # Model reports grid-center in pixels of the 992x1984 resized image. + vlm_output = [{"point": [496, 992], "label": "home button"}] + + with ( + patch( + "artemis.agents.object_detector.object_detector.get_llm", + return_value=fake_llm, + ), + patch( + "artemis.agents.object_detector.object_detector._detect_single_label", + new_callable=AsyncMock, + return_value=vlm_output, + ), + ): + ctx = SimpleNamespace(llm_config=SimpleNamespace()) + result = await _run_object_detection( + ctx=ctx, + image_bytes=image_bytes, + queries=["home button"], + ) + + point = result["detected"][0]["point"] + # 496px/992w -> 500x, 992px/1984h -> 500y on the 0-1000 grid. + assert point == [pytest.approx(500.0), pytest.approx(500.0)] diff --git a/tests/unit/test_llm_local_endpoint.py b/tests/unit/test_llm_local_endpoint.py new file mode 100644 index 000000000..553b3b12f --- /dev/null +++ b/tests/unit/test_llm_local_endpoint.py @@ -0,0 +1,188 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Endpoint plumbing for local OpenAI-compatible providers (e.g. ondevice-agent-platform).""" + +from types import SimpleNamespace + +from artemis.config.llm import LLMConfig +from artemis.llm.router import ModelEndpoint, ModelFactory, ModelProvider +from artemis.services.llm import _resolve_endpoint +from third_party.mobile_use.utils.file import strip_json_comments + + +def _ctx(**node_overrides) -> SimpleNamespace: + utils = { + "outputter": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "hopper": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "video_analyzer": None, + "object_detector": None, + } + utils.update(node_overrides.pop("utils", {})) + config = LLMConfig.model_validate( + { + "planner": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "summarizer": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "operator": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "operator_summarizer": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "log_reader_sub_agent": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "log_analyzer": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "diagnoser": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "checker": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "planner_avatar": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "history_analyzer_expert": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "diagnoser_expert": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "explorer": { + "provider": "google", + "model": "g", + "fallback": {"provider": "google", "model": "g"}, + }, + "utils": utils, + **node_overrides, + } + ) + return SimpleNamespace(llm_config=config) + + +_LOCAL_NODE = { + "provider": "custom", + "model": "qwen-vl", + "api_base": "http://127.0.0.1:8080/v1", + "coordinate_format": "xy_px", + "max_tokens": 1024, + "fallback": { + "provider": "custom", + "model": "qwen-vl", + "api_base": "http://127.0.0.1:8080/v1", + "coordinate_format": "xy_px", + }, +} + + +def test_resolve_endpoint_forwards_api_base_and_coordinate_format(): + ctx = _ctx(utils={"object_detector": _LOCAL_NODE}) + ep = _resolve_endpoint(ctx, "object_detector", is_utils=True) + assert ep.provider == ModelProvider.CUSTOM + assert ep.model_name == "qwen-vl" + assert ep.api_base == "http://127.0.0.1:8080/v1" + assert ep.coordinate_format == "xy_px" + assert ep.max_tokens == 1024 + + +def test_resolve_endpoint_fallback_carries_local_fields(): + ctx = _ctx(utils={"object_detector": _LOCAL_NODE}) + ep = _resolve_endpoint(ctx, "object_detector", is_utils=True, use_fallback=True) + assert ep.api_base == "http://127.0.0.1:8080/v1" + assert ep.coordinate_format == "xy_px" + + +def test_resolve_endpoint_defaults_keep_google_shape(): + ctx = _ctx() + ep = _resolve_endpoint(ctx, "operator") + assert ep.provider == ModelProvider.GOOGLE + assert ep.api_base is None + assert ep.coordinate_format is None + + +def test_custom_endpoint_builds_chat_openai_with_local_base(monkeypatch): + monkeypatch.delenv("OPENAI_API_KEY", raising=False) + ep = ModelEndpoint( + provider=ModelProvider.CUSTOM, + model_name="qwen-vl", + api_base="http://127.0.0.1:8080/v1", + ) + model = ModelFactory.create_model(ep) + assert type(model).__name__ == "ChatOpenAI" + assert str(model.openai_api_base) == "http://127.0.0.1:8080/v1" + + +def test_empty_openai_env_key_falls_back_to_placeholder(monkeypatch): + """An exported-but-empty OPENAI_API_KEY must not reach ChatOpenAI.""" + monkeypatch.setenv("OPENAI_API_KEY", "") + ep = ModelEndpoint( + provider=ModelProvider.CUSTOM, + model_name="qwen3.8-9b", + api_base="http://127.0.0.1:8080/v1", + ) + model = ModelFactory.create_model(ep) + assert type(model).__name__ == "ChatOpenAI" + assert model.openai_api_key.get_secret_value() == "EMPTY" + + +def test_strip_json_comments_preserves_urls_and_strings(): + text = ( + "{ // header\n" + ' "api_base": "http://127.0.0.1:8080/v1", // trailing\n' + ' "note": "x /* not a comment */ y",\n' + ' "escaped": "a \\"//\\" b"\n' + "}" + ) + import json + + parsed = json.loads(strip_json_comments(text)) + assert parsed["api_base"] == "http://127.0.0.1:8080/v1" + assert parsed["note"] == "x /* not a comment */ y" + assert parsed["escaped"] == 'a "//" b' diff --git a/third_party/mobile_use/config/llm.py b/third_party/mobile_use/config/llm.py index be9f509a9..fd42d49ef 100644 --- a/third_party/mobile_use/config/llm.py +++ b/third_party/mobile_use/config/llm.py @@ -58,6 +58,11 @@ class LLM(BaseModel): provider: LLMProvider model: str temperature: float | None = None + api_base: str | None = None + max_tokens: int | None = None + coordinate_format: ( + Literal["yx_1000", "xy_1000", "yx_px", "xy_px", "yx_norm", "xy_norm"] | None + ) = None thinking_budget: int | None = None thinking_level: Literal["minimal", "low", "medium", "high"] | None = None reasoning_effort: Literal["none", "low", "medium", "high"] | None = None diff --git a/third_party/mobile_use/utils/file.py b/third_party/mobile_use/utils/file.py index e7930014e..055adc105 100644 --- a/third_party/mobile_use/utils/file.py +++ b/third_party/mobile_use/utils/file.py @@ -17,14 +17,51 @@ # See third_party/mobile_use/METADATA for the upstream source and local modifications. import json -import re from typing import IO def strip_json_comments(text: str) -> str: - text = re.sub(r"//.*?$", "", text, flags=re.MULTILINE) - text = re.sub(r"/\*.*?\*/", "", text, flags=re.DOTALL) - return text + """Remove ``//`` and ``/* */`` comments while preserving string literals. + + The naive regex version stripped ``//`` sequences inside quoted strings, + which made URL values (e.g. ``"api_base": "http://127.0.0.1:8080/v1"``) + unparseable. This scan tracks string/escape state and only treats the + comment markers that appear outside strings as comments. + """ + out: list[str] = [] + i, n = 0, len(text) + in_string = False + while i < n: + char = text[i] + if in_string: + out.append(char) + if char == "\\" and i + 1 < n: + out.append(text[i + 1]) + i += 2 + continue + if char == '"': + in_string = False + i += 1 + continue + if char == '"': + in_string = True + out.append(char) + i += 1 + continue + if char == "/" and i + 1 < n: + if text[i + 1] == "/": + while i < n and text[i] != "\n": + i += 1 + continue + if text[i + 1] == "*": + i += 2 + while i + 1 < n and not (text[i] == "*" and text[i + 1] == "/"): + i += 1 + i += 2 + continue + out.append(char) + i += 1 + return "".join(out) def load_jsonc(file: IO) -> dict: From ee3931af217772d59b9fd15e618f800032af250f Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 8 Oct 2026 03:47:45 +0900 Subject: [PATCH 02/45] feat: prepare multimodal unification for Gemma 4 E4B Accept Gemma's trained box_2d output ([ymin,xmin,ymax,xmax] on the 0-1000 grid) in the object detector: normalize it to the existing [x1,y1,x2,y2] contract, synthesize the point from the box center when no usable point exists, and include box coordinates in batch-scale inference. Add a spike config routing every node to gemma-4-e4b on the local OpenAI-compatible endpoint, alongside the untouched qwen config. Also add an on-device Apple Vision OCR provider behind perform_ocr: a standalone worker subprocess (Vision calls fail intermittently once cv2 is resident) with a per-call timeout, one retry, and a circuit breaker that disables the provider after consecutive failures. Apple Vision is preferred on macOS; Google Cloud Vision remains the keyed fallback and ARTEMIS_OCR_PROVIDER pins a provider. --- .../agents/object_detector/object_detector.py | 60 +++- artemis/utils/apple_vision_ocr.py | 106 ++++++ artemis/utils/ocr_api.py | 154 ++++++++- config/artemis.gemma4.jsonc | 312 ++++++++++++++++++ pyproject.toml | 3 + .../test_object_detector_coordinates.py | 98 ++++++ tests/unit/utils/test_optional_ocr.py | 161 ++++++++- 7 files changed, 872 insertions(+), 22 deletions(-) create mode 100644 artemis/utils/apple_vision_ocr.py create mode 100644 config/artemis.gemma4.jsonc diff --git a/artemis/agents/object_detector/object_detector.py b/artemis/agents/object_detector/object_detector.py index 48050e8d3..bd1c37c88 100644 --- a/artemis/agents/object_detector/object_detector.py +++ b/artemis/agents/object_detector/object_detector.py @@ -35,6 +35,10 @@ # The detector's output contract: points are [x, y] on a normalized 0-1000 # grid over the image that was sent (consumers divide by 1000 to get pixels). +# Items may also carry ``box_2d`` corner pairs in the same declared convention +# (Gemma 4's trained detection output is [ymin, xmin, ymax, xmax] / 1000, i.e. +# the default ``yx_1000``); a box is normalized in place to [x1, y1, x2, y2] +# and synthesizes ``point`` from its center when the item lacks one. # Models differ in what they natively emit; ``coordinate_format`` on the # resolved endpoint declares the convention so results can be normalized: # axis order — ``yx`` (Gemini ER style) or ``xy`` (most vision models) @@ -99,9 +103,10 @@ def _detected_batch_scale(items: list) -> str | None: abs(float(c)) for item in items if isinstance(item, dict) - and isinstance(item.get("point"), (list, tuple)) - and len(item["point"]) == 2 - for c in item["point"] + for key in ("point", "box_2d") + if isinstance(item.get(key), (list, tuple)) + and len(item[key]) == (2 if key == "point" else 4) + for c in item[key] if isinstance(c, (int, float)) and not isinstance(c, bool) ] if not coords: @@ -147,6 +152,51 @@ def _normalize_detected_point( item["point"] = [x, y] +def _normalize_detected_box( + item: dict, + coordinate_format: str, + image_size: tuple[int, int] | None, + batch_scale: str | None, +) -> bool: + """Rewrite ``item['box_2d']`` to [x1, y1, x2, y2] on the 0-1000 contract. + + When the item has no usable ``point``, the box center becomes it. Returns + True only in that case: a synthesized point is already on the contract + grid and must not go through ``_normalize_detected_point`` again. + """ + box = item.get("box_2d") + if not (isinstance(box, (list, tuple)) and len(box) == 4): + return False + try: + a, b, c, d = (float(v) for v in box) + except (TypeError, ValueError): + return False + + x1, y1, x2, y2 = (b, a, d, c) if coordinate_format.startswith("yx") else (a, b, c, d) + + scale = batch_scale or coordinate_format.rsplit("_", 1)[-1] + if scale == "px": + if image_size: + grid_w, grid_h = _qwen_resized_dimensions(*image_size) + x1, x2 = x1 * _PIXEL_GRID / grid_w, x2 * _PIXEL_GRID / grid_w + y1, y2 = y1 * _PIXEL_GRID / grid_h, y2 * _PIXEL_GRID / grid_h + elif scale == "norm": + x1, y1, x2, y2 = x1 * _PIXEL_GRID, y1 * _PIXEL_GRID, x2 * _PIXEL_GRID, y2 * _PIXEL_GRID + + item["box_2d"] = [x1, y1, x2, y2] + + point = item.get("point") + if isinstance(point, (list, tuple)) and len(point) == 2: + try: + float(point[0]) + float(point[1]) + return False + except (TypeError, ValueError): + pass + item["point"] = [(x1 + x2) / 2, (y1 + y2) / 2] + return True + + async def _detect_single_label( llm, ctx, @@ -289,7 +339,9 @@ async def _run_object_detection( batch_scale = _detected_batch_scale(fused_results) for item in fused_results: if isinstance(item, dict): - _normalize_detected_point(item, coordinate_format, image_size, batch_scale) + box_derived = _normalize_detected_box(item, coordinate_format, image_size, batch_scale) + if not box_derived: + _normalize_detected_point(item, coordinate_format, image_size, batch_scale) detected_labels = set( item["label"] for item in fused_results if isinstance(item, dict) and "label" in item diff --git a/artemis/utils/apple_vision_ocr.py b/artemis/utils/apple_vision_ocr.py new file mode 100644 index 000000000..e03df770c --- /dev/null +++ b/artemis/utils/apple_vision_ocr.py @@ -0,0 +1,106 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Standalone Apple Vision OCR worker — run as ``python apple_vision_ocr.py``. + +Reads image bytes on stdin and writes a JSON list of +``{"text": str, "position": [{"x": int, "y": int}, ...]}`` on stdout, +matching the Google Vision ``boundingPoly.vertices`` contract. + +This module is deliberately free of artemis imports and runs in a clean +interpreter: once cv2 (and its GPU/OpenCL contexts) is loaded in the host +process, ``VNRecognizeTextRequest`` fails intermittently with e5rt +compute-stream errors. A subprocess keeps the ML stack isolated. +""" + +# pyright: reportAttributeAccessIssue=false +# pyobjc exposes AppKit/Vision classes dynamically; static stubs have no symbols. + +import io +import json +import sys + + +def _vision_box_to_vertices(bounding_box, width: int, height: int) -> list[dict[str, int]]: + """Convert a Vision normalized bounding box (origin bottom-left) to + pixel-space vertices in Google's boundingPoly order: TL, TR, BR, BL.""" + x0 = bounding_box.origin.x * width + x1 = (bounding_box.origin.x + bounding_box.size.width) * width + y_top = (1.0 - bounding_box.origin.y - bounding_box.size.height) * height + y_bottom = (1.0 - bounding_box.origin.y) * height + return [ + {"x": round(x0), "y": round(y_top)}, + {"x": round(x1), "y": round(y_top)}, + {"x": round(x1), "y": round(y_bottom)}, + {"x": round(x0), "y": round(y_bottom)}, + ] + + +def ocr_image(image_bytes: bytes) -> list[dict]: + """On-device text recognition via Apple's Vision framework.""" + import Vision + from Foundation import NSData + from PIL import Image + + with Image.open(io.BytesIO(image_bytes)) as img: + width, height = img.width, img.height + + request = Vision.VNRecognizeTextRequest.alloc().init() + request.setRecognitionLevel_(Vision.VNRequestTextRecognitionLevelAccurate) + request.setUsesLanguageCorrection_(True) + # The first entry in recognitionLanguages dominates per-request — en-US + # first garbles CJK text. Per-observation language detection (revision 3) + # avoids ordering games: every supported language is enabled and Vision + # picks the right one for each text region. + request.setAutomaticallyDetectsLanguage_(True) + langs, _ = ( + Vision.VNRecognizeTextRequest.supportedRecognitionLanguagesForTextRecognitionLevel_revision_error_( + Vision.VNRequestTextRecognitionLevelAccurate, + request.revision(), + None, + ) + ) + if langs: + request.setRecognitionLanguages_(list(langs)) + + ns_data = NSData.dataWithBytes_length_(image_bytes, len(image_bytes)) + handler = Vision.VNImageRequestHandler.alloc().initWithData_options_(ns_data, None) + ok, error = handler.performRequests_error_([request], None) + if not ok: + raise RuntimeError(f"VNRecognizeTextRequest failed: {error}") + + results = [] + for observation in request.results() or []: + candidates = observation.topCandidates_(1) + if not candidates: + continue + text = str(candidates[0].string()).strip() + if not text: + continue + results.append( + { + "text": text, + "position": _vision_box_to_vertices(observation.boundingBox(), width, height), + } + ) + return results + + +def main() -> None: + image_bytes = sys.stdin.buffer.read() + json.dump(ocr_image(image_bytes), sys.stdout) + + +if __name__ == "__main__": + main() diff --git a/artemis/utils/ocr_api.py b/artemis/utils/ocr_api.py index 56b7c2356..8ad937ea8 100644 --- a/artemis/utils/ocr_api.py +++ b/artemis/utils/ocr_api.py @@ -12,7 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. +import asyncio +import base64 +import json import os +from pathlib import Path +import sys from typing import Any import httpx @@ -22,6 +27,13 @@ logger = get_logger(__name__) _HTTP_CLIENT: httpx.AsyncClient | None = None +# Provider selection via ARTEMIS_OCR_PROVIDER: "auto" (default) prefers +# on-device Apple Vision on macOS and falls back to Google Cloud Vision when +# an API key exists; "apple" / "google" pin a single provider. +_OCR_PROVIDER_ENV = "ARTEMIS_OCR_PROVIDER" +_APPLE_VISION_SUPPORTED: bool | None = None +_APPLE_OCR_WORKER = Path(__file__).with_name("apple_vision_ocr.py") + def get_http_client() -> httpx.AsyncClient: global _HTTP_CLIENT @@ -30,29 +42,131 @@ def get_http_client() -> httpx.AsyncClient: return _HTTP_CLIENT -def is_ocr_configured() -> bool: - """Checks if a valid Google Vision OCR API key is configured.""" +def _ocr_provider() -> str: + return os.environ.get(_OCR_PROVIDER_ENV, "auto").strip().lower() + + +def _apple_vision_supported() -> bool: + """True on macOS when the pyobjc Vision bindings are importable and the + standalone worker script exists. The real OCR runs in a subprocess: once + cv2 is loaded in this process, VNRecognizeTextRequest intermittently + fails compiling its ANE compute stream (e5rt errors).""" + global _APPLE_VISION_SUPPORTED + if _APPLE_VISION_SUPPORTED is None: + if sys.platform != "darwin" or getattr(sys, "frozen", False): + _APPLE_VISION_SUPPORTED = False + else: + try: + import Vision # noqa: F401 + + _APPLE_VISION_SUPPORTED = _APPLE_OCR_WORKER.is_file() + except ImportError: + _APPLE_VISION_SUPPORTED = False + return _APPLE_VISION_SUPPORTED + + +def _google_vision_key() -> str | None: + """Raw Google Vision API key, or None (placeholders are not filtered).""" ocr_secret = settings.get_api_key("ocr") - if ocr_secret and ocr_secret.get_secret_value().strip(): - val = ocr_secret.get_secret_value().strip() - if val not in ("API_KEY", "your_google_cloud_vision_api_key_here"): - return True - for env_var in ("OCR_API_KEY", "VISION_API_KEY"): - val = os.environ.get(env_var) + return ( + (ocr_secret.get_secret_value() if ocr_secret else None) + or os.environ.get("OCR_API_KEY") + or os.environ.get("VISION_API_KEY") + ) + + +def _google_vision_key_present() -> bool: + """True when a non-placeholder Google Vision key is configured.""" + for val in (_google_vision_key(),): if ( val and val.strip() - and val.strip() not in ("API_KEY", "your_google_cloud_vision_api_key_here") + and val.strip() + not in ( + "API_KEY", + "your_google_cloud_vision_api_key_here", + ) ): return True return False +def is_ocr_configured() -> bool: + """True when some OCR provider is usable: Apple Vision on macOS, or a + configured Google Cloud Vision API key.""" + provider = _ocr_provider() + if provider == "apple": + return _apple_vision_available() + if provider == "google": + return _google_vision_key_present() + return _apple_vision_available() or _google_vision_key_present() + + +# A failing Vision attempt can stall for minutes inside the ObjC call (e5rt +# compute-stream compile), so every subprocess invocation is time-bounded and +# retried once in a fresh interpreter before degrading. When the OS-level +# Vision ML service is wedged, every call would burn 2x timeout forever — +# after consecutive failures the provider is disabled until a success resets +# the counter. +_APPLE_OCR_TIMEOUT_S = float(os.environ.get("APPLE_OCR_TIMEOUT", "20")) +_APPLE_OCR_MAX_CONSECUTIVE_FAILURES = 2 +_apple_vision_consecutive_failures = 0 + + +def _apple_vision_available() -> bool: + return ( + _apple_vision_supported() + and _apple_vision_consecutive_failures < _APPLE_OCR_MAX_CONSECUTIVE_FAILURES + ) + + +async def _apple_vision_subprocess(image_bytes: bytes) -> list[dict[str, Any]]: + proc = await asyncio.create_subprocess_exec( + sys.executable, + str(_APPLE_OCR_WORKER), + stdin=asyncio.subprocess.PIPE, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + try: + out, err = await asyncio.wait_for( + proc.communicate(input=image_bytes), timeout=_APPLE_OCR_TIMEOUT_S + ) + except BaseException: + proc.kill() + await proc.wait() + raise + if proc.returncode != 0: + tail = err.decode(errors="replace")[-300:] if err else "" + raise RuntimeError(f"Apple Vision worker exited {proc.returncode}: {tail}") + return json.loads(out or b"[]") + + +async def _run_apple_vision(image_bytes: bytes) -> list[dict[str, Any]]: + global _apple_vision_consecutive_failures + try: + results = await _apple_vision_subprocess(image_bytes) + except Exception as e: + logger.warning(f"Apple Vision OCR attempt failed ({e}); retrying once") + try: + results = await _apple_vision_subprocess(image_bytes) + except Exception: + _apple_vision_consecutive_failures += 1 + raise + _apple_vision_consecutive_failures = 0 + return results + + async def perform_ocr( screenshot_b64: str, client: httpx.AsyncClient | None = None, ) -> list[dict[str, Any]]: - """Calls Google Vision API for text recognition on an image. + """Runs text recognition on an image with the selected provider. + + Provider order under "auto": Apple Vision on-device (macOS) first, then + Google Cloud Vision when an API key is configured. An empty Apple result + is authoritative — Google is only consulted when Apple Vision is + unavailable or raises. Args: screenshot_b64: Base64 encoded screenshot image. @@ -61,12 +175,20 @@ async def perform_ocr( Returns: A list of dictionaries containing detected text and position vertices. """ - ocr_secret = settings.get_api_key("ocr") - api_key = ( - (ocr_secret.get_secret_value() if ocr_secret else None) - or os.environ.get("OCR_API_KEY") - or os.environ.get("VISION_API_KEY") - ) + provider = _ocr_provider() + if provider in ("auto", "apple"): + if _apple_vision_available(): + try: + return await _run_apple_vision(base64.b64decode(screenshot_b64)) + except Exception as e: + logger.warning(f"Apple Vision OCR failed: {e}") + elif provider == "apple": + logger.warning("ARTEMIS_OCR_PROVIDER=apple but Apple Vision is unavailable") + return [] + if provider == "apple": + return [] + + api_key = _google_vision_key() if not api_key: return [] diff --git a/config/artemis.gemma4.jsonc b/config/artemis.gemma4.jsonc new file mode 100644 index 000000000..9b785ad9b --- /dev/null +++ b/config/artemis.gemma4.jsonc @@ -0,0 +1,312 @@ +{ + // ============================================================================== + // ☕ ARTEMIS Autonomous Agent & Framework Configuration — GEMMA 4 SPIKE + // ============================================================================== + // Single-model deployment: every node (reasoning + vision + grounding) resolves + // to one gemma-4-e4b endpoint on the ondevice-agent-platform server. + // + // ACTIVATION (pick one): + // export ARTEMIS_ARTEMIS_JSONC=config/artemis.gemma4.jsonc + // # or rename this file over artemis.jsonc + // + // PREREQUISITE: the :8080 platform must actually serve the "gemma-4-e4b" alias + // (curl http://127.0.0.1:8080/v1/models). Until it does, keep artemis.jsonc. + // + // Grounding notes: + // - Gemma 4 emits detection natively as {"box_2d": [ymin,xmin,ymax,xmax]} + // on a 0-1000 grid = this repo's default "yx_1000" coordinate_format, so + // no override is set. The detector now derives "point" from the box center. + // - Operator targets already use [x,y] on the same 0-1000 grid. + + // ------------------------------------------------------------------------------ + // 1. Global Default Model (Applied to all sub-agents unless overridden below) + // ------------------------------------------------------------------------------ + "default": { + "provider": "custom", + // One unified multimodal model serves every role; the server alias must + // match the platform's registry entry (Gemma 4 E4B via the mlx-vlm provider, + // e.g. mlx-community/gemma-4-E4B-it-4bit). + "model": "gemma-4-e4b", + "api_base": "http://127.0.0.1:8080/v1", + // Local reasoning + vision encoder; keep the same generous timeout the + // qwen deployment needed for thinking preambles. + "timeout": 300, + "fallback": { + "provider": "custom", + "model": "gemma-4-e4b", + "api_base": "http://127.0.0.1:8080/v1", + "timeout": 300 + } + }, + + // ------------------------------------------------------------------------------ + // 2. Ready-to-Use Presets (Switch easily in code or CLI) + // ------------------------------------------------------------------------------ + "presets": { + "gemini-flagship": { + "provider": "google", + "model": "gemini-3.8-flash", + "fallback": { "provider": "google", "model": "gemini-3.7-flash" } + }, + "gemini-flash": { + "provider": "google", + "model": "gemini-2.5-flash", + "fallback": { "provider": "google", "model": "gemini-2.0-flash" } + }, + "openai-gpt4o": { + "provider": "openai", + "model": "gpt-4o", + "fallback": { "provider": "openai", "model": "gpt-4o-mini" } + }, + "cost-saving": { + "provider": "google", + "model": "gemini-3.5-flash-lite", + "fallback": { "provider": "google", "model": "gemini-3.1-flash-lite" } + }, + "local-ollama": { + "provider": "openai", + "model": "llama3.2-vision", + "fallback": { "provider": "openai", "model": "llama3.2-vision" } + }, + // Unified single-model route via ondevice-agent-platform (OpenAI-compatible). + "ondevice-gemma4": { + "provider": "custom", + "model": "gemma-4-e4b", + "api_base": "http://127.0.0.1:8080/v1", + "fallback": { + "provider": "custom", + "model": "gemma-4-e4b", + "api_base": "http://127.0.0.1:8080/v1" + } + } + }, + + // ------------------------------------------------------------------------------ + // 3. Agent & Sub-Agent Node Customizations (Optional - Inherits from 'default') + // ------------------------------------------------------------------------------ + "nodes": { + // 🧠 Planner: High-level goal decomposition and strategic step planning + "planner": { + "thinking_level": "high" + }, + + // 🎯 Operator: vision-capable by inheritance now — one model serves all roles. + "operator": { + "thinking_level": "medium", + "include_thoughts": true + }, + + // 🎬 Video Analyzer: inherits the unified endpoint; universal multi-model path + // feeds extracted keyframes as images. + "video_analyzer": {}, + + // 👁️ Object Detector: Gemma 4 native box_2d output is yx_1000 = the detector's + // declared default, so no coordinate_format override. box_2d collapses to a + // center point (and stays available as normalized bounds) downstream. + "object_detector": { + "timeout": 300 + }, + + // 🔍 Explorer: inherits the unified endpoint. + "explorer": { + "thinking_level": "medium" + }, + + // 📋 Summarizer: Aggregates step history and generates structured outcome + "summarizer": {}, + + // 🔽 Hopper: Fast lightweight package name locator + "hopper": {}, + + // 📝 Outputter: Synthesizes execution trace into final output report + "outputter": {}, + + // 🪵 Log Analyzer: grounding is a Gemini-only feature — ineffective here. + "log_analyzer": {}, + + // 🩺 Diagnoser Expert + "diagnoser_expert": {}, + // 🏛️ Committee Council Members + "planner_avatar": {}, + "history_analyzer_expert": {}, + // 🔎 Checker: Plan-declared checkpoint verification and exit final review. + "checker": { + "thinking_level": "medium", + "include_thoughts": true + } + }, + + // ------------------------------------------------------------------------------ + // 4. Runtime Mode & Agent Capabilities Configuration (Dual-Engine: Flash vs. Pro) + // ------------------------------------------------------------------------------ + "agent": { + // ========================================================================== + // ⚡ 4.1 FLASH Profile Options (Reactive Single-Agent Lightweight Loop) + // ========================================================================== + // Best for: Simple, fast, deterministic tasks; runs unbounded by default. + // Execution: Observe-Think-Act single LLM reactive loop without graph overhead. + "flash": { + "max_turns": 0, // Maximum reactive turns before stopping (0 = unlimited; history is bounded by transcript compression, not by a turn cap) + "explorer_mode": "flash", // Explorer tier for the Flash runner: 'flash' | 'pro' | 'ultra' (see top-level "explorer") + // 🧠 Step Summarizer: Asynchronous visual context compressor + // Summarizes intermediate steps in background without blocking the runner, + // replacing images only after strictly objective, high-density summaries are ready. + // LOCAL-MODEL NOTE: the visual-transition lens bypasses the LLM router + // (get_google_llm) — with no GOOGLE_API_KEY it crashes runner init. + // Disabled for the ondevice-platform deployment. + "step_summarizer": { + "enabled": false, // Whether background step summarization is active + "model": "gemini-3.5-flash-lite", // Lightweight model for fast background inference + "prune_history_xml": true // Prune outdated heavy XML trees from historical steps + } + }, + // ========================================================================== + // 🚀 4.2 PRO Profile Options (Deep Multi-Agent Graph Closed-Loop) + // ========================================================================== + // Best for: Complex, exploratory, dynamic multi-branch tasks. + // Execution: LangGraph multi-node graph with a living task plan, a pre-execution safety net (single actions) / fast-action bursts (multi-action turns), + // execution-incident recovery handled by the Operator itself (no separate repair agent), and a read-only Checker for checkpoint verification + exit final review. + "pro": { + // 🧭 Explorer: Perception sub-agent under Pro profile ('flash', 'pro', or 'ultra') + "explorer": { + "mode": "flash" // Explorer tier for Pro nodes (Operator/Validator): 'flash' | 'pro' | 'ultra' + }, + // 🎯 Planner Validation: Async verification when task plan milestones change + "planner_validation": { + "enabled": true // On by default: every milestone text change is reviewed (advisory: hint + reason only, never rolled back) + }, + // 🏛️ Committee: Multi-Agent Council debate tool for Operator + "committee": { + "enabled": false, + "debate_rounds": 2 + }, + // 🔎 Checker: Plan-declared checkpoint verification (optimistic async) + exit final review + "checker": { + "enabled": true, // Master switch (compat alias): false disables both gates below + "midway_checks": false, // Plan-declared midway checkpoints (off in the factory layering) + "final_check": true, // Exit final review against the user's original goal (on by default) + "max_iterations": 20, + "final_check_max_attempts": 3, + "checkpoint_max_repairs": 2, + "max_concurrent_checkpoints": 3, + "checkpoint_timeout": 180.0, + "settlement_timeout": 120.0, + "assert_failure_policy": "continue", // 'continue' or 'halt' on assert failures + "device_probes": true // Checker's enumerated read-only device probes + }, + // 🎬 Video Analyzer & Screen Recording: Continuous screen recording via scrcpy and temporal analysis + "video_analyzer": { + "enabled": true, // Whether continuous video recording and video tools are active (default: auto-detected) + "enable_ledger": true + } + }, + // ========================================================================== + // 🌐 4.3 Shared Capabilities & Global Overrides + // ========================================================================== + // Shared step memory and history compression + // Transcript ledger + layered compression for the Pro operator. + "memory": { + // Background summarization runtime (visual/capsule lenses) + "runtime": { + "max_concurrency": 2, // 1→2 per 2026-09-01 baseline: serial queue pushed summary-ready P90 past the scrub window + "retry_limit": 3, + "flush_timeout_s": 30 + }, + "transcript": { + // ROLLBACK SWITCH: set false to restore the legacy per-turn 2-message + // prompt path byte-for-byte (L2/L3 chunk compression rides this same + // flag). See services/token_meter.py for measured session token usage + // and cache-hit ratios. + // LOCAL-MODEL NOTE: transcript + capsule lens are Google-bound + // (get_google_llm) — disabled under the ondevice-platform deployment. + "enabled": false, + "context_budget_tokens": 80000, + // Below start_ratio of the operator's own measured prompt size, closed + // segments only prepare their summary; the original turns are kept in + // context and replaced once occupancy reaches this ratio. Measurements + // come from the operator; other agents' calls do not affect this gate. + "start_ratio": 0.35, + "soft_ratio": 0.7, + "hard_ratio": 0.9, + "min_active_steps": 5, + // Screenshot edge: 6 while the operator's measured context is below + // start_ratio (nothing is being replaced yet), 3 from there up. A + // screenshot reaching the edge is replaced in place by its visual + // summary (the 'Current Screenshot' label leaves with it) and never + // restored; the depth only decides how long new ones stay. + "image_scrub_depth": 3, + "image_scrub_depth_relaxed": 6, + "pending_grace_steps": 3, + // Text edge: once a newer observation exists (depth 1) the UI element + // list, the plan recitation and the per-turn ephemeral blocks + // (reminders, hints, guidance wrappers) leave the older observation. + // User instruction bodies remain in history. The text edge stays + // shallow on purpose: only the live observation carries an indexed + // element list, so a stale [n] index can never be picked up as a + // target. + "xml_scrub_depth": 1, + // Local historical-state hint (no model call); distance calibrated + // 2026-09-01 from 460 dHash-stamped on-device steps (same screen <=4, + // different screens >=7). + "similarity_hint": true, + "similarity_max_distance": 5 + }, + // Segment (L2) chunk compression: three-band chunks, era folding + "chunking": { + "max_steps": 12, + // Size/pressure closes wait until at least this many turns are + // eligible, so heavy turns do not become one-step chunks (one capsule + // call each); milestone closes are exempt, the hard line waives it. + "min_steps": 3, + "target_source_tokens": 2000, + "model": "gemini-3.8-flash", + "max_chunks": 8 + // "max_eras": 8 // independent era cap; omitted = follows max_chunks + }, + // search_history: deterministic keyword / step-range lookup over stored history + "recall": { + "enabled": true, + "max_results": 5, + "max_text_tokens": 2000, + "screen_scan_steps": 150 + }, + // replay_steps: full step replays (whole trailing steps are dropped over budget) + "replay": { + "max_steps": 5, + "max_tokens": 12000 + } + }, + // 🎬 Screen Recording & Video Analyzer Configuration + "video_analyzer": { + "enabled": true, // Whether continuous screen recording via scrcpy is active (default: auto-detected) + "enable_ledger": true + // "processing": "auto", // How Gemini sub-agents watch a clip: auto (agentic on Gemini 3.6+ Flash, static elsewhere) | agentic | static + // "agentic_chunk_size_seconds": 600, // Longest clip one agentic sub-agent takes; static mode keeps chunk_size_seconds (60) + // "agentic_call_timeout_seconds": 300 // Hard timeout for one agentic sub-agent response + }, + // 📝 Outputter: Post-execution report synthesis and structured schema extraction + // Reviews action history, notes, and verifies goal achievement to synthesize final output. + "outputter": { + "enabled": true, // Whether Outputter is mounted to synthesize final outputs + "force_synthesis": false // Force Outputter synthesis even without explicit output schema + }, + // 🧭 Explorer tier: the perception sub-agent behind `ask_explorer`. + // Tiers are a user setting; calling agents never see which tier is active. + // flash - one-shot visual detection on the screenshot (fastest) + // pro - 3-turn reasoning loop: UI-tree search + coordinate audit + detection + // ultra - 8-turn loop adding zoom, OCR and pixel-level image processing (slowest) + // `flash.explorer_mode` and `pro.explorer.mode` above are the per-profile knobs; + // `caching` (Gemini explicit context caching) defaults per tier: off for pro, on for ultra. + "explorer": { + "default_version": "flash" // Fallback tier when no profile knob applies + // "caching": true, // Uncomment to force context caching for pro/ultra + }, + // Advanced: per-agent tier override, e.g. {"validator": "ultra"}. Takes + // precedence over the profile knobs; leave empty to let them decide. + "explorer_versions": {}, +// 🚫 Per-agent Tool Denylists + "denylisted_tools": { + "explorer": [] // Perception tools to withhold from the Explorer, e.g. "ask_image_processor" + } + } +} diff --git a/pyproject.toml b/pyproject.toml index e5cd095fe..bb58098ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,6 +68,9 @@ dependencies = [ "scipy>=1.13.0", # System, Utilities & Telemetry "psutil>=5.9.0", + # On-device OCR via Apple Vision (macOS only); guarded import — the OCR + # seam degrades to Google Cloud Vision or disabled without it. + "pyobjc-framework-Vision>=10.0,<13; sys_platform == 'darwin'", "retry>=0.9.2", "posthog>=3.5.0", "uuid-utils>=0.9.0", diff --git a/tests/unit/agents/test_object_detector_coordinates.py b/tests/unit/agents/test_object_detector_coordinates.py index ebbca5700..6033db2f6 100644 --- a/tests/unit/agents/test_object_detector_coordinates.py +++ b/tests/unit/agents/test_object_detector_coordinates.py @@ -27,6 +27,7 @@ _detected_batch_scale, _endpoint_coordinate_format, _image_dimensions, + _normalize_detected_box, _normalize_detected_point, _qwen_resized_dimensions, ) @@ -110,6 +111,63 @@ def test_batch_scale_all_zero_is_undeclared(): assert _detected_batch_scale([_item(0, 0)]) is None +def test_batch_scale_scans_box_2d_coords(): + boxes = [ + {"box_2d": [0.1, 0.2, 0.3, 0.4], "label": "a"}, + {"box_2d": [0.5, 0.6, 0.7, 0.8], "label": "b"}, + ] + assert _detected_batch_scale(boxes) == "norm" + assert _detected_batch_scale([{"box_2d": [100, 200, 300, 1400]}]) == "px" + + +# --------------------------------------------------------------------------- +# box_2d detection output (Gemma 4 native [ymin, xmin, ymax, xmax] / 1000) +# --------------------------------------------------------------------------- + + +def test_box_2d_yx_1000_derives_center_point(): + # Gemma-style [ymin, xmin, ymax, xmax] -> contract [x1, y1, x2, y2]. + item = {"box_2d": [200, 100, 400, 300], "label": "icon"} + assert _normalize_detected_box(item, "yx_1000", (1000, 2000), None) is True + assert item["box_2d"] == [100.0, 200.0, 300.0, 400.0] + assert item["point"] == [200.0, 300.0] + + +def test_box_2d_xy_1000_keeps_axes(): + item = {"box_2d": [100, 200, 300, 400]} + assert _normalize_detected_box(item, "xy_1000", (1000, 2000), None) is True + assert item["box_2d"] == [100.0, 200.0, 300.0, 400.0] + assert item["point"] == [200.0, 300.0] + + +def test_box_2d_norm_scale_scales_and_swaps(): + item = {"box_2d": [0.2, 0.1, 0.4, 0.3]} + assert _normalize_detected_box(item, "yx_norm", (1000, 2000), None) is True + assert item["box_2d"] == [100.0, 200.0, 300.0, 400.0] + assert item["point"] == [200.0, 300.0] + + +def test_box_2d_keeps_valid_point(): + item = {"point": [800, 200], "box_2d": [200, 100, 400, 300]} + assert _normalize_detected_box(item, "yx_1000", (1000, 2000), None) is False + _normalize_detected_point(item, "yx_1000", (1000, 2000), None) + assert item["point"] == [200.0, 800.0] + assert item["box_2d"] == [100.0, 200.0, 300.0, 400.0] + + +def test_box_2d_replaces_unusable_point(): + item = {"point": ["a", "b"], "box_2d": [200, 100, 400, 300]} + assert _normalize_detected_box(item, "yx_1000", (1000, 2000), None) is True + assert item["point"] == [200.0, 300.0] + + +def test_invalid_box_2d_is_untouched(): + for bad in ({"box_2d": [1, 2]}, {"box_2d": "x"}, {"box_2d": [1, 2, "c", 4]}): + item = dict(bad) + assert _normalize_detected_box(item, "yx_1000", (100, 100), None) is False + assert item == bad + + def test_batch_scale_override_fixes_norm_batch_under_1000_contract(): item = _item(0.5, 0.2) _normalize_detected_point(item, "yx_1000", (1000, 2000), "norm") @@ -198,3 +256,43 @@ async def test_run_object_detection_uses_endpoint_coordinate_format(): point = result["detected"][0]["point"] # 496px/992w -> 500x, 992px/1984h -> 500y on the 0-1000 grid. assert point == [pytest.approx(500.0), pytest.approx(500.0)] + + +@pytest.mark.asyncio +async def test_run_object_detection_accepts_box_2d_output(): + """End-to-end: a box-only response (Gemma-style) still yields a contract point.""" + import io + from unittest.mock import AsyncMock, patch + + from PIL import Image + + from artemis.agents.object_detector.object_detector import _run_object_detection + + buf = io.BytesIO() + Image.new("RGB", (1000, 2000)).save(buf, format="PNG") + image_bytes = buf.getvalue() + + fake_llm = SimpleNamespace(endpoint=SimpleNamespace(coordinate_format=None)) + vlm_output = [{"box_2d": [200, 100, 400, 300], "label": "home button"}] + + with ( + patch( + "artemis.agents.object_detector.object_detector.get_llm", + return_value=fake_llm, + ), + patch( + "artemis.agents.object_detector.object_detector._detect_single_label", + new_callable=AsyncMock, + return_value=vlm_output, + ), + ): + ctx = SimpleNamespace(llm_config=SimpleNamespace()) + result = await _run_object_detection( + ctx=ctx, + image_bytes=image_bytes, + queries=["home button"], + ) + + detected = result["detected"][0] + assert detected["point"] == [pytest.approx(200.0), pytest.approx(300.0)] + assert detected["box_2d"] == [100.0, 200.0, 300.0, 400.0] diff --git a/tests/unit/utils/test_optional_ocr.py b/tests/unit/utils/test_optional_ocr.py index d8aa0dcd7..e7733e5b3 100644 --- a/tests/unit/utils/test_optional_ocr.py +++ b/tests/unit/utils/test_optional_ocr.py @@ -39,15 +39,19 @@ async def test_is_ocr_configured_false_when_unset(monkeypatch): monkeypatch.delenv("API_KEY", raising=False) monkeypatch.delenv("GOOGLE_API_KEY", raising=False) - with patch.object(Settings, "get_api_key", return_value=None): + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), + ): assert not is_ocr_configured() @pytest.mark.asyncio async def test_perform_ocr_returns_empty_list_when_unconfigured(monkeypatch): - """Verify perform_ocr returns [] when no OCR key is present.""" + """Verify perform_ocr returns [] when no OCR provider is available.""" with ( patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), patch.dict("os.environ", {}, clear=True), ): result = await perform_ocr(screenshot_b64="dummy_b64") @@ -62,6 +66,7 @@ async def test_perform_ocr_executes_api_call_when_configured(): with ( patch.object(Settings, "get_api_key", return_value=mock_key), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), patch("artemis.utils.ocr_api.get_http_client") as mock_client, ): mock_resp = MagicMock() @@ -90,6 +95,158 @@ async def test_perform_ocr_executes_api_call_when_configured(): assert result[0]["text"] == "Login" +def test_is_ocr_configured_true_with_apple_vision(monkeypatch): + """Apple Vision alone (no Google key) makes OCR available on macOS.""" + monkeypatch.delenv("OCR_API_KEY", raising=False) + monkeypatch.delenv("VISION_API_KEY", raising=False) + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + ): + assert is_ocr_configured() + + +@pytest.mark.asyncio +async def test_perform_ocr_uses_apple_vision_first(monkeypatch): + """Under auto provider, on-device Apple Vision answers without any HTTP call.""" + monkeypatch.delenv("OCR_API_KEY", raising=False) + monkeypatch.delenv("VISION_API_KEY", raising=False) + apple_result = [{"text": "Login", "position": [{"x": 1, "y": 2}]}] + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + patch( + "artemis.utils.ocr_api._run_apple_vision", + new_callable=AsyncMock, + return_value=apple_result, + ) as mock_apple, + ): + result = await perform_ocr(screenshot_b64="aGVsbG8=") + assert result == apple_result + mock_apple.assert_awaited_once_with(b"hello") + + +@pytest.mark.asyncio +async def test_perform_ocr_falls_back_to_google_on_apple_failure(): + """An Apple Vision error under auto falls back to a keyed Google Vision.""" + mock_key = MagicMock() + mock_key.get_secret_value.return_value = "test_key" + + with ( + patch.object(Settings, "get_api_key", return_value=mock_key), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + patch( + "artemis.utils.ocr_api._run_apple_vision", + new_callable=AsyncMock, + side_effect=RuntimeError("boom"), + ), + patch("artemis.utils.ocr_api.get_http_client") as mock_client, + ): + mock_resp = MagicMock() + mock_resp.status_code = 200 + mock_resp.json.return_value = { + "responses": [ + { + "textAnnotations": [ + {"description": "Full", "boundingPoly": {}}, + { + "description": "Login", + "boundingPoly": {"vertices": [{"x": 1, "y": 2}]}, + }, + ] + } + ] + } + mock_http = AsyncMock() + mock_http.post.return_value = mock_resp + mock_client.return_value = mock_http + + result = await perform_ocr(screenshot_b64="aGVsbG8=") + assert result[0]["text"] == "Login" + + +@pytest.mark.asyncio +async def test_perform_ocr_apple_failure_without_key_returns_empty(monkeypatch): + """Apple failure with no Google key degrades to [] instead of raising.""" + monkeypatch.delenv("OCR_API_KEY", raising=False) + monkeypatch.delenv("VISION_API_KEY", raising=False) + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + patch( + "artemis.utils.ocr_api._run_apple_vision", + new_callable=AsyncMock, + side_effect=RuntimeError("boom"), + ), + ): + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + + +@pytest.mark.asyncio +async def test_perform_ocr_forced_apple_never_calls_google(monkeypatch): + """ARTEMIS_OCR_PROVIDER=apple must not fall through to the cloud provider.""" + monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "apple") + mock_key = MagicMock() + mock_key.get_secret_value.return_value = "test_key" + with ( + patch.object(Settings, "get_api_key", return_value=mock_key), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + patch( + "artemis.utils.ocr_api._run_apple_vision", + new_callable=AsyncMock, + side_effect=RuntimeError("boom"), + ), + patch("artemis.utils.ocr_api.get_http_client") as mock_client, + ): + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + mock_client.assert_not_called() + + +@pytest.mark.asyncio +async def test_perform_ocr_apple_breaker_stops_dispatch_after_failures(monkeypatch): + """Consecutive Apple subprocess failures disable the provider; a third + call must not spawn another worker.""" + import artemis.utils.ocr_api as ocr_api + + monkeypatch.delenv("OCR_API_KEY", raising=False) + monkeypatch.delenv("VISION_API_KEY", raising=False) + monkeypatch.setattr(ocr_api, "_apple_vision_consecutive_failures", 0) + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + patch( + "artemis.utils.ocr_api._apple_vision_subprocess", + new_callable=AsyncMock, + side_effect=RuntimeError("wedged"), + ) as mock_worker, + ): + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + assert mock_worker.await_count == 4 + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + assert not ocr_api.is_ocr_configured() + assert mock_worker.await_count == 4 + + +def test_vision_box_to_vertices_converts_bottom_left_origin(): + """Vision's normalized bottom-left box maps to TL/TR/BR/BL pixel vertices.""" + from types import SimpleNamespace + + from artemis.utils.apple_vision_ocr import _vision_box_to_vertices + + bb = SimpleNamespace( + origin=SimpleNamespace(x=0.1, y=0.8), + size=SimpleNamespace(width=0.2, height=0.05), + ) + vertices = _vision_box_to_vertices(bb, width=1000, height=2000) + assert vertices == [ + {"x": 100, "y": 300}, + {"x": 300, "y": 300}, + {"x": 300, "y": 400}, + {"x": 100, "y": 400}, + ] + + def test_fuse_ocr_with_xml_empty_ocr_retains_xml_pruning(): """Verify fuse_ocr_with_xml preserves full XML structure and allows downstream pruning.""" sample_xml = [ From 27006da5a5d0422720ad46e5bdeede03964d4e45 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 8 Oct 2026 04:00:56 +0900 Subject: [PATCH 03/45] test: reset the Apple Vision OCR breaker counter between tests --- tests/conftest.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index b99e8d4dd..0b148fed0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -32,6 +32,20 @@ def mock_driver(): return MockDeviceDriver(device_id="fixture-mock-device", width=1080, height=2400) +@pytest.fixture(autouse=True) +def _reset_apple_vision_ocr_breaker(): + """Isolate the Apple Vision OCR circuit-breaker counter between tests. + + Tests exercising the real ``perform_ocr`` path with undecodable images + trip the process-global failure counter and would silently disable the + provider for every later test in the session.""" + import artemis.utils.ocr_api as ocr_api + + ocr_api._apple_vision_consecutive_failures = 0 + yield + ocr_api._apple_vision_consecutive_failures = 0 + + def pytest_collection_modifyitems(items: list[pytest.Item]) -> None: """Attach test-layer markers according to the owning test directory.""" for item in items: From edde23d4ead5521176475be8eaf560f94b00fa1b Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 20:09:21 +0900 Subject: [PATCH 04/45] feat: gate local model installs through the readiness engine Adds a LocalModelEndpointProbe (artemis doctor / console wizard / mobile_diagnose): walks the active LLM config for custom-provider endpoints, verifies each required model alias is served via GET {api_base}/models, and surfaces guided remediation actions - `ondevice-agent-platform model pull --alias ` when an alias is missing, `ondevice-agent-platform serve` when the endpoint is down. LLMCredentialsProbe now treats config-bound custom endpoints as a satisfied credential instead of reporting a missing API key. --- artemis/core/diagnostics/engine.py | 5 + .../diagnostics/probes/credentials_probe.py | 23 ++ .../diagnostics/probes/local_model_probe.py | 215 ++++++++++++++++++ 3 files changed, 243 insertions(+) create mode 100644 artemis/core/diagnostics/probes/local_model_probe.py diff --git a/artemis/core/diagnostics/engine.py b/artemis/core/diagnostics/engine.py index 97f9d20ca..5b3c91e26 100644 --- a/artemis/core/diagnostics/engine.py +++ b/artemis/core/diagnostics/engine.py @@ -27,6 +27,9 @@ LLMCredentialsProbe, VisionOCRProbe, ) +from artemis.core.diagnostics.probes.local_model_probe import ( + LocalModelEndpointProbe, +) from artemis.core.diagnostics.probes.runtime_probe import ( PythonRuntimeProbe, SystemConfigProbe, @@ -67,6 +70,7 @@ def __init__(self): self._credentials_probe = LLMCredentialsProbe() self._ocr_probe = VisionOCRProbe() self._adb_probe = AdbDeviceProbe() + self._local_model_probe = LocalModelEndpointProbe() self._report_cache: SystemReadinessReport | None = None self._report_cache_time = 0.0 self._report_cache_generation = -1 @@ -80,6 +84,7 @@ def __init__(self): self.register_probe(self._credentials_probe) self.register_probe(self._ocr_probe) self.register_probe(self._adb_probe) + self.register_probe(self._local_model_probe) def register_probe(self, probe: BaseProbe) -> None: """Register a new diagnostic probe.""" diff --git a/artemis/core/diagnostics/probes/credentials_probe.py b/artemis/core/diagnostics/probes/credentials_probe.py index 683e216c3..b1516b5b2 100644 --- a/artemis/core/diagnostics/probes/credentials_probe.py +++ b/artemis/core/diagnostics/probes/credentials_probe.py @@ -144,6 +144,29 @@ async def probe(self) -> ProbeResult: ) api_keys_map[prov_id] = val.strip() + # Config-bound local endpoints (e.g. ondevice-agent-platform) need no + # API key: the custom provider authenticates to a loopback server. + try: + from artemis.core.diagnostics.probes.local_model_probe import ( + _local_endpoints, + ) + + for base, models in _local_endpoints().items(): + configured_providers.append( + { + "provider": "custom", + "label": "Local Model Endpoint", + "masked": base, + "raw_key": base, + "key": base, + } + ) + api_keys_map["custom"] = base + for alias in models: + api_keys_map.setdefault(alias, base) + except Exception: + pass + if ocr_key and not is_placeholder_key(ocr_key): api_keys_map["ocr"] = ocr_key.get_secret_value() diff --git a/artemis/core/diagnostics/probes/local_model_probe.py b/artemis/core/diagnostics/probes/local_model_probe.py new file mode 100644 index 000000000..ce97701d6 --- /dev/null +++ b/artemis/core/diagnostics/probes/local_model_probe.py @@ -0,0 +1,215 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Local Model Endpoint Readiness Probe. + +When artemis.jsonc routes nodes to a ``custom`` provider (the local +ondevice-agent-platform at ``api_base``), every configured model alias must +actually be pulled and served there. This probe verifies the endpoint is +reachable and that each required model appears in ``GET {api_base}/models``, +guiding the user through ``model pull`` / ``serve`` when it does not. +""" + +from typing import Any + +import httpx + +from artemis.core.diagnostics.probes.base import BaseProbe +from artemis.core.diagnostics.schema import ( + ProbeAction, + ProbeCategory, + ProbeResult, + ProbeStatus, +) +from third_party.mobile_use.config.llm import LLM +from third_party.mobile_use.utils.logger import get_logger + +logger = get_logger(__name__) + +_PROBE_HTTP_TIMEOUT_S = 5.0 +_OAP_BIN = "ondevice-agent-platform" + + +def _iter_configured_llms() -> list[LLM]: + """Every LLM/LLMWithFallback configured in the active artemis.jsonc, + including per-node fallbacks.""" + from artemis.config.llm import parse_llm_config + + llms: list[LLM] = [] + cfg = parse_llm_config() + for name in type(cfg).model_fields: + node = getattr(cfg, name, None) + if isinstance(node, LLM): + llms.append(node) + fallback = getattr(node, "fallback", None) + if isinstance(fallback, LLM): + llms.append(fallback) + elif node is not None and hasattr(node, "model_fields_set"): + # Container (e.g. LLMConfigUtils) - walk its LLM fields too. + for sub_name in type(node).model_fields: + sub = getattr(node, sub_name, None) + if isinstance(sub, LLM): + llms.append(sub) + fallback = getattr(sub, "fallback", None) + if isinstance(fallback, LLM): + llms.append(fallback) + return llms + + +def _local_endpoints() -> dict[str, set[str]]: + """Map api_base -> set of model aliases required on it (custom provider).""" + endpoints: dict[str, set[str]] = {} + for llm in _iter_configured_llms(): + if llm.provider == "custom" and llm.api_base: + base = llm.api_base.rstrip("/") + endpoints.setdefault(base, set()).add(llm.model) + return endpoints + + +class LocalModelEndpointProbe(BaseProbe): + """Verify local model endpoints serve every configured custom model.""" + + @property + def probe_id(self) -> str: + return "local_model_endpoint" + + @property + def category(self) -> ProbeCategory: + return ProbeCategory.RUNTIME + + @property + def is_blocker(self) -> bool: + return True + + async def probe(self) -> ProbeResult: + try: + endpoints = _local_endpoints() + except Exception as e: + # A broken config is the SystemConfigProbe's job - don't double-report. + logger.debug(f"local model probe skipped: cannot parse LLM config: {e}") + endpoints = {} + + if not endpoints: + return ProbeResult( + id=self.probe_id, + category=self.category, + title="Local Model Endpoint", + status=ProbeStatus.PASS, + is_blocker=self.is_blocker, + summary="Not used", + description="No node is bound to a local custom endpoint; cloud providers serve all models.", + metadata={"endpoints": {}}, + actions=[ + ProbeAction( + action_type="hint", + label="Cloud Providers", + payload="Configured providers are remote; no local model install is required.", + ) + ], + ) + + reports: list[dict[str, Any]] = [] + missing_actions: list[ProbeAction] = [] + worst_summary = "" + async with httpx.AsyncClient(timeout=_PROBE_HTTP_TIMEOUT_S) as client: + for base, required in sorted(endpoints.items()): + try: + resp = await client.get(f"{base}/models") + resp.raise_for_status() + served = { + m["id"] + for m in resp.json().get("data", []) + if isinstance(m, dict) and isinstance(m.get("id"), str) + } + except Exception as e: + reports.append({"api_base": base, "reachable": False, "error": str(e)}) + worst_summary = f"{base} unreachable" + missing_actions.append( + ProbeAction( + action_type="command", + label="Start Model Server", + payload=f"{_OAP_BIN} serve", + ) + ) + continue + missing = sorted(required - served) + reports.append( + { + "api_base": base, + "reachable": True, + "required": sorted(required), + "served": sorted(served), + "missing": missing, + } + ) + for alias in missing: + worst_summary = f"model '{alias}' not installed" + missing_actions.append( + ProbeAction( + action_type="command", + label=f"Pull {alias}", + payload=f"{_OAP_BIN} model pull --alias {alias}", + ) + ) + + unreachable = [r for r in reports if not r.get("reachable")] + with_missing = [r for r in reports if r.get("missing")] + + if not unreachable and not with_missing: + served_total = sorted({m for r in reports for m in r.get("served", [])}) + return ProbeResult( + id=self.probe_id, + category=self.category, + title="Local Model Endpoint", + status=ProbeStatus.PASS, + is_blocker=self.is_blocker, + summary=f"Serving {len(served_total)} model(s)", + description=( + f"{len(reports)} local endpoint(s) reachable and all configured " + f"model aliases are pulled and serving." + ), + metadata={"endpoints": reports}, + actions=[ + ProbeAction( + action_type="hint", + label="Models Ready", + payload=f"Serving: {', '.join(served_total)}", + ) + ], + ) + + if unreachable: + description = ( + "Local model endpoint(s) unreachable: " + + ", ".join(r["api_base"] for r in unreachable) + + ". The agent cannot run until the server is up." + ) + else: + missing_all = sorted({m for r in with_missing for m in r["missing"]}) + description = ( + "Configured model(s) not installed on the local endpoint: " + + ", ".join(missing_all) + + ". Pull them before running a task." + ) + return ProbeResult( + id=self.probe_id, + category=self.category, + title="Local Model Endpoint", + status=ProbeStatus.FAIL, + is_blocker=self.is_blocker, + summary=worst_summary, + description=description, + metadata={"endpoints": reports}, + actions=missing_actions, + ) From fcbaec11fb71120e777a3fe01d26c4b72989b096 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 20:10:52 +0900 Subject: [PATCH 05/45] fix: use the gemma4-e4b alias actually served by the platform --- config/artemis.gemma4.jsonc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/artemis.gemma4.jsonc b/config/artemis.gemma4.jsonc index 9b785ad9b..4e9254a1a 100644 --- a/config/artemis.gemma4.jsonc +++ b/config/artemis.gemma4.jsonc @@ -3,13 +3,13 @@ // ☕ ARTEMIS Autonomous Agent & Framework Configuration — GEMMA 4 SPIKE // ============================================================================== // Single-model deployment: every node (reasoning + vision + grounding) resolves - // to one gemma-4-e4b endpoint on the ondevice-agent-platform server. + // to one gemma4-e4b endpoint on the ondevice-agent-platform server. // // ACTIVATION (pick one): // export ARTEMIS_ARTEMIS_JSONC=config/artemis.gemma4.jsonc // # or rename this file over artemis.jsonc // - // PREREQUISITE: the :8080 platform must actually serve the "gemma-4-e4b" alias + // PREREQUISITE: the :8080 platform must actually serve the "gemma4-e4b" alias // (curl http://127.0.0.1:8080/v1/models). Until it does, keep artemis.jsonc. // // Grounding notes: @@ -26,14 +26,14 @@ // One unified multimodal model serves every role; the server alias must // match the platform's registry entry (Gemma 4 E4B via the mlx-vlm provider, // e.g. mlx-community/gemma-4-E4B-it-4bit). - "model": "gemma-4-e4b", + "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", // Local reasoning + vision encoder; keep the same generous timeout the // qwen deployment needed for thinking preambles. "timeout": 300, "fallback": { "provider": "custom", - "model": "gemma-4-e4b", + "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", "timeout": 300 } @@ -71,11 +71,11 @@ // Unified single-model route via ondevice-agent-platform (OpenAI-compatible). "ondevice-gemma4": { "provider": "custom", - "model": "gemma-4-e4b", + "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", "fallback": { "provider": "custom", - "model": "gemma-4-e4b", + "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1" } } From bb43c5face1ec1ab685206a48767aeeab80f8eb3 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 15:29:21 +0900 Subject: [PATCH 06/45] Bind ARTEMIS to the local platform: gemma4-e4b default, vision-hybrid OCR - default -> gemma4-e4b (custom provider, :8080/v1, 300s timeout), fallback -> qwen3.8-9b on the same endpoint - operator/object_detector/video_analyzer/explorer primaries -> vision-hybrid: Apple Vision answers confident OCR turns natively; everything else escalates to qwen-vl (kept as each node's fallback) Includes previously-uncommitted local-provider bindings from the gemma4 default switch; no behavior change for semantic turns. --- config/artemis.jsonc | 95 +++++++++++++++++++++++++++++++------------- 1 file changed, 67 insertions(+), 28 deletions(-) diff --git a/config/artemis.jsonc b/config/artemis.jsonc index 517d73840..4e15fbdd7 100644 --- a/config/artemis.jsonc +++ b/config/artemis.jsonc @@ -7,13 +7,20 @@ // 1. Global Default Model (Applied to all sub-agents unless overridden below) // ------------------------------------------------------------------------------ "default": { - "provider": "google", - "model": "gemini-3.8-flash", - "thinking_level": "medium", + "provider": "custom", + // gemma4-e4b via ondevice-agent-platform (mlx-vlm gemma4 route); + // vision nodes use vision-hybrid (Apple Vision OCR first, escalates + // to qwen-vl only when OCR cannot answer), qwen3.8-9b fallback. + "model": "gemma4-e4b", + "api_base": "http://127.0.0.1:8080/v1", + // Local 9B reasoning runs ~15-30 tok/s with a thinking preamble; + // the 60s endpoint default times out mid-response on dense prompts. + "timeout": 300, "fallback": { - "provider": "google", - "model": "gemini-3.7-flash", - "thinking_level": "medium" + "provider": "custom", + "model": "qwen3.8-9b", + "api_base": "http://127.0.0.1:8080/v1", + "timeout": 300 } }, @@ -58,27 +65,50 @@ }, // 🎯 Operator: Screen perception, element interaction, and direct execution + // MUST stay on a vision-capable model — it consumes the screenshot every + // turn; the platform hard-rejects image parts on text-only models (400). "operator": { + "model": "vision-hybrid", "thinking_level": "medium", - "include_thoughts": true + "include_thoughts": true, + "fallback": { + "provider": "custom", + "model": "qwen-vl", + "api_base": "http://127.0.0.1:8080/v1" + } }, // 🎬 Video Analyzer: Multimodal screen recording verification and temporal analysis - // NOTE: Dual-path engine automatically routes: - // - Native Gemini Files API for Gemini models with Google API keys (long video file stream); - // Gemini 3.6+ Flash sub-agents use agentic video understanding by default (see video_analyzer.processing below) - // - Universal Multi-Model Engine for Claude 3.5/3.7, GPT-4o, OpenRouter, Vertex AI (dynamic keyframe extraction + multimodal tool calling) - "video_analyzer": {}, + // Local route: universal multi-model path feeds extracted keyframes to + // qwen-vl (native Gemini Files API path only exists for google provider). + "video_analyzer": { + "provider": "custom", + "model": "vision-hybrid", + "api_base": "http://127.0.0.1:8080/v1", + "fallback": { + "provider": "custom", + "model": "qwen-vl", + "api_base": "http://127.0.0.1:8080/v1" + } + }, // 👁️ Object Detector & Explorer (Flash Mode): Visual coordinates grounding and bounding boxes - // CRITICAL REQUIREMENT: Standard LLMs (including standard Gemini Flash, GPT-4o, Claude 3.7) lack sub-pixel spatial coordinate fine-tuning. - // To achieve accurate [x, y] point and bounding box localization, this node MUST use specialized Gemini ER (Embodied Reasoning / Robotics) models: - // e.g., "gemini-robotics-er-2-preview". Non-ER models will fail spatial coordinate detection. + // Local Qwen3-VL via ondevice-agent-platform (OpenAI-compatible :8080). + // Verified on-device: qwen-vl emits [x, y] on the 0-1000 grid matching the + // detector contract; "xy_1000" only fixes the axis order vs Gemini ER's + // [y, x]. Off-contract batches still auto-rescale (0-1 or raw pixels). "object_detector": { - "model": "gemini-robotics-er-2-preview", + "provider": "custom", + "model": "vision-hybrid", + "api_base": "http://127.0.0.1:8080/v1", + "coordinate_format": "xy_1000", + "timeout": 300, "fallback": { - "provider": "google", - "model": "gemini-robotics-er-2-preview" + "provider": "custom", + "model": "qwen-vl", + "api_base": "http://127.0.0.1:8080/v1", + "coordinate_format": "xy_1000", + "timeout": 300 } }, @@ -86,21 +116,25 @@ // NOTE: // - "flash" version delegates directly to object_detector (requires Gemini ER model above). // - "pro" / "ultra" versions run multi-turn ReAct loops (supports both Native Gemini and Universal Multi-Model LangChain engines). + // pro/ultra tiers consume screenshots directly — must be vision-capable. "explorer": { - "thinking_level": "medium" + "model": "vision-hybrid", + "thinking_level": "medium", + "fallback": { + "provider": "custom", + "model": "qwen-vl", + "api_base": "http://127.0.0.1:8080/v1" + } }, // 📋 Summarizer: Aggregates step history and generates structured outcome "summarizer": {}, // 🔽 Hopper: Fast lightweight package name locator - "hopper": { - "model": "gemini-3.5-flash-lite", - "fallback": { - "provider": "google", - "model": "gemini-3.1-flash-lite" - } - }, + // Inherits the local default; a Gemini model name here would be sent to + // the local server and fail. qwen-small is registered if a lighter hopper + // is wanted: {"model": "qwen-small"}. + "hopper": {}, // 📝 Outputter: Synthesizes execution trace into final output report "outputter": {}, @@ -143,8 +177,11 @@ // 🧠 Step Summarizer: Asynchronous visual context compressor // Summarizes intermediate steps in background without blocking the runner, // replacing images only after strictly objective, high-density summaries are ready. + // LOCAL-MODEL NOTE: the visual-transition lens bypasses the LLM router + // (get_google_llm) — with no GOOGLE_API_KEY it crashes runner init. + // Disabled for the ondevice-platform deployment. "step_summarizer": { - "enabled": true, // Whether background step summarization is active + "enabled": false, // Whether background step summarization is active "model": "gemini-3.5-flash-lite", // Lightweight model for fast background inference "prune_history_xml": true // Prune outdated heavy XML trees from historical steps } @@ -206,7 +243,9 @@ // prompt path byte-for-byte (L2/L3 chunk compression rides this same // flag). See services/token_meter.py for measured session token usage // and cache-hit ratios. - "enabled": true, + // LOCAL-MODEL NOTE: transcript + capsule lens are Google-bound + // (get_google_llm) — disabled under the ondevice-platform deployment. + "enabled": false, "context_budget_tokens": 80000, // Below start_ratio of the operator's own measured prompt size, closed // segments only prepare their summary; the original turns are kept in From 837d53f9b5203249e03a17139777c79defc4d612 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 16:04:07 +0900 Subject: [PATCH 07/45] Bind vision nodes to gemma4-e4b; vision-hybrid reserved as OCR route operator/object_detector/video_analyzer/explorer primaries now use gemma4-e4b (semantic/grounding); qwen-vl stays each node's fallback. vision-hybrid is the OCR-only route per user direction. Note: gemma's 0-1000 grid output verified only on synthetic input - qwen-vl remains the verified grounding fallback. --- config/artemis.jsonc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/config/artemis.jsonc b/config/artemis.jsonc index 4e15fbdd7..4e8f7d12b 100644 --- a/config/artemis.jsonc +++ b/config/artemis.jsonc @@ -9,8 +9,8 @@ "default": { "provider": "custom", // gemma4-e4b via ondevice-agent-platform (mlx-vlm gemma4 route); - // vision nodes use vision-hybrid (Apple Vision OCR first, escalates - // to qwen-vl only when OCR cannot answer), qwen3.8-9b fallback. + // vision nodes use gemma4-e4b (semantic/grounding); vision-hybrid + // is the OCR-only route (Apple Vision first, qwen-vl escalation). "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", // Local 9B reasoning runs ~15-30 tok/s with a thinking preamble; @@ -68,7 +68,7 @@ // MUST stay on a vision-capable model — it consumes the screenshot every // turn; the platform hard-rejects image parts on text-only models (400). "operator": { - "model": "vision-hybrid", + "model": "gemma4-e4b", "thinking_level": "medium", "include_thoughts": true, "fallback": { @@ -83,7 +83,7 @@ // qwen-vl (native Gemini Files API path only exists for google provider). "video_analyzer": { "provider": "custom", - "model": "vision-hybrid", + "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", "fallback": { "provider": "custom", @@ -93,13 +93,15 @@ }, // 👁️ Object Detector & Explorer (Flash Mode): Visual coordinates grounding and bounding boxes - // Local Qwen3-VL via ondevice-agent-platform (OpenAI-compatible :8080). - // Verified on-device: qwen-vl emits [x, y] on the 0-1000 grid matching the + // Local gemma4-e4b via ondevice-agent-platform (OpenAI-compatible :8080). + // grounding grid verified on qwen-vl (kept as fallback); gemma grid output + // is plausible on synthetic input but NOT verified on real UIs yet. + // Previously verified on-device: qwen-vl emits [x, y] on the 0-1000 grid matching the // detector contract; "xy_1000" only fixes the axis order vs Gemini ER's // [y, x]. Off-contract batches still auto-rescale (0-1 or raw pixels). "object_detector": { "provider": "custom", - "model": "vision-hybrid", + "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", "coordinate_format": "xy_1000", "timeout": 300, @@ -118,7 +120,7 @@ // - "pro" / "ultra" versions run multi-turn ReAct loops (supports both Native Gemini and Universal Multi-Model LangChain engines). // pro/ultra tiers consume screenshots directly — must be vision-capable. "explorer": { - "model": "vision-hybrid", + "model": "gemma4-e4b", "thinking_level": "medium", "fallback": { "provider": "custom", From 5f2d1a9b5113845eb7e63e056d2137de99a2abdb Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 16:31:53 +0900 Subject: [PATCH 08/45] Route perform_ocr through platform vision-hybrid (ARTEMIS_OCR_PROVIDER=platform) Adds a 'platform' OCR provider calling the local platform's vision-hybrid route; structured observations arrive via the additive oap_ocr field (text + pixel vertices matching the boundingPoly contract). In 'auto' it sits between the native Apple Vision worker and Google Cloud Vision. Verified live: TOTAL extraction with correct normalized coordinates. --- artemis/utils/ocr_api.py | 74 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/artemis/utils/ocr_api.py b/artemis/utils/ocr_api.py index 8ad937ea8..fe2f240e2 100644 --- a/artemis/utils/ocr_api.py +++ b/artemis/utils/ocr_api.py @@ -28,9 +28,12 @@ _HTTP_CLIENT: httpx.AsyncClient | None = None # Provider selection via ARTEMIS_OCR_PROVIDER: "auto" (default) prefers -# on-device Apple Vision on macOS and falls back to Google Cloud Vision when -# an API key exists; "apple" / "google" pin a single provider. +# on-device Apple Vision on macOS, then the local platform vision-hybrid +# route (Apple Vision first, VLM delegate), then Google Cloud Vision when +# an API key exists; "apple" / "platform" / "google" pin a single provider. _OCR_PROVIDER_ENV = "ARTEMIS_OCR_PROVIDER" +_OAP_API_BASE_ENV = "OAP_API_BASE" +_OAP_OCR_MODEL_ENV = "OAP_OCR_MODEL" _APPLE_VISION_SUPPORTED: bool | None = None _APPLE_OCR_WORKER = Path(__file__).with_name("apple_vision_ocr.py") @@ -92,11 +95,14 @@ def _google_vision_key_present() -> bool: def is_ocr_configured() -> bool: - """True when some OCR provider is usable: Apple Vision on macOS, or a - configured Google Cloud Vision API key.""" + """True when some OCR provider is usable: Apple Vision on macOS, the + local platform vision-hybrid route, or a configured Google Cloud + Vision API key.""" provider = _ocr_provider() if provider == "apple": return _apple_vision_available() + if provider == "platform": + return True # loopback endpoint; reachability checked at call time if provider == "google": return _google_vision_key_present() return _apple_vision_available() or _google_vision_key_present() @@ -157,6 +163,55 @@ async def _run_apple_vision(image_bytes: bytes) -> list[dict[str, Any]]: return results +def _oap_ocr_endpoint() -> tuple[str, str]: + base = os.environ.get( + _OAP_API_BASE_ENV, "http://127.0.0.1:8080/v1" + ).rstrip("/") + return f"{base}/chat/completions", os.environ.get( + _OAP_OCR_MODEL_ENV, "vision-hybrid" + ) + + +async def _run_platform_ocr( + screenshot_b64: str, + client: httpx.AsyncClient | None = None, +) -> list[dict[str, Any]]: + """OCR via the local platform's vision-hybrid route (Apple Vision + first, VLM delegate when the image is not plain text extraction). + Structured observations arrive in the additive ``oap_ocr`` response + field as ``{text, confidence, position}`` with position already in + pixel vertices (TL,TR,BR,BL). An escalated VLM answer carries no + positions and yields ``[]`` - callers treat it like an empty OCR.""" + url, model = _oap_ocr_endpoint() + payload = { + "model": model, + "messages": [{ + "role": "user", + "content": [ + {"type": "text", + "text": "Extract all text from this image."}, + {"type": "image_url", + "image_url": { + "url": "data:image/png;base64," + screenshot_b64}}, + ], + }], + } + active_client = client if client is not None else get_http_client() + response = await active_client.post(url, json=payload, timeout=30.0) + response.raise_for_status() + results = [] + for obs in response.json().get("oap_ocr") or []: + text = obs.get("text") + position = obs.get("position") + if ( + isinstance(text, str) + and text.strip() + and isinstance(position, list) + ): + results.append({"text": text, "position": position}) + return results + + async def perform_ocr( screenshot_b64: str, client: httpx.AsyncClient | None = None, @@ -187,6 +242,17 @@ async def perform_ocr( return [] if provider == "apple": return [] + if provider == "platform": + try: + return await _run_platform_ocr(screenshot_b64, client) + except Exception as e: + logger.warning(f"platform vision-hybrid OCR failed: {e}") + return [] + if provider == "auto": + try: + return await _run_platform_ocr(screenshot_b64, client) + except Exception: + pass # daemon absent - fall through to Google if keyed api_key = _google_vision_key() if not api_key: From 636c8fa93487fe82756b6b552bd03ce04e050fe7 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 16:36:47 +0900 Subject: [PATCH 09/45] Remove apple_vision_ocr worker; vision-hybrid is the OCR path The standalone PyObjC Apple Vision worker is deleted - the platform's vision-hybrid route (oap-vision-bridge) is now the primary OCR provider in 'auto', with keyed Google Vision as the fallback. The 'apple' provider pin is a deprecated alias for 'platform'. Structured observations arrive via the additive oap_ocr field (pixel vertices, boundingPoly order). Verified live: TOTAL extraction at [446,475] through run_ocr_core under default auto. --- artemis/utils/apple_vision_ocr.py | 106 ------------------- artemis/utils/ocr_api.py | 143 +++++--------------------- tests/unit/utils/test_optional_ocr.py | 122 +++++++--------------- 3 files changed, 65 insertions(+), 306 deletions(-) delete mode 100644 artemis/utils/apple_vision_ocr.py diff --git a/artemis/utils/apple_vision_ocr.py b/artemis/utils/apple_vision_ocr.py deleted file mode 100644 index e03df770c..000000000 --- a/artemis/utils/apple_vision_ocr.py +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 2026 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Standalone Apple Vision OCR worker — run as ``python apple_vision_ocr.py``. - -Reads image bytes on stdin and writes a JSON list of -``{"text": str, "position": [{"x": int, "y": int}, ...]}`` on stdout, -matching the Google Vision ``boundingPoly.vertices`` contract. - -This module is deliberately free of artemis imports and runs in a clean -interpreter: once cv2 (and its GPU/OpenCL contexts) is loaded in the host -process, ``VNRecognizeTextRequest`` fails intermittently with e5rt -compute-stream errors. A subprocess keeps the ML stack isolated. -""" - -# pyright: reportAttributeAccessIssue=false -# pyobjc exposes AppKit/Vision classes dynamically; static stubs have no symbols. - -import io -import json -import sys - - -def _vision_box_to_vertices(bounding_box, width: int, height: int) -> list[dict[str, int]]: - """Convert a Vision normalized bounding box (origin bottom-left) to - pixel-space vertices in Google's boundingPoly order: TL, TR, BR, BL.""" - x0 = bounding_box.origin.x * width - x1 = (bounding_box.origin.x + bounding_box.size.width) * width - y_top = (1.0 - bounding_box.origin.y - bounding_box.size.height) * height - y_bottom = (1.0 - bounding_box.origin.y) * height - return [ - {"x": round(x0), "y": round(y_top)}, - {"x": round(x1), "y": round(y_top)}, - {"x": round(x1), "y": round(y_bottom)}, - {"x": round(x0), "y": round(y_bottom)}, - ] - - -def ocr_image(image_bytes: bytes) -> list[dict]: - """On-device text recognition via Apple's Vision framework.""" - import Vision - from Foundation import NSData - from PIL import Image - - with Image.open(io.BytesIO(image_bytes)) as img: - width, height = img.width, img.height - - request = Vision.VNRecognizeTextRequest.alloc().init() - request.setRecognitionLevel_(Vision.VNRequestTextRecognitionLevelAccurate) - request.setUsesLanguageCorrection_(True) - # The first entry in recognitionLanguages dominates per-request — en-US - # first garbles CJK text. Per-observation language detection (revision 3) - # avoids ordering games: every supported language is enabled and Vision - # picks the right one for each text region. - request.setAutomaticallyDetectsLanguage_(True) - langs, _ = ( - Vision.VNRecognizeTextRequest.supportedRecognitionLanguagesForTextRecognitionLevel_revision_error_( - Vision.VNRequestTextRecognitionLevelAccurate, - request.revision(), - None, - ) - ) - if langs: - request.setRecognitionLanguages_(list(langs)) - - ns_data = NSData.dataWithBytes_length_(image_bytes, len(image_bytes)) - handler = Vision.VNImageRequestHandler.alloc().initWithData_options_(ns_data, None) - ok, error = handler.performRequests_error_([request], None) - if not ok: - raise RuntimeError(f"VNRecognizeTextRequest failed: {error}") - - results = [] - for observation in request.results() or []: - candidates = observation.topCandidates_(1) - if not candidates: - continue - text = str(candidates[0].string()).strip() - if not text: - continue - results.append( - { - "text": text, - "position": _vision_box_to_vertices(observation.boundingBox(), width, height), - } - ) - return results - - -def main() -> None: - image_bytes = sys.stdin.buffer.read() - json.dump(ocr_image(image_bytes), sys.stdout) - - -if __name__ == "__main__": - main() diff --git a/artemis/utils/ocr_api.py b/artemis/utils/ocr_api.py index fe2f240e2..13c01ec1a 100644 --- a/artemis/utils/ocr_api.py +++ b/artemis/utils/ocr_api.py @@ -12,12 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import asyncio -import base64 -import json import os -from pathlib import Path -import sys from typing import Any import httpx @@ -27,15 +22,18 @@ logger = get_logger(__name__) _HTTP_CLIENT: httpx.AsyncClient | None = None -# Provider selection via ARTEMIS_OCR_PROVIDER: "auto" (default) prefers -# on-device Apple Vision on macOS, then the local platform vision-hybrid -# route (Apple Vision first, VLM delegate), then Google Cloud Vision when -# an API key exists; "apple" / "platform" / "google" pin a single provider. +# Provider selection via ARTEMIS_OCR_PROVIDER: +# "auto" (default) - the local platform's vision-hybrid route first +# (Apple Vision tier, VLM delegate when needed), +# then Google Cloud Vision when an API key exists. +# "platform" - vision-hybrid only. +# "google" - Google Cloud Vision only. +# "apple" - deprecated alias for "platform": the standalone +# Apple Vision worker was removed; the platform's +# oap-vision-bridge is the Apple Vision path now. _OCR_PROVIDER_ENV = "ARTEMIS_OCR_PROVIDER" _OAP_API_BASE_ENV = "OAP_API_BASE" _OAP_OCR_MODEL_ENV = "OAP_OCR_MODEL" -_APPLE_VISION_SUPPORTED: bool | None = None -_APPLE_OCR_WORKER = Path(__file__).with_name("apple_vision_ocr.py") def get_http_client() -> httpx.AsyncClient: @@ -49,25 +47,6 @@ def _ocr_provider() -> str: return os.environ.get(_OCR_PROVIDER_ENV, "auto").strip().lower() -def _apple_vision_supported() -> bool: - """True on macOS when the pyobjc Vision bindings are importable and the - standalone worker script exists. The real OCR runs in a subprocess: once - cv2 is loaded in this process, VNRecognizeTextRequest intermittently - fails compiling its ANE compute stream (e5rt errors).""" - global _APPLE_VISION_SUPPORTED - if _APPLE_VISION_SUPPORTED is None: - if sys.platform != "darwin" or getattr(sys, "frozen", False): - _APPLE_VISION_SUPPORTED = False - else: - try: - import Vision # noqa: F401 - - _APPLE_VISION_SUPPORTED = _APPLE_OCR_WORKER.is_file() - except ImportError: - _APPLE_VISION_SUPPORTED = False - return _APPLE_VISION_SUPPORTED - - def _google_vision_key() -> str | None: """Raw Google Vision API key, or None (placeholders are not filtered).""" ocr_secret = settings.get_api_key("ocr") @@ -95,72 +74,15 @@ def _google_vision_key_present() -> bool: def is_ocr_configured() -> bool: - """True when some OCR provider is usable: Apple Vision on macOS, the - local platform vision-hybrid route, or a configured Google Cloud - Vision API key.""" + """True when some OCR provider is usable: the local platform + vision-hybrid route (fixed loopback endpoint - reachability is a + runtime matter), or a configured Google Cloud Vision API key.""" provider = _ocr_provider() - if provider == "apple": - return _apple_vision_available() - if provider == "platform": - return True # loopback endpoint; reachability checked at call time + if provider in ("auto", "platform", "apple"): + return True if provider == "google": return _google_vision_key_present() - return _apple_vision_available() or _google_vision_key_present() - - -# A failing Vision attempt can stall for minutes inside the ObjC call (e5rt -# compute-stream compile), so every subprocess invocation is time-bounded and -# retried once in a fresh interpreter before degrading. When the OS-level -# Vision ML service is wedged, every call would burn 2x timeout forever — -# after consecutive failures the provider is disabled until a success resets -# the counter. -_APPLE_OCR_TIMEOUT_S = float(os.environ.get("APPLE_OCR_TIMEOUT", "20")) -_APPLE_OCR_MAX_CONSECUTIVE_FAILURES = 2 -_apple_vision_consecutive_failures = 0 - - -def _apple_vision_available() -> bool: - return ( - _apple_vision_supported() - and _apple_vision_consecutive_failures < _APPLE_OCR_MAX_CONSECUTIVE_FAILURES - ) - - -async def _apple_vision_subprocess(image_bytes: bytes) -> list[dict[str, Any]]: - proc = await asyncio.create_subprocess_exec( - sys.executable, - str(_APPLE_OCR_WORKER), - stdin=asyncio.subprocess.PIPE, - stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE, - ) - try: - out, err = await asyncio.wait_for( - proc.communicate(input=image_bytes), timeout=_APPLE_OCR_TIMEOUT_S - ) - except BaseException: - proc.kill() - await proc.wait() - raise - if proc.returncode != 0: - tail = err.decode(errors="replace")[-300:] if err else "" - raise RuntimeError(f"Apple Vision worker exited {proc.returncode}: {tail}") - return json.loads(out or b"[]") - - -async def _run_apple_vision(image_bytes: bytes) -> list[dict[str, Any]]: - global _apple_vision_consecutive_failures - try: - results = await _apple_vision_subprocess(image_bytes) - except Exception as e: - logger.warning(f"Apple Vision OCR attempt failed ({e}); retrying once") - try: - results = await _apple_vision_subprocess(image_bytes) - except Exception: - _apple_vision_consecutive_failures += 1 - raise - _apple_vision_consecutive_failures = 0 - return results + return _google_vision_key_present() def _oap_ocr_endpoint() -> tuple[str, str]: @@ -218,10 +140,10 @@ async def perform_ocr( ) -> list[dict[str, Any]]: """Runs text recognition on an image with the selected provider. - Provider order under "auto": Apple Vision on-device (macOS) first, then - Google Cloud Vision when an API key is configured. An empty Apple result - is authoritative — Google is only consulted when Apple Vision is - unavailable or raises. + Provider order under "auto": the local platform vision-hybrid route + first, then Google Cloud Vision when an API key is configured. An + empty platform result is authoritative - Google is only consulted + when the platform call itself fails (daemon absent/unreachable). Args: screenshot_b64: Base64 encoded screenshot image. @@ -231,28 +153,19 @@ async def perform_ocr( A list of dictionaries containing detected text and position vertices. """ provider = _ocr_provider() - if provider in ("auto", "apple"): - if _apple_vision_available(): - try: - return await _run_apple_vision(base64.b64decode(screenshot_b64)) - except Exception as e: - logger.warning(f"Apple Vision OCR failed: {e}") - elif provider == "apple": - logger.warning("ARTEMIS_OCR_PROVIDER=apple but Apple Vision is unavailable") - return [] if provider == "apple": - return [] - if provider == "platform": + logger.warning( + "ARTEMIS_OCR_PROVIDER=apple is deprecated - the standalone " + "worker was removed; using the platform vision-hybrid route" + ) + if provider in ("auto", "platform", "apple"): try: return await _run_platform_ocr(screenshot_b64, client) except Exception as e: - logger.warning(f"platform vision-hybrid OCR failed: {e}") - return [] - if provider == "auto": - try: - return await _run_platform_ocr(screenshot_b64, client) - except Exception: - pass # daemon absent - fall through to Google if keyed + if provider in ("platform", "apple"): + logger.warning(f"platform vision-hybrid OCR failed: {e}") + return [] + logger.debug(f"platform vision-hybrid OCR unreachable: {e}") api_key = _google_vision_key() if not api_key: diff --git a/tests/unit/utils/test_optional_ocr.py b/tests/unit/utils/test_optional_ocr.py index e7733e5b3..074089016 100644 --- a/tests/unit/utils/test_optional_ocr.py +++ b/tests/unit/utils/test_optional_ocr.py @@ -32,41 +32,44 @@ @pytest.mark.asyncio -async def test_is_ocr_configured_false_when_unset(monkeypatch): - """Verify is_ocr_configured returns False when keys are unset or placeholder.""" +async def test_is_ocr_configured_false_when_google_pin_unset(monkeypatch): + """Google-only provider with no key reports OCR as unconfigured.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) monkeypatch.delenv("API_KEY", raising=False) monkeypatch.delenv("GOOGLE_API_KEY", raising=False) + monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "google") - with ( - patch.object(Settings, "get_api_key", return_value=None), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), - ): + with patch.object(Settings, "get_api_key", return_value=None): assert not is_ocr_configured() @pytest.mark.asyncio -async def test_perform_ocr_returns_empty_list_when_unconfigured(monkeypatch): - """Verify perform_ocr returns [] when no OCR provider is available.""" +async def test_perform_ocr_returns_empty_list_when_platform_down(monkeypatch): + """Platform unreachable with no Google key degrades to [].""" + monkeypatch.delenv("OCR_API_KEY", raising=False) + monkeypatch.delenv("VISION_API_KEY", raising=False) with ( patch.object(Settings, "get_api_key", return_value=None), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), - patch.dict("os.environ", {}, clear=True), + patch( + "artemis.utils.ocr_api._run_platform_ocr", + new_callable=AsyncMock, + side_effect=RuntimeError("daemon down"), + ), ): result = await perform_ocr(screenshot_b64="dummy_b64") assert result == [] @pytest.mark.asyncio -async def test_perform_ocr_executes_api_call_when_configured(): +async def test_perform_ocr_executes_api_call_when_configured(monkeypatch): """Verify perform_ocr makes API request and parses responses when configured.""" + monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "google") mock_key = MagicMock() mock_key.get_secret_value.return_value = "test_key" with ( patch.object(Settings, "get_api_key", return_value=mock_key), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), patch("artemis.utils.ocr_api.get_http_client") as mock_client, ): mock_resp = MagicMock() @@ -95,48 +98,43 @@ async def test_perform_ocr_executes_api_call_when_configured(): assert result[0]["text"] == "Login" -def test_is_ocr_configured_true_with_apple_vision(monkeypatch): - """Apple Vision alone (no Google key) makes OCR available on macOS.""" +def test_is_ocr_configured_true_with_platform(monkeypatch): + """The platform vision-hybrid route (no Google key) makes OCR available.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) - with ( - patch.object(Settings, "get_api_key", return_value=None), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), - ): + with patch.object(Settings, "get_api_key", return_value=None): assert is_ocr_configured() @pytest.mark.asyncio -async def test_perform_ocr_uses_apple_vision_first(monkeypatch): - """Under auto provider, on-device Apple Vision answers without any HTTP call.""" +async def test_perform_ocr_uses_platform_first(monkeypatch): + """Under auto provider, the platform vision-hybrid route answers first.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) - apple_result = [{"text": "Login", "position": [{"x": 1, "y": 2}]}] + platform_result = [{"text": "Login", "position": [{"x": 1, "y": 2}]}] with ( patch.object(Settings, "get_api_key", return_value=None), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_apple_vision", + "artemis.utils.ocr_api._run_platform_ocr", new_callable=AsyncMock, - return_value=apple_result, - ) as mock_apple, + return_value=platform_result, + ) as mock_platform, ): result = await perform_ocr(screenshot_b64="aGVsbG8=") - assert result == apple_result - mock_apple.assert_awaited_once_with(b"hello") + assert result == platform_result + mock_platform.assert_awaited_once_with("aGVsbG8=", None) @pytest.mark.asyncio -async def test_perform_ocr_falls_back_to_google_on_apple_failure(): - """An Apple Vision error under auto falls back to a keyed Google Vision.""" +async def test_perform_ocr_falls_back_to_google_on_platform_failure(): + """A platform call error under auto falls back to a keyed Google Vision.""" mock_key = MagicMock() mock_key.get_secret_value.return_value = "test_key" with ( patch.object(Settings, "get_api_key", return_value=mock_key), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_apple_vision", + "artemis.utils.ocr_api._run_platform_ocr", new_callable=AsyncMock, side_effect=RuntimeError("boom"), ), @@ -166,15 +164,14 @@ async def test_perform_ocr_falls_back_to_google_on_apple_failure(): @pytest.mark.asyncio -async def test_perform_ocr_apple_failure_without_key_returns_empty(monkeypatch): - """Apple failure with no Google key degrades to [] instead of raising.""" +async def test_perform_ocr_platform_failure_without_key_returns_empty(monkeypatch): + """Platform failure with no Google key degrades to [] instead of raising.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) with ( patch.object(Settings, "get_api_key", return_value=None), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_apple_vision", + "artemis.utils.ocr_api._run_platform_ocr", new_callable=AsyncMock, side_effect=RuntimeError("boom"), ), @@ -183,16 +180,16 @@ async def test_perform_ocr_apple_failure_without_key_returns_empty(monkeypatch): @pytest.mark.asyncio -async def test_perform_ocr_forced_apple_never_calls_google(monkeypatch): - """ARTEMIS_OCR_PROVIDER=apple must not fall through to the cloud provider.""" - monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "apple") +async def test_perform_ocr_forced_platform_never_calls_google(monkeypatch): + """ARTEMIS_OCR_PROVIDER=platform must not fall through to the cloud + provider even when the platform call fails.""" + monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "platform") mock_key = MagicMock() mock_key.get_secret_value.return_value = "test_key" with ( patch.object(Settings, "get_api_key", return_value=mock_key), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_apple_vision", + "artemis.utils.ocr_api._run_platform_ocr", new_callable=AsyncMock, side_effect=RuntimeError("boom"), ), @@ -202,51 +199,6 @@ async def test_perform_ocr_forced_apple_never_calls_google(monkeypatch): mock_client.assert_not_called() -@pytest.mark.asyncio -async def test_perform_ocr_apple_breaker_stops_dispatch_after_failures(monkeypatch): - """Consecutive Apple subprocess failures disable the provider; a third - call must not spawn another worker.""" - import artemis.utils.ocr_api as ocr_api - - monkeypatch.delenv("OCR_API_KEY", raising=False) - monkeypatch.delenv("VISION_API_KEY", raising=False) - monkeypatch.setattr(ocr_api, "_apple_vision_consecutive_failures", 0) - with ( - patch.object(Settings, "get_api_key", return_value=None), - patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), - patch( - "artemis.utils.ocr_api._apple_vision_subprocess", - new_callable=AsyncMock, - side_effect=RuntimeError("wedged"), - ) as mock_worker, - ): - assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] - assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] - assert mock_worker.await_count == 4 - assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] - assert not ocr_api.is_ocr_configured() - assert mock_worker.await_count == 4 - - -def test_vision_box_to_vertices_converts_bottom_left_origin(): - """Vision's normalized bottom-left box maps to TL/TR/BR/BL pixel vertices.""" - from types import SimpleNamespace - - from artemis.utils.apple_vision_ocr import _vision_box_to_vertices - - bb = SimpleNamespace( - origin=SimpleNamespace(x=0.1, y=0.8), - size=SimpleNamespace(width=0.2, height=0.05), - ) - vertices = _vision_box_to_vertices(bb, width=1000, height=2000) - assert vertices == [ - {"x": 100, "y": 300}, - {"x": 300, "y": 300}, - {"x": 300, "y": 400}, - {"x": 100, "y": 400}, - ] - - def test_fuse_ocr_with_xml_empty_ocr_retains_xml_pruning(): """Verify fuse_ocr_with_xml preserves full XML structure and allows downstream pruning.""" sample_xml = [ From cbefe0398ff7c4a55e8fce7a79e8c3f7eb8d9daa Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 16:40:11 +0900 Subject: [PATCH 10/45] Revert platform OCR wiring: ARTEMIS stays a consumer, unchanged The platform exposes the vision-hybrid route (oap_ocr structured observations); whether ARTEMIS calls it is ARTEMIS's own choice. The original apple_vision_ocr.py worker and provider chain are restored. --- artemis/utils/apple_vision_ocr.py | 106 ++++++++++++++++ artemis/utils/ocr_api.py | 173 +++++++++++++++----------- tests/unit/utils/test_optional_ocr.py | 122 ++++++++++++------ 3 files changed, 288 insertions(+), 113 deletions(-) create mode 100644 artemis/utils/apple_vision_ocr.py diff --git a/artemis/utils/apple_vision_ocr.py b/artemis/utils/apple_vision_ocr.py new file mode 100644 index 000000000..e03df770c --- /dev/null +++ b/artemis/utils/apple_vision_ocr.py @@ -0,0 +1,106 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Standalone Apple Vision OCR worker — run as ``python apple_vision_ocr.py``. + +Reads image bytes on stdin and writes a JSON list of +``{"text": str, "position": [{"x": int, "y": int}, ...]}`` on stdout, +matching the Google Vision ``boundingPoly.vertices`` contract. + +This module is deliberately free of artemis imports and runs in a clean +interpreter: once cv2 (and its GPU/OpenCL contexts) is loaded in the host +process, ``VNRecognizeTextRequest`` fails intermittently with e5rt +compute-stream errors. A subprocess keeps the ML stack isolated. +""" + +# pyright: reportAttributeAccessIssue=false +# pyobjc exposes AppKit/Vision classes dynamically; static stubs have no symbols. + +import io +import json +import sys + + +def _vision_box_to_vertices(bounding_box, width: int, height: int) -> list[dict[str, int]]: + """Convert a Vision normalized bounding box (origin bottom-left) to + pixel-space vertices in Google's boundingPoly order: TL, TR, BR, BL.""" + x0 = bounding_box.origin.x * width + x1 = (bounding_box.origin.x + bounding_box.size.width) * width + y_top = (1.0 - bounding_box.origin.y - bounding_box.size.height) * height + y_bottom = (1.0 - bounding_box.origin.y) * height + return [ + {"x": round(x0), "y": round(y_top)}, + {"x": round(x1), "y": round(y_top)}, + {"x": round(x1), "y": round(y_bottom)}, + {"x": round(x0), "y": round(y_bottom)}, + ] + + +def ocr_image(image_bytes: bytes) -> list[dict]: + """On-device text recognition via Apple's Vision framework.""" + import Vision + from Foundation import NSData + from PIL import Image + + with Image.open(io.BytesIO(image_bytes)) as img: + width, height = img.width, img.height + + request = Vision.VNRecognizeTextRequest.alloc().init() + request.setRecognitionLevel_(Vision.VNRequestTextRecognitionLevelAccurate) + request.setUsesLanguageCorrection_(True) + # The first entry in recognitionLanguages dominates per-request — en-US + # first garbles CJK text. Per-observation language detection (revision 3) + # avoids ordering games: every supported language is enabled and Vision + # picks the right one for each text region. + request.setAutomaticallyDetectsLanguage_(True) + langs, _ = ( + Vision.VNRecognizeTextRequest.supportedRecognitionLanguagesForTextRecognitionLevel_revision_error_( + Vision.VNRequestTextRecognitionLevelAccurate, + request.revision(), + None, + ) + ) + if langs: + request.setRecognitionLanguages_(list(langs)) + + ns_data = NSData.dataWithBytes_length_(image_bytes, len(image_bytes)) + handler = Vision.VNImageRequestHandler.alloc().initWithData_options_(ns_data, None) + ok, error = handler.performRequests_error_([request], None) + if not ok: + raise RuntimeError(f"VNRecognizeTextRequest failed: {error}") + + results = [] + for observation in request.results() or []: + candidates = observation.topCandidates_(1) + if not candidates: + continue + text = str(candidates[0].string()).strip() + if not text: + continue + results.append( + { + "text": text, + "position": _vision_box_to_vertices(observation.boundingBox(), width, height), + } + ) + return results + + +def main() -> None: + image_bytes = sys.stdin.buffer.read() + json.dump(ocr_image(image_bytes), sys.stdout) + + +if __name__ == "__main__": + main() diff --git a/artemis/utils/ocr_api.py b/artemis/utils/ocr_api.py index 13c01ec1a..8ad937ea8 100644 --- a/artemis/utils/ocr_api.py +++ b/artemis/utils/ocr_api.py @@ -12,7 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. +import asyncio +import base64 +import json import os +from pathlib import Path +import sys from typing import Any import httpx @@ -22,18 +27,12 @@ logger = get_logger(__name__) _HTTP_CLIENT: httpx.AsyncClient | None = None -# Provider selection via ARTEMIS_OCR_PROVIDER: -# "auto" (default) - the local platform's vision-hybrid route first -# (Apple Vision tier, VLM delegate when needed), -# then Google Cloud Vision when an API key exists. -# "platform" - vision-hybrid only. -# "google" - Google Cloud Vision only. -# "apple" - deprecated alias for "platform": the standalone -# Apple Vision worker was removed; the platform's -# oap-vision-bridge is the Apple Vision path now. +# Provider selection via ARTEMIS_OCR_PROVIDER: "auto" (default) prefers +# on-device Apple Vision on macOS and falls back to Google Cloud Vision when +# an API key exists; "apple" / "google" pin a single provider. _OCR_PROVIDER_ENV = "ARTEMIS_OCR_PROVIDER" -_OAP_API_BASE_ENV = "OAP_API_BASE" -_OAP_OCR_MODEL_ENV = "OAP_OCR_MODEL" +_APPLE_VISION_SUPPORTED: bool | None = None +_APPLE_OCR_WORKER = Path(__file__).with_name("apple_vision_ocr.py") def get_http_client() -> httpx.AsyncClient: @@ -47,6 +46,25 @@ def _ocr_provider() -> str: return os.environ.get(_OCR_PROVIDER_ENV, "auto").strip().lower() +def _apple_vision_supported() -> bool: + """True on macOS when the pyobjc Vision bindings are importable and the + standalone worker script exists. The real OCR runs in a subprocess: once + cv2 is loaded in this process, VNRecognizeTextRequest intermittently + fails compiling its ANE compute stream (e5rt errors).""" + global _APPLE_VISION_SUPPORTED + if _APPLE_VISION_SUPPORTED is None: + if sys.platform != "darwin" or getattr(sys, "frozen", False): + _APPLE_VISION_SUPPORTED = False + else: + try: + import Vision # noqa: F401 + + _APPLE_VISION_SUPPORTED = _APPLE_OCR_WORKER.is_file() + except ImportError: + _APPLE_VISION_SUPPORTED = False + return _APPLE_VISION_SUPPORTED + + def _google_vision_key() -> str | None: """Raw Google Vision API key, or None (placeholders are not filtered).""" ocr_secret = settings.get_api_key("ocr") @@ -74,63 +92,68 @@ def _google_vision_key_present() -> bool: def is_ocr_configured() -> bool: - """True when some OCR provider is usable: the local platform - vision-hybrid route (fixed loopback endpoint - reachability is a - runtime matter), or a configured Google Cloud Vision API key.""" + """True when some OCR provider is usable: Apple Vision on macOS, or a + configured Google Cloud Vision API key.""" provider = _ocr_provider() - if provider in ("auto", "platform", "apple"): - return True + if provider == "apple": + return _apple_vision_available() if provider == "google": return _google_vision_key_present() - return _google_vision_key_present() + return _apple_vision_available() or _google_vision_key_present() + +# A failing Vision attempt can stall for minutes inside the ObjC call (e5rt +# compute-stream compile), so every subprocess invocation is time-bounded and +# retried once in a fresh interpreter before degrading. When the OS-level +# Vision ML service is wedged, every call would burn 2x timeout forever — +# after consecutive failures the provider is disabled until a success resets +# the counter. +_APPLE_OCR_TIMEOUT_S = float(os.environ.get("APPLE_OCR_TIMEOUT", "20")) +_APPLE_OCR_MAX_CONSECUTIVE_FAILURES = 2 +_apple_vision_consecutive_failures = 0 -def _oap_ocr_endpoint() -> tuple[str, str]: - base = os.environ.get( - _OAP_API_BASE_ENV, "http://127.0.0.1:8080/v1" - ).rstrip("/") - return f"{base}/chat/completions", os.environ.get( - _OAP_OCR_MODEL_ENV, "vision-hybrid" + +def _apple_vision_available() -> bool: + return ( + _apple_vision_supported() + and _apple_vision_consecutive_failures < _APPLE_OCR_MAX_CONSECUTIVE_FAILURES ) -async def _run_platform_ocr( - screenshot_b64: str, - client: httpx.AsyncClient | None = None, -) -> list[dict[str, Any]]: - """OCR via the local platform's vision-hybrid route (Apple Vision - first, VLM delegate when the image is not plain text extraction). - Structured observations arrive in the additive ``oap_ocr`` response - field as ``{text, confidence, position}`` with position already in - pixel vertices (TL,TR,BR,BL). An escalated VLM answer carries no - positions and yields ``[]`` - callers treat it like an empty OCR.""" - url, model = _oap_ocr_endpoint() - payload = { - "model": model, - "messages": [{ - "role": "user", - "content": [ - {"type": "text", - "text": "Extract all text from this image."}, - {"type": "image_url", - "image_url": { - "url": "data:image/png;base64," + screenshot_b64}}, - ], - }], - } - active_client = client if client is not None else get_http_client() - response = await active_client.post(url, json=payload, timeout=30.0) - response.raise_for_status() - results = [] - for obs in response.json().get("oap_ocr") or []: - text = obs.get("text") - position = obs.get("position") - if ( - isinstance(text, str) - and text.strip() - and isinstance(position, list) - ): - results.append({"text": text, "position": position}) +async def _apple_vision_subprocess(image_bytes: bytes) -> list[dict[str, Any]]: + proc = await asyncio.create_subprocess_exec( + sys.executable, + str(_APPLE_OCR_WORKER), + stdin=asyncio.subprocess.PIPE, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + try: + out, err = await asyncio.wait_for( + proc.communicate(input=image_bytes), timeout=_APPLE_OCR_TIMEOUT_S + ) + except BaseException: + proc.kill() + await proc.wait() + raise + if proc.returncode != 0: + tail = err.decode(errors="replace")[-300:] if err else "" + raise RuntimeError(f"Apple Vision worker exited {proc.returncode}: {tail}") + return json.loads(out or b"[]") + + +async def _run_apple_vision(image_bytes: bytes) -> list[dict[str, Any]]: + global _apple_vision_consecutive_failures + try: + results = await _apple_vision_subprocess(image_bytes) + except Exception as e: + logger.warning(f"Apple Vision OCR attempt failed ({e}); retrying once") + try: + results = await _apple_vision_subprocess(image_bytes) + except Exception: + _apple_vision_consecutive_failures += 1 + raise + _apple_vision_consecutive_failures = 0 return results @@ -140,10 +163,10 @@ async def perform_ocr( ) -> list[dict[str, Any]]: """Runs text recognition on an image with the selected provider. - Provider order under "auto": the local platform vision-hybrid route - first, then Google Cloud Vision when an API key is configured. An - empty platform result is authoritative - Google is only consulted - when the platform call itself fails (daemon absent/unreachable). + Provider order under "auto": Apple Vision on-device (macOS) first, then + Google Cloud Vision when an API key is configured. An empty Apple result + is authoritative — Google is only consulted when Apple Vision is + unavailable or raises. Args: screenshot_b64: Base64 encoded screenshot image. @@ -153,19 +176,17 @@ async def perform_ocr( A list of dictionaries containing detected text and position vertices. """ provider = _ocr_provider() + if provider in ("auto", "apple"): + if _apple_vision_available(): + try: + return await _run_apple_vision(base64.b64decode(screenshot_b64)) + except Exception as e: + logger.warning(f"Apple Vision OCR failed: {e}") + elif provider == "apple": + logger.warning("ARTEMIS_OCR_PROVIDER=apple but Apple Vision is unavailable") + return [] if provider == "apple": - logger.warning( - "ARTEMIS_OCR_PROVIDER=apple is deprecated - the standalone " - "worker was removed; using the platform vision-hybrid route" - ) - if provider in ("auto", "platform", "apple"): - try: - return await _run_platform_ocr(screenshot_b64, client) - except Exception as e: - if provider in ("platform", "apple"): - logger.warning(f"platform vision-hybrid OCR failed: {e}") - return [] - logger.debug(f"platform vision-hybrid OCR unreachable: {e}") + return [] api_key = _google_vision_key() if not api_key: diff --git a/tests/unit/utils/test_optional_ocr.py b/tests/unit/utils/test_optional_ocr.py index 074089016..e7733e5b3 100644 --- a/tests/unit/utils/test_optional_ocr.py +++ b/tests/unit/utils/test_optional_ocr.py @@ -32,44 +32,41 @@ @pytest.mark.asyncio -async def test_is_ocr_configured_false_when_google_pin_unset(monkeypatch): - """Google-only provider with no key reports OCR as unconfigured.""" +async def test_is_ocr_configured_false_when_unset(monkeypatch): + """Verify is_ocr_configured returns False when keys are unset or placeholder.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) monkeypatch.delenv("API_KEY", raising=False) monkeypatch.delenv("GOOGLE_API_KEY", raising=False) - monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "google") - with patch.object(Settings, "get_api_key", return_value=None): + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), + ): assert not is_ocr_configured() @pytest.mark.asyncio -async def test_perform_ocr_returns_empty_list_when_platform_down(monkeypatch): - """Platform unreachable with no Google key degrades to [].""" - monkeypatch.delenv("OCR_API_KEY", raising=False) - monkeypatch.delenv("VISION_API_KEY", raising=False) +async def test_perform_ocr_returns_empty_list_when_unconfigured(monkeypatch): + """Verify perform_ocr returns [] when no OCR provider is available.""" with ( patch.object(Settings, "get_api_key", return_value=None), - patch( - "artemis.utils.ocr_api._run_platform_ocr", - new_callable=AsyncMock, - side_effect=RuntimeError("daemon down"), - ), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), + patch.dict("os.environ", {}, clear=True), ): result = await perform_ocr(screenshot_b64="dummy_b64") assert result == [] @pytest.mark.asyncio -async def test_perform_ocr_executes_api_call_when_configured(monkeypatch): +async def test_perform_ocr_executes_api_call_when_configured(): """Verify perform_ocr makes API request and parses responses when configured.""" - monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "google") mock_key = MagicMock() mock_key.get_secret_value.return_value = "test_key" with ( patch.object(Settings, "get_api_key", return_value=mock_key), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=False), patch("artemis.utils.ocr_api.get_http_client") as mock_client, ): mock_resp = MagicMock() @@ -98,43 +95,48 @@ async def test_perform_ocr_executes_api_call_when_configured(monkeypatch): assert result[0]["text"] == "Login" -def test_is_ocr_configured_true_with_platform(monkeypatch): - """The platform vision-hybrid route (no Google key) makes OCR available.""" +def test_is_ocr_configured_true_with_apple_vision(monkeypatch): + """Apple Vision alone (no Google key) makes OCR available on macOS.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) - with patch.object(Settings, "get_api_key", return_value=None): + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + ): assert is_ocr_configured() @pytest.mark.asyncio -async def test_perform_ocr_uses_platform_first(monkeypatch): - """Under auto provider, the platform vision-hybrid route answers first.""" +async def test_perform_ocr_uses_apple_vision_first(monkeypatch): + """Under auto provider, on-device Apple Vision answers without any HTTP call.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) - platform_result = [{"text": "Login", "position": [{"x": 1, "y": 2}]}] + apple_result = [{"text": "Login", "position": [{"x": 1, "y": 2}]}] with ( patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_platform_ocr", + "artemis.utils.ocr_api._run_apple_vision", new_callable=AsyncMock, - return_value=platform_result, - ) as mock_platform, + return_value=apple_result, + ) as mock_apple, ): result = await perform_ocr(screenshot_b64="aGVsbG8=") - assert result == platform_result - mock_platform.assert_awaited_once_with("aGVsbG8=", None) + assert result == apple_result + mock_apple.assert_awaited_once_with(b"hello") @pytest.mark.asyncio -async def test_perform_ocr_falls_back_to_google_on_platform_failure(): - """A platform call error under auto falls back to a keyed Google Vision.""" +async def test_perform_ocr_falls_back_to_google_on_apple_failure(): + """An Apple Vision error under auto falls back to a keyed Google Vision.""" mock_key = MagicMock() mock_key.get_secret_value.return_value = "test_key" with ( patch.object(Settings, "get_api_key", return_value=mock_key), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_platform_ocr", + "artemis.utils.ocr_api._run_apple_vision", new_callable=AsyncMock, side_effect=RuntimeError("boom"), ), @@ -164,14 +166,15 @@ async def test_perform_ocr_falls_back_to_google_on_platform_failure(): @pytest.mark.asyncio -async def test_perform_ocr_platform_failure_without_key_returns_empty(monkeypatch): - """Platform failure with no Google key degrades to [] instead of raising.""" +async def test_perform_ocr_apple_failure_without_key_returns_empty(monkeypatch): + """Apple failure with no Google key degrades to [] instead of raising.""" monkeypatch.delenv("OCR_API_KEY", raising=False) monkeypatch.delenv("VISION_API_KEY", raising=False) with ( patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_platform_ocr", + "artemis.utils.ocr_api._run_apple_vision", new_callable=AsyncMock, side_effect=RuntimeError("boom"), ), @@ -180,16 +183,16 @@ async def test_perform_ocr_platform_failure_without_key_returns_empty(monkeypatc @pytest.mark.asyncio -async def test_perform_ocr_forced_platform_never_calls_google(monkeypatch): - """ARTEMIS_OCR_PROVIDER=platform must not fall through to the cloud - provider even when the platform call fails.""" - monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "platform") +async def test_perform_ocr_forced_apple_never_calls_google(monkeypatch): + """ARTEMIS_OCR_PROVIDER=apple must not fall through to the cloud provider.""" + monkeypatch.setenv("ARTEMIS_OCR_PROVIDER", "apple") mock_key = MagicMock() mock_key.get_secret_value.return_value = "test_key" with ( patch.object(Settings, "get_api_key", return_value=mock_key), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), patch( - "artemis.utils.ocr_api._run_platform_ocr", + "artemis.utils.ocr_api._run_apple_vision", new_callable=AsyncMock, side_effect=RuntimeError("boom"), ), @@ -199,6 +202,51 @@ async def test_perform_ocr_forced_platform_never_calls_google(monkeypatch): mock_client.assert_not_called() +@pytest.mark.asyncio +async def test_perform_ocr_apple_breaker_stops_dispatch_after_failures(monkeypatch): + """Consecutive Apple subprocess failures disable the provider; a third + call must not spawn another worker.""" + import artemis.utils.ocr_api as ocr_api + + monkeypatch.delenv("OCR_API_KEY", raising=False) + monkeypatch.delenv("VISION_API_KEY", raising=False) + monkeypatch.setattr(ocr_api, "_apple_vision_consecutive_failures", 0) + with ( + patch.object(Settings, "get_api_key", return_value=None), + patch("artemis.utils.ocr_api._apple_vision_supported", return_value=True), + patch( + "artemis.utils.ocr_api._apple_vision_subprocess", + new_callable=AsyncMock, + side_effect=RuntimeError("wedged"), + ) as mock_worker, + ): + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + assert mock_worker.await_count == 4 + assert await perform_ocr(screenshot_b64="aGVsbG8=") == [] + assert not ocr_api.is_ocr_configured() + assert mock_worker.await_count == 4 + + +def test_vision_box_to_vertices_converts_bottom_left_origin(): + """Vision's normalized bottom-left box maps to TL/TR/BR/BL pixel vertices.""" + from types import SimpleNamespace + + from artemis.utils.apple_vision_ocr import _vision_box_to_vertices + + bb = SimpleNamespace( + origin=SimpleNamespace(x=0.1, y=0.8), + size=SimpleNamespace(width=0.2, height=0.05), + ) + vertices = _vision_box_to_vertices(bb, width=1000, height=2000) + assert vertices == [ + {"x": 100, "y": 300}, + {"x": 300, "y": 300}, + {"x": 300, "y": 400}, + {"x": 100, "y": 400}, + ] + + def test_fuse_ocr_with_xml_empty_ocr_retains_xml_pruning(): """Verify fuse_ocr_with_xml preserves full XML structure and allows downstream pruning.""" sample_xml = [ From 44187a95ee4c27c41c0b76cf366c0ffbde9f5505 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 9 Oct 2026 20:14:52 +0900 Subject: [PATCH 11/45] fix: object_detector uses yx_1000 for gemma4-e4b MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gemma's native box_2d is [ymin, xmin, ymax, xmax]/1000 — the detector's yx_1000 contract. The previous xy_1000 (correct for the qwen-vl fallback) axis-flipped every box into garbage; verified with a real model response normalized through _normalize_detected_box. --- config/artemis.jsonc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/artemis.jsonc b/config/artemis.jsonc index 4e8f7d12b..f96030633 100644 --- a/config/artemis.jsonc +++ b/config/artemis.jsonc @@ -94,16 +94,16 @@ // 👁️ Object Detector & Explorer (Flash Mode): Visual coordinates grounding and bounding boxes // Local gemma4-e4b via ondevice-agent-platform (OpenAI-compatible :8080). - // grounding grid verified on qwen-vl (kept as fallback); gemma grid output - // is plausible on synthetic input but NOT verified on real UIs yet. - // Previously verified on-device: qwen-vl emits [x, y] on the 0-1000 grid matching the - // detector contract; "xy_1000" only fixes the axis order vs Gemini ER's - // [y, x]. Off-contract batches still auto-rescale (0-1 or raw pixels). + // grounding verified on synthetic UI: gemma4-e4b emits box_2d as + // [ymin,xmin,ymax,xmax]/1000 = the detector's native yx_1000 contract + // (pixel-accurate on a settings-screen mock; real-UI eval still pending). + // qwen-vl fallback keeps "xy_1000" — it emits [x, y] on the 0-1000 grid. + // Off-contract batches still auto-rescale (0-1 or raw pixels). "object_detector": { "provider": "custom", "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", - "coordinate_format": "xy_1000", + "coordinate_format": "yx_1000", "timeout": 300, "fallback": { "provider": "custom", From 4f751d4e5f798b2680557d29da7646b3ddf3636e Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 03:37:28 +0900 Subject: [PATCH 12/45] fix: provider compatibility and prompt discipline for local gemma4-e4b - Sniff image MIME from bytes (image_data_uri) instead of hardcoding image/jpeg; strict local gateways reject mislabeled PNG screenshots. - with_structured_output uses function_calling for the custom provider. - Flash: prune intermediate screenshots before invoke (platform caps images-per-request). - Planner/operator/checker focus reminders keep protocol rules inside the sliding attention window for small local models. - LLM_FLASH_HARD_TIMEOUT_SECONDS for slow local providers. --- artemis/agents/checker/checker.py | 3 +- artemis/agents/diagnoser/diagnoser.py | 3 +- artemis/agents/explorer/universal_runner.py | 7 +- artemis/agents/flash/runner.py | 13 +- artemis/agents/flash/summarizer.py | 5 +- .../agents/image_processor/image_processor.py | 7 +- .../agents/object_detector/object_detector.py | 3 +- artemis/agents/operator/operator.py | 6 + artemis/agents/operator/prompts.py | 54 +++++- artemis/agents/outputter/outputter.py | 3 +- artemis/agents/planner/planner.py | 17 +- .../agents/validator/precondition_pixel.py | 5 +- artemis/agents/validator/tool_declarations.py | 3 +- .../agents/video_analyzer/universal_engine.py | 3 +- artemis/config/settings.py | 8 + artemis/services/llm.py | 5 + artemis/tools/committee_tool.py | 5 +- artemis/tools/explorer_tool.py | 3 +- artemis/tools/history/screenshot.py | 3 +- artemis/utils/image_codec.py | 52 ++++++ .../agents/test_operator_focus_reminder.py | 163 ++++++++++++++++++ third_party/mobile_use/config/llm.py | 1 + 22 files changed, 344 insertions(+), 28 deletions(-) create mode 100644 artemis/utils/image_codec.py create mode 100644 tests/unit/agents/test_operator_focus_reminder.py diff --git a/artemis/agents/checker/checker.py b/artemis/agents/checker/checker.py index 52dff2ca2..ed798baee 100644 --- a/artemis/agents/checker/checker.py +++ b/artemis/agents/checker/checker.py @@ -67,6 +67,7 @@ ) from artemis.utils.visualization import format_minimal_list_with_elements from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -842,7 +843,7 @@ async def run_final_check( content.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{screenshot_b64}"}, + "image_url": {"url": image_data_uri(screenshot_b64)}, } ) diff --git a/artemis/agents/diagnoser/diagnoser.py b/artemis/agents/diagnoser/diagnoser.py index 13d80317c..d94376a5d 100644 --- a/artemis/agents/diagnoser/diagnoser.py +++ b/artemis/agents/diagnoser/diagnoser.py @@ -40,6 +40,7 @@ from artemis.tools.log_tool import get_analyze_logs_tool from artemis.tools.mobile.read_hierarchy import get_ui_hierarchy_tool from artemis.tools.scratchpad import get_list_notes_tool, get_read_note_tool +from artemis.utils.image_codec import image_data_uri from artemis.tools.tool_wrapper import ( get_tool_result_content, invoke_tool_with_injection, @@ -227,7 +228,7 @@ def _build_initial_messages( content.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{latest_screenshot_b64}"}, + "image_url": {"url": image_data_uri(latest_screenshot_b64)}, } ) diff --git a/artemis/agents/explorer/universal_runner.py b/artemis/agents/explorer/universal_runner.py index c5b5bc89a..6991ecae0 100644 --- a/artemis/agents/explorer/universal_runner.py +++ b/artemis/agents/explorer/universal_runner.py @@ -36,6 +36,7 @@ from artemis.graph.state import State from artemis.services.llm import get_llm from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -172,7 +173,7 @@ def _build_universal_messages( }, { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}, + "image_url": {"url": image_data_uri(img_b64)}, }, ] @@ -266,9 +267,7 @@ def _build_tool_images_message(self, images: list[tuple[str, str]]) -> HumanMess continue if tool_name not in tool_names: tool_names.append(tool_name) - blocks.append( - {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}} - ) + blocks.append({"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}) if not blocks: return None header = { diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 3ea3f6865..da8c4d2fd 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -70,6 +70,7 @@ MemoryTranscriptConfig, StepSummarizerConfig, load_agent_config, + settings, ) from artemis.context import ArtemisContext from artemis.controllers.unified_controller import UnifiedMobileController @@ -78,6 +79,7 @@ from artemis.graph.state import State from artemis.llm.structured import ParseFailure, parse_structured from artemis.mcp.action_executor import McpActionExecutor +from artemis.utils.image_codec import image_data_uri from artemis.mcp.observation import observe from artemis.memory.transcript import PRO_UI_LIST_MARKER, TranscriptLedger, mark_ephemeral from artemis.services.llm import ( @@ -369,9 +371,7 @@ def _build_tail( if img_bytes: img_b64 = base64.b64encode(img_bytes).decode("utf-8") blocks.append({"type": "text", "text": "--- Current Screenshot ---"}) - blocks.append( - {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}} - ) + blocks.append({"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}) if xml_list: blocks.append({"type": "text", "text": f"{PRO_UI_LIST_MARKER}\n{xml_list}"}) ephemeral: list[int] = [] @@ -883,6 +883,9 @@ async def _execute_and_record_action( async def _invoke_model(self, llm, current_tools: list, messages: list[BaseMessage]): """Binds the active tools and invokes the model through the LLM gateway.""" + # Keep only the latest screenshot: strict gateways cap images per + # request, and earlier frames are stale context anyway. + self._prune_intermediate_screenshots(messages) # Bind active tools bound_llm = llm.bind_tools(current_tools) @@ -890,7 +893,9 @@ async def _invoke_model(self, llm, current_tools: list, messages: list[BaseMessa # retries, and pause/resume are all owned by the LLM gateway # (acomplete); a typed LLMCallError propagates if it gives up. return await invoke_llm_with_timeout_message( - acomplete(bound_llm, messages), timeout_seconds=10, hard_timeout=180 + acomplete(bound_llm, messages), + timeout_seconds=10, + hard_timeout=settings.LLM_FLASH_HARD_TIMEOUT_SECONDS, ) async def _process_tool_calls( diff --git a/artemis/agents/flash/summarizer.py b/artemis/agents/flash/summarizer.py index 5b8a3cf98..0147b652c 100644 --- a/artemis/agents/flash/summarizer.py +++ b/artemis/agents/flash/summarizer.py @@ -41,6 +41,7 @@ from artemis.utils.task_tree import format_actions_clean from artemis.utils.visualization import draw_action_overlay_on_image from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -430,7 +431,7 @@ async def _attempt(self, key: JobKey) -> bool: } ) content_blocks.append( - {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64_pre}"}} + {"type": "image_url", "image_url": {"url": image_data_uri(b64_pre)}} ) if post_bytes: @@ -449,7 +450,7 @@ async def _attempt(self, key: JobKey) -> bool: content_blocks.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{b64_post}"}, + "image_url": {"url": image_data_uri(b64_post)}, } ) diff --git a/artemis/agents/image_processor/image_processor.py b/artemis/agents/image_processor/image_processor.py index 4ce526984..7dafda710 100644 --- a/artemis/agents/image_processor/image_processor.py +++ b/artemis/agents/image_processor/image_processor.py @@ -35,6 +35,7 @@ from artemis.services.llm import get_llm from artemis.utils.python_executor import PythonExecutor from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -118,7 +119,7 @@ async def run(self, instruction: str, target_image_path: str) -> dict: {"type": "text", "text": "Here is the target image. Begin writing your code."}, { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}, + "image_url": {"url": image_data_uri(img_b64)}, }, ] ), @@ -186,9 +187,7 @@ async def run(self, instruction: str, target_image_path: str) -> dict: image_blocks.append( { "type": "image_url", - "image_url": { - "url": f"data:image/jpeg;base64,{b64_data}" - }, + "image_url": {"url": image_data_uri(b64_data)}, } ) image_blocks.append({"type": "text", "text": f"\n{label}\n"}) diff --git a/artemis/agents/object_detector/object_detector.py b/artemis/agents/object_detector/object_detector.py index bd1c37c88..acfb3e14f 100644 --- a/artemis/agents/object_detector/object_detector.py +++ b/artemis/agents/object_detector/object_detector.py @@ -27,6 +27,7 @@ from artemis.llm.structured import ParseFailure, parse_structured from artemis.services.llm import get_llm +from artemis.utils.image_codec import image_data_uri from third_party.mobile_use.utils.logger import get_logger logger = get_logger(__name__) @@ -218,7 +219,7 @@ async def _detect_single_label( content=[ { "type": "image_url", - "image_url": {"url": f"data:{mime_type};base64,{img_b64}"}, + "image_url": {"url": image_data_uri(img_b64)}, }, {"type": "text", "text": prompt}, ] diff --git a/artemis/agents/operator/operator.py b/artemis/agents/operator/operator.py index d24536270..94496f272 100644 --- a/artemis/agents/operator/operator.py +++ b/artemis/agents/operator/operator.py @@ -88,6 +88,7 @@ BackgroundTasksPromptComponent, render_plan_ledger_bounce, ReasoningReminderPromptComponent, + ActiveFocusPromptComponent, unwritten_action_streak, ToolLimitWarningPromptComponent, InjectedInstructionPromptComponent, @@ -255,11 +256,13 @@ async def _build_prompt( (FeedbackPromptComponent(), {}), (ReasoningReminderPromptComponent(), {}), (ToolLimitWarningPromptComponent(), {}), + (ActiveFocusPromptComponent(), {}), ] else: components = [(c, {}) for c in components] + [ (ReasoningReminderPromptComponent(), {}), (ToolLimitWarningPromptComponent(), {}), + (ActiveFocusPromptComponent(), {}), ] # Active and finished tasks are now passed as arguments @@ -426,6 +429,9 @@ async def _build_prompt_transcript( (FeedbackPromptComponent(), {}), (ReasoningReminderPromptComponent(), {}), (ToolLimitWarningPromptComponent(), {}), + # Last block: keeps the live sub-goal + bounce rules inside the + # local attention window of sliding-window models. + (ActiveFocusPromptComponent(), {}), ] for component, extra_kwargs in components: kwargs_to_pass = { diff --git a/artemis/agents/operator/prompts.py b/artemis/agents/operator/prompts.py index e800de234..986a29a6f 100644 --- a/artemis/agents/operator/prompts.py +++ b/artemis/agents/operator/prompts.py @@ -31,6 +31,7 @@ _format_long_output_response, _is_output_long, ) +from artemis.utils.image_codec import image_data_uri from artemis.utils.plan_grammar import parse_plan, render_plan_grammar_spec from artemis.utils.task_tree import SELF_DESCRIBED_MARKER, action_intent_phrase from third_party.mobile_use.utils.logger import get_logger @@ -384,7 +385,7 @@ async def __call__(self, builder: PromptBuilder, state: State, ctx: ArtemisConte builder.add_human_content( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{latest_screenshot_b64}"}, + "image_url": {"url": image_data_uri(latest_screenshot_b64)}, } ) builder.add_human_content(f"--- Visible UI Elements ---\n{minimal_list}") @@ -751,6 +752,57 @@ async def __call__(self, builder: PromptBuilder, state: State, ctx: ArtemisConte ) +#: Header of the standing focus block rendered last in every observation tail. +FOCUS_REMINDER_MARKER = "--- Now ---" + + +class ActiveFocusPromptComponent(PromptComponent): + """Standing tail-end recitation of the active milestone/sub-goal plus the + two rules the bounce checks enforce. + + Rendered last in the observation so these lines sit inside the local + attention window of sliding-window models (e.g. Gemma's window covers only + the final tokens of the whole sequence — the deep system-prompt sections + restating these rules are outside it once the prompt grows). The block is + ephemeral: it leaves the transcript when the turn commits. + """ + + async def __call__(self, builder: PromptBuilder, state: State, ctx: ArtemisContext, **kwargs): + snapshot = parse_plan(kwargs.get("task_plan") or "") + if not snapshot.has_top_level or snapshot.all_top_level_done: + return + milestone = snapshot.active_milestone() + leaf = snapshot.active_leaf(milestone) if milestone else None + lines = [FOCUS_REMINDER_MARKER] + if milestone is not None and leaf is not None: + lines.append( + f'In progress: milestone "{_clip(milestone.text)}" → sub-goal "{_clip(leaf.text)}".' + ) + lines.append( + "Settle it (`[x]` / `[!]`) or open the next `[/]` sub-goal via" + " `update_note` (key `task_plan`) in the same tool-call list as" + " the action." + ) + elif milestone is not None: + lines.append( + f'In progress: milestone "{_clip(milestone.text)}" has no `[/]`' + " sub-goal — open one for what you are doing now via" + " `update_note` (key `task_plan`)." + ) + else: + lines.append("No milestone is marked in progress — mark one `[/]`.") + lines.append("End the turn only with a Turn-Ending Action.") + text = "\n".join(lines) + if builder.human_footer is not None: + # Legacy path: the template footer renders after every component, + # so the focus block must ride inside it to stay last. + builder.set_human_footer(f"{builder.human_footer.rstrip()}\n\n{text}") + else: + # Transcript path: the tail is the last message; the ephemeral flag + # keeps the block out of the committed transcript. + builder.add_human_content(text, ephemeral=True) + + #: Header of the user-guidance block (shared by the Flash runner and the Pro #: operator; the operator's static prompt explains the channel once). USER_GUIDANCE_MARKER = "--- User Guidance ---" diff --git a/artemis/agents/outputter/outputter.py b/artemis/agents/outputter/outputter.py index 9b75b427f..b6300b6f3 100644 --- a/artemis/agents/outputter/outputter.py +++ b/artemis/agents/outputter/outputter.py @@ -46,6 +46,7 @@ from artemis.utils.task_tree import get_active_subgoal_hashes from third_party.mobile_use.utils.logger import get_logger from pydantic import BaseModel +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -274,7 +275,7 @@ def _initial_messages( content.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{screenshot_b64}"}, + "image_url": {"url": image_data_uri(screenshot_b64)}, } ) diff --git a/artemis/agents/planner/planner.py b/artemis/agents/planner/planner.py index 02be5c7c4..d1c252126 100644 --- a/artemis/agents/planner/planner.py +++ b/artemis/agents/planner/planner.py @@ -54,6 +54,7 @@ from artemis.utils.cython_compat import CyFunctionDetector from third_party.mobile_use.utils.decorators import agent_lifecycle_logging from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -279,9 +280,23 @@ async def __call__(self, state: State): human_message_content.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{screenshot_b64}"}, + "image_url": {"url": image_data_uri(screenshot_b64)}, } ) + # Sliding-window models attend reliably to the tail of the sequence; + # the submission protocol reminder must sit after the screenshot, or + # the image tokens push it out of the local window. + human_message_content.append( + { + "type": "text", + "text": ( + "Reminder: submit the plan by calling `save_note` (key" + " `task_plan`), or `update_note` when revising an existing" + " plan. A tool call is required — a plan written only in" + " your text response is not recognized." + ), + } + ) messages = [ SystemMessage(content=system_message), HumanMessage(content=human_message_content), diff --git a/artemis/agents/validator/precondition_pixel.py b/artemis/agents/validator/precondition_pixel.py index 80a542fb8..734d33d87 100644 --- a/artemis/agents/validator/precondition_pixel.py +++ b/artemis/agents/validator/precondition_pixel.py @@ -36,6 +36,7 @@ from artemis.services.llm import acomplete_structured from artemis.utils import visualization from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -120,12 +121,12 @@ def _build_messages( {"type": "text", "text": "[Image 1 (Reference)]"}, { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{orig_b64}"}, + "image_url": {"url": image_data_uri(orig_b64)}, }, {"type": "text", "text": "[Image 2 (Current State)]"}, { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{live_b64}"}, + "image_url": {"url": image_data_uri(live_b64)}, }, ] if state: diff --git a/artemis/agents/validator/tool_declarations.py b/artemis/agents/validator/tool_declarations.py index fba8dd751..889b41cb2 100644 --- a/artemis/agents/validator/tool_declarations.py +++ b/artemis/agents/validator/tool_declarations.py @@ -45,6 +45,7 @@ READ_NOTE_DOCSTRING, ) from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -79,7 +80,7 @@ def to_langchain_tool_message(self) -> ToolMessage: content_blocks.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{b64_img}"}, + "image_url": {"url": image_data_uri(b64_img)}, } ) return ToolMessage( diff --git a/artemis/agents/video_analyzer/universal_engine.py b/artemis/agents/video_analyzer/universal_engine.py index 96ade3fe7..767a9ec98 100644 --- a/artemis/agents/video_analyzer/universal_engine.py +++ b/artemis/agents/video_analyzer/universal_engine.py @@ -42,6 +42,7 @@ ) from artemis.data_engine.trace import CURRENT_TRACE_ID, TraceSpan from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -159,7 +160,7 @@ async def _build_universal_user_blocks( user_blocks.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{b64_str}"}, + "image_url": {"url": image_data_uri(b64_str)}, } ) diff --git a/artemis/config/settings.py b/artemis/config/settings.py index 182d7ec77..6558f22c4 100644 --- a/artemis/config/settings.py +++ b/artemis/config/settings.py @@ -144,6 +144,14 @@ class Settings(BaseSettings): " forever (legacy interactive behavior)." ), ) + LLM_FLASH_HARD_TIMEOUT_SECONDS: float | None = Field( + default=180.0, + description=( + "Hard per-call timeout for Flash operator turns, in seconds." + " Busy time only: paused waits (PAUSE_FILE) do not accrue." + " Raise for slow local providers; None waits indefinitely." + ), + ) # Paths & Storage TRACES_PATH: Path = Field(default_factory=get_default_traces_path) diff --git a/artemis/services/llm.py b/artemis/services/llm.py index 8a1c7132c..d9e936c90 100644 --- a/artemis/services/llm.py +++ b/artemis/services/llm.py @@ -595,6 +595,11 @@ def with_config(self, *args, **kwargs): def with_structured_output(self, *args, **kwargs): if hasattr(self.base_model, "with_structured_output"): + if self._provider_value() == ModelProvider.CUSTOM.value: + # The local OpenAI-compatible endpoint rejects strict JSON-schema + # response_format requests; function calling yields the same + # structured result through tool calls it does support. + kwargs.setdefault("method", "function_calling") return RobustChatModelWrapper( self.base_model.with_structured_output(*args, **kwargs), self.ctx, diff --git a/artemis/tools/committee_tool.py b/artemis/tools/committee_tool.py index 28735c903..bf52782c7 100644 --- a/artemis/tools/committee_tool.py +++ b/artemis/tools/committee_tool.py @@ -55,6 +55,7 @@ get_recent_subgoal_hashes, ) from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -283,7 +284,7 @@ async def run_agent_turn(llm, system_prompt, tools, agent_name): human_content.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{screenshot_b64}"}, + "image_url": {"url": image_data_uri(screenshot_b64)}, } ) @@ -377,7 +378,7 @@ async def run_tool(tc): final_human_content.append( { "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{screenshot_b64}"}, + "image_url": {"url": image_data_uri(screenshot_b64)}, } ) diff --git a/artemis/tools/explorer_tool.py b/artemis/tools/explorer_tool.py index 14a95b94f..97cf729c9 100644 --- a/artemis/tools/explorer_tool.py +++ b/artemis/tools/explorer_tool.py @@ -62,6 +62,7 @@ from artemis.utils.element_hit_test import find_element_at_point from artemis.utils.visualization import draw_dots from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -480,7 +481,7 @@ def render_operator_blocks( return text return [ {"type": "text", "text": text}, - {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}}, + {"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}, ] diff --git a/artemis/tools/history/screenshot.py b/artemis/tools/history/screenshot.py index 94f55d343..33bf4dd1c 100644 --- a/artemis/tools/history/screenshot.py +++ b/artemis/tools/history/screenshot.py @@ -32,6 +32,7 @@ from artemis.core.tool_failure import ToolFailure from artemis.utils.visualization import overlay_action_on_screenshot from third_party.mobile_use.utils.logger import get_logger +from artemis.utils.image_codec import image_data_uri logger = get_logger(__name__) @@ -65,7 +66,7 @@ def to_content_blocks(self) -> list[dict[str, Any]] | str: encoded = base64.b64encode(self.image_bytes).decode("utf-8") return [ {"type": "text", "text": self.description}, - {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{encoded}"}}, + {"type": "image_url", "image_url": {"url": image_data_uri(encoded)}}, ] diff --git a/artemis/utils/image_codec.py b/artemis/utils/image_codec.py new file mode 100644 index 000000000..f791019fb --- /dev/null +++ b/artemis/utils/image_codec.py @@ -0,0 +1,52 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Base64 image data-URI helpers. + +OpenAI-compatible servers differ in how strictly they treat the declared +MIME type: some (e.g. strict local gateways) validate it against the actual +payload and reject a PNG byte stream labeled ``image/jpeg``. Always sniff the +magic bytes instead of assuming JPEG. +""" + +import base64 + +_JPEG_SOI = b"\xff\xd8\xff" +_PNG_SIG = b"\x89PNG" +_WEBP_RIFF = b"RIFF" +_WEBP_TAG = b"WEBP" + + +def sniff_image_mime(image_bytes: bytes) -> str: + """Return the ``image/*`` MIME type for encoded image bytes.""" + if image_bytes[:4] == _PNG_SIG: + return "image/png" + if image_bytes[:3] == _JPEG_SOI: + return "image/jpeg" + if image_bytes[:4] == _WEBP_RIFF and image_bytes[8:12] == _WEBP_TAG: + return "image/webp" + return "image/jpeg" + + +def image_data_uri(b64_data: str) -> str: + """Wrap a base64 payload in a data URI with the MIME type sniffed from its + decoded head. Unknown or corrupt prefixes keep the historic ``image/jpeg`` + label. + """ + try: + head = base64.b64decode(b64_data[:24]) + mime = sniff_image_mime(head) + except Exception: + mime = "image/jpeg" + return f"data:{mime};base64,{b64_data}" diff --git a/tests/unit/agents/test_operator_focus_reminder.py b/tests/unit/agents/test_operator_focus_reminder.py new file mode 100644 index 000000000..7582e5dad --- /dev/null +++ b/tests/unit/agents/test_operator_focus_reminder.py @@ -0,0 +1,163 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tests for the Operator standing focus reminder. + +Sliding-window models (e.g. Gemma's 512-token local window) reliably attend +only to the tail end of the whole prompt; the static system-prompt sections +restating the ledger protocol are outside it once the prompt grows. The +ActiveFocusPromptComponent re-states the active sub-goal plus the two rules +the bounce checks enforce as the last block of every observation, marked +ephemeral so it never reaches the committed transcript. +""" + +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from artemis.agents.operator.operator import OperatorNode +from artemis.agents.operator.prompts import FOCUS_REMINDER_MARKER +from artemis.config.agent import MemoryTranscriptConfig +from artemis.context import ArtemisContext + +LEGACY_TRANSCRIPT = MemoryTranscriptConfig(enabled=False) + +PLAN_WITH_LEAF = """- [x] Open Google Maps and search for SFO +- [/] Read the commute duration and record it into note `commute_eta_info` + - [/] Read the driving duration + - [/] Tap the "Driving" tab so the fastest route is highlighted +- [ ] Draft the ETA message +""" + +PLAN_NO_LEAF = """- [x] Open Google Maps and search for SFO +- [/] Read the commute duration and record it into note `commute_eta_info` + - [ ] Read the driving duration +- [ ] Draft the ETA message +""" + +PLAN_ALL_DONE = """- [x] Open Google Maps and search for SFO +- [x] Read the commute duration and record it into note `commute_eta_info` +""" + + +def _make_node(tmp_path, plan: str): + notes = tmp_path / "notes" + notes.mkdir(parents=True) + (notes / "task_plan.md").write_text(plan, encoding="utf-8") + + ctx = MagicMock(spec=ArtemisContext) + ctx.execution_setup = None + ctx.data_engine = MagicMock() + ctx.data_engine.base_dir = str(tmp_path) + ctx.data_engine.current_session_id = "s" + ctx.data_engine.get_agent_friendly_steps.return_value = [] + + state = MagicMock() + state.subagent_calls = [] + state.initial_goal = "goal" + state.open_incident = None + return OperatorNode(ctx, transcript_config=LEGACY_TRANSCRIPT), state + + +def _click_response(content="ok"): + response = MagicMock() + response.content = content + response.tool_calls = [ + { + "name": "click", + "args": {"target": [50, 50], "target_description": "button"}, + "id": "call_0", + } + ] + return response + + +def _texts(messages): + out = [] + for m in messages: + content = getattr(m, "content", None) + if isinstance(content, str): + out.append(content) + elif isinstance(content, list): + out.extend(b.get("text", "") for b in content if isinstance(b, dict)) + return "\n".join(out) + + +def _last_human_texts(messages): + """The text blocks of the final human message, in order.""" + human = [m for m in messages if getattr(m, "type", None) == "human"][-1] + return [b.get("text", "") for b in human.content if isinstance(b, dict) and b.get("text")] + + +@pytest.mark.asyncio +async def test_focus_block_is_the_last_tail_block(tmp_path): + node, state = _make_node(tmp_path, PLAN_WITH_LEAF) + seen = [] + + async def ainvoke(messages, *args, **kwargs): + seen.append(list(messages)) + return _click_response() + + llm = MagicMock() + llm.ainvoke = AsyncMock(side_effect=ainvoke) + llm.bind_tools.return_value = llm + with patch("artemis.agents.operator.operator.get_llm", return_value=llm): + await node(state) + + blocks = _last_human_texts(seen[0]) + focus = [b for b in blocks if FOCUS_REMINDER_MARKER in b] + assert len(focus) == 1, "exactly one focus block" + assert blocks[-1] == focus[0], "focus block must be the tail's last block" + assert "Read the commute duration" in focus[0] + assert 'Tap the "Driving" tab' in focus[0] + assert "update_note" in focus[0] + assert "Turn-Ending Action" in focus[0] + + +@pytest.mark.asyncio +async def test_focus_block_nudges_a_leafless_milestone(tmp_path): + node, state = _make_node(tmp_path, PLAN_NO_LEAF) + seen = [] + + async def ainvoke(messages, *args, **kwargs): + seen.append(list(messages)) + return _click_response() + + llm = MagicMock() + llm.ainvoke = AsyncMock(side_effect=ainvoke) + llm.bind_tools.return_value = llm + with patch("artemis.agents.operator.operator.get_llm", return_value=llm): + await node(state) + + focus = [b for b in _last_human_texts(seen[0]) if FOCUS_REMINDER_MARKER in b] + assert len(focus) == 1 + assert "no `[/]` sub-goal" in focus[0] + + +@pytest.mark.asyncio +async def test_focus_block_skipped_when_plan_is_done(tmp_path): + node, state = _make_node(tmp_path, PLAN_ALL_DONE) + seen = [] + + async def ainvoke(messages, *args, **kwargs): + seen.append(list(messages)) + return _click_response() + + llm = MagicMock() + llm.ainvoke = AsyncMock(side_effect=ainvoke) + llm.bind_tools.return_value = llm + with patch("artemis.agents.operator.operator.get_llm", return_value=llm): + await node(state) + + assert FOCUS_REMINDER_MARKER not in _texts(seen[0]) diff --git a/third_party/mobile_use/config/llm.py b/third_party/mobile_use/config/llm.py index fd42d49ef..3f764c1b4 100644 --- a/third_party/mobile_use/config/llm.py +++ b/third_party/mobile_use/config/llm.py @@ -68,6 +68,7 @@ class LLM(BaseModel): reasoning_effort: Literal["none", "low", "medium", "high"] | None = None include_thoughts: bool | None = None enable_grounding: bool | None = None + timeout: float | None = None def validate_provider(self, name: str) -> None: """Ensure the required API key or credentials exist in settings for this provider.""" From 068c0f3a28084630e808ae1c4f68c981e4079799 Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 04:21:33 +0900 Subject: [PATCH 13/45] docs: mark on-device lightweight VLMs roadmap item delivered --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8683bcce3..49f97ea4c 100644 --- a/README.md +++ b/README.md @@ -301,7 +301,7 @@ ARTEMIS supports two execution profiles tailored for different automation requir - [ ] **Android Studio Integration**: Native IDE plugin and workflow integration to enable in-editor debugging, test recording, and automated device control directly within Android Studio. - [ ] **iOS Platform Expansion**: Extending multimodal perception and mobile automation to iOS devices and simulators. -- [ ] **On-Device Lightweight VLMs**: Local execution with lightweight edge vision models for low-latency, privacy-first automation. +- [x] **On-Device Lightweight VLMs**: Local execution with lightweight edge vision models for low-latency, privacy-first automation via OpenAI-compatible local providers (see `config/artemis.gemma4.jsonc` for a Gemma 4 E4B setup). - [ ] **Real-time Duplex Voice Interaction**: Voice-driven task dispatch with real-time conversational control and interruption handling. ## Community & Contributing From 65a26b13873ac2b162e1d94b6e2e210a3c10c921 Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 04:38:43 +0900 Subject: [PATCH 14/45] docs: add on-device gemma4-e4b execution evidence screenshots --- docs/assets/gemma4-e4b-flash-safari.png | Bin 0 -> 954125 bytes docs/assets/gemma4-e4b-pro-reminders.png | Bin 0 -> 265121 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/gemma4-e4b-flash-safari.png create mode 100644 docs/assets/gemma4-e4b-pro-reminders.png diff --git a/docs/assets/gemma4-e4b-flash-safari.png b/docs/assets/gemma4-e4b-flash-safari.png new file mode 100644 index 0000000000000000000000000000000000000000..839cf178ce4813b537bf11d0ed276d3d5ff26071 GIT binary patch literal 954125 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 z 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�X{cd8xq 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%0A4_F6vlL@uibT&nj*UGYXm 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

K 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

AI Model Setup

Custom Configuration

Define models in config/artemis.jsonc & keys in .env - (OpenAI, Claude, Ollama).

+ (OpenAI, Claude, Ollama — or a local model via artemis model serve).

@@ -604,6 +604,87 @@

AI Model Setup

} + + @if (localModelProbe(); as lm) { + @if (lm.status !== 'pass' || modelConfigEnv()?.default_model?.provider === 'custom') { +
+
+
+ dns +
+ Local Model Endpoint + {{ lm.summary }} +
+
+
+ @if (lm.status === 'pass') { + + check_circle + Ready + + } @else { + + error + Action Needed + + } +
+
+ +

{{ lm.description }}

+ + + @for (act of lm.actions; track act.label) { + @if (act.action_type === 'command') { +
+ {{ act.payload }} + @if (modelActionArgs(act.payload); as args) { + @if (localModelCommandsAvailable()) { + @if (localModelTaskFor(args.action, args.alias)?.status === 'running') { + progress_activity + Running… + } @else { + + } + } + } + +
+ @if (modelActionArgs(act.payload); as args) { + @if (localModelTaskFor(args.action, args.alias); as task) { + @if (task.status === 'failed' || task.log.length) { +
+ @if (task.status === 'done') { +
✓ {{ act.label }} finished
+ } + @if (task.status === 'failed') { +
✗ {{ act.label }} failed (exit {{ task.returncode }}) — check the log below or run the command in a terminal
+ } + @for (line of task.log.slice(-4); track $index) { +
{{ line }}
+ } +
+ } + } + } + } @else { +

{{ act.label }}: {{ act.payload }}

+ } + } +
+ } + } +
diff --git a/apps/showcase_ui/src/app/pages/home/home.component.scss b/apps/showcase_ui/src/app/pages/home/home.component.scss index c1a5e68d6..8d426c814 100644 --- a/apps/showcase_ui/src/app/pages/home/home.component.scss +++ b/apps/showcase_ui/src/app/pages/home/home.component.scss @@ -1421,6 +1421,18 @@ $text-light: #94a3b8; border-radius: 10px; overflow: hidden; + .inspector-desc { + font-size: 12px; + line-height: 1.5; + color: $text-secondary; + margin: 0; + padding: 10px 14px 0; + } + + > .code-box { + margin: 10px 14px; + } + .inspector-card-header { display: flex; align-items: center; @@ -3778,6 +3790,89 @@ $text-light: #94a3b8; } } } + + .btn-run-cmd { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 3px; + padding: 0 8px; + height: 22px; + background: rgba(56, 189, 248, 0.25); + color: #7dd3fc !important; + border: 1px solid rgba(56, 189, 248, 0.4); + border-radius: 5px; + font-family: $font-sans; + font-size: 10.5px; + font-weight: 600; + cursor: pointer; + transition: all 0.18s ease; + flex-shrink: 0; + + .material-symbols-outlined, span { + color: #7dd3fc !important; + } + + .material-symbols-outlined { + font-size: 13px; + } + + &:hover { + background: rgba(56, 189, 248, 0.4); + border-color: rgba(56, 189, 248, 0.6); + } + + &:active { + transform: scale(0.96); + } + } + + .lm-spin { + font-size: 15px; + color: #38bdf8; + flex-shrink: 0; + animation: spin 1s linear infinite; + } + + .lm-running-label { + font-size: 10.5px; + font-weight: 600; + color: #7dd3fc; + flex-shrink: 0; + white-space: nowrap; + } + } + + .lm-task-log { + margin-top: 6px; + padding: 8px 10px; + background: #0f172a; + border-radius: 6px; + font-family: $font-mono; + font-size: 10.5px; + line-height: 1.5; + max-height: 110px; + overflow-y: auto; + + .lm-log-line { + color: #94a3b8; + white-space: pre-wrap; + word-break: break-all; + } + + .lm-log-done { + color: #34d399; + font-weight: 600; + } + + .lm-log-failed { + color: #f87171; + font-weight: 600; + } + + &.lm-task-failed { + border: 1px solid rgba(248, 113, 113, 0.35); + } } /* ======================================================================= */ diff --git a/apps/showcase_ui/src/app/pages/home/home.component.ts b/apps/showcase_ui/src/app/pages/home/home.component.ts index e189b9ce5..b7446bc73 100644 --- a/apps/showcase_ui/src/app/pages/home/home.component.ts +++ b/apps/showcase_ui/src/app/pages/home/home.component.ts @@ -358,6 +358,9 @@ export class HomeComponent implements OnInit, OnDestroy { public configProbe = computed(() => this.systemService.configProbe()); public adbProbe = computed(() => this.systemService.adbProbe()); public llmProbe = computed(() => this.systemService.llmProbe()); + public localModelProbe = computed(() => this.systemService.localModelProbe()); + public localModelTasks = computed(() => this.systemService.localModelTasks()); + public localModelCommandsAvailable = computed(() => this.systemService.localModelCommandsAvailable()); public geminiProbe = computed(() => this.systemService.geminiProbe()); public ocrProbe = computed(() => this.systemService.ocrProbe()); public toolchainProbe = computed(() => this.systemService.toolchainProbe()); @@ -541,6 +544,7 @@ export class HomeComponent implements OnInit, OnDestroy { // Initial fetch of system readiness & model configuration this.systemService.fetchReadiness().subscribe(); this.systemService.fetchModelConfigEnv().subscribe(); + this.systemService.fetchLocalModelStatus().subscribe(); this.systemService.fetchAdbServerStatus().subscribe({ next: status => { if (status.endpoint.mode === 'remote') { @@ -564,6 +568,7 @@ export class HomeComponent implements OnInit, OnDestroy { if (tab === 'diagnostics') { this.systemService.fetchReadiness().subscribe(); this.systemService.fetchModelConfigEnv().subscribe(); + this.systemService.fetchLocalModelStatus().subscribe(); } } @@ -1035,6 +1040,35 @@ export class HomeComponent implements OnInit, OnDestroy { this.selectedProfile.set(profile); } + // --- Local model lifecycle (artemis model pull/serve/stop) --------------- + + /** Parse an `artemis model [--port N]` action payload. */ + public modelActionArgs(payload: string): { action: 'pull' | 'serve' | 'stop'; alias: string; port?: number } | null { + const m = payload.match(/artemis\s+model\s+(pull|serve|stop)\s+([^\s]+)/); + if (!m) return null; + const portMatch = payload.match(/--port\s+(\d+)/); + return { + action: m[1] as 'pull' | 'serve' | 'stop', + alias: m[2], + port: portMatch ? Number(portMatch[1]) : undefined, + }; + } + + /** Latest task state for an action+alias pair, if any. */ + public localModelTaskFor(action: string, alias: string) { + return this.localModelTasks()[`${action}:${alias}`] || null; + } + + public runLocalModelAction(args: { action: 'pull' | 'serve' | 'stop'; alias: string; port?: number }): void { + if (args.action === 'pull') { + this.systemService.pullLocalModel(args.alias).subscribe(); + } else if (args.action === 'serve') { + this.systemService.serveLocalModel(args.alias, args.port).subscribe(); + } else { + this.systemService.stopLocalModel(args.alias, args.port).subscribe(); + } + } + public setCategory(cat: SuggestionCategory): void { this.selectedCategory.set(cat); } diff --git a/apps/showcase_ui/src/app/services/system.service.ts b/apps/showcase_ui/src/app/services/system.service.ts index b69697d9f..1cb5b49e9 100644 --- a/apps/showcase_ui/src/app/services/system.service.ts +++ b/apps/showcase_ui/src/app/services/system.service.ts @@ -58,6 +58,7 @@ export class SystemService { public adbProbe = computed(() => this.probes().find(p => p.id === 'android_adb') || null); public llmProbe = computed(() => this.probes().find(p => p.id === 'gemini_api_key' || p.id === 'llm_api_key') || null); public geminiProbe = computed(() => this.llmProbe()); + public localModelProbe = computed(() => this.probes().find(p => p.id === 'local_model_endpoint') || null); public ocrProbe = computed(() => this.probes().find(p => p.id === 'vision_ocr_key' || p.id === 'ocr_api_key') || null); // Grouped readiness helpers for the 3-step onboarding flow @@ -80,7 +81,12 @@ export class SystemService { return true; } const llm = this.llmProbe(); - return llm?.status === 'pass'; + // The local-endpoint probe is a blocker server-side: when artemis.jsonc + // binds a node to a custom api_base (Artemis-served or BYO), a dead + // endpoint or missing model must gate the run the same way a missing + // API key does. It self-passes ("Not used") for cloud-only configs. + const local = this.localModelProbe(); + return llm?.status === 'pass' && (local == null || local.status === 'pass'); }); public isDeviceReady = computed(() => { @@ -314,6 +320,79 @@ export class SystemService { } } + // --- Local model lifecycle (artemis model pull/serve/stop) --------------- + + public localModelCommandsAvailable = signal(null); + public localModelTasks = signal>({}); + private localModelPollTimer: any = null; + + public fetchLocalModelStatus(): Observable { + return this.http.get('/api/system/local-models/status').pipe( + tap({ + next: (resp) => { + this.localModelCommandsAvailable.set(resp.commands_available); + this.localModelTasks.set(resp.tasks || {}); + const anyRunning = Object.values(resp.tasks || {}).some(t => t.status === 'running'); + if (!anyRunning) { + this.stopLocalModelPolling(); + } + } + }) + ); + } + + public startLocalModelPolling(): void { + if (this.localModelPollTimer) { + clearInterval(this.localModelPollTimer); + } + this.localModelPollTimer = setInterval(() => { + this.fetchLocalModelStatus().subscribe({ error: () => {} }); + }, 2000); + } + + public stopLocalModelPolling(): void { + if (this.localModelPollTimer) { + clearInterval(this.localModelPollTimer); + this.localModelPollTimer = null; + // A finished action may have changed model readiness — re-check. + this.fetchReadiness().subscribe({ error: () => {} }); + } + } + + private runLocalModelAction( + endpoint: 'pull' | 'serve' | 'stop', + alias: string, + port?: number + ): Observable { + return this.http + .post(`/api/system/local-models/${endpoint}`, { alias, port: port ?? null }) + .pipe( + tap({ + next: (task) => { + this.localModelTasks.update(tasks => ({ ...tasks, [task.key]: task })); + if (task.status === 'running') { + this.startLocalModelPolling(); + } else { + this.fetchReadiness().subscribe({ error: () => {} }); + } + }, + error: () => {} + }) + ); + } + + public pullLocalModel(alias: string): Observable { + return this.runLocalModelAction('pull', alias); + } + + public serveLocalModel(alias: string, port?: number): Observable { + return this.runLocalModelAction('serve', alias, port); + } + + public stopLocalModel(alias: string, port?: number): Observable { + return this.runLocalModelAction('stop', alias, port); + } + /** * Launch a local AVD emulator in the background and continuously track boot progress */ @@ -608,3 +687,19 @@ export interface ModelConfigEnvResponse { }>; } + +export interface LocalModelTask { + key: string; + action: 'pull' | 'serve' | 'stop' | string; + alias: string; + cmd: string; + status: 'running' | 'done' | 'failed' | string; + returncode: number | null; + started_at: number; + log: string[]; +} + +export interface LocalModelStatusResponse { + commands_available: boolean; + tasks: Record; +} diff --git a/artemis/core/diagnostics/probes/credentials_probe.py b/artemis/core/diagnostics/probes/credentials_probe.py index 91870ab8d..b07705383 100644 --- a/artemis/core/diagnostics/probes/credentials_probe.py +++ b/artemis/core/diagnostics/probes/credentials_probe.py @@ -144,8 +144,9 @@ async def probe(self) -> ProbeResult: ) api_keys_map[prov_id] = val.strip() - # Config-bound local endpoints (e.g. a local OpenAI-compatible server) need no - # API key: the custom provider authenticates to a loopback server. + # Config-bound local endpoints (artemis-served models, Ollama, vLLM, + # any OpenAI-compatible server) need no API key: the custom provider + # authenticates to a loopback or self-hosted server. try: from artemis.core.diagnostics.probes.local_model_probe import ( _local_endpoints, diff --git a/artemis/core/diagnostics/probes/local_model_probe.py b/artemis/core/diagnostics/probes/local_model_probe.py index 4dab137c2..f43dbc051 100644 --- a/artemis/core/diagnostics/probes/local_model_probe.py +++ b/artemis/core/diagnostics/probes/local_model_probe.py @@ -14,12 +14,15 @@ """Local Model Endpoint Readiness Probe. -When artemis.jsonc routes nodes to a ``custom`` provider (a local -OpenAI-compatible model server at ``api_base``), every configured model -alias must actually be pulled and served there. This probe verifies the -endpoint is reachable and that each required model appears in -``GET {api_base}/models``, guiding the user through model installation or -server startup when it does not. +When artemis.jsonc routes nodes to a ``custom`` provider (an OpenAI-compatible +endpoint at ``api_base``), every configured model must actually be served +there. This probe verifies the endpoint is reachable and that each required +model appears in ``GET {api_base}/models``. + +Guidance is model-aware: aliases in the Artemis local-model catalog get +``artemis model pull`` / ``artemis model serve`` commands; other models are +BYO — the probe suggests serving them with the endpoint's own tooling +(Ollama, vLLM, LM Studio, ...) instead of a command Artemis cannot run. """ from typing import Any @@ -43,6 +46,28 @@ _PROBE_HTTP_TIMEOUT_S = 5.0 +def _artemis_managed(model: str) -> bool: + """Whether the model is an Artemis catalog alias (``artemis model`` + lifecycle commands apply) or a BYO name the endpoint serves itself.""" + try: + from artemis.config.local_models import LOCAL_MODELS + + return model in LOCAL_MODELS + except Exception: + return False + + +def _serve_port(api_base: str) -> str | None: + """Port from an api_base URL, for ``--port`` in serve guidance.""" + try: + from urllib.parse import urlparse + + port = urlparse(api_base).port + return str(port) if port else None + except Exception: + return None + + def _iter_configured_llms() -> list[LLM]: """Every LLM/LLMWithFallback configured in the active artemis.jsonc, including per-node fallbacks.""" @@ -124,8 +149,10 @@ async def probe(self) -> ProbeResult: reports: list[dict[str, Any]] = [] missing_actions: list[ProbeAction] = [] worst_summary = "" + managed_all: set[str] = set() async with httpx.AsyncClient(timeout=_PROBE_HTTP_TIMEOUT_S) as client: for base, required in sorted(endpoints.items()): + managed_all.update(a for a in required if _artemis_managed(a)) try: resp = await client.get(f"{base}/models") resp.raise_for_status() @@ -137,31 +164,28 @@ async def probe(self) -> ProbeResult: except Exception as e: reports.append({"api_base": base, "reachable": False, "error": str(e)}) worst_summary = f"{base} unreachable" - port = urlparse(base).port - serve_alias = next( - (m for m in sorted(required) if resolve_model_ref(m)), None - ) - if serve_alias: + managed = sorted(a for a in required if _artemis_managed(a)) + if managed: + port = _serve_port(base) + port_arg = f" --port {port}" if port else "" missing_actions.append( ProbeAction( action_type="command", label="Start Model Server", + payload=f"artemis model serve {managed[0]}{port_arg}", + ) + ) + else: + missing_actions.append( + ProbeAction( + action_type="hint", + label="Start Model Server", payload=( - f"artemis model serve {serve_alias}" - + (f" --port {port}" if port else "") + f"Start the OpenAI-compatible model server for {base}" + " and re-run diagnostics." ), ) ) - missing_actions.append( - ProbeAction( - action_type="hint", - label="Other servers", - payload=( - f"Or start any OpenAI-compatible server bound to {base} " - f"(e.g. `ollama serve`)." - ), - ) - ) continue missing = sorted(required - served) reports.append( @@ -175,7 +199,7 @@ async def probe(self) -> ProbeResult: ) for alias in missing: worst_summary = f"model '{alias}' not installed" - if resolve_model_ref(alias): + if _artemis_managed(alias): missing_actions.append( ProbeAction( action_type="command", @@ -187,11 +211,12 @@ async def probe(self) -> ProbeResult: missing_actions.append( ProbeAction( action_type="hint", - label=f"Install {alias}", + label=f"Serve {alias}", payload=( - f"Install '{alias}' with the model server's pull " - f"command (e.g. `ollama pull {alias}`) so it " - f"appears in GET {base}/models." + f"'{alias}' is not served at {base}. Pull and serve" + " it with that server's own tooling" + " (e.g. `ollama pull`, a vLLM/LM Studio config)" + " or choose a model the endpoint already serves." ), ) ) @@ -212,7 +237,7 @@ async def probe(self) -> ProbeResult: f"{len(reports)} local endpoint(s) reachable and all configured " f"model aliases are pulled and serving." ), - metadata={"endpoints": reports}, + metadata={"endpoints": reports, "managed": sorted(managed_all)}, actions=[ ProbeAction( action_type="hint", @@ -243,6 +268,6 @@ async def probe(self) -> ProbeResult: is_blocker=self.is_blocker, summary=worst_summary, description=description, - metadata={"endpoints": reports}, + metadata={"endpoints": reports, "managed": sorted(managed_all)}, actions=missing_actions, ) diff --git a/artemis/resources/config/artemis.jsonc b/artemis/resources/config/artemis.jsonc index 32b641613..71e59add7 100644 --- a/artemis/resources/config/artemis.jsonc +++ b/artemis/resources/config/artemis.jsonc @@ -46,7 +46,8 @@ "model": "llama3.2-vision", "fallback": { "provider": "openai", "model": "llama3.2-vision" } }, - // Fully local route via a local OpenAI-compatible server. + // Fully local route via any OpenAI-compatible server — Artemis-managed + // models (`artemis model serve `) or BYO (Ollama, vLLM, LM Studio). // Copy the provider/model/api_base keys into "default" or a node below; // "custom" skips cloud credential checks and needs no API key. "local-qwen": { diff --git a/tests/unit/admin_console/test_local_model_endpoints.py b/tests/unit/admin_console/test_local_model_endpoints.py new file mode 100644 index 000000000..90675ac0d --- /dev/null +++ b/tests/unit/admin_console/test_local_model_endpoints.py @@ -0,0 +1,233 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the local-model lifecycle endpoints. + +These guard the click-to-run console path: only resolvable model refs may +spawn ``artemis model`` subprocesses, ``stop`` stays port-scoped, and task +state/logs surface for polling. +""" + +import asyncio + +import pytest +from httpx import ASGITransport, AsyncClient + +from apps.admin_console.routers import system +from apps.admin_console.server import app + + +@pytest.fixture(autouse=True) +def _clear_model_tasks(): + system._MODEL_TASKS.clear() + yield + system._MODEL_TASKS.clear() + + +class _FakeStdout: + def __init__(self, lines): + self._lines = lines + + def __aiter__(self): + return self._iter() + + async def _iter(self): + for line in self._lines: + yield line + + +class _FakeProc: + def __init__(self, rc=0, lines=(b"done\n",)): + self.stdout = _FakeStdout(lines) + self._rc = rc + + async def wait(self): + return self._rc + + +def _patch_subprocess(monkeypatch, captured: list, rc=0, lines=(b"done\n",)): + async def _fake_exec(*cmd, **kwargs): + captured.append(list(cmd)) + return _FakeProc(rc=rc, lines=lines) + + monkeypatch.setattr(asyncio, "create_subprocess_exec", _fake_exec) + + +def _client(**kwargs): + return AsyncClient(transport=ASGITransport(app=app, **kwargs), base_url="http://localhost") + + +@pytest.mark.asyncio +async def test_status_reports_cli_unavailable_without_model_module(): + transport = ASGITransport(app=app) + async with AsyncClient(transport=transport, base_url="http://localhost") as ac: + res = await ac.get("/api/system/local-models/status") + assert res.status_code == 200 + data = res.json() + # The `artemis model` CLI ships with the local-models feature; on builds + # without it the console must fall back to copy-to-terminal guidance. + assert data["commands_available"] == system._model_cli_available() + assert data["tasks"] == {} + + +@pytest.mark.asyncio +async def test_pull_returns_501_when_cli_missing(): + async with _client() as ac: + res = await ac.post("/api/system/local-models/pull", json={"alias": "gemma4-e4b"}) + if system._model_cli_available(): + pytest.skip("model CLI present in this build") + assert res.status_code == 501 + assert "terminal" in res.json()["detail"] + + +@pytest.mark.asyncio +async def test_pull_rejects_unresolvable_alias(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + async with _client() as ac: + for bad in ("not-a-model", "--port", "gemma4-e4b; rm -rf /"): + res = await ac.post("/api/system/local-models/pull", json={"alias": bad}) + assert res.status_code == 400, bad + assert system._MODEL_TASKS == {} + + +@pytest.mark.asyncio +async def test_pull_rejects_remote_client(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + async with _client(client=("192.168.1.20", 42000)) as ac: + res = await ac.post("/api/system/local-models/pull", json={"alias": "gemma4-e4b"}) + assert res.status_code == 403 + assert "local-only" in res.json()["detail"] + + +@pytest.mark.asyncio +async def test_pull_starts_task_and_completes(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + captured = [] + _patch_subprocess(monkeypatch, captured, rc=0, lines=(b"downloading\n", b"done\n")) + + async with _client() as ac: + res = await ac.post("/api/system/local-models/pull", json={"alias": "gemma4-e4b"}) + assert res.status_code == 200 + body = res.json() + assert body["status"] == "running" + assert body["key"] == "pull:gemma4-e4b" + + assert captured[0][-3:] == ["model", "pull", "gemma4-e4b"] + + await system._MODEL_TASKS["pull:gemma4-e4b"]["watcher"] + task = system._MODEL_TASKS["pull:gemma4-e4b"] + assert task["status"] == "done" + assert task["returncode"] == 0 + assert "downloading" in "\n".join(task["log"]) + + +@pytest.mark.asyncio +async def test_pull_is_idempotent_while_running(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + started = asyncio.Event() + release = asyncio.Event() + + class _HangingProc(_FakeProc): + async def wait(self): + release.set() + return 0 + + async def _fake_exec(*cmd, **kwargs): + proc = _HangingProc() + started.set() + return proc + + monkeypatch.setattr(asyncio, "create_subprocess_exec", _fake_exec) + + async with _client() as ac: + res1 = await ac.post("/api/system/local-models/pull", json={"alias": "gemma4-e4b"}) + res2 = await ac.post("/api/system/local-models/pull", json={"alias": "gemma4-e4b"}) + assert res1.json()["status"] == res2.json()["status"] == "running" + + +@pytest.mark.asyncio +async def test_serve_passes_port_and_serve_cmd(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + captured = [] + _patch_subprocess(monkeypatch, captured) + + async with _client() as ac: + res = await ac.post( + "/api/system/local-models/serve", json={"alias": "gemma4-e4b", "port": 8097} + ) + assert res.status_code == 200 + assert captured[0][-5:] == ["model", "serve", "gemma4-e4b", "--port", "8097"] + + +@pytest.mark.asyncio +async def test_stop_is_port_scoped_without_positional_alias(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + captured = [] + _patch_subprocess(monkeypatch, captured) + + async with _client() as ac: + res = await ac.post( + "/api/system/local-models/stop", json={"alias": "gemma4-e4b", "port": 8080} + ) + assert res.status_code == 200 + cmd = captured[0] + # CLI: `artemis model stop --port N` — the alias must not appear as argv. + assert cmd[-3:] == ["model", "stop", "--port"] or cmd[-4:] == [ + "model", + "stop", + "--port", + "8080", + ] + assert "gemma4-e4b" not in cmd + + +@pytest.mark.asyncio +async def test_failed_process_surfaces_log_and_returncode(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + _patch_subprocess(monkeypatch, [], rc=2, lines=(b"error: no space left\n",)) + + async with _client() as ac: + res = await ac.post("/api/system/local-models/pull", json={"alias": "gemma4-e4b"}) + assert res.status_code == 200 + + await system._MODEL_TASKS["pull:gemma4-e4b"]["watcher"] + async with _client() as ac: + status = (await ac.get("/api/system/local-models/status")).json() + task = status["tasks"]["pull:gemma4-e4b"] + assert task["status"] == "failed" + assert task["returncode"] == 2 + assert any("no space left" in line for line in task["log"]) + + +@pytest.mark.asyncio +async def test_org_repo_alias_is_accepted(monkeypatch): + monkeypatch.setattr(system, "_model_cli_available", lambda: True) + captured = [] + _patch_subprocess(monkeypatch, captured) + + async with _client() as ac: + res = await ac.post( + "/api/system/local-models/pull", json={"alias": "mlx-community/gemma-4-e4b-it-4bit"} + ) + assert res.status_code == 200 + assert captured[0][-1] == "mlx-community/gemma-4-e4b-it-4bit" + + +@pytest.mark.asyncio +async def test_invalid_port_rejected(): + async with _client() as ac: + res = await ac.post( + "/api/system/local-models/serve", json={"alias": "gemma4-e4b", "port": 70000} + ) + assert res.status_code == 422 diff --git a/tests/unit/core/test_local_model_probe.py b/tests/unit/core/test_local_model_probe.py new file mode 100644 index 000000000..5120ea7fe --- /dev/null +++ b/tests/unit/core/test_local_model_probe.py @@ -0,0 +1,131 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Local model endpoint probe: guidance must be model-aware. + +Artemis catalog aliases get ``artemis model pull`` / ``artemis model serve`` +commands; BYO models on third-party OpenAI-compatible servers get neutral +hints — the probe must never emit a command Artemis cannot run on that +endpoint (or reference a foreign binary). +""" + +import sys +import types +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from artemis.core.diagnostics.probes.local_model_probe import ( + LocalModelEndpointProbe, + _artemis_managed, + _serve_port, +) + + +class _FakeLLM: + def __init__(self, model, api_base="http://127.0.0.1:8097/v1", provider="custom"): + self.provider = provider + self.model = model + self.api_base = api_base + + +@pytest.fixture +def catalog(): + """Inject a stand-in catalog module; restore the import miss afterwards.""" + fake = types.ModuleType("artemis.config.local_models") + fake.LOCAL_MODELS = {"gemma4-e4b": object(), "qwen-vl": object()} + sys.modules["artemis.config.local_models"] = fake + yield fake + del sys.modules["artemis.config.local_models"] + + +def _llms(*models, base="http://127.0.0.1:8097/v1"): + return [_FakeLLM(m, api_base=base) for m in models] + + +def _run(llms): + with patch( + "artemis.core.diagnostics.probes.local_model_probe._iter_configured_llms", + side_effect=lambda: llms, + ): + return __import__("asyncio").run(LocalModelEndpointProbe().probe()) + + +def _commands(result): + return [a.payload for a in result.actions if a.action_type == "command"] + + +def _hints(result): + return [a.payload for a in result.actions if a.action_type == "hint"] + + +def test_catalog_detection_and_port_parsing(catalog): + assert _artemis_managed("gemma4-e4b") is True + assert _artemis_managed("llama3.2-vision") is False + assert _serve_port("http://127.0.0.1:8097/v1") == "8097" + assert _serve_port("https://api.example.com/v1") is None + + +def test_unreachable_catalog_model_suggests_artemis_serve(catalog): + result = _run(_llms("gemma4-e4b", base="http://127.0.0.1:9/v1")) + assert _commands(result) == ["artemis model serve gemma4-e4b --port 9"] + assert result.status.name == "FAIL" + + +def test_unreachable_byo_model_suggests_neutral_hint(catalog): + result = _run(_llms("llama3.2-vision", base="http://127.0.0.1:9/v1")) + assert _commands(result) == [] + assert any("OpenAI-compatible" in h for h in _hints(result)) + assert "ondevice-agent-platform" not in " ".join(_hints(result)) + + +def _serve_models(*ids): + """Patch httpx so ``GET /models`` returns the given ids.""" + resp = MagicMock() + resp.raise_for_status = MagicMock() + resp.json = MagicMock(return_value={"data": [{"id": i} for i in ids]}) + client = MagicMock() + client.get = AsyncMock(return_value=resp) + cm = MagicMock() + cm.__aenter__ = AsyncMock(return_value=client) + cm.__aexit__ = AsyncMock(return_value=False) + return patch( + "artemis.core.diagnostics.probes.local_model_probe.httpx.AsyncClient", + return_value=cm, + ) + + +def test_missing_catalog_model_suggests_artemis_pull(catalog): + """A reachable endpoint lacking a catalog alias gets `artemis model pull`.""" + with _serve_models("something-else"): + result = _run(_llms("qwen-vl")) + assert _commands(result) == ["artemis model pull qwen-vl"] + + +def test_missing_byo_model_suggests_own_tooling(catalog): + with _serve_models("gemma4-e4b"): + result = _run(_llms("llama3.2-vision")) + assert _commands(result) == [] + assert any("own tooling" in h for h in _hints(result)) + + +def test_cloud_only_config_is_not_used_pass(catalog): + class _Cloud: + provider = "google" + model = "gemini-3.8-flash" + api_base = None + + result = _run([_Cloud()]) + assert result.status.name == "PASS" + assert result.summary == "Not used" From 0e5eea46cc16ba001fdec9d3e05fd49baa814197 Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 16:28:32 +0900 Subject: [PATCH 22/45] docs: mark_done/blocked-plan termination contract; console Run buttons for model lifecycle --- docs/local_models.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/local_models.md b/docs/local_models.md index 37b5092f9..4ec728fbb 100644 --- a/docs/local_models.md +++ b/docs/local_models.md @@ -71,8 +71,10 @@ every configured alias is actually served: - ❌ `model 'X' not installed` → action: `artemis model pull X` - ❌ `endpoint unreachable` → action: `artemis model serve X --port 8080` -The same probe backs the web console's setup wizard and `mobile_diagnose`, -so remediation is one click anywhere it appears. +The same probe backs the web console's setup wizard and `mobile_diagnose`. +For catalog aliases the console shows **Run** buttons that execute +`artemis model pull` / `serve` in the background with live logs; other +servers get copyable commands for their own tooling. ## 5. Run @@ -106,7 +108,10 @@ guidance for non-catalog aliases). - **Structured output**: strict JSON-schema `response_format` is not required — ARTEMIS uses function-calling for structured nodes. - **Termination**: 4B-class models can recognize the goal yet keep - deliberating instead of ending the turn. Prefer bounded goals - ("open X", "scroll to Y") over open-ended ones until your deployment adds - an explicit done affordance. + deliberating instead of ending the turn. The Pro/operator loop exposes a + `mark_done` tool for this: the model calls it when the goal is met, and the + convergence gate routes the claim to final verification — a false claim is + rejected and the run continues. Goals that cannot be achieved (e.g. a + required app is not installed) should be marked `[!]` blocked in the plan; + an all-resolved plan also routes to settlement instead of looping. - **Memory**: budget ~6 GB for a 4-bit 4B vision model + KV cache. From e118e4811dbe0f472d2badf45693905f637d4599 Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 18:22:02 +0900 Subject: [PATCH 23/45] fix: harden Flash tool-call resolution for local VLM servers --- artemis/agents/flash/runner.py | 112 ++++++++++++++++++++++++- tests/unit/agents/test_flash_runner.py | 61 ++++++++++++++ 2 files changed, 171 insertions(+), 2 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index d112424c3..8bb9dfeef 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -77,6 +77,7 @@ from artemis.data_engine.trace import trace from artemis.graph.perception import _check_injected_instruction_file from artemis.graph.state import State +from artemis.llm.router import ModelProvider from artemis.llm.structured import ParseFailure, parse_structured from artemis.mcp.action_executor import McpActionExecutor from artemis.utils.image_codec import image_data_uri @@ -105,6 +106,59 @@ " action tool or 'report_task_status'." ) +# Hard ceiling on consecutive narration-only turns. Some local VLMs (e.g. +# Gemma 4 E4B under mlx_vlm) can fall into an apology loop — seeing the +# goal, narrating a plan, never emitting a tool call — and with an +# unlimited turn budget that loop never exits on its own. +_MAX_CONSECUTIVE_NO_TOOL_CALLS = 8 + +# Gemma-family tool-call envelopes observed in the wild: the model emits +# `call:{}` and some servers (mlx_vlm) wrap it into a function +# literally named "call" whose arguments are the unparseable remainder, or +# the envelope leaks into text content. +_GEMMA_CALL_RE = re.compile(r"(?:<\|?tool_call\|?>?\s*)?call:([a-zA-Z_]\w*)\s*\{") +_GEMMA_ENVELOPED_RE = re.compile(r'\s*\{?\s*"?([a-zA-Z_]\w*)"?\s*\{') +_GEMMA_QUOTE_RE = re.compile(r'<\|\\?\"\|>') + + +def _loads_relaxed_args(raw: str): + """Best-effort JSON parse of a mangled Gemma `name{key:value}` args object.""" + s = raw.strip() + s = _GEMMA_QUOTE_RE.sub('"', s) + # Quote bare keys: {key: -> {"key": and ,key: -> ,"key": + s = re.sub(r'([{,])\s*"?([a-zA-Z_]\w*)"?\s*:', r'\1"\2":', s) + try: + return json.loads(s) + except ValueError: + return None + + +def _parse_call_syntax(raw: str, match=None): + """Recovers `name{args}` at ``match`` — `call:name{...}` or `{name{...}`.""" + if match is None: + match = _GEMMA_ENVELOPED_RE.match(raw) + if not match: + return None + name = match.group(1) + start = match.end() - 1 # opening '{' of the args object + args = None + depth = 0 + for i in range(start, len(raw)): + ch = raw[i] + if ch == '{': + depth += 1 + elif ch == '}': + depth -= 1 + if depth == 0: + args = _loads_relaxed_args(raw[start:i + 1]) + break + if depth: + args = _loads_relaxed_args(raw[start:] + '}') + if not isinstance(args, dict): + return None + return {"name": name, "args": args, "id": str(uuid.uuid4())} + + _FINAL_TURN_WARNING = "[WARNING] This is your final turn; only 'report_task_status' is available." @@ -537,8 +591,40 @@ def _resolve_tool_calls(self, response, raw_text: str) -> list: "id": str(uuid.uuid4()), } ] + + # Local-server envelope repair: mlx_vlm can wrap the model's native + # `call:name{args}` output into a function literally named "call" whose + # arguments are the unparseable remainder — langchain then drops it to + # invalid_tool_calls and the call is silently lost. + if not tool_calls: + tool_calls = self._repair_enveloped_tool_calls( + getattr(response, "invalid_tool_calls", None) + ) + + # Same envelope can leak into text content outright. + if not tool_calls and raw_text: + call_match = _GEMMA_CALL_RE.search(raw_text) + if call_match: + repaired = _parse_call_syntax(raw_text, match=call_match) + if repaired: + tool_calls = [repaired] return tool_calls + @staticmethod + def _repair_enveloped_tool_calls(invalid_tool_calls) -> list: + """Recovers calls mangled into `name="call"` + raw `name{args}` args.""" + repaired = [] + for tc in invalid_tool_calls or []: + name = tc.get("name") + raw_args = tc.get("args") + if name != "call" or not isinstance(raw_args, str): + continue + parsed = _parse_call_syntax(raw_args) + if parsed: + parsed["id"] = tc.get("id") or parsed["id"] + repaired.append(parsed) + return repaired + # ------------------------------------------------------------------ # Per-tool-call helpers (act / record / report) # ------------------------------------------------------------------ @@ -889,8 +975,16 @@ async def _invoke_model(self, llm, current_tools: list, messages: list[BaseMessa # Keep only the latest screenshot: strict gateways cap images per # request, and earlier frames are stale context anyway. self._prune_intermediate_screenshots(messages) - # Bind active tools - bound_llm = llm.bind_tools(current_tools) + # Bind active tools. Local OpenAI-compatible servers (mlx_vlm and + # friends) may let the model answer with narration only, which the + # loop reads as a no-progress turn; tool_choice="required" holds the + # provider to the loop's contract that every turn is a tool call. + endpoint = getattr(llm, "endpoint", None) + provider = getattr(endpoint, "provider", None) + if provider == ModelProvider.CUSTOM: + bound_llm = llm.bind_tools(current_tools, tool_choice="required") + else: + bound_llm = llm.bind_tools(current_tools) # Invoke Model. Streaming, live-token UI deltas, classified # retries, and pause/resume are all owned by the LLM gateway @@ -1064,6 +1158,7 @@ async def run(self, state: State) -> dict: current_xml_list = xml_list previous_turn: _TurnRecord | None = None pending_notices: list[str] = [] + no_tool_call_streak = 0 while limit is None or turns < limit: turns += 1 @@ -1139,11 +1234,24 @@ async def run(self, state: State) -> dict: if is_final: final_report = {"status": "failed", "explanation": raw_text} break + no_tool_call_streak += 1 + if no_tool_call_streak >= _MAX_CONSECUTIVE_NO_TOOL_CALLS: + final_report = { + "status": "failed", + "explanation": ( + f"Stopped after {no_tool_call_streak} consecutive responses" + " without a tool call; the model kept narrating instead" + " of acting." + ), + } + break pending_notices.append(_NO_TOOL_CALL_NOTICE) ledger.stage_turn(messages[turn_base:]) previous_turn = _TurnRecord() continue + no_tool_call_streak = 0 + # Process tool calls turn = _TurnRecord() ( diff --git a/tests/unit/agents/test_flash_runner.py b/tests/unit/agents/test_flash_runner.py index f188b5e1b..2633a50de 100644 --- a/tests/unit/agents/test_flash_runner.py +++ b/tests/unit/agents/test_flash_runner.py @@ -556,3 +556,64 @@ async def test_final_report_persists_native_thinking(mock_context): assert kwargs["operator_raw_thinking"] == "final text" assert kwargs["operator_native_thinking"] == "native summary" assert isinstance(messages[-1], ToolMessage) + + +# --- Gemma local-server tool-call envelope repair -------------------------------- + + +def _make_runner(mock_context): + with patch("artemis.controllers.unified_controller.get_driver"): + return FlashRunner(mock_context, goal="test goal") + + +def test_resolve_tool_calls_keeps_native_calls(mock_context): + runner = _make_runner(mock_context) + native = [{"name": "click", "args": {"target": 1}, "id": "n1"}] + resp = SimpleNamespace(tool_calls=native, invalid_tool_calls=[]) + assert runner._resolve_tool_calls(resp, "") == native + + +def test_resolve_tool_calls_repairs_enveloped_invalid_call(mock_context): + """mlx_vlm wraps `call:name{args}` as name="call" + unparseable arguments.""" + runner = _make_runner(mock_context) + resp = SimpleNamespace( + tool_calls=[], + invalid_tool_calls=[ + { + "name": "call", + "args": '{"report_task_status{explanation": "Settings is open."}', + "id": "broken-1", + "error": "json error", + } + ], + ) + calls = runner._resolve_tool_calls(resp, "") + assert calls == [ + { + "name": "report_task_status", + "args": {"explanation": "Settings is open."}, + "id": "broken-1", + } + ] + + +def test_resolve_tool_calls_repairs_call_envelope_in_text(mock_context): + """The `call:` envelope can leak into content instead of tool_calls.""" + runner = _make_runner(mock_context) + resp = SimpleNamespace(tool_calls=[], invalid_tool_calls=[]) + text = 'Opening settings. call:click{target: 34, target_description: "Display & touch"}' + calls = runner._resolve_tool_calls(resp, text) + assert calls[0]["name"] == "click" + assert calls[0]["args"] == {"target": 34, "target_description": "Display & touch"} + + +def test_resolve_tool_calls_unrecoverable_envelope_returns_empty(mock_context): + """Genuinely garbled args still surface as no-call (notice path), not a crash.""" + runner = _make_runner(mock_context) + resp = SimpleNamespace( + tool_calls=[], + invalid_tool_calls=[ + {"name": "call", "args": '{"click{target": "6,broken', "id": "b2", "error": "x"} + ], + ) + assert runner._resolve_tool_calls(resp, "") == [] From f27b9f556581d3f6fbc4864912d5c80875c9dee4 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 01:03:47 +0900 Subject: [PATCH 24/45] feat: add System-One decision layer client and planner-validation offload --- artemis/agents/planner/planner.py | 58 ++++++++ artemis/config/agent.py | 42 ++++++ artemis/core/decision_client.py | 177 +++++++++++++++++++++++ config/artemis.gemma4.jsonc | 13 ++ tests/unit/core/test_decision_client.py | 184 ++++++++++++++++++++++++ 5 files changed, 474 insertions(+) create mode 100644 artemis/core/decision_client.py create mode 100644 tests/unit/core/test_decision_client.py diff --git a/artemis/agents/planner/planner.py b/artemis/agents/planner/planner.py index 8b6d5f439..588bf8e81 100644 --- a/artemis/agents/planner/planner.py +++ b/artemis/agents/planner/planner.py @@ -84,6 +84,56 @@ def validate_plan_format(content: str) -> tuple[bool, str]: return True, "" +async def _try_decision_layer( + ctx: ArtemisContext, + initial_goal: str, + content_before: str, + content_after: str, +) -> dict | None: + """Asks the decision layer for the milestone review verdict. + + Returns the ``{"status", "feedback"}`` dict when the endpoint answers at + or above the configured confidence threshold; ``None`` to escalate to + the LLM path. State is text-distilled (goal + plan diff) — decision + models take no pixels. + """ + agent_config = getattr(ctx, "agent_config", None) + cfg = getattr(agent_config, "decision", None) + if not cfg or not cfg.enabled or not getattr(cfg, "planner_validation", True): + return None + from artemis.core.decision_client import DecisionClient + + state = ( + f"Goal: {initial_goal[:500]}\n" + f"Plan before: {content_before[:800]}\n" + f"Plan after: {content_after[:800]}" + ) + client = DecisionClient( + url=cfg.url, model=cfg.model, timeout_seconds=cfg.timeout_seconds + ) + result = await client.anoul( + state, + "Is the revised plan coherent with the goal and strictly better than " + "the previous plan (no lost milestones, no contradictory steps)?", + ) + if not result.answered or result.confidence < cfg.confidence_threshold: + logger.info( + "Decision layer escalated planner validation " + f"(answered={result.answered}, confidence={result.confidence:.2f})" + ) + return None + verdict = bool(result.verdict) + logger.info(f"Decision layer answered planner validation: {verdict} (confidence {result.confidence:.2f})") + return { + "status": "success" if verdict else "failed", + "feedback": ( + "Decision-layer review " + f"({'approved' if verdict else 'flagged'}, " + f"confidence {result.confidence:.2f})." + ), + } + + def _check_gates(ctx: ArtemisContext) -> tuple[bool, bool]: """(midway_checks, final_check): the two check gates, read separately so the planner is taught the judgment moment that actually applies. With both @@ -184,6 +234,14 @@ async def run_async_planner_validation( HumanMessage(content=human_message), ] + # Decision layer: a local decision model (Laya/Jev) can answer the + # advisory yes/no in ~100ms instead of a full LLM turn. Below the + # confidence threshold — or any endpoint failure — fall through to + # the existing model path. + decision_answer = await _try_decision_layer(ctx, initial_goal, content_before, content_after) + if decision_answer is not None: + return decision_answer + # Advisory review on the lightweight judge node (shared default with # the pixel safety net), never the heavyweight Planner model. llm = get_llm(ctx=ctx, name="planner_validation").with_structured_output(ValidationResult) diff --git a/artemis/config/agent.py b/artemis/config/agent.py index 6fb00d398..bb3f48dec 100644 --- a/artemis/config/agent.py +++ b/artemis/config/agent.py @@ -152,6 +152,44 @@ class PlannerValidationConfig(BaseModel): model_config = {"extra": "allow"} +class DecisionLayerConfig(BaseModel): + """System-One decision layer: cheap typed junctions (noul/choice/score) + answered by a local decision model (e.g. Laya) instead of a full LLM call. + + Every junction is advisory — a decision-layer miss or low-confidence + answer always escalates to the existing model path, never rolls back. + """ + + enabled: bool = Field( + default=False, + description="Master switch for the decision layer. Off = identical to upstream behavior.", + ) + url: str = Field( + default="http://127.0.0.1:11434/v1/decide", + description="Jev/Laya-compatible decision endpoint.", + ) + model: str | None = Field( + default="laya", + description="Decision model name sent in the request payload, if the endpoint uses it.", + ) + confidence_threshold: float = Field( + default=0.85, + ge=0.0, + le=1.0, + description="Answers below this confidence escalate to the LLM path.", + ) + timeout_seconds: float = Field( + default=5.0, + gt=0, + description="Per-request decision timeout; expiry escalates to the LLM path.", + ) + planner_validation: bool = Field( + default=True, + description="Offload the advisory planner milestone review to the decision layer.", + ) + model_config = {"extra": "allow"} + + class CommitteeConfig(BaseModel): """Configuration specific to Multi-Agent Committee / Council.""" @@ -880,6 +918,10 @@ class AgentGlobalConfig(BaseModel): " ``explorer.flash_mode`` / ``explorer.pro_mode`` decide." ), ) + decision: DecisionLayerConfig = Field( + default_factory=DecisionLayerConfig, + description="System-One decision layer (Laya/Jev) offloading cheap typed junctions.", + ) planner_validation: PlannerValidationConfig = Field( default_factory=PlannerValidationConfig, description="Planner milestone validation runtime options.", diff --git a/artemis/core/decision_client.py b/artemis/core/decision_client.py new file mode 100644 index 000000000..8d6e120b2 --- /dev/null +++ b/artemis/core/decision_client.py @@ -0,0 +1,177 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Typed decision-model client — the "System One" layer. + +Decision models (Jev from TypeSafe AI, or the open-weight Laya from Convai +Innovations — served locally via Ollama MLX builds) answer *typed* questions +about a distilled text/JSON state in a single non-autoregressive pass: +``choice`` (pick one of labelled options), ``score`` (ordered rubric), or +``noul`` (calibrated yes/no probability). They never emit free text, so +there is nothing to parse and no format to hallucinate. + +Wire format (TypeSafe-compatible, which Laya's ``typed-decisions`` checkpoint +also speaks):: + + POST {url} + {"model": "...", "state": "...", + "questions": {"gate": {"type": "noul", "instructions": "..."}}} + -> + {"answers": {"gate": {"noul": 0.83, "confidence": 0.91}}, ...} + +Used to offload cheap boolean/categorical junctions (validator gates, +planner review, routing triage) from the heavyweight multimodal model. +Fails closed: any transport/parse problem yields ``DecisionResult`` with +``verdict=None`` and ``confidence=0`` so callers escalate to the LLM path. +""" + +import asyncio +from dataclasses import dataclass, field +import json +import urllib.error +import urllib.request + +from third_party.mobile_use.utils.logger import get_logger + +logger = get_logger(__name__) + +DEFAULT_TIMEOUT_SECONDS = 5.0 + + +@dataclass +class DecisionResult: + """One answered question. + + ``verdict`` is the typed answer — bool for ``noul`` (probability >= 0.5), + the winning key for ``choice``, a float for ``score`` — or ``None`` when + the decision failed and the caller should escalate to the model path. + """ + + verdict: bool | str | float | None + confidence: float = 0.0 + probabilities: dict = field(default_factory=dict) + raw: dict = field(default_factory=dict) + + @property + def answered(self) -> bool: + return self.verdict is not None + + +class DecisionClient: + """Minimal urllib client for Jev/Laya-compatible decision endpoints.""" + + def __init__( + self, + url: str, + model: str | None = None, + timeout_seconds: float = DEFAULT_TIMEOUT_SECONDS, + ): + self._url = url + self._model = model + self._timeout = timeout_seconds + + def decide(self, state: str, questions: dict) -> dict[str, DecisionResult]: + """One request, all questions answered in a single forward pass.""" + payload: dict = {"state": state, "questions": questions} + if self._model: + payload["model"] = self._model + request = urllib.request.Request( + self._url, + data=json.dumps(payload).encode("utf-8"), + headers={"Content-Type": "application/json"}, + method="POST", + ) + try: + with urllib.request.urlopen(request, timeout=self._timeout) as resp: + body = json.loads(resp.read().decode("utf-8")) + except (urllib.error.URLError, TimeoutError, OSError, ValueError) as e: + logger.warning(f"Decision endpoint {self._url} failed: {e}") + return {name: DecisionResult(verdict=None) for name in questions} + answers = body.get("answers") or {} + return { + name: self._parse_answer(spec, answers.get(name) or {}) + for name, spec in questions.items() + } + + async def adecide(self, state: str, questions: dict) -> dict[str, DecisionResult]: + return await asyncio.to_thread(self.decide, state, questions) + + def noul(self, state: str, question: str) -> DecisionResult: + """Calibrated yes/no — the gate/guardrail primitive.""" + results = self.decide( + state, {"q": {"type": "noul", "instructions": question}} + ) + return results["q"] + + async def anoul(self, state: str, question: str) -> DecisionResult: + return await asyncio.to_thread(self.noul, state, question) + + def choose( + self, state: str, question: str, criteria: dict[str, str] + ) -> DecisionResult: + """Categorical pick over labelled options.""" + results = self.decide( + state, + {"q": {"type": "choice", "instructions": question, "criteria": criteria}}, + ) + return results["q"] + + async def achoose( + self, state: str, question: str, criteria: dict[str, str] + ) -> DecisionResult: + return await asyncio.to_thread(self.choose, state, question, criteria) + + def _parse_answer(self, spec: dict, answer: dict) -> DecisionResult: + qtype = spec.get("type", "noul") + confidence = answer.get("confidence") + try: + confidence = float(confidence) if confidence is not None else 0.0 + except (TypeError, ValueError): + confidence = 0.0 + probabilities = answer.get("probabilities") or {} + if qtype == "noul": + prob = answer.get("noul") + if prob is None: + return DecisionResult(verdict=None, confidence=confidence, raw=answer) + try: + prob = float(prob) + except (TypeError, ValueError): + return DecisionResult(verdict=None, confidence=confidence, raw=answer) + return DecisionResult( + verdict=prob >= 0.5, + confidence=confidence, + probabilities={"yes": prob, "no": 1.0 - prob}, + raw=answer, + ) + if qtype == "choice": + verdict = answer.get("choice") + return DecisionResult( + verdict=verdict, + confidence=confidence, + probabilities=probabilities, + raw=answer, + ) + if qtype == "score": + score = answer.get("score") + try: + verdict = float(score) if score is not None else None + except (TypeError, ValueError): + verdict = None + return DecisionResult( + verdict=verdict, + confidence=confidence, + probabilities=probabilities, + raw=answer, + ) + return DecisionResult(verdict=None, confidence=confidence, raw=answer) diff --git a/config/artemis.gemma4.jsonc b/config/artemis.gemma4.jsonc index 17b97a8e4..4fb1463ed 100644 --- a/config/artemis.gemma4.jsonc +++ b/config/artemis.gemma4.jsonc @@ -290,6 +290,19 @@ "enabled": true, // Whether Outputter is mounted to synthesize final outputs "force_synthesis": false // Force Outputter synthesis even without explicit output schema }, + // 🧠 Decision Layer (System One): a local decision model (Laya via Ollama + // or a Jev-compatible endpoint) answers cheap typed junctions — yes/no + // gates, categorical picks, rubric scores — in ~100ms instead of a full + // Gemma turn. Advisory only: below-threshold or unreachable answers + // escalate to the existing model path. Text/JSON state only — no pixels. + "decision": { + "enabled": false, // opt-in; off = upstream-identical behavior + "url": "http://127.0.0.1:11434/v1/decide", + "model": "laya", + "confidence_threshold": 0.85, + "timeout_seconds": 5.0, + "planner_validation": true // offload the advisory milestone review first + }, // 🧭 Explorer tier: the perception sub-agent behind `ask_explorer`. // Tiers are a user setting; calling agents never see which tier is active. // flash - one-shot visual detection on the screenshot (fastest) diff --git a/tests/unit/core/test_decision_client.py b/tests/unit/core/test_decision_client.py new file mode 100644 index 000000000..aa5d85112 --- /dev/null +++ b/tests/unit/core/test_decision_client.py @@ -0,0 +1,184 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the System-One decision client.""" + +import io +import json +from types import SimpleNamespace +from unittest.mock import patch +import urllib.error + +import pytest + +from artemis.core.decision_client import DecisionClient + + +def _mock_response(body: dict): + return io.BytesIO(json.dumps(body).encode("utf-8")) + + +class _Closing(io.BytesIO): + """BytesIO that survives use as a urlopen context manager.""" + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + +def _mock_ctx(body: dict): + return _Closing(json.dumps(body).encode("utf-8")) + + +def test_noul_yes_verdict(): + client = DecisionClient(url="http://x/v1/decide", model="laya") + body = {"answers": {"q": {"noul": 0.92, "confidence": 0.9}}} + with patch("urllib.request.urlopen", return_value=_mock_ctx(body)) as mock: + result = client.noul("state text", "is it ok?") + assert result.answered + assert result.verdict is True + assert result.confidence == 0.9 + assert result.probabilities["yes"] == pytest.approx(0.92) + payload = json.loads(mock.call_args.args[0].data.decode()) + assert payload["questions"]["q"]["type"] == "noul" + assert payload["model"] == "laya" + + +def test_noul_no_verdict(): + client = DecisionClient(url="http://x/v1/decide") + body = {"answers": {"q": {"noul": 0.1, "confidence": 0.88}}} + with patch("urllib.request.urlopen", return_value=_mock_ctx(body)): + result = client.noul("s", "q?") + assert result.verdict is False + assert result.probabilities["no"] == pytest.approx(0.9) + + +def test_choice_verdict(): + client = DecisionClient(url="http://x/v1/decide") + body = { + "answers": { + "q": { + "choice": "settings", + "probabilities": {"settings": 0.8, "chrome": 0.2}, + "confidence": 0.8, + } + } + } + with patch("urllib.request.urlopen", return_value=_mock_ctx(body)): + result = client.choose("s", "pick", {"settings": "a", "chrome": "b"}) + assert result.verdict == "settings" + assert result.probabilities["settings"] == 0.8 + + +def test_network_error_fails_closed(): + client = DecisionClient(url="http://x/v1/decide") + with patch( + "urllib.request.urlopen", side_effect=urllib.error.URLError("down") + ): + result = client.noul("s", "q?") + assert not result.answered + assert result.verdict is None + assert result.confidence == 0.0 + + +def test_malformed_body_fails_closed(): + client = DecisionClient(url="http://x/v1/decide") + with patch("urllib.request.urlopen", return_value=_Closing(b"not json")): + result = client.noul("s", "q?") + assert not result.answered + + +def test_missing_answer_fields_fail_closed(): + client = DecisionClient(url="http://x/v1/decide") + body = {"answers": {"q": {}}} + with patch("urllib.request.urlopen", return_value=_mock_ctx(body)): + result = client.noul("s", "q?") + assert result.verdict is None + + +@pytest.mark.asyncio +async def test_anoul_async_wrapper(): + client = DecisionClient(url="http://x/v1/decide") + body = {"answers": {"q": {"noul": 0.7, "confidence": 0.95}}} + with patch("urllib.request.urlopen", return_value=_mock_ctx(body)): + result = await client.anoul("s", "q?") + assert result.verdict is True + assert result.confidence == 0.95 + + +# --- Planner wiring (_try_decision_layer) ------------------------------------- + + +@pytest.mark.asyncio +async def test_planner_decision_layer_disabled_returns_none(): + from artemis.agents.planner.planner import _try_decision_layer + + ctx = SimpleNamespace(agent_config=SimpleNamespace( + decision=SimpleNamespace(enabled=False))) + assert await _try_decision_layer(ctx, "goal", "before", "after") is None + + +@pytest.mark.asyncio +async def test_planner_decision_layer_answers_above_threshold(): + from artemis.agents.planner.planner import _try_decision_layer + from artemis.core.decision_client import DecisionResult + + ctx = SimpleNamespace(agent_config=SimpleNamespace( + decision=SimpleNamespace( + enabled=True, planner_validation=True, + url="http://x", model="laya", + confidence_threshold=0.85, timeout_seconds=5.0))) + with patch( + "artemis.core.decision_client.DecisionClient.anoul", + return_value=DecisionResult(verdict=True, confidence=0.9), + ): + out = await _try_decision_layer(ctx, "goal", "before", "after") + assert out["status"] == "success" + assert "approved" in out["feedback"] + + +@pytest.mark.asyncio +async def test_planner_decision_layer_escalates_below_threshold(): + from artemis.agents.planner.planner import _try_decision_layer + from artemis.core.decision_client import DecisionResult + + ctx = SimpleNamespace(agent_config=SimpleNamespace( + decision=SimpleNamespace( + enabled=True, planner_validation=True, + url="http://x", model="laya", + confidence_threshold=0.85, timeout_seconds=5.0))) + with patch( + "artemis.core.decision_client.DecisionClient.anoul", + return_value=DecisionResult(verdict=True, confidence=0.4), + ): + assert await _try_decision_layer(ctx, "goal", "before", "after") is None + + +@pytest.mark.asyncio +async def test_planner_decision_layer_escalates_on_failure(): + from artemis.agents.planner.planner import _try_decision_layer + from artemis.core.decision_client import DecisionResult + + ctx = SimpleNamespace(agent_config=SimpleNamespace( + decision=SimpleNamespace( + enabled=True, planner_validation=True, + url="http://x", model="laya", + confidence_threshold=0.85, timeout_seconds=5.0))) + with patch( + "artemis.core.decision_client.DecisionClient.anoul", + return_value=DecisionResult(verdict=None, confidence=0.0), + ): + assert await _try_decision_layer(ctx, "goal", "before", "after") is None From b20aa8e5db291ade9cc4c92874d3dee0bc2e9703 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 03:27:42 +0900 Subject: [PATCH 25/45] =?UTF-8?q?feat:=20hybrid=20Flash=20loop=20=E2=80=94?= =?UTF-8?q?=20VLM=20describes,=20decision=20model=20picks=20the=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Behind decision.flash_loop: one upfront milestone plan call, then each turn the VLM emits a text description of the screen (no tool bindings, so tool-call envelope mangling cannot occur) and the decision layer chooses from a fixed menu of element taps plus meta-actions. The chosen call is stamped onto the describe message so ToolMessages keep a legitimate parent; inconclusive verdicts escalate to the standard tool-call turn. --- artemis/agents/flash/runner.py | 247 +++++++++++++++++++- artemis/config/agent.py | 9 + config/artemis.gemma4.jsonc | 8 +- tests/unit/agents/flash/test_hybrid_loop.py | 241 +++++++++++++++++++ 4 files changed, 502 insertions(+), 3 deletions(-) create mode 100644 tests/unit/agents/flash/test_hybrid_loop.py diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 8bb9dfeef..6f0927564 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -79,11 +79,13 @@ from artemis.graph.state import State from artemis.llm.router import ModelProvider from artemis.llm.structured import ParseFailure, parse_structured +from artemis.core.decision_client import DecisionClient from artemis.mcp.action_executor import McpActionExecutor from artemis.utils.image_codec import image_data_uri from artemis.mcp.observation import observe from artemis.memory.transcript import PRO_UI_LIST_MARKER, TranscriptLedger, mark_ephemeral from artemis.services.llm import ( + LLMCallError, RobustChatModelWrapper, acomplete, get_google_llm, @@ -161,6 +163,57 @@ def _parse_call_syntax(raw: str, match=None): _FINAL_TURN_WARNING = "[WARNING] This is your final turn; only 'report_task_status' is available." +# Hybrid Flash loop (decision.flash_loop): the VLM perceives, the typed +# decision model acts. The describe call carries NO tool declarations, so +# the tool-call envelope syntax that local VLMs mangle can never be +# emitted; action selection is a fixed-space `choose` over the live +# element list plus meta-actions instead. +_HYBRID_PLAN_PROMPT = """You are the planning stage of a UI testing agent. +GOAL: $goal + +Decompose the goal into 3-8 short ordered milestones (one per line, starting +with '- '). Each milestone names a screen state or interaction step, not a +tool call. Output only the milestone list.""" + +_HYBRID_DESCRIBE_PROMPT = """You are the perception stage of a UI testing agent. +GOAL: $goal +PLAN: +$plan + +Describe the CURRENT screenshot factually in 3-5 short sentences: which app +and screen is shown, what has changed since the previous observation, and +where the elements relevant to the goal sit. For every element relevant to +the goal give one line: [index] label ~[x,y] — the index from the attached +element list when the element is listed there, and a normalized 0-1000 +[x,y] coordinate only when it is visible on screen but NOT in the list. +Never claim an action was taken. Do not decide what to do next — a separate +decision stage reads your description.""" + +# Menu entries the decision model may always pick, alongside the element +# taps generated from the live index list. Free-text input is excluded by +# design: a fixed answer space cannot produce the text to type, so a goal +# that needs text input escalates to the standard tool-calling turn. +_HYBRID_META_ACTIONS = { + "swipe_up": "scroll the screen up to reveal content below", + "swipe_down": "scroll the screen down to reveal content above", + "swipe_left": "swipe left (e.g. carousel, page forward)", + "swipe_right": "swipe right (e.g. carousel, page back)", + "press_back": "press the Android back button", + "press_home": "press the Android home button", + "wait": "wait briefly for the screen to settle or load", + "done": "the goal is satisfied — finish the task as completed", + "fail": "the goal cannot be achieved from here — finish as failed", +} + +# Cap on element-tap entries in the decision menu: the decision model's +# context is short (~512-1024 tokens) and taps beyond the first screenful +# are rarely the right action anyway. +_HYBRID_MAX_MENU_ELEMENTS = 15 + +# Distilled state sent to the decision model is capped for the same reason: +# goal + plan + screen description, truncated tail-first. +_HYBRID_MAX_STATE_CHARS = 2000 + @dataclass class _TurnRecord: @@ -342,6 +395,169 @@ def _init_llm(self): return RobustChatModelWrapper(get_google_llm(model_name="gemini-2.5-flash"), self.ctx) + # ------------------------------------------------------------------ + # Hybrid loop (decision.flash_loop): VLM describes, decision model acts + # ------------------------------------------------------------------ + + async def _hybrid_plan(self, llm) -> str | None: + """The one upfront planning call — Pro's planner leg grafted into Flash. + + A plain completion (no tools): the VLM emits a milestone list that the + per-turn describe prompt carries as context. Failure is non-fatal — the + loop still runs, just without plan guidance. + """ + prompt = Template(_HYBRID_PLAN_PROMPT).render(goal=self.goal) + try: + response = await invoke_llm_with_timeout_message( + acomplete(llm, [HumanMessage(content=prompt)]), + timeout_seconds=10, + hard_timeout=settings.LLM_FLASH_HARD_TIMEOUT_SECONDS, + ) + except LLMCallError as e: + logger.warning(f"Hybrid plan call failed, running unplanned: {e}") + return None + plan = self._extract_response_text(response).strip() + logger.info(f"Hybrid plan ({len(plan)} chars): {plan[:200]}") + return plan or None + + @staticmethod + def _hybrid_action_menu(state: State) -> dict[str, str]: + """The fixed action menu for one turn: element taps + meta-actions. + + Tap keys embed the element index of the CURRENT observation's list — + index drift across turns is impossible because the menu is rebuilt + every turn and the executor resolves the index against the same list + snapshot the decision was made on. + """ + elements = getattr(state, "indexed_elements", None) or [] + menu: dict[str, str] = {} + for el in elements[:_HYBRID_MAX_MENU_ELEMENTS]: + idx = el.get("index") + if idx is None: + continue + label = ( + el.get("text") + or el.get("content_desc") + or el.get("resource_id") + or el.get("class_name") + or "element" + ) + menu[f"tap_{idx}"] = f"tap element {idx}: {str(label)[:60]}" + menu.update(_HYBRID_META_ACTIONS) + return menu + + @staticmethod + def _menu_choice_to_call(choice: str, description: str) -> dict | None: + """Maps a menu key to a tool-call dict for the normal execution path.""" + tid = f"call_{uuid.uuid4().hex[:8]}" + if choice.startswith("tap_"): + try: + idx = int(choice[len("tap_"):]) + except ValueError: + return None + return {"id": tid, "name": "click", "args": {"target": idx}} + if choice in ("swipe_up", "swipe_down", "swipe_left", "swipe_right"): + return { + "id": tid, + "name": "swipe", + "args": {"direction": choice.split("_", 1)[1]}, + } + if choice in ("press_back", "press_home"): + return { + "id": tid, + "name": "press_key", + "args": {"key": "back" if choice == "press_back" else "home"}, + } + if choice == "wait": + return {"id": tid, "name": "wait_for_delay", "args": {"timeout_ms": 1500}} + if choice in ("done", "fail"): + return { + "id": tid, + "name": "report_task_status", + "args": { + "status": "completed" if choice == "done" else "failed", + "explanation": description[:500] or "Decision layer verdict.", + }, + } + return None + + async def _hybrid_decide( + self, + llm, + state: State, + tail: HumanMessage, + plan_text: str | None, + cfg, + ) -> tuple | None: + """One hybrid turn: describe → choose → tool call. + + Returns ``(describe_response, [tool_call])`` on a confident decision, + ``None`` to escalate to the standard tool-calling model turn. The + describe call binds no tools — the VLM answers with a screen + narrative (plus approximate coords for unlisted targets) that becomes + the turn's thought text, so envelope-mangling and narration-only + stalls cannot occur on this path. + """ + describe_prompt = Template(_HYBRID_DESCRIBE_PROMPT).render( + goal=self.goal, plan=plan_text or "(no plan — describe and list elements)" + ) + try: + response = await invoke_llm_with_timeout_message( + acomplete(llm, [SystemMessage(content=describe_prompt), tail]), + timeout_seconds=10, + hard_timeout=settings.LLM_FLASH_HARD_TIMEOUT_SECONDS, + ) + except LLMCallError as e: + logger.warning(f"Hybrid describe call failed, escalating: {e}") + return None + description = self._extract_response_text(response) + logger.info(f"Hybrid describe: {description[:200]}") + + menu = self._hybrid_action_menu(state) + client = DecisionClient( + cfg.url, model=cfg.model, timeout_seconds=cfg.timeout_seconds + ) + state_text = ( + f"Goal: {self.goal}\n" + f"Plan: {plan_text or 'none'}\n" + f"Current screen: {description}" + ) + verdict = await client.achoose( + state_text[-_HYBRID_MAX_STATE_CHARS:], + "Which single action moves the task forward?", + menu, + ) + if ( + not verdict.answered + or verdict.confidence < cfg.confidence_threshold + or verdict.verdict not in menu + ): + logger.info( + f"Hybrid decision inconclusive (verdict={verdict.verdict!r} " + f"confidence={verdict.confidence:.2f}), escalating to tool-call turn" + ) + return None + tool_call = self._menu_choice_to_call(str(verdict.verdict), description) + if tool_call is None: + return None + logger.info( + f"Hybrid decision: {tool_call['name']} " + f"(confidence {verdict.confidence:.2f})" + ) + # Stamp the chosen call onto the describe message: the ToolMessages the + # executor appends then have a legitimate parent tool_call, which strict + # providers require when the ledger replays them into later prompts. + response.tool_calls = [ + { + "name": tool_call["name"], + "args": tool_call["args"], + "id": tool_call["id"], + "type": "tool_call", + } + ] + response.invalid_tool_calls = [] + return response, [tool_call] + def _render_system_prompt(self, tools_declaration: list) -> str: """Renders the system prompt from the flash_runner.md template. @@ -1146,6 +1362,20 @@ async def run(self, state: State) -> dict: llm = self._init_llm() self._llm = llm + # Hybrid loop (decision.flash_loop): VLM describes, a typed decision + # model picks the action. Both flags must be on; a missing/unreachable + # decision endpoint escalates per-turn to the standard tool-call path. + decision_cfg = getattr(getattr(self.ctx, "agent_config", None), "decision", None) + hybrid = bool( + decision_cfg + and getattr(decision_cfg, "enabled", False) + and getattr(decision_cfg, "flash_loop", False) + ) + plan_text = None + if hybrid: + logger.info("Hybrid Flash loop enabled: VLM describes, decision model acts.") + plan_text = await self._hybrid_plan(llm) + tools_declaration = self._get_tools() report_only_tools = [t for t in tools_declaration if t.name == "report_task_status"] @@ -1198,7 +1428,19 @@ async def run(self, state: State) -> dict: turn_base = len(messages) - 1 current_tools = report_only_tools if is_final else tools_declaration - response = await self._invoke_model(llm, current_tools, messages) + # Hybrid turn: describe → decision-model action pick. The final + # turn stays on the standard path (report_task_status only). + response = None + tool_calls = None + if hybrid and not is_final: + decided = await self._hybrid_decide( + llm, state, tail, plan_text, decision_cfg + ) + if decided is not None: + response, tool_calls = decided + + if response is None: + response = await self._invoke_model(llm, current_tools, messages) if response is None: break @@ -1224,7 +1466,8 @@ async def run(self, state: State) -> dict: self._record_llm_trace(step_token_usage, raw_text) - tool_calls = self._resolve_tool_calls(response, raw_text) + if tool_calls is None: + tool_calls = self._resolve_tool_calls(response, raw_text) if not tool_calls: logger.info( diff --git a/artemis/config/agent.py b/artemis/config/agent.py index bb3f48dec..25d66990a 100644 --- a/artemis/config/agent.py +++ b/artemis/config/agent.py @@ -187,6 +187,15 @@ class DecisionLayerConfig(BaseModel): default=True, description="Offload the advisory planner milestone review to the decision layer.", ) + flash_loop: bool = Field( + default=False, + description=( + "Hybrid Flash loop: the VLM describes the screen (text only, no tool " + "calls), the decision model picks the next action from a fixed menu " + "built on the live element list. Off → the VLM emits tool calls " + "directly (upstream behavior)." + ), + ) model_config = {"extra": "allow"} diff --git a/config/artemis.gemma4.jsonc b/config/artemis.gemma4.jsonc index 4fb1463ed..8fd317ee7 100644 --- a/config/artemis.gemma4.jsonc +++ b/config/artemis.gemma4.jsonc @@ -301,7 +301,13 @@ "model": "laya", "confidence_threshold": 0.85, "timeout_seconds": 5.0, - "planner_validation": true // offload the advisory milestone review first + "planner_validation": true, // offload the advisory milestone review first + // Hybrid Flash loop: Gemma plans once, then per turn describes the + // screen (text only — no tool-call envelopes to mangle), and the + // decision model picks the next action from a fixed menu of element + // taps + meta-actions. Inconclusive/low-confidence verdicts escalate + // to the standard tool-call turn. + "flash_loop": false }, // 🧭 Explorer tier: the perception sub-agent behind `ask_explorer`. // Tiers are a user setting; calling agents never see which tier is active. diff --git a/tests/unit/agents/flash/test_hybrid_loop.py b/tests/unit/agents/flash/test_hybrid_loop.py new file mode 100644 index 000000000..f3b61d5f3 --- /dev/null +++ b/tests/unit/agents/flash/test_hybrid_loop.py @@ -0,0 +1,241 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Hybrid Flash loop (decision.flash_loop): VLM describes, decision model acts. + +The describe call binds no tools, so malformed tool-call envelopes cannot be +emitted; the decision model picks from a fixed menu (element taps + +meta-actions). Any inconclusive verdict — unreachable endpoint, low +confidence, or a key outside the menu — escalates to the standard +tool-calling model turn. +""" + +from types import SimpleNamespace +from unittest.mock import AsyncMock, patch + +import pytest +from langchain_core.messages import AIMessage, HumanMessage + +from artemis.agents.flash.runner import FlashRunner, _HYBRID_META_ACTIONS +from artemis.core.decision_client import DecisionResult +from artemis.llm.reliability import Failure, FailureCategory, LLMCallError + + +_FAILURE = Failure(FailureCategory.UNKNOWN, retryable=True, should_fallback=True) + + +def _runner() -> FlashRunner: + r = FlashRunner.__new__(FlashRunner) + r.goal = "enable dark theme" + return r + + +def _cfg(threshold: float = 0.85): + return SimpleNamespace( + url="http://127.0.0.1:11434/v1/decide", + model="laya", + timeout_seconds=5.0, + confidence_threshold=threshold, + ) + + +def _state(elements): + return SimpleNamespace(indexed_elements=elements) + + +def _verdict(verdict, confidence=0.9): + return DecisionResult(verdict=verdict, confidence=confidence) + + +# --- action menu -------------------------------------------------------------- + + +def test_menu_lists_element_taps_and_meta_actions(): + state = _state( + [ + {"index": 1, "text": "Settings"}, + {"index": 2, "content_desc": "Search"}, + {"index": 3, "resource_id": "id/more"}, + ] + ) + menu = FlashRunner._hybrid_action_menu(state) + assert menu["tap_1"] == "tap element 1: Settings" + assert menu["tap_2"] == "tap element 2: Search" + assert menu["tap_3"] == "tap element 3: id/more" + for key in _HYBRID_META_ACTIONS: + assert key in menu + + +def test_menu_handles_missing_elements(): + assert "done" in FlashRunner._hybrid_action_menu(_state(None)) + assert "tap_" not in " ".join(FlashRunner._hybrid_action_menu(_state(None))) + + +# --- menu -> tool call mapping ------------------------------------------------- + + +def test_choice_maps_element_tap_to_click(): + call = FlashRunner._menu_choice_to_call("tap_4", "desc") + assert call["name"] == "click" + assert call["args"] == {"target": 4} + assert call["id"] + + +def test_choice_maps_swipe_and_keys(): + assert FlashRunner._menu_choice_to_call("swipe_up", "")["args"] == { + "direction": "up" + } + back = FlashRunner._menu_choice_to_call("press_back", "") + assert back["name"] == "press_key" and back["args"] == {"key": "back"} + + +def test_choice_maps_done_and_fail_to_report(): + done = FlashRunner._menu_choice_to_call("done", "all set") + assert done["name"] == "report_task_status" + assert done["args"]["status"] == "completed" + assert done["args"]["explanation"] == "all set" + fail = FlashRunner._menu_choice_to_call("fail", "blocked") + assert fail["args"]["status"] == "failed" + + +def test_choice_rejects_unknown_key(): + assert FlashRunner._menu_choice_to_call("launch_rocket", "") is None + + +# --- _hybrid_decide ------------------------------------------------------------ + + +@pytest.mark.asyncio +async def test_hybrid_decide_returns_call_on_confident_verdict(): + runner = _runner() + state = _state([{"index": 1, "text": "Display"}]) + describe_resp = AIMessage(content="Settings list; [1] Display ~[500,300]") + + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=describe_resp), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + MockClient.return_value.achoose = AsyncMock( + return_value=_verdict("tap_1") + ) + out = await runner._hybrid_decide( + AsyncMock(), state, HumanMessage(content="obs"), "plan", _cfg() + ) + + assert out is not None + response, tool_calls = out + assert tool_calls[0]["name"] == "click" + assert tool_calls[0]["args"] == {"target": 1} + # The choice is stamped onto the describe message so ToolMessages keep a + # legitimate parent when the ledger replays them. + assert response.tool_calls[0]["name"] == "click" + # The describe response is pure text — no envelope parsing needed. + assert "Settings list" in response.content + + +@pytest.mark.asyncio +async def test_hybrid_decide_escalates_on_low_confidence(): + runner = _runner() + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + MockClient.return_value.achoose = AsyncMock( + return_value=_verdict("tap_1", confidence=0.40) + ) + out = await runner._hybrid_decide( + AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), None, _cfg() + ) + assert out is None + + +@pytest.mark.asyncio +async def test_hybrid_decide_escalates_when_unanswered(): + runner = _runner() + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + MockClient.return_value.achoose = AsyncMock( + return_value=DecisionResult(verdict=None) + ) + out = await runner._hybrid_decide( + AsyncMock(), _state([]), HumanMessage(content="x"), None, _cfg() + ) + assert out is None + + +@pytest.mark.asyncio +async def test_hybrid_decide_escalates_on_out_of_menu_verdict(): + runner = _runner() + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + MockClient.return_value.achoose = AsyncMock( + return_value=_verdict("tap_99", confidence=0.95) + ) + out = await runner._hybrid_decide( + AsyncMock(), _state([]), HumanMessage(content="x"), None, _cfg() + ) + assert out is None + + +@pytest.mark.asyncio +async def test_hybrid_decide_escalates_on_describe_failure(): + runner = _runner() + with patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(side_effect=LLMCallError("server down", failure=_FAILURE)), + ): + out = await runner._hybrid_decide( + AsyncMock(), _state([]), HumanMessage(content="x"), None, _cfg() + ) + assert out is None + + +# --- _hybrid_plan -------------------------------------------------------------- + + +@pytest.mark.asyncio +async def test_hybrid_plan_returns_milestone_text(): + runner = _runner() + with patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="- open Settings\n- tap Display")), + ): + plan = await runner._hybrid_plan(AsyncMock()) + assert "open Settings" in plan + + +@pytest.mark.asyncio +async def test_hybrid_plan_failure_is_non_fatal(): + runner = _runner() + with patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(side_effect=LLMCallError("boom", failure=_FAILURE)), + ): + assert await runner._hybrid_plan(AsyncMock()) is None From c68011f33ad301ae1a83b71844f0bcdfa91dfbce Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 05:22:36 +0900 Subject: [PATCH 26/45] feat: managed laya-serve lifecycle; decision plumbing; idle-turn re-observation --- artemis/agents/flash/runner.py | 57 +++++- artemis/config/__init__.py | 2 + artemis/config/agent.py | 26 ++- artemis/config/local_models.py | 15 ++ artemis/interfaces/cli/commands/model.py | 181 +++++++++++++++++-- artemis/sdk/builders/agent_config_builder.py | 2 + artemis/sdk/types/agent.py | 2 + config/artemis.gemma4.jsonc | 10 +- config/artemis.jsonc | 18 +- tests/unit/agents/flash/test_hybrid_loop.py | 27 ++- 10 files changed, 314 insertions(+), 26 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 6f0927564..259f303ae 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -527,22 +527,32 @@ async def _hybrid_decide( "Which single action moves the task forward?", menu, ) + # For `choice` answers the decision gate is the top-pick probability + # (answer_confidence): the calibrated `confidence` field measures overall + # answer trustworthiness and sits near zero on any menu-shaped spread — + # using it would escalate every turn. + top_p = verdict.confidence + raw = getattr(verdict, "raw", None) or {} + try: + top_p = float(raw.get("answer_confidence") or top_p) + except (TypeError, ValueError): + pass + floor = getattr(cfg, "flash_choice_threshold", 0.25) if ( not verdict.answered - or verdict.confidence < cfg.confidence_threshold + or top_p < floor or verdict.verdict not in menu ): logger.info( f"Hybrid decision inconclusive (verdict={verdict.verdict!r} " - f"confidence={verdict.confidence:.2f}), escalating to tool-call turn" + f"top_p={top_p:.2f} floor={floor:.2f}), escalating to tool-call turn" ) return None tool_call = self._menu_choice_to_call(str(verdict.verdict), description) if tool_call is None: return None logger.info( - f"Hybrid decision: {tool_call['name']} " - f"(confidence {verdict.confidence:.2f})" + f"Hybrid decision: {tool_call['name']} (top_p={top_p:.2f})" ) # Stamp the chosen call onto the describe message: the ToolMessages the # executor appends then have a legitimate parent tool_call, which strict @@ -922,6 +932,33 @@ async def _capture_post_screenshot( state.latest_screenshot = obs.screenshot_path return post_img_bytes + async def _refresh_idle_observation( + self, state: State | None, img_bytes, xml_list + ): + """Re-observes the screen after a turn that executed no device action. + + Turns that end without a tool call never reach the post-action + capture in ``_process_tool_calls``; without this the next turn's tail + (and the hybrid decision menu built from ``state.indexed_elements``) + would describe a stale frame — e.g. one captured mid-transition. + """ + try: + obs, screenshot_bytes = await observe(self.ctx, self.controller, settle_ms=0) + except Exception as obs_err: + logger.warning(f"Idle-turn re-observation failed: {obs_err}") + return img_bytes, xml_list + if not obs.ok: + return img_bytes, xml_list + if state is not None: + if obs.hierarchy_ok: + state.indexed_points = [el["center"] for el in obs.elements] + state.indexed_elements = obs.elements + if obs.screenshot_path: + state.latest_screenshot = obs.screenshot_path + if obs.elements_text: + xml_list = obs.elements_text + return screenshot_bytes or img_bytes, xml_list + def _extract_normalized_coordinates(self, name: str, args: dict, resolved=None): """Extracts and enriches coordinate metadata for the recorded action. @@ -1489,6 +1526,18 @@ async def run(self, state: State) -> dict: } break pending_notices.append(_NO_TOOL_CALL_NOTICE) + # No action ran, so nothing refreshes the observation — but + # the current frame may be a mid-transition capture (the prior + # action's post-screenshot raced a screen animation). Re-serve + # that stale frame next turn and both the describe pass and + # the hybrid menu keep acting on the wrong screen. Re-observe + # here so the next tail reflects what is actually displayed. + ( + current_pre_screenshot_bytes, + current_xml_list, + ) = await self._refresh_idle_observation( + state, current_pre_screenshot_bytes, current_xml_list + ) ledger.stage_turn(messages[turn_base:]) previous_turn = _TurnRecord() continue diff --git a/artemis/config/__init__.py b/artemis/config/__init__.py index 46862a438..e8092005f 100644 --- a/artemis/config/__init__.py +++ b/artemis/config/__init__.py @@ -19,6 +19,7 @@ CheckerConfig, CommitteeConfig, DEFAULT_VERIFICATION_LEVEL, + DecisionLayerConfig, ExplorerConfig, FlashProfileConfig, MemoryChunkingConfig, @@ -211,6 +212,7 @@ "AgentGlobalConfig", "CheckerConfig", "CommitteeConfig", + "DecisionLayerConfig", "DEFAULT_VERIFICATION_LEVEL", "ExplorerConfig", "FlashProfileConfig", diff --git a/artemis/config/agent.py b/artemis/config/agent.py index 25d66990a..6a331bc3e 100644 --- a/artemis/config/agent.py +++ b/artemis/config/agent.py @@ -165,12 +165,20 @@ class DecisionLayerConfig(BaseModel): description="Master switch for the decision layer. Off = identical to upstream behavior.", ) url: str = Field( - default="http://127.0.0.1:11434/v1/decide", - description="Jev/Laya-compatible decision endpoint.", + default="http://127.0.0.1:11435/v1/systemone", + description=( + "Jev/Laya-compatible decision endpoint (POST /v1/systemone). " + "`artemis model pull laya` + `artemis model serve laya -p 11435` " + "provisions a matching local server." + ), ) model: str | None = Field( - default="laya", - description="Decision model name sent in the request payload, if the endpoint uses it.", + default="typed-decisions", + description=( + "Checkpoint name sent in the request payload — laya-serve honors " + "its own checkpoint names ('typed-decisions', 'english', " + "'multilingual')." + ), ) confidence_threshold: float = Field( default=0.85, @@ -196,6 +204,16 @@ class DecisionLayerConfig(BaseModel): "directly (upstream behavior)." ), ) + flash_choice_threshold: float = Field( + default=0.25, + ge=0.0, + le=1.0, + description=( + "Min top-pick probability (answer_confidence) for a hybrid action-menu " + "pick to be acted on. Menus carry ~20 options, so 0.25 is roughly 5x " + "uniform; below the floor the turn escalates to the VLM tool path." + ), + ) model_config = {"extra": "allow"} diff --git a/artemis/config/local_models.py b/artemis/config/local_models.py index 90b24efa4..65d3746d4 100644 --- a/artemis/config/local_models.py +++ b/artemis/config/local_models.py @@ -35,6 +35,12 @@ class LocalModelSpec: # near-original detail (~1056x2352) and measurably improves detection # and not-found discipline. ``None`` leaves the shipped default. vision_soft_tokens: int | None = None + # Serving stack: "mlx" = HF weights via mlx_vlm.server; "laya" = the + # decision model's own `laya-serve` binary in a managed venv. + kind: str = "mlx" + # For kind="laya": the checkpoint name laya-serve preloads + # ("typed-decisions", "english", "multilingual"). + checkpoint: str = "" LOCAL_MODELS: dict[str, LocalModelSpec] = { @@ -43,6 +49,15 @@ class LocalModelSpec: description="Gemma 4 E4B 4-bit multimodal (tested; ~5 GB pull, ~6 GB resident)", vision_soft_tokens=1120, ), + "laya": LocalModelSpec( + repo="laya", + description=( + "Laya decision model (typed-decisions checkpoint, ~421M, CPU/MPS) — " + "serves POST /v1/systemone for the decision.* layer" + ), + kind="laya", + checkpoint="typed-decisions", + ), } DEFAULT_LOCAL_MODEL = "gemma4-e4b" diff --git a/artemis/interfaces/cli/commands/model.py b/artemis/interfaces/cli/commands/model.py index e0fab5d49..de41e6028 100644 --- a/artemis/interfaces/cli/commands/model.py +++ b/artemis/interfaces/cli/commands/model.py @@ -22,7 +22,10 @@ """ import json +import os from pathlib import Path +import platform +import shutil import signal import subprocess import sys @@ -42,6 +45,14 @@ _STATE_DIR = Path.home() / ".artemis" / "local_models" _SERVE_TIMEOUT_S = 300.0 +# Laya is not an HF-weights/mlx_vlm model: `pull` provisions a managed venv +# with the `laya[serve]` extra (the serve entry point arrived in 0.3.7), and +# `serve` spawns `laya-serve`, which speaks TypeSafe's Jev wire API +# (POST /v1/systemone) for the `decision.*` config layer. +_LAYA_VENV_DIR = Path.home() / ".artemis" / "laya-venv" +_LAYA_BIN = _LAYA_VENV_DIR / "bin" / "laya-serve" +_LAYA_REQUIREMENT = "laya[serve]>=0.3.7" + def _state_file(port: int) -> Path: return _STATE_DIR / f"server-{port}.json" @@ -83,6 +94,136 @@ def _require_local_extra() -> None: raise typer.Exit(code=1) from e +def _pull_laya(spec) -> None: + """Provision the managed laya-serve runtime: a dedicated venv holding the + pinned ``laya[serve]`` install, kept out of the Artemis dependency tree. + Model weights download on first ``serve`` (LAYA_PRELOAD warms them).""" + python_bin = _LAYA_VENV_DIR / "bin" / "python" + if _LAYA_BIN.exists(): + typer.secho( + f"laya-serve already provisioned at {_LAYA_VENV_DIR}", fg=typer.colors.GREEN + ) + return + uv = shutil.which("uv") + typer.secho( + f"Provisioning Laya runtime at {_LAYA_VENV_DIR} ({_LAYA_REQUIREMENT})...", + fg=typer.colors.CYAN, + ) + try: + if uv: + subprocess.run( + [uv, "venv", "--python", "3.12", str(_LAYA_VENV_DIR)], check=True + ) + subprocess.run( + [ + uv, + "pip", + "install", + "--python", + str(python_bin), + _LAYA_REQUIREMENT, + ], + check=True, + ) + else: + subprocess.run( + [sys.executable, "-m", "venv", str(_LAYA_VENV_DIR)], check=True + ) + subprocess.run( + [str(python_bin), "-m", "pip", "install", _LAYA_REQUIREMENT], + check=True, + ) + except (subprocess.CalledProcessError, OSError) as e: + typer.secho(f"Laya provisioning failed: {e}", fg=typer.colors.RED) + raise typer.Exit(code=1) from e + typer.secho( + f"Ready: laya-serve installed. The '{spec.checkpoint}' checkpoint " + "(~800 MB) downloads on first `artemis model serve laya`.", + fg=typer.colors.GREEN, + ) + + +def _serve_laya(alias: str, spec, host: str, port: int) -> None: + """Spawn ``laya-serve`` in the managed venv behind the pid-file state used + by `model stop`/`status`. Exposes POST /v1/systemone (Jev wire API) and + GET /health — point ``decision.url`` at ``http://:/v1/systemone``.""" + if not _LAYA_BIN.exists(): + typer.secho( + "Laya is not installed. Run `artemis model pull laya` first.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) + existing = _read_state(port) + if existing and _pid_alive(int(existing.get("pid", -1))): + typer.secho( + f"A server (pid {existing['pid']}) is already running on {host}:{port}.", + fg=typer.colors.YELLOW, + ) + return + env = os.environ.copy() + # CPU is the default: measured ~1s/decision under memory pressure vs ~25s + # on a contended MPS. A caller-provided LAYA_DEVICE in the environment wins. + env.update( + { + "LAYA_HOST": host, + "LAYA_PORT": str(port), + "LAYA_MODELS": spec.checkpoint, + "LAYA_PRELOAD": "1", + } + ) + env.setdefault("LAYA_DEVICE", "cpu") + _STATE_DIR.mkdir(parents=True, exist_ok=True) + log_path = _STATE_DIR / f"server-{port}.log" + typer.secho( + f"Starting {alias} ({spec.checkpoint}) on http://{host}:{port} — log: {log_path}", + fg=typer.colors.CYAN, + ) + with open(log_path, "ab") as log: + proc = subprocess.Popen( + [str(_LAYA_BIN)], + stdout=log, + stderr=subprocess.STDOUT, + env=env, + start_new_session=True, + ) + _state_file(port).write_text( + json.dumps( + { + "pid": proc.pid, + "alias": alias, + "repo": spec.checkpoint, + "host": host, + "port": port, + "kind": "laya", + } + ) + ) + base = f"http://{host}:{port}" + deadline = time.monotonic() + _SERVE_TIMEOUT_S + while time.monotonic() < deadline: + if proc.poll() is not None: + break + try: + resp = httpx.get(f"{base}/health", timeout=2.0) + if resp.status_code == 200: + typer.secho( + f"Serving {alias} at {base}/v1/systemone (pid {proc.pid}). " + f"Set decision.url to that endpoint. Stop with " + f"`artemis model stop --port {port}`.", + fg=typer.colors.GREEN, + ) + return + except httpx.HTTPError: + pass + time.sleep(2.0) + typer.secho( + f"laya-serve did not become ready within {_SERVE_TIMEOUT_S:.0f}s; " + f"check the log at {log_path}.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) + + @model_app.command("list") def list_models() -> None: """List local model aliases ARTEMIS can pull and serve.""" @@ -115,8 +256,12 @@ def pull_model( fg=typer.colors.RED, ) raise typer.Exit(code=1) - _require_local_extra() alias, repo = ref + spec = LOCAL_MODELS.get(alias) + if spec is not None and spec.kind == "laya": + _pull_laya(spec) + return + _require_local_extra() typer.secho(f"Pulling {alias} ({repo})...", fg=typer.colors.CYAN) try: from huggingface_hub import snapshot_download @@ -201,8 +346,14 @@ def serve_model( fg=typer.colors.RED, ) raise typer.Exit(code=1) - _require_local_extra() alias, repo = ref + spec = LOCAL_MODELS.get(alias) + if spec is not None and spec.kind == "laya": + if vision_tokens is not None: + typer.secho("--vision-tokens is ignored for laya.", fg=typer.colors.YELLOW) + _serve_laya(alias, spec, host, port) + return + _require_local_extra() tokens = vision_tokens if tokens is None: tokens = LOCAL_MODELS[alias].vision_soft_tokens if alias in LOCAL_MODELS else None @@ -309,15 +460,19 @@ def status_model( fg=typer.colors.GREEN, ) return - try: - resp = httpx.get(f"http://{host}:{port}/v1/models", timeout=3.0) - if resp.status_code == 200: - ids = [m.get("id") for m in resp.json().get("data", [])] - typer.secho( - f"An unmanaged server is serving {ids} on {host}:{port}.", - fg=typer.colors.YELLOW, - ) - return - except httpx.HTTPError: - pass + # laya-serve speaks /health, not the OpenAI /v1/models route. + for probe in ("v1/models", "health"): + try: + resp = httpx.get(f"http://{host}:{port}/{probe}", timeout=3.0) + if resp.status_code == 200: + detail = "" + if probe == "v1/models": + detail = f" serving {[m.get('id') for m in resp.json().get('data', [])]}" + typer.secho( + f"An unmanaged server answered /{probe}{detail} on {host}:{port}.", + fg=typer.colors.YELLOW, + ) + return + except httpx.HTTPError: + pass typer.secho(f"No model server on {host}:{port}.", fg=typer.colors.RED) diff --git a/artemis/sdk/builders/agent_config_builder.py b/artemis/sdk/builders/agent_config_builder.py index 16893864d..fb435ca26 100644 --- a/artemis/sdk/builders/agent_config_builder.py +++ b/artemis/sdk/builders/agent_config_builder.py @@ -54,6 +54,7 @@ def __init__(self): else: self._video_recording_tools_enabled = detect_video_tools_enabled() self._disable_planner_validation = not agent_cfg.planner_validation.enabled + self._decision = agent_cfg.decision self._enable_committee = agent_cfg.committee.enabled self._committee_debate_rounds = agent_cfg.committee.debate_rounds self._disable_checker = not agent_cfg.checker.enabled @@ -439,6 +440,7 @@ def _extra_config_fields(self) -> dict[str, Any]: "assert_failure_policy": self._assert_failure_policy, "disable_device_probes": self._disable_device_probes, "disable_planner_validation": self._disable_planner_validation, + "decision": self._decision, "enable_committee": self._enable_committee, "committee_debate_rounds": self._committee_debate_rounds, "disable_outputter": self._disable_outputter, diff --git a/artemis/sdk/types/agent.py b/artemis/sdk/types/agent.py index 10f4e1d9a..3a3b9aa03 100644 --- a/artemis/sdk/types/agent.py +++ b/artemis/sdk/types/agent.py @@ -15,6 +15,7 @@ from typing import Literal from artemis.config import ( + DecisionLayerConfig, ExplorerConfig, FlashProfileConfig, OutputterConfig, @@ -55,6 +56,7 @@ class AgentConfig(AgentConfigBase): assert_failure_policy: Literal["continue", "halt"] = "continue" disable_device_probes: bool = False disable_planner_validation: bool = False + decision: DecisionLayerConfig = Field(default_factory=DecisionLayerConfig) enable_committee: bool = False committee_debate_rounds: int = 2 disable_outputter: bool = False diff --git a/config/artemis.gemma4.jsonc b/config/artemis.gemma4.jsonc index 8fd317ee7..d261bbc0b 100644 --- a/config/artemis.gemma4.jsonc +++ b/config/artemis.gemma4.jsonc @@ -297,10 +297,14 @@ // escalate to the existing model path. Text/JSON state only — no pixels. "decision": { "enabled": false, // opt-in; off = upstream-identical behavior - "url": "http://127.0.0.1:11434/v1/decide", - "model": "laya", + // Jev wire API (POST /v1/systemone). `artemis model pull laya` + + // `artemis model serve laya -p 11435` provisions a matching server. + "url": "http://127.0.0.1:11435/v1/systemone", + "model": "typed-decisions", "confidence_threshold": 0.85, - "timeout_seconds": 5.0, + // Generous: laya-serve serializes requests — a stalled predecessor plus + // memory pressure pushes single decisions well past 5s (measured ~10-25s). + "timeout_seconds": 15.0, "planner_validation": true, // offload the advisory milestone review first // Hybrid Flash loop: Gemma plans once, then per turn describes the // screen (text only — no tool-call envelopes to mangle), and the diff --git a/config/artemis.jsonc b/config/artemis.jsonc index c357ee9d2..379c99648 100644 --- a/config/artemis.jsonc +++ b/config/artemis.jsonc @@ -18,7 +18,7 @@ "timeout": 300, "fallback": { "provider": "custom", - "model": "qwen3.8-9b", + "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", "timeout": 300 } @@ -188,6 +188,22 @@ "prune_history_xml": true // Prune outdated heavy XML trees from historical steps } }, + // 🧠 Decision Layer (System One): a local decision model (Laya via + // `artemis model pull/serve laya`) answers cheap typed junctions in ~100ms. + // Advisory only — low-confidence or unreachable answers escalate to the + // existing model path. Text/JSON state only — no pixels. + "decision": { + "enabled": false, + "url": "http://127.0.0.1:11435/v1/systemone", + "model": "typed-decisions", + "confidence_threshold": 0.85, + "timeout_seconds": 15.0, + "planner_validation": false, + // Hybrid Flash loop: Gemma describes the screen (text only — no + // tool-call envelopes to mangle), Laya picks the next action from a + // fixed menu of element taps + meta-actions. + "flash_loop": false + }, // ========================================================================== // 🚀 4.2 PRO Profile Options (Deep Multi-Agent Graph Closed-Loop) // ========================================================================== diff --git a/tests/unit/agents/flash/test_hybrid_loop.py b/tests/unit/agents/flash/test_hybrid_loop.py index f3b61d5f3..f271eda9c 100644 --- a/tests/unit/agents/flash/test_hybrid_loop.py +++ b/tests/unit/agents/flash/test_hybrid_loop.py @@ -158,7 +158,7 @@ async def test_hybrid_decide_escalates_on_low_confidence(): patch("artemis.agents.flash.runner.DecisionClient") as MockClient, ): MockClient.return_value.achoose = AsyncMock( - return_value=_verdict("tap_1", confidence=0.40) + return_value=_verdict("tap_1", confidence=0.10) ) out = await runner._hybrid_decide( AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), None, _cfg() @@ -166,6 +166,31 @@ async def test_hybrid_decide_escalates_on_low_confidence(): assert out is None +@pytest.mark.asyncio +async def test_hybrid_decide_gates_on_answer_confidence_not_trust_score(): + """laya-serve returns near-zero `confidence` on menu-shaped spreads; + the actionable signal is `answer_confidence` (top-pick probability).""" + runner = _runner() + verdict = DecisionResult( + verdict="tap_1", + confidence=0.008, # calibrated trust score — near zero + raw={"answer_confidence": 0.62}, + ) + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + MockClient.return_value.achoose = AsyncMock(return_value=verdict) + out = await runner._hybrid_decide( + AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), None, _cfg() + ) + assert out is not None + assert out[1][0]["name"] == "click" + + @pytest.mark.asyncio async def test_hybrid_decide_escalates_when_unanswered(): runner = _runner() From 770f3d305b6a4c161a869e53831cc2aea497220a Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 10:36:26 +0900 Subject: [PATCH 27/45] fix: mask already-tried actions from the hybrid menu; escalate on repeats --- artemis/agents/flash/runner.py | 155 ++++++++++++++++++-- tests/unit/agents/flash/test_hybrid_loop.py | 89 +++++++++++ 2 files changed, 230 insertions(+), 14 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 259f303ae..1df40eec4 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -210,6 +210,12 @@ def _parse_call_syntax(raw: str, match=None): # are rarely the right action anyway. _HYBRID_MAX_MENU_ELEMENTS = 15 +# Consecutive turns that re-executed an already-tried menu key before the +# hybrid decide is skipped entirely and the turn escalates to the VLM — +# the masked menu plus the notice usually break the loop first, but the +# standard path is the fallback when even that fails. +_HYBRID_REPEAT_ESCALATE = 2 + # Distilled state sent to the decision model is capped for the same reason: # goal + plan + screen description, truncated tail-first. _HYBRID_MAX_STATE_CHARS = 2000 @@ -421,13 +427,33 @@ async def _hybrid_plan(self, llm) -> str | None: return plan or None @staticmethod - def _hybrid_action_menu(state: State) -> dict[str, str]: + def _element_label(el: dict) -> str: + return str( + el.get("text") + or el.get("content_desc") + or el.get("resource_id") + or el.get("class_name") + or "element" + )[:60] + + @staticmethod + def _hybrid_action_menu( + state: State, + tried_taps: set[tuple[int, str]] | None = None, + tried_labels: set[str] | None = None, + ) -> dict[str, str]: """The fixed action menu for one turn: element taps + meta-actions. Tap keys embed the element index of the CURRENT observation's list — index drift across turns is impossible because the menu is rebuilt every turn and the executor resolves the index against the same list snapshot the decision was made on. + + ``tried_taps`` masks elements already tapped by (index, label) + identity; ``tried_labels`` additionally masks any element whose + distinctive label was tapped before, surviving re-indexing. A screen + signature can't express "same screen" here — volatile text (clocks, + badges) perturbs it — so identity matching is used instead. """ elements = getattr(state, "indexed_elements", None) or [] menu: dict[str, str] = {} @@ -435,14 +461,12 @@ def _hybrid_action_menu(state: State) -> dict[str, str]: idx = el.get("index") if idx is None: continue - label = ( - el.get("text") - or el.get("content_desc") - or el.get("resource_id") - or el.get("class_name") - or "element" - ) - menu[f"tap_{idx}"] = f"tap element {idx}: {str(label)[:60]}" + label = FlashRunner._element_label(el) + if tried_taps and (idx, label) in tried_taps: + continue + if tried_labels and len(label) >= 4 and label in tried_labels: + continue + menu[f"tap_{idx}"] = f"tap element {idx}: {label}" menu.update(_HYBRID_META_ACTIONS) return menu @@ -481,6 +505,27 @@ def _menu_choice_to_call(choice: str, description: str) -> dict | None: } return None + @staticmethod + def _menu_key_for_call(name: str, args: dict) -> str | None: + """Maps an executed tool call back to its hybrid menu key, so actions + taken on a screen can be masked from the menu on a later visit.""" + args = args or {} + if name == "click": + target = args.get("target") + return f"tap_{target}" if isinstance(target, int) else None + if name == "swipe": + direction = str(args.get("direction") or args.get("gesture") or "").lower() + return f"swipe_{direction}" if direction in ("up", "down", "left", "right") else None + if name == "press_key": + return {"back": "press_back", "home": "press_home"}.get( + str(args.get("key") or "").lower() + ) + if name == "wait_for_delay": + return "wait" + if name == "report_task_status": + return "done" if args.get("status") == "completed" else "fail" + return None + async def _hybrid_decide( self, llm, @@ -488,6 +533,8 @@ async def _hybrid_decide( tail: HumanMessage, plan_text: str | None, cfg, + tried_taps: set[tuple[int, str]] | None = None, + tried_labels: set[str] | None = None, ) -> tuple | None: """One hybrid turn: describe → choose → tool call. @@ -497,6 +544,11 @@ async def _hybrid_decide( narrative (plus approximate coords for unlisted targets) that becomes the turn's thought text, so envelope-mangling and narration-only stalls cannot occur on this path. + + ``tried_taps``/``tried_labels`` mask menu entries already attempted — + the decision model has no transcript view and would otherwise re-pick + a dead element indefinitely. Terminal meta-actions + (``wait``/``done``/``fail``) are never masked. """ describe_prompt = Template(_HYBRID_DESCRIBE_PROMPT).render( goal=self.goal, plan=plan_text or "(no plan — describe and list elements)" @@ -513,14 +565,26 @@ async def _hybrid_decide( description = self._extract_response_text(response) logger.info(f"Hybrid describe: {description[:200]}") - menu = self._hybrid_action_menu(state) + menu = self._hybrid_action_menu( + state, tried_taps=tried_taps, tried_labels=tried_labels + ) + tried_line = "" + if tried_taps or tried_labels: + masked = sorted( + set(self._hybrid_action_menu(state)) - set(menu) + ) + if masked: + tried_line = ( + "\nAlready attempted without moving the task forward and" + f" unavailable: {', '.join(masked)}." + ) client = DecisionClient( cfg.url, model=cfg.model, timeout_seconds=cfg.timeout_seconds ) state_text = ( f"Goal: {self.goal}\n" f"Plan: {plan_text or 'none'}\n" - f"Current screen: {description}" + f"Current screen: {description}{tried_line}" ) verdict = await client.achoose( state_text[-_HYBRID_MAX_STATE_CHARS:], @@ -1426,6 +1490,18 @@ async def run(self, state: State) -> dict: previous_turn: _TurnRecord | None = None pending_notices: list[str] = [] no_tool_call_streak = 0 + # Element taps already executed, by (index, label) identity plus a + # distinctive-label set that survives re-indexing. The decision model + # cannot see the transcript, so masked menu entries are the only + # thing stopping it from re-picking a dead element forever (observed + # live: three identical taps on an unchanged screen, and the same + # icon tapped again four turns later once it worked). Meta actions + # are tracked only as a consecutive-repeat streak — presses back/home + # can be legitimately repeated during navigation. + tried_taps: set[tuple[int, str]] = set() + tried_labels: set[str] = set() + hybrid_last_key: str | None = None + hybrid_repeat_streak = 0 while limit is None or turns < limit: turns += 1 @@ -1466,12 +1542,23 @@ async def run(self, state: State) -> dict: current_tools = report_only_tools if is_final else tools_declaration # Hybrid turn: describe → decision-model action pick. The final - # turn stays on the standard path (report_task_status only). + # turn stays on the standard path (report_task_status only), and + # a repeat streak escalates to the full model entirely. response = None tool_calls = None - if hybrid and not is_final: + if ( + hybrid + and not is_final + and hybrid_repeat_streak < _HYBRID_REPEAT_ESCALATE + ): decided = await self._hybrid_decide( - llm, state, tail, plan_text, decision_cfg + llm, + state, + tail, + plan_text, + decision_cfg, + tried_taps=tried_taps, + tried_labels=tried_labels, ) if decided is not None: response, tool_calls = decided @@ -1544,6 +1631,46 @@ async def run(self, state: State) -> dict: no_tool_call_streak = 0 + # Record executed actions for the repeat machinery: element taps + # join the masked sets by identity; the same menu key executed + # twice in a row counts as a consecutive repeat (the decision + # model picks it again because nothing told it the last one did + # nothing). + elements_now = getattr(state, "indexed_elements", None) or [] + label_by_idx = { + el.get("index"): self._element_label(el) + for el in elements_now + if el.get("index") is not None + } + repeat_keys: list[str] = [] + for tc in tool_calls: + key = self._menu_key_for_call(tc.get("name"), tc.get("args")) + if key is None: + continue + if key.startswith("tap_"): + idx = int(key[len("tap_"):]) + label = label_by_idx.get(idx, "") + ident = (idx, label) + if ident in tried_taps or ( + len(label) >= 4 and label in tried_labels + ): + repeat_keys.append(key) + tried_taps.add(ident) + if len(label) >= 4: + tried_labels.add(label) + elif key == hybrid_last_key: + repeat_keys.append(key) + hybrid_last_key = key + if repeat_keys: + hybrid_repeat_streak += 1 + pending_notices.append( + f"[NOTICE] {', '.join(sorted(set(repeat_keys)))} was already" + " attempted and did not move the task forward. Pick a" + " different action or navigate elsewhere first." + ) + else: + hybrid_repeat_streak = 0 + # Process tool calls turn = _TurnRecord() ( diff --git a/tests/unit/agents/flash/test_hybrid_loop.py b/tests/unit/agents/flash/test_hybrid_loop.py index f271eda9c..bb19ff46f 100644 --- a/tests/unit/agents/flash/test_hybrid_loop.py +++ b/tests/unit/agents/flash/test_hybrid_loop.py @@ -113,6 +113,28 @@ def test_choice_rejects_unknown_key(): assert FlashRunner._menu_choice_to_call("launch_rocket", "") is None +# --- executed call -> menu key mapping ------------------------------------------ + + +def test_menu_key_for_call_maps_device_actions(): + f = FlashRunner._menu_key_for_call + assert f("click", {"target": 7, "target_description": "x"}) == "tap_7" + assert f("swipe", {"direction": "up"}) == "swipe_up" + assert f("swipe", {"gesture": "left"}) == "swipe_left" + assert f("press_key", {"key": "BACK"}) == "press_back" + assert f("press_key", {"key": "home"}) == "press_home" + assert f("wait_for_delay", {"time_in_ms": 500}) == "wait" + assert f("report_task_status", {"status": "completed"}) == "done" + assert f("report_task_status", {"status": "failed"}) == "fail" + + +def test_menu_key_for_call_rejects_non_menu_calls(): + f = FlashRunner._menu_key_for_call + assert f("click", {"target": "not-an-int"}) is None + assert f("swipe", {"start": [0, 0], "end": [1, 1]}) is None + assert f("input_text", {"text": "hi"}) is None + + # --- _hybrid_decide ------------------------------------------------------------ @@ -229,6 +251,73 @@ async def test_hybrid_decide_escalates_on_out_of_menu_verdict(): assert out is None +@pytest.mark.asyncio +async def test_hybrid_decide_masks_tried_menu_keys(): + """Elements already tapped are removed from the menu by (index, label) + identity, so the decision model cannot re-pick a dead element.""" + runner = _runner() + state = _state([{"index": 1, "text": "Alpha"}, {"index": 2, "text": "Beta"}]) + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + choose = AsyncMock(return_value=_verdict("tap_2")) + MockClient.return_value.achoose = choose + out = await runner._hybrid_decide( + AsyncMock(), + state, + HumanMessage(content="x"), + None, + _cfg(), + tried_taps={(1, "Alpha")}, + tried_labels=set(), + ) + assert out is not None + menu_sent = choose.call_args.args[2] + assert "tap_1" not in menu_sent + assert "tap_2" in menu_sent + # Terminal meta-actions are never masked — wait/done/fail stay available. + assert "wait" in menu_sent + assert "done" in menu_sent + # The decision state discloses what was masked so the pick has context. + state_sent = choose.call_args.args[0] + assert "tap_1" in state_sent + + +@pytest.mark.asyncio +async def test_hybrid_decide_masks_reindexed_label(): + """A distinctive label stays masked even when the element list re-indexes + (the volatile-text problem that defeats screen signatures).""" + runner = _runner() + # Same "Settings" row, now at index 9 instead of 12. + state = _state([{"index": 9, "text": "Settings"}, {"index": 2, "text": "Beta"}]) + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + choose = AsyncMock(return_value=_verdict("tap_2")) + MockClient.return_value.achoose = choose + out = await runner._hybrid_decide( + AsyncMock(), + state, + HumanMessage(content="x"), + None, + _cfg(), + tried_taps={(12, "Settings")}, + tried_labels={"Settings"}, + ) + assert out is not None + menu_sent = choose.call_args.args[2] + assert "tap_9" not in menu_sent + assert "tap_2" in menu_sent + + @pytest.mark.asyncio async def test_hybrid_decide_escalates_on_describe_failure(): runner = _runner() From b502faf40bba36aef508da9713fe41a94945bb25 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 10:45:24 +0900 Subject: [PATCH 28/45] fix: goal-anchored decision question; enumerate all elements in describe --- artemis/agents/flash/runner.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 1df40eec4..5382ca864 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -182,12 +182,12 @@ def _parse_call_syntax(raw: str, match=None): Describe the CURRENT screenshot factually in 3-5 short sentences: which app and screen is shown, what has changed since the previous observation, and -where the elements relevant to the goal sit. For every element relevant to -the goal give one line: [index] label ~[x,y] — the index from the attached -element list when the element is listed there, and a normalized 0-1000 -[x,y] coordinate only when it is visible on screen but NOT in the list. -Never claim an action was taken. Do not decide what to do next — a separate -decision stage reads your description.""" +where the elements relevant to the goal sit. Then list EVERY interactive +element from the attached list, one per line: [index] label ~[x,y] — the +approximate normalized 0-1000 coordinate is only required for elements +visible on screen but NOT in the list. Never claim an action was taken. +Do not decide what to do next — a separate decision stage reads your +description.""" # Menu entries the decision model may always pick, alongside the element # taps generated from the live index list. Free-text input is excluded by @@ -588,7 +588,7 @@ async def _hybrid_decide( ) verdict = await client.achoose( state_text[-_HYBRID_MAX_STATE_CHARS:], - "Which single action moves the task forward?", + f"Which single action best advances this goal: {self.goal}", menu, ) # For `choice` answers the decision gate is the top-pick probability From 1d8aebb70900c77b6b5530b0fddbb55deee02eee Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 10:50:08 +0900 Subject: [PATCH 29/45] fix: escalate terminal picks to VLM verification; describe names the reach-path --- artemis/agents/flash/runner.py | 24 +++++++++++++++------ tests/unit/agents/flash/test_hybrid_loop.py | 24 +++++++++++++++++++++ 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 5382ca864..3e2a0fc3d 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -182,12 +182,13 @@ def _parse_call_syntax(raw: str, match=None): Describe the CURRENT screenshot factually in 3-5 short sentences: which app and screen is shown, what has changed since the previous observation, and -where the elements relevant to the goal sit. Then list EVERY interactive -element from the attached list, one per line: [index] label ~[x,y] — the -approximate normalized 0-1000 coordinate is only required for elements -visible on screen but NOT in the list. Never claim an action was taken. -Do not decide what to do next — a separate decision stage reads your -description.""" +where the elements relevant to the goal sit. If the goal's next target is +NOT visible, say so and note how it would be reached (e.g. open the app +drawer, scroll, navigate back). Then list EVERY interactive element from +the attached list, one per line: [index] label ~[x,y] — the approximate +normalized 0-1000 coordinate is only required for elements visible on +screen but NOT in the list. Never claim an action was taken. Do not decide +what to do next — a separate decision stage reads your description.""" # Menu entries the decision model may always pick, alongside the element # taps generated from the live index list. Free-text input is excluded by @@ -612,6 +613,17 @@ async def _hybrid_decide( f"top_p={top_p:.2f} floor={floor:.2f}), escalating to tool-call turn" ) return None + if verdict.verdict in ("done", "fail"): + # Terminal picks can never execute blind: the decision model sees + # no pixels and cannot verify goal completion — observed live + # declaring 'done' on a screen where the target app wasn't even + # open. The standard turn re-verifies against the screenshot and + # keeps report_task_status available to do it honestly. + logger.info( + f"Hybrid terminal pick {verdict.verdict!r} (top_p={top_p:.2f}) " + "— escalating to the VLM turn for verification" + ) + return None tool_call = self._menu_choice_to_call(str(verdict.verdict), description) if tool_call is None: return None diff --git a/tests/unit/agents/flash/test_hybrid_loop.py b/tests/unit/agents/flash/test_hybrid_loop.py index bb19ff46f..8fb8d6c16 100644 --- a/tests/unit/agents/flash/test_hybrid_loop.py +++ b/tests/unit/agents/flash/test_hybrid_loop.py @@ -318,6 +318,30 @@ async def test_hybrid_decide_masks_reindexed_label(): assert "tap_2" in menu_sent +@pytest.mark.asyncio +async def test_hybrid_decide_never_executes_terminal_picks(): + """done/fail escalate to the VLM turn — the decision model sees no pixels + and cannot honestly verify goal completion (observed live declaring + 'done' on a home screen where the target app wasn't open).""" + runner = _runner() + for pick in ("done", "fail"): + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + MockClient.return_value.achoose = AsyncMock( + return_value=_verdict(pick, confidence=0.95) + ) + out = await runner._hybrid_decide( + AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), + None, _cfg(), + ) + assert out is None, pick + + @pytest.mark.asyncio async def test_hybrid_decide_escalates_on_describe_failure(): runner = _runner() From 4b7a732bcee63ad175d9d8c84cbcde9d4ad4dbe6 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 10:55:07 +0900 Subject: [PATCH 30/45] fix: ground hybrid plan on first observation instead of planning blind --- artemis/agents/flash/runner.py | 39 +++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 3e2a0fc3d..edd5958a2 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -171,9 +171,11 @@ def _parse_call_syntax(raw: str, match=None): _HYBRID_PLAN_PROMPT = """You are the planning stage of a UI testing agent. GOAL: $goal -Decompose the goal into 3-8 short ordered milestones (one per line, starting -with '- '). Each milestone names a screen state or interaction step, not a -tool call. Output only the milestone list.""" +Given the attached CURRENT screenshot and element list, decompose the goal +into 3-8 short ordered milestones (one per line, starting with '- '). Each +milestone names a screen state or interaction step visible or reachable +from here — including how to reach off-screen targets (e.g. the app drawer +opens with a swipe up). Output only the milestone list.""" _HYBRID_DESCRIBE_PROMPT = """You are the perception stage of a UI testing agent. GOAL: $goal @@ -406,17 +408,30 @@ def _init_llm(self): # Hybrid loop (decision.flash_loop): VLM describes, decision model acts # ------------------------------------------------------------------ - async def _hybrid_plan(self, llm) -> str | None: + async def _hybrid_plan(self, llm, img_bytes=None, xml_list=None) -> str | None: """The one upfront planning call — Pro's planner leg grafted into Flash. A plain completion (no tools): the VLM emits a milestone list that the - per-turn describe prompt carries as context. Failure is non-fatal — the - loop still runs, just without plan guidance. + per-turn describe prompt carries as context. The call is grounded on + the first observation — a plan made blind degenerates to boilerplate + ("load login screen" for a Settings task, observed live). Failure is + non-fatal — the loop still runs, just without plan guidance. """ prompt = Template(_HYBRID_PLAN_PROMPT).render(goal=self.goal) + blocks: list[dict] = [{"type": "text", "text": prompt}] + if img_bytes: + blocks.append({"type": "text", "text": "--- Current Screenshot ---"}) + blocks.append( + { + "type": "image_url", + "image_url": {"url": image_data_uri(base64.b64encode(img_bytes).decode())}, + } + ) + if xml_list: + blocks.append({"type": "text", "text": f"{PRO_UI_LIST_MARKER}\n{xml_list}"}) try: response = await invoke_llm_with_timeout_message( - acomplete(llm, [HumanMessage(content=prompt)]), + acomplete(llm, [HumanMessage(content=blocks)]), timeout_seconds=10, hard_timeout=settings.LLM_FLASH_HARD_TIMEOUT_SECONDS, ) @@ -1484,16 +1499,16 @@ async def run(self, state: State) -> dict: and getattr(decision_cfg, "enabled", False) and getattr(decision_cfg, "flash_loop", False) ) - plan_text = None - if hybrid: - logger.info("Hybrid Flash loop enabled: VLM describes, decision model acts.") - plan_text = await self._hybrid_plan(llm) - tools_declaration = self._get_tools() report_only_tools = [t for t in tools_declaration if t.name == "report_task_status"] ledger, img_bytes, xml_list = await self._prepare_conversation(state, tools_declaration) + plan_text = None + if hybrid: + logger.info("Hybrid Flash loop enabled: VLM describes, decision model acts.") + plan_text = await self._hybrid_plan(llm, img_bytes, xml_list) + turns = 0 action_sequence = 0 final_report = None From 9315a69e54ec176431370ed10a65b00f3a4860c0 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 10:58:18 +0900 Subject: [PATCH 31/45] fix: plan prompt requires goal-path milestones, not element inventory --- artemis/agents/flash/runner.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index edd5958a2..ef519ad69 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -172,10 +172,14 @@ def _parse_call_syntax(raw: str, match=None): GOAL: $goal Given the attached CURRENT screenshot and element list, decompose the goal -into 3-8 short ordered milestones (one per line, starting with '- '). Each -milestone names a screen state or interaction step visible or reachable -from here — including how to reach off-screen targets (e.g. the app drawer -opens with a swipe up). Output only the milestone list.""" +into 3-6 short ordered milestones (one per line, starting with '- '). Each +milestone is a SCREEN STATE to reach or a concrete interaction ON THE GOAL +PATH — e.g. "open the app drawer (swipe up on home)", "Settings main list +open", "Dark theme toggle enabled". Only include steps that move toward the +goal; NEVER enumerate visible elements unrelated to it (do not list "tap +" for every icon — a milestone is progress, not an inventory). +If the first target is not visible, the first milestone is how to reach it. +Output only the milestone list.""" _HYBRID_DESCRIBE_PROMPT = """You are the perception stage of a UI testing agent. GOAL: $goal From 0af4925feb973eeb13575881504157504bc0ac61 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 11:03:29 +0900 Subject: [PATCH 32/45] =?UTF-8?q?feat:=20TARGET=20visibility=20gate=20?= =?UTF-8?q?=E2=80=94=20decision=20model=20only=20picks=20on-screen=20eleme?= =?UTF-8?q?nts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- artemis/agents/flash/runner.py | 24 +++++++++++++++++++-- tests/unit/agents/flash/test_hybrid_loop.py | 23 ++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index ef519ad69..ba0ffe8da 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -193,8 +193,12 @@ def _parse_call_syntax(raw: str, match=None): drawer, scroll, navigate back). Then list EVERY interactive element from the attached list, one per line: [index] label ~[x,y] — the approximate normalized 0-1000 coordinate is only required for elements visible on -screen but NOT in the list. Never claim an action was taken. Do not decide -what to do next — a separate decision stage reads your description.""" +screen but NOT in the list. End with exactly one marker line: +TARGET: visible — the goal's next interactive target is on this screen +TARGET: not-visible — it is not; navigation is needed first +TARGET: reached — the goal state is already achieved +Never claim an action was taken. Do not decide what to do next — a +separate decision stage reads your description.""" # Menu entries the decision model may always pick, alongside the element # taps generated from the live index list. Free-text input is excluded by @@ -585,6 +589,22 @@ async def _hybrid_decide( description = self._extract_response_text(response) logger.info(f"Hybrid describe: {description[:200]}") + # Visibility gate: when the describe pass reports the goal's next + # target is not on this screen (or already reached), the right move + # is between-screen navigation or goal verification — both VLM + # strengths. The decision model only chooses among on-screen + # elements; observed live: absent-target screens make it pick + # press_home/wait/done on repeat. + marker = re.search( + r"TARGET:\s*(visible|not-visible|reached)", description + ) + if marker and marker.group(1) != "visible": + logger.info( + f"Hybrid describe reports {marker.group(1)} — escalating " + "the navigation turn to the VLM path" + ) + return None + menu = self._hybrid_action_menu( state, tried_taps=tried_taps, tried_labels=tried_labels ) diff --git a/tests/unit/agents/flash/test_hybrid_loop.py b/tests/unit/agents/flash/test_hybrid_loop.py index 8fb8d6c16..d8c82e33a 100644 --- a/tests/unit/agents/flash/test_hybrid_loop.py +++ b/tests/unit/agents/flash/test_hybrid_loop.py @@ -318,6 +318,29 @@ async def test_hybrid_decide_masks_reindexed_label(): assert "tap_2" in menu_sent +@pytest.mark.asyncio +async def test_hybrid_decide_escalates_when_target_not_visible(): + """A not-visible marker escalates: between-screen navigation is the VLM + path's job — the decision model only picks among on-screen elements.""" + runner = _runner() + describe = AIMessage(content="Home screen. Settings would be in the app drawer.\nTARGET: not-visible") + choose = AsyncMock() + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=describe), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + MockClient.return_value.achoose = choose + out = await runner._hybrid_decide( + AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), + None, _cfg(), + ) + assert out is None + choose.assert_not_awaited() + + @pytest.mark.asyncio async def test_hybrid_decide_never_executes_terminal_picks(): """done/fail escalate to the VLM turn — the decision model sees no pixels From cfdfadeeeea3b3198895b5595eb1bc34f44117b5 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 11:07:49 +0900 Subject: [PATCH 33/45] =?UTF-8?q?feat:=20goal-token=20visibility=20gate=20?= =?UTF-8?q?=E2=80=94=20VLM=20navigates=20when=20no=20menu=20label=20matche?= =?UTF-8?q?s=20the=20goal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- artemis/agents/flash/runner.py | 50 ++++++++++----- tests/unit/agents/flash/test_hybrid_loop.py | 69 ++++++++++++++++----- 2 files changed, 89 insertions(+), 30 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index ba0ffe8da..90bbdc78e 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -529,6 +529,32 @@ def _menu_choice_to_call(choice: str, description: str) -> dict | None: } return None + _GOAL_STOPWORDS = frozenset( + { + "the", "and", "for", "with", "app", "open", "into", "enable", + "disable", "turn", "tap", "click", "press", "then", "this", + "that", "screen", "page", "goto", "select", + } + ) + + @classmethod + def _menu_has_goal_target(cls, menu: dict[str, str], goal: str) -> bool: + """True when some tap label shares a meaningful token with the goal.""" + goal_tokens = { + t + for t in re.findall(r"[a-z0-9']+", goal.lower()) + if len(t) >= 4 and t not in cls._GOAL_STOPWORDS + } + if not goal_tokens: + return True + for key, label in menu.items(): + if not key.startswith("tap_"): + continue + label_tokens = set(re.findall(r"[a-z0-9']+", label.lower())) + if label_tokens & goal_tokens: + return True + return False + @staticmethod def _menu_key_for_call(name: str, args: dict) -> str | None: """Maps an executed tool call back to its hybrid menu key, so actions @@ -589,25 +615,21 @@ async def _hybrid_decide( description = self._extract_response_text(response) logger.info(f"Hybrid describe: {description[:200]}") - # Visibility gate: when the describe pass reports the goal's next - # target is not on this screen (or already reached), the right move - # is between-screen navigation or goal verification — both VLM - # strengths. The decision model only chooses among on-screen - # elements; observed live: absent-target screens make it pick - # press_home/wait/done on repeat. - marker = re.search( - r"TARGET:\s*(visible|not-visible|reached)", description + menu = self._hybrid_action_menu( + state, tried_taps=tried_taps, tried_labels=tried_labels ) - if marker and marker.group(1) != "visible": + # Visibility gate: the goal's next target must exist among the menu's + # element labels for an in-screen pick to be meaningful at all. Token + # overlap between labels and the goal is the check — describe + # narration can't be trusted (observed: 'TARGET: visible' on a home + # screen listing no Settings). No match → the VLM handles the + # between-screen navigation turn instead. + if not self._menu_has_goal_target(menu, self.goal): logger.info( - f"Hybrid describe reports {marker.group(1)} — escalating " + "Hybrid menu holds no goal-relevant element — escalating " "the navigation turn to the VLM path" ) return None - - menu = self._hybrid_action_menu( - state, tried_taps=tried_taps, tried_labels=tried_labels - ) tried_line = "" if tried_taps or tried_labels: masked = sorted( diff --git a/tests/unit/agents/flash/test_hybrid_loop.py b/tests/unit/agents/flash/test_hybrid_loop.py index d8c82e33a..96e4cd8b2 100644 --- a/tests/unit/agents/flash/test_hybrid_loop.py +++ b/tests/unit/agents/flash/test_hybrid_loop.py @@ -35,9 +35,9 @@ _FAILURE = Failure(FailureCategory.UNKNOWN, retryable=True, should_fallback=True) -def _runner() -> FlashRunner: +def _runner(goal: str = "enable dark theme") -> FlashRunner: r = FlashRunner.__new__(FlashRunner) - r.goal = "enable dark theme" + r.goal = goal return r @@ -141,7 +141,7 @@ def test_menu_key_for_call_rejects_non_menu_calls(): @pytest.mark.asyncio async def test_hybrid_decide_returns_call_on_confident_verdict(): runner = _runner() - state = _state([{"index": 1, "text": "Display"}]) + state = _state([{"index": 1, "text": "Dark theme"}]) describe_resp = AIMessage(content="Settings list; [1] Display ~[500,300]") with ( @@ -183,7 +183,7 @@ async def test_hybrid_decide_escalates_on_low_confidence(): return_value=_verdict("tap_1", confidence=0.10) ) out = await runner._hybrid_decide( - AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), None, _cfg() + AsyncMock(), _state([{"index": 1, "text": "Dark theme"}]), HumanMessage(content="x"), None, _cfg() ) assert out is None @@ -207,7 +207,7 @@ async def test_hybrid_decide_gates_on_answer_confidence_not_trust_score(): ): MockClient.return_value.achoose = AsyncMock(return_value=verdict) out = await runner._hybrid_decide( - AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), None, _cfg() + AsyncMock(), _state([{"index": 1, "text": "Dark theme"}]), HumanMessage(content="x"), None, _cfg() ) assert out is not None assert out[1][0]["name"] == "click" @@ -255,7 +255,7 @@ async def test_hybrid_decide_escalates_on_out_of_menu_verdict(): async def test_hybrid_decide_masks_tried_menu_keys(): """Elements already tapped are removed from the menu by (index, label) identity, so the decision model cannot re-pick a dead element.""" - runner = _runner() + runner = _runner(goal="tap Alpha Beta") state = _state([{"index": 1, "text": "Alpha"}, {"index": 2, "text": "Beta"}]) with ( patch( @@ -291,7 +291,7 @@ async def test_hybrid_decide_masks_tried_menu_keys(): async def test_hybrid_decide_masks_reindexed_label(): """A distinctive label stays masked even when the element list re-indexes (the volatile-text problem that defeats screen signatures).""" - runner = _runner() + runner = _runner(goal="open Settings Beta") # Same "Settings" row, now at index 9 instead of 12. state = _state([{"index": 9, "text": "Settings"}, {"index": 2, "text": "Beta"}]) with ( @@ -319,28 +319,65 @@ async def test_hybrid_decide_masks_reindexed_label(): @pytest.mark.asyncio -async def test_hybrid_decide_escalates_when_target_not_visible(): - """A not-visible marker escalates: between-screen navigation is the VLM - path's job — the decision model only picks among on-screen elements.""" - runner = _runner() - describe = AIMessage(content="Home screen. Settings would be in the app drawer.\nTARGET: not-visible") +async def test_hybrid_decide_escalates_when_menu_lacks_goal_target(): + """No element label sharing a goal token → between-screen navigation is + the VLM path's job; the decision model only picks on-screen elements.""" + runner = _runner() # goal: "enable dark theme" choose = AsyncMock() with ( patch( "artemis.agents.flash.runner.acomplete", - new=AsyncMock(return_value=describe), + new=AsyncMock(return_value=AIMessage(content="Gmail setup page")), ), patch("artemis.agents.flash.runner.DecisionClient") as MockClient, ): MockClient.return_value.achoose = choose out = await runner._hybrid_decide( - AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), - None, _cfg(), + AsyncMock(), + _state([{"index": 1, "text": "GOT IT"}, {"index": 2, "text": "Gmail"}]), + HumanMessage(content="x"), + None, + _cfg(), ) assert out is None choose.assert_not_awaited() +@pytest.mark.asyncio +async def test_hybrid_decide_proceeds_when_goal_target_present(): + runner = _runner() + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="Display screen")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + choose = AsyncMock(return_value=_verdict("tap_2")) + MockClient.return_value.achoose = choose + out = await runner._hybrid_decide( + AsyncMock(), + _state( + [{"index": 1, "text": "Brightness"}, {"index": 2, "text": "Dark theme"}] + ), + HumanMessage(content="x"), + None, + _cfg(), + ) + assert out is not None + choose.assert_awaited() + + +def test_menu_has_goal_target_matching(): + f = FlashRunner._menu_has_goal_target + menu = {"tap_1": "tap element 1: Gmail", "tap_2": "tap element 2: Dark theme"} + assert f(menu, "enable dark theme") is True + assert f(menu, "open the Settings app") is False + assert f({"swipe_up": "scroll"}, "enable dark theme") is False + # goals with no matchable tokens never gate (all short/stopword tokens) + assert f(menu, "do it") is True + + @pytest.mark.asyncio async def test_hybrid_decide_never_executes_terminal_picks(): """done/fail escalate to the VLM turn — the decision model sees no pixels @@ -359,7 +396,7 @@ async def test_hybrid_decide_never_executes_terminal_picks(): return_value=_verdict(pick, confidence=0.95) ) out = await runner._hybrid_decide( - AsyncMock(), _state([{"index": 1}]), HumanMessage(content="x"), + AsyncMock(), _state([{"index": 1, "text": "Dark theme"}]), HumanMessage(content="x"), None, _cfg(), ) assert out is None, pick From 102905656f796ba3df02bb9c2b3d4a32181d0c9a Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 11:25:51 +0900 Subject: [PATCH 34/45] fix: same-turn tool-call re-ask; menu-size-aware laya floor; deterministic am-start app launch --- artemis/agents/flash/runner.py | 25 +++++++++++++++++++++++-- artemis/drivers/android/adb_driver.py | 24 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 90bbdc78e..344cde1a3 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -664,14 +664,20 @@ async def _hybrid_decide( except (TypeError, ValueError): pass floor = getattr(cfg, "flash_choice_threshold", 0.25) + # Scale the floor to the menu size: on a 20-option menu a uniform + # spread is 0.05, so a 0.20 top pick is 4x uniform — decisive — yet a + # fixed 0.25 gate escalates every real-screen verdict (observed: all + # post-navigation picks landed 0.16–0.23). Require 4x uniform, capped + # at the configured floor, with an absolute minimum of 0.12. + effective_floor = max(0.12, min(floor, 4.0 / max(len(menu), 1))) if ( not verdict.answered - or top_p < floor + or top_p < effective_floor or verdict.verdict not in menu ): logger.info( f"Hybrid decision inconclusive (verdict={verdict.verdict!r} " - f"top_p={top_p:.2f} floor={floor:.2f}), escalating to tool-call turn" + f"top_p={top_p:.2f} floor={effective_floor:.2f}), escalating to tool-call turn" ) return None if verdict.verdict in ("done", "fail"): @@ -1674,6 +1680,21 @@ async def run(self, state: State) -> dict: if is_final: final_report = {"status": "failed", "explanation": raw_text} break + # Local VLM servers (mlx_vlm) accept tool_choice="required" yet + # still let the model narrate. Re-ask once, in-turn, with an + # explicit directive before counting a no-progress turn — the + # model does emit calls when pushed (observed: it narrates + # "the toggle is on" instead of calling report_task_status). + messages.append(HumanMessage(content=_NO_TOOL_CALL_NOTICE)) + retry_response = await self._invoke_model(llm, current_tools, messages) + if retry_response is not None: + retry_text = self._extract_response_text(retry_response) + retry_calls = self._resolve_tool_calls(retry_response, retry_text) + if retry_calls: + response, raw_text, tool_calls = retry, retry_text, retry_calls + messages.append(response) + + if not tool_calls: no_tool_call_streak += 1 if no_tool_call_streak >= _MAX_CONSECUTIVE_NO_TOOL_CALLS: final_report = { diff --git a/artemis/drivers/android/adb_driver.py b/artemis/drivers/android/adb_driver.py index 360aa4862..bd38184d1 100644 --- a/artemis/drivers/android/adb_driver.py +++ b/artemis/drivers/android/adb_driver.py @@ -382,8 +382,32 @@ async def press_key(self, key: KeyCode | str | int) -> bool: logger.error(f"Press key failed for '{key}': {e}") return False + async def _resolve_launcher_component(self, package_name: str) -> str | None: + """Resolve the app's launcher activity to a 'package/Activity' component.""" + try: + out = str( + await asyncio.to_thread( + self.device.shell, + f"cmd package resolve-activity --brief {package_name}", + ) + ) + for line in reversed([l.strip() for l in out.splitlines() if l.strip()]): + if "/" in line and line.startswith(package_name): + return line + except Exception: + pass + return None + async def launch_app(self, package_name: str) -> bool: try: + # `am start -n` lands deterministically; `monkey -p` can silently + # drop the event when another app holds transient focus (observed: + # three monkey launches of Settings no-oped while the search app + # stayed foreground — a direct `am start -n` worked instantly). + component = await self._resolve_launcher_component(package_name) + if component: + await asyncio.to_thread(self.device.shell, f"am start -n {component}") + return True cmd = f"monkey -p {package_name} -c android.intent.category.LAUNCHER 1" await asyncio.to_thread(self.device.shell, cmd) return True From b5f92dc4eeb03a1bbcc65dd092c4e1259f85eb35 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 11:32:37 +0900 Subject: [PATCH 35/45] fix: correct retry variable name in same-turn re-ask --- artemis/agents/flash/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 344cde1a3..0b4ea9c87 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -1691,7 +1691,7 @@ async def run(self, state: State) -> dict: retry_text = self._extract_response_text(retry_response) retry_calls = self._resolve_tool_calls(retry_response, retry_text) if retry_calls: - response, raw_text, tool_calls = retry, retry_text, retry_calls + response, raw_text, tool_calls = retry_response, retry_text, retry_calls messages.append(response) if not tool_calls: From 05e4711f255189bb14008bf7f06d0c528ad82784 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 11:49:26 +0900 Subject: [PATCH 36/45] feat: index stateful controls with live on/off state in the element list --- artemis/agents/flash/runner.py | 3 ++- artemis/utils/ui_filter.py | 9 +++++++++ artemis/utils/visualization.py | 25 +++++++++++++++++++++++-- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 0b4ea9c87..0f619b85a 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -625,9 +625,10 @@ async def _hybrid_decide( # screen listing no Settings). No match → the VLM handles the # between-screen navigation turn instead. if not self._menu_has_goal_target(menu, self.goal): + tap_labels = [v for k, v in menu.items() if k.startswith("tap_")] logger.info( "Hybrid menu holds no goal-relevant element — escalating " - "the navigation turn to the VLM path" + f"the navigation turn to the VLM path (labels: {tap_labels[:12]})" ) return None tried_line = "" diff --git a/artemis/utils/ui_filter.py b/artemis/utils/ui_filter.py index 64aebfe72..d9452c7ce 100644 --- a/artemis/utils/ui_filter.py +++ b/artemis/utils/ui_filter.py @@ -165,6 +165,15 @@ def _is_semantic_empty(node: dict[str, Any]) -> bool: if "image" in class_name or "icon" in class_name or "photo" in class_name: return False + # Stateful controls carry their state as the semantic value even when + # unlabeled (observed: a Settings Switch node with no text/desc was pruned + # as decoration, leaving the agent blind to whether it was on or off). + checkable = node.get("checkable") + if checkable is True or str(checkable).lower() == "true": + return False + if str(node.get("checked") or "").lower() == "true": + return False + return True diff --git a/artemis/utils/visualization.py b/artemis/utils/visualization.py index c6c2ddd2e..996665c47 100644 --- a/artemis/utils/visualization.py +++ b/artemis/utils/visualization.py @@ -404,6 +404,17 @@ def is_duplicate(text_val: str, cx: int, cy: int) -> bool: hint = str(node.get("hint") or "").strip() error = str(node.get("error") or "").strip() shown = text.strip() or hint + # Unlabeled stateful controls (switches/checkboxes carry no text — the + # label lives on a sibling node): synthesize a label from the widget + # class plus its state so the agent can both see the control and tell + # whether it is currently on or off. + is_stateful = str(node.get("checkable") or "").lower() == "true" or str( + node.get("checked") or "" + ).lower() == "true" + if not shown and is_stateful: + widget = str(node.get("class") or node.get("className") or "").rsplit(".", 1)[-1] + state_word = "on" if str(node.get("checked") or "").lower() == "true" else "off" + shown = f"{widget or 'Control'} ({state_word})" if not registered and shown and bounds: left, top, right, bottom = bounds cx, cy = get_center_coordinates(left, top, right, bottom) @@ -411,7 +422,11 @@ def is_duplicate(text_val: str, cx: int, cy: int) -> bool: continue norm_bounds = normalize_bounds(left, top, right, bottom) - kind = "Text" if text.strip() else "Hint" + kind = ( + "Text" + if text.strip() + else "Control" if is_stateful and not hint else "Hint" + ) line = f"[{idx}] {kind}: '{shown}' | Bounds: {norm_bounds}" if error: line += f" | Error: '{error}'" @@ -428,9 +443,15 @@ def is_duplicate(text_val: str, cx: int, cy: int) -> bool: "is_ocr": False, } if not text.strip(): - element["is_hint"] = True + if is_stateful and not hint: + element["is_control"] = True + else: + element["is_hint"] = True if error: element["error"] = error + if is_stateful: + element["checkable"] = node.get("checkable") + element["checked"] = node.get("checked") elements.append(element) labels.append(str(idx)) added_items.append((shown, cx, cy)) From ee400a62352fb2e7c163ec43412ea40ca26e9b0b Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 12:03:42 +0900 Subject: [PATCH 37/45] =?UTF-8?q?fix:=20mask=20only=20dead=20taps=20?= =?UTF-8?q?=E2=80=94=20screen-change-gated=20repeat=20tracking=20+=20verba?= =?UTF-8?q?tim-call=20detection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- artemis/agents/flash/runner.py | 106 ++++++++++++++++++++++++--------- 1 file changed, 79 insertions(+), 27 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 0f619b85a..0a9765824 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -460,6 +460,26 @@ def _element_label(el: dict) -> str: or "element" )[:60] + @staticmethod + def _element_signature(elements) -> frozenset: + """(label, center) set used to tell whether the screen actually changed.""" + return frozenset( + ( + FlashRunner._element_label(el), + tuple(el.get("center") or ()), + ) + for el in elements + ) + + @staticmethod + def _signatures_similar(a: frozenset, b: frozenset, threshold: float = 0.8) -> bool: + """Jaccard-similar element signatures — tolerates volatile items like + the clock, so a screen is 'unchanged' only when it really didn't move.""" + union = a | b + if not union: + return True + return len(a & b) / len(union) >= threshold + @staticmethod def _hybrid_action_menu( state: State, @@ -1581,6 +1601,7 @@ async def run(self, state: State) -> dict: tried_taps: set[tuple[int, str]] = set() tried_labels: set[str] = set() hybrid_last_key: str | None = None + hybrid_last_call_sig = "" hybrid_repeat_streak = 0 while limit is None or turns < limit: @@ -1726,45 +1747,35 @@ async def run(self, state: State) -> dict: no_tool_call_streak = 0 - # Record executed actions for the repeat machinery: element taps - # join the masked sets by identity; the same menu key executed - # twice in a row counts as a consecutive repeat (the decision - # model picks it again because nothing told it the last one did - # nothing). + # Snapshot the pre-action screen for the repeat machinery. A tap + # only joins the masked sets when it did NOT change the screen — + # a tap that navigated somewhere is working navigation, and masking + # its label would eventually erase every goal-relevant element from + # the menu (observed: the dark-theme run masked 'Use Dark theme' + # itself, leaving the VLM to toggle the switch blind forever). elements_now = getattr(state, "indexed_elements", None) or [] + pre_sig = self._element_signature(elements_now) label_by_idx = { el.get("index"): self._element_label(el) for el in elements_now if el.get("index") is not None } - repeat_keys: list[str] = [] + turn_keys: list[str] = [] + tap_records: list[tuple[int, str]] = [] + call_sig = "|".join( + sorted( + f"{tc.get('name')}:{json.dumps(tc.get('args') or {}, sort_keys=True, default=str)}" + for tc in tool_calls + ) + ) for tc in tool_calls: key = self._menu_key_for_call(tc.get("name"), tc.get("args")) if key is None: continue + turn_keys.append(key) if key.startswith("tap_"): idx = int(key[len("tap_"):]) - label = label_by_idx.get(idx, "") - ident = (idx, label) - if ident in tried_taps or ( - len(label) >= 4 and label in tried_labels - ): - repeat_keys.append(key) - tried_taps.add(ident) - if len(label) >= 4: - tried_labels.add(label) - elif key == hybrid_last_key: - repeat_keys.append(key) - hybrid_last_key = key - if repeat_keys: - hybrid_repeat_streak += 1 - pending_notices.append( - f"[NOTICE] {', '.join(sorted(set(repeat_keys)))} was already" - " attempted and did not move the task forward. Pick a" - " different action or navigate elsewhere first." - ) - else: - hybrid_repeat_streak = 0 + tap_records.append((idx, label_by_idx.get(idx, ""))) # Process tool calls turn = _TurnRecord() @@ -1786,6 +1797,47 @@ async def run(self, state: State) -> dict: injected=injected, native_text=native_text, ) + + # Did anything actually change? Mask dead taps, count repeats of + # already-dead keys, and flag a verbatim re-issue of last turn's + # call set (the VLM re-clicking the same coordinates counts too). + post_sig = self._element_signature( + getattr(state, "indexed_elements", None) or [] + ) + unchanged = self._signatures_similar(pre_sig, post_sig) + repeat_keys: list[str] = [] + for key in turn_keys: + if key.startswith("tap_"): + idx = int(key[len("tap_"):]) + label = label_by_idx.get(idx, "") + ident = (idx, label) + if ident in tried_taps or ( + len(label) >= 4 and label in tried_labels + ): + repeat_keys.append(key) + elif key == hybrid_last_key: + repeat_keys.append(key) + hybrid_last_key = key + if unchanged: + for idx, label in tap_records: + tried_taps.add((idx, label)) + if len(label) >= 4: + tried_labels.add(label) + verbatim_repeat = ( + unchanged and call_sig and call_sig == hybrid_last_call_sig + ) + hybrid_last_call_sig = call_sig + if repeat_keys or verbatim_repeat: + hybrid_repeat_streak += 1 + noted = repeat_keys or ["the same action"] + pending_notices.append( + f"[NOTICE] {', '.join(sorted(set(noted)))} was already" + " attempted and did not move the task forward. Pick a" + " different action or report the task status." + ) + else: + hybrid_repeat_streak = 0 + ledger.stage_turn(messages[turn_base:]) previous_turn = turn if final_report_from_calls is not None: From e4779b6068a345c2f5fa21cd0b3c690b791a6f98 Mon Sep 17 00:00:00 2001 From: James Lee Date: Thu, 15 Oct 2026 12:11:33 +0900 Subject: [PATCH 38/45] fix: restore single-screenshot tail contract; block-list retry notice; update stale provider and image-first test assertions --- artemis/agents/flash/runner.py | 13 ++++++------- tests/unit/admin_console/test_model_service.py | 4 ++-- tests/unit/test_config_package.py | 4 +++- tests/unit/tools/history/test_screenshot.py | 8 ++++---- tests/unit/tools/test_explorer_tool.py | 18 +++++++++--------- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 0a9765824..e749acda9 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -809,14 +809,11 @@ def _build_tail( """ # ``turns`` is kept for call-site symmetry: the tail has the same shape # on every turn. - blocks: list[dict] = [] + blocks: list[dict] = [ + {"type": "text", "text": f"# CURRENT OBSERVATION [{ledger.elapsed_label()}]"} + ] if img_bytes: img_b64 = base64.b64encode(img_bytes).decode("utf-8") - # Image-first: vision models ground better with the screenshot - # ahead of the observation text. - blocks.append({"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}) - blocks.append({"type": "text", "text": f"# CURRENT OBSERVATION [{ledger.elapsed_label()}]"}) - if img_bytes: blocks.append({"type": "text", "text": "--- Current Screenshot ---"}) blocks.append({"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}) if xml_list: @@ -1707,7 +1704,9 @@ async def run(self, state: State) -> dict: # explicit directive before counting a no-progress turn — the # model does emit calls when pushed (observed: it narrates # "the toggle is on" instead of calling report_task_status). - messages.append(HumanMessage(content=_NO_TOOL_CALL_NOTICE)) + messages.append( + HumanMessage(content=[{"type": "text", "text": _NO_TOOL_CALL_NOTICE}]) + ) retry_response = await self._invoke_model(llm, current_tools, messages) if retry_response is not None: retry_text = self._extract_response_text(retry_response) diff --git a/tests/unit/admin_console/test_model_service.py b/tests/unit/admin_console/test_model_service.py index a06346931..40f6952c7 100644 --- a/tests/unit/admin_console/test_model_service.py +++ b/tests/unit/admin_console/test_model_service.py @@ -25,7 +25,7 @@ def test_get_active_model_info_pro_architecture(): info = ModelService.get_active_model_info("pro") assert info["name"] == "Pro" assert info["architecture"] == "ARTEMIS Pro" - assert info["provider"] == "google" + assert info["provider"] in ("google", "custom") assert "id" in info @@ -34,7 +34,7 @@ def test_get_active_model_info_flash_architecture(): info = ModelService.get_active_model_info("flash") assert info["name"] == "Flash" assert info["architecture"] == "ARTEMIS Flash" - assert info["provider"] == "google" + assert info["provider"] in ("google", "custom") def test_resolve_session_profile_from_device_info(): diff --git a/tests/unit/test_config_package.py b/tests/unit/test_config_package.py index 5b8c56ad8..06c233880 100644 --- a/tests/unit/test_config_package.py +++ b/tests/unit/test_config_package.py @@ -152,7 +152,9 @@ def test_llm_config_parsing_and_merging(): """Test LLMConfig parsing, agent querying, and deep merging.""" llm_cfg = get_default_llm_config() assert isinstance(llm_cfg, LLMConfig) - assert llm_cfg.planner.provider in ("google", "openai", "openrouter", "xai", "vertexai") + assert llm_cfg.planner.provider in ( + "google", "openai", "openrouter", "xai", "vertexai", "custom", + ) assert llm_cfg.get_agent("planner") is not None assert llm_cfg.get_utils("hopper") is not None diff --git a/tests/unit/tools/history/test_screenshot.py b/tests/unit/tools/history/test_screenshot.py index 244f59f91..ad4968486 100644 --- a/tests/unit/tools/history/test_screenshot.py +++ b/tests/unit/tools/history/test_screenshot.py @@ -49,9 +49,9 @@ def test_pre_and_post_screenshots_are_attached_as_content_blocks(tmp_path): assert shot.image_bytes == pre.read_bytes() assert shot.description == "Screenshot of step 2 (pre-action) is attached." blocks = shot.to_content_blocks() - assert blocks[0] == {"type": "text", "text": shot.description} - assert blocks[1]["type"] == "image_url" - url = blocks[1]["image_url"]["url"] + assert blocks[1] == {"type": "text", "text": shot.description} + assert blocks[0]["type"] == "image_url" + url = blocks[0]["image_url"]["url"] assert url.startswith("data:image/jpeg;base64,") assert base64.b64decode(url.split(",", 1)[1]) == pre.read_bytes() @@ -151,7 +151,7 @@ async def test_tool_execute_returns_blocks_or_text(tmp_path): pre = _jpeg_file(tmp_path) ctx = SimpleNamespace(data_engine=_reader(pre=pre)) out = await get_step_screenshot.execute(ctx=ctx, step_number=1, which="pre") - assert isinstance(out, list) and out[1]["type"] == "image_url" + assert isinstance(out, list) and out[0]["type"] == "image_url" out = await get_step_screenshot.execute(ctx=ctx, step_number=1, which="post") assert out == "No post-action screenshot recorded for step 1." diff --git a/tests/unit/tools/test_explorer_tool.py b/tests/unit/tools/test_explorer_tool.py index 5e363b3fa..2b56f52ec 100644 --- a/tests/unit/tools/test_explorer_tool.py +++ b/tests/unit/tools/test_explorer_tool.py @@ -349,13 +349,13 @@ def fake_draw_dots(screenshot_path, points, labels, output_path, **kwargs): assert kwargs["color"] == "magenta" assert isinstance(result, list) and len(result) == 2 - assert result[0]["type"] == "text" - assert "Explorer located 1 candidate(s)" in result[0]["text"] + assert result[1]["type"] == "text" + assert "Explorer located 1 candidate(s)" in result[1]["text"] # The Operator's click takes a bare integer index. - assert "target=3, a bare integer" in result[0]["text"] - assert "target=[x, y]" not in result[0]["text"] - assert result[1]["type"] == "image_url" - assert result[1]["image_url"]["url"].startswith("data:image/jpeg;base64,") + assert "target=3, a bare integer" in result[1]["text"] + assert "target=[x, y]" not in result[1]["text"] + assert result[0]["type"] == "image_url" + assert result[0]["image_url"]["url"].startswith("data:image/jpeg;base64,") def test_render_operator_blocks_numbers_annotations_sequentially(tmp_path): @@ -547,8 +547,8 @@ def fake_draw_dots(screenshot_path, points, labels, output_path, **kwargs): ) assert tool.name == "ask_explorer" - assert isinstance(result, list) and result[1]["type"] == "image_url" - assert "- [1] 'B' at normalized [500, 500]" in result[0]["text"] + assert isinstance(result, list) and result[0]["type"] == "image_url" + assert "- [1] 'B' at normalized [500, 500]" in result[1]["text"] @pytest.mark.asyncio @@ -582,7 +582,7 @@ def fake_draw_dots(screenshot_path, points, labels, output_path, **kwargs): assert instance.run.await_args.kwargs["version"] == "ultra" assert isinstance(result, list) and len(result) == 2 - assert result[0]["type"] == "text" and result[1]["type"] == "image_url" + assert result[0]["type"] == "image_url" and result[1]["type"] == "text" assert state.indexed_points == [[540, 1200]] From 8a38522e2463ea4ca5b790c0817bb9a3a7797677 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 16 Oct 2026 03:52:55 +0900 Subject: [PATCH 39/45] =?UTF-8?q?feat:=20verify=20completed=20reports=20at?= =?UTF-8?q?=20the=20terminal=20boundary=20=E2=80=94=20Pro=20final=20check?= =?UTF-8?q?=20gates=20release,=20rejects=20feed=20verdicts=20back,=20budge?= =?UTF-8?q?t-exhausted=20blocks=20as=20failed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- artemis/agents/flash/runner.py | 177 ++++++++++++++++-- tests/unit/agents/test_flash_runner_ledger.py | 76 ++++++++ 2 files changed, 238 insertions(+), 15 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index e749acda9..9af36b711 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -304,6 +304,11 @@ def __init__(self, ctx: ArtemisContext, goal: str, max_turns: int | None = None) ctx.step_memory = self.summarizer except (AttributeError, TypeError, ValueError): pass + # Terminal-boundary verification state: the hybrid plan text (for the + # final check's context) and how many 'completed' reports the checker + # has already rejected this run. + self._plan_text: str | None = None + self._completion_rejections = 0 @property def turn_limit(self) -> int | None: @@ -1030,21 +1035,15 @@ async def _finalize_task_report( ) -> dict: """Records the final step, acknowledges the tool call, and flushes.""" final_report = args - if self.ctx.data_engine: - try: - if self.ctx.data_engine.current_step_id is None: - self.ctx.data_engine.allocate_step_id() - self.ctx.data_engine.record_step( - pre_screenshot_bytes=pre_screenshot_bytes, - ui_tree=xml_list, - action_taken={"action": "report_task_status", "args": args}, - operator_raw_thinking=raw_text, - operator_native_thinking=native_text or None, - last_execution_result={"result": "Task completed with final report."}, - extra_metadata={"token_usage": step_token_usage}, - ) - except Exception as step_err: - logger.warning(f"Error recording final step in FlashRunner: {step_err}") + self._record_terminal_step( + args, + raw_text, + step_token_usage, + pre_screenshot_bytes, + xml_list, + last_execution_result={"result": "Task completed with final report."}, + native_text=native_text, + ) messages.append( ToolMessage( tool_call_id=tc_id, @@ -1057,6 +1056,83 @@ async def _finalize_task_report( await self.summarizer.flush() return final_report + def _record_terminal_step( + self, + args: dict, + raw_text: str, + step_token_usage: dict, + pre_screenshot_bytes, + xml_list, + last_execution_result: dict, + native_text: str | None = None, + ) -> None: + """Writes a report_task_status step to the data engine (accepted or + rejected), mirroring the final-step record shape.""" + if not self.ctx.data_engine: + return + try: + if self.ctx.data_engine.current_step_id is None: + self.ctx.data_engine.allocate_step_id() + self.ctx.data_engine.record_step( + pre_screenshot_bytes=pre_screenshot_bytes, + ui_tree=xml_list, + action_taken={"action": "report_task_status", "args": args}, + operator_raw_thinking=raw_text, + operator_native_thinking=native_text or None, + last_execution_result=last_execution_result, + extra_metadata={"token_usage": step_token_usage}, + ) + except Exception as step_err: + logger.warning(f"Error recording terminal step in FlashRunner: {step_err}") + + async def _verify_completion(self) -> tuple[bool, str]: + """Terminal-boundary check on a 'completed' report_task_status claim. + + Runs the Pro final review — final screenshot, element list, and the + enumerated read-only device probes — so the release decision rests on + device state rather than the agent's narration (observed live: a + double tap netted zero on the dark-theme switch, then the model + reported completed). Fail-open on checker errors: a broken verifier + must never trap the loop. + + Returns ``(allowed, findings)``; ``findings`` lists failed verify + verdicts and unmet subgoals for feedback on rejection. + """ + setup = getattr(self.ctx, "execution_setup", None) + if not (setup and getattr(setup, "final_check_enabled", False)): + return True, "" + try: + from artemis.agents.checker.checker import ( + run_final_check, + verdicts_allow_release, + ) + + timeout = float(getattr(setup, "checkpoint_timeout", 180.0) or 180.0) + report = await asyncio.wait_for( + run_final_check( + self.ctx, + goal=self.goal, + plan_text=self._plan_text or "", + ledger=[], + check_items=[], + ), + timeout=timeout, + ) + except Exception as e: + logger.warning(f"Final check errored ({e}); releasing fail-open.") + return True, "" + if verdicts_allow_release(report) and not report.unmet_subgoals: + logger.info("Final check released the completion report.") + return True, "" + findings = [ + f"[verify failed] '{v.item_text}': {v.evidence}" + + (f" Suggestion: {v.suggestion}" if v.suggestion else "") + for v in report.verdicts + if v.kind == "verify" and v.status == "failed" + ] + findings += [f"[unmet subgoal] '{t}'" for t in report.unmet_subgoals] + return False, "\n".join(findings) or "Final check did not confirm completion." + async def _capture_post_screenshot( self, exec_result, name: str, action_names, state: State | None = None ): @@ -1455,6 +1531,76 @@ async def _process_tool_calls( logger.info(f"Executing Flash tool: {name}({args})") if name == "report_task_status": + # Terminal-boundary verification: a 'completed' claim is only + # released when the final check confirms the goal from device + # state. A rejected claim feeds the verdicts back and the run + # continues; once the retry budget (final_check_max_attempts) + # is spent, the report is finalized as failed — a blocked + # outcome, mirroring the Pro graph. + if args.get("status") == "completed": + allowed, findings = await self._verify_completion() + if not allowed: + self._completion_rejections += 1 + setup = getattr(self.ctx, "execution_setup", None) + max_attempts = int( + getattr(setup, "final_check_max_attempts", 3) or 3 + ) + if self._completion_rejections < max_attempts: + logger.info( + "Completion report rejected by final check" + f" ({self._completion_rejections}/{max_attempts}):" + f" {findings}" + ) + self._record_terminal_step( + args, + raw_text, + step_token_usage, + pre_screenshot_bytes, + xml_list, + last_execution_result={ + "result": ( + "Completion rejected by final check:" + f" {findings}" + ) + }, + native_text=native_text, + ) + messages.append( + ToolMessage( + tool_call_id=tc_id, + name=name, + content=json.dumps( + { + "status": "rejected", + "reason": ( + "Completion verification" + " failed." + ), + "findings": findings, + "instruction": ( + "The final check could not" + " confirm the goal from device" + " state. Continue the task, or" + " report status 'failed'" + " honestly." + ), + } + ), + status="error", + ) + ) + continue + logger.warning( + "Final-check retry budget exhausted; finalizing" + f" as failed. Last findings: {findings}" + ) + args = dict(args) + args["status"] = "failed" + args["explanation"] = ( + f"{args.get('explanation', '')}\n\n" + "Completion verification repeatedly failed;" + f" blocked outcome. {findings}" + ).strip() final_report = await self._finalize_task_report( name, args, @@ -1578,6 +1724,7 @@ async def run(self, state: State) -> dict: if hybrid: logger.info("Hybrid Flash loop enabled: VLM describes, decision model acts.") plan_text = await self._hybrid_plan(llm, img_bytes, xml_list) + self._plan_text = plan_text turns = 0 action_sequence = 0 diff --git a/tests/unit/agents/test_flash_runner_ledger.py b/tests/unit/agents/test_flash_runner_ledger.py index 57ff1ef87..bd00cb83f 100644 --- a/tests/unit/agents/test_flash_runner_ledger.py +++ b/tests/unit/agents/test_flash_runner_ledger.py @@ -684,3 +684,79 @@ def test_turn_record_reports_the_first_failure_of_a_multi_action_turn(): ] ) assert record.result()["error"] == "click rejected: coordinates out of bounds" + + +# --------------------------------------------------------------------------- +# Terminal-boundary completion verification (Pro final check at report time) +# --------------------------------------------------------------------------- + + +@pytest.mark.asyncio +async def test_rejected_completion_feeds_verdicts_back_and_the_run_continues(mock_context): + """A 'completed' report the final check rejects must not end the run: + the tool call is answered with a rejection carrying the failed verdicts, + and the next turn still runs — here the agent then fails honestly.""" + responses = [_report(explanation="dark theme on"), _report(status="failed", explanation="cannot")] + with ( + patch("artemis.controllers.unified_controller.get_driver"), + patch( + "artemis.agents.flash.runner.capture_screenshot_and_parse_ui", + AsyncMock(return_value=_INITIAL_OBSERVATION), + ), + ): + runner = _make_runner(mock_context, responses, max_turns=0) + runner._verify_completion = AsyncMock( + return_value=(False, "[verify failed] 'dark theme enabled': ui_night_mode=1") + ) + result = await runner.run(State(initial_goal="Enable dark theme")) + + assert result == {"status": "failed", "explanation": "cannot"} + assert runner._completion_rejections == 1 + # The rejected tool call got an answering ToolMessage with the verdicts. + turn2_messages = runner.calls[1]["messages"] + rejection = next( + m for m in turn2_messages if isinstance(m, ToolMessage) and "rejected" in str(m.content) + ) + assert "ui_night_mode=1" in rejection.content + assert rejection.status == "error" + + +@pytest.mark.asyncio +async def test_completion_blocked_outcome_when_verify_budget_is_exhausted(mock_context): + """Once the retry budget is spent the report is finalized as failed — + narration cannot outvote the checker's ground truth forever.""" + responses = [_report(explanation="dark theme on")] + with ( + patch("artemis.controllers.unified_controller.get_driver"), + patch( + "artemis.agents.flash.runner.capture_screenshot_and_parse_ui", + AsyncMock(return_value=_INITIAL_OBSERVATION), + ), + ): + runner = _make_runner(mock_context, responses, max_turns=0) + runner._completion_rejections = 3 # == default final_check_max_attempts + runner._verify_completion = AsyncMock(return_value=(False, "goal unmet")) + result = await runner.run(State(initial_goal="Enable dark theme")) + + assert result["status"] == "failed" + assert "blocked" in result["explanation"].lower() + assert "goal unmet" in result["explanation"] + + +@pytest.mark.asyncio +async def test_failed_status_skips_completion_verification(mock_context): + """Only 'completed' claims are audited; reporting failure is honest already.""" + responses = [_report(status="failed", explanation="device offline")] + with ( + patch("artemis.controllers.unified_controller.get_driver"), + patch( + "artemis.agents.flash.runner.capture_screenshot_and_parse_ui", + AsyncMock(return_value=_INITIAL_OBSERVATION), + ), + ): + runner = _make_runner(mock_context, responses, max_turns=0) + runner._verify_completion = AsyncMock(return_value=(True, "")) + result = await runner.run(State(initial_goal="Enable dark theme")) + + assert result["status"] == "failed" + runner._verify_completion.assert_not_awaited() From 832fbb9811b7236a17db0ac3bdd636f01f35da4d Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 16 Oct 2026 05:53:48 +0900 Subject: [PATCH 40/45] fix: route TARGET:reached describes to VLM verification; retry degenerate system-windows-only hierarchy captures --- artemis/agents/flash/runner.py | 12 +++ artemis/clients/accessibility_client.py | 72 +++++++++++++++ .../unit/clients/test_accessibility_client.py | 91 +++++++++++++++++++ 3 files changed, 175 insertions(+) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 9af36b711..23625112a 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -640,6 +640,18 @@ async def _hybrid_decide( description = self._extract_response_text(response) logger.info(f"Hybrid describe: {description[:200]}") + # Goal-achieved marker: a 'reached' describe is a perception claim, + # not a menu pick — hand the turn to the VLM, which can look at the + # screen itself and call report_task_status. The terminal-boundary + # check then audits that claim against device state, so a premature + # 'reached' costs a verification round-trip, not a false completion. + if re.search(r"(?im)^\s*target:\s*reached\b", description): + logger.info( + "Hybrid describe reports TARGET: reached — escalating to the " + "VLM turn for verification" + ) + return None + menu = self._hybrid_action_menu( state, tried_taps=tried_taps, tried_labels=tried_labels ) diff --git a/artemis/clients/accessibility_client.py b/artemis/clients/accessibility_client.py index f14b8ab3c..c341d7df5 100644 --- a/artemis/clients/accessibility_client.py +++ b/artemis/clients/accessibility_client.py @@ -38,6 +38,7 @@ from io import BytesIO import json import subprocess +import time from typing import Any import urllib.error import urllib.request @@ -343,9 +344,80 @@ def _elements_from_dump(dump: dict[str, Any]) -> tuple[str, list[dict[str, Any]] return xml, parse_hierarchy_xml_to_elements(xml) return "", normalize_helper_elements(dump.get("elements")) + # Packages that own only system chrome windows (status bar, nav bar, + # notification shade headers). A capture where every node belongs to + # these means the app window was missed. The lock screen legitimately + # produces such a tree — which is why the retry also requires the + # foreground to be a different package. + _SYSTEM_WINDOW_PACKAGES = frozenset({"android", "com.android.systemui"}) + + @classmethod + def _only_system_windows(cls, elements: list[dict[str, Any]]) -> bool: + """True when a parsed dump holds nothing but system-chrome nodes. + + Wrapper nodes without a ``package`` attribute (the ```` + root) carry no evidence either way and are skipped; a dump with no + packaged node at all is a different failure mode and is not retried + here. + """ + packages = [str(el.get("package") or "") for el in elements if el.get("package")] + return bool(packages) and all( + p in cls._SYSTEM_WINDOW_PACKAGES or p.startswith("com.android.systemui.") + for p in packages + ) + + def _foreground_is_app(self) -> bool: + """True when ``dumpsys`` reports a non-system resumed/visible package — + i.e. an app is on screen but the hierarchy missed its window.""" + try: + out = subprocess.run( + adb_command( + ["-s", self._device_id, "shell", "dumpsys", "activity", "activities"] + ), + stdin=subprocess.DEVNULL, + capture_output=True, + timeout=10, + check=True, + text=True, + ) + except (OSError, subprocess.SubprocessError) as exc: + logger.debug(f"Foreground package probe failed on {self._device_id}: {exc}") + return False + from artemis.utils.app_launch_utils import parse_foreground_task + + task = parse_foreground_task(out.stdout) + package = task.resumed_package or task.base_package if task else None + if not package: + return False + return not ( + package in self._SYSTEM_WINDOW_PACKAGES + or package.startswith("com.android.systemui.") + ) + def get_screen_data(self) -> UIAutomatorScreenData: snapshot = self._snapshot() xml, elements = self._elements_from_dump(snapshot) + if self._only_system_windows(elements) and self._foreground_is_app(): + # A status-bar-only window set while an app is foreground is a + # degenerate capture — the helper's window list briefly loses the + # app window during transitions/ANRs (observed live: menus showing + # nothing but clock/battery/notification nodes on a fully rendered + # Settings screen). One delayed retry usually restores it. + logger.warning( + f"Accessibility helper on {self._device_id} returned a " + "system-windows-only hierarchy while an app is foreground; " + "re-snapshotting once." + ) + try: + time.sleep(0.6) + retry = self._snapshot() + retry_xml, retry_elements = self._elements_from_dump(retry) + if not self._only_system_windows(retry_elements): + snapshot, xml, elements = retry, retry_xml, retry_elements + else: + logger.warning("Re-snapshot still returned system windows only.") + except Exception as exc: + logger.warning(f"Hierarchy re-snapshot failed ({exc}); keeping the first.") if snapshot.get("has_screenshot") and snapshot.get("screenshot_base64"): width, height = _dimensions(snapshot) return UIAutomatorScreenData( diff --git a/tests/unit/clients/test_accessibility_client.py b/tests/unit/clients/test_accessibility_client.py index bcee3e7ac..50ed83cd9 100644 --- a/tests/unit/clients/test_accessibility_client.py +++ b/tests/unit/clients/test_accessibility_client.py @@ -362,3 +362,94 @@ def test_normalize_helper_elements_tolerates_bad_input(): assert normalize_helper_elements(None) == [] assert normalize_helper_elements("x") == [] assert normalize_helper_elements({"clickable": True}) == [{"clickable": "true"}] + + +# --------------------------------------------------------------------------- # +# Degenerate hierarchy retry (system-windows-only capture while an app is up) +# --------------------------------------------------------------------------- # + +SYSTEM_XML = ( + '' + '' + '' + "" +) + + +def _snapshot(xml: str) -> bytes: + return json.dumps( + { + "success": True, + "has_screenshot": True, + "screenshot_base64": "QUJD", + "xml": xml, + "width": 1080, + "height": 2400, + } + ).encode() + + +def test_system_windows_only_with_app_foreground_retries_snapshot(client): + c, _ = client + with ( + _urlopen() as urlopen, + patch.object(AccessibilityClient, "_foreground_is_app", return_value=True), + patch("artemis.clients.accessibility_client.time.sleep"), + ): + urlopen.side_effect = [ + _response(_snapshot(SYSTEM_XML)), + _response(_snapshot(XML)), + ] + data = c.get_screen_data() + assert urlopen.call_count == 2 + assert data.hierarchy_xml == XML + assert any(el.get("package") == "app" for el in data.elements) + + +def test_system_windows_only_with_system_foreground_does_not_retry(client): + """Lock screen / status bar alone is a legitimate all-system tree — the + retry must not fire when no app is foreground.""" + c, _ = client + with ( + _urlopen() as urlopen, + patch.object(AccessibilityClient, "_foreground_is_app", return_value=False), + patch("artemis.clients.accessibility_client.time.sleep") as sleep, + ): + urlopen.return_value = _response(_snapshot(SYSTEM_XML)) + data = c.get_screen_data() + assert urlopen.call_count == 1 + sleep.assert_not_called() + assert data.hierarchy_xml == SYSTEM_XML + + +def test_system_windows_retry_keeps_first_when_still_degenerate(client): + c, _ = client + with ( + _urlopen() as urlopen, + patch.object(AccessibilityClient, "_foreground_is_app", return_value=True), + patch("artemis.clients.accessibility_client.time.sleep"), + ): + urlopen.side_effect = [ + _response(_snapshot(SYSTEM_XML)), + _response(_snapshot(SYSTEM_XML)), + ] + data = c.get_screen_data() + assert urlopen.call_count == 2 + assert data.hierarchy_xml == SYSTEM_XML + + +def test_foreground_probe_failure_means_no_retry(client): + c, _ = client + with ( + _urlopen() as urlopen, + patch.object(AccessibilityClient, "_foreground_is_app", return_value=False), + patch("artemis.clients.accessibility_client.time.sleep"), + ): + urlopen.return_value = _response(_snapshot(SYSTEM_XML)) + c.get_screen_data() + assert urlopen.call_count == 1 From 1f6f2aa3f3746d7b87d1533e6ff8f037c4613ad6 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 16 Oct 2026 06:06:30 +0900 Subject: [PATCH 41/45] feat: last-action outcome in decision state; describe reports control state; TARGET:reached escalates --- artemis/agents/flash/runner.py | 33 +++++++++++--- tests/unit/agents/flash/test_hybrid_loop.py | 49 +++++++++++++++++++++ 2 files changed, 77 insertions(+), 5 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 23625112a..864022e4f 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -190,10 +190,14 @@ def _parse_call_syntax(raw: str, match=None): and screen is shown, what has changed since the previous observation, and where the elements relevant to the goal sit. If the goal's next target is NOT visible, say so and note how it would be reached (e.g. open the app -drawer, scroll, navigate back). Then list EVERY interactive element from -the attached list, one per line: [index] label ~[x,y] — the approximate -normalized 0-1000 coordinate is only required for elements visible on -screen but NOT in the list. End with exactly one marker line: +drawer, scroll, navigate back). When a goal-relevant toggle, switch, or +control is visible, state its CURRENT value explicitly (on/off, checked, +enabled, the shown selection) — and if the goal state is already satisfied, +say so plainly rather than describing the screen generically. Then list +EVERY interactive element from the attached list, one per line: [index] +label ~[x,y] — the approximate normalized 0-1000 coordinate is only +required for elements visible on screen but NOT in the list. End with +exactly one marker line: TARGET: visible — the goal's next interactive target is on this screen TARGET: not-visible — it is not; navigation is needed first TARGET: reached — the goal state is already achieved @@ -309,6 +313,10 @@ def __init__(self, ctx: ArtemisContext, goal: str, max_turns: int | None = None) # has already rejected this run. self._plan_text: str | None = None self._completion_rejections = 0 + # One-line "last action → outcome" fed into the decision model's + # state: Laya has no transcript view, so without it a dead tap and + # real progress look identical. + self._last_action_note: str | None = None @property def turn_limit(self) -> int | None: @@ -681,10 +689,15 @@ async def _hybrid_decide( client = DecisionClient( cfg.url, model=cfg.model, timeout_seconds=cfg.timeout_seconds ) + last_line = ( + f"\nLast action outcome: {self._last_action_note}" + if self._last_action_note + else "" + ) state_text = ( f"Goal: {self.goal}\n" f"Plan: {plan_text or 'none'}\n" - f"Current screen: {description}{tried_line}" + f"Current screen: {description}{tried_line}{last_line}" ) verdict = await client.achoose( state_text[-_HYBRID_MAX_STATE_CHARS:], @@ -1996,6 +2009,16 @@ async def run(self, state: State) -> dict: else: hybrid_repeat_streak = 0 + # Feed the decision model a one-line outcome: it cannot see the + # transcript, so a no-op tap and real progress otherwise look the + # same on the next pick (observed: three re-picks of a dead row). + if tool_calls: + names = ", ".join(str(tc.get("name") or "?") for tc in tool_calls) + outcome = "no visible change" if unchanged else "screen changed" + self._last_action_note = f"{names} → {outcome}" + else: + self._last_action_note = None + ledger.stage_turn(messages[turn_base:]) previous_turn = turn if final_report_from_calls is not None: diff --git a/tests/unit/agents/flash/test_hybrid_loop.py b/tests/unit/agents/flash/test_hybrid_loop.py index 96e4cd8b2..6bb3bff0e 100644 --- a/tests/unit/agents/flash/test_hybrid_loop.py +++ b/tests/unit/agents/flash/test_hybrid_loop.py @@ -38,6 +38,7 @@ def _runner(goal: str = "enable dark theme") -> FlashRunner: r = FlashRunner.__new__(FlashRunner) r.goal = goal + r._last_action_note = None return r @@ -437,3 +438,51 @@ async def test_hybrid_plan_failure_is_non_fatal(): new=AsyncMock(side_effect=LLMCallError("boom", failure=_FAILURE)), ): assert await runner._hybrid_plan(AsyncMock()) is None + + +@pytest.mark.asyncio +async def test_hybrid_decide_state_includes_last_action_outcome(): + """The decision model has no transcript view — the one-line last-action + note is its only signal that a tap was a dead end vs. real progress.""" + runner = _runner() + runner._last_action_note = "click → no visible change" + state = _state([{"index": 1, "text": "Dark theme"}]) + captured = {} + + with ( + patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=AIMessage(content="desc")), + ), + patch("artemis.agents.flash.runner.DecisionClient") as MockClient, + ): + async def _achoose(state_text, question, menu): + captured["state"] = state_text + return _verdict("tap_1") + + MockClient.return_value.achoose = _achoose + await runner._hybrid_decide( + AsyncMock(), state, HumanMessage(content="x"), "plan", _cfg() + ) + + assert "click → no visible change" in captured["state"] + + +@pytest.mark.asyncio +async def test_hybrid_decide_escalates_when_describe_says_target_reached(): + """'TARGET: reached' is a perception claim, not a menu pick — the turn + escalates so the VLM can verify and report (the terminal gate audits it).""" + runner = _runner() + state = _state([{"index": 1, "text": "Dark theme"}]) + describe = AIMessage(content="Dark theme is already on.\nTARGET: reached") + + with patch( + "artemis.agents.flash.runner.acomplete", + new=AsyncMock(return_value=describe), + ), patch("artemis.agents.flash.runner.DecisionClient") as MockClient: + out = await runner._hybrid_decide( + AsyncMock(), state, HumanMessage(content="x"), "plan", _cfg() + ) + + assert out is None + MockClient.return_value.achoose.assert_not_called() From da748927e743f6380317774deff71d4c189b64f3 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 16 Oct 2026 06:07:20 +0900 Subject: [PATCH 42/45] fix: repeat notices name navigation alternatives and escalate to honest failure after streak 3 --- artemis/agents/flash/runner.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 864022e4f..606da5ce8 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -562,6 +562,23 @@ def _menu_choice_to_call(choice: str, description: str) -> dict | None: } return None + _NAV_LABEL_RE = re.compile( + r"navigate up|back|close|cancel|done|collapse|dismiss|arrow", re.I + ) + + def _navigation_suggestions(self, elements) -> str: + """Labeled elements that look like exits/nav — offered as concrete + alternatives when the model is re-issuing a dead action.""" + hints = [] + for el in elements or []: + idx = el.get("index") + label = self._element_label(el) + if idx is None or not label: + continue + if self._NAV_LABEL_RE.search(label): + hints.append(f"[{idx}] {label}") + return ", ".join(hints[:6]) + _GOAL_STOPWORDS = frozenset( { "the", "and", "for", "with", "app", "open", "into", "enable", @@ -2001,11 +2018,22 @@ async def run(self, state: State) -> dict: if repeat_keys or verbatim_repeat: hybrid_repeat_streak += 1 noted = repeat_keys or ["the same action"] - pending_notices.append( + nav = self._navigation_suggestions(elements_now) + notice = ( f"[NOTICE] {', '.join(sorted(set(noted)))} was already" - " attempted and did not move the task forward. Pick a" - " different action or report the task status." + " attempted and did not move the task forward." ) + if nav: + notice += f" Available navigation elements instead: {nav}." + if hybrid_repeat_streak >= 3: + notice += ( + " This action has now failed several times in a row —" + " do not repeat it; use a different element, a system" + " key (back/home), or report_task_status('failed')." + ) + else: + notice += " Pick a different action or report the task status." + pending_notices.append(notice) else: hybrid_repeat_streak = 0 From af959c287609bd180d90416fe6b998b46ebb6005 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 16 Oct 2026 06:08:49 +0900 Subject: [PATCH 43/45] =?UTF-8?q?fix:=20suppress=20verbatim=20dead=20call?= =?UTF-8?q?=20sets=20=E2=80=94=20answer=20with=20an=20error=20and=20nav=20?= =?UTF-8?q?alternatives=20instead=20of=20re-tapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- artemis/agents/flash/runner.py | 50 +++++++++++++++++++ tests/unit/agents/test_flash_runner_ledger.py | 40 +++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 606da5ce8..28c0fe702 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -1789,6 +1789,9 @@ async def run(self, state: State) -> dict: hybrid_last_key: str | None = None hybrid_last_call_sig = "" hybrid_repeat_streak = 0 + # Whether the previous turn's actions left the screen unchanged — + # the pre-execution half of verbatim dead-call suppression. + prev_turn_unchanged = False while limit is None or turns < limit: turns += 1 @@ -1965,6 +1968,52 @@ async def run(self, state: State) -> dict: idx = int(key[len("tap_"):]) tap_records.append((idx, label_by_idx.get(idx, ""))) + # Dead-verbatim suppression: when this turn's call set is identical + # to the previous turn's and that turn changed nothing, executing + # the same actions again can only produce the same dead result — + # the VLM is looping on an element it keeps mis-picking (observed: + # five identical click(10)s on a blank row). Answer the tool calls + # with an error instead so the next turn must choose differently; + # the notice names navigation alternatives. + if call_sig and call_sig == hybrid_last_call_sig and prev_turn_unchanged: + nav = self._navigation_suggestions(elements_now) + notice = ( + "[NOTICE] The exact same action was already executed and" + " changed nothing. It was not re-run. Pick a different" + " action." + + (f" Available navigation elements: {nav}." if nav else "") + ) + logger.info(f"Suppressing verbatim repeat of dead call set: {call_sig}") + for tc in tool_calls: + messages.append( + ToolMessage( + tool_call_id=tc.get("id") or str(uuid.uuid4()), + name=str(tc.get("name") or ""), + content=json.dumps( + { + "status": "error", + "error": ( + "This exact action was already executed" + " and changed nothing; it was not" + " re-run. Choose a different action." + ), + } + ), + status="error", + ) + ) + pending_notices.append(notice) + hybrid_repeat_streak += 1 + ( + current_pre_screenshot_bytes, + current_xml_list, + ) = await self._refresh_idle_observation( + state, current_pre_screenshot_bytes, current_xml_list + ) + ledger.stage_turn(messages[turn_base:]) + previous_turn = _TurnRecord() + continue + # Process tool calls turn = _TurnRecord() ( @@ -2015,6 +2064,7 @@ async def run(self, state: State) -> dict: unchanged and call_sig and call_sig == hybrid_last_call_sig ) hybrid_last_call_sig = call_sig + prev_turn_unchanged = unchanged if repeat_keys or verbatim_repeat: hybrid_repeat_streak += 1 noted = repeat_keys or ["the same action"] diff --git a/tests/unit/agents/test_flash_runner_ledger.py b/tests/unit/agents/test_flash_runner_ledger.py index bd00cb83f..cf00ac951 100644 --- a/tests/unit/agents/test_flash_runner_ledger.py +++ b/tests/unit/agents/test_flash_runner_ledger.py @@ -760,3 +760,43 @@ async def test_failed_status_skips_completion_verification(mock_context): assert result["status"] == "failed" runner._verify_completion.assert_not_awaited() + + +@pytest.mark.asyncio +async def test_verbatim_dead_call_set_is_suppressed_not_reexecuted(mock_context): + """An identical call set that already changed nothing must not be + executed a second time — the tool call is answered with an error and a + navigation hint instead of burning a real tap.""" + dead_call = { + "name": "click", + "args": {"target": [897, 390], "target_description": "Dark theme"}, + "id": "tc-a", + } + repeat_call = dict(dead_call, id="tc-b") + responses = [ + AIMessage(content="tap", tool_calls=[dead_call]), + AIMessage(content="tap again", tool_calls=[repeat_call]), + _report(status="failed", explanation="gave up"), + ] + with ( + patch("artemis.controllers.unified_controller.get_driver"), + patch( + "artemis.agents.flash.runner.capture_screenshot_and_parse_ui", + AsyncMock(return_value=_INITIAL_OBSERVATION), + ), + ): + runner = _make_runner(mock_context, responses, max_turns=0) + result = await runner.run(State(initial_goal="Enable dark theme")) + + assert result["status"] == "failed" + # Only ONE real click executed; the verbatim repeat was suppressed. + executed = [c for c in runner.executor.execute.await_args_list] + assert len(executed) == 1 + # The suppressed call got an error ToolMessage in the next turn's prompt. + turn3_messages = runner.calls[2]["messages"] + err = next( + m + for m in turn3_messages + if isinstance(m, ToolMessage) and "was already executed" in str(m.content) + ) + assert err.status == "error" From 7a0b0481cec3c15c468e0a397b320bac479bfb82 Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 16 Oct 2026 06:32:11 +0900 Subject: [PATCH 44/45] fix: detect A-B-A screen alternation (ping-pong) cycles that verbatim tracking misses --- artemis/agents/flash/runner.py | 36 ++++++++++++--- tests/unit/agents/test_flash_runner_ledger.py | 45 +++++++++++++++++++ 2 files changed, 76 insertions(+), 5 deletions(-) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index 28c0fe702..f90daa087 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -1792,6 +1792,13 @@ async def run(self, state: State) -> dict: # Whether the previous turn's actions left the screen unchanged — # the pre-execution half of verbatim dead-call suppression. prev_turn_unchanged = False + # Sliding histories for cycle detection: an A,B,A,B ping-pong (enter + # a page, back out, re-enter — observed live on Network & internet) + # never repeats a call verbatim and every screen "changes", so it + # escapes dead-call tracking. The give-away is re-issuing the call + # from two turns ago on a matching screen. + call_sig_history: list[str] = [] + pre_sig_history: list[frozenset] = [] while limit is None or turns < limit: turns += 1 @@ -2063,16 +2070,35 @@ async def run(self, state: State) -> dict: verbatim_repeat = ( unchanged and call_sig and call_sig == hybrid_last_call_sig ) + ping_pong = ( + bool(call_sig) + and len(call_sig_history) >= 2 + and call_sig == call_sig_history[-2] + and self._signatures_similar(pre_sig, pre_sig_history[-2]) + ) hybrid_last_call_sig = call_sig prev_turn_unchanged = unchanged - if repeat_keys or verbatim_repeat: + call_sig_history.append(call_sig) + pre_sig_history.append(pre_sig) + del call_sig_history[:-12] + del pre_sig_history[:-12] + if repeat_keys or verbatim_repeat or ping_pong: hybrid_repeat_streak += 1 noted = repeat_keys or ["the same action"] nav = self._navigation_suggestions(elements_now) - notice = ( - f"[NOTICE] {', '.join(sorted(set(noted)))} was already" - " attempted and did not move the task forward." - ) + if ping_pong and not repeat_keys and not verbatim_repeat: + notice = ( + "[NOTICE] You are alternating between two screens —" + " this action was already tried two steps ago and the" + " following action undid it. Do not go back and" + " forth: commit to a direction, finish the goal on" + " the current screen, or report the task status." + ) + else: + notice = ( + f"[NOTICE] {', '.join(sorted(set(noted)))} was already" + " attempted and did not move the task forward." + ) if nav: notice += f" Available navigation elements instead: {nav}." if hybrid_repeat_streak >= 3: diff --git a/tests/unit/agents/test_flash_runner_ledger.py b/tests/unit/agents/test_flash_runner_ledger.py index cf00ac951..717886ae0 100644 --- a/tests/unit/agents/test_flash_runner_ledger.py +++ b/tests/unit/agents/test_flash_runner_ledger.py @@ -800,3 +800,48 @@ async def test_verbatim_dead_call_set_is_suppressed_not_reexecuted(mock_context) if isinstance(m, ToolMessage) and "was already executed" in str(m.content) ) assert err.status == "error" + + +@pytest.mark.asyncio +async def test_ping_pong_cycle_triggers_alternation_notice(mock_context): + """click → BACK → same click is an A,B,A cycle: screens change every + turn so verbatim suppression cannot see it, but the turn-3 re-issue of + the turn-1 call on a matching screen must raise the alternation + notice.""" + home = [{"index": 1, "text": "home", "center": (100, 100)}] + wifi = [{"index": 1, "text": "wifi page", "center": (200, 200)}] + + def _exec(name, args, tc_id, state, **_): + if state is not None: + state.indexed_elements = list( + wifi if name == "click" else home + ) + return _exec_result(tc_id, name, f"IMG-{tc_id}".encode()) + + enter = {"name": "click", "args": {"target": 11}, "id": "c1"} + back = {"name": "press_key", "args": {"key": "BACK"}, "id": "b1"} + reenter = {"name": "click", "args": {"target": 11}, "id": "c2"} + responses = [ + AIMessage(content="enter", tool_calls=[enter]), + AIMessage(content="back", tool_calls=[back]), + AIMessage(content="enter again", tool_calls=[reenter]), + _report(status="failed", explanation="loop"), + ] + with ( + patch("artemis.controllers.unified_controller.get_driver"), + patch( + "artemis.agents.flash.runner.capture_screenshot_and_parse_ui", + AsyncMock(return_value=_INITIAL_OBSERVATION), + ), + ): + runner = _make_runner(mock_context, responses, max_turns=0) + runner.executor.execute = AsyncMock(side_effect=_exec) + state = State(initial_goal="Check Wi-Fi state") + state.indexed_elements = list(home) + await runner.run(state) + + turn4_messages = runner.calls[3]["messages"] + assert any( + "alternating between two screens" in str(m.content) + for m in turn4_messages + ) From b6989d9d7370b534b3244dffedf7ee7330a7642d Mon Sep 17 00:00:00 2001 From: James Lee Date: Fri, 16 Oct 2026 08:29:28 +0900 Subject: [PATCH 45/45] fix: fail fast after three verbatim re-issues of a suppressed dead call --- artemis/agents/flash/runner.py | 17 ++++++++++ tests/unit/agents/test_flash_runner_ledger.py | 31 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index f90daa087..4071d59de 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -2011,6 +2011,23 @@ async def run(self, state: State) -> dict: ) pending_notices.append(notice) hybrid_repeat_streak += 1 + if hybrid_repeat_streak >= 3: + # Third verbatim re-issue of a call that was suppressed + # with an explicit "not re-run" error — the model cannot + # break this loop itself (observed: 30+ turns of the same + # suppressed click until the turn cap). Fail honestly + # instead of burning the rest of the budget. + ledger.stage_turn(messages[turn_base:]) + if self.summarizer: + await self.summarizer.flush() + return { + "status": "failed", + "explanation": ( + "The agent kept re-issuing an action that was" + " already suppressed for having no effect, and" + " could not find an alternative way forward." + ), + } ( current_pre_screenshot_bytes, current_xml_list, diff --git a/tests/unit/agents/test_flash_runner_ledger.py b/tests/unit/agents/test_flash_runner_ledger.py index 717886ae0..e29baf63b 100644 --- a/tests/unit/agents/test_flash_runner_ledger.py +++ b/tests/unit/agents/test_flash_runner_ledger.py @@ -845,3 +845,34 @@ def _exec(name, args, tc_id, state, **_): "alternating between two screens" in str(m.content) for m in turn4_messages ) + + +@pytest.mark.asyncio +async def test_repeated_suppressed_calls_fail_after_streak(mock_context): + """Suppression prevents re-execution, not repetition — a model that + re-issues the same dead call a third time is stuck; end honestly + instead of burning the turn budget.""" + def _call(i): + return { + "name": "click", + "args": {"target": 12}, + "id": f"tc-{i}", + } + responses = [ + AIMessage(content="t", tool_calls=[_call(i)]) for i in range(5) + ] + with ( + patch("artemis.controllers.unified_controller.get_driver"), + patch( + "artemis.agents.flash.runner.capture_screenshot_and_parse_ui", + AsyncMock(return_value=_INITIAL_OBSERVATION), + ), + ): + runner = _make_runner(mock_context, responses, max_turns=0) + result = await runner.run(State(initial_goal="Toggle a switch")) + + assert result["status"] == "failed" + assert "suppressed" in result["explanation"] + # First call executed once; calls 2 and 3 were suppressed; streak 3 + # ended the run before calls 4-5 were ever consumed. + assert runner.executor.execute.await_count == 1

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 P_`80^@N&f^rw9KBXuW6M literal 0 HcmV?d00001 From 58d1282a5a7dd91163ad44af5c90392fa8f3d9c9 Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 05:19:54 +0900 Subject: [PATCH 15/45] docs: local models guide; generic pull hint for non-platform servers --- README.md | 2 +- .../diagnostics/probes/local_model_probe.py | 11 ++ docs/local_models.md | 113 ++++++++++++++++++ 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 docs/local_models.md diff --git a/README.md b/README.md index 49f97ea4c..03d9ffd04 100644 --- a/README.md +++ b/README.md @@ -301,7 +301,7 @@ ARTEMIS supports two execution profiles tailored for different automation requir - [ ] **Android Studio Integration**: Native IDE plugin and workflow integration to enable in-editor debugging, test recording, and automated device control directly within Android Studio. - [ ] **iOS Platform Expansion**: Extending multimodal perception and mobile automation to iOS devices and simulators. -- [x] **On-Device Lightweight VLMs**: Local execution with lightweight edge vision models for low-latency, privacy-first automation via OpenAI-compatible local providers (see `config/artemis.gemma4.jsonc` for a Gemma 4 E4B setup). +- [x] **On-Device Lightweight VLMs**: Local execution with lightweight edge vision models for low-latency, privacy-first automation via OpenAI-compatible local providers — see the [local models guide](./docs/local_models.md) for install/pull/run steps (`config/artemis.gemma4.jsonc` is the tested Gemma 4 E4B setup). - [ ] **Real-time Duplex Voice Interaction**: Voice-driven task dispatch with real-time conversational control and interruption handling. ## Community & Contributing diff --git a/artemis/core/diagnostics/probes/local_model_probe.py b/artemis/core/diagnostics/probes/local_model_probe.py index ce97701d6..d6207bde2 100644 --- a/artemis/core/diagnostics/probes/local_model_probe.py +++ b/artemis/core/diagnostics/probes/local_model_probe.py @@ -162,6 +162,17 @@ async def probe(self) -> ProbeResult: payload=f"{_OAP_BIN} model pull --alias {alias}", ) ) + missing_actions.append( + ProbeAction( + action_type="hint", + label=f"Other servers", + payload=( + f"If '{base}' is not the ondevice-agent-platform, " + f"install '{alias}' with that server's pull command " + f"(e.g. `ollama pull`) so it appears in GET {base}/models." + ), + ) + ) unreachable = [r for r in reports if not r.get("reachable")] with_missing = [r for r in reports if r.get("missing")] diff --git a/docs/local_models.md b/docs/local_models.md new file mode 100644 index 000000000..01fd45dec --- /dev/null +++ b/docs/local_models.md @@ -0,0 +1,113 @@ +# Running ARTEMIS on a Local Model + +ARTEMIS can drive every agent node (planner, operator, checker, flash, +grounding, OCR helpers) from a single local multimodal model served over an +OpenAI-compatible HTTP API — no cloud key required. + +Tested reference setup: **Gemma 4 E4B (4-bit, MLX)** on Apple Silicon — +~6 GB resident, ~40 tok/s decode, both `flash` and `pro` profiles verified +end-to-end on a real device. + +Any server that speaks `/v1/chat/completions` (text + `image_url` + tool +calls) works the same way: `ondevice-agent-platform`, `mlx_lm.server`, +Ollama, LM Studio, llama.cpp, vLLM, … + +## 1. Install a model server + +Pick one. The `ondevice-agent-platform` route is the tested path and is what +the readiness probe's remediation hints assume. + +**ondevice-agent-platform (reference)** + +```bash +# provides the `ondevice-agent-platform` CLI on PATH +ondevice-agent-platform serve --port 8080 +``` + +**Generic alternative — MLX (Apple Silicon)** + +```bash +pip install mlx-lm +mlx_lm.server --model mlx-community/gemma-4-E4B-it-4bit --port 8080 +``` + +**Generic alternative — Ollama** + +```bash +ollama serve # listens on :11434; use api_base http://127.0.0.1:11434/v1 +``` + +## 2. Pull the model + +```bash +# ondevice-agent-platform +ondevice-agent-platform model pull --alias gemma4-e4b + +# Ollama +ollama pull gemma3:4b +``` + +Whatever name the server reports in `GET /v1/models` is the string the +ARTEMIS config's `"model"` field must match exactly. + +```bash +curl http://127.0.0.1:8080/v1/models # confirm your alias appears +``` + +## 3. Point ARTEMIS at it + +A ready-made config ships with this repo: + +```bash +export ARTEMIS_ARTEMIS_JSONC=config/artemis.gemma4.jsonc +# or copy it over your artemis.jsonc +``` + +To adapt it for a different server, edit the `default` block (every node +inherits it unless overridden): + +```jsonc +"default": { + "provider": "custom", // skips cloud credential checks + "model": "gemma4-e4b", // must match /v1/models exactly + "api_base": "http://127.0.0.1:8080/v1", // your server + "timeout": 300, // local decode is slower; keep generous +} +``` + +## 4. Verify + +```bash +uv run artemis doctor +``` + +The **Local Model Endpoint** probe checks the endpoint is reachable and that +every configured alias is actually served: + +- ✅ `Serving N model(s)` — ready +- ❌ `model 'X' not installed` → suggests `ondevice-agent-platform model pull --alias X` +- ❌ `endpoint unreachable` → suggests `ondevice-agent-platform serve` + +The same probe backs the web console's setup wizard and `mobile_diagnose`. + +## 5. Run + +```bash +uv run artemis run "Open Settings" --profile flash +# or the heavier planner/operator/checker loop: +uv run artemis run "Open Reminders" --profile pro +``` + +## Tuning notes for small local models + +- **Timeouts**: `LLM_FLASH_HARD_TIMEOUT_SECONDS` (default 180 s) caps Flash + turns; keep `timeout` ≥ 300 in the config for thinking-style models. +- **Images**: strict servers cap images-per-request — Flash prunes + intermediate screenshots automatically; no action needed. +- **Structured output**: strict JSON-schema `response_format` is not + required — ARTEMIS uses function-calling for structured nodes. +- **Termination**: 4B-class models can recognize the goal yet keep + deliberating instead of ending the turn. Prefer bounded goals + ("open X", "scroll to Y") over open-ended ones until your deployment adds + an explicit done affordance. +- **Memory**: budget ~6 GB for a 4-bit 4B vision model + KV cache. From 6dad0c2446a49244ec7137f2a0a4d9b24a4f229d Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 06:29:27 +0900 Subject: [PATCH 16/45] refactor: keep local-model support server-agnostic; drop platform-specific references --- .../diagnostics/probes/credentials_probe.py | 2 +- .../diagnostics/probes/local_model_probe.py | 35 +++++++++---------- artemis/resources/config/artemis.jsonc | 6 ++-- config/artemis.gemma4.jsonc | 10 +++--- config/artemis.jsonc | 8 ++--- docs/local_models.md | 27 +++++--------- tests/unit/test_llm_local_endpoint.py | 2 +- 7 files changed, 39 insertions(+), 51 deletions(-) diff --git a/artemis/core/diagnostics/probes/credentials_probe.py b/artemis/core/diagnostics/probes/credentials_probe.py index b1516b5b2..91870ab8d 100644 --- a/artemis/core/diagnostics/probes/credentials_probe.py +++ b/artemis/core/diagnostics/probes/credentials_probe.py @@ -144,7 +144,7 @@ async def probe(self) -> ProbeResult: ) api_keys_map[prov_id] = val.strip() - # Config-bound local endpoints (e.g. ondevice-agent-platform) need no + # Config-bound local endpoints (e.g. a local OpenAI-compatible server) need no # API key: the custom provider authenticates to a loopback server. try: from artemis.core.diagnostics.probes.local_model_probe import ( diff --git a/artemis/core/diagnostics/probes/local_model_probe.py b/artemis/core/diagnostics/probes/local_model_probe.py index d6207bde2..cfa47d97f 100644 --- a/artemis/core/diagnostics/probes/local_model_probe.py +++ b/artemis/core/diagnostics/probes/local_model_probe.py @@ -14,11 +14,12 @@ """Local Model Endpoint Readiness Probe. -When artemis.jsonc routes nodes to a ``custom`` provider (the local -ondevice-agent-platform at ``api_base``), every configured model alias must -actually be pulled and served there. This probe verifies the endpoint is -reachable and that each required model appears in ``GET {api_base}/models``, -guiding the user through ``model pull`` / ``serve`` when it does not. +When artemis.jsonc routes nodes to a ``custom`` provider (a local +OpenAI-compatible model server at ``api_base``), every configured model +alias must actually be pulled and served there. This probe verifies the +endpoint is reachable and that each required model appears in +``GET {api_base}/models``, guiding the user through model installation or +server startup when it does not. """ from typing import Any @@ -38,7 +39,6 @@ logger = get_logger(__name__) _PROBE_HTTP_TIMEOUT_S = 5.0 -_OAP_BIN = "ondevice-agent-platform" def _iter_configured_llms() -> list[LLM]: @@ -137,9 +137,13 @@ async def probe(self) -> ProbeResult: worst_summary = f"{base} unreachable" missing_actions.append( ProbeAction( - action_type="command", + action_type="hint", label="Start Model Server", - payload=f"{_OAP_BIN} serve", + payload=( + f"Start the OpenAI-compatible server bound to {base} " + f"(e.g. `ollama serve`, `mlx_lm.server`, or your platform's " + f"serve command)." + ), ) ) continue @@ -155,21 +159,14 @@ async def probe(self) -> ProbeResult: ) for alias in missing: worst_summary = f"model '{alias}' not installed" - missing_actions.append( - ProbeAction( - action_type="command", - label=f"Pull {alias}", - payload=f"{_OAP_BIN} model pull --alias {alias}", - ) - ) missing_actions.append( ProbeAction( action_type="hint", - label=f"Other servers", + label=f"Pull {alias}", payload=( - f"If '{base}' is not the ondevice-agent-platform, " - f"install '{alias}' with that server's pull command " - f"(e.g. `ollama pull`) so it appears in GET {base}/models." + f"Install '{alias}' with the model server's pull command " + f"(e.g. `ollama pull {alias}`) so it appears in " + f"GET {base}/models." ), ) ) diff --git a/artemis/resources/config/artemis.jsonc b/artemis/resources/config/artemis.jsonc index 3265fb327..32b641613 100644 --- a/artemis/resources/config/artemis.jsonc +++ b/artemis/resources/config/artemis.jsonc @@ -46,10 +46,10 @@ "model": "llama3.2-vision", "fallback": { "provider": "openai", "model": "llama3.2-vision" } }, - // Fully local route via ondevice-agent-platform (OpenAI-compatible). + // Fully local route via a local OpenAI-compatible server. // Copy the provider/model/api_base keys into "default" or a node below; // "custom" skips cloud credential checks and needs no API key. - "ondevice-qwen": { + "local-qwen": { "provider": "custom", "model": "qwen3.8-9b", "api_base": "http://127.0.0.1:8080/v1", @@ -87,7 +87,7 @@ // CRITICAL REQUIREMENT: Standard LLMs (including standard Gemini Flash, GPT-4o, Claude 3.7) lack sub-pixel spatial coordinate fine-tuning. // To achieve accurate [x, y] point and bounding box localization, this node MUST use specialized Gemini ER (Embodied Reasoning / Robotics) models: // e.g., "gemini-robotics-er-2-preview". Non-ER models will fail spatial coordinate detection. - // For a local vision model (e.g. qwen-vl via ondevice-agent-platform) also set + // For a local vision model (e.g. qwen-vl via a local server) also set // "coordinate_format" — detector points are normalized to [x, y] 0-1000: // "yx_1000" (default, Gemini ER) | "xy_1000" (Qwen-VL verified) | // "xy_px"/"yx_px" (absolute pixels of the processed image grid) | diff --git a/config/artemis.gemma4.jsonc b/config/artemis.gemma4.jsonc index 4e9254a1a..17b97a8e4 100644 --- a/config/artemis.gemma4.jsonc +++ b/config/artemis.gemma4.jsonc @@ -3,7 +3,7 @@ // ☕ ARTEMIS Autonomous Agent & Framework Configuration — GEMMA 4 SPIKE // ============================================================================== // Single-model deployment: every node (reasoning + vision + grounding) resolves - // to one gemma4-e4b endpoint on the ondevice-agent-platform server. + // to one gemma4-e4b endpoint on the local OpenAI-compatible model server. // // ACTIVATION (pick one): // export ARTEMIS_ARTEMIS_JSONC=config/artemis.gemma4.jsonc @@ -68,8 +68,8 @@ "model": "llama3.2-vision", "fallback": { "provider": "openai", "model": "llama3.2-vision" } }, - // Unified single-model route via ondevice-agent-platform (OpenAI-compatible). - "ondevice-gemma4": { + // Unified single-model route via a local OpenAI-compatible server. + "local-gemma4": { "provider": "custom", "model": "gemma4-e4b", "api_base": "http://127.0.0.1:8080/v1", @@ -153,7 +153,7 @@ // replacing images only after strictly objective, high-density summaries are ready. // LOCAL-MODEL NOTE: the visual-transition lens bypasses the LLM router // (get_google_llm) — with no GOOGLE_API_KEY it crashes runner init. - // Disabled for the ondevice-platform deployment. + // Disabled for the local-provider deployment. "step_summarizer": { "enabled": false, // Whether background step summarization is active "model": "gemini-3.5-flash-lite", // Lightweight model for fast background inference @@ -218,7 +218,7 @@ // flag). See services/token_meter.py for measured session token usage // and cache-hit ratios. // LOCAL-MODEL NOTE: transcript + capsule lens are Google-bound - // (get_google_llm) — disabled under the ondevice-platform deployment. + // (get_google_llm) — disabled under the local-provider deployment. "enabled": false, "context_budget_tokens": 80000, // Below start_ratio of the operator's own measured prompt size, closed diff --git a/config/artemis.jsonc b/config/artemis.jsonc index f96030633..c357ee9d2 100644 --- a/config/artemis.jsonc +++ b/config/artemis.jsonc @@ -8,7 +8,7 @@ // ------------------------------------------------------------------------------ "default": { "provider": "custom", - // gemma4-e4b via ondevice-agent-platform (mlx-vlm gemma4 route); + // gemma4-e4b via a local OpenAI-compatible model server (mlx-vlm gemma4 route); // vision nodes use gemma4-e4b (semantic/grounding); vision-hybrid // is the OCR-only route (Apple Vision first, qwen-vl escalation). "model": "gemma4-e4b", @@ -93,7 +93,7 @@ }, // 👁️ Object Detector & Explorer (Flash Mode): Visual coordinates grounding and bounding boxes - // Local gemma4-e4b via ondevice-agent-platform (OpenAI-compatible :8080). + // Local gemma4-e4b via a local OpenAI-compatible model server. // grounding verified on synthetic UI: gemma4-e4b emits box_2d as // [ymin,xmin,ymax,xmax]/1000 = the detector's native yx_1000 contract // (pixel-accurate on a settings-screen mock; real-UI eval still pending). @@ -181,7 +181,7 @@ // replacing images only after strictly objective, high-density summaries are ready. // LOCAL-MODEL NOTE: the visual-transition lens bypasses the LLM router // (get_google_llm) — with no GOOGLE_API_KEY it crashes runner init. - // Disabled for the ondevice-platform deployment. + // Disabled for the local-provider deployment. "step_summarizer": { "enabled": false, // Whether background step summarization is active "model": "gemini-3.5-flash-lite", // Lightweight model for fast background inference @@ -246,7 +246,7 @@ // flag). See services/token_meter.py for measured session token usage // and cache-hit ratios. // LOCAL-MODEL NOTE: transcript + capsule lens are Google-bound - // (get_google_llm) — disabled under the ondevice-platform deployment. + // (get_google_llm) — disabled under the local-provider deployment. "enabled": false, "context_budget_tokens": 80000, // Below start_ratio of the operator's own measured prompt size, closed diff --git a/docs/local_models.md b/docs/local_models.md index 01fd45dec..2d6302928 100644 --- a/docs/local_models.md +++ b/docs/local_models.md @@ -9,29 +9,22 @@ Tested reference setup: **Gemma 4 E4B (4-bit, MLX)** on Apple Silicon — end-to-end on a real device. Any server that speaks `/v1/chat/completions` (text + `image_url` + tool -calls) works the same way: `ondevice-agent-platform`, `mlx_lm.server`, -Ollama, LM Studio, llama.cpp, vLLM, … +calls) works the same way: `mlx_lm.server`, Ollama, LM Studio, llama.cpp, +vLLM, … ## 1. Install a model server -Pick one. The `ondevice-agent-platform` route is the tested path and is what -the readiness probe's remediation hints assume. +Pick one. Anything exposing the OpenAI chat-completions API with vision and +tool-call support qualifies. -**ondevice-agent-platform (reference)** - -```bash -# provides the `ondevice-agent-platform` CLI on PATH -ondevice-agent-platform serve --port 8080 -``` - -**Generic alternative — MLX (Apple Silicon)** +**MLX (Apple Silicon)** ```bash pip install mlx-lm mlx_lm.server --model mlx-community/gemma-4-E4B-it-4bit --port 8080 ``` -**Generic alternative — Ollama** +**Ollama** ```bash ollama serve # listens on :11434; use api_base http://127.0.0.1:11434/v1 @@ -40,9 +33,6 @@ ollama serve # listens on :11434; use api_base http://127.0.0.1:11434/v1 ## 2. Pull the model ```bash -# ondevice-agent-platform -ondevice-agent-platform model pull --alias gemma4-e4b - # Ollama ollama pull gemma3:4b ``` @@ -85,8 +75,9 @@ The **Local Model Endpoint** probe checks the endpoint is reachable and that every configured alias is actually served: - ✅ `Serving N model(s)` — ready -- ❌ `model 'X' not installed` → suggests `ondevice-agent-platform model pull --alias X` -- ❌ `endpoint unreachable` → suggests `ondevice-agent-platform serve` +- ❌ `model 'X' not installed` → hint: install `X` with your server's pull + command so it appears in `GET {api_base}/models` +- ❌ `endpoint unreachable` → hint: start the server bound to that base The same probe backs the web console's setup wizard and `mobile_diagnose`. diff --git a/tests/unit/test_llm_local_endpoint.py b/tests/unit/test_llm_local_endpoint.py index 553b3b12f..0355cb54c 100644 --- a/tests/unit/test_llm_local_endpoint.py +++ b/tests/unit/test_llm_local_endpoint.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Endpoint plumbing for local OpenAI-compatible providers (e.g. ondevice-agent-platform).""" +"""Endpoint plumbing for local OpenAI-compatible providers (e.g. a local OpenAI-compatible server).""" from types import SimpleNamespace From 2c39050ac313c0d7fb421f8d25d303c20882f435 Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 06:34:02 +0900 Subject: [PATCH 17/45] feat: artemis model CLI pulls and serves local models itself - artemis model pull/serve/stop/status/list manages mlx_vlm.server as a background process (state under ~/.artemis/local_models/) - config/local_models.py: alias catalog (gemma4-e4b -> HF repo) - readiness probe now suggests artemis model pull/serve for catalog models, generic pull/serve hints otherwise - pip extra local (mlx-vlm, huggingface-hub; Apple Silicon gated) - docs/local_models.md leads with the self-operated path; BYO server remains for other platforms --- artemis/config/local_models.py | 55 ++++ .../diagnostics/probes/local_model_probe.py | 53 +++- artemis/interfaces/cli/commands/model.py | 260 ++++++++++++++++++ artemis/interfaces/cli/main.py | 4 + docs/local_models.md | 65 ++--- pyproject.toml | 7 + tests/unit/config/test_local_models.py | 71 +++++ 7 files changed, 469 insertions(+), 46 deletions(-) create mode 100644 artemis/config/local_models.py create mode 100644 artemis/interfaces/cli/commands/model.py create mode 100644 tests/unit/config/test_local_models.py diff --git a/artemis/config/local_models.py b/artemis/config/local_models.py new file mode 100644 index 000000000..e6f0ce6d5 --- /dev/null +++ b/artemis/config/local_models.py @@ -0,0 +1,55 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Catalog of local models ARTEMIS can pull and serve itself. + +Each alias maps to a Hugging Face repository servable by ``mlx_vlm.server`` +(``pip install artemis[local]`` on Apple Silicon). Aliases are what the +``"model"`` field in ``artemis.jsonc`` references when ``provider`` is +``"custom"`` and ``api_base`` points at the managed server. +""" + +from dataclasses import dataclass + + +@dataclass(frozen=True) +class LocalModelSpec: + """A local model ARTEMIS can pull and serve.""" + + repo: str + description: str = "" + + +LOCAL_MODELS: dict[str, LocalModelSpec] = { + "gemma4-e4b": LocalModelSpec( + repo="mlx-community/gemma-4-e4b-it-4bit", + description="Gemma 4 E4B 4-bit multimodal (tested; ~5 GB pull, ~6 GB resident)", + ), +} + +DEFAULT_LOCAL_MODEL = "gemma4-e4b" + + +def resolve_model_ref(alias_or_repo: str) -> tuple[str, str] | None: + """Map a catalog alias or ``org/repo`` id to ``(alias, repo)``. + + Returns ``None`` for bare names that match neither the catalog nor the + ``org/repo`` shape — those cannot be served by ARTEMIS itself. + """ + spec = LOCAL_MODELS.get(alias_or_repo) + if spec is not None: + return alias_or_repo, spec.repo + if "/" in alias_or_repo: + return alias_or_repo, alias_or_repo + return None diff --git a/artemis/core/diagnostics/probes/local_model_probe.py b/artemis/core/diagnostics/probes/local_model_probe.py index cfa47d97f..4dab137c2 100644 --- a/artemis/core/diagnostics/probes/local_model_probe.py +++ b/artemis/core/diagnostics/probes/local_model_probe.py @@ -23,9 +23,11 @@ """ from typing import Any +from urllib.parse import urlparse import httpx +from artemis.config.local_models import resolve_model_ref from artemis.core.diagnostics.probes.base import BaseProbe from artemis.core.diagnostics.schema import ( ProbeAction, @@ -135,14 +137,28 @@ async def probe(self) -> ProbeResult: except Exception as e: reports.append({"api_base": base, "reachable": False, "error": str(e)}) worst_summary = f"{base} unreachable" + port = urlparse(base).port + serve_alias = next( + (m for m in sorted(required) if resolve_model_ref(m)), None + ) + if serve_alias: + missing_actions.append( + ProbeAction( + action_type="command", + label="Start Model Server", + payload=( + f"artemis model serve {serve_alias}" + + (f" --port {port}" if port else "") + ), + ) + ) missing_actions.append( ProbeAction( action_type="hint", - label="Start Model Server", + label="Other servers", payload=( - f"Start the OpenAI-compatible server bound to {base} " - f"(e.g. `ollama serve`, `mlx_lm.server`, or your platform's " - f"serve command)." + f"Or start any OpenAI-compatible server bound to {base} " + f"(e.g. `ollama serve`)." ), ) ) @@ -159,17 +175,26 @@ async def probe(self) -> ProbeResult: ) for alias in missing: worst_summary = f"model '{alias}' not installed" - missing_actions.append( - ProbeAction( - action_type="hint", - label=f"Pull {alias}", - payload=( - f"Install '{alias}' with the model server's pull command " - f"(e.g. `ollama pull {alias}`) so it appears in " - f"GET {base}/models." - ), + if resolve_model_ref(alias): + missing_actions.append( + ProbeAction( + action_type="command", + label=f"Pull {alias}", + payload=f"artemis model pull {alias}", + ) + ) + else: + missing_actions.append( + ProbeAction( + action_type="hint", + label=f"Install {alias}", + payload=( + f"Install '{alias}' with the model server's pull " + f"command (e.g. `ollama pull {alias}`) so it " + f"appears in GET {base}/models." + ), + ) ) - ) unreachable = [r for r in reports if not r.get("reachable")] with_missing = [r for r in reports if r.get("missing")] diff --git a/artemis/interfaces/cli/commands/model.py b/artemis/interfaces/cli/commands/model.py new file mode 100644 index 000000000..8955ef370 --- /dev/null +++ b/artemis/interfaces/cli/commands/model.py @@ -0,0 +1,260 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Local on-device model management (artemis model). + +ARTEMIS can pull and serve a local multimodal model itself — no external +serving stack required. ``pull`` downloads weights through huggingface_hub; +``serve`` runs ``mlx_vlm.server`` (installed via the ``local`` extra) as a +managed background process exposing an OpenAI-compatible endpoint that the +``custom`` LLM provider and the local-model readiness probe consume. +""" + +import json +from pathlib import Path +import signal +import subprocess +import sys +import time +from typing import Annotated + +from artemis.config.local_models import DEFAULT_LOCAL_MODEL, LOCAL_MODELS, resolve_model_ref +from third_party.mobile_use.utils.logger import get_logger +from rich.console import Console +from rich.table import Table +import httpx +import typer + +logger = get_logger(__name__) +model_app = typer.Typer(help="Pull and serve local on-device models.") + +_STATE_DIR = Path.home() / ".artemis" / "local_models" +_SERVE_TIMEOUT_S = 300.0 + + +def _state_file(port: int) -> Path: + return _STATE_DIR / f"server-{port}.json" + + +def _read_state(port: int) -> dict | None: + path = _state_file(port) + if not path.exists(): + return None + try: + return json.loads(path.read_text()) + except (OSError, json.JSONDecodeError): + return None + + +def _pid_alive(pid: int) -> bool: + if pid <= 0: + return False + try: + import os + + os.kill(pid, 0) + except OSError: + return False + return True + + +def _require_local_extra() -> None: + try: + import mlx_vlm # noqa: F401 + except ImportError as e: + typer.secho( + "mlx-vlm is not installed. Install the local-model extra first:\n" + " pip install 'artemis[local]' # Apple Silicon only\n" + "On other platforms, run an OpenAI-compatible server (e.g. Ollama) " + "and point api_base at it instead.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) from e + + +@model_app.command("list") +def list_models() -> None: + """List local model aliases ARTEMIS can pull and serve.""" + console = Console() + table = Table(title="Local Models") + table.add_column("Alias", style="cyan") + table.add_column("Repository", style="green") + table.add_column("Notes", style="white") + for alias, spec in LOCAL_MODELS.items(): + table.add_row(alias, spec.repo, spec.description) + console.print(table) + console.print( + "\nAliases resolve through [bold]artemis model pull/serve [/bold]; " + "an org/repo id may be used instead of an alias." + ) + + +@model_app.command("pull") +def pull_model( + model: Annotated[ + str, + typer.Argument(help="Catalog alias or org/repo id to download."), + ] = DEFAULT_LOCAL_MODEL, +) -> None: + """Download model weights so they are ready to serve.""" + ref = resolve_model_ref(model) + if ref is None: + typer.secho( + f"Unknown model '{model}'. Run `artemis model list` or pass an org/repo id.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) + _require_local_extra() + alias, repo = ref + typer.secho(f"Pulling {alias} ({repo})...", fg=typer.colors.CYAN) + try: + from huggingface_hub import snapshot_download + + path = snapshot_download(repo) + except ImportError as e: + typer.secho( + "huggingface_hub is not installed. Install 'artemis[local]' first.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) from e + except Exception as e: + typer.secho(f"Pull failed for {repo}: {e}", fg=typer.colors.RED) + raise typer.Exit(code=1) from e + typer.secho(f"Ready: {alias} cached at {path}", fg=typer.colors.GREEN) + + +@model_app.command("serve") +def serve_model( + model: Annotated[ + str, + typer.Argument(help="Catalog alias or org/repo id to serve."), + ] = DEFAULT_LOCAL_MODEL, + host: Annotated[str, typer.Option("--host", help="Bind address.")] = "127.0.0.1", + port: Annotated[int, typer.Option("--port", "-p", help="Bind port.")] = 8080, +) -> None: + """Start a managed OpenAI-compatible model server in the background.""" + ref = resolve_model_ref(model) + if ref is None: + typer.secho( + f"Unknown model '{model}'. Run `artemis model list` or pass an org/repo id.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) + _require_local_extra() + alias, repo = ref + existing = _read_state(port) + if existing and _pid_alive(int(existing.get("pid", -1))): + typer.secho( + f"A server (pid {existing['pid']}) is already running on {host}:{port}.", + fg=typer.colors.YELLOW, + ) + return + _STATE_DIR.mkdir(parents=True, exist_ok=True) + log_path = _STATE_DIR / f"server-{port}.log" + argv = [ + sys.executable, + "-m", + "mlx_vlm.server", + "--model", + repo, + "--host", + host, + "--port", + str(port), + ] + typer.secho( + f"Starting {alias} ({repo}) on http://{host}:{port}/v1 — log: {log_path}", + fg=typer.colors.CYAN, + ) + with open(log_path, "ab") as log: + proc = subprocess.Popen( + argv, + stdout=log, + stderr=subprocess.STDOUT, + start_new_session=True, + ) + _state_file(port).write_text( + json.dumps({"pid": proc.pid, "alias": alias, "repo": repo, "host": host, "port": port}) + ) + base = f"http://{host}:{port}/v1" + deadline = time.monotonic() + _SERVE_TIMEOUT_S + while time.monotonic() < deadline: + if proc.poll() is not None: + break + try: + resp = httpx.get(f"{base}/models", timeout=2.0) + if resp.status_code == 200: + typer.secho( + f"Serving {alias} at {base} (pid {proc.pid}). Stop with " + f"`artemis model stop --port {port}`.", + fg=typer.colors.GREEN, + ) + return + except httpx.HTTPError: + pass + time.sleep(2.0) + typer.secho( + f"Server did not become ready within {_SERVE_TIMEOUT_S:.0f}s; " + f"check the log at {log_path}.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) + + +@model_app.command("stop") +def stop_model( + port: Annotated[int, typer.Option("--port", "-p", help="Port the server was started on.")] = 8080, +) -> None: + """Stop a managed model server started by `artemis model serve`.""" + state = _read_state(port) + if not state: + typer.secho(f"No managed server recorded on port {port}.", fg=typer.colors.YELLOW) + return + pid = int(state.get("pid", -1)) + if not _pid_alive(pid): + _state_file(port).unlink(missing_ok=True) + typer.secho("Server was not running; cleaned up state.", fg=typer.colors.YELLOW) + return + import os + + os.kill(pid, signal.SIGTERM) + _state_file(port).unlink(missing_ok=True) + typer.secho(f"Stopped {state.get('alias', 'server')} (pid {pid}).", fg=typer.colors.GREEN) + + +@model_app.command("status") +def status_model( + port: Annotated[int, typer.Option("--port", "-p", help="Port to check.")] = 8080, + host: Annotated[str, typer.Option("--host", help="Server host.")] = "127.0.0.1", +) -> None: + """Report whether a managed local model server is up.""" + state = _read_state(port) + if state and _pid_alive(int(state.get("pid", -1))): + typer.secho( + f"Running: {state.get('alias')} (pid {state['pid']}) on {state.get('host')}:{port}", + fg=typer.colors.GREEN, + ) + return + try: + resp = httpx.get(f"http://{host}:{port}/v1/models", timeout=3.0) + if resp.status_code == 200: + ids = [m.get("id") for m in resp.json().get("data", [])] + typer.secho( + f"An unmanaged server is serving {ids} on {host}:{port}.", + fg=typer.colors.YELLOW, + ) + return + except httpx.HTTPError: + pass + typer.secho(f"No model server on {host}:{port}.", fg=typer.colors.RED) diff --git a/artemis/interfaces/cli/main.py b/artemis/interfaces/cli/main.py index 629d6b2cb..301904a4f 100644 --- a/artemis/interfaces/cli/main.py +++ b/artemis/interfaces/cli/main.py @@ -22,6 +22,7 @@ from artemis.interfaces.cli.commands.helper import helper_app from artemis.interfaces.cli.commands.init import init_command from artemis.interfaces.cli.commands.mcp import mcp_command +from artemis.interfaces.cli.commands.model import model_app from artemis.interfaces.cli.commands.run import run_command from artemis.interfaces.cli.commands.server import server_app from artemis.interfaces.cli.commands.server_lifecycle import ( @@ -64,6 +65,9 @@ app.command(name="mcp", help="Start the Artemis Model Context Protocol (MCP) server.")(mcp_command) app.add_typer(server_app, name="server", help="Cloud Run proxy and web dashboard server.") app.add_typer(trace_app, name="trace", help="Inspect and query execution traces.") +app.add_typer( + model_app, name="model", help="Pull and serve local on-device models." +) app.add_typer( helper_app, name="helper", help="Manage the Accessibility Helper APK on attached devices." ) diff --git a/docs/local_models.md b/docs/local_models.md index 2d6302928..92d3b3727 100644 --- a/docs/local_models.md +++ b/docs/local_models.md @@ -1,49 +1,43 @@ # Running ARTEMIS on a Local Model ARTEMIS can drive every agent node (planner, operator, checker, flash, -grounding, OCR helpers) from a single local multimodal model served over an -OpenAI-compatible HTTP API — no cloud key required. +grounding, OCR helpers) from a single local multimodal model — and it can +pull and serve that model itself, no external serving stack or cloud key +required. Tested reference setup: **Gemma 4 E4B (4-bit, MLX)** on Apple Silicon — ~6 GB resident, ~40 tok/s decode, both `flash` and `pro` profiles verified end-to-end on a real device. -Any server that speaks `/v1/chat/completions` (text + `image_url` + tool -calls) works the same way: `mlx_lm.server`, Ollama, LM Studio, llama.cpp, -vLLM, … - -## 1. Install a model server - -Pick one. Anything exposing the OpenAI chat-completions API with vision and -tool-call support qualifies. - -**MLX (Apple Silicon)** +## 1. Install the local-model extra (Apple Silicon) ```bash -pip install mlx-lm -mlx_lm.server --model mlx-community/gemma-4-E4B-it-4bit --port 8080 +pip install 'artemis[local]' # or: uv pip install -e '.[local]' ``` -**Ollama** +This installs `mlx-vlm` + `huggingface-hub`, the serving stack ARTEMIS +manages for you. (On other platforms, skip to +[BYO server](#byo-any-openai-compatible-server).) -```bash -ollama serve # listens on :11434; use api_base http://127.0.0.1:11434/v1 -``` - -## 2. Pull the model +## 2. Pull and serve the model ```bash -# Ollama -ollama pull gemma3:4b +artemis model list # known aliases +artemis model pull gemma4-e4b # download weights (~5 GB) +artemis model serve gemma4-e4b # OpenAI-compatible server on :8080 ``` -Whatever name the server reports in `GET /v1/models` is the string the -ARTEMIS config's `"model"` field must match exactly. +`serve` runs `mlx_vlm.server` as a managed background process, waits for +readiness, and prints the endpoint. Lifecycle: ```bash -curl http://127.0.0.1:8080/v1/models # confirm your alias appears +artemis model status # is the managed server up? +artemis model stop # shut it down ``` +The served aliases appear under `GET /v1/models` — the same names the +ARTEMIS config's `"model"` field must match. + ## 3. Point ARTEMIS at it A ready-made config ships with this repo: @@ -53,14 +47,13 @@ export ARTEMIS_ARTEMIS_JSONC=config/artemis.gemma4.jsonc # or copy it over your artemis.jsonc ``` -To adapt it for a different server, edit the `default` block (every node -inherits it unless overridden): +The `default` block (every node inherits it unless overridden): ```jsonc "default": { "provider": "custom", // skips cloud credential checks "model": "gemma4-e4b", // must match /v1/models exactly - "api_base": "http://127.0.0.1:8080/v1", // your server + "api_base": "http://127.0.0.1:8080/v1", // the managed server "timeout": 300, // local decode is slower; keep generous } ``` @@ -75,11 +68,11 @@ The **Local Model Endpoint** probe checks the endpoint is reachable and that every configured alias is actually served: - ✅ `Serving N model(s)` — ready -- ❌ `model 'X' not installed` → hint: install `X` with your server's pull - command so it appears in `GET {api_base}/models` -- ❌ `endpoint unreachable` → hint: start the server bound to that base +- ❌ `model 'X' not installed` → action: `artemis model pull X` +- ❌ `endpoint unreachable` → action: `artemis model serve X --port 8080` -The same probe backs the web console's setup wizard and `mobile_diagnose`. +The same probe backs the web console's setup wizard and `mobile_diagnose`, +so remediation is one click anywhere it appears. ## 5. Run @@ -89,6 +82,14 @@ uv run artemis run "Open Settings" --profile flash uv run artemis run "Open Reminders" --profile pro ``` +## BYO: any OpenAI-compatible server + +ARTEMIS only needs `/v1/chat/completions` with text + `image_url` + tool +calls. Ollama, LM Studio, llama.cpp, vLLM all work — pull the model there, +set `api_base` + `"model"` to match its `/v1/models`, and `artemis doctor` +verifies the same way (remediation hints fall back to generic pull/serve +guidance for non-catalog aliases). + ## Tuning notes for small local models - **Timeouts**: `LLM_FLASH_HARD_TIMEOUT_SECONDS` (default 180 s) caps Flash diff --git a/pyproject.toml b/pyproject.toml index bb58098ef..98772717a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -89,6 +89,13 @@ dev = [ "pyright>=1.1.389", "pre-commit>=3.5.0", ] +# `artemis model pull/serve`: managed local model serving via mlx-vlm. +# Apple Silicon only; other platforms should run an OpenAI-compatible +# server (e.g. Ollama) and point api_base at it. +local = [ + "mlx-vlm>=0.7.6,<1.0; sys_platform == 'darwin' and platform_machine == 'arm64'", + "huggingface-hub>=0.30,<2.0", +] [project.scripts] artemis = "artemis.interfaces.cli.main:cli" diff --git a/tests/unit/config/test_local_models.py b/tests/unit/config/test_local_models.py new file mode 100644 index 000000000..a64712790 --- /dev/null +++ b/tests/unit/config/test_local_models.py @@ -0,0 +1,71 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tests for the local model catalog and the `artemis model` CLI surface.""" + +from typer.testing import CliRunner + +from artemis.config.local_models import ( + DEFAULT_LOCAL_MODEL, + LOCAL_MODELS, + resolve_model_ref, +) +from artemis.interfaces.cli.commands.model import model_app + +runner = CliRunner() + + +class TestResolveModelRef: + def test_catalog_alias(self): + assert resolve_model_ref("gemma4-e4b") == ( + "gemma4-e4b", + LOCAL_MODELS["gemma4-e4b"].repo, + ) + + def test_default_alias_is_cataloged(self): + assert DEFAULT_LOCAL_MODEL in LOCAL_MODELS + + def test_repo_id_passthrough(self): + assert resolve_model_ref("org/some-model") == ( + "org/some-model", + "org/some-model", + ) + + def test_unknown_bare_name_rejected(self): + assert resolve_model_ref("not-a-model") is None + + +class TestModelCli: + def test_list_shows_catalog(self): + result = runner.invoke(model_app, ["list"]) + assert result.exit_code == 0 + assert "gemma4-e4b" in result.output + + def test_pull_rejects_unknown_alias(self): + result = runner.invoke(model_app, ["pull", "bogus-name"]) + assert result.exit_code == 1 + assert "Unknown model" in result.output + + def test_serve_rejects_unknown_alias(self): + result = runner.invoke(model_app, ["serve", "bogus-name"]) + assert result.exit_code == 1 + assert "Unknown model" in result.output + + def test_stop_without_state_is_clean(self, tmp_path, monkeypatch): + import artemis.interfaces.cli.commands.model as model_mod + + monkeypatch.setattr(model_mod, "_STATE_DIR", tmp_path) + result = runner.invoke(model_app, ["stop", "--port", "19191"]) + assert result.exit_code == 0 + assert "No managed server" in result.output From c80f651aa286329e7d2648852185fb59ab45bf5b Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 13:57:15 +0900 Subject: [PATCH 18/45] feat: vision soft-token budget for managed local serving Gemma 4 image processor defaults to 280 soft tokens per image, which downsamples a phone screenshot to ~528x1152 effective and produced measured grounding failures (wrong thumbnail, echoed coordinates, lookalike-anchored detections of absent elements). At 1120 tokens the same suite goes 8/8: dead-on taps and correct empty-list refusals. - LocalModelSpec.vision_soft_tokens + catalog default 1120 for e4b - artemis model serve --vision-tokens {70,140,280,560,1120} patches the pulled snapshot processor_config.json before spawning mlx_vlm.server (idempotent; graceful noop when the snapshot or key is absent) - docs/local_models.md: vision-detail tuning note --- artemis/config/local_models.py | 7 +++ artemis/interfaces/cli/commands/model.py | 63 ++++++++++++++++++++++++ docs/local_models.md | 7 +++ tests/unit/config/test_local_models.py | 38 ++++++++++++++ 4 files changed, 115 insertions(+) diff --git a/artemis/config/local_models.py b/artemis/config/local_models.py index e6f0ce6d5..90b24efa4 100644 --- a/artemis/config/local_models.py +++ b/artemis/config/local_models.py @@ -29,12 +29,19 @@ class LocalModelSpec: repo: str description: str = "" + # Recommended ``max_soft_tokens`` for the model's image processor — + # the vision-token budget per image. Gemma 4 ships with 280, which + # downsamples a phone screenshot to ~528x1152 effective; 1120 keeps + # near-original detail (~1056x2352) and measurably improves detection + # and not-found discipline. ``None`` leaves the shipped default. + vision_soft_tokens: int | None = None LOCAL_MODELS: dict[str, LocalModelSpec] = { "gemma4-e4b": LocalModelSpec( repo="mlx-community/gemma-4-e4b-it-4bit", description="Gemma 4 E4B 4-bit multimodal (tested; ~5 GB pull, ~6 GB resident)", + vision_soft_tokens=1120, ), } diff --git a/artemis/interfaces/cli/commands/model.py b/artemis/interfaces/cli/commands/model.py index 8955ef370..e0fab5d49 100644 --- a/artemis/interfaces/cli/commands/model.py +++ b/artemis/interfaces/cli/commands/model.py @@ -134,6 +134,42 @@ def pull_model( typer.secho(f"Ready: {alias} cached at {path}", fg=typer.colors.GREEN) +_VISION_SOFT_TOKENS_SUPPORTED = (70, 140, 280, 560, 1120) + + +def _snapshot_path(repo: str) -> Path | None: + """Locate the local HF snapshot for ``repo`` without hitting the network.""" + try: + from huggingface_hub import snapshot_download + + return Path(snapshot_download(repo, local_files_only=True)) + except Exception: + return None + + +def _apply_vision_soft_tokens(repo: str, tokens: int) -> bool: + """Write ``image_processor.max_soft_tokens`` into the pulled snapshot. + + ``mlx_vlm.server`` exposes no flag for the vision-token budget; the + image processor reads it from ``processor_config.json`` at load time, + so we adjust the pulled snapshot before spawning. Idempotent. + """ + snapshot = _snapshot_path(repo) + if snapshot is None: + return False + cfg_path = snapshot / "processor_config.json" + try: + cfg = json.loads(cfg_path.read_text()) + except (OSError, json.JSONDecodeError): + return False + image_proc = cfg.get("image_processor") + if not isinstance(image_proc, dict) or "max_soft_tokens" not in image_proc: + return False + image_proc["max_soft_tokens"] = tokens + cfg_path.write_text(json.dumps(cfg, indent=2)) + return True + + @model_app.command("serve") def serve_model( model: Annotated[ @@ -142,6 +178,14 @@ def serve_model( ] = DEFAULT_LOCAL_MODEL, host: Annotated[str, typer.Option("--host", help="Bind address.")] = "127.0.0.1", port: Annotated[int, typer.Option("--port", "-p", help="Bind port.")] = 8080, + vision_tokens: Annotated[ + int | None, + typer.Option( + "--vision-tokens", + help="Image soft-token budget (Gemma 4 supports " + f"{_VISION_SOFT_TOKENS_SUPPORTED}; catalog default used when omitted).", + ), + ] = None, ) -> None: """Start a managed OpenAI-compatible model server in the background.""" ref = resolve_model_ref(model) @@ -151,8 +195,27 @@ def serve_model( fg=typer.colors.RED, ) raise typer.Exit(code=1) + if vision_tokens is not None and vision_tokens not in _VISION_SOFT_TOKENS_SUPPORTED: + typer.secho( + f"--vision-tokens must be one of {_VISION_SOFT_TOKENS_SUPPORTED}.", + fg=typer.colors.RED, + ) + raise typer.Exit(code=1) _require_local_extra() alias, repo = ref + tokens = vision_tokens + if tokens is None: + tokens = LOCAL_MODELS[alias].vision_soft_tokens if alias in LOCAL_MODELS else None + if tokens is not None: + if _apply_vision_soft_tokens(repo, tokens): + typer.secho(f"Vision soft tokens per image: {tokens}", fg=typer.colors.CYAN) + else: + typer.secho( + "Could not set the vision-token budget (model not pulled, or its " + "processor has no max_soft_tokens); serving the model default. " + "Run `artemis model pull` first.", + fg=typer.colors.YELLOW, + ) existing = _read_state(port) if existing and _pid_alive(int(existing.get("pid", -1))): typer.secho( diff --git a/docs/local_models.md b/docs/local_models.md index 92d3b3727..37b5092f9 100644 --- a/docs/local_models.md +++ b/docs/local_models.md @@ -96,6 +96,13 @@ guidance for non-catalog aliases). turns; keep `timeout` ≥ 300 in the config for thinking-style models. - **Images**: strict servers cap images-per-request — Flash prunes intermediate screenshots automatically; no action needed. +- **Vision detail**: Gemma 4's image processor defaults to 280 soft tokens + per image (≈528×1152 effective for a phone screenshot). `artemis model + serve` applies the catalog's recommended 1120 (≈near-original detail, + +840 prompt tokens/image) — measured to fix grounding misses and + hallucinated detections on dense screens. Override with + `--vision-tokens {70,140,280,560,1120}`; BYO servers keep their own + defaults. - **Structured output**: strict JSON-schema `response_format` is not required — ARTEMIS uses function-calling for structured nodes. - **Termination**: 4B-class models can recognize the goal yet keep diff --git a/tests/unit/config/test_local_models.py b/tests/unit/config/test_local_models.py index a64712790..740d2cba7 100644 --- a/tests/unit/config/test_local_models.py +++ b/tests/unit/config/test_local_models.py @@ -69,3 +69,41 @@ def test_stop_without_state_is_clean(self, tmp_path, monkeypatch): result = runner.invoke(model_app, ["stop", "--port", "19191"]) assert result.exit_code == 0 assert "No managed server" in result.output + + +class TestVisionSoftTokens: + def test_catalog_default(self): + from artemis.config.local_models import LOCAL_MODELS + + assert LOCAL_MODELS["gemma4-e4b"].vision_soft_tokens == 1120 + + def test_apply_writes_processor_config(self, tmp_path, monkeypatch): + import json as _json + + import artemis.interfaces.cli.commands.model as model_mod + + snap = tmp_path / "snap" + snap.mkdir() + (snap / "processor_config.json").write_text( + _json.dumps({"image_processor": {"max_soft_tokens": 280}}) + ) + monkeypatch.setattr(model_mod, "_snapshot_path", lambda repo: snap) + assert model_mod._apply_vision_soft_tokens("any/repo", 1120) + cfg = _json.loads((snap / "processor_config.json").read_text()) + assert cfg["image_processor"]["max_soft_tokens"] == 1120 + + def test_apply_missing_key_is_noop(self, tmp_path, monkeypatch): + import json as _json + + import artemis.interfaces.cli.commands.model as model_mod + + snap = tmp_path / "snap" + snap.mkdir() + (snap / "processor_config.json").write_text(_json.dumps({"other": {}})) + monkeypatch.setattr(model_mod, "_snapshot_path", lambda repo: snap) + assert not model_mod._apply_vision_soft_tokens("any/repo", 1120) + + def test_serve_rejects_bad_token_value(self): + result = runner.invoke(model_app, ["serve", "--vision-tokens", "999"]) + assert result.exit_code == 1 + assert "vision-tokens" in result.output From ba580f875db3a4a4dfc050daeec0c85599f4884f Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 16:19:45 +0900 Subject: [PATCH 19/45] fix: image-first ordering at remaining text-first multimodal sites --- artemis/agents/checker/checker.py | 7 +++-- artemis/agents/explorer/universal_runner.py | 6 ++++- artemis/agents/flash/runner.py | 9 ++++--- .../agents/image_processor/image_processor.py | 2 +- artemis/agents/outputter/outputter.py | 24 ++++++++++------- artemis/agents/planner/planner.py | 5 +++- .../agents/validator/precondition_pixel.py | 11 ++++---- artemis/tools/committee_tool.py | 26 ++++++++++--------- artemis/tools/explorer_tool.py | 2 +- artemis/tools/history/screenshot.py | 2 +- tests/unit/agents/test_explorer_tiers.py | 4 +-- tests/unit/agents/test_outputter.py | 10 +++---- tests/unit/agents/test_planner_node.py | 4 +-- .../agents/test_precondition_pixel_target.py | 25 +++++++++++------- 14 files changed, 80 insertions(+), 57 deletions(-) diff --git a/artemis/agents/checker/checker.py b/artemis/agents/checker/checker.py index ed798baee..ad474395b 100644 --- a/artemis/agents/checker/checker.py +++ b/artemis/agents/checker/checker.py @@ -837,15 +837,18 @@ async def run_final_check( f"# Final Screen Elements\n{minimal_list}" ) - content: list = [{"type": "text", "text": human_text}] + content: list = [] if screenshot_b64: - content.append({"type": "text", "text": "--- Final Screenshot ---"}) + # Image-first ordering: vision models ground better when the + # screenshot precedes the instruction/context text. content.append( { "type": "image_url", "image_url": {"url": image_data_uri(screenshot_b64)}, } ) + content.append({"type": "text", "text": "--- Final Screenshot ---"}) + content.append({"type": "text", "text": human_text}) messages = [ SystemMessage(content=system_content), diff --git a/artemis/agents/explorer/universal_runner.py b/artemis/agents/explorer/universal_runner.py index 6991ecae0..219a15a54 100644 --- a/artemis/agents/explorer/universal_runner.py +++ b/artemis/agents/explorer/universal_runner.py @@ -162,6 +162,10 @@ def _build_universal_messages( img_b64 = base64.b64encode(f.read()).decode("utf-8") user_content: list[dict[str, Any]] = [ + { + "type": "image_url", + "image_url": {"url": image_data_uri(img_b64)}, + }, { "type": "text", "text": ( @@ -274,7 +278,7 @@ def _build_tool_images_message(self, images: list[tuple[str, str]]) -> HumanMess "type": "text", "text": f"[Annotated image(s) returned by: {', '.join(tool_names)}]", } - return HumanMessage(content=[header, *blocks]) + return HumanMessage(content=[*blocks, header]) async def _universal_dispatch_tools( self, tool_calls: list, messages: list[BaseMessage], turn: int diff --git a/artemis/agents/flash/runner.py b/artemis/agents/flash/runner.py index da8c4d2fd..d112424c3 100644 --- a/artemis/agents/flash/runner.py +++ b/artemis/agents/flash/runner.py @@ -365,11 +365,14 @@ def _build_tail( """ # ``turns`` is kept for call-site symmetry: the tail has the same shape # on every turn. - blocks: list[dict] = [ - {"type": "text", "text": f"# CURRENT OBSERVATION [{ledger.elapsed_label()}]"} - ] + blocks: list[dict] = [] if img_bytes: img_b64 = base64.b64encode(img_bytes).decode("utf-8") + # Image-first: vision models ground better with the screenshot + # ahead of the observation text. + blocks.append({"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}) + blocks.append({"type": "text", "text": f"# CURRENT OBSERVATION [{ledger.elapsed_label()}]"}) + if img_bytes: blocks.append({"type": "text", "text": "--- Current Screenshot ---"}) blocks.append({"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}) if xml_list: diff --git a/artemis/agents/image_processor/image_processor.py b/artemis/agents/image_processor/image_processor.py index 7dafda710..54e60a8e4 100644 --- a/artemis/agents/image_processor/image_processor.py +++ b/artemis/agents/image_processor/image_processor.py @@ -116,11 +116,11 @@ async def run(self, instruction: str, target_image_path: str) -> dict: SystemMessage(content=prompt_template), HumanMessage( content=[ - {"type": "text", "text": "Here is the target image. Begin writing your code."}, { "type": "image_url", "image_url": {"url": image_data_uri(img_b64)}, }, + {"type": "text", "text": "Here is the target image. Begin writing your code."}, ] ), ] diff --git a/artemis/agents/outputter/outputter.py b/artemis/agents/outputter/outputter.py index b6300b6f3..9a63fcb0c 100644 --- a/artemis/agents/outputter/outputter.py +++ b/artemis/agents/outputter/outputter.py @@ -258,20 +258,13 @@ def _initial_messages( target_schema=_target_schema_json(output_config), plan_and_history=plan_and_history, ) - content: list[dict[str, Any]] = [{"type": "text", "text": human_message}] - - if ctx.data_engine: - verification = _verification_block(ctx, graph_output) - if verification: - content.append({"type": "text", "text": verification}) - - environment = _environment_block(ctx) - if environment: - content.append({"type": "text", "text": environment}) + content: list[dict[str, Any]] = [] raw_data = graph_output.operator_raw_data screenshot_b64 = raw_data.get("screenshot_b64") if raw_data else None if screenshot_b64: + # Image-first: vision models ground better when the screenshot + # precedes the instruction/context text. content.append( { "type": "image_url", @@ -279,6 +272,17 @@ def _initial_messages( } ) + content.append({"type": "text", "text": human_message}) + + if ctx.data_engine: + verification = _verification_block(ctx, graph_output) + if verification: + content.append({"type": "text", "text": verification}) + + environment = _environment_block(ctx) + if environment: + content.append({"type": "text", "text": environment}) + return [SystemMessage(content=_SYSTEM_MESSAGE), HumanMessage(content=content)] diff --git a/artemis/agents/planner/planner.py b/artemis/agents/planner/planner.py index d1c252126..8b6d5f439 100644 --- a/artemis/agents/planner/planner.py +++ b/artemis/agents/planner/planner.py @@ -275,7 +275,7 @@ async def __call__(self, state: State): human_message = Template(human_content).render(**render_kwargs) - human_message_content = [{"type": "text", "text": human_message}] + human_message_content = [] if screenshot_b64: human_message_content.append( { @@ -283,6 +283,9 @@ async def __call__(self, state: State): "image_url": {"url": image_data_uri(screenshot_b64)}, } ) + # Multimodal models ground more reliably when the image precedes the + # instruction text (image-first ordering). + human_message_content.append({"type": "text", "text": human_message}) # Sliding-window models attend reliably to the tail of the sequence; # the submission protocol reminder must sit after the screenshot, or # the image tokens push it out of the local window. diff --git a/artemis/agents/validator/precondition_pixel.py b/artemis/agents/validator/precondition_pixel.py index 734d33d87..784bfe22c 100644 --- a/artemis/agents/validator/precondition_pixel.py +++ b/artemis/agents/validator/precondition_pixel.py @@ -117,17 +117,16 @@ def _build_messages( action_name = action_item.get("action") user_content = [ - {"type": "text", "text": _describe_target(action_item)}, + # Images first, then the target description: vision models ground + # better when pixel content precedes the instruction text. + {"type": "image_url", "image_url": {"url": image_data_uri(orig_b64)}}, {"type": "text", "text": "[Image 1 (Reference)]"}, - { - "type": "image_url", - "image_url": {"url": image_data_uri(orig_b64)}, - }, - {"type": "text", "text": "[Image 2 (Current State)]"}, { "type": "image_url", "image_url": {"url": image_data_uri(live_b64)}, }, + {"type": "text", "text": "[Image 2 (Current State)]"}, + {"type": "text", "text": _describe_target(action_item)}, ] if state: thoughts = [] diff --git a/artemis/tools/committee_tool.py b/artemis/tools/committee_tool.py index bf52782c7..fbb2da5ed 100644 --- a/artemis/tools/committee_tool.py +++ b/artemis/tools/committee_tool.py @@ -274,12 +274,7 @@ async def _execute_committee( async def run_agent_turn(llm, system_prompt, tools, agent_name): current_blackboard = blackboard_path.read_text(encoding="utf-8") - human_content = [ - { - "type": "text", - "text": f"Current Blackboard:\n{current_blackboard}", - } - ] + human_content = [] if screenshot_b64: human_content.append( { @@ -287,6 +282,12 @@ async def run_agent_turn(llm, system_prompt, tools, agent_name): "image_url": {"url": image_data_uri(screenshot_b64)}, } ) + human_content.append( + { + "type": "text", + "text": f"Current Blackboard:\n{current_blackboard}", + } + ) messages = [ SystemMessage(content=system_prompt), @@ -368,12 +369,7 @@ async def run_tool(tc): # Final Synthesis by Planner Avatar current_blackboard = blackboard_path.read_text(encoding="utf-8") - final_human_content = [ - { - "type": "text", - "text": f"Current Blackboard:\n{current_blackboard}", - } - ] + final_human_content = [] if screenshot_b64: final_human_content.append( { @@ -381,6 +377,12 @@ async def run_tool(tc): "image_url": {"url": image_data_uri(screenshot_b64)}, } ) + final_human_content.append( + { + "type": "text", + "text": f"Current Blackboard:\n{current_blackboard}", + } + ) msg_final = [ SystemMessage( diff --git a/artemis/tools/explorer_tool.py b/artemis/tools/explorer_tool.py index 97cf729c9..83e86c1f0 100644 --- a/artemis/tools/explorer_tool.py +++ b/artemis/tools/explorer_tool.py @@ -480,8 +480,8 @@ def render_operator_blocks( logger.error(f"Failed to read annotated explorer image: {e}") return text return [ - {"type": "text", "text": text}, {"type": "image_url", "image_url": {"url": image_data_uri(img_b64)}}, + {"type": "text", "text": text}, ] diff --git a/artemis/tools/history/screenshot.py b/artemis/tools/history/screenshot.py index 33bf4dd1c..50b886a51 100644 --- a/artemis/tools/history/screenshot.py +++ b/artemis/tools/history/screenshot.py @@ -65,8 +65,8 @@ def to_content_blocks(self) -> list[dict[str, Any]] | str: return self.description encoded = base64.b64encode(self.image_bytes).decode("utf-8") return [ - {"type": "text", "text": self.description}, {"type": "image_url", "image_url": {"url": image_data_uri(encoded)}}, + {"type": "text", "text": self.description}, ] diff --git a/tests/unit/agents/test_explorer_tiers.py b/tests/unit/agents/test_explorer_tiers.py index e8c400d3d..ef747e172 100644 --- a/tests/unit/agents/test_explorer_tiers.py +++ b/tests/unit/agents/test_explorer_tiers.py @@ -244,11 +244,11 @@ async def test_universal_dispatch_appends_image_message(tmp_path): assert [type(m) for m in messages] == [ToolMessage, ToolMessage, HumanMessage] assert messages[0].content == "perception text" human = messages[2] - assert human.content[0] == { + assert human.content[-1] == { "type": "text", "text": "[Annotated image(s) returned by: ask_perception_tool, inspect_region]", } - image_blocks = human.content[1:] + image_blocks = human.content[:-1] assert len(image_blocks) == 2 # the missing file is skipped assert all(b["type"] == "image_url" for b in image_blocks) assert image_blocks[0]["image_url"]["url"].startswith("data:image/jpeg;base64,") diff --git a/tests/unit/agents/test_outputter.py b/tests/unit/agents/test_outputter.py index 8def19fa9..259cf0b41 100644 --- a/tests/unit/agents/test_outputter.py +++ b/tests/unit/agents/test_outputter.py @@ -147,11 +147,11 @@ def __init__(self, messages, initial_goal, operator_raw_data): human_content = messages[1].content assert isinstance(human_content, list) - assert human_content[0]["type"] == "text" - assert "Step 1: Opened browser" in human_content[0]["text"] - assert "Plan: Find capital" in human_content[0]["text"] - assert human_content[1]["type"] == "image_url" - assert human_content[1]["image_url"]["url"] == "data:image/jpeg;base64,mock_b64_data" + assert human_content[0]["type"] == "image_url" + assert human_content[0]["image_url"]["url"] == "data:image/jpeg;base64,mock_b64_data" + assert human_content[1]["type"] == "text" + assert "Step 1: Opened browser" in human_content[1]["text"] + assert "Plan: Find capital" in human_content[1]["text"] @patch("artemis.agents.outputter.outputter.get_llm") diff --git a/tests/unit/agents/test_planner_node.py b/tests/unit/agents/test_planner_node.py index 9fabb1143..9aef9a384 100644 --- a/tests/unit/agents/test_planner_node.py +++ b/tests/unit/agents/test_planner_node.py @@ -82,8 +82,8 @@ async def mock_astream(*args, **kwargs): human_msg_content = messages[1].content assert isinstance(human_msg_content, list) - assert human_msg_content[0]["type"] == "text" - assert "Goal: Test Goal" in human_msg_content[0]["text"] + assert human_msg_content[0]["type"] == "image_url" + assert "Goal: Test Goal" in human_msg_content[1]["text"] def test_validate_plan_format_single_sourced_status_alphabet(): diff --git a/tests/unit/agents/test_precondition_pixel_target.py b/tests/unit/agents/test_precondition_pixel_target.py index 99ddfa20a..a3a5851ae 100644 --- a/tests/unit/agents/test_precondition_pixel_target.py +++ b/tests/unit/agents/test_precondition_pixel_target.py @@ -28,7 +28,7 @@ def _texts(messages: list) -> list[str]: return [part["text"] for part in human.content if part["type"] == "text"] -def test_named_control_target_block_precedes_images(): +def test_named_control_target_block_follows_images(): item = { "action": "tap", "coordinates": [1001, 718], @@ -45,14 +45,18 @@ def test_named_control_target_block_precedes_images(): assert isinstance(messages[0], SystemMessage) assert isinstance(messages[1], HumanMessage) - first_text = messages[1].content[0]["text"] - assert first_text.startswith("[Target]") - assert "Kind: specific UI control" in first_text - assert "Label: 进入全屏模式" in first_text - assert "Resource ID: com.google.android.youtube:id/fullscreen_button" in first_text - assert "Class: android.widget.ImageView" in first_text - assert "[922, 655, 1080, 781]" in first_text - assert messages[1].content[1]["text"] == "[Image 1 (Reference)]" + blocks = messages[1].content + assert blocks[0]["type"] == "image_url" + assert blocks[1]["text"] == "[Image 1 (Reference)]" + assert blocks[2]["type"] == "image_url" + assert blocks[3]["text"] == "[Image 2 (Current State)]" + target_text = blocks[4]["text"] + assert target_text.startswith("[Target]") + assert "Kind: specific UI control" in target_text + assert "Label: 进入全屏模式" in target_text + assert "Resource ID: com.google.android.youtube:id/fullscreen_button" in target_text + assert "Class: android.widget.ImageView" in target_text + assert "[922, 655, 1080, 781]" in target_text assert any("Original Thinking" in t for t in _texts(messages)) assert any("Action: tap" in t for t in _texts(messages)) @@ -62,7 +66,8 @@ def test_coordinates_only_target_is_labelled_as_surface(): messages = pp._build_messages("SYSTEM", _PNG, _PNG, item, state=None) - first_text = messages[1].content[0]["text"] + blocks = messages[1].content + first_text = next(b["text"] for b in blocks if b.get("text", "").startswith("[Target]")) assert "Kind: coordinates only" in first_text # No hit test runs any more: the block states that nothing was recorded, it # does not claim the point was looked up in the UI hierarchy. From 5d50d3a1f446f1e281e34691dedc03594bccddac Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 16:19:48 +0900 Subject: [PATCH 20/45] feat: mark_done completion affordance; all-resolved plans terminate via settlement --- artemis/agents/operator/prompts.py | 6 ++ artemis/context.py | 3 + artemis/graph/graph.py | 19 +++++ artemis/tools/done_tool.py | 94 ++++++++++++++++++++++++ artemis/utils/plan_grammar.py | 15 ++++ tests/unit/graph/test_exit_settlement.py | 42 +++++++++++ 6 files changed, 179 insertions(+) create mode 100644 artemis/tools/done_tool.py diff --git a/artemis/agents/operator/prompts.py b/artemis/agents/operator/prompts.py index 986a29a6f..d572ec91c 100644 --- a/artemis/agents/operator/prompts.py +++ b/artemis/agents/operator/prompts.py @@ -791,6 +791,12 @@ async def __call__(self, builder: PromptBuilder, state: State, ctx: ArtemisConte ) else: lines.append("No milestone is marked in progress — mark one `[/]`.") + lines.append( + "If the goal is already achieved on screen, settle the plan and call" + " `mark_done` — do not take further actions. If the goal cannot be" + " achieved (e.g., a required app is not installed), mark the" + " milestone `[!]` blocked instead of searching indefinitely." + ) lines.append("End the turn only with a Turn-Ending Action.") text = "\n".join(lines) if builder.human_footer is not None: diff --git a/artemis/context.py b/artemis/context.py index 57360c8c8..d07f1f9e6 100644 --- a/artemis/context.py +++ b/artemis/context.py @@ -147,6 +147,9 @@ class ArtemisContext(DeviceClientAccessors, BaseModel): """checkpoint_id -> number of verify-fail repairs already applied.""" assert_halt: bool = False """Latched by an assert failure under ``assert_failure_policy='halt'``.""" + operator_done_claimed: bool = False + """Latched by the operator's ``mark_done`` tool; consumed once by the + convergence gate, which routes the claim to terminal verification.""" final_check_attempts: int = 0 """Number of final-check passes already executed at exit settlement.""" diff --git a/artemis/graph/graph.py b/artemis/graph/graph.py index 499739110..3abbedbc3 100644 --- a/artemis/graph/graph.py +++ b/artemis/graph/graph.py @@ -68,6 +68,7 @@ run_adb_command_wrapper, ) from artemis.tools.diagnostic_tool import ask_diagnoser_wrapper +from artemis.tools.done_tool import mark_done_wrapper from artemis.tools.explorer_tool import ask_explorer_wrapper from artemis.tools.index import get_tools_from_wrappers from artemis.tools.scratchpad import ( @@ -913,6 +914,15 @@ def _terminal_route() -> Literal["exit_settlement", "end"]: logger.info("Plan validation failed, returning to operator for retry.") return "continue" + # An explicit completion claim via the mark_done tool routes to terminal + # verification regardless of plan-ledger state. The claim is consumed once: + # a failed settlement returns the run to the operator, which may claim + # again after acting. + if getattr(ctx, "operator_done_claimed", False): + ctx.operator_done_claimed = False + logger.info("Operator claimed completion via mark_done; routing to settlement.") + return _terminal_route() + file_path = get_note_file_path(ctx.data_engine.base_dir, "task_plan") if not file_path.exists(): logger.warning(f"Task plan file not found at {file_path}") @@ -942,6 +952,14 @@ def _terminal_route() -> Literal["exit_settlement", "end"]: logger.info("All subgoals are completed, ending the goal") return _terminal_route() + # Every top-level milestone settled with at least one [!] blocked: the + # operator has declared the goal infeasible. Route to settlement so the + # final check arbitrates — it either repairs (reverts a subgoal to + # in-progress) or ends with a blocked outcome once its budget is spent. + if snapshot.all_top_level_resolved: + logger.info("All subgoals are resolved with blocked items; routing to settlement.") + return _terminal_route() + return "continue" @@ -982,6 +1000,7 @@ async def get_graph(ctx: ArtemisContext) -> CompiledStateGraph: run_adb_command_wrapper, manage_task_wrapper, ask_explorer_wrapper, + mark_done_wrapper, *HISTORY_TOOL_WRAPPERS, ] # ask_committee does not follow the Operator's pre-decision / turn-ending contract. diff --git a/artemis/tools/done_tool.py b/artemis/tools/done_tool.py new file mode 100644 index 000000000..2d78e19d6 --- /dev/null +++ b/artemis/tools/done_tool.py @@ -0,0 +1,94 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Any + +from langchain_core.tools import BaseTool +from pydantic import BaseModel, Field + +from artemis.context import ArtemisContext +from artemis.data_engine.trace import trace_langchain_tool +from artemis.drivers.base import BaseDeviceDriver +from artemis.tools.base import ArtemisTool, ToolCategory +from artemis.tools.tool_wrapper import ToolWrapper +from artemis.utils.cython_compat import CyFunctionDetector +from third_party.mobile_use.utils.logger import get_logger + +logger = get_logger(__name__) + + +class MarkDoneArgs(BaseModel): + """Arguments schema for mark_done tool.""" + + model_config = {"ignored_types": (CyFunctionDetector,)} + reason: str | None = Field( + None, + description="One short sentence stating which goal evidence is on screen.", + ) + + +MARK_DONE_DOCSTRING = ( + "[SHELL] Claims the task goal is complete and requests final verification.\n\n" + "Call this when the user's goal is already satisfied on screen and no further " + "device actions are needed — including goals that were already true when the " + "run started. After this call the checker verifies the screen; if verification " + "fails the run continues with feedback. Do NOT call this while actions remain " + "to be performed.\n\n" + "Prefer this over taking more actions once the goal is visibly achieved." +) + + +class MarkDoneTool(ArtemisTool): + """Structural completion claim: routes the run to final verification.""" + + def __init__(self, category: ToolCategory = "system"): + super().__init__( + name="mark_done", + description=MARK_DONE_DOCSTRING, + args_schema=MarkDoneArgs, + category=category, + ) + + async def execute( + self, + driver: BaseDeviceDriver | None = None, # pylint: disable=unused-argument + ctx: ArtemisContext | None = None, + reason: str | None = None, + **kwargs: Any, + ) -> str: + r = reason if reason is not None else (kwargs.get("reason") or "") + logger.info(f"mark_done called — completion claimed. reason={r!r}") + if ctx is not None: + ctx.operator_done_claimed = True + return ( + "Completion claim recorded. The run now enters final verification: " + "the checker will confirm the goal on screen. If it cannot verify, " + "the run continues — do not take further actions in the meantime." + ) + + +mark_done = MarkDoneTool() +MarkDone = MarkDoneTool + + +def get_mark_done_tool(ctx: ArtemisContext) -> BaseTool: + """Exports mark_done as a LangChain BaseTool.""" + return trace_langchain_tool(mark_done.to_langchain_tool(ctx), ctx) + + +mark_done_wrapper = ToolWrapper( + tool_fn_getter=get_mark_done_tool, + on_success_fn=lambda output: output, + on_failure_fn=lambda err: f"mark_done failed: {err}", +) diff --git a/artemis/utils/plan_grammar.py b/artemis/utils/plan_grammar.py index 374eef74c..4f786039c 100644 --- a/artemis/utils/plan_grammar.py +++ b/artemis/utils/plan_grammar.py @@ -102,6 +102,10 @@ def is_active(self) -> bool: def is_done(self) -> bool: return self.status == STATUS_DONE + @property + def is_blocked(self) -> bool: + return self.status == STATUS_BLOCKED + @property def is_loop(self) -> bool: return bool(_LOOP_TAG_RE.search(self.text)) @@ -155,6 +159,17 @@ def all_top_level_done(self) -> bool: top = self.top_level return bool(top) and all(i.is_done for i in top) + @property + def all_top_level_resolved(self) -> bool: + """Every top-level milestone is settled — completed or declared blocked. + + Unlike ``all_top_level_done`` this includes ``[!]`` items: an + all-blocked plan is a terminal state the settlement/checker arbitrates, + not a reason to loop the operator forever. + """ + top = self.top_level + return bool(top) and all(i.is_done or i.is_blocked for i in top) + @property def continuous_top_level(self) -> tuple[PlanItem, ...]: return tuple(i for i in self.top_level if i.is_continuous) diff --git a/tests/unit/graph/test_exit_settlement.py b/tests/unit/graph/test_exit_settlement.py index 80a897e15..bed9c2aa2 100644 --- a/tests/unit/graph/test_exit_settlement.py +++ b/tests/unit/graph/test_exit_settlement.py @@ -62,6 +62,7 @@ def _make_ctx(tmp_path, **setup_kwargs): ctx.checkpoint_attempt_seq = {} ctx.checkpoint_repairs = {} ctx.assert_halt = False + ctx.operator_done_claimed = False ctx.final_check_attempts = 0 return ctx @@ -164,6 +165,47 @@ def test_gate_explicit_validation_failure_still_continues(tmp_path): assert "Plan validation failed" in logged +def test_gate_mark_done_claim_ends_when_nothing_to_settle(tmp_path): + """A mark_done claim with an incomplete plan and no check items routes to + the terminal path — with nothing to verify, that path is ``end``.""" + _write_plan(tmp_path, "- [/] Create alarm\n") + ctx = _make_ctx(tmp_path, disable_final_check=True) + ctx.operator_done_claimed = True + assert convergence_gate(_make_state(), ctx) == "end" + # The claim is consumed once: a bounced settlement must not re-route. + assert ctx.operator_done_claimed is False + + +def test_gate_mark_done_claim_routes_to_settlement_with_checks(tmp_path): + _write_plan(tmp_path, DONE_PLAN_WITH_CHECKS) + ctx = _make_ctx(tmp_path) + ctx.operator_done_claimed = True + assert convergence_gate(_make_state(), ctx) == "exit_settlement" + + +def test_gate_mark_done_claim_yields_to_validation_failure(tmp_path): + _write_plan(tmp_path, "- [/] Create alarm\n") + ctx = _make_ctx(tmp_path) + ctx.operator_done_claimed = True + assert convergence_gate(_make_state(checker_success=False), ctx) == "continue" + # Rejected validation leaves the claim latched for the next pass. + assert ctx.operator_done_claimed is True + + +def test_gate_all_blocked_plan_routes_to_settlement(tmp_path): + """A plan whose milestones are all [!] (declared infeasible) is terminal — + settlement/final-check arbitrates instead of looping forever.""" + _write_plan(tmp_path, "- [!] Open App Store\n") + ctx = _make_ctx(tmp_path) + assert convergence_gate(_make_state(), ctx) == "exit_settlement" + + +def test_gate_mixed_done_blocked_plan_routes_terminal(tmp_path): + _write_plan(tmp_path, "- [x] Open Photos\n- [!] Open App Store\n") + ctx = _make_ctx(tmp_path, disable_final_check=True) + assert convergence_gate(_make_state(), ctx) == "end" + + def test_gate_assert_halt_terminates_mid_plan(tmp_path): _write_plan(tmp_path, "- [/] Create alarm\n - assert: toast appeared\n") ctx = _make_ctx(tmp_path) From f75b596ae54757013284bcb9742650ecfef1507c Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 10 Oct 2026 16:19:48 +0900 Subject: [PATCH 21/45] =?UTF-8?q?feat:=20console-guided=20local=20model=20?= =?UTF-8?q?setup=20=E2=80=94=20readiness=20card,=20managed=20pull/serve/st?= =?UTF-8?q?op=20endpoints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin_console/routers/system.py | 186 ++++++++++++++ .../src/app/pages/home/home.component.html | 83 ++++++- .../src/app/pages/home/home.component.scss | 95 +++++++ .../src/app/pages/home/home.component.ts | 34 +++ .../src/app/services/system.service.ts | 97 +++++++- .../diagnostics/probes/credentials_probe.py | 5 +- .../diagnostics/probes/local_model_probe.py | 85 ++++--- artemis/resources/config/artemis.jsonc | 3 +- .../test_local_model_endpoints.py | 233 ++++++++++++++++++ tests/unit/core/test_local_model_probe.py | 131 ++++++++++ 10 files changed, 917 insertions(+), 35 deletions(-) create mode 100644 tests/unit/admin_console/test_local_model_endpoints.py create mode 100644 tests/unit/core/test_local_model_probe.py diff --git a/apps/admin_console/routers/system.py b/apps/admin_console/routers/system.py index c8ce18343..be27dbeef 100644 --- a/apps/admin_console/routers/system.py +++ b/apps/admin_console/routers/system.py @@ -16,6 +16,7 @@ import ipaddress import os +import re import secrets from urllib.parse import urlsplit @@ -624,3 +625,188 @@ async def _shutdown_after_response() -> None: "message": "Artemis server is shutting down.", "pid": os.getpid(), } + + +# --- Local model lifecycle (artemis model pull/serve/stop) ------------------ +# +# The console surfaces the local_model_endpoint probe's guided actions; these +# endpoints let the user run them without leaving the browser. Each action +# spawns `python -m artemis model ...` and streams its output into a capped +# in-memory log the frontend polls. + + +class LocalModelActionRequest(BaseModel): + """Payload for a local-model lifecycle action.""" + + alias: str = Field(..., description="Catalog alias or org/repo id (e.g. gemma4-e4b)") + port: int | None = Field( + default=None, + ge=1, + le=65535, + description="Serve/stop port; the CLI default (8080) applies when omitted", + ) + + +_MODEL_TASKS: dict[str, dict] = {} +_MODEL_TASK_LOG_LINES = 80 + + +def _model_cli_available() -> bool: + """Whether the ``artemis model`` command group exists in this build.""" + import importlib.util + + try: + return importlib.util.find_spec("artemis.interfaces.cli.commands.model") is not None + except Exception: + return False + + +def _task_view(key: str, task: dict) -> dict: + return { + "key": key, + "action": task["action"], + "alias": task["alias"], + "cmd": task["cmd"], + "status": task["status"], + "returncode": task["returncode"], + "started_at": task["started_at"], + "log": task["log"][-12:], + } + + +def _task_snapshot() -> dict: + return {k: _task_view(k, t) for k, t in _MODEL_TASKS.items()} + + +async def _drain_model_task(task: dict) -> None: + proc = task["process"] + try: + if proc.stdout is not None: + async for raw in proc.stdout: + line = raw.decode(errors="replace").rstrip() + if line: + task["log"].append(line) + del task["log"][:-_MODEL_TASK_LOG_LINES] + rc = await proc.wait() + except Exception as e: # pylint: disable=broad-exception-caught + rc = -1 + task["log"].append(f"task monitor error: {e}") + task["returncode"] = rc + task["status"] = "done" if rc == 0 else "failed" + + +async def _start_model_task(action: str, alias: str, extra_args: list[str]) -> dict: + """Spawn `artemis model ` as a subprocess with a capped log.""" + import asyncio + import sys + import time + + key = f"{action}:{alias}" + existing = _MODEL_TASKS.get(key) + if existing and existing["status"] == "running": + return _task_view(key, existing) + + # ``stop`` is port-scoped on the CLI (no positional model arg). + cmd = [sys.executable, "-m", "artemis", "model", action] + if action != "stop": + cmd.append(alias) + cmd += extra_args + try: + proc = await asyncio.create_subprocess_exec( + *cmd, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.STDOUT, + ) + except Exception as e: + raise HTTPException( + status_code=500, detail=f"Failed to start `artemis model {action}`: {e}" + ) from e + + task = { + "action": action, + "alias": alias, + "cmd": " ".join(cmd), + "status": "running", + "returncode": None, + "started_at": time.time(), + "log": [], + "process": proc, + } + _MODEL_TASKS[key] = task + task["watcher"] = asyncio.create_task(_drain_model_task(task)) + return _task_view(key, task) + + +def _require_model_cli() -> None: + if not _model_cli_available(): + raise HTTPException( + status_code=501, + detail=( + "`artemis model` commands are not available in this build. " + "Run the shown command in a terminal, or manage the model with " + "your own OpenAI-compatible server." + ), + ) + + +_MODEL_REF_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9_.-]*(/[A-Za-z0-9][A-Za-z0-9_.-]*)?$") + + +def _require_model_ref(alias: str) -> None: + """Reject aliases the managed CLI could never resolve. + + ``resolve_model_ref`` accepts catalog aliases and ``org/repo`` ids — the + same inputs ``artemis model pull`` takes. Anything else (bare junk, flag + injection like ``--port``, or argv that doesn't look like a model ref) is + refused before a subprocess is spawned. + """ + from artemis.config.local_models import resolve_model_ref + + if not _MODEL_REF_RE.match(alias) or resolve_model_ref(alias) is None: + raise HTTPException( + status_code=400, + detail=( + f"Unknown model '{alias}'. `artemis model` accepts catalog " + "aliases (see `artemis model list`) or a Hugging Face " + "'org/repo' id." + ), + ) + + +@router.get("/local-models/status") +async def local_model_status(): + """Command availability plus in-flight/finished model task states.""" + return { + "commands_available": _model_cli_available(), + "tasks": _task_snapshot(), + } + + +@router.post("/local-models/pull") +async def pull_local_model(payload: LocalModelActionRequest, request: Request): + """Download model weights via `artemis model pull` (long-running).""" + _require_loopback_request(request, "Local model lifecycle is local-only.") + _require_model_cli() + alias = payload.alias.strip() + _require_model_ref(alias) + return await _start_model_task("pull", alias, []) + + +@router.post("/local-models/serve") +async def serve_local_model(payload: LocalModelActionRequest, request: Request): + """Start the managed model server via `artemis model serve`.""" + _require_loopback_request(request, "Local model lifecycle is local-only.") + _require_model_cli() + alias = payload.alias.strip() + _require_model_ref(alias) + extra = ["--port", str(payload.port)] if payload.port else [] + return await _start_model_task("serve", alias, extra) + + +@router.post("/local-models/stop") +async def stop_local_model(payload: LocalModelActionRequest, request: Request): + """Stop a managed model server via `artemis model stop`.""" + _require_loopback_request(request, "Local model lifecycle is local-only.") + _require_model_cli() + extra = ["--port", str(payload.port)] if payload.port else [] + return await _start_model_task("stop", payload.alias.strip(), extra) diff --git a/apps/showcase_ui/src/app/pages/home/home.component.html b/apps/showcase_ui/src/app/pages/home/home.component.html index 060a01d25..ef11bb5a4 100644 --- a/apps/showcase_ui/src/app/pages/home/home.component.html +++ b/apps/showcase_ui/src/app/pages/home/home.component.html @@ -349,7 +349,7 @@

+(_2^YKx}1IEm<4*l9wN@P56CxeB7mdd`NziBB_AEe zRed{9ZJ*udQ(2hz!@=_{CKm97H7Z`RS*o%4tvItT9MF9y}6 z=sb3h&QRFLd!~nm8o_lU4%puKp`bo}Bnb&NS1c1;sAX;3Z>mzQ-6Fl);q;)~oW@sw zP;{RaC2eGMTtx*J1~wGD^_o`xB|mij8{l(9O#PUv{=C|7JTY$%_6=Z5>Up2QquOfX z^=gD-;v8YJmJ{^zoIy@Hwf5lHAVk)&PwCJEvfGMv}KST808Ta+dCABrekh|4w?tqH)Cv?Z2+hNE5#a zGx1^@zVecG{19$yzJ5S4pVS@!7>T3CdPrU7(<@(fjH8=95M=K197snl^((*IElgK8QkHA|9*#*qW|V0+Nge22^G zpPI33lZbE&^8hWskc65KaTr~0xsV3DnideeVt-j*Mf$V`^^6C-gc$JAKh1yFvax>~Kb?^*T2GeacSb9*6?nEL1MI@srX9FDD~vD3!3 zZQDlEI61Lx+je80*iF*dwr!s9$^CwPzH2={T>rq#wFY};_AbPl4D?FMUT}F1SQ~lw z!8$g}DjU`Q)%zvRCcq)z^8#neC5i;U%1R#K+pH%LTnwG|QkQdmzcJ^Lwv}b4>yr0k z!{c;bc`Ix3T#Cu(?L|zFmM#mWH2-o;*`3JHv3t5}ufNV2g&b1(m527`CdY`Be22-=svyXE7-n34-vu;gypTFi@0XJ4X*ATzyz#CJ z+sf4~KB^|4^U9tDMnV{BtBszST-2&3y0*6urHD3Sue$=vSMQZSaZlKW9TYytvP)$> z0tGr;_=k589Yh*EgpTrgX&>l+6>~Lw144F77~yJC3zxnyJcss&$%m8oTk)}@O>O?M z%ABcu`xQ7QL1hdwce_N!44;qSUlL|$eRsrHFJ@i;DhMF#eB)bUIW7X{HI9Tnx#b%ARH@FByWRQYAZ(I|~nw`sros~PmYm>XC`+7OV?>e3% zXPbGkpp8$NI1iBdT;CKgKcVjzU;6{+#+pgS)SQMR^$2d>XJymv9qjSVog&cS5NMJ& z^(DO`agF?aO~C6SH%fzn zp&0g3O755tlZGp*;Q4noa0$LK>-KahyQ4 zYeUG|}zY8a(s#Hg*;z386DNLIp!So>RqF$Ns@X~L4md*Q&8 z2re2CJh%MeBhCjn10AWe_44m-wupH1!yx*~cfb_i<;uXrPT23@yBlMq4)hFiuJ68r zW&L{ER7=d$R4J{mu0iDUFA((dQ_sCHA)=aWiBfmgU-YfZRFi(nsfrJi!lS7L9EVhg z4{K0&gdXCggm^vCO#t)mNsp;`|CHYqR-|Rz6qG@t&)fGf!6@uUL$W;h>o_kzP`})u zLtK(3zxC7oNz2#Gq?K?r(G{o!QXb{igSkpzN%_hP)cLn0&f@bwX~wD|t`8y??NqZ7 z_=FC=oc)>oVV_uXV6#5fKQ|rg(^8GBlAeCFFEF{Jp@K`k0t3 zJ$3q%tgZ8jjm<7E#oFU?&|-H>M!IoR21d*Aa7UVxLr$r2{T;6zK1hDAM+{iZY_$Pc zj2Z3WI;R?|gta)?skUi(*zb@qNX4gCpA~^53LJO9fWT^dyt--Os04rn6biByOGG+}!Qll)nPB0y=#a-xRQ!{9Y zNhw5_dqf3}U?10e;#-2hF}Dd&4fFwq?;lqVEyVrhE>oYpLO?tUtKs+$v!>VB`qhfi$Bc?H~UvR&H@oVDUgQyQF1i^x>R!X~PR~i1+;e{<6AbF+I3p#xl^^0AXuUpRf z!DATthh7HM@&4X-uC?8hSGnORxs!pH>{IuMdO}kJrfo=OnzilJSrWVCI5IGJqf+xP zxNcq~0Q^@pL4^MRHbm*TO26Q)6pK-^l#F?-l{GvHYaa@H2>3V4iM2<9(fFlh1xN}u zg|^uuJNYc?E}({~@zLi@X!|sdziyz|t_rc$di2DA!Z7(i8E~t`Rd&0ONS+ld`g^Xv zxt;G)u5{Rjn99F(77k#5lCGmQDW`vofe~0~XY_i|s=zf&rW^vhnVCm){zaZgxGyr`+*6~4|HevDn zAy`x{*(u(UbI+~+W?k4pd?wn6eI=vrO@zh3t2P~VzZ3NHxFl?<5Sy59v;}i!dvFsr z8$N$0+jKcXnOUTf&BUn6xHzQas@toB2guZycWje2ux5!2*ffGbDuO!tW8r@X%eLGQ z0N)H#!Vl`b*I1_}o(JWe9gS)$y3^)eK#n`aB0wN%>D@qNi|E8QHuU#{ljb#Q^0_E1 z*gxccrlfCc#I4UQ4Q- z&Uq62HtK2AqoQ5T?x1!xeM@p(cy);mCEa~=ICXq|Vk$CbL!x2r^BIqJgj2i9^D8aE zd4m&{{9qnp%16s>H!8w)S*a^U@ZZjfaz_>aoEABP4@8ctsy)Fb0PvpGLi^K5y$r@i zeM!9}uIu-x@*|xe|2Oa>uHWeADLPt~7>^}GY9P10g{laH-oJBC8L`+Iv#_rjqwXF! zJ?_H2sWW@EnLkbGfFu&6i9)OBXr_`?q&Q+W6n&JG=c*)Fx z`-6)&bc6*5BK09qOV>~_xdS0=fd#OPdw*1T5zUNGeiM)y%O9i=J$L8FwCv$P5r6F_ z>6}BBrOZ$ii)S+{TR)272bmAG!y{ahG3#uqobjKPCpptt{T@#7rx9yHlaapz-l}i` zY`AXWfGqpj-YaOYodNjX>6n@zDZ16w>jc(@^s?#p(QHg;R&+ZgNS^CrJ0xhTLz~#U zFnf>!R2l92{L+$Yk3mV3#fglS%_Gu%A;BF?YXGm|+_X^4g1C)8{<0*Z#%%Ur)Nu&s z(M)2V>%Zet=*y0#HzPvR{gTv&yH-6FXwzgc? zEP;g3SQc6vrst6uW2-uJ^OAw@<{S~Tvjb-ij9GUU1EmBst5%yDsN;Tlp=mzE^6}H_ zHWZ1T5=&$s`(COOo(%ZMMom7!wK%(PRM~ySJ3l`nv2zy?Ty0iRzPo_+m75V5k{wCz zAW=zqmN9RhG90AHMBf$HZ9p48MezH$l=V|;>k(u}fr$=Xn#U8pGtiD4HP)P34B~x` zQhQ$@@yZ1mzBhO{BN7PNq>&K816qrnMnMEqJ9I3*=ml9x|Zkbes;6n zcQV+}58m-v0XUZe%AA!6r1R;?uMb}vH%`x4o44oNk3I?i5l2uR)-Q|SkTV&q8pF+P z`-4t(?%X!B?T3O=DnZu{AB9%Z!ees^HjTM5Lhtbob4 zSq{PmQ|JkOV}XC*I76@Ig4(iM8Ftx|kxQG*1{N3%cjl~5ZSBAa&)bB6MlAc(IPGMN zqZu`GuO{Ff$p_Dmp|}?F>N2OeOGcFXiV7X>#w)N7nqTeUj7rWWSgRP1gBxn@N8C@u zqV9INoKtYO{@qvK3a?lR8CgnDfvhPvx3H2Z#UW!>?p0eP#O!TvaZ%;z2LbBKt=F>% zEU_YF0sG|nwO7pCuIF^Q@S`h5Jc=4zii!Do%(Y_Q4tpzVkfTpP#B5D^DEzB|e1Pb8 za&>0@d;&B?#i>a|C(o5fA}&0~0mzGKM>A{pG5bK`GGqrP^t2(;(|Dr}N>`qsAstgo z7`+Awt0$GbIcJ(EHY*;LC<_ttZ5sZvc~u<=5coNbs)a6!FhTO`PN;-`>W_u6%@0u} zgTOICrB6E_FqVXC^B-?Mrnz>Za8y1)v800y6gEA0q@ct?7(8xg?srh?_i{;8Cx(Q` zt6VItaW6xA2=}QBESv1?BE2&DD|` zxF&+uMw@EF1rmkY(T_K)xk8=q;~hQkQwPeKt{viW{(^xiRKx%Dnj7b)^&wwqez-q~ zbYXK1Zn^yzW@J`pb+)?~I*WprDXC;Z;+^!sQbv4>UQl*Y+*^| z={{{&-1QRq4S~qhUcc*VcNfCRlxA$%rT11Lnsh!nJPy8eju;Au4PL!5U6%OmdAj4# zxbIQgV$cby#kYCx5)VcWU=r6*Hg^l!zqkT*J=7Yu*!QC*Nkb-8)-%)4wh71rW3xuM z;_pAn7?A5u*;Z;+Ds3VKXNy;oFFF3L-N0+}bNVG0-it+eOj00@aAo6w@#$6Ys%u*r zSoUJ3Dc{!U(+pY!S%%$>B{&#y*AK`Ull1E%-W>+E-TEm7_I$`RAbwzAVa5Z`Gg6gutam4vIhG7E z^5JFVl!oSXYt-=HGkGeBw^h*@UM3~7gQi+cuZ2EM>wBf$>;YQ#@t+ zG4$|vR<^hbDgi$0SoAqAs!9^Q+d?s1RyhZR@zy_Tf)zSUk*R0qVA&dW(XRi@Rw?FH zkU~(>PePJuR6|{xr>l#DHL9K?U32(!fL@kg(EJ$xaTj*!hztDHF)g(*s-{%0RrQtM zXK#EWU>eNTZsW6&fX0%;@Lz+bUBK?F7m*XZe*N0hdfMabeqL6+god^8!lLn^J{OfwHIdIH;%o7NohxUal9Dxgm|t@3J{nF`RQ=>ahsA|SlHd416Q z_!S%EHRFc-7zrLyf|)z*o-k)gK{mE$~T zwPo5t2<`cN;?L|d@<1cVWW35%40`?Ro4qrmi9LIm`B&kFWWWi9iMX(C$0^meG*p5W zwr=MlW3jQSE)u(vXQ!%P7L7|a5FC&_0qb*nxgJx~=&fbuFn(G?Vq3`PypY?8?oPMl zfme$n(RvnPc0bpFMfStGUXBnz|AQs4`s%`&XHUHJzVGoji@|QLaSD63t`>Beq0C5Ur z0x)jU&TLrSQ**N@zfxa%CRoGr5U?_wH zgjc|};TP^TZe>CTlXV_ai|Ia)QkZA8u33yNRr$y?n5TRC&=epfB^oVs9?D zUmEyJ1nwiXFQhXNcCvJvD#T~)x!esTP15Rd4!_8`39Jc^(#%C5c#>X=OVKIaLU#PT zE@}KPgxSLUUrNA~AjGF7mu`)a`@;_kto*D5|ZO$!BFQL9U!Q?>> zzAU!|W?yiF3OavainjVxugwbSdYpNq#Id#}!apbO#)`^7sp~doOi{gg27R7)|8h6` zZcf5`8`@}!utV=^*OxF?tz^&@qT#iz#!B&aH9)iS1GX5FRc|oLsk^QeYY8-rj4p}v z+&yNf7u-mHupP~KJVtSb7%MC={p3=0<#g+4vCiaF>z{Puol`H=d{UDk=Tf9x^VNU8yHFq+oW_53Y$gsPQdaueyeoYr{{%8n;^Er40nO+R6Oub`cVpIip*gR zT;3~1Vk*(1+VKEW_oi;coS#SpDvm5(2%@42t&#<*orVj)#;X^6ZmblXaGN6apGqW! z{U{FX1AO?L6kJA$8o1-Ba9aiwuOFI--KtS299Xb++8gx_rf#c7wYDPhgf>A-oYw_U ztVE0sj?Tx?QBUcCq1PH1^ay^viDm0~A8(JMI7SD8&0~e>@g2G0@GO@b+p`>%iMl!_ zz5WSzh3lH7B>n9m$NO}F=t=XE!Cgv=OX**3KEm&Y*-3#B3@Ax4*v=tKew#W!VWx~W z`$JpKs&Rc?ca7RV&cF4eSHj#!skjnal)-El<27wCIs3k3L9e^n<5%7Gk2Vo+vM4qH zT7@;LF_i=%fS}-NuwHF*OI!dv-m@Pia*B%0NdS0|r#cG!zrsQ(2wRGP4NA>fdxks( zey^t3MwcV_6vuGyI!MNe=jbU>xk*yr+07KT{Ini^7vz}xXZ)MtN+X|4K@ZeV4UgW> zm())Jra{{&oJo{mUXK)v{+hk9-R@ql5$%Y_elPX6!5#YZ`0;|Gr%`XOcD3`j_4}ZN z&cbFXXRPkrD9nMA&_+9uoCYE6Nx{{W!##gDy7igYLK1xpwhS@B|8)`zlazRjJM%Ax z3wg5%Y2H6*H*I+21@9(#+>r1%=ba8MJuoEE;ZpopIqIUG1p~P{+}3A zX8)NAM9UItg?{PU>?U*DKugjp^CB(eqxT7$!3SBQDk&MV_TV&wmhW!0IAU!NF`k|3 zm-QhVZ0}jJo<_f}5Vd9hdSxZ~)6m9{f)&m4Nv6?o#$ZZbbA1mUJ`^sHQBMiLbozFt zeC+sPkKUWgK{|%JAHsN4P#OR$nT2eg%z#fJmoC+K=p&rR@XTUNZ2xj2pr&{3qb-xb zX-6Q<`RP#lTb_VpdL(Asgkd1{?>EfcpQ9ArCzoaCRgAVn$V??;Q|rGbLpd`pYt0-H2pdwj=AQw2Mye6teCU1Hdz2LzE@%GicX>W z>*hD?-xGD5KBjhaL8eBn>?F6!xZh{lxhZg9#kS)U1o9S00IgOdD<)sA&?};x0Udrb zZpg`Ml+`1Q{GJ^>8Tt9HEA*6O(~U)-AJ6PGR!I#U7>gwp*IZCn^t z(8JK<=Ag4SkC*1(X_(uoLDr%(5)b#8BfE8#oECB6qa`?cP|^0z*ph@&*t^EI&c;Xbs=X7 zAHBBsA_aU9LpME#HzL>aicO(NQmeXI9x6qXX>sz-N>n~{5KYy*wSSeUk0%yN&4E+{ zx_ngLw4=E~Fv!ex^O|LJcDf?4`LlHbA6m61U{6ulf>8WNP;jMMa#9ej?#_9tOV_=_ z7GLgfA7Jor-|Xi%q^i~S)7L@f$?CvB`uqD&fwBtZ)HzxvK#253=$PU@Dz-0<>itzl z#|)w0n;R0r(`NT4GaSnHU(vEqj1!|Betg)AHuH|!Wf9T1oJ;xN_3S7~*Y2dp&!efP zP`2*Jkq(YEh)5ZCS9-@pyEV20+&|lOkZAvP`%DnLp!o44K94|UlLzrAVH3z{!2|Bi z^8SUS=xhfy4A*8!c_~EpMAB!p2XbkBb0}`~goJ@TwVq4Klz4mwE8kF^C6Q6~4q77~j(_vH81!|bfLUD^BR=l>P$V()Tn2AgBVW^FI`J0h_u zy~Bp=S+QM?9E6THl+LTjPJ_bX^+IM@e{%oOCHl(<*;40Xba3$4;AZUH#ti}ZBHs7p zeF$HN0S#rRktXNlu7DjbG?dJisq%#vX38bUu%D8@yOCQBMkQ}9+B%C}BJI*!`PlGP ztDtiP>|%0na?Xqt=TmG=VXn`2kFNUaXwZ=tk|7#Y~F*;nUEv#c4fexBvLXU zY)eXIlud&M6lfHljb$!2Y?U(+G`w|HdCmIA`Ui}RAP5X61*fux9ttO-3z)KiQ6%8RsP@;EqY#5kxzg&}%iH9nI2+QAQqZu`BT$2a{bjiwsFFhJ47w$ALyMm`}(T;+d z?;s7kQ+?INI|~vKX)IofmGw|^0d=kP+ia(tns&m3@;OZYsdU;R^2pB^rmrCzl*uZe z0)vi(O{%-}Wa&azT&vr0xU>2w-iq^%ogQafl|o;5(-Aq9@6#?{i-Av4jam3kQ~RUW zfThruNyYX(Zqkrp51&)XF4j&5PxvAJk^onQjz_;NVgOW5_jFl zt%LJ@u1|TPWPz8hrm|QW@nYVG(;mt>*e>fb1gRinS}34{1~-m)uoawQYVn+ZsW#IX-=20YypXbSoEtSf>)~A^7k62Dk&ha>8I9_mce@OPcDUdJ zE^ib4@J`ZtC>;92c2++$|tTi_$-Ly0zk0Dr(VrQP@X46DrpZz}7 zE!)igAT2M{aVJwrL>@B#@5pCobWf3J$8%?(WZtOq*&VqB&$;(GS3;886!w0>(Y4C0 zSacszn-lfu4!ghXYlS%V$-xNz4wW_PG(iZW-gOP+j^kY#%Y&4U8ag; z1fD;$i(scsmlObo=$5)gT!}(_@VzF&Xs`cf{rtzyqx{HRaY@WcM+qj3s4zOg;2S6O zI59Uo><#o(U3DB2f8y zO<24f$1p*82env}i{`w+%102EExekQ9U9i+!VSCgTvcwq&aH1x7`2m9o2G zQ^t@`j`;_VZ^5fE(pmak;rxS4!h+_*d=8ALUdP&e{}x7b^SfHPZvJLHL;3cY&XMSu z>Qbf}yOM^oZjHbwjwRe?JCQo`J%vxtU1J)WsCUn_opp{L8rw2ndJTlP zUk-hAM7}H!6j5`%#AsB`z|3XBaLtyOBHMKpQy^AfynLzO$h86%tPAX!{QT3eXPDP; zTPm#*urMr*!VvC@KsMzs_)b?U-@%%_TKA<>Eu^51eSo)7WA>?rxw8*DmOfZDb~C2t z^Q4{y3z1|J^-bk7qb;=N{mi7#UsZM>ij#06_HOwiR)+}d>liKnwg3FVPMOHr66VRt z{%mZ;EI#w>$6U@57l68W*sR+}xhi7o z_SFmtB|BaN!wawRYXO_16uA$dn?n?T=T2cxxf?WZ^nCe2_DPqW55K<85?z|XRc%6E z0;v%XTt|3f-GL3D_A|#E4&(sIeF%EtMI0r@_#GS?Wr_R{EQfaWL)yZvT_dJrIcbfB?H@oC4cNY6ym5J2`lWN*CUt(l41w)_QB)Guck1C z8d`CQno`L{AL-^O!twGHtGlG(mIG)SpYC(5JfdE{J2jS^_u)g(QR_ z7G(uwF)Sgwtf+-lyk#b+Ltu#5gZ;x~V&y#Z5`DK{(hPJJfrw)KkO2YV1TM%{Ee5p= z1&J)e5|P3>b_nfbiY1o}TE zh#2_^HhXRQov{Qi(Q}3)T5~QZ^3~Av0>IB(jWn=q-4(clx0FHU^K}Fm0+PIQ(pxU4 z(=S*ZMtj=!^Ethxe`&DyJNW2wM&KCA6~nsFUH7U<(0^ZA3L*iDCmYI$C4xSvoUUvl zdNFIMqH7=tkfA+5A)>>;Y?a+9771zo9rD}=&Wxcpwwxk&4o72r3PGoaInucs6=yaR zo285)F0IGWZ?fXg9HnlNdFzQUsHH`#Nz+2TleUY4#yk!$zHV&Z=Gu89L=v-vB~@tH zbD!l>VHGKVT5ZPChE)~EME8W0I5+@BMrqWB0?cZ=_;*GKs2z6rkrXwQ{=^eG!_96U*_7D5^o65jz=EXIY)&Aqo%hm9VY^?vELYx2GN+<`BzIlqY)SQLk z5A3(wp&HUi^i7Z8_btiJ0G$(uKyosHi%M3a$j)YBt*Z2gS+QL`Y~B@uD{^! zH|a!m*ywS;05VzqsO6V^nb_xTrPdWw`6uUA&CRc@eL4C-oN99oDSezBov=Y5VS1 zV>E(;pYTnYP^ET;GIK-s@sKAs2ebq_#9xpUp)v$$FhbBEK{~6)wPU0RCT3N}mv6`zZ1gjKI>)Y{?@%8 zsxc@pOMf=u zlR*8cv#OLr@$3&{7|7bx%ORud{)19RF9l(gYvMBnHWbpb5*(4=-T6UDNll`1(XQCH zYizk5(;Pahz z%9D&KAUV}elvE7^eG=`=uPWu><)JNpqe>L|?@MbZ`CkAV=9s+eXhqKPYV;?_a$YM4 z$&r&pwvV3A8TkQ3T)j)O9&q%ZQk&G8IJvMMWEj=ojumLla`iT?r3LsCW<=g0i1epP!OcI$z>wz4iP>B`y!o2G>9hHQVziq+ z4U+o3%r}U|an^hA-w!`8^0f`$Zli1eSc&eoT<7_8_m`Zgvc!FWDu4c3(8z0V(dR;+ zn&8WC!^RQ{hXK{Ab?SpWyYX*@wNZfg5``f;LBh(6Y|li``^I-{}wVf~}9l4f_7+L*s0{ zz;QtY1^8NmYdjYORiow4! zA~k{0jhbQY^nN*Hja!y*0^Rbh2o%YLw~I-GIa~44=4BZaOAlv4GmE`7cNja2JY>z> zaPTDo#MlAVPqKZ~7(X&Bk)yb+TOeHHT-3dr9|YN{gvscgut4KW}jm})(KaUZ|MY0B^9C6cP+C~ zS9ba854@`1eEN?})Mvsie;$Vo`^Z^G4k^hSWVGGBDxvgf`#o1*{3$KS&3p#X>*;Eb z>{YC+O5xvms<;e@Rpbv_yv3SUy%x!QtGrffIf>^N_?o;b+1k=qYc~!RMkOXd{eTxk zUxp#~cVL_H`{P+D1%8@Vo0tf3s*iG%5j##{&}@fTy`d#9UsdP;4H-?+6$v_v+*<7r ztYztyfph}@>^nMA{mI*E(vyX=e|X?^8!2;cGv4=ns7LHq&#cpY5J4p){uOzq`^ZQh zBa1{5G_rf^Pn!o9yFMc2{I+1%0`gmc^eRLoj_5MIT zF7|!9<8E>mj~N-^zboQ`QY)t-_O|z$cX)4kT%jy7E(~?#vxoee}yiSi!wIU z>`5`mywOJDBii1k?t(LvZW6`x!@W5iR$bGGWd%|o#lEBOzt{SjHO785^#A$vmr_`ffv`TuZXQvwD+`zwZ#XG4>nE9qjRX=kRbtBwpcU&6&B z9;Rajy%ie{@!ZD_APbM9m@WagO@Su$F9vX8ww@1@i6IUphJV?MMr0Mzs9J z4=UZRo2tI0^V2+RD8kqElAHG%+u-ufb@L%2^z4?uLKuf}V7BY}1cM2@?WQVvw=-CT zkNX9^u6)3JngECsnP;}&nmW#iS-KMOeSwu}^(p`@{TJ&gEeE?GC#Ud5yFYIAalGD) z(gS_$)w|52wujXrZwDe!AE5<*w>pfu7ZyM*oQq3durR|eRspMc$srjJtY*7fp7w`w zi0I@$zswO%R%a_iLdluJu2?>HJk1}be3e_TOGNy#6kVK=f^nd7)v!z-^Z82VeJ=C& z*+1fddC;(`X6GVC`7<+4KK7|TpnU=B9t*YYXOT0o3hL2n|&czQH45VZlq1(5NoQY2#~Wk<$H0)JAOtNQw}8ZRK~#zlZNHl!uJZ#*jNdETFc#OBoHOhO)-8PBKqqWnCSRnQ``0_eWMQ z8Fmnb{W1)0*} zt$oaTu#^rl`8Y2jxvz2Hxm$LAqLZWZ#Fq*hnaS!TKsZjr#CI2_o zWu3t!lZjQ0Vn8B6yQ@#7Na_BNjv186$zC!rQwrX)xEi?(eCoXvPqu@EZ+g7Igf2%R zqxyXrL?wC><-xQ7Yn)u^!I>Yqc*$b)sEK*OVxc-PA(UcpYL3==stbERlMH)0OjBb^ za?a*~&I`nnRZOd`GHKg6qd9~?YZ>d3Z1}aphshL*lFbn_)!HyQPjjrO#*}!P88-L1 z`4)VDa8%%Q(?;cvZ?MJWkAM&g@ML?q8Z<1cI9kv`c45nRqxN}CpGn?ojik2P|Iz=L zVtK#&szHdP-Fa?pWq~Khf7@Lg@eZp*x)d~qukLUK$N;{qPWkkDRVRqPsM_WeodUWmzU}m#>8oZ9tQ+~ z-DX3kcG7@)k88-WE4c@MZ(Q7SN`6* zM>Uunt=S^tpfz+a8lQLa0CT9}HOm_rxERV11Xsz5sTsB1`xjPjoDz`>Ga`9a_{zM^1 zbf)h*e633U5(TR=UpU;=u7gO*4-@6~m!(S@*}JDWo_hzFE~uGl3hGf+v}nljZJwS# zTZO4So(TBMm2X&Vf%F^0`tG=)Bj$I#@WdU}cw}}w{IMEb%e+NR}OwzaAmtvnp z)xO!!aN2ViGDGzldyTtZ1#BW_H!q}{1H;)4JZa&uW}YmE#s}^A8GA0P8St44;}Fxr zV%De>V;3~;sz7;ddIEGFyMH6d!VbL%3f2B!k;Dy;;WC^Nv4V_gCeBve6P|Xf*gt2%|2=@5 z(axE#*rxH@WF9KHqJ)IdY*b6alBIqOF&w34k=#9YZqyhKLc&yxw$%m~-bU#Yh&~jP zCDtmC{(W7;Vod6wpgv)e{pdp4OkCDfOkEsyHqQ5^2DRIxu|?z*&i9T8iObqr=E{qz z*1@MP+}9ga#Bkn>dq=Lnq;}YU9xTA^{oS^%*d>3EmDRJU1(OAa8RGvXPy7TS17FS$ ztLi6{AG#X?R(U(jRSw~AEC%%1Hp|xD9^?O8u9{-ZbRg9h09frHMz~s7*p#|q4aEv_ zC?v=J*Cu@dju;DhBs=O7bLy!hltobOyl90Q+7S(jMVef`80Yw z_K(-u5&-Qar{~VwhgffBmjVT3R~_RVP6_)aNj%Ea7@4`G9HW+j#{scwn~R2DWJ!8C zG*?DQR;q}Pcp1*64xLylPj!vOdk<##VJ*(D`D_D#UzPd#FoWkyt*O8I`lyupjP*XQ zdZQi1DO%r^FuJbUP&pXfTm}9=E&xEjQ3%EZI0<)lpBb|k(hf( zTUXp=v)~fC4Ids`!#3w;PY`}0vBaAEQum(v>-2~0bhIpRs=Cb=w5(V%$9drOKDSDlV#G|xbAkQ19e@>t8cG?2R+2q z;~7{&l{klu|O<&)C|q~E{j?12RloR-6PRyDIqk@fZwf1 zu45VI;=>YjB@?>`-!yu-)v#Sk(DdOd3Q=HR7CDvlQ;4pMRZAe|Xq2i)t+AH^=Pa3{ zNM+_7QMo&4fh-BJOG7|Kmqpi>u3{1Erib53;E^hg**ZWL3~~zxXUiOOZM!HZ`(%{* z>v=)(A?Qe5XuO}eR9g(pX?tn_4BWn_2a zS>CuvNz>f?kxtjL7zC4A2HEWQInZn;sFR{@qfVNqfU~bxcNGnh-vSMlxx#J{qCn9Y z0xja*rN>R$&pdJ)_|+G#+XNR}#R*f`ud|S1<^RtUMd(yCCzPTTq4I77wr1KGnENv= zD9p5Gpm;DMjd6CbO_j{2!KJEU?FU}XI;&<#G-843wAyM5`-N1P)z!Kb$INs}!;xUZ zuwyDp0#!h-=wc{mV6_RfRXB2ncT{BsV$}Q8%$bnJt9VHm*RQTc&qg zMQ)uP-9ysZ+4%v7nq}Z_QNPXd<*=#39m>w^7kOO*h(Wg#Rch!j3$Ee2u6-pmF&ilJ76OGU`U(u z>1GP^pSYg-^q$tN)t#$>XEczJyQ#sgxi7S3k@x=$s$&S@E+rp$MC$RQ`|cs&#e+y4Z7Wpi(W6GRtB2!%X9pFD`b- zf6*e3w$Y#ozPY-!NkrK<)4?P!Q0-vE49)hZJ-$%%5ezd%BfaAn#ac)$mCju_ZZ1mp z7_{W|^Dy!uDuh|!c0VB)Hrv=v7$6i^uf>trZfWBFd?l$zt~v2*4K}mld(CoS)quLB zvN6&7iRKm@=ImPu^!FPm6q+2{vxz|0 z8FK}ddqylj*|`m4{I=a4X8+RfbVEHEr^E4r(DvhtPWrU}D>r(9)B)=p02|}x#klTf z(P;l0Gcj*c<`uy6yuf@6p`PoXRXs^g!H)=JD`tJY_&qyGwfz-Y&beV(4oi;6|1}EJ z-RNkqa8AGNU`of+1)YYPTga|fL|H0hb94~P1HW;$Jz^6mBf&wrC`ng2S;N9|q~AjP zQ-EFmI}xgei{0{$pmLEhM@x*$A|O=hCTU%_=bn;YMrmL<2B|eP%I~H|#f1#Z*|}ULno=p57L`g}Ue<=2BL1l>0+7-=j2joc$XICV zUk3ohbjaaHYMsIS2!#{K3WE19y8zU6I73m+g(A19scA_euJj$iB*5?Yg9l<5^OR&C z3^Y8yiKeDFT`<{EAv5~rYO39=xpzB)zTdVk+FyvaY<&{DTBIn+>nq}|+m|@l2p8ydXZ_p^P<+v)>RS516dmrFt_BT*BFujb()L9xu-ml+!zZr4mG z%57~7(eUd^A}J{;_ao;X3}iA*)lhhNcouV|@{Z8f8eD)?7K<+S=FKqF)rOBhHBt~4 zq~OsW(BhqVSTgKwKPyzMzVzYab|zhpi3a{Ca%=30fX>A4zZTBS*@r5Ny)20ysHpd` zO}QNp4miHoU<>HUNE0R;5FDx}=SlJ+?PC5-r_@@?db>&bS_<`tV!|@gvpB2&!(Lpw zr>&pk$L?!=9qZnd12qp!z|&UDuwJ?5gLx zzH=V&@1s%L@eC$MVjo+FI+Ilk)vWvdk))HaK^r-@kRY&ifkZZqzKlC>Qa;kq!QtCQ z$J2c=fR}gH^z)gL|9#wv&2ks2{eBm5BXzRp`jf2ZPGRmikT~xw)r_^?^8v4Y zyHK_`Qr|UKLXf-G_H^QR-j6Txlf)FEmfWA^u5+`$X6A-yX~xScCpU8@dq8HyabX|a zLH|Dh;6NY0PC059+J5+UK6qHBFrT+0?psMWKe5DDymn(P;p$h8mm$f8V|VIJug~+g z%Y$kTpR~c~_u9j3;g5$9!LufT`yYCU-hA^N z+H?2a=-eNkowa(h!T8oY?xOh%7Sb`t96=`@cU(5Ah!=%PwimJQ+5U>5$rNIk`p$nz{`SgW=$D#M=R&*W57M``Pe5X3r-$cw~*piYG<;GO1+?0XlgP7ZajVZ zbb8~tN5rw^^-`qj3_cj3tc9M=J<)rl1Juz6kD)v6x}9ckIoV~?M8&iz{~)T!`%GYa z?>xnnIXrB>$_EIQ{VM3d5jWAIMMR6pI2#Nh(bTDfHR-g^&6 zt=d5tlC^cU^4#<+EA#PQy=IMD?^i3V)r&r?C=*GbYf2!$sGM^1ig__^_E#(JG`^Bb zit~BCRN1l3@u08*#qy+qp-TKfSPcEhUt^OruuYA0mzO~P&q<8?SqI*6~9bQTw zEcUjg*ETfKhU%@_r3>QebZ87CypQAB^+Cc^lwWt$X5A=4RC5U6OLsF z3yqD9a-Ztkc=d2tTT+GT7>hncq4P>WtQ56p*wJKWw>+;kCJs+=F-Lc^UYg5u86Rk% z0i~fevJl${a3(hPSFWM8>vGD1^L^xV*)C8xIBHt?ftfw8*R;l_6&>-{C#57B=-ddK zOsHZ2N$^S@CA-{X+tGUUCE}E*EVfMw$=5#y1++_?UfW}v+FE>KIeQT2ne_l|m};xK z(~zSoCyk-hkk&k6=tos{keY${JLQ!d`b8hCfyY zF)#kXp^DNDj`g3ZQ|nj0c1yZ$dcXblqg#J<4b}7Ey|@bbjk*~Iy*}eCGS>-(n`+%> z4~yvccbrCho#mfI!MTM{RPs6v9dLw=9-e022#@~Z658pYz!ETqA9T)n5InLfiC&kPkrR$$BlLCoib&zuPn+$64(|b(5-wFZCN`z>s^IYtE9Lf#jeJHO0kdjEu*iq$K$jXz_S-1b8C-+aB$MQ|l)`yO_4J5*g3kj5D=s>{WbQFvAw_sdCcVn?(j7* z*iH_ASW9LaF6VINN_||0AoQ^F-~@A!Oo`;}`W$o+xwu-FL(%~wf1eUJ(2)s{d}O{% zViswZrc#5|%A{&bg?Ca6eMpJ8Co1zXiOF<~6jK31aTW(FXuM@$UO|y7uJVysw6);_#}{sw&~jS&BWaX2 z6f7SjqGiD5|H$UZzGyD3TDjZgAwXH70Cbug&p0UA$2g%ji4JqWa=<=sVcsNg)-BM7l4c@zZq4-=m~mi%pYW7< zvuOnKz{%w;*x-R8@D(^R3^etaG8{gSyaty)h@D`{4Gy4&-tbYJjuU%*;g%-XEJ4%$ zCP|YV=TNLvYtWX3G7ABw%0Glf0+4doI00&kMaFVWkti$ZsY*O6jfj|LA^}^eflrvy zQe~(0D2>J_$Aw^UP3!<%p1=q`GQz`FqO6RN6}Tu|qwJxh@TX+x%^#IrzYuYup_Q7q znVEEbZbf;7m0Q8^;li~+P{MpsK`!+#_isB~v#Fk5ox3g}T~ruJ zAd)~Nfow~_*hqm|VAJqi*D`+q;JkTxZ>GUc-XT@{2^NsrKk{Wni-~upma)U&))M>7 z#WD61SSk;Py+o#d2ghlTTkh}(qjPaOM8fN1YRypzr$&`6?2gr%Z1vLcO@7vp-F9?7 z?s(R_@{@wTrSbP1OJvJ(aA+<8r_l2g4Ybez$=gYGs>>Fj#F+hS6n6@|<< z%qZq2xpn59EoT-l ze_@(Dm+qJYC(vCFy-J^~azT=qI%$*-pwEN=m9NGY=GftVY4O}ubL7C6If zBljD9-EoIWbijW5a9_epeH{XC1BEOMd5!Ft;RlSM#;)LS-hkxX2gyn z1GG7fw#0}8iq2AIs`xYxiYBP!1dr*VYD1k&P_U>15WG_%$VRCQzt zwGi`iUjC=G2|HyPY-ktGPv2!ct>3tX?t1X)@LodZ2pWqsi($yy&Lx9If4K1k+WWK* zsiB}hHRfT$)Vf}>j!ZGsfiYd3DB zyuyy_+w=G)!*gyZtU+;WTo&$v;hT-?W*It(` zn^#|PDV14=;lp5i_W2j(-XV>C>3!(S4pIbsjq=yG|3=^g2M(k|4vKXufab4%f1I6+ z>&1yCgwaozmO!^2Lut!;;{a~$j>4&R>Sa&UqUGy-tg%Y#ueY5=6+Kg1G4}eW;j3+@ zPpb6sPbM>%9b3VGRa@EoI%2TCWb$wEnDE6HU(kR7{prd7{MVY!Kae-E~Pjw^XlcJL2hIl&3l#4IMH> z#tFQrc%S=v`z<&6UTokc&^5ofLHY#8Je)FkX#)LdhqqWqYS?S9-9sH)pYlte>uqaU4< z{1+SXY~cQ){t4s9(J3dL=sL9^|NHKLNbWP*jsTef7vbSY{>Iy9Po=%~++Fg~Pg_X9 znSXOt>KyWH9B=-N={U?6nU-q;u^W&!yn=R@(!xqY9bSz}Y#>@cVzsS+p>TyMf4h2x zDXwyE-#FOQU_RJ7N1i@3UnWS2oRO)kJJIB-;$%9ybX z4X`)}(0QA|?JywbWRgz(PKLqa)RL@2qliMeZTysvm`<}^{1a97A3$rHE2$T)Fme=G z7`LC1gmXu7yf=G*H#Ie~*u5c?GWi_({f{=&w{GiAlMDVx-HNU!KHFEGDSfWI2L+t$r^aEd6*$?Z2J>eA z!vzbdsH~p@?YPm4?64{*DxyieB56Nffz_Q46E5bw228HisfCH^5r-d2!+63!pZoVH zJ50X%Y6abO_aCTFpWZQs%-#3gCzESTUg4Pe<~NR(!;JBUTOBfY{N`@@J%8~s**CR1 zVMqHg;Xm%!quG%)iZ*Q6Ko36h2+jK}eZ$#yYT@AJQ@(wotN_E?WvqgN0r2<}|DwJ2 z*qzjgbLmAFim3kd;KNeB{q|$%%+pU5SYMV&O9AKZ{gw?U@P-VgPM%CBo^TxXEbBp^ zFZzNF%%`Oc1`gzhv%12acY71fZevI!P`~1V{}UlG164?YOM!fT26Vn&D7ZB>HJ=NX#9RV@@ktz zjdsq{)Ozsuy``4V-gB%l<%YkZ`mK$8&Q=zt&CXm%+mLFE)jP|UEf>ec4wH7E;lqab z98J(yaGK!neAiue7QKY@GpvJNd;Ja3H*kCf^?EHkHsE}RBOmxb`r+9$dh{sKGw;lt zNw2cL`0|To^zO{}sHKmgXrEHizp0K#m;*qML3g6faBl6(dQ!uK4?iN#C+K9X)M7P|2l*Ty); z?z;OPcih3th_LbQ)z@F=m0yR&9e0{BVR8c6gSi664YUX2hV6{|^I!fZV*>8|5r-Wj zE383^RmLy8^oq3QVaACZTPo4)$1+1^eFoD8(_7q4qoW)L6!aDs3LFKT&(X8CIIrh$ zp{3@0VTYG+0WCRA*#lbbde zm>EDoziow*(h8b0eYDTRq%$smjH)V5pn=_H z(RO_gY>|oHbG|8jL%3etUXBjmZzuY2#0pLt;~me6|9P?6D66>qj<>Li|NZPMVc-r4 zTeEg8-F54);%-;K8)-~f;nc!5GYy!aPn$ZG9{KCv@INnYpz?cAEOp+0>b@HmqE|WLhxBupM0!!rw?bQ_smtK4! z!Lg+QX5fB;hYuU7q%FqSI-*A64L`q@h7R!@SNOsrF04=k z4*LGPJ8z{T%kiicU@J;+MZu5xP5XXqh+TL64ZQVZq1?x!A|tOgYu3s(ML03fKJ#=} zjxa>dWrGvjC@+uObW9+0pWFOyFZAVLCaHUjOc?C(&`o97*x?`YpHJ zDNY)^6u9Qf%iWg)*ft0KI%4>6S3M? z&XsMO+x0W6V!<2Z5$+XafHv4pq&|D}=I!$nWfd6s!@2d#UtFtAlJ@Jk1E-hD5ePco z+2c;oN$E0j642#X`Hi~p+?;v(X}d*juy!g8Jz6YqD`Bc}`P)WD0 z@wHCvV~370#l?JBC&io>dxdAk#;$?`OM9U952nxFc0v6>g24wf<^VoC-xiyUAz=B zR@i`M!yrQrd+$70u7C5(|H9mAhe@Kya#krnjhSrJ(Ef>ty)td52MJBx^{2nlv}w~q z%d!E)r1F&So|%v}CZ_hpSCNMg9TL~6HE;fWnE(U#+#kelM<^;P6bBXF(qaV;E}h`( znJ1_dZ=!<%a9!2&+8b|$8c{)-k3RWC9ASW?JzAHIhY2!x;|+T%VGbJ(2%yE=>#%U@ z$={ZhTiAlvS^)+NLUD1ioHG-~_e^%8!3aU0X3hDOcA9EdE84g?Ck<^6hQWgdx^lw( zQO6dXZ}v*8ARYK2;Mu}Ti!fR5v-h5%PA$-3<$~S^Y|qgZZYV>*Jx7=_c}Iz(pKU+_ ztaFQd4sSKb7PcSW`}oJ9POV`Bd(*K8`9CU>jD+9+d=o8QQyYW2%b312acG5kw-r+w z4p_CZf$n&A1;M!$3?+rRRKj0N%w{<6rx&|tJB8H~eBq!t_*)HgYN0$`y$&6+h_^W+ z{OE_@kI@H!A9B!v;{1R!{q1+&P0Fzax@1DS?FMhGXg!%%@8Uc!tY*cyg>wa=8zHAK zy_-y%Y#iwLFdd7rNcAYjitYND6=SG-DX*$Sz)GvIHk6i@%1W|petv_T!37$vL&rOe zJC&8;U(WQ6JNzQTc1GE42VXe()Io=pcv_E*r)i8s!2o=`P>Dj@O2F7CVz6+<#$K_k z9%+nDm0>5zyd40UimUzOt=5tPhXA;)4Thzw3g=kNAz@~4#6E(}Sm917vPNNw=J%C zqQWzf>J^VyJHkZ)a{V~y5NcLq$X3*DK*ms@qD0YolsUmxl13RC1#5~`!CC|kv8ms{ zAx@zMZw{zm+8{ae1E&|T?d^0{ahFd9S8VCv=IgketHlt#Sz74igEB=iR&9--duab% zhbwl=F$PWW%wm}N(H!AEVM4fbBwJNua+&CgSMLG)?HjL%x0<~wWq6w#bWA7_CdRl> zHyjumu(bdo(ZRP^6@&n%4d`16Z}GM|1hfUlMp(cExupZ-!{~5GG6I}%@h0V{6Dt{7 za{{jQ;_&2n0sYlC>aV^2W+)oA5{3ob8-!%!tMtId3b1%`0A5K+iCjt(j6thso#Dd) zc7Oq-s|9cdOBA*p2^19f;;k&1J9OaGI{DK7(EU%&juGA|NAE`ez4roM^-&m8mI&~J zyXVq{f0`eIa^Z24=$`Y#|Gr|7832dYUC*zeDq0smC85jz0Z6N-Z<6ZIU zg5xG$NL8=Hp@m>xd>98gobB<#K?m$7McDS&njzJ82lXYk&Or}jrPc)(T_P)kv2qJe zoJ<3pQt_Nd(4$ziN+35n7)~N?g4io;$;eDuejFgroyGo97=z9B zL(^_duQe!&v5%NFZ(l?ZdRR%;OJc1bHkm0`E?x|{Udl)DZClPxd(>@}vILM+m5!8r zWXSjcNpVVqq#W%y9zI&6_bwie4YzsPX&a~Y(x{=016LWX*lJ^$hgOHDvbFBN@=4`M z4{cQI0HtdIpRxRcg0M{7F`@;WBvmS%SIOs_%e=Zpv83}^&k99Z~u>q1-M zfCGxG2vbhmR@}RyfvT#iXl>O}n!NpBf9LHpwM728-o0Z?S+AK80z7!dSk6|y z-zL5AizRf?HP=!J1BML>e+z0bTlW`}U#!SNuqPUJEqHqy9-PL96n?#8jX<&8;ndU5 zl5}(644E9hLG|^)~EqJ=!AXvt8{z_J#b@! zr4Q>GnrQCwI{N)fD}*O-gOlQdf;_t5upu;VVD}hStpUKirxB|oIQ;si>q)mrhw+X# zCctSOFQ}e`V;W;Z*mz)%pIBvz?at6OO)TdoK6C1vAOF;4AEa-nGcP#Qag(Zkh^K$u zcBeTWp&eMkge~`QZXtitw~lWW{gr6UfjCukPJ;cUg7XmIciJ7xy3?L z1aIE!tyrn=saclngEfv5D8#-GdQ0OwP1dI!0e>rem47(NEM*5h8rqGNJ7P3*k ziH<)sq|Xo_K`LL}BnO3-U>sDcbH@E%z_LX!VJ2dRj$Oj;6u+M(d z?RrAn$It>VxLTu`9WKcRZBLob&f^f`^YN($ZLi&jRC%O>ul4H6s(3uKPb!0Wc*(+H zaN_G#FiN2FV32ILT|agj_7Gzj_2G=HOu}S72p=mEU<6~kD!v>B0~a3-Ksf4%!!uzY z(RM-!9wY0NJL8huhpl{jO3y=56Q z>Vga+$5uzVsjc}p(vDBODkzOZ#cL@>;6Xtm*dj16RygLr;HZw4GGugRm7`!yU3e?O zoKVh@aZVYfYH9%%D`vdqbzbK-VOyPxYiPvD!gwBy;l8c>Za?)@`qLk-rnT$66+OPb z>&*ZV^5@9A=PY|WFs=^8a$lS>+(%vR43G|@=H4+!)S>lgjAtdlUaP9EG0XOA>o)Qi z;5N{bFFvP_K6;<#eYHg#TEN?V=bdSn5xwZ1D^H>kL(LZuSFPGYC$+ItOWWMqaYcE# zu!K{~J~%#^dT>S)Can|r3s2{MKlAMxs8ieXIlsM56qYVqmZ&(iOxwHU%P&LAvjx<8 zamae2pndAaUj=QAfU{y?l)yN<;?j#_wv6K5VWm~3;ot+!sx7S2g2AF&VqnCm!Io(q z5q;;9Kylgdv>aQB&eSU66;;2x=42{M!Kt-uZ7p4R-@;I*){uUsbk0!|*a?-`Nxq@F zk#2u(1%0tP{<(X@`gWsl?NLc%1|)VObcVaA`bzYA3fu6Ci;S}o`X>0byte4Kuia^m zN58xGkMfm4^a0K-IA)GH>WGY+uev=RBYc$?p`{l(Vf5A2HL_YOSf=t=%&W{31#O#d zhYaGv!HL7*AAaPo@(~%x1TQQA4-1eTw$@kDQJ$Qx!_8!q1>hsxU>#I?7WOsC@@b zOIK3wics13Hj23-@ED^?y9UF#{5)AyFef~wE zIs44hLl0?&41pKiikMPGjI3v@>DLkUYlt}HA4X0Twmk{t6?CVP@=+-}x6Zig8JhRS zx)^~~^emyj-F7w&s${3H8G>VQf`AVfZKCu3Fqdi@F!KAuUFYpZJB{f_CHMkj0)7v? zx{BUjyqT~CF)U0SR!Yb3T1f+YCBK3!j88{`slL*~$CGUvw#(t~9owO??L16(C(A1x zymZ^Gb>U?SR-R(j5w>_isuZ{mmcVY25j%dD&HEe zAG$i8Jh254!JLWc%~ez$UnUsu@Df7Doyj}ypjG=~oX3XydfF)`(VV%T$=HmQ!1zj| zo(t(C2xRo!N{r_hTy&|7>o^pD{J6}=xjHberL9%E~Rv88lcZRtdwXB!l@fH*Ba zEg=G(S>2^dQtTh#*p4sMDGb1qd2m|i>fZ4zK=6W=BUYPAV;iP;N@<$q^hJSLjV(Dz zJ;8jia;Kj@G+!o2kXAkwj(*9vTwN->TjtghM%&gVtqG~par?H^*zodH1*}}srBnJS zPE!IQ4?v5Y(xGvfLW!v&)7Y+0VTe@;q8#}k3~*Jjz9y-{76gNXB(tDA;lpWu;5-_* zyNt3HAQxy|@?1K3dG`Q-M+mmtOsK4^rz|~)Q_gI`NhZx)-o%hx7BpYYIgN7FvooTeCunuG zHB?tqO`BGJNQ>sYK~MkZNxJeEchd={pG&(O^liHAx?j<{)r;teJ%{nZ!#|?u|8ySR ze#v3(_0N$*RKb7!E4Xy_Mw3pq-~paoh9o zBY(45x#<-vzmio!02JgW|E^{Fo_h$7O`A5$Qi9oATEbQV;6A?d?#z^U#zTg|g_T+034>O@ zhKQA1QP_4RP}GAR!>qDf3NqfZN`LgZd7)0Nd>)tYx%OllKfE800vI(gc6b-YZu`Q@ z>Nn=Brwjf#pBe(Y28;Oos}rV=q`fB%G%K|*Mg;>msE)T^zw+4zdUgKB7^fEM&d_ zxOZ4Z6&7;%Sw{d4R&GJxLteMv^*dji(3ZE}epl{m*uA&6;_LZeVf96@)|G(hMu(+q zH#uq#x(vz`S)Fq`s7?e7qjRO4nPCf~%SY*ipKx=@k@NJjsnDhaqMHX_AUnZM14r=; zKMzmwvlH9(AZ_QvYE(fQnT26w3QMLHb{+mZVwZ%cTk2srRk~2EO?##JbonJg7pICO zrYYgfQx$MHmk8Qs5{UBvBvpS3w6@Yx-kuUO3RD%U!W9p(((ChO<3b6FA1g*-Dz;JC zg2Nz*l_$sG1x%Z#4gw5jHD}r?KFlbJ6mbvX7d(Nddh+o z#~(6!FZ3&knom(AE52SsZ@m36U3>F=^qrqvOS>I?mc%#Q^&tKInYpy3rh&!|??pd4 zX)68U=cmz($1bNQe)l8#*_nsXL3@p(vQqEOW}>Q>f4zYodvOtc@8aj^*wgQ)lg~JV z{_Hp*647;*GMvwX$tnUSxiC2FfVa8&MWmpk2?xRA4KyaPcoQ2mRFKD;T`?GJrU}x$ zdR4ezp+Z}N?Lq#sE3cEoiW9I2Ey5?y@rD`gMZ1E|Hssa0ckT~jw^j~wzW9W<>+uY} zu!?Otq28dJ&?jA8g?j-RWEx<6Oc*~-*ubE&4GpAmPjT)^YXzK}f^h2{zmfjoOqS@4 zd}~R!bMnc{FJU7nxfOe-U;PYSch6g)9lh_Ci)gnUhliGh0iXF`EnRs3e5whYg$1Y9 z)7KqB|L@eD!pK}0R%c!Hk7e}G>#JRuofya44R8O>SUUHh!BpTF{dRe0Puuz`RlR=E zPtO+z2y_~BT~P1bc=N4v&ChR;F(K76wp!A^>9!kfyyh3bl$RafIQmG!g#aCf@dCOY zU-=6Ltf+#s2jLMOJMF#(aiNc)_y7IWe|&g=;R}qQ#aN0y*g@rqgV@95spARSap6zQ zIIi@zJQPpM5C_K{w6Ucypnre5@fX)hzv0}}7cxqB_r3QK?(q#b-Qw#f%CYSovP4_4 z%{2;bB>~SMgDv9=JU2K0jQxT#wX?$PAK=;?U^6K`Xl+}`kH?5ycd&k!7L1&rFsYy6 zHcu^6+_s7Bo}^Nv*QZpdBHXr@K=QB018u{j5#8p1P&#rJH>(Z)o`Z@GB2gHWn5Jz} z;j3`kG`k#4R>cRndEWTfB!q>QBLf{T&M8Kax&Y$~%W<)?$S85}5zYpe-{$I9>7-oh z;r2*11{1uu#jrbXM6lz%1{}(cg>Ox%Q-C6*PE3=)x3qU zrnZs3T>dr9UHAoWbDT$W=P#!98#dF(VFPK}j$`TcVcY>qH*CMH*j`!lWM)R!nHI?EnS~&J0oK4|ro+TCxGS znB?P4Hrj);qDGGz_5ay>6R>Hrs!TBcuc|0^ip46RKz6WXksSpA1$T7lR@+A(7npV# z>~!{&4KFi z_JKvM^UlAZx$(N;1tRX)1MLH0+ssP#R+{*DFt zUGI2)^Fz;lLUZxm@4#DSF6cn;@f&Y#e)~07G#|Pq-hZ;vZO=PszWmef*?i_FZ@=)I z{T{VG>*OYN9g8XW>NDy#-cO$UbJ37=X|ZdH{#cP`4vXwgyX1tFXp4X z+dg>=qU1g}68`Fj|BBm?oXUBY-%%chHVJ*3KV9xs3`@TOeQ^-~m5=|=(?^+dpWs*? z0#3?yVE)O;oP(vg{+K@da{8LDZSx!FGxj+{8Fo|std2I-Tghs*(=KQvIn1b6YNoh^!posg%I+X zkAjQBm-P_})>+Pe>o)vT4xi@4?eJAP`14UoBhn8!Y)<3a^0H4IAMWU6Jw5dq&uHH8 zhc9U!^O#SuE23`Se91TbQ1ja_dtq~%^X;pK04cp``FHmdJny*dz0K?G-dwMK?VFo_ zeEa3iRo7f=H*3FlbIF50v3bD#E^Z$E$q#8h{Rxk1p79jBZ_oMXG`F+M^ts*smiM!} zw*ALjsj#E<`of5MB!5-f1>D|{eCPkj7iEZ*;pb=T3uRYc4eH^D`|%o+Rl z!teOD1%f~aAP)cgw||T8D{PR{vR{&-4ck?5ffEP_?^Q*cZCk{|as9bp{I5F1pM5Ur+4Y9>?)EbsdX84|>1@{6hmQe&A{&ZkWU35f<^MZe!~2)V#5vg{zsc z;e&wwdmQ}XDq4JKgZHAx**NRG_}{2|l5Ekv=@0KOM0{rYR`a=6f+WRy=|4YBr zxmp+>jC}2Lzq;c$W3vv=&;6XwTKb-~tM?te4}bC}f08d?;wr5NKH&bgZx=V;`1N1g ze3dQG{l}O5lz*tgtD^CqfGdb`B{bgewCxW8=Oq>nG$ptb`ax*$O>E5L5hCL>HWmL> zPkahGu2Al;WxNO*FEYRnIfadjoj18p8+v@x=a?Lga#-X(<}uDP>f{#v`8S}HxBfWK zp&vLnxOHlsO;sG-nc}fzwAA+$UrU{AJaGuoM}$1}zDwV<4!4bWd0WG65*xAa+omV` zWgwRW$ASi+a-YDlAacyY7jifcN0dX4Hkfe@6y#EYea^;iWlyE&ZrVQQtt~oX7jAHK zL=<yoT=KZMmk;8fr0vQpKiYijH@~3yKfW=(>hbIU{SAKQ)3<-^Q<@9!erJaQ zS4drdLos>x6c z+2|-oSlb{EuDxG2hqwTzsGA0=uGa7aK?{uG9c= z`RSMZ$6bVw&tr(d6(9VE=DKS?STn!fIdR{nOE15w`B&fe3R@iR)^{jA=Sx4Y`LP#$ zW3@r&hU?zf++z1R#4Q#(n~nd@ZWRB#pNR#OTX7%8vOVPD3!0aH)6<*#U36!^(!j-M zdhu{iE&KZ6fBqjIZ2tc8>zZ@$MxV9|FSu><-Cz8G<_`9O%1PX|sq0r+ZT;YfKJ4}F z-uJ?NIB!1-gk$ROHhFK7ub#}@x==%GP z{hAff6uJNaKmbWZK~(THSMTS22k+UJz585o>i=2LhiYosuR3;5t*EH>4Ey3bew7@x5_0OG+kWt0R69-e+mW_|b@r|1+`ZV# z@S6L};@G~s8s9I**evrkET8I;nGAa?=`Nexxtx2$cIN>{@9>db*jjf$*Fm^PsMn=( zcFwN@c+COy#Uw+9MGqiB)-RIyKdIH#;RP+&gdv`NgML}M@*2gj8DbSH>-ypq;@My1 zV)OWD!!~H5=dE=vdF-dT{3Jeoo_%`w1)utf&6hvx(Z2h*N7V;Dd`0tDue-GQ&_}Lm z9&q1JXdd?9i<|pjeD?-F-;T#^?A|B-mBl51EnC>aBG&8P`OfAI@4i#>%2&Rk`Ot?x z&|G-oJ)1|_*VG>V@JBa~eB@)jJ@35p>wl=vxBFsf69PhDUIh5{AY8TZg8%j3+E-AX zG;aWTJGKbia`VTV_h0_%nm-n{{_M5yX^@qLeZZalX7Ti)RtN|IA#hv}c>7zUHi9eJbyZIG!DH|>LeetKIk&Q% zBB$~e>L65Q!=hMhXu-d5r50sn#>U`7lwv+O6JnSZcvQ~@med=X!+hVaKZeeBTg`Z+ z8{11a!QOJC501BMr+Uko3`L&mZ^*~yGDc^+xu?;VBSUTVRm9QBY@mqz*B#VlZb$C> zGIPntAb^9j3}~Cf0#m=}MKSC;hl~ZSUjV5OUkuj|i7|ed25snD&Pk7Sk%H-jI^jV9mliT;+%7DYrk}Ru3gO%zu&uAN5HOY<~GA-`yAc_>}oLb;=g0(mfPEc-2kKzq4OI>~Bx}q>GxL z_%~1QENb<2FviypU;bwwtczOI!A;?xcFEnEC)zI`Y7+uNKnNUX1i*K2A7ERDa*Bh? zt}>6ZDd$Xh;+m6xTpwRW@m)WFG4zTK7q#dox2{M>K5$EWLME{xrsrjPuK5lawXIpYzFk29ebGJlms<%Z1yN;*&>soI!%8_$_8=oU=Cxkk89e5+crBi#1 z_IRBM`!U+-Ci}aKJVqycloeNi$r{LF6~!|OUMsVuCtplL@hyu=_6cnC^NyD#C|2N7 zG(Eiad5C7U%@3SCnWF1@QdsW71QyiVxR9N;U-o11g+3R)awaFO|ENcOO7m;K z_WRBAU-0%|HIAg)BO{>I;Wc3 z-SNK74cA=e;*Z~OYxCTfzPY)gccXVKYQ5~6pE+t#>wACu^5!ES?_M#6MXewFiibA$ zxYPLi0(SG%NC*f4A#gMh;6f0xi9S}f$Yq?_U=Uw14Ehs`TP6eZ0Z&33TW}$At~17g zyl<0evBg|_0RlM^=5j9dndhN{E$fA3SI^9X{`+If**Y_{o#Ys8XOJg0?oaVpGFlpI zim#Z6G0&I-b-VE2BFv}7-F8jAE|Dz_ah0ji4FL;(OZRz9+c zE3v&JaECix*xY!{TbpnB$+tAPw^rWHH0Lz;z4wL9Fa4(%u2|Fxi-U7++njU9huAOJ z-qQTutL^LUSK%tK_B|JiTL1aqJ!9#j)`5L6cJr;bX>PE4YW?o(KH7ZPt^&^6oo;(h z^S?avK3deupr|hdgut;yAg;5D^ttFnp5ix;w<%Q6x|meTX|1Y3tf1je+y`u2!Je!` zUCu!<|Kgz=x=r_D1gF)hoAr`N`CA1QtIvfGZYg@0FtMF{~f4%GF>tb}wcVUc(euYE|1Z=XRL3 zJT7_slYRcAKfUW6mo~rto4?h(>QDc)x%Bm~Z_c+H$3Ei8Pi~(2i1V9Ep8Op9+R}af zrrmf0#7$+jh;`D>8126h5CUf_0>AT$zi7VaKm1~IQ~63F_w&MgT+saAFaQ4LZWqK4 zj8ML+{nnrPi{=%7ds#$Y$NnC7x=r(aU;3a1i(A@+fDjM@ zX9EK7NcY%sUg`@`#*oUlU$EF;H=E1jxTluQ+rQd(WwTFa5RsqdK6p`ofs1-*G0)cB zCO@2m9JH+$4&p60dStuKon_&w$cEckTk5ZFr+Uko40)dFZ^*~yGDc^+xu>O;Gr2x7 z3tIqk-AS_)>@qPE=Ig>7+xc9$`a6L+Y%GF49t6~crb~UVw#616V8S?P+4q~o7d^y5 z7lqn&iVaTyENVdxCC{p~?#m+7uOvdnY%h7-$-Q|zupHWOrIx-rIE0L3LO=)z0UpxdEpB_yL!R37z-|Qzpsn=`8Vzv z+hq~bdxfiVyv}Z!zhU`QZ_HxYn;(f~Q!~p~Wxi@|%QR+mJ?+-!zZDpQAR;g)Hah3r49B_QzQ_mXg|{2wnTI)!)DUq3V%=5V9<{zku$w_FY!D38Nxh{Lrutxoj9 zo}7)goZD~f$n-*D&*$BycpSTLplVq#-597D|D;f5>)P*?vbiHL*+gsB;jC+v+0g6M51~2YVphD3W zcc(ZMcb8x-#T{CtxCM8D1uYib-QD5MIp=<^|9zkK{g`k2mut_=nzh!Rk$@I~_aLJJPjvB7M=DNe0G>)MI97RaSt5Vg-e?t)b<_9ep*D zL>8$Z4wwp!I*EK=Qis+@DzH?{M7u6{yZ90|!<|^Ov8xbNgB#J27iwEP4-@IxIlr{Brt)sojn?dP!~rw` zcS-6*#NcZeh@^NB_}p>Dl%mPd**>xF*v%?tqP6*vBS068br2R%9yl086pUNHg&Brz zy(#(q^I9?dPGO78_Rn-uQ~;Sf-c{vULAQ4C5N1VOiZF74CwV1()deRU?5|8clZf0e z)d@Pe+{vV^eg-%jfFp$RR2+*1m^Jk_x4*lkS`()A|_qn=sTOiBZ$SHkZ33tkvi7Ot6FRY;$6E zmA(B~;(?7cM#hrZk9Y4oaX2Aq1*LzuK#C~6?jj6=@988o#vRk8+S{D(Iz8-jI9W<~ zWzaIDOOa=nG~0bobb7ZLPs{oXv=$G0_ex5r=o2I*{ENT-OO?ZganzC58 zc;{qR@ltjn_s83+_nb3ePhMKukTiqJ@SSiS7?P66IzQrjzFh(d+RjO49T~otn++p! zjOll_`Vn>)#6N_XJEF-~jtH?`H2~Fby^3Z^w;zgU*Wvc2CB2IE&(jLS?e}OGkpqgZ&OS|t1vR7~8UH=RA+%z_`r9dCfA@X%= z!%z`US#c;c^kVE5W^5ysC9~AUZe4@Fmsh)+IHRm>YdC5=D>nhsX8xp^uevtS3#zOc zX{Xqnr)F`UZ!(#3SB;^IcE{OE4cbrnHXZD-MWTCp;A?AyMQSLmy-Jd-xb?^E(x%dz zA2~u4g7on8IrqzfIPQX_I60pg~HLdKb-d37?+||vBp6aC}W9pJ!BC_+M zv{U@Zg;=gCD(;hJHbUZH#JG=QfO~~8y=ui|phAj?_G6$z%vbvuVYlLg3f@aDE!Ui= zsMF>u}@Q#RaBt- zwyXM6#O)VieWGc|t)1yZ@C!D1^vn(l3WyZR?T{CZq6pUIa{na^>sI3ki)yk%LJt*l zbB^+ay?(T%Mr+DSP}kz3C&Ss{>y39!wc;+Fkx#o=a#jAl5A7HNeGF^ZR#oO43*;91;7F;!zPgIx@zl)MX)1 zFU39jZ5udw4fc6#n(PY{ zvXt^-jCP(_|C~!RSktwEqzx^Mb?x_2ur`Y07AVVl{1{~yv&)gtEv9zrae(yP&k;Fa}1P=@7U1=gccW#xg zU5%Qtth$wPiL$`xB}^-DaBbU}@kA)pcnD-;6j?(V*Hh`OSuHc}!Ud9vv{}Sk1G*(S ziE>0#?2S)dV%gCGrAqdB(W_3&XmVt(!I<4LYC64Aedl$P8DMd0b>ES3hX2M9f2Sn@ z3V2!WPf>!#w>hx5A|VIhnoM@aQdT=lQ!iMrdL`##YN%`&n>O&Jfiz0&`dJsbAG1~8 zTeXbam^%(vy$g5{c)xxSFcUyy#c`Hz={l%Q)ZiEmK7LP~S}W*rV0XZ!kj1v=YVea4 z?1Hevz}}N#G(uj~_=c)n^RgptB@s1-&3e?FOM2P333x~}t`d3bL!#VHC*p=E$JHYS zi`$j3po~#Ra;K>3((l@QwWcO(7MLg(9kEw~`7cyNgK`ntM%HL7a*en3W}S7&f)20u z2;*k#Br~=qt@|2}@_8xpb-U!2X*%tK+8`lH`ErQZo|Ky7@toG<_&(SsqrLN_u1Hf( zX}f?8i~DzN zkXkCoN9aQoMWkhUiJFKZaCiI!Rr<)-Bff(Jo}k{}8hsFyZ~3a8#i45(&J5F``D4G;#8 zZx5?3Oo2T5g_lWsUV-Rh;T)T6m?j;W+)rt8DBVJ54dYaIPyTof#e zRD;LcB$98Pnx?L56gi=rhz^?m$#=-VnuD;BL$W%8qraufh-EezW6J6&%f*H`(oG7| ziB0W#_$Z8xE9e;JHlJC}W;_000PpYq2YydN{G3SHmEsGQxQDdw`hqO_OeGxq)og4A z&Y9&uR#jeo-f1iKtPne2odh0K_s`iHR75yd!+O^p$$7YX9?tkq-ZX|<#Ldgsl2RKb zwoI9S$=!VLfc|*KQ?I$>8v=hln-@7OblGUk3EL%ghJAKeMGGyzSpyfSq@0ZX)>>B& zkR!zX>{Si>rwRlJ^VD$s412)aKVrUR3}{arwSw}MY-c-sV_EXjZVe2`_xkd=<>=KNe{>{DiSOy+db$+9$j=ea zLu~a@N*AIiB1W2}$qFv984-Rpt0TepCQ!zVaF&*QqZ0|@@|uJ=@zg?7VmZ(~ctBRO zcHlOxPg$l}GP_#PN{2ori34t*99kw^6y@;siDBdUbm~WpEfTe)o%&ns87yM>EfeV( z>4Z?AKks#q=TL~3VTh$GP+e?X5@$OvYw9@kYBUKD00`&VB70+F``_Zn1M`tUwqeaL>Rx^a=5#DHw0gj9LGypHQxHIv)@gtF_40| z^#<49j=&|@|LSr7sZGyO+HBGiV5&!X3Eu@mE1GCDm)>UBEsN)Eog(Y7t|{g5^WzAa zM2m`LWJz`qv+UPhu^Gic#H=k6y=5lHPehlpst3^7Zbjoo@oqIySUeSSLX6L7_kRAW z#?@7*68gOV0$V#YBk`#~9>!V@MArhO0W_${Qc)1Ct~PJ)ZD0z}lY6HeEVkkF<+ReK zd&GDUqW)wVufh8M8Hf5OD6{F+2PBVDayweSUw=3}4oW}|jpLmPtxzzk;FRSx_UGQJ zUSBswL&uUPm*sC5il)0q99SjJncevTzBPoAANxq0OU|!0gl~&)O0X?lWS?R97h=HF z32M?&P>jBqor>FT{A2_7U+&A0FcW6ZO)eS*ReYroyzH6b7)>3W_=+J+INLFq zHhqc5dz!(6=KV80qOCG_?6PXlf-SByL&k~;ZBt2f^w6%w;^SH=NXn+Yl7cS`Zx?9Z z>P-H?9GZ^mEbJCmR3V@LefjpoNx^K@{)s~&59sBn?F%Bvd+m5Om${OgFC3SeG1ZKF`5B_t z!*A$MtEu@{GHE4?iS(# zhdSQKk&4RQAJ)++=>t(RcITF|{56 zjedAm1<|^d>QEHZ3*S%mc!K!aK>ZqTpctg~W18>zCDU117o80%Qp*gqUTzT zBUU}*N~|b+(gxkZB^S^2*aFT$Upd5UA-kLSn`9 z=-*2%X(Q6Jq?Jw5u*`G=?lm1cks`i#7w!%GdioU4pF8HXZ5`9+B+w(W)1fa-tpwDt zNW_LAzy*VMz@JCwwL`s>Ejgae4@Xvr?Idiq(QK1rvHD@K$tw_YkaNG#8&~?3EnAc~n%*Z^i(!bm$ zG+Payj*F5e@+r?k#hl}0H_6{8#0F??-Rfv;n2eJk{kuTyJwdc5dU$5Eug)I$(kpgb zaU1>A0e5{mV7;q`tvztymw?hy#*(-as9xin(c<7f^NR3j1gT87J6JQOav31#@a`U? z9n%Wl$dt}fmQB~JGMO&t*xZjEn%P8W+@`tvqW!0r0&$>7F zyu7FulcU>J2%Sy35Ibs7Bd6I-US~k+s${o5FHY#XV46!mH55Ur6TOL>{pJV~u&t|# zrP))3_U|wFtEb0@suBzdDqmw6Dr7+mBW#svHp6M%6pv`Dhg^%1J*^MK8y-NRKeSWB zGRZX4cYq!>zrZ~rB6*-~Mp!Z^79)-fQ1^LSwdZs4FDyZxoPO}bmU&ge=xAkYa{edY zxYV7)u+QCW*0j?P1R37wE>s2=k?Z!nNO~FlNC_m0K%;C`zO#Et|C&;Bwg{??kq$++ znm%-qY5U_B8Afi$K-y~%wb_Ptm+k3sl4-Qdd5gA8sqF74NgV}n^?sStTIiHb+)-gQ z9K86o(B1sz$q=fMX=-h-Q+5ox8)2 zWw38pr^c5U^YIKlrtyoZZrjt~mdr!m=yzw&e=Edr&UHzijTI>!F_4SF>DhNiH_|JO zqs+9F_d<-0HK;AJsn*LWX2@@YpNNS*AaJb2_2Lbu}G2Juzd_0O_gLaLt&?_gwY zJy{Qv(!rw3(?N_(HM0wHqF45^d}kaZr+MI`77{(11g$eE-=mqM0CxD0 z4v!;}hF;Czk=_y~zC9QT*U3-MdhH!;_~t;B5tSE%0MWT+OoC4{UdOsN>DhVJVa^ss zjCb{##a5?S_vppFBqKK{gHg3XmE25hBKij0lWwE!OKBd54o5p2OxBm1)}-A6!2F}dKCDz+rkj`8E%8s6{M zk&-~I`h?p^2cIa<(la|T&Y|lPnCbi9+gq0q1b579JPULaRLVV{3DHE+p*T%^< z&mrHh#WM_KjrUjI@M^~Q*Nh`Bai5Eq#lgz-3C6o1sRAzh1Df>P4Of7F3d*+^<#sE(bKAv?QdM5`)S zO<}XD7oBMYsSwQLCjAT%pNiA5C#MI%V%^rriY~y-S@G|zt-Sz-fVgG&5RD*S18Ov~ zZTwX{=3S?+{#ArvIm4zfSa?m60&m}N=W+tD~tOKfcZH>7(;iTT)DLOz0^?F0%p4kQ!ENVH$LNC=HFCh1`v>;o%jng)&AO z>v~J!=Q0zlM;(Of`D(^gy#XW1pFW%#6Ce^_A`l zeS{yp1N>~nCjMP|X7|FTz7`Ss9_ege9t*}l=|+g6(N)QY{lZkBTJI$Y;nY^WyY4!R zL~85&b9O-43vOJkvTT>)>3nh63Xwgvg)U<{QPP$*!;vqSf8}AOr2%P9H29C%5P{0X zcgUjrEeg9yJD$R{Gs}?rUf&w!1FER)NCoY4AN>`&vODYt$<#BI`_Eg;5S+1J;I7{uYUUw7s zGvfW2xosjdh!B+g_{$%s59kRo&dPy44DoXj_ellcu-fes7!p?I#(u(j9&_4+#R zlRqU#ft?l%^5}b&|5QIw5jm;z1tQT>o__8nw+9Z8+!)906Mv+9FnwzxpzDL$)9n-K zsXPSWS#CuMqOmy}2An;aN;JfwE)ltzwsXua#fOpl6Ju*1^{M(8KT>wOH#_U#;la-- z5EVyb>R>dxXx@8l;IJwJqBsm)N1bITgt|}3{U{~Jwbg#^@G}HuMWo!J%U=UL0fpJQNj!+131!cPej2T zVt}UJd!5k??pAs^C)Xv77yPySwv+QWtISop^Q-**w;8wEdwqX5wTF3DrLdWoneHUW z8|QpRnSWoO9tjAxQ6CQpZ?ADFn}rheW=<3a2@K}an&NmXBJvl14+SM1-=oNRJ$}UR z#(S|EWG)VT zgn3njeoO1WJ+nkUp&7VU(>ek6mT$$^?oi(qi3F$zj@*lRQo<@04Y{kLam{ zHcLYv5`?+qQrW6tjn~lta5?p9DaOFA4a$%wo&a4weW?mauP;u91FE@K$C_pgMGCtf ziJCkwLHNaptN4gtAM@dPg;H>~uj6uXolfvay*)$fz~C!BOzlaBm@>xSF?Nk z8(&0^0)Ax>imlyS?Co!zoS!06v7{zqk5S@BZP$Z)3}d0=O>Wg=PkYT&=ZK%rem~~|KBv}G>bk&w zSjh)YhWzm70gFl-^u_YivJdO`9pRk%K(7VoECcfMzN!LD!A(c)VgoW=-)OsTiGY_| z*e)=Ei}r9YN0a^xbcU)n&fFr+lj+R)7ijkwhu^~Pzo z^I@2kZ~i_EB#u<4 z?;XCMa1`F%o23a(oo2Ix=Nplnvzsf zgb(UV3PVk57tnt#c((adM2CgJnfYH*nGhUEl)b57LPo)=Ol_@rK_~3!R~C91^dg9P zpbo&=gfiz+#GGKv#=5ZP|E={Wzo*BYOw z_PoH&lwpJj6kmeb)}~rS&?@J(s)zxy z;ecV~^3ep&tp(YB%pZNYj5!OH``aAx;2t%m<=9KZ2dSc0%27sw~gHNH%+L+mbx zzv%~2C~eg%u@@Gxv=WY)BtXo65 z`yy>5%G`JD)uxMrnVce3aaejy(Hbk z5}Lc~kTU_vqly=agl9O%+UE=FIr8c~yLwmn!MQ;{Hgv`VI&4)aFFd+hBI<}T{lgEi z%_R)gM*lu^u|3ea8_w$IQ$~dES6rTza;>i2#!Dn!6mVZ(FO3pN~~-jq=Ak0r5$uiD2KykvIo%DH-pUhD9kFe5j*)LJUN+-{eVwH19v*~=AMkbhK0+{|-J>Gi4F%|g6 z?fGN2Vl7@rysjoS1^X*+@LEffdUBAs*w0*lg~chq{yqSuyI=nsLpf#-Cq|Jqye~s9 zU1Cc3+@N>0qWYD?Hr^#w)PzGM+YfXR3W4k2 ze?Eu%fd6GAf$<|r8lS{#_0q&~mS-=$Hjng#>=(ujsc${(7On3#@_b5EbFg2`mwDAScwcA^y??y?kR5h_0aGL*h2Jb+t!E3u^6#AH`t1S%x_OYeWX(=+VMT5_op>*Ss z`nN0+77x9UHUji8kk)Ho{=(9WXI17dHRUyX1r&K{Wp(#!<);?Hc;#dY^%kSj+Fd#L zIlar0g6AW@G8z+|l~J0bb5+4iN#nB2vZFYnlU`mE_|K@Ss(qpoS-~6<{YQl;XY*!q z9K&B*{(vf;q0FoYE{W&i+M=*-3bFZOei{Do(CLX4XH{bz(ZqaaIJ>Nm|81~dd)c8q ztK;4J=jZx)ipi%Oapsw6x%xHccu4!2)iK^i)fW3jVeWyPnH%o5pQwFEt$*&9o^8&x z>aM%V-)(fJDkN)JjM*xM&~^Ky*p?r?B5|jZ0|n!q2&C@8IsbrDQiEnFNxrThme^-hE3u);u);~+CTR-63@6m5m zU^TocveS>~i>lzG;8J3BM0#N+81F>#OF3oNC7@XmHyF|T>J?e$G5ifc@gIhYjbT#? zHv-I=9qPu`yHIUA^LJ$sgr1$fd3yy2pt=6ixmTZ@XZQjDj{Q)i;YcxRlBnsOEV3K9 zZTEGIyH&bnqrZyWiRtM}GY}Xk!5>A2d_j>EnI$sAl+cnC ze@1}&*L-9V;DPy4!}-_B)r3Z#>aQbR11~GZOfkwH^ldu58fV2neCQrA;wB#eE;=vT zq7p#_6Z%%fI!(EX>`ClNVSc04UT8w_aU3JAqOB7;twLU|+y+6(7(XagcP{XDNHXne{!Sg5qokGjB?>5p7nR)kbo6#!V_m7z zu{)y{Dm~xSRAO%`*m)Kc00W!sd$D~#mS40u_VWzM(wjtFTp?ArJin&48EQ$e$T5A~ zn}Ir_T`TOH;i-E@X{ME2N2c2tV&6_U?|FI@XI!K{`s7j$`AZ1eZ>w?9tLF(T1mBW8<+uAc>Jb${jE0e{+K(BZLVIY*8 z`ysxh@{bBock;7QNyc}uCHCkytbX{C?j5e7t}rzMO#Di z)^0LtFH{}5%L@kAnFwQu4mh-E%lS)WfGCg6Ro6rtw&*7dmxwH8;+PxQv1%{3%A!EY zV|8RknDXB29#1Gq`u;D{|DV{`DC5yYLl}~Dj`LL>j!+p+R79(q3z!|H{$XuMNyVf*E4dWrPe{=aw>%JND!f-LlFrIS zg(Y@MtSwC&Vge<6_G>{8j8jmNahYz%U)C(Q=paF4?6W_NT?LUQ*QO{s=+FRiR4kc& zrm^y!;2dm=x*m{QkfFU;XLB>vIa@A*Z;115-+ibwN~0@e{k`~+AyFzAzY5l;9Y9QP z`Jh0|Q%%2#$?O)RN@mLt#U4e z@mxgsMEY5^d1vWUjpj}+5YJchb$hDN>hfR{HAcR)1H-p?{EMAYEo2A1$uh&Be3FKX zuJhpM^4|x~BPc-(clPal6dqi`m_X&mMk>zHw<0Z1XqP#BG^Y4tGK-U087zBH>&i!} zey1*mF@Q&@9jf z#vC2#nkdCLW-EPv2P3quJh-d-MZE_}_fQ_mu|^zfv-d_LzE^9&6Bk|*_UG7LnrkO% zQ0u4MiLSWsbvsy`C{|N`f+c=&4AH`$Y*9B((r1!Z5Uq`hq~jXnM^@$WJcG)5Q_D&y z6cYbd81^U;kJ1u|{fGS8N#iQC8?$zs`k%M^I(qPJr}a)~wS4#xaA3k06kd+_<3w3A zYv<^D(x#*OWIHiiw7)g|&PXE45HT2Hr(18?+8 zSW1MVJEZs}`OI=W+B=4x8_oE!kvWalcfX!7Q$^s6rORZJ+84lR#W}hxAuZ8ROzd~-R1=X6z}O-x_+fJmbN+6YSO0>h}OFhyi@dem{!>rgMqWD-#}k56c~hfc|qRJ~SA z)h&D-e(t>I8871LOKcjRgBT~SE}fbh1^ubb0wpZ^y=?Vi0^!f36Aj^l)Ll98sm3_M zw@|s6`#P!i32P^xIrKl+B)#b*^rRkEi3%7b^a$sAompwQU+gyOPQ)l26{x{B_4jdf zP@IhJM5Yc^r`E$&pFnnJsmi#fpKDz(9<+y;5#|o$4e{7Gg%-IAm`U~%a#0iPB>}As z74!CCVcz0JAEKWMU4IyqdEyO_0`P(bNX7J{-?INazyp`65_?Iq&KjG+o&M#4grE;% zc98f79$P_m{j;Co7kPg`MYJ?ai3kR~*m#Vxpf`RkD2oyG{dNNk2mF!295Xf4E1~a& z^JHz?Gp~A2o^=N8#pN2xFJeI5XD)lb6^W)`jH{Y6ZjTDjT1rNbb^u(gtJ2fZFl)Rq zg8~Wm#hl2$43&PA-DAgorqXwBiW=$Ys=MSWe0CdLP4osf5-n6}%W!RWEZ9Ou^8->s zAMM}j5B&6&?)N-Gjhunq{49BfD6#VCipdt@qJ zABOzwq;aQ~;|?%dTB3N&fxFhJWKZ z41ZnvzjXkIGz7!(m+1L>Ld2V_7bYjTj{#KtTQK~u@*tMSfJd4S)kg_;yGu(nY#)N@ zH%-4N3mj@hlYgu3W~L@939_1hq>q~ehA&xnhHN@cUb{WyhmFxaTYbMmQN;>Q*k9Q| z0GE-HvJrzDG;Q>z=!4Rip zezG6ukkx>&C{(t~@I;OXVJVZI1LZ&P)%Ua`jzt=NKSf^jM#WK{(3zl?BHND5D33B= zDIyKiPWfk?Qmf{sInmnf_Z0|GkK*(4bq~0Flcc|7Wn=}*wHkK&AB_&XdW67x;}@4M z4T;A90_06~&*-RHTi)TX!EAdYE)vzTX^{)1qej`gM5UFlU%u?2-*W$<9y{ywmq)m}1GFKa}k=DGAfc!?T9RDrS?*wBh+#u`_(J7I|{GDG6-G``H zz~V1!e{*N6d^irH6YrKF50WcO6X?Ip{hQmg3FlQ5_j~-e%8wSbZKo#un(%wSpOYp7 z9|bd_QsN7&{tz#@`q3#6tw*7Er3>uKMAMV2-zy|Dbn)!f~ju3D+2Y2Sk@19eGVGI;;?ja-vRY8K+Pf(UL zzbILzDP2d3qCN%yzy>0JTm1=jqPVBP8WiSYp@Naq8)7E5#;0M@w=9Q!G~yNHcwJu* zX`-2bEnjo{emWAVy;L341eZgkCCU?OPN_4Fwm5WmFJ?`TlNKwl=ljW;7j2)$qk>9E z_?`BC#Fa!1rO8&qvY>RY$+~Gl^&)s5xJtQ{y7uvm61zn$D6p!8oe`b@3;@%H zzDJnS<2zf8g@5pBg!=h8kmd7qD|of{PRI1oT!z!(@xG?3IjQ@!XWDT=$<_6j>| z`ZMYV&e{V6hSS%)>ja|RgQ8?O9C-$+7NZn1m;Eo!T)X24GZs`ABCW!O%H<^V-|%_f>r|STa$@)eDgLRNh zS(9WmDsQ!ypXw-jj@hlXr_l|<4Tg;XdEGt(uSXPL20>L6^eVO1e4SX^csYr%w}NZf zRulj{cmenH=eDhL-CAoREYp9^b|0N83Eje|TN{7!ikRJOO@c?FRa&Iv8($hv*!F7*L{%?I%XS`?} zeIsJ#w{0T^0(1*=^qPueCP9?yiT&*5Nk;$i_%p-!7>ufm7A1m8-^)^6=-gz9HzdCiF(S9e)Kl#US@aq#OL4t48so*?#`n{tAYxwvJd0Qz^zFlrvJc$D!b|`dY z`5%qI_Had~^h(6})3sy3E~D>R6!<)9)B$#f@$D7m{UH3Y$j?=NMaBK@)o)D`>MyKQ z%`Zom(vyhSX#%X zzkFz&GlN5icG$RTUB}6{1GmjudJI!pwkY8IfG@rD(&e&teNwlTY+RJXnu`FOTd`QR z0`@x;oEHsE4Zw{6fQ;EqfM&6y)F$k%l0+XCYjmDKTU3b5Rosql!rbx#-KYFVgjzI+ zKP_BVoYVQFzn0;HEb_EqG5%JkY2eC%){u%v@RS6r0P&inFIFO#WUto4{#_{U05X3s z-Y+~`!Nh=8pws%2cC|6Kr|ni8Ivuj3I9M~0Pp;~Pn8kEv()M2fC{m4D%p-SDj>$1J zH_AMXeE*uOqwg89n`xTT{AtHz%3bvMSy~%)A?55lZlD_Q6HY%;;`%j-FwL-2bs!G; z?hg*59}WY_xDiZfZp&G#W)*(H{-C!wI7^|&*&u-j(X&Zd^Pk#B3yiCXco}qB$LPR3 zo##p$0lPGvh7ZW>A?PIK9f9*GR22Pd5F5>~2)M2Pkl&3+sMl~%wsGLm0x21s8`^f0 zEA+zL!&n&ZcXmA&tlA7_J0P0P4vP7@SGQL0J1|MxX#@d~RTe0B8}%dziP<6EoItpM zNtlXf<1^o;TOHRh?pmpf-_%LzmY`nD^Ho(RTs#<^8ulrw z5DJZu5UeumMa)Y;IpP#zc?IYN6X@+TNr2#wnAcn#_a=Suf$ih7w58j8*S=4@0hKG z1(UR{DLU3X^)Anw$A6FIERdhmvsf}uzx5@=mLR^2w^rD1N_Pp9fOm`yL!kp8yAPNx zCJ(p)kK+z2(y{B1pDP{YSDna0UIqbt*6@+PWqsOTr?hkiasW9~5KaTQgg?VDwc+4K zH-43Aqs2xj^+1;KI1L5x0@oSZNAZbHj@wNZ-J6J=h{v`*R(WXBS?Ohos%Z)H_s@hf zRnZY*5#BQ*Em7L6Hb$MCDVLQ{xm!df#Cx0W8A z{*bD(^7`Jr>qn!IKqd2PDG{L@;(+yb2IPbCwxBuM*Y)t0X^5J$Ut zhEfmes|qj61J%39E?#~z#Ljcd<4x;#h{O7lP5-whK>Z(0fch^@;Eb|=BF6cy>$|?4 z6&H9lFiE+z@!+i&h2&c3JG*4$6D)E265}~k1^RzOpNl92&G+RbK$&WhUU%XUN#8VN z!9K~aG{P{fM@bU8O)*lK+O^_#BfhuGh)bOg%t>e$PA+B!XevwLh*`){Mo%12`+MzO zPBPX9adD{J|yPOpl$jpJ z9-ZIo-tf!l*f-H^p=E6|yEKfQMlN~2r#eLua?!iX3rgTE4Kq46`Laf^4XubPDQ2r| zIW=1g{)LvW1k@$r(fD3@Vv8jHv^122RVa!5Sa~gbx#YYVo2-G=!(Bj> zfbKQcn%Hoj%&#h5b$HRAyXzF^+)>xiKDn@gR8y9ChiY^fXHzqFr2tT~I!sY8Pdr|5 zGxmO;yRK#5BFu>W(lT)J5@IwWHcT1i)BWO-(WEweItU}~!|Gm`GzHM(>ve@v#%IXn zFVUTh)#C=upCVITDOE2vt4}>0*A1NZ7mqIkjn-ubT}%t?l{bWxm%Z}24xpTf#F~}RD~_-J_rN0_^BF9ZsFgo$$)b2C0;4xD z$wNVtbMo;+Gx4>&v$Op9Z7^=*GU^jbqMm9dR02Mr$Z>VwsYDz|egYkrCB`Zx6sOeN zp&xAm7m?GDi^fTOvLk$VX6nOr{F~Rt4=*V`Qrl<$y%>V#zss{dDTcu`)*>_Frr>Jr zba>2SyKatpCDO1z&Rq}Rrug}S){qP5d>Xin1Q5TG^o=kr(HvhdW8F_yj`9abn>4x@a0p_fY$?nK6bVKr(dqo9D- z;(LiTKS#D^CzH&~Whi__6z_Y9e6Mb*S6Wpw9$936TEXOaCPqhyVyEnCnzE z4Y)Pu%vR{96%kA0?^SuZyxt@5&HN8;^*z^cu~ww}CK*6Dwf|&lmczn&i8gh> zN3nFzi*~w7N(rPhLk>^|yi7~jI+gsW$2HM!v)xAny%?9l79?<{yn5xpzUd9?e#ds! z|BjsHK>~M~;4~6BeDLa3LcPQvT54&Dw)$|w#3lA6ZjGgrK}@_WRZi+ehoKKT&~925 zxKi--9>sN~)IYICyHNn(-bJjfo1UO5iS9HIN>Ns}c%yEofYMKpF=jeUG8|>GTA!9C zIye}5)Gx5wL=gpdVWjAVB6m7?j*adJ?hR0OFBPm;dEz)8_j|t@3XV=b`c%l|qY?B> zAp8Bs>B|5G&AtfL)+U7FLde36%#PYt&pW(C^KNRQ9S)y5AFu)E9|*8}x+SP$d`8!= z;Ij9E{1G~w?}ub2;7>%qA|w5k%yVoLkK4LZDoDcGVkKTjT2JwDnp>>9e)zgY*H>P& zrcu%$gBa6eyLNVCE+aYBO-KmtI?8~36WxBo4{ODw;*MSz4tOGkmm=S5KJsvdaZM}n z&m6%rY3~_GALb(Ny+utN8UAUDMEt6smLUlP$;0avs4-IGFQR|N#}ZK5PXwcp z*t<~-f}sH4tZRgi(_0XI${GfWykj+6nE}kK{A4?9^f>yJq`jt3RcO!c8pAl-n{7li zEVv02_qc~`_OimONyA^&M7wZf_YCa#A#!&9NkVh|@TBV1R!onln3lSA)L>(%zMVh^ z^fL%Ge;P7*xz;}fpi8F=s0J}P0)6z3tnmcFJG-~LR*I7#I*=*Dg?EFPVaDawPpQvK zXfphmx+o5sTLJ3bGSn^ov;LO^MBIPCzMWDuJWn^})>(rDsW*kXeNSYC9W#=U54jXf zkm1t=Y3PvRTMh->9S#V6Aq0W>U}Svc@Y6w%h%O$Q>ICzWz&`x4N=T z&C*_*%tILm_2BePwj&Pzn9UBr*TZEPd32j|0|X;qyMUs`3k-`liV*z-Qa^JdkQR?I z3=w)QJkU;M%r0H0lT4sKn34dAygtz_CLIcFtdy;tMi;LH;T$ByFd({^s8v9FV< zhz^4!#0pM5#C8^<4?6&{`;@f{_9z!)Y(K|TUU}`^0}HeWg|*jsxPGyZYj$mshn4rP z*8`y^fYH*v*Nvln_!JDDJ~f!{3NOe&NbP4G<^=| zT#$J}VPyW*s+DN`$spfVg)TF`Q42 zmcdG#=(egi&N@$wCcVG$^xmRx7Yp7%fZ)&x1Pks?LkJ-R55e8t zJRbo(0_>?);)aUx{9Gnj!tx za6_sqtUGxeJr&lx2k-w*{4KGZ;0nCmA7ciQ1;c|vr;|g&;>5_-?SIhNDtq~ zUSI@a#SZoE`M=>~#BMQDv#`!tm*S6o3bDN(RY)7#7J3X-?w#~#+xI?7SdrpV|AQn* zOY8jKQYo+_^YwZ3epPBv2tjTSikM#d7U2i2hscF)Sa4^LdD49%sp+$1C@uhDTCu&K8BZss;42h#;2(;DLe%NQ#-YknFV z!sqTZ|+I1^hxK7 z?EFX^*<`UF>)7#TyAIqK(40qN7iP`tv1)|xZ_aW3oSab6;Qh;SNI{SJHN1iWN2K_* z5gV4h^LCRx2NRKS)WpZ=W|+sSS4@mj^zHQB?9;k#s2KVy3NWD&_2)k;vy_u1(%I7s zvc5h&2Jx^MmP1!;p8xxwi=iJAz0`VdIc^ck5DTgy>yjLwk+x;_1IT9p`SmvzN;`Vv zJXtWnbH~8^kEh?;m+hV17lz%TIK1B!8o#fKOuW`M<|7z!E3=id9ztmmn)|VI`_lzB zim^GMHBaV11Zd6oR9&J{bZQvv`Md0&oiw(ADJ>aO{~D#@Rd5 z(8fBi@PW$Lk$UecQ8{8Ok1EWaHA^@ffiQ~-jSJjo`{%##4ZQK*HXv$#z%t3!?{M-|+Wco`n#YogFzwsgb zlf;WPapA7=^2tzVe|zh9HZ5oWbX*@m;wzTJq}dmpLCdnqU`AJ1O4NEX6(Eo0|D4qh zhtCKU1B^IsNZfgN1<73>RmM}Y6{^%<-Qd7EX*ttbA^!PQK(73B7VtQ3uSafr8I=81 z#Kf56V0GJL8g&OvQxQz`WN@H4H%4<_6VX~jK_joq&~{|Hc0zo}YiNc3OnsI`$^O0RQTI~Zq-y+C7M=6jI;b2=s(wRM8*SVz&(JPv9ptXQzae0V z>a(exoHF(+t&a^h`>l-;9i=AI&_TWVG61gm8XG`)`5{0rj|m*jBYzw`zL-zx+^N!huGZHKs;5+a)w!yj@#Y0 z;k=}a2ly|b$EUaa-`KLt-k_{~y{s;LQot9Cvkguj$7#nCRN7GKS724}xJvBw}&YEWYF8(iCPCk?l<8)QOf_2@FpUdyQblNdo{evIqXj3=% zSyY{S%rSaOfG?RXKaMv2;}6t(BllH@Av?P4=A=tRSaKOX9_oqSR)FUqyf@G1o;tRa z=?apIzO-1SZr#a?y%SUsd)0Gm%K6l+uJrn@n0k4 zME;??xfS3sPVz;&@5jIJfp^;}bNuk%0fr}3FZ}R$J?UY=+L6|>)UHbF zkHec=Y>+AGe^}_bkvl?gT(K1y(Vb?FD^wm z07Sj2>ixH$g7V{|_lGQ1?a5_xiJur7Uq9gT6H#e*_|p{5>4k+9*>v_$f4RpHFl^!W zC)}`?5V|+?vJCc#nvRls8#Uk#>zc+^ZLh$tt*m4F!-Au?EQGNDvcq{uH>)xX2b(J8 zMz~l0M^K=A%7FN#OfKiS4@uQI`@}=v963U%zbZ%8C<;qQAd~68+rT{yGSl;RYK_0j z=W%8t^M7?9{o=jxP$v%x(P|May3!^|(54h{ys_-f!w2!$kmbGc#1!Qp9(dAq zeFT2wwt_3I@Gx>SIVzVUFtEu&HOukeejF`Q>x<;J7Pd`1&(U0FwK@+OTzvxI1F*e3 z_l^}N(x^oxNkStQQR{iJsEL9+B1dK1w9C|x$i2cRCt_N56>XsRzafItu87V7e!b;s zR7cUbe*jt^Om(FeVr>!2k-hjeHW`41_ZUJeW7VL{b<5wy$)0HJNMrR}0$aYc@3l7p zjulIpTQ}i)ti}wE^Ye**5PKocEc=oAIponBrJ||?)YXZTV@?;@!*KOH1PM0BJf*(D zz{S80S9ERIg;wg3tu+WkYZoBs#XL1|SyJAX*GXen>2n*tI{l=;=B0c!20Uc7g>~xb zO?cflv~~i)EyuZQeKMzgKCsJOz1H){5kB~I9_&ELXiH@z$>%IBZR~lLkGsMPHj``p z=U;Mfe)8A)C+!Ej9&5zKYg&u&zNgy~(PgjIhW4t5Vq%EN25gfUzK{Iueg1}*&jmUH zzmpi*18d#4T^g<2Fl`!K!vvVzy=2akMA2#d$n}j27eP#Xg^e? zk;jnSKP@$Qml9ME=#Q+^)Wg+C5t~;plRYJD-T(2-f3ZDxLCL(^vb%bOxqu$)6N)xP zkk8QETaO`ac6p~q&j&`Q1ZPwVRQw*4z)LGEL-J;`Q+&qxV&hc8pAl;T~LhJVdWwM*I5Rz>ibDgIy8{ z3OvzTn<%kfZzs0eKYaD^!01~93*gwa8{&C;?0&C|i!n6A=#9p15&4glSz`e#swHu> zrg;qzv0^?YCpoRo{ofb0MtaXu`1@@|c7WZG7qk2g>q?-4*WGek0v|FLCgj|RFQ!52 z7@5m)?}evLPGjG4wdI7OEq#;drq?iuyX(<23xtgv29>En9u9-EZr9qoeXpP^SM?(+ zXI{F<3y}M3&(a7!*Gt>oGp9`ZhFyQ5%q8Ld)rKqA(i73^=V!_}-m&LVpYuMwb|tld z6J)2Jmrh3C35B%@PTA_c#k5trC9%p{gZtq=^Sl@WvHX%Zs0+(?SMY@>c$`y~Jf%dp zmCPM`uE4x1wp1$JQA!M z{AG55D5JchkaVSynJSLPWyN{qbv=1=hMvisW!XuUe)arcU&&uNAb!Q30(fupUB+azl`TL?eeT1z57_Vyo6rpfP#@&l1qh4a2)s4TQ6IqQBRt^3O zo0eKN8Gk35GN#4}oANBbQV4{?J%TS>_|k2kj{z6JJ$hZoyIDhj4xcJb?FOKNnO9DqU;v*w?!s`x61FPHV*#G9@waD67 z+70Xve1aQng6OuWiMX{C_ET_CBHoU?cwg;3XKVBBxy+7fvpJP47XUQZh{MI9!UfO# zDE4&L4LuI|(X-^yJZ4b}M{3rTS(r{*_Rw`favGeoO{2Fo%=+s>8mkZC_fi~ z9{q!cE3L_u6VqV*5*dR*O{vWnAN8)*^3GKV|S%ch($h8unXRo1Gqjs(N3=xMeolvX& zEAXPzS#JL%&Q*S`B70F}5>1%tzS7~EkQ>*PvgZ9wtL!?PspsD%gsrqxJ7haR`Zp#N zI-2u0W3A&hV&C2KRMrO0U_Bu^&J#LzQ_BnG=YI$<4$+LyYF_*r$-LZ{tX@2_|agY zH@&=pX}(b@I5FHOeTZduoty*DioCU2?|-OUM|k}}(d#o$NiA)^AiR6ShRJ znN&Tsz)@wY8CWGUlTK> zk-}z_I||QPLB>9lksvP*+=2p5iR&%NFLAy6x|;8DS|KHd`nF-Gf_kYSay)dZ0FffB z&%Ju-XZjQU@WFX!!Kb0#`;M$9G^eU$M7tn9fq^iG5TBs_tQE71xNe?Am*PeO;Kh%N zl1+Ib4>mV4^N>+3SvL}6y19^WH`oX2J5y%okTl+!6&EaS94CdA3nivfy5XA6vEqOg zfQXSbSQz93GC_+KW32-X+&WML>XC0e-P9-ukbnnH3%&0e7pgYiS zMWJMW6VSOOF(>!!ZFCv^yGlwV+y-co{%cJ51NbJbg0yvPfJqO?w+4R9JzIPl(Wbl2~i`)sce-|BbWdcJdJ`KUIwaS5wCHYSF0<3wzlZG?^z`7KL+gD`s{k6zz-`xFJq^TS9>Zf z%;q`mkW-r#TwdRWXyG%zTa}?DzP$`9xWSRl+LN-~9WJxz1A*Pz)Aki`^X!#6i3GUM za5D?OZB+bft>&DD$qVxL{c1^;2{f!i-MAcm(qZ+s2JHnbMtdmv$>FxxuB-k%HNe>==jzX9xaiYMu^v7<3}6 zn|c&|P{U>x@vx{(?&xC}$RbPsnM~16;Id=;HU5qGVf0@ESpr z-`t35e8u^Q`oxNzZtx^OQ!O8-VEN=VqWW;~_oIKd?>%JOK6|?j_h4fIZ|?C29B;LR zk=O=Th~nBWKCo;newuA87mzx-82a8PRZ^abH;?IOmPFok2hYVRsHlUtZp~p=!N#(D zDt4JNJrvH2VhbUD{O2W1jS55BbC&Zs+79TbVR^mfr9wyKciN&X9XtkT+vQR&qec`sbT_ToJFQ^9t=%ue-6f5+mahqWkC)YM zLFuhIqHPBmK(`6C2SaGnO;;>axyIA0t~IbqtJ->qg!))DMDDRLM1A_B$ft4-C94z= zb1_);;lq2P_QaW&b=MW&yWWg=C>=rJM<&miop)bbao1re(m@{b^L z(d`27T~NGuv@iw>G~GgW}X26LXw0{B&Hm)73+Gy0(^GbX#9&;qd%ah?o;q;=(`u z)riZt-^{kw2gqCSthOtJ+CL0Lu6FHdZVR+s)!Vfw1Nfg%dJu$rPz-O23JV!X5E8QA zGF&Pua)?HpA8{f1zs8gNj=i1kgin-c^0NIwMPcN6I7PrrzR{uOOr)Ttq@=jSYIj<8 z#`&()crcz+H;045-Ku3fEEb!pK8&WCnpH1VnMjuB-oFbOCv%<_FDF(|Px_n26aXJU zc2(%NYN5YIX?8fm%vIEQfMciX<5suE7nF9lz}4HlvL`o1-+$cH!<=tlqkp@i$#Cvq z1V$+M`Y}_CO(Qj9OU1pzCZ9-vZ?g~LBB91t_zEVy)-;rY>{|+V>ZUu0JC!n#-V&nK zcQH7BeBe09eN&hrbaoeQE*8nj2fwzHM@lW@>@h*V(MT$}K(0%x_9y-Ecw3=Q_;L$C)f+T!hJmGA;m}r>KN7_Zxkg|FwC_JQGw-MZhx()I@$RgEZXMQ(SK0r64@ih zE%YMzQ~`%xusC{oyY_6IUSFNLz*8XI85g;pJ3s1+Vw>JLmW?my2wL?9M0>`~$+=TL zo*&J*u`ThCCvor}(^@r^*y*fOWt}Bi5}5`1-Cco1GDq2I=82T25uP!rurVO0Sv_9# zMa6LeGI7sgCwCEWldN@GQVzM4(d4`8g}*MC!tpjzcbs92^(6eX1;Wh?N9KXu~iC5e4fa8 zjWvXB9?TY4p}t{f>uV4W*4mKzZDX2DK!M5zj80jXNgPFqb3{^EQB<}00BH3p8GH}8 z&dAfIMeh4HEfzw?zK7EH=e`?uxeW*r&Y&$5vGO{^e&Y7Pw_90tAN$C%xld^Jo>X2) z;BsD;#rC(xt-g4kpjS48HAUn6puujx-F4d3LJ{kc$9Sv~=g&v28&U zlgjgC&>X1$J{Js@R@s4#om@_{q0e?tlS!OZBl;+WxQTfYD77z-*d=3rUnoi4r&L>T zka0Uv3ZEz9!TTpH5roWS@_b&SJa-zH;^T^;d#Rsq(F#H3Hhi29a^I2n@pPItQ?5{cu{ID)f2=IyP5u>iv_vctA2;*CIt2NHyX5t;@(&l=7M=U+siP3u=12 zWcTeEbr27d!HH|apNVo~o#+~y3G4V`BJ(c1v8vtDTnv^l&2o{0djp^5yA;e`@M4l+ z*>x93?UK-J;yj0h6=SDUZ(#vUu6D?zkxmiYHr^bBxpaklG@+(Sp$uA(<@Dwy^BLmM z|CIkYEDyPrl%jMIJ#nJKA#~-Oj;$kSA&2k6iX6D6ZLbuUE4AY)2Jp$425&id4Mez- z+h?YJkae*U^we%%5CoKiF%mG40#NeZ@rtT;QbP8`;J%JeAAh)a6Y`Abp?*Z$i9)Le zSZb)6+kuu%a~UnzZtEqm$TW~;UP&L7iRxy4NrG`=*SL%VL_Pgtw!Tm}%~OB}S5i5< zI&wJCtdm%VGJFTXM#fiLE?mDq9*l$Mrbl8&2AH^ybU%<+EETMW7%v#nhtdkx?}ZD5 zNs8{SFW;#j?a)gusz?7TPnfGAkF70^EjH^NYw~y9-VH3_p7^1ArQFCgA7q-X7%7;r z5jB0iwWWUjzIve)bALUYRQVVjBxlz3W2v^CQgvBD!#7d{u%RM5oJnibTCQg+pK=t# z0`jUu+5f9CQma*sCZ_GloNZ>4C_#=oj4eOP%(5kyWfHnhYDC{SGt^zzm-wkV#FXRp z`Q|%pi?fqUHbjQa-p3Dr{MJ?391MPPKsBkxpkFg%+03{gULsos zH!(`ZmRIq@9hQ=y(eVueZ|t$hn&yqZR!wBxxz13og}e?T=+^67KgU-g-Tm`aLnxl z@j}Ql8;xxJ^N&nsf_DpYB0KcP(ny^w>Ay6lswLmISPRJ6wTIieb1w27@7sQHH)*@l~6m>*zz5lT*@Z#i9`X@bbkygelTE`sx=-`D_sS8q|m&~bv|V( zAuA!5)T1WT4%Q*2T`l9=?V;PlJ|^bICf6B->W7bffL#E=LN-bLO9ayO(YdOE_n2mu z95N+o*`vJVrfjl|q702nNKUuDy8)a5v%ex!n%ku37yqWCy(LQK6g3bs@z)Giwl)H? z^KR2Sz=Tf8-411R!rWmhK68FnOje!~U*~bfWy&3df2Qz=EXjhpLw8gZkay8I90v~z zezI+WNpN#n?0pJ1#|vAKy$_i@n9H_!7m7*G$UOG?woJWbpdoFpzcy%9Mr7rWmfVB+ ztF#r6y)!c`TBzixm=t72B=`?$-VW$r>riLl6tL>(M$(8mu!Llr=FqAJ`vxCc5)|Lw z8&&?gmzy2a*@drjk$)jC9wh&E{LBJsnaN)6`XghY4be-5Sa zI0>7~Hc|hQH8HE^M*dLEiwy~=lRiu5lx{$Fj`G(?Z{%4xZDALcoSM#Eyyuy?Rf&z) z<$z=}{ZzZq?izv>w~M27_Q>?d{I;*Fjanhm8}=+T`~hIvd*d1d3&BLx@o1LsFF4hq2MadzM=GVn|;zwzQ2@{?)+;ETTwP0oPo5KHJ@QZUa9U zV(7bu;AD@|?8<37u;~%J7u&B~n`p>u+?Ntc6d zm!7%nB$cuO-Ew>fQb~_|dQ}JKsnu>Oe4(^Je)d1OUKhM~aliQ3XE)&8UXb|Q8Ph9+ z@$&w=Q8eO#Ojf?efT$)_y^v9N568$Uzjk|m*;#6v6~QPxu4&ziDl3;m2v_}Y1>uA$ih8&e-3}g6j)C06;UxUGeWu-t&qCc?zx<3 zVIPS`r5%kcuz?CT+Dxf_Ujv$qZ?76PEzTjAxwdN-$d4R(j1=9aQAZZ9?1wUj;u>j` zi(Ew$s?BWDqi-X9U6s4~+O_xfiFbq`E1WYchP9M@*)f^1ZM&ni^c>~0Kz?kt-*7Y) zW-cjt=2#gDrleg6>$X-B>oLZIh4;Nq}UM?t|`PlZ&nXV3j*t0 z6P!uNc(@$jF~6<(wFletqt$SSa1Cz2MD~t1Jyg#ULLYw(=I}%zLES!Phg_PA4fU&j8?z# zTb0_8%`Stg<+P)puWGI94=m$)`E)R;E(7O09tSyk!yBUadBWT1 zJu{MD_dO?WX#HYKYY7Q@MX+mL>l0I;a{c%1lsb~n!yyHzVN%uV zz;va92o@1Wt!q8P26a2}a>PJYegh%S$cX9DFXNUA1u1lk8*IIOIIhWjMr)-kgetVe zV*PxKM$=)RSxfg?e9>t>pptYk)PCS%f4EoeP(@1PwNR13OjKBBNZe*5Y_7Fc%nA`_ z8N(HQ@W!9z2q)XuM6SO$c~dRiwc6eXfInJo+g%>~!(Yt*rZn8QYWG_KGZ;F?e{ZxJwiCL=Lxc&*#?c^!L%J%Xmy8R>n=)niM(TewOqU+PuN%{^;7<@vVp5ra`*C^*MSD`W+iE>{_Qyp~6(w&<8{2Y0EWwgTH8* zmbtKM#b9wO7{0j5c%L6Y3~7**-l+U`Z)2Q7_zLl&~ z#i~KMXP?{izWnnHXoV|0X@4&q0vVPhE1R@NrFlxr`d7#S%x^4frsJ0g1N~sTp|--a z7iXlMaQs9@HtBly=BA7Pn9tG!;~TNJYZ7hhAdYA< zG2}R7Mhw1+W%U{bOcUGZl3yd|&59IAwv`@B$_~8BZ)|k#l`6E>GM+{w2{Sa1Z}YnZ zugTwYy^1+mDOme8+Ky?VvFUKFW{WFsk@A*O&^NQ-p$8?st!i9NMN`e+DbX7~)~i-H zWm@5FmVzN19@?hT?64m8WGG^(uQG$sN$0QO2|h)_5N2@#`W(2PR%-zrt-#kIryXqY zUXhDq!#O_N2%)3#6`pgK=QZ+x17aP|3TU55bQ2q}zF_lN%3PPR_6Q?73wC6?gJJiW zU9my6ZiqpBAj2sWR(qs6^#Q0)(R`K~cC}QJQwDy z<5Jh3YVOx7&l%rq18*Gg9TL4)|KkM!?0sT1fAa3SH~dU^uN4}dxJmvsM(t70IrV)m zA23o7nD>UlifvP?twlI4S4cEKI)f^m3e!M1+yl3Tgju!oot;pn$zdUl5bQhna6CZ5 z$0V!yS^}$r^5hLIZj@$~^wG(cZMHc=yz6%y=GSA`WGEYS$C3f2*Z``q*h@UDQq&1% z2gCO{9D=3X{6CSR?Q33)+cPlaEWV=W+!%1*2TsO+lhmIUlOkI`@ne>#>>lx|p?xph zMtg2lL_CBSsg}&eHJnN4bBlJ@=rgcHcJ$uZ%#Ib`Pmq`LHm#a%;w>@G-_X6)lSg#@ zgw~=D6d)X|s9@Yj7NtH^5@<}awFze#hmjZAu~9H0&TBgr?4%fWrV(S~F5N`XByK13 zwh<)G6dZp;ZtzdL<^fo~>PBjSNrPPU?nmlQH*wpiN3_g%?&_V`+(NvrzBQ;P5^FBn z4Y{nuV{9!$$DlQSWS7yfH9elfx{7s8|32tg%Os`yZAAhfczmu^0XDyK^~tQ0cuOSt z;g;NN=sadCXlbmJ(2PgpFQ1)+2iWkJYfRn}fxlH?XUjm-ZY5f-h%^5!x!caMg;48V z@*Z&cWw&=r!m*f!;Tkzqd+f=tMAZ`C2(KnPucA-Ssx+{env|Ht4Ua4d8wBgCs^M zoW>S2GwcUbs822wCztNRY99WTlBO)pO@daYo<8aED+caWT7MaK&|Q<)+OCfUd^ZaN z=YBWqjRli%rEGHf*LQc7%XCw$UzU!GP*$K-v;Yx=1C3vqI3oJ|_sp1m#ZO`1sPol= z?8XTiQRq?LJic5G%f%wc6@KanWs5`R!KkI=0~4AvArmtKoE|JBlBoqjxAR3CAAa_J z4lZg8bw_C&?oSct4pr6nqU{Vec5gTB!whKs}PWp<_S7 z9p=ss5`7uB?$ZNWEh`on%@TWq{7P!yF$Vep#b7R5;n=sq47RnP^Sq@SMo*>8YQeOl zOsDJJ#ZQ$#NmW}nVsQD6`O)BK_a0=+A10^R>yutolg@QcG1lSs=I*@PmtT@E4Y2q%B5mC zOQ|-i4KV)g?1O(x>UiM6$CQb>=RWWK^5!e06RWe4IoC7_r}m}iKsb3~O+#{zv7gUi zEB_yjAJCz>uW4)dhM*;;SJ#Cdx*^&Gl@lml%=eS5P#PRvdO%F)5zl}`FsG>YnfGmq zhebySLY$6FW4V5b^t{zlT4{s=7m1&ExqvlR$IYgFip5j0f_6m~4CH9@7_5Jb2AxEE za>*lwRGwH>OA!y0OZ1QSKBx@bzRk@*V>&J&Rh||LKz+Zz4U6lJ?S#jIZhX$w?1SIu zJ>x~;@O@6i&-!enhLj(qaOg7;bIy+Mc)vlTQSPnmpM8$k6yQj$iWdJ4gQkiw5ui#F zQYtY?wygEr-Wgg0wRUfta34av;rkd`ZHZPN1K_DG!BjR(o}(OYeK1Gr3m!W1tZU`H0k40gv?ghItU+hupm!`MuM9r#KBlzNi z>Fup5c;!8!G3=}Z&8v^~3}I2^O!VM)7uV44mm%=1M%&m({ACj{=$GMejM}6`ORuE| z+7zC>|EQ=V*9xC8Pf9GW&7k`R*92u{-{I-?oh`M?ftKy^28WB|vz*zr=i)|MW727L zYFbPFndc2D*!IqYYXuk7lrTOJQAz}>nYi3rtqEPy-BwqA)G&HP;gjwq&)-@ToCB}d zIV}et$+>bBM7zb&N4gwU@JxVVG+O++av+y#APr|P;XiGX0GB`|9BJ#Uwa9Nbo|= zGi5cspJ3Lae4wS0pF%3f%Yudk4}??v8u(wctcHgZokI9gd~WAWnJ>^} z<(!E{;=D^QmlkhL&=X0?&4ne#y@tTcP_6K#-M(m7JY;({8ntO2 z(9FF#i{h=k?)$(u>Iv%eVl|h5hg8>jG`hq;e4o`77NoQKV#aRY<+!C|9;;Q-?C`e1 zkty|~XNd7DR!TJt%Nw)Hr-NJ{=)oArw!0cdh0@)!K@y8lr!d}5zVe1kt-uA?~ zJaSFcNz;~eh6))^O{ff z&M*P3xxPi*jERH;hV{x@aRwO~O!)!#qz${aQP~D-TJi}q=pKuV=?@9W<8-L)*22{C z*5qCn{xP*&f=LwluqD;GQujU2Hji%x-TKsErkfC+XNetK1x8u91ha~lT@9%Q))h>$si9M}*TYd`JyZkvzFh1w7xehi9a0d9wDx0P= zk7;_nEOGp3_gNu_I)5gC^)2Ru;_dxLBMQ-Zje621srN^^j6a@Uc`(19RVoyJj2`Jh zo>>IjNNU9#l7LSD=R!Z*wZ(ZXw0xXsT|sur;t#(h0oYoA%BOP;40E{@_F1_^TtpUp zM7qhx5);3?^ZdBTEn?w@`7%cFO72Ji2MSp$lfU=(6Qh4CRT+NX^1+;2Wo?kUlqY)zWck9Ok_X;L7j_5ra4!uZ}DUp`wkh4h|r z0`4WqsmeG@{e0h;FwCNT44ws_SC+nGER^xsQ0n>pXXvXo0gmoF9j@ok1iL4jA+<0q z94QkK6^qful1ur6;`<$!a&>B3!y(5{FE5l&!pz07s=*TBM!!qy`LEoLL1C~`h#%tU z5o+ZHZG-DtNFOb8-Zu$y^ubqeSJq?}Yq2_~H4N7~6~@@%Wz~7?;t`B5SMdKv0iwTL z8pT~Mw|nhUZ%K>MR-B~Io84>Qrb9e7mkAyc&sXi7Z~Wq~M)l`|*rp%Wb-2-NH9zxB=8S zFLImJ6P1))`A+oUzQL9x=^f6h0V%3TIOI1DwkY0`8Lf=*NaY~AV~ngzUupuZ{7CC-k0(3N>V<&v9Dp-_h}*%&&&EZ9?QcUeB^0 zyOa&sTmW6tiEc9Te&nl2>TZ%wh+h^yhTQz9{&OzvHnw%MrtjW`3|AsEU*OhN#(*oc zHTAZ6tx~wn=6E)iiQdrMrK7CHTsT46XTg`gdw`9WlJ7EA?0f{~CNmq#+M^c)tJ;OgYC-hl{BbUq`q z+F4V96R$5+b9)$Xc>-xyJabbBu#K`vl(8KQpKkbYd`u2s9DcLjCfzFJPJa0I^gq0T zf4Bob$EojDiwK(QgWZ4-`V zMNac?jqDg6 z(*0dq!kKE$9)r5A+RPRd{$&W|nF_T~7^y`?jLpj2<7C zFD1j5LGr>?%~BqRHCyzcqQM7oP@UWL5q2(V+03*ux!UA7r4(vimZRVkHz#hfdp@GJ z$r3d9<$2`FR%ZBSb`_q43;R$pT`YGFQ%BkZzB!ROqmnvHH1^-A1 z895*E_TuqrgB+mlQkW&C8S_Q3z2SL{@q8HDtE+x{eWs6wHsFjOZzfyWN(`n^Chbv(h)lnc3c9M(o zBwI?haa<*GjR~7=2lBZ@I2mSM^-r@$eUQM9Kr&V*QCdy@bQ&uRvLODot;I&L+Gxp! z(zdSuBuqC?^KRunp`!8C-CBjj!fjzLw|bp(Cz2a1#mv&T#5tlm24MYq`ti9A;<6clPNBtcn#}Zyt9)-RfEg<(rL}Nbz;xG zPz8C$zazVj@`)E~hs_7(=M;Sg0k};NKBAjs;U%?)WmUFmG)3@L=43re491wL+v<@6 zrV%@^Gk5F@tb4JyO!wbWNLcf8`qYavaK$_?U!7QHb5#1vwQM4A>tc|f&(G8t z_^_2+re?SA6^N+Hs&|?wo&EJD_!Kj1(_V^rRa2!KNZa{I*SOAlfwRHUBR5o|-Y|t6 z)Y~`h0X3GOPNnij3aoC>Va9)uHtOrI>Keebz}neMG_9D|Y&9%8&EvJ4#!RW(*{P-Q zP6u^M8vQ3p_H*06bkWU2ww??C%M1GrFx&EEhSLJzV7QPl&C32hHh6_sQzF2Sj09`R zGCpSm8COm+wbrNrv6AiSmh7$_TtCPgnPk;H!xL>Ef(`x{7vAL2kB@-6SJo6TR9F$VEm)>Qsyn%`gfmjOz|LXX@v+gy-Tb_A zWZyTI6ZuH1^mGYD3L#XWchX3T_Ca)}5DA}RhyEm69d3Ca$IFV3QMJwC^2hHZLMaVZ zEW^Jm9Q}TC--U0$2MA<$`(fG2)kT>;!s(x}mVmp8$!RI$B1(lT0XIs$`lvcR_(-9F zVNnfti7Op~ILrZVp`9#z!JqQrbhl7w{2Nyh61b5E{jML`}_B=pEcQl6oad5zJZAHA@m z7=;1y9vYonk)aP9$tcq0Fi-5;!OQvQP`^}TM23j)fc#?%B+i2+{J6yb$JSRz#npUU z;sj4fu*Tip-GaMAaCdhP5F~hz#)1WRcXxMpcWvC6&iB3F%$ql}YOU`3*InKBo;r1E zpS^b_|E-_@9i_(rj|a;Ra}t>zdi=^Wybd}gh*R@9x~&1(Uqsk4h+Dt({L((b+D3t_W_u=K=Lje_guO@fGjpM$6dw1?0!B{}XVW3&LngF$vF;S-jV;hqP1 zX_4<^w|-cDO8fUzn8@T+Q4x>EyPH@iOf1Rh813P<{XO?*zfjbPY;%tHZea|YP%wj{ zX}s`UaKxh__)%=Kfjq1YJP3Y!ezmZ#GwQNs^61N=&1NrKYsGDg{_k_%)Kawcb%NoF z1=3{@_AjH~6ZZ@i`i&E?_humwKYlLb>>{Z@fK1#n@il4XqwJIW?zPI?KWR9*7vt}M zu7rX5WTBOz-mJ=SLInIbZ~XmK$3gk{q4}bgbGLt_J(O&71h|617aFIo$$}~%oX_(> zZK%xTRqT2g@jxsX&-^in9sJXn-g zvOJRqiD@QjJwV=#`obAct1X)657Qkn)K&BsWt6Bjd$wVsV*)rxHuShUAE9R2qlqNB<9Vz1TpLM`v9L8u9wmfqNqkSPmTm3JJ! zXo{_DARs8*i)FU;s53Q3F;crS>w zdjIaEZO3#n`ulXf`PnSmw;?&W&dBpR3ZXy_a1p&|Zatvw;AtpH`=Vp6jKgnM%OGk3 zH_!R*QseEl6-Odnj{25>U|ctm`TlI@zF_=T)){j1l+NjhTSj1Rn<8NJw;9Fc!v1~Y zPkT6AbZ#!j#aN^~4FXkHE>O8B#yE$S>J3f1S`$KgC9%UWE+{<@?p-Fe+K-h_db8Lb z4)slg7{e1ImA1Hl;0m#p7&%(F?2Vf%2z}9rDjlxjxUkEww9Mg=d)L2sjQaS>c05m` zOjHJdn}|a-f)YK%>YXpnU_FS#gP%wY$7T6xhZX}xN@{6EhLFpeX?PP+)Z@4T-+?$# z{`n8}R*@$9D2ss9B9en_x&_gB)!ff{61jis_0HJY&YvBv%f8PO4f`g~rzP&L3xW^1 z-p@@*&(`!<3lx@jvp)eQMlmHw6>S;}y<;F;&7s?;;IxV|86<_)&CGLV+^C_ZuINYT+_b)+B4yOPS5>Vml63tDawG#3c?x)`!!CD(n!QMIAUTC5`x!) zvR+|eYbn|LjqdvCkpCoy^hwiDnn7nS6&m$LYDjCW@awcVOrt>n;{1}PLEOV zJV^fO?ok&z&z6_7!g`qn(HD-dhfDjQ^sovQ3SMHHppYKTmmj-_#iyUQe-w!P(oo~i zz36bF(t5w0Mm1+u1cufY@%Lm=z$NjSAEHB{#giI04oS%Y>xV84Mc1OCB~-+N=P zJbJc7^(EX0m;0TGg!%=@_16a|F>UMRUY^5n=OubHD~A$Ehdx_0Ea9rZAp{Phuk7Cy z;vdL=cEoWptyiE6QaJiMSk+SZnSVWgH!1J9FAxf@n3%%|{7H5j6vr{Kxbw&%CS@71 z9`|G>V*Qo@$|30HOA>x#KolI@zA5+iZ{@)yP$f3iJWu~Y&t11<>*m(5yDInrrs10} z&k^_Y5!i@WFu}nhNx$VGU25s4N&5XPLmm!$qH<(fg^Zk;*b$4MQXKs~Qq*r8&AJkV z^gDXW2Do&tA!eXJ&y`gQ58EytlfxstBwSQ|oMnov_Us@aU4lcP9sdf<4EfJc7enC# zostYt%EtG{xboUoHb0N+U)3~<{5JADw|N);3Z!>SJ@@N|@7o_Q@Az>^`Q9p%#8l4j zt6aWfZfg7}(Hu)YK&Sri?VgmN8|jW$CPNeE?4{a$8&W!;%b%2piYrJLm62Zwi}wO3 zCbWFXCceJ1pXqx(u0L?Rk2x7++lwt7*J{!1nA$=ES!D%hAy2CPd56&`a0w)u(-RI@ zEu?9}m5e_G5iAxH=fJfeZ(=y!+|za%5o|9Bqg_|>(_uZT&WWZ5P?HW#%4AoK;{E9S7L-dYC0y;{0`DbVXd)w|DEYkJrLj zO;?$AGy6x(ZuzU=a|w0k*YY$%59#&X(^W8NcE|a72&IQr2H4E(G#2wO(qT|&ZICbu zGc}o*Tna}>{YlT40A%eDa77LB?^R99G<}QN^5kNVY*nbt&Sywe?IdQusgRGCV8grY zu73K4ka4g;L`DW34_9^ahLeRdc<`1+nuI@c_Z%DnvdwI!4M%Ok#|)tVGBaWt;fm%M z$|DzJyymAISdIw2qMcZnJ;j2@>W9raY_%I#y|s8TerU@EJ`Dw1IlB`;A?1lv)j4Z} zgzC{RngozeyOMI+L5OpTXGE$@X?205%SUDZc)xh8==h87-)v!F*=Z&ftZduyX44>K z#z(KI^Dai*ic+lIL~ufdC;<-Xz(1&4n3A>zLtz@fEJ&o`RwS8?JXJ1ZHtv@oIe_-r+6**MlODqy! z%U6i7{{v7N%*}S5#q4iTgkf@MJ2%r9cm2t$OYFu))OuU6^->SCoS~dcu1a+Isu;m$ z&ff8b1=8B>75W{aqzdof974waT|ZDisKZ2fYR=8I2Q?C6Lqp~`<5H*8{ z9-VqZjT1u-BbR3tE7#$=?Tz9#rS0a}x1CklK(l^oTbW2~*C66D0Ot_3vB}tYuy|~{ z+yS)?1RXA!@Q$G0OSq_#AORfwnZ`3%ZL6%~k>VqzvaApSkomXJ`ey_D8?L~~|PGY(L^g@zUspocaG#SvxV;n%<} z`(_Vty&{U|NEX_dmlXG#Dol&In*)JnV-8nptePfAD-DlzLn~rMWWm%8MZv+_1$hEH zn+e>22P9`uK9_QXN&lGB&eqAMCknt<(wtOP=d35vTZG)(GWRJd-Z)SEs~9bm4nlkF zGy_R~2;SSW#wAS8Q=}(6Ak5pwHLLcQ#MLOPU(P{$y8x%1&MOWkso3Wr?l*JHhlT;U z^l2^`)7(SOXk!Dm%h{TUSAuT=q-@s5Fb!X!WJelP;V#Y4L2Rx^(*{RI4hoZz<%@Tx zfA*TqfjYGja*tlqk&!Y$M)#SeB-#YE@_U|oKDE-@95^6@?lI;Nfn~`wdsjKM@g9In zsXQ1AJ-hsY^daEGM%P0Yh1$O%i45z+47y-zoGaR{Rd{5HpG3%<^l%Z`_?_?H z#CfsO5F$=TH)9pT$d*cLVy=EvPTWU+Q zcCC$PF$~zW`fuOAfeKkY4?8NjsV2X%-O>0KB{-_=mUvL~{dzt{DQ0F`GWr?T~xaM?c;vc z0D-#%!7HLVCYxndp~( z11}h21-;c$GodFmXe9pLTqQSy4NSR=;d;m zir=3QyGOFZ1fWmzq3wwhXZHoyIm0W~=bd&2iVzqxihlwWw7;JUdpD+LTx|p8r@- zWv_!3G&zV`>87llD`{UjZiK>l7Rn0Uuu5mMFDVQ0HL(5}nFxxjKs>4%AXJFC2twm; zr2(5*S9P#`6csw9SS+ z=ZT|ebkKMIM1qn!FaXHctw*>^^oL^nU<_K%%D^4r8@tSo=}@-=niV^)zD>kGkZu@Y zkgc-kx_)8L6DPNd%~ILhKG0_OBQbPYKw152x9?W1%Bt`E#zh9@02lZ^^6Uofs5kAh zslL2b&^~@reB7+p$aK_`&m>ECr(cozir24U3}u!$8V3GM&!*vpLnvjvhI_t?L5Y=@>a#<#8&zC zbiyt0H)rJpTsoZx$Q_heK(obsk~x>}Ri|S@m0HbJmneIfGgAIJ z+p#**JXiHur&}?cWi&R$kuAu~)q{#4_(wEH;%~_WaWa0vy}c=AQsfkhjTFp8&R3+* zNZ*Teri)*_iJ^6<5l3gF2sq<3)?9Ap&hY&u(#8M$XU|{;SUk9i(7|4{3c+0|X1|;~ zSl^vb{lp1XF|TOz6C5IkMR1q)aVBq3>Ypng)jE59r8nZU1>&cl4AeNBk-k1+YhO3P zXgtm&Bou{0mPeY07&nUK-^`+jmpeRGS3@nou^6sUM8eduF~Qud1b;AI$)3X&3RYg; zQt2`h>KYu05qM>8nDUmKm!+&MotBZ*2-U~P0h)(zdP&r6u1~*!1niK*!#cCB%ar=*t^es#cDaPt~pMq(!Cp?y=k=Jx2J8m&+txgI#NAX zHv5DPuH`0yaDIMWV&`4(1TKuL-i!@L6u2iLr%CT11uLZbb*GV#s3qRlHY3{eMC-sM zCE$>8P*o7C`FO0Bb(_EV`q3?t)>7pAIPb;u2^Qj-M-R%HUCa4teM*CCkZu8CzgYLV z;L9cHIsC!9WChk@?~b5jWIYC`@_ysF>#@1@BaGQ{+fyRE+W7EO_NC8p(WBi(+ntNH zeOunuZVA=`x5@KB$J^QIqBH)YUyH3vjQrEX#>LC`(Y7=CQ1(cDT zBv&+$-Hg)r196|O$9&zie+$6=2rWsAXX4%RHQ%kbNe3$;eA zopMpdL@WWr3adtVadBG~LNsc{_A1}{K0%`v6KE{QHAA7pA=bnK4yqI4af~X#g}Ol{ z`{hB$%bX*0%ak~7vqJhqiVN%VlyP+)GX*JU9!y>1R&8%uiU%pF{NUDwPpEg7UQ}0j zUj$am`{Q)dn&2J{({M*-5m0McTShnS^hf&nT<0IYF!wZ{f$?fb6!N@s`;k-lGSF#*()u_qiEt z&omw8%0AEAVAcsMuM9lb-DiC7kzTeNHi!A_mKNBEHrqqoO#ObAn_T>F==47FoNS8O z`LfuYh26T;3oxe#JSU}Rex6$uP8|aS>Jz7?oE;jc-2;M-t$N0_f!k|t zty7-PTTpTgK^YojC;v_C!ftt0XK~!n+_9fA(|8O`iUw@s6U+7&5aw5zeMZl)hJ)-( z(=#rWW6;Mu8nPWEuD${heb|@ShV2uL3`#CwRzvgDH|+z@_KxvKWcOjcqwK)~aJ=&0 zX03cgE~Ce*$>3+kK$>9x<_PC7NX%u4tv zYbyP&uJwSSpbEeZ{HBsG>lljv zFj;m&R3scedYO4TW+=96;`IvZfhb++5PV#{GfepVl^NL`I_sUih8V7n)uEj(ezm+? z#1pc*Bdi--G_09vH*BqPHwmc}fCCx<4Wp9trG3Nwfp;xG&F+uy>+OYq5{`&QqxVJo z#_QRIMvFS5Xc2F&e1-m~UfX71#2kfDizinVc+W6rfB{JWC3AR~_WrDk@I?44T=e^Q z?ZHO{!JRjUM-02W(i9e6Pqg&4L=sq7Gpp>0y7?>C+GPAb8-u6KuBo>B^@7(QXtGdO z!`l_{p%fJY4+aer>)w)CRw>U%j0`Rsx~_@GnM;P5aVNiRToWjs>as8cn%rA&AB(!%d?b+8)uW8rpQEHvJJh1vT_?F$a&c!0E8^#_8yX#|pc zr@Kapp^)u%)_YSrUupqMHbi3rk2E}WUxnEv(zuOl+V&0o!VMc@&RrZ82Su|$_uZJx$E`WY~ zNpD;j1peCy?sqtuB|69bbmUOHT-^1MP~2t{8GCN4hVWW;?(G8E3~&SvR36*1M*Z^G zi=NNg8>J)isDj&)Z9`^S1_jZ`)yzAQl&hBy7Y%KBEQP^zXnYS@&&piuTJoIh2U52P znF4)lo(pT1-{F1GUmT4b8024etGIRB6!9|fP3tjg(qp$+Gx^8T-G&Pi&oLNRHgsua zo*lmEdrm?k)-VQo^L3d^QOcvUjyh1#z3#jFPm;)RoaEZwM4j&2WLzD6UiCUDk9U(w zfxvGjj>6A;$Nz&Rkh|@;?%S}oI?j7u$jUY;r)5QPuf6V32s4E0(8i@O{1jdJx8f8> zx%A#QB{St{O4~R&dcP*G`?c8iS-`P$SPM%31xqom z5?tRZyUSz=l-iPjo3b$Sj)(*-+aoYTvYr834#%wKZTJ!%kZ)`Tf&T#z$36pTTx>)* zJ-4ONSJ1RBGCs!4Ysnr2XRFB(q_Jyxxw=@@N;Wh{^aM~>k>RkjjUTXUPQpBtCh6y< z!i}1M?crge*fjz{mP{p~`-3+tH{YOFvk2~h?rf$bHc3nlMuWI^Oq5uK%v_K34eO~4 zOWqeP8#o-6p4~q{fGnf>FA5oti(}l+biWScJ0+PRH$5QN&UT;#kb8Yls5IDV;E5gr$+p(=+WUfY};0bjg^sPG!csqbD z^qcX{m6{^ZEw^|lQl8u00cu3Kz$pn7UfH$K8N9Hb#vnr%Z?@#LN_1c*o4R>Ce&glS zMRMPgMnGk}0Fk!Nx!z`zc8d!}Yh>&_C;6{#oK59Wz%+<&J!6RtnDbHx@2}B37SVa3 zuC9s^hLA^LXuiEw{%UG8aDPzHv;oT`LGkWS-liPm=`1`!Qbox^+Tw&?A>f}W?7CJ?mh)ykVUup_T? z=({ACSl)grNPU-F{jwr5uKfk0{VPlPr=9XUQYI~^V)USTHBfhn%qi(+mtGz@EcK<@rO_V} z8vV`|U$p|lxLpg^FS)bQ;w?b-3<(+8GzGggka4YZO?N2J#*M+-o)R-)huAkM1s>Q| zWdrQ}(Y${df@c2FF)PZU5SRj)br0C=uZ^$05MV4Nd+ymw zvc_dibZ{F+ha?h!v0EISx65Dp{=1i=w=d0Yr$@yeN}Enp^o@qE2hG`T7;L3eliyu% zOsrS+^0MYe9aw7@P->I|*PP3Uj*F*3jt3XV!&BXWXuQ=Ea&y`wayemUTV=_A)c4#j z={i8b)H#~+mGCfL%gIz&n4H1KwfMrphc2i{noHj_fSv<~f}MAKbbjZBI9WsXY`D#2 z2%XdK<$)wklaK`9@$RX?;V(*ZQcLz}*7Gou(`sG%rsUjb7XK+quvTQ|&eM9V5Py;9 z++3rjWA#yzzWt!>TC5IAI|9hye)!!$r-aR0I@9|!lCw_aq_{2q1ghhTd%PcD^h2xOVKIkk{P|B41$ ziU~g9B&=9DvC{B}2Q z0{xPV2>1ve3V*&H+Vv9@v*B9fAzLTEht5cWAW!Y8sg5Vi`c7$>`J{h&kE&K~eBE+2 z@>vbBZ{jv7r&L3#w>T89>JMD1g^;<;qe=~e`m`$6#0H$_pGq74**)V2QF=m8ZwFU< z<#2J79_;Q>Ds}vkj~aPWktNf@Ke7{5ca6I$ey^#k#$0rKCe664v``D_7yB--tB+bf z)J}3Wf`p7KjucFmbbx9io20LxiFyHiYpe14TwVu$!5)AMvjKj z-mZ7*JF3JGUWC8Cb6H%?hU(gEQ9BmwPTH)A510Pnk-ax-5tkhqhmalc1L86W5v1I- z=iwBcn66L!rlP=qHm{k(Hwf77yV|rc!1KP#UFb*0iNmc&2(+kakghBi9`n#pNvz+T zW>3T@zBJ29kRfQ4J=K=))gh1J<uL)>%pgfZgR(7{vJp}p z2*kZsa)}j}D)5s(6!XQB6azpd<#5f7LnSMH4*fML%58Yi!T@wg%DX_4s9(5uO!P@n zi}Xt&YG);)#%C%La8KpYh0*U!4c%rm#veo4quW*}U(yGs!ux@Km+E48 zBpI@wk-Jl>jQjh$xD;zY@l|Unp025J-Zr$C>=JQ>UJskykD=p!PRjee>J-h++mSWk z_zzJ$s}7Dr?)Pp!y#1-Q+!P>ZZNnO8V2oqTEJXcvJq>nu*aO(r+~j9CBmZ^e^Y(OWpd&#Ctq=KZ1)eA(Qlk{}7(kzU5YCSpAfi#{SYg*ANxcU<4$OZ)x;wZ9BV+ zZaJqRRl$bjH+xM4zqslF4RCZSL4$c(>2G@U4kF*f8a{ke>=2Y#9=nZbKu4byS>F+O z`xTNmud}ka;Ydc_KTOA9<2wgRdB2&_wI$e))=&RUILPyb(5en_qG&OIBn>Tp6iMT# zda351wdmHTgJpnz$@0P+sE~5z0z-SyUfcnV^g=F7(op@~+4Z_Avi}kVwLMXV06}p1 zAN@nQ^oBwMMa)ViJ= z4F3~zCTIN657G`~FSEaj{;vEBe^-9l{ikG{s7OK?nxU)7!o15~0~(`1YY(`bbHnw< zkh2>h{?ndgse6ap(#mz^+Nn!v^SG;^(1b?|e&Rc`5PQPiz{Q>{a7Y^*S{tO<`ds#{ zzsyGWVm2Bs>H3qcI3&rfEI~(ZA}A~pS};2o>S}ejDPuB}u3MyPX%1!uly1^%t`^q3 zf3e+Mv?*O^e^M)=f^Xk8{kD&Bh6%Al?ULyH3mq<4{#MuB=YCC}Ai3I+X=l`o6UNB$ z7pIwep8Q_I?qX>}Ku5ZktO;2**OG9xY*eXq((s)w$LRM%L{Ol}0b{&iHsC3+F*$~>f z3L+KO&2p?8*(Kyx7}=fmwGIv(i?zio%B1chToZv;E~eNZPJ_JZnCY zKSFsG!+LK{z~KBtH?%3b6nBPpJL|uHGD;s5%3b4;)lwZnxxs}eK>*T2fdYMbjbzM7 zj3+&g=1**I~-?=9y zqRi2M>ii==8Nq4LRgrEQc6p?_F*;cdO4nuC)BtyQ zI?9N&iK4Q%b!GPGHX;-WXd_-cH}ngiS0E03AT+5m)+6>d%04}fS3L3&$;r0uVBLFn zb(_GaDZ{vJ8dA9IXa?@?lj-kt!D0B{qZ71t+_6_!M#KF`0CYN0FWBfy##-AU>n^Ld zA=a_GkPU~u>5q%W1d?t-r6!*2a^Cc>j#(@5S)q&kit;!SALq;4MV9ADZP9T3%qk-r zaLPW~^)vJ$SdKwJv5HETgV`%u6zO-yjndzz!_64*dK5bwhN2ld)h&X zMvO*cEzLUPU^YIPo%mhY^*NA;PT|z_>0ydceSP(kl+}K}ruX4HGr{j5V*#%O_PnMs z22lo&MdY$C!ib|jB&FmlQ2+4)sC2$6%G6-8m$jh;-Sx`fzHXsC8S8Kem>Btt4${cL z>~Tq8^WKE|Z%W=r-?u6VCd9n%BJi9T9;Ca`krGZ`=c<1H@Q*~WETGwKzeNAp40<9* z@CLH(vyMb1^`g8?g2L+y&iN08%TH?7xJ_5B($&J%>Z@?uEGT=MlPoLkaoeIH z7<+zakNy1xdez$Bbs_&?NP)Nl;@Pnlok<~aAb;!uyh;`!Zy2~9A$N2*m_daYpD#5ZF~Pd~%W56dA$Y{ku$p+2cnD0i;mkFxl<*LD#O9Yd)TR z90By`(VgBKuNzIcdQkWm9w%vQNx>nTALNm0;v6(RS`x;_1KianbHJ?WS>o@#DBL5G z9%{|}0d}DZI1DV+WWk`E(EHYRQ9vwYlH8Up9bJTu{hBL4GYhHTf^}xt%osE;gf9QZ zID5iPne%DC@v>k1?vW^K}p0Nk_+1y&eo(Ryntzy57$0Li;I!@BPTA!>( z!9dQQWDyFXzjAWX>m$(uND}S+FGqb@S`lk_3hY-UEp5F3$E#RtOjivIQ?Gq z5AIY~Ga>{;*PVZ=_o%AjS2@O8vD+<=qwLNBvoxP1px0jXw3n33YU*)k?Kz}R6(|=N zPjOr}-p21|F_+mHYePxtD}xE976t^b41GJ5%|@2YO9W?xG6`R~fm{76fufe3l7TYo z{#~!1{NXkv*HUsf(^FTOoX>y@PPdL8te4zQ`xD zC6Hepznt`FNadWjKQ5ozoLb?{NmpTxv>c0v$r+49RqU-@5q@~$=_;e)w)qXj0?9H0 zu~wqSuZ+As+xSmoLvff`oy-PHqklV~MH&CfA7o@-oHp?34AA(N6b@I5Zn9=AL&Sl8 zdBa#)FHP(6r2e&wY{RQy&5)mD+ViC10+TEa?8{R%ptEthblxOE;JBe}T{aAg0`Sh` zJ3XJ-9mC;LjW?lx)B>#1WnVMdK4+sfrH^yXn#nsGh2gpGzn*x0Dr2wc zH_+po2D?ii6o@9rG)n(gi3cN+pWB=5;M=l8bHb1BgE%y^zcNosDNGG41def|xG z)cVHsYdhNxy$R><>Iz1kI(%Nu_oNckL-!W0_C{QxUG4%>xt&9d{mC;*=cMSizDMKk zG~tdO4JpU-yxzf&zdS0mgzoWCe#+W8(>4oz%IT2z05`C0=3mhS4l{hNq)>L{GWeP- z?`=3OWLzD>i{(Re1l&r;;fyJM*mCLjH>xy^c!(`_S{u~tjJr4RKe>!Vo6BWv+6nG` zUrVw zix-K~O7B`R+OIn?7K<}L%1#f2M|b0|@FMC$t|yIoOD_Hnk7J5f z>y?)oARy>Pe($jD{4BTNV_s-?tcgTdW?8YTC=3uDLz7(*?Ieh<>1g*zyyd% z+bWFN{iKF^J|BVSTXUeI4rhkoceBKU6TMeP4Pa^}vfZ46{9g3gaJY5q<8tY$4Macv zh6Fq3j;Sa6{`a~Y$pln08#R=wqzCYiDu6>C}?ht=V5|X@?#_J89z~xM~XHC!7xXYqK z1x}%SM%-Xdu7LsDh*3lZ9Dom9^Hg7u-O2>G`h1gVGAWwKcM|`wC(- zYk8ix&v~pxwiC=y-@x_D1l#0+gnzWD9;mX}dK zrlJ1qhvINL%uzxUQCm+ysVx(E(5j*0Q5@AsNk3z?Rw5(3fK^|LNi7mqh4)~mW%DN) z>u?nDr2=ZDY~~l7AA29m79|!rz6{g2Te~KP1LEocl&@c0XCv1i65USeEj?8rt@?+Z zQpbbvkc>cWA&(sZA!`~um#G$!ivf1&UNpz zBAKDHJf_8qNnqwf%0xb6fZ>qETxoeWdoh(9E6U~M+B4Pqeb+!&3vp2gv?gMzRIH3) z_@@WK2N9Tj7^zphm|RVcoRJPGy(KGuF+n-)9|4at1g!72ZwY&sRNG*WqS>nYVT(@r zO#&3neAU^lLw}*$C%S>e8LgobuNgwaHdJMSc@>O_SlyNv(d9Rql2wkdtazT0FDv+H zzQMY6e=6)M><~g?X;Yc4fuS%IlyFRJUhU`1{EWjPJ1A!16|#R-Mm&oA20GcIq?g#_yI{Q?8~Lg%rkMMR4Zy4dsi24o`}(K;F*x`u z&_d=%Ic?p!UQH>;%(pKkYrJhoduo6rEn0Fq<*8}%s%v_moarv6{B`f&>)0hB9dhBD z+L@z(2Vg;>$a{-{t%e|z0_EDYN>oWe`h9wf+l(>#DKnkcMT9akOApy#(yo&nYO5ao zNK+WFiFZ18XkCsmohhpDG%9}^savp9{HI2MuA+N{4Eq~7a9|F_E>X&Er*8E|v9~M` zSND@(iRcnw)I*p)U7G=ekG8~ZJ7>xnO(M}jme{31tHk58Cgij_uK6|a$;n9j52 zgFg?6r7cYs3IxWs3Zdn8c&6IkHjDuBF;fI#_efCQK>nTO-$Qf7;xQ`G2v;nh%n+)}S}DeOw{uu4@r=MetsSu!g`FBC-`Sr%Qxo2YTV_&9)Uq7LI2GL_NDCoh*TH}Z_#*rti(32sev zM25y};|q~3TLG!$Luax95VR%oNd@a4x^s4`B!GRg17Hvn_0Dr?YDvkrHGl)Ai2m!$ zVDMn^Jt@2Ou~JkyActN-jd>f4Zo63Y3H+A7U?<_B(6DvWBp)fU6 zM$MiLC8kfRr3Wev^jZ6S3G8E4q2q8)dPCZq4w7caxR?F23&^LQaQvW(10R^4}|h8ngoW? ziM}KHkKCxvBngm1P9CH3a%M&U#eX=B|MxfK+;?~5OaDu)59m{Ee&kLM23P{0G;R2^ zqGNe@{M?e>s+@_}bs20(Hoo#6J2M|tAW%Sh#czyt*UprnH> z>=9-XHY*4e6T_8^Y*~OMMe`eMG@%jpI@+vgiY)2&hsDyNp8V zh*5|=8F{O7Mwxw-#-?S}1cqY6k#dq^PX{w?VhiUm3xvnJD70`UYz_^LCB37KLlX`w zqpSTmz`5Id7NR&J@2Yw;S`Yclp|Pc+{UiQg;?nv{U4oKl!k9J{L8MRX#wx~a*AaAkYoB;N%(O%;99%W5s&rOHjkWM%WKZ?1}35vr2? zlKW?W{{1WI7W81I^Zy)Q*oge3p+Ijjs$hry=omCz^7c5ky%)x!(6rtXLEt6Hb$h(y zy+HhuALm>vGtStgNYS z!yn_`EayXBaX0N%8Q5tw|E+71c~(^;3>ZyokY$+rv53fNF<~0Zq1A7=AR!gh6Q;#Y zMtN!SgtBrpf}9Bu3#)7uu67d=SkHsLb_p!@v6PG~yb6H#rRkC`2w)Vt3Y`k2{Jea6 z7AEXo^_MsK{|=@sutcO!qPkZB^!Cv&`W*MSmoil6#3%oLADS0{9`=rk2<6!+eQ9|t z+hNFc2&8XZq=cr1pcI55?#mb@DcVZ7t2J$RSqzvs;8G09I|A(`50(LapH^4$cM|!u zKZdQjG3LO6P*Pc)X~GRRt;sS}st0V?))1fBU`lMsHy{R>zJ7pakBnnw{Yn0F3`ov_ z8#5Mu_4_*6?65K;;mlZb>&b3oUwiZthhT?1*n!qK=yf1wc2im?h+;!93{ko>JOY*J zsuqW1ew_w^&g}n4X8!vXbP?ps7grgwLeutmFZ$yak5KX(f8}=>AHM50mgEQiR(@u1 zVkvY^xUX?~_(>>1NQ3lB!3IpaCENxOtc5gENQ{E}xl=-h{py^h%h`LOvuR<%I7z4G z%R2cqd^?t&7<$g<&@lwaT}(3+Z`Ekdam}?+DdO|ayk#g@N-ZrB64Kf5BECS*;KbW?(ZUm zBdwnf;l$ufZ^W6>id-cSY$gZ@nhnnkD7ek^D>(Y*3_NOiL+x~Y#mL2iPK5Wz+7(Cm625BD!TI>IpjKYE#A%P_E0 z>LENz^1D`$t4HyIkp0hYg;766`d=#|Oj7jr5nMv&f(SwKUTUXKl`wvznr<}8NGfZIN3_!%ozcmi55{Vfn%c1j$#J~nTeI&@H)<}W*c_K8= zxJXKg?{hn6_xMMQCkr%FQ1ICG{^rgzm>4X#AtA*yXc>rxm{Ce|qCn}iNryyt*x52jxm(?pWjcdNgJlqBg&&w(NGtz$#+kdZv z${=rNlpA_|$e?s`=G=t^QpXNhW|;=CNJSgCim_?Iv$uR7YTa(>FcStAEoDzE2wS_ z=GFG?P-B=Bd;aXpW7l=je$6YDLKMq6h{`4=voInW%fg7t*)kW--yay;dDd7!CsVNr z8#}bpzoBJ%8PxM5UpS_Z#CSV>@p0r%Mj&h zQ1WDefh&-jrkP1Hi0@MRO$e*SNMsQ+NvIYk1S@pW zHckxD{hf-1D%>Ob*SFy(FW9aS|GU`#zvm8eCETdQA8mag zL?Rd0zJ3wc@rmS5qR%*;FlKK__u)PcBQxC-6U)kgu6vVpv}!+5!Xbn3fUh^!gGWam{aMpu>REw5tmg45n8V0=;5fr9?4UJ;=^!nwX5>@*m z*DCd*;cE2Tf$FkhsT zSp#8HSx4!a+AxD*{$I^9cvbvgY`tYzo7=WF+)_%B0;Mfp+)IJt4#f+!xLeTT4#A;7 zf#U93oZ=chxD>Yl2`)i{yM9?~@BNr^dDrcG2ZX4SE_C?mI z(&}8NzFguqfk?5{A;D5hpi!L8Qn_h&K>J81bhv!9zd_})y30Lw+Wob~353)Cx};J^ zw*9T*pKoUat1)TN?=Q?HyF`8|)a2lf^{0C;+B0{Y)m$-n(as7}q|wDq25pY4dIh?_R1$&+OzTyI>Py9VkWXs14I z?Wn(Mj#2z+ew4yH^{JNV=d3g5F4Zi=hEE?8woa_;*$iY-;dH__Ll-~fQgIb2kBHh1CR~sX64gRvA6G_lRw11MwnvCWBsV|{wQyW zIt#9+!Em5MBgotKfJau;{9?Pt#b#);c6cc@j!qei5u-sj=6U(4AlCTr4)MSIjppmK z7dC?Z!tEVkrF-UJD+Ahf802 z{&SPm|3ORR_9Tt#h1NkJ)Z#PS)svdCiB8z7P?1%S>qjmJGckHBp!TBEra2Djy97m^ zAI6ykhHyW#l+A)yAl676@%iTgiM5ru2&&SX%x@{V)n(Ll7%cGJ%|s18;xXz+A<=ac zk9OA%t7qdr<;1!Ju_bmL!OP!dGG(=-XUdl%i;z^WwJM%%9%v~rJXS3_w{a`UC_Wu; z%1MQHJq&qfgOQZgOhqF^fd7RLdjZxCzHASzU64NHDp5Vb-v&o9i^x_#omCyC82-?e za84m^!f%!1jD2@T2zHp&cgus>!EFCJ5}M;I9n0}|(U~KG{e!bEiDfTl@V6Yn0{2+f z;dPz#;3jx zum?DyCPNtg+2~>z`W6~wb`*Xd)Bjr+Ct4|$;6%ilxGyH4o%aP+2%;|uk}_)`1e-;xY2)B z_Hja;)2g+XGDwp};_LSi?T;(oqBH`K~huBsNjj-`p z6`EtWU%t3YBdiH>$;Wky>C+Uf3i9q|XvAOea4DJl9bc)9TSuI^s%^KX)iM)~K%*$u zGm|bZ3_wK>Fh^7EpEMm~>04P|h;1!>5{||0a6kI8@_FX#svJ6^xFRzW_K0BGrUrir zRTL1z>yEliUs}|IeB~4s$D+E0!3E^f3DV%T<3)eS+VA zM#As4y166{NbqA`sfh)Im*Lxk<{HN4nXy>OxF$#TkQ0`Ohu)za@tZsPoq^xG&cq^T z8Vy2HdO?`E&l6~~YiO!4nR2s3pc;l)+FWuA;*7%e%+b2QwXJ!z*BcW$5YO)Z{IWI3 z?(~le{AdTp@~fc6dv!>4809z0p<4`Ed=%2WFOG59RtCB{ir4jF)q}JzzEfU@6=zr68lpVm{O4&*ga^ zs%5M6Qd8|zB&76C0&viPoZ%Ck53U#Z+5M#GLxu8XU0D}rR+8o_c9Q3VsFytoBTPN< zI{Wg3;}Z(%>({}b(DNb!V#QGLUa6sp+3wioSTc}|Uxj?bp*+o}%v~FYzNe1ooA~)A zAm?e<2ii|hWCxyL5L2FJv|a+h^%riVB1H-_<;|djvnA-EI-+gXz#8Gx{=0Vc9ztxj z$$UyLp~UtR+O_wI(6Iq^2$+XHN{6GX4{LFIu54w4UZ?R^ug%1s{JTD@>~x&Gm7R|M zH73}?;Z@ZiR3UVL_43!6QHpU!Hf;u!&`;Dc=(H#>QvY>w&r3wx)216qO1#gg7h{qIK7USvJohlpht>qQU z6MTsBzCdl&Bt&ROGi}3nk9!Gu-I~|Q(q25SJWGcyz>8Dk^}G=EBZGiDmD6js zjOmQ?5&LV-mi8@HH#_o&@er=tL-3;-OrEW+?s}{;8|u9lpKUh^UI~CdT(;Od>!$D7 zx!q@#@R0C5-eIMIZ*To9Mr&_!0&%RO8n0JJ#_rA(M>7-~{^SCa0%l>^Gdvk30m{k;K@$RTQ z9pHJRs;kefwXE5G!#&G?)bT9+#lmCzNcCmY<@EUs@EmwQjvV&lojqT!rV+j_=j$wl zH;0MdLAEMt>ko3EE16+!5ZjVrq~sK5HBfWrO!(MaI9A!Ebk}d2$<~{HvMPi*^ZT=A zy)z#`F;j03o}K}6N*a+g#78gFH4d-e9~opZ`l>|4>^e*w<@Jh5e5WMoVEoWQ&vQ@x zmIVJ8p3)O9{zC@K*LIv4*jTOGdXM$XkWj+0u=5!OFwqy$-%m`V0_tsr`dybASG=&$ zG%?2PguT&A^o>0wbCrP)YnU7=A6|G(?p==$#i4(|eTv>??T3hb_~_xW*?AHZOb9;m zP>ugen_}>=JIgce>MwLR6!K8de?Y8g9o4iraUKJj@LQEPfW$1Q7>Qt-qQ-G1y*0^v zm5l3iwM+tay-pdq#uB|vXc~~VO-B4}{;&N%eNVYd_PYmRV=&+wbNVPawcgS7N7MVW zwqM1;6_+nAg69B)H$D5B?fY~iWOjaEgg0#A#tI5nU*v6kRsxZ7(*@5S8gi(-4f5{t z-Vwp&dvd_oBI3tD`tpg_h<4JGyq7*-bt!yho7)~{DpRUDajkFHK@Zp4z-nPO&rWBV z-PE(*Oj>UCQkcBG)SO`*21y!XpzrgoC&d5J^u<_$ zyR5!}cuf~ChGFJukg{ad|Is!nQ|-V#r=_qPQnKf3SH5>go86yb9JlU4b`>()ryZ@$x)oQ1JLs*v*Q)TQE{y*!a9(GBg%Kj^K9ue?_%2R*%zN}S zjk%(6GF}4t{&{y{fGC<8lfn?8tIiQN(L6u=88#tAvQImq$l<)Iq8#Hv{G8|R*u7qh zMHD{xZrJ=%Az3Vv5HJ zxGYdlx#V~yRJUmQaM zcyk))8J>RzN3~bDft5MJlp^FeMYPF7KE(qt)WnixF}`^BDI8G93-wS|>u&$zln=XC z^;elZ=0j~nEP*E>&!v1KX|Q(j7uas}(|y4f@@khdnlrk&rRpQ#stGwPU<1^1b24H_ zs$ETSRu2@5o#v@uIhTfp1LMJZumtKVi!_j(`U07E1~272Nh62qn2*tcn8vP3r<7Ve zef_fJ^U_RweV||aaRjvWZFQf89J6_wyCh(xO&k5z0cA`Lr|C5?X-RB;oFj9#X^&Ub zz2@JX_D;%J!T^@=a&LLmq>v}(>(_Y?BldUoOT>F#i>Krx)&`GgibOs)oY}4?%F7BT z{qm^?gUf>XGOBw%03@g>eM0DmHeSMWwc7XlOtK`}-k)rEG z(JP7Nq-y4NE=|b4^QjN&==DVt`BrG=nBQn^8tK9cT1Cf(G!`Wa_hbjDFN zygK@(8gfOW9wKkX!hb>fGGT8g11Dei`6}@vk{=`4(roV-?-3kbnIOdEs zd0n2DgPTY9S&auRIcinupB6H|?I+E^tU+>$}>au%&4+Hzvd5F8p z3u>apFQ7!<$Z<#U_mg{N!)KSTzENz2RU|_(@Ym-JMuiWB6s?Rd_sz*??b!I71h<$0 zmwQp`A&-b3a0ZG?Ef%^xNkcCx!&|_90BuG9DL;b!&udL3s*p7zFq14JBM!$KKCn?> z;A2P2muM=3ik{-cHJU3zlNt9fD>o;3A!8wqo8Tj6H{x&yd?F2y@3%2zAb;WiRo15Z z%yKZ+uJ+D)*%hQL&#c)7EwJCwZ;MP=gq#QDhVJETc8-~12FR&myAl;qUILbo7$As; z{+`{28{Yg-n4@^qU~GQ^XeMa6CS1~rXK2#nKNH5u%b>&4;y_Wn56VW+)jNQ#XIUTf z^vsVuq6jp#N?Ol)*{Vzr58#wu3WFa*UGhlD*2c_MiCMC*Hj1Fk#gvrDR9xS(lFHKU zbY&F6ZSOHv+0v+BWpo%Nt6u9g~n00YLS_c-@7c13pK54G;1RCGCtnsr$P*)X8MQ2kdv#A2IXpPvoC;7i;3?fyKh< z@~p_}xds5~&2P_ueOeS}8l_R!;c~EAuaold%j`cNhn42nBy2k8tRXf1uXRjnv_&9Z z!?O~GIwc9;2hD1{5fv_aGl7XgquJi8&RDkGONERbt@%3?To_CFmB#n z0wCqzNp6l0LSFELbbxjl_MsiG@m5kbOoBw=RQzwr-vg2Z?cF87y$+wh=XVDNGRc`v zNNYZP7V&}oR1=QE!6+9f35sx&KUGjZF0P znTm3r0}tCVcrTV3*!5=xE{^mo-X+XNL<*BebV?wIWY+#D&Z%iFuBMnQB!#SbS{vwm8MS^Vnr`w@Z@2z7RPZ}6P=W?U&wRkX4*5i~&jH1;p0hAL~grVMp01fo(%Ky8-EYHxdOH$Ika<4Te?N5zAah1YZ3;6 zk5pQwP}f=fiYbl3t2%aq{y903aoF(M9>aFx6YgdLQikH!t>~t{QVI4M=R>0UZ9#2k zcdNnQcE!f_si%QI>#x{(Rp&@mm33I)^`*Mr4@#JRzk;1-frkaQOm%Bw4`HhF$SnEc z>C*>`EnI|UkmTg`7GPyen|SIP4jQ#nxc;M=uIO{&JVHmPKdomvrv6LMbH~hNcLXc@ zb{~Fj?;Q`&?nMOBHru%l>GI&-u2NW$8-gSFSV{^|iEvA2wU3YrwdM9)eh&k!q<^EZ zYrGW?9grv-m^JM=IAk!taI``?hp)hEci=nQ!V~ScZ<0n6#b?|_47QPPI?e1;u}*NVbRn5YBl8i&XfUf?g0IhU#`nL`In5Z6%_me_V_f@ zHaHKSJxuXCCo6)L4*$v1S*%ltygtZuheZMp=4P>b~}fy0y0r3*vqgSM1E5C z(R3L@2_$=rK60?J7AZEDorlf^;bq){BZw-hT)p0TI5M!V`?@OjSTZ7mv@H5NkBwMP z;l+b(*bSSw<3$r|MiBgI^WjZ6*rr#|O`8ZrW}JLarKkfeJBnGx05@Njh=o!`3I3#7RDDY}pe$SU`9RO%0cy>s15eYJGK z13Er_kPW#Rd$|7wjmExN)_myKJO@EOIWC=J58n}M5AcmCTQ=C5Du>!Z^w zKOXgMOtGUyZkiDKv`k~_jR{~W6-}Nz!<&BgTcrhpwDBI4)AfBtQ%dGJ^UUNviiyy6 zjH4nYUPSpwcy11Z;PtVkw-Cy2nVH;asLnF1tUtAV=76_L*kp;DeVG|PSzEt=lS)Bk z%%UR!3GJwPrM2_&=CATCd$$j$n~UkU?_7_s=@eVMmYjbjC8;kPv~>75LBX3{9Wok? zpH*<)Hw%W!K9dYFPdJhf%UFerbuScN!Fk);eJW({hY5X?^g;F0x7Q9?U#zh427Ui7 z@@w%{!sd$}*T#6kN1~4*45p21p@63wV!PS3wAf=h8yn9==foyhwwgJt(%iB@pDj%; zxq9h_w)B@Bpy_15TKE~~=urs#^ocv$%yOcHPX$RS)>!IYL6PW8v?FappM&?G`0Tm6 zZ5rgQ%w~dka|Y;Dik}p9s3m4mfu-S(0=a{M*3ZGIE7ITOYQm`%qy_cR7~b6O^t}kR zN$+N}FvRA(P`=#T+aC)8gjpSKzyzpXX;sFbvTOkldI*@e!rN1i_E`qYNo1Z!ukxBG zXN33?)KiRtEwZnnrg8Q7WoqluJOTzV5K~rt?`iFy-4WUHN<%$ZT0p;(V({?_%cI6g z+Zp~x`2qAa9=-S0G&0j8V~t+pcV@%qUmz7jET=4ZTI47hvh>Q_EO_}nnm%TPgN$)H zbJJh~^-4JqEu_YX)NAzNbj|+=AhOB)ARn;+=`0WFesNKw5N9rNJ#K&T#{X}B(1?Cg zol2-lc$k~t?Ri}5==6_4H_ubPK@$MP17x`Ui&KQNA<=6S# zWUa~c{HAf&P4t#-x!Q>ZL=2@cx;>;&+dyw&iFaDM-m2Vj=fvvAMb@_*)!Y|G`8K+g zPi7snHd=##{mvGGCDmvP!L*tmDUK=hl?<(V4KjX4%E-Tq=x;3kD!k#g#7i;R>8llN zGFR6gR%0pw+h=>`f3+Z}*zL<(!&|@0;67HbpN0N$ByqPXqg;HjvZ{Kp1uD=USkX04 zpN0;$lsEKV;wTiPPoG`3Iu~M$@+KgEGE#z)VilcB;9kZA6Z1=B!E5FX8QdUYp4bD9*0dQ!7`mAk)D2O1A4po;k=SkM*x%QT<7~Z_#$LvQn7TT?-89+Z2b`&IN3nSPYp9@ul6>0r705ETX4VqC16UhvoKOTgB-^Y~WUp(Nn;* z&?*0zJ!>t`X20(lo`EyU);ebtzYrkKBE3sFu|$@^|<-UIvz z#JKTly@{IJ+d-dreity~6!}7i#B;m{%3F-UWOI8YUeBGEM=6r~$!~RL&aJ>^C)GN) zX7k6x<;^bx0b~Q{PH$)G+>Ycao)MogX4=~{8yt(}7bb)`UT$`s(38~yap|7qZEf*} zDYq3uglp{rX#wrP!`{@pglxUA5Ahe8b%8;VyG!LUDOzH6Y4! zhuHvuJH6SEWE9F=zoucEZ^XS_(K0W)`MF=kQxUU44T=y`n z5th>@sQkq?B8#MtVI33?%c7Q9es}U|$!)v!ZIal3dd?NSIo7OvtobxyPEv%MkN1nq zyaGF`C|=zMhf9yRzPjsAUyzUA28mtmUM_5oR>+-L>=T_`xV7t6(C(>t&!$u%*AFmYC*Zs~nM}`3R&8d9k7Vhu(8iSNYY7|f#1W;J^j3~;`V;XVx zaBuQDpFXp?Ry4<%b$n2b>=iM{qw=F7J;{5pu$|rd#{C!%8BgBOM!K0{!_ZNkzV|-g zeFE|_PKwz&vTEn@!CvvcDRRU1n0S^Py>$&x5sNMK1z$9RE4wt&>wDeGHi%f^y40Mg zN9ee~G>N{U7x$dVSa+Va&$|T?8Q!j={}@<$hB3)QZZZiX(cQSf1-xAZ7QYzItMyV8 z3cDr0^f6@I^rEhkM)lpg^aJy+{&;gA?em!m)`vI{TFB(CIxxTg!^V4g|8QviHN-j{=)Iw>^KMHG zj+~}6=KC#uF5VWIp@Cv6)2a#=%;k4nLLibP<`QZn(+sqw=WHh}Mggl=Eyq;5FXkE{QRMIzwr9zUQ;S*9a%euh-O=I`Brdw?ID$2x3BR1+?*2R@y3lR z|Drac0VQ$QV0sD_weN&q*(;}%&<26-3n_MCmti^Ue!}aTGo94r2iyK^j@{6{RXfb4 zf9K)O^VIX=@TYD+8_C`VMFlI32d<>3`?k0yob-$%p4rh)&oOUN3Gdz;;!iGrTx6xyMov!nK@SVc)d&=z#JstOeje8D8WvSmre#P-J?DMY z`QjEMBrj_B5rvxlk=zZe>pVFKI7?BmfxG9dqYqXAJfUnnxE@D=^zfb}+BXaupFgoP zoI0KpnDoP{S7^Nqg--+*R*3}hoU$SPGn#-+QGu>R#ps7)3R@szHyb^cxs2MoGF`jp(XassP+wKhDcr8S%13$t?3cW<9I?0DI$) z#l|;VjFBvtM4MD^DBQP@j}bR(9g}>XFD{7F89VX#Ij{6Pr7DycL)hW zRU=ybF5kBIj0k|K-1P6x!)|_i1rF_$<}~ zDgp>7;-&}YYL~(UOt=+Xy=;QymR}+nTxw8G5d zHu{Cu6P7W5d$OyG)CJdl?Az_Mm({k#w=Tcn7-Vr;5qNQzbND*N{pz}__8@&(VD#-K zzOG@q83Ns5XkZ4|mj;u&>Lyp|v<=E)tYNPRUL!0cO4l&$t}SP6-ll#u>(O0U`>gmu zEP{`Q^-+R?WQ!1w>96ig(Qeed6Zd!D;7k~Srq15D%zv^rJ)V-@7E$N%_p3kZYC?Ms zki@E*b@vX5S=_2OG(E1yrym40I*z}ukCiN6_5H|oS`)c2{lx-D!W*`!7SG#Y(fxoIs~K4nRBY_#LO(@lbR2>?L_=GpE3Oj_BAVvRM*G0)o>0>s!^nExOxdXwGF#r zEjBn4EU9d^x>jy02G8usbg0JA@E0`f{sPc7#>l8(rGHjoYQh(=360Z6-Jes*_m!v3 zBM{qE1d*jRCNibcMQq=S)(+|7iM^Nq8_xfmYW(|QgN9O+WgN=#GsZkQp)st7fa7ti z`y=Iat_EpTAPxo_g;7TQt&}47&HI6#$QTcb^vNUx-E|FWe#5rcr2Jy$?qEr3&za!xnlD6D2OSyfEW2EJ22&9jkm=EuNNW}eEZAJYJD|J5XX=AT$e zWzhFQ)w}9;T5u>|M;MB*iT6B}{cLC3&kVB4DEy^F!z~%eK97A~I2a-VN4%*Emg2BG zw`L3CrVC&Md>3exC8T(1Z4;8I@8BaMfyVTvfyxCtp}@krEBf}mZ95h_A#NzH{yzFm zh2Rn5bW``gc8C^*G~)Z|TLw{S$Hv57Xcg<#m%2XzE8GM7QvS17ftz_-hY`n(iMf+4 zwiDNJ)+<-@;$-g(U*P$#P3 z-UhDnw`7eQ`q=~E$MPDtK#&;$B&31_bQCf)^bsy2EV3MlG<5>F;5%kb$t$kH`mY*- zD?PSMtgTHq%|&jZP8JiH_{B1BTi=d*`{D)%8fs*H{%L^P^x1CaLIRA}PLp$b?cu;G ze}<^xwapGP1hXiQZPv(M9U3-fzfMT)-bywSwru!!k@i1EMu|6vikeZuCle}(uO|&w zAR?}0o!A(1t}$Vmat_F@_ zC5WQSRc$8trNvgi6u-QQDqA0+=~6L&2p1TK47Y@#+n!pn?Y7Z|hTR%bmOjfYO}Slc zSufGTyECm+f(e9esKV+UsfC|H%)S0O8bCQg3vtiL(+cK*h^g)raknec+ge&w=!oTMIp?nS~L96b3XsFAX+% zS^lf60deP64h7WRlA|{y2)Iu`n59kL5kq3*CV$%8no~fv%YMzc+uEnecS2@!f>t0~ z(EvFYlYp9gn7)va%$?nRaG;&o{6D#Q9-f8lD-0TX-aeJamu)MeohCh@dZkC%QGr2u z<2x0tabGJdJl>AB{$x7$GLikj#Z_swV@ZDAt=o=7F*1g#6y%~_^VL(5f50Ot^Z%Iz zkOzK-JniL{P8mmS;yLv#_Mk)23#?dvXawF4qJNSNF zwY-2BJ&sDV%85Ck^7%lFt8JvmS}5%GdCnEYwM?S{^M|(@>pHn3`FD%Q?e#GbWcIs? zqv>h#dMcOZN?j#_ zZnMMOU>rZs5<&-ToJ*W0-yMck-bdet<>PWR*Q7)NbIy;an!Mt2uWuof8wG5&p4E4GUJqv1ga{ zShsCx!I*iM%^aljZPP6$&0~pN4iFZ$}dORc4|DC`E|o+B2uXv04j4W(FeMU5W6Ap2IX|T zI{v#PePU8zR;vxz`hxe4ykdUU<^_zey0=2@qQQ!kjtmm}r}!;HT1^VkHU@AmFf+I^ z*6hrtLEOC2^~^jmu{|WyXIACa-rbs6%FnP4*beZ*P7{T4{q6?>N8XN!e(ft1GwWPW z&>fOAU;LQ?2UW^yl=iUw4c<#?#suOclgAKCw(C&=q`>HZN8i7`MSgk`y#B6_l%2-A zM2Xv0$5=hksi+1mYls#2wT%lzteJq_mT-#Y7qo5>!XG_M<6P733$&z;apU2Cp^H|Xk$6^zmv;Wc-^v(CoU z^+meY<|jIfIA&9=%RC4nTi&&8i}&kSqrL7tBHzx^HV+;?uQXT}G*HMK+qz-6lE zZgg75bW@k#jvu=^e%$66ay?=Br&X8ku*Ap+CVXDO!T2-4e*Sw&{oNlMcN;95&u~Ty zA)Drhj&ir&whRV!%oG35wmaj=_8R4mskpas=50Et^x!w8=XHzw7jZor*n%xz=I3=C zy*sE1gfFZTH7z2papMtj3%@5OATRewepD}-eBtTQe~Jyzf0Fsqf?bpFv)5kyubBmj zrJE08DxH%)IVNo7<-S_p)*)*HVmbJ*jTU7l1E8XJ^7!z-TX+92_#io?jy|ea??T*6 z-U|ivx`*?<V;j*+lo1Beni>o(FGuek5v!ePau05Sj!y8RG=p@k%TdhsJxdS#xTDQQn z(e>O;1*Ch=ljE9%=|1_?WLi8iXJ8iBewCeEWR9+I*YGE-kaDu@h0dWyO++J)5M2zjK0Aab)CWK(R+e$E@XhMqr$8xMQzDSKXaQ`BTo4 z`zmtW;)bV*VS-s1qAo)@niKHMrt5^^y!*=p0-UG8wN%>wW%)?#M2l)=CqbG<-M%5u zaj+)vQp>-y!&ab$qr*_vkpGd17PDo1yQaVa~3vRF72kqm2r#cNIHb z<&F@0=}Gh@k>!X7+X(2_(iMdBTfs|nyR~s8D;AXOh_||j@P9(#>EEBc!|?4UV>T$p za@0wfMdPIf0FX*6fX|ZoBooyH^V>2qk1L*aM^>R#`rh z;Xv<&Ye(b%MJ#58G+R7%_5g$7G2bzn+9I6ztzZ35U<(?3k^3jtb4WIBs?ftPQ?Z7! z?<5q%i|G{gAO0!zQleB*UcF}X>PX_&Q$eN8GiEnvQYgaBcGT6x=%dk~t9T<2fA^xv z#nXFq_D#H8l-Kb`5L0-Z@VZs0bP`e-frjGcXdF()0&H;12{x(r8nV)Y+3`8hV26f0 z&>qfaEu<;d+c$Q$Nr4nPL!q{?PZ|VvPT{7uRT8_+VO-9b^dRap$r0EnJULPoLFQ0fg{uG+-;>?yG zj>N%2f8&LetNicR|5xP$r&QX;K<(v^tNmcYEA5!`p}aMQ!F|-u*CzZ&l5_Sr=0mrv z&oM=9-SNt&xvRAMU2-me$f42m+3rit-)yN6~11Kn{qzPC|Cq{e38_ zxr0^qe^y&ZMk@Yk*7tKNiyyFONQFRIL3EHkfaM;w1(4t_?3Yw650P=DAp^^NvBncq zJ^!jmuioUn0WtL!T&7#&M50<(cgll+s#`bRNo^iI9E_}p?hrP}3q9uLe{$lNs8&(a zqxN@b4>ULHPB%&8;&zYaJ-uiX2deLm*(wIQz+oG6KUy7%<;;sqMYwrRI;pLeA&xV^ zR-R!Xbrl-w#YB%rWC{mSz0KT3vC>xkSE@-W<=LClE3A8D7TE35BYat(_}dy4rJVYh zkwk1Zuk>7&96K--h1|)&>kmuNBx#@W2vy4}i4QR1ODy~8F7+iZdT}-Oaa0x?u`Oq8 zCh68c`7>$6lP`T9FBgJ)@J~UgOzshEC2OM8+@0m)j-Kn>gw8>zFd_|B4Y+-%u}Bdo=K$ypu*ir#`X>{=y!rsbDDAI3XmU1qD~~ z{P`lV$Q9b)3PlOlCACNeVl<+%nHKB~ma_wFW1L^mHhvijv>-(H0;0HfZ)b5b6DJ8&H9wpRKne&krw%1Z`{#G^J*d3jrpk5f;b4z`K1EB z9>eR;oqpm=C+};WAJpFsM7MATsEazZZ|bgT(#N##)nzT1Zv?~dpaTQaJR*pU_QxdUDL3C%u_E>DL;+B zaaZ`ol%JOIaFx=C6CNIpl^Y~`^ns6njjoEQKam_?bs9gnCZ9F+hF%ap zb*Dn^Bs^HFfT|JxiN1k8#sn#(6=vs?`s8V9fnURf<{S!=cPf>Z-)7QM-pdFGNb3{o zAbyRgWC#e`xgAQw45ni3Z0aCs*9$db?rKp#!bNp^>5==#?$*>tMAT{T$`jUMBMjM- zu4bM3k4owP2XzXmRucO7G533!x9kAoUZ^Pak09 zB35M2zc5vuPegSPn|}nRF+$#CCzn5AXj3f92&sCK-SUDFsaXEMab`rSgCBd4@hX8O zh%kblNKrc-w`WFMYAvzx4VjxVni;A0U>^|e(ef6b0+S-PZqnUxN@L($oRM@!`+!_K_FGu5EW_+4XtZ#*=C`ir$TBy1i?~GGk|NPo58B zF4Oa_cFy(j+`ITa?Kc?+5 zH|l*X{QJ|`k@r$0qnTgm?cm*shf2x7ov#rg-usJ9YN;Sz8D)hE?qHoif7^$2>=aI! zrwQ40nG~vLjjTRaBLK86 zLg)2Q#~JmBISZra0;`p@OEyjopXd>H^Z#8gNg|2S?<3Q#J+MAaod*+??Z{K=Ep9VM z4w6;TMJ3l&vDMF7myJZ;nBW2K=*t_=?d@I%;SfGUcI*2RusuZFVtL`l%+8g*K|?ZL z-*dk{*GQD8tgOAN4-tMeO>5F`znDHXxAaCCtg-!J|VZ! zQ&N@i{F4uCjIt*DqL65J6tf?*xT1z zL)_N+JH3jrC<1O9#d}R`lt9EaXDd4Q0*o4S14Z_Qf>FdfQw0Mu-15xkU%YXtY}@ph zmOs%cYf+;l1%3R~a=7za-`-90I|o*Zw#j0{&`{L@7X$)r9$SFofrwvIm0y(y7kqs} zpZdJr_LJHV$z4ypyDRkV5W>hN6+%q(1p3LLH1;4;PNe|9;~_pwa=9>j+&YmCEiR(j z8?FS`e_=G$bn) z{%|m$Kv&hrEHz5Xmuj3;xIulkp{Qkxw&P(AbGSfMuIFmcL30tGB*mgvhIl9A0R;DY zv#1qPT*xa)zKKnhqC-&+sLxS}ceklaeLTOjwR^Xzk4vRa>;6an_iu68-wz&Kf2YYs zf^iipN1Chf$Gxj)cLO;tLo{v0NotmCYmhc6F5O>ey@sn*~p zMT$sY&CQ&OIa$kG2JJ_hnPZ}Kl`bKQig9|hSnaqSR9t245c3IRm9WrQpkJ4i(?-Pf?@_$V7+>bnKf z{?mG=hde3!(ej0op_%-7Gm0CY;>k>>^ZV4(?9ApQx)ki27Q{u@iUM$Q`A{R&cF&pl z+ebI{4PWAZdEqUEQ#QeD#i+0LbIFTJ6--E`TqC@r;>uGKpoL)K6t3wWR-1c)7BX=iQ` z*S-4l?jw^yI+s$)y+sYteeqtdk?a>+HL0t$Q$`E-?A+4ZUivP7?tXfI$g)0M{6}(z z6Yog!bw<#m1MNEJgOCxyreyzX{bvg6d*#>B^BuwBi_2|?t)J}{(B)_?(RG%2Lg3kj zd5-frMVgM;>eN*(sL-CIcBu2%xB-L%)N4@2c&1kAqnfW7O<$sKmNT!&fXIfeP{&j3l?LJ?;sUJ*qa%g@OysoXtc7&r+LaNUuS?!rx&TD?eOPbNg@2jx z*de2hmoWDq3spuG1qEYiMeC7YjBh&i`mPBV zeoi>NwO!X3^=n3rw`l|3uWGF2F;8%23w~x^Y0)V@KT-vIBMNC|ciqTq6Vc0X{0)q) z$qCzQ&)%LtXRVLZ7tTb??HndB+jqW7eNX_`+v-Nb)pt`EQ*_47YrCOV z6uY?}F>}<&qJBG*O9;0HRpnpthXFshj7R7ET!#2zWX&B>fNiURKdJpUPdG-=eG^T) zseE}iweJuCwf~kK{4X4KD}b{0x#~T1v~-0zsQb!Y-Vb>Y;@c7NhC%m_3~ud6p~mS0 zr`azz$9|p*$4F_K$F14iVe~gPyc9zJpf|dw{7ZHKrSfDQ1d_j0 zDTNg<^fv^X=Edn&*FVRtL;;}W1<-I$HUN%hi(ZLwde>dX&VEe#t{2`)rT|lXgL`7B z>iHQYo5~004Sk`v*JPj^b#XboI53VqDW(LrNZsyP^6i5wLu!UTr zQse^LO|W;GAJ@JEgx)3DJ$Ry8-_}bt;wu!rEvI31N~z%O73vM`P(#vuC93MT&!CYv zlfOabS)B#tzckWqwGpHA6u+7ElBV@aw<15=Rrj&FOSRy*pw>0xa$(l^ffRgiNZcvVzS(`t&v zEn8^l_Mu3BGA?#J`{9~@H zZ2>kERqEEYr-1^46*tY+q1WBbdhOxM`M0B@Tn z{sVxNrg{R#WAlee!meV4-w;jGk)vw<-d6ZfIk56=d#2ZC-W^~?G7$DETLe7QJ-O7U zm0uLSzXuznQQopGN|d^CqG!pZch3>UGI8-M-$2& z@&MV|YXEp|~sXMbrL{lx3UQA4slBe^C`qq}=qU^={Xl2*4cJF;`sd|}R zdc;0wt+8t4L4U6K-8Hg}AhrAg^m7ruQ*n-@_`*Y;RxNKuh+pErLlZjGl~lhOyeHTq zAHb%*N1yyVhOr^&emj>wM2Xdw*(w&|EkYcwzVEW~S84_@g2r ze8v$c?bd0eYM$R%FwJf@^CB*$_T8sDWv$R1h}nV(VM24A{}=7fcrjVs#)gS~RfW{- z1%m>M-`d_Pqtm*>yH&#F^bM-HIq!OSaDjvvgk37VZdcCVmggkiCE!^0xYv#jbCANZ zcU%DZW&_^9+(=@e9@dDAgU+=1!{hzmzJHP-l5ID-Yux@Ca?Cj!Kpx|lESVgF3Rq4$OlJkk^*F z2O@vUCb(8n!GKdh>$|Y)16q#oWijI5G70A4g|KliJDBpUh9F%#iqFICzAU|8y_ChE zsc@iI4PrAj> zqq8UPKd~iy)K^C5?&(hi%Xlj9CAz^`9FIoYT6t%gV^Qxc=@Zi61QB$PUm-m6>z0#{ z^nNSKd9v~?*3ge|&@jestV)Y%pr`+ft!F$oMzgp^W|Mf=zlsxMbjX$~JnE|+8JoD} zfn%qkbulmt@9Fn|k;X!(do0j-^)JOMxADmMEaJvaPLxY{MbpFk4xZg<5lT>C&For% zmqMw92%)u3^}|aG79Ea~JMBgy>_$DgFy}zPoY}vW4*Bo&`~T=OT*{*iG(@@KGKGv& zJuwC|>e*%UurCcsM`nfkA-ZpCO{S$kstFUlK7beqWkAKpj^|n77}_-u zNJ(APZYe6`EdfS7;y#Af@nTSN%o|UH*NnX*cwv2vAYehYoPXi}+<_>JQeG5pC~kp6 z2921}Vz;x5=(R%h&H5j6%8hSvt9s@yU2{jHHjiPuZ+3bmHfj!NmQINsr2}-ABIf=J zs44lXKS)vBrq2HCEP( zS=Fm@TiWXR+NqG$HeSaH%WiHx+Avcwub?U5lzku;gg_vbWp%M!Nj;yCcJBX+FPXl3 zhUGgN^akxLIKIYc+FpJ$EnjEC|)=1==`}+p@Q$W9}(Sai|l{k!b1ol0POmI6( zp(#ODZNW_NKd2b+ePwsRwLD*;Cwbulo>g~7$A!F&m?uI!!_?ipGyJ1_QgXIXB#d+$ z>ovrr>A@qPv|k)ec&gLH-Ja@Favxf+;__h=o^? ztFh5HaS53%UGYbb+tV|-kCANw*Smr3atok>)+$q5=udt0V}ii%);`%6L_{QlsBP)bOS&ws?u5V z#_azhH~%3xKe28&y{}jLQ(#T{mQnW;2`yWVwlQL)1MI8dY&4Fe`#yhzgY)n@Qo&UB zaGdRu!uX8k)?ie~0r#^o&-AgE;nJKW8xpeLdRMW9Y=CS`p&Q|QP{GnS#lrc#nbwLp z)iZTrgu~F|Eekm$mE6aU|3waDX@_qeT$9)322kjEn7YN#ONz7CE^X4+8pVGO3u6bk z+-v2CCM|CpK32ViR^E_(3=gl zljZP;YjyJmZYIvFOJe3Qq#h`dR2S(2|;R&5BbchSCR!+GCy`dPF9IOAShTSHR0cBu?Z?_ z-l9RY%Jh+K(KB=t-LUWeR^a9doHRXO5U$XG?P_t3U zP+&syq|`x{*Kx-c2Dr6$2le|&I!Clf#eWWlb!rz8d5`TUF9eSUl3kF=U%hius63b~ zc5a%`D55XX^gz543QMZm&t4LG4B#m_u*z@Dn86Qz2m4vVlP}CnAA;9>K~sPF7x@AzAWT`vEC2EXZ7zx@@> z$5s`lr$&1d;Mi;h9I*C$}^#wb{7*Yd(IBDu4`DRb&0N`x)%}gk?a~|s%k;jefyIwbtzHphbf3k=c7;ZfSrhzL#>unn5cO(=N z7X?izjK=;ONmO3nF`4Vo;BKsHbVD7;ML&m&edOc8MWDZG0`vB^rnE?FMh>3#KJuY2 zCG^p;a;}I!9DG~?;x!oqg&I^{u4(9A4lx>ujAz=u58We+g=aH0trc#DUX$Ny=wv3V z3m(W1j@`Xi#U_|kVVW&6jmO>WF#mAXiheXU!3Mg3VgrHhc{>YhpYTdIb}WT0wm3ZD z--vX-TW+_C$PVqD&$T`s{tFy+z-Y5iV-P1AERr`6UdCQVf=!fy&V=U>eXh)t?s^((2E7YrN5u~Zu&xotRiQ+j-2%L!0pF!M< zm#j9G9krc}a*~4l)g0A~{u=X5{OMr^)BhRzp*gwoS{>{48>r=TW%aGPZ)lYQg&$Xo z${s9b1C5s1{MJfPuMH_~l|C2N6;w9&7RU>obhLl~%%5BhU|81~X$RqxB}fMFf6dAN z-Gz|*{c>c)lc7tqmeI9O>Tol}713Yp#n+%-*I5j%YsxYZulu`F$@%xi#gZs7QyiX1 z7%%%%8yK=tXQGWXJn?S2$NcAXh*cJ=@E%jbDWngRn|I^EGr+whEIgAEFJR12(;429V`9#Gf87Jm2qx=G&ZF z#1MDrx92joL`JSZfkKdxXDZK=zp1Am?$5_oPdC;$&_3)Er;-G*-&eo=VqtW~_6?#i zG4Zfy}8O6twme81wv>Q9keF4 zny}{J(SC5#@x#e2la*7WW%w}P``E{x$@!Q@s*%N)>?oG1yWQn@T7!7nwYrp_JLym| zX(K&WRMS3wqCU_c^7~V}Cp-6$+6GE|H}c6}Pvn9w72-EZ*w1YJkgRnbnxWkw_s=8X z$KZnp7h&Q2yfhN(agU^jrV(d9zxvW*T6voJGu5E5Ud*1J*9W{t8>DVuG=|xm7e3Q5 z+_fe{4Ao6bwa^g{5N!$hQ1VT`2xF+;u;lKX)wzddI}CDY^Rb@=zrt@?&|=9HKfpy8 z@L?!>%~E+~pYXL=re)3Ai`a!FmM>r41kYzIR(+OSjZ4$|QWJ~&N3P#l5&H$&k4+Xv zR2i>0_3P8CPt^|4OX<#m86(CuQcqj4xWKVB;TY}ffAV)dw9mpZbq!zVZGCCiG~{0F zHw1YmylRa0>cFV;3s+svXUvePDuQvZ;ZvS*dLL0uBm@$^2rrRfrZg5&NUqK>8d4X| zIQpi~jq$y~(2Be4@_j0+loRCah*n~VmC0(TPR|0Z8p3PnG*5&#MzFii^R2GixI2qH zw5_0afEC4PC;iee0k(+YE>4Mk*nG3Ck|IBU z+AexwWG4F)YiDa=I0fUHzOaYHZ_%rsAp^1{Z$t%1luI7o8G-&E$XyDRhvYe)`Ypmm z2mGAe_vw@^319W?yEB>{(WC0xwA1=w+oqPcjbG;)s<}#!g!=Mgo3S&)HpCwlmn*=vOpF6(5`tugg4W zzZf0Tr(-Vg^; z82`rfFou*77JI+!gdJVovD*4!IT-@?A2rS2gDgEMPs^1Sj910{-3dLy(N z;b;_EhO(P2Wr0+vooX8A_BP}bC%IqkT4^=~j-;h|>p;Mk&uTnh+hv~*vop6>cyANo z@c+po_Ld>Dr)$dz)XSDyIKmj&GBS9ryq6?alh+}{R|Orj;nw{9+uTW{Iq_fr08;)u zQu3-D_bHeu+nQ3|Bn-e_hEkBNvBh#7Irxgr(iw}5V``vrw-Fs2YiBtOc!CXU2>m2j`$&0+ewGU9f#+>LdNoz{_Zs;a^S`cv;G+5YEW!0H0AV1xo z+%DrVq&6xTE$Bbn_Rg&z>K?klv~bXS=GYjcqWge~hIY9LkAXG3w7ra#axV%&* z($(VmmDl88o~iC4FRk^J2nL9xxWMX!i56eFv}y)tOPr#;r;XY~sX%W3a`_h}CJh^^ zw$-UpTW;9`stLjwNK?c*x93^#ZfW|u*8C%|90J&=dp14BN;gk!C~}}IbQjxgz~{BEB5CdDG3s zq`8o@F>F#J=V+?Pth3%Rjp61y(>Zmh=Z1(4%+RWG@BAxiXJ}Rq*l1(I*b^vbHSgk) zQ2ZKilYl~aHF@!y+O_T6;QVa@E|_cwe;=_G^TiI-$;FLbp>Ro?Aze$ zvh_aoA6M3z1S$CczMIx}6N&$Ut`&P3n6ZHu{(6fpKkcXckypX#yP-vJmM)b&P=V(^6q$5n@|y_wcRr?lZ1jz*`{~s&aG^f)gg%~M%1628%rq&nJFaHW(Hbc^l5er?)?SCgN$s6n(aC&XT26veKY_g#4 z$-@tEi0eZ>CZiN+?Vemz`oF3thEIoPSn0R(fxDi_SK|BE(Gv{8UuP0E&HyZPm_PPN zaPUsf$gp3sF`lrNNEgWfp@c^lNF5;%=* zRX4hva!0BS>bh&OtYVo}c{}kpsQQ&I6#?XAH*PcfxHh3RG9|h-jt=TF#x%;Y@FIY| zZJ=C7NS1X#RuG21n$$G$wVOb0ZpK7-hIgs4#z-VW+(DNKnVj(t7Dw#aGL0^ZXK-Dm zg16V;Zb&`RqU2(sj#hNLrB_ zFVwiNN%cxWCk{8PccsprH-oc*LPYw6Ni|zCA(&UYRy9wWPJba&`wY>IweIiAP)wIH zuXU07=FypRrO$M4Zxd@tq?U)pkdp*f@?XWH4=GP&dO%6wwd9W;Lqq>qiI4w+jMCr! zTH_1cD~xai>?#DU>j+8KvYEYnYL{sgW;NrHhZG-uQ4pBDvC8@#q5HSnf4gwegcDbT z5yi&PDrM#mVj@aYdinS`Uy7{cj(4Fd(hbJD@UtXr+N$iuy94q|Ot-%$=*@hxZAU@T zsLXD+@pb`)=;Ijm2I@*b@&iP>XI(@vHBfClEp$J6!U*Nd2q*r@P;#NTZ{dw5geV%1J+@B^#HrGGxm zOUF<>QhA3cnQc9;YK5Wm9yn?1?v>@wxdX$U=jl)=QE1hzAx8(bJO{Q0o}RMoCLGz^ zi{~Oa56eGX;kPaCEC++yW*`Mv0qLc-?5qIqoZtI5 z$W>lUK6*skaZk7#5Eo%o`k>sz{}O!@>v`)qc27;sRezKpAGZpTQScf!nc;5U_kGyV zz3<+xWVobD8czQ{ zIusZ1nH4NA$A2$taDf8IclbxbZ@P~eB19W**w`MF9QWtcFZ1sL@!71sFWeb!tj0&> zd&kWlM`k=ls$(&R#Im;7^S_bzY%G2(#7STMln1z%?EfGnJ5Kq|-t&yj>*eVFCK=Li zP+n`kn67GvsGl!ZELkY!M6$!LQ4dLhM*eK9dYm91;=6%2kU&o6Z5#6zojWo5>6Me@ zAvEso`4KWmMGOm~VsgH-GW?Kf47Yw#?T3mEdaZ|zkC?R%MEUOLLyXsXogW_Xv$h)yKr0IG4gp79_VfLgN#_$!{&u_w%2}~>{8%16XXB54~K%EVMa5w z+zt-AvPNh;95PT$2|a${&72UJ40?LHya{b~Ok7y5xXImFHle;V`Iu?dTVJ^`upnx0 z`_(tNYfRMZylFVrdozez?gqAUj@XXlWVN%kU-cdqg{|pwf`qrY3%JbE!LsA!<11g2Zr12@Qzk*R1R#Z>#R^2Rc??7DYR!s zR8}&BO9X5m$s;@OsC0ppB=An`4ZV1!uf^8+Iw7P=fHaVlgZ2&N) zC$bTe+!L1Ddypw|lb+nj;Js(a@aDr5SOWkG^}COBH;x34t#N{e1l>4gdxXzhdEuLL zl(x=(Ji$EW4=!VOyVAsWq#hW!#?1duR(25FMyT$rzT0~Db%&LUuopv~W7n-xQ{8%4 z>w@;gQ(07P@x0X|>7@ndfPX?fSxCaB6u5|AWS@oUD2DciM>DyL4GoJr;?d zuP6Y?Fnsm3f4me`Qs=@g?l;0oQ=!d z&9R^{Ouh2hSFV1KCb;dYiRq@LAgJrhv@n;K(V^?|7s3CEj}G-JikhwsC1n9vJF%(V z((QGL_p{M=5ERd@-9TU5Y6)RQx=axmi<_%DZ`dB)wqIZRoy#51^r1Yg01M-Eeev$iG?zCesJ!P^;QSMwu_*yIiHS(t}GvH2?a;;9TQp~U)K%H z|D;4d0u`>bpEJ1#0vPTiOHE*HCcX$=Z^?+4m0H{X=E z?y){z<`Q$Uc^SGAsvcbl1NdP`N5t)+I$L^58j56$76sFZ%f%a@V9XEgJ#o!#b~`)K zh`MK{M*SEhf(|G~hh2OFBb44nM8AuNXx(?Im!3a4?7wJgPopDL2?~AT;t~E#XGd&W z0`OAheXfyf+o7$?G4t&-j;B|AqE&aQ8=3Hqx!R!F%uF|?LAAlj!|;5Cg=0?m7ySsN zhgec$`e(v{jb_QbjJMEh@zswfOZ%VgczmlR1r-j)&wpu9%zSy%5b6HbffLo?~*kttiFi!8{XdI=b)4-vz#PBCvC_z$@lc7Z~Cej zi+2&|3sXs+DQp=obCV@LWpz7MdKOT=tlonGtIJuyqE1dp#x=aa#hdEq$=3sFJGkU6 zN32$gelmDNC1pAB*K95sufHMw2g>3r$tI|~C5N${64$*MLx zW6Jy99;|{3Tyh-j&3xO?;0~GDjhxap%QFUHujNF2I|!IFpAz)FGeJrmcv-bj;Q<%h z3b0vk6&R-oX2}}o{e_fVlXxL3((EF#js6f;Zf-bfK$?n=Zr3#_clEj87&4&UUIgXH z9PTejP}S<&Doj);gQa86NXLTP>1G*!of#g@E1cC(sk7Ftxd~?t+bMtTymD2ErTqs; z9_5XLM55u(loEB&KpTT|Fle*Hkmlvk$=Nn?BmbmMP`Sn3 zJQe9)fBVZOL$xL#`(Z4=`Mi{4x{W2^q9C3zniG!YlwfR5P1ul%)-N4sG!X^6ug9L zZyGB`M?-HYSubt!qlpWUuGbf(8c8AR@-?Dk|zJi>T--wHzy`JWJVBKPg1UNezq zUv+LzYG1u@sr{cU04CUn-dUFWj6ZPQ=Dpb;!9oNdIGj zVjXakv8SaoiR7B2y5oH1K9=OxV_yS=tcr^7!oIU%n`ERZyT1W+*sc9omwImzN&)q) zh{hqJw%uaf?i7xgRb{Peh`@-m8xR<&;4gEXd(evIY%-6Qi(tF|lRG7iylT!?vm_;R zz$*_L9t8S|SX%ISfi1h$+@|UYN6w02 z(In3>3%bQg2whBcVIElO`4)cc@|``H@Rv2^y{T^h3CBnGX<9kf2dkljKV)9#$=>sm ze;s|g1)PN{;WS*yr7C3nba1SESi2j&lx!XOF>@>AmT;csDW?k&SK4Op?d`O8Z#ymx zoSG4_s21rXMBUEk<H@7Rz)~C!*M4=&-tBn)zk3C z@uVkJh?BW(4r#r~g1v=g!`nB-#sj~Y*=!s=!d;7je_=qTY zziHTR&W0T!L`Rl+-v{KP-LOkB96U3K> z8?ysXhncNMhU9`$T1wp~U)+w~h@HfpFAkzFwmbzr zi=dD6ZkKKyKJi>?Idlh3uv-$VkR@t+gWy%7!o!id6!_N;#FRL*Y9csw2X=adk*`VS z%|vlYXr9qJWEj7pDzA!VLR6;KufA zF;`ISrUAQK!hxLCTtscu+lYxe>K^J~TlVbbUhrL?d}I}NoNne8v#a^ERhS_F`_mPA{yUKMl1WQg z(hnQl$K=rU)kzP51+~L&X!m{rIXj*s)}FXOw*x`=51LDKo>w_E(c=76YMXm_GQ?!j zspUB~I8xd!0^DO~*LOnf#ym+>5S0{PvB4CR&ClH;c#w#{&^5N^APmX&{4E%-|V@c=adYnfSW2 zF&-tN}BB0k~q)W~i>m}TU{*VmTo=k24~ zyRuua@7Ds4Eveih$pvxOn0fyEW=d9ZJ0_A&dTusF1OC3&9v&U=w>dkrm5ig!5RSFms>~K0xV<3IF0%3r^yHV>+BdS8xn+F(0Dxt=_iWfs#k?td z>{wVyzE`yqUIJV^l_jn~_^-3x(ITK&Pq51oPN5>_sBqZgw)^ZA<-P+3pd8$r?85UX zI6O1jQ0%^y3Cg|k+gYS1O8b9FFGHVy{lV@|7DcSq|JV1S~T*}Ntxggiw!dZ+4A|5#&W>~0~{A^ledc3&Uwqa{cy(!Jr znP|R_l(%YiKUSq$IR-W!dUP-5fCk?xXYep{{9jQ>sw+GE zgtb<2UnkD_do+b*go7o&N~R4R4PkH&uaMDB+!nhGb;lTSO#P*VE8h)W-qKX?t^vY~ zP}uG|s^U#{l1MV%)>lavO=bK@0lvdI=PBKBseusGPQh6k@4Q~(T6Ae=1oFv<7*?4^ z`zHA&P)z$M`p9uNdPu)-n%2WLFR6XgYJ;ke(~-|rDs7uQ3p+KT%4rxRnCc8Jr*6GF zFH<#ciGTa92+&m{sI9iF=_RVhfB_r&DnP84~GYl^(Wa9i^u!@%rVM~ zVj9HV@!8fN!0E#;r!kWq*h?FkPQa#kju_2FEli&O*aGzBQCXoHu4kH# zj3+vlU0!7zG$Iayh?)+s?7(F69{5P#nZfcFf>_ zPO^tjW^Ez}%6>G}hvW*OAFQpoDg(&Zzg2}_f8UG9b6DJZ#iq-+df#0I`a3miX?a>4 znR{|Q)g(t(tG2;wgXcr^oKJR*DQEFdbz0@M#%X%imxOypub_vPZH-fASbQa4PX_Qs zbm#*racIVUy?{`N#Mx2RN4qLV*sLng8aTut1o{T$wsjJVDt2n)U@9YKHe^r8T`a`) z`n+?klpb=jU0Qynxlp@o1h*w!>wo;fjyNXlmy$4?R8{jb>Tx&I8Q09q($7nwM&s@$ zSX7ZU<72(~F=}K)_zon9v2U8|TRJhJ_x^#$=3CGV8={!0|1j({moKq;g>uNJAWRfOC~=>)qBx>asTk zg!l5P3n<3A(XxO2YZ{I6(U-2mCJIu?hibupTwvQ0wBYa55Fd-uPnOZ1NQ*%MeXqo) z3_fxWJ=u}T_|nz7Q@5nhX@$L?dqmx(uZUmZ@t;Iuk-#>D<9j#JTc8}g63R78BYV;mj~if8d+oFI{lY*(q70t$ZTF|Qg%)6&Ub+)EsCNgkscsQ|yXr}_(shOy zAtQ%sG&#L=JZoupO)~FJTwZ8Z(sCxXU7qKWTn?x;)lPMFp9`t2bIYrJBO0HhH&g%; zI4{$x9@8t&Y0JyXPq_*Bf}K3gK>_zBeGLG4_He87S;TL6TI=BX*dD+MUd#S4vkme3 z&=$zG0)2(j`6po-(O{=N+YC1{;~~~VL1k;i1xd) zCS-&oPEQU*DKrF%0cs-`emjy!$-qzo>ucr@)gz~0|6n)uKbBo(k9M=rRNeV_Sa`o3H01tC%mp|>J1OzCrKo>Xr4p8JK$;yk*fi<8Yq_=HuY!)&2zZt z$-{J)sl(tqe1@JMYnO3Wgr{jO>AhqlB+Al$n~T-o{%;06z6%?;(@az}_V_gOMIW^`lEO z-ZBKAz>ZT<9S-d(1==#o4m*WgyJ;c6!AUpzz?35UTSEm_|B$92(^)Oxy(Gi+LaV5c zNL+L~)FZ9rTG2m3x6e3N%VXqVvfl$p{iD@_smxusg^+T%XsoiJ=w&AXW=M5H|7_Cm zBqkA=hTaJli;3*VnV`{Ir-0C9457gPDB4i@W!Pq^Y4sB;A5)qj2XiVSi)G*3ElRK} z$3jGtv|&SA8y|q3U`D8@`y~&l5A4Z$(R&v7QgTO0`d;m54g@-3WS?`aGMujTSy*$Oqt}?xZgMN7mH%0buRfM>ofn$wcql2w=iV0l zYMK}fJF+gT-LaTQUo!mS$JA18GCQpA--f(xyN{gA9-P^D$sx<;R7gLf!A!$eNUCrpCS!Si_(8 zmGrc}69?`aSG{Ick=;4B;VrG&=m5u3j+3NenpTO$0(0_rSts)n%(a3!EL^Ea&mJjH z9)Fz-S&_;ZmCJi_vt)XNn1w@nPNu6gt!3ZWFrZFA<%^NphBBe`=R=b!gTDItzj`!; zbtALcgy*K63&_93&oY55ZxC9JN=+NqK4{`T6;@1p?LC;%Zj z&nYvlRBz)~Jw-r8b3gM$Wp+)BxJeJCEvf12+$K&p(gjg53Y9Dl*eWVEY=#`~qxNq@ z*nWGFeoVbo3R??AL8^c6xKPYA|L$uwp&e?;iak6XwqX9!5w8@{tyYNXZ#}`Jv&NL2 zz0$!|{4DPMK>>{b5F+wJQSrVy2u0)zF0YCTfrI+zwdah2C{=7eZ~G)JK?HUwqo0$dc;RlJf~fM75ytj-D^i8&uTC11-oJ@E^nmH1Naw`Z8aG zdK6YtTIedVxvs$2%MY**$y|Ob`Dm;wfsgYPUjhlP!Z_SavKOiq5>;r6ON2kQd>0ak zTyL}#c1qI8FBi*@$UHF-57INwfUkJA-dCkP#wTvwuCOJ5X?XNv;*I`%79#PV z)#*Q51;CVF40|?p&k5JSnkhGq$hu83R*wLth^vU78i|`j>n9z)%bOY-f`=U`Tl$?SyK}vI-{wf})UcW+jty<0 zca^RRPISPDVH!!#VE~@_WRe%BDiZb%yNY^MI7Zk&hEKY(&&G8=8wDr=h1kPV$##70 z?W%FT8}wNhy|!Gng_Ylj4e<4!ujM-zq2AV@?!OIIO>bUFi@57X7bmGTDT#v`V4hNH zq`1v@)4W(4(&GUdW2No?puN3sFG~9j$~Z)jsN#t~@R%TKF^8Xw+u!9ghiZgR0>I<~jG zAVP}|9lH!1Qq5FpwYF*Tx?zA%QHx71-JDP|2z5sdezLJnirAK5l9sQ}XbH)6@#PPm+?nAS( zm84zu5r9}Oh-04PWnamg%_AB!tMS81{pY>ohjg`hL9$eq_%}ie25ey)8S zCqM{Lx#l8NuK$eF{E2vRteH=8j2ygfo4EGg;E{-yW~MnF5+rliJ_L@zgqyUtAw$fF zgEtR2clvi=p#a`#(^C7)*x=lG)*}9gKHS?Zg`F8kJL~?2Nt(@-aUlhqKh$dx?rc-M z%TJ(AZ8^aKKeszM$3YSEUz;3aLA_gXHD7 z-??T%hIfiM0fRMq6+UR~XaG6$z= zfjj!coR-JG7|TQWy#ESQ{%W4(N!O|aPYdG6cuQ2soi|XN0Yj%d z<8Wevz&}-d@;fI@iJm)mwX`482lg~@LOzNzaw$6{1hiCef||peRD30jyeQHS zxSvvvQLzFK&@-cb9E<1pmT-RI`^5hWrp1;mZQwdW!z=9h`rwH}!gP1yi?05le^YQY z6*TeZ7;F(=x{{*VGmg~=aQ4BOAT%+tKj%7l!NYWj+J(_?cAYf}9YkeySY5D4@Ruiw z)Ur2Zkml&vd*BNXm0y{`#dVn*-6rk|O zJ(VDKeR~=UuicYdG3u&)g=CC>N0M!LGu?zS3mPaX42Ps!YV0Y9=aGGQbD7C*aMAmy z|F!bD$ks()=*Xw4MmL!a(+5*1uU0c_ivs@=&s15J%eYCMlM`n%@3b?P|@$UF$2e zS<6jf5SBt+=hW}F6#{%PwX8R2Z>MsP(7?p*`ySEpY@K^(&01r}#`crTe$IOo&ZK(Y zvsL`9&-TpeqSAT#_>Cx?6j}AjC)Lk{(cL>(vV}d49jA;_DYh-?)JFQW#L9LVry=uW z?-uq`PU9`&t58Gz;aMzG1Q{EWvBZEBcMAxfeT% zw)>;!?o9ieRlrxNlHm#|`FK(>zl!D6R+-E$Bi51$JMD7k71eO_YMjhp+<1HnUC@## z&@bCtd3Apy@~$gC zxc?>QVWw45pO-!kci=ic<4P`uCe9ZM%qU#BJB3Yag$xc4z#TB-6V^=Pk{tE;trm~Nbs#6vS`$bL}YTrv%B_^VA;H6)sMNogb_f z80Afw8YS|n!L+f7TAMj1Qa8kJsZWRDu8JxWFA1s?`Zn38##7->J*oTldL&k=+@5)iLh< zY}SYo_~)Do5}Q&~%We5yq23ZyDKXbECLa;2-lkh24AU!H`TO<2T5BcCe}8MCNmWJ@0>-wr1TpEKC=3`j<~um({uHSkMLoJx$U9ik@jr zO|4eKY+ViUR&+-o+V2+r7tFLtN>~S_ivwZH-uQp|bKqA207eO(+>3~hY%vs1);-J^wF&2%UiOC4(K-AuvOt>}Z~IX`s3fn%xZlAN|FOy2uftq5dR zgTYa~9$ka!;LS(cumBv!$VNk1#vEUb0J~a?NfM_mmg+Mp8B)@oI*gg+$Asoz6J&xY zhoV>8G-HaAv?17Z0`+d=QVsjl;#zu&wlMpa@J9;RQ`GJ^aa+UDJZ}jFT|o09fAG(7 z0FTj+8sazM33gAmm1N&X+-I|{5+AI6>U!Cag=>#o1IdZ-&9A*S>iioo9Q*fgnHh+4 z-(9O^eD({I=gXf~C(GVGHT>PSIc}4f$mnp(5dT>(sx3hu-z_3=gry_Kp9bnhDH+M? zc;#d}S0mF)$i`P<{~C}}x;i_Htz#r_CE-}riruUsxf<;Gc`LXZH&fz}w@)@*D`-qB z&?NljFe{DJ?qV^}C{IvTrdO%(s>rONeLOZu3ebeP?PR4MIj3iX+PRB z@sjSvU>6f<8S(ai;JWqNBkc`SBHN!I1%Y)F%C=<*Q`yeX^eJ-(I_ez7tw;gK8z!F{ zuiwMfX5!<ZUqmEJNTv%#Ppu*4TgHV7YY$fKC2hN`VE zhKC^%7$QDa@_DQ2_~IFX3K!F2aytfDac%;x6GnF>M9z8$@>P9{1fYdcF9J4wo>zP+ zO*0Q}O(iq5t$FU9a-@qnR)m=8J-ei;z?7950nace^R%;chC+oL+`u=p0YHH6A5X_x;n=B}6MZnNyXL91iBY4r%;2jy9NAUD@_3wh)gXwdmw4OjO}LBbC~%y_`uHdxL>2 z0?V}OIm)LX2HgGT32bgqgxRb+vY5^xR(#d&Hi^R-qmDV7Fut!LQJCR$T$5MLY9n%d zk5!DP?=J&iWM_cef7~0!j3+bjr%F~;SyI(^q_9u#d*g8F*<5q{bd3jE{mCE>X_=0| z^4R?F`-SXm*Dsd|XnT_Flg5nt5Gid7hqTd~;Mr-9S-~1tR%o;0@X=)ZR8C~h?5(>> zPp*!DhI#nn08b4tvpc;27EMe~k@Qgq!V5Dselx{VY4DB+%cKioh4x^Noe3tb#^{9R zBVQiEe*X(DKG7?SroXL^J^KL-qQ!7G!^gCZc7^($YB7h-_%Qc=h;(EtoVV2yz3hJo@bQjRUTJ%qxABeuEjBwEFb89c5nCw5Yh6fox`|j5CQ#m zXV7xW9#6^Jesc^4hIegTln>P(yEq0E+#ROSyJ(#6=+akKaVTK!dw!S}ZHjid25>u3@{VV#-!ILGiwZvr) zZo|Hpl`d6N*SntECkWoo96HZr`~=sz#^*IZfs-htLYQ*e=#A;9AHu{(R5XQ{>~$JJ zMBZnesQ?}!D6Xu04@1R~WLK-cH~(N{{i63s|Sb{%drv=N_g)^5{*nMT!p>dit?Q_XN^jw4=YV*r96f;@@ZDzWR%jGsZNGc@9 z#h+s6+jWE*IfmnIhK%IREc=3+R2CG|ofjI{>pJ0`b#f%MEyn5>Mia9SJ^dp1HX)5x z8sVO8W3wvoa16pGtN2XXJ#EPuv(X{o&C}$4=}~UTQ`JeLbL6*0@5r9MRg2mvnZ|6S+)w;*D@VLMAK@ zmv2$nq4RFVV?JIpr78A9x!C{#Vet$^Sp>2#?Q6f1B3-99Tdgradx{(5UP>|TELaZJ zNc_E5UF>x0*C*;(uUc!i;y{n%jkZ@5#m3BCe`?_O5~+#&oy>2r6D9fQf@qEA{px~% z?~GFJCQr~-3nmgfStyTljbG#NB5&j~bX6p4YZse&ne1vMs4*Kc*l~&A@M6s7@6?H0 zT>0GG78U51^7`y1wfgnxIHZSn*sA$E#afNI;*90(=(0jro7I_IF{X26u_bW3Rwke_ z=p{;?yFzYOeJjCmB$z9ii=$6~biKiS&j_du`q`Fs10MjEXrmMyEU|GW-=cF87kmqf z%otkkE#EcW8_bD+vTc*)jJ)pe6+(^sER<>yk~axT#9 zN?G`a?1`-74sen*Sc!f#`B`awEmcBgPg75mpc|GgnWHMPlNT-w^^f?*bYA#zQ`N8! zA~x2`I({hk9#gv&n@d-)U0d8Su%>c1VQ@}H|VaiKE@;E$~-tRNe zjs_(?%5AT!@fXSs*MYo%u?ysw(>k8Gj{--%N=}z+emIoD>H#m3FUS$hyUAFzr(BVE zQ8$6-ut>>Z-GHT(2-`&9zB&GuhhFN+=eC`rb$qw>Y^ZkbB>9$7@L{}+MzSPGZ?(OS z@}?v^swMH~EX1qQVkSB#G%^q%LoR*8)O*>_Rb1g2 zqya0a_(ID$A7DF1x`Sj0d#p7p*H2(Oo8knUU-iJE`Pt=<7vs57=1II~cuy+FA2b&B z!cj9}BN!;f(~mg1cMrD{xb41=-yUek@ z=cT>OgJ{F9Tu^p9^K#~DsEAz11;mNZ^HKV;+CbfC_!Rmg@*V_n*yfGoz8UCJC*asj zqfezf2s2Itf|?d$I2zUJTJXnvf&fHHuGs%r7MBcQh@UnEA(9z%r(ja)xpy}9x->VU z!)2;1(|cjvon|SQLPlul99e28eG~&3tspM@+=W&6DeD|zT%M0}B^&fz^SyBj{#Rpb z|4(Dc44y+Y7U+%cI}1NAD9rvsVlo@4rt*s51j{M(HUF5J$~zI_*~gGYlfNLIeBnQc zKZ)4HvJ4sZDDqSl;-NO)y41FOWl#KbM7qwHYs?sfCpt@q1|VwA^;*u{lM>qgY+iK_+50UHD>Ns39J<2KMc}H z5=f>R)P`($4Fp0S{}$P8@^&cC6G4Vn2t|n~rsCwKf;Z~Tal~A>4Bf%D1{^uoqtM=* zOf2c3Dw2q0 zFKCQ|DI>An!U}mzZf&CV!Ax;w$XL6QsInSmJ@3il zH6Ot#>6W8x!xR1t&%BYS5Z+$Zbbtv{@hN)!UCr7|cWdAa_?hB5JhXUQog`08?t5gZ zJoL?&Ie9wOB=W77&7jPF+YwM0r`h=Zz!IadLWoQ;NXGMSiF9jWx%X?X`#)m7{|Uola6$;4 ztC1u1U}om03quO{sOhk2X;>1FrB|n`r2n_N%O%0YLPy_&Z+{8Yp8UnRpQ_e-0 zRT$sxFdMi{O_JPs5DEiC!TZk&7B(!gi=R0OtFh`&L0g&Idutsq|H80Y^6`dEN?=Dw zhzp`}&c!o@qI0h78;@S%av4ja9kA=K?CH-%RC>`moHF&ruV&IBRr6bk;EgIHt6>QI zuR+|K!K~DyaHrOKE0xv?zfE<=X6BQspwJf^Oq2>gg+$;O;$lp1&j*v^zvkt5QjZpx zt;d=o)O^~)Q5GOm6hVX?uhbE!*tQkN3JvNjGhpDr%omjF1#uG!7#|QMqh%8_kBtL` zNQcD=Or;d?eBybzaM2mp_&YrpuOmm!2(CF1>)#e<%;L7xeShcJ_iz$m@{%h-7bfDJtGs=aJ zp`G2JL~fLnN8wDR3RWQ?Mj| zo_N7zaF~~QJbpk+@bm65v~~s!8NHBZX#S1Q!Nox*U^h@wP*!?;?~AM}WMgQ{OJkWw zLFTw?k?$iuUgut|C4Y@;iv7=%-;gPGi*8zdrV7o3t+3?SmzN~Z%v2#s_zyNNET0>w#O4K)$9Se95y#A)F@ zOfu&gkE2`cgy3X5WdCQpRxmSGjMSlK6F_~umri)~YG6Yl5%*}c#CS&}O1)=9(d4m! zLCHb!#qf(Cg~rfvY^eD~c_kV{QRII}=*zf2v3QzG(x1X%;D;tZ6u*1^gFR*Fa0TW7 z5Q8|mwuabIOcTKzyy?*y;TJ6Bw>fj*Ixew)6E$*v*i(vH5*49_n%5Nx(_GE`6)j*P z9b=+t05vB2EfE@aZ@H8zY82*^<^hmnF_Yz=ht{+DNO zw!4*~DHQZC-|g74Q%v*kLtmFBc(C}W=8CL2cM=EkNOTm94(l;@e$$V`mAcU`R4F8C z`Rs2Q{U=JewL&Z)ekLOqt|J0JsNJmxvb7oG@ep@w4eptxlR0-SG>5>PQQ+vto;lf(-CLpmJ zL{m3j^Gyt+;a{m|FLoJQIsEm7x~8M}eYa$Si-@ikIvtOo4yk*zs#Zz`Fej(_%d8#O zqiWS9M)&!d4eT(tPF{soA-T;{aN9;|A3YH}uX?Clv8L|O*s%mY3}h7A#ORkwfH9bz zmGFx8@r`+Y69?h!k_K(dDt`BKdH;FgRul3J(0e8S=QxDxs7gn`j$yNs7acr7r{c*9g zAuBtW{T`;KvPxc7qT|*;jC3I^0#AX~z=l@$I~cLr$Lzbj*Xp{x@rvlHU%y-1sz&tgB#H7ME z_Ud{Er9_4Z&BAAuNm~Se(b6y#JbX2Hw%%?V37plo#?$^D3>Y;`HV&W%P>QQHV!94GM zkWtP4l>Q$_?mmAzeVHwufFuMt$1CXVPo+&09-$(k3t1-guqR8@g z73YiO%jMOPdQ7r)ddZdiin<>P%Dvf8Kji)HCGeJBOQNTw61?a(p>pH;6uH}ilwDFI z{=a`=b09?7V;UK4I-8g(HJgofWqEj2oUhHl-qJ-sMOfFxDNUlr>FJ~**0W!Oixi29 zS7XmKxd`;v1@&dvvFhon zgow}>nI=Q?bNV(Vw(5IExR`a%%9QGzm^kzOFH0d5w0lZ^U0B65r;r^`6EIGTxzpgr zEl%_QlerZjA44MBG=+Uhx&Ne!b%LdL326vce?)vRgy0Be8#88#{a%iF>YDP=zi?Y% z(=w%wHk->cpucrqU!yh7G+ETDLk9YR@KDExww9R@MQgCY>raEP`uS%+`OR_tM;kft zM;x7bl0(#(%tN z$CA#s4ynK3Fk$~rGWRP>vHong!7Qa)%`7{eHZnXp{G4%qG2LL4sL*Ve2b)_%qxc+@ z963X-gUU9I=mxWv)iP-Wq$4DyPBrL@WG9KZ%!~?GH=-jiKVph*j>*pa93mD;aVJDj zNxeY~!=~aw9;H@*H>rc(3m!?^8WftPV!pGZhJJYmsj8CfKJw3z%8z(iq?02&Gkw=I z+5dV_R1C-kfu(9B8up)-CnVL19^T$_Oz-^APkCHxL`YG2L+{yApsQgBF8`W_k$36r z0a62x@TKt9LmNr}rNk_0O}#gIXcR3@LZL{q20JsHSNZ0Kg61PHaXlWVpgj~InpY|` zFD#4>LNREy5DRVz2XRkLN0CYcv4ee!Ch`^(!QBK%LaY-KE{RTUBD3zqA*`fvdndVJ zGv8nX)4^a}y76%^{yTtCUzK`6#-?%*s$chgHnZ7uA0A z`6bcSI^I>z!IH|4Vm)`F$5|sWRChs}?(~_Jb{ug~7<01dB#5v4e%;+3|1D$RP+rKh>`_taW zBogv#lesqTx-~6@hUqAAf84Gd_JY12VD>N(tmg@TQW4>zztxDZQ2c^N3Hp|FKEmhF zbWs;h_r8#5`|r)Kl|Z;?X^fdvdlD@>|3RG7nZVtg%ov*u@6aBZMCBlVLRHM@Vv(F} zWmgcGRScu(P(;!wrem9w1_tkD`W%*=k3mR}NANPEjs&iprv$7p%G~1sRy-~7p|z;I zDcQaZgP(@-8-Z=T7R^w?MBuTBPjLg~RvQ{+va;@yjs!}fLBtkuq?SgQ?a{~8$Rmo6{+Ox*VE10Pc|?gH;Z9!BTNd_e8jJG{Z& zqYgWW1&&WPrUIg`%_?s3?!uPVsid`~HsUe_N69Z5dk35oN;LfDc} z!#w&!1c4U@flgTJ!aiWc&QD;v!;jc!1_wCGjP zJQDlwICJh-WemlaWBO#Sr~rcsFoYWPjs0%;x&kbFxTjNWAJT~SjE!afO9zktsQX+P zS*_ctaV97)Q>ak{So9_7x|~)j#L0q%r1X^<2`E*egjeSnPF`$Xkf#m~c(u@4j_P;3 zVN$8SsEKC8H=0&2bAj=8h=2i#P@bwBO7NcFK*e*-?$-IauY>v_XHd12 z+v3gKMI^u5he@NBWYb_Xo>bF7y~Hz~dqHYi-u1|qbZ@}B@}`@Z>HY&0u3?esw^P)c zU9%>VUnQNvvMRyt@9?sI4#K>LSZ*`Q=QBxG+eIt8iMW;sA1^5BPz&%5GJnTAy0g10G7?pI<2F8iQS;tX$fUIL$k7xL*Dkq zjxwDMUS2uThQaoVN{bM#pXm>sCJ!i*MsWtD7)FLBlvduzxE{@E6y%hC4<2;!q76rX zTn=)2SM-*)AxehTgUtjh`(7U=CIg&zvK7ZPJE4%x-apa|^9dBSX$ubc^H0#Fg8zl6 zI>ex6dTVTE+b(ZnXvyf$c6(~k0zEwCrqdLa)x`A0v)Xv!cnB<pPmo)ve|=~! zng(9%-9*j7HS>14lJ<;}amP+gmC^;md4(hK=DU5}o*@ZR>Uv8cHg( zD`(J<%-Ja3|Aar=0QTBR?{jA%`~Pd41oT+H?4JhtjA>y=4j}6>3Y^;c>HW-tR<9J9 zq}5)d(aZ)!N3v#PT`I}BL@8|ugDNhzr4XNhb%4~mUF+@A+GLwimLV(E-MX7IF2lRt zJr;$waz%nIo_r;;AD4nI=nU_`)01Fa@B9`X_)u)mF~9~ZcO zYHjJ6U!m15-(^3}YxiYuJ@PNZ3m~U^xOHHk^!lQUpM>;5b&$av75mhA_j}d*P^t9L zsGD=AE;@^Zdf7Tw^Xfwu%Ky#MHHFtZ@%=f9{NOG7dzq8SNlcmczrQQkoo)Pb;q(&ZcgzBq&9YDb#Dz8TrV7)rn#dL5dAAYjo| zeq7HP;tR$yFvfZUllq2t|H1H`0$^t8HN;z- zklZ4Z=seNwmO2@D`Hzv#f~l5DV0b2nQRS-CVke{h7F2j-KSTD<>6aiMIs`IT)&HK{ z|2(ObE`qAcqAg8L6tU)LRj{*7Xl0nY&6EJ!d~r=O?y|#*b+{ZCDkHJN>Uy!?#Hjuctc{@@`J#TzTJ_8p`1kvmDX3#aB*cJTFM>42+L ztQun*5E5`Q$0EgX5J+sf?OQk8;`sEnm^ngL?vT623=p+(g?e=z974UlEPq+Grir!h zen)XNU&U6h*AG`B+M^ur9VT9c|DD~4b9w;X-KFala<jw15n=nkT>xAE`LeGcV|$t)#{nnSSIJ?d<$$-x z3$v1*N#e@#U5Y)*0Q?ex=4#)1SUIr%QjMmu8Eu4Ls~sAKmWPl(&ZJanhxwFkERe`# z2DUW#%El5=kFG#C8iRV&2b;!s12pcE?3HG_hpg(aSW~2+dUKof^AjriU5-bn`e89I z3zeaY@iOf(!!6c-kZ*9r26z9|`PktB-vkkMxp>fTsFkvPO}CTypB(xRIq9!8aU|F^ z#uk&YYdzA&sQax9ZG?FGn|*iOd29u4xKhsIbG~>k?g`GJ1tvQ<|L!0h)Y8sDyNh~R zVxHyIl8YF+$tN!u5^q>Hv2GOh=;kT_H$p{%X;qpQkkC@>c5pAgyE3Elpkid2Uf0r{ zX1#p+a8v%Aq@$qD;xe;S>HrQfWJkr^UUKlal@Z?iHx}-4c*z#Ah(lL=(SbT%6T!`W z;2P{fV%E<@pC*_!g5+5y+6RsS0^TkD6l$mKPy6lt>Jb3@yFiw=Wv<0m7_=A21-Oh$ zLVSBeN+6y8Eg22sL8HSUSL@Tw@_`GDJT5zxOZcTkijDpAr`njyvO)E;!WZF7JDKpw zMfW;HYAY<;RU{~$0b*weFhtEQ1ypSM(fBVGrQ*=e$n*DE$ECUlTtz2$VW6S+vsFJz z$$wd+Z=PQohGm&m{9;e}_Rz6A4$Ya52;Q9SpJo}9afsdsJOI3)qo})~N6S&G#Y<5kFyy}-*@yLy-7KU>7b zi%Owk`Jw%bMBdhH=vHXkh4|BVL5|Y0n75Y~c2s*8AqlT5s$O*A$^Rq> zl8CSy*jUewil%5UB}Bc^Gc_il_lWp1rPgsY4w|}o3D=vJ$3ug66Urf0tY0BYtIA@a zvogciuKN!yLnpL5u!|}2!N^mjlcGjzd_N4o?~~lFY3|nb!SRy6XcZGP6}-L#GAQg_ zuQauMU#e?X9eF~ z%5gNe)$pfSvr7Lr8Idc25FAEVPFa)FNoKsVAkd9EvbXoRX0XxZbj#d;K+>p-L!A&CDZ~{#E_J&#wa7C}O;#v(CGv=Z-g~NpM9w+1c@n zd?Y;LN}l^6vvR5l8+LE*@)zvhQhH3g)QW_`dAou`zH%X?<(LoH2bK3x8rvN8=awMO{P%uZPy5`4 z)KSLO^ZQdbzhxW!jXgTTdliH?=GI64P&%63>=IxkyXx&b9)$*Q`GU&9_~$?t|J!^o ze>+%R4gV7Zca-H3a$ha!=D!^P2$KR%4eQ8|@aVA%+tt!LG2XA~+9y@?sxX`zYGQI1 z5NuHaowOP~pCm;J~Fb9au;^2cHI9(Zh{ysOtO}c< zMC|0NXioCuI%7^N$Tmre`f+KllT$NvT3!ze7-1iyXZr7dAoNHYt2qD`F*HQLz#u<~ znHC~MHY;!rZEk2Ps(cB?p#kh1E!+Q)X*jXoMD22dz*q{f&L5?9L13^Gc27V4LX`4r zFTg21R=sTG6VVhdMO9N~+(TCm>y~MQMVeF&4u(X-^~Zc|3rm!*ZITW2^zyGsbq{5?oPJ2vDKPmt`9GEsA102);**#X>+0?-+I9=hL# zP zF)%9P{GEr_Uon;R6<_QEh=1qMAfZ=mQPmfb(P#f9ITqfHD;z&qT#g&YF;>;qCLPB2 zRO;aPZlM1kz%)z3fcr*NC3bM$My@+KZ9l+3bJ1U=DYf+nH6fcCnL^_XrvUIFN{PoN z{OY;W34^(*<**?pg8#~jtNvhPMmQF6htjK%KCZ_0&u>J|N;ujRt5WN!L;&vyhL5nh zhvNue3k5;w`H=<{6~koU>ut2y#)jl|9hBpBq`y|9?n*eq_8pPuKBR;13EtIyiwBF< zt^n8mKGtqPKX|VLbc8ohhtl^27JW>$%L#JIrX(iax(&%#P!EwCk^k+b@-_3&`1u5O zs(H_8o?h3fm1dB6uB!cSqItKia{IHjCPbqwhZ|qU9aaWsvh!mSXS^JwR(+%oI?(at zw}ii&-EX@5judjk)9)jKU@nzwh4IW`nRN%FI)b@d4xgk6be&(efUr1S+=`A;^uBl)-yo~O^0LG;A3 z=GiVPMf3>upZ76YKA4d)b#o>(Jgf7yB9te{!r=k8L0~XylZwSV zGYYHBkSr`LrS|49j~i__>|f#z7D!hS`;U_+D{iNYA_~FqyXDld?k$<^hT3%ou<1KT z{tucsx5^lWmx-&@W0l>X(!nk_0*sz5S1~1R@TT)clRKMK{?Le*O>7E7r4UXH5Kf&t zN~XQxA@KAarFV85h{g|iyT1J;KPdT)Gn}4pk4nFIh;>_@>r3s+ zS9Dv5ZZsQz1~Y&>cUG2HPup3r=0pJha{nCIZgWh}tA3Q%EH$XFyf-N?@jA5Uicn1B znewtNRdC@BbvLV(i4CbzHx>e%m;VkMTSloyd!0E1Z4B+W7~pCzh6ixaL<@D$jep*b zsGt{L)Vh-o;hWQ0mb{V1%-0SUeO%>8)87Zr6|vBaJV}p=WNvD(1)sOq6kbl1_Z|Bl z){A9hB}!0xW85wqwJ>7X9dtHY0BNY{Quh9tAy86n)bLo$ilR`;Dw)wQngSV49QJ63 zh4==3+~D~Vq%Tp2rGto%Ychlo-N6L|`KmqP$K)4}c5;n%lIeAv-Iua7+B#woXu~)1 z;93r1O2@z*Wu9H0hv&OHcZ(FIq64N?sGt7DKfiF8nlFD3dW~EOg^avjUJ=ACqqhbZ z{L=sC6RyL!n=mT}JDZXgo8f)QdGRz`bACd>wx>W)v-OFe32@+AGv5i2;@{3gw|gL; zZgFun(!KU!)LLuRzh4jGC>*Igg>eJBz)9sa#S5~Hxo7-l|vVYX~1^$EFbZn zq35|j!5b>Ei`M#DQjEd+e;phcxlAx|wHLvWHh>ZQg;@2;BcB*8CA751UHos;YlzTd zhy0v%-d_d4x6S3^%L9+W#qET_@Z^z^SmJ{@DL#6kAh@NGMkyqi`*&FSF+}UnRIT?_ zS!ZJmg{{nl9sy|loLM#hYcQ*WAMaLeKRlLNA5W=)sYhAEu$@A4#@Rf#EbF1uyIW(n zZ15)c3C?`k<|3%Wf!OGV=X7<=!!C!~v;;Sqw1X(tFC7G%<^$#ClVb@}`^*Gjwr~?{ zu=6!jx7;+1y;n5|1@IVRV5g`vf6n%<&%iL=UNukKmLP*f$N=6I)*?ombnRW&?#uuq zfB5gQyO+SQxG^O(ryR`4B(t?H0(F)@HSWL@ewMcl8fCts$s19@@!6=k9EDM}kO(Is znAgi}ZUPs9QwZ5lkIP}Q8!I7~pCB09R(G^c4z&@EAn}A(j+{hef1(<_dYr9?al~bf zF(UHa2|U&L>>oo5Cj3A@sDM4ZWWBYGOp2GwAj^yF60~fN$!axlLM38|Sii@YdpJNF z(hMf;)tZvz*(`m>e?coHj-ca5q(ENcC~qIjI7e8kWe2Ve;=E?tq z-I`YT-RK2xep>hy0)@q)-;$uJI`a6F=4hxvuF0@a>F{Y2XMC^ttVXGBK^7N~vCM#B zsX<={D${0HaC$CSU-nvy8v8W!#j%C-B0|(pE-@NYOQeX1%6TrBfQHVhHR4mES++A_ zCakpDO2Dfr8jY|0<3%QXoFY4sdJ~qGtC375fEl?*90*(ManWY&Etb`TJb5?$mI8;# zpjV7%tb4(ctsmB@+;_d(f1rJ3@s_co3Rp?Cy@AnMR5@4A0K$EDPrBztGRO~gK)X8) zSL$E4COD}lRT{lV(j5qBETD7~=S+9vvxgS_(!n#WR^%XykU=UI?vwz#be7YLJ}2*E zc>?kb2BlZSJk8ti4{h+H43`qW-!?9;wxwKbsIz6})iW|TdT5Hany>BEkt8^z$PQha zlu|ML)--caGAf#Bh>}|832>xg;weX*r_s80(Bylu{&kt}bfQ$tmP%zX4fAvLTCM5= zH28S|=r(=XD1V;S6-}ab_%!^MZM)wv?Qc+olryU_qPdX7)hRbcisy85;pvbY#YEn9 zo0Cip&i~TyzbdbvO2v6`-09zbem;J8IM?$@)-wZ|2vcY(|KFAj z1sIy=GnBfQ#lSf&&1#uSl2Ddj*nwrKNb&Se%0@hQoGLe4q<29pN~Dulf(~6|*Xe`{ zSMee|uKL3+qB=XQWoZfOt;Fj-keC~jNiUuG`Cp9A6`C}4wvf2`IjK)IVv_OyBy+OH z)j%C$7!;@jI*q47tTyegkJ%;*kX@|zq~D$gY*=iy_6MfobUU(uoA7NGw5755mw&BRxhWkF;%)mW zyoRNB)zc{G6#p%Bc}e`kou=fa5>-W^5}*@m0Qgl*ufc{x>Tu3Cj*)F-=RoenR7%4B z7}8X%lp`{;h(?`x%spSac<7_{lT$&(#nVbFE9gLh1$?rXjsKFE_(2^+c?X@xkK7MU z2MC#Vc}$mj;IcVfDB&DG=eFzstQXuR_fkmsjON!71PCQ)$Zd3>tX!-7^&#a6JL48nUvvH%Yr9rm(_V51QYG>5s-0 zwmprO+v|v>J2Kh!LF^U{YI*$;Dq!yERQ$Y8<~AIiE0mPUB6#n4bHMtUoM|JQs9j@f z@jTRoPM+~`tJ+N2wL7$axP{yOzIdVW9k`}s&IyKv)NP~dCu3j%wO4%Z<1oW`@r~?1 zQsu19$=U76tox>|JEdD#5^UB?uVQZukS38pZqW1L=PK3PRctLign|)zANexV&6@We zX3?lsL_JnXl07qCvz*88P20($5;<_epD1fT103RiVaY4bKi)OlqC62BdyBJKZICn@ zT;X`>XjuumX4>6K$fv*ae0fcO>GvPKw0VSmxDLY%pB+iyQ=ao6muS{YpuYoQ)NhV0 zux1*hse%z>>%5ff0Cc!Km*l_ThceWGHs<;mNhKMnj`qppBfMhcBlO-HRAlWxGH3#_ z+OU{K4)6$&UiKe|q_%|6 z{24o()KppyN{?2QMNwn3(rT)@h`5KH{TkxWur6iB(tb?l{z5^<(+tWYFhUum`sm2e(O0Y9!p`&C)UPoN=}$&?Z&QJR9q_Vd_r{;SHqiM zzQ(=2CXPNawtX$Vnx&eG?tb}Rzo!0P!OSl=(`9XO#XrqMyr`^fcYq{z?411fs_jij zJ?Q0dMhF3!Zd{sB0?ebU=yvap&A>SJx_V2HU_UkUF*)h(C6g;{diQ$--?PY3m^?}< zacVvV9wRXpntsXMi%%YZ09GT^g~^~}&sBu#I+{SH1ddwrjesLoBy`e)FTN^-Gg9 zu-Y9L-Z=Te7LQbg+aLEs3+10wa8B&$!=xiBU5ADeMSOg$#j?y#b}L zg(fzNZg0p#T(*-%Hx5@5yo@?YQ4gYpC-K*p+Js`0F z*iS*QNB??WY?z(O+<)qHr==ojKzfcStDHyJw0>{;s`qxCA6=?Q;b5`2AHbS~vgJND z8hT+PF`ggIpX*4#brw+({86ddJOf`qFDYGa@75(nMNL4bYuv7&7{l!+@?#iCy9g&OAhv^*1Vz_iU z*W%coFqKVC`ast=gsUk`>l;VEjJJfRKj>pd*{e_RVFVzu0!!je-*nXFDBBq+8-nq3 zT*0WoZOgt(a5m8ovYVD8-I|9yQaLMuSs{RP0pyt1z5GZC&vIB!=od!#q;T;yruQLd zAg9r25XVFCZh!l#yMIiJHP6Stb^gmM-iahwvfL{FrsIBzq+;IHevgxhJxt(SvEjPB zom*WM>VUOwpbK-ZsG7t4y1iEa;#A%F7(?)JU@Z871@?eoHK6zVLE-cu!K_&HH??o?2ZwCk^iih&RaY?AvA;L(bBvO*%1=B^JV-C-ucx3ZlkV!) zS1M0aqXzm;CQYO6+b}L3#o;6gQf?qIr|$1^$OxPxmb}J)F}7y51p0h&-09Gv*vg+- zg@#2OguG`kH1_nL+BhwDk7>7xxKG2Usb*i|C(Kn5nMR7M7aXWK{&^0^(P244DXZdD z7*$WJyrVU?+~b$=&JEY`T93q(F`;67{(oO=@qDF2tG zBOGi9bI)lke0rRC0M3Xr6xF!N;sMxsZ6IS(`{kkF+Ai>`uipVO!mkraz#cbBga8CQ zLDUbFAY-zW)u5UenBd$kRrEKF#Jc09=p6~MWIVY#hT#2~oax`dHCxa`wD+q$tJibQ z#4$}5)}hf*#6&Ih$Cc;Tu-zS^)%grK>zg40+M#R2)7!Rl+k{VTkJsl<>%60`Pp)z< z_)Gn9Pcddhov2MjulMr<%M@*s|nW#sX-MW-3k2fxk zpr$eQ>UR9?P_owda@{0fR@Siu1X6IW#jd-~t8$c3ru{93`C{35#=FRSVg?d)dJQUB z{=13>XEmQ2!?K`bXKRIG71Dz*Mq#}|PqVG}mshCl+xA1vWn;W>nKm5nYvKz; z`26S$&!mYA-^prF`=hSVk$TP!V`!jg^49n^_FQ75AtuM(}zS zU3YYQR3dkBgVMJ$G$PHD-*o=cAvY(YBN<0A)d827f&S7^2!f2s>T|QeBbW(jQou^Z zrmSxrM69r8H8STejvnv;FzHA+sI{7S1TUJeFs-nCRsY1tqK%9@fm&R`P0n{$zw7dI+?I@@Dmt-&>X!(+UX2^~q}iu;Lz~jdIV8@=jh%C z!c}PhXRT~?C!Z?9pmUGUtJi)|q!V>C|4qW*R3_54qYOb$*%TxWKJ}^Olr>#<(TI{b z=IQS1xOe(PR!Z7r=j`)?*of4m!#I#G{7VU}QrwkarK3<^?DM72efK9zPEjMAGf?T8D;z;3xmN- z9L)#`H_aRfhH_{A7W!Y_GNS}`cBVzT737un?1p3UcD#20%k{dd9y9CTmZMzC{|pS% zAgXYJ5(8#E0l9N^Dr%yGMq`txxx2{I2N;Q*krB?4S^-}gVfTR)t;mqQ9#2>XL| z!vDU$qUkDk?ai&UptK4 z{)%N)Zb;Z?G>DSPm;u>Y*VBn0Ax3yJ5yg9B*MH|&1%r<19k|&?8a=?(R2jN=<0-g< z=Zb_9WlFW}XFoXT9$zTEz0>{F;OHV03NplEAk22jLZH3{=vH;TGo^9?>;n3_@IbcC znQbvkdkaGY%H^6MM1Kssk@C57HN%PG^5Krd8270^Sr&$K55h%nXUg^qU|7LTOn;^1 zN5@tFW{R}*!bGUFQ75u(y+7HL>Z*uh#Fl#G#Mx%K&_-TquxYdyKy!YW=bZR)`b+X! zFy|{oV9wekQpu_$-i?DH{RRsK3IT^?vEOW=6~MB7M6+@eRVm`z?{V&e;n;x%#gnPd zb5ri!D9+DOSr#j{AOYdwDzqc@3;TSM!}1%{1&9iJS@zuyEY^z*P1ylDcj&$Ecp^w7 z$dBgF2;Qm@N8e=KWo0_Iv|lHMMe%yQbngS{OYOrE=uRtex*Q|9rr@Iuc95^AI(l}; zW262UKX_*}Pa!6IvPwBCZsYkXMq2V23afG~$B9+BKCi?^J$~oI$sCBm7v9GchCeC1Eo)u&-KT9tgiH$Jr zqN!ApqMIqQUDVo%(KI+|D&A#Z5>fylR{=H{hmzyMrKq|i^0XsPSb&8JFL!?6)s-8y zy2js5xkk_Ef?BrPg%imziPa4l$&`s3(l2u_UviQidYh|N@6*@7!0xO zn2JfKuBML8?5rpxl=r8k>YNendqANrXexNLp8xTtFvbw{o> zAoT6zYl^0td9AEW(oydJ0|P<)zA^eHd|+k$oAc%=8r$TaB5`0jALhB7flL3AjHo!x zi!Z;djxd(9KS|CGMuw4hd?{a?SE2WOGfrT{8KaAm;Nx)E&~RbfTq;?}@&`sUELgNi z*R63XTHU2H?d7NdvDF;+UZxP+U|t1{FNM-=7= zL~YT*RqmH28Xw{|c;{9HmLN_+v`aTRwLbH?FGhR$S@U5Uf8k(tbg1Xj$DP&d-KF2G z&rJCu<(6Ok3Oc0;`lMV_M%IQeA&AE%>%YZ*f7H*He)01xY8Q&7|Eb3ql^O@?Kfdgt zvxxegbBO6Y?ny<*6Cr6HHrk|lIBe&j1NM)cT2@Y4zC?I<&0~?ix4L{ObvFAtZ~lTT zG`^@H9DnRFa>reN*Qj7V8*ttvP?uAub8J?o6$Sh;rxyGEUuU10I<*RrT^yAbP$?}Q zJa0QE79P8SL_5n_zI+e|@cEr({+V3uAL=p%hr_xSzQ`a0fJSk-tlCRH8}SJ5$&Xx& zKkInHtC(`IJ*s2kpsx9H`);awu8-?4W>_cGbEwZ6kVLd1IP zDbrhk4~w0F6OKDJC)tCKJfd|p3@mymj?9NsUVISe2I2NF{?7*6VSXmRi)1jOx&|M6V61ir-0lSj)G`?HYgf8?%#1oNzb_9SeYwZh zIyfOVVyQeFTO}h$N$YTbIEl`AzVE{(iyZeqi1HfJt%K>zyucR@xu8(JPKOqkwmbb$ zeEnwqWE3kMTXbk$ddcTxEDq$jhvGo7mGiKzRKaM!; z5Oo%@Ph6^R`$KZ0bwX$6VI{<${{8#o@{xj8=u_^q$rnsK6sDuVjrys(`Tb&qmMyLS zzx)27~=Pae=1i;m%6uD>FuA${-Sl{%gCO5H05)=FL$e3T%FYuC&RQc##!Nht~<6jVe9M<6;DrqDY%|!D{LcFf>s_^ zXo?dku~6}mCgK4lOXrp;+qgm`osHAlaOfyUMJR9mE}%`Xw_P3XHDniU>gQsWt`n}^ zu#Dw>5Gb4K3LM$a)1Uy2Ty~)XLu!t$FeOq6-g2wZkf))*2Y=%5bJe}Hl!2>Ld|E-} z>Oh-0eIiTR!1A@5QD#iDtH+NTmR;cQ)^EWZ^c+xue()_+5^Syw473Qr^|=MFzjDz< zs71=~0h19~giOR>HgiVTBt!Dph`VZqdrM45jYWjDGL$rc5{%P~r*OHQJtRN>(u;ET zxgU=xnwzuft%6RmT+TDYS+i!NX7f2(h_LI_sp?!ZxnX2Qt5(H0 zw13;&)CgyIt1d|~?6|y}8eHGZ@f3F?8J(r|4GmJ?(5QyZfSLhT+-}OveEAb5e;P5l zpbU{J)&2U*_U+r@Y-)gGGaIuxm+qt91Z@lU9Mj)>Hkq~?U&2NdE+fD9{`>PfE*Wi- zI<{g0?V;O#!w1Sy*L+wO{ByR z@0_M#BW2}Z9+I&idS?%fAV)L*xI<*X1ZiD^NUa7quNa}#f<3k>5V6Idq&lrQpW!OU z7)o%_AG>@ZmSXOKHI~C2;{o^$9s(!Jj1zJ+)U{$h-!$`w3%KE1-;}|z(``fUx#k2q zL2`lVLB5ROoDkPfoDV|a3kEv2I7jes0sh{(YU#NZ~A4Xp}r&fi0;@op(|NY&v z&NI*Wp#1UAf0jG{cDL$3JAu!1GaX(X1siu)_5ak#lXEu7mqNTKv-RsUdx&z`B!TnF zhtD}Li$0Wh(mdRP?JyWQQ-RGsqi5nQ4va$1t>0s)(QPH1wga(`-1_zFqz>GS?+HAquux#MAh#{xcc>D}dE+NH7s@Zir+K2*5kvvI z2LJdSiM}U%RKxQgr|{@k&1Z8063r3cmFQD9Z6OCNcX?%FrNB2^jYXEXG-})9$8lJ% zeP+A3Qb;Ax-4fV=j;+j3$8zo`)pp43{S;WwpSt}h+j7X1SX-Hrp2_Jl#r6hLq^{T) zJ1fs3bt6lO#T8np6fJN2Xc5=RiwZH;8`iPNSD4adk$w-TI8moK$dk8Y;iTgJ;`!F| zPH+HEO-b5MChfa9h?K%kF`58xD@y~(C?i;k@b zhxfSnIanRgPd{On%$%OQr@~`6Eio5NpExqH>aA6DhUJD_OBgqA&mSe#uhNe-H|wI+ zSfo_Z7=n==27r_fCvHkhD8mDC2+fSp^T0hz4Cr_vDD8-h+_|B02(5^~=_pu#2F1N6 zF$SG^P>-=_b8F*i&pA{HM-ZU_5BZ&i-KI~ANOQ?MpTQat_rVMuZQM9HH2mVjEF=;m zPMh9$T>_&H_X(_eJdhCp?<^mRmL;l;xFH;FDitj_h4 zAtda2zCRq!gJUPwb(O2>L7NkD>8E_{6jQ&^nZhM_gv&1dV%GBP)82bB4!hVxPyMCy zi;=vHMqBNd^|j}u3ddmM?yCMDG$`iz4;w+=qKz5hW?*^BeC*gUR;+0_|5`;j4_jHW zQ?_x)K?mR^!#{Kbd+znc&w-zZ?a@eC|Lo_t>gM)zY|&vyhbYGpMhADaZ(NQ^{m+ZM zxUXkNmy&k0jkg<~T0k^XJg9v`n+MO^R?O6FuCRDn=dCodG_yfBvG+L`yn5!y}1? z5mmhUbA#&+Ky{T{I?^8M_U*OGw>`XK)?4I7F?puEiZ214lsMP4BTamRAC9Cf}b>75p}r3pdowNYss#=iXc*@)ko4GOgYmv zdkRMMrBpNW2@Z=NRbgFnc(}SwlaVSJb!SqS7^;@_E+LlF! zed3aJ?z_l{E}j}l2Nh}958KBt#Ltztad%b!b5E+{jyXE98NRq-R2E^_uwfC7y~N-= z{IyHJ6qWDj%z@ami;k@qUwTCk2l>y_&!}AObD)e(_IwuLzLSKcJr_GN7V@L>l6ywp zhRyQnB)jF8w<1dKoQ{yEI7t%VBe{pjd4%Wg(2k1i7H|I$-Pt`PcC}`2@v*+7)H$b& zUp&?3_)MP#)`HHB0-$%QT)1~*R1PYZv#_}wbvK#RE!*G{#DA;{R zn&QtZyh0lCi9=FZ9H%?(RSon&<0iX!YGdl|E|?B9WySU^&os=_0cH25{H%ZaGQm4i zqB%UUxX&;TRFWjmmfSS{8F$_srb4QUU#0MhLqlV;ELiTAxW(&uzxxEggd|qkfMpfDazVe!UZoCmbu(}I-h0o`dM+=p zWe#}>f=Vt&AlRn6K~<--`}qFw;hzu6Nx**EX6f;Io%ou>E$Geq)D8DGvD9 zvS6jGeQus!TVGuuO&hkz;Dd7S57+II-1|Tgo`5*-HEG4t>ekt>NGq2bmtme7GD2FX z?Jcdl;$k`-*VH|c?t>Id5U1|z99tELW_{}wk>A5Hv0+)ace%S7Fg;kPUJvz2G4-2` zlX~Bxs;taXo|I^jJ>2k|xO8gSzE6giFST)ZRsVA?%>}cAI%|)(wrsC6^Kh=Vic!Az z%)NBqFD?({e9U>5G7aU*=vuxQ-uZ5IG-8rnqePH*&4on>Y-5zkS=F@{HDu9_i`#&9e(zLqK; z+Om4KXJtMcC8QxO7I_Mtyjl@)US=|@OeB{qG=UL(9*)D=_%omzBIF=C4bfn9WJsnZKGD#Jym7Ujk0 zElokviZ|kT172OyBLD9_hv^<$Nn*S6;g?Yiy6~bm6W2%>R@H1P22D7ns~&Gkxz~qY zaD27~*VOStV-)U|AA4i?rrxkPqvIMoq-v-Cybn3#z{nAF&%IcVlK?alxbZA6<_!)x z_#n-0T#vnVayX&rpduaLrgsDmI$&1RpP%1)TO!G-HLKOZ#7bMbXozL_p4kbFug`tM zinG!upL#}Gun$;8c_n|&5!iS(ZQ2x_P!(1B441nQ=se>_z-<6u{T6)JY-veYPh(*4 zAh*dhjet;=As!#%DKoyU?g%hKYvc$x4Dhq~)or&Yeim%&r&uy_$(O#W`_Ygu$1rrL z>(6g~`}@THknXpC_>=M;Si{YUbMMX5k-nxleM18ETk7P2Z$BU#>&m48C;v58^poa_ zYH7t%z6!j}uY}Xzu7>jdvV6sMSv`BTY+hL}Ew#|~&G@qVs}>tmZ(Y4s7Tt1}G;Pcs zS=()r+X{!)A8rv@h)CcK$k(H9ytYHnZ^52;E8t+CGannqqYm>U3RLU?F z^vCqY6c_HL7E0xwAK_F*;ujzIoWgzY_^e_3T^6$y(}Q$Q6{6QeeNs&Q7LF~SvyF}- zE`c*Bbn|i>cbD`(8efBh1#-Pq`NJRotleWj!^2U+zP2|HKlI3>iMraxUF>xK{r1uJ zo_+p#o!8iRdwImR80p4)Mr*w}Z$5tamD1jF%#QSt%ULH)!Jcjc4}ltXj7bw z1fa=)&1zmge6H=dkvWQm|C7RNxU+xw#T(=^%{xP zH5LU@XGUf@8-Ia}I*hLTy`>3VsR}hzV$6s4WUP2dO({mo&wp}OZk-4XSu0b%{zmbG zyk^-Ke)?$4BD+*3WX3WgQ7LPpcS_b*|D2BHh`e}0qCymP1@*u@-pH#Xi_WZaJm`lP z9bbA+=N9U*SBnAped2@1$#=hWrWIwSby%u$%iT|Am4!EFov^=D!|@h}4KTuL{f6A} zI^NIPb#ziO_E2(fqY^7oIDS~imVD)+?+xYLpXCb|e^$Ffrwtt{Auu}W@~gg~OFVA7 z{r6#&I*|B~OXtVMmt5M$5ktq!rC+;3X|o9P+zcBwR4(+(U+4_G?;rol!e;-z{FTe| zKG>UqLIc5;eUJ(J$&=EFADSu$C(aE)wu zZh@4o-W-*a$}TG$Fm0l2er2A#dg=GAsOQovaB|`6h_sqK&9&KxWr=*Dp%<2-^RN^y ztz5ZUHiS-(*N&@tSBSuV9u`=?Hkvn z9Aii4;otqiImg2Gx-);`3CAk?TYljp;okkOld_t#2riC|^A02T3YojIm<2cGcmaCd z*T1fNb&+p;UJFpuY(5FlNK)`lExkvXFAi<0MEeJbRB<65?VSjaH@izy+!L31oTwsa9j0(p)ZF$8>1(bIiA zqpW1!(zUX+7AI8YfRhf{E3xMJc`FmkS-AUzVKRBNi&}{z)x(&nr*q5t9zz&4xH?v{ zbKcTu;4$Mg0=P#B9az(+?J9h8Z4csn@TSAb95);(^B+IwqiRs_!IK6D-$L`DmTzv& zxkBDtV$e|_E*(rXR=BL>Pk*^X4I7?x#s1XP43Hy_I7}XT_|Zg`+|ZUZG$!~kOoN3F z-&{t)KArTA6XC#nybUeKbKwP_)VIUoct(#Njq%Kjj3$o946Tp}=|_(mDGSgBok(21 zF=otY`P3&rA=7ra?@6Eqx_ZvNuL&cz46uc; zy0e-Pt%Nf$wU~ID;mq2MLpz3M`?`!QN-MBwyg`FMn8faTB;DYb?_wi%gqvW?EIPK} zsba)2om=+q#r6$b2e%wgKE!WMp#*pwBT(JFPq$&Y@k{>_Iq*HcVCP7>qSxd4q*(fm zy6u{8U9b9|FB~qs=<}GPrpX{IJ*VDev=H?@`%axpeM&ue-Syv*D=zzrjDlWn51fAN zy#6=-ANlZyD3+jeizKZ8<9dM!~4dvEIycC_l>Lc;roX-|5ObE zi&kRYDJP$#r_|B86$hStbn_2xR7Vmcq|6aUJUUzWW||MZ>FTYItP3Iu{P3Kj8efGxG#~yu@>^gO-KBO}WzzhPm&pPf|Lg!hb zz*DJs3K$>$<9zu!(Fw^h#G$?Zob=8UQ>Rv3Xm8W|wQsJL*Y25}HF_7N<^J+HfljT( zFD@2Fb`cnzm9*GfHNq~t$bcb=w&VZs6vRESZyuIb%VNKbna(Y9Xju=-Fs{W*xrrYX z#vYmJ$WM9t`j=5#glF#&8M`aOdw1aeVXh|y{q2fgZ%?0eM!!*aQ>RlW|MP(dRj<-< zWk7vQ{de|RXGT%CjNszD@ukZym+xUd89aE9q32Ays{hHD&bFIxx>5fAfA`9rf4@6= z>&ZScDvJ)Rr1^toot=ks4yXtf+_#cZSafV1e%QfT`)e6{ex^2$y&KO9#RPu#+;5AK z%y<6nZdtTsnSAw&pDSh)eVP~5lG;#w2KQjLmn(696-S*?fddQA?2&zA#Kr@u*+#}s zt3Z==@9|h>_{2-XQF>ozxYjSLD@JNoT1Fy;aaEZVMv`Lp3JD~C;wAH5ec8Sfy`r1B zJCQs9;#-ZSxp}x68?dEueB)zjyuK&y?cllYYb!H4%URmhHbW&5Dlt=RrU0$Z%I)6T zw|lE+IejVkt4h?$nVP&EV*e8`=#*PeM#b6m1)nQYjwLB=5Jil-QwE=lTtyo~#I zakKT!o3_ZfabsmTmPvANn~p+lZLR7I>vIy_#*G_g)#^3McijKa-j@JKT2<%XUS{7H zhG7{P1{h!vhE*L`42HO)#uyS!;_`g%h8NVR;fWfunEmBx;)_q?OJX#MB#Iku(P%(0 zAdHIai!cncu*}A6-P8Tfch3F(|NejdRbACxRbAb4?o8Fa_iXpxud7bgId%X0%WdA< zafTIq*v?(M#O^lPaB?UtU9v>iUp0Q2#`%DbBp7tPI07jGxD(>FAN_XNcKeoqcK`l; za^~V-ICRkb{;r>G346BZmmbd7>-2I9i~HrmMG4~PE?cJO(GBf>Ak0sazYESeF)Uht zayb6AFAj6+{LqnG8((Ymq0M3V|9&cr-gS4FdDHhKIVJCFTt<)N{fc-4lE-8X`0N^x z#5CUb;A5xAfY4Dx=Q#NcSTtX@uSOl2&Zu<5EcwynxYI-5MX$H^_@>ztS`+c>^e6C} z?ecH%%eUWoSGI!|hs2+D%G%0=%R~Td)&IZ#jc?T-Gv4vGH-~3DZG#T2H|&rfH|ELN zgxEDUOD+vT-Ar%HewlbQwdX2%CMQfi&Y}&70!2ke207*naR0g$lQUFtXOWO^$cY5u%Hs*4R0^C?K z{%I8L(T;qYPnCj~Wc4D*srRBSYoSk_Mysd2vVJ3-cJcHw#f}b~Bfu8dTV6w}(@5o0 z$Hg`s9L7o8FILj+GE3K{`5`ZOW)ZTKK;e-htGcH2TjixyT1PVir0iwPBkEZ8?Z;?USuE}v`0J}x0V;rQd55v`P2b<8mVkMR^-?yzR{>hY+m&Kx<^eXO#0 z@nX4qS9L;nEZus1_`bz*IVc{jmQKv4)j7C)ZzC``dq#NnWfy5uYxux$c4c-@0D1WwkmR^z zsd2XoNo>h%Q1?s!fxAOkD#@_bvLox56GOQ0m7#B`>^fdpyEC$_Yv`h}iTL$S_!Ic$ zC&>>Qoh}pg|Ck?ss5n)UZmkx44&zXEJiIsp6GZ^=3XW{if;gojRxuLdCSzyulo0Ua zGA>HAmSDDaYnf6>oauE@T!vV^ zI;T1Uj({W37y%@>@HqOs)%w`KV{iDv8$KBh?U@_)@7^anxDLrqt^x7QA}9WNKx9!K zzgK*+?7%D+?2TQ%GEYJulFtr2+MU=M-Mdfjcqo@0vK+A@ga?0Si7UA*UUz9>m)S0n z*)DfBTzyoKEi-cVmRw#ayHdl5&`@Se;(E3u#^#F7TRtq47dbDEfFs}t^cVsf*Tgtj zV<8D#82d0b%64RF{39nPV&@hLl1f_36P1)~KkRFq6%%EQxmeRSYJ^5n4AwMuvS7+) zr!iS#C)HI2e{uxmm57+zp4$h!)2E|r_$Q@e)2#-a;si>-SgJ#uB|HmwRh&{ zca-@!U+c(ea&UZkZQgeT905mQJP2I(=U-E`IZNgRJXpBRe?-ozdgSJNByV)E^2{yB zFI=%A43F*zd+vH5jL2um#!LS!%$Ku~`eX;yQLnlvEIj8Fnr*2*^uwFO(5F8m3AJIl zbn;*rx#7R$62V!a|75w8aH;HyVPZ>fgp&NAvGp-YaBUCaOgVcCmqFuF#Q}NXGDKcd zj|G12BO$!$_gb2h3p)aifFsax1dvpcLG&5d4#t>A50uy7M}ruRW3suV@sBBM{FCIh z^q2)ZDpxF9K$WSZ!MKQ*CmPeDsH*s{pxi_!POAw?7nyDdNaSs==Qb^j-%;evAr=|w zx5;=fm}zxcfB-rutS1|mbWS$2?mah)ADmuV%8rgsF_lT%slJX0=Pk}v^&kjGD@+*8rIVg8R z+`2=Oa`qCc@pCg~3HXJ#~*jx6Ot!OK)M-RyEDk*((`>)-f_{T8v zh$N|`3=SU*vv9b(JVt)JF^nFwB8)Cs5e{vCH1v%O$l32W^j;EI`0POPYOl=ye%WQV z=2)o9XTIzX#uosH3A=AZ`VVdn;rrhVVZ(DF;^i!s3OEccCAK(D;%k z5dp?Un1aSMh+hz|WZ!RN>;$J~|3xy7r%VtIPfCn+@;C=S^2fMK?BTrIw50Kushe!B zpGw>Oz@uJTr}}6YM=IL!-ts*+veU1l&rVDvK3-c zrdQ31wySvUq;>Pmt@6CNM&j2DE_8HslCYUNHPF>5mj{DfLQ7>*TPmf0D9$QZ!Z^SS zhBUzyzlc|jZzi}x(MimqnU0^2;H_2=_|kQ^hS&c7KLp$fu~GTsw_Y4puUuLw^3gBc z7;e71{$+^2@^kAnxmBh7=jm9b1%Fg;Nis)a0Dh7 z0o?uYhELy=O+t=_*EaS-4`_C1G(3FA!(s2^_5JyhRZGL}t-HeRExRP0Wj|bG24iFI z16#w*Z~o)3P!69*8C<$BoN(pa^n1diSASb+%U<#vd`C-P1$A_VNekRE*vmbCrL^;G;GhAC_2QTi(d+G^dU+DO- z=SRS>B*|vUF66IY6~Z~suy%PM?@xOK-u=!?r~Mjzfm0KKKAARSEL{Qp7m`v4d^DM4 zZVkSzPXZ#!v)0%~(LI~P+yDGu#!PCx?d8u3cvKba*819w_g1l#HdA(7U3l*5y8NGP zs(2$is33%j;ZACmL5_V1E&t?HBo zD;H`~YY2z7*C~7MdN2$=M*!gr+*V(;lX0@jwQete=)v-4BG57hB6(C(a7V-sf@OxesMgrOPbe?Ksyk?d!u2|7k~B+ zX(&30%;qKtsq%x9E?eN6o;BrAmu2hGQk_n<)iG5~XhH+l8U!V!rfm#G2gf>fY8gLG zDn%X2K?VhVI>D@Mtc;(I0U7ia2bG8|_3qL6%Ve_;0MPM}0!dAHVO}684<~KeFUfa7>J{wPYIL^NGtXER7R{5(M=HwwkL(ZM z_)#7dl|@cHWKMv`+DDLixT z%&_L%HF8{4f2c}o^~L@&Ln4w|D6G*wAjzxyulVb*>)M;q)w1)uH-?Ab_2F!{ z7Klh{u^!s^lYm`XqjG1xazS#dPcCm9U4LE(iyYf+MUo5i$Br%R+(I%71)F;9 ztATa{l3Snqgth(I5pVA{Y6O9kd$%Xe1*OlQ>2n8Qo$W#5w)oNwIhaKUF}K zKk{2m*QYYdqrB-tpXVT>jl%dyV=&QSYzAIc+rlr7lm%E-(D}Z~sbIFk3F~z#(QhQ!74R z^z_rhAHU_LbrWA-z2Tnlr5o-NdHn6-12*DgjwH-pxIu2qUZ>o2&m-aBq2%w5zdiom z@!`9*>Hz0tN5By{>=4*|`y*ldrahA58O$C7hlWC*B!h6%kc0aVg`JNc3_~L`^l_+v zRv4YNFf2J`O;~ou+OYG$KzQ^axl~X?rxCeyaX1VGk(I~Dthr(H-H(TZ2l|9MGkYB9 zn-O;JJQ%h(cK#w9I?n(Yju{Z?@E)r-Z5l+m_+ZUZJ^kNUZ$ zw;X|qAyE4>R~>tJp~u&D9f`>%>)T{plb~k3^N z$>DlAZ07W$3Y`{fkW*)eK6$L^)CjUk1%w6)D((|4*4h$ z{KWanHZ9}9;Y$JE%Y+el^+o4}=bpDVoczmIhCR5=x|B;UJSY6^`(9NyskP;?J>jFD zzbOn?><-|B-g@zQ;rvso4~-v|gw_x5vtRcqpVl}q{*2>%w^oXYw;cgT;P6FYx%k6h z{=*l9-H$w>mm@yDc~|J$y(XO_D)Z`SFHX?B_LOH@Srf z<1y99pD3GCsAF*$VkwQk;#ktr_^L`Twb4qOYidQuWv3qkO((XnbbY^+Fu)5*-x($P z|GwYnFeluf0hRK`u{XLq)v*G%p6HA>Jom=W4*`^$QC;H%VCd7i@ zjj2~X2cha0T&XaR=tyn%7679aSQS}1T8xLb6wXIG{xl&3R?6YPfBmjkhX3)GS4mRq z+;GL~o?kbqbx;DDk6nFp*ogqA&c4#63+IGiIB!keIo%<@_CF!#bLoqqLTbUB8DXa1 z4Y2|lCpiL+z~P9%%(*kd(z%Pm(u#8jai}~JTl1F9uY_j!z>r*`h`n0ak<~Bhtr1Ob z$-b$u@Prkb)T&ZEBzj10r3Hzt>|D&qK*9@iKw=9Y2~2KDxE6-CZ3{EjNODS&Tew_u zcvQxhUBNi`zE5^+>8`EWvqGOFnOm=VgWLhK{^jy<3SKz^j({UDsR$ry z(YOR5jr_ zQWIG$6wOIx@f0s#Eb6d_F;Hx*JX#{1aUSD3vuWC-QP!yKdFD(APkXGom8pV2byPT> z+2fTo4PQlLEelKLn}~G^-&p#oY`fa&oZ4lxo}IDQM~BB6cIe39*y#9Dx{f8hOegh* z$~4Tgms{kk-^Pm&cB5RD)WVl-Nm_y4FKwo*YFyEIhVbE-gXHUMSYZ^GPe``(=nZ9NuyS z905n5Ap%eAJP;l~I6KI`C!B62i6x}2WLMOv-MC}hqr>4q|C}&uB>G*kw)mJuVb#+IyJ9`^q1-Y_7awXlgK6i(!lGv+nvq-{Ct3iJW-<0HGC2s7o( z#-aOhr&}b@`oqCK`x^V`;|If%)6NL}_uLu!AK5AzGL~o#!m=d0hL4vs9;M8XWE(!_ z`{hS2*bRF`9|zLol0+|#fFs}t^e_S%t;m;Ljibbop^vY)*n?$XbrJtqOT!tFFA~mVHQTi^d*fmiuvqor3V}h@gZwJp_RW%`SY375Xi=hlJ+2{LAFky_ zA2l5qMx=vFof-L{@j)7A2|5bL;_HolClNqW>)n6z@8M%#`eDOij$OVW;B2jWW%s_}aNQktyZCxC7oUH$@7AgZj?*0h zN5By%A@H-CA5sc}CS2l&G!)WXC^&=bKs*-<{TZ^8_UO}(3d>h7LpKcVwKKD{6Q6LG z#Q8@qQd_Wxy%Rp`5L?Vv+rNUoGKON5Bzq1RQ}BfrsyqU9?hcUsaym0&Pex zQ$*<>=nr!j&k3u}I#z4Y(gWbpXBm_O<&oS%QVS1!3ZvFCN0L(WI9@sa zQe%jnbO7zuJb{-!V52Ob+O07#2?W65rPmSQE53T3gZLXZ7O7Tjma4Y#CK=ZtRZ66_ z^6G2PD(j8N83B{Djec3D+^2kdW{44s1@`rg%7KdPw)M*EqG20fxNv^asnNNmHRVwg z3pl{k=~>?-O&4v-n8VEEbwY7g^i-Gz>|-9#lTJT=p+JT!`AgA;Uy2BPJ7190dhH*5 zF>HEd_n3qI*&Cl5)~%LXw$~|N-MDqk-C8g4-CA|fbFw4g2si@O2yFU^orPt)wCow5 zq$sl&&JIVMv?9!1GB3c1Pd9%WiPm;S6O39L06h^&75>oiw-u$puIE=nu z`aBYGftwh7Kp19;v?Z(0t(45 z_VJ^GjYb-D(>D4nptCTROY4-!cCXZ!xd*0Q~Eozdro&KVKh^@a(_oOdO6Sllmd{XC!xm*1e4ixhTk9Xfe!IPlXu!;BG3%xI5} z%nu9u4rOCw9tQ?x=hrdEhuJTAUKlujRT#Ya#t?q`Q`6ZiGv2=sr_Wp8pB({5z!B(S z1mFralwo`lGccgrepgFlSrQ78D0HCGjPj(?77}GlJb|YwRL=<7u%5x~1%2~2sUDH9ahLmb1&R4#v7L?15uG~+B$)kPR&ib?+ zy%I6kyC%|*@a%UCBfw^#fCGGR`&{&4uRKqxd)?M&LL8;)P-6 zyqS853eM0%a*Jit#?5R>vI?KN7GmLZwqFudBgv)Vi`T3SGv?-(686d62uE=_U@U!d znPDF;HP>&u&`pZh6Te;~}* zaDE7QpdhJ*BJ&IT?R+jH__HJ62si@0i2%}8@USR|f7ByN1D73Y9Hceer%0vWh1u5l z2Q0IrF%{w+*ppiOSzF0E4#$K|v>^*M%0m)XC|97vE(D}#Y-P<%Hv0;u}RntDeN*|xWEnKXKcAs1l z$glhCq z_JKI%wJAOsH|L0j@mE^w2paz&q%xZ-p08Yxjt6^uM3Pt29)a>J zqq7SxM0xu9uNbeBQ&QV_@3lNgJq6P1tp*F!w{68r$4}yD>F8|3D%+_X+u*aE%CQZ8 zrwYb^@3RSVM9!w(sF^}N0j1MX!inhtg+j%4S9NyMwy|w2$WWej%I84jq2_GiUG=*1 zCp^;Iak={C5kHSPaQ`9JGag}aYgv`Km4MO^`X~1 zE3990WW%J^jrTqtt{vkph^Mbw7=CHPs*ca!2XF)&0Y~6)LtrrZF#?~=_*AuhQWikX zkTbOwu3iylEtW)*-2X5wgOXGle*AGI%~-iI46d|0DS|NLxMRcMfqh}$ww=nKcg#|) z3s1|IhQ8Ty$>QDjNP=rXKC>;Q#XB}qwtw+LHobNP905mQN+Muk47{vFDAGafglGyr z*J7gB79I|Xw{x_Fs{+u$vh~SgE|oD&aI{cXYL{$~QQDV5E^>KIy??Z{)? zMmcJlEZ0D)*V6}q((9^A3o9hH#u`&!>thLxm*2ASmKDZ3vzGM6nic-ckf~S3(yymC z5xUJOeF2U&%jQN)ofz71Zt2=dV@<2nqcbF3v59sv8ayMNE{Reb2@W0~09I^lbJU=a z4q+yv!j}M-g&LgmL$^7tJuXu9UDYuV*>S>KH9lUkZuJF~H+x_Uj}rS6pz!g0N)H{BUUKP{5ukd?F9Z=PN#) zad7*<%zmLG;UzahT)sFQ6e`kF;OU;Ll`F!bN9+u&p_y~#46d1xZ+pUq@T1iHg`xla z^TXic1z}+OgK7&;kk}vRHDhjZXILh57&qXXZ@T%GaQzMc6&~EQDLj3{Q^T)b^2);) z5ns9^(Ax;$tFFc_@|1)>I%$oOqy;|XsM^&a29kuAWW3Cd#b%UeU5->O{xWNj(RfZK zkjrB}aR$PNZN^ZPhjvP{ukAVuGwjcfKpPOK{U%ajly4TW&>pLd=VhvIg0T#@#2?FI zx~i58k10&cV_`KGPWAN1(i?Mv6#}>{vAAn)eE6kKi^G5h$42L-ZDFR#B(7Cup=cg2 zbDAS^(7Wm@%bco-8l+FobY<*=|T-&m3aDuxx?(V_e-QC@_aRR~J-5r8E zfdrSvg1ZEFNN|GlI(wh@-re`?U+Z6gYp$+2t7?oKJ{E=)Im4cKzP>Yom$A|AhZ{M3K1vtwy!LQ_KGLa+%wcHw!@0+ ziU6|W=Nie(a6Ev2zlucgwWGw{br<~iObbG%*U%doMJ8p`>*6p!PgsZX#vF!{_@4>) zLv3aNG}XLeGdAK>I)`FAn$y6k#?n+}Re%B!my?{0%Y5UE^)Qp7zdNEW0>U<>UT$=* z_m*Ts@!sj39wWuPmhbg}H*Us)tBn1rY;s^IQV@!AzD zg44*VFcyLr<;)n*fiHl&!*Wa!uLd(B7jv1&DXCS^+&*sMPPkQUqd?_(m9+<42r9zk z#|Gj0+F|OQ<-i1bLQ}_!s7Em&g)I3!NE$eMe{^mkRp$3Sz~pb#()WNPwlDRKo;NpC zuH($Y`P#4^P|Y3mr&YiSAEAziWov4TncA~NNK=ZAk3p%kq2L>p0h{}1!O;uMZu{`k zYm7**J%6?lgN;vviIq|3-`a*4W^AQeRtWd^=eZdjIvtv^nLZtrdM8`Uvfi!>uH8*V zUUfXiR;n{X3xuyn_zY;gpn~R<`4!_EbxFPWa>^2%Vvo)LRPDdfbQ=8gQNjUw*SJ$C zhsJK6I?bjY+(Bul2@@Fl%Z*`En*48a7~13>H!#+r+g+ZpI7jWD(7j{_Cz(=LhKbP+ zww0pELo9GT-Butjx3a$n-`b0B#`dv_W9Uc++;^FtdpX1N3%xu{e+jH7Ruc9;n?bw7 zK<`aJlCdKzx-DX0My09aErQKq33#a9&aMv>_gXV@eekotSNhY;{33t1SxH9~$`+~4 zBd~-2b7(n&EgnXS0CU@cDdhwHAU}og03$~++@!Q0fw-i)?lZQ}Q3$H%*eUK49uCZN zs`jrG?ed&9VSdP6>B8edobbr{B{u2t4I6X0c&5TO3zKoNrIe*F+JaUv0Ij)&mMUY@ zrr^~0#3ptBS#FClzI~y6ehzc@|Mu8%8i;P8vf;Rf^H}YuX)4`cNtQug;iWJL9lz#cwtRm~*dO%ci3&N41sA^IOx^q8al!P(xr=ihxGx+A@Di+v zVxX*MlxaSm5`I{AIl-=f@AWcjJy1vTqgrC_3+2*QaEIw=IENyS(A398_5NJs!_Xwa zxBl1jO)S{>k*Qzw@WkbSvrmSjsRu$?t@ z@tHRL2xF?UQ9ibna$`nFfZ3cZi7R`aCzN6Kl0w)a$ojbnd6%txj;(}wZ=(CyjdAS2 z--c?}yv~Ryh@0Gm#;twq7s@u4}g<>hoAjdH3;3hw-`v#AGm&kvcbRC+%2965+pR zQno`!t_K7iNAw=!)*?6KYHYHhN7b2AcEFr}%F}_{U$2I0(zYL6p$Ti=ylrBo9c@T4 z@({%%?$tHino@b~W@R`#Ex?Tr{29}~wPnJy-z49^)4Vk1R11+rsKMJY!pgYe()MeS zzGRgq0PcOQ4@<}A?|f%ZIUm-_vSVMgCCS+lR7avOmX>+bHHvefYx+RCs#mWm#5zm?o&bxHOa=u=N-R=X5OkMtrr@HL)Dda3G=BV;1V~NBPBwW@aC^MPup@2)Zp+lFL5zR0bnDolcrM4OV5IPy1>E>Kh)i-doLY z#N5UonI!w8afJl!mG@!&=kvUN0JvX|h9QLT1CR=^D@m&LHa)KJ-Nr#A)z0F@2;I-e zg!yU@ykb3313Ri)sKSA_87&i2RLcWC`lwF6GRMmul37_C*5SAU=f&^-2tz;WqZIwB zzid^3eAC~2MO_%S*7HH$Lq$f7IDB~ygAwu;ejTlCDknK6YA>hf=ldk!YWVCwK+yeE zuoM;o7cubWJ**EMvoisu_wu~Q1MbaJqCSC%8HYXr&UlIM6zAeN4fyV=Ee7K0oGnt) zmKlsY3?K>4^5Ce_3#NnMnjtqyK#YTH#RDUEb;En3D(znt0|{RybnqX!s}~u|9&2sC z-gu+g;BEk99ZW^zs7G*hUbSpdf*Yr{>=xXrIc%KrCuF$#D{2yS-7GDQG<&euBtOQR zwQCe~XwH9L!Yt6-y*b)b156)HtI@#Wk5Oz7_F$dP!>-Y@pkR3>QVu}d5Hg7CYmX32 za>t_*9u+5aiRjS|cQ2(xzhkEJAN7%r2z==~XfXcOpjj_)UXv!6HQ(>w^VsSf`gGo7 zd@c|sF%MVw9CA@e>8RuMa_k6>?Z+<{5!wL_PO~t^k8iJY1v7;ZKU+v;?;e+)eR-sl zwf7;v@u?y#o@KA#C&ljGqA_0|3G>vw1ISHdI08}W89sS$pOc>^Shm<4St7Wem*AJCNyyv9WkBav(<40tGkk z7kf^hZ3(XmA*53i0(aE6`8QvPS0JvX3K!rH6_yGAl)!M`Zakk#U@ceW0MO*}fhUsXRqxj^Eae8hF+5h#T zd8>@YC+T%7I20RX-S#Q^TY4osNpYgch*t0 zmjMBbNJr4pChTa5Jd&^WqBSM13HgrLn37`RNF}z+QKop>mAQ6ySgA9&SK@4u;{>)W z_18S#Axn80v>FDoB6FWH5wnn0X3cgFQ-MY{%?0u;6`Hw{r`$2s4u+dtdZHpmQ{+xl zwMW>Na2uED9|8+yPW%&`VHPp*(Yfc9;u;D1CBl!ZoEE-U+i0f9?az9qIhbeLT5~r^ znKQW!Dccq`&*IusmMg{jFS-QS%;95OiRRDKKIZZ`wW9j~`==|Irl${e8X&Uc-^U;6 z=^v>?UmNx8i zh0y-<#YH+(vdJpCQ@5r0a;K&KGHFW-DW3NmTs_jV>Zjm$N6FgVs3JJJh z#4Y;bls-eD$T(6bKPW1eSfL<&Q~3Ggh@9-2)TnK)GE#oAL+oL(VZ33R`medW(j{0T ztvdD5rRB5ldP_EoZpvc|j9;4mJIFxu>4@w4!(9hI;)1Rv9yBU7ZkFfx8aLEnVY`k+R z`3#hG>N*b$5P?E50I7Djpc$WZn4kFI3Tk62+?Q-&2;Q)KJamT3&AXaOcu~BM5q@yF zWAJ{Ac-jW(_xmwF)%MphpItmwCww&U;`%}EPnk0d6#_P%uRkt}X}Hck6p;4HouLM8 zeD$#Bu7AxMN=U;G2{Dxj5IRd?DuhD;(0{K47~43l+^1YTfla;|4ni0BsEq0&0kB_B zML@5;=bbETKVfpw+sRZTLVrlj2=CskLX$5Ywt_Lw7PuhuNg*c%@oO#S_b~;O5z|w7 z_|r}r2X%bp&;sQyKHlStXTL(vyU%7>ttW{Lk&|U*fQAp-!ta0ocx%4MJ2zwy#uH%C zKh}J^^LdytG44gFLVeqaXrab@eNHKOd0O91`INiuv~lWu&w_2-=C8Zm z{7&LtCRIPs_uHd~KaPqr{^jvm^HK!=uTFKAvf=pEmMwM>EdNQKGT8dtDABiYy} zP2K2-@$(fI1b_P?(HHvXUr&KFPc^;%lY&oY7j5z^b0m}vhW><&OJ<>`xDOa zxB|^QBn@kq54yxtPw^rj&_#$!8c|R1-bjILRjwDY?X)iel6eGQSvdt#^yc21#WvZI zl$R|7Q0L$o0R;rqh%xZ>vzMc$6F!{DMQ3{p$6u$J>jJM1xL%~wwdnfB3+_`EqflS@z`ZEt4K9rah6eZL| zdMlM#A(NIxC6ah887GN~IiDAtD33B_^>Z@iQ!!1cj%iP#;%L4|Yt%GfmLS*rf|Unj zU!V6+Au;s4JAeAngvIQ$4^?Ue915O~1tU-T&Gd))`Va*}JSX=^1{0^hJfVgv2Obo( z_#Llps$tT8y7VLQ?}4Sdry|a<(!i$ls0vOs_FJGLkRh#XHTH~YBz*{JZdXCe{Zmg+ zF;ugByZM=|GY)U)K-z1n7BgTbjXyOd_DKgN7>#zj6DO5qjG5~XTsF-Q@8JDgzTd}r zJcXx=qxo*iqWVliEKAT&D}7{}cDd;G^>;V_^R4k~R=&6--=y@OWlYaQ+Xviaz0`+R z?U(3)?%u#_l*ql->VRMF%qr^ljW7k;jQ7vm`@8q9;UBM5cbmkp?(NbUm;)2)xD@S@ zA~>2{e&LPXet7=0m;E@1sq|UFuJ!b~*-C_l2l9smDM&05mP=>`PihAb(Gr18)AAWg zFw2=h+7>6;K9MKVHDPf!f^pT31*Cwc{M0g>?LR*+O;~2-Pw~`DF^vOFP1P8dWlvr- ziP396SYLvZ=uamUO6m+cHYygb{`UQn;@yP7x5!%4yoQC*vXtJ=qrG`iDJwbo2rN!0z@1CiZ$p%Q;Vet zlx;$UfxFhirrgOld>rbQtHW%$wHB(JWyJ8Ntr-_<_s4|Ep!5X`qk=X>3jR=*Izgde5tH2vh+C;Nn!?0U<#nV4vHhn3+ z*Mjs@J5`)KUSlk1AQB&r?2Zm3%&uQ1OQkqgX8$<}P92Cx9aO(7Z^-Oh*NA5O0Z_ns zGH;i%+e*Re3LU)^tFUe)kHcxIS~N3>+qEiIT(T3V!v>s6RC7=hnB}IH=bc_*o?Br# z4c;&a+P8BAfQ8k0#Wu6(vmI$qVZ0Kka{7siOOm>ZPK_aYuif~tGg5p;)Chh_BtQ7U z$9PPy&1(Otx1QLl|+yDf@$m z4D-1>;^dK7UtUcW!mmtCO`H1Y2;&zvmNWX#+N{scWLtFEi=k2`i+xZOLu2N$hLcn0J zrC%qM8O6%wmCsSHr$67 z*0bd1UKc0~tbjJnIS|2-DLqSy7XRHhtQ3Urw)HgKUDR*b93F8!xKfy#u`n6@ds$+9L`JBGUjJi> zx3u5iGQi(xpOm`{m_Izj@nT-Ueb~T5Ipaqo-ssdM*?eB~x@mGlgibT`=>c`yK#~E#dV(3##iL zxo-RB>M|j&X>DS~=JhQyrwgclR9~oX#7TIf(w5z)a9Rzjq zy^~eM*iwM>+&yARbY9~Q<(S!p2Df8|&k^{wK`|nJC8?K_#ibEn(8ZHhzi3P{RC1l& zjphKWey;8WM@nPkq>37%HaFf>W~^2@&dD*sVGSpc<_l2U&Ao zXox(ul<-|?aJ3=R$eD?!g%uhnVjQBR@JT5+9e0wR51}8ugFIHMp}$7LxUd(J_k|rN zF?#4bW5@hxsQy`l0?$Ue2ylkCyA87ZwnfG&sy6Yrls#U=9sYZUJn|-`7q$P3^K&-! zrv{4C^f+OJ_8|DlDlu|+YpZQoGTKhc1pY54ac+l(UJNlAl#3}j@PIZ~S+ZnZ0c%8A z#xv^OLs(|%=Si=g464qyQOn3J(+n0wA%2%@Ot3uh8r_)6>sfM^@rUg563LrH`z0vn z^Q@X+RzU%i;(Qn&hz)JpI}Gf6oEohoIf{WU`dz|I0CShbU^jVKx9uC^z(FI<4%LxK zi`mTmXPH@Ij~UY(^TLGw<>-%8W9l8sUzgP3AwHUV+I3&vu7y72$B7VZ4}8(R9_OS? zT#v3rA}DLIqn-O@RDw>tuWQ0*?`_=ZTWDGCx z61JY66oSO~4qX9Qa&aXdJI*0j1=?p0rr*$MF&yn10FPiN2&hr}{87&n1=&WtOBVFr zIw1Cbehw4Hecho5EX%;$xe}yq%S7|t>Qh8!TfUhVA2W89IQ&Hv^{~SMDa-WS4iOkP z75xWja&W>Gc*@FN{(9TCcFTcWfPEa#3{TD$UW#+}aqH^0RzUY<^5FLi9)cgQ&qTvm zhC}E!k)I^lFLihEqx5TXhNL0`VL3~vI?+4uaXg)h;1wk=C8($nA=t3YD2{?^U6ZML z3kTcB%~}<{TPTXIEm|}&Di-c@vx_<_us}0@a+=FN^H{EGyq9yCSdVf!w?koQYD*ijFQTi=_vlrc*{q-x=Gc)&pH`C z2w9#0-r(uwRJN`XU1z=1)w~_-g=+7;OUCLF^vn9~!QDgA|LX1KqoI)?EKAu#<+@gP zl?gHr1?canpF@W@+ZZyRBIYM#Go0xCAs;Y zp*d?3_EJ5+uxXhwA%5E0Kh3UncCxm$c)v+7s+aPO&5y5fAtkVZIA0_Gvu!}~Pu~}| z1`06vtr#F47&!J{miuW4c|Lo7@j>zUC2=8mPnqI@2B{ ztuz7vxvG!Y+o|fxT6E9^nSOeohBn^@tkshL2-m^9ffoETNk`|eALm^H2AAJ@3aIMZ zMech~omqwRjpQP(+Zsv`_YsYs-S!VhaH;x2No1@hv+~$#myUf+f1ZcQt|Z zYWR6`Xl=^2;R?+cDuOfI+darma6RZP8IjsHHfREW?nGUdTHrrkQp-6B8Rv>~{CNSv zF{g;J9BeF4t!Y=_xQHgdcH5<5Hl3pm2LZdA!n&K^h1H0T(~IaF?Ay-u8@33WkWP@I zYG%1>WLNHFJ87~5;Y(A1`+b>~{o2bFZm=N_GoRr6S&34fo*fxLIIXB|G&+^J+;f3X zi8InrrxO|*_;ZdI5jD$@5bAm;cQz~aiEe5wzV{y8`&izn6r%SJf61d1FbbM1Gj#hP z4hsCxCD!GPUxYs2l0)J3l+KhaN`Mh7PF6HWZZFJ|0qOXx%ATrxE;2g zZQosK4|<@#$0o^G*~;)Su!3?>GWOE@QL1Y=F!`76!32TyBK<=*nZe!K`CMM5v+r7& zFHK+bVgWw4^9JK+F5&!#vy}O_|LX;?BOSl_IPnEn>w57+m*`}vZ^Bg(obmg&sO#$4 zsidXX$9hX^H*6%%8J{M~&#&7g!qo+I7gP4iLUfEqO%jt(ezpE6`(7hMPK;p1EL^x+ zt2olPuNNI2d6b_Uh&M!&=6Vx&WR}Suh8kV8CH+yh7}+R06AK3pC%nfkJ_f{lb=Muj zYmj}Kj&M!8LjR(}N@0p_M&W?fK=SJ;Y>5Vfd0&?!Ke#GPjsCM^E1hy|Poeo0NY+s$ z-GkYl&rbYMoDh#G0ht%|#1A}ahZRKk%^cAguc8x5e}09 z9y7Q#w8QKfqhRfiXEg~9E@VM2Bv^6F|4T=ujtp@>zcjiZE_2uWHUPIX40SI`=`J!n zAvX4{P9$*Cxko)k^dj$KRDq}u@qeofToCjxdzye=r&f6xSYRS%zT}W6zuVkDb@)k{GFmzdJ zmvB&qUPi1`JRDZyop!kh@n!5uGEM6-q4FsC0P;KA=Me6v$OJqJ(TGdJV>(3-VACib zxrlyE(Jnak!9jlXdfAg+Iqd-dpp23)$O z6fDJcz*N9dp)Y}NidRqOTiIbeBIO!Q9dR>QRRquyfy>*WTxJKCFIwDf@G3ams6%Y* zep?|yG>!@3&H0axHzc=M#<1)&FX zr8h37oNgDsJZOyDnQaPBlcX~lX3zYEf5wY^K`#^zHXiz=f3HOu>B5cmY|wuE*jq=Pp`f6$?h7DjRBY?ln$v^qLATJ4Dyq%u=qHWk5BTynx5Eu_ zobo1F-5_~aRRVR{9Gn^HzEMy^4oGFMQYp5AG{#4C@&GP6T*DhjuchLdhc4}?v4Tf= za;#0JVM*b~fW5udBW4=i_EJ^HW$|HDEz&WOn4*J>_UXt}M^=BTt;?^P4(7%EFqL?Z zEaw-!I^M?INg=xp|B|!kD#t?&o{az>_g+{zyA-us@6wp$W6_{Ca%9R_h*LgDP$MiX zA_YbA^6FL;)7GBl4ty%6KIWGr9B}vdm%#e(M>#*F*JgnIx+RrtZD!@{XL&QiLAeoM z+c2DD!${j{oSje9Wt>QA*&y*PNg+%nP^$GztAy5kR0b!zmYG1tVpiSc0ES&@*_|oW zE_->2g7N}1yV4k@KGUm*+)DAfqAdj*+FhxtC*c};vY zxv<@R3->BJ{R3`#RLVvKs!4qIUUAqY;V!DLz^6J4L;`S5{O2nF@R|1THqYwl!{8w- z+d(`ywuBK|2h3ffwIWM(OUhDL(g!yh(xV2OGfF^1oD(-XO&X%5I^VFiUam4IfxGI4 zJ&V{LK3kBRqCg27a*n+*ENrp+=hc3Q_5_RTGSgB=C7&lo5Z$!HZEd!>v;Foy+7r!?mK^XYxpB?4OxGX(u{F@t}5sE?W~S45oZv z&;BT)|2S3r|A&Ydx`==AWh|%Eel$jmcBWfYBXT+AW$e}TqE19(+Gt_~ajS{8IpvXz zY3CqMOmY?x2raKFbCPknd5q>x1O}PvOYM*RKslA44;{pHm^FfD76fE{AMAZ({lznm zeMne-JgSWZeo}mD%&Gou65~EJU!?`BN1xI*x3BW0{lJVR&AN%!-5-G%R7Fgd5`#JR zI2{wu+FGxq3C|?cN+kxJ*HWVZ!zxC7CuduZ1U(3op%&N6T&(nNn46zM0cULM)>>1Uz zX15z*)u+BE_iZoF<4eZ{hhP$WsNoZ^e5df0zc=>aYLFN8_+^E7Xj$~xkh8Sfo%J`e z9Cx`M#*b`yT+OipqM%E%3!{#;qCfhOzp8@&JPNU)IisU4lb{)GZ!kVEiIC5l=MF(_ zx)R0Y4Omj>IfNPN4dH*PiS)1QTw83(#U}FtJ7|SM@tJj^q#|w5R@bdqWdfhnU+kQ*qxLJNvCCc7VMRCX=ws z=pmfD5;hr&acOk3G02mA;l;|wXg`2~W6Wcwi8v42epy@}P&cpF5Q6ZAISh|~l6u_w zu`&5rDyJo`5vXu`ZPS>vpb{24DQhPfhiEo4V_lwhsQkZn#-F7CNgyQna45)p8(pZS zgtNc1>%|6Arq3jfJK^RrbGl%SAAFgXS_9E#un^yXnymylu6B*gdYR8g zUw>&?iyNL`FX^20xylu(n#vyF36EtX^Le*Ap>W4r2Cn-Xyx3EIEvEC5 z4JEdFLfhh;pFx-dX_LYKjl=yjv`o~{M$A4_dWx17v&9aIXoY;*OS@r*lzB*_9bpq? znbX9^Zj(n(>3-f}5o91DVM|`6p{Nu+gt9nkD7WFAr06=d3n@D+U(moG{)mi`A&dPZVZl%;yj3 z^VYk{9})~J4i{<>2PW-+vC{x(0jK)jcxU7Jhk>T8J zO7>S<-;buZ2GyiteFK3*pCa5eRmwc4!#|GM7sMN#C~))5e>WPsw}ZMXq*?Q7M98x) z-$VXi8}rW_eoX+2<3oppD3M6H0@mdix(alrunjhfvcrOC4S|YE(p9fJW|>$6 zT^F^&?<#lzmi_nUPOFO%X+^kInqdEfzV)20YZH4lE^ryHiUg;f*e<)BqTroy=3s1VHJ90eW#rj z!0z>=j)Jvo#Cz?M?QU$IEmEh0Th9EYpZ1bvKp5>5gj0_5B^Lehs~-d3V2h%41omuY z)pe}=qzyHi6!^A2fe{NOta!D1e-Vv{H1HjQ=Y(anpL$AHm}61f1XM=8b z4WZHIbPUMR6M&2;P1ZTG3Z7)I=)qyaD$%OQRU>mc3YLs37LQvcmfT#6(QH^KsU&HJ z`UE9Z?6Czp;`){*l0XllcvLG!Qq_1)uxO1P@==Welkf($c~A?Al5bG%hhjwdk#6(J zUa`0WfS5*s0AMVqY&(d?;&h_I?Ge3ojr_@!tePvV6({Ow-c*}}T!Q~hJgE)gpK1x@0mctiI(fB(&|hpp_u1*%B4f2Yq)^z*8urqo#5evjJ6u77AS+%gv@?qgX@W&y4X3z6gSvkvAE+0T|e?hCZg;BlBNoL>AH`>#t zNCq2*eT*7Yv{@e~lkcUtq!}g!mL}ZOC$7@Hgi#BL_bQbc`o=YY4DsP8Ck2<KTQZo8^>tPbAKEXy5$kF&it*|&B~%g z`hm+*@7{hZA&KIHWx0?ejb4X2*wtpvbHdg1)+oGiX&0LfLh0^Pwdpt70peP%g({+3 zGGUL4LpzH}8LS05;HQiH!~u%6Au2wgi^_*?e7R$(#-3Q-^J1j%r5@2->8hLwCVb&M zM{4;1BE}MTm-@fZp8vIH*&!q4IRla|s)a#}7(8U&7<@cF?1<{)J0wN={+4Wb6>;Bs zn@g?9DlV0s26nh^`j$FO3}RWrJkp%#<#~@vn~szxFy5%u-N7*3Vp>2poazSIjo!EL3Z8IQrpCp0CMPiw?aq6CSYn{#~!J~;Y1g(S)%_CTO!4t~wL_11Ub5arAAJWMutts_^ zPm$+-WJylaahkn+MPqB)l!RL{|Jz6^D!W6bX6DVm#5}lCna+fEm1l$x<8%$>p{B8S zfKCc6CD`xAkhGIvW|ENI<=&-J&550gjlaAq)ubjQtjudsKd%|`4NAYSVJnpFc@Q zW6cylp6x~y@uJX27~ji-Zj-rew@7U~Ju&t>-++PPlYEhWlu_$)oX&sL-~Z=#TXG6Ri_+cgYsvjfWR%If_a zQJJRMJ2CWf^Wz;Ieah=rH7#4fo&SG_jV(NBcVi~V3=rdoMz!*b4kZ0&1!VPnD+o0# zR{Nw60$0UI_Nx%;KY>bf2s~TZJtHs{$WMmWqIM2<=&KKbO7i-WhpIzC5)0y%VL|98f@*$U zD{Xmd9oKSzJX5#`El)dOQxy#$-;XL7HioiT4RBC)(=-Slx*F%W%%(_aJepMKS^UFB z;B7F{H#d;;Fzw&YKuHlZoETR}#p?N7b4fKqpVPon=bBn-txc8e*Q8zZH5C#GNHTUQ7Ov$$MOE+(X0L+kM1yxLw=8vj*@fU z`&~baZKK${OR@TAklw8fuEc3g8t%jl{i%jC`)Zn!Dz%zt=zf4{T?bqo$^wR-j(N1( zifaFZReb8bgg%UJ(f&uh@AibqA(kY#VaIN5jTl<$oftjLkJ2uw#Qu$KpTE?RHr$syr zI?V*DTlWsEh!*7c@=G!$X1e&x)wR0)7fBXO94lF2v1UJ!xmW>~3c zs1IzL9{7RLVbn?&lKRsUPn7kSr|^?jCsfG{Eu!GReRLoIBFd7HImvpED_bF& zzpgiOlnNwHa7cNH3Pl>1a79YX`r5z1_Hjn)EBCT^%@E%{ogh_g$2E{>`&ym*@GarJ_n7*%aU95{ z?$*;khg>Y?HBs{tShw&_c;Qx$7T1T~R$7uNG4e=G=lja8<(A&zk6E@N#Ds*UqK*Yga*?X2l{|fpaU%qrVyx=-jgA%CQ2)$3`y=aTh&l-nbD4vvuUqN`=_rG_W6L= zF-z7)Vz1|=h*}&_#VcBP(&!AyIy4nr6p!~6Mn{zy8#SFr@4nUz=dpGT9OPtf?tOn( zq9tfY%_w$oX2+8j>RA&$8RgMex$THjL5DiahCV$jWOKy8bX9d6URsy#OYFM^!1)xx|8E?+=o4jOMzU{@!1056>ATXmt zm4Bso_?^rDto^g$!Lwur+b_HKcuZy?q*RICEBjz1mBuIz1qDaVM-SSVL`;RSky^Nx zPM*Jp42l@M4NeV3w=_kE#SxBdEPYp&Gee?8hyJ4``Nts$o^dn71gr;RMLD$$GidfM zEYpGbBc0Doyg|n0wU-IdeDiQ=Y}iP}1*3yJGQ0Ga*>Mg;NeA24CMA1c(`}l&E>RgNCwwpo6B)JbTrH6Mxy6@c~zQww_+WNWJu*p-bSPfM<%xy15H zCnNzbdJM#OI)E-MWMjMSZGbqd)jnFg8lOeK3N4gHQ4u@8wI&Qk-v5m1{1Ze1v(k*v zoKkedA{d{+V7KlNJS|AB&>o4B=-Xfek2^@TkeoLSq&+WAB=L1||57resnTP_>V~Hv zmc-HGId*0M88$;uU}!W)?=WQFYWv*546*sMZ_E1!`nd__PC@l8q*ZfAa;>q`MWG5B zE)?a%&Ek#m1aizQ={RPAVk{mOA%sb0`f1w(c2MEmzFaKBtU(CB5%s6wj?vX}%occjNL>md29sGS$K7wJ^hoLQ4 zB*Y+@(H$1^V;%xrOSTj?cHUUBHnI};Xy1Lg{V*Bb3%X67a0dO8AfaAz6G7Iz(SqP^ z@^9R6R)yfzRBx!|Wa$e2pgsa{8?%M{O3-0@e^6_;;hyDQlC1D0Tq=Lw(NGZ>2{hX0 z!`I5$a}PeMP-TiUJmw$K6W>co zjwViG5yhyb8Z7CRE)ks~USl4lGU1@f7ZVoi2(CHAhUIV1mt!5{;$1tsI8Piuqb4$@N zcFNcgZfEZk=qo?Y{+R{{?%ktqyNRQlV_Cw~RV~)%9uFX&J+L~I#ybyXYtF`~$obY< z46UtR7o)Zy$j7jlsAepXy~&(D8Q(g(r*AZVlP!eBUO}K8B&xEtUfV>3J!_CO%qyz7 zM2)H`nlA?HfBvhwn)ZN3tJXmZIU4HE#=F%a!h8UOlZ+*%34)S7F=1%R zwn(8gASv=0k~Lo%pM{3YvCE7miHu7PEGCVuGSp?-@d{7GF)*qHiu$vL6UEhy`rCHQ za!!#NeCUqLB9AIA(T1g;C4ELpVSqv+6)5&&2W&)i;64sh zywHon%gae zHnPYx?Byg2Q~_eD)m9nqks2=efn|5R)c4?F<0x`g9#ts7!qleXkm*gH0cBjplIb-& zRs3}M`vmJG4UzR`BDZljL&6 z>a}>9__ArnpB}G!soJo#19W$7Z(0xP$FC9} zdYsEzPHWj#rmXy(jr{{7H|aPWh+V(%Z@bNZCPNc9G!Z;Z3PNakHYL-&5MEtIDB@z= zaSBm75c_8{{ayC7s8MEHd({~{2-DciSOWYcd%gKof+8U3i+g(^jdssxDd&4F>CYyKSl4o*!4iNhENKZk&!!ixCPX4kgLstH7*Eg%auuJF@S6 zj!J~5n&8EQm--R{KbD1K{=CEcIJcI8ZX^ltO!hx=-d}k?g^wd z*{B|ah<9t;YAk`YIB_M?#CB=4ili|mXns^|8mr+7%+}lsnSbPkVkRflZL82CzrSPU zN&E%@4rQ?CG_7@qb6>dMN$2o0MIR`A$Iv+-iW#lZ&~lUzqmQ{fHlV9VNtwh}h$Y!? z4+Z)km2uNSePso{`YuTv)3dlv((nFjL5&R|Pj5QHC=f*%lZO|#QaXDN$EFCD6noQs zDc@F42eLmsP=^%f>LmAZy*8QNWSKX@COM828xjkv7I;pG`SbqNTKa}~@{^+t)E`%$ zeFONAu7v2H%~Bm3$fHNp6Lw|5w|WS)Oay{l%HK2O1b>~QwebgDIo1H}vcw!RcR7aU zRr{q*urvjz>uf^&Zze{~-G=rE099irdqYhlpUssl%W8K+BKlYVolXZ6pSfjA#iX%G zF2m$BS>c1+atSl|I{@k=R@tAw-C1IWc(xKoxI%FFM@J1`vbfR?cQ~2Nr0s4@QMJ^J zdX|@X$Z6qMdd~+Rb!NlKA&^eYAxl&Y*%-FuwFW=xgWFD3J7+?Byrlo zp>7XNpLf^BU9fnxB*@cs%EV}2TwToJ{XcYlWm{cAwEOte~GOQ(DzKPR+c^N&o?8DH{& zLKsp9x;iz~Z80)z$4haftyU?154^vde%Y})@<7-N8$VOFt%6BjnWxiOT_KndkxKd3b#(@b&M=vR;R@piiKjj!_%f3ckcw?DNZ&Z|JP2c|8q++h$1 z;eD|j5yWF(Q=afr8D{v`TI0Y>v0|+mRlYl;CL4_4!Tdn>3V)P}Dy&lEay*OG;g#O> zun(5NUyh5{7K5?B!Iv?AwcFN5Y4Q`^`qVFnheAml#z~Uf{GJEaWY;`7lool}8vp@E zM4D&R8R08gl)_nIJ>gb(vMXE?pPJy2rI_QitvfsRZB7JuUE<`Ul~{T3F9_B^46F#= zEQ|l$L>Y4r_eT}!hw^ecBUx$$u=4AuCd9a6> z(LqWZ*B&09$L_HEPd7jG!%n@qFs*-;Rb2342|m-fM9zpG0IGP~-8lL^QuObyX$t(v zrKPovNvy4krfjWRFh)(V?O`p7(C9*hQA5f$|v->GxAQa{}adfGkgiP1}&YC&Wk#<1J2 zVj6G0FvXH<=QZ3SZ^{~2r^)+!6IcchvS zV`D~=93`D>XTuk{tHoltwY_e`fnFXrD5`ydR7Sb@#hNtrx?RktuV)1Qsm>YAQQ z^S-g6)GP|xBHT+X6v>G+L_f-qPm2nQ75i3Y_9s35x9;+P`>UVVP-i=!;i>r1Xv`Z` z1wYw?*WZ8efAUs^IyjY!t0@B}_9)_G0rd?sXK_Un*ILy>T;{VtG4~O)rxu+*DS~-6 zZ`}$N&ZQs>F|}d%~HupqpCSA8S;?2eCr8$*P^2jARlLHdOg{^ z?7|1-r+nm@LQnD65ZYfT5W0O6m9R&gjshv*q; zVY1QWC##l_zEsgy4)$VBf6?I%Roo;bq0dy*BkuM;JQ7UYYexs3gR(3 zvyPfvtY77%+0Hbf~V13-I3A1qC*wTFr!MKV`DGEPTWQZO{ig^B_$Xi z_fi&xB?*hd$v7nEtZ&{FY@JW@`c8ZH1^9ZTxO#eeSa^8$xmwIjt+01|soR}Tuew>_ zH$4_`c5&u2tjj^A@4HdArWG_zrPE)~t-C|7(vyf|FGHMQVyR6eq}B$g>CZlGQ~k?k zFEN7NDAI0>K=iEDc;pX>lnPa=Vx~tt4~Ya{gSw4d`;kb8hAs%V8-8$lOhWyEK#;Cj z)&@%<6K|@$Z)XY2?qGCvvn!Hup6|0e{IZ|t`S+F@FD!4mSEgD#job-CN4OFx^{g|#`ALEa~SIM^IMhs zk^?o^olT1h!~u1cu2f$iJV}4iXsSx`dqn1B#`+>E?yQrUDnfRf#snr+hsWZqr4!&x zQXM4$|IKZcI(|TlSceO}d#KZ&w}s8Hf5sQy>mPPk4rSb4Nlf8qB8zV(NuD~u4*|+# z^^nXEqj^B3sKSo$NVZk1i3GuLg35%@7wZ=_ondA=7f<-cgr~G&iEgC3u z*>ja+ADN3N-+Z0BG09aUJ6M;XQqJ0ulHXX{8kw>QE7lMVv_Zx)w1|RUxuM^SP<^*Q!}{%7+XgI@KCIF+?Z!LiPN^p4A{4 zw2kYc{D<0N8jZ2gRs|BC%+7sb@Lm{Jbz27(m)UtnHP!HFla_lx+UsE4s6^qm1dZF$ zX7&WaD6%z;!O#7nMi3olcXjx=wZE)K(*?hn;Hr|DtZ*gKSH5I9gvp!#WF&XU8K5)z zT({T&nH32ebGU8RJ`=NXuxU#Nb6+}x5-xYrmjxNLGFuWMVSNG)@=W%tBoF*U3-zRj z!dj$Mp~1P2YmBRZ7#I3L)*XrU->G5bqmMksNHQt!{BuVl*GYo+E|ZBP*DI zP~M(g%^}Mv%)djP7^eI{w_PtiRnj#LhG@NI=lBD~0sffyYlmJ|iW#E8Y>wc$B0VMJ z8jPy9r;uX^8I8D>j7XI=Nuyz1(}GKT32jDf@ZiuWb3!?`*3*||prVz;3E@E}c11`b z5yGa*4M58W(5gSjh*&!h{Fgf$LcB46XR@l6G@85Zia8;WXTUt560$cqPK{pi4NWM= z_J+CGZa^aNH3lagG5{J6Ytq@0t%DB|;~WH8pkHZ9-7kdHV4VQ$Ry1IOUhsFxP%a*J zMSbeO<>^Z^R$Gyq*kZ^HfErJw45Ua`!Y3=EmGdq;)#oj}y5+r6yv$GotvwoCbr46&?9-@rx|H%C43xAM?0aSF zKW+2VJw$qFF$AwBJ;)zTMQFt#GQNLlMfjjp*iI019-di%r}HkSK!_TNqMo}L+HY%E zD%r{*xv=@C3K~8qf7naxkWW#heudjM1U~+{{M25D-1kZ_{w-F zF>~9*#w_D*Jh_oZZwS10^>aM;0A3#buv}3H!e1WKAk&@ikRwP}%CNVJO(%?q(NG0y zQ9J9R{?Zg3T)AKotE5^%Z?g{pb#QA{4~EvJ+hFFz7Kn!fGMbV* zuS$|vMc{C+ItV`$zg|jkshL~Ro1hr=IW`~q^H*nWgMQtuK!Zmd|8I;LqW|CNS`cy4 zecfaXni&sgbM+OcB#VAo1p*67B!p)8(QYLc`F!&##sp8{4yRL#Ats^CKqF+(Rl-8( z?6PA7oY>Ka&p#64r%Sd&#d(`Dec`DOfdMU1<3R9C5rKG2Z!7aC+7ih`v!G%1lfZgf z7CT^(5~?H~K`ymgW*OjCoL}tESpcHl(+6c8f)5zS$nbaBW{C0E)3uwAGO1Er8M2i; zap!3cPQ%q8^(yNc^?^<&tpRXmb3XG)42X!rUdgWiTgN7=Y)$VEe)dt< z5qRIN)8B9jPekJ2glHLS?6VMhGAjMb6p~pQci=>Re*c4egTVtdgY$|<(UVR4!5r2~ z9?s$21*zQAxLfs9lgj^*ri6_Y)mz*olQ=2ztr5`m^lY(nv$ga21-t<&Fe zi7z4$J{fmn8j$J|Q;lWB%N^~y*n()=c)#v7i9<7$mQgGvqTHF^U&K#JI`K}xzH2y( zu%xG^#*kwlOxVxyROyIhT_`76epg9C_xU!mq|#U1iVysGfKo<&5$qC|c>s zm>#4{W%>b#XcW1?F&hEHOP82W;Fe<>_AreBa6z;V5w4T-C&|&_mJSPr*q*tcDewDv z(ZwgmrU9+8A7d@lp01y#_9(RoJGXA$=(KCA=`h`>jnkL za21Mm{h~DRw&%$E6Pb`+vAh$b>o}tRlXkc)I=%ETi10?C7)eg8Dw313s`*%X)-X#2nV}dir(nNVm)wrU26{S&6KDFG= zW$fUTGR1UAd4eiY)@dbZQFBu3VH-m@QDrQ~(s~vany&YM`a&%TR$W$_a5E5XZgPJz zb|}5g2OuWIpcMQ8^=7#P{+wo-Fb8<0LCB1P={Kpg0s+Hcfm5a6)N0Tca8UDWW!daC z0M2;@zw$#b3d)qD4Z#FF+b_i&!d;k3jZ zu*(0bwPgVZ$uBnrlYO@*Y4w{W**h1_Y77K}{LyNMw$cL9DhyJaSd}b1s{cUx`UkwR z)lNqVRS5!3Gac8AjJ9?(D7x2tvXq1f1_x25$CP$Wo=byoP5!rUZ%OYyh`!VyD{yqG zEPRoB%sRp((!l(Lp8t&sD?&T%%S7sQI5-MA9r6tvGs=WUobu!#th57bw)&TlA-eW} zGPA;}nX-Fp7Vv*qa6mekpL~Pb@JA_((obX?Ae`Y(Bu$K|FRjh`FR=2+MB*xkW7hbl z17H+1l>!!5gR9s^)}s7F3nn`$h7b~RUt-M|d=@O~n0lf)_BzY5o-CQ&pOAoVeZ8Is zm*pwuDJ*}#Ggm3oGHU4RR(sQOmuj5Qt#4;>K^_i@t&^x6TD8;4tbwPr;fohaeP>C4 z2nd<Fo$S>$t==Jk9ZXRqe7($H5eKAR_lS z6N`5tivLGD{9C2q2^DK8x zT)OB34_AonvtZ$ET{=HscM!w;|>mdtmTNs#@8G zH@Ar5?IoT@^m ztlQf+d!l;nJ3E&g6ciuro|LnobqS`69TT{d4hX4wHy&m`H8tEF7sz9!r&01x+&tFm zV71cqY#K;-42m^MWl%i2iK=*VF8Ne*LCL$h&p0VIVvNUq>G{9)MVJIbd1GU4rF%~l z(9Yl&`!q>$c5Kvl$DVh+K}EMWa`{JxVsGF?Ki% zJ5nygPY5O$YS?ff7Vll}Me3ZoMS;Yf4o-m3=ur`xiJ-`@d=F5N6*fneMzN-1UvJm0ZSPD#S9!2jqws$bHJb0b?j zZrB*^>hmbB3!{wy>9r?*LZm}{(hy7pUlGVyV~qxhl{ZiR@T;@|BAd)j4KCwb6t5LD z?{&LBQ@Be8ARC$3ZT>gToU>6tGy#{V1?B6gyCXb_)1^-_83l8$I!(ZVIp4)vEcxif zn(b5g#^YWzXHuW z$lM#aH*YU$Dt(_@it>o3<(})e^NZT%*N)k;({cNy*p{5I9R`p&q_(^*4pPzfqvJt2 zGlCfUWl|oCwb$vVaAf1Eh8>R#@o7uUU;bf4dp2AeMckS04#7M|@FS+h5w8Ez0>G7( z1dSHbqZ*>+IL?Tm^}8Gd18Fy)NhY|p0?5KusYg0p3BPB`c3+j((jlwO z*oo#(Nc;+_BNy)sVp3qXcY4b7$&7Rz{s{XcErr|8oKY>1kRhxI zzo?#d3709;x_^-#_elF2U+*t}+Dha7@UA4ACZJ(?IruJae2LRRJscqDHs%!+gJPDo z)%cQ7Hs^l8>1z`|EWvS)^na32n+p6?0k7yCcY2&hkos}v)tFokyX;xCgoQj< zzrf)lbcfW1fTY_)s9CM8S&$adtTi9^B2h8>^GJ{}A`LU_MHwAOe|-1a@Jtwqw+ zpqPq#E5mF5+#INV&uL`$96$*F)Zw-CNs6lS?^p}8npV%Jd**g+HCXbs8DjcUzTP}_ z9eC6lKS(?VxfHHOdO<*tW6093Cca!2t&SR`6;^rUtf)+A@S-)Zb9QSR0Il185OSMu zMHwz2#BuD+h$Xm~Qdy`t*Qxc!j?QmK(5?MhJm8TXl?d7Kr_B$RJ{cAulfA&*RqW{4 zisL(N^-nmOoxySUGxKf)!rwb(eu(k?p3{tMfb}kfgM*X*yPM|le&=KGZby4(kQEwy zy)kTJkm>1Wn#&=?QuMSKTYsk{$5}GDlMn5*FjEb@PCeZI(5aE{i7RW1@4hC=m(1kz zxBh;@nJWdSx!>Cl`hXg00^fzhc!5zQZ&j23sYnhI2!0z|*;cLH0msKirh8Ek*Nb+~+ zWz^o&l0FN}8j6lr-NXWw$Ka|z;#|j-s|UY!qLuTLJ55s#1cwd?hb*9s{l3yFbD+#u zuPA%?ks-W^0dk#&-JJYR`=%>aQrn=c|1t*RwOQ1D33uLoNSrSPbb>9i_6~10 za^aN*_qcc{$&2HMq{70a1)mr#ri=&7dwd^MG5pMfV^RN%`fO%VkG=!c=eTS)w&+2h{y_8g9-Y3S(fk zRwDeIJaz1RYv4(uYE9F-?6PK^fBfmjt{*z;g+llNIFV8)_4T$UL&BbF8FUHv>agG8 z16LqW8&|9)v9UWTZzcR@u46*<*U{qx%itM}1!!@f=LfOuWhkmG4I1+eFRZ1go~*1Z zm)AD_KwE;X7x|6y& zLtCjFrCz5s^>Dz?4E@KGBPyWo_8{HR9(teK_oyq}usA-S6PJRwkbK*%ud&*hjK4cr zP*V=gGNR@6`g;sS$xU7xCRIQ~z{f1abdDjoqg<^`AY3Zg&XM^rDaU^Z2^qINkS12fw>$@>~-)D$i+*@SqGgy}zjOj+0w`pSV#a(6AkyF69E( zwCcY3VcFFs;1?wW;LEwfBFKSOLNkhbJQ#P!Dk9SR`6Wt$!g}wgY6lZk5v2+0_zUrA zW805a^}+g7PgWN@>RKgdPLDJ7%w76GwW5!2P8bc`zW`qgm24DSWu1T{p}kvs+xtE1 zP2&ICwanA{FQoL-XcWrdHPMU3({ky7 zXgRh)F0I&fLIapSdF;03lk`1dd4|$*`B^fn%a}Kk6D?Ra#2U1Hu@s@<_FzseZ_Eiw zzVKM|!3JJJ*gd6tBk$28Ihe$HsJ+HqTLOMFYb(2W!$X;u3oCFIQQ9A!hMap$HP6Q*7yq=j3$bTLQ<}^Cts8P#ov`4Fhs~ z>(^82y3DcP?hDR_rH5NArXpN3LPP~wMe8m2@$^oG)$83%!nG6tNh_<;OJMT6Vw@*A5yRxqK`qI zK}@6<Kc|eTZ-YgHm95`j5oqS=Z#n1QNq(*y~+EI^2URq!KDh8-Neojxj)(cjb zVN^vKAMf_~Ggl^u^;=){Ac97bJ=d;Lrum>Qa97<&8&jV8D&6Kn-HQ1;O+cq$H(|FN z3y+wrH_>D?;C^;2Bas1waXDG`1e-6tVR?WCTjO@hRpuZ)z7aLSs3k5}6J<%S?W+OIn<}V6PZRE9^8s8lV)q|^DVvh{;=L(UO4FMYOWQLDa0|2}sdb@3U z)b_q0oL6xi$Nhwor2=1nIRv03egw-ZT!COf zjNe?}E2?8`%0X;}V(hlrN({5XfFP3$xMwRrrcAiCF>AwJm;_I9pYOv@h9p31;K6TerStbQD!v^-{` z3f3%N2e32Z>RZhy%@ox9g4@-9$%03v2g4=O^@*X3V_KTm#V7K#^mmkTBB!*Vo!a%c z)4ZKxxN|1^2AO!2GTHY$j?cfqz(;{9C(B|Hsu1X#Rb?KpJ3Hw0yk>UJ+UEODq?`&%D)rgumhlKV_zzD#jtr3T zEy#G2MW9S^3zH7AK?}THQ&8W?H(sb|k1?ntq<%lVz&}SDiqq!Nvrw!qU-`*WbUABu zH3}Pl*2kZ?4doKrb{|rcF@GBu+xVTvgIa`|-8Gh2lt<(dJ^w8(5&k+Uwy!tu{$gg~ zcrCq+x$7}w62hODG-Lbt`BiDFkmJ#87@9ObVa5t^wcg)p4Tg8nIWkMvYi1ZP1XT#n z*PW>2V(xx-Hg-lcB9twMe~0y@0Lr_|{_3QN4!lwKs-Y1R5j=3oP&I1ZH4d_4RWD?U zHI=RpkSk=vAu+*33d^(|ZDAEP%c|^Mq`wyIRw@AY$O=dK#dGP4mDD9C88;B;G`WJT zK=zh;EYiDv52bdw_@xmC*wo8h2!TJErp;dZWHL$06=K)L0Ik@gS z^hu+>F-fpoLqww$M*e9Y3)L=*@8M!3wLK>Rs>1z&ev{oTA9eS4JE6b@lb!*gbUd3N zA`L;-roPeX8cY;ChDp~TSMHhTu0zMmXy==h58p_X^%2Ga^=G5^djp>bNz?%RBy+pnC(vC&iP*Vc~+$0^kGXWIV*kwp|ht!Gs#F|Wvz@-p&|;P_zU-o^g` zY7EI$71eCx@tqVpqX+i@Si?3f;u|W&Bx0H^CawbZp?Fs7Ixh^Isr_?_on#c5UuKSBrkd@+0n1p+`iB@y#{rFHLxNj76w%lLVn)ALj<5hljL*4bmvgTK| zDrQxGWILGfOUfXN_vprLy<>W!5bTZiZRpH&`3*aTC(k7Fc9u0e&W8tdBIGxz(L(+G zPBM{vnTxB2PnYx;kADmG#P^KA+43}n$FIP77N0)Osuh5*bgSKcHHn10j#m zQ|k}+ykbh6ewVu}&?X+GjRN1Oz+cO&`rQMUHgoR7Zt-1rvONnv{jv<(KO#lRRxJFB zV6vd?g0e}jqDS4Jm@ak^y2=tbVq#CFB`uN_L&ztmq8>R<`T_ zW+S!YEMxu=B=^M#zS21aSIf`Y6S9w=VtbMwBAxtLP(QHMXtylrgV96^6#|Lm9ACpu z*q2r9Ol7khT28^?X_`6O=yhQ!G|Pe&aHS#mXAuI~B6o)`f|GqN3sQD#?Rwxm?wN`ui{Hm_iYxXs{qi+TN|05`<|69tB)PN~h@tt1-{dxNgx4LXgmCm3gjC1Y=8N5G>J1 zVq@A*kaAoo2$?y)92?eKUvyIZlQyARj{kY^z#Ym@4)s`F?_I+8{N$4*W; zi$p|Q@W=ct?M61S0&jK8Ez_BQM6080;U|u5ZbEJPU)7&Ww(iQt)jjJi^zB})GEN#X z#Yn_dHjfbjD_*=_47H`iQku%B1aXsGct0Knz<7@q;ROZn5}>kmpN{)Ei>l}4DQjsF z1GhLU#V~%tAjE~6U$((;WHkI#RuWpb*X%$-o_xAue~B?jD9($3L@-$mo4|sN+ubMF zGbi-5B#YQXX1Q_7Jiv5weUj%q&2@1$juOGCbQIeBE@%)WhQ!fle9U(e4T=D~1EzPUe~K><&qfkb!r}t4~5erg86jT5ekN?lw|Pnmb~j7lj^3(c|I* zD|(?Ka-h0ab*tPLBz+Fj36D42U*lRE9BTG;Dod#6&#zlKKg2534#s|{!+=Q{i;n`34Tbm9RchG&3{L@Q!R;eX*c^4B?Uk z2VIjG+{7gq4yLG#2T4P|O~N?-L=pPn{j#X1_dgw&9Gl@f=rC1Y^34d=y@I*hNre8? z;1(|;O^Zoo9o%7;^vt!)GQs!)@Nvq#Hg5vEe)Ia3>evtgx~QhLG}3D>BfqsvEwR5E zmwPZBWS(KaIiz*ay5|Bi!_JbPzB^!OZ-Hc$79TraC=e09t=4dgF)icj_QY-dqM@t~g_ckD+`*Ksmmv!FZMl)c@dEqzKFc*8M{ zmi78`nb!t3mJq(zWGAqp8^Z0NkA-^s!#C}if*)x0h)pALwWUGz2Yd_Xl=)d{bO5xt zNTIi(bN`aJs0>>}?#Ki}8{I!g%ux1^dYV_JzWv9PsO?~NNslI@snB$ zdqQt@JgtW$o(T5sTLVK?FCs?UjFFq+n3b(1ISU87vmG1LH(`d$U{YvTY`%9hANop1 z{!TGi8$%T|iDB~lig@gKB9LLQ9 z=csfx2c8)oo4}C^QaL+$58(OYudStNjBjJ;KL%6MX{rql3y<R8?u=DKu!>B3kL0|0@GlNKeH)gBJl!=(4`ws8JgsOb z+i!yFUAH@t9s#Kt{jX0&tv!(%+;8_kTHP3oK7hmi(`?@i>?6mHk~bOr(&syx2kr{7DFlrLx=gm@ozaUrLg zK(y=4X@6Ud^VCOu>)gI6ZUq5oKEa1*D3b0c3tj)e@r#=s!StXajZspL>c`+pdX|!# zY8QHz%kn0IJ*bnDKgI2T`cpLPb);SbuEd7KAxyZp)$4yUmQi~YwqKD1-ScN1VQ=G#gUpFZY%STLB)zpEhkAE$(9V} zdnE@>&&D!bqb%-DCNktiuG-A-KrA=kE93fjcG<+=qzJI?g03XBj z{$bpaL{PbLHA0-LU>P`)fok8xx=WPOI4>IOD6G324edp^Qy7D6tyKk{z~Ikn&YUnA zn}t6QMN*eM;-+6G?UZtgTUD(8=$u223}Fwo&4Et|X1V;L+`H|!OJ9-O6@*;@8e=65`M zEKkYf`x&c!(?hI)pY(61h+Q&0zops0{Y(IWD}eJUZlE8Z|6PL>q02$wj+FN}0;yJ_ z4h#s>?rVRKStk-Rqr133!N;rz`a5#GMYOEosFvT6aBukRH!RhfmoTm-vhOQ}-s_cc{v?uCJYHGbR_wVb% zr?~nMrWYn~zrH{{(tt;F&F31O#^Q9HLv<2(5K29g zP1P^QcB8&2NYaIo^a6px*ejG2gc@Uyzc;(vA4hqJ_(4Ypp8;L%U;2=GGuy*}-P*6e z27f??`bi%&(4R#_b%+D7=>Y!7RNq_YPFSyn9y|W1J9^wW;8uv7t+?u-K3$lIG0pcL z9;+Zt^5Bb>di?%!5_76lfJx)dHZM>C&CJhzP3xI4Z-R&99CMUTR(r*HrxUZceluR< zGOw*yq5+XmD67P-XgG;YvSXH2$&Q_iCsb%vFH&<4f$O%r9aGi`Hp0j?iW874HRYs} zk^nM(?EiGE$YuM)Ud6O~hLF__k9cmy8|IRwmfCXuy z--{oyy+4VyUKaF6^_M)SzsBL8_;g$1Ri!EAj<=f)7jm_{bj&8H8w@;h4DC)YHm1I# zL~(n+U1Ftx;dd7E1MJ;(QGHDnI&Yp1*^B&G1LBLtrE!k0-oB%wz{~P>i(kb$e#jLK z#y~zFOJtUfBR22^rVT9>?pV*482massl_7bH~6Dz(CS2-+>t)X$-IzYVBPV7QsAWq zKIZ%5w(i`?$yM_J8};^}Og*R@k<@Bd>YO6#!R%6eN^*2F;ktp$10dT&^rF=2k@+{l zr%p_)@!5m#awm$dGg?XL{Fky__iVc9{z{Jjb6wrp?}LD@d}XW=WSj0AZj+oad&fHpbGR+se1@; z`Ppet%UMf9%Dj)S$Gy=m2{JZ{KfzSX=-d&fn_3@?eQ-TzRHZ>ncf}&CJ5+;fKGC!i}2D{$oM2bqO2J@WRMd+1BSMB$%1yR zh3eImlxC#wYv)bkf-G^<@0coBNu55Cwe{6ag*>~U>VOHXBfUuAUkp41jE4W;Z}1WUy_#jK5ke^^3<$R<=rbn7LJ`@v&c=iP znCn=j2}WQ&E$hDr0k39o3^~gp3Om=_hX_q6v!2VO{#7 zUQk#evq7gVYvOS~T~$+rs;A#nhWpItb?*dLuYFhNpeConYUlKX{RO$T9ZXiCMoZb# z7u@#(*>uOAyD!GW7>G5vcfKCNTv@gMH<{C3(8rO3n*ViBGHVX8r6e|YB-X!=^%DL! z^s9>K{qlm}E_tr~Q<#MZg896;Q?Y+co<1ICL!x@JqCK!Q<3Xb#(~l6@NHyMyS3!ln$&a^OdP1CO?aoyY`x4VSe(Z#0msf!()V5f zS3;$qj&?<)H;lEH>vy!Z8{gB14j3@b6TilDhs@9f9j>R~&MHj{MAY%UK)Mj~Bqlxu zO!h2lUaMSTfBm|6_paNuo0zzO>KKqayF5T-b767fr84qP;l&1ok2(pNzUsQYzQ2JG z@E1*El#z}!f_s%C%~9O?W|^L3x*U{`l!jPe^U)Ne_&71?w%U%X;v3=$&+_K9O9rT_ z5P1o{i4E*iPp`Jh8qKWoAYn-p4+=$Ua)q?$A_GJX^l@A_{4ht_9Eotu;}z2eWIj!y z8Yyvp|H94F(hxWHCa@8Zf8R?LElIxWjl=T68-3ulvozA)4tn?TVF}($7aq#~+5~~_ zcik%^=;8!1`GMZ`?OSC{Nj!^(YCETz?*dLIpPt^+{xH|+=+g9oUn^&3ie$J`=Ib0L zT>YVrD%{H@Km7%4+(KeDCC^`>?jJZzj)$mJRCfbnF-G~!@)rdRg4}vsUXcM24uf$! z`a|}KbtNf%&rQe8Zf4PEuS&bIJ}j~v%s~$f{p_U1tmOceaxz^1*hcQWz7abf1Lgun zBQyO$i~zsm%I#}HGq1KJ$L{I=)i~en7a;8KC`L9xEczL{i`#=xJqVi;aozEVm`@U3 z>nQO#Dc5%}?uSI@fDwBFkeCSXU4y%6aLOP$VMjbM(KZ=v-FQ~NZvQ?63C_@sbg`@V zV@rl`9|mojFXD_yIfGW+O&F^SzoHb2`)VXB@iba!1tvuoI&N%^ls7$--*wi036ZdY zuyif!Y&5i!9HmNGxHgN1hr|8j>KB1luT@*IdR1ivHEfq1t(dUWEE-D6;3pd*T8Ho= zFjNTUMMu^r26Bw-W`I3UNXhX$A_)o@cI{lM|US^@?XlZRkp8cuDt0Z*fBllvY=3%q!MxGW~*O;<;ps~GYpl4-!R_<4{@tAAe_hH?u?yCgjG06if2!|c^}3a z4|0qGX7dQ795fKrtL-$96oLt_NV@HJVz$7OAefPPQr;BW2zit|ANu*^%u1U}o^wd? zwCIq-w>Y?mY;Yr;@-o_@yw?c&K}wq{)1I~q6YL5F5ZaU!(|)M@(TKaU+?0)cdi99EdC zUOUzcsp7l(cT9qVr3>w|8wCR1F;|-Y@egMmA$QPzAcP5dgU*vPzcu$~*ulmdibzE) z8cVjDIJj}kh+L?vLkbUcn*Du`yDtsy!&Yqm2*#p8LZY}JAsD&Muc`D6b9VSQ090!v zi=aq8MwDGQk*iK+=irJ*vP-u`l0Q^Q1yK99Fb+$1?Uc9{5@YqM1Isk<_yIhR%q&6U zvt)GTo=#_Bf6_|@L%SJfDRcRadmnwptgF};@R(#Orl9_;Bg&HYO2vr-q`b%@ZlD41 zv_o?2rn9lBPW9Hp1m=Fw_q#QXBe?RoMkj3pkL9q2@LZ9vMm;B@A;x+_CFRSn>l>M39UPDJI#IyADvn2Fxq;K>0^x$& z1E~AGtRwdhLTa{3zp-qkB^IFeN6;*N3zTGf+wb9ZJ8{gIjHALMStYgSh{Gb%O3=}A z0OT`h7YElLW%fq!kO0nbHY*qu5&6ds{%);j33{(!*w~*buAsssblHBG88(On#gw4HsHh5&QJj0GFDhkZe2(vtB;bulaUdde z^)su&b##YcY}4A>RZ&^2rH=ocre^7tl}TQ1tBV8pR@;@=4i(O!&PvO_)xUtQA3m&XQLTQKE0PYuggLT8xNi+=*|T29g?RrjC6&6G4!B1e!O zx}qOX651Y?IMh^~1i&}zR1SRjUD$KT`hLkagX(lreowUV8RsSNg118PRO3kVr}qsy zT$8h9?1=O3ljvIbuj|+}%N`~{AvY>8HHnZ`li}sY&kJ9Y%fs;J6;QsC+LcVD=R90o z*^OI_c(bhIbZQ0B$bEF09fN4LzNx{3SXw*(VUlV>m>(7R{t2YR^q1r;z_65%E*c~L z((}?3vYs=ql{s=ZJ$pDrM!FtGf-6%;6wj_!W|2y6EHl9f(Hx`vG;G#U6+#V>fxh3A zZMei@TrCWV=j6mDyl$d=nr?{kSaR>m@BVxT*26??=xZsk@d&_JQ4_i$gdS8LCkVoy z0z+iU)qX4>6$+BPiB@m`Oyhr3AeD+2D6v|2wm3C;vDkei;Cp!#s9MdB(6C5^^*Bj# zFoB&Ja^#kb&?TZ;Um4E{YrnGAv-{$H`_6Rvb3^)@A|ddFBI}p&o*xXmP;plniBV7Z zfhx09{v|)h>obX?7CsAy_fsu3mseB+?xdw+E{0U}{x|QTjmZ41F(a?Zk#Y87YW==; zQw74_zG{V2f%_37;OIjmT0a|-cPhy&2cDfV(en) zTdB?G$nN@XnlIma!1r*w=;xtF;_mxJ_k#5Elf<`qX6xsul0R&ENN;-WRk79P%^sU- z@x(S2*YGA=ALn-2JbZ8C8GtosUF6;^&@aga&FX5#y|#?GxN(iUexp1kP{9Q$i-W19 zUKU<#Qc*<4rrqI+zd_R-l+=tRBJ8E6Qsf`OY@AvvDmP5`9Re*Q8PX4cc-B(*76Y9; zo`Fo{1zYy&qv6)#A_WIygB0F24KYuC-`^FTT*a*!%6yVTDpqyM*_(;xyWJtwxzrdJ z`XlhdyuVWn1JO}Vc4;?;@sGfh+MnIs-jKlBjf?Zg-I|(EzO`(fcE_EvsM^JqRrxh0 zo+#?+E&s~Tr?5S4@E&F|2qctXB40d|e!|S0IcICFUEsBw6bF5JvZB^d8BeVf6PF zI{H9~Zo(YJFZ}#;Rnp|0TS)I;gHZNlWZ-nn#RPY*`JXj~#Ao6$k5X&$gM&sMsfwg) zxJ8{A7rb!-A-aR&dyakvov{+T-dvHLf*mn>%t6^zWX(|{IMbnY6v~NHOkFU)H8WR2 zj+=eZgF{h#a`Kq!yhIP_Xy_)mt5N*of9~v_B)xFByzw>9@0Y?oXNM8>wkPm+(JS8x zml7Dl#j@n!EgfAct|Oww`+}N@haB`|PauD7g-qfrqTLN@Eavr%;6eBg`{8h|_t}5PTP{0ZI-<7ci)5$9cF7dnU)oN$CBe$;l(T zkhz(q4}ueqM#m_U^Pc+^Md+M7K$)ir7`y?9ZR#12(0Ima zwn2Wi?FXEmudMeW0G}uD2$;xmja#>MU)*fJabD$7DYyfJ;S#pj`vg}m6J6REqtS^% z>W$M=EHst^t_KlDS-8<V{)k)VHn_|qYp8vBnD@|GByIrNODZFiT!-m~@ zv~ec+p1l|fy(e!)-7)O7xM5X1++p)2~XnY8F2e)F=4;C*~^wq##j7n4yTw z7|~64E_-zFXH{gh&u#FLvZL)HHmS;w4)4m*sN$d`lsq(qIF&`qW+i{MGw$BdsXwfj ziZ9&bZ<3lxB?2QC18@LfyV9_Pv46;N#lz57!EB^|>tg2wVP;ixr+2`t+t=%$GEat- z>;4jIfif!-PC`$$f>&0t#I6JvHhTXDwWC}mO9_;;-~d%kNOd%~1!st*rWaj-hGAznsV>MrKa$JkXV_@F_l?NZ1cpxi{Xj}c|HPq4N=_^p_)&l3iAeH<=+ znV!C45M}s>iY}~Z_Bb`-f;W#UHH{CgLnP=ll6??#+bbw~PdV>!eX>*~VcVEY3fNeP z6dA7R*g{Ou?8Q6yGbIbueRWn9g$5-krQr+3FbC9eVqhRV2E9 zK4K53PGdr4Jq=Adhfc0^G8dw&NqqhH+@vsS-tQBgfx3-n2V$?a?`Ot`d;g&`d?*7t z+PxGG3Pw#N48nXeFHOIPEQYFT4!apUxi#YM=ZBcA(FxA)@wfGTscY3nkM9c2Ci5#4 z&iFEbCT{?{|HX#_Kok9&-M&jhF$}6Gy83_&_E2B9n3px zs9Q0q|(YUXJjqtq^Q!PJ~t0) z9(-ty-4KC3-M++@-^bMTzJv((b-qqGfcJUs22d|LoniipmGsfej7B9X4>_Fn zBg;eLEjzDfg{X!R30pDmC3>T&5)3Hg?z-GzaC#b?#Zpq!t0uAk;F*}l$m;cuDzdcL z%%<>o?&B~`>3q8TmM2GT#duwA3fvc0C92zAu}|XG2Y}}1#X;L`rOI>z&*m0a#ff9| zZT+4EQ(RBn0=@!#XT(CJW!JD`}tz9dkNiGt7@ojx7KNk$@3 zy@y~nc9t>X;vnKMMHT3!YV4gFWO029=D0K(_V}iwQc0S^QH6Z9t~&=Tvi(t%`pa)b zds^SV?=NhDw>a@t5w+71v*-2=C-W@fg5VfICQ(~7{VfL2)Pj@iQMf^ZxYUJ3EyyXC z$?Fuy=zMN#lsM~&u>7}FM#pnd@Otx{HNsQ$e~#Hk2L!(FrG#d$fsw2s$7Nz}ffC(k z#xC34S!f&E{n9jZi{`U3q_#};)#4=ihGB%EeREoO^WzKfrD>F$H(N<3Q!C>%eMN5? zW`!65A12G;lH_&2eBl(u8#C;GxjRv?G@qmOAWN#j?f5H=|FV!^$0BiG{{e^}iZt3J|V36o4x&C=4vpsIOxAPh#)3P&29`Gi7vphBFw3s&5TN3UsU)Fyh_ZKl zE8(I7c{8SL)^%lWq-BQjF|$Q)`upDG|Bx$AN&TsH7vPapkK9z3nIYX?c;j?Q`x~Bk z=EeC?J>-ch_jU8q`Zkufy}bfXu6-p2cTdT`W`Zm4@lmJpz?K_b?Ul_3G0UsI1W|&} z1PH{VM6($VQ)IkeJ>cP1{vz~_>UUiz7331t=%g={QB}&kF&r>7>@TJHlZF?2kma8% zo+V#9qqsH>!s8zzNTWnH5710cj959$45$U+oNo#crPkE(UN;dsucZbS#5d z(07>YOn+_g-THg;e<8-&&@saK!W{;0umt5bqGG6@`Nx}FAdM>{BCLpIhWA3%p8J!D4Dib|jOjICafzvda@DgjrJ)*iTvGSLp;f1x1-i&^+0X zY`4+=MGM&A+PVM7bdO1Zt?YQiZ9NS&0-tbdivhW`p&*;?VLoduA3ZOrxSW5TS&a|RF;;^ccOb02-gd0wmp$-)f#e* zWO6f+*T4Qlpg?s(=y!wzY!C?Ub*q+tYT9M%e6Ppb2Okl3uSUntgl6e;I78^z)x`CA z8o>|WC1_6QTb?CW&6F_0C~=?U4`duHh^42cCUK>OKC_*cR(wlhE*HafMm{wfRbAD4 zdk^;SQqr(ppc(d1WAB4l>rBKVcCz?#o>noeaa>qOE2)RWII?ca39QydL?ee)W|ZRU zW2so7a1bAW*|m6qs>n)qc!vAeEd)j zwy<1@eE$AvQ-q$^9Vyp+RX9KNxcWeBalv*JSB~3nmm|Y#Hs1lA^5yv0)YJS$2^c1V zB=3X~XJWqE!t$q7d*v!EV#fxY#-oTL&4>ZT0 zne+VtS0U6xt&eGg#DCk52H-pE5H0%rKLof9ANT#6ht;&BAzoMON#g`(dz_IB{QpoA zJ!vQD!Fs0bqk1DzXoFc8Us2JT)Qls+$}dnTX%9OYsQN)kqUgZ}=fuN*@6FU70Jkw5 zCW!}`B&a4Y_C3ZrgIXuoBf&Ma2?xiH{rkQ5Qy$uGoqJUXnm+N;RAhdB%=+a=G-D)lSz}?uGt6}(@VP9 zw?9;%&4PH$+-Q`k!JPiG;SPx#uawbY4DQk9G9IlNQwajVH>xZ3hA z?V-9D(7uRGeF}!QTFUw5OwJR3T=xo4MFcu;%%gO?6WJc%^e&XrC;Fnuj^yX&0(12icf%F897_|}+0D9vU` zNLd<|C;C$8Hv;J?VjgJ?BsqO*ytbMSI+*TMelei;MBNYts`j2;<`V9;!h3_Awg?g$vZ{WH^p{rEdlQvJT@Go1bNr-#d$X2(}OJ5h38BB`s0 zp^F9k6s1Lh$<`eGt=7b=s!bI>V~(7S2e~@B<#a22MruM?Bxl1u@AZ%qwWLRjzY0fN zE545{qyYN8*<0bT62v9wen5(7=2XKJblp_@ubNb_^0n-)03>L5T2{!}K5j(ONn|G(kjOHfg1y^mY zEp^RSQ_3oXQ&w0SwZ0a=w7e#e&0{s8Y1oyV;vrXdfhDoU1BVrsBGi8tQ?vW-7U(a^{* z#J)L>W%owYJ6?|YRKM5r`{Ku?v{Ue>qD92o%t-jp|G4BBjK76YaPT;*jN$qqjGGxu^JvXF->hXO(n4L~q$G54)EKe;C0D7m z=6Nh(X7t3U47FtzU5;9p_kJB;9hlFmD(UP@ENwVeoI!_w81;i>m`xW(`ZK9~B)WbZ z4tX8|W_YS(ij5xeVGlr8dmkf`TN`n2Nl1C$YIXxbSI!1C!7G4P(;<@Qfwj z7IkKsskQ{KYsWA@zn~KONt6p%L~j>BRsTKA|zT1^9VWbdl~XET3vapeZ!O?p~5`n47=d zS(p}ZbKh+^{$Ld+p04L^c>Ej zzTwY$#&c&IS|N;e<3PKB8ieHFQigA)0GJFhKF#;E`E^cxyw>!wyYPQ5fR~ClVs0{q z-8gXqCiD_=Cn?W>kO|w}g%Gzg`|(5FOc{j4iQn=nJ?NNRsnK^ayN;r$tq0Nbj!k?L z{ROy)v@ncZco6br!0>i}(hK#SJ-pgZ-5=HJfJUlUtEU^&OM5c6TV1U;+SORHXdD5r zOL@7lOO8-crLbMKI}ncimMqiQ>VoW&xT1r{EOBeO*$jm0p??A+4z+E-f`?%#0j&Y% zmc@Fs4l*T1(6#Z-$~4|2c^w-xpA){=!gv>z0(vT{ar2=uOZy@W^lEgTo63FS!=r7m z;LJibDJy6^ud!J8Zy4}DE;)YEn+vUfC0hUdk{XYcb@)=o#bSzc;tx)@9&A{=#yK)L z9h~h0Z6R~rIjokIUt1Gni7RSKT333cj7HVwwxO496^CJ|D*a=3B+)Kc&*`oTs=IQD zlb^mbQDK)OR%MOYhU&}b^W*Pj7Ob+HR0cXb&COAgp6XFGvL~==1{D6+t&$=+TDotro&0sR1`ChKU zb5-$Q1rby+1Y4CBPFLqSW$^LGQr8%ig>84&0TYPb=4(%stOYjX%`J5O_v5jO&L0SV z9tpi$IY_M=+O>=#M_lVnhq#*#mZ7OVmMYZqT)&Jafq#JBxVT?j?r}d+I`D=tKk+fs zyamo;B$XK^Mz)f30bbN(n?;S3N=B3|=Y%{KhEmol{ELF#G`tq3;s+76ig^vVq@TpM z>r);C|1#RqBQN{*C#9OVD6G2%SijIZS6eW916Uw+aOjod(29E@a5P7+A25lltJxLm zy4io34rVsD2YtyewhB;6a;(h0Yi8zdOR2UfX_m3~MZ*w{CJ!k(&R~0?Iiql;}*E~pL_X<_?QC>vss`7Q*q;(_Y(7fo z*G^A)GNXdSToo4cA_uhJsGO@eN8o$!W33y!D!)Ef_ZH4A%@yC(JY5 zXlhC|1MJh1mE_#mo2_-_^qxOi7Z>M6^#E^8?yS7m{~P8pxPK2ZBe#lP;SSXm{-V^z zf%DNMI~w^^(BA!?EZiM{n&&A^j$4=3#JD?`2G3rVPLcg4!za)})py^;<`v`p9bXg4 zJ!N?c#mxyU1sH5t&+=bdua8(cjuOrTuby1bWs;aXlkHe6f2RP->@l|C}byQLyBk1978VCMIB=9VP2Hm_9^Ix%3$qj6WP|fB;{}B z=-AsHn0W-R_YrP^I&obYN=V!4+x$;}JE)JV9@3^7qRvE%yR?d|=i@*Y*T*L9+20)8 zQ|UkdT9qW2+4}76wr5OX?#v)E{C}5__+vrG-D__+#djU4Bo- zum;kpHHxEI*>ysVP2Nc8xEszTD+W_*-2Xr}hj+8CK3!Mml^5`NWB7VaeVs?3^J?}w z+D#v!1XnhpR+BP8lt_YW^Jc%%lwGpbtjt;vTVZKsqCxs|PVBPt=s&`@KK*3>RT2A+ zva{c8aM#e$NYl%_f*VVppcw^BKfi`e3Lg_Tfj9I=l@H)D z29o=Vl{#f6Yy0AU4Ma{JJDyaq-kVaWMRIoqfFj%Ch@4qk ztFD#1eN8n%RT!FT_DTi8>k>mR&UJ10hmzT4sB?-Jd5TA&2uJntRma3WP1wpFpybWI zp~Iask!*h=X_Y^*3-R|#hvcWlM~w&r2~yjeK#)>zFlVI4N%cpT3)Jd^<4#jL(dUwP zc;m@pC3=b8N@KGG=xJ>7_yG631b?@M4$i4gS9Qqe=@!n-m88f&p06jI%2n+xN0;vt z&^{}sM>|fish&AroDIIZTS|Af-<>=5K|XI5CQb|F2(S-*2L2n{CHGA|y(>Ky2!7Sq zsvebjI+z=@px3~t908M+kP4A58MzgN?Rpw{f7S4FG;TVy6m$ir5~a*{UTB_flW!L` zSEei+(^fAoFOwqH{Ho4$->ESc!!otK>VBge=L(+z82DwhZn<{^nx$0Ru;I*qU#hyq zqH%={Ei(JF1HM|P7p1bCTzU5}|IN)wK?qS+VeGrhu z(r${1L;^(dCyxDc(WeN%sKSUvv?GS^(@}N(Cn8mXO1@cO+A!OtT*U8`pG(&_6a*WB zM$8G^o)rXq!5vL)Z;FT@XF_rl3>h0w3UvTLX|!PX zzgVt5p^dLFC!uG(|Hk2~3xnw1hrc2SE8I)aV|HS>s4mQfO;}a##lqIBx0Ly8k*|6e z9xXzey&op3+%n5MjB#ViF@+GaGuMDr#gg0dl^O0xLlv6q29w6?9`n)}?7mzvH882j zx{k;@iJ2|4S8%z-emuRwIhuE5%`PqS>~SLII0I=4!Z_@iq{j%E^L`KlI2WTag(YmC z@=6MV+1_8RF1P+eJ{9|I-4;>62b56)(eI+B#oGZ~7sOpWKbcP^Qf|M0XK}ei24e%A zwU1bl@ z7lcj=^uMO#R^~8lj*|XJzakli%w9LTbymdxpBw30fkNnLo&WO6k3NqUhHITw_4nur z!&2ZKH!D1S>xJ=LXKv!FX> z^Su?gYLuf4D2#rylF;5^xf$QFlwBa7c1ZAJtZm0Z|H|2?SZail)#fR722*>isVt5R z%1CV9>nrx-4`i8ao&?d+#}4ejvBgx|20hix-9}W~B^`fJ%-6%QHD4B~ZwrRrufJZw z@LK%tCP7p4NDPRjX~V2FpU=Nr(BmrC^ZTUjwBR8@d*OrclZ+oa-kaRW&wo{V^Vm~* zBuagNgTQ>GhVL@Ci5+cetIK_2BK=&Ub~j)+3e5N=#m5i-M}w zPz{y4NmNP`~)+%(g$M;IpgNXp1zO zUGb;txmsW&;%{mp`^N-+gO;nY1_z`e&7l1wpbgD-959)q{@P}$r&)@f;#Z}pBPn44 z8*J(%#UiQ;hOG`pNx7@qvfBwzM;TAwJ*<3WOygKu=Rw|(kVlHwEST0G)I7V4S>o-9 zzf|Ibtz5#<*Q$ipQYEUo!uc^ldd!b?uJU!-KUAiYMh2udqbM zBrKw1L0+YRk4{b8iB-NQp8v{uC%110!5|Jq#OKE(GY~Q|H%47AZh55B?U@tFWNV#^ zR6zg^HQGT}F`!)b(s3~j*F%;rW5j-IY!=>!JhvQe+SmxU1y6t$n8q67W{03!i&ynxbSe_^~o^Ox!!!{{BW{O(aUIw=3=aGrLzCNBv<9b?~ zTfIhAg}F9#p_mKsJU$ zu8+i%X8O@5qNzQD@Nvw+s^g7wwQ!6MQ8YV&)Sr!>;DW)&Xp)RUP1;ihUH z+0M-^Qg{omKUl5cW)56>+jVpP7O{;QbpGpVbh91~VG_Upz6IfY)s||5n#ws@;f%m> zwQT>?Czx3gRUKjV>gee32s!=CNU<#pbJvt68_fxzE#5f6+!$NsO9-V58cYBh(Pc@V z@_kbLYJd-$B5_STs%A?X8P{@PMRGNa;e13kZ`zchhG+R71$GDoRQY2+@$Wd@>&LZ* zp~kFAC+d38SY!bYf@Ze*^Pi{V&=v~R1`d2BMW$jA7E2Pa(hdPZjtXh2{;Th^=Sl|o z-UTk3#!;!(eElk4-^xVAr)fBwkkiO_R%l znr2oqWds7`*R4*n2%}Zit=rzoIX*`k9iQo1XPKkEk+Q2VeSvt|_B?=(y9?(F@VNPP z+9{S;Glu4dxoj!^Ogk?_#%j$S3ZJvX)-c$d_~oTJ(WA@N0bQ-rx9D=8%CE%rjwfBO zJH_2aB_Ey5b7XTwe;_gi&t1G1G zriA1+swJhBQ|^>@fQ$IXhkklu(+8w||L#U`)t4I^UFQEpn8QDig?QkKPeR)Yl!{OH z+bo2T@-yqV$2<2M(Z-jO*a3VLRp9hcLBTY%$0(^?Zxyw~MZhKW^E$}#5hLs(7h4{EGV#gMkd zN3UEc@BmhzSF9d%OUlZ(Rh5TIF5KTkcU7k)t=l{NGu`!(_}(wHp9}-caNL$s{b8&zc*HBDB(4TGPZopQ<|>QZhW!jn&@B1b1fmJ`S^<(V`%P>Lar? zvUwJc7R-DS$Ye5|FVi_D7!PeSFJ_fGQ3vMzmrL0%8lZAIq!7= zOs0|hxQo_BFuz&{eCw~*2Z9#@g9yeyRqN~pxw^R1z(U%AutM-#hfuqqH3AMgp0q-j zDOQ?Bt+;2w8?gEW^Wuc>X!C^DgS(e@q~KIpH=vivrbDa44IU~1Ve&b4vhcCcikeCJ zNW(xja4jv=lbXoy9^|+CSyba^mNCddaMZzF;KI;5RC%x_`*R&+GD6_cYG)@d-~KK7HY{6&GFbdCni- z_o3~V@t(j`me>DONb9O4cjv!80rbPwMR)65uEw{D!ad`Ai~EUYRvw)DkmRO04i%0# z!%~=18%6~5ZT3o5C|e%`g1Vy5xG@!&A`fT}O&4W47NZKx=5guA2SW|42>X-k^Xmec zFSChcpZfFtZ#=FprFTL;+|s#KOQzBE91eP1Cs)nEfELdo1vQzit!(8fpR4_;v$>~F zM{5)7GJ4?uX6E4%AT4oLC&Bmp##gYgw>zuM){99u$fVx}f-A~Z9!n{Ubk)*FjNQmM zrs0KeF9FlA2o1-44h0g1*vt234K5Y1e!FDNL!wv+sCFYb+NIoi3l~O-x`jNXo@1M= z3nmeYpfYk{tTgpXWFD=>R)vy`*^C~mcq)1o)pfbWa8(J;c~t?+_Ty&lJvssxc9Eo9 z7ePqiu1!R;+N@TM60UY%L@^{ZB8|3oNqv=sm{zmEAcbykeesM}&`0Zjex{ji^6f}3 zcHPOcpRYZej>k$vR|+YW4-Y9xB82|;_@Z&Cv&FKdLBo8FZjLLB%nI6tiH zF+FjD_fg`eoBGl6_Vy6pn{Fu!XCLQUoU9RutW;g!kf$E?Q5KZbn?b~UNUy78mmLag z2(Paoq`7@Hy+lBIiCm`WY7^$f608n>`IX1j1G}*WRLUmJZZZ4Yb!)9PSEj_aInrw+ zV4TgVcQzH^x)T%2b$8R`CD4Aip3|GbcYo>RJgVac2Y78f!S96Y-pJLm>rLGDx&~;r zc(=2dO=Uct_11RF&aX~>P0Hou%==xbReYx_);Kp`@2OfLd`*>IOM=wy;?8{cR{N_FBNh z4CzF95TASBEd)7wmS$RgGHojIVnVm-9mvz!pt!o`Ely3--5`q3GduSk&}qt_m27gMg%;^xE_BF z3-ug?%?BY)e5KHM#EhP)9X<7>wdh|1;B+NpP5#w(HH43T`i%it+@^8Y?Q*+KHdj0o z_r3mk`ET#<-1&b8Tr{N*`PU@=xA@1fV2JY!0iga4=q85as|kct_PbW?w20dTz;1OL zs&8nvCQ}Uujsc>11+|7@2oz}oi26Pi>W+S13*7&uMa*qeGMQgx(Q%6nBdnqr~V zhdqLwr6qW9%@lVdfKmvI`oZq0nhd3@81V5p=QBC z5w7Up2ilw7YRWV3JD+czy8!N4w_^i+ZC7?~<4mC>r3xs$=6WxUxni;jL&P;c0r@Vo zpwP2l+)r8V$<~Kh9#>uWvcSYjUpf}e+DB;M&g-k%D(1TGsh;;4n&;KSN_39?kHe?2 z0kL9uA2FP*n++VhB4~Vf4uxq3$7#+tCCZ7nUH(8K5MS=8jd)*=D;GgK6^#B>uPix< zL1gqxoq`c$HfO(^{4fvG2rBO1nDu!={(H*O<_A-a1n#E<$|@R^vDJp|9_#tE0eYXe zh-dsdGOWp}EApH>C~eN*`^<5ZTkao2x4C%}Uydrmgie*mb3+OX7KR_r6_p1^5j*ci$P=Wj1ae_8Z{1><2H40wN4X(wT%g8#SVJyGd5Rv5LoYz z4N;AESmME>8l%l@1d&Jr<@)SvUvY5i#~8&J(^d(5HMDo*cV8(0a8H&qlX7Fkq{+3ClX;jE+Y2<@?_ zDHO)<-k?bnVFc$p{5v?b-K=Zr{geF9q@<({}azE3( z$uA}7097!g|CID~(0Lxm_RLMC#Bc25K$iDmz4l;ok!GdUS+LeZNq$v5IYjTjW}JXn zxsQlOGb!H7(bO=t)HuEat9c3-*yQL5OVeV*oJXn~tSG36bUnb561#)1`t|P8k#UcG zgIq0Jt>c;_N1kJkJGJTS{qs9NhA=j$+4`)uN(Js$PQ+WQ&Pg*%uYxTcZD z3H(~?MC9*`ECAG|b^#HK1pP^ZWBE^I_=T+r!ztz~2?Gg#=MjnsC@3iKD+vD@BA_$` zwEzPPgdqh@;3tGR`#Ui)adDJu=X$aUILX=A?yfauZ?|(Rz52K5WcIy}YzsW>c2DdJ z8zRydn3%g@)4Gieq208l+`d83h4`*C>KzEqwO|g;{o`rt%gobd8W#q*Xj3J}<#xH8 z`=w}`Hb;QlFEiKPh^TTxlDg-at#vsH1 z`+|`E!qRbA^}cKYoR`>piMIHzvlhzB>m_b}(DiGy9~Qttstq98N1zA~wXu{z0wy9U zb%*^+Pfl@g@v9yOB*9kl`2#VK$4B&dJ>B^)R);7$x$>0y4sM!T>oq8Ek6Zt2D7s$-q7tof_w zZPv^qd0pMNuGM*ssU!7dA@#+p{p9IszGjmzn_KZgVDH)YyCpynA;`jnzgmPD`m0i+jYf+m$?WsttH&nT-R}!ldvej3ChU z6`G-;%UzCE5O-!L&?p~Gk5WF1C#J&C4WpG|w9JxMD^|+{{(R}1&NdmWlw`3TX159eNInTSN4E&ta-+jc=a!3$u(bB_&H8uYaWfxpk3`g z+cXEy6Fb6Q-u7qK&EfMhfp;7@_U(pkP0u5jM*iZAJhRJt0jq@(rWU*y(?>V zMpPGL`@$G~#Cf-xj^9myo20~EiVdD=u4_RD$GYknpA0%_%1?8@pCqqr6T@uiMMOfO zvnxHGJsc8xoxnT7*&?~FIRclF8GLjQKh~IJ-Z6&*OqKy>+IF?^sqGL>|0%Pd|*Q5wZd}0MvYU z2XP-Pc&=jt0VrHqK_K>HbY0Ji9^-LWd9wgyTL$vmaV8F;3^Ip4#fM^sTrY&f!hq0F zsP(!4IrkG~&GFXo_x|RvK3mG%T9v<`c~mg`CblNi1I5nQz1syM4}+(9S3N`2jTM~X zAz>=RxSL0%Uuk{|BmhA|$@#VTT`N4+uvU7u*_mTrxj32+a2=-`PUk-0Rw0dqOEjoa zKc+!q#*0i8#Y9>1O4g{` zQqyy2Kb(cUB)Pm^q*OYc*857aefc}{957fX55ku`{gY$>or|Oj*-7nra{Gd~Y1FoJ z%(4c(MCb;#pPoH{!1X01(-!^}oM&4uIxL8H>7-4AsE zq|*sjHQ&S%>6{`%i%QzoKeP{NLHzeOg>m!be76xGxfQcZF9$M+ECSF$9QK z4(;mkSbI>lu{RGIeT*^9b#O9&_>#WDOI0*%vJ(di?uoh%$iX_{tgVB_Uxi^-t$D0bBTd)x$02}+zd(y%5#*f*tzLM|hc@eYkv9wiV#{-EdwZ}yW zY$tXva`4-YlnRSE?TL)cA__;iPSaVZ6;qSBF@p?aXs8DU0vZp36;wzj6oevatrI{N zAc!kNQ=F0m*<<004tn5H{?f2l{E>2=%?RIDx_VJP<*9r zUHz@9XAe;zn|NnD{tI=%VfYNoQR!?gx%>N!K*cr<^he!0*@_So0~|>pb$+K!osA*)O;)qV z6Zqa+MWZ4p4`-y&T2J)D+`wBLliL|Y2WZT7U70$xE`B8h3q!HnYkG>~KMSmhW;DtOR&x@T9ZMZPjUtQbJb(2wN>pe`zUR&jjt#35-B`kd<^^byCuxzjl}RHJVEWkahAJ{b^3C+kN062lxm z4par;JadUtt&B-5F0nH!AJ;a`h#X9$s~8-=(46UGAs~nawS%oiNqh>KHtuu=KJuwWu?K=2$W5z(JCr#? zk(pr+VduRbF|+DvuIPgSRHCXgVyC|6>nW$3~yuL?inHnGw?^Q`9^K zLEegu)@w;AyDVv2+t3i*S~q0ig}QF?975Ae~ndsD>rZ-hV`BJxInp{&JK z=qJx$K)pCeuzI#8D2HENGEx97MB?n1vh(=eWaEs~FCT~214?`kDlw=NF(RU|lnT7D zVfA`LP+1XeeJeX%$e*cs;3VIxRJ65!GR7j+mFBRS4LXa=P@zx@DB?Lr->c`D;eu^# zSYX-d_?%nZ>kK^#x2VjT7eur93f{y1drsP@xbLk*cYuJd8vR^I8M^WBK{U@JbethzmET}!I0xnJ8!1~=Go zp}bW`Bz5~<$n$!+w-mwFfabckJTVLpx$mHUAH*XX=lcftr8EbIxMdjIj~hsv@b$c+@Nfd+ zD<0T~e#|!MV7cP76!ZxN1pWCM0F79Ve4NwvLLSST`(kuFiB&Kd({*&GweyL{hq}H~ z^GX|GMMXS`M}Qb5muw$%guH5bf>RAm;Hg|wsLVtzlfnNsE$eetvVU)12--%KuoxE4 zEDA60O?;9NX^S$1(ni^} z#-*v|d@Olo0f`0yxbS`B27jMY=I|MR*&azpQ*rco{P`<{B0FA4RfL>lLLn@uAE7b` zxdZW1hFN!*8FhbQW0p0g^6Q}R-AR%Iv|Cw!z>EJ3U>~P%6Mid0EP{Y;Dkr@yYT}+w zvOHpr*;F1GU%u{0$}akA6gFRQgk$bvgR=GXyy3h&$LxW|e;1>{=~q6A#}Tppc@TA% zQbp#w^p@b#6*ysgR9i7N5WIHncAJ2(xIS$*Y^?4WQM@_${GR+zx{Y%*l7^(4uJEc@ zGuec0lcKr2R@+upjA-^gBvB4U-^{p61Q*lx+ixW94wpcNP|(HYhUl}0ItZ8LrQSaO zJM7>Om3xV^)yj(GFT2@sRtrC-Td=s>8trzbmIxxDfv^{(b2h1*-obnk~1DXAQ zX8%R#@v;sfepp5>G+OuX9QBKv8pNa-QW-ja&##yP$ zIvTPhpLs^7Q!LL9t+G?q6`ag)5YBh|ei8iI=|@tFoZu?&Msb4VdoWv%RNO{Z?}(5b zUoUTJh@slRQfmr5&%`N@BrsjXXawvnbKY7dp;E7o zv^FQp-**zs4$AQfjpBQjxzbXOsxy#r`lr9C4P3F`rQvAaywQ=K8oDE^8GyDCShRvR zW!k;dA;ffTE!)s8W&N@3ELvB9NMIlznu6wHFQkPC`nj6WhkwykSQsJSMweLjEXbMJ1owbJVl0+ENf*Sfh6U+0X(tQZd8HyBFVQ@_7I^dXQJ zhI_(ptzdJUip4(~WC;a%b*MCE_KC@9n3e?yJpkGEva9#@eR|^?!%A}JCJyw)o}4I& zb5{tAt@V^Yzcr8@@QHf+!I|xyb@UoHN>KW6@dDq43PU~Ntxp}|sOWDped49Litu1E zi3h!MbWG?F)N9?M{k(Qq zF%%+TctLZRcm>IP>6B8B-wbr0r{Q}TLM9I;fwknWYpG=r;fLn>9`Yp}|2#T|zlyd$ zJOpCaK(K?5#o&mrekHr8D=;VVj6JSby< zbjpK^Lb8Wv;;uly51zHP2xG=PQ51lugO^O2`RDt8!HME&ss_iM4@h=~LvUvGeQ%R* ztno$LJJ&GyARYDK3cClLDgS>oeS?3T-Sc*m4I3wo?KW;>t3hLH<1{uJn~l-fwrw`{ z#@<+s?RWcq-rr~bf_vxeoSC_Bl#%%O&c=|HXWZT1K|MJl`zEk7UTBm}sl!Qlqs*>kbKzW7kXTr`+kSuCt7*0pki}|CST~{n;4M$y(^1d&(L*Zlu1?!z$ zy1MwlPtVS_vb2z^<-lNBOUa+|Qe0#OmUs*m?1kG3c(E#a6JPEPfi!y2{(2;W2k04?NZwl$-3r&EdKss|Jv4&& zd@w=F6cC)}wBygo*VXxStf1CM0{M3Z4%c1pcgLQ7=^kt5o3J0Z~rt?q$#jRDU zO8I7$74FA9H_&TaCZ@lz2pm5mjHw8kLcv7Fx2GXaj@F$9!n+mZkPK*PLgAJ9Uz_nG z*lcKGbhi~2OK9n7%OadN&)I0V#SopcrBj*eCua*UL#VXT#nUQdHe82Ze9780Ed zqf7#MH#YvD9ss=JFy|>kUVw@)=N)7TbdJ7wR49`ItdYJ-&{}Z}Pil zPk?#;Lb|HdSaNzi%-ABv0*HC+fYi%WP!~^M_PIK5q<;w13p|%?jJmy9^R%1p#(jy| z(7YtATu;%BWvD{URB@J}9xOJF&OeV~ZOk`X%>T%fj5`u>`JO*2Kr9Ywj z>k-f^1p9W;JG#a7xF*@riEk!k#6TP1J8jkUeJHeLrXL(B!+a-%sZ(}beG?`VvuKU_mW2SXLfmgp|*6V-joVez`5Ezf6&YmP23 zd8&^xzof^DtDq@44AR6*4IYTS%idrzY}P6xQ1%c42{k7Je~f{;0Lg6}8*BdG$P#8i zqj#{us5xHkpGQJ_T<$Ma*KPT*CD4mRy!I1mVVi9|ALKkvb?YZ&wruqVp=+xOaLP|g zo0y-~EctA@#Wm87er9Raj{_+k_K|Ewoxaz*)O6fU-|4ui%$)IgDu`?i5^=3LAaxHF zzU=p*b3g3eX+2-}BFJnn!NMaTpkab0Up%g}q&-htL)qtX1nyPIy!rG1!P9>5jqFp@ z*PGQWQk2Wa>6M38Lw{wsd>@UScao!XuA^7d(b70LOcWWu`vLIP)x;zxmLhBg_pLo1 z8qPtRlWnO!E`Jvf^H)Q)Gx3ls&;*;>Ti$6#-5Mv*u(CXVKNU6mK>QIr9ioqX*Y|b5NUXVM2en7B1W_ z{E=xk(08bZTyPQ|jWJQ6ez_OIzK`KTHH+sS)U9|{TE!y&pzME=4{!b}0^j1JL%OFX zx>&8Esj$ntk!3#CJX242n3lX$?>%1ENZKXK#-0qF$zPN~5HB7?0f&c=n=OVKGREOk zMWNENk5O(iAtu)=wfb=&zp9SJvvOCYihT`(@b?{zmP=mj_dW{-15&8qBVf#aGw>&D z_8BP_?UeAr8h&;gWp+FWVh3o+JsbjF(AR$vZlZ&Kt=q)j$k5d4i;$&>9Wn7ST3wC{ zM%qE^xbJPN7+RhDY9^0t$AbI>8bbCwYxTUKex4b6BV7fq{oOWj^jag*&#(zlZJ#7= zBN~c?!g;umzO)8a@txz}989+R5REBM9eC-wJSI9n;%J1TrOm%tFZGz!79xfp88*3j z#1uaVOSjF_B#Jc?k$tRSfd6{*_+9W|Xx^#IJIJO_&Wz7)-m+;`@;dS8u@hbuz-?lN z@jg2jVu4kKaiF=4{+!8-y3wFF`IUISBhD1HGLJ#9iBH%2Z!f#&$~VHnaw%sTbzTAp zcNDVK$+rxd88VwJ^6YZvcztlfo8iQ62G7%b+0F-jQRQQNeVHD$Gh<}ly8hvYL)fH) zH-h-M)^BvJNS+&P?U}$wawf2w!ID+H@|aO0O4pe0k>Zi@!rhMc%<1)@Na6c1Go-x2 z+OdW11k==O^4kFUi?5&HBy-tmFrxq-1N}Xz51&3U%YK;9`yPv^phF)ly{o!Ag2%9f zPx(HMcD`g3IG^p8kJG(CT^Y{`+09xMX<@2jKjd+sOR(yXZ$=uQ#eC*dKS=yS%i zs6l4AhDaRkK&vtnFW1+*GtEvTI1=YGm2)eo1r5QwE=^BZ{4-RH%6R@C#U$xbM2_hn z>AQZ{@U~FDOO~QKf!RuH*juMpTy*t?wH)IL`60^%sY3sodLQ~KL1gszi?+^mg0wL| zw4Vy&Vg2BbV$Q88fsybLrEvNmQE(7X|@NZbhMg+JpG|)!i7Yl)7#XZnzerpY0CVSX2@8~Gb_)@>@x>V(0?e^^~kHB0wd9cFwW+>&|-t zj0>DRs3C>SZdEirij~W+9q`-iHKxYLY9!K|D{I0m*0m&U7^ij`lfxGgvOi=mUD52Rcv(K`?d~W+GN%H3!W=A>eY6&k2uUjO=C@O z)v3f|$oacpRo6Z*Oto#b3>FrkXBDG203M^Y?dxXJoaq|Dq>mj5wFF9a#m7_N@e>G}k7X7W_rh8i|6!qkc??mHTl;nDmF! zGp4%z&9myj>bw0L659P~X;6O0k)ac<4s`2h?=a3 zkK18?L2orGUr3-?Q8Qh8<>55ituJ$FvgB+2qlBQF;418^Dj$%#e(!|AdCAeg63OjD z4AjE<{n|gjoKZUO(Fmdwr%8S$&7VPC{c+s4yDXy&OAc(vLx5E=a1Eno%cqvq(7zBK z3De2eHaze-kQ_7XEkEWE-L@bOqbHmf_He4zER%xk*w%M2nq=%%3%_DJz2e9+QR`-H8E0V*E#{M zl<7flfBWtF1LcBWg)U`^u{NT)e%ME4UEcKex)2e1Qd%radKYebJS z;gAE#mrLogshw?ouVw)IbR8p@&@_SbW4wX((mI&oQy*v`y; zE1nLu)5-YJ>h*CGM{hsbcv#9VJcAFR4kT1HiV2xa~&0oKt^oIuypmi*SdrSse-6BMjdSsX` zB~4^JasMV^Cv?rJ5VCIa`c?|e8?ZD4ChmPl0-R@xSd|Z}y?$RGgPHcELgXzLLxKu} z*=8vX0E#B&J`+rbg#;*{5kp&%!Y!5zBvSCAk@hfdoOW*ixm)Ri8%#QJ+^Y%T%Q2wE z((~j&s^$RoP#jTLeud(|7eRPsYxKXw6Jdh2Yh$ZXQ`g2)#=QZKo>CsUmcVl3la{xv z8Q|HsIi9qLHRXObo=DGg$>L4B%dVvnV6#iDVF5OW4aP(Y{Z-vNNTVu&d%alL+Li}+lOHO ztqQyfMz_}}uEMDqCtYV9#HYQogBDIF|E(w^dlbxupg@3GK`YNQ*oN80ePsd&aPteo znXXy=#G)DZ#AN1>*7h7XboA!SFJ>%>R!nvOjOhJzA!go9(i}xKLC|Er9(n_cZ$6wi zIajoqrCk|j7+9<6V^%3DPJEmk)jl>q&v7A|1L3U{m>h==d;NX#e?FH4Dx^}PQ)9@2 zLNOHq_9-$LQX@2({m?nT<@vJ?0)a@-pIrr0cmnnH`b0dI?p2X`Ibq!(I9i*cFROfy z3fwZ}YzEk2H?7dCqsK-FE4K+s4uR$$#SV%z+~C;$3Rw#YO5xu_zhoN7PyCesBXaE~ zL$U8OUi%~^T183xXYb!;V>;O_6aCEP!1gnu^I_f z%$Cy6q7Z(mZJ?KYq4FD$*AAs857C_Mn$FdoURewNoLNVRg{`QPGUX`&xWc)YRT0>b zo_Sf^Pb+6FvN$Nl3Oq%NT{RlD-J7mqU_odSjVrRs3Qfk%L>qY>^OOG)P~}jFk;H}{ z!fd&l$Es06DA6@ZQ#>I`=`(!YDZePexNdJ>B{i z(u_@%)f~Dx=(bwKXaPZ$8a|_Nx2s<#4f~eqxr1CEE)46|70}@(*gsjL!;($*^euGg zG^G{%?sQq_^%?Dqgb>~=j(5L%p-H=xbFZwd?AmX%p%Pg{Fb&QQWA^V^r#ai;z=T@4 z2z1wV)a3=#G=60knX+1}EJhd7k)Ik_FQJo%rT;P2 zS>jx;PCMQDe70G$5QhV1C_B5CeD;lk}J3=}C9L z?qu)XE3=iPS&j{1Bs#T}M*1GSd?w*fXj*q<^fv8YKf?Armz@tBH6O*VzvWvekp@cg zWv|amM0MPrG~z@Y-tI*lzOE$BfqKguwSgsYg?lM=G^LEb&?SgQZ3ZT(N_^yoxo&0JMo6|v^`8%Yr`ytnpfXj9BSPNVT)BvQs- zS?|L#h~US%q}*7bB3>{CUod0vl78DuS@3!&1odY_0(wO@w*!M9Lpg1>Eh5WcXmV?X zezzV>nvdQHun-QX#$bbJpRie^%!v4H&}2y-o4YTZ5xB5+M~!aIGs zesTxDJw(=SB=g-t>BhSI!@5!KUa4u__$4RM)Q04Qr+$9P<8K zW7)Q=(hjg9 zyekURc7gyP!c>OnszOOo%tV^_&O=9!>vF4Jy9EtXm97X;8evIpV;G^k31xt0C}B6J}WMDByxFEtW0L02hQ4?FtVkg_2bg5VSmWwU5{a2zUZs}={Mo>^3rne z<9`PSW#{zq;UoPXn=c9pZxCS0RNRx|DezKm$x-IE(*8h3OT3{b&fvA6OEH%eN|49Gptf_qJgRUZqZo9-D5H?OQcvI z@U2MKfjZxaSJNza+f&t0gPi{Vya2v*!qhbcARx(XIbxbCNo?z^I2^-&xp+IPKlwq( z*%F?uXeNl*!jNBGA;rn0Xr-fw%+RRk?fP@nw8qG4PSG_G$<9Be5oi5!itCgB_*o0i z->HTE@l?vBV;xhZ%Gu%*!jem7s|hbw41`Mt3H)h7?s$?_goUcTd4HJ2X>;PxL9R01WaE-pLx_xg9Ax7Ue`jyFCk1Wu+BG zMUx(Sh4Z479bX}7b^NYbn@Denf-gf<*%8xXON7+RYoJM5vWhK7WHR{`_`=S*z; zlOR0vh5~r1L;+5Su2y?fQy09leAmkqfTHzkf?)MRDRuzg=%+4(q?w4$y<096yfz?y z5+2bPh$I3JSNceUV=NJ$UBT>N)xQ$QjC3j6YA&pSyWjWwTlppsi;_jSt(=^MxoYO@ z$WTY7wuYHK+a-u#*F@L}k4@!IG!?31looN=HjMEwynOgVD$Sj3NqG#Yx$Mp)j?$?%nkWpAuGzT zi8ZL0tD?$A=n^afndaginSS}!4?XXN|Zy=kC-Bbk9z&27pQd+_7PpD zBQhu()~m#Of2L{MO;@`xqAAcLR)>xW%B3@QT58c`cR&k#xjUZ>J(;mQJEjc%F!{lA z>!UWLh?OyQAK_5psm zxidmu0hcR01P#NsT4Tbr{3<4fuR0}f3&w5mo(3T7bnz5)x@P?uiybSeoaK*W*-aUH zWcsySM61WH-tW)K&qKfE{mw)~7{-oO6n$WFcc#&&ZuM68Ghof7{08_(cusjv)+SM` zwBC!U(Y6fi%GQM6duLZ$&+b^ANf%<@wao#BL`|y&xX0U62~{Y)WUVDB{2_zUk|lrg z&e4b4zqK_?&)p2Ek+{hT1VEUdHQ#viI$+`gE!w{D2s}Le?kJ44c_AO~sf0YkMmMn$ zGX)@2o?P9QE~#jV+60YVi+>qoHhb2elS=f$)c`tRkFfw!=u3j=-DHdRI zg~0v%w}=O!1ymT)n_-?2o1emV)P%CzEI-->Ig)ek z0=mk?8ctXs2aXv;F%x=aFaE$ojun~cpqL>;XVQha0N4{Rm!&!lARSpylb^2IMxFP2 z;tQB6>oc2g`=do4ObDK)7_p=O1H{}>x8Z1N0Ie04Q-JrAj^TR zYkmn>S$j(SK{S$wIahW+w#urfeG~6uu`W72KxZ!W?f1E#B4kSvxR;zgL24Xbn2OAd z+6rKBsQ3#Dh82jjm02*kaYQ?M#kS_N{Mhh%fe1^m_{oPU8jW`*yexm2^amG&GyEON zq}RG|w>Rof%oT@pVV~&yT1&&sdhzh?!-_elov%QbIEZ*^@@;1q)AnAfYY3gaqS$7& z->ngxESS}W@%(uiQME--MxT^wZ3QfegBPzpd4F2$)yiSa->V~36#)VmsWlOUpz!*C z$YBs!*#O)wwk$!rcXEaRrcK|Nk@c?y^Cz4%nP$PQO34E4QB6zzyR}Bh3RCIYt0i5f ziEr1FAAB73MFZ)7lSJO$%267vOZ;xX%G;x180Rs%(*b|tEg@^0V%Our5Ip1-ehOIh zgG7&Mfj@Q(uiq5wE?d(@k%-{x2NAMeM0kqM4tw_%rroNtv!~5YTMkwEMo~f$COi$p z=J=g0DS_2jH8R^AUqSZdx5w+D!(^dXD(}0oOFJPHjzOG?1<_3oLoZ&=NOa@DCGV^M z-G_$}gcw4>B*d4g;GGhd{!EWAPO^Y5Tyd_o%y zr@~p62GagCY{b{;uH8S}2EQDBwq*VFBhXv`d_D}XRIS{m98;KRl@_)-Vm{T`D*K)7DsSiAz9SSMWHHUZLZ)B&W#Zf{TB2HlVSV=o7HNXpjd?A z2(Z!+P@vl|^?sAU)MJ0mcSNX(?q5=e0di*x+^=;y1`d-qYB|{AT}5f3nMeh1HGY&~3pCEP2^V z^C&ClipD3y`~6ielQn))$YL|WE#_aVa6!0~!OrS^{7tJ-bqcyty=g#mW^UY$nsJ}W zKWbvBYvY?8qn2E|JVCNLlV)Y3(RaW+3J3Zp`y#cliU{d3S}Dl)4nIw;p&wR?mz!_& zC93LmXC0roAyZU?VX8{c#B#mQUum3&*6(L%=tz>)S)V#`q3twwzc|Dqi!eo^8vl8) zbSuOiJp28>Ga;-$>-X@<8gFa4NB4`5blyZEa5=W$2NUN^^En^4Y)RGc)19=Dd2o6?e+&cLqzY8RCtkrIE!DpC2Iua6Q>V z0s{!Jc-JRekFy(VlV_+5MpZL zn;P>2I63X@!!?#hDOb0@ww;zfsxGEjtLW}EvRi|%+jvXH`5p6;K(v zsr##nSuEiXDq1@7#=Ol%6inFWd-2jw1KD`fKZShK-Y&p89$Sg`rA$R#mF6`OYH3HiL)FtQs#;jv@Cp|9xY^sHT}U z+lZZ*EGPrve;o-N>Jkum1j%QuUev9=ABq>zs>KBbO)r6=7fI8AN4~98p)JiA5jqq1 zFxDwTPL7`o=uu%M#+lupRsVu;SOg$YXC(7XB}7{3{CP?o#%J*9ccc{~o|ePQI@DO9 z46B4}_28&x(b`iG79YyNb$?LG`EG*J_YE-Fa$3BdyQM zThwNEPj!@?yw}lpRWEb<@JfF^c>?kKcTa!&wb4~2ACEKt?+64edU}#44O%~Vcj{LKH5E3iiQkL$oqzx*Wg&5y~q?lF*!jAuAkle^bp|oY>Z&D z&3VxIPO*6QktFtJA3fLGqMlV9`{uSo6aOsq z-@WNA4>)cnZx+O{&8v*~s0{_xk!5%YGLp^p!}20W6yC0T5LXuzK2{0i_xTh>{F#DH zB)@@K&v2z^6py0wLGo!P;`F(wT@oPBWF*rbgZz0`(qhNS-Yoq>Ozzen<@9^gm4_em z(AK5cqyZ6SmfN5==yoNg#`)v&&fHQfu|Gw92nIJE?w%6yp-w)MaRjW_$0~mA7mUr% z7owgOZx4>bwQeRP6Z(DC>yB73+ODs+6Hr*L=AD!ZLT6M# ziB|u=b9O_eW@ojXv*$hf)fu)>eNgFvx^LV}Yint}8>~!n^R^Oo)4MW`E{?%3O3(1Q z(1NPDfaR~_CtcSE3+GW%NzejSb51YLd~Ob|IfJxJNjShfKV)J0jn7sFUB`*E(`EDY zrXQK5V43f4&jE`%EPB6iHgj&w7?(8`Rz`j>7#FSJ9Nhf5srllma-s37dgSu|%~d7P zm%awKkuubRX!Il(CQvS3G`CUC#3lWxqRPC6b?WTWEI}8!*1(>zejgl4*nMp2`%79|%-2uT357YrONL6tj$rgS8$coWI{mrqX@TmyG!+eo8dOol z+%;lZhOF#>mvbcq`C^7io(7=AFJFf1%Y$V+!Yx|J6)T53ZnX+soqAtm`>P zZ8;$~=S73RT!nRq z!fh0)kd?i6_?}wxP%0-_7Ni zcOI+_1qt~$0GOUvy>Eun?TYe50+nkKiM_?hYAt2dtqccneYG(Qb{<7Ftl*607$&Ix z726JY4@p3c|MqN;t_a>k%w@85&+rr5@x3{7!9_6y+vVx71aE|1lt1HcY;_Jl znx{m)n~V($=aXq3 zC}C+$LgCkzC^?pIZXu!xenUEA;QQ!$$RV1ok3&Tg&fb6v%lr%(>(6tj|_7fI4 z1;F(HA&6j{j9+SU2;@{3dyv+%<-@ta1?mvDDha&R>nrb1d+eR8`-$3n+*k5KDR?a{ z#Kg4!IaX%2&&)&|8x7j$xUtarUP!+<`^^FkiO5dm59c5CBD?K+wTt!bd^0yxGUe}* zXWiba3DuteKOdT?C}e^eXlur}98IpuT4GGu#%c5awL2qRqu1H5T;jY-B*UN5@e|HFNlsLo`<$KAOWG`Of%WS$)erX+@{hn z+xLSAuMpfR9;Wn?)R?_Kr3mqqUz{8mjq{+QCJtw?UOl4m?TA$mByw1+pw3X@FMa!1 zI+cYGT(>fp67$}o4Uvwks;L@y9)z}q;7&tnmQ4d>Euiha=@ZsJR@xhobNT(~n{`s|j`g70x}mqLOyStP7nTh_@~f{aUYOFoaY z}MZ@!_@WR*wNhQx}0VM3l9za#^RBt#i`rzb*ix_g5 zi!Wc*_%EK6@EvXXnXHJm^|hAG=L>%xDcy}&k&~eYb#{7D|HNkTftpch`TS}alDj;Q z(HpBM;j-H)f?E#Pfk5x7K^b z&#teR-TrHs9El=4x`xk4{qfVtvl$bO1H;GE9v#P2PLfG+x6Wi2Drx{lJjY}lF6(5hy8;gZVA#58vfRb4TFox*OVH!)aSO+#|CC0qXkD3*K8JI12^ zfrflnR=unlf)RANcjgkFww5+t#hZM7^z`<{{&Pj|+{p6;6gJWGwO@4v7#G9C4~|P-?{owZ$@fXr#d|&om8;*ds4;)3#`Z z-Y%K4*}N4O2l7mhvFMTd9Z4Zqqcy46DhP?A?!oiP=;`v!nXcrzE`Mz)60292zIFQ; z=^+*+ju=~(u-AQ+aRAB@5ml`8xf_K}q6sZ)@Iqu+|J8A7D+5qV+|5pPmelPnQE9Fr z_JP+1E<$K5=Y_}>5qD2;5Z8Lv?Md-ruf|5AhXQP40mWM&7#C|rf^0gOyu?JqCU@$v zouFUh=~6?!;JdNPlqBW!`{jSL9WtTcd!SE`q`y8@S9tyQ=o9ntb;<+Iq3i*GT|>87 z3f&h^C_F5$E9OZzjmUz2mXX}vur(?FbZ_+h=pR*x<{;DiZeIJyt~G=S>s3C4+8$7o z;Lu_ipva^eHY@j4(r({&q~XWxSolCIZLum7uu?R9Bkb8%r{zMWgg$lz z;=zwZ7>%eF^LM)TYa6)Ov?aeLC_|6$SG~VZ=r^PZYU+*g_I*oxfXW8K1U`1$zwxfP zR)?|s2P*z9bH`D$p{m?2KE&y0sj92|ZF#(EA*=K`^EGwd{AHMso+7$)buX0Z<*tl~ z%qa;>QHJ(A^Wcf{{97156>fM`s#|J zOR-0r(2m=7I%SgV!iN~Hw;}G!Nac36!g|1!^;V;E_Fa7*Zd`YmB-4T z^2W)hx!#-G9rW|Csz=WMs>;2O{hr3+CL!IZ+j3tTjr3Nqemn zLXKoAwEb-*mnd@JaF3M4kt(j^{bxU9^j)pi*df%Q!x>T#E;d(nPZCPn``_-Nj~)(Z zSlac1UZ&x%go%vBUj2in9#^fdkBkXl8g?Qt8@%=;wAp=e674LDl?BI}e*tu&yq2DK zrkL`&1v>pqWr@V7LewuU{cxX-Nv5WW&a3xi7GKrFEa^ur+H0wl?~G?daJB1xFv+E` zhM&Fc=f0?RGtyK_{$Kx7u+W3)Ii6#tuP+rLs55b3*_i5w`}^c&ZP3gnaX2uLGVS^7 z>(j}J3~M8(!J!|2Lm(ZthW=!Vg{9zJ;OcAV+ZmSSR^_?W$w{qTT@>e~yFpY(8OmeZ z3a{mM=;!Bi?kJ!8C>G?*_nrT3NTzJ5EarjN!>eA9V( zMwjkE>M#oM6b(8-I@ALZr>!1_v|El$=G->02LKas4>c4z&N0u4v z8n%^GlFBH=4S@FJ(BR;Q%_k|jw_f3r&%lBKE%gW&rc2-t<>bk`TQIZd8^bY`}qHBnX?iA z5rxEYB*uK>d91XdBLE(i@SB>NT72>aHD61(Vd9>up0;#l;XePsme=IgUiQ-O!CEG= z@fOj7s17VExGAMYp&QD|9h*?80UNoF*P5t6+tY@yOD1A3Cjig};?ZRca`V`J#(QvT z{BTL*M)2>75-9SAyWRjd$>t2NyXQbt!Io1m`~b)!I&Vee`#5|dGHWry9cXo*&guC3 z2rEcvFo5Xwy$3l9J18Ylr>L)K;e#^a1dg31ib5VLUV5%|x|~Acx2k(P+Bs>aO;Hs+I#GXK~N@UD=388bI)EmthKVz(zqUV6B8OWRaIpUgerROlHiV( zvJikySmm$zL=*PJ=IHb8*Cc1iBM+)c+d6+#Nv!q)W3$tmgRVI5~42dbR<4UM{^#j&=?u}BmgF-LU z8mioSPKWuacAdkzRy!tR0 zwHZEv)m8b9s_QT~Rl`QVE4fA{Sk28L1~61&*1JvTxX1Oj3gUqCs1qrijcTI4I7Jm) z^o478-1rC6v%n&CPKXEC;PLZ%^)#=^HdBg9N)`T1Aojj+UQt{WM&1BUsF2Z8DOK+3 zd=1iihwFSsVr#2o7?n9}m^u>;v>YvM?9`>*uPl?CUX56&?FWhSMUp6p7w$hRNI94| z3ICq*a`&B=STPIT*i?Qx=za-4d!Bt)vN?rc@oBfg*1h{LasEC9{&n$Kye{v$hrwL9 z)1l?+*PK`C^e5Jad=pOaz;!Ia!19vLDD8-`FUA*ReA3kCV82<*ESa}4^iQOz?J2mG znv&`EHGB|nMj>NQRK!2KZu8RoCei*O(_#EDKF&YZr3}rqlWzZ&5ScdwL%C383J&VLnP?% zf-R{!Ym+1EMQB_N{hkz|$?(XOdAkiU{&2N&LeJEKn_Q`^X`ajs{Y3KfygrlgkCP zyM4pk0I@N}k8!-cV3i#I)8gn{{mly=-s@4JnRc=YRJ0>h#1A?p<#xHNK2}X6WrsZH z6|viBeDdICo8V0HLWk>9y6A$^ozQl2$lUths{WH7JgZoi&)i$Xv&-+JrE*_+2BH<3 zoH3*xS2c{r7uOuTPgyvEAvr{mRPNr%&Ii4NdANnd;Hb!;3RwQDGF}mfx0ZxFH z&5Qb=DQtC0Rh))Nu0X{`ACJLO8h6HOXZFqr~@#+|=3PSst^@ ztahlWEl8uF$coyd7oPnmSpLprH-qWY=8qHfLW7B+GUh)4b+)n)GWW?bA|80#$zOFi z>K%@k>vQ*$<5J!)yugC1p#;*m#H&xTCsi+^Nk6@U6OK&wa-d&f{+gr$%#y$FXjtb` z2`q&%-wRp|-Tgv*a9Y)AJ0osW6iC^SZ2REm5a-D?2JNk;-eR9Waog znII?$tJM|`Fy4t=21ZA&12xXVp=wb~BTKa2%$iArz5nm~ewlw;)NO;uEn(TJrEyh7 z*2cd@2N4HG%eN|YWB+ZU+RusfFJvE$UI^UyV4A&3!V&&7JkWVTIeq||4&&O6+;$j2 z9s_>mzuj5e$0=$6Ut2&~LE*);>a=;sUive!uLfow-YH1~jt~+^SJ?#qE~tCB`K=H~ zCK0l7I9d)XYTyr6*(d0dCc|@6C)&}MEN@2Ip#RKuSP9({j~6^*L1BHP_OV;j$AI1+ zh8Zrdfro6$DWR(*v(prsH(rV7ZLLwTm$W@4cNNEm7veQ(5%Bj|804)5bY2!b8&DCN zEz6c1jOdC3NQ#tQ5~4S(h@OUTF1>{9EwK;Sw<7*;7I(LVDz8CXarg9il*F4h>Gnto z)H%QMKRqdpI{kW?js?{8arjAd8G&5dmZx(px5x3)kiBSl=@mgxfL-3wLQLImQ2v{Y zxAB@sXP~k%z;gGxAvTTZftX2NE^6W{Lc%2wAAQ*Z*tV6BZ}E&|40iz0b^Z$!Sk#uc zuuBtmJ->C@4DhVxa~R6oZ%_FoD`1peu$s2v#3%F&irelUy3<;I|6Ed2WXm2aK5dsh zKh|*c6z^Uuas||a`=<+J>7RT1%l79r#bk;e*5@}ZIhA){sQHWD;WFrc%{kUKlVE>3 z%NOStKjcifLz6HH3uV2zM7^xrI%r(tF$0PYuVyO5$S`R}Qj_U0*$@ZRJg?Cl|9rFz z`OwpPCMI1ana#Gna{-sPg*hauqcmjn;xGB|GQu(dAjEV^SUcqGp7-ey?@f&5^Tz{s7HqqK#%6I+s$#zJ(tP+igh{I{0qXhXawzyg8v@eY za%~hqGyukFCXP*bXq7^{IRLl$Z&#d?*1O%KtIC3!bqSD{%%l;{y7fy0ngbjvx9MJY z2BQi)1?xg1u1x;XfS@a&VH4iY%Vy2j2jQP)yAP&mnuR_g^l3Qyl_M38Ih9qh+OaWy z-r3oFocP7$jFdZ0WI zPe>5>d+73(9VNd%#rt@ZP>O7+ZzC27d# zUgf;2eon}QuMxoXFY>f~L7ClC2 z#E zZN*yZ6GQaIP#X7V?&uuj*8XdM8P3Fo)0oc3TCs3^2xj{AvM+uC6OPly(Sh|hBJ@oB zfYgaxj*zX-N|%iUge( zBCIf~9iyNH`j3}acV=6~$+npuxOuK05!TY((S{2j5`u+n5c}yPg)NjV{i_)6ntS+jM-6vs=;4^D3m$o9AwC^GeTo(2le3J-TJQsRc z@X(W_G~gZiYl0r^x3_N&(&tT;HHcQ#YV*J^gd=NFI!A0We^)>9ZkV&w&ub)9^Bt!G zfXfXKH!5qy=MQqWB$H8X)sbK1ggo4YEnC=K1A&&TJ03&>-`BCi855St^HIvrK*ql! zd-T&&>q-MtP&qFaE+SBJ(eQUoiOSo(M&$sA+*>GBxGtK6+%=6q2H>Bb>(8fESh^(3 z7t?I0mZgGni6;(zoVH&7czO_-eYE-2PhF#?wa~5pV;~AgVT`4Ho8Fz$r|%#-abDeT zy&sy&0i&u_J}Xb(?TyFb@6EOh%h-gVx|ofC$%l!QT7g79h8l3in$LkQmSzCJ@kU7! z6ja$1pQwv2^pw)zu-9B&xN6%;vpa5Xe6+hW!W*C^$6b&r~&8|yUT?Hr(Q;FloPJL0lo#s=2HFJ zIGko>Fc(EMi9jT?&>04=Td|Ef#B#_z)R@MQM$=cJrZ5FNwkF^MgViPHcR57MOxKyk zQh%qVd5Fb+3dUitr4B!e*3B8j9C;vl24c7s(6naMQTILC4_%$DR8BBX<8FJR0~wb& zFO=-HydurxEg0`8lxrPh908&m73@tCBdYx&Rez>&E2-&p{Ysj$3t#v$_$62WZmPE! z5-Mxzzh;;_7a#_wZONKwnc8g@Bo=due%h_Qx+e>xP=bF%4dagojUb@jQ2)P zRHD)htR!G^0(H@ckF)0He&}6XyyMF7_z#lvM4|?3)R$X(!n+M87T&$c`aekS?|~)_ z{o}idhLF>R#7m4;ff#7~@h3Y5vd`W;4`@#eT`)yj2AON(+b#IyUrX~U2~e{REgQ9b zunFU6=-*{JdND@Jkr2FjeciLN*n5g1z9=i4?+CCsI==l{QYnF6JY#LuM9dL6h(;#+ zdoX6#3408FA;Z9~ALAq8xChVqTD^I4ri<*8GTHxQ>#c+0e70_3+}#u#2mJ2kVY^QB6ba^}_M}G0_-K#=werLYD!E z--S0;g_|Gm9&RN|#dKm2;16i6r%XvUtx%j~2F{mMSn(g--U_Ioo;>{F-Dug3Y57P^ zU%SR%$Trs}O2obtgN(x0vwrPY?Xt`t_A`10f?-|p)J+Ognj>6(I_3z?K_^BO6j&pc4y&l28LFe@ z+RN-n&-UrSQZ<@xSnk`__5w&>!FQMnapvP3I5KHOv97Iv0O=Cz=(TwTQ*X^y19|P^ z;F8p%enS}NWDaNU$1Tq#tjX7s9zqhrc79tS6=RQlEG@@QdJslXuk#`gY@bO)<8U6OrSTjQQuw9EEeStS9@$tBsLb zgsoY0DYsu`8F=cj0{KjAz1Y*N3 zq%^SV+)BHzO~%<({8!%cL_5E(qCTbQy4 zCr#;0U7)?TstbCqg}zk#YF6Zr(Mc8-ZARNpTmqN4jTHG}i8yJMV_TsBYD*e!AD>Kw zfOeG>vax^|$&Co_Q~6I>q2uC5VSu9$WVll1f|tANnJ=7jLmP76I#xWY>zTotl`8)F zl?nGfH*S)7Q>po8h=2AbZ64uwLucI3&G_EWRjx77aC~HWR~uu!yWMCvdMk0cN?T)( zArMotIFTAik7FFH0iX8*&CWwq&Wg%9h+(%W#x`#ZFO36wA~vc*&nHxe{T1tQ2G&sm0C?VEUk zASL4E-}@sJCR@<2V?Xq{*j=0M9?5v;Yt3JR0Iao8Wp|88+`i5xSIh5kzj)NcIQO=_ z=DFdA-jm#l*S%7R&}}R-0^(y3E;GN67(*@R z%MzBs9gZ$c30vwocQYUj9%#2pXUAVJMILn--|ZmAx_jkvXT+!Az|*?<-3))u%>CE> zw%vFZ8(qjOLMs|V)R(qxfhcq9p~YWi)pm+3`3l%bty;;ZDI=e7fwfquAAHiyK$)tO zbB!hX6SVBoUsQds0LKXEF=X%fYP8q)_s&BFI$N2M)tVbbq_*C}6E7!Kq&JIRP9BLu zGf!eI8}`TH?)Nr`$N2;OuBSupPulUGDE`B66QK`3A^p<1!~M>$;nt}ShkWa4;#d=` zf?=wVt8Ex(1bJ`gWZS@jqU)@3prf^scul47YDHzLdL2E&lYq3`ACFva`|_*9&hWDJ zs;$aJe#h`Z!rhVrN>)CN{?$R-N0Y#wr=0l(ICE_mqyC&WaY_MX3{mw&2OYRVh}o%} zty2VgcH^ijVJ(AN(ujXR@VtHX8?4CC-1E49 zFjQlCIv`x1WN;15hYK4=vy^c1w`Nf7^+*+WsizEsGKjb^tT{wal`(%5I)Ap1Wn+gk z!)YXoH83Pw#-M#b9~d5@_ju}(%!0t5Hi^QTxHn0iwrXPvdv7P6?^d1^vQ!5|S7`90 z!Kc`68yPZS*1rsGQn)~1=^RjOr3gMOZ{1*1MHn?vS%w7DA0u_`zz#`G3H5q2bi6O9 zz7om*m%cP`32LPGd>VE#q2u_+pSh}%@83o6wu5p9tLVlV>&HS>S4M|=ujNfL=bESJ z$pgN28V`u9X>5ggU29Mz3(DL2{o>`|;7vf%mwC@DVz0ZT7jM1#Fct}x0~^st%~ zBX@c|l`(K+pXFG9Gf}+^xrd|7&0v+Az1>y4`&aIA_*EuHvMi~lGEcRBbX*6FnNW9! zFT>fN{eVSJrc6tZ>&%bF?w%Z4iZw<+98dz_sc@0|Zr2P07-Ssh{Ro|hYPSugWjJsK zmJa>aT;O^(OQ!EbvaU($r7=ive0UyCz$T?G9BhWBo^dwAaS6+9+)pn|Uy; z$jFG3_AuY+Qg;>yKD`f&4)HyZ`n6l+IUuvM8uq%^c2os*HE7UWKAfBiWUya`C=(=M zq$@j00bC>4dQrGK*;>|h%H-pL3pABqO?j;q1Q0w%yF@LaB+4mDbzs9gwpk>1W)AT& zxL8AEMHh*_ZF$+ycSB>3AiES+xlzGh4_lEE?2JNvS9>+xe9!r(O?+kywI$Ebh~Pg5 zSr@AxOSHpV`+_v+fqE+%5Unncq`(U}lPMtyN_33y*Z=(cxwnU^PE5Gy*?sNynXbA0 z*t$vQyPh7r%_2>cBLz=Fmi~MjKXlTG+9kW>_xn(wxyR$(hm>tx3VuH&`j_5ta^zLf z!{g#2YPYI##XFaG&45M!^E;8}DhI8-tjw_rA>N`X}meHW3ri z9bYlaFcL_{lL);lF-vFI4$(gdI7V&Z-BiwAboj-N&UHc7?F+B~$0R|lG1A3oCgeJs zFx0Gsx~3MTG99b93uv$|u{9s%V$+Fu=-WyWIOA0J_4g`N!amqvjBpjBZ#P(R>QE}) zVHIs9j|<=jsjWIuus+jV(zfb7p)f|My)vLuZkJG$I;*+tZq;R2eDD4N|`OY>wg41s674Kfz2qo!K zpFS7Sb1&1nAkj)_F#c{+eR9!rJVapDY#FD4zU*&Qa`;~~$&H>Exs;25T|b5cJrf3z ztL59w=~C$K#g_95<<#@nM$wX>f}>XIvNPTyWPqQ%Tsls=Dij=SzLFw6JE340xPI2n zS#5+{YvwL5-hZxtB@_-98vToJ0Ve9>p``o5%I8!D3(h@D22a?xi0mc7-nbe*1`I zA(K8yZz&sJRva(Hh14wZ{ED%a#lD??Ed2Z{lrVW8xD4MB%_hM9`!}u|$55fzaqHqA zf}ilOTp1#Ig<4T9DrEdw5nFD6RbIC6_4Zk+$X3f~7TkA6J-9QTxNVy{KeWdtBVW?2GPPpoHBxkBtR*xUl`oGYx~y%GH0Uxb-J^rnO02zx2;*U&SP$zGoWAJN73E}U80bOtz z>y)^8{`vir3VN6j_?HDeV^#k3Yghw?Q11E*iD2Boz)W)0{J-M*JHm~c{&~!Kq1OEFO9|&N{jYJ6Pt7M?j?lL`%Sqc_{1t?D2Ym( zYjq@rkK10k$bmR!Wp`nZ-ce%*UTF^GeAwG9y_uw972yg6S_+9K_bH)b^ELQSdx%m< zV5*&7tV7}aSIs#gdIf5!C|a=L=^0WCJ~SXyf_-->Lmsc{=kJVzLP?+}?!0E6v{Rg$ zhL1&>*hNA!Ju+yz9Bx=$&X@7Bm8kd}B=UprqUyAhuDVt&rX~IpJ2M&nME*Oyp+tPC zI_v{q?ETRM1@!jOF%_*1W-`A>aKe#S@orI{3KhAz#etaJ^t$mF7CrScQB|QfshbLl zr3H+eD->ws*B7+YG<`0(-ZpG+V9~7oTE*{%DTl&80i6g}3s7Kp9)8|25|o{YZ3R9s z>aMxjHaL$gj5`ZI_3&0?Pt6f3A9x(!~ej zfd5+HYk}Q^C;3OCd$c;f@Oj#QMorg(Pi}U8C2DA zg}qqjkQZthdRZ`3n`t|QSXAlN(}3{p+=80a57cB3S1MgBB0(%DkuV>yG^oqTOFyY| z4y;#L!hL|j?+p5Z5~Da~^i3lu^LkFk7ed?|E%_}}#b2UbelnAaa0kBp{CV?mRT2S$ zc3cq*0@gWrik!<+|ydp}4SF|6ns{%Kn+p_vuBzR)UV zy8Q_`;vBZ>30NBay=|Mnxd_-+Rfy@coU)#G)Z+bqa(;mJa@5HTCz~3PALj(nF$S6ZrBtT z+*v=YX(DuZfT~rA*lDyE5|G8sEr2L({-}y17fnIZ20Khr?#)FTuIN@hQ~G}IicGHy zP-nPeo2PDh3=U zM&9np+m+uDAPopS`XBtLFD2bRACgcWZf`WSCVL5Ty)Z!iC7l_Cb3m$E2<% z40fn&_7+BS1jdyp?nVn-E^IYF9Dfy<0O|FuabFLcydpI&(GGGJfOUJk#lQ`uU21+c(k2vNr|H3o6umZ&gr7vBI|IlT~c2otPtBmxY zpZ=pzd+mv83@f1ZdS3n7m^0@gwC3hDWp~g81j6n)A%BVg!IAUD3XGQ}o^oeOH6TsC z&#fj7OYz!aN2iP~FyU{x*95E(TiX!;76ZV{cd=y*dDbKl!`d5Z>}#L3VO&f;C*P6H5Lh~IR+i+iXI;?5>$rWNLti@OOG`_yP(F2@ zkJc@&j-E}Lom9=HkUkGBYg z<57iD@}(FIJuVbxWgw_~HN43qY*u%)4LHtEfSTx&pXh?^2G6oLAvH94vvF8BD%=GS?kA+c;Vssq)YB_@+-jt`(?sEYw za8R7r!43+a-sNziLvgWV8-Lgvk3727LlO0(APqUZ!r??D7xFR`0Z0Zl2e`u;MKt@X z>2F%czZ8DvJk!g|@@Mzc53ZI&!z-Um+5dxBO<^}mp*xM?|AM5#(N1dVI*nh^P+btb zua_`JOu8rB6~`uAs=D@;qFe8!px)!4^!x&$q+kU%24h9YP$eND{T-Y|uJE+IX1n1h zcXdYA>tBc? zVyotRRm5yhE2>)q2AJ1tib33x zm+at+*WL21$Hx?Q7do;U7afau3tlAn1qe-(@~-W*l$9`#$&G(+9~C!M%yTMbTkEoa zs?<)NIx9gr3elBLG1-)^-q6sbn7+B{D9-Jo)*4#lhZGzBo-jQ@-Gzk7c2pBqorwG6 zQ1)C8N$Sb&U9}zj9Ly&R2Q*eFAH?lq`=a2a!vbx472_$C1Ep5DkT+9%2lcdyQVR4) z-G&2|6KQ3QN;|Z>e*Vuk@$b#zKcCZ0fWUlU9*Qs79$K$AC+6M^{uyj#H(bIV3hg6p zPf$vK_|zXZd>WuxRG}D5y7f;OxHXJU`Xvf(W#kbmDiOmIRKMe2(0?~LZ_5zBd&7ZU z9BFL@k*7EG%v(pN{CL{k_qhTq3g;H|VKC9&OH#*_J>cpTv$*J6t(jOFI}c{`L6j)k0%pzVmi%daPL=-eqWRz7M9QJ>*a!83&F}*=mL~&6 z?Sw-YF|fQ!Eq}}1E}4f)zhz%{J$pYrRKM2rG8+R#@O9D8 zZ&i~`Hn)gbVAwtl5s1(?j9BZT+|M$7W|7-exe+x3572k$72#|RqoY?8C z*s^r{qwD3tzyDId1*=BC9lb4qX*``b09z}HM+o!$@u-5RjH8nPQ*c$a$NqqU)Xh(^ z9QtpzyxbCZTh~JNMMe{bLy%+7yL-Sk(iy|ItOwR_2S3}sg)*i89`g|FO=R%=Za-Kd zltc^ykW`u6d=BGj%Ob>;_1kl1{oF4mE;z z1{B3ALra8PgkYKU5>G3mf)|U9iZgJh#G+pm{2q%iVYAnS0Q~nh|7cwJZ{EA#exL8V z{yt3p-27xcnd5GK*#1}K@4KVicX}tXta2HDhlJdQ@f-2#Wl3VWDAD6e{Sz58AM@V9 z#03Jkkp%wNi{m}qwH##pCFou0a~!eK$xDjA@-HpMcaNkD319FH(rgA}xTFi76D|rj zu6`n@d`L!F2yt5pn4jq28bx=-;<7@pS$ zz~9w<`OcVKb^FvPT+%9?&v{XU)StMpl?%MC+!d!<{92LiLqZvZS5{{k0klh6mkkdW z+SlxEQ+H|Vk|!>pAJ}SS%B6;?YNO^Ji{YREs*c5GQw_#Q*;hpb|JN-3XHFazNIi&2 zli2%`sxJy;>HB?U%HbIgW|0+{{xo9B_c0WqLe~{+ta7qfGwE~d!OR!!TE9TdbN&J@IUA%HCsh z=B$HJN4%^efbj541VQ>|Cv(Oxf2?Dw0W&-~odNo%c%w`(#y%lf{B05WvKYS6 zaK|y*d5MmrWZa;iS46XvdpBR0zvc5Z_bh_Mk8MsJKMeW9)Eq7Sz7|RipDA)Jacz=~ z=g~JWEw|7@&`CkD+rtKcW*j$LZwc@U;gJuJl z=VOZfaP$aYbIcbk4I%}-O$7?1@n2G4;EXk)BzgL=yg|D1&u?{I75%px)jv!R9JXND zmQ?Dp*-rO4RRGL~(~(?g0Cxa?HEeao?i8jDP?30FAmPqFWKkyaR92kn2AZ6i9$kjy zfsXYw+C+|c#%8lI;-lId-Vj3$eJAf0Ar?ZqseTNDCqH3^!<;ul;$%6e(cNYBeOoPb1n zk?VkC=b44~CZ3U3MFAf(_A@mw-KRY}ZGY}Jwd+`orIjvK{BJ!WGrlr{ywfLRQyd z33$O~H>Jkt!d_bMyy#E$pfP&g|J#!{k*38WyApbXpW~=(Iq$`;JLX>`Lm!jo#H#*G z6xrbWm1?%6GFEy=`eYVw+)DVbsb(F;iPs@1>zkv(9uhV$^?m{_8JRhjtnz%~?iv|c zdxEnqNHDUsA8(G8)uD^y0~g0yF))lG7X%Y>g@q|LFJMJ25qOWt#c;Bb(GMm-bWJ&s zSe>#WE2#hxX4Z-{rSEy#OLGQd^eQ8!1A9m)}j}bTOV> z80i%G3`CXUtuDaZ6;)Bxtji=fY9AE^15~S>MswiN@&0ILk<6(IFh7cKer zaM<}Ep^j~XFXo9wXH)o3#EBKwX4i0mrGx6T;?XR)4@b)@MG#O*GO5-4Gzl5}2I`yR z4m$oeTz9cxWr^!@pk6o12{QSSr2MQM7f5(g->kQuE`Sv97JH-^VI zhmW7}E4Npbn&$ww;SlVTyv$ZZkta{3@-9{W0<7SIlUL8t$p0@8zlP-?4WPIg!F?^l zR7PIb<#!J8J7t0X^1?b;Z;>ym0EX*q7IY>DyZy+T6b%ZLr&8?;B{JcCDeg6#YMVIm zEut;pK5l;Cpr11#{8u^r2_5TLCSYuPGwzANY&CC?m?qCSltQ@mwNqM-e{0=+x> z3mqa!%@@S3xXW32Af_MFG|5vb6YCX#V)B}CVD?2)2Iq;cI^BxQ{;E&k+9-wXC`f2% z4D32Q z(x9uYgGd0;SK&kiU>O1{CmusJRh;ydrkurH0Ut7+k9o#HLq9S1n5a&`ten9tlUq@o zh57h$ z>Y`}}5q7aW(F{ui6h}4`yR<{unv3$a5yU{JWwgW)Bal?1Cz%l-qco)M`cR#uyZ_QM zE^pS8MjR_$!<=i z($kRZF&~|>oM_NRj3lk#qJ&5A^+$m)L?wyKsG#O}?V^bStd)N2bT^98x&OutKv?z9 zQ4q;l)<-}m9ID_W!Bv6g*^4+Gdh33y1RKQq^o54}452~oRw_SAP#PsylkK{fP|0#$ z_ypV;$wSK(y_J%oo}avZvsj)L*FWSmpxa~s-E3hh9}6L2oER*-W?L~j1tiN7u>)As z42JN;o7#C((lD*Ag2NAJjBlyRvK*@f{VHO(#t?%|E5CMfG&@K&kyaRG+1?iY|M2KP zCI`w;LIidzE1F;^?CI9CsAmwPzRV&<-!um^{|zZg>{2Ua!2imQfO8{9!N^8kFKQS{ ze;=3ttyatIxswUxfPx!k?@iHfkdYQbm-To}aOaH!Y_b@{Hi~E$BUZRB3S677b59b* zm71(}Gv*4EZbnY(9l^#8kMGTOWbuN-ZL%z3*lqCzF?#-c8+i@Vp@9ey?30S;EbeH8;<8{EwM**F&4g#9(5aR<|X_VBF09V28IR{iN@e< zKfglz-GZqQiJ}}|ihU-M&}k$L^e?@iqIhZXg{bV34=lSKTAvARhg-HvkgTo_u5<^- z;>0^gjdpsRrAN3AV2lpt5e)3$ChgRyaFtGLbBJSqeWB;)k0q3iY!s2VbV8@F9bT|g zlFj%^#e!DCnbC2ShN9bzGhm>+r@pYC9GG@nS3Owd%6^9%{}vdI0YE=4*C}w_1neIe zC@M%W@`VgRIIai2s2n$hHdnACbbpPRO{P8zsKlfr!++N6B^vrrWk^HuV43&Fdjq>d zuHd!`Z_x+BgW+&#Z-{BxI^WfDQ&X^p{da6@EszQxSRTfi%9*r&VUTr&8svOk@d|wY zMA51dc6ewPM*C8wL&7sAB|U#eo!i~m-o~OK?7tO-v4QGsSDJxpeH2#`OW=O-tui8V zUlIkybhVr6Q{QsQo;$H0axbV8*QLz?)qTT~V)tn646|bP16mxPEoP~(>WVcmm`#?+ zJOpE5jl|2dwdOFiIq}G#Hj_%7;aOWS3mcvSZ9Avi0YZ2?X&w9e?WdRqT-Toi&{x2wRK9967n(S&j@66~6 zxC}TJvxxaNH^<-*PF}5);mMRDK{6_EI-25`W}mM>f6x+gEg`5x(#nN3wm$BfEvdJ6 zV4V4hR#@`TmV6mzb|Z&65}j{6?K8>!U|n zJ_7zZgT3P5;?;~g&;?$|8;EIy{qlZF17Gyd%o)~Y5Q3n`R!!1|(pwt`9`ud#yhh|k zRsL&p1c;I(lQFHgG$%xyHXmEdAEKBO2$BB**KwNcRvY3mT;Z!ZI&qXr=QuATT8-Fz z7%BR3U%pn~{Z?T*m{T>K2gCiQC(SfAL{vw|Z@~~T{Z)%jc1+5obOt>)?TWO>ku;do z$rJUp$>jBB6bw`oN-kd#NHj9>z3~0s@wf4(;pZio0cpAlb+PRzjcQJ}8Z=Xx z#c{>YieZ4O?P?;WN}z=wfuh}y(gIY_&%zR$nQ`nF`*ZAD^f^&0`hLso|7UZ8D12YHHXPtT5dre#Z~L!CXWif28x zH#e+<*Ze%a=&9VK_I3WCegMJ9dHY-8UXt=&{d7n^eMS%44514(oYLy7Px=MnnJ{2J z{+HN2>I;2~mdbb~<4ynb%%`i$9zDIuo4F%u_BBf}tp{B9n(@{kj+Ub>-;bSLS?(Tl zyFoPw%}nVgQug*Rs;XzW{b$REte%FlX+|i@9zX&K^du=oo-4p zrw$;-+fGg-T?TQUJ47+cR3!+((4!LLnAL~Z*VN+;t4bqL8pFSQ5k+|-I~ToYyD;)- zy4#;K*GZ=vH4x)%(ZKYjy_M)j-pLpyxTy~~i4{QJ?qxmIEYN7?F&aFx z9_d>LM-R+1#kSq%``LJWxPx-$3%grP0C@rPeeDWoqxJrG4*x$HJrOa?DVTDU=4EHI zhwz6)0IEuRfL5Et>au|Lskl<1jh>r-Qa+CsU$M=%1Di~@{RU5bhd+rv_IaS;;9RwhunL?hPtrX~s_>Np8?m**>R(~qv@wKbN zJ1YU>X8dzaRkmb4d!zT--ALzy&hLqRy@@>=S3h1g1Wb_yNdUKlYSJQB>%5c(gLpn} z7%joT5?jkDf*5MBi(RYj?aO!oa+wu?5w{=H8plB#SzldK<@H8Pc(2i_W{%xr#>W~c z+pJnrSWVxGpm<0b50!N3|gV`6R_R4gVA)gb8 zLJYF~CLhMVb|425oN)aD!N3dxU(rmIDWiHG=~hI%R(jUGS&H74lBe{^4~k@_wF*L!1X=IqhVh(#D8MJ`S7XItIXE#0 z;rvdnbo}i|3?U7SGJ*w->1^<5wo^5EG_MGa>EeR6i^;(Uo+JaoF{i;fwot-9r92z+ zAk*jvI&`-%d77A?Z`a>QQ)Yk#{&616PEim!!|>lg9v|y=CH>0)$_$)apf!o@b-=vd z=<27DE~EX{b5dB(eL*YnaMEPfCW@+nd8)!1^wFck6H?Pi)qV91Gh>hcN# zECNs#He#pIDK?uokcC^Wm4zEI_G)}4EMOj!{9B=LO!tq}LEN#+vVuk;VNA;}g+s}2 z#F}C`D6w6+03?5mr^@32nhvxmf6W2@-~yVPc+FbTgp`vP4#a#Fh2|e}8=UbSRCN%o zxYuh4g+_*amIPBjvI^kCQ7`WCBx~fdVLEtv>cpHj&tq2oW5Uy$TUp1K(qQb887Ydz zh=W;>)M|?o*iWsO=CGiN%!)UOZ=0qFr1u0uOs1&`VLw606`C>XP4|)zhf?;YwD}M^ z@YZ;Na^g?kKVy!{YtUU4)pjIfru<3j-iIz#Mt@T3 z-fr>J&t+-)K0j|&nd6ooyf+-z6xA=hICz3v9z9e)cpg+!o0z-ojLnXetygAFqF>8_ z)>w4dTq?P$4Pf8*M3|UmVZUFAn-m9P9vkPD!b)(UgsTj;MVTKc$wV*&4dGOhFbyvG z>O*z@{I5)7FIs%zrC0d48}9(67cM>N#nP{WG(74h`H>f5HeT$D_T}J82;s7QI9kY) znm)H#=)TtWW0whPe0JdH((}m-MDQw=_L^vWmyDy_Tw3ABBonOcfSDp}W<>Ggu$%*H zvP62o3`7)VF9Xe*+w@i^j^=Cup${#Y(Hh3o^Nkn{horA3|49C*kBQ?)nj#TL;VSIV zBsjKhe|Qu)1kn!d#$T{AVoH0m6h0YV)0cBHVN?3uzV3h{!tBv20SwgYhwTXW9DQBK ze=RK zd<&tZ_``%k>M@Y%H?btLM9-bnX<-SH#{(KE9gXiaY}P^3 zfp4CtXc|bJ@1|07i?Tq~1g!kG%2aQ2?{4AqpNt{rJY4?W!{_!_vRa5a`E1tlT^1Pa zya!ZT;FCC`FC#_3&JEz*XECxw0VIJl!=Y^PqGx)k%YIcbBik+ZVCE_iIfg28?Q>kq zuZj(o!O=d1zp-p^BgBmhL!qbZW*Q-CobvdHgiiq9q$!BlNN5#YF3J`I6NBgie{kM@ zu>l2hVw9-^30^&hfsrf;j%|bPZK0#bwI=XLVsj+T(pQ*nZMkgFE2vb&-gj zbxSV?0s6L*1hYTcPel&nJBXUw)j5G|+Koz7O_}|>tHw8G(I-xM&roV#^kp7bgiKqh zJ52j5z!e1f!J=4B@t|>#y{}QG_F?RLDk(a&EG%U#m5Wp(M81^0nL38>MaC2Yj!ja{ zBuC=u{wVOmbt)cpBtog4l|lX`oNbn)13|J?>R1&zme?n#uxSwA)Bf?NynMOv+5U{s zwQWq!yj@)4>PMns#TU(?7wX8KTJ0Uh+MALv!;I1v?&m zSRJ|cM<{NV*66RD*Dzyxu7dOa1cyHkmlh$AU$3UDrnZJj*c96B`ZkLtu1t`K$HpYT zg&go!5(W(mRc25o&91qF z0EyW}$z(gth6rE|jP_@{cz`^bfrC3o9#m-~T%{#`Roa2dYW(%SdX5b{BU= z-DF}3+i{WJDF`0}sal`$WLVLyu9|WMPjoSD_bn#745t2A?@iv9$(nHF0&p{Vnm{DW zSv)|p6LAoq?CQy|ko_GFFIESc;&&J#Ui)PSVv*&K_QI_B2P0Pca;Ew|c*(AH#~O5h z62p|qM*~AzVU6K$xVe2gkN+!b$MtYvSHOK8HOG6z_o@AX<41@`Q%O-;dMD9M_cuVi zl_%xXx#Bkr8wu7kZVg_LKy&vz|LT>{z0m=wC3D`T^B%F%k^Lh*52N+8yZM-LQ}TOi zT(O8t2!JmJ95gLf#N#$EEhP^e5<;iCx1MzHH#ih3L`Cj4UWOAr)gWGDu#(pxyyD7$ z?_+t27CIQ&?>v2Dhz!{E&uC8+*O&pcK2jHsvxmPm3-bFot72TY7hV`284{JA2|bHV zk}vQMN@9d{`9a?K;Jh*Q#Xlz@;tNI;kDb|aSVG5RzWhSlY%BUvG1?cgJOT?7DI6E|ij-$;?DWW1 z5U)87tVXNrWay^K;bFK($0U#5eT7b{^=w{&^Ang>H8mLtb;f;e z3NUUK=*d4Gr5yE8P8fp!rUbYlu=srWR*Wo`f-*(cD=CP9BSi1QSSL_fRcE7yLVuo8 z=9vDQ*x2=CLe5*VRqQ>l?z^iY4bhpG>iSWhgrGEbe|owvx2COn8ZrtuCWEKt4L(28 zg=_Vy0TZ5Ng>1#w!k2f6GtV2fKoe(WUrJY6T%&*4Je1i(vK)rZ0&Op=o|hDx+K5Y( zquo%^o1ort?6Kc9H|)pqhZ5mQ;ZD|{o2@+cy#Y60`ItLeoD3!yozuT5g~?&*mZhAt zV(*=vNFkc$GVRCoBaM@!AK0WB9+`;c*o>}2#SIT1Xcx5jEY(qQn-3V@?Ksg{KVCWY z3+<%h8z~=`n)HNqZXDfhj(Cd5R+5otC|7gOsrtJ~&2T^vBt@TP5r{Ye5@`nIJh9|w z!z1=%1qP;R?xv$4wxjStX}NIJ1VU;z+ku+E4$6?r6HQ}B#5aK*ZUmGs)kz*Xh&Dm{ z(pf!d%Ae zp0fz`I_%kJjzJ#P`CiP;qOEyd;4hjt(y*|2C_e%S>nzYO^M^AwU~Dwb2S9v0%I^8~ zjyfOfvb!Rr)={Um7NmB{6VfFaudcYl;IQ^JC%v2*rW0_mijU-lhJudlP)U-1t>I@P zn!$ECP$@FLKmEXwl&f(^iBCj|atmOy; zrATiQIYsgKYZ3_FWfbRHO_w%s99OBWW>&}bO9_7F^Q2oi37mKnGs^_}qxcaW5`BS) z+47viW;Q}ZFT5QTMRE4`0}`1!6{H`qF|wO54_5;=!-w_#_F0Ag{NR!7G5#QxbtA9m zfNqOHRyol%N;cv#IsZ!&{U86|X8x4>JC+F!{F6Qi}&5h^@-K(2HbJlcSz0D(wXYXn9$V zP-wo$jq)*?C9$69kTV3^4?GtVTK#OY!d-ja9oE=K^U8oQ3x8^t5_$qjBfY=gJloa| z+l9w6Aud=ITbF(~ZL-5HoE$l~UTQD1&guJIXfTB<5gufpo5kI8aan*dU$X<;0Enk$ zh9DjoN=41}N?6OL0IOrDZsMT`F*Y$A%t({pEa{;H&CcP8$vjaQph1<(nxr?T`eQQ= z_m=sqF)5WjV}KTyBCQHD3v?uup7E}O1_zLI$?e>83s(9s4GdeYAZ{C@DsV3Xv7Xcy z#2@nM>fu`+QFzYY50}$v4k9^*nGv%SCs=zP+FIgleM~igUrfuGrpjG9)1zmVyt_`rvG+z)x z@5BaM)zwBIplhq+$Ws#h5eDzVv6N3^xI86Vn-O@9Y1U6n%$8%@N5Wqn*sUhZ30Ew} z%pHWoHqy`7u{oS&Xc`_h6L8#3MaQ!*bxJ#GHT-Z`sti6EwCp(i~WDsnh%7dpcMDNWMll+IBpV&t= zSZ*o&_@-Idy%V(3OVO*)emkCeErdu~Y5PR@UKh$O*jM`l>K=91wb~q;%Re-KM}KH8 z%}}3nnuU}XZ2)8e5`2xSK%^3u?gJnu2(mC*q&`1D>dU|k`7u^kJOOm(I_9{-x_Ya= zBu!-=qGpRWa}$||_CyU48Q-C;d`Tt+ueSz~dh5tt1;|V3F&K%08`Li9$N3IHB-W!x z+~Zxw{MZG5$07T}-;f+sF5nug`KoVYtshoy)+`^$A$k39Odx`FO{t8*P_E~hi=dds znl(m!1Eq4(KT$i%99re4<`lLG=Dodq#}Z68G_-d8me~P9Z>WMakfysOFuDhP%4gz( z%xFbp(XfOQ#oQX4tT^IlUm}|%MMejN#8}DBy$r(|D+tfQ>(XMLd}HTCj_t%RZF57P z<3^nG;OGmZU)!ON1#wecqBS<<={%65*$i}QSageMa{n15AIzk_t)VjLi{N_hy_mUc zK$937yF~~MGq(a7pt-unrXl3^75UFsQV8O%xqeJx+N)XT96o-N50w`8qd1A*L={nl za0ubuw2n$N#QNi&dOl;)i0eJ4Xr&2yCp0;yIKpgPt#RF5b)>df-7K+Ku#5^l1eHYu#g54i*9kBeec>Sh2R{`2wB*j0We$G=L*B<(%$O zatA?#Wnm!_B=I!jdupaR?jpbauTbT`|G(0}**bnCB;86Zd~A>pGXrN z%@MhmQZ3U)K2dIcH}b!~cx&xcU}FWy_+{_+Orx?s5);R#ojlNl{dh_I2vH^y8UxW| zf@XdfzTmGFM0pIaifY(23a1TnJ$&#h5QHYK(A48|LQ>A{AxLm`*J!nM`uyuo#(ERn z2L_b0!N!*4QlSB2>5h3^##!rFt4USap6AR_rA#OiU~>^~@Z4^xj(vq+x45;o$? z*8Oi;;Qv^X!x-**$nOM3v;rc)yHRQOh2q$irhFN~u^N{){?Z_<)54gMb}u`xbx^Z- z>hY0UZ(-JI0^(&7rONYw7Gn~}HOMgo1WY}b>zbn;QJN4x`J;~a&Y{Fpw zbMKTKo;^*@TgIHmDxiROMs%gSqi;u)CAS)um3%?`UHtwdypQy_|A9k$Roq~*pkYHL)tTKz z5*2HV8P{?@Ugt5iptrglv7AG^WyP_K4I{qCB5k=SII_{JHR4kY5is?tHusr<+V%Rs z`BB;M9w%=q!pGF(^O96;O*u^;rfT*OH=*ObX`9`M6EQ{+Yz^7>dBdUIUxcnJV=grL z-I?V8?!&7e=fl&E#W89^sF=zBUSbmG>7JH5nOBcR7b)E$C?D8wif6BW`E_U?n+Xua zMnt#TpMRxGNe{E!Mw8K;Lg`0f?XQZIzwcWab;1W0uXf{1my=#;z|D$pwb+;Qy-E5M zOPdpJdSu}E;zI-}Q`ORF#1NkG0o!K8Ta~-Gkr?2hRG~~Mn@|d6#siPzLQ=QWQ0E~o zX~y(OO`OByZD4%FuP|JeHLs3_R* zT@+S8x{-z%5EW^qdqe~j1Vp8zMY=nO4h3OoP&%Yz=>Mrp~;-efB!vIs5y6 z)|xf*#C<>4eZ@enX+L>{&;LJ~#sKAOV-*x|ngdC9D=D=7qg=(gw8juWpY0opV`f$< z;*swVVTG!f(;G8MzY)qdXouHJ6Q(lb6>!8vxFlGz-t*e z%C+Y*EKRB6KHuG#q>wUO+9611tk0VUjxQLbN9w2{I?f!@_a|VH9rk878xI8yqrhXr zLQu$e3Q;1s%9g@|b(0LA1P+bY$>i;~b?92R<||AO!iCL(E0b_6lgQEOfQ2V<|0kKT zgOF;W@pA^?m8|lWKf}ZjejE~TFJk%EK_1k9uVSmjd{tb5my^)A(Q%Pws~wXa{WkNL zgyj*vS-vFG^4D#hAj)KR;oYI#*|cfBCZ((f!6tgFAf@n9^cri}9FX>7M=rhPCxed# zIElVZ#JQ*EV}4BPs0sz84V3^sZ|zBx6xW{}X|o-V!p`Wv$z9X})m^ zwf{^jWwwtyt%B1`da_*Ug_ynd2NUq;oL9ew|GtZ&ch~>QtigNxi^XleF0r^Kgun9q z3H6qzJzMH9&*y*feNek$V_e*s)4MBqM(e`EK^9XxY@7qneIdRFn1I2AF%l-lLd`YzQi?FP@Qw&P=9^B($+u1Vp{$nTC z#Y3J?m9NYV35BT(Fs*L#3%umhNYTy@9489c^-6h8$d+<3<*`Z$_{wZ|ooeK2>A5xy zKedL_|3qOWcO6i3Ye*}ShU0n8!xa=cu+EYQxs@$2UXA%ZoVZZ}eR^`Zk1O~M+tcv-LB z2&m?F`(}TaTY>$XmT8JT#TBmtE}Z2$``LDhjZI7CHqxOd2xf{o3%QVTupS&A_zx$Gj3o>_A z%Y)ORuAd)G629jciIM40UzAo_zI{G|&o!pirI=Wi(*Go@)<;Z~`&TM0UEimk^Fy3C z`|mFrtsk5I+-)H_ewndEN5;Q(c$PS3Y?WO;5ZU&cCjB1S0P7U+t>l8&f%SGF21Qx^ z;y5CNY|ua+>s)a`v6b4Qu-vEFtiIytbxn#yGLgSP!*(sqyD)o1$rY8#uGN`s_7!5K z;8>euQN{{L)F*RDgxDh%K)y*QsLeW$*G7KY{aJ@;*~@d>MgXP$YT0!D^tx+yARU*% z>^5X_iu1)HCs6RSEG^b|YX9*n6pS~MEDudiL5NXWgY2LVh9LeHqtbQZ+j{YJ z&w0gK52%+;s8lS`jra&-VD{nZ!h-XQ_J-ybh##h@me0$d?MB1+2V$?~iUUu}zP5S2 z_RCVgE%Ggq)-%Pv&ExYlEhx2zy-5)D3DaZd6V`ZPiBH24 zATT)eQh%P%o{YN{A)-|BIk5lrMUAPFYt?K2{pzH!V0e0J^@pF5aK7%Lhvh#?QXf0M zp&ZGGmy|8|ALiO?yc4iviL7iikV^8s&i?EWxm!*yD+SK`l@h1c(ocT|@O&a>#~8+w z+u8-wE*9<)h2{Bzro9k_lyKB}_~ipup1PQf23w~Tsb(Ze%PcDTVs*#=YB@Y?KFtlf z#yphKH2V)ZO%|9g^e;$@LaAJjr*3$s z{F^bsWy^rX>>b>=gd!{ccXUeM##lbs7Vy^u=1VhV;x$0OMIOhTZxLQabeIAvUyj5a zTHhTr|B-EjYSIzfCxN9p!c8yhRxb#=T7{gB?fzzb22^`=L(i0uY{6fTviJ)_>zcLf z`F2D!gTFR!QCTmM{oJhm0GP2Rf{01tOalTNtIfj!!1+#eLbkZ_i$JMecsGp+LHQEKIio1)9pN>+N(s$;jw5B~1bLDvZM_TKQA6pS7aw57P3g>lsK9?Vr+)m^Kzv!EYl>CI# zI`Js3=JEj$zVhwcPh=jpC%g*kXe{V$6^6!z^OQNuB!f@op0PH3FF(3`rRQ&E*w};~ zO*2AgY7Px6tveeml=^8dS@1X<=Cys*de$k|QL+9(rwC8dIbU+A?zlOTqU8?obff-a z#?%EF5nZ|5wm62?>A#_a3>&vso}#2>KXuiqIS&|~Z-!sLZq$9#ZZq04?+~H0<@p-0 z*{>Yo#wyJ;V})Uv&)T6_fsT_nb|YUwy0of<{u5IeKP6;I7iDWd`zOU@YrguxzRBYA zZO=S#B47R{Q@j6@3XjoArB*wp_QRVMUOA41kkKl^l%I74W99J#5&+s7l=RueMxCqY zpcR3&HnegbZH3B>H9~0khG06tI|s`9b{9N7=~buS4eq~suK;f*KdY6aU-#TSIejJ< zO|b0*!t)cy@bo86}0b4yA_vz*vrmu;E{&|O;iat_PwM@9SdN>`H!qm9S! zbexGQ!!tY`r>*%j#*DuW}9pD!zmFRU-8pj6`MfzYOUeDnkgc75oI ziEbHpKsoq6{g=?sOQgNpAX=K(F);sZ4|??Dk%Uc0-_|>IsiOOSaZ9Ylsh6ziBJEwf zRMEEi^+r9>X0S^r_LeHj+#c0HC}WKL9gYZm8J4RB8q`?Z1==s4 zuC^bzRq4v$2)}DSZ%qt|3R-``j6W~qokMyN*sm^o8AVHGYUJM2b=F4@U;^9>^nRc9 z8}}S`_Oj91|K+O;r|Aw1@$$WPQ0E57^n{H~K4O`2zr_Qod=I|Yb@t}@vga7RXAe{xDJooUu z8gtxM-$earGR8Qu!CuK6$(hj{O)ty3>fK`RGUgzc27;C&u_WuP!68?@zE(;IM^~5u zD$))1i&MM*0eI!};ctimwck^O1jZ$soafV)nx` zyAY_} z)f*UA9}ZG6;Nh$cpqRXn?CKyYrZw{)SH(i)#Jd@E!E%HbTSN{^-GNs*7NY*kpZVv@ z$@{lLPj$+pAL8&3TJ!x`zaI@FTw|LE4JHZ%Onq&A7>8`#x&gIlia9HNBte8D$F54PGOe(8zhjuN~aT9bO6Q>7ecRu${^y-Dhfky2likbK!v{bPDAqV z+;ks>!u%k#5nN2n8pGhT1}cvd^FO1LvF;)HRB_qgl8J$D!vJ2ckHOs%GM7aNuCOc_ zj6l-iZA5g-f9Q|AlCgtswh!7%$r429x5Z;{{JDk#W(M;xz7F|K#8Xw;W$rRs&-uT{^pB>d3(i^wGbU%CYPTdRd-_d|(BLc{kwkT$-z)DaxMIeBv6EIDdejMu$#umkT;3iC(gq`=?DlW6pa=z`3&}4G=C*mn+u~dJsGlX3}0ota*9$D`B+_&X@4J9^I#!`9l9-D`rCKs; zIRU>$C5rmB=4UN$4SS>U7L8PSqK_6=Ov&3y7Mj(9<`y^mxKm`^PZCb^`~*r&`#s$9 z2Ts={I9l#->%)34yy1{GJ6&;@KKS=-YDZH zWv~PehCRTMYvAl4XJa!vrEo938Q$4n5F&}3ZgH8{{|*`f5|^}e>F#e5qJ2eQPi=~&NKN?yD*e@{63eenB& zsFXY%rV*^A>+htdL z&wIJ+U0i&7N>v3+r+B(K7S-J==gnG zU(Zs&1O15k7RJ2u6O|W3>5Dka1Qf{e&AeKBM%@u44H%cZpC1OquzeIJ4o=~?-$h#! z68ddK_0x6A@2#r?D(@g5BQ3mYs536Py}^MQng_6!FIU!BZ4pLd=>C>!Cdls!(r8nQ6-_}-5L&cJx$@n9dOuN=GXb$1R zN9nh1n@R~P=zF}`KutCO`-*zaro+CS*4r6e;jHUykc66lNH*^UeR`FVj=QIC8oE1q z-Dp2Ic?kP}-9OM@P(;v~?A>Qbzkz)50HTh>w5^#z)*l_gfZ709MFaycOFF5n}x)}%*_YN@c)C{-I0yj7&fx+T?v0CV| zhfMnemv5O|4&IJo$pW#-$5<3HSTQS-R`2K!z3rxgT69sW3)a}!eCSE)(uX!ud(B71 zwZ+u#8h`t~8tCyDxJibol<;fTDn^+x$!Kzs+wT%414d?Pe z;v4W~s>v|-9WHBw=zBdtDZU+`;bLfjYu9A1#S1pDD=Wsr-p^i;PG>%z2{bpoPOFJB z{RfC@{QBK4;7RxisQxxI-EMWq(eI2v!WnOE zEZOMbJpAsvdOJ4k=d=-eFHYL`tJ2hr1z09$98uvIe%Y7k?B=7Rf&M!l!Bc5IYCW?~ z!C!~r-MtL)`HL=|bgL8X~*$@@ z^+h9Ku;NERiHODE0e7mgyd}n}z_ytW#KzNXc?vDAV{ z3v;>#d7gB-sXjXH$)yWnKGCUwm$Jb%QUoAxx@5n7_LMz|ZWNr*^Z@oEZMzJU-yu5( z>)iCrKazmTTQ(Dw!h)Z@+y9^5gn8S+`sppNFH9?&-Y@dYQD#qUh5qkeNjJj!3zt*= z8Zo_CGZdhtV9yA_Z}-?UrPMYrwqlFDVmG>jjdBk=l>1@duR+lMi$Q8A7xBq`nOV_X zDUwRvmRsqI#hLM~CGVmdQy;6UyF{>Z>Oj}aU79-SzuzTo8YdMnR=5hYf5Ax>j5_vf zH4;ZFjY1NK z1;ZRN4&u$%&k?x48+e?s`rK&B4#iE+5+IHa#&;16yS_lx5J5A_V2c_ z`U}6=An?HvMGRlh1KT0^b;2)e>B_(QF{?kBYWVd+4tb4KUP1R-87 zrpAD}^U128(rZD8K_0Eg;>NVXr}1t#8q(1}aNQ{%N|&!~6B{fW6_|}s$;nCk{Xhr- zcCVBgq!h;Qme`>xz7W>sO+5wJG8-)3FZ$C)|G@fi7MDRI17W1#TzkY?%-N70)wzdv zcFE4E)xoTvs+3t_@^RKYr;1YJnB(cP+d7L**vdQkJcr2x_?c{ov@iw)kGV)|%rF8;bUf<=Ic99UG8qhFjt$Y9fSv zCk_bRfG&T3R1}&;M-4Zs1oJpi`xyiIkTRm{rLsfe68?sbf`fHsiyF{IC(oZ^T@l6t$|+4-sUj&%dhIa(m3~yLEy1R=t9INd405T{6t{_<@FM`#!x1vbz#R~7`iqd7NiYv9_ zZ7>=%;3DyS!GWZi5APIJK8?7&QJgHD9+W6H&rN?JScJaBMQe;^?g^Ni3*TE#L6~TV& zFNysLoBsI6kNbefhx2!`dJ&Pn#v*gGyO}^)@PY}9M;&ZUHS-Noc#)`WK-=ba(kK~S zk?EEcZSw_uGd<2&b;plGe;b?$N!XY-%-fY|Z4xB#PXoHV(+Bq$CExK#Yx%G?{vwrSJpo)}WLj5!Q9D>WMcogG zvhzxtel8t>9_aoDFmk(@^wZLT0fyL^g1i^#C*wI@zQ8(xW$NB4O275GGWw@}|H3AQ zBqJulVyx6Y`{S)-3_T_sP2T^b>HgQ$Sj&@mhDm(?AMdw61wx3qbeDvaIXyYc8d z>&XbQ%|Ww|6`Qq92j9aKa@j*W<$s4k%=GF_v(ob-gKx4vUm zY$q>*ciDB*T{q-ZBAvARgjBhu>g{LQ=C;Ru%~!;1;zpQx`cK-B7iV{7!(E?2XMv6b z`vvL;wEBd_8&uTNis#*j^9Q*E@B*UA{!3d7l$jF54V?!)NU z1%w?Gy6x^!(EiMmvQwPQN5@%K{|h3Mh=Cz*1LT5W%Fz3 z2+Ow@9F<081L523b~=q?1vcAnrK8(z&hZ}}*jPHg3486Z%MQEY_T(l8-(`IcmL#+Z8o_aM8zWDIg?^0$~)sH{~ zA4|TUC2{j#+$TnI20(qdx&5q!$Iwzu>?=eQ&6AblxS?P^Eb|7O2AF~n!E z9b5361mr)i;IHGiUOZ-XzCm=jn-w?h=NE z9(a;+#=Ft1CaK6Q-m#xmC75_T7YqSQ-Zq-#03JZB7oIko-t8Rx!t#feh-GKy%KXvbiODZscJihW;e_u6fz|ji!e=8r`I2!LaD9m2-;>f7Y=Tde zgKiOnWgJ&O%hm4-UWB)o)IV31=BFthm;E3BKNz`*i=z}!Hyg;~pQ04)FH2Wrnx@@` z+=h*f`x}a7j$;GLS;;$Cyfy*YaG(UaE@sL@YBYntqILJqCgDK9oHe9KQpT-@)e1x_ zj^pWziIp`|LGEa&rT(RN06ek~CG zKcHq)-b2@~Oece$Fhb{zyE*?>K3iKSNM#k4;&y=LI&h&o3Q}80Blwfm|z)b9fy<1Fv6dFeOff7f-m;@!(!~nOM8YE;E zaeX4vCVjk<3Y(8^C8MM~{jBgeT<)Owh5e^RKJskUIm;k5-1pr!QO}2y!UY>Ma`P=HJy_0A=H9mFep zQ0O=zltD!fy8JMjoaPwRcKuQ9jZ^S3!J5HxeK^MNJhFQi0+O}$a=bWZu4S_`B)7mp z#B4xJS{_#F{v)m!_J=BCEM;vmb3RGJ)6)@X&Z;*Xs}&Mob)kX*4reycrtO#kl`yo{ zDQd)^_MZc4!mjC|lbvbi+sNhNb+Ei0=vD!U=-D_Qzq_F0Z~IANuqpk@$%uYVYH$(6 zk}2lDk+fuVy$HHup9rxr`?$aU9g{4y?rq=+lS-N|-{|POa-@#k6DBWqnBT4K~*ZFyt zd&9PfeBiMDAUVzz70Rtm@MAaWj0N6wkNd!-t65+#Vo&zs9h}XN?VGNyh3OO#0_OSV_UDt*wNCkbYpi0x1^ybscFDWVrV z>Q2fH%gapUgvRN}y82L|ZM!f5 zy~;Nb7yD+_!}jxS0ULDCVL3^AwNox&!{?s@eG$u+#c1;Aw9S~ta^RqZo_{|pOwh~c z-@*3qaup=b-0Okc=iBmi9ZJioW>2Jr97 z@JPO)!~GY0{x6nh%RSg)I5l}v0FWt1-Z-!PfQ&rm7&Cj?TC|5zH*_sL6J09McPO~V zeu#pqr3?8I?xSTttE6}CdARz?FBOk=GOVZHS912)_rC#$4xTZA2~Ub+=AQYujE#fk zsk6`JHzMb5I`(v*rH4nw1C>EEs3$PhaOg5rTQnfFe>?V!gG^LiNy<+0Xk>jjlFL#o z(djiX1-RyD^VzW8PUU9sBo}gYTGpi{Htbo0Kwd^qaN8bul=lMOW5LK1$_|bn%XM~q z`ij>IGZ?Px36KV+;HeTu37qu~4@iOLQ)NWE$r;30p81D_xliTJO;r@<>VfM%=we5K z`aVn>Ol*%ABmJdje`U|$y^y5Mg!=~fL&AtA;3cdUa|g`G{bG2>M!X2NF6(GD=Cc2# zQW$&7$Y7VKVu!U@`AuooVU(cozK9F{ur(C0^7s>Yc8H+6OCcCzN{CWTa=q-O4?o3p z0AA0#LAc&SwJcHBWA5Wa` zBw7J(smtGvIbT}X>|eYflsTn^I*@kF7U5=C?t-sqEqa`0&*Ab?pZ#8U9Mqknd<||R zA!}6SiNGIYpwlxyZ2E<;yfLb&R?-x;{1#mv{T@ljg`Lx)b+S&oS$xk7_BLY-Z>2)Z z3u80Ad<@6$bPD|DuwETB#cT|n2b}V z;L*%S|#v{~ZTx9ijS~3j;KT?iek||&3+iu%MC#uvlNZcOL;TU>Zw|srlPwr)QL2Hr8n!$w#Wpx>o zXj}-H$#h2MoZazkngZI=>46e=?hC#@Af6W3k^EIutcNUA!HwOx2HbBy$=WaBGdJRR zi@xj<&3->pZPf)RU>N@QNT^$Dk;CTX=%C_Whv@vbhxFGpDDA~u%>-z9-*;Pjf48`GBU8%$=5SRnYGnTH2u z3QQ5oXi@k4DJ@w2b|<4iZUiV-J3e@ey?9q)(FoB;ErC>4=PeSjSS3C}2mk$8lgvMD zmzAEY*f-2Qb|#<9@}lI&&Uk#lFw#5KYYjUa)+}>6Epbt^)7J>4I%+IzG*Fbnkp=oJ z=XO0?_lACRfTu{w2Y+tofRo>Znp-VWk#sd1fj=}H`IK}Sw6EmY`izuaa5%agWnXp| zv^NUcF0cSC){L}18=O^jcW-WoheSSGaDyU^U+!I%RM9Wew=-kt#9K#GgRsv$$A7OP zyUVJ=IZkrJkLJClLs`d9JUpe5S>T;evP+MF)*^IE>*cJ{V8n)ASCgug$jhHBV17e} z@!2dVNAPEYz~id=<0cXPeG9Z={1a?k%u@vVD=@se01_;E5~Uzp0}H@(iw;z#OX?_P za9&4-jIkWQ;Ls@7)MZpU56ouXQ=Hs}A{a8c+z6x_m@8`5CekXAOPSYyOWYhuf)DJS zTUAX3-@8c|k=eU(33ct0`+SG~7XIP>RXATbZRF6Cmu!0lT4mri6jGSlVq1SL37Coz zNbHzn4+k1bxtBPs41s*ceY!;aueB4iwCvdq%88^!Jy%MMSa*);f!Kuk77zPH>hi|3 zu7Fp|36S}^>|f`Z_rJ$K{MpcwZQIu=pb6=id;2W<;lsCh$xZJGZQZa!ehUmu;KM%1 z%qh!-1lHZk5$`!C4hs8@u?5_x5c-HpP~B)?`5PQ(P}@gU=GWZ^N8`$Jxr~bx2|`by zp>KghJE7wtueIj*?n-StgW5h#5DVW*5e7_RxNh@e!v3N*1qiQjWlPpCl*m;EF<-}( zti61A4jX=b{e1M=WGo#brX72^d%QYZiSErWU2-(!J9QkoBRueiC4QWr`;#<2?_6!M zQ^zN8!@4j;n{<8fXySI3TcW_ch~`#rq(%Ll?oYEl6Z+#2p!A%V)P>2Zq#`nL6OT`I zc<(t^QH|W|U$07Qz=>rCRNkE=fcFb@w8cs3j=nljNA`E0pP1y{jtl6~QNFC=8f(f+ zu;2+%P-3A1a0Wt^+Ab2Gb^lOVkUBiHNdN2b=I#8Q=OxS-sbk>Y)bfgodH(+}!FtXV zSf*DW;&a+mLaLv)@!0nXUVKDHEM8qrnlB9>r{OK1Cw5b<%~lO9wXbdR7LjBt}$K%>O5CHFLkt#zu zQq=dGU-tf36uQ)^E;IryD|apDv*H}L4WV$UgOy(Ty%R1h{R~Q4|H?ExGDz>S{jF>y za--NaSayLz;&x8a4p*ZumjkEb%OFI6?7julR&*KGL*RcA@3=^lF+n+lLpnNzO&}jT zd*fy6^d$Hz1M^z`Z5Q))l-fGlePy_0F@TJ=+KK!~KEe8-yneq_uPi#q{KNbn?{7RKGn1|R;jY4Iq*m|UAq3;<5`=X# z^gIx!-3gwMNOUEA1=U1R-x2LyRQ>)Q;3k!}a<;g*EShA3=M|us`;KYreZ6UR%Pi#O z7qxJ}l(4=T*2wHpV~~JB8)3echV#>C72_W&5H$-G^*=Q6c<5CeLW#clp5WEuU@Yo z*RL?u*_O*TajKdo&aHaeEYy5cP%`a1D0OjY^Kwk>_L#BR{h%a^xr2qy8?B#ngk8c{ z#cYj$>!Pz>0%QBw*ATY9{lBF-8-%3zfyc}Bp+;-|Mqi$z752eB9iOZNE@ORJrYk0d zY3+9Uk&k_Yq~x*m4T_Jpb#=QX!0&&mkC4tA^ofX*M$V%Z#`OnyNlq%B38z=%VE+G}r%Cbz z>(l6MBgG~;-{FTMR%y>1N{~?k{*BulaT}e)6+&(BTIf4NoQ?ml{T_n|j;9K{=&$hc zhZqi7zBpeRMr=M%kxHB|%e6YSKkR1a7L-EL@}!xQ4$KUnuOT;iZ^;R{|2josbyeX! z9(h&R3G$J9J?=$rD-e+%I})R9tIF}T;QUK7YE0KO+}WOYF*?nxi)0gm$5{8-Fsk$q zTJTK4P!^bRC@-_dUo1E!$H*oxas4wjd~SkQc%ULtX%V1bS!GhnE&Lp~@RpS)UF~k6 zzbmabl35WoL*dINjX5ZhTI(*B>ntR49($R*iP?iNc`H7kaFMyxTW89=6CUXz`u|;1 zah%Ox50F3HZ0179F0LLRiSNY@%os58DB79rEX+gyw_srQB>fY*By!mS8)eDJCM#25 zU6kORX?WqGc-(p~nrqnmXaSI5kF_OY zy6g6u-x5uHOfG$QL?5z1=aujf`7_>oQVgj?k}URoTClCZ0Q^mgLkRe zs%|4BYuJ?TA^c%%P~?xHx#R{Tsg8kwkoB|a(KF(1ZelJa4jVF#D9cWP54@(lUW?HX zy8%9dgIlHU5%g=*oDYVOs$$h`s)ebicTNyPI=a(FPK7?v^+qojPaQ20)c7gJ@3zdr zmt$nrrUFaQu#Lu~YqxSs!-Gh!$RbRosDKUs&jH0A*N%kO#>4rlFtpFDJ~qr{!Kz*rbFeT+X{(E3ewkR1dUhr>_o@ z)r(2BH#u#$?z#=l;MGMur+aR;X8R`I87f)G4)Gi~Ky=owPL!SpF9rO4^MdmwKdZ?bOuTxx#LE?*e4N-snP||bAnCmKHs)}WlLbh}{}petQr**qZB2ad z|9eKU{il*~2@(t*PxlC8q-My;?CJPCqSBA&b`q-qXi(%eZKl2F$TJD?`rW2nJ*kIw zm!A3SMclO5p_MCbvA7^et*m+@@>B?$R;-p|QuNpbt!%nZ%Y191K7!C%iw%Oo&3ET* z#oh7hZ0|;MeprC_#-3RPJ#;vwgz+wf(QAKIC-pS5rS6@a_NmEXLzM#H)pVinLeK z?V#Kr&!g3+t|?Y&#AL_4&%PJ=9djMLw;c0qms0=%ZE|5e+u*zO`WPuW0GgE0mjckp z(4Dr6;T_!xm3u2J9x0c73jE;)0puf|b6|~(kY$W$4ZGqI z$&&_XMN7IzWy_#@bZNvK&~RsjQSXKC2KH}ziK1M1B6`x+e9HZtd|a-T;Px>g^?Pu> zw7Jf$;5VV!_E=GNZdSL8V(F!)a-vB!#VuD}uQg=21g@0ka#RuOJRQyeXpo`|Z*|5O zD=nq!W5W|*Akz1yqVhMskEY1xZ#JZ&ZSBhV{6aEl##iH!x{nm@^RDpbW4Ob4_R)@kc^jKmK3Ayx3ma{F+@P71N zWEet@w|xUUc7mxTe~xSYV?ZQce!!l6e$oxkhYwRQbq= zLqhA3%%H9jzRQ>N!MV6(;hn8&w~1n+&B({_z%+<*QjN21Y%0K5bGgtOt|1m3;)P;3 z_^P*Ba&UVna`UEkGu(Gg&+zmw#QQhQst&b%S#9U_o8z1PvJ|0hY^z$DT|5Zbvq#_~ zLGkS^pChp9o=yfUhzwWc(4plG{w&>T&l1C_g_o)VZ* z3)uWD-MXK>X$Kvl3Y9|dsL!~iE57on{f{xHu`6K*NT=Q1&eL(5Se#+XiIF7-k}L5< z(faYU>5pG*a&LwTr@~|RQqX+kO+y7-+h+HiNn?xilO0A%oP6`)lDK*^%PH90E5$l? z4cm0D0&KD1INk~F9(hE}xKFUVCM-O-*0DfO;gcp4Aq zOy;bdP#5CXhe}!<80OTrmAVZaRIh#2Iwbv$fGI>vZY~xJ8JHxd^THi2^$8FUTkF#B zZI=`1kr#W}8EX65&1zzN(T@ZP_+?)5%4}`C^f=M~q55vA!A(hgk1vz-P|QK#zMsRR z0^FC|C6##@5+s^VY$N7C;?T4e4vPb>)1CduR|R28=tF484Zpqr-^zT;;0HKg=TY6D zkZsJBx(VWs$U}!kyQHdRH=(+qwF?J=^LulC9ZIa8E zsjffa0Aic@(zz2xmTzOPDx+Ble8aiRHXb)6xbz(_5JK&aW=Uw zSQS#6w?Y{=NIuTguM^hE8|7mEy{LO^76lFsS?WALwiJo}yz(j&?06W^*UerW@pE+DJ;-@hywpcBxHX%dw2` za%Y6RpKn!)H*NXbax09&DNknQeB%D>5VPCfMJu+(?EX@`Xjcc+#Vg^^?)J}wgEih` z=f5_+qv1)wgSjO=d!l5S^PjNtVSW;+EvIgSe=||ScI$w;Qhmk~n*G@{BM11=6CwD_$5XBlH zj*b>Z%0Hv(7jNxnNLr2GaZP=D@C#KYsOqzl;G-xnDt)7l!C{1Gke7Tx85Y$>TSu|IjCjdhqWwB+}op zdW5|>;&TcM^Uyk~UVsQOYnz5%yk<7=Q|$^8=hZdgzE}}cvoH8@OI7j8#)lfZvTw! zmWn$irL|HDGJhOZwBGPIC2G+~2XxB>5nOry->$Ki(GLJZ$OEf_(CdqP??XH@kJKGv z{FyEv$=T6AAP~#tKl<sRaFox?E;c9+8H_aW zjhGx0V0(w#`{M!0ZSS)qbF|vCD=kqRQ>EnaPSLHV*KF5Cn>A5icX*kY6yHF3g2btJ zu5m3_|Fp<+EJd$F;U8-@$9u6rM2pPa<(#|6Zd$wHVOC+;PV!A>?5p}?T%8O#R4{&X4kHsDx@$6K2fq99!Z`;j?dSLG*r)CdGitwDt7mC)^j0Yu*4SMxCsXEx^CDg^A&pfJwzCs52@Dq9r6_=S41q!nO7OcZ! zrvKApHE{&=llz}LVCc&4t3lJF8=TAl9R>IQW+w#YErQaB<#qB%h_rJR*<}BJW695W zfmn@QSky&GAMqVCkQ~o9sB5=_MVG$4bE<4TOL|KogZfV4lT2(CKk56-*~jbGny%XDN&M@3aZeugMSp zXr`fAbd8yOku+M!krMKSX~t4`*n6D!UvhWEwyc zDDadl`gdf2@6wOPcc}+c&fnjHlkjTELI2L6^Kq@+Y3yxv$m*)_nMUAU5_!R51RtJ{ zpKs^o6ZKI}Z8OyJjRWznk+&Nz0nTes+s0iYxX2Kd7}>D%H?fVdefa2qnHvi~fgb#^=}N5dHPdO;2RJ#zjo4KZ^&1b4{$Dg*Wn2^9 z`&E$;kkKJ62rAN@Q&CYtK#@j9NGK)Un@URxO2fXibV%38jYcF!NsV;WHewr#zrPp% z&wYD8_rAN&^PF?;In>__M3un^Lv7_;%xo=7vkCHlPwe!Ke;+vmuXbXNdqEV1{k}Qw zrxNoKcgZ)tO_gSG|C8=NxOvL=O4GHO#ZpVbLIVHPDX~ODy;p37qGUTq5 z=MVb6#}#~bQ!1p-g2H-zo!#ei)qm$ruP$NCGdpVLF*|+xS-~qp=wP>w4&Mn-t-tY% z8E*7qZ76f;Z0a6Yy|&?R1w${v`*|!p4b?JV!KZ;5NlAn!I{$48J}I&)ETelZQMf~+ zN|*P#js1CI=#|_jYS6$L%Ny@T%do$oo}7x}PY2UnwtVt5XjasV*%5q*#Fy_sNL?#P zBtGclNmuNZ2K4J)7+O;N5C?%n<8RH?@F}`|Iv0l=+rudKS$=M%lZyWCB$d5JdjC|lXB ze*^Xt91O|OZIbQ;XPM@wC|Vm z+KnenCURPg(luB&mL*3s!vylgi~}iJbxz0e5Y{IAra5321>u$yk&NM()rv)6C0E!>Oln~ zoIlELM`Q(7`iT{Ux%bJ6U`M|&Ukg!_Oj1tri*}d0b7A}^6g2Octlf7R%RQ()$QK=< z?q)^})p`@mk^WfKh=HMt_%8YVgq>ASXj9c#NMTj#!?kkLkmcTF=8TmfC#m$pgWvox zep{TB%P`$psA~%2#aq#T1ZCL_UDNH@kKEHcpwN)}##L#NcDzac+tOd#mTv*uv^)1s zIDCC3PeV6Jwvhfr!C|puT*AMddY!1Alc{(hTetsKpm=5_sPH&fagt%D8&8XpJIP1j z=a^R54%2+WjamU=QyntD%i{=)pQ|oztD8gB2 zu%}Co^C~N^6{Y*UDQwC9XHxy-Y!Uc8u>a*h<}h6V5|$};xysUKa{BGz5*NV_^ry}A z^Tw+cnVjFXoqsEirq_o#I(rlWea2{;bGE^Y}LT-YF;g^jzR|i6lLRTw6rlcm= zArh`z8}#dRB2eou#~TXQ!{f;t(B_R#vt5ZmB`Sgv2eBjg_X4P=P+@4c!UU2W4Le=e zUpajY00}_kRt`*H#J!kgh=#D0ju;g_r$TMAtz+y|plL7#eT%E&Oaf?`T(;(4DdV`%n)^`Wi#s1dWwn-);T0BQFyY^G7P`UVvdT^ky$R(E6~8WG!Q)6e?-=XT{HnRPVhh|oYKgxo|gxJH0!*?^V{~vltPW%FonMB zE4i?&!E79iAKUU%2ZN!?9!{eLt#`wdjqbI>TvA%_3_|cc$A!XDdwujd6} zOuC#7R?TO6beF;PL#7nO|7-kHg-zYY1j$=&HglWZ$M>Y|**y<<5zv$1uf!-k)D&M@ zfXFxUA-995Xw-U72MS`IaD>0GISNB+qNd**%@{=n-H#T`h2l?Kgmg}&a3(LVEV58H zy$IPad_sxRpmS4Vs2NE%Qi({tMd=}_h98)-?9_rMy~6NE;7J%4V0=5G+K4(*CQKm< z6PW;zv;I}!z7}40^+Hmp`}`c7q4R7oqM3?^QVz`W&a|$g)&&8*NfbSV3BouGw~8|b zP%TMTTb396P{Q{ZVIl?^jQ4;byfhSpoe4kzKy{7s+=)Mg)khkPZoNb5rtZnUBTj;M z0=2@{$e25cJoxj?v5Ue`p)=AaASn;ChBFtYbRAJpJb;!V%qqT!itPuGzf+Zkj42Ub z?h~6B1Z5V8JvIm9BSuh8WEURU5b{bNB#aikc24e&Nv7-p$vFd`4KRW_7*A>2*AfPv)6N0>WR!e2o0Bm>gOhIV3%AN9bCTn(VkfXI~q5GU*k z;qDTZfC6HUWyw1&XXS;q@qk5K6U? zSJ!7+R2bfi;zk|WBOIeJ@A{5NI}}=NW&(gR0J}IY!BjSTH6bgnbWhG*d~3 z(U2AMr^e^Iu_rqJZ7#Rr^o8D^ruT+~sE!VB`JC?}18?koS{YaCYFSa3Ohk7(&ck)) zx}Is9W|@Yk-GoS)-CaBNrA9)ugz%F`)tLGH?K_c+%bvMow(mmsP7sm7*sbS`0o5}<o|WDL79ih}dtumk z5xQje+lg0teBeJYA5z~7-9@aM;ZCxg6WCWaOPC65)bJbEcu|6G^Tsj1M&HUY8Q0K; zPep}K0=m$-O@ksYI7b+z6aVswS)RdbWd7d^fIENO$EyB1npdEa&1EZi0O&rls-oL{ zELnR_C({f)`C>IaeL(kok5G**y5=ekJ^ihb_zm2(pTF)0Vgi{ z`by~hu;anNmS_q7iiRALL~Opjavp@$V($3d*GGXx@A{aRpxh0f2~$cPhEQv)_s{R7 zOJI%v6^^I!_x+?-RN#{n!)mSQOPaXkR!pLE@C0iyzs`FdbJz8I%kHcwxt`0GMW14X z*-M7+^FUf?-}lI2;%9@l+UM<%{5s9DZMbD}$`ZF=_0m&W`}g6c{5!d~!7V)Z`^WlH zp6pYZz|o#_AfB zz|2qQQ%HFy`!#y!WhRW5E_#B>t#U43WkC;_FXYb^;|_f^uB9ZS!ybLp$K)P1Ub8kR zNO?~D?X>cfuBrO~?Fk=`uus zt!^pY$8iCUd&ei55}*wDQx=rBaOQNnC?+Xtu}|p^ikj~Ob>(b4i|*>y{4eXz5i$2@ zQJeC|t!4GpNE4R6DlMV+oZ1Ya9@E#lIHRq9=u%x{)(H|Uo=%}%t$KX5vFQCFN}N+| z$}iQMZcjpK6??pWJm5N)tp}E2sjdsHuHN=5+48FOr5!bs7nw|XJK92{8@E)C!%)v^ zWf76X-1+2~WDogMHBt~wQShb=FPf3vVw4ZfF^eC_T>LToQMZZLDr$i8{keKkN@;GU z5a>2Wzq9oi!1}gVxLrok;&JJ_2EWyrjf|pl$E2?08}MFb$tT&Q8Z1xhh7|Q-fcLlB zp1!$Lz-E6~#ee-}B!yhQdQ{m?PI~aR!MtWV_Nm#{p4#*q#UnoQ+n3lL{;PTINR%{hN^OFp&%7?&8*)@Cg zDE11ZA4_a7JNN^%Ii<^)>rA}HpX2?Y6e|{E^PFYso68R3-gb$hSn26~TNzX8UVt6Q zU+I$Mb)5B+Rn+g9)1xOnMp|1Siwr^;^g!>%hNZl6|D}}oG@)vxeLk3`%y7>pSO@`L zu+xEIzIdS{G;}@U2ImefB)1c1+M%An%VkhwH0o>NMVj#4)mB?C3qlf@{_B&=#U6_j z<%PXfZ}oG4&+f`kZif}=sdA->y_JbNy@<%(PVZkE!htYcA3-QMADBKkL4cpCC1}bO zFNx{v@5ux8HP|IbO*ltT?LOqeesELh8gTTYL5nC!(r=!t7(tBY;ml*9HTVG5#~eYE z*V1&#-Hii&Na?<0d`=JwT-BTBo6wfqo^~tV9zYRCz0?N4z2({XQL~%ysf1b7p0h%Q z?jdYDf*LI*v|dAy05bM$)DhZt_lxsD!BH86jF>0(xxp^opJi`2-F9%0fzUPTQkD^# z5W4F+v7MB^1z+tJ(W~>KfdcX~#eEiAKl=2%>B=X>_--?HR3JMCa~~F7&JSPWb)0wp zou!A};0>dV_N?ddyn9O(66*RyF!87FnYITcWFhD0MsxMS^R9Ur|GN=mKvZ*bC|V1M zzKFQCv!)Y1x4<_M|LtGSrrbRr2&nU++j`B)3ygTb?W*9fvBSXdiR8vmmOr?mZZtF? zOd4iwkn~Ll%r!O5p}Hjy!|y!3^tgS=zPCSoOD+}{ zbZ0+HQ{wK%Z(m!4(dVC`ir?_0>tD3``Cxv;)7rvy=d59@e!2FmiEi$cg`J$oHAx{B ztim2Dk}BS&FYg6EFiPn>LA3Tw898UlWd#3m<&?||m+)E<7m-|%6ml#>IBil8u$C*iMPU3)Et-<@%zIsMmgYOOe^U39K(kebVC>8S7<3jFC zlI3_zZsUjC9!e$4rcX#_@aEXJ0uv>!S5G-ge!mb9`2yQ`CV53VRDdtuEy+JE$q*x+ z^j^|Z;BNEDkD`rS_Q&HdSY8lr=Zz>69t+c(F0{S&G#0=~YPb8a(aK)~6s#H}Xqb9m z|0#Knt};)Ik*)dEZz!vDO5xS9tJ=aIH_BnhU840xRNrRWF{Ot1N!Ego^?7jc7DDh+07WX zl@UW2ee}Ri&<80@VxpvMP436Fnf})*9@oDK_@!WdkVjiA#vtI>vE61#68}{7J~Q2i zmy~qHuw|ka8FD*-;)%wnQ%UzCgClu1x6cX5ZTM#iDI-1VPdV!+T)lrV4B3xDedVav zz61wQumU@)o3*B2HkBn4D%M9p15+iS6KJA8kIUJBGpLo0YLS-UJ_#)zh%!Ra)Aath zG~$}1IK&NpUYO~w>+bV(^=?oqIE=2MFR%AfA=_uWO^p(r#bzZVS|3Ng8kgkLrqdeVcg=@?qw!0g67X@n@dl z1#JVqnE!`Oyr_P}cE6j#RA#LhU=pq!XKRBZ<#^vs9(gy@L12}9A+IN!vo<~o5t!0U zq7(7l#JpHm!gQ?S5SOyf`2yIL!HCZ_3xi6iS6(W`3j&&Cmlhn%@pF#D1c956s0J zj=}?T0ukE|e-4hH@aw27EjwFPgvfnH5O4kdSsfd=#FhfXLQC;u9Nfsxzt=w{P-a0&Q&Wraq?&~Zc|Hgg4P!1h_Sf=VT z#T2klT`maK=A4`WDXYe)e8hZK0)f&X+YC24J4LhHitdX~=Kg2BB%!`;1pN+lG!ZQn z8k}_7WrUbYtfeCNgA|3(3&*L}BXW$S-|}#X~kyI@zn{UIQyqFqF*8gKnp4&A3 zdm!q3WmY5VjagKkqGyPQ&}En0M>>QuX>3djAd-VpCokR)SNuD(+0QM!$=(BWb7tNf zHH5Q0M~+)Puk8PoR)*%xzLPxsw0RS&wVm-rcWa)C;(dEjy}Nk_O!`pUzUeM>%f-qq z2MM#0iczn2Y}{(vEv_M32Gks72?K#si~vg55MojLI^=N>`}t$aendkT-0RPB?{Vae z)}b53(ss1qzeu)#k=Hc`%7rAU^yd%$aOa?SB_aYne;%stzhATQ;K+bxL2Q^wbi!RI zLB~xwgwVcM-x56si(# zRciZ&JaRE4l z+!V5?&Uk5Y8mtrc$0@1qCWFC~?IVh)ftL3Reqh*V-+Ewd*^=E-@Q^(|#uF%vTH2vxDlx&{)teNq1<_7y3~nP)%0;1y9W7x8wQf6=i?%KM z9_LErCX%PT+AHFPu=}U>)tAc-zeg`hr*;xQF@<_PywKnH?e*BkC1cJ=Cb&EjISlWQ z`TEv2HmvY*l`5})FR!!mhicpgmvyje-J1?M{LKfeh=47#2z?6&35TS52KY_3!1WtU zw|oqujclIsYN{ma&msPszK4sDA1zLZ@D>L-j87wDfqsOaKfgRq@)n`Rp=z1l5Wf^{ z6}O#?m`&gMn8GXdeeE^**Y{rvOOYH8N<1)SNkk_D$^Zjz;u~l9tjqh69)Egs`A;Tn ze&B`c(8j19pQQ$tRyWxMhTrl|k*NasglOx{Z|EOTo+Rb*{e7|XFI-1&g)&DRcZ|}l zNj0)YDqP;PZyQ*zeanJ8nUt@Rj>2_CofE5j-e?-&UojW*f16};C(Ub=a=Df-T{Er+IukKz9kI3YR*{Fx86P%#RN3CcTn5*(wHa7N&{ z+}xAwsk*tcI-4|aN(Wr{vJm#%c#U1M@57JmXJ)xVOXJG3l}L)&?~ZO})$o!xPZU^P zx-4prD;L*OGND_&T8{>A4fd|*!V)UM56@c%JMrcWSrClyhk&UK;V)U#k=lhmDDe<< z!YPuz_YuO&8Q}LvxSa4u(yXhU2Yk?jx`?NtXoVV(*dEvub=v=7r7wlpaP#1;%}lN$ zGQA!1TCGu)#r}+*ZNV-jVYU<2zdod=GPpqY$ZP0f0dHK=ZFo59ZM6hN0vwxocXaK= zG$vl@=}|ZbDR+%4V)j#k-g4I1LbFX9isgRFuuO^E*7y1PZvsG_mne%q1ejRhHoAKJ zPYFdDCD4qG7$sj#~*0KP)k0de3z_Ih$>W$CIFxOXKZ3x1W{BnmhQBW;g{qZwa8&M;)old_xI2 zz!Y)A<&yjARvCnXd1JWUZa?xdfT&3;8X9nhez=(wTQojn?8G(LwsIWvU!K^i^bEhl;sA{ z6f`j4Ut>C-^o`;TXpZc><=JR5mqS;U4+VU&UhtaLdK&!L!i9d@NIK+QB;rx7@w*sF zYZ;pAj}7G`_Y`L+uyBp8O&UpkM&<-h5GuC=_6htyVqSU|DM(lzOBM0`%zG>E z?jGN`li+36Nn*ikb|J4YBW-wzLlJ4Wt9D6JvB^77-qBdQ&(7GL+KfHArZcCOm<)eg zg3Gup4xt$y`BNNL&Y07FaXmeZSn$_pWRm8R`|^M)K~r0Oa!WEM#6%JtCMRcn8t|bi zwo*vF%IaG%aYx-PMnOyatsZIAwlATsuNN({Iw70;R)KQd3sXkZKM8*=f(E=)JUgbN zzKTD7DSkGbm7-$~y#EL?w2J(-d;-6#cg7E@ptsPM)_}~kVE7g68H;u%iNDuIr;eRv znwCde_5p1F&AWVioorQC=aQ0FkGyPjrKT8-xr z6ZHW|(xonp!8*y@C-B-P+1MZT$dr2u5atc*XZCNV`ANA5L7xT_Ep+&JZL_27(!T!M74IRfZ@!w`TXO;eG z`=5p1sUY@)k2)rD6=OVu=@G=bO^dOls(2NV=YHu!z#W@~7y} z&SI!ulJ2&78Epo`T;~s4HZ7X!H@i#1$t`%xzO8%SqerE^(jQf=Akr7%Qi780H>-X+ zCQGJub2fb6T)ftZ)+!BDdJuEd!IyGk&{}-mQN#v>l8;k z5-k|B*rSI4YEE=x)=Tvs`Fi>q+-ZHVvAW5gzL924EHL7@R`5Yl=C4dkzHNKOPk6|5 zMkpP1YQ%YrFLzUMp3ZYSRYrQA)qwI`Os>hs`y=GhFZ|Zee}Ni4s$rjd{rN5C%FMK` zrq*WykxrQs-%2AYhmZ3sO>GM%&%@WJeA&FrhC^itiY|jv85U&5_E&r)=I14?l90Kv zHinGP?4!p$ix~KL`0!UYmmMBao0Q8M9iP%2P;t*ovAtjvl9&x-+-waoV7hPTD$7C< z@B?l*tjI@CP9)b8^gs$bla04LY8o}x0Bm6u1$PzEY!5%DDUoqMg2b9nm@E@A=&Nn* z+9sd*h=Xp@_L_pPsMW9HxtLBdbVO4&0ZzTAoW2Y(gbf^Y=X@E(y^RD;dI1u`Tqv3agqT-j?RUY*A{ zN}rPOC+PmPOr4D`{W2jmVJtEtNFNMGA8BT>PLvq|JVuF1NkK1DHlRT0Vmtw~oMxLqJza7P_ zdGxaz@@`eCqd1+1;1Px&5@3m25Rs0}$)`Vz9OAwyT?T;Z28~#THkMA`<}$e5<1jib zi%D|I|AV)^N52uo?vi&fFB^Io`Z!21>mtD^uWKJ4&@FUSgZ9-s0RNS_WrDbUj{Nqg z0h(^4-L7hm(|ARc45_32ZOb~{rdquNvLILQdzpH5?>Bh19Orko%jO>EuI)a0pB0LA z+7C!F3pjAFgRU&W90R(xD{?j|5F{Nf#1Wbh|(*BFY1AF0#+s8eiDQ1VDH`FZOyDO9I_+s;mA$Cabi zFH4xD=^*i036%|f&DUM?nUJ|pj3rlO4E&h@yuQNw!U zoy-f#(xI7zJ%5IRMJN5=yxKRJSGbJHHR#lzD{2{-#flEYCvZn}v;c z;NX=tVR=U8qiTQ3$P~W+)n%bgqs@U?>xGFByPtga94|6_5_7Km(=>K`i#6i-<*YsZ z`l0a1nGjezi}S4jr(?=oJ73K?3YgcUqHBp7XvLie)Bi=mjYbw7L%SX(C3P9#+?+l< z3kjAxsd6F$^jGywCo)LWE2I-1wE87v?}Y5Cv%)VP@Nv$|>x05*Dlet&DO~f?lcr<6 z*YwVv5}lMXLUQETd8<&87QX@T;bk)o$mg0fgkei4&d#mL(k1Pd-o6wRRmD%*J<%)E zeRaAp<=$}-(oL&4AY_Bx3F$8a(Nu$`ev-F{HS7o!m^l06)_>m)hhgu%?hytb$(wlz zc5U5pi?l+&Q~&T++4H(zo3<>HE@$1`5hr*m)xl@AijzeR3wztlP%~F!2j8#A(F(%(;xUC!L|UiazL;Tx9_!Ekw;mE+KmfYi@ndA9@un8tI~`CYXO&ge!2NJTFX zZ>$tLm!U#XzMhuwC;Yi=GMAN!+K5C*R6pf-;A`7t-Q0o{v+0cXigmr3&-wY5;yE(> ztfeq0pzEe(1dP$ygop>R{rOlw(x7+pdRg^tjOSz=B$lwv0M)oCgLhaC^B4v_`*2Xa z$5Cwv_s8C%pG`$%Z_oiS!(uB`)lWls$*rQQuI7BI;%b z?zI+IkpCKiJ3=c;SVUJpLQ9W=-&MG=JwGfFGJ9F48)g1g1Y1To1ZeX#am<{SV>Roy zUm;{6#uGNyUtE{NJ_8M22Q{+k8#oDf5n@<6l(uinJ?82G|EGxOP?5tvm`y2@{PeIm zD5`?9{@}EdVZ?B`YH^4LH!xN9Ahu@v7wcy%Aeh=1`w%7KJI)(jZT18&UmZOA!k3&r%}+iHKr%bs^Hm2 z8;g1giF{|IuWy%F-Kb0VdjLzkOhT)@!e@`;5Bh`y)+R^*d_Qg2!Z6SlSrOB#622e_ z*^nl+KAv{#Yc(CkXfTFPzS~L;TMYTww0nRim75P$?E9ZSqpX{gE*D$bO$K#h%yM(V zcZvx(jr7tPNqKE#aP(*ZMyzZ>3Mr4y?k?yY1Vs~#bUEWi6d}=~Cizimg=0WzG$bXh zd~!1AcG#{*7g4%lx%DmNI?(k>2X1GSrXOQ+|{f+e7*qyF%GQAWTPPBi&my z_y9gYT7+L%(VsW!58nu)YSCHVA|3-EA8_F-x4LN0JMqcSFu38f?)E<}r;+}_K7ChD zo}F41lOvamj?>Yb9eGu~D0l|^)*O#HZUO0Ah?&<=&sat+Tzpo-Wol$1k@V~8XYVp{ zZI;KN5se=N?Cj-tk^_vm)g0L>Kf+tZXj z@kYC=<#k+&%1)d7$d7T%XGSo1q6WdA$vR9Ka*y*o(zv7l?gW8& zY-7GfvrkDVh?X2HK?tT3>zWRCs4v&7X6I~)yo993aQtodoQ%17mHoIa7?FH4xzzIia;Cs|SC9}_u@fEl1 z*Y=zrE8;Cs#)Ks^Sx&?X-i6!`?fUH(U1;vi56qmVGWfNm8<;7rNlQU}RV;iAP|NwCM!38A z^4;!H-~Zlh0XKze=;!zOW8Zsi94S8(ShXyOlgIbVzp1~X0Rrk%CT^MJl5}Shx7I8c?(OW+b{iHJ{$T1!d> zW1XMzHU}Wnf#;#c6H|H6Aj{Uc*Y%OfO=q&n(BXBsfLmnRwefxEe`!Zy02 z<;XjM7~?A(Sfv=;V)=#jOVi!>Evc+V==U$MTE5RnXd= z*T=Lz%=Ri}s5h7KWfEO)i5FC{sZoCy=#F6Q&zDiS_Bf^NV(WTHWz^@7Kh-uD@fjkt zx%4>Draix!Lv={ft2+gwImKCuy_@5rXKxSZouN&m!R!?}H`re`vSs3o>e27Iuqoj_ zBOREs3crzIHQVGdIqz8QQym|pwED!4-zL}0!S>o}Of-6`7&s{fn6S3ye|Z-!o2Qm4 zJX4?i=%vxO;&c`H0jSO}fBOdFx%%L;-!`z_Z;Vt1eZ@hAU%Q_ibv1Dnf>!MZ zGq7*8&wxX`W;zflCXj?xWeILPed?{Drt8SiGyypW#qnGRgMTgL1ev^GADNxDccDmkPb?ttZDxmGgUKDt1lMC^f48Vu0FJ)G z_ra?AMG&z@45ta)*i8)9M)2kC9<(6dZ1oimI#lj*sWL1i6j|=dY%uh+Xnq{wTQY$) z3w;>`6!alp##XY#iS_j6rB9DQQu}kilns8qrLk!1J6e(uA%E}OhWHg$X;*uyHM07& z5h{(#{fRxQ=dC`6KiJM}rwH_qz4muAyND@Z8{rNq*2s# zK04mt-Lp8ZiqFsKmpIE&A5T+h*&2o_APTR<-rDqb{J5;v5GmB-n!00LZg|2Opec5#`hcPX4~_gF%sxXt3H6wAmG+70 zH~zBv?vf%JeoeY+v!P;L(2M0hgHQKH7~W8buPDW<8dEXB6s2h}LxPYt$RHjvFn!aQ zo3}dpdbAY|Z7l_p+v28QXL^>K6wUNH?C~hdpCad*%h=g@v*rRHU-sj;dk~OU7(m%J zUrthYe^0f~b>j+8h)S*{-;JD_B}BB{NTD4SP_>QdtD@H(QY6Dcu=IN|YZ1R+bY~aW zp~EN-1!rUX8`sAQkubtb^<>`UH#Z!~#MCqO`?@sl@ESIb@GWMox(?%pMtzSbYuVXA zWOYK(wAas89drCMuScrOx74#UndDuL{RN+10rvK8|9)@ zxpkH&4v~mOwv9=9YH|7ZqHBH&;hsQmi?*)SGDhZVU*7(Sb$P5f*Q>Yx@U-VtFF*JT zk~DSE{v$*L(KI_BGFn}E;uJa{8@{$hG|x>$dh~_*DDLdmAiAFdSFP{_;LjC%lycmEm{&Or9j(98)yp<3a zE{hfRkG;sjtA6NlRhNcvUxwmURPlezaB2x5j|3)W@rS*=DbqR;N&WLLypdPmRg`uw zMRUjRJ3JBya}*<)@rdmrQ+dGd{pHywXHvQ4`RG`6AIvw|3ua`L@G^v^1L5a1K z?M{oZZoLigAJl314%&LqoM+*?kvrQAhpe=e{33@VU|BWrL-kF|wtqDx82G=MGLDYJ4|*D>MyD9pXx;} zH|W6IU$+G)2E2|)9d;djiDL^LzmS$zo#vCa*lZ?le140#Z}=17t#(69O=UsNYe5EW2KwYNV@vU`6{-Wz6Xgf zPkgw5mAx`M;GOWO_#Wk}R^Rc3u+(YTiJkb5DD4^z!9}@(_LW#I!rF{_kUASt4 zmt^~siNc_=h+Ry7D|F?#e}MMhw3Pe9IB?aoHbJbHhP!K)eCFw*Ovj3U=fsgw@II63 zfweT_ul6X=>C2mW0ZEF_wmPupx89SxLL$UiwYV)ZLu*!;BUZ136b&9nf{dJ!MPlngI3rTb_yQ{ZvcIRwX~s6U)MD&K*+O$|u&PdLqjM##r~YwSadj#8YhAYFWo zgImK(P0epf?FmnqDeDWYDqWbuBQ!(`QuquxCNxklG${Mx7+Sb`?LH`0bIH?Yw>&&Yps#qHk< z#b4jHC5P;5F#mIoKeMn!1fBDGAtv(=J@WitBq2|ix?~SPRhw2|WTsb`gIoBuH#F_~ zWw%wwto^&0@VI{0)mIso9!(ue7UFtAvW?5hOkQ!Pt_@HNZCERVfO^cBq$epUyDu@` zh^lGb@#cI`M%FJb(F1wZz1^~m+xO0wziE8~_r+S^H>$^cA=&_v@>9V7<%-Pf;0Rh% z+pu1&QS)mqx#Ji^wK!X5(Pw*VM94=*SfjyUJJhHJhXX+q|D{6tLJ;}09c*P)-jUm2EV888zF%GP-!Qo*ZR=a^)q zvA3=Cl?(06RI~MNHmN{-d&b1bXGkIo2VnEv;dHqAMcXSWXVO`U^eH<)pqGIG!zA@2 zIOn?x5?^0uE3%i`@H)xD1?3(~yymC0c|zD;ny7F-g#1MkzyXUe*yaiTpP; zm>#*2?0XJk332|UWshUPUxA(|L82>Gki>w`4si$IGFomLCS>A1WZz`Us;7JRqauwJ z>UB-<{bG0b*1a($i`_DtkqKz<%al#}&V)h^<>?XVC1Y8FVi7U>Ppn@n#;j z@~*w)f1|veM|uKcFn#dRJH)qcE}FJ%i4d$rY5mjf7T>mlqxyIn!JtbDV=@>)(9pn3 zjfFsK)Qzi}8wK%4pUuLUfFb(>P%|b-n9tHqDicLc_De$IH3i&vpD|q_)z}SRX?sqf z&OkTeKiu7R_?i7-=+L^pV9%E$L8h$_ck-|3F# z(%Fhy-)#`;nz}^Ii(~-o8@&~(Ub^e=*OPbX&7lJCudqWJ!!UM5x8g;A1KL#JlV2$o zV~!oWQEWawJ9dg8*cU8x>WC`DZTiTfCV@-pt{G?p*DrPsIkIy1ALJpc85Q1&HPf&> zN}8VEJ`FoRBEAWHh)Ks+Gj{%FTn?&x>`v(WlF`pW+rF-)O!}9o)!sW+F*|(5heSnX z@PFpp_x+B}^v-*0@#{O#i_YhnVD=v<<{o(6)>S?;Js~mtz?5iK(tB-VwZEVV|9wc`I2e zBH{BrP*Z`aD5YET{ST&fOKzmq-n$fggju5})p=7Q1Vihr`2U&Y{&f&K<1<}m9Tfap zS5Gh1eK*%Wo-wqV%USG_gsYpd+y;x(Nd>Uty|y9T5^B7tQ|{z}KNPzd;p%c_vXA}o4M!4k+h}xXC)8w!w+`{r3fvyL-rU1Niq*HVB zQaXdgw5b89M*e`EHwT(l2imD`hvJ*Q;2(Wn1T{H?%4`Bwf@nCI(#L{dC%IeMe@Z`# ztGx3`bhZVA9QwUT(t&NRyv!R3Uk3Czd#|_FNUG{-%^)fJMNi- zdmX-Qz6GfaNLsk9Wr^HSLJ{@xM6PnBkm0C-T{#tZva&=AhD z)15BEBJ$R(Kx#c!`y&wzLpyQUM1B+iXS-EA6L>BVzDuad9A}%7pel`7r(GI^|LZ~S zb5!8hVvoY9-}ip=0oEHpS6G=5hx6`GTmmg*k>^opG)8@tjTo&i$^S6-^&stFv^$>n)X7Tg>7>{BnHhb}qnn|dc{DjK{sx ztH#D}CM*PWGnDUdTgB|So;_Y;ze~RZQY)XV8b5lS@L;lq;7vOnq)K?Ka1a#=Pxfe1 z1kXrOI~P{Noknjq20`Ot3_mj68er!QZXa5^9IXmBW63tA`!&Nd3n9fo1q2)H?wgCrYA zTxEUY!egsfup&XPC_$3EwFN|e-|8zP(oY3<-jD{kS2ds~zK-gFRq}^t5wMkIZU~4c z)tt8PsE{&Pi-Typ$F$#V-c-Q%%bW{)m4-=FBcljXm;3{9z8)V1DFZ^eLpRNu@*%mK zxo)*Ug{s-n7Y{b`*9R=aLX^umUyf7hgaI4!-cIF7WNR;g%gmIM= z|Hl+O!Q%_-d4VHFsN#|ZjBm&~%$y2aDyb3j&mktB;m?1YIoe-^;iMxd#GlC_Y7TZa zOq5^sHWzKzM0Hls34iY4a#uo5=PTq?|AN49UuhbHU+_lTJ~dY%!o}qP5GYNrr*lUOHfoBUP2wa~uj);ibx;77TJzW+zlnZ`r;J#73}5)qOtWtk#rvuDXRl~75F z%5E_BeaSvcNOnV#-4se?8T-zVWwK6$v5$RZY-235nfZHOJa6yM=YDnWbMAAlb6wZ> zMDjVyQdGwltK62>`;agW=g6JgkhwSuk@Q#zXKH~}p zPODr+g?IjHNg>#3$1&z#P}KVuOSfasM|&}p!!Y9ND;}{Me|=UE7XQh@Ze_VhVePH% z;V6oJP$3}3Oj~2jv!eU*8>lv~-#Z}Lce_l*;p+@ zz=3A7D}(!Pq^>?E5lg@B zPU`o>Zjua1!h&?;*kD>1u=&x29e+2Bsb&1H$q`9Ji9Ms5CS*fqHQGwxzBvEf>0MOaB7pHKav>pKXt#5wRDvPRnbGx~BTLUU zF}v^dMhEhx@y3pg_a^#Ur!Yh9>o&H&^O z|Lpm20lnYz>g|dzfOQWsu^K{qHaUOqq4mOB@xi9kSHutX>iz`@z*jj=D~~noPD5k% ze*;FB0ZkX;g5f&_A%8#}=w7^k5M&7beatDD{AF~SvR95%hzh+U6Lt|K=4 zSl$ukE8O_Eg?r*YI49;0MN9$Td3u~N!+9wG>n2}S$_Hg0@sQPCb5l2K;@_qA zHpcMbgr|=uRz6(WLiby>ERgjn1hrEG6)cp%4{bl$y0{gD@`q_M6TMdz3^0BuqHy!# z#D?@^)Jm}IyWlN1J4k+f8CJGDb$0Y(n`qnRpU+6&5)pl5txCXxwp-(s5V`h%x3FLP zKSpHyke}&d;o0Fvixt!6KGZDn-4{TRTZ$lJcU--YTnzieExJu{DAkvFQDCV<`)^rK zPC4LRLPh(jcbds>TvP*B@5S0)o)iTprlBhY)L7rRy`y9{^pmC4iX{d%EA6ZCBIo{l zQ^)f(#x;xb3kNjPUan7@UpzOsKX`SzWjCKzPE<=MdmF)ldR?*D+R)2WHg`EAZxN?1 zRq?FD>8(Y->NnU<(b`+|KWmPQ82bTXSOXb^RXfwiVM1==W9#%XRg&Zg9acQoFk%o*Y4XEsKcCNP=hHRAosK)ta{y4WT(gO zbrv`CdRG;bJ){rKvg#ji|$n;j+ z?E`3eeUMZb;s>U>P4~%=PrahYG^i%}@yI4)c9w3<{3;?c3SXzQz6XiijZub;{b`7o z1y)KYXGTFk0>l38#Ho&_i#&M$5^saw*a+waf(XC52#ZX%?PUydoO$o<8N9S`&hyIxzq7sw&7 z6YuwK6eU3F%C$A`0++72jiev%p}a(b6Q5tU-22U#s@dd6D~8J}0OF@b7Aw6ICXWLh z_1pYtueo)6Dc7DhvRNLa?DJX(E3~zu1oKL|hlPk1U`OE+#q>Dj7~mM&{~ z1-4b@fA)`YS0eq)G#FWQL%06!$nnNaWW0Y|(P$SJ-qiS0WSd%7!|e zJ2^Qa#B?8GZ}pk~CN$GO@h%$Pd81)@^eW?0%6RQYo`7>2QnVqAtYWUrf$`?8xL`J4 zNGt>A0KFDD(M=c435e#Jw>LLLve+2O)70Vp@l7GvcB;abDz)TA?REk>vvO3JGD{#a zQt#+}uMxg|;C9@>wzdVR8qg9?hFBN=IYE5yhEYY1&oPFBb6&v7{oWfIt)Zt`zcDRa z+l%-L{Uc#!Y5NDOX=3tZ%a%OFP;nPUeIfS~_+QQ1kN^01trxZm0}K;5Zdo#+1v_`1 z#e^`L_{%NI)2$c>m5p>rtFJZNTjXw&%`QNz!Opnv3L-;C({Ma-+3etv_HWUn z1zXEqK3mGNX#~C##Tl8)xoUBWNv${~tGGHnn`mU+dM^t2{H8BP*W0lZf)$vd+=MAQ zu}9C|^!(uR0+MNIMMWkKT!@lE)@KDXsR1jQho zH9@m~|L!0-9yjNv`&w3UgVc7#tzmC*$5}Jc+O?I=Q&}rN1V1^>_c@NgB&TfBeHJjq z6>A^V)&+k_5Mzrcr{+THNZDb}wn>o}snt*O@H=&fGuBYp)lNQM%w_uJo%O(DK{%}N zLdBBev+eC9Hw3ASnqwNF;U%`!t0t3xF`(4}ju!Yd4v+CQ-HjqG8z!^7t~}dhSe=k# zUJ`L$*~}gj?tEEOM{U0P#GU}!c%3(n`RH1x*hYV@a2%o4Ab3=4v!=DCiZ=<)o}giPdCvrnc7f zu$QW*HcQ+3X92^l#7JsG3MFF}i-FzN0*AJyg*kYn?Ioh|W{JJ7sD^(~(gRo*;tlCX z?Hi-7UBbDGyA#lQi;A$pj&o+?&vhau$$${f$Nf*<2a^cXv8ia>s0vr&*YbLbprgcm zJqqmSqdeK=xRdsfY}KP~vxAG`Bly^5>F6HSe$w9hFMC>Vf1k_Mi)^C@&g;xC!EAY@ z^Lbh^7kzT~|7lFSFt6t5ghNfz#<|VLYJiL$F43v)EOy|NtmP{M84S9mit_tohqDZ; z@3hsJN#)LC%TtfsvwSyq_}J` zhng|N8!;ivKJ+~eozp`6%h?Mv1M@%Xmc#mxyuE;A@&0?^AO=lT|7X`7*S&Q3iEOy7 z^~evL|F0RbRI6QNjvO^3Ykf9gZ#zFJdWsaL|JQFf_-H-B==R9Dq2Y7gx<$J_L8jq4 z*$kYQ_phIqBVN4E&oBI@&)D=SkeCD)LdQOqkAIJb*$JHPz@j9}2ggf3P99N(zu|sC z??>wP<4n4(R871NT43UW(gDenINkLHIK)c@gfTfceV-w$R9&Ch>HMTP3atBKX(LM$ zbZcnj;{SI6VCL_RDZOUyoFd*>>L|*AYT?7x-Rg)FZlbj_o+dEJ8!gJ)v)=H`zT8iZ zt57j=2THrH=N+?U(E9H+lGk=fX7S35XkBPJ6ybwd3QP<}kSrO^n^0;gk?`u+^*_!~ zr0!?(0xP3CR=7)>XI(18wQ!7}dsueX>RlB3Kjj|mw8k9Sp_dhR0xGE!Uj|gT?=uZE zsh?3=Jr+`gIpBSm{XKSl+UCiK()xVwT`clvj)C?wyRrQaF-j)BVcbnFGL-Zok=w3& z4Eg~+caKNRvm@^GQA+rb@nZqo&yYzgQy`AVozth=g&%aW=2O6zB7{;s9BXTQSZ28ZD>Z!^# z(a02Wu7)WN%puF~X5&BJmmSt3Skw*3FdylUVsBTl$gva(%&|Ep1>2H-Cx=-jm zHIV&aVt(mEJP!Tlz(pe%zUteHtj(-*!$1i5fDZlc)-+^8`7TZ)q$58aEvvVJdh|Hf z;fDOmuZi$0Ph*W_2V60Xi3&hJXXm+4iC9Is+?V#LJQ)$u3ry z6|EG%0b6gFp9OZmAeycU<_yR|+8bI}PppzxFWvp`33HSAcYH$Kc@li752EEEz0frgkN#S9BF!_esB-MzZ;)R)C5lVc z(0T#B_^64PXX~~+V$M?Uy){+p4IYLkL#A1>3H3L9OHLN^)%oViS1M=Lm>YAr)EQp} za;l~t zB|~oq%Qwp1>9*jayIl%b1FY3>JPNco9nfo|yeoWjO{2XQx~)irh3ka=3#to=ih}6&*#|7*psqQU{vaa$$GYnm0%5On19s;x9-wg#+yd=*`M9l}@X|{1yzIHy* zxh1~{I@5oyO{C`V@A-g=*|js5nQGEg-Eg(!iteG0r<**S#OyAA6(uFT<#(<=S|fdD z&~#<@7>0o-1=%J4eb4c`dIz2B__DN`Y~)DezsdN4r*=nXQ~KV^NfmM#Fc$8;ElV%y zx&_~?R%)0pKD{d6(gEP=PCp$rs3IEaWyg!#3}adVwrxItR2Eb~(HE&SA4+=<#r+#= z8UcCOHEr^6hNRkwvL8>U6#g^kGgmPvNByiWP2S~@1MzjDJXLV&cTE5W!|!hk2Uw2k z*4Ah)pe8U)C)o0zKf)AVD6RgJBen4ccAYJ7Ji5ehEn^=zZ}y*H#Ia#>;oY00`CQ<} zRB^=Cs_^jbqN8$>sXUBTZ1BzE%)8gM4cV;uwkjq)>^Qj|#r+IZu~VHNOvcfK|L8F_ zfyBo%-KYx>9Dr{i0kU>~$Qd9I>&>U5-%D>%1EXh9r&b-OFgqb~;exl93POIDV$2TC z76ejBT3ap~UoQRjB9TMIld!l%#4bVQVaRGAqIK%Nb`LR5>wT8N{NVolz9U@z&a9e~&@Y!q{0)_tkB!8kni3L^&Dv>{fSxmDEiZ|NjC2TJ9i zpANHZRS8QM+-XvOuNDY>1{WNTo1Mn?V_GGQJrBQ?x0{@nsq{g0uQ@v41@;5tkr$4# z+Vgw=NqRh+Ia-FHgo(LSI9#Ip1xL?KVJ11Y$7?6*&pms)t zja)!s%F$7JNc}!SEYMI%+|xAWB7!0VNJ)k+_=I=F#xTB~lA_+vtyJ2g7*KMpd)08|_A zMUBr1IVMF*57U}-mno-_9^hDKUEk!{15I$i-#-)^@5Fne4of@{9IpiSXpVBEVF%u! zhnba+XFZ=)b~-1??{J~%rK*21Bs(I`2!RpVQZ5Reb!0Y-4+mpQu{VwATVt4#&4lbM z()G69e~-MhRZv)0xJQ6&l@)c3k>bKUQN6W#1-2TY{`0c|fNLTGkOn%05<6a_dTxnt z%Ohu;4`XWR`0Y@{N?IZC(#|liR2l5N!CEMs+z}FP_Or?%cg^~ zFk2Z3W?#26C&kM-LvY#D4P^p(5bwkcy}vnOsDH1s)KOI;#z~wYJo*UU* z^+PvoQ!35bn!#aOu$%ox4`$!)sdsrTt)1zlHZ|o>d&c$tin0xqpZih{XyPKHt~f0l!^I~Ixt89Da}z)AEiye*>r5+mKbWBZFM z>N``0LFdM+FQm~W`42;eD544P)u{ChaWwU~>8?p@U@Cyj5MI1;+*X!6^_%sm5iOUU zM6P!oviTCFZND^rh`YP^&n7L9em1H%!;Wq}a*I@q8>W`)wfkDZ=~?nvPnpJF@G5vx zHNl5kHpi$tzSiYnO+Q<#$B*sT50AJ&uYu(LulRl% z>K*ZRuI$9Y_+OH7Jd`NV^slka)#uZEEg z2|*~yt0DULeoT@t9;h@7qQggLsIP02*AcyCb!7R2C~&HK6?rq@fa6fmFiFl%sePfp z#ujlA7Y5RrVbe51p@Zn6ct>}lTKfZ`kn$+{H*ej-r+^#Ai;dm*P|;qIC)m>M>P*QD z^`G;xiPC!FO^J%|pkF+|1y2H+NS&t7%?*oBlZ$1>RX4T$(NnG8C;Ngf;+Kv3Em%K7 zq54qPZ2bCbokkPuvg+9?ba!wOeyMdrBImC+`iF5bxzyj?AL;OENrx^|zw54bcc=d( zWbRZxjun<~oXm7>H_%LcN9zTAd3JF2JrGOy~VA4T(nuDAb`>Y*tO1ydZt!9%@hCLe>UA&wgiwXxs-(!>p6@;CoIk z$y?uYyO70Kkvm~et5E9J9R2P2B3UsZ@9z4zSBNqMQ?NF936;lbeVwO2_ruJA3b~#W z?!Rs0BKE^K*)1xSdb|mI?`mt0f^z_WidT^f);q?pR*;dM3@FBln$mj)_Fwh8q*_1dkrr{$B-LPZ?y4P|KoBG&|`bFon8EdT$$ ztyC^Ik9ERU1Lavs*vwg%3~>_XIZP|9By+c|X{ZpcB>9H^2z6g)ntWt(YCd@1Fn6lCnQhTb->+2zR@!~X9Q$Opw zGNOWaJ(mAZR7PmEt}#(5;9@he*#^h$*jc&3U4S3ozE045nmjXSo@HAYuLDB)I7phY zdd9&5yP{qDD*H$YLx zotASi%CRS@Y_UvF6{+}6RKqjK7F+pBj-S4;o(>F}Us7B5oB#ZLeS1$`0(z;GenOuc z40~LF`4GRazRRJdPByy&zFw8sFR{9pYwJh2*BF+RY8d=R*90D5s7eAGJG{{y&mny9 z*4TL8wvHntYSvlYmU_)vFTT4XAdmr{m(Cjei3Gk-$=HxGx94N36k9R!9Cx{EO72L| zJ^?*knAh8*v8{}F4PUo;Qf<8y%+s1f&_Cc3BO)n}a3Hm)w({kZDY>{0Ml062Hmt`i z3mOv6DP$x~ddRgrtP9)i`mJ7P%12n)MX+RfMd=q`!d3zXeEQefbj!wHFt7N6UKg@W z!R1;}e^j4!ww>+66LX9x#|@8OALWaVXt96ob()5Ea<6T{q!Pu61?kTL*{U!YTPMS%q=F) zd)B@`=G)=dJy>^n9SST^eiNUI-O9R=l7ktxjh5cPEF50S&WXS4*dG8F{FdW{hluYGg< zM3hi|ok_im9$2+8)V&w}O6L`qa&K=8!F+}3Nq zMgAtcXJxCg9(lKMwaR7r+rHieSWsl>UE@uqbEiv2tBICY+AsJf4W%Ik4g2REQ~-?y zPYzb38IYBvndG7CW`-f!YRJ#Cfcsy_YGKIbLkXLDaxTp0pgUhtyR2UYHTb(TXSPQz z-9Irp)Zk>3v1<9Ix#d*>sP5aZIEHsYC ze2I_wp~LCoQ7Rf*mIn3X+sK}F&XxI@sqH6MsCk!e@YxKBk8E|FC%JObIlsUyRA$oP9O@)yrl9zy!AcU;pwu(_R-Fd zz&cn4w-oOX>n7{H-pwAHaN!`^;8Hc9miKaC53o$Gap(B`Ld|%-#wqT3nb(*Xx4~`w zz393Jj(9SX@JK--jRigqBUdxiK>Hs2>Kvee3!rHM#FAS0xaUqx0|?$iaI&$MPe*U3 z-C~r=?E59<<`K3`%b#>Bm~<8lr5GyzI(ZT_s5|?I3QTG$3P|wbZ0|tbxCOQIyn+tI^>1^!VL#s zy3Yu_d7rQ@Vn7SxuSL@o>a>Hr-HvOy4=P~@!?wRrYs!Yq(L3eDFme;<TN*#@n zQJ3vZg8|8ymKt-ngG5OLh+@3H4;e$2)fp<^MTTpg#R8NL8)h86G%GG5Lhaq=h+@0S zOeyPt$R$7P^mjvkJE>DQ;HSaULs9y>JDWTggH}gp=-5_hKfkEG%H_d?KTW#K)lT1u zx~Wi>!SkwBS55j}qmz<%9f4sA&Mjncz%#*wJ~zm73^y|#o)P{Gp2P|{!XARKSKjKe z!7>t1-QL=&iQ2)5$2*!bj>+BRvY%n%-2YikThFnilaCVPN}%WUxqYjde_hI7DV!}G zLN>^R)&vGT9TEp_vw<6sj88>nE8>Oyzu{TJXs6Hn>RJYPuaxZo#~S5OceHP^3t#=q zLit>!+^q#O+mm@`w-Oe6nIR0t*~xybGL#2`A8AM%IfIm$DzpPsR-x>|CG;SzCugI$ zM+1qk=+~FJ$7K9L=blRv1Nwz9QN5}7h^&WoMofkq{-&Yv;-ehFxSTAQ#W!06=I)~Y z)zb!H{jc{5CoPv|jhidizlq9zN||8m%b$($^I=>ap_Oa)!{4f&qpJ;zT#}(*k;v68 zc#veVTG71@saUtjC4qgIak+)MNPXW8+}TU>S6=@^_^sxuo*w*==jZM{era=8RiyqZ*;9wIvl$k)n;;aO+Dz=Yy7I;|*_cT{R=RyMuAs;AQw?E^D*1M{5tUkO3n2 z+>5`v$_<}LK8HP!)!~U*uwdp)D(xFOEFd-*Ve@8EY#}83-8F{VDLMcL-wp6yXUtuD zw_N!}nMH@`z|w*32HL93^jkkig}&hMlsY6-qX^cv0D#y}_)#7jWAW;BZhQaCkR}?7 z+e(OzFL`9t{$Y7Fda1W<%pX@E|z;BnTjLct7Z;bT7WEq5sNIxce> zneW_qZPN~Yp={EeAR)TMiL1Sr|DVP|<&x_v6N<37SArd{1NV4`TE2iV$Z+T@q;!Z z5;7B~1@r$Pe1@XYS|mq)^Ee#tHYT0pgbbS*+!hHKIf(9Dg>I!a$)B}}(GGwsV}^v2 zTkG@Z%IHBC!2y@jkUAPh`?W3F*QO<#8ysW)zIeLG6Rx&28N~Ycab;p!6)M2iN-5k< z%7TjLFhqkz&JNgHsfYuivd@XpFJAt>t%ga7P70_rLSVrJM^U;t-Y<1Bzq0Y=8UGs> zHL?{mnqyPI1lE^pCF)-C6t-Z`QxL180mKPs_bspz#c-^7#^y}YOkE6PkQ9rj_HV=j z*kmltZ?O^q%t8>#m(zf;CI(0Cr%X2Pr=j&G6B%@D$@lD!iejQiCAX~( zb(oGytG|ekBQ9a<7EvHn$LQ`t5QPTX6!W3=*p7+gvt!blV({{AzFylCVj%dS#%rQh zu=To!WQ)l3r+nO7uPmSndhs9Q${J&%BN|_)KKBB?p!O6Sp}3VIXiGp30B?Q9alzr0 z_g>~qArI8#j^sL7iFjfR_7zi`WiI|OY<|2KLFwFqF>Br=-y_&&agJXhp^EGYKZWMx;vl zj9!&8UAZ7Nz0M#y+-Xc)vI}2rRqX`2FFIR@l+QTbJJp8met&RKkCp;kMCOq?d}fZ# zLhUDvXze5syaX^PUo@?CTQN+nw-0}j3wZ7LyZ8%OxGbYmT%6fAu1-}D3}IuknA`PVgdKQ*HC;(zi=2@jE#b^gs@56}dzxrW z!z^LrZrHb}W4%n49Plns?oHk!Lzxz-Zzb0Z(*4exiG$)sQpNRJPrq?E(Jp1nuHzQG zA*XriPym9ndWK+ldY3a=p>kJ=#oCFzgK-#2h^KX)TO=m^o_C)2Lq55OvFkAV`3PBj z5?|Kc%Etv+!UZi0JkRB=&(5naVK7OeAm&}?<-YC{Nv}{#Q9!d!k2fjl zGbz6+(POB1h*W;i%Uw>5u^D@DcHxdftM7{GiNyMyo)c-#=q@7{|6Le*9(=`>bWI4) z%^dx9rcN-YvuOx9lpHsC5h#xt0tl4pNp>loU8YA;@-oO~z3Me}yTx1O41uSQEPm~j zAr+b>Qtei^_c;a1rcHP1aRyQ0QZbc`pQg;ST8E~1Q2Au3$CReUvMqR14cF{j3@VQ~ zS}W_s=Kj{|=>bn`*lu54Ml*hZV3a=y$l5{znvwvRI}F?o55Z{8MU+4`35^&0{*yWR zXAj17-0Wxdqs3-`v@bEi@L^$K3yX+H1ytNy`mcQVMnpgdUPU)B3HUK=Y)^}^DhgU2 z&*Hng=_(g0Hek%&9^i>g;7~nUh;`^}bB{hAcG>)B)?XxTw383M7R3i*Yy|@$NAx!4 zG4cUISmu+!oHTnn&XAg~uUBJWe;F?i0dH6`qu}K#{H0X-n8`kNwy5b%Gns}8`RTXZ zYdMc6^HmO6iPr;n^zxe^=LTp$>~79VBgmT}X4Df>b@P5pI-Op-gtoPyVye&avsZ7W znAQN&izv=mXlNJmQ&DPRVZ&AKvkWhTecjYT? zi#90!3GMF)(i7!Fa}MkW&m@lpG*1$$k!8je(GF;Akmp30rx-S=ux;$6PD<@W+#qR! zFHLy1!KLN!ud2MpCotq^LAvH^c>bfjFNf_VkBCmb=pqg)Q~?C^C>KePe=-z{2x$oP zT7fFI_s9et{w_7B>(2t%yc}_{4QY7eE2}8fP?I93w6xuj3t_x(7soA6e{)ghioPNCCqR_K5@he zBE1eoPc8q#UUqU8JLI%+>Cqi>IB0bKf`Dt)j_|O)VMR;tIBMTN2e%SfazTnMVr0LK zD}U`p+A4=7DmfDk0~b7whH1h1os2<@j^h2jJkZ@^$U<#J!lD_|f}h-k*-FGyrU+NX zy;eYnaLh-=gIX*-*RNiCF@~Ok-t9J^>#Tykthwnze0AQ(Hz_UT=`Ev;jNAf^m!~H! zm_L110PlYmDpoa-8Fr1~Pi|VbiXC^p?4x6VUK&Hkkb&M9I2{4Ubs~-{oA}VHxEA7q zD0)E@z?=t?IX=Z$l@7`ujmT>=4)Jtt&qph98#!={8jxWGVy>L6RVyc8i(@oc1PL8# z+&nY5jkr+A!WaPN_RE8{A)Op;qyW(;H@G6WRBfI_#LFfyJHf4vdL*SE0M?R+bUyld1?}%nSCT1 z?31@Y+9R^%rMpeJodbJhB5$!ARhF~4mgJ$WM2vzB(-(^N?@3Vk)dnX{sBff9XiAATl~AgG>P*sSHc#_+CCYIuQ#03 zR$mN!)$+#4tpbR$-{tY2{ zK0H`ay)1`{;%W@kHK#y_8m6;Kri(nER0I>-nrBqEq6;6l#!c+r)$FkCa-{jbH3d4A zS2l*-{xnPs`uC1Azi`~ANN$gx8)l$*Fg3BA$krNI3PyCP=~O8`C-PBsSrCSDq!jE^ zyHGEjdU;<1-RdIg!8Aqh7BfD;+ioZ=sxae{0}FVV6Q&Y{+N)UYL>)4aux%|ajGrqd zqL#|xe|xH#)hCDiu~(+4=F4T!$8MXBK{js#GU@SO$hks6%2 zpp2v@?g5y;4J2SVAgzpVI~-3xtr`zXmo_KnKvr@zUO6&R*PUZ;23h>uC|;P{8!F-6V9hH8S#%2VK;v%@?$g zQT}@w+5h^(FB^*RSf?>`qgaC33EY61cVZi4TY9w zz*UjB-B8b3t%)AVE zn*22&+|vfT$#U7&{IBfC&j1eT$S>DzvKhdUQ|vF}U-Ap4x=MCmy614>MMclVT!MVT zdo2}{(Nn|(>7YAx->;nRI(_r<_1J>XlAMoTJ$$)b=CesXD7C0A&QmU)Vde82mbaSG z$1TIL1C4ZK7F$*;^M#tpOmuIp#}IJm{=oNJ;-hbAf9^}^0bfs1BHL(&Yf(N+?+sQu zEaqHMVJiDE?t4)%Z$p?FWDS#f4mFPU)lZBx9XdukamwZjn^3;C6xfHb>ziEDC8KkgsbwYolQ z=Un6IHR`5B>uZD!kxpI^>*4;;N~zesA+Oc)wmo{YxaaQEa?Fd0&REhp!@n!h=6}0T zI~*z`KRr7T32d_tOqo!ROaH}z@Hf5!Hig7RX$-LW(>bp9WWQ(BDMlfB;AMr#_CR#R z(nc%ld>eIMKr5QFGzoSp%^@Q+acrUg9O*@diGwAKanE%x!h18J?O`fB^9 zu?Ad#X?gUqfF%=}a;WEKS#hh17_tDql5W;xbUu@{s)p_@Z#=LptM$~Y7$a1pMyp)V;`3)lWAoQt%clz+ea}TyUou?7|5eCfmdm#6BG0guEI+utipWN=d zY)oo5s16fR7TzR;{M0=+b@{)8T49LA?E|)Ma6L5)yEHT?d4l)NMS;yYq%Q9prtEo1 ziIbI?szSea6spIIuff)yq6A6d10!OqzrwtHw2?~{Q}Gkm@({p=ocatC+8rN^C z+4}T}TAdAQcxg`Q5c)IEn??TqX6xi775-We?CDE9)jtr@zXY{w*KWC!5`<5f>^sUQ zM!PR{M+vL_oc3E=T4cN7Z(n*})B0olF|(l6_r3tceDOiTvxaBvn%(EFvDPlP(cWsH z${ma^LJBM_+Bso65k39s!#fFWV6pQrDEFkddG2jJy8O<1epT2y=~Y+k325>ejC!w3 zwAKN6#KH5Z!Wi_q1H_-Q&rkmYwz1F^mWNnqIix<2sQAPEZ%Of#z5CsJ=}0;c+gkL4 zAAqccc{YH_PukH=cg!3|`6ETuoa&^QP=%OlkQ?t-ot7d{DUy!g(^I%$fo&I!0gwd4 z=C=U%Z=sKEN+?vZ2UmR9VRHS1A2(Qjq&ObSdEv?>#hQM3v{v)ph+(y;PsqfH-~{ovy#p2sug_qe5pZ0m9Q5lwq_a6C86 z)ci|XUUifDP|4FZ8fcHwO8q*l4&CvOvC8;$=X6V!L&I>7sFN_r-|u~}VP%~a&hY$86Bu&^wD;=)v)U5a2iA({dy9&pTQ)eFCZXuWzmYB&t+y>yF*lG zd^DO`FIt`_oh#p zt=T-|am*3GO$TM%Z!G=zvs+fsFM^YkgS0t)!uWy^cE7kHl30gZ{ zs;g;;XxD10)bsTS=HspWMa{*)A?y|yFz?Ajp!L$_Y734^EkC|81LZ=cNz zkM904NT7XC#$6@30q*o?zG7TPF#Yj0()&6cG4i`qKW?PW@4~X;@uB`}+N(6ejKcu4 zs50gNYh8->Bfmg~-hXpkihzLLU48fhxTHTv$$P1@6fPTX2m8EFP4{X_bgro!ldg## z+AVu4N2cxFTI4Dm|0EM?f^s$9{ZlC{(f7!{zwPVV(w_Ci(!eQO*9adPwVNYokL?Ed zrBCSXy&p>a6Wqd1Tu$Y@?EVpPwq56=T}59$K}VH##j{ajS-&zsA4YxVaOweG2V=;E z`$!}Dhg-jjbsXKL!aj{$bIk~JHGBf7;omICIec!&FwTjU_TMOWw{@1V)0d#V0Fe6m zLZ5Wr3-uE-i2Y{nG5-2U_dV-8HBER%7|>UWcq>DCX`0Nh5JbBoehP?aP6Y8f7f?PV zmZvH?4$Q7zqS;4fD5h487yYS)u1EBpe5*bJqv(A$5c7NIU11$G=`?AevzxlX4Wc}- zw(>;}X%HP{kP!bmoNc&Mj(5`y^GQXFSem$R`-w>oAf;nN7eGsy8~&;oxA8}pZ_swH zK-ekAtInd1)FbLL@iA;G0GX2)JQq6YVN1^5I6mLR(L$#F=6_m9E-$N_dJ3-wLSi^cn*BjqXRp8>oi=?s(T*;sO5UXnSid= zg3-{ReRP!%lrT-(rNs0@9NKF3dx7u>EwJQ16A}bo z1jxdkFBKN0%&5ajXMgX8UIGAc^k0A@E<>xX41W5#mwP9b2V%Nj2@A>=%znEtw_y z571pzFVnBWy8kok(mxiTfzK28?mCUuYSAh`hOr}ZQ!*SLJuNC#IhvYUyZz*;m#iQ- zXYh}|=;5DZhYVli=UOwJH5I1nv%P#?4TOI5FZTk4y;UJQ&ND?FgddzBl&r3o_n zW8ypy(d)c&thCZIQLRqD$cxiK8=g;i2Zo2Glx(#&;${yP`jRJQzKX$2l9)GQ#A)_o z4zI=Uvfnhaepit6-_FTrkdY5%4J!sB{W$;hof3Y5etIO7Uv5j6uVN!<=rt}(>H3y5J}CP&Hty#tzFc6RUG%79r#r)kA3(mj zdoF+!gWucHEib*ecq&K@vh1XjxRL>(Me@=9CR1N619@S-oMLuW{Gbodg_b^x)wI{| z^IiIbF?MH08B{6`t?$Gcx<7qGJ|p@(#AQ^-%JWOG*TS>gbvD7XD&alK`Csr;1`>Na zQAy{t<_>=tLvOAoVYm)wgF!#n=_Nb7CABzPP5PPvFxv*YKQ;*l&?h#!1dK04@r{^R9d_fVG@L zYz&U7!PxN(o;=l(F(9m3>xu}Cr8Md;5^JwvIkcu7n7=yaY#bUC@7CLzc z`#ZQvF_|M2f3cPAy9IpD>&_YPY#u4YOLB&Qt`{iwPx0e?q2n^Nc|~>qcbpR zFyT$EIt>Fm>T?~dETvXA_KYt^I& z?C#J>Kl=pWPq#Di+~y5$(>$Qz5|BmcnHzcM>&jy0UjQ@`qiID#31OqP2U@So#8>uC zxUU3l1b%S|H1r?6iOABq%(t;Paw4C0E+Qn#y|-9=i7nQP^4Wn@mKcBaVr;N*lt>&E|=mGVWS#51Un*v%=S7u z>#_Fab;=R~8#EV6i08ey!^V)&S~wHNA>vTtktlF{(0GYZ{1^W_0gYI86}3Iff`*<= z3oe@o)7@^yw?0DiV5dH_1VVvAwr4>x$IJFlH_h`xSm$)v|*MJ3_BqjP}S6R0wjR|kEg*JGn*HLzgInZdTN0Z z!RPJHFMqRp>B_PIDInSsa;D)oy8V=V&2zhne%AirLZS1t*8GXdPgdR+S?9i1+Q8>6 zAP+83I&RJj2S+D!#9c>b7gpdsy=4Jnp2YUx zXyB8_tTYlBKgmgp&GOS7JWzZ#4wR6(|4h`_jW7Q757q@8)_)m(Cy)ke6!l`$_mz3K zhLl79fH&7Y=h=At*S{lki`$-S(jMSdrc#qK$6`jgUebGplHHCsHDbDE?Y+s0AMS%b z|Ipcs%auzE5W1`h3^u}K>b3xon^~dfBAL*ro zM#^a`yC}_#oP`0lHBn#rqq$pO>hIV4hS-y2;E6Y?^Funmh$;DqhS z?E}j7br{EX9zd-b3QvHl5{qv?_}qY4z?DXn8*8IL>(7x|&uO~IB(3!T&y|!f!)o-; zLddXXztYOprV9Hg3DSS}p?&xNaYGlQOfvjUJaolPy3dQPN4f)1(wsW$Qvm{j3%I&@ zfrFKX&$^N8MyF%`s)`-*{OH- z1JZzBN!JC#x}>8e=zDrxZRz0BrUB5q(O2D{OGCOvo{Z}5b&~*|Bn}(W7vZ2iiv;BV zczW-krvB%9SViHjl&B~{DNzw=QdK&Mh=PcKfPhL9B1P%FrKm`g5(EU4E+8Pi_s|Kw z_ZE5yEeQldNWw3l@67Z3nLBqflf3rc-93BG*&^q>F!1jV+m$ao2q@FVz2TOg`9^ZP zq-eijyy>64g_e^v{hc2u*oR6i;$%}GG-|n|wx~-fmjg^*h*sP^chU?%q@hH18&By! zm5Ou1*`<^#Lm~oNS9iH*cMK<{iI}U83tH}5-jZxWF6d0b8ED!zR}E*_&R15+C`Kk4 zxxJ-EAvwPWseQX6+lChKLP1s}t+XxG>R2UfKkxnoy9Be~de%g;Q5JLLyy*GAM>DVI zFI=IAtSg6&M02p<1JzU0$PCvJ*doN!6~p`KhKCx}=ja!gpm9saU*+tPbw2OeA9Jw% zzV_doX0y53Z}g{>Rs|1z7FBj<8OX(M=ePxuwv9-fm7KB5h#0l+y^Tr3!gAV(c%3TH zDH$^*UNwIQQe|UbSn_vt2R&tz=oIHz+I3GbwOB1fC5Pw%4|}jo2XUt!fobb5rLl*Hys}n0@O|Qdkpx> z&`gLoOoL@SZx3!jzkPkU1yqd9#;5BhZ|Ls*GY(x!5B@upA@3W8u0+ z(-1O{ic%HjlvPNDZlU0~sDF^B3;0c@eXY4m2y=IwJ_>4udjovF*n_h&{~#v`9@q5O z$3+GVykTS_?(Y`ykQIGnUJcH6Aa6%Vf%HoIR(9;YBl=MzWSP%gJJHbRhl=cY@o}J1 z=kJ^Dw*w_kJdc+H50xN3>)T@M2*KKpIYV<00>2-zkG?@FKKrF^B7{IHLTbxZ%HN}d zR!rC=YgYV+IFcKVF4epO`ao)kLQ|X0{&~2~=s3@PU1xa(lZjbrW49${#=AsXHeE-7 z_HfFsR^k)(2z=D1qr7;2Zt_y?R~lzCLaF$|L+7Toq#+?$0qk*#_v%g6qjDtJ5M-jf zN8K-#gl&eEmUu?w|Fr0lQ>L3YN-dy|%p_-aECD_I`#BoxdpmcY_#&DF`**6aDez+? zIw|?6zFf4gK~sK;&MeAHpB?;Ddll33R-J>?tDgh**;IEf<)wN%8*zr9<~`urPN;`OI+vJ?P6 zWQQ>rhyxL<)D|9E%#*8>MXJ+rc`5M;WW|=`2=Z&gTw5{7PJA0>X%NQll`y5bGLW#5 z2-R;(>tT`3#5w!?1{~~98d~suGi?HZn;ssobmj3mKI>O3}c>H0;-(zxLaQ06?Zgim$bSLZ|$>#z8ppI09fzogfyLTQ%)6{ASKK8R0K1qh6u)t+9JJo6V2rfPzBNJWrCgDZdN z3bA|TxRQd|*)tBT{vT6)04t9*zS-I6r9z9Dcq(n%mV`Rh zP{HX@=tZ&oJ{8C7GSjMn2$DJyH1(mB$0VM%AVafxQm+=u?$ubo8$V@eZ1&8ka-HAb z#@O7``Y_Cb`owp=OHOd!bHa>L@Z-Hp3IahIU_gzv($nb~dlRCrrQ6IkP+a~gIIpdp z@0GXhR;=8#0Vdn#+RI-8vH|mllFkGD)RkYg&HstW{xd)L3bdJ=EoJxqPMdgpYW;S~ z{&XPuE3d4;=01g|uxNv}SO~GPMc{h3mrEtk$ju{C;sdS74=z9IV?o|6$z&>Lnd825 z*#~$|n6!%vW}+TmgYz~RaoEN zp4)??I=u5{k5_r9ro@Il>j9O+HD43zv# z*Hxg{Wh{kRH^q`&#fP+$7cMtKmC=y%XnB-(u;#h%8059rr@q>T3sxW7gCPV!V}5$k z0~wpS7KMf+N$cA(>Q{sbnHh4Tk2BZ%{n!&{2S;V}dlJd<^m`7ZP95-)DGJA>|IZ2Af zIXlte}Q<5r8OD9Xk^n0$MKq&g%l zM5-MG zfCEzB7ghd6|C5B`-uX|fs>4Xp>#FFA_K#Owzi5DIZ?GF>dXPwWlj$p%o-QGs7aaVw zG=N!Ns&Q6Z2FH$+dTN9lQPr``4Zq0(?;f<>SC0G`?8=8OEKsMu@4;^-PNt<`T!FAH z%u&g)$HEsD^;5Yy4}-&9@5Y(DcIn-w7BiFj85Zx%-iQxx{y#5(dIr!w!2md%3cMS( z%%%eP57M?bb&-BM0wFFzN@%=xn2#k5%Dd(kIe+Ggg0LpZA z1#6%Dt0>-5KG-0%EVyTlYv$2}X$AvaF(%|Vzm z1IOJ8Qy-mG#FdWnEF$Q_*+_@G$!^oRH_$aQ6}cDSvk^X#E3Vxiv#pJPDP&5%N`%0) zn2qvjO#p|b)?MuUDSF#tfNUJPKRf)F%VXTsy>El1)@S=_Ns_4d^rqZLQKRcvtLC$W zjc{m3gfzt=HU`jbg95nbr$%qGDE_lQ=qdvbVgNgnLd>fx0YQKBRMrBF6PGs9K^r+v zqX44=p!zcvI}Kh*Aq%*^@IwkGEaLemAWT&=VWb84Fsx{!$*BqWF&w!~wa43U1)j-L z?N`da%+!(QkS}?hR+($cy<*Q_bI#WY1n-$ZliMl`^}aZ>-O2_p$DAKBPRekfz1SZ>SdY964+4Ltfenc1bQh~mMuXmIolb2HurM@7_ukanZdtZMtBdc;V zD5O=mCzuMwWefF$tRr_POGR!~5H-hM1aFsx1f;X?x^z0k zr%0NfTlK)I;J?J_;H;X%t^^PiV`D%agB+k+oh+-*x=x6&NR=!=W)DCN|4apo3BFih zr3T;NtPH;nXOzKEu_`aoR>_ZtGr!+EJAPF^t|CD_r;fm{Elj15-K_AAx3H))cUIF; z*z{aTC}%-F=QxPQvQx_86FU+I6;n$kzP51uB zKBNe`dQgPMTlP);Q~tq3R$HEVGbuz;$i$OeepEXk6r(KY0a9CPr@a0q-OWevHNac5 zRx^`ee!m>F9BZPs-T!zCrJO6Svh@bSV=fcp=B1VgS(0!~Y1iQKYzXb+9J!fKM=04N z8vH$>R1n}DvUsHix+-zAez3lP)Ms&SHu)0Elu#UP3seC?8EOmu4$(c2Oc?r5sz2?3pNDw99mhesVk;_Fm}GQx%tBzLm&) z$1;o4wF#m`CCCOs9RiS?1ULSGZF`apLRh^cd|?X>y8L=H#){Um@^sIIv#8OC!4vE$ z{r3RMT02S5JD#SGhMi&ee%D~gpV7Ab&F30dL`74w{wXE$!PE7ttNTEH$kY58=c)z= z#rdDK$NawS163dT<`DkJGh!bN`c#tYgsWo73zjk0cudG{XDj(CvEUhJEbSoi+Jw2i zW5Gn#N{NYi1p)KQcT`hVs6p>+$K;b|5a$HR4$SMioSWSm-pQ7}~z6x#~i8LINO6TyzLDptOQEX+vLqV<`-tAinAx9zD7X!jJ{&ib3#G#j{QrCb*Z|mYK1w3HyMWYMaS!1sK&SDufMlX6?SY*s2M_; zc`q7I2nO)n{-!WDdGmHmV3(-Lm$!~i$6uHJEJ;d?Y7)Z2UXlLGdI?{Wk`--Bch)Cr zHfy9N8l@BgD`&a0D}`C&q?Y6-($VYdOF7P~p76=X9X2O%8ZYsaRp4CK?{!Rg%XSEV zD7C%%Tkv^SpS$)d#|YsN+O4PTZEce`fSA#<6@Dw(2g3W;t}Mj)w?~0nD-Z%`9rLMx zv5ZU*n%A00G;xN~)Tw`pzkTWj)l@vq@dIMpap1c(hXY_+{nRHG}asO*VR47smvkQ1C-5ig3!P$--+8>N#W+wDl`ZF#k7_+= zk-ev_bpsBq@fWCbTBk;Gw+LXdq=6C%$7ZMEG-u35-` z_D&`Y8P(^|vm_CkhiS?Dv5v*f%#;mLVoOFrV~o-{f|Imty~XZNA{axdB8(nt{eXO8O)QIZxxEn>;aQv5< zAZOYPg%i^~B-E%&AD5)HQ@cLz)$6oL{dobbSXl>%Wm@2IVC2-KE1$IhI#RFB^l>*b zDicgiYmS6>KR&J*=oX`e=&t}wBA(H#uKljK5S*~$o|K2F78Xjq2BX~VDXU3Axs7E@v1cRePnS7dlMf%&$%%qw4c>;k0>w(|R3ue0yS_I>jJC9q#ZipP? z1JPB+Z0=V`ise;a;bGSl9opIxDi1V2c}_Y18ArYt=r$l1--i4O4z=*Kj_Ihpqtqi# zX{wTb^%Y=HndNco2nNcCH%Z;tYHX|HjfFgd9mkVJ7H1gMEYmLHH;8Jrvl0A}S>!eJ zew*GB)cNSt5-e$(rgQC{qGocN-vaNl%3Iq`=A{Z^is-}Hw_d$N z1D%o7t;TU@%e&{P_uvM%v&}s4otvQpklQC=7{2J8(tQcHiP3vg->-|UL{>JGHpXGJ z0kk}!xOzq-|IV@ubJ8*QVzS)Izlnk3OUf@^@T=m&UJL>rLe&V8pwn;LA9dk34M|Q? z%3fXU4=EjU7L)g_)KpUT^KET|yE<^Y#J&`=I!3$=%U`!A!IPu$VIVd_8p-juAnU-{ zx6*mFZo5?LuofvVLa(R%Eb7J&`@@*-EUBuQ&p0=l9kwwXNVe2Liw9V{ix;*mjF9`3 zfz!``$kv}153NDCtY{^V;#q2R-ejCqH{lo>L&%1ar~UaRKi$6?@5tXe?R#VUR+Zv{ zYSBgPoxcu?0e#&)WHdc+LXV&aaB?YMbm!OTN=2(WBDmw-@ArJsG~M`fJODZX;y|Cy zr7rkmi?bO3mU(v0r>GO`c#8bs*;L4i3AVC`5}iQGl7Ex<$kl}HFtk;gpir5xkrCI{ zrhbuP6zr8|XVigi|L>hD3ejc4F*b94Gy%c{v8~;xuz1w?RcIn#EF00Bx+fq@_J59CPW$gBiK)-xAO&-+h$f z?^hU<0D>Q|+K}^&wf-tPKVmY|q`%12yW=v+-z&jH98J#PFmvZEzMY*ZU-UJ@b^m?8 zVfa6{4SNqNk?^DSJT}Yo%3VVkK8zwTI}8$oj$#LRqV$#Vi8uKr%XtiaUg8Bn$IlBc z?oKQ2RxdBrFPfQ5-kO1;R6aQhH!(uqiK{+1Pm9&Q$@tNmziuSuS@BkF<~NJa2rv=l zj`bd>)$GG&@|BYv5bA`s`a?z*W`B2=YI&04|4UKUy0Z4v=qJUUHYD*Z(IaX=Za_(Q zFS3PoXQ-GE#9m;_3omzSdYd{Q4^pd==W1z=8U8YV_5^arKfm6&*Xa^|v?K*4uv9Xj zVAS~KO09#BT%2PQ<&T5I)S=51_smBOpFq#jGTcOi*9aX0*!oe^`rm#a`@%@Uo*S>5BDYwGH?mb~_GR5V^e0PA^iW8<4pmd+EjQhb7H-58xk>|9) zw5Ie!c$L>B`y?8DDE@3X}c(QTlY~2g1BhLq61wm3$Sht)fr8 z1gIoJr5!C57F5A(!S_6J?n!;yF{=lWVXrvm93sBH z{xyY^4Ont_NYf%@T9wsq1SbXj?Mvl0O7)3#b?|h+Qp#X6!5ql@soZfGw39^FXL31) z``2I`IkUJ59@!;uAr(A$6p?7MV8Vl&s(yGcB`LS~Wv&@&V@6u*30UMqd^7UbgSoVl!Zx3DVbW#0mtW} zN~XC3_2+AN{VL!3;}wi%l;!Z;fYs3oC~gpWv+?2CGnuvequ0b2?2Vy+oWp|Ad-*R(3KD%BiVOMNI&V+y zy2-KKbV&<~kC1ybJLP#eWoydgw zt-ipxkTLRnbAvQgvrPoGNqZDa6iZvr;7X-~Ymqx!i|cuAz*N5F2J`BXPvcjuS25PFv^n5}#RJH=j|ida`g&k& zEvQS2*yvAaCnAcRt+6pjfyW)}V~Q~RkOv}3ns8U^r^`zospeLBPoVZFut5}E`x@*w zZX0zTyB(m8{Oi?i-yB@fJ`uiepyH~T-lMJzsjSUd$ZIUY-_SGX>}!MprI$(xGgQ{C zSHN#p?tf;d1283HhAHxPzmb!EFbe)!twY=Ln{$JOqzinJ1z-xVnhqbOg}cw7TlJ%E z3SSxE1$IR*^_m;*4gU#6Ro()C(>+fP7NKN_V~U{`BzH67AFL_h&@L+DE3X(QEW{m# zujf^!+`BMPsfZr?RfYa5exXZuwV~DBx=ipsX>&3*AzwA8ADfV(Uy|hme_sxUj#dG< zJW47F4oxb~`b+sMB;F*d1?Y;7ZdSiH{c4STOBfsx%r_D6)U8(oaUtz6F;9iW$fuM_2!T zhdsD}TfP9O6+yhU(Dx3yn4S@b8Vc1YM9FatSt`u-Rfw9H+Wt23zN}{dXDLhPIP@eDW`& zCM+50Bp-9gAo@I&I|`}lW2zKsfbn}@cQ91+?XPeT8jr(aYyaFFVfIji%^A0PbnS;}uSy|JX z50rH^(XeY;D9hWUfqfeK#{6dA1&6p7S?{g~75r_8YA$Q|{PqUL%o@M!xS5Ewe_BK6 zVRh*;$9+M`w@G$Mb@DiBc40{Gz|h!jDF3l#Pf3NL@=IpAH%Q-V`}~zpo}!2(70-|T zCDRxAKYiF2Uum`yrnWfOpdV{43sm1?(7T>lf#s{vy7?ESY=T0dl?+a2|KD!Jw5EzS80_ zV5$GE!}y}~%l{nS(07FDsb4sA<6%$MS`+Wo$2dsC^;$NjF8 z@RRsWg5K?iYtJt6<4ZL6h2k5X>{L~MPgFq<;9&}(&IeO=8kZ1F@$XiV4$LO`sDFH< z0yq!2MD?S_C)yBdY5jELsY$ogTFHg)y#;J;luBwX_&^Q4dVEFbvf+pBSPK!h?zp?F zUm|C}f0WdhCVrhNGB(Rn*=9$`p!o}PKAA>Wq?w6Hr7!gnI=Dmw@`pO!bvL)4M?6s6 zs+As|XCB}G0~%L@2b!RM7zK8XO`2a0ZDCFS`6XDLU&Lp$Xza)ED;7$14(^$W@NuT7 z9O+ghsSn{|c$j`j5$g@Eum#2X9JEVwd?apwVwI;wzfqSGVqyCDp+88rmnx%0D`BWu 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 Z!2g+xuq7_aeBA&5002ovPDHLkV1l<2(U<@L literal 0 HcmV?d00001 diff --git a/docs/assets/gemma4-e4b-pro-reminders.png b/docs/assets/gemma4-e4b-pro-reminders.png new file mode 100644 index 0000000000000000000000000000000000000000..73259751da7e74ce4dc435ed411adced58c2a05c GIT binary patch literal 265121 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 z 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