From 06d235ffbb996964a7033118f7a499bbcf0d179a Mon Sep 17 00:00:00 2001 From: zehdari Date: Sun, 7 Jun 2026 13:37:04 -0400 Subject: [PATCH 01/21] Binary classifier working Added binary classifier to split between 2 instances of a class. Updated dummy dets to support this behavior, and moved list to the config. Mapping now supports binary classifier. Normal behavior when binary classifier is not active. Mapping config yaml now has optional lock_orientation_to_config for object (ie slalom). Added reset mapping service so we don't have to restart mapping to clear previous dets/locations before starting a new run. Tested on multiple objects in sim, but not with autonomy --- riptide_mapping/config/binary_classifier.yaml | 13 + riptide_mapping/config/config.yaml | 35 +- riptide_mapping/config/dummy_detections.yaml | 40 +- riptide_mapping/launch/mapping.launch.py | 9 + .../riptide_mapping2/binary_classifier.py | 445 ++++++++++++++++++ .../riptide_mapping2/dummydetections.py | 34 +- riptide_mapping/riptide_mapping2/mapping.py | 374 +++++++++++++-- 7 files changed, 888 insertions(+), 62 deletions(-) create mode 100644 riptide_mapping/config/binary_classifier.yaml create mode 100644 riptide_mapping/riptide_mapping2/binary_classifier.py diff --git a/riptide_mapping/config/binary_classifier.yaml b/riptide_mapping/config/binary_classifier.yaml new file mode 100644 index 0000000..b03900b --- /dev/null +++ b/riptide_mapping/config/binary_classifier.yaml @@ -0,0 +1,13 @@ +/**: + ros__parameters: + binary_classifier: + buffer_size: 500 # max detections held in the rolling buffer used for clustering + buffer_ttl_sec: 8.0 # detections older than this are dropped, so a target we've left behind stops contributing + min_cluster_detections: 6 # how many nearby detections it takes to lock an instance + cluster_radius_m: 0.15 # neighbors within this radius count as the same cluster when finding an instance + assignment_gate_m: 0.20 # once an instance is locked, a new detection farther than this from its centroid is rejected as not belonging to it + exclusion_radius_m: 0.30 # while hunting for the second instance, detections within this radius of the first are thrown out so the first can't bleed into the second + min_instance_separation_m: 0.40 # a candidate second instance must be at least this far from the first to be accepted + max_cluster_variance_m2: 0.02 # reject a cluster whose spread exceeds this. 0 disables the check + centroid_ema_alpha: 0.15 # Exponential Moving Average (EMA) rate for a locked centroid chasing new detections. lower = steadier & slower, higher = faster & noisier + use_3d_distance: false # cluster/measure distance in 3D (x,y,z) vs 2D (x,y). Keep False for top-down flat targets where z is the noisy axis \ No newline at end of file diff --git a/riptide_mapping/config/config.yaml b/riptide_mapping/config/config.yaml index 4081127..45aeeae 100644 --- a/riptide_mapping/config/config.yaml +++ b/riptide_mapping/config/config.yaml @@ -63,6 +63,7 @@ yaw: 180.0 slalom_parent: parent: map + lock_orientation_to_config: true covar: x: 1.0 y: 1.0 @@ -75,6 +76,7 @@ yaw: 180.0 slalom_front: parent: slalom_parent_frame + lock_orientation_to_config: true covar: x: 1.0 y: 1.0 @@ -87,6 +89,7 @@ yaw: 0.0 slalom_middle: parent: slalom_parent_frame + lock_orientation_to_config: true covar: x: 1.0 y: 1.0 @@ -99,6 +102,7 @@ yaw: 0.0 slalom_back: parent: slalom_parent_frame + lock_orientation_to_config: true covar: x: 1.0 y: 1.0 @@ -145,7 +149,7 @@ y: 0.11176 z: -0.0889 yaw: 0.0 - bin_target: + bin: parent: map covar: x: 0.001 @@ -153,11 +157,34 @@ z: 0.001 yaw: 0.001 pose: - x: 11.0 - y: -6.0 + x: 5.0 + y: -3.0 z: -3.25 yaw: 0.0 - + bin_target1: + parent: bin_frame + covar: + x: 0.001 + y: 0.001 + z: 0.001 + yaw: 0.001 + pose: + x: 0.0 + y: 0.0 + z: 0.0 + yaw: 0.0 + bin_target2: + parent: bin_frame + covar: + x: 0.001 + y: 0.001 + z: 0.001 + yaw: 0.001 + pose: + x: 0.0 + y: 0.0 + z: 0.0 + yaw: 0.0 # table locations table: parent: map diff --git a/riptide_mapping/config/dummy_detections.yaml b/riptide_mapping/config/dummy_detections.yaml index 659c41b..cb3427d 100644 --- a/riptide_mapping/config/dummy_detections.yaml +++ b/riptide_mapping/config/dummy_detections.yaml @@ -1,6 +1,26 @@ /**/dummydetections: ros__parameters: timer_period: 0.05 + objects: + - gate + - gate_shark + - gate_saw + - slalom_front + - slalom_middle + - slalom_back + - torpedo + - torpedo_shark_hole + - torpedo_sawfish_hole + - bin_target + - blood_1 + - blood_2 + - table + - table_reefshark + - table_sawfish + - table_basket_pink + - table_basket_yellow + - table_spoon_pink + - table_bottle_yellow detection_data: gate: pose: [2.0, 0.0, -0.8, 0.0, 0.0, 0.0] @@ -31,7 +51,7 @@ noise: 0.1 score: 0.8 downward: false - pub_invalid_orientation: false + pub_invalid_orientation: true min_dist: 0.5 max_dist: 3.0 slalom_middle: @@ -82,6 +102,24 @@ pub_invalid_orientation: false min_dist: 0.5 max_dist: 3.0 + blood_1: + class_id: blood + pose: [4.0, -3.0, -3.25, 0.0, 0.0, 0.0] + noise: 0.05 + score: 0.8 + downward: true + pub_invalid_orientation: false + min_dist: 0.5 + max_dist: 3.0 + blood_2: + class_id: blood + pose: [4.7, -3.5, -3.25, 0.0, 0.0, 0.0] + noise: 0.05 + score: 0.8 + downward: true + pub_invalid_orientation: false + min_dist: 0.5 + max_dist: 3.0 table: pose: [4.0, 8.0, -3.25, 0.0, 0.0, 0.0] noise: 0.05 diff --git a/riptide_mapping/launch/mapping.launch.py b/riptide_mapping/launch/mapping.launch.py index 28052cb..7c8a114 100644 --- a/riptide_mapping/launch/mapping.launch.py +++ b/riptide_mapping/launch/mapping.launch.py @@ -51,6 +51,11 @@ def generate_launch_description(): default_value=[LC('config'), ".yaml"] ), + DeclareLaunchArgument( + "binary_classifier_yaml", + default_value="binary_classifier.yaml" + ), + GroupAction([ PushRosNamespace( LC("robot") @@ -69,6 +74,10 @@ def generate_launch_description(): PathJoinSubstitution([ config_dir, LC("config_yaml") + ]), + PathJoinSubstitution([ + config_dir, + LC("binary_classifier_yaml") ]) ] ), diff --git a/riptide_mapping/riptide_mapping2/binary_classifier.py b/riptide_mapping/riptide_mapping2/binary_classifier.py new file mode 100644 index 0000000..3c77e72 --- /dev/null +++ b/riptide_mapping/riptide_mapping2/binary_classifier.py @@ -0,0 +1,445 @@ +from collections import deque +from dataclasses import dataclass, field +import numpy + +# fraction of farthest cluster points dropped before averaging the centroid +# not a param because we really shouldn't need to tweak this (would likely do more harm than good) +CLUSTER_TRIM_QUANTILE = 0.90 + +# State machine for binary classifier +# stopped -> aquire_first -> track_first -> [frozen] -> aquire_second -> track_second -> stopped +# frozen is optional and can be skipped to go from track_first -> aquire_second directly +# stop() returns to stopped from any running state +class BinaryClassifierState: + STOPPED = "stopped" # not running + ACQUIRE_FIRST = "acquire_first" # trying to find the first cluster to track + TRACK_FIRST = "track_first" # tracking the first cluster + FROZEN = "frozen" # buffer is frozen, first is still tracking + ACQUIRE_SECOND = "acquire_second" # trying to find the second cluster + TRACK_SECOND = "track_second" # tracking the second cluster + +# Defaults, overridden by the launch yaml +DEFAULTS = { + "buffer_size": 500, # max detections held in the rolling buffer used for clustering + "buffer_ttl_sec": 15.0, # detections older than this are dropped, so a target we've left behind stops contributing + "min_cluster_detections": 6, # how many nearby detections it takes to lock an instance + "cluster_radius_m": 0.15, # neighbors within this radius count as the same cluster when finding an instance + "assignment_gate_m": 0.20, # once an instance is locked, a new detection farther than this from its centroid is rejected as not belonging to it + "exclusion_radius_m": 0.30, # while hunting for the second instance, detections within this radius of the first are thrown out so the first can't bleed into the second + "min_instance_separation_m": 0.40, # a candidate second instance must be at least this far from the first to be accepted + "max_cluster_variance_m2": 0.02, # reject a cluster whose spread exceeds this. 0 disables the check + "centroid_ema_alpha": 0.15, # Exponential Moving Average (EMA) rate for a locked centroid chasing new detections. lower = steadier & slower, higher = faster & noisier + "use_3d_distance": False, # cluster/measure distance in 3D (x,y,z) vs 2D (x,y). Keep False for top-down flat targets where z is the noisy axis +} + +@dataclass +class BinaryClassifierParams: + buffer_size: int = DEFAULTS["buffer_size"] + buffer_ttl_sec: float = DEFAULTS["buffer_ttl_sec"] + min_cluster_detections: int = DEFAULTS["min_cluster_detections"] + cluster_radius_m: float = DEFAULTS["cluster_radius_m"] + assignment_gate_m: float = DEFAULTS["assignment_gate_m"] + exclusion_radius_m: float = DEFAULTS["exclusion_radius_m"] + min_instance_separation_m: float = DEFAULTS["min_instance_separation_m"] + max_cluster_variance_m2: float = DEFAULTS["max_cluster_variance_m2"] + centroid_ema_alpha: float = DEFAULTS["centroid_ema_alpha"] + use_3d_distance: bool = DEFAULTS["use_3d_distance"] + +@dataclass +class DetectionSample: + x: float + y: float + z: float + score: float + stamp_sec: float + + def point(self): + return numpy.array([self.x, self.y, self.z], dtype=numpy.float64) + +@dataclass +class AssignmentResult: + accepted: bool = False + target_name: str = "" + reason: str = "" + distance_m: float = None + +class BinaryClassifier: + def __init__(self, node=None, param_namespace="binary_classifier"): + self.node = node + self.param_namespace = param_namespace + + self.params = BinaryClassifierParams() + self.samples = deque(maxlen=max(1, self.params.buffer_size)) + + self.state = BinaryClassifierState.STOPPED + self.class_name = "" + self.instance1_name = "" + self.instance2_name = "" + + self.instance1_centroid = None + self.instance2_centroid = None + + self.declare_params() + self.update_params() + + @property + def running(self): + return self.state != BinaryClassifierState.STOPPED + + @property + def first_locked(self): + return self.instance1_centroid is not None + + @property + def second_locked(self): + return self.instance2_centroid is not None + + @property + def buffer_frozen(self): + return self.state == BinaryClassifierState.FROZEN + + def param_name(self, name): + return "{}.{}".format(self.param_namespace, name) + + def declare_params(self): + # defaults come from the shared DEFAULTS dict; the launch-provided yaml overrides them + self.node.declare_parameters( + namespace="", + parameters=[(self.param_name(name), value) for name, value in DEFAULTS.items()], + ) + + def update_params(self): + if self.node is None: + return + + self.params = BinaryClassifierParams( + buffer_size=int(self.node.get_parameter(self.param_name("buffer_size")).value), + buffer_ttl_sec=float(self.node.get_parameter(self.param_name("buffer_ttl_sec")).value), + min_cluster_detections=int(self.node.get_parameter(self.param_name("min_cluster_detections")).value), + cluster_radius_m=float(self.node.get_parameter(self.param_name("cluster_radius_m")).value), + assignment_gate_m=float(self.node.get_parameter(self.param_name("assignment_gate_m")).value), + exclusion_radius_m=float(self.node.get_parameter(self.param_name("exclusion_radius_m")).value), + min_instance_separation_m=float(self.node.get_parameter(self.param_name("min_instance_separation_m")).value), + max_cluster_variance_m2=float(self.node.get_parameter(self.param_name("max_cluster_variance_m2")).value), + centroid_ema_alpha=float(self.node.get_parameter(self.param_name("centroid_ema_alpha")).value), + use_3d_distance=bool(self.node.get_parameter(self.param_name("use_3d_distance")).value), + ) + + # re-wrap the existing samples in case buffer_size changed + self.samples = deque(self.samples, maxlen=max(1, self.params.buffer_size)) + + def start(self, class_name, instance1_name, instance2_name): + self.update_params() + + class_name = class_name.strip() + instance1_name = instance1_name.strip() + instance2_name = instance2_name.strip() + + if self.running: + return False, "BinaryClassifier is already running" + + if class_name == "": + return False, "class_name cannot be empty" + + if instance1_name == "" or instance2_name == "": + return False, "instance names cannot be empty" + + if instance1_name == instance2_name: + return False, "instance names must be different" + + self.samples.clear() + + self.class_name = class_name + self.instance1_name = instance1_name + self.instance2_name = instance2_name + + self.instance1_centroid = None + self.instance2_centroid = None + self.state = BinaryClassifierState.ACQUIRE_FIRST + + return True, "BinaryClassifier started for class {}".format(class_name) + + def freeze_buffer(self): + # Freeze the buffer while autonomy goes off to do the first task + # Nothing is added or pruned, so the second instance detections we already gathered survive even with a short TTL + # Only valid once the first instance is locked + if not self.running: + return False, "BinaryClassifier is not running" + + if self.state == BinaryClassifierState.FROZEN: + return True, "BinaryClassifier buffer already frozen" + + if self.state != BinaryClassifierState.TRACK_FIRST: + return False, "Can only lock the buffer while tracking the first instance" + + self.state = BinaryClassifierState.FROZEN + return True, "BinaryClassifier buffer frozen" + + def start_second(self): + self.update_params() + + if not self.running: + return False, "BinaryClassifier is not running" + + # autonomy decides when to go looking for the second instance, but the first has to be locked first + # (i.e. instance1_centroid has to exist) + if not self.first_locked: + return False, "Cannot start second instance before first instance is locked" + + if self.state == BinaryClassifierState.ACQUIRE_SECOND or self.state == BinaryClassifierState.TRACK_SECOND: + return True, "BinaryClassifier is already working on second instance" + + # leaving FROZEN (or TRACK_FIRST) unfreezes the buffer. Dump what we preserved to + # try to lock instance 2 from history, don't wait for a fresh detection + self.state = BinaryClassifierState.ACQUIRE_SECOND + + candidate = self.find_best_cluster(self.samples_outside_first_instance()) + if candidate is not None: + separation = self.distance(candidate["centroid"], self.instance1_centroid) + if separation >= self.params.min_instance_separation_m: + self.instance2_centroid = candidate["centroid"] + self.state = BinaryClassifierState.TRACK_SECOND + + return True, "BinaryClassifier switched to second instance" + + def stop(self): + if not self.running: + return False, "BinaryClassifier is not running" + + self.samples.clear() + + self.state = BinaryClassifierState.STOPPED + self.class_name = "" + self.instance1_name = "" + self.instance2_name = "" + + self.instance1_centroid = None + self.instance2_centroid = None + + return True, "BinaryClassifier stopped" + + def observe(self, sample, now_sec): + if not self.running: + return AssignmentResult(False, "", "classifier stopped") + + # If FROZEN, don't append/prune, so the detections gathered before autonomy executes the first task survive regardless of TTL. + # Instance 1 still tracks because its centroid is a field, not a buffer entry + if self.state == BinaryClassifierState.FROZEN: + return self.observe_track_first(sample) + + # prune on both sides of the append so a fresh sample can't keep stale ones alive, and the new sample itself is held to the same TTL + self.prune(now_sec) + self.samples.append(sample) + self.prune(now_sec) + + if self.state == BinaryClassifierState.ACQUIRE_FIRST: + return self.observe_acquire_first(sample) + + if self.state == BinaryClassifierState.TRACK_FIRST: + return self.observe_track_first(sample) + + if self.state == BinaryClassifierState.ACQUIRE_SECOND: + return self.observe_acquire_second(sample) + + if self.state == BinaryClassifierState.TRACK_SECOND: + return self.observe_track_second(sample) + + return AssignmentResult(False, "", "invalid classifier state") + + def observe_acquire_first(self, sample): + # try to lock instance 1 from the buffer, once locked we fall through and start assigning + if self.instance1_centroid is None: + cluster = self.find_best_cluster(list(self.samples)) + if cluster is not None: + self.instance1_centroid = cluster["centroid"] + self.state = BinaryClassifierState.TRACK_FIRST + + if self.instance1_centroid is None: + return AssignmentResult(False, "", "acquiring first instance") + + return self.assign_to_locked_instance( + sample, + self.instance1_centroid, + self.instance1_name, + 1, + "first instance locked, sample outside gate", + ) + + def observe_track_first(self, sample): + return self.assign_to_locked_instance( + sample, + self.instance1_centroid, + self.instance1_name, + 1, + "tracking first instance, sample outside gate", + ) + + def observe_acquire_second(self, sample): + # reject anything sitting on top of instance 1 so it can't leak into instance 2 + if self.instance1_centroid is not None: + dist_to_first = self.distance(sample.point(), self.instance1_centroid) + if dist_to_first < self.params.exclusion_radius_m: + return AssignmentResult(False, "", "sample inside first instance exclusion radius", dist_to_first) + + if self.instance2_centroid is None: + candidate_samples = self.samples_outside_first_instance() + cluster = self.find_best_cluster(candidate_samples) + + if cluster is not None: + # a valid second instance has to be physically far enough from the first + separation = self.distance(cluster["centroid"], self.instance1_centroid) + if separation < self.params.min_instance_separation_m: + return AssignmentResult(False, "", "second candidate too close to first instance", separation) + + self.instance2_centroid = cluster["centroid"] + self.state = BinaryClassifierState.TRACK_SECOND + + if self.instance2_centroid is None: + return AssignmentResult(False, "", "acquiring second instance") + + return self.assign_to_locked_instance( + sample, + self.instance2_centroid, + self.instance2_name, + 2, + "second instance locked, sample outside gate", + ) + + def observe_track_second(self, sample): + # keep excluding instance 1's neighborhood even while tracking the second + if self.instance1_centroid is not None: + dist_to_first = self.distance(sample.point(), self.instance1_centroid) + if dist_to_first < self.params.exclusion_radius_m: + return AssignmentResult(False, "", "sample inside first instance exclusion radius", dist_to_first) + + return self.assign_to_locked_instance( + sample, + self.instance2_centroid, + self.instance2_name, + 2, + "tracking second instance, sample outside gate", + ) + + def assign_to_locked_instance(self, sample, centroid, target_name, instance_num, reject_reason): + if centroid is None: + return AssignmentResult(False, "", "instance is not locked") + + dist = self.distance(sample.point(), centroid) + + # too far from the locked centroid -> not this instance + if dist > self.params.assignment_gate_m: + return AssignmentResult(False, "", reject_reason, dist) + + self.update_centroid(instance_num, sample.point()) + return AssignmentResult(True, target_name, "assigned", dist) + + def update_centroid(self, instance_num, point): + # slow EMA so a single noisy detection can't yank the lock around + alpha = self.params.centroid_ema_alpha + + if instance_num == 1 and self.instance1_centroid is not None: + self.instance1_centroid = (1.0 - alpha) * self.instance1_centroid + alpha * point + + if instance_num == 2 and self.instance2_centroid is not None: + self.instance2_centroid = (1.0 - alpha) * self.instance2_centroid + alpha * point + + def samples_outside_first_instance(self): + if self.instance1_centroid is None: + return list(self.samples) + + out = [] + + for sample in self.samples: + dist = self.distance(sample.point(), self.instance1_centroid) + + # only keep samples clearly away from instance 1 as candidates for instance 2 + if dist >= self.params.exclusion_radius_m and dist >= self.params.min_instance_separation_m: + out.append(sample) + + return out + + def find_best_cluster(self, samples): + min_count = max(1, self.params.min_cluster_detections) + + if len(samples) < min_count: + return None + + # cluster in the metric space (2D by default), but keep full 3D points for the final centroid + metric_points = numpy.array([self.metric_point(sample.point()) for sample in samples], dtype=numpy.float64) + full_points = numpy.array([sample.point() for sample in samples], dtype=numpy.float64) + + # greedy mode-seek: whichever sample has the most neighbors within cluster_radius wins + best_indices = None + best_count = 0 + + for i in range(metric_points.shape[0]): + dists = numpy.linalg.norm(metric_points - metric_points[i], axis=1) + indices = numpy.where(dists <= self.params.cluster_radius_m)[0] + + if len(indices) > best_count: + best_count = len(indices) + best_indices = indices + + if best_indices is None or best_count < min_count: + return None + + cluster_points = full_points[best_indices] + + # drop the farthest CLUSTER_TRIM_QUANTILE tail (vs the median center) before averaging so stragglers don't pull the centroid + center = numpy.nanmedian(cluster_points, axis=0) + dists_to_center = numpy.array([self.distance(point, center) for point in cluster_points], dtype=numpy.float64) + + # only trim if the cluster has a couple samples to spare above the minimum + if len(dists_to_center) >= min_count + 2: + cutoff = numpy.nanquantile(dists_to_center, CLUSTER_TRIM_QUANTILE) + trimmed = cluster_points[dists_to_center <= cutoff] + + if len(trimmed) >= min_count: + cluster_points = trimmed + + centroid = numpy.nanmean(cluster_points, axis=0) + + metric_cluster_points = numpy.array([self.metric_point(point) for point in cluster_points], dtype=numpy.float64) + metric_centroid = self.metric_point(centroid) + + # reject a cluster that's too spread out to be a single object + variance_m2 = float(numpy.nanmean(numpy.sum((metric_cluster_points - metric_centroid) ** 2, axis=1))) + + if self.params.max_cluster_variance_m2 > 0.0 and variance_m2 > self.params.max_cluster_variance_m2: + return None + + return { + "centroid": centroid, + "count": len(cluster_points), + "variance_m2": variance_m2, + } + + def age_buffer(self, now_sec): + # Time-driven TTL eviction + if not self.running or self.state == BinaryClassifierState.FROZEN: + return + self.prune(now_sec) + + def prune(self, now_sec): + # never called while FROZEN (age_buffer/observe gates it) + + if self.params.buffer_ttl_sec <= 0.0: + return + + # drop samples older than the TTL so old views of a bin don't linger after we've moved on + self.samples = deque( + [sample for sample in self.samples if now_sec - sample.stamp_sec <= self.params.buffer_ttl_sec], + maxlen=max(1, self.params.buffer_size), + ) + + def buffer_size(self): + return self.samples.c + def distance(self, point_a, point_b): + return float(numpy.linalg.norm(self.metric_point(point_a) - self.metric_point(point_b))) + + def metric_point(self, point): + # default to 2D: for top-down flat targets the z/depth axis is the noisiest, so leave it out of distances + if self.params.use_3d_distance: + return point[:3] + + return point[:2] \ No newline at end of file diff --git a/riptide_mapping/riptide_mapping2/dummydetections.py b/riptide_mapping/riptide_mapping2/dummydetections.py index cae06d1..0637654 100644 --- a/riptide_mapping/riptide_mapping2/dummydetections.py +++ b/riptide_mapping/riptide_mapping2/dummydetections.py @@ -13,6 +13,7 @@ from rcl_interfaces.msg import SetParametersResult from geometry_msgs.msg import PoseWithCovariance, PoseWithCovarianceStamped, Pose, Quaternion from rclpy.node import Node +from rclpy.parameter import Parameter from std_msgs.msg import Header from std_srvs.srv import SetBool from tf2_ros import Buffer, TransformException, TransformListener @@ -25,18 +26,6 @@ TOPIC_NAME = "detected_objects" CAMERA_ROTATION = tf3d.euler.euler2quat(-1.5707, 0, -1.5707) # makes orientations agree with camera -objects = [ - "gate", - "gate_shark", - "gate_saw", - "slalom_front", - "slalom_middle", - "slalom_back", - "torpedo", - "torpedo_shark_hole", - "torpedo_sawfish_hole", - "bin_target", -] config = {} @@ -63,7 +52,7 @@ def __init__(self): self.pubs = [ ] self.srv = self.create_service(SetBool, 'set_camera_is_dfc', self.setActiveCameraCb) - for object in objects: + for object in self.objects: self.pubs.append(self.create_publisher(PoseWithCovarianceStamped, f"dummydetections/{object}", 10)) self.smoothed_slalom_dist = 3.0 @@ -75,6 +64,7 @@ def __init__(self): def declareParams(self): self.declare_parameter("timer_period", 0.0) self.declare_parameter("simulate_pool", False) + self.declare_parameter("objects", Parameter.Type.STRING_ARRAY) self.declare_parameter("forward_camera_hfov", 60) self.declare_parameter("forward_camera_vfov", 40) self.declare_parameter("forward_camera_frame", "stereo/left_link") @@ -84,16 +74,19 @@ def declareParams(self): self.declare_parameter("downward_camera_frame", "downward_link") self.declare_parameter("downward_camera_pub_frame", "downward_link") - for object in objects: + for object in self.objects: + self.declare_parameter(f"detection_data.{object}.class_id", object) self.declare_parameter(f"detection_data.{object}.pose", [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) self.declare_parameter(f"detection_data.{object}.noise", 0.0) self.declare_parameter(f"detection_data.{object}.score", 0.0) self.declare_parameter(f"detection_data.{object}.downward", False) self.declare_parameter(f"detection_data.{object}.publish_invalid_orientation", False) + self.declare_parameter(f"detection_data.{object}.pub_invalid_orientation", False) self.declare_parameter(f"detection_data.{object}.min_dist", 0.0) self.declare_parameter(f"detection_data.{object}.max_dist", 0.0) - + self.objects = list(self.get_parameter("objects").value) + #TODO: UPDATE ALL THE OTHER NON OBJECT PARAMS LIKE SIMULATE_POOL def updateParams(self, params): for param in params: #set timer to new rate if there is a new rate to set @@ -214,14 +207,17 @@ def timerCB(self): forwardsDetectArray.header = fwdHeader downwardsDetectArray.header = dwdHeader - for i in range(0, len(objects)): - objectName = objects[i] + for i in range(0, len(self.objects)): + objectName = self.objects[i] self.get_logger().debug(f"Processing dummy detection for {objectName}") poseArr = self.get_parameter(f"detection_data.{objectName}.pose").value # this pose is in map frame noise = self.get_parameter(f"detection_data.{objectName}.noise").value score = self.get_parameter(f"detection_data.{objectName}.score").value - publishInvalid = self.get_parameter(f"detection_data.{objectName}.publish_invalid_orientation").value + # This is funny so I kept it + publishInvalid = self.get_parameter(f"detection_data.{objectName}.publish_invalid_orientation").value or \ + self.get_parameter(f"detection_data.{objectName}.pub_invalid_orientation").value + classId = self.get_parameter(f"detection_data.{objectName}.class_id").value self.get_logger().debug(f"Object name: {objectName}") @@ -303,7 +299,7 @@ def timerCB(self): # hypothesis = ObjectHypothesisWithPose() - hypothesis.hypothesis.class_id = objectName + hypothesis.hypothesis.class_id = classId hypothesis.hypothesis.score = score hypothesis.pose.pose = framePose diff --git a/riptide_mapping/riptide_mapping2/mapping.py b/riptide_mapping/riptide_mapping2/mapping.py index 5aca7d2..fe61d3b 100755 --- a/riptide_mapping/riptide_mapping2/mapping.py +++ b/riptide_mapping/riptide_mapping2/mapping.py @@ -7,10 +7,11 @@ from rclpy.time import Time from std_msgs.msg import Header, Int8 -from geometry_msgs.msg import PoseWithCovariance, PoseWithCovarianceStamped, Pose, Vector3, Point +from std_srvs.srv import Trigger +from geometry_msgs.msg import PoseWithCovariance, PoseWithCovarianceStamped, Pose, Vector3, Point, PoseStamped from vision_msgs.msg import Detection3DArray, ObjectHypothesisWithPose from tf2_geometry_msgs import do_transform_pose_stamped -from riptide_msgs2.srv import MappingTarget +from riptide_msgs2.srv import MappingTarget, StartBinaryClassifier from riptide_msgs2.msg import MappingTargetInfo, LedCommand import tf2_ros @@ -19,6 +20,7 @@ from transforms3d.euler import euler2quat from location import Location +from binary_classifier import BinaryClassifier, DetectionSample from tf2_msgs.msg import TFMessage import math @@ -37,10 +39,11 @@ def callback(self, data: TFMessage) -> None: class OutstandingDetectionInfo: - def __init__(self, det_result: ObjectHypothesisWithPose, det_header: Header, closest_object: str): + def __init__(self, det_result: ObjectHypothesisWithPose, det_header: Header, closest_object: str, binary_classifier_detection=False): self.det_result = det_result self.det_header = det_header self.closest_object = closest_object + self.binary_classifier_detection = binary_classifier_detection # Instead of updating the location for individual objects we apply a global offset to account for robot drift as we @@ -63,7 +66,9 @@ def __init__(self): "torpedo": dict(), "torpedo_shark_hole": dict(), "torpedo_sawfish_hole": dict(), - "bin_target": dict(), + "bin": dict(), + "bin_target1": dict(), + "bin_target2": dict(), "table": dict(), "table_reefshark": dict(), "table_sawfish": dict(), @@ -76,12 +81,12 @@ def __init__(self): } self.downwards_objects = { - "bin_target": dict(), - "table_basket_pink": dict(), - "table_basket_yellow": dict(), - - "table_spoon_pink": dict(), - "table_bottle_yellow": dict() + "pill": dict(), + "plug": dict(), + "nut_and_bolt": dict(), + "bandage": dict(), + "fire": dict(), + "blood": dict(), } self.outstanding_detections: list[OutstandingDetectionInfo] = [] @@ -99,7 +104,8 @@ def __init__(self): ('init_data.{}.covar.x'.format(object), 1.0), ('init_data.{}.covar.y'.format(object), 1.0), ('init_data.{}.covar.z'.format(object), 1.0), - ('init_data.{}.covar.yaw'.format(object), 1.0) + ('init_data.{}.covar.yaw'.format(object), 1.0), + ('init_data.{}.lock_orientation_to_config'.format(object), False), ] ) @@ -124,18 +130,76 @@ def __init__(self): self.target_object = "" self.lock_map = False self.offset = Location(Point(), Vector3(), int(self.get_parameter("buffer_size").value), tuple(self.get_parameter("quantile").value)) + self.binary_classifier = BinaryClassifier(self) self.add_on_set_parameters_callback(self.param_callback) self.create_subscription(Detection3DArray, "detected_objects".format(self.get_namespace()), self.vision_callback, qos_profile_system_default) self.status_pub = self.create_publisher(MappingTargetInfo, "state/mapping", qos_profile_system_default) - self.create_service(MappingTarget, "mapping_target", self.target_callback) + self.create_service(MappingTarget, "mapping_target", self.target_callback) # Should prob be mapping ns but not changing for compatability for now + self.create_service(Trigger, "~/reset_mapping", self.reset_mapping_callback) + + # binary classifier services (resolve under this nodes ns) + self.create_service(StartBinaryClassifier, "~/start_binary_classifier", self.start_binary_classifier_callback) + self.create_service(Trigger, "~/freeze_binary_classifier_buffer", self.freeze_binary_classifier_buffer_callback) + self.create_service(Trigger, "~/start_binary_classifier_second", self.start_binary_classifier_second_callback) + self.create_service(Trigger, "~/stop_binary_classifier", self.stop_binary_classifier_callback) + self.led_pulse_pub = self.create_publisher(LedCommand, "command/led", qos_profile_system_default) self.last_pub_time = Time() self.publish_pose() self.publish_timer = self.create_timer(0.125, self.update_oustanding_items) - + def reset_runtime_state(self): + # Reset all configured map objects back to init_data params. + # This also clears each Location's internal sample buffer because create_location() constructs a new Location object + for object_name in self.objects.keys(): + self.create_location(object_name) + + # Reset global map drift/offset buffer + self.offset = Location( + Point(), + Vector3(), + int(self.get_parameter("buffer_size").value), + tuple(self.get_parameter("quantile").value), + ) + + # Drop queued detections waiting on TF + self.outstanding_detections.clear() + + # Stop/clear binary classifier state + try: + self.binary_classifier.stop() + except Exception as ex: + self.get_logger().warning(f"Binary classifier stop during reset failed: {ex}") + + # Reset mapping mode + self.target_object = "" + self.lock_map = False + + # Immediately publish reset topics/TF/status + self.publish_pose() + + def reset_mapping_callback(self, request: Trigger.Request, response: Trigger.Response): + self.get_logger().info("Resetting mapping runtime state to init_data") + self.reset_runtime_state() + + response.success = True + response.message = "Mapping reset to init_data" + return response + + def pulse_detection_led(self, red=0, green=255, blue=0): + # Pulse LEDs to indicate a detection was received + ledPulse = LedCommand() + ledPulse.target = LedCommand.TARGET_ALU + ledPulse.mode = LedCommand.SINGLETON_FLASH + + ledPulse.red = red + ledPulse.green = green + ledPulse.blue = blue + + self.led_pulse_pub.publish(ledPulse) + def create_location(self, object: str): #create the Location object using two vector3s describing coordinates and euler rotation xyz = Point() @@ -183,14 +247,145 @@ def target_callback(self, request: MappingTarget.Request, response: MappingTarge return response + def start_binary_classifier_callback(self, request: StartBinaryClassifier.Request, response: StartBinaryClassifier.Response): + class_name = str(request.class_name).strip() + target1 = str(request.frame1_name).strip() + target2 = str(request.frame2_name).strip() + + if self.binary_classifier.running: + response.success = False + response.message = "BinaryClassifier is already running" + return response + + if class_name == "": + response.success = False + response.message = "class_name cannot be empty" + return response + + if class_name not in self.objects.keys() and class_name not in self.downwards_objects.keys(): + response.success = False + response.message = f"Unknown class_name {class_name}" + return response + + # both instance targets are caller-supplied; they must be real mapping objects we can publish/seed + if target1 not in self.objects.keys() or target2 not in self.objects.keys(): + response.success = False + response.message = f"instance targets must exist in mapping objects (got '{target1}', '{target2}')" + return response + + success, message = self.binary_classifier.start( + class_name, + target1, + target2, + ) + + if not success: + response.success = False + response.message = message + return response + + self.objects[target1]["location"].reset() + self.objects[target2]["location"].reset() + + self.target_object = target1 + self.lock_map = False + self.offset.cool_buffer() + self.outstanding_detections.clear() + + response.success = True + response.message = message + self.get_logger().info(message) + return response + + def freeze_binary_classifier_buffer_callback(self, request: Trigger.Request, response: Trigger.Response): + # Freeze the classifier buffer while autonomy goes to do the first task, so the + # second-instance detections already gathered survive the short TTL. Unfrozen by start_second. + success, message = self.binary_classifier.freeze_buffer() + + if success: + self.get_logger().info(message) + else: + self.get_logger().warning(message) + + response.success = success + response.message = message + return response + + def start_binary_classifier_second_callback(self, request: Trigger.Request, response: Trigger.Response): + success, message = self.binary_classifier.start_second() + + if success: + # If start_second locked instance 2 from the (preserved) buffer, publish it now as a TF for autonomy to navigate to, + # but high covariance so it isn't treated as confirmed. + if self.binary_classifier.second_locked: + self.seed_object_estimate(self.binary_classifier.instance2_name, self.binary_classifier.instance2_centroid) + self.publish_pose() + else: + self.get_logger().info("start_second: no buffered cluster yet, will lock on live detection") + + self.get_logger().info(message) + else: + self.get_logger().warning(message) + + response.success = success + response.message = message + return response + + def stop_binary_classifier_callback(self, request: Trigger.Request, response: Trigger.Response): + success, message = self.binary_classifier.stop() + + if success: + self.target_object = "" + self.outstanding_detections.clear() + self.get_logger().info(message) + else: + self.get_logger().warning(message) + + response.success = success + response.message = message + return response + + def seed_object_estimate(self, child: str, centroid_map): + # Seed a map-parented object's pose so both its Location and TF frame land on the same centroid. + # Rebuilt Location stays soft/unwarmed (cov=1.0) until its buffer fills. + if child not in self.objects.keys(): + self.get_logger().error(f"seed_object_estimate: unknown object {child}") + return + + offset_pos = self.offset.get_pose().pose.position + + cx = float(centroid_map[0]) + cy = float(centroid_map[1]) + cz = float(centroid_map[2]) + + # rebuild Location centered on the centroid -> topic position = centroid, cov = soft 1.0 + xyz = Point(x=cx, y=cy, z=cz) + rpy = Vector3() # no orientation from the classifier, leave identity + self.objects[child]["location"] = Location( + xyz, rpy, + int(self.get_parameter("buffer_size").value), + tuple(self.get_parameter("quantile").value), + ) + + # TF init_pose cancels the shared offset so map -> offset -> child lands on the centroid + init_pose = Pose() + init_pose.position.x = cx - offset_pos.x + init_pose.position.y = cy - offset_pos.y + init_pose.position.z = cz - offset_pos.z + init_pose.orientation.w = 1.0 + self.objects[child]["init_pose"] = init_pose + def vision_callback(self, detections: Detection3DArray): if self.lock_map: return - closest_object = self.closest_object(detections) + # Bypass normal mapping behavior for binary classifier + if self.binary_classifier.running: + self.handle_binary_classifier_detections(detections) + self.publish_pose() + return - # for det in detections.detections: - # self.get_logger().info(f"slalomi: {det}") + closest_object = self.closest_object(detections) # if no target object set, use closest closest_or_target = closest_object if self.target_object == "" else self.target_object @@ -217,12 +412,7 @@ def vision_callback(self, detections: Detection3DArray): self.get_logger().info(f"Rejecting detection of {result.hypothesis.class_id} because confidence {result.hypothesis.score} is too low") continue - # Pulse LEDs to indicate a detection was received - ledPulse = LedCommand() - ledPulse.target = LedCommand.TARGET_ALU - ledPulse.mode = LedCommand.SINGLETON_FLASH - ledPulse.green = 255 - self.led_pulse_pub.publish(ledPulse) + self.pulse_detection_led() # update pose of object in map update_success, _ = self.try_update_pose(result, detections.header, closest_object) @@ -230,7 +420,28 @@ def vision_callback(self, detections: Detection3DArray): self.outstanding_detections.append(OutstandingDetectionInfo(result, detections.header, closest_object)) self.publish_pose() - + + def handle_binary_classifier_detections(self, detections: Detection3DArray): + for detection in detections.detections: + result_ids = [r.hypothesis.class_id for r in detection.results] + + try: + result_idx = result_ids.index(self.binary_classifier.class_name) + except ValueError: + continue + + result = detection.results[result_idx] + + if result.hypothesis.score < float(self.get_parameter("confidence_cutoff").value): + self.get_logger().info(f"Rejecting detection of {result.hypothesis.class_id} because confidence {result.hypothesis.score} is too low") + continue + + self.pulse_detection_led() + + update_success, _ = self.try_update_binary_classifier_pose(result, detections.header) + + if not update_success: + self.outstanding_detections.append(OutstandingDetectionInfo(result, detections.header, "", True)) def update_outstanding_detections(self): current_time = self.get_clock().now() @@ -239,7 +450,17 @@ def update_outstanding_detections(self): elapsed_nanoseconds = current_time.nanoseconds - (outstanding.det_header.stamp.sec * 1e9) - outstanding.det_header.stamp.nanosec elapsed_seconds = elapsed_nanoseconds / float(1e9) - update_success, error_msg = self.try_update_pose(outstanding.det_result, outstanding.det_header, outstanding.closest_object) + if outstanding.binary_classifier_detection: + if self.binary_classifier.running: + update_success, error_msg = self.try_update_binary_classifier_pose(outstanding.det_result, outstanding.det_header) + now_sec = float(self.get_clock().now().nanoseconds) / 1e9 + self.binary_classifier.age_buffer(now_sec) + else: + update_success = True + error_msg = "BinaryClassifier stopped" + else: + update_success, error_msg = self.try_update_pose(outstanding.det_result, outstanding.det_header, outstanding.closest_object) + if not update_success and not elapsed_seconds > STALE_TIME: oustanding_detections_remaining.append(outstanding) @@ -249,12 +470,10 @@ def update_outstanding_detections(self): self.outstanding_detections = oustanding_detections_remaining - - def try_update_pose(self, result: ObjectHypothesisWithPose, detection_header: Header, closest_object: str): + def transform_detection_to_object_parent(self, result: ObjectHypothesisWithPose, detection_header: Header, child: str): # We have a transform from camera to child we need to transform so # that we have a transform from parrent to child - parent: str = str(self.get_parameter("init_data.{}.parent".format(result.hypothesis.class_id)).value) - child: str = result.hypothesis.class_id + parent: str = str(self.get_parameter("init_data.{}.parent".format(child)).value) # Get the pose that is a transform from camera to child pose: PoseWithCovariance = result.pose @@ -266,20 +485,27 @@ def try_update_pose(self, result: ObjectHypothesisWithPose, detection_header: He detection_header.stamp ) except TransformException as ex: - return False, str(ex) - - # If the current object isnt the closest object and its parent is map we - # aren't going to track its location in favor of offsetting the entire map - update_position = True - update_orientation = True + return False, None, None, str(ex) trans_pose = do_transform_pose_stamped(pose, transform) - - if result.hypothesis.class_id in self.downwards_objects.keys() or "slalom" in result.hypothesis.class_id: # and parent == "map": + if result.hypothesis.class_id in self.downwards_objects.keys(): trans_pose.pose.orientation.x = 0.0 trans_pose.pose.orientation.y = 0.0 trans_pose.pose.orientation.z = 0.0 trans_pose.pose.orientation.w = 1.0 + + return True, trans_pose, parent, "" + + def update_object_with_pose(self, trans_pose, parent: str, child: str, closest_object: str): + if not child in self.objects.keys(): + return False, f"Unknown mapping object {child}" + + update_position = True + update_orientation = True + + # These objects keep their orientation from config (detection yaw is unreliable) + if bool(self.get_parameter("init_data.{}.lock_orientation_to_config".format(child)).value): + update_orientation = False object_location: Location = self.objects[child]["location"] object_location.add_pose(trans_pose.pose, update_position, update_orientation) @@ -299,8 +525,80 @@ def try_update_pose(self, result: ObjectHypothesisWithPose, detection_header: He self.offset.add_pose(offset_pose, True, False) return True, "" - - + + def try_update_pose(self, result: ObjectHypothesisWithPose, detection_header: Header, closest_object: str): + child: str = result.hypothesis.class_id + + update_success, trans_pose, parent, error_msg = self.transform_detection_to_object_parent( + result, + detection_header, + child, + ) + + if not update_success: + return False, error_msg + + return self.update_object_with_pose( + trans_pose, + parent, + child, + closest_object, + ) + + def try_update_binary_classifier_pose(self, result: ObjectHypothesisWithPose, detection_header: Header): + common_target = self.binary_classifier.instance1_name + + update_success, trans_pose, parent, error_msg = self.transform_detection_to_object_parent( + result, + detection_header, + common_target, + ) + + if not update_success: + return False, error_msg + + stamp_sec = float(detection_header.stamp.sec) + float(detection_header.stamp.nanosec) / float(1e9) + now_sec = float(self.get_clock().now().nanoseconds) / float(1e9) + + sample = DetectionSample( + trans_pose.pose.position.x, + trans_pose.pose.position.y, + trans_pose.pose.position.z, + result.hypothesis.score, + stamp_sec, + ) + + assignment = self.binary_classifier.observe(sample, now_sec) + + if not assignment.accepted: + self.get_logger().debug(f"Binary classifier rejected sample: {assignment.reason}") + return True, assignment.reason + + child: str = assignment.target_name + + if not child in self.objects.keys(): + return False, f"BinaryClassifier assigned unknown target {child}" + + child_parent: str = str(self.get_parameter("init_data.{}.parent".format(child)).value) + + # If both binary targets share the same parent, reuse the already-transformed pose + if child_parent != parent: + update_success, trans_pose, parent, error_msg = self.transform_detection_to_object_parent( + result, + detection_header, + child, + ) + + if not update_success: + return False, error_msg + + return self.update_object_with_pose( + trans_pose, + parent, + child, + "", + ) + def closest_object(self, detections: Detection3DArray) -> str: object = "" closest_dist: float = 1000 From f74f6053f0e8f40d05a4867c77d4a357c6d6b591 Mon Sep 17 00:00:00 2001 From: Effo12345 <4p7septipuses@gmail.com> Date: Wed, 10 Jun 2026 22:42:50 -0400 Subject: [PATCH 02/21] Fix param access order --- riptide_mapping/riptide_mapping2/dummydetections.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/riptide_mapping/riptide_mapping2/dummydetections.py b/riptide_mapping/riptide_mapping2/dummydetections.py index 0637654..dc20f2d 100644 --- a/riptide_mapping/riptide_mapping2/dummydetections.py +++ b/riptide_mapping/riptide_mapping2/dummydetections.py @@ -62,9 +62,11 @@ def __init__(self): def declareParams(self): + self.declare_parameter("objects", Parameter.Type.STRING_ARRAY) + self.objects = list(self.get_parameter("objects").value) + self.declare_parameter("timer_period", 0.0) self.declare_parameter("simulate_pool", False) - self.declare_parameter("objects", Parameter.Type.STRING_ARRAY) self.declare_parameter("forward_camera_hfov", 60) self.declare_parameter("forward_camera_vfov", 40) self.declare_parameter("forward_camera_frame", "stereo/left_link") @@ -84,9 +86,8 @@ def declareParams(self): self.declare_parameter(f"detection_data.{object}.pub_invalid_orientation", False) self.declare_parameter(f"detection_data.{object}.min_dist", 0.0) self.declare_parameter(f"detection_data.{object}.max_dist", 0.0) - - self.objects = list(self.get_parameter("objects").value) - + + #TODO: UPDATE ALL THE OTHER NON OBJECT PARAMS LIKE SIMULATE_POOL def updateParams(self, params): for param in params: #set timer to new rate if there is a new rate to set From 8e819e082658e96facaf40baecc16d3db1fd5170 Mon Sep 17 00:00:00 2001 From: Effo12345 <4p7septipuses@gmail.com> Date: Wed, 10 Jun 2026 22:43:17 -0400 Subject: [PATCH 03/21] Make services mapping namespaced --- riptide_mapping/riptide_mapping2/mapping.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/riptide_mapping/riptide_mapping2/mapping.py b/riptide_mapping/riptide_mapping2/mapping.py index fe61d3b..3d9bbf4 100755 --- a/riptide_mapping/riptide_mapping2/mapping.py +++ b/riptide_mapping/riptide_mapping2/mapping.py @@ -136,13 +136,13 @@ def __init__(self): self.create_subscription(Detection3DArray, "detected_objects".format(self.get_namespace()), self.vision_callback, qos_profile_system_default) self.status_pub = self.create_publisher(MappingTargetInfo, "state/mapping", qos_profile_system_default) self.create_service(MappingTarget, "mapping_target", self.target_callback) # Should prob be mapping ns but not changing for compatability for now - self.create_service(Trigger, "~/reset_mapping", self.reset_mapping_callback) + self.create_service(Trigger, "mapping/reset_mapping", self.reset_mapping_callback) # binary classifier services (resolve under this nodes ns) - self.create_service(StartBinaryClassifier, "~/start_binary_classifier", self.start_binary_classifier_callback) - self.create_service(Trigger, "~/freeze_binary_classifier_buffer", self.freeze_binary_classifier_buffer_callback) - self.create_service(Trigger, "~/start_binary_classifier_second", self.start_binary_classifier_second_callback) - self.create_service(Trigger, "~/stop_binary_classifier", self.stop_binary_classifier_callback) + self.create_service(StartBinaryClassifier, "mapping/start_binary_classifier", self.start_binary_classifier_callback) + self.create_service(Trigger, "mapping/freeze_binary_classifier_buffer", self.freeze_binary_classifier_buffer_callback) + self.create_service(Trigger, "mapping/start_binary_classifier_second", self.start_binary_classifier_second_callback) + self.create_service(Trigger, "mapping/stop_binary_classifier", self.stop_binary_classifier_callback) self.led_pulse_pub = self.create_publisher(LedCommand, "command/led", qos_profile_system_default) From ce62c3ca0eab7cfe6d26aa986b77b0e8c5122b8c Mon Sep 17 00:00:00 2001 From: Effo12345 <4p7septipuses@gmail.com> Date: Thu, 11 Jun 2026 23:18:59 -0400 Subject: [PATCH 04/21] Fix classifier service param names --- riptide_mapping/riptide_mapping2/mapping.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/riptide_mapping/riptide_mapping2/mapping.py b/riptide_mapping/riptide_mapping2/mapping.py index 3d9bbf4..97cb30f 100755 --- a/riptide_mapping/riptide_mapping2/mapping.py +++ b/riptide_mapping/riptide_mapping2/mapping.py @@ -249,8 +249,8 @@ def target_callback(self, request: MappingTarget.Request, response: MappingTarge def start_binary_classifier_callback(self, request: StartBinaryClassifier.Request, response: StartBinaryClassifier.Response): class_name = str(request.class_name).strip() - target1 = str(request.frame1_name).strip() - target2 = str(request.frame2_name).strip() + target1 = str(request.object1_name).strip() + target2 = str(request.object2_name).strip() if self.binary_classifier.running: response.success = False From d7faaa29e9a9b9d681fee8db735624b261cf7f8e Mon Sep 17 00:00:00 2001 From: Cameron Tucker <68253750+zehdari@users.noreply.github.com> Date: Thu, 11 Jun 2026 23:29:29 -0400 Subject: [PATCH 05/21] Remove deprecated launch junk --- riptide_mapping/launch/mapping.launch.py | 42 +------------------ .../riptide_mapping2/binary_classifier.py | 1 + 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/riptide_mapping/launch/mapping.launch.py b/riptide_mapping/launch/mapping.launch.py index 7c8a114..307aa73 100644 --- a/riptide_mapping/launch/mapping.launch.py +++ b/riptide_mapping/launch/mapping.launch.py @@ -2,18 +2,9 @@ import launch from ament_index_python.packages import get_package_share_directory from launch.actions import DeclareLaunchArgument, GroupAction -from launch_ros.actions import Node, PushRosNamespace, ComposableNodeContainer -from launch_ros.descriptions import ComposableNode +from launch_ros.actions import Node, PushRosNamespace from launch.substitutions import PathJoinSubstitution, LaunchConfiguration as LC -# cfg_36h11 = { -# "image_transport": "raw", -# "family": "36h11", -# "size": 0.508, -# "max_hamming": 0, -# "z_up": True -# } - config_dir = os.path.join( get_package_share_directory('riptide_mapping2'), 'config' @@ -113,36 +104,5 @@ def generate_launch_description(): ] ), - # ComposableNodeContainer( - # name='tag_container', - # namespace="apriltag", - # package='rclcpp_components', - # executable='component_container', - # composable_node_descriptions=[ - # ComposableNode( - # name='apriltag_36h11', - # package='apriltag_ros', plugin='AprilTagNode', - # remappings=[ - # # This maps the 'raw' images for simplicity of demonstration. - # # In practice, this will have to be the rectified 'rect' images. - # ("image_rect", - # "ffc/zed_node/left/image_rect_color"), - # ("camera_info", - # "ffc/zed_node/left/camera_info"), - # ], - # parameters=[cfg_36h11], - # extra_arguments=[{'use_intra_process_comms': True}], - # ) - # ], - # output='screen' - # ), - - # Node( - # package='tf2_ros', - # executable='static_transform_publisher', - # name='surface_frame_node', - # arguments=["0", "0.4572", "0", "0", "-1.5707", "-1.5707", - # "tag36h11:0", "estimated_origin_frame"] - # ) ], scoped=True) ]) diff --git a/riptide_mapping/riptide_mapping2/binary_classifier.py b/riptide_mapping/riptide_mapping2/binary_classifier.py index 3c77e72..78fe636 100644 --- a/riptide_mapping/riptide_mapping2/binary_classifier.py +++ b/riptide_mapping/riptide_mapping2/binary_classifier.py @@ -434,6 +434,7 @@ def prune(self, now_sec): def buffer_size(self): return self.samples.c + def distance(self, point_a, point_b): return float(numpy.linalg.norm(self.metric_point(point_a) - self.metric_point(point_b))) From 5eb81ba9a457db65f5796ce89a4a2d762f5d6129 Mon Sep 17 00:00:00 2001 From: Cameron Tucker <68253750+zehdari@users.noreply.github.com> Date: Fri, 12 Jun 2026 00:16:29 -0400 Subject: [PATCH 06/21] coderabbit suggested fixes --- riptide_mapping/riptide_mapping2/binary_classifier.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/riptide_mapping/riptide_mapping2/binary_classifier.py b/riptide_mapping/riptide_mapping2/binary_classifier.py index 78fe636..5d9a8c3 100644 --- a/riptide_mapping/riptide_mapping2/binary_classifier.py +++ b/riptide_mapping/riptide_mapping2/binary_classifier.py @@ -102,6 +102,8 @@ def param_name(self, name): return "{}.{}".format(self.param_namespace, name) def declare_params(self): + if self.node is None: + return # defaults come from the shared DEFAULTS dict; the launch-provided yaml overrides them self.node.declare_parameters( namespace="", @@ -431,9 +433,6 @@ def prune(self, now_sec): [sample for sample in self.samples if now_sec - sample.stamp_sec <= self.params.buffer_ttl_sec], maxlen=max(1, self.params.buffer_size), ) - - def buffer_size(self): - return self.samples.c def distance(self, point_a, point_b): return float(numpy.linalg.norm(self.metric_point(point_a) - self.metric_point(point_b))) From 1b642ade14cfcc1496ae74bf6a1516a08113a115 Mon Sep 17 00:00:00 2001 From: Cameron Tucker <68253750+zehdari@users.noreply.github.com> Date: Fri, 12 Jun 2026 18:24:20 -0400 Subject: [PATCH 07/21] RS26 task logic and refactoring --- tensor_detector/config/yolo_orientation.yaml | 108 +- tensor_detector/src/detection.py | 606 ++++++ tensor_detector/src/geometry.py | 121 ++ tensor_detector/src/outputs.py | 106 + tensor_detector/src/pointcloud.py | 91 + tensor_detector/src/yolo_model.py | 27 + tensor_detector/src/yolo_orientation.py | 1988 +++--------------- 7 files changed, 1301 insertions(+), 1746 deletions(-) create mode 100644 tensor_detector/src/detection.py create mode 100644 tensor_detector/src/geometry.py create mode 100644 tensor_detector/src/outputs.py create mode 100644 tensor_detector/src/pointcloud.py create mode 100644 tensor_detector/src/yolo_model.py diff --git a/tensor_detector/config/yolo_orientation.yaml b/tensor_detector/config/yolo_orientation.yaml index 0a1a20e..48f9201 100644 --- a/tensor_detector/config/yolo_orientation.yaml +++ b/tensor_detector/config/yolo_orientation.yaml @@ -2,87 +2,53 @@ ros__parameters: active_camera: "ffc" # Change to "dfc" or "ffc" to switch cameras - torp_top: "shark" - bin_target: "bin_saw" - # ---------- FFC configuration ---------- - # ffc_model: "robosub_2024_v3.pt" - # ffc_class_id_map: "{ - # 0: 'buoy', - # 1: 'gate_sawfish', - # 2: 'mapping_hole', - # 3: 'gate_reefshark', - # 4: 'gate_cold', - # 5: 'bin_temperature', - # 6: 'bin' - # }" - - # ffc_model: "rs25.pt" - # ffc_model: "rs25_8_10_1.pt" - # ffc_class_id_map: "{ - # 0: 'buoy', - # 1: 'mapping_map', - # 2: 'mapping_hole', - # 3: 'gate_reefshark', - # 4: 'gate_cold', - # 5: 'bin_temperature', - # 6: 'bin' - # }" - - #ffc_model: "rs25.pt" ffc_model: "rs25_8_15_2.pt" - # ffc_model: "rs25_3_4_26.pt" ffc_class_id_map: "{ - 0: 'bin', - 1: 'bin_saw', - 2: 'bin_shark', - 3: 'torpedo_shark_top', - 4: 'torpedo_saw_top', - 5: 'bin_pink', - 6: 'bin_yellow', - 7: 'bottle_yellow', - 8: 'gate_saw', - 9: 'gate_shark', - 10: 'slalom_red', - 11: 'spoon_pink', - 12: 'torpedo_hole' + 0: 'blood', + 1: 'buoy', + 2: 'compass', + 3: 'circle', + 4: 'fire', + 5: 'hammer_and_wrench', + 6: 'slalom', + 7: 'sos' }" ffc_threshold: 0.75 ffc_iou: 0.9 # ---------- DFC configuration ---------- dfc_model: "rs25_8_16_dfc.pt" - # dfc_model: "rs25_3_4_26.pt" # new rotationally invariant model - # dfc_model: "rs25_8_15_1_BIN.pt" # New rotationally invariant version with dropout dfc_class_id_map: "{ - 0: 'bin', - 1: 'bin_saw', - 2: 'bin_shark', - 3: 'torpedo_shark_top', - 4: 'torpedo_saw_top', - 5: 'bin_pink', - 6: 'bin_yellow', - 7: 'bottle_yellow', - 8: 'gate_saw', - 9: 'gate_shark', - 10: 'slalom_red', - 11: 'spoon_pink', - 12: 'torpedo_hole' + 0: 'bandage', + 1: 'blood', + 2: 'fire', + 3: 'helmet', + 4: 'nut_and_bolt', + 5: 'pill', + 6: 'plug', + 7: 'warning' }" - # dfc_class_id_map: "{ - # 0: 'bin', - # 1: 'bin_saw', - # 2: 'bin_shark', - # 3: 'torpedo_shark_top', - # 4: 'torpedo_saw_top', - # 5: 'bin_pink', - # 6: 'bin_yellow', - # 7: 'bottle_yellow', - # 8: 'gate_saw', - # 9: 'gate_shark', - # 10: 'slalom_red', - # 11: 'spoon_pink', - # 12: 'torpedo_hole' - # }" + dfc_threshold: 0.75 dfc_iou: 0.9 + +# Full map from CVAT for reference + # dfc_class_id_map: "{ + # 0: 'ambulance', + # 1: 'bandage', + # 2: 'blood', + # 3: 'buoy', + # 4: 'compass', + # 5: 'circle', + # 6: 'fire', + # 7: 'fire_engine', + # 8: 'hammer_and_wrench', + # 9: 'helmet', + # 10: 'nut_and_bolt', + # 11: 'pill', + # 12: 'plug', + # 13: 'slalom', + # 14: 'sos', + # 15: 'warning' + # }" \ No newline at end of file diff --git a/tensor_detector/src/detection.py b/tensor_detector/src/detection.py new file mode 100644 index 0000000..3294287 --- /dev/null +++ b/tensor_detector/src/detection.py @@ -0,0 +1,606 @@ +#!/usr/bin/env python3 +"""Detection processing +Turns YOLO results into Detection3D messages and markers +""" + +# TODO: Make this completely class agnostic, pass class specific logic to a delegator, then to yolo class specific python classes +# Most of the refactor outside of this file is pretty much done, but this is harder to separate +# And move stuff to config files as well + +import math +from dataclasses import dataclass +from typing import Any + +import cv2 +import numpy as np + +from vision_msgs.msg import Detection3DArray +from tf_transformations import quaternion_from_euler, quaternion_multiply +from rclpy.time import Time + +import geometry +import outputs +from outputs import MarkerBuilder +from pointcloud import PointCloudBuilder + + +# Colors used for rviz markers, keyed by the published class name. +COLOR_MAP = { + # Slaloms (slalom_name set by service) + 'slalom_close': (1.0, 0.0, 0.0), + 'slalom_middle': (1.0, 1.0, 0.0), + 'slalom_far': (0.0, 1.0, 0.0), + + # Slalom publishes under slalom_name, this is the default (not sure if we are using the service anymore) + 'slalom_front': (0.0, 1.0, 0.4), + + # Gate combinations + 'gate_repair': (0.0, 1.0, 0.0), + 'gate_rescue': (0.0, 0.5, 1.0), + + # Torpedo stuff + 'torpedo': (0.0, 1.0, 1.0), + 'fire_hole_large': (1.0, 0.4, 0.0), + 'fire_hole_small': (1.0, 0.7, 0.0), + 'blood_hole_large': (0.6, 0.0, 0.0), + 'blood_hole_small': (1.0, 0.0, 0.4), + + # FFC generic planar classes (when not merged into a gate pair) + 'buoy': (0.2, 0.8, 1.0), + 'compass': (0.9, 0.6, 0.1), + 'hammer_and_wrench': (0.4, 0.4, 0.45), + 'sos': (1.0, 0.1, 0.3), + + # DFC generic planar classes + # fire/blood also fall here on dfc, as the torpedo task is disabled + 'bandage': (0.95, 0.85, 0.70), + 'blood': (0.80, 0.0, 0.0), + 'fire': (1.0, 0.5, 0.0), + 'helmet': (1.0, 1.0, 0.0), + 'nut_and_bolt': (0.5, 0.5, 0.5), + 'pill': (0.7, 0.2, 0.9), + 'plug': (0.0, 0.4, 1.0), + 'warning': (1.0, 0.0, 1.0), + + +} + +# Published-name relabels (no class is currently relabeled on publish but good to have) +RELABEL_MAP = {} + +# Classes intercepted by the Torpedo task when it is enabled (ffc) +TORPEDO_CLASSES = {'fire', 'blood', 'circle'} + +# Pairs that, when both are seen in a frame, are merged into one combined detection (union bbox -> centroid) (Gate) +# When only one member is present, it runs through the normal planar path (Octagon) +GATE_PAIRS = [ + (('compass', 'hammer_and_wrench'), 'gate_repair'), + (('buoy', 'sos'), 'gate_rescue'), +] +GATE_PAIR_CLASSES = {c for pair, _ in GATE_PAIRS for c in pair} # This way we dont have to type them twice (python moment) + +SLALOM_CLASS = "slalom" #magic 🪄 + +@dataclass +class SurfaceFit: + """Result of fitting a plane to one detection's surface patch.""" + points: Any # Nx3 inlier points + normal: Any # unit normal, flipped to face the camera + centroid: Any # 3D centroid (bbox center x/y at the fitted plane depth) + quat: Any # orientation from the normal + center2d: tuple # (px, py) bbox center in image coords + conf: Any # detection confidence of the source box + + +@dataclass +class ProcessorConfig: + class_detect_shrink: float = 0.15 + min_points: int = 5 + map_min_area: int = 50 + slalom_history_size: int = 10 + use_incoming_timestamp: bool = True + publish_interval: float = 0.1 # also drives marker lifetime + + +@dataclass +class Frame: + """Everything the processor needs for a single image. Built by the node.""" + image: Any # cv_image (bgr8); feature points get overlaid on it + gray: Any # grayscale of image + depth: Any # depth image (passthrough) + fx: float # camera intrinsics (same values as K below, isolated for easy access) + fy: float + cx: float + cy: float + K: Any # 3x3 intrinsic matrix [[fx,0,cx],[0,fy,cy],[0,0,1]] (useful for numpy lin alg math) + frame_id: str # Tf frame + timestamp: Any # incoming header stamp + class_id_map: dict + conf: float + want_markers: bool = True + want_cloud: bool = True + + +class DetectionProcessor: + def __init__(self, config, logger, now_stamp, tf_buffer): + self.cfg = config + self.log = logger + self._now_stamp = now_stamp # callable lambda (ƛ🍾) -> builtin_interfaces/Time msg + self.tf_buffer = tf_buffer + self._default_normal = geometry.DEFAULT_NORMAL + + # Output things + self.markers = MarkerBuilder(config) + self.cloud = PointCloudBuilder(config.min_points, logger) + + # Persistant states (stuff that lives across frames) + self.plane_normal = None # last fitted plane normal (debug/use) + self.slalom_history = [] + self.slalom_name = 'slalom_front' + self._markers = [] + + # Per-frame states + self._frame = None + self._mask = None + self.slalom_red_detections = [] + + # Torpedo stuff + self.torpedo_fire_box = None + self.torpedo_blood_box = None + self.torpedo_circles = [] + + # When enabled, the torpedo classes are intercepted and + # resolved by process_torpedo_task instead of the default plane-fit path. + # (So blood/fire work for bins) + self.torpedo_enabled = False + + # Gate pairs: class_name -> list of boxes seen this frame + self.gate_pair_boxes = {} + + + ### API + def set_slalom_name(self, name): + self.slalom_name = name + + def set_torpedo_enabled(self, enabled): + """Turn the Task04 fire/blood torpedo logic on (ffc) or off (dfc).""" + self.torpedo_enabled = bool(enabled) + + def process(self, results, frame): + """Run one image through the pipeline. + + Returns (detections, markers_to_publish). The node handles marker + throttling, the point cloud, the annotated image, and publishing. + """ + self._frame = frame + self._reset_frame_state() + self.markers.reset() + + detections = Detection3DArray() + detections.header.frame_id = frame.frame_id + detections.header.stamp = self._stamp(frame) + + if self._mask is None or self._mask.shape[:2] != frame.image.shape[:2]: + self._mask = np.zeros(frame.image.shape[:2], dtype=np.uint8) + + # Build the full-frame segmentation mask + self._mask.fill(0) + for result in results: + for contour in result.masks.xy: + contour = np.array(contour, dtype=np.int32) + cv2.fillPoly(self._mask, [contour], 255) + + # Route each detection + # Class specifics are handled, otherwise generic plane/fit + for result in results: + for box in result.boxes.cpu().numpy(): + if box.conf[0] <= frame.conf: # Technically redundant but extra safety check for now + continue + class_id = box.cls[0] + if class_id not in frame.class_id_map: + continue + + conf = box.conf[0] + name = frame.class_id_map[class_id] + + if self.torpedo_enabled and name in TORPEDO_CLASSES: + self._torpedo_add(name, box) + elif name in GATE_PAIR_CLASSES: + self.gate_pair_boxes.setdefault(name, []).append(box) + elif name == SLALOM_CLASS: + detection_temp = self.create_detection3d_message(box, frame, conf) + if detection_temp and detection_temp.results: + self._stash_slalom(box, detection_temp) + else: + detection = self.create_detection3d_message(box, frame, conf) + if detection: + detections.detections.append(detection) + + # Resolve grouped detections that need the whole frame first + self._resolve_gate_pairs(frame, detections) + + # Torpedo fire/blood (ffc) + if self.torpedo_enabled: + self.process_torpedo_task(frame, detections) + + self._process_slalom(frame, detections) + + # Flush markers built so far; markers added after this (slalom) carry over. + markers_out = self._markers + self._markers = [] + + return detections, markers_out + + def take_point_cloud(self, frame_id, stamp): + """Build and clear the accumulated point cloud (None if empty).""" + return self.cloud.take_cloud(frame_id, stamp) + + ### Helpers + def _reset_frame_state(self): + self.slalom_red_detections = [] + self.torpedo_fire_box = None + self.torpedo_blood_box = None + self.torpedo_circles = [] + self.gate_pair_boxes = {} + + def _stamp(self, frame): + if self.cfg.use_incoming_timestamp: + return frame.timestamp + return self._now_stamp() + + def _stash_slalom(self, box, detection_temp): + result_temp = detection_temp.results[0] + centroid = [ + result_temp.pose.pose.position.x, + result_temp.pose.pose.position.y, + result_temp.pose.pose.position.z, + ] + quat = [ + result_temp.pose.pose.orientation.x, + result_temp.pose.pose.orientation.y, + result_temp.pose.pose.orientation.z, + result_temp.pose.pose.orientation.w, + ] + x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) + self.slalom_red_detections.append({ + 'centroid': centroid, + 'quat': quat, + 'conf': box.conf[0], + 'bbox_width': x_max - x_min, + 'bbox_height': y_max - y_min, + }) + + ### Core dispatch + def create_detection3d_message(self, box, frame, conf): + """Default per-detection path: slalom (depth-sampled centroid) or the + generic planar surface fit. Returns a Detection3D or None.""" + x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) + bbox_width = x_max - x_min + bbox_height = y_max - y_min + + class_id = int(box.cls[0]) + bbox_center_x = (x_min + x_max) / 2 + bbox_center_y = (y_min + y_max) / 2 + class_name = frame.class_id_map.get(class_id, "Unknown") + + # Slalom: depth-sampled centroid, default-facing orientation (mapping overrides it now) + if class_name == SLALOM_CLASS: + depth_value = frame.depth[int(bbox_center_y), int(bbox_center_x)] + if (np.isnan(depth_value) or math.isinf(bbox_center_x) + or math.isinf(bbox_center_y) or math.isinf(depth_value)): + return None + centroid = geometry.pixel_to_3d(bbox_center_x, bbox_center_y, + float(depth_value), + frame.fx, frame.fy, frame.cx, frame.cy) + quat, _ = geometry.normal_to_quaternion(-self._default_normal, + self._default_normal) + detection = self._new_detection(frame) + detection.results.append(self._make_hypothesis(class_name, centroid, quat, conf)) + return detection + + # Generic planar surface fit (everything else) + fit = self._fit_bbox((x_min, y_min, x_max, y_max), frame, conf) + if fit is None: + return None + + self.plane_normal = fit.normal + self._build_marker(frame, fit.quat, fit.centroid, class_name, + bbox_width, bbox_height) + detection = self._new_detection(frame) + detection.results.append(self._make_hypothesis(class_name, fit.centroid, fit.quat, conf)) + return detection + + ### Shared surface fitting + def _fit_surface_from_mask(self, frame, masked_gray_image, x_min, y_min, + bbox_center_x, bbox_center_y, conf): + """goodFeatures -> 3D points -> plane fit + + Returns (camera-facing normal, centroid at the bbox center projected to plane depth, orientation quat), or None if no reliable plane. + This is the default behavior. + """ + good_features = cv2.goodFeaturesToTrack( + masked_gray_image, maxCorners=0, qualityLevel=0.02, minDistance=1) + if good_features is None: + return None + + good_features[:, 0, 0] += x_min + good_features[:, 0, 1] += y_min + feature_points = [pt[0] for pt in good_features] + + points_3d = self._get_3d_points(frame, feature_points) + if points_3d is None or len(points_3d) < self.cfg.min_points: + return None + + normal, _, centroid3 = geometry.fit_plane(points_3d) + centroid = geometry.pixel_to_3d(bbox_center_x, bbox_center_y, centroid3[2], + frame.fx, frame.fy, frame.cx, frame.cy) + if normal[2] > 0: + normal = -normal + quat, _ = geometry.normal_to_quaternion(normal, self._default_normal) + + return SurfaceFit(points=points_3d, normal=normal, centroid=centroid, + quat=quat, center2d=(bbox_center_x, bbox_center_y), conf=conf) + + def _fit_bbox(self, bbox, frame, conf): + """Generic planar surface fit over an arbitrary bbox: shrink -> masked goodFeatures -> plane fit.""" + x_min, y_min, x_max, y_max = map(int, bbox) + shrink_x = (x_max - x_min) * self.cfg.class_detect_shrink + shrink_y = (y_max - y_min) * self.cfg.class_detect_shrink + x0 = int(x_min + shrink_x) + x1 = int(x_max - shrink_x) + y0 = int(y_min + shrink_y) + y1 = int(y_max - shrink_y) + + mask_roi = self._mask[y0:y1, x0:x1] + cropped_gray_image = frame.gray[y0:y1, x0:x1] + masked_gray_image = cv2.bitwise_and(cropped_gray_image, cropped_gray_image, mask=mask_roi) + + bbox_center_x = (x_min + x_max) / 2 + bbox_center_y = (y_min + y_max) / 2 + return self._fit_surface_from_mask( + frame, masked_gray_image, x0, y0, bbox_center_x, bbox_center_y, conf) + + def _fit_symbol(self, box, frame): + """Run the generic surface pipeline on one symbol box (fire/blood).""" + return self._fit_bbox(box.xyxy[0], frame, box.conf[0]) + + ### Torpedo + def _torpedo_add(self, name, box): + if name == "fire": + self.torpedo_fire_box = box + elif name == "blood": + self.torpedo_blood_box = box + elif name == "circle": + self.torpedo_circles.append(box) + + def process_torpedo_task(self, frame, detections): + """Resolve the fire/blood torpedo board: publish the torpedo center and, + when fully visible, the four labeled openings""" + fire = self._fit_symbol(self.torpedo_fire_box, frame) if self.torpedo_fire_box is not None else None + blood = self._fit_symbol(self.torpedo_blood_box, frame) if self.torpedo_blood_box is not None else None + + present = [f for f in (fire, blood) if f is not None] + if not present: + return # no reliable symbol plane this frame; publish nothing + + # Board plane normal (pool both patches when available) + if fire is not None and blood is not None: + pooled = np.vstack([fire.points, blood.points]) + normal, _, _ = geometry.fit_plane(pooled) + if normal is None: + normal = present[0].normal + else: + normal = present[0].normal + normal = np.asarray(normal, dtype=float) + if normal[2] > 0: + normal = -normal + self.plane_normal = normal + board_quat, _ = geometry.normal_to_quaternion(normal, self._default_normal) + + # Plane anchor: midpoint of visible symbol centroids (any on-plane point). + anchor = np.mean(np.array([f.centroid for f in present]), axis=0) + + # Torpedo center via in-plane extent of all visible shapes + centers_2d = [f.center2d for f in present] + for cbox in self.torpedo_circles: + centers_2d.append(self._box_center(cbox)) + + projected = [] + for (px, py) in centers_2d: + pt = self._project_center(px, py, frame, normal, anchor) + if pt is not None: + projected.append(pt) + if not projected: + return + + u, v = geometry.inplane_basis(normal) + origin = projected[0] + us = [float(np.dot(p - origin, u)) for p in projected] + vs = [float(np.dot(p - origin, v)) for p in projected] + torpedo_center = (origin + + ((min(us) + max(us)) / 2.0) * u + + ((min(vs) + max(vs)) / 2.0) * v) + + torpedo_conf = min(self._box_conf(b) for b in + (self.torpedo_fire_box, self.torpedo_blood_box) if b is not None) + self._emit_task(frame, detections, "torpedo", torpedo_center, board_quat, + torpedo_conf, 0.3, 0.3) + + # Hole instance separation (needs both symbols + 4 circles) + if fire is None or blood is None or len(self.torpedo_circles) != 4: + return + + fpx, fpy = fire.center2d + bpx, bpy = blood.center2d + fire_pt = self._project_center(fpx, fpy, frame, normal, anchor) + blood_pt = self._project_center(bpx, bpy, frame, normal, anchor) + if fire_pt is None or blood_pt is None: + return + fire_pt = np.asarray(fire_pt) + blood_pt = np.asarray(blood_pt) + + # Project the holes onto the fire->blood axis and sort + # The two nearest fire go to the fire side, the two nearest blood to the blood side + # This always splits them 2-2 and (should) work at any roll + sep = blood_pt - fire_pt + norm_sep = float(np.linalg.norm(sep)) + if norm_sep < 1e-6: + return + sep = sep / norm_sep + + holes = [] + for cbox in self.torpedo_circles: + cx, cy = self._box_center(cbox) + pt = self._project_center(cx, cy, frame, normal, anchor) + if pt is None: + return # can't resolve all four then publish no holes + pt = np.asarray(pt) + holes.append({'box': cbox, 'pt': pt, + 's': float(np.dot(pt - fire_pt, sep))}) + + holes.sort(key=lambda h: h['s']) + fire_pair, blood_pair = holes[:2], holes[2:] + + self._emit_hole_pair(frame, detections, "fire", fire, fire_pair, board_quat) + self._emit_hole_pair(frame, detections, "blood", blood, blood_pair, board_quat) + + def _emit_hole_pair(self, frame, detections, symbol_name, symbol_fit, pair, quat): + # The opening closest (in 3D) to its symbol is the large one + d0 = float(np.linalg.norm(np.asarray(pair[0]['pt']) - np.asarray(symbol_fit.centroid))) + d1 = float(np.linalg.norm(np.asarray(pair[1]['pt']) - np.asarray(symbol_fit.centroid))) + large, small = (pair[0], pair[1]) if d0 <= d1 else (pair[1], pair[0]) + for hole, size_name in ((large, "large"), (small, "small")): + cw, ch = self._box_size(hole['box']) + self._emit_task(frame, detections, f"{symbol_name}_hole_{size_name}", + hole['pt'], quat, self._box_conf(hole['box']), + cw / 150.0, ch / 150.0) + + def _emit_task(self, frame, detections, class_id, centroid, quat, conf, scale_x, scale_y): + if frame.want_markers: + color = COLOR_MAP.get(class_id, (1.0, 1.0, 1.0)) + self._markers.extend(self.markers.build( + frame.frame_id, self._stamp(frame), quat, centroid, color, scale_x, scale_y)) + detection = self._new_detection(frame) + detection.results.append(self._make_hypothesis(class_id, centroid, quat, conf)) + detections.detections.append(detection) + + def _project_center(self, px, py, frame, normal, anchor): + pt, _ = geometry.ray_plane_intersection(px, py, frame.K, normal, anchor) + return pt + + def _box_center(self, box): + x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) + return (x_min + x_max) / 2, (y_min + y_max) / 2 + + def _box_size(self, box): + x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) + return (x_max - x_min), (y_max - y_min) + + def _box_conf(self, box): + return box.conf[0] + + ### Gate pairs + def _resolve_gate_pairs(self, frame, detections): + """If both were seen this frame, publish ONE combined detection + If only one is present, publish each present box + normally (its own class, standard planar path).""" + for (a, b), gate_name in GATE_PAIRS: + boxes_a = self.gate_pair_boxes.get(a, []) + boxes_b = self.gate_pair_boxes.get(b, []) + if boxes_a and boxes_b: + self._emit_combined_gate(frame, detections, boxes_a + boxes_b, gate_name) + else: + for box in boxes_a + boxes_b: + det = self.create_detection3d_message(box, frame, box.conf[0]) + if det: + detections.detections.append(det) + + def _emit_combined_gate(self, frame, detections, boxes, gate_name): + """Union the member bboxes, fit one plane over the combined region, and + publish it under gate_name (conf = min of the members)""" + xs0, ys0, xs1, ys1 = [], [], [], [] + for box in boxes: + x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) + xs0.append(x_min); ys0.append(y_min); xs1.append(x_max); ys1.append(y_max) + bbox = (min(xs0), min(ys0), max(xs1), max(ys1)) + conf = min(self._box_conf(b) for b in boxes) + + fit = self._fit_bbox(bbox, frame, conf) + if fit is None: + return + self.plane_normal = fit.normal # Stored for debug stuff + bbox_width = bbox[2] - bbox[0] + bbox_height = bbox[3] - bbox[1] + self._build_marker(frame, fit.quat, fit.centroid, gate_name, bbox_width, bbox_height) + detection = self._new_detection(frame) + detection.results.append(self._make_hypothesis(gate_name, fit.centroid, fit.quat, conf)) + detections.detections.append(detection) + + ### Slalom + def _process_slalom(self, frame, detections_array): + """Report the closest slalom_red from history, oriented by tf parent""" + if len(self.slalom_red_detections) > 0: + closest_detection = min(self.slalom_red_detections, key=lambda x: x['centroid'][2]) + self.slalom_history.append({ + 'centroid': closest_detection['centroid'], + 'quat': closest_detection['quat'], + 'conf': closest_detection['conf'], + }) + if len(self.slalom_history) > self.cfg.slalom_history_size: + self.slalom_history.pop(0) + + if self.slalom_history: + closest_in_history = min(self.slalom_history, key=lambda x: x['centroid'][2]) + + parent_frame = "slalom_parent_frame" + try: + parent_quat_tf = self.tf_buffer.lookup_transform( + frame.frame_id, parent_frame, Time()).transform.rotation + detection_quat = [parent_quat_tf.x, parent_quat_tf.y, + parent_quat_tf.z, parent_quat_tf.w] + except Exception: + self.log.warning(f'Pubbing slalom detection with rotation since {parent_frame} not found') + detection_quat = closest_in_history['quat'] + + z_to_x_quat = quaternion_from_euler(0.0, -1.57079632679, 0.0) + corrected_quat = quaternion_multiply(detection_quat, z_to_x_quat) + + detection = self._new_detection(frame) + detection.results.append(self._make_hypothesis( + self.slalom_name, + closest_in_history['centroid'], + corrected_quat, + closest_in_history['conf'])) + + self._build_marker( + frame, corrected_quat, closest_in_history['centroid'], + self.slalom_name, + closest_detection['bbox_width'], + closest_detection['bbox_height']) + detections_array.detections.append(detection) + + self.slalom_red_detections = [] + else: + self.slalom_red_detections = [] + + ### 3D / cloud + def _get_3d_points(self, frame, feature_points): + return self.cloud.extract(frame, feature_points, self._mask) + + ### Messages + def _new_detection(self, frame): + return outputs.new_detection(frame.frame_id, self._stamp(frame)) + + def _make_hypothesis(self, class_name, centroid, quat, conf): + # Apply the publish-name relabel (anchors publish under a different name) + published = RELABEL_MAP.get(class_name, class_name) + return outputs.make_hypothesis(published, centroid, quat, conf) + + def _build_marker(self, frame, quat, centroid, class_name, bbox_width, bbox_height): + if not frame.want_markers: + return + color = COLOR_MAP.get(class_name, (1.0, 1.0, 1.0)) + flat = (class_name == "buoy") + self._markers.extend(self.markers.build( + frame.frame_id, self._stamp(frame), quat, centroid, color, + float(bbox_width) / 150.0, float(bbox_height) / 150.0, flat)) \ No newline at end of file diff --git a/tensor_detector/src/geometry.py b/tensor_detector/src/geometry.py new file mode 100644 index 0000000..051c818 --- /dev/null +++ b/tensor_detector/src/geometry.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +"""Pure geometry helpers for yolo_orientation.""" +import numpy as np +from scipy.spatial.transform import Rotation as R + +# The camera-frame normal a flat, front-facing surface would have +# Don't touch this unless you know what you're doing +DEFAULT_NORMAL = np.array([0.0, 0.0, 1.0]) + + +def pixel_to_3d(u, v, z, fx, fy, cx, cy): + """Back-project a pixel (u, v) at depth z into a 3D camera-frame point.""" + x = (u - cx) * z / fx + y = (v - cy) * z / fy + return [x, y, z] + + +def ray_plane_intersection(u, v, K, normal, p0): + """Intersect the camera ray through pixel (u, v) with the plane (normal, p0). + + Returns (point_3d, t). point_3d is None when the ray is parallel to the + plane (denominator == 0). Scaling of the ray direction does not affect the + intersection point, so the result is independent of normalization. + """ + d = np.linalg.inv(K) @ np.array([u, v, 1.0]) + d = d / np.linalg.norm(d) + denominator = np.dot(normal, d) + if denominator == 0: + return None, None + t = np.dot(normal, p0) / denominator + return t * d, t + + +def fit_plane(points_3d): + """Least-squares plane fit via SVD. + + Returns (normal, d, centroid); (None, None, None) when there are no points. + """ + if len(points_3d) == 0: + return None, None, None + centroid = np.mean(points_3d, axis=0) + _, _, vh = np.linalg.svd(points_3d - centroid) + normal = vh[-1] + normal = normal / np.linalg.norm(normal) + d = -np.dot(normal, centroid) + return normal, d, centroid + + +def rotation_from_normal(normal, default_normal=DEFAULT_NORMAL): + """Rotation that maps default_normal onto normal (scipy Rotation).""" + axis = np.cross(default_normal, normal) + axis_length = np.linalg.norm(axis) + if axis_length == 0: + # Normal is parallel/anti-parallel, rotate 180 deg about an arbitrary axis (goofy ahh rotation) + axis = np.array([1, 0, 0]) + angle = np.pi + else: + axis = axis / axis_length + angle = np.arccos(np.dot(default_normal, normal)) + return R.from_rotvec(axis * angle) + + +def normal_to_quaternion(normal, default_normal=DEFAULT_NORMAL): + """(quat, euler_xyz_degrees) for a plane with the given normal. + + euler is None when no rotation is needed (normal == default_normal). + """ + if np.allclose(normal, default_normal): + return [0.0, 0.0, 0.0, 1.0], None + rotation = rotation_from_normal(normal, default_normal) + return rotation.as_quat(), rotation.as_euler('xyz', degrees=True) + + +def inplane_basis(normal): + """Two orthonormal vectors (u, v) spanning the plane with the given normal. + + The absolute orientation/sign of u and v is arbitrary; callers that need a + consistent 'up' must resolve it themselves. Stable for any normal direction. + """ + normal = np.asarray(normal, dtype=float) + normal = normal / np.linalg.norm(normal) + # Reference axis least aligned with the normal, to avoid a degenerate cross. + ref = np.array([1.0, 0.0, 0.0]) if abs(normal[0]) < 0.9 else np.array([0.0, 1.0, 0.0]) + u = np.cross(normal, ref) + u = u / np.linalg.norm(u) + v = np.cross(normal, u) + v = v / np.linalg.norm(v) + return u, v + + +def is_inside_bbox(inner_bbox, outer_bbox): + inner_x_min, inner_y_min, inner_x_max, inner_y_max = inner_bbox + outer_x_min, outer_y_min, outer_x_max, outer_y_max = outer_bbox + return (inner_x_min >= outer_x_min and inner_x_max <= outer_x_max and + inner_y_min >= outer_y_min and inner_y_max <= outer_y_max) + + +def statistical_outlier_removal(points_3d, k=10, std_ratio=1.0): + """Remove points whose mean distance to k nearest neighbors is an outlier.""" + mean_distances = np.zeros(len(points_3d)) + for i, point in enumerate(points_3d): + distances = np.linalg.norm(points_3d - point, axis=1) + sorted_distances = np.sort(distances) + mean_distances[i] = np.mean(sorted_distances[1:k + 1]) + + mean_dist_global = np.mean(mean_distances) + std_dev = np.std(mean_distances) + + threshold = mean_dist_global + std_ratio * std_dev + filtered_indices = np.where(mean_distances < threshold)[0] + return points_3d[filtered_indices] + + +def radius_outlier_removal(points_3d, radius=1.0, min_neighbors=10): + """Keep points that have more than min_neighbors others within radius.""" + filtered_indices = [] + for i, point in enumerate(points_3d): + distances = np.linalg.norm(points_3d - point, axis=1) + if len(np.where(distances <= radius)[0]) > min_neighbors: + filtered_indices.append(i) + return points_3d[filtered_indices] diff --git a/tensor_detector/src/outputs.py b/tensor_detector/src/outputs.py new file mode 100644 index 0000000..481786e --- /dev/null +++ b/tensor_detector/src/outputs.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +"""ROS output data stuf: detections, hypotheses, markers""" +from scipy.spatial.transform import Rotation as R + +from vision_msgs.msg import (Detection3D, ObjectHypothesisWithPose, + ObjectHypothesis) +from visualization_msgs.msg import Marker + + +def new_detection(frame_id, stamp): + detection = Detection3D() + detection.header.frame_id = frame_id + detection.header.stamp = stamp + return detection + + +def make_hypothesis(class_id, centroid, quat, conf): + """Build an ObjectHypothesisWithPose. class_id is the final published name.""" + hypothesis_with_pose = ObjectHypothesisWithPose() + hypothesis = ObjectHypothesis() + hypothesis.class_id = class_id + # conf may be a numpy scalar (from a YOLO box) or a plain float (synthesized). + hypothesis.score = float(conf.item()) if hasattr(conf, "item") else float(conf) + + hypothesis_with_pose.hypothesis = hypothesis + hypothesis_with_pose.pose.pose.position.x = float(centroid[0]) + hypothesis_with_pose.pose.pose.position.y = float(centroid[1]) + hypothesis_with_pose.pose.pose.position.z = float(centroid[2]) + hypothesis_with_pose.pose.pose.orientation.x = float(quat[0]) + hypothesis_with_pose.pose.pose.orientation.y = float(quat[1]) + hypothesis_with_pose.pose.pose.orientation.z = float(quat[2]) + hypothesis_with_pose.pose.pose.orientation.w = float(quat[3]) + return hypothesis_with_pose + + +class MarkerBuilder: + """Builds the (cube + arrow) marker pair for a pose""" + + def __init__(self, config): + self.cfg = config + self._counter = 0 + + def reset(self): + self._counter = 0 + + def _next_id(self): + self._counter += 1 + return self._counter + + def build(self, frame_id, stamp, quat, centroid, color, scale_x, scale_y, flat=False): + """Return [plane_marker, arrow_marker]. Caller appends to its buffer.""" + lifetime = int(self.cfg.publish_interval * 2.0 * 1e9) + markers = [] + + plane_marker = Marker() + plane_marker.header.frame_id = frame_id + plane_marker.header.stamp = stamp + plane_marker.ns = "detection_markers" + plane_marker.id = self._next_id() + plane_marker.type = Marker.CUBE + plane_marker.action = Marker.ADD + plane_marker.lifetime.nanosec = lifetime + plane_marker.pose.position.x = float(centroid[0]) + plane_marker.pose.position.y = float(centroid[1]) + plane_marker.pose.position.z = float(centroid[2]) + plane_marker.pose.orientation.x = float(quat[0]) + plane_marker.pose.orientation.y = float(quat[1]) + plane_marker.pose.orientation.z = float(quat[2]) + plane_marker.pose.orientation.w = float(quat[3]) + plane_marker.scale.x = float(scale_x) + plane_marker.scale.y = float(scale_y) + plane_marker.scale.z = 0.01 if flat else 0.05 + plane_marker.color.r = color[0] + plane_marker.color.g = color[1] + plane_marker.color.b = color[2] + plane_marker.color.a = 0.8 + markers.append(plane_marker) + + arrow_marker = Marker() + arrow_marker.header.frame_id = frame_id + arrow_marker.header.stamp = stamp + arrow_marker.ns = "orientation_markers" + arrow_marker.id = self._next_id() + arrow_marker.type = Marker.ARROW + arrow_marker.action = Marker.ADD + arrow_marker.lifetime.nanosec = lifetime + arrow_marker.pose.position.x = float(centroid[0]) + arrow_marker.pose.position.y = float(centroid[1]) + arrow_marker.pose.position.z = float(centroid[2]) + + additional_rotation = R.from_euler('y', -90, degrees=True).as_quat() + arrow_quat = (R.from_quat(quat) * R.from_quat(additional_rotation)).as_quat() + arrow_marker.pose.orientation.x = arrow_quat[0] + arrow_marker.pose.orientation.y = arrow_quat[1] + arrow_marker.pose.orientation.z = arrow_quat[2] + arrow_marker.pose.orientation.w = arrow_quat[3] + arrow_marker.scale.x = 1.0 + arrow_marker.scale.y = 0.05 + arrow_marker.scale.z = 0.05 + arrow_marker.color.r = color[0] + arrow_marker.color.g = color[1] + arrow_marker.color.b = color[2] + arrow_marker.color.a = 0.8 + markers.append(arrow_marker) + + return markers diff --git a/tensor_detector/src/pointcloud.py b/tensor_detector/src/pointcloud.py new file mode 100644 index 0000000..7ffda49 --- /dev/null +++ b/tensor_detector/src/pointcloud.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +"""Point Clouds: back-project feature pixels to 3D, filter outliers, +accumulate, and drain into a PointCloud message""" +import cv2 +import numpy as np + +from sensor_msgs.msg import PointCloud +from geometry_msgs.msg import Point32 + +import geometry + +MAX_POINTS = 10000 + + +class PointCloudBuilder: + def __init__(self, min_points, logger): + self.min_points = min_points + self.log = logger + self.accumulated_points = [] + + def extract(self, frame, feature_points, mask): + """Back-project masked feature pixels to 3D, filter, accumulate, return. + + Returns the filtered Nx3 array, or None if too few points survive. + """ + points_3d = [] + for x, y in feature_points: + xi = int(x) + yi = int(y) + if yi >= frame.depth.shape[0] or xi >= frame.depth.shape[1]: + continue + if mask[yi, xi] != 255: + continue + z = frame.depth[yi, xi] + if np.isnan(z) or z == 0: + continue + points_3d.append(geometry.pixel_to_3d(xi, yi, z, + frame.fx, frame.fy, frame.cx, frame.cy)) + + self._overlay(frame, points_3d) + + points_3d = np.array(points_3d) + points_3d = geometry.radius_outlier_removal( + points_3d, min_neighbors=min(10, int(len(points_3d) * 0.8))) + points_3d = geometry.statistical_outlier_removal( + points_3d, k=min(10, int(len(points_3d) * 0.8))) + + if points_3d is not None: + self.accumulated_points.extend(points_3d) + if len(self.accumulated_points) > MAX_POINTS: + self.accumulated_points = self.accumulated_points[-MAX_POINTS:] + if len(points_3d) < self.min_points: + return None + + return points_3d + + def take_cloud(self, frame_id, stamp): + """Build and clear the accumulated cloud (None if empty).""" + if not self.accumulated_points: + return None + cloud = PointCloud() + cloud.header.frame_id = frame_id + cloud.header.stamp = stamp + for point in self.accumulated_points: + cloud.points.append(Point32(x=float(point[0]), + y=float(point[1]), + z=float(point[2]))) + self.accumulated_points.clear() + return cloud + + def _overlay(self, frame, points): + if len(points) == 0: + return + for point in points: + try: + if len(point) < 3: + continue + if point[2] <= 0 or np.isnan(point[2]) or np.isinf(point[2]): + continue + if (np.isnan(point[0]) or np.isinf(point[0]) + or np.isnan(point[1]) or np.isinf(point[1])): + continue + x2d = int(point[0] * frame.fx / point[2] + frame.cx) + y2d = int(point[1] * frame.fy / point[2] + frame.cy) + if 0 <= x2d < frame.image.shape[1] and 0 <= y2d < frame.image.shape[0]: + cv2.circle(frame.image, (x2d, y2d), radius=3, color=(0, 255, 0), thickness=-1) + except (ZeroDivisionError, OverflowError, ValueError): + continue + except Exception as e: + self.log.warning(f"Unexpected error in overlay_points_on_image: {e}") + continue diff --git a/tensor_detector/src/yolo_model.py b/tensor_detector/src/yolo_model.py new file mode 100644 index 0000000..07c75d3 --- /dev/null +++ b/tensor_detector/src/yolo_model.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +"""Thin wrapper around the Ultralytics YOLO model""" +import os +from ultralytics import YOLO + + +class YoloModel: + def __init__(self, model_path, export=False): + self.model = None + self._export = export + self._initialize(model_path) + + def _initialize(self, model_path): + # Prefer a prebuilt .engine next to the .pt if one exists. + engine_model_path = model_path.replace('.pt', '.engine') + if model_path.endswith(".pt") and os.path.exists(engine_model_path): + model_path = engine_model_path + + self.model = YOLO(model_path, task="segment") + + # Optionally export to TensorRT, then reload the freshly built engine. + if self._export and model_path.endswith(".pt"): + self.model.export(format="engine") + self._initialize(engine_model_path) + + def infer(self, image, conf, iou): + return self.model(image, verbose=False, iou=iou, conf=conf) diff --git a/tensor_detector/src/yolo_orientation.py b/tensor_detector/src/yolo_orientation.py index 3fee90b..798ef2b 100644 --- a/tensor_detector/src/yolo_orientation.py +++ b/tensor_detector/src/yolo_orientation.py @@ -1,1696 +1,334 @@ #!/usr/bin/env python3 +"""yolo_orientation node. + +ROS node +parameters, publishers/subscribers, services, the camera lifecycle, and the image/depth/camera_info callbacks + +Per frame it builds a Frame bundle and hands it to a DetectionProcessor +The processor returns detections + markers, which this node publishes. +""" +import os +import time import rclpy from rclpy.node import Node from sensor_msgs.msg import Image, CameraInfo, PointCloud +from visualization_msgs.msg import MarkerArray +from vision_msgs.msg import Detection3DArray from cv_bridge import CvBridge import cv2 -from ultralytics import YOLO import numpy as np -from visualization_msgs.msg import Marker, MarkerArray -from vision_msgs.msg import Detection3DArray, Detection3D, ObjectHypothesisWithPose, ObjectHypothesis -from geometry_msgs.msg import Point32 -from scipy.spatial.transform import Rotation as R -from ament_index_python.packages import get_package_share_directory -import time -import os import yaml -import math +from ament_index_python.packages import get_package_share_directory from std_srvs.srv import SetBool from riptide_msgs2.srv import SetString from tf2_ros.transform_listener import TransformListener from tf2_ros import Buffer -from rclpy.time import Time -from tf_transformations import quaternion_from_euler, quaternion_multiply - -class YOLONode(Node): - def __init__(self): - super().__init__('yolo_orientation') - self.declare_parameters( - namespace='', - parameters=[ - ('active_camera', 'ffc'), # Default camera - ('ffc_model', ''), - ('dfc_model', ''), - ('ffc_class_id_map', ''), - ('dfc_class_id_map', ''), - ('ffc_threshold', 0.9), - ('dfc_threshold', 0.9), - ('ffc_iou', 0.9), - ('dfc_iou', 0.9), - ('robot_namespace', 'talos'), - ('torp_top', 'saw'), - ('bin_target', 'bin_saw') - ] - ) - - self.robot_ns = self.get_parameter(f'robot_namespace').get_parameter_value().string_value - - ########################## - # USER DEFINED PARAMS # - ########################## - self.log_processing_time = False - self.use_incoming_timestamp = True - self.export = False # Whether or not to export .pt file to engine - self.print_camera_info = False # Print the camera info recieved - self.class_detect_shrink = 0.15 # Shrink the detection area around the class (% Between 0 and 1, 1 being full shrink) - self.min_points = 5 # Minimum number of points for SVD - self.publish_interval = 0.1 # 100 milliseconds - self.history_size = 10 # Window size for rolling average smoothing - self.default_normal = np.array([0.0, 0.0, 1.0]) # Default normal for quaternion calculation - self.map_min_area = 50 # 130 - - # Color map for classes published to markers - self.color_map = { - 'bin_target': (1.0, 0.0, 0.0), - 'mapping_map': (0.0, 1.0, 0.0), - 'mapping_hole': (0.0, 0.0, 1.0), - 'mapping_largest_hole': (0.0, 0.0, 1.0), - 'mapping_smallest_hole': (1.0, 0.0, 0.0), - 'gate_hot': (1.0, 1.0, 1.0), - 'slalom_close': (1.0, 0.0, 0.0), - 'slalom_middle': (1.0, 1.0, 0.0), - 'slalom_far': (0.0, 1.0, 0.0), - 'torpedo_sawfish_hole': (1.0, 0.0, 0.0), - 'torpedo_shark_hole': (0.0, 1.0, 0.0), - 'gate_saw': (0.0, 0.0, 1.0), - 'gate_shark': (1.0, 0.0, 0.0) - } - - self.create_publishers() - - # CV and bridge init - self.bridge = CvBridge() - - # Init global vars - self.depth_image = None - self.camera_info_gathered = False - self.depth_info_gathered = False - self.gray_image = None - self.mask = None - self.accumulated_points = [] - self.detection_id_counter = 0 - self.centroid_history = {} - self.orientation_history = {} - self.temp_markers = [] - self.last_publish_time = time.time() - self.open_torpedo_centroid = None - self.open_torpedo_quat = None - self.closed_torpedo_centroid = None - self.closed_torpedo_quat = None - self.holes = [] - self.latest_bbox_class_7 = None - self.latest_bbox_class_8 = None - self.detection_timestamp = None - self.detection_time = None - self.mapping_holes = [] - self.mapping_map_centroid = None - self.mapping_map_quat = None - self.largest_hole = None - self.smallest_hole = None - self.latest_buoy = None - self.plane_normal = None - self.slalom_red_detections = [] - self.active_camera = self.get_parameter('active_camera').get_parameter_value().string_value - self.torp_top = self.get_parameter('torp_top').get_parameter_value().string_value - self.slalom_history = [] - self.slalom_history_size = 10 - self.torpedo_type = None # Will be "shark" or "saw" - self.torpedo_holes = [] - self.torpedo_centroid = None - self.torpedo_quat = None - self.torpedo_top_hole = None - self.torpedo_bottom_hole = None - self.slalom_name = 'slalom_front' - self.bin_target = self.get_parameter('bin_target').get_parameter_value().string_value - - # tf stuff - self.tf_buffer = Buffer() - self.tf_listener = TransformListener(self.tf_buffer, self) - - self.create_switch_service() - - self.create_slalom_switch_service() - - # Set up the camera based on the active_camera parameter - self.setup_camera() - - def create_publishers(self): - # Creating publishers - self.marker_array_publisher = self.create_publisher(MarkerArray, 'visualization_marker_array', 10) - self.publisher = self.create_publisher(Image, 'yolo', 10) - self.point_cloud_publisher = self.create_publisher(PointCloud, 'point_cloud', 10) - self.detection_publisher = self.create_publisher(Detection3DArray, 'detected_objects', 10) - - def delayed_setup(self): - try: - self.setup_camera() - finally: - self.camera_switch_in_progress = False - self.delayed_timer.cancel() - - def create_switch_service(self): - # Create the service for camera switching - self.srv = self.create_service(SetBool, 'set_camera_is_dfc', self.switch_camera_callback) - self.get_logger().info("Camera switch service created. Call to toggle between ffc and dfc cameras") - - def create_slalom_switch_service(self): - self.slalom_srv = self.create_service(SetString, 'set_slalom_type', self.switch_slalom_callback) - self.get_logger().info("Slalom switch service created. Call to change name of pubbed slalom det") - - - def shift_toward_blue(self, img_bgr, blue_boost=0.20, rg_reduce=0.05): - out = img_bgr.astype(np.float32) - out[:, :, 0] *= (1.0 + blue_boost) - out[:, :, 1] *= (1.0 - rg_reduce) - out[:, :, 2] *= (1.0 - rg_reduce) - np.clip(out, 0, 255, out) - return out.astype(np.uint8) - - - def switch_camera_callback(self, request, response): - if getattr(self, 'camera_switch_in_progress', False): - response.success = False - response.message = "Camera switch already in progress." - return response - - self.camera_switch_in_progress = True - - new_camera = 'dfc' if request.data else 'ffc' - old_camera = self.active_camera - - if new_camera == old_camera: - response.success = True - response.message = f"Camera already set to {new_camera}, no change needed" - self.camera_switch_in_progress = False - return response - - self.get_logger().info(f"Switching from {self.active_camera} to {new_camera}") - old_camera = self.active_camera - self.active_camera = new_camera - - # Schedule reconfiguration after a short delay (e.g., 0.1 seconds) - self.delayed_timer = self.create_timer(0.1, self.delayed_setup) - - response.success = True - response.message = f"Successfully switched from {old_camera} to {new_camera}" - return response - - def switch_slalom_callback(self, request, response): - self.slalom_name = request.data - - response.success = True - response.message = f"Successfully set slalom type to {self.slalom_name}" - return response - - def setup_camera(self): - self.get_logger().info(f"Active camera: {self.active_camera}") - - # Set the camera prefix - self.camera_prefix = self.active_camera - - # Set frame ID - self.frame_id = f'{self.robot_ns}/{self.camera_prefix}_left_camera_optical_frame' - - # Get camera-specific parameters - yolo_model = self.get_parameter(f'{self.active_camera}_model').get_parameter_value().string_value - class_id_map_str = self.get_parameter(f'{self.active_camera}_class_id_map').get_parameter_value().string_value - self.conf = self.get_parameter(f'{self.active_camera}_threshold').get_parameter_value().double_value - self.iou = self.get_parameter(f'{self.active_camera}_iou').get_parameter_value().double_value - - self.get_logger().info(f"Yolo Model: {yolo_model}") - self.get_logger().info(f"Class id map str: {class_id_map_str}") - self.get_logger().info(f"Confidence Threshold: {self.conf}") - self.get_logger().info(f"IOU: {self.iou}") - - self.load_class_id_map(class_id_map_str) - self.load_model(yolo_model) - self.reset_collection_variables() - self.destroy_subscriptions() - self.create_subscriptions() - - def load_class_id_map(self, class_id_map_str): - # Load class ID map - self.class_id_map = yaml.safe_load(class_id_map_str) if class_id_map_str else {} - - # Add default class ID map if none provided - if not self.class_id_map: - self.get_logger().info(f"No class id map found, defaulting to:") - if self.active_camera == 'ffc': - self.class_id_map = { - 0: 'bin_target', - 1: 'mapping_map', - 2: 'mapping_hole', - 3: 'gate_hot', - 4: 'gate_cold', - 5: 'bin_temperature', - 6: 'bin' - } - else: # dfc - self.class_id_map = { - 0: 'bin_target' - } - else: - self.get_logger().info(f"Class id map found:") - - if self.active_camera == 'ffc': - # Update internal class_id_map - self.class_id_map.update({ - 21: "mapping_largest_hole", - 22: "mapping_smallest_hole" - }) - - self.get_logger().info(f"{self.class_id_map}") - - def reset_collection_variables(self): - # Reset camera-related variables - self.depth_image = None - self.camera_info_gathered = False - self.depth_info_gathered = False - - def destroy_subscriptions(self): - # Unsubscribe from old topics if subscriptions exist - if hasattr(self, 'zed_info_subscription'): - try: - topic = self.zed_info_subscription.topic_name - except Exception: - topic = "unknown" - self.destroy_subscription(self.zed_info_subscription) - self.get_logger().info(f"Destroying camera info subscription: {topic}") - if hasattr(self, 'depth_info_subscription'): - try: - topic = self.depth_info_subscription.topic_name - except Exception: - topic = "unknown" - self.destroy_subscription(self.depth_info_subscription) - self.get_logger().info(f"Destroying depth info subscription: {topic}") - if hasattr(self, 'image_subscription'): - try: - topic = self.image_subscription.topic_name - except Exception: - topic = "unknown" - self.destroy_subscription(self.image_subscription) - self.get_logger().info(f"Destroying image subscription: {topic}") - if hasattr(self, 'depth_subscription'): - try: - topic = self.depth_subscription.topic_name - except Exception: - topic = "unknown" - self.destroy_subscription(self.depth_subscription) - self.get_logger().info(f"Destroying depth subscription: {topic}") - - def create_subscriptions(self): - # Create new subscriptions - self.zed_info_subscription = self.create_subscription( - CameraInfo, - f'/{self.robot_ns}/{self.camera_prefix}/zed_node/left/camera_info', - self.camera_info_callback, - 1 - ) - self.get_logger().info(f"Creating camera info subcription: /{self.robot_ns}/{self.camera_prefix}/zed_node/left/camera_info") - - self.depth_info_subscription = self.create_subscription( - CameraInfo, - f'/{self.robot_ns}/{self.camera_prefix}/zed_node/depth/camera_info', - self.depth_info_callback, - 1 - ) - self.get_logger().info(f"Creating depth info subcription: /{self.robot_ns}/{self.camera_prefix}/zed_node/depth/camera_info") - - self.image_subscription = self.create_subscription( - Image, - f'/{self.robot_ns}/{self.camera_prefix}/zed_node/left/image_rect_color', - self.image_callback, - 10 - ) - self.get_logger().info(f"Creating image subcription: /{self.robot_ns}/{self.camera_prefix}/zed_node/left/image_rect_color") - - self.depth_subscription = self.create_subscription( - Image, - f'/{self.robot_ns}/{self.camera_prefix}/zed_node/depth/depth_registered', - self.depth_callback, - 10 - ) - self.get_logger().info(f"Creating depth subcription: /{self.robot_ns}/{self.camera_prefix}/zed_node/depth/depth_registered") - - def load_model(self, yolo_model): - # Load model - tensorrt_wrapper_dir = get_package_share_directory("tensor_detector") - yolo_model_path = os.path.join(tensorrt_wrapper_dir, 'weights', yolo_model) - self.get_logger().info(f"Loading model path: {yolo_model_path}") - self.initialize_yolo(yolo_model_path) - - - def initialize_yolo(self, yolo_model_path): - # Check if the .engine version of the model exists - engine_model_path = yolo_model_path.replace('.pt', '.engine') - if yolo_model_path.endswith(".pt") and os.path.exists(engine_model_path): - # If the .engine file exists, use it instead - yolo_model_path = engine_model_path - - self.model = YOLO(yolo_model_path, task="segment") - - # Check if the model needs to be exported - if self.export and yolo_model_path.endswith(".pt"): - self.model.export(format="engine") - # Update the model path to use the .engine file - # Note: This will create a new .engine file if it didn't exist before - self.initialize_yolo(engine_model_path) # Recursive call with the new .engine path - - def is_inside_bbox(self, inner_bbox, outer_bbox): - inner_x_min, inner_y_min, inner_x_max, inner_y_max = inner_bbox - outer_x_min, outer_y_min, outer_x_max, outer_y_max = outer_bbox - - return (inner_x_min >= outer_x_min and inner_x_max <= outer_x_max and - inner_y_min >= outer_y_min and inner_y_max <= outer_y_max) - - def has_subscribers(self, publisher): - return publisher.get_subscription_count() > 0 - def camera_info_callback(self, msg): - if not self.camera_info_gathered: - if self.print_camera_info: - self.get_logger().info(f"Camera info: {msg}") - - self.intrinsic_matrix = np.array(msg.k).reshape((3, 3)) - self.fx = msg.k[0] - self.cx = msg.k[2] - self.fy = msg.k[4] - self.cy = msg.k[5] - - self.distortion_matrix = np.array(msg.d) - - self.camera_info_gathered = True - # self.zed_info_subscription.destroy() - - def depth_info_callback(self, msg): - if not self.depth_info_gathered: - self.depth_intrinsic_matrix = np.array(msg.k).reshape((3, 3)) - self.depth_distortion_matrix = np.array(msg.d) - self.depth_info_gathered = True - # self.depth_info_subscription.destroy() - - def depth_callback(self, msg): - self.depth_image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='passthrough') - - def process_slalom_red_detections(self, detections_array): - """ - Process all slalom_red detections to determine closest, middle, and farthest. - If 3 slaloms are found with proper spacing and aspect ratio, report all. - If 1 or 2 are found, report only the closest (no aspect ratio check). - """ - num_detections = len(self.slalom_red_detections) - - # if num_detections == 3: - # # Validate aspect ratios (height/width >= 2.5) - # valid_detections = [] - # for detection_data in self.slalom_red_detections: - # height = detection_data['bbox_height'] - # width = detection_data['bbox_width'] - # aspect_ratio = height / width if width > 0 else 0 - - # if aspect_ratio >= 2.5: - # valid_detections.append(detection_data) - # else: - # # self.get_logger().warn(f"Slalom rejected: aspect ratio {aspect_ratio:.2f} < 2.5") - # return - - # # Check if we still have 3 valid detections after aspect ratio filtering - # if len(valid_detections) != 3: - # # self.get_logger().warn(f"Only {len(valid_detections)}/3 slaloms meet aspect ratio requirement") - # self.slalom_red_detections = [] - # return - - # # Sort by distance (Z coordinate - depth) - # sorted_detections = sorted(valid_detections, key=lambda x: x['centroid'][2]) - - # # Check minimum spacing between consecutive slaloms (at least 1m apart) - # spacing_valid = True - # for i in range(len(sorted_detections) - 1): - # current_pos = sorted_detections[i]['centroid'] - # next_pos = sorted_detections[i + 1]['centroid'] - - # # Calculate 3D distance between centroids - # distance = ((next_pos[0] - current_pos[0])**2 + - # (next_pos[1] - current_pos[1])**2 + - # (next_pos[2] - current_pos[2])**2)**0.5 - - # if distance < 1.0: # 1 meter minimum spacing - # # self.get_logger().warn(f"Slaloms too close: {distance:.2f}m < 1.0m between slalom {i} and {i+1}") - # spacing_valid = False - # break - - # # Only proceed if spacing is valid - # if not spacing_valid: - # # self.get_logger().warn("Slalom spacing validation failed") - # self.slalom_red_detections = [] - # return - - # # All validations passed - proceed with classification - # # self.get_logger().info("3 valid slaloms found with proper spacing and aspect ratio") - - # # Assign new class names based on distance - # class_names = ['slalom_close', 'slalom_middle', 'slalom_far'] - # for i, detection_data in enumerate(sorted_detections): - # # Create new detection with updated class name - # detection = Detection3D() - # detection.header.frame_id = self.frame_id - # if self.use_incoming_timestamp: - # detection.header.stamp = self.detection_timestamp - # else: - # detection.header.stamp = self.get_clock().now().to_msg() - - # # Create object hypothesis with new class name - # detection.results.append(self.create_object_hypothesis_with_pose( - # class_names[i], - # detection_data['centroid'], - # detection_data['quat'], - # detection_data['conf'] - # )) - - # # Publish marker with new class name - # self.publish_marker( - # detection_data['quat'], - # detection_data['centroid'], - # class_names[i], - # detection_data['bbox_width'], - # detection_data['bbox_height'] - # ) - # detections_array.detections.append(detection) - - # # Clear the list for next frame - # self.slalom_red_detections = [] - - if num_detections > 0: - # Report only the closest one - closest_detection = min(self.slalom_red_detections, key=lambda x: x['centroid'][2]) - # Store closest detection in history (keep last slalom_history_size) - closest_data = { - 'centroid': closest_detection['centroid'], - 'quat': closest_detection['quat'], - 'conf': closest_detection['conf'] - } - self.slalom_history.append(closest_data) - if len(self.slalom_history) > self.slalom_history_size: - self.slalom_history.pop(0) +from detection import DetectionProcessor, ProcessorConfig, Frame +from yolo_model import YoloModel - # Find the closest one from history based on Z coordinate - if self.slalom_history: - closest_in_history = min(self.slalom_history, key=lambda x: x['centroid'][2]) - #self.get_logger().info(f"Closest slalom in history: [{closest_in_history['centroid'][0]:.2f}, {closest_in_history['centroid'][1]:.2f}, {closest_in_history['centroid'][2]:.2f}]") - # self.get_logger().info(f"Frames: parent {parent_frame}, self.frame_id ") - # Always use slalom_parent's yaw for detection - parent_frame = "slalom_parent_frame" - detection_quat = None - try: - # Detections need to be in camera frame - parent_quat_tf = self.tf_buffer.lookup_transform(self.frame_id, parent_frame, Time()).transform.rotation - detection_quat = [ - parent_quat_tf.x, - parent_quat_tf.y, - parent_quat_tf.z, - parent_quat_tf.w - ] - except: - self.get_logger().warning(f'Pubbing slalom detection with rotation since {parent_frame} not found') - detection_quat = closest_in_history['quat'] - # Fun unknown offset for 90 deg - z_to_x_quat = quaternion_from_euler(0.0, -1.57079632679, 0.0) - corrected_quat = quaternion_multiply(detection_quat, z_to_x_quat) - # self.get_logger().info(f'Pubbing slalom with quat {corrected_quat}') - - - # Create detection using closest from history - detection = Detection3D() - detection.header.frame_id = self.frame_id - if self.use_incoming_timestamp: - detection.header.stamp = self.detection_timestamp - else: - detection.header.stamp = self.get_clock().now().to_msg() - - detection.results.append(self.create_object_hypothesis_with_pose( - self.slalom_name, - closest_in_history['centroid'], - corrected_quat, - closest_in_history['conf'] - )) - - self.publish_marker( - corrected_quat, - closest_in_history['centroid'], - self.slalom_name, - closest_detection['bbox_width'], # Use current frame's bbox dimensions - closest_detection['bbox_height'] - ) - detections_array.detections.append(detection) - - # # Repeat publication of the closest slalom to maintain heading through course - # detection = Detection3D() - # detection.header.frame_id = self.frame_id - # if self.use_incoming_timestamp: - # detection.header.stamp = self.detection_timestamp - # else: - # detection.header.stamp = self.get_clock().now().to_msg() - - # detection.results.append(self.create_object_hypothesis_with_pose( - # 'slalom_front', - # closest_in_history['centroid'], - # closest_in_history['quat'], - # closest_in_history['conf'] - # )) - - # self.publish_marker( - # closest_in_history['quat'], - # closest_in_history['centroid'], - # 'slalom_front', - # closest_detection['bbox_width'], # Use current frame's bbox dimensions - # closest_detection['bbox_height'] - # ) - # detections_array.detections.append(detection) - - self.slalom_red_detections = [] - - else: - # No valid detections - self.slalom_red_detections = [] - - def image_callback(self, msg: Image): - - if self.log_processing_time: - self.detection_time = time.time() - - if self.depth_image is None or not self.camera_info_gathered: - self.get_logger().warning("Skipping image because either no depth image or camera info is available.", throttle_duration_sec=1) - return - - cv_image = self.bridge.imgmsg_to_cv2(msg, "bgr8") - # cv_image = self.shift_toward_blue(cv_image, blue_boost=0.2, rg_reduce=0.05) - self.gray_image = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY) - if cv_image is None: - return - results = self.model(cv_image, verbose=False, iou=self.iou, conf=self.conf) - - detections = Detection3DArray() - detections.header.frame_id = self.frame_id - self.detection_timestamp = msg.header.stamp - if self.use_incoming_timestamp: - detections.header.stamp = msg.header.stamp - else: - detections.header.stamp = self.get_clock().now().to_msg() - - if self.mask is None or self.mask.shape[:2] != cv_image.shape[:2]: - self.mask = np.zeros(cv_image.shape[:2], dtype=np.uint8) - - # Reset mapping holes each image - self.mapping_holes = [] - self.torpedo_holes = [] - self.slalom_red_detections = [] - self.torpedo_top_hole = None - self.torpedo_bottom_hole = None - self.largest_hole = None - self.smallest_hole = None - - for result in results: - for box in result.boxes.cpu().numpy(): - if box.conf[0] <= self.conf: - continue - class_id = box.cls[0] - - if class_id in self.class_id_map: - conf = box.conf[0] - #self.get_logger().info(f"class id: {class_id}") - # If its a hole, store it, otherwise make the detection message - if self.class_id_map[class_id] == "mapping_hole": - - #self.get_logger().info(f"class id: {class_id}") - x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) - if self.use_incoming_timestamp: - self.holes.append(((x_min, y_min, x_max, y_max), self.detection_timestamp)) - else: - self.holes.append(((x_min, y_min, x_max, y_max), self.get_clock().now().to_msg())) - self.mapping_holes.append(box) - #self.get_logger().info(f"Holes after adding: {len(self.holes)}") - #self.get_logger().info(f"holes: {len(self.mapping_holes)}") - if self.class_id_map[class_id] == "torpedo_hole": - - #self.get_logger().info(f"class id: {class_id}") - x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) - if self.use_incoming_timestamp: - self.holes.append(((x_min, y_min, x_max, y_max), self.detection_timestamp)) - else: - self.holes.append(((x_min, y_min, x_max, y_max), self.get_clock().now().to_msg())) - self.torpedo_holes.append(box) - #self.get_logger().info(f"Holes after adding: {len(self.holes)}") - #self.get_logger().info(f"holes: {len(self.mapping_holes)}") - elif class_id in self.class_id_map and self.class_id_map[class_id] == "slalom_red": - # Don't create detection immediately, store for later processing - detection_temp = self.create_detection3d_message(box, cv_image, conf) - if detection_temp and detection_temp.results: - # Extract the centroid and quaternion from the detection - result_temp= detection_temp.results[0] - centroid = [ - result_temp.pose.pose.position.x, - result_temp.pose.pose.position.y, - result_temp.pose.pose.position.z - ] - quat = [ - result_temp.pose.pose.orientation.x, - result_temp.pose.pose.orientation.y, - result_temp.pose.pose.orientation.z, - result_temp.pose.pose.orientation.w - ] - - # Store detection data for sorting - x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) - bbox_width = x_max - x_min - bbox_height = y_max - y_min - - self.slalom_red_detections.append({ - 'centroid': centroid, - 'quat': quat, - 'conf': box.conf[0], - 'bbox_width': bbox_width, - 'bbox_height': bbox_height - }) - else: - detection = self.create_detection3d_message(box, cv_image, conf) - - if detection: - detections.detections.append(detection) - - self.mask.fill(0) - for contour in result.masks.xy: - contour = np.array(contour, dtype=np.int32) - cv2.fillPoly(self.mask, [contour], 255) - mask_msg = self.bridge.cv2_to_imgmsg(self.mask,encoding="mono8") - #self.mask_publisher.publish(mask_msg) - - - # Create detection3d for the holes if there are 4 - if len(self.mapping_holes) == 4: - #self.get_logger().info(f"holes: {len(self.mapping_holes)}") - self.find_smallest_and_largest_holes() - - if self.smallest_hole is not None: - class_id = self.smallest_hole.cls[0] - conf = self.smallest_hole.conf[0] - detection = self.create_detection3d_message(self.smallest_hole, cv_image, conf, "smallest") - if detection: - detections.detections.append(detection) - else: - self.get_logger().warning("No smallest hole found.") - - if self.largest_hole is not None: - class_id = self.largest_hole.cls[0] - conf = self.largest_hole.conf[0] - detection = self.create_detection3d_message(self.largest_hole, cv_image, conf, "largest") - if detection: - detections.detections.append(detection) - else: - self.get_logger().warning("No largest hole found.") - - if len(self.torpedo_holes) == 2: - #self.get_logger().info(f"holes: {len(self.mapping_holes)}") - self.find_top_and_bottom_holes() - - - if self.torpedo_top_hole is not None: - class_id = self.torpedo_top_hole.cls[0] - conf = self.torpedo_top_hole.conf[0] - detection = self.create_detection3d_message(self.torpedo_top_hole, cv_image, conf, "smallest") - if detection: - detections.detections.append(detection) - else: - self.get_logger().warning("No top hole found.") - - if self.torpedo_bottom_hole is not None: - class_id = self.torpedo_bottom_hole.cls[0] - conf = self.torpedo_bottom_hole.conf[0] - detection = self.create_detection3d_message(self.torpedo_bottom_hole, cv_image, conf, "largest") - if detection: - detections.detections.append(detection) - else: - self.get_logger().warning("No bottom hole found.") - - self.publish_markers(self.temp_markers) - self.temp_markers = [] # Clear the list for the next frame - - annotated_frame = results[0].plot() - - self.publish_accumulated_point_cloud() - - if self.has_subscribers(self.publisher): - annotated_msg = self.bridge.cv2_to_imgmsg(annotated_frame, encoding="bgr8") - self.publisher.publish(annotated_msg) - - self.process_slalom_red_detections(detections) - - # if not self.torpedo_seen and len(self.holes) > 1 and self.torpedo_centroid is not None and self.torpedo_quat is not None: - # detections.detections.append(self.spoof_torpedo()) - self.torpedo_seen = False - self.cleanup_old_holes(age_threshold=2.0) - if self.log_processing_time: - self.detection_time = time.time() - self.detection_time - self.get_logger().info(f"Total time (ms): {self.detection_time * 1000}") - self.get_logger().info(f"FPS: {1/self.detection_time}") - # self.get_logger().info(f"detections: {detections}") - if self.has_subscribers(self.detection_publisher): - self.detection_publisher.publish(detections) - self.detection_id_counter = 0 - - def get_hole_size(self, hole): - x_min, y_min, x_max, y_max = map(int, hole.xyxy[0]) - hole_width = x_max - x_min - hole_height = y_max - y_min - hole_size = hole_height*hole_width - return hole_size - - # def find_smallest_and_largest_holes(self): - # hole_sizes = [] - # for hole in self.mapping_holes: - # hole_size = self.get_hole_size(hole) - - # if self.largest_hole is None: - # self.largest_hole = hole - # else: - # largest_hole_size = self.get_hole_size(self.largest_hole) - # if hole_size > largest_hole_size: - # self.largest_hole = hole - - # if self.smallest_hole is None: - # self.smallest_hole = hole - # else: - # smallest_hole_size = self.get_hole_size(self.smallest_hole) - # if hole_size < smallest_hole_size: - # self.smallest_hole = hole - - def find_top_and_bottom_holes(self): - if self.plane_normal is None: - self.get_logger().warning("Plane normal not defined. Cannot compute hole positions.") - return - if self.torpedo_centroid is None: - self.get_logger().warning("Centroid not defined. Cannot compute hole positions.") - return - - hole_positions = [] - for hole in self.torpedo_holes: - x_min, y_min, x_max, y_max = map(int, hole.xyxy[0]) - bbox_center_x = (x_min + x_max) / 2 - bbox_center_y = (y_min + y_max) / 2 - - # Calculate 3D position using plane intersection - d = np.linalg.inv(self.intrinsic_matrix) @ np.array([bbox_center_x, bbox_center_y, 1.0]) - d = d / np.linalg.norm(d) - - n = self.plane_normal - p0 = self.torpedo_centroid - - numerator = np.dot(n, p0) - denominator = np.dot(n, d) - if denominator == 0: - self.get_logger().warning(f"Denominator zero for hole center ({bbox_center_x}, {bbox_center_y}). Skipping this hole.") - continue - t = numerator / denominator - if t <= 0: - self.get_logger().warning(f"Intersection behind the camera for hole center ({bbox_center_x}, {bbox_center_y}). Skipping this hole.") - continue - point_3d = t * d - - # Store hole with its 3D position and Y coordinate for sorting - hole_positions.append((hole, point_3d, point_3d[1])) - #self.get_logger().info(f"Hole position computed: Y={point_3d[1]}") - - if not hole_positions: - self.get_logger().warning("No valid hole positions computed.") - return - - # Sort holes based on Y coordinate (height) - hole_positions.sort(key=lambda x: x[2]) - - self.torpedo_bottom_hole = hole_positions[-1][0] # Lower Y = bottom - self.torpedo_top_hole = hole_positions[0][0] # Higher Y = top - - #self.get_logger().info(f"Bottom hole Y: {hole_positions[0][2]}") - #self.get_logger().info(f"Top hole Y: {hole_positions[-1][2]}") - - def find_smallest_and_largest_holes(self): - if self.plane_normal is None or self.mapping_map_centroid is None: - self.get_logger().warning("Plane normal or centroid not defined. Cannot compute hole sizes.") - return - - hole_sizes = [] - for hole in self.mapping_holes: - x_min, y_min, x_max, y_max = map(int, hole.xyxy[0]) - corners_2d = [ - (x_min, y_min), - (x_max, y_min), - (x_max, y_max), - (x_min, y_max) - ] - corners_3d = [] - for (u, v) in corners_2d: - d = np.linalg.inv(self.intrinsic_matrix) @ np.array([u, v, 1.0]) - n = self.plane_normal - p0 = self.mapping_map_centroid - - numerator = np.dot(n, p0) - denominator = np.dot(n, d) - if denominator == 0: - self.get_logger().warning(f"Denominator zero for point ({u}, {v}). Skipping this corner.") - continue - t = numerator / denominator - if t <= 0: - self.get_logger().warning(f"Intersection behind the camera for point ({u}, {v}). Skipping this corner.") - continue - point_3d = t * d - corners_3d.append(point_3d) - - if len(corners_3d) == 4: - width_vector = corners_3d[1] - corners_3d[0] - height_vector = corners_3d[3] - corners_3d[0] - width = np.linalg.norm(width_vector) - height = np.linalg.norm(height_vector) - hole_size = width * height - hole_sizes.append((hole, hole_size)) - #self.get_logger().info(f"Hole size computed: {hole_size}") - else: - self.get_logger().warning(f"Not enough valid corners for hole. Expected 4, got {len(corners_3d)}") - continue - - if not hole_sizes: - self.get_logger().warning("No valid hole sizes computed.") - return - - # Sort holes based on hole_size - hole_sizes.sort(key=lambda x: x[1]) - - self.smallest_hole = hole_sizes[0][0] - self.largest_hole = hole_sizes[-1][0] - - #self.get_logger().info(f"Smallest hole size: {hole_sizes[0][1]}") - #self.get_logger().info(f"Largest hole size: {hole_sizes[-1][1]}") - - def cleanup_old_holes(self, age_threshold=2.0): - # Get the current time as a builtin_interfaces.msg.Time object - current_time = self.get_clock().now().to_msg() - - # for bbox, timestamp in self.holes: - # self.get_logger().info(f"Time for cleanup: {((current_time.sec - timestamp.sec) + (current_time.nanosec - timestamp.nanosec) * 1e-9)}") - # Filter out holes older than the specified age threshold - self.holes = [(bbox, timestamp) for bbox, timestamp in self.holes - if ((current_time.sec - timestamp.sec) + (current_time.nanosec - timestamp.nanosec) * 1e-9) < age_threshold] - - def generate_unique_detection_id(self): - # Increment and return the counter to get a unique ID for each detection - self.detection_id_counter += 1 - return self.detection_id_counter - - def create_detection3d_message(self, box, cv_image, conf, hole_scale=None): - x_min, y_min, x_max, y_max = map(int, box.xyxy[0]) - bbox = (x_min, y_min, x_max, y_max) - bbox_width = x_max - x_min - bbox_height = y_max - y_min - - class_id = int(box.cls[0]) - - bbox_center_x = (x_min + x_max) / 2 - bbox_center_y = (y_min + y_max) / 2 - - class_name = self.class_id_map.get(class_id, "Unknown") - #self.get_logger().info(f"class name: {class_name}") - if class_name == "mapping_map": - - map_width = x_max - x_min - map_height = y_max - y_min - map_area = max(map_width,map_height) - #self.get_logger().info(f"map max: {map_area}") - if map_area < self.map_min_area: - self.get_logger().info(f"Not Publishing: map area {map_area} < {self.map_min_area}") - return None - self.get_logger().info(f"Publishing: map area {map_area} >= {self.map_min_area}") - #self.get_logger().info(f"publishing map") - self.latest_bbox_class_1 = (x_min, y_min, x_max, y_max) - elif class_name in ["torpedo_saw_top", "torpedo_shark_top"]: - - torpedo_width = x_max - x_min - torpedo_height = y_max - y_min - torpedo_area = max(torpedo_width,torpedo_height) - #self.get_logger().info(f"map max: {map_area}") - if torpedo_area < self.map_min_area: - self.get_logger().info(f"Not Publishing: map area {torpedo_area} < {self.map_min_area}") - return None - self.get_logger().info(f"Publishing: map area {torpedo_area} >= {self.map_min_area}") - #self.get_logger().info(f"publishing map") - self.latest_bbox_class_1 = (x_min, y_min, x_max, y_max) - # Replace the torpedo_hole detection logic in create_detection3d_message: - - elif class_name == "torpedo_hole": - if self.torpedo_centroid is not None and self.torpedo_quat is not None and self.latest_bbox_class_1 and self.is_inside_bbox(bbox, self.latest_bbox_class_1): - if self.plane_normal is None: - return None - d = np.linalg.inv(self.intrinsic_matrix) @ np.array([bbox_center_x, bbox_center_y, 1.0]) - d = d / np.linalg.norm(d) - - # Plane normal and point - n = self.plane_normal # From SVD - p0 = self.torpedo_centroid # Centroid of the plane - - # Compute t - numerator = np.dot(n, p0) - denominator = np.dot(n, d) - if denominator == 0: - return None # Avoid division by zero - - t = numerator / denominator - hole_position = t * d - - # Update centroid and orientation - hole_centroid = hole_position - hole_quat = self.torpedo_quat - - # Determine hole class name based on torpedo type and hole scale - if self.torp_top is None: - return None - self.get_logger().info(f"torpedo top: {self.torp_top}") - self.get_logger().info(f"hole scale: {hole_scale}") - if hole_scale == "smallest": # Top hole lol - if self.torp_top == "shark": - class_name = "torpedo_shark_hole" # Shark top -> shark hole - else: # torpedo_type == "saw" - class_name = "torpedo_sawfish_hole" # Saw top -> saw hole - elif hole_scale == "largest": # Bottom hole robosub moment the spaghet is 🤌 - if self.torp_top == "shark": - class_name = "torpedo_sawfish_hole" # Shark top -> saw hole (bottom) - else: # torpedo_type == "saw" - class_name = "torpedo_shark_hole" # Saw top -> shark hole (bottom) - else: - return None - - self.publish_marker(hole_quat, hole_centroid, class_name, bbox_width, bbox_height) - - # Create Detection3D message - detection = Detection3D() - detection.header.frame_id = self.frame_id - if self.use_incoming_timestamp: - detection.header.stamp = self.detection_timestamp - else: - detection.header.stamp = self.get_clock().now().to_msg() - detection.results.append(self.create_object_hypothesis_with_pose(class_name, hole_centroid, hole_quat, conf)) - return detection - elif class_name == "mapping_hole": - if self.mapping_map_centroid is not None and self.mapping_map_quat is not None and self.latest_bbox_class_1 and self.is_inside_bbox(bbox, self.latest_bbox_class_1): - #hole_quat = self.mapping_map_quat - #hole_centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, self.mapping_map_centroid[2]) - - # if self.mapping_map_centroid[2] > 5: - # return None - if self.plane_normal is None: - return None - d = np.linalg.inv(self.intrinsic_matrix) @ np.array([bbox_center_x, bbox_center_y, 1.0]) - d = d / np.linalg.norm(d) - - # Plane normal and point - n = self.plane_normal # From SVD - p0 = self.mapping_map_centroid # Centroid of the plane - - # Compute t - numerator = np.dot(n, p0) - denominator = np.dot(n, d) - if denominator == 0: - return None # Avoid division by zero - - t = numerator / denominator - hole_position = t * d - - # Update centroid and orientation - hole_centroid = hole_position - hole_quat = self.mapping_map_quat - - if hole_scale == "smallest": - class_name = "torpedo_shark_hole" - elif hole_scale == "largest": - class_name = "torpedo_sawfish_hole" - else: - return None - - self.publish_marker(hole_quat, hole_centroid, class_name, bbox_width, bbox_height) - - # Create Detection3D message - detection = Detection3D() - detection.header.frame_id = self.frame_id - if self.use_incoming_timestamp: - detection.header.stamp = self.detection_timestamp - else: - detection.header.stamp = self.get_clock().now().to_msg() - detection.results.append(self.create_object_hypothesis_with_pose(class_name, hole_centroid, hole_quat, conf)) - return detection - - # elif class_name == "torpedo_open": - # self.latest_bbox_class_7 = (x_min, y_min, x_max, y_max) - # elif class_name == "torpedo_closed": - # self.latest_bbox_class_8 = (x_min, y_min, x_max, y_max) - # elif class_name == "torpedo_hole": - # if self.open_torpedo_centroid is not None and self.open_torpedo_quat is not None and self.latest_bbox_class_7 and self.is_inside_bbox(bbox, self.latest_bbox_class_7): - # class_name = "torpedo_open_hole" - # hole_quat = self.open_torpedo_quat - # hole_centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, self.open_torpedo_centroid[2]) - # elif self.closed_torpedo_centroid is not None and self.closed_torpedo_quat is not None and self.latest_bbox_class_8 and self.is_inside_bbox(bbox, self.latest_bbox_class_8): - # class_name = "torpedo_closed_hole" - # hole_quat = self.closed_torpedo_quat - # hole_centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, self.closed_torpedo_centroid[2]) - # else: - # return None - - # if self.use_incoming_timestamp: - # self.holes.append(((x_min, y_min, x_max, y_max), self.detection_timestamp)) - # else: - # self.holes.append(((x_min, y_min, x_max, y_max), self.get_clock().now().to_msg())) - - - # self.publish_marker(hole_quat, hole_centroid, class_name, bbox_width, bbox_height) - - # # Create Detection3D message - # detection = Detection3D() - # detection.header.frame_id = self.frame_id - # if self.use_incoming_timestamp: - # detection.header.stamp = self.detection_timestamp - # else: - # detection.header.stamp = self.get_clock().now().to_msg() - # detection.results.append(self.create_object_hypothesis_with_pose(class_name, hole_centroid, hole_quat, conf)) - # return detection - - if class_name == "slalom_red": - shrink_x = (x_max - x_min) * 0.3 - shrink_y = (y_max - y_min) * self.class_detect_shrink - else: - # Calculate the shrink size based on the class_detect_shrink percentage - shrink_x = (x_max - x_min) * self.class_detect_shrink - shrink_y = (y_max - y_min) * self.class_detect_shrink - - # Adjust the bounding box coordinates to exclude the edges - x_min = int(x_min + shrink_x) - x_max = int(x_max - shrink_x) - y_min = int(y_min + shrink_y) - y_max = int(y_max - shrink_y) - - # Extract the region of interest based on the bounding box - mask_roi = self.mask[y_min:y_max, x_min:x_max] - cropped_gray_image = self.gray_image[y_min:y_max, x_min:x_max] - masked_gray_image = cv2.bitwise_and(cropped_gray_image, cropped_gray_image, mask=mask_roi) - - if class_name == "mapping_map": - # Prepare the ROI mask, excluding the holes - mask_roi = self.mask[y_min:y_max, x_min:x_max].copy() # Work on a copy to avoid modifying the original - - # Dynamic padding calculation based on bounding box size - padding_x = int((x_max - x_min) * 0.1) # 10% of the bounding box width - padding_y = int((y_max - y_min) * 0.1) # 10% of the bounding box height - #self.get_logger().info(f"holes for exclusion count: {len(self.holes)}") - - self.get_logger().info(f"Holes: {len(self.holes)}") - for hole_bbox, _ in self.holes: - hole_x_min, hole_y_min, hole_x_max, hole_y_max = hole_bbox - adjusted_hole_x_min = max(hole_x_min - x_min - padding_x, 0) - adjusted_hole_y_min = max(hole_y_min - y_min - padding_y, 0) - adjusted_hole_x_max = min(hole_x_max - x_min + padding_x, mask_roi.shape[1]) - adjusted_hole_y_max = min(hole_y_max - y_min + padding_y, mask_roi.shape[0]) - - # Set the hole region in mask_roi to 0 to exclude it from feature detection - mask_roi[adjusted_hole_y_min:adjusted_hole_y_max, adjusted_hole_x_min:adjusted_hole_x_max] = 0 - - # Apply morphological operations to refine the exclusion zones - kernel = np.ones((5, 5), np.uint8) - mask_roi = cv2.dilate(mask_roi, kernel, iterations=1) - mask_roi = cv2.erode(mask_roi, kernel, iterations=1) - - # Continue with feature detection using the adjusted mask_roi - masked_gray_image = cv2.bitwise_and(cropped_gray_image, cropped_gray_image, mask=mask_roi) - - if class_name in ["torpedo_shark_top", "torpedo_saw_top"]: - # Prepare the ROI mask, excluding the holes - mask_roi = self.mask[y_min:y_max, x_min:x_max].copy() # Work on a copy to avoid modifying the original - - # Dynamic padding calculation based on bounding box size - padding_x = int((x_max - x_min) * 0.1) # 10% of the bounding box width - padding_y = int((y_max - y_min) * 0.1) # 10% of the bounding box height - #self.get_logger().info(f"holes for exclusion count: {len(self.holes)}") - - self.get_logger().info(f"Holes: {len(self.holes)}") - for hole_bbox, _ in self.holes: - hole_x_min, hole_y_min, hole_x_max, hole_y_max = hole_bbox - adjusted_hole_x_min = max(hole_x_min - x_min - padding_x, 0) - adjusted_hole_y_min = max(hole_y_min - y_min - padding_y, 0) - adjusted_hole_x_max = min(hole_x_max - x_min + padding_x, mask_roi.shape[1]) - adjusted_hole_y_max = min(hole_y_max - y_min + padding_y, mask_roi.shape[0]) - - # Set the hole region in mask_roi to 0 to exclude it from feature detection - mask_roi[adjusted_hole_y_min:adjusted_hole_y_max, adjusted_hole_x_min:adjusted_hole_x_max] = 0 - - # Apply morphological operations to refine the exclusion zones - kernel = np.ones((5, 5), np.uint8) - mask_roi = cv2.dilate(mask_roi, kernel, iterations=1) - mask_roi = cv2.erode(mask_roi, kernel, iterations=1) - - # Continue with feature detection using the adjusted mask_roi - masked_gray_image = cv2.bitwise_and(cropped_gray_image, cropped_gray_image, mask=mask_roi) - - # elif class_name == "slalom_close": - # depth_value = self.depth_image[int(bbox_center_y), int(bbox_center_x)] - # centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, float(depth_value)) - # quat, _ = self.calculate_quaternion_and_euler_angles(-self.default_normal) - - # self.publish_marker(quat, centroid, class_name, bbox_width, bbox_height) - - # # Create Detection3D message - # detection = Detection3D() - # detection.header.frame_id = self.frame_id - # if self.use_incoming_timestamp: - # detection.header.stamp = self.detection_timestamp - # else: - # detection.header.stamp = self.get_clock().now().to_msg() - - # # Set the pose - # class_name = "slalom_close" - # detection.results.append(self.create_object_hypothesis_with_pose(class_name, centroid, quat, conf)) - - # return detection - - - - # elif class_name == "slalom_red": - # depth_value = self.depth_image[int(bbox_center_y), int(bbox_center_x)] - # centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, float(depth_value)) - # quat, _ = self.calculate_quaternion_and_euler_angles(-self.default_normal) - - # self.publish_marker(quat, centroid, class_name, bbox_width, bbox_height) - - - # # Create Detection3D message - # detection = Detection3D() - # detection.header.frame_id = self.frame_id - # if self.use_incoming_timestamp: - # detection.header.stamp = self.detection_timestamp - # else: - # detection.header.stamp = self.get_clock().now().to_msg() - - # # Set the pose - # class_name = "slalom_close" - # detection.results.append(self.create_object_hypothesis_with_pose(class_name, centroid, quat, conf)) - - # return detection - - elif class_name == "slalom_red": - # Sample the depth value at the center of the bounding box - depth_value = self.depth_image[int(bbox_center_y), int(bbox_center_x)] - # self.get_logger().info(f"bbox_center_x: {bbox_center_x}") - # self.get_logger().info(f"bbox_center_y: {bbox_center_y}") - # self.get_logger().info(f"depth: {depth_value}") - if np.isnan(depth_value) or math.isinf(bbox_center_x) or math.isinf(bbox_center_y) or math.isinf(depth_value): - #self.get_logger().info("rejecting slalom_red") - return None - centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, float(depth_value)) - quat, _ = self.calculate_quaternion_and_euler_angles(-self.default_normal) - # self.publish_marker(quat, centroid, class_name, bbox_width, bbox_height) - - # Create Detection3D message - detection = Detection3D() - detection.header.frame_id = self.frame_id - if self.use_incoming_timestamp: - detection.header.stamp = self.detection_timestamp - else: - detection.header.stamp = self.get_clock().now().to_msg() - - # Set the pose - #class_name = "bin_target" - detection.results.append(self.create_object_hypothesis_with_pose(class_name, centroid, quat, conf)) - - return detection - elif class_name in ["torpedo_open", "torpedo_closed"]: - # Prepare the ROI mask, excluding the holes - mask_roi = self.mask[y_min:y_max, x_min:x_max].copy() # Work on a copy to avoid modifying the original - - # Padding for exclusion zone - padding = 10 - self.get_logger().info(f"Holes: {len(self.holes)}") - for hole_bbox, _ in self.holes: - # For simplicity, let's assume hole_bbox is a tuple of (hole_x_min, hole_y_min, hole_x_max, hole_y_max) - # You might need to adjust the coordinates based on the ROI's position - hole_x_min, hole_y_min, hole_x_max, hole_y_max = hole_bbox - adjusted_hole_x_min = max(hole_x_min - x_min - padding, 0) - adjusted_hole_y_min = max(hole_y_min - y_min - padding, 0) - adjusted_hole_x_max = min(hole_x_max - x_min + padding, mask_roi.shape[1]) - adjusted_hole_y_max = min(hole_y_max - y_min + padding, mask_roi.shape[0]) - - # Set the hole region in mask_roi to 0 to exclude it from feature detection - mask_roi[adjusted_hole_y_min:adjusted_hole_y_max, adjusted_hole_x_min:adjusted_hole_x_max] = 0 - - # Continue with feature detection using the adjusted mask_roi - masked_gray_image = cv2.bitwise_and(cropped_gray_image, cropped_gray_image, mask=mask_roi) - - if class_name == "Bin": - class_name = "bin_target" - - #self.get_logger().info(f"class det3d: {class_name}") - # Detect features within the object's bounding box - good_features = cv2.goodFeaturesToTrack(masked_gray_image, maxCorners=0, qualityLevel=0.02, minDistance=1) - - if good_features is not None: - #self.get_logger().info(f"good features: {class_name}") - good_features[:, 0, 0] += x_min # Adjust X coordinates - good_features[:, 0, 1] += y_min # Adjust Y coordinates - - # Convert features to a list of (x, y) points - feature_points = [pt[0] for pt in good_features] - - # min_depth_point = [] - # for point in feature_points: - # if self.depth_image[point[0],point[1]] < self.depth_image[min_depth_point[0], min_depth_point[1]]: - # min_depth_point = [point[0],point[1]] - - - - # Get 3D points from feature points - points_3d = self.get_3d_points(feature_points, cv_image) - - if points_3d is not None and len(points_3d) >= self.min_points: - normal, _, centroid = self.fit_plane_to_points(points_3d) - - centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, centroid[2]) - - if normal[2] > 0: - normal = -normal +class YOLONode(Node): + def __init__(self): + super().__init__('yolo_orientation') + self.declare_parameters( + namespace='', + parameters=[ + ### YAML Params + ('active_camera', 'ffc'), + ('ffc_model', ''), + ('dfc_model', ''), + ('ffc_class_id_map', ''), + ('dfc_class_id_map', ''), + ('ffc_threshold', 0.9), + ('dfc_threshold', 0.9), + ('ffc_iou', 0.9), + ('dfc_iou', 0.9), + ('robot_namespace', 'talos'), + + ### Tuning (can be in YAML, but don't need to be) + ('class_detect_shrink', 0.0), # Shrinks the mask around the class + ('min_points', 5), # Minimum points required for SVD + ('publish_interval', 0.1), # For visualization markers (also drives lifetime) + ('slalom_history_size', 10), # The closest slalom from history is published + ('use_incoming_timestamp', True), # Timestamp for detection comes from image callback msg + ('log_processing_time', False), + ('export', False), # Export model + ('print_camera_info', False), + ('torpedo_task_camera', 'ffc'), # Determines which camera will do weird stuff with blood/fire for now (should only be ffc) + ] + ) + + self.robot_ns = self.get_parameter('robot_namespace').get_parameter_value().string_value + self.active_camera = self.get_parameter('active_camera').get_parameter_value().string_value + + # Node-level tunables + self.log_processing_time = self.get_parameter('log_processing_time').get_parameter_value().bool_value + self.use_incoming_timestamp = self.get_parameter('use_incoming_timestamp').get_parameter_value().bool_value + self.export = self.get_parameter('export').get_parameter_value().bool_value + self.print_camera_info = self.get_parameter('print_camera_info').get_parameter_value().bool_value + self.publish_interval = self.get_parameter('publish_interval').get_parameter_value().double_value + self.torpedo_task_camera = self.get_parameter('torpedo_task_camera').get_parameter_value().string_value + + self.create_publishers() + + self.bridge = CvBridge() + self.depth_image = None + self.camera_info_gathered = False + self.last_publish_time = time.time() + + # tf + self.tf_buffer = Buffer() + self.tf_listener = TransformListener(self.tf_buffer, self) + + # The detection logic class + self.detector = DetectionProcessor( + config=self._build_processor_config(), + logger=self.get_logger(), + now_stamp=lambda: self.get_clock().now().to_msg(), + tf_buffer=self.tf_buffer, + ) + + self.create_switch_service() + self.create_slalom_switch_service() + + self.setup_camera() + + def _build_processor_config(self): + return ProcessorConfig( + class_detect_shrink=self.get_parameter('class_detect_shrink').get_parameter_value().double_value, + min_points=self.get_parameter('min_points').get_parameter_value().integer_value, + slalom_history_size=self.get_parameter('slalom_history_size').get_parameter_value().integer_value, + use_incoming_timestamp=self.use_incoming_timestamp, + publish_interval=self.publish_interval, + ) + + def create_publishers(self): + self.marker_array_publisher = self.create_publisher(MarkerArray, '~/visualization_marker_array', 10) + self.publisher = self.create_publisher(Image, '~/yolo', 10) + self.point_cloud_publisher = self.create_publisher(PointCloud, '~/point_cloud', 10) + self.detection_publisher = self.create_publisher(Detection3DArray, 'detected_objects', 10) + + ### Services + def create_switch_service(self): + self.srv = self.create_service(SetBool, 'set_camera_is_dfc', self.switch_camera_callback) + self.get_logger().info("Camera switch service created. Call to toggle between ffc and dfc cameras") + + def create_slalom_switch_service(self): + self.slalom_srv = self.create_service(SetString, 'set_slalom_type', self.switch_slalom_callback) + self.get_logger().info("Slalom switch service created. Call to change name of pubbed slalom det") + + def switch_camera_callback(self, request, response): + if getattr(self, 'camera_switch_in_progress', False): + response.success = False + response.message = "Camera switch already in progress." + return response + + self.camera_switch_in_progress = True + + new_camera = 'dfc' if request.data else 'ffc' + old_camera = self.active_camera + + if new_camera == old_camera: + response.success = True + response.message = f"Camera already set to {new_camera}, no change needed" + self.camera_switch_in_progress = False + return response + + self.get_logger().info(f"Switching from {self.active_camera} to {new_camera}") + old_camera = self.active_camera + self.active_camera = new_camera + + # Reconfigure after a short delay. + self.delayed_timer = self.create_timer(0.1, self.delayed_setup) + + response.success = True + response.message = f"Successfully switched from {old_camera} to {new_camera}" + return response + + def switch_slalom_callback(self, request, response): + self.detector.set_slalom_name(request.data) + response.success = True + response.message = f"Successfully set slalom type to {request.data}" + return response + + def delayed_setup(self): + try: + self.setup_camera() + finally: + self.camera_switch_in_progress = False + self.delayed_timer.cancel() + + ### Cammera lifecycle + def setup_camera(self): + self.get_logger().info(f"Active camera: {self.active_camera}") + self.camera_prefix = self.active_camera + self.frame_id = f'{self.robot_ns}/{self.camera_prefix}_left_camera_optical_frame' + + yolo_model = self.get_parameter(f'{self.active_camera}_model').get_parameter_value().string_value + class_id_map_str = self.get_parameter(f'{self.active_camera}_class_id_map').get_parameter_value().string_value + self.conf = self.get_parameter(f'{self.active_camera}_threshold').get_parameter_value().double_value + self.iou = self.get_parameter(f'{self.active_camera}_iou').get_parameter_value().double_value + + self.get_logger().info(f"Yolo Model: {yolo_model}") + self.get_logger().info(f"Class id map str: {class_id_map_str}") + self.get_logger().info(f"Confidence Threshold: {self.conf}") + self.get_logger().info(f"IOU: {self.iou}") + + self.load_class_id_map(class_id_map_str) + + # Task profile: torpedo (fire/blood) logic runs only on the chosen camera (ffc really, but generic here cause why not) + # On the other camera those classes fall through to the standard path (so bins works like normal) + self.detector.set_torpedo_enabled(self.active_camera == self.torpedo_task_camera) + + weights_dir = os.path.join(get_package_share_directory("tensor_detector"), 'weights') + model_path = os.path.join(weights_dir, yolo_model) + self.get_logger().info(f"Loading model path: {model_path}") + self.model = YoloModel(model_path, export=self.export) + + self.reset_collection_variables() + self.destroy_subscriptions() + self.create_subscriptions() + + def load_class_id_map(self, class_id_map_str): + # YAML is the single source of truth for the class map + self.class_id_map = yaml.safe_load(class_id_map_str) if class_id_map_str else {} + if not self.class_id_map: + # Not crashing out here because there's if the other camera config is empty after switch the node would crash + self.get_logger().warning("No class_id_map provided in params; no detections will be produced.") + + self.get_logger().info(f"Class id map: {self.class_id_map}") + + def reset_collection_variables(self): + self.depth_image = None + self.camera_info_gathered = False + + def destroy_subscriptions(self): + for attr in ('zed_info_subscription', 'image_subscription', 'depth_subscription'): + if hasattr(self, attr): + sub = getattr(self, attr) + try: + topic = sub.topic_name + except Exception: + topic = "unknown" + self.destroy_subscription(sub) + self.get_logger().info(f"Destroying subscription: {topic}") + + def create_subscriptions(self): + base = f'/{self.robot_ns}/{self.camera_prefix}/zed_node' + + self.zed_info_subscription = self.create_subscription( + CameraInfo, f'{base}/left/camera_info', self.camera_info_callback, 1) + self.get_logger().info(f"Creating camera info subcription: {base}/left/camera_info") + + self.image_subscription = self.create_subscription( + Image, f'{base}/left/image_rect_color', self.image_callback, 10) + self.get_logger().info(f"Creating image subcription: {base}/left/image_rect_color") + + self.depth_subscription = self.create_subscription( + Image, f'{base}/depth/depth_registered', self.depth_callback, 10) + self.get_logger().info(f"Creating depth subcription: {base}/depth/depth_registered") + + ### Callbacks + def has_subscribers(self, publisher): + return publisher.get_subscription_count() > 0 + + def camera_info_callback(self, msg): + if not self.camera_info_gathered: + if self.print_camera_info: + self.get_logger().info(f"Camera info: {msg}") + self.intrinsic_matrix = np.array(msg.k).reshape((3, 3)) + self.fx = msg.k[0] + self.cx = msg.k[2] + self.fy = msg.k[4] + self.cy = msg.k[5] + self.camera_info_gathered = True + + def depth_callback(self, msg): + self.depth_image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='passthrough') + + def _stamp(self, msg): + if self.use_incoming_timestamp: + return msg.header.stamp + return self.get_clock().now().to_msg() + + ### THE MEAT + def image_callback(self, msg: Image): + if self.log_processing_time: + start_time = time.time() + + if self.depth_image is None or not self.camera_info_gathered: + self.get_logger().warning( + "Skipping image because either no depth image or camera info is available.", + throttle_duration_sec=1) + return + + # Get the image + cv_image = self.bridge.imgmsg_to_cv2(msg, "bgr8") + gray_image = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY) + if cv_image is None: + return + + # Run inference + results = self.model.infer(cv_image, conf=self.conf, iou=self.iou) + + # Store everything we need in the frame dataclass 🤌 + frame = Frame( + image=cv_image, + gray=gray_image, + depth=self.depth_image, + fx=self.fx, fy=self.fy, cx=self.cx, cy=self.cy, + K=self.intrinsic_matrix, + frame_id=self.frame_id, + timestamp=msg.header.stamp, + class_id_map=self.class_id_map, + conf=self.conf, + want_markers=self.has_subscribers(self.marker_array_publisher), + want_cloud=self.has_subscribers(self.point_cloud_publisher), + ) + + # The generic planar and task specific detection logic + detections, markers = self.detector.process(results, frame) + + # Publish markers for visualization + if markers and self.has_subscribers(self.marker_array_publisher): + now = time.time() + if now - self.last_publish_time > self.publish_interval: + marker_array = MarkerArray() + marker_array.markers = markers + self.last_publish_time = now + self.marker_array_publisher.publish(marker_array) + + # Publish GFTT Point cloud for visualization + if self.has_subscribers(self.point_cloud_publisher): + cloud = self.detector.take_point_cloud(self.frame_id, self._stamp(msg)) + if cloud is not None: + self.point_cloud_publisher.publish(cloud) + + # Publish annotated frame for visualization + if self.has_subscribers(self.publisher): + annotated_frame = results[0].plot() + self.publisher.publish(self.bridge.cv2_to_imgmsg(annotated_frame, encoding="bgr8")) + + # Publish detections for mapping + if self.has_subscribers(self.detection_publisher): + self.detection_publisher.publish(detections) + + # Debug log + if self.log_processing_time: + elapsed = time.time() - start_time + self.get_logger().info(f"Total time (ms): {elapsed * 1000}") + self.get_logger().info(f"FPS: {1 / elapsed}") - self.plane_normal = normal - quat, _ = self.calculate_quaternion_and_euler_angles(normal) - - self.get_logger().info(f"Class name: {class_name}") - if class_name == "torpedo_open": - self.open_torpedo_centroid = centroid - self.open_torpedo_quat = quat - elif class_name == "torpedo_closed": - self.closed_torpedo_centroid = centroid - self.closed_torpedo_quat = quat - elif class_name == "mapping_map": - self.mapping_map_centroid = centroid - self.mapping_map_quat = quat - #class_name == "gate_sawfish" - class_name = "torpedo" - elif class_name == self.bin_target: - class_name = "bin_target" - elif class_name in ["torpedo_shark_top", "torpedo_saw_top"]: - self.torpedo_centroid = centroid - self.torpedo_quat = quat - if class_name == "torpedo_shark_top": - self.torpedo_type = "shark" - else: - self.torpedo_type = "saw" - - # When calling publish_marker, pass these dimensions along with other required information - self.publish_marker(quat, centroid, class_name, bbox_width, bbox_height) - - # Create Detection3D message - detection = Detection3D() - detection.header.frame_id = self.frame_id - - if self.use_incoming_timestamp: - detection.header.stamp = self.detection_timestamp - else: - detection.header.stamp = self.get_clock().now().to_msg() - - # Set the pose - detection.results.append(self.create_object_hypothesis_with_pose(class_name, centroid, quat, conf)) - - return detection - - # else: - # self.get_logger().info(f"wtf: {class_name}") - # if self.latest_buoy is not None and class_name == "buoy": - # centroid = self.calculate_centroid(bbox_center_x, bbox_center_y, self.latest_buoy[2]) - # quat, _ = self.calculate_quaternion_and_euler_angles(-self.default_normal) - # self.publish_marker(quat, centroid, class_name, bbox_width, bbox_height) - # detection = Detection3D() - # detection.header.frame_id = self.frame_id - # if self.use_incoming_timestamp: - # detection.header.stamp = self.detection_timestamp - # else: - # detection.header.stamp = self.get_clock().now().to_msg() - - # # Set the pose - # detection.results.append(self.create_object_hypothesis_with_pose(class_name, centroid, quat, conf)) - - # return detection - - # return None - - def calculate_centroid(self, center_x, center_y, z): - center_3d_x = (center_x - self.cx) * z / self.fx - center_3d_y = (center_y - self.cy) * z / self.fy - return [center_3d_x, center_3d_y, z] - - def create_object_hypothesis_with_pose(self, class_name, centroid, quat, conf): - hypothesis_with_pose = ObjectHypothesisWithPose() - hypothesis = ObjectHypothesis() - - hypothesis.class_id = class_name +def main(args=None): + rclpy.init(args=args) + yolo_node = YOLONode() + rclpy.spin(yolo_node) + yolo_node.destroy_node() + rclpy.shutdown() - #temp - if class_name == "mapping_map": - hypothesis.class_id = "gate_cold" # Gaslight the robot - if class_name in ["torpedo_shark_top", "torpedo_saw_top"]: - hypothesis.class_id = "torpedo" - - - hypothesis.score = conf.item() # Convert from numpy float to float - - hypothesis_with_pose.hypothesis = hypothesis - hypothesis_with_pose.pose.pose.position.x = centroid[0] - hypothesis_with_pose.pose.pose.position.y = centroid[1] - hypothesis_with_pose.pose.pose.position.z = centroid[2] - hypothesis_with_pose.pose.pose.orientation.x = quat[0] - hypothesis_with_pose.pose.pose.orientation.y = quat[1] - hypothesis_with_pose.pose.pose.orientation.z = quat[2] - hypothesis_with_pose.pose.pose.orientation.w = quat[3] - - return hypothesis_with_pose - - def publish_accumulated_point_cloud(self): - if not self.has_subscribers(self.point_cloud_publisher): - return # Skip if no subscribers - - if not self.accumulated_points: - return # Skip if there are no points - - # Prepare the PointCloud message - cloud = PointCloud() - cloud.header.frame_id = self.frame_id - if self.use_incoming_timestamp: - cloud.header.stamp = self.detection_timestamp - else: - cloud.header.stamp = self.get_clock().now().to_msg() - - - # Convert accumulated 3D points to Point32 messages and add to the PointCloud - for point in self.accumulated_points: - cloud.points.append(Point32(x=float(point[0]), y=float(point[1]), z=float(point[2]))) - - # Publish the accumulated point cloud - self.point_cloud_publisher.publish(cloud) - - # Clear the accumulated points after publishing - self.accumulated_points.clear() - - def overlay_points_on_image(self, image, points): - """Draw circles on the image for each point with safety checks""" - if len(points) == 0: - return - - for point in points: - try: - # Check for valid point structure - if len(point) < 3: - continue - - # Check for valid z-coordinate to avoid division by zero - if point[2] <= 0 or np.isnan(point[2]) or np.isinf(point[2]): - continue - - # Check for valid x and y coordinates - if np.isnan(point[0]) or np.isinf(point[0]) or np.isnan(point[1]) or np.isinf(point[1]): - continue - - # Transform the 3D point back to 2D - x2d = int(point[0] * self.fx / point[2] + self.cx) - y2d = int(point[1] * self.fy / point[2] + self.cy) - - # Check if the projected point is within image bounds - if (0 <= x2d < image.shape[1] and 0 <= y2d < image.shape[0]): - cv2.circle(image, (x2d, y2d), radius=3, color=(0, 255, 0), thickness=-1) - - except (ZeroDivisionError, OverflowError, ValueError): - # Silently continue on mathematical errors - continue - except Exception as e: - # Log unexpected errors but continue processing - self.get_logger().warning(f"Unexpected error in overlay_points_on_image: {e}") - continue - - def get_3d_points(self, feature_points, cv_image): - points_3d = [] - - - for x, y in feature_points: - xi = int(x) - yi = int(y) - - # Make sure the point is on the image - if yi >= self.depth_image.shape[0] or xi >= self.depth_image.shape[1]: - continue - - # Make sure the point is on the mask - if self.mask[yi, xi] != 255: - continue - - z = self.depth_image[yi, xi] - if np.isnan(z) or z == 0: - continue - - point_3d = self.calculate_centroid(xi, yi, z) - points_3d.append(point_3d) - - # Now, overlay points on the image - self.overlay_points_on_image(cv_image, points_3d) - - # Prepare PointCloud message - cloud = PointCloud() - cloud.header.frame_id = self.frame_id # Adjust the frame ID as necessary - - if self.use_incoming_timestamp: - cloud.header.stamp = self.detection_timestamp - else: - cloud.header.stamp = self.get_clock().now().to_msg() - - # Convert points to a numpy array - points_3d = np.array(points_3d) - - # Filter outlier points - points_3d = self.radius_outlier_removal(points_3d, min_neighbors=min(10,int(len(points_3d)*0.8))) - points_3d = self.statistical_outlier_removal(points_3d, k=min(10,int(len(points_3d) * 0.8))) - # self.get_logger().info(f"points3d: {len(points_3d)}") - if points_3d is not None: - self.accumulated_points.extend(points_3d) # Add the new points to the accumulated list - - # Optionally, limit the size of the accumulated points to prevent unbounded growth - max_points = 10000 # Example limit, adjust based on your needs - if len(self.accumulated_points) > max_points: - self.accumulated_points = self.accumulated_points[-max_points:] - - if len(points_3d) < self.min_points: - return None - - return points_3d - - def statistical_outlier_removal(self, points_3d, k=10, std_ratio=1.0): - """ - Remove statistical outliers from the point cloud. - - :param points_3d: Numpy array of 3D points - :param k: Number of nearest neighbors to use for mean distance calculation - :param std_ratio: Standard deviation ratio threshold - :return: Filtered array of 3D points - """ - mean_distances = np.zeros(len(points_3d)) - for i, point in enumerate(points_3d): - distances = np.linalg.norm(points_3d - point, axis=1) - sorted_distances = np.sort(distances) - mean_distances[i] = np.mean(sorted_distances[1:k+1]) - - mean_dist_global = np.mean(mean_distances) - std_dev = np.std(mean_distances) - - threshold = mean_dist_global + std_ratio * std_dev - filtered_indices = np.where(mean_distances < threshold)[0] - return points_3d[filtered_indices] - - def radius_outlier_removal(self, points_3d, radius=1.0, min_neighbors=10): - """ - Remove radius outliers from the point cloud. - - :param points_3d: Numpy array of 3D points - :param radius: The radius within which to count neighbors - :param min_neighbors: Minimum number of neighbors within the radius for the point to be kept - :return: Filtered array of 3D points - """ - filtered_indices = [] - for i, point in enumerate(points_3d): - distances = np.linalg.norm(points_3d - point, axis=1) - if len(np.where(distances <= radius)[0]) > min_neighbors: - filtered_indices.append(i) - - return points_3d[filtered_indices] - - def fit_plane_to_points(self, points_3d): - try: - if len(points_3d) == 0: - self.get_logger().warning("No 3D points available for plane fitting.") - return None, None, None - centroid = np.mean(points_3d, axis=0) - u, s, vh = np.linalg.svd(points_3d - centroid) - normal = vh[-1] - normal = normal / np.linalg.norm(normal) - d = -np.dot(normal, centroid) - return normal, d, centroid - except: - pass - - def calculate_quaternion_and_euler_angles(self, normal): - - if np.allclose(normal, self.default_normal): - quat = [0.0, 0.0, 0.0, 1.0] # No rotation needed - euler_angles = None - else: - rotation = self.calculate_rotation(normal) - quat = rotation.as_quat() - euler_angles = rotation.as_euler('xyz',degrees=True) - - return quat, euler_angles - - def calculate_rotation(self, normal): - - # Compute rotation axis (cross product) and angle (dot product) - axis = np.cross(self.default_normal, normal) - axis_length = np.linalg.norm(axis) - if axis_length == 0: - # Normal is in the opposite direction - axis = np.array([1, 0, 0]) - angle = np.pi - else: - axis /= axis_length # Normalize the rotation axis - angle = np.arccos(np.dot(self.default_normal, normal)) - - # Convert axis-angle to quaternion - rotation = R.from_rotvec(axis * angle) - - return rotation - - def publish_marker(self, quat, centroid, class_name, bbox_width, bbox_height): - if not self.has_subscribers(self.marker_array_publisher): - return - - # Create a plane marker - plane_marker = Marker() - plane_marker.header.frame_id = self.frame_id - if self.use_incoming_timestamp: - plane_marker.header.stamp = self.detection_timestamp - else: - plane_marker.header.stamp = self.get_clock().now().to_msg() - plane_marker.ns = "detection_markers" - plane_marker.id = self.generate_unique_detection_id() - plane_marker.type = Marker.CUBE - plane_marker.action = Marker.ADD - - # Set marker lifetime (auto-delete after this duration) - plane_marker.lifetime.nanosec = int(self.publish_interval * 2.0 * 1e9) - - # Set the position of the plane marker - plane_marker.pose.position.x = centroid[0] - plane_marker.pose.position.y = centroid[1] - plane_marker.pose.position.z = centroid[2] - - # Set the plane marker's orientation - plane_marker.pose.orientation.x = quat[0] - plane_marker.pose.orientation.y = quat[1] - plane_marker.pose.orientation.z = quat[2] - plane_marker.pose.orientation.w = quat[3] - - # Set the scale of the plane marker based on the bounding box size - plane_marker.scale.x = float(bbox_width) / 150.0 - plane_marker.scale.y = float(bbox_height) / 150.0 - if class_name == "buoy": - plane_marker.scale.z = 0.01 - else: - plane_marker.scale.z = 0.05 - - # Set the color and transparency (alpha) of the plane marker - color = self.get_color_for_class(class_name) - plane_marker.color.r = color[0] - plane_marker.color.g = color[1] - plane_marker.color.b = color[2] - plane_marker.color.a = 0.8 - - # Append the plane marker to publish all at once - self.temp_markers.append(plane_marker) - - # Create an arrow marker - arrow_marker = Marker() - arrow_marker.header.frame_id = self.frame_id - if self.use_incoming_timestamp: - arrow_marker.header.stamp = self.detection_timestamp - else: - arrow_marker.header.stamp = self.get_clock().now().to_msg() - arrow_marker.ns = "orientation_markers" - arrow_marker.id = self.generate_unique_detection_id() - arrow_marker.type = Marker.ARROW - arrow_marker.action = Marker.ADD - - # Set marker lifetime (auto-delete after this duration) - arrow_marker.lifetime.nanosec = int(self.publish_interval * 2.0 * 1e9) - - # Set the position of the arrow marker - arrow_marker.pose.position.x = centroid[0] - arrow_marker.pose.position.y = centroid[1] - arrow_marker.pose.position.z = centroid[2] - - # Create a rotation for -90 degrees around the y-axis - additional_rotation = R.from_euler('y', -90, degrees=True).as_quat() - - # Apply the additional rotation to the plane's quaternion - arrow_quat = R.from_quat(quat) * R.from_quat(additional_rotation) - arrow_quat = arrow_quat.as_quat() - - # Set the arrow marker's orientation - arrow_marker.pose.orientation.x = arrow_quat[0] - arrow_marker.pose.orientation.y = arrow_quat[1] - arrow_marker.pose.orientation.z = arrow_quat[2] - arrow_marker.pose.orientation.w = arrow_quat[3] - - # Set the scale for the arrow marker - arrow_marker.scale.x = 1.0 # Length of the arrow - arrow_marker.scale.y = 0.05 # Width of the arrow - arrow_marker.scale.z = 0.05 # Height of the arrow - - # Set the color and transparency (alpha) of the arrow marker - arrow_marker.color.r = color[0] - arrow_marker.color.g = color[1] - arrow_marker.color.b = color[2] - arrow_marker.color.a = 0.8 - - # Append the arrow marker to publish all at once - self.temp_markers.append(arrow_marker) - def publish_markers(self, markers): - if not self.has_subscribers(self.marker_array_publisher): - return - - current_time = time.time() - if current_time - self.last_publish_time > self.publish_interval: - marker_array = MarkerArray() - marker_array.markers = markers - self.last_publish_time = current_time - self.marker_array_publisher.publish(marker_array) - # Clear the markers after publishing - markers.clear() - - def get_color_for_class(self, class_name): - return self.color_map.get(class_name, (1.0, 1.0, 1.0)) # Default to white - -def main(args=None): - rclpy.init(args=args) - yolo_node = YOLONode() - rclpy.spin(yolo_node) - yolo_node.destroy_node() - rclpy.shutdown() - if __name__ == '__main__': - main() + main() From 1cdf7e087639529b0931ae706df69df075b43b12 Mon Sep 17 00:00:00 2001 From: zehdari Date: Sat, 13 Jun 2026 21:19:28 -0400 Subject: [PATCH 08/21] Actually installing the files in cmake --- tensor_detector/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tensor_detector/CMakeLists.txt b/tensor_detector/CMakeLists.txt index 5d7825d..b6212af 100644 --- a/tensor_detector/CMakeLists.txt +++ b/tensor_detector/CMakeLists.txt @@ -38,9 +38,10 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") endif() # Install the Python node +file(GLOB PYTHON_SCRIPTS src/*.py) install(PROGRAMS - src/yolo_orientation.py - DESTINATION lib/${PROJECT_NAME} + ${PYTHON_SCRIPTS} + DESTINATION lib/${PROJECT_NAME} ) #install launch From ac9db6c09d3563a6e134f9f34f5e770d16e08816 Mon Sep 17 00:00:00 2001 From: Cameron Tucker <68253750+zehdari@users.noreply.github.com> Date: Sun, 14 Jun 2026 11:58:03 -0400 Subject: [PATCH 09/21] seed obj estimate for binary classifier on aquire -> track transition --- riptide_mapping/riptide_mapping2/mapping.py | 29 ++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/riptide_mapping/riptide_mapping2/mapping.py b/riptide_mapping/riptide_mapping2/mapping.py index 97cb30f..49976e2 100755 --- a/riptide_mapping/riptide_mapping2/mapping.py +++ b/riptide_mapping/riptide_mapping2/mapping.py @@ -132,6 +132,10 @@ def __init__(self): self.offset = Location(Point(), Vector3(), int(self.get_parameter("buffer_size").value), tuple(self.get_parameter("quantile").value)) self.binary_classifier = BinaryClassifier(self) + # Store seeds (which move tf and reset cov once we enter tracking) + self.instance1_seeded = False + self.instance2_seeded = False + self.add_on_set_parameters_callback(self.param_callback) self.create_subscription(Detection3DArray, "detected_objects".format(self.get_namespace()), self.vision_callback, qos_profile_system_default) self.status_pub = self.create_publisher(MappingTargetInfo, "state/mapping", qos_profile_system_default) @@ -176,6 +180,8 @@ def reset_runtime_state(self): # Reset mapping mode self.target_object = "" self.lock_map = False + self.instance1_seeded = False + self.instance2_seeded = False # Immediately publish reset topics/TF/status self.publish_pose() @@ -287,6 +293,9 @@ def start_binary_classifier_callback(self, request: StartBinaryClassifier.Reques self.objects[target1]["location"].reset() self.objects[target2]["location"].reset() + self.instance1_seeded = False + self.instance2_seeded = False + self.target_object = target1 self.lock_map = False self.offset.cool_buffer() @@ -319,6 +328,7 @@ def start_binary_classifier_second_callback(self, request: Trigger.Request, resp # but high covariance so it isn't treated as confirmed. if self.binary_classifier.second_locked: self.seed_object_estimate(self.binary_classifier.instance2_name, self.binary_classifier.instance2_centroid) + self.instance2_seeded = True self.publish_pose() else: self.get_logger().info("start_second: no buffered cluster yet, will lock on live detection") @@ -345,6 +355,20 @@ def stop_binary_classifier_callback(self, request: Trigger.Request, response: Tr response.message = message return response + def maybe_seed_binary_instances(self): + # Fire once on each aquire -> track transition + # Rebuild the target's Location centered on the classifier centroid so the published pose snaps to the cluster instead of crawling + # from the reckoned init pose (needs to only fire once, or cov would never drop) + bc = self.binary_classifier + + if bc.first_locked and not self.instance1_seeded: + self.seed_object_estimate(bc.instance1_name, bc.instance1_centroid) + self.instance1_seeded = True + + if bc.second_locked and not self.instance2_seeded: + self.seed_object_estimate(bc.instance2_name, bc.instance2_centroid) + self.instance2_seeded = True + def seed_object_estimate(self, child: str, centroid_map): # Seed a map-parented object's pose so both its Location and TF frame land on the same centroid. # Rebuilt Location stays soft/unwarmed (cov=1.0) until its buffer fills. @@ -442,7 +466,9 @@ def handle_binary_classifier_detections(self, detections: Detection3DArray): if not update_success: self.outstanding_detections.append(OutstandingDetectionInfo(result, detections.header, "", True)) - + + self.maybe_seed_binary_instances() + def update_outstanding_detections(self): current_time = self.get_clock().now() oustanding_detections_remaining: list[OutstandingDetectionInfo] = [] @@ -455,6 +481,7 @@ def update_outstanding_detections(self): update_success, error_msg = self.try_update_binary_classifier_pose(outstanding.det_result, outstanding.det_header) now_sec = float(self.get_clock().now().nanoseconds) / 1e9 self.binary_classifier.age_buffer(now_sec) + self.maybe_seed_binary_instances() else: update_success = True error_msg = "BinaryClassifier stopped" From 2377ade48801f776bd4636d07f4816a8bf257c6d Mon Sep 17 00:00:00 2001 From: Effo12345 <4p7septipuses@gmail.com> Date: Sun, 14 Jun 2026 14:14:52 -0400 Subject: [PATCH 10/21] Bin classifier working tirpak --- riptide_mapping/config/config.yaml | 6 +- tensor_detector/CMakeLists.txt | 9 +- tensor_detector/config/yolo_orientation.yaml | 112 +++++++------------ tensor_detector/weights/dfc_rs_26.pt | Bin 0 -> 6547037 bytes tensor_detector/weights/ffc_rs_26.pt | Bin 0 -> 6545750 bytes 5 files changed, 46 insertions(+), 81 deletions(-) create mode 100644 tensor_detector/weights/dfc_rs_26.pt create mode 100644 tensor_detector/weights/ffc_rs_26.pt diff --git a/riptide_mapping/config/config.yaml b/riptide_mapping/config/config.yaml index 45aeeae..a6b0522 100644 --- a/riptide_mapping/config/config.yaml +++ b/riptide_mapping/config/config.yaml @@ -157,9 +157,9 @@ z: 0.001 yaw: 0.001 pose: - x: 5.0 - y: -3.0 - z: -3.25 + x: 1.0 + y: 0.0 + z: -1.2 yaw: 0.0 bin_target1: parent: bin_frame diff --git a/tensor_detector/CMakeLists.txt b/tensor_detector/CMakeLists.txt index 5d7825d..7413da5 100644 --- a/tensor_detector/CMakeLists.txt +++ b/tensor_detector/CMakeLists.txt @@ -37,11 +37,10 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") endif() endif() -# Install the Python node -install(PROGRAMS - src/yolo_orientation.py - DESTINATION lib/${PROJECT_NAME} -) +# yoink python programs from src directory +file(GLOB src_py_files RELATIVE ${PROJECT_SOURCE_DIR} src/*.py) +install(PROGRAMS ${src_py_files} + DESTINATION lib/${PROJECT_NAME}) #install launch install( diff --git a/tensor_detector/config/yolo_orientation.yaml b/tensor_detector/config/yolo_orientation.yaml index 0a1a20e..c3e1ec0 100644 --- a/tensor_detector/config/yolo_orientation.yaml +++ b/tensor_detector/config/yolo_orientation.yaml @@ -2,87 +2,53 @@ ros__parameters: active_camera: "ffc" # Change to "dfc" or "ffc" to switch cameras - torp_top: "shark" - bin_target: "bin_saw" - # ---------- FFC configuration ---------- - # ffc_model: "robosub_2024_v3.pt" - # ffc_class_id_map: "{ - # 0: 'buoy', - # 1: 'gate_sawfish', - # 2: 'mapping_hole', - # 3: 'gate_reefshark', - # 4: 'gate_cold', - # 5: 'bin_temperature', - # 6: 'bin' - # }" - - # ffc_model: "rs25.pt" - # ffc_model: "rs25_8_10_1.pt" - # ffc_class_id_map: "{ - # 0: 'buoy', - # 1: 'mapping_map', - # 2: 'mapping_hole', - # 3: 'gate_reefshark', - # 4: 'gate_cold', - # 5: 'bin_temperature', - # 6: 'bin' - # }" - - #ffc_model: "rs25.pt" - ffc_model: "rs25_8_15_2.pt" - # ffc_model: "rs25_3_4_26.pt" + ffc_model: "ffc_rs_26.pt" ffc_class_id_map: "{ - 0: 'bin', - 1: 'bin_saw', - 2: 'bin_shark', - 3: 'torpedo_shark_top', - 4: 'torpedo_saw_top', - 5: 'bin_pink', - 6: 'bin_yellow', - 7: 'bottle_yellow', - 8: 'gate_saw', - 9: 'gate_shark', - 10: 'slalom_red', - 11: 'spoon_pink', - 12: 'torpedo_hole' + 0: 'blood', + 1: 'buoy', + 2: 'compass', + 3: 'circle', + 4: 'fire', + 5: 'hammer_and_wrench', + 6: 'slalom', + 7: 'sos' }" ffc_threshold: 0.75 ffc_iou: 0.9 # ---------- DFC configuration ---------- - dfc_model: "rs25_8_16_dfc.pt" - # dfc_model: "rs25_3_4_26.pt" # new rotationally invariant model - # dfc_model: "rs25_8_15_1_BIN.pt" # New rotationally invariant version with dropout + dfc_model: "dfc_rs_26.pt" dfc_class_id_map: "{ - 0: 'bin', - 1: 'bin_saw', - 2: 'bin_shark', - 3: 'torpedo_shark_top', - 4: 'torpedo_saw_top', - 5: 'bin_pink', - 6: 'bin_yellow', - 7: 'bottle_yellow', - 8: 'gate_saw', - 9: 'gate_shark', - 10: 'slalom_red', - 11: 'spoon_pink', - 12: 'torpedo_hole' + 0: 'bandage', + 1: 'blood', + 2: 'fire', + 3: 'helmet', + 4: 'nut_and_bolt', + 5: 'pill', + 6: 'plug', + 7: 'warning' }" - # dfc_class_id_map: "{ - # 0: 'bin', - # 1: 'bin_saw', - # 2: 'bin_shark', - # 3: 'torpedo_shark_top', - # 4: 'torpedo_saw_top', - # 5: 'bin_pink', - # 6: 'bin_yellow', - # 7: 'bottle_yellow', - # 8: 'gate_saw', - # 9: 'gate_shark', - # 10: 'slalom_red', - # 11: 'spoon_pink', - # 12: 'torpedo_hole' - # }" + dfc_threshold: 0.75 dfc_iou: 0.9 + +# Full map from CVAT for reference + # dfc_class_id_map: "{ + # 0: 'ambulance', + # 1: 'bandage', + # 2: 'blood', + # 3: 'buoy', + # 4: 'compass', + # 5: 'circle', + # 6: 'fire', + # 7: 'fire_engine', + # 8: 'hammer_and_wrench', + # 9: 'helmet', + # 10: 'nut_and_bolt', + # 11: 'pill', + # 12: 'plug', + # 13: 'slalom', + # 14: 'sos', + # 15: 'warning' + # }" \ No newline at end of file diff --git a/tensor_detector/weights/dfc_rs_26.pt b/tensor_detector/weights/dfc_rs_26.pt new file mode 100644 index 0000000000000000000000000000000000000000..f28eda387b8612476ad9adda72b44dc097a75c91 GIT binary patch literal 6547037 zcmb512YeLO_x1ybVh|}-EQmc(ffUlPfmo0L!hni3h7j05NZ6AJMO_WzvZA6`u#3I- z-W7ZAV(-28Uf<`r&z(u!<@c9Y{G9W>XJ+r+bLQN0C$qD&W2?KYl9$)5TVBq8J@VGc zn^fNt4w_sW)()IGy>a(ldgtw*{a;(>R5Gt%BKpX~e)Y*t6E^^s6qS?@C@LRNTsons zXh>=0kfNf2B_);Rm7QlIQP zaT{zJw#V2}14;)L^)E<-;mnpHg9f!WhF04+H*BbD8CcgmW02p!FuAJUMRQ$Cat)Gq6T4!U`kBpjiR9`d|G|F~*MNZ@*Gy>$o9bIylKErYPBWS(*Ec4+ z*LCcoscB$X+cLc+e|-Ja8TCzJZ3uTpbI1JT8in(cJyOXv3nntGc()Br4NX&%Jr_>w zj&{w=TC1H=A0h(DUa4enw^Ple)+tkH>61#XHE~1k*3{foGm~Lz3DJMFLrqJ4m|VNA z2JME%u%W4@CLfmk*G(ta3zF+kT#K)sR9iQFcCAgWnQ8SkiRR|%Ey=!hbuuwE%|%d0ylX=pUcEtKklb)$&wss8FWM-{I4OmcDoi#?9E+UaOCQ1CL;B_XsAWPl_KE=r;=p_iJl7+$f@!K(x@V_b^=*ZnNC&($svip zZkX*8I-olw`i)8G5bc=IG1w`g5bvB&EQcl(s9_0(WS4{-AD)nByC(F`cl-A{-#wMw zqhMkuM6W10B74eoaAQ{f@aCpj`N=);-bbdA)zNz&#rHm1?|n=)-o0|K5Z4 z_dedg_X+;J@9p3FKK{M$>)-oC|K9iW?|py&-VaD1&@!jL%Qj{f}KR$6K1MW>!gl za&kd|D}*gL`n6N*lbEqggZvS-jZ?Mr~jCZ`otZ&hT4{-jcMfpXwd-()5+E# zIm;h_+5P~`X+HpS{Q)@CAArOB0XWkT{Av@{%ApG?!u1<3{OD71vuFu6XNsqS3ec|r0R z7sQ#hlP9zIF0AfU-DyGcSeLAm8ya1`P97)g@e}hAL=@_#mYK~hC^m~0x{`+BXW|`1 zeVkC8SDm*Yd7>L^sx`OHY)LMz?&RL7-=_u{UY|V4EgOf{TXReDEt=pozls3l?hA3fsXK!=>!uGQH^XFnL9gyi$#;GRdohyUECce?+KFkx}~wHbp{qNM6SN228XdH^FQO!+L7x z&d-(S{aks$&y^QBS6*_Vqz_Y&KCOneVmamoi$Fcn@#Q^s9y@9D3*TMwr%Uu1%{(`0 zosoQHkDZs^KJJTjzuR5%)=rs%MI`y^F)ku53N=w^xgxeCUpod#$X;vf!sP3@SqO8( zEH{br$2W}HJ3sjb^6$-5@~y0sp0{&PdfrJT-_@ECo%FnyO1}S}Cp{lzg_ihXqwqr zi|Y0dvZ>Y8w5FMshm(WR&vkP1s=+#;Rh{P=Q>-%@Iv3|36yaQ)|8{}NmC&rS?~bPu z19>W8t6)zgEo5G?b%jdc+`?7`q--@vUm2|%H}y%`>eM_(vV2h5x84I(OLMMTA{n5dYQ5EZjhqGC3fh?td8&#&&4IJ&xjLZ<~*PMb~# ztb(kw0IMWx?YAoOqJ;@9?ly!?Eb57q5+^4*EXuY$HndJkEJSVh>>nIEdg|;hXV7tZE-9Z`K!&yf_=B&q+wkOT5 z|B)cye>IT(kAhbJqd}pKfedV~*g6)Jv2o5CKytOV@qmKFzt`s~n*giE*&F1?*$2pR z_J!6soPD9~2N~G@kcsw1nrAe{MRowK?hPLZ@*N!nWJd=>tD_oFXoo-sRtuT%OLStH zD@+PdlhandI?lpyzB-oJY&8DY-)55;!JqAIo+kH^G&~)XtTYKxsP}GO$x< zl`E$b<;oIb?8<3u$(7TIa^(!7Tse~{SI#2Jm9vR*uF(B*T^s1TwHsA+wi+3j2&!w5_!^kDZ=CsC zNT0Lc5tXyw6XTryfi30ik3{9{PekSH&qU?yFT_H(B>YNL&i+PJ&i+nR&i+9}&i+Zg za!Z2$>#S~8iT%Y_v9|pUNZCJ-Q5NRmP_edkqIT1?Gbn9cAOl;4R!!5cM7g{wF?M-1 zw&Zd*qFi2`D3|kza=ANEF0Vn9%RPv4c}=2R?n#8py`ZDo)*GC%KF*@rwwB|ZSyX9j zV*_j38lkNN#Gx*z9$HXJ;J>nN!S$k3XgswIY(L1X+E!9(`_t-b z+W{bS6xFr^(G2Y%$iNPU^tG)9n6^Wlxfasr>?ERcwvHI*>}0l-v-L#f>=dGMb}CUh zn;;gt+SWi+&Q2pLXQvaDvyDXL>M@|SErbm0SX$-kaYVU#JTZ245nFQg1fpC$ktkOe6XohjM7er0QLdgs zl&hx_Ed}jfqJnlGQ9)ZqRM74xDrgT76|@J5 z3fent8Ep0CVS)N~n)?s)Fgp*}RoGi!IS3o#f zcGlM*b62c#d!2SSz#AYxz?(o0@D{WNcpDVjJCK3B8(ZH4W$b-t{Q%OfSRVp%R;&v9 z2xblRF~|?}36KMQ3ax=Y1BLcEWME%FX0KS4_9deFquX z_mJ5uR+argt6Q;t1fip7#rg@&(0+yt>=#JCV*LtC+i%YNJEYIqKZwfNKZ$Y9{>7GZ z_HUwc_8+2hHV>a)_?+!TEOb+E zb%TtuZ*_KrnwC%Pre}9h+SY&!tOu={o@)~2YENS9YA?3rYHy-k?L(BSYY{a)*Cxu< zb%=6xU7}oFk0@8yC&Jaf&{0j>0GzT7okcZmBgfgZr?kj6#s**0`T=o>`O$MX_tCR$ z!dF#~h^{#IM^l-zDJZnfAOqVxwr&B+*p|+^6=YP?wkErv6@b!K==Ru#Rt0TaqJp*^ zF%H@QwiL91LUohpo|61Ivv0mpM zR`-q%0{M;(2C}0XXmxZ52p@(*1~v&YtEQEfSsksercDN+qo}6UqZ!&1$iSvT`kIyi zrmex5r$PFholaEFHWK5UoxzrJwuz{mZ6+#bXA+gONn)X^X+~7ewh)!GAyGNoN<_}i zqQ(ctD^=54-Q`oy&e<2HH^r|1<6}E_ zRy&YanQbn*@~8Zzb|~KGD!1ZOwDB)Awgfe;rwW|n6g3{Io8Q45pRS}LND!TKD zadeMnOVLde72O3yMK?oKbdMn_x(kVl?y*Eg_c)@Wdpr@*T?8GK(G$QaJJDHGMi)EI znXu({5;pK+#^TUU1|q8pa4}=3%IGP4)##y}qdIyj+RD}?pwLc(4D9sSdIl(CXFBUy zkWn2yo9v=?4k&Hsx;>WCs;HeuRMgHV#!u9CjOS>E3K9C<^8IS|q53K-fFF+ffot+K~q z)<92y{6J3vInYzk8t7?IXwN_f_AF#p9UWX`&(Z4M@$(?x(F;I!^dhu6dI^NnWk{SZ zLuS>{!Nv9pt*(x~3PMLw9eoYW&|ZfO>ten?c#enc#Eb@XGRa`qFVa`scAa`rPKa`toTmAjgu8rim3HL^=~jqLxw zYb5VT)U6F)U^rhQ2iuouOq+u;j4JsRIAvc$M(O+wm{syyYB%4%1EuYI$iRM}RrCEv zqGIj9DWD)jgxHnjEm zDpY;{7j0iOHJdg7g|;DNU>n8OjX@df=d7DRMs>bF*&X*yL228}?Xfwn3fdM#1#L@W z9JH<2QqZ<0Drf~n1+9>%plw4`(6%KiXxkALv;jl~Z6Far8${h+=i%o9E27PxFBg;j zRqGP6uk)qkMe#L&!EAP@^YJHgW!Mnc`EoQ;Rsk7hRi)#cqf%;B*r1{|1mug__COZ3 z9iVj>b_9jC6J%gJ$JU{sj16C$G$6aq4=%GYFl(T_Kz^XHKn^qxS_1{3(8fasHUTob&X?QXw7Pe^ z56E}4FOVJaW?^--9|$MjkT~&%%&zklb|9^;&L0FqM^T+W7|qaXAOkxD(%1P~VA>`* za~-75*~vuZY&|i~*(q!(XQvXCvk9Vdwt=XeoklElb$&WgIon87&dwkzXPbz~*=FjM ztMjds+OGl3#LI9M8Zyd0V@IfIE!1v$h9F#phQw89S~Wdq6Xoh0V(jW%w&d!eM7eqx zQLY|Nl&dMCTs?v)SC1sh)i$DBokxVLM?pt5Z9X_~sZTH0~W?5VT`*ua`r6j}y| zLtIeZR(*&r%N@g4slgJr5KU#yv7pe7gADBW*t!Umu@jv2M98S7Ehf95odm+I8E%hL zXjRZoB`Ro3h;h(PV@p9hov5IlK~&JrBr0fU5f!wvi3-{|L@Xjg(bf!oq{6_6A7YG@sXYe2Xj4H?*VvGsaT#%^%d8zFOQT3M0ZM7tZ{W{@A? z79a<>64e4syJ%H?*R#t5H!mNSr1NniL0Xfk9&>H9g z5KfXIagq#~Rny8!>|t8nJAMS@J9-qzjvj+nM~{O-djc}BCn2+HT3M+*MXRf6PlM1= zRMVb8Gqh(R1A7kA*RxTx&RFGBj9eTk@?T~3U1_GPw|v#$`9v#%1Bv#$}Av#%2i zT}^v~sGNP1sGNO^sGNP9h@5?gdO7lSWj=|U)`aV+)0!c0w)rkznX>mFqXc}PeW9#< zK<#GehalXw0U6lGv}%TaLX@|k5@T;aV@uwCPL#J_5asQcM0xuaQQm${l(*jyw%vH|_`* zR;P9@H;{L$ka=bk@#EZ)gXyBG+$SAFLa-4Hm%4}zBKmo*GF+)MDq`1I549H5l z3$zZya1ickhQvM1v2}M4?rC<`5sPZfb_aP0g`& zEC@F>J8J;x7MJmWoW-TWCcvzL_6GTZ_5pIBeW5iFzs`lbnjvvlGi3JSQfUX!>fZ5z zAm7nJKz4L6v^uH*;jU&#+|>-3y|`4_BwF3#QU^ju(c&^0P2ANCiMyI1{o*neh`XAd zxdGDW>@=csb~-W6*+#aMvonaw*(RcLwwb7$ok=Woi%XKIoHe3ywuPvi4T;FvR_c|# zz}$YqJPR*N*=)!t`{uAC6t%h3Zh9UHO50(OfgMh(re}&MSC1gZt{%yjTx}!D)pXl(AEtbqQot(@rD1pq&m%+Zk?;Gig=O z&LS#kXA|R~ox_%bb}mstTS`>W&Lb*l=MxpQ3y2EZg+vAIBBFwJF%dz#ggWbM8kf@M zYuaUGU(+rp`xe`+Ev&P*R-qANZB=zQC3~+IOnJo+jZE0dDlO*>p`5r z{nK^>kQ4YuXdQ-|K%w0X8Q3kc^;S^EZgbY#A#-Y4d5PUYyBpw6kRRYKAP2Y`S_9kz z3hiFV!0wB!%Rm{s-&r4kbT#ckKz2%@@0ro948+pEs}8l=zJ*NMv6H;8f0zR8wy_AR1v_HCka_8p>f_FZD3t7-2Mm9y^? zm9rlZm9rlbk+UCBuk3BPt z2cqKnBT@1EiKuw~OjJC7Au67~5*5$ih=}L!&{5(11B@G=okfN7FUL7kwA}v2hD2gy z-q6lSnt#whCh=NBo6ZOG@FbA}++P))4|YOZ8QK{XS{F#%^Bh~df-<(Mv#tgi)y{5Y z7q`_xY0Gzebf;BuTZ5>$^&rM^TazutttU}&>qS)DdJ`45K19WBEu!MKHc@d~hp4!% zOGMn(qn?jH+;p*_3qL4ZpEmzNSzofRog0vS?c9*uUOP8pb49gtV{C|PXFoJjwh3gE zSp6O69GD8*6dN$V+i+6{h=rmpZJPsGD7JvsVb~HB+E$Q(Z5>++Kp87^)@>kjYiFfx zOS>CjJCGk>0FVO=gw_CqK%o^u238zfOF$Vbb=JX>^?-~?7q}1cd@}$$&q=(I_IfQcFnGnEA>$szu)f5WV!8! zM)XnH{@|1y02w9pfnZk3gQ(q%KNy4?LLhNfnpVyDTB4#ii5N$(jx9xRGEvd1Cn|bV zh>G4+qN0}|DtZk>MQ<8W(VI?0^ctZ%{OLaf&6G9K=>PO@=8kY-Cbe@R2}+wm2G&BW zTnLGBp_LfBFpDj@Fq4)l-PW1;92s}(2fQo@m1>GM`dZg3U%LqRJH(3&8G|~v|}IxTNqo91!e3w zXFVP=s`QJPXiJC++G#`u?R27ob_P*F zJCmrOokdj8&L$#g=TNs-diPP;xwQGS#Wy7 z=2ZHM!FE0Eu5R7{@&numC5c_THQN-5ac_02*{2ehE_+9fI@o|GO))W zvnzdtJx;5u^iP1$QB>)lL^HIfAOm|E(pUOtfN6WynV*C7Ir}_OIr{=J&e<2)QqI0a zRL(9ZDra9NDra9I7P?CRDp5K68c{j>I#D_M1`#>?CiTiy`i>u!y@i*h>}|*>``%$k zsA=y~yXpBJC~faU2KE81nw}pLX$^h z`V~>Geocg{-#|w-?OSllzH=7UwC^3~%$`d70UKD;4hii?APzB$*fM=o_7h*F2CvQi zjHWW@7f@)wLgI3CZ2cXSu|J&kPspgI{Y7>``x}(Df7~8n4ynHLbG9`qS?rD$u4x@V zDjSVgrfdvklz@A&FO;>h)NY231Enp13~W5DDr*yn@^)`x?Cm~m$=iL2@|F+U@!sx7 zl(+j6KfW0EKzjff-K z0^Q+^Iz$r}t!eaU)U&uFT$oMmT$lq&+g!-N4y9Et97dE2hZAELQf$eEBZzY0NTOV5 zBg%z&M7eMjQ7+6U%7vqeav@EG3k#s5)h7eSm1t+t>a);scAcvnY{y~)S08-W={O)J zV*#!^57p{(JYUs*^VuRa7rLo(0w}Z-Ap=_+TTcRI>||#>1u|NFP9?jbEdizNG`Gj; zv?^$45EZmDiE+@*VoO0go2a0jLsZbtB`Ro3i3-|zLvmBVVm!0_)NT0K>5|y*B5#yYFoh{|;8${*on?&X8TSVpT+r&aQ zrQRVbXWu0%XWt_#XWu6xXFs4`+3U{jpQU|>m*Ju{WR!g$vm?~BPpIAW{1lY7&maT) zoK{WGFNkvWOJeNmS8U1EuZeQ?8=_qOmMB-hBg)n9iE{M^qFnuvC|7?X!quOlqnh>$ zIAy;&i)z|$jjD#$f%~RLUuvx3QF6mZjaSyRnYkGY#+4MiE+^K*;3HD6BV>IhzeQ{qJp+2Q9kbO;Cm+WiWdgS(+wmzFHs%d?(A+Bi~pni}BQfwPzgC=l4ke|St06BsCLo48$f^f+g65j)ity_TbJwRvO3NojrRh8J* zw7UvX0P+JA0y)4o&>CP{P-xph1~wqJ4g_Uvkh2y+x|&uD$gXKsrB(v71}X*lfd&IP zP#LraDhJ_27!oJKkXbdYYOqz&>fZ4Xknd=FAUoOtS{>~O!ac^2xW^bWtEN?z*-%9xL z^+dTmg$S3YLPxbN0Zv(iv#7RBbDT4a%56F}u(shgn?@iGHH+C$ov+Q{tJ-T@6Pn7P zW>9D|Ap=XsRs&_M#aTnhsJ69|U2U5MO51F=#~fM}w7EnD?NDMIw8Pj^&<-amXepwC zb_7vDJCdlNwGkDxc|-;6D58QkpNOCxO`Y{+fi!Ktwk;t0+Lj^v+I9@Ny|yi6b49i7 zSZs)E+i_^5?0Cp1s}?!VIVu%)0ybd&4aGSzh!c5e+7<&jkxzowVK^BS+9{BMof=!0 zfHHQPvz`u_TiYt_4BFiQXM+3yX8}3D+0Yu`98hTILI$=pww?#d*!j+S0i>&K7Xor> zTa{e|vj(~tiEG{atD`|Fb`6`g_>1rT*x&~T3 zT?-2BI>^AThwMK5<%7ssfa^W)~j@IYU z9j*m@fo96Sq|sjs_=-Eig|Dfd3*Ug!_AO*!-_a@;z9-6sABeFFKe8nkej>_+pNVqe z7ouGFl_(c}Bg%!}iE`l&qFnfs2p9f>j@FjH!T5Hav*-}ytk}2WzC?s=1M2pN zLw4bv6dTg!SC@^*{!WUG$$oX|M_v?P4cLUu4y%j%Jd#)M`(s1Ax@?L@$~J?H@@jL( zxyPl{w!jt?!2Y-p3}PwmpSG=lETvmR>o^pELMwy}Y@67+EhuB#IqLw(e=RRM@`G(4 zH@Fc7f&2(XK#ouhtr1EUtmT7@k|S69s}tUcQ2w6cPueZ+;MCvaRZ_fcRW#vJAtUg z-J4kG=G8t#CGNgNCGJF`5_dl$5_f;0A)^#Lh#jG{9Zc=!XblJt zjDy6z$+T*YP9nfCC*y2l@0db5wl(rVWtV3xF(N^-bf61jVLO_ru%(F#+XAA(mLV!^ z#}E~^g+zqySn90Ob{uWKv>i|OrEL+}m$nng?WOHRHdj>I7GpzP+D<|vWhX;Md3B28 z+~ZPZr(%mH@e+`q#HRr{iBE^taX14M+L@4nofTWp24(CVXFV4(x3uBW;!C-~m5K8} zeuVRZ9N_|Jjc_3-w2L4EyEwL90?OE>&UzW7D{Yqpa!MPXJ$?o38tF=qAL%L}N4gqX zBV7Z+gG-2|1WyCmf?`KPi`v6gi`yf$?`w&ry z`!KQ4m9|HSO58_@O5DeYO5DeZNZco=SGKgpciB$siU%P?-|l)6U8L+O$S573W~V4~ z&rrMh`Yb4I&q3mLWm+{~Um(iu7m2akFR>-JmlNgo%S5^T3Q=yqN|f8L5#{#lM7jM2 zQEtCUgxhaHcQ^@s8%=ygk4AqI`Yv~b3-3`o7v2Y@?E}cbKBQGHd_i1yL@1Nt6p;5#_?yM7i({5iWcS9aZY@!1&Ugv#3)4;5eru6c4r^ zvBg*FpMXf&4wd?6zN|x~{snE#g@3Hj{P{#gr*1sU5O8qz4h3y|u+Vb#I zPl0uU^kM5vRM@%@0IlP&AtCS& z5bhX;#2v%2wE%=WhMjdANLQ)11>{!h3fm5LjWht{M;Zv^NQ0m?QV}S$V#vTsAag2p zrIpg`-t%CP@2L#Pp30%sQw0dmKZXpf3NoisSJ@DnU8UY0gr1^Gy#tz|?FbpzPLRG* z?+nCU!_GVm(kJdNL?!NUVw||UvZch`ji|)kov6g!gQ&zEK`eBYdQYMfcO+4XTTN8r zjv^v)M^mqCrEWh79fOypY%jtuI|g0 zT;*@Lc~|!%%GLdea`gbBTs@E|R}Uh})q{z0wT1{+4}p$KTP+y3J2;CvT}Y8l80pWK`Ok$S!QnptQ|& zdn9R9*o>&KwGiX5g={Hotwd$WETY0To2anOAu4Qhi3;1HM1}1zqQZ7K5n)SFXO*@i zX!E7*NU|?&ZDe2C=8@Y=+fi(;sI<+;hPbpHjRu~B3>oFs0>`<>rPwmqqDg!V$WP*h zKu+Rgp>-UN1BG@xWMGS8>j|KYo#?EKA#+O`9{7C{HzfEM{K+6c!YM$Ga4NJ$SOUVs z+aU4qw%B?G2oG;_*0Ug8X*(N`Q`+!E@N;0-Nauq5NK1hn={#tSbUrAw3m^l#5Hh>8 zl?=9vXm;=UVvz6Y5+HlJ6k0u92EwIaNL&hr%r0#uWp*XauC!eRLQhd?yBf{Vu7M2f zT1a2ot^?ve2WP$k(kJeXL?!M`#5i$pW=n~C3sH%CD^ZDi8&QdSJF(D}wmXPQ+&hU% z+`EWM+`EZL+#SG`)ndOD)M@HNzbm0?0B|5b)nv%ku)a$otn7w^V@ zm!ZP$<6GlrV9Nk0yB{*j_XoHMb@V}MR}dZo;jRnFz#gGh1>sSm;`$gdj_c!WDXvct z71t+;itAHE#r0{T;`$6xaebDkxIRZzT%RW*t}j4Gb@WAW%3g97)zRgSbLVThy^JmV z&KI6n6WS|iAf*aM=XHv{^z|xV+2KoHuc57EeH|3q8<2s$8C%~1W$bNdeFrisrSFnm z0S-pU^rKe}O{#8#1teVrw3L3_D|;AOq_Rxq@n1 zX7^^~SjMYG)b%P9S_1KyZ%2;=2T?5k9(;k4_dRk>`!tTfF35>?- z1?E`2p*2jg!CMfO!CMmJ4Bm<@W$@NSWpDve z8C*zI25&&TurL6)IH*?Uc0#HR%_=XVU@NLhQ!nXra z;oFg@@a;rY_;w~Ld_#!}-!P)Ww+m6>8%{*{c7^V6fnYZ@Q?@&e{sO@s+z~E}pmr|o z3Bs2EA#pLAR=F^WC>KT(V;9D-B^UN0%7w8+xiF3>7XqSO7*CW76NqwQZ=zh-hX@z; zg^sE}f5tau`#FoM|Nf41DhwVpeE_zw`sZ~*o*#$?lAqNd|LZo0gZNV4;^!_0qpf*W z1HzLwAaON2woU?Ntj<{{Lq_Glp6o(51(dd_ZjS`53S9$Hp_@jGLpPl*g|3mP(9Iw! zbWKEsu9>LN%_J&xNuok$M1`(}h|q=9^Er8rrto*Jw$kd)rDu^B;*+Ah1vZ=P>;D|` zqWChwTsAw@f9%hHp&g11as59G4Lo%jGRm%$pvdceGE6KjxGd7V;l?S7{@_tjN?I}ErJZ}gxGo_ zC}WGA^(07F|4#J`v6g^2)@jfh>vT|PXFvvaCS*?iFSoO3*84si z81;1yn0=iKt-h9mLOTyKu=62v>VJh@K(nj=7lP1LRR1qR6Tj^T8Q3L|zW!edOxtD7 zd^w~~;VXzr;VX%83SY&RQuu13QurF8Qutb;QusPzp{xJb6P3a@5S79=5|zR?5s|_- zQ?F$G@A%EITkyJ+-3l4y;%)2+mF{+GH(l=l;WlPST-&Bq)Aeqme7%Pl`+6^1^7THV zd|gJAulEz>>jOmj`XEuhK17tS4-@6-Xtn?ZxI!`w}}efJ4A)U!Z}zJs_j(`pR+c(W$bp zvBl5kZ-6*9uF`!A=4}2BTF2shP-s6u2KHlY{Rxz@pPls=$lOYYM{EDe4XPNw0i!W~ z2Xl-+pf$#ypwRw;4D9dN`VS~$d27(x3DQ-%&VZasho^6Mf!&X_3NRY0E0|-g3aznL z1L3S15@*$r*_95@G|s14@4GuN>T3-!`|1I$zSabV))O+YUXa<9Zg8pfrrA}xJ|J`z zRl2p%3~g=5z}A8Em2O>N+SYUC^&x!<_a!QYHz39-ydhgk;f;t&;f;w(;eJG=@Fv7U zSLyl_mBO16mBO15mBO17k-}S0uY9HJ_iSl45G4@~>Tk>ERqC6N*ln1*K z<-u-5d9XWC9_&Gs2P25`U{4|r*huIO=hoF|;!A%t`g7~i+z~E}p>{6p1xnjk$iT+Y zDi;ExTo_M`U6{a@T-ci^7xp2_g?))~VIom3>_?Of`xE8D0YtfQAQ3Jc1Rbq72ZQl7 zK4;O2bBN=dnudo`*J2CjZU4|F0WsMMa6fUI&a3PAvi1ioOh$8|n+o+H{LBd?zRnk0 z6QGPWIO{aXXt9}2c2R2trEP}Wqls2Ut(mB(%_PQAOR}Y?8BtMdAu4JiQBi9pDr&Qc zirQ?VqBe)9sLdrJYKKzm0SoajXdXtJUuq5~`=usD_DjtXl@>e8;(mrOb}T7L>rDp`}4MD!jjV0g%Ns1Fhq53<%FthQ#ms#n$6M89Uxt z7eTIIp((c$xWSEZBFK-h7|0P$g4PHpgK!5kB<^62txG_-gV|Y6hjh!#8GzhnrozsI zT_c?Z@*|xM^#VvMW)iur`f&d3qZc73xVwEB53t=F(|Z4AOpJ; zGG~dYvdd_8OU&gU^b{>ISD=ZfB|`>w6{KHct_I>JW@o+@(kJe9L?!O^#5i$pU`vU6 zBTLzH zeS#=gpCroFr-*R%Y3Qi3Jp)eJv(BQ*_MGFKDTGH;KaVZGvb_MrG44>=UgXQ#E89zG zDtDHHLVFo9uvcR1tDua%=B%$nMwRUivWwcAAl%gK_IR6CMeQA;qV_H^j@o-{DQfQ% z6}1nDirR-nMeQS^qV_RSQTv3bsC`OQ)IK93YM)bQRkkl^^OfyOvaf7kk$q+Rn%rL5 zzF~7kmF-(>h%4K7Xy9%S$SAFTaGZNsitR^i(H#B>x=vNZj2K zTmJyz?ha@D3o^H|;R)Y=bAziA|A71mc|9~jCuoh(8HC5dLE>?6v9&7*kArj8)gWDE z>jucFYac61e2^chJCMGt0j-gGfI?dnGO(VI*_92CIPOKWd(XW=zNbDw_OuqX zdRiNVpSp$&Y+cCg%2tNEHfVO0ZG8}WiYi-QG;xU;5|@}EeP!DSn6{0bxgVrY+)ao| z-2TKkaW`d4iMtt5iMu&biMs_+iMu7S&{ejrh)Ue8iAvl8q7t`|h{WB7dZjDd1l|D8 zPs6sw%Tl%-WR!vf*byq*Kx#Kf2Z7R71c@hJ(5g9FLX@ke#MsrrY{}I!qFgN}%GC;@ zT&*O^)heP~9YU0=+Y{yL4n(-RBXm^Rb^@ntXJ=7m8|pZB3YFV1Y++>^if6_Fag15Y z+H}q~oG)vyY`dbV+}RC;U&DsPuVKg55g_~;wzH0ej4E3-*+p#>2=_j_J;u5?GS8;D_boZxY+|TN~=1@xre2~CSwa`UK<|I4B{Ma!y_+% zoWoP0bsQ2P+}r_)n>%9bbP#UtaMl@+E2wOh*2E2Ngl3Q*VJ46xB%w8efkJD63@nVT zt)Ps}a@N_9uCmPm4u{rADNtxfKn8XsWOil4bB^0+cJFx} z$oF&KRaIy;-*aFDx%2tk>HfVO0?HCYxiYnVeG($TUGO*(yePufyn6^dE zd;+9T+!KjP+{MH=aZh4PiF-0piF*oBiF+zhiMxbY=qlT3L?!O&L?!MSL?!N-L?rH6 z)c;>kk#XM&I~y;U9YncsCs8ikMU)G76Xn7^M7eM;Q7+s^ z#L-#?-Qk+R{b;7_0UG@^fd{!GTzH7ux$rP3ZI3_(_9(4#;W46Ic$^r!@B~|O;Yp%g zc#0?&o+iqLXNYp)S)yEcjwlzNC(4Bvh;ZRW=xBX;37oR!&Z0x`vg4dWhG$g2f-PKM z7KipK5HpQu&i;oeU*pR<{1D~qXfJdV;SEq|Z$bw4R&0G6l(Bc5^-B(dHMJ@5%m7iyz2-f%%cVD84B06Pq0tnD|>^KVw6@!2E&+o^k;h<<)PF zbB{}@{f;dtfI~z31H@7~6!%vESxWzc)^Ye7gy&j7;<*-UM%GRsJl6se&$WQeU10F6 z?^U?LjnEb3M_3ie5mtlN2;D%TtqvJjer)Xy%Gest+5^%pFlz#G78pDXyeI4$sTatP z)Emf=`ao->wLrMy3yCYfkU0xXxvfjHd(Z2Ed{65G*;8L=^|S#94{n3RgWDi;7MKd# zm}a-Y^aG)%Xo1-TO?;aVGO$e{{Q|QY5RYzi<}Dz7;%-S);%-HZ6L)L2l(+>%C2k>6 ziMtI^iMuVa(9Nsuh)Uc6L?!M(q7ruy5s6zwz0#-7@h_DZ<7Fu;fs9hHlpUe84W@Q; zvnQLgSpl&d=vTu|&wCxH`*>29F(zd(f+$mIPdti$%Z6km<#vMxAo_tw{(l!!pB~LXdv{8_OjgGBj zKpET1S;s;~rEMJ9g)IQ#K4!Pa1X>lgy@?9jKEya|`?965O(ZI8`we%H3auG3u$i$n3Cfr`YYSvPhVJsksNPYa>d)3G2t%?%R2q6e8>+A2zI5zVf& zod7~lQE597&CnJ@26hspFKs6S({_q8p9<*{cL`C6dm1rL+|$`o;+{cN;+{!V;+{oR z;+{<`bfxVaq7wI9q7rv0QHgsV5s7;~^~#pE_=enneJkt&bdjh@GO$T}m?xE>I@m!WwdI(UQU$TR}f>juVhPZUqzJLR}$Wz>Zj4xTzCeAAK!z-kMG6S=Rp~J!C7B~j4Jg@WEZyOAUyQV?ePk& z3frqhh3z$B9JbflQrO-gDr|2O6}GpC3ftR6h3y@p!uBpvVSA6Lu)R-2*gl}ns?;CS z<}39_WM8R2Ci_bL33*X`68b5dE2`9=VMAQ0KSu+<6apFL)t8QQk4u?-g)OQ{UxR#2 z`Uc3F^ewcG!*`(2zK6uGO~=+BK^gnWS$~FHL8UIYU%0_lyP~>%N?l={Vb@4qKz^iEfE=kSv_@JL6xwQ#fpvq-snnIW zI?e7q=YxDt-GS_B4QTb$1B5HVkhl^InNz8&tQXC$QuhX-r>Ii*K@+zdL*jO0NMEVf z0j6zTXI>A|C+_-0C2n70oVXjXrNrHksKnifsKnivsKo6@EOeE66QUBgKT(OhDN%{L z84-!QIrYj`>h@2jw!q6$wk2egf?Kg8l(wy@-5f0drL7PWkGr5%b97sxT-}ZsyE=d^ zxjK+2R|gU0Y7tSc78B)a2~n<=66NY(qFgN_!qsx> zd}-Srh-2KLwC%u`btr8+qOIiF2^8ASkbw=2t;0YW+r?RjLq?@-SF#J+ZXi7S&F!%V ztqR)+qQbT(F%H{EwiLE%qQW+csIZMDDr{qj3fo>pg>5WRVH-zO*a9NLHl8}Gv`wJR zm$tphzO?N__N8rKa(ii;$mWVl+kV&(m$v=Uz|Va^MtOChp0YcaJK|xV0E!|GALv9&N>A$x3uAj+Ecl~m5Bt%kI(?*2-Bc7!gLTG_XZi* zjM&-)%2>0r&V+O)p-DhaX~QG84R(#x0`en;K#tT3t&wJdLYoa4*c{00(uM~H&!ySD z=R-lhr^A5k>2PTElmg*WFeEMoLuQw@$}(%C*_F0=AoLWKwxiI*oxzZ}GZ@mBwlolT zJveg)(kJdQL?!M*Vw||gvZcg5j;O>vo~XoKL{#FQKrD2n?L?vycQH|kdlFHJdomG; zdkXc+mbUmLH2Yg&ZT`y*Bf9!8H+0MXa>L4fE9_Lf8~^QwDqDg^U29`#wT*MbhPsx4 zO-%!5G*51AtZx}Osj<0kdj9yaV|UND)36^tEjt}5WoJM}v*JuJtL<6Tu56qQ!u=VL zft^dM%EnTnqJJJSj{f;75xi|ivC4JMgL-=qJIfd(Z7_a=wC)u^e-nO`d2`A zI2XPWO*~wgMt?4RHFtyy*HAkbt_9&S%8+=}9IbNU2BKWJkr=yh6I*iOW};lUg(w$p zCCY`{h;rd}qFlIxC>QP|%7wd#aN%y~Xu-G#jN2}pMGMA#j&loBxh=yME*Nd0-4Ddf zDX4D4y{G!b?*YEfw|GzRgJ^3`J_HKwVMu)aFSb4k%GhJh`Z#2?Vmv{1aeESkXDqut zo~BiCdxogEJxh$^_8eP^+w(-l?FFLZ_99Vndx@yHEhj2&FB28FSBQ$+t3<@@HR}0r zvEz?MyiTKEGTtEj&-~sb`z7No@}l@`_-!^jEE#$H>I1+0@D4V_OUAos;5i$RQD(jG zIQPg@*az5xl7<8GA&AAX4ZnH~WO4i$S_k42P-ve*2KHHO{T!6BFP!yD$Q3LZmG%`k zxDmbv`4PSWa)fW8HNtlwoNq(od^@)O2*UZcv;GX}mW*Ejxl2Zs{R+EA`VHhq`W?uT z{(#mPVH={Nuq{zh*p7%O41jjujcz~R9|#k^69^f(QN*3$MlrQ> zqXd+;Qb;^}j#jx*MwA=n#Mq4rw&X@7QEpTb<;D=A+}NHdH+CS(jU9<{V<)2A*qI17 zhC)Z>dl)!nyEu!=_i)EKMFP*M-W6Ni_t*G~mAj#VJZ8Zjo!40ve0RRow^+gVKwDE} z1SqsUAp;v3TdP4C8|AE{A)^XDhU`MO7YMf}yFJFys?Y^Qg>F1C4&4N{6uP~M3f(?L zg>GM>LN}49(CtT5==LWnbO#U>x&w&_-9gl-;GO^Vt&W3f^(DN9>`V9|WM9H-$&2C= zK8ej0mGC-jh)einG*VU%8D-ZL$GJzR)TUw!7gxkR0mQKZr>z0Zay1QF$6`7NXXTJM zE03*BAe@yu>rBYpB97;NC%Hjm7%&>61{yyzDL)Q`uA)+YJev5<9wffA2kA@si9kG4*_ls*^eKEYQ7L>1 zF;3xA*-{EGAu5GWBPxYYCn|-{AQrk(ekM^Vd=^nDd^S-jd=3#Qd@l8Jo`n4O_m}bg zHGZojx2n%a7enHk zeza;xc@;^+bf^2I_Qm zSI%L~-Oik|6LIM+&+5ZgYpQ8zn%q!V-(ojnzl9U=+^xL2`i90D{9#gWH_?VgVIm&f zme*uAqgmZWPtx#zAkB|{0d)2M?>~_E$Bx~CF7XEvjsqS~ZMUNJfB%IvykzY7Vfl6& zcEs_x9V%saKt{*oPB4$hUDWP)+zrCB^B@DemsTB*`-nOo%ZTyuxSuT@j|Yf49uE?A zJRTzIcsxwh@py!&qFf9FHfUJN$|CB${{*9*zD_q^G$fTzH1sx$rCq z&%uMl*9K{o3oj7m!i&V%g_qcp3(JXe;bo#+c!ekzUM0$f*NAfAb)sB&gD4l?B*KNa zprbYRZ7?2!=PX)d-*uc@#VhSSY>B@k{yrKgFj!Kt#`?dKKHy7zi)-wMXfJdX;3H6I zA43NANo@TTl(Em8^>fH*js1e`LiZ&Izo+f?_?lLQ?i->)_bo9F-FIv$bl(#dx*v!N z-H$|t?kA!`_cKwU`-P~`{Yq5mej_4uzfZ1L+zS75Y`tP18jvKq9GMK=&m>mhMk zA6vVFaA%3L_JGV;V@vS(`8BygYgJERG)6Bl$LI~MG5UaTAsrGI(qrp7pp32Stm{F# zHFkYK_8MDKRBU}=_hW4UjKs>ZLhA<^*d~x!YivnTiS?&h?|V~V)YoQU z_O&^*`q~172SP*QmjNNO*4UDwQrntlx5gHL&{ed?7NQy2HjwzvAf#Vow*#hafHMz- z^eH@us1zvzUYD{RAfsH|kv*Z(?L_US>&~FG4TTJB7_FMFyAb8;aANH1u58KI-H7saccOgV zgD77|5asKhMEN?BC||3I@^usuzK({DD%}_`o{8rys&r!=XV0aQqQN!}TjEL=pn=2u zuSz$bFYQq2CZMeh+8Y$wK9GU!8(SxWGPa+y?hhGNx&z2AbO(acc97fSU|JQr8lpmX z2r&*_En5oRB%(rBM^xx06BW98qCz)?sL)L%Ds%~=Lf1e<=%!KURJ!T3`byVG_LXi1 z*;l$Ia(ks~W^+ZAZYDOwe@!IONSQ%K+127W_vn;ah%J6Lw*sTtJPXX(JR4faVh#v5 znn2=4lh}F~2sfHIYYK7&m9E^5;09HUBZ1KvZD5Wu4_ad!1;TZ8NL*Kst!WURxZ$iB zNLT5O0pwP?3R?)fAM03PG}duoj&(e=###gl?F7icPK3;rSK)hLRaZ7B`Sq4BPxY2Cn|-nAR>jYq+a<-7ym}c zRd`*>u7-?q@f!AoN_Q=_o37V^@H9Qhz;2*b)AdH8e7%Vn`+755^7R&?e7%(@UvDGI z*V~Em^$wzZy^|F?RGZw&dvJL^=8dQI0-Il%r1(<>=EyIrP@jh`n79i5;HVA5CVK(R|NBplVPVM2d(BPx_9AwM+b==kK5cg7&)HuF)9qKN zo!hU1()Jo;V6W3Ex8ESj?Kg?B+i$TYx8Ekp?RSWB`(2{kevc@(-zUoL4~TO6L!#XN zhzPeohAwbF(v_S(%RZr%U&;Cukh0IX(Yx|FH^G%JsGTccf^ZHE8Q9mf%9U@3a^+iM z?8Y%jcyFI$os<5p=RM>hD*w!T?Z0k|a$7SxLJN)IbK8=1o?o0OT@djkS9&boq6#wP15t}Pok2l7Kcs=fi zM#?sUj1sHAUvoACMr+RIV6Hh^KL#CZ|8_3-C z7!U8?mK(ILZ3m3T7y#xN1EDp>AP|0X8xmhYjIAZ0jFmd;U`V$fmjQCtV?5r!9Ckle z1uz<`63nrxpf%PIP-xpj2DSra_Iiv5ukT2+-uF(xsIQ&D>}x2r`WgnpcMTx}8xEPh z9v7F{t~9&#csCHbiq_-Z(Zm&P$iPNG`t^8EAf8R<%+-)SgGUjS!J~P0fM@pwKdqfgKZD7lJZ&tg{{m85Qf} z$u4S(KxsR{?QtTlirQkLqIME7j@rp=DQc$>6}3}|irNyQqIMclQ9GTesGUJn)XpR- zYG)A;Ru|~o6SBcJ{&DZL4$-Y)ECHq=^9(hq*tIub1MYZ|@Y=~?1g=pYsw;`jn zy4Z2|Rq9e9m4a(Rx&U!863MzHw z|D)_I;Or=tw;jVRxQF0bJf2_)8XyE2ENBQJAwq=C3BC~Ia0n3GF7ECcJh;2NySu~p zy#4m{?%lKh@0ZK{-KwW+&gni?Q&T-VnVt#PYeO921}KeiBd8H>LVJXpAzm|x0YQ3?n4$~I6peM3m% zz9~He|CnBu=(qShSCo-u?!BWPC~5CX$Aj}ds2bi!7U2U~eQFCW*P&NFFEW$6c+M8d6_U1QX_U3oB?9CrSd-JEz-uxxBH-8K5%|AkW^RLj} zw3#2YH*JM@(+*u0==N}9=nyR~&@)A@s{}kfe`dB&peJ|Wwrh}7bwzGJuszSA)7J*h z#{b&uLjG(teF)4BRl*#|BFvesb3wH*ceKufEDLl;ag5r$5Q`4uC+3&cQCmRhs4XbW zQCmnYM{QxDqqd09QCn2#s4XUR)D{;yYD)+mwIzj)S|=eB`;3jKinO0pQ*YB3@p@A(f zMJqw66s-)Z6s>~xepnT%gw>EmSUp?UfNG&@w01+*7ieBV&|Mp1vFib)5qg3ep%>aC z^oDr53X-?0Wb2wxEvyx-Ya?TUUI(Zv(7d8xUF;sIACyMw4{D_K&>m@hi1%qDd7n12 zu0Zz+8_67h^Ttr>X#l96HbJ|mO(9+_h~#O^$hrdEJ8UjdMXR_7BnkiOJotY zLZ$+}HCPQrG;f1UiMy@PiMyRJC+_xYIdOLoI&lXJowz#+owz#*8)AXpS?I*wMd-xc zRp`XsO-SMnk^UbF^zMAVF$_hPxwnUUprj3xjtA$SP&Euk7GZ>}J~;Oh+Q*T??Bgi4 z?Bi&meHP4CQK8D4c&Wq*cZcqeve#m-iSlj zdYXT))_XHYj2IX8!yX?1u|Lol4nUSsI#8R4(m~QON(V!{eh^uNLu7T74i!2|lZ81- zhpFW#9WHc~ju1LZM+zOKs?bq7O6VxngpShDLPu$ekV}5Ypu3FRBu-q%!n{^HT3q<2 z>Qnsw|S#UOpFHPF&}~jp6)g@$bJNa(#vD6E0+n{<4@{2^WDJ!d>()F_T?* zFV^>({G%LC)V$n`s>Z+M6;=~~CbAUlTr!oxaX zmFY*(-W88QmGC&S2v20|lTa-@6|GMr>nAVX_VA20_9_wwW65c@;;az0Q35@6K zzbCVQ_xoVk*9Wlr`Vj5DK7uOYV`LFNLAIR2x_1ws${eS#&mg)gr?AgyR>Bv^B7BKV zQ`lD^7l5Pr8)VAhZ-vg_?}RynzgNo{{DaUL{G-qr{FBfb{Ijqj9$>!+ox#5fox#5e zox#5g$>2YvXXHB2$hTP75f>Q8BKIfX<6<$g%*DUe6GiSH>3FpM3spm#1r&m|$mDA~ zp?z&H%)WL|%f8Mew68M@?dvQ;`#P)8zRo7Jud@s7>l{M+I;Rj{=R%i7Zf>|S%o8mx zavdYr9ZNioe_pmIUnW<=d>}iSqL%)_nHwwgz0}hA`2w_^J_|yXun@8c3uo&hP%SJP zt&1VcDz~^e#%&3RN7ThnbduFoZYiPT)>)Y2wzOJ~+cHAOZCRn?ww%y$TVCk6tsr#V zRunpJU4)KXgOIqbB;9g3!pbtHDz}O_Rk>BgsmiS;ZmM#ttJzwWTZ0X`%5|l|<2jIJ zW_6ETzh`=e9&GWcXitb8qbn%AKpn@u(cTe#pi1bAEW(=Ex)xLmYe(xk$X04xuduE* z#FO2AP#U2>s1epfdxZ5NPMeXOHfQTbP%Ug6tpkv;!fgW7SGe9`Q|umTGboKT5Y$MU zqdn3fs1mk77GX^#7H1CE?nL9-2%-vm>Gk2(3&fGnO&fH-_XYQUtXYO!e zL#%EigwEW(gwEWNLTBzMA(=Z``hPeZzD zqcaHY<3wThv7(lJoFuf5`wH#jenR`WztBD&AheGM3hm=TLi>2I5FZ=SK0!y8uV$Ml z-k($Jfob{OdV1Bg@zx0V}pgO2^n%A#Srq7NI7qV|%pFv7I8!u{}mD$M#sE zV|$#?v7IV(Y>yW@wkHT3+Y^P3?MXt%_GBTkJp~>A?O@!{vBSfuYU%Ht(zkG0xqafO z1BZvxX>Bo>XR!J&ogpKJDnj85%meyk)qkEs@Gvo)6?dl)`!{MZSTD#M4wzog3k&(;UxJ;VdkE}o<1E?$mr*R8l| z+F7e*ht8p|@*d)D;apn(*FWeF8$WK}**6$JZrIQY_jL0?cJcWr?&(IByZAy_yZ9pM zxQj1_xThP*J>9Z;7hfjyF1}otckvZ!c^6+P^e(o%AtnW*Pp`KT^^nlfdRXXaJtB0p9u*R;$I#90xPF`_w_(eeTzFC+#D%A% zqYF<%TvbOF;aOSj!gE5q@Vqd)@Pb-);YFcccu8m%UKZMgSA=%qRiRyYO=uTh7utn4 zgt+h~x;zVf3+9S>wD>IWoyc|P8oa6GUAE{faC#-Y2QnGzEO2tV#`wOz*X%_#AJCo> zC#w%3Zoftr;p1%m1geEkqxCanc^3G&IL7S@s2aYEpZH2v$L(vObjx^PoLKN2n6!MHXScY@Hvf zg$1H@L1a7&TnMN;3*=oe3uE_4i$H0lML~_U7}_H(4)GFlBrhRHwmb{uO&6VHj=y;+ zDD~7CR8LEz-P1BqB`k|9!g9!#XMsI>hUI0BXMrm~^i-Y&u1K>Ix*&_tfJ|qBD}mLp zax|}kOqsi?(3!iMFlX-SYB_V)5IS?a3Z1##gwEXV!iIQY^$yu0Mo&g)P~l z;CKnhkCH7_w$b8L*~W-dW!qcaRN2O=*;-{A$A(j6+L92l(!AzP_zeZs-o5UWHZltwrN)Ch;7 zJ;G#&wUbEJPG;*7P%Ru8tyN^KY)1k0m91~6VfRQ!LusTbphh|d?U9a!cn3L>caS4n zRyN*ralFj&H=h8do=ybS(@ALebTY)NT#&rV1=+H)_3Ro>lQ~wl(;<2)E87_~dDkJ5 zcO4>AWjhP3hO?vj9Arw|bA?Xa^MpBZ&sWQddx6l2d!f*Ydy&wId$F(~R<=uoPTWg{ zPTb3cPTb3dB<>Z`GhEr4zj*6PzR6wL$TADBR$mmiYoz00dM#89*CC5=y{tY=ZxGts z8->~1o7A$mHw*3UEkb*HtI*!wCbYM=3+?SRp}oCBXm9Tn@{cTcN#_@D-A#*ot&yb% z_i8&H+$SA9m=0CL{m3FbAgeuiP-qVx5@rt`R?8kdBD4pO3hlvTLVNJI&>lP?vYQGB|wLgT8+Mhy4 z?JuFD_P3Cz{UhyXfORhKLHk#>G{dyv@B4CwX)8`MOgr(^eD2&{&DLg^4s6IX%uF;I z!_3Gst!9Z_zgxP8S=mAb?96>7kZNgXZnOqfOXom)KgI9{cmI5_WXS7FJ8mfe4kVRM)SvSM<3d_kHfAjKC>S+Z~J*|j#PhFr&Xh8CSK4jet z(>tszbDUvTf#|86VOFKdO(RHd8bPKRW(}|!x<+$1WJ=ubLMLtyVNTqhYB_Ox37xpT zg-+Z)LMLutVM9Ew))YE%*AhB$*A_Z)*AbGq>q@^ou=9*P1R$R~_v34gp+B-r!S&P; zm2G|Lc#LiURl|nJB5Wk9kI{{Vc6ER-ySj;5c6C#sUENG*R|g91>gGbbI!I_&w-DOZ zEroV!&0rTX(XmMrRHgf$T)F*7mmQ>lc2ieEXD%%eFT2o~kOw+luBg7SS zBv;V0br+}>c8%8EkY!~XB92kp9jb<*@e_N<>ZlD9I%<0gbJT{b<*1DiI%<0f9kr1{ zM{ShQQ5!9E)W!%MwY`Oo+E^h`8zR11@%^)O_8 zW#d&ZhigNu5=TI3gd;(XP(^!$qag01Msgo@woZY#k2+e9MaIf@98g!;cooc4>>lZO zD2;RisF6-Yd!&<~N;nx=gj0|$D;w{+I92BOn@@vMPp5usiF=LEiF>V(#Jx^>hAUfs@z(WxtufqyEK~4Cbwp*m zNje^*H$&BM3zGY(W%V(7o6xS_F3he@Q_HU2A+)P^3hnA$Lc4mm(5~Jiw5#_D?dp9( zyED*BwH<9^+xQsIqnBMr)9LtWwtB=WLJaYfY8yF`CYu z$DvAi0$GG7v-K&c7M_mQXOLxOdsZBy_8i1rBk>b2$m*!QD0I|b66UDAtd^tpiqKJe zRp_X_CUn$Z7dmQh2pzRIg^t==LPzawAyIory6L&CoTwfZ-jyv?w)e!Tvb`@(mF)v@ zQ)T;5&DJX0M{LNI?PD6OEJT)R^=ah#-O@9B#ukpe{*~}Kq+_^$HGBc;82%FN{qPl3 z311^wYnZLyLbdQ+w0@6lrLy%3KWIZ7;YTQq@Dr#JenxwQU!Y3(6>lYKD2?C+>o3IdK;fI&l{kI&l{fI&l{jI&l{hI&l{lI&qf}I&qg2lDM6uXY{$P@xe{; zzRRWfT4U&pEK_i4bwp)bMmip&%R;OoL>6IrS$&MIAhfG13bU(S)UvA$Lc6+>(5|j5 zw5zKK?dqyRySkdtuC6Y$t7{0kB+wPzrRl|6-Doz3?$PMt)U- znvG#&8Phd^0s0^=Y$6?9*c4(hA(C6GWwi^N3+=)nVRm5)wd}%{Lc6e)&@OB(v3q!gfNtu)Po$c0iZ&%V3ywg3;n#uv6r^LdH8vc4mv_m*py97my=OXU?5j z=fJXuUG=p=o!ge{9(JQWB~I}}pi0;sS%jh4x(8GX!=iOhWI4eM7ss%TfOs=u{KQCE z9kx+Ihi$Ylhi!~n4%^;Bhi$CTVH+oO*v1PTwh2OqZ6Be-7K9GlL?L0TNFTx9R!8#x zs=PibOp+~4F#C$rx`+M5X@c2bJT+ewI6%#26HNRUNnJ)ckPUf)IfzDMI2c*xRb%A( z{n9lY!WIf(=SnyfQYr0R4U<8Y(!XeYsmTuhBv(&tqpO6 zDNq{W7*Hb|i}nb|K|CrC$)obJ^#rIEPK?%*ka2=J8K|3JcoWPi*gevzP#WnpP$Qj= z_DE+yT<}G5!57(bg5eDvXUQCY^Vv}9=^Ri!or`u)=RuWlKC%cGAX`o_y?cfWWsVcf zMG!re6U@alE8!9(H%B1T1ale4%D`y80+|x`N}&_?Dq&9CtJQMiUL$nkUMqCsUMF|xC+%9!uFALi_-S7Y^k(;B2K04Q*kP7pNX4F+vjSwR@%N`LoRJ!(r64{ zAz;`2kIdH9_{_`15^n=B8%`-w*Cy&!Y|SKE3%c+)+hX? z4Y5r84y6(P05!s&Xpit0#ABtAJXShe|AlIy%_6e4MaI(B4yZ3}eM5Wf9;pMAMw$uK zNHe27(ku|G2$4mY4cW4^@rI7sWsbjj4k-0BC#at0Lc6EAp-PwsS%i+rmZhyv*D$Zl zv9!$x(NkI4=BLTc(MaBGh)ktzA+Q=2j^;&>DRCDSI&l{h=EPlGEhp|0LMQH$LMLt~ zp%Zs0VM8o!orO-^rG-x1WrR-LWrZZ}a?&$e+Vbs||MlXn<>{g^tbi=jaYc1Xnd>4Q zkJkpM8dgH`d^%Zuysjd&+p7w*+pDQ%w^tY1?KOmUyQ|P{cN5y}?n1lWLuj{q3hj0; zA#V3ZH#-UKL$fjTl`)-!uBi{=!dlYNg|(q-SO-~zb!D{+{e*U*zc9P7o?3QceW6|0 zKxh{>6xxN2gmz(Lpagu1 zbl7$k=CJLimcuqg=&KzQF5gI{_a0uEX912y!WMmNz%hto8 zS~wzFk3_~wT?OhYHE)7B3cE+DL20C;L5(y8?U9awc(Eap7aJn$Ds`_gRp$7ckB3rE zCxGhdM6`Q43F1mHk}JW;x=P(UoGNpy)Tcr8R95QKX;#7+$ReDHOqKdSU^Sc-&1WN1 z;+`XP;+`waiF=+}PTcc_PTUKGPTUKHPTY%x4Y5*REOg>tB6Q+jDsdivC zdW+Dm-YT@Kw+Zd)?LxacO=wr|5aQ~c=(4ok1@mT=XmM$~CvyEE)F<4_mQ>pA1KG#T zO51dOtyyWipSF|d0f^VCAdB!&wmuBi!Xwf8D6%YVkBMX09*3&oiTH^pWp&t|5;|;8 z3v<|>QOjX_R_L%jCv@1J7dmV&2pzT;g$~!^ zA4A+Nf#gBW+4>p8gPNoD3uJw1J4_3a)y$Q(=COb|VlrEO-K+yac`7GPv5ZL@*g^$^W- zAXDPbDRkn_CCrICw^~lzd4x{fjzTByyh11Ld_pJg{6Z)00zxP5f(nXBcpkQsaN)*}3xas@+=uqdt3X-UswaAQ~;S?2r_uxja& z(y=IXf~sLDWDz>c>Y}i;(6L=cm}9%FT8`~v)wuELwzFEeJ$B$^7 z{aJy-f}@S$#xOuVr@vD+ffc7srDL2ngQ{U5vIv{Y>NpJ&I!;>%bDXwR%W>LD=s0aH zbesyIgT8Il{(B=8a z-Z0P6ix!`cjEh`1@9|og@odrgNdHQh08*Iw2jskvdLMnS*+S|-drCYfoCsAy1zChi z*}5-O3;RXu{>bu#vNf9nXe*Msfm;#&9CC%&e0l*YBC0;bgWjW3ppTfi(B_uZB}W&Aq3gy(3PC_|pK% zp9b0bAE*}2iq^A{t(=kc3g>7;9N}Cjjc^{Q5za?@gbScbxDZ){i?a1%s1`1X)=QD` zjN~$){*0t|xE#Ajx&lfgT?uNWtI!_lYN!&fK^Ea!WZfA_pKzVb@i$)&rJim8)zgh= z_jD6f2{$8)a0{~TjHGY4Rpxj`avMZX17-C=`kc_NJ}=C!zMz&}eNkvvUlQ8YmxXrq z6`@^yRcKdV6WZ0+g?9A~A+ElOE{oe+FzW-O#l`KN$Sn_{?!1rVUACyWEm8^Zf$U?7 z+rZs@v&{SYnj89;xesVMcRqwz9f)LgV77h&u{tnXKSP$K?Q?OA+7}Qvd&EzCC99+M zwa`)fMwp}aty+%ScS1+)d!eKDgV0g?QRt}sBy`k%7CLIb2pzRwg+%Q)=_3a2&c9{m z%J#c#sj~ecPL=IXajI;8iJL0h-)gp2+5TZeu5AC(U~%ALO=;COa{X>$aUffK47Z2U zG28*vF+3C6`(b8?zYLK4Wst42K`ai8);W-Mm90B3G?`NyVwIQ+N+Zk-YJ_>v9-$+| z;y@&e1G9C0h{b`?x*#%EwuOL}m90CkJ6RaJM_L3*BP|MQq{Yx4X>o|ffk+kyB3o3p z?z~i^lg#lqF9oHZI)mzIX|#J<24Zm_lEs0@7L~308Y~W!Iaan6AbKh*+ln+<9EfCb zATm|9l|U8;M)NAjl(?%3ow%zBbK1VuhtP@JQ|QF) zC3NEU7LvGqq-VIYHD5y0mv6E@5Lp(twbU2IZEfjzn63k{J`lAZwyb6TtrM3x?Gq3w9E zrF8UQE2tW_Mi!xv)gEjkvI&+Jha0_F%Bk9_%Qz2RjMv!OlW^u#3?&k`?S^i4`aFbYW7u8BboxA0AH;<{q@xSNpla9?S%l%T+JzB9yRerqyD(BMyD&;< z7e)*1!Wf}l*js29#tQAiIH6q_FSH92gt)K|x}0GG+!!WCi)WZh6Zs~{2!OlJj>Tu9EdDa@OgDaWqUz79-}WpEDl7n zI8as}qpt|<>Z`)+>T7D*)z^h~^$nq2eN$*x-xAu@w}p1~9id%)S7=w?6XNRo=(4hX z0JAtST3p#aid=UH@kWV{*^(;TCm{Q{S!MfFUu&vtpV4&gd=9ZV5Xs`eZ2byiabUE5 zgDflCx8fMJ?;vjWh@bdDR!8kep`-SbFh}iYwH&oygpS&;LPza4p`-S@&{6wC=&1cE zbkzP5I%k%O$uXZc#40gA zltx$p)CdcrJ;Fi|ivy7?4$Rg?Ar=Ql>*B~**_Ht6DjP5CSQ5KO>I9{cmI5_WXS7FJ z8e(xElEs0@y2{4lK$+ujULHz4tpKX0718dg3&i3;B#Q%)b(M|9filO+whBZ~Wo28H zCW`}+EDl7b%C-i`;=pL`hD?duUFgK^ASjW_I#6g=Hy7H~K|;H_h0v~UDYUCw32}96bXnO7n8kt7;>xyd z9ZG*}#nEYoVg$o0F0 z#er<$$m`4-2_YTBovYzMP{;5=Xzz!EAr=QBSsa+HheEY5Ia&`x)>k%OV{y1P#1W2w z(g;U_8lj5z2uDFI4n(pzFk7cUEDns;W0A449S77^HePcv6}v||9!evf0BWQY(H`j} zh+9IC+!BIpS=o3E!KpIG-+UUBdO96cPiLUr)0q$_yGRxXB3o9rZY&OzIaaoFAbKh* z+qpDZ9EfCbATm|93qTeJM)O6;l(-iQow%0>bK+jAmJ|0fp%eFVp%eECp%eE?VMDBJ zR|%cCR|}oE*9e`s*9uA8>!fG&UtpV-&|J^gSR9BfQ}9N0L}j~4Iv%4pLo5zNvN%vy zAEUPk?dt8q?CLbN?CKptyLzY4uHGfIt9J|S>ODfcdaux~-Y2xH(}i3TxF6l6X$j2( zG+7@QjV^8v>4UiNuyl0c5r}6}<&M%N#Ts!<@)6t>%hczgv2Sx!FSf zb7$*<5U=Kr)`gL+%rCvdBH9o~SQJVlECy8e_wk`$LLg#2*8X4!8 zWq|tmrFU2syGL3MN+T@~YNQp=9%)60>%B;>_af`&mp)-7nd5I>8A?5^0;;D~(e7zA zs1jC37GVu!-Tcxwbd@>IFWn$|D(9E(G%KM8vIsqqX@2Pivgj|G`yf-|_7ysD*A(W& zT}v$|?%F~p?m9vz?z%!JZa-l|Jg)i+ow(}>ow(}@owyqaN!$&kXZXxH|9jd-e2v9{ z$T9^7s3R)dCera3-4tSRAdz>H6vJDr~D%&L4Qf1p$oGROX;#Ar87dKV51JrD- zvK`2VT-gqy!P-D%nO2RF>vs!l1KHwZ_)sVv!;?WB!-t{09}b6D8;E3WV768v)&@pv z4Ow5=cs;|>+7PS66ex{w45$%~MSFzfAl3#VSsR$GCqS$XjMkHov9g^E)KxZK-f#+b zk8~=OMmi1DNT;Jc(isqI1Cgu^M7FGKydvN%nd5Ih8%jN$1FENU(eCLyh_!)8)&?S5 zR<`b}4U{=nwu>NoDl6N?G+7&nWNjcaRkq7O)&@rN708shR|=iDR|#|CUagiB_Zp!S z_gbM7_d1~y_j+MNtZX+3owzp&owzp%owzp(N!(kcXSA~Adl&y}0nM#+!8$=?nU1%s zQ>xrF>3F=}0kKXH$vQzZQb8HhDd-dWATB&99bI?|s)nbLMR-P5yYQ^gE<7j9Ed(Y6YM(zklh9H7S?H+!A|z_RO1CJ~ zzsZ&g_3z?TsQ(bBLj9+BYCZ-1OU>2__1|pBh58>Fjp1KpnO1F<6xZ*T-k~j9T$0*B zsU)=rRgyZOy&qZvo@JuMA!85qfBU}Vce-J@$*PUcvsmxt)7EYvH|tb`SjMd*S| zg}MP`$zL?Dj7*8UiqMI>sxT++YHB%gR~I^Q*AO~!y9%AS-GmLXPpuJ#vZSJzX^ zuC6b%s~ZUI>V`tQx{=VXZY;E`1B7;U6QNz*REVpaq07oP5N2s$w79Yjid=UH@!0Pz z*pe#SmLU7MS!LTwUu&vtThnyz6c8%|k*o~N*6kox21e@+$g;8x7RRXV2(dCSeqv`? z9kpGAj@qum9JSrla@2+h9ktzsj@nS6qqc|8Q5z<7)bnvYJ@}39^p`km4QfB24?Hw z5Gwra+h?RjzRt6&LDjO>UWsbl3cqsLB z0;rx&M7yVxAT9$VxeSb~t8AKgiF=ul#Jya4Mk`xB z1#P)}rgL0AGpNl`qua9BU|`3V%RFXm@yr$cmU8Vv?{KAlnO<&u6~Kx^WSQ>QXcJZR zTIpC1u7j%KdSnr9kk$3zMxn!clQ4(%X0;sFTZ9hltwM+OHlf3MyU<~sCUjWu5IU@P z3LVzFgoO2ObXi63fg8iU(c&t4U*!73wNIGN7FE#`E8%{SeA11v{e6k@0ex*y|90gy z$_HsXQ6GXT;bCME9?8~6p;~w>S|3N2W%LPg4BL}XH9QqR@wBWC+cQFk?O9PizTrc*aG3Y!_G3r|qklDg z460y!g7$v+6ylN0$Rd26tzSU3@MW}qg{&{5JgEI^ZHOa$1EmqZ1vSEVXpitcR0%&I zi|}K%{sh&+&(Zn|GM3R_fx0rvgWP|^?vZ|n(nx=R8tG58NBRrmp&LjZx`Aw2MtM&4 zzcR<)+@@3RsV%6U+M(T3d#DmRAd4^)vSk_V**(lGb1b8?K>Vh%jLu4vN6;a81RXM! z(K*0sm@}H^LZ-x>Tj<1{N0<}0qgqbfd4*2g`Gii~`Grp01%wT;j4mj2;w~g~;w~(7 z;w~a2aTk@Iu{&d3Dkq=lQaNwSQrVf;PyHWn7%N|uv~O69;mS(cCoE2@Tn)Db%#uQ6 znbe(N70ach<5Axk;?8Ac5tfnFNBy!w2X8rH4&L%=Ie04w9lRBV4qg|bgV!K*@KzE! zcqwjAfw+7!V|%a~jkpbz50CeqP`O(8CDBe}pWt6kV!XcqMp`#Xrj@m>aQL9L| zc<0I_*~$yt;&f}se&X^1w|Hv4ZgPN{&8Ee?6z)JaZirt;S}s1=~O6hxXp3X(Pr}H2#a3i_EjjWp%`-Tf;_62T;p2}(QVwzmwMsk50 zSzh1QsEy>JwyZuz?-ttCdxY85 zd)2b5_X+LlbfI0nUuah!5ZcuTg?9BJpL<^NS=L%Y+2cQ^$hdM94p&=5IvQZZGM_O`wq#o z?~tjoEd=uHyJ%hnnG$zVp%Zs8VNTq|)pFu4A#~y{DRkm?5;}305;nxj)>-JpU0UeG zT}J4{T~LZ|S@gt`99PYa>e!*3@=9 zSW7y3ur|bHZ6ueqWwi(Wg!Z7nFnh3`TJ~Ulp*`3@Xb(0N+JlXR_F!Y7Js2Rg2b&1( z!KOm?*JkKu=gtFZa%Ee_bnZMzAH;<%q@xR4Le;PpvItwtY8MKjUD!sLUD#GFyRe>jzkl=TWj*`gVS zw@K{*a;)h->i)j1dYHcEhL*zZNpng(5{5&SFalYGy|Q&AR12e`bu_Y^VaAAK)b@s| zVQl=wI9VOF@j^#!f-pyIAGI8{Aav9w3LUkI&{3Ntbkz10I%@j~9ku<1j@ki2qIRHk zi+8RZBwLzc4i={wrcs<`m_x)<^SSe(YPL4ROlCu#VGg6gd%KZkS{)I&ez)`vN3w+q z*trs_kZNgXUgr&}me$bT4@X0lFa=qJW3u&Fs1}Zk)~U!=W|%(Vcx{LyoB*W}P6Rc= zNobF7GQ_hiki7dZTTg>(;q+)d0~u$SGlBXUrf>KUc8_!xltwxm)JW%`J<_=lH#8%; zp&8k7hT$>i7swoc^Mz3A=^{`)U5s{5mq3+pDY6KcAzRKcy}O3XWsWn<6%aj@Gt8AV zE8!|+5w1q28Ri<02iZmQb;y*s*9)DvHwbg$-l&!n_a>ne_hz9J_ZFcO_f}y;Jg#mN zI&p6oI&r57ow#=hN!&Z7XZW`2eC~V~U*q~SvP{8y)De~KUg>y@-Un5~bYv0km(|DU z146s{pfJ1okXm;2VWC}pL}*tZ724Iugm(3Dpkf?nj-J-I6DO;*+Ux`y?`&yhT+c)B-%J!|AtyQ+~*pMsR_cR*A56CjDevDkd zTe^pz*y3aOXDA)RzkoW1e?@yg{03FR@5mzjk*$A1weVN8{*A1!Y&>56A8m+L;$J9@ z(1uH=8lf%PBea7mp*^w)9kO*Ms1|09)>)9Tvds$ARW=?!KO1(BG&__=ngi5GbD}-c zTo7+NLGrc}WL;(J6*|fsfAhRh>S;buJqWgP&KT9EJ9aV zeT;S!+STsD>}n6S>}pS;UF{{btG$JGwU5xQ_7&RIHHCI{EumdqTZpUcpv%g(F5DRU zMT;w2|H$=+P@k|KTU6P&DSmyBeXLT}-{))_=xa@tZ9|&QosFPM*ce%a0ol3t@KZvJDi+sBI2a!=U(yEo61nwiG&QTM2X2wpPngD};{PHbO^jTcM-2ozPL+Ug)Up zAav9Q3mvr`g+y&9>85`Mj7#BmmMvAbUBs!f?J7={Z8vdKWgDVqYn5$xHss1Slm<`0 zK$dAWEOPyB=^OTB3rAl6N*E65817#UBS0O)d!fA_MnaV^3R#5F**XTQg}tM7EV90` z@pSod+7L$=52X<%fEr;Rv_}X~B}_yXp^~kWpjy~BTK7Z7%CRb2J|3A8_XMF6_e5b%+>_LD;+`yY;+`UO z;+`sW;+`gKh?VVhp%eEEp%eE^p%eE%LK62Z=^6WHz)5>FErmOquQi5qkYx&@u7Ynnim#Ae|FBRI=%Y=6Ia-m(lLTFd76x!9Rgm(36 zp`bade+s2XlY^6WQR?ZT}>yKtK@yKuW& zc43;(F5Drs3wH|b!d*hUaJSGd+#|FL_X_R8eM0uubab<80{7Ew3=hbdt_eH{%Y}!e zqYDp1)$jIj6Tty{@k{d)oCIw5P-a z;Z3L#-a;1P?QDGqs)cu>^*v-c!MrbyVfz58h7Xb4z$~l7_OZ}m`$U+-_NiJ9+h;tzeI<0*z7{%c-v}MHZ-s>IJL#si*6nql$@j9Q3FZfJy3gcCahhO$ z5>L$+1%6hu*#wiQ zbq=T&=8V?4ka2>U8>pXPdWU(id!&v~8fjioBh82QNb^Hn@I`XL7g;yK^a%^e9Dnn| zQ0i$BP(3Y*c2A2z+|rEXmS$w#1k*PxDRZ1)IzjYQPB2T+tc1?UA}oze6U;JTH7py= z%OO+ZE-!TAt{}{byP{f7+%7^VZiCQ?yOPj}yRxt$9#^Xfow%zCow%zBow%zDN!&H0 zXZX}PUli!d*BV1NWSN59)e)twhjctfdqUOF3t5ETvicb9Bebi1h1u0L)v~K=3GM3I zLc6+-(5|j4w5$DucD29IuC6DvtLqDKbpv!++BSq6!$#5K(zbErx=)^r;m=pI5wVb$T3Z1zB5jt_t5;}3u7B+z?Dkb^+3l-^ zcKaHk-M&_6x33f0?dyeh`v#%izENnmZxZ76&FE$)p|{X%47bXdPC{?f2XWzc>FB~V zs2c7-@*Fr>?ZRC`yKuKKyKs+McHv&3UARwZ7p4pC!u>+K@PN=RJSema4+-tU!$Mqm z1YK6@M`0d;94)TYk4LVr2))7+Y)O^+NsyFnR;i!T*P2!8r)m3Gcm}G3XOTsCE?b|6 zYT<=weGyq!>X*bZY%fFA@Jjr|tFk(5uL&Kt*M&K3Z>Z(4y(x6q-V!=&Zwno^cZ3ex zyF!QUJ)y()zR+R&KuFj=lx|U}Kawp~>W{^#Qhy>&mHJch)O-^9nVPLt>d)DbEAhp*Y{0UXUU&tc-ovr^sweWAWwpk`s>b5|ArS2QrVfRSwp)^tl zP$SKR_DC~BJkl7+BaM+QDs>N@Sv{M~@i)&7rJm*h)zh44_cRy8m0%=Sf{`sMb&oZ= zhK@4FN7Ep*~8BP4N`m7dW`-Lx8RIlk5ymPeK;xPm&Ow5=!| zkI^nrH8dc35S*+&MpqWv)m4Pq)m7E9tE&m^>gqzfx`xoMb`{#yZbG}-U1(Q(2<>W5 zA+Gj9m!+*Y%rlUq#igxpub$Q+d8zJJnKT0&<|OJ z{@J=7R151z>jucOv~4JkVcQ6*hK=JV2FU8LZ6b8oHWlWuZKjsPHc;rWZ7y`!1_>Ru zErbr+mO_VZE1|=-wa{TJgoJGy=@zAJTiH@++fJNH+xFsA+IA2(mA1iZwpQA9WJ4}( zJJDziJ0r`y+9h)Re(4@|Ws48u-Jo<34*_)$?~e9<7z%N>1hNRjvUN|W7KTUb2xMJp z>%r5)_tJ(~CPqSOgi)YI7>)J_W1vdd8(D<0**XrYh4Ilk0U1w1_W@d#wjMl9JYe@o z6QMLx1=L8B&>m@Ds1o)=7GZy6U1{qT4v;zi<^!SB(?OtmIvDMq8X+zPBe@ietSfE3 z!(^FbX*&#}r?RviPLo@Jk=z1|Or@;~a@RvN*N`c3j}|&{rwDW69;22M_gJA5_c);w zcdF2dd%UnAmbMdwPTUiPPTZ4(PTZ4)B9=V?-047LI0IQG{F&NBA^neZtO#d8JW&~0 zgmYwdML1XJz@8_}fjwU>2lfJ?1AC#+fxSrRz+NnLU@s9mu$KxQ*vo_t?BzlNdj+~I zq*ua?;i_nHA-y_s{Q=u2T*H=;BR6Z)za8mwEe&!?H^@%*lDO;i#X*xhluP2Sr|o3D z0jh)>kwv&ETW^MH;g)E<6w-Ssl1Lg$~?Z!W_7})pFqO5jt@9 z3LUungbv(vp#yin(1CkE=)gTFbl@Hm61az@j~FFZJ77q2v+=dLPXiTn#=Rp;X7tr1h zFG7{@5|YO*XX`6aExa17uOaJ8DUZc|T^r&EZ$N2;H$jc?7TP1c4OPNB$RfO(t?xm# z@P4#@fQ+T|L!hpd^4RQ;uzRGBp)}Gbpho%>?U6o%D&ccv5xzjSETuf1`AeDOZ~h8O zJ$((Tr*F{i>05}0${~5E9I|C8?b<#3Aag9GKSK0WmeQYSR>IH7BK(3(rSw;@8h(rB z-;pVC{}4KH{}krL{Yxz;?%zTu?mt2&?!Q7OZkuJnhFD753Z1y^gihS{LMLtqA&EPa z^o-phn_j-RUc2=2y#-p9OD=T(U*)oCQQXW7SXRrfVHR5DqPSV%#xNVQOzYWU70fxL z<8ePH#68SN9?UGOkNbIq4qr!M4&S_LIeha89lrU64&MSohi^fl!?%#o;agbf@GT;A z_!boszQxe3Es9$(Es9&5?P*cm?El-MxFz^z8K-VxNsY6A+xUvOPB04v)pNS|&>2>o zmX?ljS_a~ZIFi?#$m%#PFLaz%5au|osFvf@Md&y+2py-DgpSk7LdR(pq2siw&~aK# z=s2w|Bu;Cfn_WNYN|P(yGA0+g>w~z^Lpr+96XHrYk}KV^+J!zsyUyUqa|JGj$BuPc_8=zwrFmg z+?IN<2@Q%w7hVcCXmb3As7lyWUrjCD-Mbm>De)*C2ywL=$<^*`-2&ojceHMWEN929 z#W8dR#MSQjiEU+d=(ZC&blVGa=yp)cp&Kl8=ynu3bUO(hx}Aj%-7Z3hZdaj0x0}$R z8zLlhyGtK|izAQ3@$yv{LuD6}f)z^bDifqCWwN`xuaY16RY|u;zlXXzz=05LdjBT=CAG!T zP|*gDF$pZk*ca9q`=LF?{t(x^kzDi6)`K9fc}Hs_($~C!`Z=<9I23ytYcg1lbr`I% z4o7>eBOtDNBf090teYkKgrj8k@2-JmUq{30YYN(Z9RqRQ8_9KVWZgX3H%yh;*S#US zD(A@)XmZ^f$#rjJdEFc2x_306icBedn$RhHx-h5k8EQF&&lEa^|08q?pCxn(pDk>N zN7y++r|`K#r|@|~r||hgQuqStmzBM*4CuGj9)n)^{>r~bzB-`adDFK3vf63d$k&b@ z`TEgh;2R^~;_r;6%PAM~JuY@5%UrxzJyGc{k&cJ!r4SdpkzDMS)rad9Li>89F#CFy zTK4s7p?$qZXkV`t+SluZ_Vs$9eZ4_wUvCuJ*PDd+dNaDLbhp4<>5djxy4xbx9ZUS_ zb30pdrJF{B-TYsb?hbvmS*5#^wlnB1s1oi*7U7<3y%(y5`=WI^vaEFXi(}{>fU4oa z_=$&Pb?6=zI&_Z+bLbvb%b|Nr=+Hebbm*QCI&@D89lEE44&Bp2hwd4nL-(wZ&^;$z zSLvRYHC4J7#HrG~C{C5`C2>=wds)raD%~q=$d&F@8ax9US!UPkk?Z$P*YE~g($V}T zSRT!9!8)4XMtfhp169Ji$RfO#t?xs%@IkbGh^()4JZ}9XZE(f-7%a#51lAazqCLiE z5a;Mf&e5~=OQ;sUiq@}@vC@45)Kxkj$o?(%G}d=uIo9{E#`*#6v3`Uq;U{Dfenz&e zbUbtV7n%LLe+A3FeuLH5?`Ze+2gF?;NM8DlY+32L^$dT@94p;F5M7m(?q8af&}KP( zw=FVNx^`eSw2$Tv$dtk}37x_-3v&w3qLx#5R-sdPHlb5^cA-;v4q-#AbaM)w!gC3o z!gC9q!t)48;f~TXUg^fQXwlm+QXzATF#a9bH%ps)n_ZMOa5x zyRfd%F7y*-7y7GZ7uFNnh4qDYVFRIE*idK}HWJ!}jfHk$fY2^%A|&B9MK}A~U^AM$ z)=$Rtx54K6ATA7&jxKBgRl}CZB5WnAUD#S^7Ybo^VH>sV!nQ)Yu$|B@Y%jD6I|%K< zV4+>uQD_%-6555Gg}AT_x|}h0g?Xu8w0IW`iCkZkdxhQEq8YQZ{x%p&gL2V@d&bjs zvpw|1X4lPz(Vh~I<~<>9Z$=hjM7Hh))xyYV9fd6C%hBQ(xG@lCxA7BWWp&`j2_3lc z!W_5>YB_NG2pzZ}bl@fm9k`0nftw_B;Pw?daQg`zxc!9$?f_|DH`7a2+v^s;17%CI zihp5?Xw#>Kq9mv70d=E^={sy4(Cj)&3+Cx9B^M6^dZ z3F7H?NSGYNWH#9_bv2*ZCoNogcF0 zJjoNx&zCv=<_nZgoU)yGJ@6qxVA9a38V=(`EHB zdcV-FJ|N7lKB$&meMo3m9~RoxM}&6uQK4OZOlVgh7uwY)gm(2wA+A1!E{ogKFz^41 z78kc?Bi9{5JoWrJw&ddWJPr1;{!t)3C+`J)vDtI-UZm~xc?qh7mytzyC0k#GYT>nL zeH~dAw>QKwaBo6fa*m&PTUH0|9iapFt}qAgJ+&OT_k|AJ2SNw#L!krrk?si77o72oE1Ylj3-ya&!7(DU(ntUze1Jp8?p$$XX_tOE&Lg+e6L)E$6L%S* z6L(pm6L&eG6L)!`6L$rn6L&?S6Ss?y#BGqCv40epv`7B;Ro~=y@4WF(ftBc@F|3R% z({UAbN}*d-Iv%g9LDjH2lDDGB>f^Pm&~A4VX1BYmWw(0>?RHP0-R>o{+r5Q$yN}Rr z_Z8ahHHCJ2Eg^2NjqWn~1soXtqPcHYS<20gzaUu3p)ty!eC)`VMn#>!cIcFu(QxE>>{)ay9({X zZbG{-L}(Xw7utoPLR{DbUCube;Ks0Lw0OoD9=X1*^$8=`qCev&SHfN(2c9lJG39VR zSP3KbJvY=GMRQ7=^hZNn{zVpH?`$0l)xx-F9gi&Mn+f6=wtb*#2=NmWWp&spLWgaV zFo$hlwH&tngbv&OLWk`Dp~H5d&|y1B=&&6ubl4h&4%;C@!gi>1Jek&Y%Bs9RDomC! zO*n^%)3v9=#c9GhLOeB}O&_Udvk50(Wv{X!PdG=>Xbd%EnOH|huHP|z!xXlp>nq2A z?3j3!{a9GV^*FS5#Z;&gjz<>Zgls(#s)duH^<-rIl*4oIPtgWn!#Nc!$2bkv7^kB> z#u*ULhC}jfxNJQOs)e(o^&DiJbj}6pCLNxXe;)QU*7;yL)&;P}x)ANLE`loIVq_66 zLAIQBcqIF!GW&O529|wY4y&&#(C+I>h$mtoc_Id~<;2sYd$>mCIPqKy(N#I|Tt~AK zu1E6ZWn`LoZUn30rf9wynKJkmp)>eaVb0*&)N%&jE_4P@6FP(M5ITeJ6gI>I>@J}* z_->&y_#UA%_+B9ye4q4;TzeY5SjRZcOy>){@DEug;REV|>h_>?JWL;gs^MWIk6o74 zhv}n2JNcL}JNdX;cJc|KoqSSgC!Z49$)|;O@)@C>d{$^DpA*{2=Y=@=0-9-)eR;v)T7|q?>LOiY2Z;BFvYq^Fy_;K(sE1Y^6Z=3JYmNJilHTN+T=+YJ^469$_(v z^?^v%2WIP%P%U(d)}@fKJa-1_%X9CrG=&3BtU1?TAH)IjIBU5Sa z0aioLXzqnfiQ8M~#O))@iQ88#C+?a;C+=E8C+^xpC+<4JhFF@{6*_VI37xq8g-+b{ zge30z(lhWkL0OqM;PX5T8CmAuM(Tl*wy|_PI0r!0unDpVo672gb2FiR94O2_ZmyPn z93-@lTL|srmO}fumC!zJEwqn?&^~S>w2#{g@o_t}EAzKyW!@eW4@5?mZVc9kabrj6 z=*CV^HSCNm!Y;Dfja`LyV>e-TV~ARIV|St57%H?IdkF2uFrnSpQ)oAa3+=`Tq21U^ zh#Mo(Wn~@(H-^#C;>tWGa$O1F;r4s8g~~jcH+zo-$x)Z$_5<5j!Z>}68#rgI$_$g(o;D~?gy52}X!<0lS~)loZ8=%^he%uzd7Ek~_U z=%^hcbkq(NI%<=Jj@n^DN9}N-qjrSQQ9Dvd)T+`=l^Lgx3P;J7DsxSouGSnaPL+9z zcxtZ9$EbNCcY&TX^5l`HbkVftsqI)cA?fq~HR0*ddi*Q=Do(|Q*8PR$svc59&hJgQQL#%RVL1~1uL5*+@+9R9`@nAS4 z4~EOu3!qxKFj_A{#>#v#P*<6GgTN)&J<_F68tF1nBVCU6NLN5y1V(ZZ7}>Hi^Q`f! zWsbl38YuO2EvTNZL%XNzp-Q*`S%e#rEh}@+p5Z2$V`aV>qNlPl-$JtzZbcU1He{;I zw}ae!9L;wiQ{vwF|0p{PXgP}KZ3lt`5AF~=7f(WNZqVQobg|$X2#Yt1vk+vngb>^v zez?24ySux)JKyuxJJUD0oB#RXaHx8^=I(S?bxrNeWVT1>#Jxk96ZcNFoVa%how#=k zow)Z1ow)Z3+oCexCv@W8FLdHQAavqBC?s(olKu~s`CfTbls{5c;UGCxY&e`FRrJmx?Cb|ZJNu!~&VD4cvmXoX>?cAy`>D{* zekQcDp9}dn-7nC+`8R1@8GH%X(^p|}{r*~i#rVIGj`4pBvD`7TlD?PKu+@V{qql8Pu&*ijQ@DS zt%a^Vjn5Wc84PDNIFKW;_ZYWtCeY_PFAXN7IWi8Ei6DLzh~!s+**Xc-Op}InGGzG$ zG`Tp!HU-2fZv4emvN~)%g$~=)!W_0~)NZRtmt_|j5L;ePun+8umAj<<| z-r&}W8Ia~0evpZY+cyiqs^B67Aa3^mgtVO&*+(B(ee^}UkA4vE!$$Hx>}+j^nrT2-JCN}$G!SV078;nA#9s8Z6j=7PG_1as zLA$SIA%5wH6ge&>6g; z&>6guuq_U-jfKwOAwp;HCPHWMrb04!GwFYG`^FDRPFVh{=;nNmm6MTWE^etkQRKFg zj-z#JsFAioR?@bz`e@xwXkWJ%W?zS@WnXs?+SeV0_H~%hzV0NnuT`Oa-C1Z~cM;mx zU4{6%8@eoVyTkRgM_62>_Y7`1mRL|eu|@eZoQ2^)CYhq9GRJ?lRMY2*mfCyMcKYlC z@dH65KM>5;{h?+$Agl)>%PMz}IO0}^c*9@(#UZjfZo`F++o8f7x5LzO+zuByZbt|m zw}#Mh8zFSunnK6zNTK64Qs}rHB_wX6qz}i%;-^x$Jt7?~V^QTsi;F6EjJT+B$BH|v z+;M7-tI8eEhFs-Npuz72k!5C`6x=#9{nE*7@fqbQ5EG+2Ag6*lj!#2-B2I^D=?r8g zotdp?LCth_SkFPW);JdCKUW*#ob^1Y=;3@&JzRix5C4OBd;-bi6WMw()J&Iz^-^S1 zxXXZ+3dh3zmt%KNS3pHiSAy#4DztmL8sfGvlH0<_mipG7u9G>&d_7d`=>|}Hx)JR? z-2~Or&B#i+1=&*F2BceMj_P(B#GcCPc00{lx&v8BcOr}Gb{E)4cZc~NWRbb|3Z1$4 z33KM&ua-0S0iiSZL7_AEA)zz(VPRWTw?~A|+((7Z+{c8@+{cAv?i14g;XM0E{+^%d zA_XJtG}Q=d%#M$3s@q^RoKrd_ia*Ule8^UsB6HzAUtluL$kqt3vzun$SMJ zF0_wt2<_vWLi_lZ5Fg)0`#c+2-M4$UZamb^t?Iqh+>hqq;leRjx?8Pp`=seT{+2W2_fag*fh@!O zA*}FzBpu=X7~-*GWF>tntHb-5(Bb`Dn8W*pS`P1*LWlP&p~L&N(Bb_?==g!e~u@Az>*`N-@~SnBC#*^7Uk{Y8I^7r#n}7r#L)xPh#sKV-ERe+uoz zU&8Fg-)h;5e}wj;TW`=_j3=}g;|uLYccHzQKxi)}6xxf4gj}CYjMnvuo|)|d^P|16 z_^WSH{T1V%OghFtImD0lkUV=KtH(c;(BtnZ%;TS0EsuX1p~pY1(Bq#@=qvdrqEio+lk5vpf%Wp|;&H5g`q&tcV=X~@WE9B$P%X71`5|7mc0kQEFsw@= z%QKIq#1XcoAx@^_FP4?nVOvhd#642z#2qOlagUPzw{L%rr?8^5jpAeV zbTqO|!O_|grR^B$I7W|!c-k1rukU2_F?xc~uAV5&uAZcpT|HT7S5Fbz)l-Fb^)#Vf zJzZ#5&k)+xGlh2bEFrF*jV?>uIdDCl8y1(g^MYFrAzn3bK3i1UCaI+hK;~Gbt*4it z_@6%3`Cj`AX*zcI%?Ml9kpwP zIcnFb<)~dRbkuGTI%+ox9krW;j@r#aN9`7&qjsy%QM*k@)NYsV@?QHpWGgD$o#LXh z-6bw6+uh>M%65;Mqs;m2F`9MCPb$pF-@ZtZbjr+#iHa+#iKb+@FMPQQ3YLI&psyI&ps$I&ps!lDNN1|Le-O zukIIZ$w}KEe5{`SM3yP|S8z)TvQ+=y>LPx!@DD_YdJmp}!Vq^`y0xh=L_=TTuoMq)9rNxSY$P(E)sw`@h-nMYjQ%9&SO)Sdanopon^HOHts z`FXXVOmV+FfA_3Vd|rn z!_-&kF!d8UOiKtIrv5^Qsa@zW4G=m^9YTj`ppfg0CDG;e#!@g(8i&PSYRl-a82_@; zG5+PCMjC{yq~&Gx_*W2m{3{Cc_*YWP<6l|m@vkEE_*WHr{HqB){?&yZ{~AJ%f3VQw zUsK35uZ1qZl-GuN#yBh<|GL4ghhE>b9$WOKyjm?)z&Q4L@-H~u^*q7)`q&u1ZQFph z4~-3>TG|L%NgHSD5U80p3G1fF@>_W`afEGisFAjazt~b%hixmN!?v|Bhix0R9JXzR z4%>D@hi!YI!!}gtuC1iPA>=oQPFa1)DE&l%58&ZkldSf3@C2C)^=V3pH z)hLjxMv<)tLaas+);e+=MR199ur|au+#yiW!*EbN9Ex@ihe0eihh(|AY;8ciaXPF` zWE8<8ftGLOj{a#RcK37?RP;0oR8L2v-P34@=ZcX$SB&iXt=!R`j*~gYd^}X_=>$-F zIuY$Xodng=$;e7N1=;mmxnn>&Rp$6sJ`G||<+t+bG`V$*wTxaX_o#Jxc1#QmSpiF={YiF=W-Exwg67CLb+5jt@%6*_S*6Oy=>OaJR{ z<@~QWSMafVx)NEY;8ofYrR{3zI7Y958tGajk7LN{WAu8VUA;k=UA<8)yLyw*uHG!P ztG5X4>a9Y%dYjO$-Y&GOcL?q3okCo_3tg7ByI~$d4vS0My}_-AP)E9tEyeZ5{UCF! z^N8Yl;{koF^Lpb!n$Devpjvtu$$Lq%^--vq9t-Q^$g;9MA&#g$2{qDF@fT0a>Zm;< zbkv>|=BPcVmZSE(&{2Cq=%~FYbktrFI%+Qq9ko}4j@qk2N9{EsQF~pw%k{<^vK5u> zO>t4#-Vzs;?QL;qWqU`>aaFc=*^n#Sdo=3lePo$d9|X5f%fR#@TYL!ik|)e)zhD7_w*N3OMfFP=^td*%EpTO-4-nO zG#*s!X?#$7>W=oFCV*;bLS!XPgzQ?`SW$msnWM7xfY?)6*(RY`OOqliX)U*xHAf!xHAczxHAh$ z+*zdmb!E%f8?*8;ZW1HQ6r4S{B?Wm^z#Qsgn0`1uCq#(GxZdccPjy~z%th0opBt*B zd5|pEmaX$a%`|^l7eJ09A^WG^+7Qx~6LP3}Ty_pmU;6Us==iL-SvsF@ZI zYae7JWM9B_rytZvOT^~>vbyfH3q5@Ugn9Zp)bjKV6ngrW6ngrW5_L`HQGqO{ehqz^FSWtaQJ&X?crhQclGc{hVOmG%Fs&=hVOmcuhp8fTnAR6MOdALt zrVWJ-(?&vvX=9S2oRy5QJLpW_Z;`2=%~wvUayp<3DpSxNh5 z>wZu(?H|?ykmc9%f#QhUK@j(e<1Y@D)p0vS=(r6R=C~cImg9Dq&~ZCl=(rsrble(3 z$8Chracc@4w%kXWSkh>Ix_>(No?_V*~yTK6jvOlfGSd_qCF9(LA7)`vXaio)-$1I zIxDPaBgat&JJLDY5Z}w^LPZbff$HIWw0pP!;`ew+evg-}7eUQ*aab=wMj5;mX#HLu zm@dQao-T)qo~{7Z)0JrVbQM%fS0gLw8f2I6<^H^@;98ku%-2E1o~{SAryJ1T(~S_1 zAtQMV8QJA~xj*kJxJBmpUcMD#Pv!UWZ8U4?c4Q^pfh@k4?*tp^t}x$?EHd{Vp)>bh zVb0w9)N7B5+xV;0fAO`fj@mauN9|i- zj@ox>Icnbv9km~Xj@pkxN9`w}qxQ4VQTs*csQoH*)P55Zwcn+?Tygv%TT$8m6c?54 zFL6=X{uXyuwtv(dS7qzA&={3%JR1B`4_T&F_u$rP>6a#8i;v+6q2d^x2-Gn=G1~Lc z1LBS_k{9)5>tqlw>I>@>$d=01pH~%3sSQyjrhOwl_>ROc1P@-!X#6`)#L5m`wqW$VgN zGp!QVRgvRJ$bo4!ZHOz5)getTR~&1An%u!?_pl~ZOKTxHE6&z+pk`V(tm`2oAuE9E z&iYUzZ4jF`l+|@-BcZ2nV_}}YA!>R0HW7OIHWhmMHWPaKHWzyOwh(&ywiJ5$wi0^! zwiYsd+eml0;@DQUqV8-bF0MGX7Z-JBsJOH4?4aftb*CFa<3E_)k^K<3CO4@t-dA_|Fh}{AUV1 z{gj*+LA!Y&EH^Kb z4mU4`_;DVxk}j3iZeAv|o0ki-n^&l1H?I`h&8viV^J<~pyhdm@uNB(O>x6dmdZFFC zLC7(ABf30;x(TkQo5SMq-xAzXCwWoDt!&{8YS8$#bQ`#y3gsaFA-KD)4sX}TI)C1J z2hEXD>FY7Yw?wMT?GYLBYr zs68fh)E*Z)YEK9qwI_v++EYSD?P;N-_KeU`dsax)o|8U&@E{($&nqoHFI!Q`UJw^& zP%ny$O7@a?bbk8nWi^ju7hQke`U)HJwc)EY>ghFPS-oBlZk?7s=?%8{>+4O3SsevOPTtZ#spGbr8$@-24v^c__6^gXDaen7jYA0gfig5=#G$gXEl zyfxq#nPbeqLdBkb1GT5$(caS^5bxeY^6ouk*E6U-{nOtv#~IW=5PK@mpt>!r&yI(z zr16o(8B}+$ktPW9gvcUsClWewCl=h5oT9sRm-l91)CLM2wIzj)+EPMCZE2ySwv5nGTUO|( zEhlu;1__DU^3t7^jk{GN(h9N_m2E}wNS$wuNGpkp%C@q&v$CzC=D5z$R%Ju3Y^%}W zelW63t2KgKr)5AI%oZQRYeK~_ycVcqcx|-jVI7F4hmn=EUba@CW?Db28z9F~**emO z+7MM@BdF+MV^BQ|LA!@dpjz4#SxK8^>*i21Z4uTjkx|*U0$MBEz_c}X_p}XE^t3Ig zp0-1~r|luuB}TF?F|uoA<1GO@${b@J1{HhS3DlmdXzyufh*$3+dG#K$Yh~-(C+#M4 zRJPqA_Ec83J!rBd1(GExkVR$N3v8rXnD<5&iMx-`iMy{bC+>b~IdS(FI&lvWI&lva zI&lvYwnb&D3!S(J3!S)!2%WgYg(U8w(*L%y=>j2&o6fEey_~3IVT0xPmRk zndg-tnd*YvU1y$G>0_N|o>$ZK5pWH}(iKRamB`lXp=P=vtT!Ud`h1f(qINUXNVmja z+$yW1cAL;qyIq*0c86My+MPm2?Jl9CcDK+`yGQ7#-79p|?h`s{_X{1h2ZTiJLFvx= zjMF31L$Ve1`C)N!=J|-YsLzjzN9Qxo$J89xndjqd$o2UN8r%{_mPf`@!L8HMFFnl` zSE6U2q7pp|suDei_B=cf@$4{?XNR-(C5UH-!}y`8P^K+W`SSl>fNeSRNksn5K1;sfmN=|iaK=_61*eT;TbpFp+rDYBA2 zL$=iC_Vl^TG3GCzVozU!+S6BP@9Ar(mcBt&(znQ#`aB?gCv(*2?;-Y7*5@B+vi2~N zH*z40`usE4NWX;nS7ed6zX_eVzYBBX{-Kr=_fMe{_b;In_iv#S_a9+f)aP!CfKJ@; zgihS?g-+b=LK1fZ>3>_FJAZdEAs?%!iI8OqPOKeK*?LIFF**svW5GzCmyp%R=;T7X zI)yO1I;C26bt<78a>{{7akbYB{W6YaD#hx|?wWlr6-qV&)Ep3IYq^*%%D_g&QX&afNvTX~or?Rqb zN3)i;M^@5MWKr3602^t?Fb_i(iMx}~iCY!s#NAmfC+;pnC+@C7C+==SC+_aTwy11- z2%Wfl3Z1w~=)~PiNaEI{|7~T{nP>ioiM{z`J?(=mvvA+wmMmlu`2Ez&u(i5z!)w=wqG5;Xs-W|3OeK)sdBSaJC)-HPi609*P`CQua@WX~VF=J$R-V(ggQt zq$5C0a0BfgMnJXHL~>@Fts|jkIx4KAkdc%}1Fk)zp+-6;HXkdiYtL~)PvP;xJcTEy z2=Uj1T?Kw})an+vl+0f;;7Z+gSW-+py`wR7HzSu63juL$_#LZ$PH;ZL;m@X4K zOqUCDn66OEVY*W2FkK~dn64H&OxFk3X5Vbc2wqjvLWjb;Q3(+yry8 zI4u5RyG4J+_-~bt@!tkD((Ondn2^=uzfof3MKvzfb7#-!Js| z9}s%{4+=g0hlC#g!$QXY2%7PiS51%7WSzD!+J(pUhq&;Bbhz*&#M8paN_tvWyYP(A zE<7vDEj;MVGHPYwt7hlNgsC_AP)V>ntsC})LqxOx^QTtZtsC_4N)V>!wYCi}awI79! z+D}49?PnoT`$f9Ta+JTyRvh2IiHobI-^Io8{fBsTzH0hY&2cS9`4=1Vxy9c!>ggY3 zd1QB6RNOi(1JZbGp~w#By&aH>>~NkU232GyKzkl0glcIbWF<|Utv#S-nk1}~BF9n2 zJJMv@5Isx|6+KJ=s)s4j?qMpZmU<#9Y3gj925P2h!#W)@%J}p^>$%0iGy`_`G$T~> zG!v+vW=6ZGSs<1qMzSO^vg^48tIy9abBuWosMyn-p!U=Y?LEx})zaL^N}31R_1uEB z<>!?-&MoGH*i(6KF+a^(S^!x|y^+PaMH|QyzhPboStRblLMQGb!koB^s^!F8Oz6a2 zT=S2%dV~S{u} zy1Eco*Fcw*Z7^Is;q>J(|v) z3dHZ`kd?GSwr&VD(?((47+F@fA>xSICQu`78h^2wtd82|LPu>2VUF6CYB_3K2_3bq zg^t=bLPu>|p`*5)&{5l7=%@`9I%+!ziQ10Ru59|3$hc}6CR&?+*>)Cp zR<>Q#9M_r4u58GaZ8sV`Ka4EXYLDR7Y3Y~tWD7^$ARZrvbPNw-r3p~Sa1HHw*c;+; zVI+?WXX}0tj|+$O0Ay=rW9|C`wIO;q2r7E0gX-a6w0k%Ns-@vb9*oG=!=Pq5Jgi3` zqp~%Cmddt7|1<)-dul>OPe+34X(ZY`9R=~`W+ZQJMz&P8_B2}N81peuv8Q7}?ddqQ z_jEkOd+Lz9rw-Xt*?0v7^Sm8B#+m0GH0$ZkFuK0or9Z@lyQRa0d!Rq(L4K{8eKxp-3K1%0gZ%=1N>J_25XYUyQUCB2fZuR_iAT3BC4 zmi74!aYXG+h$kN6FW#2bQF}+|sJ$!9QF~7_iX(GYNkKK`WLdbKC=S; z-`Wth?jNY=q1$5aVLY^Z7$0JJ2qeoxWb1?w%R_{9Vr10k9zaWd?%yX(g55n$3Kcy~ z2FjPo(e7yqsFtQgR?<|+uJxJ4+k46!W1bo+_B0KsJxz=Do~DCpX?kQO&4BD$pIMxJ zMwz2N&jhijvOdpDvzBH-R?@7>|J(Z9dB1)kK2}c)Bg+(AL_4CgEh-(y z=weVKEsm_DKC=24?JKma{e;=oCDgL3{e^b5U1(Pa2<>Wz(5?;?+SMh6c6BMCU0qs; ztIMFv%C;Qp`*63&`}#AbksHx617dGJ1bk9d2S|KQQ0;Z7iXSZh>Oa$rMR=QZKdY8 z&OEnfL#}Mw(BM^e$TF?A3vQj3{%L!*_!u4v702)nppM}k(VmB45HGGnR#G)vcZQm2 zm$2@N97knqPrGSDREgc8qK7>|^{^+}JtT;q${{PMmaTh3&9qNg_eDl!+Ye~1Yy;B% z*xl0sP|?$Ypn5t8?VjpTEgg)kq(hJ`m8~NUmpR6KC{*m}Fi?9s9PK?F0o76iSxF<1 zEtPFxYRVjy?MR3{m6dHI&00DNSxKXiMP)l0Y^2d)J_cDN?y*8A?s3ALxW}vI#63ai z#63~y#63yq#64Nq7M1N3p%eF1p%eEsp%eFXA&Gm2^uMiaW8JSmlTX&uS;#UA&kknslE({%VRfcQxrlAqLN>qQVhsSE2R$kwD}z4J@8 zA@0{-25Ex1Uw=8M3BCgD9 z7J3SA5#}kpRV`29Z9-4s?LtrC9YRmxokCCHT|!Uc-9k^{Jwi|6y+Wq&KIty^>+hGX zs67vei`w&`xTrl3i92i0!)lJJ_B_IdF27xV6caa#k>%V!u21vD_Jnkl=qDj=79+V? zEUUxxjL>0vR+z)|oLUak^FoK|1);KldzSSS%!gtc)!uJqQ2P0W4 zLRP!*lh7{wEX*$aqLy9wRcIG}6WWE}g?8Z&pXcztx+J(P`cHti(nc8h}xv)j7 zv^E~hPvOGi@plhyEgyZ;1Z+|HU=79zL6r}$WZzwnIZdR`bzU}2Omk!u!5$DljYIO& zxNMya;-_(8odQ{&TudpBuuTOuQqTB{sbzK8rV%=9(+YFgrc=vdn_lR!%^-BxW)wPX zGYK8GnS~D9EJBBER-wZ-n~<>0E`4|`Y%kH!?+QkwIb`Y{IEwiasgE|ekG^2pM?YA7EP-|({UO#9MzWr8wst_QCmhx# zkx|Z<0$R>7Sl)hV>_uP8fMs9H!s=@|wEG$a)zb3FN?HNg^(>>kJ*_CS$Gs9*?rUXO z`&tF}vN+FJ2W+Hu!@M4{ z$l;36IlR6w=kNw>61UOPu5D;iMhit8JtfPItHpCUl1yIq$|3LL{A=*7$ z1hK9#l68f%^-_p+g~NI|GAi5^Kud*V9qlWzyQiz5qNl4t^>hu|JzWdc(sjs6x*plJ zzOjz>4Kl}=Z-k0H-2`e+H>16$TcBFH6D-#^VKxp|B%v+!B%i~9DQbR4J8LyhzTlE;K)^>O-=(B8f* z%-+7Dmc4ydXm4K=+S}KK_Vx{-y?s+?Z{HHy+qZ@G_8lQ-qVJ-|I1_!3Cd;UW(IxH! z{UI)VC><_*1o5;mlGP$)wF{pL?ZRim?84`2*@Z8JcHv8*UHD397rqwSg>Qs*;aj0y z_)cgSz85lKKcLGJ{UcmYKZV8P|2ep&5U?8fFKnSi>;C<(Aerhb*X}wI{Y@Y1JQ4k! zrjLL>Abv}SnYuNmkXyyq^V^q>hm<>;xu$x zaZ#VA6OYcPq0_55uKV{hup!sy8EMqhOvv)cm^rw0TKcD1*y2hwD^ygX*+5mI+0mYd zIUrU~Lsn9+Y@G{grn$p94{{v!xjoIR4N>dngNh#J2i3y@X!ppJXsyo!(qh=%)8bIkQy)-0^+mgefQLx{c7TZY#vq?a*aq+a9i`pD<{F;QM3!kaGPreG`lO@S;$wIeR2;)cgF1#s zqdgDDK(%x%vXYL=*5jdOIw7nlB3mn4N8fakHbj*;87g`>1ym2GqTR!35G$x5SwSsZ z&xBY(Ev#oFqq3a?v{bf^e(7B7?&&Nga}x)FHc8wvHvz#WKg3 zFM*0ZT?%SXm!Z9<%b{Aj0$E8{BD+>LR(ZZk=BR8}L+q)nY}e4_H*!dRBZn+1+w~wz zsD=4PWRbWx37xn%3v=S$qLvf)R-qI3HlY*ucA*pZ4q;nVwmXGR+`EKM+`ENN+!jFWW!jFYa;V05v?%#hZTTy#H6Bo7Tb8%67z7TiTo-frLSMB+V4dqHeLwM0% zx9xY>C4G&tI!n)3s^uHFp1wtvneZK~uetA~qhS94HPVkrepn}~gZ8t~LHk9RgZ8Uh z4%%-*2km#EgZ78eLHkqap#3Fu(Eb)WX#WTuv~GPtf;Jv{?`?-nhC93OHncDQZ?)Y% zebe}u%NO8vhxw@;vUF=gSZ+-u9d1nwHBt{`B~2o$-I`QrwJ~f)l+D-oB~-Mw3`LD27O@KT)oCx zfLlQNl3?xEEkS)rY=w4^w}xtI8zk>{&erXqX4*ciLy@gtL#)ZZgEmADJ3>Vd!$9@0 z6WTpgp<3D*SxLKO>#k5U?H1PEk?}RO2hehE#G34TVs}poDtg)rR8KXud)gb~31K8p z2qU|m8?h$)elo|H_lJr-9RO-i2co^FgCKqkhvdg_$gbx`tjT_e%yDis9AZ!9xzV9C zYw0j#B^{0|&W(-$`88aaM<9!=Yzm!~M+$RRj#SH8d6dvuIZEiPJX+|i94%~%gXS2a zv+`J>v+_8hv+{T$S$Tr=zgZ#i4XV|N{4q;OAbSscd*rZpxHYVgzsE`v(jN?)ev5P} z#0#5|m2|qSpTvO95PlYTrtpikhkY5Xv()-J@ND6?f#(Rn4?I`+W8ithp99Yq{u+3J z@b|#~3I7bdP)N1CNctbYN4N8;^xx0C?Z#J`g*s=NHl@LeD|sx>K#wQKLz$2!-py@#fA|6Zt;?n746{n`2e)JzYC z^&wCyO$$7FTX9v3=lPY83=o>a?GdrIi2JuP(9o)J1~&k7y2=Y)>h z^Fl}M1)-z%qL8S)B%Rl;t@_1$Rlk$3>eumA^PBjpW50y2I@YWAUS?1A^a`@fnOB2b zW8Oc#re34Kybcuw<_%B<=1sJN{1(LP>X5vyE?eJ)n(4i;zK_Kj`WkvG3KA4Vo$$-+S9LS@98(FmVQU_#${wn*&UevlsU@oUl4mL%kJMa zYv~_kC3WkU%kFq!BaM%&r0&QfD<=>-D<>4@tei+KXXV5~XJrqevvLxlvvN{lTNIti zgwD#zh0e+;gwDz-g=FPa(*L6DR#kGxx+Lw%Cs~#aS!Urh!CkYkoh8nvRWET1U^<8> zjj=ZE^!ili+O#v!bo6J0YH229CC!|zvp~%>YglJPw&Y|x3!%@h4Y4-u9FXRhwQ1)B zHNU;k?qM#7pWz|-8D6%|3pLYxVVxftIk^Dfy3!lsnTgoEpscPd3kf}g3k&lME~1ua za8aRWa5150aB-n$u#eC)*jMNo>?iaLE+O;`_7^gP?b3N|+UneT`Af4pkJQNOyi%j8 z^GS`?>D>IH&eORCXm79fM_sj=^%m z9D_k>IR?uM9fK8wj=_pT$6zI)W3aN&F<3?D7_2IE3|15J-MTuuypmZ1=CvGQ@i)?% z`YXo2mUN7NZK#pfK~~bbvU>dM2|fObFpqzIwLJa}gdYEfLXUqVp~t_m(BmH>^!PUs zdi_)zEOF#-Zo$ySUt;E>usx#jqz%| z?Pxpiw})7s4axFs*}5atOvA#u6SDkDt%@UTJ43v_IsRf-Ssk|Bgbv&8!W_0e)NeuaJ3w zs=G-=>hCV=&Zb6NLJn; z{a?OP^J1kp^2vI-30Y?0&Ds~G>lW!a25*HL={95~-7c$-!8?TZ_D*5;_Aa&T?cG9q zdymlG-Yc}X_X+Lo{X%>DfY9DPD73c^3Gwz}bXmF{f$Qnfu()(R7TkIib)?7HQd|r? z0W!@x2`DZGp47)WF9x2X>GXLTs-1Sjm{gSP} zLe2DBSbs-G<@y6?sa$>fq(8B{r@x@0r@uk<^bguSbz4F`jfZ4)V`SIL#k$blWsWgV z02OUb@v(Q;Ni_lp)tI%0Fn~^yXIC8RoT1Xq>VqjrN^UKA+BB17XQM7wl463EYk^HtVTl+%I)Gw?{ zAR{OH1FkFWP$Lb9%^kA3t_&1<2A34(8C*&&&*0KR&)_mb&)~8`&){-G&)^`TXK;C; zXK)3fXK+O!Gq{p;=f%JZdeKd@x}wy`>Pk|hsw+#4*2TaoqRum-RcUtl?a0dPubx&x zmh-x*df*#rHR-6Wt3$l`16fIfWpxbJ6gmcL33CkAR?9J1N9Y)=D|8Ij6FLSJp<}SV z&@tFR=ooA$bPP5Uaxt(my1W<|0@u?fVevQ8rur+!znOH5e{+b1-;kBGrK}$RRzi<| zYhfP$HfnkN+X_AY?Svlx_Ck+;sLQJ!w1f6U2}Gko?#$Tla?ev0qsC zMV8;G`-vlN`$LU%K>WplvN~=D2_3h(Fvsm+wH&uYgpS*Aq2qR_&~ZCV=(rs&bli>* zI&KZ2<2FJ_+?vwG6Un+9@GI}Ce%oEuFS@JdcidISe!X3Fte4sy$*$^YB(hBVqk>z* zJ|K-!xAFCHG^Fyv<-llA<>eT(qkJq>OUEHA>G*6t0cxfb!+H{O90jZ+ovaPf!zobF z!>OQpI1TL{PKS7{G?HbKv-K>fna&RDImjqr=K`%?ssqz`*xl3lP|?!`pnCcr+C5ze z)zU@CO1c=?^-GoIy)ThD#(XJM?CCO4d%7I$JzW9S(v`?cx(eC#OO@rlua-H!RIh>9 zQ~9NOElnPJM)J@zviMTH0pu5dVZI4jq~*;*r{yieoR+t$<+Qv_=(N0D=(M~;=(N03 z*cM-^cL|-AcMF}C_XwSq_Xy_Y^qlmS!Uu8>iIq(|DH0v~=xEy$0AM3mvc!Q?X=S_$elaZ{LoUQLb zte70u_mE}jdS4t-`v7XB592RBlGRcBSm>yIBFs_yR4qsCGohpQxzJJjLg=V{DRk7n z5;|&M3mvs@gpS&`LZbGabm!%OUujqM+w7`-kzF;v!>&5^>+7oBc%MhUk?}oy;)!Ww znKM5Ix5m6*`boXUG5Rx99HYO0I!1p*JIKF5+yzH+7d%`4gqrEEu>Or~tz0a8{f{<8 z58e9b9>xRJ!}w_T&>gC!36PaEVYW^LHPggl?SYKSH3`sCxmfsmQta+&GN|xna!@@@ zfp$+*LbWs%vXXitTPjz3np)-<^E6Pgr)fd$X*#s`G(A*HGaxHzMr2Fn8jxm^IV#u8 z5PK>s*DN$yNDj$^AjqO}%?>uw9ATalS!87|p|f%>Vb03A)pAzOBXm~ID|A-QCv;ZM zFKmm-wSdrB*<0wWY!f;w7Zj3}3rYW%%9Sq%7Uq-nv&i+{Bdr{pSCQ3qWmTbPa5Z6`!PV9B46Y&c z3=S502G+DU)K_^Z+}{+%IieIt2xT2_yLH=)PByD*P`54Al0J%t{B5_T~J{0*VUKSJp7H-#SmkwTAuq|oC(O6c*A5;Fdy(Tuj=a z?ZUD8LtHpcI$Ss&YNQj8EG;LiT{uZ-7fu#t7fw;jE}SZ~3#SR~!s$Z0aE8z>oGG*m zX9?}X*+RQ;j*x@vTy%M=a~@nz=ZD4PzaY4!;IU@<|JcH*j((POAs7{JP`RwwMfzCh z&yp^tIWnsDB~UG0imar|vh{MPnXU-ymB{i`=PGeT?P`dh3dUbtE32b+ozPLcUYMhH zgIbQ-jY3E5CZVHtv(QnyMd+yADsHP41^?B8tX4S8qtNM*| z)%>!#>e%m@tB&<{xx3gC%g!OovU5*xYs~wkd(~@v$=nC2=nrb7`#}}`2ha}kgAh+m zBP;3QY<&c3rbom27_#+ig;nJr*M{if38?7dNl-mJg?0~5L)^edasxYCpM$u89o83+ z@wM_I&~mE7s`D>lcTX=vMNhAQ>giRqdwLD3rPq;_^air)sSYc%zbSK!`7Nl})7zl- z^bXp4dKapt_mGwJKCJ&|n!I@$$!`gf#i`DxU?Y7N=FgEu zR(>ILR(>hWS^1S(&dRTa&dP6u&dP6v&dTqEZE?_iFLYM^Aaqv#D0Ei-BqS?;mi{+S z=IiORU-;vC`W0C|efFC^&eLbVOUKh^e?X1&Cz4+g%KAwR=x^a?f&U2e(`VhrkOF(<-#TH#*@|&r-KytJ<&-@PZZ>Hwf z$K24*_2;4K+@BZX-PB0lO`WX^K+V)UtZm4$>@Fyds4WCF(!%i78B;E zEv}ZM)<@{5^%Xj5{e+I%5<*9msA< zt_QT1-GQls-94=j6+LYLs;3Rn?r9^amNrIK(hy|Vvdbdjo5&nv-V`eKv>B*9ZI1Sy zwt#ABOJpT&h3r~(StNXGnWOA(1F@&F>~2f5mbOE($_BD1yF@m$ zfR=xaU*p5|v^TO$#C^0oir2oL6|>87Fqd`&{_GhFlXf_YB?)E6*?Tl=o7QW+?{NxZ>X5kOo7nSQr={N>|f*R>(Bu{zB z>SOR%p}qZ0n7#d7EqnWi(BA$jw6}i=?d{(}d;5>j-gX-R+S~Dj_I7+B-gZZqm1_dH zo+b>7E7wH9tw&KunwTxcnPU%-X;$SLw#GO_8lrLd`T) zSbHMN$~Cn(qBaf0ip}vC)5+?nO)qrRW)SA6&8U{6Hj~g%n_1|n%_4NvW)(VWvk4uw z*@ceU970EJP9ah2CEZ!M`s+U$m#&8QPmEq(K>S+DC#_OT#{x!bDWDk)zjR_ zGH2!qZjJfCG_QJ%V{|^KI7a6Ob&M{6c945REa8D<36E@D2x1A3ur7jZtz0bfy{I-s z4~s!X4~v89p%2d4s*XlHDX$>S#b0CY#wI;|K&S72~S!CrpLTBZ=!km@sspYJ!2%VMd3!Rl42%VK1 z3frP`Z6tJ7ZY*?G4iP#lHxZJRn@azO$~D$c7dGR=JammL6LE{+mPBN!>@C$1myO)5 z+X^I7y$AOw5B{z7vCe~k8=9VhZ6VITk(_^L>rkkfb_nZ^$Z_Ol|1?Y+hUx8fJ3*Rb zeobEmHOD)n-NP`LJ^l-X9{>M@9{+_x zkN+Z}$A7Vq@n3>w{NyKtM3G`t;Mo*3K#bC)_S9{*jzt+k;& z-OUzigI-N{4;Zy!czGxPUVW_dlIA{|BcsOM57p8G$Vz%JTOWd&>EW8gGqUDfZRtLE3xRmXk>ghFPdDy-l+#2%%=?(Qd zOz)k06H<8`&RbJJmB+Wy4)Qw?C*Vjxam36yT2Zkv2pRA45eCpMdJ& zQ?z^d463Eik(KmCwtfjU(^p~r8W{!n8=&>XU|{+dyLI%)dg#o_+(hr{B@u(;pCP+ab9tjqG}2z+&uw%N!>L|3K`iJTd6j zq0f$oo)B4NIHx7M<1f;^Y}*nspj8+?O;9>SLX+o?D2f(`R9*mKH%) z(xTbA7}QLQhqVu~tXzG?5w(60OFze7^q199YZp3d1B5wh9cnph1BH&-l0rvqDWRjb zw9rvoM(C(5D|FPB6FO>xghXw5X;&^@Jy#v3*ZnlBJ4ubKR;5N&ca|EhOPXCootHGb z(#)4ME3l_}S`k_1%u2znG4GdFRdZ2o!pxwjzP%UkMtfURIbt9;mHV*3$WK^zAfR@U| z%G;Y_cTbx^MNgZ9>S+tKd)gA>yctPKEk%BT>A>0mHP>umHP{wl?MpP$^)hU<0VbL8GaBS=6MffnTQ8# zcNDKfq~kCg4mHxD$Vxg)Rv(6k3+?a`!t8KEEjv6yXos6ZJA9)~k_a{k=vUQM(pu zr0e1@u9wwOyFuuv-6+gayGboa?Pj5)c8kzayH)6@-6nL@ZWlUgcL*J|JB5zgT|%OE zw{+(%CBId!>KDpY{Vus`evMpp>^I0&$9iwvJ?yET?nRbqe_wEG%m=3X)oWCm2cV+T zJP4}NJcM?TABJk_5hPDkXX|57Gd&*GCy=f6mvzCP)Q0HcDX8e-X;3{pgLV(kLbdc9 zvXY+9))$~=dNHgoA*24j47Ai=)&+kByL);SDtdYiR8Oy?-P0QoC(6i5dJEaL{<1Fk z+cL+P-+_ufy$fnj@1eb?_aWY=jpTjW$gcI5b-_Q9IqL7n5PK@??SM6mK+xWfC(PcC zua>>-F0{832<`2JLVG)r(B4igw6{Hk_I47Xy`5Bux09jE$~8I6BOhUL<(e|Mqe z)MkNLGB5sOHd!6D*@ceU9Ksy6In{F1dI=r1xrC0|+(Jif9-*T)uh3DOPw1%4FLcxv z5E8ZC(w&uSGrcRPS>0S}WOWOvQPnM_M(fORD^cf}U5@PjfB&$zn>oQO?EgRP5kWsk?0j-s5Kw2KVds+c1dRh@wPb;C_)5;Jh%1GWd zh-|4`9ceY0W6Y~V#h%sxwWq;o?`chlcdj6L=L)i=at%!D$Q+exU5GuEm1{kkwNyb? z()!4va%}+e%tx3vLKa!MvCvsLM3}R36SbU`n+lzkn+ctjn+u(lTL{~ta&0MeR&FJ9 zR&FhHR&FCCE4P*Y50z`Io8jB>;de_O!(6e}mFwf#}wLFW53O$R52|bI43q6ZR z2tA7pp=WV~(6iVSdKQlqGK(XnJ8y>jt#DPp5U%QX!Bz8X;HqQ40j@fZ_r4v){_1HI zvYgnX)dSy3qot$19s@Pfu}GGpmenyhUg#K{Aj~m1Q7y;dB%xz)vd}R&Md%ouDs&7^ z6FLT`3mt*<`Z_*>~*{T1UsPddhbKE!g=NFEQ7)#JZV z=<#19%;UdUEsy^ap~ruz(Br>M=<#1J^!Tq3di+-kJ^rhN9{<%s#(xc(@s~HluccW} z*M-q8T(3XGg&U;9g&Uzpx(QiHH_K`lZV}prTZP$$+tjiPw+rpU9YVWsr_e6kCA157 z3+=)^Lc4IU&@S93Bn|IJmnQ}f!1eTCSUmoRf?I1t-}EqBR2x{`?-5Y7!7o7St_OS` z)#o~|X&$3FGK$>eP%S-ytfVKi^(m;Co(}6X$nwnKS#gBzIf&;z;xAs1)nR*4=&-#c z%wc<3Er;zDp~Lp7&|!N`=&-#mblBbyI&5zW9k#cG4%^#8!uF2z81H?n&cVAvI5(J6 zYGk#S)TruQQloWlFt@1l^={R9Xy=oIciCAzy@xCh-S>lAc_7_`>=navWuNiS(5=xR0;FvX5_I_3OpULi`KRa)Q7j@4sR%`uYtl`}!SLUw@$8*Pl=={e`TgzmZ)}5jxt_ zKQepV-Ina!*Lbk@H9p$=>JIS>L?pjJM0Pz%=opYDk~vNiCWaVRd6LkBCT}i8^5#Nh zags0@$UD5lJO#2y&?$vZ(5ZwuL3^s@1f5#w1f53c1f5ps1f5RU7RS%@LMP}9LMP~q zLMP}3{Q5x7Iu3v+&V+niW~5<80a)Wo&loI3DMKSYr=aNxfwC@i>>z?#?aD z?#`o@-JMrxcjpt@-T8%fcLAZ@?JcysZ9==dpwR9vB*fi?(PbH11m-o~VR0E-EV%V> z>PU;TMJY3gGii`{=A6cbj3cbCK3BAKh0~9=GiV8@mii+rsXbcTxb(`5kW6v0vX-9qXlSYp^R;;zO2cvu1E>*axPy)NP#1 zuMH7(-5g&B)N#5l+EHE);)EQ@33;||05#KwVciJXTEkc#dSh*f9)>_g51WAMVN9`1JrU_9w>BL9wc;H)`d>XgN1ETy$%sNEr$!8 zmWK+RmWK&R%fqGr<0VeMIer8m<`EENnTR8_JL*?cI*!95p+*{stfZr4^>H{#Xors$ zW{3YDW$ytPMb*9k(>sFF1OyQf5|!Qp0vnnOEFdh1AYe>FAX(D5*-+G|2w~|(6crSt z2!iw`9TWsSQ3-gKEh0ll> zvjs@)5WEnKM?gfQ?O!Au6bta4=*8HA5X_t7OMq}zgkbyT_);F0xsY6jtWJXEAir4w z=`|}I?J7{ftQPGWNIL+3K^Cj61>uEyvd4OA)oL4vYPF3-$7-9HQ>$$zs@1j-)oNRb zYPBzkYPGM3YPD@dwc2)~TJ38hthR$`<}Id&`8kb%?-3@WeI=NT^_65Yp3BHmB0VY8EN(*RU>~3!p|2W@$*GT`yB{B zUli>j$OpvVhUPFgNDW6oRt-mitl=0^t>HMxZ%#mZ%}Gal3KTG>MSBKP;_q2NaQtm# z&Oxs=od;PpT>!GCi%7MmOCYS7A-(2%$e{QeW`3Yr+I$6MmGmQ!C0#|TC0zsg&2>nx zxd9mze;b>dR7?E51wu)7{LMhtZ+?RGnx7%9`1=bG&wz;fH%QAXeKrUU)ZP{(I=wB#oc6XbQF~j2sJ$&p)ZRWs)ZP{& zYHy1ZwYLuwwYQHD(c2P8?Z{OUj7LC3qmiq$aQ0c$2=BQrgDqS<;^z3HKnyb@SGe9B zFU!L+?~j#3R^6vO$ZsBl^qLBewjwBC9v5vTNIP;pK^Ci32Bn)SvPV^F)oM=?)oRs< zj@7C&r&bFgs?|b?YPF|`YPF|{YPDyGYPA|fwOUQ0TCEllR;$f4Gji!C*?jsnHlKco z&F6fB&3FIj*L?SVbgd3bN;7pKZJ((p9BlJCrao(xIobeZ&C!NH&e29l)yQEWziABV zHBB7tv!H-!D%xg{L6NIb?YgEpH%JXGkX1uCkTtYGsx`C(`AsWGuW9XQ+kgV*InlZy zC33X|WRF~pYS%OEpx2t(gRGi7K-Sa&sn*mH}%`?fRxO)zaoJAgd%V zkR^3RswH&;`OOQEUeg^iTjXklR|LOEwM4ESAe3ZBuAa#H%}bD8(+kpyT)lyK21L{^ zLt0)LK~%4Nh3I%?By;MOQAG91Xrg*$U!rGL8tZ^fCQE zM6Ua8jt{`Wc>f-x?T87&!H$Uc@3A6Gek@y(fUs1So8!qmEOYV?L{>+@fUy3C#QNLO zrh@SHJ<$$^e1KmzGDEmQZjKKHag1?u{8b>w_%)C|d$8A;Sp3=o}B9L1cD;%K6d;uxZi;#i`N;y9v?;&`Ht;sm0O z;zXj3;v^zQaWd1)o8$V)HJ^TM&8Ht)^EuyG^WFb>HQ#+7Rm+Pv*(94Jf0B6zWk#pQ zi;+($&mavw9NmYYFT%grRJ;R~X6VJ#6|SclX;9j^zcnGK@R z_HPspo{?c@6Si$j%LsYZvB|2u?$DEq&TcVn6KT*wgfT(8sj;LlkNK~^O zBC6RA6V+@-h%nnxrq218y&h?fQD=Rt@HpA}0`v*8^{v8_#Igo+t5>g$9%OJn`9@1-m zaI{xI0rR71uR;cgM!bjm8aK%4?>fk;;RcX3+(fE1+yePc2Bg>gg zZegN2ZV{s6xJ8*$$9;&Xj$4eVj$53lj{7h%R8HBC5Y=%@5Y=%@64h}_5#hL{nf`}U zcI;`Kta}tdKu=9hiA+e2k1=I%Xf$GbbZpjW9-Wjps8B12ZYDA@B{?Z2rf%Ot=27g6 zh*%a$nkffqdv1B*AkW3Ss~^J_MwD>BsQ`p&c~TGeLA;_m$nuI1AiW|Ksn+lm$Zwv8^qOZJZ4FSs z)D&$kNb%&_01a4mK=@3#Y_3PG2CVu-9rp%AXWSbyr{ms;sN)_+)NyZ2)NyY@)Ny~7 zsN>$0sN>#@sN>$8h;er@%?wyD>PQn#U4RB2XT+Ndj0ZPbmZHhO`mHtJ4P8@)(`jd~!p&xJj~_$j1l^jz3WIM{O= zn%>xAoeTQ_9nZyC0WTThVOh?F5y-1wy#m4l2@>C9bhObRe2-DIF_8ATupe2>)*qB^ zVr7pwYSnB$qMB_0(J@;*b85B(qM9v{sAfwds@al>YPNwyHJc%-*;0sVHa`(&OJ$nr zTIlsiGl)9tTsW9)oePJME!P@K9`BqBUu8CnYdPn_*Ra7k7ru@R9>#{W{ptuhOt1_ zFb=8KFdpPL6Ck~2qNAMz3Yf{FeFst^$P_^Exv;T$7kaJfJ&;w?R3K}5AF0;#0SI3w zhr|jQGW)p@uaBNiwY2#okX6#hK$bKEsg^VoxPq|Ec4gkFnl%!(sseMEC``(9aEX3>p|&e z1Ekk%q*mwXCZcwAGtuel7Us08TZ!7$FNxaKuZY^!ZA9(rcA|FmYoc~_2T{AalZdW< zgVYXfyTEB?w`er9?GX-|LU?!dUTk4#!%wF70WroQo=SSH?Kj`@FwO9sydPQhodX~| zg$;?PupR9o5T3#o?GZ>jvK=Lh)sBJio;}&)1hs0llSH-JDWYSw)6A*W&JfjVXNhXH zb40b;d7@hF0#U7Yk*HR?L{zI?Cca56ig>0QPehC48n4$T|EAQXPk1 zL4NZaBtBN|Xm5i8<`2>S2^k#O>ee@Zaf8(GH^{2tA0TVEgH&s{3-X(PA@S(7qs`Hb zHROcEIvP?UTW&y5WW(#F^FXgP$>f zRZ>wPOL_>YmQ)OcC#)g8=3&U7$kxa_LbXJ;5+IahN4Ap4`b{ZFuPF^_MYb})bn~dF z%R*X?TaKuXTb}4R?qkfU<5nQ5<5nc9<33JQ$E`#RmB{u4Q60B3Q60AmQ60A`5sv#L z(<7cr|9`*K)KxxTK-@1T(jQ@B`o$&2m})rMegScHFrLkZw7oKvWh2-<#Z;#4(;&Q% z57KLDP^;6nCQ*A|i|F*eHgnqhIz;V#U845B9#MN=pQycWK-AthBx>&)5w-VWMErfX zG13q`>BxIBO~81io@g}KHRWDte>0}i{^p=`aB8*vEr{CwmPDuht(epHwOP_RzI1}9i2Ba>zZLfX^92nP>KW0Qg{2qxiv z;|DP;g{PZTAj8riq&g0RL4Gp?(rbn~+E+mV^O|U1hYSwZcd`c9-;+B^wll{6X1lHNh8B~1bO&AX8JRU%~eV2zjdPNiCc_4^={WC!aH zki}vc5{qF-D_Bnl;#m$+e++3k?hK+j?o6WNxSuemjysE}jys#Ejys2_jysnaD#7|w zqB`z8qB`z;qB`zpL^$pOrvG^v>U_dvAr8Z1ACR^SE@DB5Y>S!799;s!8>%6_W*N0Q zN0$?|t1F03S64EpU0p@guC69(SJx1=t6vbct80nc)pbPe>UyGfbpsJy-H6nVY@5LN zy`pF|vTYF#nnHM+@>XoI?hSnj#26#8IZqCL#pAL(Ik*jZ^`7k@ymT58FP(O@J3)Bq zv}kuh+OcgnS?sn4ly3IQ9{Z?OyM0SkyX_}Bc00hF+U+}{+U+1w?RJQ$b~{W|yB#5_ z-HsB~ZpVmfx8p?E?F7@zCkHjSoutwVZl}mra63)5g4-E#W^g;p?1O^aIc#u(+j(U0 zh%}__Sr>(aM+R@F#ulB%mqFGv{vOC_`~y-Qh$|pGAPtEJq#f-w5FU^g?G4BW1hx<{s73<{ZtPl5zrBQZA%gQf?3)jfTXd(U3vGt+B~R zwFI~PAhgL2ZUvCVdKePxVMr^u6$awbXi*o1v^@7AqIzyIqT{*6nN!bwn5drn2vI$^ z1W`S=Br#NiTPdP?ZfT-=ZW*F_?xRF_Zds=PHMsGXb3uDC+AlRF#+2jXT*s9M;04u? zwog{zCPcf6Ol8(S4oWwbAid@ZYIW9DCTicS5S_kPWlsD4BvJcbji`OEPSn1K5Vh~2 zMD6=iMD6?2MD6=CMD)D|Qajq!1gDu=qS0tqTR3P=;U&g(u*JHcSQm&vN3_HLa`S#- zJsy_jeqw#()tefC{H7tK*EDjpVW5C%EZQcJcCdSvEM{v8N;l19kLJ{>*<3_5TR71% zTMOpYY%PguwpK(nTWg}4tqoDl_8d{o<|eAy+7i`l?T9d2d#2g$Cwi!}VqFKabw9Bq z*@|_Y$eFS3d1kZ3I_G|3XKZj{T^D5VF&9YNueu5ck4qiX4O?_pzW}o0Lw6u&^@~V# z9D0EKrY9u6$Kq&vfdZztX!}40$2z>o_hoL7xDf%eYIp_68X}Qu4N)Mx0uK_ez;m=Q zAiM%kwEZC^*2MyXVqN`uCJuV7$p^A(8USQX@kq6%1P~s7hQ#B~klAA$UQ?S)wX}I4 z$STPISyBp8Ey)kU?+79BJ3`3pu@0}H9Za>vx*;HxWXHOp$okEzkY4i|q!sI42d0}e zQNICcIqsW8b=u{@BU%NYm2ZwMi6Z=AqQh;kE|%5ir9nhlP2BPd`tiFPxj9i_LB#cW$a>E=t><11>_Y}<%xw(Ug6Y+o~{ zX4^qjv+X3R*}fsF*>(}tY`ckSwmn2O+g_rYZ66V4`<7|8D7~LLD@q?ATT%KuvK6Hd zlE*uj+lQEaP?SE54NjCkf(#zIfVAhuG2!5GX=ILLi^ii9AS)i71Tr3-LaO6%8iel~ zLgM>|j`kcVV9ty70^|dtbeOrw4HEG#fvg%X16jlONVSF^Kz?%t(rbQnv{yj^b4|3@ zAtg%R00c*AJlYJs)^rPG)sz8bO+O*kntldh?F)&uFJ$&8jaTyiMzys0caT-mZ6Hhf z1F4quC&+L9g7lidA+twmymI#+swGO_0ih&2O5a5m_ktmDFBsB_(m7mo+?GFZXTlJxOtgV$IVAn$IVYv$1Olq$1O+3@yV zna^4m!(nNrIHc`@53?YIwnv!C94!IDhYTU{Dh_IOj+Q2BSIZEcu0G0~cC{=~yIPK@ zT`f=4u0BT8u2vvwS1S^=tB(`4tCfi8>Jv!q&{i3oW~zurLt9nhpeclRAwP*NR%ojR z#29A@ZPj^Lme3Z0ygE-P$Zwv4^qQv~?K7Z&sUg~$kalRRMHaKw2I0NXvPWHN)ok^M zYPR}B$7~IlQ?oTBs@WP5)ofuzHCtn%nym>@&Gsx&&DNBtW@|=-*_t!W7TR3YS)nbQ zY=yQKWGl3_Bxi=UR?I#qw6(?tC$zOe2A=_kwEfC096T=dOj~TxN!$)(P2%=IPGS#I z9fuAeyp{tJujO#G&w~P{vuL|O28TAhlG)1*5+=HWtQxujS;GrRwTA8>e2E1TUt)2z zJwXBUl4yHDN@(j12nuZt8kj!NYfUeMtePT#tmze`T2my*Z=xW*CK@s*v^6w+sg^d! zfUJ`G0a;Riq*_ue2rqty^co*zP-tsp22d@bEgpoD?9i5gESABLSO!B{p)DDhZU&0l zKw6HQLR81~6CKA*WlkM;5K$d>Fi{Ff3vW5d;qbyHikKkdMe-KVbR&75L!& za6UVl8`mGvgX)__P}+a(TMSM!OCW7eSPJGzZW&XF*2_WZW(6dE3`ngSZ52_CwwmY| zZ4Gm3v@eKiw6#Pv+B%{dZ9P$qwt=Wd+elQSZ6d1CHWP9Eu>~owKY0DL6^zeVl?_y5dzniG--$T^)?pU#WBI5?~qa_&L1o_P^NUzCov_F9Y=4a9V z0%6)T-J3AgbB^BsymMi#avh-$XUrKSVX#9ip1;E>X?)FHy~Q zkEmwL5e`(d;Q^sWQl_sS1!aRYj^bJqhxgYLH%29WwhO1MmM0p<3D;3bIOi3doY4Mye$} z1Hx;ZA@Le#$n1*@yx+GL)w0N_4MIuwBBKtncnt=m*VKcw78&({>863G8$w!++lZ)+ z8%A^-w=r|-xJ`)axX%*Rahnp=ahnlCWnMKWs^hwd>bT)Vb=($2IBrX(|Ml6D%wlK6+#c%k47~>E; zHCIVPTQ45gu~JU_&^|XGo9m6dI!_-E9vFtiR|y^ME1-ah6m1lw9onMFVz#~@y!`^w zYx+^EX6sK>v&9k}v&Au|X7dr%Yy*gDws@kNErFNi(lP+J5z#aPYV^GOuHc zPU19>HHqHJ0p5+(v5tAKT}V{N{hX+dyNIZcyOp_0A0TPcBJK9a4fY~hCEs((;iB|`2<5VL}&aCFsI}9 z9Z|>cAW_Hf5K+hPFj2?v2vNuHC{f4n7*WUXI1%G_f@x;pff+}dlhj#(=M>p~N`hRVMzSgj#@R-6{4Ey zN1|hnJO`@9V7E#TVK~yvSL{u~VOvDw(FG%exj$gs}u%Kx4 zwDvpqLi=wsmG=Ju!Vm5sz2+}!wf%n+wf+APo%Y{hPTPN%sO|rksO`T;)b{6S0o3;A zBx?I}5w-ofiQ4`=L=1CYr1oh!A2`kA7mc>RfN=2Kt8WTo3+Enwvswsf&Aqquv|N~n z;d?{&X}JjUIyH)d{N^D@uPNqei-Q8@VbMMUX`hx$ki~2zLFuNH>`|IpHCq{?n(a}d zW45x)soBaA)okU7YPQFSYPJeQHCsiZn(c9-nynI1&GrNlW~Zr+mktU+?R;zxV?z#xV?$$xP6GBa$0_wsE!*!RL6aVsE!*+ zgyTjr{m-Xm=K;xR9EP_qL)tDF!-5dn`Z1L`+8>19(m{Gn9JM+}eMIf*0HV{?c;>XL z2}JE`B2l}VMAWV(6Sb=YiP}{|)UKuwwX1$2x|)jA4sCW}84%vrQzb*(MRyY?FyF+dE7% zPyD%gGi3^OR%m;dY=yS>$W~~ZO3n;z?=$k z=p_CaWKH53Ku+SBNOc@O0r|}=NUxdgXyR*`e)A zWbvX2NW5qQ(h6K%}lbSd!>bQG|>bQG}>bU!ep%U7@ zC931@C#vHfAgbejM}*@ZWcr^&+u)qo`(@rI#$mWm3~9UI5#eAL#3#A2#k%4+284|? zG{_alaUPa=#c={zwf#vDzR(ScFLXQFGoXMuE826A5AeuF<~%pZ=w1L>qk9p^(Y=IJ zYq$);D<~kbDt5G2KzId(Xs<$wM_vPH;JFS;H#cPSO=>mp+#>4uWe}b5`-wRnzn_UZ ze!mcP{C*|s`29xI@%x>q<9C~=HIR2*23OxUitt*Z@WGnF8 zC1(bnf0@k^c$_Pad)S~?95VL&8%K_o9Q&M*_SokF^R$+msl?|zpmdWL(rfZjt7ghi zR5KMII%X=!oSLZ+QO#7CsAeicR5KMNs+k@ls+o!r)l9{SYNm&YxZ-#OseQ#!0-R<_ zibhXsrMMT`Uz(}3zYGY!r-SsGveat(%MrEx<%v%FA7f72UxBFYuSnGPKTg#4S0ZZr zpCD@cD-*T-RfyXDszeO)lSu8;ay4+8sV*9Ae~57K+zT_I*b*DtK1ZdTaP_B<(b>n} zD&QQ2mrC$Ryw}~n=y(QsogFnmep3_DYic>#+Ms}`Big!<_L;dJSu9r{guBJEM?-4W za*c>;xiF$*xyHD!!8tXzLk15JL)vr0BOE+7jZFt^(J<8! zWQD0tK!&O3k?KHn2I2Q~kY3|;v|T{~(@nH5Kn4dwycW4TH%K6S5oFcS1IQYBBGnpR z0{KlZNU!PbX#0Qy=4H`FKuREd1rT&<#%qxyq1T$CKvqrBK-Sb3sn!$&!k7La@ufe= z?5AeD7CDw`X>%OND#-_ANdu5-N%0_jA{!E)$cD^*YQ}4klc<(cb211e*{9}#$oh?e z^qLe%>(uNA;&*YP9t3H5?qH&N?hvBmxkH&#&wZ7sp8Fb6J@<8@dTtsqR8Gxr5Y=aS0@m)s}qUZ)k#F{>SUsJ^&O&ibqZ0t`YsV&eGjP}-ll@_ z&Nb0!c>6#&XbRzN!XILbb=5Hqh%pYyyy}?F!?Ij;e1yC@&&MFYnE~lFGacBr#Y8pR5~7-I zDN)U~jHqT?PK4Q3FwH#qBchKqE2*rdRq?16FbPB1KbQ**QgCX%?Fl10@Yi!O@ zEurl^2qoE}?E)>X%2WGnDgAZG@iip*vSJkC|e*7?5Z-AsQn};-Bg3b!xhx3@j{4dyilTJyr-B`<2_AO<2^%Ev^#V z9+u^Ku~(2EEkQ97ga?Qr@c^--?F$N+7}55Fv=GqrsMkaboPgHckN83Jif+M&Y1Mz3dHWvvobUjtcD^>rYlY8p~C z@*5z(c@xrW-g30VKmqf%Xoo{SAa2(;Be+3oNC#Opj0CcV08*`C6v%HzL*g4Ej&>|4 zV8)4dJfy_!34rV?i7>ovdm{8&(Tu4-}{G1pnlV%Z7y>c;8y>bar zy>clLUb&3ve_2VKLbO_rov~_$42eBEI`$lXX~)Aa;MobLmtsrxF{?r8W(_3n9#eZo z8nl*pRd5~gdZ*YMl3UN*Ex`@Mp9D7&e-Ye7{7rB(@wVU=;-7+BiGK@zNxUQY6%o;P z8`FEEvi#Mbad$hkY36H4dkXE~eu%p}nMwfp286XRq}S}GRs+Z$q7KzwqBB(cnA4&9 zmZ(FupQuB1fT%aEm zY_Tr#P66SgA(r+HYGi@Y<)tMi`)`OP^5EF^JgGrfjcL=gh-2DwDrJ3I$ZKt^{9BlN)<`32?5#~>j z6=D7YGQ#|gRE_)($ZzgIdd*!&`!6V9?uj->YZPQ+qhtGqgv7?g_Un;5M~)m}c#U&T zZjc&sfvg&G16e~Jq*_B>5MFBxiPsuC+5(_}DJa@PkP>$b1A^i%UgKN@dabD_$g1ff zAZsdyRBI{@!UM&Sc%T?Ed)&oqoJ&wGZ7vD2N-70pNu`l$No7FzN(dzG9z$l2yLgRr zIjSY@mIt9EJMKP)EM7ni=`|H0t+@L*5U-XH^%IbmS5_vfS5_f9URjkn^~xuS>Xp@q z>Xp@r>XjkHP>DLBMD@z2i0YM36V)r9A;K$bF#Qj4*TC~5txOzM+^CGT3vTFVYAiReH67QjKv|%8;heEVXARpkA4a~FL zAOqYKWDRgLAP2ZPQmw%S@|$o-uW8|ETY>_nm1tW-ic_`$Xkd8`ly2Ozxh=ICSlSVF z2-_2#A@ne(L)d|+L)ek1L)eL^L-;&Vhp;nIhp-D#htNyZA?!-T5O!ml8Cdi=HJ?7B z<~z+eGS=rjnC83xnKa)6ocLckYfliq$OnnPQcBWR_pG4I5Clj6a4`fc;Z;0Cd6r#4@Pt^9O61Dw zk!ndBKz_3k(rY$BW z_AF6*dyc5RJx|o$ULb03FA}x4mx$=?Wu$iK`W~ESeh`g@t}DVpvj}g5{t;WO%Ymyv z40A~4<-j!_mgREbI`Zm2H$Z-K6VhvLIob?R!2BfIpCRqg^$S_d_A4me{3d(+POX~l zHc`#?2hlOxpUkP*{vxW`{wAu~{voQ_?hw^%cZq7Ye~D_gdqg!`jy6D;Ehp2=v$j5D z=F{iPeD7)Ka-J&l-Ty$D@4m;#a-k$VvjJ&4O&;N3qt`QeS*uLad?0I*<_B_;7C@>- zE(pT2&5&MG*wGdN1x!)VJ_H#Yy70c|V%#7#6bD%~JPc$Fk08|=N`U;PBqZK&;b=>P z0;Y^;ABB|ARTdBwy70c|a?oo{B* zwID68tW8v}tV49XvMzJ#mGy|~mGz10l?{mMl?{oZ61o}@)hok@>XnU&>Xl81@XBYI z{$E0u^EaKQI1=wdhP1t~xp1%-h8Y)Y(aV8wAk3swUoHn)@UYCwftJXs`CEbfrZuG3 zv~jf0fda-Y+P07naLUG}9XH4Tw+C4R>;ZCsJ0R5>I)d=cK1h7C&(U@U1xy#wdLhLr zy8<+@bOYfbXW87HS`92O5_JfB5S=0H$(#=1OGF*QUPK+j-b5Y3K13bDmx(%r5kwur zSBN@aiCOjH{TB&rPzQEiYyR2%q- zxEx4DYF`cv0^{jt(dap82=_w!hccD+zY4})IOh)_KFd6H6j>&jl61Yj3mjrE*buJ0!p{O)7AJTUG&xC^wU&kz9wGv709Y#HIOx|L8>); z0mAS9AiZXtqg@XQm<^)c2q__K6Cmikiq~LohF)vh0=RBGsC{0{P80NUzxr znf<(qw=I87wX}H$$SP?kkR^SCR7=_g@|)d|Ub6=>`+2oq1GATEIj`;mp(Ojf`Yp2f zVhAKYb`5ErSHAk3^@pSDDk^UL$I6uM@SmH;CHXn?&vHEu!`|gQ&gziKxB(nTX#0g47OQzk>0s zhiEi>{Vp6liyE5S*kWB0`~k!;hh$z7{K>sBwM1l0u;efZ0#&wcrvN4|XbKkena?-{S+C@IZ63~4*fBf`N( zZ)8faR+*$FLDnQK1>__xjZ}?X284UzkhmA_Xv={Dro3n$gM2{f3NsbBL29T7vTAr7 z$Qmjk)f%1v`Aua=uc_i_tAYaNNzqn=l+aZj5FEN1n-J)=rcjVo(^Ej!^fXef=@}4S zt^tXcYd~fXU3hhJEvlu>wLw-%b$~3XE>bP29>{O%LwZdE$n2r3ejU@0Y6)G9Kq$!$ zU17-LYuAu?9t6?~UC#p3O;b@fgS5P|IZ?gRMRdF}oH_N%7DV;RmPGZ+Rz&s6*2GW= zU2TZ!mCq5?E8Rr(%C+{w^T=?hq2cJ9M<&KmqfDXuCrOJ0;#*{318V0QUe{1KbnH0e%Uo z*3b)tS8G6eO&>@5GALjoMEeS)IAtV214|Sr-9*dgzSL@9i6QC`_9Hq&*q=Ea!dRjX zVH{D1&_~oE96;0|j3??4CJ=Q96Nx&6Nkj}`GSke!QVxI0!J4Q%lhMA%n2hyRU^1R- zqKc%bL41W{IMcAd^tg$GQM0$`j|JcHN;cgQ^Hd^#+Mta9#5jd|Kr=zu`!W- zYj%z4pAeJiuiMbP$x7M3xWwf6$mkgJ78IjI6PXwtn`BbVFle&%uYq}+%Gi$YG{N0= zAUl|=W4j6?%?RZ1dIo$jGaaP890|h9?I7`TJ4h)$1+Nd1d!iMg!Gz8kWxIxDxz-;R{l_Qd?sg)yy#;}Y-Dnbc?TN( zN^7C6aj(YU``S>1cuM2VTHQRY@n8$G>E=C1ubB!dK9bTS4+nGkQ@hc3;002yL? z&4D(!2k9=%MbR@p>Z9ak~&3p_Q;#*amLpg)&cAdvQ z_~&*VP{7+TVtQa;bEKG=*rSj6B-?)HGxzf)!j=1&S=sjZ$=)NEmK1MhOG$HdKWnqw zm3_YPF^Z5gJT_n3MmRr7TqzAUFg=#eX|t$rR@8awXYPqEptaLv}@fLv zk;6ODbG}8^lgsyENlYUcU_ZC^F$b7vIr(C&2?Q^Sj>HEPv8j(a$is3*;)p|;yJj)N zVcF{lx8b#%(zBzPJLc?>y=}*2|Kr>xvu!7kMcZnW)wZ4F);{JG6Kz|bY;8M@O?}K6 z9wu!&o4IS2ww;r`&T|`lR@!zUbH^;>eo=P3WbJ5=`(@_)nC~+WDVnVrKge-cAhj7k zX6~A$8CPYmYusj==z8XkS(TBUOa z|0;X^#%*w|QBEKfyZladA9I_Db+&^y6og}Cp3eS|0{-MKc5MC&8BZk`HwK<6X8{IZ z^EcEIbfp9a_K1FQ(EkH{kK!nFXi|Jq-G+%Z@cDt768Gre*_AOh)Rmb^GMX^ zm6j#P#mAfc%;(d5d}@DFfcgA##u^-H65|s4n}SfKipE|G6oO`yy|}SXna{;1Mf$tq zBj;#vAyXK8=mS&r8<`@==$fY}$XfF}1mw!I7*ai57YE@nCP+NS1nC<{GZv7xMVkI8 zrUaDu{VSx-KYwJ(08=x8SX^$B_#EYi8qfj`w+5O z$1>S(%2LmhQQt^^q$$T-59DgaCMCqwib{&=n-qnmPgJeeF@s{_lag6ot-&yDRIR@K zq9b@vN{m0EMXEF;rtkmKVn6kq@~j~rYKTcrijGY&k0I~rEG_WICB&Et$afOgN{;l$ z#Ux@GR*}2(Rac1gN5`7SsVFXrxP<;GubN6wbbL#lL!9pkC`L&zV>SXSojABqWoRWp z$)VAa(Xlb63Us5TL49Ke#i6#UP{g)XZ%8r&VzBCa5-K=MezZE-B>7^Z@dqNPdK7|! z=ByzGG1Z~-y~|N}1RG3B-G&kUV-jr})xc{Zc@Sq!%#gSge?-y%6AH~}DJR*$gE4L~ zea%x)j*_XElnk3-U1rSFJe0!}nF@bE`Fm-D~Ia&%g>{=bka)_dnQX;VMuPX{ptLS)C7LkyY z5{a_vLG39drZX`qsTjNZvSV)S7@3f48c2@a?PnsR{c%Z&rXf_$vdXrngqlXOGb`<9 zVq(zaFep072qs|l9v30YMAMiBU?=$}1w? z6C$Eg`}Ko!d9Y!$bY)OnN@`?0J+6c3@?+mfo!h3PXlUWc{)tI+r-;Oa6w}GsF*-gn zB?UqKd1yLG7=};BB}U3fq?pdKBfAlk5CtdgBD;yt#wHCmUfIm`hu9N7!xKbT(b9=T z>mTAb-9+UWUM&4WHXTOQbk8ghlTyy<89-KV9Y6A<|m{izA2zihhs&z1PGt)|L& z4vvZIAM3}pWOU?E6Dym;qdFe^dBGj=Dx5tNQj;UB$R5Y-;VcpVdK81OwmTL0q=c&< z^4~N$Iazx|#YIZw8NeOncoxBqU~Ejh6kJjDqGc3IkiyPeS_xnADG|woO=3_Xef!0m zB-!1%a+8^t%s`qfWrtX$aDWCRMfuD?+1t7vlqwBkj=4|E0gq%*H7WP$Wi+Bvj2~K0 zxcEhE%Akl?lPbGSSli`#dd0PlKE(_Yy&Wi6EcYK|28;fLWv=|t_r>R+V&JPoxCMFn zCoX|=Nn%QTBx3(iIcl9AmW?<;|`5a-O4WSkG;5KdpaZ>vP< z__*ZMzUK7@ZooMsO=`94k&)|f%o{_seWuS!|vO_ zsT-Y?JTxLXG6h|J`@W6zyv&U_d-aVm!?A}9dO!5Tj9^Xz8&0kfcDzfcmX?4i``XHp zROW}0Gn*^L02FSQJt*vGbie*)6ttaWKMX`P!hjjg16fBDLO5=g>1t>UwN7;F8)wW| zYT9AHpcPnWU3#R{ijV9YS<9p*rqr_5f3-3fA+;W`>==h4Q^hL~o?srHiN{0N2_H~o zgJTjR%>?G9!Kuku)WN4FiiTmNY0tiWp^Gl#0+mEl~dgI0#0LYaMK zIFH8%EePk!o^o>Kg77nBAGjb~Ap6OwFLOb-5XvkI!p|iu5mgt2i$p_zg4X*_?eLxL34JsN_O$ zpQ!F%2!5MQ$A#ej%mTA41P?%)eIfXr=wvozE(8xc$}9`PLr~tg5IhWpFWbWJ2z1#N zen&;+Ec}j1Ha|>ZFZ_->$2beW6HsMc_?<*P`@-*(=;$b1_??zQnB&6l406E>zq9vg zX;^1nc1||^&xPN4+5Ep3eiyj?|GDtHC?)(q7Jiqw1DYiNWcG34cUcO~zVQ2A3OjG@ zD`83(em?{i!iC=z**$3C_oI{@VwK`7{I1I0_QHe~<-+gUeOh|5F8r?Fr19Az#1^deU7_WdII^Lmu( zWeND}ePv}|0{(X2R*B2H1pNJh8?XeteP2B^MiiESe+2DrEdl?O-EB+Lrn&_DE9d}g z3HbMY8#rk*S9#{2`!+sk33vy4_#V9SyUR^ME4_bNWY9|Q9<=wb^m4St(OlT2%0-bb zjCg-CE;_~J#72D11u~=u?iA&)^tEvNCps<#E3=T6p(ZyryImP4er(?IrCU87&axZ! zij0rvK6!MXV}+U}&p9SHY3-sCT6Atuo4e%IU5@VQ+PPqj9$5H0waG3u8aLox`E;+! z^M3uk)>r?dO&vo`e%)<&Ds=Is1-yNLI}_`QmQmkON->3H^H;69PyK#OJ!dl(!@9YMY~Ed@-TIds zxSY+nM%2wkW%H7Ep0AviYmBoQp+Pr4B%3>1m$f|0v2J{OS2q{qW+>&KEI9hb`4eN% zs^W6s-J8AtUUcHetYgo+WAV6e^DuV6+YKQ@WZKDfvMGUlA5)TA{;e2)M#zIdI_2}^ z_Y}a3{t9^tdy3%B`9q#!xO@Jv=Mns6yQHTS{z6;E^Qfn+r<|v}=P^$OPesq;cy{6m zPi0RPPgT#8o@$=zo)Ax{=PA$Ao@YEYJT*PFJheS_Jas+wJoP;dJPkdKJYk;3o+h4W zJxx8$Jk32W{PnSgr=_Qrr?sbz=Q)qt)7I0@)86CpbntZabn-m!>8yXl%xUg$Gw{7(`Kq3AhY!9u{nJZb|8$3^bt_P(+SQ@%@L}D| zvP#=Oa)%H96PLYRZn(oo&VXY2Ja_o$_P>8Mv3ICDd|aMb?DVxee8NV#Tj36$w87f+ zPC4AZz&(ucDX)p^yTji-%_&gG9X_?GRr~wXE%@NxUi{nV4xbjyYizGOeEM$d@Q!?-Lck1Y@dSieZeAN-F&8wfbhG6yE^ZMbRJACztL~KL9*3>Sd!?b4P=X%td zGcC0}U(`#5<=_%ujQ&B7`r^E0jkS$VXyez8w>GW4bXNy%T@&l@b(2=Ao!9+vOY2(S ztO+gd4qrdTa=-Og*Q;hjxNM4%J5dt0Geb@p@%Kl?-(8m~4(-4Dn&0iZ^y#w`Jb}$v z%-4DLV$D7m+^!$fPYqhRVT9Xt<>eXW3rx!e$nnnJ+ndAOuJ5leEnX#h1>n`$eZ~*{ z&h5Hd_E@i*X9|738cG8hg*8w)ZIe2N`e1O6EXY~AK1K_DP z9j{z_1vi0y+wsGR%^d+eK|He`aPerB@pHZcYzf5Oc;+%7ZA;rX_q+pWGwxuaziRV+I>H>#SCmXH>cZmW>51MyUw`*_$X{y z`!)Fi&-~S=)5K+N*XgOvwvSv~)9pHSWou&Db;Y3R)w0d+i($-DzVKq}M^y*(x|iq0 zwD;VulXvDmb+g2~&@}Swn4d8Nnjinkv2k-0pnX)83nM=OJoRDi%|&kl3jRBCcvINt zWLSapf?GbqDL=ISqNTSF0fuwD@u%1m)h9O})&`XxXRL4D5^!@eLe>+2+}oGU_~4A& zb!<(WS-ZCm2OO(k^VDiodMqkx&-}XQ08M^?o2&x7kn#AL>n8wfoBp!@y(4bd(Y>=z zMQ*@&9eccCwP)6+K=byy)4IR-kK1*)REG~D^8Mj<9omuhZ{1H|`9qA72&Jw=xI>G8 z3y_#t$n82f>ecamkNpgoShvxbWxD{Cn?D*iyo=lQ-RgFKwSD0vAbxd&9PjMQ>hI1u zw5<4hIraDJrN+Mf=B!z8w0sw)Pr8P#T#5=i+4PA=;ma?b@cD99gQm*f@fR1>#XgsQ z*#7nVo#1G;jW3K^HyGarf?xdI>fhdz;rQo^O`5vlgKyvtD-Ivd<*5&_C&#&BT^3FI zw<6r((303bUkt#Q4}E>x%)9WWGlkEeJvi!H4E5zE^QW&r4M=F4^N%ih0Wb9SUa5f= zp3YnH**~h60JJ(hpxTxIpnX`~L4H(vs@%-YgT8^)Pi`sr-oig7K~wp__ph|T<0~hZ z?!EB!+ubp+$Mb&w>qBn=?p!KWbV+jn#wX{5RKUzbNpCc(fSn)R)UW#M&p}i9Z?3HX zSnh-t!rVG;+xU2e`O8*L#=JRx_^roNi(`@<|Gvn}D@$w!Osa9dX!(HvjQHUnF|fxD zKK{$)31grs&Q-@kz;h|Xj-C1)n`TKJ0K4|1C;L4zd{QfD7S37x=t0c&qvPpLg8}`+ zDqy|>dTlM&@Zxnq^23EnyxAD=#WP*rpWP0Cx%T@97{Mc>i@wxrYA7_d^3E@C^LuFS zEvgWD+5mbTdE~|b#DgPqH?1$^jl({rca*9;?>A_6OXmUeRu?W-9bG73cJ92+e#qO%BaN zcXw?+i9tCW8~E&K$2S3D6}0Ej*rQQ{xAy@s+?A&0^`uSJoAm~C`*m=yVYLAttr;=) zdN05yuQhmT1j6mXL&tl5v#T!Pm+A*XW}OFU$jR#O&Z4lq`1@nx@8Km5H8|MrG6wc; z?+stA>-aA2P}u`=qs*6^K7IIO1p1-PPP`fQ1wy~?;OXVhVH_^EtbOOtq6l`E+ORLD zFcqrYezW7Izu@o3Z@jnVr#687hv9sm0}z8FM(ly(=ZHNub`jj+%+d=dUn`8UIz8o^ znc=hHxu=@Gl51w^<$$U4K6#|)Ot_v*q!2*GCrA9Y;|k!hBYz<{!UxNL-J@@tssKAu zAD0C#X40{b>-X4K3Huyd%z|D5bT9jG+q<7&VBhA*&Ij-WG-NBr0nOTd5E!hf8+OIQL+qqsv zoFjKX9KZ>yoZGc)L(el`Ucq$P#U;ch%(gGTu4zs_0$<*`Ag)~MKA88*k`qtdZTKfN z)w+Lv*0m9kWB%8R+~wV_&7Z7)+*9!)AbRKX2QuBLd-L51#iPZ$WQs(`= zO>($h2^_mh7zYR9%RbvAcKI~7YXCjC%5AqRQ`7tP;~%WJ=63mBIo!Qw!Fzx)Uw`R3 za3BlB(XeR=~#-U%mwom`Kv5ealvpfEirXEO803z_3z?ND z0qWDl1Uv(Ez~1z6G`u8m^Z!iv>b8n+d9~%?%0Hp zHy#CGRh;_dbEqAQ;qLbkP9kRJT-)#Rv#3j!)o(xp*KXAv6R3}Up2#f6b_u7Pmx}!S zR-xAs`gHD>CN(ggH1V`yfY_nS8OW5OP)`$$-dNB zX|Ls0eD!K{O8hyuYXz@Ux+J;}0S3`iDvqu2r;~^RN8t z{t%k;t1eX7xB&2V0`68K%4e*6{X^Ul1^o0<@`ST50PJ~?adTcI;tDhp>^KCxXljI+ zk=d~0wT``939~ta{`@LV;TcCJZC#w3C4axGLdi>;0D3zcaOtUh(K|Z>a8~Pf7A}z? zt3QOajEl0C0-ULZt2H{n)lOV>0(j|{jFUvh56Kt5eCl}2gYH4Y<*SIxS5=q)vCoCx z^LC@{H|T}mjR(LTN=0HNa8ul<8(?%~vpVb6z#m=SJJq@`0$>sHX2;C{d!>2HHTj3< zenuF*b$DTM3?1O7eB;-y-wCjn4Y!v0=MUU95SqV!DnBx@HQ;jbHMJL%LX-1-vGB>` z#{rdiWd`THg=ePzxsm|QpkF?n8+QzVQz2q2ATZ_3`?sG4bZLbfA&mel54=8N^%;P7 zO8edSc$6K#GDh+~K@Di8^U7i>!12)cJH=p?2#qWm+XANji_6kg0N$&>?NwLC<_^c& zRfjb)cv+u#9bn(6$(WOf5Ks@AK@G07{O|-|)$Dp7J+uWdTbu;I+0mHonSXNbow;oD zu4z}R{t^O^(@i1#k|hy^nni&4mKnemzec z?i)R}=0|J>uIKWPjs#r(Bj)ZH1h$OB&orHJV=F+eN6JvcTL(VCxw$U*F95eTDo_3g zAU7qN0?xWN99xkaaB1VAm(oW84)UhkJOJJ%CCTvkJMTmzZ$@c z#+OF}>{E4y+_$S5VtEtCd6O#^w zTmLP0Lf~q;Dncn0_xEV0jR`uxpA56UO+0r@97kF;?4i7Oa?mS%7aHzOMN1 z@A@kkikr&6*M;ZZ7k3vzgHYFe6V{qbvIl{E#t9%w7S!vdMPi$ArtxQU1E0m*W1fI%;Q(WG9(Zy10i!PE8qFIcL{~wZv{&^ zm@^d;I>93F#DZ`9wMp<#&*wnSJbA@`*yq1m%0KYWwD)f(UvBx2VAOx#Aq1zFd7NJU z!|5NTC4jfXq#eb_aOvb5AeE9{^B)^W;LRRFLXFv^gy5r7!Y;)P|7xTqsetKLh~r z?YI>Zv*#^LLc$B+?3i^GdfWqWz(fPJ4*;T~?5qO7a}RX|;M331pATGs`6=<7Jpf!_ z3pN1|soxhu%!vl~ebKHFl!frgFNO;1;avdTl~Z870x(y|zb^q86$6de4*=$Oo}bq{ z9>CHYn(4kh0qo5L3Jt#33xTN*7nV4YD0xwQ?@RH50I(FLOdVPJ6aZv$p7DO+A#{Vm z^6RWFVYA!-#2EadJmD*=^&qsXA8dN$Nwok#l?iDhM4l=kK}9l@A?CHHj!NB{!qR0Dumsh5c@h!=m%x?5%9Y}h1H#AUU^y`-_ivQu|go7_XfCSh@xegn|( z=(*o(90njJ_GK{N7HEYf&dbA=0PyJ>GNAH606%)?0K~pfnLwltYz-E%ZYqP6Al@=x z*hk=4SO9_Fv9^z4aLWROFE4~P__zU=8vmnw9{S=6kJl@Ic>P0hwR<*O;J;wyc=mmV zWM&Vz_Rl*lsdwQDT*c?Xl3znd!IJhujQKA_QscS6z-k2#x|9BRtOmmG3t%?)-hs>T z9Ehoftl)R^&KhS2K=$<_CT}Sei;{0jLPiemR+b^_-gBr0K)=AsD~~P)Ak>p5gllFP zwIp}fN&rGhwj~?DfbDWfj{(e1J9s*=J%DvRL*1Wv03-YRKzav%AkfHYCjjDAE%USu!ogA$138Q^;QKu%Bv_j54bIyJ0Gzg;<17HNBUpB> zvp~p!rQleD6N(`KfJkfmOD=#DO-4Q5A{^^L&ytldrvNBV+C@643@D@utzkNrxeccW z#3ceKUvX|O7hD-EVnJC3Eu*TROTkiJ4zLQLvIUFSVk|54ev{cz*hk2oy>AP^Yn1B3 zApqqk@8Q;9&XsxU(ggx|I&;y|!2rsW5+T!5J_k#Ad2(g4Q0RaKxFm340Ad%VtbF|i zx+UxuMBg%@nKBOoVVRH&_7TSP$I|@Y=JVk4Dv!$}KV1H?rx=(CQMmfA9R{5o2_W3F zID*fLGwt~#Po4vgDdzLf#WeMWNY%g47I(vr7Q;S}cK~?;KrF~!c-X|QU=c~&zw-Ih zR|V1oPPsgvZ!jkj8f~z1`N}*^7?eL?pYnWuxiEJogC%xI8z{U0u#0+6eCrP&sr1{P z1+M{g<~fWQVMv;qLs6*Qs& zczQ#E@0ZsFtGn*`bW{lzksU4D(8HBZF*Xx1B@fnCUJ%I9Dy?mH{ zb%ytC0IO!%@jf}L4$1%sXVE4LK)Hu{7;C|2FE$q{IRIBxOYS7U1W;bf2#oWXbzmt! zXQ7APU=CQ$c-B||2S0{6vnT+jXNlAfSlh~uDq9X*cojf?J@dmCg2mI&7Cngoi%1!jm8ZMqJC`#LN2)BFQbEXj&j`K!O#sT7hofK4&$v_w zmUDAaU6LnGuB~DnIsq)@?-IGsvO{5km!fX{hquELe&{V&gg(!TPXNlt_-F;is|hge z%gU2~A)bs7f*4e!^A;W!b{1<8v1j*}_mt=AVt2O;h*K!!;ay@HRVH>y%Z>|*fL*ZZ zl9;qZ4X>#g2bOXg2ZRERChrvX5vd-Lhb|L(v8RQV4w|B{r~@c>;_~vOyg(2I6J;kB z#R7{3JC{>N#wK(Zu#r&9-*GF=}(PFnXrhtgrw>C_RTp1&k5kq z?nv2jG`A%;RIrHitz;_Xd_uAP!}1UEd2o8%u0Iksv_s#Gk%3KkF@!BP)EWT8sk3vRq5gfSJn z^`$~=uQU`aK)Z;kzhIXdUQcM@QMq6I8TODhp{`qu>WDmSpbMR-?>oFPS9}&O$!in(D@Sc z)UzUocUI74ReA$0^Kk+{R0b_`&&NPeJ1r2cAuph1E=ayQ*a65|4X_3-gYK9hF&+is z`vj=W8vYE|{I9;aNLwDS2tY_Dq_8j?4D$># zfFCky0Aln1phrYF6)fGy^@E%MfQRe!1t3UiZs!9Ki{FEu`4kJ59|iJX-d?UH(|Ej{ z`qSHmYbJ4kPDM;suGbOb(NpNgK9@uP2y&EbtzOJ+5xoWcR*dbJE^cd~+(m)|Lo>AV z$93SqVyrkXe(Q3f$wfgZ3IfyUi$ZaR27@OHjPtRL0KU~=zbIJ%iM5O!@fG0Ppog?S_9Q@uy<& zc>O401ptee;9C&Wj*Csu<6@P0+_NTkf=$ra2}?KsT9-OMMdxb^7K7e@O*hpySfLH7r^Y%K(eqobG#k2^3r-jo5 z!~-4s%>?-rH2nqHs1PbcjZ>_aQ^_radGAcXYHK>5zkpL1ASNZ90&tImIG-DSVWbW zU2MxZKw433XaouYSPLN+ft^MDhC}p!2Z&XgKeNF;%O5X77OVkexMlPJrxiJdWySORKX z@a;cuaseQg)HYFJ!ieo*+u~L}2P!;*eFWCHk`q8yP0*Hl{r&Ah4{kL*KIt!SFV~TU zdAwcsBestbbIvJZkvU5c4riPJ`Iw+eny?9ga7#~fZ_t`~8nJL?CX}@k6o!A3eNDtX zi#N!%%2iroh?pqSj^&&Fl46MptWn}Yhl^5>;r-GsLoo>wD$(+ngh~{C4E0bsqyDBj zDpw(ugK~M)Uuq^%`c$rg>MttP{*)snMfZKwXUm2Pj z7eh?$BleSfi4wD3g6#W!N>X$$L8RC4MpAUo(}#V}W%+|e+|*MPo%Nc%MhJeekI3-% z@CZArCPnuUMQ7bbLD^px@%nTZb${JOty#D0LY+4#DY}~|DEkYDqO)#dY0!-q$P;k; zzbxXrx{3r_SK$tasjx=;H^38;m9R+^rgbg1h$^M{N?TC zDzb2ow?_!x4o~6y|MmYyc^(HeaXLPA3^6^@bKX%uX6aAU)BBzL47p2+_VG)vN<>n0 z>MOmEr9VXc)Revr!|RR(pz-LclA`yXa}@R8a1a1=hoF%Ipnm-^3mZTX-vc6-+L8bO z9VawO-8?%fdbgNr?_P6iMqxgbNxS89UUZg1{MvOaXzZO77}{Nk?>;dk0@oR4S&-)Hgffn*kP4H@21kexNiB=G#`0 zdfiesJh;}e%1O~MSD^#}ieU>UyBuD@C2JT{N_n%Ai$4=f&80iGsKaVAkhE` zBLK;c4Sx)VC??cQo+@R9D4tvHQ5*y%MK2er@@0L-3Z22E=%s>0u`YPR5|7>ig7RX& z4^egeOOm2Jx}cy%Nzn^DO$*3Z=56$C4Fp(H^jwhrK~|m=JzMOV%=9Q{D?*eP1ZHX% zXoKH+M0X$whJqaKPXOJo*vA-O;;ErQaJ$cM!_cKOKr!p|+{ysrRk4;HBpfNQ4}?Xr zH0ma5qT9gDM{p;^-~61M-pb?Wt$+CWg!n~$+l+=0ng4p@l6s3?Cq=J#KSjOeOjiKn z?KUffy9b)J1&g5A-d+S3=bhk2;GfGuqz1JC0HFeF(F_2TTa9*tqb?Kffo<^>08fHD zPX!=|E4{#Dm*Jjl1um)B(Oe33DHNArndsri0D!8v*nIqAMMBxsih~gm$+?9h_vBFp#EgV75^13MLQNkBgEc=+C^cHZ zsO^9D9B#h>Al#~wAPk?l8qF2B{zRDmb3}pI9M6p;OJQU^{dibTW{ZjMERh?YMG84i z%cSU;Vjp29XiwX8dJLlv%Fb$?&j1jVUR}TqrV9*M*S!FQjI`Sda18O@l4;^yG*dIf z-mL2x2CgF9G1CiNWlE%{a|gLX*sZN;3^?i};Z6oyHslJ#g=!#ah3vsoPPPU?xZ>D6 zs05Ot$3agQs5i(Sf(lD5ZX-CD*iauW7OSJcZ;4;(fy)UBn0=6&j%es#hdN+}6hUkT zmrJRKdZbhR)PH*G!^TdD0^MA+l zf8lr@Iz7qb=WYKT&;K3I|Apgu*z|TDKX3oeEr{x28LXL%kwIR>8k-vRu4(e#dj zmwO)DJAKNOnbSMLpPs)wzt+=P_)B;w;&6Ca^oX(3yTIQ+9uEqSqn!kw(bZ$94tu~; z?Pmx-aMG=OmnqZ7je#HR=q?y$&BD5Ns9xj#_x=?=uc+*Kb?s0Y9!FWDhUXDm|KUGP zDpaX3eAJAYIQHXd^h4lL-NG{jg`d79g^$TAyRky}sVw33k3Xh)g@`{tX2y@-G8qCt z0WfB=@D%vOxX=py|F8aqQo;#D&zbf__%%7<^^Z@WUWK?HCop{8%u!RO!}GZl<68e; z9#=eB__>Ce6GsW>u(H)XFJWke*FQdo+7)7doP+R_CODB8*XsZ61pJ(fEvGfn1g6^}nI2HD`xZD0X zMHk1f;UW2sC~b_4wWv>O+Tu@TS$t=50^iH^Q{I49N276Dp!!_iny@y7&V4P_ofRd- zMslt*!&QRKF`I0Yv_@{O>$j+iw#=e|x}#Wn-Z-5mZ>W2A%s%JBU-+mdmVlz_oYq~e z8f2^GZh;@iD)Aq~Q|ZReyWCUb66X=7GvCs2f=opFq6OqIpWiL1&Iz_2TsXHyL5F_V z4y0y9P`WxKq8mwVu~#qn%{?Q(dvVpGI!;MJEw`P%9=1|DlsXWh4c|xI4sBpws`m*$ zmD@$DkEr%bO>1$O$$8E_Ig-ftE?UsKRep)IQ&=T#R$fV@GWYl5_|{$$f@^FFXF@a| zbbjIA%v;#sl_T5>@~`F9)=g{GLRX@=l9g|bcYZGla_e=CqjN)RIGeE7*s*zEiV;^& zev`WrhUsteEAg6&?%ECN8}6~i^$OOiF-dLC5niuV&G2q{p~Xkt&0V?H!`#KtjMm2@ z*Kiqpb5mVcvi(iqBgYMHemJE)X}{vm%=Id2Tv$~2q;R<15_vcLlKo)RzDPvZT-rky z7WJzu(=|yO#EpyC9(h;$qUc!eqU^Z^b?rgnFI)c_J}R$rVe5j2d3fvz(u) z>Xs+D*$N-O+`wskCF)L8mBKx1FNg0cEO4$yo;$DbNfCpJCq~o_?_P8!{FT}tby<8A z%YLy$jYNxzkF+|)C+mXLiG@wVXGBVi!W@NU60y#{*WEDeF>&7N4%-oST|1SkWBVeb zv|(MrQUQ?)`hRFu|1J|yc}SmXwI2OYxP;}+)i zFA6LuaS;W-Ifa?+(psktg$K(Dum5Rg%luS#2J* znbF3Y@N=8eHhtS*iQ8i9B?`w6xlYXsfT$w8{@LTJ|HlWW5e{{^~SmF34pU7_i+v98g$>Tq5q$ImY?lP8wn)1r}Qz3(-4>eKx z4>>ofD@I!Db_mD+xr_VA|MvLQKY4r;p+vJJVMHdGL9LX3B9aJiomEk&Y@{od&r;0R z3CCAn8CU;*dwlIbd3+dB&p+Wf<8B9y5|&@#^*@bs^xym}G%+snpYbzsz537pPsw-M z{OmP(rLNEsn)51ellr1D-0D!!DH^ zHvMK_#zb3`LvrFk}&^$iU_o#%^!PYTT9e1)ZxOM zeD2hsGpG-4A(N@!sJe>n_$;)(X&_Za(Lowc-&cG!>WC*uvf{I&gy_pPM0z4kh+wQE zzJ|2r9J04*GLZhvl=^FxU#xBX+Di%hY{e66E&C_rGRw&aDMoW&38SitX$g5d)nu9^ z#jG#!bF5wY&cq-M>0_o$v>LaNy@(~+IXS!~Hl^HK7Ri8)W&1aDV=?jsaNPAqO zIv^#o*2q>dr<$;`D$M5fQ}r{@%Q-UTYw4HFhN(E)$kvh>5I8dEw6dqH5!Mt<#s;7_ zQ3S7nai)7*JNg-Rj6A1aimoTRW4S~W{++leKTl8GG}rhByKBm|_*>(dUCPGU{pn+Y zXVK}Il#dbdqSYbaauP$n!aDkl>+V?VIKv$xQrPoy39gmTL)Iv53Ia7~%CxWWBiePk zdqj*TB}|7uLgyMvOhtOmvY2_3xt^QB?hQ($4*PHCB+ja#1~QV{!Yt-mavkWN^auKS zMpxtTFmGIMeW1KXzM_`~WQIMZ;*dC$z|&nbG&`|DRIxqR{)+5_J|^-*&INm^{IIyJ zDp+lMyUcLBGSxfO*U*uFXi;NHxxMT&wtO)q6Vs7D?4~dizLY9djAW}}i!DZ5nq5sT zruw*EE7}k{dAG`o8i5RPa?YPaQ*1u`%Ycfu2) zw!+CSVTQ5mRbNyYIoZl&;7XZ)Z=iSX_KmkJ;-Ku>hSaWuheCk z9bL!A+UL{l)wOh|$njJS^+8UKL{aBVxW1+{!xrpVj3JVpLE);dI7NqsjK>z*KH6(= zV-)d{DP~qWHqBwYsXCn1hFuac#!w;aC-NbYYhITfXHDX2nwoJtZNUaDzBHsC`q;;Z zZWGv%osA}`wqkQ_laV0xB7U4IgGkJ|hE7*^#Sd)qLf2bP;rpqpno`v(G>$gm6Kunn zuf!Oe%sA3IETp=+21}VMGj#%e@IrJ6)0~;e#Ioxc7k61xq*ka~q9f=sbM>YhdCZ;} zRFk`GJ!|W1o59>Qt|h;)b@clkclmnGk$HSxZzkIw<-+~a)sgZ+s?VXTsIT;KVy`ky zQ&D@J?5W2Mb9t0+;jHP*G+%UV;$Ctix#7+xmKRtXb_a3@{dL<&wl}wt+sGc`_Si?+ zmfE!zvs6mlN45B7%8#1LY-H}x6km}&#=Q$UZ0qmX!#V72?Q>1dRGF!2%tA#G-%W1& z3T`N!pPeSpAn&Ss6VIDYq`umN@M1E|WzuddSVg^LqS-$3mE3RCC0mp#UFJ=jt*Q(e z@;iTk%4Hv`#s;Y^xx``DSdw9Wb*iZ@xq-SQJB59fzhj4ypZVVMu8N=OL~@=j!SVr3 zvbWL%F+0(9vMH8)pDFA;NdfnS`q|mWHcDNw2}3Advxt1AnIntJ%RQxg$)z&6+ERNp z%@?v-?iy`&zJsihYtp3K-;*7keYD{=->^KVIWvyyKq?$psI6Rz+Q&4&T8sXfh~>8u zo9#^I1Rh!2u!yNIu`JfWMK zI&rPARC@q9mF-RJmk;F*;R&wM$|06eWk-34q}294docNvGmBBu_sCCX4cFd&)VYV= zqgFVb=(F&)nsWw!-eGKru8~J$CqpKNZ&a+5+SQSkx)vX5i+;VLf-{23Msv}2NKIrI z(*q$@qgl+>iJGAc(v1z-V4164;+pTiU^n^HG&|E8%0tM6fak^~q%V6zF`r8{HN@u9 z>-8mkAFZ0LW7ZJ<>l5vp)PbtHffM+?XfMW(k7V1i$(qMZ7v=y}MVA<2L}Nq7D`rz4 zI6Ipa_>v6L&sDC^>5Hu=PGGgsCCc3>;&kM`azD+Uto_wipSl~-SJz3Er&z@nk%d@I zM3#PqY?5K6n`^q#y&TEJLaKpzKpv~rQGLT2MpkD}I`cKb0SN{7a{UzJ^yAkNIq3l= z=^wj7LTo;5)e|EQgx*6RA>%E}o$vDH?y9s!+lZK@e;pc$Jj$#`b>bMGfj&uCq2!se zgX}@hYIY&A*t(XFvWF{2?eO;5M2sN(F@L(OU|)W=B7`+rwNzkaQN+@gZ4_P1TadlV zBs@#G6pKd+LiPmAmJT(}v!)>Dt(>uMMq02wV^7lyhJl7J{BXKCQ<(FasuY?PHa^7% z(~(yDM`s>Ns@E8^)F89McCb)a=UuPTfwc#jk^ zsZjEMi_DAIP1!SFaY1>o&1*D}XYl!~%b^B)QIdOq+iB1Yk#7~-r(`&Ko zCOa1zG?UxFNkW#|u9#xN9?}8K&)TW%hO~UnY+J9v4Ww*`WR_CLT%g+{0j5OmMy5B) zD*_!=GUsAa@J=w?RK2Ng@0?IGDYs+KkR68Z|A&zW-0nQAh> zp|iLKX9O^nnX`y8r$78&$h=u->;_aCRt70gKVZ;r=En4 zw?**XEDsDPnFpz73|pH{L&o}q*;-@uEgRG}@|tsrGaH{|J4z?;>w@PhDq(#jtbBjK zcB4s>j3@XHH7f&`1T1sRus>HnAo?k92A)!I*hkZ3?z8Ewbt(6q$#4?CucKs_d_P{m{v*TbOF7C9c}%JSBs7m=?aGByIqu->vXOg(~rG0Dvh5R3JQ^pN@j zSJ&3d>!H^`VlCP)_hRlieuyR8k->dr!UMLdl(L_w)7oX$ir6DfCcV{sv&B1GeP?4X zJy2_}=U9y@HQlu@&0YPMkjr2eI8_H|lKF-N``+4B#keJ~wXCDOzp@?PP*stsZtkUt zSI$#9sqN$%VyoSqQ^WNzZwC57b50+h!RGC7zxPwP?>b%N7j0{K!S-z=8In?c2t8R+ zru>K+)Yp*9w90l5Tg$LE2fh@&jLx8^=j@ahvs=ikRE(oKf6Vy1av%AUK0=o`<|@N{ zN1=TwQkG)zcUMBxSdilZ;)i@xp7HO@bavH8+BwF#0&K?>33zK{H#u^~u)2uURqXaf+nDb=i!cMqTGB&$tNoO>Qk#UNnCGFr zss5-wWPA46)XCO~Tr)$r5HniyOnbzF`pI`2-=KT2*sLy$uQ8Sx%?IzyxBSZVMGupeNsa2Vp{D!_VlwXZiw==1 zGm+JSzUuqjJvxr7nO^8!$UAIJ8w}Q-)qGbq&}M|5P*|nD>d@@LuDZ^J&d%<^?q}S} z-1{zlaC758q(hETwmjz?v61M4D`Z=!u8KK!&Q)eEpzk`i^2@kE&TFjPmSRt_KTKVn zJxe|kUqH2>+UD$+hLh(^E1akJc+*yTnSHBmzFf{7phwg9nI~}WwbVnD>D+0<@XP_c zj2o=JNKB&YD2Amj^Xuez=q%zK+1IR-StMpCrQH``H=K8l~+L%H!+xe^LJ_spaqTC;pj%3wK&U#a6jsHVLhZQ5|6-|(x zG7Y}gW+IyLOWos~eK1>YIF~^8X?RRhqv}(iUKj=z?>3OY{U9l)g7mB}riSNgm@Z ztxJ?`6-NW6C?NHa()z_)Xh_K?Yxw4+Bwn%!`?aV@=Fi@(n z;C8I9TBqty284D|_d(iHuVmM<8*AHRt*B?=eZn3fny_)|hv{2ge}r-NkGhF2GfihI z9nH)YO>^a$Y-4QkdQAOMK{+h4-nQrLZf5~5q57sRrx^BZlS!dn-RU9C-EXK!vsy_J zwV1^r6Z{GSdZ>KuhfL8K9kH9Hhip%)nq9@5BzC05;G3E{uq1u}vOC0&o2TvF@{_)v z(^ok(ba>uk&FcJd#98SW>vN)&oXTAlx}OWx_0QdBN>ZHT&-xW((=n|or&bYvkGX1l zO?E{)+V(q!I&_x$S_!fQtLE@`9*}({9+98O(JqO8t<6cEvyZeVD!X$gdW7TLi^X~yTQ$k-^!HJ#$tD-{;GwKwIZ8HWv&S)mCzxQC(`Ar&s!aYKJZGuKmDEVv-BpH%Ts)!CJU{Mj5jVP zs+larI_D~st`u#L$_VIK^gT~%De)r0-7I5#=R^AYZ$_F>vjp;trBa*fojG-o*} z(OVu!>iEx=#kRTRZRLIZckS-CQbw>y-P8r4M(D zD`R^5)Mf6{&lN5*f(TW`s9IZ32@GtS0IxDQS?Ys^QkG%Gqk-CC=fmLJLAWOQumPsJ%!8No#-O zn%I}_p!nwYFVbM_GW~qZv48?=lK!~#QHzQ6N7;MDNHWnp6)K71Jv(U)znG!vMYeNH z8aK+;F7q3q(pc?-d24nv`)g+$e}S37#4!;;?e$miTS$E(MLr=pOmUvDNnd53m4?W= z6X%HpCXJYCokhlDEs68WX53^x9Uad1@L5vK>cU zD{>Lnf!t5ITj+=;IcUD#7aOjQ;qDnj=sdgK^@q7bp30r?>g71&3g_En2F;!vrA9#< z=4K)WEJ)u+nyoA%y^vw{YRDW+!q1aWVT;g#SQI%`+mcAqII}wjE;>^jcnTU7Ra=gLT@&4RL<5H-OBGF6ov63vT zfEnU6DaRqFZK!&pe5$Py`xbkN{bb2hreG0FZ+sXT$&4}{L3dl*$q!DG)7Gnkd33CdTNuGDn=SB}y;)W0Z~()GD54O!-u{WE*UtTrdh zHRNOS25vXD!!nYikk(8K`z`W_t(8+nEveekQAQb6li7<(f@_Z5Q$Mi{N$W17RZ=1d zn-Op?^N#YV`l|m6=ML9l`zRDADp57)huZDx3%PaeQ@DxpGW@x6v+Xxo8(j^}WoH6; zOXZzi2TwN0`8DLuOf54*)i^apUKY40U=6#PS3qTU%`{TK)VPL9<+~7vv_i+{m!P^2Zl~pT+97JjHHh`BB<4DfqjjtCVnqHl2Gh! z!%neJWM7)9YAVSw`Fm;8pltngVjlXFdOKpYCfm;NTK2g5usq28lvtpDl{Ub%&T@=S zVdGUb6iv`+_S`K=XeA}Mjp40)Asv&YF;8U-=3aZ3Bi)h5YFhadQdil87Otwxd=qJ8 zACqkVn#uv=kloqyJ=ZmE>J-P1u&d~N@0Z3c-f&2z08as^nb8>BU zR~S)jKcv3R#D{FKJy7HZ6xucgY;qRb>mVP{BgCy;PJJ6iDpC^Gn95M?x9xKDr>*j? zlGoY4p>Jegnf=yE%r?%Dr8JET?#!GtMMX^`}alP zBPcV2xE0ilrLwi=&-MjOYuEEUi_?d@>PpS+L7I_d^BK}dQJe80yaPViJ}Nlx)`XKF zrOlCw@YpHO|;p_5Tlj9!*`W!&e)6?O}F$? z%Qw>l_K;(5@E=GAg0hbc!nJLey-@bj-az}BdoY=Z#FXUB3Tk1h<7(wd_N}jOh!_DU2T9YiOWM!a}q5?yM$}*&5iVAsyw)mPh%$^7jfoS&vmQiMCDX2u&U0 z44Nv5wv09=D}JYwsXNpO)my4!=ojo#+P!AI*qiZMSXW7O5rx3zx_0Y?Ha0 zSY@Jni<1hPk99mI98D+bYoql87Z4b`fH%o2GmF%*rj>hI$$!FXSUSqI`VK*w+!1h|ALr^2j-7qSVVQa5g*Qz?1p9&RPlj1bVIf|RD8RPRnTfGicYurqYa1& z$_{}Bq?hVHf~;no|MOCT~d1MKl5(3C8OZ7*+A~4ew?$a>yTXMTor&) z&yh}8HnEJq>|)Tbj7)x$oNGLzXd5!p8S1)=&oieHG&z!2*^5x0JhwAg9mgCD{6Gxl zGdMr4v%M<+gzLh+V$N91=pyAc+hd}ToKL%DGZd4Y>AcmkD7cAxRsICon7p%&-|$M< zY~?wo$aqlSRk_pB-K4 z)R-8a)qxvKc4Y3$<}0@&Iy?tm%Rh3xLdSZ|!$uM=Q~R8n#CGd9-b+0#<2u`tYUTXh z*4Et3-N4ZVb=w1w$m}fUs6CHt#~1UX0tN(LV+N386`Qyl21KLr+iyrv>-qP)aoHLB zfV>M9xho^$wdB01uT6u+;61#etwU_RkZ0H#=4X42fEB8hO^J@ z_i8`N>tbv2=NWFBA7SII47)rt5P40s#^zh=W%puJk!R{V+}5m8$70%-9?N|q_jsM8 zF7lSFVbpuYR=`L)?0=4NCI;;Cz`s~Xpi9}>PzmY_Io`W3Tr_wQ*KkcP@XYZujjr}pHN}=0APnCu4b4`601$L4Y4LLmqX_14`mw| zK4eHp8}2N!l!&*CNbTkN9c{-{L3%S)Wbt?!vmHrCTFJfe8$=Ly&s@u1#$vdYzN*+D z9WDEnUdvYvT7;M-+1P0Or0ab|R$dCTT3dmR&U~J(w(+JU?1jmPTZRqeq`@?+LU=y@zzuo z=PZPzP#TBe>}_i`vaYoUlZ7^6ULpa``($#6LGjHvRN2TVF?I3kpjyRzSlP@{$ddkX z$lj1cs%=@jt&5DGl#3M@lc?Z)kI-`sXXVd~skRub70+qAYL{Ea64TMq*2nZ5r6LGn z4d@NzjQu>3rjRzkGv>=$rY6xoq*KCHCO?15m`%I zCEA-aoB_Z-o>nbj-Bcg+78*mQyGtBS!WXZAH;@zd$5scb$i>|a^%T zjFWr9Kh3l$PZFD3*2~Zs2Ab$V3Hwdi5>?@!@e!Pyy?{#cRRx_aOLjdr$>@emYQQey zGb6G6ifpE>_;Gr{>7uO^8kTF7To3nJP!w71d@{l49gV zXNSCIXh+D*hRe<=&Ze(W&U9XIY-F0-#&gSMM~$_m4TvJ;FT_#hLgFXYPW5NDk8{_q zlX?B!1BvxSU&T=CQ`=Rh(cYG}vG!(~)7VVwLi~*HVB0g>aJr52u=)Yp+j!53`&6`b z4QNX356PfoHF1iG+8Eb%c~i$>jTf6DpG9m^sB}8jVV4j0AxOdxPH-q6+I^6;0&x;DGLn|d=Ih~IVYH5&O<#@z}Txk}NI-k|W} z%$6)75bx^qo=r9HMWa*`xo6wXE3-@`@~7F?iGyryRWXmzmn{RKiaFpMOU+je)(+z( zbR%g~bWUPc!dQACryt8jiLkUdwV#VaNtck}*DKA}T}HdkylhX+9r(C$LtC$v~+- zB6IvuwmsJcyTpyKZ^s&1Uh^GP2CNA(-ZVC7ka4_X4Yn_>k0L^rfdrus5h;?bT5f12 z$HMmHL}}WQuM4i_ou@A4H*@_Ve~ElS9Qd<(GE|SoDaXsZD@JfX@dGsh!G*2~n%mSR zR{~nB)f*-%>P2i(U2z_z9`P! zW{Irx_HbsK)NHKNFxDAmS&S|x!=&%ofx2C;O4)6-Pi(#Dy6AKKlKx-5$sl~I zbg!*m@L~E7RTHvk(|ctT<6!kqezk~A=tiy*{UNPMy-r*oO9VO%@|b;@v+?H2QU$Q_ zN*%`Hb(jFM2;YL#!oDcSVO~gE(-^Xgd5UwDG|V3C@>fjL4ly6lSab^{b(LmZWxB}? z4erM6GAhya8FrZQjhW{BuU5t~jB_Y95`*YyvL^9;?=p#xd2Cj+A}D7@@GN>vj){60 zG{7||{F?by{vv9bDKl@9yb-a;HcE4n>Tj#99byV_&NMYMKk~IB_p^~7F>_{#Qj zp$tv5cb=v{5OM4(X@Bfu?q=hlu)alaXlJBv{vc#;#1r$nppt-q^!}DCMK{R87f4`^uuF$?3DC_cFbuDT-dE6SCbQR|8k%JoBCjW6o4kQ)~3b@#7JqP;&*Zf?Q2

+{o>#J0TqvI+1sq7~iVuFOA29-YnR_+;pdE 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

IpqaXpDT1{K_AH>wW-$MU5d`b0@@bo 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

%IJzTuDMP3AwL42oh~bKiXPqWa`+!&AU|aNk{= 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

x{+?NURCVeO)gUP`etX$su1syS)EsPOwTziW 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

D(4rfaHEpa`2V>_(S=H6;&ON^_<-1> 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