From 2e3e8d65bd510e5bf37bb180fd43f4906daac185 Mon Sep 17 00:00:00 2001 From: Jeger0 <563keyboard@gmail.com> Date: Sat, 27 Sep 2025 03:27:39 +0200 Subject: [PATCH 1/9] fix: card and content fix (#65) --- src/components/general/content.tsx | 2 +- src/components/mappools/mappools-view.tsx | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/general/content.tsx b/src/components/general/content.tsx index 3d86ca8..f00f6dd 100644 --- a/src/components/general/content.tsx +++ b/src/components/general/content.tsx @@ -6,7 +6,7 @@ interface ContentProps { export default function Content({ children }: ContentProps) { return ( -
+
{children}
); diff --git a/src/components/mappools/mappools-view.tsx b/src/components/mappools/mappools-view.tsx index d9ba407..1497228 100644 --- a/src/components/mappools/mappools-view.tsx +++ b/src/components/mappools/mappools-view.tsx @@ -33,7 +33,7 @@ export function MappoolsView({ data }: MappoolsViewProps) { const mapCard = (

{map.map_index}

@@ -50,7 +50,10 @@ export function MappoolsView({ data }: MappoolsViewProps) { />
-

+

{beatmap.name} [{beatmap.difficulty_name}]

{beatmap.artist}

@@ -58,7 +61,7 @@ export function MappoolsView({ data }: MappoolsViewProps) { Mappet av {beatmap.mapper}

-
+

{beatmap.star_rating} From 88e182e8bbd6db524c151fad43b3b7c1b8b36b25 Mon Sep 17 00:00:00 2001 From: Tien <53821597+HilmTien@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:02:03 +0200 Subject: [PATCH 2/9] fix: reduce image transformations (#66) --- .../admin/tournaments/[id]/mappools/page.tsx | 6 ++-- src/components/general/navbar/login.tsx | 30 +++++++++---------- src/components/general/navbar/navbar.tsx | 4 +-- .../landing-page/landing-page-app.tsx | 6 ++-- src/components/mappools/mappools-view.tsx | 6 ++-- src/components/players/player-card.tsx | 6 ++-- .../v2/steps/during-match/map-select.tsx | 1 + .../v2/steps/during-match/team-overview.tsx | 5 ++-- src/components/schedule/match-card.tsx | 11 +++---- src/components/staff/staff-card.tsx | 6 ++-- src/components/statistics/statistics-view.tsx | 6 ++-- 11 files changed, 45 insertions(+), 42 deletions(-) diff --git a/src/app/admin/tournaments/[id]/mappools/page.tsx b/src/app/admin/tournaments/[id]/mappools/page.tsx index e3f80d9..18b2daf 100644 --- a/src/app/admin/tournaments/[id]/mappools/page.tsx +++ b/src/app/admin/tournaments/[id]/mappools/page.tsx @@ -125,9 +125,9 @@ export default async function Page({ : map.beatmaps.cover } alt="Beatmap Image" - width={0} - height={0} - sizes="100vw" + width={900} + height={250} + unoptimized className="ml-5 w-56" > diff --git a/src/components/general/navbar/login.tsx b/src/components/general/navbar/login.tsx index 3371ac3..7b84ac0 100644 --- a/src/components/general/navbar/login.tsx +++ b/src/components/general/navbar/login.tsx @@ -26,9 +26,9 @@ export default function LogIn({ navBg, isMobile }: LogInProps) { : "/profile-pics/avatar-guest.png" } alt="Profile Picture" - width={0} - height={0} - sizes="100vw" + width={256} + height={256} + unoptimized className={`rounded-[50%] transition-all ${navBg ? "w-12" : "w-15"}`} >

@@ -65,9 +65,9 @@ export default function LogIn({ navBg, isMobile }: LogInProps) { : "/profile-pics/avatar-guest.png" } alt="Profile Picture" - width={0} - height={0} - sizes="100vw" + width={256} + height={256} + unoptimized className={`rounded-[50%] transition-all ${navBg ? "w-12" : "w-15"}`} > @@ -104,9 +104,9 @@ export default function LogIn({ navBg, isMobile }: LogInProps) { Profile Picture

Logg inn

@@ -121,9 +121,9 @@ export default function LogIn({ navBg, isMobile }: LogInProps) { Profile Picture @@ -136,9 +136,9 @@ export default function LogIn({ navBg, isMobile }: LogInProps) { Profile Picture )} diff --git a/src/components/general/navbar/navbar.tsx b/src/components/general/navbar/navbar.tsx index bd99c75..afa8beb 100644 --- a/src/components/general/navbar/navbar.tsx +++ b/src/components/general/navbar/navbar.tsx @@ -54,8 +54,8 @@ export default function Navbar({ latestStage }: NavbarProps) { Logo diff --git a/src/components/landing-page/landing-page-app.tsx b/src/components/landing-page/landing-page-app.tsx index c49f9f7..8eee2d4 100644 --- a/src/components/landing-page/landing-page-app.tsx +++ b/src/components/landing-page/landing-page-app.tsx @@ -52,8 +52,8 @@ export default async function LandingPageApp() { Logo @@ -157,7 +157,7 @@ export default async function LandingPageApp() {
-
+
diff --git a/src/components/players/player-card.tsx b/src/components/players/player-card.tsx index d0afaf9..b9ef453 100644 --- a/src/components/players/player-card.tsx +++ b/src/components/players/player-card.tsx @@ -43,9 +43,9 @@ export default function PlayerCard({ Logo diff --git a/src/components/referee/v2/steps/during-match/map-select.tsx b/src/components/referee/v2/steps/during-match/map-select.tsx index 9449617..c9a2b62 100644 --- a/src/components/referee/v2/steps/during-match/map-select.tsx +++ b/src/components/referee/v2/steps/during-match/map-select.tsx @@ -32,6 +32,7 @@ export function MapSelect({ alt={`${map.map_index} map cover`} width={900} height={250} + unoptimized className={`${selector !== undefined ? "blur-xs" : ""}`} priority={true} draggable={false} diff --git a/src/components/referee/v2/steps/during-match/team-overview.tsx b/src/components/referee/v2/steps/during-match/team-overview.tsx index ec69034..6620875 100644 --- a/src/components/referee/v2/steps/during-match/team-overview.tsx +++ b/src/components/referee/v2/steps/during-match/team-overview.tsx @@ -87,8 +87,9 @@ export function TeamOverview() { {`Team
); @@ -59,8 +59,9 @@ export function MatchCard({ match }: MatchCardProps) { : "/profile-pics/avatar-guest.png" } alt="Team 2 Logo" - width={0} - height={0} + width={256} + height={256} + unoptimized className="w-10 rounded-md md:w-14 xl:w-20" sizes="100vw" /> diff --git a/src/components/staff/staff-card.tsx b/src/components/staff/staff-card.tsx index c362636..6692a5f 100644 --- a/src/components/staff/staff-card.tsx +++ b/src/components/staff/staff-card.tsx @@ -14,9 +14,9 @@ export default function StaffCard({ username, osuId }: StaffCardProps) { Logo
diff --git a/src/components/statistics/statistics-view.tsx b/src/components/statistics/statistics-view.tsx index 68e618c..273c922 100644 --- a/src/components/statistics/statistics-view.tsx +++ b/src/components/statistics/statistics-view.tsx @@ -186,9 +186,9 @@ export function StatisticsView({ Beatmap Image From 35ada54c3fcb99a5962570dedd6874eb66aa1c36 Mon Sep 17 00:00:00 2001 From: Tien <53821597+HilmTien@users.noreply.github.com> Date: Sat, 4 Oct 2025 01:28:13 +0200 Subject: [PATCH 3/9] feat: improve ref helper (#68) * feat: allow usage of old ref helper * fix: min and max resolutions * feat: sort matches by date * fix: constant width * feat: disallow selecting more maps when points are mismatched * fix: after match bugs * fix: change content width breakpoint to the same as navbar isMobile * fix: scrollable on mobile * feat: store tiebreaker rather than tiebreaker id * fix: move callbacks to after constants * fix: show tiebreaker in match results * feat: trim match results * feat: add option for map ties * feat: disallow map selection when tiebeaker * feat: disallow tie on tiebreaker * fix: show ties in match result --- src/app/referee/v1/page.tsx | 41 +++++++++++++++++++ src/components/general/content.tsx | 2 +- .../referee/v2/referee-helper-state.tsx | 26 ++++++------ .../referee/v2/referee-helper-v2.tsx | 2 +- .../referee/v2/steps/after-match-step.tsx | 41 +++++++++++-------- .../steps/during-match/during-match-step.tsx | 39 ++++++++++-------- .../v2/steps/during-match/map-select.tsx | 12 +++++- .../v2/steps/during-match/team-overview.tsx | 12 +++--- .../referee/v2/steps/setup-match-step.tsx | 24 +++++++---- src/lib/referee/query.ts | 1 + src/lib/referee/utils.ts | 12 ++++++ 11 files changed, 146 insertions(+), 66 deletions(-) create mode 100644 src/app/referee/v1/page.tsx diff --git a/src/app/referee/v1/page.tsx b/src/app/referee/v1/page.tsx new file mode 100644 index 0000000..c003d45 --- /dev/null +++ b/src/app/referee/v1/page.tsx @@ -0,0 +1,41 @@ +import { auth } from "@/auth"; +import Content from "@/components/general/content"; +import { RefereeHelper } from "@/components/referee/v1/referee-helper"; +import { getPublicStages } from "@/lib/referee/query"; +import { createServerClient } from "@/lib/server"; + +export default async function Page() { + const session = await auth(); + + if (!session) { + return
Access Denied
; + } + + const supabase = await createServerClient(); + + const { data: user } = await supabase + .from("users") + .select(`referees(tournament_id)`) + .eq("osu_id", session.osuId) + .single(); + + if (!user || user.referees.every((referee) => referee.tournament_id !== 1)) { + return
Access Denied
; + } + + const { data: stages } = await getPublicStages(supabase, { + tournamentId: 1, + }); + + return ( + +

Referee dashboard

+ + {stages && stages.length > 0 ? ( + + ) : ( + "Could not load mappools" + )} +
+ ); +} diff --git a/src/components/general/content.tsx b/src/components/general/content.tsx index f00f6dd..112334f 100644 --- a/src/components/general/content.tsx +++ b/src/components/general/content.tsx @@ -6,7 +6,7 @@ interface ContentProps { export default function Content({ children }: ContentProps) { return ( -
+
{children}
); diff --git a/src/components/referee/v2/referee-helper-state.tsx b/src/components/referee/v2/referee-helper-state.tsx index 88bfd78..df3a7e4 100644 --- a/src/components/referee/v2/referee-helper-state.tsx +++ b/src/components/referee/v2/referee-helper-state.tsx @@ -17,16 +17,16 @@ interface RefereeHelperState { futureRedoSelections: PublicStagesData[number]["mappool_maps"]; stages: PublicStagesData; step: number; - tiebreakerId: number | null; + tiebreaker: PublicStagesData[number]["mappool_maps"][number] | null; // team1Score: number; // team2Score: number; mapWinners: Record< PublicStagesData[number]["mappool_maps"][number]["id"], - "red" | "blue" + "red" | "blue" | "tie" >; futureRedoMapWinners: Record< PublicStagesData[number]["mappool_maps"][number]["id"], - "red" | "blue" + "red" | "blue" | "tie" >; matchState: GetMatchResponse | null; mpId: number | null; @@ -44,7 +44,7 @@ const initialRefereeHelperState: RefereeHelperState = { futureRedoSelections: [], stages: [], step: 0, - tiebreakerId: null, + tiebreaker: null, // team1Score: 0, // team2Score: 0, mapWinners: {}, @@ -73,7 +73,7 @@ type RefereeHelperAction = // | { type: "DECREMENT_TEAM1_SCORE" } // | { type: "INCREMENT_TEAM2_SCORE" } // | { type: "DECREMENT_TEAM2_SCORE" } - | { type: "SET_MAP_WINNER"; mapId: number; winner: "red" | "blue" } + | { type: "SET_MAP_WINNER"; mapId: number; winner: "red" | "blue" | "tie" } | { type: "RESET_SELECTIONS" } | { type: "RESET" }; @@ -120,8 +120,8 @@ function reducer(state: RefereeHelperState, action: RefereeHelperAction) { ...state, selections: state.selections.slice(0, -1), futureRedoSelections: [...state.futureRedoSelections, undo], - mapWinners: state.tiebreakerId - ? omitKeys(state.mapWinners, [undo.id, state.tiebreakerId]) + mapWinners: state.tiebreaker?.id + ? omitKeys(state.mapWinners, [undo.id, state.tiebreaker.id]) : omitKey(state.mapWinners, undo.id), futureRedoMapWinners: { ...state.futureRedoMapWinners, @@ -170,9 +170,9 @@ function reducer(state: RefereeHelperState, action: RefereeHelperAction) { selectedStage: selectedStage, selectedMatchId: null, mpId: null, - tiebreakerId: - selectedStage?.mappool_maps.find((map) => map.map_index === "TB") - ?.id ?? null, + tiebreaker: + selectedStage?.mappool_maps.find((map) => map.map_index === "TB") ?? + null, }; } case "SET_MATCH_ID": @@ -202,11 +202,11 @@ function reducer(state: RefereeHelperState, action: RefereeHelperAction) { }; } - if (state.tiebreakerId && state.tiebreakerId !== action.mapId) { + if (state.tiebreaker?.id && state.tiebreaker.id !== action.mapId) { return { ...state, mapWinners: { - ...omitKey(state.mapWinners, state.tiebreakerId), + ...omitKey(state.mapWinners, state.tiebreaker.id), [action.mapId]: action.winner, }, }; @@ -280,7 +280,7 @@ function reducer(state: RefereeHelperState, action: RefereeHelperAction) { // }; // } case "RESET": - return initialRefereeHelperState; + return { ...initialRefereeHelperState, stages: state.stages }; } } diff --git a/src/components/referee/v2/referee-helper-v2.tsx b/src/components/referee/v2/referee-helper-v2.tsx index ac72974..e2aa1c3 100644 --- a/src/components/referee/v2/referee-helper-v2.tsx +++ b/src/components/referee/v2/referee-helper-v2.tsx @@ -44,7 +44,7 @@ export function RefereeHelperV2({ stages }: RefereeHelperV2Props) { }, [state]); return ( -
+
{state.step === 0 && } {state.step === 1 && } {state.step === 2 && } diff --git a/src/components/referee/v2/steps/after-match-step.tsx b/src/components/referee/v2/steps/after-match-step.tsx index 4c7f28d..c91b1f4 100644 --- a/src/components/referee/v2/steps/after-match-step.tsx +++ b/src/components/referee/v2/steps/after-match-step.tsx @@ -1,9 +1,7 @@ import { updateResult } from "@/actions/referee"; import { CommandWithCopy } from "@/components/ui/command-with-copy"; import { isActionError } from "@/lib/error"; -import { getSelector, getSelectType } from "@/lib/referee/utils"; -import { countValues } from "@/lib/utils"; -import { useRouter } from "next/navigation"; +import { getPoints, getSelector, getSelectType } from "@/lib/referee/utils"; import React from "react"; import { BackButton } from "../back-button"; import { @@ -16,7 +14,6 @@ export function AfterMatchStep() { const dispatch = React.useContext(RefereeHelperDispatchContext); const [isFinished, setIsFinished] = React.useState(false); - const router = useRouter(); if ( !state.matchState || @@ -33,16 +30,14 @@ export function AfterMatchStep() { const team2Name = state.selectedMatch.team2?.name ?? state.selectedMatch.team2_label ?? ""; - const teamPoints = countValues(state.mapWinners); + const teamPoints = getPoints(state.mapWinners); + const bestOf = state.selectedStage.best_of ?? Number.POSITIVE_INFINITY; - const team1Won = - teamPoints.red >= - Math.ceil((state.selectedStage.best_of ?? Number.POSITIVE_INFINITY) / 2); - const team2Won = - teamPoints.blue >= - Math.ceil((state.selectedStage.best_of ?? Number.POSITIVE_INFINITY) / 2); + const team1Won = teamPoints.red >= Math.ceil(bestOf / 2); + const team2Won = teamPoints.blue >= Math.ceil(bestOf / 2); - const discordResultText = `**${state.selectedStage.stage_name}:** Match ${state.selectedMatch.tournament_match_id} + const discordResultText = + `**${state.selectedStage.stage_name}:** Match ${state.selectedMatch.tournament_match_id} ${team1Won ? "**:first_place: " : ""}:red_square: ${team1Name} | ${teamPoints.red ?? 0}${team1Won ? "**" : ""} - ${team2Won ? "**" : ""}${teamPoints.blue ?? 0} | ${team2Name} :blue_square:${team2Won ? "** :first_place:" : ""} MP Link: @@ -50,14 +45,27 @@ MP Link: ${state.selections .map((selection, i) => { const selectType = getSelectType(i); - - return `${i === 4 ? "\n" : i === 6 ? "\n" : ""}:${getSelector(i, state.firstPick)}_square: ${selectType === "pick" ? "picket" : "bannet"} **[${selection.map_index}]()** (${selection.mods})${selectType === "pick" ? `, :${state.mapWinners[selection.id]}_square: vant!` : ""}`; + const mapWinner = + state.mapWinners[selection.id] === "tie" + ? "white_large" + : state.mapWinners[selection.id]; + const result = + state.mapWinners[selection.id] === "tie" ? "uavgjort" : "vant"; + return `${i === 4 ? "\n" : i === 6 ? "\n" : ""}:${getSelector(i, state.firstPick)}_square: ${selectType === "pick" ? "picket" : "bannet"} **[${selection.map_index}]()** (${selection.mods})${selectType === "pick" ? `, :${mapWinner}_square: ${result}!` : ""}`; }) .join("\n")} -`; + +${ + Math.abs(teamPoints.red - teamPoints.blue) === 1 && + state.tiebreaker && + state.mapWinners[state.tiebreaker.id] + ? `**[TB]()** (${state.tiebreaker.mods}), :${state.mapWinners[state.tiebreaker.id]}_square: vant!` + : "" +} +`.trim(); return ( -
+

Match results

@@ -106,7 +114,6 @@ ${state.selections className="disabled:bg-disabled bg-accent rounded p-2 text-white hover:cursor-pointer disabled:cursor-default" onClick={() => { dispatch({ type: "RESET" }); - router.refresh(); }} > Reset referee helper diff --git a/src/components/referee/v2/steps/during-match/during-match-step.tsx b/src/components/referee/v2/steps/during-match/during-match-step.tsx index d569324..a7c1b21 100644 --- a/src/components/referee/v2/steps/during-match/during-match-step.tsx +++ b/src/components/referee/v2/steps/during-match/during-match-step.tsx @@ -1,8 +1,12 @@ import { CommandWithCopy } from "@/components/ui/command-with-copy"; import { Separator } from "@/components/ui/separator"; import { PublicStagesData } from "@/lib/referee/query"; -import { getModCommand, getSelector, getSelectType } from "@/lib/referee/utils"; -import { countValues } from "@/lib/utils"; +import { + getModCommand, + getPoints, + getSelector, + getSelectType, +} from "@/lib/referee/utils"; import React from "react"; import { BackButton } from "../../back-button"; import { @@ -66,7 +70,7 @@ export function DuringMatchStep() { map.map_index.includes("TB"), ); - const teamPoints = countValues(state.mapWinners); + const teamPoints = getPoints(state.mapWinners); const team1Won = teamPoints.red >= @@ -75,14 +79,6 @@ export function DuringMatchStep() { teamPoints.blue >= Math.ceil((state.selectedStage.best_of ?? Number.POSITIVE_INFINITY) / 2); - const onMapSelect = ( - map: PublicStagesData[number]["mappool_maps"][number], - ) => { - if (team1Won || team2Won) return; - - dispatch({ type: "PUSH_SELECTION", selection: map }); - }; - const currentPick = state.selections.length < 7 ? state.selections.at(Math.min(3, state.selections.length - 1)) @@ -96,12 +92,8 @@ export function DuringMatchStep() { teamPoints.blue >= Math.floor((state.selectedStage.best_of ?? Number.POSITIVE_INFINITY) / 2); - const onWin = (winner: "red" | "blue", mapId: number) => { - dispatch({ type: "SET_MAP_WINNER", mapId: mapId, winner: winner }); - }; - const isPointPickMismatched = - (teamPoints.red ?? 0) + (teamPoints.blue ?? 0) !== + (teamPoints.red ?? 0) + (teamPoints.blue ?? 0) - teamPoints.ties !== (state.selections.length > 4 ? Math.max(state.selections.length - 2, 4) : state.selections.length); @@ -113,8 +105,21 @@ export function DuringMatchStep() { `${state.selectedStage.best_of ? `Best of ${state.selectedStage.best_of}, ` : ""}` + `${team1Won ? `${team1Name} vant!` : team2Won ? `${team2Name} vant!` : arePicksFinished ? `tiebreakeren blir spilt!` : `${getSelector(state.selections.length, state.firstPick) === "red" ? team1Name : team2Name} du har 90 sekunder på å ${getSelectType(state.selections.length) === "pick" ? "picke" : "banne"} et map!`}`; + const onWin = (winner: "red" | "blue" | "tie", mapId: number) => { + dispatch({ type: "SET_MAP_WINNER", mapId: mapId, winner: winner }); + }; + + const onMapSelect = ( + map: PublicStagesData[number]["mappool_maps"][number], + ) => { + if (team1Won || team2Won || isPointPickMismatched || arePicksFinished) + return; + + dispatch({ type: "PUSH_SELECTION", selection: map }); + }; + return ( -
+

Referee Helper

diff --git a/src/components/referee/v2/steps/during-match/map-select.tsx b/src/components/referee/v2/steps/during-match/map-select.tsx index c9a2b62..b99dbe9 100644 --- a/src/components/referee/v2/steps/during-match/map-select.tsx +++ b/src/components/referee/v2/steps/during-match/map-select.tsx @@ -6,8 +6,8 @@ interface MapSelectProps { map: PublicStagesData[number]["mappool_maps"][number]; selector?: "red" | "blue" | "tiebreaker"; selectType: "pick" | "ban" | "tiebreaker"; - winner?: "red" | "blue"; - onWin: (winner: "red" | "blue", mapId: number) => void; + winner?: "red" | "blue" | "tie"; + onWin: (winner: "red" | "blue" | "tie", mapId: number) => void; onClick?: MouseEventHandler; } @@ -58,6 +58,14 @@ export function MapSelect({ > RED WIN + {selectType !== "tiebreaker" && ( + + )} } > -

Klikk for å logge inn

+

Klikk for å logge inn

) ) : ( diff --git a/src/components/schedule/match-list.tsx b/src/components/schedule/match-list.tsx new file mode 100644 index 0000000..f4d11b1 --- /dev/null +++ b/src/components/schedule/match-list.tsx @@ -0,0 +1,102 @@ +"use client"; + +import { StageMatchesQueryData } from "@/lib/schedule/query"; +import { + isOwnMatch, + sortBy, + SortBy, + sortKeyLabels, +} from "@/lib/schedule/utils"; +import { useSession } from "next-auth/react"; +import { Select } from "radix-ui"; +import React from "react"; +import ToolTip from "../ui/tooltip"; +import { MatchCard } from "./match-card"; + +interface MatchListProps { + matches: StageMatchesQueryData["matches"]; +} + +export function MatchList({ matches }: MatchListProps) { + const [showOwnOnly, setShowOwnOnly] = React.useState(false); + const [sortKey, setSortKey] = React.useState("time"); + + const { data: session } = useSession(); + + if (!session && showOwnOnly) { + setShowOwnOnly(false); + } + + const showOwnOnlyCheckbox = ( + + ); + + return ( +
+
+ {!session ? ( + + Logg inn for å bruke denne funksjonen + + ) : ( + showOwnOnlyCheckbox + )} +
+ Sorter etter: + { + setSortKey(key as SortBy); + }} + > + + {sortKeyLabels[sortKey]} + + + + + {Object.keys(sortBy).map((key) => { + const sortKey = key as SortBy; + return ( + + {sortKeyLabels[sortKey]} + + ); + })} + + + + +
+
+ {matches.length !== 0 ? ( + matches + .filter((match) => + showOwnOnly && session?.user.name + ? isOwnMatch(match, session.user.name) + : true, + ) + .sort(sortBy[sortKey]) + .map((match) => ) + ) : ( +

Denne runden har ingen matches

+ )} +
+ ); +} diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx index ec15cbb..5171d6b 100644 --- a/src/components/ui/tooltip.tsx +++ b/src/components/ui/tooltip.tsx @@ -11,7 +11,7 @@ export default function ToolTip({ trigger, children }: DropdownProps) { {trigger} diff --git a/src/lib/schedule/utils.ts b/src/lib/schedule/utils.ts new file mode 100644 index 0000000..5e188a7 --- /dev/null +++ b/src/lib/schedule/utils.ts @@ -0,0 +1,36 @@ +import { StageMatchesQueryData } from "./query"; + +export function isOwnMatch( + match: StageMatchesQueryData["matches"][number], + username: string, +) { + return ( + match.team1?.name === username || + match.team2?.name === username || + match.team1_label?.includes(username) || + match.team2_label?.includes(username) + ); +} + +export type SortBy = "id" | "time"; + +export const sortBy: Record< + SortBy, + ( + a: StageMatchesQueryData["matches"][number], + b: StageMatchesQueryData["matches"][number], + ) => number +> = { + id: (a, b) => + a.tournament_match_id.localeCompare(b.tournament_match_id, undefined, { + numeric: true, + sensitivity: "base", + }), + time: (a, b) => + new Date(a.match_time).getTime() - new Date(b.match_time).getTime(), +}; + +export const sortKeyLabels: Record = { + id: "Match ID", + time: "Match Tid", +}; From 52da2d96cd5195f86b7ee842f3077d551c7bfb33 Mon Sep 17 00:00:00 2001 From: Tien <53821597+HilmTien@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:04:26 +0200 Subject: [PATCH 6/9] fix: correct rules (#73) --- src/components/info/sections/mappool-info.tsx | 16 ++++++++-------- src/components/info/sections/match-info.tsx | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/info/sections/mappool-info.tsx b/src/components/info/sections/mappool-info.tsx index 7c06ec7..da7baa2 100644 --- a/src/components/info/sections/mappool-info.tsx +++ b/src/components/info/sections/mappool-info.tsx @@ -88,8 +88,8 @@ export function MappoolInfo() { 3 NM / 1 HD / 1 HR / 1 DT / 1 EZ / 1 FM
  • - Gruppespillet er BO7, Runoff rundene og Swiss (uavgjørende) er BO9, - Swiss (avgjørende) er BO11, og Sluttspillet er BO13. + Gruppespillet er BO7, Runoff rundene og Swiss uke 1 er BO9, Swiss uke + 2 og 3 er BO11, og Sluttspillet er BO13.
  • Star Rating for de forskjellige ukene tilpasses etter spillerene som @@ -99,12 +99,12 @@ export function MappoolInfo() { Foreløpige tallverdier for SR til A1 er følgende:{" "}
    • Gruppespill: 6.0*
    • -
    • Runoff runde 1: 6.3*
    • -
    • Runoff runde 2: 6.6*
    • -
    • Swiss Uke 1: 6.9*
    • -
    • Swiss Uke 2: 7.2*
    • -
    • Swiss Uke 3: 7.4*
    • -
    • Sluttspill: 7.6*
    • +
    • Runoff runde 1: 6.33*
    • +
    • Runoff runde 2: 6.67*
    • +
    • Swiss Uke 1: 7*
    • +
    • Swiss Uke 2: 7.33*
    • +
    • Swiss Uke 3: 7.67*
    • +
    • Sluttspill: 8*
  • diff --git a/src/components/info/sections/match-info.tsx b/src/components/info/sections/match-info.tsx index cb7bac6..fd3c636 100644 --- a/src/components/info/sections/match-info.tsx +++ b/src/components/info/sections/match-info.tsx @@ -99,14 +99,14 @@ export function MatchInfo() { ,{" "} - 5 kart i runoff-bracketsa og swiss + 5 kart i runoff-bracketsa og swiss uke 1 , eller{" "} - 6 kart i swiss + 6 kart i swiss uke 2 og 3 {" "} - dersom kampen er en avgjørende kamp (dvs. 2-x / x-2 kamper) og{" "} + og{" "} 7 kart i sluttspillet From e6c7086e88fab4e1e50cd7acde200ea98843fad5 Mon Sep 17 00:00:00 2001 From: Tony <33378001+TonyWorep@users.noreply.github.com> Date: Wed, 15 Oct 2025 23:26:35 +0200 Subject: [PATCH 7/9] feat: live matches (#71) * feat: add vod link to matches * fix: shows ff instead of -1 * feat: add status to matches * feat: add ongoing and scheduled matches * fix: fix styling and more changes * fix: fix types * fix: styling changes * feat: swiss 2 bracket --- public/landing-page/bracket.png | Bin 0 -> 154816 bytes .../admin/tournaments/match-edit.tsx | 2 + src/components/icons/video-camera.tsx | 20 ++ .../landing-page/landing-page-app.tsx | 329 +++++++++++++++--- src/components/schedule/match-card.tsx | 73 +++- src/generated/database.types.ts | 6 + src/generated/zod-schemas.ts | 8 +- src/lib/schedule/query.ts | 2 + src/lib/utils.ts | 18 + ...20251004150626_add_vod_and_stream_link.sql | 3 + 10 files changed, 394 insertions(+), 67 deletions(-) create mode 100644 public/landing-page/bracket.png create mode 100644 src/components/icons/video-camera.tsx create mode 100644 supabase/migrations/20251004150626_add_vod_and_stream_link.sql diff --git a/public/landing-page/bracket.png b/public/landing-page/bracket.png new file mode 100644 index 0000000000000000000000000000000000000000..ff739e702e18cf0e7ff663fd8f5f005e2cc4464d GIT binary patch literal 154816 zcmeFZbzD^I_b-mY@rXw~N=OJ814>Ivib@Sg=aAA}Qqq_R5;8D!Ny9LV#0<@-2uL>w zLnxhtbi?o2==sF=-q-#8d;hre0%p&i9nXGZt@r!A)*@I{S?)XqJp~yV*?G9Uv^p8t znE*1f)53rL0rqTv&U_BuPPnSeJs>M=zd8p#oVL2Jbf1i@DB|3{2|4(D)>$6mN=9~} z4*EUO=#*;?cG9}Z=(=e*S-N?eJh32CHL-DY<5rf@ye7!a%PnH>I3x* zvOmEGax(f8C6M;#yKSt16~$jA-}aOwM+PmLBwJbkJ9b{kigTk!(wvxY@4Y914`zj)U_r|@2S zvo!SSc`}D-&F1LeG6@PA0sUwr?0Fv<>C*mCyF=lwoqPZ~a`t`xdHUFA+jzQPy zR!);ObI%m7c6sQA|L^s$9_Uoy66R2fXXC$5DL|gxx!>Vyli%>1)p|PdRZ(M8bmEh> zScE-n&UFnJ949}VBx4!Oh7p&IWD^RABX^m&7cY|il`1jqZ2V;nTkSY4cm%>;q1Cjc zprPFC>RS9xvwXMQbP0XO5AL-O!3nu^R;+aJ-DY2>;dE9#GlG_+KxzV?hGl=^^GxEu zT0|yQa$7*Af!0j>)j%Bedlc)qbSQ5_s0)(-l1fmG^2ukHruLH>)-(w+MYY76Tl8k3 zO%a+fnb_B{3}&GfB6s`cyV*;?>8(RQMN2qKhoj|M!gw26Lu(yibAzkb+C7fz~zP=gKz^jtn$tK(+dQeq`p< z4{EKdkh7xiUpDR!1*=fqqw$yg;qmXbcXH+<mHO0lcSWxlYQXT7(Gmt$au~P0|nTzU>yf9C_rSV|X-d$-)Ce-`)H3(M`CQcKB!3 zbjr2xur@TeZMv3mTUEQ9Eb>Cjj=nu{)mjxPkWcJOaH!=+y4jC@e7Tp8^*cD&cu8kP zk$l6=AO@4PD(XxY9l;<%K|UCv7GRi*h50}LAJ$v>ea6q9d*VG zsZ)JCQ?9~`y;EcQ!zLC!M8p^}TvI`Om;daIY&r3)qr!|Zs@Wkf{UM_5)rSxED z4_X$Ch!2oijv%tmz8oiY=qKlC)+`@2j|n%>u4xQnW&79zn00rg?W>;Lq7}wUZtY_p zO!55dj)62YO|y5+LV3aJ4~Va~tXzv>3)SZA*w?U;xr|dll(rtPqt{b$=*xuqE~H)* z0o<3*q-3~2pr=jWQmfQ7cxLK7wJZ|M1WG}*lKujIr?{fHpvd7JxbN^~_nv9<6VQgOh8$lGRx^H<*-@?Kg1y=2h4&f?;K64ZF-1C)m zF2o}v$+0+FYTQ`tzPUn1R*@NalFFaE-?q^UmT{lu)e1ts(V8iwvrNzR@$^4s(xSNW z%4N?r)J&3V$eA!|+%gTiy@ETyZCLVw^0$INb@unB&u}2WI(Epg!X!v476j;f?Dww! zwpI;%2!_7B&9WE(|jr759k_^PQw~hAw6TjB$ zzaH-YmJO+l55tV0G1iG-8jb|@3OrulBNaxkeZt87L_i1y*p?J~&ojqc$A7MEyxafv z1@tjcJ8<&flZ>qNBrM?HPnt%3?LWqo3==p-0;fn3%|m%fwevULzpGY^h41XBb0x}_ zjmUOMCDa~T6Wvi(8@7WjI^{V6Ne(SdO)+zQicHu6i6P7Lvwzp)T<1v^?$$DU7K9CIZtUeoI5~x=YWWuc8lIuq2~j$E39#cS7LM!A5MA z)r64isBm^c>&S02SxR@@VX9TmUq(vQ602r~vj;Ey_3KQ5dq~KlS)a@v4Ef!wf%uUB z-|h~SZAAXIi65usRG4?M&^KO zS-wG+tBh`)_nTW>?Z;IE7smQ4gQ6j*!^w954>R=otHHJq)^_B|wiF zTOK&W?3;G#!d7b8}4}p)k9Tvs)vEiIZ_7RSWqO zyLqdrl(#OsyN%Z{qdBSEFFGJEI!fI5)OGyaWU36mW_CWyj=s8jx^=04a82>*hu5J= z<=1zJTsjvcM2$Ss7fo&|C@MycEqi+2n!Fn>>PafV*$pTl?TP&;9iu#-&~?M-V2yA7~HHOv@2IFL%?HEcf_qn>B&{ODpDo7c8?@h^YimLdP(1>i!;6NAD(H8 z=a)+sbw|Sdjt;hl{I*82nkSw7{cHL7`OP}AiUd7Yw^lRoT`N9LY;ZkeO_~MI(5@K* zXa9?3u0p)~#6Jc=H6Te9EY(0w#Z}M6o@Lv^alxX-Y(1Mo)Z~(RFR$K*r-q9~V>4>Y zq>8gM^mK^g%i&rs5n8Dlex!ThMExLAi32XasUnJir26ypdbc9aT(pMrVCEziwp1~b zvOE5kXL7?^Lvm;Dr$`mrc=-Z_OuFdgs?}6nvjv8$iB@r`($P@u)yNz9!;=idj~n7@ zO3~A{wXz5ufx+blP5z#OPIg1f^NLSHW82WI1s~dRuUW4;olUtj@#uB8JKkOItzS4a z9-YzUGmyEn#hJ@IJKVN&C}=yfGc3?r#*XIS@@HYA3TI8$-|$N>GH-me?tW;zps8xW zolT;04}m3i zZDSS;M>qRvF`_G}+u4C@zX{Js5`!-Bc1?fS<2t1fOLnh(_s#Ya;OJcvCtA@(PH^wK zYO8csTkh^bQN^5QS~Gtk*UOH_z8gb#Y%9|En%LlW1BHFTw^DMuyVbW?-AxhN_QoCJ zYoSKIEA`RJWHaX5lUv>ZVTsPn_MXCPj~RIl)yfrK7^w(iHSl`p?QUPmZkfiFIJ0lV z7hO2k>_5<^Nb0R#-QnXCh4}`;Y}^Ow5yk5=+ljjG5Yq*BZo20=dXmC6rsA*4B)@^> z`60qN5zT+)C?btQlzF|HyFz{{j8vKz)Uxf|SEKB!ZBNna!J$1gze&4|t;%ie?g~@! znK+;^rW1YSS5vF=-_Z4CiJTZj$M$3&ay5&Z80{IuqBx~o z5fh|iE%P)Bdi$KuRwUBLh^aFV?F!vE%2}~v<*>gopR=?Px8^(l$75&?S(6=`^<0#N z{_4~DvEktfr7l}0oTE5Xgk$xJ?2fM_yqkxxpZ=pRh~sjed`z$0OnY)4As_$|!_w&D zwo-p(A=cR6#VLlb8qbo$=e0ze;rvDI_GPW!Jl$Q9?`yN~UAJsk_e4%Ps9BcYxW5M< zyi%Dl5Z3Q8N7Thz=!@;`=^;y1rc+{W%GLBr2<1eHHY2m@>dwHCh3CSAY&;SulE*{N zv+Fou^^^#5xrs0vHS0XtEqaS36fSWJSEG&3NoIk2#@;g(U%hSmnSStqZ((vXpzI`m zteC6n2Vq@{V^T-4#nE9ytydc7w~MFV!`!~y4{%g|6(O;&ZLDvev}`%jwb4M|$jF>v zZ$G$Oz0HwawV7I3JS#g=HEx0^c5_>I-kOGbt24iEyAucxf%qmEn~GtoajvsORGP(< zNix5!?V?e2P381#?WIOrjVI*pUECZRb2cYDJs zm)%P}$5M8;vKpI zU&9#=3HAHgF$?OH5u{@{sdMEC3m26*d^F7X9m5%OhR-GhPU++|ugB6XB>xPmYz|QS zJl2J@4sQCuZ(h;=q9cMT?y3qNP!uL^-v)zz$2dUrsQcO7b*^|#cHNRmT}WFz;DRUU z3Do`7E^2h2vRAdppZ6|9b4^3Ns75vgTNT8P;Q?5$4FwkeeQ;0=zjl^`Hq^2&_;v}l;C8*3rs*WF&Z$?@Z z1RE}g`n)(#n87wqbj4ex) zbIqfuz56ExIVXYi*FEbCWfzc?(Wke&QXjxQ^$|Lyz*CHP{(S1Y-Ni^#iMn-`Y|3O zn~m^88_SCTiZPM(aEJL-IFnB-mvi`<6bap&~U>kvv*=Ry&t zjm%)g{mR)xcZH^%}34%T~AT(;&hDpSkP$Fk;3>aP+wse8|eF?1c)&O;jVEIz(DIW)VI;?(`A=;hQcnM>G`4g)t9H66!1fxj92Om$3I!*=4rm|&14bFQ11A>f4To<5Iz z{k^!JHu%yJH+)r>dh2{{{{8{ZzR;uf+xvz!dCUBGn?L5P2OGL4-Fw_*8#U&|A?Qk` zcZwYXzp7%5dB*5R+uAJt6SNwxdkyx%YXcj|`1rhdeye=5#_%Uo-1AGIzdFB0-W2w_ z*JiWFBtqXy$l2X&?K*cPF13|{%W;&jxFX@MCNn-jo5xA3oq36pK*qjrLK7!rnHQN! z^fq$ZX!$l85|`^6Vr+PQ_B6^QtL5u#-#(%ev*)fItdYN|T?n&L@LzrFc(~x}*dK>0 zGXCyI+$igp>2Hd`Tw*CpuxdM9(oi6nk+DSw7Zq|!+fW=dfUBoEV{Lu%RcX19u(sfR zCgP0l%=IWo9dW|ELegb;Hyfk!2TAVzM|gX#h{90f*P{8_qKQQ>Y+PJi{bN<0PD)94)#&KxifZ#&l1@F7;*1B@FRS^biYxJ*?5LDY<{*fXEYd%{G;>k zkeq9u;>Z+jV}anpqdYc#|CSuB$Pl0J+B+4C!g+jWeZ6LW#K8RYcVEErTG@K2lX)J| zyW!ugYo5Wy@-|E+KG3iZd343t3MDpG$+PBRH=ueCr<3A{$EpRh3EH)Jm*`A8KAE)6 zks71lTbf?BrK4N=KB&E*^bBFvpAgxfh0MHo?&uav#ogHtNd!drRd<|NqeF?`V}0tl z2O52riOaUiF`Bl`k37+6;Nd^?Py@A4=+at#Jj&Sz>L+Uqz`{E{}@Nro9+%xF9n5_lWy|VRL)CHgK-)`zwu#$ae9yNA9zo_YnvLy^wtzXG?dN z95aSAQpIue=0mGgKfJw99nn6bF{3H!mK^~9s@~p};r9-of-5&R=vT7XQMfk|tmcVh zv0B>Oq9M|ZuWqOvRM;mM`mG+Vw;)Z~UR@rN%C}x_E15=h#F||NJz) zb7eaHj@oLax^L@RO#RN_h-2)bG;?LE+ZKC4Wnx6=L+onE%N3eKqy93Md+hc%n$^T` z8Zp|hb=c~nOyKHAA4&a*JImUdS2zrpQ0R2)B9g(T)UZFg%4EeF6IP&;Frkwj^&V-R zH_EjgaiK%xD>9R#I7pwo>p|PO_K3tSixpw^H#7=JWe3maT2x%xooAZ?IarIiB@*_- ze!I@B3CX2z0WdyAL52n}_!~96iMDj;w7}MzWKJm2$$Kvh-i6npr-> zeEa9_difGVl=~*4JFsqK1TGSu0er57g+)EP&&Wi5ef{c=FT`9d5PS`{Y5!seKVo8H z+Vu<+uQUPONlHp8pL9Yw-!1t3`N7oWQ!>qu*3dqU_T;`y z7`EGe^ZTYEDS>=LTh{B7JX^nIid;g1RTgMxpwMT$1I}qo(qvo*H8D6isGy<}!QzFE zdDGt16s%u6xV*)|!@~oCK)s?Gwsh`xXW@%(qNk2*5ED50hLc{l&vB1|!*2e&_Fpv@#1pq209K5z0T2mrK0Lh z7(CDXYEQQz>7JjAFSt1wUSLkcnVM145@ zon1dqo#vhI{WrHepm-1&*+1G#{=?NPc`ts;6H>%4{|K|tF`X3uN6~0l?i^WQ+vDwv z!-~{gbw`rrx&)&G^Uqs>!)s+5)=NOjw0p#LuCQCt#}i)33|$Z)k=GCsNzgTnqWU=P z{QZYY?ihh*TrfCVaIwlc*_bf*tX*`ih1z|T>G=3-eJ<4EWMoQjzVPVf=Xm0tGQWxL z>5S9UW&owWPdTczT!UcCYm7{AY^y(txRC)xY|p`!wc%K$+^CPis$ zjiT?2UcGXZ&(^r4JK=Xt%NZkQhj~tP>aVe!G15`gJ}5NFTD=nd_nKZrKm8iiinQzV zp8Zg-vDqDr8{-xSE?#E!f2R3!XG~5{WqJC?#xM2r-RWD(V0}G+T&Ome#s_Cide@Uz z8F|K-=e<80I#1wgw=yUSH>}ZG&P}G=D1!XUxB>6dzPMwRF8Jq;Fa>aBU@UzRdC2wp;RP9yhaZhWck&%iW*E&-bP%ZtF(3cNQD{u4>C4*u`s za1G*(Y5}RnK9=UU>+n(j&K})8RP^GyJ3BJ;_ZIfP$t|AR{HE@+xo~}%!Rc$F@%NPe z$Cu1XVORToSnAnJE8c3L@V}n^+9gQ?Fcn@RS#HQ5rnBS=UV0wgtxb6yJVTQ)3@I=z z5}vX=tR+!nv?YIDSsAZDqDN10^v{0o;x}V1>X2|zNfvl)l@&&JbGdtpWRu9rK3Cbt zv0)}K&tw}lWZMeO@j&TvO-N>UzwCUKF)k+iK3%-%`xuYKvBT_Vry?{3G9r>%F_Y$w zS)uKI?yW_Q^UGq(24;IoHjP&1^MO(c`^w{2FOc;PSkNKd750U0MP&MjxksY5y^s4= zilG4oObO^IEo)8i2nu@Sx8{ahIg^LD^_jM$PO=PytD59+(~Fv>7c^VIecW66GK4Q6 zk7~A}h5WL8nps_8VTM(D%t3Xe_dM&pM4Iz1Z?qetv>I7Z!kUMLeXlaC z?D5TG>{bOvd3~Bk_`%;p+q*=`1s-mwAjw+u;X>TD12;Z%VaQX{a(tMXtQTR)NJ(%> zU|Y|0IZp=;Bm04Sxci#xBbFjOi;qC2h zKa6*9D5|HK@6FRNFy11K^kpet8T4rDp#V_l)-5@reMwlg5!UB8j?($k)?Wd-tB_iH z=1H>5lM`zW)jPtzSlw2|zqbsCto95H*xF<};_mR{k>xGB&o9q<&%O^@Uv1&x055KB z{g^D5iH5mPXPA4z{iy#u4TD=HyT_#XZ6a#+S6hZGVhv&N#;dNO4Pgv9u}0qTfTO)J zyD$3}7)7nSGvVFTe&4R|Nv$P>N=o;Y>6 z)`)qrQ|-Xl-_uhanks5Dh4g%;rkvM1(fWlPZxDYGaQXCx{n*(%4AnI;8 zN8RS+bn_IXC*sXezCWDrl4g41EIU#Rm$&0Mr)gqZ2Qm-J^0p2;D_P!pVF~NVDh`nr zBp+X?{gk)iU2oZfy7CyUt)m%9Mh&DStX zbRzU|l?|t>-iB#uAG8Ctw6^)>CQ!Fj+LFa|JV)GPH-`Z~Hd`Nd?XX#$Y@!#mjlLkU zuA0YZWaPKew>uSUoY@>F?EGCSjF$HSQow0c+|YY2ONoY~_Y1F+tBw5cb)5^jbE!mg zL`-4Lrk+x=s1~+%H{Zx-Nw8*j9$mCKn-P&O7r|6?8s9O~10>vhcoeJ6;VovC0QLIYclTA@(D7U=kiIrKPD0a2R^KT5pNF=4e zXdQd6h0#eh7aP^APtG7d^dmP!@ddk(N1I64H~Iu^Jf|X15~`FXcg(%SnYKQ_>XEoU z9^1U#TJIYJc!w}XF>OXsw>KMFgie+&8D40f1ZLO$w+YcE_uSfp z>@sw{`)vaOdj-9y_iEQZtGM=nU60U=#rZO??ofw+;c>DLRl7~4c1PH$E{WATa&u`S zyoy(=$;K=+hD$$tEa1rS+!b!ky9R3Yu_-BqEj)y3S&JkKM3J;?pCrKhz!Vfrgo_n6 z9PsGB7_ISHKq_)~b=*5D=*p05q3y|Rx|&u&+t^E}@V^pj^WA@bP-w&35lH)B2^a#6 z{K>_>w-$&YTQo+%{@VxomCMk0fADe`x+Mef9r_=ip-pb(E}=`&%admtN_D|Wo=iVx za!t_h!N-EV`|P_tBgyY95Kz}VdGZ8E`Lbd3St^n{(s&2EkAWwkZk=3tN=5O?ZPaUq zjXunFe|rV2L(paPqHejNykK0P7_b=Lrs{rk>E=3USkv(UgoBU;czi#cRhK|QItBON zf6jh0i|8x0>2dq{>5N@#94|eu=}XC@eb@gv*ylXOMo0Qgy>tR@bEr>}lykkOuoHJf zq;G(`7IP}L#BlZ0UokEKK@i+1iU0t8b8Bm~1tLT?qjHZ_HMO=Q@MKaxxOq&}?!Ol@ z=Cg_1d(~1Sj5k2zO^>&Pl)93v>quNSp^=RfYS;dLH?YtLE=sLmIf!@2%F3$9flY1g z0nX;xSDEC-&d$Nn^YSbuRj~B%Ln(A|M_~{)-oJ_YSpvQs>I>E>F_krx7@R%R-y^kFKWB8nBSR8~>u8|^TJ z$+{CA%I4nk)V^~d4!JZkx_3xyeO=gKzj|SzdaYdpb~z8XT4qaUPAn|1T?NytS4+n* z3pkiOEzLu1&#%{mRCnG+$8t{B9PTav+^<(uDRpI7h--8Ew?z&oX0sXi?@Z|xn+F4H zJdYy$aMp!f*XE!V^TAr`Q8b8N@v=HL?N(|ZDyK>s0xGNe?`Sz9OVZYKt z(_>f+`;{VKOa155=oFHMY^BN^3bVU)R)6TV#XFWJJSKq%WOfndVt;Jep_X0#qtmHw z-Eex5Cz*~FQ#2zWlvG4fu7%dNSsKET*aW3B)M`L*2FyleCh!UBpi$Z{*yqRun2$1> zR#gi7S(UUOtJe>dA2vlzCGu)C6i0Jn=lu4T&adTfs@1TFD)-_0b}8{qQ5Fslx_f5U z<~9b52Y}7K-RMH^i(Sp1N&(9F6A-ynKyk1_%Zn^Qu1<2~1X-Xc{NDp}RB0B9CpwCG zdSVn5UhFn*M42_cOfhs_|Lz_T>ma|Lq@V+=0vJ zZyp1T^BhmLY7nDG-0KUB>=BKWXgBn(i0Y2M=lQ(niZrfy075sJj#e2~RaGIMJSo8Q1sMZ-Bl8I}F&4mB%ZQSLzskJ{JQkpr zwSCb>zptV$SLG;KA9X4Tk7P19RjWaY3M8NSt#`?-?u^HN7^MZK6hy`lz^2%BD+rTu z$+7Qe2R(SNt1d(zmJgO{zCn70t>6oJ3+f_XS)d^xsq~u>$dHf_7<^#>8?m8GO{d-QC^uhFw-f zJn)x-0|psLaPCz8-M2 z6`)sY9SNI@lw;}&q2^d$z!K(bwnn31H6Z8*eMQ5mn-)xYt6|d&5d&`K_T$x+dC<3g z34(S4-s{%fFQJA8w!JxK&-8|Vl-X@r`4sK6Hyd3*#6GK_fD?psl_gVoNMk?lDsw&q ze+o8 zF|azNXH-V~pRqt)BT60@dudZ+DK@zug$|9IFVLn4Fne0N5|0xw%;Y=+hv# zAh)zsvnNMI2Z4x}-2VQe92Nxd+2UZy#$=RAenG(_!qH*XbgRv`;$E({O7{g|(M=UU zo|HcyA0H0{8XZ~L*FN&d=*Y+5ciZnV4aPvGO@1ADGVc+81pr$|W_i`?J;(fVPF)mNy|@4Kh0mW-=XA8X5+9|zv=rNF zQrwzHJDN>Ey%U(Nwx$6k)O5<4o11@~S?ik{tp)5wLc$QB(7Cy}qA#zjc)F72jrC6v z@fM-*IM_*bLzq?!_d6=3)dxN&P^fKrt1*UegqDb(+VGx0mV*Vlu)(VI z($QX=TI(QDPmzxy*U_PLTyiuo?OSHM>oJS7XTr?<1?d(EFCSXa1qw}m!l6eD83z8k z@__1YIK|atE=Lyl^f%Xg75SkGUC-{sveir8>09e^Rif6z;jPi3*ZsSh?>S;Bs*aaX z=QKf_4z$R8`(iM^T1)M&{Ky`2dXA^VYxV2bf=`_K1Lj*}DVO1mljHdpw{e8HO#yA8 zPMLv(H%J5+^HH(sv8v1w2zkRxUu_z%u!B=KF?kO%d0JB>sz#3@n@k-|ntYXp0usHK zFJknI<8>%>4?g%#5;!W-?oh@Q)}2N67`$=rG~Z zn(wx=MlEsw=pes=BDJ?Ty|Hduu1^|yumXLFhaiyb!WxP=xk97`gs=7wJKuKU;2Eg) zS}S$_lv@0G!OUSP{}`-J$3*ugm7HCQaE|-(i_2;!F`gnzJIjK8kgJGYVb2Bi*7hyBGv_ZPaf zb;O{90;P{x9grSGTL_1@ZN`rq1A>efKmSW*IVm*(-0h1`g5EC6%3t)qyk9NbNIMor z$%KBrOQC5(smiOM3xaSF%dZLk>(l?DJNh&qD^Mc=NT0)BS3ajWZP$HB{M+eL4iK`v zugV>LZS5Aav02sE?!MTrZ27vGr(DWzfM)httYj4XQ3132M~_`%ir=Kqj)m7ip{t7B z9l7pGdFh_FA?sBx!*vcczl7(&^S_@h4Jl0Dr)XF?7n)?SL@D1xIt=ts?C0adt+k8U z?J;`1JL?v`qElKZv1dJ#?Ah-)I4C${|A1J>+!+}9NMbk(9lm;ISOu~vWWO>8$jCG+ zxW#lBC73)t-&QPl$0iw9;{+W93fAxK!f{pv5eeKxo;uqO7P9J~So>Ir(`cH1}J2zX`smF#$6!8v5y97&VBxo-*=!dmjpJ4Rbc;2)KA}^#aK!8t;3+%Im0~a z2Q9phKL)cCf}GraM3!W%!Ijyx2MHV}L8D!I~n_Dyi{Vu;=O|5blWWWKOa+{Zzk zCvK##qpLehQV=Pz>L~Q|eMIB>dm{Au1XzzC>#IGhJUl&FrY6nNlZ8ckwWi73S0yAi zFa0BnXb;8lu5ufaQu?i5V-Q&~k#GL9lYT5hOUCv}n639#3M3@PV*Dh-mb;Y{lJ-so zvi7fjBs^rZEeinu{J4i;g?F+cWI7}BJ<O-okF{IM@?=tm z@vW_uWubrN@f9UFn_$*M6I|(w@|e(!nK?NNfc*EoyZ+E^J};+XsPp|p_Z}r-8^9_d z=0eG8U1Nkj=IB0)MWQoFt^obt>igDS%qg+*g|g@%)nmw}2&-e{m1X2T$C3=bU41I< za;$Zeg`uZ&M8Rsa{%0;Cxt@u#Vqfgu%3D>)oE*BuzW7b%AvXDT%aC}Bq>fkl2PvoM znDQ!O629`ZZE;*nafdum8+?{F21X2V#V{`Y3L|KuE}-=`MSh&1@1l-1E@V*zXHd=$ zSCjyi?pA8Y3{%M2KVFC~6qJ+#?pA)tZCGgyNmbq)+JU;Yz7^cnKOX=zT#qku&<8}X z5~Q)A+d{7dOGAlpegNq41qT>1Wd0+JXOd#i0#}@-)Lgm{AUR}s311=5p?0E_mHd?j z`)y7Qf0MigI~jrxC*i{*8J17we$nJNidA1CjYJT_nww5IwHylR%x^gK!hbsXo zhIE${?|HTwu=pv0>X4aI*U|vy72$qO#A7s+MOb3CwJi9aruuCLOL(|mm2)B-;GyG{ zQp81KV4L1Gm5aqKK+hS`I9^F%FV_Gl`?nsgO}_OwD13efy%)TTw3Ext)wpt=u40EH zfSHZ6laoDwX#bDj0fyklNQ9?nU+`XEnaJU1AMFDH1hi%{e?JUxe?VO~ z=5kUMkoYlw9|@4V0ErYqb)w7FYo(_3A>{`SA^(aB9LM)NrSC?ZzqUc!^I>|L$tk42 z^RC@7RE`D_{?O3B4gh^AG6!iS!CHrUFxA?*i0{6rC2l&jt~Alp#%Xnzg&WU9H`B2_DX(*0^q!y#dN{M-mI zIYp;k&Hnd5BHcXrU4P0xj?*p!{zjSzJ4Us^0_Ms${v9>~&j8pBi8Pc;jXvl0$)U$I z;&)_brraUnGf;Dxs+>SdrOF{IKag^h0pX=MeG*s&`g{J>ATN~@4lsCx8<0fgkxX8b zmmF#~`hkiJ2zgI5n}#_;+hA2VQqZn{7EHl@Xcz;S=^yHcc|jfi?oVd!K%R1Ss%@f2{t2gXh5w51936VR zt3s#m3w=tpzs0XHb>+f92x^Dk-=}R7dsM%&TA+VL_?9yAprKdDG4yr7UKowe=nGFX zTg5|~D_0hhJx99${YaC#c8!P!7Ay;Jc|m-Et5((r_KEvizC2u9ePF>A78e(1HjM!# z0SHS57sY=DuCA?7N(L!)Q2{aiUmD!D^9isj6k^_7+j$!U;O6ABB~R6{)3?^5*d&$> zsAuphar+y7E3Zy6?>9xe6)h_YT%IhMy`chXZXL zN^%BL&|E=DdkBlFJyF}stKyG~Oa+hc&@z7Tpi_gP zD2m}kTvp5kjLEt=nhhKXETt$g8n{CI%Pv^~j~icrFhQzX?muznYTEd?DaN2eeTi76 z1JcXEXk0OLZ4(4E)LDfHI}iU2m*tD&wj2jYq{7UkBzx4bpf-ng;lNK~PU9{bNw6_% z_*&)WHJsESVBf|Ln85JJSuK^r*L5b4eAc@<)dB=U$k5T5MW>{2V+S}u5{YFiEu>u| z%|r8CK8097Qzd+2HapR=yKKxK4RmxRKv_Y<>BT$>K%j-oEVLhMjFpF_gCQdjNLMKP zw9Fc-r#t@7;zyAtIlJ0zXk?rQq zn~utT{vfp!s1BxPZEeMzP;f=`d*CSn$KkuciU#yF-AXM03~qL%ky(e}f8f@{68puU zRZ71%PLbA$8wA6fJ34egZ2%zEU~-wde8oFJN$u(u^~)e4W~>x<=RUT2HN?nkiW*8o zTAS&J<(0)dEEKnJqgVKEgUo-BE>1x~0d#9%%m-n=QYNIt+dILMPSd`3SZk2#Uv{lu za?k%Edepe4?a;zySUoGt;<{gqxnti}a08N&zbmPu);NvYE@V7quc17O`uvZ=*RK2x zy}HVx92|-lK|Cq!iwi1j$<-AM3ly{i`TUGN?fwK~(2|{*)B&J4xPQ4M2YZxq%0Z@O zCrqgjXb)Z1nhms|6ynu`>i}edpB>*?`jyW7>N8$Iu7D&?iNoy)@5Q3Vbs(1?%R7`R z;_u~QH_RT{)6F>Fz53P*Xei-J1a?cvK#?VkW~VLzmjh?fe;#d-3T%}ANx|+PPJD;r z0IN^3ZL4|AJpc^Zsd@zxDMEQ6L0`aUbFqA-x>{T*K>&_-K&PciJ$(I_S_G5C`eI3k z0y4cTR~Zx{ptP%IEcZ5-1Wi7l1_~5t^La*5O-3<~Ub6@Zn%G6b1}H2^FYK5EK#idL ze6OziPlQ!+)>I2at){&h_p|wxr|Un0nCF46-uLjLgyzlrZo6|i$3YGN087oAkmW^6 zUGM(GT^ZHI_$m8#jK!2LmcW32brc025z=)IfWsH`Petp-WC72t^5T#4-N1UULu&0e zAlBJ_eRq8bNK$T~X21>vccC&5pm66y(z;Xa&a|cCwvc739ryWQFDcgq^X$Y7_qcAV zcadtr3L9@ydK~)Y7u430D&(yeT*7*$`afi1mwZ|?rs)j}t_UJ#5IOpX*+ig@LJ-p|%9@wxB-^sK(&oQE8xk_27LuZyJ})C&FhJC>ItAM1XK6);3J6 zfwl%zqa2qFfF%kW?#DYor5TkVHjVS$c|vDaYCp(l=(B_a!6MtwB4m0IQSM3IN|pUD z2l8&KryESoYKOgpx!-O>$uT8QC0!=^7ss1~Cp^*bmNY_al&0cTV8m zTGme+IB{zf7ULw7u=~!>icwkoIFnS+(QazDsAWTN+|@>OtcH6wJYghx*g-AP~l;^LdYPdX0fqCJ6?6H56?;K%)QzX1= z(kP_3SvN7LRmthgSXQPvCp zd)fhsKA|bPJJn1^JEbri>**$tG%w=eVc#w_^Vov@VSw-{GryW8BV=X<{~upYzSi2Y zB<+5+ru=a7$>i*ZF_q3k*N9$>BB?vty~k{gn0G^MxPG8%9%MXvIbb&ec9s`p_nH$< z+}4YC3afn0UWNJjx-fs{8r=9bffu=MHiu;pdRKa*T3uVv&^OtZNuxW0<=#R``r!QH zg0=fkTv>DS6E8!pI;aP^elSo1vUT@Aps4rKd0{&=2A}7<5a%34uh9IU(tfe^TT=-s zxx{@hOYW=kZU}a-){cJ;wX!=~cX4;N*%`mt&@Q_J;KYJzDK992r;v1NBPL_- z*1u^Py=~>YMDpWc0@{s;wQq?33Qb%R<_ zf`M*_6MM+${n?lD@RNME{;OpzrMw??pH*P+hM(PA7#mJ{& z9WKS@b7-W~$niW5;RoF6zX=3h99UOvV; zR(P*B++X!uy+=Oke``fDpJ~9N^`LxpPfmw(fMH=khnVZ3g#y*g$F>!C)bR#lnG<%d zC#MB)swphc`a$_3n8YCX1LASVv=!C#{r$tBd7%BHU>HP+EI_N--diL_^!|CktsrD- z+sDobLRS#cwHsC}%hEc`=d)Sb@WypW?mf zOFw$1k?AIOEuz}nyYKEnNej8&Wy5U86mF2S-n}Sg@8db;gvztaNxbjX*leZ68M|K) zpLTBXyw*pR0^iZ3p~KU-Eimx@0t8zfpT=^(edCqA>D<=34ad14QNFbg-@c7^s`vB^ z7^+Z*^~em)=uIhieknITm zQNmh0!vSN;2g`iAVgGlWh@yEbC>|npoIGi3L4BpkD3wQyP>jLa_c81ErKa+5T!z2P z!wlO_FSg6wC_wxnkPd*Y-?XhQPI^Y8vy=;UAua}F;LA2MGqCZE2NLB zNJDAgyS9tS@a8SSuG;{SwoN0fo=0Y$5D9{6q!b@gU#Wa_J3x>o?gnf6W{N?U{#FxG=SpbtJa9ABy-ld5WnQ^AE#TK_6k5DxdJlW`9cg#iI+bVW;i@0j(&ly z+4wxK1A~iM6K#F+J_uDRBTI2kE#-%#+CpR|Azjhb4^)utS}mC@#Z;7RG!Nw=Gx?LE zOec_!^uLzQo+h?DK;O=b4`o`#NMc-2Z|5=4h>Gkh`p)2eG{b!e? zZ(Ht4ABXT55UIR_PbvW^6j1eD3wPC{Q)e!O9uUu+JGTLPs>-raQAK3{6m#Z)q>vGb z-tzz|IPHA`_hmW0GS19HGgI1-wW+}gKD8JG<#%y zVJtd!ZXJcYr9_sNw@+4e@tU9%y3cx0t@g-&j3Y?S!YWzYgCm{~6%TC)%ErK0z&TzvL^Y zAb)aM+xH6~L*Jk0s17GQ$1IYg2kQ6wYb6t$XcBCuxk{P~c=7hsGH(TimZx7j8FehI zUu=oY2=@poKinMM+^s`A_U8|X8*62rez<1y`5rx}X#~Kg+GbRES&TW6>y-Z2$PBxl z@#RQRdEFWJG~<{Y<4?1-NM^7o;7`xLU=+>YP0iJceGU!6xHw0_Oj(9rEhHL zKJhW5Fa8g470q2&Jc-Mv;SaNdH5Hrl@lD>9WwBt;X8LoxW_3@zxVhO}L^)k+-p&`( zE}^|49hUi|QLQfH;X-d5FSbGe*r+xet*2pg-`k=L5jvLzt{)hP%K2C<(QN63C*&4c zG;*CWB%N0JxZ1b@SNAF%rV_1(unWAq`}>og`T;mo%S|{iT{J;4*630$P@QI6+qwSJ zQ{!X)(^OmYQod@15l}pID0$$sV>Z3YeWhVDr+LQEZ*H#JI*-k@x$o0}WdD}YVUVR% z`}G7mZ~Yf1<@B|Vvge<(<_d^m8eEPjxP?aiMkX=hmS0~AVts2pnrHRR^nqP!_{;#( z;}cYirB62*mr6HXzJ6Ze(1VoSBU`#Z2}<0>ma9u*c#I2yqR})l=*;&)0Z4|W^)&j{ zq~VI9mj%ZO2*A7yIaV$8g5u1nsVSSC)u~;OUW#-6@qo_Ev_+P|EIK(E!-fC$fN;2r zPVcfdaCd`UR@2i<0K!(z&e{w*H`h9f-G+hxk|`pl(i3DbZH?;3Sky}_=fCs>u~8^s zP7nV9NSQRyGZaBGIqa>MyhIq?T7n|T;OV>^YV-sf9QOfKXZD$6eCOAK{{m{F@6tOZ1$(GP>+XF-lH_o(x6 zWb9XNwnEIGHf>E~K)e9ygu#qK%E-vFXM%g$Q>3B@y08p6HW z-e3P6)wFpk0tK<&je{iLA)H;TzzPT4#>NJM>|rl476@=zfaD?V)|88%zeILi2e+6L zGPbM(_6Uir5UD_FKzC116uz{yR90ypl70cFFgZ>EINk=DEywSo3U>Q1d*wp7Ua#z5 z-$+gTPHbrdLK0ADT}R~CwjNhh{r-O>*8JtXAULUHy?v3@zNlU!x<^-XZT_p7b>7_^+zRoIcwGMmHhqpfJ!6%8-& zZwZWNNRCk;?PA1`&1!RTa3eh8zhdCWExXqDJCKdQV@h-|okytXS**OYqEL5Cp%G@P zCAKAms!=bqS_(?V>wf;6p6Fz&PaAA)2`?%{5c&^#kK=+McK-@Jb^+0GK+L!5-lqN*PBYTnR!!E^r>M^sr7?fGoK1YXM&gyBW z+yc>JOO^f-8kPP}yw~|kXug6tty8=FB#7)117yOs@s(@4D>Wk~0BHPs4>KeXk~1;D z*+s3DZq-j^YjIhGZT@6<#^0w^>=3(u;sdd|Z!y*+M=qFAdAP7c6tk9Jdgs{(Mw%+a zxJ`VE3txx&k~tcN=0i9L+kq>4n~Ku97@;a@E^c8a{9Yb@`)6e2h~2iKBPv;__Nt@= z=Jk?@L2>9<-T|KJkf_Ws7n>YJLzFoVI`9ja>KNpxB~TZGQra9$=@j;Sso0Ard)lWB zjy)pR1ae35J`iU}nF|jo^J-d#V?+aw${Yn2%$BQsFMA=kB~@LEIvkS`G=yGwmuhTc zqp&QM7x6F4tW_;Veqe62cw_T3({g6$sm1JKZi7jkil4%kp*j9iJQlsO_%A50E9rQv zLfP@QN8AFYZ@ZyEf+6lT28kO)ndR!N%+jO2zR&!Xc;-!X?wMwL)e&7aNU5ufhD#;8 z+;Z0I=OZ#4WhlIrH8k3tXUrIhgD1W=4ZTUab=BZmORKpBCbK;ZwMdCWQGbsnPa)_2 z@3M;aIM1cut7iITFz5{&V}DA6Q5vHBj>fKta6(h`paOBM=;iw(AdPRh+oWu{BJ z`f(oJS$3>WFBTY16suuqTFQ5f1{c;wy7@E)ttwkQb_~~cUn2ev4pg$zj-Se7t!y1( zr(8ji&GKUR3ERRAaLFx<-oKw4l_70tu{RE&jItDDlF(?JC67dDOd!QgVQ;dXv=+mv|Bg;fBU8^; zWF)qAIw2-2eYC>VPI7l4>x=egkZ6S~ZlW&5#`Vup^GOsN+Q$Prha!Ot{yGyyxQ_1f z@@V<=H@!Q7?8`@l*Ccn2KCXb8JlW{;#k};4ZzIPdCK#zmFiuLTku*Ecl`Vr4AJ7yw zpX7_YjMG2=uXvmxs&4jFkeBpbGRG~x-d=p1+Jl3G=n#s9-<`aPV{t)36UXxO;PIyr zYlYQcEav_#WNQdO5B61z@c{ONNVXwX6&7xQo^8IMiKZKbuOWZNJ^(q&@;J?;(f_I- zbSLH(2E(N^FaO+=kKvOC>IR(mn1ju3pwe=|zib9S70qoRRkyMNayW`T1X0AX5ClSh zC{~5F?Iz`mLZ8L}Zr)uIEUK(vHR3z^?i@w`PfA=d>N|nSpj9;i50r0F!N<=9t16P& zl3JJU9;8V?Lwp{QmDCns2VWs2p{k}nj z;8KVa1bG?S8sYy95wtbYf!S5Dja#W{GT-3sxD-y1d5UskUtV zjAZ7+;?l16)1vvUG6pXUd?F!Z5W6i~a?*r{q8GW|*jOsdqIN#eA}`C6f+l-sDiUlz zatI{`G_@;9)mjT1Qd7etV{5VnQkvjA)g48*-Hjg+T2@i{*tzZpo~JJ=Tv^e=OK9q= zpTYK1@>8Mt*$ftAkbg^2rxm2Ha0ba|OD+%z+9isgU>gn&&zUdC;(Gb5HiY|Dpeq*{ z_szm1cgkt{-RO+ZO(DV}c8RfOtsMQ{069SF(X(N)^pjva7_apliD}?C4d?-)9A^Oo zY@Zr0refHtQXc3RAkCCyWMqDhy@5I(5maVmNGH5p^8wrJ#Po5E!$)mw3j0^+HP1_D zy$zQ?tD)n6-ez1iFnDHXkAh?>&CeBz_13N&swuYrtXZ;@TS+R~U!KO3V)EwEL25!$ zmcx6w)v{;;ut`-En=%kSu?o{l}qk#=M@M{hn8Mv*>x+<%dA8?2`D8z+VirYRpD)jCyFGRXY9 z^9Wa&lN{#1c9A7DXJEOtEE#3k%J-b!*QrTELJU~BA8$bTF_TS+gO6sS->V-W65$#1LEudX%nhnD#0L+iSl`F?HOLX~K-)rnK* zq_O11!ZoqD5Ml4sSscjH&a<(vVVU>)zD=cbDNFpsPXcgN=+)d{E3H|5Q1txoWG zwVLbxEaQgGGx_jf#iOaA461ho9szlwy9AI}Lbt1LJ&lHJ!+8ZJLA8YKE$L*nvX9Z_7y$1mH zj3)G`!A*H9an?tgo;b@YCuk~*(BaooUK5jt)8gD{_770*_6lSQf~S_+dHnUU@};<# zheP*^I$#T7tXU3~PAfE7m-gUB_NG6gT>|nDxTyqKcX@1oOT^i=u;+%*2Bq zCeJ@ej{Z~26}{U&B$bEFH5Uh&rLueyJRxwHU~{E8*e)&<6Y+*(97!;f-CbSK>HHj_ z1m_(h8xjUdgWuiInH(SLfoZ5#qhdV}{R-RR}=-&RtuESnX4$r24CW3hAU2Y((de z@V)CLSIyAZzWMJWqK?)EhvmAGI32OiY*Z#$_zA3%=Hi>~YK{Jb{fHDQkqPu-13({svrsjH=T zP%5D&vSwt_CSB-eD%-lCTO@8n(#w1O9yBM6O4;ElrYmlFWajf~8kYkoAO-kQ0imVc z5dQPY*TYR!JK1P$^Y_o}k4pPXhfIf;mzM*8s_wraw0KEvbs82VxWndqOJzX~4WftJ z_hDujuwp0fbv`3v=V;)?n+;SUG!Znv# zI;@OVDG_7LCSjOt#TWQFj#U&T1t#Cmb5;n>AYrTHiwOJiB1`IMSP5n`YG@!EwACphD6g_j7(j zvI{8o)z`KfDXn{ewlsH#!%Y^MeyJwl@K{fQ~ zqOS9Msq>@qxLh9dI6a(K&dtMYQ-i!fkSVd{eMtg@Po@jt*KF)Ue`Wet?nb0)MEu1D za#CfC8gn9sD!JM}a_*NdiyU2x+bvsi=)xVIPrJTn+Vu_BECFT9^&*k?qw|WQ{1>MT zMwEL_4$5-96Wi3VG~qwt_z1#l3MxgFva02=E0s>UV`jJ@i-6VBKHFsr*4PNR3d99F z9P0|g(rcASW0^CD2uMY$i{PvX!C|lg-LNXLy+VyY-auf>gC%L1>9S zYmKG~0OS5x0m_J+T#(8jBGHCrozK8eBP%ycT*g4seV0Yo;X-Xud%4qF3rU{44n8p_ z5)Xf_X6LrI3y;#byLAdWgZvq>|7NZoF2c0c%P!=&a?Wh>Tku(fQ~*0cp+zm1qzzi1 zU3f}-J9u#sj3dTP?)l3J1%@(%b0WgdR!47}>8_C(=IW)lVHd)bc6e`NG_&TjhSD;` zu9~{z?~{e+pkUpBKO0^qZ=5z%Y0vwq);mGb1eV=hTePtEfO}tF=u*#$`yxm%d~%*W zfgyf~NG*iazr9AN3>Pk!T72@as_B{N+2gLIm@4)Y?gwIG4oM0hiDG?} zB(G}HdV3@NvR-wX^org>GHUGu$J3^K4r*~&@x8V-Uvi5HwgNI(r@&h_Vp3cSj7s}K0sR8sBDL2{1X zx|QbwT=%r9wy<{%({>zM2fa-rbJ!v{W6QF|BJXZFBr_V!SC9g*eWRD&wOisdqAR=3HCf?Zz{X@@LyrWD+ZkcKHh5(A;M<50aVzr z$2wNP9-8=TmlT;veGe+N>I*v>edf_O$~vD`TIXEE>^+_s+fiNcZFxTQsnTS?)>S4% zJU9cXnY`$DLnqIpkYyH-d65u~oL#G}ctqm0Xc6vDolM5oZ@#_MZE!FXU!JZ&kzdr+ z7#Qv}w^l9?U^;*f*CZXZiTNJ zY?ox#)fnFv>Y(peZc8?4iz+-8IYcqEbhaqVJr>zzaU82!USf-|!tb<+x_U^#{hfLS zy){!T_qfuZCvzxMZn!kGadBvO#I2;g*(#DTAr&0{u2Xyan1+FmEeG za{8z}THQN9O38`e^hj%)I5kdn{#DqA3t;r@oLx1^Ys2W7}5#Dre?{ zl{_bpRy@d@C)%U!7wUwWY7G`Pt`}YqDc3XxH<^l>wyhV9$Np+cuQjT4$c*jaaBl_N z`uDV_R$wL+Lqk0ePV^qcd=65{m}FJu9dj8$yZ+oEw0&CqK?g0t12%W5D0jKXQdD%9 zeh7Q~kyt6J0)-(%&o!hl1dwT0T2<%&$Q{+D7Tye}HS8LMV+i=PGZtU?_(R( z|Fo53h<4iHyTHsh+gSDNb?3WKI7Zmn+e57jga+TvOOXHyURkiLA*eFwZPHD6SPlF^ zUgH40AVdvqg|n(DU*R!Pw2(1DsUAY?!)?dmV1P4p$6l_>TYM?t*{J&#@pfKNMdotM z2baHaB+s%2BhEluc1Tx6Sz)2Cj8VPaC)*a{w#-pkl8xRz?O`SnlLIPn;Z{KZ$S)wH zh$;w<*WF50(xQ;-TDtGp&F#9`#mlsql+HD(XH5O`L4SOC@^@iUjnSoMjxjQO9Y3=K`z*bsy0bzxu5Z{u$I+At(x z%d3=a)eIjuDcoly_8jK0TJ2HXYMIDJy?&gp`JC+XBRZ3=F3O_%aueU_YRQP^zkFwVtOJ$|nN5;qF~2qXW|?gb^Uhndd)k zo8|z!@e$GuXG(af{D9^~ih{sYSot0tf&#B-saDb9lQ;qFWD4>t`SllCnw#O-JWddC z)88_FTr#x|ABP$ER=~kB)$%~orQ{m&FH=4NZsFJ07lx#H=XGXEneO~ZONK!um19{tCJ~S|q>n=e59>4&UQ45m+ z7cM<9v@w?9SvQVHog5^6;b74R^AWbyi;#RC)Q^Fb)^q!x zg`e;F(a!(LitonXQs_VNShTk)ROE+gnS7U0e_(eKmgvPxpGOjSVq?{AB}VNO9NOiI zL3h`r>r%dg#xe_9bn{*`3Xy+=MMR__TOe|!NP%+WD)E_<#ZPMS5Lbz2^~)D^CtDHK z72*ir9XmQqui6~SYGCrP)T_*F!Xna|9#?3St6tmPkUGJu=C7Q1Gejh1C((rT_LWCwVmVKna;tczCt{m2;S zl@ZDzB>Pc}Ap#j)R2l5nMw*dQY#Gz?^!i3Bi4 zx3{CbFHr0I1c2d4#BG;eK5_fN9Wh_<64#@EZ$%eRDEP$@=&w%me7{W_7=W0iY4FX-a}SlHDpB8Ohdyi7GrQnz7GwOU@^xB zhK{4k8ak!Qs*xfsi#=MSVy8f4W5OQ6V67Q(OK9`>`}2k2w}h-S#VRj+)hrhD3Y-8~ zqXj+Ud29m33Es!=WV8)Ahcn;A`1y3=l5^3uF^I5gw;_^{kTRzua^gqcIWYie+iQT> zF{IYnMWI62SqN}AbggnL)2HbA@CGC%T3UHTsT`fkn3ZJ6^Rx%qWk8e!3umhoTyRUF zFim)g`ONZYh7rp?c5jOQvlACi@pJRdfsv6CrFJ4ShRo~-PEO=FJwb+Zzj?Es|7e+V zsm@RgmGk9gkcp|V%1L_^leRVLF6X#PTd>*cbkq%zDjV~@WW3WBvaYG+(gyu`y@{!E z8<8?`Q<=w9NX$h*#aUVl*}Wda1*0{9v-CTlsP(C z_e@t0q&a(2hn2STEnDGah_-emG@2;O6vVT!_7uqs*=MOOq^?fzE@4^LNDnB?$J`F% z5hI>3=DBHrKulL78TnlO6UFNnX{V0g+owQ^^i|lChijzbtI@o-ibfSx-CvWQWoloJ z{z(;{uyZj-^KnWOqZ`e_QPbE~r(=~6^G)|J*>%6m1!BG$u!V)Ej(_rIb*;16+R)SZ(R)cH$zt{S0?wK-#<6{tdt=%BJGW3sp@y4 z2f+KJmXexhQ6Ap^-EZ^a&@4c-+`ekdyU!8=an9;-NellEDydIOum3pfFL&rAI*y|( zZh7`>NM#ic zO%7sArq2;FsCgLvhiVn))$DDK)ngRNruNodrilRRo=_6`7~ljA-;fo8h8N@U3Upm3_mc>f#Dp-Lf1#1JO9ada~JDx;}jm&pYx2s zkG+y5(UcQ7WS9TOys?zoAc+q5>5 z-1T-})*YMUJFhq=pS{LlgSB7y5uNAmsHSI;y~e+iLA~MefGWmD59igcebX;i1^SdR zwLp8P})otOWtT6NN6aaoFR^#}J%|E`BTFxf+9$E{Wn z@-*>iUxB*d5Vw3+rhF&_Ggf8eUG4H`I%N+Rr$?_)Li+FExXn#&>+CV;QoOkp*$jf2 zpQ`jFL^1FXDG)uty1^hU0nzt*!ai62y+M$;K#%yAO(Y(zm}#JLddljAsYt#vJ2?Fv z2N2>Uqh0|#=aacCVB9&}O7`0MKOTCnJa>`{5lMI+?oP4yByRHrPDac#xkSWeoryh2 z%rz`)n*-o5{n%QosGPxf}nx_>4^PFSe@QQt>ze=Gb2%^EVgg-*;((6yxc$Qv%ci!6P;;ocl@4h( zj*0ZSSQdmMlppo&TV`#8VWplOc^2Q1o0<|v;^w}j;r-RxA!d(5FWS%)gfYrUNFlru z&kwiJD&ZzRHLKj+sq=pr_c5;MN0vrXoFMx7#?r2Rt+LLG6`_Jl&I=9R=6TevtOt;J zr2)B;rOoc=PdW4s^|H6CWpd~oJcJn;!2OI!(+@X!%*iP=7S7E`8s)yFK}H3cnDm2t zt<77dX9e0g!|R%9;(;Hey@l_L0RdQKyv+}NMr^tp_qnQ^=8 z_H#RGVvH@{`h!UK*RN<+1_qH-)mN99%L0AI?zD%YoAdeCDYcN#CFa-v>QMANrXoDzep? zZCr7@}`~K+n3u4dsoCB<^O!jx~RnNqJTtc)5K_! z{C|bW&Qss;KKiijr4f(OoVd8Gy>jr$L2mm{x$A!gD?vtq0$9Ik{=XRo^?li0Nzz~c z>uEk(X*n=b)?Hn^PrUD2bpq5DF@Mysofb(^esbQ#z*nlVCQbER*1UAkb9itbrNq`=P$#Ii%|K2GQlMF5Z^zu{<+eC zIAHI<9l$+`_NusJY2H~jA?0AOMOtb>I{`Yqkd7HYR6NeWb85^^A5?B>`kAxs9B$3T zNIfMtC`qnb?8k;tbz5RT$#8!zy%5M ziXd@SFZ*fdS2}1!2}cINcaX0tT_|&r;DjE;nFlS2Oc$8m7=oH^Kr446=x$---UB$- z2grbyLUsf_1wr8u02+`?2jt?jVaKjKAmiqLBrliQ9xwM6RK|_C#R3uGiyPXlKj2U! zgk6gkuup>u`G|sP5NdN?pd{Nra^DA0HALMZVFNsHoQ`^ofW476rQmZD3m*(30KRSf zy$67PJ%h2##=o9PNb67EfSv=4VxwKz8byfz4hbWjI&u^9`+ymRBcR$pY~|Ecap77d z6;`{k4P6M=%c^z~T^?4O8n(z%ypv>;^80WaMb*Si8pu3goORxwgm9I0cAbw5Uh*-vCiy=Xx?j1MmDklezZ0j%CTN#OTU>Kd7p=)2$7MSb&^n|XY8Q*EjUG5!Z1nkE?AI0A4BN^%3e{0nwbZ5a z+0rS>GjgWh9m--QI5jeI7O^rSlocoo01W~SxSkQJ@>33xw|d?z^P2zdH5Fa{v0VTjtN zxSel!775@&(!P?C=(c*~Z-EOl`l$BoqWk*!w4-sMk&%#;4kn${ghmnd^aGq2KN)4T zxz$nRMicGwatd;;SXb@{@3XHGl5xIorQzHnmuEfK@I|)8UiYV0rt?rNEEc8UdRIc6 z#sAu!>>xo&uYPJLi}!H+J9d;-v+V5(7enTjPY8W0y8MHofnKWbR%$Ov4NVZou)<-8 z{mKn1J#4|g8;f??mH;%=K_a^urK2w9nQK+Q@X56kCH*eTAc5uIMUP&BM#mJ6+UgQL zT)hbXP(Zs2V1#b?(HR^{+aiimMQzkvggp#EKy1=3B zP_R$1236s?r)kMkRWHM6)vceZBdbr=_j%M;2 zKZOIIKZD7#+t;Nm8V=iet^!2I0(L3oDc5?XWGPed6c!A>yJCQNeobLpMf6*!i18%p zpr*$Yn{+;$A{#Dd6dXUF@dbatT3fAn@VURe?x|Lwby zh1H^zxf6D}e%Ik}eqbWU)k#r7wLMg|7lq%7jvgJ_T%pN}-fQ(}Vxi#7;|q!9mIB9$ zcDA@a_~sG1(a>KB_75ybX_|`AJ*+E<75?odT=OMwr4 zey}JV=-;TYy!{eOEkyJLA|9u>mut;P{2=uEunhqL$u0Fr7#rp|Xh@D^w`f+m)F17n zp%;2P5bT@Bacaf%24f@VvrlVI>q%?;G)P(XV^2@pJw#1eV^M0bK6O75%|Y@Z(Lcw^Z6_$O)qeu8hlK*Y z*aJg{W_@^@Ob$fEX!<`5NJ_D_yH48iKUut622NS=+u2{J_SbFG>#k2b}b9>=CoHtXwKxp2La0V$6Y?f^IwKQ5O-sEVp|{xShQ0 zBBtZc%yJ>KW#e8zz`5KwK z+&)xRHmv2m)Up$Y#RRvE*!^M12<*pZ^|2v0lbOUZ6mn)aMxVNwt;LJj)MR^5eYIjg>t~_EXo&UMTKR2DL!;`s_g}y?p$wUO+wARLSQaJTGX` zgorzO)pRn!Qws^FNG$gAm8vbkmtcj7bLi91taQwAEuuiH9bP6QGX==ab^;*DR*teT z%VCv6t2Y(Zm~2jsHkf!N41V&`!j`Eyu2*43gQ^Ew0j{HbHlkPyEM&Q$5n)E- zl|j(D!~O+3bAhZsEa@=RZ`5L%kQ0LtzGri3I7=>)6LD8-PPtigw4xmZX6owd29yVJ zK1c&%4F(t*NMGj5MVLM$8Iw;+cS(#yb%i-FO+K;aXHR8jyF zYty%a%eKrmQZBy$xE4TNKaHd}t2m|0{Hy2q`-{M)2+gqB6SW0=z7TsX$W%x6?j z7TSn~!|Kj|+F|`Em-866di1IP-3|Zchk+hbiR#SpLlQ`lTAm)}B9c<=0=EwZN0Gom zFblqHxt&0dG0K2=@eMFN4dpFk2z?5gd28*5MV49+9Hi{xA{dT|N&IJ<%-EN=Y}O}H ze)P{4sRVFks-e^yO3eXm??`O^t=o9K%gqtfTdcQlC~_~ycYlbOe4$R+Zql;>a!KuqUcs|Q&LnvB0V4goG&lun zE5^CQ)|QqH*piV9S?g7@n#zsu0SxW|gPpN0gn<-m{1+*kv^M#|l4<*qKlDqpP(h zG*#pr6Ie{} z$*0fwUAXNUD-`(Hpfb(mm(4*)21-U}xYPk+fEGXr+m94w(1&E&4Nil&2PB+Rw(CX* zqOM!iw5Wnj+O@`eoq{f;_8hsb7HtyXmy7jUxtj zMLty{LqpT0yLb5~Uy#yl?e_}ADdZVQ9KT4lKOLP7f6v_6rKbGbuL6rL!ToIBEAc(7 zdBEc){-ZYayxvDHlSbMgSBzMz$dUDY(?AiI2N@pA`j#x$e1Z32 zg3c@YgG864t@Gu3(|*`q_e`|!*RK+>B5o8?$wa`3*F%uhc@_pFeMlQ3I3NioU!8p$ z0`EHu4doJ_P*ua~xe7n?0!vO!9q>3^q1LR#%mJDxewa%quAhu|{(bff$lq{Y0gu;% zMiGJn<0eJGM}BLXQx~YzGs@P^ZWeZ|h&uAl_rJd<#euA_F@C?g{qliKUFN=CI}D(CHp<#GQUK`iQ4`?30~5-5FuRm zRqeZ-_{^?6OFLTI0Piu0q^QIt;3;J`W2*MzZ@%n zz#(G^y`(K{>g%m7DqTB^(?F3%^-JE?$X{e6DC}=Dx}B|>rJ9tKbn{6Kjyn5gX_gXuLeUHS%Cc0# zE~GL1){W4J1YQ)`#sS`1Y`D~N74|WGaL9dYX{j41Fu3n7fJ#ziGIYPDhLYPHc)YRE z#Fi9hEb*9BlF*UIv`a!uSr>&`nkL2>sB+~8zT9;w7J~F~aS%2_2P#@ zEU9A*$@je)G7=TU!!{2JjhCBT4Jv;x{m{vu-Whe?7+rY6^Tz-mW%-Mzs#r7Uj{WpG zqqdK)Q&Q-E0*EsE^Yd*e_Bu<<)v_Uxijoj_9JKu9z$*TLZ^a5a$c|B`ggL_|*O~d4 z$)AF^W#!8P>=*T*nDm0y_2zoyd*qezW|j3kk>rJURpf0LvG|z{z;+3@ zD@LrofZw>`6kn_Y(*;_Q>;Q~!QX=?Pc8#tlYldl1KA1?#$sn=zY)-6srg+JKH|c?Q zrCa$1x;d{I=VcBp%Mh3IQg9ol0CoK75p5BTo&O21k zQ9X10Nzvf`_sVQlwl<@p{s6AOD~AgAOVMy5BCl&0IlXY(!I=}@%G}R)1#?7tBHg6! zCD!N{T)Tc9_dy`l>vl)070IB*MT@UZP3BQ%UNA{PO1X5mawKqe*5nziP2>yTBcE`& zF{DbsM?QDz1Y~jJ#AN8$M9CO>79_s4M+aj^xL%M9 zc<<6+H^$h<9Y^}%!>^!ksEY98%zMJQXL0*1JB=fUe)i=_fmrnt%Zq{WEfOnQN1lSc z2Dmtm>6A_#19*}1M;JK`n?Yl=iTg~Xq4ws^Gg-k?A|y1eA`gW@L$;Ds&oJRg7`(&5Zj|UqgimcmkP?g#Fk5OrAceW{|b2Llx4O=gB z+};8drvVOhz`=o4s`2n(@A}&s&x<1O$=KkWwA}LF1Quh})Tcaa*|ryg8uV*Hz3Qo3 z<${luihXj*164-&D!R~-vIY^$fIS}q)JiiW?raqdv{+y2^1wz>Vnd@%zWPs}fl&H;&E>F7Xt z7?dhItkdW_L`rAYPtw%|^qP6K8xdaVR3XLZi{W^}LN&=t5s<=heqPCLE!T%57d4h)9^3)dctbY0ayiao%0u$Xuzksj804{r+cf zWjCFj#INBEl%H2YLKSd%+d(kS8QZH?!k3wuDJ?B6_VVRjk)27BoI_B%HNhP!SvepQ zABUL4Ml>qx4bAp>zJ@0foJoH=e(*d)t4j2m`OXft|GLFgqcNNIO6;iJr%ql|z^YGZ z%%OKY1+s!c zMwPO8kqg!gRzm{jFJDT!&!%^uMWIRrVUj}rx_PUV>(Ca&>Me*03sVa@Ela?jB`)}f z5a;XK0{Le^ctp1<6AIJ?9(+(pZ93G>n8yY^8|I`CygSb{6PzmdxOy8 zn+Iu?Sp~qfGXPuCmAlS20Xle#oN?rO)dL;??CrWUO$`mE2WnZW?deB~z2!zcNgPt@ z{se+$SwW~r4qus)1(Oy~0oP6f1A2$ygq73wGdW^1!<=rP6+8R=pVh>Ib}14oBu#7# zvk(7X-=~0DJvstC@o{U{`07&iaNFx#4`e5~x8)>A?bt69zP+SKiVrPOAMK{y+N4b4 zlc)m-*~MRs8f&w6jU$$PV|=UY$I`aa-N^WN{kLx46jBs;fk!yq(bOeL z`1IShJX^C?|I^wx_#a(oKdcB$F&EwHTK$?y`qTdRm0MS~80d~)qQ|#*b26%1nx%N` ziA?OuL$>rV=Z(p;ZoEWF&j>yDbVwy@0g z0*T=mr=wTrDfynbnV~xbrdTNL?EiSTHh5V7eI}%rM7fET)TLo>y&`o9?aS6~q;2N+ z26b}uhgv|u>xu6|wt^g#t$d3;^DDE?*D3maykE3aFbjOvoe2v+IgXbW4a z=e&Rike*V_x(ImX>D}Awc7tyV3J=^m7P4@0#<-{hb-Hy~ltd+F{K5_+nLmW4q=UZEddkk3vg@sN zcmXd6Ij2T&fB73cp3L}Pd%^hW@o!4uA~?6V<$k@Z9s5SKIL?Iw2H#9^2Z3v;Z}o4A zbAM!IKM`E3hc=1TlL|!hVA$C^KQ@h9J5LOd3jA9K24$KY-%^#k*RPSDIA=uZAHmEl zW$%UW?sHu5K*?hPqX&jjQj!MyZggkr%_}m0AA*Dgirf=}{8@$m!8+jv>Ut|RNmkz9 zAqW49zV(sfp2XAFdo+@P=;9S3z_DydOghGjLz#$Z+k@rj$(DVrB8p5_f%8e(i8DV{RI^T@ zxW`poN>z<{n58p}JioPierv~?>51TV>7PnUzW#AG<>_=DztJJF51W z`uHls-zPDPJ>*eL7F0}@s-b(xc;y^{S^xW9*??^mW?wuavZ?Osm#Kmh56_)AzC*`% z?A+nM7x(uPB~P95`1daVz1eg){Y^LE&RvTa_6RyE$9KppzvuBWLz%SX;uBlfL*?xZ z0@uU&t%~PDYfo-!5vrLYH${@};Lfa4kE`(UZx2iT{;gdoGmn+%EJ{!EpSK|mcHX*7 zoEq!@{~Wjo|m0l_&$N$@gz<`8z-E)oj+^8tN0%(|I;+ zZL}%EzSQ~C+CxI(mv0m%*k`@q8&UH*H;fko%eLcjjHYvkSZqR0vO2x-NM>#Jii+z; z{~7Ff<6b0m1g2jW1a3*xQFk!c>vTvO9v+q~3tLe4=cybJp?Cs6!^dbG=?eVJOh*_P zg^?ijfoa;df8IJa2nM+Tlep$>cc!$XAl4h5B3(Xl)v$cwb4J_Pd@6gEMTxp{ zts!o5$!E35Af{7FJ#=Tmwr#2IekRNAJS!9Nva{6H zWf!AqE-y+C1FNT=$p$tBy{D3yU5KNGSFS%}>Z!?y6!BDC)9TB->X&|c^i22W(oO3_ zSr6GL861VP`>`>ePDMpHj6%3Xx0WLu+a!rJY~bM~Nt2qi8BAL{vssBq{YplEZ-P6R zvBu31@V+ik10_ebjiu{2GLA5NQ_oK1C7OwLPB)@k4#;^I!AKH)Ro+BX!c@DAlY+Wn-$g)_iV1ljL7H}DkAY4w z;m-Vj){i*r<2O;#(17I|Mc$Ga}q1M zU&hyb>3`k+{h!|>c>$K7jFvOrbVY-RzxoIyYZv$MND@?!CQ z10wCG5cq8ZsriRDiBKUnlyd)>0CcadQ(nDi?qMP5alt0`WoaqS@36!hIDAsg%U!v5 zI#36k~v* z-SfN5VFR^H61@5D@*iN96CD=%%9kq^I@9DS&s@LxV(nR8wXj|uv@3T3`?vxo&w-Pc zPy`(vZizmOy+eeYWr*lBti>f%Sa(rGb%uB8|Gmd}{Q5VN6eGjJCX4Jc+KuXyB>gse z8;1U1t=e=zTPCJ-@^Z(l&n&ZFwT2=vMV~-BygUDj^YbL}!vqm(#!wlLZ>>OIal;{s z>{_MgR##VXUV$f>3L)_O*ZLrF_!MXPI9>+Y7epSv0XwUQG_gx0BqwlS3saV5_D#aS z^V5o-#%)7sACPBF(J3ULA&=w4`StTuY9o$Z}` zMC4XXM&2nL`VLw@y%~8fl!pXa``AZ9oV=b4AHKBx-V?HPu07JR^4Xs8HzG|8c{`hmjRp4lT!6{AR zQc|Z>P*}lqDBouX3T^-~dlAlSyD`3rhqR4g%>Pv)?s*AMSr$GfK-d(}i4Z!wYp8rJ z&tfK^;4ygxP2(p(zqWxiE&zKX@Xq+y64x-tHvCujgbpwt+7{i^hd#Z?+yfZP@O9%C z{K&QMsWz8QU};FFn>Luy(wP3cx^16QkhtDHc3LmF+5b~=!WKhr{I4FYp^SR#x`D{M2r9wH5z#Lejo+1X@OL-M>~fF40_tF3zl# zk5<&3O4xPtZLb-Y;7|l&6t)3j$2;Yb06t#$nDuPiLU5QO)Rf79C2WH=mAJ>S+(0E*oZ1n=i0*>+b*j2%c`1eLZ#=ol*S33bH;_OHzzcy#&p<)!i z>rZHuo#C30hG04``V$)Fl|niRq<3GsKy&xX29AwslQt>QnWumL*-~o9{v6+Wrh)Z> z7R892E3n1?MJ*tltG55wSH2OEN0}?TOmT(Ut0kq)7y3s%P5WrX*92kY* zA%IF)Md7ef8^_swh^N@BS5}Yu1I~x=IPdsJJEuIzt{1zSvDU>9UVc*l?mWy#nCu`r zdQ-VvA=lc5&GrQ#X+9+kD9PGaxF?En{s6X05ZZhaATj9RCtzvRbxXdsT?y$UUmF|e zFXG}K00K)2!lH9?<13&N@`Y35^Z|pv!mWQ202pxj`+;ww_Q}n0aJsy%|J4b5b}F^K zlEk&QutNJv04jURqh2d<=ZaUtla40V`~Qwtq^46kLnMBUm6ZVcEkNjMYhIuD0cbTx z>%14au9%~vW9Me#7of6^!PcQ-Qg&nU;19hRi%EOf=3Lv=n`9cHa0>8 z^a3*B4>;S$w^t`LuayHIF*{tA$9HN0a~VK?I3H8!Bd_^oM8uA?f^afo4fKgbJvG*n zcbxxRb6gyFjhyvxZxrzT3BcET8}j|}#`3IZ`==Q8UR4iqT|WtV)YLtBdbHwao*5Y> z!O6kjzI}VeJP@j;MEV63I3{D&!ZhS|6cWbYFmice@(XpPk@rt?~-#Pf8k zY$m@EEtQ86U-oNQvFn~9TD0w-va9`N18`@}lbbmBqFP6X2R|Ta@F%$0b>;L=-$&+3 zFg{We9zS-Y!*^w3>)ZsQwedlycZF?#%b3;kvG2vBF&C>Z`;p~+*GSCUthYBiR4l_b zRjHRxt06Vu7r|)-2@N^d0-ehnGb3dy1^c_;r@bq%7%Xln%gD)j!G5~!$L9OH0A^M^ zpTqNONWwSuB-(eV9MN?3tWCrhDzzMb2d6pmne6e$2VJa!8X`Oa18I5Mye*gabI!f< zA4{AJW8XICp(p@9FyO!^aFFK<`nN{5OAB_NFHutZg|n&Enee!9tZEO9=b_O9#ik^X z&VB8z7y?!2XnDgKEr|hTG-LwH6ai8L7JSG)4bSl_Opi`Tx-1{Da_hEZS^DTlhj$$* zVvgIZZOT!+_9o_imC2WjFIie&`a_ApO55K|pOk-t^tC3hzO14?q3k(g^RJ1TVOt?# zCB#X=v-S$M3>ZwE+n#8Io?5btyVxflf2kW%{#Rau|Lg?*Yj5zCon#En{FW+7LIQbA z8LBzan*(zjIs^`2RY$4;8#opGDOj?^?j`;P35FyD&tlts-qZOeF#{+pcJI_OtOE0) zui=IShlhLh^r$30@wezs3s8#*Q6|NQteLe9uCa z0zV4lXS^X1*6yE?*&*J{)}b6;eH9bmq+!Lsd@#eMvsd%>((F(P8vtM@C6)eeEvtac z);_znQ+zP)d9nD~Dr~F10NmY2p+NC`nd2s4QHf6yny=q~hmaq-Q5d*aH3((F!tjuh zgwN_{MhPv?|KsaD;IZuAzwry%${raB$==yBp>89Q%gRh<%3j$kvMVE*kqD7ZHpxgv zB_mr#M)qFMaq6!B_xJlg&;NSWT{pVMd49(6d9T9?S>SV|jXjd1B~uf3RkVDNC3WuG zzHiRWdWR!X%?E{J+~!B2+127LzwB>!Jy{yc(Uq1V@Lqm5T%D3#*yMlZP>pv_WN&Ka ze#z#?zMZAnRWj2&hD{7$?VU;-?WoHR$KzKozTksA$lf}tledlzUDNKze zLwJx>pcT`XcW-G-6=bj@{0)LFL#8ST6n(HB;`S68%huOdudyRTsdyYY!#rjOfTQ!@ zohUm4ih!Gc7S+E+K+^X}^?A{+I=DY7%+U4*kVd+)%**_5X3cqN32t4J+Va z+vvl90BHigx}A*j!ou%MAHbECf$fX|o2nUjD+j9G_`v-a1?ZQR|0D$DAe5Xugx@=W z7J&t3Bq}B$Ap``#)Vv8Fxpwv;?h08>QGSq&d}hsaZP96TQCrBB9YZ zV{Kh@2D1VDNj?DxdCK6rG4|kIue1Kh0a% zmhKJCLa}8EyPJ$&J`#Ha-FWeS?_luu#({FmI&+kp8wTChCt$mmYjm%3TQ&lACvBFy zFpS=9$yHJd9o%cBkicum4?VV!V?a1H-#1a7gpM&UWN7bHneGlsb9K%Y3EQTNUp4qQ25!>W$lJ?42dcYBh6C zBGiSo#z7I!9|$`-*v0%vFhM#DH9a24wMtF$d#&C>Yjt}7h_SF$=Ek5iwSAQVT#I)G zyizL-SYlo~Z(WCNMfUR-Nr)(=e<^doiXTL>1MbEcnDh{}!IpD*@&9=Vx?8(K{#*hC ztjZO<6Y6{CvF2pkW0o7}vH{1fMZI*B-A_=@PQbJq66nVEK%*z@#rVxW5P3n?nZD}^ zK-=DXTm~@nLP6H})7YrZsmkC6q4_m(jTQFSulec4^(UF>&x~m9%!ZaE$}9!yDQK4; zabP{soJ_P#_5Z#E1^tB!PaT*#cQA_!PscCD0+KUgeV8;s7aJ zBuNRE`5*|dU_e5eNGU0&`;;^&hQZf3_w5ZGlBjHbYbNuy+I%MB|12*_Tev}r8vo@$M5g+TNm5YJ5HowsyO_-{~y@DgL@3VG+Q zuKC~nPYAF9`B13jA$D&S&Ox4WaLl%juCN>X6*pl6RbI)U{mS@d&mxDkLDG8tv z8-AYlnzJ-A{>^>E_1G0d(aMU@p{=4hpBP;~xm9U!-!^Q5fFkWYN+{1--~{P! z{pHmJP;6J>tO*o*5a_F4z_)%E;0aVDIDP_VA55k@;&e+aBDE1l4pFM;mfN0%TSJ6K z3qT8Hh%4;KOUXu<4!{jo2}nX{IarZ0iSB+S269oar%C|{w%SZAI}T|Ot+4YnZ`B6= zi(s&Sw*Pqs@Vle<8qS5{Zo0Z%ET@D;l)U@k>@`aKkA^RZRE!)3El&nztjpjm0(A>+ zBzSMdXg1xiX#VNEH+(6RoxoNkNxgRDKA&UZt?(Ail0gGo$;@87q))F3c@x5D++cjd zfg*@x$n}(_a(#W0$;p-%FE?G>{TqBV*b=Y7ejW{Uap>;AuJ)hP7Xn@naICYLws&(Y zDEvrc!x|_d2*`f_{{0Sj+A>^Lz!b>ey2pF-78t(8s;6wR6@ghtAd>WHA+LVy^ly+F zj&TS^#J>20gCP0H&XG^k+#u;XdSs6iAXSIp?J1t?6XkoF@veXFv%+*E>=VI^Oe?B3 z1j=;UakCy-o(ZwflAmY5kRy;3xA|#T`I>uTUHLD(77&e4Y$~!j_am;UHJ%H>!ZqZj z=ggq*YHxhZay7>1B4v{c75uVKX@RB9VPj5%-c`)2i$h&}&T)b`gyB&0`Z$fyyHIva zuauOmLQZXSY}06o6yz=byFPISYT(0tf`ToMQa1fOk|wDWoCN@hX04r(fNgP2&6t9> zFzUR=k?w(n-GkSAEV)(~tp*iz3k$-2uY*KO@4z}z^2nvv=?B@p_QQuRQv#O5BmBO* ztoeEUbL#kEmn!I_HLq)RNgOj>{EZHy_^q;!y_p0{woR==X0m=ohqA{4jX`D5A=+e5 zWiO*-n*A5S{LL7$-|aO@xKj-7FN zlsO~jLv0rEK=e2_)7_Qbl~|suJ?vV`0uHMpz*~A&rj@xLXXX~Xmxn14 z2Vgt=G5vPpn`Fz2rwafS3avdqbMiLO(|ju@Bsc{T9E3l;H_pp~U#PeuxG8L|2Bem7B%CCQ`{O#?i?YHJPWTQMx!#t0a&LCfh ziye&6G4T=0HH7QLvQ%_CJc~6x0r6x4Y4_zm47u#F{9U8qFO&gpcBC5D))RJ<65_Bw zW*%dC5${g7AB-G*H(dPSIz5%8CE-0`UDXniB$`vFC)2JQ=!hLj@5uf8JyxAvDJzB3HpP9J^vL zqvv(#6X(soIrrws8}}m9m4qMC_R*9-=dpLvB)e}tGL-G@(Q&Vwy;SIy$@u)4zwZ=z z{ytLPk1{G8;ofhKhIaC}I>#J*U4kjyYKrku@_5S`z{X$h{bbYp{N3h?f&A%+(D2q3 z<_@!w>da%mkcnJZ{9%WLCI&Z-Nm|1|W?fgoH@dP~%X%D$2`afJr>BR3w_AEle2Lpm3RD%F)ck3p0Y*`PlqyaD$LAx#_yl{lBaUni9Dj_GC16A*;sPPx2IFL9+W?JRz&3eEAXzFpvr|4 zTHwd&&!UacCDac*rHdog)PUUh$C5o|Q&+OExCo|+5D-7?oQh-v903%{h}IJH*I1|s z21zPtjkW_-4`O%}OS%50HaFKD4x0`KI}V8G6@F~}XNh1U5oWZT4R&5Tszk#->qgOY zBAWiq+o2?9G)aS#eERYh^1|2%Kd*PQJSEw&(~7No{%7vzbeONPKaQ)$XKNxafHXl#bKk-7$|sy zK3D~y+8c80gzPpHDx~>E9}pow)f)#(EX!J}s;Z1!G?fp)UgG4HLUp?-T?SF3DC6sg8Q zyHn*``=#zI-tRtpIty2nP1-Fby@yU!bC10JvQVZIyM`lyMz{P6zaPGc(cw|eK}3C z;KSUgsM)ymaZAga=gs;&8omUiDQaV8rYLz>!}$}o1)G)GxeH(?@-)=C0$h8ka)Xr3D^VH>_*QD@zjLwfhy zxdq>DdAwoYd*ojWNnHw_gmzVrM``_iUM;d|JQWgBwA4?w&xy~U6NIQ3->R|ml@9e# zsl!FFhcyIPzH71&_?d(qmx1^7jp0pWh8{>WTLnVS3d4vgsNC)qqGrv>%`Hm<9TAd( ziX0vW-nnq0OhDB{!*7D3m>xcqK9OS=7!q=@LZ8|Q(NT9SXuET|+-~fQq6R-$U;vVz zgn014STYd6!aNsqX7_!)2u2XIpP#eLN1KJLmF>65>dtpX{zGhl6{6B|Al$w)(an;h z!$MUk?Z7r^mXGp#Q>}h`KFo0M=121{FK;Pt5?YBmX4v+77T3|D-cF@x4D8Mmp783d ztgO2c2sIP=+{#SC?TeyA@zu!pgYPBg#2p`r+`p7h7cD;Z>*4=CYTA0c#63M>>LlCS z+q2HG;4W>Xh@#|vixz6W9)c>OSk7#8Omeh2{_>&NOz`Uym>BIMqXd`yq?Dj=4I&AR zEQ-(73NP9_^}sBXJ7*^Q9>0pJv(NcrZb&VQfCe^%K&CZAJbgGcHktx0y&@PfH`Gi8 zQ}zds4!4a97fm==VU5Y|)8nREdKQwwP9tW29*Ml?X;{QRc$gs@ZJxgHUU5#`9KZa) zhvLjl;RDYhe?H$~!m{yMTZ1pJWFte{08Y30nls_@Mb%Uu4`jXj5oxJ=pqkx}1;V(H z&H|u57``=K#8&|gO#`3qYw-A za^4fGES9X7oNYImJfBS3^vMy2O6MKH7jSw;00a1x`IOyjo#*87pu?%w{t<}zm9({~ z0KLl174ta|LoAm|?f@s2wg#V#RH^}!y%ktR+l<=^Z)NkQ(s@x!l-3go2-7u@J@w1k z8LCY8Q40-F}w|vf0Sp^7akHHKAucN??fXC>yf&nr6Z~D}q@nbOh z9tgzq+?s*##~m{wIuRmxGgdt)psSb=V?%*q^}_?2g=n^(+B@xJwxczAT##O?0InlU zoUT8$5)?{kT4n-SP5B=`VrvGL_RiIW4jYU)1)v?f)ltP)qtEdtttZ@3Q&VeEq&5tK zRRDpRfl22vC^&E_exuEWB#%k%(}Nlnkby=E!jXJEa4alrG7fuLdv`8+QW`CcovSUh z3p-oO*UI{dj0tp)Z}+~-Zf28doE5)c&)`A4$@6YwDN{OL_%6=yM!!q1BKDHhQg_Pi zVP)mya*d3=@qjY0?qR?}LGTtf%4)DUYioc-LV^}-3;raSAOQpq3l<81p>Z%2ZP?rb zJAvr1Jr?khkgYRT5h5)qN zg-zdT%#*@r6d1(`fS1?xl_kFZ_%ZlG89$S`=iO!cJ!jj8AD?T7^rp)xpXch2D)f;p zfZ^QH1~^q4bnnVgsdgPQ%kINT*dIRn!LDoF_|v&LQMWohCHt^yy@rum=OCs3%rE`2 zn$!xhGJ-N43hd+kvE$N3W2RF`T=j?nOOPDo?}H{mKvx-{1F&QuzZ|O&Bp5nKG%dM$ zMt+~5*#V>ox-k>LJb`BG5x|upfHIBfeR>3Wg4G!YRm322csO}5HTd4~4`o+qYf9>; z67wEM>`87`oH`X<;xvuP8q{D`a6Z@YZx_^|SKxVhv+7 zuizn`h4hxM)kq~3QJ9~fUriVmT@etiA zP{n1-uDG>urIfI55Yd+Y-o$rm=zTLWctX=`~b8mdJbe`6H5IFJJH zaeVwk&>`Ojh#izTXIy^`Bc(AB?WH!ZeOm~4AE@`0jbfCI0*>zPCVOSiSmsq?dXOOj$bY{#Z^43G;5#PDyQ4sR^H!TSnXJ|TU~78nUk_$`bD!Z^HP{;&fhpAmz(SR zqs|hKwzkgoUD_OqGY6P{x8i)dISh0r>%y&O?PGa!^lKlu6fRRLHi8`FG|=+^etTd` zV4Rnc8D(om;~~xtpaI?h!x*wbwwJ{e9jlI4`)K_EH7ryuWBqm$~v~^y!Y(0^`nNh9c1!(p&k@ZoJVKMi@+((O>4JTj7l16;KbO268Xo19Mg6bNB$*Q5!b> zTYGyWr~&3nSpC4~1Isp|AONq+AGe)?g7Xm~9!Eb+qkPE`f!~6<>vd0oP2{rb(yP$d zBNQ6Kv~mIue;KtXOehPW!Y;?YoBJ89qd*$AyiSz`pIxre^F8c4rPI&BJ7*4#EYQy& ziHV-X__4cp`DtKQn!>LlU3>7F?v)biXexU_K6z+V)Cb?Ab;dVF8WaZJn|%oTxdMb}+jkp>Is0!tOA_1^ zhpQrQZ1^&nUh;wL;p6gRxj+dAcMmPgdal!_zEm&QL;`wh0QDYR9(xdH!O8%{6CzKt z8Y+G5Iy_+y0d?n^fEvqQT81vK#&_=AvGPRtDPUReF&e{Fqc--^Afyf1PpxO)ksgMQ z4Fh%FlHi0h<)=AuY0(H^LVk@qIG+PjcW=c@&tNY3wo3z6Np>O^wgU?d0;w+oq|W{? zrEGlXB@2m0-0fohO*HGxvy3lx1%U4Ln_gj3SURjuKe##PF!9c5ld6LJV#)UBO?kX$ zpOkdFEq26>#}e$)Mq4+=((*(tUV2K~IY=eegSsRx7!2um_3FS62XhJ3R#1Y-HFj&b zzqX<{<%tW$Dx3s}fgomtZomE~JDqki0NuLvKGKj+V=9ug`t_!|>Bd~|H8nLwfax7( zI?o<*{2luzp!r*JbSBQYCGq!3tq#_mA(sun6HHr+Z)4j!%}~Zx1)rlXkksM3o=PM( zPwTVS-o3k5=e55f^XmA>pw_e>{3=9kR+pHWm@e-hL6-t}>Du@#;J8w~xAedo1Y1qI zN%VKvFs*0PZ^%_b`K%AZv#2p?U+Hc=n8tLbq$$40>3BfkxvJRa0E=I*WM01e5f&-s2U{hj`no-R<_yjYrC85F z+A?Iu!3t^AFkV-o3(Z8&iz@@=_voN9#pPg)Iwws)aq9ABBWynibL|BlczwN6D^g&* ze~^DwgM&PboeL1*Ly0s64pNrfJgUAvHR7iyl&9CU|a_irV zs&V3n&{|mg_;|BZVZg2iqw>IU{Id!sRd0D5TO1!D=2nx_*#c*y*;{iU=vni3fUB$x;tg19uHWWB6G zagC$MZcOIQn@<*jv6{CC^ff4GB9&n77COSheRuzqXS|;_1-3=WV4flLeL#$s905pzieQvI2kTu6a1x!1f6$@~5|TZg>ChbIr;kfbZ&Su! zGS95z^Sp==aEE_V1gi`5^pTbho5%t=p47fw%z=_h}v0vH7Y%ce7pSX35n^ z1?}608#Gm?Qfch}-^xFPab5xEcqUj4b&K!dgJtz4_8UW9YT$`7*h%EmeGc~!Z4j^) z5Xc?~0w9D>sszE(3--G0o5~!>vdInnHIP0?8FHiE$GgzmPr5tq$&&zZ_uN%c!40(h zId4KDKMp~s&8!Iqm=p)L4_vDm00>gh*MAON8zMVDF;8@dW5p!a601mF;&bs;PFIeQSInjhNuWO1M9z;nI4u-E{&9=E$=veFL@28u9DL)(b2OpI-v z#pv~42_4*Vg`X?aubuD6|M<(P3c8OcvWr-0n+shRzbSSy@!+G*^A zzc4SncQc>~`_Zq~Xr{bptjT!+0DXC*2mZN!op;l>4OE|3kA?mhopLm~daj&kzEvRl z{B!+)G9bCoYRl#F4_j-rxL6*?^KV zcpm4c3s@5UHcwJv?TcX%_&_Jh(b`}Mw0FX*N4rbfNr33Xf#e$P=sCkcZ=C+q+OE+~q$P@#Iem zjDNrNXESCFL%~9d+z*X`D%TNuSgY%OQpcv%{~RB4$$nv60sa2vA(-B`h6kvtEU#y5 zvG&gqlcU2JMWS2ynzQ#)upGO=9n|i5WK?}Wib6i!CGhHI2qprlQ#|_DQ$xDj49pC3 z2EpXDZlE0GukRx(7;*bWXofxc4E#ds&b)6wY~!5Lo0%%=X(8dgj_$^Ax&54sV-1hkUs7&1ie6TB ze)LGu`{~&kW+frFk$3jPPNF`e-l&E8Q9_PW6c`a+a}RVom2@HZJ8a~I>>Je!sO(s= zIs5UcMeZMA%tpGDWcZ8^G#(Py5gln(ny!dC0#v9~lQEMRmOIINi(+WV_AMUiN?-{s zWpGW%-ehN@YUizYSj8s45}aL}oOjgCp2hP7uBtviDiw56Ip4R`^t>cdEMHbPSn=PF zze86PMw`T5^Y^`PBaTlk<2YTd>~jx3Xg9lPa}^Yy;?>bEjN&S&#EeWT53qTIW&QfJ z^_xI&63`=OIkZNv%xr9#!M&nMiM-Rq+TqPtUFMmz(VKiJ$efmcHmSYpv-HmW(hCU* z{d<)|-O1`)0s@tjVO;jBtO;^u-@4K)^=&dQKaD^68rrJ{u}d=KYY#Ip1d1+vy>j)b z-e1QDvRLz9U>(i5Mf~BjMPGcehlgHJLrEDK+-e0=uEQ~3|H!2CI{85cb<8FX$x@FN zlMQN09C1gD>KN?!#-gT;55lCX849F5y@nF<@(r*zKSs8Rxs#|GT+A?`LBFB3p(EOx zkI6vM=wx0z)hhja%6~?{j;1I@WnE>u9mU4yowIsaff`^Lp>TZ}8)Mgbb@*j_%rf68 zZC^~U;)^B@uU;{W@)3vk9|aMAJMcq(3n#fXg02ASda$#gwck9{1@UxbT4;$%!cU}7 zd2NU|^f>(mJJkZu_qJ7CL{=A4QV%d&!wYMEAi~wdr=IRQ79u0X9(z6JhBfAsU3f;k zh)(9}uOhQO8|DnnqPU5R&4Sm}KYlWJ*suJ1&OSygvblop_aeY8Xmfw8ppY}Qvztby zP>ZtMdw-)$K_N>sp2N)ilMvTW>))#vd(g=tsMRCtG6|_-1UcKLaErv4gK^}@i$bP9 zD`2i5aw9l1izi9ova6#vg;^Uk5<+vMIy!!@qRh;nk++^p)R^a}pfF3>T(6*owy*gu zOUk%`2ocZ>HJn$Gw@G<16L+eZc?i7&WPTUJ9p7rNb z{YIWV2zVKV;g`W~)t5`Tx4j$zFl)$4Urg=6a&x=@1amEjDu*q zNx)cw+V8AAzY4w?@IFsKNKHt~?bZ1y_{&u-t=KUS9iYIV>6Iu_=I+7bk35{uA>jVR zRlGL#TkYY42KLXFTR50bz5LWIewjOK6&imLLwB=Ajk;mPj7- zC_cP8cZz1ZH`iuu>zved-_*^XDw2!!>M|=CTmhR!2AmaG$0Ju3w)X|4Xx)9{JqLkUYAohE> zqoriiu7k4bs;1@>^@9eR5>o(&_vV@LQFL{qkyRgkPzZG~c~+W~!Tfa(N)e#ty{(^_ zg=Y{D85qPg}Do}nsjNL7Kiy#l+fz|tond6(20{cI!O$STy zFs1XC$7`Qdk0j7B- zXifmo^vl>Cm{S5k9RbFPl7my%3UrjYjE8|n_ttv40T?ltc5yC1x<8)?c3;c}@JftT z9RDshb>@%QFP(xN?cmRjmbM(n$(%vLmZe~!%_~^4Mi6#XG`sHXjSTD-r45M07{txUiMIw?>xg-7 z<$trheVh41G~==;){s+U*HcB?l4;8#NEU=qsNMf=4W9}5c+j=a1OPE4_Xd(+BH%fi zemWyi?cUAM9H}67Lk_&tdyK6IrNlP9vc{_rRs*O}AkvwI+Q1$Il8i!;^$nuw_+g3# zi`*L;hZaHKK6D`d8-Nv+fVtqe{(PaZ=(`ytGgy7gKMQuEXo$3dHv+BT=%II#V#DV; zZ%+dVTSH7+nEUOzV7_aEO~*<$G*e-p6QmDxW&McUtNGTurMMqjrs>$_g} z`$EMntjx1?|B_eo+kJ85H8#uX;jn+!R~hhfGtlt4gP0NV{Ztz4uHS*#g2a$D-XiWk zC|arH4Qc>UZwS(bSF(VS_^_TB>Th^xC~`JW3xKGi6_obZEBvh7v+Ld|5E%P%Rw|*3 zwAdopWWMy{Ku|4_0R(HpVH4QZ7SKtTgQ|u|ial@+CO~w659)pe zUANRak%--BJ`&4=1w-r+h=g(F@vd>KLJ;W$pggM`2Pv|?GQb4kKWz{4Sf6k9<$YFK_kz`^qEt_vo_l0fqyGO%wF11lGa zAVG~&;21==N!?iXlDewMwIoH}c@U}V|KTEm?BC-1)&__f+XBMxnsXQ(?uZ+aW?hnj zh)13k1a>LCKSB!|2Us`y0uobMw?GEI?0cNYBf19=`6SGUho3AESqiLhaJpXw&j`>% zn8AXV2*~A;;H64%MG4q^Wxr(e6_33#MrU+7mFo$hK9EF1f(gjBNYZJ9Eix(6<+tdh z@pfY7#PyVS`El`EJ71X%i)fK+}ynT*i2dXlIijC zs?g5%fc2uJE3IdA>W31-dV&Yz2|0p4XB}C28s{=gv+}o{2$@XE^buSHuzkP=ZKmRT zt+@Llec^HK336`|bV;#WDYQAib=`rpl(0x|^5FiQEmq#!wKR z^&a>#5^Cyf^Gb-iLTU-bo(HyuP#8fN*eVe|hnxLIhcD8*@yRcy!$u5K81B&ra5t27 z8dDHxy7LYUF1e~czl0A6GoPbz<&)et$<&3uybx$@gsY*UfgrIU4pvuEe)}KOZNJ_! zVJg}i%pWa|)wR_^G@M83K68N#4%?ro7xE4@(Ud28gg3WvDTcL*LGf$=eN~5S@FAQ= z5!MQDmlpk0|5gZQ?V-Q%zXimbS z*$Q2`P$*c2q-FLOg`TNiWDg^YUF8}`tS7`NyILaQ&{iht@UhL!M3DCU`EmQI@p#PM zvgbI`eUB6CwR#Ue31KwoRoEuh$2C6NqYPTeuNx|CN~{NwJanpV02&EmypVy1FaU6^ zKv55tKD(mCdRWus@s^a{!?HJ#m0;8a%<0F@F+ukK>kK+Mz8=Z!5VVATUnZ`}&Wj!G zPm@kiIK!aQ%;$R!mmnb7&0vf`DRc76s8duOZ%os@%~|n9kDawCoh~#5tTX@^jsv#2 ziGKm1ZJ`Af$gl}4O3uPX0!BybW$ZHv7f!f-uVk@N{9Zfu&huaK>sJw2T)=O}wS;Soz%i%5tt&EZ zwm5ogZ`{tD=G!*T@Xe-i*mRYku7+(C2f$`fg?FY(-y*z|ZX&h8oweNlkc>##T2|pUOxIB;W@A zJB1L-z+Ud{lxv?F8Z5P~$F@&uPGu3QxK=pMIe`7syUaK^u->0u%pL_LW$>Ww2RJVo z+*uLj<0FO^aq`fq4)Hod5)9;LRdEH@XWbm~xJdI~d(oenG=$2(_D&J}%GLJ`#j1w` zPk%pZFfd#Z?XY;bnc~K@=z3^<`SG-K#{M@RFttw4%rJu(5{{W);*S^m3mK1&_U*uF ziN^#kOdzp)!5IgMeHGsYYzO#Zny3?AgKGxK2K8`Isc~hx4+pVp*ROvIsL##44bcn; zgb!|L#KZiXt{7Nym4Y;D#2D4T!1X5VsE3PiYg`LW2`U(N=zJFlnC?K}!B|--qu1FJ z40T6xbMy3oCp+3Wr9Qi`zWz3T4w;yjlwqFW+0!{mGz+p%d2h&?_skY>Ijjr6fr=gS zM`48Ibe84g@6SI5ONH z7IGpSwrTfaV}-;0?|HLRO0ljgEJ3>k;MDteXQJnebO*wGhB(umXA7MItXHzG%8DDmF6+sTaaFG3aw;L7;mF)ljDN;4E^U~*v zw~O4rK`jGs?-9@Ns^Jh|``*(gzpWJc@X6CWSswOcElR_i9q~NWVXky2MmufNlAp6y`i8qpn&jq zubyoC6;U{wg6J-?{KsoVvuFFg{B%{-?lRBBxdZeFZ)rry)Sk-o@r4xJmG5=rF`60H zBd56O`%fzcVnQ~fr^Wr?k?Gn!1rLBKepiNdIX4doQ0Ht6gzu=QJtSxQ!f&-^15m_4 znannQ#MSi*hSzw+Y08ZV>9CaG(>(@x%9x-G@Pow~a=%{2g0Xf;SL?~R9rzU?dBQ&+ z;wM~G>u!j+`Wfq*ijU*VqMcs!s7W2okOT-}&RWX%o`_KPrbqnMV_6q4o+vKYcv53g92bYJ#TJ_4lHeH;^v03^RKJRHWqu3b0>*Xd-1r}yzZHjS8SJ9 zko<;+@dA&AnBj9-|7KBpMZMF~#u&Aa+V18;39?=Y@qSVHEif+9EYt;*1xf#|(oaOPBBzl06B> zsA&Y4%q2Q&(f@<~ObAs2tOSET@f+mwh?2`4ER0B&1Ga6X5(|vpAd(nOW*(l?nOCDf zfC{cO{OQl1v+-uq4o#BK@4m3^bFsxI3n8#P^{;l6!|se|n;}KvJ*23tK-UB_WI?L5 zXM*_&++p)Lp9V={xoxodw2iKI0q2hXiaYv6YjD_;c+eQGDhd^gq4#$>Rc_^}-vpp`sQmKRxepM$eLvSve*1=Klc$OC%d)@7qf*gZwl zDR?Jn@CYsp*)$Ea{b~q%UE4eTii^a&r17@Mi!Z{|OdZb|**lDV#*TfRGIGz;AMLHL zt-%)c5;4ahgrWYMxBBZksy)$2Pn{tGE+m-3?@PA&U6)|2S{OTU*N{MsvZ-7^HGfA7 zYMqe#xh(Vr9h6T1wjgCuGTHt$@=V&ZT-}cfyU`egGe~MO@^+Es2?7tMfWN<{qH+a@ zcLaw+Ds`wLAGSQH7iB@!K=?8e`hgsiy`V%fI)v|2A@>1F;xPpg$=rvx4_8`L)_{P$g)3{sS1-~hgi1H-eCQm?gTcn&@43dF2f9~d~v&*NuCR3iitI%lG zMtmRv7Ui`yT0hZ|89%sC?H`JUSNN2k-{K~WJ>vLSaCE^d=WiHEr;xdtmi z=4DYhMIv_q0^9@Ob(?={enGhlixnanT!H(O4kaJT53$5UamWf1Vt;V0TYKhFZ^6K0 zfxKXVlEu$Gm}5FL9fs~th`4m9{9ZU%Id_&=wC>D^_3ZCP3)pR*d71JlxcTS9=4qvZ zkw%U3G?QHl9g{_yHXcurV&SeU%3YDBl1{}CQj>2A8E4{K1*O!UznyO)&KYz(00 zS~3gMN{Or`;fL=ljL*ep|FHJZPkkKnLt{51dDf{*cQ<*MjkxVnB9nR>#cuHMWZwr4 z!_S6uzPvx5*nMmvL&dkD1=TFtoD(^|n7@+Z`SRn;?$d53?#FpQ96U5rAOBoSm*Spn ztMDG8i0Ah0HQHWYBQ7j=wN6-W&r(b!MpX&w+^sM?np@u=Vz20+@K8>Tw_ao1Elg&& zbZ0PTmwnRu13&Si&<`dL1>P7!EE&u4&c}=$(=x3LpE+9FELl;ukH^{#5*PYr7^(*H z?nfVdTyR^8zn{pq?zOk6%hCVwsURA87dpG14Xz4W;$DSYNJc}Wqx*+0f`Av+ z05Pyg16VNbwrJg7zyL1UM}P%tJ_9ttwGGPg6H}(;C1(HqUSFJCN)l%X%JSVvvlSBBtwaa ziT=Yvbi?`ht~vB|>FM=84c~VNRiwYI!LV9MmcVkw!lrw*dM{+rzgh$L(KR`G+7}q- z6lJ-!WY;_&^Q(P|Sz2ZMD(9kg6?14(UMx!mv*AnB?8~zj!imE+(|AmmbAe zYX8HPUwP|L7A2>$jcrt4_|zu1=4^i^l})VuUK^Hk zeLWhH zW3%s_O#NL&+M2G_9izj`u8m9A6x1%9Ka-Hbv-tVf`X1Cb2n&P``Ju=T?!o8mx=+L< zB!=!y%r_2WFW}d28fK8;i-QH0IY?9W+6%g0K?IaZLKPFEwchr#W3?;S=R@q3sd<}% zpK;7yLk-Lga8j}lJlW+@@E@u2olM9dgKRC9V~;xN>MN23c!~yhYn4%cn)WGndqq0- zEz6=A+jUHB8csJ(7rBpahMn>&pOnYL8{Y1|Vs-ev&wc3!=3)h-JY!b%7%~4U^YI76 z?)7_;`_fx8OIRo=yK`))^Vh}QoR&p@F%)CWPZ|xs=sQfSBt@+>zK%xi+`p2*ZZp$Q zt?OaIvo+1o5Z)n#iQ;W-At9NowZqdtbY-=m_oc*L46!f#JUA;HJ{*9%C;p;#Jdf*` zqIW#^msV!#|9*0T7nI#u|rXW3mT`4wH<@&JLl=7D$i#%~7|2rTfP>lWx zuC+EMiZpSxoQ~6(;fV7_kyKtz;JInkKYpy`I1%5h@MOQ^kOWto1#cbjzV3LwYMyi7 zn-Zz6vUWSG{^7i_;`YmELwc9Ju5gpwr(j?5!yWaOna)BClv~w(EL0`^u2aF5K*9u; zo6p5xiW+ZPKJ^uB6Nu49VBF8)dFGe$=z6O^VU(Fl)Amlk4+)ASX|~pT=q|Nt>&U(3 z267jiaKe1G1Ds2QDz3-O7~^|33<`H|alJVltpSL4w`-dfRZ5+Jfg%#yrk#ot6U!pJ za+jEM&137`whF4U;)7vE))Hn~Ip3v}fM55jZ>!dtX6WG?IsFsyDUlPyB!BG`YCOF2 zlTquY|GZp5N&P1qxdCvWGw}-y+@NTpmubX4Nj07)JF*+wteK? zW%U_5IfB`=Rbw3c}dMMFD(^ z#uzBFn0oWhE)Dk^KXEv+q&TDZRqq#+8lI_kzEiCaV5C-e}2GLCcnm!#fh#` zm9DVe2+5WSxFVr(^`G}z%{13Irn~3uFpQn7Rf{5nZ@n|G32iPEubck@uY{i*3x zh_f=hQv-OpyjdSt->n>96^^V@cB;kBT|?hzp`4^p+)%{7%1UW`m28`{hovatOFezT z&rR@iQTs#>Bdn0Jk#s-r$|pcx024E3oNQJYJ_nopgWcJ&C6CJE_YM&9j0`i!T=)nr zcl`M&-ko9do69+{HPEw)qBIMoT29jso9ZG*`8~)9b2Oi@?|R%6 zf$CXBBbO|QqjI^ zTaBzEZyUoNcVs@x>54(E$RBb{=1US5G2=5)`kVO;!2afx>~ z4e#_ui6;k7;w7W%?Kwtg1uxf&EH&&9irVUnP*|bp6@TqH%8{ zcDr1yTG!iih0FPLV)Ux$~gs=XIw6b_5dqrMz zd->|8N8NM36QdE?TQq5SnZodYv8^G45yRA$%$!V@eP4F`gZL&WT}9O11)E(!=S=ty`R~0V{t&iG!v5YDRz@{RcM1Tnz}!;g?~=?xIgtvF-(%O zg6>?yWqKTx)>SF(ccY58rh<0_W~ob~>xO3yP+|)mPkJA+v&)kj-|=O&d-M(?Nw9*M z;}=fa78^aA`MsOWuCqsvN`7%0FgRhO#+y5%dn5}&)ICw|oA15EOSjGgI;uf)SkAFH zR)baiI!oYs4oA-293GU3W!Lf=*{xeSH(tp3lgQJ%CC8MhJp$LLb5pKvY26otpMs+# zv)kL)s3gIohn48_ivi&$1 zwUAjznw?^K$HgpQi`L?tr&?6bKF!)ohF;}Zl%Hz9o;B4)-P4eM#NO3(Q^kClR(hqv zlTrU{Qo^1WGdR;K{2=NWpW06-H|*wpxAEH*Q{X3QlS#su=nA%<#r$QEEbfE@MAZk5 zgpb?Fj&U)n+V5vN)GF)34{oN>Mh9asQot*m%o`gjdDmZ;QN| z@Q{iud`s{qk_SVM@Zg+A^gkR~2O7U()!W-0l}E!hNipyLtnC^L*5Fxv@y@^}-G_TD z;iK0@`Qn;we&3<<@c{O;LIV*PU znG{p@$Ajr89_1s;@p`8%>m`{_dt~fw1)Fzf>OA(aLIaMcbNwrFlUR)tG?hK{U$s}Q zG2o;6KJBKNN)L8xDkt(d{m`t^$CS(4p+cpb^DazNaHlM_TNpuc`ta3*n3zhLJ=%Kz z0gcUvVOp~s3ixzJj&%ix*CU%k%L=-uL*^ZK{SS2OE{?73dSf+Ucw9@3eeD>K%!`q3 zHVi$$_0Aj@J`U}Ytv}uYEeH1h4#hwczwKwH8=W`UW8#f|gy9!x^Gp=$7EM(&58e4< zAv_^V{Vn*(bAskxGmv#&CcQB=nJ!{;DswPjR^J>XojLBwmP%3oP9=*YCGIFS@c1KB zN6^sHJfG=9-gS9-(y*=V$@X!c8hVF<=i%Gec^WgzaPd&ONkx}k3tZ_?a>2RS>ckRf zG9P6<)^%`wvq<|zPjbwx@Es!$(Wm#Otr~+3THRckTg$`V#ldA~wX0+lb-pmba>kPx z%bq?iPQiZT#qIeb>J`;P0U6)1)O-uQ6tGWOqul`7>XJvL)0%KL0R3w6IZnd#O)$p(Qby)qeB+xsN8=s$$bpf#1n%WcMTB zr(MIUv&MxjnK=qFyYKewb9-mnniPb5DG;iJ&mgljrees_4F38mnU65%iDw`?+mWU#FR2Hq@O~acDf=RG9z8cq8wg=bxgGJ`thzw180t{AJcX*EtRiV^4@#&S*MWPrh+_p{X7tyx;_vrd}7P z?xn&Ltv7}3L984cnw5z55J|FzV%1W(`kn9xKqR94YD%@lN`!8dxJVu{5n#P3WC);} z!9KHif*!`BED_1&-$z`48x5JpH8U#xJE1{Dmna?we_L)PvKB;t(VXX}f(yxI?WTNn5Y1rjjbvNob!Y7Egl=?>$raFu=oyXLWz^A{AcAv^ zEHhU_XwWd|;$Iw~zBu$ynApe|Q3=`qr|cKeSf4yH@E&{5JgW;k0k3jFC;nR#dGf!= zX$u82=6^g${q{vjG_G;kbdM#E`2>1wvhn{I^l$hCD^_TYOl{FZ8u_#1-ZMx>Xs1^( zIkyE%hD9yW##!?(%of`!<0u@9H zqepavdQ$86%Xyn$y^vNJVGMql0dfnzzj6!s&;%;kBKHICedFRkD4`bfq7ievVDk9& zYY4N}6L(#db=2qLO`yxog$8!J$u|oe=SU(vx0|*)DUy#4-40dQ;F4vKSlmQ=>1LlR zC{moje2T9Y@u8vRHbNBMDD?5Zc9Z+1K>hpvYYOm%p7$2((%JM`uX}?;07CB1c_gEu zv6pcD_w{^_yq$YTg1!u{lB!qEVH@xsGSv_BJZEv+;kP|r;!jPg$7gRlFcd7Iw*5`y zv~~5SQPH2Klb1TquPg6>rVxB5!v$R+H|TQHEN>!rjt1z!e`$;ac9-s8vfT3@s-E`RY(PF~S! z2#avY%Z_Z%{4-`FnLP-ox5T37u|_6ZXCjV)Pdr?$UpLNQVX+0et&+KG-tP}i*+-z# zrWT!VMhjf6f>lANwCKj`h~<($2fQO3P}jEl_CJ^2G2}-Bi1h~Hjr~>i{-Nr-BMxo% z+n)r*h!#fq!XILTwBATUnaCH zfpbSnCv+4B%K3Iqb|sFQ1LqsYyS#%O>#H+%#Sh4mWw-kt0zK7g8xKDR0J7vT%qIm~ z@Fxw!ANERZPpSRvEIfIDrS#34RB9ScRrj6p!?$nkb3Gghm#;OE=cVM~2fJGnlHhfa zq>Wr8pcQ9jvbi$t2T<_kLk~cYifj*o0U-@c+gedjXrU$?VIZ>@^uCaW4{6W3y#b?d zFS9iO9Mn_r&&4yVz6d7cN*m9vCP=s*I?P?0S#adTQ0n2u17!7rl8kSjmzQJy!|cdw zRTzZ+NSsYYWd7a}#MwZ@Xe1LH#AI|%Qaz@+ETu*X!uc_1_gn?hS550aACQpp+w_p4 zPE9f^vK!v$#NB4p`9?Z~f1SSdjvHF(j(Dd6~IuQZwN!MF_ zRx6U6bK4j^j=#~tCB7-q!aid7Fw8$0slKiLZ#07%h7dz*VAKVyl3z^VbP>;b-^@i|%&`aq4r*32&1=CR(m+SCw4pO${*hT+yOYPIrx`P}~R8+WhEX4w(rcO&r>} zzyA8L0!?~w!bA=eXtEt>d@svC6CAlufxaDMFa)lXuHee|ij^1$bfBKSyx5 zHZgU1kY5Gn8I+HL>-8^>up4gR+6;bN%Am!{ns@@`P2$YlKox1M?<$&`L;JrxPg@72 z!Ta6h7alqQJO-QulCR0GBZj+rjD9PyD4K&`1@zrtUeZ7>7maL!{(eC9DeV*)GCDEW zqaaZ04W7XDh;eRqQooY<&03Ru(X{Y}`Uw5m&36#47bGW_I!2+85 z(687BwnBAidZ_pBU%-AX+yCtX4wg6OB%GyJb&|U^=5B?Y-l9o@NEY~b7%tN`qIQ05@B{*6Jfsp z_%Zt88pGi!qRQ(Exwjr%`j|+OzrIQ?R`ZqQdHk;M`_^5$x?2T}2GgOZNw&|Uz$eeX zvfQU05e|;!k(1&RO|5pP8dL_ZpNPVKU!sTQ0S3ooK)$GdNJR4MN9^6vc$eWz@=cYW z%rZK&%zscPkWeSw+{jrf;kw_7h|{RY25|?W*Qw#4R0OrAMD(ACM=7>dPgpKL=5Ysu zuD?mu0I12-3xa^YDJR%)|5gQ8Ws#{Dng);WrNcoN4#w?%Yk3B2D3U# zmQWW&!gB+N;g=4*GII6!{^A-BaGkjBp{Wfi5NOaWQvE#iFoSOjXkJl3Ls1aeScsIn z1HHT?qn9MkKjxkCvTt6-H)AjqBSX(U8#`1BWH{A3i|tMckfd8bJL<0n>~Ew)d&+9R zzscFI8>@h}1KwVK#JMy_!vj8k1fF+)BqLDw1#Y#*9R^SsXrbWofM~`*g9BPB6AVng zh4zy^*u?eoJm@brRS z7a2folCef_Hz+@!s`K)< zD23PsN%EcuWpq9RuG2{{fhpAP1=92E0(7>XCwgrh#y}74Gwf!z+~v^y9Rr#x_u}4I zV0DA86&a3l?Mp#JNp77^Q)}5uR5^6&^!vSGmma7c^qjKmOjy@4sEwyauws zEw0V`TlI2Vi@kCxRWO&toy>Bt&!+;4y&>ztyK90}(`8$GFshH=jFE4hpjPlof7Dx< zd`c_j>$@lm@1m`{V!JN+M&C~SoNQbglzFtL+<2f&H6WSFc=cpLugROG93C3dFU1z* z;K7E%G%WP%A48de_yH_P-D+3fAFc5L@U*>|bxr}61UeFpFfD3(uyN1_l)&Uboa(OS zF1XIUIhbWjmr#*GkGZ~?Q0M9}OK$0Hx{tJWTK?tpb-aM*^3Wd6FBLj2x7J~DCZrS} zj#*~aolEdq82qm8-nJ>W?9leSSlHE}Ay~hKOov|@8$e4**D?{!XzidfH0H2Tk1NoNLF52@koT}LjYX^&44WsaS$a)IJIJ#k zM-aq3?Y}QblRc&G2VSduM1OPt-yLj>{qT0d_v!K)xj%C6|2hxKc~}8x9?W7L&ULZ| z0DS*5ugz|8U+wz@lUSG^OF>(*R^*f?kQfg=K!g+E=wp09C6NM+QRr%erw-zgLW>Pp z6#*z~qgB zi&Ti_EoA@wDV*Ku{j>tsk0Es1Y;N5FqBtyNe6)$=`uDJ(U0D>EuZV2|T#l(ym3d$g z*Z~a}wo$Yt!a)0F;vFy8(Gf2MvNm8!qget#Pm^Us4Rb_H&^H;^(&BdITl-&g;D7e) z&RWcaN~Z1>~LC==fgEla{GlwzS?n=5xT zUUFteU6#_#<565>+*$(GlFrY_AuLQYr zff_ldK#bG>)!W(ADZ$Ho4AQPTaKU*W)wo>bNu4l1LH~joOWy-;piL%nGXoKD#vh`rN%yGm!&It7JR+ z)YXTtSZCw6RGS<|Y%E-BPY@M#ueFksco)R#&<6dGEZ?cz635vu(|om`OyoQD=&cV@ zumK;RRrjGA(qw?ooI8Fl5QIZ1kP#r0vByWhR61mo(JFy72vMeCJnC^YWE++{klgcD zimkiZ3z%Q+K|;KWnWE-vg%mOzfG`O{6;dC;LCRP&A0 zQu_kG{|N+~y+jWNEfU-gz!2zAZR7h3((s&Md|(>{D&lvi+GN&D;~Ejfk$@v)iuiQ~l3$!{Pb6#|r{9?}bVHTGe`iqF zBhNqiE4XXPAYLkPcbDge{sL>bM%eg}n+I}?ga769l);_??4yg|7W4=VwWZV+xz8b* zHCV}ssvbSGS^>st$P;Z8nKFQQur#R{STT^hl>TvlrZgl7D_@Zk{i>_E96@Me-( zK{~>*csco89gJB)A{3enw@A@c^*qEJhLZgu97X6&1M%=7XhLB4Mr=!3f3T2druvPh z%~(5;3kSgghV@BgfwRyM4SqE$B+{Xe8I@jCY|9qWK0|l#(FX26!k&;2Kde!gR|I=D z-1h2UU^!o1d=HCq<42@}s~phAT9&(dN%H_%M?a&)eO(faN54nwrMG2FXylf?{o;h( zpK|U#p|(ACKxZ70{7}w&#h3IgvfX)3?7cI;yF(6(n~%X`h8KCu@z5?68VsJLIoC_-@ji+GjIj0 zDG>t@B_oJVTL1Li$`($V9-*W+$v@7H>_cy>;L}1txZ-k0&FiGdK5BgJRwxI8dopA6~thqkLmsgDw3Zx^XRALQ^6mT zHaT&BeW;ht?+W26?h z3fG*5m(^F0IQMNB3{$(%w%><)s;g6nDD}P8mDOb{q3F<{2W`0>Q=3j!e))1I>NW-) zco@XzoRoRQ@3Ry6$ydySX9qZpN_Z?yfzO}q^id43@j&C$zk_3d)DEO4Fo-(G_RgI< zZzdqeeXYwWaq`2TX=wxx#+@|M{>j}FHFu}^ZqxP`cWtX#9{QhI>w>cZ02f;(w6E?l zJ@ye6InrKAdzPi}aI%fSCC3{YS9|XeE8GqwK1>)s`sBjt{h%H8=X$aa$9iZ{Mq2tb z3(Em0C4prH3`WWaC*C}g#17%Dgx!R~Q;YCF|$ z<_7#|D+ThNnE7)2IA-X$!)Xo?eG`Ik`1I|>I#6mGGn#7uPl*|E!CmuKUVko)RY%6GR?;~yB9oP4+{691u7=eH}aS_HuwmHA3R!o5K! z3$_bBZ8z6+4w;ev^rICV%9KQ2*jG=_(D+;e6pZ0rv*g_mt?yDY)WO;R_lwo2pYB+@ z8;d!w&XAa2fHlkhQ&6E9w@{{CKcw015b^fwN7?h{x9ph|2;I?0=#Hjo?y4311H}F> z&;=FmgHPw=7hmap#AWDfwK<)8{2`H8UT;~fG+a!asG#u!sO?~G9$EjAHD+gVb=Tis-Mx(-F+&H?7S(5iT7ev!{4NxI>hnVCpnIT)^l@_ zy3GdN#N^j3domlSkP{_Q-cmsLx>I&|?QFA}SR0_{=tX(xe}cP!i~Z;8x8?Ki-Q)Lv z)%GJ(-v4~D?mgs5gm#xksydeD=1rw8oqd?liQtBUrSv7wm*~(YGr;y&oG`C{FYd4< zMS$U9&`jtE{ur_3Kd|_xN)olBgxc{x-v77z_wO_Q{ontGJ;^_3DvkLKW$z@`YzBp8 zSM5sf)Vgd?M-InQN|UYb1bE%7H$F{EsriuTHZMDI@+Bf^>6<$Iv{c6~T`he7MKwh& z{PES9hfj`>C>WF}SK{#pu~G5Z3jKy@D4{Xzh5PLnV=W= z_bZ8tXOJF)NwT7I>^9riU^%$BD%QWaZx5#~p1}BYNtY^2zsTx7ueq~VR+{NA z4Gkr#HyEEDzb2Ev<{#$aVCflzhr!xl__&xd=Oa97{dToiYZ^o%bn=C!`dT7X??Y za(%?_W>4&S`b0liG4Kh7>DoB=-*1s8+a;f{MuaK3^Y5i-d0*tha@Go)zP^)4dK`?( zqG`7Fr1D34-l5lBtrUs$JOCZp!Y)%dI|cfpnF~Ie;kWxN#_s)ir9oDx3STWe>hpc= z!QPM#Yxy0Sv&R~=^VF{oxwFwZGdk-|( z=1W$?o0FY5lv#4kg~)w1d~%^8_!d(ruKNXCza;bSi{GMc2Ku?f(+n@H7uXC;=s;J>)N*nlbIx@+qY&yM}HNh4{_o5Z38o(ElY=x0V}3Q|K%Giw^B=MJDBGZPBMVLFuiR%hq(yQl&xJ>Y90@A{+3 z)?N-?CaTaAn7KxZj{BfUwx&sf;mUo`JkZA_z;O_R@hNFfa(4{8hy3dF!JQ6k0B+&vFObe;0H)el3P_pDolBP5 z!04&r8Z3))+|T7*n5{GQ`PHK;r|ERy$mT$qZkGqSR8w196jLC*s5VHyIzZW33U~** ziwZgDraQ)*dz*W=6MqDXvgg-`d=nJ8bx%jzWIqOj{S=gHVSSA;-D(O1Bprj54o)MU z_>cTKDhDBDQ~`I19;g9QDU^jSg?0hL1lF|8?%ky-!oPS?M@HO6<___7!Wm`pCJ*>6rKJ`*d;zCH%TRdyEY`b(BI%o z5eG{KsmH{0(~TonsPF|FRZW|;ROdtrJSCn4iP<+cH~~R;XRT3k3b5W6>?~gqWDa+< zfgb9Qs@ntFBek9@;KwQ(dZ%)n8g&4QI63ALBE%R#U-t7Xy7N^L;gl-(OzTx>Ate%hQ*c`o@wu*?A;}+a3VoQgMyLR zgGK^<64#fN=I+RKB;%C3PIS)a_HM(2(s>dl{l1g>*8NOy=J`D7SvR$U(;ufbZsR;l zo$IIr;?uM$d9QJLn_RVT&%x{& zpM6veJgV(4(_Y$KW}_{pEWI5uUtHjjShR1nprE?Ip?YyAVnVyxWqi5`@7OwIF;aog zRpO-X%+|_@D~RGY$wzHA<&}AOdROWxRD?_ljIcezdr$|Eo9I8A~$c@sigYYgR{0 z(l)gQix**n)7FJKr--pu{Oh~YIUN>6kL=(U*71z8-=k=d*V+_Ipf|AUa#qrcnAq6% z%4nNjnQHUiaTq+_HYa}_g$t?9ZxknBx5-?@M^V8zWbDq|oN^P7v*sh2vyt*mXOz9~ zC`u zE#i~BW*s-5?lYtDy%W3sU}s@nec~mT!Oq3_@6AmC*mO2k2yar;FLL{tg?@3m=;YmQ zR#*GjDsamRF(N9eG2Wq7 zc)}8DM_A6#fa(HYTS}dEtmCBm_Cm1t^8o2!(K#W&(3I1yvP()d0Y~Vb_ri-BfxDxf zf&#Zul_rQi(ry&eMBondr}jUAJtOOB)5!7*PU_1WAG>r9N!gtaWF^gyzPCy=kz3Jj||t88^^dO?0EHB*4Q_)8f{^3QZ}`YX)vQ?a8`PJ<&G8w zE>x2tNTiXtyfM*Wpm)WJtR;%p_gn4}jZ!V`&5M38z19c~Yt#ZI0cZ(6$?oixB4&dG zF`*~NFov5tU=o&j7XTtu&t_ig=89OA0pdB~M2OB{DT#uav2g<0T9ljy$U zdSNOH8^rUv%^U+PXKC|7j)SpkO7O|djDj_9J|z}v2-e3B@89bVxY7!8WGaQ)U%<`2 zr-*anbiIa(xE4sH9K&$1Q)4jK&!KHTwAZGqUo5{j!C(Bw5dL1`M6F7)cCU?C!UkC} zbcJ;|sl(VKt>$2eFKOLp@I{IrPjIlecdS2lO(^WvGj?yTW_2c*$9h~%h)x@VFPN81 zN^sdm`*Jl8x63!5?KjlTo=qDsx^3W_ns0kW#8v7b-W+~;>7pxXbOL>0%BGW29(!G; zmzY}4bWND2q|9i9z;y1SXJ6KL(8K`n-zkxhp;(@2S(-e8iIGhf z_a-4GHhXF8;*uw!zZJmXx@r>2)XBg6X%?rW{dry@PYyE8)!C_9{EX;)bqWlJ)@!%a z1X=rMxIcNI4`QVa6q$%~9eoDtBnkmcePwxIAEy{BwkSK8fP*_R)sYt9&;p9zEWp~? zjvkWDyWTb;WtNjKeAD|$3h$8QJOx!`c=N=<&q_I*PMfkDAF0*H#THt@CET3CUr)qQ zawr};>mWF>eqzw5v}r^$v-z$^%es5l<_C4?A_3ZC>_wV=^;+>LDPDaTdl_MF}-pLN^#=FZm2R(Xjfss>d zy$;T6+Yx55h=iGCzbx^XDQql(9*t<2Bly_b2kD3a@V^4BEYVqTZE!k{%e!RtDI@k) zb%8uynA7}xs7$d^v|ekc7NFC9P*=k56vK@aR99D5Jga$c-PB}qrQ^Z2 z=+799)h?__ey2iWo~E3erdQ%M@<0ix8qrb+6O5jfmo<#_e$-a0p(-?KMOJ%uQMq?+ zEHAG{2WB(WzyNGmgoV0_(Cq1j4+pWd3mTb2Ai_iGCetL^7SL>h zc&8pcy9gX)Fi+r}R;EpM^#RI`?8Ppf7H5ZbDqBhtfy1aDi@;5u)#H4;97d=nT?eT# z>W^&)>^AY>%3#6}d<{()4T5KL7IK>y!Mh2N|H06k`M4<9T;a;Af=(VR+$Es^Pyw{M z7iHGYv;7rI>=X^~Z>Li)1s)B^d(L+PL_TDWOTZdMr z!a3?fIGcMuxwy=5p}J;Dj6tO|(sE>^sECh>l2WJ_nLoLMHdg?=@WeNMrl1^O^F_TU zq$d>GJMy6;^SuyjQ=w^cPMi>KKf6MiXhtf!P?y1$X0In+$HNbuM2JqH`J8Vbn#uC$&A2-2u^swTA0;3_`AQ9&CYZi zRQ47abeqREH#NoWfd9|shK7bBTLZYp5JJ=;-5y_BhXf(HJri30S+Gyb=TC*nGL2Rr zfei*MvX^0Uw6N#L+7s}$7^yl!VW#e>{E>$=kWN?~s92qVb-w~SKu@&n^7{SO?=eg( zvjaNd7*+-LD*`YqSgxaTA|VGn)>t_>I84EsA~r~J$5pNaOwGc>!cw4j{p9kiiY0Jw zhoirQ$JduIi!U!;9uk9Kb@AgYYj2ZJ3-?c&msmZoMZxCjd23kGkPb)?E|fFqoizJ507QH2`` zwNhYI%!N&i>MJ(@L4Pje+ASDF~bX1hEv#Y~q4h13)jpJw=#IAcn zoWYG}AyFbdkW<|pq-71Kd|x6Ft`rn5qd~no>2nT^3Fra#0GP$B@Mwoh`uoe6P@Ae~ zPmEMbbb6L5D-&+S zw{C82z0*;D*MY}#kGa!Kiqz&DyLRMaK$_CHv75ap2i5_1OKuBrj8v>DD9URojFXcy^&p_ra6<9!%Lq_f9))gn1GozK^fmY@a8_ z^73K-r!U@<)`c`Os-G&ad1#Aeec3BFd|f$D&H9nvkcxk*cYX=P0j5Kues7ijD*Fl4&HG<>3M;js6YmT(i#%bLY{)uTPZS zc6RB`f56enFH>o2qro}#pLk6WRD&`1;%9P0HdVQtZ8v(GT3+Bs0|pUbA#2Jl{ca<< zdT=OSy~)m3G9AVo_+{F1N=OX-u{OGl@W&RBJ ze6(|il6O6E+M#A2K7YJM1_@&mzP*v}%rU_1ZqlfqN(!AD`aa*QVw~9KDI-J6H!kj? zqpyE&sc>bZ#_h9K*z7);k?(VnOk5k&S3P;RTiu7?g7C)!WXcqH!F*uqI*kZxc-rkw z#f`UptD989i@i|Q_F_rA9XId{pQZP0I)+aywV6{>H5zr&s15Wi%Ica#Mm68^ICjm{ z^c9w47C2XhR^d>XBTe}}}wB_TsF-dG+NGK%T?$RYJ_p<5B2EwY8C#=e` zgTzwuIc)0z%a;H>g)|sb!pS0L5Ud#giwPx5FSe8z>o4bB`+cw)0Zco}uN+5skJrXJT4lWAd9_f@^`_k(i z&JTi9h^kWI50$&(1v}^BX5p4>FSk|d-y83%kH+Xfu2DVQc%Fdfwg89W_zv#!1}ay6 z(k5J1)Q(Wo7@wc;{;PnQd?@}GSfVDaAG0W9 z$UEJWdpAxGzSp60>t|iF%(-et48I@&wRVFN4)a+yc;2RK_X;QO0i303z=4KnV;8h* z`Y68Zx`4qbeO>S*s~b9V>%}Gl36qQmd4G&;(!PIqc%n;^4S|uT&cgl!|Nr~tqwVvZ z@O=ON=l_lOUk|3iu-QTCwxNim48<+P_=qH`Yv! zI&pvce!axK0)~DMsS|FJTdE1~X6Kq|Ijsluj~$ur>`<2$6Kgig5~z<^3B15;_360i zH{7?h#J10VH)Z~YZsdh7p7cAn?F5S|h6d-jC$+>Z%>IF{BDeE=mK1$xPWzs1E$5bQ z_sx`oT3- zFE-7#hPXMF~4|H6bFW?P+zg}|? zQl<~vf5#J_p6B1WeV&`XK1T~j#OyO=K?k0aMu!QrZo~4Ha(Mmmclc4?hhX$NNxc>q9TrA$LR9;G zFql$npE{aJP2yf-4EbESzF|M)+fMVtL&76Gq@}h4+TeAR>l`c(#TL+xVDq(SBz!{t zSM`Za@Nq~_@}>4G>a$XJ=7@V>v0?s4eijtv6m$$QdZ+j$?v@jJE(y+MmoFvSvlwz0 zr*?Vjg|QZKk~N!5%qc?-g>Y`=m})La;b6!|az}@{_)3=skX5rTzP+UviSU1zpQ8fv z>Pv5XOqjefr9q{r(?{kgO%L*cveJ9sE-NKU7=bU%Q_&vXCr_Tt<+DKf!YB@HB`^hz zA9fuhgJh(|Q$7r4$EekK-DPl{Ra$*8q2vq!Rl?i4I#TSOOU)cC$Qb2hA&t=C$)38Q zi13K0j8V~aYtNlqfzeyposxeye9A}8&&O0XK3s8Xe}6ykxy;be;q`4VLeT)srFUzE zxw(o+F@SJvy-4Q7whVBsx-9O_w6poz)&S+5;3$=THc03)jL3TgSr@Q!Bx->B?{5x&`ClvZn(&J?IOx}lK&dU@&O#=TEJ-ABkVF%N5a z7AVx-fBSSLBj(>sjj$&wP(JnD@@lD_7+zDZ)4Hc7T-6u4cTXR^=+C_1+V-;!V_~?y z)41m=>!Iee)ven>r7K#s%Aa*K)svT4o)_4gwkQjI+YhBe>(J~|nG~407zea_e)Fbq zS`MS;=4OB_bS8nL7S7}*#xP{x%q0SsJV$9w3z9V`chK<&^TB^RV3U8U1llMu!Vc-M zSgVZ-A^{=>Jh9PJKP>C+Dfxe&?I=cfq1u#m-Opn$hDrl^?tDouJRFL9?;8lXl(&-B zTx~Y*?T24Fwl{(`?siVCOmiIR$^|zecK|NFFRc&y(Lv%1PMlE^TfeS2&3q|*zhpbm z0~ehCM*Sg#I-y4cpf8y0=rkUo!%iL05HATv%V?pO+1iZOKLdQ$ZgAnfWxlS1PWIh6 zHVAL(lpp^KrsUitJvI9!JuCD`{HVd^eiNP5@e(yFy{j*Dr5~1G))UI^Sj?2~carr= ztXd{q(EeHkv-lB81|29$I*0EsDS3jL#O~t&WaEJ8o6OhX6TqEsSD3;U@^+x>B&5<) z;k?)C7#+Wu`U&^SoH@n?=Igfn^Z-u)F@ChIKtYv@JW9Fwr05?Z+Y(`AmhvQOX1_f}~I zG6GHo)m%1^VRc}%nWhk3r0u|>drcMCew)+C7>?gDH`LeGPKO6HA|k>HdQG(A?j^Se zBGn4Ho^5)D+UXDxvfdcwSqKbCM9l8QyvHw?txB{E8F35*C0g>e81d}aH+AdTt{aNg z>~0$A&e5>}O+$A!3sjI!=wn9U#>dA+z-ET(+12k0uIQ#2xlg76;tar;$o6t4R8sWE09W?4>)%)Z_*}LCP>Y6W(3R2%a`10p{;@57lfJ& zSZA0nIrNa<5Lb3_>3#<5KHjv8>u|qr!WNNw$p?hkHI3X8$^}z#YbY!M4T0cOfV_xc zjZ3Gf#oITrSr3%up}|?}_ay)rpI+`%>4hjYHaEGn4h59}jG!bt$#*pr=z@F*8qcM! z)6Uz9=P`YVZg2zr-RD321zgfL-bW`xlh_}6`<_ezPeQzYH;Dl@=?F67t<)a*p?sq% zSWqRvquHI8^a_BSs^Hqy1tXu~8nFoq>ZG5Pbc8ceWle>`6GD(Dc%$0kL(mS;A-4q! z2K6K1HfcCJm%#-dUvU@kSiOxfiB>1@PhLGAU2^+5IL@Qb*}cjQP^@L<)PmuVzE;`L zug$KEKC-xLf}~g8URTxA(<46c2w2|Hx&Chi)V3^Q($VfDzWU_~nB8^w?AaF{6_s(F z2i6oEy}hy03132Z2pOG_Dj0g@+F_5Q%}=WHG-|YFL)R36J)L)|CRvE~?!jBZWroEI ze*hmvSXwXqMZyNT0nL;6XE>M>);zr;(wmkn zbt>f7JnU{5fhG5v#m#Lf8PTE$iyHz<=TbkG8sh?F=7qKvcVH$9fZ;dz)pMFASLhTN z$3Rb#!E;#+1#$Fu;Lhg5DGjFJeH1mr?e30!CvD`^ zu@_(M@6` zTsc=UWzm_}bx)~K(sGJuL5@sHUZG@HmWQS*SFf!S>%zz0Jnf%!&$K)YdDW zxO)cTX;V0xJD9e^Q|knM>nQ+9BbhAPF5)F_`rik z&9xtGiERKrV3JyoH$;ank1BA_Zk_pd^1N?}SKY#R2qDt}%8Sk^M z4X$TMLN;yFQ-P((u9~>Z2gB6c!K(oPm~Qa6wrCrHI1BdR?8l$UhC&jv4C{yE_%k7o zHSM`|0|0?wPDFY?U&ldu$B=4cZjT)nHOOxf)GqzsP`j{K5+=3e>I2IUW9=k2-&aAx zQ)!Lnd|MaO+k7re>#B4HY;#J7&wM{7yU? ziwnuYKp6s{q)wfJ_G2gxa97wi(c(SusCEAUOvzpW5s`c-Bzj4J3pVqRHr(Jv9kvm# zO+?{>f;>NF>AbG$~z_G^%FSh4o9#1F)j6vOk(M7ik(Aa(41l5kE1D5oLc0 zUcG4n=c{BR%^R4#IT#rR%WPvc7m~no-0}EFtuP#j%sPoq7^==*ssjy$1~599*JH1G zjwvEWNHXH<{4eRr4c?mmlqjrd)=!@ucI*%9nw5oe_wVcR5rm8Q2bPZvui~~jE*+U> z`d1I6nCKeTxR|I&ImdqnOmwXUQZj_V3-3(OpvSU_RaeLb%*y|Ec2uNZXBG zb*nK3urBs)t=_kLx}o3UIcyQ={RvOq=W4g5<#OD%5^BS(5*t_Cdj&b!oclQl4NRfX zh&ix#kHvTt$h?}$Y~d~7+UdMfWt}qwt^-KdOoAnMDmoL~r`XW>AKo2M>dfsy(Gr6_ zkoX2;MvC32)@}GcgQsqoY$c=ro(4NOD7XV!?G8 z6t>eaaJ~~H75uQV+QQg@?3W)rAl^B_O`e8{$?0(LhJ^lJz+dg#j%Bv3cn{wq6I!dsDG)D13 zwdvg}Jl0!&q6!PghP>OUatp)eICK5FcjJY*l>#kuHUZec9)QQfYBJ^_*#}*{;3+Cn)&9p+Q>#=3i8CtPv{-e(y;pf;2de64$n0&NM&OU6Q9&Kx5sQU_xYq>=T_W`tF?3OFv+kyT?zy$MgoB;b;7ARHXWJz`@llJIS zwA-F?`WGAhr)a#y+2u~?&&V{A^!4fGf_F5iWz06D(`@AmNPgwv&EOKkR z#FH6_Y#HGUaiN}O5C3Td-v0ecqWXWH!T&_e|NcRY{+>F7sKva0&^v6#=sIlXQqDBF zl=0r?<35)q4-|UH_-;M3#cncLO-@``{`Ru{4^+L1iN9uiJ9-hGP9aYi5$Xb=fuUR>#MxE9ec5q2c`$GmqsB}nG zrn8keU+Hh=(a+7wBK*(UIcbF|PtTw`bo%x4M3@h!(1E{Sw1M?^rz&6ByugxRJ`+IG zzdt72zHtW3|6o$jI847SYFp4iQc91<>F;hp=L3@KL(wG5Wx3dB}C0|v^Lj{^on#{tLmy%#z%g) zR^NXzKOH);@P_9pb)9N1UVzHCuN$rcrR$&RNA4SmZa4IS} zM(>%qe67)m(O8{LyyQI>`0lAEM!oruusKJZ?N)WvuLWQ0!-`B3c+;|O2nLVu$TRp$ zdtqSjN0W%iDi65cA@AJR@6YA;mtKuyV{2QkK!Fy6IT?ha@J;EIxqOjA18eOg@HMLx ziDq$8T6-mmUuB;L2n$dh@v6~__K6=U;pDO&5YXiE`gEv_{=Be<;HZ<2x=?c@hNzjF zfWN5khc8Ay`pvLL2U<2Du$m^%sn24dEN8o%dCDPY)>VWj6q+wSMor4NL-jnQfNlVU z0IT97WK8@v31@hoS8cn{`o4g{9q8S4S`ud0j;VP@V2|5UW;FXI`S6!~5 zWn-nlI}a!)6ZZ$oR$$iLB+BKWrF|Z3+e>mWt8S!5o=pi&&5Im@-veyi^t^@^0a#O( zhb7UKYFucXNMAS{RFUF7W4iKFZ<`js9X5ou_70tITwNc!tCxei1u(ts^?BTu{q~d& zPF-6&61oC_**XG!`X`)gFJ!N;U{KUV%ypj3lpqm#APCR`3Fy9r$)Gp~m^Leeg9s4j z^MRz%4X9~_Bv{-#0!ig~23iJE7e*2D_13u$iqw>ptVa)3U~N{~N5`u+v&fm{(yc68 zjV4$*G!z8u<&o}hECp}%{`9Z^znghzU!-Bz^!%Kk z-}B>c`xmwX5tCpB_atAklXSr7s{m$HDHyp!dkQi9uaJwUf;v`~iuV>UD$Vr(T7f^I zOwC0lz=uU8I+R=R`C}vzFaI;pe)#Rb%K})4ojdO|*&z+C^NtDhaThlPS z(Zxe*u{X<_`O-MA+=h7z%p7cQgNqkeQgC0QSbzLd_h!XN?UV=0X4RB{SE9~Y74fe1 zs*6xWdu}YF70y=2L--&xyqBT2fP&0>z1hSON=GKe9dP;3hv9e6L1LDkb&bL8YLub9 zT#nq%T&JjtOQLs@Sb7#VaaXrsXWBq(r}VFMvo(84%Yg>yAQJRHE3y~AxvhSQjqjav zEuNarUNBL!i~fPb=Q#{r@>uztuunv^afsL4+?yFM&JnERX(9;E%8$WoniZvQJXy1* z3vdJsU-QLNPXO?jn>Y$GU%ys`CRG>e9_>3KBn4Gp5vMqS#pvP!@HrNWJ1g^CRfx`c z#2BWM^?<_=v%V%33;T#pr7_Fz z>{Q<`Jzp_t?&2cf)NEY3iDvA*`ROGuVpIXTr!28R~tp4{xJ3yY3T2gtg`VJs4?I(Sr&QY0l z#i9KZ)COuiG`TK|<pHQzT$Iw7Y0#K^Xh+L(1uH`tNSo9kInV$ z6sFy3hAYNOfwLwuS23oks)}z4(KMHx>f~jr3sJ25Tv2?aQ=slh&#&D9ji^LtpM;Yx z4}Evt%UKdNp+=Fl0O`Cv!&~x6b(-l#GG*EH=CAa> zOJxUAB#`Vhq0-Jp@VYq6AA&}xNwK6OffW%Qq+$dNXH))Mfd=uZ0a|F@WC78fh=`~P z!T~D5C%&*{#2t6J!-pV92w`dd85k94VMznK#mXw<=3J|IqEg+{&CQEsS5D9knG6jG z%-TPM&HX~f&C05ag7}3Wmhy&%5vt~jta5-S^#dMT>NgI=DLJ`kHws^BsvR?2soLOC z(g4&%3;42K&?|*H->VAlaZU}wPC$6LkVS%U)tMz={c2I?_Za1BQ5vKx#LfAJq zpxu$iZ@lWJdeA^HP{{Db%e0JP!(4CAO2Zm#Nw;`ZeCowM(c^XV-lfLnxUJI74jI!v z3j%#ifnH*L88QDa-e&JA#aEBt_gsCp`7`zG!G`!wx}E!Vu3)j%GZg>%(n0!E*p!TX zO<94`{yj`Zna06+Zcq<~#DoKR4R(J(_>w@s?9RP81Kn9<7qktWJo$=)_BYMI8wK^o zs0wEs{*#^jBYyUv&n?*N7yBPib@!JYX5;u7j8!pKR<)&w8wk%+y2CRk{#PBp5?u00 zShyOEK~5^HN>gMzAh(rX%-mf5v*fSD?$>f{lP%u6$;ZzcjO26mU<16v zwRjKq6gWg~@&Z;DeW;OMK5bHa!bcmqvOW z={Qf=okhqGz{FS^7#la&Ih6|BxjH}cUNAAqMf7r*`56acBA!JBvC}Y^(SJF`{#4d3 z6GpJbLH3~0$9!|;?S$mya5SR=RRqpqPUPCFB$d9fj1R1Az%t=4Dl!{(D8~wB0R*Pn}arCV9sj$9ifj~npR&Iwdvu6P(%-Npb&CC#xmGZx>)WRWHLe5t}yRi zDKk>Q?XZ!th?{YWyUyduqO0hrFQ4_W2tX^sJz&>Xe7iRPEAKBm2C2c%+ zr~&Tv{|D}Uh#xxFR<%`O6VuVa5oKfkka+Ow?SURppT+Ci18cKtDmw@D%(Bibh~E1u zCI0KpK1i}cQ@!Cn$H3@4NGC?wy~kVICJr_lqjX}(rV>;C0V)%?4&j*TC-SFm;N(?5z=+xP6lHt{eGL>g}{ zAH=7@-73wdZtL!nw|=%FFQ0AF`B*7(+^dmR9A;v*PQ#`=1$Vg%wN2pd^LMLDmsVQ+c3ODhwu}B+D28tmG8#7%vUU- zRf16p0LD^kNcJXhCE0*#8Qd6F!dG78pFB0)bXZhtFa_mi2(wqUoG5y%RiJWCo0Gk{ zY<%UVNT&BeBm2R*jg^FW_-B!ARt0A+zE*d(7OIUTz0@m;<}|*@C9EY@ux)b5Rg6~5 z^|i9t!d1wg?kLaD9PvXOW|VEVRz`GJf$R|o>R9AjSVEwNzVO z0r~}hkg%z>5-1{&*g+317=UJ=8<$KZc=T*AWWgj5qorRXD?|Q)KylTJ{a>MTa{xub{nJ3=}=3GaSyby0w{&I&+$@UWnT!F9%7>*f=0 z>!CjjuwcWD!pB^+f!2W5_ZOL?S)1CkuH7JEr0#WrcZ2tnpA;A)KQ+cQxa6{KUz+Gx z41I<#Z}za)Y_M~!&0HJWoxw5nCg6m}&V67#Z-<`JVso*JLqoCQ=6WdFmcnBI8MB>T z#G7Zjk!g@0H_hX7fNs#5Is^g**u204PoJyOMlVucK_MbB5pr7h?hOW|S6TS2z;H_T zYR^Y|jSG%^sll%P>{dg>=C`|EJ!PZzZp8y1M@T=KtO9ZbWd5?YAyFeN78_c$*q^!9 zDjJS6%{gB?Zk{pHx8(BQJpL3l7neZxo0sJJp@&=2$lw8NYX#`?cEUE41CyFB0plBX z_wzxdesxf3d6a%p4<#lhrX)1fHI0o?yQq0=p+ZFif;q@oN41l!h@-38=#e^EdIl8B z{|W_zfFdY+I^D_|tW-MTSuxB=&9#b|>MPC=ahaP@tk=?BbDr+u`u07}DyFHmRU3B1 zsbz+&4^iDRdi0y@Hx4XMmglT28<<$`G>+KVSSh|eQWML(0PxmlT1X!Mw5`E83aMI` zp^rX29%a%4t%c10!`FMjQ{DdmDYA1Yvn1mj zBYRVX?2x^(vdK91_`R;veSg;D`~Q1%-*?f?Iq&!NzOL8nxn9toD4$p74oFEM+lJ5K zbK>HdphZ3HeYRB~=iz9r#Ta;Dc@fsV`-x<)JE=!S&zz@U@Vl4P=JmfHQ(1H<2f^4lc6@TUyA3ku&vz|;a2soMV2cfSY?|DlUQD^&UYF_z2ySI+8-AJO=5S&GljV;GS+~9J(lF< zuRfOtw7(GbBd0b6`DfYBxMBI4f8?^0;AVN=I_^qZ&eJp`pkew5JxH(n^a&^5(oFs6 z>Vu}=lX7`(h{;K7Mh{Z_IcSsDNq;{dDa{;mc-2}a5t|!>jVVHq zF#B|)wXVi7K#A3SStg!vN1Eg)w~*Z0L4^Pr$jC<@5xrH3Emax3el&QwUzbMUygC2+ zQZN(()s6+-PRd6U*R~|!@jw07e$Ao;l^JL`yUxBynhr>|5PDa(p$kx@B-tw$F%e#D z^skdPtz~s}Im~)#ycL7bW(Xk^NU)%jyR`rGpn_tZVV2&2+oFGIZ)r)lpuf4{vpV8c zbDy;SPX<_CUVH2mdZ00%Xjwde-0!iv*G}`_SqozSH!y5w1AU!Qy*0}pO{XbnI{kvp zH2s`G3>@HW9LBtzlKsD0s!Yo~_sNcUJEN)u%4`3P-6^wqTU!P-rSF_NJo$~LdvIfx z00+Yj%}D9^YEm5G}hf^YV_e>#EyDiY6=xlmX!9c_KT2h8$Sk{Tx^V zq&g%gC9stRF0DV(e-S{|ZiKBFn(x4WQacrGKSOsKYy{-44wi%$wqp9*P6HahaUH$k z0y=<;Z+g4A+v-A8fe%~RlkPTwUuR41O}>FF2&m#mZP(A7v=IN7kOU)eLT#7Rsh}{g z<|I~!Y4yafw(+EIw&ZwQ=*@)rre1^c_?+13~=8kp)e7-XAGPuh>i;U}8yyVP`=RJ#FwMa};Zqe`Q6Hup&C;K3U# z&Sdj>JCCavzHhlX<*Cb$&Xt>{HEXT(Yt48_%FA8)btz>b?^R>ztn=xr0PHXI?OB~v zqh1ApU%M69yWYHj4zs%WUR#-<#x~Ddlm7Z<`N4y8`!NmvNLj7J07@Q=K=}q+z(o%| z(bhiwBFXZm3Q5A3GEkV(%+0%V#>COLmC^~|0 zz=+QvkM=IYt+p2_{T1W|oy}`j0(k{WIOw&5Vgw8r&l=ogk^kiW)WHIUR;bm3JEm~( zZ}W(@?Z{mig*tj;iPChV`YU5+_L08%!JL@4=iz6(V*r2xqH&1;ludv+Iz23&_*iUx zF?J^<+`vT^s$#V>$G$^nO91<>)Z$o^QYUK8;Hj5wfvDLf*oG||qlBSKuv<|S@;3Sg zRI4p^BN7Eox&QvMU+2@ECn%->syB^|qCXFVWZj)Gw4)08ZVv1uyLF!CV7!z))a2W7 zoluDqFruhy@u%dGAR9#@Bk*6Tu1 z{nH1_k)G7HY%8ot6i!1TB!iv@6)hA=kY9mlV0D!Vm)U}`$>PPv*GAN!EocYihg9N1 zcb&~#lWX1OxM|oG!Xl3p0@`68A#oXLd!f-h!FuaEV5P^MZ0s#+LC&Bc4pLimZ5&!; z*~|gW1+W3^-PoP&2$)b=y0h(yI5S6?l7g0MP7s)MeYWqL7feF^; zH=MG~N2F_)^X#1xnVWKXO~Sa~jDbc9ss7Llhc^Uyrfs3@Y66ho=MT7NNHzo`>%;8A z5J)+o^|?Wre7h0C6hX&f2C`z`%DWd2f6&m_-X3P$QHJ0P^Tg-`(45dgLlz-m9ugq2 zZbrI`xz=NudHx!I-^Ko{=)$B|)x)r)G8dfs))i<(N89u@*K{XR$ft5r4~FY1X(z)s+9|E$Ukk!Bn$gA$lp-+3CL(0BvwNu4A@vxt~J^Q!JFO&yu{2BKqOns zJxWL|4HWSY4push?Bq}L&($L*BSac5(EKhT-4LCe^`?MbpLs&Z*}p1tC1|-WJ%poM zdu^j#+HfLRKYPsfBU4=q9~3EB3&c-d#9U3HD%%K=WaD~6C&Ug+!V3wp=^k;(HgU0(L%$B#(6 z3{Ueo><*KnzjhOGP_HL4)UoG18l98cOPifpdpR^Y!lmBwAo=MUF@*IC^qTA`%)UHmu-Kg}eedcG-Ep=(ZW|tZUJ`FEuL` z4f%53%V`aU;9HzD8R zXT2%Ty;{Izz;3M3v1rP{q{ukJFJ~&`NMZl;*h)j!>Hy23GR5}r5qH9p>#3cNtuTiL zkk&zx0%V%-(9?q~?amjk_@hVnKD`Qtk{WY3aB*O|jBV$jCfS|g&VW)$0cqAtHy7li zU1tl{p=Y}n;g<5Jh>_V_--7u@C(Amw3zL(#S?Ykifdr?-s<8C*7y_%^ z*@LdOSk{w%a<&1<6TY&?1CQ5xD4=c6kCbd$a8gLb^3LYCo>olni2Ti<@o_5TV}iNn z#@ycTUMA`&mu_&Yj(Fm9YH3BAw%-Wzd`~jueBN$vvfIBl==UE@jYL~!qw*;Sh z(IbUMx?otziQwNcr2%L>lu96youYh7S~?N?VoO2a3T{sINZCV`cU^L%d4co#m(y(6 zcIo%xP8dpr>S}G&JU_11xO(uSyj)+npbtFhpU9{B`eb1lldya6&~F4GEgA@Kkt$h( znIf1O&Vz%-RQx_UpVMZ3uLi~zFj31$k2R5JBH`Sk!kzO ze#R64ICPIntloLeQhx|p^b|NK$tK_nKaiON@W{(;jtbT!*Ir4%PQ1_Z7gGqc0i&wh zwuQSx^%l7HzV}l27liz2GPG7c`n{?)B*ZoL32b%?H~Mar6y~&52*vR16wPt0)>_WW zN7P?`-m~N)n^9Dx$iewY^wIb`xSTa}D_X8e%ydWU`26DKMZ-a~)&VL!4p>RRtPYk$ zsHp`O;mVxAer(;-wyk?N<918gYj6DAn?paeGB3TTqO< zK+Ub8tgOtfSzlAr48_GG0QHlNs{?>4f>Vp*{Q2)gm9J1JlR%x^0R{12InSUpfL8cO zJL5q3Em6-fV-P)2k6XvC3!3Y_nP-3gZ*xL#TI7@6o(V&X>Ckq7|9C3wfI)?sr33TlZ_4}F(=?Uk&1^E0}cnK3_b zM$~YYfk0C&ha+DOo-xP`f(FP44&X)ypqPVYnA3Rm0W%^c0>L2y_d(B|?WN}zv2#FnL7KP&L;_EOI9?Op^KdE2 z#VXl~-=3hvsLI489=rZN2o;WC4)0$drxm{_RJtG}YAH>TQ$R^YH31+llqsZd;mer@ z5`HMrGj7)>e}YS-_`C`d4-z1seJcL7VoU7yQewR9bD(i7dh_jc3LbtmfSD{N8n=$Y zd0w(!eP#Q&QyK`yfj{K|!M&<#9ONLhCNEi}{Bql!0SywOsv#ge6^t*1M}?BtC7#QS z^0p|%UC=tMzSa{VFqU6L_~BH)capQ~jSz&)0h!c3YTNt<5#?H%+n4e<(~DK%f;c*{ zA&&~6>h`k3RUjBeY&g>spp#dZEu@+)~SZi6fnti|Yprn5Oc-*#;yVYBRv`XE%Gw z|7P?Ql!xjWp!-YJ6@+387j~(yR`jjNFBOpIP^tVkK#7ES+$v`*XbtFHhCbp9XQtC1 z{%V{!QX$NSRSWjeE9esT_?GTcJJol=*`!A!J-OKC1s)d<>0Iu3E#XQmFBG0M?5)@V zcc$5th$y#(nnGau;W$PSQ=ob7(3V?-rnn>BgUBh{0!h&56`_)<5LgQMYnmyy-yh;F z=Ci38hUX6zx^AWUBXfvT$m@5h6IP;Xvw~#ln>s95IJ}Xs1dSX5U4ui+CJb`j7sreZ zwjpgwwi^NK8scF~ENeXr5thAuxPQtL(UEvg{8!h9?pBI)u3^$~I-3nTV^gK#-O18p zm)aT!j$i2xaTNQmwRUHq(Ic;Rc)kR;vcB*^n}f5P0?X$^67nPU!RXkSXf>pRKBdHxg?DzP`CF=CK|b zSu@iE&Wa|W%sp`*bYvp4-T0Mm=N+oH*`h^aqdkQ?Z|tV+bBUeI!J2QiK9aCt4Gb8x zp0_{-e!e}6u*PW(U6Y}X20lLv?mj3&knjbJli{$`#kmbjd)>)ASuB3n8K3P|ZyO>GcDul{OgY zvtk|+Pe?12gV=mcJwnR5!YSC|l*Hzr0nL$s^!z{~Zo89v}qauPZ@ZY8noZDvav~nw&GD52`dzcUV1ya-;>Onxk6xaK(8{@JNRc5tL^-p zHX{g$3PHN=0LFzWq}B31%E$vM2h;jDgA)3%wS#KrVK>~L)ayrtzq$iPVHceA@elwx z6CcAtq(A9RYZC+l3C5jOY4Q25C)9&64R=16TU!)={MN+B{+%#$}|V^e+T!fKz66dT%kL zvT27=t^C%%OxF$@%!y5RYEl8^q|O2LC0yL9Xi_a_Ml+Gu$mZ!6Vzv_uWJGoB<8FZ5 zSFRZ1*$i~J5RtERYdbn~cSGcPE~sHXhU<;YD&i+&%6vL=Q;|Ll_P;Kcl;I~QDyUXK(X-I|wn zF58fp-K_d#r5kzog1eqxiuL`4IY7{e`8^c>Y%!5*({!+(F9@BQ#Eb6Cx`{80Y(1*o znK_M=Pafr$Q}t=fMjl;6Icwl2i+-Gb(MDa0YA#;(HENPUG$;&)sVtzvqG19S$QqzS zXakiEbX-t=Be@`mQ3-sjZW2ffgX)kQOlZ@Iu<8l8MZbtd{2c!y;`hlq1e?ZTS>XhY zm0!4rnSYV37Tc}V99a*2O|KkKo#vr%BFD;pEMCVQ@GBIyxhKU$+XeW9QDW6jo=i(E zj?URsCWPWrbWX^Bp`$oWPD73nvf! zLOoU=oSLZeM`=Z1Cql;=)LK^lHS8E-UM1g>j%>z#O6!i+o=HQbB&KD&*jZb1)+8&`G|__!Bwclt>F$;EA`p>K;#h=4Q2*?{D8qpKc%Mi&lS>SIV)| zigTG7wk3XB1dm_s0IK6Pzok#p+Jvg;{3=b6rPL1d$aDD!Tq$T3K%3JBVicgZZAq5| zYIqu*ItunGhv+^qs? zg$o^ghf(_taM7cXBG|y7-V0#{=cBA{t`!vSub}EXTB#uYO^g{Vf37Mu?KuAa#U!8&jtqA;L9T$LabMlB{=vz{2=@Qq+%tq9g!w(l zpXEN;W2fLXrVp-ZreM%#8(AjRGS7kXM zoJwO=00E0<{m+0=3#(wAyCuH@_-T(%-2>+eFrX-*vavDkq%K}gOb2Sin%8WWfPll= z12$Qx@6l_ps=$!~Qm5Ik`f%f5xJ5JAR$&N{(*yv4%>YA8GJ8OA@d!RsSptbbKrBp< zk}mK~rXQn#tslz)nIy@V3oxjUfy)F-a-7T1w{wA^5FEu!VaM7H*>50%y7oS(71-sJ zfvs65fZi%~bya_qFh0OT4kmKc!Y_~{Y;1Ms+kHTwjy6)b!Y`8a=YH^cy9kTk9@qS` zw2^?nfFXgF!#tvJG)y<@aT`D;o_`$)Vuq~HYrx_A7n$bS^r0>vr8ukNSdc-=CRI;+ z1!qUXEr{2lnyHc*)Jqr!C6EgEonQ|}xdNs`$WMl>U!b;q2OcHf($#D5kjA<#z|oFfsw-ygj>y+5dh zV&)2kZ{?CjApJ&ByVSp+^;K8#%}rBPoH+LSACW%^R!19!w{_Bnge{zKRH+bE0W5lB z#%%x_0k`M?^&9wp0gD8e7!=N0qdcMhaHApk!dPosTveMz|Mu-pD~&p0ANCm#g{WSZQ7XFIYi&cMw|}w@JY7j^PEipj zJ7>DT?_BZqHQL|w$SJJ>FXcH6byH?SOR8Q%6W?Jt z%HTnHoACCL?1&6=9I5=&;uh|uE@C?1UwId{rUo5Z)d9&+l!lbdsS=f}8MUc_yPcVP z8vn2>laJ2#;Xvl-(5Ebp|;{Rhl+{Bxn1V06{3t7f{ zT$%0Gl&knfHXWTtOgI{lcVxdwdlFV5T zAjsg%7Pa@ybX|f>2`9bdOuXJ(>nQ*dS2*f%$_vQt0ZP%6vpoY*1ma(DRNFFxwN<=~uW<&Q=zgtR}aa7oOU(N%~UP5VJ} zw*kT_?n3k+yRSHip#LXn?c6bIdY$XX@cZ_Vx>p&PQ^AaV(*6Hye?zW$0eA-93+{Pu zA&CNCCK7T-Y*jo;A9}1wbr&jRhRl^P2#?&6vVTaddNELg&o_yT^7L>W$2e=I1UYpD zXi!HyGq0_!Q=9m_t9G`t*85Xs+xt}))aY1Fq^X&&Fo?MJ(n%R#kX44N+bE`=EU1uXk&83hVnws|$uU zkfh(3q^^jZ*%+Of$>Q`65cfw~tmupFD*G|--hLVbfF@HMJ5!Sq%sMyFOW{6l}emw zl?HuW3JAAB0EeX7h|~vq+fGk4zXjl`IM5^{!=dT|rGMWGHMziLZ5N~7V3%2?vH;7h zoh8eLg2|2rm(|;Ugfc;7k8d%;tH}I6z~xPbn{pYi?^)KBu4!sEgZ!2Xw-f55$IxRf zgrhMaF9Y8&X11>+m7#F(k@F?nu(z>>quuw0<_fZSn>$1|w%j*rdp^qJ>_f7+6${w&iBKy-Ne+mkpXdryR45*v z30xB>HW^BjyAWqYP0Dfn5M}p3N#Abhj8mSKE=V!SOQx>lq=pIcw3eg|cDE!sN?ml_ zn0MC>*(F)GW>PxcMjLN9HznZ}c84y;Z5s;>)j@3FnJvnbCku;O8lh+p+1A~wj1`N6 zqR*2Cw=$X9^2GJWcgJ)y(b6NXTfR4jIrV`eW~NYcj?6unru5@qZ~6l?+a5jjzCRL;cC>| znuYN^{G}D3Se;A`f%x!*G)YT#V(K-ZS&=qiqdJ*)q9?Y!pvaQyRneKguZwZ-x$JY`21D6vVUH z_i89+Kv2`T1r&k#?BiT`G|GN>Y|OCr49^;$qL1Iz*MsMxYqL#vQB5$FE;Er0i;rsDif82!AfQ(1R2vUS+%$`n*Lp-Q zT*_g1d-+oI<+D8=i+*>Vgj6N}a|Y3mZ@${TQZp_>B>RI;;+Lr^0R^CNfEY&1I5>iW zIq>eBoXK zwj9dma(?!|%7%ZICh0#2m^B#+%i8|gPqMjUR(Bzj>HD)K0uFn1!vB4+D@$@WZ0>1>x6yWfhZ-^*hB0tvW+0>Fui2?AqSR|;O6f; z!~wukEqkKbY;OVF8wjd)2(HDIL4>l)HvXJRgwKnVB$KIi?VYw$b$R(m1?5QMm83LF z@rxOSiZFOd$4?h<$@WPW+933T{t-We=ZSI&7TD0Kp z4mCLqe8@;0+S)4hCBB@h$>bs>xk32PqtCnckH0YvPyyBvS}0qOMOpv=`Ov-yQ6+G} z00O5v@`4zP7w>uoCTq`pl-Yk@U^#y!{o^HKoQI` zgeVa3P5??Mk5Ae}dEpL_yjCmFkY8&E_W@v%tnQX?XfuMxgV2s8cFOhNx?fCjFg)LL-aFcRH+LNCObpX z=_MvC3y+5?U?k88F=D~`o03~B-jLUkp779i%%RN^uQ$csNxf3)02&Y^gaA7gtoKAL zP&syWqFR7afr2MM0z97Xpd&+)_N9%1ol+eytq{m3Pe)z|9S9TD+h|Mo(3mMr{w5&4 z-lVj*a3Xmn`}YgCwH^npBzwcHO!kzJO!~GmF*V5W^o(%Z=AUN*6(U)g0}AuhFbh%N z>~mTu*>+l!lV{;vyBG-!3pXy3v|tzE;vF5}8dit^e(KbH2{ zYcE+nw$fep^@W?!yyU`YNCC`UP!b-cEP<#q1Q$Si1{)W!GeiI!z75aA{|zS*N~i-i zZ;JVWI749JqY0+irc+vLJ%4Xls9&4I!W@Zl2*Q7D-NUZGM!Vp;G&Vr4xdO-PW}k`9 z<|1oX?jz;07AIhgkO%bEmqMHZ4&K ziYq%I*5wyKC z1=m`1wi`)y=+TS4d+Orwt%bX6KpIPLpTv;=^Gx67hCA5ot#rF})bVB~SUsMEjRaOM zS#`{cNQi2=0vu8?*1;fQSf1<3m$d7zeMw3KrJ3&5(e3Z;kCIdKNfw!!YC)ZE4cg_W zPp|g%CucPt_U;`3n?HOYRe7w;<&*&a`*Im0ZKXcU9z3O|r9M~)O$j^kLZ|i^u*KTU zCY(D^S_DTZX=GIeXxd&ddYqSS3;}a11ZgEf^<@sSnsu0DgGMyK`C)o+T={(H1LrZM zPEA*9z;C8@XO^gkj9efmPQFR)E6NG(Fs{x0C?k+?MPk)EgfieSbJM#9qB%;Rp1E>d zVD>lfQDpEyQ6?A+Px6+}NespLu54Kg84V5jdVeZ`zKd8)kfzSv`c$?GK2r7=GM~Wn z_;F{WY{xzTTKEYFI#PyEH8etCYw##G$cP%5j6)+M5mgL=G||+BslkdD1mHg>VUhqU zK$3vshvZ7VUWsxXN{oY`CIeKFA&5&N>f$A9-qyXX1}#y0<<)QNr9BWxkolqN%#43N zkn$r*)ZoYZ-KGF>Do@Ryp1%99PFC8y#qQ9T7&ws8P`W`uU^}qNeMcsdIhR*g4;1Fo@T%*>&BfGUv0S-EjE8T`qI31 zv`0mj$b6xxz-+TnjzuJkp`-4KiDWm~rJq;5!+iO-$X5+Wl`qV2(mszd%h9pWIf4no zqpBt1;OnfAC}UjRC16cR34|#Y+>~U(buxszYvXtL-YoT#q`;uSWzjn+f?Lh%;UFy9 zEc|lR$e>p@s!zZDDfJrtI>fU3;0?1m$k#f0Rj=&kUdlyx+mkZvF)JBH=j<}m9?ZMJ z!>#9(&d5KxL{C*e#cZe!K-KO#^5cJ|BkipMPH%2 zhu!tg$c6Z5B|c60JM>Qt0eqxro*)j=m+NbHNj|j_+vGz-kz|Y9a@^CkSX`$EXZL#k zGF4kAHDfa5Bvp?nc~%*Kb{%^5{%Ee3m)GtUBU!NF_6UI83T8B^!FrpmAbU}Pw6_Sz zHU|Y$NIVF2CNk@IT47pJJPJ>P{DSw3g_(#HhnmTLfQN-TL}Y9)vFN(1+n_jdq5CW5f80-?vBajZ^5eQR}C26(- zmJ-bT{SJ~3WW1_Py4}>xcX$TeU&!GP+Mr&G8K8I7K>EiF8WvJ)r4L)o`J+7~dGlwU z>fsuUYJ{~`I&Dw(-RIqX4tdBfWmA-FHBG%WRaPfBQ}b_^Kjjj;Yi;U9IeAe2_=E1; zX<&3V^#ma8knGh5#Cb?O5Zx1?HV8AXx{}B5vH7?UWW>M?p@t?wF?#Y=Hk6Yn`4o~% zi~sKFkPsPqI%w(id)<4XS^|uf09bbG+f~aXQlg8XZ->Cr&%OIC@2p&E^9b$=>EC!5 zJ?lc$Wmz3-J%7kXqJ7Izup8TQW8){ktrH4Nm%!$f77lMiN|2e2PgO5oF3(!cY>mu( zO0y=j_XU0P*0RQB>Xwbzosp%{dwU;!^(YzDF4BxK46BYFIG?~yu#PF;T4#R~IVBO1 z5#iEneUOAX(x4e~7v^UArb@j$agl_OD+5WywMfDH3k1cTf5f=`JDy@Nxlq3~l*eHE zm8N$Es8!LU3amrT@Vr?YUIWQ@Kmcbi20a}jcSS&A1SK{cp(sGtVxY9-e*GJGz9^l_ z_2Zc@l`b@2sxik(V{QrmM+owAee z8J}oTf_j!s@mubI*oRICGk5uEt)|s?w{6P9%;4YkEoqGA`Qs|e%4e`=eu66c?8Jx4 zI)@dt`I>>0pfc?#0YGqV6azpJ1yuqHS|d`O@P^<{PR$f$BynjJMRS6H8IcQtjmZEA z@@TuN)37vwOhL?>V29p0+4UJ)ECCFYN@cW;(b2dCa$1>!5!;O@&zP;@ z<7BI1nKP?+o1R?3m0?EWk~AU0EiR+f=RgSb2tHMM@relxPP*6rXwMZMmkMA@iwHNp z<8#(@1svswBevy2X4kNV3v#IjCEb0|u>T|1+){Yirc?-&-h$2x_fU(~I1dwBlt4BI z`Jy1Pf#0YD&h9wi?nH9GvTE-t&*VbfrOWEz3ltqn9B;lJvIN?*ad^>Y3vcSVNudF` ziZxZN;OL@@gtWs`RgvxIPE^xk1dYLkZC;&eZQZ4*nx5;d>*FgwOkm2T470HJvhV9C z*qCh1J$b1(?lHjkilB+8`3ajLC4ZS<=3k?5Y)(F;y)hPFGdZxb3fmDOVVnr$9$(u*%onr2!i z$sue0{l)enmmCFMpz&Nc+i6)o9=DczV5632mf|tr2**cs2NZoMfH>-z4dk9FicBz@ z;!aoag{sXTGj4m#4>JgneHN)y6VbDcglExH9NJ%v(H{P(?qk271V%kLiEL(Ul;AMf zz*|%_6+hYMD5b~`L-9Hi0_~hSAgEymCd-qY?Y^=C(EkF0iV!55nv&OwBCb@}LKPv4up61!a zf}+W<;$D|js5QC_e&}FrGdtYSJh>>AXG9I}Mp7>pEZB$zhP#7Ob9v@DWnuhM;D!zrXQduE zK#*vPn0RGN76okpdIQYg0vKyNA*}@>a9Jw&06ie3PYyoVq-e*v z5GO~co0oxXodo5v6|QcEI1$RNq5k8Mc_d3&M`(w@$l{yHuCwwh{u0U(N_}kC;rQ1P zg|!%6a?Tq75;%JmudM5Xs9~i0;En}Mq{NB@Aqto4~+F3VIA_R%PYeS@9jJPX`wujdR8Y_ei0Xxf~ zp}pM22N6HSwsjC75J7Y-O9f99qzwRV$J~+Gq%n{V$De9tW)mbR`RZyGvI`IwJ|rHt zN#s=Q$(UXoVr(~SFETV6*zOaUeD>GK;_Txz^X2NY@#Lc(5B0k)6ZO49O=ABh$P~n9 zbDymT6iB+W=uZBQBiN*$9AHr;M$J@yj38D~jCCI0SZ*(UTF53QbX-@o6nF1}$wl7A zVkKQ6TgapUl^Drc1mrNp(jpB}!mYPVtpd?6j)1EL`LLs%f4znC9Jo4?&cMVeNV^YT#FUlifu#-1ubMf%R z*yc6=wJD~RkN&CyH&BQcMpY~GU=t`Ti;66AJccjnyVcb-c6@ljkYsdyUo`}0AX(Ml zCktqo0L4oIsSr?jXuW|!%26+69q9;A7O}ol-{|z5DCiJKKK%tDx+7Ddd3wNs_JstH zP<)#kIIi`2)B26~Ef{cZ9UTJg>lJ8UVR+5Iw}Yxb=kr>Tc^k*5_;SZ;W9=GwPyc*j zZLH>8KSB;9RyR%iMENDwXvx+?iJzaUYHJU5y+cJzW*H$h7``oTAhsllVcyteRt z;FC^L$a(XfepqA1Fe_mQ|J5!b!$W^)ibBxIN}JepW1!9#hekB%vbF(}&KBl(^8>KK z>yXc)t`jU~P~@13vLq0lO?O0|YGXsw-AtK^>MIxp$ksd_gilep~sF8)9Q5V@t zkc83Uhl+GE>|C?0XfGs1qCsi}8n=O$dB6Z)1x=EiUeS2mt0R4`8xAb6OC;0U;Sda%qP6c)G#s9iym(L1kh z+?5Ljl%(#f+I!TZth(X}XIuH;cNAr6G0ujL@BBAZNyOB;%CCSKDfJB8H;7b#0|@Xl z&=nC^hXXAE486z^h6N`{mVFwKT@Y0PCBM3fZV0|XKmkAq`H<4BWnEJTniXg0nZdFO ziPi%oz~G%Z0t|#(?r6^9v<%P*j0S{H1YJL3$EXQM#1b4K<}g74g`@!?BH%Eoj+{V+ zpcit0wy-*S4t8-+`jevHIx~!kNMA)C4uRwEv<%%f(8+`5R%a)Dy}em?e`_`Y8rRL| z>q}F(b;q@R?(@SUC96&8f=gA}>p$z-E|%;f4SQ`kM?O>!S;hls=*AMvr5#touD@<& zJiHGV9i1w9M|v7mIjjm1@kj;N;r{lwr5+;Jz} zmOsp5|BQ(h7)!IKgl&)C!^>}oUcN`LVA|?*pn}uN{iwg2N9!J6N?Voucx6YfLi?&V zzR^QDDxVajg(G(^y(dM5M$TR_k8}V1Hm|6NMfOl^nT}zf9rn*`m_`UC#iKm>{~EhF z`cJGe%$xa-fk`~G5ebh}zU)g)N&1%R51Gn5JYm*7P@^uaIa-AW%lr`&sWrp43o;lW z0(uigfY<_646t5VR*#sV_J$=pJA3orL%T>5zT?+TS!7+@2JRntmQlw{8wq10?5srW zuH|n1I_<;w+xh?M>QE8sclAb(3$^!ItfK4aqsb4`jqbR#afA;SdxkBZ#*w4jmU;*)Gx0z1~RTiv`3boRJC53;GrP5&Go*7#t{i^g2C2wl>UQ zdF?2zkePLgO`SyE{kMfb&cc8H)qmYy7B1oYPnw`b5lX|5x2zSX>bhZF#p6bUKcR?% zP|F^j3Wj3zPCV;FS-VbPI@yDwxj{=jJFAoPb=WU5P_(@d-l-?0W5=%sZVI9Hj`iEO zSj^|6N%gHG3zCk62rke)54@sCO4;~yh^_kY^~!V7Nn7*P1%dFL&pb~JO08>8*SI|I zTgX26p@ky4%&4S@7X4HVI(oV-day0IT&E#otkpb$-MPfKl1s`staWC^88#zIpC4}S z?r#&eueh$zGfFk*@7jD@5+i?&hUJXZuB*pyC`b6Vs9T-ksPu|^Nq^%w<=%`lFPS(- zH6CZYKO@I`MP(Ni73H2KjR>z6-QDqQT8?8Y(hucr>`%#*6^RWrnT|qxH+R6!#xXYX zbn^LQgBJxISYAHMVN>xXvK9Q|eICgVZWIZo_kG;vk@D)Qrdf^AQZM;EjCFLlf+&7J zR#N(6b&;KqefMvdv$YxKI83qX(4)XGW&e(X;fS)}39D{avZHMo)U??b%Gky3B&pn-s^< zNAv05J(M>nTP~AvU%XL%Kp^xkC5`m9YCd~fLxYU$)%vfppXZ0G^rc4pTxbd$rrz(U zE&kM4lr9%cqJ5G4!Sze-eR8W;Vbn+2i(H67{FCOFhll-L@gHT(oaDQIQQ#=0i*5u= zigZ6ehdp%<$8-@lZ`@G7N;wiJ!baxw*4+H%>9u<8 zy=5A|zMt)kb!EVJSoU7Ofj)4bHO-Q_nV6XHB8Ra)FJIQy1Py%TDz5CNp(Px9p6D>; z$#*~lSI?ESvr%#T){PsK%YIw+cRqOdyySS@i_v~u)D>o#at*$bhUXyf@#89|=l9V` z6^`p;PrquswY##ON#7{NJkd`I{)W-3ty@fFQl+0dZY#nc-#=MQI&u6suH~)G*R7Jx za{?t348|8e3u4)C?A2Y=DqX$!$u%$Ia#ECv(z!%M@g>F!r|@A{h`P_y*K{R&`HzkF zH{8~ndC*|U6!+UHq4YkV-eUMm4pqDNbNe|xuL{w~FWNN>e6JA1p4;EC$-;Cl0RF|q z6i4=X;{g2hKOZ=M(u-!NSJZ#yH;whHG?n6DFg~vG)o4>5E}%=Yxvrm-Y3P)Q4Hpv= zhn6mXLseYX(BPg>_}_8fv4!X!?^U?>^4Wx`ay_NMR>xd$M&qJiWu@ZAX2s;$&iNlH zo@3|m9HXK$_WDb-7mm^-x~EY@Ex#SF?`-m;3;y15xV>q5aqIqD%8shrbjoQ{mw#mw z=zoh*N_1Y53Xrjh^w_B4;tg1)dG#uKc@0N|44GQ`-)`{Z)k`lggui^5xpFX%JR_fdM)GiC)#iU!XX)gOO=>8X^RPRLiG` zao{_VYV3lBUJUFOm!X)xz30n)sXOX(C*Kg2_t(26{dJ$pil1@Pv)c92)AIT!FaLa; zXa3DYe*C#WniJ(|$WK2M_*KG&9yHd_KT!DmfLv#{^w$!25v{C|31#N z;|yUSOl)TlZpB0p_D7ZqVpFf|?5@ijI4RyJv%Y<9X>qrA;ohP{vGNn{{Gmta$uu|& zVB*0i(C zZ@uBsFC4dIJe6>sY-o6R9$ZZyq+Xq@>N8R8x7>Ct{dBUbx0`}V^4pY(;8M(zxE@1W zKH(O;Xbpj7{&UjIOM>#7_C_*yx8Vvmbjp*Lj&KA9XwTX zzVbP5g&~>Hm+}EH^dwo-c$M^u9bNZ7PqVGLbU>x3@5rmlyIe=`kg9Pz>%Mzc17rdB3fH?MGm|0nepd#aYd&{K+y1$=cx;9Tbrk=M>+_12~4_vr*K%A>xfLvAX zz}W|&Ex!XTEMH{9dOvdciY2Ds zZXZM7{+>KrX{a$uPtJ|hyv_hO3C6R_stQWP7r-AFLD6hNhP7qzdJ&Xc4Lp z(t+Ly<}U*Rs=%svjGjI9Se`O4sAr}xWuOWW3tl2XU@EnJ1E^?|8(am zj-tX4Z&pdq%IG?76nf{e+n*S^f4ZWTlgCGCrita7?UD9q*`TJRXmQH?ePyB_27`lM;_N^!8 zi$Z^4D5dVqT5b(~(mf{rkTNt%Z`jBrVfW+B@#E7+-1^i~Z!l2dgBIvFClgAh3|e5W6LKi}l2>#%SGy z-+7ABBAsQ}D_kcJfvxEU^z7F(G`?0<4Z(wdmVTSZZBp*XgYE}Q_fE#FHd$ob8k{{ntj3Rf%QtFvKbGo!2bMs$ZzimQw(7hpKnVG6@V|e#=;~b|0JRKVG>7JJHeLgNUhM! zBHjUecYV|FiCo0;X-uX7xqHBiYV~9)c8Y|eYwQWdL)lG~HeL!FZX=xsM+z3CD`HZ` z@=gU77vG3gEijn5UA);TXmV88WL~`U>$BTmZ-%>(4FR5a0-##YPzu)92O&!65=!YV zThVPdk9~fOFLF`(n;iQf(dCKPyEUNaZUCsdWRKHuR@_LDp-Nw}e$uY+dVcIm_3zmh z!w0K3SQ!cn=xwHd&|!Wq=6|aWXE&)g?$AgllD`|DRD^%e^qq$b11?sxspnrC^1i-`$F?juOo}) z{BfZ289_An>dur1Q-bF8%R{e?0tx>4BIHJwqPK(u`K$=ivDhiL@0*wy zK}ybJ03qf91A!;I|N9E`{>~l_*J}!L;w}uP)&0Ja-u`%Jp76jm@#eU*tbQ?n{yD3# zP4kozJXsE1q8lrjD4o|oSJw+&UD~P%A)l8?E}||==TGwJjcY9fe{2jD&3Z0Gv)_um zL=L#zlbUS|8RWa)2 z{BX4~L^fS^USP(2wz@P7H06QI-IpnED|p%pj<5TuJpLrDCg#xk{BpXZ0L(CCmRPso zR8KYQRQhx4p#tR;nB#+r4Kq<>Pk)yB{)yu_1uH8qt4p-7KT}FQi8~MH{Q56fn~d8J z8imIs4?F>PEjc50^FoRy!JzuoLPW#;N8{gjf!R*V%}osR4#Ik1uaRn;63uI~s05$o z1H|kN7<}u@n7f?dHh-cRzfVD~tbt&$I#hJ!_x$7)yiK!Oobnk$^;}tc$zqQCbl{&3 z=s5$b7SFPZh|oY>L~Ah~r%*F=JH~L*o8x=>d0QmS9dO3G4jVZ;_`9A9k z;BBAz?4X2wDc!Hj!$J8oa6<>z{zW}_j9`Id3szb0DR)7nOSO|LvIE~9888*Xd&cOXgHe3&QM-ZEBaaBWOX||7+ zC!Fw|uqP}y*ocec|MB%6@L0cn`}k!=M#!pcMfRwSvRAecQDlaU2xVnwWeeGvAjTl%uc zwn?x0o#d#HGVLfq8NZdGZgj1HjV#FyA@)b7tCZTpqXzdLak7)KF;`Wde{A~N>ziu9 zij`ec9i=WAQ=9p%yYF1maEIk{)x7uPQH6`?uUgVmOXeR=hh2D)(W+|P7Ob?jAz5A` zoAQgxC{chmYpV4yjO~{6(GkHxS2`ST3h;O{*r=qj;={RfzC|Xji|)#BJ3%|#XjWXm z;+O$vgRHq$lSrk)YLDYHIc02O5*)G_qXAXPI8z`HU z5x@GMDVr;|$#LL-)&@BGG?l_qTQMVjKOyFA=Am+sUOhk{;{BzMUQ%OvUR?asJl>!D z4S8Sv^Ey^+pwzuo0)v1??^|Mr-*ogiF%0`ZK8h0?6GuP2IfQ8t6CDL=wUMijQ;URH zWz~7%P+TM=qX6$fmIo6vGY)G7pP>0y8fYqDv4n&Wj<_zpM|puzcM9S-@r5HyFGwcP z4244+pMpbCq+lyCzG(tG1>Og3B=T%V0*UKzlEOI5o%^@XG|cy86uCe1@EXlgzX+4P zSd_syxw%NksCD58I!Y>dl~#zP-C(|wnVp>hc7QFGGg+BbHH4mQBfRKPni<-oeKxd} zhWG87E9f^tlsQoA5KwVlp`=hk3Artk)49EUxJ$i;^QET{`qH&=NfSE>Fjm4r^dhJ_ z7<53g#*)$dPP0ZZt1&8qVMx#(azLhzjEL|8f|bPa6D=#=Gk%rl(Hbd7=lyxkTPFAe z1vvq_`seAayU-S{L#$eySoJ+k_82?{q!eGk*s&ql=$q=le)GR?jqxsmGi>=>#)fFA zsKt-27R2#f6%DK1rsHu=N*6!MORZX~x&JKu;*4h5n9DYekoWy&8nSsig{7725sNzs z=IN~XFJHdgoP&!6j7q=lJAR8^?9-=D@8<-^#hp7e)0^n2heE0W;#UY9n}NMr_4^Ef z_9zsTV8o)EB&cyH>M`+ec74y&zEwL!MNJ(H2LjYv3tWUKdjI2-9)kjCCn1rbyufGZ z(BDX_66RV9-47f^fXQj=?Bx0#D$RtSj)^6PFD;eyGmt5wNZjdT0aXQYh1IIvvZ(!+ zRhqZiAJ(-aj*LnfBoG~l~v2g1x8c4u1Y|OqS=LD?J+0-67q9mY%144;NrLPdC zDw>*_B($_fU_1y(=G>LjXO)wL)ICE1EtpCRp!3PHfPx^X=GP1oA)hSt7JoF-Rv&Y| zqeY=#KxI~Z9t5O*u>4^MhxC6@QK;SOh^&R$It=apo6B(N4uo*68*rqeq(p2U^n|K@ zVd(dlX!evSxYWeSP$Exl1t^p6re4)*ur1u%EhqV@46B+;x2%cUwhBX5Jt8qN7|Khs z`1rk6mP?n$!7a#d$l8B+r3J|@ps)w&te96iYxgxGIOQ7yaT2NaJdFaSU<-U)QZh0u zl+K3-r$G?r4FmPGQ2L0I%hp2^=m#7(A&M8Y4V%kDWUO%$v*4J;{yVxWr>@4#l-)u+ zib=b$>_x+^r;if$bpm+uB~k(eY04Jy_>xUz7O#jV5a>Zvm{fuP2~(X)CF zi_fD=oi{-cmY=%1`ePxQ{Wc>uW;pf+n>=K9u+%D6e~gM|%&wKzqaZRVDFoEab(W>+ zki8}9+rk0UNYYx7ZIj|`uSIs8lr|t$Y$h>*wKwDQSCZ0k2XQ2NOP0QVe+|rACmOFc5rSf@5eoC^>b!K;(tFzP?T(1-3U(`3pyA zq{G1j`$Y>23x)UIdmM6)#je4ykf12K6iURJoO86ap|ArHZ#<|8G!(1AKmggegW(rX z8h~6>lI3$G#jq7{-l1*@^=vQbaEf}nCa=lpJNDb)Xe7YTz!n$98dO&i@TuOYobr6N zr3iPo!#RBp5=Lx$`w#112D3vx`FsTHMLrPB!8e_roi&DPvI0Di4sAkcMVv|C4*kXs9x7~ml_UIGCWqR{%0GgIgiTaYyu(xEDl?g@Yh+zuKAC5DY#`EszP?nLE zt$%RE2$*1b6&2aJugTE3AxIEtnWmJmwa)k5hhy&p`^3m%)C(a^8bpCD`Ex%R+SfaR-x_G)dK!&SYf3oiQ(Da8xgr*ci)=xaWd z>wA*2wTADnaD+h$g-?cf<}H0!w;?rVvK;^CCSAD-l|la$ zE;p%Pi3C;6nE5^^aooEQN;G;Tr`qo5!a>{5uF zNV*#c6sC@`>j4xiXE}(#ldXyu&HU$5>r_09EXsk8-V^;qgx97>Uts=K*?eEMso(Zh z48y_hG$H3Tq_R=zi-?U40M8?Q@WZ$U=q&~cSyk}vMYdyNuud>gFn$t@bg8UyTW<_% zJswx;dCWo81xSX(&aY8MUx|D7E+Cr~x+@i8&)XUrykJz;)Y_T>i8JT^Cjm7Q6!AG; zl!b+b#~f$qmwBr@CI2_P>c1|$O5({;Ms8evC5w{gY&1l&ThdpW$l^lK2r{WC33YIiaE!qeC8R!tKg&PbR z@E9YKlS3gfkOC3U52Zbptoj-hEhbz+4*b^WCjwt6TFPLPQ0K+n9);(Iuv#)TwoHmk zLFvdEg7x_BNVXaJM3W=*UIpkmw$^r_ziddAe9rJj20CTv=JB%oPO~w?sm9N*JIs>1 zI=#7l-n}#E4gzB58$KfQOIiFOz;^=0yL!(V0+nK_A*G<;_wvF6jw&8z3dMRH?Nkmz zHsT3u}L9VL!ZB^K%*SUf|^7Wk(PiKK}tm+y&B^4aSp37I`l>>ulMa{!yUk|!E?z!~c4A-(^o^d15-N!7 zz84_MzycQwOnjS>YRD9_Hrp$MMbe(Xwp`a?MhPGi$d*P2+vuk+G3ut)4MAnQ?||fy z8`X}s6(ktnNd>OND?5YMcgrI?ofX+ta6G*ic*Lawx3Mp86yEwAq8<_)SmX3R@-kwd zQ~*#tzCLQc2_OSvs#n1M2l9*|f?S*{@E~w3DoSG#f@_3^RNplie-#Ig%CdA4P6DZe zI;S8!1PCf$vHk4_^?^}v@FG@jE<8_Eh*AnFj!DRMP(=YJAp6}C%L_bu76lhnlZ3oI zj}NI>oo^xcIm-g#*lO)DckI(4cAwl_^QsrX(aC6%HoV78x3~aD+TpV?!(A>m4==*c zjD{i`P>svr!IQBg>PMnRE=wG7^~#ksI6~Y6raD~lj-UctnA_e`a_{ZyTZhlPbl@%t z2oUm!2`34c3e5RPQ1UZUTC1o;-yLcFSwbUsrq{fzj&3Yd%7oM4FkkkJmU3zDy|#JX z)S~OgdU~$Gpj5v!+<|qF7LLQ^f$nsEr1I+7vu6t*Pe|3W zZI0Lo!eECU5+~^0H%XOQqQ>^B^m(9|^o7cS7?F)b&AyrFl$$#V;#(=GF^XVySLo%R z4Yzq4QW}Y6IPTPetBH^pom~`Flze{#Hjf&%ke z*81N;zz&FJru5uaVm*LZyt&7Q#gnxuk;u5F)rO^7x150sTd zYOW`L^*WR`sJ+I*!eUta%~~MkX$taOcqsa7-vu%q(|xJ3!hV;>vpbRAD@mtc`=y>$hB_hRV*hUyOk^hmCTZI;y^H9EEO9YsLl-A zp`oF+uV1`vzU1|8H&(HHq(K=j^&w;xYZSkI)iDff3vC{G9PW?+@_g#AsG^wiJ*)hcc(vjyekCy1s{X|eQt_@S#@WlL^)Uz zx2JRRACbu&0W7U0`jZyvP123o^m%6ch3DS+jOD&ejayT&7sWfjrVnD2KM(cNI%HP_ z1_nKSW*u4>$KAq+edEVUi!pL9kVm@Zb7V`Bl2R4Q9cK9Pd!Y(*Z2t|8QdUss>{d`7}dOhP*AIdKmW#8@)q93Li-EZ@iAWMfgJ`Fp2Z ze&&yyqNP#k5nN`9gLXthCNraIBT;7+r2So&Zp=3f-M$zxgd0_zE<;>Ri}l3CZR|3y+)LZ~s+kr@YB2tbHKuf@R;PS}2y54}N`oeS^HmVTLVn*QW zgscgK<^phG%WDrjXq#c=8!%<0h7#qiS<3$u@$zMQZR}*U`KLTq{F?nmjwBJ6v(?Xb z{F{w?#`1D=<9LlQk(CC-Sf!o;5|SY_T*CWKpRsoP^14s(wkb%J!$J#>xgJi!i#b_|`@DPJhBV>=d20sG3$)?k(<8C!QU7*Xa z7Q0dgCWcVA!g87i<2wCTL7ZzSgcUXs`6$l!}T9CR3DQ zkq*2fEYJvm<)H*gWhmKlt(K_InE;#)<<&Uh)od&&B_$QfTM0J@Z$+>7cif;EO!eXG{=aUPh+*Z2FVLNIOqJ3h#fr zbp85WPxOF+CkBr9EY!v!@YeEdkqHU8xCL;v5VDo8W*_wAT))85QDl42WEaQ)hzr1Z zfVE|0Vj=;mt-ZYwMh^*4@a%^}AD97K(7mKw10WZ)FGMBQL-0WjV9Dra>YM(kbhvB@ zA|!w~=S`*X5EKPgM+;o|(5TBw0*eX%uG$xa{!vNjl?e1!SwV1mPmZkqcNk{X0V0_D?4SsQJ^W7TicT~7|T>}5ux!~ssLUv4W6a@hr zGx%?Z11;NTd#w=E3BWV1gXAA6TW9PM9hnRwotm}fjgOD7fOWjtQ-kV;GhL949+W-~ z4bM%0>9(Fe7qlMqg6l*hh35uN6z7B763TUP(!1eGCuz@Wp3F>GSa4EQJ57$Rq#g65r*p zau}N|n^*S-7F}$ykee753rZ({t4*5NJSon;qYMyjp7>W-#e!qIxUHaaAFO^RnAvgM z4!S1D4g39(h(HlYw_ThPXx`*t_|#w&@7kI0ct}5)3(e46=cE0+>|sMGS{F zsGVwmYYND!KZXJG2_UeL+d5Vw3V;F@be-m}T}}aADoA${-jD^QCILt1^Q_|y>O5-jMc@oyz2;-A0i~jheOQ6%q5~p3@&8ib#Br>f)Gz`sn z`w~~&^Ju0C>Mqvi^4Hfl{@mmDAGaQRciM1nUrr6E9%}Sw;&@BBA1)-SWp_9&r2H(O zigV0^;NT0-tsN=TG!ug4i>xNe4RaX0D>Ce_%rmKSNs`i8bt>(dA^K%TBdqHh44E1Z zeK3U#4-syvHM|wz(?Y{~OaR1yudRY%@PvdPDnFt=D&rkWS*02k5xd?L!W1jtb+em=qs6NHE&G2#=X=eAZ}@z z{5c<&I$Y-;%4=AM()(US{Vi@*%_KoOxEfVH`km@ z9HV`u!F2H=7C@5Xhnr*oHA87$=(uw4VS+!P8W=bj4^ty+q29lGl??ved~|rgctU3Z z#yIih#@0vJ9?+k9T=YdWI42Bx5nSnN8Wi-|XXr%cweL{)k^qp?0E!F*2t~uFN(IdG zv2*Ss9S!nG?=^yeH6f>nE?2cL%5cYeyL?VS5l@6d7g23%a%pbtfNqgo&HcEEfip& z02cVIi|Y*h2ds1wsd4am=z9+Q3=D$lrI&he_>f?3f%yQOFct)8;$({F5gZRkfG7x` zEPW?J$X2l3%fMYg_5$+IeCizFAJ`D4rTC3MKD60flY&o1ST4ER+-QF6&(Tf>6Eif)kFP5UGMFr}&e35&_$vgj!k?>&|O1=58y#s{TK6>twoT1Jxn1^!*X|Hz$k?`%1}gpPsqVfDp;Tw{ys{g%npDwPWt zS3gheT8^f~2^?#qywdSH+~14SI1;4Gh55XU@@%ZFGPSs{Pt#>!UU4JXw=_&GXe;cb zWsrEpjjB578O+5?ZMWM<+j3(X039QALO#ArL>o(>rEgdQQ9*8NQDo50@7Q#1Dt82s7_< zQy~D0`?V)7tT3zrsN`v%tyWfaw7KWI+~_Rv7Jj6S$)$rfOns|fi4Zzk8AN^wAs_O1 z$frYu+?k%9zv!dR`^5?H(6)|_O#*2@5@4Q?$Pz{`u73&Ue)9T*AZx=u>f?bwL41V> zLjaNd4ZcTvV)R)6*ats8&8vAd^r6{y7?xZmsNnxTG?DR!oc(c83nr#3@UlSTVPO4e zIN4Xd16w$#sL#G2`PO+aD<^yK9d(A1og)Y{yYKwtk|JPB`xXGd;r*3+1=w20Pondb z%c}^Gck+k{h89bUx&uZc6a%nsAa&TuqXFv#Weiy&J4@O#bUp2DOM1kNsm6a=tbU|+ z%N2{mB_WOZVvfv6m}_dO{G!hnG5J%3AazJ70<`85-8EI0`3&Galsmq@zNr~8D~`fY z>?frjs25Vsz)417kY+{Z@4W)#8~TeJ-EwY(kpxOL4a_FxRaI|3d2)@MxkQ|WTvif* zZzRh?Rl&f>$T&TARb6ObSJB!5G&79mDtB1USSI`dGLWy4^JARW9>CHd0!3*B(3$Xp z-op({ARi)-+fH&^Tp$c8PeBr|14$5idk=);V23{ig>Ne&ssd9e^6SK?5zx`X>F30o zE1(7$I8FjmpU!z41Cq&kVuI5EJj0oWtgmX#`S^qlX<2|-KbJ?QejbmJ z7yW=;U;cWSt-V9x&zOLe;2{BkoI#c-VMputGPbs|mv|fkL34}yLC`mz_A+=*fxZ2j z-WR^ASMf&w0Ym`2QS74{|A}adlNy$EdRnl~aG%ppF4jTDW*x zOJzp;XcZJnmNf3*o~ID)9oA<%7zy{Lg^m@JWP2!YFCKrMBhYqVmBo87Gd-DKWTHB7 z9g7j0&J%4n0u&6&tEA)_(lbKwynlpL0-&bwCc$hCr*8#KqJ|6a}xz^Ti{S2^{gG5HgNL{t;K1!yl$GaJh=79gby|Tx4C4#L9Z@L@NHJZnSIr< zoISdv6B0=f_Hwvv*y0cRC~C}GpSHiaa*BYRl{v4ZYvXw%4b+(cX&xnc`8tThE84_H)>)}b63 zhn&&?zlMDKrit(*5}<17es}lkRGL<<%kNq6wV^;xP(@TJI#temaC!WZ79C;aL3$Jf z`RhFKA8Ps}V+K7$mr)=@=a}nu4yIybA|#(nrRa!0Id#mCSuWcI>a0eC3rf$gBz8JO zJ%YYDWoBk(T<3-H_|vE}Y=9ncpsRiQXcbh1nVFgMT`DYOh)Fw;JaRly8pe=M&)s;E zGxl&0@z;VO?bDE{082laHIRU@jM=V~a1iK#S`N5kcBYC(;%|X-w{T38fOl{1YFy z7L{rtyA*vqyYtfg0Rq;UsnlKpY6f~*dPw)MI@bw2Fn0T?q!`%PPD68yiE^&i2bdoA zG?+_G0yM+(BvV{g9r7>opW~+!DPPLExpx2L~183X_dw-?)RW{L$FjpSjw$&ZH{YxPk|!XYCTbtK!*rq9+Xd!@6v0ZeB3T0-hbziHvV#o;)cL z8+9-PFG)t(ey$)jOP1qB6HcX~!_xI}av z3H$^w+3dLvwwkyQ)-)8+TLT8W5cEO=G~Ys`ya@G6m&ossv9>X|`5|dC z;M9K)*&F%A5;BZj-L7)b206^S8FPwd6nKujIGyO7#h$~%%9`{uKS+>>Eu*_&s=78td zDWq+)xbQM63eILCgcrsIAqmsb>hV!QTh90g_Jxy1^yF?RGIjIw`ekp_oXN*$u0D0@ zWWovm^vpBuq`;iBcm-5tTT4X4w=n4DjxF|n6UQmz`+h#Y(3puAM~<=75{mJ4PWWf} z`7U?I#I4wrL;c^%K-OPljFsjDjD*<;O6o5}LxZ)`&f63oTir9<@)ke0a zH5eBmJPlCzbs*t_k`_tHCa}s1?{PTF2>x4UP+qVi`on&Iy!H5Bek7o_2s=Up3IrV= z5;dVIKG6mM?gje`$}CsWv7DbEUS2Q-jeaw<`M=8dFim9Dy8+!}^3G3Zh21Iibdel6 zH}zq{DMsuBLEA9cQwRM-IItP|vTwDTgp2xvJ~;y<=TK4R75ZTb$4Rw`(MWKtcU-J$F;2gQCv{Q}Nscxd&tuKcG25_XObz=I%~L?=Vq9 z9%!Lg-1mbgcm7~~84HEMuWBT^Mef0=LIOu+fuP2le53+{e+pjAR(c?2t) zGWxqNkzYu;2wUn&)t`Qc7h#Hg|37Hq$8LZ5%m3AvSc$yTdw}#M;+8NAwBjhOr3LpB zFwufzt4nVH{W$|Q$VmhM!s-+X`dmQ5@FvEZl-RazNZ~<21KJ~i3FO&GDJW)kTw#0B zpSLc(*Ip84bMvNuQI0bFaHU=Z#&^5z!)g_lD7sg%vH!ok6!LAzhcNGB-G+)~X*^f0 z*UAtT0lMa`KYY}ef4XKIRf@nsCbhb}a1xUflrV_ML!IO?gn)YEqIs(k%XwJ1w(8!X9DyuN8=$V1hh;+)@H?b$Nr@f_%%0b{4*x0dM0Ta z{V_gcDyw27g8-=2fB>i4ypV!>HYcpv7$WdS-kiymcqsuHE}D%~KY|Xf|M%d|^z;1X z^a#p_U-EiY52_XelH=$m`^4mO<>P+gzlqxj>Jz(N5$QdvkzM%h@J)Y9dSUUbAD#6@ zm_Ye)`U#Qp1l!sC=Sr?bgsKO~IQH4EA|)Y#tWD014`s3kbR>`q_4lDEc@Fxm!F5)A zN0$+h!RGmNIBVU>g4X)K9ywAcSFA2(a?P2n+E1h0RVm4)oGkwmIQ*JR z5|ii)t%{o660HK8x*T8H+fIC4zT1*kJ$&8VRj7b)bHjn3q1KAz2E=ph0+e|0_FP-PYB>DrXUCLMK?Is0QmfHVZ@gV1uH~jKBG*7#|LH9#O za1p+`4mgpV9xQIvp|MYQ`X%%8*XUnPG8dJ1)WuF<>o6v;o)`!BpV8~~BNBD_sc7v; zMr2@*@3#JEg==X@n5D0dxk>HD#afSmX{CZ~j^7h7#}@>1e4N>;SOPY{BE^8=z%&D7LVV3 zcy+gtnNPoVBjpHJ@8_2S`9CZLJMjq{8`Fz?v!f-a_K*CZC{BC4U{bu7P&6Ha+1eH( zp%uyuUxGBa-qv}tmfEkF%OG*4bp01oJ;J*Bo$(kBf}SMWAFc0J)%;H@y>6O{-N!Zu zLm$_lE~Xy`y2OZY?7a4t*s*Duv_?rZw#mJi~M~n5S(#!Hv_r|5B_{*wq~W zb`DUiJ|{3Or8W5lzgYQm-u}in({QLU^hVmo;;DkY=9qF7>wk>&hM`vkjp?p|Ap2}& z_peh{4le>(4eT;jSvPU0x7xvaK<-k(9`(CJHk)bN!Z8=vM(m!T+=g6tlhFP}5Wce@ zvK4a@$Y6ZSN4;VS8Rt@eIEBj(jfr7KH*3|2dxSmty+ZYR!Vorc94iNqMTNunjM2c*b3&8})sTTNFF(=<2-s#>;4P!VS zb{8Z?$o#{(;?>Q~C!F_6@M_T;1fanj6JuirJpm$+NA&FTqn`u;C-8-~9I$c9>#PJkl+Zb^sm}N;j4xzUH90a>u(2yOPx-SZ*KLVMr-k6p_C-7%>w$j(@G& z(Gp9jsHKIdoDnJ-_=zQ|wcOkwM177huLwZ~x}Uw3XW*!b2*Qy$DZu&=ig_KZ{U#B< z!ruN09D;gAOKZyn;1NH_-bUkf-VcY%xb(PVYj}i(slk#71I{bsM&8G!Tz8C$om(XP zR2H#KKxFm3@dbUV#o?TvTx&lgws|>DcIHV8mBLu6P4fWrpMB+i5UO_EPE1aKjs zC(Y)jcX8s)nNZWSF5NJLB#PQrIne95CsCPO=n2`FR(t+v`(Xt(hDdtrTk7C3MHXV*8V50DkU&+f?h_dfj z9f^)u))}N|aHs%&rzGdD1;vshrUr}!F_xDT>V6d<&v&);aR{w=Po)by@)?=9H6AN| zW<17e0EJBL|IEaAJjfMDcO9QexYb!_Xvn(lH7{Kcztx2uP2m|@Db1K(Y*H9`O2W2s zpntYUU_I>qO~>tKOR-jq?I9Uf!Oa3>cpn3NK%v5c_8m%IG)NHu1w4fU#daDPVj*ZQ zNVNel3q_RA(2wkgRsqyB1t0?=j8!A?&C1Tcc>Vf$1pfCzo&z(k^-%KbUqY)WD>uPf z14X(OWHM-BfFwg?e(amvO4+cw!s%DMKECLYZ~r2_IyaZ@@%{q1^x%e>*AZQ{wtE^9 z5PjF;haOY<;w7EBhBd(|J_uHXo`-)#wjxOCZwOo5VmjLTY)*luq+DCfV5-!6+_7I! z6dlOAEPwZ7XIn+Bl)zLlB}n<9IYQxNc)DxoHIk;b9#& zv%RaDci3m@BoQ>%4-Y68FjGIlHV}d#4QwV5P^cx0mY`sOfDt>tdi!3|vtN~PXEx`} z0gQ$#e2`3xGlx)ZAUW{%QQL#@Q;(;hv%DEj7YZ#ABQ&lWih3?HF$i2r&b;|?u1Nik zXh+!7A8L92w3Jbp#R`%oqanIK`dgn5Bz2|H{L62QUONxL838B3XA_3;I`^+)La14s3VS_!Frr;YOW%E73cf8L&TZN7(-`$G`0TLl331xpjv|nDoJqj}3CW z9(l~;>dce{M_4sizXujg{Af?yQ#s@`t!MN*wv8}%{>AZ1Haqgw*?G6SxAnf2_>==pjSbN zn)2cIw+?6mVNMSQCV4@;d8J?{*xtrz#mw;M8VBj4a>lNe`nj>A7t(JRDt0~!EkSaih0>UpfHy0))DqZL{pILH0sIN{r z^>m8&=@TAS3Ur=r`7m@7Ac6p!|6@+`ZwMrby^_*P<_^yRBx^jZESM^4YD4DTq(MD&TOFT3N$ zmZP(VSpUX;0-bY5{(}CskSrY_-=vM2A zPIiMlIXf(nRm#G2KYTmG`UfZJHnT*Fs zCNV9qGvlA?N#vG{<`SnF$UJpoY;aP0{iBNeaaR?{z^*HlRv7e7B`BncN8&hAErFfL z3C#>74y;0Ta=oYhTF!9t>{p?na^&1HiDl?%09T>T(|mjCh3X(DJ|_!~sO~`XWOhMA zZ=`nGfa#n>AX;+ZnC?1`7FVtM|778iNGT(U$EXGpK+&Ag&`_=`8&oKO^VX5jh@7YK z@cs!GyZJPdi;@6Q`UCh{Z&tj}x`(L`0FPjDN#8;fs4?Ew{)E}5E%&r>&ttmg?dnzn zv+tC=iR5uA_)sUEl~-tQz_R7MO7~|v6yl#&>O3tMQ#u~S!~Gt$*q1MT0F*UB@2;N{ zw4p&}9}&D3uY@x@H+QhymL3X4oC5Gldk+(P$dEM*VQsEJE*+q!hv~Bf%KeP;j-Wc1 z(hNKG=RzgcBmu#|jGR_i`^x(zERbEY$BaGmG~?qw6~T#LpH^=|;l2J{*A|BmPKN*( z4FQ3Q%sMY1Gk8@`q?CVL;Ji zj^?TvA#z>d0AC#BxYe@4A@{I;JY6u`b+>$(H#?mG*&r#0Rh2512E7&2Nf8EDd-#~A>=iI zItJ?$6)rKI4A549euaMW@_EXm{r;XGov7Lwe(b&TlE=srKZah%v0%7x7eAnbW$-ayoHPdz0-z=|hmVzbP8}?%wBl zLF0V=@2NI4Sz*6$h7SfDM<#Yf5X-ys?+XJ#Lhl;SgU5=V3JeZz zgz2RqWWquUPXy@HIDRY2%;*X@5_=uyL>F&|P=dq2HAIfHznOUxlvr^1d<#M~j%Zmz z-Pm-4Gj6AeqVVoUwjLMy)+NUEsW1~~(+Poxrn}_?nSV=g$ncuQYl0flPM-*-1d_=o{iKe16~94h-MEAU!KUHBUKNKB54!2`&+Qte&4Q; zh~>fD$BFITTYgDVbCQnvpLQL{%U3zeXrh`|`Ma9H4-U)^T-P{!5k?H*KM~O!vKO{` zs({T$rcOX~pvIeA%u~J|Dn*dF7X1~5|G;8S5>x^`U?X?Z7mhd(gOkdXlXA}6^HzP? zjz>!p>@}kwamQ>%pO@-xj|bZxH^m)$&{E#kCL{HuU}PXCQ@$gtT*k_3rsRk7-=b5M zt~A2Cu$Fjk(>0A#DT!GsTlU)e=A;MW+u~$oEb9ok7lI`rSREj_T1yLxUpN4c6535! z_yVZ96-See>Cfk2Z)$4!kzf)~a@KK`kNCit(l|KY@}N>-AZ!;Rj8PFeQOcOh94)ea z0L4Z;BB1mpjAHY|=K5msQ9WaW&ii|j0;c}5=V_Qb-w&c493l1XLiVm)pwI@h))~$JAPA8AihOYi@zXbGLep`Ae9*0eZv`@{tZmW=D`3Yw0z{GtpHxE;8P3`N4FWJG z7KuQppB}e!mCyHyXJ=+c-zXd{HYc{Jm^g)qm_Q%agiySIAYaJyBZs4RR4$_=NHJrt z<)04d$IiR!-Dxb9ZN|Tjbnl6~q;i`2_QD2tCl}mJkIojwv`=__&y9iZ;_m|_56N~g z-(gmKn)Y75+`*l#o*Glo(w0da+$hNnXCWfna=^pT`!ShR*SbeX9mZ3IBi!PwH%vLV zTfK8tK}DsX9;}Q`CHquD4Yps?d#aXI=#G|_JD7$7KTuJ0uT4Rr-6z*Vji2b*nUp4T ztD^w=qjDUZ?UvR<$AGO@p@NZ^m$A1RhVFT~?Xsk+hhrqB}wcbfh6?L=bB zBWwihmXb-`x_tZgZ6l86&cjuK!{?vr^RW3w;&q7eBEGd7uuSgU`nJ?#18%4*(t>?~2ctK2q8gp6LvxP5Db2elW7xuSaC ziGK!H&m@@MA%Hv@)Q(dz+H&6`v+wj4Vko(K*Cv%5HZULJu1F#Qi;Y#>Xxk zt0YpnHqKYWB%{1O$KypcpLy%Dt`>W$;&3sT0efw==b8v_)C7;Z!pQ(rjMFDw3dKH9 zv}#?h$E5VHod}(8*PiH=$+Zj{O2wd=xqB>rBoMz83G<8mPMwuqe=GV#3zqX;I@Cm{VV!bm|oIRzRv z6r!O58Gp9CVIoWd0}W;j3j%SMLl7j$=e0L#Tx$=vsgXY-{|a<5w4@K?vtH&u#FRMZ zNSr)o`5C%%b5kr+iSbmtBaKyI@19XpIW{+7= zwGkv{>HyA5X{>vlAG0j>`QRDA>#?!1A?}ADrz!|17x@0$Sp*DGnxP6f{HZM;d3Kd+ z7%yD=If+;QJBF_oex1fXBwkqxZY7o+ANtV@C&OZYVouISq$KW_n>UA(C87C8e7X>u zB`BGCpbCIwgHXT~<30pyby&oPFp7)Nm7AmuC|-~$A~_I>!obkbtzlzh}PNZLR$(^w4M0+H*xt|j}Ans3uaY-U6gr#D;A7(-BV;EZflhNx>Brf^YZdETRh{{86y|X8lJgR z@1Z+^hh{vQ>cu4{e7-AnlQ5P0OSU173VQgrDv1nEyJR}Qf7?{?&jH5^qRzh+@hba_ z()vHtbAHjdhmN6XG1Zgc6Z7KCTIc`~6D?5ura&`W}bv- z(D7*0rneD!*Z#aQD^IAu5OvpL_4yZV5N%-{ebU%H8Da7RqXfZM6l9&xjJ5kNI#?#(*I>~#q$_>5)i`8Dg`1AdBT@AIZF;O4-toA$*jY7n?(bcD$a^{p z0IRWpu%6iT`%i|MR`=$T;C{*Jx+U?`?=)==>>PMF zl3g8ZDK6TZu=RiS!q;cbDR{?o$V@hs(dS(1ES+%zNg9@f~vwIqcyVLF3kTP z7!_K+?%!%9?j>hM+`_np_myuzbZUKu`TqtR&j^v;EfpMb`Hw<3{`3=z# zrN#Xf$=`^wdd!a+Z~Rud+r5AOOmeKxVQAR6cl1P?X0ajJ9k;jnk#!3c3ihRXdyzK` zFuizoxvVX>J)b)o^UFU-ih54g*|%Q0BAlb~{OtG@&(D4->9>Lt*B`GO$fS-_p+4vh zp}YuaI@hXSi61@*ui$Q=LSsqLt$~A#47;cTcJZ_pQkv(3sP_`{W)%~SrL!9cjGRUfvz>D4vWNQY zRIIhF9afuU%Ltl^aSdK}F^l7v*GG4w3aJk4@*lFQJ>1MaMRZS6vr556@-nk{VTYE( z8?U}xiQn;tO@3lBG3QbwVOt8^G^Z_+b+E?Q({{4)7a z_U6?Q`ciKMtLm*7v`S0)hi4uAyWgr&AQJSdBt}U{Ns$H(F7Mqh<125FyDZjNt$>A1 zc+nHX(EOLdhxqEZM;C_L>N(wfCMG2@P-CWOR-W)*D2MuI-&2iZ(3FC#qrp{kFGJA$ zr^z&P)KVoR3>S;;p1WrbN~>rMMfrzq26VE1rxM%fB_B=qY+PQlVH1|tx>l846ZR`B zuTa#M>Yh*nu1FRWHuZfFR8E8*7PYD0KQIAq^H0E)N4(Y#KmiM9xD-JD!<{z zI?k=s|EdzziThBs#yv<*tzRS(eAk&wnzhEV7HVo-*Q9xDP*v2jE^buv3vN#z2G{=HHq`y9I%ShA z%NI<1dyYx*Mj?JmTJQosyjaYIzb7Q%G$OO`VWI+*6}!e@P=!;itLfc)!;zN~$_{Xi z-B58tzuGgs!~`pxp&R2-&&Ut*vu8Q3)MBDU@aHy!c#duuVWU+WY+a+u!TAXL%&*ttbTa-IXvUKFyak*n9}yx=YQ-@R%Tf zCvWa*!*3t7{2tB9(XX)fvZu`ot86-kEe{3=YxAFoI$T+92s3#-RZ;N$zEli5_qAkV zl+e7GW`!l`)Hj8*sC(CS@uGNNxaVW3r5Z*EpisP$?z)%~*>R3cU&xtjR1F9)yy+^w zJZ53g<%rAu@$&eG*o!O~RNegG#6IyQrFJP%s}Jxcm_5G!z$Q~3%%fX7ct-m>D>Xjj zZAD#=a*16TyFiK7;@JyXx+3Fn7G)%4pfZ@L&H ztc>qt$~}coY2O}{6%k>RncM9VWugAF0rP>4oJJExw znS00Rs_3;GSDIBmmA9(6FWHTLO>=v!FZdqJnaTy7uC*N2^PdVi?Vg;eGpS9g6TD}>h8bs0va^@( z9Fk~8;4l%#eCV6=zfR+5N!=r#W}coNJKi2elJA-LkZ-H4kvH_{UWc7<$`668mwVIm z;=a#8b+w~a-~w?scA47!9Dm%A_m11Y&O^w#Ay<{| z7}v||zL`Q2O-W$Q{nOU;&ZAEU0Vt1a=Np&LU# ztU`*h9N_U?GsV0L&3z53!%*_)X2`KU_&S9`xNw*==e z(aM$F!}>eB+iHZ+zUU8v_y7R}<%>J+GkCHhdOJk7Z^7DI2@{b0!bz0;Er|V()vKO& z-FiPyw>bTF*Kef$(T`_0Fl3`@q$V8YMour}OSY)?KXM%D{jc@A!yERM zszU8~BHq>PQ~Voh-OHf)i^@q;sWSP=d?PwMD+23TTS@6mt|cYan1D}@3b6vh z#>-MA0x5>`WNYKU_L{6eZ)q^8V0O=KQMLfSAu|2;tO^)WGUV8^u&{g-(lvyEhZ(ik z2X8XYyT7NmK9fIiOqQk^l)0CI2U$etr|o!PjnUzp7e;WRvRGq>B>%asgys{09`NPS z{F=M}zZFV6PlRJZF(D_T_r%xctGdaKo=W*mCpsb@4)`T!(1aF{AR zporUxK7)e32(#tLBf!F>Wq1Q=6=~hL+nMy`_<|-!9jGyd?87%e8~xgKDhZDij1O@YC|089KbMC3>zAQii*}iSl1b?b~A8qe@4VhPwyDJz^6(V>K49B^=If%S9|1%YU`D;W`oP6`Hi3W%LL0vHbZW;wcAD@t*`G)c9p@R6fob$cj^`*k)i3x@mj?9*b zU5^(D;Z^~R(+G{{&1vA(I1Jm}1SPdo@Z`bNH33jOdq)6izylBJRUEr)C3^54@qrgV zV*s9UGlL~e0OHfKAM?EV9ELBzcmeV+GR}p`5ztbs0eerz$9D&1HPb;h1P(8I*2%IX zV^E~V`XgR16W>3<0LD837Upp#GW5px)_s-By4j4QUK1-JPhwdupM6k|kx1ssYr z5ti{k8MW$T&}V6YW&4}6-Wpt{SH6?`ga3@%H)a&#*02Lqr_H!htDX6mWe8^A9>|Hw ziLrs;GlGnO=4FcU$@^aqd**bW44x#kC_#ghbU5p;$PNr+6JQ;?KXGuPk-RFP0H@C* zL{DK#(X*@2>7*C^R3QYU!TuuFq_O;~?!v*6U`1^(%RxSVwS{Nln^L@E}Z#qC+ehkQyKj&|NF;fJa@oN~b#{+{H z5l-D)KY|u{!yK8QEPf>%a?qp3LO>{>ee&pFrOv%u=Rc>dY!5ac{;Ll(XRQDv^wl`l z2eCc@$n-1c#<+NqoIV=NG|geE<<|aXreCdb-eR2HwVM8B->&NAXsH~%xWbXT$sof#%$njbVWG#>h0X~)|B1HplEw)+}gcd*x z13@o>Fat6X&eeVld=cdS!Sxl94|#hP!F~a@)eoSKfBveF16t}lOwG>GCIh6a2GM8* z2uULdkoZ=JB_*Wr1G^t)IwZiue*;bBc;HTQ0lf<(m@oJ@>SbwBC5N95NuvODHGFrv zjMhwvWaIVMlG)85F_T6I83osgOzh+sLNP>wY0G+$wNvD?(u2TfrInK8w&fEW_D+!k z>haTy>KrTLR*A$)nDL9GgR_ALdS@2tHBwiqYa8)Lw5e$umaAgDENz)k#E;#Hfw+1O zjGyk7fp z)DjGH5XuaoK@OV*yzf`4A7;B-YWQ!8y=$;{s z&-wWt&wB}jmFV?dAFXL2+N|H*!AKsoI5n*vAtJ-M%wk7m=(_ChGHUAG@CmQg+PyeIRG&vost6tFSC{h+~uk%hCwWp-z{Fz3*UAC%;WG2DJtN zQ3)Z^<(qSg6dm_{x<0-pr}NS=kMR${6MeyIR_~@yf3Yxv9YAW<3*Tlp%T1pSUK=lb z0&3=FkBgGnu#=4GUN)~D7m3Jpnrj&#$Dx@m2@H{C6)*O3{8i$Z9D9%G2kVUG4o;pP z3BTA9JJ@z>DC2L_d}q@CjN{}m`w6KU=9B-F5WcrPxTC}&aCg3${wn*7)@SeVkph^A zsN(}BSg7W8KnY%uReU{gk?33|F6j4Wyg4H0>rU0%^2GF7R=;v^?;w~bu2`ry~L|vHi=r#w_?f}LDL5e59ZU~S& zcZt_6J`X^lBo0Hb;K<=cP{pNS8T$$5WdJwR19M>KLrU>b9e^CXD+rNrI!7jO0n~m4 z#k_#2y&zz*+er{IMk`G6zj0EiHlE%#wDq_N}RkMIrg7yt_y;H2w-s525B0N0)RzFpt~Jdq)w zG$Z$daCw15IJ=yhAxet~$&Mp;1ui8BDFjHqW}q|-bm1CMc|);=am8Jb8;ru7bMR7- zjl9|NS8MFUhwpJ~m>3Y3IStJa-Y*VJcny_0Ko=~TT7EaWJ>C<(OCCh$+Nw>Odi~Gv z?S?Ls_y6g8V5uMHvzZ>f=n;E{xwbCg+^UWG-qiF8SPCZu?}lOSziO&vZ}~KBVQ759 zG(1%&J^sKu;VwYDBT}$jdBa+;fb|;Gq@XW07nt#3lL@RGKziqd9U<>BxVUvOe5!(N zUK)YQugB(|qDMN~mp3iMNHZC2D}8E*LS-5c0Wts6@V_#H-baJI7jAM;gV7GdcXUDLVx06wEm{BPO= zY7Dm^2}>K$*#bHScfZ;WTin>Xlow6H3J=A;(y^BlH;VvW#Y*cTv2Ip$M{+oYQ z6*AOna`ym}(F}DI~rc60L1nnBWA?@}x z&4v{^LN&4Uv5T+wM5X*NWOUM0*PTiEJ_ydu+Ef1oq$=~uuWKIhXRax}vNCc8^e|H3 z0`+4IOcdzxy1)YKM+`3!2!0{sa)9Yu^(ZRq?ygND`wVn1WhW3bsNDC}h*!#q4kjtO zQiK_(m&jKL^`-l=UTNGxr{3kqa5-LmfO8|Jx`oQ%i+|BT(OB7-^FgTrlUC#*35s9# z?35%S3UDa2HI>e1*`bY#fOczkTsg1daOo>pT0WSlPp+2N z>0mVPOmz`gxxx4@Ff=7Bwy0pig>PfHge$<#UVgpAwC@U(b1XnWfu!`rONf(Gc@zx= z+@Ds?Q80QD00PHS1^0YSuk1b2`Moj|@U2r)(R#z_+l2mdG~B?a8X00(L`JXPg*=ytrq z*?f)b5d)LJ1=z?$K5u{|*O?$RGm63R*N3zSv@DNCPoZ9FSbW^q=e3W%`YM;J1zeSdxJS%B68CJrAO`@E z={mr*^%=Mm>l&rTYQntVVF=6tCG*$JAP&KXLPrJ!=7IBtsFXlzgGOPw^&%+{bPcWw z=zwky2$Rt8?JuxG(n2JSg; z?0Vv{nPpxHJ*G&fAaXWmgI#UrZT0S-7h~S4yxBh+{;kq#g?aoR6B`k z3m$6g8Wyx$u#Pvml;3tZKl!rkDk*8Me=Y2B#Qn`H(xMz&-~xhiMy#H|DoZ9;ix&+2 z&Pb)Me;ivzyr1F)&tq2l^jXFL%mhgQ#EmDAP=KD=)zkFKIZr{J3^Xi3JF=N=?k2(2 zqhbr0Gr5<|aDozaYEwt``u%wh_&R^cvg`O{tL_B61OmrB5=)L}esj(RpH6BX<>9@g z(e;8^`l(5$mGMwF=iOc3z>YWzjj!d;YMQNY>~pvulD%Y+CUn4Jhx`a+?ZBTCa}bCaQnCQFJwAgD(YXaTsF~?C=PF1>L4pdxgYJ&{Go->g z0o1DhXU+aC!2eOkE~1b7U9N8XYML=z5q%&<6nbp<0nmKl&Xy=0%LjWO(K!GSsE!Op zdW>udV3O-Aoz|_OM->O^PbirTgeNk;UrRODF<>YDK^yw3743;BPo!beSEsehXaA815|Q85gBv_o6-KvZCUt6K5h2K2XpvpM?E22B$#}WRMDq zLa?`hwtrX**s-~8p7%T_IMBD>W2^T&BL@?-r`J0-|Lo0lr(>r)>bUJcYIO?#MJ95H zbCaFz&DHk*@#7%x*O=9BP{+6U%~YYl*axzWPz{>luy2hPY#k%B0VT5 zvi9A=1O8&T1Q5Nii{jqcG7HK5Q zmKsO5boYif`Jb%t%-5@rFxEhv z0|1X6)8kxG4RZ3#EaX?UQN-BYe0>h(50-MItXvc-3#@pH4_%18*b|s-o?3ouK$96Zr*dO0k`jqC{mrLW>EoO#@FLXR+ zIH~&y4H&pv43e_qMh~g@E9a#;Umw+h_G4MA2TG3n; znCa#_1Fhb@F#P0TVAql%{12mu2IJV4Cr(mG!=vth_Tyh`*flG}zzQa=-~#+~u+{2@ zS@m>7t1)NYY~I}g<2S=|j~O)!>%4EJE-tjo|5&e`^o$km7vmrp0T6hCbQ$bS3lN+k z%mn1P*+3ySAlw@?p#z2}Vglvop!j$nb4=eu^G9a0ebsCOy~;XtI5++4pdCBS?<{fa zx$2P(&cfG`ft%MC8tRZm*GAKz+gUR6n(^2AXAnP4T>N0Ka@eL@5OI~rTv#Hw2jd>F zetZ7b{CRGw2HjWb_=go>Nu~$#i2OA-F92&q3HXS#lvEO*$;Y`Pvebg zPT4s~&AuYOVGmlo|EgCA1qN!<0%kRVpByc{F!&xQtn4?=C&xJ4S-azMcJwG8>3f}# zVP13iOJKF~yN&Zno=uN zG^||Y0wL;m2_HrLcZB_S`Wr>uxJHhi|Cy(^}54pK2eF|dyj zJ_>!aMtp(}VMNS?-TX^EbiZ~xZY0d++7+4*SL)dGOfBJ~*tX9=JUZHu^+f|3+ntgx! z+Bdur&l>`+7dFBncuPC7V?iClOEN>De$ zg8yPJs{32gD*C1di&!h3=k-{q4WaR}rN7nsNE|PD?785cEkw z^WA8qvW)Lg3-oo6Wa!O#T*SJJG+G_bmy=+4@ND&5L`HjwMdb1q*|Edw>39Z8Mx2OX znYa8^Z)t`G;!m|@l3WhDcb76CG{h&?KIPVlDqF_Y_z?$|K)FB1gB9ysv>7hP$IBTb zDK0nOX+pvOrh!sJBe1mbqj=6Au%-F=J)zSQpYy4wjttxDXH2ipO=MW>%3eL|Ywfd| z`fMY?E8xSqp#VFTceh`}YGt^iJLDz$Y}*?yNo-ff_zUyS94Yk7zTmOR;M;sS4ICN! z-WA_xi4m-Ze(Tjri-m0|#&p!w!n?b>Fi8pmQI&sP+Dc^oFX zzeAx|6v~I*tnIq0mAy;`S6`Lo7ZDV2#)^^)`~3vfw#2Ng;rW3Z`1s$Kw=;nzGB;R~ zyN|!QIH(NDRI+!kcF?9q$uT`4zUXN?6>iu(y`BzCf9{PA!RuQk)F5@RrHbx+e|)4B z(sNBnFZ6luQZ^M{kAu4X+<}+PWb4u&J_7Kvl}u`4?$*8a4)MVa2@9hq^fdu423*uq z-3Fuuba-Aggud`^F7?HIV3ej+R%(QVgbd^x_}u&S0npf~P(hSMo<{C!fqZt;k;UT* z^=t%YzBj!kX|$}4w*Cr9T86qsFApg?d$#>p^JVsKB1tyM0$gP|?#w`W_R~HI_kJ%P)1whI zrZTdaBC0#0Vc}QGW@j4D5Jjhv!Yh7$C~#&$fyFpL z+s!t)4&cg;yPBYbPRL>Q8F+ekW80N;U-r#!X2AOuy^ir7jl((jW)4&by1wO7fQ*|d z%$~AicFb``vWPv)Nhx>&GJA*|W?Rv&sklm(a>q(zo z@)V#gDaR#nt{QQEfc#Bgs~g8lQ3FN2QCqu<{?%O{%SgqHSr%=mj2De#w{NDnJxdYq zoxaCwAb=SRW#LAd0F3BfW`j_{=UbPlGbSMWxH_3&!^K(`zhp4--laIBJuCbOi;HBt!&jCv?EPL zAG(M5-kJ1+pNS)JDXo-<)LZ09Hxb=i^jpl|mhZZa{9uQ>b@GKcO;e-8rY_0I3H75- z`QG+oogZ9E>bQTSJll6I4^0(p*;DXe<6+|!wt z^8%Knq~+yJNfD+ENiUW4nw&zhO{&}v$&FLVmjnlI)fI8ajJl;x0>AoGQBC*TFpfI_$xWo%vFpB5KG)voA zSQY{JP1-1wTFq?kV@vIdW~pE2wyJC0ZUuyvGadgTF^OVimk}A_NRajH&9W0dg%WYu z63(Bukar0y!#!D#UK30xl*{x+Uo2&(&yN!0Af7IFMdb=|*nHUo`nfz;khPbd*9&Wt zG1!E6GzGMO3Wd`_1A009p4(v&Pn6swNlE6K$4I&D(CK;x@qwGBM-8_z9meMMNZ6<-35R5z|*b@KIB8-Yv7W!#wnvd$GL~B`nA{F z#a4f=d*!y~`Oml{@(jhb_dQOS6tv9jyOD<}vY%XDvBuGt-L24;*~MY=vwi{V=*x?I z>lDJYIPuA%=u^=yQj%T80e9fF3R7)MUKZ`Kl>OhI>oQhn(?FQX*=GA*{@yAM?A8<$ zsr9BrXeIxEJ#3enOTBLlkLn)z(rwct{dJ`qQT*ChMl9=+KQ3=lm%@URkZ6 zv&<)#!|(D{lMuD2_TZHLWu$d&p_f38FI3n?z`81q4WixCa9meDji>`Uqc9?{CSX^L-u8h6iM35MDI zKoFt6YAC4Qgv*T0+XEcJbh0^w@R4KQ(Pl2X%z+1(-iSVJYdEX0R<3g3#<0VvF-+s> z7#Ss1Z$rP;7U)MtFjiw}?RB|d@OuPPF6c5@skd*kfF_-~A|80}f%r|S{bL0Z$s-rD zbO(2bb8hzs@W+4r_=K$|*$|#4G#dPn+hkN9tzenN#BOuh28GIV*onu1qj#aUBuIDW zYOMCFb16}U`GWaZ9zGrP7TX-2(v+)Q=b3u%HnIA7E$2wUBsrbaT(qY+JGYiS!)kfq zE6Z4dGGpZmR+nhTgr%`+Spt#)#LY#dJsVnm9dy8(r%Wx08Gppyp;_X+AS3gN|0{_U z-3^~~Xkx>{38Vlq9qLo2gT=3F;$Z5W3bng1m}w^=g2T7p#Y4iL4uLnHK^$sdd00lE#Tn4s>VuhlR6G2E$Sd44cNLYCOaQFVR@k0mJO@~mK1kG-h$~9e zcy?V{(4-kQe!L=qg~@3WN(ajj&<`ia+0}Mb=eO4>(4D=6M261h>hG~mH$V9C^JW`g zZo=b(_>4@`LX$-$>Y-&1*Uh;YdYeVH@E&&T)CJ!(GxHBm6+ZuY73fEIy&>Wwt8C_% zYV6rW@-0cU24Q~gvg+&=aR`g3U#Tb0S=?#NR5hX}`~A6{LtlIS&R6f#_IlMfruL6} z^_Y$X1N9@`O-WZM)G)-pY#1dg$ZvKV(E37om{~4Xa&uWB(vZ80pGspR1M6lrf4OML zLDgbS^4{8DZ8>`xc5YC9a&yLq^`KWsy94~hT*)16h|9r^8?y%;7 zOvdY(+{dzXO(Rkyx`WLJrPlh`BwJ&6)giBj{~f4wD)8f;qk%NG34Z_c13}DgtEDZ> z!{-6(5N4pta!C;ENqwMZr1EbhA1p3{X+kti6Og2rf|iL%8sG*>_V)I*4rb}SQb%os zZXd5KcB`^~N^`gGmT&Xt5HB{n-8}mst_MBx=|D(b{9#)#8~3fQ`sg(xP3oq(;8gE) zT%+|+l5&e?`Zmg~?>PRQd9M?L?T!!EECvpbE7{F`h1g%rEA=o>mIssRwN~9WOv%U> z-0zXW%Zi7GPuabnA{_Q^;R`KZRTJCB@*NbaFsC8M;8dLEo?yux?j&rl(ekZHf3&`fTRDVn#pbDM zWgOTVVY;{093Mfi5h{VXp3E@6M{6Rq?iO6cN(?u;K`(wmViWPSHU%IE{2_Q^DaIzS zk<|)~K6P6-Ih7%cd)m$AIpMoK(hku;h0+3zZp+&#m`7}KxsTbzn53%Z-XHwFa66mJ zfISZr{b$w0@j4#Hj&kN z6xv$qAdV36K+AM&qBqAj4Fza|g$zAa_W30C$A_SxP z^1yj)D##!ujrpTmv4!*A_3ZwkayQ-(jFD+mLwFz?#zoq0-En9v$%GzVf`4PSZ~OkB zAzb)7OL~O|^8AM1R0=4^CGbAX`iqGqC5CSC9=M!`BEh(=?gy&lzGKid6`|qs{`{p_ z9u&&>`}8`^RilxqZE7m1OM;tz#y+h<_n!3QD=I2N+e97$7!tC8z+LC|!ECS>T6uN@ z#;LPOK~h}-WP%D>TKDUiZNFU;o&oc;5c9!|jDbU$PrA3}Mlool!q{9IR`)Kc03qD% zrLCG`0$=K|=b_07U1H{p_mw5}x4ApCx;q4wFMkUEvwa~cvQ1LrfXZlW#n#e5-VPTD zJXT{@E_>KBstP@0zR{h}cfP!iwnyoxdi4mixx=TnUZPZHV0!>hrUG`4Gk%RT1Uv<1U{==wa##djPmzj|I=li} z@P`xBkJH1zidG%Wn&UtUgQA-abO{(V0p*C@Sg2sCbfoqr&2L$6CM=aWzJ58o_x!OM zHLyOO9^Z*zT@naSi5Fo@!MWoq&EDCY$)B`#)10xNOFnRfTW4GFw&WKKJ-YFvcyv4- zdSy_Hyxkw6N~7^^DoXerSkt{f_g$oWILQw6UylA9Ix_6-4LBOb3K1QIOeNdD@hucw zOOZ>E=B%Rkv-7Jps$A5o)Ks;i~u*PR`9|XDcoUxR)Gtz`J$&lb9;MOdx@d@`?)!j$%zRr z)6?6t-HrVYK&Pg`6V*7=4?$$N9o-8@Vv=J8#AuD$2aBG@&KuiI7wuZcb7!mCIh(>p z#cP%hH+y=;6cyf&3$L=?fa^tWuM6Kx`>rON;l=5G3aF!gP4Cn|Ko;NnX(LXL9(6so z;obU^3X|h~4P>*PLpG~WMzi*Q3~g7Rc10bn;)r!cv&&XjatWgq9eRJWt?vi+H2q2& z&qW5+IlkncTmSM^WGipCqmK%XpcPs%QYWy)jy7zKNCpKuvE!Y_$F?xjq9?x6!X_DQ z*Q=^lZkvAKjsf^v4(OrL-tcK+z7%agV7#{;d(05qPCZz>3BFacpiTEO<>OLUvJYs7 zF!=)1j8Ec>Y16TZRj-dl&Zz?fotA z=(@=@I*7Z0zN|u%mTJwA=ZZIkr_(KSC`IlSzQ!^d$iyKM-AkE^3~-0k1q#=QD^OYlT)<9H{azd!_y1{x^5 z06v7#bOq#K&_jWtM>aGeGgDHY36r`NRv+z|s;+LnbmNN!$uWGdrwX#N@dJ-7pdkR7 zX_{DASlF=@oNBDQE(#b|-nC3U{af!6LbEpq=@kh4=FV5GPpp5=H&0J16bR#uxQEjz zfMgSJS3O-5%f0sw_wEE@_Qk0_va7SSNrW6k7g8#3U#2&;cQGQBgG%x-Ns%Qi=6zD= zn?t26m=T>&wq<8wVNvzXGP|6htVT!1I~T_lKq)4mt{IqQ#FhawMCCyI3uiZAOp^|( z;cbRb?_Gm5I1_U7V)GW}OS^~e5Y{UcuVb>!yZz)s6coe*D^uc6@!Hsad$lX|hZE0t zHYFTw9oWy`7+kr0k^}2#lkeih)ro{fc0sF-p1y@7^iPu)|6LiT8y7wCp4&l2ro;R> zpd(Gv5wzyQQ=lUgy`7Fnx~RFhe1@Or(>cu?CJ>+6coO2*Kn^4%oq)^V-J){WmXq7J{1{B))EQ{ROG{1qB2b z<Y+$o-?OYO#^s2|%gEsO~%FOzA&ApAR$YAH^uB8u-?Be!eFw4p|1@zDYsOVO`5W zX-i<&#`O6Px-R{wbjR4x=;*~OJeTUMdYLUn+}*49wwGh`j+`{#>2m4)C?9Vf=<_W) zIggEQF9n{NVeT3`Cr^Xl1;%_u;5vxFB(O*Om$&C(?%M};APGna^j40RjOEjWilisI zWJE1Bc^DQJ;!wv3hRA@aw#KW3Ay*#Yn=%kdOfV7XM1B$4P-8}GoEOLWIgQQI>26H}_sK3kliXqa^nfJp$pl#5&yZ1armD&9N($Up;r z!xY-LwAU-3$JU2zFNg%gR&|#*2Rc>b7=54xi9aoW|GL&;}J=DlL{x#^t-?R?``QWa!m z;$S+c2`LoZFd^%Uj|EB-(6wiWAuugp5lrX>0Zicl6bhR_ikAG17VRUs$;nA6mm*PF z*t}L;SuOV~Bmm?9U1+K1NT)!kRTE+3n?k*?q{-M7YDyBGlCFI?r%cG}T==3bD%}(3 zX0d7r=R65nchOt~hS%A6r*x}o%96^ol^t!`|0V7DClevl42r?P+07QB3r!o8Z6cj& z&MXrLoY7r%!pJ?ISLh5X=v_ggzV_U`O+ky3-Vxwg1X0I>f-Lick7QB9#tf zX6LE!VZCl>JNgnol&i0IX#)kcJjBEYN+US7G~IV6p}}YveZ!sz?j8|Mx&4l;C7%t% zL(GAVG4@%UsY(H|cZppcs6e5p>dJNBr1z}T-ClZO-123rx+~C{3P52gNJ~{(crg;1 zi$`GxbeB*A4+f{@cd}R`D~0?YOTnq}a+1wHRU!HNY-%4*YEN-DI&>x6*IGHK$IT6( zvf`^m1_1l3PUtl1qVrLhld4i~`P&aDEL1?AdBVf17eIScwABQSp6yJ0kJR*#Cm4YM zpLysGmWN;4isNK!v#e6;Qgib%Em~@tL;T?MzI@fHhTx!as#tNfZLi^AF#+$`+r8<+ zKQE?}VygRFnJ--?Wc%(!deIZPWy8v8sD%3s!kXqc#a7QR1oAR`j*QHNDIfPV98a)M z8{Jd{6fM~Z6(O~Q)Ko!HaWczgBw73>62P#hPkKXJQu~-p+&Dob&i>%&Ii^;o%%Kj? z;4Ii)pl8bLEdFzm_6~QNv|)J4mwn0T@u+o^vOx=@*trEx3VO9f$zzq@+;@wRS{0;J zLX0B@O05&&Tw-j=xBV$AJPVErpZ;JE0=Wg*q);I!2hpR+KYc(nR^T}qgAYAa4j13o zm4m`qkzV5!Sb=ab$munF{A3)Fk(1L43ekOZO+SmB|MX9<&(5aC_P#oQCk-44L_oa6 zvimK&G%tB~a@IlgOH84CHcu3iAZV*A94(nD93^B^5*dnhy=q+6(h@Y;+hHd3GCmB| zY}?P-C9`X88L;7xUe$elZotgD7G0Gk(i78e{z3OvIq(T=0U6EnB|o19S&1<8?}8gi z2i0e0vN0a8bIaB!W6^!&2;&qJz|~{x|U@9hPLl1`by%Zr&6=tHUOL6yLj;mA7XOHPmOz$1kjr^U-Z0Je#SC<7Alt13oK2Ao?&Za=h0Z`eEq;h|CCEJqJA?dI=BgpKO z#|@E(z2XGg7*?`XdQltP++%OA0i1OGeUG_M0#cHHa zs>&6Ni;+T<8?@k}9kY?kex%_5`jZ(jKnqNQ36>E+ujLNnD`8HZqP12U3JLJp)9_Do zYip0c`vy5JpH1uW;plN0E;MwZne5rybO-g7PhW&ZGO<6hg6?M(#=Q8gzuAp$Hb?=+ zvno;?do1Dbtr`^_imxt%2B385f8RYn zk!bOVtdde_jO*TQhf>*P*GeUu8*X&DsmCq$9B=FEMEw}-xGl;qO)I+*($e_vle|5KK%WGAU?Li z{3dQM*O#FM4=EUOJR;)wzTR4b-MCE99T3td+VlR30*#jMIT*J^+(T-!sWx;CiOJ96 z1eW2QedXwF8C zf-!_qe{po)lqE~3fic)7sTG@rKWcR?{hnRa7_l!1M@QCfWcYul&Dv|3%qXMAOM^=G zO;QG7_mcSz` z#KgoT>LM;QzyJxRBz{oLQOC>%xHVYiB(5tp$gzVc50g00#6tnu2hMTvKy8=-V5LdX zMPpQjfx|o%iA$F4vsboLw`n=G`*JQ~6>PMyq9@D@V;p}iZPw#HOd45rDI&oC{^*Dc z4}(&Zocp2`=-7YXGymY?&i0R=_eA+}%Uq&VwbU$Ke;Gx#{*o}=e)C#VF>=PY{yB7w zd#Gbw|11=ks{>E53+Rc z$m^+X6J=OhLV^H56}yoG3L>cpMFKE(OrW=pJzrg-FyFEr zv4k`k-n&}0YZ*{oN9jf}H;{nJuC(j3@nn*zqf~!fLex3aLEC|blAcML0Cy<2HoLxj zD<)aWb;7gJNTo)$*%=ZvXoYj7vitTIE6yi+;hsqe3=2zz{8&5?b|;(bjup}z0uAc7 z&}YfW%mlGt<#d?M!|RZ{dsT)4uM?b=X#5)!!?c{!M}9mg!lmwYgJWoU9=c`XX$P7x z?YF30eTIM63B=*)(-?l07Ky~ zY<4P%y2WJgM!UhS^caUP3y@Mx72kw-0;N}QbaXZr&JB^(iD`H+IWfF0(378q-jCIv zn_7nbZuf(-2In4y1Ay*ow3 zd$cnyckoV=aj@7RA_bz$rMeEgKFw)Y3s8B+v%o8+24k;_=ib0Suo{pTZfu+m*|~m1 z3W62*b+e1isUIqrX}iTUXlSN_RB}1U(6NCHC=}K$`AFxn9zbFhj}KhTEp^FHG9Xu_pH&3W#O$Ljh&jMWz z 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 literal 0 HcmV?d00001 diff --git a/src/components/admin/tournaments/match-edit.tsx b/src/components/admin/tournaments/match-edit.tsx index 472f1f5..2a50336 100644 --- a/src/components/admin/tournaments/match-edit.tsx +++ b/src/components/admin/tournaments/match-edit.tsx @@ -144,6 +144,8 @@ export function EditMatchForm({ staff, teams, stages, match }: MatchFormProps) { setValueAs: (v) => (v === "" ? null : parseInt(v)), })} /> + + ); diff --git a/src/components/icons/video-camera.tsx b/src/components/icons/video-camera.tsx new file mode 100644 index 0000000..c6760e3 --- /dev/null +++ b/src/components/icons/video-camera.tsx @@ -0,0 +1,20 @@ +import { IconProps } from "./icon-props"; + +export default function VideoCameraIcon({ className }: IconProps) { + return ( + + + + ); +} diff --git a/src/components/landing-page/landing-page-app.tsx b/src/components/landing-page/landing-page-app.tsx index 8eee2d4..40eb671 100644 --- a/src/components/landing-page/landing-page-app.tsx +++ b/src/components/landing-page/landing-page-app.tsx @@ -1,49 +1,102 @@ -import { auth, signIn } from "@/auth"; +import { signIn } from "@/auth"; import { createServerClient } from "@/lib/server"; +import { formatSecondsToTime } from "@/lib/utils"; import Image from "next/image"; import Link from "next/link"; import Discord from "../icons/discord"; import Osu from "../icons/osu"; import Twitch from "../icons/twitch"; import Youtube from "../icons/youtube"; -import { RegisterButton } from "../tournaments/tournament-registration"; export default async function LandingPageApp() { - const session = await auth(); + // const session = await auth(); const supabase = await createServerClient(); - let canRegister: boolean; - - const { data: tournament } = await supabase - .from("tournaments") - .select("can_register") - .eq("id", 1) - .single(); - - if (tournament) { - canRegister = tournament.can_register; - } else { - canRegister = false; - } - - let registered: boolean; - - if (session) { - const { data: user } = await supabase - .from("users") - .select("registrations(id)") - .eq("osu_id", session?.osuId) - .single(); - - if (!user) { - registered = false; - } else { - registered = user.registrations.length != 0; - } - } else { - registered = false; - } + const { data: matches } = await supabase.from("matches").select( + ` + tournament_match_id, + match_time, + stream_link, + team1_score, + team2_score, + team1_label, + team2_label, + team1:teams!team1_id( + name, + team_players( + users( + osu_id + ) + ) + ), + team2:teams!team2_id( + name, + team_players( + users( + osu_id + ) + ) + ) + `, + ); + + const ongoingMatches = matches + ?.filter( + (match) => + new Date(match.match_time).getTime() - new Date().getTime() < 0 && + !match.team1_score && + !match.team2_score, + ) + .sort( + (a, b) => + new Date(a.match_time).getTime() - new Date(b.match_time).getTime(), + ); + + const scheduledMatches = matches + ?.filter( + (match) => + new Date(match.match_time).getTime() - new Date().getTime() > 0 && + !match.team1_score && + !match.team2_score, + ) + .sort( + (a, b) => + new Date(a.match_time).getTime() - new Date(b.match_time).getTime(), + ) + .slice(0, 4); + + // let canRegister: boolean; + + // const { data: tournament } = await supabase + // .from("tournaments") + // .select("can_register") + // .eq("id", 1) + // .single(); + + // if (tournament) { + // canRegister = tournament.can_register; + // } else { + // canRegister = false; + // } + + // let registered: boolean; + + // if (session) { + // const { data: user } = await supabase + // .from("users") + // .select("registrations(id)") + // .eq("osu_id", session?.osuId) + // .single(); + + // if (!user) { + // registered = false; + // } else { + // registered = user.registrations.length != 0; + // } + // } else { + // registered = false; + // } return (
    @@ -63,19 +116,100 @@ export default async function LandingPageApp() { produksjon.

    - -
    - -
    + {ongoingMatches && ongoingMatches.length !== 0 ? ( +
    +

    Pågående matches

    +
    + {ongoingMatches.map((match) => ( +
    +
    +
    +

    {match.tournament_match_id}

    +

    + {new Date(match.match_time).toLocaleTimeString( + "no-NO", + { + hour12: false, + hour: "numeric", + minute: "numeric", + timeZone: "Europe/Oslo", + }, + )} +

    + {match.stream_link ? ( + +
    + DIREKTE + + ) : ( + "" + )} +
    +
    +
    + { +
    + Team 1 Logo +

    + {match.team1?.name || match.team1_label} +

    +
    + } + { +
    +

    + {match.team2?.name || match.team2_label} +

    + Team 1 Logo +
    + } +
    +
    + ))} +
    +
    + ) : ( +
    + Bracket +
    + )} -
    +

    TIDSLINJE @@ -125,20 +259,110 @@ export default async function LandingPageApp() {

    -
    +
    +

    + KOMMENDE MATCHES +

    +
    + {scheduledMatches + ? scheduledMatches.map((match) => ( +
    +
    +

    {match.tournament_match_id}

    {" "} +

    + {new Date(match.match_time).toLocaleTimeString( + "no-NO", + { + hour12: false, + hour: "numeric", + minute: "numeric", + timeZone: "Europe/Oslo", + }, + )} +

    +

    + {formatSecondsToTime( + (new Date(match.match_time).getTime() - + new Date().getTime()) / + 1000, + )} +

    +
    +
    +
    + { +
    + Team 1 Logo +

    + {match.team1?.name || match.team1_label} +

    +
    + }{" "} + { +
    +

    + {match.team2?.name || match.team2_label} +

    + Team 1 Logo +
    + } +
    +

    + {formatSecondsToTime( + (new Date(match.match_time).getTime() - + new Date().getTime()) / + 1000, + )} +

    +
    +
    + )) + : ""} +
    +
    +
    - + - + - + - +
    -
    + + {/*
    )} -
    +
    */}
    diff --git a/src/components/schedule/match-card.tsx b/src/components/schedule/match-card.tsx index 65ea4ad..2b995a4 100644 --- a/src/components/schedule/match-card.tsx +++ b/src/components/schedule/match-card.tsx @@ -2,6 +2,7 @@ import { StageMatchesQueryData } from "@/lib/schedule/query"; import Image from "next/image"; import Link from "next/link"; import { Link as LinkIcon } from "../icons/link"; +import VideoCameraIcon from "../icons/video-camera"; interface MatchCardProps { match: StageMatchesQueryData["matches"][number]; @@ -74,17 +75,25 @@ export function MatchCard({ match }: MatchCardProps) {

    {match.tournament_match_id}

    {`${date} ${month} (${day})`}

    {time}

    - {match.mp_id ? ( - - - - ) : ( - - )} +
    + {match.mp_id ? ( + + + + ) : ( + + )} + {match.vod_link ? ( + + + + ) : ( + + )} +
    @@ -103,9 +112,38 @@ export function MatchCard({ match }: MatchCardProps) { {player1 && #{player1.rank}}

    -
    -

    - {match.team1_score || 0} - {match.team2_score || 0} +

    + {dateObj.getTime() - new Date().getTime() < 0 && + !match.team1_score && + !match.team2_score ? ( + match.stream_link ? ( + + DIREKTE + + ) : ( +

    + PÅGÅR +

    + ) + ) : ( + "" + )} +

    + {match.team1_score + ? match.team1_score === -1 + ? "FF" + : match.team1_score + : 0}{" "} + -{" "} + {match.team2_score + ? match.team2_score === -1 + ? "FF" + : match.team2_score + : 0}

    @@ -156,6 +194,13 @@ export function MatchCard({ match }: MatchCardProps) { ) : ( )} + {match.vod_link ? ( + + + + ) : ( + + )}
    ); diff --git a/src/generated/database.types.ts b/src/generated/database.types.ts index 60b90a5..9f80ad5 100644 --- a/src/generated/database.types.ts +++ b/src/generated/database.types.ts @@ -204,6 +204,7 @@ export type Database = { mp_id: number | null referee_id: number | null stage_id: number + stream_link: string | null streamer_id: number | null team1_id: number | null team1_label: string | null @@ -213,6 +214,7 @@ export type Database = { team2_score: number | null tournament_id: number tournament_match_id: string + vod_link: string | null } Insert: { commentator1_id?: number | null @@ -222,6 +224,7 @@ export type Database = { mp_id?: number | null referee_id?: number | null stage_id: number + stream_link?: string | null streamer_id?: number | null team1_id?: number | null team1_label?: string | null @@ -231,6 +234,7 @@ export type Database = { team2_score?: number | null tournament_id: number tournament_match_id: string + vod_link?: string | null } Update: { commentator1_id?: number | null @@ -240,6 +244,7 @@ export type Database = { mp_id?: number | null referee_id?: number | null stage_id?: number + stream_link?: string | null streamer_id?: number | null team1_id?: number | null team1_label?: string | null @@ -249,6 +254,7 @@ export type Database = { team2_score?: number | null tournament_id?: number tournament_match_id?: string + vod_link?: string | null } Relationships: [ { diff --git a/src/generated/zod-schemas.ts b/src/generated/zod-schemas.ts index 117f5a8..c22aa81 100644 --- a/src/generated/zod-schemas.ts +++ b/src/generated/zod-schemas.ts @@ -18,7 +18,7 @@ export const jsonSchema: z.ZodSchema = z.lazy(() => z.string(), z.number(), z.boolean(), - z.record(z.union([jsonSchema, z.undefined()])), + z.record(z.string(), z.union([jsonSchema, z.undefined()])), z.array(jsonSchema), ]) .nullable(), @@ -224,6 +224,7 @@ export const publicMatchesRowSchema = z.object({ mp_id: z.number().nullable(), referee_id: z.number().nullable(), stage_id: z.number(), + stream_link: z.string().nullable(), streamer_id: z.number().nullable(), team1_id: z.number().nullable(), team1_label: z.string().nullable(), @@ -233,6 +234,7 @@ export const publicMatchesRowSchema = z.object({ team2_score: z.number().nullable(), tournament_id: z.number(), tournament_match_id: z.string(), + vod_link: z.string().nullable(), }); export const publicMatchesInsertSchema = z.object({ @@ -243,6 +245,7 @@ export const publicMatchesInsertSchema = z.object({ mp_id: z.number().optional().nullable(), referee_id: z.number().optional().nullable(), stage_id: z.number(), + stream_link: z.string().optional().nullable(), streamer_id: z.number().optional().nullable(), team1_id: z.number().optional().nullable(), team1_label: z.string().optional().nullable(), @@ -252,6 +255,7 @@ export const publicMatchesInsertSchema = z.object({ team2_score: z.number().optional().nullable(), tournament_id: z.number(), tournament_match_id: z.string(), + vod_link: z.string().optional().nullable(), }); export const publicMatchesUpdateSchema = z.object({ @@ -262,6 +266,7 @@ export const publicMatchesUpdateSchema = z.object({ mp_id: z.number().optional().nullable(), referee_id: z.number().optional().nullable(), stage_id: z.number().optional(), + stream_link: z.string().optional().nullable(), streamer_id: z.number().optional().nullable(), team1_id: z.number().optional().nullable(), team1_label: z.string().optional().nullable(), @@ -271,6 +276,7 @@ export const publicMatchesUpdateSchema = z.object({ team2_score: z.number().optional().nullable(), tournament_id: z.number().optional(), tournament_match_id: z.string().optional(), + vod_link: z.string().optional().nullable(), }); export const publicMatchesRelationshipsSchema = z.tuple([ diff --git a/src/lib/schedule/query.ts b/src/lib/schedule/query.ts index 85909ab..930b7b1 100644 --- a/src/lib/schedule/query.ts +++ b/src/lib/schedule/query.ts @@ -98,6 +98,8 @@ export async function getStageMatches( team1_label, team2_label, mp_id, + vod_link, + stream_link, tournament_match_id, team1:teams!team1_id( diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 022bf5c..149809b 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -29,6 +29,24 @@ export function formatSecondsToMMSS(totalSeconds: number) { return `${formattedMinutes}:${formattedSeconds}`; } +export function formatSecondsToTime(totalSeconds: number) { + const days = Math.floor(totalSeconds / (3600 * 24)); + + if (days > 0) { + const hours = Math.floor((totalSeconds % (3600 * 24)) / 3600); + return `${days}d ${hours}h`; + } + + const hours = Math.floor(totalSeconds / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + + if (hours > 0) { + return `${hours}h ${minutes}m`; + } + + return `${minutes}m`; +} + export function batchArray(arr: T[], size: number): T[][] { const result: T[][] = []; for (let i = 0; i < arr.length; i += size) { diff --git a/supabase/migrations/20251004150626_add_vod_and_stream_link.sql b/supabase/migrations/20251004150626_add_vod_and_stream_link.sql new file mode 100644 index 0000000..c5e7636 --- /dev/null +++ b/supabase/migrations/20251004150626_add_vod_and_stream_link.sql @@ -0,0 +1,3 @@ +alter table "public"."matches" add column "vod_link" text; + +alter table "public"."matches" add column "stream_link" text; \ No newline at end of file From a85b860fb99858191538a2ce380527a26e4fdbb3 Mon Sep 17 00:00:00 2001 From: Tony <33378001+TonyWorep@users.noreply.github.com> Date: Fri, 17 Oct 2025 01:21:21 +0200 Subject: [PATCH 8/9] Fix matches (#76) * fix: add connection to update time * fix: revalidate landing page --- src/actions/schedule.ts | 3 + .../landing-page/landing-page-app.tsx | 303 +++--------------- .../landing-page/ongoing-matches.tsx | 113 +++++++ .../landing-page/scheduled-matches.tsx | 117 +++++++ src/lib/landing-page/query.ts | 38 +++ 5 files changed, 309 insertions(+), 265 deletions(-) create mode 100644 src/components/landing-page/ongoing-matches.tsx create mode 100644 src/components/landing-page/scheduled-matches.tsx create mode 100644 src/lib/landing-page/query.ts diff --git a/src/actions/schedule.ts b/src/actions/schedule.ts index f10c8ce..e0d5c3d 100644 --- a/src/actions/schedule.ts +++ b/src/actions/schedule.ts @@ -29,6 +29,7 @@ export async function createMatch( revalidatePath(`/admin/tournaments/${match.tournament_id}/schedule`); revalidatePath(`/schedule/[stage_index]`); + revalidatePath("/"); return insertedMatch; } @@ -53,6 +54,7 @@ export async function editMatch( } revalidatePath(`/schedule/[stage_index]`); + revalidatePath("/"); return updatedMatch; } @@ -77,6 +79,7 @@ export async function deleteMatch( revalidatePath(`/admin/tournaments/${match.tournament_id}/schedule`); revalidatePath(`/schedule/[stage_index]`); + revalidatePath("/"); return deletedMatch; } diff --git a/src/components/landing-page/landing-page-app.tsx b/src/components/landing-page/landing-page-app.tsx index 40eb671..c74d0fe 100644 --- a/src/components/landing-page/landing-page-app.tsx +++ b/src/components/landing-page/landing-page-app.tsx @@ -1,70 +1,21 @@ import { signIn } from "@/auth"; +import { getLandingPageMatches } from "@/lib/landing-page/query"; import { createServerClient } from "@/lib/server"; -import { formatSecondsToTime } from "@/lib/utils"; import Image from "next/image"; import Link from "next/link"; import Discord from "../icons/discord"; import Osu from "../icons/osu"; import Twitch from "../icons/twitch"; import Youtube from "../icons/youtube"; +import OngoingMatches from "./ongoing-matches"; +import ScheduledMatches from "./scheduled-matches"; export default async function LandingPageApp() { // const session = await auth(); const supabase = await createServerClient(); - const { data: matches } = await supabase.from("matches").select( - ` - tournament_match_id, - match_time, - stream_link, - team1_score, - team2_score, - team1_label, - team2_label, - team1:teams!team1_id( - name, - team_players( - users( - osu_id - ) - ) - ), - team2:teams!team2_id( - name, - team_players( - users( - osu_id - ) - ) - ) - `, - ); - - const ongoingMatches = matches - ?.filter( - (match) => - new Date(match.match_time).getTime() - new Date().getTime() < 0 && - !match.team1_score && - !match.team2_score, - ) - .sort( - (a, b) => - new Date(a.match_time).getTime() - new Date(b.match_time).getTime(), - ); - - const scheduledMatches = matches - ?.filter( - (match) => - new Date(match.match_time).getTime() - new Date().getTime() > 0 && - !match.team1_score && - !match.team2_score, - ) - .sort( - (a, b) => - new Date(a.match_time).getTime() - new Date(b.match_time).getTime(), - ) - .slice(0, 4); + const { data: matches } = await getLandingPageMatches(supabase); // let canRegister: boolean; @@ -116,97 +67,7 @@ export default async function LandingPageApp() { produksjon.

    - {ongoingMatches && ongoingMatches.length !== 0 ? ( -
    -

    Pågående matches

    -
    - {ongoingMatches.map((match) => ( -
    -
    -
    -

    {match.tournament_match_id}

    -

    - {new Date(match.match_time).toLocaleTimeString( - "no-NO", - { - hour12: false, - hour: "numeric", - minute: "numeric", - timeZone: "Europe/Oslo", - }, - )} -

    - {match.stream_link ? ( - -
    - DIREKTE - - ) : ( - "" - )} -
    -
    -
    - { -
    - Team 1 Logo -

    - {match.team1?.name || match.team1_label} -

    -
    - } - { -
    -

    - {match.team2?.name || match.team2_label} -

    - Team 1 Logo -
    - } -
    -
    - ))} -
    -
    - ) : ( -
    - Bracket -
    - )} +
    @@ -257,130 +118,42 @@ export default async function LandingPageApp() {
    -
    -
    -

    - KOMMENDE MATCHES -

    -
    - {scheduledMatches - ? scheduledMatches.map((match) => ( -
    -
    -

    {match.tournament_match_id}

    {" "} -

    - {new Date(match.match_time).toLocaleTimeString( - "no-NO", - { - hour12: false, - hour: "numeric", - minute: "numeric", - timeZone: "Europe/Oslo", - }, - )} -

    -

    - {formatSecondsToTime( - (new Date(match.match_time).getTime() - - new Date().getTime()) / - 1000, - )} -

    -
    -
    -
    - { -
    - Team 1 Logo -

    - {match.team1?.name || match.team1_label} -

    -
    - }{" "} - { -
    -

    - {match.team2?.name || match.team2_label} -

    - Team 1 Logo -
    - } -
    -

    - {formatSecondsToTime( - (new Date(match.match_time).getTime() - - new Date().getTime()) / - 1000, - )} -

    -
    -
    - )) - : ""} + +
    +
    + + + + + + + + + + + + + +
    -
    - - - - - - - - - - - - - - -
    {/*
    + new Date(match.match_time).getTime() - new Date().getTime() < 0 && + !match.team1_score && + !match.team2_score, + ) + .sort( + (a, b) => + new Date(a.match_time).getTime() - new Date(b.match_time).getTime(), + ); + + return ongoingMatches && ongoingMatches.length !== 0 ? ( +
    +

    Pågående matches

    +
    + {ongoingMatches.map((match) => ( +
    +
    +
    +

    {match.tournament_match_id}

    +

    + {new Date(match.match_time).toLocaleTimeString("no-NO", { + hour12: false, + hour: "numeric", + minute: "numeric", + timeZone: "Europe/Oslo", + })} +

    + {match.stream_link ? ( + +
    + DIREKTE + + ) : ( + "" + )} +
    +
    +
    + { +
    + Team 1 Logo +

    + {match.team1?.name || match.team1_label} +

    +
    + } + { +
    +

    + {match.team2?.name || match.team2_label} +

    + Team 1 Logo +
    + } +
    +
    + ))} +
    +
    + ) : ( +
    + Bracket +
    + ); +} diff --git a/src/components/landing-page/scheduled-matches.tsx b/src/components/landing-page/scheduled-matches.tsx new file mode 100644 index 0000000..f8c9de8 --- /dev/null +++ b/src/components/landing-page/scheduled-matches.tsx @@ -0,0 +1,117 @@ +import { LandingPageMatchesData } from "@/lib/landing-page/query"; +import { formatSecondsToTime } from "@/lib/utils"; +import Image from "next/image"; +import { connection } from "next/server"; + +interface ScheduledMatchesProps { + matches: LandingPageMatchesData; +} + +export default async function ScheduledMatches({ + matches, +}: ScheduledMatchesProps) { + await connection(); + + const scheduledMatches = matches + ?.filter( + (match) => + new Date(match.match_time).getTime() - new Date().getTime() > 0 && + !match.team1_score && + !match.team2_score, + ) + .sort( + (a, b) => + new Date(a.match_time).getTime() - new Date(b.match_time).getTime(), + ) + .slice(0, 4); + + return ( +
    +

    + KOMMENDE MATCHES +

    +
    + {scheduledMatches + ? scheduledMatches.map((match) => ( +
    +
    +

    {match.tournament_match_id}

    {" "} +

    + {new Date(match.match_time).toLocaleTimeString("no-NO", { + hour12: false, + hour: "numeric", + minute: "numeric", + timeZone: "Europe/Oslo", + })} +

    +

    + {formatSecondsToTime( + (new Date(match.match_time).getTime() - + new Date().getTime()) / + 1000, + )} +

    +
    +
    +
    + { +
    + Team 1 Logo +

    + {match.team1?.name || match.team1_label} +

    +
    + }{" "} + { +
    +

    + {match.team2?.name || match.team2_label} +

    + Team 1 Logo +
    + } +
    +

    + {formatSecondsToTime( + (new Date(match.match_time).getTime() - + new Date().getTime()) / + 1000, + )} +

    +
    +
    + )) + : ""} +
    +
    + ); +} diff --git a/src/lib/landing-page/query.ts b/src/lib/landing-page/query.ts new file mode 100644 index 0000000..eaa877a --- /dev/null +++ b/src/lib/landing-page/query.ts @@ -0,0 +1,38 @@ +import { Database } from "@/generated/database.types"; +import { QueryData, SupabaseClient } from "@supabase/supabase-js"; + +export async function getLandingPageMatches( + supabase: SupabaseClient, +) { + return supabase.from("matches").select( + ` + tournament_match_id, + match_time, + stream_link, + team1_score, + team2_score, + team1_label, + team2_label, + team1:teams!team1_id( + name, + team_players( + users( + osu_id + ) + ) + ), + team2:teams!team2_id( + name, + team_players( + users( + osu_id + ) + ) + ) + `, + ); +} + +export type LandingPageMatchesData = QueryData< + ReturnType +>; From 83c132ec5efcfe9b2873143e7e017da562a9f943 Mon Sep 17 00:00:00 2001 From: HilmTien Date: Fri, 17 Oct 2025 01:36:33 +0200 Subject: [PATCH 9/9] fix: production merge error --- src/components/landing-page/landing-page-app.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/landing-page/landing-page-app.tsx b/src/components/landing-page/landing-page-app.tsx index 49269f7..c74d0fe 100644 --- a/src/components/landing-page/landing-page-app.tsx +++ b/src/components/landing-page/landing-page-app.tsx @@ -1,7 +1,6 @@ import { signIn } from "@/auth"; import { getLandingPageMatches } from "@/lib/landing-page/query"; import { createServerClient } from "@/lib/server"; -import { formatSecondsToTime } from "@/lib/utils"; import Image from "next/image"; import Link from "next/link"; import Discord from "../icons/discord";