From c9686e69d9f93d9edb74b01ef7d6bffbd7cfa984 Mon Sep 17 00:00:00 2001 From: SachaMorard <2254275+SachaMorard@users.noreply.github.com> Date: Wed, 14 Jan 2026 07:16:44 +0100 Subject: [PATCH] feat: sdk full documentation --- api-reference/authentication.mdx | 29 +- api-reference/caching/purge-cache.mdx | 8 - api-reference/chat-completion.mdx | 7 + api-reference/errors.mdx | 236 +++++++-- api-reference/index.mdx | 53 +- api-reference/models.mdx | 7 + api-reference/openapi.json | 670 +++++++++++++++++++++++-- docs.json | 71 ++- images/byok-dark.png | Bin 0 -> 310286 bytes images/byok-light.png | Bin 0 -> 312128 bytes introduction.mdx | 127 ++--- introduction/why-edgee.mdx | 66 ++- package-lock.json | 203 ++++---- package.json | 2 +- proxy/components/overview.mdx | 1 - proxy/services/performance/caching.mdx | 10 - sdk/go/configuration.mdx | 193 +++++++ sdk/go/index.mdx | 484 +----------------- sdk/go/send.mdx | 257 ++++++++++ sdk/go/stream.mdx | 300 +++++++++++ sdk/go/tools.mdx | 618 +++++++++++++++++++++++ sdk/index.mdx | 67 ++- sdk/python/configuration.mdx | 146 ++++++ sdk/python/index.mdx | 384 +------------- sdk/python/send.mdx | 236 +++++++++ sdk/python/stream.mdx | 200 ++++++++ sdk/python/tools.mdx | 560 +++++++++++++++++++++ sdk/rust/configuration.mdx | 191 +++++++ sdk/rust/index.mdx | 540 +------------------- sdk/rust/send.mdx | 251 +++++++++ sdk/rust/stream.mdx | 280 +++++++++++ sdk/rust/tools.mdx | 548 ++++++++++++++++++++ sdk/typescript/configuration.mdx | 173 +++++++ sdk/typescript/index.mdx | 368 +------------- sdk/typescript/send.mdx | 233 +++++++++ sdk/typescript/stream.mdx | 213 ++++++++ sdk/typescript/tools.mdx | 499 ++++++++++++++++++ 37 files changed, 6132 insertions(+), 2099 deletions(-) delete mode 100644 api-reference/caching/purge-cache.mdx create mode 100644 api-reference/chat-completion.mdx create mode 100644 api-reference/models.mdx create mode 100644 images/byok-dark.png create mode 100644 images/byok-light.png create mode 100644 sdk/go/configuration.mdx create mode 100644 sdk/go/send.mdx create mode 100644 sdk/go/stream.mdx create mode 100644 sdk/go/tools.mdx create mode 100644 sdk/python/configuration.mdx create mode 100644 sdk/python/send.mdx create mode 100644 sdk/python/stream.mdx create mode 100644 sdk/python/tools.mdx create mode 100644 sdk/rust/configuration.mdx create mode 100644 sdk/rust/send.mdx create mode 100644 sdk/rust/stream.mdx create mode 100644 sdk/rust/tools.mdx create mode 100644 sdk/typescript/configuration.mdx create mode 100644 sdk/typescript/send.mdx create mode 100644 sdk/typescript/stream.mdx create mode 100644 sdk/typescript/tools.mdx diff --git a/api-reference/authentication.mdx b/api-reference/authentication.mdx index 632f8f9..75c6d47 100644 --- a/api-reference/authentication.mdx +++ b/api-reference/authentication.mdx @@ -1,40 +1,35 @@ --- title: "Authentication" description: "How to authenticate to the Edgee API" +icon: key-round --- -The Edgee API uses API tokens to authenticate requests. You can view and manage your API token in the -Edgee [Console](https://www.edgee.cloud/settings/tokens). +The Edgee API uses API keys to authenticate requests. You can view and manage your API keys in the +Edgee [Console](https://www.edgee.cloud/). Please refer to the [Create an API Key](/quickstart/api-key) guide to know more about how to create an API key. -Your API tokens carry many privileges, so be sure to keep them secure! Do not share your tokens in -publicly accessible areas such as GitHub, client-side code, and so forth. + + Your API keys carry many privileges, so be sure to keep them secure! + + Do not share your API keys in publicly accessible areas such as GitHub, client-side code, and so forth. + Authentication to the API is performed via Bearer authentication (also called token authentication). It is an HTTP authentication scheme that involves security tokens called bearer tokens. The client must send this token in the Authorization header when making requests to protected resources: ```bash -Authorization: Bearer +Authorization: Bearer ``` -If you need to authenticate via HTTP Basic Auth, -use `-u {{token}}:` instead of `-H "Authorization: Bearer {{token}}"`. - All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail. ```bash cURL with Bearer - curl 'https://api.edgee.ai/v1/projects' \ - -H 'Authorization: Bearer ' + curl 'https://api.edgee.ai/v1/models' \ + -H 'Authorization: Bearer ' ``` - - ```bash cURL with Basic Auth - curl 'https://api.edgee.ai/v1/projects' \ - -u ':' - # The colon prevents curl from asking for a password. - ``` - + diff --git a/api-reference/caching/purge-cache.mdx b/api-reference/caching/purge-cache.mdx deleted file mode 100644 index 34852c3..0000000 --- a/api-reference/caching/purge-cache.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: 'Purge Cache' -openapi: 'POST /v1/projects/{id}/purge-cache' ---- - -When you purge cache, Edgee will remove the specified cached content from all edge locations worldwide, which is useful when you need to update cached content, clear stale data after deployments, force fresh content to be served to users, or troubleshoot caching issues. - -Query strings are automatically removed from the path before purging and cache is purged for all domains associated with the project across all edge locations worldwide. diff --git a/api-reference/chat-completion.mdx b/api-reference/chat-completion.mdx new file mode 100644 index 0000000..9e66622 --- /dev/null +++ b/api-reference/chat-completion.mdx @@ -0,0 +1,7 @@ +--- +title: 'Chat Completion' +description: 'Create chat completions using the Edgee AI Gateway API' +openapi: 'POST /v1/chat/completions' +--- + +Creates a completion for the chat message. The Edgee API is OpenAI-compatible and works with any model and provider. Supports both streaming and non-streaming responses. diff --git a/api-reference/errors.mdx b/api-reference/errors.mdx index b424790..abc6195 100644 --- a/api-reference/errors.mdx +++ b/api-reference/errors.mdx @@ -1,64 +1,222 @@ --- title: "Errors" description: "How Edgee API responds when errors occur." +icon: circle-x --- -Edgee uses conventional HTTP response codes to indicate the success or failure of an API request. -In general: Codes in the 2xx range indicate success. -Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter -was omitted, a charge failed, etc.). -Codes in the 5xx range indicate an error with Edgee's servers. +Edgee uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, authentication failed, etc.). Codes in the 5xx range indicate an error with Edgee's servers. -Some 4xx errors that could be handled programmatically include -an error code that briefly explains the error reported. +When an error occurs, the API returns a JSON object with an `error` field containing details about what went wrong. -### Parameters +## Error Response Format - - The type of error returned. + + The error object. - One of invalid_request_error, not_found_error, creation_error, - update_error, deletion_error, forbidden_error, or authentication_error. + + A machine-readable error code that briefly explains the error reported. + + + + A human-readable message providing more details about the error. + - - A human-readable message providing more details about the error. + +```json Error Response Example +{ + "error": { + "code": "bad_model_id", + "message": "Invalid model ID: 'invalid-model'" + } +} +``` + + +## HTTP Status Code Summary + +Below is a summary of the HTTP status codes that Edgee API uses. + +| HTTP Code | Status | Description | +| --------- | ------ | ----------- | +| 200 | OK | Everything worked as expected. | +| 400 | Bad Request | The request was unacceptable, often due to missing a required parameter, invalid model ID, model not found, or provider not supported. | +| 401 | Unauthorized | No valid API key provided, or the Authorization header is missing or malformed. | +| 403 | Forbidden | The API key doesn't have permissions to perform the request. This can occur if the key is inactive, expired, or the requested model is not allowed for this key. | +| 404 | Not Found | The requested resource doesn't exist. | +| 429 | Too Many Requests | Too many requests hit the API too quickly, or usage limit exceeded. We recommend an exponential backoff of your requests. | +| 500, 502, 503, 504 | Server Errors | Something went wrong on Edgee's end. (These are rare.) | + +## Error Codes + +### 400 Bad Request + + + One of the following error codes: + + - `bad_model_id`: The model ID format is invalid + - `model_not_found`: The requested model does not exist or is not available + - `provider_not_supported`: The requested provider is not supported for the specified model - - If the error is parameter-specific, this will contain a list of the parameters that were invalid. + +```json Bad Model ID +{ + "error": { + "code": "bad_model_id", + "message": "Invalid model ID: 'invalid-model'" + } +} +``` + +```json Model Not Found +{ + "error": { + "code": "model_not_found", + "message": "Model 'openai/gpt-1' not found" + } +} +``` + +```json Provider Not Supported +{ + "error": { + "code": "provider_not_supported", + "message": "Provider 'anthropic' is not supported for model 'openai/gpt-4o'" + } +} +``` + + +### 401 Unauthorized + + + Always `"unauthorized"`. -## HTTP Status Code Summary + +```json Missing Authorization Header +{ + "error": { + "code": "unauthorized", + "message": "Missing Authorization header" + } +} +``` -Bellow is a summary of the HTTP status codes that Edgee API uses. - -| HTTP Code | Status | Description | -| ------------------ | ------ | ----------- | -| 200 | OK | Everything worked as expected. | -| 400 | Bad Request | The request was unacceptable, often due to missing a required parameter. | -| 401 | Unauthorized | No valid API key provided. | -| 402 | Request Failed | The parameters were valid but the request failed. | -| 403 | Forbidden | The API key doesn't have permissions to perform the request. | -| 404 | Not Found | The requested resource doesn't exist. | -| 409 | Conflict | The request conflicts with another request (perhaps due to using the same idempotent key). | -| 429 | Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. | -| 500, 502, 503, 504 | Server Errors | Something went wrong on Edgee's end. (These are rare.) | +```json Invalid Authorization Format +{ + "error": { + "code": "unauthorized", + "message": "Invalid Authorization header format" + } +} +``` + +```json Failed to Retrieve API Key +{ + "error": { + "code": "unauthorized", + "message": "Failed to retrieve API key: " + } +} +``` + + +### 403 Forbidden + + + Always `"forbidden"`. + + + +```json Inactive Key +{ + "error": { + "code": "forbidden", + "message": "API key is inactive" + } +} +``` + +```json Expired Key +{ + "error": { + "code": "forbidden", + "message": "API key has expired" + } +} +``` + +```json Model Not Allowed +{ + "error": { + "code": "forbidden", + "message": "Model 'openai/gpt-4o' is not allowed for this API key" + } +} +``` + + +### 429 Too Many Requests + + + Always `"usage_limit_exceeded"`. + + + +```json Usage Limit Exceeded +{ + "error": { + "code": "usage_limit_exceeded", + "message": "Usage limit exceeded: 1000.00 / 1000 tokens used" + } +} +``` + +```json No Credits Remaining +{ + "error": { + "code": "usage_limit_exceeded", + "message": "Organization has no credits remaining" + } +} +``` + + +### 500 Internal Server Error + +When a server error occurs, the API may return a generic error response. These errors are rare and typically indicate an issue on Edgee's side. -```json Response Example +```json Server Error { "error": { - "type": "invalid_request_error", - "params": [ - { - "param": "name", - "message": "This field is required" - } - ], - "message": "Parameter error" + "code": "internal_error", + "message": "An internal error occurred. Please try again later." } } ``` +## Handling Errors + +When you receive an error response: + +1. **Check the HTTP status code** to understand the general category of the error +2. **Read the error code** (`error.code`) to understand the specific issue +3. **Review the error message** (`error.message`) for additional context +4. **Take appropriate action**: + - **400 errors**: Fix the request parameters and retry + - **401 errors**: Check your API key and authentication headers + - **403 errors**: Verify your API key permissions and status + - **429 errors**: Implement exponential backoff and retry logic + - **5xx errors**: Retry after a delay, or contact support if the issue persists + +## Rate Limiting + +If you exceed the rate limits, you will receive a `429 Too Many Requests` response. We recommend implementing exponential backoff when you encounter rate limit errors: + +1. Wait for the time specified in the `Retry-After` header (if present) +2. Retry the request with exponential backoff +3. Reduce the rate of requests to stay within limits diff --git a/api-reference/index.mdx b/api-reference/index.mdx index d8be12b..72d73f6 100644 --- a/api-reference/index.mdx +++ b/api-reference/index.mdx @@ -1,11 +1,12 @@ --- -title: 'Introduction' -description: 'A brief introduction to the Edgee API.' +title: 'Overview' +description: 'A brief introduction to the Edgee AI Gateway API.' +icon: book --- -Welcome to the Edgee API documentation. This guide will help you understand how to interact with the Edgee API to create, -retrieve, update, and delete Edgee resources through HTTP requests. +Welcome to the Edgee AI Gateway API documentation. This guide will help you understand how to interact with the Edgee API to create chat completions and manage models through HTTP requests. +Edgee is an edge-native AI Gateway with private model hosting, automatic model selection, cost audits/alerts, and edge tools. The API is **OpenAI-compatible**, providing one API for any model and any provider. ## Base URL @@ -17,20 +18,46 @@ https://api.edgee.ai ## Authentication -The Edgee API uses bearer authentication. When making requests, you must include your API token in the `Authorization` -header in the format `Bearer `. For more details, please refer to the [Authentication](./authentication) page. +The Edgee API uses bearer authentication. When making requests, you must include your API Key in the `Authorization` header in the format `Bearer `. For more details, please refer to the [Authentication](./authentication) page. ## Errors -When an error occurs, the Edgee API responds with a conventional HTTP response code and a JSON object containing more -details about the error. For more information, please refer to the [Errors](./errors) page. +When an error occurs, the Edgee API responds with a conventional HTTP response code and a JSON object containing more details about the error. For more information, please refer to the [Errors](./errors) page. ## Rate Limiting -Please note that the Edgee API has rate limits to prevent abuse and ensure service stability. If you exceed these limits, -your requests will be throttled and you will receive a `429 Too Many Requests` response. +Please note that the Edgee has its own rate limit technology to prevent abuse and ensure service stability. +If you exceed these limits, your requests will be throttled and you will receive a `429 Too Many Requests` response. +Additionally, usage limits may be enforced based on your API key configuration. + +## Features + + + + **OpenAI-Compatible API** + + Fully compatible with the OpenAI API format, making it easy to switch between providers or use multiple providers through a single interface. + + + **Multi-Provider Support** + + Access models from multiple providers (OpenAI, Anthropic, etc.) through a single API endpoint. Simply specify the model using the format `{author_id}/{model_id}`. + + + **Streaming Support** + + Both streaming and non-streaming responses are supported. Enable streaming by setting `stream: true` to receive Server-Sent Events (SSE) with partial message deltas. + + + **Function Calling** + + The API supports function calling (tools) that allows models to call external functions, enabling more interactive and powerful applications. + + + **Usage Tracking** + + Every response includes detailed usage statistics: token counts (prompt, completion, total), cached tokens, and reasoning tokens. + + ---- -We hope this guide helps you get started with the Edgee API. If you have any questions, please don't hesitate to reach -out to our support team. diff --git a/api-reference/models.mdx b/api-reference/models.mdx new file mode 100644 index 0000000..8c0dfb2 --- /dev/null +++ b/api-reference/models.mdx @@ -0,0 +1,7 @@ +--- +title: 'Models' +description: 'List all available models in the Edgee AI Gateway' +openapi: 'GET /v1/models' +--- + +Lists the currently available models, and provides basic information about each one such as the owner and availability. Returns only active models. diff --git a/api-reference/openapi.json b/api-reference/openapi.json index ca4d9a3..8ed12bf 100644 --- a/api-reference/openapi.json +++ b/api-reference/openapi.json @@ -2,11 +2,17 @@ "openapi": "3.0.1", "info": { "title": "Edgee API", - "version": "1" + "version": "1.0.0", + "description": "Edgee is an edge-native AI Gateway with private model hosting, automatic model selection, cost audits/alerts, and edge tools. This API is OpenAI-compatible, providing one API for any model and any provider." }, "servers": [ { - "url": "https://api.edgee.ai" + "url": "https://api.edgee.ai", + "description": "Edgee AI Gateway" + }, + { + "url": "http://localhost:7676", + "description": "Edgee AI Gateway (Local Development)" } ], "security": [ @@ -15,46 +21,75 @@ } ], "paths": { - "/v1/projects/{id}/purge-cache": { + "/v1/chat/completions": { "post": { - "operationId": "purgeProjectCache", - "summary": "Purge cache for a project", - "description": "Purge the cache for a specific project. You can purge all cache or purge cache for a specific path. When purging by path, the cache for all domains associated with the project will be purged for that path.", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - }, - "description": "The project ID" - } - ], + "operationId": "createChatCompletion", + "summary": "Create chat completion", + "description": "Creates a completion for the chat message. Supports both streaming and non-streaming responses. The API is OpenAI-compatible and works with any model and provider.", + "tags": ["Chat"], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PurgeCacheInput" + "$ref": "#/components/schemas/ChatCompletionRequest" } } - }, - "required": true + } }, "responses": { "200": { - "description": "Cache purged successfully", + "description": "Chat completion created successfully", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "message": { - "type": "string", - "example": "Cache purged" + "$ref": "#/components/schemas/ChatCompletionResponse" + }, + "example": { + "id": "chatcmpl-123", + "object": "chat.completion", + "created": 1677652288, + "model": "openai/gpt-4o", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Hello! How can I assist you today?" + }, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 10, + "completion_tokens": 10, + "total_tokens": 20, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens_details": { + "reasoning_tokens": 0 } } } + }, + "text/event-stream": { + "schema": { + "type": "string", + "format": "binary", + "description": "Server-Sent Events stream. Each event is a JSON object prefixed with 'data: ' and followed by two newlines. The stream consists of multiple `ChatCompletionChunk` objects, and optionally a final chunk with usage statistics if `stream_options.include_usage` is true." + }, + "examples": { + "contentChunk": { + "value": "data: {\"id\":\"chatcmpl-123\",\"object\":\"chat.completion.chunk\",\"created\":1677652288,\"model\":\"openai/gpt-4o\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Hello\"},\"finish_reason\":null}]}\n\n" + }, + "roleChunk": { + "value": "data: {\"id\":\"chatcmpl-123\",\"object\":\"chat.completion.chunk\",\"created\":1677652288,\"model\":\"openai/gpt-4o\",\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\"},\"finish_reason\":null}]}\n\n" + }, + "finalChunk": { + "value": "data: {\"id\":\"chatcmpl-123\",\"object\":\"chat.completion.chunk\",\"created\":1677652288,\"model\":\"openai/gpt-4o\",\"choices\":[{\"index\":0,\"delta\":{},\"finish_reason\":\"stop\"}],\"usage\":{\"prompt_tokens\":10,\"completion_tokens\":10,\"total_tokens\":20,\"input_tokens_details\":{\"cached_tokens\":0},\"output_tokens_details\":{\"reasoning_tokens\":0}}}\n\n" + } + } } } }, @@ -64,26 +99,158 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "badModelId": { + "value": { + "error": { + "code": "bad_model_id", + "message": "Invalid model ID: 'invalid-model'" + } + } + }, + "modelNotFound": { + "value": { + "error": { + "code": "model_not_found", + "message": "Model 'openai/gpt-1' not found" + } + } + }, + "providerNotSupported": { + "value": { + "error": { + "code": "provider_not_supported", + "message": "Provider 'anthropic' is not supported for model 'openai/gpt-4o'" + } + } + } + } + } + } + }, + "401": { + "description": "Unauthorized - missing or invalid API key", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + }, + "example": { + "error": { + "code": "unauthorized", + "message": "Missing Authorization header" + } } } } }, "403": { - "description": "Forbidden - insufficient permissions", + "description": "Forbidden - API key is inactive, expired, or model not allowed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "inactiveKey": { + "value": { + "error": { + "code": "forbidden", + "message": "API key is inactive" + } + } + }, + "expiredKey": { + "value": { + "error": { + "code": "forbidden", + "message": "API key has expired" + } + } + }, + "modelNotAllowed": { + "value": { + "error": { + "code": "forbidden", + "message": "Model 'openai/gpt-4o' is not allowed for this API key" + } + } + } } } } }, - "404": { - "description": "Project not found", + "429": { + "description": "Too many requests - usage limit exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "example": { + "error": { + "code": "usage_limit_exceeded", + "message": "Usage limit exceeded: 1000.00 / 1000 tokens used" + } + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v1/models": { + "get": { + "operationId": "listModels", + "summary": "List models", + "description": "Lists the currently available models, and provides basic information about each one such as the owner and availability. Returns only active models.", + "tags": ["Models"], + "parameters": [ + { + "name": "provider", + "in": "query", + "description": "Filter models by provider (optional, currently not implemented)", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "List of available models", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelsResponse" + }, + "example": { + "object": "list", + "data": [ + { + "id": "openai/gpt-4o", + "object": "model", + "created": 1677610602, + "owned_by": "openai" + }, + { + "id": "anthropic/claude-3-opus", + "object": "model", + "created": 1677610602, + "owned_by": "anthropic" + } + ] } } } @@ -103,16 +270,453 @@ } }, "components": { - "parameters": { - }, "schemas": { + "ChatCompletionRequest": { + "type": "object", + "required": ["model", "messages"], + "properties": { + "model": { + "type": "string", + "description": "ID of the model to use. Format: `{author_id}/{model_id}` (e.g. `openai/gpt-4o`)", + "example": "openai/gpt-4o" + }, + "messages": { + "type": "array", + "description": "A list of messages comprising the conversation so far.", + "items": { + "$ref": "#/components/schemas/Message" + }, + "minItems": 1 + }, + "max_tokens": { + "type": "integer", + "description": "The maximum number of tokens that can be generated in the chat completion.", + "minimum": 1 + }, + "stream": { + "type": "boolean", + "description": "If set, partial message deltas will be sent, as in OpenAI. Streamed chunks are sent as Server-Sent Events (SSE).", + "default": false + }, + "stream_options": { + "type": "object", + "description": "Options for streaming response.", + "properties": { + "include_usage": { + "type": "boolean", + "description": "If set, an additional `[DONE]` message will be sent with usage statistics when the stream is finished." + } + } + }, + "tools": { + "type": "array", + "description": "A list of tools the model may call. Currently, only `function` type is supported.", + "items": { + "$ref": "#/components/schemas/Tool" + } + }, + "tool_choice": { + "oneOf": [ + { + "type": "string", + "enum": ["none", "auto"], + "description": "Controls which (if any) tool is called by the model. `none` means the model will not call any tool. `auto` means the model can pick between generating a message or calling a tool." + }, + { + "$ref": "#/components/schemas/ToolChoiceSpecific" + } + ], + "description": "Controls which tool is called by the model." + } + } + }, + "Message": { + "type": "object", + "required": ["role"], + "properties": { + "role": { + "type": "string", + "enum": ["system", "user", "assistant", "tool", "developer"], + "description": "The role of the message author. Required properties vary by role:\n- `system`, `user`, `developer`: requires `content`\n- `assistant`: `content` is optional (can be empty if `tool_calls` is present)\n- `tool`: requires `content` and `tool_call_id`" + }, + "content": { + "type": "string", + "description": "The contents of the message. Required for all roles except `assistant` (where it can be empty if `tool_calls` is present). For `assistant` role, defaults to empty string if not provided." + }, + "name": { + "type": "string", + "description": "An optional name for the participant. Provides the model information to differentiate between participants of the same role. Used for `system`, `user`, `assistant`, and `developer` roles." + }, + "tool_call_id": { + "type": "string", + "description": "The ID of the tool call that this message is responding to. Required for `tool` role only." + }, + "refusal": { + "type": "string", + "description": "The refusal message from the model, if any. Used for `assistant` role only." + }, + "tool_calls": { + "type": "array", + "description": "The tool calls made by the assistant. Used for `assistant` role only.", + "items": { + "$ref": "#/components/schemas/ToolCall" + } + } + } + }, + "Tool": { + "type": "object", + "required": ["type", "function"], + "properties": { + "type": { + "type": "string", + "enum": ["function"], + "description": "The type of the tool. Currently, only `function` is supported." + }, + "function": { + "$ref": "#/components/schemas/FunctionDefinition" + } + } + }, + "FunctionDefinition": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string", + "description": "The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64." + }, + "description": { + "type": "string", + "description": "A description of what the function does, used by the model to choose when and how to call the function." + }, + "parameters": { + "type": "object", + "description": "The parameters the functions accepts, described as a JSON Schema object. See the guide for examples, and the JSON Schema reference for documentation about the format.", + "additionalProperties": true + } + } + }, + "ToolChoiceSpecific": { + "type": "object", + "required": ["type", "function"], + "properties": { + "type": { + "type": "string", + "enum": ["function"], + "description": "The type of the tool." + }, + "function": { + "$ref": "#/components/schemas/ToolChoiceFunction" + } + } + }, + "ToolChoiceFunction": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string", + "description": "The name of the function to call." + } + } + }, + "ToolCall": { + "type": "object", + "required": ["id", "type", "function"], + "properties": { + "id": { + "type": "string", + "description": "The ID of the tool call." + }, + "type": { + "type": "string", + "enum": ["function"], + "description": "The type of the tool call." + }, + "function": { + "$ref": "#/components/schemas/FunctionCall" + } + } + }, + "FunctionCall": { + "type": "object", + "required": ["name", "arguments"], + "properties": { + "name": { + "type": "string", + "description": "The name of the function to call." + }, + "arguments": { + "type": "string", + "description": "The arguments to call the function with, as JSON." + } + } + }, + "ChatCompletionResponse": { + "type": "object", + "required": ["id", "object", "created", "model", "choices", "usage"], + "properties": { + "id": { + "type": "string", + "description": "A unique identifier for the chat completion.", + "example": "chatcmpl-123" + }, + "object": { + "type": "string", + "enum": ["chat.completion"], + "description": "The object type, which is always `chat.completion`." + }, + "created": { + "type": "integer", + "description": "The Unix timestamp (in seconds) of when the chat completion was created.", + "example": 1677652288 + }, + "model": { + "type": "string", + "description": "The model used for the chat completion.", + "example": "openai/gpt-4o" + }, + "choices": { + "type": "array", + "description": "A list of chat completion choices. Can be more than one if n is greater than 1.", + "items": { + "$ref": "#/components/schemas/ChatCompletionChoice" + } + }, + "usage": { + "$ref": "#/components/schemas/Usage" + } + } + }, + "ChatCompletionChoice": { + "type": "object", + "required": ["index", "message"], + "properties": { + "index": { + "type": "integer", + "description": "The index of the choice in the list of choices.", + "minimum": 0 + }, + "message": { + "$ref": "#/components/schemas/AssistantMessage" + }, + "finish_reason": { + "type": "string", + "enum": ["stop", "length", "content_filter", "tool_calls"], + "description": "The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, `length` if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, or `tool_calls` if the model called a tool." + } + } + }, + "Usage": { + "type": "object", + "description": "Usage statistics for the completion. In streaming responses, this is only present in the final chunk when `stream_options.include_usage` is true.", + "required": ["prompt_tokens", "completion_tokens", "total_tokens", "input_tokens_details", "output_tokens_details"], + "properties": { + "prompt_tokens": { + "type": "integer", + "description": "Number of tokens in the prompt.", + "minimum": 0 + }, + "completion_tokens": { + "type": "integer", + "description": "Number of tokens in the generated completion.", + "minimum": 0 + }, + "total_tokens": { + "type": "integer", + "description": "Total number of tokens used in the request (prompt + completion).", + "minimum": 0 + }, + "input_tokens_details": { + "$ref": "#/components/schemas/InputTokenDetails" + }, + "output_tokens_details": { + "$ref": "#/components/schemas/OutputTokenDetails" + } + } + }, + "InputTokenDetails": { + "type": "object", + "description": "Additional details about input tokens.", + "properties": { + "cached_tokens": { + "type": "integer", + "description": "Number of cached tokens in the input.", + "minimum": 0 + } + } + }, + "OutputTokenDetails": { + "type": "object", + "description": "Additional details about output tokens.", + "properties": { + "reasoning_tokens": { + "type": "integer", + "description": "Number of reasoning tokens in the output.", + "minimum": 0 + } + } + }, + "ModelsResponse": { + "type": "object", + "required": ["object", "data"], + "properties": { + "object": { + "type": "string", + "enum": ["list"], + "description": "The object type, which is always `list`." + }, + "data": { + "type": "array", + "description": "The list of models.", + "items": { + "$ref": "#/components/schemas/Model" + } + } + } + }, + "Model": { + "type": "object", + "required": ["id", "object", "created", "owned_by"], + "properties": { + "id": { + "type": "string", + "description": "The model identifier, which can be referenced in the API. Format: `{author_id}/{model_id}`.", + "example": "openai/gpt-4o" + }, + "object": { + "type": "string", + "enum": ["model"], + "description": "The object type, which is always `model`." + }, + "created": { + "type": "integer", + "description": "The Unix timestamp (in seconds) when the model was created.", + "example": 1677610602 + }, + "owned_by": { + "type": "string", + "description": "The organization that owns the model.", + "example": "openai" + } + } + }, + "ChatCompletionChunk": { + "type": "object", + "required": ["id", "object", "created", "model", "choices"], + "description": "A streaming chunk in the chat completion response. Used when `stream: true` in the request.", + "properties": { + "id": { + "type": "string", + "description": "A unique identifier for the chat completion chunk.", + "example": "chatcmpl-123" + }, + "object": { + "type": "string", + "enum": ["chat.completion.chunk"], + "description": "The object type, which is always `chat.completion.chunk` for streaming responses." + }, + "created": { + "type": "integer", + "description": "The Unix timestamp (in seconds) of when the chat completion was created.", + "example": 1677652288 + }, + "model": { + "type": "string", + "description": "The model used for the chat completion.", + "example": "openai/gpt-4o" + }, + "choices": { + "type": "array", + "description": "A list of chat completion choices for this chunk.", + "items": { + "$ref": "#/components/schemas/ChatCompletionChunkChoice" + } + }, + "usage": { + "$ref": "#/components/schemas/Usage" + } + } + }, + "ChatCompletionChunkChoice": { + "type": "object", + "required": ["index", "delta"], + "description": "A choice in a streaming chat completion chunk.", + "properties": { + "index": { + "type": "integer", + "description": "The index of the choice in the list of choices.", + "minimum": 0 + }, + "delta": { + "$ref": "#/components/schemas/Delta", + "description": "A delta representing the change in the message content. The first chunk typically contains `role`, subsequent chunks contain `content`." + }, + "finish_reason": { + "type": "string", + "enum": ["stop", "length", "content_filter", "tool_calls"], + "description": "The reason the model stopped generating tokens. This will be `null` for all chunks except the final one. This will be `stop` if the model hit a natural stop point or a provided stop sequence, `length` if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, or `tool_calls` if the model called a tool." + } + } + }, + "Delta": { + "type": "object", + "description": "Represents a change in message content. The first chunk typically contains `role`, subsequent chunks contain `content`.", + "properties": { + "role": { + "type": "string", + "description": "The role of the message author. Typically present only in the first chunk.", + "example": "assistant" + }, + "content": { + "type": "string", + "description": "The content of the message delta. Present in content chunks.", + "example": "Hello" + } + } + }, + "ErrorResponse": { + "type": "object", + "required": ["error"], + "description": "Error response.", + "$ref": "#/components/schemas/ErrorResponse", + "properties": { + "error": { + "type": "object", + "required": ["code", "message"], + "properties": { + "code": { + "type": "string", + "description": "A machine-readable error code.", + "examples": ["bad_model_id", "model_not_found", "provider_not_supported", "unauthorized", "forbidden", "usage_limit_exceeded"] + }, + "message": { + "type": "string", + "description": "A human-readable error message." + } + } + } + } + } }, "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer", - "description": "Bearer authentication header of the form `Bearer `, where `` is your auth token. More info [here]('/docs/api-reference/authentication')" + "bearerFormat": "JWT", + "description": "Bearer authentication header of the form `Bearer `, where `` is your API key. More info [here](/docs/api-reference/authentication)" } } - } + }, + "tags": [ + { + "name": "Chat", + "description": "Chat completion endpoints" + }, + { + "name": "Models", + "description": "Model management endpoints" + } + ] } diff --git a/docs.json b/docs.json index 3d5bc52..479bd0f 100644 --- a/docs.json +++ b/docs.json @@ -83,10 +83,50 @@ "group": "SDK Documentation", "pages": [ "sdk/index", - "sdk/typescript/index", - "sdk/python/index", - "sdk/rust/index", - "sdk/go/index", + { + "group": "TypeScript", + "icon": "https://d3gk2c5xim1je2.cloudfront.net/devicon/typescript.svg", + "pages": [ + "sdk/typescript/index", + "sdk/typescript/configuration", + "sdk/typescript/send", + "sdk/typescript/stream", + "sdk/typescript/tools" + ] + }, + { + "group": "Python", + "icon": "python", + "pages": [ + "sdk/python/index", + "sdk/python/configuration", + "sdk/python/send", + "sdk/python/stream", + "sdk/python/tools" + ] + }, + { + "group": "Rust", + "icon": "rust", + "pages": [ + "sdk/rust/index", + "sdk/rust/configuration", + "sdk/rust/send", + "sdk/rust/stream", + "sdk/rust/tools" + ] + }, + { + "group": "Go", + "icon": "golang", + "pages": [ + "sdk/go/index", + "sdk/go/configuration", + "sdk/go/send", + "sdk/go/stream", + "sdk/go/tools" + ] + }, "sdk/openai/index" ] } @@ -95,20 +135,21 @@ { "tab": "API Reference", "icon": "terminal", - "hidden": true, + "groups": [ { - "group": "API Documentation", + "group": "Introduction", "pages": [ - "api-reference/index", - "api-reference/authentication", - "api-reference/errors", - { - "group": "Caching", - "pages": [ - "api-reference/caching/purge-cache" - ] - } + "api-reference/index", + "api-reference/authentication", + "api-reference/errors" + ] + }, + { + "group": "Endpoints", + "pages": [ + "api-reference/chat-completion", + "api-reference/models" ] } ] diff --git a/images/byok-dark.png b/images/byok-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffc6abf36356d1099eed7d831064bad8f758b31 GIT binary patch literal 310286 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%0A2D7*2b9}vqwe|jEygdOHzGG#RjlS_$aELesg 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%0A-1fNj zenSK|ZmP*dfO1`fimlAS{jm!*#KHx$G+nH4BY%wOZ}#UzR_fn=oZ0iz$0$R6Qd(Hf zc946NUO#T|o*xh4t+Qd&juoxEctd@0-l9>?2n*>QY7w2?ddrMz<=ENrq~Ps*u4;PO z9XLw(ri&Be73={2$hph~f@f?tm>o)~LS;O}BGfF+*K;LjxKEdBMrzp{ZM#g&rKnLm z$}Jq{us{>RNva($4-#_*-vU8CSB!YG)}4P_%Lbu@%-G5Pl(8EN3e2q40sT@U1XC3C zUPsFtB`C$eZ-i?T0fz@8B>N^vZ!Q#bD#)iNWf= z1&C|qK|;&|FnEsI9YAdf7jjf`yoDUehJsn5Sd%Xz ze^H;?4F2O3$#kyBs%pM?ZJrqjgc1s{222g5t$NKsnlxvEX0?;!nqKP8`;GF5U};h6 zI5ZlTTCJM6V;p8pnf)+lNT4J`h9Xq*-GyYkqvlTM)RDsiW}*aLr!B0l({e?fV^+|$UVhF@IA}~at+Fbo44;zk_JEE{lZX9Y^j3eSEcv+ONqCQt zN=95Fzy;rS0?!m=?;@^vCs8=QFzM;?DfdF=@rpIk+6ma+Dd37h(};b8sxer+_G13C z`|;~TiKIb0tNsuQ!Dsz`{CHRW`DzBfvZ7(%rXyf&6w6xZQcRC|lL*`;Nk`|PuEF#v zSB_}oNJ3d@4O6t9GSELw&0%efULu6DT>Y(F?AB^r7WYJBC6YUOs%zYE;cD5Qw}=tW z%QWHj?=C^E#C#(_#Xw`4?y`v>@UG5uTX7~TGD3TJ>spsze-j4XO0|Y}7C8?)9^Yb; z+rZcIT=8|AyNV`*MWJ0UQ)Axmwm&}=vhGTvOA z#xxq$?HFpc4UQgI(O;$(#t|3uT~ixWTxEC!#xfF+N+B)ZF|P;KP#WuO(6Sbzf^~2? z9C+Ok{yTqdO$l9G@+Rhys}Zu({@QgtuT=7OJC=810&&=INM?{{T^_3=6NaCadL|u_%rXAo9*kt&;FmrJFEMnQy3_8} z0RsFuI*PQ2&?w!T+I)`1x(z?FQ1APb(OF5UPmg&?%Eq45Vl_@YJ@OgBt$Bn>&u5c| zLS(ffAUmG5e0=K~0@KY21byeK`4m%C&PwT$Vy8?Bt=UA=xWJF1fBOjPFDH^Tv9j!Z z>jAp#L<>J)&&sEkJ&A(I{PN??=vr!!hrVXbB^}J8qeNk#a z-laNAo{`PihngKkkVhw=WPIN~_57PPWztezU9+>d1mF!P&p;*E`Brz_$PW+W_N`>n zkGm-sn2%+nhROWMa%HY_$c@Fa*p|H-F{1@R%8Fn~H_sMIcvH@FK9cKts;d# z0NZ~t&{Yws)>I3>LR4L`eYwXBqvU4tq{ir~Z9;Xmho|+zn{4~hjcpT077!4(7@`dJ z7V-&4ETFHgrk7Q!)ui*Y>~xGhKV!jN~9xY5*cDlQ1>c`vfEU z)g315WtcOS?4=zO)%B@R$o;y`?#qJ~NhKMo zBHI1jD49$mo(^CBJk@0R1UGN@+PTS$%$`Fcn+zPOK0;=Z+aTu8Bu7lR`;;c6EL34ZjOzt@93i>2tFemu#%KwC4WLu zQ-*vGoLzr2V}BM1`_jOz*!KethtJ1wsXQ0_qertpL?s-2M|v={@)nm)W(aX+T>NT5 z{cy0Fp(4GoksI<6dZwGh zV;ikA2<-F}v>BmN%9^0YlTMf(qe~2;NOq~lVX6KCVm?XE#*dfH&;0Ez<}Wt`T|l4Q zbcICDWV|0>N6MSk*kLXJ8n*k za`Y^xnB3mJrL^d$yt>3+hMmbUT<5z#F1XoN+3ovk>rCP|+GQI79|x7$lcSst>Z)(rgiW&IXP z`*{_I#4-1-yy{W|km$aAbm$4|>o`&XIs*P`%H~wLo#WaTUr=>nSGdJ^rAn+%J*mY) z+T;u47>@IyUN>yE;@cvUbqsTC&RIJ^ztbX2CXoVls9u zD6)EC%);!|YAx=AKO5oWoyD88SY4r~Z zZLMLYexuauhey95=W1br>I^jKzw9lq<+Y;EdtzLh$H?uq5^H!oN|M>0Gmy1L?V;7` zx)`x!R_F|356I)tLqz@F@`UV@niHftiES%=JRUtefIDJ*i>z23(tSz-CEA%v1s9p z@IF{KJEiLb8>6bV0hYsgG4=0M%v3x2=Mf-*=;?B>M(cfyUq+R$QOjrNhD`3*P`aOD z?I(73=~cVUUo5@MSeJVzU$Z;As62xmCW_RQ+?`b+QLh zITowjnI*^3@7~>uQTf1#uougxrsB7GC!6BYGT~=dBcjb?amm=cO?8eB8#kpfp( z<}}%fFXU|2KxhIY%`u{vcpXooi}zceM2Yrjg40yQ>-|}Y>fG)O(xrKG^Kk~8i+#MA zAFRiN*ZJ;z&+If}b22eUdVEoM7DMg)EIR+3#o2l9XKZuTaIT20TTode&0YY z{e&qz0Rm0$+>I;PS+?kI)i}(ZkFH)Aq`t^=r}y~P47dQxAU}s-IN3*l2s_7%8eC6) z1r|A&iW&kx>wONQz|AAq3{iqUaG`y!SdxZA?fDjequ3(9QzP~ANLHaX2Ht($25VUH zr~zYJTntK-^wBPE{*a+J*duh?a+f0U(uD<~%Bc9eBbt^_ zb0!EfF0t~!Z|j*imZ9y&sRx%dD&g~Pr!{b4LC`2Sg@uj7IrvdVuuguR z`r|V4TY?SdU)B4h zmLGxLbbp;oE0`sQEPl$IlhbBaOz+HOFWzSkMU&ax+0d?O_xl>P+L0~JkzZ$iR5O@$ zcj7O_-%s<_9O};^p7HtK4$uRNBNKTc6n7Q*?ANYad+p^Ej*!4^KJU&N>U;>^iWV}- z)Mnwl>)zbLV8!YzFc>;;>#+mJf&}qYNu3X`nE;D$sQt9$x~ayAnn9q6UhMhNOR3eY=40fk z8u-^KS~9)V*+UST*I%mpQF}(62sLE7F0{+OJXS4TCpsUGlj`1~&#hK@=Iz&P+PIjE zDyNEuKmoB|bXP$n@YVRcaGtkFj)SZGD)$jy=*P0eb5Zw`mQP`ZBDhrDlp?E}kuiDb zF77F`0*#>iC8Ohw6LD%146Ildjia~%jTvIs!lJPWMy6aF<^&n2e|J_+j&2RuSauB} zx2V^s6kZ(~%{+6nGJY$QNMn~dl%M8EqSli@W=xo~bZFBOAG3d>3$Fqc2ZUWsLY{Uf z!2ozk(rE9u8HUOFx! zd0t3HLpjEu)3WF9hBxM?Is*jSNh7B~{;|XI7y7GJsd#8{GMp7c^f9_`S&@fijIMx< z`-V017KBkE79M^oJj|8T{`JB76p4n1&i9n!Jv5$}HQEeFtsn9FSnu&%9*5YRrxo`kq(&WK*b`@#v|{T! zm^E2;OD(C_zEsO3xy%7KP5zu&y`oG}%EhtHWnuZAyJ96w(h;HhY{k(L06egd0;kJM~>$^vL`w#b^!lV&RJydYyA{A@((+#?~sI(AaLXusqm}Z{1rx zqjTeR`cb+eatke%Ru)}MO1jfNs9kG@IaYnWF~xhkyPvjXTp#vEbyp*0@spq!$Hl1F zwfcQ8R$F-!&vQY0ts$6%!(y(wgq?c1Ww*{w^x?|sN?>8#+T~~G#L?3+9lm%xqff^C z9Q?l$!*n#wZzLP{S6MH4g@BD^%8Hs1)eX0Afg%Oi#>pzW;X`zajS;SHg>33Lm6qdV z)}i4*e!%wESSLosF3)J2EX2n4O-;s(%OWG{rnKZn)ORvZy=v>mFJT);*92ejM!x6TbD|#1a>3Iiu0Q{J{J|$kuSt?3l z3m=@B!b$`eBcp9C72J7sJU$q@1&jWH~UEByv>)Bjr3ZlV+~J-BTiTM_yXtmfmlw&Ja@RgxU<%eUSBY5jjhxj*(zQL z{p?unavuJf?=H*t?{;13O}>P8GI%NK=-6d?8nti3vO88JR9`x!+NW=7#rWWz#{`WT zx)nG_2Wxde*QH@LYVP;Rv~FU9@UUry>|=rbx{KD0doLQ{ zMq>OAiDC@vp6)g&Boy9w5UZk9>n~rXzy19fUZQW=agxhIeAYTfwZ>vpHh(ix35*hE zTda@!^MPnGTRGN;rtzZ}-U@1T=43$oPlZebYF=h^GFL6$_I*Ert-ABk%E`p+$UKS7 zCElG~q1JJb#j{^sl2XVM{;Lw(LGvFKJ7M#uk;t+nj6Iaj?Tyx-3tqGB(MTLuEtNV} z0}}3%DwmPBx*s3JWqEd_*S9-lOl}!VEeY(Dl}3J&hDRO@!>n|7z8{MJ9yR^^2RAI2y1${i z=Oi**cb?d8Uc$K~>97@Cp6t^CHyr zUa22$<>)rlQwZ6pF~}?sUi|x83gh^efA<0aME(1_C}=r zmXEi8{_yuG;6H!Z@BFA7Vy_ApkG%$t6-zzFZ+vu&@!fd*_Y}YU*Ia?f?xzGkRLEro z0CE*SHu`rX@XtSU@BRka5~P*>1sOz!|H%{I|MoAI|K;Uha>xJWj4^@E))D7D`YQ|g zf2y9hZyPfyH3`WIDlUm3o$uR7=NmM`=-|KgC!H-GfqrJ;=~dV7ses-n6rwzhw~a68 zy+6jE{e!vnRgqP!`fTlM9;yal6Zzh4P(GWxM&R~84973EIyESY`%%T(QA>-27#p|> z^OGTevgF(JKU8zrgu=;mpdgB}(BP|cDEk86%A0Aw)$ z^6Uonr9S~#>Ayg}`7g-GeBb|u>VL8PFE9U+JN{*i|GzQDqY+d!<-*5OD^ZU?BIoMd zeBfaFHkQ$TJ8nD?ueSBW&+?HSeMAx&Cxh*CSxwjfTiIX19J{(7dV`iI{lRHde|B;{ zsSoag-(xpWYOGFpkIo>=v2B=0+F-Izy<}%DmWla7sW^(4*3~;3YD}_NToL`28H!)> z*hol14ft4J*qlr9mYn%fxE(+##%(T<{H=SERk71^-T6nXk$HGx5blhkEZ;+k<1vL~ ze4iu~zrJhC=V5$hu!bSMTDhJB4>*YW+ zs>>UmbR7gYF`)cxH8VfmLm||!-9y1)t*G72T1GBGDB=X`*_(KR>?eGj|!A-X={8~8N-!NLzUnpq4Q-gL8E>+?*=$wN4Vr-#X}FP8oXR$)O3Tl>LfY- zi?zV;9k(b0uOkccN8zZl>GN%o4wAucFT}V7s)RbEKmAt}?KOx@=*d}_u=9YT^qA7% zdvw4#AQr|K;jwLB<}lLlX@X%yicRd8F8Goe_m@cG(zo@Hu*VE`TC^$tti{l!>d>!k;5y%6<${l4|m@?-0T5(<(l8L~UW+_vre z?)*3`?b~Mw!J}qxC2JQf%pu_k#}1N*IpNFEcmra8+bq)zk+=^+HcI1DarXRl^5*9h zO|<1UjHQa$gF2{q?A7^`NnIC*Lya8VBpnj9lw6-gay>xtVnF*u8JKar$Xbz9cs$AX zQu;mi&>MWtw)EB~E?-`sZiY~`6*IS*w!AET_qQmBL_>Ag$Df9G9fBPseP^N{#od=h zcw8k%`h;``b|cdQZQ;B?Ew@n{Or_Y_F@G@S%)Xnj6*1kJd-6(Oz+^(%4Svde)yBWX$tu zeE)IEV`*;2T;$$7((@!GsH#0}2I8F1uCuKUI?FW1sZ&Ft=V)@o;SG;Qm)Ey@D{4=Y zP?f|`yyCAd?XAOs6hCg$2`i1e^A*#!G&+95QxSeVH1?|XxyavAOdW-BVmj5GVK1ex z4jQG2(FZkyJnr<7J&J?nK%YZG325oUX~_jiz(sRN;-xDwp&RETskqSbx6j7)U|Kps zmkU=z!lS{&u1ifXk`N%zk9sqsd#5vNv9sD-=9Lw)oXa$~5t@WwmRs@v(DjvJQH5={ zib1!4f`D{0hzQaOB9cRQN_RI5poD;Q3_WyrN+XCc)X*K$okI^ZbH?|3zjK{G=Lf%l zxn}QY@Aa&E-RoY@z2A`S0q0ZOj=AjMg{2Da|GBtEweISxqx7(Ui89TYHyM*?aPZ*5 zPDFQwCp7>I%l_bT-1Eo(`|jhAJ5yU=2GIGaFb=EtBV>OKwCbCvFl%9q^_cmFC5>j% z)NlKbrwPY@H^Q7d40|kR?k>1P`~a9?ETDXt>$`hPYb?l1E?53wQKYh6@#TL%+_v;V zbX}u+Z=D{_W5pmh-EP5mXREreDhwAB8~;0U`2BxAm3hby6HoO2`N9?N z^FKuwR8$ZU{^yP}z0c=v!|plc?yUR7PiR^L5X;^U@+yr0tI^;uiXQpiu?wy>Ujxct3fSr28dzg$ zbdB!+LCZ6%)HzeN2%jt(`g)5`W&|_7zmsH^lr$b30uCZq5vDyGuU}!li{e9S3%hMk zvr^LcIduIUiBrC+gQZsk-J&&aH2~s>x0$%~euFR*Pg7$MNc>5Fsr~pJh5&1z>tB*&a zVVkGx#jdKb_g|BW4`v|nzU%Jq%iP+qXzIZ$hsCYK`TEy8{b0;P|6ULi^rIygBqw+! z2ouA^bMRr_7-V{k6?q}jV!74B;^zC1`OtQ(`QnU&4aC?X?SsUzK zxC`}RKNUTihNf(9QlYy;^vdyU#s=Oo*{tSfW&PP6(ciR^ylpP{Q+?dMXLQA?L_PFX z241L~)#^za=#GxvnlFZwAFpp;ctcQ!#hZ4k_hp8Ej8Xm7n~=aj_O&g;CfkTo?-I8D z7}{jhZ@fV7_H=>2O3jMN5wk`PR4o|ceCaw3FjdfJrAvCM8T3gPvrlE~e8^(lQ$efE z8+95eXN#v_+@!tyP|f46OPsaB8V)-g-mFNY!g6`?4&2A`<-ubNSdKj++i$je_3Ctd zrGE2Zn?edSpIDOBPOG|9z`sC9-1jQ3I`F`b|FAAM52QCpM4QmB#5eSf_@sL$7Cc~%N5RpCXYtdv#k6`#uH&pl)$yAg4KU)&~e=)qPC=t56 z&L)YdU2-2%vP{|8Y|1!R-2DPb9MaD6v60@{t<66y=|V5ln~&2(mAy$z-I)6AKP}lF)6S8lWWBn$V-V1^+DLo=nu8p>tYdCZA9Sb zjju$mdFyfa0S69hF2@>&s&zL$9pXNDi<15G;wwnGh>ZVShP6l z5qIfu4G4PW1T$C_#5}%hU}IMF*-&8OHc#e3h1<@kd{_3P1igxCf8@~lJVJt;TK0{J zf%sMW7{VIx$-t-O{zA_v94xT$Xvz+k}j3Y^2o?@Tlo8cQqm353irUI-7rkiK-KZ<@Gf zQ_hTY0$u7~zP2lvwfU%0hbKyZuNw#yY!MfYB>B|Eb@{|B;ga13k(O%j>t`>}0J< zeQ2qAvBgN)+w)r(==DNQE-ajghOrBEVl1~Tvi;(HV&z8&cOa^TN@^7dIcs-6o|x}M z$3l<>bUwS|V_t7B`$BVG#Gm-X+s@CU-uN3QyF1yfQl;WD#<2#Uz9P&TY3@3sO*@<5 z!W}uoMxTqfzf&9PuvXe-<+QMxJeH+blLkV>}6y%F6XXrI%in z#)(xk?l^pvp>*@JSDtOBiGZhTlzy!< zsvJDwr;Qu){GxB;Yx4#QfHpTBfDoOTb3Tk*qeo7=uSNiNjyr};t%`!;nQgNq5m*+! zeyptq1Yq%pl^b{aLY>@@pVu3f44HP8hUw;y6n(GvSYpL5zZ3o$5wVNHpsNgw}5|D#%;^v2?u$7|0V^t=sTH?@9h8yG8T{*6S)X*{^V; zuh1Y~1u%E=M1oodh0L2K>upS+^UNS^v;S~ay_bK$QNOGE(TpY?=pLe`r^k8sVEF`v zxc2n9{KbnrwoJqv?v>%#P;b<3UF*M3PKEWo2OR#-G5Nmezx!;_RSi2FL+pdk{=>dh z1;IzQxi*tUxz%h+nPk^CH^#_W!0?lq(A{11b+u&qlz@{;o%Rk~Xj+@bjD=Ic z9tRBy5%Ddq#Q)Qj* zt@Vjh&}uGv@s<`X_ryf#k?xZuVpruH_2QUw1@+jKHlS0RJx~Hw@baCr$}ys6Cjm1H zb({+Ezj7HrHZsbBm)S4XjJr3V+t8fG5A=Q@P9tD>giV;#b-(xUcG(HVws}!l4SL7$d6z zivo1>fGzC@KiW|?Y6{sf(~H^e1Mi2>gUQ;4Hs7q>g#{g!o^_T8-t6iZ9We9Iw;l27 z*7{o{o8J7Z!UhW7w=NdGY2k$qM?FY1ZS_HpW)xn9x)H z(vkMBy#I25lvoYLbp3_*Wd-%9NKXQ7f1x+SkZ8cI#7mPQPjnyoj`rddC0u>{X`{V$<2G@^Vz?5{h*c9%- zMG(f3WAPXA0KcG3b!PK0k!JC}xq+vZxxoKsSb5(6o@adc=~2|v&;57Og?!bfyNJSY zx?~w_dYq1GBp~x|vwf9S^Ln`=$ynEd%$&1*@bDabgFPw{X%Ss#qA4*$@S6VQG!^<% z_m%AEVM?HVM=wF*ojBz~R?QM7P@Hygw*P*fRiV-H7h#X9RO?UR$(=zaqJ#eMJqhq_ z?GMFA4Z& zAtw@fTa7YgRZ25I`25NEb(5O-RL-wQn5PrfON9P*vH}1oW*FHRT#sP>vz&ldP~b~W z4E<29t_GdYx~XUz+VAg&+mUMYVwOi?mj`@5Qm@Ho@)KoelM3iE3SDs_?(|O|P{b^y zp~&Px;_f{L*)%wndNJIz`#+^+mUV`xShqPEh2;0#^cHs8R{X7cfpz6~9auf#g>l|- z5|V603o_gF>Qp4y2FbOXfPGnMS2!lIE&ewHt=sq^W(=ZecPhh>2km`I@8VR~Kx#y@ z(YWiwEh*WhMkRdL5Pr2*Ci8}|1^9W6xCeEc-r_?q3aUVAK+aQ9_fe+O8UY!j7G677 zZD{0)ijX;d*FmCYcF&mGO8;=nU70FVp>}n46aDhPyqr7Y*&$IUK)fXC1X6JSJM>Td zfm7xeu6O77=MIsYS+NTaNb7P@g$z7RMDz4H7#nTwGPAhgV|?B@<{JML5uBc!){ zM2S9_?TW{yzsUeOL`m4V#X{S2hbBAxglsTY$-$wat#2OmsTu_*PDA;Vj1g{|YT2AaIK zPigcUIL`?Ou7#R_cI;(jp0HpPaLManaiw%GZ{*1S(+0EC5-mglcY{Mtt z(=20eJX!qtkhOXwa762Fw>@f~3bSU*588Z1+rB&1#&o^VFbO~f$M z3SUHp^!h{Av+Zq=vFy20(62N%Eh{-&vJZZb$A;OovP;>*JTzrXoXqG0Z5oIoA#&2 z{4e61$17Vo-1V8N~RP;JnOsO|Nx=liAFUip7 z-{_%kFh%mpYI%Wg5j5<%%TNPB?~tD!qS`U-QmC75`a}M{!Sq~@=WbNPf|qO_TbQa^ z$mf2X?eN_lkn=!Wrz9BQG}lVw^eSSeckj+-T!gK%K0-snazD2dEnOV_WpgW^bDAq) zW6>DwCyA63cHR8`gZee=ey>z|=yD}fI|{Qny?2DUy0^72R|R$DBph2mEwow18i<;@ z4oC=)|HmIF%o%s=x%bl0;a_yJe%L>c(#=1eC(F7`1~XegblnIDG~6C;9V2e`GU&)T z0=amd$ZGPZ`k$aq2I6w15BVf-$AK1Gk($Y2UG4)Wi#PL=0{))6V=L~tZes!hAa?jp z2P-jpBVOgVi=14<{YHFOS|$2)j-o-|J!iOL6RQ%m6uBNl)d-K|F3~0@ zFhT+@ld(RHDAeD}gWSF_$pglToi=xUm#ECA;JOaDgA3Ap_gc9IZ6}^bI|&o|uE3UO zsb9LmvLJi`&x}h#rdM+zs72u6EBtLh9Kior;rMSdYQ=M>@*E(E%0(WQvSni;TYhLa zRBxdk-3^(=iqTOgJxC;Z0w9UI5FDJTeZh<=PjqdLo?8CN4va3T(j{_qK(N^ujIDss zzs7}=TW$6ns7nDh@1{Y`=cjIU$lv^vm(XQbRpc)<$?6EPCZv(D_X6Q@ITJPCcrA)= zZ_ecVrd;r$;4jW7B9tak<_dRn12R8r6k0F4)skggUMEI7EZ|`@f+r%^`&H1jZvFd6 zQ(dKh3vP_hZ-I4f4QeZm`f7y(Mz&~VW{0HEYF6T}=;I{MOYG08%b#3thKY0oHlOIK zUj4W&a{V@;UpVAt9!HV=vQLI^1eWSD6;F(fgyPWUuzMeH! za~ySgR5q_3mf`5IFiUS<>~b+Ik$7Yo-|lk?v($^{8d$aoMQ1JT?^q&;>*)_XSByFt z{YelK^G8|G2Z>>~4(3ur^a~Cpvl{qUXf4m|cIP9_gjK1hZ(9vp1)p>D-Hu>P=$1Ho zUhXN}0KYP|KXGeH66EJ&Cyk z@)WNi3)WY$GCOTurR`1!-pi4)X~XX%iIiZ%5=$I+2%(N0{y=bYDMJv(yqAXedF*{u zr{p1<2mZle1TEWUesS~X*y?xJ$%xf?fIg)3r89kJSTsT~C84TNZK>tselur+dbl$5 z?5Mxcewsn}=epEsfKhH~Z(DU6;Wj{ozWa+ZTCEcil4U->z(4=iuQ*`Y+(g|*xUMju z1AT<7bBb?ie*3z4Sz^)fJo5Z-N1twyd&_U|$nKh+(0LEE+E-*p`=&O&AVB@QTY6gIpjSVnG|kEehy0WS)ts?*H6sCrONXL9cMs9+%>BFc-v!Fo(pU+jTwbTQ(CE>b$^9$Za@u`FQkjIOF8d z=-3kk&(<@)Z5}GIDA#iTTm9&KKH7KbqN6AkJa;h^dtOuO{imU#1=(|W<9H-*JJC=& z&nL0H|J#M+!9$W7p@()bg~hhO?S=5}-!EU#(1v$^eCRMmXssc>9cE0Cnknk1T;dBD z0vI1gI`sUExK*~9FMGm+*3zwP@f;D^pY5vVHrxMYeq8KUBHe$*?{qjIYaM&TSXrcM zCOc7J1!2_I-U`q2H3(Qm_B;C8t~1{jCP?$#*E)gIlTWf7yl+Eo&VTN6#(8ZA)&(ti z{ged-s{{8}{eqqq-Dq7Ewm|$pHm`V=|NCRMPm-C)cvkl{ERxjC-jGMHOx|J@F-G4) zK&*l8uHOuL+ z&V!GHj2vwP$OAgQlrAl{SplL+Ypr?YW}31b*cDCk&=n%*Fw(pGdO$%rtY{=%ZPw9n z*RfVAG!Z2$7$td3vLefg&}21Q`xUX=%zNiwyR;2viRzr76Wo2mx&zC~7cn)RklD|b z4&RespjfzEu#?xGD)CL`0g$$(BKeuhDio!J%g0M1o;`ob56f zpZ<-!$wY|@lV1Cw!i&N1K9>6~M>GU+Iihx*y}WBk%9IANuL~!QaccL1K{V{D~eQ+ z^B!y~98_TtQ$axv749N?I9KF?vk4npbxgWR;SJK~4Yhz(}*Hc36z>6{zWvFJWx^YAI(Ie>4UTg@gq5VPZ)30kZ z={g^We%Ah?lL5u}DR?K$al}rQPbvGxzUC=Du74F2`ZUv53zF-Trb`3oHvBA^LrD&~ zt5W-{vWlQPN(FuEBh_DDDL_v&?GdZ5xEM+?Wb+jMWCk+Sk^_1;D#vi072!(Px(#od zuJpdd<2NI9y#a%*Rf?l~Ln-F%4lI0UWq)NKg+3^aY&%DzW^ai1AVUWNa4xM9#`7KA zTGHDD zxpW{G>K|`I2MT`qq}K-a_{;DeA~4jo#afB=kxRgXoXI_uJMw#|8}_np+MD_dH)k#W z!%N+87OX_jqq~V8&8u;+mbCz%DeI}!@V-nL@-pq}D*tVFDQ=VXrjbxAejBnj%+2*==DYcY{k`Lh>_>wf7?nRm z2Xk7wTLuZNw%J)3ldS<>`K>f`b9aXa&@kIv_XBOWyZWF)$%}U8d{-CX6HUjlg-0Ju zzHo4GC4a-9tlfW6Rv&}1;%+IFyf>LE>9<7}WUj{Hj<;F|T_Q*dY60(@dw$XDd>;Y0 zxY6?GTd~ws^3)o(prbZWym18?Il1+={>j8RQ-4YP>34oL{}wg2qZRLfrs4Ze^ld=( zH`X~710hA7;&($1$f5c~2&v@Vr$Om5e6@hi76-e<(W7+oROjIt&<}6+{aEd z41Bow<+e9&|63yhfrm+H5CHH&NhdAM9s^o7_H) zln(Wh4J%xIwJP@KxwWo$6Jx81j~43H!yF@HBJ+4@+jdCb><>{k5(dkuhQysHKCTev z@KfIkma@;qsRmfdjB8VcQAEzPNj-=zLsn{qiTnOGL;{ZwLUCrRtl~1t!54$SR^H8R zT{tq-{q*MvqxSVGsQM83JstRCNK9^L63y(yaAV>`S=9r<1unVqQ>5-bd7XI;9Mog5 zeF-OcvyQjaWUb~*2s&-{$k&GwQAh-F=R4d8QWA;l|f6WfvZ6hnerr7z%O zwO(M}A?gsUH)LC+iEbV5@czz=Bu^Dyz8C)x#dxjz@ zc@+ssgcRpw>(gK7L2j zN3H11+&7FD!+Ts^azHk*m|UUu)zf#Vm)A|~OsqV8jcVYeAH+9FB>a>l3~@ z#xwq+E9y0ilE@`PPt%Zgr)e>!)yi94%Yv*D{KxORb+DSqn5P1M(%rt*?3BDmpj`GS z3O>P9@NA3kAtG%T1T6GQqq8kRO~D$N{*}-D-Sj~cvsg+&7Le&gWMy-97>FnT4&I}; zW~1nhwPt;4Lw(`b0+c}o^)qB0n0kg~Y_n6;D8zwmPieqpv!zB<10 z;Q78nG+oazO*W9Xg6arG%2wb0wY_95FLH@Mww?&%e1L(3snZU781ga(&$) z^hWze&7_bOTeG@;*x97(*92FK-bZvrNUtI6_Wi9y<#tAA`HC*+_Lj=`?#xQD9)B4y z9Fw#Ep}}DXaDE>VE5RUEqMghT;LTw00lI|s^XuUHbDW@{Bixde$f*=y=DQEq*Dnf= z2fZl4++^9Emo`)1$8SHfmd^$#L}v)hM4o;1%I@M;fa>mWGVs;HHF1I?_#b>)4*E20 zc3d}xulSVkIX4?yM@NA5N@lDLsvo~$@@9w_XrOg|RU}M5TKN4Gr?$s0Ww?3j8?+ny zxOjF&WeGo!|C;=6GfX9f3zvYP05>+4iWq6IiP_8)D1aQ9J154WAaZio%!I^*%`)ef ze7|vg#T$n8#W$7-okWf7Xr>b0&cA1oZdwj(tgNNF7yB1BQt$Kc)xDjz?e*@r$asjc z$O)eazVF_Dj7Mf8CbrMui+a*WXjSbP&=99x_PT-q1kZZm>U9$rzI*a5FoPo1IXAf+ ztPZCfvG7qheMEonGW3*mr7(uX+I&LX%X5GnPbS-ZyN|LdgB*h&jN2h^EQeFVFL(4g z`CcQrXJ=uM9o{P5bCPQFAt>q@9E7=3DA<}wVNGM18(Ao*5S@#r1%9Ct8emG zEKOh@6sD*OOgs_yyB_nZD*F?Fy0s{Dh|#hJjD zjiq`1yr+-f`MqQ3tewTxd{D=*{e*!?^*4?$16H8%@(W4uJB=6{YArY1+qT)1@Yv$} zkNN)xfr@;cMsv7H!@F+l; zZUL1Ca|ECGs*F;>51MSfCBt@Wa|Z^L=VkI%^PiD|jna$;w-H>$1}s*ZEG$-a_0{9^ zT{_ZptH6m_JzSz_H>bwp-<|k{Mo~A8Cp>SMQVb) zN^b8Rl}*%^>mw*VzdsS=%BM?SC%atIFDJ+sz3(41B%1DJeDrp&KN*IUuuP~?AT5hR zhx|5mwAH?YaF1qda1++5t+r*I&b&6vwmM$m+Vj@eH*wt`B-$qxkjD9X9CvjB)MNc~ zj!%*1ZxzevP%gpQEW8xW$fz2r;p|cj`gKAcW&dt3R4)rFn`$PeCfg`;LLsAN z{Wt2ZwY`!knp6v@J2C@-puZg z_lSaRb^QcC3!ycN(A|L_y-7U#D(Z<=8S&aV#lxa^Gm`E+m+8Z0LUj_Fj%vD&ZUgj0 z$b8nTsR`>ZW?$Oo%!VZGfhb6c?HO6u;ukRm`a4zg84(D^|40uxeS9=`RqpE>f8y2D@lC?;Cc@w+{Bojt z>tztCVE@;&%|UhKSf+SFjaOXHgtjr)itaFv^&2loRnHpi<&#-1*iR$hH49R;+qdg| z${C;~Zng|^GP2O{OZ}3`0NO$}O2?f^AIL<%o8;SB=9q5}aOUE>*EX=>G8U<)17;VC zqlW34Z&tFEkxwrsuYAmouI=`=N?Ty@3%Doi_b-ZoGDyiWaN~4S<4&Q&bnJT5qhL9g zh!+NQSmaMiRE2U>FH>nOJGu+Jt~)OV4*-*or0H@>20rgEl!jl0s(L{C={>V#o`2I1 z(QjYJ!?+EOSf0V0GIQbkz1BZ?#Hauc=ka-)40!=C;leWh?SlkuYD*oVw%gb;OflF&|l?#Y+GDnT>Wt3 zlN+7lJGUEY>Ag^J68%^OiDh9;`o2&J@Ia8098`2>G0nfd;$Ye)9E`hI04joCl~I%z zv~`x0Sg-K#Cx0|K|C^J`7;_TOcp#|#H<;nuZ*-OoKVm}|GFD6vn~f|ZX1RH9^O#k< z^`fY7l{@7t10`7TCHiCbn1kN8FJ?nckdjZlLj-+?tl`HJM&$s%t742ZXy_=R{k@4AneDrN zRa_l6H7!X}C+fkzm#`0SCC0@Vo!P0T6T^(YlO(%*?~DbB7*iZhn;IO^7Zg9CcLie!s>&Ue(1csad6KbTVxbf*hl)Uk<2$3S``8e@k%rRa2u59 zkCp#Ea$P@_@FS;!I)FH0x(h6}Kthk1KU#%`Cq+};1_o`_i+X8hy%JY;Zd(jF-A*O> zTT&{3m8g}Bm=vGRPSQjsUl1NC8kMu0hBWL)cZbC5nqAfaD;xUY#2)M`msI3XPlqnLAF=bEQFmu zk&H4?-S?JV4c<406Wvn5Vb+<{09PW2R>SY{KV-xZ?pE*^u zTq$V-MA0Wx=>c}C-B}Oo?$74?L+4nfMQ2M0^?wwrHs#SFNK_ym&jfSlwo_&wg;6P z^xDcuZyaUv90zYWDBKl?6~!8;+9rm`_j5MM-M0 z%|S!0_f61gkvUc=>pt(oD7!caI@%+HzdPFGwT;W-pvJsf#o}4APIqZe^h?a~BL6o- z@I?gGr7OF|<%>!6SYTeI9YgwhWpu8xb37QIv~KdsQO+Ct)J z+Di#kH@Hy5r#r_=LaPN7jbYs(T#{~gKM10JFWTNPuLvqtRaNm{@fwq7>Qv~&%~FiE zT{h|8Di!sAETMgCKtrE;cm9l8@Js42jpUUoPYiGPZ6Kh>=4Oad(jb#ls-1nc_);pQ zD`YlixkohI2Jg(4qbF}TJ{(|4SL~Ee_lAd2hKP7pk0BPrENig8V-&k*%u*ZP_|
jU^O5}kc^+*^a)qQNFxB<=rZ0bEC^e25)7$4=CqIKhQC zy75q?PMzAaw5ttM=2|Y9e~;JfQ5cv$u+bAQqB$&N8OX=gyewgAFTNR&sA0ocj;Q?(muK#dF8!jhuYQ{ZN32K?kzdH%AlFquq@>2Z zWhOi3`+&R2O~G&pJhE(yceGTdp-qveQkgo3y{69Zmef5*HNVut8Z#AN=vmokd7Li` z6p;9FywG!t-wq9z7Ox#+7J=i);MHn>yffy%kGIbWqUxBXbu)FxdsjIZj=>`>doyP& z%-b@8Gba@{b~^rPlXja2;qH2j+e+pmb6`9Il5%$mXKckm^JbD=?cm`HS149KjO1fc z4#|ypwr0((R7jDkK~VWI8ltk)&xXqSyrZ3&sB|EGm1*peO-9WA^~06Qgniw5VG=$o zoyKF1^8y+GsxtY+s=ZuN+qkGY2rdQIl2+z@S2l&qqe`a9z9+4lj6>QVSrqtapqp4`#=PGKS zo=R)T`Q{FR;9U6)*HG&w@+;cvvzRW|riuz4ojk>+FADMALd{a`SfTu`&_zNFeClNl7`JVY_(Cg(fwbW)(@WW11tjDaLboe-mNe}tt zpMSwLMtJengK@#?W^0fnA6|q{_06!=lM=g6jqnY0O8nJh zR?GKmd^kG6LBjD*+hPpb?c?oT&g<28`{|Q3hXBfcA41-~;FN|mbhRZmo#*le<7)Th zD!wbg1^T+%&!&Ab+c00Yy?KdJTt8)dsWvoWj=wk^{=iF>5ysl*78*lDq zh{cF1zAwjj&WLYU(cGv=^GS-=zPa1YTwN5ofh%z%yS+Q@h*7@=^KtFF?Whin-c=jF z_86P>Uy~sN`E-0)lOkUBi`Khoir#8%Tuow!VCOBFNpacH!4k?9S(tyu@p3fLuNpt4WWtm|w?H zyjV*^DH<^Lw6c2)L^gmEqMIupvvP0VX#IG5tq;*T{oTW?kXSk=54isl`}$BgtoN)2 z=li4)!}&bhZ;88SyW?@KPdlWz4PGm~n1}XA5Bf3?t)HX`7tK!@dFR+Lh>bgQ4)g*$ z$>qJf(;*ft0=UJP!f7rjsPPFd9ZD#KN{BAlP{KtRSnW@9GdL#f&$pFyigSL;!6Vt= zrG(ecrE)BbB9U|Hk&Y-VZNMUTlqC%9#ZZ&s8`+TG(A>Lxnm8vW3J8{>lmrFbaz}nQtU! ziLg>Hf|3Q};%mMmAOyH_3~>FSQlOkT@>)_}TU(pj=rka0w$X2g(FrcBOl$dyolL0W zdg!VMOK54Je-8VT(ycp^vgYNG2xU5@-p2YF=cd%1OwMcWAC_4|7&vB%?clOb-QydkCwT$s+;Ynr9koO zaHTE-Y8JjVK(w7;MbT42nt`HGh$x#`L6#(y@;xkPTB-6k^W`^wjJV?=a7u*L#Ac#g z@GGTeE?UM3aeY)A-z%F~3}!o;YgF>3=SRNQN$M`pk9AZ#{d3uQc1NIhJHm-agj;0n zX}>1j;Cd_XyU{4L)l>**s_9_IR6K(auV$PNqvF?1K%%A@AxYF*; z6S3$k#LBwC=1pbxD$=r=>vNiCFB{C^Q9&{Hp5pt4$^z`#77=ls040RLAIV zJ&WOOb}VP}K3Tj*NNsQM9N=i=XSP(c){7$C4?muzx)b{vhS-^ob3~kS0486McJ>Qw z@w`z=nrDf6_O^BFx4tr?UlgU#$;ch9Gm5XH2j?21h6a6TN(QyHq!(bhz1MrT zDW)egbiiH$85vI|mDC5{IzZ?;vp1S#bUg3;5n-1!_zm^wpw4w4d9N3~sAQTohnp9@ zXJ%;Ity|%-$del{nHZc^KL88sHbq&xNB}hT8r`xog3&jy3r!p5V6N#`fSO(m$ZZhLnl+3?I(LaY7LezDRUBv6Sz4LSD5xrn# zaZRgfgRHkDJ(pNRhC*;~a6+F8HfzXcor}Wx(=XzYgs^GbGo$?wTtvh#y-T5u-(cMwL-jTYEd;%{Q3qI z3U$9ey0$h_JjYS|xMIjCm~W$ICV%dNfndz_NUc_>P6eS+2ms+>#sOs}>|nZ>tpi?F zw@=96nu8^@JPFZ|-Zzk$; zI3o!{OaGCwh@X#|EE*IE!yJ$lNPn+i4oe`^pL2}p{yn9I%1q8yV*Qbf+`2D?Md>sg zxM>s9@bLL;U4r+583uO_dv5Xf@`=xZKcb%tXBH`DagQ{nbQj2ijijbr<5Q~d(y8A% zGB19aEyk!lNmqfN=$-+(j^;o7>+131OUrX&jrX(B37S7fy6w{6UB)`pIV#W%lw3W# zA_|r>b&uPz|0nVeB`)RL2C|7e@o9VTx4rsvsB0ca0xHQCQZ7cyOZIgZQSiur&!O}$ z81>~z>QCP-w!k5N8@np{SWJ2(z;8&}H#h>nWnyl@ZnHo?z?g5# z<(Q6-A8*!xov8c}hS6;4CSs(a7)>F>CtazCMhHRpjLwWTou{1Y)AJXM#nG$Zrkcvm zPkmx>3>%C?`1qB2rKl3SaAtdLRBv9%4|Os(M^Vov;3-lgmSnG=bh0o0CE>?d3z8Q1 z6>R?K!^SmE-{fucpSx+d=kVasv)`rBaDH%Dyf8Fgg-%sAD23GfmZK|o4h~I|DTZeqyx5hYXy^PcL&Pk7vT4o* z$@LA!^?P+|<$LVp(U{QP_Km#(d@i}O-t;_jg{;yN>IJjSp1QcTbj=WtDF`jLF_Iqz zd4wgzve<3uicOq1YHjYXarQCwThULR+qak=oi$h(kEM9vJY(&~!SrAy?N?Ot!kX<- zY1uyKx<^a#`Se9QMPdrYz^uGZact}U>1eu+*2#+bNWN@HMhJvhyZ*c#ULU?3c$@%# zyq(>00A#NSG^o;rTQ=+?D84A*U?%&35xBR#x}}#szP@DPw`+WT5fQjwa_66qL+&Bc zwmz50>Ah;4v*Gu9N1L5jhH!C&>QF7)S3nAT9@$l->uL9gw_Gqkxucu?jJ~Pu6hXD; zlSba3dAV)A(%1fNjwZQJ#h*9Op&fYi5Q7f+I68ht3+$rNRTv79A3<3!fsryy{->?v z_#B@s)p=g`1Xe&Ng*(E9ZD?Sywb#*lHS?^8g*5e4_$6EXB#`lbv@bQvHN)8Z?F|Im zE3vp3tg&17eY5OFsxRURAn;IK3+Eiv@Ar`%zZS~~!cCfbu{WEsl3ps7YC&-`1qJMt z$CG^B|+BRxnb*oEl5r} zV(;btSZzne5H%Kgfd5|+)5a}n0?KDDcg|O`7q?c%0}hv=(m!jhXq17HuOmS7b($lb zGi^PtiSPPDDFbR#J#jt^B~()li5O*`lT{k)*I|FE`$_{KN!_(ES)9k!@l(5M;v^o& zu*?&pG`p;0z5W4yGy6$iie_?U+R&IbHu(YU}yNM2LyM6OX7i6Ekj11=R|u$ ze>~C{Z;T|db*C~C3oDnA1MrXpd%FG0)P=1QQfdXGy`kA6(qE?>gTuF0ZCBVRsd{s$$cu^{_QAri@oQF^Kz{~|VN>RtV&!)eS*!($l zBe6g5tfSAS8b_%fu*daQp%c+IOL;vR;3|q~bY->Gi2_kPAnCo)ve*H$uHPNfS&xk4 z7Q6ajiP@hoLTP-xp3N!+iCq{kc*=LA9LNk$7k*}X9xsG`Jv{~;)o|RG zy`-yRYp(uSGzo1%4?1WIY1;}TS=al&9#U*hS)od44O@UR?kdLHs6j|yil#t#|aix(<^^@Y$!Yp9EZL>Dh3x3%P8H)On zXo2Ue-~IP}6=;-s?qk(p7`w2Bqd{8x0ecrVIWddMpFV<1joy_?;q0&%5s`=TIeZU4 zRW3B{9waM7HN^I=V0<%j#HDg_kz3E4z8aj+N z55^q+npLs58yF~gcBpt8BYqK#Ih7kDcXLzBNJ^ZnsS=OF0b;UN%8*;hn z28yD`9UP7?FZX7}gNvH)uRIYD4V3VBf(6(Ub=@RxqZe8|_1=1JTM3yA7zxasA^4AEha&zCTR>p;r`FdGBISWy-%ukds-Zv_L0Nz2a}*pw814QkV_QF7 zq9EaysVJcX2-oytZ9%`;T?Jd0 zJFy+Qm|D+PXUkcH-ZR{F4=xQ-=Cv@{?2}EWqXiD`+Lrt4Wz1KYqA1At(mN}?ttRE~;BPQ}CekdqyWD5;ncL10tX0Rk+6EG5wE)cjr-k?uAHupvGuG7z6+CF*HL-3~dA&FB! zK;X73q=%-cL@)1{RJE3WDpu3&w2oLUMEL2-%VlaoqRQf1GEaH04$TaZzQk8GG71C$;u{GpqMn=al*PF=8;R9cqf+QTX2 z*$n=|iv0YhS6Lq&Krmj0_!Msu$;=ZALmlCe_{*Y(;IDs>)$ca&x`WdaY115Vs7-sG z5HLi|`F)Lr0F~sJ!`w~A*xyftfPr^ayurn2 z=J?$K#cNwFSn0WM+a2wJ{aL0(jfW~bi=}W2>W*CGS2s$vpz8FoI9(&IL-}_ub+1B_ zr)Hkf&N@ga@A&U%4E^HyZ(CGw{L8o2W7S!G$?RWMh@qiuwvJv9TC9r>lpdWD!SXyM z4pFmAVl>harH2)_aCHpb++})lbCxQKW{;MkhmHCe1SVo!2cF+Zj1-!y37j8n z$dCk2h9s5LY^eyl;I8JMmCNO~}fYQRpt7nxrvY4dSZy*g>TU9vmGgF0dskI!K%M za73DK+6EYx#I&_Me)&+Zl3(47oF|xF%qe`Zu}`e1pgUS#+1Y;MsshY(NE_T%0 zmjYEu5e-+zD^f90zL~6SY}5OVt}0GFFeYQ^4A`^`<7YLHAONhnBGx~0H}||4jDG_V zaRTG9h6VNWyEyh=vX>J&iU72TZoOQeJNJ#K=^fExx=&K1%m!mGq*9pjS}yl3wm-lz zQ5+KzF8F9$(aU&Uz>yGee|o(UwP)M$?#0V(m0zE<>a)Swa*a^{xx&eOzAbTbzbPFTOYiI++H8$Z2vuS0lDOo`AVVeZ@&{7FfTDaM%#V4sTKLBHDodo?DlCKK zH!-?R*Gsa)#{HSe(Zs`rw3Z5C`bAh-SD`;@9b(yOGj`uQ>)0TMerQfvU}`h_LGh3z zL<%3py;m5RkK{Dpd7@((lxyae+A{$3vjbBAh?L=~7013B$(I9L4>;+$nNNO`rFnAV z<}Qk=P*srx;u_qz4gy^Te)>;&lq+#CGP(eYEA2~(^$?rYUlFW!ynhpV(P^eL;z-GX zYEPYcZ#hD76`oIt-KK0e`1pG0`Wp(4ULhBN&r)HxE)lVc6NV3R39pI?f~rKU z%PCxfcTb!F2-CHU(E|zc6WS^*kf_y!73F}4m*S9y`eb=+1 z5hJq@E5U~SMJ~LlC|~Yj$x+V7e0{#sfauA`U9VnqGxpX{s3NMwT)all1`d;=tESKh z;IQCvno9$GH@XU1`UfU~f@j^t4b$^B*hCz!@;rxfXl0DN&DDIK#TAl}?GXXz6ws6$!A$udtJzx@u_31z}*(psb0^y5be2~J#&K=lC z<^H{oN}V1Q&3^wu&H9errkm_yb5ibok==bOkHWi_Gve6cL{a_j9d{4+333+qeiB%> zZY3Fsu&@SkYWH~rAw$D>4|Pw|S>G600;V?Xi`=d*h`q+2ttu6bSa$%!N1gj&f=;Qd z!Y-*l&z0*GYQ2?hHQ~_+5}xX5og1K+0~<5loKxCmfnA?wy*V8Hqd;^kbKH zY()hu2q4O5dxq%>J-~vPT;io)tykPyH3DOz;(HuPU{?)&IpwsOL&pB$r@ZrL^KJ67%6=<@7-1M@lAtCOz1{Y&<@scniL?6^e5yx(LnNQCDm1JduH#_|`i zY!g~5dZ9cTQs2*(BzKTb$#hMgq0U}eg=@I+mnGeRrO}gcoBYzcZ=?)VhE!SekG3J}JY^%3?_4JLxr;?v z0@NRX1S44Wm}ozNVEjdgBMGSgpaHhfyaAS8#qKw2_W>dcr8IN(+>KayHqyQCz1kgj zGwao!tMLMc5M2KmkkwQ&Zuivd(PkvjmTu@cv zwSFSu-N$r7O3hZ9@YeE9PMYG+gaH=AYtRfj`OVa2-pdVq$%6Te{y5xQk)d5r<)S2k zAS9%OkPlxnTw~1V8L_lWJ^J;}s(wi&S*Vb%>^O0p(o(#Z&ENg5KpH5k%cPb0Yky7h zYnE^!SMT>(op90hXUuHn4wN0MIzT_S_M^(>2v&k8rwi%dzESd$8(hsC*-0t?tX#DJ z+JBI(ONoclsm1A5l(p9?y7(g1>FCQi{tTX6!I7x<6&UyJQLG3@PesIMNi6Po@JEfv zEFskKz|pi$vAG_%LX+(i`_?@)G?ecf^Gt{Hio<$FS*wfv{79q0>9kJxK!FY6K(FT= zlKJ=G={hqYb$LdAr7&h{`&n=0guRlGZvU}o{#JzeoEyl8`UNAaW&f(BO5EswN;-!` z!sm!}L`X}+o!}W-g?S#G4UBV<_Bb|Qvkz{UXc=-bG&H29p$SWeC5hdSis7q@Bw`a9 z=_%ZVk)niQ7c+!)U^v@u-0cCWPliek-$3@IgwNA?c6ghq*KSXO|` zjQY`$>zC*&Q-F~JoFvF!wfN=Ti<{AmUq9-qJI1df>J1PU5dfA%RU2UUMZrlU1cttT z3=E79l}oNGnPO;bXkOHM>tnMpA;@S3J;Co$ROyE{u+Be!HkYzc#{u&0+T0QJy1pAK z7M`wJXO}A7nZ~Ai1=FiOa*hI-RBh!;;?-^ZG7AQPmEi1KPqCf-gubGjIPIjzpetFw z;-j|km5E*$m&XT@kNE?tO7$n{ALVHTD6RnK+3dWS!C!_%j-wauAvPE~Dl^shzV+=E zTHQb-dI!K(6Sm{}P69XQp*W)wIHb>n!;e*-pa!icIUHRwtTCRLS|pvEi0xp!)-Hl% z+;ds(kJPA(oOP~Wx-PaMy})?KqIyf9az5>vE$Zre8lR6j`F4uc_%=)AK-nH4$%|W5 z+8!gMeQmzvFw?S^PbFA(&Hlvh5^YU&-8eKWv)iODeA(Zas%9X#-N_EV^NgyhldJbI zY|FcCei$|)Kh?4BWGdf-n`O};ZhWeQ#~B{b^fQh+a>E)_WgVJB%(R`oeLCKrK*e%Y z}5V||F%%p7FE*dp8NCw1&^V>$)s}< zmk&irG?FEA?c5yG@qFy*u~jq+|4G#KBHMFuuvg%LS0YCp_H_J^yTRZQ<*p~l24|)- zuZIY8tfE*^R20hj*HV3#$MKOJlQ*xgji38AGPr1_G#3p8rQ|dwY7#rW+?jyiDRsr& zvDiztm~gTa-yCLkINNI#Jt9rmV(JGcSubzf$GuDQ$;KcZcX)jmDB$f51-t$t!T0nQ z+XBlVDEK!hu-gy2Xq*7i*J2foQ0d?W%FE+0J8zPyD`?X!m~6jR5ccvHacc9hb6$TE z3)CCfVQeTxu0xFp`bbZ2z*r=qt(H~uc5_=*s4_P!w}O;c)BXJeGpRZ=A~GDdz(w_Y zwc0)5R5NoAfUwSL!knVl@&Wg|mt}HMNj?GWM?n@?u7yG?0G=z0lcSROIk4s2z-Bh4KB5FyU;BhL(%inw^)EEX0Qb8}uj6t8}7IMk0+S>DGs#<&e% zl_jSAd(BOcR$%q|w-wnd3U6aGEstMpYkT)*-jSpxEDdNn#?e0x>kkenJKP+ayCVh}p0Z6H03pJyx_OMJ1<|Np((^dGC*~?!BYX-%ixFyrl z(t^=Eo(rx^r9Lx~N_&6J4n?vYC?q8!BC;5-XSzG2OT00pDEdCp`^wc6Th%nohQ?M2NxEMMSHK+xJtg4)hPbUM!haItrtI;*LA zMfrTRw5%VoTyU361nIw&5vRYu<3UrIx}fok1$!5#+;33+K$+Oa~rK62n(B3`pr4|OrE5G43!BN z268|zp(2+ymghSI6q*^?=o<|aYm-tUC;~qSD7a|m@MiBWx9z&FWN%ozQaxlb0xVn! zowqKZW6+=*@KiY?edY>7C0kq$-vIyi$`-=hHC%sae?>27T8OgfOy( zB*%n=41j(3VhrH$O5$o-$nBix-r(wyWfm)c!Bg0a!{q>zj%(TMgwafX5hHPa;o4ez z_h=))7IbleqTkXCuPKy&nZ@*N+|+w_W!&O)iAnJxD}@j%k}NcR=q)75tR&{0R5anX31xV6I=_r7Ub zEm^>VVAmHYEgR@kU|p}+z6vJoePA3yzo>K8TemiX9m zwQ*z)S_JH>A)wAM>}HxJVWrRX5Z>?s7^44TDSnMjXexv=$y|rji)!tf-H)%*{T08Km80K-aimP*@BuObL zwl5UQK*W_xb>g;cZ8#gWopqEe5NQpbcxp8$Oh1X}8~OwFPlv&^fI=3L0j6T_CaJNW zCEM6qG;=I_`kkkr|z6PK2ks971)Kbhz>p6}+nTcVxVUFZJjLLF*x ziDLZrPO}1c3IRlH7a#~wL>*jR3r^0_64TP)7>V^^ApwK4hFgNI6W$6HLlKNBMnSBP z>xagX5|`si4eW@i+HfCC=Ow72!7Iu*R4`Xu1drejm%>zRVgjLOIM$dM8c>4;sC53- zNT4QcB8;1gnr}b6F+=20m0Z5|9fifi2cx0LvBHgCg!P6}rFdYO{Pn36?<&2uKF~1B zN(XQpWVHy(pe|9MfEVf2Pqiqoc5iC#OI8YP*#J3h!q1KT3T}@LeL=1WF>Yu^i@frBNW)PYLn*n)N5I|0qt9lIn5jT8bF8%;R zQ2}KNkfjo(Kpgk8`5zZwP`jAYi#>)yi*Grg+P=~$5T}M-#t==p(#=P(Bpq^8)8_$C zKlt+z1B2PZr?rg)0K`YhUjDt9bP2OD(NU$zg-b+r{c$jO^j1{Obv>BiVB_*)^O<_( z`&8VNYT(V3;lWb~{``!E66VdAeB{^;>)3*2qTE>P{YD~=n+1aGr^t0#di*D$YI&^d^b=jh=zg@~06}xOQeA0Q zCgX`_+ffo_S#!UI8!zmXKqMrxF$g&~rdk$Hc3^S*_0syhkYqcbqdt#%a0u%g@-<;k zBLa(Ya2KEXi-mLf?iK}K8hMFM@ze!7tPFh%DbOGmJNZWWf>Pku(1fFe$Gexko>l||Q9NT>|AmcBP=#kp;;Q%2>?`lnR(G;h@^u_iT( z-^h)$BzKZ<7z{e~k(XxJ!Pl_A2d@?}OS4@7_6K3VtC5mfh2`8Pot0=4nL{0x1 zf&cxBl^_HN17GkR#w{Fx@iO~$kv}*3k^Schf2r30`=@aX1QeyQt#oELDZtP*2=4ku z!|3XS{-=*0;)8^h9(qJg9zzBmABhh|xpjUQH2tT~|7it9%xvF;#zgiASTe!|{PXplk*K0hElfdH(Q2fH!R-t$QwT6G$#Q*otL?U3+i8-|n)KUQ9DHsEU5zcHh(hd+{!qJiKo5(NzaPp0`hOqer=$tohxHJckFBj3S-^h%?U4TWFM`cvfc`Y&v-UH;0$~^vkTBav z9^khBV+a20+lx~HPc4YC!#yGb3|$wnmftbSr~Zxv{%8tfLx5Rxx6|)e1*_kC5q-l7 zI^?528v5@SOAH3CFUkvXl#&Lf0s1wN{_F^}BmJ|N2k!6@37B<5kvTKk6tMUJlDF;*nq0|-xu8f^;bc; zpH@@ukDq#MTiLBAc!3i8zBL|ARUUBVKP#Xa({z|Ff38iKq7a}2|I(kS(|}RQ&sBk@ zG%d)IS~G4$K*0LbNr8Y>4}uWhREMUcWe5jLg#?gFi()LwKT+0ym8v{8*e7GZ`wD0M z5%5V)u+o_)>*6VY>QizF&;g+WI0soO5Wca7148Ydj^zI%iGo+;2FAy(Z>RlVq_0o` zp{f%z(57E#n?M7G@AP2j0tYt8 z9|O7y194Dg{}bW;x98W;08Yg!96ze;w@Cx;p^N4Q^WU!eS81t-fy-!y3pTo%0H22V zsea`nvX^;*?kKAe7L|%a`)k-raRTF+{U2U$WnM2z&pzSZ65y z607=k3vHbXklGdnR0G@HFZU0Jz%0|t>m&E$XWZ^p| zJK}%5)K-!pP^V&XI2mN2(iZfvWEpDn6T#8_wbUFEC|ZIzB)&eMn)H$BZCpzb7zQ!n z9H#?d5OlPYPa85%*5&cGFZ9kTw>9$L+QnPLe&{n*94f<<r6h3oTHQueqeWJ}rJC|mX*!X10l=zL|sCH(||AbhF zGP&N35>xpOM4lObS70aEWe5^ytS)(dN~Eq$2o3y(AVu)|QzP}yD~SH1+!xn}6Dv|q z1~P#!u2FUVRa84{&`jzoBg!FA|8Y(Yw)`K*IrZ(P_m#(oBi_3;zn5*L=hZG8pRTNM zAq3b&?2ss~C~J9r84qoA!@W&=xVV@JcH_Gy|8o&@5%}?ctuJ-yT@>wf08lTz|%>>>fo!0QDXc@Dq#)o*F12YrMjzf4lKF0J3?u%5nj`2Y`F;$JhvVM0su9*76w9 zocC^zq8A~gj23m2z#)-D#`Wq|6oKzrL=pIQc}6ftog4WgMg$%XZG+}3@^sh zmQSTmiCb7U?0hA&0<44!mwiaA@aff>V5=zWSQ(`nqn$Rcr zCVA%hdQU=w4Ab5}9k;<4et6EKA1*IFKpv*r-o6(Mnp_eLE7 z$oBwPp`ChWDG?b`8AcLN{1Zi($EuComO2+Apb7ntcVZ3(kEBoCs8tit($@zdE&ndj zuZF(?X60asu*iVxcn}j8i~x0eDpW9PhMzH>WfdKoFFo&l1&!%U4mvXm zOZfRuF96LU0N{_Z?27Bd^8VKzFb8*SIDZZc*EU<3NA6P&)dV|&E@UXe>Q~H|y#RTH)oYZ{tc#QyaWDHv1h=u5z6ih9J|3}Tb7@;E5SDPYEi_9=V35s28 z>&k#x4*!dB^ldI5`5v{4L!ao_4C|jOa=lRHDUIPk31=+YH2?K zJb_}SIXDrCME3uvgxY1Ari94$77la^X zi3tftO_>U~d>+mvTDGl0vJal|s*HNZO`1Nk8^>$1rzz{-lWFLC8vW^lf`b(;ENCex z$+1-%ezZ+2d`-H)y;U&o90ItQ=wq4iMN!hg8+)SJ&2UQq=@{qUWitRDfDZgC<9b^s zcwR*O(J~kF#I9Tf_2lBB5NJ6v{u2g9A)#1iaCuqhK+VJB?a{3fiud^?{H;v{QK#mH zvDpUD2CdAdow=p{DC=VWA&7k^pjk{)O^BB{_4$^njv#`%FD6ZXlY3NNzyDJeCh9Bd zRu856nZ&HDBgEx*L_)dR7+r;x-XUYly%B(8O(JD`Djqo~yW%JgozWQ(TSx~ANEr1Z z81vcdgu0plVVY>Im?1$8!9$wjkb^rte6nFobm6b6M3g8yw7WW`$Ks{pnqTdN=i}MZ zC}$KUpm0a-8S7bbzh4DE3y*Y*Q45RjYOrnsa_oop0}y z-EGfsDgi{nvP%X|rN_HV(QE`UQPCfMk1%@~#>0ENaRu%}I1Q6uB#hE8mL{FRW65@M%MDU_K z{6|&$r;9DYHsx;~LvZQ9cc7~l4LNyW`3)T*NL>bj2~y0kUK7$&`-SQOBJE2*Lv*vL zFK7U%0y$`^RADpC^ZKyJG}~)*kH6Yq#D6d4bp|vM&fxC;v~#Wna~83}9a&Z<1dk*yTBxBmB166W$iw{h zUM$s|88hxhef}jT*;aJ^ywnjR)n9&m{KJ(iH0(fZFHa6>icNmAs-3itSVo2`W)oTX zWz{fZQ)LE$>)b8*vbOfKH@HLDO7>-OQ*IIYm_c^t1yq#h1zHu|!$^l^$?-x*b5!d> zV-a-DSV?7t+FrEQul$h_=_)fIGpX66?Ui$VJsW-M3iSNJK#=K+CXjS}zSV|lK_nWz1x zdpOZy9@keXeWHsW04&;py-+4O;GH|p01WVDS1JCFQjhQ!`Z<}UE}`qm*t~!+DyQ>e zg1e3DWq_B)dS|`!sZ9g9q2FTr>H4~$T%}@2cX`z{)^1GgMr6kszmw`2e=CHaIg?RT zn>jPI>JwxSl6VlYJixtZ(FgjZH%wz_FAIb`=K;JA1w%vh+M4yIMVq1@>3Nz`4;yxy zC*!1EvbVm>Mb71+Q7kc$$rUUYy}IsuDtAw<9CsqOO(e{NA)DDfv0k>H7+E!`Gwa3u~&~z z$%KbjI@I7{*;4A>rEe^+Ck5eIPXqhy`u4g+j|C&8-e-M)+AIlBn@L7!vs%xz^N_}q z=Wv}^tt)1xf2WUI&z3C|ZUjkkX%~>(4KB^GQtFY^a5(Ys?uszwbXq*pfrtuYstW(j zm}-vkmKC)=BP`%*v=GoOoGOICeXwl!ZQ_r@VxEdFcAZ-7KFwESLocBbFUs=AOPi)7 zE&oDI2Gw1N17wMhri`|3%|!=e4)xQYF8 zi$)RE@%GHvL%%B)l;fFF?CZMXOvUiv00|s*1qbxK8XA!gWIF71+xE1TilJ*uJscjx z8P5v{DKqR1cZz^5VKd%$Bwdn=tvSczdwa#Qz`%>2QJi68BNmau5U(o*Gs7ihYA-Z z>Ioy(rvL$^4Car09A_|OoL`UWax!lkZdlxiR@IR!-wYaOb@roc2T^#2S@U&lXi*i!*rL|JZBLGe0PDJu*>kmpm$!`WaF8$fo8p zp8SRLe176b>x;&UD=siip>NI{+kIz1Ei4LUX-y#5rixX&spZWbZcD7f&Ax)v2%R)4 z$WMY%s6)3U{62fq_Vj%B$JTUnn(AC#uW1_A$h#yU9xEc(mjVd;6$l)@wLz4O29rjv zeTq{taYct>Pm{}S%cb*)+pHT4Nmg&KM&rDK+RD`mYw`>>*S96tDn_|QQwg-9P5E=V zd#3pooBsU6F18l4S-eClnX4{l%7LnEhE zbd<9n7t~%5=@tvkMGj3OfWXvFpcpJ-DCcz%#!IO71@ZI!B`rxf&=w0IP02CAjS&^^ zRaE0BWoRw_D3VGs6U_0uZA-j3UX*f6beGCj{Xxp$V`38cI>+aVrLpyM7Up=(Ytykz z4i1&@nCy(RN?v}Td%)X^>oqT9yWcRGmBin1;FgN2pcW9n%15?9M*Y>FOS0Xa-k%@y6z4Tf*(cDYcZ=I8>GEucWu74( z&|2qP4HBpi&CU6aj@|4;P-E@#V4mG)BoL%VUdnJb6abXQ$h+>{no>^6;d7ebi&@{? z+zfoF;O6elLA4qYi(?E$OLK#=>mU#&uM|j z$!)7^uD^K*4~vd-hi(U&nXIp`lP>vq;Na$$5NAvoS!I-znC3a#;rgV;#-<9+)<<;a zr#?TsyStAk(WyK4LMtHiDF&;()%qsOBPcetC*e_z>R z3_4t}>hv|eo;Wft z#wWt~`X?11L+Lc3lJOFEcCcr<+?Hzuff#~Lihg3#EnrRots>xIbik#TKc>L z@z#xa=lI2=a}f9T+vULL-h*z=%_AsPmvfxq49@e&Le)9?JD~-9F~ekETovsrOkbu7+&e(kTM3nt$lZUF6jX8E^Fj-KQ@} zB~>WLS#vp`vCE{fCp|4)l=QY-#*wXhWW7Yfr7n1RO+>2g0zGjfp*QR(m9ukai9p6| zK3>k<{^m?YgWwnT+B5$3iYrq)u}kMvm6{rVseS~l?{i~-iFAgLcnra$8bb_2)S%J& znqUdz>%DBxUvV3&CE|K(*fjUPNRGdFa+#dH4i&!E`cs!AdJWiLjc{v{5{A-0*ef7^ z4ec<@rfQQi?#g{Sb6olUJ&Lja8?3^XYC7vF{;fU;gu%x`5FmI;tbZUj-};yntIDK| zx428JFhV<1y`C zSW^+35%h&WX8k-VGlzduPd~nzR;*ZYlM?DBXC0=}@@>0h4wJyq%nql3$uKj6zh2z< zEf&L8$!I<;^IFsDNDIvj*ZDR6Xr`Lb=y^}ru;pvs`29N?o&dG}HYWN@D~9(R&_k97 zV|5^omubMp`tV&>wtwIdUxobqJ7eQj#e&I!R{s=Ue(nt@iX7Qd*Bq&4pq>86VXw9n z4)%L}!!n3~b?qgcU6bIW=jzh$jXQ4T&g<>F==$S=<~b7=eU`T4MY~dUdC)-Tz%tFW zWO_YmLc(nJ{j6*A!S$kVV|8biUq!JbYk1P`f4P5DRKiM8N8x)QmdW5&X`A@8K3glfIFCW#_!+cEWJ|kHyTi0s{Ems-e7U&skVvh2?E45ObXn3h##r!* z&o2h|JG**pN^D8p*SGL|+)l6*6ch>(Fq&I6AM=yPpT@5)rf*oz8l?Jdoc1?qIKm>$ z`rjKQeTcP-`ZktDXnmjBr&|F914drtMS=PRot99S3?Th}G61Cb5I=%<^;_!c*lj*QLe$F z*Wy&{n#N)^k3pqUInK@WxyjmhvSDzNnv_(rRo1slkNzIzkm`|G^^>B+O`;Q4gtvWz z1pUS6ol8^i!JIS^6RL@ciKJev^#Y%;+=ZLJdf6eZC@ocVPGSerGq$r9LR)J4*01jl zLKnMnWQw&_no#Nw!-jZ|DTl?H|2YYU5BZ3Sb z3Nl_GtffZ~#g(hX#h#Hg*bfu2M*TV;|K&~Y!Zw1X%9;pc!76l}|712RW*$Nxc_Wd! zj);IVyFP+asncok2w$$mf!v_ODcQZjWmLE=%J);slih8< z#lg09FN&kx4xW^Lz7b!?hDc~P9epXRz9^6R*~eSRC6ei60WS{Gr;aO%`74`nEcRjkulgn zzQ09qR7O6u+2X%c5#Q-aU1UlrVM&KG`Gm2aO7xA?r+AQq!CyBIUN;=~UVzb;WTI|2 z`(p>@@uR?*16*zeC+VL41nWY|7xltaMruB^w`o9gd1H43vh4A1kSH+i#FZUO)`~Gj z31kwMfd_GVGV#3Hl1dw_FN&s9>yA|dfAl1L`kR4272zjLpdBht!lv7vAkvz89#8nVVlDF$Gz@CYIJ$7{{+v&*RH0#kJF`MW z_Z;-Vjuc{M3{v>=?mKKKT`q+?4v}oJh$&$6`rGu1%-OV~`R>iyZBrnB&wcM0r+}DIv1SB0^ ziFfJxLt$%9`Bpc5KAO4IHm{kaZ$1+<6Iwn)gW?BV-pyQ`&$j! zNl&b}&h)Jky^fNXuFDi}{2rxV+#{!mOj0;hay zI&T;iy%+txQSE`7bI@5>%Nj0%1deS3^%F_}JB7q3V5dOaKQXtud}4FAw)4w|!dRic z4@E-BGx^Mc;Fo$1s|<^pD+5Ikp~Zr*5=2Gu9oK3D&19*>B&G1?c&MCAcP|1?5o(~! z-CjULJgYlzqt&t^QPpd4F)@Ws-51o`ijmm;FrFw+WHJw@DdT8kymFJKJ|c{aLoxE+ zeY1Lm5|*mf)8gj+uirM6)aub$Yz<=Kc&e{nHm+gl*yxU!nQ`{>>_$BCwoM*&=wZN1QheQe;h zg|cZH!k5#NSfUG@)-XjgA8f7l6#t|$-~PQI>#bQgR#WMj`aL6duk%u}3CbG`P|}_k zb)dJvgelRvKXKStJyV%TKl0fZ@z2>#ny-F zdQU|92^9qN-d6|xfkC1K4-b!p%qKs-iU^bMzGLgm5(Bn=6xiH#CjpO0j-ipExeUHG z7|9CJ@Rn3jz`>-6aEOWKyxY}n7n;bQxxZ_@DX}eWP5wM1U^r zqsB;-x|u0zez{o#h&|sv;-FHWL0L6ZYkfVJ-6wprg&jbj?*0j(XjQsys8DmyWUBU| zgq2Su6wV~;7iDD#HTLZ>&7>ME3g&@kYc+jt`HDbZ7jtWK?!2Y&{+AwIpUnUb{Jv9fCx)XoG}-RpBSUy)=R;Zzd97IAlENK{IbR=dj>o7!1U8=CuKE+k_o0!A z-Pv8k{Z5NFr>kGZ;Ni;e)v=rExD1!K_22Yh~Vc1ROf&fRuYI{872D zJ>F^}#~x$1YkIYD+r2dzZBHq1uBXoI`k_&$fplBvyFYN`Tu3a+)+IgSEzLSj75!zd z>kT~(@!EN>0u#Lb56HAB>fDsJXUU|YTdg=Y<`R`|;V^C^UlL6`>LpD3pZC^RxBZRW zjATe&wOgiXe&0nEfN%;pb1sFL%6qDXx}||79cYbB<(_z%JEFYSy*>FN zks|O_vT%^Na9KAQ7Cpt_m*GW5rOk5Kp_ViX=+{W^R*gBB5O_zQ9b}7BJedQ#d1#(r zeBoPSL{4f&kfOUzPU?@VAfwrq6Jw_(`xf!*b;mbSOk|p!>hZ9${!Nz78|BNQeG$u8 zga|o$sK#H|@rYq{vu=13>X_@OAiyd*dA9-4=57D_t!Mg@;I}bVE=*DVe0XKxcy=m! zDBr3}_q$5-GwxRcmbRBCz^RKx0nh>?1@G49hi@Hs3Mr7K+^4=gT**1N_h3(Wx~jdY zDmUJ|9L-Sl)q0{+sn*rupT#`|I!2^Cc-Ss-0q!Wz4SixYBMJL#0)^hh=Qa;OAGwTBePy80>408S%xgYIZB{EBM!fw2 zXmJ%QbfB#5Nc7ppB-|Rq#2{SVPI=j)bo)dZ!zJ^wXh*jg$v2h%y=nx&^2MB!R7=*@xouEm~m zc^Y%rRJAY}g+I@e*C+Ez>ga7l!d`{yr(({aG^O?&wG}@W$I;JoCx1T4rNat(eKV!fGAY-rqBSjn+i+-MNPt@x`?X-HzbZ7rhf-3DI~JzY zH*964^I>FXh_o>BNBb)P<0IYJ*yw!@)J-2$i>6a5Mtmf7v8+MSK;Guj8R;iyWQ@*s zcldHcFy_NW&4kIM)R`rW@>w4H!EF}lndwIif>x47n^PPmYC4NIrA*6KXUg!;rpoym z#XIb6N2#ZvdFRm`BmRvK48XP}uL}|u(;U>Ko!GwE*@~(~jY3~-B0Aw8@dy-HZ{SIb z&_3sH8AK4KROiI*c#w2QWteYnuTxYx)Nmlb;cnLnrT?@NTAa>bRjM-pl!6WK_3vr# zGoGROqcoYUkshXy5& z?epocly~W{d>7UR!(>*E0WTt4mA}GAc$vV}qG%}@M6l4a!d-m{u(+i~>DMTAq<3#` zJJ#Mumic0&qp!H1Oou6!>(0OyElX~T{m3hB^&0RVFoR;S7;`E=hElJ0mm0I`tbACA zW~Ez%N|c)54qn0K^HmMb%FL&IcjxSjF6xmOVwB(?V+iz^rfNd&A<>N_apXk#%(HR@ zw9J}Lv&q}&U8^|?B{O{jMnMpiG+Gd32F6jF+q>F!^$yClj$*jJ z=XWwKr1Z&!nNlPWaEHP^hxoO6tGoWH{rIbCB36)NV&!+BC+M2G}br0j3a6CTiXlP%)g*2Dqr<|dsAK-?$~vus?hZG{G35)r2`QCkN>DQz z1A|R>Z%;ecQyT8~(FRqXd=pZ4Q%>e3AtfDoe9rxjAp|RK@vc9KRo+4(p4AA?{nViH zrw|QU)j3%*oQ0t}O`}^S4slG=_SvH|xjq7^mlY1gxLVlE2mQ`3!zhVS zrxMIxI!J8&41jYz<5D*cQA9`6eVTdNYCRxPrygoc4r#Cd)K@PQ=d8D_0man_jio7K zIH0L3{he&Ua=i^8I=EP$zjO9$a>YN&hAu*nU5u1+&vLv8= z)x2bKOaNY%vqZ*hKPjLo-}25hU4irT2>Z^^~R78lC<69+O-Isbrl zJ0Ep3naW9}{+Y z3rV+b_~-KI?RW=sn%AjnN;fZWeo$%efOW|i#0Z)QRya=AxY$T`B*7?*_wD6zfM;weVwU|e%Zw5JLHHEqh{|T? zgqjmsAc=LNHDm-e7NZsU-a-wh2F=`2UwrMsQIVAx8Oe`oK=i(4v--d3UOA0AmGz<1`&Z_n}fm8wy_mwevbva~v z%Qb$Z2=F8vOCz8kmRSPgl-CgIv^^~FZvI$N%R(l|Y2F1Rt^8W_Q`^3jk5ut)qY(qh z7oAT9ptMdFkXhrV6u&rcDqHhF*D6O3i-aqU`cE;ap=*&Fv2yJy`3kzME5DwO(lqU3A}I z(|U@EgipSoR6~hz>SIBu;s0Um`cZL8x2sgV;H-qQU{5&}kGRb&FB&U7BPv(*? ze;=)!aSo@9Sl*uRu(meOprOy zM0l_#e)%llh+q8H7a9{sh0W$HfQgiQ_2xNGy?WUbo3qX`I|I)T(ITF=74Var7p&6> z&~t8cId?fv7!QI?TLpSVu7Qo_V^c_!!-I%@w>pTL>pHkR@;5NN)6#Ki&zQ%Y3-Fwy zjw6i&csTi3!=oe#9iJ6S-Pzw5usB?{6?%>}N2{4|D<@QInw6|Qsv;AYWZs|0`(dnM zDjQA=yQ=JUcxZ$#S4CFaZ6sHp8Zh6MN7w|3;!*j1a7txtUV$q_RI0~gq46ptN&(mw zsMY92&2eQ$n{VA-#w4XL559<4n^UYxJ-g|aTevw1Nft3*JjQq^Rvi;-rSxOpmn%ee zRA=??XB#tR_ZVIBx}Ezt?Vn|eHXgOA9X?r>ihr#BN_U5##t)j8d_r|J?;=pce)dw0bf* z$5&7yfrgbOKFI5k-SG*Qal_3?5%&FvLEf~&kOZ|@=Ec=6rRqy234Du%zE^io7=yBOdJG?a<5;Qg)f=LKbOhUw?5%XcV)1bt&dFVcdGXoB4=OGuXa_5 zGz#{{6ohU80!ZAbk?(Y)#Y}6GT5}GVZ4l5LVBZkg)fsanm;v>G*)XD=_e6Vz(8bViO3wd^j2kZ6JnkcypNk(0mu&dvNj z=QVq#0V0gqgvl7pL3fU7D_Wax5m~o>qr>O~@2Z89gZ!b@Xf$aWM#VE&35DO0G^dWd zx;;kQ$?s03ig3~I*a*%u%W5dkv%lk+xq4;#TX-VqMyZ1|5jrc~V+U%T<fmt|Ega`_M7j*65$x3EMcH)(CR_=bzFFzqkbA2=N3(6#-a<67u_6QXGcZq9Xi#~-v30A4{ zg2EL@bBfjmNZa+30w0#q3C253vN<}a^vci4R+)Ap=L9w(SM`mKGHou&^9Dph zMsxgI^h`I}tzO-{7lR5~gdLx$m13P6%dAQwQU?W?-PGPH)8ZJ@(ld0wcW5<0$SW25 zPP+Ip)fpr5U=1e~Bi1Y^nKD1&ox1Mw$r)j~L4#Z0zPke{`F-|9Jpp9IlRHgIxVIk% zVBsmK=z@_+Rz2-Eyi18QI^YT&(-9YN&>?Y{QH6DEVmw)0*fxb!$9R=JGWOt@#`V@X z;f1Co1C!OAoq3KmjQSPBJv63QdV0hU;x%TQn}RmW7$?GvuRE%ZJn87cy~!;Wl_83g zV?TO9R)BhY+e0m~pIsAN<)Kv+bm{vg`<>?`mdv4Rzd`@p@jQi)ifuPlY^38QO780T zTNLlzy4u*v@82x4O2xMkk02B=(gkvix!z|ALg_!;e6%=if|o zN_(Sdx{G_snK$PdZ*dqR_59R{UR1cx$|cxX_UfZ+79bygDL7eW-SiX9^TSS*7cesn z(&-&!R4>Oc0K(3fg3Wjze3wXD6iU=drkBJMXl2J{)RSv6OZ{+I{an8a;^U|Eok$eu zFX%2PTz7CBaa~H37QeC)5SK^jS-^g?@9{vWL+>yP8lKxl1%$e%lj_Rs4>`=K7=pYL z@*N6|>#>MV(awm?v9A$FvD(`qwc@aEH7JM~d|tSF$OI`PP&#~j(<14!wiRYA;yXnu zDap9|5bad-WkUsFS4F&rH6!UX>b_v)kC2I>E!#-7ar*TY@2xzmU+K@xxZ;oDcFdyMiQ_-wD@?kcr|!nbYbx@t zR*TU1v1*o#YdOGWAkOBh1-QXX(y^1Jamm(V!Xa%bI1;43NEI7*m}-w3abE z(4g3({dX!@wa`57pY*<}ygQufC8jZ8`ZNkpd6IQHMwkE9`SPH5YmZd|Ki{U_!&)hM zql}I>bwHET7M;U=yWFmTSlW&b7k`I*uut<6v@qTY%oN`>kkX=Dd=OofNKpzY51-tg zr6O*J_f)mClO}eaIX+wvNJ-mWS%PgKFdXAN7!B_bH{iJqN)iDMX`6G?$5-zJznHVb zJToSE3T$8C+>ZC&^-D_fk6&N8UiA)k4mln-#uSVOVNN|2ju7t8uT-<-f9E~W(f1Sh zPaf0pWNTI#o#XAPc*<0osn(`n;WGBj#pHwi+631HOqO#F@F=2DE!-`hs?jIoX5KVD zrasx*H9l$fLFl@;ThVRvbiHTl9?i8EkAH2S_F0|K*UJ))KgF3|OsCX&)X>GF`Y5HP z{sj;I^=ZslYB~|0^YS!?@u+`4V}ggo7d&pU`MQ(H!*x2BAo}R`*H<^kjmg9gUUO9G zTBxl_!2(Ndx}V>-rB}_Qgv5NR#kkXLx^BWH66P{SBP@a;V?@ycs!trLhj4@tiAxIg zJkaX!T@R@m%CT(Ht$Xf~Wox2vN?+B=$Sg=8dltsl%3X@6>`l?;+r|dS6g_FB2_$lA zjP&sJ_~bUh6@<$EEcc}Ba}_DQE<7U0`jNk>{(gw0B+aGamXZ0yo}X7p1t!jw@Y+@x z@anK`<3IIc6>eJGllkVQY#1a0hUSR&;piGe)2gx#^16LYu^59?b-Z;1tuQ(q72%|1 z*88%;+RMA)+&sfMYZ)|AazUMmmc~7>X3>92vXO7s;$b8i=1s;tm@m*ti(?= z1#0?ju6PL9S>H__qc)MLt8`fyP;wW-%G1KLzD8=rmGltQg(h8C&ir-;UtwSmcTX}@ zlRVg?-_V<68#Ex>+7zf0N)tKe`a`O~8O{}rKM zHvzS%{yk@`m@wu06Xz+RBNR=SRi%n(bS!kr4wALrnC#C_Ub>X$jmbVRto>;uhEK z+6(+dK}6KCPmjA~W&=%)#dHu2tgwaCBOA(%nyb_(v^FMGi`LcDx1_2(bWdAUCxQIl z`sc3CpT?K;o|4xzKtb^qC@C~aOU98L&O_Bd+l_m^zE%Sm-urrYlnb;9GE1*xGZ1(4h^e~^C8bikeICb#t#jlIz8(Owwy zYd5c&yUm$oHJdHMu*R+L+GzcY@steuCx~qAXL)%eq zAt+lN&!}Jh7^E{z?Y=!9-o5M*K=h=2hOytwR?oCevpw5XRMAWQJt1i21Ty0Kz}Rq@ zQBDgoVrfZd1}J+BqeFzKsY^#;5D=vMWAsf-a*JEXK3r(xe@2e&!)&#AtiF>A0|(n8wjnqETYkgLM@&^6lzp?vLV>I~ot-D9T7X`dcJ7Kz)xZGUwh ztbP}I?Dqql?jl+kU{N(6QfRl@d}$t*m7V3B=%ayCVRa?nwjo1DbB$ zuXq;mIK}Y~nhvH)F6niB?$JF>c5_Cg)%mdY&2vP77i+Hhm#1z?HpEJ>5~cX-+t8#z z=~^i{uSXN@pWpbRebMQ7+PMcS;ilp9P5Gj#oz{cVB5R~bc2M@Km53e%RIPG2y8H)U zdg7{L3I`lqF|||!iqC+od?7*6wcLs>^kqn6?!8~oWAv%wA^$cIU*21;5IKLHtbS6f zoa%wL(OnPn-JA1Fdt$M4bG76KT_4J0X0a_@;UrYL4uf8r?pN^?FMaY8y?nl|N7e8% zh~|6o+DnJdHX?!-oPJ$KRfyM{g6tvjW3;R8ddq>%Z+j(B(dDAytcNthA`OxxXndjL zuUe6x!-%7M*l1WKAXVN_*Y%SwGlB=46S260poREn^iP4|q0w>utOT4JlMB&F_POzl zh*qMm{0Oz8HvGJ|Yk1^jgTzX2h75F5Up1u`L!uOl*!#8ZTfgwI;j3=%PTQ8AAZSwa zuwx*u^+*vr$Lyp_8e5-5JFSa3YohGPR#VH_j62DBJme%znt%@CdvnX< z&EP5#xs@oYu@X(ATB3!1K@R}sQ_y974HS>0;z|sLgUO=mOgS+`vz@!$Bxsf_(U>1`sz0eAE*rfSprTctm zQ4kXo6TNq>t6MKZMZ83nx=7Mm37+p4zZ0&Q6-tY>+G?4o|H^@dgk-H8R5(x;-VZLH zlk{eYQy=?ZUS19l=}N<~8lYu%`uXuv45IfPvmecYgVUE?Wi8M+6^=oOoef%GAF({R z;Ngh3Ej%<()ag`8=<#aj^RZ}qjcK1R2_g)gsE)ovy?*AldAF|S(a_u;Ut8ON=;B5K zg^x2)pebF{coEN)M89V0lF?6m6x%^zB%K`9d4&OZ9Q_>K_&cma{SpQY6<~Qfg)eHv zGwrN*n%z!iu>%_F2x`RG*rjGT*p~t+j*B1}vgv4`x(*pUM+sZ>Qp%Jyf1=dRWHD|a ziJfZjRL`FZ4(=r7;-(b6mS;ieLgGe+lbd9ar|c6sEz&u^s%p zq&097Cv(R(8(HxzYe%R1Q789CeYg5HTFmqjpav73mzVGvbitAMI3kkIJd`D|_fL7Z z(K)mrmjJY4gF{wWDPEC4vHl>vlhTc1bh@K|_jtbi#u*Ojg2=N*4H?4OhvF%*mdnIch<`TB&uqzOVAE4&QN2E?Snf7 z$xJMK`ZPR9 zgkGim+7rA)^nKSpALArhqCu88k|OH{O>faQucUTbZ?@g0D{S*m3DhB{bRd^qi5~m2 z{>1JyMzSFuNt9QFC!$TQe>BQ-@+kjP_vKPDP1HM4;Fx|mr7dx*yi>bC`7G$O6YZuD zLA1tx4n}~>g6Oy#Udq#zhWg^r6}28gNg~sIw~NMaTcdL8>YkUj%V#Eu4#8nCAPg{- zCX&O0rZ*MHO7vHema<6#vjJ;G!vgw_n`J(cVHwmPwhR2)&4N?AqL41BL{=FEbmSWC zp`V(gQ0{Os+(KmvYo$LqSQN^f6B~|lSKi!}HYz`JQv8|4K}Qu`*BtK*9LK-Znv5nyy>N_ALmBd;*IFR-<(-P106N0b2 zYjB$ui?BP*NN}>~h}P5B*WbEz6z+ZRVdxIZ1U8kV8wzf~jt@8uexx*+7?aWhCTeZ^B zn2ntsaoeT@8rJ95o-pUw0!D*Lqek7<^?Ln`ppuk3{ycpf8t|yoC1+W>Mn!*+4S(M1 zF=S%ayw@6X_<5X}cz-8Z5Aj*>cE)ilsMk8*ac}OzQ?i^n1_u-A7aYNXK&RK z(X-qAL_Bp#3+c=DlpP<(VKo?GeSMo?X;6CA5ifm$4)abAkIoM%mRj==dpt)~a01bm z!r!T7iYvzgm(8PZL*LljDkc@-0j{+466!NyGdc&0`L&?RD{CZZL($~iI*0v%vY#

4uTW#mZ4iPC-N_bd=^q2Nq0=e?aCEu-=TcKy}7d?(mR-J>C`k75>J?~GePEKK_YaRpDKBh`~{F=mvFX z9y=KOni(ir2lbFZPA{vYiRwo`Cg_U&2p2{mvkE(9BO8rT6QFRXsJ5{5B`;_?nxNPq z3{T)9Rc(PS3fKyNx#a7Ok3r<`zp#rkh^Go6k);#Iz%#*Ws(R)TwSVF&A-n}mn%U*& zucSqUu{Uks1tiv+YKHX=6zWKra;le~d;5jH45Le^!GvVgdW7^i?22nhsQ<`*Z_dbj zq0Q&0%dpO#=X}}tdbR>v@+g>4qB_aRx>o!E}oyNPeOw{7$sMb*rS zSNC7Wxy=i7&CPtuG#zK7!|*hDrJ=)2nSSG-xKD=uo+2p3q>&b_F->gYyi2~p^%e7c z&acANxNziSP`LWl{un5Zo-9bd9 z^Al&e`LG^K(Mq;(8y=xDIUB+K!Qns{H9UA3&#Ozf;&PJD|X`zGGGyPJZ_k~+u_K6C{8b6CC1P<2{#Y~xL zNW27q`H95GwB;@f1$l;VzmxI=r}GNU+bcTTd|y1C6V;mIX-(JnQNsaGMbn68Fd!`q)OEjNJ|18dhh9D z-)~aOS%Hu5Kkg0}unLI?sTX8M(G#;9Z$pLACYgMqKim<0eLTCH2(u0tR90`ataki_ zFm|Pc(2`I0rbEsSI0@wQ=4FGUi|#b>@Od3Hu0GLhA~d!>l`t90ml9W|4m1B47?@T` zGpl|(yhSMCW-;CP$<5vGQm2F|>$J^WGM^q36zWUy59a36W-%)%%LM54ZNXV}yV3vL zG`Zr60mP5idtRq=xBx)%U4g;x7G=i|R4S59^w9oREGi|1%xS0geqBVp(t@xrSSs9L zce+6&Fq(RAfZ;wF_`1CD|1EQBAfK)7<1;~Kd-J1s`RFA__*ZiVamn}c`{ucOvu6{= z=ro^PI^N)fgGfS?ZC>N}ExJf=KBOSD*xo#)WqHUbf5++I(CaWP(k zA2GsBS*jg5o8zIi{vI?x;`#@}q{ZRsO(4t~TH{Y+e#e}sdOzcNAh|*zk~<$kZjr)& z%Cz9Z|8W=+rGg7Rrnt-3PZ@`$^Gl4y`!SxM+#ToW0g0{5{rgn#W3MjpHnmjeq|H~Y z?XGk=T+Qo5ued=|u(7I;%1!4Q-Da4LW%o&ewR{E%vimwvDYVzaMaz=OvB(|;_o|hO zQ-sH=kN)KapuAjYlxap*XBltb7*u=~k(znzO=-CNBbnG=ZuhhvgN4nK-{--;eFks! z;ed?*q5c%P-cK=PrYhfM?rkGK3@=)fIZb}q)#URO&L{JPoNhEkQD3B$@(HS|Yh-*v z_DL76Ta@^v2H5y1IJ}?2^O-cs#c22ng`HH}aU4Y<+Rsrg0^KIo=SFcKa+-7v=3BRZ zah+C-Nw-RtO9fg<<6+}S8(O~)@lauQal}_?fvRI-CeQMO8pqwQ{^Qo92m~5r=JI?>z73jOMP-4ZsJ_ zFZ*|i9NU1Ea7Jgm*d)$Zvjy~XhTfspwL3$cHj>P^mmwa%I{Bfq6o7?6iHeGW3MY>eF8!B?kP zd?F#ScWk()Ep=mg(sa(alczGH>ygp%w?oFMh&}VF_fl~@rr*ut=`GT@CYqkToJ-bn zSrfu!cKwbMf7WkDQ&S8X5u@!Y8jrmOxiJ_gt>1)`9c8}7cU#hDtlxAIxIUSTi z3jQ~j({09?IU?n^Z`swVjA;(&&#;hQ_l2l$@;)MFcWq zppim$A~O>E6d8Uk*8ushu(wcsKy#K51EA_;D(vL@w;vyKIGsAq;B>Zj?uI_>n6?P# z+PIK7RL2|xut?@R$fFxRPR09C@(qI~{$m|NdR?j)ICtVVLMW}pIccJCEqab6c@kv- z&9BDtAnfygGBfbL05x#qVKHcR$WIL(YU|&~pk5dFcKHhG2}9kY-P3fyPVnzL4&8c7 z%dtxvU@&JVz)SQvk7Z~rGqH*K3ySvo1*LGe3Jo#nISS(B14dM^wDRzT4BeWiq{Njh z2f=rGo*!S!HCmKtxis28M8T^6Xheea*M7+3G8a}+(Np};3cFHPKz}*aG2CaHC}f_M z_u;o{h&}<-s^Nk-iw;xmhEK#-Va@ZWago(;4jrDOep4MWc~*xj2J$IChP>jTc_ewN z+TSz@HN1irD@{?S^RQU+OW7u~&iWX{9zU?&IquAfDy1V>iO~2l6ub8KY9Mu7=Zbk+53D|GFdTzw3o)0dBoaC2@ChTwH0`vG4}uo8G84dtYP#9B-M&x}(Sv}o z#HmF!cR{#@Wo2o)Yy3#5nER^0wKyuIUO?+Mfy+J(HJJL!8OiQ#eE1~V!bb3 zya3;r!ky_MN{fjxp6)Nu1?WuOrM-ssHvmW&k&a$@$wcPvW8=NbT?Bth@Ti1c5*7VgP02BIa< zZ*Qn@dFrZDwZ*s+4UgQ*~x%|Db$w6Ao9=NYHGNTD;J?NtadrgMMR23=HxET zAjxd1ycN1(pQ`U@Yd2(#3Kc49JmDx%FI&j?`tv7!O~Nac-IJwan-0pEN`nN{Twmp9 z5j<9$4svskeugY{&NwocV9CAo{&Z=i?BVc*i~8#I=`2NQfk+5m=Dwy&kG=AUC+cy?Kiu(!JyC{r-B9^L=l!ItA#=aL&0D91|!OLsL?^ zxp8C0uR)A`tKkIUO(fln7gTD-oUY$RMhXdIs`G`kC~5`9mI@YRd`{L%>;u7WN-kFA zy(7{J%!`|8``6CTZ!uXv`70~pAs_2;(K+SuH-#2{|8}su5P$*3NKogBPM+nFN6qDTjQxJ_W!QC=T@`TW{-I*LBTL9^t6dq>qr zkQp6(XH#=L<_g4<+L(XV)|l+NfF z6}B~uokro}9vQA2DW9pV`1A%J9+CzIJ>=`{{xgGkI2KB7*|-l_FmW2F_tIR6_iJB2 z_l7jL_fH1zyJdT$2IoL0-YBV%ArWDSr|vfJE7Z82Z8SLJRl3-?BG*zcOj$wIR_}%pOA{Pxi<$jd*D~=5DA-nPuz8;u}8ItU1ehmOaQT(s$lr>A=^KlZ|2Tm5{5$?SN>rPefYGX0f@ z4qrq_cwlux?j!RMj|spCEOVc)aa{wD*2Ki&^q3 zqZWFdBA3rfu%20ipP-Ho=2p)}hkC-;i`_+OK^O$4>3R~T6=19dq~8+Fcwl?9FV~ps z)BH+1)-2{hL0Ir>d$h{DvMYT^k?OX;a13V-A?^8`PQrur!1c<#o6)`8As-{QnD_fy zQ&CD4V7{rrrGBcN4ey_Fznp$KQ(;@>ka$PH#umHaX7q}CaP>Hk}$UHsg8 z!QFLu_Mkzuu&`%;W6ng^QJIeCI(#azm{)|wmZ1%m5LI6{(PJ|2E-g;)y!8!y9R?f1 zy^QwH9~%97fp;9Iu?5Lo-0xIgq>6){K{H+beMke@AR%0Hb$gk-va10idKw+BfYUfQz5jTNh6ud-$b9t?$!no@E695b zd7Sv~rJBC9mI_$CASjuXehNfcPm#K2aEx)nVh~$Kg!X9{P(jYvhEQ48dij+mTA`)N zTZXjUqtH_|L#}@Id*ANN-Dv;WZgf004bV*wio#++q;0vB2-fnxL5P(nDgFa!-(?IA zKu1c63SS5^{MOY_vvhSWoQJBgwW?=_^kjJQw^9KVSU20O3a1-4`7C=3B^AoKQrI+u zN~>mc)d|fz1@S}c=i&QODr_lFA5Aq3L|1=O=-ogvQOFAEt7AB$S{5(@6+L{YYCkw} zGHKB~Vy!|5M)L;p>)0G0K?_I}DLR^bV=k35)!hB#VkOp2rXqJ`&vZ|eY3+LBE>jKA zgzcQN3v2Q+<#U7mtPh0o>fxLMIZZk{lWkHRHQ zzeh*6r|yS1HnljP(@Hj|n&r^|UU)j#kd**-r*sTj?@W4x%a}ual2`30(hp?g>L9yps+RGa zNR|7#vc5qpL}Xp(OA@t+3bc$!u~zJk&%R0RF8H^dQeoO%h#zv37}+x>YWFP2NB30a z^8rP(+SdzJG35{vxsw@kv0$n3m0+IYaVM;KsmKjB$Qn5MquJbgDAL;}CuoBs3&?t5 zwypie+eZsFTjsM>gbNzog9p<@?3Sy`8^mCT5oO_YkxR#mPdo`t9ixMlpnh*Mkt-@5 zO&5((?vlgY(Y}h>I7gP`-d}UN+gtu_#|XvOUbm9b3~vGR6#aB>QCawyw3s*`q{m3? z#;v=fLs5;@aEE+7VeA5uc(x^aEE%U~;uRW|?C|ig-C7S?iEM6Vj_4(qfjCuL5*8tK zr3(6Bx75<_DD$RS>){Y4)d&t@uNHI6B9K6o$@?8;9LuMDap;mt4ZOS_c@pk_%!Jod zcCp}rtTD6o?*44dWDu34mDKuKODHfzI_0AJ!j0KS6StV;(HWWZ@(pwzyx%2dKGeI? za~yJrt|32UVXp#RaMJXeDK|}5r5tt)bHu(m+d)3mKj#eMm0~XT zSAA|q;@4qU=4+aez#0Y3$Siq3U|}Q7#Veu4E$c~O!%?@OT4~2Fnan{PU@R*|_qloX z#~=@Cqh*~n!)wa{uB+|dqBUzRx@5OQ2K&7UA;Sckc9$Pb@dP2ksIhJ&4m!o!S`Nlp zflSrm;Gi?|Zn^V3#2))y;uVItewuWZT_34Lvb%?`-TZfi$77+S)FJs=HSvvcT)}DS zY2%wX2Xh-pg9zC?w=Sk>*aPhdD2*3(&v3b{LRlL!~ zrOon=T2j5nEjbC(mqNogvI734Dsn1s?^;~~wtM`06``?BYIZrYrK^t~o!a%VsG%{5 zNisTb2-%&>X~{+EY59wOCvs^mwC}0*6K~ul%1ZH`U--E#Z>Usx+IAD&q6dWs1NgMd z79>)&Q{6r0Bveh%81(o-W>aD?0mqXL!=>VuYBZ_UA*||{y0WOYQmD~t3RGlDoYctM zR}Lu?YYU;OPG9<(hQwiW3)dVzNgUf9qD1SqQmDcPT-^23oIJf&D$_V=>)`jF--zBW zKR1fYWFdI*%KXMys_it4oG$z2`33hf(= z>*C^Vj-!G}W~y=%WOzc-F9~me@>3@L$ZfE|)BXB9)ls;CW&(>=CP0KkjXKY{cm1UQ zaDowU<1^Y;2IXoF9C$5l~9t$o^RK8cBtmsd_Upmde|N6`JzU>Gnl?hRV+-b5Y)>a!1en!HfSIT?^|pH z>Ms>))AKUmfKGT)9ohEgTlBY3m|Yk)YOcs0s3#)^B|k`j%Kf9OP4eR_%4vi`MvFVU zvt3m&Dawo1%to%?Vm3Ze^+sRX9uwHnBLG%{Z%qKH`6*p&Jf7hPb7scLCW9#rr^(i5pJT4|n;a?n=Q zc|UqOVKk7vpJgx{7~3%O5DE`SZ#LfY&m!oPI;@7obRw$ur>N(O zA~UNNokY|y2czn|9|V6_I%efhd|u5)?C(<0!ll zHD7G!;h@~qlBkfWh9)K|6-H|^bz9l+xDGa#oMmMK1$(~dNmSGz;yGNZxQ5yO2P4-i zlvA)n_3|n!6cx}}S*rQly)sIF#~8x<(;h5F47&~|BsnJ3Q)vQLZ_#CO$3|oulvp#4Q_ql9yy)NiBlarh{&jRV> z>G=5p^+8KAQBoRJYiS^jpy)Mq83|S7b4Zd;fDlLW3zJ7;$`zzwrqZvWgn@b7L`qoSgjQ!h=rRy&LrJQ=p*nq!;_4st1Gv1fHoOIX;vaB$ypyt>lL15FpnKDe{GIsLT<; z<-Sc86%&acYyzz$h^fcaD%2F!N`#T3%1y_Uh=_=2Rs~RhImzQww=V8zq=fUuxHvC)F}7L_9X2%dE- z9PjX2^4@*fo@!-O&!|;xwROe729NL+rUB8Qr(cM_#P3Nqw`IQea~g{tCtdi6s2BLs zl{K|%Ou3~DPw}Wx`KcIkdxMqg97-TOAl|)PLKg(o}wWRy963Ps4-}57HAkXH;3~$gYP!ox3+5~gB*miG~dJi z{-jcn1GS`Z-l79FI+HI!JLeo|=NuQv3w5fLFd`b9w#SiG9VR5$kc*CeEF1e+$Vg!* zd_|Z5nDx+TAJ>_km85qX>nyf(6u=ARHtcbhrz7wx-mKl7v}$$GveJ!t!3%;$Ytd;R3T2V>hYkhU(2r}F^K(VrjC zQ~pHZCJAz`%@~|@TjN_k5iM%HMtqq1eQ=S-Iid}%Mlv8j=hQPB9z1zl%kx| z=xH>QaKQvJmgZrWbXdRMWgQBSobxlt@@4rb#|*DmAFg*l$N|Y)peP;kfSURPg`xN} zp~BYhX)9b~x*`7Zz-$7wjwza!wnpY_-G|D*E$i7BAkrtQg0Ka^ip8b($6I)FZCNz6 z1?{76P~=Ay6$a~{CzYnBBQBy=Id);FXxNg*lcRfTyp(^Nnm_Vh;UgG3mU1C73w&=9 zU989WOi3cJEhRM=j0P4&hYMWL53%8ut_=#x+t6tL$H2cmT)H_s5MdlgR@?yz@N5QXJY=uO<~s`-IOamydl-hx*y8j3>%a)cFTp$!gK z=bkKgkhlP3uju*PVl6#{m7L$P?7`fe4MnCPR-?Q6t*JiGhpr4Z1k#xokWz2FI!N{e z7J#`6nr=h;r|-C$&=9texo8n5Q+6EJKUAxG7+@6I2URuXDl8R`o}Gb)Wg;G>_y6*@ zUV!?nu{cmynHKRF5(VZr{_UmvVuW&``QM7pAHEi1LpPBt&QIFn$} zj3j`}C5b>DBgx(p+Z|A;tzP{wdV+!bx3@TX4U}0)qbAOKe(-3>0!0<(BlUSNz)fsz z^`mokb_uJ?ODMNlULq7Z6-MeJ>glTIH{LRC6_8}i)Rbn;efJ;^`2CPQf|L?`m~@~( z8cpfEC783;z09kNnwk=6#6*%T3q z)R6Db$_Pjnu7j-q{>c7)Z~y0CWY|DJZhQ_l4C|7qMPRV`Hvz3Bl??Ie-xJ|K{!&Z@ zVWbIYE$xM))J6|h`w{>y(#KAW_-`Zge}4DB#*IKG5?I+@0j$T1B;Z>@{&)%CG<>r0 zb3p|8k8l6`1>^+3Zz97BrDGGo$bN$?TzFEs{^=DSLCgY##3?|=m~j>zQUApjah5`S z_Ydy@yo_89_@cXGgC|g0@Gsm;%P7M5-{I{)(uhz)!FK0?$kF^s&+dVykp^fQSlr1n ze?RIV1pU8%yv+ZMW@VzXbMy;*p}^l0V`a(s zFa8dP(^aa=Kc3&-kbma)Q#RSp17KPRjDdKOzJb#7uXXc3J#WP{e@3(Nm~wCg^g1H4 z?>vv)fZ~7h&u@bWfP@|JYd!>v6W zlK$DxRP^uB)SGpVGTH+1;(>_NXZwNR@jtzS7hf2F);vrMHYY4_u72kAK+H<=$oc0O zycDnB^E(1k3N^h9ObbMNfQQ<=^ga6L^Vh<;5_y@pAwK#v5PYXOizGH_@7-xjPlom0*wMQ`2N2O!G9Nm zKhME`7lME7rM&;U5d0NQ{<{$T+j8)~F9d)Fcl?#0>)&4UAC?uF41oCieV*|D?|I_? zbDpTIg#dK+?#bDhdaj19`SIYK$YJ7-M_&W^&}D_!pNol0r>~B^6RS(wSC|(u`g_$B z!-EKEzEa@Gr*VF=C}@${CawiDoQ^EG^t}RBEaWzzP^d6{2M$JDqG<@}*JjXrmh68X zY@M&6m&FoL{^!BA#MwRP-QK^xW&%QXUdK>A+zKkfIj7(0ZcD zEa~WobghXP)^dwk!UQIn3OSw1W!*&ymX`Mk^H(lpyh57FKSsny3lAU0hzU#%!Th}| zCL=-|bE0;JW{u{S;<#nX6gE%!oJaQcY-leL74GGKGP{ud7q27-99$`)12m-xZZ z8l)$G8(PN%koi4P4viKk(n}|xwf=cSyEP7YcwB4>YK)%(gR{zawn!R!H~;2_@-dJt zA*m$y%<~GJ5v>VC6y%}pU_82({*AIq&AKTeDe`h5{{yi(1qedqx(I|GP zjDo{eo3nrk8+nS5@krYfBq;q`0P*Vgv`&FSlqrZQR{xsUnHA%OmkK{1*4%VvwM7e~ zB=Ob$Ny;LKWdm>dDzsWHtcjF`*oZ$Mk8Tu;v}M-es4!442nK%n^DTJEBmc@fw)p%j z?>O&;CfJ(U8~(AkSZihJ+urMOaVpX^flr!@nx9+Ro@Zk^+5Lr#45aWr>h~n58d-+g zA?dJtG;9{^Wzw+8aV`E7?K9)dp7@q2S=Jg z3Kv*nu!=n#yW0Q89)X-Ijf^`3v6r)Q-;-zke`WW`NWGw)$?$HFr|kPSklAuJksrSO zRe?tzd^MI(+g^P(V!(O*8uPDZxY-vR3K0Z!^cbJ-dO`xF@b6O7E-#9VzBMVh_E!-E z^S^RZ8${sR8(0V73+jCv;XJLsXJag~7ePy;h&6AU6Z$#Qo9n;BCrD&~`~%FO`yY@Z z=yQdUhF8$;gVk9;D}xZU=5(=#2bi7&yoEd-8`T0Bp`i1N)L&T( z85w}LLyc4!9tb(4p84T3@%O2BRT7*9VE|>x)ne*33^+n*rT^-!+e%6Qi7fKyxUl^> z1&6{L*tx}WIN*M%S!sA%`@Gz6Jf3Kz^aJyc`SZn8AcPwE7Ljetx5yu9$NWtPnvLEO z6nwWjVzfhP*qnYMKD3^B7x0gRZ&Mht`9nPts;saqq1UB`f-vOXug%>xA{YXmuX~E{ z-$%7FWTpAxK08^kMZv>mRpd<$1BcIiEj&3M-#HCU3QEfO($doWbtcN?VJX}PJEozB z63?=9P(Jz&XoB3w+egK~He!~xfTJy>MFo&7fa8lqOb%6_&=`F>`-1i>tJx*Yg*{6@i|R$CQ%Ud_v*O{d#d$^5xHvqKj%L4%>C=0=1I(yT4HB-X&0@>@i^DjP1$r!O&#eqIx6a0 zV8%+w%IX-$qdVtX?$FN>;cTn_F0r=4c)BOE)U?iVFIARUc;mYTsMsabllBSWilKd&zpR9lu+js zdg$KdLNT7Jnb7$4mc*TXgUTm&XChCW+r=T<<@vT;MR}Vs;d3E{w<0EN4lg1q*J<)?ha|BySq_1(%s$N-Q6wSAl-H7JnvTj z&v-vG91Pt1y7pRY&NY9gqem6;02U|c-Yzg4$W9X+18>x#jS1lX9=R>tbEMLeIEC)Rd!xLq#kiDmsOo;bVrj5P>(Zm^U0Jtbyy~*2=Ao zqMy+UNYz6$%wX>yzSnOmKW20dkG1`GpKvAu3sa)_s-v2T7;+a7`@u^#wMAheCjh23qg7f3|7VzW!_sOh}e=j=; zm~vWixMDnMBM++eujSUwk`3N%NfdkX>tNK~HbnM{BrXxGISJ-^15|-@KCsXy2I0iAP z4rn-x-;Y`j@42210*=aGhJ&4Y>ek_&kr!2oU@*fU(ncZl8<*$4%OZJ4t=V#Nz7Ly> z8r?;--Kf;+elP0n*?Pgej(6J43#3Gv{TkvrfOIuvqU5y0)Zcf{pxrF&<#C;mvLGF| z$Dw(Zzh)}tLudI54}76A;4=urI5{GwcMtXZ7{+Z(QsmjmebL}UuU&0%J;3&bt8I+r->B} zCT4|;c^?~&hvOCPAkDFw7TU@;rh7OL*@NxlxkW6>#XC3G0C}||)=h;fNafvbJ8(0f z>3Yp+xe=;eB0^|Z)o)J5Gl+gYA8|Vv@mtMOtxVLD1iAmIWIx)V*w%i`>fIuvY}A8u zd+?C_;xooY@zSv7f>5f+E2(5UEx+h|Rb={LV|EJFiN>T9n=ny*7HGbNKW8pa&?OLg z{SFZ&O`$!&p`w}wSa4Zbuh1dy`(W9Z<9IMN)fdbPto48yjS2x~9j|@t!!6F>*huH8 zj`y7zCMJV|U}Jcb*mQxn1IM0h7d5beBe!XFY(AFC=wuhaO2$cqvD!U1^)d-qPfgwnDK+(%;~n~}Ab zeo8t}iYd!qCBjdwS}YE%T;>Drz+g1ICcX?#v6}>TC%Yvjx!YWdbWg#0*ZtqbxIBzP zUkq1>wEh%>zBzD>hYuftNUi3c(OQ601k?ZT%`$Fg5}8Q7q^h%;R}C>ya+u(|Pj$9B zieX>(77CwbMuF}T+t~a(R;uBkUiGTRPGEWMG zpe8GTEwN01zQS@cU8LM5 z>a^IPLZdpF#vR4-)Tg(ImRL!1pknbArNv{h&H(%QaiXJpbr^-}jvtrEzvX&O+(O={jUWdky3)A3p|RVoan-0K9!+!O*=*Gvmx9*kLqOjMmcsMT>w}w< z<(ZmgrKHkW$CEV?wb*+#Eashuqzsv*Y$At_`yYgE$EZ}<8{SX1XFmPfaho~w;G<7S zUg;-N15lnQDrAzs{bJM`t-sZs*qRaf5+EUe*DqnuEIa)CStTj^>GjjW{A&-EX$SM4 z^aRaQU=a4KR0`pMjB7yp(X`au{l&W&nFqYl3K(?E+?14*JB2Rt2YWf&ZLb6m(XjMw z0M8C5J<|@c4(5ASGZeI+e|1(^N&W@{0i|7bOZrq^ex#;I*2bpdo%2ZF&K8(zawb-} zPSPHbW2KG&C|fpPvX{y%cnMwbX4jE#6 z)QwDZW|GwPUzw#PwHt*495!b3-hWNPHqoEg=nao@AT?64>3EEguNOf>!8N$33ZW;_)=%>tslRp=1DT#c%Y)=-e;Y*<_v0BMR zrBf?y>>^|{5P{ zE=K{7Y_RIxUoRD>hvG2#%v}~ym`;hI8@*-2na|XF?Z)RauJxdQqjd>8mV5q#B&D$i z!=8lE&c!7`r6Av!c1^=vDkDCw&@XO7%SZKje%|cNK}StSR<_=Sx!PN7%>@Yu1$Rj4 zO*JVa6|QQm^T}#fScO2EXtKnZLPcoq4Um?_;(U93#t)qYqAxz)fHdD~BfApC5l2lo7`KfD4zCmd=c!kew{XEcp|BXRaDE5S=H920gb~F0Z@N9WjEw zth;RzMK9M|Hc&Di%s#3U#~;ugJ-eT>*V;Xk$5?s3^hs0eX0=M={kpxEZeipgE>%mc zJ)Np@5JNx@T^Jr2!($IBQ>=2E+>!bk81Nb=BW*QfpPb0v73)0KShWf1rM1cPfGK0R zbCcl4Zlo)j4}(s_-#z5Q@pMVzNt~WsvT5iY8um+z_)%|9NZiO*1ud=AQaR{U^|is( z5?;kH{!xct(C&ZMpeXh?;XfHgee| z^iCqC$g`_OYR%J&wr@RR9&)kpz`q{B<#O<8tlA#tk&N$Q;Il@nZP5NQA00!+IX&qO z!RU7|-{Ckuj@}g{*wu6uxU8&Dp zLL=DD<-}RLa2SLkFL2L~=4Mabr+vRDY87OcsO^M?L7k5U=3uvgR)rCkvBSc z+25J0PBbOKKL8t(|H0fR`I5rI8>Lf8bzS?BjX!Q&Y-^5+rDs5QZG!LT-BCMI0v0Ia z^wp!H>AnXMP%O0ha_5nAp89lI%4D)>S!@KK(3ZZGnlY-WmSY zjL09EkiZ`1V**q5xFNQ=_jXQ$Q2~s0ESqoUhqdI8CPwI$xI6x+crz3|``-Jd%HhoU zB5ghGZgDAihlZ7l6DOmga{qZb>e)W0L`S@PLdewENZ~*&46;Vzv`Gh_X7;)eXS_u~ z>2hpD!Bih8p_ckBqL&W+=tZ~5H~GlWJy@X|{y{x|wW~I_%Xl94`frL^`fm4R)p}b$ zyU%jDpWTidSppi|40Z$dE&C(DILF-4*kW$48e-IJ%Q79mzWKi_0PP00=hg$0*VEol z;G~YLI-gboO!SZ%TEU>eMxj3(Z}4SD%mf;Ls5AEoJsE1^%mNUNX>gRD!ljS0~X_X6lyP@i$Rl`Q& zrf_9CEzxRM`qbwhPd+}+5o;+d0_1opTY>c&(oMeEWd9in&pWg2zGqt?a9 zmcy}Lqw&<*!1We_cMmoi5WHhLVPFyS?Zn>eDGy=Z+d2ig@kkRMVd^ z3+7^ufuTnHxSmZnSR*eY+2j+mNncUm0rh48gLJ;n27w86z;P3Uy@fU11fz1@WMhP7 zJ*lVYOTsz>+RLJ!p+-EpD$Mr@9?1yto;-rJFpJ~>|V)Pjlw=-g9%xg(oh!HU6)Hpu% zX=M&>5t*9Rb5-pLj!&tnH_UZc%LUSh9uE!VqAx_-x>lWpMVeFkxAeRmvYD&Vz4RD` zc4xOP`=$+L3TF0%u+rVlQFTzJdzbQ+!p^Nj?*?46m;BQyTJxMFgEBcX5pvSr<}Ehm zi*Y~HBHZx1)XoMn{5%)!F4=?0i`&IBsnC^XWi1hy7mNJiNRF_bFg7_=^kV*O`efaD zGL8Rq(Ea3kv+%z5D^#Jv3ZBJcG8Bn`$FQ=Cq6G$hcKB^e2oB^4RP6^G!&VM^jy8@% zkt(~xH@vrwx>mjhIzB*XH6p)9p>9c3pG-Wr_ab?E95y;$LH%S2Lr3{+RLsSN!?TDK z)}T|MF(MHg&8JCRW-f)t36f}IM9mMm-v7ognwBtJlFuHy;&uW)jl0foTvN}6o{GrI-xE_v}|J5#|EwZ(UfHd;zU+q$A4Qj(p>bOH96`Ep`w$|c8+Z|!|%b5QA)j7$!s2r+1K?y*OW(M$OMN*sUhTrh#dTIJ$4?6fh#IsxD2| zd#pcUF`lu2FmZfJ1bCjpMk8@bF^J)l`U7rIz6m_aB+l0iqU<)4TDx9bv+QQ6YO%_& z%nt|)Z#IEgUQFF3W@p!ZY{x~7uHz(!E0KL*YGv9x7}{s!Cv4XRs+cYq8;oj!-{P9J z5Lr1RVXSDU_MV1oW-q1B^dw?%$AG`D7^0(GhBW0OZVBfuMFtSmCq8a-F_5Nu2Ljh?5`{NdXT`|fj~p; zqokzQ1Rm%%mglU@D}J@<5GFLH!CGWiL#|wCOWZW#x3%DZ)NO-(QS^SDPOFsHw(=9B zo{Pmgopxc+w?r(>A{qjhw*dCou4xGiKwq4AxRErPx=u0rO;LcmAPVr z?-EmO&|VUm&j@DcQ5f;2LCrBU+m9Gd_SGme$8lBQk}wjez1*SwhxDIkZmNO0)*nQ1 zwUf{j8$n%?QTYyo(-pO}s7~(rD3?!#an9KKc0i zky3%MYMzYYIO8sNKW0($%@e0gp5xz1xReJT#*!o>}Pu98`8`$CdTT-sT@QDU<h=5{6FmTsOWKUtNl^hFL7js4Xaeg))E_#~tZ zuvsk#+q9Kiew->O*?XcrTPPxhJo4MTc=|jEvkn#K*R&Hkc_*>X&>8B$?9LMw&MkVi!%qf}!d_N@P*<=t=a25*aZ zRLJ*;dQW9d|1B82d7IoS8%pjkiy|V|xU=AlgX3prEKd z_wN#(o~^aA=Od@Of!YeSn8ud~u5Lq~sdJ6qN`7ETm2cfRjXqRVMZLOO6*^7SSjY_1 ztrZ<)I`4O2g`C*=7<#QSgDsr{I-g6vcBGePblBc{ly{IvZ-}>bev(y#`Q46x{~U<# z(<6%5mrchYNX>7~pTViAIl5aN|AyS1*@t#qZyt9boG_>P`bhDJtt=2binGvxjKT75 zv+!~Jr?#ldec;~U_3idvUfYh2L#IIWcmHH@V4MwHzg)?CD!KYJX6QoNrQ6t)aFN2L{z$0 zg;Mj!R;igFe;=B^+*1q*h)ctxH9lC^q=h3VGZWgF2uIZPj>d}Ts5WUR$W_5)6@tGo za9KVrgFu4ss-Ik!WzD0zCZjvIM=JJEd|n)W^IdsZXMXo!sQ(Yr6H!80D~_5pkmv`b z%;U^K8`Jy42r9;C26&&3m6FLmI19~WIve;ojvLS?q9@j3Zbr(1eWUj7rt+jd^^t8l z=n@%^J_(~YSYoMGuAy~{w%JCy{62pkyk&&S?XP5|7(eF<_94{jsJ-1fpWuhe-^$AE zm&ET?wA~lGE-=cc<7o;+MY#gb21bd_bPxo1-o=&9#Q5EC7roY!;UH{Pp=6L08S)Tc z)lpn+t{RYuAPXmPGsv;NSvEM$E}c#>po1!iY&7su^FOLN<23RsMl5yLI}A+0cRR0y zs!?=T7N(_U^xV4wXl|*dVtHOu2O1bakjiP6TYMZkQ1U3_qc`boF!DFfhFvXy+=JPk zu^zEN#d3N5TD3~lxwzAp>#*7%Xlh%S5SnSBIZPL;cYQi{0vbpge3eGnY-wXylHIpF zqQ7#LeL_=Qso?5g@y2pAF z1XD(*cK2Swbg6U#brzO_ZG!4?3mPq!!FPKG3bGq`Q>Mw4^wVl{=x+Me3rS^9a>_JF z9+pkyYE2hXHg-f>N->tswZQFJBb!a~zuWUqEt&P?i=ft$vUdNl^fmls3F8TF}hd^v(%6k$m^ zqCLwtc-kAancjBNCG9HB1W-q~ir)lj->tly)H^v$xQAZgZT z=Cj6+p^J@~u(g1Xn*x37U_!s>sd!G$T~9SPQp?K+=#>GZF`1{E0q-WgVD_%cIBV8Y zwHhsJw#~h<_?0{Rm!WCC?DEx?;V^MJT>flTJ&5Va-7W)K{7j!{fd~j|@~Q}@8#^Wr zSESnL>Z>jh=_(`t?3TLUp2pMD$zVo+5&YJkjOgs3)GXIX_zCxZTvSE!us++kBL5YA zn=US&Bu@Y+p5DuKE4t{LHEDEF>t7xj&tD!HMAzq8M9$emqb*hpD}fdxKIv-X-rJ8U zNcw7Si1X}!qqOV3RPWQ`BR@d#zn=qk*OLCzYC;4gTZ}0VbKSKcw&XO ze#8P_mm_iHJQzhzxJ^cAV^=o%ziy%V4XZgT8B~?54*bHj@E))QQQM}Pih+Z+rAVG# zn{o2Gm;(&DsvHrYv%JIf#X};y*~l)P7Wh4_t2*S_1@g2V6r)evBIh1_f)w6-W;t&# z6Pp322IO{;yg^u}(-j9+vZH!*>-6Isr}L_T$R#8qE@{69WQCab;c3l|xn|7y!yH(d z*C(^%)U8%!dYBW>3YYD={OpR0I8x9IW$%^y<7Zx1`P5L|Do>FRj5dmAX5cMh7MazOV6{XtVs)8i<Cf8w- zzH)*V3uwp;kLS!fMGSwc;7Gh7t!wo%+w6lx0+RMYH#p=WyVh;_tzAYe<~4bsUBi@r z{M#g3Aapn~$d?y;8+d5ecjJ@rj?kZwZ*zdiifKkKY$UkS^&O1Kj@&Df`4HR7bQGD&#-8NPau*ott9bPs z|B}RokRv9{8UQupjVzpzL^oV9rrfSp!rE=rd5-r9WqkBN#eK;%xiKc7L zUHR%v>>#YSq1xY3N>a)^&t6BkWkCL2;*JoZ2%3d*#}cEy7!0S0KKTv`X)Cmy-C&|V zJ!A{!xu}XCz3h)SZuK)CYD{?yP@G!r*m3KMK4DD|Kc3qkueztr=E}ax(yb5s*fKP?B(zPp(*3xwu>AlJiXP4QTtvq0H5nv}k$)Z{J~s zYpLC2@O;%>z?3Nqa$>Rgh#jw+S%{8vYJ0V_ML#eJZAa;zx%z#uC&4;E1GR|R@(0IC zP|SQfF_rz+9dT#gsx9SNaUQ$&BA3um8S{ChOB^1Mrm~@BLS1#B`KN{$ClwghAOrl;UoycZ=DJS_>_TQFY z1jQ7(93OEXx*R`o>B~WS2yi$QGKepkkBq|z^AkOWjb-0LF2iN?Z#~TbbVbbyj{*GD zV1jNm)<{$O((ECQW$kBrld-$Iru8n;M?m}t5Dou8#$JLuZ*ZE-UN)X~OLlR2X(Sat zxs4pR=Vt!GxN+mX$MB>ToGXIn9dAQb2=K+im|Mi_*$ihR0*ZNrE#@ntW`Rg%dYOlP zug$S4O*WgjkTDnkK11i(u@uckG*Cd3!|oJz&EBv>>mTnCJq*P-q13u-@?-_7K3ybT zW{JQVs$kfo-ATmN=`#9^l>W%t6HY#IQ4tlSMulka*x`S61sB5qZ&#pQ#o7T&)Fbjk zKh;z=0iEv6bhRAR68A#?Qvmi`U9IYg+O8|d1|;QhX489~K1XCfxXL2Si^^MGi0*9Hbi z@r{V}u{;#AwXLju1KC!R6MuzYP(|sx+E$rI%nHyz`dfH`n?Tt`|GcRxk2qXOC~p|E z?@|4p$KVJf?1%=WN$bqvc$Mk68W)==j(Es6{;6N-NM0rqQdb5`F2}bTL+*XY_mysC z2tV=%ms?a=LMno^doX9x)uixZ_8Na>5q+hvf>Ye3^n^*D$(DMO39#6Nj zo#I%lJxR!q7oMAfA+k*LsZ~KH)0(<`s#w{n&u&I=>>OFB! zD|lG{{4}k_Y$k-kLIp^_N$C$)>g6q!HUT%|UO^eco^eauY~KJioXo!(E~s|2>XFJ% z7NeZ&$I}Qu&DH|0*v!Gi`>7B=MTmr* zp7u|=++2ha>J9GZkhA6CY|IJf3HE^f8VAbVACOKp(S`HA^xGQ5mZ0K41Nr~nSPFNd z{_y`ro~3*kG*vyo?!2CPq*+1LHV@CK2td82iBfZ8{ofM@*ud)+Gc^~F;$7;7R({Hc zW4abXw*ElUeuROt{%*>Dxg#YxB@G{5TKKj55jA#4$4A<5kzwPuA8lZZj6=xN8uWCM zAH>9#G>fmR2`A3uFV*vji}yZuG{=W(wv7eM28vTKF-gTdMcld`V&in_^<2u$DeN_S zQ;Pa+=C7)!`{{8(jOUEQ`?yiSrwjn>;PFqS@k&`92obsZDPEwFnXV!qnLcr!9mFuD zbufAcR<3Ys^v@UROnf=kPhCvDC^~{~RsE%zxA!F^M#pDXmv zMXUY&-}sf1NyTTDwYXlY>^i~tg&tsEVtLDqC9~(`_~2uz`o2pZj;0z<_AcBctYd8H z*$As>t&$;H$cC?AD8!o4CFK0Mkj4VwH@=*b{P$hrG#T0B`YjB)M^s(44j?DW*K1@p zsPM+;+sx3Ank@uk8^#|fnZQjuuA40qoh^LN2POQ6zaZ1aZPQkgcMba1&j&v?;`s;jS(x8Q$ zp@lr>cXyLr7Ab6rG7ZHB%Fy++kiKx(CGzmZrtQn%u_d(d5696+;Wb!CE{>;hi^)0p zh|)zL+#TW>nEr~~Gin9SKSLO<0I4W7NSBu9(Qx=m`osh?O6hyhntK4}ytz5i0xM1n z+E!);5x^FivBs!-8s*GDU^lbc+41FjeSoaDF`NvH`)s}IZ#MV#7(#GULTBgMpYrrr z?60IWFj|C|G1dO-JGJHb@Q7wiL)qf9N_>`uJ|HK5X7XUJ(#oh$8Rjj5subpK#{v*w z#iV-R0Y{0^p8?lANE(eKeCnhp*a)>w>{Z-@Qr58Fc3xEqR=6QMJ#FA`+oMdBL}4lz zbiFzM;5w~1Ys61c3(Y~B$^Dve_;XTU=_Nj6@9$Q;ZYosiQiX}}fYPF43G60WDy_dY z5tj(e^ba)9*D3%PJ^M|Cg%|y(2a*MkWFRftWwmQIBF)20AZM@sq5H!uzD2@tZ^ZYZF@3GFN z{?|$2q1yU?%z~T;3|6FO9A7|`}fT3sh9Is8AvNSrV-Jtp{yIFzl z+EdiY%k!_L$F@*}W9Dce9e%sGShM?UUY8or_sZ>Rub6D{|0H7x@`<*#lvS0{fHAd7bL^=7MhB>uyK%O&9RHAAnK1Y= z{8=oyA=m%zy-}skH+}1dhc!QsKw5?kTo|w)a~U<4fmn)yh8C163D}0e~F`%8f6t5@Md(M6qegA@QxQD%OT{LnJL@J zlOecLerY6-jdJAAzKNzppVjnU6P@3C zx6sk(qUVrkzs-f>u!MN!~CV~~SO7HmG6#ZrQI*C4ixj=w#* z9&-k+|HWBEj!A~nD9RzW*DTTd)cd2R^-A~REQWN`A_Wl7&9pO7?^$_1c zM1#3l(_kz@i9489jZ&%R>6yAlLxkRtA6T_u!=ccdYD9mvC4e9l=c$7>wr6rZ9FIB~ zCBsM5YOC^KV`g$&wskTikKr5aETHlSjQGZT+%oa=w)NWi4) z0YdB6_^EI)Af+}hpoejMHBjI$udM!NRuj~8e*`!s4~m_x1GVZ=68-C_$c1zIj8c4j zuGv>Ru*B-fXUN&**n_zUMX=kUaz_zzpLL5Lg7wp+pF9denps$5Qd&|liq4(7%ic5- zrR(XbkHt*qwCyn$JPWz)p;vzDq*N}9bY-hlY4%$?pMJYkxmIiX5R|@JWUv=Lg>dWd zc+1vcy_#KPGH&*|6yTkf0i!;xf=N;tqMSi-p{!w#nEvVM2|l`v64t`iKt-iKyaDNj zTBkM)7c~Rzo~gS=cNb)rhZ7fKPgGUz{!s6@dYe_fd=;{#_4SMeh;7~B?6&JWgxdvd zdaYVD<#JC>rUun4EPBOUxRbR4o{$GEOP$Bv5}Vmv>4D=LzYHrvF841UKhb zA2XpM56ES38C<5F-n5@x8FX>NeLx51ZLTi%fHOXf=alp9aHXk*|OCo)<;i{k++E%Bq>)Q1;m9W)cSC#zyT0qv$* zEF(uinUsD)_i&y*70~8!gVvJz85=P635fIr4{!6eJ(%%<3FsKj)EYixGU#Y&plqb^ z;)kyG*=bd*O-!|%g>5NmwAmxdq%umRo80y-4`@EgEz+$*07}J|hu^axkjyjDur=Nw zGEBMX|BmK452lwPD&{$Z7}Z4scsZ`1NUbEU+e%hp!+tlkay+VS!cGi9I`r(b4KWLR z={30<7A;jw_QZHrBFLiF@+VBp1l7%^1|3~VOlPtUTnJT~QGKHYHyC9PoqFntW+;sG zEZ~gT098Uf$7~zDSdF~3y~Lz`b#edE!@x!tp>QDsA>NV!D=(VTa~@qV7A;1lfrw)@ z{r2*;3j*xF4Xb0(&b1%@#TCk=8Tx$HP>D&2O{l{zR8PQ(No!!AF77VwB4?O^dd_nZ zGSmTr4)u1m1V-GQZW5=005kX9w=v(k`3>0S~5kBG&+I*;Pf^V0U|4t*af&|FSV;k)Ud-8*ip z{fhU3Q$zc_`3=VR$RGxkNoIaW%)DOE3n5zO!(xc~Om+Fqc-QW;tk|aXYNT~HnC;>T+xm;3* z-;{p_(W=2_JwLu%u`DkW-n;j*|3UEF;It__k1O)8p|GCh_untw!Xc7-r#n!Jb}s(i zmXVgBUd3*g?-PaspxOz_|& zy(m^Gid=Bk%j)#?uAsM=X_(KM;!`nBhL96sljIx-TK0ZlEk-=#@BLlV;0cD*ZtP_k zK0sd{h5;9D!N=fUU z6^-&~qA*G}FYC*!1cTZ-w}Iu7Kxdce0+byLtCu>)g9mK8o&hnF&miTVYC+qKtKiNA?{Yg7$`bN*Gr=sv=JD zRs3Vkbu@`i-1wK9EB?i|efhZe=9o(S98;CII9KypJX|7Qi70KGbyYe`zOGwY?+Yvr zk;^sTvrWA|Y}e{^nz>9d>B?r1es^Qnz0FI$TG|&d>_?S;W%Tmx6@S*sH(cD>fm~BZ zx98WH8fUX}OVRNPr{reyp3!lg{+G($Rl${~s*#<i`FO@q)?zkpSSR9{?P25Cur~ z5RyP4-qpx^d(SeTp}4_j2r5*<-bT+xYlB-ZlrN&KJPkV`ynEB}&%)Z{q~9cbyCyu{ za`aWdvk% zSo{%E%1U3hgD5k&9Ux&lnviVd>7qjSCSvc_XC z(#>HTPH^6$m-9^>qr3AI`x$469-;&H{OJ$GPDhh6&3SH(Lk3F@R9@Pg2V(0lZDz-f zRn^Uam@@4HeJQ9|`t5mHkEjgzy{p(9(%l`0XyKR!LqUI<_)6ygEy<0utE$fa2_~wZ z#rvgtotVsCztlCy&GEgewW;%vlA)!+3nxcFD zoE@(L!_GX+%1_|E%k!^bet{68p>>ZBWW*U5S`SLW` zZKi-v{K4Rvk9=72EVw1jq)>8}n#n33mgXH(&+GPu%XW`Wdf;<}YFi7y-iVgL9%$EX zTsvDuwaT7Y2Y+VBV6(}yI-Y*|s{a42W?*fk!T*^dC7&uEeY@pqJ<3+UG&WZz$L4gO zgl*X{Uw^QBZTEKm^L)mh1;Wkehmne@AA#QUuR#lQPmRH9 zv|R!=DnS*`e@6)K0I!Tgw-6u)()W_9srPp4?cJnJ%~!OF`&?XK=V9{G76fC`41X}N z%c^-pzJk-Xe^JlK@Msuevc2c-KA#sCgUf0$C{@qclhM_mwcgo&1xcJ_a(`h5nVw?n z;+SNK%HU3R_gxzCXr8%Wp3LVJ{+bd>laBic^XAJJ(r**6ZXSTUs}^<69=0inpY_~j z_L!RxDWZcl(^0!~ zJ4oVhY1MuRrg#wx6AS34(S+&0s8jb5uY9%Hm@1Hu)6;KoDx~!|`ZW^ky4T1v-{H?& zucc=A*^#OO0Leb2S&E!{NH98i z%Oa|!K|VUr*12C@4_5dds#R@4MLm@r7%GPbgX$cI{;2!@KAu)QOGXHc$Elm->@~vL zOk5he|5_76?}!}#G_8X|IN60#AdqXbynl!T@Hn`$^O_BrP4R{|RbiCtBo1GfeT4l? zb*r?WystFMf7@G!XQ!dIys7v;1}#IdfFc8Hy-v}P-|}960$6V0S4g;oGbHP*%r~iM z|NQeUqFef?mEy*p*rUIct8>%k{}f^Jk~A(aCa2RSb?Z+jiziggsMdFcH|W-uclUA! zQ+at#$n}sYl|ggQnvPU55z-RX(rk${FVkwSHI(a(ZREm7^wq$5(48Ak3wu4=dHzxc zSmX+gOlsgTjOy)*_VF2D~LpI-flfz!%Dq*Fm2qIuEdV+O645gZp z*h?3uDI*2A_^muQ-C|f$`!LseY#S%mpj? z;_*40adt?*RW^;NfJ7u@7+$T)lgta)1@#;Hrdvu|O8K=tHMGNS>+Q)>Rf;$N6SsJ#dL0u@I&@OIjg0*xn3emupiOK4*_lOZslz&^%sL( zzFJ~za-8-6;8#``E#U98gawOuP&2%g0^k#NJ0e_`Qn?fE`UKj>RbUTiSew%Fl_cUg zM&fyd51U?bu%qkCTV#C6BC249&1ii>SIaE@0^|T0Ja+UJQZAPp25R+U|Euq%2)=j3 z;`0L@D31bcNKZH&+IK4Ss-=knih!D4b46w;|KFb(So9z1{Dh8ig;EySO2g5>QU}xcvO%`uDZg)pRDf`4L z6&{9|Fs8&8NAs}SF9!&kYag;(Yem0p9-K+At`!02%bZ}Z18Yvgf3Qy(&iaF(Q988& zwM2i_Y>W>!JeJQoa|#6oymQJ#sw0At1LpVAHy`F4*=WAQ^Y6WE6wFprE1mAnvbkPP zYD87|CSa%WI>hUE>>!S*$O0=77fau(6{uzSS~!8V=(@tioV<&R8WgPd%DO9dU5^kp zo2NxXUYqvkpDT$&L7+Vbw28XJEG{vk=irx%~0SIZciq?5$Na8IuPov9jqL z0zz+*rXQ$48-GJ^QonSn{LN439?Q2u1JYuC{+)1%@r!wmzo6d|E(lpFMhI0DxK9I7 z5!+2g*lZ~c9_vU^pS;zBwS7-CcxC4+v?r=y(XB(C3EDZ#->8(R#vvdWv83EutT&T_ zb-xm_aSMLyelFB5zzTDF#x$R4MAbFlSXr!L*}G&gn<&?<<+uj4BR$N9yL9QZP@Ey%Utq%R(dC4}(6gd!HpK`00WG z_Dv$zs2w3&6Q_NzY11;e;#zONlK2Wz5)6yv^*?^n-v~R&F;;HDPoLPHbtaNm$v2JPtArTIq>DxpDYba8A#EZ6DkdGIaz?B z1{ITXU7~V!5oxeQ`Qd07z6%V$p1Hro`eib0Qalv>ytxA!8)r5#>>B;G7l5PIIz=tc z?XgWOF=Cr0vpD(D#wmMM$?A% zfFj^4w?p5I%BI^jix=H2w~3Qt~_&HMjmS!EAb z4IW$_Neix{qVJ{%I4)u&!3E%GD3+^e-tn_Y}E+wnmn6ex?o@m&Tl6U}i6< z!(aKB*sXy{dM0l}7q0!Z@=TN5-JpX#H^{`sVTxnvs9$kkt8gnXL;n$I0Q9VG|7;N* z%xkKd643OLV1th~%dtwVpsw7>#4E5hzC2V^64pqYVP9v9zfPCl$)@py#nURL=ctuR zf6~Auvgy=l*m$Q7F4|L1{iUYnsU2y3p<-OSX_SuxT7L>{chTM91lhoF(Uj)bs9<{= z@0_0MO=&bOrP4ii9U=Ptd_N=nu(7exU8fMc;He_QQs9|hofoI)C$?ZjTEs<;|K~ro zQv;^FnGXn%t#b)Xg8=E4zIA^q`vtRRD;+wJE*d&|-RdTrO=mEIx`=kRp`F=~uL%9| zX}1<5Rw6#PyR`8RS1<-5CP@+=+r9pvHQj>OTTRq&9WggZ<<9GiDHMkjgs)8Cr5h8T zdLHh(UW4-@HQuHfyHHuER^(N5JoV@PKjz*#tg3En8>dr1N)V9llKcS`rByJHi-1wPL?@ArP+IgkGLyRLn0xX?A%S~JGD$Cz{6w~{6&`%6cH zXJUl7XMtyPAHI^K!x!RF?0u)N%%%|d_P-)jnCVl+s`r}TCFp_l8VCoA1 z=_D{)sdMYBc}8iKsDw*?Bod9RbQiz1T;t;@y&UsH^vqWJEKjqSSkRQ9p1wUNS95KQ zXTs>TBGE*B`suAXFg!N(@2pNF_Ffc8pxzDjOL64b)R+JY>}qf);S*4{V{ zw|SkjGo*z5sjyW>Nt=hsJ6%ntBH~l#XdbH` zDK*Q@<<&QA5r9{kB8{5B1EVHvNsCs_$51FLgk~NH4yvZuP{eNgeL&jPDb4vN+p=df z852_344jz-E14bB{Cv`_B6JQD(AApwRWcWatPi)pCnQ&PN)WxaTc!2uf~1-W82NO> zsz=Ho6)T7rxms#f;LkZ{ZjwxUDorBkE<>j~GQWXWR`xKS-O9f!lc<|L=hSToM@HFS!*DY1& z6<^MVJBcwhs|_b+>5AaBkyzh$tdGRk5hRWek6gH(dnmr^bN|F_*dYIG#)(U39He&ZJs)DzT7Qxtk@=Y`qbKaybjd2)lRX)_N~cXO7VoLe4y#|gFBn*%@X{MWVgM> z^!lbJZg2{*U}nlZiJ_K-UY*vv7zvs*Om<}Ci<@Qlp40ceY4V_^cQXP%Blg5+ZO@{H zgpj~8FfJ~l^K<;cp6<&M$iDshyN?4Hi1-|$NLjX|lw5h->&Vo&J|NW@s-vxta`amRw(S<=@J zb3!NOlb7#YowL6N#pCT;ykr;gxW|5rvT&r*U4|9mmwkrE$#_y~nI`bMjh9kWr)OXJ z%HX_N6Wr- zUIFv!RXwQFW>k`(Z2r#q>^KPbH=b0UbZ;#qPWq8|#XoHTs31WM5`Wj+rb5OtKNw-+ z=k!pmEDTVFk$Lsgud#deTNn`av)8A8M#k4a9}#j;37 zK$s2XDG=@t#`Yq;oB!_96US7vtwEpwx}sy!g>uH{qve73d57HfJF(&#j_V`U<$Y1i9_pO_yl-@KdA5qbYGHo6aE zbNu(%umdz8V+Hn7O9U2vHqq?N6OWcQEkIf4)Cw8f6D4Z33D4{l{zV(v_lr#_KC60^IaFWd@48s+!uy zQEo4Xfzgz%8urbZTtGQyHe4{vi{n=0t# zes%}IbsXw1d5WLd(tuJ9vWbt|bLSnyE6-*|&))L`#cndypA9$u60&)9ufH&$XTKK# zkScZ`157Xvm5>Sax-lppTt~)VPSCN^4R=?Bt?B!CYe55%R}K#q70qb;CoO&BF8p6S z5dI?7N2~cF&`LlFIvc>G#FL}I0RvMkLb_9C4%R89oSPL^*G;tvU^V@C87tx=7GGc) z<`PHb9B*|!LgR&wl?@ap0ol6eq{_Q!#^a1_pKh*7MY@t{b2Zvwqhu}jCVoD5z7s3q3o5kTS(0~Ao593FjM&TJ3%uZ=1CVcg!< z{lmGz+CY~DnTdIhO~3J(;$g_7F=(IW87y$L66hr0Q5BmQ@~LrO^GQX(Xv!a5m;n?* z8rxJK7k^q)(6JuHp^i2UJwPN!q>K2|>>di@7}!AE*gF3G!c#2b<^}sZsWLp%<2|Dx z`@dfwI+5C_=ybOZ0T3Oe8N`1$pnHUtughwjNX1QI-K-H2yMK5+Ef6LbihvuV~L9CGO?VX3wa{^iw$v>f$tnKRv*C!;?=l{IlJcg)Cmcz&AQ;u(;$ z8Ur~z#PM90^n6O(0ho-3c$;*Q98QeDLrf?$9BetIKLC(Uk#X2YR}U7oni+>!A99T_ zp+}P4p6%ltLI_^w}kCqJpLyE|usP(FN+4Z~JUx8ndMBIjUI zHL3VNB`1jm}LWS-sNW`y)=ZWw()DcE0B$0=Xhw0*Po3Ta9&V7e19W0&Uw!W_doPon}W96Dz zRe3m7`|EY=D4^ZGTCaDMZ9xF8+Vnu|0U$A#QM*Mrg#3dj<*(WQYYqI@@2-1hJV3{V z5|KNcDHI^iP<9yS&S2Uj8~fMb|C$2-<$I9_@JE22OvuU}Yb+CBRg7$bHo8B-ME^B? z{>!z0|5J4W0Q>+2lx6TsAopMnqj!q70iMC=|CR6k_tf~;9QnU~F}p8P2U>{fCv5-u zAV*LG^v2I~?5#ggx?uU$8*L5e8VQvTk{#pRMhV=1BBBDO|Eo7*t?$)fkZpjzh_x2x z_EEhzo9UG_hw!LP~i|M+fdxOb?4CJkg>OXuf<9E`?- zx6b^Z5Nbyi-Jj9my64lomx!Ql0$NaPxET`od!7DYWAMMnNrVev#k}G$yc#EMRV&@`nQ~l5z zbVW7|YHE|=22C@|MoegMl>+##Kbr_kHv4{Z_H4m zowI4_sizgcuHL@62gpRCMkcN>fQnuVP||CY*y8T*oxz#xb*hflTgu8RmV2zae388GBV(YC1fdx@4zahMlUS1+9i5P4V4QzJB}4pe z^9`^W#fr$v(o<2>sJe>@w4<;PK29)$@^7N_3s4&X$lFnzI8gq^i2wQZ|2-m6XfVK2 z!6pcn1AN;Uh56VIf%$*1mjAm8ni2qR!ZNCU#C%jB^WYsw{_l2wjE8bZ;##y@99?+k5RkUij@#IVDi6lMuY~2^#RlM-sb#^w7LCz{LYk z*YXhn0#JX9fIqr3kq8vPJudQn3=WPuVT1I4C@%i<)01)oLbGk%6+oZG(m?$I3Ih;; znGBE_V#J){hJ~X(TMe83qldOr1TIcx?^8j0oCHQ9LHT|B2i%#*8wyYp^nO=>j3m!E zEc(D*^uHm=f5I#xR;2eYYXJ-sjS|$KcmRM`I|jI~4tcpXFibnWc$I(j(BM?yVqS}+ zYyyB78dC`8KEwOl9~&qjwj+X?QpJ9pq@Cr*@duYe`OMx=5Sl@l`w$W84?NTTil74S zTP|+4@Cb;{5?S8-fx`s4ix;@qZs55Tr-)Gug*)v-((QNG#Ud17LU^FcbEyGiAddL@ zcdvUe5!F6GUn{1=-`huM%iq^*16Dh!+`Z`v>1uci+?U004E>Mno;`3eIMq1fjdv5J z)P*vj&i&g4M5GBCuzR*pW^xK5MkXQXBY$uyAb1Q5^mVEL>U~`i%pV|kV3~;A+uLre zXb*PazJ?9?&;I10fg^pu#k{RV|+mp@t&jL5)@q#}pB0`A-3uJW&J)PFJ>|MTx61NRr(2l5s|!^9FT zy)gchJ3}Mh+gs=;CQbm9QSn`UK_8rQ~M@(ZMx44gO4j)e_efp^7vS#U?C3u*pXy38XXY+H9Bw7u_d*w91 zaUBJt68_YZu95c3s}#5YrnOP`Nq^crpijZCG zr3Bg260W{Z#GaCQ>o*eR+(%UQH?q2tUKfnnskzrrtEg9@RK(O z3QkLmTtz7|t{#7pO|%=v_<-fUarKR&m{Kueo-EqnHgy1m&(IJTHgFZMLe3@~;%rC+gZ zk_k^p6-Pm39qH`eEz)|!C6uxrXJ9Z-`}C>8_r&zR)29=($3?3+(4u~)}E2?oNt2Aj=1spzsjv3Iwo)$EGuml-@fvu!{Bpy@1l z!of#yGAicj!61uEE_ru5sBVow%_Q@)B#wRO$DxL6$jPnrye^fjlKi~$ldF>N86PJ~ zJ-09O(P%4Q>yM<_?0+LIX8=)5b%BIHtcRVn^j7>-d9zsYHWEnx>^Gu>A5fnQARF-k zCXT9&U@TC#x;~?LpRTvfu34#@C6R8`HM87^E)i7gryQK?7+xvpo!4`}^hi%60a^5~ zr@npl^GnKpU;T|K(@*hw3~@InqBdwvsr4!sVnI;@upJhDok5wBnw6}xPp3OFMi0Tc zK|>Xk1Lfn3c-p{NZ${?TBV@0PuvD8@F!O~q+Jd6kWi%Ca>pnz8WC=oHkty;gw9%)d zq4Wcjau*I*hufFiF@@dsw>{(^=uKsI;Je+=6(Y|EcUZKYYtkA~vfC=mK~u+(b;HIR zIv70#*CBz)OuNxfrl&*DHJi%M=!8-(_jxF_FG!S*pNyx%`N|xR-{U7+p zwX4fJ@nVP-P8DZk;|?H~9lGpozqv^z3zlh6D7CrzaUr z&*~gYIi+isM_kfEHQvb(Ep5yV-wSakrZrW9Q;DT)fo617WzgL|?7sLez4PAf8j}ll zLh)6!AdWC>N%$k^7fp|!!~NrrNi57#xY&O8Hwi{qBv65n=UEe9$1qFTi3U;0nrO(x zki|RL*wEcKQx4veD#L*I!gwXzs6~PwedLeas*9$dlbNVp-!a(@ zZx_7lcFA$_DH%QoX22JJDSHo&xtUd1PJ3XC8REtX41^n%E zI~bRpg7~c67(oO+-n^_!6^c*xc2o`41$wTLW4*J-gYAN+jLGd)F7a)cPuhxKJ_4W2 zyXYLz#IRrjvw&!6i$h8`&c`iFYHvxLr`t*eS;Ae9F%3diEzv97apy(1rsKj4Qu)VT z|7&0-RUbcezG{L|7NU11&&SnD7KwPdf%Yn5MGoTNdW?^9bxJFqm}wVx;xN9WE7*+X zXTC3&gFeM3aj1|&E9C|V9l#TW`wLIwBR)6hr_1Z}O~2E3%Mv_WVVPX959PqMC$8JQ z(0jIYhbKUB;gR(M%r(cKvi8<%>w5Wy_vW_2oDt`}Qho3p;`d+f4K`MBcgTPG}DcpUSPIt2PXlNC%bJMBxN2GK3sNns;}Vd;$r(yvw#DxwkhQZAIf+Y|6MW%S zoW|Fz@6!!&YgU){(psL)s2sXqw7I_#JYax#`>~+v|JGlxEn4*{`WW~UR*3$Ell!Q7 z`ASFujZefQ%)7c=?QS!8O*S&!1~eBBuHTsL5C3KH?mZl1vl%-mk}9bST3Mv@XGe#P zNde^fwIsCIds`?LZX5iPLby{OVh%dNwNcwelo%YOJ_Py|jd+cEETu;&am2@)JT~nF zcR{qKEU zyDvz>*CrCWUhg~3^8@RRkxt1>T{8~Zg6|X){7E!QJ)?Wq_di~qH%+72U#8ZJ65_)I zdXpI;{o{|)05T(F>Q9$VjLrV&P_4H3i8GC3R6__(3W}6)*I4CnNSqmYn5HO19WZsw zcJe=~dyJumX-FUY_0YKM@UeCHNYSh>f5r;w%j;zQ;AX{N4ZYW8NZf&72b;E8s7BB& zM_`ydxH5xvbOXt9s8LN zgY<|G%|*VK%b-#mawA)ZD}|}VRImNQBx`wMC`3odt+~bmo3m^|(YCy?$)K)&LjVjF zdaM+WQXC@a_^l1125q5~H&&Yv7OQNxNh{*i&V<|P(HTPYMr7wQ8C`l_Zc79wG`)}S z&|(LkPCuCANiPYd3&l=IZAr8jYhuL8t#w*ZBVw|LBtq644|lZKxd4V8WkPSHct^6P zgJ~PxSIgU^7pq5$D`V8I>Nsv^?9+M7tLKu}7Ebda(;5ZKXNaZl<0a3X4;il470(F3 z@67&r93FGR2Ey!o~NlZyR6UK6gj{^xt(`` zo2zSlewtl(=Ii2RBUD-fu^~`(DdFN<7s*yRc!5I&3EPPg43}dsR_tFWm-2B@Pu*~Y z*y@8p`0~32euqL)O5Kxgsi}=UGJsj}A2z1s8+~TxvvV^QN>0BC9eKXF^BV73EmU?Tlus7o@KxJWa8bJ0(sMl6 z!#$msTkZl&uy23%7%|Z%M;FVpQttX2>*lK7oGxjet9o26`K54w3Hs*ONSs=-ed-ZH zNU}Z2B*;du?(4^%o!eJ^t@PB}WueGv@tnWsVV}c&7kRKZBq>x$Mo8${u5+@_pljp! z$YP)S1g$KG2t6lm$Kws%aE zT0BKmRdplJSio^hDI*rNvQ|R&xnr49<5U5Szc|nBYO1=*vnuuCA@kT1aIny+r;iz$ z!pNzz$7qyW)qKCHH%p_y7GrPB>8{j95-qdCDg(Z7&cy2}Fcxf9XG3vqk>2e%Q>V2F z5p0**Ay1^}ETWh5$Osz#ytBzAj?v?yXWH+{nHY=$_Brx02!6&mn4}jUYJ8#+1Y!o+XrLr8BHk6UlgIMNjLJ z_rRA~a2<7LvusXQIE<`~iUrP0MN-$ji@tSjiL;|bE^9Wa$sXcP_O`gyCwi%NalNaF zm5a{Awb6okAvYK?KB7CH&pv?YlQyx1)4VP()Jmk0RilP!v{yIU&6iLZz8HdMkv~M} z-Bf|EjU^1iYU;d!&)|w{C2!BB0WPtG$M?ElwDCt-VYuShB`^tyZ zm3146l4B%^Qs?XR$Yp1%Da1fQ{zEC~pTUu^3F#P)l&%trFpv^juw1nXht+ps@rF06XATIODWe}DZ=iov>JnfF!RUrQ4-vL08 zpuQ?+w+sJi#QNZj+G@Fy*KIVRdt)5a=z2w-m8<4@NlTZ_hKHO|Q&`kxYKLo^QvCuI zMrm(gm*GALU7Cep^z}RLIm1PxI|teNxAGIn=gq}5Qg*k_B;CDs#E~}54>7>1dSJ+E zJv*E9`R0?bRW0~35c9Ak7pXVjcRgW>T31%-fy)0Q2Dm8>aGSBAfBo#1|>49U{ z2w1|Gi))BrHmr^f(qTVCM`sHkioYl6y2mG!NfPas7TlRor z@OJF|jz@+LcgjRMO5D(2Sic|cuFa^X@uOgxq~K-0t7Ge4j;zDr6iba^H8NZw*MzWj z*D5q=5P#NoxJPLVKu z8f6Y)wo+c2&ZanUL$2MXpehTys|k^S+?Ea-LyRyZSb*wf_(kV=qc6o*TrvMYE5#GMoOfg0doj0;B`gei;g%=vM-1DhE8WUt{J1D$F zf~GPq&_NTXyIyuM3Bt0w(QLo{CYA`JEsXC3gIx^k<0%1FsHW}Gy6gfyY0*1LFU^$=3Z7MW9Uf)8xYg|m8l#_gFbP1PH zVVzk$eY*2^0$Tv;`!K;g^m^xs7jLt_pDQzY;#VUq7)M)6MOdGuq2+Or@lx7TQS7gI z6{MIOWgSej>5?3d3j&=tw&E{cWj@$Es@j8v&^=P|jf{1c4up&LrV5wV(=FWCPm}th zb&AL!P;ey+JmDa^8>Qs@c%ut{s=vOGJaNK`*sa;> z4a*SwSysUToEvY5Nc;5YdvPbZHWC-f5Zr4&E!_=@uRg&P9RchVsu2!r;wD~k&2x++ ze!T+62qvCNIHF5~*Md&h?rDNve9{9dXfb*{YZg8c6nFe|$ijt2H^5B{&B$)l^x(0V z^Vom9`fUj5{{SIJ0SL+K9d;R#Di4L3DAvRxNc;J%h!VLQ(c+4CS@}_oJdE&w1~Ymo z7VL;e(^UVIkADQJ?ILSyV(%CGR>vGCRKLOU zH189PY{H8q@=AxSMbI57t>z3`uxMk{)fG)z=kZJ#8nMi$H!diWIYz$|c;wK`S(X>^ zgn`A*6~GtU;o$LCrHQI`n^lTV8ug|$cVgs01YO!%Y~4jq7sAAbV|4~imD=I(GS4_6jYm-( zrA@9a>O}Gv8j7wCD61hvjGF9OO)r$M4=Al%9lC6O_w_P)UYUp9 z0TB_RT0hj{t#EDibf9$I@I1t(MDc#{#qy5ag_zu;!EI~O?&fiSx6sOs+1UCOCKy{U z>>CZL84G0=&syCDUE_+eKq?R&I8L2bL(~PUvLa##CPG&yU?aexYg*xx$DXq;lH9_} z(gjv`@2KZ3D5EA7F5*LYEKNsxt7|Gn6n6`00QVgGsyd0wk;cPh{^7VMuzR z1kS*`C3#x$`|H5(VI5Tb)$z6k+&qg3)ba;0*(*Hg*VR0xJ$G8zjLNKteH3my;LlDr zEo+<&1<*ts|Iyug|M{kx&b{Q@ayYdTG6g<>o7A)uL9n6=3^#!#D@R*pqJc;v^%rlk?|}mVHPaN%XOI zjhmDK_^tdeKp%u^%~%;%WLSr!$DxXt>X=q8>|@x?8nDmL4Chf^xZtno{-K%2n4XVp zHCL#&!!oN>absb~%?06^Z@S5j#MRBM z`q1eVP=m*~l=XmPKtEBZ7zO+S^0nBKzfaa4 z+LT76qG;3vd?p+po1|04QH_1G#?!PTfwNiJZ+8Mt8fd4*@LndjeIE8__*S@mCn2Er zgHBCxcvWTFv-8X?`%Bw^)3DU#92!H8#;yW`_*i?5*FSVW-j$_JXfQU~FeGZEuVG;BE8Fk*OV^)SLa&ySm}PVgkxA zRYV7|uq)owB~qCRog|1+`gJUDS%UoN%TNr8+m%H~&mzAfzsD$mUM)&^@U6TM3PE@*p)dxGg zp!$*L>PwwPS%FVtjetlbng}HNE&DfA$hXf!lVmFZ{6pa>=!M(0O~Q;dS4n9U{w+g` zH)k-HLSk3KX||G9QVCpAk+(cgjzy~?W{l${v8R+qvK@j`AeQB3x=A_&a4&$+Q|lB> z(dg2B{7$#xTqk_%lVTvwtt<3abQLjW69Li`(}&13R=m350*~Ez0Xhd4YZZh~-x6C( z{3n%u3}P)|O@$Az{w!Rn!hp1^P~vT{IeEH`1nTgq*3Ecv=W;WU45)xwee) z6WY6wqx+KpD!w=+T|AS`)#WOn{oB$8X(_POPzB&A=CFBlVxE8hZF}|Pm)~xEuvfDv z)UJ%SMiJ!hSd*jULx>GPhK2xXtm*mi3kJhnj+3e^AqT!pP14(t;b1MimPI!dOU>}|fxJ^O4Ar+h#PyR- z2&T2&X%3`!63F?F3L4dW&KQHzanLNsxz8BxV#y1+mZX}^20TgI(@eL5v}G>pjYlZ# zgfPAFyFtM;#0WK}4o7wiuojD`90c%mM7Uv~E_gxFBQG=1z}JigOcPiCB63y6#=>Cm zh+EF1!v20!AQX5*myFv@@}$km_NtzYn9>u0ld2Z+1Y(y8wn%~}+-YQ1-nW98VxrFs z_WCX=!Pc{G?W6Hr=6QL@Z(1y!Ulxl+?s+C`1`4&cbQ8~je=v*(kO7iHuoWD#ZH6!A zUDTo^NeMgQnkvKEakencpU+8cL`J14@i_!B2fV&`G*DMoWZZu3Sf^QSrITNw0B<>8 zkMeD*gkbEA&U`Opa@iB123Kl%h)nvxl1Q#0njhuj#dH;Z|sg)b3M6z@<9vmRu-J*mGi@p0Ygu zj4DgF9&G-N>tD&E+cmfj74yRWDG|Zj^SGt1t?>GhvK?$-zd#Kn!B#|b=r<)}aJ{%t zrp4^{rEbrEFaTcMpxy4W!Zo<{a&zZM9k)tI3u7wUp9a^W(eL|5gye*l7HM3D!~oph zpRSi#XPb2>#BFD6)7kp|xbu-01w5NB;8iJ^tUL(bfQeV)7VT*<5RbeknZS49t?+6vkOOE<;e-AnAcgl?Ekzs_OM%E z)GOMACC_!NqvMPGOvDO4_90VL?bG^!Q>aG-Bc)As@lCxoC(lLn=k!vW5rT`Qvg+rr z7O`?d0^en@ZNN{WgGQzHWsgZr(A9cF6#S9%w*E$=PzRy#CkrA& z;+LRR`-$d2wEP*~re{(-w&J1+iCwV@r8eLwOA+4)eVEUR^K|IQ$i~(jCT{X}D51^l z@o_qym)h3!?bmg}IZ}`li2Y6(5RCL2E6s)r_N01!BZ;gihupvo9`Dm+WeGL=A-ZFf zU(o(Y>3);A;AhWxrUcLK(Xvmmw?_o{9EP9iY{rAP)$dDne>?#vx7xniQ!txY*>Vii z+xqdc4*ixm?VeCWLAsp1&|XK#KoVbot)^+Q0M z=2Ufu7iMEikHAY9w=T?5Egq^S@OO*x3@3E1tolICX%WWum4&>CAF-hZ{>?KR1O8V# zM^`Mq{?;lN2cU`!s;5-zSqR;VEx6S8A&YZ4<#oQ_X_%gYS9HLMQW*+0v<>0!Wt^Ix z1U=w1iV6TALlqjaK|$ob)3huFf7p^L!@6Qkp+d`=Pk56LzzQoy&Eqg65}lf$uKGvA zK51T`80?YxVk8R2@KGJZK_s@VS@;^Bxx&g>UkqLUxk>$tXO@-iK8`tTjX_Cb0yL!e z1wlYKT+IRJOc~0~WD)we9Tl`54RWE^+Y?s)G7F4;#wGnhA%2PUIyMIt&yieB-Ky6! zv3v|^+u_wUsHY_zi1WKwk_iviF1VNW zwBh(DU1=T2tmFyb1Fk>y1>fLVDA9+Q6+<)8p1UGYG zhW}`}3R7R@`%L2cTl8|g*9lr3n|oHZw7Ha&>LpBTbv^s_`b3Eoeb z8EnfeEb?P+OKi~e)1oV#VyIiqf_9Rihk5k%=6(RjmQ2-xebSYm!cO_C%LC7Bk1f?N z8n4FymSh?piAN!6U6CRSNbmt#8E{Nk>LbT(Lcg68hW=%gDesN)J%n7bw-d)Yl7sm? zJQVWh$ra0zo5b8^Fz zbYTaWFFJ}pkKCTPY2?%+LH)$)@71J*M_ibDG)+wE<1!q5#}DqVJ~)M~ph|j1DCyzF zvP2e}ftftmxQ&JI3R|#wsh;KaBlX+>^sQrvMN3ca_Nn%Z41=jO^k!k0fl&&I;pZ1j zp)tp5oF56{gOG)BsB7MO^%B$P97~_@-Mk6Bs>(eZ6ZL67rsIul>`5LkDo0LR?G{#u zQ)$1&x3h91AC!$=UWG<)%;6=nc|wKvuBJb^24zpso{}-OqJyw+E6?R1)Bz>HM%Ko0 zt^6qB&Ka~FgI*cDZ@v_YZ<`rPggKug zoUqvFrvDdkslKE-;9*#Y)LLm=r=<+ zs*i_OP6AtPC6Ea|eVtZG{C+W0h&^e}Np!d2(lK!qz@Bsq`-6k4KjA&)Z9*x(ai?2aEm32`AJS5?>TiGBOz{3P6AXWwiTg-%6`|+!BBm)FOUJ%O z)wwp*W~7!W*>nlac>sc?KH{-iot`MCP|^yRQn^?YOIv6Ilt!raI25B%&GA$e;}fv2?3a9&KrZZ|dDy@AWs z_x1!s!WQcpK39LBWxEoGQeS=)UDvVcF&hVylfH+*NNTdBH5*&=4U_8p+CQa;W~eoP z5O3GRw_DIH!neI*g3`0|wy@O}=J6%=x7Fi_pQaIdUK*iQw-NOjdH8Mw(M}f?g18PI zXAK){kUZ>N9gJcd<(E4#btx)bTc#zdHL>fcnD`Hy?LeS9Y@^p~wwOI?G!#3k#+l14 zR-5*=`S9)yGTQgTuD9yl;F=d+t6->x{cq3{p_O^^HO4zY1bci!%+p+VU9S0Mt}DGJ z3M6d5kScg9$k)8gkksXAayyw`vm_|lv9q6T>8WSzHFUgji)0X*G61!VLR}((Ox>fC z>#9>#^5bQ!gh<%%OTO}To6q^KN73ZD`*4* zwr3q)<&@9cpmo%VzXWP*Kj%W6C8=`8kUK(gN)-&m)xcu za&ULK*|i_Z!Q+XUFs0X$`r^v#UWcGiGge|2j?p3#9^8J>!`u_uYiJu5>5RT56Bq7{ zYh8G(8K+ZSm*f`V?rI%cWF+QlC z<;1j~0E^U+XT`!k%!<*N^MTtm; zNNODf(?s5YDms_>NQPWqYgHs`Gu%ttvw@3zG%Z%0ig&OAlaAjoyvj2mQ33%^DqOL= zC=k|KFNqUPPh;$JT)Ta{iXqr;us|ctpE%mg~QcuJfEQjk+UJ_p`ler&H60O5G zAt$-3W|s-54BzD+DtmnjEmbS2DIFis$Yi6AbRV{U^2p^?@j8w0_n8ue9S2!`%js&i zI64;S5vq!bmSAVR77UiY0NkW5QTJ$wL4!&7Na+MsxN=fGuh8FI0N+u@-s)q<0(&W; z0o%rBlkv(2qip!sW@K6>Dn2zYwfwP3UU!d9_tT4PmY0_sO%psyVW&U1RTwo|#*p(9 z<%1$6bDKT5ccz_r_=OB;M8U4@~+r;l1pLBAE`gLO&=0+o0}wX zCDH-WkqGm{&U@ORtmxJ&@>VTRq056fUsDM10o z^w#Oi@?EY+qZ$36AP|ZDS|sv1v9!{1j{yH_Q{ducHCY5=C#ZHE7I9LsN8Sn-(761K9%1-KZ{^wvueYtI{dh_hYzQ96IQMePokOZND2kog%04DM6l#s#m27kge1Wu@e`2%~mav0bkJ)B|nL<(iD|3<{DRi z%ZY00ZI|7t?&lY3vL|Y=S)f;yTbkZ8#Ctt4y$Qtu35(2iScAx(zdRBl(NJs?yX5kTVO*^UiNXq0P8fvs(@^w7 zJ}GgD=JGSYR$%t+XsVL?2KKRW7py&1Qa%hbl=PK!>NFQbE69&H4(bB2-l9o6(FhBX zIDp;VO;3}g2E-sk3agj~qvq9SRQy(^Y1o=}QcY-g9HY{Cp!0pkPt7B^L8*y;Z%k|H zDE@{DtWS$LS!_~XTDT7@#A!G6O8S;Jza3n%YQs~ zNr4ERw0>Pt{@zvHZ^g=5XNR~0O$UbMG###}^o``%{1s$ZNraKe{#bM9hPIl0P@fID zhFA}gZ&!=qZ91T-dxvcisc@}v_tLQl0Z*WwNi#L0AN+lMW7Mx+vh}2l;o9ltt}>cy zW7RWujAtAq234-)5wN83h4DVM4Z8^Hn|{+X=kft8hE3jrT=mXhYc>6P)2%zdSuZ5P zmdpx-3<}#E#H=SiZ8Ac2P9x0hO)@32JYfaVyypjcy{r74pyWe)2wh`q&H^hk@=Jg#cd-R=T5R2Gtuyh% zlfjp$KR{=MeQ9Llo|YiDXQPi5t6#m<4ctc<@UgJM2ibcC?_bO_Ej1Y&aho>1fInzH zKH5=A6x?dcJr6N7Y-A@)uXlv$JqD4)Q8X5RsDgEv)S+jLPODNNu78wX^O|w?Fl8qm zOWukP8(Y3KTED*GeeIa{TjE_f^ROyd_5Rh4ilEl9!z7#5k)wie9-*`50RcMvACC+? z9N6@3j5>p17pK_+n=hitc*9o5Z5&oZ3ytiya=$J`VSg$c&>7Wi;k3Aek$dtr{5sNU z`PP%jRu*-`F>^7UXN6jgn$fRlkPv}E)5wI-fT$3q{Jc4QarrIWHYlhs=;akcY90E? zc@srS)1}7@+h*+ft0oF(Ig_}fwu=wmD$GL^UMjRhwm@#)9@vF)3_HON5mC$jN%)(G znGWur|8mWpf4OFV5q+YRUf`rbNr%+a4N?@@d=JSFi7w*(?+`tn0C}9f+E6Fj)W$OkyabFlGVk0_=NMhX&Z`mg$b-YejQGS z`}ZVlDn24T?1(xoEC)>{9Sl<;!$+}R+6a{?@j+Z}>Os`c7-CW7-8R3-Tzo;*$-P@) zr_wF}AC=6!$W1X1hNpI~z(EOQ_A|%tvaXclw5)jP*vPef6L7E=ua;EuW{z!WRa&-g z5~((A9EyH9mSwELrRH%yJz}K_h|$+YP4n2ZK(}3orP7Cbw>_~ScyRKLIj~*ZICor8 zBU6z2y>fgo8toP6n7XOTx&rrgo1sL^tLc2zZcal--ySOrQx&HXB{}1#n(toM+jCBS zmqKgg+PS$r*lMJ%oh#xR&&gM2Ig6;ThIbIIA!f%h!BW0Sz%`!5kgFm`p>lfn<0abU z8%Uu+bC{OAzcC53&5@YZP&w9#XYMm$esKul>8Th#yBVwIIxYOno+>Qg4qXUp*!q_M zh$22RDk^JfB=qIT#m7GV1;^DlG^nL-I?*6#O4oaJ&hL33&0OQhH=3VkSj#?5H#Yd zvzwu8NaQ4p3vv_M?%+#cNubfA*J40rr~cyYt0L!eM{)u}uRzVQ>wWs;n~y$5d?V}$ z+*sE>Uh@X%i78cV&rq2ZljTqy`8IuO4N9!MWK#_MTNeX(h6#ZS7v~HM=Y;H8Dz_V? z?PK+rYDoRF`iObNTR2pdL#yS$+8rH4*996Go;ahCyC*VHWTdY_G$&T@h^H|((ai-b z39Sd#c#GKF=Eji!kF>9jin4FJr8|^v47yQiW<~`?6hTEwVh9zK7*d)6q*J9480qfL zp`--_1j(Tr1{h#~3C{RD@A=lZ&ilRRJZqi*SS;4!Uia_5V()8T`)6vamL9@tzTB5v z;YL}Qb%RyQ?}0Yn!ey%9!JCHjbKY+>`>>)pI?P*Q>}eNC&o?XdtI-pfn};-Q<%>bM z4nGCztrZDBW;< z4z-AnRm()vrZx6|W}VwEZddySbf!29*|FdbsExFUe%m819M2_Rq`y5Mb35pQZge8y z5D*B223VsDm$8QoXj3-3%i1Tmv8x%8hWux!X9 zK=Cc-0a6uR+Aowg!5f!!H#H=j6F+xdrcanQ{<$Y$YXJM{it{^=NZn7r&IbW^)k*}Md;BL&IIZ>u=nqu&MN>{RSa^C` zVww3N)TNiAgujG+rG+iXjcbzbx;mR~oL08qg!)Nu3Y@Pn%G#plI?;EXH z6|j@!2*H?63muB}8^u*SLc z93=za$eyol2k>Touqu3bdvTqF;}((lu{z(ri@ud&PQ8GP7RHKv&ZWd$>&V)IL^HoN zH>=mpn=$l3Jj)WvZm(HA>u$)%W=Zc|fZjvG&G69gWgwJ^Q|n@-eJ0L9PRVH_f=|t2 z?N*D{PvrgcKK(fn(KY|uYi4vlEaJ(k;b;lOStfbvc6V1E_?UkP=GGU+}?j zTj=!|Y!rj+G2BYk2S2H0ktaQ)v^%lxh%`}qXpPb{k_kpT6=e&7 zGC;XK(JZLwAae=g0z&+CGaEl2-!Kd@fxk3Sox@Vsg*V@4AXv+Ni zP=I>X&#{Z{Y|X7`;ENDhLhryeUy6FlZ377tMx0mFvKUQHXp!SHnS@h~UvgD!eSCo6 zaVqAg1ptqBn`CfB>iP6_o|E$|-$ydjE-dxvU4syk2o-cOzV1{ zP4253_DHv23dx-N{Wp`MLoC3WxvafIrnRru7ANc7iM9((y;o(DmBN_@iJJEHD5aVV zzNiDC_G~S#NsA>I)#H-4juXL>hWjaBd%70g45Rk-=NT{j$g;1U92| z@(p6%MR6D|mS!?le!G|-Yjpj%nV7lAgER|@#&O+8aOWxya7(ka)9Nh7J?Ji-&B_ox za{pEkA#jdo_#{y410A6)2@LnQ`iFY;-#7l=SG7wtzfXCWRcpbKSc~rPUAGj?F>AuL zLu)1pFW_jmaI$Jcsp{d?LF6GsOGar;S|E9jk4fuT`Gk|1NsGcv-n3t8v4DI0Aon;U z{3^ARb|xgK^pG<(8}>=~{rXcw`VpQeO{y}@M|#$oNkrB^PnXH!He%ALZu@oJRaO|| zV3LqJw^S+ksZO#VyANVpACJ4^IkQ!6NB^Vg5fQfkX0KI394lUNrM;B#WhCcB&DEGj zck#_pUBYD?-UDPJXPznbckKuP;AhzJy0YB-24;5YK-qDEH*h5E-iuas)&kCLIIowP}iCW$O*QTDsG#O0Lb$5`PLTk>@8$AX`Py`n#cgPwdR|Aj;v_uMz> zSna}Cx3iBtb7MHVsi;r5t-b*>RdzN<-AC{={ZP9qv z;WjwE-LFD1AM6Aj$MJ#dX_?c`fa9LZm$M^c{p$pAw-#9#W3sukWaN%T(lWD>bp%NF zp`?yj^0WI7=7m@@$M!gZSGa7G3hKsTUw{l5=9Bs}rv#`<9_Ke20#WVzt*gq0|epO#;!%plpTU;pFHLOKS!}b%LE+OS53PrpgnH+^KtJ0FV*DJztAkKxX!C-6SmznNcf8tw zGVWZm?nAByV}v?G%Lfqo4T1e)-G@=F@GfD0G8l)3{60{Ny*7{(d4~W8Q9H@U=q)*x zw>sedoNus)SqJ^@c;XW-z10)i7(CzGA6Lw7kV*Ngz;0)uJ zAV-A)vud6a!!`!(t#kSkQ|@6*(X4W3nfHLMCVK`Jpp~u##RLk!5A|~R2_!Yx)qJSj zRX!fr*;Wwq)-~tMRT>!qdzHvfg_b&o~@<1R_L0Tmu;rOOv~c8JO- zbY%Nw#wGS+9z04rTA(JVcv4zw)J5Ui3f_2bsQHm3Zy3C*c(<&1%ziO#Z!66^$K3I@ zwoIdS@AHcH{TFFLSBmDG_K@iZTi2eeo>-%g!)C%S*v`nJ>yk#&=~gbk>VFZ5RuVg& z(;nB>`$h~r*DdtoEHG@9cvwY0ML#ME5o)Uxfx?&Wg5sr1r# zR}iL2`BWtcpt@iyA)G9-E5?s*f)hRomn1EJ1PHttn-F8b%FrZP>Uv&0H;>0XX2s3Gyk`fPTMZlPMO4ICpW(x)+Sj`7uscjNeovS`c879I zIr6X22z44@(dm?;jp|IsBJw&76Lwd`lC`*-c^s5Kkcsuz*4x)}Ilh4w8r~b(nDf|m zjJ2&0a}G^M&@rggE5(6)J%w7lMg)M2Rqiuxr53T-Tt_qX!VICJ*=y7(GxTEZIDTZ` zF+V7spb8K~KPKLE~2|` zTLW%~cR>8ADTQ>eU!CReV(&LPl)%*>?wx8)7+*yB6WAgYowaElJ&&{9?F@v+v?IqU zX<6n#)!O4OaegENYbD8mfKSoJ*tp+ozL^Bb>r@6FOwc~(E!PhTifhP+X}@!C)F^)! zOBUhzhwM>1Ti9R1B(?u0Ou7pr@n%BA5%E)ESKAe%dUu#cSDwLE^8L-34qcDStS3YG z377?NZ>cvuRg^ zOP~>=1kbX305&e;l#9a7d>C_UKK3YrfJ4{s>Rl@Kymdb& zWthT?gAAC*y(fyx6KrOSF+g~iG-CK8#Z&Q)R_T2z)O= zijzLF1LvcAq3fvjAJBFKeybDy{4%%MZAWBv;FR!L_i(m*tcBY={yBS@`^d&I)I+re zBbISJW#rC_749+=RI0#$bj~}*_2ESt|GkmF2B7TS$$B!>zo+~Dp;m|PZ>>(;AFa-+ zzRXXna8ehRc$Z9D(^KC?lmK6MKzrVNar<-WM|y#oIzyqzeb`EhDUS^OmF4$eNsBr< z2vg9udr8`%PW+(}f@X?bpIYaoY>DPaiU%jAyjk08_$!w+y4AX}cE97D>BgvUL8o6h z_Sf5IzL2CIZbMjeMR5g%Q>6s4r+b|%$`pm9gU*??xeHNouD|6P&+BIy$^8h|A5)zw>WDoVMJa~WxTPE4MV)Ytwtm?#NLG1 z5zEc-33R;HML#I{&Z?EsYNHy3{W8ot%0a#A%&z-CspS0DR-M(Fhd-ghX)J|Y>Mw8AsCM;eW8gF~Y^;z7?$<<=v7a5zVJWlN|JD)o=$>Gzjf*1a^G&qn zF*?#>G;T>rbnLFqf`o(#=@a&4qn+==i!ZAE26La1T#__r8>nd(%v8m#)wMGX=>CERuzkP>do2*A;p0T44zw~ldGShSaFb4lS@9{@3XF|lT=5tQc&vG6~3U$yX24+U`kh|)st{b$WpbHcO zD=reW!leQ1UfRyY=Fu!w;>(l_g@n%z*iIv4Wg1A}$ytUE0J!YQXU%Us4gcs7CZ6KI zx0DGHYaqYb=w>wJ?`g(G^LZFsZMwdc6#7dX=ZRfTncd zIk`bf^%b(e5Ebi%#M9kyIFWA~gfYR?auC-X9g^!Zl^0^uBNLHE_EPY(|L{sD)$Y{j^d*$))mDRP#k$lxLu9-bSolmMx+ltAGFHg5l z-mA~_7hYtECyRtGdhLAT?PONs4ZZM9`v9@sY=O^3vX`ZibpdmVlxno7Z!ujnczWL* z^fktFyylWXi1S+6Sv>XW#PH@6Mbj>ryUo*=;SUaL z*o)*%#t%G=TWVIIeO@W_Nu;7>i2u8$XsA=5rd0-mkDap5LH8Y~^qG4}RN2VDI0H&w zroRhOpeNX{W`F2*GC=RR1oHbtXjbn|455k1D?uA|_U0QICx(N@j5-1LM)Ja?HB3f% z7y!m!qRW(b*$wM#Bvr9%!)H0PM1naj9tuJ^uek)1O;TUVq_m&DgI#v!eEy&^(Att6S9AJd1#ezxsx|D>}K1c!t%L!!K)_H$Z1 zxx&sqTuGySeM?n?HJhrEzlQD#Rpa2W;kbH8;%pW!bD?Iavx{|#^dwRxMbb>z_=0Cp)%DC zYYt2=lZVr%O+KJ2u?Ye*)$Ne;dGE}#MrVOiIwylnS?cY-b_d2jGyVF98)^jA4#Qug z!I8h_^aNt(&uFmy32EpJ&Sj6o=M;tC!Y9!!mDgRB?~xqxqtmIaD5Tz2wzCRoy6oVJ zI<7N58S8A1Bs59+PkiQNV6Anbi*d@hAZT|n?b0~6b&s8&Nqno_HHFiVpnvg&13Tx- zF-8aDC=^z8^8r(j)S!VFJ-Z)gQ3hShdoJuLpMI}nID->G4H$18sFUGn4w8@ZifJh) zuR)3uA1FwrkYs}%@czEz6e|2v_^k5k`^9l!lCNL__xjUU^o(epJ*9;5JNlCi?;lb6 z#e}k9V7G{ADgvqJ=>bawprb|^8=}Ole^p#zxv1Xl!6q)?<-=sa2SHWmZjO>?{^HN+ z6l`1q%WgK+#H($|IWZbQMfFV9wO*0q7&;?pa;B;w-Q7`Rj$QTXI6gk49Geh{sKCxx!-eMYVCorJy@lZ#dYZ zqvR9W-5N!UYeYgAVe`KQ(upr+IL|g~(rAPVRo}(;I5yb-jhWn7wJd`)@1J9Q>uyez z27OJE;Dh+l%MkLRYvIDwna(AFpFYJ5~=FKP>6_ z-4HhJATu~q?Yp{=ayrdHD5ImC|SnklfO~>Qt8s&Lb>qX7!u@t5$v%#npcnvUo7yFt*w_nyQ-^gZHS|{P2 z$T48OpRM9#|CdKXhNoxllt8k)1cs;QVL?a$`Xll^jq#pIuxHY+8Eq`T48vsEn3y2Z zG+ErQ!O5G_N&+7Q+hcXe_nz~{KrO{5t9=%fH=%Q6hIdF|l1|ZQ1jJ8k-7?8lWOb|O zRmqjZQNL^@i(H?zv4e7$vLy*cyBFOxX5XJBwZn8X9e4K~tfxYKr64)mtKmF8>pfl3 z;_PkJl6UOHiMQ_6YlZTIGld<=*jZICf7oYgVg^)sv98yBoM8fIWM$D6JB9S-ARp~e zo-^cl^-^T7iNBJa@&5BW`GC1IHS4ndd)^J+m!B)BV4KulvYuPJA&!f0z6ji92oiQq zyFu6|figuMvzvAZydCnr5xV=V_(e0%+<}p>h(YBYyY3a=i!7&u-o@|KKo)5bu1$W_ zLBYUcEzn5@FYMW=QL}hk%~~N)jiBt*p|tm(j?=%7I@Md;YtC;^k{;G)`xX>q3`%-@ zZKd-5ldrtROL3~ji|cAz{V7zRZJ<|w?PPXX*zEYUyof)DR519 z)M3>c=$eOVcDCPvnFmISj6fL)251`KNfHJ{z1<&QE4dt${S-?Kn_~6~8*fA2kv8+) z2&WHDR!2#fJYz~tqufJXu&byQGyF2g9tc)=;9qUlx$`Ci+yqVBJcgvdbR!6Juru`- zfxADMl|~kn7clkA`h1ONQbyURW>g@;V&d83WhU3;r*<8;qwM8{*4&l~ZJukKRAJ`dr>Idg9G<@*;x&qK)Mq796A;t2M8&p8g2 zw&ID^Y0PRY#gi5BrS-)W^`LRq0n6_^?~(9Z^chf_7Gv_wCR@{nQ!`J7u#Eb~?Gl*9 zu-3VE(TC#Y>ig~l!=Y`t0;=MJ#$uOPP7?9N75)d7=FlAY-p{g8i_laVS{PXtSzK2P zgrT_d#z;TllD2pgnK_%!75hEmAz=J@`J9W~6~zhZyvm;&Mrl!8e(QA|x=pHd4UQ^b%zc;G- z<7A;z3x4%?LSlL!yAc4|L6!%?&C$ls?6o6ZE|zrzs;ltrvF! zO-B-~)!3ebNpCI~Q4u;r8tzF*(8J`3%Gt(~%vZjiW6RCf>+ROK`)~Zm!FKeLAL7-M z-oeZK!3)Wh;~FK4MK@>nj7gPwUqr^~48&(Y4HQT=Cy!J7_ZA{M#9J*xSO`rqN1oQe|yw?O@y(Wj=85X7rnz;AVx+)89*rGyQx7 z<+(tK`F+XFwZcmg-#AvSXMvv@(Sy)5lm zNFrTDKhQa&<5uPO0e9Tx`j`_kSubjC@Tl+C$x zA(huM_9)Pw9R4Uf~4#bi_f#@%m+;W}R z3ZJyf($O7e%CdEMkgZ%cwV7}Ke26Rp-Y^4_)UN){+XMh-W|g0qMRXN>jy ztuo$s^b2q@D~$*1PPH4e>jWrS87P(i@_N;g!w>jet>vq|S2(7Iw4q3k{Y2C*n;3deldMmOL>I?+3=i$N~k=D6 zb@^wx#Pk!oGj=axN!JfwZDa(FFt_#`GAo6fwMoC1u@NyMk9(19UPY=OA=(9s9aLdR z`1sQ8H_}zzRBp9=yN1j}in)eu^sYFVy zysTE8i`ChWcVbn1RE4|_>T2OUQps+V|FRuHEtJIeyd&srz@S|?F$2Mu3W-CMdnTJ4 zZOUaYg;>{H*G|(2X?2h6hsp=Jlp`MIdt!`q^*f_Cur!f}3^s$tgcwlW1vlneH?=SA z$1ds;DqI*0FK^-vw*GCwURY4&+OOPzU4@zBc|7qEHKsoEA1bEqEtTc+_1X0qxO_vv zH99WnxzCVKClLdBgPpV=KYVmv>p}#5#l-k$s;ys;aRa6dp;^L5Duk6*+CxBiUjxtI zvP%(7BEx^y91^RU)879}SY`3oQZ}AO$oUSz)QO4eh}VefEVnrIQ|8Mx+a}#NiWlG6 z9)}=I1>^3p7~b-BT4Q=~b|I>3KBM!6C-b!Bx&oCe*E|1PQ)Vq(JJ*y2xm;CB8Fn3g zcneHa6t*m;)7)gXW^)gw_o~kdQ~T%~nB@oqDC3UTtOV(1vant_E1h4-m5079k5=6RFwxK8PX!6)FL|R4R&PoKt_S=|h@9$D&|&NR zbU759z5kAwm%xQUwPaGh6q?_EKeKDbd#YG|{TY*H<6|ZXzonLNnNwSzZNc`ik=2)h ztx|S$v&-W^C%PoDMmleIpwD@?oncfz^GxT5t}vFjNJc$zrR{aL(Hga;P-$2yIif{| zG6rrd{+q8j=UFz55OZZT|pc+!OLTH{ns$|gtmz9~z{ua-6*4A95D3|$k}CrTCWw zWhnSJ&xd^@Mv*0T?k(;U+zk(8f1!*8nI0@$ARRz4M1Aa6!E1M^ql9!idpT^MAGa4} zs<8LhY$*qP{=`WxaYfppKS8U2hFY%Z*`3uDrGss?xNnwgw?>hByeS#R9qI?)Fl{Km zlciC!ALhk%FPuWj57ejy`P)=^fqXLQ;%PR5oUf#f$eE9mpwB81Mm5BLHq9&u6xS_Q ztz~b6Y&N0omKNrT65Wh>9)P8+iF=1k$%`AmlkV{pMD*h|?gS_&Yq8W9#wB+7TMKv9 zgW1;4zpD9>gUVYtW?Ja!gR!&~IT^pj1|$uVm43 zKTEMW({&rQf9Bfvd+cxHXv=@8ASldX)B?KZI?LWneJlPj9*)pM4^t8^o^2QG^A`OZ z{+?Uh76eA2tAkPDYVet{Fm7c9R}*mz3Xxo8?@W^_w<=K1Ro&5 zcj$YdZFk7{egX0p@vdsaVv-xS0cA8fN&fG|p6B_9+KiSlP1w9(_%qX`rP1%&eJ*Z( z-g06iXLF;_mF<|U>G$)+sv|QJ7nLFf2}Zet#*ANvg>O3If0?if4Dugm<#feiOQ)J{ z=sz)HjLa*4sKwJBX3NH3o3!bqUgS~but#Co9HAe4bI^deIC^wkvAfy4hs!Wf@7iy^ z!(xEkGWI5DD|rIE&l|g2&LY%D1d6U^LRUCaY!9vKzs8wgPMEz8ofq=nR?9Q+9=O`P zW|R)!e-(i!sN|y9wOu}cmeu(O|DSidnF*8wCO?W7^`YO-M`G@c-pu$6ZvucEF(_B* zrv#5l2{MMsV%=?1+EdHN`v`iyoe|kD?6sEl5)0pz>BSu_d!0)%WFhNfhK)RNkTm1( z(}SAV?tVA&?s$^_iB;vjEOt#iA>iVv*z$9`AVRY3n321FU8F~DbL#nwLAfadY@(1V z_Yke@eeu{ZBAj)?87=4>5R(mZ!;6fxN0@k(WqobC2S0iOX2QSlh}|Ku$@3Jf7Hbi1 zGPLOG_k#29l%8)J=_D_w-l>|!G!e3Kzzga%+*E$YZN?ZE?EbY!QsY(lBN)VTBfTK= zTKt+p-M<#){W+=$778l=)IuRK;IB!g%YV0y8K%7ACc8}vR`0gpqKYSa&BK=SSO_!! z^EW6-Z7kmA7CtUlX0LZm#(hrAP*#Tom9Uc-+%)^re|^6AuC11KIP;T4Eif%V7{Hw8 zyv9`f$yTTJCN$y6y9r_ZL%J4Fx`yus3-wGFRY6a1EAc8i;JMsxl$U2r5QR=ekFKZs z)$`*0O`4PULdC+^}dAFBJMb6)A$2dgap9 zZB{dc-})YdWsBetlQfa>mx({DTBqLRkIN*q@7|fB zPQ;qKvQ^_TpXkT;E-repzN7pPyAy^YRvBsgTWMEc>Nrwvz3z}r3qCj6MSO@&L(U>Myh*w)^)aiPno3Gr6T4P9@F2GB|6Akn9W?qe`7Inw8Pr3{s(yjP#e5QC-Zkjae;iBfiv2G?%HfO% z@9Ii;(WqzLyUS;^;sUCIS4Ffvo^cxi`pa5W=Wpt-loY!H)6_{}k!FAF5+}{107r|L zwn#s-a-*@2{xB7>C~D=~VI0vb_g{w%eM$gTQIXwSek>ElAtSD^U-jvAQgG9d)K`fk zN-7~KGIk1Z!yjn-%UL~TnWF>!mvezEX$V2LIgA-dL+D58VkupH?cr-yOOU{5X zYEU?e_cfW>dA!|})Uzgpp7e!GO;)2@XJcaTxV2R+{H$M#9=yW(bP%%+Chtc?#+Anv%}Ly z73_ESN>7L?_%=_p-120L5E}&`i~-0Ovjjbxo@K<%kK|;<9Yb|3H&AjK&db5P`{2>xP3a2?82$9wj zpHhBjt=X{e6!YWe&iLusDIYiKV;|T$9ygQhBxjW>zFs`YYfy8{I+E!?Q@6+h0BebXSxZ84=gLn}y{fDapyQydGZ=w(bqK1qs= z!_@Vi3EhQimIp&uQM%l>%7jTM5avcg94kpZ%8ms4u?@R$qyp%4g-{{#FR_uW*XMD= z7%&_+r*nC+R}4O%oZw^hth>;3AA}087_<1|W>$2KJu{UZTv|m1dM^{fGF$%p|KV(i z0^GIl2K0Y7&TAKd+{Kf}fwiZ85qod-Da z`nZ#*AY`~M&Z)aIhTzKb^^EfODK$zgJ5_C2AJywkAYIbiIcS)h+&yE)i8OZx~Cw{Gs$R|O)UP3SoE{s!Q zWA?1=K@%T8=XUKrSi;T+>1N_p%rXhraa-EK#XfIFJ;++SSVt=TU>_Xbi3m5CI>%Yw zjg0N}v4>$)YuDNU^nIxHn0HvizN^d==ZX0Znp2n-ISVuQpzkwv>yd5e0At%>_$zQM zKhiSq)ORoTYE9+vjN5zA!u!i{pEssk!D9{Y7TzR?k1PS?ea9O5p%Jk;#D?X9I+2)4 zcpQxu-bhmB{34Wp9*=@vyuVocf@twwxx_uEE8F2&xUJk%@-wkK7qAAZUO>aK)uOs) zuk(tgju!tf0j6^8Pk=rB6JX{TcC8sDi`mR2A}6a6XXK}p!oC_u)MsiTEdlsf1IvM;V3U9@z8!*wZeCQ>a+1oTj*V_ z_$g-6(8HgmUoX!3-NL}RBC*pa_R#0A)5=Tid`5l=?6_&TPmdUGmOUBLM@X-WbGIyw zp?Xc5)*Fs|X%U&_^V&NShi@=nhGmd4yK84uT)n01KajIc`Kq!tu8b>;%Wx#-@@$V1 zznl-@_c>vNTw=r#cCkJE>>J)@Y@nHRmWpHJ|5!&3~utyBhy?Yt|UzV3AF z3LpBNv@6#+y?j5OXlgt&SeKu{A!Fi#owQznb3BX9tY6W!4a(g)@=Z6W^4d=Mu)%$l zNTvkkf3<&f)_gyF0#&84J>+R{b*Dw?1~l)qDq~{o)b~QAY{|uk8w|EGeC`*U`u5Db zm^$zLu`aJc+H#~mb0WGS7QDfEW2WT!9JCUOru9ROY$oHZ$c7ll3O7*<1tx)%(zx4xF(ScP5qcsbRUu9FdoRuB$L4r< z5w%lJhi@CbcU%wzW^zwM!gfeE8zq60LhE>1nKwyMo;>kr;zX1Sf}48#UoE6ML^U8{ zITEuIUDj?L?5*#3epsLNf^+;XvmM!#+KCKpV9ReB7BfOf=Y?1J@EXX~*B`D$j*%*C z*v`9Q(<-}ryU%BUJF4e6Gl@^4$T$jz7(}wP5a+sSo5Ihj1s`0i`23&B(zYM%8G3%Y zVt}ZZ2bbO3Jin>ds=YH84l_vT%}b1i$M*U0!@M5jl^t;Oo=R;oku9=i`#amMA0|OD z#?E^^Qw7t)6ea7XOl32=9+E>wwaD*`2v|~EJ$#K_i{f7Wf3E04e-aL_E+OGuyA14? z&flS>ED_9dl@|70yIY;c&Yb$oS*L+?4~)!;^PDNxAmUL}}F53429`ZlmcFOyZPnI0B1#fp9qwPB;QQy~ zvx#~*ROPP<(Nc{nf0u35r`S`!pXomE4B>KumW=_k=|a}gcInNBpUq9Izm~V%#c|bF zVB8o`J?uAQZDC0(p|~2mbx~w92_ML2fxPe?-80RyQhhlKYD=w=>!OM`_Z4e{q+Q3YW{_BYao0M zC!O3~cTC#s!%ms>bG95%R!?vaS*(hQMfJ*7y@d>NDsP`EP>$XtW zw4k~X{yhon8Nzn<@K9DU+W5TtAgphy3cuMmHO6##`OpXH;(d{WUxSm@uI(fGYu9{1 zejNgU4Y1PT_5Z1V{kJ4PBb_Wk+3w_Q(3JSGMbUt#d@ul_vgN%(67)e^iQR?{wf1IB zC(U{?--}4eRf{r5QV2Y7Z|#7memr31=!W;9@9Pkc37^AM-}&0L(sl7!`Pc6;DI;ze zU@p4fx=7OQ9fTet2iCkjR4)KLNL$xg3Eg;O+R@h3_6u*{fQXymlAG~sI6xdPhNmhWh`d{qKy}-$yX1z>RKKKm6na8^P{0#fDP5+^Zg@- zA>)Po7~}HYT(|YpBa$b0E~BZ|J5mZyd<5(O-iT&$5%?k#|4yv>mh#2JMN{nP&xLyS zyY#+Y4Y{>M^`2(G8(UJ>beG3lt!f9_A!|9t1% zx$QX)?I1s7k^{mWGgQSrOX-0oXG0w>-11SB+D&mrV(;`$<;$+90Kp)13DPuU9FxGj z=T%D1NH26!ubkc-_$l{_07>fV*n;SwsXOr0gnphAS^+(5>++UDP6=@u+#YUjUFaP) zNKz@YIq~KGcPLOti0rVKcazf_B;hRcBvVd+kz`S`g2o=Jwz?7Jkvm|rTw6l&7Y5kH z@Nd|ozMokve3!eJp|u}wmIc$zM(L!l`SzT@Fjk$cbW8WdnqD8>_xWt?F`^KG6!+U9 zi8%tkYr`U9*IBB%#4H1=+P^ChfIwdr-ER{pZ^K5l-Zy5YeBW?tl5m`nOgRLW;&yT@1L z%8Fl2W0m(3-}-R<$=;D$s>R6!a5AaP7p@yKw*Zs_lI$pFL0TM!71|Ij zQR!~60W03I)wQQi^MWhexRC3^h3g4xu0*2XQ%wiJLt*vT}P1^R~UX`RCL&Xb+Bw`B*r@6^h{m{5A z@$?Hsm!L$RsH+$qidEd06LlOt#_UwSMG>b84JT zE7#$lonYKv0lW(F#C|yqHudeoJwnyH90QTUvS9JM;i!El_;T%}HVQ*NbjJ72;^*9? zX$E^ls#Cf`Q$C@y$Kh(+5aj4D0q>sssK}ZT2cJI1 z6|}x5!(5z`drEKU%Cm+O$(FB%fPb(0|*#%0hOSiu6$MF$Nqm37XQ^}w*MEf zdZDoBQV)V+3UzSzmD`_EdUf4IsZf%CbG{ZX12&yx zg40EQRrH8DztLvu@_W)+`Px(B&knp$gqd+3>7Yg6$=PO;Yg@(`x-*0+pXpiu|tV(EtNjng0L^%O=1Q!nYQs+;2|U7`uG*og z(EJweV5Y*$H?b2bsL~sgo-XQmt-UwAg}Hl}szX7oGS1fYxwRq)N;I_ zz}BnmKy0s)Xi#|~x+m-8RPY(XjxeEFRXqYiO&`P#xL5jb*Qq9+9G~$e%x)79nGP=i z932bIKjksNV_XUUgNIrBTwxM(--i#c0>+)s^7|cQ1aCl172tNcQ=tEpuZRMsME~@g zzR%5>xDV!MW8vuWdg(d8nmflI+YgDP8Az{!eIYvZYp-iw`&56NtI9~V zu?2;^N$kVwe68C9#}-uARS-~YOWQo!R;{OE@}*R3D`G8Z=cFf@$L(!fhP8EDDLOJ> zuc^6B&&~`okIYbvjm?+!G5Ix@;RXC~T?4i?4Dp0H)nNg@MgMg3%PupgqMm~|EJZ88 zt>>0}Pp?9G(?jzoZJc0?7e3na=2JpF`GDQVOsS`O zTz584;fP0AB~6+MSt`!7&RTo+8@?HFXKM!C99*A#;dk{+2=(CT4rGYED|Ba-MQzN@ zwvD4MC^w`TX+IsR*U@=vG1x6h)h%7Oa}F5A3-R`Di~M-P#!qX%vf{)C?)`NYkhL29 zhx`E|eph*oSj<($cAd=thG&&^dzlbT=yhZED_V#h!-ZSO4j=c!pE5DFNTn782P=Ao zuuGhHX?BuWa{_oth zXv+MjhR67pvnR)Ae_xB*SE-j?z@P3xTG2X*rbbOO0cL7}C zT(3zd9i|K_yi7fx@v@qJ!@C6|z<@#N7d3Gse~^F`)>(#2dS=0w6Yhmd0?f8sfGm}M z#+A$dP#$UF_w81e^78U-dLmti_FKW69x8R=XuKD~N~Q=0w{{|xy&_}^K2BRurFa?Z znHPO-x$+ACW*M8->0Ouc?sWI+8erL}VcjiB{YeBqk+9 zQtNQe0*7}BoW^~+MvpQ+>iDE)yjOM#Sgw|*l%fAud)NM!WSWMz+AOot zD4PzZmd9LEw3;kLsjN{~FR5%-(-K{DC+J{WM99I(X4M+gYCNPE)|ksonUp(@B7@(ec#UyA4!6dwRx5OWt1a% zgRg95VlvAx&I3Zv^UR|0Y-N)S%P#U9_w}8MOV|KQ@W^6l z1zqD!6biTcnow~QN@|=<7zm_}=(LSd_e5=On>n)YusUM6{W`o<`7n9Rl@3!i&`Q$b zIX{$Vk3X}zvJ>>tl-sZ|QBUUDxBulp$TL@JCB~jL^G4RIo2Ke?Qvb8CJ+`|uom1)- z^(Xd|j~y(XXo#RH$}l!xczWcH5cBvEdwl{6;$CEA%N;>S@sK6UF^^TfH<& z^tFhN&xCca32Abdy9~HBy;ao#Igi)kGfdHgqsihX)=QCsg%t_wpg~bXkIT7Uiv^hU zw?0y$uvujC)aKCITygnmHtK5Dx?^_3+qiec$Mz5FQy|Os0hnrsmZc$ORXI#z;PGlP)%Sb4@}~Nm zbHqb?6bkNC?GuW#BKT=C>8*Xz%x(D^3eEbQyJTw{ibbe8w!*c8Fx2yT4_QL0S9L~N z1PfG(f5r(Dd*4p%lF>It*w8t)m&_$hJbPDQt5uAM5!MpM_bfYEG5e(b!ihqA0&)b2%=cBD`x$|S=aSeLL&5w?5bkDR$VF_Sf;*(T`v@g%A&+_CasjlfTNpnJyaU~ z!2Qmi4nZi-LpHF{w1*u3KR=Px%~7Y0NV=+9p}G>pi}gZU+d7&jLp(ZdM|yF?%ymEp zD-d8_K&G;l+n$5Y*K1y-W=O7n{j*niu4#j+B9VSIdzRyV8V59I}+_XV2&fI4*!H)({D?yNRY(nW)sgn4XaztwX( zP86*-t*4r1-EsKPrxF_X^Ullzc)YcTGBXej_lcHDC2}rLz{z-+lD0gAZ-cOsTz*T` zSgxaZvY^!Tq0LHN?SCBxF^9JjE4dcq^B}9m%2!=KU8$&Wd>{v1l0EhoHYnYq?$f~A zUr9O%M1@UcANn{p2+BlQ2owIApQ_!8XfMRB_wG|D%2O=)k-2R48#$)8s(4Rw<7#jL zO}ZntC_?WquoSNjFc-PSKlpKhPr-z0R~Z8ROhW-xP7bMF6S(v~P6x|M=%2gJ#T6yw z-`4!Qn;{?My&88<0TiLm`ZYDE%@#XSAZk*&5z<%}z16v@a^eJOWu4xQ+>K#2 zvnp8{)+7DvN&JG89=b;&(Ncwm=it{D-af3{l1m}C?PvEw8fv_cX+ltu1$pFzLj0UzId^Zbi_MQi z_7yhgLWxXr;w!8&=tap5qGJU8+1TIvKoQ`7 zZg*!R0@*c^Bwp;m+}dk7Yr?hX8a2CNM22aG-NFk9S+vw?o$OnK*{+>j(09E1`?dG< zeckVSj)~#fwBJ5`Jx+gn@n`TjeX(6@i(b%Qz87<*dORs#Graz__&XnK;-~L_YL%gk z-3=Hn35G8;n0k-lCOv3-9Fk7!SHYQX3i;&qg@$~nZ|tbaQYWfvrPG2izIy=0Fn=_C zfe+p4(aq!ffAanelR5ZP0Qf(8GywRGp14}z^c$p!@$=PJcA80QmsqGp`u~x_=%R|KE-P-TzTD z{Vt$wQg$E!XfP6mC3!wV}-9N7$0Np*(l2bL#5CrZ?J+Ymk73L)#EuzbW@ct)W{wjxGsYA=jb#EG9;xXm9hy%+eSFLMkjt4PIS&2s>L-i4+C_BrLrrhZYAAmPTOky&?;h zmVycd7>X)Z7epXcXoITq%Spls(W>=zKV!C9e5Nm@J~ZgAXhVc_oLB2`xfpHtdEvRu zaTv?;IDHRs<=ml?9$*d?OE;9z5A#_2gMy+~>K7!GkA^R#q=BfB$G1GB83b(1CsB@gDU-j1 zHb))|6c2oqjRqW49#Wl)LuV^vc(9FrP>9L~ag*p~qCr-}^`T!J%~g5lB>Kx*_xZ-i zq8I$^hcZZ$0vuIN3`kEJi?BSu@HuQlHycv1_P2$4dr~m5F@jX-j;eiEafE)t9%6&J z&!KtA?wij1v;y;eg;h_uKLf*JRL`5T*?$R1I5AjLjfNfE4m^wVbW5+i-{5xhKI*E! zceAzsdUZ}_rlXQcE8oT+LHwa89Dem(4 za8~ePZg|a%(2OLO#e!aYbAW)@!0wBp7b$-T@^v4!K75tK9QX)oCU6=W+nKuC#(&NSm zt=uikjEd<8s3Q0VxvhsWhxE0}x{7!zfYKI_35(NhY)iQ0S6c$z2C=+Gco#{6fS5=6 z9z@I{LXYmzho?_2C`AH@?jr$9(Z>5pp~13Zq{SqX(8bvsy;F)h5qu4^r$8P2wSc!2-8?87G*1nWEVlU@(G-psmO&UNS7w~G4zL_FlSefkvFB7r=;e2# z2cg`Xno6_dTg}3V9Y$fepZY!{3d^uao#ImjN6(`tmc>9zRSY+}$r}9<^Xq;aCZOTrUPRx*&EU777UYwP`T;lax&y?Hzj6Lv!13NAI0egjMTcPq^vLlKY zS-Y=}w2*Ko=yamcRKv`k<37EXgN_~5VrA-R+`u$yB7ACiS|h(+`Otrc%__bj$vL+{ z(ZlcN)3NeG3@&bOX16f{?j_zLt_dz7FNn~BFk3!ZK5Wc7>r8eG+ntLS=H4v}XsCo%T14v)uMD{jF#MZ~2! z-#bM+bzZX}t@TXMteB_u3cB$ED%N>>+k@W)>usTaGKh}^J1 zkGyQ0w?J7!`-iNd&?f!n^pAl^J~>=UK}v&!Y03e)>{`dq1fNjKBc0Nxt;|h77<^@3 zHdru!nE$yzzw+(3Wz4*Q!&ja~{$`qN3`uXIvWDAC0pF0|B z8l>wqOjT{Je`@?nH__J9HuRbe{<3Mo)?Ylalg==nY?Wcv+I>?)XufNnVy33=GDKAG zQj4=_Q)PoMg1gQl%9?NACkO8YA1&4)7S#(aS!~#3m}l6&ITD9Wo*-F)>t?;hMWt3k zP+}$TB4HMTM5xOB)o#kdgwMp!A?UJxylz~iU^mhl_j$N~MSQDfd^?%0*Xi4#=uk5|M}gN1`?KMjh5c*G z$ZOp3R4YRww+y$-_D0vn$0|=HFV4rh$MlB_FFG&chqOn;=Y~gt?K%4z?pAK5=d35= zmyoAb2Z83=CMu{Z-!><)1P9vUTKm*h$8)EQz ztY?}cz;NJ=!eApMd(n%Vt?YBZ&DqFPDLXkD>1LL0_ntaL9Lf)}Khs}-y9uU>u@rkeGC*_yyuk6!J<`}!0d>h{Tc{NHu zdIWIj-`-IBO!_&aX2nGE%jw|BDEQ}mg3OrQr~v(VvXP9u0%tbAm3_vPjt0;wXM@Lh zG|~EVs%0xdoI)(u)_zxzcSMiGdBTQBhl02GOGp`_GOFxkI%V1n>$3I3#=gQkekV*Z9}t_upl<#_NmsVVC$g zxD2VSYvT&tLerRLm_y;#j8_^>X6PMKZKY1$vw!YKl?iP5U0|oQ>1BqSfVqkJ|mJd$?~D@bKCt)@*0Cv z(x;>%%`nZ&M#1^ys^cZ5Bi*l!_?ArbFHRvwk{+tE)BEPP2M1Zfd@0kp9O3C>+BB_< zrzmsFiie7=#;6VoLpoJz)wlN@Q(jy*A;&g?U4n`pzc1Dv#3IG|ournpT23B*KHLNs z1~>HPg=FBje?TR)+lJsCG1C>_8iI26#aZQBjJ0?iIZCd8yuajf!ioJ`eE zj+bcu3e4j1;oLhabI5cU_~nsf)3WBaepY#;d&tzH{msJ8isvfh&?ZDuqgS=YSj z$ga8CN_MfDu0u^;2f4}p=ELbi{~`M9qIKVDlM~zamq&*6?n*0sQXg>MwUP1O8NXR7DDM*`I_Qyl1BH zrrhrD?{*293Yi35u%64VcOOzXnNVN0Z`EXOn@*zDYSh{*Q`*LTYB#@+Ebe5NWz(mk-!|>jlI{Sd=dKkik`#PY~2$3nT>2c)idcyo=L8X6QtO$SE!t+0GQ*XzLGa| z5pJvw{vsy_LHm|RfPjJg00H}!gM7OLA@Tp6mw=>(fc{506a++w83fF~+Q`49e;l!I z*B>iNs0p2dxT&O==Bc$d+|CxvNeXD~IQ5FM(-%@2mdt+m32U8oz`4Fp* zZv}|9QlA|lAh0R^xFEqwz_Yjh=gd^p9o6Mzc@1r>81;>842&6Ft!)432ZG;~_bqE> z?5I!TYGrBd!0ReN_Kz04Z}~rpnaD`~(Ztb0fJ|LZkwnbK-k5}wk(rU1Oc05LgoNMT z=nJnBNaA1QZ~p|yOdTCO_*4CczBqYS(#W_8QxkjIJj9m>bo*n zJCOgglRx_b89Nx-o7p;=*;teO(XYONjgzAQ8QC8<`uFiqK8;oFXI2K{1+iV(;v_NAF}wTp#M?&CTT$=ex`qq znjlhb-ForcKoXdN6ja{QH#Pg?fa-etq5fz3mWOhFjI$pqf`AZ)0E0wSTp^FL;Po(7 zae@?_xiWM}5ZiBcV5;9Cg-fe~RI2pEAo={sLP>Hl<5r;zL`2X<&>)k(h``V&iKkz! zOn5AAb>0Srfu*1U=_c&+^E5VJIvR%<-BvRXljGy#88NuyAP{5!)+uZavqYV`6&y4o zTjLRfLy(JI&8+j z%V!mWB6GFWS=`?fiWG_3n^^4odxHKJlW&c&A(1Gt5e4J_*62YXZb|$4gDcdVV*e(e zU1Y-DePrE|e{b+e{In1inTN36;rv}b)nTYp)q!_Xe{b-Bv2<@@X*O6F{hNG3MnJ$~ zM8FV(|E5ygQwVnh)#$bUE}wenxq1e1Yvg}Zsf8=v#IhA0^zQHS`Tt(N|5M-BgcL|P zrh@_ljet}|BorK2W)*cK{$Zom0j<4|B_VumZJD;*M>t0<(F7sGd7- z;?Lw^I}!QIYH6E>u2>DEq$EN-2dB&@ZF}?RtPq`DUUrb=Bf=&uJ#HE3N_TG=oRVe} z|7Beet_Fn0$bgKDEUSq&4XpT?f8(qOX765Ky)mb@B<{?NL@6E|kNnr?b}e%l0|NjW z2BAw?mUCQoWlm>IVVWzJS;jqwL^n`~7w420i4wX+{^i z=&~pT{Gs(0vxb*D-|tLjt&bL4;i=>$dPYy6Q$~X8t}sai2v>AYsIioglIT(-M?a{J z=Za{vTP&bq(I$?}%i&z{z$Uy4&w;1<%f_P#4Ms^>o7;|mLzLhlU*JpG1jU-|T*UJe zqe-_>f4J)1%Ye9g%@)_wnBsSv^#b=J*@gsbDOuBspFe%K%1~dMuIt-KpT+TR;Dy z`|Z(!zo8O(P_j%ztIAX=DH$nk@`e@dl{`BlM-a6~m z)Tqg4@v&M+iJ8W^kN>Y*)xrx!cl$PU#Uq`SD)^+} zj9#&=c-O*yadHM;>4jQyp5@>sAkNFY0|K$vIW*@ncc7!3I8TyM{&Q}T13N*#9LhqQ z8+03I6&LL%YUM=jL<`No>yM<+`56xM#O+A8YB8N=R*ZaU%#%%v-<^^W;nV%$DNt06>QH z!ZWgj)^REg0U%4Yn)%IVzeZC=;jg8aXXJS{Z^We1M9Z6G{8jJrOqWs*5#`kw?q1u& zE`k{Qbwg0zd)AfmF#Gftu2}wYCKO1U5=u$N8&aG+=#nI{MW-Evp7gHo!B*NVbG-6e zq$HY4q!7BWFOZyvQWhW!q6dSA=hQ#|EEz|W5*r9h9VIczh1%BE-kmFn7GPGNxH$RI z9824CH#@y{Z7;zp@2O*gUc8+x560Z6ThV64*mo9JJz|SmGOwp!NR;dAajAlvnx0%X zkTc&OM;rqshUb9AKNtzOPu5{k!wT)B;ERjR#L2z%GsA1+tR@O`(mB5dELyjt6D~GN z=;@u$B+LaS;DQ9QrW#I_`gpqXXyjV3LA>00LXbeRpAeC^yN9uQu_Po5auu zt~lwdPDigqW7>?VGR#0c4Be2FoJMX0ltRiMy;#Jsp;{Z#V2KtfD$WoLPCLMnJk?VB zlm6{RGUj_1^3*0C{@C;lQBPR{0AQnPuLKMC@m$M6tI)!XfFZWvH7j1@%G2?CcIr19 zA4!?_#1EdNl~rdM&$}=Qy&*CBJ%vnX_laqEO|Wfpx)8-g@q|PtC{vXm5x-YdMBrCg zhffqiRU6*w(?4!9eS7pkMInq4w*TswcoTJ0jvYHAe=zf%kmz6>&v+ydGh49nufrei zQyBX0^)})=0FU0kWHi>i;a#z6EBkEU;0meqC{fH_{eFr`F|LqE~zReV_DAo?YU z0G$g+Rg!AY2ObLJwmm~2@^;45+MkI1HfcDBZmcv9N**d0*SdnaqThnh=3Nb+g}a`H z73X{|fl07?eS|Sw$p)UugDC(q1@WQ9Q`~(pw7QHi0XfHhbml2Rll#6d^Wnv8+7*sv zVUB2EFwI=UF0$TwDPaZl|y^SXLvfiC~}1d2Wq)^y{pCQSh8NlHHIJmXIeu zVd~XEK81qM>lyFABCl%vIPZ1fexpHsAcNd!1 z=Aw?@7a~oye6YaR@pi(Tv6&;Y<%p;3MN=XL=^~tvrKnUYp%5#4h|aw-olC%wJ&F`y zMzeM4!NP}Di=?{$ud*bMk1sMTq+=fkYUh8koN(?9u4k!w#VFM* zagTEZ;FJDkPmY=wDtS%OkwHg?0ju#&|D5S$Gt;W_XZkZa(dn|T^K2j*mNYvtNJ%tu zG*2l6frQm2rP8rc^c0Cz6=U2K^9oet38Ce=W1>Hr z)B0I+)|vKd8-s6q2^$-Ks@p}cGI?|x?R+EtecMb5^(iVVQeHK+7$ts=Ph&%3WX1*px+N%`{riy<&&;+Ln;>6KHyXPBej+iG1x;^ z7qzDOr*tb>WgE*DUYXU@0YPhMYry$&}v`sk@7H>n&K7>#L8!tJjD=5!#UJH7Mswo?v5L=hdUaF z$}5IEj%H_xH5#=kvN(6usCtl|w_u+Z@0~BU8fQ;Qf<(I4*!H3^U8?8VdI~P<6=APL z5kY-uT>+c)7J|h0&%j@F$#h{fHrFC)_C@_q=oCQkhACh}7QUQi>+CF8>>Fu}FG-ol zmKB*P@Hb4^5DmBc6*XKaX`RI>%cR2og6~*aTYe?eq&{uhRbPMrZ;p(Ro$g=9Lu6!c z{)YI}lJTtUpT;B2`DbBFiGEjkfzdbJk&RGX5>jm5BO4WDwwFqxuCgPvb0}5=Mi5iA zv5Lw^raY0Xi@lWwbbw*OdU%X@6q51U;dWn~Ayt)g@0X)F7fkS*4}W&+mjaAYDN})T zvX~a#ro}?nDz3A`ToQPWqotu3|A>C(+(>@i#}at5f~cDVz^%0v_(U8z;~Ev25Lc@L zxihuD&vrj-3#?0w;b>p##A#Wb?RIzn6q8b<$GVwudTz9;7DZ@OO07l{V>lsWBv0JW z9EZehZThJaYGvO?=m|<@*ujr(+irrQ8z_E6td?$gTYni0IYY2 zB})ct$-WP6f5v-J@5C@Or%$8VoGxNw76?wKv^F4$!hL{RXl$i1#PI$bC|K_g^X#A1 zCGNfUr_o{SCLkmX2p(MwpNgZd2~IBg*xeV;!3v6UEKH}IhG*vWZG!%Rj5aIG0h1(1 zn|v;rrH6BKGLKx6*xB5oue~(+ojf{}Frby!@D$I0kwhTq6I9N3$I?@rLZ>Kt?}MPVrzLO zw-eInuw_d&mvwtj_Dw1v5SVj7;l?~LS@NJXfs;AIRipoav#D5VjjY`r_J2l={!4Ih z4GR4YIJ|Sbvkb{%bt`sz`AvRnr0GqXgZZbyLhM~H5bQ~8K19dCi<-K#omVA*Xr(46 z+JFaArBAT!o6)8g;x+fm86`N~Bz3Rh3uA_2pB_c5MwqXRN}X77uBJ znU@#EYb7-pCq&RcZS|;Y_EgT_Czp^Z#{EN-dCEWvo0|SkAX6+ResJ9skOcy`+$U#* zQ5L$PTk|bY%~cF3V{K>5Di${-GWX7_sVE!OKum0%flNAKXB5qO17QOgWwblCd}ix1 zcvD7=j_E7SVct_|gkX6>B*7siBNO)q$ou*!dOAUfG)0>+cL`MJ^&VW7G+nJD4V$~) zL)a1#nuVRvBU5tyKG*}k=s?JfY_S0l9M~aJjzsi^Ve*3P}2vx-@?_9JN%3z3&~ z@o%I@RFJ{`QopG#IUbdZjrcy2>c?tPEKo2Z4zc(K4Twfc4qX|<57i1RZ1Uh;M{|Kh zq0*}1=b%80`^X|CEhh%H!))tkJG(jyl==EKlbayegzA-K7Z^tSLvGNPOogOc3wEfB zIe{0Qv+QTQm-IlyFM)7LqLXwlJJK9&PXD1iG0E|}1HK~idiPjhm{b-itf^y+V~X39 zO$$h7omxtv+W*5W0#rUq*T5vkZG%lfyf;xQhoNAPAqLvO*xed%|B#s9WgdqyRHP#s^TlMc>Vb(&%n*$=Y zwv6TooypS+3tP~L@M!R8tf}$PAUu?yMEzxY8$CH>bFSb0@VaEvGQ%V4=~RpLVl0r2 zp7M+f#B!o!CnqbV8 zrKl{3y6!3J#}v0X(C!u~7KC0h#fKCe!+@ujBP4$wV|a70K~RZ^ zst`D=LJzM%tn2!CAC|fiy_d>uh(M9eA6zH~A7_5~BbLXa>RGCfrmR1eUW1sbAO}QS zJx^HjKu37Hx`+-9&#yYj$lEwd)$$)g88p~~tI#Ub>CsS`qA zcf?Go*=Qg-YbTx^y+rqQm#JiAv;MzFJTck)1_!BK-Q3be$_xZCGv4g~U`SU6`G8b? z08AUpQ@y3;^VzfLH?8Im%PmeKy%NYZ-&^N$ESFmdb>%Yruo=>aq9%@+ZYCMxFKb~! z$jskKyIT@><2x!G)Z`)!VPR20tw;C(%=c&m-rrxfW$G-w2(jtsgHCSQyMsCS#+MA404SDX?LX9dC~g$K z;);bK+9_R96J{$>4p4Owqc9O;NEX~E7Eb9RA<|IThZ9z$x<1wJ!obPB!sb@CH zv3xw42$CQercE8BB+I0Ky|#dXd)Qs%F{x!`U_jQDeMa(ms{Ww)vf@u35|jSrY5T*$ zbY;YkDEy6~5+X@o{?57L5Mob)5pPXvd5f2r)%=dk(`{DcB$;m(`9}YB9r39Vfq$Yl z1(Z{g?L4kwF2K!=U_6{GGMYYZXR)XmDQmkBtaX+{x)z_IUm~9sT<=pcurunj`MbM! z=VT|H!y;Ft_hIk%I?9smrqe4PQQPl`oURJ(R+gjdxFErC=VKemMvqg*s~en=U^Vt; zxQ}F>$19B-i!{iDtWe5=uYgyNSF6j*G^=g#7o+hW3RcCJ_a}!d$m9|o-f=lr1=~ta$utYu4J3R$GCjhpNuaKZ134>oNUI;YGa7F%56l*=u-Y)?AkNLn2 zU_02LJ{J8k4F@d;$_o4(lR=6(GB` z7EAJ;t{HfEgDPN)19x?pgY2CJkoR(8QGS4V5kseaWr7U0zFVs#MXLC1-FOG~O*3pN}tRy=foI>QB z$r=zT036YEU$^6b(o0cZ#2giqm3^P>RZN`xQbWHANB8M#D44iCgxASpw{`hm$E_KO z^7D2)3L%^H=FgnlfNq(gEzizjSN{JM;WeGX988(h2fz)%W{1X9qMjT~AVR~nA=nU~ zLN)HfrQrC5hDu!>U-EydP&a0zuL6;n&z1$H?&0o{baVte{>*b()p30ZDxqjzc6Nho zf>5iy%+XHeao{|dDvM%tap{0CvE3)O?+upQo48*Q)s?EGBJTB7)1m)|4r0nOCTDXu zUUC!rhh^tc1Y-izwp=*G$0fXvcN;3262$)zbX%%m*sWo@E!6v!!(!_49Rs=iZnHh@ z@ceS)+SSFuBGoHkfE=4CWsGJwjTlf^a0yC!NR$>x0*f2E>@!TaMh@6fq+p#OHycWU46z6YIMwhDR8-JRp z-wP)gA?*;eR=)n4boRWYV6T~US~DWb>}GyPG-Z<*u35nl;~miXBX+hWH!!j7-oBf( z&(%Fwq?}cq)ea-tS|dtCjJH?j;QjO6BFfdi9oCGMP~>nP{(2Tc3=m8imV#=eGXc&E zxgk;KonAi-F$FV#jG1;&ZYrm9dnUM_s@oyXF?y+=hISaw;C@$$IMSk6@1-G4Z&6lb96-=Hz} zyAq3&un!6e%DB!3bh24Jn3yiqou?5Lt2ee2z$Rqcg9qgC{D<0_g?!_|)g760-2bbK zqgD6j{~J9QtJ=qGb}IQMTMOAe!JrWF2NHX$hXx5TO2mT-XJhNa!Ni>*UscPs>Sp^e z=ro}8_4S*S;r3ApxdV$w)Ag=W(MxsOHFiX_7;(HcF5ba)u)?6Pqwjf|NJiod(K-m2 zj79shdTmq-HXTQ6vgjL(N3CZr&ugW7eD)9PuolX>_~?hTo_K*u#2V^eCikX?^+Y4j zo($cjxAo$!S6VRWa$Mt;4(KXlJLdleCM`Dw1LWt!g{phAr`Rgz2}+z~#zzsd{dMzv z1n@aT5U zqC&muK-wdhR9x(pO?%UQ=}X ze+fOCqfGCQp}3kn?K$vR#+`UHBT~8zQDC!6|JO}cT|N=M6sboGtrV+MVQ;H2xw9Bv z)z_z1zl{!H-*pY@B!t85PiNq zU=?ls_$+Ut;Ojp$Ut4=q2a`aj$vzNi(@}-3>m2i@Ofii0Fd>&t96>Yz35(5p-Wi2I z<-IAK?H5nAQvM8yWA^F4Jms)hubHY?x^e*c+vC=x12bAtQH}+yf81vYk}9q2zw16JwLA%rf~o+fiAbE_5hM!>#U&dPwa*VUl**Mz zx=>x;$3c+P13xvnzoYc5hZtY4HlPX(APE;uFHA1QO<+|0T*HI-w&+=e_4)eL$ckj- zN0b{@W24pmX^ZGj?F;{*+lX0x6O|9V%UWW?^G*8wGwRh&1+j@6Ve`s6(vm#rc28A> z37KdZ{8-1WD}g5NE)wAxavPfyRa=eEO<#kd!E`0$SA&9m{gh;kybDtdw8|a)(#bSY zU9qg(Rky^huHXS)fpxU?K79wVpc>UGS%4y?_hW{mGpiEFd5Ar*&@hs)FiVg3WOYHJ zcqNXWh{GO&*V$A#)SA{cL37cut0JrQXRtX<`S;94Of0OZ!-{6abG!5SzKx*z!(^O0 zR6x}FJA|`ex5T{7gfb~*;)Hm3Veu3)A2{8tN=7a*WDN`rDP9I1BY%l}mXt(N};qsLOjI(hJui|}(uWt~@RYoz*B z=k2OQ2#U*=%tn;H%|@+4$wtxJ*H&dKF}tk{YCCWG27d8Gs!jGELXf?GlEK_DX=LXA zwaXcS&DgEnp55)W+^XLp4S0Uye@mV5%x1&Z%vAs{kRT$+VOL z(a=NkvX2LR^tufw73^gt28HNgHWv4=KE2S~{3QFOKC|Bd9?Er4V>Kv2`Ldm;74?_E zWGxA3en$6A69eN6*A|*^FHsUfrJ;h1A*j-yN~7msT*~ZJkQ$xZuyy4hASG`t#$qyMF^upVx3V{4-rc!M3l!+FM2fDTtRuVZ zFKs2NBr<727Ksjb^A)l;WJV6~CG4*Ke!(DXC`?V4S}?>zq{M44R0?Maklp=qB@*+< zw?3`*V00K;>orl@ofH}s#?kuPV#z|QR*`C={Du@zI98p^mv@RMBfq5JD(84V@OVFO za~;L{)PchF@>!*qTj~`%MFjXCwTNM0VYlbKMMcRv(mA15rLuaKTW^IIFE4M!0)nr{ zo9x8+@257;Qg(StGX2A5vfW*t;MMERk)17H;XAxLOx?vXmYf$Enr=HPcwByYR)`MW zxvcaCUuRS~>{g2K!p^B5WWR*JGZNWlFq`uBfSg~xpnl-+2 zf8g3VZOO~aLqI{1ctbkl$1AON4u_v$SGpRl7M<~Mvx2V=IXCXkH(7H(Vk6^obS0_j z_%XVyrtQ8waIKXom*^ko99G|-GDyXpm_@=HJx59D9!*)VrQ8BbqvljJocv6S;Bb8A2uqW%^!ZFY$U#Li4bi**|QUjn-hgOcS4}bK*4qwYdrgKBD{HyKZ=A%UKIcma)!AX=x** zzq2VO0e|(|$jki$RwC+L=oC4PdNn7yp^trl-unlF{@>@`O<8$Il0%E`bngQ#Lb zCNbsMJw6+yPk<{J-^@ps&yBbhs{GSw*AvrDuGMUGsa8Gf%=ZP~>k)6sSOK`K4}54| zrl`X(pClpLwx1W^yRib$HpBbl3|sA<_8{->9%Sspa8ST$Ae*e)3-$?c`W>oj`HbjL zmvCTWvORA%>4kTue=g-L8J4_k&OPCZmkn)ve8T933d2DDE52GcOjRm?rv#C*1Y&98 zfw%2(EcP2WQfB8CYyyL>U_i~j=J{ecOk3^Gu=L}T{&Hv!y-HL`mDeYi zr-xpE%6C=t(TcAz({!BR??7UeB;CHlmpcrz^+!7&2fln1q5$%FcpZQchEfGg4@NXO z=}qC30Kkpns&G!UOC0`(-o@h2imXH@&`@ z^YUOV<$TW&HLF2B=259r&GrJcXLk4vmTSqCP%xF7sG~#a_G>C-l7#te#pgA6pTjeg zmiBt$|F#*NQ2@$>Hgykc#pP5?z1<#ph2T0EUBX`H`iyI(XG@_twV#L;O;hGYu&j&< zY`W$6}O6_ZVzDccy;^(ZolH)x|Vy1 zNUuk^tEN|U%hiV7!hE&3?%LzU7Zw-w!y9O$+~(PY7>(91f`SvZIB(&B_p74`7bp|i z#or5u<=UpjJ;UR#E`KNJe_6EO9x+(Ct-VN;b@Xi;$+{iRT3-M1h?HbxDG`5wdL*Qm zeQ06R5J^|s7w=Frrhnt2YnX|^M3-F2zWsh!%D)|n)qQg}c6NoCYxw}VPCrk7r+9Hq zugt>M{NcJ$JmpEa#fhQ+Ssl|q?B-TGs}`6RUA{>ge=-oNKqSXy6P+x##Kz=@u|uS8_TysBu|}*O>v{kfm(RUT$|UM+J~2k_I=~WH%U|Km+Y-%e zDNf!~!=U+Y5C)7gUeT!7Ej%1^`JDNU{!a*5qoZtnd2W#t#NfrW1hgfUSCYl{!3am* zKJ8H!b1yLW<&vjtt>XF-G#t+f*fNuBQ{ni0KKqegr-cYQrwy626`AOQ<1&S?sR1mm zf_x*AZ&|Cizk27mL}jYYK(y_tMa>XKJrq|R8b86aAI%ON*)2+-k|$xMg_1{XK0Axg zeRqz=UkH@X?JP_I0`u&XK2WyzX@30{n8@(15^%ASm>rx;R}nHff^%Vk@)00vr?jFl zD|6SQ&`Cd#F2qGn$=UrhHa-Z*@T?d)piYg&;36d@dvi@V&W?Ywy%TPFo3sL>6cCaV z0CbyODa1hqQy8bYUgg2uXes_MkQ&RYgoreZvbt61RuyGo6WuQeQBuO++RzS?uLssQ z(GAw*g_U!>O4TQzPxes)BV^;hIFQoQL!rl^0~E+vxZ_>l7MhV2P)l&DRTU)+O#LbR zDXSbmH$^xCrgDQoE3Ramf<*A!DUbf*oolVlLZs~U!)@z>9zQw>sV)}`-*%?=$HOW+ zco62C*NhkZSnow7&UmgHnK6SSmI+d-iajP7Wv!2;*Itqkw8$qS(eQn3}Xkw<0#N$IFd4C&}!Dg!Hpu@j#y1?UUnIIo}lm zK98|kgt!{$&s2v5D$;YUHbN4SuFD7t%~3g3Ao)-BCR{!h{$LfAy11~Lqm>Bn=Nz_u zaFL8mGoo9&ssEFvO}o{P>I>S<{K_(q7D19u8%wf}k<9j)#jvLS11(PYzjXs+dPAbu z2+>!0rIEbG%%1p8GaS9VqLAOr$*k5S)Wah?C8dOQg^s??>GC$^sabq+LXKWOV5AUL zh^0(efT)S-ve-&)C5PAeL-Ek5WIL(H*iu?a5r4a&5qGh4y2>Qoht2OFdq0Z(*#Fk8 z-yUr8&=Fd2ae22saJo68scF(0$c|@qGWp1J$>uaU$}p}5`tY4G7y9S0;=qDV;wr-% zy50G5w0LTo(d^^xKXhkznwC>r9ym~vBhQ}yc_%vMERupd^HgS#Htwm$^HW7g%Je>0l$zj5LbV3wb{#|VbsB1QOV2I$Fl&i&;CMRXVP*G68eb>HKpn&I}scU-P3 zZ##q|Zf91wYg%}N>1gI9jY@VDU~%rZP%5f~$#n|DxscvXU?dshv^4D6Ih917(S_jD z6*3NASJ0Uuyf^|FEe|xj*~Ay67$2KSDO8{|ERk)&k+cS(fY^5y%l@5}TDzFO&A2%y zafAk4NqTtij!dL)Rhp|INbGAR1Sfe@p+yuyqa)4tR7;}-EV|deM~sqUor-uGgw+L0MHR*?s) z(!C>$PPCIpr8*PJKr}8OI8iopN`TjuTWiBQGxctrpJ2WYbK4Srox<2Lnvjp?CL3Oh zECV$1?rr1UM%a`L63P{*xn^4td_Zsy9tKxA=IiPq0;L;OIx3Je<8AZ5G`_?)4y910 zeOs-3@6YsQRWKreM71rad$`f~P`~H?RKn!tP zJo5Yqd2{8l*YicobDf7D)5@^P%KMa+?Sj9b3VM%7R%?(b%@e(^h5{{#B{>^WcdG zq~pXL-EZzYinU_g$X2hA@2_WrGfFf>O|~?9zp3tg6jE`t^l3~(rNQ!__F)`p$X57o zUmdM^qH*JQgJi;1SC2{AExchn(gYYT*{@H(Ke(t7>k=mb;xzpOP=2}`%we&Nvs}2$ zqDBfEaO4_GUY+)&V=_B0X%;^P){nVQWjvlVeNVt!d%dbf%?n886(1b+X4qo%CVczS zqyJa)%d?yCtB88Def@i+PEupiiiY$pLsEn`9{cx#+3fR{Wn9M2d#>=-arRv4@&y6? zuyW!Qse5wYz3mIWQ%0JC(=#Vygy`96IMWBKY{&T%8E$RLKFFN><|K04B5mWZ(j8ll zLYS_XaUsv(CmY&!hqjve{}_AAfVRSITeNsv3bat5c=6)J9ophvthf|+C|Wc~i@OB~ zR@^06(Lix`mq2m1AOS*N_C0&wci%bp?05d;XMW7}t#6Jw#+YO6pK#uQ7(&~Aps&u6 z$2&7%>}RAVdVt41D(#_i2iP?4SPt(hE?+Byr-WMJZp6yedynA?>FV5nu@d-PRas?M zrW?Xo>iB$)1{^H2v}9Y_9j#eBUdO621Jdlt(zB39!5u|fotj@c4^Nd3Z%SjUOK*P( zn(k(5l^nv)h<0{dsoaLyx}@hD-#e?KAL+jB!ywy0#C5oGgG z`S{CSMy@W4WO?xCE!X zCM#6Q9{k^83u@tYp7&^lYXo}uc29t_qdy}3U*j9FR#lq33Nb;xFlN~}i$UVlGGBL( zrv`5(3jF1i+;k#zc}4H4@Pi>d*7tkY@CIiWKH3=< znME*n?67sy-SO#96+bMsXG1QwR8$Je;E0F3E{0Ts+*xBQKVBLoU{z=1@x8Q?^?Lu==cTjXO(c?9!X=0G1P8NPgeg?8~WR$V5iX1${Z`hK*z(0 zc20=#&L~JEWhm`;J)uO$)3f9y`HNqRrE_MHc>MZ}Kb=1-yaKHBM7pPq)g9u9d1I(^ zo3+opdH5imG+QpHq!km+bg}b`=1G&2zSaj);(&&^Z_{Z#6^ROS?N{ANbD`5qcKX&F zy9K)iR{5&MGTWI;-+Ru~Z(*C`qjj&G@q7Jmpl)_}6N<_#Y#SDdx=Br2HB27e7#h4_ zP+GoSlf&>fdfZfA~g-x)>~OPQ-t2?|7EzmgW@%v5$$h8^_)B60+cM+l{y+*=04;^^asa z?{3H_)R0A77nu zUi~WzfKd{VlOAtg*+gwr%30sufWde5X*ib8X=*?p>yR>g@5-hsSZODeN2-f~Ev63C zgqf7cV^zd*1y^Bpf$iU0>@cwc>e~xL5=uxovw_WGyCX$0fQ>QLRTsI|<+H~hUOYMm z3Tjv>m>}3j@tdn1-4_&(`a7q*jusQ;Qs*fQNiS&NA}6P79CfRiy!mUdH$F`%To5Vq z83Fd4qv}=%vKpvVq?;d?=49O$!5;qE+X3Jc^U?mkzC3jV8{=XDHVKjss_#%h%CVYn z`-l}2)Xwk99;;*<8&rKgu8bH|c~2$)Q}L7VE=!(nraFCahS@%oO2>gnTca%3@6@1) za^S{vO@?OpT{OktOGU0p|4TyU=hFdm<~hTD{~KGp2wl;q`pO-+r5*0I9^(<_D3ta$ z&YnU12vN%w!4@CsqSI30)?XIG{P_=QiQzAX0Ha3&>gGxb{Qlv)9`}kh%E+qulvF$B zUr$pB1&Ko*wsyJor{ptr+udmc($AkMdPjaHBzf*7tm=@5`%5E*k&|{2Q>Sw$o*_kR zrs6X>f4NRbju2`w-{LR*_BV6}80t;zvX$>XC)%)CI1gA5%SyEQ%e;Bdxv<)!7Qe+r ztPEBx+1F5IHk3|+>Qr?35$X zNN+D>pkG%r$D>UNiE_fb6Er{r`*@(Iw8XtHD@>XM+AL|9d*)JZ({oXyH*GrR`16KW zhOKB1A;HSNOJvy^8GW1y-%`(VYlwP7AME-J+wRw1_eA{8TP7|vHH)RK4beAH-MpO1 zQzjZ_X)2x0qI&On1hR&O79Q(1yzzK!Ce2P2YF!htAGrcagC`a8|2(cWaxO>BSG-#{ z_|hc}EfDcIaap47kEQBw&}rZqzQWj^vb1K}6T5^(-3F}1Ss|;f1A<6&_$80u82;N( zhhBws2NXr@T|JA}q$nb-SD_1!5*7zOAeug|TJ4-JLlhM*hEmveyqEOXw(jhmQhS_m z8XXLBgg-kMVzmh$;JLR7ns>5|%eq!ffY>M$;NMly-_S+O5{P{V?3l{Ls=#5C&nggZ zR68T-aVda`KOOD&yav--87O;#Kq(DAS<-+Aswm+7Q+}pi2K#%xT?mMmfJ;p934!uL6tc)cRF|}lw2JG;_<{%On;YqQCnM!&toF@{Y^>D} zbQoP<$e8Sn=K7()%1$W)vD9kQDcPw|K5kaXeuoo**;SdON}?haS%_Ft>6e&Lra{x` z9scyzN`qGF3~Vj^K0ci)?is_^|W>Fm}2?(99AsR@;}&fael8w&@<8^Xz*{!$i*eg%U02yOu6 zD&(_&cBuMY{#wv^IA^+oIG$8yohX_`83X;p^zdpf(BU!K#&!tcK4SKQ+87f9A z?pM-Kd_W*%c%Dg{`HB5?%r2Qcz^6~Xy~Rn(8GQ|JFENLC!ZWS0xGk<;!wjzncEesd zt8`{aA`>-46z29fB$?C1I_zGOw6{IEern==I!yz4JQKw~zPs0YMyv2Lf$tTE4n`B7 z;msER9#U70?;`oTK&_tF@mdTXg}_^RI|Tt}Pb{-ulBMQv{GNz*YIWu~B?i+sf4b>D zv;IzYw|W^|SP|JOJz*meQN8dX$n06KyoHKO(&0Ax9oQ>|AJVp_9$058!0ez4qk#fa%S)or%qHe8!#w>`HcgB#| zC?!S6Q76W%!lbxV&)7IXw=QF3t}i1tZ@z54-G3S1CR5kly?&pK|DZDB|1Xq>+ zDbwM+bI+>R8nCjU3ne}LE`#G~T&&^(oQ-sHS0)Q4wZl^(Ku*$+g_+^3A`Kn;o=2;7 z3IYjP-uPkHH^I2G%@11 z0@cZ+^#E_pKf_h1U9AIZq9J-oDR1+@GF~jmL@1x`l&t&G*}NSl<}CE_XDuhoJYB1D7gqh zi*?>~^$;q!7Ug7)yK($;C5k0{F>rvOW@nRe;d+qzw^FW5iqHI81=n}6C#y_^VHm1h z&J6Z=l%=Y9=#i_OCqW~v4hlBHWsFPEg=h0cDN^1FjJ2({?L>l^V%{3TtckyDRayNQ zdi%e2Ps!-k+2E^Euf^$-d8wspC0i^oeCS5wQea_W{7O=&nEF03O*25UsCCK|So6Y} zhK4@PX0Y4^wU@(Ygr%Kff)f_b9>f@|96_n0SoW;bMNvNzlxg6UB=V$I!|LcT{c`K( z5*Qw(57$&c{b0s4%9OR}e5T45KS z4}fyocwNpi&6;nQ&89tGy`Utq7p3JK>lqQd{@|5dt*b5~gchOBTpPn^ohfDhoJOqvqUla-iaA8|*stqR8rpOFkx zuuGR2EZ{<~ZvWV;p5shP%E=L>knA9DIS%HleV44To-sv{AbtRi{bT~(nX4@e?xH_u z5{@|gcQP#et&2c#1iwpKgZpp(lIm@_4&=r%x*DQtY;`2&=VeFEPi(wH&@o7$gIwK} z`FN+&euEz4jWw@hvgjiu^NyH=(~u636DO!*^W*+X&@imE#r=~nOQmUVO^(X_3bQkM z`8LxubI$iA*jK1^_8(lXN6}m(lmZ!3>D0NaDKT`gih|MOD2m%>2{b5dG zwsNw|k{UaYAHf5Upt6e4H`%Q@x}+KF$e@1TWGi6-2YT!e=Oc>zBN@C@I);-yl)I5k z^Jy3Fe~Op1zNk1^fCCr(PS^ZxRu4R1U*Fhj5?^oa9If6rT8U;d#zX_WqFKyS94%v+ zO#-;7sudLF$1YUPc~phB8U%Cy$c>$Iidz%geNqd}VoEEi$m<8d&cn_Ra?yliznp0* zy&r7eE~%xTXgD+yCN&`$=jht-Gf_6)b_QpMr5Jxg;rx`p=>Wg;;oEO}=mpvJzYJ&Z z($0FNk5+tMn43^UmDHHi1%~tFX{&F6MyvK2Y^{t}UcMlkryyvuWiwNd_0IV51LfUr z!^9=wko_IrNzAI%*-dcuA)LXjcWAfrrNSGLdg~?&^8&NwvO*y+fWY&3<(V@9msW`u z7PadO$P-D0jLX1Q5EXvHnie(Q*<~1J_FEnva^h+TR`%n^GoV2G1NxS@&@+7DjxaUZ zC!qm5Q(RX>e3Vj!Sch(DEiXh6utQgt1b&heRpwNL*eW~QQIk@K^w_2|!3UrywTw6m zkdSV|iVGS9%J>o*mL_%i?|b2GlRxOW zX+MheVT?=6;x^Sc6DNFS{`Pl0pyw1C`aV4_B0NwqUQwwI4nb#roVdfzm5Ryc%SynLJrE$NDCTpEyKQaW!wALP16tJ&gYMlSkHe$VRNwY#L)Ph0IJdc6_P4?7huB^ZBw@`~e&#+ciuRgG zgw$~vik(6+c6hwb)@kdL(W)yVUbdt&dMU@drz|@`_<`a`qnXp6!1Lpy=Cs>MUz_E| z7`<~1NKhJLl=1}yH>UV=`TBnt720@A-;1m+qMb(5WG&Ws;J;SpNqBuY()^Uk2jl!m z5BhPK(&J?1*XLcmMnf_i!bnv?!+G*B%OmHd`J8+QvQn$h;e)I{^EKqU??zR;iy97f zwpxp0^Yy_T+h>-3j%HnIc$R9Bn9{q!RR{1Yua`41e7J_vr z`VLF5v4aR@0YM{J3BU`ucN6SWdq6ET%m*ta$_Cuq7W&1$>QZV8^hY|#$v01x70zMazWIm?@`tjNeq(+{-A)$^HQeaVdN${)SJ7&8yPpMuV$xyfpAu&m8?iB69 z!?YhIw27kC(;=kw#}~{L)|elAPrnO^uh%SYuy6(sL5ve~|L*TI>PO+eDiz>sYapuE z(q&;G+Hvtwz)E?ocltVs)+ks&L*`x3D=k<{LuQ^T`HzIUk=X|tKwpKPB+78sm*)8V z{y33Tc`XY`eA1rJ)?wU6yz1;2_`vwe)}x& zO0G?sf|H?|GeN;`Wo){C$5xmB!Pz z^&on$+*;VnO~Jl5)GMxTp~~tDLVXp-2M;K-{1;eyBmdQ~T5l}mi*=n!JN0Q4BTAMY zM!mn@50h&$EYblPLm(u8TUqhP1WNp-@`L1Tdg-rQcYA}%zw@p_?-DaxhXS9@1tz&=R z2!&C@4^`;exYV!_DpHriyOH-l#A>lSF$9D05imikio$*nK1OxQZ8nkWc*rOVO}D0q z+CDu|8-hYxS5_C3?`s6=w_^V!Z|-#qz&MdD%GHEb~H=XV;qJRU9@2);k#m7AlIls))Xy&d>jKVk9BP3DoPjU6ln)V z0)Ta|lHM>t?*0A!!6^fJwSI*OnyiB=a3vteP_sc0s>c@87T}F0%+O|4B&WRG__eQ7 zs03uK$x^aK0p8!AcO6o?29Ix5GUob!--PZo9<*_={R{R!UFh7W|8^8eBYOpSE$JjU1E z97gyIYr#wfHhVu?3%b00?=!esyIHo~r_`HNa0-Tmixl9Qt|_cTgdDZ`_#r=1Y|J9W z%AV#!a8TCIh6*TUfJjiQh^`(Ncd)6fslZM=WJ*nP5tY0HWSjX=e6 z_@E}!FYR)Qy2|0ZtvKSuPyPTkO>#M$XO;U|-%kIwBUO63H4?Y@SyU3|3joWrLCb`$ zb(X00zKf-!`fVc1n(xss$n7H|6xlPMGnwK|SW|6{I#;V`Lm1ez)@ttYpGPs#2izN27Tg(hr{4Zl=Eml5@X)jpGZ~lS<-E$rk44^@~#e&U!R*c<66_suu|`2tmXv}?zSJh7Y9^R%}d{8V9P ziR!ICh(x>ps#hm-QG#X5(|=???X7Tz5H(v+{ppq_iO^_fpdQp{VN&_?4(25zOhyW@ zzjb-_j%{PBmYyz5tLx~dKkrj~&LXGk$`7Fg4e57*t(ew(r>IYcG)?dk75gcazQ)ul z4=K}G4Y&A4GQ<5&^AUNpiW5ks-Q0QZ>^tf-RFwG1=GXJ5it4CD;McEZdL!Qnu)n*$ zUena7iBj|@ad?d-Ba^Wm6#n*kiB?ef2XxwYhtt#hv5|CP-kTFEK~U?W%3}y9UD$2u z!Ro|m1b&?fC-2XN^FQWR7i(h3yMuAF*z+|)G)1m8#v55aTV==z*`ZDs&(|>i*0bh1 z93wbHbHzo+mhJP&?%=@vIM4Q?MpbYcx?Bx4EgtBXgneA}g8F;tgUDK_r|fQG9t27K zv=4@G47J8{u~T7(IyqyiQ>&94zL33b9=Evm0>$EdmTA&qIxn_zcLmDP>GD@n+r%j+ z6b_b!5}!FV^Xt-dGkljgJEe<@CUI=JW^@Ik#3Uc$ccTzkBLW6F6OZUR6;AiVX;={p z1f>7B(LWL!8E;IOTF_?(&2I&9GM{@824wzz}Mmifi|TIENaCaUptQ90{K z_)le!#Hec0sG7C)GwTEW_|s{AT7*FA6CzOTQ6PdKLE@_EYS-y;)48`u23HUXu<+Ao z!BDP<8O2I}Y4|q>(--sQhbL(N`NxwzC;>YScF4t@?SBp2PCP}(JM8QoI^CwQ>({>x zx!R;LVnSY;;jcHzQNx?swtBg|LI@<= zFPL3BUw*_ah8(_VKEHzwBK@v4FLpGcdyxjqf~zn&Qn3r3tkLEL&+QaQe4PKSW@3(Z zp04qfMv%FQd$8EWnFf4OTQVUe$K$iluYpPH$KA_|d>TVmu7E*q*RG#XW!D9EoW^K5 zN5{$s1#7Hy9!o{nQ5w{)vZ8SbZ^JUAmVne0d>U~7`y3PUI)cmD7bT>ris^}5iQmui z>$JRO0<7YAEx^4={iKX9rbzFV(%Wf7zi&)(#h?0}25)8fW8=@8a2mDSHJ~Qp9N>JW zp&tpQfqsALLb`-`%Su51sFRhqNyKTlJi4;qhvA)I48PSQT&zAqQ?qh(%7DE~%S!wS zW0#F)*Q2N?$BYe z#PUU@v+>*eqt+%vx8w07u~Xl1ob4s3A(vza?A|FNbL*4KI*@P(Cry`xhT)RV$m$?3 z3Zm^^F%hg}Tq;Rav=64bZtogb<tLecX^ z3t%AsNS2&GlkT3_60rh|t}u(MjM)}; zRS>qLyF3s(2zJOolA+DY=kyhrMLMuZZpvfc_d>5+a(ZX~1rrc}piD3P$nMe7rqUF9 z>2(-Qw<^MxKB~%7V$#SSo6_(mr0c?N@#Z$Epvb!=O2x*(COMP^ujPqSx~knTB2$|W zkt$B=rFFnPF($K|W%8`W5i?>xmk5v)sM_UOo7__cQR}iBwiZ}^L-PD|*k4!zj%8gc}5tj^j>20C8Hb`wZy zQF~jIuH%T z=QrM$msfw&#Jqb1igfmf@My(9>ta0NKF2|S`Zn;%fBq3I=-fe97V&7lp{PPuKCCCw z47cB`>;|MyS|No_82d@SFXncVog(5X;_K0Roip#Zw*)sh>Sir5PUlU$@+mL><{Lfv z6c7o^G5(g~_t#v+@ji3WX=nF+cyB<+9JU$4v2j{f&cX#KQ$t;N|_C zCUhVDr7X{H6Bjp8mp^d<-%I^=Ad*}$n&jI_Id>)ZHzzJ125cN63dR8^Q5Q)xMki~p z?tg0FVm=duU{00uzu&~Q2K3?a!4K6W+chLy`oekxBCft>CHR)0uIgrs)s`#Qn#b0A z(lK}iuI{;qZs5?N$-NbPJU?!b>=e+nz*Q6qA~>np{^Z~ZQ{qB?WC|Z#tEMr$Ac8;W z?GAiaa#?u6Q9a$|ND%_>7z;Kt$KSY~7d>&W%hX*`@9uI-Ikw((5dDd!ts^-@zG;j{Ln(eI?dYf8F(RRS%4en4fMgtBM*qJwgn& z_DHE1cLOfj23^g*zL}aZzDLgt%BY+W&}h1K4-^V8s+h7{`?p+2SLsS{txqB|L;$HF&(eoiCZ27;Q5KK&up2H9QIKy3+gxR`{i*k70#eSqmDBY;Zui-uE zx`J@*k{7?neZwACtD8#|n8j-k=X4Cb`>V8V+JgH8dd{DF=9V8u`z&*!D|6nDd2Jb( z2rXmzX}zndWYj9u?9{S<(*KJ~RDEYp-yDEAq!M8q)laum|7btImmK7!VD2BnzGB-U zOCK;qJ1;O}Tfga^m1@;6W5f3w<}p+$*`m91U{ZGPK|*-1

RYI)Luv(NtS>V%8; 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 xSHSru>B*GYM?SH_-#dO&MyJLm@NLWK$; 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

TE(j}I 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 R#|pro>;6OgiuVLu{U3!G_q_lB literal 0 HcmV?d00001 diff --git a/introduction.mdx b/introduction.mdx index d98a790..c8615e2 100644 --- a/introduction.mdx +++ b/introduction.mdx @@ -11,64 +11,75 @@ Edgee is a **unified AI Gateway** that sits between your application and LLM pro ## Get Started in 6 Lines - - -```typescript -import Edgee from 'edgee'; -const edgee = new Edgee(); - -const response = await edgee.send({ - model: 'gpt-5.1', - input: 'Hello, world!' -}); - -console.log(response.output_text); -``` - -```python -from edgee import Edgee -client = Edgee() - -response = client.send( - model="gpt-5.1", - input="Write a short bedtime story about a unicorn." -) - -print(response.output_text) -``` - -```go -import "github.com/edgee-cloud/go-sdk" -edgee := edgee.NewEdgee() - -response := edgee.Send(&edgee.SendRequest{ - Model: "gpt-5.1", - Input: "Hello, world!", -}) - -println(response.OutputText) -``` - -```rust -use edgee::Edgee; - -let edgee = Edgee::new(); - -let response = edgee.send(edgee::SendRequest { - model: "gpt-5.1".to_string(), - input: "Hello, world!".to_string(), -})?; - -println!("{}", response.output_text); -``` - -```bash -curl -X POST https://api.edgee.ai/v1/send \ --H "Authorization: Bearer $EDGEE_API_KEY" \ --H "Content-Type: application/json" \ --d '{"model": "gpt-5.1", "input": "Hello, world!"}' -``` - + + + ```typescript + import Edgee from 'edgee'; + + const edgee = new Edgee("your-api-key"); + + const response = await edgee.send({ + model: 'gpt-4o', + input: 'What is the capital of France?', + }); + + console.log(response.text); + // "The capital of France is Paris." + ``` + + + + ```python + from edgee import Edgee + + edgee = Edgee("your-api-key") + + response = edgee.send( + model="gpt-4o", + input="What is the capital of France?" + ) + + print(response.text) + # "The capital of France is Paris." + ``` + + + + ```go + package main + + import ( + "fmt" + "log" + "github.com/edgee-cloud/go-sdk/edgee" + ) + + func main() { + client, _ := edgee.NewClient("your-api-key") + + response, err := client.Send("gpt-4o", "What is the capital of France?") + if err != nil { + log.Fatal(err) + } + + fmt.Println(response.Text()) + // "The capital of France is Paris." + } + ``` + + + + ```rust + use edgee::Edgee; + + let client = Edgee::with_api_key("your-api-key"); + let response = client.send("gpt-4o", "What is the capital of France?").await.unwrap(); + + println!("{}", response.text().unwrap_or("")); + // "The capital of France is Paris." + ``` + + That's it. You now have access to every major LLM provider, automatic failovers, cost tracking, and full observability, all through one simple API. diff --git a/introduction/why-edgee.mdx b/introduction/why-edgee.mdx index 2d285c6..0f7f580 100644 --- a/introduction/why-edgee.mdx +++ b/introduction/why-edgee.mdx @@ -64,8 +64,10 @@ Powered by **Fastly** and **AWS**, our network spans six continents: With a single Edgee API key, you get instant access to every supported model; OpenAI, Anthropic, Google, Mistral, and more. No need to manage multiple provider accounts or juggle API keys: + + ```typescript -const edgee = new Edgee(process.env.EDGEE_API_KEY); +const edgee = new Edgee(); // Access any model with the same key await edgee.send({ model: 'gpt-4o', input: 'Hello, world!' }); @@ -73,21 +75,57 @@ await edgee.send({ model: 'claude-sonnet-4.5', input: 'Hello, world!' }); await edgee.send({ model: 'gemini-3-pro', input: 'Hello, world!' }); ``` -### Bring Your Own Keys +```python +from edgee import Edgee -Need more control? Use your existing provider API keys alongside Edgee. This gives you direct billing relationships, access to custom fine-tuned models, and the ability to use provider-specific features: +edgee = Edgee() -```typescript -const edgee = new Edgee({ - apiKey: process.env.EDGEE_API_KEY, - providers: { - openai: { apiKey: process.env.OPENAI_API_KEY }, - anthropic: { apiKey: process.env.ANTHROPIC_API_KEY }, - }, -}); - -// Requests to OpenAI/Anthropic use YOUR keys -// Other providers fall back to Edgee's unified access +# Access any model with the same key +edgee.send(model='gpt-4o', input='Hello, world!') +edgee.send(model='claude-sonnet-4.5', input='Hello, world!') +edgee.send(model='gemini-3-pro', input='Hello, world!') +``` + +```rust +use edgee::Edgee; + +let client = Edgee::from_env()?; + +// Access any model with the same key +client.send("gpt-4o", "Hello, world!").await?; +client.send("claude-sonnet-4.5", "Hello, world!").await?; +client.send("gemini-3-pro", "Hello, world!").await?; +``` + +```go +import "github.com/edgee-cloud/go-sdk/edgee" + +client, _ := edgee.NewClient(nil) + +// Access any model with the same key +client.Send("gpt-4o", "Hello, world!") +client.Send("claude-sonnet-4.5", "Hello, world!") +client.Send("gemini-3-pro", "Hello, world!") ``` + + + +### Bring Your Own Keys + +Need more control? Use your existing provider API keys alongside Edgee. This gives you direct billing relationships, access to custom fine-tuned models, and the ability to use provider-specific features. + You can mix both approaches—use Edgee's unified access for some providers and your own keys for others. + + +BYOK +BYOK + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d39a1e1..fb6cdf4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "mintlify": "^4.2.264" + "mintlify": "^4.2.272" } }, "node_modules/@alcalzone/ansi-tokenize": { @@ -85,12 +85,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -135,7 +135,6 @@ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", "license": "MIT", - "peer": true, "dependencies": { "@floating-ui/utils": "^0.2.10" } @@ -145,7 +144,6 @@ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", "license": "MIT", - "peer": true, "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" @@ -156,7 +154,6 @@ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", "license": "MIT", - "peer": true, "dependencies": { "@floating-ui/dom": "^1.7.4" }, @@ -169,8 +166,7 @@ "version": "0.2.10", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.5", @@ -999,18 +995,18 @@ } }, "node_modules/@mintlify/cli": { - "version": "4.0.868", - "resolved": "https://registry.npmjs.org/@mintlify/cli/-/cli-4.0.868.tgz", - "integrity": "sha512-sFe5A06EpRx/2hqBDbJwbVJyK6q8IreZCNupTBVskPPK0jGfV2bRAf5E8BrArxhZT7a5YrOeyKcqdB10n1Lzig==", + "version": "4.0.876", + "resolved": "https://registry.npmjs.org/@mintlify/cli/-/cli-4.0.876.tgz", + "integrity": "sha512-XfUn6HC3xInRXA+TNoTi0gDRr3mBbIqK+DZI5ht0zrMtrVPyZbE0vUw5QQzP04LL/fKC4PwGL9benjarKPFOqQ==", "license": "Elastic-2.0", "dependencies": { "@inquirer/prompts": "7.9.0", - "@mintlify/common": "1.0.656", - "@mintlify/link-rot": "3.0.808", - "@mintlify/models": "0.0.254", - "@mintlify/prebuild": "1.0.788", - "@mintlify/previewing": "4.0.843", - "@mintlify/validation": "0.1.554", + "@mintlify/common": "1.0.664", + "@mintlify/link-rot": "3.0.816", + "@mintlify/models": "0.0.256", + "@mintlify/prebuild": "1.0.796", + "@mintlify/previewing": "4.0.851", + "@mintlify/validation": "0.1.557", "adm-zip": "0.5.16", "chalk": "5.2.0", "color": "4.2.3", @@ -1035,16 +1031,16 @@ } }, "node_modules/@mintlify/common": { - "version": "1.0.656", - "resolved": "https://registry.npmjs.org/@mintlify/common/-/common-1.0.656.tgz", - "integrity": "sha512-xNAzM14iO0KUlnBtHbiF7ldL2LRTbBpMgI6T6vEkGT8nKw5id/xcaAelPt07i1F7KiSKAEFz1ezsPBzVC6yn/w==", + "version": "1.0.664", + "resolved": "https://registry.npmjs.org/@mintlify/common/-/common-1.0.664.tgz", + "integrity": "sha512-wkxX3ouV9JOMh1w2rM5JUyb0nDgmpexP50w0cK+h23nskYWJ5ZLdy84EAFOiLpeBElCaH4eAlK561El/l8XYDw==", "license": "ISC", "dependencies": { "@asyncapi/parser": "3.4.0", "@mintlify/mdx": "^3.0.4", - "@mintlify/models": "0.0.254", + "@mintlify/models": "0.0.256", "@mintlify/openapi-parser": "^0.0.8", - "@mintlify/validation": "0.1.554", + "@mintlify/validation": "0.1.557", "@sindresorhus/slugify": "2.2.0", "@types/mdast": "4.0.4", "acorn": "8.11.2", @@ -1277,21 +1273,20 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/@mintlify/link-rot": { - "version": "3.0.808", - "resolved": "https://registry.npmjs.org/@mintlify/link-rot/-/link-rot-3.0.808.tgz", - "integrity": "sha512-HlgZMGy4R8vIqzCcX+0wS5+sSnVsb8K7CcoHeknP46u1PjDREj3yBu9NcgnI5h25Ze0gFYryoj/jV9xQucp1aA==", + "version": "3.0.816", + "resolved": "https://registry.npmjs.org/@mintlify/link-rot/-/link-rot-3.0.816.tgz", + "integrity": "sha512-FQTqzTiKQ72HENlFgVSvctfHv3GdTo86OSKbAdBubrxMBcjP4UpaSn+PkJlCoKcJo2SxtFnXjsP9mVPyBZ29uw==", "license": "Elastic-2.0", "dependencies": { - "@mintlify/common": "1.0.656", - "@mintlify/prebuild": "1.0.788", - "@mintlify/previewing": "4.0.843", - "@mintlify/validation": "0.1.554", + "@mintlify/common": "1.0.664", + "@mintlify/prebuild": "1.0.796", + "@mintlify/previewing": "4.0.851", + "@mintlify/validation": "0.1.557", "fs-extra": "11.1.0", "unist-util-visit": "4.1.2" }, @@ -1362,9 +1357,9 @@ } }, "node_modules/@mintlify/models": { - "version": "0.0.254", - "resolved": "https://registry.npmjs.org/@mintlify/models/-/models-0.0.254.tgz", - "integrity": "sha512-oYTsmrVaGyRQj10g2Oewt+HpDK7pH0ZTox7cHvd/dlu0Yti5CE9oKl4PPfgd5g4Z9Gm8ilEhKDquiX9cs5x7lA==", + "version": "0.0.256", + "resolved": "https://registry.npmjs.org/@mintlify/models/-/models-0.0.256.tgz", + "integrity": "sha512-675dorOg6E5C4NEtewFYJdsg202Xcc2Ke9/1JMrCYtfzPhry8I4v+cWcvfU5X94XRl/IUA38udR2050UDQ2eNw==", "license": "Elastic-2.0", "dependencies": { "axios": "1.10.0", @@ -1409,15 +1404,15 @@ } }, "node_modules/@mintlify/prebuild": { - "version": "1.0.788", - "resolved": "https://registry.npmjs.org/@mintlify/prebuild/-/prebuild-1.0.788.tgz", - "integrity": "sha512-yX9YxwkM44qVYC8Wzd5PY/aesJz8+7JvNFj3Z/PQUmOzreCCIC9zHp2g3mglASlLz0nc3qDajG0CzU9QuX3jvw==", + "version": "1.0.796", + "resolved": "https://registry.npmjs.org/@mintlify/prebuild/-/prebuild-1.0.796.tgz", + "integrity": "sha512-6YsMdjglUkwwsihM3WWyr1GbPPlzoOAahCQwShU/aYEHv3b1TxUDUWQt95eb418t3tyAAxRI9x8hA+OenyoDIQ==", "license": "Elastic-2.0", "dependencies": { - "@mintlify/common": "1.0.656", + "@mintlify/common": "1.0.664", "@mintlify/openapi-parser": "^0.0.8", - "@mintlify/scraping": "4.0.517", - "@mintlify/validation": "0.1.554", + "@mintlify/scraping": "4.0.525", + "@mintlify/validation": "0.1.557", "chalk": "5.3.0", "favicons": "7.2.0", "front-matter": "4.0.2", @@ -1505,14 +1500,14 @@ } }, "node_modules/@mintlify/previewing": { - "version": "4.0.843", - "resolved": "https://registry.npmjs.org/@mintlify/previewing/-/previewing-4.0.843.tgz", - "integrity": "sha512-7S5sIwA3qYl1Kk6HSO/fJBbsdwG0uoz0I6d4m5preQbzzxZrGG9TXt7WdVmfz2vPw9mx2sf0QAJtQ4o8/R7L3w==", + "version": "4.0.851", + "resolved": "https://registry.npmjs.org/@mintlify/previewing/-/previewing-4.0.851.tgz", + "integrity": "sha512-s1A1PPy2OkcFO6D0bNGqf5bd4AJqAhvOrw1KdiQ1/+KCqSygj0Kwvw4FMtU7FTK3orLwDz09rMR36uIv5so1Hw==", "license": "Elastic-2.0", "dependencies": { - "@mintlify/common": "1.0.656", - "@mintlify/prebuild": "1.0.788", - "@mintlify/validation": "0.1.554", + "@mintlify/common": "1.0.664", + "@mintlify/prebuild": "1.0.796", + "@mintlify/validation": "0.1.557", "better-opn": "3.0.2", "chalk": "5.2.0", "chokidar": "3.5.3", @@ -1598,12 +1593,12 @@ } }, "node_modules/@mintlify/scraping": { - "version": "4.0.517", - "resolved": "https://registry.npmjs.org/@mintlify/scraping/-/scraping-4.0.517.tgz", - "integrity": "sha512-bTVJUfwwPdSKEcchbF4DYxEwSwQpjIaUWAninqOFROoQDJHN75D8vejoX/BKO5Tl77u28+g1Qsz/PEY1E6wK2g==", + "version": "4.0.525", + "resolved": "https://registry.npmjs.org/@mintlify/scraping/-/scraping-4.0.525.tgz", + "integrity": "sha512-AEopiECV6yYK3/6dibScN8q9PW6b5IKy336kjZcWBTGGzaSckawTfSj2rxc0g1pfqnBKqrc1r9HMgWwslCCJ3g==", "license": "Elastic-2.0", "dependencies": { - "@mintlify/common": "1.0.656", + "@mintlify/common": "1.0.664", "@mintlify/openapi-parser": "^0.0.8", "fs-extra": "11.1.1", "hast-util-to-mdast": "10.1.0", @@ -1681,13 +1676,13 @@ } }, "node_modules/@mintlify/validation": { - "version": "0.1.554", - "resolved": "https://registry.npmjs.org/@mintlify/validation/-/validation-0.1.554.tgz", - "integrity": "sha512-kn6V/N6qCJdO3PDoL3h4614Zh7a+iMTt57g5fQU6WhhYTW9x46xeJPMqQyNJVsBPUkadYsCGTLVt/zTC6dJYUA==", + "version": "0.1.557", + "resolved": "https://registry.npmjs.org/@mintlify/validation/-/validation-0.1.557.tgz", + "integrity": "sha512-bMglyufJ80mvop1Edu70Wile2jGRjO59iHV8UBhDXzhWdO6mnyl2O8lUFmh70ed7YyKEbnElytUX4wS9PegKsQ==", "license": "Elastic-2.0", "dependencies": { "@mintlify/mdx": "^3.0.4", - "@mintlify/models": "0.0.254", + "@mintlify/models": "0.0.256", "arktype": "2.1.27", "js-yaml": "4.1.0", "lcm": "0.0.3", @@ -1839,7 +1834,6 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" } @@ -1982,15 +1976,13 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@radix-ui/react-arrow": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, @@ -2014,7 +2006,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2030,7 +2021,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2046,7 +2036,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", @@ -2074,7 +2063,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2090,7 +2078,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", @@ -2116,7 +2103,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, @@ -2135,7 +2121,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", "license": "MIT", - "peer": true, "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", @@ -2168,7 +2153,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" @@ -2193,7 +2177,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" @@ -2218,7 +2201,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-slot": "1.2.3" }, @@ -2242,7 +2224,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, @@ -2261,7 +2242,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2277,7 +2257,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" @@ -2297,7 +2276,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, @@ -2316,7 +2294,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, @@ -2335,7 +2312,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2351,7 +2327,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/rect": "1.1.1" }, @@ -2370,7 +2345,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", "license": "MIT", - "peer": true, "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, @@ -2388,8 +2362,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@shikijs/core": { "version": "3.21.0", @@ -3004,9 +2977,9 @@ "license": "MIT" }, "node_modules/@types/katex": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", - "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", "license": "MIT" }, "node_modules/@types/mdast": { @@ -3040,18 +3013,19 @@ } }, "node_modules/@types/node": { - "version": "25.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", - "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "version": "25.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.7.tgz", + "integrity": "sha512-C/er7DlIZgRJO7WtTdYovjIFzGsz0I95UlMyR9anTb4aCpBSRWe5Jc1/RvLKUfzmOxHPGjSE5+63HgLtndxU4w==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } }, "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.8.tgz", + "integrity": "sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==", "license": "MIT", "peer": true, "dependencies": { @@ -3128,6 +3102,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3192,6 +3167,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -3318,7 +3294,6 @@ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.0.0" }, @@ -3330,8 +3305,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/arkregex": { "version": "0.0.3", @@ -4424,8 +4398,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/data-uri-to-buffer": { "version": "6.0.2", @@ -4696,8 +4669,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/detect-port": { "version": "1.5.1", @@ -4730,7 +4702,8 @@ "version": "0.0.1312386", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/didyoumean": { "version": "1.2.2", @@ -5842,7 +5815,6 @@ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -7357,6 +7329,7 @@ "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "license": "MIT", + "peer": true, "engines": { "node": ">= 10.16.0" } @@ -7512,7 +7485,6 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", - "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -8796,12 +8768,12 @@ } }, "node_modules/mintlify": { - "version": "4.2.264", - "resolved": "https://registry.npmjs.org/mintlify/-/mintlify-4.2.264.tgz", - "integrity": "sha512-vuuYbFxu1BHJtIA6NPXXdSPsbe/70r08Gl8AwGjfQr4x+NlG6YfdkAhdQiBbSos0SwbeO0IcjzdM/sOiQeHJWA==", + "version": "4.2.272", + "resolved": "https://registry.npmjs.org/mintlify/-/mintlify-4.2.272.tgz", + "integrity": "sha512-1X7oZDvqJa1LqONr/5Gy6gYIBix8Dx28Wq1VslszQk50LB1Ckym9TSw68bqpcgq1E3guVTmg/MulUDRcysiNeA==", "license": "Elastic-2.0", "dependencies": { - "@mintlify/cli": "4.0.868" + "@mintlify/cli": "4.0.876" }, "bin": { "mint": "index.js", @@ -9404,6 +9376,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -9779,6 +9752,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9801,8 +9775,6 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" - "license": "MIT", - "peer": true }, "node_modules/react-reconciler": { "version": "0.32.0", @@ -9824,7 +9796,6 @@ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", "license": "MIT", - "peer": true, "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", @@ -9850,7 +9821,6 @@ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", "license": "MIT", - "peer": true, "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" @@ -9872,22 +9842,19 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/react-remove-scroll/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/react-style-singleton": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", "license": "MIT", - "peer": true, "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" @@ -9909,8 +9876,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/read-cache": { "version": "1.0.0", @@ -11467,6 +11433,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -11720,6 +11687,7 @@ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "license": "MIT", + "peer": true, "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -11946,7 +11914,6 @@ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.0.0" }, @@ -11967,15 +11934,13 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/use-sidecar": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", "license": "MIT", - "peer": true, "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -11997,8 +11962,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/util-deprecate": { "version": "1.0.2", @@ -12496,6 +12460,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 68a6cf0..3877b80 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,6 @@ "links": "mintlify broken-links" }, "dependencies": { - "mintlify": "^4.2.264" + "mintlify": "^4.2.272" } } diff --git a/proxy/components/overview.mdx b/proxy/components/overview.mdx index 0e2b55b..f7b6637 100644 --- a/proxy/components/overview.mdx +++ b/proxy/components/overview.mdx @@ -6,7 +6,6 @@ description: Explore the Edgee components with leading technologies. import DataCollectionCatalog from '/snippets/data-collection-catalog.mdx'; import JsGatewayCatalog from '/snippets/js-gateway-catalog.mdx'; -import EndpointCatalog from '/snippets/endpoint-catalog.mdx'; import ConsentManagementCatalog from '/snippets/consent-management-catalog.mdx'; import IdentityCatalog from '/snippets/identity-catalog.mdx'; import SecurityCatalog from '/snippets/security-catalog.mdx'; diff --git a/proxy/services/performance/caching.mdx b/proxy/services/performance/caching.mdx index dee1bf2..87d7c40 100644 --- a/proxy/services/performance/caching.mdx +++ b/proxy/services/performance/caching.mdx @@ -89,13 +89,3 @@ To purge cache for a specific path, click the **Purge** button and select **Purg dark:hidden /> - -### Purging Cache via API - -For automated cache purging, you can use the [Purge Cache API endpoint](/api-reference/caching/purge-cache). This allows you to: - -- Integrate cache purging into your deployment workflows -- Automatically purge cache when content is updated -- Purge cache programmatically from your applications - -The API supports purging cache for specific paths across all domains associated with your project. \ No newline at end of file diff --git a/sdk/go/configuration.mdx b/sdk/go/configuration.mdx new file mode 100644 index 0000000..b9de37d --- /dev/null +++ b/sdk/go/configuration.mdx @@ -0,0 +1,193 @@ +--- +title: Go SDK Configuration +sidebarTitle: Configuration +description: Learn how to configure and instantiate the Edgee Go SDK. +icon: settings-2 +--- + +The Edgee Go SDK provides flexible ways to instantiate a client. All methods support automatic fallback to environment variables if configuration is not fully provided. + +## Overview + +The `NewClient` function accepts multiple input types: + +- `nil` - reads from environment variables +- `string` - API key string +- `*Config` - Configuration struct (type-safe) +- `map[string]interface{}` - Plain map (flexible) + +## Method 1: Environment Variables (Recommended for Production) + +The simplest and most secure approach is to use environment variables. The SDK will automatically read `EDGEE_API_KEY` and optionally `EDGEE_BASE_URL`. + +```go +import "github.com/edgee-cloud/go-sdk/edgee" + +func main() { + // Reads from EDGEE_API_KEY and EDGEE_BASE_URL environment variables + client, err := edgee.NewClient(nil) + if err != nil { + log.Fatal(err) + } +} +``` + +## Method 2: String API Key (Quick Start) + +For quick testing or simple scripts, pass the API key directly as a string: + +```go +import "github.com/edgee-cloud/go-sdk/edgee" + +// API key only (uses default base URL: https://api.edgee.ai) +client, err := edgee.NewClient("your-api-key") +if err != nil { + log.Fatal(err) +} +``` + +**Note**: This method uses the default base URL (`https://api.edgee.ai`). To use a custom base URL, use Method 3. + +## Method 3: Configuration Struct (Type-Safe) + +For better type safety and IDE support, use the `Config` struct: + +```go +import "github.com/edgee-cloud/go-sdk/edgee" + +// Full configuration +client, err := edgee.NewClient(&edgee.Config{ + APIKey: "your-api-key", + BaseURL: "https://api.edgee.ai", // optional, defaults to https://api.edgee.ai +}) +if err != nil { + log.Fatal(err) +} +``` + +## Configuration Priority + +The SDK uses the following priority order when resolving configuration: + +1. **Constructor argument** (if provided) +2. **Environment variable** (if constructor argument is missing) +3. **Default value** (for `base_url` only, defaults to `https://api.edgee.ai`) + +## Complete Examples + +### Example 1: Production Setup + +```go +// .env file +// EDGEE_API_KEY=prod-api-key +// EDGEE_BASE_URL=https://api.edgee.ai + +package main + +import ( + "log" + "github.com/joho/godotenv" + "github.com/edgee-cloud/go-sdk/edgee" +) + +func main() { + godotenv.Load() + client, err := edgee.NewClient(nil) + if err != nil { + log.Fatal(err) + } + // Use client +} +``` + +### Example 2: Multi-Environment Setup + +```go +package main + +import ( + "log" + "os" + "github.com/edgee-cloud/go-sdk/edgee" +) + +func createClient() (*edgee.Client, error) { + env := os.Getenv("ENVIRONMENT") + if env == "" { + env = "development" + } + + switch env { + case "production": + return edgee.NewClient(nil) // Use environment variables + case "staging": + return edgee.NewClient(&edgee.Config{ + APIKey: os.Getenv("EDGEE_API_KEY"), + }) + default: + return edgee.NewClient(&edgee.Config{ + APIKey: "dev-api-key", + BaseURL: "https://au.api.edgee.ai", + }) + } +} + +func main() { + client, err := createClient() + if err != nil { + log.Fatal(err) + } + // Use client +} +``` + + +## Troubleshooting + +### "EDGEE_API_KEY is not set" Error + +**Problem**: The SDK can't find your API key. + +**Solutions**: +1. Set the environment variable: + ```bash + export EDGEE_API_KEY="your-api-key" + ``` + +2. Pass it directly: + ```go + client, err := edgee.NewClient("your-api-key") + ``` + +3. Use Config struct: + ```go + client, err := edgee.NewClient(&edgee.Config{ + APIKey: "your-api-key", + }) + ``` + +### Custom Base URL Not Working + +**Problem**: Your custom base URL isn't being used. + +**Check**: +1. Verify the base URL in your configuration +2. Check if environment variable `EDGEE_BASE_URL` is overriding it +3. Ensure you're using the correct configuration method + +```go +// This will use the BaseURL from Config struct +client, err := edgee.NewClient(&edgee.Config{ + APIKey: "key", + BaseURL: "https://custom.example.com", +}) + +// This will use EDGEE_BASE_URL env var if set, otherwise default +client, err := edgee.NewClient("key") +``` + +## Related Documentation + +- [Go SDK Overview](/sdk/go) - Complete SDK documentation +- [API Reference](/api-reference) - REST API documentation +- [Quickstart Guide](/quickstart) - Get started with Edgee diff --git a/sdk/go/index.mdx b/sdk/go/index.mdx index 43803e2..8a015a3 100644 --- a/sdk/go/index.mdx +++ b/sdk/go/index.mdx @@ -1,8 +1,8 @@ --- -title: Golang SDK -sidebarTitle: Go -description: Integrate the Golang SDK in your application. -icon: golang +title: Go SDK +sidebarTitle: Introduction +description: Integrate the Go SDK in your application. +icon: minus --- The Edgee Go SDK provides a lightweight, type-safe interface to interact with the Edgee AI Gateway. It supports OpenAI-compatible chat completions, function calling, and streaming. @@ -25,12 +25,9 @@ import ( ) func main() { - client, err := edgee.NewClient(nil) - if err != nil { - log.Fatal(err) - } + client, _ := edgee.NewClient("your-api-key") - response, err := client.ChatCompletion("gpt-4o", "What is the capital of France?") + response, err := client.Send("gpt-4o", "What is the capital of France?") if err != nil { log.Fatal(err) } @@ -40,470 +37,9 @@ func main() { } ``` -## Configuration - -The SDK can be configured in multiple ways: - -### Using Environment Variables - -```go -// Set EDGEE_API_KEY environment variable -client, err := edgee.NewClient(nil) -``` - -### Using Constructor Parameters - -```go -// String API key -client, err := edgee.NewClient("your-api-key") - -// Configuration struct -client, err := edgee.NewClient(&edgee.Config{ - APIKey: "your-api-key", - BaseURL: "https://api.edgee.ai", // optional, defaults to https://api.edgee.ai -}) - -// Map configuration -client, err := edgee.NewClient(map[string]interface{}{ - "api_key": "your-api-key", - "base_url": "https://api.edgee.ai", -}) -``` - -## Usage Examples - -### Simple String Input - -The simplest way to send a request is with a string input: - -```go -response, err := client.ChatCompletion("gpt-4o", "Explain quantum computing in simple terms.") -if err != nil { - log.Fatal(err) -} - -fmt.Println(response.Text()) -``` - -### Full Message Array - -For more control, use a full message array: - -```go -response, err := client.ChatCompletion("gpt-4o", map[string]interface{}{ - "messages": []map[string]string{ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Hello!"}, - }, -}) -if err != nil { - log.Fatal(err) -} - -fmt.Println(response.Text()) -``` - -### Using InputObject - -For better type safety, use the `InputObject` struct: - -```go -response, err := client.ChatCompletion("gpt-4o", edgee.InputObject{ - Messages: []edgee.Message{ - {Role: "system", Content: "You are a helpful assistant."}, - {Role: "user", Content: "Hello!"}, - }, -}) -if err != nil { - log.Fatal(err) -} - -fmt.Println(response.Text()) -``` - -### Function Calling (Tools) - -The SDK supports OpenAI-compatible function calling: - -```go -response, err := client.ChatCompletion("gpt-4o", map[string]interface{}{ - "messages": []map[string]string{ - {"role": "user", "content": "What is the weather in Paris?"}, - }, - "tools": []map[string]interface{}{ - { - "type": "function", - "function": map[string]interface{}{ - "name": "get_weather", - "description": "Get the current weather for a location", - "parameters": map[string]interface{}{ - "type": "object", - "properties": map[string]interface{}{ - "location": map[string]string{ - "type": "string", - "description": "City name", - }, - }, - "required": []string{"location"}, - }, - }, - }, - }, - "tool_choice": "auto", // or "none", or map[string]interface{}{"type": "function", "function": map[string]string{"name": "get_weather"}} -}) - -// Check if the model wants to call a function -if toolCalls := response.ToolCalls(); len(toolCalls) > 0 { - toolCall := toolCalls[0] - fmt.Printf("Function: %s\n", toolCall.Function.Name) - fmt.Printf("Arguments: %s\n", toolCall.Function.Arguments) -} -``` - -### Tool Response Handling - -After receiving a tool call, you can send the function result back: - -```go -import "encoding/json" - -// First request - model requests a tool call -response1, err := client.ChatCompletion("gpt-4o", map[string]interface{}{ - "messages": []map[string]string{ - {"role": "user", "content": "What is the weather in Paris?"}, - }, - "tools": []map[string]interface{}{...}, // tool definitions -}) - -// Execute the function and send the result -toolCall := response1.ToolCalls()[0] -var args map[string]interface{} -json.Unmarshal([]byte(toolCall.Function.Arguments), &args) -functionResult := getWeather(args) - -// Second request - include tool response -resultJSON, _ := json.Marshal(functionResult) -toolCallID := toolCall.ID - -response2, err := client.ChatCompletion("gpt-4o", edgee.InputObject{ - Messages: []edgee.Message{ - {Role: "user", Content: "What is the weather in Paris?"}, - *response1.MessageContent(), // Include the assistant's message - { - Role: "tool", - ToolCallID: &toolCallID, - Content: string(resultJSON), - }, - }, -}) - -fmt.Println(response2.Text()) -``` - -## Streaming - -The SDK supports streaming responses for real-time output. Use streaming when you want to display tokens as they're generated. - -Use `Stream()` to access full chunk metadata: - -```go -// Stream full chunks with metadata -chunkChan, errChan := client.Stream("gpt-4o", "Explain quantum computing") - -for { - select { - case chunk, ok := <-chunkChan: - if !ok { - // Stream finished - return - } - - // First chunk contains the role - if role := chunk.Role(); role != "" { - fmt.Printf("Role: %s\n", role) - } - - // Content chunks - if text := chunk.Text(); text != "" { - fmt.Print(text) - } - - // Last chunk contains finish reason - if finishReason := chunk.FinishReason(); finishReason != "" { - fmt.Printf("\nFinish reason: %s\n", finishReason) - } - - case err := <-errChan: - if err != nil { - log.Fatal(err) - } - } -} -``` - -### Streaming with Messages - -Streaming works with full message arrays too: - -```go -chunkChan, errChan := client.Stream("gpt-4o", edgee.InputObject{ - Messages: []edgee.Message{ - {Role: "system", Content: "You are a helpful assistant."}, - {Role: "user", Content: "Write a poem about coding"}, - }, -}) - -for { - select { - case chunk, ok := <-chunkChan: - if !ok { - return - } - if text := chunk.Text(); text != "" { - fmt.Print(text) - } - case err := <-errChan: - if err != nil { - log.Fatal(err) - } - } -} -``` - -### Using Send() with stream Parameter - -You can also use the `Send()` method with `stream=true`: - -```go -// Returns streaming channels -result, err := client.Send("gpt-4o", "Tell me a story", true) -if err != nil { - log.Fatal(err) -} - -// Type assertion to get the channels -streamResult := result.(struct { - ChunkChan <-chan *edgee.StreamChunk - ErrChan <-chan error -}) - -for { - select { - case chunk, ok := <-streamResult.ChunkChan: - if !ok { - return - } - if text := chunk.Text(); text != "" { - fmt.Print(text) - } - case err := <-streamResult.ErrChan: - if err != nil { - log.Fatal(err) - } - } -} -``` - -### Streaming Response Types - -Streaming uses different response types: - -```go -// StreamChunk - returned via channels from Stream() -type StreamChunk struct { - ID string - Object string - Created int64 - Model string - Choices []ChatCompletionChoice -} - -// Convenience methods -func (c *StreamChunk) Text() string // Get content from first choice -func (c *StreamChunk) Role() string // Get role from first choice -func (c *StreamChunk) FinishReason() string // Get finish_reason from first choice - -type ChatCompletionChoice struct { - Index int - Delta *ChatCompletionDelta - FinishReason *string -} - -type ChatCompletionDelta struct { - Role *string - Content *string - ToolCalls []ToolCall -} -``` - -### Convenience Methods - -Both `SendResponse` and `StreamChunk` have convenience methods for easier access: - -```go -// Non-streaming response -response, _ := client.ChatCompletion("gpt-4o", "Hello") -fmt.Println(response.Text()) // Instead of response.Choices[0].Message.Content -fmt.Println(response.FinishReason()) // Instead of *response.Choices[0].FinishReason -fmt.Println(response.ToolCalls()) // Instead of response.Choices[0].Message.ToolCalls - -// Streaming response -for chunk := range chunkChan { - fmt.Println(chunk.Text()) // Instead of *chunk.Choices[0].Delta.Content - fmt.Println(chunk.Role()) // Instead of *chunk.Choices[0].Delta.Role - fmt.Println(chunk.FinishReason()) // Instead of *chunk.Choices[0].FinishReason -} -``` - -## Response Structure - -The `ChatCompletion` method returns a `SendResponse` object: - -```go -type SendResponse struct { - ID string - Object string - Created int64 - Model string - Choices []ChatCompletionChoice - Usage *Usage -} - -type ChatCompletionChoice struct { - Index int - Message *Message - FinishReason *string -} - -type Message struct { - Role string - Content string - Name *string - ToolCalls []ToolCall - ToolCallID *string -} - -type Usage struct { - PromptTokens int - CompletionTokens int - TotalTokens int -} -``` - -### Accessing Response Data - -```go -response, err := client.ChatCompletion("gpt-4o", "Hello!") -if err != nil { - log.Fatal(err) -} - -// Get the first choice's content -content := response.Text() - -// Check finish reason -finishReason := response.FinishReason() // "stop", "length", "tool_calls", etc. - -// Access token usage -if response.Usage != nil { - fmt.Printf("Tokens used: %d\n", response.Usage.TotalTokens) - fmt.Printf("Prompt tokens: %d\n", response.Usage.PromptTokens) - fmt.Printf("Completion tokens: %d\n", response.Usage.CompletionTokens) -} -``` - -## Type Definitions - -The SDK exports Go types for all request and response objects: - -```go -import "github.com/edgee-cloud/go-sdk/edgee" - -// Main types -type Client struct { ... } -type Config struct { ... } -type InputObject struct { ... } -type Message struct { ... } -type Tool struct { ... } -type FunctionDefinition struct { ... } -type ToolCall struct { ... } -type SendResponse struct { ... } -type StreamChunk struct { ... } -type Usage struct { ... } -``` - -### Message Types - -```go -type Message struct { - Role string `json:"role"` - Content string `json:"content,omitempty"` - Name *string `json:"name,omitempty"` - ToolCalls []ToolCall `json:"tool_calls,omitempty"` - ToolCallID *string `json:"tool_call_id,omitempty"` -} -``` - -### Tool Types - -```go -type FunctionDefinition struct { - Name string `json:"name"` - Description *string `json:"description,omitempty"` - Parameters map[string]interface{} `json:"parameters,omitempty"` -} - -type Tool struct { - Type string `json:"type"` - Function FunctionDefinition `json:"function"` -} - -type ToolCall struct { - ID string `json:"id"` - Type string `json:"type"` - Function FunctionCall `json:"function"` -} - -type FunctionCall struct { - Name string `json:"name"` - Arguments string `json:"arguments"` -} -``` - -## Error Handling - -The SDK returns errors for common issues: - -```go -import "github.com/edgee-cloud/go-sdk/edgee" - -// Configuration error -client, err := edgee.NewClient(nil) -if err != nil { - log.Fatalf("Configuration error: %v", err) -} - -// Request error -response, err := client.ChatCompletion("gpt-4o", "Hello!") -if err != nil { - log.Fatalf("Request failed: %v", err) - // Handle API errors, network errors, etc. -} -``` - ## What's Next? - - - Explore the full REST API documentation. - - - Browse 200+ models available through Edgee. - - - Learn about intelligent routing, observability, and privacy controls. - - - Get started with Edgee in minutes. - - +- **[Configuration](/sdk/go/configuration)** - Learn how to configure and instantiate the SDK +- **[Send Method](/sdk/go/send)** - Complete guide to the `Send()` method +- **[Stream Method](/sdk/go/stream)** - Learn how to stream responses +- **[Tools](/sdk/go/tools)** - Detailed guide to function calling diff --git a/sdk/go/send.mdx b/sdk/go/send.mdx new file mode 100644 index 0000000..279ba2d --- /dev/null +++ b/sdk/go/send.mdx @@ -0,0 +1,257 @@ +--- +title: Go SDK - Send Method +sidebarTitle: Send +description: Complete guide to the Send() method in the Go SDK. +icon: send +--- + +The `Send()` method is used to make chat completion requests to the Edgee AI Gateway. + +## Arguments + +| Parameter | Type | Description | +|-----------|------|-------------| +| `model` | `string` | The model identifier to use (e.g., `"openai/gpt-4o"`) | +| `input` | `any` | The input for the completion. Can be a `string`, `InputObject`, `*InputObject`, or `map[string]interface{}` | + +### Input Types + +The `Send()` method accept multiple input types: + +#### String Input + +When `input` is a string, it's automatically converted to a user message: + +```go +response, err := client.Send("gpt-4o", "What is the capital of France?") +if err != nil { + log.Fatal(err) +} + +// Equivalent to: input: InputObject{Messages: []Message{{Role: "user", Content: "What is the capital of France?"}}} +fmt.Println(response.Text()) +// "The capital of France is Paris." +``` + +#### InputObject + +When `input` is an `InputObject`, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `Messages` | `[]Message` | Array of conversation messages | +| `Tools` | `[]Tool` | Array of function tools available to the model | +| `ToolChoice` | `any` | Controls which tool (if any) the model should call. Can be `string` (`"auto"`, `"none"`) or `map[string]interface{}`. See [Tools documentation](/sdk/go/tools) for details | + +**Example with InputObject:** + +```go +import "github.com/edgee-cloud/go-sdk/edgee" + +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "user", Content: "What is 2+2?"}, + }, +} + +response, err := client.Send("gpt-4o", input) +if err != nil { + log.Fatal(err) +} + +fmt.Println(response.Text()) +// "2+2 equals 4." +``` + +#### Map Input + +You can also use a `map[string]interface{}` for dynamic input: + +```go +input := map[string]interface{}{ + "messages": []map[string]string{ + {"role": "user", "content": "What is 2+2?"}, + }, +} + +response, err := client.Send("gpt-4o", input) +if err != nil { + log.Fatal(err) +} +``` + +### Message Object + +Each message in the `Messages` array has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `Role` | `string` | The role of the message sender: `"system"`, `"developer"`, `"user"`, `"assistant"`, or `"tool"` | +| `Content` | `string` | The message content. Required for `system`, `user`, `tool` and `developer` roles. Optional for `assistant` when `ToolCalls` is present | +| `Name` | `*string` | Optional name for the message sender | +| `ToolCalls` | `[]ToolCall` | Array of tool calls made by the assistant. Only present in `assistant` messages | +| `ToolCallID` | `*string` | ID of the tool call this message is responding to. Required for `tool` role messages | + +### Message Roles + +- **`system`**: System instructions that set the behavior of the assistant +- **`developer`**: Instructions provided by the application developer, prioritized ahead of user messages. +- **`user`**: Instructions provided by an end user. +- **`assistant`**: Assistant responses (can include `ToolCalls`) +- **`tool`**: Results from tool/function calls (requires `ToolCallID`) + +**Example - System and User Messages:** + +```go +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "system", Content: "You are a helpful assistant."}, + {Role: "user", Content: "What is 2+2?"}, + {Role: "assistant", Content: "2+2 equals 4."}, + {Role: "user", Content: "What about 3+3?"}, + }, +} + +response, err := client.Send("gpt-4o", input) +if err != nil { + log.Fatal(err) +} + +fmt.Println(response.Text()) +// "3+3 equals 6." +``` + +For complete tool calling examples and best practices, see [Tools documentation](/sdk/go/tools). + +## Return Value + +The `Send()` method returns `(SendResponse, error)`. On success, the `SendResponse` contains: + +### SendResponse Object + +| Property | Type | Description | +|----------|------|-------------| +| `ID` | `string` | Unique identifier for the completion | +| `Object` | `string` | Object type (typically `"chat.completion"`) | +| `Created` | `int64` | Unix timestamp of when the completion was created | +| `Model` | `string` | Model identifier used for the completion | +| `Choices` | `[]Choice` | Array of completion choices (typically one) | +| `Usage` | `*Usage` | Token usage information (if provided by the API) | + +### Choice Object + +Each choice in the `Choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `Index` | `int` | The index of this choice in the array | +| `Message` | `*Message` | The assistant's message response | +| `FinishReason` | `*string` | Reason why the generation stopped. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `nil` | + +**Example - Handling Multiple Choices:** + +```go +response, err := client.Send("gpt-4o", "Give me a creative idea.") +if err != nil { + log.Fatal(err) +} + +// Process all choices +for _, choice := range response.Choices { + fmt.Printf("Choice %d: %s\n", choice.Index, choice.Message.Content) + if choice.FinishReason != nil { + fmt.Printf("Finish reason: %s\n", *choice.FinishReason) + } +} +``` + +### Message Object (in Response) + +The `Message` in each choice has: + +| Property | Type | Description | +|----------|------|-------------| +| `Role` | `string` | The role of the message (typically `"assistant"`) | +| `Content` | `string` | The text content of the response. Empty when `ToolCalls` is present | +| `ToolCalls` | `[]ToolCall` | Array of tool calls requested by the model (if any). See [Tools documentation](/sdk/go/tools) for details | + +### Usage Object + +Token usage information (when available): + +| Property | Type | Description | +|----------|------|-------------| +| `PromptTokens` | `int` | Number of tokens in the prompt | +| `CompletionTokens` | `int` | Number of tokens in the completion | +| `TotalTokens` | `int` | Total tokens used (prompt + completion) | + +**Example - Accessing Token Usage:** + +```go +response, err := client.Send("gpt-4o", "Explain quantum computing briefly.") +if err != nil { + log.Fatal(err) +} + +if response.Usage != nil { + fmt.Printf("Prompt tokens: %d\n", response.Usage.PromptTokens) + fmt.Printf("Completion tokens: %d\n", response.Usage.CompletionTokens) + fmt.Printf("Total tokens: %d\n", response.Usage.TotalTokens) +} +``` + +## Convenience Methods + +The `SendResponse` struct provides convenience methods for easier access: + +| Method | Return Type | Description | +|--------|-------------|-------------| +| `Text()` | `string` | Shortcut to `Choices[0].Message.Content` | +| `MessageContent()` | `*Message` | Shortcut to `Choices[0].Message` | +| `FinishReason()` | `string` | Shortcut to `*Choices[0].FinishReason` (returns empty string if nil) | +| `ToolCalls()` | `[]ToolCall` | Shortcut to `Choices[0].Message.ToolCalls` | + +**Example - Using Convenience Methods:** + +```go +response, err := client.Send("gpt-4o", "Hello!") +if err != nil { + log.Fatal(err) +} + +// Instead of: response.Choices[0].Message.Content +fmt.Println(response.Text()) + +// Instead of: response.Choices[0].Message +if msg := response.MessageContent(); msg != nil { + fmt.Printf("Role: %s\n", msg.Role) +} + +// Instead of: *response.Choices[0].FinishReason +fmt.Println(response.FinishReason()) + +// Instead of: response.Choices[0].Message.ToolCalls +if toolCalls := response.ToolCalls(); len(toolCalls) > 0 { + fmt.Printf("Tool calls: %+v\n", toolCalls) +} +``` + + +## Error Handling + +The `Send()` method return Go errors: + +```go +response, err := client.Send("gpt-4o", "Hello!") +if err != nil { + // Handle errors + log.Fatalf("Request failed: %v", err) +} +``` + +### Common Errors + +- **API errors**: `fmt.Errorf("API error %d: %s", statusCode, message)` - The API returned an error status +- **Network errors**: Standard Go HTTP errors +- **Invalid input**: `fmt.Errorf("unsupported input type: %T", input)` - Invalid request structure +- **JSON errors**: Errors from JSON marshaling/unmarshaling diff --git a/sdk/go/stream.mdx b/sdk/go/stream.mdx new file mode 100644 index 0000000..e2dd564 --- /dev/null +++ b/sdk/go/stream.mdx @@ -0,0 +1,300 @@ +--- +title: Go SDK - Stream Method +sidebarTitle: Stream +description: Complete guide to the stream() method in the Go SDK. +icon: square-stack +--- + +The `Stream()` method is used to make streaming chat completion requests to the Edgee AI Gateway. It returns two channels: one for `StreamChunk` objects and one for errors. + +## Arguments + +| Parameter | Type | Description | +|-----------|------|-------------| +| `model` | `string` | The model identifier to use (e.g., `"openai/gpt-4o"`) | +| `input` | `any` | The input for the completion. Can be a `string`, `InputObject`, `*InputObject`, or `map[string]interface{}` | + +### Input Types + +The `Stream()` method accepts the same input types as `Send()`: + +#### String Input + +When `input` is a string, it's automatically converted to a user message: + +```go +chunkChan, errChan := client.Stream("gpt-4o", "Tell me a story") + +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + return + } + if text := chunk.Text(); text != "" { + fmt.Print(text) + } + + if reason := chunk.FinishReason(); reason != "" { + fmt.Printf("\nFinished: %s\n", reason) + } + case err := <-errChan: + if err != nil { + log.Fatal(err) + } + } +} +// Equivalent to: input: InputObject{Messages: []Message{{Role: "user", Content: "Tell me a story"}}} +``` + +#### InputObject or Map + +When `input` is an `InputObject` or `map[string]interface{}`, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `Messages` | `[]Message` | Array of conversation messages | +| `Tools` | `[]Tool` | Array of function tools available to the model | +| `ToolChoice` | `any` | Controls which tool (if any) the model should call. See [Tools documentation](/sdk/go/tools) for details | + +For details about `Message` type, see the [Send Method documentation](/sdk/go/send#message-object). +For details about `Tool` and `ToolChoice` types, see the [Tools documentation](/sdk/go/tools). + +**Example - Streaming with Messages:** + +```go +import "github.com/edgee-cloud/go-sdk/edgee" + +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "system", Content: "You are a helpful assistant."}, + {Role: "user", Content: "Write a poem about coding"}, + }, +} + +chunkChan, errChan := client.Stream("gpt-4o", input) + +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + return + } + if text := chunk.Text(); text != "" { + fmt.Print(text) + } + case err := <-errChan: + if err != nil { + log.Fatal(err) + } + } +} +``` + +## Return Value + +The `Stream()` method returns two channels: + +1. **`<-chan *StreamChunk`**: Channel that receives streaming chunks +2. **`<-chan error`**: Channel that receives errors + +### StreamChunk Object + +Each chunk received from the channel has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `ID` | `string` | Unique identifier for the completion | +| `Object` | `string` | Object type (typically `"chat.completion.chunk"`) | +| `Created` | `int64` | Unix timestamp of when the chunk was created | +| `Model` | `string` | Model identifier used for the completion | +| `Choices` | `[]StreamChoice` | Array of streaming choices (typically one) | + +### StreamChoice Object + +Each choice in the `Choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `Index` | `int` | The index of this choice in the array | +| `Delta` | `*StreamDelta` | The incremental update to the message | +| `FinishReason` | `*string` | Reason why the generation stopped. Only present in the final chunk. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `nil` | + +**Example - Handling Multiple Choices:** + +```go +chunkChan, errChan := client.Stream("gpt-4o", "Give me creative ideas") + +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + return + } + for _, choice := range chunk.Choices { + if choice.Delta != nil && choice.Delta.Content != nil { + fmt.Printf("Choice %d: %s\n", choice.Index, *choice.Delta.Content) + } + } + case err := <-errChan: + if err != nil { + log.Fatal(err) + } + } +} +``` + +### StreamDelta Object + +The `Delta` object contains incremental updates: + +| Property | Type | Description | +|----------|------|-------------| +| `Role` | `*string` | The role of the message (typically `"assistant"`). Only present in the **first chunk** | +| `Content` | `*string` | Incremental text content. Each chunk contains a portion of the full response | +| `ToolCalls` | `[]ToolCall` | Array of tool calls (if any). See [Tools documentation](/sdk/go/tools) for details | + +## Convenience Methods + +The `StreamChunk` struct provides convenience methods for easier access: + +| Method | Return Type | Description | +|--------|-------------|-------------| +| `Text()` | `string` | Shortcut to `Choices[0].Delta.Content` - the incremental text content (returns empty string if nil) | +| `Role()` | `string` | Shortcut to `Choices[0].Delta.Role` - the message role (first chunk only, returns empty string if nil) | +| `FinishReason()` | `string` | Shortcut to `*Choices[0].FinishReason` - the finish reason (final chunk only, returns empty string if nil) | + +**Example - Using Convenience Methods:** + +```go +chunkChan, errChan := client.Stream("gpt-4o", "Explain quantum computing") + +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + return + } + + // Content chunks + if text := chunk.Text(); text != "" { + fmt.Print(text) + } + + // First chunk contains the role + if role := chunk.Role(); role != "" { + fmt.Printf("\nRole: %s\n", role) + } + + // Last chunk contains finish reason + if reason := chunk.FinishReason(); reason != "" { + fmt.Printf("\nFinish reason: %s\n", reason) + } + case err := <-errChan: + if err != nil { + log.Fatal(err) + } + } +} +``` + +## Understanding Streaming Behavior + +### Chunk Structure + +1. **First chunk**: Contains `Role` (typically `"assistant"`) and may contain initial `Content` +2. **Content chunks**: Contain incremental `Content` updates +3. **Final chunk**: Contains `FinishReason` indicating why generation stopped + +**Example - Collecting Full Response:** + +```go +chunkChan, errChan := client.Stream("gpt-4o", "Tell me a story") +var fullText strings.Builder + +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + fmt.Printf("\n\nFull response (%d characters):\n", fullText.Len()) + fmt.Println(fullText.String()) + return + } + if text := chunk.Text(); text != "" { + fullText.WriteString(text) + fmt.Print(text) // Also display as it streams + } + case err := <-errChan: + if err != nil { + log.Fatal(err) + } + } +} +``` + +### Finish Reasons + +| Value | Description | +|-------|-------------| +| `"stop"` | Model generated a complete response and stopped naturally | +| `"length"` | Response was cut off due to token limit | +| `"tool_calls"` | Model requested tool/function calls | +| `"content_filter"` | Content was filtered by safety systems | +| `""` (empty string) | Generation is still in progress (not the final chunk) | + +### Empty Chunks + +Some chunks may not contain `Content`. This is normal and can happen when: +- The chunk only contains metadata (role, finish_reason) +- The chunk is part of tool call processing +- Network buffering creates empty chunks + +Always check for `chunk.Text()` before using it: + +```go +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + return + } + if text := chunk.Text(); text != "" { // ✅ Good: Check before using + fmt.Print(text) + } + // ❌ Bad: fmt.Print(chunk.Text()) - may print empty string + case err := <-errChan: + if err != nil { + log.Fatal(err) + } + } +} +``` + +## Error Handling + +The `Stream()` method can return errors in two ways: + +1. **Initial error**: When creating the stream (returned immediately if the request fails) +2. **Stream errors**: Individual errors sent through the `errChan` channel + +```go +chunkChan, errChan := client.Stream("gpt-4o", "Hello!") + +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + // Stream finished normally + return + } + if text := chunk.Text(); text != "" { + fmt.Print(text) + } + case err := <-errChan: + if err != nil { + // Handle stream errors + log.Fatalf("Stream error: %v", err) + } + } +} +``` diff --git a/sdk/go/tools.mdx b/sdk/go/tools.mdx new file mode 100644 index 0000000..b8e00af --- /dev/null +++ b/sdk/go/tools.mdx @@ -0,0 +1,618 @@ +--- +title: Go SDK - Tools (Function Calling) +sidebarTitle: Tools +description: Complete guide to function calling with the Go SDK. +icon: square-function +--- + +The Edgee Go SDK supports OpenAI-compatible function calling (tools), allowing models to request execution of functions you define. This enables models to interact with external APIs, databases, and your application logic. + +## Overview + +Function calling works in two steps: + +1. **Request**: Send a request with tool definitions. The model may request to call one or more tools. +2. **Execute & Respond**: Execute the requested functions and send the results back to the model. + +## Tool Definition + +A tool is defined using the `Tool` struct: + +```go +import "github.com/edgee-cloud/go-sdk/edgee" + +tool := edgee.Tool{ + Type: "function", + Function: edgee.FunctionDefinition{ + Name: "function_name", + Description: stringPtr("Function description"), + Parameters: map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{ + "paramName": map[string]interface{}{ + "type": "string", + "description": "Parameter description", + }, + }, + "required": []string{"paramName"}, + }, + }, +} +``` + +### FunctionDefinition + +| Property | Type | Description | +|----------|------|-------------| +| `Name` | `string` | The name of the function (must be unique, a-z, A-Z, 0-9, _, -) | +| `Description` | `*string` | Description of what the function does. **Highly recommended** - helps the model understand when to use it | +| `Parameters` | `map[string]interface{}` | JSON Schema object describing the function parameters | + +### Parameters Schema + +The `Parameters` field uses JSON Schema format: + +```go +parameters := map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{ + "paramName": map[string]interface{}{ + "type": "string", // or "number", "boolean", "object", "array" + "description": "Parameter description", + }, + }, + "required": []string{"paramName"}, // Array of required parameter names +} +``` + +**Example - Defining a Tool:** + +```go +import ( + "github.com/edgee-cloud/go-sdk/edgee" +) + +function := edgee.FunctionDefinition{ + Name: "get_weather", + Description: stringPtr("Get the current weather for a location"), + Parameters: map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{ + "location": map[string]interface{}{ + "type": "string", + "description": "The city and state, e.g. San Francisco, CA", + }, + "unit": map[string]interface{}{ + "type": "string", + "enum": []string{"celsius", "fahrenheit"}, + "description": "Temperature unit", + }, + }, + "required": []string{"location"}, + }, +} + +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "user", Content: "What is the weather in Paris?"}, + }, + Tools: []edgee.Tool{ + {Type: "function", Function: function}, + }, + ToolChoice: "auto", +} + +response, err := client.Send("gpt-4o", input) +if err != nil { + log.Fatal(err) +} +``` + +## Tool Choice + +The `ToolChoice` parameter controls when and which tools the model should call: + +| Value | Type | Description | +|-------|------|-------------| +| `"auto"` | `string` | Let the model decide whether to call tools (default) | +| `"none"` | `string` | Don't call any tools, even if provided | +| `map[string]interface{}{"type": "function", "function": map[string]string{"name": "function_name"}}` | `map[string]interface{}` | Force the model to call a specific function | + +**Example - Force a Specific Tool:** + +```go +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "user", Content: "What is the weather?"}, + }, + Tools: []edgee.Tool{ + {Type: "function", Function: function}, + }, + ToolChoice: map[string]interface{}{ + "type": "function", + "function": map[string]string{ + "name": "get_weather", + }, + }, +} + +response, err := client.Send("gpt-4o", input) +// Model will always call get_weather +``` + +**Example - Disable Tool Calls:** + +```go +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "user", Content: "What is the weather?"}, + }, + Tools: []edgee.Tool{ + {Type: "function", Function: function}, + }, + ToolChoice: "none", +} + +response, err := client.Send("gpt-4o", input) +// Model will not call tools, even though they're available +``` + +## Tool Call Object Structure + +When the model requests a tool call, you receive a `ToolCall` object in the response: + +| Property | Type | Description | +|----------|------|-------------| +| `ID` | `string` | Unique identifier for this tool call | +| `Type` | `string` | Type of tool call (typically `"function"`) | +| `Function` | `FunctionCall` | Function call details | +| `Function.Name` | `string` | Name of the function to call | +| `Function.Arguments` | `string` | JSON string containing the function arguments | + +### Parsing Arguments + +```go +import "encoding/json" + +if toolCalls := response.ToolCalls(); len(toolCalls) > 0 { + toolCall := toolCalls[0] + var args map[string]interface{} + if err := json.Unmarshal([]byte(toolCall.Function.Arguments), &args); err != nil { + log.Fatal(err) + } + // args is now a map[string]interface{} + fmt.Println(args["location"]) +} +``` + +## Complete Example + +Here's a complete end-to-end example with error handling: + +```go +package main + +import ( + "encoding/json" + "fmt" + "log" + "github.com/edgee-cloud/go-sdk/edgee" +) + +func stringPtr(s string) *string { + return &s +} + +func getWeather(location string, unit string) map[string]interface{} { + return map[string]interface{}{ + "location": location, + "temperature": 15, + "unit": unit, + "condition": "sunny", + } +} + +func main() { + client, err := edgee.NewClient("your-api-key") + if err != nil { + log.Fatal(err) + } + + // Define the weather function + function := edgee.FunctionDefinition{ + Name: "get_weather", + Description: stringPtr("Get the current weather for a location"), + Parameters: map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{ + "location": map[string]interface{}{ + "type": "string", + "description": "The city name", + }, + "unit": map[string]interface{}{ + "type": "string", + "enum": []string{"celsius", "fahrenheit"}, + "description": "Temperature unit", + }, + }, + "required": []string{"location"}, + }, + } + + // Step 1: Initial request with tools + input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "user", Content: "What is the weather in Paris and Tokyo?"}, + }, + Tools: []edgee.Tool{ + {Type: "function", Function: function}, + }, + ToolChoice: "auto", + } + + response1, err := client.Send("gpt-4o", input) + if err != nil { + log.Fatal(err) + } + + // Step 2: Execute all tool calls + messages := []edgee.Message{ + {Role: "user", Content: "What is the weather in Paris and Tokyo?"}, + } + + // Add assistant's message + if msg := response1.MessageContent(); msg != nil { + messages = append(messages, *msg) + } + + if toolCalls := response1.ToolCalls(); len(toolCalls) > 0 { + for _, toolCall := range toolCalls { + var args map[string]interface{} + if err := json.Unmarshal([]byte(toolCall.Function.Arguments), &args); err != nil { + log.Fatal(err) + } + + location := args["location"].(string) + unit := "celsius" + if u, ok := args["unit"].(string); ok { + unit = u + } + + result := getWeather(location, unit) + resultJSON, _ := json.Marshal(result) + toolCallID := toolCall.ID + + messages = append(messages, edgee.Message{ + Role: "tool", + ToolCallID: &toolCallID, + Content: string(resultJSON), + }) + } + } + + // Step 3: Send results back + input2 := edgee.InputObject{ + Messages: messages, + Tools: []edgee.Tool{ + // Keep tools available for follow-up + {Type: "function", Function: function}, + }, + } + + response2, err := client.Send("gpt-4o", input2) + if err != nil { + log.Fatal(err) + } + + fmt.Println(response2.Text()) +} +``` + +**Example - Multiple Tools:** + +You can provide multiple tools and let the model choose which ones to call: + +```go +getWeatherTool := edgee.Tool{ + Type: "function", + Function: getWeatherFunction, +} + +sendEmailTool := edgee.Tool{ + Type: "function", + Function: sendEmailFunction, +} + +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "user", Content: "Get the weather in Paris and send an email about it"}, + }, + Tools: []edgee.Tool{getWeatherTool, sendEmailTool}, + ToolChoice: "auto", +} + +response, err := client.Send("gpt-4o", input) +if err != nil { + log.Fatal(err) +} +``` + +## Streaming with Tools + +The `Stream()` method also supports tools. For details about streaming, see the [Stream Method documentation](/sdk/go/stream). + +```go +input := edgee.InputObject{ + Messages: []edgee.Message{ + {Role: "user", Content: "What is the weather in Paris?"}, + }, + Tools: []edgee.Tool{ + {Type: "function", Function: function}, + }, + ToolChoice: "auto", +} + +chunkChan, errChan := client.Stream("gpt-4o", input) + +for { + select { + case chunk, ok := <-chunkChan: + if !ok { + return + } + if text := chunk.Text(); text != "" { + fmt.Print(text) + } + + // Check for tool calls in the delta + if len(chunk.Choices) > 0 && chunk.Choices[0].Delta != nil { + if toolCalls := chunk.Choices[0].Delta.ToolCalls; len(toolCalls) > 0 { + fmt.Printf("\nTool calls detected: %+v\n", toolCalls) + } + } + + if chunk.FinishReason() == "tool_calls" { + fmt.Println("\nModel requested tool calls") + } + case err := <-errChan: + if err != nil { + log.Fatal(err) + } + } +} +``` + +## Best Practices + +### 1. Always Provide Descriptions + +Descriptions help the model understand when to use each function: + +```go +// ✅ Good +function := edgee.FunctionDefinition{ + Name: "get_weather", + Description: stringPtr("Get the current weather conditions for a specific location"), + Parameters: parameters, +} + +// ❌ Bad +function := edgee.FunctionDefinition{ + Name: "get_weather", + Description: nil, // Missing description + Parameters: parameters, +} +``` + +### 2. Use Clear Parameter Names + +```go +// ✅ Good +properties := map[string]interface{}{ + "location": map[string]interface{}{ + "type": "string", + "description": "The city name", + }, +} + +// ❌ Bad +properties := map[string]interface{}{ + "loc": map[string]interface{}{ + "type": "string", + // Unclear name, no description + }, +} +``` + +### 3. Mark Required Parameters + +```go +parameters := map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{ + "location": map[string]interface{}{ + "type": "string", + "description": "City name", + }, + "unit": map[string]interface{}{ + "type": "string", + "description": "Temperature unit", + }, + }, + "required": []string{"location"}, // location is required, unit is optional +} +``` + +### 4. Handle Multiple Tool Calls + +Models can request multiple tool calls in a single response. Use goroutines for parallel execution when possible: + +```go +if toolCalls := response.ToolCalls(); len(toolCalls) > 0 { + type result struct { + toolCallID string + result map[string]interface{} + } + results := make(chan result, len(toolCalls)) + + // Execute all tool calls in parallel + for _, toolCall := range toolCalls { + go func(tc edgee.ToolCall) { + var args map[string]interface{} + json.Unmarshal([]byte(tc.Function.Arguments), &args) + res := executeFunction(tc.Function.Name, args) + results <- result{toolCallID: tc.ID, result: res} + }(toolCall) + } + + // Collect results + for i := 0; i < len(toolCalls); i++ { + res := <-results + resultJSON, _ := json.Marshal(res.result) + toolCallID := res.toolCallID + messages = append(messages, edgee.Message{ + Role: "tool", + ToolCallID: &toolCallID, + Content: string(resultJSON), + }) + } +} +``` + +**Example - Handling Multiple Tool Calls:** + +```go +// Step 2: Execute all tool calls +messages := []edgee.Message{ + {Role: "user", Content: "What is the weather in Paris and Tokyo?"}, +} + +if msg := response1.MessageContent(); msg != nil { + messages = append(messages, *msg) +} + +if toolCalls := response1.ToolCalls(); len(toolCalls) > 0 { + for _, toolCall := range toolCalls { + var args map[string]interface{} + json.Unmarshal([]byte(toolCall.Function.Arguments), &args) + result := getWeather(args["location"].(string), args["unit"].(string)) + + resultJSON, _ := json.Marshal(result) + toolCallID := toolCall.ID + messages = append(messages, edgee.Message{ + Role: "tool", + ToolCallID: &toolCallID, + Content: string(resultJSON), + }) + } +} +``` + +### 5. Error Handling in Tool Execution + +```go +if toolCalls := response.ToolCalls(); len(toolCalls) > 0 { + for _, toolCall := range toolCalls { + var args map[string]interface{} + if err := json.Unmarshal([]byte(toolCall.Function.Arguments), &args); err != nil { + log.Printf("Failed to parse arguments: %v", err) + continue + } + + result, err := executeFunction(toolCall.Function.Name, args) + if err != nil { + // Send error back to model + errorJSON, _ := json.Marshal(map[string]interface{}{ + "error": err.Error(), + }) + toolCallID := toolCall.ID + messages = append(messages, edgee.Message{ + Role: "tool", + ToolCallID: &toolCallID, + Content: string(errorJSON), + }) + } else { + resultJSON, _ := json.Marshal(result) + toolCallID := toolCall.ID + messages = append(messages, edgee.Message{ + Role: "tool", + ToolCallID: &toolCallID, + Content: string(resultJSON), + }) + } + } +} +``` + +### 6. Keep Tools Available + +Include tools in follow-up requests so the model can call them again if needed: + +```go +input2 := edgee.InputObject{ + Messages: messagesWithToolResults, + Tools: []edgee.Tool{ + // Keep the same tools available + {Type: "function", Function: function}, + }, +} + +response2, err := client.Send("gpt-4o", input2) +``` + +**Example - Checking for Tool Calls:** + +```go +if toolCalls := response.ToolCalls(); len(toolCalls) > 0 { + // Model wants to call a function + for _, toolCall := range toolCalls { + fmt.Printf("Function: %s\n", toolCall.Function.Name) + fmt.Printf("Arguments: %s\n", toolCall.Function.Arguments) + } +} +``` + +**Example - Executing Functions and Sending Results:** + +```go +// Execute the function +toolCalls := response.ToolCalls() +if len(toolCalls) > 0 { + toolCall := toolCalls[0] + var args map[string]interface{} + json.Unmarshal([]byte(toolCall.Function.Arguments), &args) + weatherResult := getWeather(args["location"].(string), args["unit"].(string)) + + // Send the result back + messages := []edgee.Message{ + {Role: "user", Content: "What is the weather in Paris?"}, + } + + // Include assistant's message with tool_calls + if msg := response.MessageContent(); msg != nil { + messages = append(messages, *msg) + } + + resultJSON, _ := json.Marshal(weatherResult) + toolCallID := toolCall.ID + messages = append(messages, edgee.Message{ + Role: "tool", + ToolCallID: &toolCallID, + Content: string(resultJSON), + }) + + input2 := edgee.InputObject{ + Messages: messages, + Tools: []edgee.Tool{ + {Type: "function", Function: function}, + }, + } + + response2, err := client.Send("gpt-4o", input2) + if err != nil { + log.Fatal(err) + } + fmt.Println(response2.Text()) + // "The weather in Paris is 15°C and sunny." +} +``` diff --git a/sdk/index.mdx b/sdk/index.mdx index 6cf4ecf..7c37532 100644 --- a/sdk/index.mdx +++ b/sdk/index.mdx @@ -19,14 +19,15 @@ Choose your language and get started in minutes: ```typescript import Edgee from 'edgee'; - const edgee = new Edgee(process.env.EDGEE_API_KEY); + const edgee = new Edgee("your-api-key"); const response = await edgee.send({ model: 'gpt-4o', input: 'What is the capital of France?', }); - console.log(response.choices[0].message.content); + console.log(response.text); + // "The capital of France is Paris." ``` @@ -38,14 +39,15 @@ Choose your language and get started in minutes: ```python from edgee import Edgee - edgee = Edgee(api_key=os.environ["EDGEE_API_KEY"]) + edgee = Edgee("your-api-key") response = edgee.send( model="gpt-4o", input="What is the capital of France?" ) - print(response.content) + print(response.text) + # "The capital of France is Paris." ``` @@ -56,49 +58,40 @@ Choose your language and get started in minutes: ```go package main - + import ( "fmt" - "os" - "github.com/edgee-cloud/go-sdk" + "log" + "github.com/edgee-cloud/go-sdk/edgee" ) - + func main() { - client := edgee.NewClient(os.Getenv("EDGEE_API_KEY")) - - response, _ := client.Send(edgee.SendParams{ - Model: "gpt-4o", - Input: "What is the capital of France?", - }) - - fmt.Println(response.Content) + client, _ := edgee.NewClient("your-api-key") + + response, err := client.Send("gpt-4o", "What is the capital of France?") + if err != nil { + log.Fatal(err) + } + + fmt.Println(response.Text()) + // "The capital of France is Paris." } ``` - Add to `Cargo.toml`: - ```toml - [dependencies] - edgee = "0.1" - tokio = { version = "1", features = ["full"] } + ```bash + cargo install edgee ``` ```rust use edgee::Edgee; - #[tokio::main] - async fn main() -> Result<(), Box> { - let client = Edgee::from_env()?; + let client = Edgee::with_api_key("your-api-key"); + let response = client.send("gpt-4o", "What is the capital of France?").await.unwrap(); - let response = client.send( - "gpt-4o", - "What is the capital of France?" - ).await?; - - println!("{}", response.text().unwrap_or("")); - Ok(()) - } + println!("{}", response.text().unwrap_or("")); + // "The capital of France is Paris." ``` @@ -119,7 +112,7 @@ To learn more about the SDKs, see the individual SDK pages: Lightweight, type-safe SDK for Node.js and TypeScript applications. @@ -128,7 +121,7 @@ To learn more about the SDKs, see the individual SDK pages: Python SDK for seamless integration with Python applications. @@ -137,7 +130,7 @@ To learn more about the SDKs, see the individual SDK pages: Modern async Rust SDK with compile-time safety and streaming support. @@ -146,7 +139,7 @@ To learn more about the SDKs, see the individual SDK pages: High-performance Go SDK for building scalable applications. @@ -155,7 +148,7 @@ To learn more about the SDKs, see the individual SDK pages: Use Edgee with the OpenAI SDK for Python and TypeScript. diff --git a/sdk/python/configuration.mdx b/sdk/python/configuration.mdx new file mode 100644 index 0000000..1a7fddd --- /dev/null +++ b/sdk/python/configuration.mdx @@ -0,0 +1,146 @@ +--- +title: Python SDK Configuration +sidebarTitle: Configuration +description: Learn how to configure and instantiate the Edgee Python SDK. +icon: settings-2 +--- + +The Edgee Python SDK provides flexible ways to instantiate a client. All methods support automatic fallback to environment variables if configuration is not fully provided. + +## Overview + +The `Edgee` class constructor accepts multiple input types: + +- `None` or no arguments - reads from environment variables +- `str` - API key string (backward compatible) +- `EdgeeConfig` - Configuration dataclass (type-safe) +- `dict` - Plain dictionary (flexible) + +## Method 1: Environment Variables (Recommended for Production) + +The simplest and most secure approach is to use environment variables. + +The SDK automatically reads `EDGEE_API_KEY` (required) and optionally `EDGEE_BASE_URL` from your environment variables. + +```python +from edgee import Edgee + +# Reads from EDGEE_API_KEY and EDGEE_BASE_URL environment variables +edgee = Edgee() +``` + + +## Method 2: String API Key (Quick Start) + +For quick testing or simple scripts, pass the API key directly as a string: + +```python +from edgee import Edgee + +# API key only (uses default base URL: https://api.edgee.ai) +edgee = Edgee("your-api-key") +``` + +**Note**: This method uses the default base URL (`https://api.edgee.ai`). To use a custom base URL, use Method 3 or 4. + +## Method 3: Configuration Object (Type-Safe) + +For better type safety, IDE support, and code clarity, use the `EdgeeConfig` dataclass: + +```python +from edgee import Edgee, EdgeeConfig + +# Full configuration +edgee = Edgee(EdgeeConfig( + api_key="your-api-key", + base_url="https://api.edgee.ai" # optional, defaults to https://api.edgee.ai +)) +``` + +## Configuration Priority + +The SDK uses the following priority order when resolving configuration: + +1. **Constructor argument** (if provided) +2. **Environment variable** (if constructor argument is missing) +3. **Default value** (for `base_url` only, defaults to `https://api.edgee.ai`) + + +## Complete Examples + +### Example 1: Production Setup + +```python +# .env file +# EDGEE_API_KEY=prod-api-key +# EDGEE_BASE_URL=https://api.edgee.ai + +from dotenv import load_dotenv +from edgee import Edgee + +load_dotenv() +edgee = Edgee() # Reads from environment +``` + +### Example 2: Multi-Environment Setup + +```python +import os +from edgee import Edgee, EdgeeConfig + +ENV = os.getenv("ENVIRONMENT", "development") + +if ENV == "production": + edgee = Edgee() # Use environment variables +elif ENV == "staging": + edgee = Edgee(EdgeeConfig( + api_key=os.getenv("EDGEE_API_KEY") + )) +else: + edgee = Edgee(EdgeeConfig( + api_key="dev-api-key", + base_url="https://eu.api.edgee.ai" + )) +``` + +## Troubleshooting + +### "EDGEE_API_KEY is not set" Error + +**Problem**: The SDK can't find your API key. + +**Solutions**: +1. Set the environment variable: + ```bash + export EDGEE_API_KEY="your-api-key" + ``` + +2. Pass it directly: + ```python + edgee = Edgee("your-api-key") + ``` + +3. Use EdgeeConfig: + ```python + edgee = Edgee(EdgeeConfig(api_key="your-api-key")) + ``` + +### Custom Base URL Not Working + +**Problem**: Your custom base URL isn't being used. + +**Check**: +1. Verify the base URL in your configuration +2. Check if environment variable `EDGEE_BASE_URL` is overriding it +3. Ensure you're using the correct configuration method + +```python +# This will use the base_url from EdgeeConfig +edgee = Edgee(EdgeeConfig( + api_key="key", + base_url="https://custom.example.com" +)) + +# This will use EDGEE_BASE_URL env var if set, otherwise default +edgee = Edgee("key") +``` diff --git a/sdk/python/index.mdx b/sdk/python/index.mdx index 8e65890..ac190e0 100644 --- a/sdk/python/index.mdx +++ b/sdk/python/index.mdx @@ -1,8 +1,8 @@ --- title: Python SDK -sidebarTitle: Python +sidebarTitle: Introduction description: Integrate the Python SDK in your application. -icon: python +icon: minus --- The Edgee Python SDK provides a lightweight, type-safe interface to interact with the Edgee AI Gateway. It supports OpenAI-compatible chat completions, function calling, and streaming. @@ -18,387 +18,23 @@ pip install edgee ```python from edgee import Edgee -edgee = Edgee() +# Create client +edgee = Edgee("your-api-key") +# Send a simple request response = edgee.send( model="gpt-4o", input="What is the capital of France?" ) +# Access the response print(response.text) # "The capital of France is Paris." ``` -## Configuration - -The SDK can be configured in multiple ways: - -### Using Environment Variables - -```python -import os - -# Set EDGEE_API_KEY environment variable -edgee = Edgee() -``` - -### Using Constructor Parameters - -```python -# String API key (backward compatible) -edgee = Edgee("your-api-key") - -# Configuration object -from edgee import EdgeeConfig - -edgee = Edgee(EdgeeConfig( - api_key="your-api-key", - base_url="https://api.edgee.ai" # optional, defaults to https://api.edgee.ai -)) - -# Dictionary configuration -edgee = Edgee({ - "api_key": "your-api-key", - "base_url": "https://api.edgee.ai" -}) -``` - -## Usage Examples - -### Simple String Input - -The simplest way to send a request is with a string input: - -```python -response = edgee.send( - model="gpt-4o", - input="Explain quantum computing in simple terms." -) - -print(response.text) -``` - -### Full Message Array - -For more control, use a full message array: - -```python -response = edgee.send( - model="gpt-4o", - input={ - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Hello!"} - ] - } -) - -print(response.text) -``` - -### Function Calling (Tools) - -The SDK supports OpenAI-compatible function calling: - -```python -response = edgee.send( - model="gpt-4o", - input={ - "messages": [ - {"role": "user", "content": "What is the weather in Paris?"} - ], - "tools": [ - { - "type": "function", - "function": { - "name": "get_weather", - "description": "Get the current weather for a location", - "parameters": { - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "City name" - } - }, - "required": ["location"] - } - } - } - ], - "tool_choice": "auto" # or "none", or {"type": "function", "function": {"name": "get_weather"}} - } -) - -# Check if the model wants to call a function -if response.tool_calls: - tool_call = response.tool_calls[0] - print(f"Function: {tool_call['function']['name']}") - print(f"Arguments: {tool_call['function']['arguments']}") -``` - -### Tool Response Handling - -After receiving a tool call, you can send the function result back: - -```python -import json - -# First request - model requests a tool call -response1 = edgee.send( - model="gpt-4o", - input={ - "messages": [{"role": "user", "content": "What is the weather in Paris?"}], - "tools": [...] # tool definitions - } -) - -# Execute the function and send the result -tool_call = response1.tool_calls[0] -function_result = get_weather(json.loads(tool_call['function']['arguments'])) - -# Second request - include tool response -response2 = edgee.send( - model="gpt-4o", - input={ - "messages": [ - {"role": "user", "content": "What is the weather in Paris?"}, - response1.message, # Include the assistant's message with tool_calls - { - "role": "tool", - "tool_call_id": tool_call['id'], - "content": json.dumps(function_result) - } - ] - } -) - -print(response2.text) -``` - -## Streaming - -The SDK supports streaming responses for real-time output. Use streaming when you want to display tokens as they're generated. - -Use `stream()` to access full chunk metadata: - -```python -# Stream full chunks with metadata -for chunk in edgee.stream("gpt-4o", "Explain quantum computing"): - # First chunk contains the role - if chunk.role: - print(f"Role: {chunk.role}") - - # Content chunks - if chunk.text: - print(chunk.text, end="", flush=True) - - # Last chunk contains finish reason - if chunk.finish_reason: - print(f"\nFinish reason: {chunk.finish_reason}") -``` - -### Streaming with Messages - -Streaming works with full message arrays too: - -```python -for chunk in edgee.stream( - "gpt-4o", - { - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Write a poem about coding"} - ] - } -): - if chunk.text: - print(chunk.text, end="", flush=True) -``` - -### Using send() with stream Parameter - -You can also use the `send()` method with `stream=True`: - -```python -# Returns a generator instead of SendResponse -for chunk in edgee.send("gpt-4o", "Tell me a story", stream=True): - if chunk.text: - print(chunk.text, end="", flush=True) -``` - -### Streaming Response Types - -Streaming uses different response types: - -```python -# StreamChunk - returned by stream() -@dataclass -class StreamChunk: - choices: list[StreamChoice] - - # Convenience properties - text: str | None # Get content from first choice - role: str | None # Get role from first choice - finish_reason: str | None # Get finish_reason from first choice - -@dataclass -class StreamChoice: - index: int - delta: StreamDelta - finish_reason: str | None - -@dataclass -class StreamDelta: - role: str | None = None - content: str | None = None - tool_calls: list[dict] | None = None -``` - -### Convenience Properties - -Both `SendResponse` and `StreamChunk` have convenience properties for easier access: - -```python -# Non-streaming response -response = edgee.send("gpt-4o", "Hello") -print(response.text) # Instead of response.choices[0].message["content"] -print(response.finish_reason) # Instead of response.choices[0].finish_reason -print(response.tool_calls) # Instead of response.choices[0].message.get("tool_calls") - -# Streaming response -for chunk in edgee.stream("gpt-4o", "Hello"): - print(chunk.text) # Instead of chunk.choices[0].delta.content - print(chunk.role) # Instead of chunk.choices[0].delta.role - print(chunk.finish_reason) # Instead of chunk.choices[0].finish_reason -``` - -## Response Structure - -The `send` method returns a `SendResponse` object: - -```python -@dataclass -class SendResponse: - choices: list[Choice] - usage: Usage | None = None - -@dataclass -class Choice: - index: int - message: dict # {"role": str, "content": str, "tool_calls": list | None} - finish_reason: str | None - -@dataclass -class Usage: - prompt_tokens: int - completion_tokens: int - total_tokens: int -``` - -### Accessing Response Data - -```python -response = edgee.send("gpt-4o", "Hello!") - -# Get the first choice's content -content = response.text - -# Check finish reason -finish_reason = response.finish_reason # 'stop', 'length', 'tool_calls', etc. - -# Access token usage -if response.usage: - print(f"Tokens used: {response.usage.total_tokens}") - print(f"Prompt tokens: {response.usage.prompt_tokens}") - print(f"Completion tokens: {response.usage.completion_tokens}") -``` - -## Type Definitions - -The SDK exports Python dataclasses for all request and response objects: - -```python -from edgee import ( - Edgee, - EdgeeConfig, - Message, - Tool, - FunctionDefinition, - ToolCall, - InputObject, - SendResponse, - StreamChunk, - Choice, - Usage -) -``` - -### Message Types - -```python -@dataclass -class Message: - role: str # "system" | "user" | "assistant" | "tool" - content: str | None = None - name: str | None = None - tool_calls: list[ToolCall] | None = None - tool_call_id: str | None = None -``` - -### Tool Types - -```python -@dataclass -class FunctionDefinition: - name: str - description: str | None = None - parameters: dict | None = None - -@dataclass -class Tool: - type: str # "function" - function: FunctionDefinition - -@dataclass -class ToolCall: - id: str - type: str - function: dict # {"name": str, "arguments": str} -``` - -## Error Handling - -The SDK raises exceptions for common issues: - -```python -from edgee import Edgee - -try: - edgee = Edgee() # Raises ValueError if EDGEE_API_KEY is not set -except ValueError as error: - print(f"Configuration error: {error}") - -try: - response = edgee.send("gpt-4o", "Hello!") -except RuntimeError as error: - print(f"Request failed: {error}") - # Handle API errors, network errors, etc. -``` - ## What's Next? - - - Explore the full REST API documentation. - - - Browse 200+ models available through Edgee. - - - Learn about intelligent routing, observability, and privacy controls. - - - Get started with Edgee in minutes. - - +- **[Configuration](/sdk/python/configuration)** - Learn how to configure and instantiate the SDK +- **[Send Method](/sdk/python/send)** - Complete guide to the `send()` method +- **[Stream Method](/sdk/python/stream)** - Learn how to stream responses +- **[Tools](/sdk/python/tools)** - Detailed guide to function calling diff --git a/sdk/python/send.mdx b/sdk/python/send.mdx new file mode 100644 index 0000000..8a3a351 --- /dev/null +++ b/sdk/python/send.mdx @@ -0,0 +1,236 @@ +--- +title: Python SDK - Send Method +sidebarTitle: Send +description: Complete guide to the send() method in the Python SDK. +icon: send +--- + +The `send()` method is used to make non-streaming chat completion requests to the Edgee AI Gateway. It returns a `SendResponse` object with the model's response. + +## Arguments + +| Parameter | Type | Description | +|-----------|------|-------------| +| `model` | `str` | The model identifier to use (e.g., `"gpt-4o"`) | +| `input` | `str \| InputObject \| dict` | The input for the completion. Can be a simple string or a structured `InputObject` or dictionary | +| `stream` | `bool` | If `True`, returns a generator yielding `StreamChunk` objects. If `False` (default), returns a `SendResponse` object | + +### Input Types + +#### String Input + +When `input` is a string, it's automatically converted to a user message: + +```python +response = edgee.send( + model="gpt-4o", + input="What is the capital of France?" +) + +# Equivalent to: input={"messages": [{"role": "user", "content": "What is the capital of France?"}]} +print(response.text) +# "The capital of France is Paris." +``` + +#### InputObject or Dictionary + +When `input` is an `InputObject` or dictionary, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `messages` | `list[dict]` | Array of conversation messages | +| `tools` | `list[dict] \| None` | Array of function tools available to the model | +| `tool_choice` | `str \| dict \| None` | Controls which tool (if any) the model should call. See [Tools documentation](/sdk/python/tools) for details | + +**Example with Dictionary Input:** + +```python +response = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "user", "content": "What is 2+2?"} + ] + } +) + +print(response.text) +# "2+2 equals 4." +``` + +### Message Object + +Each message in the `messages` array has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `str` | The role of the message sender: `"system"`, `"developer"`, `"user"`, `"assistant"`, or `"tool"` | +| `content` | `str \| None` | The message content. Required for `system`, `user`, `tool` and `developer` roles. Optional for `assistant` when `tool_calls` is present | +| `name` | `str \| None` | Optional name for the message sender | +| `tool_calls` | `list[dict] \| None` | Array of tool calls made by the assistant. Only present in `assistant` messages | +| `tool_call_id` | `str \| None` | ID of the tool call this message is responding to. Required for `tool` role messages | + +### Message Roles + +- **`system`**: System instructions that set the behavior of the assistant +- **`developer`**: Instructions provided by the application developer, prioritized ahead of user messages. +- **`user`**: Instructions provided by an end user. +- **`assistant`**: Assistant responses (can include `tool_calls`) +- **`tool`**: Results from tool/function calls (requires `tool_call_id`) + +**Example - System and User Messages:** + +```python +response = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "What is 2+2?"}, + {"role": "assistant", "content": "2+2 equals 4."}, + {"role": "user", "content": "What about 3+3?"} + ] + } +) + +print(response.text) +# "3+3 equals 6." +``` + +For complete tool calling examples and best practices, see [Tools documentation](/sdk/python/tools). + +## Return Value + +The `send()` method returns a `SendResponse` object when `stream=False` (default): + +### SendResponse Object + +| Property | Type | Description | +|----------|------|-------------| +| `choices` | `list[Choice]` | Array of completion choices (typically one) | +| `usage` | `Usage \| None` | Token usage information (if provided by the API) | + +### Choice Object + +Each choice in the `choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `index` | `int` | The index of this choice in the array | +| `message` | `dict` | The assistant's message response | +| `finish_reason` | `str \| None` | Reason why the generation stopped. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `None` | + +**Example - Handling Multiple Choices:** + +```python +response = edgee.send( + model="gpt-4o", + input="Give me a creative idea." +) + +# Process all choices +for choice in response.choices: + print(f"Choice {choice.index}: {choice.message.get('content')}") + print(f"Finish reason: {choice.finish_reason}") +``` + +### Message Object (in Response) + +The `message` in each choice has: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `str` | The role of the message (typically `"assistant"`) | +| `content` | `str \| None` | The text content of the response. `None` when `tool_calls` is present | +| `tool_calls` | `list[dict] \| None` | Array of tool calls requested by the model (if any). See [Tools documentation](/sdk/python/tools) for details | + +### Usage Object + +Token usage information (when available): + +| Property | Type | Description | +|----------|------|-------------| +| `prompt_tokens` | `int` | Number of tokens in the prompt | +| `completion_tokens` | `int` | Number of tokens in the completion | +| `total_tokens` | `int` | Total tokens used (prompt + completion) | + +**Example - Accessing Token Usage:** + +```python +response = edgee.send( + model="gpt-4o", + input="Explain quantum computing briefly." +) + +if response.usage: + print(f"Prompt tokens: {response.usage.prompt_tokens}") + print(f"Completion tokens: {response.usage.completion_tokens}") + print(f"Total tokens: {response.usage.total_tokens}") +``` + +## Convenience Properties + +The `SendResponse` class provides convenience properties for easier access: + +| Property | Type | Description | +|----------|------|-------------| +| `text` | `str \| None` | Shortcut to `choices[0].message["content"]` | +| `message` | `dict \| None` | Shortcut to `choices[0].message` | +| `finish_reason` | `str \| None` | Shortcut to `choices[0].finish_reason` | +| `tool_calls` | `list \| None` | Shortcut to `choices[0].message.get("tool_calls")` | + +**Example - Using Convenience Properties:** + +```python +response = edgee.send( + model="gpt-4o", + input="Hello!" +) + +# Instead of: response.choices[0].message["content"] +print(response.text) + +# Instead of: response.choices[0].message +print(response.message) + +# Instead of: response.choices[0].finish_reason +print(response.finish_reason) + +# Instead of: response.choices[0].message.get("tool_calls") +if response.tool_calls: + print("Tool calls:", response.tool_calls) +``` + +## Streaming with send() + +You can use `send()` with `stream=True` to get streaming responses. This returns a generator yielding `StreamChunk` objects: + +```python +for chunk in edgee.send("gpt-4o", "Tell me a story", stream=True): + if chunk.text: + print(chunk.text, end="", flush=True) +``` + +For more details about streaming, see the [Stream Method documentation](/sdk/python/stream). + +## Error Handling + +The `send()` method can raise exceptions in several scenarios: + +```python +try: + response = edgee.send( + model="gpt-4o", + input="Hello!" + ) +except RuntimeError as error: + # API errors: "API error {status}: {message}" + # Network errors: Standard HTTP errors + print(f"Request failed: {error}") +``` + +### Common Errors + +- **API errors**: `RuntimeError: API error {status}: {message}` - The API returned an error status +- **Network errors**: Standard HTTP errors from `urllib` +- **Invalid input**: Errors from invalid request structure diff --git a/sdk/python/stream.mdx b/sdk/python/stream.mdx new file mode 100644 index 0000000..16d1b55 --- /dev/null +++ b/sdk/python/stream.mdx @@ -0,0 +1,200 @@ +--- +title: Python SDK - Stream Method +sidebarTitle: Stream +description: Complete guide to the stream() method in the Python SDK. +icon: square-stack +--- + +The `stream()` method is used to make streaming chat completion requests to the Edgee AI Gateway. It returns a generator that yields `StreamChunk` objects as they arrive from the API. + +## Arguments + +| Parameter | Type | Description | +|-----------|------|-------------| +| `model` | `str` | The model identifier to use (e.g., `"gpt-4o"`) | +| `input` | `str \| InputObject \| dict` | The input for the completion. Can be a simple string or a structured `InputObject` or dictionary | + +### Input Types + +#### String Input + +When `input` is a string, it's automatically converted to a user message: + +```python +for chunk in edgee.stream("gpt-4o", "Tell me a story"): + if chunk.text: + print(chunk.text, end="", flush=True) + + if chunk.finish_reason: + print(f"\nFinished: {chunk.finish_reason}") +# Equivalent to: input={"messages": [{"role": "user", "content": "Tell me a story"}]} +``` + +#### InputObject or Dictionary + +When `input` is an `InputObject` or dictionary, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `messages` | `list[dict]` | Array of conversation messages | +| `tools` | `list[dict] \| None` | Array of function tools available to the model | +| `tool_choice` | `str \| dict \| None` | Controls which tool (if any) the model should call. See [Tools documentation](/sdk/python/tools) for details | + +For details about `Message` type, see the [Send Method documentation](/sdk/python/send#message-object). +For details about `Tool` and `ToolChoice` types, see the [Tools documentation](/sdk/python/tools). + +**Example - Streaming with Messages:** + +```python +for chunk in edgee.stream("gpt-4o", { + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Write a poem about coding"} + ] +}): + if chunk.text: + print(chunk.text, end="", flush=True) +``` + +## Return Value + +The `stream()` method returns a generator that yields `StreamChunk` objects. Each chunk contains incremental updates to the response. + +### StreamChunk Object + +Each chunk yielded by the generator has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `choices` | `list[StreamChoice]` | Array of streaming choices (typically one) | + +### StreamChoice Object + +Each choice in the `choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `index` | `int` | The index of this choice in the array | +| `delta` | `StreamDelta` | The incremental update to the message | +| `finish_reason` | `str \| None` | Reason why the generation stopped. Only present in the final chunk. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `None` | + +**Example - Handling Multiple Choices:** + +```python +for chunk in edgee.stream("gpt-4o", "Give me creative ideas"): + for choice in chunk.choices: + if choice.delta.content: + print(f"Choice {choice.index}: {choice.delta.content}") +``` + +### StreamDelta Object + +The `delta` object contains incremental updates: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `str \| None` | The role of the message (typically `"assistant"`). Only present in the **first chunk** | +| `content` | `str \| None` | Incremental text content. Each chunk contains a portion of the full response | +| `tool_calls` | `list[dict] \| None` | Array of tool calls (if any). See [Tools documentation](/sdk/python/tools) for details | + +## Convenience Properties + +The `StreamChunk` class provides convenience properties for easier access: + +| Property | Type | Description | +|----------|------|-------------| +| `text` | `str \| None` | Shortcut to `choices[0].delta.content` - the incremental text content | +| `role` | `str \| None` | Shortcut to `choices[0].delta.role` - the message role (first chunk only) | +| `finish_reason` | `str \| None` | Shortcut to `choices[0].finish_reason` - the finish reason (final chunk only) | + +**Example - Using Convenience Properties:** + +```python +for chunk in edgee.stream("gpt-4o", "Explain quantum computing"): + # Content chunks + if chunk.text: + print(chunk.text, end="", flush=True) + + # First chunk contains the role + if chunk.role: + print(f"\nRole: {chunk.role}") + + # Last chunk contains finish reason + if chunk.finish_reason: + print(f"\nFinish reason: {chunk.finish_reason}") +``` + +## Understanding Streaming Behavior + +### Chunk Structure + +1. **First chunk**: Contains `role` (typically `"assistant"`) and may contain initial `content` +2. **Content chunks**: Contain incremental `content` updates +3. **Final chunk**: Contains `finish_reason` indicating why generation stopped + +**Example - Collecting Full Response:** + +```python +full_text = "" + +for chunk in edgee.stream("gpt-4o", "Tell me a story"): + if chunk.text: + full_text += chunk.text + print(chunk.text, end="", flush=True) # Also display as it streams + +print(f"\n\nFull response ({len(full_text)} characters):") +print(full_text) +``` + +### Finish Reasons + +| Value | Description | +|-------|-------------| +| `"stop"` | Model generated a complete response and stopped naturally | +| `"length"` | Response was cut off due to token limit | +| `"tool_calls"` | Model requested tool/function calls | +| `"content_filter"` | Content was filtered by safety systems | +| `None` | Generation is still in progress (not the final chunk) | + +### Empty Chunks + +Some chunks may not contain `content`. This is normal and can happen when: +- The chunk only contains metadata (role, finish_reason) +- The chunk is part of tool call processing +- Network buffering creates empty chunks + +Always check for `chunk.text` before using it: + +```python +for chunk in edgee.stream("gpt-4o", "Hello"): + if chunk.text: # ✅ Good: Check before using + print(chunk.text) + # ❌ Bad: print(chunk.text) - may print None +``` + +## Alternative: Using send() with stream=True + +You can also use the `send()` method with `stream=True` to get streaming responses: + +```python +for chunk in edgee.send("gpt-4o", "Tell me a story", stream=True): + if chunk.text: + print(chunk.text, end="", flush=True) +``` + +The `stream()` method is a convenience wrapper that calls `send()` with `stream=True`. + +## Error Handling + +The `stream()` method can raise exceptions: + +```python +try: + for chunk in edgee.stream("gpt-4o", "Hello!"): + if chunk.text: + print(chunk.text, end="", flush=True) +except RuntimeError as error: + # API errors: "API error {status}: {message}" + # Network errors: Standard HTTP errors + print(f"Stream failed: {error}") +``` diff --git a/sdk/python/tools.mdx b/sdk/python/tools.mdx new file mode 100644 index 0000000..d523460 --- /dev/null +++ b/sdk/python/tools.mdx @@ -0,0 +1,560 @@ +--- +title: Python SDK - Tools (Function Calling) +sidebarTitle: Tools +description: Complete guide to function calling with the Python SDK. +icon: square-function +--- + +The Edgee Python SDK supports OpenAI-compatible function calling (tools), allowing models to request execution of functions you define. This enables models to interact with external APIs, databases, and your application logic. + +## Overview + +Function calling works in two steps: + +1. **Request**: Send a request with tool definitions. The model may request to call one or more tools. +2. **Execute & Respond**: Execute the requested functions and send the results back to the model. + +## Tool Definition + +A tool is defined using a dictionary with the following structure: + +```python +{ + "type": "function", + "function": { + "name": "function_name", + "description": "Function description", + "parameters": { + "type": "object", + "properties": {...}, + "required": [...] + } + } +} +``` + +### FunctionDefinition + +| Property | Type | Description | +|----------|------|-------------| +| `name` | `str` | The name of the function (must be unique, a-z, A-Z, 0-9, _, -) | +| `description` | `str \| None` | Description of what the function does. **Highly recommended** - helps the model understand when to use it | +| `parameters` | `dict \| None` | JSON Schema object describing the function parameters | + +### Parameters Schema + +The `parameters` field uses JSON Schema format: + +```python +{ + "type": "object", + "properties": { + "paramName": { + "type": "string" | "number" | "boolean" | "object" | "array", + "description": "Parameter description" + } + }, + "required": ["paramName"] # Array of required parameter names +} +``` + +**Example - Defining a Tool:** + +```python +response = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "user", "content": "What is the weather in Paris?"} + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather for a location", + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state, e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": ["celsius", "fahrenheit"], + "description": "Temperature unit" + } + }, + "required": ["location"] + } + } + } + ], + "tool_choice": "auto" + } +) +``` + +## Tool Choice + +The `tool_choice` parameter controls when and which tools the model should call: + +| Value | Type | Description | +|-------|------|-------------| +| `"auto"` | `str` | Let the model decide whether to call tools (default) | +| `"none"` | `str` | Don't call any tools, even if provided | +| `{"type": "function", "function": {"name": "function_name"}}` | `dict` | Force the model to call a specific function | + +**Example - Force a Specific Tool:** + +```python +response = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "user", "content": "What is the weather?"} + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather", + "parameters": {...} + } + } + ], + "tool_choice": { + "type": "function", + "function": {"name": "get_weather"} + } + } +) +# Model will always call get_weather +``` + +**Example - Disable Tool Calls:** + +```python +response = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "user", "content": "What is the weather?"} + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather", + "parameters": {...} + } + } + ], + "tool_choice": "none" + } +) +# Model will not call tools, even though they're available +``` + +## Tool Call Object Structure + +When the model requests a tool call, you receive a `ToolCall` object in the response: + +| Property | Type | Description | +|----------|------|-------------| +| `id` | `str` | Unique identifier for this tool call | +| `type` | `str` | Type of tool call (typically `"function"`) | +| `function` | `dict` | Function call details | +| `function["name"]` | `str` | Name of the function to call | +| `function["arguments"]` | `str` | JSON string containing the function arguments | + +### Parsing Arguments + +```python +import json + +tool_call = response.tool_calls[0] +args = json.loads(tool_call["function"]["arguments"]) +# args is now a Python dictionary +print(args["location"]) # e.g., "Paris" +``` + +## Complete Example + +Here's a complete end-to-end example with error handling: + +```python +import json +from edgee import Edgee + +edgee = Edgee("your-api-key") + +# Define the weather function +async def get_weather(location: str, unit: str = "celsius"): + # Simulate API call + return { + "location": location, + "temperature": 15, + "unit": unit, + "condition": "sunny" + } + +# Step 1: Initial request with tools +response1 = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "user", "content": "What is the weather in Paris and Tokyo?"} + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather for a location", + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city name" + }, + "unit": { + "type": "string", + "enum": ["celsius", "fahrenheit"], + "description": "Temperature unit" + } + }, + "required": ["location"] + } + } + } + ], + "tool_choice": "auto" + } +) + +# Step 2: Execute all tool calls +messages = [ + {"role": "user", "content": "What is the weather in Paris and Tokyo?"}, + response1.message # Include assistant's message +] + +if response1.tool_calls: + for tool_call in response1.tool_calls: + args = json.loads(tool_call["function"]["arguments"]) + result = await get_weather(args["location"], args.get("unit")) + + messages.append({ + "role": "tool", + "tool_call_id": tool_call["id"], + "content": json.dumps(result) + }) + +# Step 3: Send results back +response2 = edgee.send( + model="gpt-4o", + input={ + "messages": messages, + "tools": [ + # Keep tools available for follow-up + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather for a location", + "parameters": { + "type": "object", + "properties": { + "location": {"type": "string", "description": "The city name"}, + "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]} + }, + "required": ["location"] + } + } + } + ] + } +) + +print(response2.text) +``` + +**Example - Multiple Tools:** + +You can provide multiple tools and let the model choose which ones to call: + +```python +response = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "user", "content": "Get the weather in Paris and send an email about it"} + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather for a location", + "parameters": { + "type": "object", + "properties": { + "location": {"type": "string", "description": "City name"} + }, + "required": ["location"] + } + } + }, + { + "type": "function", + "function": { + "name": "send_email", + "description": "Send an email to a recipient", + "parameters": { + "type": "object", + "properties": { + "to": {"type": "string", "description": "Recipient email address"}, + "subject": {"type": "string", "description": "Email subject"}, + "body": {"type": "string", "description": "Email body"} + }, + "required": ["to", "subject", "body"] + } + } + } + ], + "tool_choice": "auto" + } +) +``` + +## Streaming with Tools + +The `stream()` method also supports tools. For details about streaming, see the [Stream Method documentation](/sdk/python/stream). + +```python +for chunk in edgee.stream("gpt-4o", { + "messages": [ + {"role": "user", "content": "What is the weather in Paris?"} + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather for a location", + "parameters": { + "type": "object", + "properties": { + "location": {"type": "string", "description": "City name"} + }, + "required": ["location"] + } + } + } + ], + "tool_choice": "auto" +}): + if chunk.text: + print(chunk.text, end="", flush=True) + + # Check for tool calls in the delta + tool_calls = chunk.choices[0].delta.tool_calls if chunk.choices else None + if tool_calls: + print(f"\nTool calls detected: {tool_calls}") + + if chunk.finish_reason == "tool_calls": + print("\nModel requested tool calls") +``` + +## Best Practices + +### 1. Always Provide Descriptions + +Descriptions help the model understand when to use each function: + +```python +# ✅ Good +{ + "name": "get_weather", + "description": "Get the current weather conditions for a specific location", + "parameters": {...} +} + +# ❌ Bad +{ + "name": "get_weather", + # Missing description + "parameters": {...} +} +``` + +### 2. Use Clear Parameter Names + +```python +# ✅ Good +"properties": { + "location": {"type": "string", "description": "The city name"} +} + +# ❌ Bad +"properties": { + "loc": {"type": "string"} # Unclear name, no description +} +``` + +### 3. Mark Required Parameters + +```python +"parameters": { + "type": "object", + "properties": { + "location": {"type": "string", "description": "City name"}, + "unit": {"type": "string", "description": "Temperature unit"} + }, + "required": ["location"] # location is required, unit is optional +} +``` + +### 4. Handle Multiple Tool Calls + +Models can request multiple tool calls in a single response. Use parallel execution when possible: + +```python +import asyncio + +if response.tool_calls and len(response.tool_calls) > 0: + async def execute_tool_call(tool_call): + args = json.loads(tool_call["function"]["arguments"]) + result = await execute_function(tool_call["function"]["name"], args) + return { + "tool_call_id": tool_call["id"], + "result": result + } + + # Execute all tool calls in parallel + results = await asyncio.gather(*[ + execute_tool_call(tool_call) for tool_call in response.tool_calls + ]) + + # Add all tool results to messages + for result in results: + messages.append({ + "role": "tool", + "tool_call_id": result["tool_call_id"], + "content": json.dumps(result["result"]) + }) +``` + +**Example - Handling Multiple Tool Calls:** + +```python +# Step 2: Execute all tool calls +messages = [ + {"role": "user", "content": "What is the weather in Paris and Tokyo?"}, + response1.message # Include assistant's message +] + +if response1.tool_calls: + for tool_call in response1.tool_calls: + args = json.loads(tool_call["function"]["arguments"]) + result = await get_weather(args["location"], args.get("unit")) + + messages.append({ + "role": "tool", + "tool_call_id": tool_call["id"], + "content": json.dumps(result) + }) +``` + +### 5. Error Handling in Tool Execution + +```python +if response.tool_calls: + for tool_call in response.tool_calls: + try: + args = json.loads(tool_call["function"]["arguments"]) + result = await execute_function(tool_call["function"]["name"], args) + + messages.append({ + "role": "tool", + "tool_call_id": tool_call["id"], + "content": json.dumps(result) + }) + except Exception as error: + # Send error back to model + messages.append({ + "role": "tool", + "tool_call_id": tool_call["id"], + "content": json.dumps({"error": str(error)}) + }) +``` + +### 6. Keep Tools Available + +Include tools in follow-up requests so the model can call them again if needed: + +```python +response2 = edgee.send( + model="gpt-4o", + input={ + "messages": [...messages_with_tool_results], + "tools": [ + # Keep the same tools available + {"type": "function", "function": {...}} + ] + } +) +``` + +**Example - Checking for Tool Calls:** + +```python +if response.tool_calls: + # Model wants to call a function + for tool_call in response.tool_calls: + print(f"Function: {tool_call['function']['name']}") + print(f"Arguments: {tool_call['function']['arguments']}") +``` + +**Example - Executing Functions and Sending Results:** + +```python +# Execute the function +tool_call = response.tool_calls[0] +args = json.loads(tool_call["function"]["arguments"]) +weather_result = await get_weather(args["location"], args.get("unit")) + +# Send the result back +response2 = edgee.send( + model="gpt-4o", + input={ + "messages": [ + {"role": "user", "content": "What is the weather in Paris?"}, + response.message, # Include assistant's message with tool_calls + { + "role": "tool", + "tool_call_id": tool_call["id"], + "content": json.dumps(weather_result) + } + ], + "tools": [ + # Include the same tools for potential follow-up calls + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather for a location", + "parameters": {...} + } + } + ] + } +) + +print(response2.text) +# "The weather in Paris is 15°C and sunny." +``` diff --git a/sdk/rust/configuration.mdx b/sdk/rust/configuration.mdx new file mode 100644 index 0000000..a3d1fcb --- /dev/null +++ b/sdk/rust/configuration.mdx @@ -0,0 +1,191 @@ +--- +title: Rust SDK Configuration +sidebarTitle: Configuration +description: Learn how to configure and instantiate the Edgee Rust SDK. +icon: settings-2 +--- + +The Edgee Rust SDK provides multiple ways to instantiate a client. Rust offers both idiomatic named constructors and a unified constructor for consistency with other SDKs. + +## Overview + +The Rust SDK provides several constructor methods: + +- `Edgee::from_env()` - Reads from environment variables (idiomatic Rust) +- `Edgee::with_api_key()` - Creates client with just an API key (convenience) +- `Edgee::new()` - Creates client with full `EdgeeConfig` (type-safe) + +## Method 1: Environment Variables (Recommended for Production) + +The simplest and most secure approach is to use environment variables. The SDK will automatically read `EDGEE_API_KEY` and optionally `EDGEE_BASE_URL`. + +```rust +use edgee::Edgee; + +// Reads from EDGEE_API_KEY and EDGEE_BASE_URL environment variables +let client = Edgee::from_env()?; +``` + +## Method 2: API Key Only (Quick Start) + +For quick testing or simple scripts, use `with_api_key()`: + +```rust +use edgee::Edgee; + +// Creates client with default base URL (https://api.edgee.ai) +let client = Edgee::with_api_key("your-api-key"); +``` + +**Note**: This method uses the default base URL (`https://api.edgee.ai`). To use a custom base URL, use Method 3. + +## Method 3: Configuration Object (Type-Safe) + +For full control and type safety, use `EdgeeConfig` with the builder pattern: + +```rust +use edgee::{Edgee, EdgeeConfig}; + +// Full configuration with builder pattern +let config = EdgeeConfig::new("your-api-key") + .with_base_url("https://api.edgee.ai"); + +let client = Edgee::new(config); +``` + +**Important**: The `api_key` is required and must be provided either via constructor argument or `EDGEE_API_KEY` environment variable. If neither is provided, an `Error::MissingApiKey` will be returned. + +## Error Handling + +The SDK uses Rust's `Result` type for explicit error handling: + +```rust +use edgee::{Edgee, Error}; + +match Edgee::from_env() { + Ok(client) => { + // Use client + } + Err(Error::MissingApiKey) => { + eprintln!("API key not found. Set EDGEE_API_KEY environment variable."); + } + Err(e) => { + eprintln!("Error: {}", e); + } +} +``` + +### Using `?` Operator + +```rust +use edgee::Edgee; + +fn main() -> Result<(), Box> { + let client = Edgee::from_env()?; + // Use client + Ok(()) +} +``` + +### Custom Error Handling + +```rust +use edgee::{Edgee, Error}; + +let client = match Edgee::from_env() { + Ok(client) => client, + Err(Error::MissingApiKey) => { + // Fallback to explicit config + Edgee::with_api_key("fallback-api-key") + } + Err(e) => return Err(e.into()), +}; +``` + + +## Complete Examples + +### Example 1: Production Setup + +```rust +// .env file +// EDGEE_API_KEY=prod-api-key +// EDGEE_BASE_URL=https://api.edgee.ai + +use dotenv::dotenv; +use edgee::Edgee; + +#[tokio::main] +async fn main() -> Result<(), Box> { + dotenv().ok(); + let client = Edgee::from_env()?; + // Use client + Ok(()) +} +``` + +### Example 2: Multi-Environment Setup + +```rust +use edgee::{Edgee, EdgeeConfig}; + +fn create_client() -> Result> { + let env = std::env::var("ENVIRONMENT").unwrap_or_else(|_| "development".to_string()); + + match env.as_str() { + "production" => Edgee::from_env(), + "staging" => { + let api_key = std::env::var("EDGEE_API_KEY")?; + Ok(Edgee::new( + EdgeeConfig::new(api_key) + )) + } + _ => Ok(Edgee::new( + EdgeeConfig::new("dev-api-key") + .with_base_url("https://eu.api.edgee.ai") + )), + } +} +``` + +## Troubleshooting + +### "MissingApiKey" Error + +**Problem**: The SDK can't find your API key. + +**Solutions**: +1. Set the environment variable: + ```bash + export EDGEE_API_KEY="your-api-key" + ``` + +2. Use `with_api_key()`: + ```rust + let client = Edgee::with_api_key("your-api-key"); + ``` + +3. Use `EdgeeConfig`: + ```rust + let client = Edgee::new(EdgeeConfig::new("your-api-key")); + ``` + +### Custom Base URL Not Working + +**Problem**: Your custom base URL isn't being used. + +**Check**: +1. Verify the base URL in your configuration +2. Check if environment variable `EDGEE_BASE_URL` is overriding it +3. Ensure you're using the correct configuration method + +```rust +// This will use the base_url from EdgeeConfig +let client = Edgee::new( + EdgeeConfig::new("key") + .with_base_url("https://custom.example.com") +); + +// This will use EDGEE_BASE_URL env var if set, otherwise default +let client = Edgee::with_api_key("key"); +``` \ No newline at end of file diff --git a/sdk/rust/index.mdx b/sdk/rust/index.mdx index 7842ed1..c837077 100644 --- a/sdk/rust/index.mdx +++ b/sdk/rust/index.mdx @@ -1,553 +1,33 @@ --- title: Rust SDK -sidebarTitle: Rust +sidebarTitle: Introduction description: Integrate the Rust SDK in your application. -icon: rust +icon: minus --- The Edgee Rust SDK provides a modern, type-safe, async interface to interact with the Edgee AI Gateway. Built with Rust's powerful type system and async/await capabilities, it offers compile-time safety, zero-cost abstractions, and excellent performance. ## Installation -Add the SDK to your `Cargo.toml`: - -```toml -[dependencies] -edgee = "2.0" -tokio = { version = "1", features = ["full"] } -``` - -## Quick Start - -```rust -use edgee::Edgee; - -#[tokio::main] -async fn main() -> Result<(), Box> { - let client = Edgee::from_env()?; - - let response = client.send("gpt-4o", "What is the capital of France?").await?; - - println!("{}", response.text().unwrap_or("")); - // "The capital of France is Paris." - - Ok(()) -} -``` - -## Configuration - -The SDK supports multiple configuration methods: - -### Using Environment Variables - -```rust -use edgee::Edgee; - -// Reads EDGEE_API_KEY and optionally EDGEE_BASE_URL -let client = Edgee::from_env()?; -``` - -Set environment variables: ```bash -export EDGEE_API_KEY="your-api-key" -export EDGEE_BASE_URL="https://api.edgee.ai" # optional +cargo install edgee ``` -### Using API Key +## Quick Start ```rust use edgee::Edgee; -// Creates client with default base URL let client = Edgee::with_api_key("your-api-key"); -``` - -### Using Configuration Object - -```rust -use edgee::{Edgee, EdgeeConfig}; - -let config = EdgeeConfig::new("your-api-key") - .with_base_url("https://api.edgee.ai"); - -let client = Edgee::new(config); -``` - -## Usage Examples - -### Simple String Input - -The simplest way to send a request: - -```rust -let response = client - .send("gpt-4o", "Explain quantum computing in simple terms.") - .await?; +let response = client.send("gpt-4o", "What is the capital of France?").await.unwrap(); println!("{}", response.text().unwrap_or("")); -``` - -### Multi-turn Conversation - -Use the `Message` constructors for type-safe message creation: - -```rust -use edgee::Message; - -let messages = vec![ - Message::system("You are a helpful assistant."), - Message::user("Hello!"), -]; - -let response = client.send("gpt-4o", messages).await?; -println!("{}", response.text().unwrap_or("")); -``` - -### Using InputObject - -For complex requests with tools and configuration: - -```rust -use edgee::{Message, InputObject}; - -let input = InputObject::new(vec![ - Message::system("You are a helpful assistant."), - Message::user("What's the weather like?"), -]); - -let response = client.send("gpt-4o", input).await?; -``` - -### Function Calling (Tools) - -The SDK supports OpenAI-compatible function calling with strong typing: - -```rust -use edgee::{Edgee, Message, InputObject, Tool, FunctionDefinition, JsonSchema}; -use std::collections::HashMap; - -let client = Edgee::from_env()?; - -// Define a function -let function = FunctionDefinition { - name: "get_weather".to_string(), - description: Some("Get the current weather for a location".to_string()), - parameters: JsonSchema { - schema_type: "object".to_string(), - properties: Some({ - let mut props = HashMap::new(); - props.insert("location".to_string(), serde_json::json!({ - "type": "string", - "description": "City name" - })); - props - }), - required: Some(vec!["location".to_string()]), - description: None, - }, -}; - -// Send request with tools -let input = InputObject::new(vec![ - Message::user("What is the weather in Paris?") -]) -.with_tools(vec![Tool::function(function)]); - -let response = client.send("gpt-4o", input).await?; - -// Check if the model wants to call a function -if let Some(tool_calls) = response.tool_calls() { - for call in tool_calls { - println!("Function: {}", call.function.name); - println!("Arguments: {}", call.function.arguments); - } -} -``` - -### Tool Response Handling - -After receiving a tool call, send the function result back: - -```rust -use serde_json; - -// First request - model requests a tool call -let input = InputObject::new(vec![ - Message::user("What is the weather in Paris?") -]) -.with_tools(vec![/* tool definitions */]); - -let response1 = client.send("gpt-4o", input).await?; - -// Execute the function -if let Some(tool_calls) = response1.tool_calls() { - let tool_call = &tool_calls[0]; - - // Parse arguments and execute function - let args: serde_json::Value = serde_json::from_str(&tool_call.function.arguments)?; - let result = get_weather(&args["location"].as_str().unwrap()); - - // Second request - include tool response - let mut messages = vec![ - Message::user("What is the weather in Paris?") - ]; - - // Add assistant's message with tool calls - if let Some(first_choice) = response1.choices.first() { - messages.push(first_choice.message.clone()); - } - - // Add tool response - messages.push(Message::tool(tool_call.id.clone(), serde_json::to_string(&result)?)); - - let response2 = client.send("gpt-4o", messages).await?; - println!("{}", response2.text().unwrap_or("")); -} -``` - -## Streaming - -The SDK supports streaming responses using Rust's `Stream` trait for real-time output: - -```rust -use tokio_stream::StreamExt; - -let mut stream = client - .stream("gpt-4o", "Explain quantum computing") - .await?; - -while let Some(result) = stream.next().await { - match result { - Ok(chunk) => { - // First chunk contains the role - if let Some(role) = chunk.role() { - println!("Role: {:?}", role); - } - - // Content chunks - if let Some(text) = chunk.text() { - print!("{}", text); - std::io::Write::flush(&mut std::io::stdout())?; - } - - // Last chunk contains finish reason - if let Some(reason) = chunk.finish_reason() { - println!("\nFinish reason: {}", reason); - } - } - Err(e) => eprintln!("Stream error: {}", e), - } -} -``` - -### Streaming with Messages - -Streaming works with message arrays too: - -```rust -use edgee::Message; -use tokio_stream::StreamExt; - -let messages = vec![ - Message::system("You are a helpful assistant."), - Message::user("Write a poem about coding"), -]; - -let mut stream = client.stream("gpt-4o", messages).await?; - -while let Some(result) = stream.next().await { - if let Ok(chunk) = result { - if let Some(text) = chunk.text() { - print!("{}", text); - } - } -} -``` - -### Collecting Full Response from Stream - -You can collect the entire streamed response: - -```rust -use tokio_stream::StreamExt; - -let mut stream = client.stream("gpt-4o", "Tell me a story").await?; -let mut full_text = String::new(); - -while let Some(result) = stream.next().await { - if let Ok(chunk) = result { - if let Some(text) = chunk.text() { - full_text.push_str(text); - } - } -} - -println!("Full response: {}", full_text); -``` - -## Response Structure - -### Non-Streaming Response - -The `send` method returns a `SendResponse`: - -```rust -pub struct SendResponse { - pub id: String, - pub object: String, - pub created: u64, - pub model: String, - pub choices: Vec, - pub usage: Option, -} - -pub struct Choice { - pub index: u32, - pub message: Message, - pub finish_reason: Option, -} - -pub struct Usage { - pub prompt_tokens: u32, - pub completion_tokens: u32, - pub total_tokens: u32, -} -``` - -### Accessing Response Data - -The SDK provides convenience methods: - -```rust -let response = client.send("gpt-4o", "Hello!").await?; - -// Get the first choice's content -let content = response.text(); // Returns Option<&str> - -// Check finish reason -let finish_reason = response.finish_reason(); // 'stop', 'length', 'tool_calls', etc. - -// Access tool calls -if let Some(tool_calls) = response.tool_calls() { - // Process tool calls -} - -// Access token usage -if let Some(usage) = &response.usage { - println!("Tokens used: {}", usage.total_tokens); - println!("Prompt tokens: {}", usage.prompt_tokens); - println!("Completion tokens: {}", usage.completion_tokens); -} -``` - -### Streaming Response - -Streaming returns `StreamChunk` objects: - -```rust -pub struct StreamChunk { - pub id: String, - pub object: String, - pub created: u64, - pub model: String, - pub choices: Vec, -} - -pub struct StreamChoice { - pub index: u32, - pub delta: StreamDelta, - pub finish_reason: Option, -} - -pub struct StreamDelta { - pub role: Option, - pub content: Option, - pub tool_calls: Option>, -} -``` - -## Type System - -The SDK uses Rust's type system for safety and clarity: - -### Role Enum - -```rust -pub enum Role { - System, - User, - Assistant, - Tool, -} -``` - -### Message Constructors - -```rust -// System message -Message::system("You are a helpful assistant") - -// User message -Message::user("Hello, how are you?") - -// Assistant message -Message::assistant("I'm doing well, thank you!") - -// Tool response message -Message::tool("tool-call-id", "function result") -``` - -### Tool Types - -```rust -pub struct FunctionDefinition { - pub name: String, - pub description: Option, - pub parameters: JsonSchema, -} - -pub struct Tool { - pub tool_type: String, - pub function: FunctionDefinition, -} - -pub struct ToolCall { - pub id: String, - pub call_type: String, - pub function: FunctionCall, -} -``` - -## Error Handling - -The SDK uses `Result` for explicit error handling with custom error types: - -```rust -use edgee::{Edgee, Error}; - -match client.send("gpt-4o", "Hello").await { - Ok(response) => { - println!("{}", response.text().unwrap_or("")); - } - Err(Error::Api { status, message }) => { - eprintln!("API error {}: {}", status, message); - } - Err(Error::MissingApiKey) => { - eprintln!("API key not found"); - } - Err(Error::Http(e)) => { - eprintln!("HTTP error: {}", e); - } - Err(Error::Json(e)) => { - eprintln!("JSON error: {}", e); - } - Err(e) => { - eprintln!("Error: {}", e); - } -} -``` - -### Error Types - -```rust -pub enum Error { - Http(reqwest::Error), // HTTP request failed - Json(serde_json::Error), // JSON serialization failed - MissingApiKey, // API key not provided - Api { status: u16, message: String }, // API returned an error - Stream(String), // Streaming error - InvalidConfig(String), // Invalid configuration -} -``` - -## Advanced Features - -### Concurrent Requests - -Use tokio's concurrency features for parallel requests: - -```rust -use tokio; - -let (response1, response2) = tokio::join!( - client.send("gpt-4o", "Question 1"), - client.send("gpt-4o", "Question 2"), -); - -println!("Response 1: {}", response1?.text().unwrap_or("")); -println!("Response 2: {}", response2?.text().unwrap_or("")); -``` - -### Flexible Input with Into Trait - -The SDK accepts multiple input types through the `Into` trait: - -```rust -// &str -client.send("gpt-4o", "Hello").await?; - -// String -client.send("gpt-4o", String::from("Hello")).await?; - -// Vec -client.send("gpt-4o", vec![Message::user("Hello")]).await?; - -// InputObject -client.send("gpt-4o", input_object).await?; -``` - -## Why Choose Rust SDK? - -### Type Safety -- **Compile-time guarantees**: Catch errors before runtime -- **Strong typing**: No string typos for roles, clear structure -- **Option types**: Explicit handling of optional fields - -### Performance -- **Zero-cost abstractions**: High-level API with no runtime overhead -- **Async/await**: Non-blocking I/O for better concurrency -- **Memory efficiency**: No garbage collection, predictable performance - -### Safety -- **Ownership**: Prevents use-after-free and data races -- **Error handling**: Explicit `Result` types -- **Thread safety**: Safe concurrent operations - -### Developer Experience -- **Rich IDE support**: Autocomplete, inline documentation -- **Refactoring**: Compiler-assisted code changes -- **Pattern matching**: Expressive error handling - -## Examples - -See the [examples directory](https://github.com/edgee-cloud/rust-sdk/tree/main/rust-sdk/examples) for complete working examples: - -- **simple.rs**: Basic usage patterns -- **streaming.rs**: Streaming responses -- **tools.rs**: Function calling with tool execution - -Run examples: -```bash -export EDGEE_API_KEY="your-api-key" -cargo run --example simple -cargo run --example streaming -cargo run --example tools +// "The capital of France is Paris." ``` ## What's Next? - - - Explore the full REST API documentation. - - - Browse 200+ models available through Edgee. - - - Learn about intelligent routing, observability, and privacy controls. - - - Get started with Edgee in minutes. - - +- **[Configuration](/sdk/rust/configuration)** - Learn how to configure and instantiate the SDK +- **[Send Method](/sdk/rust/send)** - Complete guide to the `send()` method +- **[Stream Method](/sdk/rust/stream)** - Learn how to stream responses +- **[Tools](/sdk/rust/tools)** - Detailed guide to function calling diff --git a/sdk/rust/send.mdx b/sdk/rust/send.mdx new file mode 100644 index 0000000..92524b2 --- /dev/null +++ b/sdk/rust/send.mdx @@ -0,0 +1,251 @@ +--- +title: Rust SDK - Send Method +sidebarTitle: Send +description: Complete guide to the send() method in the Rust SDK. +icon: send +--- + +The `send()` method is used to make non-streaming chat completion requests to the Edgee AI Gateway. It returns a `Result` with the model's response. + +## Arguments + +| Parameter | Type | Description | +|-----------|------|-------------| +| `model` | `impl Into` | The model identifier to use (e.g., `"gpt-4o"`) | +| `input` | `impl Into` | The input for the completion. Can be a string (`&str` or `String`), `Vec`, or `InputObject` | + +### Input Types + +The `send()` method accepts multiple input types through the `Into` trait: + +#### String Input + +When `input` is a string (`&str` or `String`), it's automatically converted to a user message: + +```rust +let response = client.send("gpt-4o", "What is the capital of France?").await?; + +// Equivalent to: input: InputObject::new(vec![Message::user("What is the capital of France?")]) +println!("{}", response.text().unwrap_or("")); +// "The capital of France is Paris." +``` + +#### `Vec` + +You can pass a vector of messages directly: + +```rust +use edgee::Message; + +let messages = vec![ + Message::system("You are a helpful assistant."), + Message::user("What is 2+2?"), +]; + +let response = client.send("gpt-4o", messages).await?; +println!("{}", response.text().unwrap_or("")); +// "2+2 equals 4." +``` + +#### InputObject + +When `input` is an `InputObject`, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `messages` | `Vec` | Array of conversation messages | +| `tools` | `Option>` | Array of function tools available to the model | +| `tool_choice` | `Option` | Controls which tool (if any) the model should call. See [Tools documentation](/sdk/rust/tools) for details | + +**Example with InputObject:** + +```rust +use edgee::{Message, InputObject}; + +let input = InputObject::new(vec![ + Message::user("What is 2+2?") +]); + +let response = client.send("gpt-4o", input).await?; +println!("{}", response.text().unwrap_or("")); +// "2+2 equals 4." +``` + +### Message Object + +Each message in the `messages` array is created using `Message` constructors: + +| Constructor | Description | +|-------------|-------------| +| `Message::system(content)` | System instructions that set the behavior of the assistant | +| `Message::developer(content)` | Instructions provided by the application developer, prioritized ahead of user messages | +| `Message::user(content)` | Instructions provided by an end user | +| `Message::assistant(content)` | Assistant responses (can include `tool_calls`) | +| `Message::tool(tool_call_id, content)` | Results from tool/function calls | + +**Message Structure:** + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `Role` | The role of the message sender: `Role::System`, `Role::Developer`, `Role::User`, `Role::Assistant`, or `Role::Tool` | +| `content` | `Option` | The message content. Required for `System`, `User`, and `Tool` roles. Optional for `Assistant` when `tool_calls` is present | +| `tool_calls` | `Option>` | Array of tool calls made by the assistant. Only present in `Assistant` messages | +| `tool_call_id` | `Option` | ID of the tool call this message is responding to. Required for `Tool` role messages | + +**Example - System and User Messages:** + +```rust +use edgee::Message; + +let messages = vec![ + Message::system("You are a helpful assistant."), + Message::user("What is 2+2?"), + Message::assistant("2+2 equals 4."), + Message::user("What about 3+3?"), +]; + +let response = client.send("gpt-4o", messages).await?; +println!("{}", response.text().unwrap_or("")); +// "3+3 equals 6." +``` + +For complete tool calling examples and best practices, see [Tools documentation](/sdk/rust/tools). + +## Return Value + +The `send()` method returns a `Result`. On success, it contains: + +### SendResponse Object + +| Property | Type | Description | +|----------|------|-------------| +| `id` | `String` | Unique identifier for the completion | +| `object` | `String` | Object type (typically `"chat.completion"`) | +| `created` | `u64` | Unix timestamp of when the completion was created | +| `model` | `String` | Model identifier used for the completion | +| `choices` | `Vec` | Array of completion choices (typically one) | +| `usage` | `Option` | Token usage information (if provided by the API) | + +### Choice Object + +Each choice in the `choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `index` | `u32` | The index of this choice in the array | +| `message` | `Message` | The assistant's message response | +| `finish_reason` | `Option` | Reason why the generation stopped. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `None` | + +**Example - Handling Multiple Choices:** + +```rust +let response = client.send("gpt-4o", "Give me a creative idea.").await?; + +// Process all choices +for choice in &response.choices { + println!("Choice {}: {:?}", choice.index, choice.message.content); + println!("Finish reason: {:?}", choice.finish_reason); +} +``` + +### Message Object (in Response) + +The `message` in each choice has: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `Role` | The role of the message (typically `Role::Assistant`) | +| `content` | `Option` | The text content of the response. `None` when `tool_calls` is present | +| `tool_calls` | `Option>` | Array of tool calls requested by the model (if any). See [Tools documentation](/sdk/rust/tools) for details | + +### Usage Object + +Token usage information (when available): + +| Property | Type | Description | +|----------|------|-------------| +| `prompt_tokens` | `u32` | Number of tokens in the prompt | +| `completion_tokens` | `u32` | Number of tokens in the completion | +| `total_tokens` | `u32` | Total tokens used (prompt + completion) | + +**Example - Accessing Token Usage:** + +```rust +let response = client.send("gpt-4o", "Explain quantum computing briefly.").await?; + +if let Some(usage) = &response.usage { + println!("Prompt tokens: {}", usage.prompt_tokens); + println!("Completion tokens: {}", usage.completion_tokens); + println!("Total tokens: {}", usage.total_tokens); +} +``` + +## Convenience Methods + +The `SendResponse` struct provides convenience methods for easier access: + +| Method | Return Type | Description | +|--------|-------------|-------------| +| `text()` | `Option<&str>` | Shortcut to `choices[0].message.content.as_deref()` | +| `message()` | `Option<&Message>` | Shortcut to `choices[0].message` | +| `finish_reason()` | `Option<&str>` | Shortcut to `choices[0].finish_reason.as_deref()` | +| `tool_calls()` | `Option<&Vec>` | Shortcut to `choices[0].message.tool_calls.as_ref()` | + +**Example - Using Convenience Methods:** + +```rust +let response = client.send("gpt-4o", "Hello!").await?; + +// Instead of: response.choices[0].message.content.as_deref() +if let Some(text) = response.text() { + println!("{}", text); +} + +// Instead of: response.choices[0].message +if let Some(message) = response.message() { + println!("Role: {:?}", message.role); +} + +// Instead of: response.choices[0].finish_reason.as_deref() +if let Some(reason) = response.finish_reason() { + println!("Finish reason: {}", reason); +} + +// Instead of: response.choices[0].message.tool_calls.as_ref() +if let Some(tool_calls) = response.tool_calls() { + println!("Tool calls: {:?}", tool_calls); +} +``` + +## Error Handling + +The `send()` method returns a `Result`, which can contain various error types: + +```rust +use edgee::{Edgee, Error}; + +match client.send("gpt-4o", "Hello!").await { + Ok(response) => { + println!("{}", response.text().unwrap_or("")); + } + Err(Error::Api { status, message }) => { + eprintln!("API error {}: {}", status, message); + } + Err(Error::Http(e)) => { + eprintln!("HTTP error: {}", e); + } + Err(Error::Json(e)) => { + eprintln!("JSON error: {}", e); + } + Err(e) => { + eprintln!("Error: {}", e); + } +} +``` + +### Common Errors + +- **API errors**: `Error::Api { status, message }` - The API returned an error status +- **HTTP errors**: `Error::Http(reqwest::Error)` - Network or HTTP errors +- **JSON errors**: `Error::Json(serde_json::Error)` - JSON serialization/deserialization errors +- **Missing API key**: `Error::MissingApiKey` - API key not provided diff --git a/sdk/rust/stream.mdx b/sdk/rust/stream.mdx new file mode 100644 index 0000000..df72ebe --- /dev/null +++ b/sdk/rust/stream.mdx @@ -0,0 +1,280 @@ +--- +title: Rust SDK - Stream Method +sidebarTitle: Stream +description: Complete guide to the stream() method in the Rust SDK. +icon: square-stack +--- + +The `stream()` method is used to make streaming chat completion requests to the Edgee AI Gateway. It returns a `Result` containing a `Stream` that yields `Result` objects as they arrive from the API. + + +## Arguments + +| Parameter | Type | Description | +|-----------|------|-------------| +| `model` | `impl Into` | The model identifier to use (e.g., `"gpt-4o"`) | +| `input` | `impl Into` | The input for the completion. Can be a string (`&str` or `String`), `Vec`, or `InputObject` | + +### Input Types + +The `stream()` method accepts the same input types as `send()`: + +#### String Input + +When `input` is a string, it's automatically converted to a user message: + +```rust +use tokio_stream::StreamExt; + +let mut stream = client.stream("gpt-4o", "Tell me a story").await?; + +while let Some(result) = stream.next().await { + match result { + Ok(chunk) => { + if let Some(text) = chunk.text() { + print!("{}", text); + } + + if let Some(reason) = chunk.finish_reason() { + println!("\nFinished: {}", reason); + } + } + Err(e) => eprintln!("Stream error: {}", e), + } +} +// Equivalent to: input: InputObject::new(vec![Message::user("Tell me a story")]) +``` + +#### `Vec` or `InputObject` + +When `input` is a `Vec` or `InputObject`, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `messages` | `Vec` | Array of conversation messages | +| `tools` | `Option>` | Array of function tools available to the model | +| `tool_choice` | `Option` | Controls which tool (if any) the model should call. See [Tools documentation](/sdk/rust/tools) for details | + +For details about `Message` type, see the [Send Method documentation](/sdk/rust/send#message-object). +For details about `Tool` and `ToolChoice` types, see the [Tools documentation](/sdk/rust/tools). + +**Example - Streaming with Messages:** + +```rust +use edgee::Message; +use tokio_stream::StreamExt; + +let messages = vec![ + Message::system("You are a helpful assistant."), + Message::user("Write a poem about coding"), +]; + +let mut stream = client.stream("gpt-4o", messages).await?; + +while let Some(result) = stream.next().await { + if let Ok(chunk) = result { + if let Some(text) = chunk.text() { + print!("{}", text); + } + } +} +``` + +## Return Value + +The `stream()` method returns a `Result` containing a `Stream` that yields `Result`. Each chunk contains incremental updates to the response. + +### StreamChunk Object + +Each chunk yielded by the stream has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `id` | `String` | Unique identifier for the completion | +| `object` | `String` | Object type (typically `"chat.completion.chunk"`) | +| `created` | `u64` | Unix timestamp of when the chunk was created | +| `model` | `String` | Model identifier used for the completion | +| `choices` | `Vec` | Array of streaming choices (typically one) | + +### StreamChoice Object + +Each choice in the `choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `index` | `u32` | The index of this choice in the array | +| `delta` | `StreamDelta` | The incremental update to the message | +| `finish_reason` | `Option` | Reason why the generation stopped. Only present in the final chunk. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `None` | + +**Example - Handling Multiple Choices:** + +```rust +use tokio_stream::StreamExt; + +let mut stream = client.stream("gpt-4o", "Give me creative ideas").await?; + +while let Some(result) = stream.next().await { + if let Ok(chunk) = result { + for choice in &chunk.choices { + if let Some(content) = &choice.delta.content { + println!("Choice {}: {}", choice.index, content); + } + } + } +} +``` + +### StreamDelta Object + +The `delta` object contains incremental updates: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `Option` | The role of the message (typically `Role::Assistant`). Only present in the **first chunk** | +| `content` | `Option` | Incremental text content. Each chunk contains a portion of the full response | +| `tool_calls` | `Option>` | Array of tool calls (if any). See [Tools documentation](/sdk/rust/tools) for details | + +## Convenience Methods + +The `StreamChunk` struct provides convenience methods for easier access: + +| Method | Return Type | Description | +|--------|-------------|-------------| +| `text()` | `Option<&str>` | Shortcut to `choices[0].delta.content.as_deref()` - the incremental text content | +| `role()` | `Option<&Role>` | Shortcut to `choices[0].delta.role.as_ref()` - the message role (first chunk only) | +| `finish_reason()` | `Option<&str>` | Shortcut to `choices[0].finish_reason.as_deref()` - the finish reason (final chunk only) | + +**Example - Using Convenience Methods:** + +```rust +use tokio_stream::StreamExt; + +let mut stream = client.stream("gpt-4o", "Explain quantum computing").await?; + +while let Some(result) = stream.next().await { + match result { + Ok(chunk) => { + // Content chunks + if let Some(text) = chunk.text() { + print!("{}", text); + } + + // First chunk contains the role + if let Some(role) = chunk.role() { + println!("\nRole: {:?}", role); + } + + // Last chunk contains finish reason + if let Some(reason) = chunk.finish_reason() { + println!("\nFinish reason: {}", reason); + } + } + Err(e) => eprintln!("Stream error: {}", e), + } +} +``` + +## Understanding Streaming Behavior + +### Chunk Structure + +1. **First chunk**: Contains `role` (typically `Role::Assistant`) and may contain initial `content` +2. **Content chunks**: Contain incremental `content` updates +3. **Final chunk**: Contains `finish_reason` indicating why generation stopped + +**Example - Collecting Full Response:** + +```rust +use tokio_stream::StreamExt; + +let mut stream = client.stream("gpt-4o", "Tell me a story").await?; +let mut full_text = String::new(); + +while let Some(result) = stream.next().await { + match result { + Ok(chunk) => { + if let Some(text) = chunk.text() { + full_text.push_str(text); + print!("{}", text); // Also display as it streams + } + } + Err(e) => eprintln!("Stream error: {}", e), + } +} + +println!("\n\nFull response ({} characters):", full_text.len()); +println!("{}", full_text); +``` + +### Finish Reasons + +| Value | Description | +|-------|-------------| +| `"stop"` | Model generated a complete response and stopped naturally | +| `"length"` | Response was cut off due to token limit | +| `"tool_calls"` | Model requested tool/function calls | +| `"content_filter"` | Content was filtered by safety systems | +| `None` | Generation is still in progress (not the final chunk) | + +### Empty Chunks + +Some chunks may not contain `content`. This is normal and can happen when: +- The chunk only contains metadata (role, finish_reason) +- The chunk is part of tool call processing +- Network buffering creates empty chunks + +Always check for `chunk.text()` before using it: + +```rust +use tokio_stream::StreamExt; + +let mut stream = client.stream("gpt-4o", "Hello").await?; + +while let Some(result) = stream.next().await { + if let Ok(chunk) = result { + if let Some(text) = chunk.text() { // ✅ Good: Check before using + println!("{}", text); + } + // ❌ Bad: println!("{:?}", chunk.text()) - may print None + } +} +``` + +## Error Handling + +The `stream()` method can return errors at two levels: + +1. **Initial error**: When creating the stream (returns `Result`) +2. **Stream errors**: Individual chunks may contain errors (returns `Result`) + +```rust +use edgee::Error; +use tokio_stream::StreamExt; + +// Handle initial error +let mut stream = match client.stream("gpt-4o", "Hello!").await { + Ok(stream) => stream, + Err(Error::Api { status, message }) => { + eprintln!("API error {}: {}", status, message); + return; + } + Err(e) => { + eprintln!("Error creating stream: {}", e); + return; + } +}; + +// Handle stream errors +while let Some(result) = stream.next().await { + match result { + Ok(chunk) => { + if let Some(text) = chunk.text() { + print!("{}", text); + } + } + Err(e) => { + eprintln!("Stream error: {}", e); + } + } +} +``` diff --git a/sdk/rust/tools.mdx b/sdk/rust/tools.mdx new file mode 100644 index 0000000..46c16df --- /dev/null +++ b/sdk/rust/tools.mdx @@ -0,0 +1,548 @@ +--- +title: Rust SDK - Tools (Function Calling) +sidebarTitle: Tools +description: Complete guide to function calling with the Rust SDK. +icon: square-function +--- + +The Edgee Rust SDK supports OpenAI-compatible function calling (tools), allowing models to request execution of functions you define. This enables models to interact with external APIs, databases, and your application logic. + +## Overview + +Function calling works in two steps: + +1. **Request**: Send a request with tool definitions. The model may request to call one or more tools. +2. **Execute & Respond**: Execute the requested functions and send the results back to the model. + +## Tool Definition + +A tool is defined using the `Tool` struct: + +```rust +use edgee::{Tool, FunctionDefinition, JsonSchema}; +use std::collections::HashMap; + +let tool = Tool::function(FunctionDefinition { + name: "function_name".to_string(), + description: Some("Function description".to_string()), + parameters: JsonSchema { + schema_type: "object".to_string(), + properties: Some(HashMap::new()), + required: Some(vec![]), + description: None, + }, +}); +``` + +### FunctionDefinition + +| Property | Type | Description | +|----------|------|-------------| +| `name` | `String` | The name of the function (must be unique, a-z, A-Z, 0-9, _, -) | +| `description` | `Option` | Description of what the function does. **Highly recommended** - helps the model understand when to use it | +| `parameters` | `JsonSchema` | JSON Schema object describing the function parameters | + +### Parameters Schema + +The `parameters` field uses JSON Schema format via the `JsonSchema` struct: + +```rust +use edgee::JsonSchema; +use std::collections::HashMap; + +let parameters = JsonSchema { + schema_type: "object".to_string(), + properties: Some({ + let mut props = HashMap::new(); + props.insert("paramName".to_string(), serde_json::json!({ + "type": "string", + "description": "Parameter description" + })); + props + }), + required: Some(vec!["paramName".to_string()]), + description: None, +}; +``` + +**Example - Defining a Tool:** + +```rust +use edgee::{Edgee, Message, InputObject, Tool, FunctionDefinition, JsonSchema}; +use std::collections::HashMap; + +let client = Edgee::from_env()?; + +let function = FunctionDefinition { + name: "get_weather".to_string(), + description: Some("Get the current weather for a location".to_string()), + parameters: JsonSchema { + schema_type: "object".to_string(), + properties: Some({ + let mut props = HashMap::new(); + props.insert("location".to_string(), serde_json::json!({ + "type": "string", + "description": "The city and state, e.g. San Francisco, CA" + })); + props.insert("unit".to_string(), serde_json::json!({ + "type": "string", + "enum": ["celsius", "fahrenheit"], + "description": "Temperature unit" + })); + props + }), + required: Some(vec!["location".to_string()]), + description: None, + }, +}; + +let input = InputObject::new(vec![ + Message::user("What is the weather in Paris?") +]) +.with_tools(vec![Tool::function(function)]); + +let response = client.send("gpt-4o", input).await?; +``` + +## Tool Choice + +The `tool_choice` parameter controls when and which tools the model should call. In Rust, this is set using `serde_json::Value`: + +| Value | Type | Description | +|-------|------|-------------| +| `"auto"` | `serde_json::Value` | Let the model decide whether to call tools (default) | +| `"none"` | `serde_json::Value` | Don't call any tools, even if provided | +| `{"type": "function", "function": {"name": "function_name"}}` | `serde_json::Value` | Force the model to call a specific function | + +**Example - Force a Specific Tool:** + +```rust +use serde_json::json; + +let input = InputObject::new(vec![ + Message::user("What is the weather?") +]) +.with_tools(vec![Tool::function(function)]) +.with_tool_choice(json!({ + "type": "function", + "function": {"name": "get_weather"} +})); + +let response = client.send("gpt-4o", input).await?; +// Model will always call get_weather +``` + +**Example - Disable Tool Calls:** + +```rust +use serde_json::json; + +let input = InputObject::new(vec![ + Message::user("What is the weather?") +]) +.with_tools(vec![Tool::function(function)]) +.with_tool_choice(json!("none")); + +let response = client.send("gpt-4o", input).await?; +// Model will not call tools, even though they're available +``` + +## Tool Call Object Structure + +When the model requests a tool call, you receive a `ToolCall` object in the response: + +| Property | Type | Description | +|----------|------|-------------| +| `id` | `String` | Unique identifier for this tool call | +| `call_type` | `String` | Type of tool call (typically `"function"`) | +| `function` | `FunctionCall` | Function call details | +| `function.name` | `String` | Name of the function to call | +| `function.arguments` | `String` | JSON string containing the function arguments | + +### Parsing Arguments + +```rust +use serde_json; + +if let Some(tool_calls) = response.tool_calls() { + let tool_call = &tool_calls[0]; + let args: serde_json::Value = serde_json::from_str(&tool_call.function.arguments)?; + // args is now a serde_json::Value + println!("Location: {}", args["location"]); +} +``` + +## Complete Example + +Here's a complete end-to-end example with error handling: + +```rust +use edgee::{Edgee, Message, InputObject, Tool, FunctionDefinition, JsonSchema}; +use std::collections::HashMap; +use serde_json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Edgee::from_env()?; + + // Define the weather function + let function = FunctionDefinition { + name: "get_weather".to_string(), + description: Some("Get the current weather for a location".to_string()), + parameters: JsonSchema { + schema_type: "object".to_string(), + properties: Some({ + let mut props = HashMap::new(); + props.insert("location".to_string(), serde_json::json!({ + "type": "string", + "description": "The city name" + })); + props.insert("unit".to_string(), serde_json::json!({ + "type": "string", + "enum": ["celsius", "fahrenheit"], + "description": "Temperature unit" + })); + props + }), + required: Some(vec!["location".to_string()]), + description: None, + }, + }; + + // Step 1: Initial request with tools + let input = InputObject::new(vec![ + Message::user("What is the weather in Paris and Tokyo?") + ]) + .with_tools(vec![Tool::function(function)]); + + let response1 = client.send("gpt-4o", input).await?; + + // Step 2: Execute all tool calls + let mut messages = vec![ + Message::user("What is the weather in Paris and Tokyo?") + ]; + + // Add assistant's message + if let Some(message) = response1.message() { + messages.push(message.clone()); + } + + if let Some(tool_calls) = response1.tool_calls() { + for tool_call in tool_calls { + let args: serde_json::Value = serde_json::from_str(&tool_call.function.arguments)?; + let result = get_weather( + args["location"].as_str().unwrap(), + args.get("unit").and_then(|v| v.as_str()) + ); + + messages.push(Message::tool( + tool_call.id.clone(), + serde_json::to_string(&result)? + )); + } + } + + // Step 3: Send results back + let function2 = FunctionDefinition { + name: "get_weather".to_string(), + description: Some("Get the current weather for a location".to_string()), + parameters: JsonSchema { + schema_type: "object".to_string(), + properties: Some({ + let mut props = HashMap::new(); + props.insert("location".to_string(), serde_json::json!({ + "type": "string", + "description": "The city name" + })); + props.insert("unit".to_string(), serde_json::json!({ + "type": "string", + "enum": ["celsius", "fahrenheit"] + })); + props + }), + required: Some(vec!["location".to_string()]), + description: None, + }, + }; + + let input2 = InputObject::new(messages) + .with_tools(vec![Tool::function(function2)]); + + let response2 = client.send("gpt-4o", input2).await?; + println!("{}", response2.text().unwrap_or("")); + + Ok(()) +} + +fn get_weather(location: &str, unit: Option<&str>) -> serde_json::Value { + serde_json::json!({ + "location": location, + "temperature": 15, + "unit": unit.unwrap_or("celsius"), + "condition": "sunny" + }) +} +``` + +**Example - Multiple Tools:** + +You can provide multiple tools and let the model choose which ones to call: + +```rust +let get_weather_tool = Tool::function(get_weather_function); +let send_email_tool = Tool::function(send_email_function); + +let input = InputObject::new(vec![ + Message::user("Get the weather in Paris and send an email about it") +]) +.with_tools(vec![get_weather_tool, send_email_tool]); + +let response = client.send("gpt-4o", input).await?; +``` + +## Streaming with Tools + +The `stream()` method also supports tools. For details about streaming, see the [Stream Method documentation](/sdk/rust/stream). + +```rust +use tokio_stream::StreamExt; + +let input = InputObject::new(vec![ + Message::user("What is the weather in Paris?") +]) +.with_tools(vec![Tool::function(function)]); + +let mut stream = client.stream("gpt-4o", input).await?; + +while let Some(result) = stream.next().await { + match result { + Ok(chunk) => { + if let Some(text) = chunk.text() { + print!("{}", text); + } + + // Check for tool calls in the delta + if let Some(choice) = chunk.choices.first() { + if let Some(tool_calls) = &choice.delta.tool_calls { + println!("\nTool calls detected: {:?}", tool_calls); + } + } + + if chunk.finish_reason() == Some("tool_calls") { + println!("\nModel requested tool calls"); + } + } + Err(e) => eprintln!("Stream error: {}", e), + } +} +``` + +## Best Practices + +### 1. Always Provide Descriptions + +Descriptions help the model understand when to use each function: + +```rust +// ✅ Good +let function = FunctionDefinition { + name: "get_weather".to_string(), + description: Some("Get the current weather conditions for a specific location".to_string()), + parameters: JsonSchema { /* ... */ }, +}; + +// ❌ Bad +let function = FunctionDefinition { + name: "get_weather".to_string(), + description: None, // Missing description + parameters: JsonSchema { /* ... */ }, +}; +``` + +### 2. Use Clear Parameter Names + +```rust +// ✅ Good +properties.insert("location".to_string(), serde_json::json!({ + "type": "string", + "description": "The city name" +})); + +// ❌ Bad +properties.insert("loc".to_string(), serde_json::json!({ + "type": "string" + // Unclear name, no description +})); +``` + +### 3. Mark Required Parameters + +```rust +let parameters = JsonSchema { + schema_type: "object".to_string(), + properties: Some({ + let mut props = HashMap::new(); + props.insert("location".to_string(), serde_json::json!({ + "type": "string", + "description": "City name" + })); + props.insert("unit".to_string(), serde_json::json!({ + "type": "string", + "description": "Temperature unit" + })); + props + }), + required: Some(vec!["location".to_string()]), // location is required, unit is optional + description: None, +}; +``` + +### 4. Handle Multiple Tool Calls + +Models can request multiple tool calls in a single response. Use parallel execution when possible: + +```rust +use futures::future; + +if let Some(tool_calls) = response.tool_calls() { + // Execute all tool calls in parallel + let results: Vec<_> = future::join_all( + tool_calls.iter().map(|tool_call| { + let args: serde_json::Value = serde_json::from_str(&tool_call.function.arguments)?; + let result = execute_function(&tool_call.function.name, &args)?; + Ok((tool_call.id.clone(), result)) + }) + ).await; + + // Add all tool results to messages + for (tool_call_id, result) in results { + messages.push(Message::tool( + tool_call_id, + serde_json::to_string(&result)? + )); + } +} +``` + +**Example - Handling Multiple Tool Calls:** + +```rust +// Step 2: Execute all tool calls +let mut messages = vec![ + Message::user("What is the weather in Paris and Tokyo?"), +]; + +if let Some(message) = response1.message() { + messages.push(message.clone()); +} + +if let Some(tool_calls) = response1.tool_calls() { + for tool_call in tool_calls { + let args: serde_json::Value = serde_json::from_str(&tool_call.function.arguments)?; + let result = get_weather( + args["location"].as_str().unwrap(), + args.get("unit").and_then(|v| v.as_str()) + ); + + messages.push(Message::tool( + tool_call.id.clone(), + serde_json::to_string(&result)? + )); + } +} +``` + +### 5. Error Handling in Tool Execution + +```rust +if let Some(tool_calls) = response.tool_calls() { + for tool_call in tool_calls { + match serde_json::from_str::(&tool_call.function.arguments) { + Ok(args) => { + match execute_function(&tool_call.function.name, &args) { + Ok(result) => { + messages.push(Message::tool( + tool_call.id.clone(), + serde_json::to_string(&result)? + )); + } + Err(e) => { + // Send error back to model + messages.push(Message::tool( + tool_call.id.clone(), + serde_json::to_string(&serde_json::json!({ + "error": e.to_string() + }))? + )); + } + } + } + Err(e) => { + eprintln!("Failed to parse arguments: {}", e); + } + } + } +} +``` + +### 6. Keep Tools Available + +Include tools in follow-up requests so the model can call them again if needed: + +```rust +let input2 = InputObject::new(messages_with_tool_results) + .with_tools(vec![ + // Keep the same tools available + Tool::function(function) + ]); + +let response2 = client.send("gpt-4o", input2).await?; +``` + +**Example - Checking for Tool Calls:** + +```rust +if let Some(tool_calls) = response.tool_calls() { + // Model wants to call a function + for tool_call in tool_calls { + println!("Function: {}", tool_call.function.name); + println!("Arguments: {}", tool_call.function.arguments); + } +} +``` + +**Example - Executing Functions and Sending Results:** + +```rust +// Execute the function +if let Some(tool_calls) = response.tool_calls() { + let tool_call = &tool_calls[0]; + let args: serde_json::Value = serde_json::from_str(&tool_call.function.arguments)?; + let weather_result = get_weather( + args["location"].as_str().unwrap(), + args.get("unit").and_then(|v| v.as_str()) + ); + + // Send the result back + let mut messages = vec![ + Message::user("What is the weather in Paris?"), + ]; + + // Include assistant's message with tool_calls + if let Some(message) = response.message() { + messages.push(message.clone()); + } + + messages.push(Message::tool( + tool_call.id.clone(), + serde_json::to_string(&weather_result)? + )); + + let input2 = InputObject::new(messages) + .with_tools(vec![Tool::function(function)]); + + let response2 = client.send("gpt-4o", input2).await?; + println!("{}", response2.text().unwrap_or("")); + // "The weather in Paris is 15°C and sunny." +} +``` diff --git a/sdk/typescript/configuration.mdx b/sdk/typescript/configuration.mdx new file mode 100644 index 0000000..40ba4b5 --- /dev/null +++ b/sdk/typescript/configuration.mdx @@ -0,0 +1,173 @@ +--- +title: TypeScript SDK Configuration +sidebarTitle: Configuration +description: Learn how to configure and instantiate the Edgee TypeScript SDK. +icon: settings-2 +--- + +The Edgee TypeScript SDK provides flexible ways to instantiate a client. All methods support automatic fallback to environment variables if configuration is not fully provided. + +## Overview + +The `Edgee` class constructor accepts multiple input types: + +- `undefined` or no arguments - reads from environment variables +- `string` - API key string (backward compatible) +- `EdgeeConfig` - Configuration interface (type-safe) + +## Method 1: Environment Variables (Recommended for Production) + +The simplest and most secure approach is to use environment variables. + +The SDK automatically reads `EDGEE_API_KEY` (required) and optionally `EDGEE_BASE_URL` from your environment variables. + +```typescript +import Edgee from 'edgee'; + +// EDGEE_API_KEY and (optionally) EDGEE_BASE_URL are loaded from the environment +const edgee = new Edgee(); +``` + + +## Method 2: String API Key (Quick Start) + +For quick testing or simple scripts, pass the API key directly as a string: + +```typescript +import Edgee from 'edgee'; + +// API key only (uses default base URL: https://api.edgee.ai) +const edgee = new Edgee('your-api-key'); +``` + +**Note**: This method uses the default base URL (`https://api.edgee.ai`). To use a custom base URL, use Method 3 or 4. + +## Method 3: Configuration Object (Type-Safe) + +For better type safety, IDE support, and code clarity, use the `EdgeeConfig` interface: + +```typescript +import Edgee, { type EdgeeConfig } from 'edgee'; + +// Full configuration +const edgee = new Edgee({ + apiKey: 'your-api-key', + baseUrl: 'https://api.edgee.ai' // optional, defaults to https://api.edgee.ai +}); + +// Or Using the EdgeeConfig type +const config: EdgeeConfig = { + apiKey: 'your-api-key', + baseUrl: 'https://api.edgee.ai' +}; +const edgee = new Edgee(config); +``` + +## Configuration Priority + +The SDK uses the following priority order when resolving configuration: + +1. **Constructor argument** (if provided) +2. **Environment variable** (if constructor argument is missing) +3. **Default value** (for `baseUrl` only, defaults to `https://api.edgee.ai`) + + + +## Complete Examples + +### Example 1: Production Setup + +```typescript +// .env file +// EDGEE_API_KEY=prod-api-key +// EDGEE_BASE_URL=https://api.edgee.ai + +import 'dotenv/config'; +import Edgee from 'edgee'; + +const edgee = new Edgee(); // Reads from environment +``` + +### Example 2: Multi-Environment Setup + +```typescript +import Edgee from 'edgee'; + +const ENV = process.env.NODE_ENV || 'development'; + +let edgee: Edgee; + +if (ENV === 'production') { + edgee = new Edgee(); // Use environment variables +} else if (ENV === 'staging') { + edgee = new Edgee({ + apiKey: process.env.EDGEE_API_KEY! + }); +} else { + edgee = new Edgee({ + apiKey: 'dev-api-key', + baseUrl: 'https://eu.api.edgee.ai' + }); +} +``` + +### Example 3: Next.js Setup + +```typescript +// lib/edgee.ts +import Edgee from 'edgee'; + +export function createEdgeeClient() { + return new Edgee({ + apiKey: process.env.EDGEE_API_KEY! + }); +} +``` + +## Troubleshooting + +### "EDGEE_API_KEY is not set" Error + +**Problem**: The SDK can't find your API key. + +**Solutions**: +1. Set the environment variable: + ```bash + export EDGEE_API_KEY="your-api-key" + ``` + +2. Pass it directly: + ```typescript + const edgee = new Edgee('your-api-key'); + ``` + +3. Use configuration object: + ```typescript + const edgee = new Edgee({ apiKey: 'your-api-key' }); + ``` + +### Custom Base URL Not Working + +**Problem**: Your custom base URL isn't being used. + +**Check**: +1. Verify the base URL in your configuration +2. Check if environment variable `EDGEE_BASE_URL` is overriding it +3. Ensure you're using the correct configuration method + +```typescript +// This will use the baseUrl from config object +const edgee = new Edgee({ + apiKey: 'key', + baseUrl: 'https://custom.example.com' +}); + +// This will use EDGEE_BASE_URL env var if set, otherwise default +const edgee = new Edgee('key'); +``` + +## Related Documentation + +- [TypeScript SDK Overview](/sdk/typescript) - Complete SDK documentation +- [API Reference](/api-reference) - REST API documentation +- [Quickstart Guide](/quickstart) - Get started with Edgee diff --git a/sdk/typescript/index.mdx b/sdk/typescript/index.mdx index 54e8b2a..4cc0256 100644 --- a/sdk/typescript/index.mdx +++ b/sdk/typescript/index.mdx @@ -1,11 +1,11 @@ --- title: TypeScript SDK -sidebarTitle: Typescript +sidebarTitle: Introduction description: Integrate the TypeScript SDK in your application. -icon: "https://d3gk2c5xim1je2.cloudfront.net/devicon/typescript.svg" +icon: minus --- -The Edgee TypeScript SDK provides a lightweight, type-safe interface to interact with the Edgee AI Gateway. It supports OpenAI-compatible chat completions and function calling. +The Edgee TypeScript SDK provides a lightweight, type-safe interface to interact with the Edgee AI Gateway. It supports OpenAI-compatible chat completions, function calling, and streaming. ## Installation @@ -18,367 +18,23 @@ npm install edgee ```typescript import Edgee from 'edgee'; -const edgee = new Edgee(process.env.EDGEE_API_KEY); +// Create client +const edgee = new Edgee("your-api-key"); +// Send a simple request const response = await edgee.send({ model: 'gpt-4o', input: 'What is the capital of France?', }); -console.log(response.choices[0].message.content); +// Access the response +console.log(response.text); // "The capital of France is Paris." ``` -## Configuration - -The SDK can be configured in multiple ways: - -### Using Environment Variables - -```typescript -// Set EDGEE_API_KEY -const edgee = new Edgee(); -``` - -### Using Constructor Parameters - -```typescript -// String API key (backward compatible) -const edgee = new Edgee('your-api-key'); - -// Configuration object -const edgee = new Edgee({ - apiKey: 'your-api-key', - baseUrl: 'https://api.edgee.ai', // optional, defaults to https://api.edgee.ai -}); -``` - -## Usage Examples - -### Simple String Input - -The simplest way to send a request is with a string input: - -```typescript -const response = await edgee.send({ - model: 'gpt-4o', - input: 'Explain quantum computing in simple terms.', -}); - -console.log(response.choices[0].message.content); -``` - -### Full Message Array - -For more control, use a full message array: - -```typescript -const response = await edgee.send({ - model: 'gpt-4o', - input: { - messages: [ - { role: 'system', content: 'You are a helpful assistant.' }, - { role: 'user', content: 'Hello!' }, - ], - }, -}); - -console.log(response.choices[0].message.content); -``` - -### Function Calling (Tools) - -The SDK supports OpenAI-compatible function calling: - -```typescript -const response = await edgee.send({ - model: 'gpt-4o', - input: { - messages: [ - { role: 'user', content: 'What is the weather in Paris?' }, - ], - tools: [ - { - type: 'function', - function: { - name: 'get_weather', - description: 'Get the current weather for a location', - parameters: { - type: 'object', - properties: { - location: { - type: 'string', - description: 'City name', - }, - }, - required: ['location'], - }, - }, - }, - ], - tool_choice: 'auto', // or 'none', or { type: 'function', function: { name: 'get_weather' } } - }, -}); - -// Check if the model wants to call a function -if (response.choices[0].message.tool_calls) { - const toolCall = response.choices[0].message.tool_calls[0]; - console.log('Function:', toolCall.function.name); - console.log('Arguments:', JSON.parse(toolCall.function.arguments)); -} -``` - -### Tool Response Handling - -After receiving a tool call, you can send the function result back: - -```typescript -// First request - model requests a tool call -const response1 = await edgee.send({ - model: 'gpt-4o', - input: { - messages: [{ role: 'user', content: 'What is the weather in Paris?' }], - tools: [/* ... tool definitions ... */], - }, -}); - -// Execute the function and send the result -const toolCall = response1.choices[0].message.tool_calls[0]; -const functionResult = getWeather(JSON.parse(toolCall.function.arguments)); - -// Second request - include tool response -const response2 = await edgee.send({ - model: 'gpt-4o', - input: { - messages: [ - { role: 'user', content: 'What is the weather in Paris?' }, - response1.choices[0].message, // Include the assistant's message with tool_calls - { - role: 'tool', - tool_call_id: toolCall.id, - content: JSON.stringify(functionResult), - }, - ], - }, -}); - -console.log(response2.choices[0].message.content); -``` - -## Streaming - -The SDK supports streaming responses for real-time output. Use streaming when you want to display tokens as they're generated. - -Use `stream()` to access full chunk metadata: - -```typescript -// Stream full chunks with metadata -for await (const chunk of edgee.stream('gpt-4o', 'Explain quantum computing')) { - // First chunk contains the role - if (chunk.role) { - console.log('Role:', chunk.role); - } - - // Content chunks - if (chunk.text) { - process.stdout.write(chunk.text); - } - - // Last chunk contains finish reason - if (chunk.finishReason) { - console.log('\nFinish reason:', chunk.finishReason); - } -} -``` - -### Streaming with Messages - -Streaming works with full message arrays too: - -```typescript -for await (const chunk of edgee.stream('gpt-4o', { - messages: [ - { role: 'system', content: 'You are a helpful assistant.' }, - { role: 'user', content: 'Write a poem about coding' }, - ], -})) { - if (chunk.text) { - process.stdout.write(chunk.text); - } -} -``` - -### Streaming Response Types - -Streaming uses different response types: - -```typescript -// StreamChunk - returned by stream() -interface StreamChunk { - choices: { - index: number; - delta: { - role?: string; - content?: string; - tool_calls?: ToolCall[]; - }; - finish_reason?: string | null; - }[]; - - // Convenience properties - text: string | null; // Get content from first choice - role: string | null; // Get role from first choice - finishReason: string | null; // Get finish_reason from first choice -} -``` - -### Convenience Properties - -Both `SendResponse` and `StreamChunk` have convenience properties for easier access: - -```typescript -// Non-streaming response -const response = await edgee.send({ model: 'gpt-4o', input: 'Hello' }); -console.log(response.text); // Instead of response.choices[0].message.content -console.log(response.finishReason); // Instead of response.choices[0].finish_reason -console.log(response.toolCalls); // Instead of response.choices[0].message.tool_calls - -// Streaming response -for await (const chunk of edgee.stream('gpt-4o', 'Hello')) { - console.log(chunk.text); // Instead of chunk.choices[0]?.delta?.content - console.log(chunk.role); // Instead of chunk.choices[0]?.delta?.role - console.log(chunk.finishReason); // Instead of chunk.choices[0]?.finish_reason -} -``` - -## Response Structure - -The `send` method returns a `SendResponse` object: - -```typescript -interface SendResponse { - choices: { - index: number; - message: { - role: string; - content: string | null; - tool_calls?: ToolCall[]; - }; - finish_reason: string | null; - }[]; - usage?: { - prompt_tokens: number; - completion_tokens: number; - total_tokens: number; - }; -} -``` - -### Accessing Response Data - -```typescript -const response = await edgee.send({ - model: 'gpt-4o', - input: 'Hello!', -}); - -// Get the first choice's content -const content = response.choices[0].message.content; - -// Check finish reason -const finishReason = response.choices[0].finish_reason; // 'stop', 'length', 'tool_calls', etc. - -// Access token usage -if (response.usage) { - console.log(`Tokens used: ${response.usage.total_tokens}`); - console.log(`Prompt tokens: ${response.usage.prompt_tokens}`); - console.log(`Completion tokens: ${response.usage.completion_tokens}`); -} -``` - -## Type Definitions - -The SDK exports TypeScript types for all request and response objects: - -```typescript -import Edgee, { - type Message, - type Tool, - type ToolChoice, - type SendOptions, - type SendResponse, - type StreamChunk, - type EdgeeConfig, -} from 'edgee'; -``` - -### Message Types - -```typescript -interface Message { - role: 'system' | 'user' | 'assistant' | 'tool'; - content?: string; - name?: string; - tool_calls?: ToolCall[]; - tool_call_id?: string; -} -``` - -### Tool Types - -```typescript -interface Tool { - type: 'function'; - function: { - name: string; - description?: string; - parameters?: Record; - }; -} - -type ToolChoice = - | 'none' - | 'auto' - | { type: 'function'; function: { name: string } }; -``` - -## Error Handling - -The SDK throws errors for common issues: - -```typescript -import Edgee from 'edgee'; - -try { - const edgee = new Edgee(); // Throws if EDGEE_API_KEY is not set -} catch (error) { - console.error('Configuration error:', error.message); -} - -try { - const response = await edgee.send({ - model: 'gpt-4o', - input: 'Hello!', - }); -} catch (error) { - console.error('Request failed:', error); - // Handle API errors, network errors, etc. -} -``` - ## What's Next? - - - Explore the full REST API documentation. - - - Browse 200+ models available through Edgee. - - - Learn about intelligent routing, observability, and privacy controls. - - - Get started with Edgee in minutes. - - \ No newline at end of file +- **[Configuration](/sdk/typescript/configuration)** - Learn how to configure and instantiate the SDK +- **[Send Method](/sdk/typescript/send)** - Complete guide to the `send()` method +- **[Stream Method](/sdk/typescript/stream)** - Learn how to stream responses +- **[Tools](/sdk/typescript/tools)** - Detailed guide to function calling diff --git a/sdk/typescript/send.mdx b/sdk/typescript/send.mdx new file mode 100644 index 0000000..ff8cf61 --- /dev/null +++ b/sdk/typescript/send.mdx @@ -0,0 +1,233 @@ +--- +title: TypeScript SDK - Send Method +sidebarTitle: Send +description: Complete guide to the send() method in the TypeScript SDK. +icon: send +--- + +The `send()` method is used to make non-streaming chat completion requests to the Edgee AI Gateway. It returns a `Promise` with the model's response. + +## Arguments + +The `send()` method accepts a single `SendOptions` object with the following properties: + +| Property | Type | Description | +|----------|------|---------| +| `model` | `string` | The model identifier to use (e.g., `"openai/gpt-4o"`) | +| `input` | `string \| InputObject` | The input for the completion. Can be a simple string or a structured `InputObject` | + + +### Input Types + +#### String Input + +When `input` is a string, it's automatically converted to a user message: + + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: 'What is the capital of France?' +}); + +// Equivalent to: input: { messages: [{ role: 'user', content: 'What is the capital of France?' }] } +console.log(response.text); +// "The capital of France is Paris." +``` + +#### InputObject + +When `input` is an `InputObject`, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `messages` | `Message[]` | Array of conversation messages | +| `tools` | `Tool[]` | Array of function tools available to the model | +| `tool_choice` | `ToolChoice` | Controls which tool (if any) the model should call. See [Tools documentation](/sdk/typescript/tools) for details | + +**Example with InputObject:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [ + { role: 'user', content: 'What is 2+2?' } + ] + } +}); + +console.log(response.text); +// "2+2 equals 4." +``` + +### Message Object + +Each message in the `messages` array has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `string` | The role of the message sender: `"system"`, `"developer"`, `"user"`, `"assistant"`, or `"tool"` | +| `content` | `string` | The message content. Required for `system`, `user`, `tool` and `developer` roles. Optional for `assistant` when `tool_calls` is present | +| `name` | `string` | Optional name for the message sender | +| `tool_calls` | `ToolCall[]` | Array of tool calls made by the assistant. Only present in `assistant` messages | +| `tool_call_id` | `string` | ID of the tool call this message is responding to. Required for `tool` role messages | + +### Message Roles + +- **`system`**: System instructions that set the behavior of the assistant +- **`developer`**: Instructions provided by the application developer, prioritized ahead of user messages. +- **`user`**: Instructions provided by an end user. +- **`assistant`**: Assistant responses (can include `tool_calls`) +- **`tool`**: Results from tool/function calls (requires `tool_call_id`) + +**Example - System and User Messages:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [ + { role: 'system', content: 'You are a helpful assistant.' }, + { role: 'user', content: 'What is 2+2?' }, + { role: 'assistant', content: '2+2 equals 4.' }, + { role: 'user', content: 'What about 3+3?' } + ] + } +}); + +console.log(response.text); +// "3+3 equals 6." +``` + +For complete tool calling examples and best practices, see [Tools documentation](/sdk/typescript/tools). + +## Return Value + +The `send()` method returns a `Promise` with the following structure: + +### SendResponse Object + +| Property | Type | Description | +|----------|------|-------------| +| `choices` | `Choice[]` | Array of completion choices (typically one) | +| `usage` | `Usage \| undefined` | Token usage information (if provided by the API) | + +### Choice Object + +Each choice in the `choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `index` | `number` | The index of this choice in the array | +| `message` | `Message` | The assistant's message response | +| `finish_reason` | `string \| null` | Reason why the generation stopped. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `null` | + +**Example - Handling Multiple Choices:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: 'Give me a creative idea.' +}); + +// Process all choices +response.choices.forEach((choice, index) => { + console.log(`Choice ${index}:`, choice.message.content); + console.log(`Finish reason: ${choice.finish_reason}`); +}); +``` + +### Message Object (in Response) + +The `message` in each choice has: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `string` | The role of the message (typically `"assistant"`) | +| `content` | `string \| null` | The text content of the response. `null` when `tool_calls` is present | +| `tool_calls` | `ToolCall[] \| undefined` | Array of tool calls requested by the model (if any). See [Tools documentation](/sdk/typescript/tools) for details | + +### Usage Object + +Token usage information (when available): + +| Property | Type | Description | +|----------|------|-------------| +| `prompt_tokens` | `number` | Number of tokens in the prompt | +| `completion_tokens` | `number` | Number of tokens in the completion | +| `total_tokens` | `number` | Total tokens used (prompt + completion) | + +**Example - Accessing Token Usage:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: 'Explain quantum computing briefly.' +}); + +if (response.usage) { + console.log(`Prompt tokens: ${response.usage.prompt_tokens}`); + console.log(`Completion tokens: ${response.usage.completion_tokens}`); + console.log(`Total tokens: ${response.usage.total_tokens}`); +} +``` + +## Convenience Properties + +The `SendResponse` class provides convenience getters for easier access: + +| Property | Type | Description | +|----------|------|-------------| +| `text` | `string \| null` | Shortcut to `choices[0].message.content` | +| `message` | `Message \| null` | Shortcut to `choices[0].message` | +| `finishReason` | `string \| null` | Shortcut to `choices[0].finish_reason` | +| `toolCalls` | `ToolCall[] \| null` | Shortcut to `choices[0].message.tool_calls` | + +**Example - Using Convenience Properties:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: 'Hello!' +}); + +// Instead of: response.choices[0].message.content +console.log(response.text); + +// Instead of: response.choices[0].message +console.log(response.message); + +// Instead of: response.choices[0].finish_reason +console.log(response.finishReason); + +// Instead of: response.choices[0].message.tool_calls +if (response.toolCalls) { + console.log('Tool calls:', response.toolCalls); +} +``` + +## Error Handling + +The `send()` method can throw errors in several scenarios: + +```typescript +try { + const response = await edgee.send({ + model: 'gpt-4o', + input: 'Hello!' + }); +} catch (error) { + if (error instanceof Error) { + // API errors: "API error {status}: {message}" + // Network errors: Standard fetch errors + console.error('Request failed:', error.message); + } +} +``` + +### Common Errors + +- **API errors**: `Error: API error {status}: {message}` - The API returned an error status +- **Network errors**: Standard fetch network errors +- **Invalid input**: Errors from invalid request structure diff --git a/sdk/typescript/stream.mdx b/sdk/typescript/stream.mdx new file mode 100644 index 0000000..93a00d0 --- /dev/null +++ b/sdk/typescript/stream.mdx @@ -0,0 +1,213 @@ +--- +title: TypeScript SDK - Stream Method +sidebarTitle: Stream +description: Complete guide to the stream() method in the TypeScript SDK. +icon: square-stack +--- + +The `stream()` method is used to make streaming chat completion requests to the Edgee AI Gateway. It returns an `AsyncGenerator` that yields response chunks as they arrive from the API. + +## Arguments + +The `stream()` method accepts two arguments: + +| Parameter | Type | Description | +|-----------|------|-------------| +| `model` | `string` | The model identifier to use (e.g., `"openai/gpt-4o"`) | +| `input` | `string \| InputObject` | The input for the completion. Can be a simple string or a structured `InputObject` | + +### Input Types + +#### String Input + +When `input` is a string, it's automatically converted to a user message: + +```typescript +for await (const chunk of edgee.stream('gpt-4o', 'Tell me a story')) { + if (chunk.text) { + process.stdout.write(chunk.text); + } + + if (chunk.finishReason) { + console.log(`\nFinished: ${chunk.finishReason}`); + } +} +// Equivalent to: input: { messages: [{ role: 'user', content: 'Tell me a story' }] } +``` + +#### InputObject + +When `input` is an `InputObject`, you have full control over the conversation: + +| Property | Type | Description | +|----------|------|-------------| +| `messages` | `Message[]` | Array of conversation messages | +| `tools` | `Tool[]` | Array of function tools available to the model | +| `tool_choice` | `ToolChoice` | Controls which tool (if any) the model should call. See [Tools documentation](/sdk/typescript/tools) for details | + +For details about `Message` type, see the [Send Method documentation](/sdk/typescript/send#message-object). +For details about `Tool` and `ToolChoice` types, see the [Tools documentation](/sdk/typescript/tools). + + +**Example - Streaming with Messages:** + +```typescript +for await (const chunk of edgee.stream('gpt-4o', { + messages: [ + { role: 'system', content: 'You are a helpful assistant.' }, + { role: 'user', content: 'Write a poem about coding' } + ] +})) { + if (chunk.text) { + process.stdout.write(chunk.text); + } +} +``` + +## Return Value + +The `stream()` method returns an `AsyncGenerator`. Each chunk contains incremental updates to the response. + +### StreamChunk Object + +Each chunk yielded by the generator has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `choices` | `StreamChoice[]` | Array of streaming choices (typically one) | + +### StreamChoice Object + +Each choice in the `choices` array contains: + +| Property | Type | Description | +|----------|------|-------------| +| `index` | `number` | The index of this choice in the array | +| `delta` | `StreamDelta` | The incremental update to the message | +| `finish_reason` | `string \| null \| undefined` | Reason why the generation stopped. Only present in the final chunk. Possible values: `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"`, or `null` | + +**Example - Handling Multiple Choices:** + +```typescript +for await (const chunk of edgee.stream('gpt-4o', 'Give me creative ideas')) { + chunk.choices.forEach((choice, index) => { + if (choice.delta.content) { + console.log(`Choice ${index}: ${choice.delta.content}`); + } + }); +} +``` + +### StreamDelta Object + +The `delta` object contains incremental updates: + +| Property | Type | Description | +|----------|------|-------------| +| `role` | `string \| undefined` | The role of the message (typically `"assistant"`). Only present in the **first chunk** | +| `content` | `string \| undefined` | Incremental text content. Each chunk contains a portion of the full response | +| `tool_calls` | `ToolCall[] \| undefined` | Array of tool calls (if any). See [Tools documentation](/sdk/typescript/tools) for details | + +## Convenience Properties + +The `StreamChunk` class provides convenience getters for easier access: + +| Property | Type | Description | +|----------|------|-------------| +| `text` | `string \| null` | Shortcut to `choices[0].delta.content` - the incremental text content | +| `role` | `string \| null` | Shortcut to `choices[0].delta.role` - the message role (first chunk only) | +| `finishReason` | `string \| null` | Shortcut to `choices[0].finish_reason` - the finish reason (final chunk only) | + +**Example - Using Convenience Properties:** + +```typescript +for await (const chunk of edgee.stream('gpt-4o', 'Explain quantum computing')) { + // Content chunks + if (chunk.text) { + process.stdout.write(chunk.text); + } + + // First chunk contains the role + if (chunk.role) { + console.log(`Role: ${chunk.role}`); + } + + // Last chunk contains finish reason + if (chunk.finishReason) { + console.log(`\nFinish reason: ${chunk.finishReason}`); + } +} +``` + +## Understanding Streaming Behavior + +### Chunk Structure + +1. **First chunk**: Contains `role` (typically `"assistant"`) and may contain initial `content` +2. **Content chunks**: Contain incremental `content` updates +3. **Final chunk**: Contains `finish_reason` indicating why generation stopped + +**Example - Collecting Full Response:** + +```typescript +let fullText = ''; + +for await (const chunk of edgee.stream('gpt-4o', 'Tell me a story')) { + if (chunk.text) { + fullText += chunk.text; + process.stdout.write(chunk.text); // Also display as it streams + } +} + +console.log(`\n\nFull response (${fullText.length} characters):`); +console.log(fullText); +``` + + +### Finish Reasons + +| Value | Description | +|-------|-------------| +| `"stop"` | Model generated a complete response and stopped naturally | +| `"length"` | Response was cut off due to token limit | +| `"tool_calls"` | Model requested tool/function calls | +| `"content_filter"` | Content was filtered by safety systems | +| `null` | Generation is still in progress (not the final chunk) | + +### Empty Chunks + +Some chunks may not contain `content`. This is normal and can happen when: +- The chunk only contains metadata (role, finish_reason) +- The chunk is part of tool call processing +- Network buffering creates empty chunks + +Always check for `chunk.text` before using it: + +```typescript +for await (const chunk of edgee.stream('gpt-4o', 'Hello')) { + if (chunk.text) { // ✅ Good: Check before using + console.log(chunk.text); + } + // ❌ Bad: console.log(chunk.text) - may log null +} +``` + +## Error Handling + +The `stream()` method can throw errors: + +```typescript +try { + for await (const chunk of edgee.stream('gpt-4o', 'Hello!')) { + if (chunk.text) { + process.stdout.write(chunk.text); + } + } +} catch (error) { + if (error instanceof Error) { + // API errors: "API error {status}: {message}" + // Network errors: Standard fetch errors + console.error('Stream failed:', error.message); + } +} +``` diff --git a/sdk/typescript/tools.mdx b/sdk/typescript/tools.mdx new file mode 100644 index 0000000..773c2a4 --- /dev/null +++ b/sdk/typescript/tools.mdx @@ -0,0 +1,499 @@ +--- +title: TypeScript SDK - Tools (Function Calling) +sidebarTitle: Tools +description: Complete guide to function calling with the TypeScript SDK. +icon: square-function +--- + +The Edgee TypeScript SDK supports OpenAI-compatible function calling (tools), allowing models to request execution of functions you define. This enables models to interact with external APIs, databases, and your application logic. + +## Overview + +Function calling works in two steps: + +1. **Request**: Send a request with tool definitions. The model may request to call one or more tools. +2. **Execute & Respond**: Execute the requested functions and send the results back to the model. + +## Tool Definition + +A tool is defined using the `Tool` interface: + +```typescript +interface Tool { + type: "function"; + function: FunctionDefinition; +} +``` + +### FunctionDefinition + +| Property | Type | Description | +|----------|------|-------------| +| `name` | `string` | The name of the function (must be unique, a-z, A-Z, 0-9, _, -) | +| `description` | `string` | Description of what the function does. **Highly recommended** - helps the model understand when to use it | +| `parameters` | `Record` | JSON Schema object describing the function parameters | + +### Parameters Schema + +The `parameters` field uses JSON Schema format: + +```typescript +{ + type: "object", + properties: { + paramName: { + type: "string" | "number" | "boolean" | "object" | "array", + description: "Parameter description" + } + }, + required: ["paramName"] // Array of required parameter names +} +``` + +**Example - Defining a Tool:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [ + { role: 'user', content: 'What is the weather in Paris?' } + ], + tools: [ + { + type: 'function', + function: { + name: 'get_weather', + description: 'Get the current weather for a location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA' + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + description: 'Temperature unit' + } + }, + required: ['location'] + } + } + } + ], + tool_choice: 'auto' + } +}); +``` + +## Tool Choice + +The `tool_choice` parameter controls when and which tools the model should call: + +| Value | Type | Description | +|-------|------|-------------| +| `"auto"` | `string` | Let the model decide whether to call tools (default) | +| `"none"` | `string` | Don't call any tools, even if provided | +| `{ type: "function", function: { name: "function_name" } }` | `object` | Force the model to call a specific function | + +### ToolChoice Type + +```typescript +type ToolChoice = + | "none" + | "auto" + | { type: "function"; function: { name: string } }; +``` + +**Example - Force a Specific Tool:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [ + { role: 'user', content: 'What is the weather?' } + ], + tools: [ + { + type: 'function', + function: { + name: 'get_weather', + description: 'Get the current weather', + parameters: { /* ... */ } + } + } + ], + tool_choice: { + type: 'function', + function: { name: 'get_weather' } + } + } +}); +// Model will always call get_weather +``` + +**Example - Disable Tool Calls:** + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [ + { role: 'user', content: 'What is the weather?' } + ], + tools: [ + { + type: 'function', + function: { + name: 'get_weather', + description: 'Get the current weather', + parameters: { /* ... */ } + } + } + ], + tool_choice: 'none' + } +}); +// Model will not call tools, even though they're available +``` + +## Tool Call Object Structure + +When the model requests a tool call, you receive a `ToolCall` object: + +| Property | Type | Description | +|----------|------|-------------| +| `id` | `string` | Unique identifier for this tool call | +| `type` | `string` | Type of tool call (typically `"function"`) | +| `function` | `object` | Function call details | +| `function.name` | `string` | Name of the function to call | +| `function.arguments` | `string` | JSON string containing the function arguments | + +### Parsing Arguments + +```typescript +const toolCall = response.toolCalls[0]; +const args = JSON.parse(toolCall.function.arguments); +// args is now a JavaScript object +console.log(args.location); // e.g., "Paris" +``` + +## Complete Example + +Here's a complete end-to-end example with error handling: + +```typescript +import Edgee from 'edgee'; + +const edgee = new Edgee('your-api-key'); + +// Define the weather function +async function getWeather(location: string, unit: string = 'celsius') { + // Simulate API call + return { + location, + temperature: 15, + unit, + condition: 'sunny' + }; +} + +// Step 1: Initial request with tools +const response1 = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [ + { role: 'user', content: 'What is the weather in Paris and Tokyo?' } + ], + tools: [ + { + type: 'function', + function: { + name: 'get_weather', + description: 'Get the current weather for a location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city name' + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + description: 'Temperature unit' + } + }, + required: ['location'] + } + } + } + ], + tool_choice: 'auto' + } +}); + +// Step 2: Execute all tool calls +const messages = [ + { role: 'user', content: 'What is the weather in Paris and Tokyo?' }, + response1.message! // Include assistant's message +]; + +if (response1.toolCalls) { + for (const toolCall of response1.toolCalls) { + const args = JSON.parse(toolCall.function.arguments); + const result = await getWeather(args.location, args.unit); + + messages.push({ + role: 'tool', + tool_call_id: toolCall.id, + content: JSON.stringify(result) + }); + } +} + +// Step 3: Send results back +const response2 = await edgee.send({ + model: 'gpt-4o', + input: { + messages, + tools: [ + // Keep tools available for follow-up + { + type: 'function', + function: { + name: 'get_weather', + description: 'Get the current weather for a location', + parameters: { + type: 'object', + properties: { + location: { type: 'string', description: 'The city name' }, + unit: { type: 'string', enum: ['celsius', 'fahrenheit'] } + }, + required: ['location'] + } + } + } + ] + } +}); + +console.log(response2.text); +``` + +**Example - Multiple Tools:** + +You can provide multiple tools and let the model choose which ones to call: + +You can provide multiple tools and let the model choose: + +```typescript +const response = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [ + { role: 'user', content: 'Get the weather in Paris and send an email about it' } + ], + tools: [ + { + type: 'function', + function: { + name: 'get_weather', + description: 'Get the current weather for a location', + parameters: { + type: 'object', + properties: { + location: { type: 'string', description: 'City name' } + }, + required: ['location'] + } + } + }, + { + type: 'function', + function: { + name: 'send_email', + description: 'Send an email to a recipient', + parameters: { + type: 'object', + properties: { + to: { type: 'string', description: 'Recipient email address' }, + subject: { type: 'string', description: 'Email subject' }, + body: { type: 'string', description: 'Email body' } + }, + required: ['to', 'subject', 'body'] + } + } + } + ], + tool_choice: 'auto' + } +}); +``` + +## Streaming with Tools + +The `stream()` method also supports tools. For details about streaming, see the [Stream Method documentation](/sdk/typescript/stream). + +```typescript +for await (const chunk of edgee.stream('gpt-4o', { + messages: [ + { role: 'user', content: 'What is the weather in Paris?' } + ], + tools: [ + { + type: 'function', + function: { + name: 'get_weather', + description: 'Get the current weather for a location', + parameters: { + type: 'object', + properties: { + location: { type: 'string', description: 'City name' } + }, + required: ['location'] + } + } + } + ], + tool_choice: 'auto' +})) { + if (chunk.text) { + process.stdout.write(chunk.text); + } + + // Check for tool calls in the delta + const toolCalls = chunk.choices[0]?.delta?.tool_calls; + if (toolCalls) { + console.log('\nTool calls detected:', toolCalls); + } + + if (chunk.finishReason === 'tool_calls') { + console.log('\nModel requested tool calls'); + } +} +``` + +## Best Practices + +### 1. Always Provide Descriptions + +Descriptions help the model understand when to use each function: + +```typescript +// ✅ Good +{ + name: 'get_weather', + description: 'Get the current weather conditions for a specific location', + parameters: { /* ... */ } +} + +// ❌ Bad +{ + name: 'get_weather', + // Missing description + parameters: { /* ... */ } +} +``` + +### 2. Use Clear Parameter Names + +```typescript +// ✅ Good +properties: { + location: { type: 'string', description: 'The city name' } +} + +// ❌ Bad +properties: { + loc: { type: 'string' } // Unclear name, no description +} +``` + +### 3. Mark Required Parameters + +```typescript +parameters: { + type: 'object', + properties: { + location: { type: 'string', description: 'City name' }, + unit: { type: 'string', description: 'Temperature unit' } + }, + required: ['location'] // location is required, unit is optional +} +``` + +### 4. Handle Multiple Tool Calls + +Models can request multiple tool calls in a single response. Use `Promise.all()` to execute them in parallel: + +```typescript +if (response.toolCalls && response.toolCalls.length > 0) { + const results = await Promise.all( + response.toolCalls.map(async (toolCall) => { + const args = JSON.parse(toolCall.function.arguments); + const result = await executeFunction(toolCall.function.name, args); + return { + tool_call_id: toolCall.id, + result + }; + }) + ); + + // Add all tool results to messages + const toolMessages = results.map(({ tool_call_id, result }) => ({ + role: 'tool' as const, + tool_call_id, + content: JSON.stringify(result) + })); + + messages.push(...toolMessages); +} +``` + +### 5. Error Handling in Tool Execution + +```typescript +if (response.toolCalls) { + for (const toolCall of response.toolCalls) { + try { + const args = JSON.parse(toolCall.function.arguments); + const result = await executeFunction(toolCall.function.name, args); + + messages.push({ + role: 'tool', + tool_call_id: toolCall.id, + content: JSON.stringify(result) + }); + } catch (error) { + // Send error back to model + messages.push({ + role: 'tool', + tool_call_id: toolCall.id, + content: JSON.stringify({ error: error.message }) + }); + } + } +} +``` + +### 6. Keep Tools Available + +Include tools in follow-up requests so the model can call them again if needed: + +```typescript +const response2 = await edgee.send({ + model: 'gpt-4o', + input: { + messages: [...messagesWithToolResults], + tools: [ + // Keep the same tools available + { type: 'function', function: { /* ... */ } } + ] + } +}); +``` +