From 281acc248c8ac7afc7851035d7922e34ee253db6 Mon Sep 17 00:00:00 2001 From: alex-mextner <111590326+alex-mextner@users.noreply.github.com> Date: Sat, 14 Nov 2026 01:17:50 +0100 Subject: [PATCH 1/2] fix(bed): locate a toolhead camera against the reference before judging plate state Refs #757 --- docs/architecture/lib-map.md | 1 + docs/commands/printer.md | 20 ++ lib/bed_pose.py | 222 ++++++++++++++++++++++ lib/bed_refs.py | 5 + lib/bed_state.py | 89 ++++++++- tests/data/bed/k1se_idle_far.jpg | Bin 0 -> 58402 bytes tests/data/bed/k1se_idle_moved.jpg | Bin 0 -> 56467 bytes tests/data/bed/k1se_idle_ref.jpg | Bin 0 -> 54297 bytes tests/data/bed/k1se_old_ref.jpg | Bin 0 -> 54105 bytes tests/data/bed/k1se_part_patch.jpg | Bin 0 -> 6039 bytes tests/test_bed_pose.py | 287 +++++++++++++++++++++++++++++ 11 files changed, 623 insertions(+), 1 deletion(-) create mode 100644 lib/bed_pose.py create mode 100644 tests/data/bed/k1se_idle_far.jpg create mode 100644 tests/data/bed/k1se_idle_moved.jpg create mode 100644 tests/data/bed/k1se_idle_ref.jpg create mode 100644 tests/data/bed/k1se_old_ref.jpg create mode 100644 tests/data/bed/k1se_part_patch.jpg create mode 100644 tests/test_bed_pose.py diff --git a/docs/architecture/lib-map.md b/docs/architecture/lib-map.md index d6aef129..f05922c0 100644 --- a/docs/architecture/lib-map.md +++ b/docs/architecture/lib-map.md @@ -333,6 +333,7 @@ Every current root Python module is listed here so future additions are intentio - `bed_norm.py` — the lighting-normalised evidence channel of the bed verdict (#723): brightness mismatch of the frame against the reference (dark/middle/bright quantiles of the bed ROI, or a known light-state difference) and the local-texture difference (luminance over its neighbourhood spread, invariant to gain/offset/gamma) a pixel needs in addition to the colour difference when the light differs; `bed_state.py` wires it (`_under_light_change`). Numpy + OpenCV. - `printer_ops/bed_override.py` — the owner's recorded word that the bed is empty (#723): `bed check --assume-empty WHY` writes `assume-empty-.json` (evidence dir) and `NAME.assumed.json` (state dir: ts, why, ttl, job_marker = Moonraker's newest history job + print_stats.filename); `honoured` is what the preflight `bed` line reads (ttl, no new job, never a printing printer or a missing plate). Stdlib only. - `bed_calibrate.py` — `3d printer bed calibrate NAME` (#723): how much of the plate the camera sees at each Z for a printer without a camera calibration — the guarded Z-only grid (`bed_view.excursion`: lock, displaced-Z marker, restore in a `finally`), one lit frame per Z, the plate followed from its outline in the empty-bed reference / `watch.bed.plate_mask` by chained ECC affine transforms (visible share of the moving polygon per Z; a plate that cannot be followed ends the chain, the Zs are not invented), stored in `calibration.json` that `bed_state.z_match` reads (`watch.bed.views` overrides). Numpy + OpenCV. +- `bed_pose.py` — where the camera is relative to the bed reference (2026-11-13, K1 SE camera rides with the toolhead): the scene round the bed region is correlated (same view), matched by SIFT + RANSAC homography (moved: `bed_state.classify` warps the frame onto the reference) or cannot be aligned (lost: a plate-missing / occupied read becomes unknown with the `bed reference --capture` fix). Numpy + OpenCV. - `bed_refs.py` — which empty-bed reference stands for a frame (#723): the identity (kind, plate type `watch.bed.plate`, light state on/off/unknown, Z) and file names, the preference order (same plate and light first, another light state a marked fallback), the age and staleness (`watch.bed.reference_max_age_days`), the `JudgeContext` a verdict is made in, whether a verdict may become the reference (`refresh_refusal`), and the journal `NAME.refs.log`. Stdlib only. - `bed_refresh.py` — `3d printer bed reference NAME --refresh [--assume-empty WHY]` and `watch.bed.auto_reference` (#723): the bed check's flow (best view, light on, bed back) whose confident clear frame replaces the stale reference, the owner's word as the alternative, the journal; numpy + OpenCV via `bed_state.py`. - `bed_view.py` — the auto view of the printer bed (#303 follow-up): pure picker of the best inspection Z (share of the plate in the camera frame, reference at that Z, clearance floor, axis ceiling), the guarded Z-only move + judge + restore flow `bed_state.py status` runs (`watch.bed.auto_view`). Stdlib only; the pixels stay in `bed_state.py`. diff --git a/docs/commands/printer.md b/docs/commands/printer.md index 7cf5aaad..377dcd4a 100644 --- a/docs/commands/printer.md +++ b/docs/commands/printer.md @@ -955,6 +955,26 @@ until someone takes them off. The camera can see that, so nobody has to tell an `unknown`, "out of the camera's view … it sees the bed again at Z 210 or below", and no reference is taken there: it would read every low part as a clear bed ([#402](https://github.com/alex-mextner/3d-cli/issues/402)). +- **A camera that moved** (`lib/bed_pose.py`). The K1 SE camera rides with the toolhead, so after a job + or a home the same empty plate is seen from another place: the whole picture, background included, is + shifted and zoomed by tens of px. Against a reference taken from elsewhere that read «70 % of the bed surface + changed» — `plate missing`, FAIL, start refused, on a plate that was on (2026-11-13). The frame is now + *located* against its reference before it is judged, by the scene round the bed region (what a plate or a part + cannot change). **Same view** (the edge structure of the scene correlates ≥ 0.85, or in another light the + scene does not shift, or the SIFT homography moves the bed under 4 px — a fixed camera, in any light): + judged as before. **Moved** (SIFT features agree on a plausible homography, after warping the scene lines up + again, edge correlation ≥ 0.65, and ≥ 90 % of the bed region is still in the frame): the frame is warped onto + the reference and judged there with the reference's ROI; `reason`, the metrics `pose_shift_px` / + `pose_inliers` and `pose` in the verdict say so, the evidence frame marks the pixels on the camera frame; a + `--no-plate` reference taken from another view is not used. **Lost** (no consistent match, the scene lines + up only far away — the camera sits lower or closer —, or too little of the bed region is in the frame): + pixels say nothing, anything but a clear bed with the plate on becomes `unknown` and the preflight `bed` line + a WARN naming the fix: with the plate on and the bed empty take a reference from where the camera is now + (`3d printer bed reference NAME --capture`), or put the toolhead back where the reference was taken; + `bed check --assume-empty "why"` then works as for any unknown. A plate that is really off and a part that is + really on still FAIL when the camera moved and could be aligned. A K1 SE `watch.bed.roi` polygon is a + region of the reference's picture: redraw it when the reference is taken from another view than the one it + was drawn on, or it covers mostly the wall (a whole-frame ROI leaves no scene to locate by: judged as before). - **Status.** `3d printer bed status u1` — `clear` / `occupied` / `unknown` and plate `present` / `missing` / `unknown`, with the reason and an evidence frame (ROI cyan, changed pixels red) in `~/.cache/3d-cli/vision/bed/`. `--max-age S` takes the watcher's last verdict when it was diff --git a/lib/bed_pose.py b/lib/bed_pose.py new file mode 100644 index 00000000..70717c90 --- /dev/null +++ b/lib/bed_pose.py @@ -0,0 +1,222 @@ +"""bed_pose.py — has the camera moved since the reference frame was taken, and by how much (bed_state.py). + +A reference stands for the picture the camera sees. The K1 SE's camera rides with the toolhead, so after a +job (or a home, or a Z move) the same empty plate is seen from another place: the whole picture, background +included, is shifted and zoomed by tens of pixels. Compared pixel by pixel with a reference taken from +elsewhere that is "70 % of the bed surface changed" — a plate-missing FAIL for a plate that is on +(2026-11-13, K1 SE start preflight). The pixels of a part or a missing plate change a REGION of an otherwise +unchanged scene; a camera that moved changes the whole scene. So before judging, the frame is located against +the reference, by the scene OUTSIDE the bed region (what a plate or a part cannot change): + + same the scene round the bed lines up (edge strength correlates, or the frames differ in light only and + phase correlation finds no shift, or the SIFT homography moves the bed under `SAME_PX`): the camera + stands where it stood; judged as is (the fixed U1 camera: always this). + moved the scene is shifted but a homography from matched SIFT features explains it (inliers, a plausible + quad) and after warping the scene round the bed lines up again (`MIN_FIT`) with `MIN_VISIBLE` of + the bed region still in the frame: the frame is warped onto the reference and judged there. + lost the scene round the bed correlates under `LOST_NCC` and no homography is found, or the scene lines up + only far away (the camera sits lower or closer: parallax), or too little of the bed region is in the + frame. Nothing about the plate or parts can be concluded from pixels. + blind too little texture in either frame, no scene round the bed region (a whole-frame ROI), or no match + although the scene round the bed still correlates (a night light, a big part on a fixed camera): to + tell nothing; judged as is. +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING, Literal + +if TYPE_CHECKING: + import numpy as np + +# thresholds tuned on real K1 SE frames (tests/data/bed) and the U1's light-change frames +SAME_NCC = 0.85 # scene correlation at which the camera surely stands where it stood (a 3 px shift: 0.87) +LIGHT_RESPONSE = 0.25 # a light change or parts lower the correlation (U1 night vs day 0.5-0.65): phase correlation + # of the two frames then at least this sure (real pans 0.8-1.0, other views 0.07-0.19) ... +SAME_PX = 4.0 # ... that the scene moved under this many px of the 480-px frame (also for the homography; the judge + # itself forgives 3 px: `shift_px`) +LOST_NCC = 0.3 # a frame is `lost` only when the scene round the bed also differs this much; a scene that still + # correlates (a night light, a part, spaghetti on a fixed camera) is judged as it always was +MIN_SCENE_PX = 1000 # fewer scene pixels outside the bed region: nothing to locate the camera by +RING_PX = 15 # the bed region is grown by this much before it is left out of the scene +MIN_KEYPOINTS = 40 # fewer SIFT features in either frame: nothing to locate it by +MIN_INLIERS = 15 # a homography backed by fewer matched features is chance, not a pose +MIN_SHARE = 0.25 # ... and by less than this share of the ratio-test matches +RATIO = 0.75 # Lowe ratio test +REPROJ_PX = 3.0 # RANSAC reprojection tolerance at PROC_W +AREA_RANGE = (0.25, 4.0) # the frame's area after the move: more than 4x or under a quarter is a mismatch +MAX_STRETCH = 1.6 # singular value ratio of the homography's linear part (shear + aspect) +MIN_FIT = 0.65 # scene correlation after aligning (real frames: aligned 0.8-0.96, not aligned 0.3-0.55) +MIN_VISIBLE = 0.9 # share of the bed region that must stay inside the moved frame (the rest is not judged) + +State = Literal["same", "moved", "lost", "blind"] +SAME: State = "same" +MOVED: State = "moved" +LOST: State = "lost" +BLIND: State = "blind" + + +@dataclass(frozen=True) +class Pose: + state: State + why: str + ncc: float = 1.0 # correlation of the scene round the bed, unaligned + inliers: int = 0 + shift_px: float = 0.0 # how far the bed region moved (PROC_W px) + visible: float = 1.0 # share of the bed region the frame covers (moved) + h: np.ndarray | None = None # current frame -> reference frame (moved) + covered: np.ndarray | None = None # bool: reference pixels the moved frame covers (moved) + + def info(self) -> dict[str, object]: + return {"state": self.state, "ncc": round(self.ncc, 3), "shift_px": round(self.shift_px, 1), + "inliers": self.inliers, "visible": round(self.visible, 3)} + + +class _Blind(Exception): + """Too little texture to match by.""" + + +def _structure(img: np.ndarray) -> np.ndarray: + import cv2 + import numpy as np + + grey = cv2.GaussianBlur(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), (5, 5), 0).astype(np.float32) + mag = np.hypot(cv2.Sobel(grey, cv2.CV_32F, 1, 0), cv2.Sobel(grey, cv2.CV_32F, 0, 1)) + return cv2.GaussianBlur(mag, (9, 9), 0) + + +def _ncc(a: np.ndarray, b: np.ndarray, mask: np.ndarray) -> float: + """Normalised correlation of two structure maps inside `mask`: 1 the same picture, ~0 another view.""" + import numpy as np + + x, y = a[mask], b[mask] + x, y = x - float(x.mean()), y - float(y.mean()) + norm = float(np.sqrt((x * x).sum() * (y * y).sum())) + return float((x * y).sum() / norm) if norm > 0 else 0.0 + + +def _phase(a: np.ndarray, b: np.ndarray) -> tuple[float, float]: + """(shift in px, how sure) of the translation between two structure maps: light-proof, exact for a pan.""" + import cv2 + import numpy as np + + window = cv2.createHanningWindow((a.shape[1], a.shape[0]), cv2.CV_32F) + (dx, dy), response = cv2.phaseCorrelate(a.astype(np.float32), b.astype(np.float32), window) + return float(np.hypot(dx, dy)), float(response) + + +def _plausible(h: np.ndarray, shape: tuple[int, int]) -> str | None: + """Why the homography `h` cannot be a camera move (the frame's corners must stay a convex quad of about the + same area and aspect, same orientation), or None.""" + import cv2 + import numpy as np + + height, width = shape + corners = np.array([[[0, 0], [width, 0], [width, height], [0, height]]], np.float32) + quad = cv2.perspectiveTransform(corners, h)[0] + edges = np.roll(quad, -1, axis=0) - quad + turns = edges[:, 0] * np.roll(edges[:, 1], -1) - edges[:, 1] * np.roll(edges[:, 0], -1) + if not np.isfinite(quad).all() or float(turns.min()) <= 0: + return "the matched features imply a folded or mirrored view" + area = float(cv2.contourArea(quad)) / (width * height) + if not AREA_RANGE[0] <= area <= AREA_RANGE[1]: + return f"the matched features imply an implausible zoom (area x{area:.2f})" + s = np.linalg.svd(h[:2, :2], compute_uv=False) + if s[1] <= 0 or s[0] / s[1] > MAX_STRETCH: + return "the matched features imply an implausible shear of the view" + return None + + +def _matches(ref: np.ndarray, cur: np.ndarray) -> tuple[np.ndarray, np.ndarray, int]: + """(points in `cur`, their matches in `ref`, features found in `cur`): SIFT + the ratio test. + Raises _Blind when either frame has too few features.""" + import cv2 + import numpy as np + + sift = cv2.SIFT_create(1500) + kr, dr = sift.detectAndCompute(cv2.cvtColor(ref, cv2.COLOR_BGR2GRAY), None) + kc, dc = sift.detectAndCompute(cv2.cvtColor(cur, cv2.COLOR_BGR2GRAY), None) + if dr is None or dc is None or min(len(kr), len(kc)) < MIN_KEYPOINTS: + raise _Blind + pairs = cv2.BFMatcher().knnMatch(dc, dr, k=2) + good = [m for m, n in (p for p in pairs if len(p) == 2) if m.distance < RATIO * n.distance] + src = np.array([kc[m.queryIdx].pt for m in good], np.float32).reshape(-1, 2) + dst = np.array([kr[m.trainIdx].pt for m in good], np.float32).reshape(-1, 2) + return src, dst, len(kc) + + +def _homography(ref: np.ndarray, cur: np.ndarray) -> tuple[np.ndarray | None, int, str]: + """(H mapping `cur` onto `ref`, inliers, why not): matches + RANSAC; H None when there is no fit. + Raises _Blind when either frame has too few features.""" + import cv2 + + src, dst, found = _matches(ref, cur) + if len(src) < MIN_INLIERS: + return None, 0, f"only {len(src)} of {found} features of the frame match the reference's" + h, inl = cv2.findHomography(src, dst, cv2.RANSAC, REPROJ_PX) + n = 0 if inl is None else int(inl.sum()) + if h is None or n < max(MIN_INLIERS, MIN_SHARE * len(src)): + return None, n, f"only {n} of {len(src)} matched features agree on one view" + h = h / h[2, 2] + bad = _plausible(h, ref.shape[:2]) + return (None, n, bad) if bad else (h, n, "") + + +def _lost(why: str, ncc: float, inliers: int, shift: float = 0.0, visible: float = 1.0) -> Pose: + """`lost` when the scene round the bed does not correlate with the reference's; else nobody can tell.""" + if ncc < LOST_NCC: + return Pose(LOST, why, ncc, inliers, shift, visible) + return Pose(BLIND, f"cannot tell whether the camera moved ({why}), but the scene round the bed still correlates " + f"({ncc:.2f})", ncc, inliers, shift, visible) + + +def locate(ref: np.ndarray, cur: np.ndarray, roi: np.ndarray) -> Pose: + """Where is `cur` (BGR, same size as `ref`) relative to `ref`; `roi` is the reference's bed mask.""" + import cv2 + import numpy as np + + if not roi.any(): # classify reports an empty ROI itself + return Pose(BLIND, "the bed region of the reference is empty: nothing to locate the camera by") + scene = ~cv2.dilate(roi.astype(np.uint8), np.ones((RING_PX, RING_PX), np.uint8)).astype(bool) + if int(scene.sum()) < MIN_SCENE_PX: + return Pose(BLIND, "the bed region of the reference fills the frame: no scene round it to locate the camera by") + sr, sc = _structure(ref), _structure(cur) + c = _ncc(sr, sc, scene) + if c >= SAME_NCC: + return Pose(SAME, "the camera stands where the reference was taken", c) + shift, response = _phase(sr, sc) # the frames differ in light, or in what is on the bed, not in view? + if response >= LIGHT_RESPONSE and shift < SAME_PX: + return Pose(SAME, "the camera stands where the reference was taken (the picture differs)", c, 0, shift) + try: + h, inliers, why = _homography(ref, cur) + except _Blind: + return Pose(BLIND, "too little texture to tell whether the camera moved", c) + if h is None: + return _lost(f"the camera does not see the scene of the reference ({why})", c, inliers) + height, width = roi.shape + ys, xs = np.nonzero(roi) + # how far the bed region's corners (and centre) moved: a zoom or a turn about the centre moves its border, not it + box = np.array([[[xs.min(), ys.min()], [xs.max(), ys.min()], [xs.max(), ys.max()], [xs.min(), ys.max()], + [xs.mean(), ys.mean()]]], np.float32) + shift = float(np.linalg.norm(cv2.perspectiveTransform(box, np.linalg.inv(h))[0] - box[0], axis=1).max()) + if shift < SAME_PX: + return Pose(SAME, "the camera stands where the reference was taken", c, inliers, shift) + covered = cv2.warpPerspective(np.ones(cur.shape[:2], np.uint8), h, (width, height), flags=cv2.INTER_NEAREST) > 0 + covered = cv2.erode(covered.astype(np.uint8), np.ones((5, 5), np.uint8)) > 0 + seen = float((covered & roi).sum()) / int(roi.sum()) + if seen < MIN_VISIBLE: # a trusted homography (plausible, many inliers) says so: no `LOST_NCC` doubt applies + return Pose(LOST, f"the camera moved ~{shift:.0f} px and only {seen:.0%} of the bed region of the reference " + "is still in its frame", c, inliers, shift, seen) + warped = cv2.warpPerspective(cur, h, (width, height), flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_REPLICATE) + # how well the scene lines up after the move, measured where a plate or a part cannot have changed it. A frame + # that aligns on the far scene but not near the bed (parallax: the camera sits lower or closer than it did) + # leaves the bed unaligned, and the diff along every edge of it reads as parts. + around = covered & scene + fit = _ncc(sr, _structure(warped), around if int(around.sum()) >= MIN_SCENE_PX else covered) + if fit < MIN_FIT: + return _lost(f"the camera moved ~{shift:.0f} px and the scene does not line up with the reference after " + f"aligning it (fit {fit:.2f}, needs {MIN_FIT:.2f}: it sees the bed from another height or " + "angle)", c, inliers, shift, seen) + return Pose(MOVED, f"the camera moved ~{shift:.0f} px since the reference ({inliers} features matched, fit " + f"{fit:.2f}): the frame was aligned to it", c, inliers, shift, seen, h, covered) diff --git a/lib/bed_refs.py b/lib/bed_refs.py index 83017fd9..bca848fe 100644 --- a/lib/bed_refs.py +++ b/lib/bed_refs.py @@ -159,6 +159,11 @@ def refresh_refusal(verdict: Mapping[str, Any], view_min: float) -> str | None: the frame, `watch.bed.auto_view_min`), with the printer's light on (or no light to switch).""" if verdict.get("bed") != "clear" or verdict.get("plate") != "present": return f"the bed check says bed {verdict.get('bed')}, plate {verdict.get('plate')}, not clear with the plate on" + pose = verdict.get("pose") + if isinstance(pose, Mapping) and pose.get("state") in ("moved", "lost"): + return (f"the camera is not where the reference was taken (it is {pose.get('state')}, ~{pose.get('shift_px')} px " + "off): stored from here, a watch.bed.roi polygon would keep its place in the frame, not on the plate; " + "take it by hand and check the outline: `3d printer bed reference NAME --capture`") metrics = verdict.get("metrics") or {} seen = metrics.get("bed_in_view") if isinstance(seen, (int, float)) and seen < view_min: diff --git a/lib/bed_state.py b/lib/bed_state.py index 492e0461..68883345 100644 --- a/lib/bed_state.py +++ b/lib/bed_state.py @@ -26,6 +26,9 @@ plate: with a `--no-plate` reference too, whichever reference the bed surface matches better; with the plate reference only, most of the surface changed -> missing (plate off, or the bed covered); surface under 2% of the frame -> unknown. + pose: the K1 SE camera rides with the toolhead, so the frame is first LOCATED against the reference + (bed_pose.py): same view -> judged as is; moved but alignable -> warped onto the reference; + unalignable -> a `plate missing` / `occupied` read from pixels becomes unknown with the fix. ROI: fleet `watch.bed.roi` (a polygon of the bed in the frame at the reference Z) if given, else the camera calibration (vision_geometry: bed surface and the volume above it up to `volume_height_mm`, projected at the reference Z), else the whole frame. @@ -89,6 +92,7 @@ ) from printer_ops.bed_light import LightSession, write_block # noqa: E402 +import bed_pose # noqa: E402 import bed_refs # noqa: E402 from bed_view import view_in_progress # noqa: E402 @@ -695,7 +699,6 @@ def once(norm: bool) -> Verdict: def classify(img: np.ndarray, refs: list[Reference], z: float | None, printer: str, th: Thresholds = TH, match: ZMatch | None = None, ctx: bed_refs.JudgeContext | None = None) -> Verdict: import cv2 - import numpy as np match = match or ZMatch() hidden = out_of_view(match, z, th) @@ -705,6 +708,49 @@ def classify(img: np.ndarray, refs: list[Reference], z: float | None, printer: s plate_ref, noplate_ref, early = _select_refs(img, refs, z, printer, match, ctx) if early is not None: return early + base = plate_ref or noplate_ref + assert base is not None + pose = bed_pose.locate(base.image, img, base.volume) + plate_ref, noplate_ref, pose = _refs_for_view(img, plate_ref, noplate_ref, pose) + base = plate_ref or noplate_ref + assert base is not None + if pose.state == bed_pose.MOVED: # judge in the reference's picture, inside what the moved frame still covers + assert pose.h is not None and pose.covered is not None + img = cv2.warpPerspective(img, pose.h, (img.shape[1], img.shape[0]), flags=cv2.INTER_LINEAR, + borderMode=cv2.BORDER_REPLICATE) + plate_ref, noplate_ref = ((_within(base, pose.covered), None) if base is plate_ref + else (None, _within(base, pose.covered))) + v = _classify_selected(img, plate_ref, noplate_ref, z, printer, th, match, ctx) + return _apply_pose(v, pose, printer, base.roi_source) + + +def _refs_for_view(img: np.ndarray, plate_ref: Reference | None, noplate_ref: Reference | None, + pose: bed_pose.Pose) -> tuple[Reference | None, Reference | None, bed_pose.Pose]: + """The references that stand for the view `img` is seen from, and the pose against the first of them. `pose` is + the one against `plate_ref` (or against `noplate_ref` when that is all there is). A bare-bed reference taken + from another view than the frame's is not used (it would read every plate as present); when the bare-bed one + is the one taken from here and the with-plate one is not, the bare-bed one is all there is.""" + if plate_ref is None or noplate_ref is None or pose.state == bed_pose.BLIND: + return plate_ref, noplate_ref, pose + other = bed_pose.locate(noplate_ref.image, img, noplate_ref.volume) + if pose.state == bed_pose.SAME and other.state in (bed_pose.SAME, bed_pose.BLIND): + return plate_ref, noplate_ref, pose + if pose.state != bed_pose.SAME and other.state == bed_pose.SAME: + return None, noplate_ref, other + return plate_ref, None, pose + + +def _within(ref: Reference, valid: np.ndarray) -> Reference: + """`ref` judged only where the moved frame covers the reference's picture.""" + return replace(ref, volume=ref.volume & valid, surface=ref.surface & valid) + + +def _classify_selected(img: np.ndarray, plate_ref: Reference | None, noplate_ref: Reference | None, + z: float | None, printer: str, th: Thresholds, match: ZMatch, + ctx: bed_refs.JudgeContext | None) -> Verdict: + import cv2 + import numpy as np + base = plate_ref or noplate_ref assert base is not None stats = _light_stats(base, img, th, ctx) @@ -724,6 +770,47 @@ def classify(img: np.ndarray, refs: list[Reference], z: float | None, printer: s return _vet_reference(v, ref, ctx, printer) +def _apply_pose(v: Verdict, pose: bed_pose.Pose, printer: str, roi_source: str) -> Verdict: + """The verdict of a frame located against its reference (bed_pose.py), with the pose in `info` and `pose_ncc` + in the metrics. `moved`: say so, and bring the evidence masks (in the reference's picture) back onto the camera + frame. `lost`: pixels of a picture the camera no longer sees are not findings: whatever is not a clear bed with + the plate on is `unknown` with the way to a reference that fits.""" + metrics = {**v.metrics, "pose_ncc": pose.ncc} + info = {**v.info, "pose": pose.info()} + reason = v.reason + # a `watch.bed.roi` polygon is a region of the frame: a reference taken from another place keeps it where it was + drawn = ("; watch.bed.roi is drawn on the frame: check that it outlines the plate from the new place (the cyan " + "outline of the evidence frame)") if "watch.bed.roi" in roi_source else "" + if v.plate == MISSING and pose.state != bed_pose.LOST: # the plate is off, or the reference is wrong + reason += (f"; if the plate IS on, retake the reference with the plate on and the bed empty: " + f"`3d printer bed reference {printer} --capture`{drawn}") + if pose.state == bed_pose.MOVED: + assert pose.h is not None + import cv2 + import numpy as np + + back = np.linalg.inv(pose.h) + + def unwarp(mask: Any) -> Any: + if mask is None: + return None + return cv2.warpPerspective(mask.astype(np.uint8), back, (mask.shape[1], mask.shape[0]), + flags=cv2.INTER_NEAREST) > 0 + + return replace(v, reason=f"{reason}; {pose.why}", changed=unwarp(v.changed), roi=unwarp(v.roi), info=info, + metrics={**metrics, "pose_shift_px": pose.shift_px, "pose_inliers": float(pose.inliers)}) + if pose.state != bed_pose.LOST or (v.bed == CLEAR and v.plate == PRESENT): + return replace(v, reason=reason, metrics=metrics, info=info) + read = ", ".join(f"{k} {w}" for k, w in (("bed", v.bed), ("plate", v.plate)) if w != UNKNOWN) + found = f"the pixels alone read `{read}`: " if read else "the pixels alone: " + return replace(v, bed=UNKNOWN, plate=UNKNOWN, info=info, + metrics={**metrics, "pose_inliers": float(pose.inliers)}, + reason=(f"cannot judge the bed: the camera is not where it was when the reference was taken, so a " + f"changed picture says nothing about the plate or parts ({pose.why}; {found}{v.reason}). Fix: with the plate on and the bed empty take a reference " + f"from where the camera is now: `3d printer bed reference {printer} --capture`{drawn}; " + f"or put the toolhead back where the reference was taken")) + + def occupied_confident(v: Verdict, th: Thresholds, view_min: float) -> bool: """Is this `occupied` one a start gate may FAIL on? A changed region of the normal occupied size (blob `occupied_blob_px` or `occupied_min` of the ROI: not the lenient low-view size) seen with at least diff --git a/tests/data/bed/k1se_idle_far.jpg b/tests/data/bed/k1se_idle_far.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb29043b8a7700b3205e237332f862358d9e5255 GIT binary patch literal 58402 zcmbSyWl$Ya)8@q;f(E|?2?Tcu79hC0LvVNZ0KpxCyE}xy#oaFM?rs+icJbx?zOCJ= z{k6M2HRsQqnd)cy%&DiJ?s;2!+X8%$k&u=Ez`y_iFz*N8Z51E}fQNfG*#C_1@bCzT zsECLN2#Dy&C`hQ7=vbJT=olDS*aWy(AMmj;FmQ=+@jnt05fNeGkdToOk`WLR5&q{P zFz>e_A|Rq6BBBv~!1zG;|7>sF0BmF!OW2=qFq8mTY#2Cfn74ia@ZC=YnEx`s|1=m_ zxOXR!kWo<4-Y0-Q0AOMM%Xb zwTr8pyN9Qjckr)}(6I1`$i$@I$tkI6=@|uuMa3nhW#tur>l;9gP0cN>y?y-ygW#dz zk(t@K`Gv)$<(2K7-M#&T!=vMqtAE!ww|Do@hsXcmf&sw&H>~&Zzk&T9xUk=G!NSAC z!6W?#7YwY&`w52)kMM~N5l2KB$;b(pl06U^Pc$LFt_OvRL*)|R*m)Y2fSPlg=ITGt z{tMav9k8JPFJ%7<*#E}00zij@c@G{OHb59~dC-7kfflSRm_$pBZUV9zbnbQ(PFCDU zQj!`vXE=%b)UZAsUiZg7>RY=c$je8={epU@O9B8|y`pc^b<+SxFq(nD8~+ zoYy{xUQ$L&J8okM{p*2)NDj!I8-Z}XEe3OAT2|lMkzhl;y}m`0{0%TLNvfKnh_(7% z;AznPM4b=rihNG^lZ*Ds0n@DSx*)xvxS^>{kZ9nz&1j{k0Y4F}?zofdWa4--a&VrZ zvrCfNg|ALMwbJVG6g9TrQkp65%YooH=jt>iiBu^;W`MKFKRYuM+O?IU^GX5@&4opF zw&;q!{*dtAyFs5^>q_A$P&$o;Y<%WiIb9y9H|)4hBXl|6S z)xnTr4b~oes~D_%xybMLC#1TgWx>evqxVzsQ8*nd)wz!ZPhMAFoE{}3VdU)2fCRV- zwNA(>{+0X^kcvJf$p3?BMAW`nsqo z*PwNFW;}DIISOQ)eP+KAn=9(-E zehT5axvt9^*F907N{i4aPTYaKd&S=ey-#pf&VGOs#Xm(c`8ek1Y7rl8IQZZIS+M>f zW)&mT?B&#a-!D`40Y2`F=N)yFwXdW4c3r&}2xUqurir_?=}xr5_rv&>o|V0=I%wLr z5ac}#(enGAOWz*gwq4wUfAh zgIwL>(X=W@CiU4-x=mxjc z$S8(;tBAsT`#tfDFa7|Y=5}m$m39!sf9XFin037z-9JvDu*h!`dtne~vMVHv-5`7e zK(dSi;%fyQ!Ux&?CyQ`UNJm*!;}q~BgA5~d>d_@jmnEF$+J<`Ih=$l5Z{j*)jIhxW;oYddN&S1*W!$v_44_L+j_Ye_*GCZE=K4JlCMA96 zh4@@H6!px`JrVw!v$I;xmL}N7MCf9@*XwZKz>0d7WeA~q@32Lu7~!K2&fb3hg^K4z zuZ_b&K(CmwBRCuSnw;?lz;6FYNDZmWc>^%o2i)mg(azNN(+ETmCL;GHWmLS9ES5N| zTj>OoKQXPn2XS7$Iw2`!Jx=E8zMlzK>(bT!%+=Ar$&8$bsbfV=GY|d!PA&uS{5dPTdS{=m=$AUP$c3` zKW>)$xEIn*&uTTP&VQF%Zw4|j}H1hGhi-XTU)vrs7+#Ei>MZXb=mkVpSYq55+N z*Gu$Fe`aHUBrmF<)1sjDUciTtyByau6Zxiup*MiR=wqCiUeTs);$Ev5ZA!$yXzxXf z%QwK*W~6Vx_PChlta$5y1w}YoD!qlTX@&a`;of89;a$?fUzP+emzYe&_PJX&gkLNi z{6$ZmGd`%#$VAP(??T{SkSheOP@}D{hVzL<6-pq7y4v} zGC^>2^&0@oSA5R(Hgr`d(2d_S%@!A68vR%ageadb>W>Q6_vHdycekpAUPqM@!TO2o zrp-YvtxVwf&I+fE7ABwG$Hg$vCrnW3xE=2sK+`#xf#MdO*XVK4YMUiIW$~!~*ki+U zP-jD|@%yvzP_0t^6+zMt8gA)H5~RKdYuSyrFlV*o zC0+TJO!MT+N?gcIzz3~|#;RDU5eC-vHvqu@4IpNayQBCEd$jWn(6cDgTK6Zr<$ddB zgWPcKs~#_|DC9F@;H~)0WJ$w^i?Y1|tOCkPc8SiZ5AjRDXcbUH|4nZL3U7_j@$C_6$Bj z-71cFXq7LYXU1`|SJk%X0(9`765jx=9;20<>Kp!OGAO<}HwOr|q zk+rdwHcFaKqzUTP=W218L^qXJyj1YBvP$-YYIjxD*`>gdyd||*&+2Q`)?HqF8C_P1 zZ{ym;ZX6=R18&|tAqyw6UT$d3r#p$lJO>nPia)%~TQm_llE$U(Q`tuk1gf+ENP=uL znReB%cNV2RMq9dQUWYBsPo{yr;+P)HY@ISBg}j33U!I}- zFp9t_O~nEOqN-n}|M*b{UFxcgi)tp!nb4HugP1aNGXH>_g;6$!x}~lpZ--yiS6Jj8 zufI!qxE{3VODs3lOR@liKfx27r^h))#VvlW0dMP5(nU!nN_{(Y*?ll>(&1+Gfl-k+ zbGIu&aiB`;S^u|%xt27Wt1~{IbfOw0bNE|d9Ois z*V7SuQ;<|&9e+tY^YnULUPW-91|^ag=!}~kYowYE0bGWZIhQ}P3>t+jjvuPcXPpWN=dI)eKEQFJ}I)u=yFq$yQ(8VKx60X#2CGwe(3DZVx|l^ zk*bPRku_KPAmr3Uov}WBdQLH2YmY-~!X|6^s^URlujZXJpf1Fj_{lLPgFMsLEc$zF zg?7Hdlgr@liL)P@+PSY{tsYnB=s}aNQzKp@>?h!?g9~IKLlZaAdYHs;NhgVcXUUvG zj%kui?+t*oxB_xbV{8}n^G$7XKc)|#k00X`NGv>36qdOj%{-IX!HeAa=VcO|qUJ#( zLQB0ncV7`I?$$#%z-MPnWwGboSy&A<7Y<8#B}(nrK-`hNpL57TT;rwDSH zJ%DKIOhyaPx|uQkY3-28CSd)ei{n^<2a^S0ElfJG8K+S}#DdLRbKiPjj$i-$ty{75 z=bQBvbVFE=jkP~iPT~0uP_#7>z*4wP5ip_w_3AGj|0(V^H&2mdCs@xd`MStYK`C%1 z@Hmw)b_j4emM*#{(O5dl1;2j!w)#PQ(=k;yxqILqy=&mHKbvP+vkRH;zH>*l4U z&9V@>CH2NEc9l%9;0NBB7z+!iFZp8Cjyc_Zj(fRNe{Dz#!Y`U1BjO^H5aqGvu|U}m zKIGWJm_xp2XL$~BCkTMO=_je>Y9Y)iApG_s z{hCa^@;RaOi@hhZ;%_@b@}G`heAD?q)s~!ge(>a8f@9?IfDiCj;(#JlOI&IO-ej}u z7Ut_1b27E6j6YA%>uUv-)*KFx)$lGq%ofzQWWMOh?cFKqK4{it>XMx?x@#mP4s>e$ zHkkzht+m)IzxHjG>7*)mB={!yDYAz3eZA=>ycuo87+zV?vR<=7AuT37W zK^TTn+pdQgLbbLqCj{Ikk2{UJ13aX0^%ZeSF3Mfu=b60bNMt|pI?k)CYRY0~w_|_P z0Bz=L(iIKq5s+?a9~SjXd>Jos%Y4djzXZPCTovpd*T+pXTe-!^D9NnjBeihp$VNrr zJuDVw{n(lgU1)iY(oY?dNYXA7oc z8+9yi0Lx93)h|t#iy`N~TDmi2JwGW4iWcGokZMle6VIp9+La}(S`L_uI`PYyhjRXk z4fKx0m36ec7km)5Ji{gs@!C#zLowU&s=bKb2mkf@Mt6sFRbx2t1|an13J5@hDvEVB zHh!p0%Si5iFawYOp)uarbsMbp+*%3_4(x2#-uY8`Ba zdaPt-ZQpe6b40S9Q*8QxALNp+o#G9E;A$t_M_l|)?UDeA_eT9uj%!2uSYwFiFjRT? zS1Fm7kp5Tt$XCd>8RpvU*?IEgZT$@`+uhjG^PHc%<=quJew*O}wACf~g(n|d^=~9C zb5=xSe)=DSmBAF3K9RpOy+hV(;=0=9xBSosh>aQ+IHC4ChgL?{pKdiyFnq_a;O<=J zIqR77w>AAl=bZ=FyB70a<)QxS3(tZt<#y-9WGp*e8LKk>hG#xpLWWK01nixsE#!R} zkHj+&`32XdiyO$O&#JbBNpn-YRJ34tK0iU}7)Y2$pNot{2_o2V*$6|DFcn+4(t*|o z#5WHw?rbLO-qM#~-96!d5%-hd?fTV8e3hkezfgcSX2inOtqHsc@bt6U47X21cjhSuOQ^M!L{E&n-K9u9TPC z_gOj;P`|8IouN!Tlvk~^Y92=JY8QE(xqpnj9$L6pNFAFkHb?agSqe2Yv)>dmIL!Cl zPc>c}`X)%Euq9coeT5Z#gY|I*be1zpCKdfKjg=zyx)R%E0MZ-dQxVW%(v)6^67w(F zfDn4Y8U?-q>;j@r7|_%&Lk6N=+T`Qu`9`Ek%xN!rPW@u+pmDuTkMfhr6)SivPWU6P zll9(D#G`)}Kz77pUH5n6_Y>9Sye-;>pJt;DXK9Z%eR{l+FHT^=@CQa^F z;#nxWh;5w8-Q*wblyquiW?#cZSoM%16bQ+_`q=k3_Fjj<&S)|z%U?aD6k78JkWSOG zVQa4oZekXCXT#XC1_k>IM=jXbFf7O8@_+2)91)b|3IcP!W`OXDw)lol8D@@LN;U?{ z=E^1&ugCQxog>*%Dn^6<1rHDURgAH{UUK-WA?`!h!~0+&QzVss)jMtE>qYOm4_KUh z%pwFU+^QrG&sB1^9h$5PU|Ijf-7IEp)FWG0)LF0p)A)qEmY$GF6DQ}bVkfSje7csM z5Z=XhkI(6TExabWToY(Zv7D@&Tl{U&Uu&rhFZNbw`Rx_9}TyHcbwv2_B7emk?*gpZM5expKUidW~#%wwEC? zF;4_usHP2ZGqRtNwy(oyWTOHoY_|LTye(W|F4(V&SJ)D#Q0b#=lb7v%6pZGsbgB}8 z55!Zv4wA)AiuHD{Is*0*yB*m?rPub>e0O5T%et9#ihU?LNSo0|$CnUnMNJ_=EA<=^ zJ=Z(?Rw3;&3%AguIq1z5$WZEOzZN>7W0DBI-1DR7?}})Bt`Zu?PszbUh}P|Ut%8}t zeI=?|+sg@ek2xQ<6TsRbNtbyE*-@U~|0FrP(OBh6#2g%eD{Jg^H72n~q0w+mTPVJU^x?im1Fuze4CuJxM zjhFh={n{;6n5S&w9pIyI2bjXdvW?3%o)o1J?ZOtOfeQYNw;29DTwF=O@A)C}Y$GWL zlD?JtWQHCxxaAW#T)GLv^n8Iz7gJKC50+Q+ZVudgpX*;xJ6 z(Z=YhqfV0$aP9s0e6oIrcDZrpo@`V2!5J zpp-#}P;!@ppGmRB>2*V2;J^HC@FIRD{yeBXNbAfjIfA;O$gRw}SMw-pgJq^cp8jA| zezxiyM?HjmYmK4M;Rhz_a1dKg8dwwse|go)y;0-tZc4YmQ|$*EGP^FEz#^_sh2VJ} z^I26M$Z6O#LK7qFInOcA9j;iSHS`ZP4w;Jkq&m}_-&YM>=}Ns7oZtGV9@lz(c1Ycbxjc3U1{^~pLf>=)q3RCwcn^)yaWa!BUkKKU zyr~0lUE9#?8g=aEN8K4ku^?*9{){%x7N;3*Rd9{ZEx?iHI3axaJz%j2&FLq9!$VcK zB|bw9*CrvMtKpIM3Fn)_yvM|{G*#A8@4PC=_ zWuy*97HHjKvQ0AD0!UOHJ}T47IJwyja|Bd#W%n1|$NvJRSbNDF`jGp*)C%+CCCnmb zRadUBuXOWn;};7Le-n-| zoNebY^7tg#-sOxuF)#JopU~uSRz(W8Ws7?g#f>QZx-^v4JILj^Ugz$8cRbypci`ep z5^&^5g6?!?{JjK*QT^gev18h)tpR z3})~!Y5AGGB|0eMbBxUd2LqC=KPvdPCUmh|^*bO{4WztocNPw;gn86-5Le`25X(?R zuzJlw<1{DK0=sVg{^=Fui7MMi$w`1H#3E^5XyVRd6Prj<4#*2OM zD=%;8p>74{kP}_*?-6Ge$nr_Y?W?bNAie=^HErxJXZsf$l~<2mapqLuiOBT}PpNNd zu7)2op0t^&&knt|8iT%=@_FHKX_%aU8!qiU^&c&ek z(;lO$)|y;%fqIMXsW$mUkLTy1<}U>0-^L;rrx_S1o4w^e_Obm*AbeIU@px%7b@w!b z9T{ukQ}Cz-72f&SBaH7!uwT*)vWXGMqB(13BJs9p%{6&k!oBJfFSagrWiq=fYs!8DxbU02YPVeE zj0fM=setoMB(g4a9*N4BHYLS@yH6c$_|QC1(JrV7ZnNcrSDZM9*-z-P@Z z7tG`;heb}U-n=09mm6fP=X#g39O5K-H1(DsBk(<3oqj0fm*tY)uW~i$2%q@J%<@2QJvmKde=4bfyPscAd9~BmFH&Hi` z&(S!EhKWXaUz5!@{KTZ1b+f;EX@AVli#ZYOY8R}`4_2CLm$kOLg^yg=58dRjr*b(O zeWu+gnP6GRpzhc$o))kug@ogiN-`swm<&IX-;4+J>Dagak|xA?1Hec9?7O;vE@nc6 zFz0=Rg;#D~E(kmTrNWU33k|+}SEy3%%hoN%nCSh!qqk%bEqOtjmgsG|%6t)cI|0(Y zjC3lB&_M~_$9ch;>OWao|Ey0H)OPs@M}0K&UCrF)nyh1TBn73bqsCr(ANyz-7m)0B^+K4}NBkaYj1(#Hp1Fabtb?`pE+ z$2w#Mv|BIh$4&U7%otISx2k6OLP~*O)k&Gwpg53$0Da8s+zJhQ*dF5>rbcP(g4Z`R zT$8y-#LOcq3xAQF3Y>+ht%HjV*ITPQvSwH-)^at9o zSTToYg>O+@`e&r!N;87HD9rx~NSEqpkHZtVLx}d0vXTr6sr^6BYP~Bbo{30C3;gQW znEr(n8Z--_E$%j!mrOVJZj13&zdRoVqO!>3i%%oU%j8B}MIj5Eq6z>Q$e-=3t^1dMkIP*$24lI z_Zyc@JW`EvQ0dnRO*i{|CM-P)_?EIG3eLUz28PJXLS|nJ=$ICT|BbM+$*sfQLeAuP z-gzGYtE_5Wo6D5N;+nP{hpV;s9*Z;Vz$N#$H;kHmno*F#m(O$RBJ{hP_%iZ_q!w4> zw0wfgrHsb!f;hPNlj)#pxR{htWEIR3%XFR0S4K43#OO{z9CEh{jv0!dKw z@|xhn!Q9qa6QYYR%$A3d@aYFiTE}(Rt=zvKaU(%wzsRjD&q$Mo)QJYX8NXuY{B?Nx zni$Z^9r&Q}n_KC7S6dM0BVCnOzE7$Zm$}zVPO{?|y0=~xmV57eP5PKK7jr|;pwIr# zvgi!=6sD=|E2%%I`7(I8yQZnT)viG^V8sJl*3A`#AcYMpebU`zTFpDdfBptR;pAW; z^KxWjaN1(tE%ZkuQNJ~n`0m_IMJp(|T}N&)gQ=|X&o6sB(MtmMT&daS<7;w;wy5tZ z|I}I*i)4dJUEP)60A*2-4T*aJA5EGoVI|sXm0KzyZzluJ@3V8sG)-84e#@2woG)&#Ew5`kAOX#xu}yM$uJWq)W%0nnqtin zbM5Ky4X|kNP_VpawbHTPSYEj-jjaGkUQ#J;t{pUFzoLX7*U+k!WxP_soqI zLKky1?Yz9yqJG*mb7&)HN+?qau5{Yd7@ONKj8jUG7GDSf*9AYH3{c^``-r@Q_W zg^=$k;OhfedDe}L{7zPP)XOME2;G^P-UbVM-Kq*ZSkWF+p#6FD_4qZJN!wEWkz>PG z^YU6|(b!J1Z;~u~`5{^?yh!-zOD)lSLuLn$nvV~Zy1w0T2acq(Bh6>gW7~nue^0QZ zJA-9M>^^lV@|4Sb+E;t~*tj{8&kR-W`{i^eZ_ncubY?oHsFP}_!H_`z*vJ;do3b-? z^;ayJ>Lux!_NH1;w-a&OcPe+ia7rn~mwo@xj0~T|wUm?xGR?$}-?$g@tXaM-)H%}S>Vd{cT&xsXIrAs9 zW+sWUx>^~G6iP^hRqG1(EPI8H9sVHWlj9%3fM;-^-p${O_`1CrY?cgx4bbQPp~GC6 zY6AVMSpNBBBBJ|ojV(dxEtm|AGexaS#A%I!KP@eoR}wNM?3)J3qA~*?S|&Mnq>ear z{v0Jq2|1*$)JPV5Cne&@l?kJMj1ei!LX{dqx-8$V&rxg*11cm>2Ut-1_%>tu0V=s4 z74q3&8Te34mZgB%7WCEpRO0d=cNfFu*;*yOn=(1($_ZyoHiO)v=dV}HWtyk0Zhf#$ z$)e&O+`#(RMrf*3PDe!m z0E*N{fuU=t;YMV+>&O8`&lqmGdIR*WV?=wC|64mi z>TkfLP5s;pAJug&>xZ`8F>_&6+5Oe>QP!eE$NF=(`!@iAuexWBe!Z9((5x}ehVITJ zNpB&)65?Ht!s3P&p*z3UbX|e7w)&l&J6FM)V7`zFB~ovU3a{xiHn~Tgz)bQt6eX;M z`p;c1%%Vxh@*jCH^F?~f+ZO~MmqGk)-JxNi9rC-%g`UIZVsL7(2?iDgU|SGXyBre7vVzZ*O1aJDp_Ow1-;(6Oyq{l zMoVX~k z)si&jPldoR>t8c#zAs~2>HMt;5QF;5YgvL$;FE3NeG~0I@1f-p!}wN%*ZFQ^1e!F% zFXh`>)7TRX{?k`r{Tm?ep{l64;aa)9bP3So)V&`F)^pJiD(+Buot2ulcaxXc($!fV zG)<8pQdeHvX@}b(&o75`ewuTwWWAGyR|bLJOVE4fqaTpU0RHF<^S+861aU>HkQ|yE z%c42Pty$)VITNM=g+rR3J#dMmZOv4Im4n5>N^>;0Co~N=vlns+U`vmxh3UB8>@U1v zkdj;7tS=uZ&`pXx;|*5Ce_9WS$EuXk-Ci`cz$!VHEpM|+V@zKwwPd@lIW$1vd7RAi%f&U zcY+$d(?r#*RV{X;F%5a#h@Z03oSE=Vzcc1eXky(l!_824Rs8!CuJ-VpKCZKccmog zRbcksWwI{~-OXURDWYf+ZXd+kk<2gkCq2~+tN^Rx% z5YPNjlp*;uG&Ig$RDvD(`xMSe&VHVTy9zmCK*Yt)%FB$a`uW484P^qO3x%oKMZAx3 zl_uXVnUvKAsjJ4z{-9>;5TD6&*zUKPmVfUn=@nbN8d@W=MWRBkGSTY8BTghtMV{qO zdsR!)^5+UE`1U~iQ|q7h#()eS1Ttj70l$IELm7wqb~@GtMk-5JLe&rxr9@%{z)|?y|iw*4u*_sO1x&k3bVcGG7TO?T!Ory|dV^^+^sZxwFXtaN`Da ze9gJd-U^6#FJpz=vfgPrki?QB9q=LLlbsCJ%RP1tbRy39ivPGWSgB-18cp|f6&ma` zx(W!o5a6qjMXi+ixhM2B&dE>$%CoZ&xJ#!pVchCpB+31+X_WRU<^@CZU0Pc0XxI7e z1UoH6>K#15c`8U#AS8{We|#V1WI;7R$4l*T$F&Fz01s1v5oV)wi+MF^Q8%}20tQ~; z^-Gohpb;iz=k~fB9~&rET3+`sfH@uTMo;+46Mgy>AQI|V?IoLoO)0jDs9Ux#^Bc2XO%Utg-zBQYv;%280W*n05$59T6;!Zs5XRb^==lVEIv zoK_=iiI4~@ynjC86THi6yf;OC!xDWPvMiYG*`>C zOvwCXtUtLg`h2@|dHGy{k1p4{p0Vc&oO{wN4d`RGaxx%@)40w%5$INn>vnovEVcoD z^apy{E8BTgcXMAg!o+tSuC&jBfgpkqt71-aj3C{%zJ$ZEJW4Djb{FU(e4QKh%Qz-T zg6^o{-PQXZ9UZ?y<(3ha4H^xu=Lwtlj!~rUNmvPWMka^zct^a{cO@onq|@+9aUg)y zvt~O}X@M4H0$b}RL-_Ae$Nh5}tM?vgTpW2TVmF$qWt_6a2F3h#$tMN7kZNC+{8ep= z2{5uC!|?4zq!8B?b@XCu){=m&Sc89BjqttIuo1X}?P4p6_lM_hha2@m_`ak3W;y4K z{@Un)qVvS~qSH8Sd?fpLQuIHYukvzrFEcI>rG}>Z-DoU1bzYw4UHj0=QHPIL=yN#M z)0D<+NoNB}1S+hfjS?>7pLAuNeTUVkx8 z`QK%fr({dQW#JWPrmT~5;{;P)q8U0G?nX|E=hJ%SYD3&F1I)%5qq%nNE0gk``n1dR*xty42zylylG!9 zgtOLfwy2r65x*O0q)8bV;=6GGK)T%ywZ%@FXNfC~Y_6QP_g^;7M^w|9z^SOLujf?i zyQ}%<7-~N0N49;J{ywngSGiFQ`Y6U(x@$Uo}-;`r7oV@a1mK1M4 zjRU2ih9$=+tV>P8E9{f>%&Y-{UU$Plo$E9G?|1QpYPt2LDHVLX)Q8ufYXvAZ)+$5c z4k#<-Ny66JuOFs9`pJdwXaCSN<(D4Z;hij&vRmq1l&YbME@MVQRd5t4MFNT)>s+mi zx}vSK@678+M>cT$IN(M)L2`NSOiN{Ja7=OQ0XxlJ6);r~cZ@}4tEe?QhQmxEab>%B zIepe0qgTB5EKcJXk`haFIn%hgK!?PhhP-wiiOzCt>SyzFCZuj_5v*|;8@D)9mSH`eVhf>*Yif`=jk!bWzciOy zML)N$f}ztvg{CKpg{Zf5wa+Y9$l+WG1Q9!kBpO#Au@yFA`Eel&&2NAYP($_0jlw%7 zjj?ivTW1!w5kd7<;_SiIQ==Xyn)a(n_!%%I_g)4q{fMNaq?kci9`t--I|YcFOL_FN zt^*G_J{%OfZ>u3$XkSjw`<*sqbS#-cXrxtXk}TAah5Icts#PfJ+bEtqUpScOF)BPu z8hv-3)a{WJ`&hv<*tPb<-B0AA0kZH^8zVI=z-PAgK;T+bs!(D2|?ItF~+c3f| z{aKLluUxQetKev`8}b{V#Nxew`3=z72^#;Zp(#;eWA65fG4ndRBc44+SUpz{%gYCE z+3{lRk(8LUKzJyUQA&wY_MT=wncj5?GD zZJs;pM=W@y@%CtgpUw?<_N8j~PyG7${^u)B>rz*HR%ybULtZWvt#vz>Q2{%@!sU~3 zn}Yu9k}k)4cD?@Z3lK)>h9;!_iEd2(vf}|~a$pld;wm)PK)a^)=16GL4KYJtpuY-n zm)uzbAe_UYaoc34;nOCJ(aXrW+9u*bmE6mORU9& zCf_;oZW+T&&}i%D_}0%Mn7^AmG_BC2G;GSz6F8)dbV!3xeP$*r$lK#EbIMt@ttML^-`;(_9RSlztt3B zvssOJ-DI|8iY2T(=^=-KCs6*y%9Uj!~n( zDeF_I_o+2|MGT`Ll_Due5sEd~QMlciUgqh=!U*CsA*la5Ot1q-b;CF4hz#CWTkjnw z|3wQEGz5G2b3NkbuJ|HSI!`mAFafR*ojvE5x4M)mcN2pdXGrq(o)nlma9G9f+wqA| z@|QIntq&&U@i#vSJ*MZplhZ1LfWW^+t{JHd1zl`*!w#FM+cg)ooG923LZq(rtgQ zXhU{UPas5Jnt`KKP56D#sBaA^`vol$Z0-r(arw2v@71;nPybWFqSL&~(RnRzY=dBn zoikyLSu$!gvcU~wduKm!KAfW3@_qkLmzCc`f*#_7`!k*5YCF8nUVfz{CMWpoU2e?Z z2=<@RM5jEddHsy(b{Y3VI2rsmYUAEaw<-;$Y$-*cIZ)A9x>?`hT2lZJeQtRg9$SRp z`>BX;qcVrDIU*OQtQ9g$odY`M<3Dl)x0nRnOF>i$qhaYQI@x-7Z_0yzvin>`;@CJH z=|@a#p#cQxM}}Owdu}UG6{dp&v*ts10k?uy>l;IvmUhSQ-98~RdMlIE?D=aoF+mK| zpP)^U}YQomdj@oNM{PQ%%9$YKC3QZH!2dp<`K(*vfE#u{5Fc+zY;;a=! zXT>6vOJDq#yZc9+dQyzCfNU9eO-#+HK`R=Ur-umOI=)g5b*#c5*u-FUyLNdMOisD9 zE9*%~`(m0)2VUq9c>|b*H?Sa`5TDn&JJ8gDQZ7!pFF?g~A&rPVfGm@Ih}KAz@tKR| zOp@gAhvUD)lof;H3DI=ai{b^(!dK+=RNR?G`g((f2k{c_6t^bPSc7ffucR6Sar^wq zW;mxtP=_vGD#X@EN0XmLQ760RpG7Ly#h6Pg*VoeY1Y{itrRIVY!Y7olY)w``bHfdi zz(Cg+&fR{0mYLIRp&J4@2b#&!^I$sR3--A);l39ZpwScv!`@)VnxneP>pq63?h#36 zOqbTCgmFkV@l-U#P_-L?*#Ri+F^~DZ|MM^~BS+Zh%!*uh43hu7a*xS?`fN>HeYgseZ5xHeUT?_EO1}a8_&(Q8THXzrJFf9alofffCK0MryOUY& zpMJh*k!IQu)nuWx0N@6zO4~*}mF17V0eq-#$_9^;T|ly5=$B7mC|>hk)!kPWT2t_H z-t~`Nca8k@#P#H{j??^Z08jow<}it9BFWT`jQJgLgQRPZMF9ACA+#&JrO#=`~?`q_w6^PuI{ga7=KVEtB< z+;8&0T}wiE&zRdcC^;3GFJOnVHl(7!+T$!ty0G@>lEumJS8M`Hl>U#XWGWxUo*S@~ zlg4TNgSb_xXAq2a96@H~Pkc1)Rhvzb!~i#1;5iS__4d#n#|N$a=0&9^irFLurAJc? z+}!iRU~spVvj>PKgP z$gdJwsitzdHFHM%rRvo7oNB@}R_byL=`xYE+Yh;%D)PvXB&8GPe*nEeLcctr0F5IV z5re=ZfN(R^b>^$;S}pF4Jafj;6qFW%dv@Oq%71z`@9w9O+*7puMk}&lkoj|g_gM8F z)eUzxQ&Lxp9dT)=Uf$haPhjsfuHIyq5*IQP$$n2#N%yXJ_+T+A}G&f^UvY*O( zxK2zBjPs6hf;l{M&2&1Y&y`|A1u`F%ao)X?z#22zd_S|&5E$c-8;j|&%epNJ*N$0hS2}&U z(DkcEys=ZX+RgIIZgM$|yL}G_wkbxWWUet1s;zE4~?O6;`RwOyL_k-u*ZAAPdNT|>j+KZ)pC2e;5XOjjfx zE$-VL{R#D}Zp8Jms2zcmr>6X>Kc7p2Oh(0F0Lq-UF}R8$Cebf41R|a!rrn zyM$mk?Yv=zI^b8f%j0M-Gz3fNBelA?k1RmdPR=MrBT0qpE+TJ;?EycaW zcOY5}77?Ar3XZBr1XrQ>UMAGE$fwb)T_T2dw5nQ&>lDr(_cRfQVTpII# z1^BN=zqni78e5x~<6O_BOm|*d4(%EL0G8-6)9+){*R*|~MDc%w5g@!X*-FVIb6QGK zk>g;>K^Q8^!=dPVS36BTPKe1#8L&?j5u}<$px3p1HSP3`M&d){+=$M?@)B3(I3i2~ zgUAM*HlJlKr#6|cU&E|U_n+GOWt7;8SOj|tgk>O*vJ8TH2EoV`)G{ZVB%2a5Aq}|V`=vJ5aHWwOv z(?%WbE=DAX_fz=yt3)w;W3^4U-kV4S+r~3d;-#X2+=~=qq$4!wZRNPQSYcA`-3RqP z)j_cwXwpa#K`c%Jfs$)Mbc>*&+6MX&(z>k&!?4)N_NiOWpKbxh6?4}DwQgWSggU7n z;?n9crk1y43pwcXw?@)gxCGO({pFlgB@vjwl&hK5i7B;CUw=MEpMe{tK?T_Wq zSE6{^O^?T48DsFYrT+l2w7XxlU#w17dp8Q19;6)mEnAnv78(Vy{>ZX|C;;mkVZi?Y zX!So_)U{?>XOh_XOT<^8H0rv14bCM$Is6Aco|Vv9_)AH!8>QWICsJGG8Tt?Lt^2E> zpn!SrSvNP>1ZI$Ei#}u)(fM%3k*}fvzsjq<=id3a?kgVSP|IL7P?GhD1af=O7CY?| z#1`RN(^0vOG)3JUvNvz;`=3hCy*E0ou!hzqv_Q)uTuw0|Van}Zsx#d4j@;Lotg@_$ zGDt*X2)CBpQrNF(@IxIoROsb^I6_3QolOb@0B^W4PP3`AHM|j;Cu6 z%pcOHHH~8+w(*{+rvd`c6nF7}M^luO^;JJst#WZd_7SD~HLRBhs2E?ZQME#rtGkwO zn4bAHHlfM4vmF@kVd^OUGgS5PkylC>tWpN6;cqsA6G8lRgdW!T$>6+*KOQgNsgWX!LZV`F`_k~a&F8J5M7WSH{ zlR}J$=}L0>BIw*kOo)K?ecxt1Ri%)o+@o$B9O+0?X)s|hgbb{>oe z2C^<=hVeYBg&cGvtwf^Q_d@o%X2jPXYwvFK)neUhux35#WzKV+MS3kXu8t>b*%lGk zZ(5mHbB=1VzD7+-xaS!^K|)t|9G%OMvjdWN&T7zNBPTs-lx0x#~})$XU` zb_bxSt#qsV#@iGQ2lLWX(cIqnlf~iqvD6*n)o{pVt-a-W~V{;C%)N-|P*0C?j{A zb}wE|22Z{-T+_u z&nL|JPvm*8v7+$)pQhWQ=@zhA1kO?@)kK3B!yISdIqO{3v+*Oq9uz9KJ}8bxgcSP~ zqkXB%f3>$H9=~{j>s-$nCanZ*>|q^Q=iVOun*1A~*_+K-C%<^cOmRocW6*U!OlG|^ zOz^gWrAjRHO#;H!GY0g#l0D71^Z`ic)bcTr>&KXQkM@&gjIV}#H;nz+^*8?j+EJ7G zxUVSj55+%-UL{A0^Tn5z5pDkfQDOdynD;C5pT&(R(yLSA8?6}ZkE}I+8Tf0%x_X}# zYWjAWBcTlh^Dg(tA0%LwV0pk9IL2$td`tUCcxO-3wlmw^C`4UU^c5Tu3)^3gtlhcdes>iq-02EKBHyS?Qi- zv`Xa?I8jhPP5{8q_|bwIL0dEg4XU2vtP3` zVEnG5=ZN}){SR7A*hU;zFa#FHAj&vb#uOw8;(Xj=o3xsZd`a%&$kk3 z_i)?VE&a? zUx+5GW{r|S>KKgY2d7cjj8b~Lj>#NVhN*F*87ybCOYJ&#&BmQ@NLD}IQ`R{LW*?44 zH&^hyO{TuN;pwHk)0BfFFbi>H$M|MZ(0VxePpxX-#Rc?RrjKiny4d7@^{X<%>r~OT zu|AzU!*v?%JY+hN%CeprNZ^A^&QWRJ27ia7vbphQpKY$)Ew!d{2lQF zS@1Q|X?lz^UufZqn{)oQ*yo*@>5OuR@UD8Wdz}<2D_QP)kBct8$Kg5DHXdw5zP$DQ zE6Fv#3u(IjnnieqE0qV!x{ZEx_CMYp#=Acd_=imK6~3J=je3_>Yz&2yf)4`(b|bi~ zxRWw;&Q2?dw-=$%(vrJ8OHk3gL*RW~XWr2xaUIk{F-$+Y!2YV=hpkwFbl(w3B(!Ms zt!J;2P9eBq&&c1x+7UwTmwq=QRO4SQ&CX$6EGz z{4wF5i8d1IehrcxH(CRA#*HflS&vd<{^|DV^sgw@bgQci>8$SUq_?<;knqU3Wj{(u z*kwC=%bPo>uPtVl-guZaQ$odA52z!duVU~=#s-U0L#$k`m#MZC>aoST-tUY7cL>H$ zPu?yVW8Bw>NG5@Z;gt0h_@&4NFi&+okF`A{tP1JfGw)9f_};@@k{c`Npd=KHD8|pqE2F`e+)O5CB@@eyu6fpic+KRDpzLW4D#mikoPE5~rtXM?3lgt~h>{qYvP=BsL{q-BVWH%&ZI#$&k5vZQ$uzH=_ZRQzDNT4zk)Pg$wD(0>SllHj&>HFS*`q0*wG*{|*?~AOy z$e(VtQXylB6n_EiN3pI3?^7c=Y#&PXYxjnDB)6O9jzucN+PqT!+DlDRdue%Sq$!_V zcl@zXHcj@IbB=)e8k#50In8G&Ab@$P{N0O9E4u~PLi1dCXirLi!oL#*@dl&e`J@{z zW_zn(Pe;ivzli7XHRoP5@v7*8D_E_rCb^&Pe1&2`>dn*e9Q`Yi(R@`srmJnJK*28U z8S|UoYauix|i==~s%_JRPz^!z1hcYo&@mGG$)b=C~~z zTC?#t#LEpsPLs^Hx6lmPUUoF|FUWlk5x*l{+ejg>o_zFN52>b=nA_6jK;nHydyc9; zRQ4a|6!3FV+osD!7{PCt{Y^Lw(w6rS;xkMq6jMp#G}5pQZq&kXGfUew891S$>qfDVjLAI`k6qaoVpK?9-UzK!^u8q44&Mo@Q6 z5c+)I{c7{?7x*D9CG#y%`7Ay{2663E%2Jm@$}Xagc#2Aj%0>txxXo`sTWFf*)Q>N^ zvHP{?8ikD3l9iE38T-I-SX#73Z8CVk>ZDYOr7g}79Mp*4FF8L`P$_fEU>@}%xy}a_ z=^QOva?&}*4^hoZq>u^gjGC$#`CGbm%}k>zDXVoApHkY8P+;epofzi>y;BDVI0x%e ztMi_;g72YlHvnS04*}@%YrZSC)55RL8IK)68LlQa$2iVw)&30~zCN;bQshT3$__K~ z6W8#j)s@XD#_akh;qHl|_)A-keM?2P)NRPaLd(kY_qpJa=xgcC8^k^spG*&@UfEkh zI>JiCQ`o7-E9SXGvL;w?qdOGfpT?@ZO3Yc5=e9>r{=IQlrm7tgsN$@B5v%-E@NSK{ zMf++Kf6qGw^G6@;e!W(fpID(=SEl%73+t@N_<7izSJXas_Kd;8MIVs>UINeo6+1_mplHj1)FO}Dwt zUqf+)`B4TB5)2&lBD4Phv+kw}HkKe{fr37t{;KYt*fP3E(8k1oMoTtp7FLc6(-vfC z%I=V{ASurW9r0G3$!g~(bEY(CR6HMoY6^=tE+8#j5%IsaM^gg4db(VUa?W{_%!y2F` zD*TquQIDq;nWa+)?&hXJv(ytcpPA{C<^g4Lyatutecj zQZVe;R$y`f_n=zzEb42bJ9%?MwbzqxZMgYtM|mHwZi2bH$gN|ZG>=bM)zp=qH!ZuI zVS(@YR=%+cORCFp8_&Pv7=uugDC z_|$1Ft;8WAK_GW9S-g&)?r}(04V;_n!XQ(oI1-W>O9BY!NFe)A2b5mg zF+XXH4={Yeqc|Y;Aoe-$TJh>O9wCHU__&KrK!CApjJ!GQw;*-&^9LiodeN=Uuy~s8 z&h8M1>?Mq^95B!2oYq^;&`PZ&D{%=p%VdHNsHkql$~P$9*m#4%9wl(GNel4h3Evdx zdN9Wfq;z3j{{V%2OQ-mOHpG0JwHbS7Zb!QMio&qhE$wvG(RDZ+mQTJqfIw`;+ zpU{JX2=q0=cu(R4H*zMIua&pEAPDYA+LL+)?5+A5@44tjaY`;PQ?4>c6XNfOdVh&` z-&nHPYM9TOqxW-rNC$uRhc)Ehe~7#ns!gWfTNDz1t+Tir;G7;e4&U%4=Dv~IF@ah7 z-hrifhf6jZwW`e*RBn$Oe|cN6{VPaSXnrmz5KX~>YW+so+ z#(3VpPs9rAEj(wSc-qite-Q13z4T*bI>bx1SkF(KcO3LTrE;Ds@GiID%ca!qC7R~N zA9PpHWnKf@em?2<93Rr58orO>R9H3Ej>l8R)YPLJW0dyuRB)&Lp~up?(@kh((@b9( z{65uuEa`J7OWiVK`<+JH=83`N1O3*=V_You%?k%cAd#GV*Qsc}FYyO~XKfQ%v`t4u zxEPYs;D?SxJSY69&aS7cV(6-hei2hX-<*44s@f49hQWzB~dx8&o&JQ)e z-%{zCQr^LL)c4;3d|;L<<@2u~(e)Q>$kHkM2B3fGst@%t9Dl4{IpiApKf~TH)Aiz( zlA*BGJijrlrFCuV{rH@5DtoU^;2taU?IZ`7fgp}Ydh7fvqw;wx{p-s!QwF$qHv z>&n$x+nc$s512;AV!;C750?WioSb62i9wMA4y1Ej$BL~| z<3XN7Hb z9XrArU5>3UoqG+sB+_p$mIJ#VynAQ9D}MLLveK6F=2VI{ZK}>d$@Z%Q$M3ZOk~$O0 zk_~V^B$ZoN^MU3_)wACtBl=fG;uvq?)NUqwX}p$pWso5%Mtyo$8>+{DJofR&Z7UZ- z#rB<{bKK(}g+f<3d;EiK;Y@3~@#4m`2JKU3TAs1>YiK4+86pSySe z0P9sLb={IMhy}}M=IvE>^gxcKt?j_IpmhANHDu`JmQDLCv;O7rg*+}!HgoL0tUOFMD9YOp2T^*HU0gEcP8aoO}e zgTTHs@TP_1`J~e~+i1F#yih!nNMu;#LUuMt$V0e;)N(P!d(NUt+1uL@gClNlTKLz& zwhyiN<3!LlmWuNB7@a`r7;Vq^Y*s&oeU*JHO|7`?5^el{$*NB3;U#Bbt@|F}U$hhqU344at?U=%9b~>vORb3GR<2@gIj)FF70m zfO#Xgt#}Tx;_V8`<)Rl4DzlW`8uY=&PJ36qe0uRbIv0Vy!wibLh5k}9I-(D}YvWt8 zvN`lU>pGHAFJq$vrzeVk-2iu}Q}1WBSyT?(o`SohElww7HA@l+2k@&XPCy2rQUi1J z6)?_5PEAyd?RHM2f&dxqQx3zAtw4?Qbp2{&U=DGLY22$dv0+r5xl(!UUhD81MVjly zM)S%hI4#_tmm@8O1Nr_{;#zQ7ZX-j_HTG}8-4fSL_+@E!n*`V6%y%cSBmjPxqE5)# zlD4N>np5XLBx-+$Jk&DjyIGW7MHwASat&zQl`MA70^=BupVqM?QIP&y0(d*lN7k?z zW?c#fw{P^5DchW?Y{$P^#h%71GRpTWu=ETvbKjcU^BV3SCP&<%a6ktfcH^}}J&ADN zyEq2~u_GD!b)ZcyhB=L93luCv736`&f03$krSHyI4+&tIl< zT`O6rka>l<>5>N>e;TgV5i#=|kY6VXbDw^Cbm%I%iRC$h-(^t)+oX!Xy2^QAdxB3& znIyQK1d_yLEOv(MgV6eaTHJjNyy+zKLdL)sL{FLV)2ZX!@@fW*+f9hAL{T{lFe^ySbpvyAevHt-CyzIs;-vB+B`^P z3-d=PD8PE)*0q(>c}=mTw@E+@R1Edwp2P91U0(N7`(%*$kv+Po{n_L@V<(aQ4Nc!d zWLKI$?8(||hK?IRLOLnj>e%Q2Jo}$|L|qo~67{Bm#y;zzMkDAt{o>Odat+YAR(<)BUCcA;2T!JING$I)i|FFHnkY(*`yfELUNTMx zIL}f^tw=P@F2Wfa`bhGPpEg7cRCNCU3Q1VbO6tZkMy`w{#zKZoxllc_Pc>RiLKqx0 z?p(LQgYJnizmcVQAtfg^h_S-oHwk&gKcO_B?4Mr;V2}oD<)aApUg)&8)CUEpA;| z2>$?C9~mRly=rL|K+SPHZlp5o&d^CL4ms=jP}PO5#;V)>uG~WNvalaDy{d?zRqviM zMmn6=FMoBua}An8w*LThsxDcv>Q8FZXrALx`vj8l10BGeWO1LU7_4b!hAY{k*g}aL zV*`!A9zP0k6IU^2(^N&~Bt;@DaLvm90EnrfvS{s=IW44;85eTAe5vh_NAfkXEyTA- zWsV@Dcly1f2iHFJn#EwbZ?np9{1r@~;*L;G<%=uViA)U(G-Ho5KXiJU*R)1A$mZlm zs@U@tw{huNmb%*&ohAn6W;vN)Mj`^GKHM5V5zB zc~*@JXX*!IQj0khwYZNPR}4A97zV6q`pw>lc{KJR9yz{Ciz(N1GpF}mdyhlZcB_+V z`l(57;$mS|B|?mx6ONs0J=O_0dCZe9KPbUpsHC05(rZ%Iui@P*#QJQyw}c>cxQ%z+ z=?-^I2pwHNzaO~dcNJH{zCXRtC0#3A6I|FK!np*?ZaaIj`*jru`dy{u8jX#_mbXzb zXlFuIl>L9sYka|@c=BaSwS!FY3ohR|Kuc@m>;C{u-`k^oO=jSyqa{t#cj$UWrQNQf zWgX>}#B;$Q+>%Ce4O;TL7Ox(f+r(cAyg;yhrYoCy)JXRH`BHy)VBo6`ITh$$9`TKb zh^(68$q0Dy=Eb-($Mqd??l`VF(s5@^I+3Wa7H&mR7tT00if;|ZCE6Dt1@Tnv+ z>RuE@jzgDyIPj$RF_X~$0JGE5yT^c*pM}{{UuG{43VHU*KII z#gLbneUnjD#COrJ&Fmb168^Q~H~N2x`~|Opa2ncD2uq0mXl_%}(2w>{BlWJjb(D;y zPTL-j9ruKOEZdlMRkzT5R2K<(7{oV6(Z~5e%Dm6TUJ%wiFRGgjV#VQ;tZu(FaNIbNLOnPB5g&;9any9qizKU=ZT%Tr zu06$V%4K%er;y78w(Lw?4CK;9aIOf($vgUHy(`6k4dk=aKj9(p#mLsQCk4FdzG)!# za65bcc&|3OwIM+YK?8!KlXn`wLrY25H7yrYOYJ)DOG~8Vd}oIp!5tY-p|5QCbMb;p zOO&>=dwVHlW9DfSHp@Gc+`z{^M2DU}>GaPv^Ut2~ut`SY>reA=KfH(1m6uZP(?3Lf zJ>tC|#g;QIo4j`se3w=;jg#A-_LtMqhC%FVuA`~Jrr4}k^Q;%TT!QApcQ_J`o?p>{ zE06H6jQlV08vg)HyR=*Di>4OGHuu);i<@twe;RtDWFJcUcfr3F^nGb%zQOwv& zZCWrs&oL((TR-Y#C-_@}PX{LzlZBnptR|YXJ^RBKdQXhJJ#VOKcPIquyf1Y<#yyV& zRJVQ_)u3~-)Xcx$h=%<-{*~uq9Ya8pTdxhl3#5`6<*+T~hI7^9VfR?|An;FdO+U0H zj*{ZfU%A!vYlR%cdtziigQ~D$?~_#JakSI2Js#J?x4H9glkBiBEL@DAps$;LEBr{a z)ckoanQ1Y59Y6O76#S)!-Z=W!_ly4kX#E!BPMQlDwM|NCV`NN5ZGw_9pO_EiYvt%h zqj{+;7I4jVbu(pRg-nt$C!RXhC!t9@9;<2N27rdPzM2B3KO>dJWa@r6*Y!(hhU;0p zYgS{3Lj_X4-~pe;xt&wP{vptBQqNknHgdWN3}t~J9@!jbsY@#Xg~$L@xunLf)ysD} zkOL*ckLOtTIH6;*=n^>I+hGI#`I1BU8ul^c zNXN!`yelbOPiiKK`}x^sEBK)wh^{a8a?{K@Pm6Wq{7ns??GKCOE?IQ@GI9OaVn3r+<@MdYjf~eEyyy0T@w{4Bg&RP(ko}_T0m7b$4kIsd)$7{3a&x;;5 zyYZinF0~OREtHtxL(yX$KR&;WdHPC82*>{btyA60<~uM4<~##c2*J-7J#kz$UD!8s ztwtNT2l1e{%#;A0phcBa>2v_`I)_`Z*}NEP=F z!T6-O_(i135#&@yLe0}5+t$7rv3-}3ays%l*W6zLu2$pW6j7=IV4c%}lY@r;0NJU( zgwhL@Gq+m?1d}cXK3g10D$HAlF8a!{mq9Ty`Bu`qg=202fCf5$V#gD{~4f zR|*)FQ@fmcRhGBLHmDqQ3)ZbXFSxXXgVl0BT9)0NA8Ti67c4}DMijB@{{ZW!>GljJmDmCh0!hY6ImhS^?*^V5&7e%_U#G|dFA z1IZ}>4=nPFlg}UFOpaNMPO6w8NFaf`Z{ti&T*-Sm-a_(CB$1q)$oa?9Ju1Tenk!k{ zJ2aRIjQ;?0IPdMpN=uiO;olxzRP8wa0)Nk1t!tDrLP~5WA~)!L&$ehKs}Nj$v7*iq zSm0$x$ll=f{#|Q4#dKydKb8Z4p>huc*YT~7w%b6lz|fc_Bq<>7QOa)RiQTUt$Zt4=Mg${#C!1F`ME`LU6nYcg5k{>{_Py^6;Biq6s# z^NxCsGCE?qb+=n(S?yttA_wm-XTvsn`}XwrtZVC6l!<17X3x*MUz8jUcIO`5C?Mw| zdwnYS-bpE)Qwm~Uha_ho;p!`IQnrU#(BJHvBxF8hXbA=J$y3wvHBam}7qUE|1*(D@ zV<8*+5IuMt)v+DMk*K7W!e1efyP1a7a=n2(6M@^F)Z4fm%*%L>^QeK&GXf~iKM(QE zY3PGevADawR9CW1qC}G?b95N@=dWtplU392ZHwHKZ8|RPtUgjR)Diu0S%+JDi*~cq zZ9dW;l7N$+a4GX?VOXPmYTBL3TwKW=yMlg50sg$^v94oVaN;&|wYM~EaCq;`MYhQ6u=tcpoAQ44CFRJ9cb7_WIBc0GY6ECz#a1)#Yf{zmk<84Ye)|aqaz;F zmoh;#tnHkSx)%d9#JhhZ%2Zf+;eg3vI}=AK4cuh0TtbD?a~quev62tzS?zEmkzjnp zq=H)&tQy=}JdZoP>`qliKOyCb}RjAmmBA z1fOB)OBKctNT5m+qXC0iF_7d@@mzzc(rzmF}46F(xj%YSh&~jLKv`o zrRXt(Q)#-Dz18oN5*^`7mtqDmM^9S7nWi^k9#m4_FCFR`EnOyCb=w@9unRCuekTJT zjV`wau6Aj1lH8e1$zIH;N!`z-ZQDiR*1v^yTcn+zo$NL~-}YD@ewD;&mhf864xmb7 zI6uKB;wx6?TC$T$jv0|8Xk6@A)C>dHpGr+!Q7&q_Vt;PjSVu8yaQmWQyt1Bz{{Wt% zvhJ;)N51{UizowvQ*LwDjGyOPwz`^K!5n*?@}Xi-GQ<6o-lxB_w3^OH=8&Z7K3sk8 z$J&=ELZ^&0{bNcV8u7FSdr^aFsm3==W=O})-Pf`2k6c$FtN347@P@Gtp`~4&t(UaF zwL7Dke!U1i!KYm5^20WFm(RB~qoZrrnoM&=Euv}~M8q4NK2Dkb{Ac(Z^gaD)B%X}H z!cctF_Uv?C8S%Ut%g1S`i1h7a8+qa@pQoYr>*-yDbBPxvO1L;>JwdM|@mGc5xzj)4 zA@IDfd!^)gfPb#De!FB|pn5k-&eME#uGpkWcXDn7cmbRO%%k{N^*nSn%TkNpCtVux zlF^>tN|BS=sA_s%pRDO}Y1*Z%cUH0wnl~N&LFx~QPZHkwQbN$fzXa>(#Q`{ zisw$pM={`jHTY$y_h0r!XdL-DM8KM>mLHmRrhmwd6R?T1i| zW>~!gt9N$vzFR2anrf4FY&L!%Uw;S)jT$_+25SA+8>rFkEs6ReulbXUA-h^ z;G4O}X?o9yz8>GL?wNL%T6Fw|jkm!%`}!K_?|ePspNUqjs`x#j()GM^$Y@E^nP z4@1!Xc&?Rau^PnZHEk;EPQRMQ_SQ>j;yYx9MZ+nqhgo3xqinCIdiGmi7kGciHbX`6 z>>}FzS8cYj5CPS_AJlsq;(TM^eOJP_DAxfltYzj4_&JI}{SUFC)LM2;*$l^9|9=zKo}@*R5jBZdd0=`H!VWCOf>TFc^OoE@p?yeKYXW z<4w+=95w^azp)q(rAsDmEl2mQ-0=bIio5z@Ye)3r|yc+H!De5hu zSo8HGlla#s;BSgrH;fuRI`BuPYejM`i|&f#e|iW0G5*Q-Jje8Y*o#4G%O#{dJR;e2usW^^N*rWWdpU%FnR#s5TK~gdZ?^E## zTZ>I@)HiBjIHQzF*jj56F^WQSLayVC)d+NBCa`>esy3V97q+&^y1QX-8jhs5U(@;5 zNfH1z5x}oLn&Es&@hV%X7=LEyig3s7nNNSi`cMmT+U~Wc{5$w`lHIrh+8v63;K?U^ zemSp<_3skgc*De(x0;mMX-Rx%g#)6Gpsv5;m&9iAH;P`y%3^f;Qe%t;;m>xjA+-S1s^U0QaYNZArDB zh1-Ai>U#rUZ~n}r&){3zWl5dI)@d4S5RRDhQNRy2lkyNs3oL;6-Thbg3FRE3l&5;H3f zx#)k+Y74Z5Sb#?Dxypfxw10WN-Q-kOAeHS=eK5dmB|1egmpZ3&sqp- z#(Vh_MnF&s{osrBr>@3rfFCdbKsg8N`BSoEC0t1$4Y+LnFKqt+I)ZC#&S?Z$j|q8upf>NJ5y|~Cu4gQcLqj9-bOG%=rNyK*pdNl zGRtg4B|dzY`H%uJgX^4rRa)9O(ph}DAtF@4D!9XE*XU{Vu_i6xk~WRlkkYOTWalFp z{{TPZOSzmOc_ff3lBBUAM^XUvrJbJRNl2o=nl6}ncE~VM;)5((FJI9qIL%J~-AQPMnp5Eius@T}I;7NRmBaRMTNjqPXc=Z01 z5CN404^oz!{_{mipWE$6qxM*J&Fu;7oc0)k905ZD_XYDgx*i)y;A z?o=G`PkazZ;aRDEAeh7@`z#E>aT0Rl+zz#)tdzfs+VD*BN@F4S=OBQj4}apU38WS* z3qmJjj!58rDW!2con6(Po%Nc@0F7r+<$=_Y03hIgHP78eaRq_5xlU&*4 z6fF^W6Tb#JAH1no?Q1yPV`28nG?d=k6_-g_7L^BV%g+01}_2QI*`26x~yR zamh8Ke-*{0*2tlMEf3#efO+g{)OvJRs*_GasULhU3B^5yyECoq#1Ix%-q{3mkSk&h zIWHpr08Ay7_>CevKRi@l+7an+>@Y~kM`8|r>oVr*=Husz=o@_JYOxshBBsx%ld%0l z3s__xTp=AvP$K!1u&2b!( z{hTC93og;~0Y;Xx1l{#B%UnkckO`D5g;~%A!)-ZSk~8^JR{9xk3A<7sKQ2fhdwnX6 zz@AyM;Hs(Xjxp+LNge}iu)V2iLH__-yR|0ntX-E<@-Vt1A>$bX*!z1^wH;z@Z$;a4 z1QFa@<7wqhA9}xk;q5QRO4r^Ow-!3N z1+H{5epwIq?TJ4(uFj&lzqI|C%xeB@OgKHkt8mI5SmaxS6v}t3h;YhBLI~(-Cu1qn zyXKCJkHh{X)x0Bg(0Ok)mi$d;FUrV!mCxO8Zic;gN!DyN%{6ay$<|oU3=a&4(T8JP zB)58ZisD;u5xjPKpu)qdg$k1%%P<`e`+uEt^V)ca!G0k!!TygboH)oa%DsUDh92Uu zsYUM-YB+@_%Pkr1x_>tyl{oH4QCBat?=Wvuf_f3iHOF`x#oB*~B=SQGJxxc?Z0+~G zN*?3&73r}>=0Sp?NF1YAGEF^BlgfNu;O#5K_MT3q5r*vsBD{MNA6*O9GPOx97Z?7Ad?=2$=7J;%5I z0IIrSG|`Nr)sDAb@GhOGX=lVf1-WbMBlAgOd79t9AKnA=uQa%T6M_bN=Yw69xz;={ zbei{vbrU_Nf7Zpyk?8AP3tRYS;#3Vavq7Txml zIz1=EH+pLbi8I>n-Q^NNL;d7#sKcltzLofI@!*?C?7UBLCH;zFKeU48;@i+pgO^|S z*C*5-O?;A)D}q>+ewf8swA3yvZx(xbo*7f45A(>P@siYf#b|z$TisgUSi^f|a}CY3 z${s19aOonRg;;P!c_+qA1%q2_utq*%DVgN8!(j-Uz+7)21tOBh1!QfU{dSZOhzeqYe+PM55Nc4b-lW zogJ7A=Ad&KZhF?vqov7fcO(uD-5bG`KT> zVTFGIw!8vN6M_ddbzPXLuXJUW*lHbYwE8K+?l*RZ@A@=cAvwge4^Wj(kFNJq2wnfqh2s`8M&dQpb$`72|&t{7o0b z?}o8>PR`+5RlZXt)T((j;tFd`$5gnC;?1nr*XianLtC$>1MyeJkZ3 zh#K~x;*E0aQ@WFUvdCG0CxO@xU@=hVqp^2ObBei|OS`h|)s0H$?C^vjd5k&7VNSM# z$wP53-5mkrCaKRO&m&0ZliIm;PVaIaqs7M73`i~Op0w%Y5`tLd;~>=HT} zPAaAJD205HxDm+}w;rEyHd=Nly?Lf;5L(*V0Hhf+&UrstvpY4jImn_U<+!U+CKP&7 zBPo~VA1OJj_BO`q;6kH0;;lQEsT5#_RyFo-?14IeYu#H*7nvNEp|E-#t}*=UjQDN) zFJ5??MzPj!rIlm2j7+g07}(s5p1m<&R(w17Ri*e4ygG8iE_Q7ytPA6gzJrQf>die1 zg5_H7dVSRP#e+!fn?@QiPD$&5&>H4-JA{&Xr9mr}I8`gj6}bk3=FJ?pPW#uOU=BYX zMOoDJ=91nq3@F<>k@I8F04tuAT6E-+cO}M6UdIN%YPy%~#%Y+S!p0B-*Eq+mQ`9Z3 zl20JVaFWI_Vtkg|eXuL0)O2Yb*gh2;6S5=<=bqOP3*cauG5? z=Q#Em?d??=A%%R@jhcPgc=L~A_zITcr@FU{LO^tK6KVO5bKBOl+5EK%?qgM5#mAxT z{(9t41UHvY4ZAe309^rn(Cdz%*GEj1E&mJ4TYuQ4wm_FSLRn|Y{5 zWpDPijLgJsX{P(CeV3^}g=e@I8%4ZD0_XR#uq0#O@a!n34U)rfvW>;pa1F=|Gsjx2(Kur$`^lCkH~@N8 zx$h>s2Xw*bCnbr=9=uju^Ol)oa?CJtNb66Omn5By+e@1bYT8R@gtUYKhUcGAT;{u` zUs&qP66#D>Xl0Bal{3aM+OCKmHuEBx04tJ%8OPG0M76k)VJ@i6({ShTq9ZBX2^|0= zxd3N86WXb_ksBi0AoGrR&lP7?g6`Oe)v~G%H}&VWL8rs0T`>D5pETZ3!xdfFqC_Qf zXS2DA#3X1VEy)ehzLgdxhB)0-lLs8|ewAQqlQOh35>XB|k%G0Me9&B4#MbhOl{f^S znC6pKB`X+j2A(2SDp9eLc|3X%So)=#0DjMxQa1tycGlF15=h=;pEpgbz^cM&HzY2F zR01=Of}%?1iCE_v2~-a`gQ(+=>*-32ZIuc#f<|x$KaFf^I&?-ea~nzJl_zQbB0tEk zUTNfwz+^j*CwF?8Tzl+lL9PflCBxuk@Pn_lZ$TE3sadL9+?Z~g{#q~IIrcmn;Fz&2 z{Z43x;o$+doxtaNXAk`k}${~yi?^3 zPFm%piHDwmWM}0V6{n_niWae5CtbID?JJ~Y9L;O*8T9p2_*Hw$YnzzFi7H5nIuZ#L zk1C{7c`1;mw@zr)Y)s&%xudQ4etjLG)-=1Zab)kh-u~Q?wTCz)ebyd^y+h&e#b|Fl zofpNv0{_A`6HRT#!xp|{q$gnh57V{0W+1xJZ=N{v;dNAg+t~9+r zQ_}8l{52VtA5Hph?|-YWIj{u+?<9uk_o9ZmlI< z$t-QTNUS9n7J4vgtD}Uz)7~d06(Ejw_xvl$JZbRO&ss8S8ZVb+sUMl+z*wjH{{VHp z#|OWyd+ptzWjqo)9_w6hiEXE|(r#~T>>m2&G~FB#Fjkk_C%sH>7j!!*El-wWyVg80 zs?BRGQd`Up+3jW@EB!}&j*KfrTH0!{{l7qv!FM0d_Dpcg&s06f`Qp7>#Qqv@5njz} zt6SQ^Z{(q{xQ?i zJxz2|n%R)!Bz9VVj4UX-S z5tTlHzq)EA)GW2NNc94ix5I?FQMF(F??cbi=~`M}h&68sPWCrZCElMdR!eEVXyhI7 zTG?MiHFJWV68I>=Th^glhhN>yO9A{<=-RJ@blqo8eQUwenE>W}HP7#2nPds5KnQOR7PzS)s@eq)5f-bED=wA_Ipi5`19iVV7Wbr{^NTd zJv}McFiQ-DCPIzqYv-*uR-VUymfNC!9v9_UeLt;wr-Z&DLmi^pYJO$yj{{-(r?(!X zKkF2FbsdjERMNH4r?lm@&W=C;AXOXfzha#2=gT~grFOsAx^}UoN2+M|F;8zO`DBFU zPpBiY9mfW_-A_Tjiqc?qAC&YYc0Qt`UZ%P?bb8;#(YN8fim3Tep#4Cv0b}zT`V-14c?`e&Re03?7`#iRP)ehYq;vGeT}1hX7w)8F>DDc%Uo2sMRXJ|i z_OGG*3%U&*?Athu?q8wn`h)q`o%nadt7;VaWD(E5)ce<`=r-*ODOJZD{{V#vScyGO zfStq&U4)zpk~m$uR9dE`ructLlK%ixx{es59F{%*0Ie~la!IAO)9l{z@CO{OvL#|v`Bm6(TOQp9wRx7Cr#0;4I^Z6p_7vFTn)d5IHc2EC*0gntp{8jf+7b=K z$@AdytLgaCQChx+a+7Y+IE`pW74zG``=LXHBcprPE0A~xiqXDyk<5e)^!iq73}kop zt{SfL1g)UbaZMd*%nuaG%(K^^(*TpqxR3$IdXim3PqG_h0ho2i_}43Su1|2~Ly$eH zr=26Q%bfbxu%?o+$l%$(cj5`0Y>9S(=~=CE^W@0K`PEeGnwl^$0q2^u?uX0RvutxJ z=hFmNp?o&*{QCEeEi7YFT3He$@5>y2iLXA4Fm)@`n);jeQ1Eox@5Hz-wkeLzGcy~p%M_n*A^!H4P2PPA< zACG$8v(uunvX0spV2E;Y{72rPy1&ycAYV0+_UB?R%yV1|5hpHK>b(tJEBn$R({&>> z3Sn2ck8cdT;~Zd|3b_)Fl1rZHe945}?6o7B`p-CyN!dejBOwu=ZTQdgu4i4n zncCh+PnOa%XJ;H|r@!;A%6$^XE69J>Ni3w3xrtMO&Ozz)6_2f3TH0zh_fcE9%kO6r zf3!Ou{=*g3Mx-0GZ*w-9dYr6VZl{rNU-&}w*dbw(`?+2*_-3qCIH100O&{4oFqr}(GcaSEDDFSc6$4t84Y`B> z41#}){{YuoSFSewoW>K}FGJF+q(nE_e#~VXG6~Kz>qkNxxt}8KxDs8EKp5DaeuLBN z?N;n1wn!v*wTv$A70&J0>640e-J#mexV-JrK=i8i5W2L9JAk;y2cLdBai7Y838_hN zE#aS2xZMNp5!+hu5CR8$XQ-^J>758mm5m}`83=5Vp2YRdYTUy;{fu_nd;#PQ@*}V= zqy6K64+6Od`&Zgz^JPh8Vgk4DoOZ1VZ(A4Sg5Eq_wCJG@O6LcW?bfqy^%(9h0Jn+v zoMDRNKEkdavoez82|97#>FZES3`iE{8C0+tAoeucu@2n|#@bbdZg&+YBX4qQV-6lE zen>sZ{#1iffox<+moj52TOZms zc7-f%?@|F8fU&?iIO))PS1}F9SVWEU79IP2YK*p1-dr(t5vVy<&NE4?i#02C5~U-K=GUv+_}P$(EHVPx5zHc0sif67%t#kTtwcA z0MGKPjp2LQwD!84Rs~W5nGW6Fz+#Ph4CUdHMUw=ON2O`nv5MW9o966?y#~cCQ|AD? zaHRTGIj3-{p;$2Laaq}Q9nE+yqnbe$L|_~c-Gy9hxh%k@Tn`w|LM<*eY8XC!fNSRw<<=XR+4Ix?hZ!Xb@?->Tpneu-*RvyZzSx z0B65yso~!jc$4A2xgtW67z_UZrD?O|BcA1dy58gQtQq%Yqpm^04W4t`pTf6ob=ysD z$~`B=PT`ORx77g5ko!sf<@f3-w4}8#_vq^#WB8v!cx%NP7mYNZw&@oDN~06n$T1{G z(TAtMO0TV3Uqvmo&8^jyy}VOyzDva*JUBVp)WF9ha75FceE;DggO%_ubW zJE_%DSGiAA(e#vN(x$n**7X}5`pv8^$L$E4uoWaY4xo?#C!rY_BDsA-PQ1K~)5+Uw0*RDre^?R!wT`YyBpQPF8gHF0jX#UjYGwyS|@D)iqhKXS|#HQo_|pNh4VHov|>+^#o*R``(rA2v;V1}Q=y_p~M;YVVyx+uL3=?SAI+WKok!sev=D1sA+LA|-RI(4c*zeHdwS?OE zhbSjzj%j4S(k|oG^lP?gcp^yp5B6Apjch#HKaRdx%vx@=M-mProccGv>-DZe-uCBA zaknwYaGH%j&Mm?2PZx1TYH&exepwV9E-?d#YHu^a99!;bDFG@y5c!7 zKse{Iu6HJ#n=L&odRK$KA!=S8)cosNmL`z?`UywwF0uXKKI?z9Fn^VO5#f&!Xg)Zw zV`clBxYzw6!d4z)dydY(?GMKl@p??aB7yfR%{)8E8RN8BV}t*8}kX0OO9I;sw)mPZr5< zX?U}$CZNA0GpQpx$NaN?KixgC(!H}&)x0sF+L<+7PR`kJoJk-A{RdN8OM8_Q15MFe za{Pq)5AOS)dh6`;_^qMyBxO(s8Ll;aeJ%3&eh%=?qpBQ%_Nf!>_QO5*zA`?QT2Br5 zr^J|V7Wja{Y~23!#IX@QtSQhTJ6A1b-W{?osp#LHe5U1LG}2!rGd?k8ufQ;&hca$2dJv zhjpq=MO}ohm5o%gZ6XJ{xJ5_rPjU%V6A*_}Qi z_bmgL5$74h9!Sn{pIYa)JIe=xyuoe)wvbV%yzy92S259%Gc1l70Jyuo@pyKtOn*=cHHB&SV5Kc?NURg z-My%|^4XP%0PQB6AZX;niu96um^&w8MCuQyt5L5x&%H$!c)+W1DI^a4J?nUw0Iyr`Drbty=P3t1OH2Y(b2UKfGGLBKUWqUF%*jwzs#o zY1?=kRA(fdV!v7ZBcmsW{12sQ$rw+wTBK~F``G!9;&N(n6`eRMZq2apx^0?^Zd%D9 zxs%UeFwREZ$LJ~W!xg+jC?ZJEbX6DvpG=Y{g&)`kHZzpSnb(qp20;)R6~x#3!jk^AlMbq(TW9?CcSGnI;kQ zf;#8Ff6}{f)f8VXj4H*yc;TkgFF|EVM2drPigAp4E_(4*x-7_pbGJwK7sMF4apE zjzh@FP%sJf{Y_^wmO{*>3a|`zp8bd54Q)swRY=3IP(b;5lZwolgAcQ)J4Xefg}`k82hf^%>`i-I^gZ1Z~d$ z0J>L_4`5HFU|h-jhm+1_^2rAafsA#};fiF)WR8(5Y%95=!vNXck&nZ-}jOD$4m0YHO392AQ z{p%nuszw86KKb_*UTLO|MQG#X@Lf+qP{F9icg7i6m*(>b#^dQunrD}1l&zKJheCdW zq&bLXne#8177&brIM4q8UbC3&#IGxq{x48ZaaLuMdc50)RR;&2;9!1v{OY9pTWUz5 zBH;D2e6?+=fBOEklQO)lv09mdBY>wL zomz2ca7!Y&E6Bki4l29LB#gyp`#eDMM;Z1Xg-g9^%FG#)I2{g6XUgxXqIXA4X{>3*)D)5? zC+1~4m3`{X--s-%UwYjC0BT$UHWI%g5252V!pOmLA!ax@*Zf0|WSn!{PL*<2-g4?^FN{&%o zUsDHSBtCIcqdiSV_o6Fes0%4MAe>^fuF^(BnA=^G4wQ{!w`&jIOs(*?mniYT=~}kd5%Ut=|9S@CCqV+ zs}XWW2IJ7y62&|+g3bHJ>Bma8CM-8O*hd-9T2bEPYg0z;MApjtwy->?s;Ff1NNj*Q z5!R9AR+Dov0DW;&M!!1C8zy@Kdeds+yXb4_`rx#&I(_x9)O4v2?<}M^F`w_me}#u! zbTv;|@Zq(!8s>#~_nKI2rNRxe+n&oH9IFH0+OwuFEBS!}IO9EyKTpdeAa++RH{`*b}6z~2=@YPR-%J-xe@)LT7}pMGGGT&@koc;t*@ zc*g|hy+%zs;@?G^PVl#fEyC%dCDUZRefIOj<0Qi?bKDz1$h4eT=0&yr|-YMyU`$bS@gj9Mn+N&6!%g?4trz0XE=37 zMHOs(4b$9g)TMdZfv!6w6mTImNr)~At%WoU@#t9rAnlP3!1ZCIh^CfWF)|s-_OKaP8xV4mR zWo6v0^&P&nwT`H@6)n#R7go3GA-hnMpSv*V-o~wI`qrhO+%yvbEvxWid@?xp^sC+^ z@HO3nNvLT_EybGr#xgS`L;nC~Uw)#wyKO*-L=%rX1JE~B_Z4xS_c3s3*_(Qng=MPR zzM$WH(YQbptv4o4&WD{&g?!d1W1rY0=?^*ud76{8{3yi%uj z+bu`4juLNU@5k5cPEk@;>NM=`aQ;)ZlB@pSpNWTXx93js}Y%= z6?>~+_K=^vxc(E*q3vE2va1q0Ha%+87jmPA2Wzhc^vBY)rB!Uht_>2LMO){wuZBDa@jG7dey%QbtEB=`4EB=}V7UYP}e?p#RJ&# zKaE}oyw$YE@lJ(kZf~vNFKp1nG<}qKM__mV|hJJ%q|*LnpV*Kw($+E z=9_TVmk~Ni8x>_E1Rrr+%c(MP)b_8jz9f7(@ZXFzyThYSmY2~vNT$x@ln>#2euu4m z&EoF{YJM5iq_fm)-Wd@3WD)8QaZygRYR8%-VleWhCl-!Anno$)V3F@Y>sE1}Q~V|H zBz`dX8{&W52fDGCPZJKO0ZAW`YV(bE!q-ttm~A9H@B$NGVt&mY4jOO4$)voDth%+^ zlB9FxgRp*!`q!!2{1MP^JX+pOu3@)OPW%M~{Rdk1s>Sm5vCiMWbKoxtd=>G>ib;EY zGD~;>-R4XP&!z`j_wR>)v8JV}TqVzmCXy>qbGPmT`1L=4ueo#|4Cx*muv=|9&KS-< zX#xPv_|~;?PZaiv(;91Y%KQcJ8^K-yzP7y5tl~1lx%-`8``ILu_}8jYMRQ6{TbkO! zNg_oNl0$_9B>GavB0OQygDDvVcc`x7S*;|A$N`2jYOa?Via8Zd*W#{qk2n&E?N+aIsivTjpZd-R>~ks%oha)f;W$u(5zId1F{ zpDxJRn)=oWk{NDdSsdUgZfb_NdeGX4p@}Du;k>=2jx*O7{&fmzme*}8*QR2nvUmK7 zKjXU-c2 zT!ZrG9RC2G)zRO{Wfie|X;m6czasz|GF0S@6UIUO>ztl&1myyZk+>=8$>Zr+RNT=! zn6feQ=5~@rBnH6wiRb+ObqaazL6wmlqT@XWPM^;{)pFsyqJg%7DFblo8@ClinB=$x zn5h5&6lCMq{{XF7jDlHk`?6z+2@DsHQ~b?iPvyv_J*x5o0|CG|=REb~lUo-@%4kR} z8WnV$0mo10!Tyz6;xuTZA9X^2NbCa>jD1Z6$icamCP`8#hV;trJxIp`+pSbF$XWwF zQ0xG(9myvr*8`0E3e{aax|`;>0i$d@JY|3#N4GzvRn{VOnLbigzzWUK@DCMf5Z#QW zNLff+0g}B=I5^MH){M8NMMR(HWEf&QuldDhNX-q1bO3-3Rk`=iy+S5*+qGEbK^$^( zOq8x|TuzT_MY^XfFcfo~bTy1sCU;MnTrLP4nwcbuNuh7L2n;~u1Po{E#aFvx(>kE? z*)Ua$cF$jPQxO>2hM79Xk-Un5w=g|<9E|;I04$N+HPzADi@;Jo{(5m;Wx$&960>g( zgDbPEuYcuS@wA1am^(bNkTxj(5!3){NRcwbYSL=X5GstY++$FoeSjSWRFx%*QVS|8 zM~*iim(sG5JGfVQ-2gv%SZ&zGV`tFpRpMoSuJ5k(shwGbYw9$^ncJ zFc;dW-9{xuLP&G~DF+AZQ)<@jZF=aEIzr94PhN4-v4zQ20yTCy`_0yxX$99p(7%=| zhqaZC02n9QrjAvX8Gm`Wx#dTCrFFLEIK1}RAUlHt(0UqdQA!I)uYu@4i|I&7Bwv== z8EpR1G-OGPAp~*hn#{OaEkb#@!wwyJ3@X*d@;;8K>xNXoYD+3TNbj@9lWjo>mc zi};bcF{B0*mgXs20D^hzOR*9ql6K0UPW7p&tO5ZvWSP`_!1TpovdtlI`4A|l?sYIKq^Ol826z7JaG8fjyjdbbPTy*eAEMs~R8BaYnAD;rbDs}bAs zH>Pu%$7W)BF&>p96T@+o`MU5k&08^b7##CStB+Lf$_WG9M97L11D<-+4`DPD<$z_! z1Xij>*V=Fn2YL57- zf*B%m4<3S=Rt|;#0I@T`q;4b*S$PzStsVr2dC3W%kdw;Q8K*`9HUMDbbxfM* zT2HB=;ZGTBo)6ZJp`+aF4UazFLQGc+=)>31ha$d_@c#hC9|m}rL`#>ItgpZVTNzZe zh~MnvJH~nuUne@1V#5VTB#}~E-`&|=!F^$IEv3{f9yy_GG7;(i6*7sW8(SY&Uh21( zp#K17Xct9K-Ja_f>POJ>M?RjlfqkTEmnDtV_VE%qiWDR_;(x-Z{6F};XW}m_L-9d| z&s8``?lHC-ucm(M`yRck(5~!856W46JBrNPnOj51@AP@?*t9#yUJ9P0{A2{l{)WDazta{(B;!4t4oB9w?N>t}mp~Fj(2kG(2AhL>6r}o} zEi{*!Mx`V&#_&vsY>>z?`HuB!IN`lvJ)tQooVB<(IQ3Ir#o`|b*?5B3!G8&c>M@A! z6nyFJ?!Mp3yn9~o_O0QKL1Mm*l}XH3G5yIthq3nSLTw@(8+S#>^?O^y{>{~*cZ_h7 zKi`b{)=saXTPA@r4YI zgdX7VYnpIzWnB^^hCi6GBObN2qIi>0(sd|rEbivDo(2yU%nh~UKF9iWHO!HQ#z7z6 z6yYW~QgM!lwJ6R}9_QKL48A&P{v=2=e-+6Ej;Pp3uLsEm(Z>M)0M9q}`=s>7abCp4 z=LBGi{M)mWq5Vz5Fov@pq(K#i96`S+6v)h~v5Y^V%<`KYcyAj^35i390C} z5%mm`Z{@i~Kbijk>sD3e(&w=rl+@MiH61c5-8Swkn@Lx6Q$*X9hqw97Vd@vbRD#^r zyrW6IQRT4R>t71~HV+z0b#r^5U0f4+EMGGsIpjL~af8r+JJ+uG{{Z4Ag}hhbMNJQ0 zis8#}ZKfO7BOSRFOK2{j&TcLL0OhLo4i82dATahA;-S~((Qd5` zzK7x`co=oMkII)F!vIM9iLK#J{{}VmvT*{*?q1SB&%DWFk|X7 z?OfKWp=w$!!&_>WvfA7!<|!0|S~h7NjLgfgw0*yH$2ETX%1vubYoxwu3>FhjT0A5mOn8dcmkswRn(JSk=1pT@eVxYnlQCu1s&!lyCcs|FcT z2=x?|O?>-%C5<8l)jsk77e7qW!Y?JZK6{8*o;Cr%{A+`gt<`WESr5SCcnu^w3@ z0pE;L#SfDRPch#g#OEZ_syzzaBnh|Y0D;dn3MIS+?gJ`@PNbsWGG1GN$E|7 z7;V#RF`_S`j8db=ASDs3F)fL=9^%suDKnzaCN09ud8Q>32G4-!OwBIV|VX@6g zq_B<&uS2?)4ywEs#sL}Y!6LKgh(|R3Yydv)SArCb@Nw6zbUK~gquhCR?dKI@3vY!t%p~y9Qa)9Bozc)k}$F*kOO3f3-5DMFBNmhq#7lYUA8=so@EwPF&w z2M#x~D+X5Q+++{yRCNp4uh9gojT)RPstk@ZkbBmllHM5CVlo}Y-z4N7I3I;$6Aiq! z>c{{fkGq~vem$y_5tA%y5oT5-XQ>@}Vxu!VIAItPGx7^`6?XVU#LH~OQ|~%4&JAbb zJiy7x11x^L158cWj!70dw|UOwoVM=c&{UQ%zNc`AONh(-PKBTCPA#HQ$EHtCl$)^x-csqev8R{4m5B2(+pzpc6~L>scQeMtgo@0Jr1jgL zpOLPne-nMT{T{_aLY=3T%G`_ zEH#*HQ0ez}&h~qbHl9H}{plgOaTaDJWMXo0k;iJR_NMFi2u371A&3MYuVGfz$!^BN zn`?`LwwFshOgDLVBb7d!)hnGXUge9AAhK@xM)g18RHV0qN`q{-QBQDN9$X}qQR>a> z(}77AuXp?mtAm5w5l}6Q7WP_2yQH`BHPI*JwYTM;&>FL;!}gsuX1);Vc8Gs)XEpHwPMe8dw#?1lF2lOAv>SIQ)&3A$@$K?fjanPEj zaUdjz54l?fhox)Hq1;?)D%dKo||k8O{Yo z84%|XBZOXkffe-(ETaWTG z4r6h_4N%K=CbrveCf%oz*q>S?Rn=^g=&%w(cFVVnudmjqZ8rD5Nx)8_y+s2`=+j8v zds72QrGU=QTA^_dlD=am!Vd%1w5*|dE}~T+J9IT)P;L5&4n(RxQ;x^hq!Y3!+1oA4 z5i6KWeZ$tN>e@x#owj1jGz@<7oPqW9tun=-X(C(*{$Hsye`vyVnMLHl$_~bdA9!{@ zttA-sA2aB4X*pqs0~j>ir{CS*r7Mu+Hq}KO0tZ^I(qyu)KyjMQyBeo*b1I#~f(Y+k zv+(QVMaGaJ(R^bxml}3{m-(T6$u)d}E9qA{`n z#C^li{V6qa(>`DEkHh=_01ubcG_v=4XgOny$q4@dXbz+Oq4?JyZ>fIg?DwF}0O`*w z^fmQXqhR*?o-j%dp!FZ)UN_?(hj3iG>Ruj1hT!F-v*?fRpWQy)54A+1?{rg*-OoS& z07=uOOS>5imgl1>aunPs!^*G_pV?}Xwrd~8Ij;s#ZA(2S>+MXdy0I>yw^(&{5Q~jlTrXU;65-# zWojC1){oud&&tcvu#_FHG|c5H*cs>2tVJut>dJ6Oe@cPSumpANX}g#bu6h1d8pmRf zNbonrt!Kh_n=Rz?Z6zShXCogjPjUU$_aCi$E~n$$OWzJdsaUZMa=*Jq>ZhU4(AUj+ z7L`7&ej?msw@;c`al(&5?rYG?Bv8j|0K`$Q)n33?Z3iZ<$-cHNPjvH6WOm78l23nn zuCncY*{H!d#%NqK9E=}I=)R_MNp4MVqFZX0&Lc$=N(f+oik*M(q6W0z92$goAoCPa zERm7xzjp`Q72NnoL0BPOO6fm%NA8r4gZsw1_`YA4s62etq-d!xc#mk(x$>3#IyRN4 zOKT;y{i~w#x!n$kIYBEHS}MOJUQV_PR*`$n+5wo7+GRFBq!_K zeQU%YOtRCbkXuGGoMpK+$ySV@?;VX|)RoWM+FpCoQk-l%x_7P!%=m3s=>bR`I>GZw2tSTUR}ob5hRk^ zq{|J=+n>q+EMo)$alrKJn(d{EjNOtloE%I$NRmrtn7o@*C}`t-g_K}mW3Fnob&orqmxc%RhfsAq2AAzj9=@v}oj_hQS)cb!bdl(WTS=hJtRd^?$ z&*xdwM>||IFbqe^06E8?KS7GZcD{y*Sgkq+Up1Ayq0bze$!P;fLXsmGIBq!|g=<^_ z6Up32DnbH&_aFUl5nQfqA za@3S6S{c}g@1<_+x4wmS#B+hG%1xM zsTusL&DpWkp=_Y@SOL#m{b>ztV+uoJw&k{qsabF%ISU`T^)-!j(<5%308Y8+57M_9 z$H-Z{&)vy@6=WG7PsXvXtt4Uv&?y>^m5Jb!*i10mvar-bA(Zj zpQx+}TuW-ljm&u}KJ8e)V|Sp$`;VIpg-Va^^#1?~$ubBdP-HB`{nJW7ij5=0O3Rne z0KZIAl`T;fvh3vJ%L9W>xCQdKjNQGBu> z3xGk!4LB>yB8DLpj(ut3+@m;U0nZ_idQDsj?b<|j*f24SD9Ndv;hdL|m@@I6^-?S3 zgnscx2669JHW|Np8kac97^bYY2cs+9O!8%5Kv%EQvsnX77=jnS)~rh`zv}Qn?f|5> zjpw@%!b8Zz?t#D_v^^?@=70czVF_d$ahl7TVIyoMzs7({?!=cRCX?iG z_;FOF^KDLK!31!_rA#B;kr-kL0%bB8%-PJR@ zsoU#Z)ZSw`nU#X)CyuqXb$JVwL{b3md)8i|s1}tKPs%!gDZN5I>eOJAeVfZ?B0i%7 zp{h)=w4BIuS7&%+v@$>dZ0FMgvgDOYjAtXJYclmFl66>GB$Sh$wN%JsV0!ig6h#F0 zBc`ck{@inQV=r{f#@eQVhqS{TU>X%KjD`ZvEsiG zSonLx)-7|X-9E_SQ@|bBkMO7*l56S6{uSx}01NyrV=OXiXHrxzsQ8M{bfO}EziZN4 zQPATqzk0imhCd6me}onsut z@wy(K;PyR#m0F7GTosYw_L`dBT*asAFV;cf+0z@Q$%{_PH(LzYO*|RlYI(piX1CfqKHgpPVns{l-bG9~OAK z{t&;0c6z^vVvV)Q?U54D92ssl0{I`^Qb{N1JJOL>*5)p=;vE{pUANG$wFqL=E*E@C zPCkK;Ku=(L{#ApjSTQcps98U|*}j$Ywz;fc>pIQF{rt^6%+eVocK#xNkn|PX_%Gs= zmWvjX;$rtUd@Of-w2+TR?#u7gd)97I*uG;^#Qqqw*P#92`#to0B;k4K(T8#R*O6)( zW~br(NW*ro3$H5q%DDAY+*i_Y>k>m+9TAJ*aY!@s1c))+HELXDG%587r-x(jp&P7=9ABC^9H)#>g z&4}qTj#tn(q4()okZKC>eU|tajPS4gNm0#buI6NydSbGDqR59+$wAarO+QbYQoUPP z6c%IEjsW#JtCsOzL3V=Fw8;MebdGafovo#{gd5^SHxi7?j^FHqP85{g!cNGN(#{Px zOiMdq!jGOt;K<$2{{UL6NqeasN(d*46AWllH;n*0a$Dvj?;MlK&tclEZzBb;Pkw3H z+~hAc)6CY0izcqe$0Hxcy3Y&fe`uTS*D8F4JTFb;e@e>Gv`IA!l?T6n1PgYBI(K6Ptuj%>@l5cNh5ypcGGxIU@0=O&x0E=^3 zYJp;~No~r82YFTmjN?4?t_Q?^A-eH)zGQYW+Q*+RAb#rq0EzEeXG(bpktJ|XOrB~b zUQPb&uVj))^c(LS{{U}D&mx#xZ_0(T7ykgST>RGWGwuu+o_MSn?C;={CP3@g0CQbt zl@a?WEV*-8IW(j>+Hz>W8jP` z5Ad#-P^n#WT$L!(Z61R~a@Kw!YikC#npV8MB$Y)Be>46R`#8KusF_~!b88!^3ZMax z!lmJ*7Wti#Ufn&B(N8)-X!F0_QJ%Gkn$6s^JTRChBawwU1F$33u0f*2wqhHZ9(K-m z9zQHqnBcV2W6V&M3~+WSVo$y@X+_h5Yj!DfOI?hZtuC8axI=R?s;1>Z_gRm8pGtm^ zt6;OseG)+Ka%5%%x!@D)=}=til3Qz6FD!56tRw)32angSXTyIa@x1e*%*23^GjM~c z$t08XuD@qF#?NPCok>O9+}CwDq43S*(MIzCjGrMR2Ohnv%q6%p=Hf`s#c}eNX5-wR zzm0Xez3H36H;+7#Lx`JVt92*7E6WX{t%4K6fXn(Mbe%7OEuN z2p=i|)SjP(Vq6pwl!7*JxdfBOe!i7`@7*CnCfgVzY-gSaPkxxJX(fCHKmZ+2t!-9H z+5$}w%Cj;oOyK0;WPdNxv*o*Jjs`rj)rWerr9fR$C9!n#$fx0%oJy*YRjJFM}8gSEdxoB9&wSL0Y0D;%};P7iG#BIg?9{)0U0Ct zimyMExLNSW2h<#&@+#7?4cwz~8^WNEFEV0AX*nY~Kg;u`#VmtthE?*w=O>d+o@7Ku zP+bN9X5^ATr&^_Pcx8Yz36##&a52F-Ja^`)E0Uea^%!QBBQ>OA-ZTn6Tmg}ge>~Lz z1XEkWALeM7I*@n=9R9VZ9q9Wi`O$fVN%slhjCb{{n}sX72;zN?d1O5fLH?CjvKJ`J z>Cjxnti#FMw_rHlPp`FSUfMLDaK?@IcH|C6rAvJA!s=When1|ab5z!K61*}=llP00 zlf^aMonDBdC)sN8h`|m+65gZ#0M|oZya$-FNXZ~%W}SF#QJBc!A<4lR+s32a(+yb%VsA4hKw`zRaSX_&t$ULzaIE*)-<;4CL}t!KXjAGs}}m5<(!5v`2+Y*O1B-(oi)U7J-CP;yz%tS4JIv& z*N#_m&cR6?`_p2#V+oRF8+rhG)%&S!joA<|kr$P3UuuEpNSLgnaK=J|OK~NoiZUvJ zxwh_JI#qYOWCSzk{gF~nEUZtL5fSyOQmaJ!GP$77-6PeMx;J%M^tcg3sv1>XqW=JN))bng zbKA)qvns}NnCtYci7uL1+|0zNI3)EoUg4O?L}MeR8-lZXmKx$z=31~nWIsTzgmhL zh;89!XCg-LS$dwX_Yoz!a*N61siDatY}r!sawW__s`MWI)mq-{rQm4^Amf4Bkfibj za-=3Yo&l=TF3CntNb6kkZu%QWD`R3?uO{fMfIAi7b;lK#BIK8DzJT+JXPLdhQI^Ft z%*(+cbJQBN@6e|k4>KS_1`6V<$VLu25y!PL*;hFP5_!!}q-k28h&Ah74@9w+`%t@( zMFq4&=5zf3>Pg@VmhMzlm5KB{H(A&9t4|MTmQ!9|UQ4zcXohz;sq_GHN#Frrc6=fD zHD&O-!xBuU+W!E>H*x;}rCzu@7r&DqbwGNar1E_$KjDwUojc&SgBMYpL4D$D_Kpk9 zPDCafP{a+2N8OE2Q<0P2y$06)Ys+@Iv_5d2H)-sZ&(53LKRO0I18pP@haNbEfaBIh9zq$C6uQ!eSPJYMX zZ98-6_EVf8RqHf^(~rdQ(x{=bYF}x%xcIm66}+2x6aFQdc0bf9`@2;2k-HAxc-PF| z5PWf|_~*rw>etLsN68EUvam)8!Vl_uoYwEfZ;2N^HP^&eZt-aLtVOIHH}*0x{_}o= zit`3`W*qWOWjchmHdQW3z#MiJRgN3qj8vX%q>!T|9AFBLLQI5^LFx6bNxcVcE_EId z@z$&1Yp*UGTv$2G)^az>-lb3Qx6^~(y{5xc(R@{-3(Xo|G&c_e@gyzWFzt`mwS3!# zk%FS-iNGGFy^rC1YouzDTgv#7_6?=G249$eBU@6NdNHGN^G`4QsoPsgb#fw!cQH7w>rJwYPPH+v3uESg zQ;+3UPCU$+O3KEBBHK#S0xK#-8s(gy%$o799Qeic{Y2W@xmzfhgkSHU?;5w`pBXj# zK9#4;O}ZRN>VMXsPoVv4gSCn7Cs^01IIOGI0V5&Y-up2woL1*Sq1uyZ^0+yZ`3l;O zFp3qr5u8zL3dah{3=gTXZM8mNjLTUo;*Rp5I#TU?jk$j!rowV!X3X)O?Z@Trt7mXZ&ln zu+_ZfRP%Q*T@GV zZ5@^{yLjpfK%)h?5n$_D+A21jPa3G&djPvbS z`i`vziX^iPZe}167+w?(gRXx9YoEE)_22kM!MSv>ws$0XSrWE+^&d{v%}Whu%#CGL z$s1R)X<9~^b7wP#y`4fy<&wufrH|LWR9mYUG`2`>BaCk)RJP(lJmtU7O61_zZS7(y zVQRA61|&^4&PUsZDxhd5esEz<|8_U{_pRW4pPZA<^qM7W3H64YDZQfVpm` z&<-n&jza^LV}qV@D^YKn;ScV}%7cni6mu@ih}>Wegm6gbBl&Yma_4s(Vxo#aYLvvW zkR1m(9Y?JzI>~CKzyqfo06l59DSc^DA9fI6}6Gg%_!+z8+< zZQ@rh#GW}LC-N0Rb<{3GyGlVu8$d!%2|47P^y4S+tcQ?EAS_w2(GPMe+)iHKZOlOL zIVHH=z`#D8Y6%h8M=&5dw&HqlPfDnhBPv#7J{3a(p|*~IX0vW3l@XLM9ARS50lj#w zYmP3Niz=oD+@20``5v{Ee7ljJIKXV}=Z(X;AI`N-sj}y1-+?QV%X2hoaC>yXiIX^PVr3& zWDZ>8Ja^4gxrGSaCRQKB4^V1k1t^+%enXIPoQ~(xrP%qAbk9wyxnuM2ZjUoU6z!=R!cO8zF8$w9*H90649 z=aC`vq_`zV?#iA{2q4lW`r7N#EvgA2k}{}f0F?xF`h!YW*etJfW!+^Nixtacu|LF5 zH5gYGm@WvwU_EO^tddAo?j;-?;-Qu+D~A!nrYxPIhd<<0jS(`(b07M!0OYk$mf{F^ zq+pffpF>x!G>uN%E~^vUoDIs|t3Kc&0;?HPdhQ&WP1%L6#3Dx^f(}OEw~9!DJb{Yy zoK%q%TW}-;BOqhArbI*xtO4b=`qUClEW9#+V^P$%dZjGUl2I3N#!u3;o&|kcOErv0 zk|sfK;XUgyV_4;u938`qp4g$MYm_3}Eb3(3RC;x%#M9dr*x)H2G9H9`)NVzn2xUJ% zJXB8Lx5(K&YF+vWeAmb$WhjW)$I3BP0Y}^ZkOBddkx|O=85n`I6Vs@uV-h(bV`91M z+JjN|M$dngh~)L%p0yi9%Bh7aq;);TOkjrHw{9+WASb4J(R8*AZdmi)LL;`^N#NtX zM{tu`A0^dRPP><_Rt4aj01)}(6zL}O{{VRTEIFmj9S6%dn4v@Dch4BAZ26cZeCNGG zB+SeLuOD8tDP)a-Vlq04m#e!pQA#&O`LD{`{g|L_g8=l!Wciu-m>il}1D5$;jCb!% zW{DIW9G;+5%2z5eaaxPGq21fPMtHm0mV(0+I*}G1I0oSFICD(sXGxi--o98o&+5oagrnx%mc93JEv^io0#4 zX__yec^kA!A`0@)Gcb-N=xzW z=`)YuTz>-N=t%Yz%=oj#HeMRgrLxc@l`nMQqbJqv&J{VT{m(JH>}#QPfN zsa`4Q2SYQlZ#5rsoaUh{7y>^o^+G$ma=AGeE9+C1E(65aBdVU&f|7dxvM>OEz><3R zs7Wo?rgKg&pWzwrin*lex7Ac&KeKhyE3ZQjT)c4~NgO*~&rxhI4e{cEzbmF%vf zxQUOM69-fDsxu8X9R&&=D< zZ2E<)0Qu4Y-kIxFhPz@Mk1%7mJPPBkC3&tIM>%41Q1`BRS9h}5)0I8XUeUZwpxH!O zu29O|So4ADRJ>W^h_38@!=_Ect{zT@9-h_Z)KT@Ba@h$}N!-zb(XORGI{tktV@}gn z&g<<`y5J50HOq!8_emd0m+cd6+r5bNCbEQ*cYBUX=V$%1W{u2&K&ancv?Kj^Cl$q$ zno7TJ`v)rObQfBrZ9fmd^sD-Iv2O~oX)suHu0y>QF{;zJ+)?`p6M+i1A&>C`TDJFW zn?l?IayT7pj9b&5SnV9+99Er{q@}|y4m&k_FsaINO43JS`l6|dPzZ2(gM&`gt|Y#( z^8A)80dhubnKx}H^4XPgbJwL@8l;H|#-so~T&8ksO85Lwy> zTS!Fh{8GO;J^ujDHIb-lQtDV+*Ya&Z%10XQ{Dobz(UK%mLAaA6IKT_|9%{+9wU1Yo zWVVPhuIT*ISPbL1HGHyRbry5bMJ?2+7L8=Eukl>Y!};SM&ZD14He0;O%(4UXb{~aq zEXY{0vZ!O%Cm7E?PxGpmQlzaUvM7*)fTW+NT8UFuzf!rMLoKgi3%ASM*xCT-53NP^ zr+|Zi+4*+kzA86~#!BTu&N4dwHD3lcRV0Iq_3Kz&^)%R>uLGzY`N}@&8Ry!eSzW*c z0s#5We(^M0ENvloBYK~_y)oXSxpE0G09PCwXPOBhXIZ5rAVOQ5_0K#ChIU^hwS{0A$otFD@2JTxqEpss2rpJ z0IbFa8$Ce$s+^0x+E7V}BVO#;XgSn$ASlk&EC=NIH>mGb1rp+y|k@ zf8|yV%YU7j8A@S+=N_MpK_%%PNoI^Q=Nm^s{?VXmJ8DpNkQWh@aJkwTa#ub5>5U`{ z2q8g`kOp}R_UEkHWshJ(_m`aYc6$?DUv6Mte_0AIpf~7riG{QJW6BVC56FuZ1Ieqhv?(-sI_Hld0@JY zj?0AwQHLO4AH;Ggw_q~&Z&F!CMo9;c#-WnwHWE-HCjgJ)rcE@c_x)*+#HIqx z80Y2%y=pG+U=!_9o~m#TO9R@j$#Gx;MH~_d00fiA%t!L9neQFrHtK>roNhgFQ5%wu z7E&034o9G3V(PT zI17*KT{fM*>g6sikPrvXPe6N`agD{X$m$j;X{*m}9OVxIy63GjAhI?mArt^W>P>F= z!$dF{1?JRN6aZ|-_D;EsxkpYs~rF*g2nR69jtt^CO@H?8X_Jh9> zl3TFPTIgF6M$pR)S4tNmMHpdKZKKn)@AR;)({)(fVx`}p(@9vR_BqK`WGV>bJZ7YM zlHT1SjzV3>%-yS0TP?%}{{UB*!y59j?u7J#~rLQ$<^ z+mAdNj^P?KS*43&6M(0wH0duE6;>cThobf#^-6oW=D6JBk3-UveTo|_uRNgO1w7yk zQ&a_D+x}tePo7Y_Lv1^F7#(V}x*~3HK2uSx?mN4Vl$1VcY#jWfp*2!jGteB9l5t5i z#^HBx8@4?v1OTSflY`XKY`EQ$ETuy(0nbzGNYeb6&rW`nfy89xK=&rS`{8fF22*L{ zFNk(Fa%k5Uo8YmMSMw4{7zn4G7Z`_X$arr;af)25sK-OhejNB9c=O^)_&WaX_eq|6 z878-%?8Sme0X-HI3r`00nrH!5%1+K=CDjhUEtMN*e)74^r9{BPht1Nf%K1eyt6EjggGxq+79?cz8MXzUJNCkhAz<$Y`C{{R>GtHl2R z8GL7?cymM2QRj_5&!_43s#ZI6=ucC%0OXQ;eJa{W(DQu{K-K(9;(JdI=o);whNE>S zmj${El6#ZrpmIsz0bg5q55qnT_%Whf>9+nf(4z6&yG8b=b#C_&z&e;>3ydf{6P%uF zjk~_^=j`?23!MkUmyqgyG`)*vsja9Vxb=b$?t$F(_2+@}#rCmxeSanO#l(#BzU#Tt-p`{80t&FK5Vkux9SMbw{Ke5vGM1QXTE|fyFUZHleh10 zEp^b|Qul3}a(_(M#5$C=5&R+3HJ=Y^Wwn!cG&-G=58fhxg%}_1oSvSQi{$Duy{y){ zn}v}Tq(V+q^dhcP^90j&XVV`Wel-n#X*?z2JEAn@IJmk~k3Z@D&!?|i`S(@Sq0uy! zxt9$gBu1Uxzt1L#vNq->tILm5SN{T zstn}%Ri|R38|qnWsO_L>r(md~B-b%}tUcWM+!io!sykLrv97kEb+#;|0Q{dOQ^Ya7>$1O8s_|6sinrF_DgIC zAv-}F?mf+RULe1Z!+sS@D|QCrL5;xk?$zZ|$kIu?1)%>sG}PC=H%Hl~6$X_Z%;ngO4wLQ=zVagScrcHUi% zxNnpkmL&6B&86s))g2s2jmRT`T5#S7$X%q4xz20ZYR3|HI-xf^l!C-(AoLW8D+BWU z!1IyXup+!k2H?af>J+&C)Mvf>MX==eHFW8+R>zn2^B8-Ff4u=S_LB z7m~36q+mC2bJmEiQ_C?IbMl{UcG&) zgjBd`0NWwlNY2$ibegDbr;vvOZro(C=l=lJ#b`4Oqk;D_dj0RMSB_KX1}Y04K5hZ4 zPU1?(FFXKVO7~X*fpSUYV>#oBlXPis<+MW^0f`r#-i%IbN^5xLntQhqF^lFP^dOuZ zBr?%+j{~@buJ;)VvVi{^3hPf9AxvsBB)xJ&X|#rg*hlr zMtgo#Twc8BtlmK)F_NrF$o8!Eyq4ik@v;%}t`FTEhv!;Yi@u`Y$s9v$ncE=w93Rh) z^@}CUrd8W1+m57iKgg|P84?tkM3JE9o;n(dV6!B7GU2hftDGO8scPd+#WN<`i8cZO zTmz4lPB3aagjJ7!m_oR|o~vbvWnVm?-Ts0>#hkQ6n{=E@sOb`hf%%N{;odW!1m z7tsFzvsFtGA#lt6?w_qB?yMs^_j5poB?37H@axV%Bz_pGYvxKCB?Z+7C(u-v8eXxd zFn70Sw{eibXK%A(r{h`BO$eS?lNw(dXV;m9us;0nX!e<2aH6hcESeD4^>;+}beT_9mnWlSEjIwRq zxyqh@8nYgyxs=TcNXf$FW1s6)1WE=OgCDv(pQxrt3=G?fmQlc3Z)=mvq+7eXnpsTO zl8m0raap$#G?D=y3P%SWX$gCbo0sFNgGlICVRj-cWU;B-u2s;l z_{pbuBSV8k@Q$f%t4DJLgtHZtS{BIL8z=w_6Y}7N&ISf6$i*6d`|J48V`pozR`6d-z1Ixs@gpBB#qb))~fud zxXVip@a~D?Ux(h0w5%^c&e}k?(5AgnVyw^Cw}|BR|4}ryr^2 zzI4>J8;kqbp5=?P9ORtPo8CctY1D3|s9b6nuXA%Ll1DitoZ_?PZJ1p0X$+to1)|WQfaM3s1l}88s54Cs7$=-tOklTiAXDj$$JVWQm&6}ynXK%XhzAVA_|N!PF5ReZ zz~nrA;49I*7p6gFr%A2euw9^(+%b<AYL3rLCNLMW+e| z7!T!I(Ojv`^fI2V$2a0lVog_Bl5$SW?Lp`VO3Sy1JiPJ;CZS?j z8pr^XfnAq}?Mzx@+&2XARUPgO`orP(jr8l?KkS#fm9#QMPSGUFxX*4)dPF+Tl(Fu8 zR?pCW{Z4;cD6gZhN-<}f8M_k0t7&+`>Nbosj%HpzTGF@IEWG82>K23!qs>qc|iYTViTNBL6vTJ%%Ld=?_l7oS@CS0DqPHQsfUDGFw z#&s)9WbJ=7KO%F;7%A#Ze ze*klX%@kKhA|!iW>Bbgh)GY8jEX$4u*R5vW>zY_aRn;s}m2=I)=RLU3wG>pwC{5Vs z^-mC5%8ma36FWoZF!KUVqduJvPAdX^M$So0ZKzs>DmfFc_|ZjlMw+pcn;CDYX>iD@ z+O3)~$t=^aT>W_;<5d${(qz<1OQ_pMgXUk}E)TKi{Njo#y_yF%dm2{S&XF-0)Gd*B zVac5a?{Smc`qf!)bSDm`_S-pS4kQ^PKUyfG*`j%wTI*G`jlx>qS$SPKnNRhqFR5uk z46^E0=2Q1aoTLxdiYZQ%R>D;qDz>d1)3kqWv{il=GN{MvPX5xEwUkVm6tdj-cK-lT^Dm~hv$@C3wm=onPQ3x5 ziibulIhmb%HlJY&M`x*7$^&E(G8X)BYnHpbOO_|?QEV;ucY%TV(M4rCF%qpIV4l_s zTs6cUc+843`qXQvK_qP&O9A)u2Oj-sqO$gAajM@zuQX8*=H?Q>_i@sj_M2I4NHa!` zf7>79MHODgB>QGrw0kzTk(%n-Eu(_+0l(?ZL;a?oa7hj^kD1r}XriOpMVIZQQF)_A z4IRWp5y1`)DVyPfe>mJm?f&@x02(Ny=|wR1(j2ozaKY!E6dCzYxc>keuXQR&OMRv- ztH1@vG*L_0p(^jOQfrvid2o5|MNw%%lrWw!NzONpD58|9MQm*vt;cW7B`cf#`=+anOC2adhRsG^F_q!O?~t7!WRz#1-rrg#&< zi8|Zb>)IuYnYEcrXxeP%G9|aTQbQP9b0|IdAmqz+9b!Fd#PPYs|BQe-PrN; z73_W}@#lj+75E-chkpw%V35c$sp}#|6JI_saM{RTr_g%QMJjY+<*1cbqs+HHcGPtr zwa)U%avDN&o#6ifTCZ_3HJnV0o5JAyiDsTyq}5yX+?bCAP|Hz)k`Tzc*w<3$xNl1851U)9AA80jo$ zjPSywj^Y&{8KV3gQAICigX>?$Jl#{w&*UaBZZIO1Y@T!5p-k?`2;%$7&TTii&82<^_BQdE;g zMzop8GP@j+%}H+y%P@^_3mkHAD59s>#JNq_?`&YV(6mN>Ha3{9P91W1>0CAR^4;D% z(h^vloSe}`bYdwb6p@Vzj#q50wE9(>DW2Ya*vLE)MHSENVs7Q3w>!l(h-7sRqx-`( zoHZHzp$nbhcQjE-RM8QuCRLJWk@Jpf21cTaoZfUz{qN&nL rVO+Ii0g~xKBN^^M{&nb)!*2$e93pr!Km-W|6jVwUgE6UD$D#k(cq*G* literal 0 HcmV?d00001 diff --git a/tests/data/bed/k1se_idle_moved.jpg b/tests/data/bed/k1se_idle_moved.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d6457841e1b22cd0dd986b7748baea4252bcdd3 GIT binary patch literal 56467 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%0De_|3k+w0S@J+FV+y$Q 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 an%2`SmE{d1BK=qjD6UGB)s1CQqyO1^D_pGr literal 0 HcmV?d00001 diff --git a/tests/data/bed/k1se_idle_ref.jpg b/tests/data/bed/k1se_idle_ref.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c56c44c7417cc83a5ac9403c6eaae22244c77db GIT binary patch literal 54297 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 K)t;PmNB`N|*h!WE literal 0 HcmV?d00001 diff --git a/tests/data/bed/k1se_part_patch.jpg b/tests/data/bed/k1se_part_patch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a86c84e793f2390c0e79368f0d73c8f76c854428 GIT binary patch literal 6039 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 literal 0 HcmV?d00001 diff --git a/tests/test_bed_pose.py b/tests/test_bed_pose.py new file mode 100644 index 00000000..cb300fdc --- /dev/null +++ b/tests/test_bed_pose.py @@ -0,0 +1,287 @@ +"""The K1 SE bed check when the camera is not where the reference was taken (2026-11-13 false "plate missing"). + +The K1 SE camera rides with the toolhead, so the same empty plate is seen from another place after every job: the +whole picture (background included) shifts and zooms by ~100 px. Against a reference from elsewhere that was +"70 % of the bed surface changed" and a plate-missing FAIL that refused the start. The frames in tests/data/bed +are real (scaled to 640 px): `k1se_idle_ref` is the reference taken at the idle Z 124.8, `k1se_idle_moved` the +same empty plate 10 minutes earlier from ~100 px away, `k1se_idle_far` from a view that cannot be aligned, +`k1se_old_ref` the older Z 125.0 reference (another day, another place). A plate taken off is the idle frame with +the bed surface replaced (no real K1 frame of a bare bed exists from the idle view); parts are cut from a real frame. +""" + +from __future__ import annotations + +import dataclasses +from pathlib import Path +from typing import Any + +import pytest +from printer_ops import bed as pbed +from printer_ops import preflight +from test_bed_state import K1_ROI, U1_OCCUPIED, FakeCamera, device, frame, u1_ref + +np = pytest.importorskip("numpy") +cv2 = pytest.importorskip("cv2") +import bed_pose as P # noqa: E402 (needs numpy + OpenCV) +import bed_state as B # noqa: E402 + +DATA = Path(__file__).parent / "data" / "bed" +IDLE_Z = 124.8 + + +@pytest.fixture(autouse=True) +def xdg(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> Path: + for var in ("XDG_CONFIG_HOME", "XDG_STATE_HOME", "XDG_DATA_HOME", "XDG_CACHE_HOME"): + monkeypatch.setenv(var, str(tmp_path / var.lower())) + return tmp_path + + +def ref_of(name: str, roi: tuple[tuple[float, float], ...] = K1_ROI, z: float = IDLE_Z) -> B.Reference: + img = frame(name) + m = B.polygon_mask(roi, img.shape[:2]) + return B.Reference("plate", z, 0.0, "k1se.watch.bed.roi", img, m, m, DATA / name) + + +def classify(img: Any, ref: B.Reference) -> B.Verdict: + return B.classify(img, [ref], ref.z, "k1se") + + +def part_patch() -> Any: + """A 3D-printed figure lying on the K1's plate (2026-11-11), cut from a real frame.""" + return cv2.resize(cv2.imread(str(DATA / "k1se_part_patch.jpg")), (112, 71), interpolation=cv2.INTER_AREA) + + +def with_part(img: Any, x: int, y: int) -> Any: + out = img.copy() + patch = part_patch() + out[y:y + patch.shape[0], x:x + patch.shape[1]] = patch + return out + + +def moved_by(img: Any, dx: float, dy: float, zoom: float) -> Any: + """`img` as a camera that moved sees it: shifted and zoomed about the frame centre.""" + h, w = img.shape[:2] + m = np.array([[zoom, 0, dx + (1 - zoom) * w / 2], [0, zoom, dy + (1 - zoom) * h / 2]], np.float32) + return cv2.warpAffine(img, m, (w, h), flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_REPLICATE) + + +# ---- the 2026-11-13 failure ------------------------------------------------------------------------------- + +@pytest.mark.parametrize("name", ["k1se_idle_moved.jpg", "k1se_idle_ref.jpg"]) +def test_empty_plate_against_an_old_reference_from_another_view_is_never_plate_missing(name: str) -> None: + """Both preflight frames showed the plate on and empty; judged against the only reference (Z 125.0, taken + from another place) the pixels read ~70 % changed, which used to be `plate missing` and FAIL.""" + v = classify(frame(name), ref_of("k1se_old_ref.jpg", z=125.0)) + assert v.metrics["surface_vs_plate"] > 0.6 # the pixel evidence the old verdict stood on is still there ... + assert (v.bed, v.plate) == ("unknown", "unknown"), v.reason # ... but it is no verdict + assert "the camera is not where it was when the reference was taken" in v.reason + assert "3d printer bed reference k1se --capture" in v.reason # how to fix it + + +def test_the_preflight_line_for_that_verdict_is_a_warn_with_the_way_out_not_a_fail() -> None: + v = classify(frame("k1se_idle_moved.jpg"), ref_of("k1se_old_ref.jpg", z=125.0)) + check = preflight.check_bed_verdict({"printer": "k1se", "bed": v.bed, "plate": v.plate, "reason": v.reason, + "source": "camera now", "age_s": 0.0}) + assert check.status == preflight.WARN + assert "bed reference k1se --capture" in check.detail and '--assume-empty "why"' in check.detail + + +def test_empty_plate_seen_from_a_camera_that_moved_passes_against_a_reference_from_the_idle_view() -> None: + """20:37 frame, ~100 px from where the 20:38 reference was taken: aligned to it, clear with the plate.""" + v = classify(frame("k1se_idle_moved.jpg"), ref_of("k1se_idle_ref.jpg")) + assert (v.bed, v.plate) == ("clear", "present"), v.reason + assert v.metrics["pose_shift_px"] > 50 and "the frame was aligned to it" in v.reason + + +def test_empty_plate_at_the_idle_view_passes() -> None: + v = classify(frame("k1se_idle_ref.jpg"), ref_of("k1se_idle_ref.jpg")) + assert (v.bed, v.plate) == ("clear", "present"), v.reason + assert v.metrics["pose_ncc"] > 0.99 and "pose_shift_px" not in v.metrics + + +def test_a_view_that_cannot_be_aligned_is_unknown_never_a_finding() -> None: + """The 20:30 frame sees the plate from nearer and lower: the scene aligns, the bed does not.""" + v = classify(frame("k1se_idle_far.jpg"), ref_of("k1se_idle_ref.jpg")) + assert (v.bed, v.plate) == ("unknown", "unknown"), v.reason + assert "does not line up" in v.reason and "bed reference k1se --capture" in v.reason + assert "watch.bed.roi is drawn on the frame" in v.reason # the polygon has to follow the camera, too + + +# ---- what must still FAIL ---------------------------------------------------------------------------------- + +def plate_off(img: Any, ref: B.Reference) -> Any: + """The idle frame with the plate surface replaced by a bright bare-metal-like surface.""" + out = img.copy() + noise = np.random.default_rng(7).integers(-25, 25, size=out.shape) + bare = np.clip(np.array([185, 180, 175]) + noise, 0, 255).astype(np.uint8) + out[ref.surface] = bare[ref.surface] + return out + + +def test_a_plate_that_was_taken_off_is_missing_from_the_idle_view() -> None: + ref = ref_of("k1se_idle_ref.jpg") + v = classify(plate_off(ref.image, ref), ref) + assert v.plate == "missing", v.reason + assert "plate off, or the bed covered" in v.reason + assert "if the plate IS on, retake the reference" in v.reason # the fix, in case the reference is the wrong one + + +@pytest.mark.parametrize(("dx", "dy", "zoom"), [(-40.0, 25.0, 0.93), (35.0, -20.0, 1.06)]) +def test_a_plate_that_was_taken_off_is_still_missing_when_the_camera_moved(dx: float, dy: float, zoom: float) -> None: + ref = ref_of("k1se_idle_ref.jpg") + v = classify(moved_by(plate_off(ref.image, ref), dx, dy, zoom), ref) + assert v.plate == "missing", v.reason + assert v.metrics["pose_shift_px"] > 10 and "aligned" in v.reason + + +def test_a_part_on_the_plate_is_occupied_from_the_idle_view() -> None: + ref = ref_of("k1se_idle_ref.jpg") + v = classify(with_part(ref.image, 230, 170), ref) + assert v.bed == "occupied" and v.plate == "present", v.reason + + +def test_a_part_on_the_plate_is_occupied_when_the_camera_moved_and_the_evidence_marks_it_on_the_frame() -> None: + """The part is pasted on the moved frame at x 100..212, y 175..246: the red evidence is drawn there.""" + ref = ref_of("k1se_idle_ref.jpg") + img = with_part(frame("k1se_idle_moved.jpg"), 100, 175) + v = classify(img, ref) + assert v.bed == "occupied" and v.plate == "present", v.reason + assert v.changed is not None and v.roi is not None and v.changed.shape == img.shape[:2] + ys, xs = np.nonzero(v.changed) + assert 100 <= xs.mean() <= 212 and 175 <= ys.mean() <= 246, (xs.mean(), ys.mean()) + assert v.roi.shape == img.shape[:2] and v.roi.any() + + +def test_a_part_seen_from_a_view_that_cannot_be_aligned_is_not_a_finding_either() -> None: + v = classify(with_part(frame("k1se_idle_far.jpg"), 100, 150), ref_of("k1se_idle_ref.jpg")) + assert v.bed == "unknown" and "bed reference k1se --capture" in v.reason + + +def test_a_small_camera_move_is_aligned_too_not_judged_as_the_same_view() -> None: + """A 15 px shift still correlates (0.4) and used to count as the same view: edges then read as changes.""" + ref = ref_of("k1se_idle_ref.jpg") + pose = P.locate(ref.image, moved_by(ref.image, 15.0, 8.0, 1.0), ref.volume) + assert pose.state == P.MOVED and 12 < pose.shift_px < 25 + v = classify(moved_by(plate_off(ref.image, ref), 15.0, 8.0, 1.0), ref) + assert v.plate == "missing" and v.metrics["pose_shift_px"] > 12, v.reason + + +def test_a_camera_that_moved_so_that_part_of_the_bed_is_out_of_frame_is_unknown_never_clear() -> None: + """A part in the 35 % of the bed region the moved frame no longer covers must not pass as a clear bed.""" + ref = ref_of("k1se_idle_ref.jpg") + img = moved_by(ref.image, 250.0, 0.0, 1.0) + pose = P.locate(ref.image, img, ref.volume) + assert pose.state == P.LOST and pose.visible < P.MIN_VISIBLE, pose.why + v = classify(img, ref) + assert (v.bed, v.plate) != ("clear", "present") and v.bed != "occupied", v.reason + + +def test_a_bare_bed_reference_from_another_view_is_not_used_against_the_aligned_frame() -> None: + """Aligned to the with-plate reference, the frame is not aligned to a --no-plate one taken elsewhere: that one + would read every plate as present (its surface differs everywhere) or tie.""" + plate = ref_of("k1se_idle_ref.jpg") + bare = dataclasses.replace(ref_of("k1se_idle_far.jpg"), kind="noplate") + v = B.classify(plate_off(plate.image, plate), [plate, bare], IDLE_Z, "k1se") + assert v.plate == "missing", v.reason + assert "bare-bed one" not in v.reason + + +def test_a_zoom_about_the_bed_is_a_move_even_though_the_bed_centre_stays_put() -> None: + """The toolhead moving along the camera axis zooms about the bed: its centre stays, its border moves ~6 px.""" + ref = ref_of("k1se_idle_ref.jpg") + ys, xs = np.nonzero(ref.volume) + cx, cy, zoom = float(xs.mean()), float(ys.mean()), 1.1 + m = np.array([[zoom, 0, cx * (1 - zoom)], [0, zoom, cy * (1 - zoom)]], np.float32) + img = cv2.warpAffine(plate_off(ref.image, ref), m, (ref.image.shape[1], ref.image.shape[0]), + borderMode=cv2.BORDER_REPLICATE) + v = classify(img, ref) + assert v.plate == "missing" and v.metrics["pose_shift_px"] > P.SAME_PX, v.reason + + +def test_a_bare_bed_reference_taken_from_here_judges_the_frame_when_the_with_plate_one_was_not() -> None: + """The with-plate reference is the old one from another place, the bare-bed one was taken from where the camera + is now: the plate is off, and that is what the bare-bed reference says.""" + idle = ref_of("k1se_idle_ref.jpg") + old = ref_of("k1se_old_ref.jpg", z=IDLE_Z) + bare = dataclasses.replace(idle, kind="noplate", image=plate_off(idle.image, idle)) + v = B.classify(plate_off(idle.image, idle), [old, bare], IDLE_Z, "k1se") + assert v.plate == "missing", v.reason + assert v.info["pose"]["state"] == "same" + assert "does not see the scene" not in v.reason + + +def test_an_empty_bed_region_is_reported_by_the_classifier_not_crashed_on() -> None: + ref = ref_of("k1se_idle_ref.jpg") + empty = np.zeros(ref.image.shape[:2], bool) + assert P.locate(ref.image, frame("k1se_idle_moved.jpg"), empty).state == P.BLIND + v = classify(frame("k1se_idle_moved.jpg"), dataclasses.replace(ref, volume=empty, surface=empty)) + assert v.bed == "unknown" and "empty or tiny" in v.reason + + +def test_a_whole_frame_roi_has_no_scene_to_locate_by_and_is_judged_as_before() -> None: + ref = ref_of("k1se_idle_ref.jpg") + whole = np.ones(ref.image.shape[:2], bool) + assert P.locate(ref.image, frame("k1se_idle_moved.jpg"), whole).state == P.BLIND + + +@pytest.mark.parametrize("name", [*U1_OCCUPIED, "u1_spaghetti_printing.jpg", "u1_z200_light_1703.jpg", + "u1_z200_light_2013.jpg"]) +def test_a_fixed_camera_is_never_a_lost_camera_whatever_happened_on_the_bed(name: str) -> None: + """The U1's camera never moves: parts, spaghetti and a night light must never be called a moved camera and + turned into `unknown` by it (the start gate FAILs on these); at worst the locator cannot tell and the verdict + is the pixels' as ever.""" + ref = u1_ref() + assert P.locate(ref.image, frame(name), ref.volume).state in (P.SAME, P.BLIND) + + +# ---- the locator --------------------------------------------------------------------------------------------- + +def test_locate_same_moved_lost_and_blind() -> None: + ref = ref_of("k1se_idle_ref.jpg") + assert P.locate(ref.image, ref.image, ref.volume).state == P.SAME + moved = P.locate(ref.image, frame("k1se_idle_moved.jpg"), ref.volume) + assert moved.state == P.MOVED and moved.h is not None and moved.covered is not None + assert P.locate(ref.image, frame("k1se_old_ref.jpg"), ref.volume).state == P.LOST + black = np.zeros_like(ref.image) + assert P.locate(ref.image, black, ref.volume).state == P.BLIND # nothing to locate: judged as before + + +def test_the_k1_in_a_dark_room_against_a_daylight_reference_is_the_same_view() -> None: + """Another light is not another view: the daylight reference against the dark-room frame is not aligned.""" + ref = frame("k1_z125_clear_ref.jpg") + roi = B.polygon_mask(K1_ROI, ref.shape[:2]) + assert P.locate(ref, frame("k1_z125_clear_later.jpg"), roi).state == P.SAME + + +# ---- end to end: the check on a stored reference --------------------------------------------------------------- + +def test_check_against_the_only_old_reference_warns_and_a_new_reference_then_passes(xdg: Path) -> None: + dev = device("k1se", watch={"bed": {"enabled": True, "roi": [list(p) for p in K1_ROI]}}, model="Creality K1 SE") + cfg = pbed.BedConfig(enabled=True, roi=K1_ROI) + B.capture_reference(dev, cfg, plate=True, frame=(DATA / "k1se_old_ref.jpg").read_bytes(), frame_z=125.0, now=1.0) + cam = FakeCamera("k1se_idle_moved.jpg") + v = B.one_shot(dev, cfg, max_age=None, camera=cam, printer_fn=lambda d: ("complete", IDLE_Z), sleep=lambda s: None) + assert (v["bed"], v["plate"]) == ("unknown", "unknown") and "bed reference k1se --capture" in v["reason"] + assert preflight.check_bed_verdict(v).status == preflight.WARN + + B.capture_reference(dev, cfg, plate=True, camera=FakeCamera("k1se_idle_ref.jpg"), + printer_fn=lambda d: ("complete", IDLE_Z), now=2.0) + v = B.one_shot(dev, cfg, max_age=None, camera=cam, printer_fn=lambda d: ("complete", IDLE_Z), sleep=lambda s: None) + assert (v["bed"], v["plate"]) == ("clear", "present"), v["reason"] + assert preflight.check_bed_verdict(v).status == preflight.PASS + + +def test_a_clear_judged_from_a_moved_camera_never_becomes_the_reference(xdg: Path) -> None: + """Stored from there, the reference would keep the ROI polygon where it was drawn: another place on the plate.""" + import bed_refs + + dev = device("k1se", watch={"bed": {"enabled": True, "roi": [list(p) for p in K1_ROI]}}, model="Creality K1 SE") + cfg = pbed.BedConfig(enabled=True, roi=K1_ROI) + B.capture_reference(dev, cfg, plate=True, frame=(DATA / "k1se_idle_ref.jpg").read_bytes(), frame_z=IDLE_Z, now=1.0) + v = B.one_shot(dev, cfg, max_age=None, camera=FakeCamera("k1se_idle_moved.jpg"), + printer_fn=lambda d: ("complete", IDLE_Z), sleep=lambda s: None) + assert (v["bed"], v["plate"], v["pose"]["state"]) == ("clear", "present", "moved") + lit = {**v, "light": {"on_for_frame": True}} + assert "not where the reference was taken" in (bed_refs.refresh_refusal(lit, 0.5) or "") + assert bed_refs.refresh_refusal({**lit, "pose": {"state": "same"}}, 0.5) is None + assert "not where the reference was taken" in (bed_refs.refresh_refusal({**lit, "pose": {"state": "lost"}}, 0.5) or "") From 154c992d70630bd63ef6958740d803f0a056899f Mon Sep 17 00:00:00 2001 From: alex-mextner <111590326+alex-mextner@users.noreply.github.com> Date: Sat, 14 Nov 2026 01:32:22 +0100 Subject: [PATCH 2/2] fix(bed): a frame whose camera is lost is never clear: every verdict becomes unknown Refs #757. A lost pose means the frame was not judged against a picture the camera no longer sees; a clear/plate-present read from pixels that happen to match must not PASS the start gate. pose_shift_px is now in the lost metrics. --- docs/commands/printer.md | 3 ++- lib/bed_state.py | 17 +++++++++-------- tests/test_bed_pose.py | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/docs/commands/printer.md b/docs/commands/printer.md index 377dcd4a..cb2401d1 100644 --- a/docs/commands/printer.md +++ b/docs/commands/printer.md @@ -968,7 +968,8 @@ until someone takes them off. The camera can see that, so nobody has to tell an `pose_inliers` and `pose` in the verdict say so, the evidence frame marks the pixels on the camera frame; a `--no-plate` reference taken from another view is not used. **Lost** (no consistent match, the scene lines up only far away — the camera sits lower or closer —, or too little of the bed region is in the frame): - pixels say nothing, anything but a clear bed with the plate on becomes `unknown` and the preflight `bed` line + the frame was not judged, so every verdict — a clear bed with the plate on too, never a PASS — becomes `unknown` + (`pose_shift_px` in the metrics) and the preflight `bed` line a WARN naming the fix: with the plate on and the bed empty take a reference from where the camera is now (`3d printer bed reference NAME --capture`), or put the toolhead back where the reference was taken; `bed check --assume-empty "why"` then works as for any unknown. A plate that is really off and a part that is diff --git a/lib/bed_state.py b/lib/bed_state.py index 68883345..9e91b32e 100644 --- a/lib/bed_state.py +++ b/lib/bed_state.py @@ -773,8 +773,8 @@ def _classify_selected(img: np.ndarray, plate_ref: Reference | None, noplate_ref def _apply_pose(v: Verdict, pose: bed_pose.Pose, printer: str, roi_source: str) -> Verdict: """The verdict of a frame located against its reference (bed_pose.py), with the pose in `info` and `pose_ncc` in the metrics. `moved`: say so, and bring the evidence masks (in the reference's picture) back onto the camera - frame. `lost`: pixels of a picture the camera no longer sees are not findings: whatever is not a clear bed with - the plate on is `unknown` with the way to a reference that fits.""" + frame. `lost`: the frame was not judged against a picture it no longer sees, so EVERY verdict, a clear bed with + the plate on included, is `unknown` with the way to a reference that fits (never a PASS).""" metrics = {**v.metrics, "pose_ncc": pose.ncc} info = {**v.info, "pose": pose.info()} reason = v.reason @@ -799,16 +799,17 @@ def unwarp(mask: Any) -> Any: return replace(v, reason=f"{reason}; {pose.why}", changed=unwarp(v.changed), roi=unwarp(v.roi), info=info, metrics={**metrics, "pose_shift_px": pose.shift_px, "pose_inliers": float(pose.inliers)}) - if pose.state != bed_pose.LOST or (v.bed == CLEAR and v.plate == PRESENT): + if pose.state != bed_pose.LOST: return replace(v, reason=reason, metrics=metrics, info=info) read = ", ".join(f"{k} {w}" for k, w in (("bed", v.bed), ("plate", v.plate)) if w != UNKNOWN) found = f"the pixels alone read `{read}`: " if read else "the pixels alone: " return replace(v, bed=UNKNOWN, plate=UNKNOWN, info=info, - metrics={**metrics, "pose_inliers": float(pose.inliers)}, - reason=(f"cannot judge the bed: the camera is not where it was when the reference was taken, so a " - f"changed picture says nothing about the plate or parts ({pose.why}; {found}{v.reason}). Fix: with the plate on and the bed empty take a reference " - f"from where the camera is now: `3d printer bed reference {printer} --capture`{drawn}; " - f"or put the toolhead back where the reference was taken")) + metrics={**metrics, "pose_shift_px": pose.shift_px, "pose_inliers": float(pose.inliers)}, + reason=(f"cannot judge the bed: the camera is not where it was when the reference was taken, so the " + f"frame was not judged at all, a clear read is as void as a changed one ({pose.why}; " + f"{found}{v.reason}). Fix: with the plate on and the bed empty take a reference from where " + f"the camera is now: `3d printer bed reference {printer} --capture`{drawn}; or put the " + f"toolhead back where the reference was taken")) def occupied_confident(v: Verdict, th: Thresholds, view_min: float) -> bool: diff --git a/tests/test_bed_pose.py b/tests/test_bed_pose.py index cb300fdc..d6b7fdae 100644 --- a/tests/test_bed_pose.py +++ b/tests/test_bed_pose.py @@ -218,6 +218,28 @@ def test_an_empty_bed_region_is_reported_by_the_classifier_not_crashed_on() -> N assert v.bed == "unknown" and "empty or tiny" in v.reason +@pytest.mark.parametrize("with_a_part", [False, True]) +def test_a_frame_whose_camera_is_lost_is_never_clear_even_when_its_pixels_look_like_the_reference( + with_a_part: bool, monkeypatch: pytest.MonkeyPatch +) -> None: + """A lost pose means the frame was not judged: `3d printer start` must not go ahead on a `clear` read from + pixels that happen to match. The locator is forced to say `lost` on frames that look clear (the real idle frame, + and the same frame with a part on the plate in a spot the pixels compare against the reference).""" + ref = ref_of("k1se_idle_ref.jpg") + img = with_part(ref.image, 230, 170) if with_a_part else ref.image + monkeypatch.setattr(P, "locate", lambda *_: P.Pose(P.LOST, "the camera does not see the scene of the reference", + 0.1, 7, 0.0)) + pixels = B._classify_selected(img, ref, None, IDLE_Z, "k1se", B.TH, B.ZMatch(), None) + assert pixels.bed == ("occupied" if with_a_part else "clear"), pixels.reason # what the pixels alone say + v = classify(img, ref) + assert (v.bed, v.plate) == ("unknown", "unknown"), v.reason + assert v.info["pose"]["state"] == "lost" and v.metrics["pose_shift_px"] == 0.0 + assert "was not judged at all" in v.reason and "bed reference k1se --capture" in v.reason + check = preflight.check_bed_verdict({"printer": "k1se", "bed": v.bed, "plate": v.plate, "reason": v.reason, + "source": "camera now", "age_s": 0.0}) + assert check.status == preflight.WARN # never PASS, never the FAIL of a finding either + + def test_a_whole_frame_roi_has_no_scene_to_locate_by_and_is_judged_as_before() -> None: ref = ref_of("k1se_idle_ref.jpg") whole = np.ones(ref.image.shape[:2], bool)