+ The leading platform for innovative apps and Ethereum-backed + blockchain networks +
+{label}
+{children}
+{tag}
} +Activity from all the Ethereum networks
+$44.89B
+Total value held on Ethereum [More info icon]
+$44.89B
+Total value held on Ethereum [More info icon]
+$44.89B
+Total value held on Ethereum [More info icon]
+$44.89B
+Total value held on Ethereum [More info icon]
+{label}
{children}
{tag}
} -Activity from all the Ethereum networks
-$44.89B
-Total value held on Ethereum [More info icon]
-$44.89B
-Total value held on Ethereum [More info icon]
-$44.89B
-Total value held on Ethereum [More info icon]
-$44.89B
-Total value held on Ethereum [More info icon]
-Activity from all the Ethereum networks
+$44.89B
+Total value held on Ethereum [More info icon]
+$44.89B
+Total value held on Ethereum [More info icon]
+$44.89B
+Total value held on Ethereum [More info icon]
+$44.89B
+Total value held on Ethereum [More info icon]
+Activity from all the Ethereum networks
-$44.89B
-Total value held on Ethereum [More info icon]
-$44.89B
-Total value held on Ethereum [More info icon]
-$44.89B
-Total value held on Ethereum [More info icon]
-$44.89B
-Total value held on Ethereum [More info icon]
-+ Activity from all Ethereum networks +
+{label}
-{children}
+ {label &&{label}
} + {children}+ Cryptocurrency can feel overwhelming. Don't worry, these + materials are designed to help you understand Ethereum in just a + few minutes. +
+Popular topics
++ {label} +
++ Ethereum is home to Web3’s largest and most vibrant developer + ecosystem. Use JavaScript and Python, or learn a smart contract + language like Solidity or Vyper to write your own app. +
+@@ -370,7 +370,8 @@ const HomePage = ({ tag="Ethereum.org Community" title="Built by the community" imgSrc={communityImage} - className="flex-col-reverse" + isFlipped + className="" > 👷♀️🚧🔜 From 92a16229c0ce753350aaf356c94f41b2df111369 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 28 Jul 2024 14:04:40 -0700 Subject: [PATCH 027/273] feat: add code examples section and functionality --- src/components/icons/angle-brackets.svg | 4 ++ src/intl/en/page-index.json | 8 ++-- src/pages/index.tsx | 55 ++++++++++++++++++++++++- src/styles/global.css | 2 + tailwind.config.ts | 1 + 5 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 src/components/icons/angle-brackets.svg diff --git a/src/components/icons/angle-brackets.svg b/src/components/icons/angle-brackets.svg new file mode 100644 index 00000000000..c9e6664af1a --- /dev/null +++ b/src/components/icons/angle-brackets.svg @@ -0,0 +1,4 @@ + diff --git a/src/intl/en/page-index.json b/src/intl/en/page-index.json index 9a4befae773..1e3e74e3c22 100644 --- a/src/intl/en/page-index.json +++ b/src/intl/en/page-index.json @@ -39,13 +39,13 @@ "page-index-developers-button": "Developer portal", "page-index-developers-code-examples": "Code examples", "page-index-developers-code-example-title-0": "Your own bank", - "page-index-developers-code-example-description-0": "You can build a bank powered by logic you've programmed.", + "page-index-developers-code-example-description-0": "Build a bank powered by logic you've programmed", "page-index-developers-code-example-title-1": "Your own currency", - "page-index-developers-code-example-description-1": "You can create tokens that you can transfer and use across applications.", + "page-index-developers-code-example-description-1": "Create tokens that you can transfer and use across applications", "page-index-developers-code-example-title-2": "A JavaScript Ethereum wallet", - "page-index-developers-code-example-description-2": "You can use existing languages to interact with Ethereum and other applications.", + "page-index-developers-code-example-description-2": "Use existing languages to interact with Ethereum and other applications", "page-index-developers-code-example-title-3": "An open, permissionless DNS", - "page-index-developers-code-example-description-3": "You can reimagine existing services as decentralized, open applications.", + "page-index-developers-code-example-description-3": "Reimagine existing services as decentralized, open applications", "page-index-network-stats-title": "Ethereum today", "page-index-network-stats-subtitle": "The latest network statistics", "page-index-network-stats-total-eth-staked": "Total ETH staked", diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 9c665c3e09c..3e15ff35de9 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,17 +1,21 @@ +import { Suspense, useState } from "react" import type { GetStaticProps, InferGetStaticPropsType } from "next" import { useRouter } from "next/router" import { useTranslation } from "next-i18next" import { serverSideTranslations } from "next-i18next/serverSideTranslations" import { MdChevronRight } from "react-icons/md" -import { Flex } from "@chakra-ui/react" +import { Flex, Skeleton } from "@chakra-ui/react" import { AllMetricData, BasePageProps, Lang } from "@/lib/types" import type { CodeExample, CommunityEventsReturnType } from "@/lib/interfaces" import BigNumber from "@/components/BigNumber" import SvgButtonLink from "@/components/Buttons/SvgButtonLink" +import Codeblock from "@/components/Codeblock" +import CodeModal from "@/components/CodeModal" import HomeHero from "@/components/Hero/HomeHero" import HomeSection from "@/components/HomeSection" +import AngleBrackets from "@/components/icons/angle-brackets.svg" import BlockHeap from "@/components/icons/block-heap.svg" import EthTokenIcon from "@/components/icons/eth-token.svg" import PickWalletIcon from "@/components/icons/eth-wallet.svg" @@ -105,6 +109,14 @@ const HomePage = ({ const { locale, asPath } = useRouter() const dir = isLangRightToLeft(locale as Lang) ? "rtl" : "ltr" + const [isModalOpen, setModalOpen] = useState(false) + const [activeCode, setActiveCode] = useState(0) + + const toggleCodeExample = (id: number): void => { + setActiveCode(id) + setModalOpen(true) + } + const codeExamples: CodeExample[] = [ { title: t("page-index:page-index-developers-code-example-title-0"), @@ -363,7 +375,46 @@ const HomePage = ({ Documentation
+ {t("page-index:page-index-developers-code-examples")} +
++ The ethereum.org website is built and maintained by hundreds of + translators, coders, designers, copywriters, and enthusiastic + community members each month. +
++ Come ask questions, connect with people around the world and + contribute to the website. You will get relevant practical + experience and be guided during the process! +
++ Ethereum.org community is the perfect place to start and learn. +
+{title}
+- {t("page-index:page-index-developers-code-examples")} -
-{date}
++ {title} +
+{label}
} From f7e629e10249676528a15857e88c0b383bdf46a2 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 28 Jul 2024 22:10:20 -0700 Subject: [PATCH 036/273] init: upcoming events --- src/pages/index.tsx | 81 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c60c9474624..bf79e2a6b63 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -29,6 +29,7 @@ import Whitepaper from "@/components/icons/whitepaper.svg" import MainArticle from "@/components/MainArticle" import PageMetadata from "@/components/PageMetadata" import { TranslatathonBanner } from "@/components/Translatathon/TranslatathonBanner" +import { Card, CardContent, CardHeader } from "@/components/ui/card" import WindowBox from "@/components/WindowBox" import { cn } from "@/lib/utils/cn" @@ -41,6 +42,8 @@ import { isLangRightToLeft, } from "@/lib/utils/translations" +import events from "@/data/community-events.json" + import { BASE_TIME_UNIT, GITHUB_REPO_URL } from "@/lib/constants" import { Button, ButtonLink } from "../../tailwind/ui/buttons/Button" @@ -242,11 +245,18 @@ const HomePage = ({ "👾 Live coding session - Implementing a visual testing component on ethereum.org", }, ] + const comingSoon = [ { title: "Ethereum news", tag: "" }, - { title: "Ethereum events", tag: "" }, { title: "Join ethereum.org", tag: "" }, ] + + const upcomingEvents = events + .sort( + (a, b) => new Date(a.endDate).getTime() - new Date(b.endDate).getTime() + ) + .slice(0, 3) + return (We have many community events scheduled around the globe
+{title}
++ {new Intl.DateTimeFormat(locale, { + month: "2-digit", + day: "2-digit", + year: "numeric", + }).formatRange( + new Date(startDate), + new Date(endDate) + )} +
++ {location} +
+{description}
+{label}
} From 3efa41cfc21f35cd614f3555bf25f1008adb9d17 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 31 Jul 2024 20:51:39 -0700 Subject: [PATCH 043/273] feat: implement calendar data --- src/components/WindowBox/index.tsx | 2 +- src/pages/index.tsx | 51 +++++++++++------------------- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/src/components/WindowBox/index.tsx b/src/components/WindowBox/index.tsx index 6bdca8ac714..f233a02ba12 100644 --- a/src/components/WindowBox/index.tsx +++ b/src/components/WindowBox/index.tsx @@ -7,7 +7,7 @@ type WindowBoxProps = { } const WindowBox = ({ title, children, Svg }: WindowBoxProps) => ( -{date}
++ {new Intl.DateTimeFormat(locale, { + month: "long", + day: "2-digit", + year: "numeric", + hour: "numeric", + minute: "numeric", + }).format(new Date(date))} +
We have many community events scheduled around the globe
+ This website is open source with hundreds of community + contributors. You can propose edits to any of the content on this + site. +
++ Find out all the different ways you can help ethereum.org grow + and be better. +
++ Contribute to code, content, articles etc. +
++ To ask questions, coordinate contribution and join community + calls. +
++ To keep up with our updates and important news. +
+The latest blog posts and updates from the community
++ {new Intl.DateTimeFormat(locale, { + month: "long", + day: "numeric", + year: "numeric", + }).format(new Date(pubDate))} +
+{title}
+{content}
+We have many community events scheduled around the globe
From 9d224e945710538c91614b4c996aaaf98c44a36d Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 4 Aug 2024 19:30:21 -0700 Subject: [PATCH 051/273] theme: add sec/tert/quat color arrays --- src/pages/index.tsx | 12 ++++++------ src/styles/global.css | 36 +++++++++++++++++++++++++++++++++--- tailwind.config.ts | 12 ++++++++---- 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 979cc63d597..70c9da393e6 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -181,21 +181,21 @@ const HomePage = ({ description: "The currency of Ethereum", href: "/get-eth/", Svg: EthTokenIcon, - colorClass: "text-accent-a", + colorClass: "text-secondary", }, { label: "Choose a network", description: "Enjoy minimal fees", href: "/layer-2/", // TODO: Update with new networks page when ready Svg: ChooseNetworkIcon, - colorClass: "text-accent-b", + colorClass: "text-tertiary", }, { label: "Try apps", description: "See what Ethereum can do", href: "/dapps/", Svg: TryAppsIcon, - colorClass: "text-accent-c", + colorClass: "text-quaternary", }, ] @@ -603,7 +603,7 @@ const HomePage = ({ Svg={Layer2Icon} label="How to contribute" href="/contributing/" - className="text-accent-c" + className="text-quaternary" >Find out all the different ways you can help ethereum.org grow @@ -614,7 +614,7 @@ const HomePage = ({ Svg={FaGithub} label="GitHub" href={GITHUB_REPO_URL} - className="text-accent-a" + className="text-secondary" >
Contribute to code, content, articles etc. @@ -635,7 +635,7 @@ const HomePage = ({ Svg={FaTwitter} label="Twitter" href="https://x.com/EthDotOrg" - className="text-accent-b" + className="text-tertiary" >
To keep up with our updates and important news. diff --git a/src/styles/global.css b/src/styles/global.css index d126a4a7727..7f0fcd07a6e 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -44,6 +44,36 @@ --blue-800: #000066; --blue-900: #000029; + --pink-100: #FDE7F3; + --pink-200: #FBCFEB; + --pink-300: #EE8CC3; + --pink-400: #EE58AB; + --pink-500: #F53FA1; + --pink-600: #E51D7F; /* Light: secondary */ + --pink-700: #C70F63; + --pink-800: #891247; + --pink-900: #38212E; + + --blue-100: #E8F1FF; + --blue-200: #CADFFB; + --blue-300: #88AAF1; + --blue-400: #6995F7; + --blue-500: #4473EF; + --blue-600: #3C4CEB; /* Light: tertiary */ + --blue-700: #2B36A8; + --blue-800: #232F71; + --blue-900: #1B273A; + + --green-100: #E3F7F5; + --green-200: #B8FAF6; + --green-300: #80EBE1; + --green-400: #50CEC1; + --green-500: #1AA99E; + --green-600: #29948F; /* Light: quaternary */ + --green-700: #1E6766; + --green-800: #1C4545; + --green-900: #1F312F; + --orange-50: #fff3ed; --orange-100: #ffe5d6; --orange-200: #ffcbad; @@ -93,9 +123,9 @@ --background: white; --background-highlight: var(--gray-100); - --accent-a: #C32E8A; - --accent-b: #3C4CEB; - --accent-c: #29948F; + --secondary: var(--pink-600); /* #c32e8a; */ + --tertiary: var(--blue-600); + --quaternary: var(--green-600); --disabled: var(--gray-400); diff --git a/tailwind.config.ts b/tailwind.config.ts index 193f939d0df..147eb9e4dae 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -49,10 +49,14 @@ const config = { dark: "var(--primary-dark)", pressed: "var(--primary-pressed)", }, - accent: { - a: "var(--accent-a)", - b: "var(--accent-b)", - c: "var(--accent-c)", + secondary: { + DEFAULT: "var(--secondary)", + }, + tertiary: { + DEFAULT: "var(--tertiary)", + }, + quaternary: { + DEFAULT: "var(--quaternary)", }, body: { DEFAULT: "var(--body)", From 6bff04aef2280073cdaf538bb90b3a22d5ee70b8 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 4 Aug 2024 19:45:53 -0700 Subject: [PATCH 052/273] init: homepage bento box template --- src/pages/index.tsx | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 70c9da393e6..573a50f122e 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -269,10 +269,40 @@ const HomePage = ({ ))}
Find out all the different ways you can help ethereum.org grow @@ -644,7 +644,7 @@ const HomePage = ({ Svg={FaGithub} label="GitHub" href={GITHUB_REPO_URL} - className="text-secondary" + className="text-accent-a" >
Contribute to code, content, articles etc. @@ -665,7 +665,7 @@ const HomePage = ({ Svg={FaTwitter} label="Twitter" href="https://x.com/EthDotOrg" - className="text-tertiary" + className="text-accent-b" >
To keep up with our updates and important news.
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 147eb9e4dae..31e56aedf4b 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -44,19 +44,28 @@ const config = {
"high-contrast": "var(--primary-high-contrast)",
"low-contrast": "var(--primary-low-contrast)",
hover: "var(--primary-hover)",
- visited: "var(--primary-visited)",
- light: "var(--primary-light)",
- dark: "var(--primary-dark)",
- pressed: "var(--primary-pressed)",
+ light: "var(--primary-light)" /* TODO: Migrate/deprecate */,
+ dark: "var(--primary-dark)" /* TODO: Migrate/deprecate */,
},
- secondary: {
- DEFAULT: "var(--secondary)",
- },
- tertiary: {
- DEFAULT: "var(--tertiary)",
- },
- quaternary: {
- DEFAULT: "var(--quaternary)",
+ accent: {
+ a: {
+ DEFAULT: "var(--accent-a)",
+ "high-contrast": "var(--accent-a-high-contrast)",
+ "low-contrast": "var(--accent-a-low-contrast)",
+ hover: "var(--accent-a-hover)",
+ },
+ b: {
+ DEFAULT: "var(--accent-b)",
+ "high-contrast": "var(--accent-b-high-contrast)",
+ "low-contrast": "var(--accent-b-low-contrast)",
+ hover: "var(--accent-b-hover)",
+ },
+ c: {
+ DEFAULT: "var(--accent-c)",
+ "high-contrast": "var(--accent-c-high-contrast)",
+ "low-contrast": "var(--accent-c-low-contrast)",
+ hover: "var(--accent-c-hover)",
+ },
},
body: {
DEFAULT: "var(--body)",
@@ -69,7 +78,6 @@ const config = {
highlight: "var(--background-highlight)",
},
disabled: "var(--disabled)",
- neutral: "var(--neutral)",
"tooltip-shadow": "var(--tooltip-shadow)",
"switch-background": "var(--switch-background)",
"hub-hero-content-bg": "var(--hub-hero-content-bg)",
From c4ea9cf8dd49cd19435efcc0313ffef2418114b2 Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Mon, 5 Aug 2024 16:34:10 -0700
Subject: [PATCH 057/273] deprecate: switchBackground
---
src/@chakra-ui/semanticTokens.ts | 1 -
src/components/Search/utils.ts | 4 ----
tailwind.config.ts | 1 -
3 files changed, 6 deletions(-)
diff --git a/src/@chakra-ui/semanticTokens.ts b/src/@chakra-ui/semanticTokens.ts
index 9b81ae3c21a..7ffe96fb922 100644
--- a/src/@chakra-ui/semanticTokens.ts
+++ b/src/@chakra-ui/semanticTokens.ts
@@ -91,7 +91,6 @@ const semanticTokens = {
_light: "blackAlpha.400",
_dark: "whiteAlpha.400",
},
- switchBackground: { _light: "gray.300", _dark: "whiteAlpha.400" },
hubHeroContentBg: {
_light: "rgba(255, 255, 255, 0.80)",
_dark: "rgba(34, 34, 34, 0.80)",
diff --git a/src/components/Search/utils.ts b/src/components/Search/utils.ts
index 70cd1c19a99..7f734780604 100644
--- a/src/components/Search/utils.ts
+++ b/src/components/Search/utils.ts
@@ -160,10 +160,6 @@ export const getSearchModalStyles = (): SystemStyleObject => ({
color: "body.base",
},
- ".DocSearch-Hit-Select-Icon:focus, .DocSearch-Hit-Select-Icon:hover": {
- color: "switchBackground", // TODO: Remove? Causing low contrast in dark mode
- },
-
".DocSearch-Footer": {
"--docsearch-footer-height": "space.10",
"--docsearch-logo-color": "colors.body.light",
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 31e56aedf4b..3086d8b78d5 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -79,7 +79,6 @@ const config = {
},
disabled: "var(--disabled)",
"tooltip-shadow": "var(--tooltip-shadow)",
- "switch-background": "var(--switch-background)",
"hub-hero-content-bg": "var(--hub-hero-content-bg)",
attention: {
DEFAULT: "var(--attention)",
From a4768c6f98545113fb31a72e61acf9992b2d077f Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Mon, 5 Aug 2024 16:34:41 -0700
Subject: [PATCH 058/273] feat: add `banner` gradient token
---
src/styles/global.css | 8 ++++++++
tailwind.config.ts | 1 +
2 files changed, 9 insertions(+)
diff --git a/src/styles/global.css b/src/styles/global.css
index 2e1fa576a1f..6b35aa283c4 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -67,6 +67,14 @@
rgba(136, 170, 241, 0.16) 66%,
rgba(255, 255, 255, 0) 100%
);
+
+ --gradient-banner: radial-gradient(
+ 155% 100% at 50% 0%,
+ rgba(201, 179, 245, 0.16) 0%,
+ rgba(201, 179, 245, 0.48) 33%,
+ rgba(136, 170, 241, 0.16) 66%,
+ rgba(255, 255, 255, 0) 100%
+ );
}
[data-theme="dark"] {
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 3086d8b78d5..30af08e367e 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -103,6 +103,7 @@ const config = {
"primary-highlight-gradient": "var(--primary-highlight-gradient)",
"accent-gradient-a": "var(--accent-gradient-a)",
"accent-gradient-b": "var(--accent-gradient-b)",
+ "gradient-banner": "var(--gradient-banner)",
},
boxShadow: {
"table-box": "var(--table-box-shadow)",
From 00728a8f91e9c48d2116c4f6be0e00fcc1db2a80 Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Mon, 5 Aug 2024 18:33:09 -0700
Subject: [PATCH 059/273] refactor: fetchRSS
---
src/lib/api/fetchRSS.ts | 51 ++++++++++++++++++++++++++++++++++
src/lib/api/fetchRSSDisplay.ts | 43 ----------------------------
2 files changed, 51 insertions(+), 43 deletions(-)
create mode 100644 src/lib/api/fetchRSS.ts
delete mode 100644 src/lib/api/fetchRSSDisplay.ts
diff --git a/src/lib/api/fetchRSS.ts b/src/lib/api/fetchRSS.ts
new file mode 100644
index 00000000000..b05b410b0d9
--- /dev/null
+++ b/src/lib/api/fetchRSS.ts
@@ -0,0 +1,51 @@
+import { parseString } from "xml2js"
+
+import type { RSSChannel, RSSItem, RSSResult } from "../types"
+
+/**
+ * Fetches RSS feed from the specified XML URL(s).
+ * @param xmlUrl - The URL(s) of the XML feed to fetch.
+ * @returns An array of RSS items containing the publication date, title, link, and source.
+ */
+export const fetchRSS = async (xmlUrl: string | string[]) => {
+ const urls = Array.isArray(xmlUrl) ? xmlUrl : [xmlUrl]
+ const allItems: RSSItem[] = []
+ for (const url of urls) {
+ const rssItems = (await fetchXml(url)) as RSSResult
+ const mainChannel: RSSChannel = rssItems.rss.channel[0]
+ const source = mainChannel.title[0]
+ const parsedRssItems = mainChannel.item.map(
+ ({ pubDate, title, link, enclosure }) =>
+ ({
+ pubDate: pubDate[0],
+ title: title[0],
+ link: link[0],
+ imgSrc: enclosure ? enclosure[0].$.url : "",
+ source,
+ sourceFeedUrl: url,
+ }) as RSSItem
+ )
+ allItems.push(...parsedRssItems)
+ }
+ return allItems as RSSItem[]
+}
+
+/**
+ * Fetches XML data from the specified URL.
+ * Parses XML to JSON with parseString (xml2js package)
+ * @param url - The URL to fetch the XML data from.
+ * @returns A promise that resolves to the parsed XML data as a JSON object.
+ */
+export const fetchXml = async (url: string) => {
+ const response = await fetch(url)
+ const xml = await response.text()
+ let returnObject: Recorda<6V-XNmNP7%Kn^z)`)*UgF}xspe%y0OpD|
zQ@@Yp14eNA;erP;8zve^L()DBD28twNq_O@6gTh$V*
zvXnvC)ry;M%;p}w*2tasY;%Mz1t=3ZZHcz?j!TZ8VfWD&;w6iApp!nNmZYrR$~{Ts
zR-)4-JiH-8RL?`P-4v+bw
z1}j+RQA^{!4fnYxLr2dQT;V_E$(uu#7mzso3f4VM;Pb!m>;Zw~F
zWulFqbt~7KCjZ|Hod6XUS5(DOTy&d;UZq##h42mPNGbpm55kP{FxC#*+OQQqYn|?-
zS$&H8+z)G%t7<#;r-i)pebW*sQBN=JH{^>2st2OxZE
zL5hURpDs29SZ$P4)aMbPf>_vzpBl{931U_7Q(W&7;mqZb2}
The latest blog posts and updates from the community
-{new Intl.DateTimeFormat(locale, { month: "long", @@ -499,18 +512,17 @@ const HomePage = ({ year: "numeric", }).format(new Date(pubDate))}
-{title}
-{content}
+{title}
We have many community events scheduled around the globe
{children}
+g0MM4q5UF9fceab|-~a%6v0?M! z%Buw8wxw9iC*XcB4Z#R@_xDw!E$2Fa)Ybmi$p5gu8xjR~JEo-=ti~9y3Rz6EU9W67 zMA`IU6etMj2(mmx7psZ~2rxpUNFg9e5>6eFC*#nF0d_S$hLs!buL;9#($X~V4_OJ5 z=N2%uQqxiY3Sznn^jT=8Bpx6jU_FS>pZ_*c(4xE>&>n_kP^3(Y8yuSRud-tzOt2OD z&hOW_XzUyk(spw62{U^wZhrq+l*I`N(pVVYyi>vwz3Y`1 zwM;5ZIV>~~pXW(Vk^>@Zd(MeRr9}>WX43p}xwx##LQg}huCo3lg6AvN7-_ri-wW}6 z{5+`tqpA=G{O-heYZ{UHZ@1H=7*5++rz(=A$j!wbdIbiUQp*|pJkp1%xjJJ-slUo& zPsdX^q%D_E zx>BshKPK7;6(AhD%oKkE(f!9?{^vezdTnFa>*2zO$^qJHYK za~^H8w?)Y36bb*hPhZ4tT$yVUrj08;kdI$sUP0gJ`}P+Xn!)tGH~7EFP!N2=?-VpF zbTYlZ%vZ@)mMrMAYe$^x!;OAltsv&+1yP(>afqOVwSt+dfU$>0VvS`aJS1$kQR`-l zlFC3AB3YE{*JKQh<_4K7LPmhosKhQ&yIq_dZjU{UL1f0M`%oo@jQr{SuMKldKH&X} zo`LS$C4cqY#yf3LvvYAbsk&D36 It8E%nnBxnEGLt zT9})`G3J0N%U_;T7La0N!h`fDd^GIPQBgXRvnBmfr41f;Bi|9uVrsNAp8brV->FOf ze*iMD)zH(9eVYSnD5! mKLqktH= Pf}Gve9T_lC4D{C`zhxbRriS^2U_FF4|F zcUt!#YIUG4!tbUFAXz92ktyxhuxQC$OaIXJH9}(U+iM1M{@wvJ1c|UMn9G-5==ol# z=5+2&W2YKvvN$vGV%UgdV&Zk?$F~j*uQpfdV3AU&R;6W?c@c$oI&)(BA9PDUpT7aG z($3@ff3Ma2gzA |l=w$AVTAolq+G1) ztQZn0a zGEwlqepCH>`x-Yg5FSn?AAJxWt%i5Ycc^h@r|el|A9QveXnm zQwSiX#3tylhAFF^J|g`MjAU#0LxG*VbBHN_D3|N6rDplrV%8S!eY#;3sf~WnY@ C*W7a&@7WspNqOvDPkulQWP|iGisqw8pQJl-U^Gb z_+r!`BY<*Q!=&ZtA7vk*y#Kcu999^zKqc0B8HXh0-@%8gfuKo@DmDTJ!@oMSgnv@* ze^@kFGk7doN7cz}QI8J~@_1ol>;M^3C(0xEJjov(j>&6r(pCCkxeYrPRdaE9E|zVO zAj|B3JF^eGh!wJ!8y@PIy?~nK{ zHSvV8-g6$iNb7M$jIHt^bJ|_D`benTIX|LuTkt;=5d7cO636+}TFb0&u0ezAYL&_x zg;5Qc#hFN4{X)CeGEiVa#QHkvE%g0_U{)tv5T}HP;$i8P+LYRVIF`%(E6eqDXu8s( zosF;CldsY!bl!*Y(i1f*ToHiL5VgwSV0&PH+B=cc{i{)SzisJ~S6AMyHX;Dhr`a_v z^7QX+p`S4$v2CM+jRbNEfBu3a;lO=$C7^wns-VCw2w&)q8j0jXq8;b*_u^Sg+Ms?L zmH%OL^pw=yH$k(p9n0CHKyg!ws1)}~bOjvz<`>=vzEeu8V$S-<6#eH$lCvW3KYV_% z+0GJZf{8fR2R()~xcfYB_Ww38a2t(hJT?{YZMumN+;<(c^SWOKy^}ELi~Hd8LKWCZ zL|y*7qRD~D`>?_R;k{Lli1Vpu=egYIfIY&+j<+d0D;cqR`hYA&c90(|DAZ11bngVg zZW$Bjos(pVKKx@9S2%WrUaE9;*2>p*POoY3qg;aMG6?dtpzL;W?N4>C(&SJp63u+c z^Q23q(bmm?uex;2Lq #wvJCsbTRpI}T%A(JgCW=KKP7!_NE8?KGiTN)FvLd!9;5 zW6fx3bgqWIY~orxpBGBSG+K$?!OMpJ-`~daX)h^SnJ)tICdeMb_Z2pp888ZDsHE sb!H*KZgxj~mYrIGerUS;Y_$V^kz(9Sf=ZQz^guI|bdx7n=dY5ZNxR!b&)V3@l^T zAZx@kK<+k+@6IE%-nmMXw-wwI$L1bp8Z$kCWFRLkf3}4YJv$P@A1_0N@^5Tm=ONp1 zkrPw3Oppqj?H41c$r0aV 8*OU3_;HwXW5x` zqz7A}^L~Z?#% 65+^@g zMtaB$B5lO;=lC9x3ZuG023Ygg*=;3?pEU61@@0|Z3O`Pf$PbcIm9#lawmcOJ5qLH5 z04h*?)-N8GC2bhsho9;L-`m0NxBqJg9M66i!>8ko2W`^vNhOTz9LcNgg){Mq97Vpm zUiO}?MbFAtlZ(P66z1n)@>c+DpP2~zG|k{L!v{8x=UQBpI1*4kkzFUYb5vqY_yY+Z zUT@9%LErWAE}q+PelqOPly)${=dvD+fsV;C1>HvHL$`rYdQf!K5szTs?Vh<7XVLN4 z*ol`Cu!NE-pVArb<0r-zN!80%R9|UMJ$m5P`_s;Z{;R}+MxGC+_i1yWa`OiJg*-Bq zy0x~k$5Z&n2++0dkF6hs-g9rSS7J-1Uz9ii2|olcdwO5Te<_5fN5DzeX<_vV(5uF0 z;8_>B)@viS=D^8vMvjafx3*qRGr@-vsfxfp2U$5WOKMjqh1;Pp3Ycfx$@ILn?{#$~ zeR_EDlQ#fEPP%UKOs5;64y`gsJSOhkAJ?b;Wa)UHNTwR2;u1%>okmJ u*c5_Q=&Hd!RGX8Tl8Vs9T4`+f2olt1?8WAx z1Cmb^c;>ZbgF!XxX~Atsl5nMGO+)B#`XF-C-u H*5@ z?=3R=-;^hr5aT+~eq|BV_3J2~zK|7%WmWFY*irwo+jzhQxHeO_(dCK!B(Ke-#qwml zl6rk`Z S2iCp$5fZ$wUq^7zSWP#o-zJmxq{N#b|% z&pYF;%QXCR_|aNi?s(=oqzp76qD0@NS^16MTOaVSfajlZ(~et~^le=7_-rs~GoVZ> zE2PU4H7%R*!$iB~=Gc$B8vA2Q0awo7Z?Oi11YJeERYPv`%>IvI?j29RjaC94)}K|V z>Jk`H4A9;{g$)2AbnQqs8!i4;DBc*1xa!~JGg#u1I=pO2Da|X=>I5r4IC14 CRTcU0al;yQkj2s&V?Sr&ZH}VLl-e2Wh4L4c2!EAZZVL }rDivw6N@X>#Y zc5|vGCdDV3lGNx3eys7vC^Gg4jlY(;FFKB6%Cc*xW4fPpxS1N*@$l4^kyf}6G5#GN z0YU6|0GaZd3s>c(Sg^9A2l62QNAD>mMC*e5t{sp`A|AvK_b?>(r nl1<3j>3*e8(c)yrv`PsKH>4{@phEA}w0NKe6lS5zY<2UYICnT)M8wgo z O(l+VU@$Dmq#KM$o zv+J_;eAV;on!itp( Fy?klkQnR1>n^q2%Ruip9wL6~PT@2)enZ>eW&ZYg^ zoqbcM !Tt{+i4<9}*n~KS;c#$=Sej_@BdCed*BNj|hXZt69}&On Q6nLe48~`|~f$nngwiU)3=kOOk0m?lX=O zCeUN4=)ojnU_wA=?KR}$m(L+*pA6rv>eezHv7ON<>2qzhf-1}ETa$FLE=D9^8W8h3 zC4$-*s8W*$RdkXON&=fVz?q5ca9g~*(cvV?Qo<8*OapW*&?2jStys3wXR4?I`MMxz zW76i1 $JK}Nc-Y7559bA ?0yprvyXFHK3r1nD#G z0Ses`vHmR+(z;x7iSmf8H+z`zHlJs0@9}6RR1KLOn__?zCc%TD0+qK8$KNa&8f}WB zXaFYz594xkv)Om*)&`vTY8z&|;JFfV^v!68CSq_W=&R*w1w)7D BR%^4!ZQ zq9l oeKOYD}oG?ZH3}{4wj)vT^m`|51Nbh4p*bpZHhxOwc=I4tV z#j1PMA4AdU*Vr}mb>lj`18%@~iHilOjUv^ZHLiG@ L 3 z3g)TNgnA$932Oze+g=y0;{*(lcI8wQS{_|&=ZMKJ2#7B@=>RbBEj0x3KDzNIpo@Fe zLuev{Wc&A>kCRNeKo${1n6hd9Y|%Wd`+PeT5I)AB`(z(GyCXJvZNU!9`eS5ytS!`< zgbj}wG`HWhmrqkzrZhJiC<|0SZ}CE$l0^QAKa!6#m)5z2(2&_AOrPkChb_FW({NDB zkVBQ!O>L=%?eqm^+nN@Sh;2A;NDgHwnVN~_;dc@Hs*`BY?!0!UaowfRV#~Umye_sT zWs$U6HDiROVL~Gk3F!w{gr!A$o8u~ !GNG_0Ps(9@_&Hpj2h^KV+^4p3F-qqWg-EmltH9(|JCk5v)>)BGqb!mlztD5Z5 zee9^hzt#HFvD9e^J;>_!k%5!mgeHD}gmw1s3i$!+39mHXoU5IBe$r_SQEv6po_MkM zwl1k9#emRfMg^NR7Zf(1r3~ajE#Iq9CX2>h^ 0%>;Yh@X zQL1EnQZE<-+yBIq*W3+-J}&RcuV8R7CdY9=a?pngVvyQ*033PQra*q?aqKLAAF0^k z{54ofR*DdM*+eZLP~x=Vcc6^t;U`LHwlUu0TmO=pId&ypu5Nd52=6XSxqb eJ>o+~DCN}=n z`Ko*9^lOR}$F0leeXFx$;m0@zBl kX zpm}1Leu)>cc?hu8s<7#q^zA^9P)$exvx$IN=wg60`lVLB*Vb&e8paWuz8o{;hYAIN zX}Y*>avazDw#bSwKRQB+??YdeQlss08`VMh!RU|lR9Mh4J86ndy1T|z&HAJNIreO) zf4x@k!@_I{oxkj`M*GXSW+!j7b@qhsp+SeO{fTdPvBNhG*9wQZOgIB&l!yh?6#n Iq`Hx&441Gfa*XMs8dv?(wXgITvf! zN)j|K9$bU~Xw>ev#ibaI%>T4No*4RGwdmx={8))B$jFnIWAu1X=IrtwjnYuuZPY}z zjDQ|~^jMCpdPbQLVgvnk2)Ri6ks_f2^4R3#yd)uC6X*T2wcp_0z4 7I80D{yQhf7AzgPn$;4eh*3<%-YR #sBmAv^*X&Iwk0jBb27meYXt)}z#+Uxb70o%7 zplkk=W%(J|xT>_`iWNMoV7N3j3LFJO!hkB C)j(C)UaM?1BQPj2I z+XXEJn%Hady~^;RMm8gVv_^@x-!WPbQ-?E~S{3*Mx{s_j#i~VEMw*O4T@+g<{*Tes z+nZG2>FR}y Ndeprl-<9tjo`iq-
UaV&=0XZS^>TQw^Uq{ltLetUALnGz zRI8Tf$4d W=J0f1A-sIN-|;_K6b*yrAXuSqNG4{_p{s&j)vBzQ-rL zp?}4AkLeEf3{@vYciNdPJ`dOE>e;8m^}$6LF3Z@K*25TAE%?-P=IQQ@Jc@vDlh4xE zFo^a6@*F&p(46O=ogHEM8j0S6eftr4Rt;mw-?UiWb?Q#I=nqb8%~AQ3?K$DkEG<%O zb)8IcE5QQlb~TL~nyrZS=lW&G9!KD)40QF3{R3a7NQWC@ew2S234K^(AagG1U@v9p zBTpKtE|i5D_xZ_Och+#GErRQULA9Sy=Ai8zY4C+)Ie)2s--b2}Zbc8*B=DOhe#gTt z<*4q~uPxP&(IN2S&yU7T4&kT~9Xg>WT0ZxsLFA+t@$doULY}XnFN$W}5@}sX@A>xG z(+vM!^Fs0ASFfn%a^^ZwhS&xV6K!fx8{9yg_c(1zS9fWi-;<})G3+~PtN%tV)7L?3 z=# vlKh_h$ZfWzlQf@crAps3qAMR zB+nqWCo=LZ42czkRQDuV3j1@Pkg!Vb;+>Na3QiFj6ej6?El-rXV}H;Y@_b_>8tbWX zgQ;cdWcFTmkIY+qfjkOUtJWWtXgOufwuQvSewQ*Myv)vuJr{-EuI;^U9aazzvo%V| zNZANj628%TcE-8(zQ?m!Zx=;UUXD2|Hrj7iCIh)O!980mLa&dMbCtT`8rG?a%fTt4 z;yxc-#lsshxE4G&qo!#>+*@{g9n%J@Kabz5tM|GpX~TI$Jf8wO70-M~%bSbF z`A}bD>63nNA7$pD3X-l6a)3LQwl}s4FT^t6;5cvKTP9Ns$`DG<*TUNdeX%@AGV00y zUhgd)$y}Z6`f@D*&>D?o9Nm_Bw}{o`Zob!9&sXP9mtAWVu^iq>LXV@~G)~Sqrc2X^ z&egI9k9Ypwo%tr6rQBN~OX`$%DTjT`cf_wv$C4g#-C ij6h=QSwpKynTygA&v0vhg|DDD$d#4nBqL6 zzq3U<9s6!%YK&b)`COjIp()UwGM-Z9hoVWYjr9?NnZ>$_p5}_*^J!Oub*F&S6NhM{ zh@`pgxfq!;zqZeH_+UeCx(tz#)0kRPmPPPNsBzyE)9qI8{n?%bXP(mdx<|qoqIZUq z4={Kos@kdg-X+~42|i45%MW(@>|WjC*+>5HULf;afa=`aQ3hgfH#*-WULx`vDryx@ z&v8njiRH(7493YXeU`*Xn<)YVQ!A%mg?csIkQx*22O42-TI37#(!&4jmn2_b#k8`~ zD>bF?-;NI%%b6%qLl`ld8h37xT%)ivn>r^h<*TOGzPga3eBAwoshs^I?~-;{4tsB<2Jfk;A ^l^8vdfhzare0`3w8xcKP1R+#9UFk8yj zCa1r8>$S?b33Grfgy%Nbg*ont3i#rK1NLn_wv=49fPBg%KQ>n%|GKD@^>Zl}JS;zR z?N4QnU3z26E<8LIT iGGz@iJ7(1g6qubu60hev7mFU;*sYP9qC zvwu>8 J4q-ujQf!RS2Ep|T=es21tpjxuOCB{V$E#yK-?xq z{io483XYd-C) ^sL@)|JCFtIt$$y7p@A38u* z-gs`l$A-tas+00Z=xVvdB+PYL`Ns8Amq-lv6FjsO#)Y`frzdJks*G>z0i6pM-C3Oy z;VdW~;gDxk_iGCR=b_i0TSor!(bw+>B;M;TDsOnrbkBi3>gl+;yo}hoiW1fnF;fb8 zaEwSsWFCRZ3@MaW@8`?*zGZ^*J=ox*`jZyO^T3#I!7;6^lA93%+S5SiN$s-JemNnD zR#ZonQ5I3O*{sWnazvro^%5}a-mq~CX={0avT1lKY$oDGca*oEOXrzg7bsew$Mv^6 zp83_@*mjjmn#pL )rL*sCjAyVp}D^4Qx&`<$*ko$|d<1)9s~ zv1|((Ia2+j#zukU!ykfuBYL-ns|H-jsjWIWfKO@V5;hAnX!s{C++cYV#byQMpIg zH6LWm)qGQ3C4%1GOciXa7Rz(-^!7tVMjdhYc`MS+1?4M?uoh^s8`^&nd{|i-s9wfV z{$ofd1TO~NbI*^>)NClWDj9W^zEaI6P58U 9#n+#~)|$o=i@W)N!T)XcVo#Xgv%BvIf)^>+jeazQVF?LOWxlYyIuskj?j z#xZi^mk%K&ga}_ZIj@!mts_52JQAU}GpHDjkl^I>7%vF$ZrKq!RGPtA@Orb-6rstO zQzTnKlW4U p)oc5Y zNU}^tkbYMUzK5 vj z_H!f<*|L0FU0;d0`B@yb4DVmCp>GT7-w%x&zZyfM{;a7P_WJy+tTq#NziyANcP33q zT`#fYRZf<+xQlqpLb!8q #;i#7N1=xC0mcL39W#WuK>yaD()loP21>6 z)Qa8t% p#5z9QHv$nsjxXdgeWjGtulhAJll45OJL4cFs^RTDAb-gvFw zV~fg5!QVykQ{dj8e_R;GN{*bi@CORCR{|%(qk~DXO5D3KmAg*4 09xO~sp#WY5l^yD^UDEc5ZWhF{}@){@p#`6<#no%cTaOngwT0A zSEoo%n+H)7e|{Rc906#~(~7DHKsV;A26R5$+8HY0anTX_KPuTt$r+^DlO^vFZXgXK znbTVP?S-qBwAf%`F2CKLdNxukg=+P~B;nHee_`12d)rJ>LfPisKW$n^@x5=&J9Xn- zb(WGW%s|P~vN^3qzucFSaU^hAikoU6|LoAce_hbtPTb&n%kA6<&scT301`n2-E_0Q z=S#mAn(W~eX%MS&d!`@Z7n ?uuiETL$7ufT^JMf1eYPXG z XDoo!N~H`3qCCognk?|WO-n12Tmj?GQD>UMrDlUJj1 zFmmDCzditi!k3x0_y>a>6Un?XF6(?4+W4sJrJ{;r_!d_dwikG3h)|Q#l#t-}n-D_> z5J|tJQ1qUfLnjCvc|}S1k?*YHs#A1-ZaWsZT# MOeMxXts`;=JR99p zZZ?rZv(U6RY%$x@={=|LnbuOuG~$s~)dxChphYS9q?%FrOZbU78yDR>&;#ugtXF7$ z*V8n`M)NNRWyK3I8u;0~#`(WogG_9A2iTmKg>1%&TdLNr^n5) jjmZ_PdFA-xFJIUsNLxx2gL!oY-XIKd7I;{E(t>%ePV z&dP=#wYxi{)xdx&w{K3)C6Fc0B1@JKA0Ze50jPufarM;zR1S_@#k3I0{g9I#uQ;w( z6?pKZx3z~^y2^!i48|Ivl{`taJ16nMw7BKs1`*!jDf!QyNfO*S*36DfXys2LQ>t?E zB&4KcK|>jt8V*_{j+<;zVC>(Mk1dxtD0 DwdDkmtgL`@VA+`)JdPM%YJ>v5|Sm>DK12~9AhuagZ2Sh_y zsY F*wBMh9TwBnES9rwpY_HX-OcA^h!>lyU#`v)6H znjGqc!> eBlVvaM%* zr~9+Ql=VAgRPoNK^{CORi9AEE)<9ZDx!y_u@+iDcHm{kKzrPk7CTdubxDP7k<*Mkr zB jsQZ_vwf0k-jXXGs;ah~|8b6*PeQ$`S+wB7K^m z3llNnw^%(XR=33Ry?}YebGb=4uY!9g$y>-jCT{l|&5i8m-5?>RdLIjV>o26rVoa9+ z=0$`w1Mp)9>KF39WJerAT;O(5XL^1vLptz__)Q60Chpl)7EMUg^#CbjIOlca46YX8 zxj*}AV^UPZWsL~aEkMOSC u0LXq76gi2itJfuZe)743&KvOmo>Ql z8Uuh&>VmC|q%<;+bo?ANAZYpX9-478Udw{8cl)!udZzwWFEj6v|8!VZ{0pBtvsait zv|@$nm+Q0ftJMixXM51uss)C#>gz+gdb=}a(Rni;-$~d?HnFWnX?;z{>p`T|N %Qh_=n#(%#pxfjRgrK#PxD#* z_~#BQ`U(-D1WT`>N;$%!w$+v!q>cvL=r_tOkEn=;RO7=oAPZh}kr_2LI*P=_Q>>cD zojae=sgp?2p2ImKVnTxXQ*qjFIVpa}Y3F1m+O~nEcvjK3Yk@KIo7T3SI$U}S#sF=L zY_}iS&N!PXzP5n}e)|XTM7+)o>+g$|S2BNrY2}8f5>XwA2g|xCPZ3fGkeM_U?N }N2iIe4hF5v6RZJ9Aq4&^&9y7QjkTvLd!J5IC@%cg z&inRuI{J=FgK59Z8S*$noq9GiR=QHy^!Afd!#5%k|?yq!#Uzm0yeDKc4- L z*rlPI(H?oqxtC|dw?8sL1tDP}pr2{A<3&(IVj!7|_{f#KFCD}#NM7v4>hRx}iXEKX z3X3zTW_>a@`ke^PlHP!(uQ31ICePmLxfXSUWXIzv(0bpP1dohtih)w{cx^~|KJRkY zAzB?Mj^+Ips(+?s#QDDJyZYCLF|ZsTq+!16-%(Vr6?P-~;HK>ciIoUP@I145gCEh# zK#JKRn}NI;E;?9~n>jER2kec`8&oMLQ#2Xr&kW6R=kJI6-Cq=FX+E)dZz<9^#E0j) zM58Hhv3-wDF7DG}(%%b|ZcdXE7-U1upU4%Z#!pTkSKOLM48Ganl!p1`GyW|!o8s-s z81VW!v*=-HreGF0Cv%Nb!y>4p)nBh_G*?>YqoVs+rCN+~I7F5{Hv4@S&93~A8PNl< z2jW~#yNwX&dhS?$ohDqLXg-AUc 1=83LQut!fh(Y=7I(vg~f_H`+c(>`1x;0{X`N<(*~A) zdYZl56OCFm5ie{c{g8p%AV4MVftf%Dx1gm}qP`WXg(aMxpfJ;!^~UwNJvGPg7l$Bc z7P+`Xw{y|&sR{iz(Ug&%I)3L(&g%mgW1*|`B%uzUtunV8*Go)D5ZRkwxbZT}<%^4W z$cF>wQ#EpSG3~C?j``tA?-_()vweD@J)HJy|2MmcP)OA)Zw&7?5p8Y^^dU2hMvt}c zMkcC__QmH)dtG+!U55LH2}{3x=IoA_q&V9Td%2XxZQ*N{m%L?r{H7B31c=Q@K_|ZF zd-m(T)U4-Q#24dFUbfqOV?P4N MYGPe^K4@Kg%0D^Yg9b19dk`MzLU-57kbEySkE|J@^OSUwL{qZ zey||&-Mrl7Y+AITxNL9}tVQd!;XO5)N;!sT_2VZ!pG%I B{-A~uSq#+DwG--#;3 znHYBa=|d+tuA(EH0AC{vV}U2^>XQ5E@Kw&h%Z`nt?-fxYrzYdiqe);zir%z^lFt4l z{NNwIO@NaM?86a#X2-wC*uq3DlGx-n0&9M@LBR(rtoQd=fEdOW%S%5>9qa{{> io@BWBrg`sMC3ScEXusx%zb>|Xf@jh)*b-=8@CiHLhA1}IgqsPQ*3|A_& zeJKMLKe}YGVp&uBs&M!?aQAUx$Zixyt5f2%Yqq+t!zvMGWYw3bnVFd#e>H*Z`z#dw z;#yX3EC_mRJ+3pKGA`RCFd~jy4oX|+3EqAm!9f}Wnt4|08nHYVwd2D}_JzQJH^Jej zt+wkbZS6mBDBJ*T5$T<_uH )JAe{~*QE94r7?o(Ty$V@2t$bX)- zmP$Fm!xAfvG`ubhk!BlRk!4iLg8_1UI`65}1W-tTzq8)!->mnA)xX_ZPNQ^+ATk`9 zm3K!mbUBYQSR*b{r@;qGwGKBSJdhzR_t-1QzG_sl_3cvc=r9J;oEkIRgeiSlz*DG* z{5WaC_GvrjJ|l*hW=>PDH< kqwyE~IR$o(=TZhj2l+ UsfRts zs0-D;w?$;ngkep(cgLNON8Iei3~%qWH}DCiiMd~9f#0gp7!gXJ=x@}RN{5% z%9jDI->GD*JrAEg=L!dI2*-8bPtDQ6Zro&`MOtl1%u$DBMfLd=96eaJ)=ZHs)wNms z85GJ?we~l~AlSA&2(A`g=R1`XzRw6PN;^5?A|Hk%76<*r!N~`_eek2EK&vzCpS2kG z0tc!xoMDDAd#Fs>N9EXB^OK#qRfP~0YeeA$_6IxG_)?K1ZD4kXr`G54BZ7;ZVlibP zMLHRX5OUeSe(o?AJCD#W4PA{@t{>?yk)b@ h#b5Si&+x^Z!^n%Z4_)W(!wv5AGBxP~2UL7k9VfP@LcdDDLiFpt!q3 zf#6 o9-AfHFYw;}t&YQGns zXdU$0A3<@Rq^9zGV2)i>JQa3RxUdmT8lmpkDTstvGn$ufSu4<&NQ+4iE=EsqTLk*# zR5KscT#fH~%lB1D#bh85n~8oz+QpQi-i0GyK0!k4x&!Omi;c8)gQ~$w^Z}Uds_agE zK8jh;X%NG 1D5ZFLD*uTz_|w3P%t!jooEj1Xl8}|E>CS z*gspP-3~GeV%MFc#FhzS3PVv3-C~sI0kIPCQr_tMU7H+%7M(M+cF@tHa4=t|E-shM z$Oh>J8 V*`6UQ<1Zi7f?Jyw+1=CqO$ zN%JEkldz9Jbvp{Pa-e)beu}YEm>hF$*_Uvt>-=r*^J$o;` Kii1$iy~v6uLjR=B@k1pTgj AJEqvNNuJ>?E`eD6SA^M z1==#1KItT@qeiun1k@q`v|< -gQ$pi19W}?>&QRRpQI?|*V2;H71@S+nk64agEKY^meO<~FcKnymueQKA>ND{)x zQCIZ^bqp^6B``k5a+&vT?|(=VfZxxFLkh2#L+em&Ytb`#yBitL?o%c~rHKGtm-Da( z##VW#2(NmNId&BR*Oo5TQDW?Z&4?n_aeO6n>NmR~PZU;Q#V@yd&soSoNf~p!$-lr_ z;M|3%p9 H8H)%b_T4W&PB>R9z^Ms{byD$tCsl$P*}%$g z-Dw-Q{q(kxh)+5y?MMUg4L>x-Nmu |xV#c3OVOjl|3} zJL*+m-tB;=@fe+qD7`hEnz8lQ2aT-(jPVExc|F2X)|@zg8?;CcmQNzYE`>#5H6{7q zmGGnjWl_sq_rSLS`F^AV%V8pd#&F53-8}VDW~o*7{y`1rQ}aTQa-rwWRaiXMWkMWQ z`e7E`5#=?_-o5P~@d6tbih)>$iSwa*0W@3J(S`->Wqg_kzDaf2bx_x$v`7{UE6 z!Bl!^?a456Hvnfx-KEQ{CV;5Mods7b3ScroSa;aFKXTP}Zl@85RDwGvxbjoXcdEoj zb#)`0CXA>K!XgbWLi1SWH0)Qxi)6EZTMK2JyZ&=had&U%-T=fZtIp5un9TNdWc3=2 z&5B-Ke+=u&^1B_wqk9klN;vS8+!!8rF2VnOza- VMqF&HT#>VQ>hP^ PY9uPz$`>8@l#|`11BJ!Yvb?pWTYXTUcFnU zqw5nS3!;hplX3p!*~TYKHVyX}ak5@tj$HenCAk{;KjRuN*_1DP-Q^JEqkbU3Yvpgu z2i^Iwp4PvS9 -4qYDxLd<~JG_+{_X9}M`{FLkwMqck|DcL%|n}6K+YMVZE2lu(nuJhqJ zuzxSwu`&GPZ|F?z7XdDgQjGg&(-1YHoc8LOAL#p&%-=2qD#qVBPA_Q9vN5vTtS&)1 zf8D%pu n;L;(k=w}?b7qk_n^ci2>IkSn%7Nq zdepb*PZUhgTZZqKdxEnvYy6*&OJ;%H7W=GUOgX-xb 5NjQLuIaaanuT!%Z#^ zXTR|!<44q0c9J&8xwc+4yZqEu2s~y^HI(REUVZC1ydv*<4X+GXF&iu1^HjF`I5?04 z0k(LZmZIcHa1e4cIT*Ji$qpV?WTSqP*zx6GT8RN@SL)}oeh||v?5WS+rkBo67-h>q zdY%m{QPGN5)3u5b|EMiSYcWD2V|!cE12vJ64)hw^gG{!-q$g1M|872cMciv4PhC9^>r#gKfb{*cRCFlO zws6(x#8tVeW@en+6v~3haqc^*r1W_~2+wZ6E6)h%8o8{OyHVWTm2i78LI6<+$ zYPe~5KP6CSnscvHq(?%=qD55quK2Jbf(hNUZ4DzEKw5EBt6NzPtC}9wwyw)Qja8b$ zS7bqUk@mHBlY9Mw?%TAkJ;vQWvk8wzULiz$oXOa?z_ACVB@_(D#n~G9xxbm5>cLZo zz3V5V4t_nX+Dw>_5%+#=4#xo=x6hBOycV`~WoWKq K)7rN7Rj)}-y-mY^g zSq#-BNavs8F!SmXAXJ J&A0>ny0f9jR~@@_G@-*#QlaHI77l`6%Hi&q*GOS0 zas?L p@nHpAZ47=3LT8Gxmt9^AcU;Ro2i-gK@_zv`^?-l! z2`r20yDncQw3cg2bOHWt;dQ~!+X1iY^169Quhd-BCu6V@(bXsuf$p>*YgRe)bQDq5 z;yG9mo`>4AUL=M7h5h!|DKB6XROYKECBD${A$tVoy2L`2k-i$(P8lb1_ )+t_r;6}l%(l{VJ3o21Ut>UlKm z`So06Op&s9{xGkh5)&c4h-k7}|E6!y((>^WZe)0SRwkE~adqZyDdtbwDdl5EZ<^PE z&1#C9K&r27GW>PPLGvHqW!$$NoIZ8GG4i`ZdVz#U92{Ly&5WB~ExCf)Ou5e<$Gv~z z5`Un}la9C~##v)woCYG*HYq!IZNrS1k9E7_$(k7>%SxV4dz)B#K7ade_$Gb^tGPQY z0sIx4d_pg7H=pmJj1&chQ;OBw(QNz-_)-bhXxnuY7M@!(H=bJw==U9Ayc o{2meU9C|)2 zga-?gqZ^A_O?-l%8+>#LD|`aKMU_`WBsGEuoJ;5HK}#3*qw-9|cU@j~ub9WLzX>|` zc;&O;fZfKW?o7125rxEv0280Ui&|!l)})ZjtJ67Cll^V#ZDFh5Y`jyU ^S?9jj&fkvSufoQwtVfT z{$%UlGQX?ngiblJ?Xo`iO}Gw~H~(>>;dGkjuj>V0BpD8Z) z9a=nxPf!7~e{-#G|GS%s5ng$VT(068nBTJ$VaZK&`~n$6zS-8DKOrT3&^RM^i Kc9jG#_mVxr1B*PHUS<+SQzS(Qu5r|*@y!?1*_&z3MA%ZHAU{tndSW{J)qorx z5KAWRCz7<#I@&L0%IxYD#OBZ?z*57)UWfzXpN}oY+NfwOoqQ!glrP_PmbH9ntG;UO zsi^6-`?tG6jcpIhFPFMwS9QttKNK~USC_UFsRm^w=aIyeOhn~*DrHe?dkbb<=28m} zymynZYQM#>3SBiRk_-_Yjb3^-%{eP}VCG3F+GVi%>+G>G$pIb_fd>Y@%hF %> zKw!^+;3SPnf(a@V2aO}ed$HEmbc2*&bNvA(21bI-D`Oo@v%t6G16ljpn6Dq$Tth*C zM!;JUY+xre&;m5>5v ugtm zj*;?tF-XzNqMy9#1KW^9EnR2?r&)`$n7kjYcOpTps@BKr77< 5c>m|-$@|8|%R#ygsITB{6m>S8DOk~>8f_TknHg5&S{3Gh4?rKj2!AlBX+t6oK1 zUzHi|s)cpbl8O<3$A4Kuswq9oSu-~?eZ}~zvIvuj;t)M8BuFLXIVih`uSSrPe?WBh zArxHsc{QQ%&?s&Fz$5IYT@sCeby;J5wskBj3(I&aVJ~F;L440C#!+b)xzOVmYqQ6a z0=Dl0E9aJ|tsgW+n9lDKN3Z7VyC{6-*--J{b|svdE2|`l7-*Q{)i=Fr>2G}Nu~Des z6R|rWA|kLah{D-=psp>u;R|AV{Mtm@2IesiX!mr#Ewd@MRrkE&%Njwoej`L(N9g$x z(Eq7uCs% 3FKPf_FI@&%u(6PFZzBv9`UtSDs1*tpmdk% m!vy!!YYXOp=vTL`(^Y5yJQES6hG-3X;iD@OK4#Hv+x7#v`f^S$rdm4--TM{pQ9 zhU2@4KH)^y`}+-Z#8kYR%$}d-AvcvbZ>k(W=NrKPr f``s`n=^0LjK&XJ2>pl*aI^%t3pU( ziNg}U-r_Mn#M V)rdcL;17Q{JT0KbIyt0*D} ZJfkU&dgKt;){@)eGb6`9MjNu(pk*f?fb8|u` zMH~#UWCd-&xXy0kqoj-SiP^I5FNc8z?nFW3Qhql3R;bPZaKri;3xSN-M9p=e(ly;} zTWXHD(#pBMjH2dLFsk_M4NNrhsLT#p*0wS|T!FG#qxV(wpRF8}maQ}3 uAIx32`a<JtFEA$xNeEI55 zr+c4m*;S0m;z(RDqm$2RWPM4wn^2mKCS80xp1TpsS*K#hrY?b6V#n^L0`55a(3hU1 z>@s9EiJ7;OmqmiA8+`*$5cTZji8E~e-2m&jQ-Z7`Bm$KsPWzKp1m`NcvI>gFuMZlc zar_6MvaR$aVdoz8skABi8XeB>n!u;~TZ-%2w!eLUdJ`)tcWkAcZbL>M2R?}HeHYJu zBbt$}GS(FyTHwSFuuLzpS%Bi1PRYkXWWPL0OZ;MFMGyO!`SL>UTV3<3Si^>z)4pM+ zS#hqN+RE;2jrK8NI1K^IC!L;y?$uMs(|o(hN^obb=gY+t;>(NG8o4w9dK9pJ6qwm4 zTRgAyw3(3AU2>-YdR$YjfG=eUQR-wxMAVGb9U}n`>bE=wgl?FM$tOe|`_(BV!8e zT>!<)kqsPa(*7)|7*f-(*8KzaRiciqmqa+IH`Uzmyzg{$H|6@xHScd}dH_8zQ@~oS zb2DBf08_Z9&xrhxmMzA`tkw_2Rc8Wqc6AW>KR6M%XP*SE_Ip%q)cUCkyd2G>&<{_9 zrUQn8?+(fo=zoc9Zr*=VY!DLl<#FzgsqH}bJU*AzLF_yr-2skuFhK9C3G(=!#tTJt zE&tVR)9G(8xZiH^FZo9E cGmYYp2Bz%a2^a=xD@PPz9Wp-tR9t(3Q{r|QRc77F$qW#$IVLP-sBgMZ+?l8Q zBT-MaH2=FY8hSJ|vznv`NKzEV`@nGR5j(K+#g95(c!Uu0JbjVxObzM>AC=6xpF{vp zZxOoRAj0b^Q| mJ}L(UkM2bGsVd$t9`Ai!h~(1 $+X^zfc$9hDsx_140uIG)R&;5o!vI!bwkFREt0myrLNR55(wRS8^5|HPSdzr_%L^(KDoX)tM6DiR#s|`X} z*V^A5B7eIyr0Vk-A~|1+Xdk7nvdZ;-NZ4nBh55D71jGwqnSOW%A~-7@FkHAN4|2$? zbi_@~9^*vpo}e-sQ8YLzcEl9AnN5Q)#Ih5u>|Sa$X<@#_Kev6Hqa2 44qtG6*)buG=LIko%;Acq#_xGWzlgy|M*;*>q^dnFxogS$ignY1j<=JxzwSN14ms=6U3Dav8B<>ObMldo(_pZF zWa#G;<7Y+PJ6uC=mq1pneYmkjpE%3_&i$G9R_o|EQ7O}iAK95cbe%qu93Hh)5un5I zYQv|;O hA1 z 53{L7qs!IO%BSCh%T5ovubfwT8vo`|EQ0^y z+S;)8!!z+dmfdLDuHcb5*hZOf5*%54p&I_%M(R>>-uoJgx*ufrn #iMG|*8OoK_Bz8tH(?CR0&A?7{~(@j4QdOq~;fCT+~rn;{K9h<{HZn<1` zXl4uhtt2MrZpkVrUrjVBI`m@en2VS9lELUPqxP#NSOOG>6*nlx1mwuAXQ`UuozG zq;dx?l~T2^Y1Pv=ed#*(`AN$v-uof**nR08O(~i_zUfn>Y6}QWOJHlO97HWg&firR zAEn!YwK$Ujg>Dj_wxVI8CnLXps7GYm;bYbqe_w>hKdC9}3n;g=6I=^5(S~cdq|xbV zM7vwB2hesotKk7RRw^&qi?eXj={vVeguSQos>RE}tMX|d{?haYEV-XlI{aEx!gSZ* z*2duTuDd$S#YkFdw0Q9-Ln={Wq5J<+nM|-Am}xc`3)c=>w5i&ulSW!5|A=2q77+#- zGB6R@_qt}MyS^qT*b(nwjc%XX&OTOBpevx`T$2$B4M#GH^;m2} PeUMCaR&`WZJv#nTcLI;5*}k7!8vySxmS*v2qjhmnlbLE}BfiB96sI=q+s$OERx$ zMMK9xD$cD8ck{~{Tu)TT4>P6w=*tDOxWz30A>Tg}I;;Liuh6u0|9zFnS(d@ByR2F} zs5lJ`%|@sh*A6IgU|i7)EqmD=jc<7_EUyR9*D=(vi98&i0N%L097s>n4}94ac{=Rx z;xiC^R}|P^n6+=VeMwVkz(wJGy0hh4*zSMAwl5R`B-9rg0mR9OU6jcv*om8{it%GN z5$ho8vu}Jozr7&77Q|+ly >(Xo9&R~rp4*99l)?AmwlzKIK6y|h)iN9 zu`LIt;aPSnci0}hLVF*E`kL{?Eg w&h>*79_}q0#=K6TO|DoGSLtjKmSJa;@zFkueOzNk9tAcEyid zHHuu;s^XXN%uDJQ9+=5(B{)QFCW39O8WT&o7)nTWCwL6{RC=p!lFyF0$R^LreB)P0~-J&3XyOL z0-R49(k#x%RpX|3{Sr8OVT!?7PT3=c`RTPiwa3D-U!2+{099Bh6oPRFKf5<(<3jlJ zTQfCI07k;b3M_kj4e4ofu`>HD`AjJx;#8TIW5_c5bR1i(n@vldRm$D619yLEYMAO| zifMWz*$k|F%?7``em?>omssw2HVKsF0DznE#&*dgKS{9AR4)|UK0J1>Yqz =#7j$&Et_?|Y5rH{LEcd{VozOKr;x-K~NC-9N5?P9&1^yuSL7P^CTJE>i+ zv*;kGp%@LGC>#u2loRqB;#g_9#1Gd&V1)<-wqUmO?_p4jM)d}@u!wtS>RPjkAnys) zspFuOE248#bVx@zDGl>;swNMirVw&jt~7sz7wK_;S5qX;7cLT|uSN?4E2rq@*1~Xc z20Z@}PulXG5!+CbGMmmrX7R0BHZ`n>0PF0&9C{zBJ~Y8U-@>&%u@40hfSGn`AJqcN zHh0w{D|0AVw0@jsj~?Y^M{FK(M!7i*jvjJEkbt^9nSzZNkla(oLq6(Kw|2q29o(We zY+f`An@HPsdF1^@g(` 2SZ zO9$s+gU$ B; zXCxdSZqkAPls7N!H2b85UlXkMv!9~HKV17ZS1eB$E-8R-?T)GMeTze&s{f|Q!Fckp zM<_opu}Je)@X&s^%a(mqaDBd6+etJV{21VEH yWp>v~IhddkH0f5EuFn+h)5yW!uP~0D?MIO`pYgEb8aEX~O$xl+ zt^yZ3^zS!c)x>#pL9yJr)w~leu?A#U!53$PK|n+{Se)@3hJ@twMO!Q9-duf9AhnzN zRhA2 =G)k57)6`mbY6;>4K#C?1iuKWaDSn6U7`k^h+HlCbQZgP>|d z^AtW$t)#)erIY7DEFS&vXuzj{fsuw)Lc%RnQR(=!5()9Z+a*V4_fNyFpTA Tm-AsRqDRmSMdiC)TU3y%t{rNtx%T|QE z+n0J=dK(%yr8vn%Kn~om=4{W-Iv3(~UJP~{n#*7lW5kn9NHV911qoILk+%-xQT`3D zcVfGoTbx||mn2k1`^TpoMUQa{51}i?4c^ ;^w*no`lmOxcZ zSS#LMBYNm|szq_TA{{4(cBhSiw%JVGM6~U$_osP6K}w7!=RPtHovn7oTS4MzKEe3t z&ypxb L^Z&rv~XY{*?q)>6##A?zuSO4?U&=U*dJ3hWY!J(ddI{a z*P%NOA!_`FlR+w;ijMd(Xzl^%4>ZVfZd=3=0vF7ef3T{>FkZW1^d*t6W#5D-HD>T5 zH1xY4lZL8bKS|snj0fAUAs-AX*u#@M-`Mk_XZ{pyKq=$5WngVi_p9FM=}_6K&QcNE z1&EVBW9=l7pz>~^a;Jchkf5?KWpX=ZqH^`U=NTD3w-%=k2iVVP0#x})7cIshuCR&j z{HXf<0jaBaRpdsmB2d+t6|jcPNx)6Q* k!m5)L}u_XDi%!tIsg zLxM|B*3^W5V|JyKEenE30}PG;4}QjaXWVoeDptDu#gTTKi#7w7lB&Xf7@dq09VbkT zVoV>{unAfTobhML!(#S-AO@4#i+zvs1#g}W<}`TMamk~lB!_3(h)dlyme<`#; XSRtolDk0Bh;sY-4O|KO3h|5IW zKRj{2_E1dB!2wQu(Igo5w9daqc9=Q&^55;DS8O5z!e6@Sbc7l|QQX<-$iKL=Zg?s;cE}7|gZGP3h4Z|#is3V`@bGH9 zSrn#~(j_+X7!~rO+3Rv6p9p3 ;8%qRcaOBrB@1 9YK*FXtOW~*s0%U+5%c;34`?%F(h&&pj7n?z${6kK1|KM}Z7 z0Q1{8)jp+0=IQB6qly_aONI~9o)7P=RtEB$_33*mjc(j(hJ2CVnf2m3S(u5aW Vd^+;IGBJJ&8k?4kaNvSCnDoqhff}1UqgH-I4{E!kB9P3A6MV+u`gs;b`EJB zeMsN?TvhX5?40gDz@>{>e`GM5Z3fsUcXWHj6N%56>4_33 ?t~qfX3mlij zLOvaw6y~9BJh(*aBgB#HiI19)+kRhkkWRnv6Bor&Z%@=yrGUN63(4lZ0DhTWa+<27 z1i5#kU#a1#e6hs%zO+~=5hfus875{Vj(JAAY;oYV54z@lUnp$P?ZS(Ol6mxOquTK* zD*A;{L6}}!&d^S>K%nbYLl$UOBGUJISu9qgE=|J`Jn}^!`#b_Cu=}7yjk(5$S9`I2 z;`KU1J1p11Z|K?ek*CMvnm>sr-}KiYV2DJr5nS;3UNvf&F=T?Wx)DR33HE3C=7(QC zuE3#pe>_=93TVs(imIhn8mzR`;U3DOoGfxiQ@q||9UZj;A|##qHx3cR*FKHRqLpX* zoX^g8@~P#)SX7Z-{BlCAE<}mwb#0X|o8)$)&ImzDtclnKo+oE6;|!yrlHSg}CF&v9 z!39T2`){_U6f5mmqA#V==Kxl4^Mc*fwB-8S?T#)9Q*8SilTyG0OEn~^Ylol4A44u} z{%74mS2U4BL@sXWu{Zk<#)=wS zbQ5&P3!bz4luM?0iHdJEiFRj9KRT$@>h_Iu+Z6i8T{>Dq7Zwg#EEm}~$;xqo77fN^ zXG{9{mr<$LJS}PNTumP4`#)Ph$}Kjwt?zL)+1D {`1*EC$Al#{;MxNgJ4>>_b$&1P;2<@E;p~#4`rl-uVnE7gkL%N@}jQ3n5~z zw%_)_&lPj{wTaMOgBq3g7qrnhyFsR4sLqZ6C;PhKZ3EqgI2&o;DrcY>`up0pKJgCr zxOHlUZt3CE zomWRB>? z@r#tSWA99;3k>Y^V@%_P=BPmiyb8*3f6Y+1;qo% zVT_UE8XA>`55aCz33)me90POJZ)-k|_E9C&wwj$%CGS~n-V-qb*2ymy(= ek{CYgX3opQ#UB4E7?R3Ecaw z{mQY$r)1wWLvlPbcq^ gh+4Lrxrku-~YHbLJX-EhyXYEUd+U>rJQ@ zh{WvT`m@5f+cvh(*dZwL#mv$8%M^lUQ>SHPGW{z !dnmf)MeiVjb)piimKlyC(PDyrmwX`L2Bn?=eo|6!O#X zaE5J~oPIy)KDG}Ti{b)Bd%0O4nU6QbPGnozP{Tk;B(2KHTS#T0b+l<$s WPLGMSyL@gO>oLNqClCV@Ah)g zZ_;s+^M44#G$C={)b6R2*7iV3!6S)Jbx};gZFRjTb!Rd9ko5Gr#UkqW#1PaCfJfmZ ztjyMrb=$T5p*hseiV*sEag_UfK-S!E{)W8GmvRqxU!3+iorrvYN5Di+2GlqI+x$W? z7gI{y`qTjoGo)O{w$5 6|sw(4u$%O|! zEmlxDi3f!lwn74(I$L8Qc?5r$7(;o}zaYp)%KCQ6OvMu%!E!E)KtyL-6N ;GvtgeT2DBLCa#wNC8NQZNUosNKz?$KW&61zY99SF4d&i z;@7*EO1!C>ra4zjsIb`VqS=JSA^fvMQRt3Xo#*9~y0lil3{{HE{S-Wud$ce6x_mC6 zOk|s>@h+nA^`R+*eo_fMWyBYlD@LK$PL{Iv!x-xiNgAyQ1ew)&i!ZynX7J>RYo!^4 zPrQ6`K<1KPZi3VwJ93Cs^JHzc8*a6LjZ~+f`!n{Q&hkd|r$d5#k8W?hn!I#9DFbwz z0;evyca?+y=dJ^%$NL5i;|w#u4hjcY`zGY{%3$53XOIRL8lh=N0Ox5n^`<#5b&~*M zJ8hLDCi@ahZqNXCSG|VRHOL0bV 6+2{IcZ+~(y5QNj5!xwV< z7IFN6zFwWPrP8n-9BB-jX@JE4|N7 0`nj+Q72lZat@&lI6P{GbJ?5xH}wzz6mKaycuY-SzUpp zgrr8t^tASO6`d$adx{k?^gv2<+U{mjb Ilwk}F}?RAw~k|`edWIO_gk;QQx zG3bJ1n+^q1YFBFnxMPl$YMu?fxzj6Bq15v{%Q!DI&_IUA(dccLQQR?x2j&J@Z@{eK z{gsSTr{9+tqpVm1eg2i6deRmaBT-pTnLwskE?1LjqF{s3&E^!;ghcE1bm-I}%vURN z8_$2YuR3#j$v-2w5K|ocw$atQuH^^~Rz={%3+nK^HtjWJ>P*%^<|QP->&jY*@2;4x zYJ1wr-Ev4f-vT0M3q2vjc`YK)sG|Qp=l_f5hVCiL0B3A@Q3}$n{+yEIHKTDhebu#t z#rfT@21Wx_lKx8jc*ty`+Q9Ggr}FWNeMjYA+YdF1jXZ{lE+s5!;hpC3jCs>hLgZV+ z1A1x9qg7&Q%tSmjRDQW9I=L_a#r^2sG3t>MBpV40g^0ziai}Ke=OuRUsaW$2LXm5I zMQe{@1SavY&(ZIEzB+(Xk0f7MYJw|=NpBCL&u6Hs7gW?GmM}5bQ;R0yi5kk3a?8~` zDbfw>Fm$^kyD0|$k=48~A1w_7IZ%-@YSAkq%Xd-tdJJzdvUGb53t`}($X*;F(y5BH zz{RaLz;QG8mpVA*cXR7}vS|PMM>=mrE=I%CH@YZ4XW-ZOxK<~Wl_pD;*uSkaD~ACZ zgIWSY2~{P=hx(6WqOXT#ak1{Yp?0KyMy+>AI+Vm2Qp{T%uSAm?bZy{w%}jWlYCAr| z8Nl)QNMdcmtb6mR s z-8kd!#i&!d#Et83@o7|j1%XsTe#_E7X`;ja$h>26&*h6 Y;$~YIsT`uKQkMx;i2{9tb5^@qS z^gJH^v~|?+Riyz8uxhr(#s2r;`TtVhfBDbG|N1f;h8_@adigyhVsPNrnib#SM7R4R z0c#&r+!~a?O}V3wHB7a|VH<){I}3 o2KH)8vZpX6JN{dlQd~p=+s|mET!Szws^V zWu`ik8Pqb>DKjKRKdbFBIHxCk=#$jp!QGS;fehX5u|%-?9?GAA!F2s-)B|;#4huOZ zOj)9s75LfWK4}y(-$;iQwKa%i601CFKKzU$U&)MvG1SM_((-0sR7~U zzposC_X=d$ ;w_XY$!|#((QCFMVQ2jnzCE?ZeEB? zK`t74>xZ~gkHnLz8*iuL@SNvC@y~>9@IN#xFB5s(erh=V$B(#V9$`b+`@t*L$b_nd z-xkBM X|NfdoRJVo)#56i%XfYE_affkxP^NQVF? 6bRW5e8U5FCkdTVmy;hzdY< zwXpozBfE7F+uPCCZ#x`Y)>dCsGlfwXZ4fH6coC5W$QlK>0qX!U5CN9QBW6dr>N*}x z%`rVb!DOgX!QkX9$jv>D%_h-?$5B_);4AE-_$PAX{7+8B4;!-uu$$r$jA;d{q(@J= zMRlx#=y}(h8MO?BavhnGY}uXNyW-`AhGng#!|Zv8_(tJ}GD19;$`6@#_L*Q?y~ajL z&;= {ib%(J)BXkW6ohA+q5B_%F= b|{@RN6TH$>U>=Qk}I5rq>tzu!%4^RYqpgPhPzwovr4tq;Zv zLmpU4P~QiUt{8nvbTe6LbAP)g`a7VRg}@IwHaq-9bAuDJs-yU-2Z|g@U@R1n_he4z zd|I?KI=%(7L9_KthsQ+WD>8Nly&yH`@kQkVSd$~^&vY8#KJAV1j{GuyfcB)QyGbng zbRx*u+MVA^3p%k)Gw_d3DD`y~2#rt9nJL}cr7K2Y$q)9h(qJPy|Khy(CBU4aaJ!ZA z9OL9w=;^zTOfQ9U|4udk@{4RSk^M87{_Eq!)W6NuEF}N?7*c(Gp359qOLhj_6 #9hQtTqFBtKHYhf&;RIi{BaZP8DP9Kw7tZ&}Q2Ogz#{Ofho z5YKRrPPT;U+mML1HO|9zoik|Lz_i&uQ5M!l|F)O52 r)UoaugcU=Yp-uH}?`<%f}e)aV&J;afP?Lo8qs#7NuAupQn45M6IPF;^v*{ z|CFn6iykuwer}rjXvDU_ujcgBPhB~ge8`+x)dZ}=WEIWokF?0FRV!-yHuApb@g~mb zd3(;$KSx1e_f&8(yo0wYfS(d@=cpHKD1-Rb1AV*ed8p1E`ZS8jGa;^R% #6qj&`?5dMFOj-iOJx`5d;EN>JK%6LBt&Ho3EHT@%Zp*9 z@nE$%Wf6M6MmOHRW5!^$vUKO?$y^LRL$S>z9?=>&%<9F@w8u&tP)sG$THf#LPY*Py zOf3B?ZS%$V?j5V1j{4{?+oE^*MI-Nn7=k;rn7{-)4w8B=0IJL!V7f_;lm^I!HXK zCwm`?#(vEDUCtAt1v_v2`NY*M=+xLwO!v*++=XAO1N`%CA{rG9$qjuIuIb{5Q1VW~ zdYri1nlCXrf>5I$zf#lfmZUl%gtSURE0Iu+Kkt| tf^cb@kzdW5ZJXYb? za3*uDoKCL2-mZNC6A#-S#Si{2WFi1}Cu&to8^l~SRqNg*!b12@M)a>>CN zuM7t+-d#K(axLth2)nx_A8Ln6ec@~=@L>C1Ui__6R}}`>aAjha|7 )snMnG_jE(zFoY=lNyEHb_(C(8gSMkxq&qJzg{Zd1pM z;=}=i+TrCfj&fZU+fGnbxtpM{Z;DPY8 3_u^A$8{Cgb*D JU6Q#hRXuUohBsd!L_`axbB2SqVU&FUp zZme%yzBY=sgd<-zO@+Lgo(|kM>)Hu188TP4m3*QIa@f|vJd@pLZz4c571xzCxW VS)KE1_BEj)%_X^( z$MMcw+II!^l}Pvbuc=*OlLWnN<~V{x&ET|=FL}pAo|`Cur-rJoH!?HJ^I@NBRZ4@O zGbT_kW)jG$#`_n5JGeY7xltBZ(blKUn<_US92_As1?&k-#-DQ?=~$px0*^j`5APD< z9FT+Wrw{10SceB9h!NWnpXi5UHOwvihT46n{)wTu&+al(G{i rxYu6IACrP<4?=I)0Q2X z(jW9*3Z!0&WMrv7_YlOo@PUFpjg^jX+%BA)l-POxE@f36$TCMAo0lP~>ub@4=+Cu2 z1$} baTTt@j@0Orvs4kx1+6h7zO#2+Nd!x|Eu;MP=Gzsc>njln8HRqg4+SAaJ=M z&);;JGw#*A;a_f{^Z&0L@D2(c_R!Ln0$y#y?9mKQwmgCyku&?my6HPTtlyH?m$9B~ zm6SpE3q_Z99vDR5l@2W?27-C}!?*rUZV#C(csld?QFzzK9U_>J7Na =?2* p;EOxJjjTDtfVWb_qE zi`^fr1SnFAoB_XJ3MJ^M^I%6>DvC8BS3EGYfmgCx{xq#laC z7tLjS8&%XB}FS{DN*?QtJb7Y zGC{WFJSA@|DaJNbl(g5_R}n+ronsNAS#iTlUDN4}rr&%brrtn;LKO8Ecv)928G%0L z5b%F2orPDF;nu|!X%HB?VTNv`8-bx4k(QS3M!JXY?vn17X6QzwySt^sZ|-;RpYX1A z)_cx#_CEVJ;;^-Pwy#g2mI%=@5HL7A@#%82;p}Z+LsBNE%UvN>=M5b`(4h8CmFZW@ zUx6j$47>;lk48q;HZ$k8UWFgvt-nh6fL(ZZR1`mA%-v)4k^%epQ?QHUB=a<{2DZSa zo|X6a1%0@?#ikOhdnZY87c~&fZ_p~Rx8U$a5;Ut)&jtM>w%B }i-p5Xoe??isVc6aib_!8o2&S0S|QAQ&z4el})O+y9sA?MN^+rHq@y*?JuE|XL^ za?GB-G`zVGevXJLm-35e#(ONf-roJk#EQaLU|-vICJtjQRXOMbi}s6NUtNboKH+Nc z`gWfvv(&6xF-X*n7q{@&SWJ7wN_^3-1UXyHLryq%n@H9%D5%2_6xvDa`#aAmq!=&| z{(b6YTLvb|DrYxy{=4vb^L_N0nn%h)$i4B5pMWft>KrVaDacySQ~&(9!`NUrSzpC* zWQPXOPwAw4uFEe+grSHW6}cBXKorvDPcy&wdLu7#dd%(8KU8JpzFZgnY(r3rMKVhy za EJwuX3<4P?L^(O~b!?-Sq}G88(a*Kp zkcq kWyuF{gx7Sys3gVu5 zSEe2ju!X!U_bDZ%2 kHooA$ZY^O_o#cN&*O3LB_Sq? z&PZ_Ah;O`DDAm29(gs=xAz&KI@pM7M+gv~mTla8UNEAKL%Q0jJ68;S@lDnGO@RjiU z>f9+kqBUgmSW?rWGsC-Rb9CsuH4z(QVrTST?)qy#o`L_|9+)c%zV1~8?OeP4-O&h$ zORKQd_9JvJ+~@6)^lECO0+GZFGVOs!*7*Spkp@HzzNwiVkksDDPzZ_O)3m7)|L~3H z6Y5ZjETEQ;LK=aWwzFcq%RZ92k3$l~$nB}J#viBe`iS@e5DMxoCUXkGLXS0oH$O<; z$|(*aY@`6o+hei4 F9+XtotVNP3vDSJfS;ds9zt2xJxTDIkpPcJ@2Y!Svd8c5deT>ViECT31Z<( zOU3jPb4L35BI>Ak=sKXT?;H<4?}zc!AT)`Bb{2WyK+jL35re6Fx=y{J!*z%{@wxL+ zqNhRu>+y!)9e)8}%<%#9oR@*Z{}hqs|B8qnH=^Ew(ilCI&tgx)6pIj7ijNsrT&z(t z#Z28*cIE)`wSeXg-577oB;TE*jsTz`W%hVAXEhjuTk|bca