From 43a66b8f26504a8577d23a390527cac5b383238e Mon Sep 17 00:00:00 2001 From: Jay Gindin Date: Thu, 29 Jan 2026 17:22:08 -0500 Subject: [PATCH 1/3] Go SDK This has been generated by Gemini to match the features and functionality of the Python SDK. The Rizzcharts sample has also been regenerated in Go, using the Go SDK as a demonstration. --- a2a_agents/go/README.md | 122 +++++ a2a_agents/go/a2ui/a2ui.go | 123 +++++ a2a_agents/go/a2ui/a2ui_test.go | 298 ++++++++++++ a2a_agents/go/a2ui/schema.go | 29 ++ a2a_agents/go/a2ui/toolset.go | 375 +++++++++++++++ a2a_agents/go/go.mod | 13 + a2a_agents/go/go.sum | 24 + samples/agent/adk/rizzcharts-go/.env.example | 7 + samples/agent/adk/rizzcharts-go/README.md | 140 ++++++ samples/agent/adk/rizzcharts-go/agent.go | 272 +++++++++++ samples/agent/adk/rizzcharts-go/catalog.go | 157 ++++++ .../examples/rizzcharts_catalog/chart.json | 105 ++++ .../examples/rizzcharts_catalog/map.json | 119 +++++ .../examples/standard_catalog/chart.json | 118 +++++ .../examples/standard_catalog/map.json | 154 ++++++ samples/agent/adk/rizzcharts-go/executor.go | 453 ++++++++++++++++++ samples/agent/adk/rizzcharts-go/go.mod | 48 ++ samples/agent/adk/rizzcharts-go/go.sum | 102 ++++ samples/agent/adk/rizzcharts-go/main.go | 218 +++++++++ samples/agent/adk/rizzcharts-go/main_test.go | 222 +++++++++ samples/agent/adk/rizzcharts-go/rizzcharts-go | Bin 0 -> 26308947 bytes .../rizzcharts_catalog_definition.json | 158 ++++++ samples/agent/adk/rizzcharts-go/tools.go | 163 +++++++ samples/agent/adk/uv.lock | 4 +- 24 files changed, 3421 insertions(+), 3 deletions(-) create mode 100644 a2a_agents/go/README.md create mode 100644 a2a_agents/go/a2ui/a2ui.go create mode 100644 a2a_agents/go/a2ui/a2ui_test.go create mode 100644 a2a_agents/go/a2ui/schema.go create mode 100644 a2a_agents/go/a2ui/toolset.go create mode 100644 a2a_agents/go/go.mod create mode 100644 a2a_agents/go/go.sum create mode 100644 samples/agent/adk/rizzcharts-go/.env.example create mode 100644 samples/agent/adk/rizzcharts-go/README.md create mode 100644 samples/agent/adk/rizzcharts-go/agent.go create mode 100644 samples/agent/adk/rizzcharts-go/catalog.go create mode 100644 samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/chart.json create mode 100644 samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/map.json create mode 100644 samples/agent/adk/rizzcharts-go/examples/standard_catalog/chart.json create mode 100644 samples/agent/adk/rizzcharts-go/examples/standard_catalog/map.json create mode 100644 samples/agent/adk/rizzcharts-go/executor.go create mode 100644 samples/agent/adk/rizzcharts-go/go.mod create mode 100644 samples/agent/adk/rizzcharts-go/go.sum create mode 100644 samples/agent/adk/rizzcharts-go/main.go create mode 100644 samples/agent/adk/rizzcharts-go/main_test.go create mode 100755 samples/agent/adk/rizzcharts-go/rizzcharts-go create mode 100644 samples/agent/adk/rizzcharts-go/rizzcharts_catalog_definition.json create mode 100644 samples/agent/adk/rizzcharts-go/tools.go diff --git a/a2a_agents/go/README.md b/a2a_agents/go/README.md new file mode 100644 index 000000000..58e7aab4d --- /dev/null +++ b/a2a_agents/go/README.md @@ -0,0 +1,122 @@ +# A2UI Agent Go SDK + +This directory contains the Go implementation of the A2UI agent library, +enabling agents to "speak UI" using the A2UI protocol. + +## Overview + +The `a2ui` package provides the core infrastructure for an agent to: + +1. **Declare Capability**: Signal support for the A2UI extension ( + `https://a2ui.org/a2a-extension/a2ui/v0.8`). +2. **Validate Payloads**: Ensure generated A2UI JSON conforms to the required + schema before sending. +3. **Transport UI**: Encapsulate A2UI payloads within A2A `DataPart`s for + transport to the client. + +## Components + +The SDK mirrors the structure of the reference Python implementation: + +* **`a2ui.go`**: Core constants (`ExtensionURI`, MIME types), types, and helper + functions for extension management (`GetA2UIAgentExtension`, + `TryActivateA2UIExtension`) and A2UI part manipulation (`CreateA2UIPart`, + `IsA2UIPart`, `GetA2UIDataPart`). +* **`schema.go`**: Utilities for A2UI schema manipulation, specifically wrapping + the schema in a JSON array to support streaming lists of components. +* **`toolset.go`**: + * **`SendA2UIToClientToolset`**: Manages the A2UI toolset lifecycle. + * **`SendA2UIJsonToClientTool`**: A tool exposed to the LLM that validates + generated JSON against the provided schema using + `github.com/santhosh-tekuri/jsonschema/v5` and prepares it for sending. + * **`ConvertSendA2UIToClientGenAIPartToA2APart`**: A helper to convert LLM + tool responses into A2A `Part`s. + +## Dependencies + +* **A2A Protocol**: Uses the [A2A Go SDK](https://github.com/a2aproject/a2a-go) + for core definitions (`Part`, `DataPart`, `AgentExtension`, etc.). +* **JSON Schema Validation**: Uses `github.com/santhosh-tekuri/jsonschema/v5` + for robust runtime validation of agent-generated UI. + +## Usage + +### Initializing the Toolset + +```go +import ( +"github.com/google/A2UI/a2a_agents/go/a2ui" +// ... other imports +) + +// Define a provider for your A2UI schema (e.g., loaded from a file) +schemaProvider := func (ctx context.Context) (map[string]interface{}, error) { +return loadMySchema(), nil +} + +// Check if A2UI should be enabled for this request +enabledProvider := func (ctx context.Context) (bool, error) { +// Logic to check if the client supports A2UI (e.g., checking requested extensions) +return a2ui.TryActivateA2UIExtension(ctx), nil +} + +// Create the toolset +toolset := a2ui.NewSendA2UIToClientToolset( +a2ui.A2UIEnabledProvider(enabledProvider), +a2ui.A2UISchemaProvider(schemaProvider), +) + +// Get the tools to register with your LLM agent +tools, err := toolset.GetTools(ctx) +if err != nil { +// handle error +} +``` + +## Building the SDK + +To build the SDK, run the following command from the `a2a_agents/go` directory: + +```bash +go build ./a2ui +``` + +This will compile the `a2ui` package and report any syntax or dependency errors. +Since this is a library, it will not produce an executable binary. + +## Running Tests + +To run the test suite from the `a2a_agents/go` directory: + +```bash +go test -v ./a2ui +``` + +## Disclaimer + +Important: The sample code provided is for demonstration purposes and +illustrates the mechanics of A2UI and the Agent-to-Agent (A2A) protocol. When +building production applications, it is critical to treat any agent operating +outside of your direct control as a potentially untrusted entity. + +All operational data received from an external agent—including its AgentCard, +messages, artifacts, and task statuses—should be handled as untrusted input. For +example, a malicious agent could provide crafted data in its fields (e.g., name, +skills.description) that, if used without sanitization to construct prompts for +a Large Language Model (LLM), could expose your application to prompt injection +attacks. + +Similarly, any UI definition or data stream received must be treated as +untrusted. Malicious agents could attempt to spoof legitimate interfaces to +deceive users (phishing), inject malicious scripts via property values (XSS), or +generate excessive layout complexity to degrade client performance (DoS). If +your application supports optional embedded content (such as iframes or web +views), additional care must be taken to prevent exposure to malicious external +sites. + +Developer Responsibility: Failure to properly validate data and strictly sandbox +rendered content can introduce severe vulnerabilities. Developers are +responsible for implementing appropriate security measures—such as input +sanitization, Content Security Policies (CSP), strict isolation for optional +embedded content, and secure credential handling—to protect their systems and +users. diff --git a/a2a_agents/go/a2ui/a2ui.go b/a2a_agents/go/a2ui/a2ui.go new file mode 100644 index 000000000..f47ad66b7 --- /dev/null +++ b/a2a_agents/go/a2ui/a2ui.go @@ -0,0 +1,123 @@ +package a2ui + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "fmt" + "log" + + "github.com/a2aproject/a2a-go/a2a" + "github.com/a2aproject/a2a-go/a2asrv" +) + +const ( + // ExtensionURI is the URI for the A2UI extension. + ExtensionURI = "https://a2ui.org/a2a-extension/a2ui/v0.8" + + // MIMETypeKey is the key for the MIME type in metadata. + MIMETypeKey = "mimeType" + // MIMEType is the MIME type for A2UI data. + MIMEType = "application/json+a2ui" + + // ClientCapabilitiesKey is the key for A2UI client capabilities. + ClientCapabilitiesKey = "a2uiClientCapabilities" + // SupportedCatalogIDsKey is the key for supported catalog IDs. + SupportedCatalogIDsKey = "supportedCatalogIds" + // InlineCatalogsKey is the key for inline catalogs. + InlineCatalogsKey = "inlineCatalogs" + + // StandardCatalogID is the ID for the standard catalog. + StandardCatalogID = "https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json" + + // AgentExtensionSupportedCatalogIDsKey is the parameter key for supported catalogs in the agent extension. + AgentExtensionSupportedCatalogIDsKey = "supportedCatalogIds" + // AgentExtensionAcceptsInlineCatalogsKey is the parameter key for accepting inline catalogs. + AgentExtensionAcceptsInlineCatalogsKey = "acceptsInlineCatalogs" +) + +// CreateA2UIPart creates an A2A Part containing A2UI data. +func CreateA2UIPart(a2uiData map[string]interface{}) a2a.Part { + return &a2a.DataPart{ + Data: a2uiData, + Metadata: map[string]interface{}{ + MIMETypeKey: MIMEType, + }, + } +} + +// IsA2UIPart checks if an A2A Part contains A2UI data. +func IsA2UIPart(part a2a.Part) bool { + dp, ok := part.(*a2a.DataPart) + if !ok { + return false + } + if dp.Metadata == nil { + return false + } + return dp.Metadata[MIMETypeKey] == MIMEType +} + +// GetA2UIDataPart extracts the DataPart containing A2UI data from an A2A Part, if present. +func GetA2UIDataPart(part a2a.Part) (*a2a.DataPart, error) { + if IsA2UIPart(part) { + return part.(*a2a.DataPart), nil + } + return nil, fmt.Errorf("part is not an A2UI part") +} + +// GetA2UIAgentExtension creates the A2UI AgentExtension configuration. +func GetA2UIAgentExtension(acceptsInlineCatalogs bool, supportedCatalogIDs []string) *a2a.AgentExtension { + params := make(map[string]interface{}) + + if acceptsInlineCatalogs { + params[AgentExtensionAcceptsInlineCatalogsKey] = true + } + + if len(supportedCatalogIDs) > 0 { + params[AgentExtensionSupportedCatalogIDsKey] = supportedCatalogIDs + } + + var paramsOrNil map[string]interface{} + if len(params) > 0 { + paramsOrNil = params + } + + return &a2a.AgentExtension{ + URI: ExtensionURI, + Description: "Provides agent driven UI using the A2UI JSON format.", + Params: paramsOrNil, + } +} + +// TryActivateA2UIExtension activates the A2UI extension if requested. +func TryActivateA2UIExtension(ctx context.Context) bool { + exts, ok := a2asrv.ExtensionsFrom(ctx) + if !ok { + log.Println("TryActivateA2UIExtension: No extensions found in context") + return false + } + + a2uiExt := &a2a.AgentExtension{URI: ExtensionURI} + requested := exts.Requested(a2uiExt) + + log.Printf("TryActivateA2UIExtension: Checking URI %s. Requested: %v", ExtensionURI, requested) + + if requested { + exts.Activate(a2uiExt) + return true + } + return false +} diff --git a/a2a_agents/go/a2ui/a2ui_test.go b/a2a_agents/go/a2ui/a2ui_test.go new file mode 100644 index 000000000..b0ad3fcbb --- /dev/null +++ b/a2a_agents/go/a2ui/a2ui_test.go @@ -0,0 +1,298 @@ +package a2ui + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "strings" + "testing" + + "github.com/a2aproject/a2a-go/a2a" + "github.com/a2aproject/a2a-go/a2asrv" +) + +func TestA2UIPartSerialization(t *testing.T) { + a2uiData := map[string]interface{}{ + "beginRendering": map[string]interface{}{ + "surfaceId": "test-surface", + "root": "root-column", + }, + } + + part := CreateA2UIPart(a2uiData) + + if !IsA2UIPart(part) { + t.Error("Should be identified as A2UI part") + } + + dataPart, err := GetA2UIDataPart(part) + if err != nil { + t.Errorf("Should contain DataPart: %v", err) + } + + // Compare data + if dataPart.Data["beginRendering"].(map[string]interface{})["surfaceId"] != "test-surface" { + t.Error("Deserialized data mismatch") + } +} + +func TestNonA2UIDataPart(t *testing.T) { + part := &a2a.DataPart{ + Data: map[string]interface{}{"foo": "bar"}, + Metadata: map[string]interface{}{ + "mimeType": "application/json", + }, + } + + if IsA2UIPart(part) { + t.Error("Should not be identified as A2UI part") + } + + if _, err := GetA2UIDataPart(part); err == nil { + t.Error("Should not return A2UI DataPart") + } +} + +func TestGetA2UIAgentExtension(t *testing.T) { + ext := GetA2UIAgentExtension(false, nil) + if ext.URI != ExtensionURI { + t.Errorf("Expected URI %s, got %s", ExtensionURI, ext.URI) + } + if ext.Params != nil { + t.Error("Expected nil params") + } + + supported := []string{"cat1", "cat2"} + ext = GetA2UIAgentExtension(true, supported) + if ext.Params[AgentExtensionAcceptsInlineCatalogsKey] != true { + t.Error("Expected acceptsInlineCatalogs to be true") + } + if len(ext.Params[AgentExtensionSupportedCatalogIDsKey].([]string)) != 2 { + t.Error("Expected 2 supported catalogs") + } +} + +func TestTryActivateA2UIExtension(t *testing.T) { + // Setup context with extensions + ctx := context.Background() + reqMeta := a2asrv.NewRequestMeta(map[string][]string{ + a2asrv.ExtensionsMetaKey: {ExtensionURI}, + }) + ctx, _ = a2asrv.WithCallContext(ctx, reqMeta) + + activated := TryActivateA2UIExtension(ctx) + if !activated { + t.Error("Expected extension to be activated") + } + + exts, _ := a2asrv.ExtensionsFrom(ctx) + if !exts.Active(&a2a.AgentExtension{URI: ExtensionURI}) { + t.Error("Expected A2UI extension to be active") + } + + // Test not requested + ctx2 := context.Background() + ctx2, _ = a2asrv.WithCallContext(ctx2, a2asrv.NewRequestMeta(nil)) + if TryActivateA2UIExtension(ctx2) { + t.Error("Expected extension not to be activated") + } +} + +func TestWrapAsJSONArray(t *testing.T) { + schema := map[string]interface{}{"type": "object"} + wrapped, err := WrapAsJSONArray(schema) + if err != nil { + t.Fatalf("WrapAsJSONArray failed: %v", err) + } + + if wrapped["type"] != "array" { + t.Error("Expected type array") + } + if wrapped["items"] == nil { + t.Error("Expected items field") + } +} + +// Test SendA2UIToClientToolset +func TestToolsetGetTools(t *testing.T) { + // Test Enabled + toolset := NewSendA2UIToClientToolset(true, map[string]interface{}{}) + tools, _ := toolset.GetTools(context.Background()) + if len(tools) != 1 { + t.Error("Expected 1 tool when enabled") + } + + // Test Disabled + toolset = NewSendA2UIToClientToolset(false, map[string]interface{}{}) + tools, _ = toolset.GetTools(context.Background()) + if len(tools) != 0 { + t.Error("Expected 0 tools when disabled") + } + + // Test Provider + provider := func(ctx context.Context) (bool, error) { return true, nil } + toolset = NewSendA2UIToClientToolset(A2UIEnabledProvider(provider), map[string]interface{}{}) + tools, _ = toolset.GetTools(context.Background()) + if len(tools) != 1 { + t.Error("Expected 1 tool with provider returning true") + } +} + +func TestSendA2UIJsonToClientTool_GetDeclaration(t *testing.T) { + schema := map[string]interface{}{"type": "object"} + tool := NewSendA2UIJsonToClientTool(schema) + decl := tool.GetDeclaration() + + if decl.Name != "send_a2ui_json_to_client" { + t.Errorf("Expected tool name send_a2ui_json_to_client, got %s", decl.Name) + } + props := decl.Parameters["properties"].(map[string]interface{}) + if _, ok := props["a2ui_json"]; !ok { + t.Error("Expected a2ui_json property") + } +} + +func TestSendA2UIJsonToClientTool_ProcessLLMRequest(t *testing.T) { + schema := map[string]interface{}{"type": "object"} + tool := NewSendA2UIJsonToClientTool(schema) + llmReq := &LlmRequest{} + + err := tool.ProcessLLMRequest(context.Background(), nil, llmReq) + if err != nil { + t.Fatalf("ProcessLLMRequest failed: %v", err) + } + + if len(llmReq.Instructions) == 0 { + t.Error("Expected instructions to be appended") + } + if !strings.Contains(llmReq.Instructions[0], "---BEGIN A2UI JSON SCHEMA---") { + t.Error("Expected A2UI schema instruction") + } +} + +func TestSendA2UIJsonToClientTool_Run(t *testing.T) { + // Define a simple schema that requires a "text" field + schema := map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{ + "text": map[string]interface{}{"type": "string"}, + }, + "required": []string{"text"}, + } + tool := NewSendA2UIJsonToClientTool(schema) + + // Valid JSON list + validJSON := `[{"text": "Hello"}]` + args := map[string]interface{}{"a2ui_json": validJSON} + ctx := &ToolContext{Actions: ToolActions{}} + + result, _ := tool.Run(context.Background(), args, ctx) + if result["validated_a2ui_json"] == nil { + t.Error("Expected validated_a2ui_json in result") + } + if !ctx.Actions.SkipSummarization { + t.Error("Expected SkipSummarization to be true") + } + + // Valid Single Object (should wrap) + validJSONSingle := `{"text": "Hello"}` + args = map[string]interface{}{"a2ui_json": validJSONSingle} + result, _ = tool.Run(context.Background(), args, ctx) + list, ok := result["validated_a2ui_json"].([]interface{}) + if !ok || len(list) != 1 { + t.Error("Expected wrapped list") + } + + // Invalid JSON (missing required field "text") + invalidJSON := `[{"other": "value"}]` + args = map[string]interface{}{"a2ui_json": invalidJSON} + result, _ = tool.Run(context.Background(), args, ctx) + if result["error"] == nil { + t.Error("Expected error for invalid JSON") + } else if !strings.Contains(result["error"].(string), "missing properties: 'text'") { + t.Errorf("Unexpected error message: %v", result["error"]) + } + + // Malformed JSON + malformedJSON := `{"text": "Hello"` // Missing closing brace + args = map[string]interface{}{"a2ui_json": malformedJSON} + result, _ = tool.Run(context.Background(), args, ctx) + if result["error"] == nil { + t.Error("Expected error for malformed JSON") + } + + // Missing Argument + args = map[string]interface{}{} + result, _ = tool.Run(context.Background(), args, ctx) + if result["error"] == nil { + t.Error("Expected error for missing argument") + } +} + +func TestConverter(t *testing.T) { + // Valid Response + validA2UI := []interface{}{ + map[string]interface{}{"type": "Text", "text": "Hello"}, + } + resp := &FunctionResponse{ + Name: "send_a2ui_json_to_client", + Response: map[string]interface{}{ + "validated_a2ui_json": validA2UI, + }, + } + part := &GenAIPart{FunctionResponse: resp} + + a2aParts := ConvertSendA2UIToClientGenAIPartToA2APart(part) + if len(a2aParts) != 1 { + t.Error("Expected 1 part") + } + if !IsA2UIPart(a2aParts[0]) { + t.Error("Expected A2UI part") + } + + // Error Response + resp = &FunctionResponse{ + Name: "send_a2ui_json_to_client", + Response: map[string]interface{}{ + "error": "Some error", + }, + } + part = &GenAIPart{FunctionResponse: resp} + a2aParts = ConvertSendA2UIToClientGenAIPartToA2APart(part) + if len(a2aParts) != 0 { + t.Error("Expected 0 parts on error") + } + + // FunctionCall (should be ignored) + call := &FunctionCall{ + Name: "send_a2ui_json_to_client", + Args: map[string]interface{}{"a2ui_json": "[]"}, + } + part = &GenAIPart{FunctionCall: call} + a2aParts = ConvertSendA2UIToClientGenAIPartToA2APart(part) + if len(a2aParts) != 0 { + t.Error("Expected 0 parts for function call") + } + + // Other part type (should convert to TextPart) + part = &GenAIPart{Text: "Some text"} + a2aParts = ConvertSendA2UIToClientGenAIPartToA2APart(part) + if len(a2aParts) != 1 { + t.Error("Expected 1 part for text part") + } + if _, ok := a2aParts[0].(*a2a.TextPart); !ok { + t.Error("Expected TextPart") + } +} diff --git a/a2a_agents/go/a2ui/schema.go b/a2a_agents/go/a2ui/schema.go new file mode 100644 index 000000000..5cd86d33f --- /dev/null +++ b/a2a_agents/go/a2ui/schema.go @@ -0,0 +1,29 @@ +package a2ui + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import "fmt" + +// WrapAsJSONArray wraps the A2UI schema in an array object to support multiple parts. +func WrapAsJSONArray(a2uiSchema map[string]interface{}) (map[string]interface{}, error) { + if len(a2uiSchema) == 0 { + return nil, fmt.Errorf("A2UI schema is empty") + } + + return map[string]interface{}{ + "type": "array", + "items": a2uiSchema, + }, nil +} diff --git a/a2a_agents/go/a2ui/toolset.go b/a2a_agents/go/a2ui/toolset.go new file mode 100644 index 000000000..efecc5c45 --- /dev/null +++ b/a2a_agents/go/a2ui/toolset.go @@ -0,0 +1,375 @@ +package a2ui + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "encoding/json" + "fmt" + "log" + "strings" + + "github.com/a2aproject/a2a-go/a2a" + "github.com/santhosh-tekuri/jsonschema/v5" +) + +// --- Simulated GenAI and ADK types --- + +// FunctionDeclaration represents a function declaration for the LLM. +type FunctionDeclaration struct { + Name string + Description string + Parameters map[string]interface{} +} + +// FunctionCall represents a function call from the LLM. +type FunctionCall struct { + Name string + Args map[string]interface{} +} + +// FunctionResponse represents a function response to the LLM. +type FunctionResponse struct { + Name string + Response map[string]interface{} +} + +// GenAIPart represents a part from the Generative AI model. +type GenAIPart struct { + FunctionCall *FunctionCall + FunctionResponse *FunctionResponse + Text string +} + +// ToolContext represents the context for a tool execution. +type ToolContext struct { + Actions ToolActions +} + +// ToolActions represents actions available in the tool context. +type ToolActions struct { + SkipSummarization bool +} + +// LlmRequest represents a request to the LLM. +type LlmRequest struct { + Instructions []string +} + +// AppendInstructions appends instructions to the LLM request. +func (r *LlmRequest) AppendInstructions(instructions []string) { + r.Instructions = append(r.Instructions, instructions...) +} + +// --- End Simulated types --- + +// A2UIEnabledProvider is a function that returns whether A2UI is enabled. +type A2UIEnabledProvider func(ctx context.Context) (bool, error) + +// A2UISchemaProvider is a function that returns the A2UI schema. +type A2UISchemaProvider func(ctx context.Context) (map[string]interface{}, error) + +// BaseTool represents a base tool. +type BaseTool interface { + Name() string + Description() string + GetDeclaration() *FunctionDeclaration + ProcessLLMRequest(ctx context.Context, toolContext *ToolContext, llmRequest *LlmRequest) error + Run(ctx context.Context, args map[string]interface{}, toolContext *ToolContext) (map[string]interface{}, error) +} + +// SendA2UIToClientToolset provides A2UI Tools. +type SendA2UIToClientToolset struct { + a2uiEnabled interface{} // bool or A2UIEnabledProvider + a2uiSchema interface{} // map[string]interface{} or A2UISchemaProvider + sendToolInstance *SendA2UIJsonToClientTool +} + +// NewSendA2UIToClientToolset creates a new SendA2UIToClientToolset. +func NewSendA2UIToClientToolset(enabled interface{}, schema interface{}) *SendA2UIToClientToolset { + return &SendA2UIToClientToolset{ + a2uiEnabled: enabled, + a2uiSchema: schema, + sendToolInstance: NewSendA2UIJsonToClientTool(schema), + } +} + +// resolveA2UIEnabled resolves the enabled state. +func (t *SendA2UIToClientToolset) resolveA2UIEnabled(ctx context.Context) (bool, error) { + if enabled, ok := t.a2uiEnabled.(bool); ok { + return enabled, nil + } + if provider, ok := t.a2uiEnabled.(A2UIEnabledProvider); ok { + return provider(ctx) + } + return false, fmt.Errorf("invalid type for a2uiEnabled") +} + +// GetTools returns the list of tools. +func (t *SendA2UIToClientToolset) GetTools(ctx context.Context) ([]BaseTool, error) { + enabled, err := t.resolveA2UIEnabled(ctx) + if err != nil { + return nil, err + } + if enabled { + log.Println("A2UI is ENABLED, adding ui tools") + return []BaseTool{t.sendToolInstance}, nil + } + log.Println("A2UI is DISABLED, not adding ui tools") + return []BaseTool{}, nil +} + +// SendA2UIJsonToClientTool is the tool for sending A2UI JSON. +type SendA2UIJsonToClientTool struct { + toolName string + description string + a2uiSchema interface{} + a2uiJSONArg string + validatedKey string + toolErrorKey string +} + +// NewSendA2UIJsonToClientTool creates a new tool instance. +func NewSendA2UIJsonToClientTool(schema interface{}) *SendA2UIJsonToClientTool { + toolName := "send_a2ui_json_to_client" + argName := "a2ui_json" + return &SendA2UIJsonToClientTool{ + toolName: toolName, + a2uiJSONArg: argName, + description: fmt.Sprintf("Sends A2UI JSON to the client to render rich UI for the user. This tool can be called multiple times in the same call to render multiple UI surfaces.Args: %s: Valid A2UI JSON Schema to send to the client. The A2UI JSON Schema definition is between ---BEGIN A2UI JSON SCHEMA--- and ---END A2UI JSON SCHEMA--- in the system instructions.", argName), + a2uiSchema: schema, + validatedKey: "validated_a2ui_json", + toolErrorKey: "error", + } +} + +func (t *SendA2UIJsonToClientTool) Name() string { + return t.toolName +} + +func (t *SendA2UIJsonToClientTool) Description() string { + return t.description +} + +func (t *SendA2UIJsonToClientTool) GetDeclaration() *FunctionDeclaration { + return &FunctionDeclaration{ + Name: t.toolName, + Description: t.description, + Parameters: map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{ + t.a2uiJSONArg: map[string]interface{}{ + "type": "string", + "description": "valid A2UI JSON Schema to send to the client.", + }, + }, + "required": []string{t.a2uiJSONArg}, + }, + } +} + +func (t *SendA2UIJsonToClientTool) resolveA2UISchema(ctx context.Context) (map[string]interface{}, error) { + if schema, ok := t.a2uiSchema.(map[string]interface{}); ok { + return schema, nil + } + if provider, ok := t.a2uiSchema.(A2UISchemaProvider); ok { + return provider(ctx) + } + return nil, fmt.Errorf("invalid type for a2uiSchema") +} + +func (t *SendA2UIJsonToClientTool) getA2UISchema(ctx context.Context) (map[string]interface{}, error) { + schema, err := t.resolveA2UISchema(ctx) + if err != nil { + return nil, err + } + return WrapAsJSONArray(schema) +} + +func (t *SendA2UIJsonToClientTool) ProcessLLMRequest(ctx context.Context, toolContext *ToolContext, llmRequest *LlmRequest) error { + schema, err := t.getA2UISchema(ctx) + if err != nil { + return err + } + + schemaBytes, err := json.Marshal(schema) + if err != nil { + return err + } + + instruction := fmt.Sprintf(` +---BEGIN A2UI JSON SCHEMA--- +%s +---END A2UI JSON SCHEMA--- +`, string(schemaBytes)) + llmRequest.AppendInstructions([]string{instruction}) + log.Println("Added a2ui_schema to system instructions") + return nil +} + +func (t *SendA2UIJsonToClientTool) Run(ctx context.Context, args map[string]interface{}, toolContext *ToolContext) (map[string]interface{}, error) { + defer func() { + if r := recover(); r != nil { + log.Printf("Recovered in Run: %v", r) + } + }() + + var a2uiJSONStr string + argVal, ok := args[t.a2uiJSONArg] + if !ok || argVal == nil { + errStr := fmt.Sprintf("Failed to call tool %s because missing required arg %s", t.toolName, t.a2uiJSONArg) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + + switch v := argVal.(type) { + case string: + a2uiJSONStr = v + default: + // If it's not a string (e.g. map or slice), marshal it back to JSON string + log.Printf("Received non-string argument for %s (type %T), marshaling to JSON", t.a2uiJSONArg, v) + bytes, err := json.Marshal(v) + if err != nil { + errStr := fmt.Sprintf("Failed to marshal argument %s: %v", t.a2uiJSONArg, err) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + a2uiJSONStr = string(bytes) + } + + if a2uiJSONStr == "" { + errStr := fmt.Sprintf("Failed to call tool %s because arg %s is empty", t.toolName, t.a2uiJSONArg) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + + var a2uiJSONPayload interface{} + if err := json.Unmarshal([]byte(a2uiJSONStr), &a2uiJSONPayload); err != nil { + errStr := fmt.Sprintf("Failed to call A2UI tool %s: %v", t.toolName, err) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + + // Auto-wrap single object in list + var payloadList []interface{} + if list, ok := a2uiJSONPayload.([]interface{}); ok { + payloadList = list + } else { + log.Println("Received a single JSON object, wrapping in a list for validation.") + payloadList = []interface{}{a2uiJSONPayload} + } + + // Get Schema + schemaMap, err := t.getA2UISchema(ctx) + if err != nil { + errStr := fmt.Sprintf("Failed to resolve schema: %v", err) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + + schemaBytes, err := json.Marshal(schemaMap) + if err != nil { + errStr := fmt.Sprintf("Failed to marshal schema: %v", err) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + + // Compile Schema + c := jsonschema.NewCompiler() + if err := c.AddResource("schema.json", strings.NewReader(string(schemaBytes))); err != nil { + errStr := fmt.Sprintf("Failed to add resource to compiler: %v", err) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + schema, err := c.Compile("schema.json") + if err != nil { + errStr := fmt.Sprintf("Failed to compile schema: %v", err) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + + // Validate + if err := schema.Validate(payloadList); err != nil { + errStr := fmt.Sprintf("Failed to call A2UI tool %s: %v", t.toolName, err) + log.Println(errStr) + return map[string]interface{}{t.toolErrorKey: errStr}, nil + } + + log.Printf("Validated call to tool %s with %s", t.toolName, t.a2uiJSONArg) + + if toolContext != nil { + toolContext.Actions.SkipSummarization = true + } + + return map[string]interface{}{t.validatedKey: payloadList}, nil +} + +// ConvertGenAIPartToA2APart converts a GenAI part to an A2A part. +// +// This function corresponds to `google.adk.a2a.converters.part_converter.convert_genai_part_to_a2a_part` +// in the Python ADK. It is implemented here because an equivalent Go ADK with this +// functionality is currently unavailable in this environment. +// +// It currently supports converting Text parts. Future expansions should handle +// FunctionCalls and other GenAI part types as needed. +func ConvertGenAIPartToA2APart(part *GenAIPart) a2a.Part { + if part.Text != "" { + return &a2a.TextPart{Text: part.Text} + } + // TODO: Handle other part types if necessary (e.g. inline data, function calls) + return nil +} + +// ConvertSendA2UIToClientGenAIPartToA2APart converts a GenAI part to A2A parts. +func ConvertSendA2UIToClientGenAIPartToA2APart(part *GenAIPart) []a2a.Part { + toolName := "send_a2ui_json_to_client" + validatedKey := "validated_a2ui_json" + toolErrorKey := "error" + + if part.FunctionResponse != nil && part.FunctionResponse.Name == toolName { + response := part.FunctionResponse.Response + if _, ok := response[toolErrorKey]; ok { + log.Printf("A2UI tool call failed: %v", response[toolErrorKey]) + return []a2a.Part{} + } + + jsonData, ok := response[validatedKey].([]interface{}) + if !ok || jsonData == nil { + log.Println("No result in A2UI tool response") + return []a2a.Part{} + } + + var finalParts []a2a.Part + for _, message := range jsonData { + log.Printf("Found %d messages. Creating individual DataParts.", len(jsonData)) + if msgMap, ok := message.(map[string]interface{}); ok { + finalParts = append(finalParts, CreateA2UIPart(msgMap)) + } + } + return finalParts + } else if part.FunctionCall != nil && part.FunctionCall.Name == toolName { + // Don't send a2ui tool call to client + return []a2a.Part{} + } + + // Use default converter for other types + convertedPart := ConvertGenAIPartToA2APart(part) + if convertedPart != nil { + log.Printf("Returning converted part: %v", convertedPart) + return []a2a.Part{convertedPart} + } + + return []a2a.Part{} +} diff --git a/a2a_agents/go/go.mod b/a2a_agents/go/go.mod new file mode 100644 index 000000000..f187ba9b6 --- /dev/null +++ b/a2a_agents/go/go.mod @@ -0,0 +1,13 @@ +module github.com/google/A2UI/a2a_agents/go + +go 1.24.8 + +require ( + github.com/a2aproject/a2a-go v0.3.5 + github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 +) + +require ( + github.com/google/uuid v1.6.0 // indirect + golang.org/x/sync v0.15.0 // indirect +) diff --git a/a2a_agents/go/go.sum b/a2a_agents/go/go.sum new file mode 100644 index 000000000..8d86dd50f --- /dev/null +++ b/a2a_agents/go/go.sum @@ -0,0 +1,24 @@ +github.com/a2aproject/a2a-go v0.3.5 h1:sc6p5sVrahAtO0De14iIKt2RCbIu7qp0ZUdaxNufopw= +github.com/a2aproject/a2a-go v0.3.5/go.mod h1:8C0O6lsfR7zWFEqVZz/+zWCoxe8gSWpknEpqm/Vgj3E= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79 h1:iOye66xuaAK0WnkPuhQPUFy8eJcmwUXqGGP3om6IxX8= +google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79/go.mod h1:HKJDgKsFUnv5VAGeQjz8kxcgDP0HoE0iZNp0OdZNlhE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250715232539-7130f93afb79 h1:1ZwqphdOdWYXsUHgMpU/101nCtf/kSp9hOrcvFsnl10= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250715232539-7130f93afb79/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= diff --git a/samples/agent/adk/rizzcharts-go/.env.example b/samples/agent/adk/rizzcharts-go/.env.example new file mode 100644 index 000000000..c4522b4ec --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/.env.example @@ -0,0 +1,7 @@ +# Copy this file to .env and fill in your API key +# Get your API key at: https://aistudio.google.com/apikey + +GEMINI_API_KEY=your_gemini_api_key_here + +# Optional: Use Vertex AI instead of Gemini API +# GOOGLE_GENAI_USE_VERTEXAI=TRUE diff --git a/samples/agent/adk/rizzcharts-go/README.md b/samples/agent/adk/rizzcharts-go/README.md new file mode 100644 index 000000000..5c9b96b5d --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/README.md @@ -0,0 +1,140 @@ +# A2UI Rizzcharts Agent Sample (Go) + +This sample demonstrates how to build an ecommerce dashboard agent using the * +*Go A2UI SDK**. The agent interacts with users to visualize sales data through +interactive charts and maps, leveraging the Agent-to-UI (A2UI) protocol to +stream native UI components to the client. + +## Overview + +The Rizzcharts agent simulates a sales analytics assistant. It can: + +1. **Retrieve Data**: Fetch sales statistics and store locations using defined + tools. +2. **Generate UI**: Construct A2UI JSON payloads to render rich visualizations + (Charts, Maps) on the client. +3. **Adapt**: dynamically select between a "Standard" component catalog and a + custom "Rizzcharts" catalog based on the client's capabilities. + +## Prerequisites + +* **Go**: Version 1.24 or higher. +* **Gemini API Key**: You need an API key + from [Google AI Studio](https://aistudio.google.com/apikey). + +## Setup + +1. **Navigate to the directory**: + ```bash + cd samples/agent/adk/rizzcharts-go + ``` + +2. **Configure Environment**: + Copy the example environment file and add your API key: + ```bash + cp .env.example .env + ``` + Edit `.env` and paste your `GEMINI_API_KEY`. + +3. **Install Dependencies**: + ```bash + go mod tidy + ``` + +## Build and Run + +To run the agent directly: + +```bash +go run . +``` + +To build a binary and run it: + +```bash +go build -o rizzcharts-agent +./rizzcharts-agent +``` + +The server listens on `localhost:10002` by default. You can override this with +flags: + +```bash +./rizzcharts-agent --host 0.0.0.0 --port 8080 +``` + +## How It Works + +This sample illustrates the complete lifecycle of an A2UI-enabled agent in Go. + +### 1. Initialization (`main.go`) + +* The application starts by loading the **A2UI Schema** ( + `server_to_client.json`) and **Component Catalogs** ( + `standard_catalog_definition.json`, `rizzcharts_catalog_definition.json`) from + the specification files. +* It initializes the `RizzchartsAgentExecutor`, which orchestrates the + interaction between the A2A protocol, the Gemini model, and the A2UI tools. +* An HTTP server is started to handle A2A JSON-RPC requests. + +### 2. Session Preparation (`executor.go`) + +* When a request arrives, `PrepareSession` checks if the client supports A2UI by + inspecting the `X-A2A-Extensions` header (handled via + `a2ui.TryActivateA2UIExtension`). +* It analyzes the **Client Capabilities** to determine which Component Catalog + to use (Standard vs. Custom). +* It uses `catalog.go` to **merge** the selected component definitions into the + base A2UI schema. This ensures the LLM generates valid JSON for the specific + set of components available on the client. + +### 3. Instruction Generation (`agent.go`) + +* The `RizzchartsAgent` constructs the system instructions for Gemini. +* It dynamically loads **Example Templates** (`chart.json`, `map.json`) + corresponding to the active catalog. +* These templates are embedded into the system prompt, teaching Gemini how to + construct valid A2UI payloads for specific intents (e.g., "Show Sales" -> + Chart Template, "Show Locations" -> Map Template). + +### 4. Execution Loop (`executor.go`) + +* The executor manages the chat with Gemini. +* It registers the A2UI tool (`send_a2ui_json_to_client`) and the data retrieval + tools (`get_sales_data`, `get_store_sales`) with the model. +* **Tool Execution**: + 1. Gemini calls a data tool (e.g., `get_sales_data`). + 2. The tool returns raw data. + 3. Gemini uses the data and the embedded templates to construct an A2UI JSON + payload. + 4. Gemini calls `send_a2ui_json_to_client` with this payload. +* **Validation**: The `send_a2ui_json_to_client` tool (from the SDK) validates + the generated JSON against the active schema to ensure correctness before + sending. + +### 5. Response Construction + +* The executor captures the validated A2UI payload. +* It wraps the payload in an A2A `DataPart` with the MIME type + `application/json+a2ui`. +* The final response, containing both the text reply and the UI payload, is sent + back to the client. + +## Project Structure + +* **`main.go`**: Entry point; server setup; loads resources. +* **`agent.go`**: Agent definition; prompt engineering; loads JSON examples. +* **`executor.go`**: A2A/Gemini integration logic; session state management. +* **`catalog.go`**: Logic for selecting and merging A2UI schemas and catalogs. +* **`tools.go`**: Mock data tools (`get_store_sales`, `get_sales_data`). +* **`examples/`**: Contains the "Golden JSON" templates for the LLM to mimic. + * `standard_catalog/`: Templates using standard A2UI components. + * `rizzcharts_catalog/`: Templates using custom components defined in + `rizzcharts_catalog_definition.json`. + +## Disclaimer + +**Important**: This code is for demonstration purposes. In a production +environment, ensure you treat all incoming agent data as untrusted. Implement +strict validation and security measures when rendering UI or processing tool +inputs. diff --git a/samples/agent/adk/rizzcharts-go/agent.go b/samples/agent/adk/rizzcharts-go/agent.go new file mode 100644 index 000000000..bfd847932 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/agent.go @@ -0,0 +1,272 @@ +package main + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "encoding/json" + "fmt" + "log" + "os" + "path/filepath" + "strings" + + "github.com/google/A2UI/a2a_agents/go/a2ui" + "github.com/santhosh-tekuri/jsonschema/v5" +) + +const ( + RizzchartsCatalogURI = "https://github.com/google/A2UI/blob/main/samples/agent/adk/rizzcharts/rizzcharts_catalog_definition.json" + A2UICatalogURIStateKey = "user:a2ui_catalog_uri" +) + +// RizzchartsAgent represents the ecommerce dashboard agent. +type RizzchartsAgent struct { + Name string + Description string + Tools []a2ui.BaseTool + a2uiEnabledProvider a2ui.A2UIEnabledProvider + a2uiSchemaProvider a2ui.A2UISchemaProvider +} + +// NewRizzchartsAgent creates a new RizzchartsAgent. +func NewRizzchartsAgent(enabledProvider a2ui.A2UIEnabledProvider, schemaProvider a2ui.A2UISchemaProvider) *RizzchartsAgent { + toolset := a2ui.NewSendA2UIToClientToolset(enabledProvider, schemaProvider) + // In a real app, we'd pass a context. Using background for init. + tools, _ := toolset.GetTools(context.Background()) + + allTools := []a2ui.BaseTool{ + &GetStoreSalesTool{}, + &GetSalesDataTool{}, + } + allTools = append(allTools, tools...) + + return &RizzchartsAgent{ + Name: "rizzcharts_agent", + Description: "An agent that lets sales managers request sales data.", + Tools: allTools, + a2uiEnabledProvider: enabledProvider, + a2uiSchemaProvider: schemaProvider, + } +} + +// GetA2UISchema retrieves and wraps the A2UI schema. +func (a *RizzchartsAgent) GetA2UISchema(ctx context.Context) (map[string]interface{}, error) { + schema, err := a.a2uiSchemaProvider(ctx) + if err != nil { + return nil, err + } + return a2ui.WrapAsJSONArray(schema) +} + +// LoadExample loads an example JSON file and validates it against the A2UI schema. +func (a *RizzchartsAgent) LoadExample(ctx context.Context, path string, a2uiSchema map[string]interface{}) (map[string]interface{}, error) { + // Assuming local file system for simplicity in this sample + data, err := os.ReadFile(path) + if err != nil { + return nil, fmt.Errorf("failed to read example file %s: %w", path, err) + } + + var exampleJSON interface{} // Can be map or slice + if err := json.Unmarshal(data, &exampleJSON); err != nil { + return nil, fmt.Errorf("failed to parse example JSON: %w", err) + } + + // Validate against schema + schemaBytes, err := json.Marshal(a2uiSchema) + if err != nil { + return nil, err + } + + c := jsonschema.NewCompiler() + if err := c.AddResource("schema.json", strings.NewReader(string(schemaBytes))); err != nil { + return nil, err + } + schema, err := c.Compile("schema.json") + if err != nil { + return nil, err + } + + if err := schema.Validate(exampleJSON); err != nil { + return nil, fmt.Errorf("example validation failed: %w", err) + } + + // Return as map if it's an object, or handle slice if needed. + // The Python code returns dict[str, Any], but the input can be a list. + // For A2UI examples which are arrays of messages, we usually process them as interface{}. + // Here we return interface{} to be flexible, but signature says map[string]interface{}. + // Let's adjust to interface{}. + return nil, nil // Placeholder, logic below +} + +// LoadExampleGeneric loads and returns the example as interface{} +func (a *RizzchartsAgent) LoadExampleGeneric(ctx context.Context, path string, a2uiSchema map[string]interface{}) (interface{}, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, fmt.Errorf("failed to read example file %s: %w", path, err) + } + + var exampleJSON interface{} + if err := json.Unmarshal(data, &exampleJSON); err != nil { + return nil, fmt.Errorf("failed to parse example JSON: %w", err) + } + + schemaBytes, err := json.Marshal(a2uiSchema) + if err != nil { + return nil, err + } + + c := jsonschema.NewCompiler() + if err := c.AddResource("schema.json", strings.NewReader(string(schemaBytes))); err != nil { + return nil, err + } + schema, err := c.Compile("schema.json") + if err != nil { + return nil, err + } + + if err := schema.Validate(exampleJSON); err != nil { + return nil, fmt.Errorf("example validation failed: %w", err) + } + + return exampleJSON, nil +} + +// GetInstructions generates the system instructions for the agent. +func (a *RizzchartsAgent) GetInstructions(ctx context.Context, state map[string]interface{}) (string, error) { + // Check enabled state from state map if present, or fallback to provider + // In Python: use_ui = self._a2ui_enabled_provider(readonly_context) + // where the provider reads from ctx.state + + // Since we updated PrepareSession to populate state[a2uiEnabledKey], we can read it directly + // or assume the provider passed to constructor does it (which is mocked in main.go). + // To be consistent with the dynamic update, we should check the state. + + useUI := false + if val, ok := state[a2uiEnabledKey].(bool); ok { + useUI = val + } + + if !useUI { + return "", fmt.Errorf("A2UI must be enabled to run rizzcharts agent") + } + + // Retrieve schema from state + var a2uiSchema map[string]interface{} + if val, ok := state[a2uiSchemaKey].(map[string]interface{}); ok { + a2uiSchema, _ = a2ui.WrapAsJSONArray(val) + } else { + return "", fmt.Errorf("A2UI schema not found in state") + } + + catalogURI, _ := state[A2UICatalogURIStateKey].(string) + + var mapExample, chartExample interface{} + + // Determine paths based on catalog URI + // Note: Paths are relative to the working directory when running the executable + var baseExampleDir string + if catalogURI == RizzchartsCatalogURI { + baseExampleDir = "examples/rizzcharts_catalog" + } else if catalogURI == a2ui.StandardCatalogID { + baseExampleDir = "examples/standard_catalog" + } else { + return "", fmt.Errorf("unsupported catalog uri: %s", catalogURI) + } + + var err error + mapExample, err = a.LoadExampleGeneric(ctx, filepath.Join(baseExampleDir, "map.json"), a2uiSchema) + if err != nil { + return "", err + } + chartExample, err = a.LoadExampleGeneric(ctx, filepath.Join(baseExampleDir, "chart.json"), a2uiSchema) + if err != nil { + return "", err + } + + mapExampleBytes, _ := json.Marshal(mapExample) + chartExampleBytes, _ := json.Marshal(chartExample) + + finalPrompt := ` +### System Instructions + +You are an expert A2UI Ecommerce Dashboard analyst. Your primary function is to translate user requests for ecommerce data into A2UI JSON payloads to display charts and visualizations. You MUST use the ` + "`send_a2ui_json_to_client`" + ` tool with the ` + "`a2ui_json`" + ` argument set to the A2UI JSON payload to send to the client. You should also include a brief text message with each response saying what you did and asking if you can help with anything else. + +**Core Objective:** To provide a dynamic and interactive dashboard by constructing UI surfaces with the appropriate visualization components based on user queries. + +**Key Components & Examples:** + +You will be provided a schema that defines the A2UI message structure and two key generic component templates for displaying data. + +1. **Charts:** Used for requests about sales breakdowns, revenue performance, comparisons, or trends. + * **Template:** Use the JSON from ` + "`---BEGIN CHART EXAMPLE---`" + `. +2. **Maps:** Used for requests about regional data, store locations, geography-based performance, or regional outliers. + * **Template:** Use the JSON from ` + "`---BEGIN MAP EXAMPLE---`" + `. + +You will also use layout components like ` + "`Column`" + ` (as the ` + "`root`" + `) and ` + "`Text`" + ` (to provide a title). + +--- + +### Workflow and Rules + +Your task is to analyze the user's request, fetch the necessary data, select the correct generic template, and send the corresponding A2UI JSON payload. + +1. **Analyze the Request:** Determine the user's intent (Visual Chart vs. Geospatial Map). + * "show my sales breakdown by product category for q3" -> **Intent:** Chart. + * "show revenue trends yoy by month" -> **Intent:** Chart. + * "were there any outlier stores in the northeast region" -> **Intent:** Map. + +2. **Fetch Data:** Select and use the appropriate tool to retrieve the necessary data. + * Use **` + "`get_sales_data`" + `** for general sales, revenue, and product category trends (typically for Charts). + * Use **` + "`get_store_sales`" + `** for regional performance, store locations, and geospatial outliers (typically for Maps). + +3. **Select Example:** Based on the intent, choose the correct example block to use as your template. + * **Intent** (Chart/Data Viz) -> Use ` + "`---BEGIN CHART EXAMPLE---`" + `. + * **Intent** (Map/Geospatial) -> Use ` + "`---BEGIN MAP EXAMPLE---`" + `. + +4. **Construct the JSON Payload:** + * Use the **entire** JSON array from the chosen example as the base value for the ` + "`a2ui_json`" + ` argument. + * **Generate a new ` + "`surfaceId`" + `:** You MUST generate a new, unique ` + "`surfaceId`" + ` for this request (e.g., ` + "`sales_breakdown_q3_surface`" + `, ` + "`regional_outliers_northeast_surface`" + `). This new ID must be used for the ` + "`surfaceId`" + ` in all three messages within the JSON array (` + "`beginRendering`" + `, ` + "`surfaceUpdate`" + `, ` + "`dataModelUpdate`" + `). + * **Update the title Text:** You MUST update the ` + "`literalString`" + ` value for the ` + "`Text`" + ` component (the component with ` + "`id: \"page_header\"`" + `) to accurately reflect the specific user query. For example, if the user asks for "Q3" sales, update the generic template text to "Q3 2025 Sales by Product Category". + * Ensure the generated JSON perfectly matches the A2UI specification. It will be validated against the json_schema and rejected if it does not conform. + * If you get an error in the tool response apologize to the user and let them know they should try again. + +5. **Call the Tool:** Call the ` + "`send_a2ui_json_to_client`" + ` tool with the fully constructed ` + "`a2ui_json`" + ` payload. The ` + "`a2ui_json`" + ` argument MUST be a string containing the JSON structure. + * **NEVER provide the map description in text.** + * **IMMEDIATELY call the ` + "`send_a2ui_json_to_client`" + ` tool after receiving data from a data tool.** + +**Thought Process:** +Always think step-by-step before answering. +1. Identify the user's intent. +2. Identify the necessary data and tool to fetch it. +3. Call the data tool. +4. **IMMEDIATELY** select the A2UI template based on data and intent. +5. Construct the A2UI JSON. +6. Call ` + "`send_a2ui_json_to_client`" + `. + +---BEGIN CHART EXAMPLE--- +%s +---END CHART EXAMPLE--- + +---BEGIN MAP EXAMPLE--- +%s +---END MAP EXAMPLE--- +` + + finalPrompt = fmt.Sprintf(finalPrompt, string(chartExampleBytes), string(mapExampleBytes)) + + log.Printf("Generated system instructions for A2UI ENABLED and catalog %s", catalogURI) + return finalPrompt, nil +} diff --git a/samples/agent/adk/rizzcharts-go/catalog.go b/samples/agent/adk/rizzcharts-go/catalog.go new file mode 100644 index 000000000..4aacdbf83 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/catalog.go @@ -0,0 +1,157 @@ +package main + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "encoding/json" + "fmt" + "log" + "strings" + + "github.com/google/A2UI/a2a_agents/go/a2ui" +) + +// ComponentCatalogBuilder handles loading and merging component catalogs. +type ComponentCatalogBuilder struct { + a2uiSchemaContent string + uriToLocalCatalogContent map[string]string + defaultCatalogURI string +} + +// NewComponentCatalogBuilder creates a new ComponentCatalogBuilder. +func NewComponentCatalogBuilder(schemaContent string, uriToLocalContent map[string]string, defaultURI string) *ComponentCatalogBuilder { + return &ComponentCatalogBuilder{ + a2uiSchemaContent: schemaContent, + uriToLocalCatalogContent: uriToLocalContent, + defaultCatalogURI: defaultURI, + } +} + +// LoadA2UISchema loads the schema and catalog based on client capabilities. +func (b *ComponentCatalogBuilder) LoadA2UISchema(clientUICapabilities map[string]interface{}) (map[string]interface{}, string, error) { + log.Printf("Loading A2UI client capabilities %v", clientUICapabilities) + + var catalogURI string + var inlineCatalogStr string + + if clientUICapabilities != nil { + supportedIDsRaw, _ := clientUICapabilities[a2ui.SupportedCatalogIDsKey].([]interface{}) + var supportedIDs []string + for _, id := range supportedIDsRaw { + if strID, ok := id.(string); ok { + supportedIDs = append(supportedIDs, strID) + } + } + + // Check supported catalogs + found := false + for _, uri := range []string{RizzchartsCatalogURI, a2ui.StandardCatalogID} { + for _, supported := range supportedIDs { + if supported == uri { + catalogURI = uri + found = true + break + } + } + if found { + break + } + } + + inlineCatalogStr, _ = clientUICapabilities[a2ui.InlineCatalogsKey].(string) + } else if b.defaultCatalogURI != "" { + log.Printf("Using default catalog %s since client UI capabilities not found", b.defaultCatalogURI) + catalogURI = b.defaultCatalogURI + } else { + return nil, "", fmt.Errorf("client UI capabilities not provided") + } + + var catalogJSON map[string]interface{} + + if catalogURI != "" && inlineCatalogStr != "" { + return nil, "", fmt.Errorf("cannot set both supportedCatalogIds and inlineCatalogs") + } else if catalogURI != "" { + if content, ok := b.uriToLocalCatalogContent[catalogURI]; ok { + log.Printf("Loading local component catalog with uri %s", catalogURI) + if err := json.Unmarshal([]byte(content), &catalogJSON); err != nil { + return nil, "", fmt.Errorf("failed to parse local catalog: %w", err) + } + } else { + return nil, "", fmt.Errorf("local component catalog with URI %s not found", catalogURI) + } + } else if inlineCatalogStr != "" { + log.Printf("Loading inline component catalog") + if err := json.Unmarshal([]byte(inlineCatalogStr), &catalogJSON); err != nil { + return nil, "", fmt.Errorf("failed to parse inline catalog: %w", err) + } + } else { + return nil, "", fmt.Errorf("no supported catalogs found") + } + + // Simple $ref resolution for the sample: if the catalog refs the standard catalog, merge them. + if components, ok := catalogJSON["components"].(map[string]interface{}); ok { + if ref, ok := components["$ref"].(string); ok { + // Heuristic: if it looks like the standard catalog ref, merge standard components. + if strings.Contains(ref, "standard_catalog_definition.json") { + if standardContent, ok := b.uriToLocalCatalogContent[a2ui.StandardCatalogID]; ok { + var standardJSON map[string]interface{} + if err := json.Unmarshal([]byte(standardContent), &standardJSON); err == nil { + if standardComps, ok := standardJSON["components"].(map[string]interface{}); ok { + log.Println("Merging standard components into custom catalog") + for k, v := range standardComps { + if _, exists := components[k]; !exists { + components[k] = v + } + } + delete(components, "$ref") + } + } + } + } + } + } + + log.Println("Loading A2UI schema") + var a2uiSchemaJSON map[string]interface{} + if err := json.Unmarshal([]byte(b.a2uiSchemaContent), &a2uiSchemaJSON); err != nil { + return nil, "", fmt.Errorf("failed to parse A2UI schema: %w", err) + } + + // Merge catalog into schema + // Path: properties -> surfaceUpdate -> properties -> components -> items -> properties -> component -> properties + if props, ok := a2uiSchemaJSON["properties"].(map[string]interface{}); ok { + if su, ok := props["surfaceUpdate"].(map[string]interface{}); ok { + if suProps, ok := su["properties"].(map[string]interface{}); ok { + if comps, ok := suProps["components"].(map[string]interface{}); ok { + if items, ok := comps["items"].(map[string]interface{}); ok { + if itemsProps, ok := items["properties"].(map[string]interface{}); ok { + if comp, ok := itemsProps["component"].(map[string]interface{}); ok { + // Correctly drill down to "components" in the catalog definition if it exists. + // This matches how catalogs are structured (e.g., standard_catalog_definition.json has a top-level "components" key). + if components, ok := catalogJSON["components"].(map[string]interface{}); ok { + comp["properties"] = components + } else { + comp["properties"] = catalogJSON + } + } + } + } + } + } + } + } + + return a2uiSchemaJSON, catalogURI, nil +} diff --git a/samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/chart.json b/samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/chart.json new file mode 100644 index 000000000..ccaee8f3a --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/chart.json @@ -0,0 +1,105 @@ +[ + { + "beginRendering": { + "surfaceId": "sales-dashboard", + "root": "root-canvas" + } + }, + { + "surfaceUpdate": { + "surfaceId": "sales-dashboard", + "components": [ + { + "id": "root-canvas", + "component": { + "Canvas": { + "children": { + "explicitList": [ + "chart-container" + ] + } + } + } + }, + { + "id": "chart-container", + "component": { + "Column": { + "children": { + "explicitList": [ + "sales-chart" + ] + }, + "alignment": "center" + } + } + }, + { + "id": "sales-chart", + "component": { + "Chart": { + "type": "doughnut", + "title": { + "path": "chart.title" + }, + "chartData": { + "path": "chart.items" + } + } + } + } + ] + } + }, + { + "dataModelUpdate": { + "surfaceId": "sales-dashboard", + "path": "/", + "contents": [ + {"key": "chart.title", "valueString": "Sales by Category"}, + {"key": "chart.items[0].label", "valueString": "Apparel"}, + {"key": "chart.items[0].value", "valueNumber": 41}, + {"key": "chart.items[0].drillDown[0].label", "valueString": "Tops"}, + {"key": "chart.items[0].drillDown[0].value", "valueNumber": 31}, + {"key": "chart.items[0].drillDown[1].label", "valueString": "Bottoms"}, + {"key": "chart.items[0].drillDown[1].value", "valueNumber": 38}, + { + "key": "chart.items[0].drillDown[2].label", "valueString": "Outerwear" + }, + {"key": "chart.items[0].drillDown[2].value", "valueNumber": 20}, + {"key": "chart.items[0].drillDown[3].label", "valueString": "Footwear"}, + {"key": "chart.items[0].drillDown[3].value", "valueNumber": 11}, + {"key": "chart.items[1].label", "valueString": "Home Goods"}, + {"key": "chart.items[1].value", "valueNumber": 15}, + {"key": "chart.items[1].drillDown[0].label", "valueString": "Pillow"}, + {"key": "chart.items[1].drillDown[0].value", "valueNumber": 8}, + { + "key": "chart.items[1].drillDown[1].label", + "valueString": "Coffee Maker" + }, + {"key": "chart.items[1].drillDown[1].value", "valueNumber": 16}, + {"key": "chart.items[1].drillDown[2].label", "valueString": "Area Rug"}, + {"key": "chart.items[1].drillDown[2].value", "valueNumber": 3}, + { + "key": "chart.items[1].drillDown[3].label", + "valueString": "Bath Towels" + }, + {"key": "chart.items[1].drillDown[3].value", "valueNumber": 14}, + {"key": "chart.items[2].label", "valueString": "Electronics"}, + {"key": "chart.items[2].value", "valueNumber": 28}, + {"key": "chart.items[2].drillDown[0].label", "valueString": "Phones"}, + {"key": "chart.items[2].drillDown[0].value", "valueNumber": 25}, + {"key": "chart.items[2].drillDown[1].label", "valueString": "Laptops"}, + {"key": "chart.items[2].drillDown[1].value", "valueNumber": 27}, + {"key": "chart.items[2].drillDown[2].label", "valueString": "TVs"}, + {"key": "chart.items[2].drillDown[2].value", "valueNumber": 21}, + {"key": "chart.items[2].drillDown[3].label", "valueString": "Other"}, + {"key": "chart.items[2].drillDown[3].value", "valueNumber": 27}, + {"key": "chart.items[3].label", "valueString": "Health & Beauty"}, + {"key": "chart.items[3].value", "valueNumber": 10}, + {"key": "chart.items[4].label", "valueString": "Other"}, + {"key": "chart.items[4].value", "valueNumber": 6} + ] + } + } +] diff --git a/samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/map.json b/samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/map.json new file mode 100644 index 000000000..093006c27 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/examples/rizzcharts_catalog/map.json @@ -0,0 +1,119 @@ +[ + { + "beginRendering": { + "surfaceId": "la-map-view", + "root": "root-canvas" + } + }, + { + "surfaceUpdate": { + "surfaceId": "la-map-view", + "components": [ + { + "id": "root-canvas", + "component": { + "Canvas": { + "children": { + "explicitList": [ + "map-layout-container" + ] + } + } + } + }, + { + "id": "map-layout-container", + "component": { + "Column": { + "children": { + "explicitList": [ + "map-header", + "location-map" + ] + }, + "alignment": "stretch" + } + } + }, + { + "id": "map-header", + "component": { + "Text": { + "text": { + "literalString": "Points of Interest in Los Angeles" + }, + "usageHint": "h2" + } + } + }, + { + "id": "location-map", + "component": { + "GoogleMap": { + "center": { + "path": "mapConfig.center" + }, + "zoom": { + "path": "mapConfig.zoom" + }, + "pins": { + "path": "mapConfig.locations" + } + } + } + } + ] + } + }, + { + "dataModelUpdate": { + "surfaceId": "la-map-view", + "path": "/", + "contents": [ + {"key": "mapConfig.center.lat", "valueNumber": 34.0522}, + {"key": "mapConfig.center.lng", "valueNumber": -118.2437}, + {"key": "mapConfig.zoom", "valueNumber": 11}, + {"key": "mapConfig.locations[0].lat", "valueNumber": 34.0135}, + {"key": "mapConfig.locations[0].lng", "valueNumber": -118.4947}, + { + "key": "mapConfig.locations[0].name", + "valueString": "Google Store Santa Monica" + }, + { + "key": "mapConfig.locations[0].description", + "valueString": "Your local destination for Google hardware." + }, + {"key": "mapConfig.locations[0].background", "valueString": "#4285F4"}, + {"key": "mapConfig.locations[0].borderColor", "valueString": "#FFFFFF"}, + {"key": "mapConfig.locations[0].glyphColor", "valueString": "#FFFFFF"}, + {"key": "mapConfig.locations[1].lat", "valueNumber": 34.1341}, + {"key": "mapConfig.locations[1].lng", "valueNumber": -118.3215}, + { + "key": "mapConfig.locations[1].name", + "valueString": "Griffith Observatory" + }, + {"key": "mapConfig.locations[2].lat", "valueNumber": 34.1340}, + {"key": "mapConfig.locations[2].lng", "valueNumber": -118.3397}, + { + "key": "mapConfig.locations[2].name", + "valueString": "Hollywood Sign Viewpoint" + }, + {"key": "mapConfig.locations[3].lat", "valueNumber": 34.0453}, + {"key": "mapConfig.locations[3].lng", "valueNumber": -118.2673}, + { + "key": "mapConfig.locations[3].name", + "valueString": "Crypto.com Arena" + }, + {"key": "mapConfig.locations[4].lat", "valueNumber": 34.0639}, + {"key": "mapConfig.locations[4].lng", "valueNumber": -118.3592}, + {"key": "mapConfig.locations[4].name", "valueString": "LACMA"}, + {"key": "mapConfig.locations[5].lat", "valueNumber": 33.9850}, + {"key": "mapConfig.locations[5].lng", "valueNumber": -118.4729}, + { + "key": "mapConfig.locations[5].name", + "valueString": "Venice Beach Boardwalk" + } + ] + } + } +] diff --git a/samples/agent/adk/rizzcharts-go/examples/standard_catalog/chart.json b/samples/agent/adk/rizzcharts-go/examples/standard_catalog/chart.json new file mode 100644 index 000000000..d04d19347 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/examples/standard_catalog/chart.json @@ -0,0 +1,118 @@ +[ + { + "beginRendering": { + "surfaceId": "sales-dashboard", + "root": "root-column", + "styles": { + "primaryColor": "#00BFFF", + "font": "Arial" + } + } + }, + { + "surfaceUpdate": { + "surfaceId": "sales-dashboard", + "components": [ + { + "id": "root-column", + "component": { + "Column": { + "children": { + "explicitList": [ + "chart-title", + "category-list" + ] + } + } + } + }, + { + "id": "chart-title", + "component": { + "Text": { + "text": { + "path": "chart.title" + }, + "usageHint": "h2" + } + } + }, + { + "id": "category-list", + "component": { + "List": { + "direction": "vertical", + "children": { + "template": { + "componentId": "category-item-template", + "dataBinding": "/chart.items" + } + } + } + } + }, + { + "id": "category-item-template", + "component": { + "Card": { + "child": "item-row" + } + } + }, + { + "id": "item-row", + "component": { + "Row": { + "distribution": "spaceBetween", + "children": { + "explicitList": [ + "item-label", + "item-value" + ] + } + } + } + }, + { + "id": "item-label", + "component": { + "Text": { + "text": { + "path": "label" + } + } + } + }, + { + "id": "item-value", + "component": { + "Text": { + "text": { + "path": "value" + } + } + } + } + ] + } + }, + { + "dataModelUpdate": { + "surfaceId": "sales-dashboard", + "path": "/", + "contents": [ + {"key": "chart.title", "valueString": "Sales by Category"}, + {"key": "chart.items[0].label", "valueString": "Apparel"}, + {"key": "chart.items[0].value", "valueNumber": 41}, + {"key": "chart.items[1].label", "valueString": "Home Goods"}, + {"key": "chart.items[1].value", "valueNumber": 15}, + {"key": "chart.items[2].label", "valueString": "Electronics"}, + {"key": "chart.items[2].value", "valueNumber": 28}, + {"key": "chart.items[3].label", "valueString": "Health & Beauty"}, + {"key": "chart.items[3].value", "valueNumber": 10}, + {"key": "chart.items[4].label", "valueString": "Other"}, + {"key": "chart.items[4].value", "valueNumber": 6} + ] + } + } +] diff --git a/samples/agent/adk/rizzcharts-go/examples/standard_catalog/map.json b/samples/agent/adk/rizzcharts-go/examples/standard_catalog/map.json new file mode 100644 index 000000000..3eca41f88 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/examples/standard_catalog/map.json @@ -0,0 +1,154 @@ +[ + { + "beginRendering": { + "surfaceId": "la-map-view", + "root": "root-column", + "styles": { + "primaryColor": "#4285F4", + "font": "Roboto" + } + } + }, + { + "surfaceUpdate": { + "surfaceId": "la-map-view", + "components": [ + { + "id": "root-column", + "component": { + "Column": { + "children": { + "explicitList": [ + "map-header", + "map-image", + "location-list" + ] + }, + "alignment": "stretch" + } + } + }, + { + "id": "map-header", + "component": { + "Text": { + "text": { + "literalString": "Points of Interest in Los Angeles" + }, + "usageHint": "h2" + } + } + }, + { + "id": "location-list", + "component": { + "List": { + "direction": "vertical", + "children": { + "template": { + "componentId": "location-card-template", + "dataBinding": "/mapConfig.locations" + } + } + } + } + }, + { + "id": "location-card-template", + "component": { + "Card": { + "child": "location-details" + } + } + }, + { + "id": "location-details", + "component": { + "Column": { + "children": { + "explicitList": [ + "location-name", + "location-description" + ] + } + } + } + }, + { + "id": "location-name", + "component": { + "Text": { + "text": { + "path": "name" + }, + "usageHint": "h4" + } + } + }, + { + "id": "location-description", + "component": { + "Text": { + "text": { + "path": "description" + } + } + } + } + ] + } + }, + { + "dataModelUpdate": { + "surfaceId": "la-map-view", + "path": "/", + "contents": [ + { + "key": "mapConfig.locations[0].name", + "valueString": "Google Store Santa Monica" + }, + { + "key": "mapConfig.locations[0].description", + "valueString": "Your local destination for Google hardware." + }, + { + "key": "mapConfig.locations[1].name", + "valueString": "Griffith Observatory" + }, + { + "key": "mapConfig.locations[1].description", + "valueString": "A public observatory with views of the Hollywood Sign." + }, + { + "key": "mapConfig.locations[2].name", + "valueString": "Hollywood Sign Viewpoint" + }, + { + "key": "mapConfig.locations[2].description", + "valueString": "Iconic landmark in the Hollywood Hills." + }, + { + "key": "mapConfig.locations[3].name", + "valueString": "Crypto.com Arena" + }, + { + "key": "mapConfig.locations[3].description", + "valueString": "Multi-purpose sports and entertainment arena." + }, + {"key": "mapConfig.locations[4].name", "valueString": "LACMA"}, + { + "key": "mapConfig.locations[4].description", + "valueString": "Los Angeles County Museum of Art." + }, + { + "key": "mapConfig.locations[5].name", + "valueString": "Venice Beach Boardwalk" + }, + { + "key": "mapConfig.locations[5].description", + "valueString": "Famous oceanfront promenade." + } + ] + } + } +] diff --git a/samples/agent/adk/rizzcharts-go/executor.go b/samples/agent/adk/rizzcharts-go/executor.go new file mode 100644 index 000000000..9521d364a --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/executor.go @@ -0,0 +1,453 @@ +package main + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "fmt" + "log" + "os" + + "github.com/a2aproject/a2a-go/a2a" + "github.com/a2aproject/a2a-go/a2asrv" + "github.com/a2aproject/a2a-go/a2asrv/eventqueue" + "github.com/google/A2UI/a2a_agents/go/a2ui" + "github.com/google/generative-ai-go/genai" + "google.golang.org/api/option" +) + +const ( + a2uiEnabledKey = "system:a2ui_enabled" + a2uiSchemaKey = "system:a2ui_schema" +) + +// RizzchartsAgentExecutor handles agent execution and A2A integration. +type RizzchartsAgentExecutor struct { + baseURL string + componentCatalogBuilder *ComponentCatalogBuilder + agent *RizzchartsAgent +} + +// NewRizzchartsAgentExecutor creates a new executor. +func NewRizzchartsAgentExecutor(baseURL string, builder *ComponentCatalogBuilder, agent *RizzchartsAgent) *RizzchartsAgentExecutor { + return &RizzchartsAgentExecutor{ + baseURL: baseURL, + componentCatalogBuilder: builder, + agent: agent, + } +} + +// GetAgentCard returns the AgentCard defining this agent's metadata and skills. +func (e *RizzchartsAgentExecutor) GetAgentCard() *a2a.AgentCard { + supportedContentTypes := []string{"text", "text/plain"} + + // Dereference the pointer returned by GetA2UIAgentExtension + a2uiExt := *a2ui.GetA2UIAgentExtension(false, []string{a2ui.StandardCatalogID, RizzchartsCatalogURI}) + + return &a2a.AgentCard{ + Name: "Ecommerce Dashboard Agent", + Description: "This agent visualizes ecommerce data, showing sales breakdowns, YOY revenue performance, and regional sales outliers.", + URL: e.baseURL, + Version: "1.0.0", + DefaultInputModes: supportedContentTypes, + DefaultOutputModes: supportedContentTypes, + PreferredTransport: "JSONRPC", + ProtocolVersion: "0.3.0", + Capabilities: a2a.AgentCapabilities{ + Streaming: true, + Extensions: []a2a.AgentExtension{ + a2uiExt, + }, + }, + Skills: []a2a.AgentSkill{ + { + ID: "view_sales_by_category", + Name: "View Sales by Category", + Description: "Displays a pie chart of sales broken down by product category for a given time period.", + Tags: []string{"sales", "breakdown", "category", "pie chart", "revenue"}, + Examples: []string{ + "show my sales breakdown by product category for q3", + "What's the sales breakdown for last month?", + }, + }, + { + ID: "view_regional_outliers", + Name: "View Regional Sales Outliers", + Description: "Displays a map showing regional sales outliers or store-level performance.", + Tags: []string{"sales", "regional", "outliers", "stores", "map", "performance"}, + Examples: []string{ + "interesting. were there any outlier stores", + "show me a map of store performance", + }, + }, + }, + } +} + +// PrepareSession handles session preparation logic, including A2UI state setup. +// It matches the logic in the Python sample's _prepare_session method. +func (e *RizzchartsAgentExecutor) PrepareSession(ctx context.Context, state map[string]interface{}, reqCtx *a2asrv.RequestContext) error { + log.Printf("Preparing session") + state["base_url"] = e.baseURL + + // Check if A2UI is enabled for this request using the extension mechanism + useUI := a2ui.TryActivateA2UIExtension(ctx) + + if useUI { + log.Println("A2UI extension activated") + + // Extract client capabilities from the message metadata + var clientCapabilities map[string]interface{} + if reqCtx != nil && reqCtx.Message != nil && reqCtx.Message.Metadata != nil { + if caps, ok := reqCtx.Message.Metadata[a2ui.ClientCapabilitiesKey].(map[string]interface{}); ok { + clientCapabilities = caps + } + } + + a2uiSchema, catalogURI, err := e.componentCatalogBuilder.LoadA2UISchema(clientCapabilities) + if err != nil { + return err + } + + // Update state with A2UI configuration + state[a2uiEnabledKey] = true + state[a2uiSchemaKey] = a2uiSchema + state[A2UICatalogURIStateKey] = catalogURI + } else { + log.Println("A2UI extension NOT activated") + } + + return nil +} + +// Execute implements a2asrv.AgentExecutor. +func (e *RizzchartsAgentExecutor) Execute(ctx context.Context, reqCtx *a2asrv.RequestContext, queue eventqueue.Queue) error { + log.Println("Executor: Execute started") + state := make(map[string]interface{}) + + // Task State: Submitted (if new) + if reqCtx.StoredTask == nil { + log.Println("Executor: Sending TaskStateSubmitted") + event := a2a.NewStatusUpdateEvent(reqCtx, a2a.TaskStateSubmitted, nil) + if err := queue.Write(ctx, event); err != nil { + log.Printf("Executor: Failed to write submitted event: %v", err) + return fmt.Errorf("failed to write state submitted: %w", err) + } + } + + // Prepare session (A2UI setup) + if err := e.PrepareSession(ctx, state, reqCtx); err != nil { + log.Printf("Executor: PrepareSession failed: %v", err) + event := a2a.NewStatusUpdateEvent(reqCtx, a2a.TaskStateFailed, &a2a.Message{ + Role: a2a.MessageRoleUnspecified, + Parts: []a2a.Part{ + &a2a.TextPart{Text: fmt.Sprintf("Failed to prepare session: %v", err)}, + }, + }) + queue.Write(ctx, event) + return nil + } + + // Task State: Working + log.Println("Executor: Sending TaskStateWorking") + event := a2a.NewStatusUpdateEvent(reqCtx, a2a.TaskStateWorking, nil) + if err := queue.Write(ctx, event); err != nil { + log.Printf("Executor: Failed to write working event: %v", err) + return fmt.Errorf("failed to write state working: %w", err) + } + + // Extract User Text + var userText string + if reqCtx.Message != nil { + log.Printf("Executor: Inspecting %d parts", len(reqCtx.Message.Parts)) + for i, p := range reqCtx.Message.Parts { + log.Printf("Executor: Part %d type: %T", i, p) + if txtPart, ok := p.(*a2a.TextPart); ok { + userText = txtPart.Text + } else if txtPart, ok := p.(a2a.TextPart); ok { + userText = txtPart.Text + } + } + } + log.Printf("Executor: User text: %q", userText) + + // --- Gemini Integration --- + + client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY"))) + if err != nil { + log.Printf("Failed to create Gemini client: %v", err) + return err + } + defer client.Close() + + model := client.GenerativeModel("gemini-2.5-flash") + model.SetTemperature(0.0) // Deterministic + + // Convert tools + var modelTools []*genai.FunctionDeclaration + for _, t := range e.agent.Tools { + decl := t.GetDeclaration() + + props := &genai.Schema{Type: genai.TypeObject, Properties: make(map[string]*genai.Schema)} + if pMap, ok := decl.Parameters["properties"].(map[string]interface{}); ok { + for name, pDef := range pMap { + if defMap, ok := pDef.(map[string]interface{}); ok { + s := &genai.Schema{Type: genai.TypeString} // Default to string + if typeStr, ok := defMap["type"].(string); ok { + if typeStr == "string" { + s.Type = genai.TypeString + } + } + if desc, ok := defMap["description"].(string); ok { + s.Description = desc + } + props.Properties[name] = s + } + } + } + required := []string{} + if req, ok := decl.Parameters["required"].([]string); ok { + required = req + } + props.Required = required + + modelTools = append(modelTools, &genai.FunctionDeclaration{ + Name: decl.Name, + Description: decl.Description, + Parameters: props, + }) + } + model.Tools = []*genai.Tool{ + { + FunctionDeclarations: modelTools, + }, + } + + // System Instruction + instr, _ := e.agent.GetInstructions(ctx, state) + + // Inject schema into context for ProcessLLMRequest + var rawSchema map[string]interface{} + if val, ok := state[a2uiSchemaKey].(map[string]interface{}); ok { + rawSchema = val + } + + ctxWithSchema := ctx + if rawSchema != nil { + ctxWithSchema = context.WithValue(ctx, schemaContextKey, rawSchema) + } + + // Collect additional instructions from tools (e.g. A2UI schema) + llmReq := &a2ui.LlmRequest{} + for _, t := range e.agent.Tools { + if err := t.ProcessLLMRequest(ctxWithSchema, nil, llmReq); err != nil { + log.Printf("Tool %s ProcessLLMRequest failed: %v", t.Name(), err) + } + } + + // Append tool instructions + for _, toolInstr := range llmReq.Instructions { + instr += "\n" + toolInstr + } + + log.Printf("System Instruction Length: %d", len(instr)) + + model.SystemInstruction = &genai.Content{Parts: []genai.Part{genai.Text(instr)}} + + cs := model.StartChat() + + // Send Message + log.Println("Executor: Sending message to Gemini...") + resp, err := cs.SendMessage(ctx, genai.Text(userText)) + if err != nil { + log.Printf("Gemini SendMessage failed: %v", err) + return err + } + + var responseText string + var a2uiPayloads []map[string]interface{} + + // Handle Tool Loop + for { + if len(resp.Candidates) == 0 || len(resp.Candidates[0].Content.Parts) == 0 { + break + } + + var functionCalls []genai.FunctionCall + + // Reset responseText for the current turn to avoid accumulating redundant text history + // from previous turns (e.g. "I will do X" ... "I have done X"). + // We only want the latest text response. + responseText = "" + + // Scan all parts for function calls or text + for _, part := range resp.Candidates[0].Content.Parts { + if fc, ok := part.(genai.FunctionCall); ok { + functionCalls = append(functionCalls, fc) + } else if txt, ok := part.(genai.Text); ok { + responseText += string(txt) + } + } + + // If no function calls, we are done + if len(functionCalls) == 0 { + break + } + + // Execute all function calls + var functionResponses []genai.Part + for _, fc := range functionCalls { + log.Printf("Gemini called tool: %s", fc.Name) + + // Find tool + var selectedTool a2ui.BaseTool + for _, t := range e.agent.Tools { + if t.Name() == fc.Name { + selectedTool = t + break + } + } + + var toolResult map[string]interface{} + if selectedTool != nil { + // Execute + toolArgs := make(map[string]interface{}) + for k, v := range fc.Args { + toolArgs[k] = v + } + + // Inject schema into context + ctxWithSchema := ctx + if rawSchema != nil { + log.Println("Executor: Injecting schema into context for tool execution") + ctxWithSchema = context.WithValue(ctx, schemaContextKey, rawSchema) + } else { + log.Println("Executor: Warning: rawSchema is nil") + } + // Run + res, err := selectedTool.Run(ctxWithSchema, toolArgs, nil) + if err != nil { + log.Printf("Executor: Tool execution failed: %v", err) + toolResult = map[string]interface{}{"error": err.Error()} + } else { + toolResult = res + // Capture A2UI payload if it's the send tool + if fc.Name == "send_a2ui_json_to_client" { + log.Println("Executor: Processing send_a2ui_json_to_client response") + if validated, ok := res["validated_a2ui_json"].([]interface{}); ok { + log.Printf("Executor: Found %d validated payloads", len(validated)) + for _, v := range validated { + if m, ok := v.(map[string]interface{}); ok { + a2uiPayloads = append(a2uiPayloads, m) + } + } + } else { + log.Println("Executor: validated_a2ui_json missing or invalid type") + } + } + } + } else { + log.Printf("Executor: Tool %s not found in agent tools", fc.Name) + toolResult = map[string]interface{}{"error": "tool not found"} + } + + functionResponses = append(functionResponses, genai.FunctionResponse{ + Name: fc.Name, + Response: toolResult, + }) + } + + // Send responses back + resp, err = cs.SendMessage(ctx, functionResponses...) + if err != nil { + log.Printf("Gemini SendMessage (func response) failed: %v", err) + return err + } + } + + // Construct Final Response + log.Printf("Executor: Captured %d A2UI payloads", len(a2uiPayloads)) + + var allParts []a2a.Part + + // Add text if present + if responseText != "" { + allParts = append(allParts, &a2a.TextPart{Text: responseText}) + } + + // Add artifacts and send Data Message if present + var dataParts []a2a.Part + for _, payload := range a2uiPayloads { + dp := &a2a.DataPart{ + Data: payload, + Metadata: map[string]interface{}{ + a2ui.MIMETypeKey: a2ui.MIMEType, + }, + } + dataParts = append(dataParts, dp) + allParts = append(allParts, dp) + } + + if len(dataParts) > 0 { + log.Println("Executor: Sending TaskArtifactUpdateEvent") + artifactEvent := a2a.NewArtifactEvent(reqCtx, dataParts...) + if err := queue.Write(ctx, artifactEvent); err != nil { + log.Printf("Executor: Failed to write artifact event: %v", err) + return fmt.Errorf("failed to write artifact event: %w", err) + } + } + + if len(allParts) > 0 { + log.Println("Executor: Sending Combined Response Message") + msg := a2a.NewMessageForTask(a2a.MessageRole("model"), reqCtx, allParts...) + if err := queue.Write(ctx, msg); err != nil { + log.Printf("Executor: Failed to write response message: %v", err) + return fmt.Errorf("failed to write response message: %w", err) + } + } + + log.Println("Executor: Sending TaskStateCompleted (Final)") + completeEvent := a2a.NewStatusUpdateEvent(reqCtx, a2a.TaskStateCompleted, nil) + completeEvent.Final = true + if err := queue.Write(ctx, completeEvent); err != nil { + log.Printf("Executor: Failed to write completed event: %v", err) + return fmt.Errorf("failed to write state completed: %w", err) + } + + log.Println("Executor: Execute finished successfully") + return nil +} + +// Cancel implements a2asrv.AgentExecutor. +func (e *RizzchartsAgentExecutor) Cancel(ctx context.Context, reqCtx *a2asrv.RequestContext, queue eventqueue.Queue) error { + event := a2a.NewStatusUpdateEvent(reqCtx, a2a.TaskStateCanceled, nil) + event.Final = true + return queue.Write(ctx, event) +} + +// Helper providers +func GetA2UISchema(state map[string]interface{}) map[string]interface{} { + if val, ok := state[a2uiSchemaKey].(map[string]interface{}); ok { + return val + } + return nil +} + +func GetA2UIEnabled(state map[string]interface{}) bool { + if val, ok := state[a2uiEnabledKey].(bool); ok { + return val + } + return false +} diff --git a/samples/agent/adk/rizzcharts-go/go.mod b/samples/agent/adk/rizzcharts-go/go.mod new file mode 100644 index 000000000..9d3a3e6e0 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/go.mod @@ -0,0 +1,48 @@ +module github.com/google/A2UI/samples/agent/adk/rizzcharts-go + +go 1.24.8 + +replace github.com/google/A2UI/a2a_agents/go => ../../../../a2a_agents/go + +require ( + github.com/a2aproject/a2a-go v0.3.5 + github.com/google/A2UI/a2a_agents/go v0.0.0-00010101000000-000000000000 + github.com/google/generative-ai-go v0.20.1 + github.com/joho/godotenv v1.5.1 + github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 + google.golang.org/api v0.263.0 +) + +require ( + cloud.google.com/go v0.115.0 // indirect + cloud.google.com/go/ai v0.8.0 // indirect + cloud.google.com/go/auth v0.18.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + cloud.google.com/go/longrunning v0.5.7 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.11 // indirect + github.com/googleapis/gax-go/v2 v2.16.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect + golang.org/x/crypto v0.47.0 // indirect + golang.org/x/net v0.49.0 // indirect + golang.org/x/oauth2 v0.34.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/text v0.33.0 // indirect + golang.org/x/time v0.14.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d // indirect + google.golang.org/grpc v1.78.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect +) diff --git a/samples/agent/adk/rizzcharts-go/go.sum b/samples/agent/adk/rizzcharts-go/go.sum new file mode 100644 index 000000000..fef9436ea --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/go.sum @@ -0,0 +1,102 @@ +cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= +cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= +cloud.google.com/go/ai v0.8.0 h1:rXUEz8Wp2OlrM8r1bfmpF2+VKqc1VJpafE3HgzRnD/w= +cloud.google.com/go/ai v0.8.0/go.mod h1:t3Dfk4cM61sytiggo2UyGsDVW3RF1qGZaUKDrZFyqkE= +cloud.google.com/go/auth v0.18.1 h1:IwTEx92GFUo2pJ6Qea0EU3zYvKnTAeRCODxfA/G5UWs= +cloud.google.com/go/auth v0.18.1/go.mod h1:GfTYoS9G3CWpRA3Va9doKN9mjPGRS+v41jmZAhBzbrA= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU= +cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng= +github.com/a2aproject/a2a-go v0.3.5 h1:sc6p5sVrahAtO0De14iIKt2RCbIu7qp0ZUdaxNufopw= +github.com/a2aproject/a2a-go v0.3.5/go.mod h1:8C0O6lsfR7zWFEqVZz/+zWCoxe8gSWpknEpqm/Vgj3E= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/generative-ai-go v0.20.1 h1:6dEIujpgN2V0PgLhr6c/M1ynRdc7ARtiIDPFzj45uNQ= +github.com/google/generative-ai-go v0.20.1/go.mod h1:TjOnZJmZKzarWbjUJgy+r3Ee7HGBRVLhOIgupnwR4Bg= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.11 h1:vAe81Msw+8tKUxi2Dqh/NZMz7475yUvmRIkXr4oN2ao= +github.com/googleapis/enterprise-certificate-proxy v0.3.11/go.mod h1:RFV7MUdlb7AgEq2v7FmMCfeSMCllAzWxFgRdusoGks8= +github.com/googleapis/gax-go/v2 v2.16.0 h1:iHbQmKLLZrexmb0OSsNGTeSTS0HO4YvFOG8g5E4Zd0Y= +github.com/googleapis/gax-go/v2 v2.16.0/go.mod h1:o1vfQjjNZn4+dPnRdl/4ZD7S9414Y4xA+a/6Icj6l14= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= +golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/api v0.263.0 h1:UFs7qn8gInIdtk1ZA6eXRXp5JDAnS4x9VRsRVCeKdbk= +google.golang.org/api v0.263.0/go.mod h1:fAU1xtNNisHgOF5JooAs8rRaTkl2rT3uaoNGo9NS3R8= +google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 h1:GvESR9BIyHUahIb0NcTum6itIWtdoglGX+rnGxm2934= +google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:yJ2HH4EHEDTd3JiLmhds6NkJ17ITVYOdV3m3VKOnws0= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d h1:xXzuihhT3gL/ntduUZwHECzAn57E8dA6l8SOtYWdD8Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/samples/agent/adk/rizzcharts-go/main.go b/samples/agent/adk/rizzcharts-go/main.go new file mode 100644 index 000000000..2a49f5f51 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/main.go @@ -0,0 +1,218 @@ +package main + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "flag" + "fmt" + "log" + "log/slog" + "net/http" + "os" + "sync" + + "github.com/a2aproject/a2a-go/a2a" + "github.com/a2aproject/a2a-go/a2asrv" + "github.com/google/A2UI/a2a_agents/go/a2ui" + "github.com/joho/godotenv" +) + +// InMemoryTaskStore implementation +type InMemoryTaskStore struct { + mu sync.RWMutex + tasks map[a2a.TaskID]*a2a.Task +} + +func NewInMemoryTaskStore() *InMemoryTaskStore { + return &InMemoryTaskStore{ + tasks: make(map[a2a.TaskID]*a2a.Task), + } +} + +func (s *InMemoryTaskStore) Save(ctx context.Context, task *a2a.Task, event a2a.Event, prev a2a.TaskVersion) (a2a.TaskVersion, error) { + s.mu.Lock() + defer s.mu.Unlock() + + // Basic optimistic concurrency check (ignored for sample simplicity if prev is empty) + // In a real store, check if existing task version matches prev. + + // Create a deep copy or just store the pointer (for in-memory sample, pointer is risky but okay for simple usage) + // To be safe, we should clone, but a2a.Task is complex. Storing the pointer for now. + s.tasks[task.ID] = task + + // Return new version (using timestamp or incremental counter). + // a2a.TaskVersion is int64. + return a2a.TaskVersion(len(task.History)), nil +} + +func (s *InMemoryTaskStore) Get(ctx context.Context, taskID a2a.TaskID) (*a2a.Task, a2a.TaskVersion, error) { + s.mu.RLock() + defer s.mu.RUnlock() + + task, ok := s.tasks[taskID] + if !ok { + return nil, 0, a2a.ErrTaskNotFound + } + return task, a2a.TaskVersion(len(task.History)), nil +} + +func (s *InMemoryTaskStore) List(ctx context.Context, req *a2a.ListTasksRequest) (*a2a.ListTasksResponse, error) { + s.mu.RLock() + defer s.mu.RUnlock() + + var tasks []*a2a.Task + for _, t := range s.tasks { + tasks = append(tasks, t) + } + // Pagination logic would go here + return &a2a.ListTasksResponse{Tasks: tasks}, nil +} + +// Context key for passing schema +type contextKey string + +const schemaContextKey contextKey = "a2ui_schema" + +// Main entry point +func main() { + // Load environment variables from .env file if it exists + if err := godotenv.Load(); err != nil { + log.Println("No .env file found or error loading it") + } + + // Define flags for host and port + host := flag.String("host", "localhost", "Host to bind to") + port := flag.Int("port", 10002, "Port to bind to") + flag.Parse() + + // Check for API key + if os.Getenv("GOOGLE_GENAI_USE_VERTEXAI") != "TRUE" { + if os.Getenv("GEMINI_API_KEY") == "" { + log.Fatal("Error: GEMINI_API_KEY environment variable not set and GOOGLE_GENAI_USE_VERTEXAI is not TRUE.") + } + } + + baseURL := fmt.Sprintf("http://%s:%d", *host, *port) + + // Load schema and catalog contents + schemaContent, err := os.ReadFile("../../../../specification/v0_8/json/server_to_client.json") + if err != nil { + log.Fatalf("Failed to read schema: %v", err) + } + standardCatalogContent, err := os.ReadFile("../../../../specification/v0_8/json/standard_catalog_definition.json") + if err != nil { + log.Fatalf("Failed to read standard catalog: %v", err) + } + rizzchartsCatalogContent, err := os.ReadFile("rizzcharts_catalog_definition.json") + if err != nil { + log.Fatalf("Failed to read rizzcharts catalog: %v", err) + } + + catalogBuilder := NewComponentCatalogBuilder( + string(schemaContent), + map[string]string{ + a2ui.StandardCatalogID: string(standardCatalogContent), + RizzchartsCatalogURI: string(rizzchartsCatalogContent), + }, + a2ui.StandardCatalogID, + ) + + // Providers + enabledProvider := func(ctx context.Context) (bool, error) { + return true, nil + } + + schemaProvider := func(ctx context.Context) (map[string]interface{}, error) { + if val := ctx.Value(schemaContextKey); val != nil { + return val.(map[string]interface{}), nil + } + return nil, fmt.Errorf("A2UI schema not found in context") + } + + agent := NewRizzchartsAgent(enabledProvider, schemaProvider) + executor := NewRizzchartsAgentExecutor(baseURL, catalogBuilder, agent) + + // Setup A2A Server components + taskStore := NewInMemoryTaskStore() + logger := slog.New(slog.NewTextHandler(os.Stdout, nil)) + + // Create Request Handler + requestHandler := a2asrv.NewHandler( + executor, + a2asrv.WithTaskStore(taskStore), + a2asrv.WithLogger(logger), + ) + + // Middleware for CORS + enableCORS := func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + origin := r.Header.Get("Origin") + if origin != "" { + w.Header().Set("Access-Control-Allow-Origin", origin) + w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE") + w.Header().Set("Access-Control-Allow-Headers", "*") + w.Header().Set("Access-Control-Allow-Credentials", "true") + } + + if r.Method == "OPTIONS" { + w.WriteHeader(http.StatusOK) + return + } + + // Debug: Log headers to check for X-A2A-Extensions + log.Printf("Received %s request to %s with Headers: %v", r.Method, r.URL.Path, r.Header) + + // Manually inject extensions if present, handling canonical case (X-A2a-Extensions vs X-A2A-Extensions) + // This works around potential issues where a2asrv might expect exact casing or if NewJSONRPCHandler doesn't wrap it automatically. + exts := r.Header.Values("X-A2a-Extensions") + if len(exts) == 0 { + exts = r.Header.Values("X-A2A-Extensions") + } + + if len(exts) > 0 { + log.Printf("Found A2UI Extensions in header: %v. Injecting into context.", exts) + meta := a2asrv.NewRequestMeta(map[string][]string{ + a2asrv.ExtensionsMetaKey: exts, + }) + // a2asrv.WithCallContext returns (ctx, callContext). We need the ctx. + ctx, _ := a2asrv.WithCallContext(r.Context(), meta) + r = r.WithContext(ctx) + } else { + log.Println("No A2UI Extensions found in header.") + } + + next.ServeHTTP(w, r) + }) + } + + mux := http.NewServeMux() + + // Agent Card Endpoint + agentCardHandler := a2asrv.NewStaticAgentCardHandler(executor.GetAgentCard()) + mux.Handle("/.well-known/agent-card.json", agentCardHandler) + + // A2A JSON-RPC Handler + jsonRPCHandler := a2asrv.NewJSONRPCHandler(requestHandler) + mux.Handle("/", jsonRPCHandler) + + addr := fmt.Sprintf("%s:%d", *host, *port) + log.Printf("Starting server on %s", baseURL) + + // Wrap mux with CORS + if err := http.ListenAndServe(addr, enableCORS(mux)); err != nil { + log.Fatalf("Server failed: %v", err) + } +} diff --git a/samples/agent/adk/rizzcharts-go/main_test.go b/samples/agent/adk/rizzcharts-go/main_test.go new file mode 100644 index 000000000..950b4e1f0 --- /dev/null +++ b/samples/agent/adk/rizzcharts-go/main_test.go @@ -0,0 +1,222 @@ +package main + +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "os" + "strings" + "testing" + + "github.com/a2aproject/a2a-go/a2a" + "github.com/a2aproject/a2a-go/a2asrv" + "github.com/google/A2UI/a2a_agents/go/a2ui" +) + +func init() { + // Set dummy API key for tests to pass validation + os.Setenv("GEMINI_API_KEY", "test-key") +} + +// Helper to setup catalog builder for tests +func setupCatalogBuilder(t *testing.T) *ComponentCatalogBuilder { + schemaContent, err := os.ReadFile("../../../../specification/v0_8/json/server_to_client.json") + if err != nil { + t.Fatalf("Failed to read schema: %v", err) + } + standardCatalogContent, err := os.ReadFile("../../../../specification/v0_8/json/standard_catalog_definition.json") + if err != nil { + t.Fatalf("Failed to read standard catalog: %v", err) + } + rizzchartsCatalogContent, err := os.ReadFile("rizzcharts_catalog_definition.json") + if err != nil { + t.Fatalf("Failed to read rizzcharts catalog: %v", err) + } + + return NewComponentCatalogBuilder( + string(schemaContent), + map[string]string{ + a2ui.StandardCatalogID: string(standardCatalogContent), + RizzchartsCatalogURI: string(rizzchartsCatalogContent), + }, + a2ui.StandardCatalogID, + ) +} + +func TestGetAgentCard(t *testing.T) { + builder := setupCatalogBuilder(t) + agent := NewRizzchartsAgent(func(ctx context.Context) (bool, error) { return true, nil }, func(ctx context.Context) (map[string]interface{}, error) { return nil, nil }) + executor := NewRizzchartsAgentExecutor("http://localhost:10002", builder, agent) + card := executor.GetAgentCard() + + if card.Name != "Ecommerce Dashboard Agent" { + t.Errorf("Expected agent name 'Ecommerce Dashboard Agent', got '%s'", card.Name) + } + if len(card.Skills) != 2 { + t.Errorf("Expected 2 skills, got %d", len(card.Skills)) + } + foundExt := false + for _, ext := range card.Capabilities.Extensions { + if ext.URI == a2ui.ExtensionURI { + foundExt = true + break + } + } + if !foundExt { + t.Error("Expected A2UI extension in capabilities") + } +} + +func TestTools(t *testing.T) { + // Test GetStoreSalesTool + storeTool := &GetStoreSalesTool{} + if storeTool.Name() != "get_store_sales" { + t.Errorf("Expected tool name 'get_store_sales', got '%s'", storeTool.Name()) + } + res, err := storeTool.Run(context.Background(), map[string]interface{}{"region": "all"}, nil) + if err != nil { + t.Fatalf("GetStoreSalesTool failed: %v", err) + } + if res["locations"] == nil { + t.Error("Expected locations in response") + } + + // Test GetSalesDataTool + salesTool := &GetSalesDataTool{} + if salesTool.Name() != "get_sales_data" { + t.Errorf("Expected tool name 'get_sales_data', got '%s'", salesTool.Name()) + } + res, err = salesTool.Run(context.Background(), map[string]interface{}{"time_period": "Q1"}, nil) + if err != nil { + t.Fatalf("GetSalesDataTool failed: %v", err) + } + if res["sales_data"] == nil { + t.Error("Expected sales_data in response") + } +} + +func TestAgentInstructions(t *testing.T) { + builder := setupCatalogBuilder(t) + + // Mock providers + enabledProvider := func(ctx context.Context) (bool, error) { return true, nil } + schemaProvider := func(ctx context.Context) (map[string]interface{}, error) { return nil, nil } + + agent := NewRizzchartsAgent(enabledProvider, schemaProvider) + + // Manually populate state as PrepareSession would + schema, uri, err := builder.LoadA2UISchema(map[string]interface{}{ + a2ui.SupportedCatalogIDsKey: []interface{}{RizzchartsCatalogURI}, + }) + if err != nil { + t.Fatalf("Failed to load schema: %v", err) + } + + state := map[string]interface{}{ + a2uiEnabledKey: true, + a2uiSchemaKey: schema, + A2UICatalogURIStateKey: uri, + } + + instr, err := agent.GetInstructions(context.Background(), state) + if err != nil { + t.Fatalf("GetInstructions failed: %v", err) + } + + if !strings.Contains(instr, "---BEGIN CHART EXAMPLE---") { + t.Error("Instructions missing chart example") + } + if !strings.Contains(instr, "send_a2ui_json_to_client") { + t.Error("Instructions missing tool call instructions") + } +} + +func TestAgentCardEndpoint(t *testing.T) { + // Setup request + req := httptest.NewRequest("GET", "/.well-known/agent-card.json", nil) + w := httptest.NewRecorder() + + // Recreate the handler logic from main (simplified) + builder := setupCatalogBuilder(t) + agent := NewRizzchartsAgent(func(ctx context.Context) (bool, error) { return true, nil }, func(ctx context.Context) (map[string]interface{}, error) { return nil, nil }) + executor := NewRizzchartsAgentExecutor("http://localhost:test", builder, agent) + + handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + card := executor.GetAgentCard() + w.Header().Set("Content-Type", "application/json") + if err := json.NewEncoder(w).Encode(card); err != nil { + http.Error(w, "Failed to encode agent card", http.StatusInternalServerError) + } + }) + + handler.ServeHTTP(w, req) + + resp := w.Result() + if resp.StatusCode != http.StatusOK { + t.Errorf("Expected status 200, got %d", resp.StatusCode) + } + if resp.Header.Get("Content-Type") != "application/json" { + t.Errorf("Expected content type application/json, got %s", resp.Header.Get("Content-Type")) + } + + var card a2a.AgentCard + if err := json.NewDecoder(resp.Body).Decode(&card); err != nil { + t.Fatalf("Failed to decode agent card: %v", err) + } + if card.Name != "Ecommerce Dashboard Agent" { + t.Errorf("Expected agent name 'Ecommerce Dashboard Agent', got '%s'", card.Name) + } +} + +func TestPrepareSession(t *testing.T) { + builder := setupCatalogBuilder(t) + agent := NewRizzchartsAgent(func(ctx context.Context) (bool, error) { return true, nil }, func(ctx context.Context) (map[string]interface{}, error) { return nil, nil }) + executor := NewRizzchartsAgentExecutor("http://localhost:test", builder, agent) + state := make(map[string]interface{}) + + // Context with A2UI requested + reqMeta := a2asrv.NewRequestMeta(map[string][]string{ + a2asrv.ExtensionsMetaKey: {a2ui.ExtensionURI}, + }) + ctx, _ := a2asrv.WithCallContext(context.Background(), reqMeta) + + reqCtx := &a2asrv.RequestContext{ + Message: &a2a.Message{ + Metadata: map[string]interface{}{ + a2ui.ClientCapabilitiesKey: map[string]interface{}{ + a2ui.SupportedCatalogIDsKey: []interface{}{RizzchartsCatalogURI}, + }, + }, + }, + } + + err := executor.PrepareSession(ctx, state, reqCtx) + if err != nil { + t.Fatalf("PrepareSession failed: %v", err) + } + + if state[a2uiEnabledKey] != true { + t.Error("Expected A2UI enabled in state") + } + if state[A2UICatalogURIStateKey] != RizzchartsCatalogURI { + t.Errorf("Expected catalog URI %s, got %v", RizzchartsCatalogURI, state[A2UICatalogURIStateKey]) + } + if state[a2uiSchemaKey] == nil { + t.Error("Expected schema in state") + } +} diff --git a/samples/agent/adk/rizzcharts-go/rizzcharts-go b/samples/agent/adk/rizzcharts-go/rizzcharts-go new file mode 100755 index 0000000000000000000000000000000000000000..c598eade9b49d46b59ee94a17b42bc2c5e99a624 GIT binary patch literal 26308947 zcmeFa34D~*xj#PHU|94W6eK9oQf&yw>ixS3XkmyxyEgRgBg<7>-d|p=a@lxdxz;CCxz;CCIqO=aYOz^YyDDw#jjJ_Q^HsMOE5CJ} z`gi|zvY*}N?)uUy*EQwKz2PwUmuTDJQ5Bf<@zkRxywzKq)4W=jc_^G(zO_Z+rL{$s z+eAR7{4=Yyz-$X5jpY;B5_nbRvrcfQl(uzg{~8n~ysh%~EuYBz_AO7yYra{!uX(lL zX1%Y;DDO1OJI(S=6PYZ}HZsdMqWs}_{1&Ty&o%6rW698o|>_uVnzE$3mZ{OJ~Dssc{4oOK}`vo99>8h$@T zmTUOECa<+~j$D3NMtNIrauojcK0#h9V)7~R<4oMCn+jZH`xZlIq+4*ZUS~e9MuKc8 zGvP_q|0`8*tl}zf;>l*)*F*U$pHk&luNat;+iWZ4&6Xa@pK_B+w)~4{(+8H(9a}bD zWWHnd%g-DxU!R-O7H>22zGc1382@gwd@tLXX*Fb)Cwk<&jPf6zIa$6gUq0lByX*UMl}PW{gH zb%6;NmS0?1|J{oEn=ZQ6`<>bm6H2b1T;!hazu=n^IEa%D-~4HY9M_`f^t;_3-S z*SU+YxbA{0zI(N}__7f*rj)x&=1x4nBH+L9{Bhqo|H`T7UnA?LrlTymZ1NShH{ZCl zX~C;!^|5_#*__y$6QAuJ{b8RGb8oojqLCx!UU%-?8*UENpIh&~=-i7&o>zCvdFR`% zm?lDpMDRnq&_{^SC&o(5yF^o~zn=(=vy0$r`|PXQMbk%tJugrK8UKmo*n1n2|4OeY zot~(}xOr7?n>X~LaW`v`l}>XAeN+dE+H4~9qCV~%eNw(&XRq+-NdM(gxAOW4$PAjw7to*r1&FCQu zpNqmMySvpIu`_eL3R}i%|J>DpGTQLpxFYiUxa%Q# zea7{qysmV$;wtoEZ~wAa)^o?<{&|v|2#=XL{BgYRXFT*9Vr7&FPj}fx=wlIXbnQWo zjxv{>>Q$h9hX|LsoOsi}$b6G;+$M`%@B$UGu?P>wJ@_$6K!o!Sz~mLWr1}9Obhvn3 z@s{Fvd{?!EH=ypZrO+Q}u2ATMUPBo@Zzq0(o!NnJ6t{||E&f3Q4NJ8x!i!w_@hw8f zGw7nQ9hE8i#c+OyQpP}ZAvUNwBElE`l|01+{ zwaQt;3&3vg$h!i!G((K{eoffmU9=X{`Xs-g{vmjQ`oDp!#>>do)Ef9RYVONgI;0U8 z`*os!3ctY*^F`A>5qei>w|;qLdDL-iTlH!U!&O z_x&R>xrx8W6JUn8&lnUW7kKm2rz#H7}zrOeOWHS{~|PICQ^VF6P|jWH}$#nN^dA$I>Q^9b*;&Bx!dHYC{57ZLhE zg#CCq5=aB0`k?j-$- z&>E_U9bbT+P}OE8h4a3}$`$*Zz?yxb!@kgd^ck>-@8TPE-)_{RfbKTdu~XqO7ui8A zp*5hE#}38g7Cs5D&oPL_A69@G2o?bCan~k-{UH`q0IGOFQvEMvRRrR6+@-+u3Yp*s z3MItv<|Da7gx&{~y?U-of?0$rkYi8>JZZ)%46AqxVEWKJf2V}g#P%@I>W_W!OpnC5O0O(#U49}mm(CzVd;$F-La!0N zl_q?_4xqig;tw*L2(Og#7|)OZT4O)v(t8n%P_p}qcSTnA}@{36(%W!#9I%n*1B8SH0*tPh16T@P}kO&@8EKj4in5%qvN71uVp+#FD7yd7921j<5th}cp|u8?KuN%0o;p&b}deF(g2wEX7+TbW)ITQ9<@ zmkS2ijs^>}3ny7OPh(!u#tlz?Tma<>YDsCSEEZBq{Dzd44M2kcfZDJAI&Q zuXYCrGzXcgg?97$YHe`x8(^Cqz2bAo z06p)b2cfFz>9kaJIF~BGZu~b28%{uN8tg;Zh%-vBq@5XhJ-#izwe)Jp1_1r4+3g!r z?MGpp_pE7^jH=c?X@&J=_vzO<2|FjuG9QFDdUInwZ3`!Vii|}7aA_#lRop6qAUT`% z<5rMHwRQ_~l@87+s zf>sl(kYnv&3_v)>4i+6_2UG2l)c(~NAGh?_zakTWuwE1ZiwHoEG}DY3X`L)gLeb|c z0_w|L!UtG-2+K;^bPfs72DAo%;?V-D52m{WYlSwzms3dCdH~y+1Z-{T{k_EOZ&z?0 zvAfGaT}hZ8Yj-#QoCAs+HR{`^7P3Tgo3v3|KWBgnV9$^wp}h3(WF9y?&_ zD#T4bZ``;clwAThZr)TDuZxWnp(RSf>SY_86xjL3tJ$b?V=n9DW0O5s$xq`H*^Ze% z-j--Gc%aXsWz`X5DGP2xLE}^2Ex`{ud*!g7+E&niXB_IwbiUP}k>e5i1i?1JwiBem zQz$~8O4DJkYmW%y$9Uv1&90WZAOCZnh|Z!0sJ;Cr-c_W zMxlQZi<`P$zjXTpRr@PI1GcU2%J%ma>}}i%#bLI8Lt6VQz~)D2KV2Jl?Vs+c3GT}3 zIhQVKwCCQ=((Y^RK95SzK1zB{kLebCw3bbn2yDCOIN0iAI(RABcIQCgr)l4Or_g%~ z{c5{O8g1|73O#o)@I2Uj1?3uQGoE^;8%Ss^p25Lgr*+?XfJ18$1NXJ%0=nI25y5&p z)lK)Qvi#tEZBFfh9&(_5nch z%o_$86`}Qf)pqbwQLq&(bE=?uWpa(70}23|zn77g@s_E zcSm%?M6X0l7EUrzbQWyLu5@F)(Uyta>ZWx8OxS4k?r7IBW69bSddUPB(t8~#JwgBl z-#)G3z<@xW&^?~^;xtJ11b3_bWcd?hd3Q#6h2Jc{FxwHqwojxKIv?|@7smh57I&=| z!B)|Z9}j=r{HfqiZQ?Qct|+7W4Jqv}7>Ggm`!*anAut3ZDT1|*pN0d2{DT_~oa8^Q z;lN;j4n~(u!=3vm15DOGL>A7>o=hKfl=J~dNk8!@=>xk>$ILpjOBQP675q2oNEwiR z(vi|JKC(oXe=2SU2j4kO1Xlrp2ki^KCBnyjyNn3jEW#Bcb|HQ}u@U%n$A;s#B6bFT zYh%OYo5AvTfPCK%zeTaU;w@7DZ1JC_Et>}--52Opysvmmte1W}Ncf-#Z4#lqBx#GZ z(*|ZfNd7&?0=XWrrTwaQ<6^K7G@5!+%JRCf$!W2_c2{lU9cwuXd`$is zBqGW4bKgicNrAUcT6N}Jh zWBL=_2v_t{TLv0W^tS5_($7CLey6P`DoONjS;hH_-(kiGd(?Y8fW9SGsl>3&ilxyucU5;_e(J8n;2uUmWq3wATR@xo;#Sqz|g%?mzXm zh4x@v5o1LU12cz0@`DU30tr4xkUdZE!Rxp!O{k?xymT0JKR&;g1Jjn(7iAsPmaXRq z(`y%5t3=7h1tY}p1C;LjVZ6MLaUFoj-w2WaEs&*&ACoxM@IswN3`0w?2hjKPtM|9r z8hX%SFx|D5KKt72J)}oO*7hUe_h{)_i|vT^h1O!<*OuKw;{c^h@2PW0Cw%Ds2y<{WMa#ta*Ktn^($k3Tui$5z%H0@k;QE0zxVl6RaHL+6^ zyon|}`#Kr|>manU0(~0lv#-`3Xp3bRuM4fcsvY`yd0Knv)U#m&<%@RrA`o4APx=z? zu#>}+IB4``>kYttCy_gmy<6#cYKj=e5kE7xC;ng4+MMRRg(jb zdkZ>!S?#6!+8P2caKP{qdUA-YlhlCenxs*c4YW^x5hI?$pS~Edk(V6xbN5)Ib|glf z#1iMv+tvJeFkIIXNsB*x2%{62Vm&FZOI)qIEHj^nZ=V zqpcb@b) zW;7f10X}@vf(GU)GCyiKG#=c78eT#Ta|Vv`##eda`D%-!hIdgz+~40DJjfazMWG1q zwP0A5XYTN5=+HZ}Cx?gjmHtgOdBWtd>%=Kx*U)kRBPaMub}R=@a=L9ReW9PbnlS=_ zYlFO+z<>j=-hz-14^>>4s~L}#IaFZxH2Yms;H+`g!fM@d!<|?Lc^8aj{K-dL_*}I~ z_%*H5?tYIGW^aFQMnvo?$_{wbXhIUs#HuH)Yepm$892TMdV*i_>?J#8WXR>xbhE#G` zXuiWj|GC6H3yc!l6$gy=r`T5FeOj|xW0bIhv$s-|e5&2`iF{hA zAPJ2SzU{C#)G7AA1+<}ch_N;7X_YTLC9Axotvs}!Kq1aJjC zFT@8y4){MK*E&UL50zrE>=9N)31N(6ZK8YdoJ3?7(1tezid&!TuBvZA88ua~?F$jw zX!gqoO_g;RD{%k_^8Z{hLCIdf1ML~BpG*Pu;?)nK`m5S~p|w8P8jt-JX`wwD{pZF~ z`LM~jA6GTcTlXj&TbO@yy%hR8<;nPyd{`@!jE7Sn9>4>Nhlkai^)pny@p(oj_`-P; z{`R1)6e1Xrai`$N*zj39qeo9F(SZ8_t{;Apmr_f8bY zI#GmWV{uHiWZ8#NHexJ9VQ?MXB1vZjS;I*hFDz>=a}77H3=$a3lJH#+pH65OWPzx2 z4UgWBMX03MN!&?+1J6piUhOPzdM_}GF7YXl!9hyJMh`Gw1%8IZq#K zj}4IU<@_4Urkc>NLTW!h@5Pk+V9^qp=h^y@=dcQ>c9Q4-IW=?rx;LBs_>D;CdOjV6D;|1Z0lv!tF5Z# zH5EST{i9LC{{4)#vJwTLjQ*vTm+*ycj`3x|sFLfW#_aUsneaX8_?9Ne=SYt4#fE=k zd{+}{(}nJUZL%)bOTcXi`y)IOhQ??Q{_0_poquG5%$N0wGRS1%y@b#0PeLCD5O19V zq@PGg)66~U_+}@^SHwyb{{DXFF^) zJ(>M&nSEy(X~+kwe14+*34vZh7j9aJV91m@{wC{qJ-rUAd`_b+B`YRFV9*bd)k>d~ ztbaj1oh^_x0`_t2Jo+on=0ofZ_$tiCk>wuL5G_!-Qk9q4v(}CkM49k z>0yu)oNjr>k`*u^&t8e2yKn~$vb0M2+@2W-pW7`%yXpdC*7r?PObY+#1X!9R9%qEa zrZruGXM#HF%QQhP`1J#REk|aO>^_kANsWg~Lk=EN%Uh1jf2Mqr{s(?3{B&s_j?#ao z{UrY=5-$3Z`~#V)9L34TKa#+EKNDi<&sP7F?GKR5;`x&8C*e2fOTiEPb=ybBz+VW| zF&){-0e&b4xI2A78Bf;u;BrqDFrUhzu_XN@`#~#Fr#)ir_C&^#T07M1k8{%gm+PX-th#bHV z67>I7mG8j+jt`Cj|6gtS+OpJ=ujjNtw07|4bo@ZRj+!my>vRqBRU6!md_B0}Yx(+K zfcn8&h)PO;W7iK~Vfi@II0pXs%FD+S&-q$DCam+M{R{cH{O`wr|F5=u{K-!&`Ply{ zh{oUYCmTPIkEhI#@^NHe$j46xbR!?%nD@1O{MY4U(*FB@V}B;?uP<#smb`lm{PC5S zkJHZnT0V9oA1(X)|Dk_i$gX3czpu7@-p9Ba=^vQ;2Z-k0kK^YW+(AAstdR2gfn3Pv zDgC>V&)>S~Yx(@um(NN4@W1XKnEAJ3;IFT|eBWB|wS51-Dc?)pI0pLrYRmVNbW6T3 zc?6>U>__o)7w+i)ohaq|Gl%~G|8K8uqku5MtoB17sTv0gqNT(Admlv-m6!Yqr|MH#IrI@++*A4mN1y6^Wz=p*Cd z_r;14uBzShM^q%jw`QsMguU8bVZIptk_azElt4yYVDLchqMt8zUt1eEFYrL|mgpa3 z<*QgZH(yt9Q+6$)fVCyxWq4!BdhMPfRA-%cfT-nM?XCf`#oIskB7Ry$9R}ae^@T5I z9CU9VV32%S7zh0v=K!#DfFGts~tM2v<0%e#N47n|?O3*IOX56$M=O04VV1Wp{U zEgP6!UAp+-EjI^l=d0M+_{|O6jD&L#-ixD6N*8}|OLgF?35e@-WS2G^tPV_N#!~Hp zRdW2ngS`W1m1)a{_D0r2-Q`?> z)deg%(X6^g5#A_Obz`FHZ{UTImtO0$Jn}-%d#fG;(~sMQOAN=Kv^qt69SBIf_a0Q- zP@iw}e}I4&Y)-0lG;Z$O!zLbyQypC3+4`%ug@WS{mOJTsM6Sd1TUz$&h-T!V4?06eOc*{s| zJG8Kd?jttL?rAuDPT;+$oui2Zy)u2h7WT>X(M0N)z~7@~Oh*{6qW?`=_<6L8aT^OT z{F1d=us10grvbF>%Jb>N*5S2R_vIkEZ)lFMWL*IKw#bET;Mkw<3vD+JAn>!XHE>jk!z;-Y=H{%o7o(hh=uu8sPNa7G8JB?Rglwe#u5@c{H!8q;}1wnL%U>?cGaNhTyvMB5f zydZuKv0$>YKe4jkE=0`cukZupbpB%yiDt+Ec<8oG7&e}qojJ!p?ZSn+4?hWe1OTpOD%{cbO_?~>) z1DQqq7(3L39Gq9>@Lu1)e4&97rrQ6a6w#IFYKW)FPw`NHrE+(!!#`gWLHkwF0R% zX6ihZT7}e^Dz#R0G%%u!8``}$u09VOOohlcnmLjP$jaRyMe7VKct>c zRN0>7Q-|E!ZFY47FpO-iD%(fTb1co9WVXDVfCdYgCGu?MZE(!;zYNH-`A;-Xn9sAp za)8tAeh_?U5&)g|GH#6rQD(e$W&ApyKJv^?@SvXSQta))c_i6dn5VU%+>^+R^Q|7{ zCD@MLn1k-+ZOM+h@d#RffqVaPic;SjB9K3)66MF;f%M>*i_IQH0%i{e&A@waXc~Jk ziB*JFfn9_M4I7UqUwGUhFIaP8M_IO=z^NXKyL_81IOd~gIF{=t>;1EhY>cNo)Niux z%XXAwG`xW_ndIP25pME%=Np=I;F!uV*>Xu{^H%PPl z!pHq${e!m2q5j#pZTRbetjQrX#(otN`LbWw^o7J*pJ6_90Qa-Zj77{S2o;&JQfB<| zN|n)rj2D<0E10n+k+ELYXlATJ#(rkT+KC;F*`zEpZ)5g@c#zpIliAf+P~!EK?5r9} zurmiDP@(Xnc@l+h@}f}q5^pn5c-i$p;aCJC0);D(9vtKUvm&CG>ns%BkM|}Dn^{Ey zg?Hg84TU7!BnrPFYr2srl>9%+g8Tmr8qYxoB~_%M@n?TZpz)6@j)2BLK@M1GY%(({ zG$!z^&=@i^5{*@6Muo;iMuo=f%#1{%+sv3iqY0T5H2&j{>_7sIePjs>jk#Kwhx39H z&$?BjaWF5zcJOpwE^mRxOI}cN;=ca?1eRbB?~s-y(tUY za0?b(#Y=e77Xs2A8;-{KtfJ%V`#FurG$Duv9%ck9zcO|-jTO5m!C)8~p+>TYZC*szv zZU^G_Jas!5x5L!!5Zvaf+y2^pZK&uJ?Y>pbgFb(DKvu!#=HvF_%9r!hro&0-yU+MD zI+Z@gTo=1g*9X5ie?e|3Y+UCbgvY!(4Zpo)Qg0l+fbhpw$-h3l9*P$QYn$^L(F&w; zS+KLWcGsz>9oF&KW}j;uAwZf?_&=pfyEwcM2GKxNg<~D^#;VTR@yMQ>h`(X@%fpDY zmN~9*1zVekoowZ~FK?i_CAj*kTY_ucPRUJnj=sEt3Ka7EkA%&#)={CX+r|o1p_&93hcjA24K54 z@Q?ndPpIFSoN9o@ev)EzrQ9m}>pt*;*#~fW1$nCxo#u|jl4*9W=`9R_J;IYiYubz_ z_K5vMue7FC^@2Uqnn=jVTWHz;(+ahwU#fRSC|{&C{YYhpdCl@}t*Jr1C~;3K(VFUH z-f6-rUm>)nt5x|5l&{d5rmF0fs(hu^j-U&1axHj{d}c0t>kY@^S^~_7)d#I5#@4lbEf!TN@!MX3} zZvgulB5QGj(!2yl<9U;M<|S|rvTw(Y`+oighT(CCeB>`C&!E{N8tZQC<~c=DkP|aE zP&608en5`+D(pi; zCO=E(o-e0a$o?&4Ki_W5m3ad{jr|avZACwXzEoYB3T3jFpskDOtT{mAJ*us5#j`SgMf8;;ig(eQt?^rL|PU#6db zmA>{A92tIl`W!j^t4^Os<)5P<_^AAK6ax5n^WRa&ca;7~|N9_oZ(gI#_`|bU_RDaz z8y8JTvsKnx(o@R6Bg&Vw`two0uIf*-g{0~-HjhtjMCv*0A9_C7R(E$jOD>iBXzBkd z{M7nK55gZ^IBGg|s65+b5IwNI@YpQ)WE!J)nI zr&VkIwbk0|ZQ{Z>&f>t)+QBtA>aWA$4H}Nvt9UBHQ&9|uN3U_>&Kbk0b1H|>R&E!? ztv~30>bLrzru|1Nl+<|GC2`q>`PiwAoxB>ns{w7IUe>E~qVDV6iAR4xXlsSGP87EZ z?XT;^RzqMrccSpbaQ_$4c^i&o@lS$FymJAprHf+riMqd6r`Y;2j+cQWT)w@OZx^A` zt)K9m7wr|HZ4|}({R2_&MrIA}X1xK~DfCoePjSgs?U$`Mf<}bPO5^R_13_ylKoO)( zaNuVO&QDDRk=Aqws~AjmGS!)xy46hO(X3O7GE@J+6_DT>4?yVwi1F9y(eAzhZ>3T9 z;^A9P!ry85t9Ih&7Uzq9_pf^Ki`QF$o_IWP#*44{|AEIf>TzghRr5}Wt$eX_L9_}L z@;br1+HviMfko&uoc$U7OTu8x$RiI1#aUn*qxW^2g$E$FR%=z}Uu`Rd*CEHEh2D1cys&!Pkh;aM`JQVy=|wfyV|ASp>LwulDQ~Zx$%70~4u^`S0OOO3i;RRstO? zJbZ_@1Iu=x-mM3{Ti-!Jy9wIOzJe`g+47JRpTpScFBahmj_Tj-(flKtSq?;xa_@M9 zA7r86@tFlfj&^Sc`)h0OxjEmdd%7vtFlN+a=hI`}N=~ zbE??&hVv_6crgC1cfRcWT`S6Kw z)}p2uKfuZ`&wDP69_*GblI73tseC@mJEPB~l?Syzc+n*w>E^Bt=zYVO?Ql$G`Rgc8 zNlj9?0gqCA;W~p{dNqHl$&t74XFj>_PI4bs+WcGb_jmm5uhw?1!ryNEt%lIsWU-G3 z#ypF$24l1Ne-1%`!#mUjpY6>X18DccpN78~WXh|ZFMi>F8;tqEi?8h@H*U+UCm#2& zCMr-BE(zR6IKKI(2pvnagHZ;ev;%(-sU@57JqdX_qVLpB%oI<9q})ush7vaa#h9`E z4WOV}K8d1`hr{&MZ2WUba0WL1~EsWk>uYS|k7LXu5q z?t%id@h|j?Wn=ujw#(QPVQ?**5#gIQwus#1N9?Q@io*^`a!iT(jub-(*_wlz4V zl5J5sX>cmAeZlGFYM=*%ezA`u`$VRw?#7}wsC?Rju~uVVG}g&NGJmqQPoiU(7tI0n zXz#Zv^=yq6sCpa=iuaa6^s%x}LE(cz)SE%bpNYl52;3%(wJF8kjDA3x33i^gpvr2V z#mj7aWG&rPknGPp(LbUvvdnQ)@NGvcdlRiNP{o4i@+f%)tvDA9U)^?x>fGC4lfhD` zeewEU_6;0SW0iO}cDdCZ7AUjrlI6N7(l1$rDshf`7r1U0IPM>2odc~5tH5X8jvO{b zmW$okFy`rBNy&U8Bn*1jUklcuAKq}Sqk8|EJ(|{dITB20`UijNRf@(toJ;eH`|+s| z?OWf``eW66e!eejqbS)w?<2mN9Ot_QKNR6R;v#FKZ}{up(5UWYDBU}dnA2SjE~Pu^ zG%ECl4njw`+|d_sO1~v2d$^{T$65m_G0PW5?>u_>9`ti1PwxsIa%%Vdh^Ui_c?k6p z(4El7+R80~GXY*|<9RS*JCK;rxlFV}X-arg*kl0&I4Bm%H=0nsLr@~2Y*E7hO352_ zI3~zJyDLSXhIVXyr|km=b3D$}hB3PzlBl}|)hCqdu5^Ve<%vZyNE*BoF$}Ozp(hs^ zmWqT{RZ0CMd8qD!e72%3+3SO74@uqOjwtC)<2`1|zAoveMr%$kN(=v83$2S1}p4@u8A2#3zSBCQ4Aa!N0{z%1%fPHwZPyeR+m*$`c3O<09y zSP$HqRSW|`=+ioQ%fos1-}QjaIIjdT1@IWcmFY3w-i?_kJ1at^AmK6;;LPIgp=5oy zwc2*&@Sv|}?{|6c<9~VF+`A%ctJu5~=Zs_dvkVy_$?kbu(%AiREZxC_*cZ`OIC7Qo zT;oI>$D{pqi|ANGIucshHu^_pEQR`Hg>{tV7E!PbJID~$7HX3|MIP9S`{GuFt}J}k zmW!(Q@2@*P~;n-*Xs03aj23Ndxr_JW7~(#l?Mp6U#) zYTf@v^V9-BVqMXXF+QGr3wy&D^#z~+kkJWT!kz_J3kK$?8=eoF@hbIAE)HSE!Ho!S zLl+96(7!*Eu$5u}{n&=@+3erPG!Vq?PC^r4t~AcZDQm$oyB@&Aka2v|S-|gd$NprT zdxg2MX}$C5x!cO|DY)2ufa?5R8|gc9@S>FT-e1mK*8j!jzpKHnQy72mqLFdll14*TBh}KS2(pM zIco)E0SG$LNpqw~fkmEtvH5M)JicEvg6Me3c=`|!0a(CmJ`Zvb9}_8F2mgdR_Y|iD zhNTk1nV*~A_UU6Ck#aqEJI^0Hpap*iiuLjU{C9Jwga`I1N8ny?%;Nh2-iY5}?3l(S z^&Fp$W6VO=;`>Os`QDO)T9BUr5006|Y{>Ozm209tbQ3{1Ig|_cfX7x|BC!5b590NP zgk8?yw3b=Uczg3KjC58({H5ku1vv9dyPMy=4UXw&R(Bn$lPlD-OpJ^LMs5d2HYt{q z>k1eopusSbsW^WEFl(9FYxo-gMrgCe9gzl}Z3^!A4D{LC8ydO??h6uHq5Ljh)+;{U z;|Pv<;69FGm+{f%Z1$9Lz5gCYfB=3x0bb%{_-6UhBC+)yStX83-6nGIX}!<_w9PD6 z_DW_^&EkC5t!!3=MuTtB?2hjviVO$oW#PcXS~NS%Y<9kE7GM4|iS-pF;}qE)08JyN ziibjej9U^VZr{ai_ry5-g6@ei8tH}= z6;@g2({lYNA?fioIIWQjP^=<_xEtzExB1V2fO&MR8S6;-vhX#MwNwt0L&*yIG@u$t5!sb>77NJm1@>Ls| z1+2Bn_~FTNbaE9-wjpl@Q^`S9JAAyG@=Xe*pxH6rCSI}{=LZJUsJz>tc`2grcxJ|1EzA_ zRx-i&dUAlP_Fp=$`}WmwpXtPnCxyRejL_@@+9)Ib7~>6mRY|UQg6kL0M}+Vo^vY=7 ztVkMgL_pogPpYlm*Hr6-23ta_NM~Z;z^y#GzuRd^->L3D@L15_PCgV>-uu{I$|1<$p z(Qw=8h|iW?EJ7Dc6I~Q$7mH*zNWs&CpJg>qO?1&(6_*x-aqyfj2$fDzg-V6L+N6B~ ztRXO+_^TD6m97R!Mv4z1lr1*Q=cEMl#H!ZMH26IE^a|$4c=P%mkJhpear|T&EC<9R zzJfJ`P7Qktu42Wys+j&Pe#DRLn_ybWtPvmVQyx-WRIWX-iabpA73u8j>6U%{l1FRx zdH8V6Zd)Cgc`N`m2O0pMWa4m)n!gamw2AeJpgfwy+7mB{oQdG$Hj|GL@l8ICkdgZ+ zJF$|%57TLpoX_#D;aIUh1O3kjQBmHguEVs(r%53QAb!@AhX*=fZ`oDPXCv0lRbh&r zaYfXBOCRqAv*;fo*eA-?tsvwIW2YFU6BD+sdIvdhlHD6x2(4Ill06NQUJ$rG4&m%u zX*=BWOk#jaP;r0>K~<)YRg#L}+?7)|hMfhuk98Zz%g$UcJJXx^a>oW5%e@H;8o34_ zzz-cjga-oMsd$k~L?VPte)GT*KGul1wE2Up39@kB)bgda6&Din_rBbVr!cDo&>1SC zF#$ONp-t&m{*5lgs-)laZfqM;u#|sSnz9Eq!94&#cp~!qNrdlC42hj`Hp1o&H!EXy zw=jn^71k$*Q|gF_3;c@CLqyWCBJ<+Zpm zO(Ts3|Wj4-Og)w*lvm^4kG#5(YIs{W5B_wlaN6 zO$2mRl%%V?a(#LchJk%0KK<&d@~rL1FccYPOTx>kLxwp;FzvCGfLsMUP5~Vk3%D|+ z>A9X(mh7^$mXPizp`*LT!F(m@iU`F*;<+k1k(1SM-Y-x8u}uORrk8QTCnV%=-eVH7 zG}(|hcBb*{WrQ7GctcndlMwfY#yMnF=m94HKtH;VIY7r)GLvo1SSS7pJir5D^$0g4 zbKAftC@l%LHinYc*c)`yWN3_Pn1UedUvjGobC=xpB~2T+1llrYIc)DYa911aJ~&Uf;wJ2FM}EK9-&y+>_N@N{vxS@NVY>^V8p< zJih7607<^ZE}&|hul^#w0+B?3(kYLgm5K#|BtLpzw}?>s(K`ro!Wx{CYUC;9 z(z9M!tF^4d37=>SM|<9iopA-95+M>7kdLeiTb&vQ5wk!d$g2(ld0b6|x?~;qrsaFJ zCq9*n4m8uG!l4AruEVaEUi@YOj=}HADD>a05FhWuYlS`)+U1?>>PX#i?0;w^%|l+o zDG`%o?SzgnzEegabAjl9as>{t^Q^Q;p2CXdSNR(*K@mb>V^f!ycDDa0~_TSS+f2dfvr}oA1f-QZo?<5W1JnCHxgNs>u3Nz zX>F?C1S?5QDyjQA;(eLl&VFG4Qcpu1Lw-g_b&J*v{yKyXm@=6B<)0xx2@V8XY$ZAB z6p-V>xfVy=)sf&RFcYTO($Es8OZNx95ZF(4P=*#vG`M_<6U8NA8e(gAgkF%Sxlq>J z9ihXwRM7QAHC|4EJ40X6$vQb`RUq6$R^ z2p%LKFD(Rk@>7K+=SRjNe!L)o+t?2im{T{3KN%E}z#rpy0T9wKCS5%3hcJF@w(4pFD*F`*a=Im%9n+hgIs(*#AA;rOu~ZN3<}ja0 zl&^B?s#p$_l98v1@O*nD(%k<<5r^2=qxzM^r|gNeO#WPu3P;H!XxABCadiA@cOU=n zfp0nC>pceej!VLqWS$P-r^i_U{-nKo08_di9m3*Y0I`xoQ=DC3tgOG59)Yar_pJZR z@V$Jj1>Ya8`d8o^9P`TeDf~6#>`SOw;7;sC*Z02;_t&|bFCin+<^R$iK`#Y}g8ymB z`D2YRKQY7EV}z2)^x{-Sgubv+N!g%E@>ECeI1!^DlNPUg&W_yC7i1AyR+v-60T^zS zAFSaQ!Qm`G9mNquT9cj`g$|7cCWJGvFV{`74$v*cuLFMn8jpKTAm+ozeAowHNvYkR ziw{X*u7f!xxf*r|mqC!BS++QYpTPO}EeLb80|~=yoQTN=)WSqQrsfZdFxC!&t81h$ zM_zqg;>bGeZ8Lz1^*(%MjK+NUx2TrpMelhx`7ra8-Oy*?>k;eydHjgeET68vjpWnM zqG66{p${KSf?&ekbuJI>bWyGYK6ofE8R$~Q&X}T4@7Fm+_x0~o{&%ywex=gQ6w5)~ zEB(*B5ELj8qI(Aj1$O*x5>j#YMk7?vRxVriuhq zPXelq{fJ4pCkR6m?ZGkGw}Y3fv1OJCwU}mK{w)Fm_i~nWvRbDC4@ehTDXJz#!WklR zN?{td0ySkW4;85((AC&EW`y@3tOrVUBsC}$T;Ap}mH;~bc_n~UN2x(^a7J236%eEz zUG4!;yjt02Oga-T7>_qpi{6*rMoBaP^Mj=&QWkl2%j zhVy2rSJU|FJiJN)A_tgn49QQ0A3K^K{kx^Lv}H$*ASV3gPwb9%)Y_wv3sExxgHGil z0sBf92@*KLGDZ>Wp~R|428Ja~8w>DVg6_yUw%GJf{6`P+jlMJ`-)bRmz!_fnzT2X` zG53YegDKq~Uqr-bFQNMiJ}u`OB4>Vp3ZiW$Re*2T`ErB<--9cK&aC#Dp{mklOIhYA z*R%K*L7EVZW!melU^I zZ6)?V!XpP59PkD^AS)nTKuc)T_;EZRb1&YuDy@$_La9lV+W+` zu?jZi@mP76Q8hBx`LxJH2s?E%fUOpb_^n46u(N(fL%Lx_wLDDndF-W%@UhbkE#<`o5-efl&K=4M|`g@cGMEZ0va2ey;Lw#)e& z;zjY9X6Rd~1c`Y?*kHGvBnCRIx8ei4C-CFC<}%{h!7=SO(Nr7k!@|oDtk}aFfFo~C zursL18+vJCXweDw*!ctrNXD;7Mt(#0fbqQtiElJWg)9h$Dyg=~Zutqy%bBJm>p~@2 z3qgK4b!P;}Op@&mV!IEY%XTjix}2+^RS`NLpSRV=L7$Sc)co+!f0)fB8{uhz@paW9 z0Yuwz5Ezzz(4RuuD3M5HLUS%H=ptzkUiGQ62cL!USNz8`<1Z<|C8~`Rjz0pTqa!mF zv#FpJe(RF{iwYv6ijb>e3$+xt_54z91Ehl`u3?8I#dTLfjW{G}hb^KVCMn=`Qb2j= zC5q=v$t!;FVeO<`Kb=DCRq3=yQ{9lX?<%Y8ds4z;CQHr+i-WVd{2s^j7FM8=x!GJw`S5$D zJo97e8FnKsLchc~>6?HSf-xdK=^;`}{gn>6 zPRR2(xNxd9J}vJMH*_aH)IAkT(Cug~9)r6O;mKfRXqKU_;FzhhPKWV(Ss_;7Y9afn zUm0=$pccWWkZ(NB=qmCb7Gb%5W-Lv4QAqMZ0DFbAc`E37AVS8cdV*v2UvCmU+KLS_ zymE;f_udeWU7A^;JV8?{upnEAT8jWve4yF98H) z00T67#0~mKi!bFWvK7mpjyd(D@b_F2f0zex4Gi)Z0G0E+3UDI>kT%Hx&%H+IHF(_C z1@18C8h5}NoPdbs`oh34p-+a;@PcYpOdr9G*f$Cx|8dEA9eoWDJU|DcF!Vd%bfw{` zJ<;LInNZ~o*W2~^FuHE9kc+Nxom?vMCPIg-NIq1Ma+{=E$;L)=@2*G~*aHQt@m~hH zX7aBGl!`#tE&f{>p%w{DW9`6wt%spTOMVBxl-5#@ID?5GFAt&~5BP7#r`NacHUpuD z#2L68LUz5P5W&o%0J~Rlhg!9k%bm>??$|^y-^n*1#`G+J-8e{Yl+&c(n47*U`39TD zjrKFiHz0EXI-F!L(+0pt#>o`!>IKe6tVCgudIcJ)1%~dxVY{zu_pXKh0Zj>8U;>n7 zp)YHdh;I}HuM2$!Kt1pvKyH_du6?ol#5)`@m!87lnE$?x?K+IfvQbcdtx&vG0r3Ut zwQOQGk22M3D@DmG+C7|#Vhz{H@5>jwf~`Ek-MtxTfiq9*D{O&c%%l*`?!l*iJv6_7 z*0Bi2j+l)^vD%GzcT^14nuhonPle)Nyg=a1NiyUHXXn&IHOh#aHH^4P59DINjl=HK zD}^_>&>q*CzK<@+=&MhS;gHUt&+AAuKpZ7Q+*668ce#kI@G#LSht+a+I!q5^kvg#e!Ka=%28YrO( zlz^>nAcZDL3iJch;`fDM#Jaa*gmW=QRy3wAT+F}g+yhnKU-VRH(3H?bLDr4n*!SWA7K?dHHwRrQvoWP zhGt*#g)n4`ct~+btCR~+L7u<`Sb}3e3%-NtYAreKeBe(q+g6@PELR7$Ck`@Z#~1E@ zNqN}I>5dA|@m&HCSLAzxx98imdzD88AqvtHhyXUMW*PG~N(cw27Ak-&3L_7f<5)xfbSWoLkj(`!_X4gH?43nW5FcF3bK{OCl zM-0cYvC+_u*qMxUAkam4;PFBQej+QlaC$LnU*qHMj?E%I0dS39t=REFEPKn@@=26O zkhW-gh6Jhzfet4p*zpxvK(eDtmgz=3OJ!u_;hb1@%^qEPpeNHwDq!lL`9+rPs4c6{ z-u!;`;d7(FSswW*WPjT3f5wkTbwmLOA8xnMHF_yk}2WER1t zo%4ciZTojvt2AoE4mS0CMy@QfWEVfcsleJi&oJ8B=%I|M19R zLcNy)9hmO0+*-!T>nZada5bPBgfH4bJy=j(T?-o{-j4OTL-x8yI3ugVoNnNd(tWEM z0=vBwN7@sI#_JU|k;&nqTBbaq{R0ne6-4^`$lyW-HTx$6Pu8!4#DO2Ih7N*CFO-8^ zEq})Jvwa(h+tq?Oq#sr*WW=I$R+YU%XOLR)UPLF3pVM4xhllnFhazV&-0O(_;3t&Bo^FkZ?n zWtcrX~S(iRwK_szYJ%>u7DrVW(>ZSXP{%X$vF2GnRM6NNWw9JHu(Q) zRa%8ne6vg&jdQqH^hcVKZ#&I&VGK~|*Zl|5?TPdiX1d4t^d?z;q*b>nztl{38=F=7 zqdcjG{n$9stg?Ub8?zZ>KQL=-VYZu8(snBe-(O%_3tuOIARzT% zxJZ^Tz3|lZaD3HAA7}Gtv#M**BK*q>d4H0s_6JtAMiXjP^f5cVY6z;-s>}RUpj9 zs{Yrgo;ZX1fIj~gumDUsqvg8_$Q8!i8`0cvF>)hYRxI6Um;OD6ND;5Z|ZJ8vlaZhJ~l&K-Bx>%Z1qB1&f&nP@k-v zZ*ZmW-x}d0L~Fs8#8vj_ksio~9=t{b*8c9eS2 zTz^PZ_!VGZw;8<=f4-@BUnGW;Y4Tp{ZEn~!{)ojC8S$jT8BPtzVl8hC z3Ua0hp$y@E8I6oqUrs6JLooT?2)-*LZrhVvs}g=;3^RfOmH{E|*g2UV$kY{luFCtv zu~EM8Y=$`PE#KNeTa)n-Kj zL+b`)$$hel267Y)v`ZSmmYeQq;IrUvNdwqmW^J!ap@BUS4pI?8aWa~QoPYu;VH^?3 zpQMC)Vjf@k+oXgyIbB|#poHB=rUYvRU5(`Oc_|~wItYUJnEDG94g*bmBsbf=Z_z}0 z(ZQ)j(?|pRTmI37HoC@lot-cpK7=~}@?jrmC8(*23|<2wt0jr}T|mZ=(dG^VC4Wyb z*Pp6DcD0o0%nkZU69q1a0@PMSVF&S;vEy{Gx#P6TxObhhoK!}&*>o5;o6b8uk>`W7 zJTR_gt5vc2Y`h8>hh4jhxkFfl#{TzBrZt<~kjikiX``%t60@XxUK-_6cBgDet&s64 zdyI=eV;u|@qRCE6ShfY1DNeUDrQ1I4m%kPJTd*SrsYS#77f(G^@%+3qbVOSNPLu(C3ByACeq8Ik>o-X|L zSjv*Ooc~{B&du{t#7!xG8fCA4hzRqU)G8-lPp$=-Dea(s(^%Q~QJ0ot51a9AYcl0~ zds4nXn~?86mM@P*zfVci?=+auO&QCW#@3GN$p3(jmn#0VI51Rz4jStbc#)#wM`1zS z(t!U{DxQSoj-7XO6_5Gl1*uB@<%DRLN`4BJd^wc+&Pm~1svd{c)4ayHiEbyA`yc^H z{)yD?IKyfz{Z2~u&q(G@;G6&leJ%YsmA<64810>$5Gwt?BNP8?lK5xnwbJiN{2x`n z&pJi|_^0uos^Uk3LqGc>fq!sWLd7FKFr4SUF-0>fK*P@amvy|Nf^(0kd!#8W<@{yT4^?YbBt5D3YM32U&oog`c#InUaeQ`>)7c^=gynG( zO2eO#(C~JIfv4n2s(ARGWiWlJjyDcUdjP6CUBS=0z!Lel-K$0*q*E*H#0kp#&>rK; z4^s8JbkkT0p6A#8Z)kWPAuJcLzMO`49=nG3{WBWg7M+`+-x0fF>h~wo_4^d+cW<}) zeOf}9Tl!t}sNkLdl!9+8wy>=)A-0dK;O}WmSMYc8847+xbDDye64*F7+LhfNO=x(< zUm}yg2IEE2eop7F?M12lwNvkwzv#yR!6JZ1O{U$7zrc1!wxE5_E8bBVQ!VHue?69- z=V<)Z!5X{p*9q1rj3MR-dgibFTw1Vjf}W)q&|mXccl=dI`}x@UtF8-wVgJ*3xY?^C zeuNTkH)iC~*N&}jy}6;0E13U-{Kvy{a?i8)uU{yI|BAXduzNqB&VTX0D*k(-u^ayT z+26bJ-`#2aH~(VGz9yp`!N8vKSI}X%2DW1L5nY>#{h}METFNWM|I?vPlk0D4z0KSo z$l3HKrZuKD{ykxgDGv;caqV7tL~55+yOl1r46ABm2P?Vi0X>{17%FLjFHuWQ$KYs# zE#XO=-v(!81p-F$8Q=*6A0Kp;ez!eX!nrCrExGMQKn-pV9uL4(w{YHXv0$BeaQ_3S zmzKNZ9@BDHxfZA7QnOZu#}y!I@pX;{zC*byMXgqv%YkcsIouOFk%Lg?YCK`{Ih38>gudV6XROyo_*4r2N%V+Yep@U+B6ekzytO>_w`;tO9* z@6B6C@h>meE0rJbeR^-a2yFBrsIjJ;AHPQ6&m!(nM3AFbN6eeK`xUF>10TWacxwQM z>M>jmvJPTSLRUsuvJf&iur0H{48iwcei38|fenY8J1D@3sswn`O+U8oG(zumVF(W0 z8LjQc2vqcW&5`M|6aC_hRBQYgcWSb*PQLp;OP?@8t!eWPnv0;%ewGQXpqP!td}(*9 z#~*!ak?9SPGUfzBC2jw9YR>-!QUwPd8>!;_3=-@0G!B1A;z=RY75^Ne-uNp?sIb4k z459L1K9fw-q5Si!Qef8|weEbY2Wq`WQY+UlH>vNpzlG2{DMS~4_!x-~aSLmCr3C#o z(iqr4X9fcsTIF@6Ym>aHjM76n65?sW*$D#+{=d7}zF88yC#%%W8gNdURYQYWV>7R* zB37}jGQS`#m&mre_%Mgb*~`ym2aS$rXz$3FBb8m*VL0m=p3HMna$iIKfk4+b+F-lIB9+16~Goayw(?c8uwtJpssb&9S1qPXbXo^;3NSO*P zUi}zea5jYRzx|CpGCQ7VpTdkjvW&HyS9m(8I%?@t$&#I^+NIXgE+R#{j4y6guFu$| z+`qQYKhOtMbF|vBdAad5+~CTH_k)N(p!2ha)c;>_NMLG&LDBiyD%HsQa%Y!xEVBlx zOKt)|xan-J`fT@MQ>-`iIdlmHXCYNbszOmKu;uuQBhQdz@Kx!RV0GFR)^5s_(GpE=p`vh8)DHlKYPp-N!WwY23jHJUIeKaJtKIa^d<)iO0J9Or zK(WC_jyx_|J<5nRb2pUCBiYp4NmzxL4YiXnJQ1O(IhH-M-lDPSJ+iGjdVtOIWK^V$ zFLX1u!k1W0D-J-@%?C-#>aoi)9kP-foa2v0Mt9UHk#@VIV zIZ%fETiE^-9(YN@ZH$=`mZHHv=bd4(&xLoe$s}a!(+%4M`{>7g^UvwF?HPQ=+;Zz} zU2R*X&zHZ!y3+!Cq(0Z={`8$ae7N1TL8;&8k50FLLF}HMz04Dz28Me!f>oc+?4eIR zoNshpcEbLxlJa^tQL5ILck&jR0n0Lo9HLZjz#A#7&j5@ML@m9%d69wxgoesPA56WH z#jvX|54H{~#>-o=j=k@W@<{5@Z(My@kEm2r9zifcNOrPq4?Ot}!3AcRkr3i2ooVuJ ziG7dlq4AZngR<~io;$GoF$O;RvDt7t;8rCq;74Xi6O9kp>pyr7dXAIbj>CBLWC}v_ z5&y6NY2n;#wJ?c&cuA^h;8yJn!I-#0zNq{|=Qxhhob(zLKq|bo5D(F6j`z_wp2|rdz|t7W1I-6ha04 zMrS8!HN~xvxJ|K-ugpuck5l{$`AF$%9j92u!-4Vd47HS54MkFqCNaGWmbk_G9;Uo0 zhHR$Y8^N9+EVY|fqVdY_GL2d3;6FnezTZgA>H2+UPP2}vGQcgn#WZ`Z6@BAz5IduR zTR|ON%-uUqv4+?*Uk&jgNkm65clQ{xwy;J^wOj3WWA65#UgTl;BLOBE8j5W?RKF?9 z{9NMaLVs**hOIk8Zc(4Xjf+?#f2}$wm-^|LhScYsj7H{;=fK<}d{igSY#0E@h^y24b%S6WR@RpCX(;83$_U%W?*5%+3 zIq*`Hv5Z`5XhVPuzF&cfc^?dKQ}i6X$FU1h7p^os5p8=T&EOcdPhk=RW^|-7Atg)! zPiiA)s_O){E6i5TA22&)lQfZ`v~I+{TI{JNMBAaDjPme!_-`yf4OAL*6gK)pM-@^> zz32-)?&3gFH`XRh>loL!Q%^8pr>qkU3gjkPP^~JixXqY5i-h-pnyBg%t8gNU@^^V2i&WnaA!cAd)PYA$d?cH-V&>nn@m=*R3Hg?eDV^_BZzgmP}JSV)`yWgOENLfqcn` z=P+J;CAERr@`Sw4yg_t!bxFU#IEHIimrTkIl;AEGce#NPjOBJu>V>aTF}j=nNo+|H z*hoCd0aKJ;xha{Hk1vtNvWwS+*5Z_w_RQMN^S!+({r8~%o&Yx7Al4rIizg8PsbhCo z$+U_9!g3H^TQaROaNP0|j1K+_3=a*ob{XP3FQ*OhCtcg-8)ct8h^mr(Fb9JTsM9cn ziu`~dtvb=FGXNWXS`pqA1*)*k*IgZPPjd%Qk`e?00OlsVvNq%HA96oCTjuCu%vJk5hoE-F=vkjH{b& z41`CVafIyzkupK&axUr;6#%fnJr@stJO#3b1R__W2Cz=<_lzSn!={r}6r~$@OMo*1 zs}Q(Qhi)WPi=L9tScwItg%yB$RFB`cflr3UM}`+51VUd0ygQA^Q4rD6|GeKCi%-Gw zTh6Kg$E=*Oc^i$YKZ1H3zX9)dW6}4dIT*!f4m!l+q=#{T+A&;Cd6g3vESXO9H4zD9 zxk*5es%eWdSZ~)Fch3SO&J(_IkrB{PW;>}zN^e65OV43Wk)E^H(kp-n&>E9P0+M(f zbDaN+0+FfCXu!MQSUldsZyK^p&vA~;d&{T}q8u){#g&%_j77Z4E8zXgSi(TRJef6x zOpAl4bxjwU193Ot5jmo|O+~^S_(pXtO8)|CrJN}>+noSEXc$xcO&bbB|Mu7YnC1^| zOe^$$Xxuvo-d7;LW&iWOXGCs7iaF?8TsDU*vdzOEm~}r~H+d&b?sfaky{Th%{G`0r$Oa&i=Dtq!hCG;V@lSf7sgM6K_RBzjdu`RU_gHN z(r)3D$8E}sU#_Q-^woh5IQ_dHF;b0)8%#45^xtkQ&awEX_!97sry%b;qv|mbQ1j0g zV-d58iV_%vz%w@g_;JmdIq(D12@z)T4~L>h>syH;n2mnYyJt~ z@O*-Q3PYNID4hN;Q3D!+9~D$#pUAD<{dGTGSLFC)Us zxdVf?^Rhz7Set*|4LH${tp%6=?luHPCRl2IPbyU{xhRQS;N1GlECnIcNRCj_zJbbY5L(WOH@t$LEX|!PWAC5CImqyZhn%;v8I^#U% zoKIpmpcJWF%#O<=v8R#jQ^v6OFthb9@HUo>)B0bXv1kyoQ^&}pQb1qjV=8O0-ap5l z_gN%qo~#SdIZ#0fmm8eaIx=~Z0t~S!-bE%cC^6tK(_3fU!xiV)TWT#dd+}hsf6$?^ z&c=Xux3QS!9}MSS{m{;BV+S<`B1O(I-t}d5g^?Sah2D3KB^AgK7_^JtEKpbKj$9NN zxEGUI!26LLNWX*_XHjfnv3w)?JamjF>~E{)OpmrE;cD&C3&L4~FlQ;89zroL|Hh$j zIRr!pYZlwmmc0S+%~iO{lzuk%{G0rPQCz1s$m2mZ55H}W4^GJ0xc|e7S?+GOU&<(< zl*~r_w6#BPAJXIJ_GbPnLi~{VS$Xo;$L^i735Wk22%;74ZLI4Cf!nSL!vpE)kH~=X zle#-)fE+Yl7;Y@vP_?IQ1af})n&ia#7kSeco(xUZ+feo@zU+}N2!Y{xCj+aolh6rG z+v0!5`vhSsYT^;sK!9cC@C_2x91KDe$fc2& zNv_(`G}!U6?_^UTzK*ckE1s;d(37*i_|8|%02DToJ;<{G>Yg9kL5)pZnIr4pT68&( zamVh26mM3Ht*659)J()yU#sA%^P*Q?j9)S>8 zKBf2an5OmK#xObzZk)eNWU2#swlJq208Z@z_}^tEX%#!4xs z!O5a-1|l^MKt%XD*bzceKAWNE-SV@_gP%aCf)^V>+~;n_^542Y4px==McGK_e$)4WV?5B(Oh>`*w<-7;9uzRTR}cw4=i!+sm=Oyvpum0f zN-BEbp#Kzw7p&mn+3}^R^&5+y0@5}P;V2svDM<@G&xha-UCZG56x}QB(inuJO1}w# z!qJ2JO^^&nkLWj&tG*&Z98$q*LAZvgJco%^tcC7pGJcdJljSIt%+P}*UvM3>buH^$ zznHy`JB5=d>Q?(-vj+zEyqjB;`lRI-k1JU1^RYj)5W_hih_Y;WqhSnBd=sZ+d5>4x zUAPaH=Qpk=@gXmy&C#R|VdqF&<&sgf;V{r+PZa$;GeDjz9SsN=aE{0e3m=D{XZyT6 z=X4Z0#Ct`4=M1eP2}17&_k+iKHF}TF-Wa+pZx1*W$r%|M7HZfwS$=+XIec!TQ|fIjMVEIuLw zdKr+ZK`UZRP^$|G!G8)48RGxknv32bqdXU$FJGq0lu2*UT{Ld7+=--N)DfPU#+R?~ z@}*-8_SEPuau9FdOI*f;i+k~PD_=L`bxHZHqdodA>XjR%Rr87=gx+6=UETs<_3vciN#9KrlMg)FhVU56hg22~A z;4S8k5dr<32)ripv}@m;5|X$Yj((5k^*3M5{Yk7(;c57!*@c2ogOBB zM;vw%hi|7^Ux~raUQ_w4RY|FTXT}Livi6-PTO~hcremxVl(g!6U+Vmkb$-k`kD*Ta z$~xa?oj;<^7A2+5_odD@O0v%PStm=r!8(teu+H~c=K<9DZ(?Lo+W7j5)+JlknOc%{ zg32gKezS@EHY?x9%0DG|o70f^DI5GDD?ijGkz16M%HNd+w^5RnYa$;q?hqDxpA{cK z9VcM1H(2u#WV)jXPbG&fVj~fDo8v7@OYKQ4*0QukaI5r(tosn_J}$6r*24HY%vQh6 zy7#f}w#HY>(o#3r>qMnlw>7?+wiwm@;r5Pk)*k=Hd+_JVO#GRY!%lg;7M#zAryH$@ zm-gaeDg;tJgift}g)9UN1yLi?w#(CQJneB%!t4hc5Mz9d^YKf0Y;<$wfVhFNyTzta;tT%|o#Hg@V|ODp}a&vtX_8#-Le@ra!BCFc{8 z^CZ##aao?uT-ls?w$A)p$y{!M-ImDt+vc1TbBEBP4HIz3g-`xM`M~8Cre(QwpZudVR$U01vf|UMG;vXop z4%N`uM)~3YQF#x`*R)ms(2H%>Z*#7WLep6V5@mH`rF{buxe)nSA~iLt$8QByTQ>5Z z)JoRd`)5I*Wy3gRAmHrPn~kA$Woc8R^TruNYs=cr8_rRZqrRL%EEzI0x4~RJ@UK_h z`ls8=9P;w|4fn3S?dvNXaMy&I&6Uw=>J;h`?uBYZRy7ycWv*^rpjlf}pT3Yxj@YkH zv;@%OleTml|8F(^Q`vy_(Rt(Xkko)7|EmVL*?`^LYyDq0;Pli6OgupYr2mFmxO+%| z%qoYP3f?D~GZE4dLA9X9HmEC@*5cY@jNi4-Clf0ET#GT#HvCOV@WKBA|HZc9Px@u} z#^SBb^v4#c2SF=Kan|+rrL&BcC4GF~Z^|r%IcKIjnQ!2cg2lig^}wlU#hN6J zz(PS^a@%(Pn@*Hpd@Qr6_%~|%!`io8j@4Wp(XBJ|kr=IJo%*mt?SC^3`xk1@*{B&5 zz%^VwLHX&IrI_2WfBIZ9ePdl)^rPlK59ET?heg;`@AZA1+o+a3ON<%>EHV4QmQiuE zJ0dLtlZvCgO3$?XUn-7f7*!i2@noZVJMj#guo)HkV%KpY6fE~S%3x^eLL(I-6kX|# z_qCQcFeq8+*xyE=34D`t0;NOXWu@ueUA7W;C`R4@L8S!3CpM_D%?Wt>!<(&XbonU{ zL%=%J+O27bzctt<(ib&Y4hp1ZEFu#QRs7I?PUq$nG_?%dlQa@;j$fh9Zv+0<12p_e zgnv~6{@rcB=SV;pv^vXX2Z|!rxo`IATtI@|e6aI)Aa%Bx&K+txxfr%7Zg``)%_tFw ziQxoV(kO?m64;p$aK3u`g7I{b$s;t_jxb42pt&H+CqBPO%u#=UGd>K}FkfUYWw6Sd zX?W;~f0NRTq3i98#?YxbY+!-=>EK{G=rDL8>?$Y?G1VSwy1pYbA@Znw4Q=nt74Wf+}7cBv= zl+kV*6m=~ee|w%vsi;l){-3}fPSMgrA0YgBzYO14T!F$?8|41zkq}Ub9y$gfA?k-A zl&6+AT}^DgEUQI56v1!<#O&aNcaiiCxx0I@|h98~FQBu88-)|KH(%V|{D<-?$d|hc^NL z#b?;~&rb*becHmm-TwmrrOovBROH|6p+bI2MgB~A=v|RNO&+>NH@PZ~d7Msc;9ZV? z5Rfz`&OHOio*=m}L-c;O6O`;w+7>fX;MDyWJd!s5eRK*8_V|#c#!K$5h}6~F(XBbN z89d^d|B=q8E`1XE`Sn6;;qS2)Z$SA>U;C3sHdM~WGO5CW8yXIO0~*Vv^{gV|8a)KJ zT^680dVbzBzJo(OxT_tM_=A6g6913X0i@?wZqQqG|Z{DZpV!3QCm(%U-EM$KI8sHtS!Jcke(_E z^jh|>)vNGR$$x%gSFm-NSr6MV5CfLIwQmR4^JMy&aH^6kd&$$FA0Qqj?+Ruq0(G--0NM*cGYGW5`rY0( zV1fLTp?gT#REBNwCiJ_;=3Q*Ufi1>?j@JT0Nw(<7++o)BbBqEBECW!xy6yxO%h7i( zm2-Zx0rW*v;}5r}wfR-*ztyTA2<4nCX?IG26?|$HM(6`7KmY+NoPRoo^S>>58iGV! z3+ql)6zjKINbYSi=&o72JcmbmBS(#6B#5+R$GU-Ld}fgf6&0c^73cVZ0u zx6qip2i}w>ft86Wa`;%QNl-;h%MrTY{ihb-;)7e(tK2855*Hj~omAEr7)&F7&ZLYe zS4ZpGIpQw$Eq=f>#lJ~Wq=f!O3I0goPpsd-o0-spq}?`ms+v75aAcENS7wN8iK$;b zfo8-XM<-j5b1K9)6e)PJ{W@JBvfVc{=Aig)fFV?d07pgnbCI0e%&Blh_DM%9iuQvkzuEdA>v@A>% z4z+Y=t2O|Z8NLKfzyP{74}t|9C)?jW*n!!`$|y-!GcoH_OeD8Lw6o@D)1vtRXdw~B zp7u;+;;TRO;4aj}(E+$6V9e62qN)yf1V^o@;3uS@o-4|QLFoVEQzd>5cdN*z#oQjo zdr3~kI(j8LN;_^^+?Nj(Yu>6(0qB8C+|o*#&J`fUsCwf$fc6U|VQx;-q!397ak&9bxMS)ml#6GnmG|BvQhBb@0ZEq$V z(irWw=3mwvlx>3?z=^+2_oxhUj{>h@8h*F+pi4@zA$Aqjqp5~Gtv#%?f4l(tL;(FO zsaWDs@SA7jSCQu^z1fe^7;UO>0}>xO)@VfuPk=~*K%S5nTqTlgLHZ`~IdU}B@Lf&V zKq-}$6|P}XUJn_H@+o-KS=OVVV%=)A)KTj8*I(lK2xp0;(boOf>YtBr6o7=W+fvmm z;%6*=7qh8_;}mj*o9W2L{?N%-vPfoQoPJ}k zmHTR5&8h@0iSc1U3`Ei+H$USjXv*3KKe^7in=yaIPGeD6F`Y*BYR-}{*RhiC*Jr|% z1pb%=e9@FCzuAB??RowNevnf;U~EbKbjJS;%Sje9+#a?zSxlk;nYajCMuX;vFR(nq z34?04R6BmhmS_pGb95NVZXJpqYhP^ z3q!mn7$Y!I9H=KTgT}_7XKbXzI6HyNjN#Ovp2TSu)aOg8uZPs9-u_xw)=w%!fQgsD*w z6${@Yc)^*zn3$J!UpyzJi@=f?NQoA!w`k3@djrP|*)mviH6lDeYBli<^eUQoUQ!d0 zo5YTPMNCTJb}tgfzRX4+;#1F};qk5(JPp-qqBf7E={xS*)!Sxybrp-7xx?nZi0X736aUCjyxIytL#;omuQCLK^`W6y}S_D!h zEQIbPN>^WTn;d`m41iWt} z7QgqEy-Y;lkk=I+Oz-ho8^poCxqZo1ou8=c99GpZET!w&oDB8S{iq+<>V77Du)IWk zzEQR%D=}rKJlHcgNk4`p%CIJs8~zR3!Koy}Y3R=$YE zA^d_CI5B|sH{6Ae8iC^_ADiCCgchDacrj_A&qr-2L0Ip{gdSVX@JdaOL$h9Q17-^5 z$^5y#nLjb?IP}_C`-`x7Ina>cJ;+h128!~U{${u^Z`Abt(DF+&BO_)Nq!oR+&sm;NV8)9<5b zS}=baVc;^-Iw^^L6cdHGkAnM?Lv``IRnvf=RS^Cyc1c_vHqdyuX8|a*Eurf5CQ-8)UEx zjh#5$y6N@cw`#j}DAiKJW)kW08cQSw^SgZp+Rf>ZyB+JJQ`9xjwpwRGBW6ee5u`Ni z25YCV@xG{FDMRU@7Uy!1I(RLM<~pbp4mCnk^s381V!47U zNO{E2BDesTHoeD@D*z>d0VOU%{DZH^M45<4@Le=&8c)uK<nh-mbxdML*kvuye{V7PK2wwh$7qF^iIH_eG-kNu2q5hp}w93 z13QT1gZ{kdHZVJ74hSPwCDo}L))Do-Y-9x~IRP`Y22(i1gZbISotKItNEs(Utd9{( zDgG@}LjC$OG(mhI$i*NCGU6d45GG+TbD|6$vT^NaQDF#&>O;5|x!&hvt$~nZ zlWzom%%TEb_r3B9QtK3TE;s>W9i{^x$beE<&_$ytfJcns3a0w&E11Ing86qzLChUR zZuR0b?4_QlLwcbQ;o-m^y!j+Qm_Jc6W~p@4fK0gV)l(R{0g;L?#=T9~1LGSq3d7eG z<2N$^IpGhD#n_lB$ChA#eEAZ=Js`zc3L|a$$;;YEATM-Py6msM`$;Wi8vg>vXqTr_<6Z{q+>3o zOz|!v5sc~*{6+iYBphO9EM=;C4x7%5l~*sB0LZavQ7wOrmFCD`{^fS=7fC@?DY=J3 zGddR~Y@%X7U<-Hqf>SkX48mcvMxN1dsP6QsK{w-86BG&NI|LjS#zjSHq`)Hai&&qk z29HTLm}9H{fE0VSqC^N^g9)f08^Jj;;Fj@$+5Q?2D=Sy`_R<&aX)6RH8*J;i z*R_6h4gs4@?JU+-?H~z~pavqYgUCS5u81=}$lt)zt^{mG=4TbH!+3EhScH>H@$<~! zT*$NT=z@)%A#YD+wwulcCK1=K4vLU|e=vk}$zVx3e=zd&W1a%!v5_gmoPzw_bpF3F z|7e~6*w+H0ib>}pDM^Y`C#AxbsZI)O(z=_KP|E5|oX?x|Gs-8Xc*^hDrzEr#2rx{8 z5SLN4|7M^hs)jm$DGVR)wV@r@``-aj#e$JXv0vIJ5XLa9;M`T{UCbY&x)c6Vkb}Ii zDVjmV?#299z!pq_il42Dz$U@`n4MOt^TQ6H8V$)B{Li~}Mmau{w^T@i>(7qe-fA9~{fVL(Gd|Zmfb%ZsuW~iRmbDoHMWUk1he%eWo zE})2PUdL=N2Q3C~Uh=?Ilc>;19vZN4-yjTFoRiAdne_#EsMisH8Brhl=#i44#@|G7 zgalDRZ2MGipw51A$Hrq0N@{|%KVadG&Vl$LNlnCS#MpuM$WR(MkQqiYVh4Pq;(sMR z+!E&H2JA-2QB(DL85IP@?F2Bi7A1Y79zj%bsanRK^hi9Ez(DH1q^ zffn|Z!sH79j`fq8gtPU*{O>;HpqHVV8J92t$T}ed`bWPfIOs7m6zD+@Rw-uxWD0yN z5inwhs9(3*P7do43;KfTLR)lhU3gekhhY99)`;~<)nG7;dJlWaqLnOW>!_H-dLSJ* zXzlJ?dBMIHR=Uvc#hHW*N0o{F~oj{>3<$(^h<ZkeF@ZTbp%h!2lE$yLi927UYnuTf^z;)KTMFCzCzHEWKCJ$s$(rTj7^KO zVBc1h?OW9z`X8a|py24gc>*6@`VvuO6Jv#%vPE)!pStsJCE;37cTcG=nE&~HqBqbC z&+^#ihs(++d?ys6Ss-r-$U6(t(M=f%))vhTJLIq}h1!>Cv;C+(*IDWOP$1uv{ z2=QUSU=kPW3bwyaLtyU~lL$r;?Et+27(f3o!!?9RD4zHVNEZ_h7g5TRY<1%l!gBre zxy%eJPs7ZRdm01*&YA0^`;o-;Z9k-9@IfXiPtcM?u@2VmhBd$cto+YtmjA%GE%`s& zj=yDDKw*F~GdTxfw}De3Owzsohdy93FLHL!K6fxxY*jl(TktXk7R?O^_)oftcExb}2CKa6^; z6&pe_TKI67C+2W7sxG^htwk-eM8^)8BX*E8MKI4%Hbb+fsW$(HnKa5^GoIURwl9VR&`VXZ zACzKJ5?iAWf*xB4JJb@l=C5+jpqR*^TYd+h8;i6FHACbNRShf;w5kE6#ct&%ldYE6 z#I?H=4LaG%#PPQl`I>uxE94^e`El$<{>%!w!$;^OTB&p^;+d)py=1?(u{us({BrUu zs%jU^ul*OH$o_D7`~vkNKw$A32+QJ)Qy8>ctgAVjVO5Pz#RC?hCKjFJv8-N7d5p&# zGbAO!d9>`B!_z+>mS z7?UJ|kvI2YVpV-^Q#&nDjFpqIXb*~KV#M_qhNYDy=|3{jSTSm0a;^YWhuF3r!-H+x z!u)(Gt1cage!={_2bBPe)srwJ?-J4YAj;O@#G48^HB^F=yB*Y!}z_mK708`eMDL=lV_LtUc1f3)OpN z-o30J=H1nO?HQJG#=}*&dSagD3b!czvg;GOFDY!4Jw5%*`g&0@sH@l4@Bi)>*4H0m zy0T_E-wD^(e?TT;h~^@=5%uwzvSW$B3v{qqfo6&*yyXxTTjt|V5m%4XVnKccsfsYy zAvVt|z6{(`&}g=Y$s6PQbWsOc*a~BJW_#UyWQU$;0mIiYMk(ZPNBPX*5-!1-j&>NV z=`1@;9;yN&qx0a*meT?cs*kZ<ea7Agj5r`(ic^ao54`} z@Cv2xobr~Sf{crqFiqfm=|{p@-(^_-Ta(~Dp!GN5E?HAHulM19J2#orhzICxFZiMV z?@2oBli<4M2U&mqto}!9uC@LL@@?vWxfbuaH&xW4^*CZ%Q-|MZGCpt?xCYoK#2~*-9yI z+pjVh*ajAaU1Y*`-wO!(W>oqhf2sGK zf*~N=rkRioVv%8W4u9ll zkh+NJ^w;fcUpTOCTqMmvJU-J1d}DeyARHIs@6bf%hDm_!g52w!22@aSx>RgkO%`$; z?{7Hch!yDi2@fFN67-#%*d`9j4S8$3tkOUApuS%V?hSg9tNcP%UGR>42%TuwS7lY; zmmP}Jp4X8`)3^Z>h&(K)H*F~l{mXy&UpO1n-jBGkfq@?cB3(U&5q}1P;^ppvP>8%L zAnaZ)48?K20CEo<4TjY9AevrdhCkA^R~0s?YshE|3b4MYJW8C6AWz$ZF&Z)oBUzn6 zTP{l=0{xXg%6EzUY9h3l1pF+f3E>-jhtWV-mXF~mc@_d?_D!5mv8&K~-J?LFX?-Aa z#xg!3wb&15N%YJ_v59*$_82KP>H!?aDK1#U4V6M2fB9p!W0^&&MKUZ{8&3U&qZ}Bl z5aSijV5l&XsIa|NA>3xH3Nc&z5*5x&uFyKtLZ#JyrX11DhG8+Y( zZ>V<>;HY|eXU=AeuX^!L8&O{PWshOOZ=5}Uq3&=)2>b6Ps2jLuV2A#LVmNFg;Nle< z+QH%Yl8qG7SmooR;6LdNdg3xG=erGRJgSNR-3D*V2Z#nPcEXpzo%~zVdtWWkE}LV5 z8GN{>d)6e=JI-D5YZ$lYV`_`I7UQ#3KUWSYn@Jr75|WAvo*-}1vZVfbceIi<_Vfsh zw6DPq-nc!0FzuAO)RY9etseCJ@gw-vqLI%&;{|yJ$uZ8uUdvI-0-!FOn{r8u94;{7 z)C{F=&)cLI6gao)ey?6XMbbYw{t%i6Yn13#ketF8nPD>xoV5!V9!-4?XYYl-5Rkj8 zaqn8e{a6=-V#n^qnj3GrzU=0Uuba;K-Mg*ql&O{F?&-tJdRCNo9%fY084Jnrj@mx3 z4Y8h)B6-d;s^{Pt`9{FNiKl3cf2ERY9wKZ3-Y4)q1fM%B&!}RYU)I=zDZ@sdNBeW8 zPBW?p;DPBQbAd!>ys-XQM}7_-OE;=13@gez4O@6sN-c!fUuwu1R_3WF?+Vo3WP8yB z(8CM-H{exj%o$-+uM{v{^E7?*x*+x^7Dy%yq4r^!5joznE`WMo>F)@!JwMFmhrC>G z*$jLbR(f6hCScgD?6<8ToGf^qH@qwzXNeCOK+KR(@@<%?lKt9EuNts0Q)cIX$Rd>;a{Tm+--Bs z(JLQL;u=VX%rLz4Fd$T)XQrRqEq2GUUP6 z_ss++@QXim&o1PILh?ucVEAA~Ajj;`BtDr;lOd7Au?~%u7HWIctI%yNM|{NfKRX_E zsDrm^3Fm=9A_wBIYv{gm3|uH_sJ@cb<98|RR;~vqF=5Z%RPid_DHzZ}&CNG9tM zW$l)7%)^*~xmidHtG}o|;VUvZNdZsSOd!M1$0DC5EkR9MY`NZ9x)kS=W}rG?hwN~< zTDt{(trvYc@pSbicB)AN5DCXHaZv*@X46=9Kl34W(ig}e?qK4>!0iZ_zi2bi>2-8`n*v4dU=tCh8jVH2Q6YeFWKuW`NRJfH^0sJ_Ds=`=|=a{4w344QNuD<@Sf~(Fj32`hgz0HkiKy8ah_R{;+JnDVH<@ zyDB_1S6|8e{7;>OKf(-AaEYK0aShszzU_4j2oscT-WV#6FR^+^_fIv7Svce%HrP(A z!EjomqiE6|0%i|jVzH(W4?Y51#I?Zsgn14r%p~&+W)}=ALO>HHW`Un{#M%x{4V9fD zX?i|U@AFi$o?2Lsx)d0ayD)xZ^xsc#Q|kwzpU=V_6^(OOcpYW9PYS3A|BU(vV25b( z#_3yCi1C@KS<5m_{Tk$nztkGM^pCOl$7cHEv27+I)4sT{8{)f*eXK#qAf65KZRBJ4 z2K_g<-eWesjXgu-o(Gu)*qLF(!rXdSF@kBQor?LVpyEh=sf!`8O|i0nTuOUS_;KAi+3RT4hEq7X1jiPRUv3ARI}* z2HS*kIKA#D?j&enO!*)^5v&jDsVawT5;0~W>D)!I$9Y#+L3ZZAX z;ksJHI!>)6E-=B;`J1YwoV03l{20|VjWSz>;6$?_R#OiNE(`ZU(oN4gXyQoJLDiq! z6P_UpwiWnJ4#JWna}_5-Yk`7(LEkUSdY<3#0#uh}iJZbJuNH}L#$=)Njen3rtN4oD zxJLP{(sv9a>t4KLw~krQ-mSCl;wwN-A;^RBvP^H^;a%aKOXo)g^VL!`^bYxZRHdH# zi*;G5ORupoNQeoQsW(nV>G_<$Cl|9$~J z^GL6{4WF?ZJA!9uOi5jp)KevxJ=*B0*(;NJ3PhJq0{+SU;|5$1{qp0Q=+Zwn(WR5H z6eX3|2@U+UI;*=bw{?cDLU$JY_riB((s(5Ob;5p94=zk<)M{ZYF&{wy;+huM=1~th z3Rb713V#Tv0`{<{2R!-DhhQI4Yg6cf4s|PagEfrN|FL;(C}l|l^q0o3%s)dc*#>b9 zxwP7l_9vo&O`Y%%&X-i61L{v5{eSds@X;`~Oh?XGN%gVjJ~~WK$np-%6+@ ztv}f!H-ycJ@HkPrO+qREGnszolYj_B{*vW`bk!pAT~|Ux=0Pm^jFkv2g9C)Yr}2Sz z+tlq(!zsbDD$|{pg?n|rEF9?U#=iWiSXtiH*B?CMHiD(d36`l^AX(ZWOFK8Oa8u|s zZ0+1eX~QL10Nj{uiM|Z{%G!E5Jwa!hk%fD015nba>Mx#Hkbi5e1qwKOV%BtXP3BD{ zC3louAg{A>x39ZV#=`up=>@CEDp*s&1jH+Ea3lnlCIl$LytJ}^5AsJr#j!I=%W$K3 zz`JSI4IEW_QDjWblwgpND%K2#@ z2Y15httyL61bb$)$7;UVa*n`H!DgefU z^oMezn(l!ha~a7z)sKrXOz+NFkn=|{Unk+`A%0uW;#uufyl87BZ1KfAA!eJ#T+nom zKeW+*_`|pdp}z45|B(**NxJ81`8%m#RZk!k8;nUVTJghNqq-Wea8&p?+)6J7Zs-2L z;`SkN(-?gyxLhoMFVz^u&kKY;h#63rAfR~L2hXP-)AEVz{F@DasI57pYsREq>~Cra zgp@z@ZXoo7Klo$klJoqbH_TOUS>wtddf$KeQ?u?sdoz;udvn`f|DcWF?_MRZ#Yo6R z_e7a!1iuCW{Gs=F3r%o+FF#c6OKNURySOki<%`15=eRxUqQZfD{kX3R{dQ#_^s3Ca zJbp{9fmcw{`kLs^K&T0)!bgu@K>2#?4ECp$Gput4!Wx3GnYdSiZ?%YjH7iFzy`04v z3Kr&b$3-Tm;Q;22woCI zzPc5WbN^E!b3rTm*U!=S>J!oT8H=v3W^o=Qo!g-AexJ~HIaXS1AaevjU+EDvRAx{P zvGOgjh>u5FUc0W9ITARlK0v5`r5(&NYgcZJ|S z+$z_*Vb?Q`rYyuLOFv$K^@F#;sGg7Shz^Lz)!oNr^}^G|2pEXR3^l5u9luEGwY7Kx zf`^Q2H>=TawIlxX@I5vK#R2X)beVuVhwpl)+NX}zYYVSWJ%=J{91EPQ3#|KQ-(WTI(@mNv)70-sl#wjZR~Lwp@$LCV$oUa?KhZn=)srYI zUD6*NQLE-|27vF77Tb+{XsgO!fX3_jNyRarpMgKZRd{?sca$WjXyM5F6 zt{Z5o5mq5n9oUKj)p*tPy-AlUwR>e4-V^lA0e_$48}@nz!deQwPi4c>z7GH=X<2Y_7F%UeXxzmle!F? z=XJEeoqvnQsVrc;V&Riv z<)5P7-h#}x;59x0m`t%C!>>tl=BckX>R!)Ne?d;6|0w1@T}=dV?0mk(3=vn+3x9B| z#Snq1Y!un!B-RkzIMdol7wuUMEKU{>v2Wq@V{4twzm|N!g3r>?u_A*jobBPs`~XSP&15;XB|Cl^IrfBV4t#PLo3I}Z?Ih&TWy(4gr+0EFNlwHDh(#L@yj zL<3Jx0Pn{Hd@oYDASr;4vw`dJdyM_J6F_2np!p`?8|$P3Q%y>R|0c2n$g?&O#OKxU zO|=c<44)3{wvgBGmlOVM!k?D{|8)!gvGuyVh5vL7zc2xRQUd;+8vfE$_@fB_B*O2P z4F3iV9`Sin;dj;WzqEmwzhcAh zmkR%G4S$9WM9oXUe?c?6p;Zy#< zo`U~$4Zkn}f06}1N8P94FHMC%ittY&{C-LJWBS7sNL@uel3GC*UBMSN6!inTRc1@5 zHJB~Olb;cvGx7ZcP6+=5kQm)#Z31D+!n7rNfj6~+r!<>{6967Yg3NH)>MJrs#8v;E zMI!XyJc7T9;3p-4*Z5ystE<49PwQK~)K>W3lHOWgVEmzc0{sT7o=uPk$_b#+7%qco z18L;*X}u;>%}s%*4uDNG82rVKnVL&rFC$ZIHH5kvmzsU8=BgL}ju{CZ;80H?K~+m8 zJ=SQT4Hwf$qG;zj5h#wXe2<>18h?Zf=aNL&%ug*M65I98Y-fEuOi zKQ94ou=O3q$Dp?5;2QNkfoOML00t^BB`N2G)cFy2NH@=m_LH6;xjsy>&&Q|JIFv~= zvsIo13!}vy^INw1J8P^$n&98h!v7ho%hghTzDbJEr3o#`GzZ~0;8yzO9hQqQIm2d~ z17Wl#P-laPDk7a@hSKy-4K|8AovD8;@6+lwS!m#}h|lk3BFHeUwm9Rv-U#yGA3W*9 zuWIrMvK)VyTGdV_>diQ;KpNn35@nqhp>|!KLa12sjt1>dnF;$79fmCveX+%NQ}C;H zo(%|CXH-`s12$CPhPXj2^oT$4c^W)*>gZr4S1emQIuYm{Lcd8fU>L*-a22|MTFFE5 zn?!|d^$@lfQa36oQdWz{mfba5cd%`P6K*7iO@<1GE1 z?PIJyHihk@R_pgR&OcL{)bSKFX(*urT@8JwnsytS^vO4965=~ZJdyzJb6xUV=`o!R zt?Fu!{%qKwp=B=;^z(#+#st^@XohxLm-Pk)t~Z@O(DngadINJr7UFgyYk2`SO6-4h zo<%m&`yY+SNP9FajovdJk|jRNav{Hhzo5}x>zy6XcUjQGT24y_FlEs`Pdz1{6kZt| zP+JMA#OOi8I!!&26~$>6pd~$1ewT@1k9oM%pg9ccYw;{?e9x9FcW3$Jw}HtyReU_Q-p@=J{W-pQl2Y539|r}j@lC@h zSy_k`aV^VTptX67Uv-wmj#Y=%J=_S6515gc zg+G$Z>fxI_K5k2t7l+_Svnp6OfYr$Ft9qZTy4Ghrun9X@>;U+Gb9zl5AH$*%H@dS zPH^}hVvdUM4j$`dR3BkmF&uDa4Kf~(-0VK}YZ%2+L_FGs@LE0x%9lua@A}d|AU=*% zD6{gP|A{$`AtvCPcQ#>khlYV-+2#$k>I_bJ5m%rAJNYN`<99M413T3jpVSktaQf!> zTC2hA!Y-{`@~NKs!iD&AI(6$!0DcQfzk~FNs%|C*_n>5MFozE~8RLr6WYzBhlNYp>+<>4`!K3byU*Y@|jz1pt%pQQh zIkUUT-Pj+Qp~JBo!4Y_i#^}()OMMypxYT(hK9SEkX6W1aI3$PRC*{O!(TD_IB7Po{ zJeWM<=NK#T`?k3)hFjC!xJAHicG`l;vqKY}J$S~xNbdL8zo3}fV7`8NkGnRWb=f@w z%-na(;k|Ev5-8^a5qM?qH**`!!=K|XjsxVF!$(fw$8fpZ%>7u@4D7PtX8F%>_sl^e zirf*Lkq%+b!azC5=FQneq~|*iq6uzf#{sh+;^9Ep)eWEm!+r3_O79|%W@aGl2@LQ3 z<=^lDO0A#4;}G`;x0vtnAKo7bUzy?0WlLfH#eSPk%J%1?vU*%=>rGheQcN)>`{~8R%{-xf2rD%sp=A9*PCzq>CXbdw$c1)rt#VivwjmWYch>7 zJ8>5+#{2P3cXh&M9?jV3#Nhg)*on+8@yHAy_b#|$ufX|N43^7&LNEBtlfO3)?=(Ao zW9~Q>`~({}z3w+7X^nCyQ7&}Qvxk&*psch+%cs9K%O@XYOcDK$uB8XR1gc2?hdfg+ z4v&0Fp6NLg9MwL`Kq?4GP~B8^Efwryv%Wo4R1V<%*Dt00dekL!nJj&rB2Oe$alE(M zgiUGjl9O6?Q+eSEzNy7^V`d)xD80yNYJ8>5qS z%oaoomx>RY;V6k^1{b;=vuB&(Q_WCM920;y=J{yw+W@l-KKv`t=DYgRKi`b>Z(tPI z@Ekax`(Uo$Ip^K@P&0fr+}o~&2K_v{%?w|T+lY2UATUfzX(L^w=o*BBPU8_fR>u1` zT7HhgJ2WI{D7kowCM_!}FSh0<+1ZZ`OBPEB4%hvA0O(osPX>r`)?g?bkF%SgY^>=7 zFl+FF{|>^3%Y)VpqM)kV-@&-L_FK~!ydEpr^pg6gu&({DIxeXj+&HTy_<`}#=5G_l zEslNWI?B1bcuxHebIk)g&s1H8Ity@Nxis3YWFZnfpn{D88qZTykvp;NH}@ww0(g{z zf5%?G@id%&Mm&P^Ci{qs-x!P~y(j&%O$l7m4vJ>9TP|i^8=H$Uq;4J!G2KoEI^}B9 z7DRd&ey7JAxKp;W zu41Pai#yr)2vnzt4_8s|ZEwd8oLfi57gMXnzr)OJpP8W?Y?1zPF?pqwu4rSjd>ETU zSqZ(`(1+sn12ypjAOZ>__5-`e+if;tTh4!*L$>rQ@zCI)0|YEUFz%YRk?~QL40db0 zWX3nbWfvSf&Ryn>LT~va2aQw^ajiMf#i`zV5jaZ0Nc!KAVB#E8xc49Vgw*2LOp3OM zYwRMx(7K*Y6tDAWQvDX9CApt)N;>9ZIc>#NxEHrYDS4K$8m;D;d!X1NhA zclcH4<}Gr#gx<PlpcNf)+P=qUh{KcDCs~2JdZ%tdIRmAU1FW?!=u;|G8aSdEX7e zW-0G0NK@Q@WvpD#%lCb~v-Ao)^$C8Cz|-|#o53dcoKe`H*n8+{>;oP(BMZ#_(akImgPHuux`h2VogczTvT zw9nx3*@4gjW2J^f`8W;q0ub;(G0&=*@PwdYiS@yW-hf#Ir-Q=NeCVHmH)aI?4johM zIf2k$MB8S(`)uG2w$c`Z@Z>GPqE-pL8RJ-n<$03fY zvMN|D0K(#8ed%}$vQ_WlT87?;;es4BLNbemM||q!;8iKDeDH6RHpVs*4qh=(FztjV zcg9#8gWb^GQvprTfg5CRMk%zHd~C2pYOxb>W^g$C|3z)bS)Z4MB=M8g_t;C8`Any9 zfMH&mhsj~g+Zl1xW2aXMd1AiNapf?0Ud^sf5^01=dLbhtm%|3*vyp3+Rxl-8%|*7v(Xx4sBF znR2n)g*KUW`8_Y87eE~xu-+=)5twVY9i9X8d%q_8J2DkjVJ|$7W8La1*uQVqeT5kj zuDAL`#58pVu+s473H)WUI5SrE_PME9dxx zhtHriN3;7Q!stuopaRD=B=YhKd1lDorud~&O$St?9?n1(y->v1_n6_d+F&o;QC;mL^1f9?yGGnR5jNgqh0k}*<$&A<)t&v9)H2#QmWA_g#7byXbmiA-P zpMkU3(hD9mW~&2@Sv-o3dHo?a2D+QfkJ1LzuN#Bbr8K4&8l%46g|>9I+L9-60dP9O zZVS$gpe-*zH@d%Ndsf1f)3QCIr9H%d_GK1tp>}dc#C0Z-+;;(y>?=qPuqmBP;EL(M zX%cZdPqwnr7r-h0uGFqZ+jYj5x9IcaSE;}G{2}T`%S9Fg8QUDysNP$JQI3z&wL&lS z4j2seQ+vUSb^frq<*F_(xzX_llB-QTOZ{W4_JfsD>!;zSQ57dDr#z6jdcaWC-KgQW zuKCi`n*ZbWXH3m^IA?i`R~lgL-2dY<&|tc5iJv|dSY^WkRG!n#xr*i%7-u%V0s;35 zhTGH-2vrB6qqSV-b*oM1cfeOX{bGD7Y5%2G`!i5I&R83O7wLVyU4N!ky_40a>FUR# zdJgu~%BAjcsGCD4{udIN@Quay0jyOAx|g~nXV;2y+@xJK9N(Z$p2luBIZ_ZK22E;I z1D|KliW_?!d)T+;x*0c~SNQ|~miDyP-*_#Vfn$xI0x#apWQJdanb2Xre(sI0mESmE z_6n%t{#ARjUtY0oLHp1Bxd;6u7XEJcAKr^KxF6R#A^+c-pz|2j4+xa*{_yM^#31Jf zeeBCZ@=GJrJfEW#8&Wa=T6M>Vd4BjXI%PWb2HDbO1HNCfcP*!-UIvU`IP^nb@<&?&S3s6 ztPxitr^=6ar(vu<2mfQWbRu<$E^%0ADBvjc)Pp0Fhf3_yW}R5~-@fMlgO&uLzuw+J z;BgGu-;h}bhLu$wG#pkRqvBB%G9z3F?-UEq2NFAdF;mGp=;8vIgX10jk-1z&0oHeXH}DsPUQgd@Gcr2EUiK_{nVo>S083Jl@Uj)PpV-Uh*E-#h&y0%AOp74w`eEG! zZnNrTK4!p7X$%ibZL-^du-6^9*n@9s-B_Gr@ee!_zna;K!X=)lIq-PAlRq-ki3gsa zczf0$Zm!jRmIj6R6vW@&T(%Fy94_-gG5BdXM#C<90zRmgUWI@~u-F1BulnSku#=F+pN?#PrJB@S^7p& z5dnhpp9QNZH3}+^i16r>F!V>6Bmx9$AFMep$-(tqGNxfO*8&7f=Fa}rwgm9Qj0fLk zT+$`>y28*yN#a97>x8=}fkEN!DTOI`S`_w&dq8~L#6^^ktE)WfV^}hQgTH})5b%N= zxj#xdg3Etof)Y7ml75JPiB?0ZGq)x&Pae5AR!?fHA*m6|_k$A2?(!`2eA653WBm)s_!p zjEr{#yJIA4`9NL|;uZ zZ>ojdpwKw`@<=b=W#P#?L}Gj%2w&n3g#XI}sj&l6W6TabP2Q0ajs4n^9X(N6-97`H zaSQ+4h(E%AlkkwlCn7q?#hDTxoSdmSM&t*V44JXy``yVuv->9W&xmW%-7w*t3DT;4 z+W}b}8;X;yyA%3a%LmPW{hRqONA3)VB}%Tm_y89hd$5mDxv#0Iqr>b3Cyw1_-LalX zZVwYbiV;VZmWf$5bj@Jfu^lojz8OUzMID&Uynrl);6Mc>~Bv4{j*s5DI{oy z)beqN)!tYxI60|h`ce3Awypol*5{H8OrbsG5&b*K2ke40Afv;3sV^Q9WQQe?orL~D zZ}h_S8huQ@6(Zn2Hu|*vM2*6Cb&^K?M;=V>OC((hBvs!8f;3{bL{QWJ4V1BPgxO1O zMYZ>zyu*y@W%x{5%FK}o!{~zdU>FTvfbI1n~6`np7G&dp;_VHg9#H?Rw1C+>t+Zik-7Pc!VZ;jNsG z#$k63BQlnW28G>_ii7!Xsy#R!n6fi%hOu!i%L?Z%VZeAVtvp(zd@H@Zpm&FR=UFu% z+)d>%l5l}*tx!^?C){|d$p@-%MHAW$TFuB8S{>gZv;zNkMTM%+sZPiXEA zXaeEB;KFlZ|7sh5^p%Wno)5VDQqYjog)iJ0`@|2_S^`U>S(3A9aiW)fY%d@U73pipqBW@A4no#Qs41W#+T3PMF|Wd0f4%f!uMb`SDTKq zE~*cWYQc>j;h5KXg&9viY5BG1O`C1lpB@#L^MUrP@}I45r`Y2=5rC*WBDr9|Kp}y# zM!gT#WG8|ee64|!%aHwAen5WO@%m*K$+asN2=Y9zd>_>UKi+>Jye)cCG&b));_pmi zlOqdQC?Xl_P^jskQTJjVri`YyVYo+MWrXDwyjlJIU4zWZ_58>kY0Pzv>d*!3H=4!Z zTG+UX06K?V@e$*dv4c`Rf^h0(v8gmi};ZfyU`rWbsa*;i*&ayvEg?_7Nt(scM z@4@`o86Q{4a$M%edHAkYK0x`eYgjn}o)_mKr{<5fTU?ISm`EM!PCx9dYU`Qwk3#Ep z1BL&3S#5Ji6{l#>!>!Rq!gA!7{%ZRoR81eAhq7Q4k%z+f(f^74&xOuU5cW;$Ly{&M z>tgr!bj)uG6ud0YxX-zrXY+4Y=n(w z<$jpZ!3SbmFB;V^QSf*bivh8Z_9kxck&7 z?Bzz)5u_kz*og&g0U%Ov#P7q^Z^KcOy99??QOg#N=7LZi0YZK1&LD_WqYQ)CQN%;M z!x&n|*P~c(TmVq!frH?K_jg0UxjLiz2~>w6camt1zM4{8kKz4zegJ+K_+D>Bs_|Vl zwibmXFn#S|G!bDYrf2AwKoqW?0LV+J`^5Hx0JtAq0t|G%sFnEr525g?0+QAU9tJv^ zv?L^CWEn!BY>%IUv)f(fb_1EV_$&AEQ`GO>R@yNT;cZ#ig947c(X=phUj=$jE;rTr zu&ODj+)J)6?9|{#OiQ}lA^|m`9lNloFEqwBAWRCDg?4wh1GS zF6&;gn${m&GmMby_BF$LT9{a8OTO$)LXuwvk?HWF{A)iC5h z_1mWAU`#t41hw%2i1yK8b~h)z5Gp^H@!@@^v?E+E+)RRjCS9DZYVijDu@T0a&)g+x z)!Vr{onL(~5j|Gcv3fh?NW6>u6mY-P!O+;Sz8;Csz|OU|mYcIRWL~@e(80>j(0^Fu zePg2y{^b2z6EHStkIRl~=cWRqu0|$SoL>jl-EmzyU-jH{+Xzfs(n3E+TSGwCg5k@h zcHH#Vm!=nnqO2JiaDN&8=Atc_gb~i*ofvQ5Aiud)L8i_5)Nhh_KKYUK@ax#7r6ce% zzmw^8J=e3Vb74AW(}vZUGO1*v%hK;dDi%}NSM7xfVzLwTXheKr#6Q0axj0Gi<%K8k z!Wi({=RnV2%bMq}?5V;0rxv)J9zDMs)l=~e%I@i9@G@g;9q#@&+sDKyzzwGW9999T ze{jGmYAm{hFOd@5|6o>sYgB(C1Eser1qh@{8ed+tA+PSHgb$4nMWeE1Aix$8JHDD!RVlfmM z@ZTNr@IcfQy$l?(5Zct{dqFOV$E%l0bK(%IR|1UsoO@akS3AF@>8PEO0OzkzZ@3x( zmGmn7v@&NQvS#la@S$u+>?zJwpsyOWRP?fs7udq+DV(5&SMez1BYpPVE8m|?d|!(1 z>Ly+4_@lN|p9l=p*CEM!cmz`Q3LN`y8r-KPpx(V2)?^zN;g2G?lQg&^SE3+Qd*uQ+ z%RZrDK5oNQoi)Jw0Z__onD5;J{qPJHJ#ZiNLt#VF50B~ZyGp_KU<8NSg74}H4RuMP z!ezC<|6HAVzFimLFGqHeBa8UIbC0xdda-3o;P-h_9nKY~`*cmW+cjzYC$YNoG~kRx zb!VVD^x#3>XewGqFP-o#4pYe5LA6H$>`$s+f9R`MwKX-0n4o`<(*8jMF{)*fsQe;| zhSGIqh5X(vZX&#Oo`RANn^AW=%w&}tz-jFf0{9ao!^xL?PIV-Ad+crwdY1>eIGtf% zB!B!pAizDRAsJCj&!AiT^90W2BJThvWNxCs?_vcWW8+0?1OO3e)W}DwtjMtrFNmvx z?C_4NI{;(D%TgqsNnf97FgtGXFKOqeD#zzNL*8zBY?@IXSeeq#nq1qZ)%2Ea7mpQ_o`jpaDkJEt0<~s{+Yv%nJNgtlo=~ zh&3LiUX2@oAsW=$tKk3IMW?8tS5pzPOW9{#)|*SBtTP2)Ds!gYwq~3yd1nOope9`I zSs3osh&woqY7SQJ5Kc2Aixq&a^&oQGYRYyH|Lu1`{O$t<_p(!0@so&sNQsyD>A?Y3 zvu*$sW97@z9fH4HrR5@Qt7ou(;X}73=;N))<7@TbSrh8dL2&FePGz`wC4J}}aFfQA zkKKj_yTZ||@C;Na@P(KkvaHpOpg#ec;m30L6I#q4x^iXv>tgK#p?g@n8J1)-d=K+N z!}lAPH<;dCP(ToxTk$-)4UZaGj@=}?5&p1X?Z-u^EFbY>6|kk`^1_fL2fUkS<>8xM zvl$3=-4c6@K|L%Y5Fc!hpnqdasMChF!cB*RhRZ%ILN=>0@JGQf{6p}7k-A|d#yq&+ zp>BOuhVI92BS8$h*XV>U4`JwvhHEk*)QFMe!}%Uv{@Wn3pT+Wn@ih>>3=w`hL3eQ6 z2K>*iX}s0xi2fhe-UU9&;%fZQ0t?}?Zjc0`fCP;Y6l*}Ri5T5rfL+`uiq#0#M$w2? zTZ9Bq5CfY4>$-NaXjOXAUTmvvy_So3Ne~I3A`nF`)(c*k5EVoV2ye~rd(J$&*$q+O zzW+ZT%|6e}Jm<`uIdkUBnKNgCVfz|cY&97<7pVJYeVF>AF6dAbstV zVZ?A-@9_V{(zo%^u3@`HPGBJ{i;w$O@IqIgY=6g@E!xx5y zdxt#2t+UNwib~8U+fsEHEBCvI^O(*TPq%*YXZ^xbpdDg{caD#a=o={fa%SIv)Lf-z z@pEDWC!%_DgT#MpzPdFF(RqS&ZoE&u#m^12Wj`A5U|RDCI-k*<$S;0QKo&or!{1Wx z1#cEVFYm$V8E5o(P!c{C{QweI4G$dBnL?ZfP+)d6<#Fe#<2L9F8U_d`Rtq{4SS82Y z*qjQ6ugje#9)W6iE;pO!>-0H0Ub0pHfNBNiDOOsHv|Da=W@^iSeML1OzuYXb`4f&Z z&IW+U<{y=*mHcTk6-_Xo@@oDZ;?Ek3?MvBskrR~Wsg?0nmP~c@7&cM~#gk)JWICF- z+T=vP%a%|)In3`(%MO35ZY~qB)t{60Kk@~*Uw}{WyVy>`PtD8<%BZbp2~mo5H7yZi%>I(2-{KjaO(e0mAM9RH9_x*-{3kJeoK za~VEj(5T%t6K7C%e9T3fRw4^jsYFQkrFhJE6?$4$une?%JR4gE%C0DOoOriwsmW29s={aL~$)KWyfWsDV<46i8MT=k<0SiHA) zMWDPwVrm`*i1=0=FYPaoICMVCpUVpEhqO+Qm6U9BAdUv2cxVCRD)|hiYwi$!xuURm zxOd?)snd!&!bfsA=ZSUR6}OhN!P~JoyCQsRxp&2FRN>I{o)v|S7}1bxVz-kGl?tYY z-WBYwW|}GUbTpmw6{G1mpqZ@;JE+eW`09+iMsqtilG|N!pLKFG&0ZNi*Ry`L^`B$m ze8!PfYpl5GpF01YKZOK|RB5gxp#t{IH2dyQsE@_V3V%#a0A2!M#`nEj9h?^asCc!^ zt%CT|JNeVa;#}-zeIw_&%|Y?SVMdj%GJnPIgb@H2&{Y}cNQT3@LiCKL?x|~O+y7|h z@&5OT@g&x=Kuk9B*sx$fKzX5ipWZA#T!G5zo0$dp>_kSsSs}}*c{%>SqFtv|W#C|s zE6<+8&4ZlvB<*vI>11Uthe+2Y`ULWP>;^+;Iaw_ZR1n#mj+*pA4@UQ`k6j;@D`9u4B-XDvA%) zpU<8Osjo_0=B>@6@Qw;JnlauLTjlf86LysjB*59Yf{K#x#rc33S6fOB zp|SCWl$E)nV2rmXfuqOf%!0b}vN7fa!WxF9jVBJ3Z*`Hx$$4pedh zs!lD;tFM|7Uq}ZcCIlDu&Efvjr%m;Thtr#L@#h}7G{cSIXnH!gyhQv{r6d*Nb2B+3 z=|hJbv_G^LqVwpF=d?e*X}3R!7MVK$8}>kvt@vFIy@M4NCM^3(`}@vIz%Nt0;%Ort zC=9F;SVF>?5yvG9U>gli_0v)4r{5~w;`7huR{r+?cl`a;6!^R7Fibq_3`BYtf4%9L z5RZ&sf6;uX;SEgz0}GMTpNhTZ+%B9Uao;IDTW`Afi@w$(XHx{5{b_UEu42kq`N3fn z_J@umD|~dzhh$%Pvt+M0cXo{U2>sdgzzW~Lr0dJxmOn0@TPo6E4dq*$=zd^WrZDxv={Or5($& zo81aS7+$rRJYn7ZidbpwN6Pnu*qwl#_nU}%zN@HbScpSQKF3#xNh%E;KwqDv7XyfH z#0(+4!YH489e03mnUBotcj0Sk{^aaBB{BU|Hwn{osj|*b!t_>u`ds+S;d%17Uy+TV z1mFMKoo_+foQIVh@^W(Byx#Uy-KH|6k;;boODkoiKMgxky>o~(p#9U#5Bw=+O|M1}fR(}<25EB{Z1 zzn%G?{ki{2{+F`?j{3S_Xy_Q2f7lKNBEZ1u9^X{AYaDUzU1Qkx+VZ|Ibgsmpy(~9( zOxMkXxZPaA{Yj2~!GsG_Ulh4)8%#Y(nEJ!w7aXSkmiR~v5}eTW{5Ld3CudUlw*1#*GGz` zJO~Ca3BPRqELYFLH$IW+EY8WH*^~~51)jyK0E4-v0^w8Dk`qN9cITs z%BgGY`)1j2+ppyU0K1Yxm3jzh3svkw?27?`z$~sRW{9yF>CJ_@vHcz!UO`4p=0H0P z^8K#ST>aJxsvRhS(AUVMPvA7vk<~Z2U8C8w_6rFL%ur`LDzA06DY!ufUWPP?LOR>5 z<3OuamC-X?(hE`t-QaG?gAQ#{2c6&S!$HdymuCK-2HmL)xLiBJtp2omX3D7h+pGkN z5?ukX@5{cb4mR`i)5NIZs8QGIOPw8YRlKwvagTI4X2do9z3phTpOwaQQsZ6GN!I! zuns+i2h{N~h5Kgym01u+^r>lLW+ zNl0!9W)gZO5ZvY9di%19dpU*pdEij@T)Vw{g>nKt1B6Q!c_1BT_hrn8_&D@Lvzx_GoYc_ z{Sw+(n&|jB$ZQT@pyLcagT-!xFP{sV8+_&Bm6Ca_bQ@PjEPjB}W-PnddP5OQXRZj8 zH2H_>jr#2akGfWItPT5Wf7{~hR)O1ajQ~qg?|<~Md@a!E$sC6Z@+=p`S>UNo4hyiQ z5LfS6e{@QGsg4h{@V{mRN28f=Yij>bM=@rEOl9{Qk3qC}9Y72i$5X68__r^j(Jt=Y z`V-&`L9C_PEuR+B*fM%+(GsDj zKQb}H-|-S?IWfb`WRpnH`XY-3aP$&ZEirkDeakXZ3Kz)O6U&hQnAOOmu4CEo-gXxv zmjA?c!r{N{P|=sHnbRuEbbbxYhpLOl#ldHdRq*#a;9dRYy}Ib|W!x9*t$C1-s*Co@ zOI2qy;H}O5REH2#o!^}D0g)773cv1(3ALfbjWWU*N5s#X+ z2WNVsV_U)t~g;%SF^r539u>bhzDhDWsBJW4OzbK&_o-Q;S>q zBwe~5jRu}=I+AKINfs_V3w>seb!emhnf^$)j+To*M>oCCOTYkd$&+-We+cV)`&7I2 z4p6T*&n?%E6X#8-jTs-WL-QZv@aH)2bFg%Fl$vHVpDlMfAyT8ilsj{TY}tf4k!P&d zBzVW+to$na<7D-xRG%ENg%-X#V{pQ1vRWjY1RVKC1y_W9@jue|cuDm^#{IFCMCQqF zlBuJf8n*pO_e*CW1g*tVy3dDwYaSmdU)tvVG!CRWaeuRSp=_=t+8BvhGt*WX*q7?S z&bs9?1~vlVR!kL5E!;C3mPj2V-<8MOgH=8JFT%3&@6KjsOH2`+h8=`P5EKcbR*)cK zM5%;)zCrqD%6dl(3hC%>maUtl`4k&&YO#n?YiWPf{eBU4wgSE}_dIf}iQGK+pJcLF zra6_WD5v;~_^!*mE-U4Sh!?WA+QPGVK}uXP=a6N`CE|7DU)}1W)Tk#ZHp>+Xhd%TV z+l*nTe)oxN2==m>;2(XS_R^R+~#&2812o->`Ew?t9B4ZwTu8WSM5CD zz4BF3vaVSm!CkK0V$(A`VST@`QQQj!A3qJI?d3!mZZ2X zPOqy&r$|4P*et*N&{rJy=AJI6*Ti&1Pv!~xtHURp)+v|y@rb*vf4Yq6kOXFnkDvTj z-WtuQo|02AiBezpRjgJ^Z30iV4F;DK) z-4h-41K;D8WSD+ldcX>fSwxpRFRiKoRz-kB`_F$egN=z%!-Y7a8sNes&H^t`|E6vt z%T&Jfm3*bPKXRU&g1RW$gGJOu=_S@;J4PnkpsS%Ie6LKn#WLY$#w8H(*AkXnH5k$R zCrhmhw^jAmR`%e{T=8~l8?hNt@Pj9)pEzU?kO48Z-sJyVcFtuL$_`P~T`&2juO`YD zIL|rtbl-C^IK(rlgZzz-oX5L3z4d0h0EPBnHZ%jKY|-Ykg9Eu{<2K}tQduV`l@!e2 zX-%CO=~U)s(G#f)fnwaBy_eX5L;n2+ksp+is^oN^=ecNciGj z64Zfvh)o!Rs%Q_pWDAH^Ic%q@3q~hT*;eXYe5?v$=kGNja>f8la(E+?R&xya&<+W{ z6CH7)zi?WHcL8$=y-JDxKe|Zbzxm*r5hoGc=^Nd1`!Z0tea4N|v$NAGeZE z3h$K5Wnf%P8FeC(!e86<_tAXeAGKPHPLElYDwxqEZ_0K=eG?B)HrVX9zI6;+Ea2izLd_-!<@DQRzpQl(e+^0YJOo>eI}7g&_K-3 z_w&>`SLxWa)c)t8W3aTI&!5@LfuC;9un^Ln$}&FZ#J_CcKR)UH^R@9#YIFZNE&&fq z$3*(VN42|jSDHK7cjC?W66yRSNJ{2QRGmIS7R_a>azmA~|HA5ZzrCMtt}4OAr;V!q z?SvY3e0$6@p8`N~%#HiLX(9TNSZ0MRbcii#Vh!;kV=1CSfeLM?deatby#hS0REhpJ z=U_7BntH@1Mx7mBd#zP66SqUIv)Rrmpc`Z+Q$d`RFCjoAUsjRfE#`vOG7hMAe-iLn zpiQVQx*I(rt_E{}K>}-i_&Q}hU zama3dt9NAAJ7%bBf8dL6*tQ;uZf>2b&$D#W^w;hP|yCf63OUZ5eoJ1RKf3zjC z1HV9^L6$_c0o_EJknJDR7@2kzTeR<@kL2*X!|y^iU{{ZsYiNR4F((N5@v~!`5YRQYSJ!rgb)?@DX)YBy=MQeAQ=-)`Y}Go1Pp)I;lEh1Gmw z=D{@?cymW4=CJ;uQdcoX5o~z?Gj|^^mC}{GCgW;EOs4e`1(AJ4>JyT)JL2q?)=Pz96UHCMGz00rA)xp zA?q=Qb}o%B7M%V_CgILE&6prs?~wh0`E`;iTN99g$kN5Shz@Xo{m_omXjxt0&@T3# z*$t>G9k_-=@+}h55bI^>32b^1+;lU+zngl=1Rq`x$fk52lSoI8x9z)llAk>}zjyT( z=1++VfJ%8RX*I>6Z@y5qjCuJiVw-yxj-=X-{1&qQ0s00bUYa(&h|`t9XeN70HIR=j zKM8ExTiPxshc+{%4I?tk7Xj}R#Gt{?eF&kHKS^T=>vwHy&PY7lxsSt3;!p|dya4fQ zhivl~&Ptzkg?IU^%%E$d(m&4rvmEw^(+-=#8J6>NWRg&eCqULwbKKM;thzQg{er3` zQA($AEXfyV79Xr)C z&pQW)u=F7=S9nLU9zF;(a@IV)yF=%ep3-kvQ095IK(+>>cL_I?a&~{bFz=9h4zDQJ z;CE>wsYv&SHv|qLW-fs_b|wta+x4cn4ay!zV2=%@1J^5iaM&Gj_61!m`bqug)P;5T z7sa{+4m5rcw1Yta5&ktW@CyMxaARrV<{1I1omvTvis*0rBtRhDL)-D%qz=T*lm=}L z5^JGl6Fe;Wnp77YxK8594kR4!7L_qpRcamByt6(Sz%3cy!h9q<{8ug_uhacmN|Fn_8reCZN`Z@o?nHok@d$t9$nz$^NCJ=X?nAJ*j7%%3_IAg2j-9Y z?wUSD&M>gjFC3lCN~Li0G+D2#Ew`H1G~uP$egc|PJ+RMY3R|vb1VmODODDGJU@*MK z>P2)vih~{@Vue(jO`)?RJ)636R*&y7!71d@$RDO156gtvfP5vRH2k=}5s5V1DYrDj z88Z=7@Z+?&&vPI;BExI|c)~>h>x8!^1WYX_fog_qlL>A%&W6JznqZlOBoJCll+(gL z%m(3%g*sO_Gqg(fx#BL!6e}aeXDXUyr6cpV74=jhp`1*RH4ARu;E=K6QzUwL-!>{3 zSzsGg9|+Z_2g7&CTQG85sd!(uX$$)6QK1elKTIS#H|xg%oZIOA5 zse8Um70ef+Pp;Z)E1M^kMXLaeRF=9+5eD{zrl}%hao{REFt4yQ(qn&VWQlYh{1q(R zJpJQ9;r#8q&U^W?iKG2cH@oPX6MyJYa3$WA$|=}Qw&k8dp}GJkK!L)X$Ua=#7hm^FYB|Kfv{L}eBR6~Rkc0 z_)nN}*HjO1?i^-=h*1QJG^>8{mXjfGlB^GaVuIAEQYhohMIYeS1tb<6%#>nMuir<& z-HrYs2RK4~u7;nGuYsD$vBkME_0DAyj&#!K4!jXZOlGxj=WWRWM-GNbjwEhlNt$0O@Ge9$yXbYohss%LWSqytiUStbctBGXtZeQC|M95de$ z`Vb;zc8@XgyNXAbccIK7!RTbsSs@yZ(39&pe}N(!Xjm&u7HIrbDYb!nenEp5S3(Ja zK7q#1E{bNZD~;YOe1+TmI)8NeVjk%N6kg~S7`Ov%L$qIgd8hQ0lLKAfEDfI=Jmt8+ zz<-r?ZQ{U1b76v-dJF_a4lDsHi(PaT6qA?bx+h3}sL_AQN&c>=NGCx(_=&ZKXqqTW z0a?a>Q5t?N(D+fQYYi4ctLc1JI`GqASL(kb7~Y2bDEwm9>rHQd>mCdg^wn^lvC$vt z(bIp3RgS+PnPsj0YXF_#^fddZ6Y{+)rr{yHt@6~EcL9!(i~+`yI0xfrJi7qpy`^}i zkMw}I4DYC*!@{qc1v0Yfc&0VKeDZbcCtR77d%UqW#XnQO|0PTLS}G zY2kmTUVCQ%p)wC|Q_kk6*5`mI`BEQ6j9;pjD9b0Ffuf@N3AD1S@$A`g2j!KEk&0F{ zy)I$D0g~SIvL(5t-_ch3F@>lDtK21kgf17UG1X*Uf?IM1e*k>q=QuF;gnGLFGv`VY zfmmj~xPmf4DZ}f8xc`b+)9Wc5i{0g)!Y2D*B(AsSdJx+AXY~XH+OsdU)uWH60noSs zBfc7gz02#QLQD!$tB9XzPWA^7Kia3*-|Y8wtEm(|eVl(Rvo*-G@F!C%D*cZq$?qZg z8=d@on?K6tKa|LS%*ijX`MZ8Zb!LLZ^prorOZjty;G{z3GXK?8<;Z5wy7?#5CW6Yl zufLS-r1RqR8MVkweBFz+5(8Gz$djZJV;m&qoUhZYt9W|Vw z{15WY#}?q@6G_EO56M5^XD-7jnfg_#i4 z?!lI*ba{^X{ceXLOY`l;i>lGt3)Z(dHsk?6EbCl_H?lU|Efjh z6D2oK77)m`@Yi<1UW{;e9bo>&v#p+b90(L{@Gd+9a%y}Gj@@t}NA>Np%}jxU<{kDk zSr~5fF7I7ZgIa$`hyZ3juguLUS$tV8C+b-rqZG*jk*aG0k(Hv&;HOS7_rjH`jo`m( zj=pEr4xhA8HDsM@QCxu|Y6t6I8pPrjkPeVQ_^4<#65LQgiUp=m^K3c4QX0`Dax<*{ zTw3^mqAJkY*F?Vyn~*o7ElLMsX;^eJ)+i4{iabjYieze z@)_Mo3_2QSn?{FAHVis<#1SqV`fHOVuV%WKsA`-d5>dfa4;lb>VeSfTpXL9(a@ z=OZ=Cp0R~LCzEfsmGb8ci{$veAjzeqBcB$~J5hJ}O{5Ny?>Carx?r*L{V!ysj#M$L zL@!WxcWD#{_f^j3*!iFP#FxtPav$f@cgwUxBh~#N%{S{Zp)igH8)uA`FY{{B)^+Oe zh%8Q^vd{b!RN83yh+||uPN@F+5gE8@L5aGj-hm+MD-|6mHD`Uk1LqXk^zfN8al45L zP%DfSf8Te7`y@%kP}5L4CRtDxz29ZJ906s0t7c7{tI*;0bsSdLREAZAw5lH1CI}Fa*0dF&JFJdHR?`Pk z%KHR*OiSS`xy|AN1m_miou-RrTn%|U7#*j6(nvhKfKiM^-(&rC3LM{;ng6h8bB)dN zQR9b!XqhY6^<6aNOs{{)VbO81V>W#VlF$cTFuTsgvAC~wK4a5BR9fu2>-pHvYqTGV zs2Gk=#v1%xziH|u3>$82`X9u(Z}C~&S9Car8pb&shT@U*8O=?HRM6{rI$#{y8QP76 z?DVzYwWaBYv@sYh?gH_!KldyRHx`F>-x&zMhCK>vDv?A{{RA7z+umT;%~0^eF4JFE z`tAj+clju6T29qk*2h3v8l9y24c`O@?xTjqi-&8409lI8R9iP|gMROoir0UV4&rR3 zM`%qt);NFRk?Ce8O7oF8V9x%$e`X&dv`J z!7H_?;kP-0bm$A1a(%p72_iXF61AMDD_wzZrgax7bQ|5g18Nh6X-#qHeYzP%{cACO zCb}8t`L)5W@6*k@>1IJ5ZfH7$--&WoeS))u{3XJiUn8M^B?u|PDFo>zPCdOb1%#TuJV|1R&(`1zkl=v7C) z<;c1@op+Inzt!F@L49H8ll~V$$5Vzs+$q;wv%QUH33eBDsL%q4dlb$3eQ!eTgfFYl z7tyFEbLQ?Q5XObO#3iW?L#2(wATCL4E#ZYG#{|+%^Dg>v%6bu!Ak=fI;;kZ1Clk18 zp-HZ>O%h;gpP1;>9W84-A5jBYIlHUtj&qr1PXjONE*XM%!5hW2N-Bu2M#S?-z1Ov9 z@spi&kr#DeDy2QkDUF^0wrgn~_MzV zXMdui@KyqBzAOR|>iT3xW_Nnz^;yR;eTaN5{K8wam2QZP{G!h53a#r{cx#!rc0M00 zc9g{&M(Cw-+ZEqst?@$pPQ%$wH6O@MTGYMsPFnu&Mw#Q8g~UG`{1tNO!jDV4Z}UFC z_r(^h9t;ppHT2b*FhNn*XurcOqy6H9(5txmu)7L>8?li^Cgn+5S-!tvv^Bg$-Iapn z=O{>ug{W3c?pMJr-Y0g_6FXfdP)-F4%ydz zt+{_n6#u0yzII|6%DQ;(GdM(2&+{V{3DcdurE0R|PsZ3`1tA<{2_{%5z zhdH9XR6`>8qtUx)qIMc9PS%IzvSnIti0(9jlXe?O8GuQ(1@nX7I|j!NG!8X{zK=-? zWz4MRelHy@m%hMw6>Up=k_VV6!`asm`9x>z7DUno&?9mOsLgjYtM4lj^MP_IDQmc60fyky=B4{`q&mM8PkMyu3kl^T*ZUo?A+8W+>^Xy`mt$b+w(w{ZeqN1 z;g|>y#()pA8gm{aU+;Mni=K@99_yj2j(jX>?q3Ondp8RN_=5o0)L-1ZyiaW8x1U`1 z7%jSetnF8C;f%7%0p1lC4)?B@Q$FNt?+UQZkrDc}AmpgiH_f=R%ab+`F31OAz!3!# zwR<~tGaLZ`pJrxVo*}$hDSNS(ZKA>Z1uZfTT8whCSSdixrnRV3*l)R`2fx(YsrFIv zR3(clU!r1b0%EH;F1B8fA}fV9QTLJ(ae7n74j`Eh4d8c{F!A$G|Bmy3SxfM6?e?Y< z!I(N`li%$4eVQ(G#&34SlegOIio|5%sfZEXWO($-Zwhx-4b!n{UPTrN;5;+`rH*M4 z&(Y`LbDEpC=q~w!8i{MV{-u{Q;g}4w;yhg*b$u+(y@SSS(C7?yEGCy|UWdQLO()%K zUZyD~2mer?tdA^!4}J>(HS)Ytm1yZs0@T`;=BG}*+DzNNOQ@OCzNuX7x_K`==ImdF zj=)=|NX_B<*?8lR&y*uroru))z6W2XQOCPjMSpZEJ`(B$U)St5gP&%p$cDir`KHXw z=2jT#!m`K`>*Bt3X1A7&VST~BT~#-cC`;78UBjeuRb?#vp!g7ljS~H#2JoO!|Q8XNYVaPEb!czruzFFi` z1;_MH7sD!gq1o4DdCMmzS&A}}B=mzUsmcoAsi|;Q)a~}cD%rHj%C{MCLc~4wu*Vf% zGhb$cYC^gUj82m=e<`W^y-)p6Vt^7Us&ZRopl2SlO{l_J#K-c2t_M_m%)U2YJ=Kc1N$7S4KY7a{9G>u>YYbB%x*k6+BqxMPf z-H&}|jmn6>sWtM}%y$aZ(MX?S$GTn)ts1|$gr7FE-Ek=1f5uuwxua91frdo2O0YJuW_X{4?Q-g z4Ewoc^|Z!cdN%`+md-g7M@~oG4e5@#$=o_E-Y6|?<`dalNRuv|pV2hD9qHL%J+Y@(wBKQ>k6oQdF z^>mrfY`u3A!v#J%L-;7$A6}pkcvh=rj;INFO*0_oI`@(O66-o-@1S?@xQ?Ds5Ar=f zb7SbL10x2y=RSh~<}1Q{H;FAJ(Q^AB?VtH0hyJWDJwH7jRRpKr6PU+)9p@_a4C3!h zCj@m@h~U=qRz#uptaIN+1%wr3vpeb@_65^xFX&(@sDQO^n>iqEey|PJ)>ljaxs07S z4~V+w_b%__t2t0P=UAU3$KhzkM7-3mc*g6hVe>SzQ5MKf<4l9K(b8<;r*H~=!vvz9ny8y*IPp8o8T_H8 zxAkNTr;wK7UnQ!A%DJALGBv>h{@fr%JJ_O66gsnwxz#CIVD_A=P!6Ry`5$h#q{<}FoKI|ArM}X3X7A<-;bYi6I6|KsNaa)xbq>0}6_CPGZQ zLci67`C<-nyzW_Hs+f`LU}cfD?n4s5J0a$p|B;G8;g4uT1zBXo;|Gd-wS+)Q=9wO1 zAg}`}fkITPY%@Fsk9I=yBXR!)S@W)v?oX-zusZgyahW_N4Eu88%e*RC=|2YfnB9N#FBqUkDrz{$zw%vUE#G4-?Gj9)!Fp0ee_M2YN( z>|o*;A$9x5RCqb+p403I@(Sb|NwFk$e|&8+yT_U)qg}S`w4`_C|6Aj-Jyg_)oigpt zIBr-x|JX*EaZ=gP(H@n9gv~h`u)b}T|9(4F9x7EndV^LuuQzP0cCEc6Bv<&z%gGgP z`f2JMsP(%#UO(o)DJLL|u%ee>Z|TU|C>;gK9+XAeOz_*YiJ3r~cJNt9n6(s-IJ>Xa0Ogn#6ifTQx>7mMj8bgL~LEk4qAH`~i=W z6)GAxKxl_~kQ}q@JvYu8C}CMH3g}(RVfVqe@WaKP&5z^AnzsM^V7P<5$mDc_2@86; zPTlh=Wr&~0GKDk4bq9*Qr^%n5o!AqS`B#huGEx)FNqUi-qG6w$|029*LlHMTx6&pG!owa{hNz5ZE&fU3-8A5;!0#*+6DblFt z_oqFW_R?UWn_hw^vecFfXM~Eb5nM3`*?s>K`UtY4gOZSSO&}9I97MqX-s1V_rzv=D zASC=tx;ApwV)IX0f8d4mN@N^UUgcr!&IrwHBHNMLH3?CB{ZnAkoYMx) zopCmBIcT(;pt(2+O-%yLV<)$^N6}a*pAZQ77ER*~DXqDOQz1Qh%ah4k9fli0)KGR+>J`Zn!1e-hr*{ar&oCi*hU? zS1O`k`ayJ}F!uT#wnbV_5cN(%bYTKfI0=ywE`23{#fE4lX|_f4P(=#ie$*W_s_0(h zpwV)I=7~P7Z1B>$wnobd8o#26_s^UJq76B% zgln%o=@!w(>r>hj+y^3c>|Np@(sF|6z22?u$xNWRDG80!KWzw?W)WSJis%q-$re$b zgGkE>qM1pE9%t*?89zygv^}oW{y8k26?GrEE~Pzv=h8naM(f|Ugwt|@#+!tuB!TAX z0d2_E2F-qp=9j5xPB= z@GsnE+oR9(pY0aSq*OGWK8v%#KnIPM6Er_hLi0zqy)7FI{~k1(Et)T{O=->AF7aXd z+*_7xT29cUE1G!!j7lKd(!Z5(+MYIIXT3#qS1O`^@1i|AP%m*1X*ogkJ5lZ(1@6tp zczdQhXkgv*Q$hWQWxpLEodr}}=`2eE6HS0Qs};=QYf_qC_XJ=vsI22ZkOaz;1Zs2w z)c$@+4Hx~@@=L1zT4!5-cPg%KiPlf#jELy3T25O3$nms3uD`y;cDC)#NHQ`}j@mHi zN{c5q70(H|bZ0hMrn%AL(Q<;PQ1CcZ{#gRei0?u3q($>Wc?#)%etmol)HrCgoS@m- zvlUI31e&+{TGG*((^Ek$e*sVfrN)HY? zUSNH;H3`=FNmZ&$fVs34%zHmcX_o( zisDHwnR!WU+vWm60Y7LtA>fiEH0w6U8~yBwNxat%nujf#tW-3IHi713ve5sxSUg%# z@C;Ert@?ig)g|A9>H&-Dv8z*v_QE@$I)yBAtAk0)38t64t%UpPjd+U=oY2~$_T_KP zA}UTr^yq33DZ`{Yh_sv_x;zO{B!Os25~B9x?_!H)=Z{m`Q=UNc$Yx79EhlL99oO2P z+yt88ZPBz5i`5p*j8rr^<5A0X!Fi5@M#~AB#fl~_e^+mc6K+R#E8&inzjAaS>h`2! z`SfzIoK6MIn{P;CWK&yEoSM{y0e3bnSL0|Is1pWz^wrU=%0T1oZw z>+u#0{vHHVL2zLzf|CPrIvwvIn5qb-Bq4YpfnZY~OCmgwp3nV@s96m)xli)Te|W*` z5goi?y^j+S;c$mL2sFBMtrl}mhvKX<{oSUh>~XNCQBHN9pPbU(-|U46bA_OxO_reL zTAeq0w6?cvqB`T8>Lg@D3TsF>w5WS>DuRD31%V2PlN|)uF6pruNeKS(TAZMt_x^5{ zm;iz!lTupnZV&{z-l%`wwg4+B2#!xeFfM`MzVAWc2f>4>2#QXi$7I22?QfGEEPloE zx9+WU`he|jE7^bOV9{=S!0EP!zq{MCSW368V}D7y%}1Twsdegi$wYI8z0?e(gU}mO*DY+UjqDr#9AC(L! zngnPK8`G9N1+9S2NCk9GKLF{p|JAEW^%SukELEVxB z>h}py1+Abwsi5BaXS`u=ZcL)jpd>Jp6JWmXm7veMD^lq5LbX#P6HNy5UOM#QygjqH zm@7G|A$HI44nQYW?5n{@*4p2DIIu90OR=*a1WyoiD3^WygH-I$zgpj&Xm(i-@FVuo zHNJrCu2e$;xxdSM&pSelj1JzOHMz3H^JWktpXc@VIY*wi+vj|FHau59pSz!*w5lhA z;ib7T9{v0tmfr}sJ?ihXxpn-?R$l+Fv8t>Rn&Z)V`I)~;D_+$_aEg7fp(CGUb&{IO z_V{~@ia%ctdF=TlGiO5*VPEgk$}t_*$GbW|!y#6Q>yG-Q2^Axsg9H^YUNZlHas?&v)+c`5QV4B!9yN>HIjC<{q*nAo9VTSr6l;nE;(vwn5i-uEA`%RDz9Q+veI%(Lvvbq?K@aedXT z+=2T(DQQ&~=v}7jKC}MExX(QPxLD@hYo&N3>lOJ4XYlllK4m@2Pj%6sL@rffFpo9q zfq+QXQY}9Trs*Hn$NsnL2a=NYb4|&b%1>l;22%|YhM|G&^2b~2h zXGFwJ0Y4p|cu8=kkX@+epc&Qxr6o&4xK(b<*7$8wj0dVXcOyA-)U(3RgB&j1SWp_i zKs_w-c*y67;>H}#AF?lZ)kX@cZ^~60^PrgAnl*Q00sa~rbCh<^{Et`mKTO{mZc%sc z$;>+Yh}X5hD@T{a6=K!(Gy(piR?)0!k9KmrtVV{BZj1ZjcwS6=Q5x&>MzI7!)O!EQ z*PX8QA8L|V67@%L%fc<4U9=&aDe9j7>?$VrG;^v#bsyh{4J(zOmyJ)^u#(=+RyPyr z?L70NM};=={VR2DP!AL9?esn82WA#IypTVL?vI`khYw|mv9_M0|1rE=VPE`B4l7Az#5?d> zw>gFWa{%7jvgRj}V9TTI&tZ;o_U9@gp0htE({nKVtnR01hwi5D%-`p=w1kS*bre2B zFxu^w=DsFNcjfJ?1eT9vt^Q4X@5%Edj|$><0-_tW7lkRYDa0meK@76Ym)sx-7;Sg( z%%0zLerOjq$qkj~=-eM8^Dppd`UKvUlibGhu=~N&pW$KW$yrwT*T1BRa9&KF+FLXyhH2O#IvZ{2nsn3m9>L+ zEmS9kPXE@r_$3xici}f*33o0?H1h2n@oV}L^2@p3a<0%FBj*NRC3uENb8QK`#|2|> z+g&J*1I6MCpu_(;lpzQ=f>0*a;v`je5tm`)Xf!r1L8hr3wI>SaW`8&lfAe_+wm))9 znv~2V_ELsMxCs)G`wY&b4%?;D#GHPLlu}w!QIQ=Q5RvFl9K&0~>xl7@x$E$Ku7P&a zGsK7MCz@I9hIt&=1Z{H{^gMct2q#N(ACTUVHgL1fI97Pg25`YI00=|v$I?pJ|!4Avo!ouj{^W?y z^HiP3%$a{^`yUap_r^C;wHy%>F+P=RW#M#=!pP>idw63g&3Mj7fiW-25VD03hRvJE zo#SFAQZx3(3*2cs_1X2)96V8C=B?l19y^V|ZEeIe^7*>lC$00u?Ht%~g!6hxE?f88 z_4n7g@9Xc~xki6c4dplDL*YE8%f42nv!V$K&o>@N9 z+yVKH%v-V{o zk!o~9@A7$lLVLi~Lia48oOk)vnH8~vFU!H*UE=zEb%C5ExY4`3EHj=uk(WM*Q$ok? z!(lCb)_IKerb`}AYsuwcN0}e{TRy)&0t!aU3Yv5IJE56?+GW$4vn7RmR7Y~UX%0v@ zbSgJ8bGna;UY(D>Sy_JN#Z98cP&GvLladpf=S!;Lx`lfLxO_W?;(iG(evd(Ue`{J_O&$s3{Lq(`-;_+&^sC*CpEcs&by|E zJLR%IKl)G`naL_eh8ON)@rPif(@thCf7bZuxn7B3uR%25khAd}3y7>Xmxy8Ghz;}p zVG+ZeS=jS$l__aXEf%+_g|&aOj+1mo@dNS;fy(6NVdn*^)mY=Pl8%=rC5Of+I4W=D z$Ea_uznrY!VJ0Ii&HZvF3J}!-g4wuS&=J7Lhki)bs*@$1b))9fW#udrH{K!3L~%gl zQqVwnm#!lpUikp>4aYar5lJWd<*0T+o7`^$JEJ|Y0Rg*2!2az#s=G%Hq#aXTvssd( zo}WGaD{}Ejl!NrLE6{HBySInugB9Qzg6?EWz=Htddose;j#Oq;i4pJ zlMkQzV44}Zl5aBPo2dK4lW;XICR^!uw1~twr}!h)J{50UkY|-wNHEsI#dQ>&)s+Wf zt67aaY?g=PobkU{hS03%Nq%3Gc@V~!^;kTAzr6j4Tvfz;x4mu1b@`M zxDS=`QNY|}6aF(N?ml=W31;aEnwdv_qM80%rI{X*w3(}W)69!j(99tgz-k{T)V7>W z0t*k-KkztjT|4Re?m_UwO~_rzWAfJ(WKPp)0(Uy+YsNV17gmxiUnAowaeEFStr5@M zfe{&<9*C5snl}R%H0oF@3S+wM|XC1af45~f-CQQ zLjw)Ie0dHPO;aeuZ(S}>&I&|)1@?}%X$8gWd_Fm7W6!yi-h(cY!#BFV8}%)nBXdk1 z{7v)Q>mQNKdH63LW%Us!MmxWjJ_kS+??ZotDT1J~eY%Y6RxShh&*`nVer9 zofDZpGz_1FH*53(2+Ksy9l_S8mKCTkqlFXcfD-nDrv$(J4DrKUS{Xm9EafP(zk@o! z);#Wv9UZ@u2|8lV#z4d%`s@&6MwPTv&xupjoO8cJz$WfiIEGYIJKujg%RqkQBs^>1 za9MWip#ojMU+&N@Cngh5H8SkB7d^P?OaC3cM;CJa%yeQ_(*{$*+ux*q z`^Gb=-)j5+!RK_K9PInW@zV45ImGii_p_7i2{X(^=BcIV$Zg{*DShMjKe1G)U=93H z6;~9D#{01ZaX4og?FgxzW&bZB)uv$d=G^Sk!lAiUI|Jd|-1e`g6Rsjgt@$yeYmI*rThmq~f9a4#4VWF1^+{ z2o-5_N1sH+JwAS8P||%tB2;28n-lMaR`{zNBN~*4to&q*$LW_tRq}~FkH0##i3P&< z|Aow8_y99(*5^A(f=t_vE<+ymf1B4;CzAb=Ow-m{b^6&zCMokAnH8MB!7dbwc;4ZS zgShxAeMHN=Vei4EQwLTn96?PK&|^O+DK?1S0G2m|cJWwRQb1 z3R*>pciZ#1@AE{AgR?l}m~w|!FnrL_--df@UZYUN-csM<^8VrlUj3oxbko{f`vh+# z(Qz%YlJJ6b29pE~>s9@tI{eH1RQ`ss8Si2l2t@8zgCO(Y4Puy$@m;8B)aOEMZy>T< zGR-ajP~CwWS~TC^uuziaAJGK%(*QAlJuI(45XKW5-IJRAY$E-A-la_#S+U~q0>ua| zrUC8=p5Q(u9eeiV@P8 z>F0ICrT{^)oFD>se*;@(u{b(Ihp z=iR2x)K>KmxgrcS&who(3U|sik4M@}UJ-ZY`vj_RpGQT)?sNGY@l=pfSbs<7uqTgq zPRslY(;B+XMe^3*9>ot7(k?D1`F9*%F)es4WZlQ_jwJh#3_``}~U$eSyCTbVms!hVi04^5MXT4#|>`@Ak2Rbwq@ z2ZY1RMSK$M(fsm5t0$Gm)WpKh&u8xvU#(lj^D)0NM|IJR=FXw7Va@u*o`HMWmuPT* z(&%v^*;*RhpE^%wFo!M8nxAoMRLD$q9~Drpq*>EWn%34}%3f|unKauM@|nC zO@jb`ewU|C(p;W;`5~Anu!Yp3@(SI{)AP+jRSnW_3BAEIrM*!^xUzy#J$F ztFIwTW_;1FR+FoIa^NV}tle^$KZ`B!-E|aG&-GbnP=C{tW9Y3zm}(?VcU4eU*ooFN z1Hx_DO((am&wuLZb_KFNm)#`RPWE!j{9?jh2Dq{-5Sh(dc3L)^xIs@0%2D2M2iZc% zE9IiT;E*~-$-=E39346Y!|v;N@<&dD21h<+SL{Aq;h3fiP~&fc*v*UM3Wn;}1rGj< zM0`P&&?;a04imoTl*$ST}K@FhB;|%5A zBeQ02q3`5B>zdskiOEc9w|ExIqqDwRz34mPi+*6NelP_=qlo5z8l&@sp>}Rgowx28 z*)gs85^mfUQ;z(j%sDEbgn6uRl39(XsUl5j-{ghujEUbav}1z&Wy~A+BJ32cul6KS zyR*{48n;guX6=20x7tqRpmTb7VLVjzjbv@)k@#3y>-dew*XSv8vI>Rx_ce9i+VxOF zT9fBsb!K6^zFIw^W7<0RxuA44xUZ%f(yW*W;MwxD&dz)^G^?lB*_m)>J81(*yZ&>L zr)+gn)E`y%#mroDLv5Qjhl;ugWN*!6rz*dxwFIF3KkS&MMvRzwl6{wUX9zgey^Ch* zrMC_9Me$-s0@0Gyf#Kz$rub$)Da&z2-~mw@fRDV@kB&ZRXLMV`^e& zlivvaUGCrV1KcyE|94UwJB`unXUbE#BQ9=W{vmL&AGjp6M%4Z8>y9w}8m3pC zGH<-YSf1j!4oKeRMO!F9x!W;&iB!rr)0mMYsJ_~Ae1gC)HlqoKi14j-G=GI6O*L%W z$za#6nOTtNM1_qk@yiOICBlpB zb7f%Pslv}VJV6riTS}|^vjEOpm*zBq{@b;H`d{AO(nn?Kx5;N2=E^^FPXBKCJO}vS zC!gc-Wg)|Kq(KvOF67=Mff&mT}Omx>-c^?w?K#I-MRVt`|I31eixVIo*#RT0*v30 z6>l*vdUN*^ze%f&&bmTavpDM^bX_#uqpU~}LzSmx1e#I_Y6#^Q(8ZsXB6OkU+Q>+Q}DkvR*{_AbH8q7bj6Z zzq{?{f=nvDZo$d?1-Da2CJW~t(L!#Jt1dbjjXJ)_a+~X~=|t;GD9`$;Ts2F+HvhQZ zuCMBNXNtV`SY&?x_uSN*Q_vJtC` zd6t&KpAw=7E1xUt;ChiS{rAXE)Kf4L#9WV{Qv5=x1$(HAh>`35fxJXK4O(twj+X1O zj*Kj=tLL~PDV$kPBmN*|T<)(%$QL!ac3A8Xo8%PtPb5!nessB?wZ;Ca5Z(9iV|Rvw zgxUhiZzTP6_dj#a*T9G2M_K&V&;J0nsK!08Kf!|$9WzL!oOA2 zh#uxgLR}4#5Rjc}H#GN@OHaFWmGLV{>9Vi>ak}2u#U3sUz$*B8^-hlM4g?x*-b zMv4@Wu2YWTeKGGc?Vi85#`?98XSs;2X{W61W_G8YcPkZvA@5NKW|$@1-{!R8Tr=rH zl!AY5)GA#4k;C(~ZHu8X)>w~b8jFH>7{F5Lxim{Ey`Og{c_7In6_69V0{oKg7yLup z0;VxSM%+tIpgZ{V8;m1#?879g{?9|G=z$Mppx!eEp@`w!eO?DOoV!mNo#BEBYjSgd zucn2;`u9xpN27dP^@{TGW|G_kvmb*|w;610 z9?qN_)RGBLRxa>7w41^N`x$Ysf6FH}U~slK)EO6Te{@DZfzWyk_D65Ua{F~w)idi# zdJOu(i*n+!`OoSfOVQVCy=^@iK1275eQzaY@HWq1d|9W#k*x8>us__CEu@P2jqD`U zAHj2Cvp;%Or@?X;yL2Sqm_5HmCxqy6kEX7FpC<|0hUm+{v9Hqe_H2+@U)1faR> zGtKSQNUltbrlXUqFrc@>_Ix*Nev?-557z{&|*pFb)WO<i{boHu5VK3U=f4iL*^0= ze&{3KToSJHgWt46g};4btDDlSK2pa6PR@23qMDm?7BqCY;~fM5b!<+N=htc_F~inT z5c_wXw?J{J9}=}f*gz3n$0N5#zz zwS42%{jbSn#gMIy%_7h|Z|YChTk_-DLPpkB9+j3pugFbGj7nZ<0=4K~nGxVVs#DCoFjmqjq&}u4OVC(&S?s`dQZ$X?64tJ~? zZeIULi9hcR7?3JrRT(8vdn;61zR3^86aHV?e`iY{+-pBQ>#cadx%d+PmSp(bL9Hm8 z+|uC@cMB^if<|Ua)v|?j5%>Q{Qp7W+9wOH_k#l!$y5@M!NlHqyNoOV{9hRm6>qBkv?g6k469oMCsjaY}W&F))(){y;B08{7bMmDQ z0}y(wP*o5(j~XmxebMK5_!7y6mEcPoxP zC&g(nR>};d4DyFObC6CnJ$V;}+`D|S?1x4#X^Ab4$&=jCd7Nq!XTOF9F=QgkY|$-p z{)TQb=VIw<&$&EHXTDDr8FZ)W>(boKe9o9F>d$+q=x1+wsZS=0K{xNVf0nW9EeAFl z+@C#8ZTY9L*Ycv{WA&v1|89jOd?pB*F(cHd#8s4h<&U_`5!h8^dmcag%a;+ZglL%Cd{2A=#jJ;$4H9MzjLxRsedLu zF?~rgH`xR(Hgn=iUP(fXB^#CjSwhS9pPu}1;B)3dv>#T~k}C^oJ^9hJ`wOu!==%4+ zS)X3mC%!&)4LNpwddu;N_35>c^ZVDQihrsV~D7XA@TSS{qE?kkYq=DpK6+=PchsX zr*Xuy`4!nbtbt}}X@#EUyv>^=ro&i^?#8JVQMoAU{?AN2Y4|wJOw{;ga8JYr$p79o zC6vse|NB!_x=x6f17YvphcUu^5jZs^;<K^kp!WKa^VU@@-J)|`3p!s1Ypi}(|VzToxArR(2Ucsz|S?i-shT&n2#1cC`GvEa;duDXc5-8cdpP~(34tTjTBAc8TaiPwFtrc z1#CZ`LW_4%DKYO&6@F)rP_{p)Bf$=wJrHx{Ep6%=GwV36*QWYnHjg|YEwyGetkVLq zKpmzqmCAW7;wOmNAiTwVd<_Ia>YswcDHdP(*ey-au`J!4Zx#^UNN8J*tA>E>P<5Oh znAson)-MqEsp6Hw3c;x7f#o!F47hN|n_Bi|I{|;g#Gw7o%Q%K@ zP>wSff85g2bU)vhK;~RIJ%rn(R!ivaH*f4vJ?PBg&eSRLbCl>t5Xf&XL2-bDC1V^- z%g&#D$tOG4Tq;+GM%~%*Y~!*yLrnoW=9yjm*<=y?dJ`aIY0Uh+I>VjDyqt%#=umT! z&EF!I-AZsN$^Ss%=a~cVD*Tlt4tn#5%^7O8lVc_d{GZwHPw(L<1AIRj_*CollSq;y z`DQ!`GAttVm07gm+qNt0D+__GO6C|~+g4AO${%Et#`LtnAKn0@K|r$YKk7xh5b~v) zjGI9PEz+AR5?3kM`Q>If#hG7xaT|ADe6u3o+GDkH9m*;7oP=WCcRvZ`bYCah!J5^Mtz^*xF z7TDV5Cz<+B?y9PkkGT_f+2iBR>OVb>{xI&FWxb^$}|!&{WrsVUXa1S}8a!(D zO)ppTcZ+FMBkcI+mLNZ3cDe6AIxEwAeZMTo51Vx^f8F`yOVfAXKNRE_nrF#3RScu~ zj_ckdm9yx|pnlz+%rbSkZW;Iu0|GN4K39(n->#jQ=G&iS_;#94z#j^|d9a!^e<&eV z&l1U3b6MUjql{R-HMRN}{A)*XPBizom%u-gR`n@J{t!q19`5-?(*5}yTF9S$spR{D zJM7P(N&1Q9&#^xRck&Z0oA9bwhVD0Fx7!A6$iI>d7a4lcB|N%1n_Qjl<&NM*iurq0 zy5SP}bu_G0T3A7M3yRo&1WR(4`U@@G%P7bFWbpJ=xu@|xxN#PSN6BD*UCsAE{OSzH zo}jgYX8VjDLHvrgAJ|&%Pr%ob)Y4e?Adgvf{a5BD^#Iw;;WvG{{I6eNQxSMKkZ9>= ze|c~}5uwjT*T}OyVJzh%%;0;}vQiG%2QOVa^DT2DB9$F~>~`(-JIyzrlReQ~@;p*# zbN#>UX3g7+Gn+Nbg3X!@huN%oj$)lQYs`~eq+}&KxRzi_CAko4Wb&^WNcT?wnOwIWqn>X(S=g%=!Ok@nq8Zf6KvJ zXVJvK<(%)`Z_oEG;q>OJ+$RGQ6Qg!9+u5vsXUk9(eKoAX*@UbR$ug|ka%+v}pFF*TdcR_yE&AH>@MD>O ze6XaA(2|yHEHllTdhd%Efw8VA%=Qi79s8#CmX*c;Fb$|dUYy~!Wpv?xu2PH5b)2Kc zie!G1`qG&I2d!gXOdn~-wja-J9+x9xpU}XpOUqA#P%SwuGugKLE;n}Ona3LKtY>`R zh?ZSpGf-FaH?F0+n9Y;;u!2|BWoOiL%6pnAXy0Do&CRc`*~WjzdmG=BhxGxCOK{_u z%(!s0Y!6p`X4So?t3u7`uHm-7;ZtUl)$9*c^|6^|ui;g-*oH1v-Z|nQcDk6Oufqs1 z@yj$(1fybC(Xc<)Ua&SDqDT!#aTey`*=NV>!(abI@^KEHI;%!>tYrhkV6(J$TK zaJ@jRSkRLr;up17l{VKevh)X3k(Cwawx2=rmu-)#WRcx8?0vpJWM2o6{@^bFvX4$) zTNLXcU+itxr#TMF=k2f3%;P*Jg9&Qq|CIFnXGDiKzpQbB;|@#TYFIwvs@%HMq@srw z*bA1{>WZf26w{r8OlW0{&0RUVn^+M?!C;{m4`w0%DixXAy8r;!T8vDKTHhrhso9%H zZ4e$dIa7Zvg_yiJJEX0=ozFLkSEgZXoZc;~?gnB8jBxnbe8;J(tXQ%&WQME5I)6e< z1zTWihHgQ=mX<)xa0K!(h18B%8R^E{7`l3X-o&KLojTF#pg!}QKz1>&W?QIF&OrS< z2@YyC6f!Hm6+mq5(y4D8fz4X{rth~wWosGQyfnZs5r>v1G1&yoH{RAQtA4m!T(~B4 z0$sK;im*Gs$ANIpmxL-Ai~c!4xBiusLgBl|L4fu@5K!%9rkOLpjz9kukOKVH2(y0a zX75M$P#Y(%wH52|sUuLE{rNRS1B%y##lVkIe2G1qbsVB5tbO#ilvQH0ID(tbD$$f( z+c^EGtojQzR^x@jN!F39T9&u+c5ArhwvYcz!9f{{AShPBKKsl$(`ru7Rq;iH7zQ^o zRyE&R(KtPqjiJCbWu?y2own@>Tm!Cb(eCXTz3-HjG<*oVt-w zDUaW)U6=~4{Y;LD#q|t*%D#Jya)a|bUQ-rt9roSbuyUr?zH!JvVLSfqIR_AG|Emum z)T1-3-%=TDsvNRcBNC$}d!h`J8eztosch)# zd3hb@aXXQweRTBM>HIfy=rBCWYno@NmAS&Gjo>`8QD7TJ6{$gqV=Md#tNrh;woX~{ zQIAit_I1DX^@bB{ps2)HfU&$UGH+-+e;Jq9(6zCVw*09_`!;jv=j2$%anN+!J2cHU z68}L6;at*Nj7BjKplz{f$}b$eM#X@`WFJT{Kv_(VhyUBWu)=Z#C}kGHpQP{_J{BiptF|p&l@i z^4iWPqwc7-3mW%#by<;2)`^Y#bLvmE^3X^USvBn^`u?fExQQ4F7J>9q@RJFwS7!mZ zS+YMT%dLA5lDYU*tA96qjUl(H`O?2QV+Z@r&F16PHus)C1-t3kKghOXsaZ#!sah%h z*VVCfB~6^KCN8H5MCt zU3Z_8_M8D};~cLI<da3?(Si&V5_YYt!S`nm1Uso&F2{s8^Na(fDvSZ+Q)oT+_5 z0`hU@%uG%1^G#6GW_=#ZeV(6HxwrBcxEYb$g-Y+58+Si^Dt8Wl zVf8A16^{wOODw-$W#ajl>AiP0ClC`6%1^MVxfM$78A{}YZ0b0ddX7?a@@&#*o-wvX zzv=X|k%tUvX7203jqh&&Ay}VF;x=Aiyx{jl?bH3~)6Udk4lVr*NB&*5;_S$qOf6r*K_WR!4A8ASVmFFPc9BMJ!pjQ^PkSTOIC*K9h+w)AT zM9GixA@gVcB2u+iVD8=v5u2yJfqrozJjQjy!Ji$_ryu=@)l&ZZy@L3verZ8JIx@RY z!7uN zk#B9C=2;|S^F95U?_hYioRaL*WB=Tfp5Nx^uLsjQwM`?h{n4#%fAkZ;wSzq8BlS~T zq>uB9f8R6wEV!%a1*J09BlrcnM*Wly+Wt^}_OubDgWln{p#<&vwkqfo;jB9+z2rsE zmOFI)7-?J_36nT8dFbb-6k*^B z?tI+KP7UWhx78_ZD5l|!3Tn{0^@qzeC~8@xNa zLmj1qPF2dh|B#Et_uyyP$H+u%&$3k`!bO`0D~Vk zm_+V9%L0F!>kcjjj^VcUPD;$~tLp|P?JDCfazocdyfsIN7cqTFCu)cl~RI!}N zAcerMjQ8GI6~A*UpjE{eYOSdr(&EP#a_=F8weJD^wBH%B(MG$Jo^3{IY_pjZlH+~9 zedWPTSV=tYCXs~kNq*_>JMIH<4rD8Fk{vso?0bX+T;RQvbpurfHR#cIrxYRQ7`rGJGUql(g4YCtr<=1Q2x_krGNeb8qpJ3DchF8u} zd7ddHF{h8Z-PfG*ym)F=QNhF{lLmh~*t1=e+##aYj{qS0s&*F139q!wUkirYYkchr zsI(XLI{v;(tJ3||tV&$;&{_4hc+~pTaAkUJ^<%sJmJg2gOFx_D;$z6bjCk3yy=PSd z4I>9rKL&=+aLuhQZ9yz$7I>pK1c=*!E6864tBW!>*tOP z=Tr)Dk8lZxYMlmbmr(w&9P?3INq{|4m`GOwRJNHzKmt2jNR_3C%m}Eq{6eit@VEMP z7L=vSXkfU7BCxyCLnLL}Va;zja1{KSQh4szPic|d{JTlAHB46x_YM(=8bULvioxpY zLb~*5SPRUZb^<=IAKD1f1$kb-xv_kH-HZ(sm8Joeuk`E-+xSe zLapXUdFemv@+%UzbRARrkvF%Ra@NvPnYe(Z5LqE~g+!w>D`Tr=Tk%uH460TEh+?TwG=lumq4LJP*>&IHZnr!{tn~iS>@6C1J(-17+0BYw%2M^PZPVN)GND%^{KN$rsJb1{lKI=9 z&QPTa>8B~bJv*x+b^{?K`Yy7|@sgJU!PCsc&HxV2o``*xF*Tnrw(lk8X}uM*y=5+N z-#jmOnh;$#!#>W*s#tJC(HW-okG8tozN9+ql6@}K3DIXr1-(gCyibLWKkRpfkJ*Jq z;xyH>BFO@XobjSdm|}v@ z`%zS|MVDB=zWUoL<3C&=Vn)2WO3s6mqh*_ZBZ|%?sqNTwoSoe7NT)oDH1X5P2gcdK zy@S4_ZxYbFsFAi5(US!U=Hh(+y!%^N$@&oe^mtU4M(HE=FI1ldEUi&}tT{IsSvdTU zPkGrK_wwc%SPhIVKK$IJxLEk!Ei3KYP~QCbi_ZxBJ@0x~*mHDmV6$x9UFDtLVhhTW zdFx-TC9_qQ%w6~q=0C%JcBM`&GVET}mn@mtSyf)uO3^nF#b=LWEt*xN3M;)+SKA8t zbf4eVwbf4CO#4I>*=+kz9c!tIy+M>zta8L1s-b>)&3ViVh5-2R6r9^k2c<3)HkMuZ z5DSV8ptHX11QR=jvz_X>0|YuQlyN7(2^&83-B&g)=j-gYJA##Qt@-DfES0#y3vDas z*jy)=J*T)j$+@359G$qZJ$9$wI!D>L(?;33Q`C^C#XbF}dWs$)%1*5HV7LW~fOQ0vDOp_Tpjii2hSbVuR~1S}*JEvx@^2Z{OdXOwOpy&*$ls~VM}e|7n0 z;h!8^v>!(;zO%eUAz(MYXq~z0PLti~>rX$#45fX-O{WoqAAJW&r5;B@Y&p4Q(Y!|}+f4fjo)aP;aVC$E%E*#tg)?^%zm&`WAOp|A56F-B2TAw~}J3TrERe8sNW-grI-e>^I`2{mJ<(5%Ztb-jdCMD{qfsnD$!E zZGWA>UVrALymY76bd;4e?JQ=W%4ubS%}o7=PCs2vt9P#Dy(#cEwOd@K4@$d$Mz#mI z4pj>IV}|U4Ow19%X4>*3()zsT-NLn|V@Hi;biCj7$9DC?dK|M)cI^Y!a~!OF+n2}7 z`tw}+mUm}6P!Qi@9H!HA7sw*T3Ez0`KY1+8-Ob-aov7JMJ26_;{TCXWz2O?(_nLfX>65E4OggN<5o4GGofsgo`%bvAabNZ5{9bI#i%PKOzB!~T7Z2RUM z_kGSUDP(P}C%u=Gh4d4ypl3y9@l&>rd3Td-uYNw+)e&ZVuXgnh&eY!{U4OZ)f7#R2 zztL4tFp&zZedo{H(*{c`=9zz4-=ws*n)*#f%Cq{jAIze+X24NkVX{>scM!UG0?8wxg?K2wSoI z&*teX))>8fVqfyle8yAx+2;^AYXeF6N59FBw&ySTY=b zF71RLpL?eGI;$={qnnx0`7ivz&FGAHXszhZb!{&$>t<>nN5zG0r2vqB9_3}dOxxih zd>{|~Kq{DU=_t)$!+s7qGRnaEAEr_mRlkN4wAVIQ>JZ?o6e%R4H;GpTT& zq~$8yA24_QtosR#qSqv?rH2goZ?GRSWRh-TbCknXZLt<~k=%&#tbL-Oj7LU;wogk3 z+Ewp=|ND;KTMvO&&E#5A)yEzd<-41}LViC>irRV5D#-lVGBUjm-km{uC;C);n#u5S zO!%xb|3p}`bUNoF2}V*QB>2U-%pPrF>Gqypw1gr_mw*N0Q~XiC=rXN`4iOxax)H@B z`bCa6|7Uze$XV7OzjV3RM09n?)}IUw*5~kmlR`~i^$?u;FN5RVWBGlTs_c6H9g^#GdQjE2t`W2_VzqhixbZ-Oplpm;FxKz%rh*+Xk6W zE|f{hAw~LiSp6ixjLQ0nm)uPY+=`Srp2P5F{3ExqAXxuMI$ss%LY})^dD?nJ-$$p{ zWO1WNw7EtW=n=Yu>Rmtaf-Pi?3Fb^TY%|Ss6%rc#9a}rKaC^FiRV%bMYa<<>2yT7C zvJc-HVa|A&U}o!SEc!*a`lCtZ#yq;fr0v+7x~m9Hjb<7xP*A{5UQO@cSQh<0;aD19OUlio3A#*#q=3l?%Psp|L_tBK= zuz&s?=~BS^iH9A&(87dwGl!9M-TKK2h6VGWpXCC)ie?ElC_4nx3}h3?LrHW-znH9Y zIBL+7xPswyTDpu?A^*Z>h|6bHMyD5M)eXbHE@L-&{Tye_5d`VMF+Tw#vR~M6r>=3= z5*3791>v+gC~>$7E(ik!9U8aIu8M?6$})YU%4l+l$XT2H=u39f zFe_Pqik_QQtbU*#U$l?CRNT(GGzHVh$J)y6N4{CPIVX!b$od0RUemY1Uq!r2d1-S4 zUd)$;+ENwqu{mS1TPG$fN}IhqaS;bcmld|L0=Nq{=t4jHeN|~=grT1H0S_S_8vaM; zOoTk)Iy5Q}g7md=GVSe&orHiOc#h zQm={J$Cst2?vp{jrmofxW+wT6y@v0tXtglN-|O<1Y382uYyOOLEnUhTx7L%(!9Nmk z(@@$F%^AL;3XmUvY3qMvKJ{DK@6-d~d*}(9pO=BJ$ARsSbntyO1K$olKma~F)@<#k zS3eGDKmHYeo^>r%rCW0FJ+$dSN%6H=!FnkHI+RRp*?Z`wOQ-eI$uFJGZ`8=uiK&p^ zczbbIZBp^l)~(!JCra9mXjN2ggEmdPa#a|-ds*&K>!hJ$$E@uX6CMo z;Bv@@5gCC><~Gl+kP%QHpYBhPZ&X)p502Np9-5sne=OLOWj~yRo!IP#F(VgpB9khV zg}go z|4%r8@3IItp&=c0>egB_gKETkPec3au7^`$?_3axoor26_av_vK}P*-k3dpV(BCEIPTRme2H>s-$Gg9q>_KBDx)tIn@sGmFB2 zk?q|h!!qaNQV*d6XmcbYrK86BtFpU|$rg($ZC1zDmZ$B8!}&66YF@e3y4y~zSXeOc zk^Jm2NMPx-J{+7ak1lCM0L&^U?my=f*y3GJ5leX&_`oA9Lm z$qXPGvP6#t46qs#2U=A;#AV2JCskwP;kL%Qfz^o#?bWgCLzQ#>{U6%%q7Tu+#qp}m zAzcxG3|>DP{`b%{YG+OI%(^q+L~6&(SK5DV%$olwivECBw?iYul7Q9kBSc|K=6?KQ z-EZN~*|(PY<=yo(Wf1Cz-~6Z(>hS`>@b4}CAbSb{7Lb34oYO3dN)=d9Li=EH!gZAjNZXu+F|`}Imd`a)T{SX(oD$8vs?XAG&Xo3YCpI#x zy{L~<*(4`#NQ-b}h>YR@3i`v$tz|KO(+JOvF;dQ8EmbI6D-xKPmF(t z_|86n_=Z4y-Em}N|FVPndLKl69kf?Uw;b74B?j$kz_7(}{NpO(C#85EQ@Y)Y_N7Dx zT=t{QY0Ox36R^Jn$ufg;xVh7?32B9?_k~SD-6UB8t##z6^#`s=eb4C3K~k-qTq@un z=xtk}+<$LJoJ` zVGxNdEPEK^M5L)5@7h)Tcuiwev2JF{#$CR2zxTtlZA;oSkCyeQ*R1SkPHa#iwGQ#o zhy}s6gl|!M-H@vIMIlF@b%Uz8>Y*xjDKl}On~A#^X0Cx<6-qJ{+bLgvt~s`j3Ymz< z8vism5li^q?4PQ34r~JUqn4e0qrHA?ysQkUO3Oy_*PAzw%3lFu)WF=6NZDELwT!?< zIf!R2ADH^x*nXC$6W?|N8S=B?WE{OnZLqQ#vv{vL8K!3wE!DayJo6My-{1W_GkvFK z=A*D1@)Nz!P5mgCIHA;B`-Cu@$kBb(VbOQ1qwm&B816)F!Ox%v&1bXcjRWc7l==hc zVQ+dd=_Hq=AKm(LBHaz>0~W0{7m{E-VBr-vovv7GjkLr@Vb>}+cj<pxn zkaG9RL`{UGwyoOY_uN`qNj%COmC-_;_o?G(9j-q|1m5Z1Q9%gp-VxUAnGnOs0!>AO-COGp z&PMGTW6gL#2vxORvKj{XrIQQ2x%Tv%g@e(wq?-n>ZpwEs*bIx zj(4vfvRsnkAF5-oRS#)NR^b5rE8*SJ2PA2!(Rw#t!_dT_9SCKe`R5-kmDCNggYJwX z!MIP>a7;4C${YZ=5w}FDWevDp2JAqyQgCBvYMAA~mM#JVOg3lu`He3HC*#dMgox5`gVx>tkj=u(c)P3Jg=-Fl$7=5)2wJJEYq5p`eRcU$&mJ55#wrdaUleLvqd};(e0hWE z^*z@?%Ta4(esU-Vq_$t;O6ZtJe5_?2<|CNLASyIVUy}hP_a{2zA*+gcLJ6_8z#KvU znnC$w2jQEiPU%eP$<)aI!d#$r$6wy-;4cx?RijA++&13NOmP~3gt>5m?(#gii#P8< zzHt0`b=@T$tfmL&$vQ6YhQ2HJG>-ykZ|*I801q0`_7WC_$`;eLJi7HL>sHjVeuo@h zj)6?7Vr$wS=76G2hlnb1aJT+CpA+Jww2wH+ z#xPeS%;1*PiEz^%@V)4^qntQVzF~VgT|V)Df#A<}v8b6u-D|6`Geg%kj?A^xSp{#c z>7{A>-+MC4)}!$`VrQ>Xk!awG_{4D#jr9PpTYbP1WHp;k{IUL|&Qzn?tw<4e{PC?L z(~#(=A$@;miMy{k?>RTuIkKkxz~|P2X?))1taK6L-UYk1pw;gOkO{nUbcFEoOj}U^ zN!zc*iXDAE41)~TzY+cuvQT<+ZzWBiz#y*ho4Q!4N_DM{EiaF5KZ<+PUW1;>UjnCD zB&)Le6m#hnMO75bw`4C!uX9^pe=-tIn+@q{9O>63Nc2?va>n*zC zdf`v^&y@P{3qyX_iu zK9XE%FsD7>VXVy+U%0V`@qm;5d}qIz@nf5R*-q?N*1omlCoaFnZ$`TO z7jNf#D1!K(v_bdNpc4;9hN%cO$6m#^y5m)NSEJb zANh9w`pF))B)rg{;4Q+gJg9%~ zqq#6}!|e0fW$dQsmhCxyyk|(gVacfo<*7R(%#(LH=t)CoG6PiIMlfS`kX>;$=bke0|GsTC}_^!|AB2Ul0Wrl9wNZ-A=%Tp13@j0l7xmwV`j8Gwz$>=|@;{=oOC{hf>j z2k9ny4Y)$6u`Ds!E^d3kL9}cqFJ06>ujy|j_@^NY$7@(7!l%bb^NfH|M81kQFV$b{pcKPM%?6w|Vx?^)Wg|AtnC;m6r$ zOu(7oWjkkm&ySzC9BE*L^xx*X6z0`JDLq^54A+>U*}%2Y_?^Vl=LuS8LG{x@j-&O_ zjBiHTF+=xApMXVZCeSo(Vqd!py1+PQJ{y2v#U-pk2M)58uWm_?GN;_@h{Bo&+ zGjs9yx&&HufloaNlScnSWv_V?WB2@L9$~CwhV5j7s_a)Y~t9=D#mzgQyyvDHvUGO?UX4W2xAF{sy4qIRut@%{X-G{8f zPWcZW8A&Ur>&y8I3;-GU6i~f08>rm=srSPnBvFz==2Q6}*nsa)p$NeWMK+wRyuX*z z$qEf|K||bQecM5JdCRj4F1elw6TBCLG#f6%mJXYxb1egXxCS|ibA?%E2#XzMs7d^9 z#sZt&=NIrqyX^D`qy)Hk1*Jzi?*E^kr}KA68~|Lb*UBH@^524p;>Qy0*2cO zq4f!L9iS}f($139`)LO?H$S8;2lJ!Y@{o8Q+`lIy;H05KJy}VK>J~f#7X83wDI3uv zDaz-_m&hZWG(+g78ikMC-DrzGn6y8)PKS5<*_)~C!38#@4)C%+^W)Fj0@_DX$W95fI@_>Jf2eFj@X>PQP3H;fU9vm?w$%%*bueAK2HKw8?9aFN zF6kNPtNHelKSn$4X@&n;FsSxKW`+s7@ypK1j2~R2LI&4|iyDPugmIzT+^5~pSngLB zFmaH^Y#x*_-9K%?R`NBS8L!|XLzY{j0|n5tRr6vqMFPM%kRfgp%H8}^i^-O@<2rq( zj21FvhN_B3YOznO^5#8mTljqTV5;36)bl!YBmURH$gW-2)|EHXA5r=EGxjqmCjN{g zFrHwN@#(b+Tr>CcnLW}~wXu%viGGl+m|NZVbO2h5H(xDizH(iV2DyX=-S(gWzh)EZ zZ_}9#r1@c(MNK%cJWpbYX>SSqJEHq?W))K8npQEE@nIP7-y614yf)m%=e^jO(r@l0)ta;GpXut?{*hV(|h)buXq+0Io>byOq>4PD(_-sq|uZ$4t`0?x;i z)9h@S_$w{dnsqK~eLBm*_fU{uW1e;Sm*^CjG%1&F`7__svedI|bO$w^-D-a682c&d z@}`EW%xQoEgAr+`nHLYW0-g>=#tYzD^Vl60Oz-=&Wo7!_0T|=WSXb?^d1PVg$Ny9q zq{2dTrpvl^D_PRjw0?*`+g!l~WwsJu(AHg%E@fV%h$Vp$CjU;G_rd)Edayr`X&L~> z^wOUy5yE$PI^sMx#A<{p_-6*|ZzEq;vKeI9o~|ClilK9@qx8Zk6bF>+5>Nk7XV1 zjeyz@NZ4sQ;BTTlyCSyU-DC4xDvl2-qR#f$Vq4rP?3X8l<;oY&yx~vNZy40@NLBW# z$|YNhUwCBQ?5-bH4kdycd$xPaV;n==<_}%V=8^XYg~1H_G5ckC>H0gm;BY^IU9^G^ zPC*VRUEbjHyk5`TG8vto!=^<&5}|0I(A@OxE{d_)PvceC(QXAoZ*ME$9soUC0}q~+ z3q=XJ<`ZIXYq0ZDucA|l2|N6SprK&>WQ(%z4Vv6dDJHh1HjT-6DZ+!3<}VxvJjgY_ zC$9L=q!w$a)6TJiKh?pfU3i~4`xJ9<_VEn*4{YjZX4P{}QV+gikt&w^9sVu%x`4>* z@hR@OKl5H24_NPY!5!Op}t@WYXkHI~F#WMP;&z%)ltWLIdPVlAf7gSB8L(s}s?SbMiFzjsan&j{v zI+?~7kJ(cxv9sEHHapk{u3L$V32S~LKST~zAHMF=Ca2PLQ%v(Yj#QgxvqNOL?{phL zX^E0m5BJNp*S%#8YwU!0KblWE@LTy%z$fdw%pl6olC7lcB(q&uW}hd8aal1MUV1GF zR;i7w7i;ugLqBvYq-f+{EEylJ?j_og_rR^W1&x@|0L;&k`=oqf%~bOU9nllLG49JC`8Hv#68bQ|75k;PO_H=_zK4zjol1*NPTt59^&ct_Fe+3P()9Uft> z|Hxq+nnu)KsWwW~2GJ7}WrabPX5)9WA@`TKIT-wL`_-UU@L>9Eor)!FIT$<@;?{YS_>>wJGOn`y?BkP2 zE6-R5_=Ux41lI;JU3eKt4Ninnv4QVxx>=lH{Q03Fa@ ziRGc@*V<;(FrtLIy4E(_CNdjBl)z7L!#r;h|F`2}xnV-E8(>aZ8#@~pacXfYQ zBumC*q}^sB;_en;1o(_sLV?r*teYvgfl=Y-Gr};r9}X*C1R{1$DRA3T(1_hSluTqF zB*`Kz!NjHfG7}0-VZ9X!r#^~UnMW_p{8?h?6-6QV_p;kI$QjGZ5LQ^e`HX+(A?^3dQqBylU}X;BFGP$ajNMr4gC4gRr2N<*uz%^ z(8j0I?7_4h6_9soj)=O6;5K!6xHHc8YjE3<$UUdUjw=cAyd-wK^A%Y#?wD}=0joX4 zpRr?NtpUh$>#RwT>qieZ31;uczm27D)p9rvRXEm(JLXzJF@7bjIb;t>}z9{O)VhspyN%=!Mo) za9iA(;aVGxl7XPP4Qt#rE%uQEsb-Wvzr1jT<$n#=WcV}j5^n&#sN-2C`)35vw*0qn z;+zpbm{{Mdae9}D^+&&G`(k-8<2&+f*x-a#8T@;IN(H-Rs=j!GdS)NZZQVHY_me|e zM}~iR^L|6=4F65!{!Gs7A{OeO@i6)UYua%Zl0goVJ{FRYZ$SZ^J7`LBJM0Ivph1`> zz!LunKqAxJI>nOK{R$5!(sJv=7Eu+nT4>h?^A{1(eCWqK>Wa^wfm9$D3v)L{XyV`H zVn^Om#&#LJUMs$%n^yJvSV9BL@nFGes}f;kQmp(h@X8> zrEz!1$Fjw)!mb;LV?lRV9K=aO?tZsK?s?w=cFAR?C%XPgEQ(}KLjsCanae8%x!6Di4r%v%%Z5ZHmPq~B9?n$J=^s^W( zDcwoeSU8mlZ?%SzB zzWPS~NU@HMjFs8tYC7rOOz*@Ww){3T^>=nnPko{p9bjLVUKfm{jc>X$7|Ds6|HTaF zgwKc@#o!S{7ZY2n`t@ViuNKq`mM#UDhVbCt8m?{*l*HBPPStCK#1S5A{B zyL1J)R(v4yW-+jC>d#QuobC=nM<{hxrb`D5CgX?y>w6vjD^AAq zXPlOwttBk0(YsG_)HL)mv-=CqDwg%V9GQW*&)knrBKUo1hc1;ULfLW>eKW$tciv;p zGbgXIa;B->=Om#{p&9zT=}}wb#tE%(2BW$90xDT0<&J_R<}rSSW`- zNDKJyZk%>pntvyT7fhhl`F+}sMxGj;=U$MnxK>SK$J{M5^8=0RHB#FMthPD&o@3D% zQ?11pD{rlw=f%m_i<7StCtnlY=89qIbEy==l$d||DvukmuT^B+|H~J$6{6oQZ-7$0 z)7K#1i|enoFLW$5sv}OllV`fh?j0|E$OX+Z7dm@ES0X{{xHaLDThvr(fxs zsXcAL-u!bY-hfQGsu^74o1Oo!>x36>IFOua>`Q1xr~JRU{3FRfzwMBJ@GzX7hZ7No zCU#o>ZbjIhI`SQoI239-&I~z0@%VS?1}9F6x+t(#DnYDExF3NlnddHfBi(o zg(NO|qTsjv6M94tA_~NdKYdXD{x*ubc!LP)>mI& zqmq8$OcMD~#E*@u;SBw4wIrj1-!?s~{wvY4?cV~RiAecw5Wvp8GB*m0^67+3 zYE)D8Cr8T`sjR|XSb@TrL9V03FR+E3m=RsFAYFc5ro58Oi<$C2cIB1oSQ-d@MSGLjD+~ex5h?Eht|sYFt$8Dn!gGW^_wK zot@6Lpu08l3jDCm4L7mV;fXDqOCx35b*N5_&TZ}=fL zJnIa?U0ZRCc~ph{g<~w}P`!vJ-9Gel4oKsmY|bS5o`!64da!=aoLC~~tykFj48k4s zU_i`cXCKl;j*Zx%vpK>*MBAgZYPS5%jRasuLgugE;1=T`=eoCDP9*5bm6Kqwvrnbt zSR2*rwaCX@^D(Oj*Q!jSeO+)j1R;=u))%A`@3#o6MJ#5IqXvoFQh2<}#ALe_osp-h z7Ow&LC%d%Z9Qpre=RYI<|}K?jpaWmL0)yEue5q-=_t% z1v^8K6;;iB)8P)99z+mEQ?QBmsP5!dkv#MM7ilVeIWtub`{3xese?a;P0ueYa$*5PHx6XIG#n+2yuXt80tZlTv>7 z^j53()%ZVD@ISacGUnP>LzE!(wYEVW3pEs>G=$j|D*OzE1r>X~Z+G}_?H6oZse`?x z1~yCxAC^RIDpHWIFv+!b0|YOG{boCKUGj=>JeM~-p|55FQ!}E#%Dai`#v!V?e z^9?9FGzlU}NPGvE|IIPULL!YO37ZG&6q=Wjd4nv`_m;I6aD>dCH* z9M*u-@#h&t4Oc69DK7Fo$oU2c9ew?c0SsXD^({+bu$eGP+dz{Q6+1+kthQrS7ug6c zl+aEPTod`%i_RmviKs{~G90n}<^t9b@B`d+KLF4d$Q5VfJdp;Fr?5tdnj{U-WQm%D z?^S3MLzZe-J)}dl=qo?ZIe5$C8@Rq7a(-=+&aZt-@(`6^>eOz6MTFHzZR2)N%S<9# zxXR?I4@>}{a$8!ud-|YRXvgo|05`?N-lF_fh$&+M|90LlW6sMObK2KTFBTbRSIh1~ z>&U~>?`8n~e~+KV{p5-Xm}!IFj}XWaTq%7sa)K7S-0yuC0WY5aE&Ee&x&0aRZT)0# z1{Ge@*Qr9ig+B<(00je!;Qx2MCFCDSzq7jOO*gyMbA*oTpkGX~`OD;Aq9Hb8gZzlg zpW*WF9fTBO-GomK@^P-y_gB08x~KTw+Lw9+`Gx+?%{SOtXqkc;<_dMBiz1N+QOv(Ho7{E*a@xkW0|c9Ns-0j}U_@~^S}vkO)5 zM%60*ZT4f^Gw0mEpK+ueaaZ&hyDQpoF^brC*IQm4jNg`%v>yy&8EB}5F)1{s{Hrqo z=~!oB>a0U)N2CP(p#S}_V}Eb5f>$)sf4NxLWe^vOqlN?N}11s2pImJ{r1aIDfV^-;clG5Z3ZRA3qx&r*kD*snDaD^x0fSWKY%BiM6~`)JQu1H+!aY zGy^1z=O7~&^%8MrgPFffS!tZvGgxq;SC~Oru`f;cIm*2+sNhbEX!8w%Tc;BnmktH_ zj=nrRfmIv=mdOQ%0=Ps@-kwjO0tQRRjP`8NZ;iGcQ0)@Ko7unCJ^<0XTg^kKTSk8u zY5Ka>?D&}a61mYJp~k%J5~lnV+Dv?+#_*}o_j#6s>d9(e<5ZyP)58G2=QV&|0-Ru~ zQ+C&d)8W->brP|iF;=q?OfQ~usg^Il&iK&_VVcY^^s{?9ey}_XpTqQR#Ox&)#1YU* zK;fl#C|5j^@uPXYY&@WnL?mJ>Qg@2Ylh1SlF&?1*Z61GrJ)d-5;8EEmh>z5Ak2VBlu@O&%AW{Jf*#C*_T7! z+(%W(%k6i#|LiB3mrkFwT|x11{b>}%=Bxi*(ez8_qNk_*pY}&|DcMRG%Fa=~b>+1m zCe91_-M^$KNjmQ*F2=~T)8FukqIdiK)+=fwvwjHp;g++tjJgy&A~-z@o45NC(Rc zqcuWa^dkltRv+)V$v?Vk6Hv8^Gd(R)k1Jj4mgsZJHwV=OIw5sYyLZ=<448x8R(8+f zDzo|KYSjp50*Q7K#@N5w-p%*^w71e(k1D+i+$Sz=AzX1);)?7_SX8W)vt|BbIPCvSm`iY{jC*`=iWgS{+2#wtSdfO@T zxzGkygfWD5aPA84J@Nwx6m>;YUp{%4iP<2&%yfbo2+Y~#A6>C4qK=O@2__=Vwx%tD zUd0-F*__N%?5QO#i3qZv+S)VK#)ltsfk)6mle^hWcu7OzWOF2BqQ6E>;B zFCD&hw3j{g9M-ygF1H+3t+6ID{ovh6uB)5UuNuX9@J60ja?%*W%zg`DIJS``kUx3) z)7AQY?j%M*&{sH*Y#HV!p5;95Wg#!-#w)GVwRbb*Y|k&giI}3H9&dVl8(C%U)oJSJYpf(Qi&-%Hw<-!p6)Y7;|6xxNCNLv1X2Cf2lh=*@da} zo}FCcwqVwP%3wK{LrZfqX+s6E>BgKYn4t=?zt9KVOlkLQ-X-}4k}G31k@5w#Rl2U^ zd$2OF&u)N~*%qiH5{S*zwxDwz*L`Vzr$)k!4wCshzaAj}hdZA@+l)79F^*&$FZ`UF zc1t%l=)gfuu}N_n0}z7!FeoDpgQz-ecI-GjmfP;@+-~|gz-k0mk*Lubq#S;&Z~L%- ze|=gl2t<|Himy^tnp^%+*K9@o;&7l&bre_NAAsjnO)-Z^_akc} zhU{zW%hhFD05qWBH!z`e5mo6NmQaAWo;dm)iz6;_*8|gui4gL>n!ige!%MPx~_vNsIb{6VVWlhu4Os z6BluI%17ZI$ZjGYi%01@7&MB5?h=z6j`PS@F$9q~5Cnz2MRi3*$cFtTinP4P&fI6n zgDoIwJ{t&jFKD^^L=>@QomtEyh)(NJZbEMV@Q`_s(nXwU%6GqR{XP#Q9@77Q!fZ$X zndQESyyi%lkbfSSsJ6%R`0QT0;Gd-}Q*->-Rn}fRmZ5$P+J&ob;d}r_F!Zq%Q}g^iP}cm>BLd9(-P4$# z$o?!Z2jku`qU%05WB?qyU(iXFZIAe(eD+z`g=N+R0Mq%dwGnZ5;NS|$%>rTzK;XF^ z&wt}XrbmohOEc&9m^A1pQZlWC@PDFJ7V7AS=M$BqJi0BQ+TNntK9UeBP{ao&MY{uo zs;8dLiAyGTZw9N7GxFzGwruZT*&SDa?cu8K>mkog!Z7l=W6hhKd^CV7?WGkQ$M0eG z;T`>T+J7(f7BkV#?w_`QB0oSO)6OjQbLx(o7^~?L^K-n#dD(AIjA4Pxn#ewHm-?eQ zADl;&{^SC%5UfrxSKAwN|dXj1zK6My~RYvxAb?p&Hedoa;-4&q!x52EjVAa zg?w{4)*o}LtLKC+m@K~nRR!|jf&-R&yB2=uADu@YoE`aoRM&r98t}hwbK+8rzZHnQm^Y4Z3Oix;`$QmG0w8vTPsmkNqZHYq*R*ce@Ij6y$qA zrhhZ$AKJh9MDOkpWNiNkj&cxZar^}fF(&3~Fa>YJ4$bCpXcD_RwSUD{P5|Zz8=)K2 z)WW~&Z)g`q<+Qxon=6uFe7uFv^FR{!l00Ec{))d;;}??ndeWZ3^L6S2*EBEmIyuwx zaNus{hL$r{5x>35jPLEPpm=EF7{T6WO(BQlL{(W~jrw8rs$2EK^J9#aKMrzwI z;7=;1(vR!=-QL#={S~-Awy!;I&*OJB^%S!G8z}~utd)@x_OL^d!lBJ8sOv@eX4Z;M zxkEF#2l8IMx$zec(&JCWBX2%BdZ2$0`pBF2OJ0#n3R(UnpA<{xfn#8U)Pje6bb&u- zcIe-fs{cA-6MD_(+|{=#5+((kvbp>;$7CsPKV0drx-g_XKmIj8HXD6lSX+NnLMb+C zr&G$>kgdUlX7K&IFyxo1`l%tBUWxieg63Ir#S$f(f*fW!>f@Y%c1*?G1IWgj^=h_t zCL3$kOQ!aBVupvJC%})|2=EiplBE6QnMK7-7Ae9*vBQd%RNiz|RX6k&@$cxqE?y#P zyIS{`Vn2SqBJRBBNACz_)mL%^Dy$Q_bdpIb)hI099g?JbC&z$A zurQs6JNU%bcdt(bpDGrls+f)BV^Kv|jfz#APTMFalt4N28Jg8~1xQ5ZE4F?e-&s{2 z20nslrX@t0w`diATGl1KzL?O~0Dp(XPiHeFjUPZlwhRcwYPDR4jxGOmGj0eSS`{f& zTTUO;hQ7A(=^%eBWpGMEpU0ghUJw@+qTn-LL+(y?i6O zf7DcRuzkLltIH5$01_{$9I~q-R@FZozcnXT*S{#qaP=?t+p%i}%zo37Q2=0m$ldXf z;hvjd(exJo0<-K+T^H5t@^2xZj}H`-mb}xMECo+t>ajFcy7~Ec>dMfc3>m*yccGc_ zTDDtoJHg9j-9Dv^FsosO7-yO&BAo04X9-)pLL>&3If0~z&aWqI>DLQ~wiEwS=1yQ5FU_9a~m`Sl$h!Se*%b$wA z3@WNXKzlOH>Mm?YiNu-{#@JuTIt)sF^FN28L>ILmIzb(NE}acWO>ndRG_Y?H#U>2 z!Cg1(=UG!gUe7!~5!>1&J8RvJ==SXPHL?Krz6WV!ox{&a&L*@C4$37DSI!ht1kJ;1 zx(Zx!BtCx>@B(7*whQz&RM2-%#s?Mi5PLhiuYGDi=r)mG$h$ST?ew1Q#Uw|2eA^-z z?U?WOJ(%S#M_}Md8twosXU$+TQg@HJ-efQb>I{iWq&6tF&4Yk3QPpvvqw94 z)+^QvK67&oKio^k71o@8)ZS&19kQQRV?md!Z8+9#c|`6-G^A&yXzs;&9zu4CY<3@6 z5OYV7=C;Dkn-^K>S)Dq$K4Za|p6?y}P+B8=N%fvVkQr>R>HH$mL^tfH2He-xYU(*CeP z*8dA4S=%K)dryl-$D8{jO2zZnEI%e21nRin^^kJJniCU)_OAfHiL<$0x*=~}3U|8p z)l#y1#z@34*P9GZ8YFsRGS%L1!e?acnzqx_uBSn90&@vZ@Dg_;shuBwnMiKtkLho( zKJ0J*ZVOS2KK!;Iv}c|8Mywj{g>|F2oVI%0$oNx zJ;+}@<=a*w4p!3E$5gXhj!%X4Z7XQa&RlZ-Cmzur61l(Q!Tk2QFWXn$ZtLIYUwZw3T4YxGOXx;N)!&n=w3FInr!789R1! z{l}?OLAh|7XYvSHZfTGCk(zNhs_Wp>8lQ#<0qunvr{`qVT@b&xHlCHJ`BLrE{1BqA zS~hTTt>XjSOR~xBU`Dkq5XdD5Jb}5z6Pc0nvNp9d($hoBTgXg$D}c}1Ia9Z#X{7_I zjweSyUq!`Budkw)5sK#0ZchOw64XfQ#)7?I;dYjOn54lWimE;A>yf!R2$d+YYX;KR&i{j$D2k zIcW6^S@iPUv=wU|z6kd%_g9H!v@iGu@s8D~;FLT~l%?F+d|}?FHwvlV7uWl9qGdxy zG8tzNBDX3c_e#7zCcJr&*GJMFG{pTgd~AO9e0=H-#2OQ^#0d`w^L;>X5rZ8z`(ew7dkv+`R`crsjJA$aXG(VnC9FiE+=fhLyp;gf%r$d z{@yR87mgj!aMI-bjr-}K-~WsMm^W`Ao#+FX+LOUDm;l#2*o1@A@gC zi;(%g_E(t1h1g$Z=yOX4_-p+)qjskCSmL|33oMB#e#;D6?_BT~D%ed0#h{Zb%;sK) zxFSmEi>-)XP|Fa8N?YrWines+{K}gdo<3_A*pv-}@tKyMyylq=!Msha%rF(*4>TT9 z<9;CgXu7kPV(~cVqe4)s_>9q|np0Vza%l#Y+=V*Ko4ba^99tnhJ<8VtNI!;uyo{NN zoJ&~g+qvU6k`-xe=k#}XidLX!RFsac_2%wpA7;VBMJ3cL&KQv?yQs0OkptuM(Qih( z8*ElQFJDb^Wgb+}6dXHS7&mW``!a1ml3b^qSRXf#wfc=;7PjsK)-EmU>6J@W(|tC# zi;Tmp6@JKjVZ}LTO(Do@` zS>7+3L)KNX_Xs6vj=l^!uxfPBRSlipywH*sN$Kbc(KZWHuOiKPPra5bUjRgQEo@`# zVVlj0B#ko~77qKxFzcb9Z@cS>W8_V<=)51bD9x&$idR`-$Ih3Z&1Dat5@*xNKU|uf z6+yokLvzTsY)G`6B*z-AS=+Sa7-DU*cAKu1@$>d^<}e44qP-~DbQGr(`QKiptyr5& zGzrQ#Y%AZhZf8ZI(9y8_xX+?mVCX^U96PtuWGUvE|CNk z-X3W>3M9T{?DXZnx45dyW2-A$QeBBOdY)Gm zzn)m6IYk5`E$Ugm=gsoL{}!0*KN{2YkGkOs$n7J@z+Y!D+3Y+@(^7_1rKJ05%7Owb zkz-OX;aW!H!~AFqfYO@QpJL`@JI={O04>k5=%&W-*D9ag&V!E;9X>|{H;I{~7)whYz*WE_I1qHP`! zji>iR_D!rPeZ!kylZ)yPTZ1?=B zwT&}wwCkJK)WWC}3(vAcdp+|j(jWMKvf7`>&BJ4~-1c{pychkkvJ*Yg8@6$bcKC|L z(i?gXMGCF8Dl)o)RgcY_6(T3D023>h=fDMFHac(>nScy%!y@PS+9jDB+B}aMa-Y)# z!ME;3;E``#vwjolcO;5le>q5^=v29dFt#$X_7ioX>0Vm&7PGgIoH)0A8jE12d#O0p zMi$f+4On@>4QiHKtFq1Kt-?W7(E#6jc{L`L3NQL-7wg}V=!sq(o6d{3n7uP^@p`eK zB$bF?BYWrmR2AI68elal1ni$AX0Hah9?1OFSVKY3Bz0MrTV)u8Y2SU-9>PVZY)ODFxyi^@5!)A#xAdpwdW z^9~%f*IM}g5x$r9a%~=8F(!J~m^`lEMD9h;%kt1#ry66iDz z^-zAD9iPwZBWcnS6Y2!yq(2_1lP3dYr_l$b-kh;AXCekzMyat`Fj**L=8Uj!lPm&r zKbk_h4=HCS5gwZPJIXvdv)K-3v}|OFBw4FZMlhUCro&W%X%X`l8+Rb3poI@qx`&;g z`*BxqyI9D&71otOmR1hE1Q;uL?(i66e~-Y|2LyyU0A<*}7XX1N;BtHSbadt^nd$icmokVk^I2w}zr97T@PW23SX=U8bw zE^p%FNI*V5U;M|FG-t4pOWjxB5s1|A_boxb{rni0f4-buLVQmCGV(!2*z6vO(Ea@p z{8``{*)kjmPf@GWzRz`P7+{Nz_ZDZs@)oa3gC!;@W)e0!;fZtk^Qr@+ zOEWcv)raT52bS3qSbRHc*Q%os0lJDl{L+11^fc*yc6Dayo z;>{h!{GueMOgWNobEnnSh8(pE>-e-tU}dWNsaSGftNm@Y2IvU; z_mxh1R`UN>=~-RK0Gfs*Bb;;sI9k^KbO~6xu;x~8(MuMkNfe95`eQW&2FTLVR$GsC zA4V3qBFfuKo<0$3-6sV~mP1Zj`brH)8FF8#RO)12SLKv``tsB7Ku9@NrSDGJ*|uPb zWJ7aCN>hF>uE1bsFfY3BLels}|3ZZ-9fx0HDNhokv+Lgz{iXWx&X!%_*u+5MFb_lc zd!cA6P-*0y1dUhqT1n39E>tQ?g=Lyrk|vQOjHv7bd}B$_-f}_sdaZJ{BAs4X`&oNC zbe&g?r`_GD<-8q`{cK0J7yUIap!fPvReVz6#ffY3v&tL)on1GOzg>|1wZ2-w{Cj>Cz<wwjSC?cUr?YkcJTk*^_60kA#3N& ze-cw*vD#1M4yJ@42${vG4kUy#2`3Xq%a;G2Cn*1b14=%TiQKO35J{1Uq{$qv8U5Pkv}C#M%x^UE_FWj9h8=0zquvXZwr0&y_x=1yf}hW#?#-YzZMNCLLJ zY#}HpS>_?PnBO0TH^8@+ZY_v(~DsZNf>~8y~L;XR-JdV}@h^8nD zTlc27z583RWS)Re#b7gB75qQW-UL3X^7{WzAi;pd2}(4AN}^Z;Zoz6x6f{97cW_4H zQjO9jRcmRhEs_N)sDXrK7>AD5wzl?L?Y@8ORzJm)#vbIy4Z#i@@2B{+P6|5M}#S3f1`6a1m>g=e!bbl3~% zf7Ud#P5Ox!dZeIpZOifg>!(?LXDb*>n-l)!yzZZ=x`z8}U7Y#Dc;rD9b+-(X zA~K?5N1@CfIM1B`l^E_XcHfWq6qREO;CwK_U=vUM8};XxOpd>bD}Aj`@Z7pN;Q7i7a~Um377f@O7 z&>qdLk}Jx!ofFn}Tg=8}Jr5l>UL2XE}8rN6Mb(x+h{u@EAyYGAA(((7lZxOk-w*e z2LvA%`w!%b>NA1t?EgO=Kq39`eia8dj(_C&r$8i`BSEkRnq7mL-KxiONU*@-64&d6zW;c#?%@m zg4vApJ=8CS(b>mde2l%p>5b+*rbe1a(XG`)r+lhRX+O(5#>b8zdo6S(QT!)Fct7+j zp{Rlj>|`K=&x*fhNQc9U!&l^E#eeBPrudzJzj~^sN%Y|YK?;cA>9nc!3}>}ul})!7 z{0l|H#4tSBxYz0uZlzCUk|fC=*&G!C9Vwhr78&&%{@>xONo zB2vq7dy#cy`fvHBQ8gKGt7Rq|5s4}9mLfv@hQQ&NF5A|fs2@FsGx45z2FavboeI;G zJmQ&vlG4lsTy`oGu=E!;0SpVWY5ddQ7R-O6(7{)rR{)huKqMfeT?K>ASZm9gc|uf# zqu{}>aB!^M?^8$8svNO|3I5OUYDo(Ie2s)9>IUM@#SC%kWBK!|wklL-W$G*@KScv(BlrYW zR3?gE;kSub8o9KZVnfm;n72C2(OKerqLE#_tIG)1H9RMA&%~8t2^OQW)eU(k9wTnZ z{^VuB7?Hov11tv*EBnNa@6p`&=yr*)*K(i|3-AqkPL9;I{-$7RD$*LKf0A_>=xN@( zHJTBIz-)EQ=8M5TBD>9GMfwPTcjnr?TMtQcyP(Krr1S$AxLuXMs||OkdOz%LG9IZq z5`T8Jl*{V&&?skhQ)z{jc94#P{dG;U|LI4A5vNYwf4pvdi})azzs&e<(uYhv^JKF_ z0t)t?Znc=+Q!-+Q|lK+eIt2iqVigQi1%m4LLLwS9z z4hQ}H*&~_${#W|Z>-qGhWBkQz!56d)Od@}$zD5za!ZzdrE%dsES#x{Yg-o5Phh*1^fsdMGpjWgt(QdcMLaP1epH}}oTxWSza{->F3BWXzrstO zqjA9zJF0M*t2$jlg)jzx;o$=;o9@F<=dbCfb?P~Gx&2|*Dc9&`Js6c~@qXRibEiUq z5$KO_^iaF7teI+$%$#CvNSp2W?_chw6DCs~i1p%u%GO!9Rz)>9iyBh-zg{FDfVf6~ zKy|i{sjw#fGyCzk+k~PWrtbpJ)A&CX|KN5cVfL{K{AU_9Z^h5DNiNJhMZM|XLpJMI z$Yw1HkT~Z-%0Oc|;c>n={t?f~6+=s^1aBTKCsDN26eq(TD{I40RXvlclm6`hEp=Fq z6bXOZ&dJiAxXV{jL8n&UQ(6eG!r~1^7WnUB+I13IOxY`-43568c<4XouV~BU$AF#N z>Mb`PlwyA$@E^`W!qn%&cfXp>^!CXsv()B!S`g?;(hp|IO7_C~e?a~6PnIfMr}|fP z=GA}l@2OwYT6Y>bY+wA1D690}X}i8;1_IRIa+?(I17zTj=-pb*a9xr%2E z;3vNUO*aEK^tOw+Jq{19X%%=8u=}~ue?IUZuJM0wGK0w0{-l35zBU2rkI*%njMOzo z2wng38QVYumTQNK7rK*z$`}7loxyMU=yDZ(vPnsy8(wE&Ey7yw` z%U$UTe(=U0uiw;c#suO_K9ijTXqD`5=Y3i;@@X=Tr^@yx{dx1FVP)nAHMhpbatSr! zpR(iwQr$HbVc~7%pzQGzcv{eUw7qdA*Z#1jK`sI@Tf8;}7N(d@MJl2)=F4aw6z}W5 zKY-#}XYM=gqv*W~JD_6|_D zM~HOPfNgU07=apBcgwLXkb&)wS=tFi==kxYG!8OIeV@6Pf$s~9_P@06C35_0Y$pxh z--z$FqrbKHH|Y9yA)LDJsrwD=0=Dh%`i{}3k|8UAgvbnKkmh!o{&=CO-TD$~3u62V zYlbb`8nfF-Y@rIF zg59t6X9Myoj*IXwS2wLfq8yp01~0zYx)M)XO^KU0*kUIR=`n*BnX;RQkVVE-d)!(# zB^o(t=KLNy7kk&O?`a#k;ZPanti|o5z#nvJhFF*k;1By>4Mo@}&Y!v{$9sf-$-IEZ zLcp6EhDx_b`wue*j9CZ$Bsjc0^xY#0l~n}iVAvegoqR9Zqr`>$JsC0!BOVD`{r6wB|IP3Gx9tyB!|i(uL*HJRE?y4G6>vK8 zVC&QX^(?9#nTH5R@^6yN|X*gMt+ZL;QwE_27>_S z&R;WBih+co;vT(-OpaX=eKm2;R9^8XlXeKA!uEmp~eqXiz$y8UPhwJn!Sc zx5IqJ0ep%7RZ@`~x~9G$Om*`!6cH$xpBYR|Jh_+!7IqnPFgI}se5k{AN`rlF`7)?U zIT$AU=F4nkXF(%AHnxwSg(9LY&2?jTCDWt*$KozJ1N^iF-~t|##h`dc{m*T|@C(FK2tgeIlazfab$D8S;nBNFPqTQflw zVPf$kwa*8khLHFgECj6_j&j{d0+jvo4w1jin9RCB7j3IC66cjjtTz&SqkfsH^*uUi z{7U*uZO^PyZxp9t-fnXNj*aTc+{pEDp881!GpI8b1S*Ykc6t_2!Di;4&7xqFoO&Cy zN=6nfR>!aB{Fq%WgX!SVh3cT8MB#)Y$y1(3=AR5wfsalHM#FTdC7~j-O81j!A_2$X+Mw+tcy!O-X!~H>C&0$6vvf z-o(x#cjb|-WS!tJvk<%5@+v=j(RE@^Ft## zDUdH}S7_nmT(~?5r7*_O!s|^(Kl?r52l3r7EBr5c7L702Dy;3KGyCSfDL2e;>|b)# z2*=Nc4E1TxBD6?GsLlZqGEM-bXzUrYnf?2MNYy*h*i&J=H6w{}=ST6)WE&qh&GY4^ z$=T=8+U{AL?~Wtt4J1_*2@rNqkKk?jOFF3B9d&ZOyw7g1^x-j)Owm31PVlFMGl^m& z;nu^RLrk2vUYWzC&g3lRr!NB6L}umB8}ASq#d8xd3RH6_ieWKg-s zTpBDf_j0h$JHua*5cb|~b>xusKar@!f66}|w2FLwn--4PU}i4EZaYq$)$*Gitz8>h zI-FH^QKAS-lXELu68NvFaN$iXc*xAq+WOs_CRUN*v}J{Pm`(yqhC~z=!vMBgeSkjP zvA3l8`(!|>*CroMv#-~8KGm{yYT~q~!-da;=l#2&l3DIR;0N$Bzy=O|NZ=!;#E*Mh z@_eO#(lfA6ri`2|t*5B|`>9L&T=&^8dqB2#CP(BXPf|ih3)09q|LHtTclcsv272ZJ z3M%JJX1{2o0w@sI9NEgeQhKYP2?4x#Xu0lF|cx1a8Td*tBxcoE3&PWls zTZGOyLXRHAwn#RGkg~THj;)s`M3V?Ahch~?eULP0+YM_ zd$=^06PAYmwKclg0r{*e@PA|_JN)nQn-r+v-7@23ZLL}Z)$WA(Kl~)0`k48}tgdR? ziO;E-`wnHO6n}5KG2rcEW!)-aTuuupGhLt}&o_@=_&tK``L(aFbJp%n+5FWh!rwtsPqwDFlJ6U3y29=W+v zJ{VBWDI3^9vf#&-lT4$$~zpW1JtG&jFK0{#`Q!JSKzF_ zI*Q9tZFk$GD4zKBB)WkTN7*GAO_6f0L<`r33wt27!?5oQ*_x}6N?gtTr^bs`rSA{N z-m`kPVz)C}glzwYmjmT36Cf%6i@2d2A}>g0gie0^7oE?H6q+(DJZf8nlduSV%?VYmyjSEBE2B(S+sUl+v^lDU?i*u z?p4JWClp#>`>gTr>Pe*bg;~$B|5p1#8|rZJ@ZVxGL6k=Sn<(%&AF}K5AHmJ#z}4#y zxGx{)ZMmj4N!&i@pYSiV@Chmo;D>{diPCxJLt?I4-X-&C>jevbL2py1JpI6iczl|u(>?>#k>W`P0P^bC*G?$pFqxl_T)Ao!=e2D<5 zbK_5pl1?!^Z*M!Fg*y76^cTl(U$4?g>`wip`y;F9%|T<Flmt?L)`iUzd0l(;BQzv%1(`Tup$~Hh{B*)iuG>P(zO^JYHYEz_#BmrY;!Fc?Q z6WmCOKpnmbpr0viW?LCnP4@mwkh19NYFaq?Fvz#iIMop zNAg7^e)@2JqJ?jT3!jeGzS?|3bkv_BwXcLjlb;UPZis{?JRb=#2lAReIsb;xEElGr zlEd?EaznSd3w0vfN*fF<6nR>F`N%UBFxKekzrT;5zWq2U@GlBZ<3x~2+N|DDqmY;G z?c)Wl8JJv7vJ|AOvAz+cAPth<6%;gu2kzih&_(m?{a}h&96|?>q!G)&QT^`0L^^lm znSS9t}k%t&m5JgS#5B>D7em9q#URA}oh=&o;}8kt2HBoX#hv+|_0jCUx3JB<=` z5@@C&e2r~#ZG8^%2XmYSS-{(8t_*b~0b_DJqTiI{z`sGrj6u$7zL$ z;`ax;k3HExr|J7d@jvP@$%M#ttknl%uUB*A{Ia-*1{_P>xCkejbpq9ptQm<>?|5bD zGjlf;=@Z-caK>crNp-rceNX>Zwxly3RMOl6nse)K4sEuNKlyDjsm=v}tbP13y1~A} z0h~!rL%Ql_(`j11sukZZpbFUjkB^mNa+f{HIez~?obYJvf5h>nv(ZQbqL3)At%pCJ zO5^_aagu#|jITgH?_rNEk3ULilH7Kz-|y9cS7>6`4WK}Hd2DJO-u_uW>Ew&K{j&TK z(ND?{E6DQ0t1kRQOscdMtUS?> zPehJc)Aem(!J5gRQAH{F784dla>;#!Mg0g`z$$!wSO3D$ql2&VVpFH%%RTv;`dwXx z1Wd96G(I((cQX39jKwrR>lBy0Z$Nm|4qgg%PE|cDo>*6Xtj7|}Umu%%R=UE{itflh zK*Xc^i6DNW^nqiF3gd&n7n}MSI#^>vl;7-{$zw%FLXS>9%U?Q-2Y?D5S?`4&tydV~ zwOaO-ezO$;H!n81&Wlf-9(wf3vvB-e@AaQr!7yeRbjT~SSb1d@O>NA?tF!hh7eWO- zU*RTU`#)UhJK%0@)5@f_DHZwhanT^m-`KddKkp8bY`zNepSsOisf$)Z(Io$6Q#>Y$ z%DhConG?tmPaLILrh8xAQ3AVR&Ul}88nqmgP4v!xgMA_-CdFqvnYSFT7JtWT&^OH= z!jvCFHfIv>|HAHkDEt-9Ra!n#zv4TG#$+jHmC_%pQ|BDgISwp$_}!7i@9Dzt+3Im} zwoHxjbHZsn*XFIVM4IznD?p4?YV}B>XxPPx!2_apV%Ce1Do)hAznw2;4vf^U3@!Y= zAqcC)ODrzou>#oeKNWY?M$S9JN_k|qh{-;o553y=NkxxB;l;kA`!QXNKlML)F}~3H zGHQ*|K^GyTw2JgLX%!+$&DDC`2ZpUV3?jMY8Kc0f#<~5YZ7>U?zk)vI=|u6bDDi)K zhaNLhvsuUQw)&CNLB6s6n50S%61?We?kRLT_=P% zG45P1ahp3#Y;VdXsV_c*4zf`?LO;&0p^**765RszO8;52NEJ^#GH-u$pe6wufPd2f znX8KLy@AbaWIDJ1<_{0bD-FA;)epP(wvXezfdcyb*vI`|stz)BOqUq76YHD}jD~A6 z0OlI{=0*rj8D-KDveXXkfG0}7Gyuqre%j!BEh!^}pL3uuf^S0>zF|uIi3WDTH{kuK z$H-y+TgL^jt8o_cZs1{~F1GpR*@m;E?bLvj@#uq<%1d{D*t}rALXU zp^*d(jq?$Awf#S^w2$Csm>bjyn8jE{wjyjh{=4Fe%Uy&Y#7ks}1-l|R?C4q}zuDn+(X<~?) z7@QCgGy}G7q-n)3sl?F)CET&XI{B1L8Y>Kt{ssS9I7m55@G0ogNY zH6vf0Cx?|p@iW6ASvYE9t9k|=&$C+(2XBA}1^_$XxY zp*l2#^63*PM>q@0x2aO9AL|cs<^A5EdT=HvUlEko`0qkN{Tu$x5Er>V#+TE_lQibG zvuw<3kw;g2QV+h!1E9Fyg1l)dFVT{zLQdeszf=CFS!wg&3yh;!P3y|26i77!B=QJp zYk>18W8RGG*VHu;idc6Ia#Y=Py~GEzXRofi4hgcZMnYB{LY5v94qexvH^8iGg*yvN z*d=%CfB*c>7vc54wl!?@his$xyTuRpVkI0y6TgV-qvY31+ELtXbRY9d(r6F;GdHw# zp10;g*JH^zFdO5Yk_9BnSt0=*A&*_i=a_W;&3kOpZ)pI2r_)7$lI9XvRrqtT%Q0(n z3YayEycr!7)j9gO&CS{uvgLz<^0I(_y7CPd^Zntfdb=J_b)_r6$CaOw{eFE=9>hP* z;nr_s!u>m3Cofq{O&Xp1eooDPGwsK3&!6RF>Yjs0?tYW(;J=CL0{RP|1lR%-viR9v z$DERa*3;h7d_^AG}0*NcILKy) zG#GUT{P`_2k2-Fq{WElvDE`^Spy2WJQuuZHewbpS%j8%-wy2qkRPUiBK!-m+KM;Qw zOXqf|bMv+Ub-o^;4!YV$q0aV)@=&KNi#h?+PP@kPx5zSm0J=2fqYKvA$tB`XIg|-G zl-Xt&^XD}4&*TpSW%_Wg>XQ}&i#M)X(0Ze}&gbC-4q3tpc}p8Mm_Cu0jR^O?DK~)( z{gsReWWcu634Fm4OG?!IdBX>A;sAWu-MgbQixE45m2gOmIHW&=)}hU}3vZwL>%6(1 zpqoT-*R9NTB|Y&kIW;rW%ntN}#Non3Y*+GI`|$JI$Sao0%`ZHJ5JS-iXoJKf05@G? z`V7F6C_el7BMSXRO`vw7c=i^qSG>bDpXkhvL~*%_OKhAbXqOdsjGz5F@nBd^kaAd^ zikfGM&Pb1Q^!>b_tD6*sV@G-MW(*vp+SglLlzH(v)#2D2h%8@lfwp~NO*D34wHHI! zbz&1zaIBdJb80l&2KEL^*eT7-k50^30dzXX{|{Zm#3m`*y~wF$&l6vDR8hX0Q|OV) zt_jE6YBb_%TpW9Nomro^%EKDEYh|HgJ#fzPe@a|}D48`n7M2frD;?9Ra{*o&vnwyZ z#=fic;^jJ)#5_|b$u(tSY>8+B@?(7m;dqCb`^;LeBbBWH`?z2o`n*U=Y0YNT;ZsZZ z{8@o?vC=Bt#!LIzj|`zPB+2skRH`rM>&sS_l{suvpJuB>qbSn^L%8R{3^iQ;Op=Bh z%4lQ&U!_34Qu9%r+IT1mA^OmkIsdc5sGz?V_-jk$GPP7@o%lDM^BX>A-M@*R(fxCS z?q8!@{HX26HmBA7vsJ3@uhN%~;LFBBATTZXt04sPL1)nCk2?SJZ_HxA{|@A5=?iRj z0A%@$XK)Cn$+2&LpOtm|CEPytF~0o25P#fB(TVE)utf~9ef$VsENHpeIH2|U7#{f7 zd{(1H(8$vN*!MK)@>n}m{H5}4R)^Ot{3VU)A9jzIo|Z@Prj}4Nwj&aouaeZouy!R& zjFmq|X)<*__i%9FLj0?LV+VfT?CoVmUYj2;7`vN`Z}6S}(Wnf-iAn)$RHdlNnai ziQ*q~4S$-G=8oxf^yANZVXe?SQ9SRp#qhU%=9c4#NxzQqr*a@{K}(t6$!5PDwtg8D z<1*0Mj1nk0EVTw55W_(ju^kYDeY<264t0uLcZ|Oqv?^$sAtbj&t4+TH92{Bo%Wc&k z=FMB9Rd0)#)qPoe|3c3D8-2xxFX#_j&1#QbRUHs!aCp0yVb)J$nB*Jgn&t2313BsrKXyU+^!Umsu{b?OYa+ZF?nQ#Wjk>u}tS+{L3aGn5S9Nc`Jxk`ho zHNeB_{N6zeE$LR88KC;zB?!CRDbygIC8gTH|!6*jU#j12so)@WEhn4yE^ ze}2wk`M>!E%U`sgES5iKrHSI_1gDiO5A^pXR<~EdmdBzYR`CNWEppW+T(wv5qs4Qp zZsVn&x1Vga4OWW0!ms~Ts!fsafew?t~DR7veJKBWu-6LPZn^`sZ?K{uP?_?6F4Y?L!x-Y z?2IbU6PlNshgwC=q!fqp!aRbr{2stcB=iMf>pY8Luze$KIOVhB_{% zK`${FS{5e0mg8=U^Z-c+G=L4;pua#bnEy{3yslH1AXA_WaV3)bIE)N+LA8gzyHd6r z9tIH;E!YsK#o|BCHt_vyq#dUabcr*8;D7h1WAW0z{WZURGwl!E zxqtgS%xj;pn=zZPKb{}7za?lt`&AoOddg4Wl*mjy9Vc5Kh7KZ^eQ-Vm;14ahTlfi& zVIF{3wg$${{%WR8f%p?B^lE1;v$fmgvtY_>0xG;wn}hpM$L~}p`&*eA=)?}p446w& z>8`&pS`1%s-Lx(jIW&BZYya1_8pMY>oF;5Mq;y5*lUVWnT-prYtM_jX-VZdXoRl_C zuldu0;>t{QnOLDj@qkWnoUqXXf7kJ#GbUEew!iKNy6LeS@>g-^oKXjz>9=qPuN;q5Tle&(VKBJ#l z>9g+cQFphDA57SZ@?YqF(IBfi&b5ENh(JdWAI`xqa9#q}{t?6-E_R=PnV)3($NsU5 zAa!}3OqtIE9skoFc$WXg$DgSRFzQrkMWIJriF{T*jECkuJErSB?>Ay@W$E*+OYgrx zmwH)e*kCZ0C650*IYayt?-%_S+ToazVVBS7)sjmE5*{JBBEwo!|e$MXwh<572n7g+;v}mKQ(3r-`9l`5Fko*a1NkPj{ z?Kp*GC6>%QS=6??7VDu`oYc5rjz@fvdc@YHljD9;NB+K%dQ{r^4OB;!ur;9bsXNBk ztA%7MJ2lYbbcKJX?Lu>Hit_yx)*8BUEUC-j#AsD3YFp=D77D*a(c!r}C!5?|X)2)=Ew#6_hLeAGICC zL*zhGnc@_RtUTuM@Ae%3n3468!CNp%Go1`Cxy&X2Zz4#}u_Uau<1dw2z6)7Qp3iK& z+qHJ7^6Wz9g49TS%Uw22&f5kB!KRhznl7@B_&^o@14{();1vgSFaBUVEraE#(T(nm zN(>=ziXgj2*M>u>$78e@anl)Xc{Z2TjkFWnzb` zwsuRX;~sT8_5t3(rE(6g1R**e;Tgir`?CpKX3Og~)JUml`6S zI^&#&P1t-Z5X+vUUg(VihZ4m{ybgD$pu_&wW5f{f7-kIqZ&;>|_UG`~-`socNo^hAGlj{KHOeeqE{yAm5wJH8EFTZR5;I? z)5u64WYCg^9X~g75-&4WxJJ1xbxpNfP{EuVLRce@3w-1sfpu;;BtNv89zfEUu23ze*)B*`K{~(jQ)0J0vvr> z5rF>C=QqiJd991@y0SQ!gn4h>&$Nn;bny%QFi-TNV{>aZT==|FvEEIwr5sAJP93!g zub^X`CPYEuR>f~Ews%&AyM1Ej6|K`*$7HLdof6{b`dWvfeoPl^YdD0sDH8kX$onWt zU0NtYub&DS!`8+Slxmso+6d7tjahwv5^vqVy{OzH6ueSGv zAbv$d{LOL%1EdJo&Zjl2zbV<@!r%8-@xy_;cF|_V%XCpIM)nyBo^0nD>w0MZ9KD#B zK&bVq(0oOaMdDMN!lQb^u@`X54U=R{UYq1k^2nd$Rjr(oC>j*zoN;{AI<3E)VB9(w zC+O5LKDPOj&vy)x;j%gO`iFmC^JQIi4QD$RbSgDXZ!=!wA7o|{WuaE4cOX&KSqP;=^Ii)ebgcid5iEHOa9#)TOb?IjV$fdvVj_W@LoD$ap@l0o zckzpxE{YX(rw8I7DNG^!j(0TC3ak`TEMs&o(>5>lt&PTBj^f}#rn%1$fnqDXfzv0t z{)e-@x@5qQ!&Pg;RqMii zU2;-uLinDX*Bw3-5OK0LV#jCBLpM==5tT)lQ*|>E|EcSC;`A0Cv!BE34aDh%I15B( zMm7l9FggX9zYfB^nP8% zUTzX1n@iYp*{s1dhB>LZ>SCZ4uI+9)VoI!NrO7E~^wd7tDX9+-5Ad7x3-1Vmv|jNa zvCCITWA1;|F1!5x_RGFmB}98y(q8r7<~Qs7t|)z$o?CX!7X!~NwzB-t$%ZzCW*?g~ zM%@jTRyzX~FFiJkv@xwFhfJx>P<+^ozgVqk%T7(t;ReFeub{4=prqj9*x)XvG+f&= zce~+t>P994SoufMUw$L8mHt}yy_NgtaU*wJtLzNjFsb*^k8rH$=?F(g2shig*SNa$ z8v~Gc1@rF$qc!7;K5a8j{X!+rT@lf0A>(pYNK z!;b+IBj%C9XTt>IcfWl!q)q`@9G|X3{WxHqe-NEg32IHYfn57Rs8d#-XiQZ9B&A@} z15qn>x#)R4+p(KOA+|0wGjc^ zGFlrW2A>{?T9f5tXY*Giak9mXiOQh|>YnwYnh9LPv@?sH1M*fK9n8W{vppjtY;PT{ z5v%)!E9tYqjN~-iEBpXPYjzeI2I-8R*&a88ZoW+@;AQ5F@3&-7ja~&Lj#ktp``UGN z1m%8R4Q23bwrdGIgnP&8_;(``CT#OTYBD4`O98(j-<35*tF_cf zw?lHBlDY4sZr~L+J6BPjovH{o2a*$)ADl7f(U8<@Y(hdSoPIcu`3~gkvQECw*YMhx zNhL05WmeC*{t_83cA+Wb4q)_E9t|xiT`7m>`_Sk-a|8=r8C6CZXsd>5i4BC5p0rD zx}sIxGza~Q)}~uA=(>pVNTR-vyrFWpa}SVIBSgO&6j+bbBeCDwkp+^`wU?U_<0Y68 z{HYTCquJ>RVHQz};85qS48mxYoNDQe zO&4;6^@MYa2uC?Ok|@fW5kQc_wd&1UeOUM++<`<)Z<6eTJjb~1-(@xQq3ve~q?=Ie zlS;%!P8mp=eLL?-VU`g2E{9w3DKLvp*D~r$2V29S*_0+01mu3bxFBw@Xm|Fn-CNMh zb){nMH+Z4tuX6hGX?)?HVM41Ei>MBD2z)F3c+;IOS0pr$6%11=dFs^bF;gS)({_ssX(%!IqbRXZ|X=zV>lAqM^c z`L+blS)O8w>V&sox5QIbR{xlgAsU+0t)v%CDElPLa%3%1OKj!G04K0`^MdBXmg&v( zQRFDW+E7lO5`l>PP-xN*8L;x_~LYC^3$n9kP-@>HP4@=DW(I%XJBqR_S)B7#gw0;vGv`pU2&- z_rB>>Z2>Am7JEH3am&Fii;8`Ci)FNk9vcQdd8wU7uTMs5H-r}63(`?HP8M8X({qr^ zMyMR;8K@SwcWzl23h1JOtK`+gsO5vDf#V_f;^`G>Llx*YyY&7nf-%bYZ|C# ztE+!okM(b@&aW-!k-sD;=ehc~f?xj=YX1^yLf~z%1$q3(oAB1@Le{V3{tgONtA(|8Bv5e5PRCxij)GHxsu1Y!a?|8y#rclWoxK zdGv4Edh7p&FJ-2Ay#N}3iSl54PyQjmD*x9(x!^0pvRJ=_ojvFPkzB=##p>ofdr_X{ zk3MH@JoIp;j_ZS>vCN+<`);;uN>Eng@OzFcADeA|H06G=dQB&-ab)rgffI}Aw2s|n z#LbHz$Bx5`0jqMtm+1R~-Q*%GsAN4)+Ugd3iK77N;ZBdvt@l@0?>i&0XQOa3@Ioz0 zNggZnd0n!3kS+Jr@5C3gD?ar@-6o1Z-3V061dPiIOiAzu%l!o#%ai;@V%zaA<04OC z@GtrdFJyHE;s@}q$q3tr_;vb2JvbET4`^po&@+Z)=3bMtlW0WJBW{_ATXKC#Br&)m zXSI$NZVVUh!0i|b6!k}$g2mUDq)*Jfg)CPQC8JAi&rDK@lKquBYxg$G=f?s( z6mbAhDy4l@_=l~v`To+CnbEfiHyBif{}#(0z+6#8kp(AC3yO$8&>|Vk#QLY`dtR@! zfCsa**I`^_N7n!C8vFjZY}LcFRo~&NzO#&~5y%7jxKH>)U1k1FB5l82$DcJpB~SBa zg=XiG5Bl#n37@(;e-cvPWi}51dp&adBe%d;0{D;Zq`3pPu@Ywwarw=TCP-FWWub-g zIn8hYvn)Mk8PW>8VJ|4R|CMDfknP-L9- z%Alyme}+EzC2Hd&_x(|q^O8}JBmYJ0X=WGi^_xXT5JS5C7r4wPAfxd-Rp%fA7%WrM z4&~L6LuQA+WI)W|ugkw_K!mdKuN`zt6rI3|C$3u?z_tM^Qb-A%a3)&usifT#zCw6f z;%v6DwUv$e5+BD<=cmCv%L3@L7lqOP|J8QcXp5tEbqJ>y8IL7fpM?I9*_u_71kq)r zFr+OJqq_Z#m)Onnw%IedpEX*7`@>}Q`_0jAZl`ChlZ_HxtNoo{b4b_}7$SM$@saKH zMF{An?zOe0?c$TNs|WcZ+rMI!=k*|GkHoO!cCK@#NUV_b#pIvihwe{}e+~V?Kk9~z z@iS+~P0%S!@s6fk9G}=VyS@{M$vhm`I^}($u#Shc{*{hRqKJ%g{Rlp|3BsO7cKPHLjk8OIAUplYfVElLg5U+~log zVR40j)&Jx#X!WBaH7OG{8gQKov65;_0eglJ4L>;P<<}>hk95qzOc_oysdA>Da+lF# zbigp2>g*Jj$EczpeU-Kh%EB?W!uF6o7JYPTVq8VI@V$C-sYA;Q_dVtGxOL&Gr^8k2 z!->IXp|D0n6W5ReDIA*68?N0*E+b3;EhEb!wIJ2RcO$WsSG(cXiz2eYg_gf^LGw_j zYdHa|-g=tuaQoKfN~nbOft>|$HTabKF=K?*huJ302wKUhB{>Z~UA5o1;8*35fhz-j ztox18-oVZB_UKT|hWJCbKeH9s=LlnP<>afQ07wAoCP8`zUT#0e-Cn$EEa#E^kn7M8 zL|v}+T-QYUqz`AmY_;<+peRB9_Ygg9@WcQ~6xUzu6tEY)-5ee& z4Y|*&+N)OZ=RA%S4AZ!OZ%mgziLCbyKXEj<-b5ph+=>!rn0&p?H=rpdPon5Wzo6l_ zX^*vR%9@F*wK5B)#4cZ5)-nDY_hZ-(bzaH>@SmN*k)*N1S^wk)yQ~EIl{%N_fT_uR zNv#S$BQY(8%lO~EB*0M@%(XfzFgf_0UYv#Bba9M!su0I88nSzpIA>@9 z32qC#-QDiy9^C-x+0X`aPxFtwz&*j`oK5S52Yq-M`fpH0e9J&}e*%U6GL9m~4f!W` zH2`5>VD9FUoGV8(F&G9{-g~Re!pE&=laRwyWsH5CkvmU`#A(Ncd;gBP_G`Qpjvu!M z>RN9!FWmbk={PqNxWX=5$39HA+oDy^N2~rCtcyt19*$bY@Ea*iMO5%SspxMxB3%1) zX#V}K)0;~o@#A0TbTAo=Rar?i_E)}$Cgwha^VMzg_Qtkv)xJcE=Fq|$`7m6#j?{*= zB-lVRg=t|{e&Df?iV*3~7umLRAk*d{^s+AhHnXjM3 zry#uhFOjM@Fa`IIRK18aaJ~q8)vMve<$s11UfLI_dciBia<|rhsOqN(w5$4!lY<~YE6^1`3ugpM=7 zSTKRTde&cKv~W#0K8|7IG4M|KkJ-5{Oow~ZI5l+4)tC_%p;tMAxBD+PW)B9*v~=`o zg@&v6Z=W0a-=kH3j>fi!cmFk7^-j3^&Hhnx!c}dz6Ktm@hW17ocC_kEoDgJ1Y`i`x zvy{1aLOYL{g1L7H86@{a|rXVrWS;aa={Xwzq9y(z1AONDt6uO0dNn)y>m%$lXI?>adXF%03|JjauVET3067(YdtCC1N{YoEIO{?Tej<6%}hw z5^sbuDz-FCxL9%gA>U#KRO*<*q&!1)&8!~?j1%Vsz(~ELcs~0ekgwv)%>R-0kW<>} zRK`x>BWQDTx#~8rQz+Z?3ylJn_P@-pnQQmR{xgj`#~?1T@>l(J{QAlshYWw0 zml4mu)vcNx_3;OES?Q2|lu8x#TZ2*&Jl{us@lV3OX!a#n(XQk0Iz2vn1TSUjs}i>4Z8N%@u-dX2gc5mlB<@u}SsE%KO;dg( z(v&7M_Fte%Qxip%oHz#(Z-wGjy@zW?G&H#zG;SFbt$m@n7#fitz@I4UT*vGZG~I_` zo<_>G%_nJ5*w$o=P$FKn#EeQwEMjwr;p<^_>;03+qoJ=F1O;$K#swx0KFAA>o*%a! z`ETDRc#r!AaXHVwL7y2SN^yba7b;T*NH#Djx6@Ip(nQd|sO8Z~Pk2M?<6pXDI|jjI5DuUAbAaH>K5PR8sp?WQJuUP`JG4>Iyl;>e3tpYM*aDiiZG9!{ND> z83WJ1)q4{LxBJ>chNe*uE$z zHEiEYOp$*M);7Pv)pGc-0M$*uIq&ZWqq{lQ`t{+1a9-f6OqJxRw8H zv9t;*{VJvFX6DK=l2MT^Dk+2cnNcYak;+spQ#BRNa3vDamyp5mop#`Oi4&0ij8{K+xUvMjmU+Cd*Zvz$0%)6?{+qH zkk3fi_SfZge4jp6M}@HK-21jy#Yw4;Z+b$HQ3*CI^Fqt|(j3t#M!{?_B`q54`=Sqf|7EL)XV49M zyvA{q-J89t872ImgW{VIhqc;}&gupE0o@LIzy8#I(A$<3b#s%NcLn_LpZ-@)f2cF6 z*fK$#ZBUJkgzv}8axxF{XqhPFSZQSVZ)F{L6$YRkdk7VwTL8Yp0%~z;Lg)&0j5IPU zJ|1r@35R}y_rOGnMc)L-k=SNAo@Sj*Kg+x1t{!r6{PJGZZxq>#Wk9kgQEidJ%`X2K zLTyQ?qf&Jz$U#zAfNt<&B=pdBYy&T18$dd8=7HYNIwlMq4oEdTo6+S4ChY?cVkzR_ zwd*1MI}h|buzx=hVic~Q5}(^Un_OVo-a-67DPJGV1%`f_U&*%6vj3*t)N@k9<7JU} zTm~*88_IA?h}QPVto1EDGB&hT)eASr^u<2#Z{DPDprNuvcxxtjX^^Pm{A=f`a3zV$!M>A_dNUp) zmstz!<%Z*zZ^RlBjjcp>z?S^7Y{}u+DpT4oKp0OSmAp7Hvfsst)A~tE0-*-+?Uck& z9Jem5!~X@zf^6~IkM>S3D0sgQ6ni1HotDwE2TzjCm~CsNC1ipug(0rF&Ve7IgS{0rfZMYtGVfE^5HS%h}xB*vBw?nrP#S4Q!bl4SjL;@AIga%%%)) z00VfR0Sw~_8!1PV{<6-vD4RrK8O1wZ?vkZEjH(0rdsE}btqQ{d`G=d?MTw%J;oZHs zKHx~S@u`AvRSzJGR!w}0 zhie05HOlF)e@?l2%3rw4=p)R8z!~JGF}p-1cS;JNI{$C~ge3s)O3 zi8e;O8)Cv%*o!UIfqk#z17N+#V7<{>vr>AXEHMLzZuRi9Or|Gh`BBCmv)fC|%J8Cr zXJ?%4;)B^p{LMy|Iv2)=@fqx~>Tq1;=(immZ(bl%P}bOE^=oj- z`!QyG`P|JvuQ`-)3L@e7a~Nz4AW^A(6d;k&{|q3*DenZA_h5*BNnbXH< z+dZaTak55?0(Zopcy8VP@4 zv2XNu;1pNTtkW*@uH>_X|_1hIRp(%FnL)$e9o~x5?l|&nDxc>}2SXME7_7 z8-b$&WrdthzPslOd0<}34KtXLl$>Pu*!ix%B|`o(lk8H6=1!_}@c&B={xuHDuNn;V zaPk*!3iby)@)4+rGmMaMHgBlyIzbIN25mSJFM=6u4EOr1=#o2h923$`G_w2caSs#>=oU_E6pT zsSf%_g9FE`6X{r+F7f~OT~Q7EBP43p2&&I#R$cRvov!{~zvE^3ms)XvzMp6Ugng@E zwnByqulBv>3$g!hC4Xu#pmph&OuUlu!=n{?P!S9WkY@%YWT^-YL3Qch1!!aB8$U3~ zL1r<1$xD2`&pYY39aewP{|)IfmXn{}@vlCshH;>5W_uc}y4ydWLkH7O=J4Pkl=%6$ zgHdAVAsIQl0FJ1TEqxc7mPuQ4~g#Au#6L(xnq^5v)bwu^RX(Nm;#vgl-%+u*K75&-gpj{{%-T5#c=pe zBr&-#vS3Y1kBMf`2h)GV#@M1tFV~+x=+FKC|N8{_jy;QcHa!iiD(hLNe__2F_^)uH zWn^J^!9Q9{(%+TAHTEx#n+xy$Q#kba)4+0_l#bBj&t@+1Pz@_QrVjo8gVtZB6s_m< z7&+;o$E=VZbB}fzRsFtjVh*+MYu%O_! zhMjvbE?%GQrFxRVz+LI0FabAeGSu-u^vF%8B1(2|k)n23IL4WYX$&`e`&x%^qrNcP zTM*TTq&f6vT{QG~PyGte0#C?^ysr9AwVtvbUK0;sS&yU8R^%@V_B^gFvH{Q^0egups4H!_{wMch;t%Gz73ML}- zCpz8NdQ1QcNw`Q|p~t(XB+f2O4-i1G3ef|MSnJeoS4uZPK-nNxUCSE zj`Ttha((?W0g&Rg*xQESsnJ#^($#!Mrjlsrk1K;oi-abwByO=APfVP1ZYv~y5lK8{ zN>gG2!r!{onT8D7k!XMu$@lqg zQdEhLz*$rrr`Ye*saM984`i21K6wy6roVSUtGQcie`a?5z#ZUxk}=7e;^v3^b8PoK zbUz@&?=>;w1E!>K*6H9J-P=KI2YKJ$I-<~j@LZY85Rg4PncMcj8mir*LjXNt3j*kH zD)HC7u%E@rfBqBs9Zr2EyLQw|>tE*lb~uqo)D6*RMI4DxN>;rZEZQ_7xh+xrqq}M1 z7&UQywh4buruOv1xl!k?tp1M&<1f?k?WEgNGpM?2QFRd~g4$QzNbT$};~$c(UGnpP zQGZ>w{7h6I2Ap64^r^6x(<095){*#W5kp@qN8>8GCXp;2?# zG;y&rhkM8~GlW&slW268o?%JjT4$q5CW=psGj&^zu&i69pR}TNt<}rkf4>|AJpOGG z>-&!pYGXR-Ikdtz3D zZ+aBP#en@z9nL%c6<8u5Sq5a|$rgZH{!rCUNpiy!1dZ`OHnER@8$S8zaA2_j#w5_)-yDhy1W ziviPfA%|aDlmbZKYR3QGt*3hNaXVlhOxpYKZ&%mBgHEkLX|T#ZsmkUDl~radQ(fco z>q<*fXIOMCe@=4voSWX%9}P1^KCN$$8M?85bcom}^q~q<#nb=O3szpfQ!nWW4yr&Law$#b2t6<;bXPY4<}XrT8J-^nGrztuwfr}~{`Idp$7Lf+rYbS?(oq{((?bnR zm5Tt=ia{Urv80D$6zShQ31UACH3;H}5&}oUe>f=jFQpHBCO+kVOaw*b<*y5=qJlf1 zA}!GVJ_a2r@aJEKV2^)54cUV}u^-LP5;ra!efvS)_|U1;mD^nVxHW!x6qxiy!LbZE z%^%ISoP(Iohp!;y z7Cc+YgU;vw^Hdil;S#B^>;!!$ZxGP`6_+v$KvCikVI+*cB<1Ce#`Rw|;OzXwOE2KW zt&J(pU0o3XUwSIQpEhb^Uw0P#KU$#tQ|ArLgFgn0((iwBKll$1%6*+Ln1TP#2M6%~ zEOq#IbC=g?@*~k@|C%%Z`}{{ggJcE$pW(&tUkee<*f$pJ3UxL~q>d-I@;GvB@d7Mg zS^Y<6(ae{*+xrlQ#bw371|dn#53w!&Z;zvI@$%#6OPPLnWIKhC_(IjZaXaUF_p3L2 zje@V(E2}0a246aH)cQzmS7_1Sd9`C@KPVxwm`l|~?LKRxkaOkHd)!GC%jgR65sLR^ z((r%ZhaklgC(}Eb3Oj^oDnLJE>36?cZ2W;0G;*myoedyN-AVsvhh+)2wjTQ?4g#-& z)(Sr}sK!l%@^215oHrAtcUi@vhwNT14sM!+TPE*K_Yx|L4Ib%#<+KA1gk$Pv*wW!I zwmDlolNulpI>K_Lznn{e=Re3VRC7Pu3GL4zzqb};zV+mkjP)dtuZ9P63z}ce{}W35 zNxuU?Ci(cw=}&rV{+i6ccKCfC0}AS>5mob&@zSf?p+S%m|9gn9jC1IRV!U`lvn2zr z1nh3n@?`~J``zsZc0B)~tV#cj0S@d?L(zA@UMdB9w92;;2wf5nQR@7O=E%o?`PbT?UV4Y-3rFy!^SQ7j_whSs5bWYTaprY@oPFK#ZTHC^ z|NpjCKYZWDTl>H1joD(yaFO-|-HO{Dc{IK{A`*+~D_6l|R)O|Yp2&SCe@Xl34Sm$* zjd|bup0|5n@S)byz1{3suY-v9AJetUkolvuiwyl#z-cf)bsghh!?1(L**|SnidT2+ z84&trsaA}zTN4N>lHWinhsPcw1#V5p_;0C>)+0NXdsr}w3NO0om!t5&m_K+5~6Kezk-xDIlcJz-O7E?y}sODmqPlk ze@6wJVk<8NO@yQ$s+~E}*t=?_+3T=Y@Ok(Ior$+A!qEJ~DUQa& zHPLuXoejsYVrOPa(6Tkz_iQ*Z8yd0G64va!pyO2>wd98J0o_iKA*eKs7A zxteT3@OrZpC)0(x4gRZa^_$E!F}_4`gp+8W#Nl`9x?V!pA+m$VA6xe5pdzJh$=NPn~5U}z`W2jaSnhgH_d5}zhmwV~`I$kljmjzfJO6Y^M!*vxtz|SyF7_4ky4Sglifl z@+lF^B^x~3`CYdisiK9l??z%pq@h@u?lFm3DMm&F=ngXoTi}gI$igBwsgRuEhjGcW zs581IDWgFoyj|@O>1CvxS+A5$b1b4+WaNnSbZx-LUI4!*#-0^UG^RcSjgbK1JULlm zm9oSllvvICK<@|J&{cxCNwGdxGjgG7uCba=kUXl*sx`RMs8O?Dw%oB`*DbgVA*V`# zIgFFuFRe~j>2UYsylYqM1ii9?=4Ne&HPq{bf|rYQ7<~VUi!UE}LVf$*qg#)zZ{IVh zrHsEvwG85KD71h*D9fM4`nt6^+_x6Vz4nD$hqP5i*g}cK20xEE+3W)xwffD|Y;f9k zX%b$6+#CI$;5~vL5E<6KCqELI|M&PyxlA6wqjIvZ|J=t8jTyH{X1stFx^w(Pb6j>S z3;qhohwELU=;Pjs9BTlsa0jCssJCNQy0-Utv4?Cd*uX~k&rSGMZN&nQ(9@Gab z_86EH#Q4=nB4>~EPMwJp&F|mCyx#r5V)2BIn=1-h#`=dJJci={p4CxT(}_2-y)9Dd zoyw_P@qzwWO>@o`<}V%@3<>&Xmb%<<4!UAOZI|5(MP6v1U5gvE_VVym$;h|0US+7$ z1#x2(A{Fq`p}dflZw(=oAH)uYh(BStvMeJOkohkBSY{5xWAH`BhZpkC;k7xjz>B%B zbgG1_07L3w`3Sj&&3uQDVGuHq46v&1hJpOhVdsDUZ6Jzdzl+4}lCAOn;bpnLcF`sT z3}a`e%?O*#w27o{9}s^yb3nLoN(~OLg;&?CTE(y!UlheZ9J{)Dl~>qke`-EbKoNem zogd&9`P~~Ub%F-7?N89GYThL;bv!1vR@iz(`(s@oOF>JqKi`ms9JPQ(D+-!g<|j_f zry%Jc1^VOpd>pjVfc%4Ai~RF1HL#|xlAnUrbz`y1gU+Fahw-lYSgq*?S?i0J$9SFP zRfknj#=FAM!WZ>iC>E@10gZ_wc^kN8V@eTw1Mc5vHZ#GtX#m zdpWzdjKAP4y~9iJ#~){oUpFF+K!C>d)h{z&$9+F_Y||Kj{AOmTuW;s+2uh3^S7yq- z=k^ohaP%&-Dl!V2fA{@VfjFle4(b)j+6mLv7&sp`BO857Q1E{@;t=O&gcgniWC4CP zMnTtPeV-kOrR&vowS|#u%fF5$&d#8AAS1OKZ^8W8NCy3aNbU2Xj(2HFUSq^RY~Y~q z)@|wjc<|!?Tg_8g|B%_$ASe(${(oAf7dKR7VT9{wXwh%^UPyt!j(8#`^E#7Oa3e0k zYAGk!*yegmI>?5F?`8*NqJ0?At>=J-Lm_)Yuo~gKBJ4oKu}-%F0c)_Gs)-L=CI0og zV{J}naCXrUU#tZx5j2+6)rSk9=Ak(6dlW^`#ND?;+%gh{CmNG=*nyUs)Q>CkNQry? zpA2j*7~}z%bv^N$!#@J8bUtQw zDIS1X`SYV82lKDLmZRuCQIXes90bZKn#`t2*Ae&*KPEvpuBn{9| zq9cnAFO*a`h`p+#xfX>>JfyFvsSIL>(~|vlnT_!$EdQh+4#8s0*sNH1AJoaA1&z@Q z=~-Mg>8d8nJhA^_RhSgIvhTV`{Opr43j*Ha-}k3k3=13$So#}X17!H<`eri*GnFw} zJUhleF&jamrOZF3RzB(k1009RXBv!)?9zMt3GCf%7*fT*C!m5(sdjlS%I8oPA>S*pQY3>5Tm)A6+8AZDVXo=8}U5G(WTyGBKcS$eoN@^m;OMK0#{0D=u${33f*c)WfwyGQ+~-iG-)!8bj2c*R+9K*C$&-{$uPg+fi0$ z+1YooeqNmaTwZ7PzgCfQkjO=UCjts$%l-60k#NfyG!2xn}X@Bgs{Km(7=v z5YPTL*xx4mJA=QEk8IbsiF3?VlPWwdEn_WB0xUAe4*gD7r!?offy5C1qrtk5MQ<1o z3)e7)DiGC|4n2U_DDU+$UV$<`qRwS_`B<|BwqRi}AAhz+cKh!F5s|PuW?29}XqMfv z2usQjnpSr#!X<~AN5@~4pD~~TP&cqqgAT_(2Q!~pEg-^TNNWl`uYnxY38D?`6NoNw zeB`BL7hgW|%+(zyQcEEx)a{^i`WKEZeV?C>@!vtvDQG#$e}|K(32zR^m-<$$cpjt6 zFiULQdg!0Jz8~5K!!)i&u(23t9m)0Ye31Qn%xh<2{Klo4@0@?cGm`%$4aU8i)$`N` z?iZ^MBHImKY!FkrO!pn*OI=4OS6lY|dGtxNdri9@=^tcFGV02sY=7)O$Cs3~)d#RE zJ4EDLPv|?iA8!bKr+e(iR^{s{W8MupRGbnyN3(fYPOf0_rHepb74R(~tX`Qh|aF2sR!N%rM!kL)+R zJpS~`k@*A73ACwdxNv5GCSNuOV>A8^KFY|Bd5;#Pz?YTrtI!zM;q!JFpZ~F=wNG@p ze3ANfj6dck(65yUJ_vWZ-2Za0xn5&LRn`jO;e<+JODe3&4m(H^%;d3*3S;-{XzI&( z-OKsEqiR|3%38UZqGeg+;k!v$9&eq-ESw+S=xd*H;kRfbO1e?ZuouUN_6y4ZKyU&N z2~|#v98SWJekIY`Kg}G>2?0scIm|jjcfSoMZYm_9Q2Hm~L_M|&;SoVu@aYe3In%3M z-TZNRgm=H8!1ANR*$7OX9)jx(xgXj#YQM$dAO0S}1(aonzne8+yNO-?TU_R6VQ~0G zR-7Du0hmewrrOreKBx+^QfrmqU5OP>A*V^+_u@!!h0ZtFHD)hBF+9bR)xO*IMR~MX zkH;OI7pA1sBK|+p-UU9&;`;wjAS)3Fy9m+9r3MW(fVII}6ESUqL7zatpw?osibWA^ zYY`GaK@4mHtn2FHU1|HZ_M)}guUd;Bel)+_k}I%}Lz)ydNnfbFKOSXIkH(O7!0)>#xToI zW*dY?0N0uKvnu2Bi&2`u@2X1Hm4$C#mqO!8e)|bIg<@6lKElH>;V3c@+zdaUxADL4 z-`Bdp;1*oYwk1V2cDo!4uz?BJ>$sfuSt-NyZ)ms_yLCCm1w*=u%le{|1D@-Y05IcY zmz6Lo6VM&kQ^*xt@;#--zsEUJL|kj*FEPt3U9s)@oAdaO#`%wB~p&TR^Z4FTO?jp_=iri!wVG zYCXmks2OhMYm1hP(z&r$@7MzSqg|HoNEauN64x>z_lIv1L$>9^i~6f@Yyo3iZPS+Q zr352ZMgGcRYsM#jNU*UtI3KoXs2uWV9Q%nYFa#A(1tm-NhL_0kLRDAF`1E-NSE%Iv zjPXO>9+w!@lkwqX@l{Mu!}X=g*tCO_j!oumHYEZUzyfNqsB6u$5L@ObZ$$(n7D?bk zQPljl7o!*UxEhD%3C#0Nj-&oL;yCJbI4VK`$VdMm`Yri5yyQsLDAC2fSxyY8RlD_J zTg`ED{iJ_77OJvPS>46?qIt5plJV=n5R9#4U3d|G%3z2i+p%D1gE#C|ba<6*8=xwU znJBAr2sp~J(;~le7y=@>P=>#P4RDrc9bqe#j-f<>PjOva>H|q+(2BBi*>Lff#I@`sh! zl=I8^ukzD9OJAnNrB9n0q>m-t40W|` zxQo5!Fh;}l=MI=;JKwa+xPz~k@EM3JmMmJ=wcp9$_$SB10sn*?ar!Np6}kQlRafY* z=4ZOqJYEL%or$-S82Y$;M|+cGKgN(1S=zH@ws`ULph4E$l8rM@@w9^Lx=wrRcR!gB z+D2aS!d0&@F}VEJpA;|4TGy`cW>M#h@6EYAJ9eb?Ot%m?_~$_2Y5wmRIp&h}RMnVo zu7y`~X*cs|km$UX2=L6Sq>uuEPm1W?B-8(WX&>zu66wq!(S8x@*NfpLR{xPS)$e@X z78K(sK|2<=sFpO(c^ZwO`Xmdrl6|!^B$QWs&F`ZVzOXkgnhkAF*?AYPAY74kU)l>2 zi6xnH(z9q8bFG1?rFslBIT9rfmn3h+NY@-RPx!XQWp-}R82jfX(xFS25~GaW1SCQQ zmr&dLmZe#lTQK5N0_DLPz!3ynGhqwYpvO`PfEA-gQOQaPeNE_bYljnj?3Rf~T$ec2X*&k0;4TZ+9}u z`n}|I>jt(f+;m=~Z4J)7Ah)(a_>Pe7ZnYh`VaYfam(Xv20QNU*6Dg4_=4Iix^U^Gn zr2;t4ZhgOfr|0N*P&@sKFgxKVyaa_)hR8NfTm$emRsia7tM^6=KRfE0)0l23bT8n? zL0D6wMp3VKfiO!D9&aIZ$r~Vo{3Id~v;egEcK5U60DNU6&0;_K5K56m=s3k+IfXCg zA$@SlJoJ5L)GW)t-nt3?)WfFFbNtQMkF_{Xb=Uv;dk%A>pPm1^X=}!)ag3X zcZ5+Qx)6U9ZMQDgAAjM!FIEW9vKf8P8$~^Wi%+Z@ygSBg%-I`J@I8C7doH<>D z(qMCxmQUf~Y5I2xYZRz40z3;&^2K%HzzRU;tP-g}mzz_CM@E2|BV%w$p z#qcldXbYe&|D z=@*lZ;F)2r^3#i4`aE^)NOf$atLg0#bgUmaUHU-vt|P>qp99M1dh(I9dl4q}z4gbk zJe-$FIKYgV15@N@0jtN1VH41@FiifdTNn!C$@P4RZF$DG3H}sM=^=?hvxmtYtoy8p zcjd;rS!oFM?8Y-N1w9?38Kz5r(|3mL>CtcanDF}t{lgUco5wW=zQN!b&t>c#bkuz7 zfiLZ2d;caBq4(YdUbKAVCGEK={adL1wKWn5H)B>L)j!=cbL?C8U<=Bl$NkN$pIYeV zwFKkzHi)-?9WB6a2l?iIU7lIP(<6ZW{BOS$HjMX)d zq_VlVWH*|}Hn!m>X~TxGX6Al!pZdyFN>#;k^y_6};m4W1?7%at^S#U&g;kjz0g-z5 z@iM()Z^Yo0*WjrzHRm_qC3E#krAZYIImc%nsY03HYU`#vC{pd{#fD3uEOSfavkmp=r zb_BBwQBZM6!Wr=y$i-YGAKTOPQABY{!*>5w@=8tibFn>A>A~aP&nyeyiYdmYH6^hx zqI4+IfWB3Hrh~o zI`Tv!^epqqoc%SKfG>vE;dmn`gwPqzuEfd z`Ewgi6X@`*%^*)X*=2_-!kD`Ylv9n>M|MiSBl)z1@l`bqOk zO4%0*u~D!Jg`RLZj2p~Q2Z(gtYQpJJcPWCl>Jc$US}&D|5b!sSZ&=)P9z3%qd*MFq zh-$OzyC++3<7wpP=)O7W&sp`|Q{O_MWV8s!hEN^5_dzo8i&VBj-y%FO^S@=&AjISB z#CFk-ad>DElVqf|r(AD?Cs|Rx5G7fo{PMPu-VH9cA$5e6KWcilRTX4Ov$s~7ybzo|(Er0+W+toVoOGG?G zN_z?^5PMN6)g6&cpOwGP__GH0>`YVbv&Z-E2<$WRy~H@VgIxi-#6B4p%&{GOge|$FA_QU^^Fx;6nf0F(5qpec#)^DhtB!iI&dFAqy<5D3po78ur2WHmh z=u@|uM*u@I)m@PE)0ggKQUj?0WYYJUwSDwGlkbu|*#$Iebs8bmGZdjsQ?*QQu~1n9 zt7qg3Wh#Fm^pb_%B&(KmtHfMoP9A?V8GlfPHH!ttJyOq`_aH9~RMD${PSHfDY$P9a zB9DALnNLgyMptJU+}7IPOlO4c_-PvINUeYC9Zd4hi1*(d{(FlhZM!LbK{GmgyCVM$xV4V$g}&cAXq75#gKH zQcK<3)5TIyeXrz=sW|N4eQP+8*gW(4r(l5o2b!qoQJ*thMHm4-dZOh)&SQ`o>3&6Zp#v5?Nbq~~Jhs+v-)7BHm`I}|ak9Hg#S!T}I=V|PZHUswf)MUB3$jM&N zdUR`(R(3o8&rZ*OkXxwoMR1`V=Psefl1;U+1t#%}mMO$uH8Cex*nKc+lboX$+`#@| zwU#K6v2EV*EEHY&=HA^M+n2;ceI%snMZ*84{Ywwk{>V0Sc$fC?xt{j>e`)&z{{ObW zV`At26H_0G%rG$#nA@`BBt-w!{_RhFY5$1?-p-8=)qiKx?2kddkcb_9((HJ}QFf7y zh*&#lWp$W|rFafKevd5i_Fg3;B0?VJc8O>(=sZMTZD^vUKh_SSW*`TE zdDH#%p`W!G(3iR6(erYc{~e4y^4Qi=QMB}QTVf$*IC-kV#K~V7!%*vK3rb~dUUusg zra6>t-Ha^_nals_Bdzs6INuL1ZUAT>e^XW-$IEI3=FzOgvX=M*I)E_E$A8`y3$=aH z4Q(uoPDCADDSHIn!-_A8M`)YaoA`cV&SHK|X3bxl^?m@C0m~U=&fvF#ANY9gx=MDM zEEZ+n)WHv^-l=<~+^zPAwuAN@tHPBMlhK+NFtaeJ zOH_5}u#GGcU!$=3{&YT&*)z$@dF}N>{(OCk&2-ykWXe;f+`GUR3#gP`C`JuAbMd#;R%Lg3D91A4v^R87FSR7&nweXGmQut{8m0fONyFegG z!XMMQ2SH$d^ReIfe`X)@2$lIT6tcu6a$l(ElWD`bu_rnSS%_5_6Bt%GQJ}*3StH$e zXw2DAPlDaE3xjteu?q-}Skphc_p_R}M8DC!|H1>vWw(FfE`!YCA6WYN=1*BY3aQcj zi*bd<2JPAAO>HziF5}bv3^4M^YM1qqK4d*sS-BsUaekgC+^YYp{CBFj|2Bi;CTD`y zfShIfxp3!PtjMCJGyc&nv#n-6YxngC+)Ynuy-!U*a*Q=0j*mgUFD)A#&Txsg?<0x2 zS-1Ar3s5E4`HA<$k>vJPww$u!wMB0ZJk#6L>NV{@A_aGAdMab%y`yBuHl5a(s3&;X z6rM4%aaAKd`PBP8>vzOjA}oAf@ciJpirAWX=#7s=a2FMvv8s-2@Q`QpTh6K9N5^XR zw$uzqc&+CfsnG*j;RX+Cr~rQ_5N>zD>P|I^o5Obts;S==z_3uzpz~@;b!%(l82sj+ z(KB!A$EZ%~$P$k3)O+HT+41>LR6zMp5cJ|Sk4t~gP%oY?sNe@{M!h95%0$dAEggd% z?Qs}DF~)ix349yIH`ec`3(9z}okvulaKo9Z86kR!K$^sN{llX6bLcIWRp2GuSIdMU zw@5b0X423uDypPtG-t?YZEopx5o>y}TqD)5c)I=HQD?Gs03*6*?a}!lP;wpjgwEve z814xjlc=7vXYC;Owg${$^dLXcfgJe~$XTkR5tsxG(gXhhWgy9R}$wOe1r_Mf|zO*u6IpAtJ@0@_oe~=6WMa>^`V5iTiS|=jc9K<1gu2jaFbv-ngRRC3F z*8vU8xwo~*jEF7qA;T06>p~~+oia)NYrK^&o%{Xe_kD9^g^pzG1RdmEx!=ytVf&C9 zt*TH|6g#C;3-Yci(!v%I_tR3Rr6XUzrU_5wu9{Pt>)Zt&eoquVDS&?=#Sa1hjII?z z8-)#x^TlpuES|`jKtVxMBr%TaG~cw_Vsj3ZY|h7j&}DPJ@-UR4>oWA$)zTR}C;tZL zSNY!5(Gfu!!FUt?MUPF(_v}C~_!k4+SKS^vMFUNeqo36bHT1XXKGLnj)o?%EKYtr_ zF=e(w1m(RoU`T43Jd3{wz7F??lu8Esk z0a>j`l$~MItydgI_~zk*aERG|!{+%%cvCk@MNRHGXUkDB)z@v3x!{v;U>BVyHc~wZ z51*Bv`dY(gr-P_y=14Bc6MHlIUS{Sen^N^HwV$S5eoD2O0XZ_WIE5bBNN_EjGddFOkcj>)JNzA5)XsF52%Sm; z%H?Tf%JfvNrx|*hq&hq^6Z?AJ3ff!oYsT%55f=dICeG^G1a%dlnh+&U0asHSRWUp_ z^wRe@))*1`i+fdl;Vmk zaA|Ha0k63{kPxl>b(ud)nO4xhED+-n(O5VHQt{YUY379-ND`sp?}=f;1YG?G&`Wk2 z4dB$I&1Q{?YHyE7V}H%E_aXXQ4oM%g=x@O36gQ$92Ov{%4m#yic|Clhx6K@SB9ekc z_7)jHv)#2nnW7$Ag>${;x8%y75y9R{-(sP?pW~(x3+>}4T6)r19gJM_Ouc`W?TlP= zULcRNa}7PEQjT#(ODkFq#}#(5jvpB8Z}R5FSf(Kqk)q_YQG*Zee*|%=c%-g*z{g*z zt!Izr&odIP5Lr!jxs_s^BX9949oMwJMF!WZP^&f)p}HyB-p~}yMKt@(ghMozM~(uJ zu0rNR3?sXa2828RGH+dI@MT~?%_Kr!r{>jldSBF2dF!t_ z9U;UY>#p%Sxhfu7NaFYy5kF$5&gK!<5#*=VQi#%70}(tctFPC*7o1t$(k_St{-lW_ zf1&MW7mrCxknK7qGwNNRr&#rtFp$@}F5oVKeeh?17tC)fv=rFC==(~$ZL>2>7Sxc~ zhp%;+VWtHyt*#W!{0iT+j1r8(8IZjgJmcWc6sb*3!GME{X{Ho2$|_=>J4C(3a`wek z&6|o(5>-mRJP^SzuSM}I8n2gvTFDLTYaDx%bQMro*I$K?DZ{>o`I0ob@31`XYDY_& z3tIkrtZ-vKCel_c^rO?zEy=!ysWpfBU{3#Lca~?fke+!YW|%n#`}kE9IQvJsJ^Lb&HRM?k>rJEyMIzLq zKr`~sTYXU3sVvlLs}NKd2-TAg%0dcb&+3r$FE_j+D=YfM1DpFc6bOGnbIZNKcImvRAdetI zV@oYtDt3}`&_4Kb&Q`wfru2+VCG2;UU8fxw$PBa>T2sEkq-VsS?g3rF6Cg0ChQnwt?kbX3Nd<5p=!~2@&zU(-`B zJNGy1mzEB(;&qQ|=iMcAi6W6y?s-eGQr2LrBm2*MFEKN-y$#)`vgae)M$;EG@QHWj zCu*Q_nC?2l==(NRtKbv@Uuu8{`KN&Eh^_59N`;#D1xbX^Mmn<*^%}V3q=_IvGQV!k^Gj@50D7UebA2Y)yVtZY9C^% z(=YG$>6grN^&))fWrmqk$x|XU8&WCtdwD5BceJE`7C2zxW~2dn^4$n+^<4eqQdsr}W zOWABCzFTcuIl(DJceC*~%hbrju9oQUg6=G*eivW#u@)!8wPtrvq*%_gaOXDalnLUE zw|;|>)FEdC0;_^*H<5x}+@HTA(UZeiB2sMPSvTZP;#uGIJe}ul{_|X(->}cYNZakE zTwqxpr|5KTx`e+OvN4(~&*eHAG0lBo&QP~yaAo3L#nyg;^Su&RQ7vvtE=Xp${v7RL zC|@o5S#N=~8WiWVt&}NB5y|Uix?UdjUuNj#LH}j0UhcCmJ|Xfh!gS+%;4C{V3$*J5 zHQ0Y@D4;L334JZEvguVnBfXc>$NK4wE`6R$Kjm8w`d2g!_tOO#3SlRsJE; zO@o8_=&PA*75aMnU{|XncNZv3Q(@!=%g?rvM`FeE?xB4Fb@FALWPc5hh=f_01OLW( zPq6k%H9{{K@4fdL`L47}b4@J`+s_ zAtv>3cy!e+TEH|C;XyW05H$Q${vT%bJh!&Hck?i>NpVfL^b43g^CU~V%4B!ggLLpu znSDw-?C?~-b=+Voi)252Q1j;O&W)Jwb*ex0`*!qn)*pfv$==|`6F9}hzZ&+BJ2F;b zDVSj%N2Xs}Q7{Zhbz&)zkk>-CvFD2=Aj!GZM93U_3qy)Tr~SvMUx;g<{0ueo*}PQS zssG?-YsbD@JIoH?eIHaFFD!QVWN?AmGP{~3Qj;{4XZx0zMv5b$-u zpWw^x2;by1d>`in-_BWG;A{Ewe+A!*=LhhebZGdx&>uJ6g{A{Yn*LTV5AZip@Ktq% zZ`6MW--tAPw-Q_btMMoJ)*sUWzJY1@9^TMLh(3UGOKx zSYb!_=G`0Mudm?i-4(tAoBu2LQs)NnoqK5by3n8CTl%#Q_-nZ*fbSYUn;&1(1%H$O zJNU+>;d>k_vaiNp7Vw$D9pD?4hOe2==A{{3;9K4NU*Yff69fDm@gKoQxcrdU5x(Vj z2lyK)_)h2w-@yM4zFukgW)ghqtMR8BBOV;o0e=VX3gBDDXLHj}yWnr$rvD0mPq1fM z^=VY@!!>;sil?FA3H9b{IM#c zRO30{=u&E^Un*p)M=~d8R_(Lo?AIk{FF$9?kAewdHofHcy!Go=_o*&A`TVK&{`oQ} zu`#Vo$ryn98f49~%nWx4dw$Z353mBfJ>o^0-ehvW(>(*z`L~?p&2bvBNvxuGO-lDT zTNB-F3~)AM2$5eH;g2!B)lw3IYY@s*K4a{Te-^ z2c%?dVt!CHqPzLz#h`Z`egQfwD^SScK=`VZ7;rH3c7+<_eM+O z!*p&#V3Mj=_qy`~fF~vtimO-m+8z#~-5?5@=m}@i4=w+e@G%~o?&xn@Jv<*efi=1I|{z&Un z++o(}DT?~;Hc=N&kCs*{W4K;d=4k)4+~&uHp<>%!6=)qyf`;Vr;@+9l&~N-!gQBrQ zV^iHaja`trVgsi&-FOP-*RRnW_~SnvsxPeX9xdH*JnbZFdJ{xH&*aj|cuqyvotfu4 zc_z4dRyk_&OtDKO+H9di%s3x0Ww-~PX|Yl_DnlOQsF1pb*;FjCvhneyA~MAynKGV{ z8PBNHhB4#V(E3llGkDW~@LaTXf^ComFf``kq_4jiWzCSOSjwm}MGjIRw^96`7tx>m z%6R3B%J@VEWKAUlg7@&O33y!uV{zb2#$v@SZY)5x#^SxNt7H8weU9Q(-vx@A;s=Tn zDHoI}h&O6$FgvL-Hj#08%ogfvdfEc8g{n<^U5Se}?JbX6cLNUBlI1ZQDi?Q-Ly@rS zDiJ^`1+7)s;ta>IdkP6PTn( z>XOr#Zcm2wdYKNgrwjKtV>h_N$w15_;6uV!^(S=R7yp@6NSmF^6ih$kEEH?n znmwhNN$AC}82Z4A?yQ5y91eJ?B|ZR-zfNrDuVvFJ!dvGT6w}7>F!-EaMLKN4&`TdO zQ%G55I3hN}U=<}p?s(XPexQyQ*^nove(=qnApYB_h^@gK7zi?=GEC5k#*qDZ$e+tB z*h<)}?KQ(Hu{IfxIruwjf@8hV!<05XZgoS*QnF4fVo{3aaQ;@t=c27N-d1x#2m8}D z%sQ_SEyT}b30mK_*(@!m$wW^1g9PG)FBLIqvZ4RuG-)EHCkN(s!pw|lS!9KZumZOh zbgE*EtKy3XI#qGCU&T63lMhkF4)LxLq6gbwM-0oK_lco(nPq6fz<0v`YfOM(rB$(f z5R3Ln@(ELdYa7;^EfzirZ}EwFb=O@=3=X$G6_JUR^q4?@I~?V{360bOXGOjBb#uvl zjk(oj95WXA)+$0X$*B9yl+!iIcp_EM*jg+w?8myfQ!;Au%>}OPV={ZPO41jK1O4oB zlFVuPbInQoxk)*l5>bEs_$cO%=K?JBq8}Y_0O%$6A_RO545SY&JER}#TZd#{{wi;$ zU)H-CDI#^^E4ep;VlP_y#1J?5Ih^8Kv3UlfvIf7pux{=TS+0Id`_a;bpY1)4r)|L8 zYV4EFBb!&G8mac)BpF5WGoz)K*xXp=Jg$#snJsj(w{DSM_0Nm8zby!pe7rh9X40!S^VO?D^Q7N0!FS|O;x+@< z<@3z@I4EXr8PCine28PC;cNK(69d4~PYbB?D;D$88VCtUtGlDgA2Tf?%ssxfCc4tF z;~&%7@sE0!&@V!2?NRW*%96A4!wsj9E>a3NhZ~BAbK()r`K(et0bXVI&`tj;Wm0=nqZuKZ$=m`zoKe6v2|i zjP~5(jM^Og92g10E@hUkfoB4JYze?IB32N4;RVbYWOy-7+@}L-rxRdZ_!tItcAKIV z@VC#l!`FGfcbvO=*81n)&+z?#h=ThWW+KB*D6EQ~%Qg1yn46`d<}fbC%9hlhxh$yR?xdY`D zx9+VNf(`>#xVffpbY5>Ta6egW^kn}^SnOnw(})hy6VW!wwM}(1k13DtxWQcrU%q8W zRieB{MdmA&(Y=Ef{H3*;;^SplHkyZY99#4ck-qos1gXP6=e% z$I`D1a@y8Z#F}WU8x8HPn^{;Med~sDMLGSre9K#2;+h^~Fn5f8p@v=sE$#9H_e0*a zQiy`@um{q}@dqAhgOssx*OYM8RFI{Ae4xVLg$@uK14f)5KexA+Nwg5T4aY8k)oa~} z?$1AZGpEq~hrGsnBy)eX^yGmIpCnMkoK&u9Xb~;)Y*(3!Sq2oAeL}Uq6?wy02fC>M z@wKtPA+ODLfxi+=m=yR|({pp(P8d}pbl(3Usw4*Qocv&hIes!W$v<@8N4f8R*7q>q z$+}Z#sV;&L_CuEhT&11$tMmD0$7+8PxATANxZ1kDgGh^B038HDZtAW@${1L8?Uan# zTrb{NezQ4i%cmd;mcz?0j9_RsvgP2_TF(5%MLaH=1SM% zBA+OLUPpeICG6u$-n4ujTQ-S_YW^dsYOOJw{r5ae8)KeX*0mYb0 zgnk#nKgcYX{?)?Tl{MP;uf&f+?NiwYw+8qb{!K6tQXks!bJ~^QXBj!oOQ6QQuQEP< z<^lh|!H-+tVUK})TE^OA{(>d_V4&sVube!M<62L_0N`DVEQiMts>v0O#1gXz3S6Y0}uM z%lesfxB1gxZoY&Zh)#;8+Mes`-esip4}W?qd4(Gmf@p2lBT3{0$D1{Pa9o7|)LE~# z^|Ge_?5G=wFNX87&#xx}d4%pU6E9>UV)sR)x%k9M_Nd$jNs2^Er&+k{WUfx-nUx$* z+wFihqw!^e!AUX;^@t2$IfZuRdD{O+w2C48K|f6P%90H;&#Ef%vS*f6#XRD`m*J36 zHid!=>)2iNaXRml=n(yD1bArf>=j*Tj=^Mu6?k+Mn%@?vbm){zA&SE(X>z~82LOne z_z0VHY&vQG2`;I~%y3C3gek>_{( z=vsjT(yXBu_~%Xj_wtnwb(vJP)lU3NVM|CaI5!n!JM`R!3+2Oyg9sgwk{)>44{{k{T znjx+bE=L#Yfe~@;V}$#dOi?gPnmUH!;>e_BN>~VAmhGa`m^r(gtWQnp5&4xJB`&X7 z+Re=_Gm)Mg(mo-)Sku$TG_orDA1_+koCPT)YX_R6hk)%wDA^FWBQ4b$HC1254d5yA_ABpMn6}M&vgJ3Prl1vA#W7bM)#M`?BV3pT%3&0 z#o=|&IPQ#zSL}h)*X%)|wYvsaPa>gfk(gvI#5s_TzfncUv#H3e_ZL?d1<4Dmcr~|^ zDOJdv!oSw#e>k20ZZbf9rkKcxRO72DR?V}9ThAWR^JERJew3k~K{G<@ ze;i8dhpF|ke(Tj%KV()9wdwby(}(-%zJ1$rm!1`&yd{F3emdL#3aXpu(zAP#ZpZlp z0r`SjbwD~Cs;hJ3xi3H3EmJp1#-9=2g}m|eqiM|HO%;T2`6lNdJ!&UM zzvy;-PV`wd*)6;%!H;=f_H>ERWsd-ML?2ET*nI#yDY)lKAzH_GVqhSM&)|NJPbO#| z2i_6Mv4qx59jP&#KU0xe!I+q4RjCZ->}mcTABU*s_Xk%~S9(Wxh`2VFU`{oWwV@@v zWt#i1?3SUXEam^^Fev{~C_msmJISNSSZx~+29B|LV#>3V=rZ3tTOk$u@i0U*{vdn&I(fB01gf6}v}IaFs)8{JFF})N;5gv0dpzDoC=MK!G;+#ppfPV|+{e z8|3(mngRCyYf6yZFMK4V& zX&>un^!_qJJo47q+@Yq-0#XFAzQ_aylCljDq0i4{=*i+|Bh26`Q8=j z@I4W#c>4w#%lY|x+BKKn*$)le$Q*_L6mpPvrknfWhL#6gy`AA+4&;b%{bDsCfOI(s z7XawWPrxZ&n4s$*|j6RB=QcwYQ{pp{o%OA52$!zFfw3^l=}Z3Mfr| z&ci?4{F0AfP7`NxnY|t6+7cm+5@3CNPe&eWH>z`-F$Q!2iHK4l4@*eCxE;5ADN!A8 zi!VQO3?`7N`n})1R^2-ooDVm*!*69gR4~OE*f-M^XqO!vqk?}{Y9u%-)LgW37h{*T zk%(!NG}2ZSbCKfdi@gSA7yOsw*z37CZw4`*Kc2ZRb%~dlL_aULV*YT=qI|PzgWp+p zt|;WNpZn4E__sXaj!m1o&p`$RyLE;P%m@gZBU!^Fd|u}KR0Y%}?xpu>F+ z<_#n`r8I236iBP!D zLT1z8rIqNKe&qo->hIO-x@D|l=g7-C!b`!h5`(*)dl&W(Yo*^ZEkl)0rJHjWV*jXO ziO>r?lkr5=bRnO7WK8&7fQ&3389vq8jXyQ)>*}o>#MMH1S7nt zpl|(_@Ewf|7qV#}_y+u*PhB{%^xOXZbH9MhEVv7II=z6?+Aa-lm$R_%+;3s89T;BW z?(ZW$WWDZ)p{b77s-e5^5OBG>vg;J(TeTUpMZD~$g8PJcm`|QJ!fjUb<6|#UF%R6p z<&b|C+Ssag8!N4c-2h3O35rDj+$?>L=-dlGS$-03>Pd6>2n;ytN-sq~;r!-nBGWSA z7ZPr&)=)A84M)3yA^{buBA_fei?okbzgG{hbGXNQt^@iZ{q0Vcl+HHuld>C6(iluC zTUvwB#L|j_O9@MC{b~pY^@H;IUA4?$H10_SKF)02LSM`Aqi_ENgMXTZP5ou?bueHV z0_>gFEO&mo{5M_pM6Ge^N$ZDcC0ze3Ur;Yoxfy=?je=rI)4t3(2S;hIVb0jr36&wf!WPUMhF}_7;!^HBx3~)G4W||HDPq z(PWxt5}|vJU;~QqkN&UHPO>RI?Idd*!zBAB3d^MBIHGv-ci>aA+@8m4>uF!QfLQtI z3pLGbCd>G3>r^hkkhMFISpR7KK9UuWcX7_*xboZib5kcSE zi(|iDlSxbeoDaOAv4aw!AELbWeIY zg?8C>Ju$9(uTjJQP+i4V$u1lh*;)0+_ zA2<3Y^(%kmTbs1ycJjfA?fAnTHkcRDODYs`)8p!d~+!4fhvTlziXE7a!H zT^9+3>z@~9NPNvyCAKFfYdgyt0Z&;TQVUz3iX--{QKPy%i z8=Jj$bcFk#YxYWY z-ZStULhi+YG*35RR@Pw?kjkP=~$2dv64L-T4UixIm^<$O}iMD}}=+ z`t$!*i@+T{tO&j3ojqH2SwfthS9eEz|DYwr+mqeO=F6@4mMMZR-6pyZwbqSxw#894(r z1XmGRd#1Ts6$>?kEu$CHKT^7;e2q{cL<5bp0H6RNv>(MP++Eb=(S2FrC3_g`^zy|0 z;`_KC{D%k#Jar2FhNkjqQ9 z6KJ|AHGsqPRIdI+^rshpg7|(mKJ{5tZ>_q>uXI6qn^IqRs^YQlz`cJ$FwtbON7 zDO1A@_X_D48ytm2M}OgNik+9@qJ^zDk(e~&IE?9}7vA! zeEesC7DOOEPF&1`Ol(k4@!w~p8`igU885MLDH_n!*E)QPtxsVH)CnLv;yU#q$?lXs`Zs7N@aQ$5!34l-8;ridWOo!Lx zDxi1o@S@v=D9x|dx#YHIK&zOY$k(H_jg@WuS2dnG&*mw&<*cQ;=&>TUVc`ZvOsa^z zXzgo8jk5dVhHcdT)s-HCz#H0X2b(+o(q+`D7`4iUjS=J(J2T9zt~u0LKKj9|g6oe% zk8OQ#Z{}#J)8Je5x7MK!GoQTPCC$;-z^?WBEo+2@{|d_5e)+_$UPioyYv32m^XkaR z7CX8u2-CG6u$&I1qkYv;Ks9b^C(Kr3?pke849y;sjNfe) zjRzE_sis%rw$G(-+@Cq;Xh!_k;rsh4qvO&CgF`kn!_V^UY(NoRa#hCQ>z${`mRn zg=QJ)rZ>mA=6E#$kVRh(#jiOlpt1>RDEj&J6q%T#nBB+tP?){?Ky~@%L7%uG|z=4$UkwC~MZ?@ZpV;7tH$udRC;MEUZ6SJJTWPQLmXnf#V? z=zj$|K{L8m`wuhk9UGRgKc8oyQ!pd=Y^L!Mp5GqDVsSJ_i@p}o0xNu)S^L~y5 zd-gDzzoWF?CqhLf9J>vq8S{{)K|B;CyV6@k@E0&(<{Fpt2;BrGrz(GZ&j59%mgTXv z`Va~p2mfa*z&`v){?$e8>%UjBs8Mw_aQisTKE8<;D=*&7yMLG%Ziw5LU8Iq7fpSLe zb&SNPYWS(r7GxnKUaka~TS@cGzStmH_`H&wRrhquoZZtmS*(`!%<7J}IrtAqy{Wi5 zgH@U&aHZ*E&t1?jOnw&;dhZwE`cIioTHcE5t{agF23hyHHa%4spE)RA^EjeA@8ujo zcYjj0X64bnZOA5#W5O#ME8Esr4Owe@rBm7PikZXG2q@dVmiWUr@tIa_Y$XJaONVDc;?-HH!V%t6?XeUhy0^HSZb)HorG9(xj~bxfEywvfkI71lGDVZ_+o_8>iqGL-; zG-^dXgXL~UJam!C$;3Mgvm9yat^St^%aGiEAO%}^#WERh>9B0+J$kC+u&j^Wi@f~- zdy&6f!!E{Za0&Fco-gAw*N@jd*L%Oi^;_Q>pSh`W;aeH7zwyJ?RK;?COOA0|A_)FV znil+mi{NhOi?^^XgGm%#vJ4zlC6?Iyx`~}ihV12-;ua3mD>Jz-xM}8(b%k|oBNsGR zqLUc5$s<$MkZtT+4;x?7%oWuenIgysRVB}b>!-t5WZH;<2S~!(jQiis4;zI(E0LtT zoG3kkCS;_9r4sqEFF8R>@iYd3D}7f9JTvSNBVwMo?V!Q1?f*yi$zy|6K&WoBhXQGY zXF7ayM+?JF*gLoX9U_5FMQ;qc;rF<|ZV1^Y|$Cp*8^X=0?w&P+#}W<7uzACx8GdW|={ z+vrDo{e|}Zx}xZ__CWQ98ZZ8on70?daj$-c?bDSGd$x%(s)nrd5?Qz~*1&m7+>OEv zU9m2eMm2(|o1HRdmh8*j9MQMW#59jsr$JWc_Bq+Q{oqwUJv>%^n|(|${xE@lxq&0grIIq-pk6?= zsXw=uYJalh+p+wo{etpC+RGpL@5>hl?PDl}O-SgN4{vwI609FBtlFu*e0=kteB=fD z4=v;tFm%${W>pebWj3YRsmI&l3ZC5hO)Q=?eM}3V*cfh*e53UzeB+~fimd-6JgJeS z^|fbT#|~yQj~nL5PjlkYgAnn$@$C{Ik9P0io1K-=-q|-ocmYzdDEQK$PMdd&Y6L~Ig-Gx@CQn!}Nete*tH3!i{P+sq=419}e%f3J}b!`FNgzG%HI z9tp*$n|3hsrkZ9+^MjV2Uoenf3_5Wd2srNY5eNa-XY--p8(apW)1sBVUi;OI(w?vV zN^ZAQ9!!)rSVjzw^A|Uu8hQrp8ZyKn>J{B7EYsz-X-x)8+FvA>9 zHuJ6uTN-u%*g7NT!$bfErBSaYTjw1@C=H04-?aZ?c(KB#J3xIO#zBYjVLbAW;zK{l zST&XG=>HG%aHvLN;~rfcaEX+kMs{qAx94q?k=@bJ-|98Lr&x=_KJ^l_90j=b&5O46 zob@zAe%TyweBsaJ^SbAC8hRJ#Ts?r=I$D zPUa0Sc!_dA-Fw-r(Q7Mu51h;E7xr}+uLFwM_uQ)^)24mj@rJAimsx|nJ@y{c9)xOf z&ZHKR=6l$(xToaq%3^1PL|f!hseh#3dgyoBYOSaf5g^mknKW3U0qQevGZN6x0X^TzAN8-=+$42g zA~g1`fEym5!)B|Wj<}aBo{Pi~cd;73;ZyQR^i@!`hFr z7#E*O*{T#a0sA0mrN|uZS6*bo(nDUws|oSP@t*^r-dvE*^6+I~S=(t{{U@dr zONaG)nDDjwGD&IqR(^NeFwb0rL4}eE%>(jXOoXyq0|s@ZMwR|gvV?1TI7%q|dyu}{ zS8`f%F7$>Ge?==)BJ}Cs0z7RI?0=wQ8=`@M`slCn<%EJt_-Ja>jazv7Ql}TUTY7?0 z=7Gzsj6LOGBKygbgNUqk70`BAaXLSC;Gdtet_AClb7G&%_#AKDaDYTNqjoWiLz(|Dd-*pe@%$G-(z5$VSJz1|&gn!f^rtu2{%P2y>4}zpm;$#o zxs~yo?-TXKaz1}QCv$D+BmU}G?EU+6JBMyyiRZp!pP@5*$V4|is%$dvrYOgVdpdlE zN0C+M*Cm_gw}6zdtAm{RT6&o-0{*%%#1yNLSs-&vn6vt;$-5XUE?RtK9{0qVoKHW) zE^peq0uT4zGW4Syx?4N8oZl@--{J5J9_va!(pA$nSQwU`dJ0FB;rc#mFI!0}8Ue8SnJ3jwR0kyuK zVZQYU8~)OjuaQ_gysq>Q_F)M5E=WNm#3kpaZBsndZ<~||HG`0#>lrsoeZu=(FAlJ7 z#f;~EOmXoOX-4d|W%eM<9%Pvh3t2yLNd0@$XKfs6P)UY48V|NkhZ-XrwV`BNvKu2H zO9*B3x!cZrGR*iznm^jq$JSf^;*}cc?)q3fceZV|_NCVA(wrrpwcV_475>C$6cEND z$zlhzSp8VZmie1o6+4qAZrh52#>U?I&GEF82%X%F)^n(Uyxn~myWUrBnyCBmx8L)@ zo=ePhAGUO-$k8ftsrzuuJU-;>L$&*`_3sopiVtpmb052|S#BeO=PxtH9nnJi!Yob!219c%uDmtZFv^x}gGtiq3|_j5m%30WePPhK-(^5<1^&zT^`g%{%7IQs?GPP|GHDS!grUW>!2M@Vzg6A(gtEq$C@V9*P0PvR1mCLSOCIFg z_;^+0-e~EjH$|Q~;gM= zQx5R=wJ*Tmg;)q_coC_6f>_+rj=z@WJ}Pc>_!|c@EdI1XD6>(vaQ_F|%78dLTe`3L zWl*x}b&#lX6|et41=_Om@jky3mGQ^iT>1zbx&_zrYC9BXgrcQ?d0hbK5P$2OL{ko7_&3uZMj#hp6&me^nU5lVwn{CA$u=o}0vmbQp ze<*=>Kpr6pX>f3oS8>5Q)je;L>IT0S-#VI@)H+z=NNl?o`vmz9PC?$+brJXox@LMF zV?Tt;5i17k!@jTC4;Sl3U`bTQxDSWT3IvbW+=su+3_h%NAJ%Q-!`D^hPwvBQ=^Vf2 zgW?t1^?86l3nBnAFx|{TWiiXIV|m`*dC}?cc2N0bx`}dIe)4}%KEFfzsWk;YFCl%2Y{hBs4UF)Srb^-4mNGKRXF+L4T}0T zvHftqw`IPEdolL5jH4eDX<*+u>I2JkyX_^o9a7ME;42W@(=J9{05j8y+N0gqzS@} zzfSCf@pm>UfqkGnQ37vP4E3q{^_S5Agiuxi@x=)sjt@RZKU%s&rFz1TYE;0X-}u7~ z8Rp4vGlOF}MI=T`TmK?n*UyZ;(`U@N*?f26YUuNuC?6aA1wX`pR8BDaK5*JjOLTVSd2}|aD^wX_F2XC6X-p#Y_HGEx?u5QK z02hDEOr+W(zF};()~Ax@IWK~| zKp|T`c1vx&^+_8iB}f7?uldd)is zsmZmWBiEubGpFT#))rn7`afinrJ=W8VCt+0{mH)k*}dFnU)J+t9zt_wLK|hDV@+hs z@YZ`yT{A@>$fW*2h=RrVa+xN)V$d&Rdz8+J??%+rrEj?9_`q&b)N5T6?e5RL5*Nl! z3^!dIg;kwMDHeJJvUBUtfq!b3mAjk2b)_c&AQp^hjyANOftbwtHMx+^?*0tOM!xZR z+sceGp3a^kO>iiGg(lwMA^HhP4aB!W_FHH$KXs+$Go+x?&7F_U;)#Fp+$*e_C|oZw zQ4;@LPuo=ndq#9k4_#u+^r&V$fAu{)XSru)RIxaN)ptvE9=mgs72ogFP9R!(#wN$C z@8FEwZYb_t&v(bH7wa*eyL)R+W_#5hReP>#*Z&surm7#g!qqRsHk!H5*8j$ieO+&V0XqDBl`34Nf3MvQM9u$k zycU7dcfNr}vvwpX-^x=DvP4UdvYpTkug~z!R1)l0xJra_cHgcsdyuabU3%i-nVGdG zQgj|qYM%Iquc-ejI+bsxk6)B|>1S~|GU|FaFA$Jh`+-q$$iYV~rqAeA^;5DfocK9) z5|X+SE4T^qs&3h13X<8C{xZB{xk2I)>_2FnUd1>+v-p8)1=$0L^-N?1w=siB(J7UJ(tnEv$ zszlBMKe{7hLacW;Yfsl&$rQvHvZ1FAFXA~lZ814FfRy%At^WG31CNf&hH*j{Y^*EM0jgMv|r8KG$ z3z^hF7xY0&v_`LY*vkL+C+spF>CpSY{_Y}XqTdF*gnhH*0Z*PZh`L_MNi~DvoQb>V zLe*BOxGEorz1XYpw^5S;n+Y1)$U%yE`7B90Rd9ob4fAotv{fyYQi-5?MHWD-{9b7F zOtJN>f3Wl9%8WWN5LqnRLuym_@cWTa;GZ=SvyT&EOBmzWkBV`eS*;k<3zb3X+ig0| z>>g)3N+;-Nd|b6W`GBBr+81CVL!0yN<)XPUDqC|T@{3t+OXEU*8%&vYq*aaU5qADH zn@z?=k5J51zu7KT{)`VumA2=bUMF!@<>zg6rOU5^PdkyeEH#RPZ~PMZ_^zLP&Z*2M z*4=bko;fz?mTtR>KVEHHm%zJ7kMUC%G|QPv=4LBFU*dv*xffFF+KHCA3;xL`IsRMd ztA9H4_lwjflj~2MaDNGZKazIZ`FlRKPY-IZU{DT>boJ*4^>^a$pKWmUe>bSVD}RR; zi#i@7nh`%zeUfh(Y1yxIP*!!KO!s2x{~Sx3@xe@XV@cg(cI>dZK;S^G!|;b+Qx3_$3McKc0Gr{a$FoU|Kb{R-i3J3V zuyL}cCApUSQ1N9{W0@CUWR>i+K1EB@40AOHXJ$hmM{#9cYx}agqB3cgyi1h%jvg1V zfx7#^qA*%$PWp>wxEt$WxYqCEmw$Eqa*8=hPl-_dN9ZuL3&rd? z*;RfT5t1}NmXmIde2qUN)d2W|E;M$|pQtkofB3U)Xi@-!@atFSnPqR-#4ltkC@6gS zQeUaH(2R7D^ho-U`0|&ZUS#?TlAE^j=KYcLrhyzm z>V;iX;Yq+^emM=K{Ac&$5NSK;zgr)*JhJvyC2q69k@k0=-FxAI!x5Ik4gX{Y#9nt% zlcpt0w%4AG?R{($j*M}Ug^kc#zq@9nY!O^kF?+U?)Xe#kdr2G(z7GuW+4fb+jC7Fv;)71}Yq`FX9x=^K z9UyrifW);w&ri=Yk7;V1AV|)3&Af9hBKs)}ggFi7XPP(J@@M7vg1isEU%t#dw#}x0 zKd0093?!ZAH9kp)iqY*E7@q@_B3otj4*nKDJLg4e&bFFS>UmT0#=KTRb8|D%RNYB+)A^4qL$2eRgTi|PKNd~TWS zBRWlX9HcN=?`uQA_)*?a-s8t)IgphPmcL?Avg;>I>LG%)Cmj+#VvRO^p6m5tpMe!A zE6fLwA?YXh>66v#J3+m9%+)mHV(zbWqnHytHfAk8Iy?bish%>q%nC)9LyQ zx?U50>Yd&*d&!eIIWvn+pTV?|b(b;~k*SzWeB;H7u^?=_r0Ze;{L{gC4Y;3yxUxG% zNNR~EZFXClPC|BxZG&;%BF1UG&2VRL_$x0~nh}1$e{Ds4i83fU6(-7xXT!PeIvH@# z_~fpQt6kfg8kbNDM?=&>J%^w3Bl!7sUbo_>6nG2Q%G+2~7n=CNIT$SK=FHhy75zG& zKDD$?MWnOx)i1i#Xetk`!M5={OuO};Iy#F!yOhNsqh>T6nM^&xYnfy>t=`oj_k1Cj zFZ6HT#a-$T@M?PneRiuIQCE7`<1Ep&y~8W+T1UmZ*Yv3Ev3AK?9?`VfPijG*m?t3eiDu}fST2`wp{ks%f(JoHBtp#lb#G3c}JM%nASX}zPefena zJhPrTbLPyMGiT1AH7R&+L$_Q>jCh8#Xi{{UlR;q^vL|O;@z++ATPKNRPvu!btEb{= zq53p$e=e5{GiH-H_S`Iieo{eo-buZxJDt?K<_3Ida6ZMU!iH1P4A6f(xF@dGHpy*&6Z-GzgTK7gk5I15gHJ*< z$o~FmlxlXo=r&)7`e2X#d#2HPz$pq-!@G-K`vk{~`S@Qm4%a&$4rixt#gb#_2`dcp zhhLu#-5T<@u0d+BzDyNsdu|PX*7N?w;iS2d>B0H)_^^G=##8FHOHiyi!B&M9yG>_{f}HfMM0LKH z8K3il^1%A$YG7lxzg)ku`n^`5&KMi8c-GIQEum{5krKS2r(20irWF#1rKcGPw2gWD zkm2Y00KPtn9bIb9Van8;xx7{gk-}eA4LQH*#2>&};=x%4(wN$HA`zKy;4p^3A zTGH~8_s@VJt=FaF z8ugQq=P7^Lc=0rd$*!vHeF0W+x~kS3`p>iRIVR{k-oA$CIo>*D-9>#Xl-QO25Fb(xZ&+y~jDNS!A=v@pI5^@iJ)`GV4wI{v8iHrEzi0d%~O%YP@Wg6m% z@{g$U?hhPFS ztU0k;Pl7vDCKs6xKhwyb{96|2VI?|H+IY(@voaMedP0-3C(;xwBpLlHnKP{p(Kqll zv#YCkh+)S;V*?Gy?|VFT+ggGvhIayLVn!2_RE%CRq?&kg?&gDXa$2HyQNFfp(GzW$ z>FTx~AL!78nMoqla$I;W{GRlei|kn>ZlyoLr%rFibMD=RE0f%1VSTLBskgQtm8tHp z4NKhEsY4Ck)K=IUG3*7w!m}L<&+3G9{4x$Wk}G`V$Uz%NvScjQeBexIPEjp6H8=%S z%kA<(E$#vMh#pB&%CMGUJ>5c%Pxc@Q1!a?UzJJfZA{}gSVPS~o7Jc!ZkN{_9VBH?-(^ z5jHcoE&w{eKij?fekP|Qr%9KJ8Qj1o`Nh;^z$<|qy>_V4nZkQ3HU4Yd`FsDT1?N<_ zMf;tPh!cUYURuZh+rga1&AM9f4Q{ZXX>wi2a<>t;Wyp8SsCMx{{-BV1YSW!La&~b} zQM`Qi;0GV!00Bv`x?K3E(rvB``D}vx`tk7my6;iU60wvgh;mWB1b3BaU%5rx9Og9E z3~kQ{Bn_AkFy_}5EWMxeyh79fNywKMq!7m;>H;!K8_s_#UH;Y%Iipt?&WUC**gj^U zOasQ`a%Q{v$7PWCGE7EAXQK3u!i=2!Cx+Hj>K zqdq}8v7@r9KSiJtFZKF`d$88@OY%B+UVG8W!d^bPh9x;z1I8NnYq+qeudSfMTBgO` ziZBE+Hsz_o(;w!F$*0xFu)a+FZc7UcfulUFyezeaZej(a1Qz=NABR}o8J&WXN2BJC z-iGRuMyT=9BcR6Ucxp-&oUQuExgt_YNL|ZzNUlq+g#VA@Y*Tfk8^<^$UGNEIXLg+( z-N7&Qb2!c+mZdaX3b=5p{?A1LU3~l-zV7%|aIU8(vSnaEYv;ljSuKYlCCI!0F>nyb z9af^|@n86se(_&Z20S=S9LrCJa~ee>M!N*{XMZV!t2OZzO)!ZTmqAyZU7-5ejjyWd zZ~L>poUZK7l`t@2WvoDIMz3Fk?sEVZ`I1C z{hO+M$%`XV+bO0azxpYAoY8%k z2=QcBN{c{9NAtxTLipWqQ75x+vQ{l_IOvC=p>roy`Iz zY#2d;?V~9_Z8F@(Y`5HwEexnDID`FbzTfh+b)JyPr>*``YRgWnlu1x;Zo4gDqGP|^ zeRUJ-dZa>G)l?2iuhOHw`y+@Yhm?X*`sJ$t-pC)GpriGLPAfDo3| z{EfYaQW9mCsikVt-BPO?)!csGT)s!f7Oq(h{j7@UM%qY}9cTFua=!~8NoCmW1Jk!L zvL6AE1&heWCv@MS6s&$8AjY`yx)*@5n&l-JcYBMGb!o}{ux$9mz8OTt1~4o>e&qjo z>}(uYt@OXLxS2SAOMGD%E?Vu(KYdo7?5hrl(B1G)%;nAo9``i%uGZ$~OEmoDoIk*)fvBfoxHTQ5 z{)tpqhhy#$Gcto+90ga5rcpikJDy8lD}#qaKZKz5LFD8N92#p(T2X!9miXjoHPLV82BK zStY?9LFMi>n@ho+d9KSd5hu#DH+qO*Cg)h-A7Ej-u?+m3MyJa$Hd-4?r!`?%B3X5h zWBEk^RFN9hX;@-ghuX4NeySBUUmr^WIY%DZbF#%15^CJGfxNWCHAd93nj*AehR#$F z7$+3h9FcfQ9n7uijeVPKZt!utxgxgk4DD=|W&03K%t-9qqOC#E=SUn+O<;c!t3L>x9Vc`d+`-stZT;QzinYA zdUZ&08;2($zJ59BiVc3aR<4OVxJGi-TDJy7vKkx_kD@H#iVFV5@q`-6q~_DhkBz& zUTidb6hCa@A=XC5`p59*t$?eB?=)qto zp$o14uj`8Ob@Sz+DB$5+*P#_Y<_w0L(jkmDzDCu3v~xQaNuwP%G>x(y5!-s6ShAKb z8cUzrWld7m68a;gUy{M`iq-p0G5D+mv2H29iFFq*VceaG#*Plt71qAc$rF-Mkl z7)>S{b)}aH*L;WoG~rnzO=4m>=L)x+yubF+gN=ae(H|GG$J(kfGfv7U->K*0L6al)R8Q9*r&MA=2kkBQ)O zmWgr~U?QkXbElPv3Bk!OAaIXxqlt&#>p#`RT)bYN28QK1yCh{(Hhq0dpp)A3qgkLS z%{I-gd{gCxh=eYcs45ekN)V=F^{>-dCY978&H4jRtSR$3QgbC)B+4FpKtS*7a>Jg@ z_p*rKt~23-x@~1Efj{35*M?hE6!obsJDEG&peHlCU<@I2^oTvuYMfx4iY!3V6M_DC zAbnYVrkJUBsZHmJ>^_IYlPG!*9lop3Ks_wz>PRZ-1t7w}-+TZgnkf4hvW{RL!>PJo z9uv>DE{{_P8jU@=5E?rT{?Yt|)S$FUm%?p~>oFpjvuz4n^cy?=i}R~|bhpqYzDxO! z>3M!0``_bC9+tsR3BB6&{3@9BcB)WY_D;ExX>HjBchH}jBP2Au_(%AQ?ozvwSInqL z?9CNT*%d?VkqSwH@o}EVeC2qO{wYRyWl|vYw%##_Ox>k8lKYlI)D*8u-K=40n8#;8 zhRKFnRfBsJ4bG}vPkiHPPK7nnLnI(pxyOFyFGmbnUc0{md&4QawC4VLiL^H8c~~Dh z>+~esuePk^4v~-ljJn|m!EckOu1t5-dLqEI8Nz0#5rFKzpTwse_kZuAmwo|KK$kLj z^DmHbV@nspSPt>T_Gr%G!qfuK!298HgENlw>F4t>YGtSdo! zx-H+POW~G%CTW^to%-+L0Xu8kaMFoEKuC5 zW2qndDP*rP9zu~xMY5_Kr^HOPDx5Vf+ho5h%E!|%S(nF?lj1y}RnG4ek|vQACXi_$ z75^uYV~*SUN6m4G$T@mlN3{cTpKL$iAE!q2CGPK&s$jA*qmGy8;_}-+^{n9-G8$`` z+en>0N1cLKtf3y`!}&l{IUZxbHLFasaecOt*yS_rK8iP&#Z&C>o-#mB2wJPT zN>haOVPo|rMzpTTjtq9vLUnCfoivpcbK(WTs5vp$=EN?7)t3oXOtbQq*`Eu^ehP95 zxMTrU)s}U%KC*N~_aVd{(_dr!Hzz!98}6wDRk{0UFcOxS;vb3k_?^1H5~+CkbVD39 z*8-bl6G#>MW}(ZtUmduMmH-|}E>d=IPPy~`R4s805!g!k|Hk~~wR#?ic9(emQc!%G z*M-{pzk@W%=+~n~Hq=q4-CmvURc}raZUx+}&H`!larB>d!~LQmBI;@vXvS zQ*tdf1!&I-E~KxREMU|k1EmwOdOaS$EhsUB5~f7utsWQZxT4%O*X`1liLla-uZ1;7 zsm`wMLOTmj4)&8Zr(|69jk^>x9Ubeh?vr9)vBzYs|EG)RQ+Gl(we1iW1VhdUf9;`~ zLbxx>c(~)KhKax(t{wfS++y+QOyFO0>H92psg^~;)9rzf+}2K5zvf{d>#BQP+cj|{ z#3ifS&lWT?ecM&uF{s=`@3#7O4SD{15g>+?plLs(omwBN(1U5P*|)g(=}!NbCk63P zDgPM5TKdXYEngxbX{>&0DW{c4zZ$E5USH}!V#yRq4mGjbC4DrSS7c)Kck^p=?%I2i zEx)&~MDQ5|ksd1$A?tsk!l~#uqC5#EXIrni7IZ3cwPkT-uHJWf z*(5l0-$Ti-EC&pk--lAwXYYi&wsx{$q;xk~ zu=(1ZIkz7vKR)gB!zHNqPe6)`)z1Jj7zoeThzAt&#mZZD%m?hgWA*Hp!CD>%6I$rR zDIgb_Af}^N+3hrOlyu}j_kf(YRvU)5|BZ>A?2a0JX)=fO z*^V?7lteQ4+`GeR-)`0)mHK9)lppJm>2-WyK5{`IfUy2=L_RmV`{o84P>w62FXG?d z%s=I(w*GPd0Hj^S365WX#^ocnMXu%BZJrX$lvDKeJ~M^&`{?D7Q|F@}ml9+I0c!Ho z=^#FUe<|6h@JPPgt(*?2_PzAcfr=^b-6H;b9x zws{Tq_g<}2yF}jd0{$=~Nzl}^hPa}KK+R#+5m7OxcWz0jXUOHTko!R0dx!90-)?H1yACE+UOn80 zKH}z!h_DMcZxfMmpBx8vKH7~12+HNP>Tm8IR-f>G<3n)O0DtA2o9X4Q^LLpiqVHms z*2Bbzs|;7$I0A7y;FB6kY|bboO2Xxj(xxHsd&IXMJ0jq31IiWAz-3aKyE9 z?$qFCsSS4jX?1U$i-`*2$+G*1Yl$x4F9~Y6qz~=mv~9*4HPk5?H^dLj~w8u|0}=Ey1M3m{#z!i78g0mCt-lx^^zJOM;OMQ(Tkxd%SFLa57rmTnXrQ9h zVq6GdDpQ-m!jY%m^fjz>d(C^|U!||tM8+WP)iYLq)?+^AFyzoTjHuTYhD2T9BR1*W zuK>KdPCnxQe#kN?N!Weze<7dO!7c>a!}B+P{}MLQ?wy{)U>$*=;@7`(*m(r>-6xeX zpq~+#@zi1ubgc(^bIp6DZ^UNwB71m#I-?~vgWD14ohB||n-iO{9ct!1%NcxB?`8Xp zY*taqwWK5;Y*vM|6=SXe#TAj z!EyfPeoQ@O=smP<7Mw_ozv0;G?Pov+@Y92fNSTGZjFn44a}G`xf6`i~O{W*{(*jkF zeL0MCcJ#+&*X8&VZBS^F_Z<(SUJF;Uy>WQ*>fWUY@Of#v1@9~iue0YLWuGdOGt~r(}yATCKT3>yr zLEM#3_jEXcg(nX`Rxf^h7{IxW0L|~h#ry{2^C{N9R1$#-ZpMQ7V=>Zv5W~Z3rk`c~ zvHG9jh{%lz>d%M4RGa*CPoYLs<8Qg@mFuwfP`J`o2*jF-L%XgH++W;z8<%3grCA=> zb)_QR=n|TuWV8bTDT<_s|4c1JIt0>hPklY#4Wt7&r-7UGW?HRKfJWC+cJzA!t4~KIq?r(CO7yC#1h7tCzMF}MY{7f0?3@A@485% zux5kP({;QXB;ZEm4H(oBkdV9X0lRn9lZ$AN{>;)&x+Y{^=aS|IsRSbg931?nY6XW7 zSZ>D4gFRybsVO-@~7|YDX0G<)G~CL0Mc8fN}-?$AapL-IfIg$;BZgzW#9`IBqU2 zfw3z?NPPOx5FB@{Ao)8;a(nq^UVVyYY`ysObz3jG4*{VAgzUc(fq4b|W5*H5J$JS- z{DAL=Kc4=6Oqr1X$5W;=8(n%v2_{;JB_V67fJ zq^Th#d$~9Ke2=q;Ju(QmlNlkVA|F!F7{q%7LI&}+YWoY$rHvtd!bys|Q|@K1)y_Ud z$mMz^uAe|T@iiN}!Zk!lnd=4;k#Qpq*9PZn{oDHSlMXHzKlBC_MR8;RY#Yuk5i?~+ zTe>f1@zsY(QIFRRmY=`=WWMLWu5T2m=r%fBvPwv((#h9^1}&vM+26ziwX5kNy-T&} zjld}%8fBI%-`#1MI4zol>Q+7|s!D8KGgBG24Hc_ukH=R`e}4%DB*M*5ae$f7tAB=O|-?amqQ^TI=Q4E{9qJr(mQ@kql#(%QR6crLHD?C5E`$Z#hR zVWL?)d2dlI4VeEQT+7#+ox6J-uW8!B%s3HASCyJ>B<1tsukS~qsUzY<2o3}k*xe58 zcPIDaO>h;oH%w841!Yw8O4^aBii)JJ%fIT=g1fpm)qU~p3y#dETF2UI5k+lOO&sJ&37MbZBNYeK(}u&1SB#tLVO z&UTk!c*tKza$~msWH9589lz2qT}JVTRGBCnd%MWz zGQ;>kegeifvn+%o1Cce|JbPbY~GAY*NAL`r3$muJ(ml`~2idjS-kQzJ+ zD#OW0KG?gG3PGLSYU~Vz9R__W?lPFocExc5yS`|FhEXs-$mMlSpD!Jku+O!NZE>mI z%LMyuVQTO>G_&q+6{*On1S(R|PQWs9U{giuYvr+fm(yab{!W?+3f3H!2^0<_MT^NLj;fi#EBf=OAy9tP@Lb zg8v#{foIaG1SS9WZQtmd+mRk0|E{nw#~5nHo-R34&2x7Yt}7C7S5DKnXT1jgx2Vjm zv+3&>7@lv`END2V=oAj( zGrc%+B$+U@VPc++d}j2%oC#@-FC?csC*U16!oX=GOeY#?HJ*Ag7}`Ze8q-Rk(O~-h zqn|(3L)}@J4P`f+Sk+iJwKZivwF>H?T(y6mZ2AlX?b?9RPn z^`j%|M|$vFWx+estj^&!Fg9ZXNDBza-(Qc-I7N&N2616Hyqpr(oE%TSXk(pmpK-x& zmxZJg``~b#0hYE7QCpx{agj9uMMSAtikVoA? z7xD!f1hh`sW;}unB~{}o=z)&;QbIbF8ruj-{*GsLZN3D!T7f*959tZG-XtLoufhH) z^44!bSVc;0+0)lCEdq<0eAZ9!iqHh8N*2nTjR&@TZBDsd(j*M|#Dach5^%LjSWdd5 zk{F-XM|Jc65G~N?DrdWMY!QHL&Th-1^P|rvf3S{402Myo*Cg>2f(n{Scsch`X- zvDmu=Jn<#O8z){f3r_q49;y>rDYv`-+^<03CbG97@D09%KwsZZjkD1ht43*SNZ8gT zYO6!gmST4*0fCIV3q@KnAo9M$i%@Jja>htv4kpIU_7RQJ*O&t5Mj!D^QK)>I=p!!D z38d+~&Lg4{8<*7J$Pab)`)T#jqm!HCO<(LAZ~9xuOr|om_vj?=hBsEG`~MkA+&m_> zu$$Q66&W$YSF+ueobJDZG;OgyQw#8actRe3H} zTQ;5x;^AUa;2zwTn-gpRY(){j5c{hV^LUGn8c8L$yAz-D^iyOeXMXU}F6UPw?ofZ3D0^3DPc>1mNViM&*=~#JUT{v3n%lrfYQ8_< zTB!YRYKbjO@7DaebVCi6QlHjLPDT4)4SwN@2c)7OUjutsH5o=4-IvNG4&2d{-D}XQ z4E$mh@<0zH*DZ&L3!p%Rz-#h2|4Han0+e!UK&)Gr2R*@QyN8_iUTPH$w}Y)+&<*35 z?Hl?Rd?>BTr+fu=C?SZCgkw~pkV-~`}dD^$AKgMC{ z>C(%wV|UT1EC8&n?Do;8Qoq)xSe!@vy84T=tPC5V$5WL)mY1$X-8x_14~)WKz{}>! z*uvR?(q~x)x=1z=%grdRLdEKH>AJU=Za$WvTS7t%j3&(^~=1lT4loOZDJ#k?lKTp{i|t3|0G^!#TFoF-x~effn7?RN7ZDX;yxNKzl^Kg-}LbwAMBs>*B_6R>=Pc3bVljp zmBe2E-~N2WG~GgD`Jh$UA9aeSPveAr%}pcY$<x~Yu?R1Z_E0>Zf2?7`r+p-Fvv-qNlM!}dB^oegVZ8fjybJ9jyY}WK&C3{= zHv3s&jS8SCI0vs%oW`Sc>omW>+(kQKZt{7R>7HP1AF#GQbNz|K>T@zoik%f*WTQ5OmdmNx{iVKKQso%>pvTlT%Em}Kbh?9{@p!{Uw!Yg_~X{Y zQ^7w!zITAtfWH@~qEjYFb>Ppx#A)9Yp-Hbb9pQo(N}8GrIVDav5>4#g=h=c)(>E18 zZ!D)L(eLngau;K@&_@>$u6;<;J6%;tL_X=J0RKaqZR{3t=BKf%Oq6ZARQqsyP!@~{ zz3Ir{Iy88jyL=%R86C3U7V5#Z4mwj(^fhwvm9?dic!ktUnuUS3hQF57v~D$$SjKbT}O{?^##YAlb& z0+Ki%+7PG-IcRDJ_2pLuP#>oPZ)PcgU1cqu%+kp=sE`l$Mj$!YXek`C_P-jx$=?4~ zD*7hpCjeB_SEIF_5A9!9$@HP=rtWTCzm^vEp-AzQs zEsAobA=UE0UmCDzg0G!4r!y~k>1Pt@e+qR{$kT=<-$ z3yy2sZH%sc(hIVMT0nmxoKmQg%g*Tcw6}#^3$u4Au_|!g0sc83{JMJ+73tG-6*!s4 zB>fVzWiul#0Tb0l`U{tdub?A3!Q+fJaAOW-_evFXoXQ!3td8TnXT(L_+sI|4`^1l+ z#Hau2Nmm=!RXSH%EwJS%LWt2nDC;e9Dw(ByzM}DXknF!yk;#G=^+T_VbE8WL27qbC zpT?*Ahg1F0n`*Gx13{QD7hFe}JKla2TADJI3{Vwr9e#X)P+p?ljLaSR;fnf8YEK;` zzQsHK7$T^!o}JkS;WR2hBgw92OFa3!f%tGdxz+B35hde)D>43#S<@R1*g4Q3Z$NuY$NzfO=TCG zakZ-Xq0Wl6P$IAPYPhfnOH^QReSW5+j9;@k&AI8&+0kn*jOqeVKO3>zFM(%neLpaU zn5nO3z5+=7Nm^HT{EiU#vcso{O~@I%)n4e2a0f5P|HozTy0!rPGNx%hGs!>e08?TMt|RSJn=;QEZ6&TOMaq_@?~(&%GKOKu?8 z|6zhHkw^J!tsX$YH3f6APxB+Ne~a&|_{YO|Y5L_Jl>Yr(TVxYLY_;*ujfCIWj7umi zLxA3{M5E+aqI6{Zp>Sjkk=ySncr_8d6|wb6vFILL~T~(iCPytE|G*!uB2=?1SrXwja>-w}s#= zC$&(lJFQnI%p>5J=(YoWLL)74a0w=_#klT_62kH1LdB{ng{x2n6ihtA_%l=&fG5&Rn=2cl5e4{kNq{o=2}%iFqaMenf4Co+?I zW*+^k`CwK*Xry`K=SF*P2#;Z=W0(7abq6G6Hqay z%nVt%e^iBg2<;6fnb@@p08GPF$o_ZZ56PU4T;CUFhSr<+Pp5eDtg`jXExp0gi<6=K z=HWqlp-&%IW9efKr@Yy3b`8>tefm(+-E-ISXPsJN+=qNAIPMG&%(ndlV1UosS1C8h zLvmk30Ew^v9>tPg=+;#mB#(xW`1Gkkda+wbx;s*koa&poVl6dwSD%mPY>^Q|K7da1 z-KiY{8utcbI0_HV^>-7%jlUO!@;`C_TNNQ+V!i5fJ92}%vcKQ0FcDV%im<%izzSrK zn!?1A&A^sZ)0^Yv9MQ8FnyFK9u9%C+pb?BG8i&M_SiSuOr_8$?Ba;k37wiJi)vW*} z!uI=w?R!>Gyi188ttHm&)&=0lzf-&U&)xx%ai{l>5}z@vZ>9&ei(gca*g&Sr%iVxK z3hB~co=sZpxvGJmE+gZ+aCcH`~bCvM-93~4HvJo1wr|L;qvq>7)9$7Fg-&@ zMA)C?g>H!4TyKy&7Hw+06LLV316KBzrwB^fe`@#TD!pU7$HyRj90IUzsi+!YY*j9F zPkAE$tamtF?-5l`_N7Yn021e|IqvcYO=kI_4594^wLp_9wc9*IViVGj^JPeS`E8cNSBN(jyKHIDwykJ5&nznZKHPPko<1E7T5g zRbLKDg$L!MUSU6f8Prqd26{N|tPkLD^Ma%j_Zlwb0pXz#1o+3)*7g^Y=#EtTr~1mT zc(rx@KM>A;cg?Bc`Zl0#eZzV;T;EDGSmm{4x1AlXZ}PqobsPSqaWt8$Ttms~C1E#J z#UgI5hiy-zrM(vfyVBM%;dfltuUqA9>y|t9Ug3u|OY+zHYKRdj z$8mP>Wxx|}{5j;0dG07pu9aI16QStt`cRc&BD+Wah~02I|4*KN4F8BX5J($wcnaWr zC&!JvTNEI+g*N91e19N~BUQ^6aO#$|2f-oJC-sOYU-H53?0b_fXp7=?+gnb_$+_+@ z_Ri7Azi%qJrc(C)%BO$Xs8VhXQhKmFjAJK)NQ*}T5W(ar`1mTXrb?8(dww7uLj_q} zit)q4j3q9Q=d{gP*oYF<8Be8j^oXDqUy)Eq|BPfg3bh?G-^&x`Kx290*GlEhG1Xmt zdOUS~v72J`A!}b>Xx8hgUpn#-%#Wvjnejn(+P~CkB(a4AC;A{1`b+I;h%G@rpIXSD zrJE@MB&tLImM0eLhZt3*f6An~h*Dwwiaa(&G2N|5~%;0>oqwoSN!0+i~Siy6R zr2dBgB^f4fVhNjE;y)QprB!!LJv$8{mow0lZ4$ckIpx-bK!RPxst;9w0j$Vdm;QP9 zW!`z|w`mHu=l;Ns%QdQzZQ88%p?-Ju5BxnKcRyT^^PPz>#N)5<yn>ZV%Z2mt1$BNugvRf)CyzJw9G~T~#&n02i;x zi#bE;aT7wr851#Zt>S##3r`?6^1=P^XDLP8o%b35?nydfXZ|yYFfDyhzn411cP9zi zQ)<#`|*7w>DwG^kZmMDEmVJ|g@yW?w7*;-=my)M`(hx^5CrvEI;`?&n=Ui2l{u zajY%m+U*o02eP!QYU8b#=|yxvmD)l^WeM*#N6%GPTx^ z%i0o>h{B_syqwo9$@a3_w!u`*0hQ4yj~j z3#+srr1f!U`Lxw%J(^?t5a0i$K|1fp`Sh2gd--Jd{>6=tz-V{v+>_(22dC+6PV3zMt)0tUX-VqB9VnnmzTssxl?^zC;2(zP*~D6 zjMOfX#Oj|T)$1p(P&2Trm7L?7NtK%^1sr+X3C-PFozk_RGXITBI#A8jDX}GxZ@)q~5BN`P=AXf3Fn;U^hr@pG!w6Cd#3$Mye$|XGad%#1lz&Dn)R{*D zfg;~cy-f4-5NkP&%W_s(zw+USTte${2uDl7mW#Kje8spk3IK4-A4cHPoE#&%AvGB-ToTPgeg1Dkl|);+HFDpAG|MdJ3CAF&!u!d zA*)6A3Xp33_(uEFks=50BjwI9ms*0onMe9g;QV2#kOB? zYyS>k|GDSu;a`(adWY+W>UCY#V)1G#fyVb96?!|&zT0oeRqD!4HcGW+ zXAJ|(Iv84_i@}< z@3c(RPNP&{kvim}m&2n!g6$MVT-)C~P%EEp@6aE)CN&c7`>GTw{2wkF?VvF8E}+?M z@QASSAJBgMt&fLjyTG#7poj1z6WmUxv+H-SAt;G(&9*|PC8@by1UE%C?`xmcvwFNX zUU?e15o`vhvFfCwml=k&0!b~Z(tRp1*$#0|bnrgH(B@sREes-{nhOhw{Vd6zzIO*M z>|eYU%0T{Zn>X>)*)T#LB1p|vWnR2EOu9ar38v8ES6io08fdalwreSnk0=_n;qC4& z!UoK*U*ldj`>u0Fflw$uIy*XmlQVqHVBm~xvwEE8PxJXm7jz=gM6`|sH2-$I7)WVd zsnR`-%;ph5UHdA1DviNJA}&eEYh7gogo2agY`F{UI^7;gynS$n@D zd?Wg`=|I2!?DOk9^?$RYyG7@M)#ou4sV&PtPdvb^BI3aYrJVbn51alBGd`C=UT4f2 zg(1!@8>>rZN6(=U!*@{dM$ZTKn(*#2PXQa@rPoRXe{B*!%0*^Z_l2?$?yK6ts( zk{dWw&0r;Q312Od?2{tv%HPtvahtqD9VRM=k>X(ltI=mL-awf75l zpcI1cJ-f)_Qwm6NB@6kp<{ew3jCnztuI~q-{zv=wc9idfp8g+gqyG|+g9T5dW53%? zKQa`HC;H6wr)hTM*3Z>=`mEgK+cF7RXSMwh- zO-w0-i5NfT3od-{U-!TlkZ1FF?a2GPi08BW?_=~w>p-E5jo$hWAQ4tVG%?%QLtt&yHSF6`9G zU#is0@#6XuHMEn;8>SUak!kvkkSwA=I`V8kw%$Df%jVBL19dcb#!j!uP;N-vyWmi5 zan}niqKY5BI42L*b0w6jg!0fq_8ZfQ09)m5j!x1PiYKPz0e`IiDOgr;W|r9AIW{B3 zw-sh@B%_ci(qK+0*B^}ZdrTQ0Pc&_cC*v^6h6W90I(nDRll3BGyj;>vG9EYGE%MiR zxAdQ6p}~pluofsge2!eR``8Mrd+*8Fg@oO0w3{e9eK?55uuoGayFcS|4|NC6E|g>Y zQcTvsH@AYSZG1e1cr~{~pK|NvCN40RRoKeITR4!xGPRd-gE$O-n&$+d0G8R=C(70h zQ_C33keuz~4z_l=aL*@phf<`EPELg~?^H0T>4ipBgQ?-+@zig|6Q3xXt!j8_;LjW? zk4_G)OwCmMnB)kGzN8?_$g5q*63t}H@@3Xb(}*3Nx~U|-IJ_eh?>NgY%`6V@$&41) zU55s5^wv%BL2Kj5pDDdzrmQ?4(_`r~mlHyle{Np<2>L1WPQa?DOwH2K$e46@rrNCv zj!yT4wcMuD6wz0_?z7etm4frmLDOF;|KuyI7**;-1(y+JN*Nt%%C9ZE@%V5VY|Iv5 zzkmUtM$6;XT9z0-1u?vUTMZROH&!&v)Ct9~#Y}>nZ0BKqwPpeoi_EyIbL$ikP+59w zEk88_GsBkTld&>gkWwieW?+kRM|&^Y>qYapVU# zi^yf^)iPaKSaqOyh7wm0yZDn#gXq|5E$vA_@N?VRA9p9B%&Uqoeu zNa#zp@>(v$QwqgX29SX!J`%x zHQErqShSYkmgS`%$0|RLPk7C)>njES!-JCy?i#lbHY~aoxRU5r_c0lk&D_}ZKUgJP ztJZG|LgniC)<49XK077xK5I@t2tM*{RfC5CwW9}N)vn2x6NS=gT3T;j+gfjHAfEhQ z(dKxXKki$&?TV+q&;Pz#+%iZb^8Mx*qrNZP+*>6P))y@{VCenZH2dN!Kgx0EJ?ufZ zl*IO9UQm(I$(5C{GndJtmm6Sj$=;>D=q<{QZrapQCce4d)Si!1$5k2{ezC}ffz4qc zM_8t~QiM7s=y#ibxrOgX;n@WS>7pXbp1Q5ja@}5(M``%qNn%|6fVucMq3T|b&Ga0r z)om~%W&fcn4b{o6v3xFTQ%|hN@H~Z8HDS4*fA8rVQArJbR}z^YHdY3xG@j4)byHU7I~kzM_v$b{xC}>9Qvl>%(Ha3jM<`1b0>T zG3DyBYpy=ZRhUyVTbT;837AJu)3zRRdboeP=T{oPO3v?$p;9#qKZ~;@b`0_hx{;IB z*I*+XiP3GR5k@v+xQpSqLb}qZJbOS?tEGhxFtvr z;n;DB<_OdxhmbBZO_Uw15DyyyMHdySUlbH-{**zcGS03M76LyAHf|L}5aR!pFb8t0)Y-5KL)K%_xe! zX-(`_%;ZP;uii;p6D$Th?Gq%lt@Ls&{M+Q)mT2i{4dZ-If}XlS`CNUs)QLnBON>xs z>1Q-Nse)~ByAZLyx{X--|An}kUy}IeJtV%a#5>J#zKx~(IsNq0x*`}slivr0`;Smd zo0p2rdP@@&{Tw2YMlWyYUC3YPc4%Kd`S_rGpRhdZAYD73{g2yd{_au4>@<~4N$KTp zRrGc5lOEPaUy_kg@z`H%i?SV%i~T&-uwNreX^$Xd4((<$rh}NFfajfNGtxQ|T@Hw3 zp2o9J8I|vviR+ECT%2WQm1@K(JiA}{AWTG>@F6P7$Mv3QDA z(Tg+iNsOHSjb1VHEg#AOP83K13`T$ZhfvUF(e*_1C1I_BH8;e@%MVozf*AzQq#k<-^Y5KDX}g3qUcx z>f%S@t4^0l&FUQqaG%6W`NBDSyt-GE$;*k{VuJJG0Lp$B6|LoW4BOseEp?m89Z!BH zA*}=0;j85D* zC8v5cKa(OLqq#TiM_?0y$@%OCKVZPQ zAIW9&OtudRN6+Yxd%b*D^9nnU@$ycm?x72wpgxV}XzbL4_v)V1Ffy#cyU@w*L)<#- zNUT;L_X1_)38FKtvIUFPHwBf6M05lCfH7E;3!?>NQprXV749;+u4z2YWIN+@!0_`K z_%UCD$)K+o0CQARiJ+FAV-UuZZ@yGcdH2H$#UpR`L* zGuDreja;AI+Z-Egw6;bHt81yXQgXkiKqzczT<s$?^ANuC3;lD|`#2@cnnd-hK z1N1fj(Dx0ORtDXzEL~GQT(!@m3T>5|-e$gQLSYMPX6VT?TcG-@K zKgMQWNJAkHW^pS{_6eLQ!@-|H645_`iwV{$m~Ln!7*AJCNtA6rTKk#<-EEsYu;=Q= zX7n-AWQd6#2|-}ec*01j6#}q9X{b#n`Wnk86{@;q)%bX1(mwRWjTTu_r@F0gY#vbJS1_BuZpX(WCHz0|%lq*rM{j+JV`JITLqC11!_fk<`R+)D z*d#D%3z$F6Q@?tB_TzIBG!TqWNw#xK;TkPz$z{H@6Ah(qAk5AfAIOLD;#d}s^PpgW`zwNIh&Xe+!+>EnE9{ct3yvWF9F zi5#i;74}31{RSf_V}cVB&FFY~Uc*6{9c-$!zDUgG4)QbI9!${!U{rB~C<6 zOWk{ND(t^SZA)`l{M?*z9)IOuNtyV+KFX+)`O87Lk!8k{B@Yv(GAps^FzO5mvQ{zr zhhlZgQt?rDkhP?p*ot8RxeoK>nm!A%@1O>_pONp*w-(r(41?08hCFLLth%E{z!SYh zI@X24xV9Q=UfqKzRnB=MrjpSg2m(aFe3fL6AMQ`?+;gE7Tn&mTKG)nD}H|1n{l= z*PY)~rY|d6?1i%ih}1e+_xDC>N)^0#pgE?0lB46v&dU8 z?CaJ&m74?iq8Cjp5z3|Y6`5$F7Lx{*TE;dKUbEt9FIp(B{gGz)Z0i483$=`Uy5nvp zYLVQb+NNNlhD@-(0XTt2K3LNzu_c~6*qsRX*vo^CWW{+4PaCZvQY#uDR-{KA zIIL+K|GT~;)1692rpph+gVd7uy5u9 zxllP%Wi|E_ovfd91vjBYo)YovheE@n<$9=|7)bV**ql6~kP~C|2NI|)o7d0QPT4JSzS-Zs{TTD! z&y+TVi3z~a(Pr>~*AuFou^%f&P|FAFZs4EFjr*171)gA94NU~Aa*9I6x?WHEOp0mG zFfMLM-mNnj7=~FS=*;DAyHX!Mc%Df@qUx9DOsH)(6f`12(t(+Y2Y z&uXV^?kIk0%Z~3G@>SiYzwuEz4;#HS+%dT;pA|a%=H#23L{(rmkDr)2!^f9Ai@73l zGb@!qv1t%6`=;zbcw8l5|N0$)-RW&tgcD(~SJ~1C3n~xTh02t!{c%Bj!dvjD`Q%0Z z{L>9DH*Z4zgUQSyrUKHfzm*2!p5aZh*>^dux+;73yWlEogK1*>cRWc=zn9`DkK!ai z4i)hU=+Fx;HsW#Ok29OwzV&i^P4YXbf}rgTGW=KElb*agI%nd-S=OzM2x8s4L^ z$N$!bnh4%Av%eSy=@66Cd<(fpmcCO{uKtag@sFAlw1ULVLFa|sBe{yB*Y<#c=6DEM zCFCV|nlI86PWA79EHVJj(yDuoNj*4GU?dOeLR?FmH2M$5 zZ$)Guegun6nrtL}Np5mW>D#gC3y4d;mVCGQT>`fLXyR;Q;Q#)24SfGU>Zj#p#&QiI zt?#98Uw<~i)>%{UBOrpF$G9ZyJU-HI+ETcYd^lau##AH5&4^f|-_EWM7PQJd!> zaME)|qaJ_(sHZFo6Ui_vIc?tO&EFPlOAkJ{cQiNo`mB>_zjPh01=Eo`w5@_Rrnn=n z^6xiT*}7L6sp6uSsW17~p!Hj~0A+Gba-Euk@jA{o`%>k|)ZGmll+*(<%^Z_@LfeRu zsTcG$vh;(RcbhBOa@!qh1>1i8{_0)| zw#uiJEp`tPBk7>n*wY*TlmXYfz1p*tgC3OpFUArW_HKDdTm|91jivm5H|#}zN1XQZ z`)01mYx&A+9tF~U9|EWgl>==Tc96zegLlQ)pBw~oW*r&manESn!{&qS?35D3P;6y$ zbV?GPsJ`!E7m~l{(sY?U6;F@p{?l|@2zgdCo*YrKVuUe!`hY=C8_wH@JpPxp;U9$S zeo&kW*wO3UCswcFVYP4}T&Z&Izq3Jte%&}`CSCma7Pj2xi(&O(t@UiT{P^!+u_pcA zidOsYAf4Se{KqXl*3w^UEk8R*5AF{vrMx@-X#Sk#Te@IhD6JQu1oV3u^t!4Ull2z& zItC}rhqsQ6`sw>8{a83swPknp6dkqRUw(UmU!T5bee&{z8H?Ka$T-MMVp*TIbvxR6 z6=mo9TmRK%l!Jv#8yGiFV2d@hADAHQ;opae9Kavk&$0K3#J{9Dd@mRn#*XXi>}~S3 zuGAa~Mdj8M;;p208Q*!iZrhv|hC}L7N7#6rm=4GDGYt^qS?nhHp}OE0lCaKU0LrmX z4U!ApSw4AKTXO68Qk?r=o)Vs}rMUb!`0=|ZDBs7eD`5yL8Dw{*hhgL?jP!owbmv}b zOs1wI5#|nIBoP@uJ}-g1H@;MfBm7Ms72qyUL~ASPPmc`ur}x}t_KSUTql%lc>ZXV* zrb)|n12Jy@du)S>ku;_AT=v(VpJgAm5%S{`LnsQ`z;({g^Cid5n9HEmmObD<>iI}T zd-aeX%i9rzA^Amybdr2@&>!Lbc1Wiu{pQ%sfUjW6#;)~FmXbfm9#1C zDmhJ0BT2enz}JEk^8*b5ld0M5cQ*(~N5(tuha680&T$U_fpEdTg1D!fe>gM5Zl6QK zH}fFMv;r2~Z*S0oTW}6PgBqK$CxE3zen1g7kRff8Z$!UorKY0!v?hil8{N4Q2G|09 zez=5zFZip3Q^UvdY~g1m-H#$zz8w(yhvx$5Th`QC_rR?-ZZa|Q2XpQITIc3dDf*N7 z*1K+HA+3FQ38a;w!#7%bU!T7Iq%eIo>C%!QD599`*Hqt;JLmHbqSb2WTe8waDJ}lE zah}!x>n>pL5Hh(Zq@xUu3UOozm+i-l?Zft>r`x-jG|v4lq_Mtaz5@Rj%nGIt`|d_t zV>A_q1Rp~P_YA_tg!>V8SMy*9b&S4`X{HkvS4s^kRpQR{NyEQGQXWZyuWyiwe-EE} z`Y=-22?z6Y2dvjm{~n~fr!d!aD-H|%wVgW<`q<74qQPh80`viD@Ue>}I4t9U1Nmel zryhIYYhje1KmSLuVEz=VmqWsXY&pQW@dk50cYMaW9=IG?UH6_GPRYM`Z#-a6J^-iO z)se*ZE;TG(kb1mD+_l&SpTDv#w1eK-1vI55^4h0r>Ajv(#IJqXu+fY{(gN0A-G%S4Z1x1WSJ#Z0NP)m94ge9Ti5Z#r_`~Dw| zWF7Q>tX27+!$SVF<2Dc&>7gbvoE?ZTH<9QPw1*#6Ip-Q+F5#@)UzKm7Kmk~<$d|0B zHGw}w$%=L_v%bxCORib>9_MSv#Lj%XZb$xM+%wRh*r{(pi-pO4MaEz6K_9o%(R0S- zZP_I%p6XP@8$<`d4{k1+9nA*_Z03Xae+yF49|CZy;Hd7=+|qTi+wES2o}0FDLVAhY zvqu82*gBD;{&l3^v!lNy*jCj(oC8=@?{^ET%IsW^d{nqDhk7}X3uxuY_bYF1*N_B( z_`sEF3r{-U5;|QV_-1ysw(Ae2?ZfU60;6sTmMc0xYCZ)cyB_g%JA~0HTpGtg83S>O z0KNN`&s!QQiu^lOBUL;;S64dhx<`SpnJr6<5RG$(tFovsUFxz}CeRpAbZJF{NK}v^ zb@8s>A)bHSb35yk2wI40%b_gW)Y!%hjk%g#M+xw^kJsCGSR{6`TC2oBapl{+?GZfV zPaIe6G`^yoD&|`BDj-M|oYz%K)aofJeLd{A_Re`Ab?r@8LfcY@qSh@ZBbtka`!cp% zqZqiHa|60D#PE;O@&xFqAD0oBGvD8)iA9?0_;~o#?)k*YuYW&Uuoq@tVRYqa*C0tn zw|v}{1+iMDTdBpw^N znyV4f+5I1WwQDX)qI#qnYoCvW@#ohWJ^dn+j`CrmE&%Bv|(5?u6W>zcT*1be99gkg*28p1-`qiXX}+ z8k+Ie(`Uf5y9e?WeB)sz>p9Jr{+}bfP=6LLjm%v`S8fpk*+5U@gH`Wk?Yp?PLZ77= zD^FeD2~R~Z;4eDVOiWG9uSkvX^84u0ZPne9Q#pS;y>O83PN$|8#_LvyicJ2Cmu{an zh;0)jDzCnH*IX^>L;y+Z9)hD>jWxC52LL-X&HZml^`Zs~ia20wNXlcMZC{^ow6ml1!q90{%UWkgQWt}o_6R&~$Y7sN}q z#O6GTcxn)wEC^OHV{JAVeT>7aSZ!ISy!Kn$Q<2!%f!h(dI$j=JoRmxXk@W~nGc*{C zz%@p?nuW=AxJ5ftnl|#|_0lZ6ncuwR`2YQ?mBG+5ye9?#u3Md`P=nF3EPJl)zyFta z;eFMjKrjEgp`5LW*>&s!>OM;O!GjzE0x51jO*R1#VxFsdHe6;q?|i;?RjX`~iY{FV z0W)C>5l)}CFv6D{l6%@msyjBGI<6^k6I-W`RBwL6g+(!}@7*AfE{B4#E}UBsFBqtW z;@RKwp>(G4|H*v+In$?3w5*k#`$yNY__?J6_tO`V9ZP zFI;B0xv)u;z1a(XP;sl*)6Tt@y@z+&&XwAgUI%mNx-VKi)MD#p zHjnLoJ-P+}sydR_d>(V84dk6dI$vAq&)1$tWVBAy{rwr*Zm2I3%o(?xbBSG65WnIS zvPn2%FTsri?Z`odY!VFMWmi`;n`JF}E5_37umK)TMr-RvM8^|AKP_xSXN z+ekNY{^}roVvs(-+V3r|nmUSgrv>R_efl_Ge%ocFn+?|CK|0H)>K{tF`xGr=?72BM zpj=(8{|yz*j>N$al1-1fGD@fcVk>DmpNd^i{W-c_ zH<;dQU(r+#&olb3vQO+w*-@i&9hMvRxb4h?M6N2t(luIxnER|a$KmVtChp42l!mo} zxIP%qX?f6FIX#g-WA)-xy6VwDuVv%6fZx<8Q;|)y7o>DbGYal0x#x)e4Gs70MQ@n7 zybquO(t_lkDYT^DpG%TR#ny+ZK{Eau547a@KP0(Le`4cH@p3oUr|&OTpe~JXP zy44Jqdze@n?FozQGjJsx@2BbwK@+@be{hmUL)tqFHzh9S>l%M4b%|CbpH8JZYU<~n zJ-`|o6DGRviY`L>srH?l^#h6;^^LGp)p|Zj?q8tY*AGa=&HrJ6@cqB14+(cFbqgUI z2WWom$M#iD@D_^!O{N&1UKtH;KRO8b1ma5LY;Q4CP z4I~-+yDBJXCqziZad(~{qIpM?MVcEoDkwdL`RQv;w5A;%qy_8CP@mqlwdJm)i*4h5 zK=|L`M*m^eSG>xpFXHHeYM8>;ewq8O!`g@*x~I5EZ{$u)5cGe@OykV z@6Swd9h8uc%*dr-W0cpb;!36SK z*Z+S435-CPK>?$H28}gQY(op0DA5T9ct$4>)GCT?Q?ZC!3uFNWF=4_oj$_BI)@r}i z*7mF2Tq~Q^1dsr3EQ%o3DsIm>+M-xiOaAZAz0XWSpv(95fBkrA=6UXOmvhfO=iGD8 zJ@;JqoJZN|0$g8m_?{zZIaWU#41At`mQSf7u1etN7{h=wRd0RMS9F>oEzMIq_IB^Z zdC%*aR8!q#$fvs-tn1wRG;}rjvJIhhNB3A ztYqCaGID|vqeH6s(Ik_dH=ZX>T$EqRuY|%o1AwWi*;uaor^XsM*DLKt(!8@j%Xx>t zCX<40s!c5OR~1U#jc&8}pF9&;Mw)K5(M_JKC}wZ+rc6K+y-7^BmcIq4|hEKo8J=RbPZkfP2^wXV0(R!J?xF9y5GO&V7xlJ>`j08 zP1e{s-09XWy15C@qO7dt`s1JQR`Fk><=q5iEH}j_kaz#>33wz5_n4dCAeG^$?~TRg z6>SrlWCmEE7sM}aPn~R(Y2(wkmir6cbC8LspM%?Rm+{OrMVuHN&Ju<>Z%DJ6(Nb*# zp-ychBd422cGv%zMy7d+)aVGB+VByrI^R8zO~i$6sg ze}Py+no8^m=_nikwhP)uy;YR$tbY&xo&_^_@%9HeMeSekeP!iV>!GHX3HMY^A9m5` z2iw4y|Xc`uT?_}|w#$K=X8uv~Tad2(mvQ4Dk5 zr$>t5L!Gsot)@}gt&36@_axNSPEpOi!Ih0gMJ`|m_&=v$6|`6uVWV2f-P zv(RHH1rtV3!lYkBtL~C=iaaZQ}f9xv49eG zlx02%xc4gFw|GJ(jzIEjnPIl$s{!)(1C?~Zu>hVKKNut+q(g88(p=EVuHm#`m+@mo zrbSY$SM=4^gD1BBZBX{B(LIrm-Yx!I7(QTdH}d0Uj9PoHJ;7eF`CVs9yBW82V}`DE z$`1M$uCn=-kk5&acpe=0_!l+aV{_L3n;MP$q1uKTksZFTBhMpuIDVTM3#zwd(Sz_k z4Bvp0`f2DiFzovb;YCAdG!n*E9twAcWb_jjKqLky#LWhnN_zlY+R2qC8&)$E*Kg9; z=-tY{6-vC6L^~XA?_YW&k!;c+82R=M5BEOzM$)7pE6Oc9f*A|)y#ZaIYeWOdhJD@E zhrOCo%MV#nAM#?y_cvh6Yoh>*Hl9*4c|jTZgiWM3B_fM_du3p3sdzcMzj(dY2Tl8> zkj(VEcT)wnO}&DMp!^4oEBYdH%b@*)k-&*!Z%i0p^C(V@tsqMF+xwN` z*_i6KYF6rPGH*^2R6~;p6`QUZnnl4OzPY=dGfo|ptI04w$@WlMO6mMmHPf{) z?Pt@cMaWHah_JvOeL})!PNKIlCOYX+P5T?^nSX&CevtBmnzP~~deObz_@%+)!3{v|ALX4B2IKobS(xF6VC$6G*dK}6g^m2K*Ov6PhhZ`RtpL`6$`H} z!0;KnWOae(tY5AwW`1N3J6cN*GbhHI+f4=10PRll#eJFHF1<;1DJ4nENna~Qe45Vp zX*H2kpPA}At`)mliO~T+;HN2fivH5BZPm=`U*=K$eRI#z28=P{vpCd zpkYiMZ0Y-)UvwTH!HA`KaPn$T!dUwI2aS64cgXyK#rEhi{%1Fik2Y@*t}Eg*vfJCj zvF@YN^{4;`j-b$!nYl*sGkj^L@N>!j#OFi_8%Tr+A+^ zWOj?lh+)Tl#dP&3b+ylIi%G=XM4y?TH|c&dl&9f`Do)=bH}n5ty3;YFqdWE255mBg zJ)j?tV6@CM@<<;V88^r1L=xkgXbm}=5q0yp%=DinnkKZ>SxNSsz4K!O{LFmq`<#-8PKlb+3r%ofx$tOMC`8 zSQ;F(x3sTH$gkH|wzIZ8J}LlrLCw$Y(})A)A_1d+x~a{lQRd>geWB=517vGR!gN$& zRkStrCnsj-8J{i*+H9*o0@6AqS^7JdmeQEikidmH1;w_CLVb+DG#lO7S+6PHQW4#` z@oyEyJ8^8RpF{Wj%`1VhV*vckPw{RXU|>h+pe?7+tRi08blBWTd+-G^mTW>!kphT} zKz=ZQT%xE8e;0b9v2~0LK0idhr78@6RW$8wq@f1JY7Kdf8xQ*dH5Ks@fsnM+ofV9~ z#=+QV>&J(quPUFmC7QeIv{1DFOUBe~v6VK}Hg~U#_ZbN9ts5V+$B8QA{rmF1X?(QL z=Jqv}Wou?`Pu*XMqoEnZ4nh|D3u|fqf1oo(i~rTT!ATTn$!LrJPX2eGp83XJOKWu4 z_!FW7;~lsw`Wh-uh>{S&1nL?b@9&FW#LDOk?O%bxXZ9#FF>~uqt&A;Fw=0WV<9)K@ zq4uVIMo<(iy3c5)s7Ky};ysw2YleyEp4h;Y-a<6iT#&V90T4sJy0 zIj0kOy{!4ChEI0>S&O(gbk_7~KCs1n358c_{sqaAeck-cO|&VSR}mlE1TGFd_aEqk z1=}~A%Ou$(C`q_S9Zo^H3&@1FxzPNGVVP5GHS+57HxHu)Sz|Vs1|BpQ#LG0t3G|DELQri6MD+-jANSxuU#hJ+SCbcSwcq#g~V%-kadiaf&!uK?(H@64DHJ= zeZ^w}iQzpvSlM((VZY1S_>oh*i{rBSGgl{LA_hJCBeg~aP9c&{f5ll=}H zK>`|S7el_tjpd{S$AOvRW><$0zpZ~esrd8O_qw(2>!v-p?0qPw^TxA1Sz1}VvUNwd z*8QY!aehM?KzBRYTb%3zs9x8x7!09$ZK~L_GrEZ@+K;Jht?wa! zcso7x|Bu%-=BGKU|8?i+r}j^G+R5i~WS%$qELMx`6g|Oj7?~=e$FkDjEJt6bYS8ZOv_KMN3Wu_hMs0iIyEND zfiKGviLs;jZCupmt%B3OM4wv(bb_=_axwi zM7`nPWzPo;jBW^(t@1DYt+K@?aTw+Fs_3v)JeDR*`P=yrj=n33*%jST6{{%8Fh&Y!5$ z*{u#m-wfG!6`|Jl^Fl-0La|`ch4I1P2*q={IZ$HNf)D%)KVk4Mj8>KtO5&?*|3bo+ z^BOMaM1fNjj$hj?T=t27{u88zBLD2>pMO738r*4`Y#RY5jM6+Q9KY^hXwP3lt^Yi) zBJyD%6t5ftMZF4rzv`5=ajPpz-E=K>YK%`ANML6K-rhg7}~U)+w8b*P2GV=o`E8Ly>K*~)pxfpLK84@xiU7Q%~TY9d^=W9DB{ zmtGj}b38al4zi;h>h9qE)7nim-TKK%II<8T;-u_W=cx6>fPAvrXRQSs($dzBfBAa_ zwS7YIM&ZK^PhshpCP${+aP&R*r}8_A?sH3?w!c1pk>MJUq&tWg{q7=@)$=)8GnNIXtQoeb@1v)A@D3)^d>JI#}rO&(-@t-dO@69;*XLxRWFM+jVT{3RE^NQnbeW zZooQ$Y~>={=$h2=^b99h^-Mq5FP(g6Q8j{=0y|xT9v{M0SBaOe!)UevPOdAeihdkw z{j?y|4o`hhV0db;mO)nqFb}OB)BHi*OJf$ar&z46Bx}W=>1$TQRb!%Gi5?-b4a2w7 zXGNf8q6x=wnyfIwp$gIP$^Om~$Q}p#ZzT~mC-*YVF+C3ZoN3q`I4b*QdN%A>$ZNR_ z+;xRTy3(G5IYfdAL-|4Rh~s|k4sX&l=2o-J*8-+M?sY|4=9YvR`_eG15Dc>-bdn>0 zy3@3kdDQx;;VdK8BcBFhPQik8vj$qT;3B7h`QaQ;<1NwRxu?}Lr=LiQ+dMoCw0nQt z119xUrrOMdsXu)`fKLlyjwZ^Sy&l3$4z*TJjsJxn)xJae4hYtXM;g`812qt=F;C16%dU3EBCT?0kr>-=BccaZhfRna#>FiWU4MJ(*ZnBupr ze;efDZ>}+O6-HS0VJh}~S;3@Tf%Z@l-CQ+gQ*u9RAMH4ymMa#}tEdYV*7G*9y40Fr z9F1JH2B;u4f)Evg+-Y0Ix~<(^4#z?GmAGcK86M=DkyMP9Zpw;o4iQ*`3BgwteS1vt z=8D$$Y5hRA(3F>q{b-$k0VlPY%qB4>Zf{^yPmlbm!9y`C$?-KD{w5XhZPt%M{^cJG ztsPPoeV?ZHp{2b*r8d*;8nWdY~UuZ^w;E7Ja_3m zQFRy*y51$dGgg4HROQY5^bKG%Ot^vGdb5;g|JS@Uzo#ag=wFzMLeVxOVPh8uQK`bk z2SbXK^p1^^#HDHHmvHf5Nw{p=E&c8Ih0FH&7ipV@Q6WlE@iv9+jBewj^emcXdtl+c znrUK#OE{=mpI=qx-qJTzwxQuT(?9JcRYl!YZ&PqTruE_LkR2z%>Y|r1#jjVie!zfy z)vapE2T+b?y5`eOh1XY4W&Zul-+U~u2qtr072UF8&p#BMx>4)fPp@upC8Q)tgyA(Z;i(3RoX9H%OKe^uG1xAY2?z24wUK1rFX=%>S5z;>!fINJ@i zw}#4E=AGk zc=_k^-OM5GUaqeXQ}uLHa+~`ozwZ0X&`ZOy%SGwmN3gGjk|fyGD+K#0`chzs*A;zV zF2TME;+0_kOoF|YtQ9gLVEdqSl0!fo*qw-GFmX2Vq5KQK;uD86r_n}HD6)zWOZg!p z{rVSf;X^oD!#d+~)RxJpEyPw}m4(`J0JY^|eU4v+lJa(_^(&N=4+3ag`c_va<%D}8 zOf)_twr{{d-1Vm;bxwoz@<0^#>>xc>XmI`(la$>IMKbt;P73k$m`G(z3F=!>nrnNoBJ((GxN7p zNpJq1!{dc*Id9XeETOf1eYouM>WZa$uku%J1y}PTei_P(4fx_gHv1y` z19QRW$iMJ{)LNHh&J`J-LOm-A=&Eclfk!A1*;`Q0WeQ~ZJ6ydc_ZQpxaEgNS47)q! zTu5nuAopX^{QVeco>Sg)&>v7jKduMiA*jy*ioeZg_wh9c+OZ{-KhBGOm+%WZ#{pDU z{i$nmKLQ%-W4b`Knf^_d!e%1RDz1&`OSyhL|7^VX1U=sUMf_$ZKhm3jeL|F2gt6(< z2k3n)?=$^G_W73k%=ZcFu_DO93;y3q%skYKYIiuAnrO4yW{QnmszSt7nZI6z(1c^< zKPQR9=fBaH=*au{2^Ax6bMMvDo~@zQz2}98wqmOBbEnz|#%4E0lVJTLI(Uv}a`|NC zBv89K5icZML_(x|*ZUekE(Xdwn|JpVlV4s8r}9ekS;@a>zn(zzPGSI6qTfUVUF(M>-f4; zUw>)7rUugdsxSLwWA^S-S}}avn8kfc$;t5(fBes6k@gdL|6PYkulTS2X9t(CnkbmL zo;he)0i99%?sk|f;f`$Pl;}=GSVpn(9xQ*XBe%yN2s`8M!4W7aO!*1-xaSVrF~ESt zKtmr0A+cXUYKWt$b6sf9wovOnW~6Q5?De7Itxju8K^Q2Jz29=4&xF4pzSDUj9r~Ui zK5gg}zFP>hur)={wynlmrfG{1z1n3S>wmU?ud1k~pYEaP%S_Lq=!>DvpN$#*$=JpH zdoi&gB#3%<>lSknq|x&_RAIL)(pgX#WjBc>)uO`oU#n}c|8`e%%&s*5%pqoAWBKij zLKa7f8l`8a~t|AOlA87`~-zw8wA(Jwk~3zIBLRj z!F}8qR}^$MTKRImZj7K?)yR#Ux$n4~er}gYgJ6^xUmV2Ak+^I@lxKgxM!o5C5zp27 z!c`B%r*Q|ts-{F+<1~`>&(UO>RiLNn;u;d&-DrqL^l<)F7bnogpw+B>?%7S=@FzLx zc|`hen4TVc^-cXD{2p6{1!I?W3yodGk+W8oU`t0MGhg%;?}vab$wwE!?5u6@Op;75<~l*IgW5 zuv#1Lj9w6MXZ`%&e72j}%f` zDewD^$i0tY;S}n(=I_buSbO(}P_&pPTzaxcYhjcHtSP75VHo3TUa6blPaC=Kx?$uN>Zx#S?)_koc;8H$#$#JXrda3Y6wgdelw6J_9D! z6SrsN-LJ7bJ)$JuKo9UK>Mu&D|0@u4;@<0EJa^#tEGB{ zZ&^IP!p^ke#=Om>dw5*Sqs3#6heuG8U$*v^Yr5d^g*qS_kS&P%cZ**HM4N$3ob50; zv-shDwlsclTFQ+;q^C(rwdFSQ$dgt(@w^}LV$YpnaOx+AmV~*uaUogI!^IwWYF(qZ zw%oB^B}-M4EL8oBfzsc6rp;Zf?+O2cf%f%iUbFoRvy9jKp*m$->TjfypR1CxFY2qEg#P&+ASfZtp7wc|tC#(M8|dzkAjIlSjl#9cOo(TV4-%OpH%6MmOTxX&j1ER(R% zCcJiKdaYG&6RywXxY{PXscT`4*Z;*fVNE7sv`zR^CSkZucqEj75o->zk~IwHIfV#9g8IrbcQ`^=?VP7?y-FMtCwAPHnTh-yxZ5x zd>z!T*4#l_dbd8Gwf<-4IE4Kr663q<`1*ghDz!Di{Y*-q>!&i)>@xWL)|8Lsmx({n zw6Bat{R`R|w5GX*g~MOh+vmJdKyDJ=q8uA@J^?4pkw_6*+J4oHdo1g+EL|PIN#UP( z1#?so#Vc#MbShk>JmOq%wU;-?zrgYG0+2ngizTML-R5o0)X#+8*DG_-zu*fX5?ZqP zw`?cbo%kh%19tj)affJs2w4soJP!EWzd%0QJPsuFf9>P3JU-}Ephk_6bZ3Dni8bv&x77FW$4(-bez}>;4xsvCvJ~+bAx*}$ z%J3%m(C_p7QWYnG+S_-jssgVjdG_*QuqrSg2J;t{MdiEAndbf$`@D9FG*0 z*n|lul5iBQnE7XgP5fXpt}3D`_qR6TwM@eOHeq=tVX;m4btYk!O-N)CrrLx#nS^iK zgy+vn_qdV-?T@;XalJ{Nd4!d%odzv`cZx4w)RtSxWCa;ywdG!wd77Jfx+wEBohQSz z@!aBlbk7_uI=#2_RJ@Tjt4n*`e;Lv8MmCVDSxvt7k@6pGrX;6+HCd(d-21q^+B}D% zTtK8%oZNGATW&yT~V@9|^GmPcupO9`Gc8 z(d6#UeTawHfV=n$X)=D#>yLlJmgsCBW;E*Drf0`4;Sj3x;yQc%g+&*Oo+Pkb&#Wf4o-4akYr*Umu zi_x4@XX>4s(})ksWip_u0!?M5e}0Qz*i+}g5nfvM8aTN%skD>5L0ASj4^o*Wg#77F zR9=br_zH}2cR}gD0wYgOS&!1oB+hW~w28q143(W>up3gIYVR#f6gp5>Bv8fRS z)2;roA}0HVS;xvlwD^G2jyCXC8gN#6jx%(NDZtKsUl9SAupl7cl8YEP;Sch;gj4(8 z7qNXA?Ut)u90%?tHqsj159yuuUV!3k0u`GwDxEGUKUFT3inRBw4~CZB_=6j#&-~HU zYr|#P^~0NP^4;)*ncuH3n%Zd39AV0xrH^UW6V!DHZCo511X}q5&j!d+-K3T zDcH)6(UHLc$sJ%Mj}axYv*N#teT>`gr02YJ<7F!TQ+jQGm8R#G$xa+>Y#&D84PH+( z@{RbrK_`AGw7+@gsd8Qv`TW(~{?d*+-+m{1Wvb`!-58v-A+s&{6;mPO#-pXb2TXIH zLvn6_$AnPpGa^FlknaxqA?<@DD<_24{N%?So^+#z&CG+&rr*OXa0~;t%Kz+Ir}e!Y z%$cpP=!990tTerRcC~-V($l<1t9IWM3`|`dWulqv&apT(KQ~E8LxCNOiN-NZN! zM?Y`QwmP7{)hTLkMMw-|6&5l)rl6m6g}o8eAB=OKU*AQcVs63=VLI%NxY6roDt-u% zRzH|el^zUmioJut*NlRL{dBBmcG|$IMOebVTy)_ugS*`?;H2p|6YLZ`!m`!CW25%P z@0_G*0rJ&_d=3US_l=OPCExvB&}`?cNL!Qg=^v05VEOgmz$|(l#L@wxg-;v!9((~U z5YWPf5$vPj520fO_*~>7Vh`z!K5xRjF|oF?oiuM^rGH7zgmBra zhAOVo%o!ic;TEHnb?=Fu1CmAg70^*U$Od(g_^Oq*Yb7FWhRH}`wE&wt67Tt`|F!5h zuAST5-^SC>cW_A;cN+Jj>kea@F8(t~VsvO2ZT}EG>G4BDw8kFIk7zUScDr25Q=p|YKIE1P>b@v$}T^l`SU zMe3I6DxIc@)Wen&ybi9r9pJS`kAwg}ymb`{UAw#I+W*+y{zn>Ium24VY1&=W*a9Zd zrWUvIn;5=nA(o8AL8yxRkYo8kG{F;@271ebgNqCs?^9PcvFa|8uoO z$Hd}a^a@|4SxDEC>MFS9#VXyga&dEE4ZjM@Z+27}zv|}h;dq~OtK!kDtb^^^7gNtR z?g$S>b-Aao5kUEVjJ#Kk-ViCTm+=+1)!nHH?#cyS#aYa5yFt3PuoMmh1AeOp2LH1j z5O^zEO$3*hG`z%F8#8^<)=e2r`jOp7Ydx`~&-tOUm;90KyiFY&?K635Wpvp288l^33y^?u zC_eG&NfO+T@N~^Df|I(V$H(RdeC|?43jYNI`UP#30UzkiO8%UTQxj@y(bcpiXJQdX zD6)L9@Ly-+N644ZSMl8Gq!6?IIW4P&!n4K<|18ya>iN+T*H*=U#54;yRb_v@ zn9ch0oJf96J1o&v;pks0Z2Wwpn{~W_czTcZ3&ToPY*=Ac*$r&fEu4;wNdAG6;PiIG z>70bC8zyk=s4f%KwDBZESQWohZ((mifG>#lytEI_?hBMJ-gI{`VLNRt)XPt+eui&C zmd!h5v3CV;jo2qhv`z!1d-NU~*0V;}uQM&KHXSBGQ2 zw?e?6Rhvt1RYl)T16&nN8U4^;_iffT75*iIFJyM{M?Qdlr zKUxI1)?|6az?>T9-b6*|p$80V$(9!F0y{hKuMNXkcPV^~6&c<=c zf5)Gxv!c0Mr2ICuQ>R)03IC`SY%fllU#55*)_@A#@lrj3$CvR&pOTM#}q}inzk21}fj? z{wCe%`RpoQrS1ewtI;X>77&;YQ4<|aZ$?i_{)ra@{3|U2exL`u(T@(W|9lwyj^IB( zQvP$3-@t#dZSr5i?;HVsCv{$={0dV=2J%nS%^App9^{nn3V9I7olxZF0*>tsF}^M~ z{E_CCMQ=ciOl%4Im8LC26KPUPk00@u-(x)#DS!P1b==Q2k1FH#Fi;#5YHQM~{)OUq zw(^rm*x(P93-O`P{n1N5%^JR4=PS>80i#Bi*==#J&F!G*HS=3YH^3OJ0QC~}CBx)K zq)F%v_y-E5vze-Xi5A)8H*O;9bM!b5*o=i2LkRJO8Szmc$-$ zs(+}hB426zR@-kOm;rsMVok*eDs!bo)NQMZO;mh>b4*>w@CKP&>`S#q%G*o^kYO}0 zcOP5Ev?i6rHPtp6QO2XV#&*lftj=QEGKkKEhOG2L6$rJxC}vFFPFc7i$WNBLpUb@^ z$!1HOXDakeB`l)VrqomfR;88ymh&*@AZxEIWL~|xutw7CU2=vIpNmx@`bAi-{C_nt zr2)lBC>-4zj;5-j@0rPu!Z#F7)Bbvm=E`YC+{GD7roK@V;IAr9YD7LJL9=J0sTfc- z%}t2qoPA+@)Y+lP?1HSio6^UXG&`4tnG2^&0$NZWENr19>WBN;W=jkv-E^8B+aB6X zh9Wu+8VN2BCuy2BaFo z8ojCz;&+?_c{TUss1P!4whpcPn;#}K>RjDLk@6Rx6N#K9{r`bmH2UX+$R)QrgmWMi zyA>Hk%vzg9}RtEe+levYZm;%x)l(hP-%H|Ia#jpG0oZ>hOL+Bo*Vm#cr& z1=5;LU1_8R{{zy3X{4n}Kv=N;v`G0cRT=lU2wfEatNR6XX6EB@K$byQQ2cO?VK6O; z-lbEP(PFcMVi_?)r2N~e%-`%{S7PXb?m}Ca=C{{%oCWv5Z&#JQG|wk>_%tMmYDJ;l zV09+`fnk>t75mnNCwjj zmI>3RhGO4iI{vGBEZxCZLlhcf24L!%3=@3^hMLTLd?3_jsk2J!{ZQK&AHZa#PLGtI zYpNMsrA2x;y50TpO_l(7*XUDz`xxCeAFOD+Wd!&eYoP!-j!tCs*PUbhPyRyF2`=ny zV-yPFTnXVb$s7V_MIo#KB^SiP$8d&Yi8ikMkG~b_&ZdBw{~zG;D~aW`z$E`4ryZ%v zPuWZ#j_+-wO9ZUb-Yu=F%Yt&mDeh>lBS`DBo@g4rDUmD&46}=~lX}d<-t>d4N+u5vMaqn>45&INx#Qz@R)w$F3%j`#O)b%cbD4vjRO|R$BeF#9{p-F`mz>x8vR8}4jKL9W*;*8s9gVY^s76M ze$Z57M!#C4e<#WCP;|uZACAvHlzBpv5a@J>JKR%`PE2zAm&#oU}U2Hh^bR@V164y;`kg znw^MS^hz$iC0zPML$(#AWQJ@BChFNg{uS9y{`4@iHGB5S>EPqPB;3o;AO4>a?%CT9 zBU}sMYoB`pu+`lS38K+lQg|+l`TjGcByFJoQZ1J1H%cHUOe$w_u;)yj>Fu~*ud3`r z{~hBIp5b_ZK3&8Kk~ikvq9xBltvssYIZx`OI0J^M5hKdmB+C3)h1FH^!`z?uoD$=s zo^;~3VjVcok$FN>rh^*g#76ZDm$fyZO+0s~$)_s%I`%t=r)zrI+qK`u_|X6R%n#V6 zYJ=Dw=voL*uko?|oL1WJUwAjtM(ty0@XyZ{)uX`f)Y|A1*vLK_`L>-`uK#p5^K0b7 zHg~PbvDeVAyTYV1jcjwDFpn+nqnWJe&kyiY8QtsNtzZ9=t3mO&XyLU&@m9KM@fwQ$ z!&pxwE$+DeZ;*PtzMTLA=Y`^RBN1&4?as!7A?&&ih%B5DDto#1OgcqnoG+E_qM)km zWBH-q&4>G{$#SIux-gSNa+8*-#K!f_V*WJZ0ry`Yankll?_HR4s z?iPI{HuX|7JC=UQ?0E97Y_7CM#JbDKo{*WH4Gd-lvn|wN0j|WYw8Z_##Zrncb)NvT4kRYO57k=#?o&MYz=?1(+GlpX z?D$P~jTbB%S?*3+NWGfIjQzFy3wa12uZ~H&z^y8}(>p&HE;B1s|AMWo5)vs+lC6#D z2=yS{CTasTp+00A*Tg#9lvYo&J7&`s%g#eznGWp2D7e^0_;y1C*H^ECB7RBK5B(K@HVyOtHw9I;w2rf;)f)-lHuC1j09;(0LY*tD2!`%zI)*p^he?0dtiXExuaP<5F z?K%~iqaZhAa>e`OA#w?OOoV?Tjt1l+V>pti_%wC^%?Jy|YJ1ZQm`t)wkOi!TM0vHY zoG=`QK64JAm}IO4xgQ%evS@A;IwNb?hRwZhITzBvm5vOPi%EY0H7d(p^`&M{MoE_| z>R^-^t5s&|NI_`4NC`Or$p*b%zjbI_`(V>{b-WC)NOQRfejsMGBJ=d$6#PHXV*k!d>n;M*jp( zccbXaBfzb(ez^Hm3N(MS7$rUvnzK>eG5{dqvXXKx0t?R!VE1td^}44a*b;{8AYp@b zY?X*A;soKDJ#2!UxTU%OZb|(8;Zy| z8~3rQSnp)xhIS>)X2uo~6y$u0(c*wcbm(933mT9?tp@A)DXJ{UB`St!O57)43<$tM z0(JiD)tKv+n4JUsq9QkyWY@o^z4yp6Ee^8kU)PzKl0W^F_@);kBws{_P2;ETxFgZd zJ08u~BdoTj9zYPO9zFk+aEP{&NsRE`qV)a{1Rf!imjb1zAg`8NAnm{u!8JxML^U z&xu~H16VitrnXgZEuj;~0fFd75|Wtq5Tu*Kg#3|CBswl3YmX8fY$}jOU{2`NpZd^=tI)ig5R{w8#8E!WjK*8ne zKN%+aM7%>H<^8-I*QEif_S$f0qavLv^_UMi4NW z2>#$@=wULbAC3p60~GZ@5%Y3O@SB_7**3|273U zj5W5@{kthdwPWc$g<@mrQS%%>Ca=mE{+eWuieqcdaA zge&n<(N?VULV6F@>HfUkluhr$hKBExE)d;o;uB~$HnNt9(By({BIO|i#2|OaG-FRn z(+X!ru$df9Ul2E*;0}hP6%2AOj^H2!z?1gFpe?NzhhwXNKFem5)PBt=yC6_^41ay{ zS=*|`<7zlAwa$Av7Kxa8&VmnjJHt555+72L{0;m)$W8Nirdbm{vcSy_bynBZxCtFu zkSyvnOIZFsrGvkTzhfB@bs%;wpkS$Xq6ZBNZj^+N&C7Sn4k$qCTfoniXASs#uYn8s z3l~aqm&ykwAK%e}toj^wLeG#QQQ$uDgClA_axJw|8vD8m$L0lbQ>*9P60$n^y5Z=} zzY$&d-C@^=ZZV4!5KLryHritJGT8Z2*!YhoQ^4(MGO@=suGHqbj7l$sjpJU1kEW^? zWx%SdYA!Qtc0Cq&BM`!zjI5KuODnd1(yd7QR!hN=8ZE`?PuJ9BDcD(7n& zdbF?Cn-iS?CNFi&$|QP00sCL7Lr%Gu2Hh{fz7fus!Za8A#H2yiuX$b&6R3+bMv?OC zOpzjrl$!bPK&Du};Zu;nucV$NV20;m_k8i4;r+I;*6JoF9SDMB^ zRtBhotWzdnKRl#8jQ;QOjS0p@Jox|Is=UGD?IZ5VfYo^i@+~{8vF)~{*K%eelIcA1l&JdB@|LkXZ)V!eN32- z%>DlgzkR)o*O-j|0>8_KfZsFcq&E$=b3P+smJ?=va8slI zPxzI8{RZn?_AIlIA>yV_ABAVMeJJCcqp)l-v(u}jpOTbtb2&=SOtpP&`q)X`5)!aw z>a+XtpAK@r&yxr7FLKXOPCj(1s!_F4Rl-!Y{Ew!p`!ZD(dsW%b52&s!Pw?k+WjwSd zwWgXDo0_KEnl4G#WcB-JZ7F4O$E&iaDtqMc%9KNuHS(KqPqvlyO;_gLQaTX34jg!_HA|G{+cm9{jdE->}*&6Z#B4CQx&B)8w;l}uM9(-ZDbY$ZR= zRFdmeGToh{^3SULMrAq#Kf&25KP};2YRg}mDgPqyYcihZo}=;&Du3r;M}C zjmj6$e_Q^dO!@g<`2u$@obG;0<;NdZzR`*joSqZzhTj?#3`|#H`12gEntb<3Rr4tr zaC;tJ%@ZCa1`=-6RkzeUsu_k3H+eVJOG zGPT&x?kQAc`E#;rYdE|%W7Nph_K(L**QztMUER61HzgyERz+tVUXeEMBz7!Vzqb|j z%~Uj~b47QkqIF=${XqGeRtvl7BLtt1@+5!q)Q(tF-uj+wo_7JxlRr$#gn9;iG2732;Rn5tpo@;Wq z+`*Ba#`0JB;izhJ3;J*G#`5RQYcI0s^lG)@`lWidx0vyb?5*%eeu(;paW}}tHNSuT zsO;FNEhwn(V1CU>%zP8_Cv3_ktnA_gUVTEg(*A7aVK_w<#%yQ)mJmHL&KX2*RVD|A+opItmE|20nIu$&n;H*@^fgACDacZ%Wo~?)Mx!Mk-bCf z`|{x=J{T)(Dx^X*U+x!h{of>jWRF^{yGk0%-^Y5JRew}t`8GY&9mlusGpQr5uCLd> zV~LKjE|qJl;_jNsPOSeLX@z6WcLPUZbY<%&xe1=T*IrLdr$xUYrcA{6hRsPO-; zwQ^Cf)UocJmmf4YJ<_c;j|&gww{GTyO?>2Rev(i(8bRLeEdSebnm{NR9dZKBrtY>$ znR4TmbG~w#afohM#=nepWYU`2&sv}%iKD{T;}=tg04x5nk}Nxan! zNW>CSZJKtpvyG^z+V`yFT9Hj$hQ5i=CO23X*8UKRFzjggICk4Zl!1S_X?np!IK8&i zmBV&tW49CQlD7-%ZV|I`CAQ_-r&OAdd>vdXnF@qXi80D!lfCn&3>W$!=Uo;p*1g6c z0gH>k@mcNj#?sE(r|jPc{=I(hVSc)&cgc-nvEX2{-RggH1_=ND1%<2%CD83xR1&=? zi(1DLU5Anp)`FC+uC_}KGen?+7z47depHuqfFrMQ+3_M&{{j;i*_`a4bhK+}!{Y2B z!tN#JZ%~+-gwI8!bU$VH@sQmmd0U?fQIzUT6k}8EiD`B- z7~Ozbm6_4!SeQNqNy*m(ipgSw%*g8L-&sX#jkFfoH>f_WuQehB#;<9glIwa$_8qM6 zZC^N^m`d*eW??30LBw8w6EpHWk#M6zv8j~uk$uP3_m7k>eL&JFmmwhbg!v|O;ZTQL zU#LFI9niH~9z4uMadsQrH^gx?!yvA!W2d1{p}T|K%0n>W)oZ(B$A$egr~~cs+rKpP z^YhQ8bq1>+@Xg)-zvk0xx}e#FGkA57zgwuiBSN0`j3w za>GI>N(yN++Hh$MIjC#wj*~^dBlRK}Xd-ssbgqlgb0+3@yx(QT(Zm7~C+%}0m_2f; zoLuc_Q^I=$xN2=a$tsghYifN+64V$fF0w#GFUVgifn>2`d*d+zdoE7d3I0Xz>T}t5 zIq|VcPuSR;(+3(1dICzS38EgyBI27Nl}x9RM*pumU1Vibx>tvGy7d3tX#_;K1ua4U zy={#1Y$8tV+TIf;_-6Z-G|^;8&pdeaR{+73XbLJ-r-Qm*DML~2((zqL$RODr`ge4E zJVP85!;@)^F)%YK<=qcCiDUF5_rMp32g91mVg(9onVkPIQsc&@X@OGv8xqKp?>_b` z^J&`i?D!TlNbV#)x!*w-y7v$H0*fymxL{^sR5L~SsN-~n!;9{1-}qmZ9ZFCh0Mz`j_t^U3k@BD3D>b%gjD~`03@8@=D{!Md z3>N8uM-#6(-Y0}O+q)LExX*fYTyf-4GPI?zP7@zVHH{QI?&u z=UaHFv-!dDC_A-eX0UNwEva+l>6#D~u=gkvKgK`iB`O|Bz4f^ZHW6P_mHX#^h}2xL zNp&$-(q<2mvuXzja(63}msFS)(^OSl>^$L4<9qAy7>b3j^V5Wd}s-nW+I*nk34dHq0l)lEjLhekZf zqQYj}+_lKH*nq3f$R;jr0~*t_3l-f+V|#2xbVEg}+b#0EX~ax5mHzWvxh2kj#|JbZ z!7m9`;zr&VK$`LGusE^%A0mU)+jRoealii(&E);KiQcZ8N4Pp8fbVQkE%emkTteN6 zhQ3j!?>bDK?vFYh;D2@#lv$;vT-O)I@qEvq@xVv$>cF4D!4n_k&ka1Kz5z^X z2mHC)cUU-sPHdTJ+jA|&1$y1^-Pk{YQgd3hdnf*93{(kAv@Cz*4p3rd|5qFPWP1v> zqFk+N-d>-ZK-umW%X^wn@Yth-2zE{%@FYL6k+VoE{-SK-+??j^sq=BgIL)1XzY#ct zWSa8Y+7>M8Bn5df_-?h z+_H^GaTC?_!#s*su48GFNZ30=>wWe&1#ca!KgGUC>M_2%@fEx6j$vrYI`QZygAs>4 z>_I7Nl2eEQz})N2YUv>Z2Xv(ITk-95`yfkX?_T@;F37Sl!P_IqA|$zA!!&=0?g_?v z+)AXP%EA$4Yv;b6Sc*W0Jc3!~{^`^sko7PsD5ZkM$I!-yUE84Ku-w`B`o{A9JdcW) z#LG6WP-FfHtNar-MmH{KX*fAH;2}N|L+Rf8MG`~)ho9KUt4S-~MHKf3SK1X~eIj`? z_LB7SdUh4cAP_J>hj<(r_*R_ODPpDAAYa^7ketHtPi9y@(MxK+@y*@b|h5l2(iYk=+beKaw>{TWr#N z&Xf>f8YyCSJVdU_Q^1;LfCcA{2;hJV;=^bwR(ze&^WFFK?nG z))4Lo@ID7E{Bs@v{()5Qbxr|!b0d3u)}P%08W0B!-cUSZ_nPLeeUSP@WbS?rato4t zce(`BOMG{y>d(VqlJlR+?{&O!sg5RO)r}DYYjMf^U*@Yn*NH4`;Vr9fggeYuziujO zN+C(a*P*J0PL(*Z#mb!Wr7IE6YVhQ4BsH=>NAsDlz8<-?^A=)F!|?I}le4xHOD}D4 zoQXx!_@!rDn&Ir(<#2~r>$LnAvHQ&)*9Am}?vEL8z$u8X%}n7e3o&4B6TadD{6CSlkTZYyrbU5h z9}}O^-Ts{}T;M*|buw`8J1j+U77r0{fLMTyEpLpO^$VidNtzC;c|zAx>R;D1x43Ic znqhZhAU>o~hA!}(Rm&`xQ!@d)d0E1&$3wTG#EqyFwS=&v;5XeO33ETAVyUmVZ} zLj;z?^)kU4?Q!Jt=cPTq%BW`74G__lh*knnZM}3mU#%1=?1+p&k(&X(xG4M-%(8s_N6az{xC!YF%b^(X47#EE6Gp_;(@;aB;{UUWs44!by-QdgYGo^ z*ZjM*AifQ~LLG^=nEtO2|KK0pg1}HDS@$}=yJJ*}TtRD*GIEuP1-S|u1MZrHDYSG{ znyE)hg&{xjhmczCZ|<_M0r;PH>OXc~TJrW%{U53VTR&o@YxURI>Oc63GP2^jTbLwl z^>LRub?zyv1wzdm+ymrM=*%h%-ds(k&edBL_3`iQw&sJyr z%?}DX`FqBAkc!6&D7|9(xckgJZCzLc5!Nt_7bfyILDevkkQ39-@)inmOtx{kG2Yhq zYg}$-HLd`bSxGju$iZxKMn@EO8J7uN8OY$r7CNMGZ<*Y_$p(c}bM^`Z|@#SCs zZnl5ECHTjOz{Zx~J8bjJ^HMHlbB$hrUNIVbPugxT9dGosPVX2SM^Eo~Z#0T(bo6Yo zFGk7nOeUdfC(1J0dxWD4oNRD|cXB!{*P0nCIu)qMUo&4}z0v=;8bitxuEy2PS?;SO zn)fwL`YxL^=3n=|6Nvk^>4*}{;_q$hN>hS0j^5R%VPzsMz|7sMXO2s-TUc&B(#D)BS;L^j{r89Y*6NJ3ndxwC5z!CPKJ9<5~ zq;aW1YW;9Fm{Y4mm`0Y*tJ9NtX!f76T||B)U16Nv1s zsjajd%4V;Fed3ETs9@1J3kiT}%bYxk=M5wg73|K~QT|`G&K#UMqvJPH5xp<{E6Zfw z+t?#wBkoiI|F71}%&*`C+3(gwS5-z^bmqt22>M29Ku0xcIZI8f&R?cHu?7cGX*}-* zUX}~XUa)ZN25+a%Rsg{gTPmLSpzI%;GT-Zan*6ChA$w&jaX{Td3cOKdlya}X)tr&6 zT=5&bzBs_fe!~67@yN5yN1%Yi%Aan__fMB!VaosM-<9_-lo7~-0lV6^+OfKrL}ogj zGGcu8?C>|rqUXq&g@4FB&%~&^pca|s34wTT-@rEszY?9sN##j%^FNLUF_o;<(IPlQ z!YDG&msNMEoXmqb1RKuZtHlfBmMcD~)pwgv4MHQ^>b$6)Sn z(ODpAXIpMDgYx(?4z6Cu;3t$Ft@IFci(7qM=go1!gA|ah1r@XFxTlBGjNkV>+!x4k znoZR0y1|Xs3%-+Bg@eB1pKw5Suy26OJyL$^d-|U}YO#-qu;7$Q1Pp)fe$#+$-uIfa zOcR-h!=V-SizFWrN1AWCE>N{M!1v_jBM8Mb@cdf&@S_g;De*sxW5)g*e?(I;w_|Yp zY~-a#eo!&chg4_h6H_AR1FmAXg7LT8lXdOAvW@-SQp2z7|7q<%W>f!j$ZBe2b`3lE zZx{-zF3Qj!3aGhXREN5P%d?Q64&m;j)zerKPIqGCn1@@n706}=8)g%V{7WX(w6{); zPN;EW6WBsWXn;nfvZ1R3?(d@iv`YzaSR(urhUsSb`&b%w#}f(-0ncP77?Qx=P z)y^gX>7TvPY1)_7n3Xk?yH?Gdv`UyQa^Jj7b*iI=92EUgV&fa>)zKd8!z5g}pEZiP z`tKu~@W|iN3!FEUfMm%L6pPD{EFg~^RP56OyJ7X;B7Zg$(Sb+gbU_c zhwXr+k%ZoFhJoAbxiM~)SzlqlfE4~{zSk8NV9yS6hbT0WH`>e(Im{7SHEwpFGKi-R zos0~M{0dYXC&--Wx#8$&Ms8+Jd|vz1=*=~e@^4%#6(Yp>3D{vYt*N0}GzU}nN62Xm zC7HUnEYbkT53cR}B481=yZy75^}ljw&*!UAIxT*SO1ov5C*gMxFXVoDDC@JKlyonE zLNye^82qE}Rvgf`fEym*v6DI93IEJF(x`MW5aW|?uk7?>0Q`fMO#Gu06QU!X$8?0< z0?SQ#KHED^;EA}dV5TxR`F-7NcDmQG;1e@2&S_?V42=gL`edC{0iEUCrqTh)<9w%_ zu4K(@k;I}6f-6gNfGiC0{_JzPyun<}vh-?DgvaQE{iZ{VdZCgB`_0yi(Izuw`res` zVCEvsNk-5Z%p|*8xnleO6<5H@SM8V*=ImAEr^T0FtzGB1G`2JN2S7E59cUOX(7+U1R5<`p9k!O}2R9UWML zezyNN^z&i|{z?qVApE$;xeo!BqXGc6kl^0o!eiT87xUK}T5I3=yTuF#y!q0&FQ;~# zviP6n@Y;G0&-Y>Ig=%^mf=drV0q#RV|e~*`Xn6P?fH*5W#9BKIGN8J9$&E2 zzn~|Nk@7bhBt1^WDQz*BE6-}o%Bnpo+B$rD@>3)r6Nb8;%wuLH6z;dVU?KM!F67kO z28^;M*|W_Vx?XyS+{EHT{=No{ag&20BD0_RN9tgmmYK~+b2;L}Nc!Vx$<6x{!ee7n zL5@&IXMHJRn-06NKi3YhFVkj}S9-~@cHEbYmVcI*Lw*JYvaFJ@Yop!(eL(1tK z_8NfI5CNN(HLW-i<~NrA^=dBi@;Be5j{rWcvHWGF)b~K&;+`_s&qS?K(-ctaN5W1G zT+7yhupE8U{l?w)drj=AQpQ34XA5>W^p1~jkKU$)l;6fB(9Kb|`ACS}rv1hE429peCZv#H1_ex{p*O*pzfS&0O(6WfI0-o)mP;fdk@?i1;i zOC8rCk?`5^>1l2X3C8Z}-jA;t-SH(8cFUq;^0N9L{C6c|<;m~aoGW#TVU?LEa6wFg z+zWOZpCKaRk=DX@{smf2%2#W;Bm*SEW@uyi{HqLc#X)srd7WN7y7IeA{wBInRuI7H z+wFDN2{{nwdO5N$z0;D_B#*41sb1}`Mh%TYQf8GZl6uOJlp!Sah(vU`Au05SBa&36 zIh3PD5F=Fe1bXDXi&rTIX3c^-Mx(lHDV2VRBN(V(|cBb z8r&ECsrC^4=^*;kpQtTTKDh?$5K}gGp^PeHG(KOZb(Gg{`e%D;s8h_1UGb4GuobNi z5y}K2-0bdAbbl*s>|aS3%=eYRA~ExK35Ft}ENEmwPauD&nydNa|;PK+UKj@0(bN5v=MsUtr*i+-)vuN+~tkD z{)1OHa1&|q+{oWOHP_UC;Bi<|xN|ptT`cKr{6y-gxbh1P_jF?#_Sn-*^zdl!G><0g zF32#c)}}D&i5`>gK*oDa$_c3vAKKocUXjK9kf>{R7M$iTgMX8&U=mOBsJ+Haaj}L{ z>A=qoG?R8yyM}vavBWe?DGvz6xM6>BkC;$3LXxa2NVgj|G*O{D*Y~eDQ8vAm;LdO<)+&k?`1PL8r2K^@(4`Xi9@aa{|Hp+ z@h5OALWX7=={t;FNjOFz0$R@Dp%z8Vs%8_bvl*0t4aJ&a(s^G#x>A#j=o>)eRte- zx0p|hYWUPmpGv(?`R*U*!UoA%{PF7lcBcMazdvN0jn1UyeSul1yI=Y`54&j1+7{H; zqU6ATsU+I*CnQaJ{HGCvDxXRG3m`*rFKpCr%%NM=r6xSibe|=T81#WdJOU(8&#{(X zxDxc96>!Qf^fmMf$B2QNjhci|tSp?(s+evLAFLX&>6mClq{Am@7Vs>BnmcVYgW<_F z%9$cXp1|6a48?-9x$f}#jhMfWXO}N%1)ZqQdM@9uVHx=hv%!Z zzape|>W>;6MpN|sOpng=ll(9pEykF#8CdSzWMJ`VCNuzcjHnFU&NM{ik-kmq@E9jo z(Gl|?LW08d7AnhcbVRF|4uafo%brpNTl!udEzyySdsaJ6QLzgnLmlp7`Tx zM1Kd~Nl%l|FGw*~9H=$*e8OuMiNe z9SrZ(+Yu z=*rj?z`m7xN~oitxw{iTzsBA1o&Yx`N#vdqbcKkvdpfAXRP5fL)0s3(k>sz_0!8P? z6ZZW0zO<6p^r;Kw!d25z;TLR>a)+T;A*6JVsl%#D?imh8eBRZsxtZu56Ri-t8RuB$ zF-9*)-43Cp7X#QmCR!vKY^Zprghz?Yyv3WX{@7jz>)*HGBn5*Ue0(_i3q6K-bm9-R zvt#Zw9cVv~srghiqapub6MARZ-#W-?TcmvYm&)Ty`F4FlXF5?4T-TE9&EG4CVo5NM z3$KvwbyNa1HMt#Tm1t}+xxAz8ZOw&G@UDM~`TDMY0o?kVJ!5-E%@3LMzv`kaYIu}4 zg~b*=DjGc}tbShLbK{?A!dEM-sX&s@5MHXvHr58l+_t!tXPh4GwWSHK7&CIr23#j1 z>%@F+Ftbq1a`p5OMH=2wm}|9NmCcrl^ zlmyLmNj%ONLY}dM8oN}6p>&hzz3Ddn>V)YpVfUh!76?f~m3mG30 z{~}vmrB2%_q$nyD)}hyMns<*`2qhF~8;pXsyGH-qzL#7|b%zr+-eH1qvg)@&5oMF0 zh(z5$*!)3{cs+t92tLxS*`sdz(cMM3*8h*TH;=EXy88bUNFYq!AfRz-gN-#f28)_h zX>Tydxp0wyRO8fAaX_tYgao1@1aE*`FBfBLtv>j)bhh@X)oLk-PbJ{PXqBNNLkAqH zJH}SD&%;>F_x)M>+?z0H{r&OdrMc&vea_x%uf3+d_S$Q+Vb=kjSZw|3ZvP_TJowo@ z^?h>dr1Q7`g{jrK6uW|-<|4FX=*dkjQVOSO9LJ`vswO$-HAReBykhf=KJkjJ(|a(w zo2G7wCD(JnCj2CX>J%mHtg;~OQ`5TrVOlcAcfDp_r03fv9FZY(g?^Kp+PaywxpH;4 z54BQTu?o`~2bksuZ3Cn))A>K$o|z-xim}Lp#@hk+biQ|2@c=w$Rmm+mUFAjF4rr!} z!Fkx_q30WI?GxG|{(K|9hK*EAZVl$#WgF%qO^bOady0{d!#|o`oXEH+iwMR-}L1@uccg8H|0CSa`nSq=F8i!=`3F!mN%;W9AExFTPauI7~e0l za;!wx-xoff`PlI5?he0StndF(Yu!s_Ug7&|!tZO{CSSOvmdX{+;J?2p{N6D4gm0pv zYyT;Cdv5WaJapVKgOMNQk@+7L#mW~ zi!}X!qQ<4mRZ=&2b)#Lld_t9vBs3aqTxv_ab^YA+2RmVE@fQBLy`7I_vJr3~>cDa* zr~bFMAvaJnm|EmreN86cIV!DoOE0Cd$!j~?BSBfn3uiLvz__n&`>RMeb^eDR>JZWA zJmJsj_`Bp*q-s6K?oFK;RP=j`;;GZD)=X_S#abp>bJgtK$UK&atnQqjdzLbi^if46 z_U?n8(-JG;MmFExzyEMv%pP!5asI8e9hvvG8hZO?8cOHC)-&TQyFx>s%KtL2xchFm z!r!ig47B&gRZ!>#PU#Apapq$bf;q0kq!cZ_+WDC;y?^9e`VgDQ-SJJU_~h?WvHI)j zYp0cm{B@asrS}A0Vc13A%fs@;+`4mo`SLF1izs)~ean0Q%y+f`dE@uB#E*V(2XC@g z|F1`;ueVx-`PcjlbYLGZ`i7OSRvsPe?r2qb8Wr02Z9S!hH(^y{1(U^dtA_GDsdngO zKmPrm8sc>R_ll_hRKfVpf13VTdMeU|trX-J;6Y2OSpoub!g6k0%%!j<@#wDh0G_7Z zF$Taobutv9$RFS3$7WO9Q|~_>7VBflkJ}9X=M}#%k>Kv59DJV@#=jo){aY}ea-r1S zO1T@UMzez2fYETeKip`w<-7*)*rt+y)||%gDPL3B<JC8ty_$;P~-X^7jJZ#TxtjA6`pBG{J6{?8xsFcm56t1Z%(p(K3re+p| zmJ{cA$`G~*w5Qj$3fZ|3s_jj~OI5=`z^YDb0E&*(b&jl?-q#y_xxZ%sx>KE|t{V5A zggBkap=9^|&CqGE_Q4)lHI>$>fXo;2Bx`d%O;2uhTF-Vr-nIbFT+zFbk50L)Zd2E=` zFCfw47z9uadpWwyR+i)Y)ackSoIJNSE`5&IbL{52`&wGLCX5R?JL3D>^dQ+7)@FRz-}91!7|tSHa3*@ zv>ZyrR0?OjQ3KvUDoc9I>Nz|%vp6%A4dKj1aC4-eE~Wt%xw>(<*$nM<(bvf>u2rYD z_`9xu)A?uL3+ZS%T;q4}yGBkGU&)ZuJ9Y$tSYAW8lpr!4{fY?F@ zzB7g8vnO~*E9F7DQb(XviCXr3?w(WC1ZtGy3ADsN=v%zY@;oaV}IRY zUXu6CefKxnVyU4wCGMP*Q~!>tEjEX~XaUaK;1;TO_^7x`9M!Y0X4WXn)Jl5LE!U{? zciN8x-yi%v3&EIya z9Ax+J;)igS=XHxSBc8iDp1Tg`=gh5iK}T!s)?UN+gLI4eky58T{ytNRiY-B81m~67 z!s2qRF6w^hik9|c*5p6@4}>d^EICWE)l7yhZ!j{&C+r!_zT4SvCr@eMoui2{lV3wa z+7hp@kVX(7Q?9yR!Q@s3s(=9d3wRJrUcvBo_fL#mO}?J=UP!X-&t!1Y_1DwyuexRF z7hA0`HI>l6Ch8=G)JObjtUDq3LF-4KZT-h7>Adq=_jOnND-Buv1A48QcSJ1cJikM$ zI(2oP%RNVwnK(F*4b+K)$Jd{W|8(8>2XmI0RR8gl2e9DTO;mTh+-9dN{X8WDsfhfV z2Rhhf)Mw}(Mrm`~FI733*BVKUFU7Ns)LFeRsQ6$iL6@xlcpY8sYGLWjn;H0n3cNLQ zH&KW37>7_JJ~*f0Sb;v|_DGz;6?>P~w=quRCd?}U|O*4X-L7rfM* z>Dw*KAcx+Rs`CLC@SV6d6)O}!mb=@oGN>-kLbbyz0c;>aRq8hAHl6?EPC$_f>YfeD z16MZ5iZ+d=$eS-w=5Jwf)b;npC;ysad~l)tcz0M{uI`lKKXz?jqsJxJXoAQ07kPMg zx=h#4Xvv6UU;b`JBoEE3Id!FPtuH+3*B4I4=rl%}^X^&=6bJ8G{*p-3Cdgm*naq+9 zFW$M;Xzzg;mIKM~L!e(@_9$urkudgs^*xs&+&Wlz?qCgG&lo)T=g|^7{ld%# z{*48p^OP*_XO1r=mA=J#M5<#t!jV+J@J6mH zQ`LEMH_tkka31sX@XmsnXxT~}pbMvQk-oZT>%s1kUvFc9lC_YcAbm|idvEr^?rhJ~ z-^}s_EwE8;t@|xbS}Iw%Ua(_m6^W%dPR*mDGWkL*xub1`3iZ74t}}D$>6kC&)OK}j z0v((9ZBCpHpCJtDD^?9Q(Qdv~xA zVtPS)73bS?f;V(lB03XBtCFw9ldr~;{}`Lx#u6861fp(je;K+{k%oUAx(CwfTH<=1 z&aqhC_!FD_2XTEZ;+kLvH?EWc%F1&SBcYFYvL%C>;>Lc(SbSlBWR{#K_b zgk_NoTgJkv_>x2ZUKEy3aZma3agTG3SuN3vHSQY| zt?^y*;F@^biTu@6#=b!UmbrC$lFl#Rz$@m=T57Lo0(Xvw@8zn{F(CUgES%)}Q|RJX z@aJaV$mv;duSg-pJgl{;uQC>E-Kx)fSRW2yMLznY*n`Yiv=ZY39Nh}Tv2bN!Q?>3= zuP=f)AZjSwps;9)JJT0k{d>N$z>@=lnGRY*bgzk2nM2j!+Wcq|%rbMMQ|2|IG&G~bcMJP+s985tPECKb~6POzTb_6naH(r*f3 zvTuMX>Lz-a-h4gN!X+V0HPRc^(i=~CO)=q;5c!_IP72>6e-7pDMNseF_U-*VTiI4} z4z`%h)U05JxBnLE6dy{y)Tc7(s#dbsT7N1-33wILK_5dE6Ci3b%ZNzg>?-2c-kDXz ze#O7J4~%H0ke2DpRT8v&7KAZ6?UHWjCL;MWtjdt^SBi% zx>GnPjVu|@Ne(CMSy{*&D>c5jonSJvux;}R{gR+wkmn7DVw#+fbU z2KFUANs+g2@3v(Ab0Y{$KL1($?YC5a2QA?*LPq_=z)9!#UC7KG3nRz1G=oL=_?sBy zvh)o{-oAW}moxJt(Le(;KFqrg1QQW19QmDCSr|`WlN(QN(JH+T_4y04y;HsYyk zIF@!N$!?SX?6Y{hY`57r4*%-Tq5UM;)SRt{&KY(3W>fdb?1EyIM(^LI(nOB z+AbFc-;E)B)v9=k;A@a&)J*@o!fDs^;Yet8K6IdAiF&xPpdgBu&Hte21|P!saiH6H zs)}-V`)i@(ISi-PiE!|EuWe+eI|lzfhw+wAxTh{isLL>V?5JI_4$X0a|MhCT3 z`>tUr?eG4)GF~!xwEQWcu1=*s_;izQ_p@;-FTh zsaKl*(Bq7aD>SS%;15VHGv}PW5&OSWGS3m|r*5Zrhv9=TkPrrya>N`wgaM&ieY96)kW zZ5Typq|@A*i6z)BpapPOespGY7aj?eN#gc7zWvPp-$3oxX!sxiCYW7;uxkLcK|BN$ zFV_s|29y_W+uaYnP-YABVMvkyg%V6%p>Ev6e>wtZ241I7Ya@x?(NXB>7axCyzl+V2 zC~Ms4Q~M9<*_lWx{6U33e2fvy!;##|4yw@qsj$I0ylq}La9AvG(SO21RP%q!&Az{Q z7JC-g+P>~}*9ctOLuT)R40pbTM{7}t`5My(Ly%etDmDT&Ji(*tD?C zy3x(LA$pqIG4ot8{N8Or#hMv|0(gtSNX-pdGyf~V7YSq%iMnqV0p~CD=LY^@TqaxH zT^|Bqa{IGt!~KezE`7KO`+rAQ_-&J22)h0F@k{e}Wkhsrto8tKnHoJ2Vyw|$!+1xS8@Ws~fK|W(+tkbI_Fs7V z9L}En;@M;#Sd*O@ghE&)^@u+!l6RfZV2 z)Qs`=o|h*3HpUdgw|~||deZlzN}sg-o_q}K_Ag2nWZ~a$_RaBX)hbnez+Y@qw$gkL z>KW`pbFqruQ-4Hku>~MA2*@%;8j@JxgoD(OeBTpToSQBLCMqa$S8nq-Do{;@esox* zl*I7kGrx0ukZf|oWp*C0A}bwD?voOJ2sL1|zHC}7b@6v3WJ}CdDIqKV^n|9=eRaT1 z?r-34=yaQU*OZV(Sk$K3zYEe|?e4CUB}Ah&0(O#wUo@03wie=zgv^{kD!UA~6Mh_% zUu}ZU%q!`!(l{a8$%FABD9aCmy?+T>KSBZi1);{4y-iigx7{}&7t{DL0SU(A>65$3 z_%KT(JUKaQC{7Z>qCyzt1%&bBIz1^@_jm%NhrmT#=&Tb)r3lEb*l>ONn8sj zw4WHS*g3UVJgEr{dmK23UGd>=(S86DLGO2k2aX&&(*^FKtw#)?X#m!TF8T!JnH}E+ zASsj|Z2wb<1Dr+O?07e_Fr| z;fFS~+y_CHQoEmDlm)~0%|@ZkpUV@j(XcZ(dZW50=@YuMs3iRrNfb~CoAY{qK?}44 zj|=r%;y_g-u}j~j&p&qTvQo2ee)kCP_%2zy6XVzn|y7e@|8G zdt%>P6#I_+!R^Qq!Ygq_%y~U$mnhw~5wKO!=f7PvQT>-Zff_mab4#7AHnO38N019y zY;pUgKn$_=hP^9IrJBlx4Wxz)%5Z+Saak46xbA!Tie*~C?v4v@tfXy^FA-LVU*OJ< zhbvQn5e*fz&C3#%mklKamSeuvG_`25C?&p*KH zM}B;s_b;6>!hfC_Uw!{QUo&D6%=mnu@!6{JdCQNFN%Y;B@i{m_NHGIA93RxB zDaq}&9ZSxUv|?a3xaxm-{4pNk`-n7+QENMRkRahhq`9pIlSG2-HLRZ|cl!aG@P8VX z-G0Ds3~y|}%EKFB$&JxXI)8|~yZ!Xw>gm}5{MKdp9DzhMX32!yj#7H#CwweLlszp?oN^(dpFhq&;fV8Z7A(x_6|< zZ)`l!D>6^ZES^3Z_m7CoeTrKw!fufTKM&vhh&PS?czycqjr(t@|0*x!&Ad$2eAu{u z%#5PO{iEu8+WATCB|NAfvP=NC^L%W5FY~;#_f`KV)<;ZYKC9xkCjO|ej6PQ5(XJRD zcPYcyw6pG5vtMTRF;sl~7w&lfdLg3y-@Y7ltb;FmGYgn)*$pthSAFPSVJcx=i3R~dG-aGN+et`jYKdS~f1=X~C0_hqB%l|zIOnU$KnFS#o&w1B` zAs(nk$OhB?xsp;Yg7kAG3JEgbi*v2`nEP=IZxLXFq?b8|R(mN3?Sf7)vYDaba80~c5F7Z zC5ySAyXT&B8Hc(;maeN((Gn&nLFwE*?a{e=Dwk27Q@K=sO)4+fRr}|I$*V1ILLs_& z9u!1^A^iQRiMdozmD^X-8%|uR0 zIkKd#WEAtCwlvg8_NXFko49&WP2DAdrp`X*7u{ufCf2nRZ?X+@=$+m$gx*0K#3pYP z5%{rO>)xBpg0QWB*wmaM$Hqp;x+~f`I*f^)q+?PTdK2Nl>aO;Z;=|HMGwmS(}iNj@tG`&HTQ5E-}a!TYs!Q4 zWi^OsKtx`q^OtmIobTA|@$Kc`gJI;euOptil*uQ1@zV`ag107hw%HL5BKOK6qW+;n%2;&^IuJe8ET(a{cU!D=-3 z4Q<}{d3B!i;W-!kuyGLY*LqAb3nhFR>lQkwC!^w?_7U<5OcC8S*eeS>HIUP#!_8nr zrU*7r2}+<^zho(ZWNPeXEg%rn^4-qSUCQ$u;&0vZcXGot-0#CFCJ-`G$@||)<8g>k zlCo<0rbv_neTX!ktjp9F2mH{=I*@bcch{cKiZWUZAe9oGZ|7BFQdf|X@3_d^Ueu!Yqm3W+jx-%)!y;D$B2Dl6t4L(- zcoZY^`&~RhlOm!qOwOST{;Gs4gcnM|-ML!h&Q;s5$#oLi#hD-37Y$ka;>+-hSuAtj z%@N{4A%JMiEGgESm}~@QyRiPz$`rYJrnqC~^ATHcYjapmPCQql_sEEY@wW~`Y={|w zpm@#;svU#OKHARgSnvfBhfz&)Ckb%mx2}AUFU)|cLuGEv_xxC!$TS_or?qYvj}4;5 zyd?QxLRr&}P6o&^l_~+A*+$^8ui^F8WwthJH4frAx>Zl~Qb+u@RW)PNec3V}LndGGIq^)n zoP((M{KxoSE7AyJ_14vdfzOk&m1V%d{lq7+^u?e=!q|T>HW|+`VQe_+#Lwuzi%`H1 zBd3971%UmzSIXF6PCrFY{D_@C*N+$t3SfpU=p0jkEO7ZRc$zC{TXeLj!3_0f{ENiU zX69#;=-{Xa8#sUMe-L-R$Nes-^T8UHhr<>qVtmoKOmS&BoV|#hQ;oR9E+yW*V^y4_ z$rU@MU22A37VS@6cyEq-k-!;|7}n=#64Lx@urM2OUtw|Ev}8ALWa09oN;3?hpc-Pt z;@kEmmXT`}tjwJzn>4Yk*x%h~7V0D0gq|}WF|vRzLCYK|5_jU865G_4oTJYZ!<((m z0q!-{qGL&pnSDSNdCT|_T?VN~oUd$`ey9wZnp3RG{_sY&vQm4~=#5zIAoqjB@N>eN z=lh!DsX0=BzDJMflI;JBhLJ}h7U7&9kw#0~&o#W5^QqbbB1Omq-b!G|J*Nk$i`O?k zU&uE(b?w@^p)3$s9~_QWh~e?msY+2lY<)}P@MXn9;Xrx!()rhMwt#bA@PiMn_KWi% zu){Ma!S70UwaGOT!P4ShZ&iNawu7HcAL0C|6seJFc~a;|J#6AVJ*>B1-#C~%i;Nme zCHob^S%{B>sa5H9t77Rpi*U8aDz@EoPAs`Uo;p6B`dUG(V*QN#7^_N=czSXNp4eUW zTe+<#VEJqGY*?T85caDyi}kJkikGJUN|LBp`iIKpFaP=37Ekrx+H-#_FS_GcKomX; z-GX6Ol>7-r7QA-wd|y=T?(jvgok)?^_)NdKond*A8&A1ga4vts`mg^3OQnNV|3f!` zu}-GxawY%9^hp^k;m7%s&CleK-87xSBF;9Q*I#^8=r(Ff3?=$r=vlFDi!^kWTm+6lN;!!KdbsEh$APJE&Q|sWH{e z#wNvwVBgB7^iEQy{;9IDL)J<^PqOSw;oOk<=s(>TWgk*fgAN@A+KdG;WbG*0M{Rc0 zezy)B?w#s)L7}qX*A*V#d$Lp!Ago=K@0z(s_=P)lh)J4ZwUrv$=qle)_qpHh+ZK8*0^d1wGLL zetPQVG3P%^j9>!FsgtfN8Rjk}XvO27-5imoOBp7wbXhZ);~!ODy@YzG8-2@fi0QM-@-n z?}HU8&%`Gt_7y}D$~wzJVDz%&z#W$*t9BGzmW=NxWC({biL=+~*e;;tPL(AetoSc} z%wGX&t>Sh#2_+-1M@Ld!OWEOzq$Dlun3yMJ%j$US7e7T@T&1_CDFhU!~Vc?{MUoLfl)KD$(6o&0^I%=QP98NeZUNb(!OKtM`)`PS@isE9(EP43=I|5pddv0i`a1lUw?C zk!pbk4h2YJ%UU#%V;p=0zk2&Z=ktC#rhR}B5xdU)oP-ovkH3+TEXT9HDy4e=PNtUy z>dOD@(5f^NkN6cHvREEV94LsSzk-N>QD()peJx|ti^NRh(j^ndrO$d}Z2IOPJTDzccFGQ4#J2s|-0r3Fbdc;G z822%j#=buapJO^?U9UqS&l<$?WkDz(8$UX?-i3DehFJrqm#B=n{yFvUdi!(3R7C#< z6tZlgDpJ;{~63fO^QSA{QB5;JNt*{Wd(L?)9$8g6zB-rHj{(n%yR( zpf*oFY#PIYNW`=|UOfbl?$&3z;_y@Cr!Sm-PDuNu6~W0f`j{N_1DIT&inpAFX^2Sp z;QxTq4=de3*L3j z(QNjCwV&A^Z2dnbqX*R2mQ`I*@E++CJ{|?{|K_MDXn!=@*ikORp2JsSDHf~eDS{%h zq!7R8@#u$tFQmw|@tz=VFARSm>mef824%lnQq1G99Dx z*9cIUK9p()b{m=8Qki(2YG15MuB+VgddJF%EYRuuazT{Yuk1)VN^WR zcGtG0YyCU9JNneyM$603uKHo_x|!2)K4;_$Th`_3z1{ORlVG`eUnfg|4tHQnkl$@q zW;1nmhTA6Co;q_I9x21#g^?7(%pKC?ssgf}SnL3qa$h3=iJ3dxUdp)JoVim^=zNnx z*;gkCel_07k?!Uv52wU7%}kC$eqsC{l$+6i(Zv3|`XP}e-;u$Fez4pYO_bvmio8Ki zDMF_bALQaoI$h(F*x#dG4x|5lJ%{tUdme4w5RP z)JXi~&m{iI96Qm`qrNAK6A7AcfdkDPL}6;Cd1A?NY%**r1z5* z2|d+8ZcwY^F^-EYnOJgs`KG!EX*{Si+MxWl9pq0^F4TKC*(m?7HJD^d{o+RauW}{m z>qJ9?FMRzD3T?;UX@?Zf#sSsb$VXD{N)K|pxvl*prQicVjBo5#1Y&WE>$$)~C;iHF z?}8Q@CXEg{NMp%6WpcQd^8~EgBTkr|@T0%Uk3u^6-{ha3ep)Dnz~^~Dtbib{+OG{lG$_A77@l z$0R#TO(@Wv*BnMR7M%n6B;MMm+Or1)jwa$}Bk`|H2M&FkIme}Byb;q}_&z8c1iY?p zTqd6W3@c+;$gzQae79mAL`H4zBjFFB9o-my&ku1^9;8~PNR*`>uGJ46!Z~Kjj#xJL zB<_L?C}xaPtM`r_mubW%810XDHe>bQb_i|i6FeD%zW(|>bfRKoJ&}(24{8KFEh#qe z2wHNN|KezLr1-!sI0OH0=sh{E_FD(LMopQFv{{gwt{@vB!Qj*Az{<>k@V{U4F@itr z!oQ`zgI~_lUke}}o&H9F%@7BHdWj%p+T4_r8dUyaAKV%B5%2B5>Pf? z;-%KPIc^ku4AS}$8b%Tbb%-z20a4JjXv3@CyM5343UxI9JHAkm53s&pq( zQTw(|jyv?q_y3Ge`a?1!r&Ik7_GPnmyksD%d5|!{xlf4|L5tha=rvO*YO3WX;sdy+ z|GZasjCxY)egTU0#O@+Xs(bBOnOiqFxh1i_TeEKR>IWt^^k}YORI8(Av2f(*)trnC zo{32*1b;b^AFQO|Q>R82LT1oO=@!n_%v!3xsV1ugS>qat5s^&y0% zmrR)f`2R_r15m0+r%LjSbSc)6AMvtAuC(z^dIyJ8mboWR(NRad)N7@!6d-mbMt8So z#OT?hGbH9lFqEphpl#`4G}RTu9=|tr#jpAqnHNZavZ$yd$SW?5M&_Q%gT(Mup16&L zlUdQwKgCLMEO}9|=F+GT12e;2cM$)xXBJ&+fQfboYz>DMFQl$v7siw0;J7MZ4db)O zzW+iz6&Y(>dtrNbeS%K1`UytPWPGVDh$q+Bj`THEJ>-Y)U;hS zT+JrBo-M5X%qQEXX+8FH`2HVUBTpI(|Gul`lF|6uG)AK@5Sad21R}jW7*BC%CH(9s z;n=i%it`EK|6MGgW%ys~nCyT>oT+}z?-u^r*4NfW7JOG15(E-3onkhCx!bGaKdsW1$FZ8HCj|i`0{^ISg@8HK)8O|;f|8g6rMwJt4 zT*vv$Y+IYjhP+l-Kxh5TFdr9Ajk;~TXU>DRUm|{Bi~1)rtKrQfjZbDOe>v7>j+?;) z&l#o|eOI8{V$pi3=+-uvm%DHNFytH229%SrgG3so*6lZ%b4%F>e-zsQe!IF^x{Jcc(Tv_kyh~w!MkC1i$`Lio>FkhHTxd+W zu{AfkGqs+;=mHPNOsdu*QdSY(rLGh~7aTp=RcD}r<4 z9uY1-W(mxiA~O{6(IUmt2h8NuHq&(e`m+eCA0jHahnj(`=1h+gyjx#3qG|Ha=_7(2=<|SwL5@={{6fLF(cQtL__D&{Dal zH80Hh?)Bmwdgexch&H)=M*FYor;d%Ry?(CH(?F|gWJfFf}MJfS_y^sdP2-RHK?$a1zU z!@Nk-J-nNEZ6BnQ7{23QeWW3gp-~t4Z!dz^M5DZs)3Th3AqE677S30(6EB0nHGQer zK7AT09s`>38oj2fXQ*z|zB1HpPq*^9jJnn07&y6t-EBLjk^>+- zFHP&}r8TNi0N59s>&h9|*UX+tO&8L?h zM_N&Q3>EK3(wpIqNFpjbMaCuDHkgLRQ+Y#U6;T+8!?bfo-WL?Wc0KA=i`2dN7rmQ3 zQ{0Tx5W+{_c>8N--67PU8)q{)<2XFr z?q&RHSfFE511}zH^T!RBCHoSJcUhq&Rf>dl;~n^H$WRyC$H!VTRPaq-0Y3C#O&Cv8_&cE^OGrdkzoP&hBOodR{46|o7=s;I6y zG^Ozz$zV2HTJjQSId`5WwD8=D0AUzih5c@GL-~~i7{ae+H7EWxGpo6BxXFY*{W3D) zQa#Y>+xzYyyyAs|(LM^S$c=iWEB#CR6xlgDT_--_wU-a9YGmjiolz|vTU%!IC0g$% zTE}b*DP0zU6o*J&)^0r;Mu{(Mal1DjHhB(GCnHq#7J8_-B~@F3>RBLbqRSy%9CbEl zjoA`p%p4R<-jix5PU4+-k9^J_Nqb`q>`~vC!f&}}0Fg%ZY{lM&-^jAH;>dy>+#m1o zY!LWqOg}N8^i!Kb3h|Z=UFRa0MTA&tqm8z|G8BAm9x=4hX9Xmm<4~+S6H7s|qm1|t z^%Prgo9W6RGH#>J+WoA>!tlQ0&%)H)W*GGd=B)Oe`Jn!bsi`IE&t0AUnFX$-8pG-# zT_iku5fjrOP?>>2@FLXpS;&y4>}l5eNM<-*5JIg=Noze3(fsXC8KOD$qC*J7ou|O_ zPNCS{3q{7C^K(z`9RDH>D*)2@ChRkg(dL`O6k1P%AcVEd2$Ai+nl?B6r_g2Q0dwS- z4%HihSo;}IqxVfMzz^G_9!lCUvsg4!Xc~N@JHFNrUZLyv4$QQoKGlxakiE?WKifV| zpSsK7=lYlpjkgat8nJK|IfQUAcpt-U(^QvKP^z-f*WhN*e8x>1g!?_MZei?cWvVqF z?CuI>k@QJ4AWbnv3Sv^K-xUY?$VpW~ zZJ(=byc<8x$+5)UIEn`O3M(V6msfYJM4~L{h2{g0F}-5x%e}jZmTtm75;FEAG2w|) z_@NPguN5eQ0R$x1)=dR_QHiUs#}dES6vq4yk-3=Ch}k;)SHoZWK&onhJDtV!Sn>v=#Tzr!0$_eoK|PaOGoj^UC6QXqRA;ZPwD)?-^=a_6-cl zm$;i1hM(LRPyW+ZXrC7f@E^XevBrvT>XsOuejfyCo2Ozp_y`OBKB3J0_9;`snSx-= zy*2{WPzPhSxbwdO1`?LzES=waX&9Jg{*?=i>4H3-6$#(B`Uf}vATwRQiU(rU-rF*a zI?A5N5EeBTx*0pW@?=|ccJ`ZzfBFFxhx~`kp|0P$KDpk0T6CMnrr%E3IqsoUO2J9eft6OVveQJL$tKl&t2p*LIOd7A(sB9 z#wU_^lOF~XRFDqljXWshM69*E6KQvLzm~SADUK%xo~L5u2m!8_qFi0K%=*5vUEZfE zkT2|hg^#Ya9IV*)Jozo#AJvQJ z>&1X1nDL4gO7k&OUtDEh6uRHo7u{7HVAr(c%Ba1Y0y^M@mepHeQzG8TPL zM(pQ*XN)6FBdC@9DfAYb{<74-p0erN&f+N_O*`M`M$N;=vb*k7;)(U;?fSB=(5>bp z1nlTk9(}*0V03aA31da&vUg*W6^Z{Ly(wC1dpy}bwqi>pt!!Gc~RR!SK}dV6d7&c44)P8R#Kw%BON@#rbut9pz8_= zc62|}{s=QdShR=72})dd&uf{N;Cc6xbl6z?e;&f`hu?VqzZhx=VJK6}Q8~>_e);8Y zW{g-zk+}~rkP^46Z(=3Y%eQO(=Lnee@4TBvkdr%jH>cm@3 zbep%TpD0Q8s9A}{l4!Vj@R0;b7SC!^hc}h5PyzcZu+9Z6p(6?&qoAaYJjAi6OlWf& zbe(FoxF6wXkEIrxM&?zsiw#Qb$MqI3;~i)xzCR0x$tnLl>t~$5cqUj)=lArFHtNwu zJo2OL$`*t;Z~Ix+XcK;?AGtm^QeHwYm+zui|89NmPoO0npJL1hbESIwE;9G$hB9y@ z44i$V#{k~+-rhcGN>knu?W@kq!YyXTjxXPQqyrPL9mI(xY&{Em$YdCgTOWU!hV66y zrIS_F$GcH&BHL*m$ESquwN7{Bc9I9sSFLQ?Uvbd)b;6g4-ks-U@weOd9zwlsJpjg2 zs;AGE&i=zAzW?<%ic(Rx*grS;UKbjum#2ch3}~Fl=wx+YEiIjz>HG7d6`~A z_c_^K8&R5*aNf;ElSRrelr`kvc{u~~=~%NYLK3gBJ5ZJu z&KX@4vlg^ubRm=L&w?EHDw_l+PX>f^zyIahX176VAW3J~*zjvWwz(Tl0kT2ML+1F44U;PYJmaEIB16k=Bt4piCH`Yr4TBE?&aa~oE#B& zzt4Y}gLnqF3ak0I3IcMTZC{=LeXCM#hxDKgf9{nFuG)W1eSNC2rA`4Z*Y9j&keuJ* zbk?CT$oI4C$zLISDeN!L{!;nv=W0!SwR9b4lSfpwrXTU2-*qWv-iz(N?&iZ0|cZHS3hA5gi z!QLy?LSS;${BA9&UaViTKJjH$Ofrmz`515Z%#y(VR@>i68aqoWR|9^u5E!%9l{b=2 zYmI6U4H{(k=q1Cf3q0fv)anUMN2pb1h%)i2pqC~KI}P^}8EvMn)*kX8g^3?!eP;W# z^5@kvf>y_UmW})O#ia$qljCg@`S0G)&_`S$tMY6j$LsGii*yT;RFxjMC`g~YkrQ6F zC5A7sS5Fh!M>VRo^k@HP7E(F!z3%>nqCGvekxlpItJp4$I^DZ=Vap z^v6Fl=Y_?91`A{_sIkOYE>*%fbpP8oh$jR3FSJis)QM#NSNIU0Wg&YKet!kIth1S_uHie!2FXEVO zfYe<1$91;*%tsO3HPEe*>#K7@a&5akBeybIqy^tX&PFOv4SN4&elT5on%B3z&wc$~ zKThi8~!3$hi`hkkFRnEzb~OTAXrmrfo-l2 z>G(ZdKK}M34;yn=-~IO4neI0U)t>(rfTIuw7(|QhP~a5rMw9GygRb!0J_R9E6r6ef za7MDF>b?<^D;xLa*7qjnX7u&3O|P~0s5Ig*%~585q0oQyGkJ!*F`_1q3hI5?9MdMa z0e>%*%(}hXU1KAqC1zk?1Qa8}yG8DT4A7>5P5HKIdLNG8l_BiVyJ;fAJiEYt)mJ?1 zH6}OD95iPOblmz5K%w=Q-J1nN9Tgb2craL6IUI~%&kAwZ1&q55jKiq5^VZ{62`obx zC#llfAiGmIli`jKtS&JBbRsbOfso~dx@)A0;LJfUNVq6#u7Ed@BJF?6<|kF0K7Xuu zG@W;x@-#K`2>b9M-+L3GHn`OyT984-%bLR82fy#e+v@#oSMq*B$G;rbd%56?-GAM4 z1PbKKEp8idbUYY;W$f#tkI%BpJ%lxM?{AW0neHu{d&JoML3C(~MTbG>1{?`k`@I?Z zR&;lW|ENB!#;lTqA&T?!K>f`kGRB2n%Uy=x)DWymfOVM%t4|i|Q-a8UZw}V120*-{ zRa-4BD*|`f{4B^Bgr4X@j)Ks1{_um$WJ-a?T~eHxmv+**M{x`noQ4PmeMpd0oAxz! zQkK8^6!^VrLMMLbN|d+0<2$mfISXut_HP%j92LJ$v$B2|RKl<9+lReD~i4WII2L5B9X)C(T_>rGkYnb?K*Sn%CUa$6SY zQ!LTRC`c>T+;(@#dg^;6-BivBxvWJh#Tp)z_k)%zE}pu#ngVjHDf?vlxspcuL~f^D zUD8|)#1K~+C#@zG>r@uKBa^W-(%0h!IJIVD!E__g2#jp$Z;cScbFVEFRoMegqzY8cQdL&2Nni;y2 zciNurvgp%=$-Vw~BEwpVcM;r$wrQxTgok`Q0&-t6dI*X*uRf0*oF8I>*{_WNORy}^ zG?e8;=9YU&Bt!f=JUU`Vvpo1Y=W^%f?omT;fwMk41^BpoG)OB29~R zQ8BqJG8cuCLu>u&hQi-m4D|7J9M4EpkLsvF!`GCKO*MwBLLS0u0oMLCE$Fh0yWL)t z@08=n3$X#+cP|%)ED;Kpy|!7J={w5MaX7x3SpWy>P=n?j zwOSzNCG2daImMaLP-xDMjhwq?5tZ%_#1{vXH`+>PtUD=q6DwJ5t}eqdZ#B@IeMl8z z-*Uwd=3?@#i5AoAoc4hGZgppoin$MfU3C+V%4tGaX=qtv<^bfD}hN#bADI$1Kn(^@m2{`??Skhrt2 z)-JQ|0aK0{F@^`3p;3wrt#n1CvXy?j@R7i zb_)_xP9?Xs|G+o`YLm~gznjhk&lo^RCK!WfZKr0}CnED+=%jCChOko|=4U`FM4Iv_ zR)q~3Tg;d0ARw2B`6YNTNdz=;JS|9Wi#ol8W4f&Mzp2H<+obL)4Jz&`i!>=xNNg7n z`G*1`zhlRMy1xAFUe|-aJ?i^KmfUq!;^n+(^Icc9GsxU12K}z9B1@*1Mw_SB1WE5# zNKGvclFZ20j3}l_DxJ!(O)cfV%%18__tSgow_ zd5Lvxfx(mt8fTXds2@bWM)W4P3V*ftxE8e)DBH{qUI(+Mx3EfT*)TS@pP2d@{#k4r zH|1$jguY>ptVX>G162r*g^T%A3NI>0x3F67uH0oLu<(M6Y+fDC-=p|fz1)6$5aeOO z-j9c6)P-Vni*%dLe@jPkns~l1EGPO9|BgHO7L;=Vl;g&$6~Lj(UN}Rv4G8Cob0nOr zN=|(# z#(Pl@s+#lXfCgy0Z3_efbgR&P9(D%$$A(d4%J`MA zsMwA109|?a`cfaNF3|UPWvkxp zTV40^PyK0CCO@vpR=-Iyrmw0$-Pck4eFpGzs^hppS>&F1M~K|ER{1K-{>{wa73PH? z&Z}qZsyPZ6J(H0a{MyS%;2d8_G{jUUe`_fV*SLf9h|q_w?+VcNtzUQcTtT+9ICaCfAELWM~; zhTu5mPgNT>EGRdg>ob=atBzpYbE6Db0!s;A1&hUz`BSvp-lJv(R?O85on!tY_nste zrbKLdGx=(4$Ok$Nu=VZkF;dyb$(O}$oFUue)U7VZ(s|_kL9F5SFOJOL#G{}>M}xg= zkn4P~@$x2=tAOkwt*1zw|x~<5S-A)fzF_0 zABKM|Opl!*TH=Y;c5z%5ZN$u*`kgwchM3PhcY%U-7r66v3$L)L3(v=5C>{!4atg#M4sIjBS(k;Ec~N8Pe+H070$K`U=mWXZ`VS2i9z zu3qW*udk_W{8#U~6ZkuzZUBEHb)513Up7i@Z_zTtJZoUAV_oK<$oWCJB|& zAc4{q%!1>CIaPB{9TtXV(#Ni9JkY}qi~n4z`sCEama0mY%`!*DANDD_6g%6FXmJC7 zry=JSDOQ&sS#l!DMi4t4@L~xBGFb2j;)B|u>sY?>ZpQY(NI5M)W(&1OM{Lc_;Lv#bDl!~m-c~jq_*Z297+8|4gY{RpjKr6Hk{kJ|DahQF zXhF(y+%uR2?tY%SGknqVe}r1hJ))vIJw+o%X}&~O?qD$zE>H}cQ`;W#_5Ukd|KGM+ z{XcBY)IU*`oU8iR`=Vd1q6nCCT!o4Teq#L<)L+#+vE*|ahjQyf%+2u?4bQf*8@1{- z@Dw;pq)*BXSq5z<3O&gDr8?^aEaFkPi}B}qd}waVWvP?NeuRBj*|@)8T1jQ=Yu!ht zzrLb!@1H97l38e7Y|9%kNObH8Z;l=OMr=zvf9?D?_bw;dnC0MJ|I>%ck9m=x6ynT! z|27>K1_?x1c%Q~im{gLe&qd4sIlYfs2c3&Lj;)jVd~nsD&Ye}4ukOG2nRN6*^y&9x8Aj%k;tz%!%A$aH0H zdw0?o2~p*-#Hwy>PXHUF^r22qF#H_&C^C034@1go|D!?h^XD@of3*NO9{}7&U-aj9 zy4ptiNe}Cn>6y`$-C{v{XZ_><5z- zcamJYO!w{zZjLH+h;JsgKviRE9qO(85xW91{@3+Xa;SY|IyRYyp+-=tPW8FQJ$23z zr~2q@Zw@3a^u$WQjan+>@J#)vL2Xn*d=g!^FJlm`SLWr*8M?l#kcd97tA9rupa$Ud zJL2sjo8m<7=}Z!Ta=CI?3|`ObS|L#??!|BCJTDtKYfHJY$wLqUeiyO#zO(;rea&j> zwDG-s)!vJ+|52G2EIuBL)Q<|5O|AcC-7UA@cur7JP+vZ$q2T6k)qcJH+?(b!^!?^7 z^`|#B95cCouv@y>NTy>0Bx5G|={p(IZd-Vo&;~8{J<}n~Z^Zs(rU-=BVwreFij^;P zb*clb!SWQizwPk1hQuPbHM}jgL3C@lbwAPZtU7y@Y{CMVIA)5x?TDH z&pV?3sm5ZYiJ4mNVRi_@{q@S+biUfbXaG_U!bt@sZ1m=qgJmS4s(nf|xB57~r6Z*> z$aoc(SFvOnczt#;ZRKi(?AaoLN)b;WnDv}igys~KV3iK}r2T4tkp@R3OSg?%%U!7lDfWCu1AcFt zZ?9Tkm%C=&rt@=KGvzaQK;>*ETH#WH_tFr+Xa=V5{;(6KX=4OkGz`#jcc};fO5Kw$ zTfHNfhoaNwk0*s~H|V3%V8~jRR10tNu9e@-g%^pHecVB zv{f7UVv5wZ|C46$HvbGl+JJqoWaG=d4d`v{uZJe@t>qe8Y~+W-dk{c-T%hqyC;{j1 zvAc3ydG`LOfK_}9VC@MwO!KownV6PmCYxts&b#}Jy`C#6#x!Uge#xX9g+%`^EwTB( z%+48mo14mnCGO9OEc9NM*|oeSFAEvMWx``WfwA6g|zAEP9TM=J(MO9Z;az zhfY>d3U3{X&|(Uya(**`I&^&;GUh4O)x>K5z98)vJTw01E>pv&kgeu=mjg7F)F;6j z{-~0GeW~*wunN{56OHf(pY z)}=;4GheGsymc@{N!=;*y4l8VU0vT;s2xi#!#p?H8U#}KJ~WnyOCc_qx6yRyUTtbEYY`? zDqZ(2=U* zb>NgF`F%S263CiWtAWyboJMIezwXZUCN{7AU1mbz%oYes4|-vqn2vrqRd-)_P93v%ap>=oj8^}Bx3z|hPS+U)}?7Fq<{434c7RI4U6LyY9>|%H3B1d3KAWAI5 z2e_~vVq>0=(?~_=!_7l?w)MuW?E*ZbXh%v&lu74nW{#m zZa6+~RO%bY_r>8f@OTz7$VAOq4lv5OjK=7is^$qb%E=Q(-d$6byg_?lm9>e(zNWD6 z^uZN4h^mrrR3+Q0I9mdNVss+=EtIdKCoJe;vT16vW2|Xpw2IBHWyw~ty=GxRs1s6>7*=PmaT z&)X|9Y>6z0io15vfV=zcE-VFq>Y+{{1ps5MMeow~o)@g`X-|fhtGkg}Bep(v5mmdb zzI^Y~8Q4Zrt}4_i8PyH$3wlDn_TOe+Ih6Cl5OdVp0b z+qoK*WcvLen#5h9*TZ%NjEGZl$dVtM>yAx4Yr>O6`xW=DfY9oWWkfDE{OEYx1wY~$ z;g4k+X5T<1){-|oEG(1j7J;>Jl_BZe-vX9QYsT*&s8N#!_BXvM?B1n(XITEQzQ4?u z|L&R2@0W+=R{uHbOj3QjcwHd{Zj8qBCa#Q~GE(M9&TBgj|A>aRR`aeYXh$#Y z>;SN}k%i|9k)XTT5cSWR07Awy*8FJ0?sLWvTD1vR) zu|WstuKN3-9eR=cm?4w0t$^12Ar!U^$nu*Zm@j$C_Zx0u63M~0zZiUlGX+3||I zWT5Fk)GNMU|Czb+*e?;*X7#tdh!_bA2q-=k2+w6Rgw;Wd)aS3=KL@E@N+o+1?K?W| zldawl|Faq9hxZ=$tGGedV5?9$ERdNo`u;6q%}E_EQ00YPri~-)ut(eDp}>8nPsAZ4 zzN8d|D@+*Dk-IP}35x9?7j`$SZm?yH)F?zS=0-zo^pIWVu3uq8SXjU!>&besX{{f^YS(kM6>a_%Y=E@R zaZ4z259kAWO1)KzB#;LIWCTPi5V5EDIvtW576n9#-!oede$3mvjrye2{TiayRaB7q z_yFvOIx^{TVsW4~mg>^>-lj^;E-)u28X_8bkSKe6KzNo>ZxF3(LY+#!pcNBpG%8jq z7f_|n0dm`|qFJpeV!1F#<63M4c-jiw)ev zJW-aA*maZ5LZijr2NlKMI8l5kBJ!$q}H$7Oq>vsk*e%MM)G=< z{+s;Zk$J!99RDdMG-z1hgJ?8_d-ea3_9pOAR@eW30ttl82?81gG-$Lztp@9o6sd^@ zdd_?iO|6tW_+V+^X0*EnbS<4` z_|UmuPkf5$FZ<2(}pP0sX&DYwlS-`}BR&_Amj zM%BS5sYR?27?|}N*wxp*;QnTlgS*|^w1Gw#LM|9*x!dS^V8Hv)Z8_a=;0HCbOghZE zmYw|aGPzry5Jc=@Aqh5C;n11l(9Pf5>6i$zsPFlk)8nw`?$`8(4T1i!R7XxjVd%JU z{-8#zdQg~U!04%|mQufWAsG$;UThgYp}d6u5l=iNJ)wMk<6UI?g7%quEj5 zl3G_b-hb2F7sw@c0~HfcRk`3crLbXTlXY$Uf2kj@%JQFz#IUwH?UFClF8N07l4Vjo zlrRH9&mIvmMb6%Wf$qw7-5waZfieB60RMpw zy(2wbDxVq1cMES)@F||nq;gt!lgh_Jlgbf+N#zhTsT3;+R|bKq7hD3hE4ovbdkZKFR#O{7JHmS`Yj+6q{^bOYis z>P=)x31j9ZFW7?_Ah?Vs_Bw20?rtx6Msa$Wb)gufb^Sr|JMn)K^pL?W_!OgcBG&;g z+qLMLOnjC6^wrZ?o@Twd}2#b4<(LOXinqMG7|3+(!~oLJ5b1#jPzph0}3NX#lx3;LG|H$fZiTpW?IkGqP$De9Xw25iP zx3s<{t#oYf;JHV{pK~WLZCOoDdikm%d`1e;=uSVhC_N(n+#?dlIC^;M_isb|!M?29 zV5%dl*NAU%`Bc*crqKy=hV%K65iV;pR{>%%<$7~Y;Qju`Rv{im(?3~6CgKC}SHv*` z1~F2$!b%BkrD7h64;kCrzxhHhwniK`&n$FP{mm$};Ucznt>|75?vk&6=4kT-C*DE1yN^pY>n# zU*TW7jzx9oYWIr#=~YPoj^g^@*xJngv9*Iz>>oLv9^i-lqnNxu$5nmkkEq(rF0W~Q zrsf&`MOw2TRJvYOv#Jf;@)E5+#hoy4qO0Tc-=hwV1pHxTP)oW00Pq3(BR>opu=f3h zL3*|S-lMcqM-A!G{#y@O-oi)8Yx2%?fp8Lu{uY;%)07#g&K8o%wZC0SWW|u)v3R0?waZzaseL<8S-St;BL>r$*QrEQ z?#izd)Km(B_m$G0k{)$g#_Vp~__dz{y+!D`DY3JQ-E{@cH@ zraq%H9p=INnE;9kKe3itj-_tD(`BmrF7Vhcq(Ti0QL{0NLrYaf{^)Z8{+PP9F9pAw zpPjTE%+DE#VVoYd_30z#rv;Wy#5)8v_f%-=v?9 zWzXs!KPBw%I0+T5f3IcxSCPP0QFT^P^FZ4b>we--%jGqEKPb^It`plg03Y-#+m}Ae z{+d2j)1?zQNc%fTjy=@~fILC#Z;W6Fy4#6$%CC5kUS6f4SAFvK!t&*=WMo z1&hCp_fKoX{^w`=kL4{K-&wf$BA{|mgk8*V{QuwQXvMN;36nrfM*FpBw>>w-ET>|A z)j~ZSkWmyHENO4zuJWDpb)|ul%l#8vM}Br*NVzMaSD~WRAHK%=`0!7lSN4X%{8<>J zGyfm9^vK^xcgH8--~P-Xo%;h_`qb|Rn;19$CI;!1{sS)k#Cs@jB9!S5N0aXFy59j& z;uYqB6)}o(uXRHnXc48AddXY!r1EI(%wuMAPV`>jlSqhB!yO&dOM_n8f|MC}nR}6Q z))RmM=YSWDU~x6(6D}80vj*RjkgLB-Kpt?1>(3`LxNy`{IEH_xJ|aH2=})R^DmV{N zRa4%CqJiioRhyd!tQiNO+|;sR%^7-F^C|u9Edjatv5Le{5<-bn4l`m)%n0TAqmKkO zn3PUtl(+0XxM^_9-omEBmc2uysG(B`0xf%oH=ZMiD(Mjn~ui%vPj}Qf04-fTWxXCPZ%Dsn! zMYqKNxES4RsLhWllhIa}`QXsx-qP!bD5}ZG%}liBUxWl<^GA?Eo}Vt% zglY5=cuv36wG{>7vUwCh^+;sQS`MVVYCrz{d=%6R&^c>4Z9=v|LGJHqWNPtLqC{2* zSi4?XukA?_(4g~oBel>K4i&k+cY@c*a`$-`-x%GZ{xnJC+82> z;$9cu#rp6-2k0hrTyof&d+*BQ&V}T#O+0vs30`8-*hW)@uvDoYHZdiCd*%c{JO1HTVnwMSBf|ZX2oH71 zmT@ek(at?*M#t@}PZm_xC#y?glLrGuO>9fcW{eEq0s>t1zs?kkhq zhO$>ah5z$7CrEq2nkv5*<-p*=>HG6Ax^#&DdQ}@2!xYXdu1iJ-6L`L(otgyE{Dn4u z>#Clde`Q@VUTWab{c%s$Cx=$mC!?k4-A@G$t}z`-Op<7R`aX@IO4#t$b@317}D2iWlOL_n;V9OVu;!-D!tR6mV4dV;znkR}U1N7t0XXjrnQ4o^j1yr9f)MQhca zye+sD5KhE^m@sH!!{{(H6sz1g=Dw#P3m zvQ{H{3g@J!cUAW2X}e#*8O83Mhjt)D){x}+`CeiSn-D_B?myG(On=hL{|Ao)OyoP8 z{kx8DD)%NK%do|BwU#Y=VfWn8M3zPm|Db_El#CWeB(E9wE(%6Dc^B%3f(bi`)xBn8 zZC+`9w5z%}eRd{aIHL~^GfYs1Udbsa2E`E=nT-0eG$)T|Q!AKNkrhPX<H&>{b&#njhsTdjOVe(&lfb-J`>H z9e>GfH@C@X{QZExs7YeyFk986*ZM&V=$-pYP1`Bmnv}|xapQ`LWX<4c>mJ9=?jdi$ zKRP2TVj7s_tv2O2W9G@jeI&Q-e!3KHbTFZPYhs&QYTF9>S(6Nznmo+Pd#(Ge-Iv0?u>4B{^;XdeeYSy^gXn=#~kPWt&58cf6o68SqlV>x`E8v zmL6e;^I5Rt!>;C&@qr6e(br%W>67jKY~CgR&E(S>EQ$=^*uSTVyZw_O7&}uNhN6J% zgwcxGO#{ioE5C;Ph~+%bf8#|M4E%fHsaRZ2JKz=~=v6U`$uQY(MQ{Y)i@&Eu;`&q3 zZ|@s~S+I4#=xXjX#QXRkVo$cT)s>W{p9a1#NDoFCy?i?ssU-#Xr2wae9tsGl)b<82=(Zio5&@+xlX0 zR!F44F3EZP0Tc#%lLo~I*M>4xp4rGswTH3{RB-=v{1k3VX*#s%#=?Q*Kx z*L4X|Nb>{q(lA9JAAe)FU_+^k4v5}>ezs-dFK(IiJS-on_h)>xp)OvbuxS1RKMdZB z-1~QVN2GgcIfU^UBL4FHoSviZ`5m4a--&kEzwk}osN?q!?CXk6`XNGY9@_lGu-~gd z3BfhEVTRY6d9}+`6T=ej5mB=62RsT#>yQH?K>nMrq7HK=zEc_ME~1a(hhsH9kH$Z;^aGYd$G>9x3nDlDU8^H!ehJjQ zck>afx+!inq~OYi5MKq|$o2hnHVsY}c%itgSZltnlF zmY#RjM<&0+M!z7kyq0C1DN`6(ay(CU@vDg=l01KZboWa-+*=cSods|KCfnJi(fsu$ z|DlL$9w9HdgX#(8FsOdnU-9PKz@ajQ#k;+1fjUJPP=sphpUfqk@I?^z#yt~FHV|`s zYsM5(N!jq4kLPmf8 zzq-0)TRL7sct$?&PmYbX14{>ZU5Mrko~LG<3@vXG_rds!$<>h+n>0k2fM+XX&~P^H zS@R9r_Yn6id1;yVc#9go>?D`b6_`WYtsmIp7`uk5HrAe8%IWlmOjgHg{F8CFCD?mr{kTqK@ZpjY>f}0!1MBM`WpZ2DVRgxZ!`Ld|B7atK zH0ce_?k`>dVG35i;U8X9z-Pg1g zbgRlXOAK^fa@Yts@VW7k=$IUBYV6yL1_GKz{;5=c5v)moC#BLboSN8s`L$S@TA#R^ zgwJlMPb}KEr!Kze-=5dCNrWVd!#>#BC2ENzPvVqMUGfIbYQM5*TWTC{_3_sOQS305 z#AxTc$VL0vIF&M&G7Kcz`frt=`)ukzR^*+a$ROJt{*@woDMF;^u4wCjEa&#r(Y)2i z`_6fJZcgx*nqryvb*uL812gTr`lUdLx}E@u)e&ExQ-ljM0!Y41PH&O{@@LckwemsN z5`2OHI&OdWWBgI{WnAXVUBQ<~=F2koh4p7YPp;gx?wj_IZ`)%a$(eske5YIXhbp_8 z_s`%#2bs8ef3 za@1eM4-y6IvHx~7P2j_HtIuxDwq23rzsyc>{_#CGLs>5h{}H^MOma+rBP$kWo~->V zgZ9f!JMHvoF1B__5Q&`t>@1(xT*qqsPN9TF(-umU7>%2t(k@Wi*9JL3vJ{99R~N$I z(lKp<{a*rSI+a$ z{CCzxIurWZUY8hlHihia*As@Zz|V;VqTSxZBPZx=6~=S6hnLQMmf~8K*5`iSx&Pqu zo=8m;;Nph@+H(qM`FEpWfi~G-+Wfv-6)|ALy~~TeXI}SWTTt1s&%kn{6^Kq6>upEvoWK5qvwOjt zQ{#k=y5upRzkX1D&2PYB-pX*jxE^$w_CC>Ad6#e{YW_ zCPTS+tRQ)zlE+k=m#$~!9>B^jfhUZ6s;D9AhCJzoN*xOj3Qd0T7v3q!4|J;^nf@h@ z*|vy{0~-UF=Zb=|+zu|u>0m}=6?)uONS2;*8M7)h|NZUb1M;?wk+i~YV`Pqp+Rs*` z?*5PikdFTTouxkp!rb!Ow*s2{FP?4UG{eT6pyU!*-U#E8$NwB1|3_4WtGwiGTQLPE z4(90p?dui!aU-IQuF-XuvemHl$OcM3a0SGMc+^IyHuAtx)Pzpy!n)*D`Rru&chx*D zzEU5l{d-;9*La<~X{rCJEYSSphL&s#HSuSonNaL#76Gv>0CDn!zt*leE`2yzTz%1$fJ{r=en_$CF}_nl**G`E z8uh$CrIJrfgtFKh>}1|3h^*$EdRhN^glWqyulN`mQ>r@SkJ`*OYV@j27my2!m$))e~FI&6T#uRXu*QRha*r(Hi!NdRDq{wpV;qFctXd{EZ*zul9xNY zgYg~p@waMXZ{|-x!|Fi1XB|%dYj~*Lf)o@D05Uxw~8xcr_)g!Z5MN`|~ORf%)I+vZ` z8P8>LDHqk4MHs<@Q|!mDi!xn;7n?s5`QX+k+ZsyaAcwod{3XZcPAtJEm7ROmULKA1V*H`wQ$ZVSH;g8d4iF zJ4!S5sfnDEG)tfM7h*r9S~9=kMkV&c3Y`lDUk4mk*_?~R6*CHvZozit4S^d|QUyTt&6L76QqH9`YO}VPY zJ-Tm}QsPaTe5DF=2q-%p{MASG>OyuBq&|}VKNa*1P|#h`nPi*m4QfH?YR&CTR5=Mv zXGB&^_0)-CUt3Dx!X{vF`6q`kq<@+t0XqEMk)_{qJU5Z`U*CgvhWU%n{!TP^krkN! zxWcrth`o4Z8H5b_bb+Z|EsT%kDeX|3#G?yPBD^1znty~hK75YE&_M!u!3ZyDaq|#J z1z2T!yMHK7K-9#GspFVHm-9;XL7m*Ao~d&lCnFj_#Bc_n1p7dhhPqVk08dG~f0ae@ zXJpyp2>wX|f9~}fs#01`MfL-ES|}Z!cGzt+osO zBnq*QiQMLrj}L$OBZcia&1HO`!H}f%9b~QiCgW{hOo$I)q5~q+>zb7BLlEgecnHHV9T5%(#YzfxH)lw;$EHU=94+Gsg z=mwbG)g2vu_R-Q4ZK@CJ{ot-A!QM9bI0H?3d|wp5zd z&Y$*Aaew)^l3-diW#VKHgjQ`jZ+NY@gSo*#s`Dj-Mdr*6{Z6@bq4^}mte_`cbE2m;XUYUXXx?Ki&LoVe0Z^z_9 zow_gw;t+E8EBNP~7U16S8@e^B zaVYuk?hl(0v|p(jz3h0a{h72c`KkgCAn8#H8<`-6OK~YTh~h8;?HY8oURU7^Wr=kc zsr+A!&c#T2MSuo3eyvmxzyN6l{#7}E_30+`_r51d+aei1sbp*UPDI;6iV?S}l`KnGp`l@tT(bBiOo@37O}YoY8Bm;a_oBE;?*?l-lW* z#BLL;ulc2>GV^O8M<>>f=1VxgejXS?h*XWqc*ncAs;GTn@5ZkYIo+at8Qemhf(JF&5w3p?3Z6f5&rhhM z`}}eIZ)v}lM+}C@QcW?Uo2mW0=0-_43p64&p(?Xe-oNT^bf0d(Ht}D{;pvrrgMJ662E1Y85-BSnAvKkMW6<*%z4_MNhvp*J_*SYc;Fzv| zSTe)@0hcW!#@{pjYie$JM6KmDeO|rFrTK4hdN$+_qCaX&Wz?N&*PXnLOAMimp+`@Wg{R%k7#>Dh{{f=(wF|m{W;%)JElky!WMQMtJ2F@GYLedD+vz2aC-e~fQ?1`%=>wissBSU2loAdmVNU#Dm7@Z;G1h)$&Zc`~Y%^)GT zt3v2gewGGnw((T4uG2Mx8bW=pU#=3;+MW-5jU{tqr0Q@whntoDd8nPtyv-dC15MoQqb{A|I>>76C#JDl_??p zl4hF(s96Y5&#fZ66QJzT(9z%}?pzhr*C6cASPRJ-eKv$s%|BH~+^MnxX)N|grI=LH zbW_^%gqjXVplIi7_*pMen(Q%G>h8QP=%@A+%mrjLB|rjG3h-LFR=X;Gu5+cFl;kEsrd?(^f0gL7N$ zH9zDi7t9Z66PI$(#jA&vct^~H22jUeJBY~bp-jJPPp8n;UOR@0u zx&$`A;goKumZ}r~(BZi~cMJKzEE974|IY{P|D%CjsXHEisGvH1;sJ-y&e!qL9{GM> z==jOH<@CS!zvR%LkYdx^UsBu) zF*d_fsa%S5_<6G@e&nX%2qcT3>Hs6J_yd^{nkhDTxl7I06f7*n8*>~}IW;>?CB^>` zdm9g^rSE5^IRc+HOM1^iR}q^eLsw|13+jQftfIPLq8b&M0AlNT08Qmu#Q9*}ifA-% zOPE3-DfQ-u{>6Ai_Q?vR|4IE9_cuqDLzv5%b1Uxfe$mran5{nL4ES-vi$aF?B88Aj~37;tQqgt$KRFx2x~@4 z*wer4+D1_S-EW4ijsGL-+INGd0%JzM`13lfdo>|36SuCSEJlo5*Yn%A5yMPFQForO z#&{nF4gb4Hy|OPh9n+`kKhU2YQ2$@ijc&8+lm8@k;=aZs)t*bZ0S|Tb+X?6af9tkB z!Oz`39$#RQ&FrQ9%-i%;99krY#vk0tM9Nvgf3DMhIRqRmPP4T*Wp?+DYVAEon)3XH zfgKPpi9B)@6!}M-C;uZF<@1@uyu7{9h7D(&UL?tug(6{3|*wk~n2;Py7PhTzvG4xfzDxKQDv zzQU9-?Y}I4!M&~*)Fo%;JBw>LWByz(``jCvF)xM|*X)cj`(N)Vqt+qy+7*YV`&&pw zw=LE^Ulm#+73#htvUCM_tZobA8_8ZUz`J}nb1JSqMUJ@@!(exFtNEGu&$EryL^?Wm zBAtQ_En^sr#C{?2G2>vcHD}#~!_rt}wQE`K;}x3L!%V;Nh*(8?da#L_X5)!>Vt9og zZhn;^C3B?~_TcRKH9HO&cavNaJf+>5ZtXGs5Rj-FaD4#056X zyYXPjS)y#J%SKsh^o8cN$849GvNT29F0^z;-(h@X1Yq07AW7uR*}bp0?jRWh*VeI>W`8#V zLl%0sK|kAd!SGuVz|NeKj?}bsoKFORwUXpR$+y8Z&|UIf*{$yMFSA3J;g6B!Xh%Z) zl&g(Ok9`` zt2)gC-E36U?KjW0v*}aGZ_4l2i3qWia!JMmAt1 z<~t|KlD9dx1$aZGxL;&ASfI>kY*op^lT}sy8&nlDLw<06OjZ39KJ-MXOg$-83etA^ z8@6gzN*WcX$vBc>KIbFz1XFB!-Ic_T2e%(`K0yB4r8q1&|Ltv%hS5svyE9;KT27&v zOa$Af#|uG(jSAO>A@!JSqKUgZY+#+|v7C+Ndl{Sb{8w;Ok1YMR66K$E2M_JFiNxLf z)^M(RDEuL^(R1#S>5PqRDv(+#31qdTom;iuBd5QgJKg69l=9POxfjCz1&oz3QqQ73mfyAh~+YOfwpff z9=~cK>x7Qfbrj(<@{oO=JDYFV7xPTINtN>CPcP5Mr8@Oj3K&y>0P!K+$^Bt3G)PRD%1dk^33BceD^o2 zyRA=%f}~7*<`MgPviZw2B7rsi4%~3VXD8zi%f8|ILKf%dH@xJvy}&1yL+T1pfeS|Z z4ZMMHuc&>Z+Dn{9uS~vUsx4OeUCpm~$wo2P^tK-PvRU3%mh^Te%n9*lGxGD`NKE`I z6ToC?S*2)02TYQMXOx+ey;vJI^QTYL7Sn~LWfkPn`nLaT#(6d>G>cYi|10ywc^q*v z|F+Mw^nO1hU1l|ZYLKo*NMG1w={GCtLy^*t3({R{_gF*zC_egI8~KxV?NzoAX`@>C zU%D4yF@Oz1NF>;8Wd$x9io`j}wCR1ID9q=J?Mb z4g$z`p?w3EY%T}#Z~wC`P9?px$8NLyncgkhX8FIee?^w(=$Dy9fthIr!}FK77v!yL zq2~(O)QB2J+_1q*oGgkMCZCH-%VuEo?Mff%j2<&4aH4|irBsHqzR(LXNapk6-^Ni7 z35ngj$1;vq=4Uk$0g-!3Xx}f;>g^bH=y5e1KNz=?2u;QQ7xHqkd;tBj;^V#QnD6tr zNC(VU98!GLrWwR$`o07=$>Kb@{Cnin9qLh?Ti;sqsHi3y|1De6NJ}ee(ZmH6(fA)Z zHKO^&{b?(%;%gn%wUAR6R=;Y$u38=E7RwWF;xzT5vU5ZujcUE!vUSwOpQ?*LQy1S+ z7yp|Cs3>GC)q`r`d_DE|7etAB9GG}nDnd1z5L;gtDh+(h%IJ+d-{7R-$d$pFam-gZ z{tEzxs!`jVb3_>n{O@hh`DN*c$J8Z0U(DGJJEInfwJ~wd+E{yJX+Iq<>7MraFs;A7 z*W;g97ylB!R}H~E-yNMii7fS1Z$*|IqKD*9-KmfNaO&eN9js{qlxX6ja+Cs-Nd9Um zp)E(C%&y@G<>a>7Q{h`1!9FfH9}K>}g!2XaRATO5YTBlsO8&A>)H9--4^gX^mJQB; zz2aM1x2paeS+QIX$$QG&36cFY{6>9p%*6WS%u@Lo&#H^RLz^5<#e-FC7JPyxqn$cy zK$C}r=L|TUdcr5BCCiRggVs$s7E2$L9--#Bt%}IATf#nxbZ-7KoVhL`(5@~U98JtE zs!yCjQIeJL`ECAE+Q=b@-L5rp#>zJF3jP~r*H>v!bw&|1d z&P$ekECZA^m972@VfFQWR3D-o7u(cQYCF5FX_RU^sz+^^(-At~9>Bem{08@*_0R+E zu;K~3QXD4WFa&-8HeN zscz9I>;!gNG-|;FbOlX#MERxE6};8QH!17nwna82@P{<|j3jm8A?K7^fN<_h?WR2vntpEY@2g2T<52+gBG~2u>JQxzE6x$tF;7plkaV}E=7d7XyON>%n(Gi z!IxT>IV#h~>h10ink`w#azsAYZnuY@A$4RERA@a4<#f5*Ab`yIG&As zs&~yaFH=!dneHuL$~Q@W^gpNGtH!x{)ibLlPL1rK*!G2yZZkWnGc$SJ2>Ab0GmL7Z z@MmpSy+6nHHR@9Oat)2Gl7J*0ul2dbez7(QBg*E*{~;k9>;v+toxh3aaenx5RqP5Q z`6%iGVhK-1XWvI*_UuWjx1Yj zlaqSX6r4zO)VI**@H=z2+V4iuCi$f<%jlmX%YR4nfs9!#EX)?YH@F!>*;%Zzd92op zS-1-L-;&3U^$~p$*|?r>u!CWzRC}Fo58zng52o18WP;Ww=9Xj;^HW1{+&g^QM7z$=#HcpKaXT^f7#$IFg9jZ91 zCc$xP8Wz)FmjFyAwoOx%F&3>9q17(6gs>@b5QDwS*Vw z+yaX=WWVaPJ8ZdC6Nd9*M7*cL$?+HJ;`lBJd&r-=Bgr@QfU~zJPFJBBYte6y^b!TY zipz9xj~(~7KSNG7gV$+@N+rK8dv@O8+J8c`JJdwvlFVm~5;tX!jVvefi49D7 z7@Eh6kJ(t4^zsSJ6O`sC5HUg)pBIg9hO{p&J2D!_NAmp?yZ~kfgY}ng6UefBIoVYV zAuyAPG6ae^G3;2Ku{zQh)uDYc)Tp1;;^?Jb((2HyG!szCg>?uJ*BxAQbP7v#)Ri59 ze2wFO{N>5W+^X3u>l`JBEWMd|$7MC#Pjf}tjQVA7HWhK)=!&xP^wHRyFhX3u(VL_g zD<#Z!T$5B!Q7xyFy(ts8<8}f+p^&Jfm}xX zWctX2HzrZnCeGGBQO)?r_H|+0!-YWKXncIy(OB?)nNB3GvLO+P>Dd-CowouR;O9m6`%we+@^!G$9%u zlaEpz)KXnz3R*U&ZvTX0CtaZeYzz>y!vajVOUo8KRuPn%C_qbQ_TOvUPf({$l^0C1u-rrIHc=n0xJ?3JHSu!?G^185T=Hv-3S*Trm6Ys6aO-=LgrFy$ zMk;qzfkif=MB}7}qzT4wuYb;yU0qAJ<6uQrtdzsx#O>DaQ~Umc>Wa#WJy#d+=%hezebhap%nzC58`|~zB3rvHT_`2e^g2)-#GN5kvFM(L4MdI$0oB$=i zVUbXPk^&c?Bqv2`45i@Ac8+#17;u89f|=kPSCb_p-w;x8I`4gl6trPN5l|A1KUqUu zC87rs8IX;2N+BLEs)uiJ`^OIOd@V@t^y-xX(q!+HScRJ?sjZWrvmm$$Z6_LxG7dH#sdQMvt5-+burN zgF;yHPHAenXW-1baqA)XLq+cFYib@Tzv^#!=|h5GepA}U3`SyAFhBJ#8bt4OTH5VX z+C~nZmMl2P#qc?&*t{>w?Qdn^iIE%?u6^Yi(VQrZHtLMZYz=pVMw%RqbjgmMBOTLu z6=tDgr96W6gI`D0ALm8J8bgB9p9~J^*RSw{QSad&Jn!6`@rAdW(RV6sGtf44yH924 z=5%U&#ok>{l|2pc+(rWq_Va@K>(MKz_glmL~!WW9!*)f)YR;zq<@ zH01@?d~ElZXwYTf-0JWCDeeE4rkP6r%TE}z<{J=r$jrkDC5K7)8{f`_`NPf+$v(5w zDbFrKDzHwpzUwIDp0ZVfF}9#GFS7hNQnd*%-HoJmDfzf#%ogl>%373D7f&SMv?yQv z%Pqgq&FgG#U*YCXr*W{=OS{37#64&E-~5SNz%YZbOu@X}4Eh;n1k4}7m~BT)6Q+hm(AkP<_r#d72islW^l^zieN1q2;Y_%XsO zhp|OBGSEQ-QM(~XVVNzASpjj0t6Be_WBq?ls)^a+&rMhiO+SRm56{IDP17T3pxQVf z_x3#F|2psiHUr;@QtniX%o|LH6cVF{oRDiYIlVqv@GM3XT@vn$Cdd~bWQ`*o((lhi zU!eNXi93=`cc7Kj1T_xq1cuY_>Wtyl5UPGGgn%9^fV_#6#dX>m02U!X_cCW&& z9KtzaQc$z-+p>3L(-AFu4{IhYL3M?nyolbK?k9-mQA~%F(3D9?9Oe&%H~W`mzSv^t z-}Y+IyHt6OI2QD(T6v)6hEfrJDTY5eVx3G>(#f9~lJ8Z0fOZut3;38nofsE2}mtnClATT@F&Tw)9=q_QDLDnryUJ_Wg)UZ|5xA@31N53;)?kT)D8A9z6)@cQ9O)jp?PWO-*+3fm0 zZ)}FXZ0~ng5y5!gQ1eDA{tGmbey&Hs;MH)e`yxBJsp|ECk=3WLRoV>8aN36Gw%4Lv zPu7k5gO~q8dMsLu5^viZ-k_J;tK0DQ+_Z;ywngonXp)mttgC4LUo1;}uk*HyZhJM_ zwK+QO1?uD3OOC0k8?+JnE}Az&6;N2;yyVP1?Q$quT^vdv+jc;brH5@Fw}1EcaoYy{ zqpf5^-|##6<{o%*fP+RU=$(9^{ZV=_`>y_V#6OGg@e&KT!2w;aY|z|=Iuib~YkhIk zMM8qdheKnpAKBirZ+J7lR|~51xeE=_OmA-4cUWZEA8a^n=Z_yqqOsca`t9kn6=-H< z>c>jv#$}Cj17>b^*?KSaI{ywWf&gQ~QX(@bjhe;lOHlvU#hr}Z z`x{Kn#TEzkl4AJ#@c9J5L4~B6XNkAZkRGx!%7E47zle&;-=kWg8c%%0$ZeLG`)qBo zP;MhbYps}(PSnRYMB{tYu>b_Z8UGHgQ3O!^k*%5-O(Hro5p4CpXSIrSnMa*}>#wB( zhlWiSvutW|C`T)-Ni`Jzz^iJkp8r_-UQ{t1FH&hSl^TCt*TOC$pt4Xc?Qi_Eu+xpH zrcS24-ec^>H%C7q>3A6H-7Mx@*G+l(>4?e1I&7MVS0j5!*USLjDg!F|!>X-w-u4m? zn0d8o=iHaP%b)U+1%pHVF!uvQmVBD5;6!zR+VXaj+g~rR_`fTEEwO&=o4nDtueP=1 zfy-I`4~XZ}hT+0X6bWP1uFNmUu-v%+mh3$jv z-7Wsf^DJ@Jc_a={;*Uuba>@;Vqh0dC7XqaEHF+m_o{5o$W%YmuNEs zGN6GAyNpL&tMGq!jC&H?K)TWI zmLNT#--&{6-W2}a>RQ_RW;gm>xUd`j-t>GA`bGWU2iwdrQpZ1k4t0c*l4y4b%ya#U zJmQGv;zlowg{8*t5>njywg8t}iaqJ00$_Zz7_ z$TM|Mj2WrT@aMdoAv9uIwUgAM+}nTU2o2xLj^;1&jZ#huk z{iBfnZv1+;0blv2oB>aLyyqh6#+RdN;rJ4qiW}b%rFN|^XyU?E_M%*NkMpg`g3)9Y z{RiCRlqmnNWhawQI47={eFCfy95c4#1~ldJurLX%+B4{b!+)ZSl3AZcq}3Q z@^ft)Apd1Ac`jsfN~A7X5JjA7=hBz+dW_p19K_(fNxOrjS!HJ;b)m z=1J?jd&H4rleR-LoT2!O`jr^FYneqUd9-XZspjYOLipfY{{2NaOtJ4B;>Src>NlS8 zI~uoF^>BjYk(S_}hd;2(jFXaOeyB{9YJRk~@N<(j=3j7;N{;&T@0e9sONU7+OI%mv zar-3q>Js~iu&Btk%U@^jBt4jkz!=}dYkZ695(Dh$HqF@}&1a|bP+1Gl*eXicv#ZC< z0(7_WJsBq}UD=d8&)_0VNpL*w4E(mSn$;)TW|1Nf<~3APpJ<%a}9F}c*X^*+W>ARPBOpr(83ya}zFYWQ-%k@sI26b73rY@7qdIdJ{#Z5h? zBw91vv%W5n<-f!7IZR82ZcKesl63~(wxFx)A5~6*w%>-;|%j(E7{&T;Koha=_w-;$-1T*S9cQ+iT;m`ES0kx2rAzD{`&MJAD<^ z)+ElQzp{7tzoA9?OMe|1r7ceAQlf_}6X#^UXt*E}Ab>MiN9GLDSN7hL=TAnt8D=*n zGW(C%q_3T%(Hib=`nxdu39uoIFJ!D-WadDR#W--^4lvxnc+2Zc`1C*hX8~ecX?Z!C z2X8}hY|>$>RPK$gj`X4aY^o1mqjBzv!5v>7j>V~43{iAOq9)5oZv+sy&fp zmE|H!V&oEJ*jfc}>wl-PC_wKA7@2vJg|C9n40zvo-r*_i3T9Wyz8ro?-ykf5kUXL; z^P~zy-1?$^Kx^MJ+Cu(YXp3d7|HbWu3*{Kp87Hc9Om?SROPz`8!*BbW3c4@Z{-us4 zO+9M}dUl`H4+vh>&g++Jm2U6|*&a4+Y^t43*~6;v;r{Spvx>vPwi>t@4mJ-@N#kH^ zvK(w_nadpf(l=G-`0v8&$*CDVJx)Ortd69hiIfa@S5ODEBV)E|WYuFk+dTlHcj zc^eG6E>WonAP8nX7;xG&3_=2K?MN@GlEa>ApV~9zr7uMSis+l1rKnQ z+Hc@*3n!}xzUKwsi}af;{O5HoWM}JmQ<+lyAMDy|_v`BNkLj!$8V^_1?Uq6BA;kn$ zJfJG*xwR0~gMM+ZMmm!n`cO4F{C9n1>09u0>D1y+p|6Xqo^xpIZ8n!JAT6)D@(+<^ za>UVQ6z%U3{*4x-2W`K4w}&jkxkX-AWdOIV;W5% zUzjlb#oWzz4tAj_ftv`d$m+!-t9NZuBVFkWc{?<=1Eu7qzZ?CSRte1{_f)8*yEp08vr1os{L8kh-NeE&6p|<>JrjrfZA3Bh-#Cl;3{R~V8aoV)HGN82BgU9>19Wvk_s?BD6-<_ zB5Fu9IE#OL_$$kvZAPjEdNs}DwuiD-3(vZ|({?hJ3n&GcG_nyN0WBsfP0 z=<89T@qg*}!|aiV8&1Bm>cW#F%i?s5w~ENaiz}|IdcJuPu2j_{5fby82Cnr;Oc$=L z~&j*Lf;x7E|ghXT4szAo~0$xl}KhT@_pn}QezwMfKpOZXzRs6lrp zYzMy7n@qmkVU#lYV>NE*4ML73xLMP^c z!$;j@u9{!nJXCCb0jvFNhB>F@oX4Jc^ygtDAo{bAY~FxwaL%gC3{K(_o`X@0>cmNa zapdD3W8xo|liWLXX!q1y&GGQoztO6dFxP)0D z4igYD-CCT}{hY_{1f7%6_ha|$-QTpd;qKfa)g~>6pg1PtRlN{Nu7aE3ctMvpM`HKc z3;j=?;XY`gF|k!Ep+~+-9WU4kb$N*kdA_~Ox95Vr{*F&MM9t2!P#wvm%^=Gb{|RM* zh>#fIrG&!_XS@;7fE)Mfh)=Cs)&67k+Cu+O&|vLzCQZ5OF4apg_;nm75f^^U$^@-C zAPctmfBR^_p2`7CaSXG=cx~K<@zOx%xF-OmXo_`kLi`@hj4T8FXT^FbYXgBW?VSVRXZce zALWj(R2sOuF>TJP#^l>!gZ>R02Lv54jQiCi7|5%J%JXcvU(j=MDAs_R?A$_4VoZlr z=yxcDQf9q0!_Vz@BrGuo*LQcu!EX#QZM6#B;_9zE!_f+;4#Xd_D~JDGr9dK$Mk24M zkQa#?*MCN*#M4Yx>(VSP)p^%=>1gZkiGP-y`Dt7J%A zx}`wng$jRy2?k38i8r^8L9Y9hYl!87Y64M+(rfhnSA^AtFqeI%+t|0uBPCoNavr-6 zvp;VKHC)RdOS(3PYmq- z57&zTdf116x~Fs>_y?8-x=n4$o;r3hGkomG%kKreYV?0!(Ei{vRG8k@ySO`FpIbiR z%D;J8P=2(PAN8T-OM>=cPUkT7I#Qmfa`m@8*3xD3AO)cIG#~ zk!PWg{hHLjrO(`VjCJU80P=616(Y-zQLmvW{pbNJC&B9fF!(0^kMM0;aC@Hf$^Ncy z@Ll5I+x7+E``hO;@V(LTU%{6dIVq7PJ>Q(jhp?7>o4?+8jHWMnySLjt$>W|vZjUTq zsAR0v;r^%PgO11&kB`+YAG|vEY<4F3k((gGbM6hHf3dCty4hz$k;Y5%TlP^OCM0M}3^*^Z zWgitksSm4bOZus`M|n|e5Ahp&JJR{~(Aeu|5)OLM`)YOTq%O3_k(=)%HQAnrD?{r( z`?A~^dh%kN3j!ea%x%Jc$=QX)SBGuSxs3Mae-^cENk1oFRJU}s%&Ft=E+9fp1 z=Ti0k`H|(Xf}Z%^&aMHmr#r|Od+khJitFXC=|_Sq5WtVdpg3>-LCL$axST)ualxM+ z0)L`f9_MpW#r}TS@q%iH#-4taYU5kDEi6+vxZ)^xTSGrP$KV>#L6`pXCJK~;V^8l4 z$_&kvi9gf1Z$PGC__=@f0K*1X8Hk!gpB(tSd{Hmp04%=f&)~)3bsA6Ik?HjNzhbKq zVsfJj1($@+Ddp;LmbG1Mo%^9O;R>30pJTo0tiP(Ga!O)o|Mr>~7cqPiCzs~&(L_^8 z(bVIc`WJisrJUk?aQxJQkwfyQCYt(}^G)yn9x)_eYRtU!{Wd=+->>=JXkt-Gk=K7g zQTki*m#Jm*+;nDa(zi#WooeEugN9Q76PWZ(8P$LT3F_BG!z_LgEgNR@%L&%u3+&G< zt-=^3h8Tj|H*kJ3-+PQv>gqa^o}q4zDfXG1P&!{Ls7nlu*ll@l01}H{1U2@^NL_!A z@Cy3|-0%gWMsl8{kPsQ^)jSq99~qleWKa?RV>>$O_z*6ZEv*Nly0}-GzE#DV6R}Be z94^p@b3Qkdt0c%(l9IwGnE#y5|JMgy*ECanOR9nId_WGnruo>|r0-ZA#r_@`f@^42 zP{pj&F;+!2{)7A2KwlGChM9?*gRc&X{5Df$c2Hz?>V4_GVhc(!H>_j?cr4)x;H9_d z8D;JuvA?CQE@gIJ^D(hWM_6q`@kW{DUqFr0scx#C1*$Uq$qM~|4~fBvOA6vMW+X0Q z=sm0^qm%Or;=8=Zfs22%F`f&N7BnD`aD=y?1QIMi$)Oh~qXn`EJ;iYJ3kJ$^bB_5R z-fr%&|A35tK&a-H!S`d6Zahqg9pfKu@NnX@v0Bs*vK*L?s~p2v(1z!Z$hg+&~jzy=kYbhx!w?9Y8s{hwHu zsIIP$pG_YZRL9?w|Hm_PF3bh{IlJu_N8os4rGfuCeN`8pqYIyiP1;f-_>29ctv=vy z0A`sJyz-3%Yj-@+{>HaT{+aogU|J&{oyW7W#rOQBOow(!U6hpH!5`O>l#yss$3PUu zG~N8hs2k4j%9cu+cY9PyHsG{8J3SQk5YvSb?cCKBdHDQ(SMFYqUbs1Neo@s0#cc19 znko|KLkTlVm-bH#9quIyhNzAbe;wg)wI=}Uaw6bcd9Xz|zXzPg`NdG;vTGR+vmaAAYM`2eVG_pk=|O7=E}=bKlPf z5O!nKetuFXF+2FQ!+rAk;nsCKSQ(9VmU6h3L$-^r0i~Y2FVggX8OK98?1ACq>mYr- z#N2HYp56Uke5+euIMWJl@n>l5Sb4$NpG${?fst4Ult65UW` zeWIpBma>M)i7~PCCmaCvi7%H=PF%VS4A|M^r?4_rVh*Az?N|9YOY%Gho-4{`DEQ~( zTDocBCT7>_L^tudF!|JUJ;RW23fb+JXuE>)6@WSa|I!?>3Ze#OszX{&DI%)>59rzd zoBpJB{JSea2dQ8ra`R$3D69w@l9JRDVPj_o8-|B|hTfUg>Q`;m%o+372>*$zz~9x&@+Qas zj@NpAd}nMk{tLBLe)DH)Y2y^3>jdF37hUZRUpE@k!=}Of8DJi-xNexQg}A8z^w*Ml z3K8;lz<*;}3{t;?HxmWL|M?3b@IL+d{@ec!?98-V?EmxE0c}%Baq3vOm6M6w{5})J z1?zWX=$|On#45x499GN4B})g^#5>PRj>HN+=6Qk<>FD_A$rjW#f|0kKlj8k|2)lH9 zb7@V-y9JykM}^AQfA?#S1Vsj1SreO>*Q^tG&dCsJY=CaZNbfaU#EW~nOkX^e+eTB& ziGAU;(xv%lq3(fg4A%_f{QX;wZNQ+V*5;ch9G0VIX}(%)pjtC|2K&4Drgxwc(TqN0VU;G(1{1R+z)cIc_6fwXG=&Tq25eU^`g35caRz1{%!8aj=t&)CJQoSYLp^ zu~Gq4LVrr>T$#F4?(hB;i$%BHA_G`T(`6ds^3;4r?*JldhX2f)9r7MdrjBc#EwrCnDPAq6nDfu}Z;LXt6Pt9|V69JAAWv~=p#2RFPTBJeL0oRbEvFC8U~bw- zja_~dW-@t(0EygBg%&L2kG)ou&*KU4!bjaxMZ9n|PXYN@R{t;{Of~g@D+JNe_t!G4 z``rcR+Vfc|ar^t3H_5kX(nLNG1@agsf_M3-DFcSUvxl9@M_BiQUw08@YUp4teD8|x zeyM)kmT2Uc+^;tFq#}H`lOwqi@6+hSUeHc(+%_?+rMp!Re%xFl`@V6lxA`E7Hd1Ad zy?{H!?)OBuvlGK!d6jNX`U`(2beO1#Il@0{s2q<>!wO&ZBEQ@sDeGF1R|5bqAvgY` z&7fYYlVsuhcP&sPp2PxL-c&eS$u@hejN6B(-ymreTDc|z9veTY>58(Ztf#BFuSCk`3 z{fGUMOdPG5i;GVI8{%q4@ee{fe@$5*L|ectRCt;p#d= zmyJj7T#)CVE}X@ORZ}K5>B|v^qxDZ4j&Rv1QLWBpV;GMCCjmjx_={2bZ)gDED6>+Z z5Gjv;4bJPw?w638_urf!jV#~9NCk5U^sK2Up==tmmM!bbZb$AiResv@u-&BcBMuwjq4+(C~g&$k{=qeN`d{DWMNw_>C=CzWBx z@;w?q7lu|iI;gbTi;q22&++Lm?6FZjjJI}woy{NfO^$^g%0>RNUs6AKDN2n#z{CtD zsIgM++zaPx&tKy&(*oRZI2as^{|`9$K^s?22GM_$qrTmLQ2z44x#o7mZYR6g&?mfTh7OA~E zjes$SGwPX}Z0vG@Y?zARCYzgsFcrE^x%oUzi3-K~&EDzz=x`V7ck=|UC+_h7@hA;^ z_!-8}dKO-ini8#*?6}({A9ir5;O4l!bE%-AQ<0Ec6$v@fDki`bZI9ooCk006b2x=f8Ec+k?hky&EfB-IrvMo-3`S?R@>#|oK`qt&Owii5Dh0! zeFxV^96Bv>>e#b}iF{AN{bl+H2u+NE6|+LLTC5G77V|{Qs(|`S{Ra;-Mef-H@nWQJ zdH%SgoWEkJf6QtaK(5S^Q`((JC#Q04?#44U)P4WF7VU^LS4m;YS>Zw-p8;3V#b#-GwCh z@0D0f<3cEd^+)Na1@$4rv>?3MN{Au0CEMadDhxm+{!}$ss0NQ#{VQFqM}%$qgH_>M ze0B9NrJ7h9i6Wf#naIe}@P24;iAcL@w6yqx4(PgHHUF)bbJf z~WF8j2LKSc$^&`cKo{4jjJ?_a9*#~(ik z(T|yO-h}OTJlLN>2wj`*E0pUvID?k2lEi~X{fnXgM~wPE$ZuX6UileWIuFJaUi+E) zGA~v|t*Y3u!Y#ce37a;_OQ_i&pO`uZepIhW7eiCBU_K&^rch`4tq@5uA)l3uq zW|IHI@RwM=ip(F*ACC!ei+;Xv<;c4b1H4V0^oaehzwjCxbq?nFJ5gGs|InSo8hjrM z`Rk^FG9;xufB7pt4}Cet`3u$1t%98M&oEUt$ieyNq%)NHYyXNK9_Q&n7~V{Jak4aylH_p`OPQRC6Gs0au7@rXU6*9#m-Plc22h~%DXMkuA1^czUhN5 zzo_1k%K~jxT9gHXTHsG0QbJf_Vg)78*Rq~-!KvwY@XlmN1(-_^&-{rr%ao< z57z#Ipgbpk7~%LWkmwIkjJLDq-_$;sRi#tsFx^~9jBT|~s7fY0$@q_cK(_-+wL%t6 z3(#;8IkZS1xQ@CYcyaFi7%SvU=oifs~6_ICLTe&KG9V72(` z%RLD{F$Vpy*?uUQie6K5T!rwNONKW{>_1hWYZ#j?j2cwh!E9B7h138#?k2e0tXX-cn zCJLufPVP_DjPKEo9hZ8E!ClX!UpK_~U!*o0+w^0-s_gb*V~adZ*wM7yFQEAs_B^Nk z^D^xds#vS_#{$MZ2gd!thcWJC;oSX$^Zi}T`?|tSJ)JcejT~9uQBE7AMuq8Hx!^l1Owi}r&$5XTw;8Rs=UR*-Xc0O7`_RFUGgz?tM+f!8ybIGelK<^nEPoOD z5&t?Bcp+1u$Ags*#}9-^!tuWgX9T1YKq~YOrtgQO9TO{QSv#9|Zc%Wfl^oT$3sx5C z?6So_J=#C(e=J|!qkO;rvAox#{Q6`5xBk!W zQGUt)SiYf0`Lq7V@-upr@Ap5JpVg!M`m+D6{|kDQU-CbeZ|qV2tpB#WqyM%N%6rGR zmFfr8KtSi2`O)GMdXjQB-OBfxAldYGtN6g>TRtMa?IY6f?lWEUKeGI5^fBOJ)nXnE zEW#&0WXcYmPabxnJ(~b>>T&kmgd7o@*uNdAHo*}boVB^}MY`%u{rhXa6Y=lSrReAU z?cdQVJMurcYc+GE2klIHlz-)Kg2mR9HFJvH`H!rxC_FVYpMV!`u(yKbJsA-y{C!`?lpOb}SVu;rSHEp^=OlZ1RC);FS zNSO;cowCp>jQD?K4`$2%Ax_g}r{`&SH~x#T_4Cp4Ju|OH;e!)1JbJoi51!D2^-cs> zPD60|?do_)%$(PyR(7!=Hp@9{c!wxwt3Qa}_FyGMu=6keKY^y@P;y@C zE8RAuS^BuYK*bMCA02(ByYXGr$M}Al?V*$n8sBO5?8bMhJ%9B0e(w<*-~Iom@jV48 zB4>P;uls)--*@-9@ttfH{1@YUMyng&+b`>Td{r%HgY-p^|2{1VDvlJC-Ccd4H%!O)TI3z? zmGHlm|Ku^ zWzUC~XZ-L=qJ3+pzw1tahn4jHN_%NG}Yo21r-;>>Y`L=xd_sfKxv54pm@Z*I;D?Ll+W=<^e?NmDL6WVX_00rsn%gr&ZO!5G7P7%@_#AqNQF4i1fw)rKUs(MlQ+Whjr9|K zqBv|hb7lSH=b3-CRWIC#68o>iq&YkkcOG6;h<77Am!UF|{)We#e0K|%t%w6gigif_ zMY`v6)e87w_ZFOr=P(9GmxbQ|h+GHb!t3$c>n8wdb++PHVBSxd#kcKg4VKJMWLifo zT45)fdL8TGVzRoSIdbC}KPIt~DEhBri%QCQQ3|QCdf}6x3ZCKOvtM8@o zVL%XnHtCg;>OZu6<)y}N=q9;TWC|Gs22zxiv|!29uPrvLNpz?EZRrF}PN6A19K3R5 zjp4Cgf52g;6rV1@O_oTNA3nK6$cU{BE=Fi?ElW_Z4%H7E1(LElUnlJ|az1fa^*Ee^paY&6*b%A# zW;wgr`=yv#*R!`u5V&Be{-s(aew(T-rKJM`=ZvOMFH4dXcOy13K@>HxOW65iy?q2$b zt(V|#-)C^A7OmIt?QAoBLwo7r!l5%_mh#2ZSWU=dN=(ASpTh4U+UsElmJd2VjpYMp zE+cpj!QTJe;ZXOVo<7K}kC{BwQ<{U^AMUO{Jf%Nzoiz6}yY%@rsXfg*;CI@^J^OE{ z3`%enmQ#bbbDQl4^gO`~@1B3dDKf-^h0TD{Pcs6xWdvyZ?50#IIHTZZwcoG^oG<67 zfv=T-z7isp26~K@iQ`L2au%0~b?Mx)3$NP5Xw)S42jo+D)mXl9zMC_n%B= z*YI*uiJ-dS@Pgy$Fmv_sN*ZXcDzs*qU+`$UOSy3DW0Qt*VB$!&W$1*W&?jCOsxzG8 z2!=U0lwAS`e#nMLPKKjBVQ3en0tkxp&%_+M$(rPF6LTS?>Ie9;^K5n$QJ~7m5)$Nv|6^QI=Hd~H-pIBDws*ZG>=g{cQRfl97na8XX?H#`6~ZT)5dB< za0?X(@miU}9~hyP9wYpmfWSSh;cO!er|b|dt7&bQA7=TUSg@qP=N-f{-p45-V|LCk3g;o4Q;>gi=eR&Rl=6uh0Ma zWNcsS0WnaYQ7Ngt5%k*a@9#4C1N^*mT4A7``5aXq7UgGRFpawBz<|j5Bjf@21U-zdcq7p1}7 zM_0Q=e(?G$_bi+_f^2ZiE8V%wTLY*3!_xA<%V??%Q>0g`FXecSGQI!$S;-Akpp;=2 z&~;KJ+YjJp)m%uF;7kb&%-CPmxXl$1$WRYz*`@K=%?grJ1O8u9XfL8`%~UJJX-IKQ&G2N2!*Fs&h(1Hf5F=qa z#R4KE_$rr%w6n>JGab-@MhDyMIj%3fZPV zz*TO^NtQ-d&tT*rWo4X?Z`ohGq3zJUaBx*$?h^VeuMklyIQ=9~jkQ3qUE{1{ge8_{ zv}yaNjNg*y=Z1D|C{sY_C}~#>fJSoiRA;LMUOMKH&LZ)$9c0?Oz(305 zk4t^$7O2ql0+s#KY>Vdi(lVMK8Tp^uFaOj7=f?!DvHEz~R#e?RlKUn45Uk(A`fRuo zxSu)3BZ=^u4cET#>P+Pa95Tw!b!6hdxBj5`yX$XDjlZxH4?`dK%m9MO1Fb6Di!POe zX1emauBV|6#1FOz_BGV%Fbt(HE5uNmM`MC<&Fa@>d(8cdRHd^%gH+3WZRbWTHpj06 zjuGea%mE=lbAjSeJI+HWc%l1GNxhn>hmT@vXx2Ckr;tAACNy=7gRuV$`?5ogUU>UN zbKe_?!s-q_23CW;f22(5QQh9P9C@!U2`8WRh?g8>6DaaxMU^)Sc*(E1Na;N8RutC z^qcKB4_Ev_HYemlAigmE3MJa5DRF}4d88LE>dac~Lh(4=?sd%NrBgA&P#aBp#A@jh zwJKzy0{`!yalgyNNy+l1df}#y{kqQMvJTIRB@iX!A{im|$|VjIEa{~vKLbrnAa@n6 zP)Xu53IZ0@P}_;4p??NGrumAROv)`JG?a16NH+^*(W~(rEGG!j4;lDrgg9FWL07Z1 zsI%IE1JwO+r=Bns7;@ex7{b4cdH^DY&J`P?M7tAHZch!Bln~o$x4Qq&TwNJxM9_@r zH4Vt=_-WNVZidNMK~h9J&hc?uiq)oH-Ssa3ACt%E!*F0W;rT541!8#9Cbd7RR?gpH z8<>gRhmUL~J2B^BKjT%W37#D==NCK~iWfAptAY4%G%XDE;UN-QVRl@Y8#%GA=}_H6 zY~>hz&xF7D5CO_o$@_68n=SJB7ts`=UPyQ4d~)OP1a@FjoPn?InxxBCH`ndQ1l?hG zZHp7Ezh6i{_P2-*5c)Tz(=V9)Li&f0{uy@q1?YbCzd-uYyjA6&4oH9Sm(Y(2ICk(~ z+qb`H{&3q$Qa(6%?}PwTn?qXAN5QOG{UwF<*XpL}(m6rh;GgtQ>-hrJQ%J4jqj2I{ z=C13JJXYOJ9ZTn*^jM>$r53x^2Wk5uy6>qt7QP3x4;ss)F6yt-p8*NqFy# zJxiVmozz{o;-jm&5f;ltXB|I$D)s+@b;PYNt-1OB$Q5X8_cQ`2!e3W?q`79jiCcjC zE}Q1@|TfFH?}@mrC)7?crH&M_&$`Zwx)X)Ts6l0vN|lA|%|pN-S))gfv({#O|~ zN(&VIk@ByNK$4e>WHxGn!QYy9a^<(%q^fgq(jR8bm$bpKO5st6zA*H z=?-#>{drSQA#yVNz~vocbwWR^%1}UJnK{1gn`+w|rM3)r;A7)8tKQTxW&6)Iq&qB+DLb2;s=X2#I zNef2zDQf)ZC8>!z-ydhW%OBY%U965z!y|EjiYEJ8dizz;zu;7>MeCte%(4eJ(}Os!Zr`7C&)Q-0UEo{yTcU4<{!|4Iwo^#jbWkctcZpZ-Uy^i*i9c)jXQ%2%hR@Sb zNN6Frgl@h7^Y$W+i6KKi&OPREz|s~$x~#;M{ixDq-Iqz4d<%WQOUfVVGy9e5{0h;Z zf7EzDWhe2dARgHok9KIL$rcMRIG>;$e5muWJ{6zZ)~Fzbs^FKLAIIb@-whPt4nx}$ z;P~YIIFMMJf|&j$@U8QStonU4DWGi)aKih;*BpK!9khIL%9n$S6mU*i8?#$ezAXA+ zPUl!1^u4JtWS`NE&LBU)K&A$eRAxL!8$FkVEPqY~-4 ztoXXWh@dAs`Zlx@If+f$rN7fb-B<2FRhKEfI zmARbLTv_`-6_0>9PDi%UoJ3J@8$FH& z;PT8VHT%_*v@X#X+)gh?QWV8UX}ux%rN#%})k2yxrFTQM9b_BhgH-;f+RFdn!SV;J zRuC*XoTKXMlQnxVH5bX3+1m!#al*T?0Dsdgj$%dHbp)zK&7+fK#t_!lgLF?rL8Mo> z^7HiP&}99gcCgVrSTb71;}8JeXN$EXsa9$Ks4`%xR&bAyXar!2Drc3dt&a$jtmgEZ zR5cUqEY_`SCgsTDj9n36X{Q;sG+Y|65&Pq$AXKZcMBS;2K%>`En8aNAb4L)xWa0Yc zZ+^vF63g&aw+APAImYvZ=)Oi|K>i4PhEjp9L7lg>wAcJ&#dlFvV6h4!F%AC2wZlnroM zlpI1Rnhkb5L2-+Wr+*od@s)wTjgbpRfbX#A#l3iL$M*J)F=o=OV#!mV>i^tKb!@0) zoD}IHBwgNmbvX)?TQsaL-U2w#} z8ZreOOfsbl?3&Hyr7AdzXHCLmyqrR4wfnxNHVv~T0&IWo`T?o=X%VG%7$vHLb#BBk z!yQu9stt|Yj`b>*D;;V}?|s<7>Vthq-`29_Cb%m_ozdPw87&)>ZW(_py^G@y56(HC zi8W-0US^3p%kG+??SsR|qZ*>Q^LYMA7zU;}@1nkHT&$U4i6da&zMD0V4;~IiHDl1a z13Qo|uxDC<>bsa8?LgDP{PR131?vjTLy7JxW`Zh|bH>D^3awkAcdd^a*NT0au+Q9l zoT$4Z(WlW~15Yx~DJj_;N>-j&9#`c)BI%Sb5gNUm$Js(Zhu=s%f1 zgi7vyhoX9vQdmybTfH8wOm6kM7q4c!RjbCCr9eIovOi1UPcd7ehYa+hntu23{or;^ zKIR`iZp~QlL-g#;v#|bMB^5IqCqmQY9L?=2nGDp?S8ub9#A@YDHU{d*b@()2&pH@J}~l-wf({5AqV;b@}W^$mADT_Q{x^GIU>m)m2l zvb~563( zBQwWlHLnryu*nv;1S2F9&_ST6oev^6G8XWZt#DJQ#M4AkaZ~7AYOhNONjH+hS;Cqt56r!A+iDTkq^Yp6lrPzsky z_=4Ov&)Q6+G5i;2%r3C+@jTR7?4zhfeOmeAq{mr1YdXi|phshNm1m`|NGs2` z$69VHtv+829rbKLS{0m+{QL*!geUOO5e0~#sPdl?4tnsa`XN7-uYg#A$}-qNlNbm^ zo;qVPKw~zBL77%!b5}zOBL9o zOvL9>#}IYg_p(YO>{az-6NkCHzsmXKP9W2l$h?y)*!?31MwOEhfcjgig9`3PniH7j z?+DNcOaHs{CJX7InYxv&C>Dztd9ax|CUg>uVWK#+cYMuZ2+1CQ1ohY6Ni|2}s{`WM zJ`=|x9#^>{Q7%nw2&NpHj14!)u2LhY2?5-+J5e`8eq;;qFg)@btpP@_Zz}QJ%QT3(r(L z9vOpt3@l|U(Mc(q?pXm~W<(n1GfyPO76t^TyRc#1J#RVi#WY41Z_%9LmGE0$!qCXH z@YE|;cm64JI1r(G(49I-v?uiLMnjHggtXN{?QgIO*9u=NiBIX<0LZw%jF3aE<8j?( zU27a4xQr^qo~F*@_hLv)_BF`!!TERuB0QV4 z8RN*un&`!%Nl0{u?lsiiucm@l`iglZv=9J{;Ef6Tu1XgCpup<>_O)pROK9@kzZcDe z?lTJRYbzL~WZ6myPW~-iCmt2pm=>b_2Z|pgLu(Ebmh41~siVORMmVNlIdfgjrA9RN zEI#CnxJoc&fE_O!e?|j96$i(aMnnJxA`M!I!3xyPPw(9CP_agmukRnjfuT-9R8#+z z3S3$GTZsMY1bmBi;bUUcN22%<_Tnd__(j*)*m4=~m7AF#1TNd8tx)mgg198rhOf>JvPK@Ae z4_iU4#AVVfvC)BDR%d-6QcQ%J`$Z9UxP)PS0fFdq&OuNY%(Ze)dRaEiXW2^HfS#oS zbNxM8)n{OwQGJs3V(Gt={*@C7a4pX&-^|u(_=WDtmaCSIXbt3_lW_H4C;Dj}GDYA+zkedd6KQ=9et^JszPK|;=s5@@0F0$8Gd<2z_E z1Lc@WS?kE^q*1I2hEd;9G33RM+M716v_^P({4yJoX7&%5e`3~|QgVecHS8Qc5HPfU zGmsbq4jih6CaVV&>c69YY)#%DiINT0tBu;TNi8OY82qJC8{=`*?+dw{I+NILm_TO` z3$6_U|67FrjpQ1J7s4_!Us(1DN#*(-YhYudivYrI4@=*oY>ZBVw--CA`xwzdh6*jA z+yhf80zI||b^wAzzja`eADtoXW4NS)!e-;p(p9Lw`km$orY0%z>OY1$lRY72NyH2N zLl1-^u$v`cs}`B^B@TiZeO&!0Mi%)HYE=QpI&&y=!}Vqj9&G<-verg52S%+oM(viH zD_|SJ9T5F@`or7&Fj#5_O@jipGd=Jk{P-v-_P^+UfU;Of4e4|Lf7kpnzLNcurg z;Dq@mF(lIc>Xn_d*c?2>Kg#%7s2#v@*2T{^BFH_V+$nC2rZ%S4!$^04atdB>|bWRh(OVc*v>r- z=80(SW^`>dPRaUsIC=2rBeMX7cXy(^Lh6qqy`2fpmsbOMoRWc?&h)i2Mic{J9yd#6 zqaJ+Z$5#5;p@}WSUJ%BqoJW5Y`wNb9{VG^;BKEvHsypHEtuAFKL{dEVM-DofcJkja zJjO|$L>~sX74z}HL?Y`gCUCy^tUGlOmDcUf_E0OrjToM-Z(;P}s6JlZ za63(yJpz$Ayw|uKPIvzBc^-Uj)}NsKA;uWt84M|HXjqK=zJ?_&68QW!JR*AQ;#IKK ziAk%yt&36TYb!9eTQ>~gv{Xc$58Y$w5BmSuDw}RazJ_V}$I9v(+V@oOJk@fvTjwIi zV<_px`u0ZKWX;ZaTl;X={~FA)YC4j;Wwi@V(ly6oNEpri5FdKis{6UFn73d!%VRfC znKm0`@-RgYhJenI$f8D_$rS_GKVL%61;gRBFJlA;<Gmm7(Y5dAdU;JX!M=En>GJH@yUrB!T7r7P>{ zu##o%ZGYY{rN{H9Ls{UDUkpGy&h}3PyE2)7sQr;P*#$XS$u0P(T_zcPn zmfUwPoHlWi8%uYyvK_$$re0W;YHQL9wK#I zD0N(#iHSy+E?$v)MCu21lUag3R``bj8a{<@Ft*iWq+8cCUxt;2XJwEr85QvCa-^^BqxV;@ zfHyM7M=QuWPz1zo_qmxyqTqybns>Ng8Pf-jaL!P872QL9Q#Jjis58!PLiD99H< zM4d~HfgQFV3ReSKpt~%cV}F|RhXp6>zl#JLk(l+0+5~~J{zNB5PG?mxW**;aV5aIq zLP_btM;^b_+B-8Or+*{*r=@4;c_LZoISrF&V21^K3kS1&QGK@ZF?q1_kT@VVXqM?s zVgiLA0_-AA9z;8m=nTq4hvEacwpLgO`?ZBgJ5P&0E1myc*f}dpeVezh)#TML!sbQn zp-WSTE1e4fkh;Lejs203p4F;|Fs0rYWj~G+@#kZ>BYLGRTK>2BVKvCP18xZSlKSa= zBe}~PahE{%CjR!Cioj@>u2Fwh@tf0gwL%gc6CGemkIZdA`-uGUPO7}fbFstl@iIS( zH`RPmyuJn-9DTIf)^wC@erDM^(|J9()b7lx>Dk_9|O(&c~WN(Y!^g1 z+TeqwfSr~H_Icgm!mgrX_i*tYX-qYZhUSUHMs~#Lq&PMjkBRG}7i5JS7{Y6*BQu)? zQ0M@Cyo_(n^B*z(;rds_{_9_lfix3SpAji}Z48_daO4{{sB!a^^UA-#HgG(ht_tzx z#}}69XqO!DKWAbG;RZ|qsdAw5(6Sa6wA@sH3*!3N}KhXyXdr- zXogYbm&hI&AoYKx3B{vTYt;Gp^HXrXJPz3jm0bN)nlHkgw~$sSfAK}2Ylmz{duj*< zwc8qb?XddWyXd}C(?>PsB4&ZuChkeqi}fbuS7er7pLaX%=e?NafBa-x`CZyBzl7yi zp?q7xrhTB?Dt(?+rv0hw|IaD;hPoE7Gja44?=*~!)POIw-%Al}z@2JvLluOsu6W4B zWrJ&eKc;R<&Y;U{t`1J=I0X07M4e9*LMXntNKX?CjA7x@aa4*7Um{lxmIZ2*k`RJAnNAM?u;m zy)KYP?uB^RT7#y4M~Z$^25_xnZIP_MZmgaFvug)E107RWbp6;GPjGVf*qY9Zp=TWN zD1Hz;>4ut{5InwmRN{K1&#CEBS9I&RTW_ej6bJH*MToPedtK3}@z+nNDGg4}sjL~e z_;BP*3`JDOn$zlvCfs!EjWzBub(3?(-cZwtr`mLMU-d?UvYPcor;R5NC zs_EhJj(Le+=qs0zg~Lu>lr_IlNz>mz8^(WXH&&=&3!pu>5#$?T_(?c(j=kOV|B}*7 zOKb#NI_6di>_1k?L!aL(8~TR9qiZaI0_H-232!6NM7M<2H%Lzm;CZvzYI)9+;`*$X_1mxu!fiGOIlD4-y+F z{(8a`+6+bpz^kf2_(^kdmUmBqvL{$1FR%FmPNLRTF17v9&~C@!&}1HwqfudG3PS>l zXh8n(C%mc#4uhCz5*QcChzIMtGE_3*2@-xxIZkR{Q%Q@;DHlhkecn{ai3_T;<2e{-*Mg-4wl069PGtG?t$=fKVIrqGy^uq zpImoqQkP>`6I0I^Xz$-7ZJ*SmqQ8^&KlR-o(o`_2(xavzm*{^gs5b9kNagQ$>;CzR ze?k7Is`k&nd&n;+zYY9f{ssAOfdigRw`lqgmfu}}Dx}El1JVDW!-~+l?ys;g!;!Dyr*;p$L7`DF@NbXh9b}b2itvy)aIo{A24H`qJI5&EuU@m=3o<^ZU3SrpLy!3oswES578ULzXSaxx?DBS%4R!tg59jN zk7W7KKd*L2yAlhNIX?Lzt^5?kL2W>6=l+2-_!x}Z;Xm9S{LjlwLTwoT9Qa(#vEe_k zJ@_*Y0e-4}@=%J@&&KU({86V^U~TndtsmsY#KYM2-?U0nE$3NPy4Efl@}8!@^3>b^ zNz0n5jTbE#Hg2(gMV??Tc4hcwSp^ZkyZ+u(`}VPYS3ofglQnp>LXI!r@2STGxV$w7 zYI0cL_3l1Fu)u-KxbHjKwwZK>mNk+NnDFBG~3U}%t=Ee2M$T}g(8MUOgCMY zhF)h-UODWSeL^KZVp8oa(XmwgQU%PLnZs> zYY0~+Q{awgVm~O4Hm8awVcY~a3SZ_*0uDhiL zM&D+!;Hri1F$I{Q2Ck6B9ZV0QQV~+94(mgOst@Ky8x|e?eyJ%U?4#mCQkq29pKX76 zLBtiQ$SGc1jdKAw2Msj}x4r7f9=ZxqD?>pbZkh>|^b!KQVQlD8l%z@!J zAgJpUPo(SYp*ezwj^XDbt<{(>z!mF2(X4Uc?gi;3f7;E|f9`lLi7|l9xT4v-n zmuk6=kk6DdQE4vZ0pI!?kyjhC@P@m@DQh!IBnx%8RdIC=0j`mu$d4WUSv&mWrQnP&~H?h96 zG{sA+P1v8Bzg%uL`@bZAOEdWU{IMo~*+h=TO{GUfug;o%6*doEg{>fo<8}3V)yci2 zdP$>ZV}$3!Z{Tg%XiPIXtSP>zh8ff`hEW2$@=~4?^5;4{rmO`&3M=KI}Nxb z=lG!(uPo7-6ELsZ@OMFB=rqewW{8O&+P9ketVI6hYq$)+Lg!E?BXY49Z(4s1N4)yr zN&IZrV4fTUN{&j#Z~QEY_O=oe?f4j|HH|3oo0xCnhW!yWZE3?0O?c`#WKX=?27MDx zvGSu4b$G&DkvaaHOi&uk%>=XB0;BoU2(@OysF0O5l^-?zPq01`L#&LPB6GKZE?6Mk zvvSz7Lod@UBO516*1e3;p~Hb$gnPydcnQAzFZ?>NJ}?4zv@njt6ff}GUTAG7FTH`B z&E1RuMi$XT?dy+REX&IvEOt11WQEbhVF*!k;isalJ)IDy9@|J2t4;9GA_b}|++dL5 zp?`t@#{!J5pQ)5D2zY_o{tPPVR0x(DqEk+J40Y;6N_F;TR#Mb?SrWMgqnRzY*B+94mI`H%y@?qHuv9!oiw%fJE_6q2FC4oz1HI6WT|&0TXr|>Ix0*wcY8^Ug9^P zefY61zW!`v01x3Gt26ZOhBK<5bgkl#<~K4tjtr`FEPUw`_lNcz?w-XXvCvcn3v8B{ zHH+W&O5qLyvr^o%)}siEb+S6+2qGXWZF`z~1{)3S2vEbsp<{5$4UU?D>hHWaE$Te; z6_d^CShf%7rS zOEh95$j%e&8{=Sd;?}~>b)W0)f?c{ozmGsu>c1v_IR^?UNuvp3_Gy-+efWE#oI4Q# z`%4<2YDs%;UxO)WC&5EUOWOY+OclW(%KAJz39z03Be|`+((7{~1BLBZj~C^#o~U%9Rmra@(IK;%Ze;Zesd zLX6lsb05VSrB7^NLg#PZ2OGJIKuw}*RC9|lJ3cjScC5$$?)v+X%52|I^yo8I!h4dN zy?1?9Rh51KNiXzL)AEeskEUTe-VPaFs$*Uz`uaqr7Gu{Jw{;^s>i$R09J%@5H_(%|0W!Gwnm*->2!mb?z<0>ZV9l#zbr@MSxOiBr{px|?IKDh!#EIfXL)!TE*q))+5uhY$9f3K!@n%XmbxEk1Ut&Z@5div zXAo+|`N%!N43O%_F?dOyJcAr$$uSoHldLI^R=5%!PzW#y&4=zAoE_$k*yeQ z2BIg1=LrctalI<&3+)A0c(({*o)KQX)N@36-(}@}*C(zkk3OWilIR2|nh|&FwC61} zp=by<>d;%#A;5pSM|m_x9+cx2ZSY`uqO-s5bMl}Z`+u80??A&{(-t89vDBV)YYs2a zDc)*wCB-RN2f-pFjaNe)P~)w!z^o75v*n4{p+^`iZ_vSa3D@`t~~sC+$UUm=0naSiYS5Z zXZB+5hrN8<$R{UWxn~n11q^4)2MJoAc{Q=4A>zdj!W6IaK&E(|AQYT<@;yoMDud{Y ze9?&$@^!H=5AtR7UFPo#7iX3nzXQbt+7PrCb*7IWOB1xYIy9#(P>BJC7B*}opC}hw zW399*fOCdj|}jpBD|&U7`TNS>v5TV!2L|KOuPNz*U{C;cK5w0J`RRI%dEXX zINAP+_qb<&LqkC?NVs9%j<(ajPH3-#tbEcfmtISgER1_H~R9u(D}YFT+AzLw$dB zzjRHT)}hO}eQhf?ac+1SmF-Zumjg|Fh@|s;0@cF|k?8N?Qp4yvrp=O=%{t?I60=z{ zs;|ut$+N`#kUVdj02rgkpAVZMEKxmei&k~!hh&^5AI-Y38_f^NbGtpJ-27l34S%?V zGzFq{4zyc;Q%kl#Yc)E!N#963Y$fiy2kxdy-w;0&PjF}TeZrllwF_WVAKuKt4cKby zhGl6_4*tOYGmOYHdSqGO<5Gv54+PH{TYsGSs{7}9plgml4A%TeQ-mm9Sdl0+*Wdf@ zL+^YB48FYgjAN7ySPf9eq6EssFq~ZFa?~K6))rt4Nx|({^lQVJ>F#IN8hv-*@e$-k zeR-9}8cD=7!-dq)3Zv~sOrca=Qg{GD<7c%q2+{P7&PvkfO$~3T-_g?DvkMVTgbU4c z`|iLKl{KjtTB{RAv>l+dq((!makwqiM_aLZtQ*eX#HbO<_kA7w%v}h6soNC^tn$XF zw~@CK@-mk@^cS7zf=A7~Qvb|9p%x$~Sa~rtmJW|P2>UITVarcS?O-shn`Hhon&~tx zO#3Y>W7nrf@eh+=KVm~GUOP$Ol)|ekyqKJxMb9hl;82~h1fdqgdt?WL{U zHI$5K)~)Ez=7+>on;&F@nvD;R9Q)iWg4*&9n(+&7TXL$NI1NxZNaXqv{eLrs&h~9e z9mjNcosRjy8H7J%9boB1y8c+InNlRHNG-TlpMOEu+|F{chqh~=7ELQ}HZG_jGr*xW z(@LlgcYRF0zz;?I!ys~;-wZeXkG<5EmSqi$>Zq>AS`YlU@vE-jEAzS3oBd4U;@4B; zh~LDN{Xdt`%#nCnlU4Ux`BEcio<9|cF3884RI6S>cEYS9bk=<jmgER^O^ z)*}rK2s9$GARoA$1{rif0>DvRWNjQqRZ^;=|k+U4W&sNXfXIBUZD zFh*6CMan+Ti3N(A-1V;@K62T|*d4moUB3_?)FBl{_!V;{)u=RzcTGED3EC7}&)oXC zjs$wRnfdb>fCXO;@gpNT=fu=of6&_z84|!!tWJS5y;pK!R*=UEw~~BNIi-;it{nA% znMu<&SJS4?U&H-b?ocP96nQy_Tp(%}*G!+lJKKK%yK?J4$zivmuVa^vkBnN36p^xB zP`lQ?m%1l_6hDa^=I76vpM<5(e2{Zk=ZwQ3#HTahG43<~&Rn!t-T#DXv*#flLdcW? zIp1w6lSQ4uS(u5FKk8;PAA4-{uN$$^NPWP)M1Uo9Bj+$xrn7zd9kS6+LY--5)41uK zOO)>(2$%e7`vU|bZnJj^C%Hc{emM%2A;dBazo==Utu=chzmohn=?clr@wfzs|L9=Aw*OPLToc*BT&S<314kYv|xX`dlnlpcE8uH zV8f;TJlWI~Q8tAfPN3W5({eJfd@^R{Zv$NBTFobfY(Ac>|NBHfR^w`&rM(fPE`UHV zoxP&f00zR*?k>xolW(TdP#+O!%1v2%17e`Q)KD9CA$=D@eeW%5OW`#O4sJ*LL-hyf*Xo9ll1Lu8m+(Pn3)L*^5>F04E}A)w7aNShY~+LHxsb z!(2w)DByH#ykHA*03*c61!x17k4%HG2cJPwi@oRR zGM}a?54%?w|K~+OQZ}Yc2Cu=no@%RXnRMRrlqqY{KT|#sJ6X-u8up4*EJh}3pc!AK zZqxCj8%;?w<-?4xR6})q!6%6C3^aB8UQx;UkRbW_FtLm zVI4REFEz~lpuc{vbw8FpIjzJ(7#-l&Bye_8Gy6dG@hB!}V%9<}Sy5-lFCq@rbmE@Y zRSt+e>R%=z`q~2|GO%>|`3%f;$Heq44vkUZ_dulan(1d+P+NI%degHZ^|D?f+h@ z1B3NQ*hiLVBO6+N-Fz@|lETXqc$v7#IQuKD-PeCno0g4MELwU4IOKEY|#804XCZ19nDQm{M#?UG# zvWXt*C`{b+E^=9!TdU<~_+W>FriAUdzXETfk%r(6dg^5lfU2wUQ64SD{oBiBcu8|{ zdAO-OQsF`Qf#MIxpHUvkE5|uK<$X6?9L>*$A6@Ik(VXn^s4okybLH-`&Gi0T8tD6> zKbkWz-U7y_IAWViwDqdn2l;H)6hsg$B7y)BHtt2Nr0f;3ehVWN-NO6eg#&H5404Ge z3@jLqdo>`f5MtbhK?hXfUbcDGg^6>4d%KEfEaRwpXH)K`lQZO(DQ1=hKJ zkSHIjuMBO3@KipAtQ12X&JHv)t;icO^AJ(lH0f34#{q8uu-V_;*e&UecLP`3r$1_= zKREf64sh^Tm&lJ)^o(2{dek}OD$vBXVEAG78UBoN}D;4~{n;8c1P<$syc~ z`R|KZImaUxjP<(QtUdcRYsla^1B^sIo$d%$Id-rHrI=BuvIj- z`HE?LEeMr-d57sA0F?@F@ndAY9q)2RBm8+nOGt*JI%lQt@T^eDA|}VdhHj*TFJK^Y z4~r`o*Mk{SGL41AhB~@D@(^>EV`p5)^2qRt#3^F&jj3&!n-&9+p81lGwO=He{n4Hs zu%_c*%G$=iTE9E6(I0-O3J`<0AC4mc{She=M^@ng)18BPuG@C?U-)aYO~1^A`PXnH zm_rwpfl2*i@~aL`X#e$`;?{{3JwTNqNV z^udu*x1gx=%Ym2^91qmh(M{HvA*C=sW!Wxzj{@NH7^?j$Lx2z4EG{$7`~^c5JN&Q2DRqF)_n6-U;Bzfhuy{q_)=C3~@$ z9ruE_&@S*kJ);#z@MuR;G<3*<3o6*7PKOaKZ37LegeD^x*pdWgywJWwFF9@Bx$H1g z&g#CU256X>&ygEVY14kCk3Y4}cg(%C zigt#N<~}tK9KtYMPqHbV`0%0(BWj*(g6{(P*7H*}a3Ll#i|!OeX0EB}%?g@qL=A{p zOY0ICMzAtg2JimW>b3{=Q6o8?~Dtb zMHAt)p{D2MLT9n-4qc?LL>gM4#Z>P@W zauU^uu%j$`MQf}qe2>MDqb!El_8(Jp>W?uG`JF}aX2^f);k>SPCK%bLF?S*E% zq5sbQt>`Tixkjj|z#qL7v--{A-|D`LbGJa`umFnSbiwT@6&qKxeis|pW=W#sOJ`yq zz%pa;KmM-&`NQkEg1hz`Odu{P55MQ{yY9khx4B02o){2~9EmwwM0VYfz(T>D(>z$z zwh=1(OJ75E{t(zs6pLK+NdC8c%KF{ZlQ@5SQOssEu5CaJq-S3Kcg!1kB!4rWq|xBn zA4AwBRiF*i5JTu{;|Z`|AR0S$M(0lszvIUg102$5tcu0IN1p{lNSLSPt0Oj|7GS(T zA@l_%tzYE07vZ?3o>)0l`R;xt_j4vw z#7{;FoF9NgtXT&7d(qPvYZy^}LNJuGTZU9{bFz7$GQ{}PQ`l180C+f&_S(QNtjEG> zVb?|(6Cd}H(INLa1p6b`Vn7b+`tM9s2O>G!OJ`!O+`!pwE2-a0MZuRt!Iwv`f=|Cp*%tE~LTS(}t2I4NHETb>P0Tb#x$d77p#lB44r}sy>dV zGsjw?vB?P%~pnSJkzM2n}|3ec1uF7_E&)am%z#r4c!3l>KOFSPq*+N9Ue( zJ5aXz4k;fVc?hz4)%ex;z=TfbohE)~p*|Zhn^gS)-n|HK@!30*lVLr+pAR0IBR#Y) zdPPLR|KvFka(o=`>YJ9IC%?E$81F^$3n$kB_wz_k%mFZp#0EmX<(W<(Kk!*VaFBXg z>gISJ%^La@suaIMHA9iy5`CL>q&R?B_I1bM+DJ*p2y~Yp3zy+d>(tsz@>+`16_t$9U zRiMuXp?wJ2^c*8x$E-xdN3}z34LuFbb&n1oFaU*dli-KyP3-2D9iO0z=TjJ~8c}Ch zV3hCuK2f-hXkg}5H-SkR6r(V294C(KZ{lco;BAh>N25VXL-4~|7Qu?qd0sg7=NXYd zVAl(J0u;6CJg@o8GoOX>j0|_Reql-tSk(;^foVjRV!#>-ghvD0y_W-otUYIp{Pkxb zntL3kv*qE7d;w^8?0~tb2+}-^CHTX)R+dLDs-VA=Q;k2>(Z)4~!2cW*|9zx&jN!g@ z`55<#rkow_sz$7pjaxm&z18`CH4Ynh7k$zQ?`F^VQ{6LX0Y2Wn?)p0Y=5yD-%D1}R zK|I{`mqH7~Kjx$YrC-d6)|kI-b65A<;T~sfGqP|vgVTHc<0xQb7nXp(qEFV?ehl~Y z)yt7M;M%NH{~)Q099>o?-W61U>hwk?aV1^_gxpdS$2AD@;BSO$8-knh_Yu>tO0g+qd`1=8W zdzpL-f4<|-PX6HRp`RPJ^((;GioY+3;bt3#<30nXC}rGs{Ov}HT%U=tVPagNpC=B} z&weBIb3mnjmQ=~pWP6G|naJ)abB}ZI$MEpC!pq-bh5Q}uYUE?AtC1V(9^mD)``dP9?oqc*fSr5R%}~?76s!LS>3@OT*cG{{ z|8d~JXxakD=0juOT38-=su}c_M;2CL&{3ZCN%_EqlkqmGS9w?m_5Gwg`~{~hBLfj+ zLJz?;rtmrFMACXZ8Ah;AK@T&QcX(m=z>Bw*g^x>~g!XS)~?+KnLMz+ElQbzS zf>u$z_9x}rAk6v>7cBR$2BJ@jcdQipz7S>G#FfOKhP=t(p%l?iim3aR6M3r?oNbrE zu(}nDM?nw3aU$_g7DNkx6tqqXvhiQwV=kKxAN}(I;UgaKf0KgG46L2D;lm{{9X{-P z2ZWD!!2b}A9VY(F&^~<3IMU&R!v}S{kn$0a^6$j}+ANJq_b=afkn#~v z`cvgI!=aX6yMOt?gOrbW(htco>1T#REx&dD^3li+SpSG8{i*Vq;pdhwDmPk~ zBPkZi7xBT_VT8UdFhX0lQMqI0HUcU+TJqUoOt7PmQFZoR=@>SBr#`~56eXADCHeuSD~4g_{x_e) zG1^#_Bh!i#03J|F5Mh+?12Yi?AqSY_00z^KE|Lz@fw@;A4Nl|;mlpo07F-C+AczfP zeFRUhbZhD&gepHgh}2AaU`3s;H!N^es9pFNrfvg%>Q2DMBrqo*ii!z(zP}JQ6n2R` z0P!*=xha4cq#)s{XAyp`luS|QGrV06_J`wBGo^#g|5Oi@eSk!q%VIJ8Qq1f-$KTz) z-waa}J&dI|R|xY#fB0G-H@jkY_q9bvxbz8B9aAZEubSoPbEwuJ}{j8 z_f_)AF$=R_)A}_S?*=bho8Rt`LQn7`0|L? z3z6=_O&GvR&u@*$b+A-&wQUGkEMuf0zqLolIuK=X>Z{{5mPbK?*S@%Y9Wq{0+oNLR2?azS;(_|38{=vYWu z9xH$}onXs84zewW%oda*tgsvdwW4w)@r@~Ue^8ch@Da$b-~%4Yd|*QbAEWat`524i zaq+-SDSW(=9|Q&%0Dmx3tb2UBQwAh_(`SD1O}lXNZGo(K@$E@jDB#d0DnG!KOexK58%%S@aF^g^P%zI zG1xs_zP2)?;<} z*Kq1XM?R>EuXilqgv(H_pJ>H|eN!u49e5_jzDx%}KZnLkC>ze4!e1F#n~bbajlLf# z&$q}YjtuI{z3@5-akAr;p~8bQTyNui%C_-C^U|{%!Ow?sjU;}<6mA?6{4h~tr$GFM zse4f((*eH#@$(VC!ZiG<5`v!>qnW`;{Pbk(7vkqj!*3+Yg_KGIwzNlJhrr{R}8XUC}Fo7NS$RhBzM) zSo?bd4-?%5qW9F%g0WUM7Sd+aK;ms~Xm}+5NoIwsKOu3cHzuHLGSEe6km=!P*o`O0 z7uaWr?pYJiS5O+_G<2lq&oX~A=ZEh42EY{((&vcNNre~62pARMk)(o)P73F#g75Rh zc_T%IMAZNnGf(7^d>#i!DhP=gIIB#niSy%tl$?I%k&sJ)n|%hVcPt1YTw$>_xwO}$ zd<%W%{4||DXi}?|G<^slu6U&A!-uK@9zq{JZ1geeKFl1=Jfx3VNuNAHAD{M?I!0;w z5DsB0Lgo~G2xF5yB>K$xaXNkI7t-lN0CB}5MISy?40s5A_^{E(sDHwD+ss4yn3eR& z6ZG+Er?38NO&`KR-!NoO(TA`@rq7(8r_+ayE1f^x;E23p|8AeAwt?)caU* zGxLx>W+i>{1buwk>3f_9bU{854*Dh|bBaEM9SVIZ`+$4KJ!pNj5v0?}X}_tKwVWb= zIOCC`6CY|d@DV!kVWX2#-~Ct9iFeY8htMfc(8;Hr&R4(GbRryd#*jIFq16r%_A}^A zw!f79p*{M%ne-um^x=`B4DA?y(7Yi*xCjCs@B9|DLg9x3|pp$rfq^x?xsAERyoie?_t$E>7J zo}iCUJAJ?VT-P7ML7yj$K7<_#eQ+*mM?Nuv&!8_`)0b_hFWaFifrq9qJB>a>MKOUF z`jD0MA*;~GC+Q<7+i2xl99~8}ig3_Zh|DSZBsvH02Q&3cYlrsf%gLlKN7I*Mr!U8$ z8i0qUFDH#YL_M|5qz_q1AF>L4e3Cwbve7pk=e!7gIi#-wnQim|okO6nQ~UI}GU;<^ z`doJUTsYqecxd`uY4joL?X4z#$V&QJZbbH>bvhv`jD0MA*;~GC+Q<78-1^SYSQN+eKBOV(Fb%6 zfj(?`Z?FA%GwJhc`n-1fyy*Xcho;Y)MjxVbE&7m^^dYOz$0z9{C>wpB@<=eYKQHNf z_PaFtfX*S%cW(Ri`7-JAY5IJ2`h4jBlJxn~=tERLpeXtUSxFzV3VnQ%K7z8*x9<~^ zJ|F38#{Ae;e?aFD=&Nm?zF;POK}}!KPG1oHABfQP7fhoMQRP5U=tEZ0hpa*$pQMkV zZ1nZE=nIm*ZJ1x%=mR>3KwoS7^f};Yr_BO-{E35?1Xl;l>N5FWkPqW)mNICE0J?ej zu=jt6x&75exjeFSBr?{^!``g3G~K2JJ*K<7~C%WAj%IkGe9%htGN+v&?z zmB7QKFFTFCY!$`y+svcs%Qor5Q|JRI8-3S)Y|)nu`U;WRR)0X}Q0VK>K7Bcv^yO$= zbL{lxs0P{)bp7R|(U+s1!o=Lnqv^{r>BCd#11KAP(?7E4%K?2A$ZV%C=aA^@)INQ# zO!{0JR~XV$^664f(7K@MbEVPeQg35oZsyVSVQq!uGY6hRA3)jYdvt?EAGg_6A+w!6 z*CEm8ZlAuS+0bf#9*rv&$Wruq)M{E6G<}{l`aJ48Ow7$Znm()>34M49eE?;n@6``2 z`mkkI#gN%fpXZS1>(f4c-pu;*YFxc``n*cfx}fRvrqSnBxk>uGnm(^dAD%)VK-uW~ z^aG1NFX(#~vwAyy-b14A-1h17Wzy%<^!e=c`IIX~pD&F*pXvt`%{-bupGhB{LLWfc z=-cu{!hCTWto~EO176Q+uXyNhL-`6ax9< z@kQa!QwwULR!8-yKx9avKT^fDvg#}RkwQK%Qe!|DR>k!Cq=EHGEMR-|0ybS-BegE0 zFV6WpCtpp2xq{|i1Ws}pr<|3KZ03Sp_&-SVg(n*8;8RP!xQ~H$#_=2VI{K> zWqUOZ`dFsJdK9)KIBIaXHg*xC7`QA?l z1xt>Q_*2Jd$LQZ4@5rY2u5LJM1e%n@){7cT?*%0FI{3X+pUn+<0#0Q`wO6IY@l*)P5@$T)%V-)I${}+nh zo-O%ay41_~_uG#zVEjMZk1u5WeeK6%NbHE$v>)$d{N?S%n~N|HA`$&4z1(k)b1mV- zNRLjqT4LSXbhX5qH{CCX(anD(T{5vIhP7@gn#tUI69f$Q5-~op6Rts?=HXya1bIfp zI)`S&s2qG@cz_^y3Q|$N6(0xP#$aqBZt+g)4q+M#LYP?c$1i4l zsKqBy&sk9hK*!HwR7ntEB=SF21ChA> ztppQK9n*y)UZI~cmmnr+#*DXO{ER6=4CoVR8?2bq8N;&z&VFzKst7D+mxQHghsE&( z-+&_ASy5S1lNb(2O`>K|6sm*O4PV+SE-hEeQYXD?u^37LL1!RdwHR1Xe6-IkMGAeS z7p4FTn%$Ad?BCEmi<6X=f&xnlvXPpOwHO^HTU7cB&ajB*b^NjI#)qVgfAE0utBvsb zc=t~2fWXFX#@~04`0lQQ2Y`MWQ10E{_pGmIPrf{@c*(s zWVXlj-i!UyDg)=K@n)r6GML$$?XLeyzvbX$S^eg6&-emw?wRH{R_;I5G1$QPZ~cZ1 zjGOsZx0l_tyZ$@yclt{1(cuPkt-pcclDQ@%J^BCNCT<$jf}|rVIs4*2o$r#&3pPq#>+?V!=nsiCY->+9j>_1TvC&{Z_8&t^uq5mW1BM6Fcbv_6eGRkMEloIJHY$-iHPPwNxZKw|na zUq7DJk4F8-EGJX!li!qooWPHh$k+sWPzpk90y+9E$2}ug1UOrNqak26iiXftf1@EB zq2JIDy6ZPI1TWvLhVVQ6Au?6pfR8y&$FDnQodcOS-~h`L{w_D0#I#&v*DB6WYjU2* zuKD#7*l~X%lb8*r{s=Uq@V3KR{s#9}8XUqO?O4E*5qq~7(aZYa=RzE59`CTjSZIW^ zQGwfytdDR)^u+muv=N!LGv!YaMo1*k`$tGkfKn3yN)Q}85DKFT1SmiOa*ykXzd-M8 zJKVLM@E4#U>A;J))A6$2-26Kt8GkVXYcGRnxobycB)!6ml-CyGXLRpI{EqG2jNfVj zFfARxl}K899g^0LhWxo}$M!+e+G+tS0&Bw{1$K-N@NTWZ&%}}VnO+5n8duhvLI(;c zbU>Fv2Ye}Xf(IT%1P@|@N4u!p2=KMz0KRq-z}MCiJk$iigDnIP!U-Of6TIM#2a(5v z*y928;a0vCM>cBJ1w_eVVdg zd6fzih_f1{no?YDleF1Eow4?Av$)y^=9?jZGK;JIYoi(Rj9FamOPkG**S6t>^3O&T zU8EncNn48Y>`~!D{9Kq8ao(xXcRMa#a?g0uY;jobc88V|K(tG5+=v1W-4w*nZ8%7z zG01RgRA^R&O(D<6l|Jha@5R+PeD^oxjRL zy!g4oho5Ul8d)n}{|WuWPqi0AH`iVX-CTPeLUDBH@=5O+S<8*Ay(^lg*B*~P01W&C zu&JF8!_QO}UwfX^_=POE_EM?u;ViXw)Ha-`)}=Sl91B4t0XB?@mW3D9K4z!o&Z}<(yYL7?KeR~cuf*Cgv}kX5%zn5cWdN&iG& zL)yHWHgdX_h}H^gYfFVTL9}+L&?bo1UJu&BEuiN#{NW(etW9`M_mYzHv2Eqb&8QK6 zT;${L6&3!_7k&74?MVKPsS5O`e>e~yvpLZBQ&bkE1vNius!1WD&PVq*?xIHgTrnR% z*9MKc?=?}iLpHOr8d+KMSy_nMYNx8nR$T=krpkk#$waT#SIA$3c-2-^@OKz-svTLy zW=SC6st-z(%!SYU0TKC{hCVNfM`T4jc`?|JXX#aS`sQb2xO@g^@&t_x&KjJxZT`HkdHSAFmlPsrPhZ%oVeu~K-^$8g~V>pnmZFOP^rHC`6T z@ltqsQjP$^%ZvFHI?XF`s+(GfJrHGXkN(1o74NZfcq|wm3#!K|$77Z3(YO!{ks}o9 zCpUmJ%F`qUAm+=rNh|;a7Jsl5GZwJ1R|0mep82da7c0#}TPsdU zfnh9Zr51IHJg9hd-#D9ft=cmW=LTUZ14}&lMBhb1u63fJPV z$qi?l@wB_SRv{i|1oCI`Irwoqlgl2jJ;DVI6y_pF%J9=|aTa*tb{ZvF@bjAJT#N)f z2sp1z_)>lcfti`X!wlxyS#>_|TF%p(Ih}y!HK8#-i`UV_&~1;_`~R>wC;QZBLwwmc z$nDs*oo#8cLcut=4d7f@0p;;7j>RVkh@?$%F*6FtgRJSM5-i(d|LhJ0(w|U%>pd@E#0r>EVW1sOgAF;Ht-Sd0)+-%VRX!fbpd2r z$A=|8Fi;j4Yj7wyRyDB|(_CeJ4FZNS0~SXk&VTg5wq7pp{T2&|Y>VW5AiPC4&TvG^ ziLe|E`KCrW+BmD3EX9;f&Rt#AxJB?z{40$(e5CV_^6g!Wona~YJ{%i?wZ54rXrKU9F| zr^~2FQW@LON+~M;_xfi^^nas&Kxo(3a2Y5TdB)*=a5ad=`>4^VOTFh5Usq#AuaLok zNP~g8$B9dWj7UQx*vQkD&c@}nReb3ehy>Zs@B;PYA`JmaT5}8z{Cn!vPFXlg>IhL* z&P@}XS*@Gn9G`|-d(`Y)3_uRK3KTa?F3IbhwXM|s+~GB!B4f2=bPhPZGxJ|0JB*xv zlKjF%3{*KEq()3J)%KREe^hH8<)k^2{eSGedwi6|^*^3K78V4b#9YpT$TLZ?=#P{&+cY(v3|b){a!C6&(8DA%$YOioH=vOnKM{BidW)1qeDsk z%!6B)-VHvN5&}d5Ersqyr#Q+=S=NHWTG9{62aS(nH)ZSw$MszO0I@|ATw};8#b62M zBWpoYY0#(3UyKw-D;;p#A$+Tqmhb_ZpUlbyO-?{E@dp@?lvwkQ7BKQ2WKa3uSL7F$ zYe8?x%FXt-xz|2|=oCcL#C0P`;;;j0od4JzHylVFBi>IZHQtpP|FUT!{jZIGyPckZ ztYoA>hS50(gq1Y$PI^^&w(Gg#=AuH~t8|GB5y+nO;VWtHqj@>rvw!=WTe*bHFrx@5 z*c3c|6>W4#0#Y;{x2c&p_D*duXsjyG#s3+MVq9~M%kR3GT>b@$kwvxu5lhHl>+cRU?}M=t!EWEUrz#Lo4%;zxU>hcK#{j-kxeCy?#&DXCUw6sXB2%)(2AQ?Np_-hxGbmSbwCk z!d-v(j9JIaO#v9|{d;As9AvED$3u8=clKD%OZ6w+t(5NmB)tfIdf5v!4J1s^^yy_! z#b&e?BQ1k_BR1sW-`$h9iYuw=zFYK(5+cBh@!y2;3k9qAUoE;#K1sylf-D_EAN-?q zn0_rqYJ}Lds7H&@$$ zKf_+Nn0bL1izokLV=DLGob$KghOY*{q#Lto??OsKNaHC;nZx_eu^H(^ISna@)I5lz zcEly~i!XcLf?b4V@@YYvO!;#%<$uf#w_PguJH^6ZDt`JD>~$b2(A7qD{_TP?%6iIa zb(-B_GEF?bCVg$PTXp{0Gedcft%H4kOhyi4b>0AbR-B5~lT{ylh#h)nt+!3o;z~}0 z(SiWne3kkO{L*W#T23=o{{Wra8^G`7Oqg6TtGS(-mI+gAt+WZ@U^S8PI`PzVN3-N> z=KD*xXTN9vs{g^}=8O+h&A*aSoVa^vb|g$2_#1X1ZYIl(wHD*gh5ruK&xG$Rbm_Fs zr_A@4w)6gG80y=qe|%-z?=MAaj<)Kbbz9r-pL#y~eH-|Fcx%V;>j8OTdks3yK*$W_ zuP+yI3--$d-1?RAdE%2XU$!~Er&hH6{?f(S>wjkZPkoSG-x@!%4C$4#%#6?ojG$!d zavm553t=T3TuDBq)?A{x!{C^J zC006BA76oqA%DQWWf}de9X}TXAh()@*=VMGG#17ohMkr?W_h3BTr*nj=KZ@<-N73X zyj*COPb>_652?mV%<}4z;53S+5@Mnh;p|w5ydL$FIlN0WFvc>WT!k5@EhIV?50{jv zTK)P&${NVCMpR_&(Av^f+;FREyvOZwjT%m88BqQIlD-Bc%rq@dI7y0C1#(iFcJ+j9xf@w{Y-eD6R00On*r49 zG@#NbIqEJyj(7ZNxTv|0XiTScf&XM1eq%-T>19(-4-_DqefL$T5h=-z zd|HQDk7BV+?=b5m;}5oi|4x7I2>u1WLL0xUp2hA$sXz{t z{`pVo%_TQjgOvI{yS_7yRk&0IH-tbxL1W>@AZHAx9W-IfLQ29eTQ!qon3Jo+v6&tI zG##tXvo$}hQV@0vWyf)foGKYlR{egd`Q@~7e)Y7*TdQX`V%6^s@&I48qy@px^b~%e zkwSKi%bI_jTB*j1sh;3)8Rb(8gF`{<182m`rVb4Dg)A5hYzd}vG6X`OTmzmORIXYxg)cL!LOiR16ec~(1p-{G%e#Q5S{ zbMV*HOb9ag%c;+}H)ZCk-={^ABJkA8|ue3-ZmF|1P+bHjM_- zR?nS($QXGnHTQgw{?AGEZ?6Ja8hO1b;Rm0fqderHR8Qa13TM`3cJW)Mi!Ay$h4V8L z&9q>evoo8>n4gIbd?H^cPu#d>9rhW(=MH`&C0_;r@8IK!ML`1^31(q>p*nnXZm6|= zXZ7zhu=5iKba^8D#=-`GZNm`tK*GUSQfnjHMspepuWwpGT=NHd;NZ zeCjA($DXY+;eHfAr`JENe`M-RxSzZg=vAi-z$O1w7VP}F-|%$C|G?H+O~Ki>-->6i z8~;pX$wu5i{GHpcVVQ?z9+m~GZlB1KLY5Rtz0tRqv!sY6MN%^S_ET9>!jcjx>3@4a z5Pxae#L{37Jd7xtI090G@-dU(vtZQtjX3zl_^Y9k0IO%qqoKF_uAYW*Pcs@MwlZ2>WAR^&(Xb!*!N_azb*<5`SANCo@dx$q<6olzE)elp zWvb-3U+)GP9`%!pY}FPx4iG!v#sl>79nL2y6-IEErkg)2-vqD|(Ax1#y9qp8QmgKF znwV&RGS~hD4?iZ5>K5lK$TRYSYcau=1$n_*KI@&p1bmoN>F)Vt`fOl+I(9!Q9XHne zV8|AIfvPO}0##LGSA#|Wt58+vJAmufs4D!!L(QB&sD^8jD>Y^P*`X{|`9%6a65q-q zs}z@r{JgCN?3kx&Ykvdn<*Pv5sV!c3_4-zMLEZa!2E^BDh&BD+p9{ZbDg2(5!Y^#j z)!^T$Wx;`{%(qCdwYm}u)Eb4C9WZd7nj5b!h zyeN0%jjk{6+i1dAvB_BRI!vvRE&JfpZ=p!SX_TV%Tn}(M!cXzL5O&EPe& zoMx$7&O>D9KBK8HRxqHIM$AZ4WLGqQ*c!CaEBN0QUs>3JR zzxn^?@BiieWlVMp>S;f}hqW^C_$cr8p=&pADjb#P{j}=0RHkB0l@xXYao#< zRe?*jWGq2%v7Qg$rK;$Qo4v6PGxjr?Nf$am;mlXbxP~L;if;qj~Dmi|_*ZFLY6yMWay^cSN{Ie|5@o zHcGLMmSM2KN|D%)Kt{IWrCqPyy5zx24O%zlHYlcdeiVW`JC2IaaU9D`!=FX^}F6|28DVZ z!>mB#;z}ppHedz5BMuFExyG%j%A|_8o=~oapfreId`d(ct1cjMYo+AFmBK?$7?TTR!yj{efh1G$+A?mc9m6l$xjk@(QMV z;4}4?UV`O-`pABV2KMg*mY=eEpow1d5yE^p$3QEe(7zePjnH%v0?zcW67{MRUaXQC*ZoYBVT<4O$)@2d-f{zr533tgK zlD`k>3%wCiFph;gtinC~i>wmz8#Fz{STU=A_FG62gO~;* zT+Rl2f?8QQJ-H>$y!Hy~Y z-ED+p=oa?o{-Jk<)*mUvZoHFjTQk*U)Rp*W*oN@{KI%qTpCGI;*RGlcdFpfI%fY&F z7B12-afJ}rsK|_%BAFp@&BD-_-iINCg9t*>6_XxSv5Iu8fAT8#2s|tc))DpONPWi$ zEX&e4w%fXMNN4H%8Qu9cPoVR;y7OC|&P(mi%XH`WA4+x3is*bDypZgKKU;JjI^4-v z)Q32V!#V<7FJf;jZ8$-MTqba)4ctr%xJG^+b2a`3!0krHBVgt-nP9<;X#+P?19#|P z3OH5-aHm?p@n;L*vM}SdJFl@iUx`ZSeC=Zk#Q!o~_rFxa*`e2(8DfpU}$U&ZDZ^-X?D>SayQVU$A zhNr2x+U~yA>VBi{zW<}>{!b4Gif+&-veqiyeXZ{Pwa?i-jLl1mSuxp%_P3+r`_&~a z`p5e7#r=5>I%2MH*6)8V59O)z*!2dl8yB`<#(Mtv{d+h|>%GkOOReJIOY;EVIk;c~ z(^@YdxgJ49>HlZCu8vmh*>jN8C5-%VF(-vhJj*6-K@)LDmlOSI`cH{JTa`=PhzRzy z<-xK)`~po``UeESEX??wuq7Ot9f1CDboR|=^mfeq{NfUSbSz}flp=~Lh>UZ6#?y^{ z<7pm#ET#M_^5?JTB3cM24k0fN=5NqY-G2$!^dcc8)iu4WkY%OnvlH=MXkD48S?lM@ zs&1Tt)%w9v8G};Y@6Q;}=;q7;r4J6z_Wl4?LXTO#aW*2arXXT%R423i<=MTA6+H$n z?$OD+c+^1j?Lps>9cmLeL#@L<%o>(m|5T~}+^Dgv-`jYu$5k^TJ;u(6jJnEcU@;pA z=?1dve}na-qkhEdMzqI+ksd#ajC#u24It4WF@azKvf7h>qAaVq3C1wGh(sMBHIG%7_1NHCD{e$KjR(^CwnB z4uw9ri%AWT0pRryu=07$0SC-s2hIE=6$cvYgB#;!te~?Q^LBzVKffQ1AP12sVCyUw zmyAef$!2-L4~m* z(4`X&_{=Y@hr(LZdxnZLi{KvR8i9eNswp_Buf&dGWeZ#vqn zqWDKowZNxF-(yX6Vr!;muLX(FUrh>k*kXC2(@NCIKAaks`0UkP;Y@@CLkO&|?}4UH zfuTrHkw0sw*^JrU$!Tjkd{OA_d^6wjj?1{#%5G-FCdfyG(r9?pGjR))H2-*e_K`T$ z%D(XfYw`n=Ed|pIt@)1`I^v#lK9-ulUih25=HjhptlCVD!oS|+S@^dsiQ}f#)yb3a zZ!N+`SaO2=>ydKUpQ}rg1tYdWKZD{u)Oc=Iml+KQf?Y-&0BLuL-tGpWni4^SF=9K0 zjU@hRjAi~S_$#yU$57$^p|^+DAMT3~qfN=qBy1RLptV+Df5-q+bvj5FQds|zwM;$m z6B{orgKaf^KWy_K4hW(T%mZ|&AE7XQpeaA_Evs8I)C9~NcF(yGCWOww4Ct@9c(WNZ z&E$Fb*PFzppk`U}bo^VLJQ@Gi#+eQeMX+DuU!>l{iyrv5Gzm5r`vbu59UY+hUJSB* z+9i%Q!_jmK+(JIv-a$=A);WLQ~VpEcMV{&EIcn!`3T->9|nZNVI> zC5Umc$Z=Q-(stytvG5)T{*u%j_nuQYBVK>FR}dldK-f3y5BCm23&3M>{o#H=9O^X7 z;>p7L!zWl@^sGPJ-+DwO0SNx7#Di^h1_2hZ|1GibBc{Hb{^dG5K7_nQ{>7~J3%Eu!Qhoz`z+;x$@J!DE zPt5iC%>u-?3B;z;Y#`YG>ZsL!a%l$QtRFHzUTc2R`tOz2Kg5TZ;)D8I%=Kg4RcCa? z_NS+MQ`M=io=kPsTKfZ9ZT~dg{-1~G_Kyy?N2B)r*d9vz?e|G<-*^tkTW$C^-z2EI z)@py5(|)|Q_Q$rwPkQ?X+8=pxGlJAooqS(+ay&XwHCEL2^&VK?g1Bo-^Y zl+eB!8_6Jin3*#+Mrq@(yWPSs^hewF54(S05=DW>gz8eJUobW#vaxyF1$~3E(?H5AZ2d#V8ZcU|;T7CnrjG-hQ#g=)#-bf~F# z6egzS23!%Uk#NXIgi!A`AKQT!F1+~VCsr@6{#U$6)2tOoEP8Bgc1vW-A zcKLrO->6AlKx_KB)TBU>Q$>@SDw@<((WIt|CN)(wDU?8y!oSd@rdH30Cz0D=YAIq# zwsC>}CN!x6Ta#+GG$|yCzpNOxDxTfPCc6fVGk(OTL==XK5sk1daInxQxCWfBjo_&= z=QS(0q3~G}M3@l#S!M#rX?MCQ9wh9zK!3Lv~L19aamrL#ape%I=UJ<^g zeMv>XIEWuK@1rCx6?8>)E8l>i5rwo<)WaWg*|pLPt3O|C#Sv{vPT^Mo!|LSf&DgMp zWnR_at*#bJ!*oaBD;bFO6>*{-=T{h!d{w>?;j3ZTcYmJ-jO>r{gFnRnYCpbh*o_zw zbXp5VwG{We>LHYJ2=!Ji8Qk60$GseU;rj>pJ!+R?U<|^OL9w3j#{`Zm0J{LMgKb_z z?AE5H2m9O0y~a;Y#MT6wC|}8UiJsgbIX{mZjUmlfAU2Y1I2+5)sOIG&o()vRn2&!tCNBc4%w zgFZk!FAMR^NGG1U@hReg=|Iy8#MxljCze_5+Z1Ewq?n)#A)R6@{~HPC&lU+h!71g& zIzM=;3hm<#5&BUE>BJ6m0F_LLE)Fw`DK5vy{1RcWxJo#R06`5S;9Gq@HWrt&8eWx< zf`D955ZVy?-m*%Ee$3YB$H=4~GeLq$(T|zZB#XJoKVF}XPh$la`LmrhGo`%ZL67gZunt?}t1;1Tcm<5?nOKbj5~Ja# zC=YKl!VCGH>tp>9pyww1qF*X}ojeRQ!qf3UWYiKZa~Er4Gj=S-q9{1G{zxw)d^H}h zzdO=9P|6n#XR}G@fH++-GT4us7mgplN`qZTY)cHl>MfI61JxlkudH(rrc|iCxLrhD z0rCtt8V$#Y93T@*v+j}DoXd4uR_Wf{9L_GoVtN4Qjr)f_7&;^Ft#3xLKk6+@cE-Z# zFJEsoJdI{pKIde4-wStsL~8+L@8l)&dFtnAmW@DJKl!ALKTpNa6X-{i8u4U*{O<3x z;KnyEqW!!%gDm{X{uWF8H}Qu1TRaxmACdj-RN3Dik^L=-d)6P3{jH@BP!_+gri1mY zP*Y&WrfwoBTJ2?g;#993$AVkJ!q#x|ZfG4ofqX$v#-c7VCw)PQp}F2XoDvDm!=K~Q z8cSi`Ze%aE)0`imJyHfJ zal@%zgg1MG(}`%c_cOiHKqcap77zsZ0&DpzEXOZ=yA!jmCGj-X?;?@Hh%^Ek&FEFA zCh;T~KB6V7ZS>oJbIeSRS7Zgml4FUMw&t^CG$_j44kPveW*x?SK(f&YEt4OYda<3- z1r02KItdXcO8zBy5Pj%!JTQnPT5y>9$I<Za$%%tGC1Mr}JV7L5_{jCgt;!IMCPeOmf6kvft_K^$T zgnW~o^^5w$7x^I+wQ;30#y2zuB^2U7vH(^8?StmF@J5+Ei7*(9J;5QF-$PpVeh2GI zYE;{ja2-=uqduAg*pZQg3*MKlzCisif!f~YrvtO#1AYaNyrq@-8;s|gk$}}#e#ls~ z9aa3pkqGFpdGIY?(;n>jn=kSY+hFD&^OtWnLce2^&&?aD8^GLbhgG4OL)tc?Iq9o3 zR*ZxDz?%oRLw>+ru~HDwr9yHrp}UFb?lpAh%in>?o%1dKaAZ(8B3-?0b@iG*f5VKp zuY6nG8DxkeGddVMv3+XuL5+~3Y15rHosb?>fgW9k_%IkJp-u062vf__P3mqbZDi?M zyR-@M6Y>F+YjqPI7zC(?Ue?c@r2Vq0VQ=01 zs_6Go^eqS+jHVWeqs|N@;(7ka8TtYn7&EAP#D;u!Cz7o6!Y_Z!6?!9{S0TxMsv__B zun_P6sU!lJ#+BE}OVgNE`JLao6*zKCH8bF7mOx_;=Bd zFR7ql47o5SI)`9`5r{Es&i4Fv?7ZQ)*#n=cQJZ_{)^Fb5WgVO9g!rVF*m%y7z^3w zfRfW|opoP^0?73-%I!!+=2)4BG8R4G;aOvL~ zsNZ;gk9)Q~+(lsR%;9eCbT5WG&>rqL5M`l;-S;K@tMfj!$2(#gJPSPt;l(ZL_Zyyp zu6GBb{@eGm{^(TwPp?4zS72vUT~R*+T`TTHlt{0-3`|wL4ot;!p=#qJKvf70QGQRq z&%qX4JrphK2LTINGvbNe=&J=)I0YJi7dZG6(SfN!3S68zf!+-jzi*%dI+f9|i&&+U z>5S8uv>?JH;VlilU1M!E%x+uF1)J)*%1C4<{Z;Tw=qOJ}6pzRgRq{Sm3an2ssmNM1 zlHU9zj)+^o8V&@YxYdE35um_m5=%bw3GYs%LMgsz1OgsL^1XV1g>`^|fUhzBZxh{= zRd62xy!q(#;D#D}K`l40Vr3Ej^%>(2`MMz&-9BjGklQwdNP!C49exKUBOJ&G+4*>l z6?TI`q+)Kozs5Wq?PYU52Zs@I1NZ(cYXT@XJzD(Tn{y&G{(lXiEcz|t6k-y`iTeFvK&D^D zTo=v9NFSW7N6O5t@OmYTdm#nV81t%!G0J{9MydJx=&db>3d6Ncb9#KdjlmipCKGY$ z90mrt8O|hP%ma^7?>Q!%g@JNB84WZ};<`q6+-PW$M+vK3fk)%{cP#pg>=6A0w;*6Z zw5V$@5T58>JeAdPzH}D$MDD!64e9mNgu_;)IKJ&4FzOE%A`3ut9I+%VrJiE0f%AZ* z;4FbW_{VZ?GE>LUZ_h`C&s$pU$-D;CI|x@iAYDN3?vJ&NMOt7$~@$J!Q{ z1pltiNj514CVuO#uy70N<5CUWmXJD*Cw^AH17@>*OPAh`u{?Qe#)S7dK5N3S{}skj zoC`vuC4@Or+NEIQgP#94fi?@qnS^mJV{q$<%g75>Ebg;n9wzL_Q_gU4{4-74qp^!I zNhM`8CLf0#1T_n<8b(s)%Az9*DtL$v8zMxQLlA7@H{5*C1kCMPY)t9Z_vF3E6mwMk zrz!Frh1slPep(aG3ypd8?~HRY)T!`%`yyDR5Ii&y>{JNPKkG1{11;9535SG!W->kn zaN-l2^||H33hZm)YFS@zKtUA%;grqdFqm3!1|6`B#e_RQs7bGtDh{k3bMQL#) zDrwmC^WsHBf`ru;$^g;aVD^xQO zVu0;(f;dkL!Rf z!`-~#9a;ITZ{YT%EyX<8R0E)dHvd+HC({`J8rR8gVrdtoI1O3B<%@RfF@sG&Z8m_a zR*G?Y38l0t0;)!~XvM37#D6mbB2>>V6(>{_&?pkzuRu{bIzjtf_-z=5OerWW&mJl48vj&&{uF`dbF21z*rV+ja=%+M-ds^ z^*8wEdw7C~pXU>KyY$OP^3)_(hJ4g}mGft`;M>FmDDWhMBFT?yG<*xcNeeB)!z}&o zC%MM=7z%M55l#ih|9FB|a*UI(NwLOg&_2L{p4PEJ_DT(M(IXh&Nf_S@?9cIxVJJ!<<==W0+IF-(r}=Z(_7PRI-rKFwq|ASUiA+ZTjs&`6O|rNLE19Sowd1@!H6L zZP$kgg?wU!Z~>!Tqy_fh(fZPV{{u}$JgWD<_n*;1NBZyh`mk*m5UkgSQ~TP2Ds6q( zhKwD~Lfp~yAwxc<^5>rK$j4>drCTTi>X|+n-3ooF=^5SX{Jlkj_0=NX+Q~m`&tKa5 z-1lqC52uB8<%iwBGygXAX#ZSC>Bpi!nSZ;54$pt;{Dlq8_lbX>v*f}?)DOX|60