From 2903b88f3306ea6def6dd3baa96c2b47753715fb Mon Sep 17 00:00:00 2001 From: gh-autofix#2887 Date: Tue, 1 Sep 2026 15:15:51 +0000 Subject: [PATCH] feat(issue-radar): record an empty queue without an issue number A crew that swept its queue and took nothing had no way to say so. The write path required an issue number because that number becomes the work item's filename, so the only way to report the cycle was to attribute it to an issue the crew never acted on -- the ledger either lied or stayed silent, and a resumed crew could not tell those apart. Adds one crew-level event kind, `sweep`, and makes `number` optional on the write path. A numberless write appends one ledger line and nothing else: no work item, no skip-index entry, no work-item fields accepted. The pairing is enforced in both directions -- a missing number is valid only with `sweep`, and `sweep` is invalid with one -- so neither shape can drift into the other's meaning. The event id formula is unchanged for a numbered line: it is content-addressed and drives merge-on-read dedupe, so a new formula would have given every existing line a fresh id. Refs #5905 --- .../issue_radar/backend/crew_brief.md | 10 +- .../issue_radar/backend/crew_ledger_spec.md | 53 +++- .../issue_radar/backend/crew_routes.py | 84 ++++++- .../issue_radar/backend/crew_store.py | 226 ++++++++++++++++-- src/kiro_crew/mcp_tools/apps.py | 52 +++- src/kiro_crew/validation.py | 16 +- .../crew-empty-queue/work-log-sweep.png | Bin 0 -> 262712 bytes test/test_issue_radar_crew_mcp_tools.py | 77 +++++- test/test_issue_radar_crew_routes.py | 138 +++++++++++ test/test_issue_radar_crew_store.py | 215 +++++++++++++++++ website/capture/crew-work-log-sweep.html | 11 + website/capture/crew-work-log-sweep.tsx | 136 +++++++++++ .../scripts/capture-crew-work-log-sweep.mjs | 49 ++++ website/src/apps/issue-radar/api.ts | 12 +- .../apps/issue-radar/views/CrewPageView.tsx | 17 +- website/src/i18n/locales/bn.json | 1 + website/src/i18n/locales/de.json | 1 + website/src/i18n/locales/en-XA.json | 1 + website/src/i18n/locales/en.manual.json | 1 + website/src/i18n/locales/es.json | 1 + website/src/i18n/locales/fr.json | 1 + website/src/i18n/locales/hi.json | 1 + website/src/i18n/locales/it.json | 1 + website/src/i18n/locales/ja.json | 1 + website/src/i18n/locales/ko.json | 1 + website/src/i18n/locales/pt.json | 1 + website/src/i18n/locales/ru.json | 1 + website/src/i18n/locales/zh-CN.json | 1 + website/src/test/IssueRadarCrewPage.test.tsx | 76 ++++++ 29 files changed, 1137 insertions(+), 48 deletions(-) create mode 100644 temp-screenshots/crew-empty-queue/work-log-sweep.png create mode 100644 website/capture/crew-work-log-sweep.html create mode 100644 website/capture/crew-work-log-sweep.tsx create mode 100644 website/scripts/capture-crew-work-log-sweep.mjs diff --git a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_brief.md b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_brief.md index 55efc386040..eb35e86c816 100644 --- a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_brief.md +++ b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_brief.md @@ -51,7 +51,15 @@ which stay local and are never rendered into a comment. your open-item limit. 5. **Write the ledger before ending the turn. Always** — including turns where nothing moved, because "checked at 20:44, still waiting on CI round 3" is the - difference between a working crew and a crew that looks asleep. + difference between a working crew and a crew that looks asleep. When you took + nothing at all — the queue held nothing in your scope, or every candidate was + already claimed or already skipped — record that too, as a crew-level step: + call the record tool with **no** `number` and `event_kind: "sweep"`. It is the + one write that belongs to no issue, so it is the only way an empty cycle + becomes visible instead of looking like a crew that stopped running. + Consecutive sweeps coalesce, so calling it on every idle turn does not grow + the log — the answer tells you whether your report was appended or folded into + the open stretch. Also write the ledger at any natural checkpoint inside a turn — before a long build, before a push, before anything that might hit the 2-hour ceiling. diff --git a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_ledger_spec.md b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_ledger_spec.md index 60901027027..93eb97d9a44 100644 --- a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_ledger_spec.md +++ b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_ledger_spec.md @@ -276,8 +276,46 @@ a lock and was caught in review — take its `_LedgerLock` too). "crew_id":"c_7f3a","number":2251,"kind":"ci","text":"CI round 3 — 41/47 green, 6 inherited from main"} ``` +`number` is OMITTED on a **crew-level** line — a step that belongs to no issue, +which today is only `kind: "sweep"` (the crew checked the queue and took +nothing). The key is absent rather than `null` or `0`: a reader tells "this line +is about no issue" from its absence, and a `0` would be indistinguishable from a +real issue number in every filter and join that keys on it. In the id, an absent +number renders as the empty string, so the formula for a numbered line is +unchanged and the two families cannot collide. + +The pairing is enforced in both directions, in the write route and in the store: +a numberless line must carry a crew-level kind, and a crew-level kind must not +carry a number. Neither shape can drift into the other's meaning. + +**Consecutive sweeps coalesce.** "Checked, took nothing" is a recurring +latest-value fact, not an event, and a crew is nudged on a timer — so one line per +idle cycle would be an unbounded run. Reads here are capped and discard the OLDEST +line first, so a crew idling a couple of hundred cycles would push its real work +history out of its own work log. The FIRST sweep after real work is written; a +sweep whose crew already has one as its newest line is answered with that existing +line, and the response says `coalesced`. The surviving timestamp therefore marks +when the idle stretch BEGAN, which is the more useful reading. This is the same +record-the-transition discipline `phase` already follows — stamped only when an +item is created or actually moves. The tail check and the append happen under ONE +hold of the events lock, or two crew turns waking together would both see no +trailing sweep and both append. + +**What the surviving timestamp does not mean.** It records when the crew last +REPORTED an empty queue, and nothing about the present. Consecutive reports fold, +and a crew that stops — an operator pause, a crash, a lost nudge timer — stops +reporting without saying so, because nothing on the crew record evidences liveness. +So the ledger cannot tell a crew that is still checking from one that quietly died +mid-stretch, and the crew page renders the line as the past instant it is rather +than as a claim about now. An earlier revision qualified it as "checking since …", +which read as present-tense activity and so masked exactly the failure an operator +opens that page to notice. Closing that properly needs a real last-seen datum, and +that is a separate change. + One log feeds **two** surfaces: the work-log table on the crew page, and the -`
` progress list inside the public claim comment. +`
` progress list inside the public claim comment. A crew-level line +reaches only the first — it has no issue, so there is no claim comment to render +it into. That dual use imposes the stricter constraint on both: **`text` becomes public**, so it must never contain an absolute path, a host name, or anything from the @@ -396,7 +434,7 @@ five findings fields the same way). Empty fields are dropped, so a partial patch preserves what an earlier write stored. ``` -number required int +number optional int — omit ONLY with `event_kind: sweep` phase optional enum outcome optional enum next optional str @@ -414,9 +452,18 @@ skip_scope optional enum — why a pass was recorded, including `needs-decision` / `needs-investigation` when the next step belongs to a human event optional str — the public progress line -event_kind optional enum (claim|investigate|reply|implement|ci|review|conflict|merge|handback|skip|yield) +event_kind optional enum (claim|investigate|reply|implement|ci|review|conflict|merge|handback|skip|yield|sweep) ``` +Nothing is unconditionally required. `number` was, which left a crew that swept +an empty queue no way to record the cycle without inventing an issue number. The +coupling that replaced the requirement is a relation between two fields, which a +per-field schema cannot express, so it lives on the write route and in the store: +a missing `number` is valid ONLY with `sweep`, `sweep` is invalid WITH one, and a +numberless call takes none of the work-item fields (they patch an item this call +does not create, so they are refused rather than dropped). A present-but-invalid +number stays a 400 and is never reinterpreted as "no issue". + Validation lives in `validation.py` alongside the existing schemas. The handler sends `owner`/`repo` explicitly so a same-numbered issue in another repo cannot overwrite this record, and refuses a second item entering an editing phase. diff --git a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_routes.py b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_routes.py index b3459c971c9..71124423e21 100644 --- a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_routes.py +++ b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_routes.py @@ -828,14 +828,22 @@ async def _revoke_execution( async def _handle_crew_work(request: web.Request) -> web.Response: - """PUT /crew/work {"owner","repo","crew_id","number", ...patch, "event", - "event_kind"} -> {"item","event"}. + """PUT /crew/work {"owner","repo","crew_id","number"?, ...patch, "event", + "event_kind"} -> {"item","event","skip"}. THE route a crew writes its progress through, and the one the MCP write tool targets. It upserts the work item AND appends one ledger line in a single call, which is the whole point: a phase cannot change without a logged reason, because there is no route that changes one without the other. + ``number`` IS OPTIONAL, and omitting it is how a crew records a step that + belongs to no issue — today only a queue sweep that took nothing. That case + exists because the alternative was worse: a crew with an empty queue had no + way to report the cycle except by attributing it to an issue it never touched, + so the record either lied or was not written at all. A numberless write takes + the crew-level path below: one ledger line, no work item, no skip entry, and + no work-item fields accepted. + ORDER MATTERS and is: validate the log line -> write the item -> index a skip -> append the line. Validating the kind and text FIRST means the store's own refusals, including the second-editing-item 409, all happen before anything is @@ -887,13 +895,12 @@ async def _handle_crew_work(request: web.Request) -> web.Response: return early crew_id = routes._str_field(body, "crew_id") - # Reusing the PR field parser rather than copying its bound: the bound is the - # point (the number becomes a FILENAME), and a second copy is how one of them - # ships without it. Its out-of-range text says "pull-request number", which is - # cosmetically wrong here and only reachable past 1e9. - number, number_error = routes._pr_number_field(body) - if number_error is not None: - return number_error + # `number` is OPTIONAL, and its ABSENCE is what selects a crew-level line: a + # step that belongs to no issue, which today is only "swept the queue and took + # nothing". Presence, not truthiness -- a present-but-invalid number is still a + # 400 below rather than being silently reinterpreted as "no issue", because a + # crew that meant an issue must not have a typo read as a queue sweep. + crew_level = "number" not in body event_text, too_long = routes._pr_body_field(body, "event") if too_long is not None: @@ -911,11 +918,70 @@ async def _handle_crew_work(request: web.Request) -> web.Response: "code": "invalid_event_kind"}, status=400, ) + # The vocabulary and the shape are paired in BOTH directions, so neither can + # drift into the other's meaning. A missing number with an item kind is the + # fabricated-number bug this route is being opened up to avoid, and accepting + # it would only move the fabrication into the store; a crew-level kind WITH a + # number would file a queue sweep under an issue it never touched, which is the + # same lie in the other direction. + _sweep = crew_store.CREW_LEVEL_EVENT_KIND + if crew_level and event_kind != _sweep: + return web.json_response( + {"error": (f"'number' is required for event_kind {event_kind!r} — only " + f"{_sweep} records a step with no issue"), + "code": "number_required"}, + status=400, + ) + if not crew_level and event_kind == _sweep: + return web.json_response( + {"error": (f"event_kind {event_kind!r} is crew-level and takes no " + "'number' — it records a step that belongs to no issue"), + "code": "unexpected_number"}, + status=400, + ) _crew, missing = await _require_crew(key, crew_id, must_be_live=True) if missing is not None: return missing + if crew_level: + # Refused rather than dropped. Every field named here patches a WORK ITEM, + # and this call creates none, so honouring the write while discarding them + # would report success for a phase move or a CI reading that was never + # stored anywhere. `skip_scope` is named alongside them because a pass is a + # decision about one issue and is indexed by that issue's number. + stray = sorted( + field for field in (*_WORK_PATCH_FIELDS, "skip_scope") if field in body + ) + if stray: + return web.json_response( + {"error": (f"{', '.join(repr(f) for f in stray)} belong to a work item, " + "so they cannot be sent without a 'number'"), + "code": "item_fields_without_number"}, + status=400, + ) + checkpoint = await routes._st( + key, + crew_store.record_crew_checkpoint, + key.owner, + key.repo, + crew_id, + event_text, + ) + return web.json_response(checkpoint) + + # Parsed here rather than above so the log line is validated FIRST, which is + # the order this route's docstring prescribes, and so the numbered path holds a + # plain ``int`` with no sentinel standing in for the crew-level case. + # + # Reusing the PR field parser rather than copying its bound: the bound is the + # point (the number becomes a FILENAME), and a second copy is how one of them + # ships without it. Its out-of-range text says "pull-request number", which is + # cosmetically wrong here and only reachable past 1e9. + number, number_error = routes._pr_number_field(body) + if number_error is not None: + return number_error + patch = {field: body[field] for field in _WORK_PATCH_FIELDS if field in body} # The route derives the pass's PROSE (only it has the request body); the store # owns the coupling — a non-`None` reason is what makes the transaction index diff --git a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_store.py b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_store.py index 9e1db5b499e..be971d8d0d9 100644 --- a/src/kiro_crew/apps/builtins/issue_radar/backend/crew_store.py +++ b/src/kiro_crew/apps/builtins/issue_radar/backend/crew_store.py @@ -101,11 +101,27 @@ TTL_ACTIVE_PHASES = frozenset({"claimed", "investigating", "implementing"}) EDITING_PHASES = frozenset({"implementing", "addressing-review"}) +#: ``sweep`` is the one kind that does NOT belong to an issue: it records that the +#: crew looked at the queue and took nothing, which is the only step in the +#: protocol with no work item behind it. Every other kind names something done TO +#: an item, so those lines carry a number and ``sweep`` lines do not (see +#: :func:`append_event`). Without it a crew that found an empty queue could only +#: report the cycle by attributing it to some issue it did not act on. EVENT_KINDS = ( "claim", "investigate", "reply", "implement", "ci", - "review", "conflict", "merge", "handback", "skip", "yield", + "review", "conflict", "merge", "handback", "skip", "yield", "sweep", ) +#: The one kind that records a crew-level step rather than one issue's. It is the +#: only kind :func:`append_event` accepts without a number, and the only one the +#: write route accepts with no work-item patch. A named constant rather than a set +#: of one: the frontend already tests `kind === 'sweep'` by equality, and a +#: collection whose only justification is a second member that does not exist +#: reads as generality this app has not earned. A second crew-level kind turns +#: these three equality tests into a membership test then, against a set that has +#: two real members. +CREW_LEVEL_EVENT_KIND = "sweep" + #: Why an issue was passed over, as a closed vocabulary. Two things need it to be #: closed rather than free prose: a crew reads the recent-skip list to calibrate #: what this fleet does not take on, and a human scanning the index wants to see @@ -993,11 +1009,76 @@ def _editing_item( # ── event ledger ──────────────────────────────────────────────────────────── -def _event_id(ts: str, crew_id: str, number: int, kind: str, text: str) -> str: - raw = f"{ts}|{crew_id}|{number}|{kind}|{text}".encode() +def _event_id(ts: str, crew_id: str, number: int | None, kind: str, text: str) -> str: + """Content-addressed id for one ledger line. + + ``number`` is ``None`` for a crew-level line. It renders as the empty string + so the formula for a NUMBERED line is byte-identical to what it has always + been -- changing that would give every existing line a new id and defeat the + merge-on-read dedupe for the whole ledger. The empty string cannot collide + with a real number, so the two families stay distinct. + """ + shown = "" if number is None else int(number) + raw = f"{ts}|{crew_id}|{shown}|{kind}|{text}".encode() return hashlib.sha256(raw).hexdigest()[:16] +def _event_entry( + crew_id: str, + number: int | None, + kind: str, + text: str, + *, + phase: str | None = None, +) -> dict[str, Any]: + """Validate one ledger line and build it. The ONLY place a line is shaped. + + Both writers go through here -- :func:`append_event` for an issue's line and + :func:`record_crew_checkpoint` for a crew-level one -- so the vocabulary + check, the number/kind pairing and the key order are stated once. Two + builders would let the numberless line drift from the numbered one, which is + the drift the pairing exists to prevent. + + The pairing is enforced in BOTH directions: a numberless line must carry a + crew-level kind, and a crew-level kind must not carry a number. ``number`` is + typed ``int | None`` here and ``int`` on :func:`append_event`, so the + numberless case is unreachable through the public issue-line writer by type + as well as by this check. + + CALL THIS UNDER THE EVENTS LOCK, immediately before writing the line. It + stamps ``ts``, and the stamp must be taken in the same order the lines are + appended: a caller that built its entry first and then blocked on the lock + would write a line whose timestamp PRECEDES the line already above it. That + inverts file order against timestamp order, and the two readers disagree --- + :func:`_latest_crew_event` walks the file backwards, so it would keep + coalescing onto that trailing sweep, while the crew page sorts by ``ts`` and + would never see it as the newest line. The idle stretch would then stay + hidden for as long as the crew kept idling, which is precisely what the + ongoing-stretch wording exists to show. + """ + if kind not in EVENT_KINDS: + raise CrewStoreError(f"unknown event kind {kind!r}") + if number is None and kind != CREW_LEVEL_EVENT_KIND: + raise CrewStoreError(f"event kind {kind!r} needs an issue number") + if number is not None and kind == CREW_LEVEL_EVENT_KIND: + raise CrewStoreError(f"event kind {kind!r} is crew-level and takes no issue number") + ts = store._now_iso() + # Built in the original key order so a NUMBERED line serializes exactly as it + # always has; the numberless line simply omits the key in place. + entry: dict[str, Any] = { + "id": _event_id(ts, crew_id, number, kind, text), + "ts": ts, + "crew_id": crew_id, + } + if number is not None: + entry["number"] = int(number) + entry["kind"] = kind + entry["text"] = text + if phase is not None: + entry["phase"] = phase + return entry + + def append_event( owner: str, repo: str, @@ -1009,7 +1090,7 @@ def append_event( *, phase: str | None = None, ) -> dict[str, Any]: - """Append one progress line. + """Append one issue's progress line. The id is content-addressed so a duplicated line merges on read rather than conflicting — the same discipline as ops-mission-control's ledger, whose own @@ -1020,6 +1101,12 @@ def append_event( absolute paths, host names and anything else environment-specific out of it; worktree paths belong in the work item's own fields. + A line that belongs to NO issue is written by + :func:`record_crew_checkpoint`, not here: that case has to read the crew's + tail and decide whether to append at all, under the same lock hold. This + function therefore requires a number, and the shared builder refuses a + crew-level kind through it. + ``phase`` is the work item's phase AFTER this write, and it is the sole datum that makes a per-phase dwell fold possible (:func:`crew_routes` folds it). Recorded because ``kind`` is NOT it: :data:`EVENT_KINDS` is not 1:1 with @@ -1032,28 +1119,127 @@ def append_event( event id: two lines that differ only in the phase they record are still the same logged reason, and folding one in twice must still merge. """ - if kind not in EVENT_KINDS: - raise CrewStoreError(f"unknown event kind {kind!r}") - ts = store._now_iso() - entry: dict[str, Any] = { - "id": _event_id(ts, crew_id, int(number), kind, text), - "ts": ts, - "crew_id": crew_id, - "number": int(number), - "kind": kind, - "text": text, - } - if phase is not None: - entry["phase"] = phase - path = events_path(owner, repo, root) lock_path = crews_dir(owner, repo, root) / "events.lock" with open(lock_path, "w") as fd: with platform_compat.file_lock(fd.fileno(), exclusive=True): - with open(path, "a", encoding="utf-8") as out: - out.write(json.dumps(entry) + "\n") + entry = _event_entry(crew_id, number, kind, text, phase=phase) + _write_event_line(owner, repo, entry, root) return entry +def _write_event_line( + owner: str, repo: str, entry: dict[str, Any], root: Path | None = None +) -> None: + """Append one already-built line. CALLER MUST HOLD the events lock. + + Split out so a writer that has to READ the tail before deciding whether to + append can do both inside ONE lock hold (see :func:`record_crew_checkpoint`). + Re-entering :func:`append_event` there would take the lock on a second + descriptor and block on the hold this frame already has. + """ + with open(events_path(owner, repo, root), "a", encoding="utf-8") as out: + out.write(json.dumps(entry) + "\n") + + +def _latest_crew_event( + owner: str, repo: str, crew_id: str, root: Path | None = None +) -> dict[str, Any] | None: + """This crew's newest ledger line, or ``None``. CALLER MUST HOLD the lock. + + Reads through :func:`read_events`, so it inherits that function's tolerance of + a torn tail and its duplicate collapse rather than re-parsing the file here. + """ + recent = read_events(owner, repo, root, crew_id=crew_id, limit=1) + return recent[0] if recent else None + + +def record_crew_checkpoint( + owner: str, + repo: str, + crew_id: str, + event_text: str, + root: Path | None = None, +) -> dict[str, Any]: + """Append one crew-level ledger line -- a step that belongs to no issue. + + TAKES NO KIND. There is exactly one crew-level kind, and the route that calls + this already 400s anything else on the numberless path, so a parameter here + could only ever carry :data:`CREW_LEVEL_EVENT_KIND` -- a value to be re-checked + and rejected rather than a choice a caller makes. Writing the constant directly + removes the argument and the guard that policed it; :func:`_event_entry` still + enforces the number/kind pairing, so the shape is validated in one place either + way. + + Returns the same ``{"item", "event", "skip"}`` shape as + :func:`commit_work_progress`, with ``item`` and ``skip`` as ``None``, so the + write route answers one shape and no caller has to branch on which kind of + write it made. ``coalesced`` says whether a line was actually written. + + CONSECUTIVE SWEEPS COALESCE, and this is the whole reason the function reads + before it writes. "I checked and took nothing" is a recurring LATEST-VALUE + fact, not an event: an idle crew is nudged on a timer, so appending one line + per cycle would add an unbounded run of them. Every ledger read is capped and + discards the OLDEST line first (:data:`crew_routes._DEFAULT_EVENTS` is 200), so + a crew idling for a couple of hundred cycles would push its entire real work + history out of its own work log -- the feature would bury exactly what the log + exists to show. Recording the TRANSITION rather than the state is the same + discipline :func:`commit_work_progress` already applies to ``phase``, which is + stamped only when an item is created or actually moves. + + So the FIRST sweep after real work is written, and a sweep whose crew already + has one as its newest line is answered with that existing line. The crew still + sees its checkpoint acknowledged; the log just does not grow a duplicate. The + timestamp therefore marks when the idle stretch BEGAN, which is the more useful + of the two readings -- "nothing to take since 09:12" beats "nothing to take as + of one minute ago", and how long the stretch has run is the question a human + opening a quiet crew is asking. + + WHAT THE SURVIVING TIMESTAMP DOES NOT MEAN. It records when this crew last + REPORTED an empty queue, and nothing about the present: consecutive reports + fold, and a crew that stops -- an operator pause, a crash, a lost nudge timer + -- stops reporting without saying so, because nothing on the crew record + evidences liveness. So the ledger cannot distinguish a crew still checking from + one that quietly died mid-stretch, and the crew page therefore renders this line + as the past instant it is rather than as a claim about now. An earlier revision + qualified it as "checking since ...", which read as present-tense activity and + so masked exactly the failure an operator opens that page to notice. Closing + that properly needs a real last-seen datum, which is a separate change. + + Deliberately NOT a branch inside :func:`commit_work_progress`. That function + exists to make three durable writes all-or-nothing, and every line of its lock + ordering and rollback is about reconciling an item, a repo-wide skip entry and + a ledger line. A crew-level line has nothing to reconcile and nothing to roll + back, so threading a ``None`` number through that transaction would add + branches to the most order-sensitive code in the store to describe a case that + has no transaction in it. + + ``event_text`` BECOMES PUBLIC on the crew page under the same rule as any other + line -- see :func:`append_event`. Unlike an item line it is not rendered into a + claim comment, because a crew-level step has no issue to comment on. + """ + # ONE lock hold spans the read and the write. Checking the tail and appending + # under two separate holds is a check-then-act: two crew turns waking together + # would both see no trailing sweep and both append, which is the exact run of + # duplicates this exists to prevent. + # + # COST, stated because the hold is exclusive: the tail read goes through + # `read_events`, which reads the WHOLE repo-wide events file and then walks it + # backwards to the first matching line. Nothing compacts that file today, so + # the hold grows with total ledger volume, not with this crew's share of it. + # Coalescing is what keeps an idle crew from being the thing that grows it -- + # an idle crew appends once per stretch, not once per wake -- but a compaction + # story is still owed if the file becomes large enough to matter here. + lock_path = crews_dir(owner, repo, root) / "events.lock" + with open(lock_path, "w") as fd: + with platform_compat.file_lock(fd.fileno(), exclusive=True): + latest = _latest_crew_event(owner, repo, crew_id, root) + if latest is not None and latest.get("kind") == CREW_LEVEL_EVENT_KIND: + return {"item": None, "event": latest, "skip": None, "coalesced": True} + entry = _event_entry(crew_id, None, CREW_LEVEL_EVENT_KIND, event_text) + _write_event_line(owner, repo, entry, root) + return {"item": None, "event": entry, "skip": None, "coalesced": False} + + def read_events( owner: str, repo: str, diff --git a/src/kiro_crew/mcp_tools/apps.py b/src/kiro_crew/mcp_tools/apps.py index f8c657170fc..1d4fafb2d7b 100644 --- a/src/kiro_crew/mcp_tools/apps.py +++ b/src/kiro_crew/mcp_tools/apps.py @@ -202,6 +202,11 @@ def schemas() -> list[dict[str, Any]]: "the real explanation in `why`, which is what the next crew " "reads. " "The crew and repo come from this session, not from arguments. " + "To record that you checked the queue and took NOTHING, send " + "`event_kind: sweep` with NO `number` — never invent an issue " + "number for a cycle you did no work in. That writes one " + "crew-level line and no work item, so it also takes none of the " + "work-item fields. " "WARNING — `event` and `why` BECOME PUBLIC: they are rendered into " "your claim comment on the forge as well as on your crew page. " "Never " @@ -216,7 +221,11 @@ def schemas() -> list[dict[str, Any]]: "properties": { "number": { "type": "integer", - "description": "Issue number this step belongs to", + "description": ( + "Issue number this step belongs to. Omit it ONLY with " + "`event_kind: sweep`, to record that you checked the " + "queue and took nothing — never invent a number for that" + ), }, "phase": { "type": "string", @@ -309,7 +318,13 @@ def schemas() -> list[dict[str, Any]]: "description": "Which kind of step this line records", }, }, - "required": ["number"], + # Nothing is unconditionally required. `number` was, which left a + # crew that swept an empty queue no way to record the cycle without + # inventing an issue number; the backend now pairs a missing number + # with the crew-level `sweep` kind and refuses every other + # combination, so the coupling is enforced where the write happens + # rather than by a schema that cannot express "one or the other". + "required": [], }, }, ] @@ -466,8 +481,13 @@ def issue_radar_crew_record(name: str, args: dict[str, Any]) -> str: "owner": _cw_owner, "repo": _cw_repo, "crew_id": _cw_crew_id, - "number": args["number"], } + # Presence, not truthiness. Omitting `number` is a MEANING — "this step belongs + # to no issue" — so it is forwarded as an absence rather than as a zero, which + # the route would read as a malformed issue number. The route pairs the absence + # with the crew-level `sweep` kind and refuses any other combination. + if "number" in args: + _cw_body["number"] = args["number"] # Local-only resume fields, passed through verbatim. NOT scrubbed: an # absolute worktree path is the point of the field, and it is never # rendered into a comment (crew_store keeps these local). @@ -536,9 +556,29 @@ def issue_radar_crew_record(name: str, args: dict[str, Any]) -> str: return f"Error: {_cw_resp['error']}" _cw_raw_item = _cw_resp.get("item") _cw_item: dict[str, Any] = _cw_raw_item if isinstance(_cw_raw_item, dict) else {} - _cw_ref = f"{_cw_owner}/{_cw_repo}#{args['number']}" - _cw_phase = _cw_item.get("phase") or _cw_body.get("phase") or "(phase unchanged)" - _cw_lines = [f"Recorded {_cw_ref}: phase `{_cw_phase}`."] + # A crew-level line has no issue to name and no item to report a phase for, so + # it is summarised by the crew it belongs to. Reusing the numbered wording here + # would print a bare `#` and claim a phase the write never touched. + if "number" in args: + _cw_ref = f"{_cw_owner}/{_cw_repo}#{args['number']}" + _cw_phase = _cw_item.get("phase") or _cw_body.get("phase") or "(phase unchanged)" + _cw_lines = [f"Recorded {_cw_ref}: phase `{_cw_phase}`."] + else: + # Whether a line was actually written matters to the caller: a coalesced + # checkpoint is still acknowledged, but a crew that believed each idle + # cycle added a line would misread its own log's length as its cycle count. + if _cw_resp.get("coalesced"): + _cw_lines = [ + f"Crew-level step for {_cw_owner}/{_cw_repo} folded into the open " + "idle stretch (its ledger line already says the queue was empty, " + "so no duplicate was added -- the existing line's timestamp marks " + "when the stretch began)." + ] + else: + _cw_lines = [ + f"Recorded a crew-level step for {_cw_owner}/{_cw_repo} " + "(no issue -- no work item was written)." + ] if _cw_body.get("event"): # Echo the stored line, not the argument — if a sanitizer pass # changed it, the crew must see what actually became public. diff --git a/src/kiro_crew/validation.py b/src/kiro_crew/validation.py index 24c4b77d339..c9f80db66d8 100644 --- a/src/kiro_crew/validation.py +++ b/src/kiro_crew/validation.py @@ -2035,6 +2035,11 @@ def _validate_omc_api(cleaned: dict[str, Any]) -> None: "handback", "skip", "yield", + # The one crew-level kind: the crew looked at the queue and took nothing. + # It is the only kind valid with NO ``number``, and it is invalid WITH one + # — a relation between two fields, so it is enforced on the write route + # and in the store rather than here. + "sweep", } ) #: Mirrors ``crew_store.SKIP_SCOPES`` — the classification a crew attaches to a @@ -2107,7 +2112,16 @@ def _validate_crew_record_couples_phase_to_an_event(args: dict[str, Any]) -> Non # Bounds the number that becomes the work item's FILENAME # (``crews//.json``) — same ENAMETOOLONG rationale as the # investigation record, hence the same constant. - FieldSpec("number", int, required=True, min_val=1, max_val=_ISSUE_RADAR_MAX_ITEM_NUMBER), + # + # NOT required. A crew that swept its queue and took nothing has no issue + # to name, and requiring one here left it recording the cycle against an + # issue it never acted on. The coupling that replaces the requirement — + # a missing number is valid ONLY with the crew-level ``sweep`` kind, and + # ``sweep`` is valid ONLY without one — is enforced on the write route and + # in the store, because it is a relation between two fields and this + # schema validates them one at a time. Keeping the bound here still + # matters: when a number IS sent it is the filename. + FieldSpec("number", int, min_val=1, max_val=_ISSUE_RADAR_MAX_ITEM_NUMBER), FieldSpec("phase", str, max_len=32, allowed=_ISSUE_RADAR_CREW_PHASES), # Bounded but deliberately NOT ``allowed=``, unlike ``phase`` beside it. # An out-of-vocabulary phase has to be refused — it would corrupt the diff --git a/temp-screenshots/crew-empty-queue/work-log-sweep.png b/temp-screenshots/crew-empty-queue/work-log-sweep.png new file mode 100644 index 0000000000000000000000000000000000000000..353fb037fa4b7728654a8f6b73b873392fa9e935 GIT binary patch literal 262712 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
{D1 zVlcMi6E_vtQ-gQM=P5Qy@H6zZE!LgjbHw0eUL}%<$)1C`$I>kAxj9TtCC(T7vvCM8 zGJZ@?!$2}KWcAePgFZzI6Bs3j-y9#BUQ}qe!=j_rAJZq_BQZ@}Ec;{VEU_4wptHF- z_Y4e0^g0rK{QS1Ch?LLK-GQ`aJ^-3zySsQle1SC>UsCd4Yu@J#!x#8jZiq-_+>e`8 zcKbL>JoAE$hL$33!=1x~b9qmXpQ(2tu;@%Q;HKzZ)KLmwb5d%eO~n?SC`a93UhW&a zlJ`_Mvf|7$hfOOFjBc9NH#w!Bbp_q@;arZIh#rm00?SqRgtJvk;O$Xxp4M3 zz)x{quRFTC_zez=U=*Q)dBSdJL9h>zfK9nJTcj)^g4CISlb=Zn-+iF7W!UQ>P;te_ zei3AACAqbo?PcZV#5ZJ_0}E#4ah-`u zk9}w=&OvKO?}6Hn6b2!G`p-r6lp^u?-QQYGc8S9cyZ9C>N2uSenSnokYb9u5qm?FE z5+rFj0uS|Q?g$r&E(_Zs4ryf$WY-Q25zkI`A_mg7Qbo&*fsh=Y`9WGO%bO1csvh4L z^R;#|ePesABEWsES)?xD79k5oFujrQe5Z4NinWZVtEu-42J^=R`S8P?#s2Zs!@rA?wu#l=MTn=qtEA-2&dwVLWAGk3M9&A^AV>qJS+N*G z{q*y4uoShhSD^LgWoU7y&R5Uj)M0p_I#Ns##E%an5FBoOPGo+8@4#Iq6n%A#q2r%? zBmXp3CgO-t2x8H7{gXTp5&_eb+X+n171^$I1)ZMuvM%E3BGVS00pZ^6APben(}GBS zin5W?%r`P#FD2nb5Z~8Kj4}mh&%PK`m4*?UJj5t*C^n9i2D~;npR(hL#RCad!jh=X z>lL*!f%=h|#g;kHagV>gDZl|J9;Ge-Ev(sDvM%kVG8e~*Ed!q+P+Y4tz~3)^w;}vE zlNwcYx1=C{o-c7`%jpJC?dt04T3k$Pw!S_?fmoKHeD_!CV#E#XSaPWzY1B2F;+EHw zDwTp52j04n~cK`sR6-^v1Ng6{pC5(7(2RCFT;K{Hjfknaxlk|<)7|7UMgxgrP+ zS3IlH-WcK?UCfUPY0!4eQOW-E?{B{q#}uniVR6m$us1_fmZZ&POz5TZG?L27D1#yA zBCG?v!grB?e|*UZ0)s-EZ>fpO`DOqRl7&T7m~HrVNOB7G`l1!L0dmk=TC0u+YxB^| zFz9?**9+$LX0d`ZeO}Q{%O_D{{JiF{#B{Hl`GeL`-L>hDZp-Rilm<#Iw2;iB>(Sht z_c{CSQmTZQgG5c}8IPFhleZ>gWD4qE)Oq_$iDk%e1K`jeAa`+8Fl2V~2ZtMuy=E6R zCoPP3@=q!f0#r&XQwwuT;*7jNayO%ye})<3jILBd1T~1pCSuzetlGQRv7*bIC7Rg~ zx)NW2t~Kc&OEHo;WAg5i$auj&x|G%TnDPafi3{p5^t{_`YcVu=l{kwJ#>B^T%JqQL zDda0Y>&xfz;0w>Ku^bo;Ix4yurn8J|E0@m^gs2Cp8W&K)ZsLt)lES@Bo-7-UOnniedx%r<83f^Agunr>wof%)$m1Mj+ zP5Gt_q-c+yJ&mO1Hs$amdG2Pd_o(#|^3ex_hDlU!shkgmwf-|Nc=J9;CG*#a&DB^nM>Z1KH=C`@U@+(rmlSzM;?{-*SPnsnDT^=5~`g$ zU0s;DktR&Qa1WZvujf{lF4cuZ{so!>)VI$^B0QEajUN%b%TNnstHy>oWYl#GWT~u; z7(jIyTjJsqh6T8g4f`$N=G6tKk-b89QQU&`K8QZ|JX=0#TAW5Tz4DRFI=(-AJBZJ9 zk9cr~keb~H$xT_kj@%LMe-BUr=3T9Y)nVD`(@Wfu;C{|s^8sSu#8U{Ux%MJv!KNds zex7LIKdD_tSD5%ggdDu`Yrh@(tfiyBXBc>l3J)zL6#0+nnb8I zd2orGglJ7tu4kahvGLcNg&B=lO!f9FuKWgE5CShk$KQ3~`DOx$!9j}5_Z7UVo%O3o zqe@3L8+7C1?eyI?N4RS0dCJmHc(p5kAU2h)wE~yGU>$d)>ad<3m zyVMZ(Cjr;PgMYAqG$}amKNY{3?B5lT=i}YQ)oHYrQG>FEKGhPa5I9g~q88QXn4(0V z9oqq|kj7wrQ(j1Iib+4o66#yMSS_rN0Vp95EItKAMn^(W#tncGb$QT}3+>btUJ#mr z-fLt4{pr2^!(cOBP#E3$cgms*OfB?h9s`gT+I4kJU@2Yp**qBU;lt>WunRE0(~N)) zpE3;irDhuEHDY-Yyq2yhc)>M{`fU-3fEZ%J#e8Khnd-i{YLl3Ip!KJW5mG)(328%m z9nGW)rRW{*Xpg}8SZ>0tLjyseFyu^noAD+T)F81B5kfm4Ks->tMe^);*{h4v=K-52)~hPnss@f-KG2;4$8XV zlTA`=v*LRWthpomGX9rTQ?S(ku9$mP9mJnPG4G7xkIbCxy#)ouk3|!2LbD|xm0F)C zT>QPpTNA8$FGr;Ql7j&CcsdmSmGiXHC9Uk*;{D*04bqS25%0%h&iAHep7Y8K3-Prb zy0kNbIWJgW0<`+CKlioZG>*@_s@3jz?Ou=F3Nn&tvoj~mOZKj=UE7K1_(8x=BSxvhpdUJX>Zmmk z(hfjvA1QQUc`a4wwRJ-L0@#3bHgz@YoJVXgIg&TzS@hcq?TH~pA$c2tYf27f* zSp1k{ak&st1`kW}0zP5jo{>v^AJxBG#(cgMNtG77F(kf!-K~{49?iGRu8SJ1MT;yi zh1^d^N#xT@imTE!5%?@#lF6+5`+R3sl*ptaIXQ(o1n3Mc`(QMd!8;! zP;_xlw0$Jj_@meO{L;NNv^ST;t4L~Seu0t}U5S{PiTUGb-h3&D!>P)je;S;zFJXtE49=eiFSnr8zYeQf~^bZw2UI z2~`F`x_HZYXz^cxt$x+yzzpK20)m9=IX)Eujd4~TPKD%9i1)t6sVy9xd6_odGdL!ztRUhQKs+%`-ZFe-*KM!>d#G*Y!XAK7#=crh3h&an5 zTAfJ#i0B5B!@a1bPS(gv8F*vl&L*7$I>(l0GHF2|AU}CZc>KK3{`k2TRO;4w0RGlr zI02p4)6pTmJxC(9T((Sg(w7)w-Ha;k{{W$k5is2Y z1%yo>*!>Aiwcx4~Wovg7%{_;1FSqh)D$+LlrXeB(eek{ncNBH5w5EKTFr~O{B<^*G znvUCa_dk>PA|#vf%7A`g_oBVw2V*}{flBR3Mt|!-a#2{SH!tHHVaNy}cwmlqkKP9g z-R#nd$z6&HPNeDSwS9#9(#b8md@NVYi18 zi&6LA8ZneiQL&C&eWJX+x%6jyP_3Er!l7>Q`?jTEMljj_eK=soPmxE6Hw4=2(7umn zZ><4;wo;p$7dGj(! z#ajD5@2znV?IXN7nbbWqf%ejMaEj5Xak7Y?lsb3dkqSBw@;j<<037wyj|`_c8-fYU z%6UaCz4pL8P`|2~+C}g;Txl^{#aPWPL~0>1%fTg>D0Pv}iqB7W_U#-}nYw`)l;(32Z4TdvVw*57UFYl9U>AVpnnI8Vv zBz|W<09ZKFAya&|_M!e+vc|NS{uhj2EQ?5*O341_K;H%k|2lxV!c2_@nPc_~XjZt* zio{@BB2Is2+^CJq{M0*(QXRN~ecsQyD53NDQAG6S5|b{Du+^Q7E8CQIx8nUXSAb@K zWe(=Y`IP=^JwAIn`#PSs{uBY+LCG0Z8~{K*b;Qz1X4a768R2sl!+HFiLz|7H(7=N& zRa>3*)aPyZs#FOtZ#m!JIL|uVyU6Ebo4@0`KNk^XohhpHD5!M5O)2K(9oXslPGpAH zh6U~xatehPoZwxxcY|WBZvP{*8@@N5?|2)aQ<2 zO&JBZaBS|GkciZvX`~;v`K+v+R`F%KoJu#}y^qK#pwkOvWSAUXh6a867sEuTEfLj3%F;=Q6`+&unK=T>olU$?H&X57y%`E;AwK3#&@|C`)p)vH&Tx-6%N z>o#C65qj?VJC$xYQC!N-sSBE(H+DZyY9SyN0hU%UgfQIbl+}Q&qqUWJ-eQ3!JUcNF z*SC2))I9KCqjJkuDZ4r*v%I?6J+%4P*s!Q5Z}Y%&cz2_kE<@h9IA&NE4z}WEUBbLO zUWQ}}j2-Rrxra5<;0p^1K7IBp=zo0K2S7oV`dv~AE%IB=ab0?5)0;88s!2u0V9C6i zdxYRf3CKbD7L~LjUv$xex@yprvbp3@45f^uhEo~QIYyY6Kx_8TPY167usPt5KBsxZ z^Qe~jk)>wHcDwjp)Dtn9WE=5B$hclq@%5LtU=iR3vaLbfcYq)JKiBt`gSo|#gKJl7 zMh_h~uXok@JuYt6;Zs6MP+mOP3Vwu=x0$+${ii<5qy%cfY_$02t>85vJ|-qCGvFZ@ z5kNJo(67S>1%3zl0(h$wS^lxsGsIR|sI7w%HJ$0d-<4WYg1{xRP-k{@a@>-UTs=iJ z9QhKQSAhWIrCK-#z1NB%Ih{8;1hdA-C#-qN)6P1TdX!Zc%A~ewEy1W zmb|;Ki{aO|nZL1Rw7-rr# zeyO6OtQ5if-h(8TBC(wy} zyRx0ss~c>7Bb;hLFZRm=cB0r#e3zN z%1#k2fMi{8U907Lp6Wz{n5M2nN=$-?AU`+1=(m4v0A724)1I*Aqn=gT)XoPK=#JN5 zat9DL2`cLou@rR^O9MF5-ju@EC{7{&k7j*!J+P_b3m$|8_RBrK9J5jiB%Vi2 z%=(4LU0rO>+`p$mWnAD;`xKWv| zN&B1JpFr^IVV@tQOM|xc+^zGU%jF6)i2-1cZ|*_UW-iYtH^5V9#8m}^h%(USi#I@R zcG1N3l&4O?kPiLGNMl7n@xfG|9`GU;!x>(#QfARDNJ4iL!1=P zA(EnoM8mfy0vW1REZ;k$6Z&4?L9^z^{wsc@@fOrQu{EzzJPG;-3*fsq=bM^BbN130 z^!>mZmTpH(lP$T57PyPavq^c-`y>AIftQ}U$@wE5MMo__d;~p!{awQny|*;U1oWa{ z;e;WSmhru}T0D11u_Q8}usHXY|L1ylbGq<*h!`Wp=~ZX@$7dGQE+m6wGeKD>hb4&6@{@xdg0YwJ|!o!qR% zV_W~;@lF`=zFPzlRfo_mR-32ThV<#7LWy3I_aI?f#z?WByLtX|^@@W9kJ`OVk^#!a zES|G8fLM%&ZlY2R@oa1ufC9)~!unIjXpkTA2vbK}szujhPIbH7o?{3X2x z6<4*na_-K0*;`Wd+`09iYY{#LeCykFG-bJ+H;K(TmmmBn;vHX9_}9w4Q@d0jen)NT zFMonNwfi*YVAd2|HwQDVOBUXp@bBC7ihlz(hjGO@zNYgtR2>#NFL)+Kxiz%l10|*Z z%2Y1(3e=g3K0@javkVWOxBmky+1`x#U*q@g@pE0GcEMvI4{O|LA_xR6ws*ajX{Eh@U|JNjQ zZ!eB^n@!FY5S1)Ji%OZ>JQZ!ObnJTF{6C-Vp9RLu3oU*F!@A53@NZ$*hD4K3cFTNN zV2IaK)H|1m*GH=^I(_`tW4LuS$Lk%z9m09GJUBn1tRbC%S?8s=20A{*?PVg`1u62c z2eL?y2E>s7a1OT24BI8;7mSnRNi@k8h3yW7<&I?Q7V1*n2>uvL1dQ~!nu8jI-jwM6 zH}t(jr}c68tGQ3;>t3}2`6pW8Mwa${a+m=nl)AQjYesnJM*)%79kFpE+Z*o}9);Q) zQD4RueklG;3&|-jC-<0z0}cEP?-Bdd`xF-10nq^BfWTIIuN{NQ!??Q+qt#Fsm#{B2A?UDyT>k1O@3O zA|kzsbOTE7h!8qNK|w%3=`Hl$I})0Rfb?2 z?3q2YX01sulX_*GlrAE`jZ8A0nM~Gop^v{-ADiHK$B>sn18EbPy`kmD7~Dd_R7=Ro zN_t-5PP%|=xY5slq8^Tt?u9X^G0~^<_wmN3)w$fntbh|5}D4IO08~tdhU}*HST3(2j z-{Qg&ZW3~$Y-?MvVwjg3jhEkJZa54sB6P#CIKLzJbC}0)LuQJnAPP{Mm>OdvXuN#c z2)gtrE_iS6Mk8x#bh%4x$3s9Do}*~|>wi}-l_uUiyD@l}9l#m?^)@`QJexXHd4=&K zZuYQ7K>Tdrg)_y< z2AT044ebQXPid<9!!G(|LuVDbAco7AFDH2)f%XN#7@*EznQ!{d)L!US3?gr3HzIdp7@2%PI6oi=mrRm z7sU556RH3s+6+813)cf7F!xB}1h6+aKM2cGGN-@`k0uYMx{N;h_Ke_}|)Bp4Hd9yrh8M8Oxv^R~>qzc_M7dEEud9>QW04ssMR1)HnW(FYHy{kj= z4qi~4OZ{Hm%*@SJAcgXTis=y3vUioRvq|8CPl-RJpNqB4Ty$@uDr_SdEM*1#o&0RN&^kRF0X;m{saN+8Y3f4CnFA)7qz;( zYh3!V5`28z)h{!%%xxyhy#XIvfP8=ibQ1Km06DM=yFa1|^k?VhIF~n8kbt-RL{)Q8 zk&G-T9rRw07ZeoiG}w)m-@nfp;FFj*#TCulK`3|KP6eGzWI-3qGR?=v#wfjDA6D97 zsQzv$DvBft>$076iRnsX>z6NQ@LnXerpQv;W5MvY+s*7DNii`oYF%u$?@y0~>kHY- z8v$xRTjgMyqUR;4K=U#1DkBibW1MHsy18jPUKte?)y(?6qM{N3aY@O^kuM=_)!)pi z^gw!WB%}OP{POejGcy;#eWq$1I_^IP@|)F03p*>Onh&UZ2M1wC0}L|F3g6kkgHE!F z>@W9tg+eI{s;Y|8>To*?9k~KIpAll4bWa|UkQ{g(dK(%h^;wwwcO{9=pKjdwXZN2S z9iXu??9L8?Ei)jk4|rrxfcdas<+6RFqK24ptD*RvBK)`g&mNl&7|b!Ei>=NH*OMM8X7jFDlziong~a}3tUkh%|IJ$*wAAx2|tsx zz@-XI6VFUx+2=Z2c~`7{yMP|PTZMNF6Ml$(L8vE&??uA}?%n$_v9;Q;o!9RNM0&Ob zmNIUNl65D_>t^`SDZLYCzFBQ7t8j9ZhKsoAvTew0k=2~ zKAQJ63H@3eu5-acgag767b7per(thZRdVkgOA|8=%`7qt$IUe0#;FLC+YmID#|oMq z#oxbh7HAVL@DfgVbCA~p=L!x8JE{=zS3gk=N2?7qEuyBqH`Wf|2M6e9*t$&ukC*a} zx?FAo{CJodH*4PTX^Buk*op5EKX5X8k~ymb4m;i_n-FYYDBc&_oJcjLU*p}hZ7kbm z_VU@}i?1(!X~_TI@8TJo#FPZMWQsR7kgo>`Jb54ggGJ*^_MTo)oCcr0!uC(l*;scx zxo~orraCq*mhP(CRhp1sBjdLd7zjCLhUZ=(WgW_g?(SIgiZL}skCeO3HQ<&FX<1Sp zD=4%d;88AwSvY}r@pSMIuGtWerNaL_0RQ>j>tGX)WA;p{UK+?jJq2vTw-`AR?($2d zA+4Mr+pot}?5NsKRyN;H1u}T*{V9ZIA*w=q-M~Nm_kdt@Bq)zOy3Q~eA*@SOz9GRu{DJr%J1JZy~6j>%I5}B8+FJ$I=}&Rh9dlnc+_k@rT_sW6bP*F92NT9dgvatl z!JGVo2L}g<&rvS-rPb`F0G$#gXj}GTl5Uxs(dQx0i7$N(xP6l0P+_ans^i6x#*+Gbe+t6<7wc2j?TzWKGS;+IWKu7{1s z8}&V2*A2Y)8rI3iHPrO=Ypj>-Y9_UwKkpQOI6l+pzp=EvW7=Wgu&%O5#uZg?IG?5p zo+N37kt;ko#HrHK(ss+bz1qDiq%8dUw1zX!f<9oo)7H`(%5lu%?-30Tn~Z4mJnSRk z72h=K3Zh~VeFqQJ>}i#NR`J$uSZ>($29z)f@)@NE;i>Sb6m&kspb$kZ(?eW=Gk3t3dL>VLd7#D zX2&;cyR79@CDtQ=s6?oT@{}uzLR?;fv@3|`%ZTo)BXnz$*U#9QM8e9&0V#@Hr16;%;&uWCN=g}y;Ta+`Z1?b|!6}_MmyYEFD7yGAKqYc)S{6LUk zzB+`Asd{>OH&u~memmOGJ7b?@q}Y27jz2!FA;_7*#(6c*4L9rC9R1u0-Ho8U+AFq+ zY{EWODxq=3W@x)6gop3$xfqsPv)h*!LTg@?0B-+oa?S;b2K>s^y`a3^zW;7{ME59w z=Mwmpbed%Tb#ChWuxVbtTHj*zUM9|I(Bhyy%B*0tszF3QF7h+F{_BYwSwgH@=Ixz& z{E9Ubi2Xi7JjFG3{N~s`&dtt4vV{3l5-h{Bwtp61VwsS2)8N~N@P3JTovV0W?9Q&3 z+qc->YkW?{8rSX{U75oZ!IhkA?NvUy-uZ7X0HwB3Tl-vLQ4~V2!F{%c`F&#nJUA@oXO`sDAAnrlnkeJ-+}#rjTf!LtLB|@^B5gwt5lP8Jd^KR^y;@i! zHQX%lDg=TTUV5=lsM`xUO3Bg4e7X_SDtjH4e(czQUDP*ci#XgL-$Xdb$SjQ83ygcw z(b9G$NCves#4>m$jWJ$DkR`wy-6TBr)f$BP{!K)@A-&|YO2Wv7U>MR>bFx0OWGiI5 zrgrFxm1D^slCrS$;?NwfEzU060{hN`_9Xa;+d6D`OIS!-&^P85`46kP5jnQ%rH4-!6Z*n%@lI1wX2G3lM5J8<*Z`+2D>~z^0R3my1(2 zxE>}g1ohOvNX!BJD7__fVw-j0VPQ%H?z>!d=$3d(30;dTq7x-y&CULYR(YI~t{;ZK zE^@V;XQaFPJRQ&O^`P}q;TlUD%wr8JpBot4FLGo0iesbf)F58c>t+?<>Dfe_Dh(0ex#5z8^Ozp5r=dVS67e5nPhu(-KhHlK2Jm} zKi+$5hQw7VpnJ0(Yd7I4i*y|AU)Y1~Sr6xDJhnB{GMldV`lVJndrvlC8PE(+GJP@^ zO{K}*9ZVpV6sU1tU({_*c#gorwLGqT+e}YQ-I+SxSd3Mht%x?9E_dK3W5CE?mojTn zEUE=Su&ldp;-I;uYME>A{rp-+My{|$k49P1*;!cha+IIo4kWe~_3gLlv%Vj=Eg>Ac zMa;WE*jQsT937?Jklv0KP!8r zmvcGzLA;P{4qyo%{6I`X@gXS4QPo0}fp6e`@t9o|uRe0X>(tVBjLP!aY8-2L+1pa~ z9MKf)5TUMa$gyr72^;fYdpp?AqgVW4Tw{L)6+f0J;jz6pJJ06nicl?>!03RvjY;k4x7+}x`XaxZ78hy9SghgU87J5{77mlF|Rnm z{@;To5h{6(f$bI&g^z2hot8bmh0XCW^ zLDY1m&Se_DTOb7WY?HzCILx&ec>_`y;nbadNIg_Y7!xWrlUCE6+Y+8W#NLnOol z9hT88G9(+!l;gI&matZjJKAww2#oCHWpZ2Y^YinIHt=-AA@`nFFCOK|1~ayud^4*O znS1x{aaS6~!Sz#E-0N?otz{od?WesJ0`MR%%D0T<F{ zA|=kd|HP*(f;OI7H1{=Rp3&({r9`Aji80+F27@7Z90yw$){Tjn#Zs<O(_Y6Cq5kC8 zUpI9Pw|@V=1qYg~Ad>)so+~bhtlZerECmIHKj#IcWZxdX z_0v081V9!$SWyto8JxR3|1vi@GRQoe^Nw_YEVK8CZ|HQ#j~_2~5_Z~#r(Gw3Mpm`U z^i<1{-#5zl-Pf4IgW2+!JPsYqOVY*YpF82dkj_PM>xD%}3xPn@+z8V|CHXpY$^gE; zci&hRw$cB7wxjS1W@L^H1T~cwgj4N;baa)Q{dHWdn$wO!rzd6j!%g=L8 zx6{;gB60)z=sOKvC-;V*_U1U67j`CKtB%l{b-PpBt<1yq#S+chhF*hh>`ApRrhEp< zBbuHtEn*aZZF0czb)Gg}jk*gID=_>$5?v9N(@F4|(GK3aFzk<&LF?;y^76`IgUI-J zYHI57YQ?O z;P+QIxkpS)G8?vsRx?a9z>YZe#Q`-oXdSK*MnZYbwex!#_B0^5rwqLNJD>0KK8^Aj zdFU_b5O6AQ0h(+uKojJnZ`(}Q<8rwQ@ta(P4DQ?7M#jdX)uTorpqYfVO5|x3>|jL0 z2{E2)+pYc70zJ@Li|rbMM-NuDJ$uT%1Hs#{!<^`tu5?Y6*Y7O@icr74udllsSUs=L ziCalf2}~BB1bgftS#R95M-R@v7OSUVbpgi@fow*g*mCGcieJt-f+Lg9Dbt&+s=^6W zFPH^AN0h534p%ygu$T+um3BC6YZ5!+PSHyxrOsIMq_#b1&B4~s_@V|Nd_9jf3~J`{ z{Ju3)cs4zP-1KG|RIldc1x7^JqJ2Fc{=2+l_Gq7+7Q8MU{j}0|Gtivixt1H_r+igN zRdgnzmDy`&GZvo5?#a#p5q9aWT}t%Ae}^M#^DSeldBA6a3nI9+S(3KLZV!Ldw?kH> zq)6Shn=D;OCF40>$TFN@FDl|FO3vy`xF7zWsGTZzNh(grzTWI@hGHBljVylc@nF7A z{cOJ?&+&Q{B*7Rd;sNB%f7VeI)vm4F2-);r*=Bdy9P63`F4Sh?(4oHm^m>JT1AZTz z9<550D*OlsE&48#4npf*UDWH&VhcVH*G*!&)63Fcgh?urKuQY?$d94n$_@J~tClRk ztEw?UW^mQUE;y<|hx{$mj4-5z*y_>XeT|*vcEQqdhSldBR6~-k7R>w%Sgad35bASB zf#7LvtfHeMY>tYVFm|D(iUEM(*!xi7uY~as*RQu1FRA zRiCA7P*;yUW%AJyT$lbo*JZCfBo5Sl>?DRNTD1YSItGH%XKg7yD#=8U=(cpy{yi~7 zL@1UoVy>bqx4Z_yA20(1Rc}Fz?9^Sm9rB8CeSdQcz>Nol-`t*S>9zbG%fme1QvFm8 z(UbcNqw|rS#;Dqr4{qG^<}UMT&GET6^o=LPFVvet+upY8s(<4d6?0iup}HnMzgxTh z`yNE^-u`D%Ze94eBpoTLp0Tg-I{j;$QA?bk($#?&rcs}?*!}MX?)yrX*6$7WPs=DO{2R-~a$ZM@JN z_Q*W$NFBB2TaK=g?Z`WH%Je}ijPh^M!zz{cCpG`5Bi*?0Qy{V3Q%d1%dfJqREd6N| zs}Le5%H_MVsD{&^_)hMKw#1gsGgG2ixMX~Rii_qSQ}f|;0xVgn|A1T|Tk$U1hZi|d z$4`Y%@3ig|cMUtr1YKo=1<9K!qkc}O{wh4?p8v}JER9SL@m|jUHH+q8lpxv;hFB52 z2wjgvw@H^3pn3i%*b!yQ?f~7K7oFdVtgYnE(o?A|HeMZg!}E=OK>2@$6Xzv}5Vs@S$xA3)bq|Gg^_ z(F^z6!SnzhP`2vo%aJ$uOcF$q7f($xoq>|;&`(171}hSt zI1P>cW&CeAl4Yh<*%3%gaEO$m!Jt^i~Nt(Ri`Q-}z$^9uD-b4Rg9~Eno!bq?2U@o%hK1 z=*l<-eEa^*^MVCDyZoz|tH=aP@`OM!a^JhW)3(UpoBy#Zd~lx-e;E8dtO0q6pw?In z;u+(}>1>zj&dQv$zXnAg)>5PKVg)-3g-JlV)K=NH$zcv{&n~|c1=~~lRRCKo{QD0W zd_c^ep0oOF_0bt8kBd(CUqGD-d?GLamLgBpd6Opc-#iWx(G5n2XHrP4>ruWUTQ92+ zwEyU>``|hgpsq;$YY-B(l+U()Qr~giBBm8T^nRj8KjGBK4#lKbkxr{V`?IdD6`a1e zilHI1)us2^Lw%&X{^#S8@Am!QcOWp?ys5@Jd`#4bC!8-2Ww}3r4^!5 zR;^F{+%J9E14BjYyFT2e_cr9OyO~;eK4PtlQ;sak)^)0(LS8AR>``<5^Uao9eO0sP z%XnfRMmxdeWura&!H3uLCro88`$R$l>(4mw{>AD|%vIU}@8olsPg;I_)T>j*et$hq zMy{(qq0=|XEFE+H_+9Sa|Nm8*4~}17U^)>3nB1WQ4Ot<;YEYg*_uFCtR$}4Q$|4El z^U28r)R%5Aaj!xBEh^KgJu^bD;7^8j&w;-;2g*n?c4J2E-sIIsM9821JUb(*b)z!n z6wmzlm|=gdV|J4PPXZ%WWR6!2CMGzrV=?iPmCHL zu-Q3P`TM_sSEQOszG?NI2t#MgIf8754A|Q%r$nyk{b4*Hs<5o(JDV9NV31~g@_;4R ze;D#?fuUX8)xy0uLo1j6ul3B9hSIlvfoJR6vRUub4jy?tQJ^ZC&Ti+AsCG9!$}iJO zwfe5mZ`bhfS;{_<=J7kLy&KZ8iew zSy9(5qTPoE2Hww~U%UQQ%-P2LoP`6yd962KBY0Ud+L?Nt``j2&x9@0&%2KNVh!j(# zo2@2)+>D4C3Q7L?wUKyGQ*%Sn%+!>fl~ujidPyaIvZaBnlM53(USZAtPZIJgE#Lvy z)m4A~+-8e2f)zbdLVZ@CLO|yD;HsN~dkrQ%-NZdQF!zFfT31e1W_qT%N%{^uQkXL44vMq8ZB zv^n=VcqoEZ<;3ScmI=(3E+`V>1e>uv5%UpgA#o%1(*A&9K1(hurC_|WGhsXW$kXIi z+kC`rd}f(>PaFhZc&yh~9m%^jUIZ!9Zy3rkH#M&*DhO{NB$in8oi>*y(sAuP{0SWyxYc@ddw>1RsFDx!k^#;K;Oq;Kc8A zs7kPE#_}E?44}Hp_4dkC^Z^&~jK4jD1+g&IV#||pS>}3uJ*}1c&hN${UEOWa3af?r zwuU^IwEw3Yh}Z3C0At;pk^tIm0cIuN-@S9}k$?yahD3q<_Eqa6o_j^TP=BE**Z;sR ze_m*K2(7VO-)z8vB?f6^iM;{-m;}ds_+0R?P303+MUXnVhuqS0T92L)YM0IecaxkkDpo5byd>ofv}6M(`?PF`HH5=FJq3DyH&U zX2sL&v9YmW{rbMX_0=gxqpFyD-d)BWQDDli>@#j%MSc+3IHcAo=H$AY7Jm6G7JJsI zBHb;bP>+LJ&(N@_{^dX4*u#AMNc*ci zS$WFIBH}c%)xlE}$d}t`_|fGppbQ1brAO|viKKUVcnY<1WsQxDL}43Bp{3bR)~VYE zyb<*)VWdv-+6NmXR*$RBEjEnCc|Ot{Om4sEE*ohvU{p5Bxmj$|Hhb0XODw+HbF@De zuBy%Z3eyMVlh}Jl-)?-$*DXWVr%V}Dl-nDQq!hDElBDV1^5$j`*2p}me!cLT?tSg? zlzzl&N*U1lq{AhUGl_pxX_UR@&nr{Gw(4#Wh(d88KYYb zcF~2L7L&ax{aG&46{|ysn0z{_6qz78%*LcYPi{+SQn4k<>pej zOhUUKw|Ta*Kd0p=K57K;COV#&RXIiI3V8(X}011?Ecs0qEX4NxmicU@2Xy2~2~ z`0=y!&m#a8g!9@V8kKdw8M+)3(As7XEr$b%uK%o9ag*#%;A{zd!vp-?!g(JsC;LDoN>5y~jw4gg}N zg_3&Ifbz!tk;~@PUK7OuzYE^PV(dTkrThSw~J9j{Ez$D?$4UGU_YkV9 z%aG6dHjZL-X#4Y7CqnSqP&{tI;Q)hr)BwkXKXHIm&9snvP@ExR#VmD3k(6oFzdku+ z(J4;xAQqn!vFN?%z5T%E@B?6IIjUER6^)&i|EF4YqZ6~r75a6&!m+gwI__3r+JGmX zpa*SEG3rk$^D6A>jL&O3J6C>QsOE%dunE8dL9`Na+f;!`&80gO6fI=P7LK$Os1H^* z`?u41mWWJ`pJ{614(AS5l(OMAweY7kmZ)=9Zc-Nhl-I+o+S@QqL?>dSEIkLd#$fKAJlzHMu{d+r&8a$eswf`)S#$u%tk26g*+Faa_Uduh zG<4M}%PR%XhZncDv8g3W@e_95KEPzIV!aifS~&5R z%zu>mRSS2_f2zlur`0x;fM)pRd>lNA1bbSd&!|{PZ%@b1`jY5=S{^Epee~$oSwM_# z6nKezvLrqJD)G5xCDgmRb0@x8o9wE1g!yi0tSdK}pp%yfR@IH~=;Xx5vAgb`pkQHX z>1>iN{6A^sTa8~&`Q{W90Z|aCLNVPkt&LY1nVEES&b{2#_5?`-q24@~Bn=f2308qf z8J}<8Ld1n#x88hSsBsS0h^?ro@DB_^7&&WEQdQcIFQNk?6vwJ$nZjbwaYEc29P^Dx z3P~!<;pW)b$vSKLU9vgo&xMZY`=(ymVy%^T^IlT#tD`_a2%VF-bQ7A|O0bT? z-S4ua83FanPvF}-JH?k0fHuXQO8aS~4LXdNB=E$5?-iShxLxWjQ}$vreUiDl%*$iS z*6RdbrlKLoNfl-JYTSNJY$!%s1!cNm>aqWWXTYh|rejfA!eeh^*q$gUT|b!Fqd;|2 z5|eca;IO!sK3(XgE7svwa-akeQX4>5p}jdPg6MhqcAn4q_ZCiyp)Z^CCN~1TFH8@b zAAg}x{=?*#mvvn{^eP)8^@xojcJ?gHrqI{P&%2=zZ;{pf-OJR}HL%sG z3Tq(+S-YuH%Tb_`HK@tWO@2jqxwz>GpXmqDy`5U_*sz2!L_ELiR__|O+XGxa+-!&H z$BZdP_x>;|HY`nZ-Q}%W55C4Dl*uy3GEFuV zXcs~?i5WOb^}|Hk>zQ4x%gNpEkP27cs=12NgD0MY;uluL$}(L8c@2i=6XcEEa7jIM2T z)C_ag%fa_#!L7!d*8NIQV4KfokHLR?WZuu_6?7{BK?d7 zv6)D@Hfh_;`IHd8d1MGY`|D$XYFp53{8k(r4^9%Uuft14O#*SI9TB__#APgi@i4kA|E z!f?`~`&r_9hhtT|&$vAH*Anl~@y;b4gM*H|`sYfetQ7Ua%fYs7FHz{l(PV`S!$a-- zY|X6kk*`qe_gU-};_|t@j7>nNA{M zkmH11NgT#lzO-yvrj(4%fWqo?-i^CanT+y=`Yuzq^)k%(P}}PUV+_`f`(){ zg_@zZtof;wZML<(T*tIjHI5ixUsN) zX&@@g&C9!6THIx}i@9&>EPqgyZJ*>VF1$Z7H_5!-m$nqa84fGR4Biw_=rejOu2yC{ zu7!+AW63fPH2~3G3Otu$c=EpM`9AE-;hYI`Kx!%uSf$891ZsH?>?nPre*ff2-f%o( zcss01IXl-QJZE!omP2zTk$fQ{GO{}f0tBwGEV3aC0#@XlpbMe1h2pADqC#Flo_@Uz zsVQgf9WD@{?9;CwNO~NP!K~qgb@K}#z%le}Go=fva7n7)XzOJ(HM^}q54^9IN1`5r zDPzd4YIx`YZ*nqaprUiK%e#Y#TcD-gJlRyn(mw9Uh=xj8 zE*R8#c&PeqjF#o)59srb2W<0zX_-dC_;IG@O9`*OwSlvih)A_B36%lTi8M&>jI3$) z6?I7O)^XqkN%Sr2IBn=Ft;ayVC9j;7V|9Bjbb9*>I0|@k>uREfMSwihs^tC3Hi>kV z*yRF&64z}XfSvC{dvru~P4TCAfBGC7iwIveJ%uzzZwzKP9^%h_Z8Jn=4RZP#F7tge zs(2uH#9x)>*YxCL`;X4B+vpw$JnIYx)bn05ukg?y^!)#s_8T=62n8fh_fW5o)3dR& zd+5HoY~{Fk(q!%+r=Y~m&27?{Szn(h3J`srdi6%5A&Buh^GAab5mDT_x0d$&C>at5 zA3(#x>yG!gzUoq~Qo>H{>|BU>-l~?)6lOT^;3Uu3JhVr^r^_xrbHL{5j?;4Q40raG z&C|@nY8Whi(!jtEHlj(7$1di&g`~6-OZuU4BTRJA1qQ3Hs;B|?Pe%Uc9NKyn=Giy#vT z#Hu0$7fKbyP!vmPA)Nj0e`)|ukF(Q3!m_N9u{0XAHE|SEj>Q{VCPslMElSU+U6$s)0I3dF6XV-x(18Fx*qJ&scG6 z4O!nno%A8f_pX{~$9;?1(BU)O=Ot3%u&y@mvAf_$!JHVD@a^>6mpRp9y#gl`Y$%`M zc@77!VY!?$-WID_H<*bpSD81v_86TH`0Snpb80rlr&?Si4zCPYx2Yih!!D8a< zK!-a{lVqQMa9{`^*Iib}5TY@)WDwIalY}0k+tBDF0=j5+FF0UKe7-f2po0&8!}%<3(GS4;%wd+w6 zWkD%N?w?)9LP)3>p7z$`Qk%)p6S4%FyGBWpUTD>WYLxlOLit0%`rGEfx zGKhtgvg3}Zezx@qpM)9CQ2)Qwl%XzRJ%E=G|dN=CwnULu=9&(A*P&wJ&+^ zW3#dl&QCzXJ5j=Y&#A1##=;^-bgzeEb-22L4R)sid(;umj))2i>#z4pF{}45jD^7M z8tRFcGeX2ymb>(YhHJX`c0jJf2|kpSMXN5WzAP&eQsK^;VEoQt!oOJyxrLfS`=4 zEb_{8nRn^9CeN?*rmzr}5+!P)?;7f9W=PC2i@$o)PsbG{#LgAWi#FL?(cG*fbRWU2 z2YXU|L%oghhr56efd9o6x7X4ODvOz2S7GcyOIrhBo~=(svW`oJiMF~YL>v_q6m^I= z4&*K`-@`lZY;J_wP4noVRloP*=L=EY|FptCBHfFQfAZ5U|4e>iVWu7T*~uE0rCo0I z9_uE*y@*@Sc%Rfwg7!Oa&}G5KO}222Tk^}J9Qo7;Qv#lNkSa3j+R;y(OIA+|XmVky zNc)9snQac5@;bQ7JMJ&J*~$#R=dxjQka*hm*STP!0|=Yc2Qz#fvWOSi<-L&I@$fpy zBFn7p=ehsp0>D{jZ*LDcUyU`h3E3VT(8B|5o{2JIA$oF&!IuJH7sRk0UZC*#)t7$gyq_{$Q#o!txE zbYz63x2d?n_Q&&ml&qd86bj@F6ciP$JWn1E9H`36D=R4_M`$Q3!yLAy_SSY^0_P-L z2X(j7V+`e#R;YeKw_sxWgIddeyjot8Z(&6-=sAN`$%8?;qp{poE|!d|p@X&^$WKWq zbza_4XZ_Y?SFGQ8TaFw@f33v73Xc@3esY!gW5bRftCPR6zB5`x($of15FHyF98{ygsWfWj85Kv-wyoy!uwi%g0ex<{>2ub5S}Xo z?{6&QTa6sgeY*c$Ss>-kpY_Mxxon?^akbVkS*VqI=;Mirz?-k9K2B+gRbBq$hMBFf zjYGK#pHmVi4vyB3derE2p?^KlJwY-)bs0l7xC=_*Tq~hGXQh5sCIPiqfQ*Xy=fS_; zU@@!B9K}<@Mo`lxbOG`Td3vAZaf;Q(t(&y4=X|VG8?m;JhyN&vgBq?mE-hiWe|PmG z8+7NV^hy`izz3d{AsP4FXd7$fyT9tx6j#7ybd$^wH5R12xOA+WQ^6lNhd1c$#m#^( zXM1{IwRValwSE^QiN2nIVt8ywkJ&xrn?w?&B_j!^Oqfm{=p!~HhW-TY#4tw^*c`V< z$?JKlxzm=8(Ym3JxvO3Mkk20H&JN{z{LgZ+*Wwe6bU<~LmdvV0&5Wr*g@5_)67U?R zl_q}C#HHZ#v(?VW$Sc_!dFC7_q)A*)D}TcO4DkWhc#L&uo;kPhpNl2bpl+sV$RA^V zs@YV?Cx5+;@an^bwWvhHEOi7x0FbYS=~Lv-%g{Hi4KqOhg6TYbc2OLnW_B8SFQ4r0 z(Yst&Fksgg`qNBM)K3k&KOB1a-5PTByXE{RCB{9-9YdAHMst20BmtlJIivzG6aBs1 zvJ0W;6=p_H=uURk{Be%Aov@QU%1T1|k~QrgHl`GsXm56CY{my&WddaU#lUyPmFK&ep#!)qA!H3B*e*uknu?040UrPr2wN zjJUstlOP_}-yshE$WuN1)x8glm}l^FN=PgN>~B+XIB3Pp$D@nv1R-jRFo``_9{(|C z_Rbqy5j(9l?pYJl`9HWvE>c_*FAtTWlrIfReeYp9w(i_#^jY>jS4r~6r!L=9NAhJK zMCA!I6$0&ztAD+Cr)oHF)?_#4M0(GuCJA}*jU5nQr$N#Rq{Qi@J&yV@rTTmPMC!h` zN$I4vTR|wwnyKYfS^MN^!I{FE))jXpRrf>VdN%j}o&HSr2Y~bxM(~6*F_U%cJgYIe zHKhK>9q&m1)xze?>S0#-%Q8>|HkT{~)m*#+P|7WTndxrY9QB>$Lsvnp|53VP3JT0} z@Ueej_Z_+F^ZmM)astN_3jew90nKRgadO32cPdG zVFUo$1^`8Z19yzh@ZX>B^`aiN<}g`AMfUO4sx?q3qp#orY!?~5Xl}Lt+14<%l1J5L&93-!k=N^U2xWfrU${Z zC%dNkpMu5&qys_ivy5-3xehG&&n*hux3^8BxtH>G1rU<)R%! ztv&R=aH((I?$><%Obs${;&Kd$)vo9sYvUO79XWmR@p6=mP5wn|T5b%ktXG-z!hF=* z=s{_m9Cu#vmW${67;-+uW{$>b%CoyIAeJbh+Zbv@s6 z^p4t)yiKL&*no%Sn5Y?m0>kOu`{`gGm8pm+0~93chc{82h3 zDe36kk+HyD#Pw$H{{ogT>bYj5bDV2rAMow|md)QJx+_ng_U)g|{07nT)#wBcvx>6x z+W`(GxA;{ow1*k03l^qY+N=eM?CydhhY)f89u9tGWOu=jdH| za;Y^>ueP*qy@7>Jn=3E_hLw-aKM!q=vf}xHi5$v(j5JNxGvb!>J$-%o>nAEIu75k{ ze1hnwdtNk4?a-Re3xB|8}b2Z~Oyy!BDTTw6s6H{PG;B=Nrl^AEWbKo|+> zkfgR4ZfB}&+;nzOc)RkN5SR0iS&3f3sL1H3t}aDzFz6Y$ChppMyaUcyqt&B1oH@<@ zfd`x8hWh#)V{}jT0%=9={v>f4Nzc$xXlER^x#_N@rKRhpEA2&0Z2Qq0cMSFF8l;(U zYekre5p7g26@o&KrA8(WgHk1r@lC#V51e%C*LFHMzAR+wUwM%a@-!g7WOnM}D6isU zZ>dh_4bi=FjZpEGA5bxu`mK`&-LLOn`a5s*V|{jenD4!M_{iwn{<>JEO5#{xPr2El z04E2>NSQem@r{q)TU#Lq-yCUbu`ThdLxsjS)_%|;6eOR~aIUfk(3w8_a+&N7^rEKw zcu+y-1U_*lG!~jsUg)`epE^{;t-oz|sf)0N>RC<#DWxy7xm;B?Q#(6~ykgM|67KWg z=R&RvSUpox`luoP%yW5f*nn`nsT)VH)FTH$r&EW<3YR3`Ff0I4^XtLGQ`yOR!Uq+2VrBl@m37hO<>{dB!k#Xy!lsP`S0TSq^c1wBoeZP}!I{GTIkwCH^% zJ?s65MD=N^jwW@Rg42;t@ULd*dP5it7AK32cg501YZO~81XepP)j$v`Y%H?DsXqY? zjJ=JGiC+r4R7#(l%0x-vx*APaZVCyR_j6`hBv#mrmcA#WD;-i%uu=fzrR6tJ4RUXcs(heq*_XezX19O79N*(!&JDjZtj_*a84+Fu^gT zi@cXkN*}M#-{$Z)y4cp$m9eL8SVi(E+hw_UrisaG?UF*o7JMI#^4QBA^2`iAENYum zm6UYHa45)m9jqUazxnyu@DsdWo_%zEAGG5S=9k(cB52Ot^5LIrs}tMv6t6%w zlw3S5Azm`5OCO+BWvl#=8Istoppm7tK)5F0ejBIZRg`I7lo$#b^^~f$9_CRmpI=xo zGcgm#{E#+;?+uRI*QI$kj&FXkjR-q+)5^-qd2>oyx9|IRfSnR?KirxTntX)(rm?+tW+Y>^ukCME-jE#+RShUsDieal-SyOrDyz-v}^QXUdzJ;$kf)4LQ zarEt@H^|WLc%jV{5+)S|1yQ_VE2yf9!W3edM4htl-j=55PcsjVx33P^+1sE}7G0Rv zHgvNcD{qKt0J#*Wo{hRQ#06v;2iABjR&BU3AjA8k$FSCwl$ec$ zO>nW1ggIGhd1rxZ>i=WvJ)@f1-mY)EM@3Lk5NUdlCQU#Qq`&vXD`j|)aiYVxLQm~^hcJ_k}l;+hI zw!$?@Wx`zaHM{|TwL;-dU{#;;T6eX)90DkBjpXIt1x8N8nJVo>F%t!m3H z3Pdij{ONE!+Wo1Qk2fik-GRqaXR_@m~(-AA!mm-H4YSXm>CY1{DrulN;jX@%8 zRt5XgF)}ieMRn(6Jtlx`@Ann+bE^6cu!+&Di!Dp*j}+`xVy=k(d*)Bb&kQvo;af4S znZvh)MMSiPnkmzI~^lU)0EM|9e=`d6*zm-!HV zhcFN(3)5mQpq2e*)mN@|A}7#Djp<1zRY&ni8ZmR~kxt#SO4o^PF%V&&sN`3W#j#(Ayg7;)U?XbEM`F8t@b%^~G;(Cl6m_fcx&J5LOa zSU=Yi2DU7HOmAOYvW=`GEOP?m&^f4N+uLx@?ga7G{oqhZ`!hS6?cJ@?#?}`K_WE5@ z&^oaWjxJiBKBNIk~sq$)+aet#P*w1aw00*kwNR_|_ljEB;Z@*iEGH#|NVD%}X)!t*evjXjuEdr})U$63!22ET>9cYP!xQ+3v0#1=XWc)KYq~FqLqfhE~F5wA2zY{-*`)M=BXL6CIN{l_Cve=2uIaKD)ApWRi&@c7FS` z|9oJdX&YYO%CZ{&xH-!tp3~2 z5miWOsI;Xash5;=7M_Is4$Hj|I&|$u7#nl$w?uJEbxl0jS4iQ)!y`GQ?IW5$fXr^a z-$mv$KkIp_E{gZ!xlj z*eWG5YR0SWEX@NR9DSD@y^c0FG_r1Vql0EZ75M7~{HZ3E>*<(^58UUarKGCeu`}~~ znYMXgfeV!gAm{b834UT)d~eT%=8I2EH?uHAgU?%tgGC4!iTu`PdPW_mYTVPmvYI_@ z618D|B)HHPo$ce%bUGI<4B5-Wg=Hy%NPm?6M@W@d{4&PO(C}4F3HDB*WBrEfR>HRi z?Dn=VamK_e|M6v|5*GN+U%!40R}P1qWnRab4fi`%#&nHVG9MlrZ}MX_&xeSq6t;3F zfBEt=?l|iVq&<2;ei;Arm|rSlDptjK%*`6C<@Sg(Yj(JS4UO^5)Nn6u#j+>KpTg#lntY}yt5=KJTz+b-8@9XL8%#z@vQ)zhJ$2dExLce?@at69e ze){m?LucpJJlzx~)9d|y#o2=s6W|N5mNaDI*h%$-=(X|>flKX+Dr zy*lAC^1F54<759X6xUb1hxNC++PEh_#~)!?_p^UTe7I&8KPmqE_kdIO*$%eh&t_&) zyd63<+czbo)zc<)w67@EM1vnev$6x8Ap9m${50sD{vx065JSv1k*O}^#c4Ub!eflo zV4eO_al#r;PsL_7*rW_PfHKT|;N424j!W7WSl0w&8|uiy915>jUZ7`9A#p4>?thuQ z$SJEpi;er5GbJXNx?eg24^+h7)z;F+1#Red=6}cSZ1OQ9Rx-~DfAild(~%TxB%)o= zzH91RA1}9{bW*z6EzA8oK%~E`;SsweJH%_N*3*{2=V8~{d5srCnfr82L`M7Qa7}-h zGhlaVY#QbJ7l|QJe>g~|?OFRbw+5H?0rEgw*zqI$2gdtXdeLC;1>1u>GpJwAg`E({#=nU2^HFWG>*~VFzMZ=st6tL zPa1MiIaoAG4s)b5Qj@Jb1GYXS-Y>N}sBhY$a)P<8ekmcPJ%V!~wJHStvb5=_ZF<5R zJC-y`-WCzhR+3>jnAj}|@*=>OT7d1kFaOBkt6!~YVD}O<_ksQOYkLD7Sn5%2Nm2%w zgE3$*teFYajz%ii8bWYC?7H&68UAJ=G?FNx-A>L;w3Z)K71pH;!+~>Rc+2^Loz4G*kp)_1GxbPeS`jqOCqocYl2KnSHvy}(&^sr_vA%Roa zPY3cwGe+=R1ZIrjWsPJm|MZHvV|Bd zZTs)^g(FgA4Ya}{(I&VfToCzN@G3tT6=>TCNJ-(?K_>9mv(N<;API=UV$15Fy$N<{ zhwj&64;BBDVwb}P4gGl*wgoX!aG`H^Ng$n>ET=O8!D;cC2JaKd`A-!U<*6_YvZd>$ zKl85q-4(^&{ko97ZWnSHR#-2qPi< z=~Z&q9XI;f_o}Dd;qzsJgwg-VG$OY`AmKsd{Hh4yb6=h}J7?8wWELwpljZ+Z;pK_6)6YHixxkuI~}NKRzX&SU#%v)L3mw`nN7 zYSIvt07cerW?e{=78xXM;}8t`j3Vjm{jG3e$8Dyik&Ig)>-s-_mu*okVs-!Bjp1UR zMyYIL7Snat?4*YwXF+8!hx3P$NBbZCL1{!2cQl$Soe%-~p}wo*UnkSf5Y1SzX!-L` zYg{K*kA%4AV+C|Od%B8CzFRcCY@zzBS+4IVT@xNne7*8rSLR}*VT8%bg!~MBpt&)5 z=uP%n0fwXojoe?8l4_o}J{7uArFF4_C(l9?<_Xf2flsNq`qy9_?yfd*%Lg>2E>kI{sPExig1pNx!Hj~<=aP0U|=RWorx@hUUd-OUe-hRuPqyztdhz8rAp1GCw;S1qf# zzQP_W$=lu1eGSX#!n95#HtJc}@J7I4xJH4rW+HT0q!3^wHuPb8QHt)o%7HsZ`YLv} zwdc7NI`kFnuJFHfs#qV#@bQbqQ(Xb>3Y;n9fFqS5`ADA9;4Pf;K$A;L6Tlo4g(W3L z6hDtnKMk9{5Z5wq(h*nSpd#h*^DUf4F&Yz>l}+%%wd(SpN!D`>w4i=w&{?d5$Q&og zWUttmSTNO-e_iOa_TH_cQR+p57IfuOy;g;Fgw3%{?(Q$cnB#uj2PYevvf?|&?dP)X z5*MaSORZS3zfI2}PSr;%ocW6$ikIK3wN-?!`;#N(q))zn?Xa^kmN+=k8<0fV@U*HI zuo?R&Bij-UfP>3%j1!{=gQ@9{zi=+6dr7P;Hu`N z+fKL;<+fxvMi)8*+a?Gi{ntIQ@=F$0NvFwd{gy_0uK|(-!BFlxhyz~3e))us(FYu0 zZnCK`OT!Mdx$O<>O6+3=gz)8O8i0E=`xd;3A2oI_)fIdKEI z1t0fm=PH$*O*PxLPKkd>#H^D94g!FBR4#vJ6CZ4_CD}BtbpPzSE1d4X`4ceMtP~cW zInN|P$UtmZ<#flWx4*P|vNQvyd3k#~W(1;Ge?P2F5RK?&7p zmGwN`sQ25MYGMAf?OR-{-Y*P%Q%k3$i>)WgjNm9=x!f-+>&8!-n9~#nIn(@_13H9- zo%OG;>d2##uvISXyA~DY6;4J58v0WGA-e>J{EUpZ)zU!f<9b%9N#F`z{HkF{@xV@A zvROS=Q3j*9`FUR;V!N0WWclsQjQLQ#_N!oDSBpgFnZ;hNKVrt{7fg>wbT9Z=qk#2t4{^32`SDz3U0(_7%4IV|i&l zJ97DEhG9zb9MsXVvsWi-l%Iqd=`elH;6CWQCQ@K||3SgdV*iKJrQ(pheQQyhhDBhP z=8>_FsAzvWwi5R+OreIOc=|dzn?7x?F>b%P`ACLgKigWxtEUv)cqAtM`Bo zt%I}LH5UBeee?Y>mg^xn^G?0N?-(H7sM7cO7(^h1M7iY~j4s3(2@Z(dZx0y?Ujksm z+@fZ*k4t*Ms=OQY8{~^VZ|wHB8lZW9(iSH#{+WZ@$-bG?@ykBT%#))Rx?Oo;^T$y4niF)?MJP3*7DyEUDiMY$63& z0nA*SNzi_CSX#)-_DD`Y+)2t{Gh$*Xv2mZoF4Gl8?3!P?IsAazjGFC6F0R2ET7qC( z7)l=|{SjZ{QreWKohV+J-E=fx*ppIo|1)i+*u9=EixyyzqdQ6)sW*77AJ#Y%YiYeF z4l*rAmb$@J;Y#28@7luP`pj4~iY~11NxdMBc`KEvohS+isOwbZ@WjLfRMmBRv7`Ig zur3G#41ob{C6zZ`k5)6|yEYdV4e=ceS7i(?(-`6iQW}}v5pr!OI)UoPSo%-0dFhI>x5tRr&`;#^9O{zS6 znbCN_Ruh`hvVM4>uL+EQD{dUzk7hoXeFRsu4{j*>7LCNu9~F{nmlw_a~c1USuchE`iASDfmwE;kEEX(_m2Pi(|Ig>Hnp^Ft$?oGhc$rG(a zy_=Q?T|;M`t`jg`>H@%$ys< zflc&<)`S27Qq@MVq^U@y)6-HL8TrPz2vh&;5XjSSsHZ;5>0r(Va!LtzWDxrj!}5e!-w_T-wW2swTvg`4yB0~Yp^@7AH(wAAP46W)B0(4hK6*H~C> zJJRbF6CjP6DN=d-T+ABtH&(S8wq zdK7qJ9p)d#kIL2vglc4IPO?a{R3<`9h_POywyGoaux>rwKF;t&-0Aq|F1J6cCEnpa zgWl2C@`~W(mhrl3O&o$>RT&SO3pyB<3>l-m?&9taX1MWi zomC$9xK2=IRP>{jS4Zn`Yc4rlnzi$4`%5kV0r@ZUBBkhG^1dp=IXQWol=Hjmm$(&t zGcXg8ax*$kj=O0&Aha9V=de2qXHlrv8Gd)TxS)@NQItOs+P-;nx!ereX>MP=%}mb- z+HBScYF#mFDS!klU4zEpn%sFw=e$?m1}x5LXb0WX%XKlQ!e-ymaKZTEXqAJH#JwTX zA8>ebTb(qOfp%>c2&VfA_d9 zlPD3Kzuyl|&ENGIK?f`|j4ue6)NGN4p%QD0AggIHIjoj@PVb4UY}F{&8ZK^Zf6Ej|Frd;d#LoHflP^L5;h_n68oR+q$8T1 z!mLV0jUz=>0BX=@b@(eAY(G;Y4YJw@+Z$XR5XjA0Eo;|%9bD#`6cpz4b}iM1PovXe zOqCHAT{fpRR}p)3a*01t)N}s_%k{f&*)tKFGqhEUBQVYn`K1f{eGi%(AS!LGusT~l z2xQly-#q~148{W}YDnfskS!G(wp~ouzB_25?Fu+&u^ioab+p5w)6w^0Ymt{$LulXu?(!( zMn5>1jnj;>8yRa7O?M~smz8!kXQH`RqY&-h`F-!+k?sq&)d)Up8mmP1ev%Jd18Bjb ztgQc-|A3H$qADNnKZgL>_#JV|$pk^$m9u9GQB{lMxuLA?o4(&9H)DalcW}zutlu8B z#Bt0fvtk8&AMp1&a$DA0Sh&I_F4?KGl3ZsRl7frU0HfLJ1%sLr^o3&3WA_M>RnaT| z`9BR5k#A@y2bIN9K*r@n7*aFl^NaZUuwU z?GJbc_Eq?CY;GMfa3UhaO#=ZCcgY&yybNd#V7EeGFG5jEd7N%4Brf!^T8~xZgEl^F ze$!kYr@8ShYH(1|_-yU$%9PBrVwMfQ=&$aT6R6(!zFp6`2rLPSI58IUCCQQel+!N|%j`?tund19R?BSa9r%|cs+Th9bkcJ1O9 z?Q_hbszs$D1(}eV_eAccH#Sz2o6XT@pVwaE3mi<6b60^65o+dsv~Ur6FY_(U><_j^ z5h>Gk-Z`L>O}>KCGC^W{-N z!eu`7A3wf;ph3u|^XZLn_)?V_#M>``SJ^`RvPGF!Yl7J1L?P&8s4thQTRi-e9rfbf zL%A6Qeb+3q_GO5zf%8jPd)S>DFmaUR++Tl=y-W!S{Ku4*?+tU${l?YjU(nD!+B8 z(!bx*E{QO&aTD`-C^MfRmJ%P|;R8|0fv{mi`dK1KJ+nNYplVwe%}A&7psgBQ0w_i> zLs!w`B@i2yJ{d9c^DLw3XLs;Z8-j98U1H~Nlr{13tR39BwwI{=P2jdR>k)+%#WbP%76!u>F+~NPF}$t>~Ds z*a1khNsamy&$Ue^pFzaiR3;y`t2-nK#)>#(bo-yL-o47O!P^1didZU$kJV8=5CSQ6 z;9jn!C92>tn}kaDg#2tAPIWUQ(Znh}t=lehVJeOu;`1rkf6O zYuzKyl3K4NC-;AObvK6IybxAzGw1b$eAc^ zxlprXyCj^_$C}=8t1yTG~Rl#C`nKx$|+#Kkhu4{Jgu2$+(cw`TY)hnlPO! zP15~v!{Nh|{L*wSW^RiL3y0gm!7zE-a<2m|N?3mTBYN4_Y;~Z{g`ZY;GB2P(e=gZY zRron4FTfI061&!3CyEWoKk}{3)oUP+ByM}`$1Ubm`flWdMk$0URdHj-h!?i#N$K@4 z7)P5pTAmW(c0Z)B9RTqAHLDXuW{pZs}}NEvxP^fKX+`;K9fo58@?Eon7O z@So0JLSgqhif6Y~KL#rI$nOPhSvMuk=(eZ-LA7g3@fiGh^<%w25FGkbQk$82>}JmW zJG@VnS^76yyWjF0eFLWP^K+D?du8H7iySvbK4i9pvShQKHA?+4I8~Jm>ESwUSbIF* z@!CP@K9B%>BvhhQsQF+(jrorkaY(30u)mp!+eW1aC^X$n*Hfclz0=XjjZc8>0OsaD zj6(44auo<@T%zB9aH=zmnV2@LA}21UDOwowd5>Th=ogP*GIcMh)^^1vSXjJx(YHJ} zunu+cMO&@c1saikII%PPa9=0d^!Ss)!aW|xaflV<8>eF6i}Ony#cW@nU ze4MwxOP2=-K&ijVIWCC!t{1P3$j@!g3EQ5@y&hB_Vcc~MB`=i;IWkv5)G0lIMeA+x zofXjMicd&=UAHye06VI05kF{(Awo$jD-Fdnu0oJYqK69k|DDT~5$2dIZBpWir9O-E z%3_*Ko#JZ@?Xz=qmTAA1-CG>b4NRQ!8*0+Zl?z9e(4OlleGCzbkB~D+_js`fjU{V_L23 zDe1`yKK`sTC;VdgxhUPQ>5$naxc0Q~C{WbCez}C0d%`|w#{jx$FpYcL;~n_ZEmD%Y zi$$S}vvQ-Eo10rO##Ty%;hV1*%-eSyc{0iD1kO{B$xXi(>`vglbq+P(UIr0z%~n^} zqLl%RflgI9*kO$uO(OTLmtv04t-}?pV3rOD@S>-ooZ~zDqeG5Ai)@CR)$iAgC^3mb z`d5122>@k7pv#LtEFBo>!CCmTIIdb^Vt zBgDM&(s5@rJPalHyK4%cA{>TEU#^{pR276CU0L{Dre>(H*c!zVbJ!Q7#V|EY9KPM& z)0PGcSwFwZt(`;q`BzBnuISC7Ie`nlh zr`ai=*y&yE|-=qf$7HMiH@Ekmr& zRDD(nPAth3i|bDdHgdIKgq|T;w)D5>ST7SY)p^5O3B9h`8mBM31yk2wm5D)~ZzAmR z@T(KjMaO~ZpK#S^EH@u~`@Y7os0z8tcRPMjaih}^ z~f`!L{uf@l=*CdajR7~SJ|g(5~^S0hK;jwUI+G6B;x1;8*c6BEJ@XM@nxJOa4gdz za9^PR%F;0wqQ`qmSg(oV4B$uMUi~#LC-g&^pLu2b>{gp-U7nwpF-b)J8(qpVAa{UD z@Z~fz$_{%(Cf9 z8dJ^tKBh^{uZ0j_sb^>;hGSPG;-LP0Oy<=Hj&Jk8kX0Ll{@pGgeArp|MilMx8*Y0r zxD?bs3W$thcQDJqbY?2?!}49pA5hjX4I#9YLbbUmrnZln}SVMlqbR`sLh~0g?d8x^z{4f-)9z@Bl87ieO?tY&hE_xDU zcmjI^meT11)-ues@rSR4^}OHB9@Y{1Gu4D*GS3Jb36z5PdGh4Q(`R|>xWU0ewlREc zw5m^Uz%R*|e_yKv1K-kn1KzusN4PvdcLF|IfcHXBI~+vEyVF$}pxJ9)E}dD`iib}h zWn>fler5SS9D>RIYLeZ}7J=8b?h4wR8V<@fUKy(!}G?XSw%t=t7N z)^CPBOJ`A!yy3IzwCy@snO)oS0dXrxtTc+j|7%=s6lJ zEBt*_qOorI-VR#N8g(|UL$4sz=UI(Sxo-One&@P{YDHidV52U`sqw(pJ&*KNnl^!` zD+?skfj4ZstcpIwo#_kZyMlI)(t{2Q*l;TemhMU5(gaEX!2aYX-6sEX;EtDnp}Uc; zj7zXM2I}+5LuiU@wdk-zsc5f>95xXD#oZMaW zXLHS+? z>5dnB!yViYTv*7Ndp@=E!|=j?kjN{gOh zq@Yg38u)9Ei3}z}r^p|9P#?{&Qjau1y| z0AJFA#wcz}r16iZTTe1K)K#5{(e~f-4hQXazmG^@_OGPRVBv1O)`5HdNxS*(O_&D% zRCi6b2JRcv3t$7DQMzBbka~R@38!_X$5nra$rsxTHJ(A6O937ZjEM2WDg;DFnC3Cg zv(e%U(!rN>4k~IAo0!;j?4RRl_0Z*-O+d?0EVT$@{&2&tbUyD<(hwLX>Y9w-O*tWY zoC8+JhKGks0>{uN&vs=?g5K2ZvAc1e;C`}8AQCvZ(mp(M2=x&-$od@hKAk4I`bKtC z=ozz}EJ4pp(@B^Yt*2@`%#oMgovXd85!J6xBloE$CL~mYvK184AKm)zSFn8E0+7R; zls*=f&3@;T(pvRuh0vvVvu%GDV}3RM`t89jX%^}6vOpTYg^Sl zv&k?^+<$-nmUK^N#XA?P9udMep*x)5uGCK`={jGc#D_0hkkXg`H|C%*jRBe&#B`jH}4$f;kCyJ z5{cF=v|W;Z;#E+XMKoLV#&=rp%rwG0S>`{G+2wh&+?Xh*it_tMd7?Pw5;(H;G+lGA zi)g#%yU&sZQv<2Oz3=SxdX-65dEGLV#xm#5)R=kuEo5P)-@ZF}(u(&#h1;B?UF7fS z-bDHA_9*)~J7Db3=ayf+i~cyQ1l`VwJ+NDX$#j1x(-RQ`@CdiR0>{$y)Qk}4CGM_`BpHW z^U7u>JkE(Xp|*FCjORrReoaRrgUhA5a&J(HnLD zIsZ7X`|={x^`BAZi^MIiLGO(JJGPSwhO+U1{S6fMRh`*$E7(6H0&Qlza5ByX_?=&%M zv@3~69uau-0q??-McUF;91Ku%n)X$gC5u78r-OKo7M{5WVrb}X zP4yXr_;m_zcg)jB!5OS!v|mAa0(u}QlpefC0OeZp*8)4i)7=7XaK45DP|F7YGW!#? z*IgpWxo22zbhjQh1fl+TOMd<3e&H%!>FG%rKQjsct;CZsxvX3cEp~N$QT8z;ke}IE zipe^&Ghr}y-8ykGU0zaJe&BlquS5WTD$4q52`H3ic=mpQtx!}dD85xXk`MigR+A}@UN8HhN!xe(W>9~%=cjMk09t$oSAt`T%1_e z&eKRPQIxU%Z+be_Hd=9XD5LIJrub5I@l<|2?N2rf%Hf{hGwLqMZ^^{W;I7Z=z1^gQ zu>(*@ZtcA>BB{%pK6+SEPgtH9~sKK)ZfXIb7djDVi z7kyDg4*c9*tjWdACUblycbNR=e`yirVS` z4qD?r{v$I;xup$IXuMaEU0w45E!P`k%rw4D$9AD^A?$~72+OWnp5QYFSTsU*6smUs})+4h^ z$pkfAANRRpOb{(a*f}uJphDP$ykG1w6 zIGxNHTv^bk2$`u?^u1oS+eE^^$R@4v?Toekg{VZMGEj?xD_y^iZ6f@nsRRJBB`kZ z|AkdwfdCQYA`KI6YvPYnXlzi=ZD1TTc%XcGRpMR~MkX|nbr_XjSV#loow;%L_7XrU zC?uU_=t36$P=kL--+TY2Qu+bM?83cWPNnC1!X-9UT7GljA$qB0O*b?Emzb4bQi@x{ zgj0|DgdqcGXj|uYP+_3yZ!_R(Xfr{0NAUK6yNQ8(2zrY@ag{ znVP(=av6jR1qOMeasKp+oh{}6%=ukRulT1D7FK&TciR);Nyp6FyEmJpxU8nm4YEg5I^2oxLkAn(KJc|8{>NUpn%%_>?^nWwDG9D( zg;0(KiSwc=)k|4j+gcjFcjccUUaHJCmQU6YtSnxSWa859_zo~%a zw`}eJ9GL-t$ds(8)|S~w-UKn5qs4`|&cnr_=!4o{*9+svazt$^_m>!$BAX-NxB|>S zZQ6&KKoF7y6`I)~OarI=S6O)v&9CBYoT0X{!tKD2hOO6@LGkOg3sKlA?Y-)!Pd}pE z7QrWV+4>>LAklq%^W|_RaOOdr3R)V3W%%oUsGZGYN)6gDNfbU(5TZJtG<8!AVl4dm z%159O5u^s)dL-4Sasm|4=`Jg(9_Heq|R1+L_F$88V!Xi&X>4&S~EhC3)f z#Af2t;d5mu9+dlUTYV+1i4MSwS~1lyH5F*$hJjpE*)dc5fnTjLx3??-zp~ap#=tDn zFc;dFXI+0!K@fB&J|cGl)BPE&QRbW7!7c^>m)eGSb%kw1E9riu3G$zo=;VqV{$WT0 z=zlD-sY<@$JZ9y$+drqqa*Y?1W|NBLu%@Oq%R@6votZ1#3Udv#Ud1sh*hT)A1W{uv ztDw!<i?yo1dRK-Hh{Ue+;; z2f>@$Rxqs0j+wD>WdNDYSjw80M_`whW<1~pF6@LJzZUEQz!|n zV$eqX80a8|jm@RFW8|qT*(*Yg^r$I7xZhdoTC&)GmaQ>FfFEpM3pwM|9z2jF4NRGa zdt=sq8y$k_zpWo1Oy7}_k&#fMxKj>tvm*rh48lk#ej%02hkMr|4W`$5ouBCD*HHUc zN|}~=J$r=>Y7Yjs?L?lB3#&ZWai|2wP6Osg*n`Z^DI^U2Xdzl93jJs&^i24HiOkcw zF8J9sV5L#K_B&Ug<47^cs(}@))(~j4(T~vtyR(DG2ILjQRIDQ>p_M=5}(FIjpeWDC2`?a=7YG~Zw?~YZsc&o))bc8eg5R?-f|3`^1I{V znl4uVpAw!{zH4$Ar<{fG8v8XaR{sm?(Rnuh-19Qm(@P2kpYJ1@gRrOB#I1hD0;`te zML7(0+lBf>36zL~Or#DX$3X5Vn?;qnpRMoKaG=iD(GPH3K>wO8a6szl>MAckKj>|r zOjvF+uk;uIdv6%1HQ(j!Zz`3_iSzm|PT+4vUo8oFV^w-OU@DC=?I&lA0o53LZsh|x zm>wh+hKKr45Ixe_H|PG)P7zUrx7WM=SY)CV3H)D$o%52EMd@hIU=d)XuEK-_XG8d(wLGrwL4){ThF(F+F2+! z1Lad*`yIO&z9H*2{qt}ML?f+K2svQXsx~XNIXHdLaN>`B#lY81U_UC`G&D8!ZSj$_ z@*nuH&>o$;9zGeb#R~GKu?+;;t1QPh6J4kr1xlY};gSApZX~T{b_NuX<8eoF0IHbw?M4ez~;ZdrE z5~NlQT zd+?!p(Z!Q%fQ1;1VTx>e?XREFeUEC^2+f4+s|C0bWbF3oS(N){xhB^#Me zT;~<}-D(kxG~Xtaw)SdBCfMUA8bg*2>h`%R8_fTCV&muA z`+jcw8UrighAZnE;J-d82&A3!Li@XL{i!tAL(bDRCOZj#v^(J!jN zER3RyCL10k`;X+U3gTw6ZH~5$Dx$ghAf2T%R`lPNux}1}3Jur~f*tHpI34jLd*^U! z=2{F!`pVOZ3kH8{eJ~7dN*P$d~@dC`;z>f;t{c&JcyfOoJAMBNh z`u_}vEh1451%;DP#=GLtJq00{f#fH}?oEHl^Bb}_o^#yBRswU6ij_a#r=+R(Ht_e-BKEwt-dt(rk# z2%+M1snOA4w+VEsvOc%fiVMGkO-04Rm3czgH+_w*PM6Xh!cdA^AYI>wHBoODdL4AM z{`*~w{at|2y1}>fbp4)&p8#TW>6qr@hsJ{MBROTOYdr$h1Ksq*;S#B1KENlnWbTmO z2n-#d6ZQ#3Sh7qK`c)HmGd*}hSKBnys{O|sy#41VuVea+e!ZxXH35lPg}@LG3mgw-zP&jPMert_CG*XLfaJmy5U-IwsO+TK~`4%K5d){c@A6K=zG-JnSsBgN-Oq%-gJBNbkfEv zWMgs5&gmuXQCU)6L(w-r^_-sP&-d_L?L{}wc|HmnYW{+B78a%)IM-tyI?Di;;o>mc znt9ZX$4J8$9anJa?bUCv_8yw)_Sh{L{F~v8<;IY!3d};+&An<)T;PYs*ZF@s$M;Dq<9JagH8M}s3X?9>J;RD#$V{hJ3Vv7s}Z7L>a`2Ac}*>qhp+?Yiup108^2=M_|tx|poF(Uvv2^L_nn z7RMS41O?TScttJEigjKJ@V*3|1=(7YAKXGt(~V6f@De2%B|B}iIz9fT7bYVIg0hCl z62HXXz-Rc}!mY2Pa!|F<*_D?bG&>(#5m|Jyv32{RNl2hTu7D+^p^%lGk!npniav^C z@t-d){YPl{|iqs)dGUe3)oM06=#((-`pg`Mm?!ql9J!J_>abToNGgDc=v%{R!>ONH~t{?+sK-2;}0 z=l&$F|BtS>4v2F3;>K0P0!5{yRXUZH7Le}F1*IE77Gx<2>5wkzTDofyFbL^ImM*2) zrMvl!_g=r3`@ZjQ|A9ZA=b4!^XU?2CbI#|J-~-%MfZ|O%;h8Qv2u1S?Eum{nA))R< zbeuVB>X$a;Z5ts`Cw%fug{!?^yJN|A!ajW5X0e^n%wlvb$d9JRfm7NjF zlo?Q4ZfCuVRl1VIQ5zbS*Zts$7s6}cPCS?O-7YacaO*9yfiB_JTcUnuP~UHMZY_G~ zB|KqGgWox-HSru&F1?ZKVoH7!a$Szh^P|evPwR$L_!qA4864x{rR(mi+aBZl7D6(N z>+%A2<90fEZ#ID!+$+zZ1%m=8sp08v9=Z+afhbRaVnnVdcKU2sPjs=2OFpC zd+(O3?3{y9aYi`=Yu-_kYfN`vFj?DZaMzvxjbJ9<0?GvYK=^va`M5Wwp`f6kh)B*; zRJf0S5QRbtNvkD(dsovjuchxfb-2i3N>`qli50Wa*=v_Nu~MyNaJ<=G!(js-3uTd z@nXGN5I^T{1;xpSZx+1{eg&NIF=E}-KRaAZ1Dhmp{zaGz`K|*pu4bF%3Q!nk1(G$3 zihp&#MIZa2m(SWFcTaH{BuyEZ#6{oHwA}nuasR>MRM+$ke4^LkSNM#+jZS z9@ox*;F#gek&?wTk{Qi*Jd^_O+I3Qv#`@|^I&~4}noCtzbINCoSIgNYDV~lK;OWOU zds?sNLZHbt!jjs*{8@^WbTorQ&x1OgGF@CeOI?2o`SRPZKTvoNN2-3}cRD$F z&E7cnymmKa4Do#_DCh1nDfXr5j3?SM^~IT;W>P^67Cv|UgRRCh9FrZz@BEpZ8$97m z(lY9|L|c{H0PrLUGO>g*b%c}^n%>mPBF%qa=i#LSOg0+PHupl#=;I~g{uCgY^%L_0BeUmt1~&UT#69}Q%U<1Akld`7ER)Lt8mP9v0%ge=zG|F!HSY)g}!glO>zGGY~$0K96%3~IteI%LRWMEZr zqmAtk;^19a9epl*?>=V<))pTg zhzD6rf^?@$TN|NGgjTdJwlsrd^bcoKkm zI`J}~BKQ>~Vc(Q!t2SJ9;j0Oh#Q+f$%vpp93v9aw06gXXSzF+#&pQ^49EozLx$G$t z&xw6X-GU@$g;Q-Mh6OJS^W7nU!u&1OT_;f~^Lt2uXy~zr%MI9lb)0&#F1AHQB_y8n z;lLYESFhoB>TcnhUOV9$4`=(rd4U=B#qErJT+>JWtHR4*J9C1@nlrq~kF>!cF8v29 zm-}G$I@1dS;+8Tre`(3iW|2TLTR z!O!jjVvrW2XD7Uk7&`ku%LzR9R0#Cqc6F)6Gb48Lv*amgbnS(=fz-5edC!#%-6g1V za31ylB0&@VAKd8x%+lag9GiklDQNi^aN+K^2B<$R`UY?w|Bs%!@8HI|4<+7onib9{ zq6O&Hl4;7*&_~?}wF}(=yy{5>eG8;AoIrZhS~1mgB%NQE@X-xy?{!?5F7_Tv|KwUq<_l6?`;2#%b7>0)TFceg18#3Wu2Si>=9YqVUy7{{33u zHKxKYovV>FUmi1rr^Q^3c@gp>_?6u}sl3lR8u@qT{2f1kc2uT*Jn@zg`?+cGn0 z_=DICJJvTr)N+37^#4Bdj=_7_&k^viLMp!VNi~v!oxngLCxXAPm^>XjWBH`uj;${U!bR(UPr-BhERq+NX@V-FTC*4=LG2mxTcgRLe;Rc z-;mvcfM9siNbADlddKitst>8$;tfm?J&`Y_($aHM`oDnC5H2_W0uPa%`JSA3$8+!_^oT1Fy`lsq)hsM^yJ}l9*=Pcs%=tI^3c-J(bP5(~jUDg`~qjS5B0$77U zeE~2s0x?45E_OQbUy^L>QNWP$M_&1hd82WF4;|53a&Z(Y?+Q3#TsJT%w6i#3^I6>) z0E+&9XhN_#+$Bx<9Pld5so0O=aS4`(05I_X&`?`sk8*M)2m|(VvTC>fZ}%DiB=~;` znVi>G(}Y#bkspanbCqD2Nc9$icI^I>E3Q5ord+SSJZDL zH%98JR6YIk0{AQMFHIs$`<@nV799~vW%2B9VJ@x3E_a9zKAc zpj_YKjZqsOq8B2{8G~pr1g^Sr@p}heG|3-v36)7M$hSLyfuTd$jato$MnV*|dsD;B zx~9l29J>_u;Z(>syOzHXnckMk0FRYS7L=c|D(Co5-v*iTifw|;8Ro0&0&+it&G<|3 z>Fy)jQ9SjnpVvw2*7`XK*x#t3$ga(U+d|MYOlk$W5yWPN zc}$D98&$04(p^3un0UXC(3Rb-I7%lXNW$UbH|~|QJAj<0!oq49N0RK2>lSJfG;g*+ znX(xI-TeX<=q_Cijr0kCbubKIOAsd+iy{YTCF051)n@44)2QfFG4n-1_g^(yK(Uy#ycg-~uDcJ@)TO5%9(^q5%bd|^Hz zI)>T#YUA{3+ow<>$-f$!@-c@K2v6pisr^7fd6=UrO$(mYAwH|GOB9;NcQVOYv_{`o z`=2`ozE1~A)lqR;aU-kFDg+-r(}^g_Hs^6m4f9Bxqj9guR>QlYpSo}P*g#qi& zh%a4ws82&jL*GWPQdVlgJ1;&DQ_kUvIri%;4|$UJ^UJi_jmUNL*U(-4jk9H+h7tfz z2m%i}<3F$`Z)qNuWtwwwp{SnKMKE%90S_gg}7(!xV4U~G|C%TwE>e5iI+Cay~yaxN+EJ==+La%?5 zM`R|R@>Azvp5&8jXL6V|734auH$iyxjBVs?8mfxwMy{IT3jHgMOJDq=6dfFHu8x_i z(8WZl90xmVsmBYri^WDs$CJvqh#<{U4$}kLKosCNRY?$^2j?JRq&#wfLf}y*VwURB zKy~nB|!jAMo?SJvYnr8aWO4ii$$X0HZPMSxPwQE z%FG~B?t5FEjtwRuAz`(;MVk&cfvMT5l5-ZgCGqcadFQ45!dlGzagHchG7|kpmE$06 zgBMFUy5bxnSQz%Q{5$mwqo%vyykP7MIa9lHNdlW)0pD(J0JZa5fB&)gO2R7Vj;S4z z`6K04Ar#wjknEO9LQ+yc8~3E^cfgW4#ETlUaS9w`(38EW{S$X%Hrq2_X2hLQ5tG@M zYo|oS#l^?OQAI6c-LDJE`iyxlVQNw-*qh?!k7zK-9JJl86tH4?+z+!_bry)2zhWX_ zKTm3qN}of`!Tw0*EJW!(>*EWW``KlMM-OVN0aehjwXN=<3nCI8(u+wd6a`rCjKT@o z0tGCq&Qna)ADla$G&1t|QYL9{;&Mk)!Ec_3H?l47;1L3ok-1gG@PtT%GUuGWg}$x5 zP0!efA<{lJ`iS76&;@0#8nM}v)bpLRvo7NvBPFx4w#J|f2qWZ1uc5>a84T_fbW=Q8 z%obb0C%rY@C%wE@9$Vc(s?@BfqCqtlBbDd=3DOZ=kxNUGv$|Y*+m5QrqCXRmd9&*N z`%jymLQ1ZQ`2-e9=dx_@dkj$yVN%>2pKt@BjZ?K4ag7s&*wmin!Q25J+JRq^f>!ke z_2_CN-ziP+%!V4VNt?l2ohc|6xYA;=SdIw$I5l(BK(2CPnE5gOM&24j-*(BH zgT&D~wu)S|h;dhgkX&Q7xYj9u!V6;U0ZP*?_f5wsH67KGYlO+Q*&xeof0#F`q+|fM zv_w9oainoq}WXuG#5CEZ~#~)6}iO?FnOC z=X{rLlLl*_o%v1ebEelFGW2d^%M`oWHfA9S`WJghJh{6hJWlv zjqb1_Ctx`#-c~Y~CQh`7?@RHUWtcDTj2|$cY#+%|g3IndAT#{YoN!)oRm&xU)dxAl zA!!69V}&j0s{8=Vm(_73%I?TSbnpF$Qy4`{;5U3Xd+a4)JN7CIJu8wO&5SGwj919C z@+@qr#C>dRm(qy3{G}0vt%MW#gn=ccv0?D8^aByfaYSH2Im4+nerMLgU^; zWU`SGB7&VW9rTxl@hX^SBnY56-ic}N*$sttkqzfOTw>{lEg1no>6FU&F?c|rJ3~e8 zn>5MIDw>_=PASJ}Na{jkoagq*>@}B+$Pekl92EU2uTbcHenN2?zkx=3+#_!+-rMv* zQ5?5uxRgesjy#$84TUWbA8mKw+qg+KbhZI6EX+?ugJCK)E`4jDIk9Y~ViE?=dKis-9or;F3##(1H-6^3&GM7C? z7nx4#H>G(Wcms|ZkPi>r!-X~*cIqveY2$ALvjD5Yj9i(5{%w|qhKZUp%m&J_#qy-I zitNV2r*uW~<+|c;`A?CaJa_FedjM?`3R^<2miC)!d{L?IAaprbUgxKG0*9pmq2gv2 z$Y~O?5tA8koO8u#peX3j_*x_3^8e5GS*m0jt36fY}<`p%ZC5Df@4rP7!KuXx?pH`?^ z*?lR?{xs0$E|Dz6E|D@OxsEVw`q(Ws**;8srT_hF%vnpxSvFhnb$jGH5ZMiH=pz$mIKV zln{rVl6uz~0}OIpwF{R4nNf>Pp?8Tt+#FXv#oMd z{aW0eA&TP-mTMHSgk9wBYdyI%(D~s5d)UU!SS|hpMB{C=*o~ccYv$#vhHt?YRhi5x;44uYMGFgb8 zZ@yjF(n-S#gjcD^t|vdlZr?y~l6zN!*Q@&zx-H&sD#__z|G}aMIdepgpr33`wO=|K z7Q+l~2hFYji3KzsS|%Cp{{*c~)_K8y7Oo|iGHjz6#t6p0WjDY8p(SnpP;?Am0rBZB z+3gxCcyqZ44D!8ixg}}Mo8juCI2Q#1jHst+OJEjFII5vgZ|Tcme^Mj##PNB=eTrfo zy^q`Cd9zm6*^N?0hR@P(?%ZuM#)J=UCpQf9z=kJ{!d-++*!%8FhOO0joS;tKuxWX+ zYnPbEVorBNh5&GqzxEWk?l{GzF)MI;_$4@JX~_4aGw`0240*nbIZ`|~i`%U$T`D$w zsED=qFk`@>+V?@ZBCz>*zXWR5v?2CO28BzI;r(_SQS*!+61ArC#n-z;P|aF*eHNLm zwA{t8g1CjV?NYNJbDD$T^Xc{}uII`c$r!>Iijm=M0=YsL~yT?;F0e2n+L&$yVE z$Wl23oK>aC71NL}TP3H4?~P+2Jwmau5CJ0xQETNtzt{u)!?&_=rAExD#N#eSy)keD zJTl+X)NkdNTEIcj2plhG_5l!}`~LAGTY3BUX-tM+9r|6D(RK4;m}zO+U{5Yb%9ePO}eK->oS`vX9mms`)MSvz4H7WfD9jS|7Wif8hl`b9u|Km}o zf)zM!7eZ;rh5i!JgT_bu_F~w-!EyXSr2X7!A$J_QOBCm{eae;0c2ERNWXC(Uwe)lCDmS44?^cCsG$ zpq#`=>6X*dLVwS2%@9U)hkHzn{1^AH=`D+)WkdezuqkM5!Yo9JJUe0Wx%k>^^xAcF z$s0gphM3jHDJW_Ah0+V3FIB5FG*??Gq?}7|t-JnJ%qya`$YJ~hwGg4h{G;aw2Nq}` za`3N%!aZsp@f8{GJClNl!?7V4B)CaZFOd2Z9ZM3_9Gc-)oaq7~>v}Sl*(+99o1$%# zBqUS#R`-Vp3 zvPSOw*Zr^2sQ%LV=xS!bBOY)evdVt`$=|6|I3v~R+^AYFhknx7#$D!oM)|<8lVnf& z$Qw2wPSrKNxd8|#Y6^JmSwU=g+Q6G*nqYLbr`W3$ivs4i3)guA?EF*cU&cS9Rt(}( zQVJ9?LUK~S_~jL$s`4kP8U2);vxrHm$!6`Rzn#S=%al0&PHs1x8YU&%Q^Ry+EMr-s zUrqNR(NQI(7EhsJc=`7Qc3y&wJ2vBf^Lob5z~tWMNE9^znU3mYCt`9lBxg{AopX!d zdntVN#$-0a881nJ_nZ`LNVmX#3mZp)4X{>0=xu2zW_$^mtjoESi}|%>du=j-t!fUx z^JaN(rFZzQjX3`_-PzLRMxT2kAk5rep8I1EI2FDnb62rNweTYG7)9J(sA~=NB$pKL zs~ZH=V;ols^yUR9W!Z>;zpl2m!-imJX>Dn3qth^%jr~{=ph!?l9{y?$%mnW=q)M8swuz)UEEdO9i27VOvS9N3uU`P z0NdBUl7Ez0UhaKg8E8XHXlF;KT%g?DtFC7DD#~c_#H_9IeA|LZ+}t%?7ZM%F2AnLY z(aoPU@rkf_e@$Hq*ZD3Z7R$`csm^GexOIKBaAWyt_)x%R@4VY?} z8NSQ*)wH$T$k@c&U0EN^TsOZ8?MMf=LR9WztVD8lnwP7&0oItt{KdfAMpR5p+}-$> zm7{wUBh;g-vJ0|`Axvi(@+R_qN(0f9;QS#vAcV5d9ISG-s^r`v=cLn!yEuZciW(X^ z9^xr0R7r_h>H-B;e6gc;J14wC%fiQwk_~HXB&2uJka0W8)#TLt?Q03*GQIw}Ik|bc z*`qdLwDYaC^Sn=N2Q8jq*@feLzpE73)>%j*O zJaCzhK&>2;{N@~CZFoOM%Sg>i&Bs^W)Kv4SBIaL(y>!>|hbo7Wkr6W!$p4n5ky2oA zxih$V)7H8eB!Pmgw}p(PiXKc1UyUw^(K_ldq?O?OJCJvQ-_$f@f;xOw-gi_PB$fzg zI1>Y}2-@)iQ9cq4qSM^<6lrgQJ8G^twy9etW`%v~{aUoG?TiCuV4>yX78cH^DakEq z^1slZmsc1X%*(ZniprxV4fM3=Z#^!3A2UZl+;^?hAX9L=O^EAs@cq&-<8Yo06>q%! z7hgBCY$qbKNhpcc%I0QJ)oWV__eJBxg+g`axNUCUl>O1SkY#8NhcbpDP*H2&gM;}8 zBP~*jTVC|vCnhtml>>JU7j)**0CEIeU>A;zJmZUQeIYPkakanKS`ac8xFq)OH|?lr z3HxNXXUe^uo6xpRhfSxK++0H)QWw$)F42kov@C2nc#)?B{~UT80461c(&v|>;ql}d!l`tzVJ>YTi!xHwj|rZr1+3j69O#prx1CXzJ6sVugG z^uNd|MZ?9>%_NFK+U2?#npN8H>QS4E{f~ZC$=IPBA`xXRrZJV|6J*qp#a0c!&PznS z-eozanK}@p^P9mj{o|IFdF*m4rz~+W*1@ z^T3zr49&tpwm!N(!2`c*aJe(I*v9T>qkh9?#UWj2m{Ixn*o^?o~X% zeTvRZU!Nsmf!t88y`G!gxj#UFpvfn!Z@GAb6rCyWMy*RD^*(nd!m^eGT+a@#l0tU$ z;+>$3Gzb&r0CRYr=KZVl%71n1z-w>qN|~)S4%S9BMXo zME;cr(+RcV8NPs;Fh^nR`M^`ok#%WV^42)p(QbVd zwSz(Jb)rgVJ9KLm;hBW9x9T_dROw?9iFv2&LjMhaOQl;D9CzTNuuNHtuQL@Emo2_k z1BBM;iVU2}<^#Pm-Jj}y)hJ&5vv@vVegMB-@Kl9f{gtHtz%>WvT3Txh=edhdoLO>N zy;m1f4h!Yauq7T&2-T})9ptP!L=ic-*8oD%vBiFhapZcv7Ai%1%b#GP+Jo zQoo<2#7<{IdR=9iQD#vsM$K}8%NjeSnQG}I)u{M8~rc*{qj6U zzfXBKtF6{i{}oe7xxs|A9*oO1L=s|OYOC_^5YFgWn*E+Vr}soAmEnt04< zjoRHC8w&c<+@%qb5;HhoRtIkzp;-&7EwgD$V(2r;XsMomt-INp#a8jCCRu1#KE73Q z{~UYl$N%ZshzJ(9xE_aX4hLGE>(bA=Hp-kR-QDMUk4ip}*)L&t z(4Z}yC+ZmfH;$L*bx9d!Ks~OZ-*Oo53K8C+iZ37;D<9{-_dih`w-4f0S5d+z>T+yz zPFnz%Fg$kr77F)&`?QoXCMjd6fVY5Md4J%wzHw`vYK1P`Q%J$OHF0;g8{v@hPqvu$ z<-@fhdPrk?skCe5qWh?Xhp4uW5?(#?11gqipl_MXpL$1=9`$+q z-~0c7mtNfBgvAedb?Ma!TxO2MtV-`nC38an5I((5z})gY;e)%4E0-@{HZYh1#fZdD%sLYda~y+% zf-)qX6`fsmNGelnbg$5juHyW?hrHVpEmkQcU@9TbR?X2Y)R<7uQfGqqm}4=P%#BT` zD}E|x4Hxj#o1dK@ui@rjEiMjwjk#;wBi0Ha#KjS-Xa^;n?06Mj5|^t$V&6* z#6!<>Osz~beZL{ZW3q;IJc0VPi_8B0{yM6oHWz_tYD%rvHmY5Vhwv0iMWhBqkQWr^ zzalFCDSC2>)fSPgt)*qCuKt~c+j*je-MCFsQj&t->3Q#ou(0svO+rom+oZT~z{yK2yn9u1}wnL%bia0anlOsZIAg2M-#BcEY$e z+OZQH=n`fj2?-1_%xUC`Q&iH!s8sIhJ{_$hL9MsK=eA|{wOXkjd)U?so zdVLSGkOA9YKApsyzOlML<$7MJBw~)_sHzDi5dtN8QzdqGV=wLOdV^-$_o+sh7w_fD zr;b%>*;^GIU?M6z%(eBBpT1I6S9e-G@Y|nq3#n#2cBTDiS=^DL-nnTz#Hl`k84%8! zIZO7R8M0w6*7mCOsDeJW#Q>TUF=~D$rf1Kzz5Km>uUU*!OWqkydxcE*9@_(@4FFpbEycNYtI1@g&bqX5s-t7{fSQKJiI5{>FUz0@YMsMM zXKihJAPd_?50u(_{jA#Wm(zANVzetF5t|2d;adZ?7OweTKai?Sp_IJHsm9u zO(_ADCDjL>a+swnf;4m@CmRJDbLE?=K4pIG8Pv#8Wj`*PDHU02&CAwSolf`obpL2= z;JTK&_Uok$(LcRQ00u@@Atwd#2HN8r!!RAG^K9vTk2uex*0L2vN#KPq94BunIJ>+Jc3IJk@qz>rn9BX=N zr`H$-&M4;Q=70M5{kOfKQ}XEMJv%PV*E4b#GxzfH%4oEo z_DpHGehvE$3CA-Ijvu3ghel>YO+v>2A8g0)8>kE5hoWDEftsmX_e4adBeSGvoiWaU z@O7|o=xG+vV2TG17^;-ggi~Bahm>cJ5P;_ufIlJ2K8z)e;SjUgjDE_gLcQz^y|1_P zNyu$?V`oRu;e>|P2PAJW2!lH6M~f0JwKm_W!z3Gx19lD+JIs4q+FJ6}70)i8@r{li zapID4(J(O~>gtw$W?)fEg`07_t!r@E+AS<8VPj!IYL98u&*RO^4g_tj)Vl)8Ix`k7 zD*LtOANSWp%xKw4O1v+7AG+2LF5o^lalGlYKBd+>i}cToR-#vW(l;|>#78pz`SZgg z%^%$w8WW7SLqtUXSw(!mRrez-y(Sz}lOjKeWx7XVPSl>5Und!8;b)L(yY|@|OY8^d zqeo3@^oFuIHyvP+r=-WhB@jT?ceo8_w>fz2z~Qu!E;_bXQ!G$rOGT9?Md@X-l^w)Z z!Z!Ah_Bx})!4I5LWh;%7D{J-pC4kjb#kjYqo`i&W4RPFSy$GSsCU999u@ofXhjlO2 zPPvLF9FAadO3Le?|GG-Q0`^tF zi7Wyz84SJ7c2Du92@xjYSAiqfmC?_MAB2h5z5Rt&VY59Z_3f@gQWC?q_qf2042 z%4>>kAc7yY}G{1+{+61$)@vLUa(f(Y}Y)@)clR=JZ_yfLNrBdOs%ef#ofX&2U zq|OtPk$NG|R!3d&pic z(DQR~QED~)=ZE8UFKxH|zUG6vI=Hq)!?Oll68<9l>B}WyhKXCj!P(hr78aWRGs`^GC|r$dtJc1_VXSJXekrSyrd2^Qqt*DE z31{0B>E!XoHxbBmmZ`E|;#Hf!xsu%6RH(Pb7QEXW;#y`IBZb}XM<>&7&wwHnKj*h^ zM~0_8T}Mp^S`w8rRrA}zsP=pI4e6bN%vJB>;~RQ;jNaz$9X3$b{}A7Yiy5tKuNXGG zXVxp-SGPSRP#u5L#p`}hrX+Iwf*xNM7?uTq1(0XxzA``07~T#p4QC4bz=vmMX56Pw z_k}liqInvhO%4xhSr8BsElp&r@-Y#eqFjUiJZS`uLJV)7qwjZECNc_ z@|Be$bOF&erQ-w!@?MbQSN)Ul$?FJtX?G1(&`Gs|e9&rmwi2sT_@UF}+5zax9%e!9@xDCUUE_0Pmvt5~B>7@k?> zWIA+0EPHENgRE(0ZjHC-m9P5oXYkurGZ^6+Gf+HxonBQX|J`km3TZfw|K=djzkD`= zN~GMSPq;}cm5GBXs=~X&oD9~uyEgFJ^fdCDR2AOA59TM%;r8FJrU*s5qjxN!5J*~6 zqw(wv!+j#6qXoUvzJ>+ZX?V1pU6V{5wUE}r`;gY0RvlGhU!2UWtm)$op$vaZPtPy5 zwG%4Z+AZBLo-E9pK5;$fa=Ip1b`HW4vKAK7eFj4ByUu^t!7}!?Q+mp~#k;N53oz6@ z642Dwmv_mB7oi6m%;lYSsx0F<^w8vK&j)abId)2aQu5k;YWBKhx(PUMI}bFvzRxnm zb^;iDl`V(UBW@iX;`cAtg+1CMlAl|CQORomzDz#0b)AIQGxNjdME#rN)W!xsoH@pJ zfVt5k*A~v{R2q1L?Y74es-sws7e}kTFeb(%4GADRfQtnfnQbS)G0^h!J8uVviC~vK zn;(EWh?%L5dqCvj%N5$$S^WFBlX4695B3^LE%~h%^kMLck2b&3_|3XMDlnpwlF(jf zIu2)oE~=vQ+33-%VZWQvr&w2{!buw)W?`=sVU^KOQY6=7exw7;5g`xs3y;PzK>Jj# zH#6dZf9*DD=RdP;<6lV9S(lnY8iYu@eJV*iYqeY__PC_{X$cplRzj#X?#@1!fL(NJMix|UCuAOMdFKvU9GyX~(QhvAWPC|j(ISJr}!q$LQy(d|ubI3=g9w7=?) zr~FI>uTmS2{n{qF7L_G6EYu8k%cUrX4a_`&qq6Sx)4-~wrH!r0a#O&*xo}(7Pkw2= z`Rq3%C@G>%e@T(-?$7gIQdG#8v6zm=<8U{c!pJ12_LN#{x7Eh2t%~{SC&Xh_cArjr zlZ^qo0#D8}t&_vyUW$eXUZST7<;H%l;Zy<+1DUkIj(-)gZ!+zmaGC72q2uCW;fT^3 z1GIfZ^^9z6sjA-9)!cylF}_=hnUV2uIghGEOM^85>$ zub;o)twSl8Kn(6+8zbStK*aQ9-OKWZhJcJ?)y}Qy^RuC|N&`r<-DFbw&!1(;4d8Q_ z(b3cAUB;^S`~tlE679`A9)k~Q=f~^K`mTf3Dv>JwYu2%?BaLo&zoJj~)0*GQGt55u zEb>(-=KQm$@A1xZgY7s`rzeNqrwV_ZL%>m9yR+jDO*QyjJ}dQR%dw<+P4XX?<|XHz z7AI;5D#2>WoP)Mu($$S0@OMbAg+AW-`H?>q9T^8&wPE& z-)Zqf#_jkYcob8p+X~+aqi#mi-3SBqip23vENpd$yYYr;LeVT$^a`mohq6OOy4xpj zo;=8}(b3bBDqU^Fo5E*PFD)tYockgLO4-}G7gtsUVK(0Yrg8-3pqUs+nxn`3yq2{U zX_P)VNkA+@$wU;#m$!WPMNnp99e|e>wsPQLMz*%Lrj}>Wc0d`)$k;KH46HO;qZ1Q1 zppaKLDKN?%`t|MlE=DdlF9#<~Q8>ls^x;hig2R(S&Wv8QaG_3l)7 zuMWi~^YK2>O1?SR+0omSVESw6)jzAm@rH-UYL>1A21Qs6pR}reMv>FAQe?(}pTnWS z6#E)_0>+D`_h3Ysk^6B)hPnj+d)l)dhptuF*S_E>o@cOhYn|6RJUonzk1y40 z)?6I295AbEaQi3_?>M*d=rAHNGO~n5rmtW-bp<4-K0E+3I;OBk<}M!+q; z+GxhW=e(l*>Q%<;F9)A5pYqyI2o{weFE%wEzi*ooI+hKVbLT&-tFONej+mIZ;uv`X zJANmyz|v{*mEB@U9vn-5v=0sqm9|aw?3C{N-qT?!3E|)UVHY&%x7Qh4cz$?nXqJye z-nA9rRhn_-1eP9;yQET3C1q3D-KySq@Y(?d5X zH1=TV?DYBzsdjZu%_4ovDaQ};qE=j1X5n#yfoV@_D+q~Y;$2x88QGoM(P*oVw*$N~ z#s(4AB2CX&Sico81=XsRmgFUW`t*r*eSE8RY5AATP5m}#9i^m~zZw2De@6%Bd%<&Y z@fy;-ng*|q3f%wExe!KD$!POyXzv=X5-w$}s=--OEU5H+E18?9V@OfCQEpvxworQ_ z>kR)r0f#b&PX~5EL0qe&g?Sr&lMQ4gM!7lJDS7tI!k(T@n_*crtCPb>YSjl5lFIrl zk$p_~vC2E!!xTmh`jXzQ_3?fEHS`J}(^o4kFQ+LgXt5K^n$9zkmJa1P5jGmO4Km%n z`_t=Xn+1^yilz;pq&xLlr8w%7B|OZ~?Ax&7^|4vn1lH$HGCt9IBj@gMRynUwHs zIH*ml8(0!F0^p-JLI()e1PrpkMsA+|CYh+Ec%=E zDrQgi)c1Z`-cq35fq!EKfYQmNd1av=5ClF5ac}F<_$!xcVAm$$i;8BR` z=pKdo~R7A3p~9XtkI z?X3ysJT4%Sb>`BX!o|Hs&im@qYmgS4)h;X7Rkdw1Iq@_>K7vx{KEnCln2e11);5lx zvw>Zz^9r@Ct3tW7%F{!64$kRBPV+@Wmv3+SSPA0{fdAc9+SJVwl{%!J!_LpI>*c>u zrkvrhX%x5N1Qw;%0FIU`25F!$?HF@2h0oYoOl-ISjh^;Al@Y=3B;`zv@eT_NL>=Pb z+$LVw#JfT8n5~zsJ2fW8(e;gzl2V7B(1hu3d{wZ~S(H05v6gtf4W28ZI;)zlCR35_ z+1VMLc?leTw=HIWYa{C87v%iOKO@)tvisho$J#U)W5W}|iM7kC&^kXjU$t0wA1VeN z0}CTE%AJj~@)y&}Xr=kBFaU)XvM3`bCnw~UN_yG*@|btj9ZDP0gXACl*Y|iQa+Id0 zgkf2h5fAwEEs$?=^71&hJ@z`xW0EF5Ic!ICdEI~fO$xVRw?;4F@DAlOZS9e#&wIf6 z1!{Nu)*W7$^d%Or^hbT_UQ8?TZJKFt^bduML{JAr+z10_#2dF)f3E8u?^E0*#k$5t zbGEl`8}}4)b{Zk}ZD3#qR~eHMbu?=NaJ7;9DiGN7kYT7_&v~7$fm;~ z+Hd~1x%cleK#z~@y>6_YVI567?5~bBc>{1#z@d1*(d-w%JKw29j#PO@@2%}PpGcT0 zwd-@3ZF~?dYOP8{0*eAjxLcL!Vm|VFI3Dj6M|rvJt=T0k&fR&cgWMBpZ{6f}CIp>BkEdK+T_Z^O#^z>e zHoI6Ep3(60OD@tG8j3jd8~h`y!ssFrt3}%m{tS-Uo+HoBZ~^YZQg-PNnL!S5?GZtvwT99B%_2y(z? zmO87Si4baV(b81EL&8JztS+O$P#1PIZ0Pw-Hy1>aA_J(-f3@2S2@0w+4a${%dOH|9 zJU73Pxcku1eXlhqUNI;zG<~m!_emm%tfoTT-1%McNcdm4Vef<8tg6d7#ow-(i1_W z7Wk`gl25G}7LLAhmTtt~Q5V_hmSA8`a7 zo!#gsnLx1o3SHKPs~mej@|k~YgXSrvz)Kf3u|!19bvVs`R}cRF=~Xl*fooW1E17Yb ztbQ)YBfDrGYto4C_hv%5$sDFU0h71dNgviR-cp}#N_Oqc}J?Dct6{Z~e2gIZK;%3Z88p0m9VNweeT(eEl1NuU`q$ zwn1zm6`rU5d~ft(K5T(-`B-%_k|)*w_@}Q6tyGoEL(Fh-qQHKqVp9_!ttEZ>@}+^D zBE-W(S-C7adH_Uyz$vXq7iT_Y**7!Y|w53}Q2xU$5lI zk`R1n4J$xf*>Y5slsFF-c!5~Mz+lhn55@sH#RPf0`T6DfU&}J)bVEf3e6F49f6fkM zR$;n1>fES(^+JtXgu}$D`RO&Pj3!w1&(cV^2o|Z$T6#R(_1fySEcmBxaf>G!w}N8@ zHTZF}DjfF#tUmPbNttaAw>)<}`26bB^%hQuoi1R%GIURgjb#l7kmjfR(*@YPY$$_> zX-BV!pNRu&k}j--=+fe3VK=TqUL?NpV- zM{Hr|lLLhid$tM-<>Nacj^Wep$MZqa?S%yeOUd^M$UzLj00KFk_VS_LtIyp;7k*;9xjw20bzAYH8<50aiL#pE-q5WE3tyy|geZsJU zy7m35xn=4sa?YTjIe*&@=I=(U{m571e)k+1)+=55rmUKtWqCNdxKIh2lzlh^Ag=vS z?xmNyMYJH1Wj;PW-va8gH;k2pVLjYhoWk`y@bkNsM{wuY!c)Rco}Nx;b6?-%>e@{S z3xgEJ*i8ssv|^f3@%Pq2?q>`Mn!X{#oPg_(!Es6t$T*Ict(`|{|KSVL2ZFtY#%4-b9Ex_0fF8w^IE##Hqn=ZFo;IjJaPG&`g zW7h(!+2s6OklIe(skyvyPS?rF6%(-@RaIRvuQ9KqL+(&{jVbi3@SwUDPJD^A>t+_E zhI(8jQK8nbVcqL5-*IC#V!_NL+PJ#%xh}+Z{BuoN_AyGyGKkrRXD@_c7vq!wOXn$M zW-@tCYGuk(Lzr2kG24A-rrYV`D6sVwK`m>ORmKb{{G$aaB;#oZy*ES8g9+yr!I|I# zGFEX#nVOe3{vXfO$;Qg_sX4bbsT^crM3XCm7e$y;Q~oSEuvSu!nqs($W(wt8;nAb) zR)}wvSxh8>`X0caRN8bn^Z$|c)p1d6-`n00l{5%xMH&g|21)6Z4i%(p=tiYmTAHC7 zfuT!D0f!nwhLVPXp>wErd++ypy}y?~{K&`g%sK1qz1G_6dDgR*dNml7(-cLWjtCf{CE|Iw!S{xYX*D+R;fgKm@KLWQFTbMEVc_X;W%+}%YLnsu?SmfjE0NYWk+@R}IJaGOuuETrba2Cd| z>|X|1zOdiCiMxr+vsUHM=B{omwpt82EPd{b9pcI}~3Y!zG%4+Zf5k)zn|+gQE=e zln0Ldt|PA?ujBqT}(@jQ!%{39Gf#p2P9X zslO;ZTVrl5s;xDHr#v^08~h&;;tjq^Azm@3nhHWKpLpz#gki0K>s=w3XI3!nB))B- zNu$NPwooJ^50ifBOSCul>5*)nx*_LLEI5BVZ&8pCQb=W5fTT)G>!|l$0hk~qgNIes z)!iK!6m%WyI;g9TOk{(f`g;CHA^^y%N$`4w6&xTXD}!L!-CdWOTQ2Tnmj7aAZm1}l zWT0UP|DRtFtnD6NiaVuwi_NxCpjA?Dl%4GxL)Mx>U(@h4t7bv5$aFkJfAMe)fKIoy z18($KoGEj559R0e$}*nj6iryXiuo6U7ow+?)ZiLmA_V^W(Z~5>^E?aKPGVhPr7MMK zIhv$bN25!zTPHa3R|)~OpDnkTYxBDbYUJoRW7!>TAyb2#d)k7|Gb&SEztHe*WG`vx zEnuhKUHr&b(YC$@Q9y-Rc|GOqZH=SkVhj7<(_90TiW(WXlCGrjGrA-)+f9;5;Q>Qd zJHdgkAuLFGyQlg^2==?S|4;#b!2cSI@!md)fihDH^wD|$)B+eZr^X|>NFio2(<8N2 z*C9All;z5WMYX^4Nd9lbUHdf5T|ru`R%_H`i+Zm&uEkrD(JO^MB1=LLOaHu^P2+uJ z3LI%Q)m`>{uDa_`oVA=3IXsp9KPtkH??)7sS*oS0l8+NTCkwSMy`%l*2YbWnC!6R^ z$D&nGUl}M?)NA^v;4ENUck=8lxT^IaG8X>Be?aH}U8O!333$a>uilgL;ZPR34I3-m z(K&8Hb2R6`&wHZqclgcSBtg-x*kVHvinUM*csn!orZb9xZ#`46lX>{m{v{-25dj{{ zcynt(ex>b(XBKu~M<@8#UyLvh;gNLN@M7j>ExEzWXJ@Hz>0cjOtL&!&BP#q?xePJmwp+wNT@9P={cDkHrr)iCcq_JxhHGtA2}a*}rXSt52M<~{X{Hq# zPV>+6UOS2|AuZOQtFE-Q6j5z}C``$dcPhbB$1u+4yw&msg#RqFYaji{B7NaQ<2L$r zvp-NuMNoJxi{E@S`QK%9kL{Yh(MC1Tlzd5d@~kih5{|^z==t@=aKVlJSVtTD*8cU) zwIfz8yi*DW4F6@}IBvYv?Qj8goVA*Z$utlo|h}l%V1O zRw1cXGwZLL7aS77bM5;&AemNIzBSza4gU)6DVD`C!_(C}Yh_SE68ZOmJ{+`T+{>-AkoWN*EP z?Q5I`dgR&-=HXvGTBgjSF$S2+MzCHPeo>Gv1>fveA&+Ea-G6MP8DbSAKejOnlMzv6 z=^|1b<>j-3Mf!sG{gX)-6;(pYTs~8zeXQ})BVE-RRI(Y%Z9D)sFDeE4%jfV_hKG); zD_sjfMCeBakcG40fsZED=X*5k8b5nkJSSU~)AgS(zZ3mvF6B@J9#zd7!IF9yNSKfD zp%v2m&z_Q}FD5M>q7<6VKm}CQM)Vg$L;rO~*IX6h4Aq@3!l@WXu(*K#R$3;g}Bxh)S&6K<@B+t~qQaH*t>+XLzftIvq0eVB@ zFrQ|+Lz#w%g8BNp7vgltU!#Gw7MG?$1!B6kJp)`XfYSuB=tHa96S472Od-|g(tKEa z2rO4kwD{EwQuDSkFK7|I5u8#;+9zmc!2a)+9wf{bO-LO7qlWg!o*w0ej z{bPg~M5({Ws7^g~QYmeH=I0B3G5BK*&Uh<&^kOnnh{uR{z;2ePiZa*lRvN{%h4WUY z@*|plszZIsfLw@xP(oHrjf`!~{u%*@et#`Mvx7NP$|pY+@m^eU!_Rz~DH}j2;WK22 z?{_DQVu7!<^$NbC_{Y0`y5s?gC+_H$^GU6gh-wQz7ja#kXS(a1iSU0ua_t)z;6+Mk zZXjZR1Pm^rFg|-0beU0sVdvp5URv?9u{xVBfu>0oRpIjm`A`sp2W!LlDo9be^G<&7 z{Ausfj_zc}5&VFFfX0S~vGH*;Gozsfxjc2iKGVpl&&@6TD88x%AlC2SZ(A*`m}+Zk zsdtQZ(Q!XcBl9@*SbqH)Gq}8nUR>Q)i3BW~(XlbBMWm2C^J7LvCf4CgE5ByK85(taWSfTxPhOiRIsG2MGzOw7tOw_u_qHRDT9L0o2LCX}J&L$a=h zeh0-{*P2mnHMN-3RLRJ~LW?~0qKkrqMX8=4Egj+LG+E+5Z`^2V@>0#o`j`dFmGblT zH1+fbPqw0^8L!dNHA(k)`n$GDNpmv|JA3e7QS6QXO&lD+;yd2k1DxpB%dZ6{bwQRM zWQKq9W|jbtm6D!k@e;1Y>>K<~>l_9le_p@t?kwl4uJR#?h+ExJeGU<^y%d! zmwB!298GIZUDEN%ZX8W^_OyW^=oahib6VBlwMVK>et3bVAQ7`1A+$O_Kpe-fkNZ6b z)4@muo%wl0F>_uEFq`8o5y0YraNPa&mG4)D_i1 zFqe?V#Z7w<#!{Z&4JdCgU1fpj$M?C+(%x@8e*E|xRWis!HpBJXfbu{)iS2T+pGpS5 zGM=Eo%cYWn1n;9wV-{cYzxLgWV{k%|jc%po=2m3LNb`2xsD)owXBvJeDf@$Mq^*6m z)nxxnbmd#+;v*UwoW1>43wWb>~f$Q03hjAEDC`sI`QIw)8%W)B2M-+bPd2gQ`oeFa%C)5iYA>5D|XX7yGu0 zv=mRHy{8B3OND)(5Chw;EBr1P zTBY>>D`&-sCES@t7ZNgw{E=6_zP^${xUc`ReO%kN$8*aDIG&p^$g4thRJ{uk*fiShCKjo&_V zX8P?yAZkyX92iv64Nm9gg6u?G7CP%I7oRg1fGIHrdGg+nMmqWtZXuzPkEiRZanYsr zYeVz#YCIljERl&+dp5)+qHA(_plK@)i*AU|&S3B_qkn?nf|ByLk9S71{A(zMYN-Y5 zjSJOef?Y(sjwpDnBC4zV57xQ*`ujN9a;p>X80W}zN2U(7U5Q&YU(HU%)(mJeFE2Y) z;4ZKr^D@NRyp9Jzy=#4W__L*sjytG{I|#J7UcP@nl+3lF%JvS)piD7U<&onM`jAou z9P^dZIC>HN)wI#SVu%Is~DPd?}P#BXK(~W#LG!|nt|NXP%{V&91cj*lx0LY*vAB(N6uKoPE zdcIc&riQ6k$x;JThK+}p*S(HlAfOawJkJ=L7}FrO2Zc{C;nM5{y(w{fQ{G?1$ zQ8Dd=Ek5tr&bk<(|MdU{GOcpL5@d&gEQQ&B*@ z)ngghWSng-gZ=WXF!RXl?34lgTRvhM2=#SM#pgtIH7JS+Zq2m!yhLnYZ12VI%E>8< zdL?eu$WOJNoUq}V0<^VnU%B!s?|xQzo1oGC=FUt zNl8gdOUuHd(3PX+O9&&M_Le6q-gL`z3I-c3H*D(aa+$5MzH!0D!SM|aPlqt5tJ6_C zjN~#M^n7LTklnq;uE(4gmcKDx5g8Tb0)ZrRynJPa5{R&8>j4a81CQkzDk>__dk7-? z>hdyuL7E6)Q2PdVQcl%LOUncY1YrI7r-9F*3y1`;_XL!}?^9DdN^N(u^_^)**i1o2 zL+}*}a)wzEwYvUQ5YI~~^CQxPePTI>?d85>vC|XC2LiAGTZYuhX*GIHKT^enJuN$%MqnRjd4`)T za<_lwF?S*G?KlHDh?Tc{3pE#50~lbnkWpI)72i*s;w;J>!U|sc9}}t4*Q9 zD_VNq#Qea(z;=t#cE)|!slz;1uG%o(RJhaXU?p$%f&!Cve3JcCYr?L`cbQ0v4)LJ# z^K*Mp$$va27Bk?h+G_J{=nf9a<8kV-;MjgKwkzN5*%^ssTWWhSuoPq9HiP#_ChFCT zA}6NavGZOX$kV|;edi1E^X2iIEr{n!o@$k!SAa&FBV4w0&V;`g-`VoQCQU@BriRJF zo9x7Gi6s=OPcH_?_-nk^k)AH)2ZPi3l#=BZk_GxhS8i-+0Mf9D(KrJzyaobI_vV%3 zA3(o3unuAdwMflxDtM}aZyPgt!-a0OJh*NVUXz*vjp%RB#Uta^%u|<^k;%``APG_! zIeH=Hbo6zp7e=Sn+0&IN>>{zYkdc&H;$A`An>9+it!dN1^$j>y%!ox9!DG^h~Q*vp) zN$E#4skgQ)5raMtK=V#d)4X#hW^!^83WX91`<1`UJxM{K07V>tb|1d!$Oi=lJM|7Z z`{H`aT@SpD(cX@Ipy48iJ2PBAX00{Qb}5t4XSvYX+n?lDP+npFKoSBO-kK3QMo)=2 zuY~{%Ue$EEKGZxmmYb|*APx3Ag_v)|WuvP?8vo0x)KvYp){AHg(fFjK60U-GOv%!q z!89y9EZLu>qVRq7@0o%g?_!}ymgPX}rFB9(FkBdiTDJ$xM{06b+FU|dE`_Mc6{u*r zeL;QyEBsMDeg2$?@|F9}%wt?NMnb!DqBU^tRj)%be^#4x-)&7wN;*GHkf&>*d_<=j z$XB9OQo@Wk;IweEtM;g8DDBA;2!Q24<}1%MT2(c2aKKIP|5^ZBh{2g=eEY2E`@}U5 zNCSX^x_OAZBS$YZ^~vll_%wSvM?b-Q3M(p_K6H&y;p5?iM}`v7SZ2p&wfDaN5>lv~ z?hPU!>BMuT@!A|B!lhMe{*RetFJI1s{=1Upji5J*hlePTGNPv&(vcZdR539zGG@wv zrBc!6OM(RBUlHB?^UYh%@Xi&z>9L05n=U~|~d zz4qHgnIZgSStWVP(?tZ$_&2;{;TDkc;qvk~Dyod2mC&fDJIsrQUz;C9Y42&T4=V*( zg*G-iFlok3l#%<|;!VJAkw8;uO&Ly3P4M73j_LqJ(s;zc5FBNN2iHS^sbxJS_WUAzoOzn#YPEG8Q@r|gg20j#C$n{ zL~?saTe#Kb3+(Uj1;{u!gep9vE!H&G`ugpKvv6*WwIx+oS7)|S z^T?mFQ4)XYYt_-~o2dh25~_TBfzu>6d4AO9ggwX_Fo)>vrA|C5ua&Qsi_xxov`HAn zXKU@p1d-6AN)uU~8~LE^N~AV9qJFscMBV|`#f>hqW=z6gj7>E%nuS7Njy@Badpsd$ zp4`X6Oo%NVozZgNZHumH`B96GnvdZHpw-_u=J)6fiNXC!NIJ>Es1;f?d_nUlJ3#rc zD^JNuonG%*`tkaVcH1*0Z||g!9BdsKeaGxrjthjxUYjc`$_f!=;KaMCuKvLm4E9pK zUuC%v(2H`do&3A(Hye7dr~ec`$y+w*SIwf7Gt z54ZUpJ1wC7!wvDKW<`J)#97`~umKJ*&%N&=ZVG-%@_0Mz~@+u&W)lF zusI(dprsq0XQnJvPUZEV{n8blEZtRwRbyXKpCbXu1Y~T#yp)PtljD$atlbscQQQOz z>qls&%J<2jwxppnm4ExvV5nigF|`3?5nG`%f%>nzGPn7LPXa{*%7mNv21SM1+KznoA>g53A1(HW)^6S-%V-E*aIas;wvNRtM-1 zX@P;)BlPDJKu!@yuk`Z#a00~s+hTjOElr?3U>&vMI@5eAP+iQ8W*&j_Qe)OuNnmJV)Eh#RUC_PnKZH=eSUA$OZyWf{>Bzjyd;^nqXvIK&BQ&R&0 zx#+v95^fcU+VJ{H2RdbWCr0w%_x6rQYfR;BcAw`ZZ*a1i4t;Lb%fZLP3l9r(ba9z$ zbcu7lblI4Yl9B@afQ9)}0AhsIXesW{)dX20T9z_i84w^2VBl z-*1F*(Lbs37Rnm7V5BA^CkI40pp*gXHZErTnX!t!s*MSgk4Xg`hF)M0x9ldXEazH9 z9JgA1JCFdT=KJHhvfxcjdX{ncPItsko(6k=;|IBZ)%%-Y;4>}8bC>>D_`_|0r3){9 zt|S&FpAgI0FJVaJL(XT*$ijY477PsDn%|nNGX|usYl0I6Tw)g-6~=Ad&sOYEd5A-Q zK-^Put*!hGfyTS2$8M{5O#ez4q(NA2S~vb^BS+++AOXdlJH3Cu zzH~u1Hjl0_u>u1@ID9OD^Mk})jncnC{%81xO$*y%t6y8w@JV02GFewy9S1z8wyV?X zK$D@X%bp4_qtaGY)j?eR)5)zkXS=)rn`-mNEN3rIkDXQwwpKSLY83b|h~&1~TGyGz zF}c0HY6cam?QR0kr?UBGbdvfXaz3hf!-u-nz6ZuEcbW8r7YLg4O)2OLUpAF3sDo~A z&luv)@chx9-lBRe*_ z?@?e-^VKM5*3oS}Z#sxLAX9rO-&aYWDRKs^NCiUt+b_M{*)w2!AS*J^rACL;K2Cp+ zr+^vv_L{ezoX53zxsebPhb>M{>c+R9q54(u4ppH!>zTfomvB@9x4*mT1c<>oJyG7r zGui?I`RwvsQC?x0Nr1nWlUuLLo4AL2kZV3bzy8%&Q)g!^Dbs!$ma&&hHvGB))Q8TF zx6jV^qn8VK2J>if@;U}Gh0LoMESn}&x#D@K*;_rNXtrJe)d4bXz_Z{!3@1E}*(^kN zvqNRzM0!J=Qm*-aOGNzYS3GOqHI<7$4ml(gLsb>*lwGA?=RuPtCELLPUA=^k&QW}1 z_8(pVT|3=A{ppGG-q8^=E0fDw|BvBl;D;hUyriV9!mp(<1MqiHqjF3iuU%bZU|5Zf zrFj$_#yY>XvbBsx&(EtF8xP{iy|T*EPU!0$92}gSY$z=JIKsWNJ5_ff%?( z_7nHPe@A{PGhGnNvtc|rDqF?6ScfZk>eC?V8A>Lo8b6Oddc7OQB4_t0Shhg?TuB{e} z#>C|_`z0x%uu4o@oHoSOvY~6rt|+}fHyf701U(( zowhlwM{e?42f9mgj#i=qYL)*5$<(+3fdbwWXixQo>W77DWTw@?SDH7Gpn;eCI1zdL2B;#?<@grLsx9|15BP&~| z|p!s&~=y?UlxtDfc*c zvtKoRD6tF3=5Rd%?4!vA_m0B{lI zzQ4u8XLsS5Wjmqe3iHfzT=?&8F;wST`}dXo0JB8JGgimJY%|U#(sI>*^#}4Q|_g+%gCC zRixm69&5Q&y6VM$P01)FB3TCdK~f-jZyU4A?rEdg`K`wYq$$<^xs^BLBbtB}!G}=2 z7~&1F20Btacg(dyOS*U@yGoyn5xPA4t4#Id<9fmGDgdkG15iOKY=Gp|EMWI9d}aPo zYFinf+`RT*kF|pESU_e4p@LHYRY+v0)|v%gUOoBS|MC3=`+wWYD!egUk>;;8R)6oG z(D^1xzJpsnP`yZVHLy~eWJB;^0|t1YC8PhO5c9kg_Lvx_*c9iRktJnahHmTQSek6#{W`b(|Lrs7+EV zr1kV4I509a005Y4Cc$$Yk^pkBx5I(r1@P#p^>L+wQ2hHOGv)JbV|YB+of>~YT=tp% zcRBGUaZA9xPLN;D(*CR;p)RhhJRqMC*VtO#T3+7b>Z|eN{plA`71I6h{ka`HpEGS! zRthip-xaQ*-?UG51vn8G+l<7Jk5!MVHs1kvm9i12EkvRS(? zmSlE(%XIqHGs1tLgRfot{;B>TvpT#=1a#6#hPO{nJ|Esv@38W9r-0b1N*+qWfdbZS zp(f>Etu-IHNk7u|`aQ=Htf|NvA#~|4S1CMEv^d+mIe8Z*Zov4o)JB`=j{p_jM&82u zvdUKm%IT`~cj{dAnS^FzqYYkK6F;FHQ3sq3uThn#4&bGX$6D!Hz$!4HFH` zyQfnSC#Rglw9C7Vv>exD%`9>#si+1_o31{etv_8cdXhAmr#1WHXk%_0G*3gt%$P_> zl0Ll=H|x=4PWXtoi74Q6x(!Cw-){L{gvd`xLtG}cJp>9bgrX$oB<5Hz-gQq-61hky z-9-iOH9QV3SkZtgwzYzk;TR#6R>M8p-k4n*DirGEci!-Os7)4#yAKyoD+t#-Ae*zu z5CLjwcsFsgGOtEQM`17+z&=Qb2~(QcDR0cW92<_FpeKy$Y-aneiPLfmm&!(Om7;I5 zXVvBh)g-=uf7?^W++5+PJGT(xm5TdumWHqokq%l~2cK zJJWc0YM#Vtfy11jeqsfh1vszC(l-qIUIwm$0>M!m!PPP768qxuzP|ojXJ;pXuahq< zFYxlCqupL*FN1^*-jGPs{`o-RQxZz zd4qK>gWS*DaWcczhs&`k-?0{I4xmdP=Tz;)cWHp+dFGssti<4Fun8ICwb5P)Fe?K%ooL=S_2*a3zAyDtKZCQ@#{WEM1){tFE!E~txa~! z$3oE862+YVjGs_tO27X_CcLD)bzm1EZm_2U=k^{~$x&q-BeT^9q}Scib9c!$<&w^H zL5FgLJ3g%C5SNn6^((w?wp6R6&So+NjHXXYm1WwcYVlM~>U@cl!*$TBxtj+Ty$h3yDGZ#;J&ql9R`!C)B*`$e*5`es}(ECuHYIQiQzXrl{lS z7dk%n(=|Wp%BZDGzpKNe-N{Om8-H{sww_E+F2(my`=tH$CgJ?@Y}+3T4+C@#bgdhf z6I0I)x5d0xZ2o#y;Z$$e{T0@9Z|~ZLu#(z0%LJ5f-hpp?-@P?x5N16WKof2;PvaVBDL49nR2#@cx=Gy${SWtd4nyg z`r0LUmwWr{gTluLg=#tZN|~5t5@RiG!22?ph%!9rc~cR+vbsGO3xK|4D;pRzuIcUv{WnV#C--u~{Le-$8MRXcq+4QN_j zSu!&>FB$6=r3Bb+r(I}rax&n6DPm#LLqbA!_K%xBcsya~iJicrlmbY!l}*VCoI|xw_-Xms+1WQ=g;K^RyH=s$%y4yXl;4Rnjnkg!8;s!s<26J&eZU51%UFYFl07Q zPj8k|KvJe2-(ygY=Spp$Zmg@T8&WwvKiy}&lIVTt$Mf-faBpuflc3-aikq*Q(rj00 zMH^b@;`I=|xQ)%@GWTBdI6NPA=OM@ZgwxR?4a^xU>(kWI`T+>a)5X(M&%+~dNf<`A zPBE8kgzgF_StfLF12F*p!pG1Dz`B6mx0|frI&9|cft`|{SMXd*tIy;1Vv|*lO!VH) z4hM`I_W0W;G6pAq%aF8a^}9Y*hK;V!nKwA3BxEF69%~6bot^cK4I>x>MDt^QRyw`0 zb$X=K7d=u_n@Z9vJk%^}Wj&0R>rq_ox5P-gSD&}p$ZDUezm;~YCr-awf9j&->0Vw+OE6m3eW(eF+$ zMQH#4N?0aZmJSRovMgF&c5EAt3MVGBeGzF+zL~bupfGwZp>WZ%tUgT;3KBMSt-32X zMB^zXGnyj@mRBI!J><+K-XLItma+2l<2KL|Iqltl_kwhdV`Y%YZ)J7a*y*rFqd>{9 z-W{4*QQ>e84fj6ZWso4sutXFXdW;b{KYKjw{E%xu^0hsMh-ZAVM3V;aEGfJ`RgZ@5v>jj7K^A2$PMcgeJhxkphoFHDR1rqsipNS?F$)_E8SdVjCzXRD`{%W` zQ=R)>9$toSGcHNWO`|0c2V75EvCEys;)Ig>;*XHe4eKrDKPbrDxN!sLj-W8V7w;)( zau)VlDRr#{9m-%l`pnfQAIV@mqH*yQbbBDqoX`FY=8*h=Ix#ASnAM2eVn}>G)43UD zK9~_LdamO)XtaVebiC;_7(u~PRbPK{=|%laL81D4QSUoxKIKf`YOE)`Pbal8y+WQ}t;<_Hx0ao1^m8K)oaHAj4=1p9ZA`kO zJWxdpfly(K-v%;x6!fc-@k9Mid_h0tg^eTMM!DBkihxr$5U$*A*r2j~pE%zxjnf@P z&Qi`L-cv`;Yjc9?uc(Q+b+6ml2R#OXK#hjX<`m)xn*Xjik zi`JU(Ve`hyaP?3_$wo!f(^Yy;YaF}g7<}iNeya`)UZ&4p@<0`8Hb=+@8|f0U%Ytr* zkEixMf$ZnQ6>EWf+l=cJYx?41k%;?FR?Wu5&0Wv~EWEdqgPdIQTYCrk=ZwX!Jkj;$ zKU%SCZB7@e*_nDeO|$%uURSiqGsRwAo^F@b&GK@mzAkxtPEG$3?{vqX0HAt)gCcIx z_jx3Qgz=Yeik^J$NS|^;wJ}$>Ue=nNzn=D*6G5=2DsL}fJoXQ_$*HNYh8eDMx)Ca( zHBPH`57$;#n_djJ%f-=S9fkEB9?QNTWtn!-ro{h-%oLayL7A63?vJA?Zq?Qy0weE*%DLHhA~5@ z)U=B+C2)CuEd(l^Zd(+xX95x&bONW5e6u4(VJtQ|c6!YLQI^{+SFKw!_iFfto4n4@ zZlE$-arOI>JuI;2>a@UE^kPW^lBS+WAbfDmXVHR=ghn=sLiebz3S|{~9+hTTGc+_b zwcYGU{BvO5eb32!vPFu`4h1D18$HUWebJzJE z=WfoPldlYZ@E}D$RXblV$c&kGxV3Z+lS3^b*3oWr5fNd6KA3|)jzyl4Q#|U=Bt8Tt zR+u~PXG>*kzSB2IPnZ59VM!N;sGoma8DM|kPdEyN7=4bB3OXiY3Tv@x+LlnVE6!4`*wX=-cb)kq;G-BD-BA z&^a@jVwxd2W`&n9k!X5$rhvgR)7R!3bKH;-AO&V5aW+Kl{fW}?{<<0U?fc?Q^n5e0 z56F1T%k%L9?QJ9b=2MK%@vNB1N`wM?y2M!%EN2^0bPxSOCLp-2YI8Y|kB!q~jptQo zNKdAB#BNXIy5%}-0TjuX^_dFC3tgfLK|YQ7b}t%7XbV=LP{NM{aI(XU=2)keH%y$@j&v&Je1<&4m=Q4zUKyKf5r-R@`vP4Qo z220u^JvuaWxHolFQ@d^dQV51Uti03Uw92?~hk{Tlcrse_(&G8^L%<@Z=x<_qN!%8We2^sTD8x=>>0m_3a0iA;e@_kUXB*Q)brnCzA9P| zSt}~YBzxk>zZh+^@94Nr3(?V8!(nHgsdJ;|3O+}NwuXc_Kw~mu>>SMm*Ydo%ZEslU z4nIt6G@>LWnk;b3oS1b-r-H89%QNbOZO&IqA<5O|!$EoZ=`5jRoLH8WI2ezM4V^)H^ z`4hD#`O<*BA~<nqHK<$XKhM)P$}O0Jy^M=dEKJlbd3#+<5x}!t=I~r|=yF_Q z%F0Y{Ffr!^w%FCV(}KVE+w+PxrDShXmP@^-y{euhfaWO%JnX;>gG#a@0>Hzz^xRN| z_Hg!AabronTb4pOFUj;QVAK-iC3%A)73oSWj2t_Fq+Y*Vn_3g|6({)sj9nEpU3-D- zM!7x9WxcPo-gSR4K=kmdhDmosK2}RC$Y(T_m0@yFK6S0xQMB{tcJlR^Czn$(iHXX| zcl7>PpW4NcSIodHLNCjQKRhv6i{SJLw5*OZR=rI{EZ@csPQl)1Xg(4)gU4IyRtb^3 zE#H%jJ(9JAJ#pgCSXfzc@bOVV`(kRlH9hW8j9pxHiHxzFyo;J%rYMPCoeJNIx3v_B z%7>=6JaQ|*uL%IZR*>nF;#;+DbTAAu+95VZx+JDNA}V6net6vzQj2@LYdO(Fy529{ z+WV)3I3Bzi{{+Z*vrfk%6_33Fc?q3U_P-`q9~iBb_5wv$BhS+=I=-3Gef}Rljs4aB z5<+D}a+pg!$goHg>-r6)24_bLi<>^BoN-X%^UIOF=H>C!;OP71k-6cuXu-#qmN`iW zDC>%$DKS6Mgn{hjW>W@X;q!qeyMle{gO4zImUK<$dMSp%S>pq|?e9_fet(GUc;S83 z1Ww9(n9~Ww;+)r2OTUqB_hxt2XMc;AoRgppqX)!ca)06+5qrU6=yv<@oX^$1O5082 z8-g^b;hcg2o&=!no6mLhBTob`Iv~6mXzX~Q))_3X&bkBnLgJtYV@=zaXKQP(4vTrV z+m2fuJTxqx36KyI3DL^hg&=(s3GN_IF}^yntKgHqJ_B(x`!Fe7~LaowyZ z4&`$;9oU<_o0ypmI|GMDlr6%C-!uy1lyPE!nyo@GbtR+{C~n_dEw*by^LmDzH=j== zw$MieDc+dUHgp-Q*)LCan-LD95b%~d{{m@V7CS%bS~b3T$Jp3dP%Af2wzt0R^1Oe# z)g4iwlJkdG<3yFVan5xbiat+IPh2u#{+uTYUs`ek4crEd{Z7#Z)P5sIqH?$T25#+k zH{B)Yv)rQWLr>C)#y7h`2&nkt+Zj@&hu!_3R;7tsVp8$buYVVzw zs8h{{_X!E5)|+{($3GnA_WS85`$=%_jus&>e=sJWK@sfl-rpiR4$8?vfcim&!UWr( z@Y#Wg+e}=n-zcA&1e4NszQ>}7bz1WFwU}c3$1Iz!k<~=I$q^3R5Z8XE zDcicRIH;M=g{|yBe^&IHA;%n8kuRt7uJaBXz<_C`FT4e@BGx=(q z%L&@X`4i1+`O+25xlKkh4uH1)2;^!A%SaEJzEY8+&YbwWKTaa46>UZ72xfA0s(njf zRr0}e&z(ykb!~P3wb!?gFQbJoLu$EdKBO7)$ajrU=e^l(*`^W{V%%yjdcB1;PMb`w zD90%#FDJ%ktSqZLRcAY4bf(zkpkVBtu{Q(z^YUWV*bKYuba;5!zWH(mbGQ*$Qnrq> zhfJ*)Cfl1N$!ut7Xggo%2Pr?H8Sx0_z+XD`cZ{+nwbUhXYU@)1k%I^5WDUEmEupRP zj9XdMJsuN=)@!IIl!+IYz)P_nm|0F8_D72W3C#QKd9Nl_$SEHTC9#M;%$S|&AP}Wp zt@6?PaBvKtm^;6m+HUWDJA3mrujMJbL9+!SA08iCYvWtZs}(PAR3DhG1g2%*z9uL2 zRMXUsOeSq%i}iDA+m zvwS6-yG!T})rrpY_Q)c0jv_U<%E4d&0AFmeGnH>!(v)ixj0QmHl|=wNZMsJ3QCX8OLR4t1IJA9|NtMqFEa@As%%7YA5_1A?$gMsJ!8W>DU~ zud1N|$Q24TB-q0nP{U8@LbPmk$wF>X4qdx((IQL~4xFu1Ga%t+r>Ia);f}$NNS?`p zO@uBoEM46a+8UC8xv^|QM)aNr;~{7Nbf#d@Eu0S@Y(v)Crq)gqQ4ac@j!i^}eY{gq z4s%nGopFAD3Pg>p2@<0yL@+>YRn_Fvr{9LX#Z+;O-n?=2&^B@bS&_)`=DuvoM9%xG zQRh)-B0rk9_}9CV)PUT|%k_PBPNxq|B6l`snvQ8jNilG~xsvPWIgYo2Nmb1XdsrC-GI^we*H=d#oL za0la4Wgl${R38|RM4^Rhm^iu(vvm$u$nDjPJ{ZZY{)sS*b9R>d&MSYg341u^ih@eA zVe~-iGkx!p#O4HE&9z-s66@5vKU8A!V4%>xC+LtjeVZ~x{j92=4KYBP z`CeS3&&!Gn8c_QcMw6^xHb`47>a15%k?h90C`JNFNyX2l_Wu6R^S0oC!AA=ybTvET zn{@^I{{FF;_sPxlqxZ%t@+(#^b_o!C#y%zR08Zcj{W0x1ReyE8_?tuB%YGNO@+dO^mR(QUUU`!qf>2Y843hv~u| zu>;mwbdt$QLfg$}Kn5Mj{2o?VXM>cA+`Y%J_EqdP$`onL%)&m`48h@waCGI)Biatk zW4H1PWMO93x~vNmwL{w+*ycq>oNVH^Z2Da-wq_WfY)7@`4YDcSJN%GCP4*BC=GK?s z>AlXOq^1`0JYcl)#_Sd#6$^LrTd!8UdYit?J?Cn#!YhS1@_q>Va?VIsrr+dy(RjFE zOG)?cczbaK+px*y^b|hc(CL%ic8S_B^lT}{tK2+JI*PhHTNM*bl5A7$=7J_(z(A%%mU6e| zpq=ra)n0rtu}_;tfkG1`i*Ij}YmieknXQyO5pF-;jml3Y)}R*@VhOh!!?JAgTv<2A z314cxv-a`v8nL`Yd;L2#(CE7W6wrLBO9nH=l9D~%P6h=x$v(SzVRX`$mKj_9@Zm$` zJ7!Fyi-IZZqkZA`K2~d_NX^C685&(Q;Vs(?V->#(XscsIxXsT)bAa->>N}%s-Icu z6%U2np{&It7mbI2(%PZQ>E*?-7>0n;n}0(39e7|~7ds4kVlGglez80HwX1)W+*ZSx z(WzhkyKZKBm6Z_(nCOt+OK=Jj*K6^tQC6K|;i82>spu#x@ToWh$eb1Pxb}glJOrOOwNi*>nGB1EAIORczhrj7D(UeERn7s1DRkS_eD2*W~k&RR7r6 z;pbp#Q*T-3dG~KOfp)*B&zY(T8dZZK`FzXp#o9;jo$sFo`G%7e?#GBLezU7@Y9gQ- z;kc^bU9?DXd18HRH{;(S($o+o0eWr6ywqTY+9;_tMrD3jzSHJcMF9^3lJ;Q}8MiGP zj+m58V{s1$tH-*pWL|2;F|x3h68K#dHHq3x^^LvCKab~CNy_X=|9@nibwHGB+wD=e zL5YgAfQqzq4>1ZN0@B^m-Q6kz(o)hLLxXgqARPij$WX%2LkJ8tFvGds-?!g)pL704 zXXbhCysou=E4KNdgnd)WxZZ3xRKjfIPR<=>##?R{h5Wr)fllkcH56kr0#;~0B_@yv}WVG*!5bATCUZtmQ{yJT$4yS|v) zKmlOjQtL9qbo= zV#3BDX5&jQU4a6m;5NPYhDuF{V}V<};s-@uTBt`lHL$W)dj*`)u*-cXLfURu=+r2# zuZOgU=t*04;62g#+~=g~V*XM=Q=MAWV~*ByPC78>(QrTwu)2H@#-5#@M>yu{!|u?F z`$P&Bsk4H5L({LGU_uIx_T_MPAgag3r8%SsJKxJlAzz&Cf~z$;g33F9!U|{^wV3q} zYw0^rUYrSy)5=6r7T;s!Z1LC;ybPf+H8G*gGM#MC?2Z_oW%u~~`csHfsLkofH$VEJ z!g}EmgkZ&3TJN}U&BKLuz~zWoUQW#^6ucH)rnI-vFdsmJP381;PZ{ZpbHn4l3_)#v zM@De9KIxbp^j3+%d#+(xjGJ&Rh6v%G$&o0LFr{T>aS7#TbT|UN=)*uv>PK5j{N8K5 z(RA>Ry)e>yT}q+*8ndO5J&qp_uCmMIW0Y zO@a;CbP);RKXLx&!O^}rT!7@0cY9{)%GyO88-Ax1O10<>wJDGUHSv4l<7cVbgq%CmjgMM({KiTmVt>2qyDjL-t!j9(A*z8To zMXNb)d^PTI7jlXYi=Nu-);G{N9AzL;)nx`1$}ckXe4gF|`ovGqjoH{Z$LWi7TUPfs zCq^AR|8!RR0;xd#1sKD?x$@`fK2lJC{4hs<3(P_Xb-yMbF=)Gjf<_(g8brideC$1% zZIYb)e!4K{7e^=DocDm(I6~AOQ+u*_{_H#zxx7p{eP%1b_f#(Cx-^-VbrK zSH5S>HsBKx?0zGOe&VfTq*?gF_~af=_kofUm;HBeoK}_q;cb{&oSb6TD`R8hhgl}^ zW-eO8w+02PdirPH$nl=!CA>h{ym5M1aLp?0ui(GBdtLnlR*mYtk0Tv0Eg_4Qg<1th zb@kQhdQUUy6qvJy5GI5zqj9AQa@A!In!yYOQOlp3Lj$!f+-rFDpH9sM=nGt#EN zL91b;Wu%;})bS96qs%umh6IOR9;3M2KI^V~=b4)Lxa~cnn+qGy0QQBC(a~o+4Mrah z8Not+xG(tAR9(X1%78f5(i14j5I!Y#&*#X2SLZtjZ5iI~gCC3esK#W9X9hYKM??&! zIkpz_nK0NVW_lgqH*W@Bp0jXFMq)z-1_-2t#xxUk!bb=JuwhQ8#u6g{ZORYwp!m>s z*qJMd)nh%8)1h=W@dEVB}<5zReJzDiF0^esqK-tTt1Ym=!q(<$}S34q9yO4)mmSd4-DM=l$>I+fBfS2ikgx#-G|%U znO+yNB5l7fu2Q#G>G;fxT?fr9boa^hY;pn(C2`Pg;h>=mpJTVI2rr*;Pi!n^ZBjR)P6N4 z_!KTU>9gvtV{iQq^ztBL|C>kD;c7!@LL~RWaUJ%VR=NJ_?yd*+0%d(=;qogu27Ep8 zxIo2p)Z5j&SdzO!-Il`V{jO=e01(yXE9jtc5K?p5g9<&ECu3(XWn&+D)q88D><0NI zHyK$nj+d9O1BbCP@L4yQAIq(1UM}hE%!O)RCO3N_)O{&voL(C}E3o=%gZeEfq zF1^n1VO8KVvyfX;s`K-2iV1On58cNY0&in0@P1f@#tBtqD^JPH9YhHtL;Wp7IvCK- zC}t^hu+3Ti+2+6%G>n4bJTGCQP3Gk6u#%qN>(lk?=e2T!a*W9C0!DCu*R$Km^v%za!Vw=(7RoUfQ#>e zxUrp|3muDia%m2W?NNej-QCh|2XE#Y@!iT^Fq7XTqHOdP@~i+Afq>ji_vvAnm$Z4X z`85_1NL`^$hBBG0T^a~k)AK~lydudJ}g+#Xb+Ex4B?$8Id#rBajvoszXx{pRN zW*&ZS06`F+jMJ+^M-Lh zm{1ftQzb<#)4q53I14`qW%`eGcIUl}N*zgrP(ACFZ?hLQ~S!qLi$Aq@qv&2%WUp&vvzGbl<;r ztJL`z@t?KW^yt)s0`|xac=Ly)$Rg*1mEvpXC+jOKpp~vB;ebI~Gsr|GTndxx%RgcY zj3}QE{(LcNi?RupGO|bjyHaQOHgC!iyvKmnNc&Y6?ss=IV4$;q$Mf`KC&y#wDHn#uR~ zJ^3uKC-h8aNl>gt>xq6yF5KSp>foH z*7DLH)B^oZKaml__3H6~HQy!M0Zo2=F8WN(3cD1$uM- zJUFSz;CEKQh4&fB;F0C4UtEi~NJ#kHn7qMN2`v*vQ_-=X`wreQKYW$3fox5Pjnh`CGqL=3yFb~5K)>9x051|!GVo}S4~ z^PVJ)IU=fe@ORY3JJ3xacgU%WRt#N)J9-;pRY`b!Lh|XslW$3tgNFKL=WWNw2XTJS zj776|c2$NP?`&kPF?HG*({Mc%vs?a-4+=QuZ{GY;Q-XRUFRm}=;}>*7FSidX+b?WD z#js|5XluG-abgp$I+8)bW=g%jl+%*Jv6d7RA0L0wprnUb3_K6QvAh#DKX~GE{Qdjx z3AhG(W70hF^h<8$OZM#zEm?)W$|^UJUg3`)bk;gDR_UiCPBF7kRM* zAsl8XdM40I$AA|XJD zt|WfQzY|if)3#P;UKxQzlWPyw`sFFOxVmV^>;_yJ_ZJgA+mvX$Fc3i6HNQ)&`F214 zOl3=cBkrM@U{ZIs}$AQDvy&cLD^id-b zKjkhz9yBzX%9A-sb1=NHCPatwv6#<^eLKut} z*X-3yNE`V;!tLX|;)&>}FmcxqcENj8RFBdJ6qFnrm7lh|wmMM*&I;+#u#$Q@G|-R| z$08`G$V{cHVNgE&fq-pbP)#+C^j@>Fhk%%vWKkh;WXCJR;Z%%QIBdB+YpsX2iG$84 zGlE_8bwGT7G+$ep)%jRQVBjOtKf*Wv<4w!B!~DX+3}I*010`X2T#C2KDQw@hLvyT6 zRO`1D(C#hI+xFN~nI2h=3@>@y_d##u1jg6D3`^#2SL4DZB-}=5d&;i}e(T&wAC1je zX9vvi%(7L$ftS?k-LQgp$t53M-AHS4M@=oqEhicJh25UtY~77ZbF4lsc0C<@WnGyO zy^D4vwko@6`QiF3Da3`8H%CN7QS7!o3hh|nxwJaWDBg`^Aj~y+ z%(zbBLWZv3Fk3u0=43Xy8&Ou~sH~+{7Tz!-ttcTS6-rtXX zn)wq(FNAli;D#GPNL*zHE<_Un*kwzg#Zh~S?lUEsUDlo`guVvd2S$wz9=e8sLG3g8 zr1t=!5vw|xCliyS@WMm$v*P;mC3)(*bl=L%0M(eUU6k7#-J?XQv;$;PsbV~?$4@

I{^odwl1vxce*<7|sdRp}s6}_6` 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

+ + + diff --git a/website/capture/crew-work-log-sweep.tsx b/website/capture/crew-work-log-sweep.tsx new file mode 100644 index 00000000000..475cbc3b02a --- /dev/null +++ b/website/capture/crew-work-log-sweep.tsx @@ -0,0 +1,136 @@ +/** + * Evidence for the crew work log's crew-level line. + * + * WHAT CHANGED: a crew that swept its queue and took nothing can now record the + * cycle. That line belongs to no issue, so the backend omits `number` from it + * entirely. The Issue column is monospaced and right-aligned against real issue + * numbers, so rendering the absent value straight would print a bare `#` and + * read as a number that failed to load; it renders an em dash instead, and the + * OUTCOME badge carries the new `sweep` kind. + * + * WHY A HARNESS: the work log lives inside `CrewPageView`, which needs the whole + * Issue Radar context and a live gateway to reach. The page's only input is + * `GET /api/apps/issue-radar/crew`, so stubbing that one response renders the + * REAL view -- real classes, real Tailwind output, real theme tokens, real + * catalog -- with nothing re-implemented here. The frame therefore shows what + * ships, including the numbered rows beside the crew-level one, which is the + * comparison the change is about. + * + * Theme via query string: ?theme=dark|light + */ +import { createRoot } from 'react-dom/client' +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { Provider } from 'react-redux' +import { MemoryRouter } from 'react-router-dom' + +import type { CrewDetailResponse } from '../src/apps/issue-radar/api' +import CrewPageView from '../src/apps/issue-radar/views/CrewPageView' +import { IssueRadarProvider } from '../src/apps/issue-radar/context' +import { initI18n } from '../src/i18n/all' +import { store } from '../src/store' +import '../src/index.css' + +const params = new URLSearchParams(location.search) +const theme = params.get('theme') === 'light' ? 'light' : 'dark' +document.documentElement.setAttribute('data-theme', theme === 'light' ? 'kiro-light' : 'kiro-dark') + +const OWNER = 'kirodotdev' +const REPO = 'Kiro' +const CREW = 'c_1a2b3c4d' + +/** An ISO stamp `hours` before now, so every row lands inside the 24h window and + * the Earlier divider stays out of the frame. */ +const ago = (hours: number) => new Date(Date.now() - hours * 3_600_000).toISOString() + +const PAYLOAD: CrewDetailResponse = { + crew: { + schema: 1, + id: CREW, + name: 'Andromeda', + avatar_seed: CREW, + avatar_variant: 2, + agent: 'kirocrew', + model: 'claude-opus-5', + extra_prompt: '', + labels: ['area: apps'], + auto_resolve_conflicts: false, + auto_merge: false, + unattended: true, + max_open: 3, + worktree_root: '', + slot_key: `crew-${CREW}`, + enabled: true, + paused_reason: '', + created_at: ago(72), + retired_at: null, + }, + items: [ + { + schema: 1, crew_id: CREW, owner: OWNER, repo: REPO, number: 2251, + phase: 'awaiting-ci', outcome: null, decision: '', why: '', + next: 'Wait out CI round 3, then re-read the two inherited reds before rebasing.', + tried: [], worktree: '', branch: 'fix/safe-chmod-windows', base_sha: '', + pr_number: 2288, ci_state: { passed: 41, total: 47, round: 3 }, + claim_comment_id: null, labels_applied: [], + claimed_at: ago(30), last_progress_at: ago(1), finished_at: null, + }, + ], + events: [ + // The crew-level line: no `number` key at all, which is what the Issue cell + // has to render honestly. It is also the NEWEST line, so its stretch is still + // open and its WHEN column reads as ongoing. + { + id: 'ev-sweep', ts: ago(0.4), crew_id: CREW, kind: 'sweep', + text: 'checked 42 open issues, took none -- every candidate is claimed or skipped', + }, + // Numbered siblings, unchanged, so the frame shows the contrast rather than + // one row in isolation. + { id: 'ev-ci', ts: ago(1), crew_id: CREW, number: 2251, kind: 'ci', text: 'CI round 3 -- 41/47 green, 2 inherited from main' }, + { id: 'ev-impl', ts: ago(3), crew_id: CREW, number: 2251, kind: 'implement', text: 'added the Windows branch to _safe_chmod' }, + { id: 'ev-claim', ts: ago(6), crew_id: CREW, number: 2251, kind: 'claim', text: 'took it -- regression test already fails on main' }, + // A SECOND crew-level line, older than that work: this stretch has ENDED, so + // the same kind must render as a plain past instant. Both cases in one frame, + // because the qualifier is keyed on recency and a frame showing only the open + // stretch could not tell the two apart. + { + id: 'ev-sweep-closed', ts: ago(9), crew_id: CREW, kind: 'sweep', + text: 'checked 39 open issues, took none', + }, + ], + counts: { open: 1 }, +} + +// Only the crew endpoint is stubbed; anything else falls through so a missed +// dependency surfaces as a real network error instead of an empty render. +const realFetch = window.fetch.bind(window) +window.fetch = ((input: RequestInfo | URL, init?: RequestInit) => { + const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url + if (url.includes('/apps/issue-radar/crew?')) { + return Promise.resolve(new Response(JSON.stringify(PAYLOAD), { + status: 200, headers: { 'Content-Type': 'application/json' }, + })) + } + return realFetch(input as RequestInfo, init) +}) as typeof window.fetch + +const active = { owner: OWNER, repo: REPO, provider: 'github' as const, host: 'github.com' } + +initI18n('en') +createRoot(document.getElementById('root')!).render( + + + + {}} + onAddRepo={() => {}} + > +
+ +
+
+
+
+
, +) diff --git a/website/scripts/capture-crew-work-log-sweep.mjs b/website/scripts/capture-crew-work-log-sweep.mjs new file mode 100644 index 00000000000..dc78f387499 --- /dev/null +++ b/website/scripts/capture-crew-work-log-sweep.mjs @@ -0,0 +1,49 @@ +/** + * Screenshot of the crew work log showing a crew-level `sweep` line beside + * numbered rows, via the capture/crew-work-log-sweep harness (which stubs only + * GET /api/apps/issue-radar/crew). Asserts the sweep row's Issue cell holds an em + * dash and no `#` before shooting -- the whole point of the frame -- so a harness + * that silently stopped rendering the row cannot produce a green screenshot. + * + * Usage: node scripts/capture-crew-work-log-sweep.mjs + */ +import { chromium } from 'playwright' + +const base = process.argv[2] || 'http://127.0.0.1:5199' +const out = process.argv[3] || '../temp-screenshots/crew-empty-queue/work-log-sweep.png' + +const b = await chromium.launch() +const p = await (await b.newContext({ viewport: { width: 1180, height: 900 }, deviceScaleFactor: 2 })).newPage() +await p.goto(`${base}/capture/crew-work-log-sweep.html?theme=dark`, { waitUntil: 'networkidle' }) + +const sweepRow = p.locator('[data-testid="work-log-row-ev-sweep"]') +await sweepRow.waitFor({ state: 'visible', timeout: 15_000 }) +const issueCell = sweepRow.locator('td').nth(1) +const cellText = (await issueCell.textContent())?.trim() +if (cellText !== '\u2014') { + throw new Error(`sweep row Issue cell is ${JSON.stringify(cellText)}, expected an em dash`) +} +const numbered = await p.locator('[data-testid="work-log-row-ev-ci"] td').nth(1).textContent() +if (numbered?.trim() !== '#2251') { + throw new Error(`numbered row Issue cell is ${JSON.stringify(numbered)}, expected #2251`) +} + +// Both sweep rows must read as PAST INSTANTS. Neither may carry a present-tense +// qualifier: nothing on this page evidences that a crew is alive, so a row claiming +// ongoing activity would misreport a crashed crew as a healthily idle one. +const newestWhen = (await sweepRow.locator('td').nth(0).textContent())?.trim() ?? '' +const olderWhen = ( + await p.locator('[data-testid="work-log-row-ev-sweep-closed"] td').nth(0).textContent() +)?.trim() ?? '' +for (const [label, text] of [['newest', newestWhen], ['older', olderWhen]]) { + if (/since/i.test(text)) { + throw new Error(`${label} sweep reads ${JSON.stringify(text)}, expected a bare timestamp`) + } + if (!text) { + throw new Error(`${label} sweep has an empty WHEN cell`) + } +} + +await p.locator('[data-testid="capture-frame"]').screenshot({ path: out }) +console.log(`captured ${out} (em dash, numbered sibling, and both sweeps as past instants)`) +await b.close() diff --git a/website/src/apps/issue-radar/api.ts b/website/src/apps/issue-radar/api.ts index 10cd68bd88a..7c0c7099c04 100644 --- a/website/src/apps/issue-radar/api.ts +++ b/website/src/apps/issue-radar/api.ts @@ -960,10 +960,13 @@ export const CREW_PHASES = [ export type CrewPhase = typeof CREW_PHASES[number] /** Mirrors `crew_store.EVENT_KINDS`. The store REFUSES an unknown kind, so this - * union is enforced server-side rather than merely documented. */ + * union is enforced server-side rather than merely documented. + * + * `sweep` is the one kind that belongs to no issue — a crew reporting that it + * checked the queue and took nothing — so its lines carry no `number`. */ export const CREW_EVENT_KINDS = [ 'claim', 'investigate', 'reply', 'implement', 'ci', - 'review', 'conflict', 'merge', 'handback', 'skip', 'yield', + 'review', 'conflict', 'merge', 'handback', 'skip', 'yield', 'sweep', ] as const export type CrewEventKind = typeof CREW_EVENT_KINDS[number] @@ -1090,7 +1093,10 @@ export interface CrewEvent { id: string ts: string crew_id: string - number: number + /** ABSENT on a crew-level line (`kind: 'sweep'`), which belongs to no issue. + * Optional rather than nullable because the backend omits the key entirely — + * a `0` would be indistinguishable from a real issue number. */ + number?: number kind: CrewEventKind text: string } diff --git a/website/src/apps/issue-radar/views/CrewPageView.tsx b/website/src/apps/issue-radar/views/CrewPageView.tsx index 9f7c00248fb..34a8b02dc9c 100644 --- a/website/src/apps/issue-radar/views/CrewPageView.tsx +++ b/website/src/apps/issue-radar/views/CrewPageView.tsx @@ -122,6 +122,7 @@ const KIND_LABEL_KEY: Record = { 'handback': 'apps.issueRadar.views.crews.page.kind_handback', 'skip': 'apps.issueRadar.views.crews.page.kind_skip', 'yield': 'apps.issueRadar.views.crews.page.kind_yield', + 'sweep': 'apps.issueRadar.views.crews.page.kind_sweep', } function phaseVariant(phase: CrewPhase): 'ok' | 'err' | 'warn' | 'aim' | 'muted' { @@ -139,9 +140,21 @@ function kindVariant(kind: CrewEventKind): 'ok' | 'err' | 'warn' | 'aim' | 'mute if (kind === 'merge') return 'ok' if (kind === 'ci' || kind === 'conflict') return 'warn' if (kind === 'skip' || kind === 'yield' || kind === 'handback') return 'muted' + // A sweep took no work, so it reads as background like the other did-not-act + // kinds rather than competing with the lines that moved something. + if (kind === 'sweep') return 'muted' return 'aim' } +/** The Issue cell's text for one ledger line. + * + * A crew-level line has no issue, and the honest cell is an em dash rather than + * `#` followed by nothing: the column is monospaced and right-aligned against + * numbers, so a bare `#` reads as a number that failed to load. */ +function issueCell(number: number | undefined): string { + return number === undefined ? '—' : `#${number}` +} + /** A calendar date with the year elided while it is THIS year — `Aug 6` now, * `Aug 6, 2025` once the year turns, so an old stamp can never read as recent. * Both widths come from `Intl` under the active UI locale (never the host's). */ @@ -525,7 +538,7 @@ export default function CrewPageView({ crewId, onEdit }: CrewPageViewProps) { {fmtRelative(e.ts, { now: log.nowMs })} - #{e.number} + {issueCell(e.number)} {e.text} {t(KIND_LABEL_KEY[e.kind])} @@ -544,7 +557,7 @@ export default function CrewPageView({ crewId, onEdit }: CrewPageViewProps) { {shortDate(e.ts, log.nowMs)} - #{e.number} + {issueCell(e.number)} {e.text} {t(KIND_LABEL_KEY[e.kind])} diff --git a/website/src/i18n/locales/bn.json b/website/src/i18n/locales/bn.json index ad1a9eac553..46c23347a93 100644 --- a/website/src/i18n/locales/bn.json +++ b/website/src/i18n/locales/bn.json @@ -2304,6 +2304,7 @@ "kind_reply": "উত্তর দিয়েছে", "kind_review": "রিভিউ", "kind_skip": "পরিধির বাইরে", + "kind_sweep": "পরীক্ষিত", "kind_yield": "ছেড়ে দিয়েছে", "no_next_recorded": "পরবর্তী ধাপ কিছু লেখা নেই", "no_open_work_items": "কিছুই চলছে না", diff --git a/website/src/i18n/locales/de.json b/website/src/i18n/locales/de.json index 8bd1e46b8b5..b24beb56a01 100644 --- a/website/src/i18n/locales/de.json +++ b/website/src/i18n/locales/de.json @@ -2348,6 +2348,7 @@ "kind_reply": "Geantwortet", "kind_review": "Review", "kind_skip": "Übergangen", + "kind_sweep": "Geprüft", "kind_yield": "Freigegeben", "no_next_recorded": "kein nächster Schritt vermerkt", "no_open_work_items": "Nichts in Arbeit", diff --git a/website/src/i18n/locales/en-XA.json b/website/src/i18n/locales/en-XA.json index 86cc1b0d19e..1c0c5784d17 100644 --- a/website/src/i18n/locales/en-XA.json +++ b/website/src/i18n/locales/en-XA.json @@ -2571,6 +2571,7 @@ "kind_reply": "[Ŕèþĺìèð ···········]", "kind_review": "[Ŕèṽìèẁ ·········]", "kind_skip": "[Þàşşèð ·········]", + "kind_sweep": "[Şẁèþţ ········]", "kind_yield": "[Ýìèĺðèð ···········]", "no_next_recorded": "[ñø ñèẋţ şţèþ ŕèçøŕðèð ···············]", "no_open_work_items": "[Ñøţĥìñğ ìñ ƒĺìğĥţ ···············]", diff --git a/website/src/i18n/locales/en.manual.json b/website/src/i18n/locales/en.manual.json index 02effd66ad7..6adc555818f 100644 --- a/website/src/i18n/locales/en.manual.json +++ b/website/src/i18n/locales/en.manual.json @@ -685,6 +685,7 @@ "kind_reply": "Replied", "kind_review": "Review", "kind_skip": "Passed", + "kind_sweep": "Swept", "kind_yield": "Yielded", "no_next_recorded": "no next step recorded", "no_open_work_items": "Nothing in flight", diff --git a/website/src/i18n/locales/es.json b/website/src/i18n/locales/es.json index d88d97db103..6cc8f302102 100644 --- a/website/src/i18n/locales/es.json +++ b/website/src/i18n/locales/es.json @@ -2354,6 +2354,7 @@ "kind_reply": "Respondida", "kind_review": "Revisión", "kind_skip": "Descartada", + "kind_sweep": "Revisado", "kind_yield": "Liberada", "no_next_recorded": "sin siguiente paso registrado", "no_open_work_items": "Nada en curso", diff --git a/website/src/i18n/locales/fr.json b/website/src/i18n/locales/fr.json index a607f8e9fce..a095fdcba3a 100644 --- a/website/src/i18n/locales/fr.json +++ b/website/src/i18n/locales/fr.json @@ -2398,6 +2398,7 @@ "kind_reply": "Répondu", "kind_review": "Revue", "kind_skip": "Écarté", + "kind_sweep": "Parcouru", "kind_yield": "Libéré", "no_next_recorded": "aucune étape suivante enregistrée", "no_open_work_items": "Rien en cours", diff --git a/website/src/i18n/locales/hi.json b/website/src/i18n/locales/hi.json index 6316ac35aeb..c2e481e2f40 100644 --- a/website/src/i18n/locales/hi.json +++ b/website/src/i18n/locales/hi.json @@ -2517,6 +2517,7 @@ "kind_reply": "जवाब दिया", "kind_review": "समीक्षा", "kind_skip": "दायरे से बाहर", + "kind_sweep": "जाँचा गया", "kind_yield": "छोड़ दिया", "no_next_recorded": "अगला क़दम दर्ज नहीं", "no_open_work_items": "कुछ भी चालू नहीं", diff --git a/website/src/i18n/locales/it.json b/website/src/i18n/locales/it.json index c859519cc40..ec76742980b 100644 --- a/website/src/i18n/locales/it.json +++ b/website/src/i18n/locales/it.json @@ -2354,6 +2354,7 @@ "kind_reply": "Risposto", "kind_review": "Revisione", "kind_skip": "Scartata", + "kind_sweep": "Verificato", "kind_yield": "Rilasciata", "no_next_recorded": "nessun passo successivo registrato", "no_open_work_items": "Niente in corso", diff --git a/website/src/i18n/locales/ja.json b/website/src/i18n/locales/ja.json index 943aeff1eb5..1d7cb97b410 100644 --- a/website/src/i18n/locales/ja.json +++ b/website/src/i18n/locales/ja.json @@ -2304,6 +2304,7 @@ "kind_reply": "返信済み", "kind_review": "レビュー", "kind_skip": "対象外", + "kind_sweep": "確認済み", "kind_yield": "取り下げ", "no_next_recorded": "次の手順は記録されていません", "no_open_work_items": "進行中の作業はありません", diff --git a/website/src/i18n/locales/ko.json b/website/src/i18n/locales/ko.json index 6a78286fc94..018bc4613eb 100644 --- a/website/src/i18n/locales/ko.json +++ b/website/src/i18n/locales/ko.json @@ -2298,6 +2298,7 @@ "kind_reply": "답변함", "kind_review": "리뷰", "kind_skip": "범위 외 판단", + "kind_sweep": "확인함", "kind_yield": "양보함", "no_next_recorded": "기록된 다음 단계 없음", "no_open_work_items": "진행 중인 작업 없음", diff --git a/website/src/i18n/locales/pt.json b/website/src/i18n/locales/pt.json index 8e20f19ff07..a8b6b68580f 100644 --- a/website/src/i18n/locales/pt.json +++ b/website/src/i18n/locales/pt.json @@ -2354,6 +2354,7 @@ "kind_reply": "Respondido", "kind_review": "Revisão", "kind_skip": "Dispensado", + "kind_sweep": "Verificado", "kind_yield": "Liberado", "no_next_recorded": "nenhum próximo passo registrado", "no_open_work_items": "Nada em andamento", diff --git a/website/src/i18n/locales/ru.json b/website/src/i18n/locales/ru.json index fe0dad650a3..668d86bf28c 100644 --- a/website/src/i18n/locales/ru.json +++ b/website/src/i18n/locales/ru.json @@ -2404,6 +2404,7 @@ "kind_reply": "Отвечено", "kind_review": "Ревью", "kind_skip": "Отклонено", + "kind_sweep": "Проверено", "kind_yield": "Отпущено", "no_next_recorded": "следующий шаг не записан", "no_open_work_items": "Ничего в работе", diff --git a/website/src/i18n/locales/zh-CN.json b/website/src/i18n/locales/zh-CN.json index c41df2135b0..e0ea6f5b8ce 100644 --- a/website/src/i18n/locales/zh-CN.json +++ b/website/src/i18n/locales/zh-CN.json @@ -2254,6 +2254,7 @@ "kind_reply": "已回复", "kind_review": "评审", "kind_skip": "超范围略过", + "kind_sweep": "已巡检", "kind_yield": "已让出", "no_next_recorded": "未记录下一步", "no_open_work_items": "没有进行中的工作", diff --git a/website/src/test/IssueRadarCrewPage.test.tsx b/website/src/test/IssueRadarCrewPage.test.tsx index e98e4409f7e..717147b029e 100644 --- a/website/src/test/IssueRadarCrewPage.test.tsx +++ b/website/src/test/IssueRadarCrewPage.test.tsx @@ -287,6 +287,82 @@ describe('CrewPageView — work log 24h boundary', () => { await screen.findByTestId('work-log-row-e-1h') expect(screen.queryByTestId('work-log-earlier')).not.toBeInTheDocument() }) + + it('renders a crew-level line with an em dash rather than a bare hash', async () => { + // A `sweep` line records that the crew checked the queue and took nothing, so + // it belongs to no issue and the backend omits `number` entirely. The Issue + // column is monospaced and right-aligned against real numbers, so a bare `#` + // would read as a number that failed to load. + const sweep = event('e-sweep', 1, { + kind: 'sweep', + text: 'checked 42 open issues, took none', + number: undefined, + }) + api.crew.mockResolvedValue(payload({ events: [sweep, event('e-ci', 2)] })) + renderPage() + + const row = await screen.findByTestId('work-log-row-e-sweep') + const issueCell = within(row).getAllByRole('cell')[1] + expect(issueCell.textContent).toBe('\u2014') + expect(issueCell.textContent).not.toContain('#') + // The numbered sibling is untouched, so the guard is on absence, not on kind. + const numbered = within(screen.getByTestId('work-log-row-e-ci')).getAllByRole('cell')[1] + expect(numbered.textContent).toBe('#2251') + }) + + it('translates the sweep kind through the catalog like every other kind', async () => { + const sweep = event('e-sweep', 1, { kind: 'sweep', text: 'queue empty', number: undefined }) + api.crew.mockResolvedValue(payload({ events: [sweep] })) + renderPage() + + const row = await screen.findByTestId('work-log-row-e-sweep') + expect(within(row).getByText(copy('kind_sweep'))).toBeInTheDocument() + }) + + it('renders a sweep timestamp as a past instant, making no claim about now', async () => { + // The WHEN column states when the line was written and nothing more. An + // earlier revision qualified the newest sweep as "checking since ...", which + // reads as a present-tense activity claim -- and nothing here evidences that a + // crew is alive: a crash or a lost timer leaves `enabled` true, so the row + // would have asserted ongoing checking for a crew that had stopped, masking + // the one failure mode this view exists to help an operator notice. A bare + // timestamp cannot make that claim, so a sweep reads like every other kind. + const sweep = event('e-sweep', 1, { kind: 'sweep', text: 'queue empty', number: undefined }) + api.crew.mockResolvedValue(payload({ events: [sweep, event('e-ci', 3)] })) + renderPage() + + const when = within(await screen.findByTestId('work-log-row-e-sweep')).getAllByRole('cell')[0] + // The relative string comes from the real formatter, not a hardcoded literal: + // its wording is locale data, so pinning "1 hour ago" would assert the + // formatter's current output rather than this row's own rendering. + const rendered = (await import('../i18n/format')).fmtRelative(ago(1), { now: NOW.getTime() }) + expect(when.textContent).toBe(rendered) + }) + + it('renders a sweep the same whether the crew is running or paused', async () => { + // The rendering cannot depend on liveness, because the page has no evidence of + // it. Asserting both states pins that: a future qualifier gated on `!paused` + // would fix only the operator-pause mode and still misreport a crashed crew. + const sweep = event('e-sweep', 2, { kind: 'sweep', text: 'queue empty', number: undefined }) + const expected = (await import('../i18n/format')).fmtRelative(ago(2), { now: NOW.getTime() }) + + api.crew.mockResolvedValue(payload({ events: [sweep] })) + const running = renderPage() + const whenRunning = within( + await screen.findByTestId('work-log-row-e-sweep'), + ).getAllByRole('cell')[0] + expect(whenRunning.textContent).toBe(expected) + running.unmount() + + api.crew.mockResolvedValue( + payload({ crew: crew({ enabled: false, paused_reason: 'operator paused' }), events: [sweep] }), + ) + renderPage() + const whenPaused = within( + await screen.findByTestId('work-log-row-e-sweep'), + ).getAllByRole('cell')[0] + expect(whenPaused.textContent).toBe(expected) + }) }) describe('CrewPageView — the next column', () => {

o|I{8e6n+7>tMOdXK$_+s2H3AA`DUrOL@bX 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 Cgrm&> literal 0 HcmV?d00001 diff --git a/test/test_issue_radar_crew_mcp_tools.py b/test/test_issue_radar_crew_mcp_tools.py index 6f0dce848ed..beaecb5a272 100644 --- a/test/test_issue_radar_crew_mcp_tools.py +++ b/test/test_issue_radar_crew_mcp_tools.py @@ -216,11 +216,23 @@ def test_read_takes_no_arguments_at_all(self): assert spec["inputSchema"]["properties"] == {} assert MCP_CORE_SCHEMAS[READ_TOOL].fields == [] - def test_record_requires_only_the_issue_number(self): + def test_record_requires_nothing_unconditionally(self): + # `number` USED to be required, which left a crew that swept an empty + # queue no way to record the cycle without inventing an issue number. The + # coupling that replaced the requirement (a missing number is valid only + # with `sweep`, and `sweep` only without one) is a relation between two + # fields, which neither schema can express — it lives on the write route + # and in the store, so both schemas must agree that nothing is required. required = {f.name for f in MCP_CORE_SCHEMAS[RECORD_TOOL].fields if f.required} - assert required == {"number"} + assert required == set() spec = next(t for t in mcp_core._list_tools() if t["name"] == RECORD_TOOL) - assert spec["inputSchema"]["required"] == ["number"] + assert spec["inputSchema"]["required"] == [] + + def test_record_advertises_the_crew_level_sweep_kind(self): + # Advertised, or the model cannot discover the one kind that lets it + # report a cycle it did no work in. + spec = next(t for t in mcp_core._list_tools() if t["name"] == RECORD_TOOL) + assert "sweep" in spec["inputSchema"]["properties"]["event_kind"]["enum"] def test_record_advertises_no_identity_arguments(self): props = next( @@ -493,6 +505,65 @@ def test_the_local_resume_fields_survive_verbatim(self): assert body["base_sha"] == "f2aa4c8bb" +class TestACrewCanReportAnEmptyQueue(unittest.TestCase): + """The numberless call — `event_kind: sweep` with no `number`. + + `number` was the tool's one required field, so a crew that checked its queue + and took nothing could only record the cycle by naming an issue it never + acted on. These assert the absence travels as an ABSENCE: the route reads a + missing key as "this step has no issue", and a `0` standing in for it would + be rejected as a malformed issue number instead. + """ + + @staticmethod + def _sweep(put_result: dict | None = None, **over): + args = {"event": "checked 42 open issues, took none", "event_kind": "sweep"} + args.update(over) + cleaned = validate_tool_args(args, MCP_CORE_SCHEMAS[RECORD_TOOL]) + captured: dict = {} + + def fake_put(path, body=None, session_key=None): + captured["body"] = body + return put_result if put_result is not None else { + "item": None, "skip": None, + "event": {"text": body.get("event") or ""}, + } + + with patch.object( + mcp_core, "_resolve_session_key_strict", return_value="crew-c_7f3a" + ): + with patch.object(mcp_core, "_get", return_value=CREW_PAYLOAD): + with patch.object(mcp_core, "_put", side_effect=fake_put): + out = mcp_core._call_tool_inner(RECORD_TOOL, cleaned) + return captured, out + + def test_a_sweep_validates_without_a_number(self): + cleaned = validate_tool_args( + {"event": "queue empty", "event_kind": "sweep"}, + MCP_CORE_SCHEMAS[RECORD_TOOL], + ) + assert "number" not in cleaned + + def test_the_number_key_is_omitted_from_the_request(self): + captured, _ = self._sweep() + # Omitted, not zero: the route reads a present-but-invalid number as a + # 400, so sending 0 would fail the write rather than record the sweep. + assert "number" not in captured["body"] + assert set(captured["body"]) == {"owner", "repo", "crew_id", "event", "event_kind"} + + def test_the_summary_names_the_crew_rather_than_a_bare_hash(self): + _, out = self._sweep() + assert "#" not in out.splitlines()[0] + assert "no issue" in out + assert "checked 42 open issues, took none" in out + + def test_a_numbered_call_still_sends_and_reports_its_number(self): + # The guard is on presence, so the ordinary path must be untouched. + captured, out = _record(number=12, event="took it", event_kind="claim") + assert captured["body"]["number"] == 12 + assert "#12" in out + + class TestCiStateAssembly(unittest.TestCase): """The flat ci_* args become the store's ``ci_state`` dict.""" diff --git a/test/test_issue_radar_crew_routes.py b/test/test_issue_radar_crew_routes.py index 2f80ad55095..d9854f31ca2 100644 --- a/test/test_issue_radar_crew_routes.py +++ b/test/test_issue_radar_crew_routes.py @@ -726,6 +726,144 @@ async def test_a_malformed_agent_body_is_still_400_not_403(self): self.assertEqual(_payload(res)["code"], "invalid_json") +# ── a step that belongs to no issue ───────────────────────────────────────── + + +class TestACrewCanRecordAnEmptyQueue(_CrewRouteCase): + """``PUT /crew/work`` with NO ``number`` — the empty-queue checkpoint. + + A crew that swept its queue and took nothing had no way to record the cycle: + the route required a number because the number becomes a work-item filename, + so the only way to report "checked, nothing to take" was to attribute it to an + issue the crew never acted on. The ledger therefore either lied or stayed + silent, and a resumed crew could not tell the two apart. + + The pairing is asserted in BOTH directions. Accepting an item kind with no + number would only move the fabrication into the store, and accepting the + crew-level kind WITH a number files a sweep under an issue it never touched — + the same false attribution written the other way round. + """ + + def agent(self, crew: dict) -> str: + return f"dashboard:{crew['slot_key']}" + + async def test_a_sweep_needs_no_number_and_writes_no_work_item(self): + crew = self.crew("Andromeda") + res = await self.call( + "PUT", "/crew/work", + body={"event": "checked 42 open issues, took none", "event_kind": "sweep"}, + internal_auth=True, session=self.agent(crew), + ) + self.assertEqual(res.status, 200) + body = _payload(res) + # Same envelope as a numbered write, so the MCP tool reads one shape; + # `coalesced` rides alongside it to say whether a line was written. + self.assertTrue({"item", "event", "skip"}.issubset(set(body))) + self.assertIsNone(body["item"]) + self.assertIsNone(body["skip"]) + self.assertFalse(body["coalesced"]) + self.assertEqual( + [e["text"] for e in self.ledger(crew["id"])], + ["checked 42 open issues, took none"], + ) + # Absent, not zero — a `0` would read as a real issue everywhere. + self.assertNotIn("number", self.ledger(crew["id"])[0]) + self.assertEqual(crew_store.list_work_items(OWNER, REPO, crew["id"], self.root), []) + + async def test_an_idle_crew_does_not_bury_its_own_work_log(self): + """Repeated idle cycles must not run the ledger away. + + Every ledger read is capped and drops the OLDEST line first, so one line + per nudge would push the crew's real history out of the log this feature + exists to make honest. + """ + crew = self.crew("Andromeda") + body = {"event": "queue empty", "event_kind": "sweep"} + first = await self.call( + "PUT", "/crew/work", body=body, internal_auth=True, session=self.agent(crew), + ) + again = await self.call( + "PUT", "/crew/work", body={**body, "event": "still empty"}, + internal_auth=True, session=self.agent(crew), + ) + self.assertEqual((first.status, again.status), (200, 200)) + self.assertFalse(_payload(first)["coalesced"]) + self.assertTrue(_payload(again)["coalesced"]) + # One line, and it is the FIRST one -- its timestamp marks when the idle + # stretch began, which is what a human opening a quiet crew wants to know. + self.assertEqual([e["text"] for e in self.ledger(crew["id"])], ["queue empty"]) + + async def test_an_item_kind_without_a_number_is_refused(self): + crew = self.crew("Andromeda") + res = await self.call( + "PUT", "/crew/work", + body={"event": "took something", "event_kind": "claim"}, + internal_auth=True, session=self.agent(crew), + ) + self.assertEqual(res.status, 400) + self.assertEqual(_payload(res)["code"], "number_required") + self.assertEqual(self.ledger(crew["id"]), []) + + async def test_a_sweep_carrying_a_number_is_refused(self): + crew = self.crew("Andromeda") + res = await self.call( + "PUT", "/crew/work", + body={"number": 7, "event": "queue empty", "event_kind": "sweep"}, + internal_auth=True, session=self.agent(crew), + ) + self.assertEqual(res.status, 400) + self.assertEqual(_payload(res)["code"], "unexpected_number") + self.assertEqual(self.ledger(crew["id"]), []) + + async def test_a_present_but_invalid_number_is_not_read_as_a_sweep(self): + """A typo must stay a 400, not become "this step has no issue".""" + crew = self.crew("Andromeda") + res = await self.call( + "PUT", "/crew/work", + body={"number": 0, "event": "took #0", "event_kind": "claim"}, + internal_auth=True, session=self.agent(crew), + ) + self.assertEqual(res.status, 400) + self.assertEqual(_payload(res)["code"], "invalid_number") + self.assertEqual(self.ledger(crew["id"]), []) + + async def test_work_item_fields_are_refused_rather_than_dropped(self): + """Honouring the line while discarding the patch would report a phase + move that was never stored anywhere.""" + crew = self.crew("Andromeda") + res = await self.call( + "PUT", "/crew/work", + body={"event": "queue empty", "event_kind": "sweep", + "phase": "claimed", "ci_state": {"state": "success"}}, + internal_auth=True, session=self.agent(crew), + ) + self.assertEqual(res.status, 400) + self.assertEqual(_payload(res)["code"], "item_fields_without_number") + self.assertIn("'ci_state'", _payload(res)["error"]) + self.assertIn("'phase'", _payload(res)["error"]) + self.assertEqual(self.ledger(crew["id"]), []) + + async def test_a_sweep_still_needs_a_reason(self): + crew = self.crew("Andromeda") + res = await self.call( + "PUT", "/crew/work", body={"event_kind": "sweep"}, + internal_auth=True, session=self.agent(crew), + ) + self.assertEqual(res.status, 400) + self.assertEqual(_payload(res)["code"], "event_required") + + async def test_a_sweep_from_a_non_crew_session_is_refused(self): + """The numberless path must not become a way around the identity gate.""" + self.crew("Andromeda") + res = await self.call( + "PUT", "/crew/work", + body={"event": "queue empty", "event_kind": "sweep"}, + internal_auth=True, session="dashboard:chat-3-1730000000", + ) + self.assertEqual(res.status, 403) + self.assertEqual(_payload(res)["code"], "not_a_crew_session") + + # ── which routes an agent may reach at all ────────────────────────────────── diff --git a/test/test_issue_radar_crew_store.py b/test/test_issue_radar_crew_store.py index a163fb9597a..b92f953720c 100644 --- a/test/test_issue_radar_crew_store.py +++ b/test/test_issue_radar_crew_store.py @@ -30,10 +30,12 @@ every function for exactly this reason, so nothing here touches a real data home. """ +import inspect import json import math import os import threading +import time from contextlib import contextmanager import pytest @@ -588,6 +590,219 @@ def test_unknown_event_kind_is_refused(tmp_path): cs.append_event(OWNER, REPO, crew["id"], 1, "vibes", "…", tmp_path) +# ── crew-level lines (a step that belongs to no issue) ────────────────────── +# +# The invariant these protect is the one the feature exists for: a crew that +# checked the queue and took nothing must be able to SAY so. Before this, the +# only way to record the cycle was to attribute it to an issue the crew never +# acted on, so the ledger either lied or stayed silent. Both directions of the +# pairing are asserted, because a crew-level kind carrying a number is the same +# false attribution written the other way round. + + +def test_a_crew_level_line_omits_the_number_entirely(tmp_path): + crew = _crew(tmp_path) + result = cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "queue empty", tmp_path) + entry = result["event"] + # Absent, NOT zero: a `0` is indistinguishable from a real issue number in + # every filter and join that keys on this field. + assert "number" not in entry + stored = cs.read_events(OWNER, REPO, tmp_path) + assert len(stored) == 1 + assert "number" not in stored[0] + assert (stored[0]["kind"], stored[0]["text"]) == ("sweep", "queue empty") + + +def test_an_item_kind_without_a_number_is_refused(tmp_path): + # Asserted on the shared builder, which is where the pairing lives: the public + # issue-line writer types `number` as `int`, so this case cannot reach it. + with pytest.raises(cs.CrewStoreError, match="needs an issue number"): + cs._event_entry("c_1", None, "claim", "claimed") + + +def test_a_crew_level_kind_with_a_number_is_refused(tmp_path): + crew = _crew(tmp_path) + with pytest.raises(cs.CrewStoreError, match="takes no issue number"): + cs.append_event(OWNER, REPO, crew["id"], 7, "sweep", "queue empty", tmp_path) + + +def test_only_one_writer_shapes_a_numberless_line(tmp_path): + """`append_event` must NOT be a second way to write a crew-level line. + + Coalescing has to read the crew's tail and decide whether to append at all, + under one lock hold, so the crew-level path cannot delegate to + `append_event`. That left two writers for the same shape, one of which no + production code called -- so the issue-line writer now requires a number and + the pairing check in the shared builder refuses a crew-level kind through it. + """ + crew = _crew(tmp_path) + with pytest.raises(cs.CrewStoreError, match="takes no issue number"): + cs.append_event(OWNER, REPO, crew["id"], 1, cs.CREW_LEVEL_EVENT_KIND, "x", tmp_path) + # And the one legitimate writer still produces the same shape the builder makes. + built = cs._event_entry(crew["id"], None, cs.CREW_LEVEL_EVENT_KIND, "queue empty") + written = cs.record_crew_checkpoint( + OWNER, REPO, crew["id"], "queue empty", tmp_path + )["event"] + assert set(built) == set(written) + + +def test_a_numbered_line_keeps_its_historical_id(tmp_path): + """The id formula for a NUMBERED line must not have changed. + + It is content-addressed and drives merge-on-read dedupe, so a new formula + would give every existing line a fresh id and silently defeat the dedupe for + the whole ledger. Asserted against the literal formula rather than against a + golden string so the test does not need a frozen clock. + """ + crew = _crew(tmp_path) + entry = cs.append_event(OWNER, REPO, crew["id"], 4, "claim", "claimed", tmp_path) + assert entry["id"] == cs._event_id(entry["ts"], crew["id"], 4, "claim", "claimed") + # And the two families cannot collide: the numberless variant renders the + # number as the empty string, which no real number produces. + assert cs._event_id(entry["ts"], crew["id"], None, "sweep", "x") != cs._event_id( + entry["ts"], crew["id"], 0, "sweep", "x" + ) + + +def test_record_crew_checkpoint_writes_one_line_and_no_item(tmp_path): + crew = _crew(tmp_path) + result = cs.record_crew_checkpoint( + OWNER, REPO, crew["id"], "checked 42 open issues, took none", tmp_path + ) + # Same envelope as commit_work_progress, so the write route answers one shape. + assert {"item", "event", "skip"} <= set(result) + assert result["item"] is None and result["skip"] is None + assert result["event"]["kind"] == "sweep" + assert result["coalesced"] is False + # No work item was created, so nothing consumes a work slot. + assert cs.list_work_items(OWNER, REPO, crew["id"], tmp_path) == [] + + +def test_consecutive_sweeps_coalesce_instead_of_running_away(tmp_path): + """An idle crew must not bury its own work log. + + A sweep is a recurring latest-value fact and the crew is nudged on a timer, so + one line per cycle would be an unbounded run. Every ledger read is capped and + drops the OLDEST line first, so a few hundred idle cycles would push the real + history out of the log the feature exists to make honest. + """ + crew = _crew(tmp_path) + first = cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "queue empty", tmp_path) + again = cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "still empty", tmp_path) + + assert first["coalesced"] is False + assert again["coalesced"] is True + # The SECOND call is answered with the FIRST line, so the timestamp marks when + # the idle stretch began rather than when it was last observed. + assert again["event"]["id"] == first["event"]["id"] + assert again["event"]["text"] == "queue empty" + assert len(cs.read_events(OWNER, REPO, tmp_path)) == 1 + + +def test_a_sweep_after_real_work_is_written(tmp_path): + # Coalescing keys on the crew's newest line, so the transition back into idle + # is recorded -- otherwise the guard would swallow every sweep after the first. + crew = _crew(tmp_path) + cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "queue empty", tmp_path) + cs.append_event(OWNER, REPO, crew["id"], 7, "claim", "took #7", tmp_path) + third = cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "empty again", tmp_path) + + assert third["coalesced"] is False + assert [e["kind"] for e in cs.read_events(OWNER, REPO, tmp_path)] == ["sweep", "claim", "sweep"] + + +def test_a_sweep_blocked_on_the_lock_is_stamped_after_the_line_it_follows(tmp_path): + """File order and timestamp order must agree, so the two readers agree. + + They disagree when it does not: :func:`_latest_crew_event` walks the file + backwards, so it keeps coalescing onto a trailing sweep, while the crew page + sorts by ``ts`` and never surfaces that sweep as the newest line. The idle + stretch then stays hidden for as long as the crew keeps idling -- exactly what + the ongoing-stretch wording exists to show. A writer that stamped its entry and + THEN blocked on the lock produced that inversion, so the stamp is taken under + the hold. + """ + crew = _crew(tmp_path) + lock_path = cs.crews_dir(OWNER, REPO, tmp_path) / "events.lock" + started = threading.Event() + + def _sweep(): + started.set() + cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "queue empty", tmp_path) + + worker = threading.Thread(target=_sweep) + with open(lock_path, "w") as fd: + with cs.platform_compat.file_lock(fd.fileno(), exclusive=True): + worker.start() + assert started.wait(5) + # The sweep is now waiting on this hold. Append the numbered line that + # won the race: a stamp taken before the wait would predate it. + time.sleep(0.05) + cs._write_event_line( + OWNER, REPO, cs._event_entry(crew["id"], 7, "claim", "took #7"), tmp_path + ) + worker.join(5) + assert not worker.is_alive() + + # read_events is newest-first, so the sweep -- appended last -- comes first and + # must carry the LATER stamp. + stored = cs.read_events(OWNER, REPO, tmp_path) + assert [e["kind"] for e in stored] == ["sweep", "claim"] + assert stored[0]["ts"] >= stored[1]["ts"] + + +def test_a_pause_does_not_break_the_fold_because_liveness_is_not_evidenced(tmp_path): + """Coalescing is deliberately blind to pause state -- see the docstring. + + An earlier revision stamped ``paused_at`` and refused to fold across it, to stop + the page claiming an unbroken "checking since" run over a stop. That claim is + gone: the row now renders as a past instant, so the fold has nothing to protect, + and the field was removed rather than kept to cover one of the three stop modes + while a crash and a lost timer stayed uncovered. This pins the simpler rule so + it is not re-complicated without a reason. + """ + crew = _crew(tmp_path) + first = cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "queue empty", tmp_path) + cs.set_crew_paused(OWNER, REPO, crew["id"], True, "operator stopped it", tmp_path) + cs.set_crew_paused(OWNER, REPO, crew["id"], False, "", tmp_path) + after = cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "empty again", tmp_path) + + assert first["coalesced"] is False + assert after["coalesced"] is True + assert after["event"]["id"] == first["event"]["id"] + assert len(cs.read_events(OWNER, REPO, tmp_path)) == 1 + # The record carries no pause timestamp: the field is gone, not merely unused. + assert "paused_at" not in cs.read_crew(OWNER, REPO, crew["id"], tmp_path) + + +def test_one_crews_sweep_does_not_coalesce_anothers(tmp_path): + # The ledger file is repo-wide, so the tail read must be crew-scoped or one + # crew's idle line would silently swallow another crew's. + a = _crew(tmp_path, name="Andromeda") + b = _crew(tmp_path, name="Whirlpool") + cs.record_crew_checkpoint(OWNER, REPO, a["id"], "a is empty", tmp_path) + theirs = cs.record_crew_checkpoint(OWNER, REPO, b["id"], "b is empty", tmp_path) + + assert theirs["coalesced"] is False + assert len(cs.read_events(OWNER, REPO, tmp_path)) == 2 + + +def test_the_checkpoint_writer_takes_no_kind_so_a_wrong_one_is_unrepresentable(tmp_path): + """The refusal became structural, which is why the guard that raised is gone. + + An earlier revision took an ``event_kind`` and raised on anything but the + crew-level one. The route already 400s a non-crew-level kind on the numberless + path, so the argument could only ever carry the one value -- passing it existed + to be re-checked. Now the constant is written directly and a caller has nothing + to get wrong. The number/kind pairing is still enforced, in ``_event_entry``, + which the tests above cover in both directions. + """ + crew = _crew(tmp_path) + assert "event_kind" not in inspect.signature(cs.record_crew_checkpoint).parameters + written = cs.record_crew_checkpoint(OWNER, REPO, crew["id"], "queue empty", tmp_path) + assert written["event"]["kind"] == cs.CREW_LEVEL_EVENT_KIND + + # ── phase classification ──────────────────────────────────────────────────── diff --git a/website/capture/crew-work-log-sweep.html b/website/capture/crew-work-log-sweep.html new file mode 100644 index 00000000000..3d269df3bac --- /dev/null +++ b/website/capture/crew-work-log-sweep.html @@ -0,0 +1,11 @@ + + + + + crew work log sweep capture + + +