From e7240949db119aeda4efe6d494f41717e2de2b48 Mon Sep 17 00:00:00 2001 From: agustin-littlehat Date: Sat, 30 May 2026 09:33:16 -0300 Subject: [PATCH 1/8] fix(renderer): gate projective quads by browser support --- packages/core/src/atlas/strategy.test.ts | 46 +++++++++++++++++-- packages/core/src/atlas/strategy.ts | 3 +- packages/polycss/src/render/atlas/strategy.ts | 2 + packages/react/src/scene/PolyScene.test.tsx | 19 ++++++++ .../react/src/scene/atlas/filterPlans.test.ts | 15 +++++- packages/react/src/scene/atlas/filterPlans.ts | 2 + .../react/src/scene/atlas/useTextureAtlas.ts | 7 ++- packages/react/src/shapes/Poly.test.tsx | 9 ++-- packages/vue/src/scene/PolyScene.test.ts | 18 ++++++++ .../vue/src/scene/atlas/filterPlans.test.ts | 15 +++++- packages/vue/src/scene/atlas/filterPlans.ts | 2 + .../vue/src/scene/atlas/useTextureAtlas.ts | 7 ++- packages/vue/src/shapes/Poly.test.ts | 6 +-- 13 files changed, 131 insertions(+), 20 deletions(-) diff --git a/packages/core/src/atlas/strategy.test.ts b/packages/core/src/atlas/strategy.test.ts index fb8bd112..caae531e 100644 --- a/packages/core/src/atlas/strategy.test.ts +++ b/packages/core/src/atlas/strategy.test.ts @@ -163,8 +163,8 @@ describe("isProjectiveQuadPlan — projective quad detection", () => { // --------------------------------------------------------------------------- const noDisable = new Set<"b" | "i" | "u">(); -const desktopEnv = { solidTriangleSupported: true, borderShapeSupported: false }; -const borderShapeEnv = { solidTriangleSupported: true, borderShapeSupported: true }; +const desktopEnv = { solidTriangleSupported: true, projectiveQuadSupported: true, borderShapeSupported: false }; +const borderShapeEnv = { solidTriangleSupported: true, projectiveQuadSupported: true, borderShapeSupported: true }; describe("filterAtlasPlans — full-rect solid exclusion", () => { it("full-rect plan is excluded from atlas when b is enabled", () => { @@ -177,7 +177,11 @@ describe("filterAtlasPlans — full-rect solid exclusion", () => { const plan = computeTextureAtlasPlanPublic(FLAT_RECT, 0)!; const disabled = new Set<"b" | "i" | "u">(["b"]); // When b disabled and no border-shape, rect falls through to atlas - const result = filterAtlasPlans([plan], "baked", disabled, { solidTriangleSupported: true, borderShapeSupported: false }); + const result = filterAtlasPlans([plan], "baked", disabled, { + solidTriangleSupported: true, + projectiveQuadSupported: true, + borderShapeSupported: false, + }); expect(result[0]).not.toBeNull(); }); }); @@ -193,13 +197,21 @@ describe("filterAtlasPlans — triangle exclusion", () => { const plan = computeTextureAtlasPlanPublic(FLAT_TRIANGLE, 0)!; const disabled = new Set<"b" | "i" | "u">(["u"]); // u disabled and no border-shape → triangle goes to atlas - const result = filterAtlasPlans([plan], "baked", disabled, { solidTriangleSupported: false, borderShapeSupported: false }); + const result = filterAtlasPlans([plan], "baked", disabled, { + solidTriangleSupported: false, + projectiveQuadSupported: true, + borderShapeSupported: false, + }); expect(result[0]).not.toBeNull(); }); it("triangle plan stays in atlas when solidTriangleSupported is false", () => { const plan = computeTextureAtlasPlanPublic(FLAT_TRIANGLE, 0)!; - const result = filterAtlasPlans([plan], "baked", noDisable, { solidTriangleSupported: false, borderShapeSupported: false }); + const result = filterAtlasPlans([plan], "baked", noDisable, { + solidTriangleSupported: false, + projectiveQuadSupported: true, + borderShapeSupported: false, + }); expect(result[0]).not.toBeNull(); }); }); @@ -250,6 +262,30 @@ describe("filterAtlasPlans — border-shape exclusion", () => { }); }); +describe("filterAtlasPlans — projective quad exclusion", () => { + it("non-rect projective quads are excluded when projective b is supported", () => { + const plan = computeTextureAtlasPlanPublic(NON_RECT_QUAD, 0)!; + expect(isProjectiveQuadPlan(plan)).toBe(true); + const result = filterAtlasPlans([plan], "baked", noDisable, { + solidTriangleSupported: true, + projectiveQuadSupported: true, + borderShapeSupported: false, + }); + expect(result[0]).toBeNull(); + }); + + it("non-rect projective quads stay in atlas when projective b is unsupported", () => { + const plan = computeTextureAtlasPlanPublic(NON_RECT_QUAD, 0)!; + expect(isProjectiveQuadPlan(plan)).toBe(true); + const result = filterAtlasPlans([plan], "baked", noDisable, { + solidTriangleSupported: true, + projectiveQuadSupported: false, + borderShapeSupported: false, + }); + expect(result[0]).toBe(plan); + }); +}); + describe("filterAtlasPlans — output array length matches input", () => { it("length is preserved for mixed null/non-null arrays", () => { const plans = [ diff --git a/packages/core/src/atlas/strategy.ts b/packages/core/src/atlas/strategy.ts index fa4bb8bb..fa6f3205 100644 --- a/packages/core/src/atlas/strategy.ts +++ b/packages/core/src/atlas/strategy.ts @@ -87,6 +87,7 @@ export function dominantCountKey(map: Map): string | undefined { export interface FilterAtlasPlansEnv { solidTriangleSupported: boolean; + projectiveQuadSupported: boolean; borderShapeSupported: boolean; } @@ -102,7 +103,7 @@ export function filterAtlasPlans( env: FilterAtlasPlansEnv, ): Array { const useFullRectSolid = !disabled.has("b"); - const useProjectiveQuad = useFullRectSolid; + const useProjectiveQuad = useFullRectSolid && env.projectiveQuadSupported; const useStableTriangle = !disabled.has("u") && env.solidTriangleSupported; const useBorderShape = !disabled.has("i") && textureLighting !== "dynamic" && env.borderShapeSupported; const disableB = disabled.has("b"); diff --git a/packages/polycss/src/render/atlas/strategy.ts b/packages/polycss/src/render/atlas/strategy.ts index 0bbc1010..12a4c72d 100644 --- a/packages/polycss/src/render/atlas/strategy.ts +++ b/packages/polycss/src/render/atlas/strategy.ts @@ -194,8 +194,10 @@ export function filterAtlasPlans( disabled: ReadonlySet, doc?: Document | null, ): Array { + const resolvedDoc = doc ?? (typeof document !== "undefined" ? document : null); return filterAtlasPlansCore(plans, textureLighting, disabled, { solidTriangleSupported: isSolidTriangleSupported(doc), + projectiveQuadSupported: resolvedDoc ? projectiveQuadSupported(resolvedDoc) : true, borderShapeSupported: isBorderShapeSupported(doc), }); } diff --git a/packages/react/src/scene/PolyScene.test.tsx b/packages/react/src/scene/PolyScene.test.tsx index 8a5fa52c..18a3ab66 100644 --- a/packages/react/src/scene/PolyScene.test.tsx +++ b/packages/react/src/scene/PolyScene.test.tsx @@ -163,6 +163,25 @@ describe("PolyScene — polygon rendering", () => { expect(style).not.toContain("border-shape"); }); + it("falls back to atlas for projective solid quads on Safari", () => { + const nav = document.defaultView?.navigator ?? window.navigator; + const userAgent = vi.spyOn(nav, "userAgent", "get").mockReturnValue( + "Mozilla/5.0 AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15", + ); + vi.stubGlobal("CSS", { supports: () => false }); + + try { + const container = renderScene({ + polygons: [NON_RECT_QUAD], + }); + expect(container.querySelector("b")).toBeNull(); + expect(container.querySelector("s")).toBeTruthy(); + } finally { + userAgent.mockRestore(); + vi.unstubAllGlobals(); + } + }); + it("renders multiple polygons", () => { const container = renderScene({ polygons: [TRIANGLE, QUAD] }); const polys = container.querySelectorAll("i,b,s,u"); diff --git a/packages/react/src/scene/atlas/filterPlans.test.ts b/packages/react/src/scene/atlas/filterPlans.test.ts index 4ba4d8cf..e95d1e4a 100644 --- a/packages/react/src/scene/atlas/filterPlans.test.ts +++ b/packages/react/src/scene/atlas/filterPlans.test.ts @@ -6,7 +6,7 @@ */ import { describe, it, expect } from "vitest"; import type { Polygon } from "@layoutit/polycss-core"; -import { computeTextureAtlasPlanPublic } from "@layoutit/polycss-core"; +import { computeTextureAtlasPlanPublic, isProjectiveQuadPlan } from "@layoutit/polycss-core"; import { filterAtlasPlans } from "./filterPlans"; // --------------------------------------------------------------------------- @@ -55,6 +55,11 @@ const FLAT_TRIANGLE: Polygon = { color: "#ff0000", }; +const NON_RECT_QUAD: Polygon = { + vertices: [[0, 0, 0], [2, 0, 0], [2, 1, 0], [0, 2, 0]], + color: "#00ffff", +}; + const TEXTURED_QUAD: Polygon = { vertices: [[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0]], texture: "https://example.com/tex.png", @@ -139,6 +144,14 @@ describe("filterAtlasPlans — strategy filter contracts", () => { expect(filtered[0]).not.toBeNull(); }); + it("projective solid quads stay in atlas on Safari", () => { + const plan = computeTextureAtlasPlanPublic(NON_RECT_QUAD, 0); + expect(plan && isProjectiveQuadPlan(plan)).toBe(true); + const doc = makeDoc({ userAgent: SAFARI_UA, borderShape: false }); + const filtered = filterAtlasPlans([plan], "baked", noDisable, doc); + expect(filtered[0]).toBe(plan); + }); + it("output length matches input length", () => { const plans = [ computeTextureAtlasPlanPublic(FLAT_RECT, 0), diff --git a/packages/react/src/scene/atlas/filterPlans.ts b/packages/react/src/scene/atlas/filterPlans.ts index 2a826cc8..95c4d41a 100644 --- a/packages/react/src/scene/atlas/filterPlans.ts +++ b/packages/react/src/scene/atlas/filterPlans.ts @@ -7,6 +7,7 @@ import type { } from "@layoutit/polycss-core"; import type { PolyTextureLightingMode } from "@layoutit/polycss-core"; import { isBorderShapeSupported, isSolidTriangleSupported } from "./detection"; +import { projectiveQuadSupported } from "./detection"; /** * Filter a plan array to the subset that needs atlas packing, given the active @@ -21,6 +22,7 @@ export function filterAtlasPlans( ): Array { return filterAtlasPlansCore(plans, textureLighting, disabled, { solidTriangleSupported: isSolidTriangleSupported(doc), + projectiveQuadSupported: doc ? projectiveQuadSupported(doc) : true, borderShapeSupported: isBorderShapeSupported(doc), }); } diff --git a/packages/react/src/scene/atlas/useTextureAtlas.ts b/packages/react/src/scene/atlas/useTextureAtlas.ts index 5e1ce83c..0d8949b5 100644 --- a/packages/react/src/scene/atlas/useTextureAtlas.ts +++ b/packages/react/src/scene/atlas/useTextureAtlas.ts @@ -47,7 +47,12 @@ export function useTextureAtlas( ); const atlasPlans = useMemo( - () => filterAtlasPlans(plans, textureLighting, disabled), + () => filterAtlasPlans( + plans, + textureLighting, + disabled, + typeof document !== "undefined" ? document : null, + ), [plans, textureLighting, disabled], ); diff --git a/packages/react/src/shapes/Poly.test.tsx b/packages/react/src/shapes/Poly.test.tsx index 1a768a7a..f78114d5 100644 --- a/packages/react/src/shapes/Poly.test.tsx +++ b/packages/react/src/shapes/Poly.test.tsx @@ -153,8 +153,9 @@ describe("Poly — non-horizontal geometry", () => { expect(poly.style.height).toBe(""); }); - it("renders solid non-rect quads as projective b on Safari", () => { - const userAgent = vi.spyOn(window.navigator, "userAgent", "get").mockReturnValue( + it("falls back to atlas for projective solid quads on Safari", () => { + const nav = document.defaultView?.navigator ?? window.navigator; + const userAgent = vi.spyOn(nav, "userAgent", "get").mockReturnValue( "Mozilla/5.0 AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15", ); vi.stubGlobal("CSS", { supports: () => false }); @@ -162,9 +163,7 @@ describe("Poly — non-horizontal geometry", () => { try { const container = renderPoly({ vertices: NON_RECT_QUAD_VERTS }); const poly = getPoly(container); - // Non-rect untextured quads are rendered as projective regardless of - // browser — the projective matrix path doesn't depend on CSS.supports. - expect(poly.tagName.toLowerCase()).toBe("b"); + expect(poly.tagName.toLowerCase()).toBe("s"); expect(poly.style.getPropertyValue("border-shape")).toBe(""); } finally { userAgent.mockRestore(); diff --git a/packages/vue/src/scene/PolyScene.test.ts b/packages/vue/src/scene/PolyScene.test.ts index 6d506907..5a128fb4 100644 --- a/packages/vue/src/scene/PolyScene.test.ts +++ b/packages/vue/src/scene/PolyScene.test.ts @@ -152,6 +152,24 @@ describe("PolyScene (Vue) — polygon rendering", () => { expect(style).not.toContain("border-shape"); }); + it("falls back to atlas for projective solid quads on Safari", () => { + const userAgent = vi.spyOn(window.navigator, "userAgent", "get").mockReturnValue( + "Mozilla/5.0 AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15", + ); + vi.stubGlobal("CSS", { supports: () => false }); + + try { + const { container } = renderScene({ + polygons: [NON_RECT_QUAD], + }); + expect(container.querySelector("b")).toBeNull(); + expect(container.querySelector("s")).toBeTruthy(); + } finally { + userAgent.mockRestore(); + vi.unstubAllGlobals(); + } + }); + it("renders multiple polygons", () => { const { container } = renderScene({ polygons: [TRIANGLE, QUAD] }); const polys = container.querySelectorAll("i,b,s,u"); diff --git a/packages/vue/src/scene/atlas/filterPlans.test.ts b/packages/vue/src/scene/atlas/filterPlans.test.ts index cfc2eacd..851b855e 100644 --- a/packages/vue/src/scene/atlas/filterPlans.test.ts +++ b/packages/vue/src/scene/atlas/filterPlans.test.ts @@ -6,7 +6,7 @@ */ import { describe, it, expect } from "vitest"; import type { Polygon } from "@layoutit/polycss-core"; -import { computeTextureAtlasPlanPublic } from "@layoutit/polycss-core"; +import { computeTextureAtlasPlanPublic, isProjectiveQuadPlan } from "@layoutit/polycss-core"; import { filterAtlasPlans } from "./filterPlans"; // --------------------------------------------------------------------------- @@ -55,6 +55,11 @@ const FLAT_TRIANGLE: Polygon = { color: "#ff0000", }; +const NON_RECT_QUAD: Polygon = { + vertices: [[0, 0, 0], [2, 0, 0], [2, 1, 0], [0, 2, 0]], + color: "#00ffff", +}; + const TEXTURED_QUAD: Polygon = { vertices: [[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0]], texture: "https://example.com/tex.png", @@ -139,6 +144,14 @@ describe("filterAtlasPlans — strategy filter contracts", () => { expect(filtered[0]).not.toBeNull(); }); + it("projective solid quads stay in atlas on Safari", () => { + const plan = computeTextureAtlasPlanPublic(NON_RECT_QUAD, 0); + expect(plan && isProjectiveQuadPlan(plan)).toBe(true); + const doc = makeDoc({ userAgent: SAFARI_UA, borderShape: false }); + const filtered = filterAtlasPlans([plan], "baked", noDisable, doc); + expect(filtered[0]).toBe(plan); + }); + it("output length matches input length", () => { const plans = [ computeTextureAtlasPlanPublic(FLAT_RECT, 0), diff --git a/packages/vue/src/scene/atlas/filterPlans.ts b/packages/vue/src/scene/atlas/filterPlans.ts index 2a826cc8..95c4d41a 100644 --- a/packages/vue/src/scene/atlas/filterPlans.ts +++ b/packages/vue/src/scene/atlas/filterPlans.ts @@ -7,6 +7,7 @@ import type { } from "@layoutit/polycss-core"; import type { PolyTextureLightingMode } from "@layoutit/polycss-core"; import { isBorderShapeSupported, isSolidTriangleSupported } from "./detection"; +import { projectiveQuadSupported } from "./detection"; /** * Filter a plan array to the subset that needs atlas packing, given the active @@ -21,6 +22,7 @@ export function filterAtlasPlans( ): Array { return filterAtlasPlansCore(plans, textureLighting, disabled, { solidTriangleSupported: isSolidTriangleSupported(doc), + projectiveQuadSupported: doc ? projectiveQuadSupported(doc) : true, borderShapeSupported: isBorderShapeSupported(doc), }); } diff --git a/packages/vue/src/scene/atlas/useTextureAtlas.ts b/packages/vue/src/scene/atlas/useTextureAtlas.ts index bba04b97..a19665d0 100644 --- a/packages/vue/src/scene/atlas/useTextureAtlas.ts +++ b/packages/vue/src/scene/atlas/useTextureAtlas.ts @@ -15,7 +15,7 @@ import type { PolyRenderStrategy, PolyRenderStrategiesOption, } from "@layoutit/polycss-core"; -import { isBorderShapeSupported, isSolidTriangleSupported } from "./detection"; +import { isBorderShapeSupported, isSolidTriangleSupported, projectiveQuadSupported } from "./detection"; import { filterAtlasPlans } from "./filterPlans"; import { packTextureAtlasPlansWithScale } from "./packing"; import { buildAtlasPages } from "./buildAtlasPages"; @@ -49,7 +49,10 @@ export function useTextureAtlas( ): TextureAtlasResult { const disabled = computed(() => new Set((strategies.value?.disable ?? []) as PolyRenderStrategy[])); const useFullRectSolid = computed(() => !disabled.value.has("b")); - const useProjectiveQuad = computed(() => useFullRectSolid.value); + const useProjectiveQuad = computed(() => { + const doc = typeof document !== "undefined" ? document : null; + return useFullRectSolid.value && (!doc || projectiveQuadSupported(doc)); + }); const useStableTriangle = computed(() => !disabled.value.has("u") && isSolidTriangleSupported()); const useBorderShape = computed( () => !disabled.value.has("i") && textureLighting.value !== "dynamic" && isBorderShapeSupported(), diff --git a/packages/vue/src/shapes/Poly.test.ts b/packages/vue/src/shapes/Poly.test.ts index 668d02ad..0ad5ea87 100644 --- a/packages/vue/src/shapes/Poly.test.ts +++ b/packages/vue/src/shapes/Poly.test.ts @@ -143,7 +143,7 @@ describe("Poly (Vue) — non-horizontal geometry", () => { expect(poly.style.height).toBe(""); }); - it("renders solid non-rect quads as projective b on Safari", () => { + it("falls back to atlas for projective solid quads on Safari", () => { const userAgent = vi.spyOn(window.navigator, "userAgent", "get").mockReturnValue( "Mozilla/5.0 AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15", ); @@ -152,9 +152,7 @@ describe("Poly (Vue) — non-horizontal geometry", () => { try { const container = renderPoly({ vertices: NON_RECT_QUAD }); const poly = getPoly(container); - // Non-rect untextured quads are rendered as projective regardless of - // browser — the projective matrix path doesn't depend on CSS.supports. - expect(poly.tagName.toLowerCase()).toBe("b"); + expect(poly.tagName.toLowerCase()).toBe("s"); expect(poly.style.getPropertyValue("border-shape")).toBe(""); } finally { userAgent.mockRestore(); From 93a62ce6579d384e59888835952403f9ca1a35f1 Mon Sep 17 00:00:00 2001 From: agustin-littlehat Date: Sat, 30 May 2026 09:33:34 -0300 Subject: [PATCH 2/8] fix(renderer): honor disabled mesh solid strategies --- packages/react/src/scene/PolyMesh.test.tsx | 21 +++++++++++++++++++-- packages/react/src/scene/PolyMesh.tsx | 5 +++++ packages/vue/src/scene/PolyMesh.test.ts | 20 ++++++++++++++++++-- packages/vue/src/scene/PolyMesh.ts | 1 + 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/packages/react/src/scene/PolyMesh.test.tsx b/packages/react/src/scene/PolyMesh.test.tsx index a93693c1..5b0093d6 100644 --- a/packages/react/src/scene/PolyMesh.test.tsx +++ b/packages/react/src/scene/PolyMesh.test.tsx @@ -106,7 +106,10 @@ const OFFSET_TEXTURED_TRIANGLE: Polygon = { ], }; -function renderMesh(props: React.ComponentProps): HTMLElement { +function renderMesh( + props: React.ComponentProps, + sceneProps: React.ComponentProps = {}, +): HTMLElement { const container = document.createElement("div"); document.body.appendChild(container); const root = createRoot(container); @@ -117,7 +120,7 @@ function renderMesh(props: React.ComponentProps): HTMLElement { {}, React.createElement( PolyScene, - {}, + sceneProps, React.createElement(PolyMesh, props) ) ) @@ -168,6 +171,20 @@ describe("PolyMesh — with polygons prop", () => { expect(polys.length).toBe(2); }); + it("inherits scene strategies.disable b for auto-rendered rects", () => { + vi.stubGlobal("CSS", { + supports: vi.fn((property: string) => property === "border-shape"), + }); + const container = renderMesh( + { polygons: [QUAD] }, + { strategies: { disable: ["b"] } }, + ); + const poly = container.querySelector("i") as HTMLElement | null; + expect(container.querySelector("b")).toBeNull(); + expect(poly).toBeTruthy(); + expect(poly!.style.getPropertyValue("border-shape")).toContain("polygon("); + }); + it("hoists repeated baked solid paint to the mesh wrapper", () => { const container = renderMesh({ polygons: [TRIANGLE, TRIANGLE] }); const mesh = container.querySelector(".polycss-mesh") as HTMLElement; diff --git a/packages/react/src/scene/PolyMesh.tsx b/packages/react/src/scene/PolyMesh.tsx index 63db5a71..a551d7e4 100644 --- a/packages/react/src/scene/PolyMesh.tsx +++ b/packages/react/src/scene/PolyMesh.tsx @@ -520,6 +520,10 @@ export const PolyMesh = forwardRef(function PolyM const sceneCtx = usePolySceneContext(); const effectiveTextureLighting = textureLighting ?? sceneCtx?.textureLighting ?? "baked"; const effectiveStrategies = sceneCtx?.strategies; + const disabledStrategies = useMemo( + () => effectiveStrategies?.disable?.length ? new Set(effectiveStrategies.disable) : undefined, + [effectiveStrategies], + ); const effectiveSeamBleed = seamBleed ?? sceneCtx?.seamBleed ?? DEFAULT_SEAM_BLEED; const effectiveDirectional = effectiveTextureLighting === "dynamic" ? undefined : sceneCtx?.directionalLight; @@ -884,6 +888,7 @@ export const PolyMesh = forwardRef(function PolyM key={plan.index} entry={plan} solidPaintDefaults={solidPaintDefaults} + disabledStrategies={disabledStrategies} /> ); }); diff --git a/packages/vue/src/scene/PolyMesh.test.ts b/packages/vue/src/scene/PolyMesh.test.ts index ec1b791f..139fd083 100644 --- a/packages/vue/src/scene/PolyMesh.test.ts +++ b/packages/vue/src/scene/PolyMesh.test.ts @@ -113,7 +113,8 @@ function mockFetchVox(): void { function renderMesh( meshProps: Record = {}, - slots: Record VNode | VNode[]> = {} + slots: Record VNode | VNode[]> = {}, + sceneProps: Record = {}, ): { container: HTMLElement; app: ReturnType } { const container = document.createElement("div"); document.body.appendChild(container); @@ -122,7 +123,7 @@ function renderMesh( return () => h(PolyCamera, {}, { default: () => - h(PolyScene, {}, { + h(PolyScene, sceneProps, { default: () => h(PolyMesh, meshProps, slots), }), }); @@ -151,6 +152,21 @@ describe("PolyMesh (Vue) — with polygons prop", () => { expect(polys.length).toBe(2); }); + it("inherits scene strategies.disable b for auto-rendered rects", () => { + vi.stubGlobal("CSS", { + supports: vi.fn((property: string) => property === "border-shape"), + }); + const { container } = renderMesh( + { polygons: [QUAD] }, + {}, + { strategies: { disable: ["b"] } }, + ); + const poly = container.querySelector("i") as HTMLElement | null; + expect(container.querySelector("b")).toBeNull(); + expect(poly).toBeTruthy(); + expect(poly!.style.getPropertyValue("border-shape")).toContain("polygon("); + }); + it("hoists repeated baked solid paint to the mesh wrapper", () => { const { container } = renderMesh({ polygons: [TRIANGLE, TRIANGLE] }); const mesh = container.querySelector(".polycss-mesh") as HTMLElement; diff --git a/packages/vue/src/scene/PolyMesh.ts b/packages/vue/src/scene/PolyMesh.ts index 9fb2f933..f1f4dfa0 100644 --- a/packages/vue/src/scene/PolyMesh.ts +++ b/packages/vue/src/scene/PolyMesh.ts @@ -802,6 +802,7 @@ export const PolyMesh = defineComponent({ : renderTextureBorderShapePoly({ entry: plan, solidPaintDefaults: solidPaintDefaults.value, + forceBorderShape: !textureAtlas.useFullRectSolid.value, }); }); From d0db48fbed09feb28dc031f77770e202b262a8ee Mon Sep 17 00:00:00 2001 From: agustin-littlehat Date: Sat, 30 May 2026 09:33:52 -0300 Subject: [PATCH 3/8] feat(vue): mirror mesh scene and shape APIs --- packages/react/src/scene/PolyScene.test.tsx | 12 +++++ packages/vue/src/index.ts | 13 ++++++ packages/vue/src/scene/PolyMesh.ts | 14 +++--- packages/vue/src/scene/PolyScene.test.ts | 11 +++++ packages/vue/src/scene/PolyScene.ts | 7 ++- packages/vue/src/shapes/PolyShapes.test.ts | 22 +++++++++ packages/vue/src/shapes/PolyShapes.ts | 51 ++++++++++++++++++++- packages/vue/src/shapes/index.ts | 13 ++++++ 8 files changed, 135 insertions(+), 8 deletions(-) diff --git a/packages/react/src/scene/PolyScene.test.tsx b/packages/react/src/scene/PolyScene.test.tsx index 18a3ab66..5e9064f5 100644 --- a/packages/react/src/scene/PolyScene.test.tsx +++ b/packages/react/src/scene/PolyScene.test.tsx @@ -254,6 +254,18 @@ describe("PolyScene — autoCenter", () => { expect(transformOn).toContain("translate3d(-50px, -50px, -50px)"); }); + it("uses centerPolygons as the autoCenter bbox source without rendering them", async () => { + const container = renderScene({ + polygons: [], + centerPolygons: [QUAD], + autoCenter: true, + }); + await flushReactWork(); + const scene = container.querySelector(".polycss-scene") as HTMLElement; + expect(container.querySelectorAll("i,b,s,u")).toHaveLength(0); + expect(scene.style.transform).toContain("translate3d(-50px, -50px, -50px)"); + }); + it("target and autoCenterOffset are independent: pan survives mesh bbox change", async () => { // Render with TRIANGLE (centroid ~[0.33, 0.33, 0]) centered. // Then switch to QUAD (centroid [1, 1, 1]) — the centering offset updates diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 62df33a9..7e676fd5 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -39,6 +39,19 @@ export { PolyCone, PolyTorus, } from "./shapes"; +export type { + PolyBoxProps, + PolyPlaneProps, + PolyRingProps, + PolyOctahedronProps, + PolySphereProps, + PolyTetrahedronProps, + PolyIcosahedronProps, + PolyDodecahedronProps, + PolyCylinderProps, + PolyConeProps, + PolyTorusProps, +} from "./shapes"; export { PolyOrbitControls, PolyMapControls, PolyTransformControls, PolyFirstPersonControls } from "./controls"; export type { diff --git a/packages/vue/src/scene/PolyMesh.ts b/packages/vue/src/scene/PolyMesh.ts index f1f4dfa0..632c8849 100644 --- a/packages/vue/src/scene/PolyMesh.ts +++ b/packages/vue/src/scene/PolyMesh.ts @@ -29,7 +29,7 @@ import { parseHexColor, projectCssVertexToGround, } from "@layoutit/polycss-core"; -import { usePolyMesh } from "./useMesh"; +import { usePolyMesh, type UseMeshOptions } from "./useMesh"; import { buildSeamBleedPolygonEdges, buildTextureEdgeRepairSets, @@ -104,6 +104,8 @@ export interface PolyMeshProps extends InteractionProps { * authored surface fidelity. Top-level prop wins over any meshResolution * that might be set inside parseOptions. */ meshResolution?: MeshResolution; + /** Parser options forwarded to parseObj/parseGltf/parseVox. */ + parseOptions?: UseMeshOptions; class?: string; position?: Vec3; scale?: number | Vec3; @@ -170,6 +172,7 @@ export const PolyMesh = defineComponent({ seamBleed: { type: [Number, String] as PropType, default: undefined }, castShadow: { type: Boolean as PropType, default: false }, meshResolution: { type: String as PropType, default: undefined }, + parseOptions: { type: Object as PropType, default: undefined }, class: { type: String }, position: { type: Array as unknown as PropType, default: undefined }, scale: { type: [Number, Array] as unknown as PropType, default: undefined }, @@ -190,16 +193,15 @@ export const PolyMesh = defineComponent({ setup(props, { slots, attrs, expose }) { // useMesh requires a Ref. Computed ref wraps the src prop. const srcRef = computed(() => props.src ?? ""); - // Merge mtl + meshResolution into the options passed to usePolyMesh. - // Top-level meshResolution wins over any meshResolution that could come - // from a future parseOptions prop (matches React behavior). + // Merge parseOptions + mtl + meshResolution into the options passed to + // usePolyMesh. Top-level meshResolution wins over parseOptions.meshResolution. const meshOptions = computed(() => { - const opts: Record = {}; + const opts: UseMeshOptions = { ...(props.parseOptions ?? {}) }; if (props.mtl) opts.mtlUrl = props.mtl; if (props.meshResolution !== undefined) opts.meshResolution = props.meshResolution; return Object.keys(opts).length > 0 ? opts : undefined; }); - const fetched = usePolyMesh(srcRef, meshOptions.value as import("./useMesh").UseMeshOptions | undefined); + const fetched = usePolyMesh(srcRef, meshOptions.value); const propPolygons = computed(() => props.src ? fetched.polygons.value : (props.polygons ?? []) diff --git a/packages/vue/src/scene/PolyScene.test.ts b/packages/vue/src/scene/PolyScene.test.ts index 5a128fb4..dd0659e1 100644 --- a/packages/vue/src/scene/PolyScene.test.ts +++ b/packages/vue/src/scene/PolyScene.test.ts @@ -243,6 +243,17 @@ describe("PolyScene (Vue) — autoCenter", () => { expect(t1).not.toBe(t2); }); + it("uses centerPolygons as the autoCenter bbox source without rendering them", () => { + const { container } = renderScene({ + polygons: [], + centerPolygons: [QUAD], + autoCenter: true, + }); + const scene = container.querySelector(".polycss-scene") as HTMLElement; + expect(container.querySelectorAll("i,b,s,u")).toHaveLength(0); + expect(scene.style.transform).toContain("translate3d(-50px, -50px, -50px)"); + }); + it("pan (target) and autoCenterOffset are independent — autoCenter does not zero out target", async () => { // Even with autoCenter the user's camera target should be preserved. // We can't drive orbit controls in a unit test, so we verify the diff --git a/packages/vue/src/scene/PolyScene.ts b/packages/vue/src/scene/PolyScene.ts index 582c055b..7fe55bf3 100644 --- a/packages/vue/src/scene/PolyScene.ts +++ b/packages/vue/src/scene/PolyScene.ts @@ -50,6 +50,7 @@ import { export interface PolySceneProps { polygons?: Polygon[]; + centerPolygons?: Polygon[]; perspective?: number; rotX?: number; rotY?: number; @@ -96,6 +97,7 @@ export const PolyScene = defineComponent({ inheritAttrs: false, props: { polygons: { type: Array as PropType, default: undefined }, + centerPolygons: { type: Array as PropType, default: undefined }, perspective: { type: Number }, rotX: { type: Number }, rotY: { type: Number }, @@ -208,12 +210,15 @@ export const PolyScene = defineComponent({ ); const inputPolygons = computed(() => props.polygons ?? []); + const centerInputPolygons = computed(() => props.centerPolygons ?? null); const sceneContextOptions = computed(() => ({ directionalLight: props.directionalLight, })); const sceneResult = usePolySceneContext(inputPolygons, sceneContextOptions); + const centerPolygons = computed(() => centerInputPolygons.value ?? inputPolygons.value); + const centerSceneResult = usePolySceneContext(centerPolygons, sceneContextOptions); // Scene transform is applied imperatively via applyTransformDirect, not via // Vue's reactive style binding. The sceneStyle computed previously read @@ -375,7 +380,7 @@ export const PolyScene = defineComponent({ // by orbit/map controls) picks it up on every pointer-driven camera move. const autoCenterOffset = computed(() => { if (!props.autoCenter) return [0, 0, 0]; - const bbox = sceneResult.value.sceneBbox; + const bbox = centerSceneResult.value.sceneBbox; return [ (bbox.min[0] + bbox.max[0]) / 2, (bbox.min[1] + bbox.max[1]) / 2, diff --git a/packages/vue/src/shapes/PolyShapes.test.ts b/packages/vue/src/shapes/PolyShapes.test.ts index 8a4dfdc6..56d87cb4 100644 --- a/packages/vue/src/shapes/PolyShapes.test.ts +++ b/packages/vue/src/shapes/PolyShapes.test.ts @@ -49,6 +49,15 @@ describe("PolyBox (Vue)", () => { const container = renderShape(h(PolyBox, { size: 100, color: "#ff6644" })); expect(hasLeaves(container)).toBe(true); }); + + it("threads face overrides into boxPolygons", () => { + const container = renderShape(h(PolyBox, { + size: 100, + color: "#ff6644", + faces: { top: false }, + })); + expect(container.querySelectorAll("i,b,s,u")).toHaveLength(5); + }); }); describe("PolyPlane (Vue)", () => { @@ -56,6 +65,19 @@ describe("PolyPlane (Vue)", () => { const container = renderShape(h(PolyPlane, { axis: 2, size: 50, color: "#cccccc" })); expect(hasLeaves(container)).toBe(true); }); + + it("threads offset into planePolygons", () => { + const base = renderShape(h(PolyPlane, { axis: 2, size: 1, color: "#cccccc" })); + const shifted = renderShape(h(PolyPlane, { + axis: 2, + size: 1, + offset: [5, 5], + color: "#cccccc", + })); + const baseTransform = (base.querySelector("i,b,s,u") as HTMLElement).style.transform; + const shiftedTransform = (shifted.querySelector("i,b,s,u") as HTMLElement).style.transform; + expect(shiftedTransform).not.toBe(baseTransform); + }); }); describe("PolyRing (Vue)", () => { diff --git a/packages/vue/src/shapes/PolyShapes.ts b/packages/vue/src/shapes/PolyShapes.ts index 3bc54bf3..ecec5a1e 100644 --- a/packages/vue/src/shapes/PolyShapes.ts +++ b/packages/vue/src/shapes/PolyShapes.ts @@ -21,16 +21,35 @@ import { conePolygons, torusPolygons, } from "@layoutit/polycss-core"; -import type { Vec3 } from "@layoutit/polycss-core"; +import type { + BoxPolygonsOptions, + PlanePolygonsOptions, + RingPolygonsOptions, + OctahedronPolygonsOptions, + SpherePolygonsOptions, + TetrahedronPolygonsOptions, + IcosahedronPolygonsOptions, + DodecahedronPolygonsOptions, + CylinderPolygonsOptions, + ConePolygonsOptions, + TorusPolygonsOptions, + PolyMaterial, + Vec2, + Vec3, +} from "@layoutit/polycss-core"; import { PolyMesh } from "../scene/PolyMesh"; +import type { PolyMeshProps } from "../scene/PolyMesh"; // ── Shared mesh prop pass-through helpers ──────────────────────────────────── // We spread the mesh-compatible props without src/mtl/polygons (those are // controlled by the shape component). Vue doesn't allow direct key exclusion // from interfaces, so we pick explicit passes through `attrs` where needed. +type ShapeMeshProps = Omit; // ── Fixed-geometry primitives ───────────────────────────────────────────────── +export interface PolyBoxProps extends ShapeMeshProps, BoxPolygonsOptions {} + export const PolyBox = defineComponent({ name: "PolyBox", props: { @@ -41,6 +60,10 @@ export const PolyBox = defineComponent({ max: { type: Array as unknown as PropType, default: undefined }, color: { type: String, default: undefined }, texture: { type: String, default: undefined }, + material: { type: Object as PropType, default: undefined }, + uvs: { type: Array as PropType, default: undefined }, + data: { type: Object as PropType, default: undefined }, + faces: { type: Object as PropType, default: undefined }, // Common mesh props position: { type: Array as unknown as PropType, default: undefined }, scale: { type: [Number, Array] as unknown as PropType, default: undefined }, @@ -57,6 +80,10 @@ export const PolyBox = defineComponent({ max: props.max, color: props.color, texture: props.texture, + material: props.material, + uvs: props.uvs, + data: props.data, + faces: props.faces, }), ); return () => @@ -71,11 +98,14 @@ export const PolyBox = defineComponent({ }, }); +export interface PolyPlaneProps extends ShapeMeshProps, PlanePolygonsOptions {} + export const PolyPlane = defineComponent({ name: "PolyPlane", props: { axis: { type: Number as PropType<0 | 1 | 2>, required: true }, size: { type: Number, default: undefined }, + offset: { type: [Number, Array] as unknown as PropType, default: undefined }, along: { type: Number, default: undefined }, color: { type: String, default: undefined }, // Common mesh props @@ -90,6 +120,7 @@ export const PolyPlane = defineComponent({ planePolygons({ axis: props.axis, size: props.size, + offset: props.offset, along: props.along, color: props.color, }), @@ -106,6 +137,8 @@ export const PolyPlane = defineComponent({ }, }); +export interface PolyRingProps extends ShapeMeshProps, RingPolygonsOptions {} + export const PolyRing = defineComponent({ name: "PolyRing", props: { @@ -143,6 +176,8 @@ export const PolyRing = defineComponent({ }, }); +export interface PolyOctahedronProps extends ShapeMeshProps, OctahedronPolygonsOptions {} + export const PolyOctahedron = defineComponent({ name: "PolyOctahedron", props: { @@ -176,6 +211,8 @@ export const PolyOctahedron = defineComponent({ }, }); +export interface PolyTetrahedronProps extends ShapeMeshProps, TetrahedronPolygonsOptions {} + export const PolyTetrahedron = defineComponent({ name: "PolyTetrahedron", props: { @@ -204,6 +241,8 @@ export const PolyTetrahedron = defineComponent({ }, }); +export interface PolyIcosahedronProps extends ShapeMeshProps, IcosahedronPolygonsOptions {} + export const PolyIcosahedron = defineComponent({ name: "PolyIcosahedron", props: { @@ -232,6 +271,8 @@ export const PolyIcosahedron = defineComponent({ }, }); +export interface PolyDodecahedronProps extends ShapeMeshProps, DodecahedronPolygonsOptions {} + export const PolyDodecahedron = defineComponent({ name: "PolyDodecahedron", props: { @@ -260,6 +301,8 @@ export const PolyDodecahedron = defineComponent({ }, }); +export interface PolySphereProps extends ShapeMeshProps, SpherePolygonsOptions {} + export const PolySphere = defineComponent({ name: "PolySphere", props: { @@ -291,6 +334,8 @@ export const PolySphere = defineComponent({ // ── Parametric primitives ───────────────────────────────────────────────────── +export interface PolyCylinderProps extends ShapeMeshProps, CylinderPolygonsOptions {} + export const PolyCylinder = defineComponent({ name: "PolyCylinder", props: { @@ -328,6 +373,8 @@ export const PolyCylinder = defineComponent({ }, }); +export interface PolyConeProps extends ShapeMeshProps, ConePolygonsOptions {} + export const PolyCone = defineComponent({ name: "PolyCone", props: { @@ -363,6 +410,8 @@ export const PolyCone = defineComponent({ }, }); +export interface PolyTorusProps extends ShapeMeshProps, TorusPolygonsOptions {} + export const PolyTorus = defineComponent({ name: "PolyTorus", props: { diff --git a/packages/vue/src/shapes/index.ts b/packages/vue/src/shapes/index.ts index e7cb26d7..693c5a51 100644 --- a/packages/vue/src/shapes/index.ts +++ b/packages/vue/src/shapes/index.ts @@ -13,3 +13,16 @@ export { PolyCone, PolyTorus, } from "./PolyShapes"; +export type { + PolyBoxProps, + PolyPlaneProps, + PolyRingProps, + PolyOctahedronProps, + PolySphereProps, + PolyTetrahedronProps, + PolyIcosahedronProps, + PolyDodecahedronProps, + PolyCylinderProps, + PolyConeProps, + PolyTorusProps, +} from "./PolyShapes"; From 89876ee1fcd37836faf8598809b4b360c203fde7 Mon Sep 17 00:00:00 2001 From: agustin-littlehat Date: Sat, 30 May 2026 09:34:00 -0300 Subject: [PATCH 4/8] fix(vue): sync renderer style rules --- packages/react/src/styles/styles.test.ts | 9 ++++++++ .../vue/src/scene/atlas/solidTriangleStyle.ts | 22 ++++++++++++++++++- .../vue/src/scene/atlas/stableTriangleDom.ts | 22 +------------------ packages/vue/src/styles/styles.test.ts | 9 ++++++++ packages/vue/src/styles/styles.ts | 22 +++++++++++++++++++ 5 files changed, 62 insertions(+), 22 deletions(-) diff --git a/packages/react/src/styles/styles.test.ts b/packages/react/src/styles/styles.test.ts index 3d0b6238..72be111f 100644 --- a/packages/react/src/styles/styles.test.ts +++ b/packages/react/src/styles/styles.test.ts @@ -65,6 +65,15 @@ describe("injectPolyBaseStyles", () => { expect(el.textContent).not.toContain("polycss-solid-triangle"); }); + it("includes transform-controls and shadow performance rules", () => { + injectPolyBaseStyles(document); + const el = document.getElementById("polycss-styles")!; + expect(el.textContent).toContain(".polycss-transform-controls i"); + expect(el.textContent).toContain("transition: color 150ms ease-out"); + expect(el.textContent).toContain(".polycss-scene q"); + expect(el.textContent).toContain("will-change: transform"); + }); + it("does nothing when doc is null-ish", () => { // Should not throw expect(() => diff --git a/packages/vue/src/scene/atlas/solidTriangleStyle.ts b/packages/vue/src/scene/atlas/solidTriangleStyle.ts index 8d802f72..b16eeed3 100644 --- a/packages/vue/src/scene/atlas/solidTriangleStyle.ts +++ b/packages/vue/src/scene/atlas/solidTriangleStyle.ts @@ -26,7 +26,6 @@ export const DEFAULT_LIGHT_INTENSITY = 1; export const DEFAULT_AMBIENT_COLOR = "#ffffff"; export const DEFAULT_AMBIENT_INTENSITY = 0.4; export const BASIS_EPS = 1e-9; -const RECT_EPS = 1e-3; // Matches the canonical SOLID_TRIANGLE_BLEED constant. export const SOLID_TRIANGLE_BLEED = 0.75; const SOLID_TRIANGLE_CANONICAL_SIZE = 32; @@ -421,6 +420,27 @@ function stableTriangleEdgeAmounts( }); } +export function formatStableTriangleTransformScalars( + x0: number, x1: number, x2: number, + y0: number, y1: number, y2: number, + z0: number, z1: number, z2: number, + tx0: number, tx1: number, tx2: number, +): string { + const rx0 = Math.round(x0 * 1000) / 1000 || 0; + const rx1 = Math.round(x1 * 1000) / 1000 || 0; + const rx2 = Math.round(x2 * 1000) / 1000 || 0; + const ry0 = Math.round(y0 * 1000) / 1000 || 0; + const ry1 = Math.round(y1 * 1000) / 1000 || 0; + const ry2 = Math.round(y2 * 1000) / 1000 || 0; + const rz0 = Math.round(z0 * 1000) / 1000 || 0; + const rz1 = Math.round(z1 * 1000) / 1000 || 0; + const rz2 = Math.round(z2 * 1000) / 1000 || 0; + const rtx0 = Math.round(tx0 * 1000) / 1000 || 0; + const rtx1 = Math.round(tx1 * 1000) / 1000 || 0; + const rtx2 = Math.round(tx2 * 1000) / 1000 || 0; + return `matrix3d(${rx0},${rx1},${rx2},0,${ry0},${ry1},${ry2},0,${rz0},${rz1},${rz2},0,${rtx0},${rtx1},${rtx2},1)`; +} + function cssPoints(vertices: Vec3[], tile: number, elev: number): Vec3[] { return vertices.map((v) => [v[1] * tile, v[0] * tile, v[2] * elev]); } diff --git a/packages/vue/src/scene/atlas/stableTriangleDom.ts b/packages/vue/src/scene/atlas/stableTriangleDom.ts index 1421636f..73687aaf 100644 --- a/packages/vue/src/scene/atlas/stableTriangleDom.ts +++ b/packages/vue/src/scene/atlas/stableTriangleDom.ts @@ -23,6 +23,7 @@ import { quantizeCssColor, stepRgbToward, offsetConvexPolygonPoints, + formatStableTriangleTransformScalars, applySolidTrianglePaintStyle, solidTriangleBorderWidth, solidTriangleCanonicalSize, @@ -144,27 +145,6 @@ function offsetStableTrianglePoints( return [apexPtX, apexPtY, baseLeftX, baseLeftY, baseRightX, baseRightY]; } -function formatStableTriangleTransformScalars( - x0: number, x1: number, x2: number, - y0: number, y1: number, y2: number, - z0: number, z1: number, z2: number, - tx0: number, tx1: number, tx2: number, -): string { - const rx0 = Math.round(x0 * 1000) / 1000 || 0; - const rx1 = Math.round(x1 * 1000) / 1000 || 0; - const rx2 = Math.round(x2 * 1000) / 1000 || 0; - const ry0 = Math.round(y0 * 1000) / 1000 || 0; - const ry1 = Math.round(y1 * 1000) / 1000 || 0; - const ry2 = Math.round(y2 * 1000) / 1000 || 0; - const rz0 = Math.round(z0 * 1000) / 1000 || 0; - const rz1 = Math.round(z1 * 1000) / 1000 || 0; - const rz2 = Math.round(z2 * 1000) / 1000 || 0; - const rtx0 = Math.round(tx0 * 1000) / 1000 || 0; - const rtx1 = Math.round(tx1 * 1000) / 1000 || 0; - const rtx2 = Math.round(tx2 * 1000) / 1000 || 0; - return `matrix3d(${rx0},${rx1},${rx2},0,${ry0},${ry1},${ry2},0,${rz0},${rz1},${rz2},0,${rtx0},${rtx1},${rtx2},1)`; -} - function computeStableTriangleDomStyle( polygon: Polygon, options: StableTriangleDomUpdateOptions, diff --git a/packages/vue/src/styles/styles.test.ts b/packages/vue/src/styles/styles.test.ts index d163db85..c0a7cc74 100644 --- a/packages/vue/src/styles/styles.test.ts +++ b/packages/vue/src/styles/styles.test.ts @@ -64,6 +64,15 @@ describe("injectPolyBaseStyles", () => { expect(el.textContent).not.toContain("polycss-solid-triangle"); }); + it("includes transform-controls and shadow performance rules", () => { + injectPolyBaseStyles(document); + const el = document.getElementById("polycss-styles")!; + expect(el.textContent).toContain(".polycss-transform-controls i"); + expect(el.textContent).toContain("transition: color 150ms ease-out"); + expect(el.textContent).toContain(".polycss-scene q"); + expect(el.textContent).toContain("will-change: transform"); + }); + it("does nothing when doc is null-ish", () => { expect(() => injectPolyBaseStyles(null as unknown as Document) diff --git a/packages/vue/src/styles/styles.ts b/packages/vue/src/styles/styles.ts index c973d8cf..43c6e0c8 100644 --- a/packages/vue/src/styles/styles.ts +++ b/packages/vue/src/styles/styles.ts @@ -156,6 +156,27 @@ const CORE_BASE_STYLES = ` border-width: 0 16px 32px 16px; } +/* ── Gizmo override ─────────────────────────────────────────────────────── */ + +/* + * PolyTransformControls renders 3D arrows using the same polygon pipeline + * as user content, but the gizmo is a UI affordance — both faces of + * every polygon should remain visible regardless of which way the + * camera is looking. Otherwise the cuboid shafts and pyramid heads end + * up half-culled. + * + * Transitions on color, border-color, and background-color smooth the + * idle → hover → drag alpha changes across rect, border-shape, triangle, + * and atlas paths. + */ +.polycss-transform-controls i, +.polycss-transform-controls b, +.polycss-transform-controls s, +.polycss-transform-controls u { + backface-visibility: visible; + transition: color 150ms ease-out, border-color 150ms ease-out, background-color 150ms ease-out; +} + /* ── Dynamic lighting cascade vars (scene root → polygons) ─────────────── */ /* @@ -291,6 +312,7 @@ const CORE_BASE_STYLES = ` backface-visibility: visible; border-color: currentColor; pointer-events: none; + will-change: transform; } .polycss-scene q::before, .polycss-scene q::after { From bd3fb7fdd7b0fec812d862fe14d37aba4d13b316 Mon Sep 17 00:00:00 2001 From: agustin-littlehat Date: Sat, 30 May 2026 09:34:31 -0300 Subject: [PATCH 5/8] feat(website): add configurable gallery ground --- .../components/BuilderWorkbench/defaults.ts | 1 + .../Dock/folders/useLightingFolder.ts | 10 ++ .../GalleryWorkbench/GalleryWorkbench.tsx | 2 + .../components/VanillaScene/VanillaScene.tsx | 93 +++++++++++++++++-- website/src/components/types.ts | 1 + 5 files changed, 100 insertions(+), 7 deletions(-) diff --git a/website/src/components/BuilderWorkbench/defaults.ts b/website/src/components/BuilderWorkbench/defaults.ts index f3df62fb..8277075c 100644 --- a/website/src/components/BuilderWorkbench/defaults.ts +++ b/website/src/components/BuilderWorkbench/defaults.ts @@ -52,6 +52,7 @@ export const DEFAULT_SCENE: SceneOptionsState = { castShadow: true, shadowMaxExtend: 600, showGround: true, + groundColor: "#7d848e", fpvLook: true, fpvMove: true, fpvJump: true, diff --git a/website/src/components/Dock/folders/useLightingFolder.ts b/website/src/components/Dock/folders/useLightingFolder.ts index c96af06f..b4fae5ec 100644 --- a/website/src/components/Dock/folders/useLightingFolder.ts +++ b/website/src/components/Dock/folders/useLightingFolder.ts @@ -7,6 +7,7 @@ * `onUpdateScene` callback so the parent owns the scene-options state. */ import type { GUI } from "lil-gui"; +import { useEffect } from "react"; import { useColor, useFolder, useSlider, useToggle } from "../primitives"; @@ -14,6 +15,7 @@ export interface LightingFolderInputs { castShadow: boolean; shadowMaxExtend: number; showGround: boolean; + groundColor: string; showLight: boolean; lightAzimuth: number; lightElevation: number; @@ -25,6 +27,7 @@ export interface LightingFolderInputs { castShadow?: boolean; shadowMaxExtend?: number; showGround?: boolean; + groundColor?: string; showLight?: boolean; lightAzimuth?: number; lightElevation?: number; @@ -40,6 +43,7 @@ export function useLightingFolder(parent: GUI | null, inputs: LightingFolderInpu castShadow, shadowMaxExtend, showGround, + groundColor, showLight, lightAzimuth, lightElevation, @@ -66,6 +70,12 @@ export function useLightingFolder(parent: GUI | null, inputs: LightingFolderInpu (value) => onUpdateScene({ shadowMaxExtend: value }), ); useToggle(folder, "Show ground", showGround, (value) => onUpdateScene({ showGround: value })); + const groundColorControl = useColor(folder, "Ground color", groundColor, (value) => + onUpdateScene({ groundColor: value }), + ); + useEffect(() => { + groundColorControl?.setVisible(showGround); + }, [groundColorControl, showGround]); useToggle(folder, "Light helper", showLight, (value) => onUpdateScene({ showLight: value })); useSlider(folder, "Azimuth", { min: 0, max: 360, step: 1 }, lightAzimuth, (value) => diff --git a/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx b/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx index aa2c2e5d..80a83249 100644 --- a/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx +++ b/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx @@ -131,6 +131,7 @@ const DEFAULT_SCENE: SceneOptionsState = { castShadow: false, shadowMaxExtend: 2000, showGround: false, + groundColor: "#7d848e", fpvLook: true, fpvMove: true, fpvJump: true, @@ -1419,6 +1420,7 @@ export default function GalleryWorkbench() { castShadow={sceneOptions.castShadow} shadowMaxExtend={sceneOptions.shadowMaxExtend} showGround={sceneOptions.showGround} + groundColor={sceneOptions.groundColor} showLight={sceneOptions.showLight} lightAzimuth={sceneOptions.lightAzimuth} lightElevation={sceneOptions.lightElevation} diff --git a/website/src/components/VanillaScene/VanillaScene.tsx b/website/src/components/VanillaScene/VanillaScene.tsx index 838f2aac..59f05909 100644 --- a/website/src/components/VanillaScene/VanillaScene.tsx +++ b/website/src/components/VanillaScene/VanillaScene.tsx @@ -37,6 +37,12 @@ const LIGHT_HELPER_TILE = 50; // Keep the visible ground just below the model floor; coplanar ground/car // faces z-fight during repaint-heavy light drags. const GROUND_Z_OFFSET = -0.04; +const GALLERY_GROUND_COLOR = "#7d848e"; +const GALLERY_GROUND_RGB = { r: 0x7d, g: 0x84, b: 0x8e }; +const GALLERY_GROUND_LIGHT_RESPONSE = 0.28; +const GALLERY_GROUND_RADIUS_MULTIPLIER = 2.5; +const GALLERY_GROUND_MODEL_RADIUS_MULTIPLIER = 1.75; +const GALLERY_GROUND_MIN_RADIUS = 40; // The shadow plane should sit above the visible ground, not above the model // floor, otherwise large live-updated SVG shadows can intersect low geometry. const SHADOW_GROUND_LIFT = 0.01; @@ -208,6 +214,60 @@ function ambientFromOptions(options: SceneOptionsState): PolyAmbientLight { }; } +function parseGalleryHexColor(value: string | undefined, fallback: typeof GALLERY_GROUND_RGB): typeof GALLERY_GROUND_RGB { + if (!value || !/^#[0-9a-f]{6}$/i.test(value)) return fallback; + return { + r: Number.parseInt(value.slice(1, 3), 16), + g: Number.parseInt(value.slice(3, 5), 16), + b: Number.parseInt(value.slice(5, 7), 16), + }; +} + +function clampColorChannel(value: number): number { + return Math.max(0, Math.min(255, Math.round(value))); +} + +function mutedGalleryGroundColor( + directionalLight: PolyDirectionalLight, + ambientLight: PolyAmbientLight, + baseColor: string, +): string { + const base = parseGalleryHexColor(baseColor, GALLERY_GROUND_RGB); + const [dx, dy, dz] = directionalLight.direction; + const len = Math.hypot(dx, dy, dz) || 1; + const lambert = Math.max(0, dz / len); + const key = parseGalleryHexColor(directionalLight.color, { r: 255, g: 255, b: 255 }); + const ambient = parseGalleryHexColor(ambientLight.color, { r: 255, g: 255, b: 255 }); + const keyIntensity = directionalLight.intensity ?? 1; + const ambientIntensity = ambientLight.intensity ?? 0.4; + const mix = (base: number, ambientChannel: number, keyChannel: number) => { + const lit = base * ( + (ambientChannel / 255) * ambientIntensity + + (keyChannel / 255) * keyIntensity * lambert + ); + return clampColorChannel(base * (1 - GALLERY_GROUND_LIGHT_RESPONSE) + lit * GALLERY_GROUND_LIGHT_RESPONSE); + }; + return `rgb(${mix(base.r, ambient.r, key.r)} ${mix(base.g, ambient.g, key.g)} ${mix(base.b, ambient.b, key.b)})`; +} + +function applyGalleryGroundPaint( + handle: VanillaPolyMeshHandle | null, + directionalLight: PolyDirectionalLight, + ambientLight: PolyAmbientLight, + baseColor: string, +): void { + if (!handle) return; + const color = mutedGalleryGroundColor(directionalLight, ambientLight, baseColor); + const leaves = handle.element.querySelectorAll("b,i,s,u"); + for (const leaf of leaves) { + leaf.style.setProperty("color", color, "important"); + if (leaf.tagName.toLowerCase() === "s") { + leaf.style.setProperty("background", color, "important"); + leaf.style.setProperty("background-blend-mode", "normal", "important"); + } + } +} + function bakedLightingSignature( directionalLight: PolyDirectionalLight, ambientLight: PolyAmbientLight, @@ -319,6 +379,12 @@ export function VanillaScene({ onTransientHandleChangeRef.current = onTransientHandleChange; const onSceneDomChangeRef = useRef(onSceneDomChange); onSceneDomChangeRef.current = onSceneDomChange; + const directionalLightRef = useRef(directionalLight); + directionalLightRef.current = directionalLight; + const ambientLightRef = useRef(ambientLight); + ambientLightRef.current = ambientLight; + const groundColorRef = useRef(options.groundColor); + groundColorRef.current = options.groundColor; const helperScaleRef = useRef(helperScale); helperScaleRef.current = helperScale; const helperTargetRef = useRef(helperTarget); @@ -364,6 +430,7 @@ export function VanillaScene({ helperScaleRef.current * 0.7, ), }); + applyGalleryGroundPaint(groundHandleRef.current, nextDirectionalLight, ambientFromOptions(nextOptions), nextOptions.groundColor); }, []); const applyTransientSceneOptions = useCallback((nextOptions: SceneOptionsState): void => { @@ -391,6 +458,7 @@ export function VanillaScene({ helperScaleRef.current * 0.7, ), }); + applyGalleryGroundPaint(groundHandleRef.current, nextDirectionalLight, ambientFromOptions(nextOptions), nextOptions.groundColor); }, []); useEffect(() => { @@ -840,12 +908,14 @@ export function VanillaScene({ } else if (options.textureLighting !== "baked") { committedBakedLightingRef.current = nextLightingSignature; } + applyGalleryGroundPaint(groundHandleRef.current, directionalLight, ambientLight, options.groundColor); }, [ options.rotX, options.rotY, options.zoom, options.target, options.textureLighting, + options.groundColor, options.shadowMaxExtend, directionalLight, ambientLight, @@ -861,6 +931,7 @@ export function VanillaScene({ scene.setOptions({ strategies: { disable: options.disableStrategies }, }); + applyGalleryGroundPaint(groundHandleRef.current, directionalLightRef.current, ambientLightRef.current, groundColorRef.current); notifySceneDomChange(); }, [options.disableStrategies, notifySceneDomChange]); @@ -1016,10 +1087,10 @@ export function VanillaScene({ // Effect 3.5 — ground receiver. A flat quad in the XY plane (Z is "up" // in PolyCSS's world convention — the red-green plane in the axes helper - // is the floor) at the model's min-Z, sized to ~3× the model's horizontal - // span. Gives shadows something to land on. excludeFromAutoCenter so - // toggling it doesn't shift the camera pivot; castShadow:false because - // the floor doesn't shadow itself. + // is the floor) at the model's min-Z. Size from both footprint and full + // model scale so tall/narrow assets still get a usable floor. Gives shadows + // something to land on. excludeFromAutoCenter so toggling it doesn't shift + // the camera pivot; castShadow:false because the floor doesn't shadow itself. useEffect(() => { const scene = sceneRef.current; if (!scene) return; @@ -1048,8 +1119,13 @@ export function VanillaScene({ } return; } - const span = Math.max(maxX - minX, maxY - minY, 1); - const pad = span * 1.5; + const footprintSpan = Math.max(maxX - minX, maxY - minY, 1); + const modelSpan = Math.max(footprintSpan, maxZ - minZ, 1); + const pad = Math.max( + footprintSpan * GALLERY_GROUND_RADIUS_MULTIPLIER, + modelSpan * GALLERY_GROUND_MODEL_RADIUS_MULTIPLIER, + GALLERY_GROUND_MIN_RADIUS, + ); const cx = (minX + maxX) / 2; const cy = (minY + maxY) / 2; const z = minZ + GROUND_Z_OFFSET; @@ -1062,7 +1138,7 @@ export function VanillaScene({ ], // Medium gray — needs to be light enough that the 25% black shadow // on top has visible contrast (the page background is near-black). - color: "#7d848e", + color: options.groundColor || GALLERY_GROUND_COLOR, }; groundHandleRef.current = scene.add( { @@ -1073,6 +1149,8 @@ export function VanillaScene({ }, { excludeFromAutoCenter: true, castShadow: false }, ); + groundHandleRef.current.element.classList.add("dn-gallery-ground"); + applyGalleryGroundPaint(groundHandleRef.current, directionalLightRef.current, ambientLightRef.current, groundColorRef.current); notifySceneDomChange(); return () => { groundHandleRef.current?.dispose(); @@ -1085,6 +1163,7 @@ export function VanillaScene({ options.autoCenter, options.textureQuality, options.textureLighting, + options.groundColor, options.perspective, stableDirectionalForRebuild, stableAmbientForRebuild, diff --git a/website/src/components/types.ts b/website/src/components/types.ts index 72876d1b..0cdd8c01 100644 --- a/website/src/components/types.ts +++ b/website/src/components/types.ts @@ -75,6 +75,7 @@ export interface SceneOptionsState { * Caps the SVG backing store at low light elevations. */ shadowMaxExtend: number; showGround: boolean; + groundColor: string; fpvLook: boolean; fpvMove: boolean; fpvJump: boolean; From 03193731468dca89d0bdce5c6534f2807c7ae931 Mon Sep 17 00:00:00 2001 From: agustin-littlehat Date: Sat, 30 May 2026 09:34:34 -0300 Subject: [PATCH 6/8] feat(website): persist gallery scene options --- .../GalleryWorkbench/GalleryWorkbench.tsx | 60 +- .../GalleryWorkbench/hooks/index.ts | 10 +- .../GalleryWorkbench/hooks/useRouteSync.ts | 700 +++++++++++++++++- 3 files changed, 749 insertions(+), 21 deletions(-) diff --git a/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx b/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx index 80a83249..41940768 100644 --- a/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx +++ b/website/src/components/GalleryWorkbench/GalleryWorkbench.tsx @@ -66,7 +66,11 @@ import { useRouteSync, useGuiCameraSync, setRoutePresetId, + setRouteSceneOptions, + clearRouteSceneOptions, routeInitialPresetId, + routeInitialSceneOptions, + routeHasSceneOptions, } from "./hooks"; import { useFpvHost } from "../fpv"; import type { ObjParseOptions, GltfParseOptions, VoxParseOptions } from "@layoutit/polycss"; @@ -513,6 +517,10 @@ function sceneDefaultsFor(model: PresetModel): SceneOptionsState { }; } +function sceneDefaultsForPresetId(id: string): SceneOptionsState { + return sceneDefaultsFor(PRESETS.find((preset) => preset.id === id) ?? PRESETS[0]); +} + function parserStateFor(model: PresetModel): ParserOptionsState { return { ...DEFAULT_PARSER, @@ -700,7 +708,12 @@ function openCodePen(html: string, title: string, target: string): void { export default function GalleryWorkbench() { const [initialPreset] = useState(resolveInitialPreset); - const [sceneOptions, setSceneOptions] = useState(() => sceneDefaultsFor(initialPreset)); + const [initialRouteSceneOptions] = useState(routeInitialSceneOptions); + const [initialRouteHasSceneOptions] = useState(routeHasSceneOptions); + const [sceneOptions, setSceneOptions] = useState(() => ({ + ...sceneDefaultsFor(initialPreset), + ...initialRouteSceneOptions, + })); const [parserOptions, setParserOptions] = useState(() => parserStateFor(initialPreset)); const [presetId, setPresetId] = useState(initialPreset.id); const [loaded, setLoaded] = useState(null); @@ -714,9 +727,9 @@ export default function GalleryWorkbench() { const [codePenState, setCodePenState] = useState<"idle" | "exporting">("idle"); const [codePenError, setCodePenError] = useState(null); const viewportRef = useRef(null); - const autoZoomPresetRef = useRef(null); - const autoAmbientPresetRef = useRef(null); - const autoKeyPresetRef = useRef(null); + const autoZoomPresetRef = useRef(initialRouteHasSceneOptions ? initialPreset.id : null); + const autoAmbientPresetRef = useRef(initialRouteHasSceneOptions ? initialPreset.id : null); + const autoKeyPresetRef = useRef(initialRouteHasSceneOptions ? initialPreset.id : null); const loadedModelKeyRef = useRef(null); // Selection + drag state for the React renderer's wrapper. @@ -752,6 +765,8 @@ export default function GalleryWorkbench() { const sceneOptionsRef = useRef(sceneOptions); sceneOptionsRef.current = sceneOptions; const domRefreshRafRef = useRef(0); + const sceneRouteTouchedRef = useRef(false); + const [sceneRouteRevision, setSceneRouteRevision] = useState(0); const requestGalleryDomRefresh = useCallback(() => { if (domRefreshRafRef.current) return; @@ -770,9 +785,15 @@ export default function GalleryWorkbench() { }; }, []); + const markSceneRouteDirty = useCallback(() => { + sceneRouteTouchedRef.current = true; + setSceneRouteRevision((revision) => revision + 1); + }, []); + const updateScene = useCallback((partial: Partial) => { + markSceneRouteDirty(); setSceneOptions((current) => ({ ...current, ...partial })); - }, []); + }, [markSceneRouteDirty]); const canPreviewSceneOptions = useCallback( (options: SceneOptionsState) => options.renderer === "vanilla" && transientSceneHandleRef.current !== null, @@ -793,12 +814,13 @@ export default function GalleryWorkbench() { }, [sceneOptions, responsiveZoomScale]); const handleRenderCameraChange = useCallback( (camera: { rotX: number; rotY: number; zoom: number; target?: ReactVec3 }) => { + markSceneRouteDirty(); handleCameraChange({ ...camera, zoom: camera.zoom / Math.max(responsiveZoomScale, 0.001), }); }, - [handleCameraChange, responsiveZoomScale], + [handleCameraChange, markSceneRouteDirty, responsiveZoomScale], ); const dropped = useDroppedFiles({ @@ -807,6 +829,7 @@ export default function GalleryWorkbench() { autoAmbientPresetRef.current = null; autoKeyPresetRef.current = null; setRoutePresetId(null); + clearRouteSceneOptions(); setPresetId(source.id); if (loadedModelKeyRef.current !== source.id) loadedModelKeyRef.current = null; setSelectedAnimation(""); @@ -833,6 +856,7 @@ export default function GalleryWorkbench() { ); const selectedPreset = availablePresets.find((preset) => preset.id === presetId) ?? PRESETS[0]; const selectedDroppedSource = dropped.droppedSource?.id === selectedPreset.id ? dropped.droppedSource : null; + const selectedSceneDefaults = useMemo(() => sceneDefaultsFor(selectedPreset), [selectedPreset]); const loadMeshResolution = activeMeshResolution(sceneOptions.meshResolution); const handleLoaded = useCallback((model: LoadedModel) => { const modelKey = selectedPreset.id; @@ -1046,6 +1070,7 @@ export default function GalleryWorkbench() { const resetToPreset = useCallback((id: string, options: { updateRoute?: boolean } = {}) => { const next = availablePresets.find((preset) => preset.id === id); + if (sceneRouteTouchedRef.current || routeHasSceneOptions()) markSceneRouteDirty(); autoZoomPresetRef.current = null; autoAmbientPresetRef.current = null; autoKeyPresetRef.current = null; @@ -1067,7 +1092,7 @@ export default function GalleryWorkbench() { rotX: next.rotX ?? current.rotX, rotY: next.rotY ?? current.rotY, })); - }, [availablePresets, dropped.droppedSource, animation.setReactAnimatedPolygons]); + }, [availablePresets, dropped.droppedSource, animation.setReactAnimatedPolygons, markSceneRouteDirty]); const handleRandomPreset = useCallback(() => { const next = randomPreset(); @@ -1115,8 +1140,29 @@ export default function GalleryWorkbench() { presetId, presetIds: ALL_PRESET_IDS, resetToPreset, + sceneDefaultsForPreset: sceneDefaultsForPresetId, + setSceneOptions, }); + useEffect(() => { + if (!sceneRouteTouchedRef.current) return; + if (selectedDroppedSource) { + clearRouteSceneOptions(); + return; + } + setRouteSceneOptions({ + sceneOptions, + sceneDefaults: selectedSceneDefaults, + presetId: selectedPreset.id, + }); + }, [ + sceneOptions, + sceneRouteRevision, + selectedDroppedSource, + selectedPreset.id, + selectedSceneDefaults, + ]); + useEffect(() => { requestGalleryDomRefresh(); }, [ diff --git a/website/src/components/GalleryWorkbench/hooks/index.ts b/website/src/components/GalleryWorkbench/hooks/index.ts index 3767e32a..7a6a5cc6 100644 --- a/website/src/components/GalleryWorkbench/hooks/index.ts +++ b/website/src/components/GalleryWorkbench/hooks/index.ts @@ -10,7 +10,15 @@ export type { UseScenePolygonsOptions, UseScenePolygonsResult } from "./useScene export { useAnimationFrames } from "./useAnimationFrames"; export type { UseAnimationFramesOptions, UseAnimationFramesResult } from "./useAnimationFrames"; -export { useRouteSync, setRoutePresetId, routeInitialPresetId } from "./useRouteSync"; +export { + useRouteSync, + setRoutePresetId, + setRouteSceneOptions, + clearRouteSceneOptions, + routeInitialPresetId, + routeInitialSceneOptions, + routeHasSceneOptions, +} from "./useRouteSync"; export type { UseRouteSyncOptions } from "./useRouteSync"; export { useGuiCameraSync } from "./useGuiCameraSync"; diff --git a/website/src/components/GalleryWorkbench/hooks/useRouteSync.ts b/website/src/components/GalleryWorkbench/hooks/useRouteSync.ts index cf6542e7..0555086f 100644 --- a/website/src/components/GalleryWorkbench/hooks/useRouteSync.ts +++ b/website/src/components/GalleryWorkbench/hooks/useRouteSync.ts @@ -1,9 +1,149 @@ -import { useEffect } from "react"; +import { useEffect, type Dispatch, type SetStateAction } from "react"; +import type { SceneOptionsState } from "../../types"; + +const MODEL_PARAM = "model"; +const SCENE_PARAM = "scene"; + +type SceneTarget = SceneOptionsState["target"]; +type SerializedGallerySceneOptionKey = keyof SerializedGallerySceneOptions; + +interface SerializedGallerySceneOptions { + r?: SceneOptionsState["renderer"]; + ap?: boolean; + ats?: number; + c?: boolean; + i?: boolean; + ar?: boolean; + axes?: boolean; + sel?: boolean; + hov?: boolean; + helper?: boolean; + z?: number; + rx?: number; + ry?: number; + p?: number | false; + az?: number; + el?: number; + key?: number; + kc?: string; + amb?: number; + amc?: string; + tl?: SceneOptionsState["textureLighting"]; + tq?: SceneOptionsState["textureQuality"]; + solid?: boolean; + mp?: SceneOptionsState["matrixPrecision"]; + bp?: SceneOptionsState["borderShapePrecision"]; + mr?: SceneOptionsState["meshResolution"]; + fill?: boolean; + outline?: boolean; + drag?: SceneOptionsState["dragMode"]; + t?: SceneTarget; + ds?: string; + shadow?: boolean; + reach?: number; + ground?: boolean; + gc?: string; + fl?: boolean; + fm?: boolean; + fj?: boolean; + fc?: boolean; + fms?: number; + fjv?: number; + fg?: number; + feh?: number; + fch?: number; + fls?: number; + fiy?: boolean; + frd?: number; +} + +interface SerializedGalleryScene { + v: 1; + o?: SerializedGallerySceneOptions; +} + +const STRATEGY_ORDER = ["b", "i", "u"] as const; +const COMPACT_SCENE_VERSION = "2"; +const COMPACT_NUMBER_SCALE = 10000; +const COMPACT_KEY_BY_OPTION: Record = { + r: "r", + ap: "P", + ats: "A", + c: "c", + i: "i", + ar: "n", + axes: "x", + sel: "s", + hov: "h", + helper: "l", + z: "z", + rx: "X", + ry: "Y", + p: "p", + az: "a", + el: "e", + key: "k", + kc: "K", + amb: "m", + amc: "M", + tl: "T", + tq: "q", + solid: "o", + mp: "u", + bp: "v", + mr: "w", + fill: "f", + outline: "O", + drag: "d", + t: "t", + ds: "b", + shadow: "S", + reach: "E", + ground: "g", + gc: "G", + fl: "L", + fm: "V", + fj: "J", + fc: "C", + fms: "1", + fjv: "2", + fg: "3", + feh: "4", + fch: "5", + fls: "6", + fiy: "7", + frd: "8", +}; +const COMPACT_OPTION_BY_KEY = Object.fromEntries( + Object.entries(COMPACT_KEY_BY_OPTION).map(([key, compact]) => [compact, key]), +) as Record; +const DOTTED_COMPACT_OPTION_BY_KEY: Record = { + ...COMPACT_OPTION_BY_KEY, + ms: "fms", + jv: "fjv", + fg: "fg", + eh: "feh", + ch: "fch", + ls: "fls", + iy: "fiy", + rd: "frd", +}; +const BOOLEAN_OPTIONS = new Set([ + "ap", "c", "i", "ar", "axes", "sel", "hov", "helper", + "solid", "fill", "outline", "shadow", "ground", + "fl", "fm", "fj", "fc", "fiy", +]); function getRoutePresetValue(): string { if (typeof window === "undefined") return ""; const params = new URLSearchParams(window.location.search); - return params.get("model") || ""; + return params.get(MODEL_PARAM) || ""; +} + +function getRouteSceneValue(): string { + if (typeof window === "undefined") return ""; + const params = new URLSearchParams(window.location.search); + return params.get(SCENE_PARAM) || ""; } function hashStringToUint32(value: string): number { @@ -19,6 +159,494 @@ function routeIdForPresetId(presetId: string): string { return String(hashStringToUint32(presetId)); } +function round(value: number): number { + return Number(value.toFixed(4)); +} + +function roundVec3(value: SceneTarget): SceneTarget { + return [round(value[0]), round(value[1]), round(value[2])]; +} + +function sameNumber(a: number, b: number): boolean { + return round(a) === round(b); +} + +function sameVec3(a: SceneTarget, b: SceneTarget): boolean { + return sameNumber(a[0], b[0]) && sameNumber(a[1], b[1]) && sameNumber(a[2], b[2]); +} + +function samePerspective( + a: SceneOptionsState["perspective"], + b: SceneOptionsState["perspective"], +): boolean { + if (a === false || b === false) return a === b; + if (typeof a === "number" || typeof b === "number") { + return typeof a === "number" && typeof b === "number" && sameNumber(a, b); + } + return a === b; +} + +function sameTextureQuality( + a: SceneOptionsState["textureQuality"], + b: SceneOptionsState["textureQuality"], +): boolean { + if (typeof a === "number" || typeof b === "number") { + return typeof a === "number" && typeof b === "number" && sameNumber(a, b); + } + return a === b; +} + +function addBoolean( + out: SerializedGallerySceneOptions, + key: K, + value: boolean, + defaultValue: boolean, +): void { + if (value !== defaultValue) out[key] = value as SerializedGallerySceneOptions[K]; +} + +function addNumber( + out: SerializedGallerySceneOptions, + key: K, + value: number, + defaultValue: number, +): void { + if (!sameNumber(value, defaultValue)) out[key] = round(value) as SerializedGallerySceneOptions[K]; +} + +function addString( + out: SerializedGallerySceneOptions, + key: K, + value: T, + defaultValue: T, +): void { + if (value !== defaultValue) out[key] = value as SerializedGallerySceneOptions[K]; +} + +function strategiesPayload(strategies: SceneOptionsState["disableStrategies"]): string { + return STRATEGY_ORDER.filter((strategy) => strategies.includes(strategy)).join(""); +} + +function sceneOptionsPayload( + options: SceneOptionsState, + defaults: SceneOptionsState, +): SerializedGallerySceneOptions | undefined { + const out: SerializedGallerySceneOptions = {}; + addString(out, "r", options.renderer, defaults.renderer); + addBoolean(out, "ap", options.animationPaused, defaults.animationPaused); + addNumber(out, "ats", options.animationTimeScale, defaults.animationTimeScale); + addBoolean(out, "c", options.autoCenter, defaults.autoCenter); + addBoolean(out, "i", options.interactive, defaults.interactive); + addBoolean(out, "ar", options.animate, defaults.animate); + addBoolean(out, "axes", options.showAxes, defaults.showAxes); + addBoolean(out, "sel", options.selection, defaults.selection); + addBoolean(out, "hov", options.hoverEffects, defaults.hoverEffects); + addBoolean(out, "helper", options.showLight, defaults.showLight); + addNumber(out, "z", options.zoom, defaults.zoom); + addNumber(out, "rx", options.rotX, defaults.rotX); + addNumber(out, "ry", options.rotY, defaults.rotY); + if (!samePerspective(options.perspective, defaults.perspective)) { + if (options.perspective === false) out.p = false; + else if (typeof options.perspective === "number") out.p = round(options.perspective); + } + addNumber(out, "az", options.lightAzimuth, defaults.lightAzimuth); + addNumber(out, "el", options.lightElevation, defaults.lightElevation); + addNumber(out, "key", options.lightIntensity, defaults.lightIntensity); + addString(out, "kc", options.lightColor, defaults.lightColor); + addNumber(out, "amb", options.ambientIntensity, defaults.ambientIntensity); + addString(out, "amc", options.ambientColor, defaults.ambientColor); + addString(out, "tl", options.textureLighting, defaults.textureLighting); + if (!sameTextureQuality(options.textureQuality, defaults.textureQuality)) { + out.tq = typeof options.textureQuality === "number" ? round(options.textureQuality) : options.textureQuality; + } + addBoolean(out, "solid", options.solidMaterials, defaults.solidMaterials); + addString(out, "mp", options.matrixPrecision, defaults.matrixPrecision); + addString(out, "bp", options.borderShapePrecision, defaults.borderShapePrecision); + addString(out, "mr", options.meshResolution, defaults.meshResolution); + addBoolean(out, "fill", options.interiorFill, defaults.interiorFill); + addBoolean(out, "outline", options.outlinePolygons, defaults.outlinePolygons); + addString(out, "drag", options.dragMode, defaults.dragMode); + if (!sameVec3(options.target, defaults.target)) out.t = roundVec3(options.target); + const currentStrategies = strategiesPayload(options.disableStrategies); + if (currentStrategies !== strategiesPayload(defaults.disableStrategies)) out.ds = currentStrategies; + addBoolean(out, "shadow", options.castShadow, defaults.castShadow); + addNumber(out, "reach", options.shadowMaxExtend, defaults.shadowMaxExtend); + addBoolean(out, "ground", options.showGround, defaults.showGround); + addString(out, "gc", options.groundColor, defaults.groundColor); + addBoolean(out, "fl", options.fpvLook, defaults.fpvLook); + addBoolean(out, "fm", options.fpvMove, defaults.fpvMove); + addBoolean(out, "fj", options.fpvJump, defaults.fpvJump); + addBoolean(out, "fc", options.fpvCrouch, defaults.fpvCrouch); + addNumber(out, "fms", options.fpvMoveSpeed, defaults.fpvMoveSpeed); + addNumber(out, "fjv", options.fpvJumpVelocity, defaults.fpvJumpVelocity); + addNumber(out, "fg", options.fpvGravity, defaults.fpvGravity); + addNumber(out, "feh", options.fpvEyeHeight, defaults.fpvEyeHeight); + addNumber(out, "fch", options.fpvCrouchHeight, defaults.fpvCrouchHeight); + addNumber(out, "fls", options.fpvLookSensitivity, defaults.fpvLookSensitivity); + addBoolean(out, "fiy", options.fpvInvertY, defaults.fpvInvertY); + addNumber(out, "frd", options.fpvRenderDistance, defaults.fpvRenderDistance); + return Object.keys(out).length > 0 ? out : undefined; +} + +function encodeCompactNumber(value: number): string { + return Math.round(round(value) * COMPACT_NUMBER_SCALE).toString(36); +} + +function decodeCompactNumber(value: string): number | undefined { + if (!/^-?[0-9a-z]+$/i.test(value)) return undefined; + const sign = value.startsWith("-") ? -1 : 1; + const digits = sign === -1 ? value.slice(1) : value; + const parsed = Number.parseInt(digits, 36); + if (!Number.isFinite(parsed)) return undefined; + return round((sign * parsed) / COMPACT_NUMBER_SCALE); +} + +function encodePackedNumber(value: number): string { + const encoded = encodeCompactNumber(value); + return `${encoded.length.toString(36)}${encoded}`; +} + +function encodeCompactColor(value: string): string | undefined { + const hex = value.replace(/^#/, "").toLowerCase(); + if (!/^[0-9a-f]{6}$/.test(hex)) return undefined; + return Number.parseInt(hex, 16).toString(36).padStart(5, "0"); +} + +function decodeCompactColor(value: string): string | undefined { + if (!/^[0-9a-z]{5}$/i.test(value)) return undefined; + const parsed = Number.parseInt(value, 36); + if (!Number.isFinite(parsed) || parsed < 0 || parsed > 0xffffff) return undefined; + return `#${parsed.toString(16).padStart(6, "0")}`; +} + +function readPackedNumber(value: string, index: number): { value: number; next: number } | undefined { + const length = Number.parseInt(value[index] ?? "", 36); + if (!Number.isFinite(length) || length <= 0) return undefined; + const start = index + 1; + const end = start + length; + if (end > value.length) return undefined; + const decoded = decodeCompactNumber(value.slice(start, end)); + return decoded === undefined ? undefined : { value: decoded, next: end }; +} + +function encodeEnum(value: T, values: Record): string { + return values[value]; +} + +function decodeEnum(value: string, values: Record): T | undefined { + for (const [decoded, encoded] of Object.entries(values)) { + if (encoded === value) return decoded as T; + } + return undefined; +} + +function strategiesMask(strategies: string): string { + let mask = 0; + if (strategies.includes("b")) mask |= 1; + if (strategies.includes("i")) mask |= 2; + if (strategies.includes("u")) mask |= 4; + return mask.toString(36); +} + +function strategiesFromMask(value: string): string | undefined { + if (!/^[0-7]$/.test(value)) return undefined; + const mask = Number.parseInt(value, 36); + return STRATEGY_ORDER.filter((strategy, index) => (mask & (1 << index)) !== 0).join(""); +} + +function encodeCompactValue(key: SerializedGallerySceneOptionKey, value: SerializedGallerySceneOptions[SerializedGallerySceneOptionKey]): string | undefined { + if (typeof value === "boolean") return value ? "" : "0"; + if (typeof value === "number") return encodePackedNumber(value); + if (key === "p") return value === false ? "n" : typeof value === "number" ? encodePackedNumber(value) : undefined; + if (key === "t" && isVec3(value)) return value.map(encodePackedNumber).join(""); + if (key === "kc" || key === "amc" || key === "gc") return typeof value === "string" ? encodeCompactColor(value) : undefined; + if (key === "ds") return typeof value === "string" ? strategiesMask(value) : undefined; + if (key === "r" && (value === "react" || value === "vanilla")) return encodeEnum(value, { react: "r", vanilla: "v" }); + if (key === "tl" && (value === "baked" || value === "dynamic")) return encodeEnum(value, { baked: "b", dynamic: "d" }); + if (key === "tq") { + if (value === "auto") return "a"; + return typeof value === "number" ? encodePackedNumber(value) : undefined; + } + if (key === "mp" || key === "bp") return value === "exact" ? "e" : typeof value === "string" ? value : undefined; + if (key === "mr" && (value === "lossless" || value === "lossy" || value === "disabled")) { + return encodeEnum(value, { lossless: "x", lossy: "y", disabled: "d" }); + } + if (key === "drag" && (value === "orbit" || value === "pan" || value === "fpv")) { + return encodeEnum(value, { orbit: "o", pan: "p", fpv: "f" }); + } + return typeof value === "string" ? value : undefined; +} + +function encodeCompactScene(payload: SerializedGallerySceneOptions): string { + const tokens: string[] = []; + for (const [rawKey, rawValue] of Object.entries(payload)) { + const key = rawKey as SerializedGallerySceneOptionKey; + const compactKey = COMPACT_KEY_BY_OPTION[key]; + const value = encodeCompactValue(key, rawValue as SerializedGallerySceneOptions[SerializedGallerySceneOptionKey]); + if (!compactKey || value === undefined) continue; + tokens.push(`${compactKey}${value}`); + } + return `${COMPACT_SCENE_VERSION}${tokens.join("")}`; +} + +function base64UrlToBytes(value: string): Uint8Array { + const padded = value.replace(/-/g, "+").replace(/_/g, "/").padEnd(Math.ceil(value.length / 4) * 4, "="); + const binary = atob(padded); + const bytes = new Uint8Array(binary.length); + for (let i = 0; i < binary.length; i += 1) bytes[i] = binary.charCodeAt(i); + return bytes; +} + +function decodeJson(value: string): unknown { + return JSON.parse(new TextDecoder().decode(base64UrlToBytes(value))); +} + +function isFiniteNumber(value: unknown): value is number { + return typeof value === "number" && Number.isFinite(value); +} + +function isBoolean(value: unknown): value is boolean { + return typeof value === "boolean"; +} + +function isRenderer(value: unknown): value is SceneOptionsState["renderer"] { + return value === "react" || value === "vanilla"; +} + +function isHexColor(value: unknown): value is string { + return typeof value === "string" && /^#[0-9a-fA-F]{6}$/.test(value); +} + +function isTextureLighting(value: unknown): value is SceneOptionsState["textureLighting"] { + return value === "baked" || value === "dynamic"; +} + +function isTextureQuality(value: unknown): value is SceneOptionsState["textureQuality"] { + return value === "auto" || (isFiniteNumber(value) && value >= 0.1 && value <= 1); +} + +function isMatrixPrecision(value: unknown): value is SceneOptionsState["matrixPrecision"] { + return value === "exact" || value === "2" || value === "3" || value === "4" || value === "5" || value === "6"; +} + +function isBorderShapePrecision(value: unknown): value is SceneOptionsState["borderShapePrecision"] { + return isMatrixPrecision(value); +} + +function isMeshResolution(value: unknown): value is SceneOptionsState["meshResolution"] { + return value === "lossless" || value === "lossy" || value === "disabled"; +} + +function isDragMode(value: unknown): value is SceneOptionsState["dragMode"] { + return value === "orbit" || value === "pan" || value === "fpv"; +} + +function isVec3(value: unknown): value is SceneTarget { + return Array.isArray(value) && + value.length === 3 && + value.every((entry) => typeof entry === "number" && Number.isFinite(entry)); +} + +function routeStrategies(value: unknown): SceneOptionsState["disableStrategies"] | undefined { + if (typeof value !== "string") return undefined; + const strategies = STRATEGY_ORDER.filter((strategy) => value.includes(strategy)); + return strategies.length > 0 ? [...strategies] : []; +} + +function sceneOptionsFromPayload(o: SerializedGallerySceneOptions): Partial { + const disableStrategies = routeStrategies(o.ds); + return { + ...(isRenderer(o.r) ? { renderer: o.r } : null), + ...(isBoolean(o.ap) ? { animationPaused: o.ap } : null), + ...(isFiniteNumber(o.ats) ? { animationTimeScale: o.ats } : null), + ...(isBoolean(o.c) ? { autoCenter: o.c } : null), + ...(isBoolean(o.i) ? { interactive: o.i } : null), + ...(isBoolean(o.ar) ? { animate: o.ar } : null), + ...(isBoolean(o.axes) ? { showAxes: o.axes } : null), + ...(isBoolean(o.sel) ? { selection: o.sel } : null), + ...(isBoolean(o.hov) ? { hoverEffects: o.hov } : null), + ...(isBoolean(o.helper) ? { showLight: o.helper } : null), + ...(isFiniteNumber(o.z) ? { zoom: o.z } : null), + ...(isFiniteNumber(o.rx) ? { rotX: o.rx } : null), + ...(isFiniteNumber(o.ry) ? { rotY: o.ry } : null), + ...((o.p === false || isFiniteNumber(o.p)) ? { perspective: o.p } : null), + ...(isFiniteNumber(o.az) ? { lightAzimuth: o.az } : null), + ...(isFiniteNumber(o.el) ? { lightElevation: o.el } : null), + ...(isFiniteNumber(o.key) ? { lightIntensity: o.key } : null), + ...(isHexColor(o.kc) ? { lightColor: o.kc.toLowerCase() } : null), + ...(isFiniteNumber(o.amb) ? { ambientIntensity: o.amb } : null), + ...(isHexColor(o.amc) ? { ambientColor: o.amc.toLowerCase() } : null), + ...(isTextureLighting(o.tl) ? { textureLighting: o.tl } : null), + ...(isTextureQuality(o.tq) ? { textureQuality: o.tq } : null), + ...(isBoolean(o.solid) ? { solidMaterials: o.solid } : null), + ...(isMatrixPrecision(o.mp) ? { matrixPrecision: o.mp } : null), + ...(isBorderShapePrecision(o.bp) ? { borderShapePrecision: o.bp } : null), + ...(isMeshResolution(o.mr) ? { meshResolution: o.mr } : null), + ...(isBoolean(o.fill) ? { interiorFill: o.fill } : null), + ...(isBoolean(o.outline) ? { outlinePolygons: o.outline } : null), + ...(isDragMode(o.drag) ? { dragMode: o.drag } : null), + ...(isVec3(o.t) ? { target: roundVec3(o.t) } : null), + ...(disableStrategies ? { disableStrategies } : null), + ...(isBoolean(o.shadow) ? { castShadow: o.shadow } : null), + ...(isFiniteNumber(o.reach) ? { shadowMaxExtend: o.reach } : null), + ...(isBoolean(o.ground) ? { showGround: o.ground } : null), + ...(isHexColor(o.gc) ? { groundColor: o.gc.toLowerCase() } : null), + ...(isBoolean(o.fl) ? { fpvLook: o.fl } : null), + ...(isBoolean(o.fm) ? { fpvMove: o.fm } : null), + ...(isBoolean(o.fj) ? { fpvJump: o.fj } : null), + ...(isBoolean(o.fc) ? { fpvCrouch: o.fc } : null), + ...(isFiniteNumber(o.fms) ? { fpvMoveSpeed: o.fms } : null), + ...(isFiniteNumber(o.fjv) ? { fpvJumpVelocity: o.fjv } : null), + ...(isFiniteNumber(o.fg) ? { fpvGravity: o.fg } : null), + ...(isFiniteNumber(o.feh) ? { fpvEyeHeight: o.feh } : null), + ...(isFiniteNumber(o.fch) ? { fpvCrouchHeight: o.fch } : null), + ...(isFiniteNumber(o.fls) ? { fpvLookSensitivity: o.fls } : null), + ...(isBoolean(o.fiy) ? { fpvInvertY: o.fiy } : null), + ...(isFiniteNumber(o.frd) ? { fpvRenderDistance: o.frd } : null), + }; +} + +function decodeDottedCompactValue(key: SerializedGallerySceneOptionKey, value: string): SerializedGallerySceneOptions[SerializedGallerySceneOptionKey] | undefined { + if (BOOLEAN_OPTIONS.has(key)) return value === "" || value === "1" ? true : value === "0" ? false : undefined; + if (key === "p") return value === "n" ? false : decodeCompactNumber(value); + if (key === "t") { + const values = value.split("_").map(decodeCompactNumber); + return values.length === 3 && values.every((entry) => entry !== undefined) + ? values as SceneTarget + : undefined; + } + if (key === "kc" || key === "amc" || key === "gc") return /^[0-9a-f]{6}$/i.test(value) ? `#${value.toLowerCase()}` : undefined; + if (key === "ds") return strategiesFromMask(value) ?? (value === "-" ? "" : value); + if (key === "r") return decodeEnum(value, { react: "r", vanilla: "v" }); + if (key === "tl") return decodeEnum(value, { baked: "b", dynamic: "d" }); + if (key === "tq") return value === "a" ? "auto" : decodeCompactNumber(value); + if (key === "mp" || key === "bp") return value === "e" ? "exact" : value; + if (key === "mr") return decodeEnum(value, { lossless: "x", lossy: "y", disabled: "d" }); + if (key === "drag") return decodeEnum(value, { orbit: "o", pan: "p", fpv: "f" }); + return decodeCompactNumber(value) ?? value; +} + +function decodeDottedCompactRouteSceneOptions(routeValue: string): Partial | null { + const tokens = routeValue.split("."); + if (tokens[0] !== COMPACT_SCENE_VERSION || tokens.length < 2) return null; + const payload: SerializedGallerySceneOptions = {}; + for (const token of tokens.slice(1)) { + const compactKey = Object.keys(DOTTED_COMPACT_OPTION_BY_KEY) + .sort((a, b) => b.length - a.length) + .find((key) => token.startsWith(key)); + if (!compactKey) continue; + const optionKey = DOTTED_COMPACT_OPTION_BY_KEY[compactKey]; + const encodedValue = token.slice(compactKey.length); + if (!optionKey) continue; + const decodedValue = decodeDottedCompactValue(optionKey, encodedValue); + if (decodedValue !== undefined) { + (payload as Record)[optionKey] = decodedValue; + } + } + return Object.keys(payload).length > 0 ? sceneOptionsFromPayload(payload) : null; +} + +function readPackedValue( + key: SerializedGallerySceneOptionKey, + routeValue: string, + index: number, +): { value: SerializedGallerySceneOptions[SerializedGallerySceneOptionKey]; next: number } | undefined { + if (BOOLEAN_OPTIONS.has(key)) { + return routeValue[index] === "0" + ? { value: false, next: index + 1 } + : { value: true, next: index }; + } + if (key === "p") { + if (routeValue[index] === "n") return { value: false, next: index + 1 }; + return readPackedNumber(routeValue, index); + } + if (key === "t") { + const x = readPackedNumber(routeValue, index); + if (!x) return undefined; + const y = readPackedNumber(routeValue, x.next); + if (!y) return undefined; + const z = readPackedNumber(routeValue, y.next); + return z ? { value: [x.value, y.value, z.value], next: z.next } : undefined; + } + if (key === "kc" || key === "amc" || key === "gc") { + const color = decodeCompactColor(routeValue.slice(index, index + 5)); + return color ? { value: color, next: index + 5 } : undefined; + } + if (key === "ds") { + const strategies = strategiesFromMask(routeValue[index] ?? ""); + return strategies === undefined ? undefined : { value: strategies, next: index + 1 }; + } + if (key === "r") { + const value = decodeEnum(routeValue[index] ?? "", { react: "r", vanilla: "v" }); + return value ? { value, next: index + 1 } : undefined; + } + if (key === "tl") { + const value = decodeEnum(routeValue[index] ?? "", { baked: "b", dynamic: "d" }); + return value ? { value, next: index + 1 } : undefined; + } + if (key === "tq") { + if (routeValue[index] === "a") return { value: "auto", next: index + 1 }; + return readPackedNumber(routeValue, index); + } + if (key === "mp" || key === "bp") { + const value = routeValue[index]; + return value ? { value: value === "e" ? "exact" : value, next: index + 1 } : undefined; + } + if (key === "mr") { + const value = decodeEnum(routeValue[index] ?? "", { lossless: "x", lossy: "y", disabled: "d" }); + return value ? { value, next: index + 1 } : undefined; + } + if (key === "drag") { + const value = decodeEnum(routeValue[index] ?? "", { orbit: "o", pan: "p", fpv: "f" }); + return value ? { value, next: index + 1 } : undefined; + } + return readPackedNumber(routeValue, index); +} + +function decodePackedCompactRouteSceneOptions(routeValue: string): Partial | null { + if (!routeValue.startsWith(COMPACT_SCENE_VERSION) || routeValue.startsWith(`${COMPACT_SCENE_VERSION}.`)) return null; + const payload: SerializedGallerySceneOptions = {}; + let index = COMPACT_SCENE_VERSION.length; + while (index < routeValue.length) { + const optionKey = COMPACT_OPTION_BY_KEY[routeValue[index]]; + index += 1; + if (!optionKey) return null; + const decoded = readPackedValue(optionKey, routeValue, index); + if (!decoded) return null; + (payload as Record)[optionKey] = decoded.value; + index = decoded.next; + } + return Object.keys(payload).length > 0 ? sceneOptionsFromPayload(payload) : null; +} + +function decodeLegacyRouteSceneOptions(routeValue: string): Partial | null { + try { + const decoded = decodeJson(routeValue); + if (!decoded || typeof decoded !== "object") return null; + const scene = decoded as Partial; + if (scene.v !== 1 || !scene.o || typeof scene.o !== "object") return null; + return sceneOptionsFromPayload(scene.o); + } catch { + return null; + } +} + +function decodeRouteSceneOptions(routeValue: string): Partial | null { + if (!routeValue) return null; + return decodePackedCompactRouteSceneOptions(routeValue) ?? + decodeDottedCompactRouteSceneOptions(routeValue) ?? + decodeLegacyRouteSceneOptions(routeValue); +} + +function writeRouteParams(params: URLSearchParams): void { + if (typeof window === "undefined") return; + const newSearch = params.toString(); + const newUrl = `${window.location.pathname}${newSearch ? `?${newSearch}` : ""}${window.location.hash}`; + if (newUrl !== `${window.location.pathname}${window.location.search}${window.location.hash}`) { + window.history.replaceState(null, "", newUrl); + } +} + function resolveRoutePresetId(routeValue: string, presetIds: string[]): string { const value = typeof routeValue === "string" ? routeValue.trim() : ""; if (!value) return ""; @@ -38,12 +666,44 @@ export function setRoutePresetId(presetId: string | null): void { if (next === current) return; const params = new URLSearchParams(window.location.search); - if (next) params.set("model", next); - else params.delete("model"); + if (next) params.set(MODEL_PARAM, next); + else params.delete(MODEL_PARAM); - const newSearch = params.toString(); - const newUrl = `${window.location.pathname}${newSearch ? `?${newSearch}` : ""}${window.location.hash}`; - window.history.replaceState(null, "", newUrl); + writeRouteParams(params); +} + +export function routeInitialSceneOptions(): Partial { + return decodeRouteSceneOptions(getRouteSceneValue()) ?? {}; +} + +export function routeHasSceneOptions(): boolean { + return decodeRouteSceneOptions(getRouteSceneValue()) !== null; +} + +export function setRouteSceneOptions({ + sceneOptions, + sceneDefaults, + presetId, +}: { + sceneOptions: SceneOptionsState; + sceneDefaults: SceneOptionsState; + presetId: string | null; +}): void { + if (typeof window === "undefined") return; + const payload = sceneOptionsPayload(sceneOptions, sceneDefaults); + const params = new URLSearchParams(window.location.search); + if (presetId) params.set(MODEL_PARAM, routeIdForPresetId(presetId)); + else params.delete(MODEL_PARAM); + if (payload) params.set(SCENE_PARAM, encodeCompactScene(payload)); + else params.delete(SCENE_PARAM); + writeRouteParams(params); +} + +export function clearRouteSceneOptions(): void { + if (typeof window === "undefined") return; + const params = new URLSearchParams(window.location.search); + params.delete(SCENE_PARAM); + writeRouteParams(params); } export function routeInitialPresetId(presetIds: string[]): string { @@ -55,9 +715,17 @@ export interface UseRouteSyncOptions { presetId: string; presetIds: string[]; resetToPreset: (id: string) => void; + sceneDefaultsForPreset?: (id: string) => SceneOptionsState; + setSceneOptions?: Dispatch>; } -export function useRouteSync({ presetId, presetIds, resetToPreset }: UseRouteSyncOptions): void { +export function useRouteSync({ + presetId, + presetIds, + resetToPreset, + sceneDefaultsForPreset, + setSceneOptions, +}: UseRouteSyncOptions): void { useEffect(() => { const routeValue = getRoutePresetValue(); if (routeValue) { @@ -71,20 +739,26 @@ export function useRouteSync({ presetId, presetIds, resetToPreset }: UseRouteSyn const handlePopState = () => { const nextRouteValue = getRoutePresetValue(); - if (!nextRouteValue) return; - const nextPresetId = resolveRoutePresetId(nextRouteValue, presetIds); - if (!nextPresetId) { + const nextPresetId = nextRouteValue ? resolveRoutePresetId(nextRouteValue, presetIds) : ""; + if (nextRouteValue && !nextPresetId) { setRoutePresetId(null); return; } - if (nextPresetId !== presetId) { + if (nextPresetId && nextPresetId !== presetId) { resetToPreset(nextPresetId); } + const nextSceneOptions = decodeRouteSceneOptions(getRouteSceneValue()); + if (nextSceneOptions && setSceneOptions) { + setSceneOptions((current) => ({ + ...(nextPresetId && sceneDefaultsForPreset ? sceneDefaultsForPreset(nextPresetId) : current), + ...nextSceneOptions, + })); + } }; window.addEventListener("popstate", handlePopState); return () => { window.removeEventListener("popstate", handlePopState); }; - }, [presetId, resetToPreset]); + }, [presetId, presetIds, resetToPreset, sceneDefaultsForPreset, setSceneOptions]); } From 357252bd52ddb4e511d8486141e48e8ac3b2fe2a Mon Sep 17 00:00:00 2001 From: agustin-littlehat Date: Sat, 30 May 2026 09:34:42 -0300 Subject: [PATCH 7/8] feat(website): place builder shapes on surfaces --- .../BuilderWorkbench/BuilderWorkbench.tsx | 10 +- .../components/BuilderScene.tsx | 254 +++++++++++++++++- .../src/components/BuilderWorkbench/types.ts | 7 + 3 files changed, 256 insertions(+), 15 deletions(-) diff --git a/website/src/components/BuilderWorkbench/BuilderWorkbench.tsx b/website/src/components/BuilderWorkbench/BuilderWorkbench.tsx index efc53551..e292ae44 100644 --- a/website/src/components/BuilderWorkbench/BuilderWorkbench.tsx +++ b/website/src/components/BuilderWorkbench/BuilderWorkbench.tsx @@ -33,7 +33,7 @@ import { serializeBuilderSceneToParam, updateBuilderSceneUrl, } from "./sceneUrl"; -import type { BuilderToolMode, PlacedItem, TargetMode, ToolMode } from "./types"; +import type { BuilderPlacementTarget, BuilderToolMode, PlacedItem, TargetMode, ToolMode } from "./types"; const TILE = 50; const BUILDER_IMPORT_EXTENSIONS = new Set(["obj", "glb", "vox"]); @@ -322,13 +322,17 @@ export default function BuilderWorkbench() { setSceneOptions({ ...DEFAULT_SCENE }); }, [replaceItems, setSelectedId]); - const handleAddShapeAt = useCallback(async (worldX: number, worldY: number) => { + const handleAddShapeAt = useCallback(async ({ worldX, worldY, surfaceWorldZ }: BuilderPlacementTarget) => { if (placingShapeId) return; const preset = BUILDER_SHAPE_PRESETS.find((shape) => shape.id === selectedShapeId); if (!preset) return; setPlacingShapeId(preset.id); try { - const placement = await buildPlacement(preset, worldX, worldY); + const terrainSample = sampleTerrain(terrainVertices, sceneOptions.gridResolution, worldX, worldY); + const elevation = typeof surfaceWorldZ === "number" && Number.isFinite(surfaceWorldZ) + ? Math.max(0, surfaceWorldZ - terrainSample.z) + : 0; + const placement = await buildPlacement(preset, worldX, worldY, { elevation }); if (!placement) return; const snapped = snapPlacement(placement, terrainVertices, sceneOptions.gridResolution, sceneOptions.snapToGrid); appendItems([snapped]); diff --git a/website/src/components/BuilderWorkbench/components/BuilderScene.tsx b/website/src/components/BuilderWorkbench/components/BuilderScene.tsx index d7e350dc..e482cfb9 100644 --- a/website/src/components/BuilderWorkbench/components/BuilderScene.tsx +++ b/website/src/components/BuilderWorkbench/components/BuilderScene.tsx @@ -30,7 +30,7 @@ import { buildSolidWireframePolygons } from "../geometry/ghost"; import { meshBbox } from "../geometry/meshBbox"; import { projectScreenToWorldGround } from "../geometry/screenToWorld"; import { snapWorldToCellCenter } from "../geometry/snap"; -import type { BuilderToolMode, PlacedItem } from "../types"; +import type { BuilderPlacementTarget, BuilderToolMode, PlacedItem } from "../types"; import { BuilderCameraDragControls } from "./BuilderCameraDragControls"; const GROUND_FILL_COLORS = { @@ -61,7 +61,7 @@ export interface BuilderSceneProps { onSelectedMeshDrag: (id: string, worldX: number, worldY: number) => void; onStepSelectedElevation: (direction: 1 | -1) => void; builderTool: BuilderToolMode; - onAddShapeAt: (worldX: number, worldY: number) => void; + onAddShapeAt: (target: BuilderPlacementTarget) => void; onRemoveItem: (id: string) => void; selected: PlacedItem | null; } @@ -73,6 +73,92 @@ function selectedSurfaceWorldZ(item: PlacedItem): number { return item.position[2] / BASE_TILE + bbox.midZ * (1 - scale) + scale * bbox.minZ; } +function itemTopSurfaceWorldZ(item: PlacedItem & { rawPolygons: Polygon[] }, polygons: Polygon[]): number { + const bbox = meshBbox(polygons); + const scale = Math.max(item.fitScale * item.scale, 0.0001); + return item.position[2] / BASE_TILE + bbox.midZ * (1 - scale) + scale * bbox.maxZ; +} + +function itemBaseSurfaceWorldZ(item: PlacedItem & { rawPolygons: Polygon[] }, polygons: Polygon[]): number { + const bbox = meshBbox(polygons); + const scale = Math.max(item.fitScale * item.scale, 0.0001); + return item.position[2] / BASE_TILE + bbox.midZ * (1 - scale) + scale * bbox.minZ; +} + +interface PlacementSurface { + baseWorldZ: number; + surfaceWorldZ: number; + minWorldX: number; + maxWorldX: number; + minWorldY: number; + maxWorldY: number; +} + +type PaintLeafFace = "top" | "side" | "other"; + +function transformNormalZ(transform: string): number | null { + const matrix3d = transform.match(/^matrix3d\((.+)\)$/); + if (matrix3d) { + const values = matrix3d[1].split(",").map((value) => Number(value.trim())); + if (values.length !== 16 || values.some((value) => !Number.isFinite(value))) return null; + const nx = values[8]; + const ny = values[9]; + const nz = values[10]; + const len = Math.hypot(nx, ny, nz); + return len > 0 ? nz / len : null; + } + + const matrix = transform.match(/^matrix\((.+)\)$/); + if (matrix) return 1; + return null; +} + +function paintLeafFace(target: EventTarget | null): PaintLeafFace { + const el = target as Element | null; + const leaf = el?.closest("b,i,s,u") as HTMLElement | null; + if (!leaf || !leaf.closest(".builder-placed")) return "other"; + const normalZ = transformNormalZ(getComputedStyle(leaf).transform); + if (normalZ === null) return "other"; + if (normalZ > 0.5) return "top"; + if (Math.abs(normalZ) < 0.25) return "side"; + return "other"; +} + +function placementSurfaceForItem(item: PlacedItem & { rawPolygons: Polygon[] }, polygons: Polygon[]): PlacementSurface { + const bbox = meshBbox(polygons); + const scale = Math.max(item.fitScale * item.scale, 0.0001); + const rz = ((item.rotation[2] ?? 0) * Math.PI) / 180; + const cos = Math.cos(rz); + const sin = Math.sin(rz); + let minWorldX = Infinity; + let maxWorldX = -Infinity; + let minWorldY = Infinity; + let maxWorldY = -Infinity; + for (const [x, y] of [ + [bbox.minX, bbox.minY], + [bbox.maxX, bbox.minY], + [bbox.maxX, bbox.maxY], + [bbox.minX, bbox.maxY], + ] as const) { + const dx = (x - bbox.midX) * scale; + const dy = (y - bbox.midY) * scale; + const worldX = item.worldX + dx * cos - dy * sin; + const worldY = item.worldY + dx * sin + dy * cos; + minWorldX = Math.min(minWorldX, worldX); + maxWorldX = Math.max(maxWorldX, worldX); + minWorldY = Math.min(minWorldY, worldY); + maxWorldY = Math.max(maxWorldY, worldY); + } + return { + baseWorldZ: itemBaseSurfaceWorldZ(item, polygons), + surfaceWorldZ: itemTopSurfaceWorldZ(item, polygons), + minWorldX, + maxWorldX, + minWorldY, + maxWorldY, + }; +} + function zArrowDirectionFromTarget(target: Element | null): 1 | -1 | null { const arrow = target?.closest(".polycss-transform-arrow--z, .polycss-transform-arrow---z"); if (!arrow) return null; @@ -268,7 +354,8 @@ function BuilderSelectedMeshInteractionControls({ interface BuilderViewportToolControlsProps { tool: BuilderToolMode; sceneOptions: SceneOptionsState; - onAddShapeAt: (worldX: number, worldY: number) => void; + placementSurfaceById: Map; + onAddShapeAt: (target: BuilderPlacementTarget) => void; onRemoveItem: (id: string) => void; onDraggingChanged: (dragging: boolean) => void; } @@ -276,13 +363,28 @@ interface BuilderViewportToolControlsProps { function BuilderViewportToolControls({ tool, sceneOptions, + placementSurfaceById, onAddShapeAt, onRemoveItem, onDraggingChanged, }: BuilderViewportToolControlsProps): null { const { store, cameraElRef } = useCameraContext(); - const stateRef = useRef({ tool, sceneOptions, onAddShapeAt, onRemoveItem, onDraggingChanged }); - stateRef.current = { tool, sceneOptions, onAddShapeAt, onRemoveItem, onDraggingChanged }; + const stateRef = useRef({ + tool, + sceneOptions, + placementSurfaceById, + onAddShapeAt, + onRemoveItem, + onDraggingChanged, + }); + stateRef.current = { + tool, + sceneOptions, + placementSurfaceById, + onAddShapeAt, + onRemoveItem, + onDraggingChanged, + }; const downRef = useRef<{ x: number; y: number; target: EventTarget | null } | null>(null); useEffect(() => { @@ -295,7 +397,13 @@ function BuilderViewportToolControls({ return Boolean(el.closest(".builder-tool-ribbon, .shape-picker, .builder-camera-mode, .dn-floating-controls")); }; - const projectAt = (clientX: number, clientY: number): [number, number] | null => { + const snapHit = (hit: [number, number]): [number, number] => { + const { sceneOptions: options } = stateRef.current; + if (!options.snapToGrid || options.gridResolution <= 0) return hit; + return snapWorldToCellCenter(hit[0], hit[1], options.gridResolution); + }; + + const projectAt = (clientX: number, clientY: number, planeWorldZ = 0): [number, number] | null => { const state = stateRef.current; const hit = projectScreenToWorldGround({ clientX, @@ -303,10 +411,100 @@ function BuilderViewportToolControls({ cameraEl, sceneOptions: state.sceneOptions, autoCenterOffset: store.getState().autoCenterOffset, + planeWorldZ, }); - if (!hit) return null; - if (!state.sceneOptions.snapToGrid || state.sceneOptions.gridResolution <= 0) return hit; - return snapWorldToCellCenter(hit[0], hit[1], state.sceneOptions.gridResolution); + return hit; + }; + + const surfaceForTarget = (target: EventTarget | null): PlacementSurface | null => { + const el = target as Element | null; + const meshEl = el?.closest(".builder-placed") as HTMLElement | null; + const id = meshEl?.dataset.polyMeshId; + if (!id) return null; + return stateRef.current.placementSurfaceById.get(id) ?? null; + }; + + const clampToSurface = (hit: [number, number], surface: PlacementSurface): [number, number] => { + const { sceneOptions: options } = stateRef.current; + if (!options.snapToGrid || options.gridResolution <= 0) { + return [ + Math.min(surface.maxWorldX, Math.max(surface.minWorldX, hit[0])), + Math.min(surface.maxWorldY, Math.max(surface.minWorldY, hit[1])), + ]; + } + + const step = options.gridResolution; + const minCenterX = surface.minWorldX + step / 2; + const maxCenterX = surface.maxWorldX - step / 2; + const minCenterY = surface.minWorldY + step / 2; + const maxCenterY = surface.maxWorldY - step / 2; + const centerX = (surface.minWorldX + surface.maxWorldX) / 2; + const centerY = (surface.minWorldY + surface.maxWorldY) / 2; + return [ + minCenterX <= maxCenterX + ? Math.min(maxCenterX, Math.max(minCenterX, hit[0])) + : centerX, + minCenterY <= maxCenterY + ? Math.min(maxCenterY, Math.max(minCenterY, hit[1])) + : centerY, + ]; + }; + + const highestSurfaceAt = (worldX: number, worldY: number, fallback: PlacementSurface): number => { + const epsilon = Math.max(0.001, stateRef.current.sceneOptions.gridResolution * 0.01); + let top = fallback.surfaceWorldZ; + for (const surface of stateRef.current.placementSurfaceById.values()) { + if ( + worldX >= surface.minWorldX - epsilon && + worldX <= surface.maxWorldX + epsilon && + worldY >= surface.minWorldY - epsilon && + worldY <= surface.maxWorldY + epsilon + ) { + top = Math.max(top, surface.surfaceWorldZ); + } + } + return top; + }; + + const sidePlacementTarget = (hit: [number, number], surface: PlacementSurface): [number, number] => { + const { sceneOptions: options } = stateRef.current; + const step = options.gridResolution > 0 + ? options.gridResolution + : Math.max(surface.maxWorldX - surface.minWorldX, surface.maxWorldY - surface.minWorldY, 1); + const centerX = (surface.minWorldX + surface.maxWorldX) / 2; + const centerY = (surface.minWorldY + surface.maxWorldY) / 2; + const snapped = options.snapToGrid && options.gridResolution > 0 + ? snapWorldToCellCenter(hit[0], hit[1], step) + : hit; + const minCenterX = surface.minWorldX + step / 2; + const maxCenterX = surface.maxWorldX - step / 2; + const minCenterY = surface.minWorldY + step / 2; + const maxCenterY = surface.maxWorldY - step / 2; + const clampX = (value: number): number => + minCenterX <= maxCenterX + ? Math.min(maxCenterX, Math.max(minCenterX, value)) + : centerX; + const clampY = (value: number): number => + minCenterY <= maxCenterY + ? Math.min(maxCenterY, Math.max(minCenterY, value)) + : centerY; + const sides = [ + { axis: "x" as const, sign: -1 as const, distance: Math.abs(hit[0] - surface.minWorldX) }, + { axis: "x" as const, sign: 1 as const, distance: Math.abs(hit[0] - surface.maxWorldX) }, + { axis: "y" as const, sign: -1 as const, distance: Math.abs(hit[1] - surface.minWorldY) }, + { axis: "y" as const, sign: 1 as const, distance: Math.abs(hit[1] - surface.maxWorldY) }, + ].sort((a, b) => a.distance - b.distance); + const side = sides[0]; + if (side.axis === "x") { + return [ + side.sign < 0 ? surface.minWorldX - step / 2 : surface.maxWorldX + step / 2, + clampY(snapped[1]), + ]; + } + return [ + clampX(snapped[0]), + side.sign < 0 ? surface.minWorldY - step / 2 : surface.maxWorldY + step / 2, + ]; }; const onPointerDown = (event: PointerEvent): void => { @@ -336,12 +534,33 @@ function BuilderViewportToolControls({ return; } - const hit = projectAt(event.clientX, event.clientY); - if (!hit) return; + const face = paintLeafFace(event.target); + const surface = face !== "other" ? surfaceForTarget(event.target) : null; + let hit: [number, number] | null = null; + let surfaceWorldZ: number | null = null; + if (surface && face === "top") { + const projected = projectAt(event.clientX, event.clientY, surface.surfaceWorldZ); + if (!projected) return; + hit = clampToSurface(snapHit(projected), surface); + surfaceWorldZ = highestSurfaceAt(hit[0], hit[1], surface); + } else if (surface && face === "side") { + const projected = projectAt(event.clientX, event.clientY, surface.baseWorldZ); + if (!projected) return; + hit = sidePlacementTarget(projected, surface); + surfaceWorldZ = surface.baseWorldZ; + } else { + const projected = projectAt(event.clientX, event.clientY); + if (!projected) return; + hit = snapHit(projected); + } event.preventDefault(); event.stopPropagation(); event.stopImmediatePropagation(); - state.onAddShapeAt(hit[0], hit[1]); + state.onAddShapeAt({ + worldX: hit[0], + worldY: hit[1], + ...(surfaceWorldZ !== null ? { surfaceWorldZ } : null), + }); }; cameraEl.addEventListener("pointerdown", onPointerDown, true); @@ -418,6 +637,16 @@ export function BuilderScene({ baseZ: bbox.minZ, }, "#00d9ff", edgeHalf); }, [renderedPolygonsById, sceneOptions.gridResolution, selected]); + const placementSurfaceById = useMemo(() => { + const surfaces = new Map(); + for (const item of renderItems) { + surfaces.set( + item.id, + placementSurfaceForItem(item, renderedPolygonsById.get(item.id) ?? item.rawPolygons), + ); + } + return surfaces; + }, [renderItems, renderedPolygonsById]); const groundFillPolygons = useMemo(() => { const half = BUILDER_GROUND_SPAN / 2; const [cx, cy] = sceneOptions.target; @@ -445,6 +674,7 @@ export function BuilderScene({ Date: Sat, 30 May 2026 09:34:50 -0300 Subject: [PATCH 8/8] feat(website): add poly pizza gallery presets --- .../gallery/glb/poly-pizza/apple-tree.glb | Bin 0 -> 56848 bytes .../gallery/glb/poly-pizza/broccoli.glb | Bin 0 -> 50908 bytes .../public/gallery/glb/poly-pizza/crab.glb | Bin 0 -> 45372 bytes .../gallery/glb/poly-pizza/ice-cream.glb | Bin 0 -> 54852 bytes .../public/gallery/glb/poly-pizza/monkey.glb | Bin 0 -> 40832 bytes .../gallery/glb/poly-pizza/mr-brush.glb | Bin 0 -> 375140 bytes .../public/gallery/glb/poly-pizza/peanut.glb | Bin 0 -> 99224 bytes .../public/gallery/glb/poly-pizza/pear.glb | Bin 0 -> 13316 bytes .../public/gallery/glb/poly-pizza/tiger.glb | Bin 0 -> 55376 bytes .../public/gallery/glb/poly-pizza/tomato.glb | Bin 0 -> 20476 bytes .../gallery/glb/poly-pizza/triceratops.glb | Bin 0 -> 80012 bytes .../public/gallery/glb/poly-pizza/turkey.glb | Bin 0 -> 34392 bytes .../GalleryWorkbench/presets/presetFiles.ts | 73 ++++++++++++++++++ 13 files changed, 73 insertions(+) create mode 100644 website/public/gallery/glb/poly-pizza/apple-tree.glb create mode 100644 website/public/gallery/glb/poly-pizza/broccoli.glb create mode 100644 website/public/gallery/glb/poly-pizza/crab.glb create mode 100644 website/public/gallery/glb/poly-pizza/ice-cream.glb create mode 100644 website/public/gallery/glb/poly-pizza/monkey.glb create mode 100644 website/public/gallery/glb/poly-pizza/mr-brush.glb create mode 100644 website/public/gallery/glb/poly-pizza/peanut.glb create mode 100644 website/public/gallery/glb/poly-pizza/pear.glb create mode 100644 website/public/gallery/glb/poly-pizza/tiger.glb create mode 100644 website/public/gallery/glb/poly-pizza/tomato.glb create mode 100644 website/public/gallery/glb/poly-pizza/triceratops.glb create mode 100644 website/public/gallery/glb/poly-pizza/turkey.glb diff --git a/website/public/gallery/glb/poly-pizza/apple-tree.glb b/website/public/gallery/glb/poly-pizza/apple-tree.glb new file mode 100644 index 0000000000000000000000000000000000000000..6cac4214248db7f47738b64b838ece2ed1303f3b GIT binary patch literal 56848 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

5%)=xSo|HHup9OD1jM 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 RIqBslAHCn?qkqpU{~xE1NUs0@ literal 0 HcmV?d00001 diff --git a/website/public/gallery/glb/poly-pizza/crab.glb b/website/public/gallery/glb/poly-pizza/crab.glb new file mode 100644 index 0000000000000000000000000000000000000000..798823a565fbe22bd3384b23bcaf3553ec45f4b1 GIT binary patch literal 45372 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 literal 0 HcmV?d00001 diff --git a/website/public/gallery/glb/poly-pizza/ice-cream.glb b/website/public/gallery/glb/poly-pizza/ice-cream.glb new file mode 100644 index 0000000000000000000000000000000000000000..8d77988f869d6ecdfe73ad4d772873082c41744b GIT binary patch literal 54852 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 literal 0 HcmV?d00001 diff --git a/website/public/gallery/glb/poly-pizza/monkey.glb b/website/public/gallery/glb/poly-pizza/monkey.glb new file mode 100644 index 0000000000000000000000000000000000000000..f102091f38a99a765abd31bff3c9c342486d58f8 GIT binary patch literal 40832 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 literal 0 HcmV?d00001 diff --git a/website/public/gallery/glb/poly-pizza/mr-brush.glb b/website/public/gallery/glb/poly-pizza/mr-brush.glb new file mode 100644 index 0000000000000000000000000000000000000000..57df8263d8297168f1eadc6dae3d280c6c1260ab GIT binary patch literal 375140 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

g zIM)6H+j4NM=$|$eC|<9pf;_YK;)z>ppjh^VAp1ih`$I;t>!64ciMm^8+h+y@@xUyb?yS1ylq*Tc>A*pnYxE3wU1s-p6-ue?c_J^&rUgY&gZ}4r}$rc!0+GJr&wN7yp-`Dl<`x%N7nmA zS?`AZ{RPE)<@LYH>u;9Vr}+Q9rcQp=LyWdOwNUm$Pwq60n?RbAx^&g2a@X=pR@z-DUIUThvNOln-e*r(P3VUdpPsjisj4-G+-Xiov7Yl0CfpsM?bC)x@oV4r z?2ex+JiPr(P#ibCG2GR0hIL1_35p%+xIn>=_7Ikqrci8YI0?3Hy}%B(Fj6Rn772he zzbb8q{pA!-o*E3Xt&j5VZG@nBGy}No;Ub!^F-MBmE!TmwWKR?W-Wg&eJ1Vancls z@JJUFTh9H)CSMu}ck^sH#hzm=U~;?_xM!VX6r1fD3+GoaVBysZ7{&9eCxD;zS+2Te z%qTwlb^UoqJB623Lon>-f)r;4rHQkhM#C!abAsYXzb)!RN0Z^CbyH69 zey6p}HfIv}>8CJ?{~r6q3X2UPaGMQKeEoJe80S)n)%a@;6i>_ahYJnXh><7HFpB5T z>j59o4A)&;q$1f}2M#3lz}RD_#e9MlTU|Chradl>bwY{@{iX}ybWB9t9g7t2-Bc9^ zKd@CA*!m&G!-iO3dgy1STGALP4)HU@Gr@hq(sit$_>M)UnBO)GxVkH&_*~CZioN9! znB!g@=geqphy+i)jzbW1WEF^HJLlZ-3f~ z$@?=+ zh2q^#YelD=N!VXMMNr<Od&FJGy0^6BJwQ8jHoN7l@$h1%hJvOh<3)vx@yKV?pt` zw-Yey@kw@UR#!%Gv7R;N|J8-d(S|_rAjfTDxVXu-c=-awvL_T}SxdO=4}s$0i?ev* zj=f@R=P5w3_3_xlvOh%G9|FZ47bkJqAEN9Jfnt~*DP(_$VIJx73p4-hW^=!ZDVIiK zd7iC8ahEzSc<@Jij7Ur46t^;*gd4YB5IHT3IK^_NKsjGq{ao?U?PpArW2QGoIb&kpk!?(q%4q*&$z9b2taWPXt1-kEEK zo2r`p4pncY_)eb|s@gk;fXjXZq&U?jk2O0t1!R5%#Ty6Ig5FztK-<-87{xE1n8D%Z z=h@8Tt%2g(F+Cvk@J{h$dNtG%ql|~ictFPUU$=MTpKOL%JGky&3;$>B&%^HDZD88g zPB7LmO;9|jfWf)ubz!vFEhyHx4iG4R>!a$)FM{HrD(xZl{YlnzKntXJ)Q}o5;@}Ck zZv#V$J=dRN&+MMDbBFsN#kUPpSX`+Q%+KhJ6gRc8Wj14MVL``ENO73D9XqM+3w(QR zr1OA{j20A^Om>BPGc4h3*DQr% z#fKcdyk+v*}NCLei5uRecucz9$s1%?xhb^bl&(P#qB%9 zvFt+~*+}uYQGF8WcQz3czLPqiP+!8jVlNUVrbC*%v>v}t={cb&LJ<1v=Zkrwmb1#JPakZ{7 zife$ewKRhb#%P7v+ zYaw3#9snP8YXHR$`YvRq&K3|9?f?`A1n7cg{0?RFse+G&(4}4+0dY6m5HqJnCd*5;<@6Xsg;{>DFr`c*I zPDbFxt4S(~bBxQ>HUp>PwB-v0#Sd~zgnuV5y#42{pg3ca8_MT978jis6o-~YWBNBI z(bdLAP%NM6czwq`rNQ_PjN+>%o*3L~K9kRPpt#BASHgRA7BjZ?1&VX8&*S~wbeOAu zB2c{TnY~K(heGy;K=Fu9R&1}TC61fm3KYwpkfjFrVeBkjpxEPDRYmrPDEmW3abo#U zA^Sr-*3VEy@$TxnIC;)6{MG9+r?_;oE8d-9iKn|}af;0I{2C^51KKljLuSS3miMY4W5h?J?v1 zNntvm1!(f->&JqJ>#xth+3dJ%fDDxv^ zepD38oM4}GT#@-vQM~b`H{vH_2wl<9nc~9o>%uN05EgGuQd6vNzefF3zN_r<-DK1f zt7JSX84t*K{_8frlETz&qv7LwFNNY0@^>9->)Au~t%(Z7mN%ooCN7Olbf2V99Ag>{ zDPz+_+lGx4irX@K@GS0(A3DEuq4?~rboNOv8e48Zqo(-BD8QdAw zy7u^KOCqQE(~T%x7oR2)+$V90$D2lDgK=rBcEd)T;(1_?Wv4oWhwIBiieFt%7pwH6 zVfF4aDvEXf^KTmbhdTc~Kd&`iJ*)O=-rFe|w85)mgV^<~7|3>=p-?<=gAI%+a)O&9 z1}PMW_m~PkEwb39YsD&xf7XtL#i_w!)UU>Bij6xvL-7b3ycTQ4DgNDZ5u36%5-)Cu z=M;~M4HCDqV(@mi8JyzN8*Q-RF(>TrKZsN8(qk$fZJ8xXt{1B*eo;FX)oH=Z_;+I! z#liN@ILzM$qGPNSiY=Nh5^eTH!r_ha3dPz`Qx#)q+xw|%(9FxcPi7KmgZ=V%Fdyqs zC<>paP<+J24f0=_!_CWu3dO#iRl=16gzZ|$6t#(2rN3t zDQ;CX1zhnxBH&-1qO z2z3%@gWD!;W}%NmVG~=gQ2b?6H@N-A66W{ar%=4eI3BjHabhk`ixrB$HVcDMFSiPZ z8%-37*KBMBj|RBn%hU&j6c3lLmmXywkDVuba*AswZ5GjwL-DS%o>OeIxf_POw#0sY z_i>7+7{}wvbxvZE(_&8X-DY9<{^eHov$P4PxJh0sT;1Ol%t9ZyP#hf3M5%o|)C~1h zDAtCWsu;ufua)@3JC}I&tR&C|cQ7htYhwdIJ!7px@xej;Vepc=u;g%+?Znjgo}cTUKz2jf_gg=GXxI zp1zh-d~R@mJin+e?k@=A6nFZVgrBqa@(JJ1s3}fu6^PY0l(K_+Q&kkt?PiQKe|W>m zalQ)0`40~A5+w<8wyaPnuDG|g!J7wGQpHaE%xAYr0&Q?Feu8~DFbS&pTvRB&Yw7_F zM>c{OpT>;h%1z?I{Kj+T#Zr_;UNVLUDmnBiJ0$2kVarR4883`m55; zCK5*S-uQBkZ7HB~VNvm?6VYMtHOsyqR-!6VmA zVnyF$z++P@g<=!=-YYi?XV}uSnL@Fl%~bfAo5d=hD^XD#+aMO?Uz`cEHuqd8{x;AV z?x)z`le@ucil?P7V)ZLc#RqffWr%tMj1`I>tmp)1CputejhbqTAEiuZzkH(6b)+|^_?Xd5F|c72mcL%lDehWg zkLxenVKx1|oMQWd(YT>yk_hU%kW<_-Gz!O!&tN6}jXA|VR&~PQKnLKuHB}T>N}4X# z42p)DW4slLwV|de#xSO{P_IZW;UYZ=w88qdF0!&Nfw14;okH=$BYk02~X#Uw&*UtWG6>R(O5{yFMTaEU#5z z(+M^!?FbEC+C$;(s*K{Q@^8sod1bJs?q?K=YkZA{puO?p6sM(RigBAF;nLaT3dPz`Qx#)a)Yyp6{M%e) z?M(n}@W7pinEusZh+g?jq1eAp57@oS6edh{ViXS;9|KEoRb$0h`!I@Q>P&=~(?`Yo za%)EMqtPayZ|i|uuI*PS9=WwPQw1jCi|^yq6tkU&gyGd-%wF+~Q=C$_2ios6#lKUX z1jUZyV{q=>YU1eCK7!(5btYo9;-jpj+*(jPeyj;zw()?GrTaO>3)a;Zivts(dE@aa ziYxAIZSXSd_F~$Et$g0Zc+duWc3RK!eucraF6$JEtK=~FquUxLTK!Nc{_!gYlGeJh z^((3{im%TIg&`9+iC@$1C=`3`w*s%%UD0^Azd~`MQ!h5BYCJkl9;>FfbEoxU$FDG~ z*JT~2xchpBi*#CJgVsMd#n*ntU`URekogf5t7nAbi;0`qqiJ_I#YG3Ku+popuy&t6 zr#R21m#A7T9)_ljRZ*-BHB~VNWABsP@K_G-|0fZ&!ESYY*vd<>aC&8?Lh-M! z0xMgEV#{s|*re>KII_;;LWbBZJ9MPmHnOfm37 zF{gO-p=f;P8p&dJ=5dO1S2|)VeOqv{w&fJ}RV@(B*G+{D9Ur?;tPM3)F^1o*!}zd` z3weX*NuUj0d1y7u*%l7Q2KyC?Q)?;Et-KA)DSxL>{7NSl95ef}l_{?jiZ3+}hv$#i zi35-G6pG^`t>NW;hUu&BswiIf)Q4?nao7ZnIK?T4R*SrC;n=hCeopZTBL#2$XoDBZ z-*JkM>%?Nqg?&YS$}3KBLGy5oeX@=%c$~*6emm6~SKnjcyZ)}4;&Zosgbl>Ojv^z4 z;);7)8{9r@IXAL6#ZT5v0&Q@I)IV(M0e|>-ZKy)=0mUB{Hq`-xc>@)SQ?Dn(=&HA! z^rMUwiVvUhhh;f`g z)uEi?Jm!xdOmwj0+<~0plCV@6MJLouz ztr86Dn6E-HtL+JOo;88}-g6a-z2#YN(>xtkIB2Fq@$n-;klpU2$TC+c6q_2Dz>7Ve z*xJ`$Me(gLJ!X745%)(Gs3}elIxePF2}VQ3ms32hjwdd7(gcrs&*c<5%Ks}c-l`*x z44TO)-gqPkJGMW`BF$Bt;%!w-@X&5g$R6RZrnn?PPmI5u2#?|mR1|ANO;wCxeWVe$ zG+xZD+a-fGI4nPpIbI2aG1ePZ6t`T{4Hgfx0)6xIDvGB}h==*7fW;dK6~*=iVK8&b zX5sreT1Bz-a4Q&dup8cs?&(5tTAgmpZ+twmH!al^`{d^d_vlDque@O`&*PlL%OScr|OcCPSgPS6M84Q~QbocLpjHZ@#R+6?kVg%GK8la-M;@;Kw)MleXu|vBq z&~CpS+7G#}qIl%YxvW9uC_F3Q>rC+&mngAeW;AY(+Q})NuVah#*E!&wOD{OZwr?U4 zM`VbJW1n$~|1^!p!#+u@kIhC-aaQ{-cw(;|TpxK~O>subTydgu6!f@RRiRiLYN}!k zhLdLSpTXz&ZtEn_2J6BQ)_h;IdL^Eq6L9xm77`$Q{z#^w?<`nb4F7kal?P1|9yF!YuhprS$ zx<`PMSgTN6ac^sbGnTL7?#?Dc$1?%6!GkxSWw#3_!X(o}3dKR8eL(kh16XCFRw(}b zED=^LzN2h8JXfK3kZKZ~Y9@cr%ln>+V#BhAaOqbc>>ag7O|i-GGUe-~M4S_x#wli- z&x%Kd6EWB15T`gJtPdu=Y=A9o)STk`&k`|hrYgp;|5^>+)ZhjGWRnEiV57ogtV+ZrI9WxX zQ9L2a1N1W+!>@JU6^fl462Z!+Tsa!DNujt%FBp0mpA@-=)~YCOv)u$9-SI$S?#3z3 zdSbx#1}EUceU~`JUk)D=wIe2BU=@8q@tkN6oH4gCTCV%fDQ@8)&*z7h^KMf%af&zT z1!IZvNw%Y4t(xNe9VU3-wg=d^aFegU`e$d}G7x%`6TtSsC57UOds`das);!-nPe*Z zpGg31u>Wln_VRrKyu5T$P4QW!1-u#U4vTCpIK?YcLSR>B0ZS=!~V-P!x^6E(y#jel-#VB{2ZfBuT z?2{6L#tRC>kupbx;>t%7ut`}{W>Lvhp?Hk1J37p20ejDFRZ%>>>mjivF9bSV(R&d=pbfrL$$^F3i3iuU`_vR0jkL zUiI55isQD&!?6Yq;+?&nLh)d8H+bk`iC@j#6^fl6Y-f=?6n|f7rBJ-Cl7k4n6OREo z`&1OikF>-<`5P78O&kg-UUVZA`|0cumep>nDGuHqkMA2gu=WmioZ^)hZaCW65>A=B zbBd#HZx{VUDEzwIic?&1Z)<~hwCP?r(Qa4ai9gAp4PNFol(jU7gQS)>R1^*+e)^4cd0`0me?3jHSrg_3vMbDcP(*&kYnxeeteEXarBQBY?nbK z9`O0DqIk5|P+@5hhfd9Is3|VUX^Ue%s4(!vDo%00>TsOxx>EGoUCJq59vg#`O#GS5 z52rY*)CGSYX$Nl-ayZ4?KCciFRU*OH>${p_ZK$b=F?eiT!G{Dl=c)CRK^tsVV;@Vu zJ_XXRuX3TdG@u7qyfTx2kG)n+aj{nd)Gu$%=3h7E6gN(s0(xHi#9ha(oMPJ*W>6H| z18bRgZDNI=t3`OW!V%u+vh73^QsA;v$O__yY*0^_OwDHJsGz&bT&DHMKx}fBLNPxT z3oF-qu-;3LC=^GhhC#4%u4w+}utIUG?A8$Y3ea+RszPy=jOF2@IQd)m>s1sl`j{iq z)Zyqi;Io?I{rZ4=!rP$dv@A~X@>8*xy3s?_T6%<2JR&s=|2pTgrhg7|ir1`bjixUF zTKcDQiVK!|h%t}jU}D&MHN_S8wl+Ad?+o5*MKiv=TQX>aLm#HImGz_H#qHAU zK{v58@HfL$6c>+(2J4a(78{_WP`vG06l~})L!9ujQYiLOb%q~l_GlE^QlYrgn-n&G zY&6z5@jylK;D_mAP5o#zKBupuI62)Ox5sxzuMfl26fYkUjjKvi#G45^oZ_X|qR_== z2K(e=#VJ0dbjGEr_Ru-BC8yZzd5W+f7Y&<_Jy27u4K-CUhS5V76%I&QtseDBe(z8V zZ0pdB8NNw?+HLDPQ=FR90)o1@L!Q$uHN|t6hk%1#0aLjEr+9Ko0z7TjTv-3{=M+!B z-VOyg;&33l9ZkYT%-_9zE$Cq{yDHq~#tVx=R z;_g>0vF2}A?2tEGMR9ZMFpSCBChGq5RZ;x(WIU#{bYkab9Ce}ir;Z!$zikP@XSxz$Q$0JYDb|LXsu;tdsSb*9|6KKpJ;|UA9-vBPj#Hw+y@9!kVx0}0!C{O& z{OM9lMRAw*(QrVO&JKBOa-sN|>?dDcN)=B(ymF+tuD?CZ-_{xXoyabv*zRaL%WoWw zFS;12DekOF70Q%oG_P&0rg+fC&iHtgJ$81erKY%Y`)IUc>EcB1O@$O6mHlM$<`mTDD)|HQ6kqp}4<4ex4 zDsGeDSXj0~F+1i3S7IB&-rg4!iZ{6?!htFel>6d@Lh+aL6G2yfUL@MgQYdbCt|2U| z-xsTVTCSql<>(8gNBbmvccliWcNG6EUae z1NpA06P)6b^Aj;seV&c9nZ+sIdcGls)awgpzb{u)?6%_tpW8kOib`rI6l+6GRg9su zS2~}yW)EMTm;~D3xoh>n-)a~#{jjE|uC|*A;39{U`s2`ZzR4Bfv z9s>Io>f`HIg$l)sV!yD{FbXr?`zaLndY7ZN`;?4b9OrhSc=}pBoM1H!-SmfWiXZk4TSyd)ewiWqPkgSXxVK>^xbe&ZKlaR4Q@qzPncaLDjoaAHLW&na zhA3MTh50wER1_aM<$xC~I-!0guA(^fZZr;ePZG)gpHvjL3yH!nFEiNtz~?H8ch~HM zF;5-fORsDd#V0G7@Q2+;EQ_>G2780(8Hw> zr&zVY9aPW)jyRq;OmXs!1W55TWjz+xR46v=6atOj7l;PV@e0LOSDM2Wb9an6o~4jn z)`VT1oq!#8OjE1~-oNLNupb?QcU6rPiYIP#$CFA6bp3tYnc}fG5-_~4spz|?Ca3tF zT?lS|U%&#K<2l8mTT?}G#sY7+Fs2?X_svjIJo%FBnx;vnVRCt1M6X0jyIG?c2!ecGVB;Pxse3w=C2P^ ztPM3)F$VTW?b0^90}n4s25s<@`lHwt&sZ3ikiaRvVcH&A^l^c|0lPWH<~#yk=`Lk0 z9rkgGpTCcR0H^UH>vKA%I4;cv23U2#l*L!o6z_evjCoCr#QW{Gs3=}hf0VfH8H*Pa z6BLS_o3+PMPZyjOxLcw4l{x|k>n#-{9QG*`m%fj|Oy}`z*ynVG;`8Y)_}H?8{C%9O zDvBS!TqdediUiZnThtU++}qmVS%;n|7pgT@wH%uS+TbQpMND^fFz_F~E)*AB^nmR; zrZ8qtC57T)@?Di9epY4{7kw0p{ptln!igeruXwUT@!2^haQlM?{%qo|Q2ga+Wp?{u zBKnRmQBkZLRU`~n2cy>m-$IJ-Uh=^9e@$@S-b$QeH~Fs9LBA`D)fap?#m@EQyG~CQ zvA@NWImLeSOmNG457=ko&ME$Iu(Ie_kO&^5OVku=LrqnT!7%Ecy4}xwbzG@@2eB5o ztoB!?XFLily@x9lA09Lm#@E${t7#h)ic<}eVc5qk)!_V{3dM&#N5Zs9-$i@F*$T-e zdSK!?3~PMUQ4SMaRJ=ho@J%w_TrxmS@x|I-MGfOoIJ@s~PVwHsL-BNNeQcG!fm57p zkc_PQB6Xkqot)w&o+Hsf?>lQ|IGa;E{)Qel_811eKkIOc+r@5Bk9?C1{c{JXD6Y7- zwZU&YC-L4dLirz~WY7i=v+B*hhQ~ol@C;5dUTzINtpS!!*~2M5QY{=@>*uhy7q@eY z$Mueb(gA&i<-Q0`@sl|KzfZJ5SML>SisyFDWqNbNaoYa7DvIk^^%md5F0jwOlN1-^iS~zZRkR$9aZC5BB)H@FU4(!YJ?2S+;wwVVw<9Hiz9lSzC@hO{J zadB=qBoy9NQ>+a&RWXK{)o&?A9p|WYQ<6X%JU6)mwyf%e2{!Wo6$!R9m?-ip$KY=N z)0|=tuPm0^bSgeLX2vzS=RgOrsBecicN|ePIqrH8^g5d+iX#^@iq{?sf}uXsnfZrh zOp~qKw1rDII>XrWlbI&J-#(1>Dv5yDasG_rC*PL~kGG-F=UGce@n8A<$NJCP!H$_r z6^cu}V{yQ@0OoruaFzfZywKQ^c|dEU$zTy58n)w!hi|1kI6K~XhLzkmox zQUSAK#4H9-LAFnuFklwUfnX%(oR-}sBPLK$3>W}O0xBSEpA}Hdii%k==NvKOoqb;S z@vU1$)qZvBtGa)k-``|AnaeR^ija82Qb@d8<|dHpcxXDhBL?Dsu|Z~X0xof`H- zQ~2Hn2hK9vA5%rcQoiRqe{R0)P?i@pg_n(O2OZaj%Wgi?Z&=@6a zpBPF_;i6BzvSlB)@B!hop((s1$y9cFxTf$v!vHLD3F322HMpj5`D z+1=v<(bXdzl)-}*2FtFCS8<)DSxc3{F9Q8!Gc7mpc5U~OGFa%`OIG@IpzOiSBfK*B z%&|#)@f{c0%h5%=GFWtTJGWD9wQQnB3a<<l$!u2^~OUhuW)nGiDFbYQuKPXiO8|(XVd7eQi?a+~w!FPwp@fj)pxT>L& zl)*_cLuE^77;f!6f>#Eoy>^#f*(c@>C&lv0;QDUPviEyK`3`zHyfS!y=Xw}FUWdEW zK1}xi172|71=pE-@%w%Ea!p}@wkNu~81Ow*vbm=4$vkgNTW!W)Gg!+th2NH^^I8^1 zsAiiFHia|XRd^MvOO(7l44cC34^>dV;Cr;kJ{+6Em)1r}b2{tt3)Y5XQ+R2(lvkgy z3ht!1V^f$fIVRmW$DEIU6^c#ahw;;C_@D;*cs3lH!ad!M`Sh00_;D2u*c7%~dYkkE z>iC0`R$)_k(MT8M=f-ibZMShv;UVX&WjewhvXfoZrA^_XgPdg>eq7|g&Eudc?A%8~ zW_WDAY*SqYHHCfHIYbk7AF!&**5;bR8Mjx<_~dGC+>$#O!fnm6u0HaYJe}k`g9tU!3(OKxJLT`Y-iM+QwDqW8iZ4=N1|!; zP)-?KZ03vojgz_BjQTSx$V43-A7pXG%$yfeo$xvPyTxjMivo=oVvzHt2%Ha189eMQ^ zi}U#^`Kb<2}2Di7<#_=tL9OO@vDT8mfzszmce$JV+u#qW) zzu{C)relD?pQp%_!L!7D>2pCVw0<*NrVJkNB81Q0a-YLCOJvI6>^7ymrPP(vD_$j2 z24hq)e>KWjTK>vYrVRFD<0X)dmoB2AyfV0yjmO{i0kQzY?z}R%#j{k7=|fp`!)a0m z+cABT&-BTn0j^SI@K&a;3Xgg5HM(0s8GM!L!zoN3u6Hotl)(;6-zG49%j$=F0E@8ep{PES5!RejqVK6KIfIYJ*{6F>i{n#^y{CQ?mSk6uH zPN590XXWM3l)r;Cg{%Kdc4e@YaXpM+&%Dl_*%bbt%HFJNJqXw{udrt}g_V)_zsqP= zJ8|z=KM!Mmi!vBkzdgnJ?F4mKfik#+^}{i&9~v>ctPJkL^b+%<*j}3MyfWCB>6sTy z&-B%Bl`4Z72jrOE=*aviWiYe#!0bN9?7r;(1uw~;BGV6QFSGjefRw>c-iOL=n;UUo z^DdGy*xR|I%t>=9`VUhjW$@u%Ex5&kaO`>97nH#(%ckI>?d|cC)=f|b$9jh0mE#6{ z$J{(n2G8Ev5x@SNBD>IBEKmjy8PI}XIXqmJnioRKU>}olbf7qj?hlQ`{|!89*8qM} ze^Xgy<_P@Xz|yJO==04?=707TuMAczamV$Usnp7@oL2_BJ(z^jA;u`(J&BaTXLSZ} zwr$+eb7(%N48CC8OqQiL04JGfqcV8r-c_=X%HS5=?(&y^S;%HB zZh^|+nD&GDoLgS9>D8&cGFTG<(b|gRhFlW97~s znDi;1l)e@d0>RzKoHCeSJzn;r ztcPs4=K)X#t9Kp8Z@uIu8$CFiR|W@iUGRg~WLaUVFDZi`y87Xk$I<-#hpjke@R!Gn zF=uE!XR%AdDTBKi4&;K#2U}<)aLV9D>L?5SK9T9ruADMh8W=2VXS1ApUw%cZ3^vhS zEEC*&$=iiE@yg)A2mA341irFT%UE6+?6X`SR}G#a%bGBTQwB%Qut)o_6#jDZDNY%z zF?SX|kG#QI+^gY~!I6#qxYuQYxIbVlrwn#_WgvUN{-gA#87YHZ`gzILOGR9$$dgwF zubyWs+imfTk9nEPD}z@x_Te2IgJeHejNp~Q^fQy2eUX!Oxn_jQ;QiDZKk(~#hYV{} z25%LcqDA8w&bnO}R0bz}p3PnH48cnkGJ!JqrPFoZw98DK)Aby$46eI3PL|s)nF}j7 zk|~25CR)jM_Pfu!ENw1R25YFy;b*T1ktNBFS15yz__W}STI$N)iEU9CJTI*?l-6qV zxjx~j4DNRS250^88K*sF5-Nk!yfe6l3?KAK97oDv)pTQCZ__v|nb%FG3^tk4z^l5i zaKIiGm{A%kVg;1I(D{2pgdS&_38l))Jy8<~snI#)OM0jCV!dVjEN z-{I5T=i{@cKXG?y)Zy_&`nRK3|_Qqu8huWW1vq0DTDnN|K<;w%}2-W z6M1Fu164hKq6HD?DXgLT#z;O5;UF=XBuP8pn*8iF>V2dVjN;FQ4|EG#k3x4*3a zhEcpS_y~32jy-gi#duco%3#xi*0Pt?ma^YkHM}x-%YJ9sPro?sTg(n#8T{^4IV_$O zj$2AfV48Ut&K=N;=e zLU8ucYL_bGMm^fO<)pk@a*3S6|Dx}s4Rd$^zB zfP-FoL-`d4ylXL>oQAof>%4Jv?6(_sf1XYmH<#n}8>xhP%duqO4)Q$gk6mBvCTBhX zFU)&OJ`=og#nu-T3|_doq=cq2-b@aX%fWc_a^6f1UM>gYO>*8LnkPsu2jk7lc^fa* z;^lHM-t?RCwmW*9|H{29iZ$-&FzC@>#GDvb9DH9L~a(eR@9E>-}c{4dcE(hZcL5w$(1LShlzn=!VddtxK!$MfS zaT#hSOoa`DSKyB@0r)2@$Jk$|LF-O9=AStM-|mF5vp~;4#?~+#JM#i)mV{$NZ(Hha z?uhp1#!-)UjyNibqbpCHa6{xQ%FtPcoo{}j)O-&-uk)T3YO}Mb_CBE*3p{c2h1Ybs zhZj0b(&K;h3d9{_bokY?1JFaJ&OaOyh&ND^zhxeTA#e40vPl~^2N!dSMP*DRqrW#pBoyTc}*KeyWy^B59xGmevZEQMFc$bB~L}U2fk& zJu(RS%|D^AbueD=c?+eQAz0e$74+{Lj2`NzptHFLuIP9cZXfc%cXy9M^F~j6K0pd5 zEj{sm^+fP`W&)&&O`o^Whm)+33lyRhVx!sfZJBfQ9tYqxV>J67xmk6woHH3A8pIE{~3W2 z8zXM`*hq}>HRQVNkHCFP^tp$VBQUj9OK#&y_D!3uy4*K?cD8wy4)@JJ0@v+P7RDxeVB5#%pt6Mr z&M>P7X}5)V(&HX%a#)C#y^A5}z5|ZWJpi#=9k4}14E1!j#R<(M)Ng?;`UHE?ve%37 zxmF zTyNWvAGtUX*LCQ`2b8n=y*r$DaQ49wg5i9bfe-FE+=h=i=8w}{+wvEB1z_EQ-n@pL z3x5A#!e^?u;GA?#zQNi9yLo8wTX%clwS*_s@yJ3PIR6o~2wI3g-X0>W>kc^Bv6Lj; z9C4vn41Bk<#mUR!Va*C#6f_G3vu}%Vo4+5Ne6k2j#t!1v{BXfr=B8Y&wJT;@8*=wf zdEpKV18#Ak7xq9)t{{)ui?{5XoT`2puHA`S(>w@&Oz6mc%M3*ECUb60TOafoHJt0~ z?t`hP+i>6e2cVBp8}8_7e^m46#c7v0v?@@NfiPD>AT+|`=4 zycJ`0X9Kz}6Qek(C9O#jWAILGni(v{wOQ)q?k~oPVU5za@nU?J*C3r&BxYx_f04Gm zFUIV;A5uqM2`;^+MmzgR(B^^`i3UjUpoKoEw3FcP%o>m!4#OP}E8#(HD4NeZ4p03; z(O~y!c<&R2saARL@pS<1TC@+QO%A|!nOPt`=Z{`C2OwV(fS=o$LxZ{}&Q$3M<}W<( z<;xxrvd{x%&xgZ^APCI5wb@n)Ps0~3c_0w>0M+nB+o`rYpTedi&GgNJr;LAc?*lzjU^*}I4LyWy^RA9*&5t=<}4Wg?e zJg43bcJ~tF)1`gj>@G2yeK!H>C;3-@T>W?f&b3*FdUzSsX8zSD3jOm?Lz~a>VRIKV zTksam{^}!z{wg}tmJjIVkHd$x<>wUp{j1Lu`fv8f_Ix?>r=%m=^Y2>!)rSiG8PMH` zH`4LPt6dEFoPB=(>QjaOeR=yEt+~tmrw?B!a--|N`dFdgf)}^rJXW#x{MnAvzVTPz zDfF93ZcFaESp-H-X~jA2`>XF1`mOsDHO}~UAeJ9$#@(M3^sl~C=r@nDI%ps1j>mpp zg`s!<>N|yf`F+m@bapu6vW2t2{nlT5qp&YG)TdFl&>kb>t*O-auf0*o^>f(|5^ZtC zqZhu?xH*62RMd->c^kg|svibVH{#91{r;^dMZMPa>d0r#XLcpL17Gwd;NN;yw96r_ z_PoEEKQ;>6@oTpG{o79ew(BSzK5vRUI;3gyJz4x*(awr~(Z~BDyguiIdluHg3e~^; zL{aZOa@uq8vm$Wl$PV0(!++aBQSbY{w&Koqi9qL=)|@HZo26(6MZM?sRp$~Z5a--g z=MHxX`nMev^?s-ED%_pvjz522him)(wu7SHJ2p;(ta*+YRB8*a*8FV;MZM?sn?}C< z?a?x60;zTV+YW;}b%L91B$!;-9`;R>;EYY*1hd$9TIbp*h&d_7&-(>ZukFdWdiWIS z<=SNY`E!djaB(t1>3V6Ke#zMJpdmjY&j}4Wbl_9pIN(5YLw?*PdmMFMkN>pR5uIPY zq`BdX@m}<6TB^SoYr5W}Zj%<_jOcpmP`U`~_4kqQla<&9GHH;{N;EawLWA$Ez(?wv z$=_}zo*%xDmW>F*bE3s`t}+xiEE-K4%tCRKK1Y4CL(#oFSvsLZ0@iFwkzTqNkD6Ts zQZ6PQ9hVQ09^~UOYfdtBp0^$&_9VjD0qfDM!zSn%y$%yR_F;JnzGV5h=H za4waeIMitvcgDg4GryW~7eBe9?ICUMQSlN?*VNz=*4yK2&)={ueJSQISLeRaV%)vv zD0sbgz`6-CfW?m3-Mt8|mpR~@gT>Io#sRmlj)f_6ywPb^40Ntx--Y(@g2++c_%huG z3YZ-{n%S3cdB795w(G}N?DE8-F@1UOk^fvd`IV(}@^n^?lb3tgX&65yzyozF&G?$p z9vC-$7{5Bf9b0=1;q&&mV`8%bd;#-Mw_O{?TWs*aFQ!9zkh$Z@js5tB+aCY^&+{q$ z`P5)fTydi>Kcd>>-~UxS*YUGCzpH}>`gAqt=M=jC`#*~G;VXypQ*{33GhW;uUYwlQ zTC?F?uLcjSIAO+JnZ(wmcO1Z-U+0MtZ-#O6*D}9-vpHwy#OztZKrVWs*S~TyUYwkl zJ3oN?IM@rtulsS$wY}u>{`1^LpUpWrFPk&NxfkqgV8#C^(ityK&P$Q6NM~|zayb=FoZ@$KdCoC;a&r1{ZEt$ub?c$rVyXK-^37xNDcX&- z=RfVp>Y0<*vqC;azCynLyM0-`@$!0O^6~O|RJ4nteW&{l|xxd_{T1^A-Qc>W`P#ucEybS4Fy_{qGc?koNi^#;XBmrB~01 z@o3+j(#=s~tXaNQ`nW)hTi>S$CTS;P^^-LMl?Mqp+O$Mq>z#nDElIF7EdkfHeg~u8 zM`N>QuVLORb``vV!+oPsZ1Wz{21Vmpx&;~euGqQm2CVt+iYX&%p|rUxj_Y;_&Xl>} ztTQRlevd2at=$M6e!1fF>2c7o)D;IN#={qNSG@dS5)5JQeSP@}FpIr!JUKiV`mpbb zZ@f7aGz<@`f`Zj-JZmWUt59g{w& zOu+7zB>lsmNmCl17p4j?@bi{u6HRm%;WqaVpJA5JWM1LHV z@Rd4l@JEZ3AJnGMAK&FSl1rLD&W}>zP3`;>P>_B)XO zjy(tD&tcC6`E%L-fc$^h|APE~84r;2V7x%ii}3_GPsW>*^LFoB4JTVipyBUo=x!N- zJ);f+or%QooMKqMHxhdU9f66nBhe}U2sngC;>2sYkg`CCEq3RE)_5Tv)l7#`mdw8w zY=g9EVw}2nJ#=yw<7CebKz3r>*`h5>@Q%Z-PYhs*e;nTG-x~Cr$KitMM({-?4mUWC zrfEClaNNx?WELNXYxVoko5^u_Kh=b^9O5uw)Db$|M}#}pm(ki*A}lLpc4~tNH!R2^ z+x;S(-l2*@3?eXRY$bJn8IEPg3W*p``)x(kc3&j6wmD2*QzEg>=rGOe7K!Ct7PT56 z#4o;Cls;OBN9s3`pp6(y_HU+o6){5VWOC>%#<3IDkZgz;HFaClh%Rv$H`s`bJH+95 zKLfgu9gEd7Thi0KSS(&Q3QCs5p?Z5usP&CQyQ#*IXdZ`Z$Gd{JaU2>Hmq4wt2;VF$ zg@)lG)Cys7qEZo>Ufc^FyF_?>z;*xa9D{nMTzb0My+Z&4>-j)vO)5>ly?%ZerJgOAG{Fx$OwAW`b@Ibe2Z{xq{QYpDv_#M+ z#1GdlDHA;RWP3GxmI}Hq@WY{w2L+F<{BTEy0)c)v)}KnU1qOPoKknZvXs+dl>slQr zr@f)L^3gFGH8&LB6;+eFQ|Q0xKE^eqVgEN@QT~I@2?_`aMMb_MeYE=t8j``{Vt?`# z>681Opt_TxsK{5OC(fv$swbhS$XBErb~#R8K7^toUy-iyu$ub62t`G{B0ctV6_vAd zL=^do^ie5Qq{93hMZO|^@Qo^3EDS|Oz9L;Azal^5KndNnm*CY`rSy3j^Yea{(Z|se zT)Dr5tSlvX@?a6Ybn`>;i(;C*$`99kE~d_%{BUD_Ar+bU;h1${B&~MC+czWV;&C_Z z`8tBqqTMiSM+hB=a>KQ6qsT+egY8Ebk!~mUozP2Ss{Q7UYt%%PbjBSsmu@Cce{USk zZ>F8wyfJl58tuyQ#usb0&}}Dg>?bUsPKo|FO1prf^89h`!~@jtsXu=2RY=QOJWjY# zMjPXTG0UGP%}p$Bp2CyUqhQ>Tf0R0$3C88AHMC-CIQF+cPV+{GV~_5~sG}qt2d=K6 z%B|tJLbICACJFJ?{3>z}6XKJpM`b&cu>{K=?5CBhBzR?LHgyq6a76lUn#%Nl_qsh~^(GoO zP2EfGr=xMP+HM+B8;y>&ZQw$70)DyK7QD|U;KTI>u)010%a|ToS&)F2-j_hK%pc23 z%iz&Qf1Ed?94gNGZMJMU1pUlo^jivN7FLbOJPcQ4daC)RQ&HUnp z18$F@)tO#cHf1v{SrvdYA8jJzZ2@Q%wwXNc1mGIYEp&Ku0QMMEL7wMB(A4w@#orCV znH`Rhp=l_VovI+McA>a5zlJG2(c&Irod0Pvy<+U7h8Nvc-+PQe_>{KFku8v1NjeMz7 zK|HQJw+5!Ma=&RUJlqt6t5+t&w~`nv9GV0t*TrDf;u=tK3B&!PPQh&3FpN8U3O4Kr z!!PkQu%s*uKem#<&tuF_tr0^;nkUliXc%?Y6DzZ#A@-LiHhQcVw2$}1$GWis59X)a zd`c9wXWuyZT(wz{e9#lyov4#evGB(>5AR4r1O4%E_$_JIL;iTb`$g#lH-FswDvAzv zWA8QBqNx4UP@K6TiXu0K;`p2>>b)WqA5#epRAu!$;1HEHk3iA!gS62$0*4fr&}vq{ z(^l3{#Iy+f!0KIZL<9y`RMCC*P58=wH59jv&D&TVptH>W2%&(q+q0`IpY#?);*5I* z^lT$LgZ*qU-N}i<=|jV*e_RwA7KPK@9Z@*zN-)i-iNf`952dz`B>1`EjWp+y1i4Qi zrMCCjd*a6@Qs+++OvnosMC^~nmTn$`N zV51X&NAG2T@h=u%iQNrZERH4^x*IOfV{!Xg#=yk~ps#udXm=n0e-7&e+t~a6Okp>u zstsV@c>P>a9Uq2|Mi@w^RED9GrIxh6MmR>lxnHsSy!?JH*=a>#<N+LqD=MB%|-Ob?EX!ocALbsOvOR>RKIzKe~>QUV9jYPkQ&2R(^}Z z=fkzZeX0cKtkMFnc@ixA(HtfONpRw6O&I4c!JAq8z@}Xkw(-h_=L2o}3TabUNl;CwqAuZ1pv%r+5d6|oTF?IO@}<5DnZ?dbMlkRWHg2xopX z5^P+^;)++&}KyhwtjFD4D%!K{N5VKXXE$EhH?mXjKuTnDgaU=(a5?S4xW$14RJ?ca&{!H zS&#r(4N=Ht#lfPEBD^yt4zRBXEt2CQTwjFiHGT;icShsD&F=+SMbY@h<%^)6U8|lp z3aa)-qruiBsU$iMXN=k)9pe>;buHti+00MA@jxQ=V(E7lq|)PaF*w$FBTdhXL5&;h zspFX#+%b70X+4U;VHc}O-9HScemqLW?7Pt4)T=1zau^;oIYy;bVK_oPfK=~#VR>2r zEzYa>-EG+m~u&okD{wU`kJ+~GexOF-+85yhrK_W9BV^|J|y7pS#2qYrI&>< zyYR>#YfFmBu~h(e$vs3RV*+q@`e6!X^CV`8wbID`F4+ElowUxDy>E(cOGlcsz3FB* zrIyAnn7GhR5Lv<23*Q+hsABW1Fm$XSCD9Fkf3XpmY-aQF^Gtz%;*Dqb4gk+wZ*2K$ z5ImB3_1#FvRM(z_7WpORqz!~<~hngn+T7QloO369*C1*7`J z;1u^vu<0LzyD1aysKwx=`(?1wQ-a&~mckTQrZ10_!L^AJY_;M5v}Nz3b4?4NEX5B) zLXXLczv+tmi_>(;_P@$2?!&~| zRQg}fSKME|-Gb)*7azraRE##gXM7br7593!x->rMZ@S{X)d_tH4*#33xVIkFng;$? zdBwe=J`~R%=>S%z*9vj>h@Ms*+=O`7#>=X7r4YA{h_E^oEX0{=}(3PJt_*EK6Q(wnmtL2+$OMnD5j5g7PbP4lQw~$F1 z>z}z>sC~2q=Xz`-5!2VtY|`n?6cPH)-a%m_MA+`mcG}ZZgocmSkVjV`rsl1sL<=Ey zy}gb$v=ySo^R+a*g%EFMJCLAPI6kvpLCzz>@u~9)+VLz5Lq9vwhkEwypvC(1^>HZb zHy99H4#gd3ThW>|p=iHApCp?@v82{sx|gl{8G74Y>fREKrDt zcipCm?n2y{S5K1pLewa_Lv|yCXg9EiPJIl)PvIx&fkh~eeRPUazlC7dfRi+}CIow! zZlYGI{&>+Wjbhlk2e0jE)cG=tTi9==D5)PVd9Ozo=Xs;l#E6ED^G54<1JeKQg>&BM z(b5*o?mbc!n1%RazwkR&$42_%$dvC^LUms}B-9aHVBg57o|^*mcKNgS>J2d3(jOPJ zN`n~B9~T>!1D%b;xEK~6TO5gY?<(Lhi8vpx&E^(8pS;4JK6ae!-VepYK=98PFm2`bF~huc)c@kkaAGpS;BEDlfXGNSSy z$#_3SkJQ!IqF01ILI1UQtk8%)_E?MSKmVrftlhOY|E9^;q7c+n`5fl2)(%kR>$0M- zx{E5`rbQ%rgsAe_L6JBblUY3E;d!Wd;EQI47r{d2izP9aU`B60%&mP1 zJ_o{Z+?f|(J}wM3I=zP0{ld_*+Z&jX8isD2e!zhkA^Yb0cla>9S!Ewt4@Py!Hp;rnRbkAd7c#qty6;+F|THqZ$9>Z741;RpTebhT_RuRlfXl z2v!uT@n7bJ;*68ccw6&OT>MOpZ+|HSpHx4i0&5@iU;dJ8*88ASm)8`);)8WzFX*P8 z4{lnjO9%3uaHhKJl2TxkF zcDj-Pb62dE^M@qH|7+qm_~jIcXZRnWhkw* zIllcOh3xf1i|?0d)fzu}|DiwqhvfYyy5tq@(GSNnCT}TOHC*0*Xy$+V4;8Zh)BV8@ zx?IB6i_K}IyUZVA{fBz|r~mNs{Ip{U??*N#1|rKkCtR zHXnIYs!ub1+GACoCawQZ|A8f}|JVoL1N{h3oVNY}46*ZMXV5)@2dw|F@yp4_@8tU` z+?b;gXwzJcTa>}h6q&2W{TaW|z{c-AlV6Zf7lwrdxhkdNP~ylJv(O7a{;mKWeJ|X9fd~2cJ-tE?n#?03y`S`7xn?iE^Ima%Q zc0KgR9ThAdS^e6F5fBHw2leUf!7yXb@e_f$mf0A5(w%&D$7BT(VKI9Yy zt(Ktr-7~b;M}h+k&XQbzUaXdpTz{Ir;A!89IMh_Bq!xGLaI{Gk$@OREE+eR5`cr>Y z2eAE;jGrHLgxpSRF{983{^(DT>(4zMRJdKiQMi1LD%a@$kN)K3`jgo&klU|T#kZmO zw+Js7-i7m@L~{EDf9w}nGW&J)o|Bt+N4x532dANvJz`!#o94an`+lQGBH`AQ+E z?^^?E8$&Q>z)ARHzd&xkQh%m^)@MI_-z^m$@B7Dofsom+h41x1Zol**bfCfB8<*L( zfc*B}X!}MF;h5VkCwD?UFI>oJ|KmG&B{fEIVR*-#i48G8H zrnG(k_z(2Qe;~R45L2yAIXa1Ken5jd4*AD_Ai4iAVQMRo`wuoU18C)(gmYgRL2gnK zzL?btHnS?hdR8oE4m=8S|3Pp0CXoAYr>|@QU2h4RNu5TPPpk?tYNr6v7EsK{5OZ@id8kpo4j$XBFG`sGjtYad0vB7Jh{ zemd7xgo=DcdU)D?vNsZ;B43f-?fQOlX6xV-`HJ-APC0Z_RfLLsMY=+MMgF#C2~_7B zgFQnN$RaETAIlP{-a7{IZUS|1ib2~Oh17!01A4A3qST2(Tq`anqfsm_9#TY)**xL# zj+tZ_6NCrXW>V(nAhgcRqWhvC6rIkbTaH0EYx!QvN({n@F?%UtH@hC(M<4eFp|9^g zdLJBw&1!QfzFjCfiE>CdFcg!0b7{{cHt*FukC+33+=N0p(>(%PWE`L<7B}1c;Q(c_ zIAEK8MHD?Q0xxYpK*J-1nDnxMHnI7W-VyA&UWmia9iWU97XP@ENu8L#x5GJ;oY^=& z6uXb4^(-zrHIvL@In=5-+y7f^OV8@Oak=I?8rLichu&IC zSD63x)^8nc9Up`dh3m+sWe|Qb+D`$u*co`gvuOJJFq}3$o4R!h$8K!ispuDrPoF9z z`%96y$L9crUyQ`Ac!0crv2~ofMYOw-%_o1`Lz7rss^jQAH2$Fw-<{Y^iJyh2S+$3> zn?>PEE}G6v7h&?cXe#4G_;pb<>eu;?XZ_xz&^z z@ht9VY2{!Sk1>SRJzLj$sgP`6v9qjx7f{Q$ zZ2!x*0=ljz#1E|gZJ3|%r67YgPL4#g%3ZXbi^O@ycF{}cNIZNggPZ~)G1=RNt}?rv ze#n&;GP~fv)QwDs39;Q<7s?td#Fw7Wq_s98>=^JydcjhJ!_(hOhfZSg@v0Znm_;HS z;j_f*YBv_A@U*h()g>A&ue7(i&@UQYL~ILzX*7DT>k7%WEWWk88&oj8{9SAem2cSm z)`l){{4R^ncFO_nqs*TenFrrxQ8?^cb|JDlWS8=>^5FY<%LjB7k@TE>4(zwI+mE1C+>#FShit1kU^EO-e zabPXQE{(z(-(<>L7KLj}l4*BP6x%1Tmco3aFy!(9a%1*xq%@zFGrglxmrsYXggE)- z0g~<$;_~2~WWSjCn;|=B>GCl2|GtBC*M_n6z&lAlHVmb~lc>*w5G% z^qsxGZ~QiyzH5bIOS?tV-$fCKmd?`PB(^?ti>I`GF`K_Q=qTNBjqMlsUMvVlZ>4n+MGsSpdM|n--JzLER|k|4+(yq{2o}wq177PxaNoeWU?~m3!58L1ivuBeq|{Adu{8qYFD(`DvIrb|X@$W0 z0h2@9M=+r>0{dM)Cfy+v;Q-r{Qp-d(pKWkV8nTtGV`)4p?Y&-vu4DXYWG4xxIQmd* zTehzKp%;x|>!P#ceaLZ;1Sb^cQ7D@S%-)hiiR?P)a1Ncn&Fp(p9?96XYd|_Ju@1)0 zN!y5b494QHbP|b!G1O)|CA$RU$hb~4;JqJO*LR^&Y#q_}Q(ft!ra$USyO27&N+Nq% zrR)mAU(;@nn#JtZh+h?>+N1`d>M1>|^wJ;>Y-GI50C3Ul?V>laNUCU7iKiK9M-6Is|;pS=>z+3~$+Z zZL|x9?Y7J=j}L)6lZ03t{X>u@W`0cMXF*zu2!C396+~?p;qIcJf(PqFxY#Vb;^F#e z9I$O|MM`QkzSta4@ndT=E?BUn0=7h>jcGp$Gmpj23;WW{KC!r=(S)9u#WMZdoAQCp zpYG3~5JL&BsNYEzEN=7T{7&-hCBfXD88nBjSMzR{N{z+-819`yQ*QfXT3ISBdE<{Y zW}B$w0-JXpzE$cy!xPm#c1qXJ^F)=3-BJT~UwU(gw8dn$9`n;-!ORQ3c*n0$V3h5P zzX}Tl-wS;4^zlQ24rhI_(##H2tU~bqU0e977lM;-*@2pA2qtux10FL%kP+%-(ygvfF3+7WX@m4b~dUZ|22S#hK|9+x(VD~k5UqxIB<6+7AW&Eq*0ZS&&sjKv@_35dr~j{!7o zWjt!g`q9O}c)VZSpHLW&&0hAV=@;1g7~4MN)Zm7yKl+j0Q#Z7z?#K2^xnb8i#|0W} zJ^AIBqXPTKZa6&RsGzjc4Qq9)1=(y}&2Fv9;1lPA!~7@0q2)g4+GaAeU*dypUQLEB zUTi(prg#v~4Z@jK@$lX>2#1s>Kp5E>=KbDfG{@FpQf-pGN}Cv5zV&4r2VeQRZ#9Js^g zlPxxEj=>|A%VB?IES7g!21_Xx7pkm)(QLh%cw!P9W9u%yUq}RpxEM55 zSpzoVG1%#CA#`Sb@NdULSj*zvmy(O%3-f<9)c3-PZ9&*!?H({s2txI`y?_BhY@BC6 zzq}x9-8%y&FnwXl)&+!Z3Br`uS#Xf;cQmug2C0#J{ndV$J}eY>Y8-%XJtOcc+jljt z13O>y=K)x6&GvuYzYE)dKZkA9V?-^8+(tQPzh6+ zy;=9E7;FoL=y$RhbOVK$-}?l3{t%)28n%vsy?+U(AAwHO#VC7P23^^@zR5FkDEO!c zinI4q@eB{#y>=V5-Q$5SBhu-Pp(jr7Q%;_|7q#A{x- zQ+%Km19~ z-}uc@;+fyEAibE5!$17#4}X&Le=Vya-zpKRM3qsm+afkUTtqM=vOck8IwyS&KYqY2z*D4}bWBod53r1Z{l%(B@hJY?k=R`GcIl z{~J^C3kt%_k;CZ4gCM-L%z`fU3dVJ3kfK?<_qopm`oQA7e(P;$Fl*-w-6?d?I0(I~ zClYrk5XWyGLvwrrF?R4M+RgSq4T>|P;X4Cym-Arysv3kxj+ueFa}Zl+GaTv*m>+I2 z44$+9QGII)zU+VXSo&3#e(tL!7~KrQ6U!{%H2eQ;BZt8QR_+-~@5IuJ>p19pHwbs1 zL69(B4_LX2tlUnP-ixIV9ySg#r9t?_X9B!td=pqXAuIQ4=s3t_>9voo;ch7Fr|WG% zF2^2LPA=CEmR`@&&y1J=-P!n#(VYUtOuhxIoGB~UdgKH!Vd=eFj)$qw*m_^KpK~;m z`z$M0!pc?akB12?T~%!~XtDhxnw!UfEvpYRR?do*JNzg8S#K-&Q5uNf2akeXte(pL zlxxA#zq9nr2yKfdtm`v?^^%H6P+KIfLP##drlsN_+dV{F8?4Le&mf_ zwH2`JhBt~|R=~(UKFB>d3=``EaQ~UZ;IS?Md%Y!Sj0r$?j3HdB3&7lCrSORHPRK0< zxg5pkWw3_vzW7uIayb}pn8bJoUM>e0CI{mUa^9;tS3@n6gYgD`#+%6jZcGlw8^RfH zCI`eYIT&wh%XmkeD4=pChwI}Kk}%#(4!XBN zaxmWH!gw<|XgrgH@uoV)o5?}nnH+5l&B2MaPeaWJNM-F9-^&Wxl?CElmC?|P^%q0E z@!-VzPowz+uwwme&?9U3%KGEvA>-f}>$fGBI2gzJ_lqx2{=xh}sTaj+1J*n08?Qy~sF_zAo$9A|C&1&@xhvp<&?LA&2VbhvW>!hQ;Xx-=4Br5}WpWh}ntbXzcWDO+DS>#D$Mp%BBe9|}IO`ID(fo(ujDRc{?v#rOP= z6LumdVz=0Z!46}0prY6TinQdVyTc9)L@+??KvdYdA|avROTh#K6-87;QWW(!%bWZ4 z^ZRQb=bXE{bI+cbGxMD1q!04IwO#sBE5=tX?KyxhFixmXf0T6-*K-`Dud*&oa6!>jSvOV11y|ox*3HXv#zkvXbd|0<Ci-XcuyDUDwnQYFPG~1cXH`>e4kvpkDnu#p2N?T zOV8!^$ffu2d*#x5Sq`}*2g@aw6y-}A+Od~KKPiwCxrP-*(V z@*Sg3^z-_^dPRA1N(l|W{I6b7e%ic*#{8dpMfte#M{1t%@Ar!Gjg}v&&;NO^qTHg@ zM@nb86!Iv_4%J4>x|{IH8h90l?9%bGa)^2`ro=AWP)Y@adw6ivr|v7PZ!6isRth{bQC zXkCXuOxL|k%8P^WF58XzU=T(GU8H%-7`LEyiN>#Cyw}NmN?#F()pPU6et96KSmjZS zX&|l}oKHn&f%qb)mTboQVe-WqdZg=zD%WaBbFm+0E%-tHjGJkHQAIA=^EpeVA~y~8 z#xX-w<*!1$F?tqXy}VINt}5Sa=Y@mcsmk93d7&&elRHj$UGU+Y1xs=VCRi+N|1&s384KIeti zxfQhihZiOctD@h0j?jHxNwePaxvY03`SA5Yc>yg9;CVObCF!|&W3QQoq;BqweU2B9 zp|v;utWKtY$BZk=xI^k`Z0Ge!rqo0>u5?VMHe6orgcPvT7jMN+r4e?%IN&#sE9=LL z)PXX5d~vG!4>6K)A>nO)h#|V%zabUk{%Jv&x3fYVYQXU%x9db@voO>zs1cVh3B&u{ zD#V9t!cbecN<3~AhS`+|C^sYwmo45;?jB*-^8G$a*cXO{Jq}O-;~X}GHj!^w?1jg_ ztIEf0@xoZ{zd&p5huS7`{Y_qI(e4)w`OAD2ZGVy8WJe6Lswazaj#$OlX)PSFTa#bZ zk$GC0B>keW2xr{;rJnBiGyZBzJ*jPQ#uFMU@?#e6`1YoXTqT_G^UOQqWzXk_t19xA zE8N*k-9-M4b9J^@-&Fo)h$m|8Yby8t!}w!<|DVqu=wbhpR>!*I$yxOja>gAu^{l7W zyk2%n`$;lacl_-6fWDcy;fTQxDO=ACLrnjpA;a9zXw(Dh2ySeb-A@m!JTd(10qQn` z&)ezT4_cmRT(pnM=6hm|Ul&ov{?5fOdy2Ez-W+kcqo~1ll=eDp#dNlxOsPLEtWXNX zCvT1kcise`&+?PP*Mb0iI^wi&wKf3re~f?=^`RU;Is%3khT{AMqapl7D0aCv8V1&e z;;3n1@F;Qz?im;cqdj)ug^(RkBFB8&AGQ|ApW(0MHSo6w)96lLh ziQJrCu|IfZ#~9Myl=%uf1&8V?zrFbGgam@E+ut@ zkzu=s2 zo2RPl!TwLR{!Mg+KyO^1x&f}3Zo%oJ*TSrzEqM0!YKYvt1=E(Thn6$8;3=(VVorNg zJl^7^cy@*<_PkUiuF*2Zz7GpUw;B`tJ=Tx5O_br81^!fNDZ@d&0koBItJ}{(P=`SV=?KAKPkC z1zq~h_}VB{`RS322R_n7K7Fbi4$NyJ-_zL*U7oATD^=Yvd*>PI@WKMe+MXrf6bl^r zH;!I2uJW$t8M3@&f!Cu0Mg2&QqaC(GthKVjo4Ubb(qb$874Iu{^RSZS2TA^sf-hKe zJjlbPez2&N$CH^qNb(=nB`{(6_ly+5?}Hb98b|Q(i5Jc=l|!TaAj$7u{|&zX^ualq zS)}l^nOk^6N_SXYM=$lKdBoV<5B40@qH8f%>}^ zn5uaOB>De~4iuKN{2fz$gr6B!cx|PdV9$I>U9S5IlKd@eibZMsOg-~SOdjBh3m%t= ztJGalKe|+u#?SUHE+mbg=tNigILHsD8+njMZ$D}LkTiZA9^EEs{Lr0bYIP_OYg?z# z6}ICP{z|6C@gtYUPfS1)`6P~Gm|WjP{_{}7_>oKF$1rsRN#mzy$!5w~yanGEZz6{Q zTk!s}^*sN!;BBpEf;4{Gyvq~Dyfwi&l~0A^DJCd9EEL>%{8W6)1Zn<$o{B z{Q*3GbsOiet~7r$Ii|22uT{5iZ`MY7_ZCL%<9{+Ba!_r$E z$Jsp@QhEMNqaEsXMb{T#kLjC#lKK<%U*wC=_ZEIYA-r1ew(mkCJgXYfE1 zh}mn1rIBVZ*Ub=r$<5&nub*Q(#=ufuKSTDPhHF2}Fd{t$%3qt|bn95q6iT&>sXX)*nJ{*9nsTQ1tGn5Mm#Or;KU@3!eu4 zL6G!^tjYr*=?`$^Ae`G3h8I^Hgukc5u%O2QXw)BcCHuR(v% zZPXt?(jQK=`vs$UylmWF4_!I_i}eSP^as}8bS3?5-G(N*btZgHv2CKO_dmT&SJK<6 z_o?dEnl|Wbx{dmpuB5MxvRBfb8PlMr={D+VAn9ou#uae;fBG3T>SrM7XPth&fUCUj zvt9<0URGb74F0T_{W^IYR^<4g&@mY#eXMQtS&;PM)QNGR$Nu4OYvMrCgU`-C0g@gZ z*CiUfdIU1wAqph@H$(R_NcwMG_$BCN7=#PeE2*Hzv}n+Gp;6xjN#EW5 z{s)vXzK8W(Xw-9cB|W!;k*e-XmXq~cT}i*a-a}QsvXdv?t5A_YVShxc(rU`(_}{Nk zLyJ#(Vh`45oj8u;`7>3yos8qLN^40)(-W0ge{Me26LTDXQnzC=-1ef5R=aY1iqmIW z=;w lua3=0A$mZzbmb-H4r!DT%#QHes%J3vqHMLtH*tUHsI+5Ibxrg7Wb;_@JT) z1~E?O*ZMrT&T+ZAS&zVz?FCiLQ}y+W3*JBa2UL08g`6@FuestXt1>vf(^ZmRSCT(= zwyN%v$)1?9rv`E}8{~&Z`E@1vH%@M%>&|w5|8qZ}4dXXierS{*y0ZM^I{bnstT(K@ z^aZjq8srB_{)_sp1WEq!Z8{0=zc*q@xu$Tqy&=b4sSAzr(>Io1KkE(MQnx{`@sDV( zT7&%5C_hQ^_k8u6o@Th9SNk&B#d;3QPm=uUuXc&Y%Y1Qy+fGrJ&si;BhKM>j?0>8C z7Y&%d#ICQmSj1)hX|CdWjvE^Pz)Aefd{7JayNU}{{cx$Nx45JOpQ9EAh~wD*^>IL` z7^lW@0jGD0!+HPVs~}yuUXbefcY^dgzE6z5+u1;PC=40`PD8#k~`73f+h~~!Z`OT8dC0wRU5xkNi5@b=Y6BDDqd0G#|YQv2!m_r+r$w`1#_&&7wD)_CFLOL0Eq`4;Lv6uX?-jr^|eHjqS%DTGK_}VDy>eKrgNbFf$p*?*1$NbUT4 zkbckYAhj#x-|kmU2J^je$Q8m`$o37xurFZ-uzTNz`T%(|Eu_ad>=^n z@pC|Wj`UpVKIuKubB1kxDoFRG-N+WC=kR?(W4{SfKmM3hMjk$V{#yB+B4hr^p^$6& zm^AUcl{Ln{_)mOug5zpgj{X08UV~hGA4vD{b3l5IB*&Wn{U5fIvVSAc7Csyd#you| zc;nE}|Np=K=6-MZF5GV<^_zC6CrSOt{o3%I@{GU0(mOnF-OHdg&r8L4QH+m*%N8(o zMKGT9u!Sk(nHQ(=yX|lMj(i_U_wjQ`dd~kDcMao^$BQ717al)?G=8{$8~R1jPY&gExZH)+wCI2r9_vv> zCei=OXHu%jhV2@PdPVs{n=1Mm@~>V|{;LK%<)g!^=qz{$IVKthTP2GTHv3_+N^$ zqCXV%w{)M{71%|19e@iFO{`e3_fk13V?x>jup$b7pm&K&=O7H{yydcEi5 z&*dg*&nb%IgTjJKD5M4R&*4Y1Rc5`Z^G7<`)fY3+vRJP*7*xQ1?VIWDf8D$l!NerP#u zeddN;%f1sma>Jj$ztiy~H*~!BjSBX&z2BgmGDNl?JAbFcC*09=8Ge;CIK~r8(moLl=W{-ll2cDFjN12!#&qz){_Q`} zG7T^M_Vy*c(D26NOI}g`rrwNWEu{Zcyz$`GLVD8H8^;YeM(L}4aW-Es3%(eYdX&y^ zy!}4D!U~SN?|Y0sehk1CW)U=;@tsE|9i;=$0&suwQL^|Fz_{oXD)b4&I+Z)LnDMZ4 zHYZb0#@P*XzeC&h2I3~Mnr3kSxB0{Cv!*xd@2aBAQQpk2!~CE_y|MlA*VI;Yz{gKs z(T;Kl+&A=pXX=Jgs!~#3@~_lZ#m|dhurZ-cooqdj;oweL;mO8@w!C-wLM{qCCdV6#XD1Melw7w`I?X$NR!T* zVrFY^>ZE6b8UfxEy~_r-zw{vkU*=V|@gau=HmKF^AgL_m_~#!7$%^BjQ$`=68`f^< zWf)GY`22I`Y9blAv;DNQNM;8Z|J;F?AH)Yuo+pu$wGSSM`A8d5*{>JyiPrwddVI4| z@=Icz?WPjydYO52npcnt+Z#5vtYZFOS5&@PNk)mTIJxRObxe0fs~5Lug`oppS&>95 zCUD%7ej+XG;((6LZ_z7oz&9B(nzPykHDyi|&wh%YuN|lx<5V)X*pu5d7rZw5)U6N3 zZ1-K(EAitTZ`^1wX41l`-WU~maq@zVTs|5n99kZP+nr*CrOcbN^3i$0a6}L;sJcLyM!RPUfo^PSh z(H_6JzlVj)tFrXgNFkt|F)9}i77XSYqq}QQVbLUGe6nPK;P!hfmL%>Mzr3@?HT%NF z*ghO5_BBF$%zE&w&PPPeC)Q|qt|!gW@WggAd((S;=56@UmwNCxi(1r&yf`kyG2er_ zMEK)gM=#2`;g3hJc~kQX{>W!9(qr7wkAa!=At?ag-O8eAj1xS1CYzW&9WQsvqW0$k za9po)vbo`m*?lUg|0QQ!u3AC!eb|qqR8EINoblKYUrK9ciP>&`?60su!O53yCs<&I z0X}qtaW1J@S)%oMdo=HwBWl~&W8V&$V*NUMv`Cy58zlJp zGmpoWPFc_>KUlN;msgj8T<(nH{(Obvy$$k1`2XYwNq*Y@s>1x)*Ou!5A*oZb2}$$ZV$pS-L8lg=0P~E`l2X}pAkz}k~Dta#v0IO-7tK& zWepvg6o!LeucF5BL(=%M-}Qm&IWEY;?E@ukY8XExjh}V5MvBt-$xIwC-hZ(b2Mrh| zo=w?`_m&J0rSbD4ali1D$Ir$odxe0D*7!~c7dA8B%ZkoN1Zn&XYj+T&`P$ zL*4xcp{^z4jSa&=n!j;Z6Ty(@?}~f3;F_fmiqVO%axKSKKTiTjp1&t!K7urVEiFI5 zJNAnhBz}N%ryAxjG|pd;=C5$G9KP3a+|}rENPEyQf1z>yf;4}N-rj_GPY0~Hbpvd+ zHq2jm&GWY;Lk80P)wtvUT3#;bT58LBunRueVh_^%?a^!iNbBd~BmH4UJ;xEG_JQt_ z-BrIYNb9H0g=#@sKOeQJ5$<*h#xJ|e1$p;i?5|cXNbBd-X`0N#y#wQB^#E6m9eC}d z2B;0%f%d`OpmF_#SG<1K4ylD+HoUKw)xu)-gYfzZ0la=DS_FW!e(rG(02@bBv?>mS z2iB%2&kY1={k-4W8#?p)S(D@iN0`@OSu-El*U<)<;{v4hllL!>_OIP-a=~DqE2i~& z05XS${RC1k#vLPee}`3UhvfYW8uu@d_OE~@PoWk2T}I|ThL!4W(*6Ziynp>L zj)xVzf2H(|hlt(GyLRg;tPJtQeLB}b+P_$T07-us$=9h{eK9cgDCC*>;vT;0{!f1Z zNq-18JqEIh0Ngz{0%ov1@nG^%Xw)A-(jR=frGjxV^TZrZfh&;>`U5oT4(5(bXZ~Ku`3BWjS*4Lm>UxNmHZAuNe zAMnKapZm?*vl{XSHR!w0sPBTL?`ntFz_0-gdM-5TxghDe5876M_o)W`79{<4?@(8A zV1Gtvb1zcitGTr&1#+C3qTXY@C#@RvuU%0;GSr>cFy2kkuBh+L=c+lAdAu~XE9(26 za$-Ht7ZvS_`irk+v~{2_D%utGf2Yc*w1Y1y+74SoO${h z+ZFY-Q(P(LvkxlT74<*Pxl`}&j4N$ySJW&1zoPxb*c+m*4%;KMZiuUwcw>;bpZ;C)<{*OE{BHZRO&9H<`h$flVyW^HSJ;=Sg z2VPR^OR6d!I8v<_xn{ZJ;ig*zwcoB-G<1tFb+#L}c3dh&TBWPjJlqxQY%AN>HxCwKjl*#3x(|zc=pJ7~XPu91Y_%S74*5e5B}HkJ1tXT+;@E$m2$jW2A>b@JF(ttTuU!CJTPHf4VAujM_;8X z>dx!+8G~vXsq2AC72oLM5Lf*4<{R~T$#{O*SJKO8T=kBx)QkCP7VIh@G0zdr5(>#V z$`KbAydZ-R=Jj9noJ<}#;?8zg=-3lGT*2p!IazktIr=KyxMhdmuU?`H_v~=di8Zu6 zf%W+j8_6@n250ozOy}-!ywaaFbcuQR-cRxu&$GU|&MrhukLBEmiF?JIIM!P)g^Eh1 z_V}`v@s7M-+ow*2uE`ufJ4=97j5F`PK?hbd|A1cPKIZ@T!k!#I`qG2#evkJ;eQ z!?PgyRUqzJlF5F{Al!Ysip+x@aKN)lvMP4KHm|;u(iaDW;tJa6>wqa$6=WD;hgap_ zsncaUoPXpS&C0dIuRqJ_%?&&3^{9>tR?6^azz;gmUWVsK)KJ)98BXML_+cj*zWn`* z%5OVjQ`s+SyTK99wyUEo6UINr)seAA-hWNhq!Zdv72VCR5G_&tX% zIN-9Qcj@i0?KpB>79AhH9lIH2(uu{}ap$yjy0?hq@7v5H|HY=bx6cx4vepz2dFxS& z08{)JK93%;J`sK9wT^X>IU2pq)G=($c{PI0>O9o4KrgE_onF7p@$|f7Fh_~`lKMwN z?OGe0|Klhu_TY0`ucL6hAL9b&<$%o$)-O)vLg8sw9J%a1XeTpIS6w#TThF{>q2IuG zkrys#Rt_agIqu}vSGdXFr8RpfwAZnp#^x`idOPFXQ;fHp*8?A0GFZo+;Vl-A&&}lsjVgwQR>*$$m@q zFXY7d)nnbhQvU)+%vG-=7mkzb7Fb8U%N^0$rIv1XW88bQTIx8-2@l7-q8l;W(SBPI z<=owlIbGk-xMmzjzVapY`mi0{_KhHG2P4K6kEgpfMmS~A1hN&4uxQ0d>XmGSw`X^N zqIJd?IlMibF*C-r^w!Wi${63iZVNN_8slQlE7CN|8r!Yr{5BPgGadI34s_+XzW&S$ zk!y{|YQMqMkB*#Qr5rvlaYFa7GML7=eEk^iU&g=cxA+TgjK^-Z{|`K6{EfxrdN^>- z8554zgUW8sqvKEviQld9dHh>A_0Sr7EiHly{@!KcJJ9NBgOL-4!}H}^aL(3&;AgM} zhqWIJEB9}~9&JZJk3Eco=-7)MzTSq#Bl=M5N88XNS(EO3--fe3YS8Q7+wf;$G!0~a z)}E@-B;)T8axRj5nBTRJ`Ely6XN$3>_vv?2SCp&Wqdko4aIMWG&m0%b9+XXO*k7OX zpoD0ICk|gxLbnEZGJoU;vRmzm<3E3(P0ULss?<;|+xMexw${m}SH!K_~D~&PgML2YOYmCkD zAe8jlhKc$IA!6hy?%6LHsLg z9Eh1v`_dZGAOoHiGY;1<3$}dVb9t9}aIww|d#TKTQD4mvdd-50zh<~3dLB$_$-J8t zZAJB?oHt;FhS=A}5=(2FiN9Sec|H4`)a!^Ps;JGT3@^?@G;A0)$8-cxCzAj6^E zrct0L^U_`1O9>;r@S)xw%4@=Te~flfIotV881H804=VEGG}v5B6_m+=L7B8Wn$nf&G|w>V7Ho zziW>JH++H?ulQVhwFH)Pef)o)pe>J&v}T`S?Fd`!HUAU5HnhcRqZ072vBhTURnVh_ zJKj>O2DRz#s3Wg{boR5yYgfQG!5!^$zrl7*-sfL`1Ep=QXzK74idMLyfyGxiKZ5t? zjF(XNfb)Dr6#}R_WA5D-knogwAB+lMJL8KlZ@dQC{9Q}NUV+|>i)wT8GW<86^V7V! z0yi07@mPB;_?z0{taB?tw#p7$_g)S5Q|wSHWGw{Fu)}Mo-Gx8Z4)|cSolu<4_Mmq@ z!ubRT>~P*+n8`d3^Tur#ccruauKjj#qnjK4y0%vAu)_^!XRH-f;@z+%G$Gv#-mizK zP-v_V9{f-*_TV^(W~IfAm*QHLrrCjlTcR@ z&xePijl=7tjVD7<+omun^l~UZc>FbK>Df?J?tBW2G=s5bV+`!!>-0aCZ&cZTo(K`v%^KoipG$^ZWG=&H!JIL$~Ug4uTq= z&!^r6_hnxAy6asyY3zlzd8zQkzzgTjxdF!(d*D{j1W>Z%xbCLcVfF|QOdfv}e&2V) z=E_Il%2PM&Qg|4eaX$zSW-vOD@!QQzpc(U!cpNu_p={r~6x$sJ$UQK<9iNw@JaAxm zPY7iEdhFZ;!F{tgF1m7EFkHlOfKIoC$YqS9^t2a7R`Yql)JYh{agf74`U>Xt%)@1Q zTsXvW+P~(W6k?3{oCvW(t$zUeI`@LI494x1^??<4IllO8A6Wb$5QmxvLuwJ@_D+Ss zonp58Yzu}y%7NHs^>z5A?}y6s62NGqALa=0pv2=pVEi{Q%W}k4=4J5syCXK6RtR&i z$k3O6oU%y-%IW$K;JKR_;dDkcwNT% zlMF7xX^tZW6=)S1~)LYu%#1EBXpuHWg zvi%`yF0;e&=d#7jrMB3y_g!(ky)EW;xj;qQGQ9Wt0!6oyVOCxQ&1U;jcB=>q_-l{q zDP?r=EbDQh-)M%9BOcn!Jn_um*W*wj^)-{>!o3w_!1>9BB~+6AFd6P1UQE8-*dE&A zJsFR7!0?mT>8g$$e(86EswUZ?&$!E!$nj$%IX=i~lP!+^uMM>hu))E(?P+ef4gS&W zOwQ@n*t8e(fyGu9B){EZxVEzctvV2f`@h)G@`GVGYsGdN z!+6$#%2t%kyc-4!tSH|vjCoA0$<{p#U6k!8(kTq5Y02mm^Ly>M<3#B$jAQBSLLB<^u;fCxqg!iFOb?ITR{a-c3N!?iL*oTZ98+gv^W%1 zj4Yt*icr-5X$6y3G2XMkE$AAAVt5k=Fk2RiI?rX$VnHZYe+;A^E!}a-)LcazrHev&u<); z(b%r2_pA&e)iO6!v@7Zr|6kGmBDYff+?Ut?K9%CliS9VP&kykc^ESF{s}m!b&qUc& znXd5qm20O&rgOc~wucIt@cK3TlPWdgxZI&OF`34I4#Nmgd3n10oIMxa~tuN%S&>`8(%`)aL`o?{`lj{Ke!a`<@QNrQtgPF*}pLHog>Y82Ht%u3UD|Op zhV>4oq%*XT_bK6UEbaDpz++*dG;F3lKAs&$nS8Z96-H6x>`^v5lw8KzGym^$a{FbE z6*~HKpee66Ml0zRmkIQ#xWpb?6?LP{oL}*_o(4Ud=)~(y4~o{|xSOe(^n>+W-Jl-A z{pqfFC$*2DYR3F9hFt~n<@5H%4#G!{|HyuyR>0=*{-gGW!ui zU$%QZ@7zXAH0JZKql##35{MOPO~qFBf#{d0E@tySmZIfAOVa~!gq~vWfPFqcr_;=D7q#y>IrIL%tY<1!nb}~!K51mOnd7!>QfZ0_uS=a$s5A4*r!Uw= zS&J?4dE9P#v&0g$OLo)r^~}?$wu`dYT4LgRHM(A6fsy&@)S=P>Grn}9nSU+tte!gQ zeYZfpx%o+RhuWf2&6A{7vu*J~r!Pt2jGwA=DoJ|I`cT~>ggI-Ru(HQA_!`FXcK_)@ zSS;tmOc9{U(g|Na+ytsdKDcAB5gccG`Ke)>LCu5hExsEd+{y=4b!I?&&MTpOcowYj zPwyWB|DyEHhn9uM_ zF|96kKv^LBG9DPeXc};^SEd$+NF1rmQ|l zF?0A_J8eJJ&oo6%Ph)ZVLSx*mwOw4w{;!T@GVz_UF^*NY6oJoMg>4vr%YK<_hn@*P z`8$rjmM47QYKfydF~=2A&d`VR(>ShogqCjR_+^L;rWl#y zR;yf4X8+WnAkLTj&>jcO$b}xo%xk$I2Wqc!ecRWNwaNv}_rC@e_S z9)+f!CYbIhLj5O8?Bh)kt!#yR%|uY@ZG{uOlVAep8{RbY1I%VSTdc-MFo<(N3o2%Q zV?Gb}E{5n`4mj%2CkS_wVcMxrpcBD3%&8@?^0*9NX_vr@KpAT3yo7x(Z84*7A-J%f zw{uhh$V+T-vr-|n`fQ7@**`eyi76US+z-$4OtF*set>VL*d*%!)RmiJ+G+#Ac*r(f zd~va`YS=dBnO`N$)7gfXpKK5`CT~M+|F_~zmUm-akr>K(K)U%BiWl2i;oH(eapeFj z?5a17;uF{|;EmMI&x!d~fwYhFcs{L5IcZK9`e!{2AMAq#XV%hg4IezyXAMo~eP&MK zT3X9IxKAGl9EZ+)Gfp}|8-@ml;-Fbmpm296zT|lA zu{%R?%!-NN8Wf5i^~G?qg$o{9`Vn;Mc)T&sV_|z2Jmpvn3p6<{QR5xV2xR~3?Dx=$ z{r77Jy@StkdsLb878af5d^PXif@L!&T(ROEyl1;YKxq*qa6Vy=i$yT9rxSiT&i$1hA7$LU6p>~0k#VY89l`f9C2#ELm(EswTHO%fp~UY z4(z<^jbqJoq3JzuToIB3tDiH^&-?pO$NWRRpS*zqTU=4=b`kvaa>XkFZ{Xq~SG?Nl z4HyJ751wfXqz~l03CzFVjN_V`^tc0c6WEW+@!O-A2V&ppB<7Lecx9hN*t*>b=SIcB z@Fg;Q(KHU$t&(BA}fVsChWI3_(KTf zIJe%$%4|pR#${_&V8tYF-1R{f7B29{rvBq0oY##%FD5_;`y-4eXv1&zQw;j)1KBNo z@y9h^2yDeT;hDY=%>KP86VJeH6K{N5a0dQZdSlDtSh&J?gLhvzpYt*1QCdR~df5Xt zT8d!6{66=pPt&?+w(I{oO`qd!a7l**%GI^Or>zrc>M$F;wpygY6P>Z$evvXb-p}Cu zebW8Iykl|q>G%^TRD1h?CSPzz6V?C7B*h)A-@K+TLpdME?bk$nE}6b0pHA$TVcq>a zniC>J4f$)D)W-q0PklrCv^ekA4tZkBtwvbZ!zQub$q0KI%+v|EyczQi`s(b9*o^fP zyr6{n=ii_3f*Kt&^x3luVvS7k$bemNc$q0~>=z6D$J^qE9{n-wB@{D<2XYHioPbTPe$%^b5 zPk2Drg0^v9mM>Ojv|zgjUKdR%<^W#}%xH|rJic8l=+DJ4e*hi=_|^M>JR-OP!l@{)@)?rQc&{A;%Rd+7Wh_5 zQ?Gg%D%utGTTh&(ut+xBKMFO(BDHOio; zf)jS1n@LJ*S>7hul*IWm3|?hX{b(6dSSFpB!uoT5CaJ8GVaIi8bTfeS>K;oYO=o*l z+nGv!d>zy=mAbRO+F^78tvk;8O?Cnu2)D&k+Y%`0fGuXux=yQ4+2X*`NYZBBm-y)8 z6f(jFTlJ2jd@Z&g-HoK@qik?^sUIB-wL!3F{z1kU_BtLwU&GjMb=04R_;ViAM_Xv^ z1bdt~ek*OBZqNLTCZsxt`I47xqo9%Yxa?Q7_%qm<^DZ10<1TRih{>nKh)idkW)v$1 zA9BVqpDM&QGkBeC{Y`Ajc1WEy6=D|i$j#qfD@L-vK6Z*RX+^UBpJ7BLr+hIaVhcTq z_r=nZZIpbD^L)#%Q%0CK7Hx{BW;?yn9OCK5QE%q!PoS1Z7$kNR;OUh<|#G-#MB zPKbX<#`9cpnOz=@TgCp7Sx;#z`xPQ}*uSOZh+{@PrraLvx7zoF2F&367ptF8sDTXs z+-KY~??X*@Cos(0N4 zlf%rXf1(5Pi1GOEW2p!CxiNp9h{O1c%WkwKgQhF;|^0kF#8qH^Y zI%RGO<+k_5<%3eF7hiWxN~2%AKkn-Egw99FP{}c$4xNzUw4^*5cumIk+s9OWnQ=ZL z_sD#-J>J*Mreme}Ln)me05KJyc<$fPV@XX3_X(DEsq4|HuN zbu)KFAGZh8&c_A6>ph@!JC1XnkW1dXT=24SF5PCn@UFg(=xrX)m)Jb|{YHk(RPty( z$Hhfme@I4kGUg%hr>+A`(KaxUjMYuiQzM9+bWBmVX8;{sVv0AG=!l)3GJfwBic?dJ zamfC8;<6XU*lO!cQMtkx-y2O9Yz?gN{3sB#EIHr%mT^LcFXt8MI7;ZmdF*d*Sq{@~ zvA?kMN;vn$8DD-_4lkI;vSh+iuztevkkghzi(MR_oU|N`!Y@zt)gWVy!@5ATSh4u>uA@%^(jmh*vcI((A)KC{L@gHKS`B<6wQ zbMaI5V}9Iof{Mzlv03X=6o1_bHz%B+zO4UGxySY9@JQ1Py3ag2XGh&7y`et%=2AMH>Fk5)dpc9^ z&0BHT=WaA{@>cZG?@oKxY{i71UC7yIE4B)53qyw(qn>g*=+@L2H@;{Mn|l~z7sJ*Z zrDKdEtf#}rUzV62HWRvbvciQMrbFE*E4(pnDr9%HLi%}hCcY|M<>v0wiSCH?*NlVZbi9MM-cS3Vh8gs(0{~MTwULptTNbc z;@6oxN{w;&Cw2PH{?hNuI+EsNW4v`?E(LKOn!bBx(<;tG6F6fgt$S{TpL@-ws4^>j zoTpEN_}ufR-!c-@o$>c*J(^kUj0HQFao$oFyz9M)V%RQ{#rb9ZC-~z0jq^xjjxRn8 zTR_Tee^ql)r^~j%xNeIYrE=VtPH{V$78Z;<64eOYnfKN25sY}sd6jzSL$~vMo{G+c z$P+FYKIsv7XS(3poiR{#-2%gNVxe;c=M$=q0spHOIO^qTn3ZLLuFMB}r?WK{ev5|e zvDTRJISNvl2dN_FI82^ojYnH&Lu(gDbZmbQ%1$}rfYdC;`!esBN){XqXWp;oc`$8} zD|Q=~2O(>DT`qVC3rt?#H9nod~V|dH=Sz11Uh-gRD zjthiEPNq1$)F1u?o8sgH0r29SDb~CRgqxA3oab=3F!Ja&-baQADwnrm`}N}ly0r~w z-qsf8p52BgUFM7W%%}L_;%qTu@^)OYR1n|K*p3JKp{U9{`X~K%h)exlP)9FV)L+SV zl7;?aD_&`t0<<_cv2uI^*zjH{5}ULtH=R z5#(kw|NVnJD9U7iZ_hl~^}zwf(ueSy^K7<~Wx=&LJCwc8hOXImXw7*-CVsL*$LvfP z{?HBw$32Do8#0WT@C@2NV>~6}MsF0!@S6V<*z+IjTXUX*j|cm;)Sp7v-7?hAdh=jDER5Uy~Z zrTLcO(2Ccahy4!0bz4icHXj3v4_n}-XQLpL$4`peSWx5Z#O33_;D`nKH%k|O<=9}? zUunX|M9xPQmMw&coM(M+worGM<4G|}i0IAy1BXrsUw`rXsT?Z|=5aqJ<+LzhpbP%t z^PDTk186;{5q!ol-)u~s0L&vA5nd~dXa8pZGh3mIuCz`1Y8~m!3d&xeOQGdJ5Rq5exP`fek|(5t}`MDXfpba=r)oSu*^6{2uHpU_a)# zY^Zr5!_$6u;npJdL(I4f25TMAxO+PD4m#jz|C_KT)DA5_-+;dR7#HSv12la&k4$D1 zh+51u*&zzHv0eL7U=+;c{JyPP2EciLTm0eS55eBHI6f`_hFG&5{5${e&YXXB_g47W z!T~p~H-X)pC%{i!2l0G<^y;)8Qa`i(BVZ%A@Oo%+&<^xt*k9#s57GNMPNatnysx`q z!OK0+YaQpK^xX?bmvTH*#$K><_rShi&%=M4nKvfp0zBB{j^kHc01d|Fs%%aMTgJa- zwz&g67!S8}WHKZwalG%PEXcKWLSbk&6!jUgD$96$GDgClP z_EXzI^RD~jwRs`T*X@tT?u1fd4(Hulv>Of<`D0?h4mkhEA0M=1o*C5uoc4GpXngSh zfAX4rxJK1Mj`;C4=e=G3PkzPk-yaNtYs~|2#rhp^tknPi-LLpxhgV*KL5Cc%$NG3k zNd5OeH*h~Z;(mC=&o$=fu6cfeo{VwC7e(i2I_EiT-T43JH2$A~0ZXCq6z5T&Z2)?< z=6H~wJA|Lxh5K(m_usx%=Rx%z<7o7l$I-$Ob1>`${aOD ztst!q7Ff*hnac0k%J0qR_ZB@mOEa3Wzpda5UEbpO|K6i`uWIWh;Cj;>GdSMno4+|~ z@_P>OdyevZRrtN#mc@Y$^9~-IcMh6PbHoFFL9i>@ADb-*1t&j$tQ;E#m%RPa%OV)= zMlxTie=wa{?vKCQ2GQ_U{unyPpQdwsiR^X&-L~dX>VRMq@UUeWC>ptT3jMK*swuzW*G*ZzI2N*`7Gi-^KnVqjONn{=k`y_qAwz&d~>k z6miA^pSD|1LkcYLN8|fS8|T5EFRYjScEsb|<7gj``yZ=!(3IW&7`QKlmU3K>*|$&{ z5a*8t*LPCeFn=s;{61?MzsHSJvGhHXzw5cP8 zq~d$<_fh8WQ`z?%OmE8koXih%^|>PsvN51v%X!})v!1N`T3}|v8fwpc`b}!|>Bu$< z+`MxqbWmbFy2UY&SM$E&c^Gydbi|S4!eFks46k|~CaKKrB(?MJN%}pvlhl5vUvp5M z?T6G|3CcJx?U_!g!k{3I+aK^y(D~|%_O@;4W~?8!elv{JEBx@{jWN`eaU@;mtFzyY z^IEB&pbG3v-i@C(<#o$How{*eS=$+DG@~i=i8R)`hTkPk&42BR`XysB=q&R|D%utGbBAV- z?lyN+v@7a&df%nGV0TosE9%v@rBmoJmaDN{QSZt5HxnW_j-|0(QQv~k_3?r3sAyNz zk8@6;fm@izrmbooi6Q}(Vtr8o1r+MNfXX55sDcL_KIt# zZA1N(gJSxmZD_cEzgYFt7(0v!6T7tDhVOQAJS6+OCY{!xa<<2P(AA{KbQ8S1tSf0o znxMU!CEYNvz(skM^w`}34GXL(EX)G6Ew|HWUf)j`9Hn8ZHmLsK2wC^H!2zX5DP@xl z=9Wf~<^UVaxpbYDb&=sO|9Hw~f6@3Q@l=9*)NDP+om@zvA&lSF+UQhg&wbo(*HJ*k=>NI9yqSBo#ueTw-Q@<_ zxPo}keQw!WSGc;ch3hME1^tFXUOdqq`t&K~r{X%=s(h4h$MrL_q>!IxOwX^FA&}=&S%}YK)BT_pAEq}bZt!`>lzve z4nt0}dxOHD{)@m)bcDkFU5pLIdW~W5DOSBc3_hYSpyl33NY&+;vQs4Vjjv+=C83_( zQaOvdi@fVDdswgo`qnt+vKOfH-+#{@ric89#nrpn3hdu+ow|~l;osf4){3dS#)DKU zVa{vgL2SN~mAT;Oq7lPe*d>8~bRvH&5cy`c8N3{?8PQ4nRMhWLt&k9TE$U?FtR=(I zce4Ly8?s6{0TSZYkoC{wVO}aDA1b4Pi#kPus-ht_@D$N*j)tb8jBI&~c$c-6WP(v3 z43nX*v=Y{_BdSQ3d4Y(JuOdUj5a)J&5n0en3c2g&k;lEI0O|`!;WR1Oikh$uR65F8LkQ>xI1P8S785{T<<;H~J(CMgINO)(rM79Q_bD>?0W&?8bJ~g`72%^+A5eie;nO_E#~`)p0B{!oF*4^e}cr5&N(&a?S1B zCda2ofm_fSqCXFPo7+#594Yd-as@IL^^T@(uO^MyKY88b6e-q5{ltN%NJm%* zv>dD^nu#IsTrYy0Nkl!is9>^SC;BlKhLFQ}uBurRNwgXQ;Ap59H{#E^b?pl7+7;Z_ z?U8VugRuWn8NkhH3xets%BNH2kbG|oGZ5i;4ieb6ZV~WslAL9=V7<5)$F~S|8NV=Af%|QZl5)1M z9{D)x<*ea&7?=z!XPw37Hog29U7Tt+quE=M1+YrzC9SMWBZ}H3>d7L*^#Il+( z=sz*|F7GiId4a25@cBQ{7o+MGzhG7**o8jeRcs@{`BetD<7hOrY)$2U3CMTbn#66# z@k?H%aE1+t3k{Z$G3ZZm$uy13L44Mrid5q93;kB+%ZNVaHS%sXnWT(9_T$fzH1s?7 z(>_D&d?LVTb~Q;@6#?$aXGn7!#y$2dIiifX)dgor<}%ddI(M2-{JUNInNAePq3_)4 zRAOVf0W3UI2|-+I<*9UX+I0hf+5;}H1NFFWT;q=Q#LqMLCUC-iaN?qvO#{{ie%RF2=aPr6W9klS65}lv%M$LSL#M0 zJ9-WIMSU0xN1XQela)*X{np(1O19Mob$beUrtN_9e9BSQ2l*9r#8GCNiah16$JnWc z5a{Y~jI~}4f$e8q*)b8~(EX)s^4LJwGSP=goN=C;;K2%lu#fp8nlDBi`xsd||BVF! zRoKY)QbK+4&vAUcHsV1dpK^N7k^k|qnagVogEzX(+|Y^0@7?o+(=yxuafMq*BJvMj zaN9^0Uf1>AMyl}le$mV#rFh*s;}jW*xjNf`R4bj`0OI{q8rzm~IP z6#A5}Og~37lOjOB4eJZ&=VI=AhP+RU0OxPJNc@*5XuY$8tR4^zSqpcN+|kh>db*Q* zRYt#=vN6O^KwbR3!$^KjENuTVg8Z(Hg?(XTNzggeL5l9ePc}<{yr$lK+?WJN_Wvlq zsht2nQ=iF4LIRv^c4zT;-{Y$@(^SBDv&n&Jj7ostHO}m@Ndox&u44Vmqp_ZSlBFDv zhNW>QS@wO@-!89Wzwt^s4l&y&sAqZk5Oc#mS7E>rmQI6U^_C;-;Rrk@^_{_Ir+7oadRU1i6kguwtlS>}bK(IC1OWqn_zlESqS#%)IuX&^e z@fqEVPLTt+Z`fLUhFrwHc7^_Fvd9;Cas5w`lC`*gxt${m6{28u*BatE5_ti2XUO15 z$P7F-Obg{kj!K6Ae5Bm*p2@KLQxx|TdDHc`VmUwMWH|eJAe(U@ z84A9uGmW@p7~HKtySNMeos?CX*P&!^wk&5SQCE3=|6?rqB>Lc7KE|>i#lo@g#}Vg; z{&U)U*zY`F;Jo*+`F9X!oR!CR-uDGnpF9TDzA(h3i5CrZhl@{Ic%{Ma@F4RQpNss8 z+Ky-Zk}mErH6oF-#D2!YxzXIpbsk`*k-&xec)&^LWKJ*L1N8`(k*>IJi+_ss?|0tF z!(B=4U?1wqsFlQX9`?i2ju6jL*ylS@N;+^KH%?wkwm1etnayePWpo&*g`FX5MW{P* z`4rLe41?!e&k+UvDDeDwj_g3a#x96EP)A?3NefSsoUbwPuKEN?z<$NYSLMX!Qw(UV z$sx(N;vsL!Zqjl;9vr*wCjV8$gN;i7@!F6CzT^DJ9{(iRy)ck;tVn|DPgzA)5V!2 z1^Hu_?qrfV=00%Oa|@XenBY<}?s^0qy1bX@*v3F;MIO0``z5EJ+eiZ9A$O?lAa8IU z?Z{Li#+r$6-n|cL8I=gfuJ$96(gb+?NtF~IOMpG${jqO`zAT4S*|}E5CgWFdzdlegdS~4Wf^Jsdxoa5?YNH5U(d6CsE@8J$l0Ki;h>d> zJ{uj_-=0#$ibqGn)Z21KZz13EshkxTgu~B(61FN1eVtrN*qbA`F0IL7ug0U!pw}L@ zXiyBalxHzz3AiT*7e zxX&Ng;%m-f{d36B|IGFAYQ1Hg`3$KiXsEt5GmP_uIXer?T(do)ba=X%Q<*2ME8A}- zW2k4b;DuQhUIU6po5$gO%M*(bZ-Ka=kKX1s`2XDXBh1(0&&j&`Mc#u+LC5T)T=9k! z!iG1?#jmBXY0xG4yCw_F+TJGJbS_rv#%>Rv9tTQ7y* zy|2hycqu%(`b2)aR0{5*c6l>if2!?gQ?s$oY;k~TZj6DeXZEx5B;@1%@BYTf1MKt8 z|Nr^l`+2JmFpGmR@b~%O`&N(kGZkEK|33eFKT>}`Yd;zTf1m%ozcy+gYr((g-{*ht z2YlPhLJDKx@AJR+bI$H%2XbQ2C+z=w{`Y>`>%DCGX5^3m@A=>Rw;cAdR2kxX|M&dw z{llvJSz$s9{C)oS{@?unKKFbvk{O*%f@ML4yf}2V3B5w>c5RxEhcr?4# zI}y}Thet99@!57UOlt)4yQ5;52jZ7ypn9L1%dKvo}L%+!H z`1iMQ35Jyk#jM|kFz~)v#DZh6kJ41cE*!@FqHYPR+>3pb`a?|bEc)h5I>d&`@#6|>@)1?v84&yHg)1L9!C$XIr4G+vjlWZOQ* z!-2e2%(6Wmyq2wDyISI*d-F;*2kWQ5CQf162NTiHa0+WWln5TVQ&~$vB8aByFt447 zQ1`kI(L&sH_wW74(bOb(o!6IC=Au5!z1}1!JqcoV9v}zT#KQDr2hq33*CXYY2&V%x`T7XCl0V4Y+Un-SIhGN<@s;<)HAp~ zHMjB6)gBV+4u1*qTQ#OJe~Ws$HXzJS%EU!={KO-vQRmvdt>S!Tazm^UGlg`*xtsOKiu zT{{|vWvpQLkUt<%T+MWD$6#G~HM6{j-{XW8Y&q^9vfQ8X$|msu0WbMj(|DNO*vcQ~ z;$fe23vY$5C3|L@GSu~$e{G8C>g|a@=;@Skfb$&5o?-qktNiO~J zM*g-t>G8@N<|ufQX~!<*o4w#$rn~v6V_xXD;%7dz#tVX#x0-*; z^@0bZG}xCreqfTO!D_o9uYJD;Q`ho`jtLrU#793!zLLP?*bjXe8qe-vpENiGaVg_M zA@FMgn~yqDUUTzVcfW908E}Bz_6&y=aDa8}2nXw>`Rv}FaPT`>$le;EU+Uum=BRrR>2p!4PD|P_S$B$3fDE;Ct1XDDC+i9Ws!Ql81Oi_ zncPR5t?kuP^7d3X#JnmaA5ib+sm4)~&=?Mpa)cxVh#KT-1;xGb2N;#bs{xGS_Nv_(&9~{a`_*>W~HxVD< z=YGI>NAD2tHaG-yii-Fz?buge?!Y2VA|UYII@U2Q0@`%fu|hZ0%Pq8LhU+5WIG@Yj z;km64aoYmo{1rCkFjcIlDHr6jnYbUm7gxj_urAsVUdZ;y!r}SxLU!y#IJ}bMd{z+- zXKy61d`tWs8&LOb7WP{gB(ZB!?E6_HvWB2g$bQ_D-Kq_Rw-w5)@o*@_Kj_2U8$&_V zLy0+|Zh5jwlzGX(NURI2GcQrZ{gB@h^D^W^`{j6r5ol0799Zl6sfmWa1sn4eAv`jzG2zN$&U z*IB*Dy}Q_FexpQgVZTgmL0>ZTRVY{)UX>>VM8bQE2lDvDNcf;~RlcZ`@Tm?>LWH{}1^ z{*}cdOpp(hTFi#kq29K%hz-VlSS9*DyWn|#d*2e)@D=&O4Ux=uNFc0Mie|$QhpBcc znsuLs^}MT5Y(MfMH`bN&AyxiBS213Bw?C|90zXOa52BGL`Q8oaM;^6_+xs5-b>GrC zT^vV8o~3h99l;PfViQ*~AOxa^t{_FdBfw+JDkAEF`_iOU@ksPLZq(r1Cm_FV!Dy}=b#>O+HS-e|#ltY)CiD%# zzE#)z{L#hnu*3TS-*Zhov?fP0m*42GusM>=>5PL;ZM>qM#*n8`Y_WPg9QG+;>$gP0 zHN?+Y9*qPy%M$hy{T6dZ9Af2sB&_}Dz`E3<-iNs}t9jvrz8x;Cti=az&T?kScYNT! z$w|3+q7>x4>*ayYQjlz_lYjF>->Gp-o*plSem!~<3HU?lb|sRc<`1I|_9k7C*EYYi zH<`W6A65^KBBP&%KzFZb(!DMOCKX4MH`r%SD2*bGy+fg6ObI!D5p`Sq4w0Da8=&EC z3Ay|g{Sn5Oko_GSpvS<&MEWQa#uptXHJ>Bl$o4~|uowF6%{xT&@O$&A4sifB(a?L& zcGPK&2Ib6cBoy_*J@0QLXAvi@q-jSc&X0u)hb5$88R{a5ZHOJ>R+>g8Fy`(_eDR$MEX>nzKG050TRkRQ33r2-m_2s@z-9XJFE(s;t&TSY0)& z%IZ@hBz^ABdL2xH|6cTCVcU}+FugCkQk(<{`TbbeV@WV4Y#-~lG8Pin?`3n>#=_GT z``A<;)Z2Wsj|uMhxx2RUrGq`dz2hUlZ=45|HGSfx-8?|w|0AD@eba}RZgc!HPf(n5 zlbdef2@kz)b0HIv2eqh?n`h<;uKn%E;Rn7jF~W}gSMCdU?ADQ{I$!YBT1V=i`NHXE zSwtIgsUwxQk>SWwJF{vVsZ9t5P5D;hxG@;)CLAHN@SGM?cZ94#{PDgIhe`a82x!PC zCJw!$;Whg71)z@9)%YT!G8FNT-*yu(+-GO=yNMI_CAuBUCTGfHz+NGVOb&^IX!}Is z8yN?e3=_#rX&fl^mk^DmcK3ZXea6wjn^R;-XVUaMwc`o zzkB}h(PZQMB*^bOnyh?|e)BbBN&U+t7&tMSbSNi6kZCk=!t%_}1F0+ILdqlh#~!=SKxFA1@o_b&llqUYVs(7 zH?GBbVw;?Ae-Q`XAqzO?`V{!g&EyIyQXsJ^m^=Pkn(SYd-Uhr_Jzs&bh+R4D@ZabcO#SkCNnpt}t>-3=yqYMB3>Wncnt?~u2qT&TkqV*Ck~?M!W7 z02tMMVD*6kpm^&YTZZ+(3s2s%kgx!#ifUzJiv!?vpH`NPJo@$nt*mTfAk5NiV;`3X zLf}Z$-?T@ZlnUx@E(wHcpLUivIuK4iZ)axB0e`OK&lT^JKlkx{r6MtY$u3 zCmAx1yfE+e0Oz-s*XE<}`x)LxAiIC1!@8}E-0n;V&x7Ykg)|*x!)r)*U^?tuZ$|%< z`hcH?8I8tz66BcB#pd4N-C{yV8+yZk!#|L8i3H3qyeG+?61V{^q<57ybZ%)O{R*w& zjrvZab;A+zZtoz4&m19iR|fI7b%gVc8RXppyiX>QyN^O)!L%*a*( z7Yke1@gi&3x4eZNkz0d)`wrId+!4a`cCw{69br{R1{=1}5p_&5SgxHTT>LqKO~-xY zD9?#3@Np=dd!Wu1+9D3nQ=JV#KRkv1`-l75e{?-$Z%TXUNFm6=ls*P2h?Gs~RZH{- z;Kg+15-Gg&7Sm+(fz~BrDmKIQURO*b#!G?B7t{UdPaB;mrYCwx!R5A?PF0k`tudzb zyOI>*SC~>u4JjPjs$^bln*?iqbuo9u`sS$1&E~t6lVIky=jKlbB*E`Th}T)20e$=n z$=4+rV7H`c116R`d)RkAmZV$SL#jd? zX)?8k!kI(JqG~*UJRD3cZy-KQRgpYIK8H=PB59fv3}2rp%DZ6Pv%{3-b1{$2$uHy) z7`H!rA{S#GV?qkq6O3E^Ss`14dHi>(jJ>{}j(R_3%pdb8n_w>V`{oN}zUIP@kG|kM z%T&07d}8OXV&OINu~rX!!JLm+!A_SKY<7+n+`amMwYRN-ZK3Exr(gwU#_7!Uiam_? zPG=`8?P1l3IM!)q4<1irS;0bk@a#K;)!z(;Cw@cNty96Utw51ESOmk^8H#K@@;m<3 zxcU2YFDjYS?t2i=`o@fAl}TYvi5YFidSa8rjP5xlgQPjY8^Ds;RzpgSDg zL0V!!e|x#(K2?`0&2z)gTbJ&oZeV=mHF@S>19PojlP3W-Ka7iI)x-KxTNS(y5!+zIPb<)K@0>VH2m_FVSkS7F>eW(4x8n8(P9T>jE<89Wc&!}rHL9&hSo7w)7&#n3P8_k&ar+y7)) z827q+KbQ^XF}2h{$nkcEpXLTZ*}6jhd^Z>@ea(`CY|u~dHIq5n zfQET9vp*(*;V&LD`*RYgu+L(%>Rn*R{w(%hZ~@1-6n06^1!8BWu#q!eAX%c$sspgD z->A-J+T*##;x{k3iG0PSzxc-I;s1R648LtcV|2XW#c31TGR+Hel1->K@>&;jCNyHX z7YJ>})Ei%ylp9mq>0V%;YfP1=dclt4#`NG&FKBKxrtAB7fu5NO?cdW2PA8hs5%~J% zDHE!P&$9<7a+BxF!0S~!w`{r${Ckve8(WegPjrZLexD56_I|+rP8tjw`GN3L(?GBJ zGvT+T!Xd{_vTk=ObS^cZy~EtmSK5FMLA+sfe_cAm+6@|4=u**AH#p_>1kZgEST*zs zIrvNhqf(HeV<3T~rbbdbMgk31sYH&tcb3Ca$(Us>aOQn9`EtP-=Ih0fP36uY^Xf(l z+QMP?XGKE0Am7WPi7N{Thgsss+%WraP|-}_?@W^cS(?ZnnkR!9UWfSC?~-BYv=Uw& z^Prj^SQN&6G5-S_hj~=Eb+U07x9N+|EDH0O)89Z465L_m3Im}OdHbekQ4iaL4yRGJ~c8AO$qeQZDfHW37jxVWh`^GSxT4&@>c4HsAqMq#TZp<2WEB9tS=C2`6?BanY-XZAUkDnJ^Oexcq!iZKe z?SZ)Z{G(#3uv7}49K`hPia&aPVj7C;*wZE)7c-<_c*TU4PL;xsW)tc>ObWik#MHB| z6trB$GzxJtmK9>!j<1c|#B|AUDZCrm%+)+kfy@t0+}j5!V56)^*2ShkpS_C2G&Kcs zD^%#{wJ9)LszTGTFZb)XDxFg$1FIjZv{8_O-SJV>dOGSU1dXB=i|pZX#W1>J{(6}F zX&7}O>!EjRH96)hfirp4Brr|_ugc2FtXH^i_)$(`?^welkrPq+;ReEKN5cBK!{Wh9 z$@z_LAeAj8Y7uVW z^S?W?3o7p5>gB}Lf4afXvrF0VNH=)2WGTD8$qky?%6Y91=*v=9!JlnG{mJSyz8CU* zav!DgZs_Cscb)lH*G}C3{K!ThpXH{s1p8H+Mw`+*)i_>miK!IzBF80&>ESb|A30A< zv&y9~5cfX?d!;axis{#MDTMlp>D5Tw9|>Y=6oTWWk16fkAcZ~iOsR@Y3di3)=3HON zAStkkThxr}m`WGo;wOW3SGtfG?C-w2qC!s&m4RxE3e_AegPo?T^ov(Agv6=RH00Gh zd8AK`?z+K{UHbIZQ#Z)*MOE0-cwVWPN-tqw_rj-7q+h)q`0n^b5}WP7f7Ki8!`i`} zqi@J26+1BKnoT-m+(9_Gi(J^^4nB`Jk+OC-cs?nUG&j3J{}sK-aP-k#c2@5F?7;ojE@raT9hydDGv_$O10ez4nIO!FFi;BmZ|4!Gt6 zYd*gsPh+iN4eEmo%d&>6KblDHODnj#=rM7=V+H$#E#%Z$2XKzxLPBmkK+mZ%V!8(X zR-I)ea*hM!l};f2_z+NBFoE>P`d&z=8cALi0)ro`k;GXcpdssG-f}t#yjt7MreYrQ zb93dX824+vY4X{aM|H3LECJ)r@ZZlqR%F1s86_+mFOmX=!Fc=MX=rzhfr2 ztNKAfl2~Y~Lw!{$7DBN;8Cv;@m2I_#Q03PwB;Fbx+oQfzqZKr(K4!+Rt-yHi7M6a; z0sQW7VGZXTKrK$jw#;>a+w)~?p_KzH4x7L-@!bCQ@dUP!g@99kb=G@M2-Fm*u|8`; z{`vf)pJ7VtAL2R5$CUcLm%<$bQ~KhE6l71u^yY6VDDDtb-!D=ycNSCjQVMa_V*2`) z6nce-sRhnUcTR|D1I|lRdYaOgN2PFdsVSXTh4WIZDg9Y1g`9aBoKvr4xU4pqbN!tJ zopJ}RyeJ83KRR(ou|C;%=@r7pr^Aywmx<2kbl?kakVjk6;Ki7mM7k>t#_Sf;R^)51 zTqdTc4SXQ(y%Ei9m%?H*W6Iu0p=-CdBeMr4pz+ z_LRkRSVNHYQ^xg>;JGT3#p^pk-{YC6W90-Z(v#TMOh=fqD2a9KcZAP=YHaAhFi=I_ zrEk|T*rxcC{~8hs>ok7wd8z;Y{64cqOr!IqFyM-qTI1(lpDw2JE=b`O;P|;Dg@{ik zwAVQ)T*3YDiQ`h(ebj{h%Ef)rRTHX->sNneT(_ce{aYiZ#o>qxJ|Lz+aZ(t5S4=N# zMm&eK7x8bCfpDuQIr3ZvL6t)ZOU89-`7jcbiRYQyeQC)z8Fb&+mtOCXL0^UbwEHR< z=*;O)pIFP_+{dwWe3JuQD;rCnzIK2CGe*&h276G79Yw#^qVAMtHIb=E;L=Tjyc;cn z%10pq}tpq2RFt*d&e;!my6uJZF?3 zzGDw#U!k7vSR6OvYNnxz=YY_1*63;tC6mh;3Bx*8+bXu8$rX6l)$HOGSGe?PCbOI4 z3f)6zvL~xuVe&i~KN@`@P8p~0^@ulp*kv}q>_8-xji1SXIDtNz|M&0Ttz&D~no=8_ zZ@w%trEgWd;o=ZedUT{WEXDCuG0q!QBgE8ZH1^kLh-tl=H@u!KrpItz`i~P+%~q`c z;Qq%J=dZ80|FOCw1=GH!^w@nVSYSN~UP)p7@?=gIbzC=0PU4mbiLl)FFn8235vFAy z;WE7vVPN)kBI=O_ov4?+@pmdT^}d7pU#ajT<_`HDmI{-#&FFj7eVE&1N_SiMgOZw< zYG6I3)mBVBKA~RKg%4!s4GC;?`am+CNZ^O-OX5600^csZBtAF~y^^F6_tOqgIVg>I z-*kYAF|lNmsRKNBjwNXm9H4yeXKo4d6tm`ca8*B1&!^8-?ls~qjwxN^qOeck>5#-X zutZpsp3EOVk2tj3NBF@Q_mYysyb0#9cj9&Cg>hHsUT3P9M@r%yb_e73Qn|y7Fpp); zrb6g^f6$$3CR{=N$1iKeg2iWF7&bsGbbR+k{`3bX#dD*|{SPeUmIT5cy<|&q-U$zX z$>t8i^OphY$=q^)mf$pY{fq;=h>c|*Ct@BXmVGvJfcpnK_^{u>&}IK;UiED-{C2#? zPsct_lgm}U82di|di;0kR=)ik_e?U{P+ zsfi5IjIMKvdNSy&{lGQx$#7|9J13k=hOrGwR1b9vddigOp$7E7G*PC5u}(cdMw#x= zLmtZy1G?VC3(6}D=t!&|6kOM(*VR4Y^dLPtu(u~H4OO6hPp!lLj{^N%w+`NCcaq}@ z>%jR}C%OE7E!?v_NJ2Z@;pxu<8R%c^XM;Y=Z9k4Gk<>I%`p%4R3*UyV%>UNm4Q$-!wXCl4254}taA+26Uvl5VdO1c!2@xeE0-w< z_v_bzYMg@b@$@=)srrSLeq0OQrRZPKbseZ^9AweGJfMfmL8j8_4j<2Evn%u5;k$n} zqt@=w&2KQfj(A~fl_9J@&O?WObz`^EBVon*Zftq(zn^~`7wA#@yB?@Rr$-gvdcfW8 zdi48u52&uxrE|M_0_Uzv#lMgjsjEw$;r`fQkS=}r&;vZi>r!$F`MB1)bdDVPj`_Ou z>v0cQ{#lpys`LOu13fA^k9vP05-zkJ&mp(haGx$FBTjx3Cpad9^nNBc6VE3)y6=!L zkP5r@w~@p}s3%<6PMpe8;N8qm#0UFf7aT=&Dv?6PND&Q~gLQ*d`ZNS}Ao}jnr~1lX zuh23Sz_D@qIYZ+=8qIw;?zAI9u7E6viqbXkHw5?YNM{i zPwcNCzxmV@F|B@zdcnbB+T~FI%&6!jb2PE;Y~4vN7~0^^X(NODBrw{$jci>n!FgmC zaSL{Us?EE|Wtjsccx)m?zw9BrWD}X!Y7aZ#Pa-O~PECxQM6TkxmHu-8S%G{I1?fPt z4Siu=*k_;2!u3nZWLf1gT)%oc?3b6KF8vGhTzRHvBJ>-2kgdVE9g`2TjhIKN#$gtV zajz;m#4It7;NPY~jbRYXwKNlYqCVHIP_gi$DFCkMh=qNq{~9LkWJyLg;Crc)_0qBd zo47W%#z6vWCbh9ftOt!O-Gw}22he!GiyaEVb@$>XCVOiSZ<02#*T3yir+5*qf(AanDNfP?Qd1 zuT+zcf;4zC`xFT|k_HhwP3Z&o09d)$l-~6HqsMDPpK1HUK|d4v7IBKM1`2f5Wm^z; zQ=ljA+rsx7pUM5fw&1GUNkV(tf=qIdOigzJOO1oX4t-1Nm9t6LzD}UBIGfaebA&VF z#KhJg^+t+J$g_k{tRHKV{a-?0#B)tD@&)1@RduVrZ$clWW6P?Z?@WUID~`*vP?yQ( z^bvW9SrQcYsbq4D+dZL@O~X7c%|FFfV%$CJtJ!tTa}ho zzZzX&c3T=5j(va(!*rsA{jW#I)rpsNIA|EClPbi&I=KDfmfzk0Z>7JvUgtKzo?YI2 z`L<-}HqMW?#yo;+a`>WY$*>@LH{T8On0xvq6EN;GbJ4dL^Ju);#wK9gOBS{vKRFd1 z6&VW6SYJK$(NO4u->2HS`oiGpUeNYiPxvy=3w#HEU`M*!L8b2pX3}8`cXVH}SBAE* z@m347pJfY=du(S`_grAI<#uLq5#wH*&K$A-HLG_z3!dQux9!wf0^|pQ{73zH04so_}qWH!Z9<7s;o zyts^XcgOutRvG!d+7=E?cO%=nV?Dgil`I>A^`en0NXjnUKW$t=t|xgx()KE@xqB>( zJzU8dsl=ks*+%Zor5N`BAf!?&qWkNn2f7zm6q@3Be+QQ{x)Q7RMg&fB+=Imh$Q^ATil`~hC-=vQXg|~gyFXDxhg|W3hbu+& zupD*4_K2v-G1QZOC!$}Ddx5gP5e+`&1v+YpT;lQ+IPoE#+l+n~%3Djg=s)$6ibI_L zFBueF`%U6s;dy=bZ({K*6{6;Kr9I~1_cpC7oq_w(;f-1}$Ic1PZ`YzN?oKeU+gQ33 z@jLD_$5N&LunxHDDp5TlfwO(ClA4PW*fZ`d*)v4~HPW->jfMnH+C~$%c2|hfiYA&p z+~CPBPx3Lz6&CgLBBp_^P&fE1XN@@N59VLE8szOh?pepZK8HBHr*+(5#JehKC-B2D z?s&^YUIp`LdVh%j`4j6q*Gu@`n8*4BzuC{Hsd%3H%}g z-CBZ!rxR>@pd}1j=L9e2jujG?Il`u1V})yo--#c4m61yl$oIU8{6-1H$Dd{P!z5s1 zc9sp+LHxjsXr|lK4Z_2sS>PvEcre$C%?@$}p9W9%6ZOP;?)t)S(nKHfz_0wop;2&m z#&y2*SR{ORs^eqN|NHaTg?wYm&60xVR%2SbN(wc0#x&Lm>p1GhG}uE5J!*_-e-~WG zWH=tIq_6<@Lo4QDpDWgg)*4D-VU-b8!S(KL4`VuX6z+Rg7}FR{DYR$cYkeskKCqRW zcRdA;dS!9(7g8WtPtL7#PeFeWp3_2{q5k|Hw9-8lY!rLYUe2l5FYiTb&Zj_8UN0JW z8T+pMBsw)`>G|l$eh4y z>|NF|!4@8R-(_KgY@ug<9ed?t11YQP*!ox-=)FS5F1onGnN2cgzS12c|BGVt>)qhO zz$kVb`(RBkx-n5b`T$G1v!|Fx1L~}gh(%w{zRkQ>>c6WS{+-u)>X=Y_8!2oYZbB7& zq%f$(n6}}1{c@)<)k%r3A+b;66Lq zm_86oVR@r5{mMx}d4LIBJzolqSJs=q?T)zAeOBh@f5@QmNq27GVXWi6?a6T`Wbj?P zfzVzVFyqKA(xYnzY#n-^eDg^Mo9*|BesDT`h}Wj!*IZ%aENwdYo-1s9G?D&1;{u(d zCQ*kIF3@dxBgw zOZr!#A3<>}^0!@J;M0+$7)XeV7HsQebI>yiQ01`Vj=ngL&T-)CQf(g8-_XQwfbS_^HV;6B!g zW!i$ubyqMRH%aI?=>iX)Occ`3xu8#GBfHljfo9i6riOJyji75RZ=M8nbgnU1YY80q zmc~2{P`6M&on?)3h1iR+%(%b>-ffCy{p2n{4vl2GYLT#1eH7FC9RUYt_hyq4BOtR$ ziA_RXhQFWlzq&pjXiS}(q;O8bnDQT`aN&XxZBX!rnW09swYxX8X&cdf_&Vj2h&tkP z?Z+aji0@z6f$P>~oR6j&(JUr~x-cUeaT5FWwMO&;zE137OuJvf@pJlu`9So4vR!@F ze2{Sp*5h=!BJ9Iw@7CuEU&}zLq=jtMONSm4TF95lc#eP2N_;k_f%dw$L}>?}W9qc2 zRT%Q9)3xciL{~5vHi_=`b%7p|N%W=@USB^V$0KZ@efJ}>YNHJp3b)9>4-#0`yMcH& z;kvedGueFs=le;U$qF2Qdv7F>XQ+GAp`1*#=exoozp=!$C=v>Kj3sIec|%Tpi4Tc{ z;G2EP_Q{d(bH+J&o>2;flw6eO(iC{BX26RuZqXxM-U#z3)ox)YFz#bzEo?F7aoFiC zyRbbCb~m>&UCbjSQ(HKU>*d0m+QPF9u3))#k|06<&4^Kxgz^3^u=Cg>c59OjRQ-O$ zbfawG+o%Ti_OS$7Zr);IKE3_?WpIo$apL( z5F%mazOn3jaU^Ie_G42~UwqiszN{zmpZ?Xj`TKLHZ!n^zDp;3uF``C&ee`vSh!Z$xLPEfm$iC(aTZu$}UOTv}iQja&1`+GIyaT!s3lyBxu0$~H1o)e#Q4Z6jsB z9N^ScF{!W$fp5%&1bc?SZWB!+yh1(Q0!{KA_51h8+{~9^-1|+}n@cf|?!`x|oH6dn zN_(s3VICjD^4NTg+qyN6d1D@HT?^SPjJxAY0UM2Z3|wX^?6e4inR`qHn;GbPTWlgo zIs@Rnt%Z_HBJ7AoKai(hC1U0%FrV{L8VqhB6V+U*FlkL9r( znIjBK+{W5|JK#BP8(X912)=Jk*Z^q=7~6{3AODxTcQo0y#$Zr)#`8P&W&VE7|LUq( zEu#Ge951;dy7fAai?t$p`GFKxsfzGiE`=Ev4C%Q$Qt;SnNFV>{tEL#zF4#v+EHb1U z@}!{g+K|r4lEM~K5j~hGg~C`7U9?jQQO8Bpphyb(PutCzOA_dhcxV3BE(t>8W^%K- zCqY!pY)-vj65KO7Pfq)!!Pd$e;^CeKkLFwiy*mKp0dR67qwFA^|42S8w}r36+Q}U}|Hl8wAuF#s zK}baov1xJwdTI-)pX~$|J+erxp%aXsqDfvPhk{=5STZL&6qao3M?Urph1r8uNM;At zQ54_Hr5N|h+D~$dd8Ap*;j_?pc~j?1{(QG2STEGDxfu6Bv-4~h=5hPN6*dIp-n8Hf zJA-)yZ!r-j^+%nP$0kAo>PUUBGZNsmA6Ug12~RHgLHgtG%pY++J*WL(s}c88s@u*E z&#?uQ>mS+0mA2q{BZr-R>;yqW_Ave$#y>WT=^8nK{(~*dc&-!7ygQaD<%ELi8ckN1 z5(=wltFRTFA>dfkkCiL^`~LeoT@ejWL_VClh??W)9^YU{-yB3de1aj>!q4B!+>rL$ zhx_1OhE#_A^fTWL=$S|spQg=8!Ar>ads zK5HHMj{DUJ6)}B={>lD`uMI@q&!FkX^o3U-MC1N^xf|-Fdn?e81$O9fr9hdL9elpm zN&1D`Leq>d_1jMOb zWZ@Y1Nu65ODoKTlck9?)jQhQ99dpGz6waCm%W8r^RaGpUIfXvZn~Vhm)Yt1j(^xp` z9S9$0D+q$b4w^y~gph@Huwlg)c3El*xofraHobjXPQIFh}$&-pE#C zKlNJdM)vDD;(&(tWwVlk;pu_CYH{#JYrzh)(!` z=dTSSdZSGW0p~^Z^k*sha*OEA9^SBjZv*G2mjX9zZ*f;Aq@W+oSI+pN4D|1P;~rec z^Y1q$nld5dcWw*9~J)?0%0pXM5}cC!s^H#kp*#Nhd5Z#da!?hZRO!%4qI?r^@= zg={^GxO)p%qFv?&4~=eeLP8Yug&W+jj3}_IE990~AfE4h5vPjk%-Y*-@fH~OuX_!A zn=ay5)xPtqFmB=6SHARu4Aje&1Yt-D)cjBqOfipX#(jjD7>y6CzJ82gi+*!A4%V?)u!Xmsbl zq>^w(7bE`gUO2nSxr1`FE0Y{`gI!%+*@bg%aBkNP{{F@&*phjZ-<62x_p!x%8^*1q zUBv64UfjQ0xBmXz6SqY4H_kuy=R`DT7vjYbN4N>+od+{S^bX=#*M2gjXG(B=I%!B< z_aGi{=`~mMq1VUyqrDVvM~difXDQ^#Mf5YC*Ydk6kilj$ zFsu57`qwgm>#F2ST{6@LsFAeBWVqe07rj}IIOmH!X`eFOS8MmCGFALs{Cd-+gJf{` z=>*(Yq5u1y33SdU7u53_M|)j&hL<(t=!P0+F!Qe?Ew^l-W<(vi@ErG{`)kM?T^kU6 zuOSX2ZD7J>Z<5ysaig=n$?cJDa8pY{)KgudrdUEAg}B1fx+3nLTO^#kQpo9tN5bW* zXwI<({Zm*Br_vAsQ$POVzaefQZ=?dtFqOgCO=_$g#?7^=GAZVff2pT%wiIzps=Wjm z<}o**x6l*gzCN|LFb(sF+c!aY(1AXAEfa(#ZxFv99-yAjC4I&hM*sH#7*cXtn33#5EY%5_B{6!-6y;lst*Vxa9$N8id=br`b`2NR+^!oo}?>(TR*p`OT?lE9M#e@k( zM39^$D9r8>6?4KYh#)yhlAMv81XL7MjED&XC?;l)ISY!QM^RB!R1`2{!0>AN9M_v~ z-Nk*L{~W)2@Bgl~YO$xgovG^Ssa?5HKdR|t$W5;BhLetl+-9`Lii+`i)T2%|7;>sL zSl4syh-fy(OE*Rz6%{!q!m_vwQ5Wq*7+bYmwBI-pESAWV{%bNJ_DXN!vpf^lTdNT> zolIEtMU6Z$&V>H{eUFD zwuaB-CaJWxhH~sbUq8_rEHQ3jMIB%O_UTQz<^V5;q?4T<4xnP0PJ-tczXn3K`B9+@(mglph_Dm#F*19(&>86tw#X2k(Mp6P zH+oYE-Qj`qQ~~*jZl_KqbeB4+p*+cif(gdr{>`BfmTfF{#`&C6&l!qkw}e1Yh@tr8 z_7FHd{{d}$V-0IIJ)nYGYdE*=CY>_b8s5yhNlk35!TI(Y>R90b>tu4Mp&0Afywa)V z0tXO|N~bZN4xpJol}304!JOAqX-DfIxRHx`^f#PiJ!J$v+x^$?U#lDRxKZzXz~Yh~ zXVcyn<|XNIr@H%s?+884zNasId8x~lb@BzLQ@Y%Y&puFBs>{uLg7uR%x}0g14`>Y5 z<8EBQJTo6X&gi@kBplJ>E?xD(`XxPX+yft&(s`H2uPPB%zuqP4i}Pk*SuYcviA#jS zfEbbDa`f{rv?5NoGvIyJ0g+S%h8^Z-j|qjxy^OeCldw(~ z<0qC3&P%Z!&eeUw`o6)R$>R?g?<)U9p=3*-ik?`MsC>$Ls8>2a%Orkcpuy) zJc4r>RLXY>dmtb2BVvTd(-Yz1pk+cQ+bY7q&ro{o%TdN zy7w^>f0-PL^Qw)+nHHh&eDQGcl@`qN>OEXM0_U5F9(|&PooqqY_%jXtvD5j!X=NczJCF93(H6RNiWBI3-AqTI|N7fz2igtoEuFTG^fS&| z^c^&v8e0Z~xo8@l@3S}kq@>epwxYjg85 zaKC%nNi?s25-93+5qV(Wv{$4~-sqN`Rm^xz<88&=5Z2D~@$L*-P8_(Hr@uD?l7D`_Fce@#5}Qi6#_09 z^TyT(d?5qO?BMA2FXWPj9eCLlk?poF(5O&Es(f8wP514j_MS8Jo3ou9yzGo~B<7GU zy+c7~;2ff+hI6~_jUsn*Lx9XTCvy`+upVDl_(m=X>ijwhYx*TY!>$0cC#P@@^TkNB z&qos>8MD>=sKvZ}UZL`<~ zG<>(yZfH;L(B4i7+LKQw&!M-}Lt*Z@Ido>9Q23N!PGxW&SBk7TO<(ux_<;TRVirLD=CU-p8JpEbB`80Xs5q`}?7IlP&jHMwEg zUeGd8lgq|9({6c6E93#!>cU~siM=Y@J>qg5ya_5XSTsjp* z?)tgGKIb6PEx`@;8`zTsoTGesxjmWP)eYhkd3R|KqCSIl^ zknXG3FVPs}!{qh=@leduztc-Wd?MBfSfjq;d5Mm&=u;o@u~m+c-|rYTLO=6|`N!xb z^p{8U*iZYNvj(-weRLVtfeAMU(Q2f7&etHieW@Gz5$th(mm8QZv8R?p++eGN98I4W z1)Yz|Q6csX-rf6yD7+>TYTcVfWv_p|{?kWIpKA>A0nJ|e+`LpD=yz9-+nI~|)N(zp z>qZ{{b3Lx-S|9i*gRj$k!0C-H>dlxR-CmEI=j4NRD0-Oh?gML5^|(!zK0t2kaqH&# zKwJ-fZj+-A41GUR_?*Rf*E|#9qE9LC(K%XJu^Q{@N@9dI8!->vqJ?Zdn+h!lJ`>xM zsW9c~H*y5+7?0rZq(vzevDhW}PW_Q~5p;M;XXL&Fnh7Ox|rLQm|+kwwnz@qp1cvWWjW z50H7TO6t9$VXC_-j!B7zxY<2Ocb#b9s(O$IL!;s5ITKOU#}tTmG!@w)A7PC#qRI`J z&$=O6G#>f5bL2Dag><(}Y@zdz5B-SmbRW{)z2O`6Kt67tRuf;ty0hW!)Wt^09#FnP zMQq^b4ohuR#AOlg5N-U7n%uI3sN`p~$9X%nKWpgJzII@iTSNWS?I5ju9TgEzte09( zJ#mh6#Oo|tvfcw0?8p9e`!N4DN0qi9-TnIxqnEHRx22#bJ*g56xyyRcH^|4Y(wl$0 z@A;dWoKVFJemkehJs9ByrCFNXu}l z%S9TTHRfOLeWJn5lfijz2AbR_%wrrIqscY5^@3Rx-?xVs%wAYw`l?3?%+wQ`4(*fz zS!2(esq9OJ<=w8By*``_D?@LP=h5l#?QIna4oip1h-xzbVH&u$y+bZNO@l-gU2aIN z7d&{N!-Zj9$hm8pT>TmB$I@Gi%RIIOlGR_6fj4X+;>IhSr)>+TMn5G3jclQ8^;04{ z)E4#bt>nTbH)tcXm1y5XIdm_F?6he31{0_g6~&knWKh7fK8Eq8;|BijG3ME23`DBIF~j z;~koXbT==nri#c%>SG=8fJT(h>bm0754~V;KP|DI2>Y8>X^NB2ErG!2ujsX>wh+U; zrpIsE!nxf~>0T9ED4q9|9yhjy`N~_V8`h0`op`(gua?&>HnSo=wfdymhJ za-kMCaJCm5TcpL+;cGQjE$#rGPw1}2&B5y(@pVf-FVM2p;%;{Kf~|P{-u7M~`&o;7 zg0HvX`}M{8_o%)?QQd-MQ0d5tcFe%K%vX0xecIu?wr;md_jXN&_04%?*|rSOip?X- zH((v!`FvvBF9R5}ZA5c$1{7S<=N#Vnz>YY5PV>bo=SieE#N z8l7Qz$P_YTe;CyEnnLEC4g(v`gxsAH2A#H=kQ>;?DKwJ^M`ls}OOS5GFL`t^^5H&e8|{d6H($x8y^#;iBz^J2uRbuOTwmND?Ub+h zJWV){c?}zN#NE(toljoSOj-07ro5nn78}@8QcL?SumLC6TDrsC2I|W<)9#@zFuMH~ zI@-kr`;@PtT21IT_gF)}FfOpjVhXK1gY@p2La!8sK|-YowKNNZYA+Kye_Gftmp>_Q zb-3a0y`V$24rkE88yfO-xWL}nr)|0p=Yx4mHf?mcZauwWTDdmYv8^{ainTeXSJ-di zH~f3g3k1D%IHhZt&t$K|4a0n(ti3v166#Hx9_et)QEp6_n=Wfo#EDqVU8DJ|4xm{Rbf1b;!jriJG)C`pIU)q z|Le5F3@bQRQ9++9wnF_ci<(}xhbS(Kc0OVcowp}YznS*fA3K3=bh3v$j-w-S4ql%$ zj-C$)gl@*_^a%DtT=h(iYHHzJQ~uwt+sDd^4Y+};@pqA7z-eGV`y*2gIKKnfKlQ6V z_wt|*tSHgvObdM=AW5Iwxy}b-mg#eQun)fFHq>tdd|>rceQv%x>N_R|++9~65Jeeq znZ7um1^cZiE%O1J9qUESPZPmmX`U#c2IHotuA=0Pn0KDB#BIfp);J$1k z>1LG)fv>HINn-{)-DyqS-eX;JfidTW_Go`=V@?h(kh z^T$Tsdq(zR{+Pv=8X{6(2)YyQ6ZyUi;oF@&a(tH~%-oqrPEkjwQCmscPj`eA>y?BR zI)cgm>Ey6OFc>bFPFS>)(ubRph;BGHKE;#_{}KeIMtQ=)NVlQ;df{f|gAQ{RmSF$j zOVmYZhHaNR#XT12(&R455{_|mpiZ;WL7X7&NLL) zcgFdB7KY;8J%ZrDn`d+w=8xUx>S+|_kKMGnPt!5)t)csUYJ_=k9_RAtA+aO$`IJWw z>~@5L;Fa_p(*4J$vUM5Z(a`@nT~GNn~=zutZyQK!eT z7Cyk7)#I#D4|a>w<4hfVKy0YTd7*x6`9hboxAB2n==Tv$#d@y;=m*01hH0fP*R1LT z6+QL1J_B%HanR!)_4R@JLOt#!)*ITR9^PBu2drJLQs^6B+Q~{3en%Is-}!H>3YA12i7#au3ve;J|ua&I{*< zK0c+zjctQN{UZ30z3&T2l1@f(P7zETSkXs)^ zVO7KjGex9ZzV@wIF!Hf;yt3Kz*GaG~TElDw@)6W6m!3kpO~P}jBJ%NVZ$W+GoR(P74(l-Y-=SSP*no4(9Xh{xA*lDb zPM4w`Ipll=)$mvd$8}cF=^vdT!C?ipuXBbCFB9oEr2FQvMEWAm84e!OrxPN=U~X>% zIt1tXI`tn&$9@il)1?a3z00rPzZUG%A*DnM!&b{et;Eo_d^r8y~3Lq{o$D zz3P=cCBk<-v0sbzL7`vgRLFRCOL%j83d}I87S2b%zt>k8&gVu7%s(i@&8ooHM>=wA zw9xO*cH$0V+`#{eD(CXS6&zAkIfXWEAUjBz3v6@&1zTnAWUUK4h`vLf1=&KS_8lUd zYzsrODu`M&<_$ltAZ;!#g6q+#)_0(e*gTGB1@j-}HcS zF)=i2ya)E_i=lV14l;ETL*F9Z^DZ;=+=^&O4!OFRZI5{Y@zLeFq5o$`lrHDE z(hFuD)a53`p?=NiaTg-IplX^Pwmkx2870AY$ zX*j2LAlX=hcFHJau3b;;Yx;T!C(|PVx|%3+vlhogWr8wiX&(VepKWF2MOOz%I)0iM_}aspPG?B0tv#e+AJq&c zKQMlmKt2xlgPEBj1a|tu*RG-D=4xMPuhS@mSFsR0q(Nx?DHi%!pAohxjD_vaXNAwU z#DdMX&eRg=4tAEMmdHn5_&~}a-OKRz%^)B9-wY9FbWebQ(aPdI$XSfvmjOA-^iugQivC-h1 z)4d?Riw2jD{=mBz)w!$qT!{14xz0Xbpt?hyYqt>X`bu@K|70)F>94_6nxp;huE7rY1*i#%7O-IZ{@)P63`*_(K#w8l0W49=&L2hN#r-8Pk& z*k(d=z)F(-Bm?H(TS-isGN8y=oqJ`2b2^mOxjO8h>Qk@6p~A|Laeu#X(lee6mqJ&$}`dbpA*AlY^)3t^Ru7=NWPW}94n=!w zZyo9tu{vDAM;}NVufyGH=L=6iYICI>aW2#zZPYh>feY5=bl&+uv8y&0k8!OP%e1-l zGW>sNk6EAafs8IXT(HOomMqZWUY+s*gXKD0yX&Y|k7h-ax21w$K^u|o`cz0zo>^Kw zITf-lPAqN4dWIXaRU|bB^Y`K_iQdZP(6jj#(fpJS=@GX{;ta>#nmaN&hqGkNmWfs1|v^PLs(bU={k?DkqW8dDwU9lM(6e5DhLi#w2Y4 z_8)sF5T00v`Tv(0;oW@flh!oeOj1vxHDQLC2lC;QT1lU;SPsv7RMBzBM`G-43P^XC zFSqF9kLi$EK14iqh8t*iQWifM?FKpOisGH)TtUz@NGvzo6%u>iqwXxyJ^voHd}#~g zO)F`N9oF}}zfQOLVLh|e2KvC*6CN+$KpT`j;h_8~+Nan9w%~Ird)5Q`ww+85Z@~FY zu9K-jb~HRmH>MMUVAVt(RFHE#7+FK{zc=VoEu&;4X| z&J*>+{IlxZ1@s5R+#W7mdom4H=IaaB9Z7=$wo$@ij%m>8QnXNYNg5p3-Hw|<(?H#^ z9d`-OD{htHl=`H>&gU{*!GJU6Xt z7l>E>B7ndPWYr<8`C)9im zB;R+T99tzv-kpj8TWvYwdj;pSl{E{iGGbuQx(~wn2{CY_pMgjf=_;CLC{jT_wzQ2A z6?vw?+^Q&1u|pcPb7?2`#Pb<@+lgO`(!jS-Mm!$re!5LYd{Q3kc~&ckH77a3>8lE2 zRkWLo&-NAXpM-e;seQ#I82?|9c7Z-Wya?7@yFkxuTLkY5#WbhyB6#O2reY1`>ux-K zpuYsF0PlW+IMo)uq+1h&&bgur?Fpp%Lh^a#284{{vcYD z8S~4Zp9S9yxQ^I2>d9*Z?lS7VC&dPwDdunFE;ZnWV_sS2Py_Bac^|m*M4#*03HxxM zKX2>@?8|aXpIi0_^H@6@a6PNMVc%Q>u78;~9NlKX1!De2z#{_=?qNS6pKGFl8p-gX zLxpJZ;ADtQDG<$giF0G$Y!k_TN`f{U`;d%wD_{@Phur#-1zx+<$;-SfI5|OsY%jZOKP-Wl78+c0wI{eIX>ez*dcvZn3*_r+E6^#qKuUI6!DS0EDKfNz zuaRQ%Q3?G&i5bK>-3c-lXOM@RoZ#lhIP!X$6V{Q&kpMF%=&@}o(T>MC@J>@nMNTM~ zSDKItjPtWSM-Xk3P?&P@notSp*3`cytWi&f;^J+>D<6~K)}#WV9P;t5Qy+R0>7KH) z4^2ltUd_~?TaoTH2i0i<^09Q4wz$iuCD3$JTYRSx=Vzs9h@&e!L1&VNxcIIom|VF) zD|cCeTf2+2e~uNjTP>!2l&zp@p_rB%S%Gp?294V61gG;eXuIXu_xVvA?JaZycN#}C zr(<40&Q#i%i+QTIrqYR6fBnW{1f4hnaTsHKIh#Z=i^<|=ag_R zUjG&P+@X=aP(NCqyDIbr#gBU28Y5r0hW7ne6<=^as>kW!T%D;m^|;9IK2U^lvwHLo zKXTCLDsaBup1t~9N1V?qsMY7TU_Qvf!v$u`Wz!&L*cP)bZPH+TpFzUh!c=gw9W0D5 zNrj^o&BW3<9o~*@CUJ|?;d;*&GW=8;q-<&-%=t7ZJD|epd~$)RKow4}y(`X@QsP#( zae=Z%C2m!-Ggx1{L*AL%f?eVrQa;5NUZ+-&^#@VzR8^2OTd=O`Z8ix<`G2T1n~X-i zNy#RaxRrar`0P}&wbTP!vS^ZrEzuwts7a=^i-E3@^2G6MG>m;APd=97+zz>|rRqrc zjz^cwju#)7%@T>OHAIo&n<*JOm zVb@gb-=gddYBsvua5-;i%+lo)SZ}y=PnX;J*$ce2^td>zk1u!C;|^k-^V9lfVZYAl zAYS%fctwEu7-_QPXl@$hLKo70OB&2!6uFDtlAvqxAZ`=prEkbnZ$NF%;nK-}{%sU)VX$Q|L%E`sYcF@1!4Cy@H z4iZex5-TG+;5sFc)90|>`bs=8zwHg?8bPGi66x9&L>vI~wud$e3s|(jR2qf1I>o}k z_h*D3aqd#f+q1%RhjFgmk@unzNcTO(52A!l>9EGC3-#NK`_^_@s)BrcKQKtFgLGR6 z6vcCqkCTmx;zxFg;J;B(T)HR`l^u+mdY0ZWwu4*jS(-4x4(gu8Q>SX|U!j^npJCkNc1;jXM18{8 zA&9n{TwI1A zmIGebi2glmFL*1||YTe_e7MJm;`guOGRaKaUMF>Yp2*H z!8B2eaP)>On3VEa=%1YhyNAgUr;%B(=Y$+F9GwNHSEAo?9nLS9rpry;hW!sMwYc0c z^e?T};*!wM-4I+xLM*M}8!00Sj@Gd1_9|==&5Sa-VWu@K(L7C0-?oC7SEr~; zgBA2PUP;IMI)VMdm9zr+h|Wu*E}fjfFer)MLq1689BOt_lBYC>=I#lBOpQ^ry)DlF zehzep->=XANxi1S85#S+kYXL~!~|dL1EIqS=J>*7WgV_~o-Yizt#2315i=*?O zCqr0bI91M0hLfFbsmjq5aNXuk*R{v~&vt`F&1N{)uKm~2WUR-~In~ar9`pN@FRPDy z`92ZChVB=R!~Aw^U@4s0EgDo83rMzF3=}??Po^jZz@5>H$u2X0h%k;OnJaKk%|a0g zTjmFXfKy~|nJ*|PUMDhb{Nd=TE5u>DKfIXog8X(7`)hc{(I8QaeQz$Q!2(QOX61r~1dCIE# zBImS7(B0ZYv?n+UBJJ`-Bhc;{1iMA~FL6#(nF4*j#TR1Kded$h*mqAI=&E~5VZgv~ z^jZ6*@ObkoYMSW*g+&>3u(K!hxQO|M{qc7>Zae)xZwVO8e@!3F35C9%^^_~X{L7kG zRK*MXMfLbd`>NnvR=1DD3+r|!xW6VXwV_a@_mnh_!1-O<3rOEZe$dY72pKsK`~Ec_ zAm^U@L*K;P#6LeCVsfg;pyl!KX6r~)9643Mnr(+NIlZ&K_nPEX_BtHqM%*F zPI@=g6MXMx(SwKFA#3e&Iy~3|Eb#mMEyN!>U!O>0J1vFit7E9jwWYAscPcf)IEq8K41h{v7PtuU@xf@%^#erB?weAt=(GU9zMwXKes{`P$Q6&+v0ic2U zZtsIZAS&NZbPKUA@Xby_x&(mwE}yd>PaH&xv5WPr+>23VhC==?epdNid3)7Y@dLNA4}dNv~I7pfl5k#KnfgtK;*@ z%=QtmT|S#Mb@2yHx`PN``D5Ss0%D&Lfc@Q$5VfxO`!%E_W`Pg97e*A z)E|m>y(9ZS2f~+xCgQa^2nvmElf~KzAlIRabaKTxsQa&y&SS72SNj>l_3IOWo$M#n z#XcrILT{K2JeUZq)*7=l3oze&#ST&9<0yDmv{rN*=ddfTdL*)HiiR}(SE5p^m%n>% zEOo^Gl1jf3s$H=Z`|a3Mg*X17w#Jp-#(qV`>k82Sv;<}j*+Szn-=g|RG5s3p4FfJ6 zqL0eFU|;)>G^%$546b@bzb}dakGa?%>wFXh)qbUi;xJEdV=>k2lmN?m7Sd7I;$ivS z?bILVZd(o6N6W);uJOSkbos$J*bvo^j+h$ABDrZX-=hWan4?)#unkIB`DWZ_6p~&M0?KYiZB!H!_5I=;l77H zIPYN=+1~-{CvvRFa1&Q3X>=vW3S43LBRdkAf&QV{wIm(qWcdwvMyzozxyJ1mBvLU5 zR4pHqR~bQI9;8E3>{H=f?-4{_oC>qNw8*gDX`nAwA~W};0(XuPJxN5pOSioA+uKCU zr&bi@>*2n8z)X~K1m~@~bf+07qamYxXIicu1K;HO(LwHL=MNi9Z@2`E z!yBxx2nU(TFR0?~a2OQUK*w&6fY6Qa=m*~j2wwAwI(UV_*3f2praBb-Ek4mBUqWEQ zh>!F{w-Ee&zNHH=PTRDrfijQ)(+-(oFz!+d32qL?elZ_OmS+e=Y=1<2$^s#E+6$6|b!9Gs?_?#~sTcG= zk~2DCFk-`fGVy*O+`IgS^vpv#lwOiRoPVXv)e@mf0PMJYk8C*^05zMhlk)L_;2Qge zyo?G4i+-<&<=_zX4?Q5o!!R!)^9|{U^D<-Rz9&sOAprXx5w-&5>azD_TzDwh#(pBh zaW2w@vCqj=^Kh^c9VTBV`oT!~Qlg0cz*~xoNy?3-aIvY8gvW$IlHq%z(IyOXiW|vH z$8acZc}Vmzt~tKzQ}VV1=Vc0>lBYRg&~r~SIi3^=VWU11!JJ4~AN&>hkA!{NAIOd= zkzlv-J=uqORmMJFNV}9sC_LDP+xu!6)E;KJvd=gNt^F6GKOzPWy&p?EE=dOmgDKRZ z2<^ZV0TjHkuhsr0TJ$^?M(Z`wZ%5+c!rIsL!tQvu<6T@TJ1z~5e>znfjea0+w@i^| zW-3%~Dxm2V?y$<7(iZF=DZ`wko|yl5J;9BZ35?WPNQ2CM zA>172eNsQ@xiy)-Qt*TKF874%#-_s6dnv+nmo#{xuuLcq*mp>woP5A~+@$djNmt(> z_$;m=CEJ4_SEZSFjt+y1&_p`E3%_)a{`k zY^hVDN2d8fi>os2sOSfQPJ`&NVn48znI=lcKEu}Xi$y1tqM&WnB$4+!oa27hL^Lub z3a;TH<#;Kvuw5W-k9vlh_V zaddt*aYnk`cIOZd`8ZprMkI8PdZxf-LHTbayw)ra{QZ z4f!>67Sioqvw}`VK9Fvzj&zqAy`)SGPd7b_bR!?M3Hivs_<+9M9R??^)zHn^Vequy z9olY4(37aUsFq_;G9`e^#f9ezxOTI9+FRN2(*3s zgv?lraznL&>|YiP8{54mOHN{4>gadms6_}o{{D^(ZU}*I9p4h!B%Dk8w22&g843mE zm+0lK*mr-T==?9;pA5e<(Egp+x7R3R`Bnvd4elC?NrF6RL)7YBg%)&>gVDA@1Z zL?=It0>@cz>Dq}=;QFMA_Inu#NyW9)CM*VA0w2=2wJ~5cs-7~bIKLC;r(G1rz-{^a z)HyU78mepPPK+~mn_fpnC!!&{u8x{6i3Z~*b+q_Y1UOxNOsiWWzO{jX^6mEqt&b3MIz8}<48wY2_hBJBH?P0clufZel(Vx}C-T60%LirI1=L!O=eG*MZ(NV9ic8hm)(TJgtv5YZe)=x znS0+Cbc(u?*nD58a#bKl2Kd1`xBet`t{=G9rjz7H7fPM;wkI~!I~3Ekn4O?x9B zNH>i@x{(hWihOMTR!_Si-N*-(Lq67itf$?&hr*MnXVgOr^9OyNQ&+5mO2gw_@VJKK zGn$O^8`6xh4+_@(-^S})@jA)z6g)oT`4j3}^85KCc>c%r@8{Rkn79zoEPhJoU>@RV zyv_%&lN?`$$4|_wr?S&RU?iTOi|2n_-|OKE`Xx97n%!Q|tvKJ}$90n9EqMIARU_Sm zcDv;K7Ciss`oO?O8g&$3Z)>8KEB@c>B*!E0_@Y-$bWPRo=V##gAJ-p^X`qSiLLop6 z`yuwgKAm`7E?y@&9*@T#ENh@GX1|{=!t+0_|8ajL_sbdYR})_M6|d{q{jjjUKi1!; z773j{#zWUt=Y+|p;-ORjD?-`2c&PX5L+4re!R5#O=*+La5dESneTRO74I#4hQ=Kn_ zEvTn#aR_v*Kz^~lCqnr-jlYBX66Rf}zDE5crAXw6?;9a^So9P>C$8TWQ73%gq?PAH ziTF8NANM13@O{O8eTWr)&e9NB@&(^_&Wo<(1AY#^FOj@2eh!g*4!$puyf1zZk$lb% z{v`J&QgT24xbIK#dyB^J?Z@{k;a?V?4-;K6JyD(j^A??;<~0eB{qQ8cvmpU&s*Y2e z)CBmLl}~LRU_a@e1@v3KClpj|p@(Loe;+o}52>C&jpXRYRe_+|r3aOp76>~gcA}NN z0%3A-2kci62$508%)W1ohhwU{%)BGw;fd>Wv%OaFaL=LH>}zB^w7q(qgf}I?i%mEm z6F>i}&vEi*bpkw(I7wFRN`Pk?TZo6ICv+*=MABV6LFK}FlGGmSHRf(0;a5B$vAPp^ zGbj*h+I1u=odRJiVMwrQAoRb^l4;mK*rL9uv???nmQFfVYL^!e!y6eyAlVo+Dk~Gy2c%fNO27L*JtFbRg-_9W*{H=i;oD>4ywz%(PhrlxX=VTE2 zp>}tAMurw)o^JC|5*`r?wZbEWb%=#!dPm3wVJzt1I!X+caIUhMhUaDsW-)W z)vTBdSsV*R3q<5lcr46NxGM^D^n>QD)uQ^oeo(ONtmwIc9~dq_FIpGjhjF-Zr6HRg zAW~y^=`xHfF6?&u=!66ZxV5#@u|?M%V1{5V(Z{~m?rQ7E;n(=ra1A*xn*up8+2j$v zUeL>!EQyPSUV}`CXlE=WmFN&a-yxN8(5N!C;&-@)Vyt z+r{0<+0Uqt?Oi3DvBClL+piW1Y8;?8J3-j%lLO2@njqX-=m2_Ka_I}16mW{pp`)H8 zgO$Z9`mzn?SG~)oofT8y;XXAQRT~Q(4-cc=MR;EV2GW9yvG6`ck;*pUefw<(eRmG+ z$DTXsy-Rm;{$X2yD*qA$v+?y5$=9WstQY8*v zEFMfMzsJJY^JmF+ocFrS`z)D=^VHAHJ4G%(!`E@ANXGgA?6>oZTxkk{{0=WkA?h`Q zk{U=H{;ocHH<6{OA+U67J{gI9UXG`1A?@BI!lJ=jiQ#UX)7+9z^s#>O=4EyIbaEUB zAF5;BMI7{qRicN!#)6Lj5UQ^n2X>~qRO5^vynU=g9|ieAM57A!8TSM4KB~01+z&dg z{vaB2#{qgBe=jo4bb!Trk40YF9N=kro#?_V2k04)OjcmO#-^LeWQH>Kv51K$hQqPH ziBddS+6C=TG5SNk#KNUVDw0Pl; z5`P%!l_Wgx=?_Y}tA&O~{o%06D&eCx0dTiuIoXK$byrqol9NY0a1PQ+GD*=BIwWP0 zjZ-jAKIbJV$2_`huh-~bj)p^rUy;B)(J<_06RF311aN896y9$K8FKz}9H{MRPna8Vkn*}hR1k@Bx~xo;d^!+v zX51I`(g*^DSr0`?wSn;F!)CfEX$cez+C*iKE`i3Jt@Mhq7u-zWMw>c$K^W?-S?STR zWl#ehh5aBiS(a>XJM>-up=a8ig4K9wu`Qa?JsEdO~`vg?Jb3E)F znoBC%M8S#BwWQ!oBskw(Ph1B_!J*1^B*rNU^Ez)4tZ&*!l8}C|6T;hJ!m31){&5y(?AAVM8e3pMBzf!1V~t&F1$M?0p<^g z6FyB&fXMsN!Z%JhXFb82ZrvXaHG4d1b7MG6GxMj;ZV^~797wB%M!C^#^%krv_o_jZXC zCEKAN+1pQaYBcWm&Ca52Q3+5$mWWExzkKW3bz)=@1I{C=NVaMW#Pr7g3{ztuyWb7s z-Sw8njYD+kr%fC+++z*GNRu9RQ zaS>qm?LOJfMZlG~dBWj`P#zVz3Gbau1odVI;od%|pUck|Uip*=FIH@%8oDts;#3~3 zA0Gn>UYlvJ>=+0;zJ-npzK+Xsxc@8^q)MUwb)NH+`Z>{H{=S;%8AgNV(fj0qMl@8$-6NYvV&BizJLp_H><_BF ziz?+{KJmzXbO!d>(dfU2T4`gQr_)1Ps*L_6wTJY&cOcBAPw7egJv6<1N|zf1Lej!& zdJy-6($KnFu?EYS6%Gv=?)N_E@N}NMpSS2P&4^hsz zi^*qE447U%MH(?b$Z^R@qO~su6w?xknTjjy(~Bp`16_emj3b#=F4(s)fjoV|WBO7+BaBIft_uMyLlH~8H2K1rt>M}K9&DXO_C2I|ge(3{u~TF*(BKEQm@l3)$$ zW#k2Y1*$Yn$qQr@l_}#A3Vj9*qrFKe&^#r2SOJK2CA-V0h1pBe|6?XK-xVv3Pq2+q)pAcMTCdnU@JMhA6 z_G>R_INpVxHjIQhg>tmSClZ3D_oX{JMZ%%S^0YVF)#;b^(1T`iFxGS*?P(PUW$*UW z$AjabPw{@*0r$HCne8-6#|Or{?4;>fXOaA-fX=<^4cgoC>5B{4@0)4Ehk98?z_e#% zn6?P*aMg+F%ydBLh^wwlH%1nr3$A)FJsCNK?zrmB^kI4-_GaXne#`)-FJeEYKQoX~ zWE2nwGJ_Z;MwuCmsKg9mRG4ARP(&3*l~HFj88t+8MuX8|bQvuKZCn{J!x=pUeOwtc zCX6A15w1ouX3Pl0k&G!r7+{2mgy9%-W(+e5(VQ90STN(6v4|GTIA$U`moQ$8FSC^KLG)$(m;fe-@kb0`0+|pdj0r{zVM3V* zCW;A1j9?;}WlSs+jSz#Y1SXM*Lx{&!3X{qtAtd8!Ig`PpA*ADK1+$XLM99KbHnWCV zg_zB(W^$QzOb%i$vzEzYHZtoG^Oz0HW@an132`&Ch1tezXYvuZF$K&{W;e3~aVN8j z*~9E(3K91(dzoV90J9&V2v>)g!^}a15?mc)N|_@FM{y-)jx!-u7<|WgB(1@!y%v%K z4rB+hN~|(F7*UBG!m6;t*rA9jtSYO)YO-nw>bNpyO;{}iZB_?Cm(@eiXAKaBvxW#p zc!e>Zmz>q(j~ntwbZ~9Tnz17gM&gQNffXVUT$!_D*ine)>}b}49nX$Mv|z`v6WPh^ z1jLE#Bz7u0ot=U>m7T`UWM{E65G-*umz~GXMwo*uE7qEwkFWq&i&$HBA%YFA>{$oa z4q-8_oLCpu5z&ctW?5d&w82{{K=~q(GcvrK>B!5O&b*xI!poU%{~%}Nc{$UImoxo& zIn$SyGlO_Jqrl6VA-tR!%*z>7Ud{~V<%|X|XViE(qs_}1U0%*e%e|kWr#mnAdj3+Zng*#IVX{B4hW98l1Mif z1Xo;1q?-qVCok`Ocu5z)OSz@IlndddTo5niB6ukmhEgsPVex%RuLL>3G_?+KJ=@9i#C7NXIzI>lmkb9pfyoW1Rm#(lM%e9pl#D ztYdsY9piUhLZU-_{6oi(Xcb@n&^=gQmuU0Txk@kFqYRDChs&L|B3=KXxhWgW!uRe>Q*(WP{jXHiQjj!`N^(f{kRO z*l0F}UBJH-|Ceo?W|Tee5G1zD&&Z#4ye%Wc+cF(_Tc$H_%XHywnQpu-^H=1LDsRgSmUBJx|2KaAC~w{TK5kJ^8R6e-aj15`-g*h|M0Jt zT?Oa^UXLL04{ty}@g@X`e|QV}iSrR8{^0^VFFCu3Kc3GY*?{ZTo|Au7yug(A+x+f5 zlf({w#0w;`gAoXlc!4Qe`vwSx=v6buW0E71=mO#WHowOUEO=kd?{Nfk-iPyhe1Y&$ z1q(jTV9rM#2(B&u@Ywuyf5pF>y)cK5iOl1Dgn#y#|GQ!$F?>uUmXC?V^D&V`J|>dP z$3#;9X-wo-*b7B`Oyt17G$!&Z?1j&~zv3ew6ZyvbE57it66x5-|E9el9s7{PJATAI z{%bG%qrXDhe=Z%r_!&9en*Urne(^JLTWO!hze)~E-v?>`d24#hpN(Hj>n*LxYH7Vi zI)2@nZ@D%7L=s2%5igL|PkzR?(^~vm+PB=AZ^w&|UrXXTUKr1j#IGgM9Y2icNaEMO z>nH!W`o~(^@BTM)0Dkp;C(-ME=y*Sq10cQMmGC(Lhxr_UqkIlP=}+eXT;g*8F7P=3 z<$Mmn6+Q>xI-dh@?VsiVNbh&Gd=9{)f5-u-=W_sF{L>r&Y5&-N;(lku`{zygSiiJ? zjFXD#|JOhE^YOvfWVrNR_ABCpt;z78kw4Nh{IBF7N!ysxIY`p-=Vx+|{;v4oU-6Gg z=OFzR|Cn?R(!Ya$Oj_S=E!XJJ`sbDS_~7rkM$-QIpV7Ca<U*3p9}hu&jtN=h*SL8 zoX?-}d;I@d4olnn(teND?0xAt#n1RXr0xBmi>3Z+@&^C^W{>}?9&i5>x%WS#5C2yV|GoKg(sEeZ@7kLGxivW~T{k4{f0mZR(z>E_KEJfz zwKbbv;+Osr2bA`^N^-M*HSXn zKDU-1F1_FVUHiq)?TLSXe&e65;cD%>_$&Ss=^8F+z5Qouxc;vFqBZ~RpUp4&clMwB z&l;}(<`?}pzv%zF&QyB8XiY}_&;8;*TW@cT$6w*cmfjP8Mh>@@H}Y5fC(?UjYyOkg z_G7C^)y)3cJoCTHe`3kk z#?InvWB*g?T>dV7^3Ur3(s>usdTD>DdfwLR7Nzxn>AnH~Q`Y@!C~S z(z%Fh`Th(!e18T>&h3x-pl0}sCbLhx-ap;c6 zB`Z)~3^YRFN`Qr-w5qVro?^%B~ z_G;WpZKiZ>lsR9U`Sbl8EU^Z22BM^I!vd_$oR28!=P(ENve}4|J`a|7MskH@Pn(0U zBuD4qYe{X?k3J8Juzu6-k3J8Qo)3-)l0Fa4c*P^?RhVH;b3u$|q3u#??|u$wJJ*n?N>#q*N0JNV;;{E-4&7qJJ}{fI?uF~U6vKyh`7J`nGIdxyP+c$=+e@3HsUyNLJL8n%{w!9GB&XP+ZJ zWuGC|u}=^mv5ygJ*@uYr{1tWlxmx~c9Ug0DKd=o5jcgObOZFAQYxWJoTlO8od%U6< z&r8m};*Y=Mk2K->6WhXmMEt~lX1}rD*)IrRaU~G65nz#l02hMx0vSPDgm$>I(D_wFNqengT6Eb%6$=K7WNae@>l0 zs*T4u0SF8cj0DCACV~+NBL$`iW&$As!7DgCFF8AcKQ82t7~|SpFh(#6(OfWEFitRD zFc!fASCa&j1rrb^;%b^;x?l>zR9wvz%o5B%_)KHWp;U@ONTNb2 zN|97Y2$^%_C}b)`<~d_Yrp&XG4o)&pNv1@pBt(?4QmIsuJfGh_$9nH)^_=(B>sjj= z*704RwZ8Xt?X~=~-D}zR-q*JVu8w=m)k3v#^<4v37uCZxa*w-)(8x7*@$L!N1may& zm*Ads%^<-wcP(5i_Y|~nEnREZ);$faT^rZlb#?8ai+diPbDg21>jclb4$$5`16{(3 zj-l5+R69}|;0C&GsJrWddb(byx9fxYx_+oXD+bVyy1hcZU#RrJ4{}4?3oytHcEj9@ zZYT_M!`;hnqRie+$(4l?o~J5jYZ>dliXxC0ZqhBbJN`vG!-|?&2}@;OkARy z>*heBd(9=e`R;W{a`RlWTj&-*vU|fVa!cHsu*fZT%iKD*6xO=8VU2qWR=L%%!mWg5 zZaJ(CD^`WxvQS+`ZJT@Fy@S@f4QQj=gf_c((H8d}+RBP;^rP;kP=7B}HsH6rkK6~a z-F@gjaXa0|Xa{b$+v7e(yKwv5=k7DK7x#tx((OkFaEILycMu)IedWG(N6|6dard43 z29CRL-3j-j`yNiXAKXdzi~9*qx}V)CciR05r`&Juj63UohcoUE{!4d>WPr?aF zz{G=yLPl|rIjpeI%NVLgEstC-Sx{EVhAx%tD2L=kmq{*^n-zKJN8Rk9o-0(c;q%H> zas}j-E9DxwR<1_*aM#K8k{=bo6_y*MAS#3_CO1kER1{Z2ZkFQcCfqG@tCU2gaHXZJ z+yM;jeAC(m3F8-u9G|`9Z*Ny^U_s1qb|4} z(o?#j?zrC4S9(Ej=_CDRp!9?OGC&5&5P1Ox$zT~KFUn9DCc|ZfjF*>SoV*HSWGsx5 z(J)e8ff4dDj0-D9h2Drz9Yt-H%$5mgqD(@QWeS=q)6jI8fo8H|7X7F@CDdnx$|QWE z%#}HiD6dJ9%$L_8N#@BLvQQSFWZYs|B5$HaxaG1!mZD|2)v`ubqE)!JWu3f**5WqE zMtKLV$8DA^vI#cJyRuc@m-k?+Y?JNsk$eE#8SIkXa3HMM8+yA!buYDVNTWZ7yI3#LOeixh zt6r*EAggB69D12%ha8$ybL-`r3vz27&8t`G6_8i2)O>oaUJd#58ZDqVYJMoH#oz`l z0)@0NT(1S8fL;eh!-_(oS0GdiQ7fZmwK%#-OQ4&zBr2u1pj-7eRGJlK=ttd>p?+Ja zl)#tMJN0%br*~)ty<6`><#G4weR>b7h`V2_XeCq`_nM^NE>UsKA}w@UYlxyKB>(hL7Qs}eO8}>_WBI8 z)ppQY+dwOQ8d_*eXdhOz4!stk+L~Gq?WrA5N9}~3)6S@iK99O;H`JXKJ?KZ>&Y|8d zR65~%YhUdJy|s@H(1F?y^~Vj?A^HLugd46e>QFQc_p*-Em(U2@XdR=kpi#J2b-a#6 z<8TvovQB`BI!UMMbe#fIb(+r9**XJe>MTvvxjF|D^)*e>`T9B}={!x=6}kYH>2g@2 zOJR{NhK2ejBh}s6-s4LMbU5(c0TWGDmjn?TqXgw=7(2u%rh59?8 zvKqfxx9BF=tncbJeP7>0TX7%iNBRNUj{8J+>c?mYZny5yPth*iKK)!jLwj*w=$E=5 z9l#yZBYF@H>0v#lU+YmgreEoC{Z7Au!`CIH5o2N&Q8Cf|L5Qo>H-2A)`4s z%TUd;dPe_%)A~D{(%&GXMJvu|)H@ZbXQ*YfOO1b|X6DgFmI-CHi_s;P1!ZMLHu_OF zQ>bSN6_3whmsxhmVL2_2U2eHhZrqi2m0f}I;;yl4?P`<{cb#2t`B4E}VY|T!qC&W0 zcB2(RMR7OT%~l+4vJzIxZnct7%5JgJR@QEV(pJXG*`0Pfl(RdmyxnbgL3yiS740Fr z2ddhGP{kgA%6328XO*C$-3wL2iprr^F;pv4t7DJZ!zj+Gp+~Gbs$n(JqgD&mWOwuMZ;kD7Yls@*n%WcA1jXZ;6HeU>CE!|GD|-sHz_qcq_B3jZ zd&Zu%cBnnBqdjLGprduNF4omLLl=AAx?4}{2HmZP^|rp&3wm20>u&?CAN02YHpoWW z3oyc7h8OK67-qv^hz*57HW)^P6~jVrP^b>0HpwR2D`=FBMq_L&8fUMf@iqZXWW^-< zQFm;pPY9LK_>3`g_R`NMQ|7^@pHGhb(`>g3IiHNZdypLSRyzHB@^pAxoz^Tk`@308 z>F1MiOi}rFIG=1CX3e$z)2z9_dOkTIoKN;kKcD;$Kc74k&L_`a@cCq(a6XwU{e1F2 z{CskFIG-GP!RM1R!};Xw^z+H|^U3t{$@KHd|GM+Zli_^wmkU0h%offkv!tI-rk_uy zpHHTrPo|$w{uiB3PPOSa1*Y0Gn`yIc2F$cs_L|MLIVce~&*t0fC<*t5EwlwF8MoM$ z*qdk(Zn>?nrDz#$wXLz0Xcca)t+Tgat-WpQZKJ&d>urN=wk@^^Hru|@w&AHuG%Vn^t057iyi4%-p?4DGdj=yThT4%ipyOFM`T zvEnfOsJlPZ4~EJ<{4x95j>0kf%D%Pl>>G3(_k;at-=h<_pY0d>37y3KW~c2}bPD%} zoweW58JzRtGoXy#@$g&_p9Qk|Y(9s-%x8xjKBv#^FZa11 zx6kAA`s@7_P{3aY*ZTaB&tC&q`KuwXzY+?B75PFhZ>Z*@R>I%x3!*~4FuK7PK}CHr zbfYhhZem3V`cbz?s22~F!uV4DR$mfI`CEJ$U)JA-O5^VEclz5=Ia~#Qx4#RO$KC7i z^Y@^Nxchw-UkO#lJ?J0u51^{JIRA)$7~*_2U&BA@t3wT6)7SQo`C3rh*YWjy178>F z`TD+*f7~~OM!vC+_pN*rXyIGJlm014@Xg@~-wfh?Q)m%ZB!pgks3uVB7xn-)*^l%up%J*zevE$wjlzxd`{bWA@Ci+Q! zs-Nzsz*IlY&-AnX44CO>`9#0a&w*tB2F&*hAj!{zx&C!X^shm3SdkQZiJ_WAZM9$H z-$aZ2Vzk6BMa%qhw8F1Mt5~s`e$-tW>MKKKF+TRbdh9#XOd&BUB_Ad`sZ7~IN?rDl zPnRn-BPRB3>0iBDo{~m)b7~S@G*`AX6JyK%)8@X$zTY{QPE~@esvAQN-k<;8lu5Qx z3RIMS_m6X+sxZwsO1?`;gNh>wDlVi#Jwg&hHHcE7YBAZhX2^o771HkNge<7KAqT2{ zNWp8Ep-F~#lJBAkcuhhQMAHmSGemh%(KO@cD9VFs#k9a^vT>9L)s|_2QSx2ekbL)l zXF~Plj&%>{NitMl5@-5AbhA2Tvg@F5<2q&HYk&IvU`SXokjbwD`4m+LQX5WYO-d5p zNOJH-k%Bjd47_n9;Ehk6ZXC@vo|-z>cqTK9XOnrCNaEdG^6rvIyPKbybhj`y8%JX?6_RpH_ zkTOX-nv^{mq8&FqOwpdrUW<|zqg|J>=jO5Bk|5f7$subo_BXPWbj6jVDz1PiUomC> zt>ZTS+Ys%-jqJZDT`}5;TbQO8r7K3e@qPATl&%=<$mnMNxm)_tevEGE?<8F@N>tp9 z_TWBers6(0K(68eKJAACd`|24;MBg_I#iGZ zujrj-5mc0H(CEGYxopr9)S^o9|0O3h_Pu}fP5J-L3H_`4Hu{Ea623W`hHuDo89K3Z z;Q#8rO>0J9TKhKoK0Nn6B{nBCt#>GYH77Loci!{K361veN?65iKA#zV+tQd38tvY5 z?@eN7^zDtw(24f${?z?^DCC452|1z1E?`FJ`TcGi<$+!j-j8Gp89IN?1C8E{oO?eK zrGe%RuSc#5?@F#teLqqlW=3D3n755ZLLz9fkO-PqhF9#2zVn$8S~+8tjFq5r#`{UG oh;lzuGQ8qqazAUF$J@rnY2bGXrKQn9Qo7;O=?Ns4Z)!y{#-?DBd8ylPXV{C0^=diJ9(4tA> zVNRjlyN5+bM@B_E1#}qZ6cHL8<`m!*)F-NY|1eiKH?J-k(A~3(dl$DZ10tjQ#Po@b zh<0*u>K++BATlB>BBtfg0mS9)?%`wnI4B~J>)8F6E&5i!Y&E40fnvbiuw}+pbFa5{g!^6|ZvlBHDI>czg z%hk)@&DYD%&(Fid-_zI4-Nnb%-Ob0{%g4{%!^_jp-^bg<-QCs8-P6O%!_&*n&Cl1* zpV(u}qB*s$6XZz}cN^5RXIND0K4Gy=0dDkvhsK08>De9%~eLQ{rJ^j7^(#O-))6dt}ot#DS=i%n# z?d3wv`uTc#`%x1f-X5Or{+=$ruH<76Z!dpe@+-wTn812SQYicTNQ9+(7rC%R6BrTX z>*4L^<>y7?%$qd+Gb;UQaQV7>(zqgP(2z9fJbcJV-t;RCKCgdRz}$pCsZK`op%Llk zZH`Ndbq{w>UoT%bA~uJrpLyg`D_+J(_xVQ@{4XZ>r?`|ifn03T6!pKvrk@Y^MJ6=; zXo49*dW1%s=Z;}cy}}~GqC#ULqiFJs?AF(#SO1uv6y1ZvqM~WCq#r$8-JC{bOh6WM zZPT#Oh(R%3+}w@PKoe5Ku!vqUy`2Kcre0n~C;ynVEcpKMa~HS22GU>CT1G2g6zTsw zuKw(&MNCwm9yDzm|2QTzs+TbddQ!l7K*T{GX7S9^r%WHv?ceOj<6rCI?ncq}r|=oG zwx2hJq^10xhRwo5W5S~P7&A4jYPDO)gj?}L=NiKKdc4$riW8N zPf{Ta98$M#P>`SB-%`PyME5cN%j5r>{AQ~~_okHtypgf7_@_OFp<7g+aN1-HPNxrz zp-AmED8~4|!m~jZM+il+jctBgP`AUF#Z=KH*`}G@i{9Ms#sKdJ${rWp>A(>2vSE4C!g3Y#dy|HVYIB@TKSns~B_@v( zc5}*`nk`S&PFz{T4{krf`h3nte94_tQJMLx^lb2l49KyEnav!hp zRnvZIYpU-QwND)t*>>&KJdQ3EDoj}uR5{OwXPWv3=$&)sbe<1i^jRAr7V_!pZQg3dXKi5gTK@WL zHW9t{r#9^Pdci9%5vU8w{BzDbt^VZSMWc_u3zXS!>prvmZ?3G+_V}DI%O754jfT3Q z3}{=lA*fBt@jCa_J^9d*RM(kd6yecHF?PF_m{_JwVJ z4=SNg`#ykw{X{kb8M0q9xy>N0MdExj{(Z;~_4&BP+GO{MqDY4#noG?U zX8e0;w()h^B&{Kf8} z;`)6TJ+1P3erfD*VOP4M{@b^0+;?KMXp*a_z9wxkZ}V)RK$+22XcN?B4auJ|W>FWE zc{#~nF?}qf4cB?63j9uxEI&Zws&R})bp21J3%(TLpC4!RM*~7`~*?_Xpc^6YbkzqQ2ZRLaagk_Ut}R)pv}X`{)R5^ z$o^%>{)WtvWPkJp%8b51o1-phbMLa1^>xqp@Z0qpidnDA>t8Z;1BJ) zLn^yV@rk;i%mFuEYjY?*7gBuobjYmNjPK6p?B1w--g#B4O1O6U1=@vmkF>U>dh-YK z7iv%X+30-;2NnBWLmkm~=p)n}Wkz41%~2P$dFP%#w9Pb@d(&7}-@n$D(wJ>eV-|gZ zGOs3G8h(Gy4Egi+x6y~Zs$`ZQb-^~#R%jFK3)@6np-r$a*W#*n_`m^vvR8ukqw7yI z&fYp%bA0ty3$nSu^EzzTvTizQaju%7kFWP)i@;2@6 zmf_-kqk^Ws@msanYH_0Uk~|i^sPeF&-h}oH?P$+{x}%P{R~6Nby~HTmOQ4Ps&+YUk zjpvHXhboy$6w9n%ahogRRc8y`uP&>q#~(ebLmxu@4OLaBrT?^|6&cEUw zyQ`We{pzf*_Ik*x%`0z0pH?9M8oC?)eL?;;bTs^nzD6C<*XUE!9erANd3Aj+?fn+g z-j9{9tY@Myfrt7VU6>diiy*jZ{?+;McD!-+tZgd<+nt!^-wO; z;+7w^o@uMaroA~$D1(n`qp#bNpVzd@XIlO3gEoDcFBju;TFAC>dma5y@?^2a^O$)4 zDo|fJcDy)}kSHF~F4NIyJeyqK|97b~0F>Qkdvh<#^=iaUkQY26Rb z7Nfol7Z3CsT3W&^QQs>@bbaten>9Z{RO=cg0xR3-k7ITUn>=qUbU~TVtBn}DT#Q-yQaoRgs^xc25-pNH3-p~A>HF?suvuT!9d*1w`riLi z+pO=@&#Sb3oiB60upcbs{(Q~j;Zff1mY>?hZiyC>`3gTW##a5|vPv7Ac85=D(TJf> z>rD}Q^+vbL8HXZK5H#}jXv!%@`_ew%?xqqL5OIZ`>s}Q*$gr1KpP8R zqmJln^eO6&K0QnRjelHUZohAQ9_pEL9FZ#OHgk{>xAX{;0zzc@DqmId0leE%( z(zwkAe>N}IKJ7=(_={^Y} zhnQsX?ST7Oq-pjfL7N$$AjV%zQgPpo-yKMUvY`yfn;Pz?XW0MPmz?^WJsri01RoQA z%i}jb(ik{m&P>tlKy}lbY7Y9Kyzye`PFD+Fq$xeqQ=jd)Q2dg;m>PIvRsV=7D)&K(jgc#+2F%NQ@yukJUuY0y8an{2`RuV^rCQRaT# zerkrChHUoPQq0(p8QU>vGWx>bF}7!yRn0Vp{78>9C$D`7~9JaW%?`rkr!!DHk1K*am*$KCTR&1LdDB1LwNh8OEhEd z9ZPF#Li5>L#v0UvXq219M2oFMcreiz>+cbw@uhj`=+h#?n3u*8eUkeyID0`}q`}yGemTfY zZ=Bm8FVdiFC;OCZ!=V#`c z?O?1aKZ+%2Nzoo=nu*lTg$u>RTWV(&(Yp@vG}EKL2U^zF4f`9m-S1ULw}~DmrWJX? z9PAqCy{Zlu&f6NRNYlP^O`ZRoC7QpB<3A#6>0#f;(_HbBAurOPt(pxB)>Cgz7A3a% zsmO~oC>zRvyg28$hjHDom7$|k&RTkgO+G%Tr)StIKha!Hw?h%4@kqDBjfoBPlN3LO z-JTJBhTU*I-A40C%xg_V9k^z(Z^S(Y()1wuZoM{%#}5meaG#9(5TwDehWj++MH-Y1 zWk6mWkI0MPO85S0XRcU|-lK^5#p+sr#(2!_T!?!rKvE7PdI>^~3}f&r~TBJShGo2?7S!r=Lg}g}9^6hr*-pUQ!=KEBR=R$a{g)}G|%7DD%H|)`z>dg`( zW=#>B$-k2WH;E28CRv=@Jgg2ZZ6TomqcqHQ(aHMZwNXIO-mEp^#qd$xd<1wxa4ycM5k#tr8W! zmb0M2xo#Dm)o&QLM09ysQAJ*)!MSwccQ0KXu}G}c>^brx4a$ZxATQb<<o4BMH-Y1Wk6ok5p{3)u8jUWox5glRL1nHD4?r!?s}fiU6BUYi&t3-=r!rA z@-dxNA}`WlU)Uz{qJ40#$amXb|AWT6aZhpTmc4ndFwXgr25pr#uacSGpg~@wvFHoh zL|)u?;oj_Rzopu>l{P||b4)m2S*s1}YbzGKPqf&-%`3TBdv$y|H})iH0~591!jJI{ z9>)aoB2D4-d+4rw6IbR;5xYNc(yoZByy}WX3tpr_*-!@L9lSrMuKUgAO}?mFgY@;< zSTEwqo>l0s#F%gE5S~4*J2&QAq-j5Z>znV*;3d~i(DKi(WTr9bkr!#OFKiQeai5Rh z0(cJ7^VvKtcC3vk8QoY#8eHq~tOj|J2KN$pmW8}XgR-Fv$h(2o3-@7V%x4a3=`7;c zmc`6xL3oynXS_(`aKc;P626GfX>7EI#^`H|qHvMl-QsK?&%KcbWkVV8j2ium z{=&O0yz@dDcjpaS`(AVTrXdq7?h26?X|OMB6YuOAmh{(+m`|pdKTP_*Z`y*7%r!~i zT|C~=Bh3M#SKn7)?-H(Ayd^+hr1`B!J^fSqc*J)F_znSSP&SkSdGWggzfH7wp&N6; zJem{Q2iDay<_e_2_R~Jn*$9pI$~4}Q7imzo)_d#d)6(Y?@qkDv1bNuwqbO%wK?jVrHf#wspxOZ&Rvce|S%Tafxy8th`3qW3^!PuVL!&Mh_ zmvM;hGLRQ(P&SkSd9nR5O*L(G`uKWr{E0Sk)-1l!yNqewN;~~fKqzFR#m*q+ zWIi+Y=g5mR+Ss~!gHzLZrTU5L8rlzRP3+B${W41%8$HAgR-Fv7QA#uWSj#SXGGp~K55{i zbUxYhT5WyFi|;)A`v`5%#Rg{l!QM_o8njQ(>p}X{tp~Z%e~<+)(x7cC{2pwkcVF;B zMP8)w0ohOn-@(bF? z^m}CFMH-Y1Wk6oE=Ng)yjWa#ttoR(A31_@L$Q$l!#;@qj1JdAHW6&G#D2%rg$cr@S zi+y1}W_sh@1@a;d%7!u^FV1hc*4WSbsb#!d^NIPX*`>dcLmJ$heY|x{Gv2Bdptows zi!`|RD}HycmhsjOd65QXLm7~FIh_ISr}NcXbOwm=miRqb&)8FKbFHJlr8}=*>COvj zFjigSf_3BWuP@#GAurNAeHWnrac@0uTV^^h5L-((?hUv0_`#4DX;3zl0eNwbMSbz^ z74Kw`25p6R-^hzJ7~6QSjl4*MvY`yfi}CDF_iIM{8}}pl76sp^APvrq_!bCxkp{;C zzVks|q(RwG2INKm;(Uv5`S6V&(%|_UzKuj)q`}z0caO-6G$-3%7DB$zVQ3bqsCm#*bf+cfJ@bvn{gEF4UooS?=gSAX6y(2X?;gtq`|TIN3|7Z zdSn044tS9UWkVT|7w?SlE@@fnTFrQCagg3xJn6brGv1v1oOMhf4W1{r%C=cE-rgLb zw>QX(G-3%7DB`gLjuNpKZ}5zY7+(XE~bQTv%*=_dfFM zYk@QvOV^10(LfJzhv<TboIr6Ix$H zO!6>IYjIZV-62?<&s@QTG{*SKI4fvJ^f`1dGd=Pm4eBzQ+FaetQ(T}nkr!!DHk1K* zQ679turs)tZpdu3UozO?FI|uZ=c|oGZ^&clh`dOHx)h`~GxSAXq(RwG2INI~@UAd> zj(X;|i-v#4f3K+0sx;d?CmU~ri*!shW8;l9u8)aCW3+G3V86CRZ~Si1 z<9!X@rB*LhNYBWVT2Qr+zAioI3u(~TE{^VcS;}4NO}R_Ri!>NZdFK1+u9Q1gfpW)? z7imy7lmU5hjNsT=IA^Q&p;Wwx?Yp1nXtGJ0?hq@EYx_9T%uGG5on1OnJUr$qUd5@J z=kIZ1^`rsYBRYi)G{sqp&_gzOpq(^t<&_B=}VL|&w+ zJH<^m{Pm3dwa~*yH~h7O{Dr(ogR-Fv$cyyYSL#k5-LUy=viXgVUb^9nFXRiP!TIg^ z_5j_m=dWZ>&3}m`N?0%i!>-3%7DCh|BLz_Ushdjx_`E~z3&8H{h*-U zMPDpDe^8DCyeY!=M^LWEua~C_$LaP0d68x@%~2I@%@M8ZR~I=bPsFABTrqy1y+B^1 zLD^6SJ>%{1!MK8Ya{3!=q(NI1ee9xlp||K`=q)<(A`Q-6dlL)lbJE|j zBQMgRY$yZr;(UVocA#8T!{$z8^Bzg5S}XF!PVxoPVEdIQkF`R&J&_k_aO{7jT-~wh z{z6`)LD^6Slc*fixayaBwvBQ*?^7;ka;U92N3|2>s3HxX73V8?PRmqfJ-<%5x5$e$=!@WX zwtCL=yj|o)8k7xXKwh*b-o=;czDcXQBa8TQeIIxIb*pwtzsG~x?B_^Rl=d^@I+QW5 zzrDZg)5_<}F4VIH1o9#c>OL(})dr9M!26CXAdnYnP&SkSd66FbsxV2>5}Rcgqx29_ z?vbvIeDHyP=+RIh4Zg4VW7#C7T~LG2QURE%F7@;P{$Z!$%)Q_UuOXL|&vxrTx;xbbqb-=&Kw4 z+C~0CUZg?UPzK~hdhF}yPcJ>5Z2pF9et3hAZunvt`2uNhuBcJmUq4Isyg~LvUZlah z_5SMu^bCI?FVdiFC$cDco?}}4? zx}kdm(tRyqLtg`<{Ttf`>KQh~eQaC$-LR)&Ta+Ka+~o+-l6t$DDnvpMdoTur3PL7?~bcSfAZ+j5xfxsztq&)zP(dBUgF=A~y^1HJPE1@6yI9eps+NC+~sBXqKl~!maidNT)f0!W3 zQ+}I4W8fXxw`)&^r)mbhK~w3?TQfFz4V*#qZTm?xHh5j$ebX}PqI_6-OUtP7QtjDo zEu+SZU5W2nhAvGb7igy`mv9W_PB!bcRO?JRckM4c3JfOv=&P@|L)b(#l_aNzl^r=J}$o zzJJ?zQL(438sS}s=8f87IJH^#j7iVi_s_lr;fm>P_9mJq)R#enxrdmOi20|OkBPa= znB$E3>{x#Q>k?oM2dsgB^;NL$3f7##`Z`-9 ze68`Nn}zpwd+qG_cO~p z^@Hg;KFjQ&C$(8DN>M$5f?td4FMH1y1E`*W-xYg(KjqyopuGFuzd7m~NOz+q#uUP5 zNq3_r#^jPtW^DXk>drc?w)a=Qwf9=_*0fUV)GUpAz1PKwD=Rg(H&^&c%5koGWuq3d z-J!cp!Us!^bFk(WfFRZO_X@18@fA^?h#pobpLdl zJXNae2RHZP4=9H{_qgJEGs;h&Ncri*KNQo8Q(n0*<&}5ZP+1>FIq%ac=Y8qzO#0e{ zcz*wKY15?x@3fJ37xFzj%9!fp&#eEeZjs=+=%n| z3ng`z5q8{&^SsMF^{J)0a3juR`D-m#`tOaZ)3`{d4{dTn^Q3l+m}!)BP}9@tN8hcd zfAe|IQ!5tN*7d7x#=TF4Y7Z|3=@)XJ=X)=8)GB(`GvmnaMYM>mx3rA91j(PjX&Lna zsylzz_NCWqn0M#4mQkzW@wV!EM%|AiG>2!@tT1p!Es-Y0tDCV=OQcAncUrIXx=d-E z$tLMFl!l56T1Ks;e$!8At<&o`eT=NF8+pw`*ZZ>u{`GVt#?DfVRee)eZ$Y`8z&aaPe*tS+i(On>oLE=Uw0PDxEwoi_anQE9X(r)bd;H9JAkplr;wMsx zX8oGNdY^O}Wpf36H1Qh0?<0JGXpDAN6HUK#Ua!Z2dM}c}=yym$khx~aCF(bduu&hz zz}1PSDajT~G+k|zG-J&j*otB-g6?@~El#7g_;_y0{iHS5kJj8jd{$|Wv=%%1HfC5i z0P7@R{RFHXfweoZrU%w+X`!5Vf`_zrG~Zpu%;i@OT>DEepkO}8MVuHXSu5xHNnPFO|WyTZ)nq~K3ff{ z&({CU7cDWpK3hkJU0O=1w|v6TGrVE#9a@Dcc4ErzRK9dtvX=c(7GWD+9_=G11}>t4FiR}SiH zZJ@7iv^kgBoaOAN8+{4tYtPi3TItV0BJ_K#SWme4uYP9C`tQ>Q+6IXAHtj@R!iC~% znQ@(6yNITi7(F7Bs6qJmECFI1;beLbvo?Vj|K zP#2UL*L0Kt>ug{RQj`sCg75Tj&w#eVya~+9z&$PQb+Jv<1!cy*Fc$;+!ZvZAj51)} z2kxs;Hq67tJYW3o!|y?C6JzJxZ%_a3;PL0{lIQhaxc`)%BZqs-_Fv^na6Hpe;eHZ*VaT6R zTM2bRnen_DeT470@cRgThd#o0tZRX1ymZ2%&Wz`T|9rrb7|BOeTP0m-O)!_cMk9G(08aK`VM`Bx}%Qh zJM?kw(4t<2Wpbasv8PD+1wpeEd>)7BO6W%>xo2U!QjD2D48te<( z#Ct200qf-8Jr~M`G}srmiM;sk0^fDu*$bY@;5%D<$BSo!cxH%sJ(xFyXV-Y9jc-3t zHk1L+f3U6~)-A-lX1s&Ox520j%8cikn2UtEpv-vQjyA-1FL-{1w#8bAs0+%B_v2`D zd>4)9vFHo5Ip$&EeF6Fc^Wrh@9`Cd8o(pwE-=U9Cck~g~jl}l==sVOAeTP0m-BCyM z9r_4$$J~F^9d*PzJCqrHhdx4G(1uu-z~W92?h3I^lmpbT!aHlc%f>cQ7nB+M!rD{V z7q*G_;3xyuxx#yMlnrUHFKiQe@!b@@%fhoiZBndRif>o&O$)y5M_o{6ydS|_LevFi#``<8A--F~^Ki5+)=EWPP-c8@ zgEq&!2E5-vU!ct~j}q@6(HB_P0&8yI{W#v6qmJl1^bzWgKEnF3_`V2zhdQF~&_}2{ z>WIEWAEEA8y90Gc9q|nS%8b54AE7R2L#!);Zw%13SmzDv$l)6pd>eypqAn;i_Jy_M zurF*A-_@WDSf|e79S*$DK^p7}+eBV`dx>u{@oot3j4;my^Jwty67MuIuNL!m@opXO z-0^KE%7!xF{S?*>#=6A#77pLYVQvoUf->WME9L^DE+{j;2S6L*`&GPOL)&7lW7Gv@ z#`k+@bIeP^`(pG3+8pzs@jV0j0_)OX-5Y#wgYR%qNAw-~2z5svVO?l^uZX@w9np8_ zBh(#rMBky0P+#unc~|gd=rIrC$O#szRklodsrtH>(Js` zWqiYoxgMws%8c(}u+BgJ9RYlMk8koZ*A;a~9r1k^*49AXQAd1#h_!H0chnKzW228S z{{`RwpzrW+8KCZ{Bjy*NPcbhT-?O2w(Wh941m9btudyy1)}6!m!1zuWV*qOu<9l_C z4YUcy2F3u|3S$8OP6Xy(U~HgGFg7p-&{k*@j17zdv=!FMLtCLu@QpOu1Y-$f25p5p zVr*axpzi1+tow&=w$XP;gSw#1$cwpGn3IKX)$k1)=5b@5IKHLCHzU`_<)f}t)bGrq6GzZHUiLj-eqFvkaT)lqlU5#NhqZ5-4cb;S3~So<1v zM;$TO1AT<~armAPeTRSR1a(IpF<%LNih2F`J{EnAKE*mh_1pv>rN z^eO6sHpe=gnA3s2KpK<{Wk6o6i;i{IF)s=8m9Ta?@*)l9E@3Vw=6K>;S$so_bsMlQ z1it0QH{Mt$3hPi|t^wvC{LHdmJ-0rmNEq^7gtyA3^;9#7lchh2cZ0sFjz9bHa&}+E zjUn^YV!uW3PbWVMq<@|=oZmcLNR$|QU7Vd|Pk+a_k!U|{uh^sCRd*!S5}S&i6HaUL zXzky(=3_oh5%!<`waHgo@#|L?h@SRA+Q30+{K4HhV&wP2+Ug^AqW+2r7W8`yWMyAP zJpYk1QhYm*laHL#m|ag?AR3>0sP_G|F8PnOn=LTXc+`mHwSH;OY#k1X^5-_Ht?T7Y z4&8ZOydOVLy=mKx``7s_a>jpEuMF+N!-k~^)1vI!=+|+9V`zyIY#VPV z7CxIQas}nqs(%(j-?LIge<-YddYnzzRhuX}3~|cy8_%*lAMfyFhd^BrBTc)cY~oSTm3&TQswls623Ha%@l&;L zTll4B?{mCgaBb1H%m%Tf<4WG-VJ)#HdAvYf5F^dr;Fd|G5*fiY8Q z^bhVAQb+_w91|!T+BxX(4BnCcM#IFDw?){xY+_u;b-cyrRDrzMCdLf*i?&6ZV>^|% zI|#?j*~GUB8--tk9Aag13DNmzqJ?ZIgU8gu;_Jh6{I^4!1oC2=C30KT&g&z}P@LqmEIHzVpWgONb)# zr&+`X#sJccnDw69D_KRR2IB)e(&cT3wmq^?Hty;pr|+H3*WkasrYauzsPN8Ckp#5vhW@H zXjYV?cv0suzv7%IkQduT*-+*o^Ye?r#V+z4x8@4;3u2@xQof+5J@FzhwJ<@TUl1eB zZ+#s_+st=)@x@C8`VM`BI<{+^M^sMDEY?%*5c&l%(mc$TTkz6f`KDiH(%%OAhwo4Z zwEyLug@kG013oH#sX*CK2BgQn5F-ux8s))xcvYOUHqmAbU*!Kn6m99EIZd+RCraF~ zn4i&i*gndJ@*@rMVmzR)ksf`D7-`UkxYpoYjdL=tLAbsYDPKnGxZYd5xOmB8Eygt$ z*BYFwaZbiH2-nIT-^*$d@f`whh3~Ogi*b!c`EgA|UTkyw@!TnQUgQ_=SM{`53vk}U zIT_{0H4$}3o8aC9*8-gL(LUJb!{Z^^yS5HuO4nqe4XL5kYhO^7cx$fF zo4IrB35&6bwi+|hTl?N;7vGgD)xzee3$}xLp*@iX?S?XAUnoD)V>>7V+6vpj_Awri z2K9aQD4Tft>I!G)p+$&L;L>dB>lfn<;Sp!rze|=SEzwLsw=N z!$+^;sgq8KMaL&|o5NH1)r&VR_ISAF&TIXG*SU~Mw96j`_7S!^7$|^EP(BHd+ zeK_s`ayUAOuTRhMCF&-zFGm3}X2m0ZXMUoogzXF5C=gNuGtHw_)gvp)W8F{bc)r=n*;E$u~S(euef(dm1Ul&t&miA`Pl3Y=GQ zKY%vJ*ua><^)z4Qk7{VEFy62GXEA3{S#4muaeU=(&jgNZT$?b)ew{vB&2+IB|LOkG z;=2j=4}Lvg@OC#S*L8BdXyrJSkNRvciWTc^u_r`*Q7>E-qQi5Nc zw?G|t_IY5L)8}~Y<|kFhmNj{3|MPt6mNhEU7lxc7ryWko!_tIy!mz2_lB#O7}JDL*lDYU_P@e^OIyTq$DB}? z=eWv$>wl9Yed;hjKB=X*NQrb49orn_>pC@8M-4q>Vi5NvKhJ?vKcZPHZ*iJbg53ZGITL? ze0hq_ok&MRcf+=Z?nsX^-#lDgG#g_Q8|xPqnS$$yDlwIX&(nPzbwP|YEzVFajJ7wp zY0nfs)}^Ybmh}erneNI^W~2QteUh2c{@@9>`NY<>xGABjKwS`9(EO6Z9rpdf_igVb z@)SSBw)XymPx=}nQt5Z2U*q?tQN_$Mv|iXugv2_DW7BhpHaY5<`!aMf`ofqoVi5NvKhK(_$wneFb0su@U`I!!`DU(WW)x>fY!y!EW?nTfnwh-AF&|+ z3;yDrzeQ|h+U+e;X*@cu3l!ZxH8SJ!T`lRc9kg>Zs)?9A^AVo(sG`U|BTx)2tMa2S z+$?;DK5DwZu36?HXUhxZ#WvALD6`Ri>9_CyYCpqw=p&?QMY0+C8nU5Z5F?Eto8d1* zHuN3(2z4}MGjz|eXNK?4M@VDX(D0Gr3-lezfcD?Gr=HmtL*6(GlnrG-dh81^(x9(V z9-N2g=JZi(f4$7z5_YMrJbJ6&CKM7KXUw&jpV4>NKFWsjBMtImJQy-(#3$0DPZ1*x z+R$R{fHer`WL$%AeYw4NusY+cJJVuA6kLmO&Be6?=W3jjaSg)t@#xFJ>e%pmlYXQ#rXdi6zu=iWF#OYx? zYSNd$Ar-f&U%4kw_?%V6zHp5`xh{*AxB5B0^U{8Xyx1n%1mn|ae|tbBVYH97LX0#< z`$lXVvY{^!BaI>7V%7*P= z`xp;MgZdtEa2H!I{K5S``ioVe9_BgIZf1Zmet*esn19Fh3x7v?oEveyZq&D>xt$I> zr}CbcD~dt)uk#gmn=qVDaLvv4s<4^<;loD%QU;9qO7*^|Bk!N%qY5tK`9|AltLmTQ zwuMs}>W=e&?#H$MlxK*Oc-OXx8Lz%)XR&6XE~q2g3g>@}0Yip6TQ8esFl5``_=;IJ zjCq{vmOnqqD*y5auMkjQd>+4Fy+8ImzklVL#XcPO0EWzlzYLiTT@2iTbiuU%_jrc= z%`{|xrDn`Ogsjj@C=)~iZQ-rSI_ccR626Yd|3cr)x{ z#M{pN$=tv`t-D+72~l6v>z~(!jPFE@u@{$u%wx)CdN~V!8M5UaN4_T6P)?NJzyTB+ z#&|(HW1L|8p#9Od7z5ZQ_Jz6|*ckhU9k5O83u%xS?TKR<{f=>nvZ2gKgS=>4jDPG4 zWxz3ua~FbbS&c-7zjP~J~S zRFjTf;ltklp=S((^Eb=YX9%HURAX0tn0 zqWI!(1(^)K<8VWAagU4<^ySrP?QEE#0Eh#cMXh#*rdDt&%|21DyWbl%# zUP^3>UsUzR<3Jg#X1SpB$lFCdb~>KPV5gNW_`N4N)NwzZ6&ZXqd1-R@0;AMYX=?&y zFvW~Q@x#;O$0}ZUZ3K7R@inkWYS};;95u1DaxckUt^3(imBDv-52b{unY!~^HZFr{ z%&IheN2iZpt5^;1&RaHb&6aqcRb=p^InR|#4((NkUxzC)m~37X>~9r!uQWk1UJbOCP1k;AdYlu_AMZt52d%rO05iIRpD!#hZWcof7b9gjzb}X`l>F zkGG8Z%80jriE2Y8!GjMBVtXnrQC2SKr^;Yor-r=K#;mH+b{><# zUONi&Li498e+)ONGWhh0(rV5%b$FwpX(=*zQN32Y)0gvsdkf{_GWdP%BFcv>QL5dr z*@_I_R(?;-&x;PTfV=&;49=-{U?XaERbM;ZP-JkEJEP2V&b^IkHDz$AvO{^$ZzfhD zDl3!0v}aIY|6mnwDpH;QtXG2HAC}5w@W~Q46{g){{dNR%8QkP!AG5w`=T0j!`0nju zysuqtz9Fd#lfksd3xxfiRs8HnkaFto5Z)_CPDKX4zSvq30W+0r-6FXRPLE*~;`!fV z+EXd8zp{!$j+9Vudc-SPUotL(MZRiE{EIHC)6~aI2G2MY5ZG({NHt%M!+|n5wpe@i zJhi8K;IzhMaPs0Q%)5CEFBA4KMFw}wHHQVB7^p70T3nIA_3{O)nV%I>ML`)~Hi~GC142R_5^@KPxwv z!H&_j`TYUKc%9yznG7znwx?>F|0c^`V|xu5oZMr4$}cxZ@N%2(q{!e~{l>A?&Yd}5 zcbUoHw?+P(&zGNDmm-7v-s{GF%RW~YI=H6D;1(MrdGW3<1O0ZdVKR7pwirJB!C;m& zJAldHUjux&%k8qfZ+rri!ON3PJapX&cJZhkm%*7X4d(TN80)gaq{!f}zP)*U`ulig z!{;h8xMBHreCi1sK7CeYMFu<99L!Irj%Snm4@i;0*-dAaGWe?a#D3qtk7b=5qRL>3 zVFvMR6}#=v!s{Qo%+?MLb;KJcgO3HyV`@xO z?t1AblfhpmbYZW4Myf-#iA)9;zch{o?~YO(xIdG@WuMMqzZM>-emv~MWbm;yjIBKt zt-c73Wioh!=N#r-D3Y)G(n68Jw^~kRZ>kR9i&zUq24{_4%o-LRz{R@qiVPmNW;tt` z8qQzesHMo@w^tUi=d+{v!BM^`GI;0b;Rs_?Pp5iR!NEs4tDI#cg+q}7B$_i$lxi@x^W)7 zQCYA!QIWwLI@MB2oNB7}e3DC*!Mz&IP~xh$QxBcGugKuZt=B7=S5;AW1XWRGu%8me zbAM{1xOqi08NBM3);zWAAtmkgAtr+ZdN$;H>t|B8?^?lR@W|*`zT-ht<=DAWOa}jE ze@0n7X@TcF3deQ}Ddh%R_x9!Mf zuyfaXZ2GOHYDni?stit;w3RiUIZp#L+(#8C)(OQ(`v{QYTSN z$l&EK+AA002C987#VInl^Q~W$;-#Y0-}|&zWbmh5-IU8a2dRk@-4q#2bAk%)(AL}}+`zyX-GPp~^ zuWU!}rfQC#4_mAhbBb2O9HUZXaJ5=f6xaNN)sBCZt099oT#HwH9}iZ&|46DS zgYUiGuAF)vp;jC8Yl;jm;4_6iD?s@qm&(XXykQe?1Q-R|V*1|Vd-L*7F4H^7;;b8S`-5{kfp&fcwT_?oOV3hAKA;1^=QGId){)!Rm>GB_{$qO^@Tpqwlh ztjb_oQy8o-Rxzzv4Aw8JnAQ{q>x)%PYZim`%POWll?wYSt2pn%L28@WNs3+bxq&jc znX^#K9x0^G?7o1>VD&%?^>gQA%9PlXOa{}M!eD)|ifPSauzp#^w5BjvU#wzUvly&j zRx!mqgZQ_KYh3%z-t|1H+=!{G%HR*r_Oqtd^Qv=$0#zAoUo4pod$>pG>D57%!M4MG zQ^r+_R*Ta+EE!B^fC`)kTE!1KGNshBX!Yyy&)7{VGI)DrXC7GNrLyy#iz0)aFZbiE?WZdXU9>5FK zm>GCy=o%)2ha~nl-`akGWgf#(dPF3%PeIwc<7#+Y)8(a z`%cC6C>Qe~ZUHxoK{H_u!sf22=YA$Zr)>o96e->Fry^ zBdPtg;ZZd%kbPt@*~Hvtx_zu-iWwE+$0{bDn(q+P{c9C>zcE0quzY69%du;i45pYg zx0xQFRx#bla=4$higON*VY(S4KI_1+qj z!8GTnF#lM^Go549Eg`=dg;mZZa7>`&nn+wa9*UvQeTUgMT>@ z%1>>ez4N$riVWU=sVARiH=nuQPE=%YyKG^+_muUlezm!Z42~VqMLjWi6YH~f3zNY< zl!b{>^R$_2ld_pP9)7}P@b4e$t6ApVVoyKcW-^#;u7dro;$>OF)Dn}| zvmpPuiVQxVyQezm=n2;TRZT?(JNvd!Hz}Xkryg?@8N9PW4P_DCCq{f3&1A5tbBL0? zTNK}u6vt$+Tc$ip^%F6Cv*%bQg9lv-R66I1;IFnXXEOMFg?!4y706%nm6qCVZa|ZUeipeGn>|+%>x1YsUEezum zUaV7OaKS2VS;#LjykXB)iVP0=SW9_)BuZU-FOJFJX1A&-StmrQ4?8SjGWbQ!(#jWg zpz0Mlo5|pYi<&7te;cUA(z%oj9^9#fvchk$8t{8>MF#JVbW^U`N2^VFydr}googv= zOU9^g7ey*EI9q#n<@VvhYTJ~?iVU7!JBV$&6Qw5F#W5LtS8u>dcaKt2F2^w$yr^Rd z7X3O(%~xv*lfmRu2L82*!|FM+v|`a}{@*4jGFaqk!WP)YsO#N(Dl(XC&cOawG5M5% zf34!zJ390FxArP)4y|D_cuxOzyq)_3rO5i5Oa^;QZ^-SRCoAuBykjzWd;cJw*X6a+ zzRNu(gYDZj=7qQ2Q)a(CqR8Ne<$Lfq9$S>SDsw4+!8-ow(vvUzut>@NB2kgSlTFR} zU7OpAXVgAL24CFXS^d)Oka8+&F_Xb-eVDpBk1d_g-(fO%l3riEw{yR8Bl}k-gUP2V z_}3~fv#K4{zB{daUAIn=!G%6{RAY0bD7U+BR%9^QTm}1E#pF{J{A(4T3XCy-6J6`R zK>2Urk!d~5?Z19^pZ%AxN}qS5)7$@#W3q|4&2;fLUt}Zg6D7FM3KQ)ug+s4e+<7fxkri&mU*Y$^u}oA{gVjp=QoDQ z;2yU}v*JYGzQ!0PgUPn^9ru@=tzyzk0UfPk@`VC^`CqZj+tiUe`tfJadMbIcB`GpE zy-hX!J-qSW^?%@TYa@BvtqqkFyV*%)^(aJ7Rd=ffx8JzCljD8u&@E2}fKUDFZ z8?7#^+)$^82H61mU%yeG~^csKC+4_mQ;u{nZ&$yp=aA)-xGQaiT!X{I8hW;n1d4{CDq{bJ_Rj z>XEK&XTc;z2K&ZEapQdcV9pgx24`J*+k8h5p1UWP#OC{pbb70pWH9f+(&e#=Y0c%Z z{#wOk6BX=Z7608ko&Uof&EL9n`MdWiv|cN)c3Z{c8@J&u=V!2N!=5o2+-XdA-n-;F zHe_9*B7><-723CosZAByw~7xPFQ`o4I*@mcna5=C<}-bj!x4RWNZXBy45l_2v~Lwt zn+)2wiXYH>n-FcFn)T~6CWEVXa97Ue9Hf369InXV^~YS9tv-<6!%t%}nA&8}zExaz zb!(pa#vCPovu8{OuUg)XC+^y$IIT@oWH7aBhN`35)>1ZH&B|o(n>sg@_j4~R1rkEI436Qg)aC3_ic`K^Tm~2S zxUF>9&|RIlDyt%cJ68`@hdj*1{j1JqGWdR*hN@p;)s(Imi>fks=7=7u72l1FxBtkRF5vBW|vjGad>9_s7?poH>z=p44yyfIqP4jy_#>_a76}F4Kx+%p;^UL zQ_j49ORq0y6`xF*$_@sG@l~t0C^DF8LMl)n(kiAJeJa%Jvx=!koLT1ddU00qt%J4L zCcmNToXfU~45pf*4C;$o#Z+@oh5CC|aeDk@)H5{V=ilN9rt0e2n#I*}#ZEIBOf?u) zsK;m(4_?0^d8OSErQNB1Tn1AOHwEgsS;bT%E(PkvS;bV-Oo94lR`L6d75J07<#~Rp zhbe=pMw|lm;;iD%t9z$>c{GBD7JeEigM-gF@{2!Orp&9 zj#TFS#ptydiht? zEEeNArA?RTmv(EM84Q>6gInMD7HVvDJ~O}1icMtk?mGj_fo<{q*229k7UMa$oi5M6 z?bbLm7%t}rx9%5n#(drUlxds`wpg6FZezfq^oLFEL{EdoYo9zZ=Ui=S99MRj=9+Jsgj?-HLv$8j|FgJJ zEy2f(jjv>}7>}8T%j2h8_w)}lcE7o&&q&Ie$l@a>8XI|Aq%#^{$#1e4XMQKn|5obx z->vZ&rMo;{x%Ec+)I1j6$?9C|N);C4V_bLncz5d>l?Rzy9)?>5kB&82jK_okm&XUU zrthEVIWIRgE-#DMS&YX(-R1Gnt#RhDT+TmkeL72LqgM0F`t$lFbrwf1d8vnVZf}IV zOJ}keX8_aXJmA*228Zr)Jr1{S*CSYuE*@#-XuSnnDaGFCXo z=q$$fKn$1fhq!eCpFrbMx*S$CKIU1B=hQV^o?q9k@iC&ie7v|d&ODaO`Nyqs%@^I} z`Y&#MZEbO*(3E`o{VkO&7UMah4VUMOcI!9(gY?Fa!>tcVV@($0dqld+_lw*bkKww@ zGFKtZjI+mHeH@S*{$)M(oUD> zmv(EMc`TRnk6Yu+W4WAv+&W)`kCFG4!&;HhR%bEJ45rKZ!L7$_$Zo_`uV=j~)p`FVw~|Tm-C)m<9m{(%l9YU8sBp^ zUB3V9)~V;o|9w9>MVX& zGn>(~XgzDd`y#l$l6z0eaMSeP+|r=M7V9j=$Doz6Cr|x&bnnDB`p9#wjRx)N=+_wh ze)GSt{{vou4i;zV#_8u<4>h_Kd*EO(9s|vk`=9!F=+?M~l<9IkDYwQo!Yo`b%t*an zm|Le`{qOZFr|LllizgjvWItZznUKX|v2)v3r|*?WLv1kIWb%&brpx1xTjQE#rpxuq z+!{Y0apHPy|NEJUTOSO{W*jP7&-e%DdKTjvXO_$L&fFT;ymR3CcSh><@7x;KbTeJ9 z@8;Hco7x{Esc&DmUL2px%&~f)Aq;4wvp7w-kLCH+VfEh9R%bCb47$sn!L9L_W4b*4 zxOGs$pJvmAt&M_loX%og^T>3${*hbbYY_W&nELgITVo?(xa=j|8jn$?%j1<>Z_OEO zEh}5oS=%p@!Qu&}#yKA0`bTlN{t=7uHKYA9rhfhC*0`ps?s9!qxAtmT-wmd5zDBcLzFu={T+>!}xxTGi zV*_Kj>|xyc-N-st*n=!q^uW$Ki*e0a-R1hTZjEc;R&u!>u3O_wYroH=o^Rb6XBge( zJmc2*7}s4s-rX9T0So&9D|J8M)?<(SG-I5ttskXdI$4Y}kL7ayaci6zOqcV6TjPD$ zaCv`r>(tLL|GU0w%IBBgy8X|eCcg{M$u;4blf^g#*l*L+^MG5I%5_sex3Q&Bwa8+f z#du6JTpr)tI!p6cX6-NSt@%&iI#`@~9{At&TT{*hzcs$bw_nE8ulL;=XGr_+q@E|; z8fPSj%X!JI@iA_=e7w6gt}$o1TyM^;aptjH&OdHlu~e|t>tkz2n&%k}7ULR!mdo}2 z+`IWJ-R14;*0>Lb%l&cdtQ)gim1@+ps^;+2S&TE1?s8soYy1q$boqIfTbF9J#qlZl zor9K(F7TyUGn$2q28%ybCB~#<-ug^Oh{56_UyeIAuc>ZTuV27o z@ze2*j8|nn4SsfJoyDc9_BEzE^Xgs9MLLTkBYllGUvHQ}+jCkhUK|r-G@F*rYO!&E z$>L`}!wo5Djk!8+MxDiHo|Q13UoLH2$=1bW@zkfejSCyz>2tH^vsfJN+uV2?7wCxE zkj7%MQgx~RQW)VZJwMW7anIns#=xd)^^^S%IawTxuSF&*GmODvy$;5J-beL&@l#9|m)zgnXpCzs z9m@66WO4I^nnvwQf|dTbrL%axaar$BHq5A+l-2x|cOPA$r^T*)-uwy{i@*0zZ;egE zTWPSpWpRd&*^JDWDjDfNCFsBMzQMJP!n=L-o_BH?EMC|DwBE-*pS56aG3!?jPn+4; zHm|;wVR>QmS9T1VtPieI#=17YsKMg*ZQ3|zOsQeqSysScvES#B=0vlMv80%<#o{vE zrMXwhva3~Nf~D`-Q_p1a(q}%_bcb$vuWzce zIDB|5>*nHImS@ANCX072>2Ad}@G&=j+GDafepeo=K#kXWrn&hH7T@dcVQui67SJW6 znZe>(4Wg~})0ZYqzT8#+m3RIVZl!O~%q;(8w*D)J9qeJXytUAow#5 zE1=ehIr^`hc3QM`)Z>aXiVM_#|>tq1MGs`MJYTmO}3d-S*JUkosf>YeppdBDRS z*7W&>%(!j4^k2D=*I8$W&nxvaFZx=)^00~r&4WcWbM;IlBuhUt) zW#xi^c8QV3u`bJX7H6rqDCuCINNY%;l_rZH%~~7qA~4b@kC&6hO)nibi}N`hYhrs^ zES~hVr+=+)k;W}wXaZJyNX6|(9&3ZedEEeCm#2Mjb zrki^{G&X+aXCce=!3`Iig~s4{$QiuV`KS4!^Ai1M!>-r>y7!Dy9>(I>N#@Blfd-4m z`j&CN>52b`fRD6T{3FT7coY$>Umjh>V)5>K1C6uyb~p>44A)tlI55_DnNAOwbY+B- z#mzIdG%8Oksyk;=i^W6xQ>)_2Y5FRU#ukgG+(>Z5<%u^hRgExM{G(K6t5oUH=2lYM zVDYl>NUPA%2ac^?^Gz1tz7%bhZ&24cZ$XI8;$`c4SiE1db0s~fvpD5vu;mX$SO@B_ zv3~~Z&e^9fO(ecimYjB}$>Q|q=O+zKjI?fcS#Gkp!Q*Cn#yTCH8{S15EIw0jQKHwx zNF(O>3Z2EX&fKhW{BV?Us@g)G#f`@XCN&L=uyTD^XR`SAj^N67@V?Wn#(JH_6;CwQ z&o54A#bs$|u(<2W1xZ=5MOvYyR+%i`Jgj1XZ?7n$UAM(Li(dwx*D#`y`r1b&Ud1rB+oU;RNUchyq+i%oa zoNt$@|8X+e49wZYVsV|}A^Hk4!g{uDxXI$!o29I;$CLFBzL^acPbpK=Ok5smWFI+F zXK|sCHT8!pB8_gXN180|bS+VTiRVTCe5Q%T;`@G8OerzK`r$W8XK|VARb!%G}j;xr4>C_#gWId)bW%&Akm4(-{t9 z_TB8p{S%9H7N_0^-R1uL*0)>z(8KZazFOvEusHQ?YP!6Af9nko@c*I6pB=@s)-hN- zBY)+9>w9+TZ6<^pEMB)h*w}e&mKhTCU1#xw$~}xFX+JwP`Jm3?GB z7Kg41HZDDwrQfUnU1xFXeQ>zkpWiyL6YkIPS?22G!Ul^|U*}Gj*Z*(bVoVpK8ead# zIIsVEKZcUuK%VhDU z?~>&=>aICsdu4;gk8iFw7Y`0M?xsnvv-s2C5{`&2;YLK=T_%fV$2xOo^XvMBtSt-{ zM;%^kt}PL6-F%Z*XK`>Y594*eyXMq9O>1BCSuW7U`kA$2(Zee>-T_eO1P) zNpe~&_FPll%wR4u&nyqOSllyHh}CCmWoJTJ+4_~W;We#cE$=)0W_w$|@{%n9)@Gl| z&NPdQTfg$q(8iYY`vYgT2cFii+|D<|dR3~5cQcX2JwhK;x&AfQ3MiQ&fW;>trA^v`efhI4>k?V~VPBDer}+0fJepL6 z#i=i&?(*{f)XsQ?xq*sEAK``^`f^{QmBIIcl;BjsbN3O0Jb z^5ZsM_TM?W6?+B-C&p$=*<5kYS~oOU>@_gR{`bAw=CW9P|3#AhIB@<&Z-d3>_HWTs z?oXjieGL{{KL7sz2$>76aj-b>OHcd$zm7emvp6|ZUi?AK>Gy`aJ3 zWzEjnFYnYY-7OX;bZcP0K3^UmY_YgmeS2TWZJjvB!QzvrLaYMInQ!2n} z^f)A`aGamT;?&1s!{ssgxBk?J1hm1&RMBXm5YyFP1yIDM{W}2k=?_#ax-^T{9c;nw^6FcJm*SV5EfW>p_E=sI{ z`;%CK<^8QsKFO1mjL(T1Lf7qPaiO9?iN*0bx-Z`~fW^=2^kt|RSE*F;_ z&B5j5@^E=MFC;hQ!{z7lA>L3yt}s^sEyxw(igCVN5u_;O$Cc!Yqkdcot_)X}D}|JX zDsUCKa!7f|pR2-ELMlT#XK(?C1FFu|;Ho0kpxRs=t|n3os>cO!b&)`*0oRDDk2c^M za!t6VTw^2{YR^Rt+>`)OC$tp%eCj)pl!K!TqxIx>wt8Gx^P{&&PW*4gX_t4 zL%Kt~xjtMkv^N*dMQ~AEUo?V?r%!cN13%I%HJZ?U>h+D!f zL>F<3x#ipnZYi=1isx2yE75pv6}OgK&#gh%a_hLixJ}#!WFxed+s181wm>_$o!oXL z0ou(aa(^ScASY*WNvM-ExqaMzZV$2-I>a634j>1iqug=s2zrz|#+~9$b0?6K&{^(0 zcLqJno#QTYm$?h*MeY)Jjl0fWL9Rl{+%4_~n#|qg?sE6I+sGa0AMPP{A9(;h;hu7j zkjKyq?j`pOc@Dkd-g2*y*U$&+)&iVi1>PJeD(xfaYg_b5|NO@9`ltast z3ZycrLMow^i9gYaK>`p5RGriyRgr2?ZBmESL~23xND!%u1VRl-BT^q}05u^^Nn<1! zYED{^KagfnE7F>@L_(l;q&;baw1q-RC(;4w2z4P{NoOPs>Op#vZb)}1ob(~Rkls)P zi6VW`2og#9lYyik+Mf&{(PRi2ghrFWB!s4j3jYnEE$c)kuhXE znMlT=Rl6~Y5IZO^92ce_rLF5Q@96f>@gASv| zkOR<3a+;h#Pm)vQEICikpl8WBa*oX^a1&YJSI=cBlIzOLY|YC| zlV+kBP*0kXW}(?=W;6@UN^{U$G&`Du=A^l4Uh0MBrg^A0%}?{8-qeQ{q=jh#v>+`+ zi&9@&1T9L7Q9oLe7DxSP30j(#rKQl)vZxVA_N>qb=wkXfxWJ zhS1iuB^p9o(YCZbZG*O@?Py2ZiFQCc(oh;kyVA~R80|v4)1I^&+MV{Gy=foX3++wA zX#|a;ebERSN&C}*v>)1^4xrI=2pxn*)4?=`#?ql^3>`*C&{1?aI)aX*ada#ljmFV2 zbUd9%$D!lt1Ui{crIXOfbPAnLXVPitbUK6nN$1d6$ZTjnT|nm|^Pt6a30;URf|k=2 zbSbh7T18jWl}J3aj;^O`khRc8x`}Q;H`2f8R=SODMz%mZ=uWyFNq~0KMEWL@z z{Yc-T@978nnSQ08(9iS>{Xu`yZ^(Cu@;r}Y6;F7|OT5erhzMzX8eTzEC>@`kPm6d! z8Tm|n2E-G}%4g#j5SpU;PQLxuRld;z2&RE+oKiy%dz z5`0O%IN}GD;mh)+kkU{Ez9L@^DGycVtMHZ3%Dg}C;0-g=#Meg}Ku!3jd}AaSYR{C(sB^n`!PKSCZuFZh@IGvqn+hJVYyLS923_>cTM$11Ij355;7p3P*x$E zkQvDWf>2qgB2+>v3;u#bFoXcqA?QLip@vWuttM0#Y72FQnn*3Eo)9F| zMFOFQLL;F*(g12AG!+^n!B8`yh42U3OlU5I2(5*dXo%2CXe+cA+MsQPc0xy?lh6U} zD1-`OLRXa)2p9UI|K3IjkwOH1 zpK=?8KaWbi?IZLT1`7Sq{=xuZ5c=g>mS3VS+GOm?}&{Cks=A>B3B58aiE=A^a)K z5oRH?q4~lBVJhSquFoY!Wsg8=%A1;j(Z6y(nA~t_s(ME9h0>nvg8q5^kW$ z!cF0ha8J06-VyE!4}^!pee{9wkMLM{Dm+3T3r~dS!b{;9`doM+ycXUHuh7@R8{xh1 zQFw>G7d{A|g|EUV^t13q_%8euzMdWh-8 zw5W%ePV^Kri5XB&F{7AO%qC_=vOqb-Tw-=42b4$5D|#WhAs;cnm=E!W3WH*#8KjKbc8rkj1$L-qtQ5Vj5uDLD2_wNixb4j;#6@GI$4||P8Vm2 z)6nVS4DnBKjyMaM4b4MmBXgkz=v-tzGzXoJ%z_q+OT>l9B4`=92w4iPK$jxRp(W^Y zWFZtUt`=9K@!~3R4f^lxT5+AY7QauqU5`IspL)Am+$e4mH=rBEzr@Yxzqeb&t>PB^ zKIL{B{(M{N?Itln+$nBH6T}_j-{`-$yTsk%F8n^_HW7cGn0mWYG(}5HLY&Y(alg0+ z*$W*K4~qwogV0g&xOfCTDjpM0il@aB=t=REcvd_wo#i!yU^s)Fvd@jBepP|pi7vd}NwfIJS zFMbf;BJZG2;urBF`bqpOeiMI)U(s*kck!plNkrl$QKBd>36dDqAy_7-9C}ol|OIf6>QZ^~4luOEvUXmK&p)RLxxmUav(ZXU8*Tn zL#skkm+OEHywHLQSMUq+qm()KqFAwUnA6&7oFO8z}^B zCAF5?OC6-PNINK0>MV6cL#0kqnAAn;D)o?hO5Kp|P`K1b>V@=%BBdy)FA@O_kOoTq zkp9qMX^1okiH3$rvC>c^1{xual7^!rq><7XX{a)hX#=`Z`b*j(ZId>mTcoX0g0xfGjwVPuq+L>?^f$Uo+ATRHOG-kW zk}2(z_Dg$^z0e`)uyg=92pyA-OGl8S&?)J(bOJdEos-T>XOOedCF!zs0l5fWm99%y z(5uolDOtKD-9VG2o6=qBo^%_z1N|dClFNbjYO(mV9M^g;R}eU&~TpP?VpPw5--9ilQX<6FTpk*O@ovMivYEXk^zMpjT& z*5q_@dO0oP0eQ-q@DY)^P%3d zk6chLEEhlv%7x^jvaehOEh-n2{p6Bzanw&PA(xTM%B7IfPzAZ7Tn;G@RhFyBmC(wv zzpTrK9Dq2WYH|&^Dq2mhF4vap$Tg8#P@o(n*F^*6dU8X#kz5~X00qlU<;G~R+(d3J zw~+rpnnA7P)^bZE1ZpR@m)jt1p^kDVxdYl!4wb{?u5xEIOztB0kbBDAknT`#xsTin z?JbAPk#dyW7m0ud$OGkmNPlRsJVYLZL_@>mSa~QC1C5YJ$-~hR@<@4%JXRi!#6jcb ziSjsfygWgkB2SekA(Nr$@=SReI$fS2|0&OrXCbqpdGZ2zE;>)1FE5st$P1B0&@y?2 zycAs~FPG!x)$&R-US1`ylh?~@khRcX@+Nr$vJu)MZ<9BpTjZ^Bg1l4SjwZ-Ek+U&_yr=g=GZt^5jk4SkS5%I}c(&=>iu{0aFCeV2dA-_Y;!51HVLbPgr>W|gGK zDPOWEBBUv4l$2j81HVS1E!Ng-R$TmEwpWR9Y#kltN1@Wt0j^MWq~49;&QV zQ7WO86@Nun3?%?@K-H8QN>#L)QeCN~)KO}pwUpXQpc16iMFW+3N<*cQQXgpmHBp)> zjgerenbJb}18t@>S6V5pm6k{d)K+P)v_ab{?Uas6C#3`0Q3+MLC|#A#NEp;z>8W%> zyDL4EaHWsZ3+W9-Dp5*bBmx?s3{?6d{h`6i5M>Y&4aF$2%1|^$8K#U>Mk&LQ5m1~m zRvC@PDPxog%0y)xG9H?uOjRZ!lc5>POl2A}9r{z5qs&5PL-Ujc%3O4wGGAG&EKwFB zi=bu73S}v}Oj)kPE31{2XuPsYS*xs9)}U*Zb;?F%ld=KbsQjgDRkkUckuA^;Wv8+o zNq}}MiOS!|F340YB?)mtdzJml9(1p=PdTI<)LyPeW3iKJXW46 zkI=`;6Xm(`QhA0xS6(QumAA?(^tJLvd9Qp_-l6Z656WldtMUo`tb9?vD?gQQ=y&CZ zLR4PmP@+;*RAp5_MO9K&HI1sEs;a5!)bwgv!~^nFGpQL+Pc@^ORn4YmMzTOT)m&3P$fohOi7Y$VF zsSVXeYJH>u6s$H?8>7K$6ScY8Lj4122DMUKt1XcbsGZtgZG*IhI;x%24roU;R1H(R zs-4j=wTs$A?WuM{xNsRPG+CXhPC_TEQ`8yiOm!ME9r{z9qs~HRL-W)H z>Rfc5I$vF^E>RaEi=gG|3Uw*642oA*t1HoXb(OkSU9YY|*Q)E(jp`MbbCa62qU23BGH@ZvRtvXdpO+uZjsqR(xt9#JB>OS?5dRRSx9E6Ul z$JHa~QT3R5N*^Kss(MXLR&S{{&}8+ddPlvd z-bU}Jch!H?hw6Rg0rXgXsy;#=t54MD>Pz(*`dodXzE14f$yKwS0&-R8T9d6+jDWg|uRtuT}&p3i)Xz zwc@CsRzfSImDNfirJ)L1MXelC9`e_!XqAx4kV7-H0Mw!BT6L|4Ru!oR)z<20HIZ6S zpcbUnMFX{ZS_7?-Rv&GkHPnK&rdne(SZks+*IH`lWotQclty)eUGHO#X240G)T!vZW9mSDrM(B3dCvo{PY{xJvs zE+k{Qa4U7Sa4&VS@Gy0)@HBO)@G^C!@DA&Qx9B_U6h2{{@DWYfDSX2^;Vb$LI|YJu z!cQy~04x+FY!)QkidZOU*ehtbRk2V=hrL2N+1R9QI!Z0M(ULVBS zD}_<^N@2XcQW%Ss!X#`HCLj|b*L}h)tPy4)GqFsVi#5WZ$Q*l_un5b9MOY{-wAToW z?Ulk(tP|p~Oo+$rN_&m4%3dj~vDXOe?3F^w;vi*}um!i9u|i0|3Lycv+p#;?g$2S6 zED=%`2u^!}kZ3Ou_Sy>s%U&QH!~)?UmIw#1EJ#@&9L4Ps>MJr;I6$axQ`vdV=M~(!Lr~Hb_CC{ zD0qTpLCT`wwY?~KiABLXtO(v9Z=p|E5qv;CLf^0=_=0?eIIIYMU{mlD60jmj`Gp@a z*((BkGY;zl#a64bP}1a<8d zK@c_sDNBN2dqvO)D}q0;9B6_xg<4`c&>U%DuL#=OD}vVcilC#tB4|%L(9SfBh9aGy zZdeX=nTfdqpt9UJ=CF zD}p$CMKH=<5sbH21Y@xxn1CI@BzrwD72AR7SPslgT@B1hT?{NpT?;HpT?(wgN?_tOE|Bhp-wrhIPPE^cYqHr?3t{ECue{tAU4D2RyL10uSw#z|;S;6L@3q z1YX%Yfe-dh;GMk__+sw_KK(!K1U&4WKze&8;A!s!GTA$UEcQ+yo4pgrVebTT**k&U z_D&$Ly%X@}^Yi&oZ|npL+B<>5_D-Ovy%X@YcLIL)PN1Z{6DV!(1j_zrC*W`I1S!W?S-h8w% z+Mmx2v^I4QwDsg048xi+KR?*jYP9wj2D^*hg}%XPeYCC6+h6F*_Z631)en<|X(jpP z+P-46(XvzZ(cbPpxSSDdNXO%8!!{C$n3awt?fMxeUYW_5X(Zz5RN9Kg@oofdB|PM= zgohE|)Y}b71CA2uq#chZ()A-4uq`T8(WMtP#UOUo+K!I=z|!vgd!mg7{=BM~Z|>+A z%tNcOvA$N=eT9MET+iVIZ8X@Xok+w@GaieZsTf4gFzaWGd|i%m`=S=+PhH?2i@OTd4J;x?Dd=bYm_6f?BoG4Elt^Z*~P;$Zylx_ zGjzcrIa&~sY{kr&k+$t*GL?$i>129D#W2Y*_*>gH?6{qb8L4t02XkN=4JkVvOPgsF zt!dkqg}uPWBn;C|n^qznv#r>H@N1V{ERl@YsywqbT;)|pZ(C+6Va9FSOeGB~5$Cdt zr{k8DG-DiaG8Ky_`DNOUrR=1UMkkuFxWV$@>^M}}a35TYsU&*UHY_C9v{GD)RxD}Q z@S2Dv3_D>RGX7z;7%u*Bf>?wAjpx5OG25|)9rPW|WH|n#c;`m(1$ERU(`QxOSm+$K=c10Ua)MS#EIB*(O zSRHuXYLq*td|qiU@w62m)< z=wYs6RS(3p;@CEM6x&IDBelmkUA?(texREVU~xmmo3gVLoTmO&1M~C6Tu)DT+v397 z&aOV(X3@s=(N(#@d{d#PFfcpUrZ#bf(O_`Z#^d-f()A|04lFeXcf){oQhwK98|ZE` zk+iYf`QGlq!R~c={p|{)9s{m&J^fv|`32sAX!FACqIX^daqWe*t9tS+*q8QbV+TUW zi_J*!4Us;~5KNoZtB>S=Dg>3d!7f}AVnYu0lYwI!=A!z5R;Rs}ihE&T6i3O=(x)9dN}rL{Lds1b+ms zR&tH?;g3UwgGhSu8weVhJ=lh`LFrK_FbrH6aJccN^N426T|k#jSeIG;{1_KMyN1T@ zpP}%P`)8Dv=1$41xg(Rovvlp%mnzI0OkzIU2|n`_XEC14VOzEXuN3$v_RAPg|_QUv-d+SQ@rTp_dxt8>aHI#qmU{avL6?|9lUFHPZT-M5be#bEc zu`u6f4%=}IjF}_y&-p3m|Mm$hGh2@8QQ99`RHyJa7S+l8@LJ_qq-Lp2YT)&BER3~g zsqJ9<&Ur2D+3V_jB99rya503b^IuW(g0J!ud6STh91^ zKjD;M9Acef-&LKXk6gi5`^C0wCp8Fd%-0%Rsg2hN z{8z*x_*~Nz_-BsRplV&)N{-Mb`K(RZ@|rS6!FQ!*_NikR{wrb;wiP;=zvJFhv)gZ* z?=8N3g2Nb3Pw+Vpi^cQv0iFeixJks4$yS_AW?HsPOZQpfIVKI;+wJ=wo_Uvd5i{Z*3v zB70ogN{;L`!KpZ_B}dq*UeITzv>ndTy)W+wj!WAz)*N}B$TM8pN{&2>1c%SJ^7$`0 z!dCTEpuv~6!#O&)kXg>Th_|AbnWOtu++P{IulPN{_ZQz|;{K}m{UCo2fL99cJK}qe zF`klN68;qq{Fem3f+Mt*goX-RdFKj#g=Tpd3k_0RMrg<|N5?K>l)r@pza(Q9IxGCJ z&of?o#&5phAMQ=#x4Vq5#Z&mnNI&5D%waq56lT8g&+Dq+6`%~U-+(_P{Hy&7_GL)e zW(3ETw!EI+7r`$HzS0!L!h5Xux+HBGYmU&bY;|shZANfhVe87A2!2WMIj7}Z30q%k zUVGm(ck{!q_;@M}jAJ+Ssr@)e-dxRZhaGsz7QSU}D|GU@fzJwCsZDBT9a<0TV9Y)w zhyT_&WUMtyTN$I=N2yuI!gj)^E7oGoT91lL$09j07O7dzQ5dU5%1PaT{iprWM_M8${XKRmmTxsOBb-8;2!iepYJc`Uw30& z_AjfS*uk6^?ySpxbi%0>zZ0abCE0R)th?rdD$oTo#tNnT#xtr4b!uWFZzv&t1mt!d;Zq@XEMKV^pxy|KaNxUNAmUA ziT)jmQ@^V|`$~V2eL9-M>uOuZnuE0*ZOeSE0ooj`4H_J+f%#gS)XYAY|Mjfw(|h+S z4d05Lmz{KOy(?ppnq}-VM&@fhQiF^|YL?oh1{sUg%p9#v+Df0y(eX;Y^fO$u&I$8H zZp*Rod%f?n9;8m@=p4$rV!rMXnFpDlin3WN?sTYp2K|RhQZ+Zfq%BC ziCIVB-w%nk9_H7?B1RR1(5CZH@m^@)c(t~wSj6as!9N+b(>Z<2u9+`(uJOZQW7k%% z`3w7 zX5B%&tfwXx8dOe2>{@5V`=yT_<9u~>!M*Ff_jqA2c#6;5Fc>^9@b84dtb_T?4T-fL z=GVlmTj;5Yg$9n-3$#_mB1X=q;O{_O^}}H1F`v1IiPai`ZB;BZ zxFN9<=x2US49%|4a5$Lb)%>bhXyANmJyo%|Bl!N+_eE8Vd&}Ybi|?*57(73?@0>80 z@5R8s9};Ul%&&>Xoy&UkU0f9l4IHo5RuzjFIY&D7s(AN>jx+dFtM7ktpA!ay=P{qT zA+hogzQ=0>wqY>)*ZitjX!b&4rJuF4rXcn(nDe9gRk6qk$Ef&hR}GKd^ZuE%ZiAnB zyv_@Q!E>0;+%Q=9bi!cP5%}K`2E*qLp}!^;n%TdOr79NwS-UgD z|8%AP{p{b3?|yEL|GrJDW)_cr+zEqwpZC1voU5H5{h-|si5+N_Z2;E82shc-Tsw(3}^FWo);3kf?pFugCq3R#D6Gs``JmGynCYnd<_f1;nhQS?AuXg85pW1q0J%pcN^@c-}HLqEp&3DD2zf9P3^p91Zr=jl1j zz4UW>fqqHDcKY&I>j))LOBr+;;bYyhoNQ|R^j){zmjKLTSbbRE5$gvp5 z0Zoj&B{Cjk0?^5kNs$vVP6B#s0ZF6Khun{&NA%6*SN&Lb$bLLm_2cvr{b;FvG*mw(R6nK;*^e33iB0IjS*j0bp(p16XYrhcw;9!^ zP57LH?`NSy=b=ZrOD{o(E<}%Vmo}q2m!LTocNTYoyAvQl$aD>|xVyW%v-p2{ z*kSMNxAUg?-s}4RpL)(S_w-hsvQww(oH{+})~iW1Nf3kv7X_hI7D1@hxPHCCMS?qZ z>JkwV-Z!F1K{7wa&8>XhE)m_^ zyS48f9uX255*`*&q+F3s;i0|5!@7h;HW}EP%6hwd_~;M&g+&$#aCi6dDpw>lB#fAs zcdy{<;qLD4@8;!0pB`QwzU9ihRdDn4aQE{d-rl~xUS9rw<;we2@bLHY_4RajbN6%e z@$qU)9D)ZB2L}URUvD>WFMm(s?B-L>zk} z)7Qt}o61KznpUJ))ykgK;*R~gcJ0!)SxA@Piv+mQ*MX5;>UZrL(S;i97G2KpAcTeY z4Gr$~OGDsRfm-VC>Er87J#_c;r}mb2r~m!z;*Sho?!G=g9zGt_QLl22M_yjup1yv* zer}#V-i{}pUT%KgZtm`0ejXm4{{Lea-T&{q7!uYwgv8@NXW8?gS@!j(I)2Qu+t04h z+^G?moW${v@dW9&SF~Ugi8M_BHgg@h>6uqYl$xczF2wdU*V|ka~N#d-!_#`?~qK zc@mfZaUA|7q`x{2#st;d^QSiYM^3%mKtmW2Q%`R{FT+#hVOUZZD&f*+^Bo* z{@#9W{}$FHENIj5@bDs4;Ne*49{zrwzPbdHMy8eG>+j>`?d|FJYx4SwLt#u_J-vU5 z#6R*%E&pdF8Ie~nA8!xCv*c-5Uj1n6{JFDxc=^(<=H}r=6GOT}--SsvkoNQT^7ixh zqixKqf*0u*5;Au$A9r7eR&?&_9zGIXVk}@c6C1wFF$XZM=vigPfs6Rr~1*3 z=}nuRmzN*u+Fz1WS_q!MG6Kfr6#7rHry%?zq`q(@F(RYhp58vu)R*80$1!Yhk#1eWy7Uc> z4DU;)(eREvJi7IY>`JGH{$2V;(7BTydQ@;L674+8{m0?e&0Rli(9y0=m#}V;-RWRT z!sw{upW|PWV*fmD@AmVY^7DY`I$7QNyR22_{8O$6Eq) zTBm>I9IE>7;?9huTKYOU{d`uzpNBuN96tglNqVzSE*7JeGwX$EPea-AiI!y;rpW()FqM?KRV;<0{s8J zfH`W7=uXxXteOAOu+}@=HzbrS>;8Y23XUYD(y?Ep{&jGX2K5`)Y*Mp+J%_@mSHDqR zOC3@-v>2R-#?+t0cxSuX>Ut`SI2#&o8tPDTWzZn$#UeV5buJz?Oc(u~g=r95fUQ1u>sP+8TizS4bWZMDqJ{SKTirh{6gZYf8e zKZ3fdZnes>6&=be)!JrNkFV*L^W2s6ONxZtfpnCRsSqF}qlS93*C@+g# zepL-v-@?8p`!NUhuNq(sGV2a`i``hS)Y!*?QvSoynM2KdAGxCaM%6nzM{db zO2`4$dg)qqO2!D5cIa`o@7gBy>&JNiR_~6nq4q=Ste}j_>(*YZ+9}yKqIx!a&d?2t z6HoG6=fIcy)VFuk+#GpM?r3IjbAKFbUv-osA8lpNJ$)iG6Yg~)ul?nyF+cgt89K^= z^|BQkdOPyJ%i1wXS>^fgZZ69;Of&V=|IELF#gfZv% zH^|+~!ACEPV~cZC`|e>yp9_8bk$;kUJ7na+H+QKI=FGCUS)YzO$2s%k+gdfxed@KG zYwbOUJl3WsZc~?(Tx{Py6J~h{w5T?HT9HY*u_1#>mWC3+)s?2Ju8mp8E z7dJAccwRO3;!>sO!jtU4rRM6FW@Xv&1|?MGQ3|!s`nfD?j*5=_BZ7x9Xa2RV%RBI; zlv&h0yM37Vt9I(rkXZZayvtbcV2k>`=L~zw_w!i^pI2;H=5hA(YgOjylT&@^Gu58* z(hByzN?Wze{yFxj(s68d&+cmV{0;19wC$|g(@^zUx`Ot(Pgb#SRkN!8oqX-lkH&Jn zzfY*YUsgBedcUHnUlpb<;pM2mg{Z&pt8U=>IKvDC9WGvT?eB2}7Y4sfGkd_S&^4;GLs>KIQVT)~vT$e*V&&Nf1xl=E_{3|2BGWx8V zulQK|zO*}e!OWLck5+B%XR;r2$=%X16lcp%a!?`v)N}wY*w6l zOimN$z?~yg+t+{ik!Q{#!5(^l9CzxyxS^vQ{B@q<=rKR*Ej)c9ck*e_(A$w;*L&C= zEQ>tfmn`j=M_upX{N{@}q3Lt2&+pOV#~hfGPQ$rI8K{`MmxGU`h?L2j5jsOnPeQ&j7x7loV&b|D?$N_2*PsScsI?ms(7@>xDtFJX&vYLOj`>G=@rcpYq zpUd?%yOP#8$^gm+%H&dIH}99YM_oH8%s$xT6wm&*4(vK|D<42Q?bOC#HTc^mKJ#xK zwYct8uIr+?q>DPmC-CQ_qY99Y!g?cvhjFK_2;3jdow^0r@+{ve-1kl!b?mHq>g8r- zxvq06k^&yx8TwCl9yI+ zUC)#vJ%bqY+n7|}XZ6Xh;-2z# zS5|(G_LoMqzxYhg$v+(YthQG>tDj2eWKPT`Cz>amOJ`Y8CQ1zn*kyC#%cdQ+mDm`)9NqjGL{7{k4rX4V5hW za}QP1N338K>Swn+sQQOmcfk^Nc3N)B;M%iQtSe`(g4|iJ&3DwcE7LZs;_}&cY(MrZ zxZzH%^n{$2N@*sjC%0|a#998G7OT(=L z?y0X9UQ`P-4B^jcO=UQcs5Umm^Cr~J!_>}JyDss(Q|_uQ-6yLT?Cbda2dON(X0KEI z+&A!>)UU(TuVvp#uynW5SYB7!oMb%vPUvhN^E#vD(cF3J_JK!~sQl?HslKdLD+es# zsc0?#L2DW7&Gq)VHvZ&Wb$5Y1YQEB$_#Lm0>fxD*YV#7Kcy!2Db@QC<>Lw{snL1ps ztXZ9)daO~|ioaw_pGiB^-~5j#{%uT_jM{c}_n~Uaka3cw`lTI7>Owv&Pn9)Y-m1Qx_NZm< z#VULIJx~j!zo_C_4$o|lH=JfiQzfci^E29OZ#c_Vns%t?BQ|hcgN+LvVSaUnsq+pG zGY7Oj$*Kp^JoJv%@Enfkb3DJ{8pO4R=P^8Q;5h{KWNg+Q-12RgI)7Xd757%$b8ikg z&0BO%RFBTdW^XzE9B+Pkn!0SlOHO^~`Z@N^p+-C?0v%1V1p{Oc&FfA zfO`b$4b-ucD*~*_ghC1@2Y~WcM z#~ft__d(nr7Zm%G<$HWZ-Q8iKI=0hnQ&S$oGubh!YpCEs%7u%0})44P|6sJC4y?m$Q)brSP>?8IabrmaV&pl^T%Q(m7#9lKx`774AM#t}gt|^7zOsb$P`)>{f>SmhiQ+Rm_8J zUYvcKa`{{g*9Pi(XFPhnnA2pATA=uB1Fu z#!IUYsxeL1*I$IA67 z!_;=I_uA(-t{K1l(mJ(#rTt0D{yWdL)Wg&q9S_>u_&?E{JO`YNzIpas8!gy+76`DT{fE#iTHItQVs$TDie~{oxaB>IqNv*5FNpaStk5AiC^;N$mN0OBNcb+GC3#R;J+@<6%u_n9S;B>!dsye~ zrrp?vI-id#&br2&U!pj9V%tzAQC9IRjTrZ%f0uQhy>VUOUWV<#eqsBuoj5-F7&^xp z#}mg5kik8-UjEo)3I}X;W|R!4(b8DJN^N9J8&%U(PnbQ`YQFR{EZQ&5Ih0$+}KH;)s8nTcA$65Jfe)f%( z5|kjfAGR?1WYAZGwl?}$(3gVtb@V`fvez#x~&EU$#6> zbIQ;5_8T;(oS+Ut-GaV%^vhwr$RBM|tP6Rf&oFDP?>6T>NUj>IG^ei;eUIpqM87Wj zd$BL*>qeh5_7VNhxVNG&4sGYucMogMJ2Lb|qmLTzCeTOSe#a4qzq%vccXSX-IsDT4 zJqY#}`6C}32gH~MecrdQrMZ4T`-1LgPYpV#IsM^&7nf>IpD?aL zT$^~ei+78-261iTdck#scUxE%^WeQC-g9Bwunl=`ty2HA#EVd104C_Vy*ms;$S7VOjgL8!Uj5rrK zN4Q5|UC0yLk9|aY9PMSa-_cG-dl~&U=$}D90Qxb|e}aAz^lzYF1^p7}CqaJ;`WCP~ zvwSA=g(ovux-W@UXZb$R@+V}pjBGzYiH{w9dQ}%sV!fNBwFG&tQU|tC*_{sQEF;#h zNpc@yS}&NLzG%FgK%X$)*ECC5$+E2QQ8RoyuAr|NeQxL*M4txwJ?Ng4IqzyQ_5))) zR&*@L_B=kPR;#i(5!--g64W!OL+~CJ>q4HR8y8_4@?Tc#(B1B=#znY}^?P2tx5fJ} z^h2UOi2Eb@pV2QJmU9c=TfVtE=EHt|FXMXdMe!ARD82&kg7J!B@%HX5GU@Jxj=fU<$-E4)c2hj)2+$A@=zD0?WAm>*>r`D1>oo$;|>WXtNQJCfWj z;+-ApOuXC0F~oI;>k-!}u16eCyvxHih~tT4g?byu8Rr-01@C$B&Irc@#|qnk^M(15 z&%5kXSQEN4t-N-Ndi?fqmXhvL$JdKjbF3=Ndbhi*?r*S&r|fo`b+3O)jq9|Qx2t`U zg}g6l2)14H)x-^&)?a1xg%rg6*kzMD5qyC&@i2-k;JvCVN0JLaixA zsHgP|(_@PCeFw|pbKIM7&qAKoT*q0{Q6tobOH~c;e6cRfgL^l|_+eRJ?@dbj0jVrk z?{87_H(jqa8JNm)|IrpTu-PH4YCDs~&bOvHq22r>F(DW$@}ln~zLU^m}h#(8vfYrnyU3* znj}^VW0R22^Wxjto*7rwqN5h87%gty8?-a+_M|VKIBnoyU0I>Q~g; zg(@V8gT+`E%(LB^pHF*vMV;2Df*sH57(cmw>^XjV{7hAl)7h~u-{`Zxih) zA?PH(^X#1ZqUBevbvw@cp1Gvm&RCezj(tHsmJ6{O}=H)W0-&1#c0Fgc`|Qj zjeTo!PF-_4r;2qU&%R3!vf;B2s{7haNWve>VjirwRMcq}Id`G@a(QLDdUZEDx_!8s zy=93capo9*-gW6VR(eyc8vbsU9pia0RzGc)gRFe<-RinL&FvWfgU_*E8_F%( z?C7sRc}Dp}ImC61@`G}P>+T!8`-bZa*BzdRF{T&K)fmf%@i`d(gK=~i?}ueE55^Z^ z>>tMSU_27W0b;xmmc=~!ygTEOF!m4QmoPpGI?MmwTt?7bjd({XDj)AcbBQ z)rR%1DlWie0AhN;+Ps>_|~>bh&L@_E-ub>8=r>g?TKtVHZ7bx{0K zwcz{1O6vJ%)OjrqsPzk#Q+DM$qn_V)C`lf?7eJm^wq3#;&B-6@LY||SxM@!Q=(k6I z__qB!v@3s|RlBD+q@K>b-Zp#iS@mX%BS~!h>=rNXY=2wdW16%5IJP*3crQ@=M86;> zPaIq1iG9H~V_nD-`+{x8y0DKZ8%bmU`i^@I?m_4iM%xf=M!dI0+Y{|vd{+p|Vt&kn zJn=3V-#0s!sz!#e>nPP(XWes zSMk0nXUq7M+?Wk#PNV$Ab!cpr9$cvd2wXp^F?ig5z?{w(^DFx~*m zVt&knJkckK_8|Hv@j2Rn=##|!mEe% zEapKUBi;|9zY(9~eIoi8F+b+PyH3oH_9pt=(DualK+$i8J}&fqp`QxxOc5hbSA5V% zioR3ykKuFlm0=!?Pe%V0`pVEJh8X>3uK1vT40&RFDf+w6SLVuxhWRlMK2PGKgLgl% zUaSlKZ0L(aA01-!#bH_WKcHU%V-?UphJHEpxgka$8kR+$82Yc!pN1IyW>^;Au|>Zb z`pVEJhWRlM+8P*lgmwqUVxd0`{axq>LmwK(ZXrgVuK1k2z}W640cx#Ro3&l(Gb#2~ zfogSmleT$DP9=NGa5ekv0(Q^awb%vTQ~mlryB*{0F%BQgB2WBHn-hzl+MK^{gK^!+ z2kZ4)np1PO0pps`SBzzmC$&d&_66I9@5|utIN>`Q_&y8f$M*&By#VA>yeQXp;VqIH1l!pFF-RgyVqYgX4_+v27RwiN9I2$@in;eL_>CTTM@5i=nN7{l#%0IpI#( zt9-i_*JbP@$r!c=+lg`hSQhi34B$H#_?tEu|BvqlU`#T`=VLrS#^K}d3E=M?O|%x} zhp+8dS!Iu|huBX6y^f7}^CGhk!h>J;)#V zpbQ@~<>k)tL4AUH26ZFqOq3s7kGSqoCUKo&etb6y-{Wh0`!CJ&Z~cS12*(q3GUmau zxOQ;QLX7$l`CzO#?vJ<+V*DH0`}iF5u6@d57P0LZ1opL_LqX z3w0FwM$iX>Z9tzh>M`_PppM0}6P{skE#rQNbB!{9^MdOU=M?WuF{XM(#!*VT4)@fV z{jVnZ4Ho>pj)hbAYBgtOviS9!sP0_7kaww_(Q@2tl8W#3;QKylwZ-hjUl}Za)}Ew# z$8T49H_c>O88R`+?}y;~M96dB?3ujXiX4_h&8H;!EflN^d2V_6Oc`D%m!(?UDM@}~ z1m9_D8S+WH{yC?mQ`sph_66IF?;NeKIGb(Vk;9T{!W0$zg6;Hv+MIi>%wuVAcCw0X z#^+dZ9A8msl#*gx`Ejs;CsvA_5n#{}Dq82g1~vG4dE7UsdS`0g0K3+8GZ zkSG4WjjO)k++kffRydv*1Ay|JxIR*I$~O8x@j2$lb%F07puf}=A6NOYE{tJ7zbm#M z*D1E`@%(mLtD6Ivztwk_5!|xaS7lP+q1u_(P56}-UzL-AL$!b#O*lSBylmU4pbVu3 zvGs48YesOB%~sa_w~mP!hO1^HnEpf+{Tssd|I<-&ILD%BR$ED{)p!@3San%6%ib`J zw(-ndm$>uZVM_XHCLZkBkT;DSqU=gA@f1}X@{2WxDpLg$KRYKW#x`Wy-Z0_acPrOF z@j2p$^Q~-Jn&!4LqeljHo@ZrKv$wRpyFJ_`ZV+$f36E7<@T*O`x^A}ee5{(yHu&`} ze4b*bmET)#wyB9TcYQoRnCDpYFz{o%uVw`IpD}>_UM5uYx!l`k1mC>Xk4^2mC1_c; zKQvePxZ{dgNTa7v-XZNo)w1V^0-WpkQt zvISP%p%}r9zC`ipD(SS5Qzn^>;L#JeDTxDeYu5U`xDmXkOm$^Z*BM$FEu0&{SMyle z_dernRr1%g8NusLhVsDpjkYRncPK`1NY>#2y4=>Tnct<{<}E*%r~jT`OIhx@%?N&1 z;H!3`z)d9`6Z_L?eOivvbsY!2_n(+w9IE+lGV%4<9r{fJUH20gaIY8};+J?IRrGNjk z9wt5L|DNRPa{0*tBj#GUd3!6{hiTTJn)9rDFzLPdTSvIW=V$vdbBE#D)7{0`ui{4g z2l8PZ+iH)lW;6dPe!A#)K6KV|^Y^V?wO_?=;@j~2=4y#sR*BpQJ~Azu7a6(HW}A4$ z{HvJsj0QRApIeXt|ZUhe+zf1WvDqee^stt36n=X!K1!GOhz4#I~S2${ZG|SN_g;FbX zaog@4rxISjTxs?!YULfD^h`(ySZ6++%gPH|eFOVv+hCrS)ymg)>%g9*yQ#F!Q&%&B zTLkvyoo8Ej&0VrwF@i%n4d&IuEXpl$ZlDodwr2i-ix0c8LuW54M)1>xnkM|dM|pFo z1^ZQOU0dGv{NZ*b?bQ2tLv# znlI0MASfg%v*rrxdP&zW|K1~0Y(M2s6!3`lMS1%vzsS?q6CVD+JDhmIffyEhq_XW( zjt%A>JcfCDRH{DDxWzpccIhDui^ni`?38`!<7sHMKvS%;PQUFg-5tj z{8}N+2(FoNyjh*rMHzo{0C$C7EE;P*__(Wb>BIp3vff17oEDvxNzWYlZBX_fIy+I%w`J2d%;O%!MmP)L^#xG9EUEzl5W!8=I3?Gz|XP#*d z6wan$)e@RBBY6AZ;mX5_+m(8IyKq;S^f?FJo-7{IYL!y{P97Gz#GkvuZwd-rj(lZ1 zGr2W8nN{GO{a@N{#kOXZ-hS6E-+OHvx~Mh7JcCjV4C*%fH|=rOXl4Xw?KM)#5!zcT zo*2%I;HZ@CmCJQEE5FSN;jZxKS}nCE6LYc3^fwk<;rVNhP+YEsmFbm&8^P0}WaYtw z4Ysr|qnHs~W!Mny$)r%te@1U+1aDqcS9{TLz7keDjJv|!Bll?O8^tTfr?ld(@QOxx zx!2S}Y+i~_nh|`x>ve76rd?W_MU9v%JgNCS<&IXL-Q4_LafQi;z`&o7EdD)QQIMLhHyTi@v>W6Y8n0RvF zpDYfUoJ~u2tAi~I$&V47c*)8eH;hUwd-Y?Y5nOFner@CM3_R=VhRg^io(%XWi{m~{ zRQ7#N%^uaL!;Rq9xgr#C-2fInHe;d@{Ao%IUzJe_^v!b7W(23M8K(X9GLj!2?4cRK z#FGL4Wbv47BZA%!l9g*0qd8)wPLH70-hwjWT{O=b-FMgP6kE;LMJtaWUt8VJ3FfG$ zF+BcY!mi8h6U^VA$MDzLh6k2UbXLd>+$sRG_EZE_2~$F?{f}P-X1LNWN*a zhh_xRcxo`V$zqx>4dyOceAZM{$$TjTKU=OLGlG{dDypnX)!f#)RTMLVX?56RVp-?$a3sKX_mD?=0htm$Iy)SRQr>vnCJ5ls9wC;vO~;ac8T60f|f zG52WLQ(HDk;>@!N&l%H0yFXgyZRk1iRDgf7ctW-~O}TMOIdQc)Gl&()pDfnTSN}f4 z>JRj%&gX*$MDsgsGHI*A#Y7_*%Oc*{wS;zUb`;CqWle$+Om#7+H(88z4ICJ+T%Ec@ zX|$Gn$p-M5Udxs5vv(>N4!39fJFigk@}0`N>8|m)#*tdN9ACAAUz>8oYV7Y?aOfB9 z*6XCtslN*JJy~3k{zhKJ)iIja#_r4rZn3+ucHsBfTBR9b+z4)x&8oOXS+#qU!kH^v zYH+M}$iJMHZFe{~f^qy2KT11FTU6__b~dpIUmZV6d%yULb}z6A$LEN#?1w%dwGEXA zY55m7;|o@P)E1A7(kgUwjmdYafFCtkjCCO?jNu3h2VQ%5VEj(papwP=#W&%AMoMYG2BFn@eAh`Yl63qC1#nnY_4GC5>G0eSdO ztox>QA9befr*>dF5x4nxUs*fgX5!U0o%!-kIZb#AlB`*0!eom>Ac( z6Gt4I;fdC+^M}NzwUa)txM-}hcSi>8FH&)GkS^2{CEo?Pv#s(m6FyG1>ZVa~V%pwQk^Ux7imL^?uo2NxGyTZjs zS=pX|X10Caf|lR$(HyIkC7UOh&z9}O3}OxPCyS#F1#2O3bVq-GLZA`+Y`v97bqKIs?7Ak%2u9ha z7yt$00g}bk9tGN#EN+)*|lqDiNO}ruH-FOR^aIQfTx_ z+os56wiFFwm=V15${S_TnFqEF{_U9&oa1@V!0dB#v)AM5G9$Qj>T$LSY9VcbC5r7_ zKi+nvR3Yu9k`!OOG|qM+te{r7Mik4IKhhR6s5hH*Z=GTUXX!UYN$k>uooW1CF@mQZ z^iiVQ`STCs%P?2CQ2aplc4Ry4{q<~SBlv06nc4{RXQf!mM%)NqbZev1wy`Y10aIZp~a_Q-YV4x^^ShVVm>all>T<;h&XGHZvSw6CvwKFm|8#**zp`laK59z3QQesbzpj;;=k7~rUv!q)2rlhCh!v{cRGXBL z(`*D^&msr3F7-rN(X|u%-{8PjXA(UrzQSI@Wjc5f|?EK&QkiHSB&6#Z(D0Ot2bcp z8l+`L@cqhd6u(Lh*dGnkG9!5GQLFa2RTCD*zbi)YngS&gv(4+y#_c_)7{NOWM4Bh} z>&;#X>lGt-bJf(m!r|gd;PxiW2yWW4vo?HkMz-p79cBb~s?=FwZW&pjTy>cdJa=%s z<~_Ne^1fU*W(0pVjaJmGx!C2Vm6;LTDsq&zvraBH#!{IX!MS#&W?!=uS58DWVMg$u zyW$nUF_Fpv_ioGx&c8E+&zf5$&~o>r@~imw>3)2K=Ll`${9^1^@!Rg#mFmlPY0Z{2 zVy^IF%OKvjN)xS4#ox?Eu&JSyH%s?1p!~2IW+S*h`E4?{pB*&GUdwC*-#laGBf6$G zOO2uujo^SVF{p=XW$%{FGaJDZ9$5L|Be=)Ry|&Arqu7^MZ_P$9>BC<-dwkd*!wx;pVXN43r`ZVB`4842*#438 z9kx$$I5vfqZC#trc6;SAvl0At*;Zv!vo35yopG8GtQ;H6(q+xARo{Qr_P@cIOZH|T zGp<#3R@`NCg$wPCW+Q(;VBT0c-ev^XTRxCYpWH_Kvp^%;uj15at*k}P^yV*1nkBlz z2Oe74;m4PPK4cpnUu6*h3-o~&>1LoVBq^N3hh1YdhY%Xy}HW#HBR9856 z&%u21nwz$^`|~MA@PoZE{A7lFw$Vj)nvLMv!w2(LGq2g2_Rgyq!F5i?@B{bK+aexp zHygp!cMjw5pP1gu;P8&de_~n-9M;8u;_u!OzN!zxYUEw~(`tYrXj|Pm!2vN+)WPUXCohs_`9&5hvEx2$aJ*><~L`2Uq?1iyR`rsQf-PKhnw zj~l_nlLP-`anr-awby$`Xbb5qXarAqYGt)@=SVzMbZ4Rwy!hjM<@K^!EVN-NZUhrg z4*ZkFulEhoQXXs0dzjxTMsUrV6KoHs^<(s@xx&F42Pr8}HRqST-YG^f^-F_3CX4fZ z_E8!x8mTqB(w7;*H18V7K(d(RPy?Av7LN|xYQB{=4}axXn;F5~y^7e(yf?r0V4Y?J zOINoAZHS8I)$3=_jNr57Gn+fn`>7w6#A!xwuU9F|8>1pw>bo-)Be)I4idEazjn!Xy zNil+T{k*JV1iSWjp~Fv=9Bw}Qd*b4J(fpVxr)C82%PI#2P{$_tnEF-f&?7-8M`XH~4&Z*Pf~|Jhu2Vn-P5Lt(EyN zPO~fhlNpJw@T#Z{O7k?`*o7;jG?(~M3_EZ%we7&RjpkJ@@WZlJ);GYGxNTFc*$8fV z+R7qp#wM5!<~F;+*Ve67<~0jrqgQ8BT;XPa#jx`C(Fr9VM@`tT;)m5w zE7@yu<>lih>{s#DqJ7x16Gww;gsxRw;SpWL+HILD zOl3Ln`A_WXy$O6Shb`CI#^mR#a``b=*p)vJpW6p6S29KC=S6b*(chZ;Z%pfp!&>`q z9JN7%HT$3Vbr~zaw1Fp%yBljZg8%w$5U*USg=RO2W>@%=V&%+t>n@))^UX$Z>5*hh z26zSCo6+Cw3Qs+6<;$65Ue1Ok8o@0)El$i#@hd&obx>U4o3E`rQd=055IJp^5q#zT z0G>N%SM9;p5jI!2`c*5>(c(-{N4_f26)qN6LEBe!5Ia~xQjB0y`N{eoUHR7V`R!!` zSYU-7TDy0nY_6~?pBO%WLi5% zr)mkM!?+Rby{5TlSvpf&yfTct!ULI=#daHFo8#+cbA><0S5e-6Tx7QO8pK^;>&~*u z1)sUv)Ox+SE1cWQ${wW~W_wkg*<4{){x^K?%KwJXUHRYe`DcnF%3ICH*5yvT*%kil z_rd(x-CMS4sq-qXa6XDb>e)7vZN{QRvn%}nrr*rfd${;qm&xSfi#FTVX&sA)vB;I# z6j%5g>8?-v-X)G2+S2R_Ki^^HcTQzVT5MlkhVQ0mv`c|CGE?%9oC&oeRn#<#tC+=XBSPbwV6c`J9vc{MrQ^o5nT8n!)X zch@q3M)1p5RvvnOY0&9cn*xpCQQJ@L^rm<1>ODwrc7@B9cBBR zdAMe~-=77o9%c*iAFiE!=o+UP8N>Y_U9t_D8XEMgSRc=KmT=yvK)hqDlEa^}a&xQ2 z)3sbDBG`k@yUd|urfUtZ{|mQCFt2JcLtD2y!ZE+a!cy`~*IFjQ(?Mn7z8K71vY39`iaCGtYGRy~6~9o`R{zZ={Wq_E zK4&&7tN75@mYVkQKZj=JO>_G3Cua^Rzl!Piof!PqQ?j^91*`ea$zfXluMXKTgPi;) zCfQ&hC&}Vr1I8=WvW(X1-s;7S;ANk(u=Qbn{9*3H%CF)Zs~MZwxCq~vrkZ91e_g@& zmS#ox;0)C?Bbb*O$jhXwq}4xRQe5E-XGbeL7EAm|uZHa2!O_ajeiAP}&Na^2ZG`gX z%{uMU`fkh!R=Yq~>RHT!v_#ifyy~D&F$!cH+zRVSMt89onzr;9XW$bDfXvPTrFG zdkxI_zJn_~`GcfQ-51S$E{JBtZ>Gzdj~31Q)-fe{PU}K*u8SoDMr&_cO1%3j#~S(h z9P_jurfTK0bmmdp&M23&F>NX9%(JLx6nu`jY5WS?SkD=nDnv3@xKqQ4wh`OAY7-9+ zV6HHYxednumoSZa5RCsXVb5h&wus(Wx&2ohD z)RiY{*=)lVBY464!TiCbVp`Ewv&^+#59Y1Q6xYsy=X_eTo>9yd-hWr-8S=XEMb{51tLdAuWLNTJ^LJ6U?P*x~KR9Yw_R1hi(g8^5#|fCiRKFPi00Gx1;QdBmS};nP*@@?7ZwvO6_yb# zr|&C;)xrv*mBK1vt*~BLL$p>{Cu|hrgbhTSgv~^8^nIHUFKnT-mCz1hm#|$(pwFE| z3G~e-a3PV%CTPNLVXt5(+AZu6{uB-f`-uJ&_6rAvL&9O6T(U1lyFu! zC!D5qhR_A!l5n2rf^bo|B3u(L6I~Im3O9sX!gZn>!cF0xa9_Ah>5g!h(mg_tgvY`I zN)HJ=6P^oCC_N?gN_Z{2p!AZ^8{w_+PWVgsD7>fifzT)6v+zauE(qdR;j8eCkV#A- z>i;BBreq?NN=zfBBuXWw7So9t#I!`|#Pnh&F{_x7D6^P_C@X!>F6I=o5oH&1h`Gf) zVlJZG;%{PJF`t-UEGQNc3lJ3&3lkNg@5RLuVo^%P2$d1biY3KTVrfEU9H@d=Q7lKP zyjVeW7d=HcB6rb4^cHMo_YEP)6*h%axb`iUZ-NX>Fr`Vk+MC>7kiQ!@|N}+`MiVMy#Npy7akMys(nvz%#PQ-7N@EF46eo!jh$f1Eh*QOB z;$%uw2+a^@iPMQ@h%?1G;yiIS(HwEExIkPe&ZiVhXtB6dTtu{3Tq3RzSBlFhEhn@_ zTq~}kw3^U*aih47XuY^W+$?SpHxX?XZN|y;;7jKH!h^~t_#M|Os@fOi-@s9XFd?? zH{wf5uL!*pKZtLM-ihzUPvU3sFG?Q?eG|WnUnqSgBuTPFie4fhrI1oex+XUfN-d?8 zQW2$=(n#r~^pdWx1`6q7^P{O{p5C>V)b@b){OAY7?q2HI(WR)t4GbO{GRsV@gd3HJ4gS&4`*y zEu_{`Td5UMYpIPinzV8|sh!lGP_WcV>Od4Mb(DUm(bDVcOsI?0Rq7^%NIj+QL?KcS zDO3uRbba27P;aTP6i(Dz>LW!;{iO(^NU5JRP#PrtPH6z4XemY-Oeu=c5NViXB^n|P zl}1RTq~Sy(q><8CX`D2g(ilP$q(7wbL=&Wm(iCZ`G>Ot=LNlb9(lkob3C)q_O0y`< zCKM|zkmgaEPiV2UL|RB`5us($3TY|PGHJQAN?IeWBw8h{mexuw9J{$Uq4m;6X&upe zX@j&`+9GWt+APIM+obK%R-$cEyp$mAl6FwqNhnN8r15G;{STA4WS4A|G(vl&ebR19 zdk7tn4oZJg+E3_+bW}P-=`f+=(n;wU(Q)a7bXqzqogz9dosrH-=cNnMW$B7^k<5S^j#9mAKm2(sQCg+j! z$@%31a$&iMT#!;BLdE0~a#5mUa&ftoTt+TQR7x%_mzB%O<>d-;McGYumpx=p*+=%3 zy(oDT@{|4L069<&lFhOrGg*}_awWO4TurVnSD{puP))hET!W~lTuZJi*O%)M)s^eX z4djM$Be}8ML~bg#lv~NoC^eT`P-;o2t=vv-O{oo`4ss{CJyEdSk*E`W?;>}TI}>%0 zyUIP~UUGLzA#x8&Jqd-$z2#7%FgaX~l>5njDD{;iC`A(bT^=a+C;D9;AVAQ3kb!^OXVe$ z<~z_hs&g!TTPiP?SIWzXmdh*T)$&?-713&Wjl5poD6b=0FK>`H%Uk44M4RO}d7Hdl z-b%Dhj+b}JyW|~2JLLq~CUcq0CHmCl-SS@9PPALzBmXHMkoOV&DespL%SYsclnxO( zE}xK(QaVQHw0uTBN$C`!^YR7xETwaVF3VTsi>HAChmHdp-bNL0OmxNx+Z{)Y~d-*T<9npLFgZxSUB7Y?M zB!8B_$%5%C(Kq?KESXFukw~J2lG2pgl!7RwDU~U$DZMETQCd?vQ$|x}QwE}prc9=+ zrtGFHL|IMQOgT-tO*x2insS-C%K1#cnev(PnDP?kqwfVxg-rP=6)+Vv6)_bv6(%ZT zDrzceDrG88sRW@irgEmzL}g56P3|TSQ+Y}iOcg1)(RX+HR?*~X@-lgw{7n8PA4X_=9>X{mt8ky=7 zH83?aH8nLeHKx>rP;*lYQ#Yxlsg;Q!i7PsV7k{Q>ZE2)Z5g@)YlYYiZt~z^*8-)8fY498bCDAG{_Wf8e)nf ziZNMOe2X#nMRw&n#P&Nn*=%x==L8Sg8yazrFK|;>B-_t zN2J?+y2Y1?l5YEDCyOr|k#76tBD+tw{_>OMm!CfM-MTPYeue3?5Lti49hP5FviwSs zwO4{tNr&ZEo-DueWC4~V>(8AmKX>|cBdgDw>_2b%^dcU9$`RvhrFJwIRDN zn5?|^4vR0CEWNH|?{%fmE@bKTAbYO|eTI;=7e@A;Zt;bZwbz&IJ>BB#LzZ5DviJJa zXFsy^29dot$YJ|Mla)8vVev&fY`vjmQgjV!#`WYf*0G|OS<#gdgbmu$WHWZ^9)8&9|L7Lj$Q+jdJFcAjesZ!=kV zo5`}<^a@GOX;xV z(vTIW+i)4kg3IKv;IfkCrrT{f$!gPWwmg4ZZ3X_e)qdD*KWw#GoJlvcp;swIqv7x6FRnV!=tQvF;8#tmof0Soq)eS40vEY>>nDicVsE{jj@6 z|7~-PCyPtBwGsw%vbRuIq;&X-Ob%aBT8FRbhsJQ_E7J8ub|T}xqEZfx zp=*m0q%Vp)G(~BLzo@K3QB7cY02y}Rf%nt7n zBR^3U@)%jjdsNw>Evk~wNY@;??x^a}8@2w{AiAfh9wpspqiCXlyiBB80IF@E@praCmnbkZNXuSnM+b4gR^dSgC$ zhkodd`J^{=Ewb35IdmVg#MpO%pirpFp8pzqAY-^vH%-Ul9_>ZQk0?o z(m#3md-WD@JGYKrXh~LlQe#avd{Sdea_peS9%fWTis*%^ z@S=tvnjz^?hZ=|2p<~!_iX%FQAD6hIYv^&q6KRO#iH_(VKO{}QS)vn?C&dLl-X7=~ z2lQFF7Iw4A+1(Cyv(4FE?Piz!+PXd)*W=3K6~pPu4dOY6F`KTNRiU1hm+Sm9EtHQY+d*t%{FTceU>KKb|vulVmbC``dPZ>*?+M zo%x^t`G4np-#O>ThNhVlN{HywsYE9XCOUV<)G4b1we|Js_V(7c_CV#lRe_e;=5(Mk zFtfF}wxe}HO=DYqQ@Sh|j*gj}ZeOw>xL|o}dt*mqYfF2eG*I8#yu7s~-O@30<#O&6 z3x(tOaz#r=pfVDSmIj&|TUc~VtSlUf#>-=gL^K?YCzus13sywJ!ALL|EDuK`p;$ax z+LJb)6>2YKg`NWOvS=)xhz5g^M7W|N77xZsdyu$$hcXtJJ-#Nwe(P2&UYu^5-I%^4 zP#NTZUD=VIx_EJWn(YQxmllt`rM0cOwy8gn2g@pg(eh9{77In#YCIAv9mC&MFo;H? zp;$0p5lg7Ay3ul>_o4uSM1q5k#zN6hJQ%`!b|0tD;6wj|;2T>OHFBc#y6lnMvPUCf zv+TiK3>^9aJ2PskCsj}Hwi?{2pQ{n_pNa8=u{0)97AcR#!|`CEJd{Y3hlAy%aZbhZ z1ZPk*S{|4$A#x>Ne!!8RTuH>EtGP#QyQz0NanmQJ9wq2ZVYv*l?zYLcJ1FOwu(A%aL3?VytbC{HFY3NuIs0<}S;UES% zuz}?DJMi^_U@oz9TZ~aj1QBmunt$=HGdkKD7xDfX;wtEE!y*gB5Xzm} z$$SiPV9m#FiDq4n^0S?)^Q$hZy}r+G5lXdEt*M?6!&3Jr1m0_cWzi@?Nc>-gfHmQBoVRhYAibaUh_0=%nGgGm zHNCcj6SZzd2mW7Ux|}ICx9X~t0|6R9t%nF zL1LtscR(s8rFc^^QuC2zEv(yjKpYFgW*6YM*Yg&k94Vx`YLOsIt{yRB#P$h9V<%3b zPxmyXmhYIH`e;v6mak5oz?WQcA27{-_@>mBRU5J=Z@e%CeEh}>vxfgZ_hX*wi+spfCC{FRS&5`3keX($)IlWr5KT|7iWJ;KPsN z;1e9J4^9evc*ggpFRhe;juw?I3K_B1jgySW7PtM@hSS|d0-xakABSafV=Ut(gX7p2mJ)!lOBvWj0r8R z=}B+sFXkZyjCm7$2OQ%~dXTXQ503OE^z(8+@I9gLNzbyc?w^&~ z@Zm$wpYNZQMPJ}?!*0QzkkWfXr{SZ14gZhak9n#uw9(hpyQs$$bhUm89IdbRKCMrJ zpB4Npe1MOB#sj$0oAhA3LBsIj8U2knVB^8?5sUDU=S_ML-XuTElDWAR`gyT@^86{O zw;rEqfB5_<*_)53QyBeTTreqr zcyOdQ=|Omte6<#4o`rs1Eco7Vgg0<tQ%jv-?vWe{4B!0gm!u=0S3R_1WQd z-}BE*Y)j$yZu@zTkKcOX;CxYM8UNhbjgvb!@x3{-3UF`^=FU*bk^0@e89!2Aa8y1R zj?@>i=Wz<`!&zDTa^J(aW}lb)w&170F?&vL=LpUP=BL2neH(j@!rZMBeYJkx87lZ$ zaLk@5JgDzYU&#^PL z1wRE3=AI91?v{d|_g*01BXIvVcUR^sjC-|tkH9$4)cOi*eR&7Y;|OoysJmT(labx7_+<>bEC1x-aY+ zWdrl4EBI<30H3Ly%u^g-!MCBS^;O+zeTB8Y4PC7-`D%aA`UD@~us#XC3$KPF#_}d! zJs`Vp$*xq(<6RzIG(zD!w>_`+N$mmqVJ>#&IpB}ue$2Ch(GTMp&qCjUE;u|+3c8xF z-XFA|PNDCB2M)$zU4=1@#FEo-_zcDQ>QUVkXNqcu)b~dC6*lE<VulznBc${dz` zr6$JGbAq}sb%*&(n)w9hzDstbw(NHDIC8GK&x7o1=3IK~?!nB7;HbGW-lPZgHTqN5 z{5tdV(@Lrzx^!Pve9sW~@;N2d*H168FC22JyR>3Z^@5GtlPA5fFEhd#RDEmLx-RA? z$F47_u9@9nGv5|`Tkw;QTr{XU_RgF<4*Ht0STkufd8}Mt=}meDK5_WI)ZF8`Y^+z= zhkH|1%kES2Y;ph`GY`Nb2V^ega$AliHDzu<$E+Rmb88B0Jb+`oNse4oV3Tj%`gT6M zcVP9(l64u(vza%R>>Rj$Q1z7Cud=(%Rj=y;j_E7s6FOHMQ&PQW-8oph+*)HSGymWi z55O01D5>uH?zOgDYpE~2$u*T@Nlob=9!&nov7{!vnOI~_%D$2#b5*XLTvORsYDx}! z$gQLFCi`OTdfR8f7xSFUbEzrUoi%fHB*y~Z<@bLXRaTclb6c}fn+yn6*Va{UUi(XXkJL;}-_sFdXQR zdHw=J6K5tkz&MNLeM6qbz}kblljyP3yA?d(E+F@FV0geMeghw$Qd6Gez|hCpE60*| z0Pb(@TIyX-YpT1DjwSETBmAg4p7x{ec&0Dz2RQ3-uaIK_8%=P4!QnYI_ockM2i680 zcn1gim`mxI{g`_o{J6r8XZ*QC-JGN0x5k}ot>{>WT1SaO6$$rpT{!mtNt#b=cg0-ZLs8swNrP7Ue-?S5BhuT8>Xi6{6F-jX9wm_wb$L& z;Q7JKbHE4J4`!aL^&LMLKD55;6B|F^7sVn*_%X2;#KMD`BN4mtnfJYj5%XzcFNhD@ z^}7Ak+=b5N8>?JDn0bm1t{==iSL@q;FnoXyu1{?IfL|2DxA0RG3lE6b)!qtX5hLbP z@zJjketpPj_x__VcS?3#oAHC0mjoYNKbU#8)=&Dx#t-;KF?@71>lX8d60DL%MDz_-=1pV$@rqL_6v;Ip>t2MZ4wKN!BX zzU>nmKj0U|@U7#8pQ2cJK)l9VLEJg#+|0LLTJ0UQ{)1#8%)coPelLXix1`p|6v7w- z9Q@t~He-R)D~1m-Rx@#I88tO8o7Po2u^IxYnUj zYjhRDLO)Xo!-v+X>I0jx!08pkhxUxIdc{H?p3S&o>O45DwZ--{UG$HZO`3lE6b_$i1*jF?XodqMo(NfW)_Z5rgf ze(Sxi9}FJ&%vF7gVequR?FX~Itu;NL*!TgzC>AlokBPk?79J3<@m3Iv7%`tF_JX+j z>_@sL-?Y}bao^meAI!WA_~81%%&XG+89x|4w0@Nz?6h5Hhkw=K{9)l6Nk5o*8SugN ziIbY|VvJ&#bzSWz;|Jq!JNzdb{0*ZM=>Hq;c%aUkzjD2OY4sM{53YImCw67k+xE5x zrg?sF*-7)9@yYG>-s&H_e(>%~mN~~wx;NQ$<2Kh1e&j9Jy*7Q0eL`r7=LfT1 z=WSZ%RNit_=CD_vwEbY#bcB9UyrkZ9v+*kT`g@ul28YWqxqO zHro$o54P}A6tkuy^owHbAOlWc&=!_40TzczlWyYRCb_j^}2cz*E5=WMk{4}Q05 z+%-*(AIzGz&@YNv(-rzfG3S^k@~tS|a8;8xz9O2ezkQ4C2XA_Bt9#EOyOV2PS?c(~ zqxNsL$1Q#{voO2V^MhH_7WzdoYq~awsaPXEzo*xV!!cS4mb5aRD&yVK^^Smhkm>WM>`0@N; zJD8L3r*V(h7X7`*Xbwr z1iv7LF7%lTKmEa&AHy$*IfoU8hv@W!;RAkH8=m`vF+YZ15Q{w!_3mLTd=|p^-A^4F zj($h;@b2XY>vvKQ@3MYyfBp2AuiqIxyqo&L`W@V3@8*5HPuyQW@WJo1m{0S*+$V+) zet*Y&n!hLXiTmpZKHvvy>j&$PmJPJL1$Bf zp9-p^Bso;YPm*k^rW#7|Q%z%OJbjJE@iU$#&_wz=ox{&WI+rHXRGP%kWST0{R9&^XWpWrFvS(Pc7BaVrrm8+|rDe(lT1Y zt&vePwNev5&D26|)K1H}UBu{Ox`aBotzfj0R?(&Wtfb3mHLaz~`B_bC=nA@$H?~e% z$LJsE8oG+x)r_vA>*-o<>lxih-=u%!b_1ht(@pd(ZvVvSyL1bEhuh7J{+Vv0?{T}8 z(H-=Cx}DnwMn9mt=}vBUF}j!TqkFjh3!?|~O55lOdXj!g+vzF#75$o?rXBPQ{f3^U zo%CD!H+qhC(eLPadVyY~m*{1BgdX4@-uhSlSgWjY+(w}HA?V~@_Tl5!t zo8F=Q^gg}I&whH3{)0ZE54e5E=s)Sd=woi5F#3!>r%(C$jQ&cNb&y5;SXPNO&^p)} zz|TNykaeham~{xZ!HkZyhFFJlJA%lo`Oeui2{TgO?)TgP%6#^_7dN!AJ6PGmIP zI>kDfpW)V*t&!GOtP%W-v;x*>>ojW=KclTvtuw8!TBmb6gHf4vmQ~7a3?o@z166$; ztm&YYV8J9 zYv1fqYd5P}yG7O7t*X{;>rrcWsam_cN3GqjYVE;3Ywb~0Ya3Oq{X*5+W>sq$RcoHA zHPl&FR~%|>o36U2xZbw&gUUnAJ*}&6C)eGx{Gb9+d(Y`Ae39$#1%6P8uW}8(!Vjtu zb@+Q-k#BGNRWq7kea#xjZ9JoMt*=|>aGS_ziZ#`m#BDO8>DCNu8n^Qp&9=_BW^$Xw z=mKk=HHX_=Mi*KOtZ#6eC-w-$1%Wwh98uoiJkGg@jbvzBmcWYl7{T20)V88x$q I3EY7G8&l-I&Hw-a literal 0 HcmV?d00001 diff --git a/website/public/gallery/glb/poly-pizza/triceratops.glb b/website/public/gallery/glb/poly-pizza/triceratops.glb new file mode 100644 index 0000000000000000000000000000000000000000..40505c5bd8344c3743b56c1ad58480d59b5da69e GIT binary patch literal 80012 zcmeHw2Vhgjvi2#Wx6pe41ECwsRW|4x>xkZaZw5^7m})S+m>PQTE%XvPNCzEyC>I-1c4SRgeThm|zoyl$iyg zO5K_@V*R4pw2AKByL+$Rei2P${klbUjrNQ1bM|Q+?H>>nUaER@?+z^kTK4GPyJJkp z?%jI(mGo=Vy=#x|-J-k2)Em$PXhW=lp*Yy5TZ~^sSYU8Tzpfp-0k2ZlFsr{UASBQh z7!n>B78Vp7Tr$8vAUMn#9vl!55EK*?5*!v1Ub0kJh`%)?EGQt*77`j991>)04lJVj z1B<}GQ2(&NfKXeQEi^RH8W0{_(rOFww}k=<4GjqiG?|74`v=1O@Iad_C@3Hx%m(vg zOws%rly?S!#I5_ZYZu+CLC5HReh~ri>wuW(n(f;4js}4P2AA}ybhqxkx<+;RJ1PhG zhldA+g#>|U!9k(6KwD_ZQaA>ZfvN$4R{S^U-B`Fa&=vqxA=VIE0LuJMXCw~;8(Bj^ zXD~`|I9Tlu9B}9l416nXhTY}IV3DR@K0>Y=g?NLAakP+9&NRTpm!u3EFPBze+l&|Od!8k2ZbJyO36SB2O+^W5FbuNNQikiez;H)J4B-U970BbZ@&)Y z^=qPZ0Eiq4#teq57;fc&urTxf1~;~aS#5#V;DDfzcXxW2EjR=QL&L&C!h+#eCyxII z7U1}aIlw}HWZ+xzL?_{|6z4t)A5{MbC&3yL5a#jsd=3#(zDkubwMmRVY90tg30>c9W;5M~|2Uvqbk%Moa zNPHOZM)i3I1aTjR4~qXg4+BPxFl%sdFc<^^!#_Fi^ zKR5(WRDeV|bTCYb>TRaKv3~8NyG8ekis{}9vi|O^I|a7y64MTHrM}U3)wWYyK8yS0z$0A)ak)f$M)e8{}LW_}oM8Sp+a zd!L&#E|36)CC(S$ty4FqSI4$cdsyM^n5bUuF_RAp4iBa0oUCDrXUfmB23huRuJa+; z{lhvC)iF_}IcJD93=X|H#MS`{4s||+z&|V#Y7IWJkH zDf=o^a5`-^*pVKsdsUB)iR#j&W1BkN`?T-S4N646h*-bYQN5#`-Me(}RUxX4=`&5O za8zy3L!h7w3No{|t_d?44M^0BF?l}*@h`+?gS##WoGZF($KJg=_KjxmHigq>78Oxl zdUS}Y-W~VauVyVr?fT_GxVGK zVRc~pdwM{9V8yHoYK=s|Ov3*=x21yl^S9K2><}CJ>VLiD=Bm9rK>10Ihu2dP)TLL) zuJBl-Zvs_R3|vdC`^4a{v3|8`)~#Hxa?Kj%8Ld&XPIX5$xUfq4)hpk~S+i!Ha&YrS zzIc!1YjV+IRs_WNmacti2Faj1$i_B7do1@);l`atO(N%~Iqfx< z^30qo&=~ZvPUP<0s~sccAmfYfIn}HS7J11=Wu`pmTnsgarkxl$D~HQV9x7-4DiOwm zGNEd~oZSv88V67!{gvcepC7`FVw-A2rVEq2 z_L};@t3zdsw8!g4PTX?AG0deH$G*#|_N{ixYp7*IJvM^^=w%q#en9K zDMsbjou+E(IFH)Re00L;)@Eg4OsgbDhYg`}26MMP-ONYBMI3s1=!`e@boO+OmedSPHdZ zu4GsW zDl@gut4X6Z|2NweN3fuEx->?UH(4Xk#6NYst};f;J*;PBOxBx@jQvJwA#-ml6+XG? zNO5b7)@)5^WV7YR9j-Z}wJfpcl?LwpUNm&>x%!i|Ty^~;_kKOyaWD5It;(#G%Gjyn z94D^FYi)|WQttUJcSMaHuce&aJ2FUF3%=&}%N``F!RyEk)r^Bg?H{=t$Rmnzk$3M0<`N z-m+1dDbEo{Ki6_-tt0p6-s~k0mGfbN$=a8WcFI6ugM-ROWuWp?8R%R}L+wUopt?|* zsXgyCo1m>tHQYY9te`bpJyAO~FmGg)xlbK*uc;3_+cZ(T__<%?nXShi>)TJzM#d#q z&Ys-wwb#@KD9@jBOw@)BZyNci@J%oOp=$}{$7`Qo%AmON-*iyfs0`HKs0?&2rJ;UE zWuUrHnW=vs%so!~E$td*!HQ3{!RN+l=hFs7rr4QNvy1Us*%gB#(@x8vEsq$Z)s$1K zhkJaYS*nfIHtWHWvu;?lDwWthVJea6eUz9JhX8}ozD>6ZwJE*t)`o&icx)zmz^1Qx$l2+hYbmWhx(|XBI z^{RArg0{`mQCYbuoknG&GEjY~40JA~p|VjKs4i4yY9EX{!_;!>>i)?Mj49nNHB~3( zec;Ip`OgN(fAS2x@4@&L1bI=K)1rZKWE|u_qkcT^MMLLeJjz+WjyhoYHy(`3aghJy zdAZPoaoGWR&hL%3crd;f`Msw)<-$e}#`jpri~3%f?!i3a9OOTZZk+I

r|cI0|{u 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 literal 0 HcmV?d00001 diff --git a/website/public/gallery/glb/poly-pizza/turkey.glb b/website/public/gallery/glb/poly-pizza/turkey.glb new file mode 100644 index 0000000000000000000000000000000000000000..e91c6bd27b626af5a0433d2ad4df5344e23ef8ce GIT binary patch literal 34392 zcmc(H2Y6LQ`u-e2G<2jWA}ut55N|Ir_sqHUCcU>1LP&swKoXh=2}+f!QbiFP7ElC4 zS>T?-3a%@<>bh&;ud-lAUDpbN?)v{`awmC%#7v(3J3mYcKHKo?lf20%)ElBg;Vop6eK1kX5{70%$t!pqj1>#nKZ=j_5{Sk*)s|gQ{16Y zQey7Z8RW7{AlV%X1jC+?-{lMYydi&*C)pQvdBR?o#~%*5eEx7!7f*7)9}aunp>W9U z4!Qz<-*|G6K93yulHERU!0U2(g2A9G91bM8UCDlTz!mTWy#c@5?eUUFIouWY(H~FH z7pBpLGOWZAJ-T@*+DWsgOv%h2F*S2;Vv37C&M(XyIAuyfCI#zSm{i%iXXNGQrsq^; z)vn~QJLvJb{XsAN3Hn@~q%QO<9P$Ny0e{f%_51x^`6%RZdjoE-%j@-oeSuKvx`hW? zX2|RFg@Zo7I~Yo$M=ozLKuZh+T_KOh?GulF>!9MLyQ{qPsWT=|C4yXb!@Z>&?g`T7 zmu$GJbOr8EuxuZOc8m6p4!L9}JXH+GtA*{S?DDz;Zu)82>MLiV$KwxFMnrd-CK1aPPoxWkLV>V16mq+~z7U-k$+|#* zGC@T21U+7Fh)$p&XD}2FdOZQ6p~oNcmo8s2(I0Zrcn@VJBxxr|9P+q)zJSZ^qZA4z z{?>su6ZMv_NyakuK{A3U=#bIx_f)nY9&I|3f+;$>l8GF|Bg&Sa80c|@1$Dgi!50qG z`4-6x`u#~=+{u0qo&KQ9?e~UUA%D0`6aC3V)1a4_=ckb&pGOeV=OsNQe}O=No`#d+ z<9*>!h_oW?g~M1m9esXprF8UY(h(LfY3BFSq49aVB;lbT9la7pQkbNH?x3GU(B~^- zpF7Ddx%HbLYjaC)EqdId^HI8yr3b|472(F?(cu6Z1ea^Z!u6Zc{r-THj;%(rOc<#Hg_r8Jj5)z zCxc@DscZ{-l0wOJO?s);^LspWGlYFY#)u=NK;b|*9h}CB>cF?e|n#;Q2I#%w4v0A!L5P+eKAC zfR381Yw4LQ81}ndbkOL!4UnXlRDD5D$Q=xd;+8JgK$*0W4=U`a-t`BFu)&a994t}w z(IpTHlLAvB<;D722Nfsa5;|%oK#z~^(B=5(uA=&pn0OY_CZ-q2`g=iQR_2V%{Pe=S ze0uZ9n>5Xnl~Xu{D#baO`33Z{K@W*&i3?Q`fB6>`QCU(^-#>FkR$+Ex3aJ{^Q#46g z;a_fC+2b@ah-+?zmBDUWbBKI>V<=>K7n4Xg} zHDgHL?5yk=^!AvTvLJC%dO>ElyqvuJp6MBKE5}l$BWoM^7rnL#*YT0chUk>9oRmHj zZ#iL)+aCzio@eGxEhv~eCsX}&tSgBcxk}HOnVo)1p4f!MfrFxhhxef1Cg;tbl#@A> zwq|l-$`o2cChSK~pD5I;xP-8%K3w8py67hSpD&>&yhFSxpLX8$zYpFW6|G9a zQ`Tkv1k zshc#rP<&jFIB4L|KEwJ993Z7~z`!B5MEjEn(m7QZNQ$VB;{qa$a^(^AiE~(yEBYQm zxgxtVSAKLw_nL+)s!f!uAi5IYN0mk;LaaQhaG5JNl@MiN(JM4Kqu@21iF-l?=JuBJ zMiN{Wn)nb8ZM@Lp8T6r&O`|Q#%`Bih&m{&FWYA?Q6E9JGY}|{Bd@gL&JD;(xeFm^U zxVfL*0zq)*Msc4TD_dc!E2(OPutNu~+kABu|Idn8> zdl&1PQ+*x(#TSo0`au%KP$PizVmybRGptvlH%2MW1JC_b)2g4982!A_L={uHMj^KYx0?)%EjY=lgZGnb9-b>O5nZv%mXt^QH?~R)ZUY zj_>@iqwSmSl>3EoV$M@u>tf&j~!i_wHBx z>%VNamTp~Z4@vuqZ&|U~$_%t}a4haA#)C0bc=y0#zRS1-*f zvi%O)pwCWCkD9;i%CgSC+|0 zN-O?EvEkYgqYcJ}bHN_*znAF=2c6;9mFW-1vyW#4_X5|2`tawtp1iht0>}L0zTjB2 zM?V+?<`aG5SoDc816NIqA2F_dPh4j{Z8^WfoTJUyxXugY(I?u#x#Kt&t`YZrZ<)?;To?MswIKJC16KT=Vk>Xg<-euO&S0+RY`tFD|Jh0HJ zdu*Jv!LevF;`n0Al`&3^ZJ)8uTL0oOIrhtz8?0SdkCD$eo!Vfn_{)gs(v5v%X>ISa zwm&f>njN_<_T%go*0i?6elr$r+!SFMtG_BL5+%~?NM`p3E2-L=eWd*4vGu3gD@SP45uOZ>~imDZuh#>n__EjSi^ z;#?R5jzyoCXB>+*m|MhXgE3(K5u**R5%&~1fVsukFy>F~<<^7$$&$J1x?qhpBYld* z=Qpgfvfs^&PIxFK=A`(^Ws?aiR;4kVhk7?`ouM2JUAEH;9Tev#}2suF6+e3A#%NVM(})n*l&{+ z^o=B&8qe9@JFRWbU}=x%2*;vNJQv7$9E(1Y^LQRH28``;8gjb#j)>ye&O^l!Z7?>>Gv*NIMW1Mc`N!CBEZX4S;o5O5?ls1SF<{Ow zry<8DWJlE52|bV!!E<`K^Db=Exf5g2Cu+sz&Uosnk5kooeB-vd5ya|T3mcpl^#pB{ zR)}~oes%VRAB+Llg=5ht#)E4_j5atI#(Cr{Uj>mqza)(v$rMNq4JcrN2HJ4gnd|7grp-pPz z$$U@3R?|6jt8>0!Eq{3ZedefN=Q?+sdz_~o@R-Rj-{sUhw43+JZ)(2O{}Jcmb%XhE z_myV-FISd(C&hQe7P~^T5Yrc=rnl*4{H6opHu^e(LF3){k%XDECecwW724r{=s(zed&~vd6Kw z-VdT%__pR-&4#tcIq%-_Fn|2T6=uRC+z_}&{SFe>VN;z+t`Zx8(O&o$_J`ZgES+m( z=b7c~(T}oUa%h~iS7XrzW5AdN7WTIc=;Lf^oh)M$@#9*MOUM(Q;|!#y%G`7&(DY0oi_pDvfUf{mqJ|bsuzZ5?&r0d z?JAjf%#ue+;}QHvp5r-1t;4bC6LW~U#WViX(4mrVIS1O5+anx{Huq4R-%M+2_UL%l z#&eCjir>ZIe&If%?%{WF$Oq&J&Z{&*>=(wMo{PL;e(;V^8iLv-Gz9er$D+?&ZGPpm zW>q)mp4;PWXmpX^J+_*8P1do}{Zcw9bXee*6MyAj&a7@O$~$ZeT=U1mh`=farDMWg z#FH|*iPd9!b+hNc`j=w+=u8LKj(dSTN8X;Sd65qrQO#_(akTwOor`kb9f2|BV!+t$ zs&$dKIbRq#z2jK9b>Vsi7B*t-m&Td-#O#QQSzr;fvJqIVSLIyY9l{33s_UL(g)E0Aw!gF1dj^(~nh1#;5%?o99BL`hAw-#KZ;=_fcmApl~ZoG4L zF;^OR;o))olX#t3t=2expsa4>uawn?k@N`btyjrtJs8%;%Y|C3B2uXrS%~{S5`Nc+IY_P zB8RxQ%=&I+xpRuo(H`{>bE|ZI?147r&OYWG_YTjdx@X&VJZqvK^pE<9`-S_0I*Iy* ze87E29mW_iHl+hXPZSn8M4iN(C=C%>bUBR@dx7@%#p}bGS;zSPc-@$HZcn+nkXNcc z9G`dCRJD!3DmK(oF_)@6?mIfO6u13X|5B|JapKyM&&YG!7gh5-uwit$7%(%yF<{EK}T zF{}7-U3f-tEc(QpV4m@uiuiGjqSh7bRlE{=igRHMm_y_k&V@1HeyKGo{-|83crc$T z9$}-jMclb6KjPg-?XSv}@-J+VOIRl$-;}0_J4;}3KZ?5v$6}p^SlNsFRQVCwh?;it zjfvK%y_2Ff?{Dag9z3NKr{_+x#vM#AeI6QIg8TcYm3w|`gUQlH*pGNJL*g5@=2-o@ zO^(hUb-~^=ce-`32*n#V?&Lu{rtI>80}u|H{uJdE@1C;ipkTn#96S zv(D+(D_QB%&%Fr~t?ZWRaxM}7SMw&8;@ShT@)iFq%_t4nQEt}5cB@S|)n&&X{Yi#E7-$YC6dHkez?A&$M&M(xW7@w0aJ zzJ@$Ae!c`2e#9A6SmZ?DLGiPuo{RkwSd0~CL}10w`lBwG!jIsCCyvFu&Rcc)z40?B zu-X^pU-@}Fe%8cT#an?@uEbcC2Z6<0;;ac9#aj`Bm`j{BWh3@Q;5zZMCTuWfjP0TL z85H)4x57WhhB2r-D|>OSg+0b5u!;fKf-z%kqzC zp5ne-8iUXou}1WX+`ydUSoA68QoIsa)_SBq)qtVJFNAmO2*=MChB_?@!#nd%w25t|0+FNYx4*8N2lgmLm!?V-S+u@`_TJ~ ztb69<{$^f`=k~Q-t%HBckT$DU_p>%XP~xXw{#2_`|K8Ditur>pj5h7B%d#fU%ZMiZ zkl?7_8x-;5?A4-f%7)i*sQN^FQlr)ygbc??c_wtwP4K18T{@J zfA3V~|6iXyYa&mO&&b=$%`3(#K8W8nMc!U6SAoy>n<~yfZ~DMgafwZsq!Y`M?d&`u!zwHePTW_2DR638>daRcVg`r8|FcA zN!Z|6^ocR!ShT@7FULI*56*>qbUD6V8V~x!wcr}j5AqrLgPcST;JR?VSugi;2L4!! z-!N*Mt%K`M%#768Hr#Ig<9tU4U$vl{Gb*DFAKPu0t%HwmPq3Sf&*JMFykYC$?~8hy zuO-*zV?G_==-|vot?e)K4D-n0TOA!dzxOnr{b7D=YpYjn9X#9JkiYhLuG#5iZ$}4@ zdSjY%yw7@bR^obF2VZ=v&5?xrikzFXC&YB{b60e9t{LEVGG5+b>)<(Ke0=4n$&UG4 zcT)%NdGrmtdGg>^(5!Qg9)iR_=m$ydDGlq?0ar( z?daeR_hviYf5g$agF#zN9SqvSbueg)se?gVOdSl`!gVlc3)jJ*Ev60zZQ(i? zw8hlHpe+#{4BBGqV9*v@2ZOe79SqtMsR)C%a2*WVV(MVf7Doqzw#0NWXp5tRL0h;E z25m7b!k{fjbTDWO*TJAIwhmtPx6by4V~PBpQ;V^fm`P z(IwX7#I24F9x=-wdpV(@{qD639Ua_z@Jr@`_O1BO4ZAoxI99{uJb7WDJ$$yu(ZP3o zc7M#yGh$6{C~|c0&7Ta4{PXQL5$_zTIW+LBS-T@gUt5vdv~H23gEzY$itSoaH#V|n zk)wled$W}jn)RAJZ&W8o2Nz~c<5?fJiyV9RRa*!5%HCtHex@EjLVVD{s}40e+<)Ya zd_LLh;19dMZ?|ol+YmyGd-aB<6_G|Tpjt)Nb@2gUi|9&d=8)oyZYZkjt>4V=VpH5Vyno+CdrNt2F>9*7&M3LV9*?{gF$n+ z4hGHPIv6yE>tN6vu7g2yxDE!*q2FOF)uIY9Xb#uGpgCLzgXWkz7&M3LV9*?{gF$mb zI=CXu0d3(r7_^1!;CDJ4imiP2LahCj3%L#kZQ(i?w8hlHpe?2j25sRw7_^1!;1wO} znKwOu+Rh7SI2Ga1Pd*h{ntQi7WK^M35q|dP_hSb;_2p-`Uhh;D<BOGAC(H@_A&vR$+U^p$(a?n9j2Y>hVmq)U~BVvtL6>%LrZp?nO_Ulvl zkKZn~{~NrtaJW+xx{7ZY)7I9(L)UfS;{OZe&Q(#agWrDtRrAKJllaqt0`tGYFqfl) zMT}H-I3@p9jt9QK$Z6gGXsp$<)sN`lmoMhV3U?$NZhu#iqk~K0C>FUZ*1?Ag8m4{_ zPK$lFt%&R3(Hj=H!NM+Xmn zEc?jPy*zf$-XgApZ|+g(ys+eYdsP1=rVie4as;optD`ybp6ZScj^|vP50%*eW*=Xy zx6t{+X*(9aY+zkFDRuP_f{#*0Fwsg6t72&$OzfJwe|109``6Wkm@PUEGp1)uk*TJ=4o6E1brrM#$Z!b1=@aun`%bRCDnexPw#kLM6 zS(CAg_;v8wk((pJ@{RsQTn9tWQ+4pkU#^OL@otfG_0DETbnv(@Z2RjK?;ZYdc`nz% zzbxA%3^AwbVB>+eQx~5tlDeUTcTX+hXYm`8xDFP3 z72nrl2}}07IA?u5XL-9N_BWIJa2tLuAZ5<4?qN9VMRy6+`47H-EgLP^)w1HaD{%v%)QYAKhFX#9V5k)x9SpUit%IRf-ABbNw!dp;qKN7-~gZ2ScssR24(5$aOH(ijEG3S}|4;hFURF5w56K#OFG- z3fe%e$aSzzt%x>ID>^zDYDHTIL#=4)V4YeKZJ<_kbTH&rt8Uk+wa^A?MMnoit;lsS z)QVgOLu^`guTHIqHc%@%IvBMMG1Q8V4#u%iD{>u7V~b0={66Ua1m8IHkon$c6M63R z?Y0iCCI-O;(7c})xHlvjlUENKE^p<>R=VY zrGChV;IrVH@K-60&n3>6n)i3Hh*6A*``5uD24!C&68%MV?Rdn7UnrR*b}v5r$)~*tM8oa=-|fl zSK5X9e~#R_vCz@M+cvE>fBI#R*>TNGM+g7hBFjwaGAy>S=6pv7Uz}QCMte@y*ak-p-1hiV&JN&gMq82 z4hF88RmH$nQwIZAxef-davcm@n zQE$weu;~%1Sqs*hwPCHOw`Pf~J?p^QQfo)3BkRm=q~4KrV#(|# zmPD-!Avg0f7j-xDFdy@?01LAe7Niy;6k#U2nOZ8LDC^2NHH%OW){}Lk)}2rv)|d67 z)|*g&Hh}e`-k;sV2C_kHFdNE-vmw-nvSDl#8_h;g8%by^8_&j2AIrwEG?vaLP)}nM z*<_Z)1%!&&Vz!8S5xv4KVN2QV)b1d(oULTbs4r(L*lM*wu9YIeLH)AJ~q=?uen6pSSq?q`!n9wp}$P&pM z!Io9TmR0ocosuD|C3DtFo~)P5xm&Vi1F=T%MX+QGHNltrh$|vLoX`$p%67?{9mJbQ zi8X>Zj}T{`Al3-pJWjlMidZ9fvzz#`m$)O?^NeK6KH|=PLI;U0&q)>?WJg$xm~)62 zbc8fUC`>id7ojpWNnvV|z9dkuNuO(zvecqpn>40ADN8--^+{udvNWXDh>%d0YpDs1 zxq&pL8TA&VGA-y+bLuVVb0VorYwC%lI2}k|+DQ&|kQ&pG)J14a5`F4SJ&8WMNM&xK z?jpSr?D0|)suPl$lOlPPDmBNHJhG(bbk)|JLBykh)P?d0_6(J}Gn^PShE!*aR3O2g zu~K)&OO;8Jx|1%MltE8~8gb%OCUs8pXA_gMs0&U7h)vU}c?r!VJHbG~E}=vM3zSdX znnhh`(i~#eZ0bUjZY5sLr!Ev}fmA2dr8}f9EtR??__jhaOsLTs;@M1MdAd}ib;LBG zPaB9^_fQus+d|yhOkJ?-e&WEVUJ2JdQ39x38_fCB*UH} zX6++>?UP&+dbD3M?10px=Simo*N!lo_+?A39c3>thx$?WNA@E76FWxjIH8x>3HB1T zKNI>3dyTz9?Nvfv%3LnBiG<#u{Ju{84a)J~*x%V-sl7?)E&42;y+wQe4m-)-rv46l zmssMJ8BQbg|JZx%ef9x6#s0z0u#eek>L0R?sDDhKKVzS>PpExL=nM80J4^iw_9gol z`-c6K+Si1>V?VHOsei}5XXn^O_9OM5*ahn6*m>$d(dS>-f7s8|e_{Wo!*qr5E4#vA zhGA4Ut~RPsuVGw8y}EHF^&0fKmQmYCpjMMmJ)^!+hgw}i*BFhA2Gp-H8XDIc*BOne zH6e7paf8v6`t?RLqlMARXimL_(b8yRv^82&OC;3ZxY1}wy}i-F=xihz9jSF9lx(<+ zF4U8an+%WPGu+fYhSvxhA;V8CKqz9EMwnWPaWl14`W&H8Hyaks%Bfp4b62Cg5vAVM z=ti;DF?vwzNvMy}mqwd3qLE+ zBkA)PW2`ZX+Gs-KjWlB%_3_38W1^96OfoWz$wsCz#mF+U$!~jlgrW<+2 zOe2@t3_|%vp)rekzENPzG3FVwsn0Ry8ViiujQP}VB~)Y-8w;r|B6Nqb#8^!2c0$XH z6~wv~w9UBB*h=kQ zLJt@_jQgo=C-kuKi18q`hY0O79ycDPzSDS&a%WP``cnStPZlU3#UTi~kqR{Xg zW#uRoyJK9vg>rYHE-FV+C%UP7qzZF$qG?@HA` zPrCbiQ140AKy8ZrN?8Z=ll7vg8wXNlAZo@z)CWr~7xhA4`guR95{A*=qAKV|S}rQd z(Xx^h^}rZvqLLK#zyw(*Oe7^2m1L&Wc%j`>WSx*L>w#&qPRJp(7M0{I?MhPA1B+yx zP`;8BYQ0R>2^Ck8!)0xZbzKcv|BD;C2JK^Q+G%k^*Q6%i1?tj`EN*A9r`O0mZAAYz zq#OD=+R^Li-|~AZ?&Idv#T||Ja#i$$FS zU%SgUfv&W(;$5IG{o6-Yb^U0s#JfPrUY5KO;JqxWx{-1hN6V^C-OHk?Q}^;@+P4hq c;>`f>;vCw!>C{DiC+^xjxr?)8g_p