Codename One now exposes a portable semantics tree to VoiceOver, TalkBack, UI Automation, AT-SPI, Java accessibility, and web ARIA.'
+series: ["release-2026-07-17"]
+---
+
+
+
+Accessibility has become personal for me. I am getting older, and large type is no longer an abstract preference somebody else needs. It is how I read a phone comfortably.
+
+I worked with accessibility experts at Sun Microsystems and learned how deep the problem goes. A label is the easy part. Real accessibility needs roles, values, ranges, actions, traversal order, live announcements, collections, focus, platform conventions, and a way to test all of it. That complexity is why full Codename One accessibility support sat dormant for a decade.
+
+We eventually added `setAccessibilityText()`. It was useful, but it was the poor man's version. [PR #5363](https://github.com/codenameone/CodenameOne/pull/5363) replaces that single-label model with a portable semantics tree we can be proud of.
+
+## Lightweight UI needs a second tree
+
+Codename One paints lightweight components into its own native surface. VoiceOver cannot inspect a `Button` as a UIKit button because there is no UIKit button there. TalkBack cannot walk an Android `View` hierarchy because most of the painted controls are not Android views.
+
+The new accessibility manager builds an immutable virtual tree beside the visual component tree. Standard controls infer their semantics. Custom controls can replace or extend them. Each port exposes that virtual tree through the platform accessibility API.
+
+{{< mermaid >}}
+flowchart TD
+ A["Codename One component tree"] --> B["Portable semantics tree"]
+ B --> C["VoiceOver
A running Codename One simulator or JavaSE tool can expose its semantic UI and application tools to coding agents over MCP.'
+series: ["release-2026-07-17"]
+---
+
+
+
+[Yesterday's accessibility work](/blog/accessibility-semantics/) created an immutable tree that describes what is on screen, what each item means, and which actions it supports. VoiceOver and TalkBack consume that tree for people.
+
+[PR #5377](https://github.com/codenameone/CodenameOne/pull/5377) lets an agent consume it too.
+
+The JavaSE port can expose a running simulator or Codename One desktop tool as a local [Model Context Protocol](https://modelcontextprotocol.io/) server. Codex, Claude Code, Claude Desktop, opencode, or another MCP host can inspect the current form, find a field by label, enter text, activate a button, and call tools published by the application.
+
+## The agent reads meaning, not coordinates
+
+Screenshot automation sees colored rectangles and guesses where to click. MCP exposes the same resolved semantics that accessibility technology receives:
+
+```json
+{
+ "id": "profile-save",
+ "role": "button",
+ "label": "Save",
+ "enabled": true,
+ "actions": ["activate"]
+}
+```
+
+The agent can ask for `ui_snapshot`, find `profile-save`, then invoke `activate`. It does not need to assume the button stayed at yesterday's x and y coordinates.
+
+{{< mermaid >}}
+sequenceDiagram
+ participant Agent as MCP host
+ participant Server as Codename One MCP server
+ participant Tree as Accessibility snapshot
+ participant EDT as Codename One EDT
+ Agent->>Server: ui_snapshot
+ Server->>Tree: build immutable semantics tree
+ Tree-->>Agent: roles, labels, values, actions
+ Agent->>Server: ui_set_text(profile-name, "Ada")
+ Server->>EDT: dispatch action
+ EDT-->>Server: success + fresh snapshot
+ Server-->>Agent: updated UI state
+{{< /mermaid >}}
+
+The built-in tools are small on purpose:
+
+| Tool | Purpose |
+|---|---|
+| `ui_snapshot` | Return the current semantic UI tree as JSON |
+| `ui_find` | Find nodes by identifier, label, or screen coordinate |
+| `ui_perform_action` | Run a semantic action with an optional argument |
+| `ui_activate` | Activate a node |
+| `ui_set_text` | Set editable text through the UI action model |
+
+Every action runs on the Codename One event dispatch thread. The agent never mutates the live component tree from the MCP transport thread. Each action returns a fresh snapshot so the next decision uses current state.
+
+## Starting a server is explicit
+
+There is no build hint that quietly exposes an application. Calling the API is the switch:
+
+```java
+MCP.startSocketServer(8765);
+```
+
+The socket mode is useful for a running simulator session a person can watch. A tool launched directly by an MCP host can use standard input and output instead:
+
+```java
+MCP.startStdioServer();
+```
+
+The JavaSE port owns the stdio transport because process standard input is not available on every Codename One target. While the transport is active, normal application logging is redirected away from standard output so it cannot corrupt the newline-delimited JSON-RPC stream.
+
+## Desktop tools get a menu without application code
+
+The JavaSE port adds an MCP menu to the simulator and Codename One desktop tools, including the new Settings editor. The menu can expose the running tool, detect installed MCP hosts, install or remove the local host registration, and control debug logging.
+
+Registration uses a small bridge. Most local MCP hosts launch servers over stdio. The visible Codename One tool is already running and listens on a loopback socket. `MCPStdioLauncher` relays between the host's stdio connection and that socket.
+
+```text
+Coding agent <-- stdio --> MCPStdioLauncher <-- loopback --> running tool
+```
+
+This is how an agent can drive the actual Certificate Wizard or Settings window in front of you instead of launching a hidden copy with different state.
+
+## Your app can publish domain tools
+
+UI actions are useful, but some operations should not be simulated as clicks. An application can expose a typed `Tool` with a JSON schema and handler:
+
+```java
+MCP.addTool(new Tool(
+ "current_user",
+ "Returns the signed in user",
+ "{\"type\":\"object\",\"properties\":{}}",
+ argumentsJson -> "{\"name\":\"" + signedInUser + "\"}"
+));
+```
+
+The server merges application tools with the built-in UI tools. Codename One already uses the same `com.codename1.ai.Tool` contract for model tool calls inside an app, so one definition can serve an in-app model and an external MCP host.
+
+Treat these tools as a privileged API. Do not publish a tool that returns signing passwords, API tokens, or unrestricted file contents because the handler happens to be local. The current server is local, but the agent still receives whatever the tool returns.
+
+## Screenshots remain available
+
+The semantic tree means a vision model does not need a screenshot for routine navigation. Some UI facts remain visual, such as a chart shape or a rendering defect. The server therefore exposes the current form as an optional PNG resource too.
+
+The two sources complement each other. The tree says “this is an enabled Save button with an activate action.” The PNG says “the button overlaps the footer.” A screenshot alone cannot reliably provide the first fact. A semantic tree cannot provide the second.
+
+## The scope is JavaSE today
+
+This release supports the JavaSE port, which covers the simulator and JavaSE-hosted desktop tools. It does not make every packaged Codename One application an MCP server. Packaged executable jars, cloud desktop builds, mobile targets, the JavaScript port, and the native macOS, Linux, and Windows ports do not yet have the launcher and transport plumbing.
+
+If you need MCP in one of those native targets, let us know which port and deployment model you need. The protocol engine and semantic tools are portable. The missing work is the transport, startup, registration, and security boundary for that target.
+
+The PR includes 13 protocol and UI-driving tests plus an end-to-end run against the reference MCP Inspector client. It also builds the core into an iOS application to verify that unused MCP code is pruned and that referenced core classes stay within the ParparVM API surface.
+
+Tomorrow's post covers another machine-readable view of Codename One. The new port status page turns the test suite into a dated support matrix instead of asking you to trust a manually maintained table.
+
+---
+
+## Discussion
+
+_Join the conversation via GitHub Discussions._
+
+{{< giscus >}}
diff --git a/docs/website/content/blog/pixel-perfect-is-a-test.md b/docs/website/content/blog/pixel-perfect-is-a-test.md
new file mode 100644
index 00000000000..0410b4d3b5a
--- /dev/null
+++ b/docs/website/content/blog/pixel-perfect-is-a-test.md
@@ -0,0 +1,208 @@
+---
+title: "Pixel Perfect Is a Test, Not a Claim"
+slug: pixel-perfect-is-a-test
+url: /blog/pixel-perfect-is-a-test/
+date: '2026-07-17'
+author: Shai Almog
+description: "Codename One now compares its iOS 26 Liquid Glass and Android Material 3 themes against native reference apps in CI. The suite measures pixels, geometry, and fixed animation frames, then prevents the UI from drifting below the recorded baseline."
+feed_html: '
Codename One Settings is now a focused Maven-distributed desktop tool for project identity, build hints, themes, and extensions.'
+series: ["release-2026-07-17"]
+---
+
+
+
+Codename One Settings used to be a screen inside the old GUI Builder jar. It edited project properties, managed accounts, opened signing workflows, monitored builds, installed extensions, and accumulated every job that did not have a better home.
+
+[PR #5359](https://github.com/codenameone/CodenameOne/pull/5359) replaces it with a standalone Codename One desktop application. It does fewer things, which is the point.
+
+## One command, one project
+
+Run the new tool from a Codename One Maven project:
+
+```bash
+mvn cn1:settings
+```
+
+The Maven plugin resolves the `com.codenameone:codenameone-settings` artifact, launches it against the current project, and writes changes back to that project's `codenameone_settings.properties` and Maven configuration. The tool has its own release lifecycle instead of borrowing the GUI Builder's jar and version.
+
+{{< mermaid >}}
+flowchart LR
+ A["Your Maven project"] -->|"mvn cn1:settings"| B["Codename One Maven plugin"]
+ B --> C["codenameone-settings artifact"]
+ C --> D["Basic project settings"]
+ C --> E["Build hints"]
+ C --> F["Extensions and themes"]
+ D --> G["Project files"]
+ E --> G
+ F --> G
+{{< /mermaid >}}
+
+This is the new Basic screen. It keeps the properties that belong to the source project: display name, package name, version, main class, icon, and related build choices.
+
+
+
+## Build hints are searchable project data
+
+Build hints used to feel like an untyped text file with a dialog in front of it. The new editor preserves direct key-value control, but adds descriptions, known value types, filtering, and a focused editing flow.
+
+
+
+Nothing prevents you from editing the property file by hand. The Settings tool is useful when you do not remember whether the current spelling is `ios.themeMode`, `and.themeMode`, or a platform-specific signing key. It also keeps project values visible without mixing them with account state from the cloud.
+
+For example, selecting the modern native themes still produces ordinary project settings:
+
+```properties
+nativeTheme=modern
+ios.themeMode=modern
+and.themeMode=modern
+```
+
+The file remains the source of truth. The UI is an editor, not a second configuration system.
+
+## Extensions keep compatibility warnings
+
+The Extensions screen browses the live catalog and installs or removes both Maven dependencies and legacy cn1lib packages. It also retains bundled compatibility metadata when the live catalog omits it. That matters for older entries such as Admob Fullscreen Ads, where installing an obsolete library without a warning is worse than showing stale-looking metadata.
+
+
+
+The implementation includes install and uninstall tests for both dependency models. It also handles light and dark appearance, keyboard focus, text caret behavior, native menus, the application icon, and a real desktop About dialog. The tool itself is built with Codename One, which gives us a useful test of the JavaSE desktop path every time we edit it.
+
+## What moved out
+
+The smaller scope is easier to understand:
+
+| Job | Where it lives now |
+|---|---|
+| Project name, version, package, icon | Codename One Settings |
+| Build hints and themes | Codename One Settings |
+| Extensions | Codename One Settings |
+| Apple and Android signing assets | [Certificate Wizard](/blog/standalone-certificate-wizard/) |
+| Account login and security | [Account Security](https://cloud.codenameone.com/account/security) |
+| Cloud build monitoring | Codename One website |
+
+Accounts do not belong inside a project-property editor. Certificates have enough platform rules to justify their own tool. Build monitoring belongs next to the builds. Removing those sections leaves Settings with one durable responsibility: edit the project you launched it from.
+
+## The migration cost
+
+The new editor is distributed as a separate Maven artifact and its application is built on Java 17. The release workflow now has to publish that reactor after the core release and keep its versions aligned with the Maven plugin. That is more release plumbing than embedding one more screen in `guibuilder.jar`.
+
+The payoff is separation. We can change Settings without shipping a GUI Builder update, and the GUI Builder no longer carries account, certificate, catalog, and project-editor code that it does not own.
+
+The old settings UI is gone from `cn1:settings`. If your documentation or script tells users to open the Control Center for project properties, change it to the command above. Signing instructions should point to `mvn cn1:certificatewizard` instead.
+
+Tomorrow's post covers the opposite kind of extraction. Widgets and Live Activities live outside your app's window, but one declarative Java model now updates them across iOS, Android, Windows, Linux, and the simulator.
+
+---
+
+## Discussion
+
+_Join the conversation via GitHub Discussions._
+
+{{< giscus >}}
diff --git a/docs/website/content/blog/tested-port-support.md b/docs/website/content/blog/tested-port-support.md
new file mode 100644
index 00000000000..052aefde15c
--- /dev/null
+++ b/docs/website/content/blog/tested-port-support.md
@@ -0,0 +1,99 @@
+---
+title: "Port Support You Can Trace Back to a Green Test"
+slug: tested-port-support
+url: /blog/tested-port-support/
+date: '2026-07-22'
+author: Shai Almog
+description: "The Codename One port status page maps 49 feature groups across 10 targets to current conformance reports, environment details, skip explanations, and dated CI evidence instead of a manually maintained support table."
+feed_html: '
The Codename One port status page maps 49 feature groups across 10 targets to dated CI evidence and explicit skip explanations.'
+series: ["release-2026-07-17"]
+---
+
+
+
+“Supported on iOS, Android, desktop, and web” sounds useful until you need one method on one target. Does WebSocket work on watchOS? Which Linux architectures do we build? Was the JavaScript media test green this week, or did somebody update a table six months ago and forget it?
+
+[PR #5389](https://github.com/codenameone/CodenameOne/pull/5389) turns those questions into the [Codename One Port Status page](/port-status/). It maps 49 user-facing feature groups across 10 portability targets to current conformance results, environment data, skip reasons, and the date of the run.
+
+## The table is an output, not an opinion
+
+The HelloCodenameOne suite already exercises APIs and screenshot goldens on Android, iOS, tvOS, watchOS, JavaScript, native Linux, native Windows, and Mac Catalyst. The missing part was a contract that translated thousands of test cases into a stable public vocabulary.
+
+The new conformance mapping connects registered tests and screenshots to rows such as networking, media, databases, maps, notifications, input, accessibility, and 3D. CI normalizes each port's result into the same report format. A publishing workflow writes the latest reports to a data-only branch. The website consumes those reports and renders the matrix.
+
+{{< mermaid >}}
+flowchart LR
+ A["Port CI jobs"] --> B["HelloCodenameOne tests"]
+ B --> C["Normalized conformance report"]
+ D["Feature-to-test contract"] --> E["49 public feature rows"]
+ C --> F["Data-only status branch"]
+ E --> F
+ F --> G["/port-status/"]
+ G --> H["490 target-feature cells"]
+ G --> I["Environment and run date"]
+ G --> J["Skip and scope explanations"]
+{{< /mermaid >}}
+
+The page currently renders 490 feature cells. Ten targets appear because architectures and renderer variants matter. iOS Metal and legacy OpenGL are separate evidence paths. Windows x64 and ARM64 are separate. Linux x64 and ARM64 are separate.
+
+JavaSE is deliberately excluded from the public portability matrix. It is the simulator and development runtime, not one of the deployed native targets the table is meant to prove.
+
+## A green cell has a chain of evidence
+
+Each status report records the commit, environment, registered tests, outcome, duration, and skipped cases. The website data also records the runtime used for browser and platform evidence. For example, the current browser environment file names the Chromium, Firefox, and WebKit engine versions rather than saying “modern browsers.”
+
+The contract itself is validated in CI:
+
+```bash
+python3 scripts/hellocodenameone/conformance/port_status.py validate
+python3 -m unittest -v \
+ scripts/hellocodenameone/conformance/test_port_status.py
+node scripts/website/validate_port_status.mjs
+```
+
+Validation fails if a registered conformance test or screenshot golden is orphaned from the public mapping, if the mapping points to a test that no longer exists, or if the published reports do not satisfy the schema. That makes the page part of the test system instead of a second table someone has to remember to edit.
+
+## Skipped does not always mean unsupported
+
+Some tests cannot run meaningfully on a target even when the API works. A device-only test may need hardware. A store API may require credentials. A screenshot can be irrelevant on watchOS because the phone-sized fixture is cropped before it tests the intended behavior.
+
+The status page keeps skips visible and attaches a reason. It does not silently convert every skip to “unsupported,” and it does not turn every skip into a green claim either. This distinction is important when a feature is supported but its current CI proof covers only part of the behavior.
+
+The deployment section applies the same honesty to minimum versions. It separates the declared floor from the environment CI actually ran. An iOS build may compile with an iOS 14 deployment target while hosted CI runs the current Xcode 26 simulator. The page says both. A compiled floor is evidence, but it is not the same as running on an iOS 14 device.
+
+## Benchmarks use the same application
+
+The page also carries ten common workloads through each generated application: integer and long arithmetic, transcendental math, sequential and random arrays, allocation, map churn, string building, recursion, and quicksort.
+
+```text
+3 warm-up runs
+5 measured runs
+report the minimum measured time
+verify the workload checksum
+```
+
+These are absolute per-target timings, not a claim that an ARM watch should beat a desktop CPU. Their value is trend detection and a common workload inside the actual generated port application.
+
+Binary size and memory are intentionally absent. The current artifacts mix compressed Android and web packages with unpacked Apple bundles and native executables. The ports also report different memory concepts. Publishing those numbers in one comparison row would look precise while measuring different things. They will return when a dedicated release-mode fixture packages and samples every target consistently.
+
+## What a green test cannot prove
+
+A green status means the mapped tests passed in the named environment at the recorded commit. It does not prove that no application can hit a bug. It does not extend the test to OS versions, devices, drivers, or permissions that the run did not exercise.
+
+That boundary is why the page exposes details instead of collapsing everything to a marketing checkmark. You can inspect the target environment, last run, mapped coverage, and reason for an exception. If the proof is narrower than your requirement, the page should make that visible before you commit to a platform.
+
+This also changes how we review a new API. Adding the Java class is no longer enough. A feature needs a conformance test, a mapping to a public capability, and green results on the ports we claim. If a port intentionally does not implement it, that scope must be explicit.
+
+## One place to start a platform decision
+
+Use the [Port Status page](/port-status/) when you need the current deployment floors, architecture coverage, API evidence, browser engines, or common-workload results. Then follow the linked test detail for the part your application depends on.
+
+This closes the week's series: [measured native-theme fidelity](/blog/pixel-perfect-is-a-test/), a [standalone Settings tool](/blog/standalone-codename-one-settings/), [external surfaces](/blog/widgets-live-activities-dynamic-island/), [portable accessibility semantics](/blog/accessibility-semantics/), and an [MCP server built on that semantic tree](/blog/codename-one-mcp-server/). The common thread is not the number of features. It is turning claims into artifacts you can inspect.
+
+---
+
+## Discussion
+
+_Join the conversation via GitHub Discussions._
+
+{{< giscus >}}
diff --git a/docs/website/content/blog/widgets-live-activities-dynamic-island.md b/docs/website/content/blog/widgets-live-activities-dynamic-island.md
new file mode 100644
index 00000000000..1031c2e8f48
--- /dev/null
+++ b/docs/website/content/blog/widgets-live-activities-dynamic-island.md
@@ -0,0 +1,172 @@
+---
+title: "Widgets, Live Activities, and Dynamic Island From One Java API"
+slug: widgets-live-activities-dynamic-island
+url: /blog/widgets-live-activities-dynamic-island/
+date: '2026-07-19'
+author: Shai Almog
+description: "The new com.codename1.surfaces API describes home-screen widgets, Live Activities, Dynamic Island regions, Android ongoing notifications, and desktop widgets as data that can render while the main app is not active."
+feed_html: '
One declarative Java API now targets home-screen widgets, Live Activities, Dynamic Island, Android ongoing notifications, and desktop widgets.'
+series: ["release-2026-07-17"]
+---
+
+
+
+Widget support was one of the earliest Codename One requests. We dismissed it for years because a widget must render while the application UI is not running. A normal Codename One `Component` needs the application renderer, event dispatch thread, and live object graph. A home-screen widget gets none of those.
+
+The missing piece had been under our nose for a decade. Steve added background processes so an app could refresh data without showing its UI. That solves the update side. The rendering side becomes possible once the widget is data rather than a live component.
+
+[PR #5365](https://github.com/codenameone/CodenameOne/pull/5365) turns that observation into `com.codename1.surfaces`, one API for home-screen widgets, Live Activities, Dynamic Island, Android ongoing notifications, and desktop floating widgets.
+
+## The dead-process rule
+
+An external surface is a piece of application state that the operating system can render outside the app. The app publishes a serializable layout and a timeline of state maps. The platform persists that data, then renders it with its own surface technology.
+
+You cannot attach a Java listener to a widget. There may be no Java process to invoke. You assign a string action ID instead. A tap launches the app and delivers that action after startup.
+
+{{< mermaid >}}
+flowchart LR
+ A["Codename One app or background fetch"] --> B["Surface layout + timeline state"]
+ B --> C["Canonical JSON + content-addressed PNGs"]
+ C --> D["iOS WidgetKit / ActivityKit"]
+ C --> E["Android RemoteViews / notification"]
+ C --> F["Desktop floating widget"]
+ D --> G["Tap action ID"]
+ E --> G
+ F --> G
+ G -->|"cold start if needed"| A
+{{< /mermaid >}}
+
+The simulator implements the same model. Open **Widgets > Widgets Preview** to inspect every registered kind, move through its timeline, change size and appearance, and click actions without creating a device build.
+
+
+
+## Widget kinds exist at build time
+
+iOS and Android compile widget galleries into the native application. The kinds must therefore be known during the build. Add a `surfaces.json` resource:
+
+```json
+{
+ "liveActivities": true,
+ "kinds": [
+ {
+ "id": "delivery_status",
+ "name": "Delivery",
+ "description": "Track your order",
+ "iosFamilies": ["systemSmall", "systemMedium"]
+ }
+ ]
+}
+```
+
+Mirror that declaration in `init()` so the simulator and runtime know the same kind:
+
+```java
+Surfaces.registerWidgetKind(new WidgetKind("delivery_status")
+ .setDisplayName("Delivery")
+ .setDescription("Track your order")
+ .addSupportedSize(WidgetSize.SMALL)
+ .addSupportedSize(WidgetSize.MEDIUM));
+```
+
+Referencing the surfaces package is the build gate. Apps that never use it get no WidgetKit extension, Android receiver, app group, or surface resources.
+
+## A timeline carries future state
+
+A widget publishes one layout and dated entries. Placeholders such as `${status}` resolve from each entry's state map. The operating system advances to the next entry without waking the app.
+
+```java
+long now = System.currentTimeMillis();
+long eta = now + 4 * 60000L;
+
+WidgetTimeline timeline = new WidgetTimeline()
+ .setContent(buildDeliveryLayout())
+ .addEntry(new Date(now), state("Preparing", eta, 0.1f))
+ .addEntry(new Date(now + 60000L), state("Out for delivery", eta, 0.4f))
+ .addEntry(new Date(eta), state("Delivered", eta, 1f))
+ .setReloadPolicy(WidgetTimeline.RELOAD_AT_END);
+
+Surfaces.publish("delivery_status", timeline);
+```
+
+`SurfaceDynamicText` is the useful trick here. Give it an ETA and `STYLE_TIMER_DOWN`. WidgetKit renders a timed `Text`. Android uses a `Chronometer`. The countdown changes every second with no Java wake-up.
+
+```java
+return new SurfaceColumn().setPadding(12).setSpacing(6)
+ .add(new SurfaceText("${status}")
+ .setFontSize(15)
+ .setFontWeight(SurfaceFontWeight.SEMIBOLD))
+ .add(new SurfaceDynamicText(
+ SurfaceDynamicText.STYLE_TIMER_DOWN, "eta")
+ .setFontSize(24)
+ .setColor(SurfaceColor.ACCENT))
+ .add(new SurfaceProgress(SurfaceProgress.STYLE_LINEAR)
+ .setValueState("progress"))
+ .setAction("open_order", params);
+```
+
+For longer-lived data, background fetch loads fresh state and republishes the timeline. On Android, an exhausted widget can request that fetch, throttled to once per 15 minutes per kind. iOS does not let a WidgetKit extension wake the host app whenever it wants, so iOS timelines should span the expected gap between background fetch opportunities.
+
+## Dynamic Island is another layout region
+
+A Live Activity uses the same nodes and state maps. Its descriptor adds the regions ActivityKit needs: compact leading and trailing content, minimal content, and the expanded leading, trailing, center, and bottom areas.
+
+```java
+LiveActivityDescriptor descriptor = new LiveActivityDescriptor("delivery")
+ .setContent(buildDeliveryLayout())
+ .setCompactLeading(new SurfaceImage(courierAvatar)
+ .setSize(24, 24).setCornerRadius(12))
+ .setCompactTrailing(new SurfaceDynamicText(
+ SurfaceDynamicText.STYLE_TIMER_DOWN, "eta"))
+ .setExpandedCenter(new SurfaceText("${status}"))
+ .setExpandedBottom(new SurfaceProgress(
+ SurfaceProgress.STYLE_LINEAR).setValueState("progress"));
+
+LiveActivity activity = LiveActivity.start(descriptor, initialState);
+activity.update(arrivingState);
+activity.end(deliveredState);
+```
+
+On iOS, that becomes a lock-screen Live Activity and Dynamic Island presentation. On Android, it becomes an ongoing notification. On desktop, it becomes a floating pill window.
+
+
+
+## Widgets on Linux are not a typo
+
+The same publish call reaches desktop targets. A JavaSE or native desktop build can expose kinds from a tray menu and pin them as frameless, always-on-top windows. Windows can also generate a Windows 11 Widgets Board provider when `windows.msix=true`.
+
+Linux uses GTK floating windows. Compositors with the layer-shell protocol can place them like desktop applets. GNOME Wayland does not expose that positioning contract, so it falls back to a normal floating window. Desktop widgets are process-bound in this release. They exist while the application process runs, unlike iOS and Android system widgets.
+
+The analog clock below uses `SurfaceVector`, a retained set of fill, stroke, line, arc, text, and rotation operations. Sixty timeline entries update the hand angles once per minute.
+
+
+
+## The common model has a floor
+
+The surface node catalog is deliberately smaller than the Codename One component set. Android `RemoteViews` is the constrained renderer, so it defines several compromises:
+
+| Feature | iOS | Android |
+|---|---|---|
+| Layout rows and columns | SwiftUI stacks | LinearLayout |
+| Countdown | Native timed Text | Chronometer |
+| Circular progress | Gauge | Linear fallback |
+| Relative date | Native update | Static until refresh |
+| Vector drawing | SwiftUI Canvas | Rasterized bitmap |
+| Small widget actions | Root action only | Per-node actions |
+
+Descriptors stop at eight nesting levels. JSON and image payloads should stay comfortably below 200KB. Android eventually has to send a rendered widget through a 1MB binder transaction, while the iOS extension runs with a small memory budget.
+
+The PR verified serialization, timeline ordering, image deduplication, live-activity lifecycle, cold-start action queues, and generated Swift compilation. The simulator sample ran end to end. The PR did not claim on-device verification for every platform path, and the Windows MSIX plus native Linux window paths could not be executed on the author's Mac. Those are real gaps to keep in mind for the first release.
+
+
+
+Push-driven widget updates are not in this version. The app publishes timelines, background fetch republishes them, and live activities accept app-driven updates. Server-pushed state and ActivityKit push tokens are planned on top of the same wire format.
+
+Tomorrow's post covers the parallel tree that makes lightweight Codename One components visible to VoiceOver, TalkBack, UI Automation, AT-SPI, ARIA, and, unexpectedly, AI agents.
+
+---
+
+## Discussion
+
+_Join the conversation via GitHub Discussions._
+
+{{< giscus >}}
diff --git a/docs/website/social/linkedin/2026-07-27-0300-shai-pixel-perfect-is-a-test.md b/docs/website/social/linkedin/2026-07-27-0300-shai-pixel-perfect-is-a-test.md
new file mode 100644
index 00000000000..91dcebd7d4b
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-27-0300-shai-pixel-perfect-is-a-test.md
@@ -0,0 +1,22 @@
+---
+title: "Shai: pixel perfect needs a test"
+slug: 2026-07-27-0300-shai-pixel-perfect-is-a-test
+platform: linkedin
+account: shai
+source_slug: pixel-perfect-is-a-test
+publish_at: '2026-07-27T03:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/pixel-perfect-is-a-test.jpg
+---
+
+We do not use UIKit or Material widgets for the Codename One UI. We paint the UI ourselves.
+
+That gives us control over every pixel. It also means “pixel perfect” cannot be a slogan.
+
+This week we built native iOS and Android reference apps, captured real controls, and made CI compare our themes against them. Pixels, geometry, and fixed animation frames all get separate checks. A one-way gate stops a known result from quietly getting worse.
+
+The current iOS tab bar still has the lowest score. Full-app visual review is still missing from the automated layer. I would rather publish those limits than hide them behind a 95% median.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-27-1200-codenameone-standalone-codename-one-settings.md b/docs/website/social/linkedin/2026-07-27-1200-codenameone-standalone-codename-one-settings.md
new file mode 100644
index 00000000000..479b1cb693e
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-27-1200-codenameone-standalone-codename-one-settings.md
@@ -0,0 +1,20 @@
+---
+title: "Codename One: standalone Settings tool"
+slug: 2026-07-27-1200-codenameone-standalone-codename-one-settings
+platform: linkedin
+account: codenameone
+source_slug: standalone-codename-one-settings
+publish_at: '2026-07-27T12:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/standalone-codename-one-settings.jpg
+---
+
+`mvn cn1:settings` now launches a standalone Codename One desktop tool.
+
+It edits the current project's identity, build hints, themes, and extensions. Account security moved to the website. Signing moved to the Certificate Wizard. Build monitoring stays with the cloud build console.
+
+The property files remain the source of truth. The application is a focused editor for them, distributed as its own Maven artifact instead of a screen embedded in the old GUI Builder jar.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-28-0300-codenameone-pixel-perfect-is-a-test.md b/docs/website/social/linkedin/2026-07-28-0300-codenameone-pixel-perfect-is-a-test.md
new file mode 100644
index 00000000000..d813ca14c55
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-28-0300-codenameone-pixel-perfect-is-a-test.md
@@ -0,0 +1,20 @@
+---
+title: "Codename One: native fidelity ratchet"
+slug: 2026-07-28-0300-codenameone-pixel-perfect-is-a-test
+platform: linkedin
+account: codenameone
+source_slug: pixel-perfect-is-a-test
+publish_at: '2026-07-28T03:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/pixel-perfect-is-a-test.jpg
+---
+
+Codename One now tests its iOS 26 Liquid Glass and Android Material 3 themes against native reference applications.
+
+The current baselines contain 68 iOS pairs and 54 Android pairs across light, dark, normal, pressed, selected, and disabled states. CI reports visual similarity and geometry separately. Tab and switch animations are frozen at fixed progress points so motion regressions cannot hide between the first and last frame.
+
+The gate only moves one way. A theme change can improve a recorded result or fail the build. It cannot silently lower the baseline.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-28-1200-shai-standalone-codename-one-settings.md b/docs/website/social/linkedin/2026-07-28-1200-shai-standalone-codename-one-settings.md
new file mode 100644
index 00000000000..d61cc703650
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-28-1200-shai-standalone-codename-one-settings.md
@@ -0,0 +1,20 @@
+---
+title: "Shai: why Settings got smaller"
+slug: 2026-07-28-1200-shai-standalone-codename-one-settings
+platform: linkedin
+account: shai
+source_slug: standalone-codename-one-settings
+publish_at: '2026-07-28T12:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/standalone-codename-one-settings.jpg
+---
+
+Codename One Settings had become the place where unrelated jobs accumulated.
+
+Project properties, account login, certificates, build monitoring, and extensions all lived in one old GUI Builder jar. The rewrite is smaller on purpose.
+
+The standalone tool owns project configuration. The Certificate Wizard owns signing. The website owns accounts and cloud builds. That costs us another Maven artifact and another release step, but each tool now has a boundary we can explain in one sentence.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-29-0300-shai-widgets-live-activities-dynamic-island.md b/docs/website/social/linkedin/2026-07-29-0300-shai-widgets-live-activities-dynamic-island.md
new file mode 100644
index 00000000000..8392f28369e
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-29-0300-shai-widgets-live-activities-dynamic-island.md
@@ -0,0 +1,22 @@
+---
+title: "Shai: the widget request we called impossible"
+slug: 2026-07-29-0300-shai-widgets-live-activities-dynamic-island
+platform: linkedin
+account: shai
+source_slug: widgets-live-activities-dynamic-island
+publish_at: '2026-07-29T03:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/widgets-live-activities-dynamic-island.jpg
+---
+
+We dismissed widget support as impossible for years.
+
+A home-screen widget has to render when the Codename One UI is not running. The answer was to stop treating it as UI. The app publishes a serializable layout plus dated state. WidgetKit, RemoteViews, or the desktop renderer owns the pixels after that.
+
+Steve's decade-old background-process work supplies fresh data. Timelines carry future updates without waking the app. The same model turned out to fit Live Activities and Dynamic Island too.
+
+The first version has real limits, especially around Android RemoteViews and desktop process lifetime. The model finally fits the operating systems instead of fighting them.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-29-1200-codenameone-accessibility-semantics.md b/docs/website/social/linkedin/2026-07-29-1200-codenameone-accessibility-semantics.md
new file mode 100644
index 00000000000..f1a83eb71cf
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-29-1200-codenameone-accessibility-semantics.md
@@ -0,0 +1,20 @@
+---
+title: "Codename One: portable accessibility semantics"
+slug: 2026-07-29-1200-codenameone-accessibility-semantics
+platform: linkedin
+account: codenameone
+source_slug: accessibility-semantics
+publish_at: '2026-07-29T12:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/accessibility-semantics.jpg
+---
+
+Codename One lightweight components now expose a portable accessibility semantics tree.
+
+Standard controls infer roles, states, values, ranges, and actions. Custom renderers can publish virtual children. The same immutable tree maps to VoiceOver, TalkBack, Windows UI Automation, Linux AT-SPI, Java accessibility, and an off-screen ARIA DOM on the web.
+
+The simulator inspector audits unlabeled actions, invalid ranges, duplicate identifiers, and traversal cycles. Tests can snapshot the tree as JSON and assert the behavior users depend on.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-30-0300-codenameone-widgets-live-activities-dynamic-island.md b/docs/website/social/linkedin/2026-07-30-0300-codenameone-widgets-live-activities-dynamic-island.md
new file mode 100644
index 00000000000..0301afcc32e
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-30-0300-codenameone-widgets-live-activities-dynamic-island.md
@@ -0,0 +1,20 @@
+---
+title: "Codename One: one API for external surfaces"
+slug: 2026-07-30-0300-codenameone-widgets-live-activities-dynamic-island
+platform: linkedin
+account: codenameone
+source_slug: widgets-live-activities-dynamic-island
+publish_at: '2026-07-30T03:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/widgets-live-activities-dynamic-island.jpg
+---
+
+`com.codename1.surfaces` is one declarative Java API for home-screen widgets, Live Activities, Dynamic Island, Android ongoing notifications, and desktop floating widgets.
+
+Layouts serialize to JSON. Images use content-addressed PNG blobs. Dated timeline entries update placeholders without changing the layout. A native countdown ticks through WidgetKit or Android Chronometer without waking the application every second.
+
+The simulator includes a widget and Dynamic Island preview, so layout, timeline, dark mode, size, and action routing can be tested on the desktop.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-30-1200-shai-accessibility-semantics.md b/docs/website/social/linkedin/2026-07-30-1200-shai-accessibility-semantics.md
new file mode 100644
index 00000000000..d10eea02cf0
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-30-1200-shai-accessibility-semantics.md
@@ -0,0 +1,20 @@
+---
+title: "Shai: accessibility became personal"
+slug: 2026-07-30-1200-shai-accessibility-semantics
+platform: linkedin
+account: shai
+source_slug: accessibility-semantics
+publish_at: '2026-07-30T12:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/accessibility-semantics.jpg
+---
+
+Accessibility has become personal for me. I am getting older, and large type is how I read a phone comfortably now.
+
+I also remember working with accessibility experts at Sun and seeing the real complexity. A label is easy. Roles, actions, virtual children, collection position, focus recovery, live announcements, and platform behavior are not.
+
+Our old `setAccessibilityText()` API was the poor man's version. The new semantics tree is a parallel, testable hierarchy with mappings for every current Codename One UI port. Automated audits help, but the final pass still belongs to a person using the actual screen reader.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-31-0300-shai-codename-one-mcp-server.md b/docs/website/social/linkedin/2026-07-31-0300-shai-codename-one-mcp-server.md
new file mode 100644
index 00000000000..fbafe8b5e1b
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-31-0300-shai-codename-one-mcp-server.md
@@ -0,0 +1,22 @@
+---
+title: "Shai: accessibility led to MCP"
+slug: 2026-07-31-0300-shai-codename-one-mcp-server
+platform: linkedin
+account: shai
+source_slug: codename-one-mcp-server
+publish_at: '2026-07-31T03:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/codename-one-mcp-server.jpg
+---
+
+Accessibility led to something I did not expect.
+
+Once a Codename One screen had an immutable tree of roles, labels, values, and actions, an agent could read that tree too. The JavaSE port can now expose the running simulator or a desktop tool as an MCP server.
+
+The agent finds `profile-save` and invokes its activate action. It does not guess yesterday's screen coordinates. Application tools can expose domain operations directly, and a PNG resource remains available when the issue is genuinely visual.
+
+This is JavaSE-only today. Native desktop packages and mobile targets still need transport and launcher work.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-07-31-1200-codenameone-tested-port-support.md b/docs/website/social/linkedin/2026-07-31-1200-codenameone-tested-port-support.md
new file mode 100644
index 00000000000..195c5f7767a
--- /dev/null
+++ b/docs/website/social/linkedin/2026-07-31-1200-codenameone-tested-port-support.md
@@ -0,0 +1,20 @@
+---
+title: "Codename One: port status from CI evidence"
+slug: 2026-07-31-1200-codenameone-tested-port-support
+platform: linkedin
+account: codenameone
+source_slug: tested-port-support
+publish_at: '2026-07-31T12:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/tested-port-support.jpg
+---
+
+The new Codename One Port Status page maps 49 feature groups across 10 targets to current CI reports.
+
+Each result carries a commit, environment, run date, mapped tests, and skip explanations. Architecture and renderer variants remain separate, including iOS Metal versus OpenGL and Windows or Linux x64 versus ARM64.
+
+A green cell means the named tests passed in the named environment. It does not claim every OS version and device was exercised. The page keeps that boundary visible.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-08-01-0300-codenameone-codename-one-mcp-server.md b/docs/website/social/linkedin/2026-08-01-0300-codenameone-codename-one-mcp-server.md
new file mode 100644
index 00000000000..6c7192f0d5f
--- /dev/null
+++ b/docs/website/social/linkedin/2026-08-01-0300-codenameone-codename-one-mcp-server.md
@@ -0,0 +1,20 @@
+---
+title: "Codename One: semantic UI tools over MCP"
+slug: 2026-08-01-0300-codenameone-codename-one-mcp-server
+platform: linkedin
+account: codenameone
+source_slug: codename-one-mcp-server
+publish_at: '2026-08-01T03:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/codename-one-mcp-server.jpg
+---
+
+A running Codename One simulator can now expose its UI to MCP hosts such as Codex, Claude Code, Claude Desktop, and opencode.
+
+Built-in tools return the semantic UI snapshot, find nodes, set text, and perform actions on the Codename One EDT. Applications can add typed domain tools through the existing `com.codename1.ai.Tool` contract.
+
+Socket mode attaches to a visible running tool. A small stdio bridge lets local MCP hosts connect to that same process. Nothing is exposed until the API or MCP menu starts the server.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/social/linkedin/2026-08-01-1200-shai-tested-port-support.md b/docs/website/social/linkedin/2026-08-01-1200-shai-tested-port-support.md
new file mode 100644
index 00000000000..90a78c22b92
--- /dev/null
+++ b/docs/website/social/linkedin/2026-08-01-1200-shai-tested-port-support.md
@@ -0,0 +1,20 @@
+---
+title: "Shai: why the support table has missing metrics"
+slug: 2026-08-01-1200-shai-tested-port-support
+platform: linkedin
+account: shai
+source_slug: tested-port-support
+publish_at: '2026-08-01T12:00:00'
+timezone: Asia/Jerusalem
+review_by: '2026-07-24'
+status: draft
+image: /blog/tested-port-support.jpg
+---
+
+Our new port status page deliberately omits binary size and memory.
+
+Android and web report compressed packages. Apple reports an unpacked app bundle. Linux and Windows report executables. The ports also expose different memory concepts. Putting those values in one table would look scientific while comparing different things.
+
+So the first version publishes what CI can prove honestly: 49 feature groups, 10 targets, exact test results, run environments, dates, and skip reasons. The missing metrics will return after we build a dedicated release fixture that packages and samples every target the same way.
+
+Full write-up: {{canonical}}
diff --git a/docs/website/static/blog/accessibility-semantics.jpg b/docs/website/static/blog/accessibility-semantics.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ffefd8df9722c98b51c14cc4eb525b6770b6ceb2
GIT binary patch
literal 50713
zcmeFY2Ut_vx-L8c6$KRwph$@dQbm;BqqqP8DN?0IMfw7y_XI)d80pfbiGUF49i)Tw
z-U+>z&_W;~`KRu^*7Bac_I>WTe>?y4p8h6b9}ZCpDE-R*J8TR*QG&{(5)!FC6ay^9LUR4}q>SrrUtd(_uj_k@fs z!W)0p~36B8Yku5^$P^aGRGEZ-q}bXOSZ&!Nw4C=#Fki$ EgEGX)>!|U1SkR0s^%Y^txJX6sVR%YkoH)>PrlF3?8`h(QGl!a$Aie>WEd{ &TX@miVLzK8griTx*3;V zkNV9SecldSUkrKn$ERZmbc{0`A${X=xKa~7A0gBF_>}luez}$8dk(k7q|#;5i0&-K zGp3%*!43ExgY6ykCJEq4^1C9IrlDX?=pKmUp>CLB?UB??uS2;StCtQIji-Fbvu0PA zdGDUntgE`DU%V44xZbUMH#LasZ+VoCpX)Bx1N0wg;l(XgV&}lir48q&elk;eW%p{O zT)@?S)9Jfwa
a}-m*=p?iw$v7&8u_RhY$e67G)A8Zmwa6?&sW9v6E7q`=&La= zFDWbh0|pq0(S;5At7&;($6tiG;qcg&Qe?+hoWrNs4=<_Pd$gqZ-}{yw`79tNg|=bA zlE$;DOsk!FuAlZ%sH@gzzh~1uXw}jLPBKjE?CDUwaIkz&0^VM;xP!Ft?Camzg9b{< ze8VhU8)~!su5y$+UCp+RCO%Gfhy{VsT6c#}5Las`>lbtWj{6Xe`+a3&h1O OwSvPD6$Ya B;h`(oi z|A OX5vgChzU;TYTxv={+NR6H?)Bep_d_f(n+}t>~ocw1o%Caxtxy??p&E0Y| z6fbxaIlVrtv91abho`uDJG7-GiVSTAU!7}|cwRyA?$NAB%O~1oJ-o&@5^$vkLU u9$qnEnRo!|X-BPufLnf!I1)7OztU?&q@ zonALiY3dZlM5A2}pB@LlCD?Rg=raT1V~{CajXDXK&x7yu!Xl^0k28sEt`gsi2F+M* z_D4{(S8{Yww@`~7*2EtSj}a-3)8W@#=h}-s(Cf;w&C=bT+IKsb!{?i)(04idYT3KW zAb0DGRG50VnBn^sgsSf4%`4kh?47(PHAV*zrtV(dW(VljBdQ>CZcY9K-`1OnFcx^+ zpT1M4vz7s2#rGOUZX8F$j0@-6c-kx%V?vCAw=ht&g(UN_rbMRVhv!wB(Kv2c6XZ&9 zR~W`Y1z8toyl`?Je`lZFNNy&vN9K_fdFA=;q@+dNhO#QHL{UAdsbC___oeeZ{Ao%G zQXZ_>gIW1z8b8Eo$K;LLKxx*(9^OZ{q jldAcHcfD`ezlcmg;?||*6j{EBB%A~ zv@-?ZO#anskE!rAW-pg}EAhCUNYlM3?LwC{m=rk}GwY6M+zN%zN%ODPjzca>D!b)% ze9;qKe4kq+QP?QFQgXFL^iYk-iM^^mh-ZVVFXU$0$(NNZx6|i0M?lc<@&_toNyfCy z$v3I`>Y=bL4baO*<{AR0!bM;5S_@Cu2~}?TJ!qDG$-#UYH3ad2VzkDcFD%zWJSATk z7pvr^<;|~)D4VW7b&n2=AG-$&+|!BpFz;%he!M5NS%h#K^=lc-z(~=o3(S;))`DFr zLT#Y@rq~LHH)MQ3LKeyJVzNi+@{33DqXXCWz7y|x3e6^8!U;U}ZIr$^XtQUiKCsA> z!!=(TD~)8(@SR}tow#<)kGn+zPAcKjW=@s#N#9%P#dSY^e51 c#1@R# zeh`r{MFLXMS TQGGs(J~?(%Ba4BjX%dtIo<{#1a~cY2 z86T$4D+qxO840!E^Gl-K z>8sS*?s!XW5eaBSUOg;{)0}IlZ~$q*o5LoznM|n2G3HW@L%0HaSVrua0#mf<3*A7; za0Rw-FJ*XggsZ-~c9OWWVOnkH#sO@AKoKPU-toD+uJRo-LVvGkTIFH!vX}4N))>A? zyd~avT1lvvSO2x0@MvDZ(tEK`fj#4`l^thPuI173UR+YShj5Au-&C~QHF@dL7q6s% zZ_IB^pTKfV+~_Z#WHAsDf=JiGmv(C}Y{QM?RFj!?+Y3hdek+1G)dz8+p8nv{oIs8? zZ2OQBzeZRyLaUTSC|E^Pc8qnLcema+(w2=Oz#kBgNPu{!rn-9R!<-St^St|oB9fq> zbq7@KpeyqJh=n;K*|GWdl^>)BbZr?d%p@QNiKE=lgB|)4E5T>pj4%w5K;sC>$5^6M zzaa@|J%gA)9_a{pkN`*o38+DLRan&?lJVigNPuEr>B!;L8N|X?+T9|=;prw4Ku!XB zl=ZeL32+X)?_pd{8u$%ze7Gw_AIsqY=-f7R0@5+4glq5lfT&a&s821vT~u!S+)b-~ zLlig=?KBzsZc!3eC$1i(oC|h5Ti|cq{Qu2N7)tsj-c)hyNoK}!>h2sQEKjDA<^rN6 z4p9RQ%d dQg5kg@!Tnli|gl+~_uHVihh5{>f6GLW~jz0j_} zlYRXt`npcLnE|tR^OV+&cD_YD=ng`#yH`}Babk(bF4O<>63u)}RrM9E9rNSauLEC% ztT?y!DnD#)d}2^|?i6;_-B0~NPC+} 9n-Aci n)aluGm|O|FRy&=N zT!^l}VfSfeEW)+lFqj9+%aoqa^R90){JM(k4c!rhbL|bd5TfokggG=AYTmb}eBTu! z6T`Ybro?Yh!L-dgbG$M=eF#^Rj>0(6?Ty-=nZ_LL>?&0bZ|cKq%v3l;ay67j-7YB$ zmR_nlIN#UKL+|2zyQ9Ni!IUjrl`SINeZcVv?6KSHe?vD kTR> zNbq5Jbltc0`aDb2fmxj`j?;gG5);3EWK{ea$+)aG?G>+W>Jj j-7UNyJYRH1*nkS{09Q |7~tOPw>3^fh(P4oW#{lSTg?;kK-gf$s@v0@ysCAb63J>x ?bdZE)gjy-)EFxFO)ds!@#&hxQ zD}C7DO<`~|bqb|*kA4B5q9wh4jLL>J-WcB*#D%H6`|nM8WT9Khu^2>I8FY%-YP$nI zT8f}WU990+y&^pP+k(OiEVt?btLi>12yzhW9vXW5F4Hom!n)B#d*|$zF!2hJo~)bI z1pfvDZpBaBnG)+outiW6#Ux*lgmq&29q*Qz$vP(FvLA~Ck$^U&>GsmkiE|<3y_I;H z{)j^Ip2XuiaN_tRc7y+BiegI*I#xR4lO{uzc$%}N02(iFd-!rl_S%bVv9^8d+78at zpcT;{bMPN^xc8ag?E07QOx)pQD+#Z)_C?ctj-JjkYCe0t^8TD@_8l7ymj`&LMITn2 zQT32a1RsvjTl~FtZinVz_;6U+f&^S=Cjs`VYX+TvI`d}a_+jD*>d t3li`evCN+9>Pv)PKCUBlYSxBS zpYg{RRVzbjNI*+GxH=%-=Sf%6{JIqddG~S_WJRir;PUU7^y(iGHZKN@>I{uP!Q+$V zwWZ)Zv!a5aMMeo@>TI`&HlGK#bCavG?@c5t&U83Xx$3DD8^)ls)?UW)dNy46I^wh? zv6ZT=<6_q3s3SkyeSXpv)})v0$9}eN#Gs10 >R?vqooP*ss?SVr-?*~!4k4Y(r9PiJVjW;G9xH D5I?TdBJ_Fpb`$}Fmm&-dt &Tq$fOdr2Xo2fl#=@M6ONn|VbaeXYo79f}vQFdr%K0%{)pIOy?DXa0RYyVp% z;S3L5*bI78!u*vse}-iwAMH%LM uH5L|$(Zsfc ^_b;PQxnWTM`!zJ$5T?M9gZ?^%WWMy@v2^ zY4pq8xdzwF3Rol7;~2HGD`^?DR^^qVi-R@C4f{J{T}t}%lCE~Vxx!u6JPVxIT`}^_ zB#8EG!p~ZgfD0zkhz$wq52>LK$ |s_b}#WIOiT^ z^&}Lftk7=szIx-p+_f_?zq0%hh4mzQKg)>``gOwXL8%V~1v>7));Ea(r#0K2EAenB zbD+O5MqP!xA>Z2hW+7jP=6mP!UTb`F=VLI#vK8X6x9kHi2iG^RF}`-Z(zY` XBU;8P(+IGB9itE)twBi1Ns2&zqJZfQswHVp8rtcf`P`GB^5Z+|( zbywV7=N?RX1$ti4%Vj1nezuk@J~)2vRrJ`~FYoe !RaYanm~G}mr(aVU?aM3xYAi$ z9|HZCxUP?%R^;h>h**2CLHHKobWp6atdUBK5jBPW E%weZ=kv-RN2TkZA|3D!_Yz ^6vgvPb75l&lyhxr$u z`C^dpRqhZ1K|hSNZPbyH6>ZCOG% f;{+=3E*lrrj3urljccHW^c76HPclbx01#5$^1GalP={5a#Op3~o zQQ;gf?QmI;7{$HMrV+@NtV2_;8FtExZZnXA80)zMsT!3j`L$bgAR&K)u%NlLqR;E8 zV^h)e^&5ZQ&2ox?us4WCaxbe@zB8W67+5HshTH(H;oZeC+esCgf>KaP@QyI5K5HT# zFQwYJyLqysVC{RcM4i{?)mjkAORRFHRv?j7oOz{2zv+vXd}cHtTfgi2Wl6p7$)=-v z!>){aO*7)}`IdGS6r`_6;tcUc_8Mg8VhoXj1bhtYf;Pkb4M@Ob+N#YMqV-JeM8wgs z0I1_b-Xm&iL8ALFC~cq@kKoUT?X2}OCfx+NGXe+MOKYgz0o^n}EOHGdf_{4%(T6-w z0@_;$6h}jdU7BMTFyQc^doADpZ#nd$En;p5aWD=dKo<}Jf=Z1&bVW}a4`F5EBUJC1 z(j&ncdbM^Mc627k2uzViHi9!0A)w{>w}d+j!Qg(G=D@-|4*p{{i;w_M@ZSx*oLT;d zO>QVt8_3qFk~>!SM_wq2mV9J z!oKfRRP2Hdx)}+=J<>e50=@wED?wm}k+SS{t2)UwCXAcq#cy)UO*&V9e_lA?bSUF> z=X6nVrMhPa4@5P-1bVGAzf?cx^Yjau5{GwX6haxlm)OteC>Cl2*;%J=CZe1&wVVza zW(vzRupd0-m=zNhxITZHOnj999yJL%5rL9)B=%j&+VD%zB2g?T(|qluDcS;>_?8 z7q=U-(vtJ>(uvpKx)qPwXW3J>`7|nqcnLzY2pahr{D*6TK^8M2jMtb8LcHBLoTog3 zaMT)wN<3k-FQd4xn&oQy_02k3+z6@2ROdNsBa`zz%1rQ3t9m&LmV2PL>||m9lVszW ziDHjj=-gDO9}{X%b$M4Q-BLg}U+U-OjvI5$An@h#mgA`-u8mLJ>stP_`{1NQ(Z=e1 zHv5wv@=b?fM7q}GOL=?2=&Qj2O(Ai18hnuq4z)Jtg>5Ilsa7K6YPeHNo92y%>6lcd zzVwg6R1(HV_f<#$EAr0lf`9wcYfV%~I;!K)X?3QQe|a!BW6OB8)~CnHYKF_E2IAVx z3^l?l;8mhNUwxbQar)8g$eP)*!$|CP?3eB_ao9N}w~s<;BW<&)H%LHnyvq1I!}-Z_ z9)f=998`G1hIs8TDTr&{psYK${GhK*O1m?+Zv|1sV}}sdJx<7SRNPd~F!N~UdsJFz zF}n6Cvlju`T1Qz|oxQ!un%vfVLw;uxW_3QLB*J&yYGrZAQ*oH(QW>Tt(9uKcJT;H( zz_W@Z$URJOt*tht8O5RjWO!FEnb!Jt@TGlwfM6ATxjsKjE|CN38}Evq-Kl*z@XhtL zxM()+tpag3!a}sTEp?DrV-=Zts}d85D2htl@-qv@v*Ohm&Ze|PEYfy# kt= zejQGOcXsiJ%K72lebHA0Sq@!|M7COwjo*uOO6#kTwzyJEty BD*4=o{WhRgXilIe=tXKbrkK(&d#_q~8gK i+cA|3qGT zNxvLO`UR31f+u?u&6sTuGIqFsS;abXrG8NshlXZmM5r0=p|m#)9mmvkBs+f7&*E`; z2|`PA2M}l7KPje_=yUy6yf-CVzm@7=M(T_F5-*r>-h%VM)HAH@GHsON-F3Nhzgtx3 z8I8B`h^e2^YI!^-Np!6FYYo!-d3%4XF@xN-rk{`xY5b6-jtkkMNBKe-ofWqu wI=5u4&hL3~pX0HR- zPMsW`KeQUl+4@02r?TG~Uu%`RNaQCk8Qw_^3O!14|F}3m{4hQ>3Vfy?Z?||;>N)=P z>?|GZD-BF&btGovw=S+6{Z=YX-)}s~7qi*GR(~ CwghUI z9i;&*;tIieyE{m--AbW3^d-SfJ3S|Cxi2{Zl*kp4mfN39o$t&S-fLr<5BE~|)N7=y zSP);8*geYMkw)#4xsE9s& V)Bvo{z1pHJZO>dOM1}YT6oTgSUEQ#3f{r zfV@sffBrEz6aDqzT@cJ$5>PLJ4K>DFZIJ+LuPvvnn@$#Z$#VLKI9G83TXM2m(o7d`e Pzq&89{;ZJdYQS!9ocUa? zU!sUb4xM>w(E8oK4VBmzvQo-uMb2M%^?>D#hWSStGmL+WEfWsbUQ(H0C9KdA<)|de z63ltnLOA^ui~1r-y^We70U>r)Zg4@~2VdzKJGdp>Z;$RA?X^*k)rxcGeSf<8Ui&fb z@ovKx6w}0{w8Fu=WcN`b+-%Lgpuk_9;pxi@_NS%yM{vGG$^PSQLMU8^AiZ7Nn0O7# zD^k~I0P}Gz;2geq5j`(9B31Wf3zmN5oHCoM+CV=Hzt@-AyH9UdaXRyIo^X=Fk_B|~ z_Q*a;J&9K tYy{VVl2muO8$LXu0R+Bw*)aF!3ZvQsRndX>bJ91Ik??oxhy* zFVbwxc1#L*J?EILOz^?sb`b~NJ9I6>&wttIOWW>9fMK!-T@8(p?ZxCR Q&W~An|-iAbj-^SRc8G4>XBoUvckmq*u@%V3K7cMwqq-*Ju(+jrgLB( z%W~)ytTV2~V#zD5p(DOz?)c`!UUzzNgcDxG(;|FP_i{ssR$>6uqGVb1*a>xq>47&k z9P!kjcoMQJ9fUfy#8OYa>coc{iAfGyjQJ-3iF*52c+#p*(ry|->v~1SS9Mz}EWa%7 zmZSO#yUbUOj^7(T=Nv)mXo4=Sln{B9FTRVom0zh_g%k5`HV{S&xJ)ix?Jl-D+kftw zbf4CXH1_q)FUJsAShvQ_7FF8M^=~FVMuaa!%~lQO)tJTpsh(Tl5JXAz@h;)5>7V _aClT#gC?N?0<-l%o9Ul64js<5MDJqs0_3}1aUz1;OlWVAon-kmLK z+%{D{PDeIp1v^yITgCnG6qSlY5{=&Qc4mX^HG-tDakIEZKM}p?#t<$ha;Ogu-yG9s zk@GdhlVHGs$`diSadnmDQeWtCmB5GCH~I4ZS|>stt-9YOtnw^=aBZeL&Yt(O$sPA9 z-Q}Zhz_n>+y}@2`Qa9S-Su}Jm#tvH}8T-Gy-EWE1e+J~U=E}O+V)bK6yEYP!13JCP z(uiFM25XzxCCnOkBrDXsbS-R!_dyouMj4i>!=F}(c7%pNiu9c+hV&K< Z>j~aPx z7h#JoHK#kPgAnRDAZ2C)L&)2BFYw)@8+i;4cZRG-S4u^RTA?O?^7Id^t{`!Vw00fR zdcLgrm35b{UH6|t6iPcJUPJP%tPsS^WMtxRBHt*ve4NrYWy_fRYSN`X<>N1xB=5{V zO>6MZ{b7ZR23ko`pUw3?Wu~s?yIm>aKNOIAWF3CvSp)YYQRz29(;1;@;`SM5GH+EV z8(Iz8AoWUg0yB-S21RCERk9H5b9eNBhP4@i(UEx&8 $q1F(Z`8t|a2`yhUE{4ElAI#$4zN zC0pvJ@hi9cJ0j1pDt|_ELaR)=*&K eCZ97ktlE17!{+=b_Ly?Bcq|(j(_8UXlu@4D1$u_E_Nm}JQN6_ z>@&BXu-R?MJ^Q#Qr{*S=J#{mYLp?*6Ek=9225Yh}UiMZl^t715R2%#Fp3;-Q1c^dP z=pQmp^_K2&68!GO`0ZD&Zn3_;$RhoBcfDR_i$m9!wxfquk`U($vSb9X!SHgH@Zm63 z=r=rlbrlqIi)hw2I88vWaVt@(qo-pISuXzN&z%2&bCoCtPZ}^?2CqZ{E?FM2KKL~H z+0A5k+B&Cx$+Gq7jt3QL8s KDtVCLx!OFV%+YNa -ck`9hT57b5Pu88MI>BC%5yvWL zRnII&K3mnQ9|+Ojs8{g9N{$8b3`vS$ptH!}A~2wj^Z3oGT6+Cn5KQ{SWPT7NYF>Nh zHB-=9ld*XZQtHQhUKxi;&akN2d 0;9=~cyZP%75%vxv5?`=hKCXidWH;*HG8g6OK{G|SxDlY z#{$yx>suAR?J=NOq7gokFRQEg`ln!vUMj4 r&$%4#J0jL>d3` zldxh;Qtce<(!-Cgrae>WHfr%^=F2=RO3Ynat}Od&;v(z2+kRuCX~_*8pd#v(I 3&1Pm7W-jWP0MQgg~IAIeRTeWz!Bu%-7 F)})bsscmIvS|`votRI zC$N4h2nk;sObhxuAi_QT*HZgyW{6P;BIKBc1+m$?FTj}>K2<-s=UnF4@m9Cgh0y`I zU@&Px6{J)8FesPuMEu%kFe5GHKR{m#3un8ji9`E{V$CGc&d2lNm4X?{U5Y$e@fx|g z4fQtk{KiJPW9hY}`ugS9Wfb%7B~^tCEBzIF)*Z+(|5TAkd$+1D(xhkZ8{4#Ixa@7V z+n?2v UgG3P|0V?{Pp$3UwGJm9ZvQqSY!DY6}LE< z0CIW5&e}zRqxI*YDE%+4yFC716Qs1GYFb)bs6kBV#qbNNu B$;Gl(~oaR=amu zyXpbx#sZ1cMAL+SgwPB3`OMWCvG$wyUG7n`N 7u<-52%7rX~%>rs`uZC<3nYYRlg~Pv?-Ib9DjJD@>s$ zaluMnIt>NVzKCM9C46Tvfa8l<)KS`5@O8sFePBQ{^#H2ZDyf^MXY)>+Dby zVyBsQ5m!@}O?xHxg~-Izyl%!kR9(%83LWAiuM04Ap9SQeeiv z!KnANFb55jr@HU=$1nu-(IMR^7!$oGS=|f6TZU?Q1m?17t0%;lys$6~B3IRcI!rUV zm^o$^&Ox{cUPsGyyphH>hhRSx)1b}kCvKC_=HS_Yj8+IRzX{zu%v^SZ
rrH^8iY@2iF}_pBo*3i3hNWm-KO zG!$ylAD$>CIQ)V`h2Nk+M}8Uw=I-9o39XVoxYqJ*(!x{eMfvkg%iGbz-^C7%V`b{N zNPx$8s74#1YCGn&rv+wLFQOqyqGwC+oXQ>L>UA3Guml^!2CJ;~R$WzN*r@fZ8fl#M zG+)p)9#@Z9dS5ftN@s$s3su|Ku+Y{ UTcgqrL za`^%+Cbla$Q>%Rg!0;{bXGLjX{OeEwECO$B_l|{f9p}JzC%-gYJn>HB)x %jjI6ZSLasJ@Nf-ZCvceB`3~;;QT5t659s8B5f%6wJ>f`9|B3*?lSa-ccmX@ z67mNLM|`o{Fuy9g+2kt|ZY<3G8I{0HI>qk_#J$kBkjJ3FTY+=IbFYLqSH!&A8e56V z$12IFOW%F9^Pah4&oFIbctAWOF)0b7JMw_Jxa!HtN3*h_wB)W-AIT22mwv2C|MWTT z-|7X+r@j#Ug|?y0fqBc%`!Z>GO%C=BZ>_r31kN1OG(^8>kjeLJCL4TlzcOI6^WXzM z93)YoYx^U5^h+qInmdcDj&)~MC{vxzOnBVO=u5|cW>wUJ%t2+$h#L@%KOx#*id( 5yt} z?dvZaD^GBXDttIiqS |EwCo7Q{-E>(!~xANUFP5IjDk)>V~6#RS8x52YO4DS zVdr*rOpj2us-G7<`^~w2_&3wE(-XU^Pa;>9 dzQmpYi)S`7=^? za*Kx@y9c1&F#2NKV0Y= X|5mia{BPcpt7+xKhTxTRc * zKek$tm>_Ix4cz}4ecjLNP$E!jZI7Y>x^rJ}3xDM@2~gnK>H34R)jowYuWYZPPZ6Xt zzBgUk{jKzEtlfLIQmRK?a&lHG5)FL~&+qQ7 DW{E3qRaPTg zYyZfmL!}^0_zt-$5cn9_5qphq&G9==W-rcY)eDwX_s6}XNx+c!29Xio1!u-t%%1jq z_-S=G#{L@{8T(Ti; t%5H2 zWXr9^ZdT|N%48U7Vn}JYZInA(?)kulwxVdKtM|4V-9sLm>zB%}dkiPJj$@TD#ITuT ztHy0y(2jy5UTjla*bn&9Blnc+hJ$Zuf`j2zDuT$JM=C743f8>c5@L1R9a6b^TD-LL zLq$YpYn&(1tYuBWU`1o%E7_;rgx5V+OpOU^5d~m`r4@>Xf%%XBs`X*7QGGWjnm3h9 z3gcP#sj-?QAl&OSVnhXYeEFQ`gSo9k?kO;|@in7`7-ES>{LhaQ8vLR2wxNe`^J9D{ z_-ar5_i7k1yi4R8DCB8)f~@s zNx)tP&z=$%)F8v997q7H1aZV)QHCPQ9U@SxNN7XyA$uVbWcBHVOX!gnqTJR6#Bd1W zNX#nwI1jvLF5j_lZtWfyPu6h=V%}z(^4PV71f)fm+m3A!75hlQi1;`OkO@c8fGI4p zsu*}c10xAwCnAr%5J#HGbANfC6*w(HXHfd`s?Jzal*zd@w9MCn4ug|aGX=sIR}6kK zmp_mx%n3%RbRqjmE@RUsvi0j>h9~Xk7q9vj5^T-JGhys-q$?v9xqT(5$|4nKx~5p{ z$E@N&T_N~3^7P~m|45fkwfk^0D)1<#fmcGYs{i+yDyzf!z&9D*YGH-*)~sb)uydZw zpgjs__>PWkk1z6i3E}k-t<(*O{X-}*z@6YB(0cb(CkE%*f4~-R1=~V|9gDo*hMVa4 zZI_Kj#b=$lb;Tt0K(Y!w<%!?Ej7``U3HF3$ !75Smn0)FdbRWy9SJqnZvG`SD2 zgV`IP=6e}29z%R<2RrpkkPY9Cy#s2)h``znFe^%?43#rGkxBEWjl1F8dCdv^{R*fg zW-h?4Jch0(=iTQe&a4a%^YWJ)sfL}fU`SC+pfrRaSBWuA&d@U$9}l)?i%LK5xjfkA z{FTWD^$4f1UEe*cJV9h0`2FO&EGA`9s_~h)Tim&!6FKA!+zw%_Quo296AB}Pv*N~Q zGq!??sP)|h51T$~htE8zb-KjknK^N7uhs`jQH&&C3kOq!c4e{Mh1FHUnEY3%+Ugw} z-U2(%$db-*#Nn#ojJI?RZqZkxxJN5@^|NcI;As(aWhvVy^_*Dway%4nb<(D_xmZcu ziPudQhWEhE6+zDs9)>R|mOj1h I}WvhsGy{pIw}&nSU>3JN-`%lgu_CX8)E zFY31|*S$`56z`O7aLwjIjd1?Qp_z&t*O)6BB)GnR*^!XQWFD|Sw`@;yvnKaA5gfM2 zWe9d3OibniELrVAsj9U2C zy=F##mkry#wM?dI*5(Vn106+)ZXc}Ir4S@AiCZDJi`Q~S!P&=mp`DgHbg?x*AyUnC zGKpvK+we@*fLbPvSFMYJ4VIvq)cMNONii~eC sWh98dmag<$0ZzjaG$0g*TZ>zyED#z$+F)t )J1h6$JzvN=KzBy+|)n5D*Yh zs??}}lu)F%kSGX97Z8vd5$Pq;JCWXr)JQL(*Mu5Kh _c1K}k zhU{k0?p-j@YKFndw;G-h8fV|hG0vGOHA@VZ_jp|STo8G(^lUij<||Mb3)N8{YkrJg ztI+!Ln62yzS5_*zk1!TY|D=1qv~wyYN#m)!{q!it(tG;f;~W1$iA4ky+Kfl+QRu%B zGcHduG;X!jo4!`asu}-RE!KCUMQc7$d_Kf!_t2i|JcID7S1P{lYkGWHf8x9b{Q?4; zkJ{Ym%5GEaE`etCsitd}qT}oZ)@mM;%Y^d=N6omZYHaY#o=1a%PhM2T-zDbsP=04x zbp#&G)2L0=W8OS{Nc`l(^dOxj)B_ia%dgIA(iFVS_y6J{XAt@R#L#mzYFiuvKDCjj z>IQh5Wa1Gw`RIt*I>+|U`^^L+tRSusj$VeB{6M4qZN+r>Qcg0YnBGRJP1H{-%J6GN zd3nUFSpmZx>9xkS#{eY&Vn1#swc7q>&t7`{@t&)qX1}MrbffCk59&4Tq_;pL_WCEq z@~uh-(ERD?O|@eP_0wP4eH4!U__V=qc1vcuIk@8~9IJOow)yQg82N*o=A-@1b2 7tlfpB1o7DFb5Pt>qg8rJ7^Z#u~=T9G-*`JUO^j{$z@n2{)n-lqvtXOrl zcK6O_4QbCRvjVlwb_Nzq@|wX>T$9R}tAj{P%h|D({dT)Le(AhU$rnqSdJ(s!xvE$G zlMckx{U=4JxU7xA;M3PJMYPVvM{JXHhl@2rRCXSQ7>9XvNd|P6*Yl2bc&79$k5*XC z_ub+usxrJttg+{^#=k+kzn1?+>-$>>IYN&Lri*S2CW~t$79(H$eoVX%TDIQ&q@W|| zbbC~AsH2j-Az{MB*W_IA*ltJEB;`~+)$h;#`ADVu*y-Q;5>b-Ued%qs%n#eDPVqeW zFuG6sDy)wz-+#@w_wpsAky0n*dC0K$LOMufrLT8*_KK1~9rE;YzZxTN*Q)-9$a6Pl z{N*pes+FAOYp=cOx-9H$Dj7;<_fl%hnZ~`h?c|?-X3Dd<1pX4{4~vN2FcmM!ub4p( zZL>41-dAA^RB+l-RXwl=8owQ?(4*{DcnP_hnlp`}R%TrNRfWz?llpeT l z^oL!DEl=bm!hiZ}_WA+NaQ!GSDC8%_`D^vG%tVc+qwc&_?Y&o(9|+Hc`$q?{Pl@lF z!Tb`PS4X5ClBSnYNTp5TYD#1DJgSE@{LAQjx{JVp+jA&~ze5T|xqms)HA%;#r8+~Z z$boyEz#jA+l9!i3DsHKKkG=!K#fWPI%*@Qnqcj&)ij|pYL*KpTeY1SVrXPGNvIjC} z)obnmfT0!gM+`Q)2L4|Gn5f0^e^jZ{r{=8~zpTyH{sNJBKmB7etMgNuc>JA 0fz3v1%@yL7ZGW`trFUpC3zO&ORBt z6lG0@ {SJ^@0@>NSp!5JxC3~7D3mj)>te3~7EG536 zdX~&NpAcS5#vwbLBG_@7peS})F2rLTr!97a{`}a;J!M#a8ugg;A!;KQRYZCJ=$cXM zk4KuHr}=9^J3kI54782obIrWjQ{6eAXvl@p+#Yy1e@6ez$Jp iaE 4Q*4*d_J5>}5&IWrjep#D`!cQ0~9Nqr*R%+TC|!zT}T~IiC`6 z{6iIVFlu~c-OPR(dVZ#}n=5-ib)8>zOz33CeagJ{H%!1GFMWV?`|fz-O_os#_skbd zY?do&jcH{>BhgYR&iaMITTE_HW7`!U^GP61E-Y$?#*Z`Q@YdF5yEZDHR2P}`s~P@D zVTvXHjXZbUNFbikQoa4!?>>FVU-%(Aa5JLkP)-$}OA0dwO6&g;FB|_u@b+KAF{6KM zbS?i-HLGQ>$v7sy04ltXd`?pLccf=LuBNc$WYYUZe8su6mPH4f1^ #!4xv8%tl0PMHx>I0C}6)`{+djBYE>SJgAr zR Lpf*~Z z-eElU5Z?MXvT)PhEfP$dOoYp<07c+G>k~fpX^VM_KmhA%2yf~K-sQMXqW)D;LIAA? z0kKK9Xjc^V? P< z<8SW*%`_lYG;=!0iTkUOM4L7zdZqB? N*mc2&Ojm%J>>CS1h?NysJGlTjT z_Avi;#~*9s3SyLTbQ&?-w^wF|tgJXMDren4?Q(7p*-icDr_SJ(TG2tpB-XFEZbHzI zT}XOismZ3p+;fMoSt1xu`u6rJ<2alCeP@@ly%MMNRj>OWA2-j5Xw@q-50uoZZ*D>M z6wYCw;JKmN`)t)Yw|_`ouRK-#lOii_3tme3uI_#=RHe9b$X%nhDp9Z`*0h&5MJal_ zHo6h{k@UN2sjuC4#JELWAZ(%yF^&UWeO%QB@k)VbK7V5mL1xdfu&^2FD>7}@8bOM2 za*QAQr1x2ebB4UJzV!m`)$6E=>1mwP;NzbZ<34-nQC+gyema18NW*s@iSHzAfU#SY zUJE2aC{O 9dN(5d~2 zLu|W(Bt8?_>U8a?3FPRl!FTW^r!&_?*Smaf3Vm9NQ(sTkwVUIoBQ_lc?Th4;ayp%O z*S*HJUxXJ_S@D8TUmCj93ky<1lDmB>vR!jEB*L8i+ T9Og|;m}PR?2sdD)N!7*L|MUv*M~(y@92^q zloD^EPtcw-@iQI}bARqu$huIp(O`FyDvsy%vKp^8%X=?Q%%lXE9(ES0Gk8f{WBiUH z%}4ROPb~wJzjwCz^}kanKh)x7C_oD5Mnv$)=wGW?sa$QaJpiR|uU5n0v5&i!-s$Ck z_qk*9rC=Xp##S*bUY>?Z1D&sv&-F@}TMV?yY8v<`&QSF7nN%dR_k+lFpA&)K&^q_F z!0u#> pBfC#7=3pu^~)S6PeEVqCDrf+Hv3 zHU38T1WZq|Bjo$xRqp$6Kr{u1RYwJW_&0kqr{dq6)naeZQo6Wh$Z0_mzqiT=Ud`R} zgU|k?pj~80@}gz!5b^eDX)E->)P&WjkC5mON*zY|_|o1G834J_ {01oJ0Ne<-FB=UOIHY;4htCTv=nW+fK$R-M&jgM^uOaw|4R;dJJGO;@67 z<}mq=+r%~;fam^$m%8C7s$C2}@k_~v{z9e&@B<@U!ZECp{4TyB>9`Oze`XeSL_++e zcpwkWz)c$g$<}xvxM-x(CEi0K!74N9QJ}JL$EOtE_k5E-DQr;hrq1CT;?lM-+O@rClUa$8`S#WQJS&4x%t6Dq#?g!&Hglyb^28tHknWbG|RMRdeRG|S0zo;@J zDpA$g&gs^E7A4*w@0Fm47i!&5YGFDv2e#cV%o_bHZLmG3Z0~pOR(&wQdk&_1$v&w8 zd>l>#)2ej_Rgs>39gf#+c(tG33g0Du^GPD~VBTW(t!T8a#pSh$IG7lIuE+SU!Vt|3 z9F=KUVJVWT1lyM-hDt7*{00++kU}9CI( P7hD>jfm0-LZnCUBe4RrI z&4^5Dpz?}U#35S8Ss^W+#Vh+Fqoy31cbbA;DMpHoG>i|EZ;;Vs;ccstJxw9qYqjxW z!a}7U)F >JamSPs?j81rSxoo!EGV-^?wio&x9H$d+`q;1^ z0DxRE65x4ks-fp4>R$rgG_3nLb>FK6Vacr9H!bKQtl&@!r!gE}U?ho1eH@Iurgt#h z) UX=uT<{8?dJ9S@JnLU%k#gaQ@NPSbofIK-uo+j&I%r9 z6Br+@9A#zy!`09b?CE4b$iG$UrE`9z4c?Xmw!1w2LGcx>aL-N--YVp@ z%vW+5Pj$3aRlFXts7LjC(x2EGUsS$;w+oK?<@=AAPe=NCnJ^Q#TR~i^X~!Be(x;vT z%ej+P3L*1;<*J|Q79kfe)821n`%tjHQQi5%H#YWY(CwJ)V!&~rm0B~gybBqJK#VS1 zQ#FP?J78etOZpt@oE7U-O%JJ75%Ht_Q{eU23+4cRTwYTial@gvN`zshG3OUm^G}~> zb^5iO+O(9#%uubr(y1oD4bXvqmae}^=~SoL=6QY)J`XTm-u+Wn{=4>%3kE>Df0|1x z{|xUi)+6&jy8V-)cIXghEe7Og-(N)hHB|TiA#hvH?)ewteI-&ljSoB9oKyCGnO|w` zCyNuv6(WB$Gb6*j$N4MNj>trbyp2sNEU4@2W}^A3wJy+l(pA{iyVcmKOD=nN)ds|v zDH~WmTUC$l;0Vx)QH=}hX#IG=!=0!MS#))kefrBS&ovjJ$Q5*O(1CE1lsfV;6ypgF ztV7uhe&KB =YN- e6e*2N)pA_{s8Nle!qx@O+W_VD7;d!1`O% QHk-^52Xrd8S)O|5zs5!U?P$& zmY+Xcl|(y64 6MBBUgsAAtX3_^=Zo` u#EK< zpA)6AiSf$j32+JTI@GzUWXbt}Gih}VFSph*p>NWBp8aL*me4jhYzLI?W%BJ25Q9-2 zK567(tVEigN{C)kI8QK|(GLFp7S|9 KAPZDemTLsHz! zRsGmlKa*-=8ucmF3z|=w8&&u$V>CAJD_=F>dHnBfJb$zGoLEx$KN;5DZ_Kw`;>g$j z%vjIPw>~X@b7i|2&!Rm$qMOXauMb4?WPE8Lqwb=cFL(kMH%Mq)1Ah&nknD!o?(-Tw z&zASFna-WlcSIaE<%LwlRn&jcaKQ3um=wyN5ZKQ&3rUkaYww^i697(zUsqrz-7T;7 zR-j)MQ*(~3nKG^axUV*TfC%mbjnNY&Y4GzR=+WUUtl-+y<6{N5H)*`J;SBbbXYQMv zy!O&EYqIt{CVfW*&fDj7<*Ds;YTio3Eo)#3LhN^400lk;eN-AESl-LK*sh&2CmR$I zKcanLdFsO9j!}g rK)WRGg^U? zjVourxCY~@=I*+3`k6zM2iqpBzSvAM2+Df(``x3IETy`Ii!*GL26Bj|%m)vLIPK_F z@0~qk|I`j?LEXebS2fRqrJO2ldBK_9dEX^6($|(476$`)2c9Xf&-3=c7eLlQh(ZtY zFZ2g^=m5LpFE{#MUWt#p-xyt-{W2+2c*yuy!{h(j&T~5okNEWen|UCAInwyF|6=j6 zb(m12zWRJZ?{SnkcfBS)PEUmDQT?9>mnecWimxo@a!)&Fl9hX#gc_Tb?T%V^EqCR6 zWjU8LMPVMCcy0mszR!z`mT&vi7}lb21;)D(pcx=8=Ym1ow9X(@#MjlYz}@|`AcOzc>5 z?%8GCP~%DR%e~*}R)2F&?Kxe9iV_0Sy$l>wpMDoC*l@52@8--)e{7}7 V? zKb$cw;hF60WbNbYZ`BKDv6i%~bb8?B?QmyEH&auR2f~#P3-fRxvjeLRP=UPqA0u7t z?PPe~L8 H#!a6sy zoTBKqLZk}G<;k<_WtIO|IAi2F!4*q@vK{rLvDTZMu*a~$ +(gUM`_%iXTO{jMbOt_ui0s?H4Aw5E}BZpg=Iy~lu z&}-S)Ru_XF+ypLj!=l$6Xv~2-)NJ{5%Ss3J6~Tq5@7g#RYmWvv>;GMs9#RF|W*!{< zZ-O~|DqqW8pF`8zV#ElpYE?rPl?j#+RQ~j#{wFvioqJu_xNt!5G&5J7Iq!hu-K-j# z{_{hExZn%nm!&$;Lq4I48Q~clOB$)J9yO@RYD{>yGrL~)yM32=GQcrSJM8Z9{~Id# zPkPxF3c^{3))~5b@&xVX?s1msU;e0fF-R$nlGA<6dH2g|QyOcZ1J~rr(14U(Tyb%> zx}c8VWrvMXmLQ;z`LE=l!ryqfoYO4)l9!1Qk>}m+O4&-ba*TMQN4$1zmBkGpTe|;G zn}ObHn_K#AStN(JqFXV&?NFE|ST$qiJ9ZhV7&QxO$#rwb%;6^2Y>|{>%HNc?dzd{B z6DLz^y;laRHh9#A_9j)PANCifZSSvCDAQO7Zuq}C(f&-+O}FhyQf&C3hM&jYy7yj5 zou;&+_#HKA2e;v4SyK2aUo8g409C@ZB^|ZDgUWkn|7g=UwtZ}`vqT;91 55j~VkQ^Y{HAr-H%xPPOdSjOWfI&~_D{(6Z!r5Z)Aaz7A=d1q3N9_$H80G9Md#zy zi&3wC*hh~e+Ny=t9SnisbO(0R@|dopAJP1x;WC$#gYKap-!I~22z46M(J}2hG6QeQ zLk(z4_QfaIIm%O0lWRxU4SuJn{zWC)gK3n^q2&D3z6ilUS#h3oLHSw7pE1pz5SDNw zW2=jfrnL7yWLV$|@E^PMY?Oy%LU(LoFArauy=%d8vB*nn7ImUJ#Tp@BfiL&YCSnhn zVq2zZp`J5CSG+P5YX{SLY~mm8T;ln(bH&AS|MdJ2?9Y?hjJIAU@=7)*#%=Re0ju4m ze62bbE2|7mP<7&eJhpv21Id@6nzfMv2AF2UlF`X;CC#^$$Ce3J&v)E7qP2$=&XY`% zj?`}9;)r+J&MCLwCl9;8A 0I6^`l-X^6V1??gB+Zr#Fu4#rI|AJdq0ZT5U`^5DF8-0A)tmYCj4P&(H) zTc$#Hn|aeZhodAR`NtS}uX% 83Y~yI_SKMK9^gTbB%lB# zS`YxV!!Ur-Cuf1cgLh<@vW0TN-n}lp9QK-`6Xa8U&H3$53Pe9(s*he#VCab_0Bdjt zurF|Q=WA%xMRv`1-sUn=$M@ZF^JCV>pUpfQ_1U=7*Uv@0l}1T${$$IqW#x07bbBid z&?nxuV?Wq{6KXK@5$W0!`A<}i$H0k^;5aNF?BIfmuG;43F;piT1pcbh&_(NYpuL5> z7ei6}AFjHZf4Nm%USZ8_LO4i!76GAMHITHR@kJMCgIO*MYctZnb^hp6sGF%Hu&*iM zj^=Nh{gD6Sw$`0JXIsc(Kl+cPu|o7Eps4tji)ko&o{}Rp-YDy1P-1uVH_pY{1+5*O zb?=KUTv~b?)%5>#CjDi!=>L6v^;M6E;qS8_{s2}+bzu)z{=@@JdrfN_s_J>IIp!HC zXlU(H9aLzApICDX=B27~{+Z)(Rd0U;b3L{lVtWOB_Y1EoQ)#Wp^2r=vO4Mx!fv4DO zlhJ4BcMo2ptibQg?}(Uty%P#rXFq+2_3H%N+{Xd~1KENzfnhtK(XH9+*KZAhbfNwD z3^rgKkMrF(!EUDK1}U?KDW@7Zq_L#4m+|4%3uCg-scCogh!nW704q|i{(fI?+Gv^l zWO}P)2P6l~l%xJNQ!YQB_3p}%+eZ+jev-yY+f7HVeV?~Vp?n_&{1iG0uV>1>b2?KT zDD#IY_7w&!q_0T8V^tB@5RmDos|?djbtZ$Zdo`IxZ?KY`;2q@1S*Nol(3-(qI>;0E zwCUUH4W2M7W(__QYMb@-^oKVB6~8#=JkbBg@VFmTJ79V!3(hd~RG$O96v>QGz?@Ut zvutZS=s?%|w9;=g*gF`DEoE{eqL04da38#_=q<3ah+sH<1C!PPnXWG8s9$UG8Y!NA zcVKdx?i9h3-DkB d zb=2N{O9gp~?lZVIO6^Ls4e!F&&d?|>^xOf2rFY#D4nb>5=%cqQYr%1KX*r|)a!Q}Q zLNOajtm}qf@v+P&4dp+&>#pA`>^h_~CNR#SXeLv^v-?@wB`&$Bj;d4Ng`1>~unIvD z%-Do5sF2&;sCP1!u?z(3(RtGogIrpd+F6Scy1EL?5td7@^Rj9kxVGUqN|w&XZA_F9 zLTRmwF9e5bVLwl(ziN}Pyb~RJioE%JdQ*~TRaAbh0-02(n0ZG^FHE~<_qmR!VOR|i zC{e=y+tcz_f6E_#7xA>RUxaeao_=09{aNemgY(4BD0o#}RPMI}WSToN(p&(q+&`ee zzT%>2ISaN%yi(11^5OobYt$3-KJfcFXTGFMWxn;-r^%{p9PH|85o@D%=p1p>#pN{C za^lNsU-}PnGacWqwOg@1B~n0^5LaQ}ab-cxjn^)?^0DU2t-ey5u@8ZH?Dr`I6}vgT zN#nzd{{V2^Ri`T;{$vu-UuLGb>&B5an}0(vt{q^tsk{_LjzgYB_nf8Kl _8Z;7hlsX&$a0>$uKm+J^02^p2Z8|GwZ4P7ooH5&TQOeekov1Syknq z6qMT%=?S_4i#`ooIuVm`g~w&_o?pM<9%Y(KUzHI}`;>2aX ~R7t(82 z&$c$-PXL@e=+~gjq!Wu1)3(`<2QxZ}X76n?sAOy2Eb>%aecMA`M^1$TaceL%V36}& zoS0nsNikXzo^o8&eX+x27;{!~sc3;`3Z>gwr#r?#fRFbd8y g#Ft7ks Hb%r-(@5s{q4nR_ k+t))ub}OcklkR6p~eX{{_P< z%xOB&`x{KDpMFw!rLBRr8lBT&{p@GwDQ-z*pHN}dEZmh+Sek!-Quc$w9%Z=u i3Y$n`3at_4})d)>9FYyIAE_47o^J5!Q5qfzU$9*#1 zS&-WWtoLL;pX6j#>z8@F_!+uJG=l2;lh;Y216-5z$zLja>Y1GCqA%0Qo}f`Zc!%aQ z09i!^$iVV}vWi-$_1fI*=_t0;(*bvgrR7UjauUqEuW`aAMH5hEZ*TV;Gc??fPuta% zqnkg{rEgP1?8>SdH_DU*x`VU+MlHJ`d8sqY%gc=WtZGt4gX1ed)5ZEJ?sR@6UuMFr zS*GMm;sJ3oAuG58$IZ*4)WQ(HBpflTBG(_eVnodE>)PrwPV>Zz?dRaoZ_0B?(&;N` zB-p4}Bk1zGXQB6-Z}=7Ub$LCzPJyqz5jsFHB&vHE&Ut(RC{=!Tm7&dmbDv|BlNfQL z`j$ ?#Y!H(#e?;qqeFxpH!K-YUrboX`BBPl;CQ0*R`d& zw54%~Y=N-bUG=hkeS|Ctg$+#8Pmz;N7AnoN1614Xv1{b14D&W%59B5InonRVO|}Nc z*bT`;pkF}rS+izr6tzj11K*Q`uIkGBZ~bTASXoj)bGgrr_nTzXP*neem0v=_G5+x7 zd1P(_NEK29rNy7=Ms^9jsEOi;vviBruFQm%{{4f9rkCZ;a+2oasS9)-WWz9UYE)^D zmnYq8Y&hrF;xb;}eG?vAAhI4p>R}(JCaV`#9{X p@j1LxzXG8C%~0g< z_y#@X_bMf_@<%uh5$2T$RL~@A!syYOH{hX}6gmz?5G}yb#Si<{V~~0`qMA^qNYMN^ zARH*x{YhaD+2(C9Y=#HZlf`z0SW>eS00$6q`>y*1<*iZb8~0x0XuahjYsgW $RzEMa(;gPcR+Z?^cQJZjWA5DvqM51Mr!!O6d7(Q|tuBPiCK=8+2)8pNi?} z*)E=|r@QFN^wG3lH$5Zy$)Vl!f<-$H%#rcYTCj-k=|EUqTJI#6`zVk_!s&{*`jf&I zOhpnMnr>#Y3R^SI{QBgsbH~@_vnq;ZA1&%m(hlo}hezu`rH;Qq<*|N><0`}J%n#}s z#=c&;oy5p`#7(+sVA14X#q-+b9 +IgrUFMmWQ4n1BOkhJ{Ub<@1d3WEU Y`CzVnvGq#_U473flc8hy%X &39!*Yr)Y zKY>P}d@pz%D0tY&B0y)^e5eV|!AB^|MHXa~F2JGD1j?YRnc88(xTI3k6{PriwiW!r ztQ!yvOMlk~YBx3&TjR^k&@Id^$9eRyj!uQj*KmGZ)B9w7Y^loCI4|^RAczc@UB?n- ze5}~7z$F+$R3s$NwiODSXqt|jK8=^->L`0BXF;yvou}KPm9{(V-Y*~kE9l%*9qOXn zQ;(ITp=8H6A7zjGvi0%L#K>eIqVwC#qb@J?= t zbtey2)b&;~Q8g2K2tfbiSWe2u)Tok@>k-Fc)PS2#{IDHIP1fK6`s6jhWwo5kx9j@w zCq=AhDX@5-!*_#FQsfixPD>o(7{-1~&t=_&*i1|~u0MRZif2ClNdY8CRDz_~3zPOE zG6}J2b-4Y~%V^u22Y3xeGUs!D)pW+wm%h(nu<#bdiB<3g(sMW R}!%%0uN(9hOXR|paorR1XGAo^Ly=i;+4Iq4Mm95F&LA3TT zJ`yOPRpA=7XYL9f*w!BgY4(;D9lUdnt%g~$deXozA+Pwm$|Sn2XyqUGLh^TYw5Au} zJoA2_&}w>??NpzqR^-9J(n=#mHHo^T@m`Y+7S(m&D&Ind{G?dFNk@+5f==TxWDU$a z_*wz@NR!p?CK1>(I*@a4;yESYqIH6W$o m5R*8LQJJGDRt2O;kv_o$oFE-5^UDPcJW! q+B Dx;YptzR+=<@A{Mw z1)6N{N!*AA5_rKh;>l5TBxT%4p p5sP#L}KmeVxMpTu>si4L>O)8J% zn30Vw-_3QyfC;~3i=BthoZYK)b7Tdd78W|_Xlv`f#~W_=2?as5^9irKo;ZR^HkZnG zU=xP$=$o43(AaRSRA+l3G!7py=L;wmA1HA7-L-{j7I;iOPU!1v^O&r)bDs{kD1Si$ zp2e8txoILb7`}W^MB9M5F&j?HB;4{n+ZISuUX45O0P$lL6ncvX^53)?EM|RKuYOVC zIQAtiEgh@`>jl%5A=n6{RG2tId*CKfw`tnLRx+ Fvtn#Gz9;?6NHP9m R)7jXl{Fyn%*NVOkQ$qTa>nQ}#>-&Q^Bxy^5W+NtuOCw0c!QBM1V&`OMbS1$ zKOKX#Ehmo1#~%g0%^_xV%09igyn3GJv?a^7H1dO-8Ig^Ec^GMepjwqUns@eppp`Y| zu@!i_%o0HR+WgMIWMgMbcnRA1bL^$a5iR0RiWP}%k7MnXDXw;Bk1L{H6Ib=^xg!+i zYT7j=7Ewv4_#_5Yxn%P(U6TTTF-A@%dVFjR-?goDiTU!}<=RobSLw~U->|a9U_BV{ z)NiW-G$4{Vear~{Xq=Xivs}4j>r-D4?-}1)^7N%*WVkH78~{*Cvly;ytpj38P8i)0 zpnU+$`f1 zUk+n>T)fa (b`4XA~sCc|f5)&asTaEU8{ zuZgKL6dihIY2Wk$D0W{+sAoJ<(z`dR=z`0$+*bvMH}_K$NOjZO6T4!@ b7u2)D^CLa5)X-JPZp3t zFt)oBx)>-~Hpq*bLWk}RYcrVirMtky-nXz{z$FFzuR}fm3cmtV)&i{AXkC6yS^IOc znj`?({2Pl#=73;&S&fkNSV5+1_{_W>)7uqSZ_fVXkv7nY(41DH!O_!1y{NBG8Y=H@ z>@nNy#+Sc Gc7HDE(;WA9?$JHD9eiR1ETHoMSdrzuGH~h*)MxB8<@E^ zVG1q0GHk8%pLJ=emsH)zZNF8W#3uuo69nn$2Peg#65N?gp@ny(I_;7?Y!4NJr_Cvj ziwmc_zY-#{K7O2qjlQ7f$ud9bNvHF;lK8oy8P^_OCxDf`nL{wttsMF^QyjA0oz@q; zsI>mgaE{(~g=qx&39OpC>{)7i;Osa0EIPw^BaVY(2$ s4 zYcm_?0%LhbP`)jyRDf&S1QcuiD}HQ8brOhPx_9OU1jgPERkE?)>%NVAzC?Y?-%x&N zPj~a2c%`x)&+P`AT9La+r3z+v)ph(?EPN(^zdTNB!QVsnK1)OlvaewjJ!E*t0Z%=L zYL*^oZrzUo8wHeWwrK$c+oMh08@ptI_OXWEJd8(0<;a$;H e`x zK--*3-#;Ay21Ry5W;46ZFTlXCc0U$P znNXakKtEu&v;Wg>r!TlAU@wrixo_!zuFYuvSzg9O>>E{+8}^kCAD#jx>n;7HxCZ;q zc75Q~7{Nzkcr!?4?|6a=J}p-P8f5^|n3G|mBs00K;sHQ$>NAD`Ad8NeDB`l=z;me= zbr~DZ7j%QYVPWu&oxH`z+VM$?Fx7f5Bv#VDPN;znKxAyqh1fKU*eUxFve&0${PLRx zVK2%+KxZqo7(dNL_Bl)>(kO%H zG~ztKi%|5e)9BoVxt|nmm<@L^*51=JiZR}@3(xCIrx}itj+h_d$RV?9;NoSECq_zb z2I8ljS%2(VY^ni|px0=Sb4V*_T5GMMds9}JAmf%$ onaLc(Y|P`?VaRshe^A*R&aI`=S(7fCm^qqsW(UE7Y<_ zwIHXB6{7YM?Ix {J67=%zJapx(_nbRHD%pPgCgb2~$1?XU U0t8 zHY97{cR}ap5bR&2d h6*RS8)^o||VdqLpz+*d?cKO|s2cCDn zQDP{l(v^MHlNJ{hj4&|t=x%*q(;w{L|2(j%IAfn|?eYH(ryQ^$n(?Ikv26Vci41l% z{)FHbrrW6vP5Z?Y3^mB468`7y>0_^)F{k9uyny{UirYn9EbHY~`#3tbvcm6dy zdz`)@zv+i8tWF*;-&=?FgNxu)MeDFzP?~}DN3Xg1K8~3ZnnmTDldU`Uu%2^#+oBDx z30Lq9TeB*e0zsK92{3lltDTmQLRUXhFSebhNTFbKk)#mmVBGgw;>eF^;t3|q93~*# z*D&)?^xG7Z;I17;RYnqT@j~pzC`w>(PY%+O#yVWbQ)Eu?G<`ij^+Ub?VYZZ%oM>!# zK8 2q8FOAk3;r3l~;e|3*4u~8l;^PX-cZa $P{U;YRhS1Tw}U# z@*Lc@-UAKPD3szFw-mecKH5LiHtS(T-5!pb1&ff|JTD1F?&TXi<4n++_;hgot~c3z z9?VD !AS6i6+Wz9Bgk^XM{7)HEfPa7MM9>KmwaJ_&@^j0)Y=xzL&n z?U;6XIvyNRpXj?U#Sv|0WO!~QGiIm}O^6dbW{U^=S1&o!g-F>==qrh3d#c2JMz|Nw zC-jaw4w$e%B#$zQ@3P4a?2Uvpw0b}L`sL%{qpzJet qPT4E zQP;b7)M8>6>F=?`s8O5%=Z&ehPWz)6+)iXccE(h!PGo)^rc&v^5)0<}E+OKgOLyn> zl0d+oX$=ZCq->FKwPo^axlw}V8tYjB9Kr`3^K8>M(01D;FwxxCO{! D7f8|WZ1g`Kfu&I6sN1ouMld)1E> z4F;m}CZQyM `{nm)CGFeJHGrZ?donP$bn zg67C6`MJ!|)fXzN#3v<)Hq>ptF$F5p^C8&fwE?aE^2Mke2a|5A8zSQeR#BW6R^?wY zyz;#?-ge0P2zI_Hs{OkA(!zmQ4=y7tXZ|oRKZMLO7> cWtCxx%%Jyema*E3*t;OvSi>*GwLywjdSB~*<9UNp z)U5KENat_J0q;6(93_@5nI@^cFFEG}MS*8{#laKn7z&pdA#;xub{`D^L%_NOvK1%C zIcKg!t_2b0!kpc2keA0SKlrO^C9Z)53Hzm=bI{Zv$FlM=6pZXq*+bl$Jxl+>oI6bc zG0a@QiR`XN;x;n3mK=k-5Enr&yPX1)DDe92p$d~XlB8}`64~Px H_w3`cZ;tPCPsQyM?lQUdh^funo&P` zNffAk&pP_XApX&1$xBU<9+5Kf$THX^ul8Bw8#2R6d}RaY;H_F4O-p^Bp0HTXFn3L2MQcq*^uW{5Gh{qg^ z`_>|FXAf=4xo4AZ;q@mB6eLk4z7b+B1)|`?3zy#CkyehTeMsfaDiT?SxUk-Ek)WqN zyA{k75e>nJ)z@90TS<&ljHeoqX1~qYo-Kapo#TZhUuK0E;jd-hP}}3HE=p8e=9JcF zt2Lx1=(7j2@xf1ftv$f27oUIb5+OL1MJdY-$Yzr9>42eWH70W}#0J^D?*tjcYz;x$ zQiS%yMT97|jf{qfc9P{=5R$ymLh)|pM!>8^mRDqZ3y%B7h#p7uAo|Tid3lTRy~bVf zk-s9j6R>`t>1GrwRH&h1uudb(bk!Kr?h9e@d|wvXk6ZpE!dYhj?ZnVr9b*4J-Y`f` zoH7*CVqBjU@5t8Cx}S>;=o#altn_AVQ*j==^)=9^yy~S}CS~unxPmP!E~jSgXbisu zGj)4ev2ZTC^%Hf&ni9v$nv&DW;3PR<1YS*bF<~tqY}EDL)Fh0NBbt_x^+rV88`g6- zE`ja6s9TbFHmGs&SnZMh *Pb>}J+jzW ztdNNwDIc#o1f7ifaBiER{I2@i(JC}vv+YC4CU@Ili#WfyU2OPKzO<}H9|lurvJFz_ z91z^4^LMq8Bx<%Lr)$_RXz3?Wztn90vC)C-1+ogajpTTM1U6uEQ&t0KkR=F-xYeD; zv4wJE=-ukfq^1>)2lau8iRsTM9*=UyzLr@;-6fx2y~bqN3a43>N$v6Q_-b}7#x_Nj ziSACDQ8EQh+TPqNE8gkH?Ok7tT{PE6@X>p)+jGL*l3h0yKRXAguVh TD@nASKYYkJBXZmChuc7NKPkUgQg;e@3-Pe^Ezp+^Rn z=L=}rxS#dZFnPCV1upH76jqU9ykR}kz&KE@aePImeB^F*($sdBUJ~Q=JQ>z5xJbvc zDnQ&K=q#xj-xmm2*_vyDGim{d1jLs{$K)K_MQB`Puys}G*HN2Pm&;qjRKBc>`r&kv zKn2KR!derUT=;!p_3jsTZR$DVGDbz;{BSbE9 WmMd#RaVv#_H@ zn=PtVcr`=XVbI87&|){%xDp%=I JACC>Zn8XTh>EkP ziJZPSPKh-uUur?UfuG%#=HHbKW2l 0O zLYmK4vPWU6i$)W%Z3d9T%)_rpBZ4gs(h8^lG{l4J8F_aX6TxK?V#IuqXY`ONqW!e> z5Yx8ZKH|;vHA}*ix$K78kWIG;xhm0MB5S05 zOZA33ZGlLcRAYNj{eAk~rS)UtJ<@$VT?9agpY}>^D|Lc#>Zi2jJD-n~@ayTIH-ec; zsCf7Jvil4R0yP&ZeE$`A^}xp?gHz+JEzh;eC#Qg7HRC-^>~@-1(*M!kb%r&Wty>fo zk2GcIT|q!VQ80=S$RI;EM(IU}h}4KkuL%k&5K0832pE(q0~qO5kX{9)g&qRZTS6#- zgm^#aoSEx+Zh7W8_nb4g{mAqENwRl#c6s-^*1MJuI=uwnFzhgRF~9IKGy#t=*pBt| z=o #-7X%f*=sNWdG4g%gjA7@u_>JR>^IAkGhG% zTuGp+o#=IkI=-AVJmvF(U)X9UaYFGBX&!AGr4#HfITZJ9SrQ=-tHdB4;&j-v8>+t> zyemNp#_z8K3YTbx8XYdiL)T$;j;$3umspUPFU_$sKcDd2YvLi(64U&lShz8xi=j+% zctra7EW{eWa&h@}pwFa9%fL-to^ #%?Uk IwONDSK-@i~0s^akC<@8`>&n3#aEFL+nMat|6~(&ub>m zE$JkhsU#o9YRi9Yp7PKGo3P@TQ5_+ZM%>k+r06J@pm|}tovlUNO5A~?El7PcQ+%B2 z{``{|(z0@%EQV&7E?0*gvQkehtFsalMD-9hEWrwZ_z6G`_{?QCOejl=q#F_0nVazH z{DbE%R^4}#(i5E6<}-Pe%-kj}ikPl{B$)UzE69?xmYHv@W$(<^_d@E$kn$(~yG$h) zm^^;`f?ps+fnX1@>gDC7WS^=`mm4Ehai@`2L8B|#db_7>Ud4X2Z8b73NmD Ar zl7$ LWVJ8}?-8_QiY*VApRUTuys*AYm;q+m^a~e i?-pYT92La-& z)uBt1;&n+k-g}!k=eYKmXmdM$I<_wbs4DSo>wIOxR`W3c{c0LAD4M3}^p%Ni6X~lT zNsPBB%S!C&-;bGDWu5!eQK6WfhOsdT^qzcV_ycdUYyzA7YiZ;yLo2vfZ^Sg?ST`y8 z%$*B +n7{T901Ry!fNLu>V*6B?3Ywox9n@=4 zL?1~8iU*JWM|8zA c5kCrg7-F&YPT@nwr-~GXXsD0IDCL9Dzk< zEnP}5C!9MT%>tTIhi9Io1reaM<<;N=j6MiE*nM{N{ra|4#*CO_ogBZzrk;nLn_Kb^ zi}3i1W-ar#SdwNGPK)aK0)|*)8z{%6TM9ErJQFQBP(vv+CHz|AGTBCF{k*KPVp?eX zsh98=K*NAQ79uXjunQR@B9D?8VZJX`xA$c1svuKrW!t!i!3eiQevj@HlOHP(mxn$m z3U@iR?UN}|upK-zt*sCRO``^48YhkMr5Nw}iTVl8J;)Qfa|eahs8GS~=4K+{jO)(u z-ZZ-B-9P~dA+x?&lf1T?BcNyN9m^l^)KH^PkZPLZ )u#a89^q zUT!fq3Z(bLed^-Qm@C%>(Efbl0nZ-9D6dBCrEDuut pP%u4zM4PExRd&m6 z FP&v*#Z8L~dDgflmP?uR$6U zcX}67?!F1?vZSj}^U1PA5a(aBS1VcDcFNNO_UxL(IO)>Fqj(xugG4f$0AVNo^59r( zy2hhb>q4`=22J+0*-d~ he z@f0;dW81?{a)39(t=31sSbRIW2qrv@w?ECu^AyQ0l~9oHDaybYcK^t;(T1u2Hsg`@ z#iSsGX`#V(F18k@+ A@rG_(i3IK8yZ^oBKd z{qtFPhnN-DYl90PgyRtN0EY$D2WJO!&RJ$J4sCJs)6^m?4pwA##R}5s%@}?9CV9RU zkVYjOk9vks$+Q~QOW#zz*5Fq0IpigPnK3)yByoctZmg#Y!Cve8!weifshi -`?LpX`!+?IG5ovbDaJER)t+DceID<&_!Dy>m-k6rb)Ip0QnA@D zM)iaf9qw2}faCNe>R7 zpZN^_I`FUO3}8bF;Do>H#nIHL4gvfv&M`)aP|LuB*DXP=pE?+H=ySI`fgM~i{Q%9* zvSW5QNT>fA+XMBHyWc=UE`z^-goiR}*=C-eH=kvEhS@CZ?0jW<`FZ=6QrpN|L;S!p zNNhHsZ7ndUfZjW{&PHu&WLzi~#5^fe2FWPP-+5r+If7q5xqX}6+k|SCxg5|Iww^h# zDYsZktE^jjr~A2byE8U+i9=&eZdvRbL@3?IW~vS@v33~<%9&<=H*ug%(p_k#{}`+g z1xusaMr8X>&Gyu&iS0s~J~5(+ZekCVBaOO=E7|lea{wSVAlo=Ditx;d9-+P`(Wbd| z>jVew;ufDmv+Ap>Y!riisL~>xUjp&D__@lovzAI;%UZ1lnWhl$4-VWHj1%sGw3O@e za_RwZS2^Z)-;V9(A-dYPdWe;P+2>~OD35-F5OKm^nV$NQVB5K4wad7oE!sJ9#T6jn zNG4Q_0cwV*j2hC59H|iZ%$r#>rDK(r-Xilt$tludrEpHmeT-%?x>Hn9;s&c-jc5U~ zL#lisqcZo3UX|WNs`eQ<@eH)A_Ae95EZJ{ndI!knhQ+E-lT2b%Un!nFsqWf!_bzHx zQ9F L5|uNXqcYFbx`W&xvoXcAa`-kyhoCM+4tqiux$7;)z4XBOoriJfl#*Ss!ldWQ zs}w4w4M1E#1t@z=)60w9P2x6_A$g0>A0KZU;FDu4;+}${-OR~{H&d`R$V;z%6($q? z1$ER%?mSRq`XKVe9=|Mb8NiBpv1e#{KBEwy^*M$P1;gz}d2t5^Q$S~O(7M*kk~*w? zRXO?m04U8ywT9-1-f~`VzhXX8-XungJ$C~2%5k!CPX_n-&8H{IZ;a4-UY26vcZ$3b z1KtR|PMFV_D}5Nie)D?%&5Hc;TVYeG7W4I%uA1e@z8nvAjfYGh=E`eTfuQZ1W#+Aq z7Ui{-B@PImQS;m6l+J9`hE{1)u@hY;#@LL>f6sA=_s)uSjDc|cnoB=nLhs&LffB)) zD9=Zq91`@Q8@oI@C-^CZ!glc#1AkMe7=ZxeBr_u$gZXRPD|U|_9yZM=n>DNIT0MQ= zY60l6;_qF{fA9Bkes5L$JNJ|C`@qs7|E#^_>Z)+Krra6XP95=(^BSTVb nTVXV~aFc5RW8V@S^xbz1~0?Zin z%eyU$JD>$r>rJ?%AM17*2@-B9C&u>^L$vNTcY8As-wx>3D?09%ePEE6;YQ{zmsASV zd`IoOeSP}bvffo!pWkB33f;xe`eUK!hOYP@plur{jN=C6b+PD~E{Y1OpV P;<2_|hd6leDBgATgKtDXO+aB|~OQzWD%DY9dxC1?>@EtQ{?J{8f?i z!8$$i`YK{7m{Y!7{X_&^Gw9WuSUvP-tATcc(#-yo1_o&v&f`a!32Sx>chL2I2`wy; z?A;T|xg9DRbzuA}6X}vI+&c~k%3CZ=_)0Lo^&M_I!*mQ9?A)(5khz3CN0xZ=8V zYoC=ozbZlM|1fP}@?K>qBMpgdE=YFMNje3Ze>1MTi9>?}X*Ys&$(U5If%jtv{^qCgX^Yd2{hypZOx0NPXomG8< zKWCzaRBX<#!ACMy@0+1A5PZn3azW(p@4d@FpZRO^qF;-<{+m6&_muk^7SC@BsYdK* zkOn#F;Ti+~=M&oIw-fs9I1MkNWpDXdR;w|~2$ngp&^W#H>CMldQ=<|;s)B%x8}*Ij zb9!S1CE=XIGKDN}=Y?IXl}r@PdhNEOg#?JPtbxR&Z9cjrffNT^qaD2{U}6nqVxwfv ztxeTuZ5!9BB1fTjHGvO1=k?te=^I3;qHJ_lcKI+@>UiU`!*Ay2#8`rsUGdYjbR_jF z({^iVWOotOGv@^%c6;oTiJIcG5dOW8+29Ef85hYAr*^d^1tS1+6}4TKGeVb!?Y=U3 zoNiRW-$yRTWYncf6Qg(!qo%R%Cvoe5YOusqWh$oR)<{`Y!ESJZvsjfIrG^3!Al_4E zuKrhs^bhzf=l6Q_e?a@cO{YJ&ZO-q7!v5gC{E=hA`SrWP?*G%{(DygpTmH!Z?jO-M z=l6NS|CRG$9VO()Vn~ghP6l7jZ5KB+lBb++M{~E%wRyHP`AXGw3 v^#O3Q3`R? Kk4<_(B4QgNcManRhGPX)8mVomQYBla9=o>?#uIMbTI zzc7E<9@SODs8GMshvKEutUkZ3)v(PN7g6t%dXeoVBVram`?Tpw8$<@oY!eK(a857N z2`}_UDh>tSjlWvzCW~AWT=TnP;&9t1%%nk8n?Dp=7D1jNK8Z=Or6x?hETJN-#^n5O zWpQ=&{3vpw7q(VzJcDjxNt?C{H+KJYW1cGLyL*`cNL?tEC=r9$uW=VyXjvG0)rY5) zl+bR%JIe#dkY(yl88xe%#Mbw3osTa^y4&TBjJK12+^LAQ5=c=B8x{`vQTov4M<-2E zQp>ft4kYMlN`(9A; UZA^;#7be^zxyPDq0)?^<3PKs(M*a_`cs|GVk)ji@8lRL@r&O zter<(g*Oi+HWXgG!e*v#{-@aI2Zy6Ju7* O43~4BydV@b!J(XMq}bGOSvJCAWO)c*G4bZjUFFfY7jm_sW!`tU%*yr^Ue8@L zvziuTne@9qDVLf`6DpEhVMTb9oLBDA6=4xUBI4enL79f&Prf=wq*)E4c4b?;fxG{} zhhOvde`DI^AF+k}BfgW PwNSuO;7H;*|EuS1Q~$?N}OHb zPs45&W2V(HC;V4=?$nvgdoe#wVy3+~P(RYJ3TMGDm^COwqXfu&kEcmtF$%U71Fm+L zzDy*Xu-1sqPYixuPDlt9b;o+b540%jQ}02+cvjxgK0R+Zeqm3n#1Hwx)_quTTrC-@ zWiXj5-Dh2IT)kAC&PV-$*o#J;atXaoTFnDwJC?&b8;)Vu7 D@~EK@QFB8f7{~PnI?bvCTuqUk%cx9JeqNiex3>=&e#&+MdRaB$@2G( zaZeIjBwBTEF6qe!9HVcO)1zy(W+q&qp3S~e{;7{On%$-EMhD1 <$MU~xgUlR;w!d8_{wBiSDj =&J^i z=BqeS_8jxRlVY&cKk;|{u;ll)$(s5Sw~%-W>Zy(GVeRUeeQK>_43mi!cAizznG0zT z&yC}hoJrYTHX!GQdwn$RHN6b=**4tG6aG?rcPj6YdxNP2E+EN<>@>KU@5<3;P~La% zY)&BN+<52MT LBYc*q&llr3;s@Q%A8tk9tBB-`V0*ZzlwQ_Dj!F)>cp9$vRb+3;Sjzaz2heU b`thS4EAX)r!1x5e$m*~IMJ zi#PNTc@}L>cJ|U88$^TPOA=}M#p0YjLY0f*U^%k%O;UM;ROsQKVa(&8o^=&Jc%XLC zvulb{+I+9q&AX)1C6bCF<0{M?k=9!a1e=KhAI*rxK&`_ODWR~8YG=uU0qb}Jt8?Xn z<+L;E7eBh?L6MFbEr%*B(KeH oFAPz4-AQG*{1+ z+m{l_*KSx@jg562Y>p1`q&3b~ug%q(fVJNK$mUbgufc2n*i6~Fx%`MnAb=JUWypZh z)*58Jo>Au86-HXM=(Dn#4ip8cE4FIu>(@Y4=@$ra%9z_(j;1ynbxbR-=}^ANo{&H5 z+}h5nK}c3me$fNuzFc?y)g9A85RY+vO(OBetY-NGShgb`7uuv94LT~PU<#ana};n8 q8T8UJt_FE8X{r>svQ@*tzipX={~z%I5gzB?D?#u-JX+-ZI`S`A;mU~s literal 0 HcmV?d00001 diff --git a/docs/website/static/blog/accessibility-semantics/component-inspector-audit.png b/docs/website/static/blog/accessibility-semantics/component-inspector-audit.png new file mode 100644 index 0000000000000000000000000000000000000000..923240ed932125f710d35c1c27bf50636a742a59 GIT binary patch literal 237174 zcmafa1zeQfw)YSMN()Li0xI3zE#1;3Dcv!2ij;JBH&W6_cMPG_ASgo*2ty1EeDj`j z&-w0qf9HA!o?t&~KWnf0ueJ9cVl~thaG#Jr0RRBFN{X^t0071=0Dv}zg@J5&k*vx9 z0N}{l%gAWhTUh}Bim_?>m 2 z#mhSL4f-&mI&R`RJ;@K)t?VDRH-|$%XvMX5q&-9c4B?58hkVHT?dDY=L=1ej;W3I5 zvN@cg?4hX&_|16J{LMUg`R7mK=lf*+076a_RGe$nFR4USRCtBB1rN>*4N?+z8C0o; z4@VCT DZaY_5R@ee6r^$JZnqK~j+uuLtgyJ1KWTsE z*7?MY@*+0zm-HPLpjo(pV-j7m1pjv}sua^=(ct^g6j_#Z$s^1rb<<58x}iAQwoq|b zwN9;qy!$k@T`(_5f%oQaim-O#-P{<8 6KB&;dbTTB(A(R4p#xLtJF|z4FwQRs>_^ohC(SF18~Elt+?z++)XACa^Y%h5)09 zZiwvD`q(L5K{1Y7(gNl(ejNeie4B1LyhEN5|0Bh3A*LKc5m9I>4p|1zki@S^3@eR; zV7;G=t~&5c@AMdf(nO)>Hp9$PDv^SPlDVXhn=powf9G~I(iJRzWp)19n5aTnGc}BA znWgyjs9|Arg2!5_N#@?m@Ar@OCabrWrauXKQwyHa6jwjHRP3kuNV6LTi)GA>u%Jo~ zbia0Gm)4XleC3nN`iXI<%GX#u8%k3{9=E3CQ4)RU7Od&q_(>pK(A1PbK(vjPhFvX9 z+?0MgF+qPgR^R4arbPE_>sC^5D-6(&`sCZf08SF_5LJ(ACef5&E?x26rfyAP(0c z!zYXY##2(vCj(G|*pNW$+z0apEMm!f5R2Y;tb*XuJc>0A?4_=Izg5h+B $_J?z z 2+LIe^_H?40HY@cG~oNfcVvDV;o*C_|k1krECg27yeBl&sM@;A)`f z)YbPQe45O5hkDR2@QhiM$@3{SLH*NCEP;x+IO~$)j{p-53A;-1eX|wJ_OR^w4v7=o zr6TT`A>0tO6I95LtzK6f{W16GZ9Tn6KIK~%vOurss5=%l;#BUaZG|Q>F|9$hK`&Xk zw}%afB_H^JrJL)?`Sa% pOmYx5V5T4;3z1naU8UsV!Zv+N>JgFRA7*;}tQx;dHlEgp3Vky}e<@yR(cj5RL73 zqn!Lc{v8+a>q-IUAMlLl+C(bz*sSA4AIcWc)7*Ru!eP9p2?+9xZitXE6Qtn3YpFzW z-A$6Dd#&Nt@mn&)1y48-ei6#WiOJ7NW4ndX9YTYJUPSw3DBPM8SH9rU$`_m|)boBz z4b+K# 9pgDBI0k>0ZL45YGnk{}~v5hUEJ+y`aOmrzlEL;m(c+6wV z*l!FoSQKYcsL8I3&z0mCl2l~FSd#q4o|fXgjn|=HOEUba@RPuuQYg-oULg5a5&t*y zZ|Y$UFC9!i>AJZy7K&em7Ivb-&!%N 4g0<{)+w7@T|` zW3w#rNGWzKH4UDmhmJQsGI*(%plgL|fZaWt(ZpU$5)e(~hB5P%YU>H!0Ff(-IFVTh z$KdNT@@_(jShEr64)EF*HQrpYk=ggDZ^U?n%2!tD$3?k~DXvMbPsHDBM6AftCo8ou zbq?BcWo4@7zA=_xmtB7&Du2W%&Ul%k$O!x-Hl9N)x1I7^=|w4S=|*Wu>6=pL1*2y2 z?-55Tc=Q!XFMiUy3w=olj0lXqi?|CdR%$Bs)hcF@o}ip~GJ&Uz{R_1$=XYqeTx+?% z_D |VA6uDTnt9itypAJ<{X3~Gi~&@CENYL?Acx+(2E%9Cy{_1FXL zMP9hWQQ(jK8<^xk$|*JDE5?Oy%ls72J8k-&%Q%MVrRwD`bJq#ieKu5YRa(_s4PBK! zwmd#wWp1J2=8O^wpCsT+=k(@O ?UCqd~hwY7Dh zYI|E9n*AN>Y^Oi7x74@yTFHDqYt6FPcJdfbx0`I6ZrZR8n8$1NXq{}XY3?#lTwmh3t1AL_OuwxJ$r=V`Gmu~I}NYVY%}7lt?Gel~yq74>?M?<>q`g?~le z`NWyK9iyGv2m6ZmD*j~UyYP|SCHEy6epqzhsC1%UqEEha{!RX^*u$y&>BL#}xxetZ z|0lbJ1SR~Q>F%4&weGG!195wCBVcEsD)6RvsTcol3K0<`g2;D$FZ4ZkBbVe}?VkG~ z{NAM_fBk0N3dKOuRnlHkq0rl0+Wg&C5AEl|sX};RuldT>mw{1fEIJFi8tMA;kG`m; zYz-WXVxB>J d^b%pcxAnorZQc My`T4m=`-`BK#gdP z{?s%54`w#e)-K~gDMV?XU)$0Oy!3IQ7UE!oCdnFoVh|D<^c^`O%hL+5k8N=*hfI0# z+*(^S=ef&@>u%;Ypaoy7J>&o2LVSfC_@w&D=8ST#mwDUr`|+boA#acL89yyjo$Ep4 zz visB`?U^XSg1+Diw z-Idor1O~v18Fr~-%JspAu;X;-DRc obkI<2PrFl8M9^trg;bl8%GSOaJQLkSM zt;TAw+ca;o_!X6y_BKtw=C0<_nRmUzb0 !yu}vxFh4ieU2xjV_S6?e`h=F2=4-2TMn_<<6DmWwPbEN`=E`FtILeAG39$ z#)>ZkMHXwOyPM5G^8!ooXBtpYcbmlf;5C%X(5M2|;8ouwx5gGi`&`hsmDHuhrQG#( zKb8v(qd5J^fdZ=F%_WCbLob7?(+>=b48sZ-3D2pIC78sP14PfS2ix|Y+SOIW-F{h5 zjVEYZRLtBxy_k#z<$@GueGBZx4*f3Ygf737pF2Y+)=bv$?+@UI19 T{eFIemhEJqu|K#+`uw_E8mq}$d0M~Gk?-Gg7 p=Wp`S{}+K`GmF)1;U z0#(0dgfaY1#$_C8*yj>xalTz4ad&SA%~@YTXkEH*&Aw~6Fgu1%{%UBu-@6ZJI5!RU z)rRXmI8BROc7dQNn-VvihYb5x!^~^yYz2ejV6rg^(xl(-?gq?Ia9G;;$pCj>umOhL z0Gtk&QZ>zEd`w);V|z@(YjuOxXiDB|$O7PD-^%|7c-jkac?{@(asbjsi77`RfTGOB z5-F^nnmW6Jt9a?xDc;B5rsikh-N#p5mYNNV!EsWn+08F*%=F5`&VhAfj>u^Rt(Bsd zDgfZm1OS9Y003}gQ^+0w;Kd059GC+D!kGX7iED1BrYQ2khj#`_Hma(CSIB!T06Gde z;1Ti;1$l_0Q2hH|9)$&f_K$W{03g~Pfc{@JYRKzfpCsh*SD$}g(LO~1Fp+;fMIOF| zsQ;qI*eyi+*FD-8@) z-_d&dxxS ?L?CDH+ zv{B(```3L!i4UhK+P?%5wzrEKGwuhXRvpg!3nryQlx2z^ZR@}MqMrSHG_&*5WQJ!> z4I?7RZcax_=*3T-0`6JJl^;S~!fI(J|LnewcqPO7;kVCS*9l#v9lH_;m{o8~j{mH$ z?l6e+r|?AP`)k&w^%cW>6t1+e-I)~x(=4ic;mn)(t8h~@{Fb|JiQN@M`~BgaP_lWJ zkUCy0Q%-{ZvTtiwQTS=g*PC@L+n}B25 zC7A~%&6}=LcwFfytnlt;Yg!oG_i79pRH5>A^(s8r{=V
PV`a~Q#Ruxydn>ZDGe*Nv^lX!k#cNHL4bGn9 zLOtrdu_AnT2Ue4DH}fW+T)XkVEurm1v*)vY8zEq@ee5ElNcZZ^o0J=I%@19kb=Mb@ zhVAvAu!`oJCxT9(kb8L_w2k=0*xwhi1YQqZnyf;jcL0s<7pm_Ci6lbKx|X!Mu4>Kh zf3wbY)&CwGrKT$LYi=D`zC61(M|s!F=NEZff=$U`vFpOHKAV!4A^QWAXiQ(5ewcC7 zR~MdnJ^8s+0phM#!1B4jOZI8?VC7Il-Nx%TN7PX8+h0ptPaK`Y}TgDU5+Q%gDsE z0kSVm7fzU3OC(Hg<6TRoUdMaIea(X<3}p8-5Ij$M>Okv>K$^6NMLdN-bxaSa&_w># zU_p3<9P#|RCKX_b*? SnilRq+XD&-J74*wPv g$3JDJ=)%_yP`7-|^w^R|~=2 zvnG%gF -!`qfk7i>yf`CGq738!6=?In 8vp>7$kU556`-RQt~xF3#^AQEKTJh=%jeK%Z6 zJ98c1&C6#_3~T!$CZn5ujv(?E5@mjV*WkOo3TLWs_aPBx7>LijK|y!a7;2< &UOCvv?CJr~Ba)Oz0lSa6pkdica#Om9jt-W6a3Oqn z RYCAbJJI*+v&zq3A8&uu2>*GkOl-Ea z;7I>4tAz*tGK!rbBq0KCDEFGrZi(9H<1$5Tj#XZ`c~R1Byf00>T#INb_iyk`cx}5h zk5_3LWxr=M>(aLOc!n%?Ly3#mws7VVuyajuT=fV>F69@0ar6quT`zsZ9miee3yy|M zQr{=Q!t+#9O*y#`VbT1|N-im@uo3h;DN{2~3|x#aP~UeE1p`U;IKMw&tqZSoG}(Fd zip6ypepKVvXn%ONDvc7mY=>bx#+&~+J|qa06n(r%^@GI8yHgfpKK5|8UVtq65MG)R zfe^1SozoucT$ZORC1o-v!DAF_+_;^nk5SXHT>Zl0S$3xO*iKSfsWy9UUoTOe`s@7C z{YJK%ToXO1U*}UDdiUb+CGawl;n)nvh|_n*IG0X;`BkH+o+;WCFKeRC1!Q`zM2&d- zS_q_GYCHDAiD-V~JH>kP;S6lg$Cbl4K;#)?QarDxuq<;0dT9xEg&0*Rs8R15{m_$c z8|f;L5RvHs4`bTne4eZ$SHIYABcSChv=%0-_*~(7&`j>@m%V^d-atkM-IErn?68}S z{SQ%T4SidWKQ*fS>fm9TsUToyLj#AOw>^4jrVwlVc!JLI6J+&e>nXCHtE!~cLlI(0 zPyF2IZZ9f3A8GJ9PAgj%` zyS+dD%1U3&m+os)0fMxKir zS#v8gdwko6y)AKYN;{tsdg7Ae@!b9b8u8xNh-$nuMRSi?b3oO&(5fhb9iD9~Aix{! z8Y|^aDLD;zAqDoB^TA1^PGAWl%@_MIm6FOU)td!Tl6t~^ X0{)7l^fn;a}6F-t>IYFFMB_oQK)0WCBTfo<8p_oQfsKzKF#7|TMRUmw-&S+TXU z(BmPsn7n4^1#f9R!_p>2EyFUeK!2MMTB0m}bh_V_%HekST9_@tp?EoRQqcrxF!bR> z40jAWE@|r5jjt2=gWCx!J*rwEge``1Qa^e+?8S&1ixja^8H;r6WWgxlC&S8>TZ+#J zqHJ3)HM$}@1>1wxlLphX6XwV@_)j-l&EIgAf0I$*>mlBT|{iqZmvb~)*}bDV&7+@jn6r~3{={}F`B);Ray%OeH|&ebROW0 zE~DB?7|2Gac>ey%*WzU-^C_*$& >a12M{&Murm02tTd65d)#)=R1as zdDJNEpK3-H8OzBS-V-#ourwE^k|{-L>Pd)pT9$k0k!R&di`X!PD{vIqr}5iSe4?;h zuzV>?MwH4o?i?3kuTa~eag5cBet?Ux(ITcXG9u)q^CjT?rAS5-KvCF)LeG^@TIe1Z z9^^Yj$UMid9j8tAL`6^^g~!%-@7=TbxU`iKj S64(q!aB^jh}SdbODrP@$^rABwW{eyS;V0WNy{gaT@&? zu9N-(ZNkrKo>cCc|F>w#7mtn=U!wIf3@0~M nGYVoHMhfHh&At_ ) z+-We6##$*fadcClRb+fci`BTC->t>*#8Zl?|4~1IkW|@8*QxFINFZjucEJS1hNv zYi_w`>eCf-oZ4$v(R^p*972InrWE^Vb0_gSCj$%ppLVTVn&i&~$G;oqAAgWJS}WAR zb>b(Uub$Gw4Ev#z)V2J68@&}4sf`9JS({f3cUrJDw8ti4z~*~uwg%i`kBd*R!5G!v zJEpHwrfYq*r{<^(lYZ^*sez57iSI$*c)9)-r#=irSS>u`I6 &zJc}kZ?%r*QklC$hRww<3RaILwH@H}5krwZ9I zCtrHik}wvkBmH6)w`3001F-!$`C<$Upk%m+Iv2EcnfVq&WRNPN* 3r(^|GtJ>`9%j Y_p9Nw!B}w?P2zxr^l1{XyLvKV?fqoma)|-3BnhvU&cR{PA>1>0ku9^d?Fj z3b<9(E30$fJUdP8Swr}NLC&z`^Fz)X%?}o8sAa|dHjWpAZ8&R=VabzbTB+yoOVXfj zHD4g`bXI&N4&z+l3ZmO;RuD3FJo_5A?dmf5_wChr-uP?)1cKOc!8cuTp%Lke>}CuP zHN#GkgsO{wT7L0LF0=d673MSAYnEh8V|@-|e+nOfo?nkv47Sf!n+dpBybL^3JBTVf z^H?|Qlj;Q~0x!=g&6I#Dn%-dxuoP?g$wCnxkPN*!=tFFX_k`?%V%3x%72%1pru* zBejj(!#Q#8R$ls}msAMh4PTns!oTnMJmO_!OxdOjDP5{x#zO=GK? 6M$s zz8=`H*f&A92V#sK3z eMpHmOq{I=$AnKZ>^*06*zxOeVZPUo^Xp zKYILemp!iORh8NGm9;} `An}esl(>o7O3#0-62NNz~PJw?isnXso zNA`L8SD$yj_BO(D$dkH_jmJArfPmomVgNJpDcQfDYS{a}dv73%e6O>Iy^Aw|OMssr zxc9ReNksa0qPPE_NQhrBz5z^vq C3|ZNraPIVoM|q$zQ|!H_hKA$SC}jjU*xe7s-DY;Quf1fVP?g z0e}#IlB|@D@9I%cK%j|k-u*)@(D@6mQp#pddb+7Jl#RGH1Pd!>u#ABgHO$vS$ELTC zlL1Tb?DfYOG?s8nDvc;On!L@=;;q6$aGPS;qf)k1JwtyNf7OL`4|kye#J!*`^yu@9 zVE{BGm(j^@vq67cD4+r6w~TB_%4IH?Ma80vAV4mk|F;v)6U$0W$-gxP0thA?gT&SU z*7#SqpWniq1^;_z0%;61IAH{388Q6FGn7%evCG8@aaff)@Ibo&{vU3yY>jC=JJ^3# zZrOEfhWC=~QoMdIK{%KHpJ@O621JQ&-`vjHOx(de_Mn?KI55|ZaQjCW=8LFF9qPE1W7c9nqtMH~Mb09XK6*a(+G z$i?tSP;y 6x5(3L4d$N3+?yZ$#!-?Z<%iAfEPBH8m08E%I7ugQ$&!17V*h(B@m5ZN!1-Z zQ2HO$2kgt-G??qY1n~{?3~SC-ndyE#ID{W;D^8yUTB5hoQH$@DvC8E`dlYB&i&}Ke z-V|I_=L@9QH)teG5+Lp_UNqCd3!4IN{bIFQQ!H58D> zS7`6uH|~X_et|RLYO8p?|5{NuM|pLCO%u=Q@#F&oFPG}MK;0vp UHPkD=Elen~;srGS6 Wi9BJQszcod433M&cEUy}