From 2339b5f35d9927f5ca97b6b7e63fd50085c81f66 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Sun, 2 Nov 2025 13:30:09 +0000 Subject: [PATCH 01/16] feat: add zones friendly name --- frigate/config/camera/zone.py | 3 + ...eraNameLabel.tsx => FriendlyNameLabel.tsx} | 22 +++++- .../components/filter/CameraGroupSelector.tsx | 2 +- .../components/filter/CamerasFilterButton.tsx | 2 +- web/src/components/filter/FilterSwitch.tsx | 16 +++- .../components/filter/ReviewFilterGroup.tsx | 3 +- web/src/components/input/InputWithTags.tsx | 11 ++- web/src/components/menu/LiveContextMenu.tsx | 2 +- .../components/overlay/CreateRoleDialog.tsx | 2 +- .../overlay/EditRoleCamerasDialog.tsx | 2 +- .../components/overlay/MobileCameraDrawer.tsx | 2 +- .../components/overlay/ObjectTrackOverlay.tsx | 20 ++++- .../components/overlay/detail/ObjectPath.tsx | 31 ++++++-- .../overlay/detail/SearchDetailDialog.tsx | 2 +- .../overlay/dialog/SearchFilterDialog.tsx | 3 +- web/src/components/settings/PolygonItem.tsx | 6 +- web/src/components/settings/ZoneEditPane.tsx | 75 ++++++++++++------- web/src/hooks/use-zone-friendly-name.ts | 41 ++++++++++ web/src/pages/Settings.tsx | 4 +- web/src/types/canvas.ts | 2 + web/src/types/frigateConfig.ts | 1 + web/src/types/timeline.ts | 1 + web/src/views/recording/RecordingView.tsx | 2 +- web/src/views/settings/AuthenticationView.tsx | 2 +- .../views/settings/CameraManagementView.tsx | 2 +- web/src/views/settings/CameraSettingsView.tsx | 48 +++++------- .../settings/FrigatePlusSettingsView.tsx | 2 +- web/src/views/settings/MasksAndZonesView.tsx | 1 + .../settings/NotificationsSettingsView.tsx | 4 +- web/src/views/system/CameraMetrics.tsx | 2 +- 30 files changed, 227 insertions(+), 89 deletions(-) rename web/src/components/camera/{CameraNameLabel.tsx => FriendlyNameLabel.tsx} (53%) create mode 100644 web/src/hooks/use-zone-friendly-name.ts diff --git a/frigate/config/camera/zone.py b/frigate/config/camera/zone.py index 3e69240d51..530ba1cf91 100644 --- a/frigate/config/camera/zone.py +++ b/frigate/config/camera/zone.py @@ -13,6 +13,9 @@ logger = logging.getLogger(__name__) class ZoneConfig(BaseModel): + friendly_name: Optional[str] = Field( + None, title="Zone friendly name used in the Frigate UI." + ) filters: dict[str, FilterConfig] = Field( default_factory=dict, title="Zone filters." ) diff --git a/web/src/components/camera/CameraNameLabel.tsx b/web/src/components/camera/FriendlyNameLabel.tsx similarity index 53% rename from web/src/components/camera/CameraNameLabel.tsx rename to web/src/components/camera/FriendlyNameLabel.tsx index ab022f5c87..ca09788529 100644 --- a/web/src/components/camera/CameraNameLabel.tsx +++ b/web/src/components/camera/FriendlyNameLabel.tsx @@ -2,12 +2,19 @@ import * as React from "react"; import * as LabelPrimitive from "@radix-ui/react-label"; import { useCameraFriendlyName } from "@/hooks/use-camera-friendly-name"; import { CameraConfig } from "@/types/frigateConfig"; +import { useZoneFriendlyName } from "@/hooks/use-zone-friendly-name"; interface CameraNameLabelProps extends React.ComponentPropsWithoutRef { camera?: string | CameraConfig; } +interface ZoneNameLabelProps + extends React.ComponentPropsWithoutRef { + zone: string; + camera?: string; +} + const CameraNameLabel = React.forwardRef< React.ElementRef, CameraNameLabelProps @@ -21,4 +28,17 @@ const CameraNameLabel = React.forwardRef< }); CameraNameLabel.displayName = LabelPrimitive.Root.displayName; -export { CameraNameLabel }; +const ZoneNameLabel = React.forwardRef< + React.ElementRef, + ZoneNameLabelProps +>(({ className, zone, camera, ...props }, ref) => { + const displayName = useZoneFriendlyName(zone, camera); + return ( + + {displayName} + + ); +}); +ZoneNameLabel.displayName = LabelPrimitive.Root.displayName; + +export { CameraNameLabel, ZoneNameLabel }; diff --git a/web/src/components/filter/CameraGroupSelector.tsx b/web/src/components/filter/CameraGroupSelector.tsx index cd0b118c99..a700981b6d 100644 --- a/web/src/components/filter/CameraGroupSelector.tsx +++ b/web/src/components/filter/CameraGroupSelector.tsx @@ -76,7 +76,7 @@ import { CameraStreamingDialog } from "../settings/CameraStreamingDialog"; import { DialogTrigger } from "@radix-ui/react-dialog"; import { useStreamingSettings } from "@/context/streaming-settings-provider"; import { Trans, useTranslation } from "react-i18next"; -import { CameraNameLabel } from "../camera/CameraNameLabel"; +import { CameraNameLabel } from "../camera/FriendlyNameLabel"; import { useAllowedCameras } from "@/hooks/use-allowed-cameras"; import { useIsCustomRole } from "@/hooks/use-is-custom-role"; diff --git a/web/src/components/filter/CamerasFilterButton.tsx b/web/src/components/filter/CamerasFilterButton.tsx index 93b8a8651a..baeccf06f5 100644 --- a/web/src/components/filter/CamerasFilterButton.tsx +++ b/web/src/components/filter/CamerasFilterButton.tsx @@ -190,7 +190,7 @@ export function CamerasFilterContent({ key={item} isChecked={currentCameras?.includes(item) ?? false} label={item} - isCameraName={true} + type={"camera"} disabled={ mainCamera !== undefined && currentCameras !== undefined && diff --git a/web/src/components/filter/FilterSwitch.tsx b/web/src/components/filter/FilterSwitch.tsx index fa8709d967..d282b9e124 100644 --- a/web/src/components/filter/FilterSwitch.tsx +++ b/web/src/components/filter/FilterSwitch.tsx @@ -1,29 +1,39 @@ import { Switch } from "../ui/switch"; import { Label } from "../ui/label"; -import { CameraNameLabel } from "../camera/CameraNameLabel"; +import { CameraNameLabel, ZoneNameLabel } from "../camera/FriendlyNameLabel"; type FilterSwitchProps = { label: string; disabled?: boolean; isChecked: boolean; isCameraName?: boolean; + type?: string; + extraValue?: string; onCheckedChange: (checked: boolean) => void; }; export default function FilterSwitch({ label, disabled = false, isChecked, - isCameraName = false, + type = "", + extraValue = "", onCheckedChange, }: FilterSwitchProps) { return (
- {isCameraName ? ( + {type === "camera" ? ( + ) : type === "zone" ? ( + ) : (
masksAndZones.form.polygonDrawing.delete.desc diff --git a/web/src/components/settings/ZoneEditPane.tsx b/web/src/components/settings/ZoneEditPane.tsx index 8a1e36a0e5..cfbf747ce0 100644 --- a/web/src/components/settings/ZoneEditPane.tsx +++ b/web/src/components/settings/ZoneEditPane.tsx @@ -34,6 +34,7 @@ import { Link } from "react-router-dom"; import { LuExternalLink } from "react-icons/lu"; import { useDocDomain } from "@/hooks/use-doc-domain"; import { getTranslatedLabel } from "@/utils/i18n"; +import NameAndIdFields from "../input/NameAndIdFields"; type ZoneEditPaneProps = { polygons?: Polygon[]; @@ -146,15 +147,38 @@ export default function ZoneEditPane({ "masksAndZones.form.zoneName.error.mustNotContainPeriod", ), }, - ) - .refine((value: string) => /^[a-zA-Z0-9_-]+$/.test(value), { - message: t("masksAndZones.form.zoneName.error.hasIllegalCharacter"), - }) - .refine((value: string) => /[a-zA-Z]/.test(value), { + ), + friendly_name: z + .string() + .min(2, { message: t( - "masksAndZones.form.zoneName.error.mustHaveAtLeastOneLetter", + "masksAndZones.form.zoneName.error.mustBeAtLeastTwoCharacters", ), - }), + }) + .transform((val: string) => val.trim().replace(/\s+/g, "_")) + .refine( + (value: string) => { + return !cameras.map((cam) => cam.name).includes(value); + }, + { + message: t( + "masksAndZones.form.zoneName.error.mustNotBeSameWithCamera", + ), + }, + ) + .refine( + (value: string) => { + const otherPolygonNames = + polygons + ?.filter((_, index) => index !== activePolygonIndex) + .map((polygon) => polygon.name) || []; + + return !otherPolygonNames.includes(value); + }, + { + message: t("masksAndZones.form.zoneName.error.alreadyExists"), + }, + ), inertia: z.coerce .number() .min(1, { @@ -247,6 +271,7 @@ export default function ZoneEditPane({ mode: "onBlur", defaultValues: { name: polygon?.name ?? "", + friendly_name: polygon?.friendly_name ?? "", inertia: polygon?.camera && polygon?.name && @@ -286,6 +311,7 @@ export default function ZoneEditPane({ async ( { name: zoneName, + friendly_name, inertia, loitering_time, objects: form_objects, @@ -415,9 +441,14 @@ export default function ZoneEditPane({ } } + let friendlyNameQuery = ""; + if (friendly_name) { + friendlyNameQuery = `&cameras.${polygon?.camera}.zones.${zoneName}.friendly_name=${encodeURIComponent(friendly_name)}`; + } + axios .put( - `config/set?cameras.${polygon?.camera}.zones.${zoneName}.coordinates=${coordinates}${inertiaQuery}${loiteringTimeQuery}${speedThresholdQuery}${distancesQuery}${objectQueries}${alertQueries}${detectionQueries}`, + `config/set?cameras.${polygon?.camera}.zones.${zoneName}.coordinates=${coordinates}${inertiaQuery}${loiteringTimeQuery}${speedThresholdQuery}${distancesQuery}${objectQueries}${friendlyNameQuery}${alertQueries}${detectionQueries}`, { requires_restart: 0, update_topic: `config/cameras/${polygon.camera}/zones`, @@ -427,7 +458,7 @@ export default function ZoneEditPane({ if (res.status === 200) { toast.success( t("masksAndZones.zones.toast.success", { - zoneName, + zoneName: friendly_name || zoneName, }), { position: "top-center", @@ -541,26 +572,16 @@ export default function ZoneEditPane({
- ( - - {t("masksAndZones.zones.name.title")} - - - - - {t("masksAndZones.zones.name.tips")} - - - - )} + nameField="friendly_name" + idField="name" + nameLabel={t("masksAndZones.zones.name.title")} + nameDescription={t("masksAndZones.zones.name.tips")} + placeholderName={t("masksAndZones.zones.name.inputPlaceHolder")} /> + ("config"); + + const name = useMemo( + () => resolveZoneName(config, zoneId, cameraId), + [config, cameraId, zoneId], + ); + + return name; +} diff --git a/web/src/pages/Settings.tsx b/web/src/pages/Settings.tsx index 844329fc77..ba81730d59 100644 --- a/web/src/pages/Settings.tsx +++ b/web/src/pages/Settings.tsx @@ -42,7 +42,7 @@ import { useInitialCameraState } from "@/api/ws"; import { useIsAdmin } from "@/hooks/use-is-admin"; import { useTranslation } from "react-i18next"; import TriggerView from "@/views/settings/TriggerView"; -import { CameraNameLabel } from "@/components/camera/CameraNameLabel"; +import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; import { Sidebar, SidebarContent, @@ -642,7 +642,7 @@ function CameraSelectButton({ key={item.name} isChecked={item.name === selectedCamera} label={item.name} - isCameraName={true} + type={"camera"} onCheckedChange={(isChecked) => { if (isChecked && (isEnabled || isCameraSettingsPage)) { setSelectedCamera(item.name); diff --git a/web/src/types/canvas.ts b/web/src/types/canvas.ts index 9c1748ce09..a702388344 100644 --- a/web/src/types/canvas.ts +++ b/web/src/types/canvas.ts @@ -11,10 +11,12 @@ export type Polygon = { distances: number[]; isFinished: boolean; color: number[]; + friendly_name?: string; }; export type ZoneFormValuesType = { name: string; + friendly_name: string; inertia: number; loitering_time: number; isFinished: boolean; diff --git a/web/src/types/frigateConfig.ts b/web/src/types/frigateConfig.ts index ffe4cc14dc..71aacb13c9 100644 --- a/web/src/types/frigateConfig.ts +++ b/web/src/types/frigateConfig.ts @@ -280,6 +280,7 @@ export interface CameraConfig { speed_threshold: number; objects: string[]; color: number[]; + friendly_name?: string; }; }; } diff --git a/web/src/types/timeline.ts b/web/src/types/timeline.ts index 4551937d99..c8e5f7543a 100644 --- a/web/src/types/timeline.ts +++ b/web/src/types/timeline.ts @@ -22,6 +22,7 @@ export type TrackingDetailsSequence = { attribute: string; attribute_box?: [number, number, number, number]; zones: string[]; + zones_friendly_names?: string[]; }; class_type: LifecycleClassType; source_id: string; diff --git a/web/src/views/recording/RecordingView.tsx b/web/src/views/recording/RecordingView.tsx index 00e46411ed..cbd5ad41c4 100644 --- a/web/src/views/recording/RecordingView.tsx +++ b/web/src/views/recording/RecordingView.tsx @@ -63,7 +63,7 @@ import { TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; -import { CameraNameLabel } from "@/components/camera/CameraNameLabel"; +import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; import { useAllowedCameras } from "@/hooks/use-allowed-cameras"; import { DetailStreamProvider } from "@/context/detail-stream-context"; import { GenAISummaryDialog } from "@/components/overlay/chip/GenAISummaryChip"; diff --git a/web/src/views/settings/AuthenticationView.tsx b/web/src/views/settings/AuthenticationView.tsx index db5f225559..5c11d89143 100644 --- a/web/src/views/settings/AuthenticationView.tsx +++ b/web/src/views/settings/AuthenticationView.tsx @@ -36,7 +36,7 @@ import EditRoleCamerasDialog from "@/components/overlay/EditRoleCamerasDialog"; import { useTranslation } from "react-i18next"; import DeleteRoleDialog from "@/components/overlay/DeleteRoleDialog"; import { Separator } from "@/components/ui/separator"; -import { CameraNameLabel } from "@/components/camera/CameraNameLabel"; +import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; type AuthenticationViewProps = { section?: "users" | "roles"; diff --git a/web/src/views/settings/CameraManagementView.tsx b/web/src/views/settings/CameraManagementView.tsx index 4db384e0ad..52d5879e14 100644 --- a/web/src/views/settings/CameraManagementView.tsx +++ b/web/src/views/settings/CameraManagementView.tsx @@ -18,7 +18,7 @@ import { } from "@/components/ui/select"; import { IoMdArrowRoundBack } from "react-icons/io"; import { isDesktop } from "react-device-detect"; -import { CameraNameLabel } from "@/components/camera/CameraNameLabel"; +import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; import { Switch } from "@/components/ui/switch"; import { Trans } from "react-i18next"; import { Separator } from "@/components/ui/separator"; diff --git a/web/src/views/settings/CameraSettingsView.tsx b/web/src/views/settings/CameraSettingsView.tsx index f42ec84fe4..878ea9e98e 100644 --- a/web/src/views/settings/CameraSettingsView.tsx +++ b/web/src/views/settings/CameraSettingsView.tsx @@ -23,7 +23,6 @@ import { StatusBarMessagesContext } from "@/context/statusbar-provider"; import axios from "axios"; import { Link } from "react-router-dom"; import { LuExternalLink } from "react-icons/lu"; -import { capitalizeFirstLetter } from "@/utils/stringUtil"; import { MdCircle } from "react-icons/md"; import { cn } from "@/lib/utils"; import { Trans, useTranslation } from "react-i18next"; @@ -42,6 +41,7 @@ import CameraWizardDialog from "@/components/settings/CameraWizardDialog"; import { IoMdArrowRoundBack } from "react-icons/io"; import { isDesktop } from "react-device-detect"; import { useCameraFriendlyName } from "@/hooks/use-camera-friendly-name"; +import { resolveZoneName } from "@/hooks/use-zone-friendly-name"; type CameraSettingsViewProps = { selectedCamera: string; @@ -86,16 +86,23 @@ export default function CameraSettingsView({ // zones and labels + const getZoneName = useCallback( + (zoneId: string, cameraId?: string) => + resolveZoneName(config, zoneId, cameraId), + [config], + ); + const zones = useMemo(() => { if (cameraConfig) { return Object.entries(cameraConfig.zones).map(([name, zoneData]) => ({ camera: cameraConfig.name, name, + friendly_name: getZoneName(name, cameraConfig.name), objects: zoneData.objects, color: zoneData.color, })); } - }, [cameraConfig]); + }, [cameraConfig, getZoneName]); const alertsLabels = useMemo(() => { return cameraConfig?.review.alerts.labels @@ -526,7 +533,7 @@ export default function CameraSettingsView({ /> - {zone.name.replaceAll("_", " ")} + {zone.friendly_name} )} @@ -548,14 +555,9 @@ export default function CameraSettingsView({ "cameraReview.reviewClassification.zoneObjectAlertsTips", { alertsLabels, - zone: watchedAlertsZones - .map((zone) => - capitalizeFirstLetter(zone).replaceAll( - "_", - " ", - ), - ) - .join(", "), + zone: watchedAlertsZones.map((zone) => + getZoneName(zone), + ), cameraName: selectCameraName, }, ) @@ -628,7 +630,7 @@ export default function CameraSettingsView({ /> - {zone.name.replaceAll("_", " ")} + {zone.friendly_name} )} @@ -667,14 +669,9 @@ export default function CameraSettingsView({ i18nKey="cameraReview.reviewClassification.zoneObjectDetectionsTips.text" values={{ detectionsLabels, - zone: watchedDetectionsZones - .map((zone) => - capitalizeFirstLetter(zone).replaceAll( - "_", - " ", - ), - ) - .join(", "), + zone: watchedDetectionsZones.map((zone) => + getZoneName(zone), + ), cameraName: selectCameraName, }} ns="views/settings" @@ -684,14 +681,9 @@ export default function CameraSettingsView({ i18nKey="cameraReview.reviewClassification.zoneObjectDetectionsTips.notSelectDetections" values={{ detectionsLabels, - zone: watchedDetectionsZones - .map((zone) => - capitalizeFirstLetter(zone).replaceAll( - "_", - " ", - ), - ) - .join(", "), + zone: watchedDetectionsZones.map((zone) => + getZoneName(zone), + ), cameraName: selectCameraName, }} ns="views/settings" diff --git a/web/src/views/settings/FrigatePlusSettingsView.tsx b/web/src/views/settings/FrigatePlusSettingsView.tsx index 20e2480709..52af94354d 100644 --- a/web/src/views/settings/FrigatePlusSettingsView.tsx +++ b/web/src/views/settings/FrigatePlusSettingsView.tsx @@ -23,7 +23,7 @@ import { SelectTrigger, } from "@/components/ui/select"; import { useDocDomain } from "@/hooks/use-doc-domain"; -import { CameraNameLabel } from "@/components/camera/CameraNameLabel"; +import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; type FrigatePlusModel = { id: string; diff --git a/web/src/views/settings/MasksAndZonesView.tsx b/web/src/views/settings/MasksAndZonesView.tsx index 956ce3f95e..27c542e875 100644 --- a/web/src/views/settings/MasksAndZonesView.tsx +++ b/web/src/views/settings/MasksAndZonesView.tsx @@ -229,6 +229,7 @@ export default function MasksAndZonesView({ typeIndex: index, camera: cameraConfig.name, name, + friendly_name: zoneData.friendly_name, objects: zoneData.objects, points: interpolatePoints( parseCoordinates(zoneData.coordinates), diff --git a/web/src/views/settings/NotificationsSettingsView.tsx b/web/src/views/settings/NotificationsSettingsView.tsx index b3a0494180..6280ca6a88 100644 --- a/web/src/views/settings/NotificationsSettingsView.tsx +++ b/web/src/views/settings/NotificationsSettingsView.tsx @@ -45,7 +45,7 @@ import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Trans, useTranslation } from "react-i18next"; import { useDateLocale } from "@/hooks/use-date-locale"; import { useDocDomain } from "@/hooks/use-doc-domain"; -import { CameraNameLabel } from "@/components/camera/CameraNameLabel"; +import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; import { useIsAdmin } from "@/hooks/use-is-admin"; import { cn } from "@/lib/utils"; @@ -476,7 +476,7 @@ export default function NotificationView({ Date: Tue, 4 Nov 2025 12:54:36 +0000 Subject: [PATCH 02/16] fix: fix the issue where the input field was empty when there was no friendly_name --- web/src/components/settings/PolygonCanvas.tsx | 2 +- web/src/components/settings/ZoneEditPane.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/components/settings/PolygonCanvas.tsx b/web/src/components/settings/PolygonCanvas.tsx index 9adc2f09ec..3ba059d78c 100644 --- a/web/src/components/settings/PolygonCanvas.tsx +++ b/web/src/components/settings/PolygonCanvas.tsx @@ -270,7 +270,7 @@ export function PolygonCanvas({ const activePolygon = updatedPolygons[activePolygonIndex]; // add default points order for already completed polygons - if (!activePolygon.pointsOrder && activePolygon.isFinished) { + if (!activePolygon?.pointsOrder && activePolygon?.isFinished) { updatedPolygons[activePolygonIndex] = { ...activePolygon, pointsOrder: activePolygon.points.map((_, index) => index), diff --git a/web/src/components/settings/ZoneEditPane.tsx b/web/src/components/settings/ZoneEditPane.tsx index cfbf747ce0..ec12eaeec2 100644 --- a/web/src/components/settings/ZoneEditPane.tsx +++ b/web/src/components/settings/ZoneEditPane.tsx @@ -271,7 +271,7 @@ export default function ZoneEditPane({ mode: "onBlur", defaultValues: { name: polygon?.name ?? "", - friendly_name: polygon?.friendly_name ?? "", + friendly_name: polygon?.friendly_name ?? polygon?.name, inertia: polygon?.camera && polygon?.name && From 136836fe86372ac3edd7462c90f27583895ef922 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Tue, 4 Nov 2025 12:56:53 +0000 Subject: [PATCH 03/16] chore: fix the issue where the friendly name would replace spaces with underscores --- web/src/components/settings/ZoneEditPane.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/src/components/settings/ZoneEditPane.tsx b/web/src/components/settings/ZoneEditPane.tsx index ec12eaeec2..1de19d139c 100644 --- a/web/src/components/settings/ZoneEditPane.tsx +++ b/web/src/components/settings/ZoneEditPane.tsx @@ -155,7 +155,6 @@ export default function ZoneEditPane({ "masksAndZones.form.zoneName.error.mustBeAtLeastTwoCharacters", ), }) - .transform((val: string) => val.trim().replace(/\s+/g, "_")) .refine( (value: string) => { return !cameras.map((cam) => cam.name).includes(value); From b68ddc39c45719f2f1eb67b51bb7a035b0de1f6c Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Tue, 4 Nov 2025 13:38:17 +0000 Subject: [PATCH 04/16] docs: update zones docs --- docs/docs/configuration/zones.md | 21 +++++++++++++++++++-- docs/static/img/zones-review.png | Bin 0 -> 110894 bytes 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 docs/static/img/zones-review.png diff --git a/docs/docs/configuration/zones.md b/docs/docs/configuration/zones.md index 025384a8bb..e0d9790908 100644 --- a/docs/docs/configuration/zones.md +++ b/docs/docs/configuration/zones.md @@ -16,7 +16,15 @@ To create a zone, follow [the steps for a "Motion mask"](masks.md), but use the ### Restricting alerts and detections to specific zones -Often you will only want alerts to be created when an object enters areas of interest. This is done using zones along with setting required_zones. Let's say you only want to have an alert created when an object enters your entire_yard zone, the config would be: +You can flexibly define alert or detection zones, allowing you to focus on what matters most. + +Often you will only want alerts to be created when an object enters areas of interest. This is done using zones along with setting review classification. + +For example, you only want to have an alert created when an object enters your `Entire Yard` zone. Simply go to the `Camera → Review → Alerts` settings, check the `Entire Yard` zone you just created, and save the changes. + +![Review Classification](/img/zones-review.png) + +the config would be: ```yaml cameras: @@ -27,10 +35,13 @@ cameras: - entire_yard zones: entire_yard: + friendly_name: Entire yard🏡 # You can use characters from any language, including emojis. coordinates: ... ``` -You may also want to filter detections to only be created when an object enters a secondary area of interest. This is done using zones along with setting required_zones. Let's say you want alerts when an object enters the inner area of the yard but detections when an object enters the edge of the yard, the config would be +You may also want to filter detections to only be created when an object enters a secondary area of interest. This is done using zones along with setting required_zones. Let's say you want alerts when an object enters the inner area of the yard but detections when an object enters the edge of the yard. Simply go to the `Detections` option on the previous page, check `Limit detections to specific zones`, and then select the desired zones. + +the config would be ```yaml cameras: @@ -44,8 +55,10 @@ cameras: - edge_yard zones: edge_yard: + friendly_name: Edge yard🚗 # You can use characters from any language, including emojis. coordinates: ... inner_yard: + friendly_name: Inner yard🪵 # You can use characters from any language, including emojis. coordinates: ... ``` @@ -59,6 +72,7 @@ cameras: - entire_yard zones: entire_yard: + friendly_name: Entire yard🏡 coordinates: ... ``` @@ -82,6 +96,8 @@ cameras: Only car objects can trigger the `front_yard_street` zone and only person can trigger the `entire_yard`. Objects will be tracked for any `person` that enter anywhere in the yard, and for cars only if they enter the street. +Of course, you can also manually select the desired tracked Object when editing zones on the `Masks / Zones` page. + ### Zone Loitering Sometimes objects are expected to be passing through a zone, but an object loitering in an area is unexpected. Zones can be configured to have a minimum loitering time after which the object will be considered in the zone. @@ -89,6 +105,7 @@ Sometimes objects are expected to be passing through a zone, but an object loite :::note When using loitering zones, a review item will behave in the following way: + - When a person is in a loitering zone, the review item will remain active until the person leaves the loitering zone, regardless of if they are stationary. - When any other object is in a loitering zone, the review item will remain active until the loitering time is met. Then if the object is stationary the review item will end. diff --git a/docs/static/img/zones-review.png b/docs/static/img/zones-review.png new file mode 100644 index 0000000000000000000000000000000000000000..6df4f03d9a28b0737731ff1f00ddbe9dce58bed7 GIT binary patch literal 110894 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ɽihAZp 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 z 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 literal 0 HcmV?d00001 From 3af47d63eaa78de972356aca356e5578bf0e93c4 Mon Sep 17 00:00:00 2001 From: GuoQing Liu <842607283@qq.com> Date: Tue, 4 Nov 2025 22:54:12 +0800 Subject: [PATCH 05/16] Update web/src/components/settings/ZoneEditPane.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> --- web/src/components/settings/ZoneEditPane.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/settings/ZoneEditPane.tsx b/web/src/components/settings/ZoneEditPane.tsx index 1de19d139c..3a0e23d1fe 100644 --- a/web/src/components/settings/ZoneEditPane.tsx +++ b/web/src/components/settings/ZoneEditPane.tsx @@ -270,7 +270,7 @@ export default function ZoneEditPane({ mode: "onBlur", defaultValues: { name: polygon?.name ?? "", - friendly_name: polygon?.friendly_name ?? polygon?.name, + friendly_name: polygon?.friendly_name ?? polygon?.name ?? "", inertia: polygon?.camera && polygon?.name && From 303ebff4e3021f3b82bf35f29267086af18c2bef Mon Sep 17 00:00:00 2001 From: GuoQing Liu <842607283@qq.com> Date: Tue, 4 Nov 2025 23:01:56 +0800 Subject: [PATCH 06/16] Add friendly_name option for zone configuration Added optional friendly name for zones in configuration. --- docs/docs/configuration/reference.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/configuration/reference.md b/docs/docs/configuration/reference.md index b81ceef899..23e18c2c97 100644 --- a/docs/docs/configuration/reference.md +++ b/docs/docs/configuration/reference.md @@ -810,6 +810,8 @@ cameras: # NOTE: This must be different than any camera names, but can match with another zone on another # camera. front_steps: + # Optional: A friendly name or descriptive text for the zones + friendly_name: "" # Required: List of x,y coordinates to define the polygon of the zone. # NOTE: Presence in a zone is evaluated only based on the bottom center of the objects bounding box. coordinates: 0.033,0.306,0.324,0.138,0.439,0.185,0.042,0.428 From 54f228fb6f81e0c2ac7961266addc4744cef36e8 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Wed, 5 Nov 2025 13:56:51 +0000 Subject: [PATCH 07/16] fix: fix the logical error in the null/empty check for the polygons parameter --- web/src/components/settings/PolygonCanvas.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/components/settings/PolygonCanvas.tsx b/web/src/components/settings/PolygonCanvas.tsx index 3ba059d78c..e2809d332f 100644 --- a/web/src/components/settings/PolygonCanvas.tsx +++ b/web/src/components/settings/PolygonCanvas.tsx @@ -262,7 +262,7 @@ export function PolygonCanvas({ }; useEffect(() => { - if (activePolygonIndex === undefined || !polygons) { + if (activePolygonIndex === undefined || !polygons?.length) { return; } @@ -270,7 +270,7 @@ export function PolygonCanvas({ const activePolygon = updatedPolygons[activePolygonIndex]; // add default points order for already completed polygons - if (!activePolygon?.pointsOrder && activePolygon?.isFinished) { + if (!activePolygon.pointsOrder && activePolygon.isFinished) { updatedPolygons[activePolygonIndex] = { ...activePolygon, pointsOrder: activePolygon.points.map((_, index) => index), From ca901f492fa5449d7409160b802de0bac691b684 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Wed, 5 Nov 2025 13:58:48 +0000 Subject: [PATCH 08/16] fix: remove the toast name for zones will use the friendly_name instead --- web/src/components/settings/PolygonItem.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/settings/PolygonItem.tsx b/web/src/components/settings/PolygonItem.tsx index dffd6a0a0d..8efcafad88 100644 --- a/web/src/components/settings/PolygonItem.tsx +++ b/web/src/components/settings/PolygonItem.tsx @@ -179,7 +179,7 @@ export default function PolygonItem({ if (res.status === 200) { toast.success( t("masksAndZones.form.polygonDrawing.delete.success", { - name: polygon?.name, + name: polygon?.friendly_name ?? polygon?.name, }), { position: "top-center", From b6bb895d791fb02f1a3efb32441674fbd78cb254 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Wed, 5 Nov 2025 14:00:24 +0000 Subject: [PATCH 09/16] docs: remove emoji tips --- docs/docs/configuration/zones.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/configuration/zones.md b/docs/docs/configuration/zones.md index e0d9790908..ffc6d3a651 100644 --- a/docs/docs/configuration/zones.md +++ b/docs/docs/configuration/zones.md @@ -35,7 +35,7 @@ cameras: - entire_yard zones: entire_yard: - friendly_name: Entire yard🏡 # You can use characters from any language, including emojis. + friendly_name: Entire yard # You can use characters from any language text coordinates: ... ``` @@ -55,10 +55,10 @@ cameras: - edge_yard zones: edge_yard: - friendly_name: Edge yard🚗 # You can use characters from any language, including emojis. + friendly_name: Edge yard # You can use characters from any language text coordinates: ... inner_yard: - friendly_name: Inner yard🪵 # You can use characters from any language, including emojis. + friendly_name: Inner yard # You can use characters from any language text coordinates: ... ``` From 5768be41c8d738128ea1c8b8fda4e9478dd7c32f Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Wed, 5 Nov 2025 14:13:45 +0000 Subject: [PATCH 10/16] revert: revert zones doc ui tips --- docs/docs/configuration/zones.md | 14 ++------------ docs/static/img/zones-review.png | Bin 110894 -> 0 bytes 2 files changed, 2 insertions(+), 12 deletions(-) delete mode 100644 docs/static/img/zones-review.png diff --git a/docs/docs/configuration/zones.md b/docs/docs/configuration/zones.md index ffc6d3a651..fb621d8ec9 100644 --- a/docs/docs/configuration/zones.md +++ b/docs/docs/configuration/zones.md @@ -16,15 +16,7 @@ To create a zone, follow [the steps for a "Motion mask"](masks.md), but use the ### Restricting alerts and detections to specific zones -You can flexibly define alert or detection zones, allowing you to focus on what matters most. - -Often you will only want alerts to be created when an object enters areas of interest. This is done using zones along with setting review classification. - -For example, you only want to have an alert created when an object enters your `Entire Yard` zone. Simply go to the `Camera → Review → Alerts` settings, check the `Entire Yard` zone you just created, and save the changes. - -![Review Classification](/img/zones-review.png) - -the config would be: +Often you will only want alerts to be created when an object enters areas of interest. This is done using zones along with setting required_zones. Let's say you only want to have an alert created when an object enters your entire_yard zone, the config would be: ```yaml cameras: @@ -39,9 +31,7 @@ cameras: coordinates: ... ``` -You may also want to filter detections to only be created when an object enters a secondary area of interest. This is done using zones along with setting required_zones. Let's say you want alerts when an object enters the inner area of the yard but detections when an object enters the edge of the yard. Simply go to the `Detections` option on the previous page, check `Limit detections to specific zones`, and then select the desired zones. - -the config would be +You may also want to filter detections to only be created when an object enters a secondary area of interest. This is done using zones along with setting required_zones. Let's say you want alerts when an object enters the inner area of the yard but detections when an object enters the edge of the yard, the config would be ```yaml cameras: diff --git a/docs/static/img/zones-review.png b/docs/static/img/zones-review.png deleted file mode 100644 index 6df4f03d9a28b0737731ff1f00ddbe9dce58bed7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110894 zcmd43bySq^_b#j$SSTSNAfc2DB`u9g4&@9(mx6RjcUg2ZbjZNK(9#_S-9t$$UBl2F z=i&SLe$Km&!*9K7oxjdM=o;pE?tSmQ?;Y2^ZUSB@$q?M4ymjf)B?38FN$90Z_;)W| zy3&3F5BLPnXG!SNCAv#;lFwl-mscme-@%ODW6xBe_q8L0J<`bB1PtR#la(;Dp>Mv2 zkVxy^f!u#leB+6_TbC(QRmo49_dJarGF6u56RWe_#?z|BopfBniTt4}#MpL1bNDR- zsqc5A%|5d^=v<0Tj6Lm-)R_B-sVb3P_>h~tFUVEIU)12INbOgMV~^JBu%0#}#YWzz z3*Iz0Sa=LWP|^7J|A!@%UmtAF#Sf*z0?Y%z%-Ba?m@X8B@Ch4RXRuyIT0R|U?vEs{ ztbqK!Z6vK79k&TscxHqlOS7U^2R>e;j7xY^$MXU_^ppfv*B~tSm@m*5@R&kMVERQ1LDS8_OAsl%Z6K~!F4wz?`v!fv}oSWTaJQLRGEHMBZNyI zU`i-1uri&jPZF=ejn?L8*VIIIiVj7j&V7OeV%E!x5%nyuvQi^J=EUo4ef{0>qipDKX)t)JonJ&Vvn!5tJALj#NrbKv2mW~W zz}FOS`j5inD}3UNB9GWPIQYdGrzhVc(6z;wLdU&i+nSz`U>%1VG4;jbPxf4d<`La1yiD-l0F4CwOSy?ZM+jS$#TnLOS!RB5g5QZI|ZH{t0R z;TX3oZA-Gwj!^LyrwXV+PgqEn4R)hFvF8&5f-iZYw%!)on}%tVE@{@%kh#F<{_KS8 z2L{4;H*fmOup21EFG?FKE$A{c1V|#gw7ivUdaMnVdmb;;yfjztxt(lOJ1&9Kaq%F!lzu>ch;#LYn3*B6 zWJJV(Aec4U(eG~Q{!6(qZv}xK7|q>IEBqxNxw(8I{1RMygf2&xl4o&T2urgt%VReSNH>vL$~-P0p= z_9JUG8B-spU(pz1^1%n_a;9%P2K}&d#be&b&Czm}d4+}QkK0%lRS&B-6KcH|lW&O1 zq|XLRb>FS{L*UuxgpF6qqI3gCj;6vIm>9Y1-aWr5_d%d$4DS7QbinDVUZ;A6OPE!~ zkYjbo!X(Yok<|XI@=&ju>qN5S5T+%X=R^PGw65+#Fk|3NeQ>2xm4=r@hL^0x$k&ly%1|EoTpke)oOYsn|W8oZ0Y)_x9h@q26{8Stt;r zt!MonV{wJ1rx!beT@#x8B`V}F(wie5TEEwGlPRAlfyjxJL`YgEx@AW2G$!p0ZLph2 zitjzBHpBoKzzhn2@lLb2!47xFY-B{}`a*7QgYuVYAjR@F-uB2-9xhE58{zb>#@W52 zW=}Csn2L>eF7$hEh{~0QqCSV!Am9_qKZ5_p{Ol#kWZNTv8y~pZM znPs=tnULc|tgjK$F(HU21UDHsGWo_)?tWy}8@1f?*3`hSXa3RI=n?THYO1 zd(GXSpQ+UTM4*>nrpJoV^w3J*tM{B~suR$<8%E%@wBaG>whn)mo0#-t05xE5Ygy=3 zVypqnY4Ayn6ij9#lgEQ(!zP`Sg2Zgx{oHCOE2Q1jb&pKG)V_4hpTts|=Jrh{56kfF zB%9sdR#ddiL!;`zClx1Ng*Emj@v_oE7NgfoC%-fk!MyYC(*NEI*)DxHduLFqyhNVL zauBw4L{cH{RTNvbXdnp5&uFMVgxQ__wU+f`P;XlSD>FSJWLLVq!qa+%`wGvE!nJHk=)|5B6TGPgQ#S zlyz3@rLmZiLw<}{16j%BAfRWj)L%IdQ|8lJ(w$h+yc)%<*l;=V!SgtG%*e@}RbrCt z-n|YowVm7@a@KNgdT>LvhF1(X{QFWoB2GCc89%@xNEUmmis)Nfx=$evXRA*$l5WznHH^~kme-4oE>(&!`Iwl#TU`u*AS<$U zl1+P%Z+d!vFE*N}OBM({b6W~azhW|LD54%(-j+Q*X>kSdVHxhrlYYhEsxRvm+E%lr zM8lUfJxI<%7mm=o9!_QHe-1Z-XnKr#M*7vm?)sxSP8Q0(Za`IiL(gib`#J<9k(^$1 z8XPBYw)X>yE_40#9lahQb5Eb58dZk5mu}Lqog|vRd3P6-y%GX=o58gsiil>t!_GK_ zw5;sTg3K}HW9ifl8#WFOFQ8U{k1HKu&oh5k;=_2^Lg<`{m1FI|ptoEH=??$I?k-kE z$gJJZN>$iK`oS+)B8@rf=*@*u)eYDz zs^-LW;^PDZx~I8Uw^1E$o8tTu^0GugqPDM=h+Jn{uhos2(Sc4d6k!X+<0L@npVPyB z`!W1OuTy#UwP0DW*!aSJcSXGr+EbT+<6c0~b7ksktVbZna?hPf2>Vp@mOfHF&mYVgcB-Znm3yZ6Gy4NAOS1Od zb3^>XwY&z^gV04O_g&QJ(oWM%I!zCp1RKYgacD^I#mDppdBDNQFgR5+93|HbDkJG29_7JX!CsS9Q|O`<+|B5Vf4u1`;o6#e5W-oC^L=2 zeP|rx^WuJ{H|u7Hg0J)o1;i;Q&&l1swPM3k2NorlQBJDdm2M$0G0i~D$AM+~e&M(H zgQav9$5&1;eYrBqxuRTiI()q;V5{*DQJ_6+f>N@FIu{k~(q;F7n`<)wPfbJP zb%d!{Sy`E3c{&?6n~rW&u4_GTYY<{v!~lMy=)n#eq@t+jCO|;tih)Gk@_lrTYWd(3 z*)9Bs7wRX^hpbWRM#Hvlv&g_(&&YIiyPNB)?&rXHoRdCzV`;NZzHUf++&)+W98u+Z zbfK1BpMGP5?Rv1t-A3BNJ4qD6AQOLE8KfPVAX|f{w{-0QYnjg z)0Gn5eyBZ7PE7o&`CxE=vM$muB|J7(->a&=z8)yqmlSf&1iB4E{E&}9q~sd*lJS?@ z#!6I9$)AUSJv|G7QaIv_KW{)UHuYE!`KEALp2!_;epX4UDnzA^T@x0VCb%Q=d&OPO zqQU7wDsH3Ds6cu{={kMO8>S7EtvXOq0y(Uiog`^UPWdMNE?`btZ`;DrKYc99dbH!B zJScUuhxk(-*d!MzU3W#jSEvbocWX6}O>t^(CL}V;Jx~}#eQ&u>(>u4?Ovf`q9Ob-_ z->mmzJ$Tf;BK8fOy49kqyhcVK>8;8^5v$#tb?9O z*uUnnxIitzWU^MU!_~EoD`(4mnaGW3+UV&vilp&6uJtw73=~X>zu}>0;fb+he~7*} zgY=-tj?JUzDJh_4`>&%d{abU30W9g|d?POVvIf0k*i@}Q!B;8E?YS7Zu>S6cQSlD$lB4h65+ zU`TDcf}}WPxoz(zmi6_-?Uc5khKPgmEi0Xtk5(Jm4ty=5PlW7nhU69VUF`ck1Ji?9yCy3`B5%Xm`zZ(uwc=_R7{M78)gEvv?Ie z6k9!!7`5m`XiVxqiL31w^3pY44ZQ%dA(q z{5jcEwEkcV%BiI#aRF{S%h;h;2Rwx;UEm*|r3r+BFX*Kk?-2Vlx5LsaHE0#B%(FU7 zoWs2NpM369uqi~>=_eEO)UtNKOB#mfxo{h4kES2EIV5Mrx1gdiUV2h(d2%0_RU68ME#Qa5P#bmjrw@lZ4 zxZc!aI6S7(sQ`V~YDt}AWUMAvHZreC%Fci3)dH+qbf9VkBqt?hUP?(5{MiN~KZMsS z0R!cm+got<9Z4V72nz`dSG#q)o_M7yPZZGR@ik&G7PhD=^OW?147W0RzlWpO)-OPI zI^X%aAkbk-A!dK#M;1zIu56u&)VSAXW2$ZCMMxQK6?Qmncxn8fWvP6W+c4`$4+)eWQAc{coY8e@~sdz$`g(n(sL@x<=FtG4*B1#1BZ#V(6A zfrpE0To;bhO);G#nG|VIf_DWWSvlN%w1f z45k)H;vXu}jc;ssY09I=1-p1)bXpq5;{~;9XKVPw3a3uIQ@knP4=qUu8^Xdx24*d6 zZHs80Bs`4C(Y+~!jAS6S!mKvDmAwNmpWG$bDHo!b^gHhl1;WGIWx}dzeq@FL{a;nf z&dSi#G^foPUj}md*Ox!vO!vulrZW5?*}v3REro}~d7044SVrfbm2Sk7ej(tc4y->C zm-A~dR6;|m{_l!-wrO8*+{VS7!ZSu<7H#XyhzZ3rKSp+uFe^Q&(s^OR===@=$v)(K zY3ur0?})kM&Id2))7W$rI_)8C+>RL9cL+}PP&KsiLFO`-)ST*FnTKVPAZ}kPt2cGv zohbO{wphA*!e6kjui>s3M~!E8tNV#l`Az>+`4@tjG;lIuiy7?*Y@EuYT$#V9_X7N>4;hyfY z8Ci)`KvT7y`vQekaV9+OPrIrr>_pgV^uD?~O z@D%&;DyLq4;!T}mfA7`63mUJ?#70Z`?aE2soBsIXX{Z5%qJiPzqZ2O#diyvXGP}A+ zd$aQ~j~&%|*7OcdvEd8~M$|9&cDb(QEVyStu9)y<~Z!*AQ5ZXS739UY|15%rjqvg3LM?k&+*a8x>F6sr@abOOOnV# zQG*K{?HqkWbA;FD*}rEbfoGmfs$9m=+A4&AlY7F8W+R$zNNP_I9HNh zw@D(+8unlp=;QoN)s0uLbZsXq!E&bP)h<9`062{fgSXTn#H_&$F&o8-l3qNB@Zos+ zO@hZWiv+&B=TCY82nT3NwnpNxxcg>|0xV(IUHKZWPo3M~%WZ}KH&vvkrIpb0{sK2S z*Q`RI&)c?vPkKnVq^|ZmWUW0tso&IFkQYoA`sL_UqM)}SOAcec&w$RV1Z`YPSgC-R)!DQaFi3LK^s$ z@vK!Eq(sUGs{;kQnV$8C9 ze0+R$b@iDA8#{Y4SF6qqygp#b^tP|mIO`C`S^7Tv&;dMfwZ9MLw=h57til3WdMkcw zK!6n3f=ZfFGR_WsBp7^Mpz^tclzjUN=6-|bA)1^Jvy8E(@^~f*m{9-Pli?3Ip46{S zXZ$w)`)NkA2A}a16oFnkdeyhN514qSVp z<-y$HL=Gep`6t`-Cp%La3EX&k=0zfuT>_S14r#xj-;X4HdXtr28hO|62Sp1M3N`4I zmY0`*S^mUb(VQ8ixEo_P=|D^e>Z+_!)zQ;SvJC;-elY&Qml+p4{a1iA_Vba`px^?9 z&@++xEmF(hzI_|+P?nk5{2(Qh1(X~Ghw};ScTaFJTX+p63D1Vu&l`263NX8fPZ7qw z@C}egHt~f}i=He<*UpFmmC#vHck?oWr8bFI72{IZTiXZ^Ve4miLXK+5Cp@wILm4bZ$<-FYMvY#7J4>b(T|Q(9P*q5u z`C&Tx6Qi{BGyZ(QY3&wsvKe->X-w=n_5I zt6RGPE31*0?5wl$RaCJL@g*zz+wcS>|Q_C*d`CEJ@;H}{Y zT_yDy^Cgo!6ZxFafMQR#(6I*oZoj<7N;SAYq-Lx;Aa4+u>%2Cs(ViSI{Kb21_<`v? zoE|nbc7EkwF2LJjz-yVNs7Lu{u0;Y9@1XST%7U#{X@YAX0r-{>0RIb(3tnkM1h8#hd% z52Gx3aQE+-+w1c47&|1~<7o0x!VY3KqW$u*RE_8WMcPXv#XbM=u&2Fcz00OcPGQ$3 z*LU@nvE!7B0@+t1fXcr^e`PN)Lg?glOl(hBDfg}8>Po**&fy8YXV;^_IYD9NFjUt5 z$tjn!bI=dMlJYic$_XoYmniw*u^MJfh7%s#r9H=C%+9<2aI0H&?i^D?}1L) zCi{ze7VMLp`=Sa0dA$A!KCJ8!*p$Om`wztpwo%%56JHiUY7||&yLkX9rg|fEePtxA zl@B=GK9`=0Xp+oVJ13K0K)}N_)iq0~n9625nyY zNdeb#-bF!Dl&vEvk3zRsqx-8>lkJ$6u{K<4GdGlCUK&WUNXNUjZ`9YvmU35^TUGu- z>W3bjK(FYh)~LukmKDDjcdYRLeRSBQ+Z$gl>Jv>o*J3yaBU!G`=Q3-MyUluF>4%r)RV11C3_21s~MVKW^`z)K>q{dOO*dK^c=GI6&dTqSs|o22MPZ!j}f7 zUxrle(S&MLdMW|49w!Yq?&nckv4i-nVW0H|uYfU6Fe+AQZ?v)s46Uu+Ub524it)0A zEW2-y#+xfc**~g=R!vOh=&E-S#Xs)7!uw1*I9-8{N>%>Vq#W(?3h9LQ;99P@TBMbz z;NYn7eyR0P^ONwGmIp7S4~2tEb`G1eIB4uxbp^iXEm&(v)N zuU6%jKO4>lNG2iNc_u!M3;;|3gDt%~t<5hI1mO${%1Bm_xfn%=d8|3=4G8NwJ zG4_V*1&p=koRItvSwaOXz1nVP<6rn&R5M38RpnmHN%W7E=%x%zIzt`W9UeyZ|GJ&* zM*WERa2V09n~&YDBrwdso{0&(?eQ35cEgLoPvT1+ui)ENylm+zXv4U`ZgP2Z{#>(< zUV{QoGt{aBls0znA=$*iWMpJR0|QTdml!0G=+u~J%SoX!o8&$44B>eX`ii%P`6W(W zqUJ7OSVEQZG@F$speizm8K-CB7%66r1}YsgKrHR}8p2McdgVDL_X+zX3dYJc+b;s@ zvM)^;%EFKAsm;GrOc6PBjYHllO$0CVD0s|MX$e9(psy;*l)*Tv4nX+CgZ5U41;euA zUC&o0ZL&mZYO<|aYMBWYfnphMFLHw42%$0I165(uRP4`dW&yeh^=5C8*IDZ$*Y!&~ zp&xmlALUHc+^qGXeNWr=JXgxX$c0;b(!)}gy5_mrC=iZ|=Iu_d;%ecYFVN=u{dlwb zgwm?+>(^KJq|d7!rOZPz&!&vsSvNR1k{6rExRO(WBFG(^ep17{au>ry2sbD8F!l!m zPF59T6TQf`!(S}n@!Z~sunI(Hk(@hQVXWJYe5#TMW>MY)}3LdYuvyxEd zqk-cSt15Hd)uj}fgCrS&{9MDV)P=&^u@kI@ad#c_p?XQf(wBNU=u&!`qwJPZ<4k-Y zKKy$<9LP!loBejL+BxTCo*r^pY7TDYl2*2&aTdj1rFxfA>7K&y4n`ZUc;NEC{ zL;);!U_V>w=d885+lT96eH0Jj&Dxpc@dMsPx$>Q{$WXbQ=1jj?U$E33`bh_9&g&EJ z%ZCr|!<(`I?+BYJwy|&Bk82Q*@q?=>sWPyu43HqX7 z4moIwM{v(r1J-@h6_{X|gpH59 zo7EMaEfbnlMNa_nR`+#nA*8CbR?Rh&YfJH1w_iQ0ng!UNuUH4EF}d*$NS41v=F%Z7W52|F}n#OT2>iHMeBKqqEL_~7e{ zRD#39o*6x!Z3}xX0&3YYm>dC_l|fYKJd4~MX1VOJ<@3+*%wBFTzS@ZHk&2qf+vKEpw1`$y92Rld7-Bq6& zDodtE94c0dTrMT>{hzLL`6@T$pIpM9$bP!W(?@T`pD2d`n$-Qu-b~nS23mMv%zZ)O zLz!R|V4fb5wC1opW7nQf+AnmCTeTq$R`-MbF&n$9LXLX2j)ReXkJQUPuLi7vvOUuJ zK4nF=@QX~xYEkrFknsWE4l2UnBUxZ^-ZJa5m}nBb-Mf#3*H3lU>{BUC!fC{sd0kmM z_#=OdO6E?Pmmt}l>Z@h0GoG8MqDQ3HJj;e0cXPiXbb_a_>ek4VD3D*vC30%_njK+8 z{jT+dmuYKO#xHYIs&h@G3uy=lIHyup=noS2eIGBZc)m0QPIT-Wxt!I9 zk;37-6_SDhU4Oq(K^TaT&=GiMC~{sGfO!D`tkgZm^c^t(R>*y^ZGU@v)=HgeW^-z{ zI?U10$-#-*KKEt+GKs&UQzGi#U#N^P?~R|qz)OM#&AXJB49c_&hvZ=ipKBB&D42n^ z-?rl8b*cNU_D(5~`5Cmd%Fa=p$qW4E5El^D-%vsvKOPso{G8AIUG|WXR9JQd%3)OG zC9eY>AQnmE%zzv@;g5_pbByVPDtt3SnfXKuMfkTc?|h%7LygAKNG zPBmS|9bH{~w5bEX9w5-`iA^!_fM`NnYb@%x+~t1N#yBP80U-d;^2{)Gehe%gU~0>D z0lcE*8yqMT67mS7xL}pFsz3yk_R+%6h5yb+Ku2jP6c1TB=N*?k2QW1LaiapFzXZR0 zHPcT*x+%T68NkoN@cq@46o79UcqN7405mr;l>RH>|38#Nmp%^YkZDf0J;0pMrN|Gnpbp_ybQ=b&;Nguk(q>}h5c zMHzrnmC%Y5C;`full!~32Cz+TseeV}nIlT0Ub;^QQq1Bo!of2y;RW1y(BBrU1%N`c z{C2Ajq;#O<0_RXCoNqRElC+{+{$uI*y|1=Xe}K*WVY0jcm(P^`*U|$bgablVz!#%d z6fa;QOE~kzO0Up)2zJZaKhHw(tG^y})|{}nQMEsP8kCIjHBG>oAatj+ZD-+eRB z?5ecD&SBFX>MuB85ut}FjoSQUSd~FVq#))vXx#?eJl!A zBjwTk7U;d>J)EofaSRuyhv&v?Rv!sGk&0jx5E!oIFye$PZM%h=TG;{nZmY5-yTHTU z{sB%C5OFZ}X7jS?+A#Hr&!^QH`H*Fvcv`eXDvM$ zOokmv;N1mBU4uA&BEfV!P6i2VuGxd9Y-N5Xh8S+VY4~ys$_T^`kX-vkssp{IfoEpR zXA@T?II}T=k{9#mj+f4%Q|dKhE1VIV@5m$I`=gfS1G@}-F~%h$3g_hj^}XMg4ee%x zaI)A~@}AwXpF6mYlt&0uSwLW$uon27NHh$T*7Az6{w8w^3u73ks8Qzoa4lLL?X8lS z`BYVPF_*o($`GAd2U1yX(8R=?*v#F-70jAPT@lkUyvh(rr9d0~gjaig0hAd4`oeuYX;}rEZ`szGYGK<_0yZ2C_?Y!E< zSbP7RE3fcQ{gLq9;@8AN6suiDR`I}n{%{12dtUO5zA4!QYDziQkk5;QP3S|R#6=7c znP|o;)b?6~@ZqPHnS*Up`IAvUT3zjvd-&of-)9aG6?19P0T4nwmiuw9U_xtaYm2L} z)5#@Uclh?e@E-J*pydVJApjB+ z$wPAkwj*G$<;CNHnSa{+|yb!6$u$*j*guoL-@f@y{=oED zjHP!xtAH)TEb#&T74{z~<^vK8Y>UWPJ+EUB^m9Zxm#@ODf6tlu>wH zelD|q(MXUkM>vc+=3#ii&c>!w=jPZdee!$#J09Psd|+HC#uADC zR#5#rw{Gtbvp}BbZ)>^gngWa7nTj3O zP%nDsbLw5Ik5drXQ69y##nYc_d(0Hj`Nl=Ut$@E{>oMO z$S(no^_5)`6js75u3F7pWjK1RKQbG=6Vj3jd(Ijja(V&w_{2k!OkFcD1 zZAQ;{dUBc>Sr3Lb{8G)dvJj@PFsEb47T_KU0% zRtjsidS4;5ytG8hxVH!)D^Aq zCR@#J@Hu%0Fx=5-^dXPBJYT?-H?3I3@Y0{|YP77FE z1pwdL|KQF#3FEYUzr5vLl}AI&T7~zc26AC;@22F!7CKapXb8TD)$X0&L)gj1XLM!g zSDr#&zX1nmfa0LKBk#Syf-LWJxMkg*UYUH7%Vpp)0IwT+mcV`{ee1BYITLey0+mx_kU10*5+?AT05kX6TXC0-%EMNEXDi*|+gAIn z>pG)>91Cl+U6oBOYU~cRt`MQjuF>UyVq$X`((H6rFe9hX)E?|!@_oaooGUp1i+Lr^ zN+5Yf3McR0A-y3l^MRj%2o3;ZLJvd3T5{Z9Oz~du#X)6|q76Q!d;uQ*R~knc)FkGvEe8cjd&iG6o{FY3=%D&KyRWgj}8) z0ML#89($|D2Zb?H^#Tsu1o1<1q8gkGE>a<2Mm`%-PuZQ1Fp3`z8Do!FfWg2^YiR+6x}r`RG47$162=WcYTKdnHu{p+RWu|t(6rMkacFFGHItG-_ycuij-AZ9<4 z29_L@^a`OT#Ia(vf7<-$6}W6X-(jLGXp!y6TeX0JuZ#)NJNT_fSwldM@&&ghxm5kTp{)sG&`RhI!tTb4-b1N?;JkuR5{=)%9FVC_*?zztIZy?IWF1(xP}dr*3~x)>J5g?sl*KlUY!9z3ADzM} zaXVS8I4G;sz`irI;G5!aD%_gwsUTio3Al(^9BmK`rpGA1PGmfM0TU9ucd1MvUjmd4 zl>>RptkEvhE)@)MI*j067ycX2z3{8Ll|MGqp#jMg%Nx-qs{>v1x5 zX&15QBT!e8-^Z8?Wx6&LZ{Ky&SXL6QB_2*jEs6aNDR{djWN!5M)gQmF7dS(l+P@ov zYG{~pvt`?=XOw&>*FMqdSIG~_RxP}N1{-=1hv$yY$iJk{oAqfCGBB2vAo3wP!@R(S8fWZxz@vN_j)wI}R z0P4xM)OiPTPFLt2_X}mc4RCy}vt7i#&r|~-BbXC1+c4WT78=w9n7i!W^)ls9fc`T3 zOyz>Br-a&c#xV0DjXX6AFEBa4K`GHgpnnO3(PuUQ&ulmN>EM#eI`8|&MIh}YZXLxm zuPWyZ$ijqFXt)Y~0EobVf}baDNNId~3mAWbW@6^&=SMC1YbH`se;ZVcS@COITNfPc zXZ#0Lm^YNrRROvxA=S-+Al!8S@z#GkSAsfKkJJF5C*;{Euv5fY?5XHAZV(M0|7Vng zo7k&Tp>z7l&)R3Wm;#|}st;FkC(03EGEO*vyB`8y?5rX$y^4cA7}xxZe01;1*gNTn zLzY%6dvq9aEN#QmL-#KiKmq?>RHgsVMp_8TIUazbTfph!F5zVp|BDB}CJfr!&YNU~ zdf`%B-!+c?SKyHyy6&M|z(@0)Q&yyLa_xT+hPbw1@WNXoqpqF=dzoLDc-C^0E`l-O z)+>|&XkH)7242*>vb|Pd<}vpq{)hOHth7-5-t}A3)~!>pWg#%>bUC_nup44SHoleh zC|2YphZUvnb;uHLwI(kquHGvD(VK!3Ol!g6RP~*j(3x;zl6Lv=yJl(RfrZH`QZb#D z{eOP^Kil1r3kB!W=$5rrW$!m!wcZm56c9|+DO)ysnG&~SvUh6Kl!;XrrqS0-ib6h2 zfbTUX;A1r_zrJpo30>}5QS(@#@_qc6nsawD0shwkt1NlBH}R7Ew5 z5U>9{M7AF6iLC#+g7EZaAwP<}Hbppd=k3JS?}U(^XBE$e@?BSb-RCXJwgi{XksBqY zPdLu%1AwCc!RX>wQ4X$38{W=pXLG4$O5Wwu6bqS%Bw|s}Nz`$mmIQpr<#TZ)6t{O&4?veY&MX}7jqZ!-Umk<3kV+(O?(;pO~rV()`LYzocBjdI}K!F`JxrzomBSY~mkS4(^6KutYg7G z62P69Zzh;u(AUS|H9K&p4>5~^bmLS@+YUN!@v)w4kq$bp+?o$~qX5)!3!U0Y?y-|b zrC+{R%@IXNwF}PYJhTF%j?0u565Ox4N6#>J1e%+uwmrslA0GsoXHmlE3mvUpVch~v z-L89L)+mIQ#V_h>q)H}D6$AZet7+y7qaGVll8DcGMTlRDQ}KnCQ^g?l+-|);c`BpK z8+i4fx#6h*Cofxh0@pA;kbm$mCZKPaC(X-MQE5t&sc6kcJ_3<)cK5VtMXIdlPm_kJ zJ~K}SOS2%*S@PQfsXx^jYl7{LYi$bcz0Q1_eBIYgSO@fw21fnu@88>GdpD5|D)~JT ztPJ!Zf`jT_!FBB%5x=iMWxZhe%fxr(XeAnsloXa9jFQ{Mx_ zB|Dml$4t)E^bH8>pkuGPMx~iPkapN9* zaVv$-v3ohhVo1bz-~H7c1)wab2AB`WX@8Y83JTWon``$88tQKH`T2Q@=wwZU(~q-)H_YowU6&; z3bLlEWyJ@wg6dwDj&HnDin*b&z{aLkVboFWUSd$|qhGgK5G|&7Kj!N>wdBZC*l_n| zh^qu3|K0&aIl9Ty3wBQdvxiaG-+Xo%Cms{VN#mld*!xmQw16b1vg->5TkpA$R4wRx_dGfR6WX??zO7Wpt z==Vy+UHzcQi0f8fE9+(LhlQ*wHhmQinWEl0_i*y-gKN`r?D=XIfd&^;0c544Fi{yl!P1@n-6!juqPJ* z{Y_VqN7f6korxs}Ygc2y7&pOL>*P?VmN*o}aR|NkqCIByz)d9G@ ziYl>CMms*NhR}y}^iM3YNvDP{0|I@sb3S7}L(YLkbyEdtX!d?fxXW|)laso=p`p9% z(*y-r^>&q7Y;GAxk%wcmn262;9HVAv;4+63riB%4DOkcKVb#YQQ&L!7${KMqqmyA7 zv1-cv71Y5lJ*{qj-kICMj34pW=qU8iLQLRWhpF=E#`td#GqrCdW0cxj+S+=fEZ#-1AaMi}jdb~WFZvWbu zgks(WbbQ;JaUbDiK>#b9>W5;~&iC&xqUwm8M=(zE+n-Rp1xGE<`*r97P!2$l4v;~b zdqXjpBi8u{)6%-NEp^aJgP!V^-~Ql&8h@qEk+TRL`>%mTJIvIs?g{KA%v^K$UE`ck zFS@cO?M;tYY;Ii|R7pN|sH|ECgFiZ^KheJq#eD8XIhbK`r}L=AT@X$(@--cUo0h#) zr*4WD^`*A|8%%%mChfLoUw!dRK#1}a@19j_$12LyI9543*yt+?6#Ekpd{z(HFfvtKW4-mGY2@~{ z1m8OmTo}hk0`Huj;R?%H$Y{3C`1I)$*jP(N#W0~bNBBR4@82ADi>0Kpk3ov-*N%ZZ zgw8jp3xB!wdx{;9ud|j-qOpZR_F7pH5(*3G|krxs;iWlWjxA+oHaZvgW zf>Th0>jC3=Gy_Pt!K zz$jRUT$60Nxc7-xG#hX8d}@PNzQGCski@3HN3{@7*d%T1B^!!)SgIL;{!MtJzkqd zxqBw$AQZ1v-_(xdCrJP zJe$&7*e;vd{6-1xsLGc?*?7c2$S+DKm!_ZI!*yzYH^ zsL>QwKrZS=XXX6J!d6L1q=W~sX5-UA&sq~?{>c4coR*qLiq1`qWp`FaGnxgPzIs2g zYpQoxxl~dgO%9)QT}TchW7jHvE4SS~^1%o6^=(_ER1nz&@VVJx6EpdFssS9IM@@^8 z5p>eG6G*G8zjBvy#z3h?Do$Jn z9u{fJ*@aX85xLLp8Bp#>#S1y z6QojBNogr>`-pEBFhp%nM+;+XdEBg4pVM*pMmGeAN1$L!+LR}X$EfqD=Q<36EZM7f ztVj=AZXEw8l(|bwbzs?Re^9)C1pKrAt5y8i?QIuX*t0Kd?GtA^NAWwHw?ATl3Mi%0 z(lC^Chtfk2L#K2j-6aYlB{6iv07Ewd0!nvxN;gP1{2yN5@4NT?wu&LK+ zb6nKTAZ{J$kYyW|ej}9xWT_~6$*o@Jc?HBk60r4vEQb+Dc5=-GM$cl!g28m2_WJpJ zng|v>goIQwwuh7ootM}Cb(F`o;7+bHwe|S^{xuVo4R{MZi|r3hXw$v3|A9s@1YT5B zl#!89R%U;=K1@kT*@4$0kVOTk#ujZTSY}=CIr8q~jHA(noNTu8{IoysBc#jmD27_( z6k9dO)U-_Rrg+c(>smkT_ zpw)SMYwPRkTh@vQ$=og{hFojGu~R|LIFhCrQ^qeBp$r4DBJeQi*e&it`lGjtg&{yE z8ms`Q7eMWw8Faapx}TI{coN|&sAV)zVN!EMNO0sVdj*=Xs^~@a8M=}V04r`t{@GFI zEwqQcJO=|fNph2VH*|#L#q5KN9nTyNqot^$>la68wbz0&_|F|wOxHTH&&QZq?}c9% zi}FNdvxPtUqu~OuZHT9@xJUQ=uaxIwbK31M} zCQw{{_1&NPdTD1EBe%TX^?D(~`YPY`K<;|2F+$6YSgC$DtO^-%84K{xMj{6O$U~8Q z7VmdqBLJB7qKx4$m{raLdiJeZ4{ z#}U4P9oouz@ng1gR)oi`!aVRHY7L9X%Tp4K4AuZJIil!K*zak~BcGUE#WT>Omo>>ujN{>%m?6C>d+d`Ca#ulIA_ews0jhK>i;ge`SyhWf{teZs4jSr2R+&2de~SL4aDP#k;vzqQmb|8cAeL1w?`s6 zc}#fhEL*Mu;Myd_e7VgCAS}R8nthVs{A=;c%EdLJQWZ42dEB;;wtf1m^IGu3<*;Ng zwY5M2G;(S+o0*jRWixX7^%z;ABotrr<1JLE?@-hxJaTxEwQ1K?1~`I>8#J8hfTbnE zf4xf==A%x3xF>ax?C!poF(*f)bznV9a^ya6^>r$u>{@2&L*>CC z>4lRX^SSb{mpJdL=GecvOM#4=zshSoY2hsX#AfCxMm)>^v5j_7WN+t1nF|OYikTIG zQdm^&#axlIxHfQX4GBQFJ&VbRI*&rIvIO{j?iUq2&8m;S&ZU6+J^z*b#MN$APpv|l zU~GtNru=$QcT~+V5)zg`EO>DB<-)aY_e`x9>a*x&5!OQi3eITwlVv5O3%bX`9vXL0 z4ED6cWSNJADkSPKWuG*s)- z9-aiGqOW=N)S7ivMy=?F>-Mla3f!vRm%J{Aan zJ1DB#9!~jxX}E!f2y8Fg9*BuYz@P1W+wTdgRmJDf zy0;Cy{XcbuBMs~VL_kGW;rc%+(Ianmb9Z z6EEu$_n%Kt+q)$E8M2~Ellug9XAJ=8>G4tz?~Z1f31%su;bwkswjYC9i2)!HTCW}L zYid0pQ@r?iWEfgbO%&9^X9M7o_cG5eZ#hQ6s01idKw4UW=F-IW$_Vp#D`X%IwyV?P z{~?e8h63kQUbcykPOXSD=^Sa+ZQ3N0@bC4P1E)82%mDe-&G)8FOqp(R@hSf**4*2n z@RyVF0s1w70H$RV8-L#$xEugwl4t_YFS3bafDDP7A;6UF&zn5W`d8(t#RY}iLj5rX z5o{R(@t(!ca zEHi$kqb^b{nHOOGh{EW(SVdG$_bjVOHun@L9VhU(sB2~ffC27_=va&s(v`MT@Drkx9Q!X5QhiH z18?s?v6$Hf1E9=|JYIU}%D{@cR>4R$Tr%80A<3{^`zdRpObJN#j|9Odmh!2bnQ6JY zB2Gk3vugfG%pn%6Cl4h!H-P^C2LdD0kzQ5i23e{ak0l&Smv)w0YZOx`E!RI$6*ro@&yYAocEDOld1UJ#6+cQKIfQ#Hgn)5TeaUgn)rlSwBPtK9gGuDh%? z1Qq$+3Upl{XFUylsg0|sOrmn1tNae;`}gB3wpcPwX)!nyQ&Lni#U z$?TL!Pydrbt!wnCDTrQiEO{uVvSm{PC=;-fa20@5|1X&AXW*wJ20oznVr5}pb+qFw z6rNFKdn~77t|;8N-4b<|aWvOKYQ@huG3*KU%JcS}wx4UKkoG-fP0l}x~@FVZ&0-&H@OXKO-7Xk?7fZa$0HnN zHJax-Ig=No4#DS|1$UYF-l*blS(X0hSr0yVF9FuBk+Ctse)mv8eCW;0?j|uZl4b%b zY6_S&AY*#X4ZPXyj7~R9Wv>m?JD|Nwm-wum7PhO`Z%p+{=uP=6)(QBmy7na03XsUS+(KbO;5h90 zgjRu{!@RvsP_Ahy3*+}G+%!sb*nAN?(^t)UmpRNOG^yP<|L8r&`u9J){%B{2y*U!% zzYcg9h&}yoqx1uLEfg$lHvj;b=3e&vCuC_JfjF=Zt=FPYtCa1REG|go_=*)yCo5Js z&5nChvf0+(nm3&aRtbLFP8kGU?fy^3K&pL=q^(3}I1 zrI$l*1xa32y)Ltzu&JZ_e>#y@!uPwDiW+$}6T5BAlXJz~_j zho3E=vNPf zRtBr)gWXg%`4=Awc^19hqcQ$5CV{@jc_M=;U>U(u6w9fq8J1dK4%|BM*%7Ww{D3Lj#M^;+|BCX}mCCwbB1sU(zO|MY_Es~B=;zJ% zj`d8fbKE2n=i8lwm;o+kCpoYB@PZbj@MG5fw`ofM0sLN*xa~YAXth~6Kf;VoaU_$< z9Az_%YyU#V&C!}F(XOwUMh}h@l_C$3ZWoq`((mtz(RULg@;z=sLneKS`eKUx>r)fw z*QlLsFOhru1@83;EE2BFA?-Cj_$6>p{v9SEe&A2glOI}?8`Hxxhj&RXz6a_ksW==a zuj66(FQT0iq3X#wISdyH9B!;{?_A_Ox+kRTdk?v(0|^n?8X+qqb9j7ABH(_qx6}zC zIJC+bT>G?)Er0e*3XWZfk<|s=WF}a-QtkN0!so6O1{Owflcj=K8x2JJ>AmG$WF4Af zb*4>pVTEzwS(ZJR=1l`1J3VRXJ=$lzz?%H1t}!>KY4j__xUwXjlqH;<>5%4)sg}O| zD;q<-d9dEEcM)S=MLU|`cGl#%p2^j6hw(f&pUz#xeAL<#l*zi*&uV5F6iyE<`LQg9 z8c7Pn_p>>evVCZVu$G{ega?pZtms_ZPwW4>KFiXf^!$}9u3cLjcIMifFW85LaSn7s zc>VPD2*&ec#N+Lo*NT~OsD@Z&(-IzWzm}Yv7<#q^_Ah*ig#72LT=u0<-jF0bOD=iY z)kN^zxm;m~7|&%rT>36})(ml=%5}ugY6n@5KtZAI9twL`9|=~&G3MYN8zc&@d)m8L z+W2dbzNZ?6@D|yJt3r9UXCw)kcuJHFk8xli_`t}Pv`rac4r5sv#5gz z1Z}iLNBx7yx+RFI{;EVr0#0#)+!Ld{^!^8NEkkj+Wd*5-d{}$R;)DJV?ZaIy`q)Mg z5ho5dBKOaQr3R94bgcjj?bQswRLRY~T=`kpcNf`XG3*^K|CvFyOl<0}_~tKK^ot{7 z@iKli8;F6Z@-hvgl=1PH?Fzx{QJG@sc_E!|-1A@f>}5b2Up35j=jnhh3xO%aPVR`p zLSn9M<|gVdLv=1B!-UJ@uNR(sRlnPs73;c26%*q_5N0~`3!)MSiUbGyt(pjMPKn9jc(S)fiim>P(e&lCRuS*YcsZOI z!+PSDB|cCR^~6;LNck4`j9ebE1!X8uiDRj;@>1NF>=@-N9;C&073)?Yt>bypU+HH; zwnFG?&F1bjpWaZm8;WGuR|xVZ@`DZ|8|0E z>vzw{P;QwtAc<^k4Z(ljobNoTn_t9q;!ssLAa1=d_iHeU=8Nt;pj z6+1sCQh#9s7jY0!w-_1QnSr(9clLyYCkzLIcss-{cGeq|nPr<98_$IuMLyeY!4ey# zKgU4wOKQ_TwBQ5krTwp#lUKSA!Wykxs4v@7}=b0{wg%OFu!&ry)N9HBDr4QA-*c?CAmuW zx>~5eczk&-czw}&eR$efe^%oUe1Z1$mE5e$RX2qGTqs2uHBSY!1oRAvSD}H} zo0hFANCO?&O_?R_K*(aU>cQC0@XRtCrLnQfovcLs^eTiK-%>tH z+OX9CN*j=S^xgeY3~c30xmDnEeh1cA3e@aHOI-_NH%RUdWX&sF9Sj(_%ZBno#>H!# z-s|0qnkT*W=S&^-{<{|>OpDh;PDeYhfGR%$QI!u8s`no+C@rv!2b_?uPWM*~Q)p&? zl5Z@1gY#8D880cYJAWz?%XM5oq499bfcPrgbr{*b5i5g3I3m{M=@dmb;^Z>+`Etra zs2F5Kgr&{UM6s*fORSUi)u=gE1>#rD0M@+TFee6vk+V>4b%b>(o~X`_`NZ=_0zo0+A|Iuvl}s+L^vS?ux%Y4h%?k zBEGCY;tvr`=&;sIczBCBe<`mI_&cx;Vu*kd#NJ2r3TgIL&}DI?X=cn+yI)18Vd4?n zVd%=&z4#g)Hg`$1@3REN)n;3qcG$aCb$;Q(=@vXu9H;ZLR{^-mzy{@=7lsL!(L@|a z=wfH$xA>T7#)NeS9jQt2ad+u<&?e_bK3JFRd|dWSX5<$3=0Qy zT0OMA)%YO!Ov~!lLJ&d3N}{~n50YCyyDmWo*_23O)PW*ofF8buuJO31SXtBHU@dG7 z@2?A|deDDYoJLHJP-otcV_b{2A26gjig0ne?81IH<#jyt@#v%b=7`2>&z)ILF(k-Z z%gLO@|6l+JZ&ZXcX9(B@fxL-EBs-`cj5z>=HH}JB%L5WOL zUTSG+b)P*+13P86rmABge*qJ5{knhK(2?#{gn4V{W{?vR5ryd`H{Q71wa#d!WaH$k zt1CU~{@sv}5Ti>J$Qp<1{m(Njz^y9L*dHO^=FgCP$nG7eQxch)n+IAlau7Q zmt~ce&l#RW5b24(4E=8|6ef5!eCrIeUn7fBN+qSdFNTXQNV)`k0h{;5>+V%Q6ar~+ zvLxIV+X2yDyhw@&BC=OwVq|2bzrTNY7*}m2D>pYcJv|+ek+Uac_=N;KerUd}A_r9n zl%KQg&HQJK2z*i#=ba;~Jj?;;(^hm%=H3^ulZ;||+O6MJl1s^1RJggZ(hl#dBIJ7= zVc-q?H|K9=ywDwRi;Sg8OicI*dF{PF=S&hj+M0H)*}y;gcwsZ_|0Xqj^Pxl13xTP{ zW>NMW#O4$bpn&mV!~Psb=%5pzs|cj)?)F^X*c00(5+ptuJ58AAi8M zWc%y*h(%MvKmEZmHulvf)VHP4;4dBVNt6^)qRurVfUNb{a}9M!rVt{^=-!@rU}^Q_ zDenf@n*E7Um&KVh{fI|V7jR@)#{MsPoq@7~T9!b>)*zeZ zdT5~Q-O<*<(uptD7G0vF(=V2ARc6!-G@Va~Sop(HQt}M?~e63ITzG@?z%Bdg=W+oJ(y1-WACRJdkVmREO_t#;`=B%8-`{72rAMbT&ksKgJv>M)ni zH{HIg^>Du%TR@>>+x~0^!$kcF=g|2diEZ(n*|C_wf|}qCx`J<| zF*aeCtWF&Cn`nnx%&f7}%aIrS-UWJBlMwF9@V3gudb2DAZD8V$G6urqzsss>-yK`2 zsn|@Cu{2akvpfZXz@uS@V?Q^xD4n<_A%TZD>dK*Wn+czDu&FRB>45$jw zM8}1k8((1@wJg-42+yfrbTl==oar}FW6MhU9Zl+A-0hJywG6_5&vc;`f2xtU>(zY^ z#^cvFe!9+w>BVjPicl)ZI9wbb-FJLYdh4b3i*{v4zpiAtjpq+Yl^_zPdr$yIth?9a$nVb zlImFTUcExlaoeBcNZHU4`2jQgt`UgX-11$vC%De74PCsIbxq2*|E^3(HiRj7x$eY# zEg@DiDWZTr2(QckNqf|O1~vJ#N*`;7^W{rDXcPr~ z0dh0c@Mrz;=LP#VK5>F7e$BLHF?D11V>H((;U6;bb?n2M%9Mw!%9+HYhsxc@>+;=p zoZyv*fk|HePx~^j&Z0{>zfhK%dDetEWDRX`cYi?_ul?~u+ot`6pPYlcCiIS#)6Wu< zJ(l$@*Z`5`A{V@%I9Jfqu%Yhx368iapVo&`)E%|B8R>F}6(^89MQRxe_h!d#3uZP2 z?QBTJ#{S5nt*V(-WFo1zO4hfw2nv4^8j9g)-q6aP=$Afx!6c`{wM{4GxWZ^%%tR=j z{({oM9xJ(?TEl;fEHb`?uUsN@(YK752WLm$^0n-+3z=tu+|&Yoy77Fmbs#~3lHZ`* znCv7)?#LN$jjI>*9M30rd$RbX{gVk4)LDK0LQMGUEU!Yq>Nv(xB7sc3zEQZ%r034` zYx~jjnzc1b{sD10(cV6C@N)OimvyPDy0@e>%@UJ?k-T3Q80ja1YWiNU4IIhDL!8Gx z4@TBw?3ir_*3<8(mFPfrJo4@*AJvne3+NVAXZPCry>`b6F($AMO=Z_sUvhVZn0=7> z+cS^JA}djb=ClZbre!OI#x+D!N`PeDYobf0N#~PTjsC7AYxJhRHU5EPba#fy_1v7j zK)gFYKW3<3t56T9EEI2>^cIUyS!af*?$8Do+cPE?m(<3w4qnPg zGr$#R+GX9XX-1~8JsV6`!3NzHdj@i4y!e5}U7PP>DAS*NJK2us23$4vw+)gu7JYnp z+R*ouh<&zrU{K>nSR^-XxkUd9bpLrZ*7Gx6Ij6D}1D5z+jNNyXz;7HHvYINtR?a#h z4MzYmdX|h`xEXNJ>A7fdn|DC&T7ccXRKYOjeS`pqww%kf;YS%tlqVW1M!jugH0h?g zZ~VaQM2aywGFhTuBHz|O-`c6sGm0>9JoxBLl}u#Bz4p$OprNPlRnn^5id~ndA5Zk+ z(PPL#G+L>8F#7@SHX0;}BSv{e}$6#rug}mT#CTW83Y&uxH#&rEoGc#KK0o2Xxs|82*MZ|?*a)pr;&6}W(@DB`% zz5OtQ)0xOvqJVef!w$`o%jg9hdeJd=%VU(^XxoT6b8V~;v&cP)+^_xRJ6WkJm~N+~ zGHkEn-^jOOk2fUd?)~kr-RBsJ^QE3kB*1PwU?^7g;N91L?mhKUf)kb2tu(*PyU!^H zb>!BrJnD+CB|2}*>3jSvD#H_tXZ0Vd`^?G2D8aG7o%S<+tU#OR|F81 z_thSb@6Y!zcb%%OK2IxWk7f~!NLEKQ^TJ4|>B-9y{X9g?8GDhqnzxD09O)71iYKRT zER?_MIbe#ut`su8g&&Xx(O8XUAjRXg^tg6UOr6dG=5)-r61A!lPiy!opL*^c=u%nl z1>if^+7?b!>T8?!mu^{aEnj-Fbr|dH*7B-OJ5V(z-SHbV;)pFH_Kaad_lRH0*+nO? zdnh)MlnGT+HD58fPi0IsprY1$-5}3nK491>aP^7Mn80tO#{LQG(EE_d4__e;wQM!3 zk;YZEm`7bJ?iDu2FRnt~@~5?}C>@TsD>1p>{~c@lY>}npL@1S`BkXH5k(aC}eZXKi z8;Fl{imGdNk~OZkcvRl?CGlm!A--g3b9-tX&T@JXs$vuP^MiS&V){vuO6SMZ!h^lR zVrz8#+g?mm^8!KDwK8u9GRBPM*xv39#CByYZqmWX7A{n8}!9HoiOTq z1u?I#y}_@dSFzrGs*1@S@?`o<(Y4vfs?2^QI9#2aua(j$3dPlQ6duFFa#_;quh2Wk#;xW^l1{;ZbtU0KJ({q5ej1+lrJGg^&#?_)r*PQu+D_FfT1(VIP!1-bQzRn zTh8=31VWUm$U|z)*j=l#sprFF=XGVF@=;+xsO6dvk4Y`1zHk}`63&oiucj+nQYst!PbUxP? zR}6CK;mSHJvU2p}N07rYw=<}*T8%>>PDU4BAU?uQiI>QG;Fr%Sp!Y{~mlTQHiPEaG zrei(nRebE1)IW9|ba{m>(<4Xv5hraNvl;}`8y?mj>*LxP-^2$Y#11_>Pdsn7G$j95=+>aXS*;N?~T~lM3A`*<>m|T z!Wv$AR}M)=%=Gj0P205x1~Oa)yXg0AZOAQKzbIAcWl!5R%7ZUua#VX$ju}CtJ2NY0 zufaysCH8%7ZfHpjoO#fF;KM8Z~??YDAw7;wLh-TPa~Eh+zsLc5f~a0gQL z)e++doOMXs)guOxfm&91YE_ckN=x9;O+R2s@ z{rpEF2wxKQG+>4hOQB{D=e%*ofM!wzidM~uwje*{N~@$T+vIYXnpt6T@bQN;St9O7 z9;vdj2UekR!Y9KCr}z=Nk_3>X&HQg`_x(gq10G?(>F?HhB=uF1Ma z3(k7BQDO8;-f&c@N-J$VpG>ZnKGXdNjdiX)> zeIyB^rSRA=#UUv>g{6Lf#0YPQ3F=X$m9@UPaoNh4{Ka7qf`hFV64fMCGQ4h=YN-PjV;eNEW^A8-;v$3cn&@rC%vAp{2lTR(U}-6 zBE2-fvhCcZWO8sbzQpy+H4J|*Yw*{*ZSd?>!98qjHEd_kDtjjuR}~7BUo+$Fh{d~p z^^=2zsY98mb#zs8@AR*go-KhfGcPLD%L~B0M%fTkQ=$+yKSNsg-V~j8rAEKH3$nv1 z(n0XAaekv8AZIfR2Nt;Ztaiv&jFBskW>&V37cJjB?k)(Vcm6m29>Tvr&R_He?9fu< zq3Yro9;<)%Z-k{H`maR&=ouJ(plKMVoRTm=ctDLy??M!LmBBKhWn= zbGaEE(dwRV@lyLc@OsP3Cpsg(yvu%-1;!G5Zp>^*-vn6?C+6z^u*wY0J^Fw_oM|do z$~~9>J}UNpO~iOC6={LW+bF!tmmDbb`fV?`C5-)pKb7sN<{5;~ljYe~u-mgpn%FEU z5Zqfy;I0KnG^d@4e?v!PI@A#{2H#O|fNr&~DjTulU9h>0l5%B+}QK0-ImWksp{Ja;B4LIZXP4!dGaUqd9AE>rb< z5H%@l8&Xu<5Hh{dU&pBQ{BgGTR-+C|GENSt3#)~ts7J$|3dh(ns;{Eu;;Sj|<~~)q zN;7fVc}u5bJU49$K`MrKeMGi-0Di7QchTvbC;F7_2JfU*_ z${@m>TH)CcAle^ro+vtZuh8H~ZXGmW%1GL-&iqVfn3fUCgT>Dp!szvPefN!vDg`D_sXu22fhLvvNiqVjyQfJ zh(@TGNuX{nMHh#4z!3_^5nm${~T+K&NUfKW~s{hrk)A( zM<=k@#X{$&4YB19qRVRH`b|lPNJ@s==(8WEOq$=8wL_*{3L&-wQe>dY~!$) z{WeNR*Y--^qbE0;?zq%+3zPGi~7jKE?56C#Z%O{i3mS)CN%ze@Z4cL=(T-bJ^ zk<6>pE!avq^vQM9B6i>Vg%lVV_2ws^IDjke5V@Wg~0+S zr<$RExuX&dd}6=ziUKu^FY)v{t=j|{erBU}`h-8;C`|iXbj3!)XLzCQv*(Q|#sY=V z9M+^G^Q1(B#G*TY7h5K!{zCZN0^tJzD*jsfp2w|_W!T(X=C{wxsj4*f_4?FdT)GNc zJdN6=5Vf>OrcY|_OUlX_3obpiV~iT`A$3moX>&DK6~Y;9m8nFy3It>*oKsqO_zN~C zJeT^={IhWD-QxYXDguP1oWbrKHZh4>PQOIdWl1DoTUJSVTztPWA)|Zt+Lnjf4MJjO z$du@Sf-kgPndV7JYLv9*+kE2el^*D$mH9rWSKPa&R_ z#M}egI26mGab#BK;jSdprCnY;K~0h2O47*Z3|Ijr>5fu5hq7B>VHxo!r79i#sjCtr ztVqehGYlW8pYMHG)f`QHH7hA{T4P2N=iDlN#G|8mw>XefRY^c!s_z@CnTzUvfW2%* z!v1()QJb^wmU)P%dw!mdvKM7iN$kA8$CuuWGu+6gORfM zP2B!x#h+Z0ZTWg*U^ouWx`}p`NMseK7Gah9fVydGkCNixz{F@>B#m%QazA@iso6wN zQ$^1!8jR^Ks;YS~=-a;%NvNvdrvD>t`3U zA5DmGbb4|1tB5-&SfVfnE>pnKL`bLjqowNwk{hV0Wr@pp5+krjn&2Vx_F5lm-fy;2 z+Yp@|8~N>u%&wl8%wp#tY~z&#BZ|G=>J9Q66S`#>s~fj>`nQyxJ19PKLuFe zguiFsy@Yo!tF2aelIAs$*7S^g8*gLyz=|T}8l6ft`)H;}4@bf%4rYajHaaBtleCyw zdT=XM$#|Y-V;`*cf<1C;w2F-ApsI9I=`jy8i=Gh+o)p0}w&Y^TxKoq59HV)H9jrsg zQfmF3g+7hqL+}DY&wH1`G){;szPUiIjx9TSZy03RZbT8KzEw>S?*VD}2%CM2DZH*R zKlmJ9L+1s2#y`2B_PDCxV7|6Y>$x&W^hEZv{|na;2prO{Z^DFfSsKwl=0wXsVSeoj z+W3V2FPsMQ8>g`-hq}^lYD)Tj2pC$3#b;woQbR8u52c-A;pf4O|u#g|_% zmylG$G6q6X&K<9dAT}#~Bd*mW`M7A=d9ErT^)2Q>R)_Sri3 zJ|n8SXp)P4>Kg+wW;69HxhLA{n#L4H4SS-n6)r{qV5|oAoi4W0OXj}PS?v!ywSXgs zr-~Vn#Et6JhbL4r7%BEt18fz*=viR;D$3hnFMFXWbRw0{pjXABX|d$IlS3anK}~A+ z)k=7a$;Xo}`&khWA$JCMw=WgO2}~Fr8=t8i@s!k zed96uZ#)L9gpi0xF#`5QC{V|nI#)EiHtLOMt;9G2C*0JDg)KFsq#!c9YUTJvEgg%b z*N}s;N^a(e=;7O|$6tutBtEBBm!+G9sH^omx`#Mi*Z9V1<1#BD$}$RSV!|r2Xq6lz z8FPL>FpkjGDn~V``t5`W9}7{07ZIGvugi>_Cj@S*tQ0F)(F~=khrTPIo34{tbv3PF z{3dTRm}+&l-uH`gjXT7%#l~N0Ql$!oJ1H?pc_jWMm;nL`{5M!>kDSA!rZlO+2rHre zLWPn)M>o>7doYxZku{tTrbjUtm&39c7oVjB(*|R4iuX#-z%)cVYm%}zFVv9FawOnK z-^E<1=t`m}m+~~E)gnXc<7IS(A&4F>^^mU8B;Xi@F(&@t1`YRUmfYjVZkSnt^$zIg zY*~Rguf0qapytKa9wiRXFhzVz_SAZ1XeV(ug-Jo4*l^R-akbO9t(rleEaxP*b)a7N znn8>04lb^NuVtNiu1U}9F)f#XLI-pK8>RV_3ytRk(5h@n`o}819TvgiQ@_9gMa1xXFX1qkvM-q88xFXQA_ zO5sqle~@P2tf({PfTmRpe!<;a`U#BV1IO34ZghwN*`D+(_y7oF0YUKNUCA z3Er3)FH8&!Pr$m)%QvxW)m)D6vBNpb?Rv#}9G0Q$m98?qI%r`DcD_TV%y(<(%bcxW zM(hO-fV9mj@E6wXXHjIMnNJ@5?bS7Ymn>uQqrvFmrg^iyjfKm$g?^_vQWr}8#JrKF z{UnnBP;5)0bF+HdK#B8Wu4@=7wNv$A@eq7&xJs_I$)a&xt6+ap?n8jj@enG$fr z*xKnU`O%`nuw}GttJAu*Uq!~Lu#$HR6i<Yjbn{qrNq3PEz2)p zbl>IIUJMi8k>B_?j#wOMg5b1mM0CMpcgU|G2xAxVDiMVC_JOHvv^QK(g&JlyT4KMn z31kkI0zT_u;3tXg20erm7x?C2)Waa)fazUlXb9IJMU&Odld>VmslvW0EbbE_no%u3 zRS=11$j8iUfOvSWL%fm`!^Cf(Oz?fp@15_n0_107F@ z%Uf*h$JMsa?$7T;VPz8|?4@#p8*b%d2&FuFn7wZB%MtkXJq-;FadC0rEEFaS8Zv-=m^Cx04t?c}G(Da!yQ4kl~({m6zX-ZVt7IfSPTF!lhY9~~W~Em@^P zs|DmzmheZ*LA!oYG+N1)uMtujoh&pcgp>CG!UE?VP|4qj)^A+v-+z5d0O|of-3z&# z^?Xr%sa$0c!(&!i3cfmV;pgkI$O0CzJpxj*(lP$oo#3Y7-JB#J{#st19flO2F8po}z%GqTdYHI3PkK^geSg^crW3-cfREt=%tbSGkd*CDoU;HHCYa>)Wj z0U{VA0({K^eD*_!>{tN_f?hLh-Ra_?Z$J$7iSL#%D3K8M{v7l<_ixh`dEa{-5#TCf z^)&TIh_VNl$W+#tfXFoN;Wz)u@Vog$NCA0C63!A+hEt9MG3{3tdanhHdac0H6-s!U zj8oQ8BN<>(1yLcPq54Rk!|Z%$IXAqd+;k${`?swj66%W}ON;d2 z!M4+u>4?`$*hsbck1Ghk0b=-wHE_G!zbpTjYTMJ{KQ!Fb1f=L>HJN5~D-Wm~VB(qP zm%rGYR=DBNWiN{u-fFka;(!emXC?4LX9M`&i0k79&s*n^D12i+Or?f09ss1L{2yYz z?YBOcH&UnwIss6f9$pX%dVZ^{1n5JRmB%N$3p1DNNq{#1IAxtYTk@g8<%GZkdEWhe ze7hD{kl(3QmK5jV0bs+UwciHm|C5Ub^c(;OnF2mXMiESIX=!-}E(~HAu;uzj4v2Uf zv-=bHRvB-i0-Q2Kpvh56s&iQq&cMKMbKx}R)kiQ6DH5U#^(Enhf7|o_{>F!a99ZBz z;dmTXd_u^?)D#-RzSAA)z9l)J7L%wXqPN-zZ*N~A1wJ$Lv3@NAb^ux=mr(BL zAP)KinW~dKf8qY8T-+aC&_0_?wU)|$cB4-gDF1ry@@E==%16Xg4#}+r%Md#b~c=H zZ-chrL)l-nvAgAySS+u@%>Zj%rmpe8@gEinV2c8D(Bba83&7ybqJ@;&({q>&rQjPw zV*E0dSp`<1##tr$09Jd$Qxg$kMvCVR0Je4FP+ayucb5g;jREw-zYpAglks;d1cQNv z6RGE!NX#sPFtowOE#fFOqA|;L!qh#9pV<8M$=A9zJc9jfia3dP_)WN9Yv~^tkR2|I zfSAYjp?7E7;RC*Lc^LfTV71y<{7p1Gw8|4a(FLQ^(u~>GI!mquA1Rsy03qFzkd3-J5OwaMABw}W9xiG zX6)udwb8$bEPIzg_lt@pV#(tCb zd-jGeq8A{)=IC!nxxNNXGcW|Z{$ra6iQd>y8d-w}H$M6OUqvIwaR{ws+7Y#6SXxva zH{mnVgbb;cC;fLatuZPe5`Knuq>0P11t{XD3;XuB@XY3YEd#3=K1i-8`Aj9vidkOA z#~(B2yLv2wb()|xHIvlu9@3d;FmS9#HU^{8DmRjbTPz`6NHla|@ar#CUn52?H#EyS z3aBe`d;v{aH$hST7s&csr`d1(M=<+~E`WuQjr$up0vtKONilJPUhobzy%#^tcBxXu z_9#E>e)xG7hXfNiG|jF(;e`oS%~n075#`=nYH(Eqo8mJvGc^g)bWJRW4CBxF>}xrE z(Y9&X5IYdA;0U&7PHGRwBaL$Kjkl^G-28`u^|8E(T{L#n-`yl_zp>vMpgifMmW6dF z(-;DR`|J_4caVC3t4dj|_5#Fvn-}J117z{zb|ea6V03-C)t_@enqUDIJ#1Ow9&+27 zqfU}C?(ee5vGSQU;7mWmW-OLX$lwxx^ zKI&>RpxB7|(ci>%&}hOj!$}I>o>belo5aKXRu+w;G-3k-Lz}(SSlua3e7ocf@O6gh zA?yFtJi{BNF`D=y@{Q&({(D{HdY+Jo=%m%Hh0`B9wNl&i)o3n5NOa~AO?iX^Sqw1z zmYI>O(bA}3pf2`_ohXOA76ijb595;ReHQQ+@|Is(T6kP(`*3(T`$V1hCX|rX_yPGx zD3MJDNG3O%S@#jD_jlRfq!z6xXf+;#;%E^Q^b|Mprq{r51x)o(wQSP}`ohJE^2S_A z5*Yr&8h#G}ys>>N8zl&sguK?h95As`FajS@Rz2}}Wb+m95GPgNG@gIh<|1}rNLJ{^ zk-#NI8>s&unW};Wyr$>5li^2F*mj4JIQ$<0r*8Vq?IK_Hpxnd(I>?YXv>6kC{SI9n z92t40`AqN;VyLpV$j%=VV3jxG;|$;VN4$`KGXZn1bR0mhwZv0!hD&N|Yu~USU^0IP z0oyz}Q!reBqDmJ}1pDWn2)-ezE4=3-xzSYjhyOjPB!!(-Ja^oFh0OjE*21XyY3tQG zL2iiP7xL#+18V_g2EzjObJ8mdM`V38Kz^uOiHRBo z)=*c6dX$z-{@9Ot1Dduh_{zJXkqLEO*zT}aA-wiH98XN{kx|kd?3(g8=>|fCbT`h5 zbPqj6yX2Xg>!n6c5M8L=K2Q&tm7$Zd8iK2M98&B}w6$w&)o2 zAED}RHb^DAv1t@RTH0?*5?1Q1iKpvfR)sHN1Ug?9D=R8WG}|?$nEO%%LAV|#x$)08 z_XXd+B%VIsIV$L$-a}r~{3d6%H!(5#M8)&`XP{i~3qPCXo&QJKTR=s%|8amS3L>RQ zNej{`(y1a+Qp3>QE!`z3prpjmB{0Cy-7pB!-QC?%LkzKZp8xmuz1=-~c0F@Eb7l^6 z@BQ}o^Nk->i4KH^^}4HAiVB|JIi93ExK8tK|KDOohzbj7NFp&&s$TQ|kU_)hVZXf@ z@F%~6FHgJ8(&lShZ?CWByJ^`Oi+m2>JTU1)oM5EQUTBRF_SR0x89b0JDl9A%ZMf}G zSf78j;d4249i&~Q<9Tv{%m@S^OHxYe+iOa++r@CBn(HUWwg+BEZzN2tR=jnGyUT)o zUp)dHckuqp?7W5m!lDVqK`Tea4Jm)Jo7u53XmAo_Zhw3G5h}?qtS8##2xtz>8kRhp zca3>@IwhVRTlR7>oVM~5dQ4B&)Kqm@U!N`RYpvj0*Rl$FR#y6L93B&Ui;V&8NxFcy?4TeH=529@6Sr6&D0gK8un{&-_m1y+HGWFnIj#R)*e;DV4 z2vBIMV6MH~T>2~~thu)CZ4$IFjTjltV8KfWt*@#(`u13ygY~!>P}5?{f-8g{l*`xo zz?-E>h3RnI8v?A2X!N)x$`6qISy8@b^Akt8yAlU!dOCDK^{~>_c`fHl-&Nb^v0@42 z%OgA=1CTV7=;U`%a{pMAj9Lx3wOPF>#DoX!=HF=;A(`~fgOZ&ZiPq8NkkhdkC=Nf@648*>zbUhM6 zxeoptKcBi~%J|Z}edkMK%0alj+B%T^a6X|PZWbATn}q2eXz<|sa1%s$I}fJlHGCDHtDOVjMWtEYy6xM+|QH^6`AT zKI_V{vx{9}yzFC)OM+`O-j1vk*qMFvF{Gn&WQu#w1U^SZo6MaFMy1I zEnVN#EAr-oUwEHuOy^ZD+_}nl(B|V1q0pnx^S#2x=Cnu1VxFcnO+BiP#;jg?Md&}u z4LBD~6P$aFfO5M$@(Y%N=E$ck3o_l_j>44bP-Aekc}_VsB->Bkp-L2W1tT1AH+`I; z*dD<-W0vw_pC7F8A4$yiufmOcg5dg>GcDeiM}5~4FX=W%ITDIYWliNxzUNf8uZMVO z2rjk`(3?j-uYyX+UN1|QB0}4KS_k)J^WXVwI*kzf#in2G~l%NA5XS2YVF*5|%JpjCQgysSy0TOzR@WAQwr+`hCAx%Hd?B};& zGQ@+QpY&6#Etq+Iy^QlBq+yW(-*?k|OIoHL73Te`CvR711gjx!oCn>A0Wcx_@;P0^y)K zQrdACJ7*G2*_oc+rc&L%zKX6rBY;Nr+rlr%tdfzL3%-X_IU!=T4(&{N9x_hBkXW4l zlvvT8JdV(l+ZoXlkIT#D6orF%h**$I`5i zg4XzCnR!@Gk9!oP9`}~~7N_eRtt^O!sGBa&K6c20R)er%V5tl8Z0^|Pj)bDEj){;i zP}}31*C*^tN1X~j7tM)jqh)=GKU5~)+h_BM`Rc=d2=@VMA_}*_h(wwC9c}TgBuSRE z#J8Nz5XO%3V!OSmvT-I!hX=|ZZnyP*AP(D*-I^d{(ll+CYY?oOI_U17r+o7N_LSC& z%-&njxCTL{h2vpa4nh>TDhb}gJ>mjO$fA^hE#ujEMOOZqZTFMeSQ^CQ{(UWsu2Xm= zYt(nisdpK%_?KiR+o0AT*qWF=u5m=FM_2XKrtj9eD7|k)@u*E!_JL={+s8e&xLYuE z*`!@i*ICO$@on1nW+W3Z&Q#aI5d^OBuImREf+~PbxSm>ew%TGS!e<6C^%NcV?o1FL z_y7k_C^F0)8SeUDOr&`sSW5Rtrl-5PA}X9?q}(Ct!h$g}lFqBdEDf%EL*0!E8@=Bq z2AqPE_f!!f)y}a+Or4;#LJi{N9Cf1e{g`oszk3f+kzD#ED!Omt^^*XcjgUX!?=@t= zTSLuwsF_OI++XzgxiMf%Y~Qk$agH)NF{_uClH=HrX&H5_mxZjy=87hV9)fK@u&X$V z6)Q5?<}J8Per8$0;hu5p5|yfsWyT|VvzcGzJYh6&ayL6bh(9arsVlI|wbg6m=xD4f zrQ#l6eR(TO2ZjzKe!N1Qqz9^tNW(@WpF0m;KM<|oNhA!~VT>#|B7Bx2#P)59?gn?j z`^fQS^MVWz(SYl4S{GlnP6rak$?!awGZ=i=BWP3Je7S#OMZSynukbk+AC*RAJ=aG^ zr4h6xZ(v}CKv6)yB_k*Sl>kB+qOQPiL8+grOH}k1#EZph3wX*ida}Y_O*1Zkao8T`C{x zjy+Y8@OE`DJ^w2wKnVg$7MM{OL$|4)5+Dne3c#Q(_E%f3{s^y-|prp(gTkd3z(!0>VfA_a?wQ9j)tAV$~y?#jxsg|BOK96n_&W@{CuJl?;* zN~9LSR!*eFD(@=}KlBw?Q|BY~=P`x#&wzD@}!ZMVFht1%4&KARIVsRa(4>$Y91@k!W2 zo}Gj5hLHe)FACme3ur@r+io;tQ2t+a8o>;;K09 zr^VCh`TpE^25Gb64UbQo_uXXOTq-_@H+&CviR}@tDu^~A8aw?t&?lrf?D|B7Io5eO z>ZQWPX)DLasW)YT018s9xKjitNf{l>qV%ypwpGuC zQK$en3xTGc%V>X;i*2#}jKwTBGgg7=@^4rgjDx}_MhH0X1L>dH6JR*K=etar=f1!* zg}g`E91Xwyi#37b7XT`*ndgRy`Efx(x4kExM#SgL9~{=`yoW&%rv4pF0`LDX08DNH7^n_Gh4Vf(oG*s}kU`>3x+sJi2qW+bA~F6I zW&r_(APQ2@iOy^RG)YSwHQx3Dzt(9hia9DVJ3&6j+Zm`<0fX!4i?(5C=`njK(8}{7 z)9GIU3XlaU0Y73@v7`^=XRj+!!~dT#7U6przfDq7y%AHTr7vNz*&|!6L3rZKg)U;B zyl3742`{goWa+>225Q9_6tv=k{OJKe2YGalSs^aY&RgLA#cO~?Ej=9Y0y5WufxW*{ zJ0+;f&MVFWf8Z}vAJdopXRzIG4pqM{<{kxf80!8{Q=4VQhzZ1Z{f2ZB}a23Fng>PY8|I#qa5P&k%mK^E;sTE)Sfz|xLny*Cf zi}Sq(qy>F(3H%?Ko@@kovp-)Y*#`&#FXYec!@3mI83`XbUfwz`4#Q3p9&XZm27{k% zeVq2)KM4^jT)@vfy`|ye9Gtj3SDs@SXhd|EBXL?Mk;EyI3b+vsE;lD3a|#D@qp@$+ z>-~W{(i!T_eeoZK1fyz}GEXJ`f*hJ3f+50rq~*^*TQ>)(3Q+bm-_rUS zC*+M=!-f}djJ1FWr`^?yJ+Xyjeq~wsu>ls>!?Zs!M7{FerB!DIDA4L{wJ^ zhmU3O_Hek$H39bK|F+>lQ5vuyEYeTiQDEq&7k|d3=%t|OA;f~p-;6dl+pp=Zauno( zB$zALnMJ&BDtmx$Ai`#0BMUKsZ?fxA1%|ny{#?5MGBFS_Fg)IaV9^ValuBw0%Mv=M z6-jCf`V{$|mu(Z|W?dttckk^0w%m!L`V|8Mm3*da|F6ebk(n(HqaO`0?En{K?K3(5YdDxth9f5Soe032 zywJb60Bkp5J|>7SM}772k*e|E-GP5hzEBE4q?GxVTq?k7^FH~jtqmRUkM8$_=Rkm7 zR1@$$`gf85)QbQJa!cMqdK5^I(!2j?DBxPT6#N8|-lns{DsEm|O`cjjx`?0P=1&z_ z=$c?W7HE)l8FLM9m-CsHi$51%*cX)teXif8HJaixlq0M3lKmKIS#LeMxV!;0IrKkdLP>i%_8&F? zywBvZm+5=LD9gOp$3di>HWf0T7sRlE6%bLrGx1bibq~#G!xPWVv2ZdKt#P9ReVQdU zg*Wp@!rEH{mv^3CGq@!P4X^rM#NkUVn8o=o^{Y0KIsY%_I{0^s?Q&ovu;Y4W>aG`DD<)t0{4@FAWezp!wSIb=s76UwyR!Z zLG!d?za2lHl5ZWXMy@Aj&wt`A&r;sCVAp;BBribAKE$a?_8EHdF#%u=?+31;1Wu9k z@Ad&G4>f3v*RKo;q6%x5%@8F3EnqcZ-a}|7&lx}Xv_&KO$o7+*3FV`JJZ^q_+P#&Y zx8vNu3&(&t>6wdP=UxU&ml4ERjz)PkR{2WMq$(7J+Nii-L7;O#W*KK(Z(B! zWyEeFwy`zs?P%5Jq3n(}-CNdOm^RXabMlN%wSSJCE>+cq3+SHBZ2g8J!{c{Q&x^8dmOFQ`c_>?VYJ~83e++wM9t5nMDs&T3- z?mSZQ#L#EGH2~TcP`g#i_>{1fcBK4RHeju-maKe)R#=^lKu&I8PFuS{fG=ek)?kyK zrGzd$R*f5~Fu=yj&gR7*O<`$(cUsy-<`~iw0KJ%+B8#4V$6Ms$V_;$6L+_cV;(l_w zKY4!$+K>dVS?;|Z8nP;v@1dx4i8CP)t^69^Hya=O9smiF5)-_Uqjza}-Nmc!C2+ov zAtDxyr$n+_1)}AY@nuW4g^)w&c5Z%6HMrg>QyHQ3T!9^@HI=-9%mH-Y^jZ zs_HRD(y@I%+TA!@u~nDp%h;8b5&4cP#|fQ@zY5^;O0 z-{jYw%QGXM#q6H*JA2Dw9cP%C#%kQGbjL1!z^=eHF@wd?--7cEY>>;->8;A+8Kp$T zrjVk^`P(N`Pm|&sZ_p2RHA2V*AdRIZ=aCqx4y7}cJpyoJJ;)LLFF^zQq>SzM*-lmvc_^D}}N~yQ%J)%^0 z-1GEsYQ~W9&VrBDRUni*VbA$8^;bf1OUKe}lWY5@>z0 zcx&L3{O#K*u^Cp+#GH*jFkxTjww~ECj4@Se+;E23`gQ*1^Eu$H(5s z!;3Wm`nvN%S`|1~?}pu&9RBGxpm_8xHZQgzK;HdVJ^wJjNqqx$!3gE68_# ztKzg+TMxlsm3g@Bc}zw8sM@q#+C^!Woz*L?@(DaVmZ%tRvZvSd#LTob@g{Un!PJbH zn5dR@voi*-IZg?Br7lu=f+K1)IG$7(FD)iQv`w@T#k{^yzXP zvCmp`>Zr%K+WBayxucNPPK?Zs7NGDwuf(0?!unv8q^S)W>WQ%)v7KLBaa;C?#j-zs z3!*=5YE=K8o4}`e4RQz+%&yje|FC+qFXZw|&|+HqyHVV1u7TSptPpMAB=&yxa?$4P zxQ|-IDV-fdjkz1|7j#(_`Fhxks*5;o3QEksarK4($3HM&7&5e**%HROGZ_B@oIg|x z>v&|UlrML|P(n-OxVLX@ZAxkVOMmK>%Nt$QL$ZLDLTCWq(MkgrA#sTf1UGK{nT(@b zYr?Lo-@-fWrdvb{Hi}Gf9|;RC-e*j;wG0nSVxdHr17~ug;Y|u;-YAYptV%F9AtDxQ zzG@J$8o1EcGN(XvP<(Y@f<7l62S|_Ev2AEr>O(7}Rz2OMT*sM-FPA`u3=41*Lp3uJS)v(L*30vaWkAp^NJ9r^M zUwP>^Vws|1B;wgM2e37ZN6ubY;#@b#em|?lP}*3UiLp#&jl3jTIWq_NWGW_E>e)EA ze+l9q(6rnVq`tZSfkX!fwi4JQ1D@rpy)dh~bchlv?5Nf7NGulwErg8PJl}!$G)M^Y zU+^_n>yR_pbQ1&X0R0IQPyzOz9zUSvJ-OcR^%Q7}s|`DtL4q>AYu;@PlWOXiTA7m3 zcz}|wn|`k>YZxsBEoU_=HcOV>E+8~pJH|}0A4}uMY3Yar*Ob)Nv+J*lik=;&*&P`X zLuHtyYQI>6-(OE+oO~RR&v^QaAU}(aX;^RMJV^N2Q*G9;W=`yBTaC8GhSkESodg9kb)u z`jQuOlt&0eNy?A1Eaqy=RS4cT_6JNRdS z(=IQ_CjqG|1J%aG4)AI;Tk2B%$|s~1>g#j~iAuftP4twNsWGg-h*l}dteXDsUI32e zV9D};g%GJM}()RdmPia@~@+yW2^u=_gafa z`Gx4o3(H1XSF=%GXbQt^%1jg45$|_6PdCPk9W{=6s_4Cb)-%WWPX)V2IaF&}FV!@eorNX3T|3cy1&XEc0}T|vW_X2S z@knC4Z*MQ|8!WL&kXK6CbRsekj3qa^H6;>0SW2adK>(3DzK~FCulz#1Rt+12gKMHS6E6oS@8>1<_*hznIgoQHSy9$Tp5Ha|Ptu^q3xc56MjKb!UyV~*j#|R5&RIyk zw6S72zJPPDx7jCSEya`+lVh290^0C$fR)jt)vt*xgK>XFuUsTdU1+tOrKs=5y{_(2 z%32l70@1tgq=Y@;a1h{Md!>YNX;mF(F5TT7oqAFu0aABz=9aPiSZ^F9qruIx^Gx08 zY?ylj8KcKBn)Ybdv2k6An$t6hZq%hp*g=N%6EJ}n6Q_r@{Q!3fd@tdF_RH>a>Bb2b zBO_b60iTlBSiee@cfGV<6pl#OR5(AfD&-jFo{AthGB~O$-R*5T8i*~9;5_vHa;=^f zBaan-6&m=EF(raQi#bK%kSynTjkR=isU%R9%Q(rWMq4GlxQuXAbbMiHg%6xE$bPUJ zVItY#QUCK{Ee7Ff~c4+xf_sK@=w(M+~heITc_bgvxc; z>c_aZ3A$6NXsRct`LIw9_SEmb6lB=yH;!-^^h{}DC_Q#^EQv7R51q~i4^()POy~Pn zEb72_J9eu^Ao$-QtP5!GC|^zzE^gsb@TG$&+SvoNhwKG5XLYaCb0=Hx=|HvnanE(K zaIyAGD{V^3Sbajk-3abRuSWskJpC4W6pl2?^>>r}c$wBu1PBx8(!Dh2Mktr5)Ok&t zX1*C?T4H4K+z_)v1cd~&94!Zxmjk}~n}$H0vj_vrb-~BVpn_-$?s0W1v zeCrj}HRJ1FM*Gr=iX5;&%6{f>+rofkYAx#;Gz@)i( zJF7LpHdh+?C+NdG9q*oIGH&smqk%^OGsn?f+i$@A8nH!0<8H>JpFZ3r=K8MO)H@jB z_v(ZC2jIxz)3{>zTfCF3u+(@B&EB&pT*I(m#DOJn8974C*J-s;x+>(19P89HQZGpS z=L1%aL#mlh>~4@={`bd>Nu3TZI}N7&ZD0uHreLs4F>HaNZ=jcBR+pXNO4ZbNc^CWm z`T|HcZNub%69IRB8D`qmleaBhY6prcK}WrW<24VgLu*dk^BrFx?zzi-D9Z5%&-C~J zx0BPRGO3c6Pn%@IKDjYwh*`73RUpP=^x&NqKIWDiI9{;Qzw@V2YI1&zB1d0-qo0UH z85{nyI-&~9-x<5gUz9P46soyt#pG6*QVLF2c!bzId(g-Tzn&2~}!oRx)rm!rEuc7;mM6ZD0w0F^J6AJoa~XGbj>$SSGA|e0G>jJtIw+COsIQ%r zP_|vJ!)|+{<7>V^htsMKZ;jbSe1yfw4OV<8AMA`+r*T#{=gZH@F59w+Vzs*5c3aG9 zOwEo{`0-uF^c0s9BY*vo?VHL;-6p1&QsTiWND`1 zQ(Em%$g?6?h(h?3w8L8*Wg=xRc4nOuyqT2^yIn0*Kb1*5E%11?p4A_br} zNRh!;N@zM+)<+mR6w>;*r95p?eut;-^%w6-vb=s&(;(jw8~%pY$(M9Wz8vxcT09mR zkEIl?pBzxc|IYc4VPLdulwGJgSV@i5QkFRcX?k0$ud#lh!gLjSkun++*QJDDnZ`z*2jwGg4@PNlBPz403^vrO(Iq>eJ6(hr`Ww6f znd466mSS6W-tZe4SB~;}+}QdmIA|xYR;Ns;(n0!M-dgS=7X))?lPNbzLg&uF1&lIT zK|KkYgQ`_sZA!y*Pg-JR^im%BxwSHmgqduR&NZ{u15s&Q=Oe^}9hVoem7X~#>~kqY zO$X)2W7!opD!`TuhWl`gEUqljUSAvg4BER{^RG#^C;@I8;1zA;^DAQzN&mWNVvpvm zgR5EXDg(793U9LtPt$iMhPAff%+t^@xsJ@BM40Y{HLCFZ+UDv1Flq}MA)*3~FjQ6g zJx3c`zd}TN%hKfLX+&&X+(rI9k-~oXPa=k5+h<8SM4!JWY`+M2aU*pp-t^U-QSc@F zs{G=R$PC9l@mXy4O>=XlMAI&MW5q(EK-*~CplrqaXl6)v$9^_EnPWDU%!~y-QJtEo z!OAL!_x*^AOE%=V;pJl-NsReKt%gR{3TgePHlB>uueA{yw zrdJz60lX7$ZBOf_DSjjn%%hu_TYLJ^CKoMmrl`NQ#Nd(~>o3~BjD0>%MZS^4-0ffVU@8L?5OIu#u^p!9wi`HC z$V6O##*ed#7o_2uPTHyKEpb4YN%)&Jpsl}SjqS=hn3tJ#fa@&Z_S>x+%+8ay|Cb@D z>aBgM4&fp+u_;G@8%dmpl9qvLFJIyI$cN&kF872zKfmhrIIIwjamE*ZM|utHMEfgmAHr|MhxpbRHwU=7C>-+f@lJlfUCIRD5?^mw2i1AZ z-Ks%d?KgZ__HiupdRzM@>@aYl|I%*nUZUm4IMv(5+Az&(9-)Vtx(`UpZK_AlGzGO0 zwX?c&ZMg$eMGVT%2?w%h33pb*6dj66g!$;T6Fn}zl^BroBU=H0CzY^VhGkqm2`sL{ ztdi6_q_FLYPp6#Xy0stba@)%lDF-v&at|F6)8yYVtWK#S@K&w5OG-U`^L>tPE#gox z$e`!zTq1?o8wJOy+P1ZsW%Rsyass(%vK(zIYrlG}SN0d&9j1=sI$82qHvEZ+f~jOM z^FWPjrSDUjRvz~L-an_U`7E#;As_M8je%-)$;?0a*IrSr&^BBJsOWL0b@#Im9;J1!Rh_V(Z z>`=+TVmJ=98P%1;c~k1%8|hq_U9?I+VOCs7NY+q)(Mntt;Y<%{%T82S6C*HVouQwy z?VsgEuK86ZQ^~S9sDGR&YC1#aNna?Z{`B52!`5NzB&f0s6Ol_g-m7kUCEa7JmDZL} zUd9TNY$JP+7NL-^Blq*bt)^HkN+*4m=$N}cjovW{+hip-SJ?s5Dy%e`s=}Y8ffd z8t(dnZeWcpbLCdd(~N9p6ta(0;Zg#{y&b{DfnvjI{ho|xy+}D3Ji?cvX2bN0X*kDM z5aDhcNpiv(;@zrkeKTvGH|ww&#`UTYk{QFDSE9WImV?3`4u4R{lYxOSv#29Oo`K~a z8@`Z?!@Ft5@Ll{|oLadsUUlX|F2p~BSP1S!%@}zf2*v5{EU-O7^ z%^s`=r)jnrmOy=kHdld({6&=M>zugilOdYf)9V$#W_?fpbA2b?-xvII zS(X{>FdDB$O`8Z-h#x|0bN|>tPsp2 z0#)|wu5Y<5>0I}SSIPSLNfo=j-^pDp2+3&_GZ{l1mWC%hWU8nilTd6<=e=cG@U)bo za88Rz^;N#ndh74O7|K1}q)pbiR+uxUik7+IeMIH3oKq2<@q>Mj*~7@M$AOdckiLxk zciW72qU6fWjri5T)6kbqFDkqk&XGc18{lZS*o-pwbn_I4Wb0oD_)xKzl#i&O-G^u9 zh93$)veV--EE)W0j}v7ezG%P~)jc;KOf&KKqDAW4`HkNUiuOM6#mTmekZot}58!cNLjbQoSRy zhD+a1HA$o9KPC%mbFOM_5fks8;Cpu`1nCZ`K8Lg~wP>Nr!JPv4s-h$%fbrh-S#|%P z7LTQ5ndLI63>==1Wm}kBss$`pk})&m^FHL;YE#lx`g!YQ>mVm0VbTp@YSHQIwy?L?Zo+3du0#CBnstN zOX6|9@qECDDUGjOYIkT6l5{t`{9z|h*&0)#PAbU=sx?s28fHrSZV2P8idnFl`z+0a zHBVG)u^&cv=Vu_e`(Ya!uIp(;c$%obk9`-KLXw<&V{7AnWdTLdU|vj0dApOgLouikc~EWD&QG zxhm5BHRd|Cuks_Kv)0^Lh<(%WE6z;|SVK6fH$8Whs?Aj{G@{+GSd(mK{Y|XdpxGb% zvPfy8DMN3Qb_9uUtJ|Ttp7|wN{8<6p*{P2vqA8-YB11sJ^d+KDMI}6B863gcgmL#pE#pj^ew{y*9EWc^nwlS8bB<3Bs#I z{@;7X0GN9GJoq=Tsi!&c{yXPk)sCtt8HzO(=VJFd-<^+BE6gmzE$ZO)Jgcn}4t9RSnJavOh%rZZ{gp}J8EH|`B*4meX z8nn=;aGgyk>6ZQ^GT=T0hZc0L(WN@XsDWdIV%0I*P;B|@<$&6CqaF6w7;=fgU9GOn zjF-GoGAyLtjdOBvm)a_ou}WlC|27Z7XjGq^=+-;WxnuT;W2fl}#h*rvl@d`NUb?R0 zg*z9)T_31YEIpffZ)MINfX^O~A-u+EJx2Bl(uy*jZ_{Gkc8y9e;c z=MR4nkup8HM>2aVbPl^RuCu@n3>dw z3KpZneVIjhVC7s1A)Cl`w3qc6V|K0{{peU5ljc$Vf=7iJWYI$;vKgZ?z2gY4%iOMY z);1pFSbBJW_`8hG-ZdIS(wEiMJ&J3zCXZCJEj#CAQgQ?`NQ{3BsxVX};^VS-4mU5c zibxZonx(-^p^(*vh8Sb}=GzV_|VC`Rxh?d|7jDx=~cT z$9nH({%#^|zgthGWe9E@a&+bsp> z*^6hLL+Ru4S4JDdtHRqfJGq34mp!Zvfb;}u;AMerQ_*)0cl40*n6Sl{X zr|`Da=HsgE%%E}KA2>yBuXGUeH9wxp(jl{b|G<0iu>AAQVe_WDiM1W9!brT)_R~i` zQhb>=A2Sh4>9cU|26JKVvEPS_RHDx2;`XIp6QQ_xjI@fjcP0NZfV{Loo0{oeKLOyA zi?^@A3^vZmDzH&ncRl7;Ut*%(HwvYK`w1a7b3=pM0z;ZdujBg~hx) zm||luY!p>tjF4fq(WAUNqUwnW+SAKvt1kydf$WFbk1?~JL&|&wct}YQk?aF{NQDRt zbfHw^-LC8r;(IF_3eJ_TPAP(7lq6LAta!XdX}RuZp@;8yMJW>4LnDy4lLuA@g8Iqn zADEZU&ue_s&-f?`>zOB`<(7N`qMkNHd&kTO^^T8o zJ2&u=lTe&gx^j;dnDkcILvIgtO@sk-6L&3-u;ZN15uWDr_tMe(@g{Q5?TjtNx#r8<8r zsg47)-S#$R@kWZ;?uH-E2I5kWkr_auffK9_W){eC@4v_3A0D}Ry*SV~b5Zi0g8cf} zBF)8@B5J~~g!BufBPa%0y3*%2)O>DHXL3S}vtH9lzo!X*cFN1_QiVj9L~A`@GWtxS zOLBIM9CdZ!PN&mPT7ZXkN!|8Jx(zJ4H3O@_IPVd@@bKmTrz^OG5b&2(k1#@k$&ya0 zKOs#SBc!ZPE=sgbH+;`AOazoKxRXil%ngTF^mp3FNKFZ@VA$WFBr^4)XnB|AHq(q+%9!3_}NkrWy zvtUcWbDjIpYLBkvl!GwzKq(DopS6>kY>4V*AX;XQ+hrcRXCzUkY+76WCGcz=EF`e7 z%xj@%D|uTNet!1uJYB(jfjsV#C6ab;l0VrF)v(@470WI#&$F_LxjXHwyZ32TQ-a5& zSEIh1%V&ow&)ig)c6%j9FH%F9-`G!`Q=RC?RU?n3aFy#x+P0lYs-14od(k`tm0(zY zH(;Fcunj^8oaHw!#>|+Qc~^B@(nB(eEC;`Gub-2~pY0mp z@>@AA#$H|LDx@%%LbCpdT+i0~Ue}^f*&`c?_MMGWWSlH?TaQWIz5~Or8H1wxJ5-Bs zC$)X3{jW>}@Q@|M0RIrd7zHT)k^L10t^gs|?uL+XW7J0TxN}=*A+zT3EbeqR%;J?^ zT1Dp=&1pr=YRV2pQEckGi)OUb*k#>Hlv!~@rni!YoRxxt6`>qkcn`Bq^-gt^>wrg5 zB~jtR3Lz1DU(%cVlEVz&W5L}{&%hJAjC>;{u3TXHIl-$%8vdX>2%9EpFDS|@2qEOlvIMc?rzj} zMOKBgN{0T~i7GOtkAN_9#n4^uovPR9Tu#Ao^ZD%R4!-SUa zHFJs{SW$QJQlz^i(j~iI+>kE{scHmDV<)^}rh93ns8SVAPOn4y)Pq6tqyV(^wgJqn zy^K%3_t!@PR-u35P9)IGZJDOtj1R=&4S(Wr`g|ZDp&QsY-`kH|RkMxA zF(@wx1C_|KZ0o6UoVq1d!L)b_op~@fcG99SVDn=KvyT1-S$mDz%7IEvYs6MHr zK^7VNKt#f0PP3@M{9CeSPtn4~8dRdK&T9#bUlO>GJ9#nB2sMtXL@UgCZ7J|Eh#R30c|IFLx2y&X-nQc(y|@@xQYejgMyrWRyFVNwb3yYXGsmS0 zcT*XTcQs&-PsSrZO`5H}NM@~83?`q*uIc!utf?ZtO(Qnrq^cbqLr9!o$fVh)-%+Fs zZ!l)&D6aN0Z_cCdtGsRAAd3Q~_*cYNau)WfD8$%`^_fXCS4F!?q12G55~$p5PVH5q z2Kv+xqXXtL!AO-V$NcZ4W6RWn`By3g3HX9?U4A+sl>{xMDeYazHw=Tg~5y=nrAe1)?Yq6i(HS4eDG$> zm_3qZ`_;Fo>0R6G9RF>$j%Nz)BZi{Iq&}$%g)DhqS4lvZqmYZJok2RpHVt}CGfQz5 z+H_U)5gq>8cI`^8=S}CYLkX;-?xzR|%eTRNvb9#?Xuy&5<4c@0W42l%hhrc$i-9KOsB_G>P&_Bsp<_p^Vg6hlN#LdsiHIQC*LR%m{J zf5#?ZCtT&^oNXBLdJoSDS;;M4N6J`SOn-u( znTURvL*xG79$PW*kQ`vGGf~@ot{)fjR=wdz(*hNV$SIdm=s}LtKEK#OuD2(DIxpR1 zPq3B8wO{iEUzJ)eN7F+zTjfHnH>TJe1g{ zY@txkeNx2-{|9?t85ZT*wXKK>A|N59q~uW2Af+?|12PPq(jlOPG>8aDOAJU$3^1g0 zr*t>c(gM=m-#wuFdG>d_KfXWTzt@AqJwR*NStUYb{Z4PJAT`VRSj(j>XVag9HDk5_@hZ%|Er{H@=Pf`A-9{=TWHWl=F@KU7#|6@h=v_ z8cD7G!^4CM-a$}Lz*X~j4Frx5UG zA3jT8>tG=CH;Zg|D2HY)i=gEicIgcbAC&*)kW5Z7+WjE+WZhEtnpSm|~k z)TOK4+8cU6sV$<_|6en^3GV||7WO9%_Nl$Nz5I zUf{95wd*wcTLg(&~#)-q~JXruzY99dexmwGhm2rHJRy~7NBksiuIKLs=n%< zz?AB95CAV3*}uU?!A%47e=c(DJ9#AzKNJp_tl#kO0?TixD%k`7+bk%jl=&}Cx-`u1 z%|!$(PxCzhn*Rgvpk8v_N>xO-infs27dS4p{WgHJAxZr*`J)`5AN@SRRr78?ry}+aHBT zg=$jS{_7_hO3>0ER}uVuB=`E46ayU88HqQ1K>lY_fraW*q6D7csx5G5hv;V=<1Q1`{ zU@m^c7r^pvlf?h4OWVx{GN}HEoX^Vdpl+o(!GmF0Epl-XL@+(`i#Yl~IGAr;WO8H# zc~K253A#|N8F*(lnx2NOy1w~(qE6U6Y>54tBjxI3T|7?OG*Iwgu@W5i^GNWN(nI>! ze|JLvdIMG8SO4|9F>n~KA6y+@1O!>!Hv1+=)e{^Doz(^0tu$3m_{ht2eN5o09C$cb zHf&Ye(H*_Bb>~v4|1Qch8T%`ky{7DNlA-R9(bO-4m?-^{P>;6z@Nzy|3v2MZxoVGf ziD4b(@!|AT;Qq>SS(u#-GvdyLiz&5QwN@9q_Ei(SKZ5w}5pa0#0x^E0M3&$>j$#2L zj0JV0@8=V&4~y#2)@tF(4kYIW5;ht?P!D=O4n?w=Sswi)vFɽihAZp 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 z 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 From 69081ae328588eaa5f6d26c9de99e2b90f95ff01 Mon Sep 17 00:00:00 2001 From: GuoQing Liu <842607283@qq.com> Date: Wed, 5 Nov 2025 22:40:44 +0800 Subject: [PATCH 11/16] Update docs/docs/configuration/zones.md Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> --- docs/docs/configuration/zones.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/configuration/zones.md b/docs/docs/configuration/zones.md index fb621d8ec9..df46f42a3f 100644 --- a/docs/docs/configuration/zones.md +++ b/docs/docs/configuration/zones.md @@ -62,7 +62,7 @@ cameras: - entire_yard zones: entire_yard: - friendly_name: Entire yard🏡 + friendly_name: Entire yard coordinates: ... ``` From 4478fa42171196c0aa08380ba1a969163dc17b4f Mon Sep 17 00:00:00 2001 From: GuoQing Liu <842607283@qq.com> Date: Wed, 5 Nov 2025 22:40:55 +0800 Subject: [PATCH 12/16] Update docs/docs/configuration/zones.md Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> --- docs/docs/configuration/zones.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/docs/configuration/zones.md b/docs/docs/configuration/zones.md index df46f42a3f..141ca81681 100644 --- a/docs/docs/configuration/zones.md +++ b/docs/docs/configuration/zones.md @@ -86,7 +86,6 @@ cameras: Only car objects can trigger the `front_yard_street` zone and only person can trigger the `entire_yard`. Objects will be tracked for any `person` that enter anywhere in the yard, and for cars only if they enter the street. -Of course, you can also manually select the desired tracked Object when editing zones on the `Masks / Zones` page. ### Zone Loitering From cb8d80f8a28019668c6e8a86464a18cb75f95e4e Mon Sep 17 00:00:00 2001 From: GuoQing Liu <842607283@qq.com> Date: Wed, 5 Nov 2025 22:41:02 +0800 Subject: [PATCH 13/16] Update docs/docs/configuration/zones.md Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> --- docs/docs/configuration/zones.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/docs/configuration/zones.md b/docs/docs/configuration/zones.md index 141ca81681..c0a11d4f66 100644 --- a/docs/docs/configuration/zones.md +++ b/docs/docs/configuration/zones.md @@ -94,7 +94,6 @@ Sometimes objects are expected to be passing through a zone, but an object loite :::note When using loitering zones, a review item will behave in the following way: - - When a person is in a loitering zone, the review item will remain active until the person leaves the loitering zone, regardless of if they are stationary. - When any other object is in a loitering zone, the review item will remain active until the loitering time is met. Then if the object is stationary the review item will end. From 79f0570511bbd4fc309ded5690f294e36e7dad38 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Wed, 5 Nov 2025 15:42:46 +0000 Subject: [PATCH 14/16] feat: add friendly zone names to tracking details and lifecycle item descriptions --- web/src/components/overlay/detail/TrackingDetails.tsx | 10 +++++++++- web/src/components/timeline/DetailStream.tsx | 11 +++++++++++ web/src/utils/lifecycleUtil.ts | 4 +++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/web/src/components/overlay/detail/TrackingDetails.tsx b/web/src/components/overlay/detail/TrackingDetails.tsx index 82fb14771c..ed60b8164f 100644 --- a/web/src/components/overlay/detail/TrackingDetails.tsx +++ b/web/src/components/overlay/detail/TrackingDetails.tsx @@ -32,6 +32,7 @@ import { Link, useNavigate } from "react-router-dom"; import { getLifecycleItemDescription } from "@/utils/lifecycleUtil"; import { useTranslation } from "react-i18next"; import { getTranslatedLabel } from "@/utils/i18n"; +import { resolveZoneName } from "@/hooks/use-zone-friendly-name"; import { Badge } from "@/components/ui/badge"; import { HiDotsHorizontal } from "react-icons/hi"; import axios from "axios"; @@ -73,6 +74,12 @@ export function TrackingDetails({ const { data: config } = useSWR("config"); + eventSequence?.map((event) => { + event.data.zones_friendly_names = event.data?.zones?.map((zone) => { + return resolveZoneName(config, zone); + }); + }); + const effectiveTime = useMemo(() => { return currentTime - annotationOffset / 1000; }, [currentTime, annotationOffset]); @@ -703,7 +710,8 @@ function LifecycleIconRow({ }} /> - {zone.replaceAll("_", " ")} + {item.data?.zones_friendly_names?.[zidx] ?? + zone.replaceAll("_", " ")} ); diff --git a/web/src/components/timeline/DetailStream.tsx b/web/src/components/timeline/DetailStream.tsx index e8d609cdb3..e7950ee4dd 100644 --- a/web/src/components/timeline/DetailStream.tsx +++ b/web/src/components/timeline/DetailStream.tsx @@ -31,6 +31,7 @@ import { Link } from "react-router-dom"; import { Switch } from "@/components/ui/switch"; import { usePersistence } from "@/hooks/use-persistence"; import { isDesktop } from "react-device-detect"; +import { resolveZoneName } from "@/hooks/use-zone-friendly-name"; type DetailStreamProps = { reviewItems?: ReviewSegment[]; @@ -646,6 +647,16 @@ function LifecycleItem({ const { t } = useTranslation("views/events"); const { data: config } = useSWR("config"); + item = { + ...item, + data: { + ...item.data, + zones_friendly_names: item?.data?.zones?.map((zone) => { + return resolveZoneName(config, zone); + }), + }, + }; + const aspectRatio = useMemo(() => { if (!config || !item?.camera) { return 16 / 9; diff --git a/web/src/utils/lifecycleUtil.ts b/web/src/utils/lifecycleUtil.ts index d672445ff7..fa9ce92818 100644 --- a/web/src/utils/lifecycleUtil.ts +++ b/web/src/utils/lifecycleUtil.ts @@ -42,7 +42,9 @@ export function getLifecycleItemDescription( return t("trackingDetails.lifecycleItemDesc.entered_zone", { ns: "views/explore", label, - zones: formatZonesList(lifecycleItem.data.zones), + zones: formatZonesList( + lifecycleItem.data.zones_friendly_names ?? lifecycleItem.data.zones, + ), }); case "active": return t("trackingDetails.lifecycleItemDesc.active", { From 06e2fc0aa0378b0c3f57334bff13643daf8a3f68 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Thu, 6 Nov 2025 10:20:54 +0800 Subject: [PATCH 15/16] chore: lint fix --- web/src/components/overlay/detail/TrackingDetails.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/overlay/detail/TrackingDetails.tsx b/web/src/components/overlay/detail/TrackingDetails.tsx index ca894b0fa9..4d0a4beb9d 100644 --- a/web/src/components/overlay/detail/TrackingDetails.tsx +++ b/web/src/components/overlay/detail/TrackingDetails.tsx @@ -92,7 +92,7 @@ export function TrackingDetails({ return resolveZoneName(config, zone); }); }); - + // Use manualOverride (set when seeking in image mode) if present so // lifecycle rows and overlays follow image-mode seeks. Otherwise fall // back to currentTime used for video mode. From 91b267a2b6cd6c1eacf7c142074960c39d389313 Mon Sep 17 00:00:00 2001 From: ZhaiSoul <842607283@qq.com> Date: Thu, 6 Nov 2025 03:11:35 +0000 Subject: [PATCH 16/16] refactor: add friendly zone names to timeline entries and clean up unused code --- frigate/timeline.py | 13 ++++++++ .../components/overlay/detail/ObjectPath.tsx | 31 +++++-------------- web/src/components/settings/PolygonCanvas.tsx | 4 +++ web/src/components/timeline/DetailStream.tsx | 11 ------- 4 files changed, 24 insertions(+), 35 deletions(-) diff --git a/frigate/timeline.py b/frigate/timeline.py index 8e6aedc679..ae4abb447d 100644 --- a/frigate/timeline.py +++ b/frigate/timeline.py @@ -131,6 +131,19 @@ class TimelineProcessor(threading.Thread): ): timeline_entry[Timeline.class_type] = "entered_zone" timeline_entry[Timeline.data]["zones"] = event_data["current_zones"] + + zones_friendly = [] + for z in event_data["current_zones"]: + zone_cfg = camera_config.zones.get(z) + if zone_cfg is not None and getattr( + zone_cfg, "friendly_name", None + ): + zones_friendly.append(zone_cfg.friendly_name) + else: + zones_friendly.append(z) + + timeline_entry[Timeline.data]["zones_friendly_names"] = zones_friendly + save = True elif prev_event_data["stationary"] != event_data["stationary"]: timeline_entry[Timeline.class_type] = ( diff --git a/web/src/components/overlay/detail/ObjectPath.tsx b/web/src/components/overlay/detail/ObjectPath.tsx index f160f092ab..7f43fb2c7c 100644 --- a/web/src/components/overlay/detail/ObjectPath.tsx +++ b/web/src/components/overlay/detail/ObjectPath.tsx @@ -8,9 +8,6 @@ import { import { TooltipPortal } from "@radix-ui/react-tooltip"; import { getLifecycleItemDescription } from "@/utils/lifecycleUtil"; import { useTranslation } from "react-i18next"; -import { resolveZoneName } from "@/hooks/use-zone-friendly-name"; -import { FrigateConfig } from "@/types/frigateConfig"; -import useSWR from "swr"; type ObjectPathProps = { positions?: Position[]; @@ -45,30 +42,16 @@ export function ObjectPath({ visible = true, }: ObjectPathProps) { const { t } = useTranslation(["views/explore"]); - const { data: config } = useSWR("config"); const getAbsolutePositions = useCallback(() => { if (!imgRef.current || !positions) return []; const imgRect = imgRef.current.getBoundingClientRect(); - return positions.map((pos) => { - if (config && pos.lifecycle_item?.data?.zones) { - pos.lifecycle_item = { - ...pos.lifecycle_item, - data: { - ...pos.lifecycle_item.data, - zones_friendly_names: pos.lifecycle_item.data.zones.map((zone) => { - return resolveZoneName(config, zone); - }), - }, - }; - } - return { - x: pos.x * imgRect.width, - y: pos.y * imgRect.height, - timestamp: pos.timestamp, - lifecycle_item: pos.lifecycle_item, - }; - }); - }, [imgRef, positions, config]); + return positions.map((pos) => ({ + x: pos.x * imgRect.width, + y: pos.y * imgRect.height, + timestamp: pos.timestamp, + lifecycle_item: pos.lifecycle_item, + })); + }, [positions, imgRef]); const generateStraightPath = useCallback((points: Position[]) => { if (!points || points.length < 2) return ""; diff --git a/web/src/components/settings/PolygonCanvas.tsx b/web/src/components/settings/PolygonCanvas.tsx index e2809d332f..307393eaec 100644 --- a/web/src/components/settings/PolygonCanvas.tsx +++ b/web/src/components/settings/PolygonCanvas.tsx @@ -269,6 +269,10 @@ export function PolygonCanvas({ const updatedPolygons = [...polygons]; const activePolygon = updatedPolygons[activePolygonIndex]; + if (!activePolygon) { + return; + } + // add default points order for already completed polygons if (!activePolygon.pointsOrder && activePolygon.isFinished) { updatedPolygons[activePolygonIndex] = { diff --git a/web/src/components/timeline/DetailStream.tsx b/web/src/components/timeline/DetailStream.tsx index 099ea234bb..4b152aadb5 100644 --- a/web/src/components/timeline/DetailStream.tsx +++ b/web/src/components/timeline/DetailStream.tsx @@ -31,7 +31,6 @@ import { Link } from "react-router-dom"; import { Switch } from "@/components/ui/switch"; import { usePersistence } from "@/hooks/use-persistence"; import { isDesktop } from "react-device-detect"; -import { resolveZoneName } from "@/hooks/use-zone-friendly-name"; type DetailStreamProps = { reviewItems?: ReviewSegment[]; @@ -655,16 +654,6 @@ function LifecycleItem({ const { t } = useTranslation("views/events"); const { data: config } = useSWR("config"); - item = { - ...item, - data: { - ...item.data, - zones_friendly_names: item?.data?.zones?.map((zone) => { - return resolveZoneName(config, zone); - }), - }, - }; - const aspectRatio = useMemo(() => { if (!config || !item?.camera) { return 16 / 9;